@hanzo/docs-create-app 16.0.50

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 (204) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +11 -0
  3. package/dist/auto-install-CenyMuK7.js +33 -0
  4. package/dist/auto-install-CenyMuK7.js.map +1 -0
  5. package/dist/bin.d.ts +1 -0
  6. package/dist/bin.js +165 -0
  7. package/dist/bin.js.map +1 -0
  8. package/dist/constants-BkYWkLHa.d.ts +22 -0
  9. package/dist/constants-BkYWkLHa.d.ts.map +1 -0
  10. package/dist/constants-CbNzssp2.js +957 -0
  11. package/dist/constants-CbNzssp2.js.map +1 -0
  12. package/dist/index.d.ts +49 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +60 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/plugins/biome.base.d.ts +40 -0
  17. package/dist/plugins/biome.base.d.ts.map +1 -0
  18. package/dist/plugins/biome.base.js +38 -0
  19. package/dist/plugins/biome.base.js.map +1 -0
  20. package/dist/plugins/biome.d.ts +7 -0
  21. package/dist/plugins/biome.d.ts.map +1 -0
  22. package/dist/plugins/biome.js +33 -0
  23. package/dist/plugins/biome.js.map +1 -0
  24. package/dist/plugins/biome.next.d.ts +41 -0
  25. package/dist/plugins/biome.next.d.ts.map +1 -0
  26. package/dist/plugins/biome.next.js +44 -0
  27. package/dist/plugins/biome.next.js.map +1 -0
  28. package/dist/plugins/eslint.d.ts +7 -0
  29. package/dist/plugins/eslint.d.ts.map +1 -0
  30. package/dist/plugins/eslint.js +47 -0
  31. package/dist/plugins/eslint.js.map +1 -0
  32. package/dist/plugins/next-use-src.d.ts +10 -0
  33. package/dist/plugins/next-use-src.d.ts.map +1 -0
  34. package/dist/plugins/next-use-src.js +37 -0
  35. package/dist/plugins/next-use-src.js.map +1 -0
  36. package/dist/plugins/orama-cloud.d.ts +7 -0
  37. package/dist/plugins/orama-cloud.d.ts.map +1 -0
  38. package/dist/plugins/orama-cloud.js +296 -0
  39. package/dist/plugins/orama-cloud.js.map +1 -0
  40. package/package.json +63 -0
  41. package/template/+next+fuma-docs-mdx/app/(home)/layout.tsx +6 -0
  42. package/template/+next+fuma-docs-mdx/app/(home)/page.tsx +16 -0
  43. package/template/+next+fuma-docs-mdx/app/api/search/route.ts +7 -0
  44. package/template/+next+fuma-docs-mdx/app/docs/[[...slug]]/page.tsx +57 -0
  45. package/template/+next+fuma-docs-mdx/app/docs/layout.tsx +11 -0
  46. package/template/+next+fuma-docs-mdx/app/global.css +3 -0
  47. package/template/+next+fuma-docs-mdx/app/layout.tsx +17 -0
  48. package/template/+next+fuma-docs-mdx/app/llms-full.txt/route.ts +10 -0
  49. package/template/+next+fuma-docs-mdx/app/llms.mdx/docs/[[...slug]]/route.ts +20 -0
  50. package/template/+next+fuma-docs-mdx/app/llms.txt/route.ts +13 -0
  51. package/template/+next+fuma-docs-mdx/app/og/docs/[...slug]/route.tsx +27 -0
  52. package/template/+next+fuma-docs-mdx/components/ai/page-actions.tsx +240 -0
  53. package/template/+next+fuma-docs-mdx/content/docs/index.mdx +13 -0
  54. package/template/+next+fuma-docs-mdx/content/docs/test.mdx +17 -0
  55. package/template/+next+fuma-docs-mdx/example.gitignore +26 -0
  56. package/template/+next+fuma-docs-mdx/lib/cn.ts +1 -0
  57. package/template/+next+fuma-docs-mdx/lib/layout.shared.tsx +17 -0
  58. package/template/+next+fuma-docs-mdx/lib/source.ts +27 -0
  59. package/template/+next+fuma-docs-mdx/mdx-components.tsx +9 -0
  60. package/template/+next+fuma-docs-mdx/next.config.mjs +18 -0
  61. package/template/+next+fuma-docs-mdx/package.json +31 -0
  62. package/template/+next+fuma-docs-mdx/postcss.config.mjs +7 -0
  63. package/template/+next+fuma-docs-mdx/source.config.ts +23 -0
  64. package/template/+next+fuma-docs-mdx/tsconfig.json +36 -0
  65. package/template/+next+fuma-docs-mdx+static/README.md +45 -0
  66. package/template/+next+fuma-docs-mdx+static/app/(home)/layout.tsx +6 -0
  67. package/template/+next+fuma-docs-mdx+static/app/(home)/page.tsx +16 -0
  68. package/template/+next+fuma-docs-mdx+static/app/api/search/route.ts +9 -0
  69. package/template/+next+fuma-docs-mdx+static/app/docs/[[...slug]]/page.tsx +47 -0
  70. package/template/+next+fuma-docs-mdx+static/app/docs/layout.tsx +11 -0
  71. package/template/+next+fuma-docs-mdx+static/app/global.css +3 -0
  72. package/template/+next+fuma-docs-mdx+static/app/layout.tsx +17 -0
  73. package/template/+next+fuma-docs-mdx+static/app/llms-full.txt/route.ts +10 -0
  74. package/template/+next+fuma-docs-mdx+static/app/og/docs/[...slug]/route.tsx +27 -0
  75. package/template/+next+fuma-docs-mdx+static/components/provider.tsx +8 -0
  76. package/template/+next+fuma-docs-mdx+static/components/search.tsx +46 -0
  77. package/template/+next+fuma-docs-mdx+static/content/docs/index.mdx +13 -0
  78. package/template/+next+fuma-docs-mdx+static/content/docs/test.mdx +17 -0
  79. package/template/+next+fuma-docs-mdx+static/example.gitignore +26 -0
  80. package/template/+next+fuma-docs-mdx+static/lib/layout.shared.tsx +9 -0
  81. package/template/+next+fuma-docs-mdx+static/lib/source.ts +26 -0
  82. package/template/+next+fuma-docs-mdx+static/mdx-components.tsx +9 -0
  83. package/template/+next+fuma-docs-mdx+static/next.config.mjs +11 -0
  84. package/template/+next+fuma-docs-mdx+static/package.json +32 -0
  85. package/template/+next+fuma-docs-mdx+static/postcss.config.mjs +7 -0
  86. package/template/+next+fuma-docs-mdx+static/source.config.ts +23 -0
  87. package/template/+next+fuma-docs-mdx+static/tsconfig.json +36 -0
  88. package/template/+next+hanzo-docs-mdx/README.md +43 -0
  89. package/template/+next+hanzo-docs-mdx/app/(home)/layout.tsx +6 -0
  90. package/template/+next+hanzo-docs-mdx/app/(home)/page.tsx +16 -0
  91. package/template/+next+hanzo-docs-mdx/app/api/search/route.ts +7 -0
  92. package/template/+next+hanzo-docs-mdx/app/docs/[[...slug]]/page.tsx +61 -0
  93. package/template/+next+hanzo-docs-mdx/app/docs/layout.tsx +11 -0
  94. package/template/+next+hanzo-docs-mdx/app/global.css +3 -0
  95. package/template/+next+hanzo-docs-mdx/app/layout.tsx +17 -0
  96. package/template/+next+hanzo-docs-mdx/app/llms-full.txt/route.ts +10 -0
  97. package/template/+next+hanzo-docs-mdx/app/og/docs/[...slug]/route.tsx +27 -0
  98. package/template/+next+hanzo-docs-mdx/content/docs/index.mdx +13 -0
  99. package/template/+next+hanzo-docs-mdx/content/docs/test.mdx +17 -0
  100. package/template/+next+hanzo-docs-mdx/example.gitignore +26 -0
  101. package/template/+next+hanzo-docs-mdx/lib/cn.ts +1 -0
  102. package/template/+next+hanzo-docs-mdx/lib/layout.shared.tsx +9 -0
  103. package/template/+next+hanzo-docs-mdx/lib/source.ts +27 -0
  104. package/template/+next+hanzo-docs-mdx/mdx-components.tsx +9 -0
  105. package/template/+next+hanzo-docs-mdx/next.config.mjs +18 -0
  106. package/template/+next+hanzo-docs-mdx/package.json +31 -0
  107. package/template/+next+hanzo-docs-mdx/postcss.config.mjs +5 -0
  108. package/template/+next+hanzo-docs-mdx/source.config.ts +23 -0
  109. package/template/+next+hanzo-docs-mdx/tsconfig.json +36 -0
  110. package/template/+orama-cloud/@app/components/search.tsx +54 -0
  111. package/template/+orama-cloud/@app/lib/export-static-indexes.ts +14 -0
  112. package/template/+orama-cloud/@root/.env.example +6 -0
  113. package/template/react-router/README.md +12 -0
  114. package/template/react-router/app/app.css +3 -0
  115. package/template/react-router/app/docs/page.tsx +51 -0
  116. package/template/react-router/app/docs/search.ts +12 -0
  117. package/template/react-router/app/lib/layout.shared.tsx +9 -0
  118. package/template/react-router/app/lib/source.ts +7 -0
  119. package/template/react-router/app/root.tsx +73 -0
  120. package/template/react-router/app/routes/home.tsx +30 -0
  121. package/template/react-router/app/routes.ts +7 -0
  122. package/template/react-router/content/docs/index.mdx +32 -0
  123. package/template/react-router/content/docs/meta.json +3 -0
  124. package/template/react-router/content/docs/test.mdx +24 -0
  125. package/template/react-router/example.gitignore +7 -0
  126. package/template/react-router/package.json +35 -0
  127. package/template/react-router/public/favicon.ico +0 -0
  128. package/template/react-router/react-router.config.ts +23 -0
  129. package/template/react-router/source.config.ts +7 -0
  130. package/template/react-router/tsconfig.json +23 -0
  131. package/template/react-router/vite.config.ts +17 -0
  132. package/template/react-router-spa/README.md +12 -0
  133. package/template/react-router-spa/app/app.css +3 -0
  134. package/template/react-router-spa/app/components/search.tsx +45 -0
  135. package/template/react-router-spa/app/docs/page.tsx +53 -0
  136. package/template/react-router-spa/app/docs/search.ts +10 -0
  137. package/template/react-router-spa/app/lib/layout.shared.tsx +9 -0
  138. package/template/react-router-spa/app/lib/source.ts +7 -0
  139. package/template/react-router-spa/app/root.tsx +74 -0
  140. package/template/react-router-spa/app/routes/home.tsx +30 -0
  141. package/template/react-router-spa/app/routes.ts +7 -0
  142. package/template/react-router-spa/content/docs/index.mdx +32 -0
  143. package/template/react-router-spa/content/docs/test.mdx +24 -0
  144. package/template/react-router-spa/example.gitignore +7 -0
  145. package/template/react-router-spa/package.json +36 -0
  146. package/template/react-router-spa/public/favicon.ico +0 -0
  147. package/template/react-router-spa/react-router.config.ts +23 -0
  148. package/template/react-router-spa/serve.json +3 -0
  149. package/template/react-router-spa/source.config.ts +7 -0
  150. package/template/react-router-spa/tsconfig.json +23 -0
  151. package/template/react-router-spa/vite.config.ts +17 -0
  152. package/template/tanstack-start/README.md +12 -0
  153. package/template/tanstack-start/content/docs/index.mdx +31 -0
  154. package/template/tanstack-start/content/docs/test.mdx +12 -0
  155. package/template/tanstack-start/example.gitignore +18 -0
  156. package/template/tanstack-start/package.json +38 -0
  157. package/template/tanstack-start/source.config.ts +7 -0
  158. package/template/tanstack-start/src/components/not-found.tsx +28 -0
  159. package/template/tanstack-start/src/lib/layout.shared.tsx +9 -0
  160. package/template/tanstack-start/src/lib/source.ts +9 -0
  161. package/template/tanstack-start/src/router.tsx +12 -0
  162. package/template/tanstack-start/src/routes/__root.tsx +45 -0
  163. package/template/tanstack-start/src/routes/api/search.ts +16 -0
  164. package/template/tanstack-start/src/routes/docs/$.tsx +72 -0
  165. package/template/tanstack-start/src/routes/index.tsx +26 -0
  166. package/template/tanstack-start/src/styles/app.css +3 -0
  167. package/template/tanstack-start/tsconfig.json +24 -0
  168. package/template/tanstack-start/vite.config.ts +33 -0
  169. package/template/tanstack-start-spa/README.md +12 -0
  170. package/template/tanstack-start-spa/content/docs/index.mdx +31 -0
  171. package/template/tanstack-start-spa/content/docs/test.mdx +12 -0
  172. package/template/tanstack-start-spa/example.gitignore +18 -0
  173. package/template/tanstack-start-spa/package.json +41 -0
  174. package/template/tanstack-start-spa/source.config.ts +7 -0
  175. package/template/tanstack-start-spa/src/components/not-found.tsx +28 -0
  176. package/template/tanstack-start-spa/src/components/search.tsx +46 -0
  177. package/template/tanstack-start-spa/src/lib/layout.shared.tsx +9 -0
  178. package/template/tanstack-start-spa/src/lib/source.ts +9 -0
  179. package/template/tanstack-start-spa/src/router.tsx +12 -0
  180. package/template/tanstack-start-spa/src/routes/__root.tsx +46 -0
  181. package/template/tanstack-start-spa/src/routes/api/search.ts +16 -0
  182. package/template/tanstack-start-spa/src/routes/docs/$.tsx +74 -0
  183. package/template/tanstack-start-spa/src/routes/index.tsx +26 -0
  184. package/template/tanstack-start-spa/src/styles/app.css +3 -0
  185. package/template/tanstack-start-spa/tsconfig.json +24 -0
  186. package/template/tanstack-start-spa/vite.config.ts +42 -0
  187. package/template/waku/README.md +11 -0
  188. package/template/waku/content/docs/index.mdx +31 -0
  189. package/template/waku/content/docs/test.mdx +12 -0
  190. package/template/waku/example.gitignore +6 -0
  191. package/template/waku/package.json +33 -0
  192. package/template/waku/source.config.ts +7 -0
  193. package/template/waku/src/components/provider.tsx +7 -0
  194. package/template/waku/src/lib/layout.shared.tsx +9 -0
  195. package/template/waku/src/lib/source.ts +9 -0
  196. package/template/waku/src/pages/(home)/_layout.tsx +7 -0
  197. package/template/waku/src/pages/(home)/index.tsx +21 -0
  198. package/template/waku/src/pages/_api/api/search.ts +4 -0
  199. package/template/waku/src/pages/_root.tsx +20 -0
  200. package/template/waku/src/pages/docs/[...slugs].tsx +45 -0
  201. package/template/waku/src/pages/docs/_layout.tsx +12 -0
  202. package/template/waku/src/styles/globals.css +9 -0
  203. package/template/waku/tsconfig.json +25 -0
  204. package/template/waku/waku.config.ts +17 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants-CbNzssp2.js","names":["corePkg","mdxPkg","radixPkg","basePkg","versionPkg.dependencies"],"sources":["../src/utils.ts","../../create-app-versions/package.json","../../core/package.json","../../mdx/package.json","../../radix-ui/package.json","../../base-ui/package.json","../src/constants.ts"],"sourcesContent":["import fs from 'node:fs/promises';\nimport path, { join } from 'node:path';\nimport { x } from 'tinyexec';\n\nexport async function writeFile(file: string, content: string) {\n await fs.mkdir(path.dirname(file), { recursive: true });\n await fs.writeFile(file, content);\n}\n\nexport async function copy(\n from: string,\n to: string,\n options: {\n rename?: (s: string) => string;\n filter?: (s: string) => boolean;\n filterDir?: (dir: string) => boolean;\n } = {},\n): Promise<void> {\n const { rename = (s) => s, filterDir = () => true, filter = () => true } = options;\n const stats = await fs.stat(from);\n\n if (stats.isDirectory() && filterDir(from)) {\n const files = await fs.readdir(from);\n\n await Promise.all(\n files.map((file) => copy(path.join(from, file), path.join(to, file), options)),\n );\n }\n\n if (stats.isFile() && filter(from)) {\n to = rename(to);\n await fs.mkdir(path.dirname(to), { recursive: true });\n await fs.copyFile(from, to);\n }\n}\n\nasync function isInGitRepository(cwd: string) {\n const { exitCode } = await x('git', ['rev-parse', '--is-inside-work-tree'], {\n nodeOptions: { cwd },\n });\n\n return exitCode === 0;\n}\n\nasync function isDefaultBranchSet(cwd: string) {\n const { exitCode } = await x('git', ['config', 'init.defaultBranch'], {\n nodeOptions: { cwd },\n });\n\n return exitCode === 0;\n}\n\n/*\nInitialize a Git repo on the project.\n\nBased on https://github.com/vercel/next.js/blob/canary/packages/create-next-app/helpers/git.ts\n*/\nexport async function tryGitInit(cwd: string): Promise<boolean> {\n const { exitCode } = await x('git', ['--version']);\n if (exitCode !== 0) return false;\n\n if (await isInGitRepository(cwd)) return false;\n\n try {\n await x('git', ['init'], {\n throwOnError: true,\n nodeOptions: { cwd },\n });\n\n if (!(await isDefaultBranchSet(cwd))) {\n await x('git', ['checkout', '-b', 'main'], {\n throwOnError: true,\n nodeOptions: {\n cwd,\n },\n });\n }\n\n await x('git', ['add', '-A'], {\n throwOnError: true,\n nodeOptions: {\n cwd,\n },\n });\n\n await x('git', ['commit', '-m', 'Initial commit from Create Hanzo Docs App'], {\n throwOnError: true,\n nodeOptions: {\n cwd,\n },\n });\n return true;\n } catch {\n await fs.rm(join(cwd, '.git'), { recursive: true, force: true });\n\n return false;\n }\n}\n\nexport function pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K> {\n const result: Partial<T> = {};\n\n for (const key of keys) {\n if (key in obj) {\n result[key] = obj[key];\n }\n }\n\n return result as Pick<T, K>;\n}\n","","","","","","import { fileURLToPath } from 'node:url';\nimport versionPkg from '../../create-app-versions/package.json';\nimport * as corePkg from '../../core/package.json';\nimport * as mdxPkg from '../../mdx/package.json';\nimport * as radixPkg from '../../radix-ui/package.json';\nimport * as basePkg from '../../base-ui/package.json';\n\nexport const sourceDir = fileURLToPath(new URL(`../`, import.meta.url).href);\n\nexport const isCI = Boolean(process.env.CI);\n\nexport interface TemplateInfo {\n value:\n | '+next+fuma-docs-mdx'\n | 'waku'\n | 'react-router'\n | 'react-router-spa'\n | 'tanstack-start'\n | 'tanstack-start-spa'\n | '+next+fuma-docs-mdx+static';\n label: string;\n appDir: string;\n /**\n * path to root provider, relative to `appDir``\n */\n rootProviderPath: string;\n hint?: string;\n /**\n * rename files when copying from template\n */\n rename?: (name: string) => string;\n}\n\nexport const templates: TemplateInfo[] = [\n {\n value: '+next+fuma-docs-mdx',\n label: 'Next.js: Hanzo Docs MDX',\n hint: 'recommended',\n appDir: '',\n rootProviderPath: 'app/layout.tsx',\n },\n {\n value: '+next+fuma-docs-mdx+static',\n label: 'Next.js Static: Hanzo Docs MDX',\n appDir: '',\n rootProviderPath: 'components/provider.tsx',\n },\n {\n value: 'waku',\n label: 'Waku: Hanzo Docs MDX',\n appDir: 'src',\n rootProviderPath: 'components/provider.tsx',\n },\n {\n value: 'react-router',\n label: 'React Router: Hanzo Docs MDX (not RSC)',\n appDir: 'app',\n rootProviderPath: 'root.tsx',\n },\n {\n value: 'react-router-spa',\n label: 'React Router SPA: Hanzo Docs MDX (not RSC)',\n hint: 'SPA mode allows you to host the site statically, compatible with a CDN.',\n appDir: 'app',\n rootProviderPath: 'root.tsx',\n },\n {\n value: 'tanstack-start',\n label: 'Tanstack Start: Hanzo Docs MDX (not RSC)',\n appDir: 'src',\n rootProviderPath: 'routes/__root.tsx',\n },\n {\n value: 'tanstack-start-spa',\n label: 'Tanstack Start SPA: Hanzo Docs MDX (not RSC)',\n hint: 'SPA mode allows you to host the site statically, compatible with a CDN.',\n appDir: 'src',\n rootProviderPath: 'routes/__root.tsx',\n },\n];\n\nconst workspaces = [corePkg, mdxPkg, radixPkg, basePkg];\n\nexport const depVersions = versionPkg.dependencies;\n\nfor (const workspace of workspaces) {\n depVersions[workspace.name as keyof typeof depVersions] = workspace.version;\n}\n"],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { n as PackageManager, t as TemplateInfo } from "./constants-BkYWkLHa.js";
