@teispace/next-maker 1.15.0 → 1.16.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.
Files changed (73) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +418 -281
  3. package/dist/index.js +372 -136
  4. package/dist/index.js.map +4 -4
  5. package/dist/src/commands/doctor.d.ts +3 -0
  6. package/dist/src/commands/doctor.d.ts.map +1 -0
  7. package/dist/src/commands/env.d.ts +3 -0
  8. package/dist/src/commands/env.d.ts.map +1 -0
  9. package/dist/src/commands/index.d.ts.map +1 -1
  10. package/dist/src/commands/layout.d.ts +3 -0
  11. package/dist/src/commands/layout.d.ts.map +1 -0
  12. package/dist/src/commands/provider.d.ts +3 -0
  13. package/dist/src/commands/provider.d.ts.map +1 -0
  14. package/dist/src/commands/remove.d.ts +3 -0
  15. package/dist/src/commands/remove.d.ts.map +1 -0
  16. package/dist/src/commands/setup.d.ts.map +1 -1
  17. package/dist/src/generators/index.d.ts +4 -0
  18. package/dist/src/generators/index.d.ts.map +1 -1
  19. package/dist/src/generators/layout.generator.d.ts +22 -0
  20. package/dist/src/generators/layout.generator.d.ts.map +1 -0
  21. package/dist/src/generators/provider.generator.d.ts +14 -0
  22. package/dist/src/generators/provider.generator.d.ts.map +1 -0
  23. package/dist/src/generators/templates/layout.template.d.ts +13 -0
  24. package/dist/src/generators/templates/layout.template.d.ts.map +1 -0
  25. package/dist/src/generators/templates/provider.template.d.ts +12 -0
  26. package/dist/src/generators/templates/provider.template.d.ts.map +1 -0
  27. package/dist/src/manifests/bundle-analyzer.manifest.d.ts +3 -0
  28. package/dist/src/manifests/bundle-analyzer.manifest.d.ts.map +1 -0
  29. package/dist/src/manifests/commitizen.manifest.d.ts +3 -0
  30. package/dist/src/manifests/commitizen.manifest.d.ts.map +1 -0
  31. package/dist/src/manifests/dark-theme.manifest.d.ts +3 -0
  32. package/dist/src/manifests/dark-theme.manifest.d.ts.map +1 -0
  33. package/dist/src/manifests/http-client.manifest.d.ts +3 -0
  34. package/dist/src/manifests/http-client.manifest.d.ts.map +1 -0
  35. package/dist/src/manifests/i18n.manifest.d.ts +3 -0
  36. package/dist/src/manifests/i18n.manifest.d.ts.map +1 -0
  37. package/dist/src/manifests/index.d.ts +23 -0
  38. package/dist/src/manifests/index.d.ts.map +1 -0
  39. package/dist/src/manifests/react-compiler.manifest.d.ts +3 -0
  40. package/dist/src/manifests/react-compiler.manifest.d.ts.map +1 -0
  41. package/dist/src/manifests/redux.manifest.d.ts +9 -0
  42. package/dist/src/manifests/redux.manifest.d.ts.map +1 -0
  43. package/dist/src/manifests/runner.d.ts +37 -0
  44. package/dist/src/manifests/runner.d.ts.map +1 -0
  45. package/dist/src/manifests/security-headers.manifest.d.ts +3 -0
  46. package/dist/src/manifests/security-headers.manifest.d.ts.map +1 -0
  47. package/dist/src/manifests/tests.manifest.d.ts +3 -0
  48. package/dist/src/manifests/tests.manifest.d.ts.map +1 -0
  49. package/dist/src/manifests/types.d.ts +105 -0
  50. package/dist/src/manifests/types.d.ts.map +1 -0
  51. package/dist/src/manifests/validate-scripts.manifest.d.ts +3 -0
  52. package/dist/src/manifests/validate-scripts.manifest.d.ts.map +1 -0
  53. package/dist/src/modifiers/env-var.modifier.d.ts +60 -0
  54. package/dist/src/modifiers/env-var.modifier.d.ts.map +1 -0
  55. package/dist/src/modifiers/index.d.ts +2 -0
  56. package/dist/src/modifiers/index.d.ts.map +1 -1
  57. package/dist/src/modifiers/root-provider.modifier.d.ts +26 -0
  58. package/dist/src/modifiers/root-provider.modifier.d.ts.map +1 -0
  59. package/dist/src/services/setup/commitizen/index.d.ts +3 -0
  60. package/dist/src/services/setup/commitizen/index.d.ts.map +1 -0
  61. package/dist/src/services/setup/commitizen/package-modifier.d.ts +17 -0
  62. package/dist/src/services/setup/commitizen/package-modifier.d.ts.map +1 -0
  63. package/dist/src/services/setup/security-headers/headers.d.ts +29 -0
  64. package/dist/src/services/setup/security-headers/headers.d.ts.map +1 -0
  65. package/dist/src/services/setup/security-headers/index.d.ts +3 -0
  66. package/dist/src/services/setup/security-headers/index.d.ts.map +1 -0
  67. package/dist/src/services/setup/validate-scripts/index.d.ts +4 -0
  68. package/dist/src/services/setup/validate-scripts/index.d.ts.map +1 -0
  69. package/dist/src/services/setup/validate-scripts/package-modifier.d.ts +19 -0
  70. package/dist/src/services/setup/validate-scripts/package-modifier.d.ts.map +1 -0
  71. package/dist/src/services/setup/validate-scripts/scripts.d.ts +12 -0
  72. package/dist/src/services/setup/validate-scripts/scripts.d.ts.map +1 -0
  73. package/package.json +3 -3
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare const registerDoctorCommand: (program: Command) => void;
3
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6CzC,eAAO,MAAM,qBAAqB,GAAI,SAAS,OAAO,SAmGrD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare const registerEnvCommand: (program: Command) => void;
3
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/commands/env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4CzC,eAAO,MAAM,kBAAkB,GAAI,SAAS,OAAO,SAqDlD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYzC,eAAO,MAAM,gBAAgB,GAAI,SAAS,OAAO,SAWhD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBzC,eAAO,MAAM,gBAAgB,GAAI,SAAS,OAAO,SAgBhD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare const registerLayoutCommand: (program: Command) => void;
3
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../src/commands/layout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYzC,eAAO,MAAM,qBAAqB,GAAI,SAAS,OAAO,SAuCrD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare const registerProviderCommand: (program: Command) => void;
3
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/commands/provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,eAAO,MAAM,uBAAuB,GAAI,SAAS,OAAO,SA8CvD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from 'commander';
2
+ export declare const registerRemoveCommand: (program: Command) => void;
3
+ //# sourceMappingURL=remove.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/commands/remove.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2CzC,eAAO,MAAM,qBAAqB,GAAI,SAAS,OAAO,SA6ErD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBzC,eAAO,MAAM,oBAAoB,GAAI,SAAS,OAAO,SAiFpD,CAAC"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8BzC,eAAO,MAAM,oBAAoB,GAAI,SAAS,OAAO,SAmGpD,CAAC"}
@@ -4,10 +4,14 @@ export { generateCrudService } from './crud-service.generator';
4
4
  export { generateFeature } from './feature.generator';
