@reliverse/dler 1.7.15 → 1.7.17

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 (167) hide show
  1. package/README.md +164 -191
  2. package/bin/app/agg/run.js +2 -8
  3. package/bin/app/build/cmd.js +4 -4
  4. package/bin/app/build/impl.d.ts +2 -6
  5. package/bin/app/build/impl.js +2 -46
  6. package/bin/app/conv/cmd.d.ts +8 -33
  7. package/bin/app/conv/cmd.js +185 -163
  8. package/bin/app/copy/cmd.js +1 -1
  9. package/bin/app/init/init-impl.js +3 -3
  10. package/bin/app/init/init-types.d.ts +8 -8
  11. package/bin/app/merge/cmd.d.ts +17 -17
  12. package/bin/app/merge/cmd.js +70 -310
  13. package/bin/app/migrate/codemods/anything-bun.js +1 -1
  14. package/bin/app/migrate/codemods/fs-relifso.d.ts +2 -2
  15. package/bin/app/migrate/codemods/fs-relifso.js +1 -1
  16. package/bin/app/migrate/codemods/nodenext-bundler.d.ts +2 -2
  17. package/bin/app/migrate/codemods/nodenext-bundler.js +1 -1
  18. package/bin/app/migrate/codemods/path-pathkit.d.ts +2 -2
  19. package/bin/app/migrate/codemods/path-pathkit.js +1 -1
  20. package/bin/app/migrate/codemods/readdir-glob.d.ts +2 -2
  21. package/bin/app/migrate/codemods/readdir-glob.js +1 -1
  22. package/bin/app/mkdist/cmd.js +4 -2
  23. package/bin/app/pack/cmd.d.ts +44 -0
  24. package/bin/app/pack/cmd.js +313 -0
  25. package/bin/app/pub/cmd.js +4 -4
  26. package/bin/app/pub/impl.d.ts +7 -0
  27. package/bin/app/pub/impl.js +97 -0
  28. package/bin/app/rename/cmd.js +1 -1
  29. package/bin/app/spell/cmd.d.ts +14 -5
  30. package/bin/app/spell/cmd.js +33 -33
  31. package/bin/app/spell/old.js +0 -0
  32. package/bin/app/{mock → unpack}/cmd.d.ts +10 -14
  33. package/bin/app/unpack/cmd.js +200 -0
  34. package/bin/cli.js +2 -2
  35. package/bin/libs/cfg/cfg-mod.d.ts +69 -0
  36. package/bin/libs/cfg/cfg-mod.js +61 -0
  37. package/bin/libs/cfg/rse/rse-impl/rse-biome.d.ts +2 -0
  38. package/bin/libs/cfg/rse/rse-impl/rse-biome.js +34 -0
  39. package/bin/libs/cfg/rse/rse-impl/rse-consts.d.ts +35 -0
  40. package/bin/libs/cfg/rse/rse-impl/rse-consts.js +37 -0
  41. package/bin/libs/cfg/rse/rse-impl/rse-content.d.ts +14 -0
  42. package/bin/libs/cfg/rse/rse-impl/rse-content.js +15 -0
  43. package/bin/libs/cfg/rse/rse-impl/rse-core.d.ts +14 -0
  44. package/bin/libs/cfg/rse/rse-impl/rse-core.js +63 -0
  45. package/bin/libs/cfg/rse/rse-impl/rse-create.d.ts +36 -0
  46. package/bin/libs/cfg/rse/rse-impl/rse-create.js +254 -0
  47. package/bin/libs/cfg/rse/rse-impl/rse-def-utils.d.ts +6 -0
  48. package/bin/libs/cfg/rse/rse-impl/rse-def-utils.js +225 -0
  49. package/bin/libs/cfg/rse/rse-impl/rse-default.d.ts +3 -0
  50. package/bin/libs/cfg/rse/rse-impl/rse-default.js +155 -0
  51. package/bin/libs/cfg/rse/rse-impl/rse-define.d.ts +125 -0
  52. package/bin/libs/cfg/rse/rse-impl/rse-define.js +4 -0
  53. package/bin/libs/cfg/rse/rse-impl/rse-detect.d.ts +23 -0
  54. package/bin/libs/cfg/rse/rse-impl/rse-detect.js +347 -0
  55. package/bin/libs/cfg/rse/rse-impl/rse-gen-cfg.d.ts +3 -0
  56. package/bin/libs/cfg/rse/rse-impl/rse-gen-cfg.js +186 -0
  57. package/bin/libs/cfg/rse/rse-impl/rse-inject.d.ts +1 -0
  58. package/bin/libs/cfg/rse/rse-impl/rse-inject.js +57 -0
  59. package/bin/libs/cfg/rse/rse-impl/rse-migrate.d.ts +5 -0
  60. package/bin/libs/cfg/rse/rse-impl/rse-migrate.js +56 -0
  61. package/bin/libs/cfg/rse/rse-impl/rse-path.d.ts +11 -0
  62. package/bin/libs/cfg/rse/rse-impl/rse-path.js +33 -0
  63. package/bin/libs/cfg/rse/rse-impl/rse-prompts.d.ts +5 -0
  64. package/bin/libs/cfg/rse/rse-impl/rse-prompts.js +12 -0
  65. package/bin/libs/cfg/rse/rse-impl/rse-read.d.ts +11 -0
  66. package/bin/libs/cfg/rse/rse-impl/rse-read.js +84 -0
  67. package/bin/libs/cfg/rse/rse-impl/rse-repair.d.ts +16 -0
  68. package/bin/libs/cfg/rse/rse-impl/rse-repair.js +137 -0
  69. package/bin/libs/cfg/rse/rse-impl/rse-schema.d.ts +130 -0
  70. package/bin/libs/cfg/rse/rse-impl/rse-schema.js +444 -0
  71. package/bin/libs/cfg/rse/rse-impl/rse-types.d.ts +75 -0
  72. package/bin/libs/cfg/rse/rse-impl/rse-types.js +0 -0
  73. package/bin/libs/cfg/rse/rse-impl/rse-unstable.d.ts +11 -0
  74. package/bin/libs/cfg/rse/rse-impl/rse-unstable.js +41 -0
  75. package/bin/libs/cfg/rse/rse-impl/rse-update.d.ts +10 -0
  76. package/bin/libs/cfg/rse/rse-impl/rse-update.js +152 -0
  77. package/bin/libs/cfg/rse/rse-impl/rse-utils.d.ts +17 -0
  78. package/bin/libs/cfg/rse/rse-impl/rse-utils.js +86 -0
  79. package/bin/libs/cfg/rse/rse-mod.d.ts +20 -0
  80. package/bin/libs/cfg/rse/rse-mod.js +20 -0
  81. package/bin/libs/cfg/types.d.ts +533 -0
  82. package/bin/libs/cfg/types.js +0 -0
  83. package/bin/libs/sdk/sdk-impl/build/build-library.d.ts +5 -5
  84. package/bin/libs/sdk/sdk-impl/build/build-library.js +1 -174
  85. package/bin/libs/sdk/sdk-impl/build/build-regular.d.ts +2 -1
  86. package/bin/libs/sdk/sdk-impl/build/bundlers/unified/build.js +287 -240
  87. package/bin/libs/sdk/sdk-impl/build/bundlers/unified/mkdist/mkdist-impl/loaders/vue.d.ts +4 -4
  88. package/bin/libs/sdk/sdk-impl/build/bundlers/unified/mkdist/mkdist-impl/make.d.ts +8 -5
  89. package/bin/libs/sdk/sdk-impl/build/bundlers/unified/mkdist/mkdist-impl/make.js +199 -119
  90. package/bin/libs/sdk/sdk-impl/build/bundlers/unified/mkdist/mkdist-impl/utils/spinner.d.ts +99 -0
  91. package/bin/libs/sdk/sdk-impl/build/bundlers/unified/mkdist/mkdist-impl/utils/spinner.js +206 -0
  92. package/bin/libs/sdk/sdk-impl/build/bundlers/unified/mkdist/mkdist-mod.js +92 -46
  93. package/bin/libs/sdk/sdk-impl/build/bundlers/unified/rollup/plugins/raw.d.ts +2 -2
  94. package/bin/libs/sdk/sdk-impl/build/bundlers/unified/utils.d.ts +2 -2
  95. package/bin/libs/sdk/sdk-impl/config/default.d.ts +6 -0
  96. package/bin/libs/sdk/sdk-impl/{cfg → config}/default.js +8 -18
  97. package/bin/libs/sdk/sdk-impl/{cfg → config}/info.js +1 -1
  98. package/bin/libs/sdk/sdk-impl/{cfg → config}/init.js +53 -43
  99. package/bin/libs/sdk/sdk-impl/{cfg → config}/load.d.ts +2 -2
  100. package/bin/libs/sdk/sdk-impl/{cfg → config}/load.js +6 -6
  101. package/bin/libs/sdk/sdk-impl/config/types.d.ts +533 -0
  102. package/bin/libs/sdk/sdk-impl/config/types.js +0 -0
  103. package/bin/libs/sdk/sdk-impl/library-flow.d.ts +2 -1
  104. package/bin/libs/sdk/sdk-impl/pub/pub-library.js +7 -0
  105. package/bin/libs/sdk/sdk-impl/pub/pub-regular.js +4 -8
  106. package/bin/libs/sdk/sdk-impl/regular-flow.d.ts +2 -1
  107. package/bin/libs/sdk/sdk-impl/rules/reliverse/dler-config-health/dler-config-health.js +2 -2
  108. package/bin/libs/sdk/sdk-impl/rules/reliverse/missing-deps/deps-types.d.ts +6 -6
  109. package/bin/libs/sdk/sdk-impl/rules/reliverse/missing-deps/filesystem.js +1 -1
  110. package/bin/libs/sdk/sdk-impl/rules/reliverse/no-index-files/no-index-files.js +1 -1
  111. package/bin/libs/sdk/sdk-impl/rules/reliverse/self-include/self-include.js +2 -2
  112. package/bin/libs/sdk/sdk-impl/spell/applyMagicSpells.d.ts +38 -0
  113. package/bin/libs/sdk/sdk-impl/spell/applyMagicSpells.js +474 -0
  114. package/bin/libs/sdk/sdk-impl/spell/spells.d.ts +31 -0
  115. package/bin/libs/sdk/sdk-impl/spell/spells.js +85 -0
  116. package/bin/libs/sdk/sdk-impl/utils/binary.js +1 -1
  117. package/bin/libs/sdk/sdk-impl/utils/comments.d.ts +6 -0
  118. package/bin/libs/sdk/sdk-impl/utils/comments.js +41 -0
  119. package/bin/libs/sdk/sdk-impl/utils/finalize.d.ts +2 -1
  120. package/bin/libs/sdk/sdk-impl/utils/finalize.js +1 -0
  121. package/bin/libs/sdk/sdk-impl/utils/pack-unpack/pu-constants.d.ts +6 -0
  122. package/bin/libs/sdk/sdk-impl/utils/pack-unpack/pu-constants.js +7 -0
  123. package/bin/libs/sdk/sdk-impl/utils/pack-unpack/pu-file-utils.d.ts +5 -0
  124. package/bin/libs/sdk/sdk-impl/utils/pack-unpack/pu-file-utils.js +40 -0
  125. package/bin/libs/sdk/sdk-impl/utils/pack-unpack/pu-types.d.ts +24 -0
  126. package/bin/libs/sdk/sdk-impl/utils/pack-unpack/pu-types.js +0 -0
  127. package/bin/libs/sdk/sdk-impl/utils/pack-unpack/pub-json-utils.d.ts +17 -0
  128. package/bin/libs/sdk/sdk-impl/utils/pack-unpack/pub-json-utils.js +46 -0
  129. package/bin/libs/sdk/sdk-impl/utils/replacements.d.ts +0 -0
  130. package/bin/libs/sdk/sdk-impl/utils/replacements.js +0 -0
  131. package/bin/libs/sdk/sdk-impl/utils/resolve-cross-libs.d.ts +3 -0
  132. package/bin/libs/sdk/sdk-impl/utils/resolve-cross-libs.js +194 -0
  133. package/bin/libs/sdk/sdk-impl/utils/utils-build.d.ts +1 -2
  134. package/bin/libs/sdk/sdk-impl/utils/utils-clean.d.ts +1 -1
  135. package/bin/libs/sdk/sdk-impl/utils/utils-deps.d.ts +1 -1
  136. package/bin/libs/sdk/sdk-impl/utils/utils-determine.d.ts +1 -1
  137. package/bin/libs/sdk/sdk-impl/utils/utils-error-cwd.d.ts +4 -0
  138. package/bin/libs/sdk/sdk-impl/utils/utils-error-cwd.js +1 -0
  139. package/bin/libs/sdk/sdk-impl/utils/utils-jsr-json.d.ts +1 -1
  140. package/bin/libs/sdk/sdk-impl/utils/utils-package-json-libraries.d.ts +1 -1
  141. package/bin/libs/sdk/sdk-impl/utils/utils-package-json-regular.d.ts +1 -1
  142. package/bin/libs/sdk/sdk-impl/utils/utils-security.d.ts +1 -3
  143. package/bin/libs/sdk/sdk-impl/utils/utils-security.js +11 -10
  144. package/bin/libs/sdk/sdk-mod.d.ts +1 -6
  145. package/bin/libs/sdk/sdk-mod.js +0 -31
  146. package/bin/libs/sdk/sdk-types.d.ts +39 -582
  147. package/bin/mod.d.ts +1 -1
  148. package/bin/mod.js +1 -1
  149. package/package.json +11 -4
  150. package/bin/app/mock/cmd.js +0 -284
  151. package/bin/app/mock/mock.d.ts +0 -11
  152. package/bin/app/mock/mock.js +0 -97
  153. package/bin/libs/sdk/sdk-impl/cfg/default.d.ts +0 -5
  154. package/bin/libs/sdk/sdk-impl/cfg/define.d.ts +0 -2
  155. package/bin/libs/sdk/sdk-impl/cfg/define.js +0 -4
  156. package/bin/libs/sdk/sdk-impl/spell/spell-executors.d.ts +0 -10
  157. package/bin/libs/sdk/sdk-impl/spell/spell-executors.js +0 -307
  158. package/bin/libs/sdk/sdk-impl/spell/spell-filesystem.d.ts +0 -7
  159. package/bin/libs/sdk/sdk-impl/spell/spell-filesystem.js +0 -74
  160. package/bin/libs/sdk/sdk-impl/spell/spell-mod.d.ts +0 -4
  161. package/bin/libs/sdk/sdk-impl/spell/spell-mod.js +0 -87
  162. package/bin/libs/sdk/sdk-impl/spell/spell-parser.d.ts +0 -4
  163. package/bin/libs/sdk/sdk-impl/spell/spell-parser.js +0 -58
  164. package/bin/libs/sdk/sdk-impl/spell/spell-types.d.ts +0 -60
  165. /package/bin/{libs/sdk/sdk-impl/spell/spell-types.js → app/spell/old.d.ts} +0 -0
  166. /package/bin/libs/sdk/sdk-impl/{cfg → config}/info.d.ts +0 -0
  167. /package/bin/libs/sdk/sdk-impl/{cfg → config}/init.d.ts +0 -0
