@teispace/next-maker 3.0.3 → 3.0.4

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 (162) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/index.js +146 -146
  3. package/package.json +12 -10
  4. package/dist/build.d.ts +0 -1
  5. package/dist/src/commands/app.d.ts +0 -2
  6. package/dist/src/commands/component.d.ts +0 -2
  7. package/dist/src/commands/doctor.d.ts +0 -2
  8. package/dist/src/commands/env.d.ts +0 -2
  9. package/dist/src/commands/favicon.d.ts +0 -2
  10. package/dist/src/commands/feature.d.ts +0 -2
  11. package/dist/src/commands/hook.d.ts +0 -2
  12. package/dist/src/commands/index.d.ts +0 -2
  13. package/dist/src/commands/layout.d.ts +0 -2
  14. package/dist/src/commands/locale.d.ts +0 -2
  15. package/dist/src/commands/page.d.ts +0 -2
  16. package/dist/src/commands/provider.d.ts +0 -2
  17. package/dist/src/commands/remove.d.ts +0 -2
  18. package/dist/src/commands/service.d.ts +0 -2
  19. package/dist/src/commands/setup.d.ts +0 -2
  20. package/dist/src/commands/slice.d.ts +0 -2
  21. package/dist/src/commands/test.d.ts +0 -2
  22. package/dist/src/config/constants.d.ts +0 -0
  23. package/dist/src/config/errorHandlers.d.ts +0 -6
  24. package/dist/src/config/index.d.ts +0 -5
  25. package/dist/src/config/output.d.ts +0 -10
  26. package/dist/src/config/packages.d.ts +0 -25
  27. package/dist/src/config/path-safety.d.ts +0 -28
  28. package/dist/src/config/paths.d.ts +0 -93
  29. package/dist/src/config/spinner.d.ts +0 -11
  30. package/dist/src/config/utils.d.ts +0 -4
  31. package/dist/src/core/files.d.ts +0 -7
  32. package/dist/src/core/git.d.ts +0 -9
  33. package/dist/src/core/package-manager.d.ts +0 -11
  34. package/dist/src/detection/existence.checker.d.ts +0 -8
  35. package/dist/src/detection/index.d.ts +0 -3
  36. package/dist/src/detection/project.detector.d.ts +0 -14
  37. package/dist/src/generators/component.generator.d.ts +0 -8
  38. package/dist/src/generators/crud-service.generator.d.ts +0 -5
  39. package/dist/src/generators/feature.generator.d.ts +0 -6
  40. package/dist/src/generators/hook.generator.d.ts +0 -7
  41. package/dist/src/generators/index.d.ts +0 -19
  42. package/dist/src/generators/layout.generator.d.ts +0 -21
  43. package/dist/src/generators/locale.generator.d.ts +0 -9
  44. package/dist/src/generators/page.generator.d.ts +0 -9
  45. package/dist/src/generators/provider.generator.d.ts +0 -13
  46. package/dist/src/generators/service.generator.d.ts +0 -5
  47. package/dist/src/generators/slice.generator.d.ts +0 -10
  48. package/dist/src/generators/templates/barrel.template.d.ts +0 -11
  49. package/dist/src/generators/templates/component.template.d.ts +0 -4
  50. package/dist/src/generators/templates/crud-service.template.d.ts +0 -9
  51. package/dist/src/generators/templates/custom-hook.template.d.ts +0 -4
  52. package/dist/src/generators/templates/hook.template.d.ts +0 -8
  53. package/dist/src/generators/templates/layout.template.d.ts +0 -12
  54. package/dist/src/generators/templates/page.template.d.ts +0 -17
  55. package/dist/src/generators/templates/persist.template.d.ts +0 -5
  56. package/dist/src/generators/templates/provider.template.d.ts +0 -11
  57. package/dist/src/generators/templates/selectors.template.d.ts +0 -5
  58. package/dist/src/generators/templates/service.template.d.ts +0 -4
  59. package/dist/src/generators/templates/shared-component.template.d.ts +0 -9
  60. package/dist/src/generators/templates/slice.template.d.ts +0 -5
  61. package/dist/src/generators/templates/test.template.d.ts +0 -26
  62. package/dist/src/generators/templates/types.template.d.ts +0 -4
  63. package/dist/src/generators/test.generator.d.ts +0 -18
  64. package/dist/src/generators/types.d.ts +0 -18
  65. package/dist/src/index.d.ts +0 -1
  66. package/dist/src/manifests/bundle-analyzer.manifest.d.ts +0 -2
  67. package/dist/src/manifests/commitizen.manifest.d.ts +0 -2
  68. package/dist/src/manifests/dark-theme.manifest.d.ts +0 -2
  69. package/dist/src/manifests/http-client.manifest.d.ts +0 -2
  70. package/dist/src/manifests/i18n.manifest.d.ts +0 -2
  71. package/dist/src/manifests/index.d.ts +0 -23
  72. package/dist/src/manifests/react-compiler.manifest.d.ts +0 -2
  73. package/dist/src/manifests/redux.manifest.d.ts +0 -8
  74. package/dist/src/manifests/runner.d.ts +0 -36
  75. package/dist/src/manifests/security-headers.manifest.d.ts +0 -2
  76. package/dist/src/manifests/tests.manifest.d.ts +0 -2
  77. package/dist/src/manifests/transforms/next-config.d.ts +0 -24
  78. package/dist/src/manifests/transforms/unwrap-jsx.d.ts +0 -31
  79. package/dist/src/manifests/types.d.ts +0 -131
  80. package/dist/src/manifests/validate-scripts.manifest.d.ts +0 -2
  81. package/dist/src/manifests/ws.manifest.d.ts +0 -2
  82. package/dist/src/modifiers/api-registration.modifier.d.ts +0 -5
  83. package/dist/src/modifiers/app-paths.modifier.d.ts +0 -4
  84. package/dist/src/modifiers/crud-api-registration.modifier.d.ts +0 -4
  85. package/dist/src/modifiers/env-var.modifier.d.ts +0 -59
  86. package/dist/src/modifiers/helpers.d.ts +0 -13
  87. package/dist/src/modifiers/index.d.ts +0 -8
  88. package/dist/src/modifiers/root-provider.modifier.d.ts +0 -25
  89. package/dist/src/modifiers/root-reducer.modifier.d.ts +0 -6
  90. package/dist/src/modifiers/translation.modifier.d.ts +0 -4
  91. package/dist/src/modifiers/types.d.ts +0 -14
  92. package/dist/src/pipelines/feature.pipeline.d.ts +0 -13
  93. package/dist/src/pipelines/index.d.ts +0 -8
  94. package/dist/src/pipelines/runner.d.ts +0 -6
  95. package/dist/src/pipelines/service.pipeline.d.ts +0 -7
  96. package/dist/src/pipelines/slice.pipeline.d.ts +0 -8
  97. package/dist/src/pipelines/types.d.ts +0 -11
  98. package/dist/src/prompts/component.prompt.d.ts +0 -9
  99. package/dist/src/prompts/create-app.prompt.d.ts +0 -49
  100. package/dist/src/prompts/favicon.prompt.d.ts +0 -6
  101. package/dist/src/prompts/feature.prompt.d.ts +0 -10
  102. package/dist/src/prompts/hook.prompt.d.ts +0 -4
  103. package/dist/src/prompts/locale.prompt.d.ts +0 -12
  104. package/dist/src/prompts/page.prompt.d.ts +0 -12
  105. package/dist/src/prompts/service.prompt.d.ts +0 -6
  106. package/dist/src/prompts/slice.prompt.d.ts +0 -5
  107. package/dist/src/services/common/test-utils.d.ts +0 -11
  108. package/dist/src/services/favicon/css-colors.d.ts +0 -7
  109. package/dist/src/services/favicon/detect.d.ts +0 -15
  110. package/dist/src/services/favicon/encoders.d.ts +0 -22
  111. package/dist/src/services/favicon/index.d.ts +0 -6
  112. package/dist/src/services/favicon/manifest.d.ts +0 -24
  113. package/dist/src/services/favicon/pipeline.d.ts +0 -2
  114. package/dist/src/services/favicon/shapes.d.ts +0 -10
  115. package/dist/src/services/favicon/types.d.ts +0 -31
  116. package/dist/src/services/favicon/validate.d.ts +0 -10
  117. package/dist/src/services/init/cleanup/bundle-analyzer.cleanup.d.ts +0 -2
  118. package/dist/src/services/init/cleanup/dark-mode.cleanup.d.ts +0 -2
  119. package/dist/src/services/init/cleanup/http.cleanup.d.ts +0 -2
  120. package/dist/src/services/init/cleanup/i18n.cleanup.d.ts +0 -2
  121. package/dist/src/services/init/cleanup/index.d.ts +0 -2
  122. package/dist/src/services/init/cleanup/misc.cleanup.d.ts +0 -12
  123. package/dist/src/services/init/cleanup/react-compiler.cleanup.d.ts +0 -2
  124. package/dist/src/services/init/cleanup/redux.cleanup.d.ts +0 -2
  125. package/dist/src/services/init/cleanup/seo.cleanup.d.ts +0 -14
  126. package/dist/src/services/init/cleanup/tests.cleanup.d.ts +0 -2
  127. package/dist/src/services/init/cleanup/ws.cleanup.d.ts +0 -14
  128. package/dist/src/services/init/config.service.d.ts +0 -2
  129. package/dist/src/services/init/devtools.service.d.ts +0 -2
  130. package/dist/src/services/init/providers.service.d.ts +0 -3
  131. package/dist/src/services/init/template.service.d.ts +0 -1
  132. package/dist/src/services/setup/bundle-analyzer/index.d.ts +0 -1
  133. package/dist/src/services/setup/commitizen/index.d.ts +0 -2
  134. package/dist/src/services/setup/commitizen/package-modifier.d.ts +0 -16
  135. package/dist/src/services/setup/dark-theme/assets.d.ts +0 -3
  136. package/dist/src/services/setup/dark-theme/checks.d.ts +0 -5
  137. package/dist/src/services/setup/dark-theme/index.d.ts +0 -1
  138. package/dist/src/services/setup/dark-theme/injectors.d.ts +0 -4
  139. package/dist/src/services/setup/dark-theme/utils.d.ts +0 -1
  140. package/dist/src/services/setup/http-client/assets.d.ts +0 -4
  141. package/dist/src/services/setup/http-client/checks.d.ts +0 -7
  142. package/dist/src/services/setup/http-client/index.d.ts +0 -1
  143. package/dist/src/services/setup/http-client/injectors.d.ts +0 -97
  144. package/dist/src/services/setup/i18n/assets.d.ts +0 -3
  145. package/dist/src/services/setup/i18n/checks.d.ts +0 -5
  146. package/dist/src/services/setup/i18n/index.d.ts +0 -1
  147. package/dist/src/services/setup/i18n/injectors.d.ts +0 -5
  148. package/dist/src/services/setup/react-compiler/index.d.ts +0 -1
  149. package/dist/src/services/setup/redux/assets.d.ts +0 -4
  150. package/dist/src/services/setup/redux/checks.d.ts +0 -5
  151. package/dist/src/services/setup/redux/index.d.ts +0 -1
  152. package/dist/src/services/setup/redux/injectors.d.ts +0 -3
  153. package/dist/src/services/setup/security-headers/headers.d.ts +0 -28
  154. package/dist/src/services/setup/security-headers/index.d.ts +0 -2
  155. package/dist/src/services/setup/tests/index.d.ts +0 -1
  156. package/dist/src/services/setup/validate-scripts/index.d.ts +0 -3
  157. package/dist/src/services/setup/validate-scripts/package-modifier.d.ts +0 -18
  158. package/dist/src/services/setup/validate-scripts/scripts.d.ts +0 -11
  159. package/dist/src/services/setup/ws/assets.d.ts +0 -20
  160. package/dist/src/services/setup/ws/checks.d.ts +0 -17
  161. package/dist/src/services/setup/ws/index.d.ts +0 -20
  162. package/dist/src/services/setup/ws/injectors.d.ts +0 -56
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teispace/next-maker",
3
- "version": "3.0.3",
3
+ "version": "3.0.4",
4
4
  "description": "Create a new Teispace Next.js application with interactive setup.",