5
5
  export type { HookGeneratorOptions } from './hook.generator';
6
6
  export { generateHook } from './hook.generator';
7
+ export type { LayoutGeneratorOptions, LayoutGeneratorResult, } from './layout.generator';
8
+ export { generateLayout } from './layout.generator';
7
9
  export type { LocaleGeneratorOptions } from './locale.generator';
8
10
  export { generateLocale } from './locale.generator';
9
11
  export type { PageGeneratorOptions } from './page.generator';
10
12
  export { generatePage } from './page.generator';
13
+ export type { ProviderGeneratorOptions, ProviderGeneratorResult, } from './provider.generator';
14
+ export { generateProvider } from './provider.generator';
11
15
  export { generateService } from './service.generator';
12
16
  export { generateSlice } from './slice.generator';
13
17
  export type { GenerateTestOptions, TestKind } from './test.generator';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generators/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EACV,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generators/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EACV,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EACV,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EACV,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,22 @@
1
+ export interface LayoutGeneratorOptions {
2
+ /**
3
+ * The leaf segment for the layout, e.g. `dashboard` or `marketing`. Route
4
+ * groups are expressed via `withGroup: true` rather than encoding parens
5
+ * into the segment string — keeps validation simple.
6
+ */
7
+ segment: string;
8
+ /** Optional path under the locale root, e.g. `dashboard/settings`. The leaf becomes the layout. */
9
+ at?: string;
10
+ projectPath: string;
11
+ hasI18n: boolean;
12
+ /** Wraps the leaf segment in parens to form a route group `(marketing)`. */
13
+ withGroup: boolean;
14
+ }
15
+ export interface LayoutGeneratorResult {
16
+ layoutFile: string;
17
+ /** Display path for logging, e.g. `src/app/[locale]/(marketing)/layout.tsx`. */
18
+ displayPath: string;
19
+ componentName: string;
20
+ }
21
+ export declare const generateLayout: (options: LayoutGeneratorOptions) => Promise<LayoutGeneratorResult>;
22
+ //# sourceMappingURL=layout.generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.generator.d.ts","sourceRoot":"","sources":["../../../src/generators/layout.generator.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB,mGAAmG;IACnG,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,4EAA4E;IAC5E,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAsBD,eAAO,MAAM,cAAc,GACzB,SAAS,sBAAsB,KAC9B,OAAO,CAAC,qBAAqB,CA6B/B,CAAC"}
@@ -0,0 +1,14 @@
1
+ export interface ProviderGeneratorOptions {
2
+ /** Kebab-case or PascalCase base name (e.g. `auth` or `Auth`). */
3
+ name: string;
4
+ projectPath: string;
5
+ }
6
+ export interface ProviderGeneratorResult {
7
+ componentName: string;
8
+ /** Filename without extension, e.g. `AuthProvider`. */
9
+ fileBaseName: string;
10
+ /** Absolute path to the generated provider file. */
11
+ providerFile: string;
12
+ }
13
+ export declare const generateProvider: (options: ProviderGeneratorOptions) => Promise<ProviderGeneratorResult>;
14
+ //# sourceMappingURL=provider.generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.generator.d.ts","sourceRoot":"","sources":["../../../src/generators/provider.generator.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,wBAAwB;IACvC,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC;CACtB;AAOD,eAAO,MAAM,gBAAgB,GAC3B,SAAS,wBAAwB,KAChC,OAAO,CAAC,uBAAuB,CAwBjC,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Templates for the `layout` generator (B2). Nested layouts only — the root
3
+ * layout is owned by the starter and is too heavy (fonts, providers, html/body)
4
+ * to scaffold from a CLI.
5
+ */
6
+ export interface LayoutTemplateParams {
7
+ /** PascalCase component name (e.g. `DashboardLayout`). */
8
+ componentName: string;
9
+ /** True when the layout sits under `src/app/[locale]/...` and should consume the locale param. */
10
+ hasI18n: boolean;
11
+ }
12
+ export declare const layoutTemplate: ({ componentName, hasI18n }: LayoutTemplateParams) => string;
13
+ //# sourceMappingURL=layout.template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.template.d.ts","sourceRoot":"","sources":["../../../../src/generators/templates/layout.template.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,oBAAoB;IACnC,0DAA0D;IAC1D,aAAa,EAAE,MAAM,CAAC;IACtB,kGAAkG;IAClG,OAAO,EAAE,OAAO,CAAC;CAClB;AA6BD,eAAO,MAAM,cAAc,GAAI,4BAA4B,oBAAoB,KAAG,MACZ,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Templates for the `provider` generator (B3). Generates a context-based
3
+ * provider — the most common use case. Users who only need a thin wrapper
4
+ * around an external `<XxxProvider>` can delete the context boilerplate.
5
+ */
6
+ export interface ProviderTemplateParams {
7
+ /** PascalCase base name (e.g. `Auth`). The template appends `Provider` for the component and `useX` for the hook. */
8
+ baseName: string;
9
+ }
10
+ export declare const providerTemplate: ({ baseName }: ProviderTemplateParams) => string;
11
+ export declare const providerComponentName: (baseName: string) => string;
12
+ //# sourceMappingURL=provider.template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.template.d.ts","sourceRoot":"","sources":["../../../../src/generators/templates/provider.template.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,sBAAsB;IACrC,qHAAqH;IACrH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAKD,eAAO,MAAM,gBAAgB,GAAI,cAAc,sBAAsB,KAAG,MA8BvE,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,UAAU,MAAM,KAAG,MACrB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { FeatureManifest } from './types';
2
+ export declare const bundleAnalyzerManifest: FeatureManifest;
3
+ //# sourceMappingURL=bundle-analyzer.manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle-analyzer.manifest.d.ts","sourceRoot":"","sources":["../../../src/manifests/bundle-analyzer.manifest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,sBAAsB,EAAE,eAsBpC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { FeatureManifest } from './types';
2
+ export declare const commitizenManifest: FeatureManifest;
3
+ //# sourceMappingURL=commitizen.manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commitizen.manifest.d.ts","sourceRoot":"","sources":["../../../src/manifests/commitizen.manifest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,kBAAkB,EAAE,eAahC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { FeatureManifest } from './types';
2
+ export declare const darkThemeManifest: FeatureManifest;
3
+ //# sourceMappingURL=dark-theme.manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dark-theme.manifest.d.ts","sourceRoot":"","sources":["../../../src/manifests/dark-theme.manifest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,iBAAiB,EAAE,eAgB/B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { FeatureManifest } from './types';
2
+ export declare const httpClientManifest: FeatureManifest;
3
+ //# sourceMappingURL=http-client.manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.manifest.d.ts","sourceRoot":"","sources":["../../../src/manifests/http-client.manifest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,kBAAkB,EAAE,eAehC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { FeatureManifest } from './types';
2
+ export declare const i18nManifest: FeatureManifest;
3
+ //# sourceMappingURL=i18n.manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.manifest.d.ts","sourceRoot":"","sources":["../../../src/manifests/i18n.manifest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,YAAY,EAAE,eA4B1B,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Central registry of feature manifests. `doctor` and `remove` walk this
3
+ * registry; `setup` imports individual manifests when it needs `apply`.
4
+ */
5
+ import { bundleAnalyzerManifest } from './bundle-analyzer.manifest';
6
+ import { commitizenManifest } from './commitizen.manifest';
7
+ import { darkThemeManifest } from './dark-theme.manifest';
8
+ import { httpClientManifest } from './http-client.manifest';
9
+ import { i18nManifest } from './i18n.manifest';
10
+ import { reactCompilerManifest } from './react-compiler.manifest';
11
+ import { reduxManifest } from './redux.manifest';
12
+ import { securityHeadersManifest } from './security-headers.manifest';
13
+ import { testsManifest } from './tests.manifest';
14
+ import type { FeatureManifest } from './types';
15
+ import { validateScriptsManifest } from './validate-scripts.manifest';
16
+ export type { RemoveSummary } from './runner';
17
+ export { checkManifest, reverseManifest } from './runner';
18
+ export type { CodeBlockRequirement, DepKind, FeatureCheckResult, FeatureFinding, FeatureManifest, FileRequirement, PackageRequirement, ScriptRequirement, } from './types';
19
+ /** Ordered for sensible doctor output: simple/visible features first. */
20
+ export declare const MANIFESTS: ReadonlyArray<FeatureManifest>;
21
+ export declare const getManifest: (id: string) => FeatureManifest | undefined;
22
+ export { bundleAnalyzerManifest, commitizenManifest, darkThemeManifest, httpClientManifest, i18nManifest, reactCompilerManifest, reduxManifest, securityHeadersManifest, testsManifest, validateScriptsManifest, };
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/manifests/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC1D,YAAY,EACV,oBAAoB,EACpB,OAAO,EACP,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAEjB,yEAAyE;AACzE,eAAO,MAAM,SAAS,EAAE,aAAa,CAAC,eAAe,CAWpD,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,IAAI,MAAM,KAAG,eAAe,GAAG,SACvB,CAAC;AAErC,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,qBAAqB,EACrB,aAAa,EACb,uBAAuB,EACvB,aAAa,EACb,uBAAuB,GACxB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { FeatureManifest } from './types';
2
+ export declare const reactCompilerManifest: FeatureManifest;
3
+ //# sourceMappingURL=react-compiler.manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react-compiler.manifest.d.ts","sourceRoot":"","sources":["../../../src/manifests/react-compiler.manifest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,qBAAqB,EAAE,eAqBnC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { FeatureManifest } from './types';
2
+ /**
3
+ * Slim manifest for Redux. Detection covers the typical footprint, but the
4
+ * code injections (root reducer, providers chain, page wiring) aren't
5
+ * encoded as `removePattern`s — `remove` reports them as manual cleanup so
6
+ * the user can confirm before stripping.
7
+ */
8
+ export declare const reduxManifest: FeatureManifest;
9
+ //# sourceMappingURL=redux.manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redux.manifest.d.ts","sourceRoot":"","sources":["../../../src/manifests/redux.manifest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,eA0B3B,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { FeatureCheckResult, FeatureManifest } from './types';
2
+ /**
3
+ * Compute drift: walk every piece of the manifest's footprint and report
4
+ * what's missing or mismatched. Returns an empty array when the feature is
5
+ * present and complete.
6
+ */
7
+ export declare const checkManifest: (manifest: FeatureManifest, projectPath: string) => Promise<FeatureCheckResult>;
8
+ export interface RemoveSummary {
9
+ filesRemoved: string[];
10
+ packagesUninstalled: string[];
11
+ scriptsRemoved: string[];
12
+ blocksStripped: Array<{
13
+ file: string;
14
+ description: string;
15
+ }>;
16
+ /** Manual-cleanup items the runner couldn't safely remove. */
17
+ manualCleanup: Array<{
18
+ file: string;
19
+ description: string;
20
+ }>;
21
+ }
22
+ /**
23
+ * Generic reverse: walk the footprint and undo what we can confidently undo.
24
+ *
25
+ * - Files marked `generated: true` are deleted.
26
+ * - Files marked `generated: false` are left alone (user-owned).
27
+ * - Packages are uninstalled.
28
+ * - Scripts are removed from package.json.
29
+ * - Code blocks with a `removePattern` are stripped; without one, they end
30
+ * up in `manualCleanup` so the caller can prompt the user.
31
+ *
32
+ * The `dryRun` flag computes the summary without touching anything.
33
+ */
34
+ export declare const reverseManifest: (manifest: FeatureManifest, projectPath: string, options?: {
35
+ dryRun?: boolean;
36
+ }) => Promise<RemoveSummary>;
37
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/manifests/runner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,kBAAkB,EAElB,eAAe,EAEhB,MAAM,SAAS,CAAC;AAuBjB;;;;GAIG;AACH,eAAO,MAAM,aAAa,GACxB,UAAU,eAAe,EACzB,aAAa,MAAM,KAClB,OAAO,CAAC,kBAAkB,CA8D5B,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7D,8DAA8D;IAC9D,aAAa,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC7D;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,eAAe,GAC1B,UAAU,eAAe,EACzB,aAAa,MAAM,EACnB,UAAS;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,KACjC,OAAO,CAAC,aAAa,CA0EvB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { FeatureManifest } from './types';
2
+ export declare const securityHeadersManifest: FeatureManifest;
3
+ //# sourceMappingURL=security-headers.manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-headers.manifest.d.ts","sourceRoot":"","sources":["../../../src/manifests/security-headers.manifest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,uBAAuB,EAAE,eAqBrC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { FeatureManifest } from './types';
2
+ export declare const testsManifest: FeatureManifest;
3
+ //# sourceMappingURL=tests.manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tests.manifest.d.ts","sourceRoot":"","sources":["../../../src/manifests/tests.manifest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,aAAa,EAAE,eAwB3B,CAAC"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Declarative description of a "feature" the CLI can install/detect/remove.
3
+ *
4
+ * The same manifest powers three commands: `setup` (install), `doctor`
5
+ * (detect drift), and `remove` (undo). Encoding the feature's footprint as
6
+ * data — files, deps, scripts, code blocks — lets each command operate
7
+ * generically without growing per-feature special cases.
8
+ *
9
+ * Manifests are intentionally additive: the simple features list every part
10
+ * of their footprint, while heavy features (redux, i18n, etc.) start with a
11
+ * lighter manifest that doctor/remove can extend over time.
12
+ */
13
+ export type DepKind = 'dependency' | 'devDependency';
14
+ export interface PackageRequirement {
15
+ name: string;
16
+ kind: DepKind;
17
+ }
18
+ export interface FileRequirement {
19
+ /** Path relative to the project root. */
20
+ path: string;
21
+ /**
22
+ * If true (default), missing the file counts as drift when the feature is
23
+ * installed. Optional files (e.g. `.env`) record presence without flagging.
24
+ */
25
+ required?: boolean;
26
+ /** Whether the path points to a directory. */
27
+ isDir?: boolean;
28
+ /** Used by `remove` to decide whether deletion is safe. */
29
+ generated: boolean;
30
+ }
31
+ export interface ScriptRequirement {
32
+ /** package.json scripts.<name> */
33
+ name: string;
34
+ /** Optional exact-value check. When omitted, only the key's presence is checked. */
35
+ expectedValue?: string;
36
+ }
37
+ export interface CodeBlockRequirement {
38
+ /** File the block lives in, relative to the project root. */
39
+ file: string;
40
+ /** Human-readable label used in doctor output. */
41
+ description: string;
42
+ /** RegExp that matches when the block is present (for both detection and drift). */
43
+ presence: RegExp;
44
+ /**
45
+ * RegExp matching the full block when removing. If omitted, `remove` will
46
+ * report "manual removal needed" rather than guessing.
47
+ */
48
+ removePattern?: RegExp;
49
+ }
50
+ export interface FeatureFootprint {
51
+ files: FileRequirement[];
52
+ packages: PackageRequirement[];
53
+ scripts: ScriptRequirement[];
54
+ injections: CodeBlockRequirement[];
55
+ }
56
+ export interface FeatureManifest extends FeatureFootprint {
57
+ id: string;
58
+ name: string;
59
+ description: string;
60
+ /**
61
+ * High-level "is this feature installed?" check. May be cheaper than
62
+ * walking every file/package/injection in `footprint`.
63
+ */
64
+ detect: (projectPath: string) => Promise<boolean>;
65
+ /**
66
+ * Idempotent installer. Doctor's `--fix` flag and the manifest-based
67
+ * `setup` path both call this. Optional because some manifests are
68
+ * detection-only (e.g. core artifacts that should never be re-applied).
69
+ */
70
+ apply?: (projectPath: string) => Promise<void>;
71
+ /**
72
+ * Custom remover. When omitted, the generic reverser walks the footprint
73
+ * and only removes pieces it is confident about (files marked `generated`,
74
+ * scripts, packages, code blocks with a `removePattern`).
75
+ */
76
+ remove?: (projectPath: string) => Promise<void>;
77
+ }
78
+ export type FeatureFinding = {
79
+ kind: 'missingFile';
80
+ file: string;
81
+ description?: string;
82
+ } | {
83
+ kind: 'missingPackage';
84
+ name: string;
85
+ depKind: DepKind;
86
+ } | {
87
+ kind: 'missingScript';
88
+ name: string;
89
+ } | {
90
+ kind: 'mismatchedScript';
91
+ name: string;
92
+ expected: string;
93
+ actual: string;
94
+ } | {
95
+ kind: 'missingInjection';
96
+ file: string;
97
+ description: string;
98
+ };
99
+ export interface FeatureCheckResult {
100
+ manifest: FeatureManifest;
101
+ installed: boolean;
102
+ /** Empty when installed and complete; populated when there is drift. */
103
+ drift: FeatureFinding[];
104
+ }
105
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/manifests/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,OAAO,GAAG,YAAY,GAAG,eAAe,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,2DAA2D;IAC3D,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,oFAAoF;IACpF,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,UAAU,EAAE,oBAAoB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,MAAM,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD;;;;OAIG;IACH,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC5E;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,eAAe,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB"}
@@ -0,0 +1,3 @@
1
+ import type { FeatureManifest } from './types';
2
+ export declare const validateScriptsManifest: FeatureManifest;
3
+ //# sourceMappingURL=validate-scripts.manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-scripts.manifest.d.ts","sourceRoot":"","sources":["../../../src/manifests/validate-scripts.manifest.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAI/C,eAAO,MAAM,uBAAuB,EAAE,eAgBrC,CAAC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Adds a new environment variable across the four files that the starter
3
+ * keeps in sync: `.env.example`, `.env` (when present), the Zod
4
+ * `envSchema`, and the typed config. Each transformation is pure and
5
+ * idempotent so the orchestrator can call them in any order without
6
+ * worrying about duplicate writes.
7
+ */
8
+ export type EnvVarType = 'string' | 'url' | 'number' | 'boolean' | 'enum';
9
+ export interface EnvVarSpec {
10
+ /** UPPER_SNAKE_CASE identifier as it will appear in the schema and `.env`. */
11
+ name: string;
12
+ type: EnvVarType;
13
+ required: boolean;
14
+ /** When set, the schema gets `.default(...)` and `.env`/`.env.example` get this initial value. */
15
+ default?: string;
16
+ description?: string;
17
+ /** Allowed values when `type === 'enum'`. */
18
+ enumValues?: string[];
19
+ /** When true, mark the value as public (visible to the browser via `# -public` and the NEXT_PUBLIC_ prefix). */
20
+ public: boolean;
21
+ }
22
+ export declare const validateName: (name: string) => void;
23
+ export declare const ensurePublicPrefix: (name: string, isPublic: boolean) => string;
24
+ /**
25
+ * Build the line that goes inside `envSchema = z.object({ ... })`.
26
+ *
27
+ * Mirrors the starter's house style: numeric/string types get the
28
+ * `preprocess(emptyStringToUndefined, …)` wrapper so empty values in `.env`
29
+ * don't pre-empt zod defaults; enums skip it because they reject empty
30
+ * strings outright anyway.
31
+ */
32
+ export declare const buildSchemaEntry: (spec: EnvVarSpec) => string;
33
+ /**
34
+ * Insert a new entry into `envSchema = z.object({ ... })`. Preserves the
35
+ * existing trailing newline shape and is idempotent.
36
+ */
37
+ export declare const injectSchemaEntry: (content: string, spec: EnvVarSpec) => string;
38
+ /**
39
+ * Append a `KEY=` (or `KEY=defaultValue`) line to the .env.example contents.
40
+ * Adds an optional comment line for the description. Idempotent.
41
+ */
42
+ export declare const appendEnvExampleEntry: (content: string, spec: EnvVarSpec) => string;
43
+ /**
44
+ * Mirror of `appendEnvExampleEntry` for `.env`. Always uses the spec default
45
+ * (or empty) so secrets aren't leaked into the example file by mistake.
46
+ * Idempotent.
47
+ */
48
+ export declare const appendEnvEntry: (content: string, spec: EnvVarSpec) => string;
49
+ export interface AddEnvVarResult {
50
+ schemaUpdated: boolean;
51
+ envExampleUpdated: boolean;
52
+ envUpdated: boolean;
53
+ }
54
+ /**
55
+ * Orchestrates the four-file update. Each step is independently idempotent
56
+ * so partial failures are easy to recover from — re-running picks up where
57
+ * the previous run left off.
58
+ */
59
+ export declare const addEnvVar: (projectPath: string, spec: EnvVarSpec) => Promise<AddEnvVarResult>;
60
+ //# sourceMappingURL=env-var.modifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-var.modifier.d.ts","sourceRoot":"","sources":["../../../src/modifiers/env-var.modifier.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AAEH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAE1E,MAAM,WAAW,UAAU;IACzB,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,kGAAkG;IAClG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,gHAAgH;IAChH,MAAM,EAAE,OAAO,CAAC;CACjB;AAID,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,IAM3C,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,EAAE,UAAU,OAAO,KAAG,MAGpE,CAAC;AAoCF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,UAAU,KAAG,MAuBnD,CAAC;AAIF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,SAAS,MAAM,EAAE,MAAM,UAAU,KAAG,MAkBrE,CAAC;AAWF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,SAAS,MAAM,EAAE,MAAM,UAAU,KAAG,MASzE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,SAAS,MAAM,EAAE,MAAM,UAAU,KAAG,MAQlE,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,GACpB,aAAa,MAAM,EACnB,MAAM,UAAU,KACf,OAAO,CAAC,eAAe,CAgCzB,CAAC"}
@@ -1,6 +1,8 @@
1
1
  export { registerApiEndpoints } from './api-registration.modifier';