@@ -0,0 +1,130 @@
1
+ export declare const rseSchema: import("@sinclair/typebox").TObject<{
2
+ $schema: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"https://reliverse.org/schema.json">, import("@sinclair/typebox").TLiteral<"./schema.json">]>>;
3
+ projectName: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"unknown">, import("@sinclair/typebox").TString]>>;
4
+ projectAuthor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"unknown">, import("@sinclair/typebox").TString]>>;
5
+ projectDescription: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
6
+ version: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
7
+ projectLicense: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
8
+ projectRepository: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
9
+ projectDomain: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
10
+ projectGitService: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"github">, import("@sinclair/typebox").TLiteral<"gitlab">, import("@sinclair/typebox").TLiteral<"bitbucket">, import("@sinclair/typebox").TLiteral<"none">]>>;
11
+ projectDeployService: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"vercel">, import("@sinclair/typebox").TLiteral<"netlify">, import("@sinclair/typebox").TLiteral<"railway">, import("@sinclair/typebox").TLiteral<"deno">, import("@sinclair/typebox").TLiteral<"none">]>>;
12
+ projectPackageManager: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"npm">, import("@sinclair/typebox").TLiteral<"pnpm">, import("@sinclair/typebox").TLiteral<"yarn">, import("@sinclair/typebox").TLiteral<"bun">]>>;
13
+ projectState: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"creating">, import("@sinclair/typebox").TLiteral<"created">]>>;
14
+ projectCategory: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"unknown">, import("@sinclair/typebox").TLiteral<"website">, import("@sinclair/typebox").TLiteral<"vscode">, import("@sinclair/typebox").TLiteral<"browser">, import("@sinclair/typebox").TLiteral<"cli">, import("@sinclair/typebox").TLiteral<"library">, import("@sinclair/typebox").TLiteral<"mobile">]>>;
15
+ projectSubcategory: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"unknown">, import("@sinclair/typebox").TLiteral<"e-commerce">, import("@sinclair/typebox").TLiteral<"tool">]>>;
16
+ projectFramework: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"unknown">, import("@sinclair/typebox").TLiteral<"nextjs">, import("@sinclair/typebox").TLiteral<"vite">, import("@sinclair/typebox").TLiteral<"svelte">, import("@sinclair/typebox").TLiteral<"remix">, import("@sinclair/typebox").TLiteral<"astro">, import("@sinclair/typebox").TLiteral<"nuxt">, import("@sinclair/typebox").TLiteral<"solid">, import("@sinclair/typebox").TLiteral<"qwik">, import("@sinclair/typebox").TLiteral<"vue">, import("@sinclair/typebox").TLiteral<"wxt">, import("@sinclair/typebox").TLiteral<"lynx">, import("@sinclair/typebox").TLiteral<"react-native">, import("@sinclair/typebox").TLiteral<"expo">, import("@sinclair/typebox").TLiteral<"capacitor">, import("@sinclair/typebox").TLiteral<"ionic">, import("@sinclair/typebox").TLiteral<"electron">, import("@sinclair/typebox").TLiteral<"tauri">, import("@sinclair/typebox").TLiteral<"neutralino">, import("@sinclair/typebox").TLiteral<"rempts">, import("@sinclair/typebox").TLiteral<"citty">, import("@sinclair/typebox").TLiteral<"commander">, import("@sinclair/typebox").TLiteral<"cac">, import("@sinclair/typebox").TLiteral<"meow">, import("@sinclair/typebox").TLiteral<"yargs">, import("@sinclair/typebox").TLiteral<"vscode">, import("@sinclair/typebox").TLiteral<"webextension">, import("@sinclair/typebox").TLiteral<"browser-extension">, import("@sinclair/typebox").TLiteral<"npm-jsr">]>>;
17
+ projectTemplate: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"unknown">, import("@sinclair/typebox").TLiteral<"blefnk/relivator-nextjs-template">, import("@sinclair/typebox").TLiteral<"blefnk/relivator-docker-template">, import("@sinclair/typebox").TLiteral<"blefnk/next-react-ts-src-minimal">, import("@sinclair/typebox").TLiteral<"blefnk/all-in-one-nextjs-template">, import("@sinclair/typebox").TLiteral<"blefnk/create-t3-app">, import("@sinclair/typebox").TLiteral<"blefnk/create-next-app">, import("@sinclair/typebox").TLiteral<"blefnk/astro-starlight-template">, import("@sinclair/typebox").TLiteral<"blefnk/versator-nextjs-template">, import("@sinclair/typebox").TLiteral<"blefnk/relivator-lynxjs-template">, import("@sinclair/typebox").TLiteral<"blefnk/relivator-react-native-template">, import("@sinclair/typebox").TLiteral<"reliverse/template-browser-extension">, import("@sinclair/typebox").TLiteral<"microsoft/vscode-extension-samples">, import("@sinclair/typebox").TLiteral<"microsoft/vscode-extension-template">, import("@sinclair/typebox").TLiteral<"rsetarter-template">, import("@sinclair/typebox").TLiteral<"blefnk/deno-cli-tutorial">]>>;
18
+ projectTemplateDate: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
19
+ features: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
20
+ i18n: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
21
+ analytics: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
22
+ themeMode: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"light">, import("@sinclair/typebox").TLiteral<"dark">, import("@sinclair/typebox").TLiteral<"dark-light">]>>;
23
+ authentication: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
24
+ api: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
25
+ database: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
26
+ testing: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
27
+ docker: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
28
+ ci: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
29
+ commands: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
30
+ webview: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
31
+ language: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
32
+ themes: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
33
+ }>>;
34
+ preferredLibraries: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
35
+ stateManagement: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"zustand">, import("@sinclair/typebox").TLiteral<"jotai">, import("@sinclair/typebox").TLiteral<"redux-toolkit">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
36
+ formManagement: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"react-hook-form">, import("@sinclair/typebox").TLiteral<"formik">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
37
+ styling: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"tailwind">, import("@sinclair/typebox").TLiteral<"styled-components">, import("@sinclair/typebox").TLiteral<"css-modules">, import("@sinclair/typebox").TLiteral<"sass">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
38
+ uiComponents: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"shadcn-ui">, import("@sinclair/typebox").TLiteral<"chakra-ui">, import("@sinclair/typebox").TLiteral<"material-ui">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
39
+ testing: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"bun">, import("@sinclair/typebox").TLiteral<"vitest">, import("@sinclair/typebox").TLiteral<"jest">, import("@sinclair/typebox").TLiteral<"playwright">, import("@sinclair/typebox").TLiteral<"cypress">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
40
+ authentication: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"better-auth">, import("@sinclair/typebox").TLiteral<"clerk">, import("@sinclair/typebox").TLiteral<"next-auth">, import("@sinclair/typebox").TLiteral<"supabase-auth">, import("@sinclair/typebox").TLiteral<"auth0">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
41
+ databaseLibrary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"drizzle">, import("@sinclair/typebox").TLiteral<"prisma">, import("@sinclair/typebox").TLiteral<"supabase">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
42
+ databaseProvider: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"pg">, import("@sinclair/typebox").TLiteral<"mysql">, import("@sinclair/typebox").TLiteral<"sqlite">, import("@sinclair/typebox").TLiteral<"mongodb">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
43
+ api: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"hono">, import("@sinclair/typebox").TLiteral<"trpc">, import("@sinclair/typebox").TLiteral<"graphql">, import("@sinclair/typebox").TLiteral<"rest">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
44
+ linting: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"eslint">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
45
+ formatting: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"biome">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
46
+ payment: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"stripe">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
47
+ analytics: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"vercel">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
48
+ monitoring: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"sentry">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
49
+ logging: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"axiom">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
50
+ forms: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"react-hook-form">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
51
+ notifications: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"sonner">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
52
+ search: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"algolia">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
53
+ uploads: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"uploadthing">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
54
+ validation: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"zod">, import("@sinclair/typebox").TLiteral<"typebox">, import("@sinclair/typebox").TLiteral<"valibot">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
55
+ documentation: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"starlight">, import("@sinclair/typebox").TLiteral<"nextra">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
56
+ icons: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"lucide">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
57
+ mail: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"resend">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
58
+ cache: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"redis">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
59
+ storage: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"cloudflare">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
60
+ cdn: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"cloudflare">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
61
+ cms: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"contentlayer">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
62
+ i18n: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"next-intl">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
63
+ seo: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"next-seo">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
64
+ motion: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"framer">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
65
+ charts: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"recharts">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
66
+ dates: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"dayjs">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
67
+ markdown: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"mdx">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
68
+ security: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"auth">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
69
+ routing: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"next">, import("@sinclair/typebox").TLiteral<"react-router">, import("@sinclair/typebox").TLiteral<"tanstack-router">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
70
+ }>>;
71
+ codeStyle: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
72
+ lineWidth: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
73
+ indentSize: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
74
+ indentStyle: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"space">, import("@sinclair/typebox").TLiteral<"tab">]>>;
75
+ quoteMark: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"single">, import("@sinclair/typebox").TLiteral<"double">]>>;
76
+ semicolons: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
77
+ trailingComma: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"none">, import("@sinclair/typebox").TLiteral<"es5">, import("@sinclair/typebox").TLiteral<"all">]>>;
78
+ bracketSpacing: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
79
+ arrowParens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"always">, import("@sinclair/typebox").TLiteral<"avoid">]>>;
80
+ tabWidth: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
81
+ jsToTs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
82
+ dontRemoveComments: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
83
+ shouldAddComments: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
84
+ typeOrInterface: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"type">, import("@sinclair/typebox").TLiteral<"interface">, import("@sinclair/typebox").TLiteral<"mixed">]>>;
85
+ importOrRequire: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"import">, import("@sinclair/typebox").TLiteral<"require">, import("@sinclair/typebox").TLiteral<"mixed">]>>;
86
+ cjsToEsm: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
87
+ modernize: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
88
+ replaceFs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
89
+ replacePath: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
90
+ replaceHttp: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
91
+ replaceProcess: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
92
+ replaceConsole: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
93
+ replaceEvents: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
94
+ }>>;
95
+ importSymbol: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
96
+ }>>;
97
+ monorepo: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
98
+ type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"none">, import("@sinclair/typebox").TLiteral<"turborepo">, import("@sinclair/typebox").TLiteral<"nx">, import("@sinclair/typebox").TLiteral<"pnpm">, import("@sinclair/typebox").TLiteral<"bun">]>>;
99
+ packages: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
100
+ sharedPackages: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
101
+ }>>;
102
+ ignoreDependencies: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
103
+ customRules: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnknown>>;
104
+ multipleRepoCloneMode: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
105
+ customUserFocusedRepos: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
106
+ customDevsFocusedRepos: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
107
+ hideRepoSuggestions: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
108
+ customReposOnNewProject: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
109
+ envComposerOpenBrowser: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
110
+ repoBranch: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
111
+ repoPrivacy: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"unknown">, import("@sinclair/typebox").TLiteral<"public">, import("@sinclair/typebox").TLiteral<"private">]>>;
112
+ projectArchitecture: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"unknown">, import("@sinclair/typebox").TLiteral<"fullstack">, import("@sinclair/typebox").TLiteral<"separated">]>>;
113
+ projectRuntime: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"node">, import("@sinclair/typebox").TLiteral<"deno">, import("@sinclair/typebox").TLiteral<"bun">]>>;
114
+ skipPromptsUseAutoBehavior: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
115
+ deployBehavior: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"prompt">, import("@sinclair/typebox").TLiteral<"autoYes">, import("@sinclair/typebox").TLiteral<"autoNo">]>>;
116
+ depsBehavior: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"prompt">, import("@sinclair/typebox").TLiteral<"autoYes">, import("@sinclair/typebox").TLiteral<"autoNo">]>>;
117
+ gitBehavior: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"prompt">, import("@sinclair/typebox").TLiteral<"autoYes">, import("@sinclair/typebox").TLiteral<"autoNo">]>>;
118
+ i18nBehavior: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"prompt">, import("@sinclair/typebox").TLiteral<"autoYes">, import("@sinclair/typebox").TLiteral<"autoNo">]>>;
119
+ scriptsBehavior: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"prompt">, import("@sinclair/typebox").TLiteral<"autoYes">, import("@sinclair/typebox").TLiteral<"autoNo">]>>;
120
+ existingRepoBehavior: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"prompt">, import("@sinclair/typebox").TLiteral<"autoYes">, import("@sinclair/typebox").TLiteral<"autoYesSkipCommit">, import("@sinclair/typebox").TLiteral<"autoNo">]>>;
121
+ relinterConfirm: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"promptOnce">, import("@sinclair/typebox").TLiteral<"promptEachFile">, import("@sinclair/typebox").TLiteral<"autoYes">]>>;
122
+ }>;
123
+ /**
124
+ * Generates a JSON schema file from the TypeBox schema
125
+ */
126
+ export declare function generateJsonSchema(outputPath: string): Promise<void>;
127
+ /**
128
+ * Generates the schema.json in the project root
129
+ */
130
+ export declare function generateSchemaFile(): Promise<void>;
@@ -0,0 +1,444 @@
1
+ import path from "@reliverse/pathkit";
2
+ import fs from "@reliverse/relifso";
3
+ import { Type } from "@sinclair/typebox";
4
+ import {
5
+ cliDomainDocs,
6
+ rseVersion,
7
+ RSE_SCHEMA_DEV,
8
+ RSE_SCHEMA_URL,
9
+ UNKNOWN_VALUE
10
+ } from "./rse-consts.js";
11
+ const unknownLiteral = Type.Literal("unknown");
12
+ const featuresSchema = Type.Object({
13
+ i18n: Type.Optional(Type.Boolean()),
14
+ analytics: Type.Optional(Type.Boolean()),
15
+ themeMode: Type.Optional(
16
+ Type.Union([Type.Literal("light"), Type.Literal("dark"), Type.Literal("dark-light")])
17
+ ),
18
+ authentication: Type.Optional(Type.Boolean()),
19
+ api: Type.Optional(Type.Boolean()),
20
+ database: Type.Optional(Type.Boolean()),
21
+ testing: Type.Optional(Type.Boolean()),
22
+ docker: Type.Optional(Type.Boolean()),
23
+ ci: Type.Optional(Type.Boolean()),
24
+ commands: Type.Optional(Type.Array(Type.String())),
25
+ webview: Type.Optional(Type.Array(Type.String())),
26
+ language: Type.Optional(Type.Array(Type.String())),
27
+ themes: Type.Optional(Type.Array(Type.String()))
28
+ });
29
+ const codeStyleSchema = Type.Object({
30
+ lineWidth: Type.Optional(Type.Number()),
31
+ indentSize: Type.Optional(Type.Number()),
32
+ indentStyle: Type.Optional(Type.Union([Type.Literal("space"), Type.Literal("tab")])),
33
+ quoteMark: Type.Optional(Type.Union([Type.Literal("single"), Type.Literal("double")])),
34
+ semicolons: Type.Optional(Type.Boolean()),
35
+ trailingComma: Type.Optional(
36
+ Type.Union([Type.Literal("none"), Type.Literal("es5"), Type.Literal("all")])
37
+ ),
38
+ bracketSpacing: Type.Optional(Type.Boolean()),
39
+ arrowParens: Type.Optional(Type.Union([Type.Literal("always"), Type.Literal("avoid")])),
40
+ tabWidth: Type.Optional(Type.Number()),
41
+ jsToTs: Type.Optional(Type.Boolean()),
42
+ dontRemoveComments: Type.Optional(Type.Boolean()),
43
+ shouldAddComments: Type.Optional(Type.Boolean()),
44
+ typeOrInterface: Type.Optional(
45
+ Type.Union([Type.Literal("type"), Type.Literal("interface"), Type.Literal("mixed")])
46
+ ),
47
+ importOrRequire: Type.Optional(
48
+ Type.Union([Type.Literal("import"), Type.Literal("require"), Type.Literal("mixed")])
49
+ ),
50
+ cjsToEsm: Type.Optional(Type.Boolean()),
51
+ modernize: Type.Optional(
52
+ Type.Object({
53
+ replaceFs: Type.Optional(Type.Boolean()),
54
+ replacePath: Type.Optional(Type.Boolean()),
55
+ replaceHttp: Type.Optional(Type.Boolean()),
56
+ replaceProcess: Type.Optional(Type.Boolean()),
57
+ replaceConsole: Type.Optional(Type.Boolean()),
58
+ replaceEvents: Type.Optional(Type.Boolean())
59
+ })
60
+ ),
61
+ importSymbol: Type.Optional(Type.String())
62
+ });
63
+ const monorepoSchema = Type.Object({
64
+ type: Type.Optional(
65
+ Type.Union([
66
+ Type.Literal("none"),
67
+ Type.Literal("turborepo"),
68
+ Type.Literal("nx"),
69
+ Type.Literal("pnpm"),
70
+ Type.Literal("bun")
71
+ ])
72
+ ),
73
+ packages: Type.Optional(Type.Array(Type.String())),
74
+ sharedPackages: Type.Optional(Type.Array(Type.String()))
75
+ });
76
+ const preferredLibrariesSchema = Type.Object({
77
+ stateManagement: Type.Optional(
78
+ Type.Union([
79
+ Type.Literal("zustand"),
80
+ Type.Literal("jotai"),
81
+ Type.Literal("redux-toolkit"),
82
+ unknownLiteral
83
+ ])
84
+ ),
85
+ formManagement: Type.Optional(
86
+ Type.Union([Type.Literal("react-hook-form"), Type.Literal("formik"), unknownLiteral])
87
+ ),
88
+ styling: Type.Optional(
89
+ Type.Union([
90
+ Type.Literal("tailwind"),
91
+ Type.Literal("styled-components"),
92
+ Type.Literal("css-modules"),
93
+ Type.Literal("sass"),
94
+ unknownLiteral
95
+ ])
96
+ ),
97
+ uiComponents: Type.Optional(
98
+ Type.Union([
99
+ Type.Literal("shadcn-ui"),
100
+ Type.Literal("chakra-ui"),
101
+ Type.Literal("material-ui"),
102
+ unknownLiteral
103
+ ])
104
+ ),
105
+ testing: Type.Optional(
106
+ Type.Union([
107
+ Type.Literal("bun"),
108
+ Type.Literal("vitest"),
109
+ Type.Literal("jest"),
110
+ Type.Literal("playwright"),
111
+ Type.Literal("cypress"),
112
+ unknownLiteral
113
+ ])
114
+ ),
115
+ authentication: Type.Optional(
116
+ Type.Union([
117
+ Type.Literal("better-auth"),
118
+ Type.Literal("clerk"),
119
+ Type.Literal("next-auth"),
120
+ Type.Literal("supabase-auth"),
121
+ Type.Literal("auth0"),
122
+ unknownLiteral
123
+ ])
124
+ ),
125
+ databaseLibrary: Type.Optional(
126
+ Type.Union([
127
+ Type.Literal("drizzle"),
128
+ Type.Literal("prisma"),
129
+ Type.Literal("supabase"),
130
+ unknownLiteral
131
+ ])
132
+ ),
133
+ databaseProvider: Type.Optional(
134
+ Type.Union([
135
+ Type.Literal("pg"),
136
+ Type.Literal("mysql"),
137
+ Type.Literal("sqlite"),
138
+ Type.Literal("mongodb"),
139
+ unknownLiteral
140
+ ])
141
+ ),
142
+ api: Type.Optional(
143
+ Type.Union([
144
+ Type.Literal("hono"),
145
+ Type.Literal("trpc"),
146
+ Type.Literal("graphql"),
147
+ Type.Literal("rest"),
148
+ unknownLiteral
149
+ ])
150
+ ),
151
+ linting: Type.Optional(Type.Union([Type.Literal("eslint"), unknownLiteral])),
152
+ formatting: Type.Optional(Type.Union([Type.Literal("biome"), unknownLiteral])),
153
+ payment: Type.Optional(Type.Union([Type.Literal("stripe"), unknownLiteral])),
154
+ analytics: Type.Optional(Type.Union([Type.Literal("vercel"), unknownLiteral])),
155
+ monitoring: Type.Optional(Type.Union([Type.Literal("sentry"), unknownLiteral])),
156
+ logging: Type.Optional(Type.Union([Type.Literal("axiom"), unknownLiteral])),
157
+ forms: Type.Optional(Type.Union([Type.Literal("react-hook-form"), unknownLiteral])),
158
+ notifications: Type.Optional(Type.Union([Type.Literal("sonner"), unknownLiteral])),
159
+ search: Type.Optional(Type.Union([Type.Literal("algolia"), unknownLiteral])),
160
+ uploads: Type.Optional(Type.Union([Type.Literal("uploadthing"), unknownLiteral])),
161
+ validation: Type.Optional(
162
+ Type.Union([
163
+ Type.Literal("zod"),
164
+ Type.Literal("typebox"),
165
+ Type.Literal("valibot"),
166
+ unknownLiteral
167
+ ])
168
+ ),
169
+ documentation: Type.Optional(
170
+ Type.Union([Type.Literal("starlight"), Type.Literal("nextra"), unknownLiteral])
171
+ ),
172
+ icons: Type.Optional(Type.Union([Type.Literal("lucide"), unknownLiteral])),
173
+ mail: Type.Optional(Type.Union([Type.Literal("resend"), unknownLiteral])),
174
+ cache: Type.Optional(Type.Union([Type.Literal("redis"), unknownLiteral])),
175
+ storage: Type.Optional(Type.Union([Type.Literal("cloudflare"), unknownLiteral])),
176
+ cdn: Type.Optional(Type.Union([Type.Literal("cloudflare"), unknownLiteral])),
177
+ cms: Type.Optional(Type.Union([Type.Literal("contentlayer"), unknownLiteral])),
178
+ i18n: Type.Optional(Type.Union([Type.Literal("next-intl"), unknownLiteral])),
179
+ seo: Type.Optional(Type.Union([Type.Literal("next-seo"), unknownLiteral])),
180
+ motion: Type.Optional(Type.Union([Type.Literal("framer"), unknownLiteral])),
181
+ charts: Type.Optional(Type.Union([Type.Literal("recharts"), unknownLiteral])),
182
+ dates: Type.Optional(Type.Union([Type.Literal("dayjs"), unknownLiteral])),
183
+ markdown: Type.Optional(Type.Union([Type.Literal("mdx"), unknownLiteral])),
184
+ security: Type.Optional(Type.Union([Type.Literal("auth"), unknownLiteral])),
185
+ routing: Type.Optional(
186
+ Type.Union([
187
+ Type.Literal("next"),
188
+ Type.Literal("react-router"),
189
+ Type.Literal("tanstack-router"),
190
+ unknownLiteral
191
+ ])
192
+ )
193
+ });
194
+ export const rseSchema = Type.Object({
195
+ // rseg schema
196
+ $schema: Type.Optional(Type.Union([Type.Literal(RSE_SCHEMA_URL), Type.Literal(RSE_SCHEMA_DEV)])),
197
+ // General project information
198
+ projectName: Type.Optional(
199
+ Type.Union([Type.Literal(UNKNOWN_VALUE), Type.String({ minLength: 1 })])
200
+ ),
201
+ projectAuthor: Type.Optional(
202
+ Type.Union([Type.Literal(UNKNOWN_VALUE), Type.String({ minLength: 1 })])
203
+ ),
204
+ projectDescription: Type.Optional(Type.String()),
205
+ version: Type.Optional(Type.String()),
206
+ projectLicense: Type.Optional(Type.String()),
207
+ projectRepository: Type.Optional(Type.String()),
208
+ projectDomain: Type.Optional(Type.String()),
209
+ projectGitService: Type.Optional(
210
+ Type.Union([
211
+ Type.Literal("github"),
212
+ Type.Literal("gitlab"),
213
+ Type.Literal("bitbucket"),
214
+ Type.Literal("none")
215
+ ])
216
+ ),
217
+ projectDeployService: Type.Optional(
218
+ Type.Union([
219
+ Type.Literal("vercel"),
220
+ Type.Literal("netlify"),
221
+ Type.Literal("railway"),
222
+ Type.Literal("deno"),
223
+ Type.Literal("none")
224
+ ])
225
+ ),
226
+ projectPackageManager: Type.Optional(
227
+ Type.Union([
228
+ Type.Literal("npm"),
229
+ Type.Literal("pnpm"),
230
+ Type.Literal("yarn"),
231
+ Type.Literal("bun")
232
+ ])
233
+ ),
234
+ projectState: Type.Optional(Type.Union([Type.Literal("creating"), Type.Literal("created")])),
235
+ projectCategory: Type.Optional(
236
+ Type.Union([
237
+ Type.Literal(UNKNOWN_VALUE),
238
+ Type.Literal("website"),
239
+ Type.Literal("vscode"),
240
+ Type.Literal("browser"),
241
+ Type.Literal("cli"),
242
+ Type.Literal("library"),
243
+ Type.Literal("mobile")
244
+ ])
245
+ ),
246
+ projectSubcategory: Type.Optional(
247
+ Type.Union([Type.Literal(UNKNOWN_VALUE), Type.Literal("e-commerce"), Type.Literal("tool")])
248
+ ),
249
+ projectFramework: Type.Optional(
250
+ Type.Union([
251
+ Type.Literal(UNKNOWN_VALUE),
252
+ // web app frameworks
253
+ Type.Literal("nextjs"),
254
+ Type.Literal("vite"),
255
+ Type.Literal("svelte"),
256
+ Type.Literal("remix"),
257
+ Type.Literal("astro"),
258
+ Type.Literal("nuxt"),
259
+ Type.Literal("solid"),
260
+ Type.Literal("qwik"),
261
+ Type.Literal("vue"),
262
+ Type.Literal("wxt"),
263
+ // mobile frameworks
264
+ Type.Literal("lynx"),
265
+ Type.Literal("react-native"),
266
+ Type.Literal("expo"),
267
+ Type.Literal("capacitor"),
268
+ Type.Literal("ionic"),
269
+ // desktop frameworks
270
+ Type.Literal("electron"),
271
+ Type.Literal("tauri"),
272
+ Type.Literal("neutralino"),
273
+ // cli frameworks
274
+ Type.Literal("rempts"),
275
+ Type.Literal("citty"),
276
+ Type.Literal("commander"),
277
+ Type.Literal("cac"),
278
+ Type.Literal("meow"),
279
+ Type.Literal("yargs"),
280
+ // vscode frameworks
281
+ Type.Literal("vscode"),
282
+ // browser frameworks
283
+ Type.Literal("webextension"),
284
+ Type.Literal("browser-extension"),
285
+ // library frameworks
286
+ Type.Literal("npm-jsr")
287
+ ])
288
+ ),
289
+ projectTemplate: Type.Optional(
290
+ Type.Union([
291
+ Type.Literal(UNKNOWN_VALUE),
292
+ Type.Literal("blefnk/relivator-nextjs-template"),
293
+ Type.Literal("blefnk/relivator-docker-template"),
294
+ Type.Literal("blefnk/next-react-ts-src-minimal"),
295
+ Type.Literal("blefnk/all-in-one-nextjs-template"),
296
+ Type.Literal("blefnk/create-t3-app"),
297
+ Type.Literal("blefnk/create-next-app"),
298
+ Type.Literal("blefnk/astro-starlight-template"),
299
+ Type.Literal("blefnk/versator-nextjs-template"),
300
+ Type.Literal("blefnk/relivator-lynxjs-template"),
301
+ Type.Literal("blefnk/relivator-react-native-template"),
302
+ Type.Literal("reliverse/template-browser-extension"),
303
+ Type.Literal("microsoft/vscode-extension-samples"),
304
+ Type.Literal("microsoft/vscode-extension-template"),
305
+ Type.Literal("rsetarter-template"),
306
+ Type.Literal("blefnk/deno-cli-tutorial")
307
+ ])
308
+ ),
309
+ projectTemplateDate: Type.Optional(Type.String()),
310
+ features: Type.Optional(featuresSchema),
311
+ preferredLibraries: Type.Optional(preferredLibrariesSchema),
312
+ codeStyle: Type.Optional(codeStyleSchema),
313
+ monorepo: Type.Optional(monorepoSchema),
314
+ ignoreDependencies: Type.Optional(Type.Array(Type.String())),
315
+ customRules: Type.Optional(Type.Record(Type.String(), Type.Unknown())),
316
+ // Custom repos configuration
317
+ multipleRepoCloneMode: Type.Optional(Type.Boolean()),
318
+ customUserFocusedRepos: Type.Optional(Type.Array(Type.String())),
319
+ customDevsFocusedRepos: Type.Optional(Type.Array(Type.String())),
320
+ hideRepoSuggestions: Type.Optional(Type.Boolean()),
321
+ customReposOnNewProject: Type.Optional(Type.Boolean()),
322
+ envComposerOpenBrowser: Type.Optional(Type.Boolean()),
323
+ repoBranch: Type.Optional(Type.String()),
324
+ repoPrivacy: Type.Optional(
325
+ Type.Union([unknownLiteral, Type.Literal("public"), Type.Literal("private")])
326
+ ),
327
+ projectArchitecture: Type.Optional(
328
+ Type.Union([unknownLiteral, Type.Literal("fullstack"), Type.Literal("separated")])
329
+ ),
330
+ projectRuntime: Type.Optional(
331
+ Type.Union([Type.Literal("node"), Type.Literal("deno"), Type.Literal("bun")])
332
+ ),
333
+ skipPromptsUseAutoBehavior: Type.Optional(Type.Boolean()),
334
+ deployBehavior: Type.Optional(
335
+ Type.Union([Type.Literal("prompt"), Type.Literal("autoYes"), Type.Literal("autoNo")])
336
+ ),
337
+ depsBehavior: Type.Optional(
338
+ Type.Union([Type.Literal("prompt"), Type.Literal("autoYes"), Type.Literal("autoNo")])
339
+ ),
340
+ gitBehavior: Type.Optional(
341
+ Type.Union([Type.Literal("prompt"), Type.Literal("autoYes"), Type.Literal("autoNo")])
342
+ ),
343
+ i18nBehavior: Type.Optional(
344
+ Type.Union([Type.Literal("prompt"), Type.Literal("autoYes"), Type.Literal("autoNo")])
345
+ ),
346
+ scriptsBehavior: Type.Optional(
347
+ Type.Union([Type.Literal("prompt"), Type.Literal("autoYes"), Type.Literal("autoNo")])
348
+ ),
349
+ existingRepoBehavior: Type.Optional(
350
+ Type.Union([
351
+ Type.Literal("prompt"),
352
+ Type.Literal("autoYes"),
353
+ Type.Literal("autoYesSkipCommit"),
354
+ Type.Literal("autoNo")
355
+ ])
356
+ ),
357
+ relinterConfirm: Type.Optional(
358
+ Type.Union([
359
+ Type.Literal("promptOnce"),
360
+ Type.Literal("promptEachFile"),
361
+ Type.Literal("autoYes")
362
+ ])
363
+ )
364
+ });
365
+ function convertTypeBoxToJsonSchema(schema) {
366
+ if (!schema || typeof schema !== "object") return schema;
367
+ if (schema.type === "string" && schema.enum) {
368
+ return {
369
+ type: "string",
370
+ enum: schema.enum
371
+ };
372
+ }
373
+ if (schema.anyOf || schema.allOf || schema.oneOf) {
374
+ const variants = schema.anyOf || schema.allOf || schema.oneOf;
375
+ const allLiterals = variants.every((v) => v.const !== void 0);
376
+ if (allLiterals) {
377
+ return {
378
+ type: "string",
379
+ enum: variants.map((v) => v.const)
380
+ };
381
+ }
382
+ }
383
+ if (schema.type === "object") {
384
+ const result = {
385
+ type: "object",
386
+ properties: {}
387
+ };
388
+ if (schema.required) {
389
+ result.required = schema.required;
390
+ }
391
+ if (schema.properties) {
392
+ for (const [key, value] of Object.entries(schema.properties)) {
393
+ result.properties[key] = convertTypeBoxToJsonSchema(value);
394
+ }
395
+ }
396
+ if (schema.additionalProperties) {
397
+ result.additionalProperties = convertTypeBoxToJsonSchema(schema.additionalProperties);
398
+ }
399
+ if (schema.patternProperties) {
400
+ result.patternProperties = {};
401
+ for (const [pattern, value] of Object.entries(schema.patternProperties)) {
402
+ result.patternProperties[pattern] = convertTypeBoxToJsonSchema(value);
403
+ }
404
+ }
405
+ return result;
406
+ }
407
+ if (schema.type === "array") {
408
+ return {
409
+ type: "array",
410
+ items: convertTypeBoxToJsonSchema(schema.items)
411
+ };
412
+ }
413
+ if (schema.type) {
414
+ const result = { type: schema.type };
415
+ if (schema.minimum !== void 0) result.minimum = schema.minimum;
416
+ if (schema.maximum !== void 0) result.maximum = schema.maximum;
417
+ if (schema.minLength !== void 0) result.minLength = schema.minLength;
418
+ if (schema.maxLength !== void 0) result.maxLength = schema.maxLength;
419
+ if (schema.pattern !== void 0) result.pattern = schema.pattern;
420
+ if (schema.format !== void 0) result.format = schema.format;
421
+ if (schema.default !== void 0) result.default = schema.default;
422
+ return result;
423
+ }
424
+ return schema;
425
+ }
426
+ export async function generateJsonSchema(outputPath) {
427
+ const converted = convertTypeBoxToJsonSchema(rseSchema);
428
+ const schema = {
429
+ $schema: "http://json-schema.org/draft-07/schema#",
430
+ title: `rse v${rseVersion} configuration schema`,
431
+ description: cliDomainDocs,
432
+ type: "object",
433
+ properties: converted.properties,
434
+ required: converted.required
435
+ };
436
+ await fs.writeFile(outputPath, JSON.stringify(schema, null, 2));
437
+ }
438
+ export async function generateSchemaFile() {
439
+ const schemaPath = path.join(process.cwd(), "schema.json");
440
+ if (fs.existsSync(schemaPath)) {
441
+ await fs.remove(schemaPath);
442
+ }
443
+ await generateJsonSchema(schemaPath);
444
+ }