5
5
  "keywords": [
6
6
  "nextjs",
@@ -24,8 +24,6 @@
24
24
  "LICENSE",
25
25
  "CHANGELOG.md"
26
26
  ],
27
- "main": "dist/index.js",
28
- "types": "dist/index.d.ts",
29
27
  "bin": "dist/index.js",
30
28
  "repository": {
31
29
  "type": "git",
@@ -33,31 +31,35 @@
33
31
  "directory": "packages/next-maker"
34
32
  },
35
33
  "scripts": {
36
- "build": "tsx build.ts && tsc --emitDeclarationOnly --outDir dist",
34
+ "build": "tsx build.ts",
37
35
  "start": "node dist/index.js",
38
36
  "dev": "tsx --watch src/index.ts",
39
37
  "test": "vitest run",
40
- "test:watch": "vitest"
38
+ "test:watch": "vitest",
39
+ "test:cov": "vitest run --coverage",
40
+ "type-check": "tsc --noEmit",
41
+ "clean": "rm -rf dist",
42
+ "prepublishOnly": "yarn clean && yarn build"
41
43
  },
42
44
  "dependencies": {
43
45
  "commander": "^15.0.0",
44
- "degit": "^3.4.2",
46
+ "degit": "^3.4.7",
45
47
  "enquirer": "^2.4.1",
46
48
  "ora": "^9.4.0",
47
49
  "picocolors": "^1.1.1",
48
50
  "png-to-ico": "^3.0.1",
49
- "sharp": "^0.34.5"
51
+ "sharp": "^0.35.2"
50
52
  },