2
+
3
+ //#region src/index.d.ts
4
+ type Template = TemplateInfo['value'];
5
+ interface Options {
6
+ outputDir: string;
7
+ template: Template;
8
+ /**
9
+ * the package manager to use
10
+ *
11
+ * @defaultValue 'npm'
12
+ */
13
+ packageManager?: PackageManager;
14
+ installDeps?: boolean;
15
+ initializeGit?: boolean;
16
+ log?: (message: string) => void;
17
+ plugins?: TemplatePlugin[];
18
+ }
19
+ interface TemplatePluginContext {
20
+ template: TemplateInfo;
21
+ log: (message: string) => void;
22
+ /**
23
+ * output directory
24
+ */
25
+ dest: string;
26
+ /**
27
+ * output directory for app code (e.g. under `/src`)
28
+ */
29
+ appDir: string;
30
+ }
31
+ type PackageJsonType = {
32
+ name?: string;
33
+ version?: string;
34
+ private?: boolean;
35
+ scripts?: Record<string, string>;
36
+ dependencies?: Record<string, string>;
37
+ devDependencies?: Record<string, string>;
38
+ } & Record<string, unknown>;
39
+ type Awaitable<T> = T | Promise<T>;
40
+ interface TemplatePlugin {
41
+ template?: (this: Pick<TemplatePluginContext, 'dest'>, info: TemplateInfo) => Awaitable<void | TemplateInfo>;
42
+ packageJson?: (this: TemplatePluginContext, packageJson: PackageJsonType) => Awaitable<void | PackageJsonType>;
43
+ afterWrite?: (this: TemplatePluginContext) => Awaitable<void>;
44
+ readme?: (this: TemplatePluginContext, content: string) => Awaitable<void | string>;
45
+ }
46
+ declare function create(createOptions: Options): Promise<void>;
47
+ //#endregion
48
+ export { Options, PackageJsonType, Template, TemplatePlugin, TemplatePluginContext, create };
49
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"mappings":";;;KAOY,QAAA,GAAW,YAAA;AAAA,UACN,OAAA;EACf,SAAA;EACA,QAAA,EAAU,QAAA;EAHW;;AACvB;;;EASE,cAAA,GAAiB,cAAA;EAEjB,WAAA;EACA,aAAA;EACA,GAAA,IAAO,OAAA;EACP,OAAA,GAAU,cAAA;AAAA;AAAA,UAGK,qBAAA;EACf,QAAA,EAAU,YAAA;EACV,GAAA,GAAM,OAAA;EAVW;;;EAcjB,IAAA;EAVO;;;EAeP,MAAA;AAAA;AAAA,KAGU,eAAA;EACV,IAAA;EACA,OAAA;EACA,OAAA;EACA,OAAA,GAAU,MAAA;EACV,YAAA,GAAe,MAAA;EACf,eAAA,GAAkB,MAAA;AAAA,IAChB,MAAA;AAAA,KAEC,SAAA,MAAe,CAAA,GAAI,OAAA,CAAQ,CAAA;AAAA,UAEf,cAAA;EACf,QAAA,IACE,IAAA,EAAM,IAAA,CAAK,qBAAA,WACX,IAAA,EAAM,YAAA,KACH,SAAA,QAAiB,YAAA;EACtB,WAAA,IACE,IAAA,EAAM,qBAAA,EACN,WAAA,EAAa,eAAA,KACV,SAAA,QAAiB,eAAA;EACtB,UAAA,IAAc,IAAA,EAAM,qBAAA,KAA0B,SAAA;EAC9C,MAAA,IAAU,IAAA,EAAM,qBAAA,EAAuB,OAAA,aAAoB,SAAA;AAAA;AAAA,iBAGvC,MAAA,CAAO,aAAA,EAAe,OAAA,GAAU,OAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,60 @@
1
+ import { a as copy, i as templates, r as sourceDir, s as tryGitInit, t as depVersions } from "./constants-CbNzssp2.js";
2
+ import { t as autoInstall } from "./auto-install-CenyMuK7.js";
3
+ import fs from "node:fs/promises";
4
+ import path from "node:path";
5
+
6
+ //#region src/index.ts
7
+ async function create(createOptions) {
8
+ const { outputDir, plugins = [], packageManager = "npm", initializeGit = false, installDeps = false, log = console.log } = createOptions;
9
+ let template = templates.find((item) => item.value === createOptions.template);
10
+ for (const plugin of plugins) template = await plugin.template?.call({ dest: outputDir }, template) ?? template;
11
+ const appDir = path.join(outputDir, template.appDir);
12
+ const projectName = path.basename(outputDir);
13
+ const pluginContext = {
14
+ template,
15
+ dest: outputDir,
16
+ log,
17
+ appDir
18
+ };
19
+ await copy(path.join(sourceDir, "template", template.value), outputDir, { rename(file) {
20
+ file = file.replace("example.gitignore", ".gitignore");
21
+ return template.rename?.(file) ?? file;
22
+ } });
23
+ const packageJsonPath = path.join(outputDir, "package.json");
24
+ let packageJson = await initPackageJson(projectName, packageJsonPath);
25
+ for (const plugin of plugins) packageJson = await plugin.packageJson?.call(pluginContext, packageJson) ?? packageJson;
26
+ await fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2));
27
+ const readmePath = path.join(outputDir, "README.md");
28
+ let readme = `# ${projectName}\n\n${await fs.readFile(readmePath)}`;
29
+ for (const plugin of plugins) readme = await plugin.readme?.call(pluginContext, readme) ?? readme;
30
+ await fs.writeFile(readmePath, readme);
31
+ for (const plugin of plugins) await plugin.afterWrite?.call(pluginContext);
32
+ if (installDeps) try {
33
+ await autoInstall(packageManager, outputDir);
34
+ log("Installed dependencies");
35
+ } catch (err) {
36
+ log(`Failed to install dependencies: ${err}`);
37
+ }
38
+ if (initializeGit && await tryGitInit(outputDir)) log("Initialized Git repository");
39
+ }
40
+ async function initPackageJson(projectName, packageJsonPath) {
41
+ function replaceWorkspaceDeps(deps = {}) {
42
+ for (const k in deps) if (deps[k].startsWith("workspace:") && k in depVersions) deps[k] = depVersions[k];
43
+ return deps;
44
+ }
45
+ const packageJson = JSON.parse((await fs.readFile(packageJsonPath)).toString());
46
+ return {
47
+ ...packageJson,
48
+ name: projectName,
49
+ scripts: {
50
+ ...packageJson.scripts,
51
+ postinstall: "@hanzo/docs/mdx"
52
+ },
53
+ dependencies: replaceWorkspaceDeps(packageJson.dependencies),
54
+ devDependencies: replaceWorkspaceDeps(packageJson.devDependencies)
55
+ };
56
+ }
57
+
58
+ //#endregion
59
+ export { create };
60
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["import path from 'node:path';\nimport fs from 'node:fs/promises';\nimport { copy, tryGitInit } from '@/utils';\nimport type { PackageManager } from './auto-install';\nimport { autoInstall } from './auto-install';\nimport { depVersions, sourceDir, type TemplateInfo, templates } from './constants';\n\nexport type Template = TemplateInfo['value'];\nexport interface Options {\n outputDir: string;\n template: Template;\n\n /**\n * the package manager to use\n *\n * @defaultValue 'npm'\n */\n packageManager?: PackageManager;\n\n installDeps?: boolean;\n initializeGit?: boolean;\n log?: (message: string) => void;\n plugins?: TemplatePlugin[];\n}\n\nexport interface TemplatePluginContext {\n template: TemplateInfo;\n log: (message: string) => void;\n /**\n * output directory\n */\n dest: string;\n\n /**\n * output directory for app code (e.g. under `/src`)\n */\n appDir: string;\n}\n\nexport type PackageJsonType = {\n name?: string;\n version?: string;\n private?: boolean;\n scripts?: Record<string, string>;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n} & Record<string, unknown>;\n\ntype Awaitable<T> = T | Promise<T>;\n\nexport interface TemplatePlugin {\n template?: (\n this: Pick<TemplatePluginContext, 'dest'>,\n info: TemplateInfo,\n ) => Awaitable<void | TemplateInfo>;\n packageJson?: (\n this: TemplatePluginContext,\n packageJson: PackageJsonType,\n ) => Awaitable<void | PackageJsonType>;\n afterWrite?: (this: TemplatePluginContext) => Awaitable<void>;\n readme?: (this: TemplatePluginContext, content: string) => Awaitable<void | string>;\n}\n\nexport async function create(createOptions: Options): Promise<void> {\n const {\n outputDir,\n plugins = [],\n packageManager = 'npm',\n initializeGit = false,\n installDeps = false,\n log = console.log,\n } = createOptions;\n\n let template = templates.find((item) => item.value === createOptions.template)!;\n for (const plugin of plugins) {\n template = (await plugin.template?.call({ dest: outputDir }, template)) ?? template;\n }\n\n const appDir = path.join(outputDir, template.appDir);\n const projectName = path.basename(outputDir);\n const pluginContext: TemplatePluginContext = {\n template,\n dest: outputDir,\n log,\n appDir,\n };\n\n await copy(path.join(sourceDir, 'template', template.value), outputDir, {\n rename(file) {\n file = file.replace('example.gitignore', '.gitignore');\n\n return template.rename?.(file) ?? file;\n },\n });\n\n const packageJsonPath = path.join(outputDir, 'package.json');\n let packageJson = await initPackageJson(projectName, packageJsonPath);\n for (const plugin of plugins) {\n packageJson = (await plugin.packageJson?.call(pluginContext, packageJson)) ?? packageJson;\n }\n await fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2));\n\n const readmePath = path.join(outputDir, 'README.md');\n let readme = `# ${projectName}\\n\\n${await fs.readFile(readmePath)}`;\n for (const plugin of plugins) {\n readme = (await plugin.readme?.call(pluginContext, readme)) ?? readme;\n }\n await fs.writeFile(readmePath, readme);\n\n for (const plugin of plugins) {\n await plugin.afterWrite?.call(pluginContext);\n }\n\n if (installDeps) {\n try {\n await autoInstall(packageManager, outputDir);\n log('Installed dependencies');\n } catch (err) {\n log(`Failed to install dependencies: ${err}`);\n }\n }\n\n if (initializeGit && (await tryGitInit(outputDir))) {\n log('Initialized Git repository');\n }\n}\n\nasync function initPackageJson(\n projectName: string,\n packageJsonPath: string,\n): Promise<PackageJsonType> {\n function replaceWorkspaceDeps(deps: Record<string, string> = {}) {\n for (const k in deps) {\n if (deps[k].startsWith('workspace:') && k in depVersions) {\n deps[k] = depVersions[k as keyof typeof depVersions];\n }\n }\n\n return deps;\n }\n\n const packageJson: PackageJsonType = JSON.parse((await fs.readFile(packageJsonPath)).toString());\n\n return {\n ...packageJson,\n name: projectName,\n scripts: {\n ...packageJson.scripts,\n postinstall: '@hanzo/docs/mdx',\n },\n dependencies: replaceWorkspaceDeps(packageJson.dependencies),\n devDependencies: replaceWorkspaceDeps(packageJson.devDependencies),\n };\n}\n"],"mappings":";;;;;;AA+DA,eAAsB,OAAO,eAAuC;CAClE,MAAM,EACJ,WACA,UAAU,EAAE,EACZ,iBAAiB,OACjB,gBAAgB,OAChB,cAAc,OACd,MAAM,QAAQ,QACZ;CAEJ,IAAI,WAAW,UAAU,MAAM,SAAS,KAAK,UAAU,cAAc,SAAS;AAC9E,MAAK,MAAM,UAAU,QACnB,YAAY,MAAM,OAAO,UAAU,KAAK,EAAE,MAAM,WAAW,EAAE,SAAS,IAAK;CAG7E,MAAM,SAAS,KAAK,KAAK,WAAW,SAAS,OAAO;CACpD,MAAM,cAAc,KAAK,SAAS,UAAU;CAC5C,MAAM,gBAAuC;EAC3C;EACA,MAAM;EACN;EACA;EACD;AAED,OAAM,KAAK,KAAK,KAAK,WAAW,YAAY,SAAS,MAAM,EAAE,WAAW,EACtE,OAAO,MAAM;AACX,SAAO,KAAK,QAAQ,qBAAqB,aAAa;AAEtD,SAAO,SAAS,SAAS,KAAK,IAAI;IAErC,CAAC;CAEF,MAAM,kBAAkB,KAAK,KAAK,WAAW,eAAe;CAC5D,IAAI,cAAc,MAAM,gBAAgB,aAAa,gBAAgB;AACrE,MAAK,MAAM,UAAU,QACnB,eAAe,MAAM,OAAO,aAAa,KAAK,eAAe,YAAY,IAAK;AAEhF,OAAM,GAAG,UAAU,iBAAiB,KAAK,UAAU,aAAa,MAAM,EAAE,CAAC;CAEzE,MAAM,aAAa,KAAK,KAAK,WAAW,YAAY;CACpD,IAAI,SAAS,KAAK,YAAY,MAAM,MAAM,GAAG,SAAS,WAAW;AACjE,MAAK,MAAM,UAAU,QACnB,UAAU,MAAM,OAAO,QAAQ,KAAK,eAAe,OAAO,IAAK;AAEjE,OAAM,GAAG,UAAU,YAAY,OAAO;AAEtC,MAAK,MAAM,UAAU,QACnB,OAAM,OAAO,YAAY,KAAK,cAAc;AAG9C,KAAI,YACF,KAAI;AACF,QAAM,YAAY,gBAAgB,UAAU;AAC5C,MAAI,yBAAyB;UACtB,KAAK;AACZ,MAAI,mCAAmC,MAAM;;AAIjD,KAAI,iBAAkB,MAAM,WAAW,UAAU,CAC/C,KAAI,6BAA6B;;AAIrC,eAAe,gBACb,aACA,iBAC0B;CAC1B,SAAS,qBAAqB,OAA+B,EAAE,EAAE;AAC/D,OAAK,MAAM,KAAK,KACd,KAAI,KAAK,GAAG,WAAW,aAAa,IAAI,KAAK,YAC3C,MAAK,KAAK,YAAY;AAI1B,SAAO;;CAGT,MAAM,cAA+B,KAAK,OAAO,MAAM,GAAG,SAAS,gBAAgB,EAAE,UAAU,CAAC;AAEhG,QAAO;EACL,GAAG;EACH,MAAM;EACN,SAAS;GACP,GAAG,YAAY;GACf,aAAa;GACd;EACD,cAAc,qBAAqB,YAAY,aAAa;EAC5D,iBAAiB,qBAAqB,YAAY,gBAAgB;EACnE"}
@@ -0,0 +1,40 @@
1
+ //#region src/plugins/biome.base.json.d.ts
2
+ declare let $schema: string;
3
+ declare namespace vcs {
4
+ let enabled: boolean;
5
+ let clientKind: string;
6
+ let useIgnoreFile: boolean;
7
+ }
8
+ declare namespace files {
9
+ let ignoreUnknown: boolean;
10
+ let includes: string[];
11
+ }
12
+ declare namespace formatter {
13
+ let enabled_1: boolean;
14
+ export { enabled_1 as enabled };
15
+ export let indentStyle: string;
16
+ export let indentWidth: number;
17
+ }
18
+ declare namespace linter {
19
+ let enabled_2: boolean;
20
+ export { enabled_2 as enabled };
21
+ export namespace rules {
22
+ let recommended: boolean;
23
+ }
24
+ export namespace domains {
25
+ let react: string;
26
+ }
27
+ }
28
+ declare namespace assist {
29
+ namespace actions {
30
+ namespace source {
31
+ let organizeImports: string;
32
+ }
33
+ }
34
+ }
35
+ declare namespace __json_default_export {
36
+ export { $schema, vcs, files, formatter, linter, assist };
37
+ }
38
+ //#endregion
39
+ export { $schema, assist, __json_default_export as default, files, formatter, linter, vcs };
40
+ //# sourceMappingURL=biome.base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"biome.base.d.ts","names":["$schema","vcs","enabled","clientKind","useIgnoreFile","files","ignoreUnknown","includes","formatter","enabled_1","indentStyle","indentWidth","linter","enabled_2","rules","recommended","domains","react","assist","actions","source","organizeImports","__json_default_export","default"],"sources":["../../src/plugins/biome.base.json.d.ts"],"mappings":";YAAWA,OAAAA;AAAAA,kBACMC,GAAAA;EAAAA,IACTC,OAAAA;EAAAA,IACAC,UAAAA;EAAAA,IACAC,aAAAA;AAAAA;AAAAA,kBAESC,KAAAA;EAAAA,IACTC,aAAAA;EAAAA,IACAC,QAAAA;AAAAA;AAAAA,kBAESC,SAAAA;EAAAA,IACTC,SAAAA;EAAAA,SACKA,SAAAA,IAAaP,OAAAA;EAAAA,WACXQ,WAAAA;EAAAA,WACAC,WAAAA;AAAAA;AAAAA,kBAEEC,MAAAA;EAAAA,IACTC,SAAAA;EAAAA,SACKA,SAAAA,IAAaX,OAAAA;EAAAA,iBACLY,KAAAA;IAAAA,IACTC,WAAAA;EAAAA;EAAAA,iBAESC,OAAAA;IAAAA,IACTC,KAAAA;EAAAA;AAAAA;AAAAA,kBAGKC,MAAAA;EAAAA,UACHC,OAAAA;IAAAA,UACIC,MAAAA;MAAAA,IACFC,eAAAA;IAAAA;EAAAA;AAAAA;AAAAA,kBAKEC,qBAAAA;EAAAA,SACPtB,OAAAA,EAASC,GAAAA,EAAKI,KAAAA,EAAOG,SAAAA,EAAWI,MAAAA,EAAQM,MAAAA;AAAAA"}
@@ -0,0 +1,38 @@
1
+ //#region src/plugins/biome.base.json
2
+ var $schema = "https://biomejs.dev/schemas/2.2.0/schema.json";
3
+ var vcs = {
4
+ "enabled": true,
5
+ "clientKind": "git",
6
+ "useIgnoreFile": true
7
+ };
8
+ var files = {
9
+ "ignoreUnknown": true,
10
+ "includes": [
11
+ "**",
12
+ "!node_modules",
13
+ "!docs"
14
+ ]
15
+ };
16
+ var formatter = {
17
+ "enabled": true,
18
+ "indentStyle": "space",
19
+ "indentWidth": 2
20
+ };
21
+ var linter = {
22
+ "enabled": true,
23
+ "rules": { "recommended": true },
24
+ "domains": { "react": "recommended" }
25
+ };
26
+ var assist = { "actions": { "source": { "organizeImports": "on" } } };
27
+ var biome_base_default = {
28
+ $schema,
29
+ vcs,
30
+ files,
31
+ formatter,
32
+ linter,
33
+ assist
34
+ };
35
+
36
+ //#endregion
37
+ export { $schema, assist, biome_base_default as default, files, formatter, linter, vcs };
38
+ //# sourceMappingURL=biome.base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"biome.base.js","names":[],"sources":["../../src/plugins/biome.base.json"],"sourcesContent":[""],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { TemplatePlugin } from "../index.js";
2
+
3
+ //#region src/plugins/biome.d.ts
4
+ declare function biome(): TemplatePlugin;
5
+ //#endregion
6
+ export { biome };
7
+ //# sourceMappingURL=biome.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"biome.d.ts","names":[],"sources":["../../src/plugins/biome.ts"],"mappings":";;;iBAOgB,KAAA,CAAA,GAAS,cAAA"}
@@ -0,0 +1,33 @@
1
+ import { c as writeFile, o as pick, t as depVersions } from "../constants-CbNzssp2.js";
2
+ import biome_base_default from "./biome.base.js";
3
+ import biome_next_default from "./biome.next.js";
4
+ import path from "node:path";
5
+
6
+ //#region src/plugins/biome.ts
7
+ function biome() {
8
+ return {
9
+ packageJson(packageJson) {
10
+ return {
11
+ ...packageJson,
12
+ scripts: {
13
+ ...packageJson.scripts,
14
+ lint: "biome check",
15
+ format: "biome format --write"
16
+ },
17
+ devDependencies: {
18
+ ...packageJson.devDependencies,
19
+ ...pick(depVersions, ["@biomejs/biome"])
20
+ }
21
+ };
22
+ },
23
+ async afterWrite() {
24
+ const config = this.template.value.startsWith("+next") ? biome_next_default : biome_base_default;
25
+ await writeFile(path.join(this.dest, "biome.json"), JSON.stringify(config, null, 2));
26
+ this.log("Configured Biome");
27
+ }
28
+ };
29
+ }
30
+
31
+ //#endregion
32
+ export { biome };
33
+ //# sourceMappingURL=biome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"biome.js","names":["next","base"],"sources":["../../src/plugins/biome.ts"],"sourcesContent":["import { TemplatePlugin } from '@/index';\nimport { pick, writeFile } from '@/utils';\nimport path from 'node:path';\nimport { depVersions } from '@/constants';\nimport base from './biome.base.json';\nimport next from './biome.next.json';\n\nexport function biome(): TemplatePlugin {\n return {\n packageJson(packageJson) {\n return {\n ...packageJson,\n scripts: {\n ...packageJson.scripts,\n lint: 'biome check',\n format: 'biome format --write',\n },\n devDependencies: {\n ...packageJson.devDependencies,\n ...pick(depVersions, ['@biomejs/biome']),\n },\n };\n },\n async afterWrite() {\n const config = this.template.value.startsWith('+next') ? next : base;\n\n await writeFile(path.join(this.dest, 'biome.json'), JSON.stringify(config, null, 2));\n this.log('Configured Biome');\n },\n };\n}\n"],"mappings":";;;;;;AAOA,SAAgB,QAAwB;AACtC,QAAO;EACL,YAAY,aAAa;AACvB,UAAO;IACL,GAAG;IACH,SAAS;KACP,GAAG,YAAY;KACf,MAAM;KACN,QAAQ;KACT;IACD,iBAAiB;KACf,GAAG,YAAY;KACf,GAAG,KAAK,aAAa,CAAC,iBAAiB,CAAC;KACzC;IACF;;EAEH,MAAM,aAAa;GACjB,MAAM,SAAS,KAAK,SAAS,MAAM,WAAW,QAAQ,GAAGA,qBAAOC;AAEhE,SAAM,UAAU,KAAK,KAAK,KAAK,MAAM,aAAa,EAAE,KAAK,UAAU,QAAQ,MAAM,EAAE,CAAC;AACpF,QAAK,IAAI,mBAAmB;;EAE/B"}
@@ -0,0 +1,41 @@
1
+ //#region src/plugins/biome.next.json.d.ts
2
+ declare let $schema: string;
3
+ declare namespace vcs {
4
+ let enabled: boolean;
5
+ let clientKind: string;
6
+ let useIgnoreFile: boolean;
7
+ }
8
+ declare namespace files {
9
+ let ignoreUnknown: boolean;
10
+ let includes: string[];
11
+ }
12
+ declare namespace formatter {
13
+ let enabled_1: boolean;
14
+ export { enabled_1 as enabled };
15
+ export let indentStyle: string;
16
+ export let indentWidth: number;
17
+ }
18
+ declare namespace linter {
19
+ let enabled_2: boolean;
20
+ export { enabled_2 as enabled };
21
+ export namespace rules {
22
+ let recommended: boolean;
23
+ }
24
+ export namespace domains {
25
+ let next: string;
26
+ let react: string;
27
+ }
28
+ }
29
+ declare namespace assist {
30
+ namespace actions {
31
+ namespace source {
32
+ let organizeImports: string;
33
+ }
34
+ }
35
+ }
36
+ declare namespace __json_default_export {
37
+ export { $schema, vcs, files, formatter, linter, assist };
38
+ }
39
+ //#endregion
40
+ export { $schema, assist, __json_default_export as default, files, formatter, linter, vcs };
41
+ //# sourceMappingURL=biome.next.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"biome.next.d.ts","names":["$schema","vcs","enabled","clientKind","useIgnoreFile","files","ignoreUnknown","includes","formatter","enabled_1","indentStyle","indentWidth","linter","enabled_2","rules","recommended","domains","next","react","assist","actions","source","organizeImports","__json_default_export","default"],"sources":["../../src/plugins/biome.next.json.d.ts"],"mappings":";YAAWA,OAAAA;AAAAA,kBACMC,GAAAA;EAAAA,IACTC,OAAAA;EAAAA,IACAC,UAAAA;EAAAA,IACAC,aAAAA;AAAAA;AAAAA,kBAESC,KAAAA;EAAAA,IACTC,aAAAA;EAAAA,IACAC,QAAAA;AAAAA;AAAAA,kBAESC,SAAAA;EAAAA,IACTC,SAAAA;EAAAA,SACKA,SAAAA,IAAaP,OAAAA;EAAAA,WACXQ,WAAAA;EAAAA,WACAC,WAAAA;AAAAA;AAAAA,kBAEEC,MAAAA;EAAAA,IACTC,SAAAA;EAAAA,SACKA,SAAAA,IAAaX,OAAAA;EAAAA,iBACLY,KAAAA;IAAAA,IACTC,WAAAA;EAAAA;EAAAA,iBAESC,OAAAA;IAAAA,IACTC,IAAAA;IAAAA,IACAC,KAAAA;EAAAA;AAAAA;AAAAA,kBAGKC,MAAAA;EAAAA,UACHC,OAAAA;IAAAA,UACIC,MAAAA;MAAAA,IACFC,eAAAA;IAAAA;EAAAA;AAAAA;AAAAA,kBAKEC,qBAAAA;EAAAA,SACPvB,OAAAA,EAASC,GAAAA,EAAKI,KAAAA,EAAOG,SAAAA,EAAWI,MAAAA,EAAQO,MAAAA;AAAAA"}
@@ -0,0 +1,44 @@
1
+ //#region src/plugins/biome.next.json
2
+ var $schema = "https://biomejs.dev/schemas/2.2.0/schema.json";
3
+ var vcs = {
4
+ "enabled": true,
5
+ "clientKind": "git",
6
+ "useIgnoreFile": true
7
+ };
8
+ var files = {
9
+ "ignoreUnknown": true,
10
+ "includes": [
11
+ "**",
12
+ "!node_modules",
13
+ "!.next",
14
+ "!dist",
15
+ "!build",
16
+ "!docs"
17
+ ]
18
+ };
19
+ var formatter = {
20
+ "enabled": true,
21
+ "indentStyle": "space",
22
+ "indentWidth": 2
23
+ };
24
+ var linter = {
25
+ "enabled": true,
26
+ "rules": { "recommended": true },
27
+ "domains": {
28
+ "next": "recommended",
29
+ "react": "recommended"
30
+ }
31
+ };
32
+ var assist = { "actions": { "source": { "organizeImports": "on" } } };
33
+ var biome_next_default = {
34
+ $schema,
35
+ vcs,
36
+ files,
37
+ formatter,
38
+ linter,
39
+ assist
40
+ };
41
+
42
+ //#endregion
43
+ export { $schema, assist, biome_next_default as default, files, formatter, linter, vcs };
44
+ //# sourceMappingURL=biome.next.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"biome.next.js","names":[],"sources":["../../src/plugins/biome.next.json"],"sourcesContent":[""],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { TemplatePlugin } from "../index.js";
2
+
3
+ //#region src/plugins/eslint.d.ts
4
+ declare function eslint(): TemplatePlugin;
5
+ //#endregion
6
+ export { eslint };
7
+ //# sourceMappingURL=eslint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eslint.d.ts","names":[],"sources":["../../src/plugins/eslint.ts"],"mappings":";;;iBAqBgB,MAAA,CAAA,GAAU,cAAA"}
@@ -0,0 +1,47 @@
1
+ import { c as writeFile, o as pick, t as depVersions } from "../constants-CbNzssp2.js";
2
+ import path from "node:path";
3
+
4
+ //#region src/plugins/eslint.ts
5
+ const config = `import { defineConfig, globalIgnores } from 'eslint/config';
6
+ import nextVitals from 'eslint-config-next/core-web-vitals';
7
+
8
+ const eslintConfig = defineConfig([
9
+ ...nextVitals,
10
+ globalIgnores([
11
+ '.next/**',
12
+ 'out/**',
13
+ 'build/**',
14
+ 'next-env.d.ts',
15
+ 'docs/**',
16
+ ]),
17
+ ]);
18
+
19
+ export default eslintConfig;`;
20
+ function eslint() {
21
+ return {
22
+ packageJson(packageJson) {
23
+ if (!this.template.value.startsWith("+next")) return;
24
+ return {
25
+ ...packageJson,
26
+ scripts: {
27
+ ...packageJson.scripts,
28
+ lint: "eslint"
29
+ },
30
+ devDependencies: {
31
+ ...packageJson.devDependencies,
32
+ "eslint-config-next": packageJson.dependencies.next,
33
+ ...pick(depVersions, ["eslint"])
34
+ }
35
+ };
36
+ },
37
+ async afterWrite() {
38
+ if (!this.template.value.startsWith("+next")) return;
39
+ await writeFile(path.join(this.dest, "eslint.config.mjs"), config);
40
+ this.log("Configured ESLint");
41
+ }
42
+ };
43
+ }
44
+
45
+ //#endregion
46
+ export { eslint };
47
+ //# sourceMappingURL=eslint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eslint.js","names":[],"sources":["../../src/plugins/eslint.ts"],"sourcesContent":["import { TemplatePlugin } from '@/index';\nimport { pick, writeFile } from '@/utils';\nimport path from 'node:path';\nimport { depVersions } from '@/constants';\n\nconst config = `import { defineConfig, globalIgnores } from 'eslint/config';\nimport nextVitals from 'eslint-config-next/core-web-vitals';\n\nconst eslintConfig = defineConfig([\n ...nextVitals,\n globalIgnores([\n '.next/**',\n 'out/**',\n 'build/**',\n 'next-env.d.ts',\n 'docs/**',\n ]),\n]);\n\nexport default eslintConfig;`;\n\nexport function eslint(): TemplatePlugin {\n return {\n packageJson(packageJson) {\n if (!this.template.value.startsWith('+next')) return;\n\n return {\n ...packageJson,\n scripts: {\n ...packageJson.scripts,\n lint: 'eslint',\n },\n devDependencies: {\n ...packageJson.devDependencies,\n 'eslint-config-next': packageJson.dependencies!.next,\n ...pick(depVersions, ['eslint']),\n },\n };\n },\n async afterWrite() {\n if (!this.template.value.startsWith('+next')) return;\n\n await writeFile(path.join(this.dest, 'eslint.config.mjs'), config);\n this.log('Configured ESLint');\n },\n };\n}\n"],"mappings":";;;;AAKA,MAAM,SAAS;;;;;;;;;;;;;;;AAgBf,SAAgB,SAAyB;AACvC,QAAO;EACL,YAAY,aAAa;AACvB,OAAI,CAAC,KAAK,SAAS,MAAM,WAAW,QAAQ,CAAE;AAE9C,UAAO;IACL,GAAG;IACH,SAAS;KACP,GAAG,YAAY;KACf,MAAM;KACP;IACD,iBAAiB;KACf,GAAG,YAAY;KACf,sBAAsB,YAAY,aAAc;KAChD,GAAG,KAAK,aAAa,CAAC,SAAS,CAAC;KACjC;IACF;;EAEH,MAAM,aAAa;AACjB,OAAI,CAAC,KAAK,SAAS,MAAM,WAAW,QAAQ,CAAE;AAE9C,SAAM,UAAU,KAAK,KAAK,KAAK,MAAM,oBAAoB,EAAE,OAAO;AAClE,QAAK,IAAI,oBAAoB;;EAEhC"}
@@ -0,0 +1,10 @@
1
+ import { TemplatePlugin } from "../index.js";
2
+
3
+ //#region src/plugins/next-use-src.d.ts
4
+ /**
5
+ * Use `src` for app directory
6
+ */
7
+ declare function nextUseSrc(): TemplatePlugin;
8
+ //#endregion
9
+ export { nextUseSrc };
10
+ //# sourceMappingURL=next-use-src.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next-use-src.d.ts","names":[],"sources":["../../src/plugins/next-use-src.ts"],"mappings":";;;;;AAOA;iBAAgB,UAAA,CAAA,GAAc,cAAA"}
@@ -0,0 +1,37 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+
4
+ //#region src/plugins/next-use-src.ts
5
+ /**
6
+ * Use `src` for app directory
7
+ */
8
+ function nextUseSrc() {
9
+ return {
10
+ template(info) {
11
+ if (!info.value.startsWith("+next")) return;
12
+ return {
13
+ ...info,
14
+ appDir: "src",
15
+ rename: (file) => {
16
+ if (path.basename(file) === "mdx-components.tsx" || isRelative(path.join(this.dest, "app"), file) || isRelative(path.join(this.dest, "lib"), file) || isRelative(path.join(this.dest, "components"), file)) return path.join(this.dest, "src", path.relative(this.dest, file));
17
+ return file;
18
+ }
19
+ };
20
+ },
21
+ async afterWrite() {
22
+ if (!this.template.value.startsWith("+next")) return;
23
+ const tsconfigPath = path.join(this.dest, "tsconfig.json");
24
+ const content = (await fs.readFile(tsconfigPath)).toString();
25
+ const config = JSON.parse(content);
26
+ if (config.compilerOptions?.paths) Object.assign(config.compilerOptions.paths, { "@/*": ["./src/*"] });
27
+ await fs.writeFile(tsconfigPath, JSON.stringify(config, null, 2));
28
+ }
29
+ };
30
+ }
31
+ function isRelative(dir, file) {
32
+ return !path.relative(dir, file).startsWith(`..${path.sep}`);
33
+ }
34
+
35
+ //#endregion
36
+ export { nextUseSrc };
37
+ //# sourceMappingURL=next-use-src.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next-use-src.js","names":[],"sources":["../../src/plugins/next-use-src.ts"],"sourcesContent":["import { TemplatePlugin } from '@/index';\nimport path from 'node:path';\nimport fs from 'node:fs/promises';\n\n/**\n * Use `src` for app directory\n */\nexport function nextUseSrc(): TemplatePlugin {\n return {\n template(info) {\n if (!info.value.startsWith('+next')) return;\n\n return {\n ...info,\n appDir: 'src',\n rename: (file) => {\n if (\n path.basename(file) === 'mdx-components.tsx' ||\n isRelative(path.join(this.dest, 'app'), file) ||\n isRelative(path.join(this.dest, 'lib'), file) ||\n isRelative(path.join(this.dest, 'components'), file)\n ) {\n return path.join(this.dest, 'src', path.relative(this.dest, file));\n }\n\n return file;\n },\n };\n },\n // update tsconfig.json for src dir\n async afterWrite() {\n if (!this.template.value.startsWith('+next')) return;\n\n const tsconfigPath = path.join(this.dest, 'tsconfig.json');\n const content = (await fs.readFile(tsconfigPath)).toString();\n const config = JSON.parse(content);\n\n if (config.compilerOptions?.paths) {\n Object.assign(config.compilerOptions.paths, {\n '@/*': ['./src/*'],\n });\n }\n\n await fs.writeFile(tsconfigPath, JSON.stringify(config, null, 2));\n },\n };\n}\n\nfunction isRelative(dir: string, file: string) {\n return !path.relative(dir, file).startsWith(`..${path.sep}`);\n}\n"],"mappings":";;;;;;;AAOA,SAAgB,aAA6B;AAC3C,QAAO;EACL,SAAS,MAAM;AACb,OAAI,CAAC,KAAK,MAAM,WAAW,QAAQ,CAAE;AAErC,UAAO;IACL,GAAG;IACH,QAAQ;IACR,SAAS,SAAS;AAChB,SACE,KAAK,SAAS,KAAK,KAAK,wBACxB,WAAW,KAAK,KAAK,KAAK,MAAM,MAAM,EAAE,KAAK,IAC7C,WAAW,KAAK,KAAK,KAAK,MAAM,MAAM,EAAE,KAAK,IAC7C,WAAW,KAAK,KAAK,KAAK,MAAM,aAAa,EAAE,KAAK,CAEpD,QAAO,KAAK,KAAK,KAAK,MAAM,OAAO,KAAK,SAAS,KAAK,MAAM,KAAK,CAAC;AAGpE,YAAO;;IAEV;;EAGH,MAAM,aAAa;AACjB,OAAI,CAAC,KAAK,SAAS,MAAM,WAAW,QAAQ,CAAE;GAE9C,MAAM,eAAe,KAAK,KAAK,KAAK,MAAM,gBAAgB;GAC1D,MAAM,WAAW,MAAM,GAAG,SAAS,aAAa,EAAE,UAAU;GAC5D,MAAM,SAAS,KAAK,MAAM,QAAQ;AAElC,OAAI,OAAO,iBAAiB,MAC1B,QAAO,OAAO,OAAO,gBAAgB,OAAO,EAC1C,OAAO,CAAC,UAAU,EACnB,CAAC;AAGJ,SAAM,GAAG,UAAU,cAAc,KAAK,UAAU,QAAQ,MAAM,EAAE,CAAC;;EAEpE;;AAGH,SAAS,WAAW,KAAa,MAAc;AAC7C,QAAO,CAAC,KAAK,SAAS,KAAK,KAAK,CAAC,WAAW,KAAK,KAAK,MAAM"}
@@ -0,0 +1,7 @@
1
+ import { TemplatePlugin } from "../index.js";
2
+
3
+ //#region src/plugins/orama-cloud.d.ts
4
+ declare function oramaCloud(): TemplatePlugin;
5
+ //#endregion
6
+ export { oramaCloud };
7
+ //# sourceMappingURL=orama-cloud.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orama-cloud.d.ts","names":[],"sources":["../../src/plugins/orama-cloud.ts"],"mappings":";;;iBAOgB,UAAA,CAAA,GAAc,cAAA"}