2
2
  export { registerAppPath } from './app-paths.modifier';
3
+ export { type AddEnvVarResult, addEnvVar, appendEnvEntry, appendEnvExampleEntry, buildSchemaEntry, type EnvVarSpec, type EnvVarType, ensurePublicPrefix, injectSchemaEntry, validateName as validateEnvVarName, } from './env-var.modifier';
3
4
  export { addImportStatement, addToAppApis, addToCombineReducers } from './helpers';
5
+ export { addProviderToBarrel, findRootProviderFile, injectProviderIntoChain, type RegisterProviderOptions, registerProvider, } from './root-provider.modifier';
4
6
  export { registerInRootReducer } from './root-reducer.modifier';
5
7
  export { addTranslationNamespace } from './translation.modifier';
6
8
  export type { RegisterApiOptions, RegisterReducerOptions } from './types';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modifiers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modifiers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EACL,KAAK,eAAe,EACpB,SAAS,EACT,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,IAAI,kBAAkB,GACnC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACnF,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,uBAAuB,EAC5B,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Insert `<ComponentName>{children}</ComponentName>` as the innermost wrap
3
+ * around `{children}`. Idempotent: returns the input unchanged if the tag
4
+ * is already present.
5
+ */
6
+ export declare const injectProviderIntoChain: (content: string, componentName: string) => string;
7
+ /**
8
+ * Append a `export * from './<basename>';` line to the providers barrel,
9
+ * keeping it sorted alphabetically among the other exports. Idempotent.
10
+ */
11
+ export declare const addProviderToBarrel: (content: string, fileBaseName: string) => string;
12
+ /** Locates the RootProvider file or returns null when none can be confidently identified. */
13
+ export declare const findRootProviderFile: (projectPath: string, fs?: {
14
+ fileExists: (p: string) => boolean;
15
+ readFile: (p: string) => Promise<string>;
16
+ }) => Promise<string | null>;
17
+ export interface RegisterProviderOptions {
18
+ projectPath: string;
19
+ componentName: string;
20
+ fileBaseName: string;
21
+ }
22
+ export declare const registerProvider: (options: RegisterProviderOptions) => Promise<{
23
+ rootProviderFile: string | null;
24
+ barrelFile: string | null;
25
+ }>;
26
+ //# sourceMappingURL=root-provider.modifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root-provider.modifier.d.ts","sourceRoot":"","sources":["../../../src/modifiers/root-provider.modifier.ts"],"names":[],"mappings":"AAkBA;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAAI,SAAS,MAAM,EAAE,eAAe,MAAM,KAAG,MAmBhF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,EAAE,cAAc,MAAM,KAAG,MA+B3E,CAAC;AAMF,6FAA6F;AAC7F,eAAO,MAAM,oBAAoB,GAC/B,aAAa,MAAM,EACnB,KAAI;IAAE,UAAU,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CAGjF,KACA,OAAO,CAAC,MAAM,GAAG,IAAI,CAyBvB,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,gBAAgB,GAC3B,SAAS,uBAAuB,KAC/B,OAAO,CAAC;IAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CA4BxE,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { addCommitizen, missingCommitizenDeps, type PackageJsonShape, } from './package-modifier';
2
+ export declare const setupCommitizen: (projectPath: string) => Promise<void>;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/setup/commitizen/index.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,KAAK,gBAAgB,GACtB,MAAM,oBAAoB,CAAC;AAI5B,eAAO,MAAM,eAAe,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,IAAI,CAyBvE,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Pure JSON modifier for Commitizen retrofit. Kept separate from the service
3
+ * so it can be unit-tested with no filesystem.
4
+ */
5
+ export interface PackageJsonShape {
6
+ scripts?: Record<string, string>;
7
+ devDependencies?: Record<string, string>;
8
+ config?: Record<string, unknown> & {
9
+ commitizen?: {
10
+ path: string;
11
+ };
12
+ };
13
+ [key: string]: unknown;
14
+ }
15
+ export declare const addCommitizen: (pkg: PackageJsonShape) => PackageJsonShape;
16
+ export declare const missingCommitizenDeps: (pkg: PackageJsonShape) => string[];
17
+ //# sourceMappingURL=package-modifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-modifier.d.ts","sourceRoot":"","sources":["../../../../../src/services/setup/commitizen/package-modifier.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QACjC,UAAU,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/B,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,aAAa,GAAI,KAAK,gBAAgB,KAAG,gBAerD,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,KAAK,gBAAgB,KAAG,MAAM,EAOnE,CAAC"}