51
53
  "devDependencies": {
52
54
  "@types/degit": "^2.8.6",
53
- "@types/node": "^25.9.2",
55
+ "@types/node": "^26.0.0",
54
56
  "esbuild": "^0.28.0",
55
57
  "tsx": "^4.22.4",
56
58
  "typescript": "^6.0.3",
57
- "vitest": "^4.1.8"
59
+ "vitest": "^4.1.9"
58
60
  },
59
61
  "engines": {
60
- "node": ">=22.12.0"
62
+ "node": ">=24.0.0"
61
63
  },
62
64
  "publishConfig": {
63
65
  "access": "public",
package/dist/build.d.ts DELETED
@@ -1 +0,0 @@
1
- export {};
@@ -1,2 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare const registerAppCommand: (program: Command) => void;
@@ -1,2 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare const registerComponentCommand: (program: Command) => void;
@@ -1,2 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare const registerDoctorCommand: (program: Command) => void;
@@ -1,2 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare const registerEnvCommand: (program: Command) => void;
@@ -1,2 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare const registerFaviconCommand: (program: Command) => void;
@@ -1,2 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare const registerFeatureCommand: (program: Command) => void;
@@ -1,2 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare const registerHookCommand: (program: Command) => void;
@@ -1,2 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare const registerCommands: (program: Command) => void;
@@ -1,2 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare const registerLayoutCommand: (program: Command) => void;
@@ -1,2 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare const registerLocaleCommand: (program: Command) => void;
@@ -1,2 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare const registerPageCommand: (program: Command) => void;
@@ -1,2 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare const registerProviderCommand: (program: Command) => void;
@@ -1,2 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare const registerRemoveCommand: (program: Command) => void;
@@ -1,2 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare const registerServiceCommand: (program: Command) => void;
@@ -1,2 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare const registerSetupCommand: (program: Command) => void;
@@ -1,2 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare const registerSliceCommand: (program: Command) => void;
@@ -1,2 +0,0 @@
1
- import type { Command } from 'commander';
2
- export declare const registerTestCommand: (program: Command) => void;
File without changes
@@ -1,6 +0,0 @@
1
- export type SetupOptions = {
2
- logger?: (msg: string) => void;
3
- exitOnCancel?: boolean;
4
- };
5
- export declare function setupCancellationHandlers(options?: SetupOptions): () => void;
6
- export default setupCancellationHandlers;
@@ -1,5 +0,0 @@
1
- export * from './errorHandlers';
2
- export * from './output';
3
- export * from './spinner';
4
- export * from './utils';
5
- export declare const spinner: import("ora").Ora;
@@ -1,10 +0,0 @@
1
- export type Color = 'reset' | 'red' | 'green' | 'yellow' | 'blue' | 'cyan' | 'magenta' | 'white' | 'gray' | 'bright' | 'dim';
2
- export declare function print(message: string, color?: Color): void;
3
- export declare function printHeader(title: string): void;
4
- export declare function success(message: string): void;
5
- export declare function error(message: string): void;
6
- export declare const logError: typeof error;
7
- export declare function warning(message: string): void;
8
- export declare function info(message: string): void;
9
- export declare function log(message: string): void;
10
- export declare function printBanner(): void;
@@ -1,25 +0,0 @@
1
- export declare const PACKAGES: {
2
- readonly REDUX_TOOLKIT: "@reduxjs/toolkit";
3
- readonly REACT_REDUX: "react-redux";
4
- readonly REDUX: "redux";
5
- readonly REDUX_PERSIST: "redux-persist";
6
- readonly REACT_SECURE_STORAGE: "react-secure-storage";
7
- readonly NEXT_INTL: "next-intl";
8
- readonly NEXT_THEMES: "@teispace/next-themes";
9
- readonly AXIOS: "axios";
10
- readonly HUSKY: "husky";
11
- readonly COMMITLINT_CLI: "@commitlint/cli";
12
- readonly COMMITLINT_CONFIG: "@commitlint/config-conventional";
13
- readonly LINT_STAGED: "lint-staged";
14
- readonly COMMITIZEN: "commitizen";
15
- readonly CZ_CONVENTIONAL_CHANGELOG: "cz-conventional-changelog";
16
- readonly VITEST: "vitest";
17
- readonly JSDOM: "jsdom";
18
- readonly VITE_PLUGIN_REACT: "@vitejs/plugin-react";
19
- readonly TESTING_LIBRARY_DOM: "@testing-library/dom";
20
- readonly TESTING_LIBRARY_JEST_DOM: "@testing-library/jest-dom";
21
- readonly TESTING_LIBRARY_REACT: "@testing-library/react";
22
- readonly TESTING_LIBRARY_USER_EVENT: "@testing-library/user-event";
23
- readonly REACT_COMPILER_BABEL: "babel-plugin-react-compiler";
24
- readonly NEXT_BUNDLE_ANALYZER: "@next/bundle-analyzer";
25
- };
@@ -1,28 +0,0 @@
1
- /**
2
- * Assert a name is a single safe segment. Rejects empty, path separators,
3
- * `..`, absolute paths, Windows reserved names, and anything outside
4
- * kebab/camel-case word characters.
5
- *
6
- * @throws Error with an actionable message when invalid.
7
- */
8
- export declare function assertSafeSegment(name: string, label?: string): string;
9
- /**
10
- * Assert a relative path is a safe, slash-separated list of segments. Used for
11
- * `--path` / `--feature`. Rejects absolute paths, drive letters, and any
12
- * segment that isn't a valid `SEGMENT_RE` (which inherently rules out `..`,
13
- * dots, backslashes, and non-ASCII — so there is no need for a separate,
14
- * over-broad `includes('..')` check that would also reject legitimate names
15
- * like `foo..bar`).
16
- *
17
- * @throws Error with an actionable message when invalid.
18
- */
19
- export declare function assertSafeRelativePath(relPath: string, label?: string): string;
20
- /**
21
- * Resolve `relativePath` against `root` and guarantee the result stays inside
22
- * `root`. This is the last line of defense even after segment validation —
23
- * symlinks or unusual inputs can still escape, so callers that build a final
24
- * write path should resolve through here.
25
- *
26
- * @throws Error if the resolved path escapes `root`.
27
- */
28
- export declare function resolveInside(root: string, ...relativeParts: string[]): string;
@@ -1,93 +0,0 @@
1
- export declare const PROJECT_PATHS: {
2
- readonly NEXT_CONFIG: "next.config.ts";
3
- readonly POSTCSS_CONFIG: "postcss.config.mjs";
4
- readonly BIOME_CONFIG: "biome.json";
5
- readonly VITEST_CONFIG: "vitest.config.ts";
6
- readonly TEST_DIR: "test";
7
- readonly TS_CONFIG: "tsconfig.json";
8
- readonly PACKAGE_JSON: "package.json";
9
- readonly ENV_EXAMPLE: ".env.example";
10
- readonly GITIGNORE: ".gitignore";
11
- readonly README: "README.md";
12
- readonly LICENSE: "LICENSE";
13
- readonly CHANGELOG: "CHANGELOG.md";
14
- readonly NVM_RC: ".nvmrc";
15
- readonly NPM_RC: ".npmrc";
16
- readonly AGENTS_MD: "AGENTS.md";
17
- readonly CLAUDE_MD: "CLAUDE.md";
18
- readonly SRC: "src";
19
- readonly APP: "src/app";
20
- readonly COMPONENTS: "src/components";
21
- readonly LIB: "src/lib";
22
- readonly PROVIDERS: "src/providers";
23
- readonly STYLES: "src/styles";
24
- readonly TYPES: "src/types";
25
- readonly UTILS: "src/lib/utils";
26
- readonly HOOKS: "src/hooks";
27
- readonly SERVICES: "src/services";
28
- readonly STORE: "src/store";
29
- readonly I18N: "src/i18n";
30
- readonly GLOBALS_CSS: "src/styles/globals.css";
31
- readonly ROOT_LAYOUT: "src/app/layout.tsx";
32
- readonly ROOT_PAGE: "src/app/page.tsx";
33
- readonly ROOT_PROVIDER: "src/providers/RootProvider.tsx";
34
- readonly PROVIDERS_INDEX: "src/providers/index.ts";
35
- readonly COMPONENTS_INDEX: "src/components/index.ts";
36
- readonly TYPES_INDEX: "src/types/index.ts";
37
- readonly UTILS_INDEX: "src/lib/utils/index.ts";
38
- readonly CONFIG_INDEX: "src/lib/config/index.ts";
39
- readonly CONSTANTS: "src/lib/config/constants.ts";
40
- readonly APP_LOCALES: "src/lib/config/app-locales.ts";
41
- readonly SEO_FILE: "src/lib/config/seo.ts";
42
- readonly SITEMAP_FILE: "src/app/sitemap.ts";
43
- readonly MIDDLEWARE: "src/middleware.ts";
44
- readonly PROXY: "src/proxy.ts";
45
- readonly I18N_TYPES: "src/types/i18n.ts";
46
- readonly HTTP_UTILS: "src/lib/utils/http";
47
- readonly HTTP_SHARED: "src/lib/utils/http/shared";
48
- readonly HTTP_SERVER_FILE: "src/lib/utils/http/server.ts";
49
- readonly HTTP_BUNDLE_SENTINEL_DIR: "src/lib/utils/http/__bundle-sentinel__";
50
- readonly HTTP_BUNDLE_SENTINEL_FILE: "src/lib/utils/http/__bundle-sentinel__/client-bundle-sentinel.tsx";
51
- readonly WS_UTILS: "src/lib/utils/ws";
52
- readonly WS_SLICE_FILE: "src/store/slices/ws.slice.ts";
53
- readonly ROOT_REDUCER: "src/store/rootReducer.ts";
54
- readonly TEST_SETUP_FILE: "test/setup.ts";
55
- readonly AXIOS_CLIENT: "src/lib/utils/http/axios-client";
56
- readonly FETCH_CLIENT: "src/lib/utils/http/fetch-client";
57
- readonly AXIOS_CLIENT_FILE: "src/lib/utils/http/axios-client/index.ts";
58
- readonly FETCH_CLIENT_FILE: "src/lib/utils/http/fetch-client/index.ts";
59
- readonly CLIENT_UTILS: "src/lib/utils/http/client-utils.ts";
60
- readonly APP_APIS: "src/lib/config/app-apis.ts";
61
- readonly API_URL_FILE: "src/lib/config/api-url.ts";
62
- readonly STORAGE_SERVICE: "src/services/storage";
63
- readonly COUNTER_FEATURE: "src/features/counter";
64
- readonly I18N_DIR: "src/i18n";
65
- readonly LOCALE_DIR: "src/app/[locale]";
66
- readonly ERRORS_DIR: "src/lib/errors";
67
- readonly UTILITY_TYPES_DIR: "src/types/utility";
68
- readonly COMMON_TYPES_DIR: "src/types/common";
69
- readonly HTTP_TYPES: "src/types/common/http.types.ts";
70
- readonly GITHUB_DIR: ".github";
71
- readonly HUSKY_DIR: ".husky";
72
- readonly STORE_PROVIDER: "src/providers/StoreProvider.tsx";
73
- readonly THEME_PROVIDER: "src/providers/CustomThemeProvider.tsx";
74
- readonly COUNTER_COMPONENT: "src/features/counter/components/Counter.tsx";
75
- readonly LOCALE_PAGE: "src/app/[locale]/page.tsx";
76
- readonly LOCALE_LAYOUT: "src/app/[locale]/layout.tsx";
77
- readonly COMMITLINT_CONFIG: "commitlint.config.mjs";
78
- readonly LINTSTAGED_RC: ".lintstagedrc.mjs";
79
- readonly CZRC: ".czrc";
80
- readonly DOCKERIGNORE: ".dockerignore";
81
- readonly DOCKERFILE: "Dockerfile";
82
- readonly DOCKER_COMPOSE: "docker-compose.yml";
83
- readonly GITHUB_WORKFLOWS: ".github/workflows";
84
- readonly GITHUB_ISSUE_TEMPLATE: "ISSUE_TEMPLATE";
85
- readonly GITHUB_PR_TEMPLATE: "PULL_REQUEST_TEMPLATE.md";
86
- readonly CODE_OF_CONDUCT: "CODE_OF_CONDUCT.md";
87
- readonly CONTRIBUTING: "CONTRIBUTING.md";
88
- readonly SECURITY: "SECURITY.md";
89
- readonly SCRIPTS_DIR: "scripts";
90
- readonly DOCS_DIR: "docs";
91
- readonly CLAUDE_DIR: ".claude";
92
- readonly VSCODE_DIR: ".vscode";
93
- };
@@ -1,11 +0,0 @@
1
- import { type Options, type Ora } from 'ora';
2
- export declare function startSpinner(text?: string, options?: Options): Ora;
3
- export declare function stopSpinner(spinner: Ora): void;
4
- export declare function succeedSpinner(spinner: Ora, text?: string): void;
5
- export declare function failSpinner(spinner: Ora, text?: string): void;
6
- export declare function withSpinner<T>(text: string, fn: () => Promise<T>, { successText, failText, options, }?: {
7
- successText?: string;
8
- failText?: string;
9
- options?: Options;
10
- }): Promise<T>;
11
- export default startSpinner;
@@ -1,4 +0,0 @@
1
- export declare const capitalize: (str: string) => string;
2
- export declare const kebabToCamel: (str: string) => string;
3
- export declare const kebabToPascal: (str: string) => string;
4
- export declare const camelToKebab: (str: string) => string;
@@ -1,7 +0,0 @@
1
- export declare const readFile: (filePath: string) => Promise<string>;
2
- export declare const writeFile: (filePath: string, content: string) => Promise<void>;
3
- export declare const copyFile: (source: string, destination: string) => Promise<void>;
4
- export declare const deleteFile: (filePath: string) => Promise<void>;
5
- export declare const deleteDirectory: (dirPath: string) => Promise<void>;
6
- export declare const updateJson: <T = any>(filePath: string, update: (json: T) => T) => Promise<void>;
7
- export declare const fileExists: (filePath: string) => boolean;
@@ -1,9 +0,0 @@
1
- /**
2
- * Validate a git remote URL/spec before use. Even though argv form already
3
- * neutralizes injection, we reject obviously malformed values (and a leading
4
- * `-` that git would treat as an option) for clear, early errors.
5
- */
6
- export declare function assertValidRemote(remote: string): void;
7
- export declare const initializeGit: (cwd: string, gitRemote?: string, pushToRemote?: boolean) => Promise<void>;
8
- export declare const addRemote: (cwd: string, url: string) => Promise<void>;
9
- export declare const isGitInstalled: () => Promise<boolean>;
@@ -1,11 +0,0 @@
1
- export type PackageManager = 'npm' | 'yarn' | 'pnpm' | 'bun';
2
- export declare const installDependencies: (cwd: string, manager: PackageManager) => Promise<void>;
3
- export declare const runScript: (cwd: string, manager: PackageManager, script: string) => Promise<void>;
4
- export declare const getPackageManager: () => PackageManager;
5
- export declare const detectPackageManager: (cwd: string) => Promise<PackageManager>;
6
- export declare const installPackages: (cwd: string, manager: PackageManager, packages: string[]) => Promise<void>;
7
- export declare const installPackage: (cwd: string, packageName: string) => Promise<void>;
8
- export declare const installDevPackages: (cwd: string, manager: PackageManager, packages: string[]) => Promise<void>;
9
- export declare const installDevPackage: (cwd: string, packageName: string) => Promise<void>;
10
- export declare const uninstallPackages: (cwd: string, manager: PackageManager, packages: string[]) => Promise<void>;
11
- export declare const uninstallPackage: (cwd: string, packageName: string) => Promise<void>;
@@ -1,8 +0,0 @@
1
- /**
2
- * Check if a directory exists at projectPath/basePath/name.
3
- */
4
- export declare const directoryExists: (projectPath: string, name: string, basePath: string) => Promise<boolean>;
5
- /**
6
- * Check if a specific file exists at projectPath/basePath/fileName.
7
- */
8
- export declare const fileExistsAt: (projectPath: string, basePath: string, fileName: string) => boolean;
@@ -1,3 +0,0 @@
1
- export { directoryExists, fileExistsAt } from './existence.checker';
2
- export type { ProjectDetection } from './project.detector';
3
- export { detectProjectSetup } from './project.detector';
@@ -1,14 +0,0 @@
1
- export interface ProjectDetection {
2
- hasRedux: boolean;
3
- httpClient: 'axios' | 'fetch' | 'both' | 'none';
4
- hasI18n: boolean;
5
- hasTests: boolean;
6
- /**
7
- * `'present'` when both the `socket.io-client` dependency and the
8
- * `src/lib/utils/ws/` directory exist. The dual signal mirrors httpClient
9
- * — a stray dep without the directory (or vice-versa) is reported as
10
- * `'none'` so doctor's "is this feature installed?" check stays honest.
11
- */
12
- ws: 'none' | 'present';
13
- }
14
- export declare const detectProjectSetup: (projectPath: string) => Promise<ProjectDetection>;
@@ -1,8 +0,0 @@
1
- export interface ComponentGeneratorOptions {
2
- name: string;
3
- projectPath: string;
4
- isClient: boolean;
5
- hasI18n: boolean;
6
- featurePath?: string;
7
- }
8
- export declare const generateComponent: (options: ComponentGeneratorOptions) => Promise<void>;
@@ -1,5 +0,0 @@
1
- import type { ServiceGeneratorOptions } from './types';
2
- /**
3
- * Generate a CRUD API service file with getAll, getById, create, update, delete methods + DTO types.
4
- */
5
- export declare const generateCrudService: (options: ServiceGeneratorOptions) => Promise<void>;
@@ -1,6 +0,0 @@
1
- import type { FeatureGeneratorOptions } from './types';
2
- /**
3
- * Generate a complete feature module with component, hook, types,
4
- * and optionally store (slice) and service sub-modules.
5
- */
6
- export declare const generateFeature: (options: FeatureGeneratorOptions) => Promise<void>;
@@ -1,7 +0,0 @@
1
- export interface HookGeneratorOptions {
2
- name: string;
3
- projectPath: string;
4
- isClient: boolean;
5
- featurePath?: string;
6
- }
7
- export declare const generateHook: (options: HookGeneratorOptions) => Promise<void>;
@@ -1,19 +0,0 @@
1
- export type { ComponentGeneratorOptions } from './component.generator';
2
- export { generateComponent } from './component.generator';
3
- export { generateCrudService } from './crud-service.generator';
4
- export { generateFeature } from './feature.generator';
5
- export type { HookGeneratorOptions } from './hook.generator';
6
- export { generateHook } from './hook.generator';
7
- export type { LayoutGeneratorOptions, LayoutGeneratorResult, } from './layout.generator';
8
- export { generateLayout } from './layout.generator';
9
- export type { LocaleGeneratorOptions } from './locale.generator';
10
- export { generateLocale } from './locale.generator';
11
- export type { PageGeneratorOptions } from './page.generator';
12
- export { generatePage } from './page.generator';
13
- export type { ProviderGeneratorOptions, ProviderGeneratorResult, } from './provider.generator';
14
- export { generateProvider } from './provider.generator';
15
- export { generateService } from './service.generator';
16
- export { generateSlice } from './slice.generator';
17
- export type { GenerateTestOptions, TestKind } from './test.generator';
18
- export { generateTest } from './test.generator';
19
- export type { FeatureGeneratorOptions, ServiceGeneratorOptions, SliceGeneratorOptions, } from './types';
@@ -1,21 +0,0 @@
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>;
@@ -1,9 +0,0 @@
1
- export interface LocaleGeneratorOptions {
2
- code: string;
3
- name: string;
4
- country: string;
5
- flag: string;
6
- projectPath: string;
7
- copyTranslations: boolean;
8
- }
9
- export declare const generateLocale: (options: LocaleGeneratorOptions) => Promise<void>;
@@ -1,9 +0,0 @@
1
- export interface PageGeneratorOptions {
2
- name: string;
3
- projectPath: string;
4
- hasI18n: boolean;
5
- dynamic?: string;
6
- withLoading?: boolean;
7
- withError?: boolean;
8
- }
9
- export declare const generatePage: (options: PageGeneratorOptions) => Promise<void>;
@@ -1,13 +0,0 @@
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>;
@@ -1,5 +0,0 @@
1
- import type { ServiceGeneratorOptions } from './types';
2
- /**
3
- * Generate an API service file for the given HTTP client.
4
- */
5
- export declare const generateService: (options: ServiceGeneratorOptions) => Promise<void>;
@@ -1,10 +0,0 @@
1
- import type { SliceGeneratorOptions } from './types';
2
- /**
3
- * Generate a complete Redux slice with types, selectors, optional persist, and barrel export.
4
- *
5
- * Used by both the `slice` command (standalone) and the `feature` command (embedded in feature/store/).
6
- * The `typesImportPath` controls whether types are imported from `../types/` (feature) or `./` (standalone).
7
- */
8
- export declare const generateSlice: (options: SliceGeneratorOptions & {
9
- typesImportPath?: string;
10
- }) => Promise<void>;
@@ -1,11 +0,0 @@
1
- export declare const sliceBarrelTemplate: (params: {
2
- sliceName: string;
3
- withPersist: boolean;
4
- }) => string;
5
- export declare const featureBarrelTemplate: (params: {
6
- featureName: string;
7
- componentName: string;
8
- hookName: string;
9
- withStore: boolean;
10
- withService: boolean;
11
- }) => string;
@@ -1,4 +0,0 @@
1
- export declare const componentTemplate: (params: {
2
- componentName: string;
3
- hookName: string;
4
- }) => string;
@@ -1,9 +0,0 @@
1
- export declare const crudServiceTemplate: (params: {
2
- camelName: string;
3
- pascalName: string;
4
- httpClient: "axios" | "fetch";
5
- }) => string;
6
- export declare const crudApiConfigTemplate: (params: {
7
- camelName: string;
8
- kebabName: string;
9
- }) => string;
@@ -1,4 +0,0 @@
1
- export declare const customHookTemplate: (params: {
2
- hookName: string;
3
- isClient: boolean;
4
- }) => string;
@@ -1,8 +0,0 @@
1
- export declare const hookWithStoreTemplate: (params: {
2
- hookName: string;
3
- componentName: string;
4
- featureName: string;
5
- }) => string;
6
- export declare const hookWithoutStoreTemplate: (params: {
7
- hookName: string;
8
- }) => string;
@@ -1,12 +0,0 @@
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;
@@ -1,17 +0,0 @@
1
- export declare const pageTemplate: (params: {
2
- componentName: string;
3
- routePath: string;
4
- hasI18n: boolean;
5
- }) => string;
6
- export declare const dynamicPageTemplate: (params: {
7
- componentName: string;
8
- routePath: string;
9
- paramName: string;
10
- hasI18n: boolean;
11
- }) => string;
12
- export declare const loadingTemplate: (params: {
13
- componentName: string;
14
- }) => string;
15
- export declare const errorTemplate: (params: {
16
- componentName: string;
17
- }) => string;
@@ -1,5 +0,0 @@
1
- export declare const persistTemplate: (params: {
2
- componentName: string;
3
- camelName: string;
4
- typesImportPath: string;
5
- }) => string;
@@ -1,11 +0,0 @@
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;