spinup-ts 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +82 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +96 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts.d.ts +17 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +264 -0
- package/dist/prompts.js.map +1 -0
- package/dist/scaffold.d.ts +5 -0
- package/dist/scaffold.d.ts.map +1 -0
- package/dist/scaffold.js +128 -0
- package/dist/scaffold.js.map +1 -0
- package/dist/transforms/devcontainer.d.ts +3 -0
- package/dist/transforms/devcontainer.d.ts.map +1 -0
- package/dist/transforms/devcontainer.js +8 -0
- package/dist/transforms/devcontainer.js.map +1 -0
- package/dist/transforms/docker.d.ts +3 -0
- package/dist/transforms/docker.d.ts.map +1 -0
- package/dist/transforms/docker.js +11 -0
- package/dist/transforms/docker.js.map +1 -0
- package/dist/transforms/docs.d.ts +3 -0
- package/dist/transforms/docs.d.ts.map +1 -0
- package/dist/transforms/docs.js +22 -0
- package/dist/transforms/docs.js.map +1 -0
- package/dist/transforms/documentation.d.ts +3 -0
- package/dist/transforms/documentation.d.ts.map +1 -0
- package/dist/transforms/documentation.js +37 -0
- package/dist/transforms/documentation.js.map +1 -0
- package/dist/transforms/github-actions.d.ts +3 -0
- package/dist/transforms/github-actions.d.ts.map +1 -0
- package/dist/transforms/github-actions.js +48 -0
- package/dist/transforms/github-actions.js.map +1 -0
- package/dist/transforms/index.d.ts +3 -0
- package/dist/transforms/index.d.ts.map +1 -0
- package/dist/transforms/index.js +24 -0
- package/dist/transforms/index.js.map +1 -0
- package/dist/transforms/license.d.ts +3 -0
- package/dist/transforms/license.d.ts.map +1 -0
- package/dist/transforms/license.js +19 -0
- package/dist/transforms/license.js.map +1 -0
- package/dist/transforms/npm-publish.d.ts +3 -0
- package/dist/transforms/npm-publish.d.ts.map +1 -0
- package/dist/transforms/npm-publish.js +15 -0
- package/dist/transforms/npm-publish.js.map +1 -0
- package/dist/transforms/package-manager.d.ts +3 -0
- package/dist/transforms/package-manager.d.ts.map +1 -0
- package/dist/transforms/package-manager.js +31 -0
- package/dist/transforms/package-manager.js.map +1 -0
- package/dist/types.d.ts +116 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +52 -0
- package/dist/types.js.map +1 -0
- package/dist/update.d.ts +2 -0
- package/dist/update.d.ts.map +1 -0
- package/dist/update.js +207 -0
- package/dist/update.js.map +1 -0
- package/package.json +94 -0
- package/template/.commitlintrc.json +3 -0
- package/template/.devcontainer/.zshrc +159 -0
- package/template/.devcontainer/DISCOVER-DEPS.md +109 -0
- package/template/.devcontainer/README.md +223 -0
- package/template/.devcontainer/SETUP.md +191 -0
- package/template/.devcontainer/TOOLS.md +215 -0
- package/template/.devcontainer/devcontainer.json +106 -0
- package/template/.devcontainer/scripts/init-project.sh +167 -0
- package/template/.editorconfig +12 -0
- package/template/.github/.release-please-manifest.json +3 -0
- package/template/.github/ISSUE_TEMPLATE/bug_report.md +21 -0
- package/template/.github/ISSUE_TEMPLATE/feature_request.md +14 -0
- package/template/.github/PULL_REQUEST_TEMPLATE.md +13 -0
- package/template/.github/actions/setup-node-env/action.yml +20 -0
- package/template/.github/dependabot.yml +17 -0
- package/template/.github/labeler.yml +17 -0
- package/template/.github/release-please-config.json +7 -0
- package/template/.github/workflows/ci.yml +95 -0
- package/template/.github/workflows/codeql.yml +31 -0
- package/template/.github/workflows/labeler.yml +18 -0
- package/template/.github/workflows/release-please.yml +72 -0
- package/template/.github/workflows/stale.yml +32 -0
- package/template/.husky/commit-msg +1 -0
- package/template/.husky/pre-commit +1 -0
- package/template/.nvmrc +1 -0
- package/template/.vscode/extensions.json +11 -0
- package/template/.vscode/settings.json +12 -0
- package/template/AGENTS.md +1 -0
- package/template/CHANGELOG.md +11 -0
- package/template/CLAUDE.md +0 -0
- package/template/CONTRIBUTING.md +22 -0
- package/template/Dockerfile +21 -0
- package/template/LICENSE.Apache-2.0 +17 -0
- package/template/LICENSE.BSD-3-Clause +28 -0
- package/template/LICENSE.GPL-3.0 +17 -0
- package/template/LICENSE.ISC +15 -0
- package/template/LICENSE.MIT +21 -0
- package/template/README.md +62 -0
- package/template/biome.json +49 -0
- package/template/docker-compose.yml +7 -0
- package/template/docs/architecture/api-layer.md +44 -0
- package/template/docs/architecture/constitution.md +24 -0
- package/template/docs/architecture/data-model.md +24 -0
- package/template/docs/architecture/index.md +15 -0
- package/template/docs/architecture/project.md +24 -0
- package/template/docs/architecture/quality-checks.md +28 -0
- package/template/docs/architecture/testing-plan.md +35 -0
- package/template/docs/architecture/ui.md +37 -0
- package/template/docs/changelog.md +9 -0
- package/template/docs/contributing.md +46 -0
- package/template/docs/developer-guide/architecture.md +22 -0
- package/template/docs/developer-guide/contributing.md +30 -0
- package/template/docs/developer-guide/data-model.md +25 -0
- package/template/docs/developer-guide/index.md +12 -0
- package/template/docs/developer-guide/testing.md +40 -0
- package/template/docs/examples.md +37 -0
- package/template/docs/getting-started.md +42 -0
- package/template/docs/installation.md +45 -0
- package/template/docs/intro.md +60 -0
- package/template/docs/post-mortems/.gitkeep +0 -0
- package/template/docs/reference/cli.md +32 -0
- package/template/docs/reference/configuration.md +33 -0
- package/template/docs/reference/hooks.md +27 -0
- package/template/docs/research/competitor-analysis.md +21 -0
- package/template/docs/research/real-world-demand.md +21 -0
- package/template/docs/user-guide/configuration.md +32 -0
- package/template/docs/user-guide/features.md +21 -0
- package/template/docs/user-guide/how-it-works.md +29 -0
- package/template/docs/user-guide/index.md +11 -0
- package/template/docusaurus.config.ts +93 -0
- package/template/eslint.config.mjs +66 -0
- package/template/justfile +51 -0
- package/template/package.json +88 -0
- package/template/pnpm-workspace.yaml +8 -0
- package/template/sidebars.ts +72 -0
- package/template/src/index.ts +3 -0
- package/template/static/img/logo.svg +4 -0
- package/template/tests/index.test.ts +8 -0
- package/template/tsconfig.json +23 -0
- package/template/vitest.config.ts +19 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devcontainer.js","sourceRoot":"","sources":["../../src/transforms/devcontainer.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,GAAG,MAAM,UAAU,CAAC;AAG3B,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAe,EAAE,MAAqB;IAChF,IAAI,MAAM,CAAC,mBAAmB;QAAE,OAAO;IAEvC,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/transforms/docker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAO3F"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import fse from 'fs-extra';
|
|
3
|
+
export async function transformDocker(destDir, config) {
|
|
4
|
+
if (config.includeDockerfile)
|
|
5
|
+
return;
|
|
6
|
+
await Promise.all([
|
|
7
|
+
fse.remove(path.join(destDir, 'Dockerfile')),
|
|
8
|
+
fse.remove(path.join(destDir, 'docker-compose.yml')),
|
|
9
|
+
]);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=docker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/transforms/docker.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,GAAG,MAAM,UAAU,CAAC;AAG3B,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAe,EAAE,MAAqB;IAC1E,IAAI,MAAM,CAAC,iBAAiB;QAAE,OAAO;IAErC,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC5C,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;KACrD,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/transforms/docs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAUjD,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CAqBf"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import fse from 'fs-extra';
|
|
3
|
+
const DOCS_SCRIPTS = ['docs:dev', 'docs:build', 'docs:preview'];
|
|
4
|
+
export async function transformDocs(destDir, config) {
|
|
5
|
+
if (config.includeDocs)
|
|
6
|
+
return;
|
|
7
|
+
await fse.remove(path.join(destDir, 'docs'));
|
|
8
|
+
const pkgPath = path.join(destDir, 'package.json');
|
|
9
|
+
if (!(await fse.pathExists(pkgPath)))
|
|
10
|
+
return;
|
|
11
|
+
const pkg = (await fse.readJson(pkgPath));
|
|
12
|
+
if (pkg.scripts) {
|
|
13
|
+
for (const scriptName of DOCS_SCRIPTS) {
|
|
14
|
+
Reflect.deleteProperty(pkg.scripts, scriptName);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
if (pkg.devDependencies) {
|
|
18
|
+
Reflect.deleteProperty(pkg.devDependencies, 'vitepress');
|
|
19
|
+
}
|
|
20
|
+
await fse.writeJson(pkgPath, pkg, { spaces: 2 });
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/transforms/docs.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,GAAG,MAAM,UAAU,CAAC;AAS3B,MAAM,YAAY,GAAG,CAAC,UAAU,EAAE,YAAY,EAAE,cAAc,CAAU,CAAC;AAEzE,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAe,EACf,MAAqB;IAErB,IAAI,MAAM,CAAC,WAAW;QAAE,OAAO;IAE/B,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAE7C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACnD,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO;IAE7C,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAgB,CAAC;IAEzD,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE,CAAC;YACtC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;QACxB,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentation.d.ts","sourceRoot":"","sources":["../../src/transforms/documentation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAqBjD,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import fse from 'fs-extra';
|
|
3
|
+
const DOCS_SCRIPTS = ['docs:start', 'docs:build', 'docs:serve', 'docs:clear'];
|
|
4
|
+
const DOCS_DEV_DEPS = [
|
|
5
|
+
'@docusaurus/core',
|
|
6
|
+
'@docusaurus/preset-classic',
|
|
7
|
+
'@docusaurus/types',
|
|
8
|
+
'docusaurus-plugin-llms',
|
|
9
|
+
'docusaurus-plugin-typedoc',
|
|
10
|
+
'react',
|
|
11
|
+
'react-dom',
|
|
12
|
+
'typedoc',
|
|
13
|
+
];
|
|
14
|
+
export async function transformDocumentation(destDir, config) {
|
|
15
|
+
if (config.includeDocs)
|
|
16
|
+
return;
|
|
17
|
+
await fse.remove(path.join(destDir, 'docs'));
|
|
18
|
+
await fse.remove(path.join(destDir, 'docusaurus.config.ts'));
|
|
19
|
+
await fse.remove(path.join(destDir, 'sidebars.ts'));
|
|
20
|
+
await fse.remove(path.join(destDir, 'static'));
|
|
21
|
+
const packagePath = path.join(destDir, 'package.json');
|
|
22
|
+
if (!(await fse.pathExists(packagePath)))
|
|
23
|
+
return;
|
|
24
|
+
const packageJson = (await fse.readJson(packagePath));
|
|
25
|
+
if (packageJson.scripts) {
|
|
26
|
+
for (const scriptName of DOCS_SCRIPTS) {
|
|
27
|
+
Reflect.deleteProperty(packageJson.scripts, scriptName);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
if (packageJson.devDependencies) {
|
|
31
|
+
for (const dep of DOCS_DEV_DEPS) {
|
|
32
|
+
Reflect.deleteProperty(packageJson.devDependencies, dep);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
await fse.writeJson(packagePath, packageJson, { spaces: 2 });
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=documentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documentation.js","sourceRoot":"","sources":["../../src/transforms/documentation.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,GAAG,MAAM,UAAU,CAAC;AAS3B,MAAM,YAAY,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAU,CAAC;AAEvF,MAAM,aAAa,GAAG;IACpB,kBAAkB;IAClB,4BAA4B;IAC5B,mBAAmB;IACnB,wBAAwB;IACxB,2BAA2B;IAC3B,OAAO;IACP,WAAW;IACX,SAAS;CACD,CAAC;AAEX,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAe,EACf,MAAqB;IAErB,IAAI,MAAM,CAAC,WAAW;QAAE,OAAO;IAE/B,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7C,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAC7D,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IACpD,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE/C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACvD,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAAE,OAAO;IAEjD,MAAM,WAAW,GAAG,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAgB,CAAC;IAErE,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACxB,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE,CAAC;YACtC,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,IAAI,WAAW,CAAC,eAAe,EAAE,CAAC;QAChC,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,MAAM,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-actions.d.ts","sourceRoot":"","sources":["../../src/transforms/github-actions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA+BjD,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CAsBf"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import fse from 'fs-extra';
|
|
3
|
+
const JOB_REGEX_CACHE = new Map();
|
|
4
|
+
function jobBlockRegex(jobName) {
|
|
5
|
+
const cached = JOB_REGEX_CACHE.get(jobName);
|
|
6
|
+
if (cached)
|
|
7
|
+
return cached;
|
|
8
|
+
const pattern = new RegExp(`\\n\\s{2}${jobName}:\\n(?:\\s{4,}.*\\n|\\s*\\n)*`, 'g');
|
|
9
|
+
JOB_REGEX_CACHE.set(jobName, pattern);
|
|
10
|
+
return pattern;
|
|
11
|
+
}
|
|
12
|
+
function removeJobBlock(yaml, jobName) {
|
|
13
|
+
return yaml.replaceAll(jobBlockRegex(jobName), '\n');
|
|
14
|
+
}
|
|
15
|
+
function removeCodecovStep(yaml) {
|
|
16
|
+
// eslint-disable-next-line sonarjs/slow-regex
|
|
17
|
+
const codecovStepRegex = /\n\s{6}- name: Upload coverage\n(?:\s{8,}.*\n)*/g;
|
|
18
|
+
return yaml.replaceAll(codecovStepRegex, '\n');
|
|
19
|
+
}
|
|
20
|
+
async function editYamlFile(filePath, transform) {
|
|
21
|
+
if (!(await fse.pathExists(filePath)))
|
|
22
|
+
return;
|
|
23
|
+
const original = await fse.readFile(filePath, 'utf8');
|
|
24
|
+
const updated = transform(original);
|
|
25
|
+
if (updated !== original) {
|
|
26
|
+
await fse.writeFile(filePath, updated, 'utf8');
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export async function transformGithubActions(destDir, config) {
|
|
30
|
+
const githubDir = path.join(destDir, '.github');
|
|
31
|
+
if (!config.includeGithubActions) {
|
|
32
|
+
await fse.remove(githubDir);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const ciPath = path.join(githubDir, 'workflows', 'ci.yml');
|
|
36
|
+
const releasePleaseYml = path.join(githubDir, 'workflows', 'release-please.yml');
|
|
37
|
+
if (!config.publishToNpm) {
|
|
38
|
+
await editYamlFile(releasePleaseYml, (yaml) => removeJobBlock(yaml, 'publish'));
|
|
39
|
+
}
|
|
40
|
+
if (!config.includeDocs) {
|
|
41
|
+
await editYamlFile(ciPath, (yaml) => removeJobBlock(yaml, 'docs'));
|
|
42
|
+
await editYamlFile(releasePleaseYml, (yaml) => removeJobBlock(yaml, 'deploy-docs'));
|
|
43
|
+
}
|
|
44
|
+
if (!config.includeCodecov) {
|
|
45
|
+
await editYamlFile(ciPath, removeCodecovStep);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=github-actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-actions.js","sourceRoot":"","sources":["../../src/transforms/github-actions.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,GAAG,MAAM,UAAU,CAAC;AAG3B,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;AAElD,SAAS,aAAa,CAAC,OAAe;IACpC,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,YAAY,OAAO,+BAA+B,EAAE,GAAG,CAAC,CAAC;IACpF,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,OAAe;IACnD,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,8CAA8C;IAC9C,MAAM,gBAAgB,GAAG,kDAAkD,CAAC;IAC5E,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,QAAgB,EAAE,SAAmC;IAC/E,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAAE,OAAO;IAC9C,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAe,EACf,MAAqB;IAErB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;QACjC,MAAM,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC3D,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,oBAAoB,CAAC,CAAC;IAEjF,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACzB,MAAM,YAAY,CAAC,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QACnE,MAAM,YAAY,CAAC,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAC3B,MAAM,YAAY,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAChD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transforms/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAgBjD,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ3F"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// eslint-disable-next-line import-x/no-unresolved
|
|
2
|
+
import { transformDevcontainer } from './devcontainer.js';
|
|
3
|
+
// eslint-disable-next-line import-x/no-unresolved
|
|
4
|
+
import { transformDocker } from './docker.js';
|
|
5
|
+
// eslint-disable-next-line import-x/no-unresolved
|
|
6
|
+
import { transformDocumentation } from './documentation.js';
|
|
7
|
+
// eslint-disable-next-line import-x/no-unresolved
|
|
8
|
+
import { transformGithubActions } from './github-actions.js';
|
|
9
|
+
// eslint-disable-next-line import-x/no-unresolved
|
|
10
|
+
import { transformLicense } from './license.js';
|
|
11
|
+
// eslint-disable-next-line import-x/no-unresolved
|
|
12
|
+
import { transformNpmPublish } from './npm-publish.js';
|
|
13
|
+
// eslint-disable-next-line import-x/no-unresolved
|
|
14
|
+
import { transformPackageManager } from './package-manager.js';
|
|
15
|
+
export async function applyTransforms(destDir, config) {
|
|
16
|
+
await transformLicense(destDir, config);
|
|
17
|
+
await transformGithubActions(destDir, config);
|
|
18
|
+
await transformDocker(destDir, config);
|
|
19
|
+
await transformDevcontainer(destDir, config);
|
|
20
|
+
await transformDocumentation(destDir, config);
|
|
21
|
+
await transformNpmPublish(destDir, config);
|
|
22
|
+
await transformPackageManager(destDir, config);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transforms/index.ts"],"names":[],"mappings":"AACA,kDAAkD;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,kDAAkD;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,kDAAkD;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,kDAAkD;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,kDAAkD;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,kDAAkD;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,kDAAkD;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAe,EAAE,MAAqB;IAC1E,MAAM,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../src/transforms/license.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AASjD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAW5F"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { readdir } from 'node:fs/promises';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import fse from 'fs-extra';
|
|
4
|
+
const LICENSE_PREFIX = 'LICENSE.';
|
|
5
|
+
async function listLicenseFiles(destDir) {
|
|
6
|
+
const entries = await readdir(destDir);
|
|
7
|
+
return entries.filter((entry) => entry.startsWith(LICENSE_PREFIX));
|
|
8
|
+
}
|
|
9
|
+
export async function transformLicense(destDir, config) {
|
|
10
|
+
const licenseFiles = await listLicenseFiles(destDir);
|
|
11
|
+
if (config.license !== 'UNLICENSED') {
|
|
12
|
+
const source = path.join(destDir, `${LICENSE_PREFIX}${config.license}`);
|
|
13
|
+
if (await fse.pathExists(source)) {
|
|
14
|
+
await fse.copyFile(source, path.join(destDir, 'LICENSE'));
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
await Promise.all(licenseFiles.map((file) => fse.remove(path.join(destDir, file))));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=license.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/transforms/license.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,GAAG,MAAM,UAAU,CAAC;AAG3B,MAAM,cAAc,GAAG,UAAU,CAAC;AAElC,KAAK,UAAU,gBAAgB,CAAC,OAAe;IAC7C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAe,EAAE,MAAqB;IAC3E,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAErD,IAAI,MAAM,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,cAAc,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,IAAI,MAAM,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACtF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npm-publish.d.ts","sourceRoot":"","sources":["../../src/transforms/npm-publish.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAOjD,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAa/F"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import fse from 'fs-extra';
|
|
3
|
+
export async function transformNpmPublish(destDir, config) {
|
|
4
|
+
if (config.publishToNpm)
|
|
5
|
+
return;
|
|
6
|
+
const packagePath = path.join(destDir, 'package.json');
|
|
7
|
+
if (!(await fse.pathExists(packagePath)))
|
|
8
|
+
return;
|
|
9
|
+
const packageJson = (await fse.readJson(packagePath));
|
|
10
|
+
if (packageJson.scripts) {
|
|
11
|
+
Reflect.deleteProperty(packageJson.scripts, 'prepublishOnly');
|
|
12
|
+
}
|
|
13
|
+
await fse.writeJson(packagePath, packageJson, { spaces: 2 });
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=npm-publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"npm-publish.js","sourceRoot":"","sources":["../../src/transforms/npm-publish.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,GAAG,MAAM,UAAU,CAAC;AAQ3B,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAe,EAAE,MAAqB;IAC9E,IAAI,MAAM,CAAC,YAAY;QAAE,OAAO;IAEhC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACvD,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAAE,OAAO;IAEjD,MAAM,WAAW,GAAG,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAgB,CAAC;IAErE,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACxB,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../src/transforms/package-manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAkBjD,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CAiBf"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { exec } from 'node:child_process';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { promisify } from 'node:util';
|
|
4
|
+
import fse from 'fs-extra';
|
|
5
|
+
const execAsync = promisify(exec);
|
|
6
|
+
async function resolveVersion(pm) {
|
|
7
|
+
try {
|
|
8
|
+
const { stdout } = await execAsync(`${pm} --version`);
|
|
9
|
+
return stdout.trim();
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return '0.0.0';
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export async function transformPackageManager(destDir, config) {
|
|
16
|
+
if (config.packageManager === 'npm')
|
|
17
|
+
return;
|
|
18
|
+
const packagePath = path.join(destDir, 'package.json');
|
|
19
|
+
if (!(await fse.pathExists(packagePath)))
|
|
20
|
+
return;
|
|
21
|
+
const packageJson = (await fse.readJson(packagePath));
|
|
22
|
+
const version = await resolveVersion(config.packageManager);
|
|
23
|
+
packageJson.packageManager = `${config.packageManager}@${version}`;
|
|
24
|
+
// Rename placeholder key so the scaffolded project gets a real lint-staged config
|
|
25
|
+
if ('__lint-staged__' in packageJson) {
|
|
26
|
+
packageJson['lint-staged'] = packageJson['__lint-staged__'];
|
|
27
|
+
Reflect.deleteProperty(packageJson, '__lint-staged__');
|
|
28
|
+
}
|
|
29
|
+
await fse.writeJson(packagePath, packageJson, { spaces: 2 });
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=package-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../src/transforms/package-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,GAAG,MAAM,UAAU,CAAC;AAG3B,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAOlC,KAAK,UAAU,cAAc,CAAC,EAAU;IACtC,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAAe,EACf,MAAqB;IAErB,IAAI,MAAM,CAAC,cAAc,KAAK,KAAK;QAAE,OAAO;IAE5C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACvD,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAAE,OAAO;IAEjD,MAAM,WAAW,GAAG,CAAC,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAgB,CAAC;IACrE,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAC5D,WAAW,CAAC,cAAc,GAAG,GAAG,MAAM,CAAC,cAAc,IAAI,OAAO,EAAE,CAAC;IAEnE,kFAAkF;IAClF,IAAI,iBAAiB,IAAI,WAAW,EAAE,CAAC;QACrC,WAAW,CAAC,aAAa,CAAC,GAAG,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAC5D,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Map of template placeholder tokens to their concrete string replacements.
|
|
4
|
+
* Every key is replaced verbatim inside template files during scaffolding.
|
|
5
|
+
*/
|
|
6
|
+
/** Map of `__UPPER_SNAKE__` template placeholders to their replacement values. */
|
|
7
|
+
export type TokenMap = Record<string, string>;
|
|
8
|
+
/**
|
|
9
|
+
* Zod schema describing every user-selectable option for a scaffolded project.
|
|
10
|
+
* Source of truth for the interactive CLI prompts and template token resolution.
|
|
11
|
+
*/
|
|
12
|
+
export declare const projectConfigSchema: z.ZodObject<{
|
|
13
|
+
/** kebab-case project slug, e.g. "my-awesome-lib" */
|
|
14
|
+
projectName: z.ZodString;
|
|
15
|
+
/** snake_case version of `projectName`, auto-derived via `deriveSlug` */
|
|
16
|
+
projectSlug: z.ZodString;
|
|
17
|
+
description: z.ZodString;
|
|
18
|
+
author: z.ZodString;
|
|
19
|
+
email: z.ZodString;
|
|
20
|
+
githubHandle: z.ZodString;
|
|
21
|
+
nodeVersion: z.ZodDefault<z.ZodEnum<["20", "22", "23"]>>;
|
|
22
|
+
packageManager: z.ZodDefault<z.ZodEnum<["pnpm", "bun", "npm"]>>;
|
|
23
|
+
projectType: z.ZodDefault<z.ZodEnum<["library", "cli", "server", "mcp-server"]>>;
|
|
24
|
+
includeGithubActions: z.ZodDefault<z.ZodBoolean>;
|
|
25
|
+
publishToNpm: z.ZodDefault<z.ZodBoolean>;
|
|
26
|
+
/** Include a Docusaurus docs site under `docs/` */
|
|
27
|
+
includeDocs: z.ZodDefault<z.ZodBoolean>;
|
|
28
|
+
includeCodecov: z.ZodDefault<z.ZodBoolean>;
|
|
29
|
+
includeDockerfile: z.ZodDefault<z.ZodBoolean>;
|
|
30
|
+
includeDevcontainer: z.ZodDefault<z.ZodBoolean>;
|
|
31
|
+
license: z.ZodDefault<z.ZodEnum<["MIT", "Apache-2.0", "BSD-3-Clause", "ISC", "GPL-3.0", "UNLICENSED"]>>;
|
|
32
|
+
}, "strict", z.ZodTypeAny, {
|
|
33
|
+
projectName: string;
|
|
34
|
+
projectSlug: string;
|
|
35
|
+
description: string;
|
|
36
|
+
author: string;
|
|
37
|
+
email: string;
|
|
38
|
+
githubHandle: string;
|
|
39
|
+
nodeVersion: "20" | "22" | "23";
|
|
40
|
+
packageManager: "pnpm" | "bun" | "npm";
|
|
41
|
+
projectType: "library" | "cli" | "server" | "mcp-server";
|
|
42
|
+
includeGithubActions: boolean;
|
|
43
|
+
publishToNpm: boolean;
|
|
44
|
+
includeDocs: boolean;
|
|
45
|
+
includeCodecov: boolean;
|
|
46
|
+
includeDockerfile: boolean;
|
|
47
|
+
includeDevcontainer: boolean;
|
|
48
|
+
license: "MIT" | "Apache-2.0" | "BSD-3-Clause" | "ISC" | "GPL-3.0" | "UNLICENSED";
|
|
49
|
+
}, {
|
|
50
|
+
projectName: string;
|
|
51
|
+
projectSlug: string;
|
|
52
|
+
description: string;
|
|
53
|
+
author: string;
|
|
54
|
+
email: string;
|
|
55
|
+
githubHandle: string;
|
|
56
|
+
nodeVersion?: "20" | "22" | "23" | undefined;
|
|
57
|
+
packageManager?: "pnpm" | "bun" | "npm" | undefined;
|
|
58
|
+
projectType?: "library" | "cli" | "server" | "mcp-server" | undefined;
|
|
59
|
+
includeGithubActions?: boolean | undefined;
|
|
60
|
+
publishToNpm?: boolean | undefined;
|
|
61
|
+
includeDocs?: boolean | undefined;
|
|
62
|
+
includeCodecov?: boolean | undefined;
|
|
63
|
+
includeDockerfile?: boolean | undefined;
|
|
64
|
+
includeDevcontainer?: boolean | undefined;
|
|
65
|
+
license?: "MIT" | "Apache-2.0" | "BSD-3-Clause" | "ISC" | "GPL-3.0" | "UNLICENSED" | undefined;
|
|
66
|
+
}>;
|
|
67
|
+
export type ProjectConfig = z.infer<typeof projectConfigSchema>;
|
|
68
|
+
export declare const userDefaultsSchema: z.ZodObject<{
|
|
69
|
+
author: z.ZodOptional<z.ZodString>;
|
|
70
|
+
email: z.ZodOptional<z.ZodString>;
|
|
71
|
+
githubHandle: z.ZodOptional<z.ZodString>;
|
|
72
|
+
nodeVersion: z.ZodOptional<z.ZodDefault<z.ZodEnum<["20", "22", "23"]>>>;
|
|
73
|
+
packageManager: z.ZodOptional<z.ZodDefault<z.ZodEnum<["pnpm", "bun", "npm"]>>>;
|
|
74
|
+
projectType: z.ZodOptional<z.ZodDefault<z.ZodEnum<["library", "cli", "server", "mcp-server"]>>>;
|
|
75
|
+
includeGithubActions: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
76
|
+
publishToNpm: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
77
|
+
includeDocs: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
78
|
+
includeCodecov: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
79
|
+
includeDockerfile: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
80
|
+
includeDevcontainer: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
|
|
81
|
+
license: z.ZodOptional<z.ZodDefault<z.ZodEnum<["MIT", "Apache-2.0", "BSD-3-Clause", "ISC", "GPL-3.0", "UNLICENSED"]>>>;
|
|
82
|
+
}, "strict", z.ZodTypeAny, {
|
|
83
|
+
author?: string | undefined;
|
|
84
|
+
email?: string | undefined;
|
|
85
|
+
githubHandle?: string | undefined;
|
|
86
|
+
nodeVersion?: "20" | "22" | "23" | undefined;
|
|
87
|
+
packageManager?: "pnpm" | "bun" | "npm" | undefined;
|
|
88
|
+
projectType?: "library" | "cli" | "server" | "mcp-server" | undefined;
|
|
89
|
+
includeGithubActions?: boolean | undefined;
|
|
90
|
+
publishToNpm?: boolean | undefined;
|
|
91
|
+
includeDocs?: boolean | undefined;
|
|
92
|
+
includeCodecov?: boolean | undefined;
|
|
93
|
+
includeDockerfile?: boolean | undefined;
|
|
94
|
+
includeDevcontainer?: boolean | undefined;
|
|
95
|
+
license?: "MIT" | "Apache-2.0" | "BSD-3-Clause" | "ISC" | "GPL-3.0" | "UNLICENSED" | undefined;
|
|
96
|
+
}, {
|
|
97
|
+
author?: string | undefined;
|
|
98
|
+
email?: string | undefined;
|
|
99
|
+
githubHandle?: string | undefined;
|
|
100
|
+
nodeVersion?: "20" | "22" | "23" | undefined;
|
|
101
|
+
packageManager?: "pnpm" | "bun" | "npm" | undefined;
|
|
102
|
+
projectType?: "library" | "cli" | "server" | "mcp-server" | undefined;
|
|
103
|
+
includeGithubActions?: boolean | undefined;
|
|
104
|
+
publishToNpm?: boolean | undefined;
|
|
105
|
+
includeDocs?: boolean | undefined;
|
|
106
|
+
includeCodecov?: boolean | undefined;
|
|
107
|
+
includeDockerfile?: boolean | undefined;
|
|
108
|
+
includeDevcontainer?: boolean | undefined;
|
|
109
|
+
license?: "MIT" | "Apache-2.0" | "BSD-3-Clause" | "ISC" | "GPL-3.0" | "UNLICENSED" | undefined;
|
|
110
|
+
}>;
|
|
111
|
+
export type UserDefaults = z.infer<typeof userDefaultsSchema>;
|
|
112
|
+
/** Convert a kebab-case identifier to snake_case. */
|
|
113
|
+
export declare function deriveSlug(name: string): string;
|
|
114
|
+
/** Build the template token map from a validated {@link ProjectConfig}. */
|
|
115
|
+
export declare function toTokenMap(config: ProjectConfig): TokenMap;
|
|
116
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,kFAAkF;AAClF,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9C;;;GAGG;AACH,eAAO,MAAM,mBAAmB;IAE5B,qDAAqD;;IAErD,yEAAyE;;;;;;;;;;;IAWzE,mDAAmD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS5C,CAAC;AAEZ,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEnB,CAAC;AAEb,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,qDAAqD;AACrD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,2EAA2E;AAC3E,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,QAAQ,CAY1D"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Zod schema describing every user-selectable option for a scaffolded project.
|
|
4
|
+
* Source of truth for the interactive CLI prompts and template token resolution.
|
|
5
|
+
*/
|
|
6
|
+
export const projectConfigSchema = z
|
|
7
|
+
.object({
|
|
8
|
+
/** kebab-case project slug, e.g. "my-awesome-lib" */
|
|
9
|
+
projectName: z.string().min(1),
|
|
10
|
+
/** snake_case version of `projectName`, auto-derived via `deriveSlug` */
|
|
11
|
+
projectSlug: z.string().min(1),
|
|
12
|
+
description: z.string(),
|
|
13
|
+
author: z.string().min(1),
|
|
14
|
+
email: z.string().email(),
|
|
15
|
+
githubHandle: z.string().min(1),
|
|
16
|
+
nodeVersion: z.enum(['20', '22', '23']).default('22'),
|
|
17
|
+
packageManager: z.enum(['pnpm', 'bun', 'npm']).default('pnpm'),
|
|
18
|
+
projectType: z.enum(['library', 'cli', 'server', 'mcp-server']).default('library'),
|
|
19
|
+
includeGithubActions: z.boolean().default(true),
|
|
20
|
+
publishToNpm: z.boolean().default(false),
|
|
21
|
+
/** Include a Docusaurus docs site under `docs/` */
|
|
22
|
+
includeDocs: z.boolean().default(false),
|
|
23
|
+
includeCodecov: z.boolean().default(false),
|
|
24
|
+
includeDockerfile: z.boolean().default(false),
|
|
25
|
+
includeDevcontainer: z.boolean().default(true),
|
|
26
|
+
license: z
|
|
27
|
+
.enum(['MIT', 'Apache-2.0', 'BSD-3-Clause', 'ISC', 'GPL-3.0', 'UNLICENSED'])
|
|
28
|
+
.default('MIT'),
|
|
29
|
+
})
|
|
30
|
+
.strict();
|
|
31
|
+
export const userDefaultsSchema = projectConfigSchema
|
|
32
|
+
.omit({ projectName: true, projectSlug: true, description: true })
|
|
33
|
+
.partial();
|
|
34
|
+
/** Convert a kebab-case identifier to snake_case. */
|
|
35
|
+
export function deriveSlug(name) {
|
|
36
|
+
return name.replaceAll('-', '_');
|
|
37
|
+
}
|
|
38
|
+
/** Build the template token map from a validated {@link ProjectConfig}. */
|
|
39
|
+
export function toTokenMap(config) {
|
|
40
|
+
return Object.fromEntries([
|
|
41
|
+
['__PROJECT_NAME__', config.projectName],
|
|
42
|
+
['__PROJECT_SLUG__', config.projectSlug],
|
|
43
|
+
['__DESCRIPTION__', config.description],
|
|
44
|
+
['__AUTHOR__', config.author],
|
|
45
|
+
['__EMAIL__', config.email],
|
|
46
|
+
['__GITHUB_HANDLE__', config.githubHandle],
|
|
47
|
+
['__NODE_VERSION__', config.nodeVersion],
|
|
48
|
+
['__YEAR__', String(new Date().getFullYear())],
|
|
49
|
+
['__LICENSE__', config.license],
|
|
50
|
+
]);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/update.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"AA6NA,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwCpE"}
|