diff --git a/.jshintrc b/.jshintrc index 56f69af..993c9f8 100644 --- a/.jshintrc +++ b/.jshintrc @@ -1,6 +1,7 @@ { "globals": { - "crypto": true + "crypto": true, + "EventSource": true }, "module": true, "browser": true, diff --git a/bin/jswt-init.js b/bin/jswt-init.js index 1b33674..650a324 100755 --- a/bin/jswt-init.js +++ b/bin/jswt-init.js @@ -27,12 +27,13 @@ async function main() { process.argv.includes("-g") || process.argv.includes("--global"); let pkg = await readPackageJson(); - let pkgName = pkg.name; - if (pkgName.includes("/")) { + let mainBasename = pkg.name; + if (mainBasename.includes("/")) { let index = 1; - index += pkgName.lastIndexOf("/"); - pkgName = pkgName.slice(index); + index += mainBasename.lastIndexOf("/"); + mainBasename = mainBasename.slice(index); } + let moduleName = toTitleCase(mainBasename); // await Fs.mkdir("./docs", { recursive: true }); // let fh = await Fs.open("./docs/.gitkeep", "a"); @@ -81,9 +82,9 @@ async function main() { "// auto-generated by `jswt reexport`", "// DO NOT EDIT", "", - `import ${pkgName} from "${prefix}/${pkgName}.js";`, + `import ${moduleName} from "${prefix}/${mainBasename}.js";`, "", - `export default ${pkgName};`, + `export default ${moduleName};`, "", ].join("\n"), ); @@ -95,7 +96,8 @@ async function main() { jsconfig = await createJsConfig( pkg, tsconfigTxt, - `${prefix}/${pkgName}.js`, + prefix, + `${prefix}/${mainBasename}.js`, ); } @@ -107,7 +109,8 @@ async function main() { [ `{`, ` "globals": {`, - ` "crypto": true`, + ` "crypto": true,`, + ` "EventSource": true`, ` },`, ` "module": true,`, ` "browser": true,`, @@ -215,21 +218,22 @@ async function main() { let indexNames = ["index.js", "./index.js"]; let mainIsIndex = indexNames.includes(pkg.main); - let mainPath = `${prefix}/${pkgName}.js`; + let mainFilePath = `${prefix}/${mainBasename}.js`; if (!mainIsIndex) { - mainPath = pkg.main; + // ensures that filepath has leading './' + mainFilePath = Path.relative(".", pkg.main); + mainFilePath = `./${mainFilePath}`; } { - let mainName = toTitleCase(pkgName); await initFile( - mainPath, + mainFilePath, [ - `let ${mainName} = {};`, + `let ${moduleName} = {};`, "", - `${mainName}.answer = 42;`, + `${moduleName}.answer = 42;`, "", - `export default ${mainName};`, + `export default ${moduleName};`, "", ].join("\n"), ); @@ -238,7 +242,7 @@ async function main() { let hasIndex = await fileExists("./index.js"); if (!hasIndex) { if (mainIsIndex) { - let allArgs = ["pkg", "set", `main=${mainPath}`]; + let allArgs = ["pkg", "set", `main=${mainFilePath}`]; await exec("npm", allArgs); await sortAndWritePackageJson(); } @@ -284,10 +288,9 @@ async function main() { let allArgs = [ "pkg", "set", - `files[]=${mainPath}`, + `files[]=${mainFilePath}`, `files[]=./bin/*.js`, `files[]=./lib/*.js`, - `files[]=./tests/*.js`, ]; await exec("npm", allArgs); await sortAndWritePackageJson(); @@ -315,8 +318,8 @@ async function main() { "pkg", "set", "type=module", - `exports[.]=${mainPath}`, - `exports[./*]=./*`, + `exports[.]=${mainFilePath}`, + `exports[./*]=${prefix}/*`, ]; await exec("npm", allArgs); await sortAndWritePackageJson(); @@ -331,7 +334,8 @@ async function main() { "pkg", "set", "type=module", - `imports[${pkg.name}]=${mainPath}`, + `imports[${pkg.name}]=${mainFilePath}`, + `imports[${pkg.name}/]=${prefix}/`, ]; await exec("npm", allArgs); await sortAndWritePackageJson(); @@ -342,9 +346,8 @@ async function main() { ``, @@ -627,10 +630,11 @@ async function getLatest20xx() { * @param {Object} pkg * @param {String} pkg.name * @param {String} tsconfigTxt - * @param {String} mainPath + * @param {String} prefix + * @param {String} mainFilePath * @returns */ -async function createJsConfig(pkg, tsconfigTxt, mainPath) { +async function createJsConfig(pkg, tsconfigTxt, prefix, mainFilePath) { if (!tsconfigTxt.includes(`"include":`)) { let includables = [ "*.js", @@ -649,8 +653,8 @@ async function createJsConfig(pkg, tsconfigTxt, mainPath) { { let lines = [ - ` "${pkg.name}": ["${mainPath}"]`, - ` "${pkg.name}/*": ["./*"]`, + ` "${pkg.name}": ["${mainFilePath}"]`, + ` "${pkg.name}/*": ["${prefix}/*"]`, ]; let str = lines.join(`,\n`); tsconfigTxt = tsconfigTxt.replace( diff --git a/package-lock.json b/package-lock.json index 8d6f415..4b5f2d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "jswt", - "version": "2.0.2", + "version": "2.0.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "jswt", - "version": "2.0.2", + "version": "2.0.3", "license": "SEE LICENSE IN LICENSE", "bin": { "init": "bin/jswt-init.js", diff --git a/package.json b/package.json index 9524fc2..0460e52 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jswt", - "version": "2.0.2", + "version": "2.0.3", "description": "Turn on transpile-free type hinting for your vanilla JS projects #JSWithTypes", "main": "./jswt.js", "files": [