{"_id":"@amerilux/create-netsuite-project","_rev":"7-355061239c97634e21b74b51465c2abb","name":"@amerilux/create-netsuite-project","dist-tags":{"latest":"0.5.1"},"versions":{"0.1.0":{"name":"@amerilux/create-netsuite-project","version":"0.1.0","keywords":["netsuite","suitescript","suitelet","restlet","react","scaffold","create"],"license":"MIT","_id":"@amerilux/create-netsuite-project@0.1.0","maintainers":[{"name":"michael-young-amerilux","email":"Michael.ThomasYoung@amerilux.com"}],"homepage":"https://github.com/AmeriLux-Dev/create-netsuite-project#readme","bugs":{"url":"https://github.com/AmeriLux-Dev/create-netsuite-project/issues"},"bin":{"create-netsuite-project":"dist/index.js"},"dist":{"shasum":"ec21f20705ec3689e94bb9d31e47f341db3a48ad","tarball":"https://registry.npmjs.org/@amerilux/create-netsuite-project/-/create-netsuite-project-0.1.0.tgz","fileCount":4,"integrity":"sha512-ha7vgV6BaqH27dsQ8WfDKstmBJ4agJ/Jj4qnUi1TPSJDneeyXB+N2wYM35qPZP78f3z5hnPiAP0GhIdXj9lk8A==","signatures":[{"sig":"MEQCIEQ1tfVZsAmQ/2+84HEmFfVOZ8+vXXIvp5+1BOUBrZTkAiBWV2VMQ1R7FFhWbC2Inr/gABrz579Lha9uIIUsdQa9HA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57507},"type":"module","engines":{"node":">=22"},"gitHead":"836a97b63522b9148fb207a65007936dd8bf2a84","scripts":{"dev":"tsup --watch","e2e":"node scripts/e2e.mjs","lint":"eslint .","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit -p tsconfig.json","prepublishOnly":"npm run typecheck && npm test && npm run build","check:private-refs":"node scripts/check-no-private-refs.mjs"},"_npmUser":{"name":"michael-young-amerilux","email":"Michael.ThomasYoung@amerilux.com"},"repository":{"url":"git+https://github.com/AmeriLux-Dev/create-netsuite-project.git","type":"git"},"_npmVersion":"10.9.7","description":"Scaffold a Suitelet-hosted React application for NetSuite: Vite client, webpack AMD API, one script per controller.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"tar":"^7.5.22","commander":"^15.0.0","@clack/prompts":"^1.8.0"},"_hasShrinkwrap":false,"templateSource":{"ref":"v0.1.0","repository":"AmeriLux-Dev/netsuite-project-templates"},"devDependencies":{"tsup":"^8.5.1","eslint":"^10.10.0","vitest":"^5.0.0","globals":"^17.12.0","@eslint/js":"^10.0.1","typescript":"~5.9.3","@types/node":"^22.20.2","typescript-eslint":"^8.70.0"},"_npmOperationalInternal":{"tmp":"tmp/create-netsuite-project_0.1.0_1789097748674_0.8537920195866959","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@amerilux/create-netsuite-project","version":"0.2.0","keywords":["netsuite","suitescript","suitelet","restlet","react","scaffold","create"],"license":"MIT","_id":"@amerilux/create-netsuite-project@0.2.0","maintainers":[{"name":"michael-young-amerilux","email":"Michael.ThomasYoung@amerilux.com"}],"homepage":"https://github.com/AmeriLux-Dev/create-netsuite-project#readme","bugs":{"url":"https://github.com/AmeriLux-Dev/create-netsuite-project/issues"},"bin":{"create-netsuite-project":"dist/index.js"},"dist":{"shasum":"d61ac989c5b967a4ef6cafb2397ce788dbc96623","tarball":"https://registry.npmjs.org/@amerilux/create-netsuite-project/-/create-netsuite-project-0.2.0.tgz","fileCount":4,"integrity":"sha512-stPsGLZHKOgcBMCF0KG62CY8Cmd+15AXs6on3XKB2ZlQpwggUfeRIQWaZ8K0VFiDliF302thI2T3QxqJnnnZvg==","signatures":[{"sig":"MEQCIA8+1jjYoP92zOHoYCf29kcmxRCgtfIwFQOzSel4dS26AiBvkfBto1VR1VHOGHJMx+3w6PArekUO7Jrdp+dUBUZjPA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amerilux%2fcreate-netsuite-project@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":39048},"type":"module","engines":{"node":">=22"},"gitHead":"99a567107a7258fef65ac8c406cfb03e2468d8c3","scripts":{"dev":"tsup --watch","e2e":"node scripts/e2e.mjs","lint":"eslint .","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit -p tsconfig.json","prepublishOnly":"npm run typecheck && npm test && npm run build","check:private-refs":"node scripts/check-no-private-refs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63ffb7c5-709c-447b-8f56-249b81e1ea81"}},"repository":{"url":"git+https://github.com/AmeriLux-Dev/create-netsuite-project.git","type":"git"},"_npmVersion":"12.0.2","description":"Scaffold a Suitelet-hosted React application for NetSuite: Vite client, webpack AMD API, one script per controller.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"tar":"^7.5.22","commander":"^15.0.0","@clack/prompts":"^1.8.0"},"_hasShrinkwrap":false,"templateSource":{"ref":"v0.2.0","repository":"AmeriLux-Dev/netsuite-project-templates"},"devDependencies":{"tsup":"^8.5.1","eslint":"^10.10.0","vitest":"^5.0.0","globals":"^17.12.0","@eslint/js":"^10.0.1","typescript":"~5.9.3","@types/node":"^22.20.2","typescript-eslint":"^8.70.0"},"_npmOperationalInternal":{"tmp":"tmp/create-netsuite-project_0.2.0_1789149395270_0.10424124063218487","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@amerilux/create-netsuite-project","version":"0.3.0","keywords":["netsuite","suitescript","suitelet","restlet","react","scaffold","create"],"license":"MIT","_id":"@amerilux/create-netsuite-project@0.3.0","maintainers":[{"name":"michael-young-amerilux","email":"Michael.ThomasYoung@amerilux.com"}],"homepage":"https://github.com/AmeriLux-Dev/create-netsuite-project#readme","bugs":{"url":"https://github.com/AmeriLux-Dev/create-netsuite-project/issues"},"bin":{"create-netsuite-project":"dist/index.js"},"dist":{"shasum":"63d849b9c969d1531c87d6962faecccb535749dd","tarball":"https://registry.npmjs.org/@amerilux/create-netsuite-project/-/create-netsuite-project-0.3.0.tgz","fileCount":4,"integrity":"sha512-Lzl1VZCFHHbefn5+WjgOm6JDFWinwmTbreqtUkz/ePtyUy2kAHfZ4I5hzM13g9SgS2LNBq0a+OQdi9RG1BKLLQ==","signatures":[{"sig":"MEUCIQDX1zUJtHWY9cOuKJ19aPCblCnrDshkEk7QuFR5+L6dwQIgZqSRi+cBY7sR8YV6KImOkyb0zmbtAGwiX0wxhQ7XclY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amerilux%2fcreate-netsuite-project@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":39548},"type":"module","engines":{"node":">=22"},"gitHead":"04fe441dad00803c0ba1266a889308f2aeef6066","scripts":{"dev":"tsup --watch","e2e":"node scripts/e2e.mjs","lint":"eslint .","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit -p tsconfig.json","prepublishOnly":"npm run typecheck && npm test && npm run build","check:private-refs":"node scripts/check-no-private-refs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63ffb7c5-709c-447b-8f56-249b81e1ea81"}},"repository":{"url":"git+https://github.com/AmeriLux-Dev/create-netsuite-project.git","type":"git"},"_npmVersion":"12.0.2","description":"Scaffold a Suitelet-hosted React application for NetSuite: Vite client, webpack AMD API, one script per controller.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"tar":"^7.5.22","commander":"^15.0.0","@clack/prompts":"^1.8.0"},"_hasShrinkwrap":false,"templateSource":{"ref":"v0.2.0","repository":"AmeriLux-Dev/netsuite-project-templates"},"devDependencies":{"tsup":"^8.5.1","eslint":"^10.10.0","vitest":"^5.0.0","globals":"^17.12.0","@eslint/js":"^10.0.1","typescript":"~5.9.3","@types/node":"^22.20.2","typescript-eslint":"^8.70.0"},"_npmOperationalInternal":{"tmp":"tmp/create-netsuite-project_0.3.0_1789164094532_0.7022195354518479","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@amerilux/create-netsuite-project","version":"0.3.1","keywords":["netsuite","suitescript","suitelet","restlet","react","scaffold","create"],"license":"MIT","_id":"@amerilux/create-netsuite-project@0.3.1","maintainers":[{"name":"michael-young-amerilux","email":"Michael.ThomasYoung@amerilux.com"}],"homepage":"https://github.com/AmeriLux-Dev/create-netsuite-project#readme","bugs":{"url":"https://github.com/AmeriLux-Dev/create-netsuite-project/issues"},"bin":{"create-netsuite-project":"dist/index.js"},"dist":{"shasum":"43f6e15c13c1e3534226617ee79c91fa30e3988b","tarball":"https://registry.npmjs.org/@amerilux/create-netsuite-project/-/create-netsuite-project-0.3.1.tgz","fileCount":4,"integrity":"sha512-2tvmPGwm+duBsdGt8CERx/VLSJsYlsrctr90J3mrOu5CtSXe96iZBBwpcnTaqyiAF1rJehBUaKCsJOXbnwTewg==","signatures":[{"sig":"MEUCICCMcO0KeWMsy0ZcJy7QoOXU+d0ch2EYJVRXDMZQkcD3AiEA+AG0zNaR0o51XWWBM2T1mo2kEk0hu6ASxIg+3e1gzog=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amerilux%2fcreate-netsuite-project@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":39769},"type":"module","engines":{"node":">=22"},"gitHead":"1774bf7bb852a7a6a6935ff4eb112d251b0b8c3f","scripts":{"dev":"tsup --watch","e2e":"node scripts/e2e.mjs","lint":"eslint .","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit -p tsconfig.json","prepublishOnly":"npm run typecheck && npm test && npm run build","check:private-refs":"node scripts/check-no-private-refs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63ffb7c5-709c-447b-8f56-249b81e1ea81"}},"repository":{"url":"git+https://github.com/AmeriLux-Dev/create-netsuite-project.git","type":"git"},"_npmVersion":"12.0.2","description":"Scaffold a Suitelet-hosted React application for NetSuite: Vite client, webpack AMD API, one script per controller.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"tar":"^7.5.22","commander":"^15.0.0","@clack/prompts":"^1.8.0"},"_hasShrinkwrap":false,"templateSource":{"ref":"main","repository":"AmeriLux-Dev/netsuite-project-templates"},"devDependencies":{"tsup":"^8.5.1","eslint":"^10.10.0","vitest":"^5.0.0","globals":"^17.12.0","@eslint/js":"^10.0.1","typescript":"~5.9.3","@types/node":"^22.20.2","typescript-eslint":"^8.70.0"},"_npmOperationalInternal":{"tmp":"tmp/create-netsuite-project_0.3.1_1789405187783_0.7416267509184373","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@amerilux/create-netsuite-project","version":"0.4.0","keywords":["netsuite","suitescript","suitelet","restlet","react","scaffold","create"],"license":"MIT","_id":"@amerilux/create-netsuite-project@0.4.0","maintainers":[{"name":"michael-young-amerilux","email":"Michael.ThomasYoung@amerilux.com"}],"homepage":"https://github.com/AmeriLux-Dev/create-netsuite-project#readme","bugs":{"url":"https://github.com/AmeriLux-Dev/create-netsuite-project/issues"},"bin":{"create-netsuite-project":"dist/index.js"},"dist":{"shasum":"0b2423543face0d88c318370fd3a27f3ac8c5540","tarball":"https://registry.npmjs.org/@amerilux/create-netsuite-project/-/create-netsuite-project-0.4.0.tgz","fileCount":4,"integrity":"sha512-rBvqm4ekDmiU5vC/ZIlQ1g6QXA0YRWH3Yh/yKGdRCjXmoaaHD94fNNKY9CMEz8UABvB285rzzIrMLYb9l5itWA==","signatures":[{"sig":"MEUCIDGfBofAr/6h3514UCwisNlXAIETnUuK5SFTyG2AhDLBAiEA6fT2JZRy0qA6R5piZjG7tY7XqANU5dD8t4T1/i5FPcw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAkmk4Am/a95iSduALvy+BxzehnP0KRHernBaBd7EmFuAiB+R4l1OUq6m1+D7B6qnNLrsBYo3L3O8wpzi9XbWAQkHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amerilux%2fcreate-netsuite-project@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":40432},"type":"module","engines":{"node":">=22"},"gitHead":"8c2ab8e89f4203d78d3a1d30567f43061fb7c10a","scripts":{"dev":"tsup --watch","e2e":"node scripts/e2e.mjs","lint":"eslint .","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit -p tsconfig.json","prepublishOnly":"npm run typecheck && npm test && npm run build","check:private-refs":"node scripts/check-no-private-refs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63ffb7c5-709c-447b-8f56-249b81e1ea81"}},"repository":{"url":"git+https://github.com/AmeriLux-Dev/create-netsuite-project.git","type":"git"},"_npmVersion":"12.0.2","description":"Scaffold a Suitelet-hosted React application for NetSuite: Vite client, webpack AMD API, one script per controller.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"tar":"^7.5.22","commander":"^15.0.0","@clack/prompts":"^1.8.0"},"_hasShrinkwrap":false,"templateSource":{"ref":"main","repository":"AmeriLux-Dev/netsuite-project-templates"},"devDependencies":{"tsup":"^8.5.1","eslint":"^10.10.0","vitest":"^5.0.0","globals":"^17.12.0","@eslint/js":"^10.0.1","typescript":"~5.9.3","@types/node":"^22.20.2","typescript-eslint":"^8.70.0"},"_npmOperationalInternal":{"tmp":"tmp/create-netsuite-project_0.4.0_1789418819678_0.5543575329684975","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@amerilux/create-netsuite-project","version":"0.5.0","keywords":["netsuite","suitescript","suitelet","restlet","react","scaffold","create"],"license":"MIT","_id":"@amerilux/create-netsuite-project@0.5.0","maintainers":[{"name":"michael-young-amerilux","email":"Michael.ThomasYoung@amerilux.com"}],"homepage":"https://github.com/AmeriLux-Dev/create-netsuite-project#readme","bugs":{"url":"https://github.com/AmeriLux-Dev/create-netsuite-project/issues"},"bin":{"create-netsuite-project":"dist/index.js"},"dist":{"shasum":"0f3dcc899958194ee41c4bb585dde0e39c407c80","tarball":"https://registry.npmjs.org/@amerilux/create-netsuite-project/-/create-netsuite-project-0.5.0.tgz","fileCount":4,"integrity":"sha512-7ERXPenAe3KpEtBuaUjGUkpa2GnTHqFUD84YjFeeGUNEi7z/r3KxcvO4eVurJqtFb0Aa8dcg+Ll1q6GCgBZLZg==","signatures":[{"sig":"MEUCIFU2xl/P28VdDpgZqSPS1PSts/4hF/8YxlTno23qJ5qCAiEA6qV2no2TQjtZXUhkAIu6VtxyPCYNKVLn+W7oSBNJE6s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDapxLJbN7Ih7wYwK+yxhdwUjiD5sQFXyn6va4D8ggb+gIgAutBAwq+uAzLt3r2ASSDBJcN+FTy2UYzp8t3Fi1H62Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amerilux%2fcreate-netsuite-project@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":40510},"type":"module","engines":{"node":">=22"},"gitHead":"993cc5662ef2c2d7fd16514ea8d360bd37f998b3","scripts":{"dev":"tsup --watch","e2e":"node scripts/e2e.mjs","lint":"eslint .","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit -p tsconfig.json","prepublishOnly":"npm run typecheck && npm test && npm run build","check:private-refs":"node scripts/check-no-private-refs.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63ffb7c5-709c-447b-8f56-249b81e1ea81"}},"repository":{"url":"git+https://github.com/AmeriLux-Dev/create-netsuite-project.git","type":"git"},"_npmVersion":"12.0.2","description":"Scaffold a Suitelet-hosted React application for NetSuite: Vite client, webpack AMD API, one script per controller.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"tar":"^7.5.22","commander":"^15.0.0","@clack/prompts":"^1.8.0"},"_hasShrinkwrap":false,"templateSource":{"ref":"main","repository":"AmeriLux-Dev/netsuite-project-templates"},"devDependencies":{"tsup":"^8.5.1","eslint":"^10.10.0","vitest":"^5.0.0","globals":"^17.12.0","@eslint/js":"^10.0.1","typescript":"~5.9.3","@types/node":"^22.20.2","typescript-eslint":"^8.70.0"},"_npmOperationalInternal":{"tmp":"tmp/create-netsuite-project_0.5.0_1789422175270_0.3793017920741206","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"_id":"@amerilux/create-netsuite-project@0.5.1","bin":{"create-netsuite-project":"dist/index.js"},"bugs":{"url":"https://github.com/AmeriLux-Dev/create-netsuite-project/issues"},"dist":{"shasum":"ce16843c4b51a37977a3b06ffefd1fac46e4347e","tarball":"https://registry.npmjs.org/@amerilux/create-netsuite-project/-/create-netsuite-project-0.5.1.tgz","fileCount":4,"integrity":"sha512-RW5vK+njm+peGn9yDAn41rDAC+2WPpW4lSv8KQNe5eJ01N/Uo8MoSYkKes9reH18bmDbsb2kFYBSQUYMsuAkTw==","signatures":[{"sig":"MEUCIA5zdzv10xXFpm/a3R4JizOtdrYVOxzFuIvC8pFx9iTvAiEAv8vvORBn4tF7JF//fg8KGzRq37ii5XCU5QUDGCptBpw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC2hw/M4nbApzCi5/3xtACSQ4lbmfpe5lHitJ+0dZaNmAIgNe3O7ekKnfZ5WWf/dGlcNePYR61Ambfjlx2qDAr+e/0="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amerilux%2fcreate-netsuite-project@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":40618},"name":"@amerilux/create-netsuite-project","type":"module","engines":{"node":">=22"},"gitHead":"d76779a15a27f0400c4a6bbe341e0ad82b7bcb58","license":"MIT","scripts":{"dev":"tsup --watch","e2e":"node scripts/e2e.mjs","lint":"eslint .","test":"vitest run","build":"tsup","typecheck":"tsc --noEmit -p tsconfig.json","prepublishOnly":"npm run typecheck && npm test && npm run build","check:private-refs":"node scripts/check-no-private-refs.mjs"},"version":"0.5.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63ffb7c5-709c-447b-8f56-249b81e1ea81"}},"homepage":"https://github.com/AmeriLux-Dev/create-netsuite-project#readme","keywords":["netsuite","suitescript","suitelet","restlet","react","scaffold","create"],"repository":{"url":"git+https://github.com/AmeriLux-Dev/create-netsuite-project.git","type":"git"},"_npmVersion":"12.0.2","description":"Scaffold a Suitelet-hosted React application for NetSuite: Vite client, webpack AMD API, one script per controller.","directories":{},"maintainers":[{"name":"michael-young-amerilux","email":"Michael.ThomasYoung@amerilux.com"}],"_nodeVersion":"22.23.2","dependencies":{"tar":"^7.5.22","commander":"^15.0.0","@clack/prompts":"^1.8.0"},"_hasShrinkwrap":false,"templateSource":{"ref":"main","repository":"AmeriLux-Dev/netsuite-project-templates"},"devDependencies":{"tsup":"^8.5.1","eslint":"^10.10.0","vitest":"^5.0.0","globals":"^17.12.0","@eslint/js":"^10.0.1","typescript":"~5.9.3","@types/node":"^22.20.2","typescript-eslint":"^8.70.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/create-netsuite-project_0.5.1_1789504991015_0.8152611342490208"}}},"time":{"created":"2026-09-11T03:35:48.397Z","modified":"2026-09-15T20:43:11.562Z","0.1.0":"2026-09-11T03:35:48.813Z","0.2.0":"2026-09-11T17:56:35.407Z","0.3.0":"2026-09-11T22:01:34.680Z","0.3.1":"2026-09-14T16:59:47.918Z","0.4.0":"2026-09-14T20:46:59.773Z","0.5.0":"2026-09-14T21:42:55.354Z","0.5.1":"2026-09-15T20:43:11.094Z"},"bugs":{"url":"https://github.com/AmeriLux-Dev/create-netsuite-project/issues"},"license":"MIT","homepage":"https://github.com/AmeriLux-Dev/create-netsuite-project#readme","keywords":["netsuite","suitescript","suitelet","restlet","react","scaffold","create"],"repository":{"url":"git+https://github.com/AmeriLux-Dev/create-netsuite-project.git","type":"git"},"description":"Scaffold a Suitelet-hosted React application for NetSuite: Vite client, webpack AMD API, one script per controller.","maintainers":[{"name":"michael-young-amerilux","email":"Michael.ThomasYoung@amerilux.com"}],"readme":"# @amerilux/create-netsuite-project\n\nScaffold a Suitelet-hosted React application for NetSuite in one command.\n\n```sh\nnpm create @amerilux/netsuite-project@latest MyApp\n# or\nnpx @amerilux/create-netsuite-project MyApp\n```\n\nThe generated project is a small monorepo: a Vite + React 19 + Tailwind 4 client served by a Suitelet, a webpack-built SuiteScript API where **every controller is its own script** (transport-agnostic endpoints served by a Restlet or a Suitelet, switchable in one file), decorated record models and per-controller script declarations so every NetSuite id is written once, the endpoint plumbing and a generated, typed browser client through [`@amerilux/netsuite-api`](https://www.npmjs.com/package/@amerilux/netsuite-api), typed data access through [`@amerilux/netsuite-repository`](https://www.npmjs.com/package/@amerilux/netsuite-repository), instrumented `N/*` calls through [`@amerilux/netsuite-wrapper`](https://www.npmjs.com/package/@amerilux/netsuite-wrapper), Vitest everywhere, ESLint, and deployment scripts around the SuiteCloud CLI.\n\n## What you get\n\n```\nMyApp/\n  netsuite.ts               app names and any id no controller or model owns; imported by both api/ and client/\n  netsuite-api.config.json  where the generator reads the controllers and writes the generated files (the defaults)\n  api/src/controllers/      one file per controller: shapes, endpoints and the Restlet or Suitelet entry point declaring the script's ids (userController.ts and userRolesController.ts to start)\n  api/src/services/         decisions: interpret the request, call repositories, shape the reply (<subject>Service.ts)\n  api/src/repositories/     query and write functions over dbContext; generated/ comes from `npm run generate`\n  api/src/specifications/   query predicates, one module per record type\n  api/src/models/           decorated record models; each declares its record type and field ids\n  api/src/types/            models.gen.ts (generated entity types)\n  api/src/scripts.gen.ts    generated from the controllers: every script by name, for createSuiteletClient\n  api/src/_host/            boilerplate: the Suitelet that serves the SPA; nothing is added there\n  client/src/               React app: TanStack Router (file-based routes under src/routes, hash history), TanStack Query, Tailwind\n  client/src/api/           generated from the controllers by `npm run generate`: one module per controller (its request and response types, the entity types it names, its endpoint type and, for a controller the browser calls, its client), re-exported by index.gen.ts under the controller's name\n  client/server.ts          local dev proxy that signs OAuth 2.0 calls to your sandbox\n  netsuite/                 SDF project: manifest, deploy.xml, Objects/, FileCabinet/ (build output)\n  scripts/deploy.mjs        build → suitecloud project:deploy (or file:upload only)\n  scripts/checkStructure.mjs run by npm run lint: every script's pieces (declaration, exports, SDF object) agree\n  .vscode/                  VS Code snippets (nsp…) for every layer: controller, endpoint, service, repository, specifications, model, hook, SDF object\n  .claude/                  Claude Code settings (and the Probity hook with --probity)\n  README.md                 the application record: purpose, owners, dependencies, deployment, support, decisions\n  HOW-TO-USE.md             how to build, run, test, deploy and extend the project\n  CLAUDE.md                 project brief for Claude Code\n  probity.config.ts         agent guardrails (Probity), wired up in .claude/settings.json; only with --probity\n```\n\nBuild output lands in `netsuite/FileCabinet/SuiteScripts/MyApp/`: `client/app.js` plus one AMD file per script under `api/`. Each API file starts with the `@NApiVersion` / `@NScriptType` banner NetSuite expects.\n\n## Prompts and flags\n\nEvery prompt has a flag, so the command works unattended:\n\n| Prompt | Flag | Default |\n|---|---|---|\n| Project name | `[directory]` or `--name` | required |\n| Script id prefix | `--prefix` | derived from the name, max 8 characters |\n| Author or team | `--author` | `git config user.name` |\n| Description | `--description` | a one-liner |\n| PerformanceTracker telemetry | `--performance-tracker` / `--no-performance-tracker` | off |\n| Probity guardrails for AI agents | `--probity` / `--no-probity` | off |\n| Install dependencies | `--install` / `--no-install` | yes |\n| Initialise git | `--git` / `--no-git` | yes |\n\n`--yes` accepts every default. `--ref <gitref>`, `--repo <owner/repo>` and `--local-template <path>` control where the template comes from; by default the CLI downloads `react-app` from [netsuite-project-templates](https://github.com/AmeriLux-Dev/netsuite-project-templates) at the ref set in its own `package.json`, which is `main`, so every scaffold uses the current template. Pass `--ref <tag>` to freeze it.\n\nScript ids are `customscript_<prefix>_<name>` and NetSuite caps them at 40 characters, so the prefix is 2 to 10 lowercase characters; the project's structure check keeps every later script id within the budget.\n\n## Adding a controller\n\nA controller is one deployed script with named endpoints (`orders` with `list`, `byId`, `create`): one controller file holding the request and response shapes, the endpoints and the script declaration, plus its SDF object; `npm run generate` writes the client module from it. The generated project walks through the pieces step by step in HOW-TO-USE.md (adding a controller, an endpoint, a model, a page, a helper script running as another role), ships VS Code snippets that emit each file in that shape, and its `npm run lint` runs a structure check that fails until every piece exists and they agree (ids, transport, endpoint names). The `user` and `userRoles` controllers are the reference.\n\n## Deploying\n\nThe scaffold never deploys. The generated project starts with a `user` Restlet (GET `roles`: the caller and every role assigned to them) and the `userRoles` Suitelet it calls, deployed to run as Administrator because a Restlet caller's role cannot read role assignments. When the account is set up:\n\n```sh\nnpx suitecloud account:setup   # once per account; writes the gitignored project.json\nnpm run deploy                 # build, project:adddependencies, project:deploy\nnpm run deploy:files           # build, then upload only File Cabinet files\n```\n\nThe client bundle URL carries the version and a build id, so a new deploy is picked up without a manual cache bust.\n\n## Requirements\n\n- Node 22 or newer\n- Java 17 or newer, for the SuiteCloud CLI\n- git (optional; used for the first commit and the default author)\n\n## Repository layout\n\nThis repository holds only the CLI. The templates it renders live in [netsuite-project-templates](https://github.com/AmeriLux-Dev/netsuite-project-templates), one folder per project type.\n\n```\nsrc/                  the CLI: commands, prompts, template download and render, the controller generator\n__tests__/            unit tests (vitest)\nscripts/              private-reference scan and the end-to-end wrapper\n.github/workflows/    CI (checks, scaffold with the template repository's main on Linux and Windows, secret scan) and release\n```\n\n`templateSource` in `package.json` names the template repository and the git ref the CLI downloads by default (`main`); `--repo` and `--ref` override it at run time.\n\n### Developing\n\n```sh\nnpm install\nnpm test                    # unit tests\nnpm run e2e                 # build, then run the template repository's end-to-end check against this build\nnode dist/index.js ./Sandbox --local-template ../netsuite-project-templates/react-app --prefix sbx --yes --no-install --no-git\n```\n\n`npm run e2e` expects a checkout of the template repository at `../netsuite-project-templates`; set `NETSUITE_PROJECT_TEMPLATES_DIR` to use another path. CI runs the same check against the template repository's `main`.\n\n### Releasing\n\n1. Template changes need no CLI release: the CLI scaffolds from the template repository's `main`. Release the CLI only when the CLI itself changed. A template change that needs a new CLI feature must wait for that CLI release, and the templates repository's CI (which scaffolds with the CLI's `main`) is the guard.\n2. Bump `version` in `package.json`.\n3. Tag `v<version>` and push the tag. The release workflow verifies the tag matches, checks that the template ref exists, runs the checks and publishes through the npm Trusted Publisher configured for this repository (no token secret; provenance is attached automatically).\n\nCI runs the same pre-flight checks and a dry-run publish on every pull request, so most release problems surface before tagging. If the release workflow itself needs fixing after a tag exists, push the fix to `main` and run the Release workflow manually from the Actions tab with that tag: the manual run uses the workflow from `main` but publishes the tagged commit, so the tag never needs to move.\n\n## Security\n\nThis repository is public. Nothing account-specific belongs here: no account ids, authentication ids, `project.json`, `.env` files, keys or certificates. CI runs gitleaks and `scripts/check-no-private-refs.mjs` on every push.\n\n## License\n\n[MIT](./LICENSE)\n","readmeFilename":"README.md"}