create-ailk 0.7.0 → 0.9.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 +112 -10
- package/component-catalog.json +798 -49
- package/component-catalog.md +9 -6
- package/dist/add-module.d.ts +20 -0
- package/dist/add-module.js +43 -7
- package/dist/add-route.d.ts +56 -0
- package/dist/add-route.js +286 -0
- package/dist/apply-design-md.d.ts +7 -0
- package/dist/apply-design-md.js +50 -0
- package/dist/apply-design.d.ts +64 -0
- package/dist/apply-design.js +273 -0
- package/dist/claude-md.d.ts +111 -0
- package/dist/claude-md.js +334 -0
- package/dist/cli.js +114 -28
- package/dist/derive-architecture.js +41 -36
- package/dist/design-compile.d.ts +71 -0
- package/dist/design-compile.js +98 -0
- package/dist/design-package.d.ts +83 -0
- package/dist/design-package.js +468 -0
- package/dist/design-presets.d.ts +86 -0
- package/dist/design-presets.js +642 -0
- package/dist/design-scaffold.d.ts +76 -0
- package/dist/design-scaffold.js +220 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +4 -1
- package/dist/legacy-nav-renderers.d.ts +45 -0
- package/dist/legacy-nav-renderers.js +545 -0
- package/dist/lib/auth-secret-file.d.ts +19 -0
- package/dist/lib/auth-secret-file.js +112 -0
- package/dist/lib/design-checks.d.ts +78 -0
- package/dist/lib/design-checks.js +174 -0
- package/dist/lib/extract-module-bundle.js +5 -1
- package/dist/lib/license-key-files.d.ts +9 -0
- package/dist/lib/license-key-files.js +2 -2
- package/dist/lib/module-license-gate.d.ts +89 -0
- package/dist/lib/module-license-gate.js +171 -12
- package/dist/lib/module-tier.d.ts +45 -16
- package/dist/lib/module-tier.js +76 -0
- package/dist/lib/pro-callout.js +10 -2
- package/dist/lib/render-verdict.d.ts +52 -0
- package/dist/lib/render-verdict.js +77 -0
- package/dist/lib/scaffold-render-sweep.d.ts +105 -0
- package/dist/lib/scaffold-render-sweep.js +236 -0
- package/dist/module-architecture.d.ts +19 -16
- package/dist/module-architecture.js +64 -21
- package/dist/parse-args.d.ts +88 -10
- package/dist/parse-args.js +272 -21
- package/dist/programmatic.d.ts +66 -12
- package/dist/programmatic.js +361 -34
- package/dist/site-chrome.d.ts +19 -9
- package/dist/site-chrome.js +23 -13
- package/dist/site-manifest.d.ts +25 -0
- package/dist/site-manifest.js +254 -0
- package/dist/site-roster.d.ts +41 -0
- package/dist/site-roster.js +149 -11
- package/dist/starter-grid.d.ts +232 -0
- package/dist/starter-grid.js +545 -0
- package/dist/surfaces.d.ts +41 -9
- package/dist/surfaces.js +268 -92
- package/dist/template-manifest.d.ts +65 -29
- package/dist/template-manifest.js +161 -382
- package/dist/template-names.d.ts +14 -12
- package/dist/template-names.js +13 -17
- package/package.json +5 -4
- package/site-templates/_base/content/en/Feature/feature-1.mdx +69 -0
- package/site-templates/_base/content/en/Feature/feature-2.mdx +69 -0
- package/site-templates/_base/content/en/Feature/feature-3.mdx +69 -0
- package/site-templates/_base/content/en/FeaturesList/features.mdx +91 -0
- package/site-templates/_base/content/en/GlossaryList/glossary.mdx +0 -1
- package/site-templates/_base/content/en/NewsletterSignup/newsletter.mdx +0 -1
- package/site-templates/_base/content/en/PortfolioItem/sample-four.mdx +105 -0
- package/site-templates/_base/content/en/PortfolioItem/sample-one.mdx +34 -0
- package/site-templates/_base/content/en/PortfolioItem/sample-three.mdx +94 -0
- package/site-templates/_base/content/en/PortfolioItem/sample-two.mdx +45 -0
- package/site-templates/_base/content/en/PortfolioList/portfolio.mdx +169 -0
- package/site-templates/_base/content/en/PrivacyPage/privacy.mdx +15 -0
- package/site-templates/_base/content/en/UseCase/persona-1.mdx +70 -0
- package/site-templates/_base/content/en/UseCase/persona-2.mdx +70 -0
- package/site-templates/_base/content/en/UseCase/persona-3.mdx +70 -0
- package/site-templates/{minimalism-site/TEMPLATE-MANIFEST.json → aliases/minimalism-site.TEMPLATE-MANIFEST.json} +72 -40
- package/site-templates/designs/minimalism/DESIGN.md +98 -6
- package/site-templates/designs/minimalism/sample/README.md +48 -0
- package/site-templates/designs/standard/DESIGN.md +103 -6
- package/site-templates/marketing-site/DESIGN.md +103 -6
- package/site-templates/marketing-site/TEMPLATE-MANIFEST.json +144 -47
- package/site-templates/marketing-site/TEMPLATE-MANIFEST.md +82 -41
- package/site-templates/marketing-site-free/DESIGN.md +103 -6
- package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.json +150 -48
- package/site-templates/marketing-site-free/TEMPLATE-MANIFEST.md +114 -67
- package/site-templates/marketing-site-free/ailk-template.json +1 -1
- package/site-templates/marketing-site-free/content/en/NewsletterSignup/newsletter.mdx +59 -0
- package/site-templates/marketing-site-free/content/en/Pricing/pricing.mdx +199 -0
- package/site-templates/saas-product/DESIGN.md +103 -6
- package/site-templates/saas-product/TEMPLATE-MANIFEST.md +9 -1
- package/site-templates/{simple-service → shapes/local-business-service}/TEMPLATE-MANIFEST.json +210 -81
- package/site-templates/shapes/local-business-service/TEMPLATE-MANIFEST.md +356 -0
- package/site-templates/shapes/local-business-service/ailk-template.json +10 -0
- package/site-templates/{simple-service → shapes/local-business-service}/content/en/AboutPage/about.mdx +4 -4
- package/site-templates/shapes/local-business-service/content/en/HomePage/home.mdx +70 -0
- package/site-templates/shapes/local-business-service/content/en/NewsletterSignup/newsletter.mdx +59 -0
- package/site-templates/shapes/local-business-service/content/en/PortfolioList/portfolio.mdx +171 -0
- package/site-templates/{minimalism-site → shapes/local-business-service}/content/en/PurchasePolicyPage/purchase-policy.mdx +7 -8
- package/site-templates/shapes/local-business-service/content/en/Service/first-job.mdx +39 -0
- package/site-templates/shapes/local-business-service/content/en/Service/second-job.mdx +39 -0
- package/site-templates/shapes/local-business-service/content/en/Service/third-job.mdx +39 -0
- package/site-templates/shapes/local-business-service/content/en/ServicesList/services.mdx +61 -0
- package/site-templates/shapes/local-business-service/provenance.json +4 -0
- package/site-templates/shapes/organization-service/TEMPLATE-MANIFEST.json +471 -0
- package/site-templates/shapes/organization-service/TEMPLATE-MANIFEST.md +354 -0
- package/site-templates/shapes/organization-service/ailk-template.json +10 -0
- package/site-templates/shapes/organization-service/content/en/AboutPage/about.mdx +38 -0
- package/site-templates/shapes/organization-service/content/en/HomePage/home.mdx +85 -0
- package/site-templates/shapes/organization-service/content/en/NewsletterSignup/newsletter.mdx +59 -0
- package/site-templates/shapes/organization-service/content/en/PortfolioList/portfolio.mdx +171 -0
- package/site-templates/shapes/organization-service/content/en/PurchasePolicyPage/purchase-policy.mdx +123 -0
- package/site-templates/{minimalism-site → shapes/organization-service}/content/en/ServicesList/services.mdx +3 -4
- package/site-templates/shapes/organization-service/provenance.json +4 -0
- package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.json +478 -0
- package/site-templates/shapes/person-service/TEMPLATE-MANIFEST.md +353 -0
- package/site-templates/shapes/person-service/ailk-template.json +10 -0
- package/site-templates/shapes/person-service/content/_site.mdx +85 -0
- package/site-templates/shapes/person-service/content/en/AboutPage/about.mdx +39 -0
- package/site-templates/shapes/person-service/content/en/HomePage/home.mdx +97 -0
- package/site-templates/shapes/person-service/content/en/NewsletterSignup/newsletter.mdx +59 -0
- package/site-templates/shapes/person-service/content/en/PortfolioList/portfolio.mdx +171 -0
- package/site-templates/{simple-service → shapes/person-service}/content/en/PurchasePolicyPage/purchase-policy.mdx +10 -11
- package/site-templates/shapes/person-service/content/en/Service/first-engagement.mdx +38 -0
- package/site-templates/shapes/person-service/content/en/Service/second-engagement.mdx +38 -0
- package/site-templates/shapes/person-service/content/en/Service/third-engagement.mdx +38 -0
- package/site-templates/{simple-service → shapes/person-service}/content/en/ServicesList/services.mdx +16 -16
- package/site-templates/shapes/person-service/provenance.json +4 -0
- package/templates/.claude/rules/architecture.md +7 -0
- package/templates/.claude/skills/README.md +5 -3
- package/templates/.claude/skills/add-auth/references/env-vars.md +22 -15
- package/templates/.claude/skills/add-auth/references/oauth-app-setup.md +3 -2
- package/templates/.claude/skills/add-page/SKILL.md +241 -238
- package/templates/.claude/skills/add-page/references/page-types.md +85 -72
- package/templates/.claude/skills/add-page/scripts/site-pages.mjs +87 -0
- package/templates/.claude/skills/add-page/templates/comparison-page.mdx.tmpl +99 -0
- package/templates/.claude/skills/add-page/templates/content.mdx.tmpl +8 -18
- package/templates/.claude/skills/add-page/templates/flow-landing-page.mdx.tmpl +43 -0
- package/templates/.claude/skills/add-page/templates/report-page.mdx.tmpl +52 -0
- package/templates/.claude/skills/add-page/templates/reports-list.mdx.tmpl +38 -0
- package/templates/.claude/skills/check-site/SKILL.md +23 -0
- package/templates/.claude/skills/fill-page/SKILL.md +26 -7
- package/templates/.claude/skills/fill-page/profiles/plumbing.yaml +1 -1
- package/templates/.claude/skills/setup-database/SKILL.md +156 -0
- package/templates/.claude/skills/setup-database/scripts/verify-inbox.ts +154 -0
- package/templates/.claude/skills/setup-deploy/SKILL.md +64 -32
- package/templates/.claude/skills/setup-deploy/references/env-vars-template.md +44 -36
- package/templates/.claude/skills/setup-deploy/references/runbook-template.md +58 -102
- package/templates/.claude/skills/update-page/SKILL.md +117 -0
- package/templates/.claude/skills/update-page/scripts/update-page.ts +640 -0
- package/templates/.claude/skills/update-page/templates/redirects.mjs.tmpl +31 -0
- package/templates/.claude/skills/upgrade-plan/SKILL.md +12 -8
- package/templates/.github/workflows/ci.yml +4 -0
- package/templates/.prettierignore +1 -0
- package/templates/CLAUDE.md +146 -103
- package/templates/DESIGN.md +103 -6
- package/templates/README.md +63 -43
- package/templates/apps/api/.env.example +2 -1
- package/templates/apps/api/CLAUDE.md +3 -2
- package/templates/apps/api/src/__tests__/commerce-claim-registration.test.ts +2 -0
- package/templates/apps/api/src/__tests__/server.test.ts +116 -0
- package/templates/apps/api/src/config/__tests__/index.test.ts +115 -14
- package/templates/apps/api/src/config/index.ts +35 -16
- package/templates/apps/api/src/lib/__tests__/lead-capture-store.test.ts +30 -0
- package/templates/apps/api/src/lib/__tests__/lead-delivery.test.ts +96 -0
- package/templates/apps/api/src/lib/lead-capture-store.ts +12 -0
- package/templates/apps/api/src/lib/lead-delivery.ts +52 -0
- package/templates/apps/api/src/lib/stripe.ts +9 -0
- package/templates/apps/api/src/middleware/__tests__/auth.optional-cookie.test.ts +140 -0
- package/templates/apps/api/src/middleware/auth.ts +54 -0
- package/templates/apps/api/src/openapi/spec.ts +63 -12
- package/templates/apps/api/src/routes/checkout/__tests__/session.test.ts +5 -2
- package/templates/apps/api/src/routes/checkout/__tests__/sessions.test.ts +628 -0
- package/templates/apps/api/src/routes/checkout/sessions.ts +222 -24
- package/templates/apps/api/src/routes/leads/__tests__/capture.test.ts +88 -0
- package/templates/apps/api/src/routes/leads/__tests__/index.test.ts +100 -0
- package/templates/apps/api/src/routes/leads/index.ts +46 -1
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-flow-checkout.test.ts +1 -1
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe-org-billing.test.ts +5 -1
- package/templates/apps/api/src/routes/webhooks/__tests__/stripe.test.ts +521 -20
- package/templates/apps/api/src/routes/webhooks/stripe.ts +124 -32
- package/templates/apps/api/src/server.ts +35 -0
- package/templates/apps/api/src/services/__tests__/lead-routing.test.ts +194 -0
- package/templates/apps/api/src/services/__tests__/leads-inbox.test.ts +124 -0
- package/templates/apps/api/src/services/__tests__/revalidation.test.ts +90 -15
- package/templates/apps/api/src/services/checkout-buyer.ts +72 -0
- package/templates/apps/api/src/services/lead-routing.ts +140 -30
- package/templates/apps/api/src/services/leads-inbox.ts +48 -11
- package/templates/apps/api/src/services/revalidation.ts +60 -15
- package/templates/apps/mcp/__tests__/parity.test.ts +5 -4
- package/templates/apps/mcp/__tests__/tools/create_project.test.ts +30 -24
- package/templates/apps/mcp/src/tools/create_project.ts +21 -6
- package/templates/apps/mcp/src/tools/purchase.ts +4 -2
- package/templates/apps/web/.env.example +13 -0
- package/templates/apps/web/CLAUDE.md +22 -28
- package/templates/apps/web/app/[locale]/(auth)/layout.tsx +1 -1
- package/templates/apps/web/app/[locale]/(authed)/leads/__tests__/page.test.tsx +24 -0
- package/templates/apps/web/app/[locale]/(authed)/leads/page.tsx +17 -6
- package/templates/apps/web/app/[locale]/[slug]/[detail]/__tests__/page.test.tsx +110 -0
- package/templates/apps/web/app/[locale]/[slug]/[detail]/page.tsx +60 -0
- package/templates/apps/web/app/[locale]/[slug]/page.tsx +1 -1
- package/templates/apps/web/app/[locale]/alternatives/__tests__/page.test.tsx +161 -0
- package/templates/apps/web/app/[locale]/alternatives/page.tsx +104 -0
- package/templates/apps/web/app/[locale]/contact/ConversationalIntakeWrapper.tsx +14 -6
- package/templates/apps/web/app/[locale]/contact/__tests__/ConversationalIntakeWrapper.test.tsx +10 -9
- package/templates/apps/web/app/[locale]/contact/__tests__/contact-form-text.test.ts +32 -0
- package/templates/apps/web/app/[locale]/contact/__tests__/contact.actions.test.ts +129 -0
- package/templates/apps/web/app/[locale]/contact/__tests__/page-renderer-migration.test.tsx +227 -84
- package/templates/apps/web/app/[locale]/contact/contact-form-text.ts +50 -0
- package/templates/apps/web/app/[locale]/contact/contact.actions.ts +73 -20
- package/templates/apps/web/app/[locale]/contact/page.tsx +105 -15
- package/templates/apps/web/app/[locale]/contact/site-contact-email.ts +54 -0
- package/templates/apps/web/app/[locale]/features/[slug]/page.tsx +64 -0
- package/templates/apps/web/app/[locale]/features/page.tsx +52 -0
- package/templates/apps/web/app/[locale]/{use-cases → for}/[slug]/page.tsx +21 -5
- package/templates/apps/web/app/[locale]/for/__tests__/page-renderer-migration.test.tsx +73 -0
- package/templates/apps/web/app/[locale]/{use-cases → for}/page.tsx +8 -7
- package/templates/apps/web/app/[locale]/glossary/page.tsx +1 -1
- package/templates/apps/web/app/[locale]/layout.tsx +65 -17
- package/templates/apps/web/app/[locale]/newsletter/__tests__/newsletter.actions.test.ts +75 -0
- package/templates/apps/web/app/[locale]/newsletter/__tests__/page.test.tsx +163 -0
- package/templates/apps/web/app/[locale]/newsletter/newsletter.actions.ts +66 -0
- package/templates/apps/web/app/[locale]/newsletter/page.tsx +106 -14
- package/templates/apps/web/app/[locale]/portfolio/[slug]/page.tsx +59 -0
- package/templates/apps/web/app/[locale]/{book-a-call → portfolio}/page.tsx +12 -13
- package/templates/apps/web/app/[locale]/vs/[slug]/__tests__/page.test.tsx +112 -0
- package/templates/apps/web/app/[locale]/vs/[slug]/page.tsx +70 -0
- package/templates/apps/web/app/api/revalidate/__tests__/route.test.ts +236 -44
- package/templates/apps/web/app/api/revalidate/route.ts +78 -36
- package/templates/apps/web/lib/__tests__/site-brand.test.ts +79 -0
- package/templates/apps/web/lib/__tests__/site-theme.test.ts +104 -11
- package/templates/apps/web/lib/__tests__/structured-data.test.tsx +21 -4
- package/templates/apps/web/lib/locale-guard.ts +18 -0
- package/templates/apps/web/lib/meet-placeholder.ts +5 -0
- package/templates/apps/web/lib/nav-config.ts +50 -37
- package/templates/apps/web/lib/site-brand.tsx +13 -9
- package/templates/apps/web/lib/site-identity.ts +14 -0
- package/templates/apps/web/lib/site-logo.tsx +36 -0
- package/templates/apps/web/lib/site-theme.ts +46 -26
- package/templates/apps/web/messages/en.json +45 -5
- package/templates/apps/web/middleware.ts +28 -4
- package/templates/content/_site.mdx +4 -2
- package/templates/content/en/BlogList/blog.mdx +37 -16
- package/templates/content/en/BookCall/book-a-call.mdx +80 -0
- package/templates/content/en/BookCall/onsite-estimate.mdx +56 -0
- package/templates/content/en/BookCall/onsite-service.mdx +56 -0
- package/templates/content/en/BookCall/start-project.mdx +56 -0
- package/templates/content/en/ContactPage/contact.mdx +43 -34
- package/templates/content/en/HomePage/home.mdx +10 -22
- package/templates/content/en/LandingPage/meet.mdx +59 -0
- package/templates/content/en/PurchasePolicyPage/purchase-policy.mdx +0 -1
- package/templates/content/en/UseCasesList/{use-cases.mdx → for.mdx} +19 -18
- package/templates/database/CHANGELOG.md +14 -0
- package/templates/database/package.json +1 -1
- package/templates/package.json +2 -1
- package/templates/tools/check-claude-md.ts +128 -0
- package/versions.json +33 -33
- package/site-templates/_base/content/en/BookCall/book-call.mdx +0 -53
- package/site-templates/_base/content/en/UseCase/first-use-case.mdx +0 -23
- package/site-templates/_base/content/en/UseCase/second-use-case.mdx +0 -23
- package/site-templates/_base/content/en/UseCase/third-use-case.mdx +0 -23
- package/site-templates/minimalism-site/DESIGN.md +0 -162
- package/site-templates/minimalism-site/TEMPLATE-MANIFEST.md +0 -470
- package/site-templates/minimalism-site/ailk-template.json +0 -23
- package/site-templates/minimalism-site/content/en/AboutPage/about.mdx +0 -110
- package/site-templates/minimalism-site/content/en/BookCall/book-call.mdx +0 -53
- package/site-templates/minimalism-site/content/en/ContactPage/contact.mdx +0 -34
- package/site-templates/minimalism-site/content/en/FAQPage/faq.mdx +0 -57
- package/site-templates/minimalism-site/content/en/LandingPage/referral.mdx +0 -77
- package/site-templates/minimalism-site/content/en/LandingPage/reports.mdx +0 -73
- package/site-templates/minimalism-site/content/en/ReportPage/annual-letter-2024.mdx +0 -52
- package/site-templates/minimalism-site/content/en/ReportPage/field-notes-2023.mdx +0 -52
- package/site-templates/minimalism-site/content/en/ReportPage/platform-shift-2025.mdx +0 -52
- package/site-templates/minimalism-site/content/en/ReportPage/state-of-the-market-2026.mdx +0 -52
- package/site-templates/minimalism-site/flows/referral.flow.json +0 -71
- package/site-templates/minimalism-site/provenance.json +0 -4
- package/site-templates/simple-service/DESIGN.md +0 -162
- package/site-templates/simple-service/TEMPLATE-MANIFEST.md +0 -333
- package/site-templates/simple-service/ailk-template.json +0 -11
- package/site-templates/simple-service/content/en/BookCall/book-call.mdx +0 -53
- package/site-templates/simple-service/content/en/ContactPage/contact.mdx +0 -32
- package/site-templates/simple-service/content/en/FAQPage/faq.mdx +0 -56
- package/site-templates/simple-service/content/en/HomePage/home.mdx +0 -85
- package/site-templates/simple-service/content/en/Service/landscape-design.mdx +0 -40
- package/site-templates/simple-service/content/en/Service/lawn-maintenance.mdx +0 -40
- package/site-templates/simple-service/content/en/Service/seasonal-cleanup.mdx +0 -40
- package/site-templates/simple-service/provenance.json +0 -4
- package/templates/.claude/skills/add-page/templates/route.tsx.tmpl +0 -28
- package/templates/apps/web/app/[locale]/contact/ContactForm.tsx +0 -211
- package/templates/apps/web/app/[locale]/contact/__tests__/ContactForm.test.tsx +0 -96
- package/templates/apps/web/app/[locale]/use-cases/__tests__/page-renderer-migration.test.tsx +0 -72
- package/templates/content/en/SoftwareProduct/product.mdx +0 -175
- /package/site-templates/{minimalism-site → designs/minimalism/sample}/content/en/HomePage/home.mdx +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-1.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-2.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-3.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-4.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-5.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/avatar-placeholder-6.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/hero-backdrop.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/logo-placeholder-1.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/logo-placeholder-2.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/logo-placeholder-3.svg +0 -0
- /package/site-templates/{minimalism-site/assets → designs/minimalism/sample/public}/wordmark-placeholder.svg +0 -0
- /package/site-templates/{minimalism-site → shapes/organization-service}/content/en/Service/first-engagement.mdx +0 -0
- /package/site-templates/{minimalism-site → shapes/organization-service}/content/en/Service/second-engagement.mdx +0 -0
- /package/site-templates/{minimalism-site → shapes/organization-service}/content/en/Service/third-engagement.mdx +0 -0
|
@@ -73,15 +73,19 @@ export interface PageRosterRow {
|
|
|
73
73
|
/**
|
|
74
74
|
* The architecture fragment one module contributes.
|
|
75
75
|
*
|
|
76
|
-
* `apps/web`
|
|
77
|
-
* extends
|
|
78
|
-
* rather than redeclaring it
|
|
79
|
-
* and top-level forbidden patterns
|
|
76
|
+
* `apps/web`, `apps/api` and `apps/mcp` are BASE — always present. A module
|
|
77
|
+
* extends apps/web via `webImports` (added to `apps/web.may_import_from`)
|
|
78
|
+
* rather than redeclaring it; an `apps` entry replaces a base api/mcp block or
|
|
79
|
+
* adds an app (admin). Packages, namespaces and top-level forbidden patterns
|
|
80
|
+
* are contributed outright. `webImports`, `packages` and every `packages/*`
|
|
81
|
+
* entry describe this monorepo's boundaries: a scaffold has no `packages/`
|
|
82
|
+
* tree, so `deriveArchitecture` keeps only the entries naming a path the
|
|
83
|
+
* scaffold carries (#6940).
|
|
80
84
|
*/
|
|
81
85
|
export interface ModuleSlice {
|
|
82
86
|
/** Packages this module adds to apps/web.may_import_from (its presentation surface). */
|
|
83
87
|
webImports?: string[];
|
|
84
|
-
/**
|
|
88
|
+
/** Apps this module declares (api, mcp replace the base block; admin is new). web is BASE, never here. */
|
|
85
89
|
apps?: Record<string, ArchApp>;
|
|
86
90
|
/** Packages this module contributes. */
|
|
87
91
|
packages?: Record<string, ArchPackage>;
|
|
@@ -308,33 +312,32 @@ export interface AddTransformOp {
|
|
|
308
312
|
value: string;
|
|
309
313
|
}
|
|
310
314
|
/**
|
|
311
|
-
* The module-independent base:
|
|
312
|
-
*
|
|
313
|
-
*
|
|
315
|
+
* The module-independent base: the three apps every scaffold ships on disk
|
|
316
|
+
* (`apps/web`, `apps/api`, `apps/mcp` — template-overlay/apps carries all
|
|
317
|
+
* three whatever the module set, #6940) plus the standalone forbidden-pattern
|
|
318
|
+
* floor. apps/web's `may_import_from` starts EMPTY — the selected modules fill
|
|
319
|
+
* it via `webImports`; a module that declares `api`/`mcp` replaces the base
|
|
320
|
+
* block with its own.
|
|
314
321
|
*/
|
|
315
322
|
export declare const ARCHITECTURE_BASE: {
|
|
316
323
|
readonly version: 1;
|
|
317
324
|
readonly composition_model: {
|
|
318
|
-
readonly reference: "claude-setup rules/need-to-know.md § Vocabulary (Module / Surface)";
|
|
319
325
|
readonly tiers: {
|
|
320
326
|
readonly data: "database/ — Prisma schema + migrations";
|
|
321
327
|
readonly api: "apps/api (public HTTP API) + apps/mcp (agent tools)";
|
|
322
328
|
readonly presentation: "apps/web — frontend surfaces";
|
|
323
329
|
};
|
|
324
330
|
};
|
|
331
|
+
/** Every declared app's own forbidden patterns (merged ahead of any the app adds). */
|
|
332
|
+
readonly appForbiddenPatterns: ForbiddenPattern[];
|
|
325
333
|
/** The base apps/web shell. may_import_from is filled from the selected modules' webImports. */
|
|
326
334
|
readonly web: {
|
|
327
335
|
readonly path: "apps/web";
|
|
328
336
|
readonly description: "Next.js — presentation tier. Frontend surfaces composed from the selected modules.";
|
|
329
337
|
readonly may_not_import_from: readonly ["apps/api", "apps/mcp"];
|
|
330
|
-
readonly forbidden_patterns: readonly [{
|
|
331
|
-
readonly pattern: string;
|
|
332
|
-
readonly reason: "A scaffolded AILK site is standalone — no upstream-monorepo imports";
|
|
333
|
-
}, {
|
|
334
|
-
readonly pattern: "@alkit/";
|
|
335
|
-
readonly reason: "Renamed to @working-theory/* on extraction";
|
|
336
|
-
}];
|
|
337
338
|
};
|
|
339
|
+
/** The base apps/api and apps/mcp — present in every scaffold (#6940). */
|
|
340
|
+
readonly apps: Record<string, ArchApp>;
|
|
338
341
|
/** Standalone-site forbidden-pattern floor (top-level, always present). */
|
|
339
342
|
readonly forbiddenPatterns: ForbiddenPattern[];
|
|
340
343
|
};
|
|
@@ -83,35 +83,59 @@ const PUBLIC_SCHEDULING_VAR_PATTERN = [
|
|
|
83
83
|
*/
|
|
84
84
|
const STRIPE_LIVE_KEY_PATTERN = ["(sk|pk|rk)_li", "ve_[A-Za-z0-9]"].join("");
|
|
85
85
|
/**
|
|
86
|
-
* The
|
|
87
|
-
*
|
|
88
|
-
*
|
|
86
|
+
* The per-app forbidden-pattern floor every declared app carries — so each app
|
|
87
|
+
* a scaffold ships has its own rule in `architecture.yaml`, not only the
|
|
88
|
+
* top-level floor below.
|
|
89
|
+
*/
|
|
90
|
+
const APP_FORBIDDEN_FLOOR = [
|
|
91
|
+
{
|
|
92
|
+
pattern: NO_UPSTREAM_IMPORT_PATTERN,
|
|
93
|
+
reason: "A scaffolded AILK site is standalone — no upstream-monorepo imports",
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
pattern: "@alkit/",
|
|
97
|
+
reason: "Renamed to @working-theory/* on extraction",
|
|
98
|
+
},
|
|
99
|
+
];
|
|
100
|
+
/**
|
|
101
|
+
* The module-independent base: the three apps every scaffold ships on disk
|
|
102
|
+
* (`apps/web`, `apps/api`, `apps/mcp` — template-overlay/apps carries all
|
|
103
|
+
* three whatever the module set, #6940) plus the standalone forbidden-pattern
|
|
104
|
+
* floor. apps/web's `may_import_from` starts EMPTY — the selected modules fill
|
|
105
|
+
* it via `webImports`; a module that declares `api`/`mcp` replaces the base
|
|
106
|
+
* block with its own.
|
|
89
107
|
*/
|
|
90
108
|
export const ARCHITECTURE_BASE = {
|
|
91
109
|
version: 1,
|
|
92
110
|
composition_model: {
|
|
93
|
-
reference: "claude-setup rules/need-to-know.md § Vocabulary (Module / Surface)",
|
|
94
111
|
tiers: {
|
|
95
112
|
data: "database/ — Prisma schema + migrations",
|
|
96
113
|
api: "apps/api (public HTTP API) + apps/mcp (agent tools)",
|
|
97
114
|
presentation: "apps/web — frontend surfaces",
|
|
98
115
|
},
|
|
99
116
|
},
|
|
117
|
+
/** Every declared app's own forbidden patterns (merged ahead of any the app adds). */
|
|
118
|
+
appForbiddenPatterns: APP_FORBIDDEN_FLOOR,
|
|
100
119
|
/** The base apps/web shell. may_import_from is filled from the selected modules' webImports. */
|
|
101
120
|
web: {
|
|
102
121
|
path: "apps/web",
|
|
103
122
|
description: "Next.js — presentation tier. Frontend surfaces composed from the selected modules.",
|
|
104
123
|
may_not_import_from: ["apps/api", "apps/mcp"],
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
124
|
+
},
|
|
125
|
+
/** The base apps/api and apps/mcp — present in every scaffold (#6940). */
|
|
126
|
+
apps: {
|
|
127
|
+
api: {
|
|
128
|
+
path: "apps/api",
|
|
129
|
+
description: "Public HTTP API — routes + services (Fastify).",
|
|
130
|
+
may_import_from: ["database"],
|
|
131
|
+
may_not_import_from: ["apps/mcp", "apps/web"],
|
|
132
|
+
},
|
|
133
|
+
mcp: {
|
|
134
|
+
path: "apps/mcp",
|
|
135
|
+
description: "MCP server — agent-facing tools. Calls apps/api for writes.",
|
|
136
|
+
may_import_from: ["database"],
|
|
137
|
+
may_not_import_from: ["apps/api", "apps/web"],
|
|
138
|
+
},
|
|
115
139
|
},
|
|
116
140
|
/** Standalone-site forbidden-pattern floor (top-level, always present). */
|
|
117
141
|
forbiddenPatterns: [
|
|
@@ -595,12 +619,12 @@ export const MODULE_SLICES = {
|
|
|
595
619
|
{
|
|
596
620
|
pattern: "import.*['\"]stripe['\"]",
|
|
597
621
|
paths_excluded: ["packages/stripe-client/**"],
|
|
598
|
-
reason: "Stripe SDK imports go through
|
|
622
|
+
reason: "Stripe SDK imports go through @working-theory/stripe-client only — single point of config",
|
|
599
623
|
},
|
|
600
624
|
{
|
|
601
625
|
pattern: "import.*['\"]resend['\"]|['\"]nodemailer['\"]",
|
|
602
626
|
paths_excluded: ["packages/email/**"],
|
|
603
|
-
reason: "Email provider SDKs go through
|
|
627
|
+
reason: "Email provider SDKs go through @working-theory/email — provider swap is a one-package change",
|
|
604
628
|
},
|
|
605
629
|
],
|
|
606
630
|
// ownedFiles (S1, #5088). Verified against the current filesystem and
|
|
@@ -1413,6 +1437,9 @@ export const MODULE_SLICES = {
|
|
|
1413
1437
|
// upgrade-path fixture to protect either — it is net-new here, so nothing
|
|
1414
1438
|
// in `templates/` can regress by its absence.
|
|
1415
1439
|
"apps/web/app/[locale]/reports/[slug]/page.tsx",
|
|
1440
|
+
// spec 6892 D2 — the /reports hub, alongside its reader above: also a
|
|
1441
|
+
// URL segment MODULE_SURFACES["signal-collectors"] does not gate.
|
|
1442
|
+
"apps/web/app/[locale]/reports/page.tsx",
|
|
1416
1443
|
//
|
|
1417
1444
|
// The two sections that route composes — `report-header` and
|
|
1418
1445
|
// `reports-list` — are deliberately NOT owned here. They are
|
|
@@ -1446,11 +1473,13 @@ export const MODULE_SLICES = {
|
|
|
1446
1473
|
// #5562 — the report reader. Unlike the three rows above, this row's
|
|
1447
1474
|
// code IS this module's own `ownedFiles` (see the note beside it), so
|
|
1448
1475
|
// the contribution and the delivery shape carrying it agree here. Its
|
|
1449
|
-
// seeds are
|
|
1450
|
-
//
|
|
1476
|
+
// seeds are SELF-SEEDING (spec 6892 D3): this module's own `installMap`
|
|
1477
|
+
// lands the four `ReportPage` samples below, so every template taking
|
|
1478
|
+
// the module gets them — `moduleRosterRows` derives the code-route form
|
|
1479
|
+
// for this row rather than requiring a template to ship one (D9).
|
|
1451
1480
|
{ route: "/reports/[slug]", contentDir: "content/en/ReportPage" },
|
|
1452
1481
|
],
|
|
1453
|
-
// installMap (#5618 D6.3) — the module's
|
|
1482
|
+
// installMap (#5618 D6.3) — the module's sample files, moved here out
|
|
1454
1483
|
// of `site-templates/marketing-site/` so the module OWNS its samples
|
|
1455
1484
|
// (Rule B) and a keyed `--modules signal-collectors` scaffold with no
|
|
1456
1485
|
// template lands them. Their in-repo home is
|
|
@@ -1463,12 +1492,19 @@ export const MODULE_SLICES = {
|
|
|
1463
1492
|
// `module-templates/` the two never meet.
|
|
1464
1493
|
//
|
|
1465
1494
|
// Four entries are real renames (the flow and waitlist seeds the API
|
|
1466
|
-
// reads, and the report PDF under apps/web/public/); the
|
|
1495
|
+
// reads, and the report PDF under apps/web/public/); the ten MDX entries
|
|
1467
1496
|
// are self-addressed. Their `/projects`, `/projects/[slug]` and
|
|
1468
1497
|
// `/thanks/[slug]` rows are declared by the templates that install them
|
|
1469
1498
|
// (`template-manifest.ts`'s signal-collectors sample rows, #6646), not
|
|
1470
1499
|
// here — a module contribution would change the enabled-surface set and
|
|
1471
|
-
// so the Pro scaffold's file set (spec 5618 § 7 finding 7).
|
|
1500
|
+
// so the Pro scaffold's file set (spec 5618 § 7 finding 7). The four
|
|
1501
|
+
// `ReportPage` seeds and the `ReportsList` hub seed are the one exception
|
|
1502
|
+
// (spec 6892 D3): their `/reports/[slug]` and `/reports` rows ARE this
|
|
1503
|
+
// module's own `pageContributions`/`starter-grid.ts` rows respectively,
|
|
1504
|
+
// so this module installs its own seeds for them directly, unlike the
|
|
1505
|
+
// sample rows above. `/referral`'s seed and flow move here the same way,
|
|
1506
|
+
// moved out of the retired `minimalism-site` tree (spec 6892 D3), which
|
|
1507
|
+
// owned no code of its own for either route.
|
|
1472
1508
|
// `generate-sample-report.py` keeps its root-level destination
|
|
1473
1509
|
// (finding 1 — AC7 forbids changing the Pro file set).
|
|
1474
1510
|
installMap: {
|
|
@@ -1478,7 +1514,14 @@ export const MODULE_SLICES = {
|
|
|
1478
1514
|
"packages/create-ailk/module-templates/signal-collectors/content/en/ThankYouPage/contact.mdx": "content/en/ThankYouPage/contact.mdx",
|
|
1479
1515
|
"packages/create-ailk/module-templates/signal-collectors/content/en/ThankYouPage/newsletter.mdx": "content/en/ThankYouPage/newsletter.mdx",
|
|
1480
1516
|
"packages/create-ailk/module-templates/signal-collectors/content/en/ThankYouPage/apply.mdx": "content/en/ThankYouPage/apply.mdx",
|
|
1517
|
+
"packages/create-ailk/module-templates/signal-collectors/content/en/ReportPage/annual-letter-2024.mdx": "content/en/ReportPage/annual-letter-2024.mdx",
|
|
1518
|
+
"packages/create-ailk/module-templates/signal-collectors/content/en/ReportPage/field-notes-2023.mdx": "content/en/ReportPage/field-notes-2023.mdx",
|
|
1519
|
+
"packages/create-ailk/module-templates/signal-collectors/content/en/ReportPage/platform-shift-2025.mdx": "content/en/ReportPage/platform-shift-2025.mdx",
|
|
1520
|
+
"packages/create-ailk/module-templates/signal-collectors/content/en/ReportPage/state-of-the-market-2026.mdx": "content/en/ReportPage/state-of-the-market-2026.mdx",
|
|
1521
|
+
"packages/create-ailk/module-templates/signal-collectors/content/en/ReportsList/reports.mdx": "content/en/ReportsList/reports.mdx",
|
|
1522
|
+
"packages/create-ailk/module-templates/signal-collectors/content/en/LandingPage/referral.mdx": "content/en/LandingPage/referral.mdx",
|
|
1481
1523
|
"packages/create-ailk/module-templates/signal-collectors/flows/fit-check.flow.json": "database/flows/fit-check.flow.json",
|
|
1524
|
+
"packages/create-ailk/module-templates/signal-collectors/flows/referral.flow.json": "database/flows/referral.flow.json",
|
|
1482
1525
|
"packages/create-ailk/module-templates/signal-collectors/waitlist/launch-waitlist.experiment.json": "database/waitlist/launch-waitlist.experiment.json",
|
|
1483
1526
|
"packages/create-ailk/module-templates/signal-collectors/reports/sample-report.pdf": "apps/web/public/reports/sample-report.pdf",
|
|
1484
1527
|
"packages/create-ailk/module-templates/signal-collectors/reports/generate-sample-report.py": "reports/generate-sample-report.py",
|
package/dist/parse-args.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ScaffoldOptions } from "./programmatic.js";
|
|
1
2
|
/**
|
|
2
3
|
* The recognized module vocabulary for the `--modules` selector.
|
|
3
4
|
*
|
|
@@ -9,23 +10,56 @@
|
|
|
9
10
|
*/
|
|
10
11
|
export declare const RECOGNIZED_MODULES: readonly ["marketing", "docs-blog", "multi-tenant", "workspace", "scheduling", "signal-collectors", "commerce"];
|
|
11
12
|
export type ModuleName = (typeof RECOGNIZED_MODULES)[number];
|
|
13
|
+
/**
|
|
14
|
+
* Shapes a starter can be built from today (`--shape`, #6754 D1).
|
|
15
|
+
*
|
|
16
|
+
* Declared HERE rather than imported from `template-manifest.ts` for the
|
|
17
|
+
* reason `RECOGNIZED_MODULES` is: importing the registry closes the runtime
|
|
18
|
+
* cycle `template-names.ts`'s header records. `parse-args.test.ts` pins this
|
|
19
|
+
* list, `RESERVED_SHAPES` and `RECOGNIZED_DESIGNS` to their authorities
|
|
20
|
+
* (`STARTER_SHAPES`, `STARTER_DESIGNS`, `SHAPE_ROSTERS`).
|
|
21
|
+
*/
|
|
22
|
+
export declare const RECOGNIZED_SHAPES: readonly ["organization-product", "organization-service", "local-business-service", "person-service"];
|
|
23
|
+
export type ShapeName = (typeof RECOGNIZED_SHAPES)[number];
|
|
24
|
+
/** Shapes the contract names but no release builds yet. */
|
|
25
|
+
export declare const RESERVED_SHAPES: readonly ["local-business-product"];
|
|
26
|
+
/** The `--design` vocabulary (#6754 D1) — `STARTER_DESIGNS`, pinned by test. */
|
|
27
|
+
export declare const RECOGNIZED_DESIGNS: readonly ["standard", "minimalism"];
|
|
28
|
+
export type DesignName = (typeof RECOGNIZED_DESIGNS)[number];
|
|
12
29
|
export interface CliOptions {
|
|
13
30
|
/** Positional target directory (the dir to scaffold into). Optional only
|
|
14
31
|
* when `help` or `version` is set. */
|
|
15
32
|
target: string | undefined;
|
|
16
33
|
/**
|
|
17
34
|
* The site template to install (`--template`), validated against
|
|
18
|
-
* `RECOGNIZED_TEMPLATES` at parse time. Undefined when the flag is absent
|
|
19
|
-
*
|
|
20
|
-
*
|
|
35
|
+
* `RECOGNIZED_TEMPLATES` at parse time. Undefined when the flag is absent.
|
|
36
|
+
* The CLI never scaffolds a run naming neither a template nor a shape
|
|
37
|
+
* (#6754 D2 — refusal R1, or the shape prompt on a terminal).
|
|
21
38
|
*/
|
|
22
39
|
template: string | undefined;
|
|
40
|
+
/** The starter's shape (`--shape`, #6754), normalized. Never set with `template`. */
|
|
41
|
+
shape?: ShapeName;
|
|
42
|
+
/**
|
|
43
|
+
* The starter's design (`--design`, #6754; widened to a path #6813 D1/D3):
|
|
44
|
+
* a recognized name, lowercased, or an absolute directory holding a
|
|
45
|
+
* `DESIGN.md`, case preserved. Never set with `template`.
|
|
46
|
+
*/
|
|
47
|
+
design?: string;
|
|
48
|
+
/**
|
|
49
|
+
* True when a scaffold run named neither `--shape` nor `--template` on a
|
|
50
|
+
* terminal: `resolveCliShape` must ask before anything is scaffolded.
|
|
51
|
+
*/
|
|
52
|
+
needsShapePrompt: boolean;
|
|
23
53
|
install: boolean;
|
|
24
54
|
help: boolean;
|
|
25
55
|
version: boolean;
|
|
26
|
-
/**
|
|
27
|
-
*
|
|
28
|
-
|
|
56
|
+
/**
|
|
57
|
+
* Selected modules (recognized: marketing, docs-blog, multi-tenant,
|
|
58
|
+
* scheduling). `undefined` when `--modules` is absent — the key's level
|
|
59
|
+
* decides (#6759 D3); never read as `['marketing']` here. An empty or
|
|
60
|
+
* all-empty `--modules` value still names the Free set (`parseModules`).
|
|
61
|
+
*/
|
|
62
|
+
modules: string[] | undefined;
|
|
29
63
|
/** Explicitly requested route surfaces (`--surfaces`). Empty when the flag is
|
|
30
64
|
* absent — the module set alone then decides (see surfaces.ts
|
|
31
65
|
* `resolveSurfaces`). Validated, lowercased, deduped and sorted. */
|
|
@@ -36,6 +70,12 @@ export interface CliOptions {
|
|
|
36
70
|
* `--sync-architecture`: data-only, one file, an already-scaffolded target.
|
|
37
71
|
*/
|
|
38
72
|
syncCatalog: boolean;
|
|
73
|
+
/**
|
|
74
|
+
* When set, rewrite the template-owned sections of the target's CLAUDE.md
|
|
75
|
+
* to the template this create-ailk ships and exit (#6904). The same sync
|
|
76
|
+
* shape: one file, an already-scaffolded target.
|
|
77
|
+
*/
|
|
78
|
+
syncClaudeMd: boolean;
|
|
39
79
|
/**
|
|
40
80
|
* When set, a fresh scaffold ALSO gets COMPONENT-CATALOG.md. Off by default
|
|
41
81
|
* so a scaffold that does not ask for the catalog is byte-identical to the
|
|
@@ -58,16 +98,54 @@ export interface CliOptions {
|
|
|
58
98
|
export declare class ParseError extends Error {
|
|
59
99
|
constructor(message: string);
|
|
60
100
|
}
|
|
101
|
+
/** The caller's terminal state (#6754 D2). */
|
|
102
|
+
export interface ParseEnv {
|
|
103
|
+
/** A human can answer a prompt: `process.stdin.isTTY === true` in cli.ts. */
|
|
104
|
+
interactive: boolean;
|
|
105
|
+
}
|
|
61
106
|
export declare const helpText: string;
|
|
62
|
-
|
|
107
|
+
/**
|
|
108
|
+
* Parse `create-ailk` argv. `env.interactive` defaults to false —
|
|
109
|
+
* fail-closed: a caller that does not assert a human is present gets refusal
|
|
110
|
+
* R1, never a prompt it cannot answer (#6754 D2).
|
|
111
|
+
*/
|
|
112
|
+
export declare function parseCliArgs(argv: string[], env?: ParseEnv): CliOptions;
|
|
113
|
+
/** The streams the shape prompt reads and writes (a `PassThrough` pair in tests). */
|
|
114
|
+
export interface PromptIo {
|
|
115
|
+
input: NodeJS.ReadableStream;
|
|
116
|
+
output: NodeJS.WritableStream;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Ask once for a shape (#6754 D3): a number 1–4 or a shape name. A bad answer
|
|
120
|
+
* re-asks, naming what was wrong; the third bad answer, or a closed input,
|
|
121
|
+
* throws. There is no default — an empty line is a bad answer.
|
|
122
|
+
*/
|
|
123
|
+
export declare function promptForShape(io: PromptIo): Promise<ShapeName>;
|
|
124
|
+
/**
|
|
125
|
+
* Fill `opts.shape` by prompting when, and only when, `needsShapePrompt` is
|
|
126
|
+
* set (#6754 D3). Help, version, sync and every run naming a shape or a
|
|
127
|
+
* template come back unchanged, with nothing written to `io.output`.
|
|
128
|
+
*/
|
|
129
|
+
export declare function resolveCliShape(opts: CliOptions, io: PromptIo): Promise<CliOptions>;
|
|
130
|
+
/**
|
|
131
|
+
* The one mapping from parsed flags to `scaffold()` options (#6754 D4).
|
|
132
|
+
* `template`, `shape`, `design` and `license` are each spread only when set,
|
|
133
|
+
* so a `--template` run hands `scaffold()` the object it did before #6754.
|
|
134
|
+
*
|
|
135
|
+
* @throws ParseError when the shape prompt is unresolved or the target is
|
|
136
|
+
* unset — an unresolved prompt must never fall through to the bare overlay.
|
|
137
|
+
*/
|
|
138
|
+
export declare function toScaffoldOptions(opts: CliOptions): ScaffoldOptions;
|
|
63
139
|
/**
|
|
64
140
|
* Parse a module CSV (the `--modules` or `--sync-architecture` value) into a
|
|
65
141
|
* validated, normalized string[].
|
|
66
142
|
*
|
|
67
143
|
* Splits on `,`, trims and lowercases each entry, drops empties, and validates
|
|
68
|
-
* each against RECOGNIZED_MODULES.
|
|
69
|
-
*
|
|
144
|
+
* each against RECOGNIZED_MODULES. Takes a PRESENT value only — an ABSENT
|
|
145
|
+
* `--modules` flag is `undefined` (#6759 D3: the key's level decides) and
|
|
146
|
+
* never reaches this function; an all-empty value (`--modules ""`,
|
|
147
|
+
* `--modules ,`) still names the Free set, spelled inline here.
|
|
70
148
|
*
|
|
71
149
|
* @throws ParseError on an unrecognized module value, naming the recognized set.
|
|
72
150
|
*/
|
|
73
|
-
export declare function parseModules(raw: string
|
|
151
|
+
export declare function parseModules(raw: string): string[];
|