@jakubmazanec/carson-templates 8.0.0-unstable.d0bbc216 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +1 -0
  2. package/build/constants.d.ts +1 -0
  3. package/build/constants.js +9 -8
  4. package/build/constants.js.map +2 -2
  5. package/package.json +11 -9
  6. package/source/constants.ts +9 -8
  7. package/templates/projects/app/.editorconfig.ejs +1 -1
  8. package/templates/projects/app/CONTRIBUTING.md.ejs +1 -1
  9. package/templates/projects/app/Dockerfile.ejs +3 -3
  10. package/templates/projects/app/README.md.insert.header.ejs +1 -1
  11. package/templates/projects/app/prettier.config.cjs.ejs +1 -20
  12. package/templates/projects/app/tests/tsconfig.json.ejs +1 -1
  13. package/templates/projects/library/.editorconfig.ejs +26 -1
  14. package/templates/projects/library/.prettierignore.ejs +11 -1
  15. package/templates/projects/library/CONTRIBUTING.md.ejs +23 -1
  16. package/templates/projects/library/README.md.insert.header.ejs +10 -1
  17. package/templates/projects/library/README.md.insert.prerequisites.ejs +7 -1
  18. package/templates/projects/library/package.json.ejs +14 -1
  19. package/templates/projects/library/prettier.config.cjs.ejs +20 -1
  20. package/templates/projects/library/source/main.ts.check.ejs +2 -1
  21. package/templates/projects/library/source/main.ts.create.ejs +3 -1
  22. package/templates/projects/library/tests/tsconfig.json.ejs +22 -1
  23. package/templates/projects/library/tsconfig.json.ejs +26 -1
  24. package/templates/projects/library/typedoc.config.cjs.ejs +17 -1
  25. package/templates/projects/react-library/.editorconfig.ejs +1 -1
  26. package/templates/projects/react-library/CONTRIBUTING.md.ejs +1 -1
  27. package/templates/projects/react-library/README.md.create.ejs +1 -34
  28. package/templates/projects/react-library/README.md.insert.header.ejs +1 -1
  29. package/templates/projects/react-library/README.md.insert.prerequisites.ejs +1 -1
  30. package/templates/projects/react-library/eslint.config.js.ejs +1 -0
  31. package/templates/projects/react-library/source/main.ts.check.ejs +1 -1
  32. package/templates/projects/react-library/source/main.ts.create.ejs +1 -1
  33. package/templates/projects/react-library/tests/tsconfig.json.ejs +1 -1
  34. package/templates/projects/react-library/tsconfig.json.ejs +1 -1
  35. package/templates/projects/react-library/typedoc.config.cjs.ejs +1 -1
  36. package/templates/workspace/.editorconfig.ejs +1 -1
  37. package/templates/workspace/.github/tools/create-templates-changeset.ts.ejs +1 -5
  38. package/templates/workspace/.prettierignore.ejs +1 -1
  39. package/templates/workspace/turbo.json.ejs +1 -9
  40. package/templates/.editorconfig.ejs +0 -28
  41. package/templates/.prettierignore.ejs +0 -13
  42. package/templates/CONTRIBUTING.md.ejs +0 -25
  43. package/templates/README.md.insert.header.ejs +0 -12
  44. package/templates/README.md.insert.prerequisites.ejs +0 -9
  45. package/templates/main.ts.check.ejs +0 -4
  46. package/templates/main.ts.create.ejs +0 -5
  47. package/templates/prettier.config.cjs.ejs +0 -22
  48. package/templates/projects/carson-templates/.editorconfig.ejs +0 -3
  49. package/templates/projects/carson-templates/.prettierignore.ejs +0 -3
  50. package/templates/projects/carson-templates/CONTRIBUTING.md.ejs +0 -3
  51. package/templates/projects/carson-templates/README.md.insert.header.ejs +0 -3
  52. package/templates/projects/carson-templates/README.md.insert.prerequisites.ejs +0 -8
  53. package/templates/projects/carson-templates/config.json +0 -1
  54. package/templates/projects/carson-templates/eslint.config.js.ejs +0 -23
  55. package/templates/projects/carson-templates/package.json.create.ejs +0 -15
  56. package/templates/projects/carson-templates/package.json.ejs +0 -49
  57. package/templates/projects/carson-templates/prettier.config.cjs.ejs +0 -3
  58. package/templates/projects/carson-templates/source/main.ts.check.ejs +0 -3
  59. package/templates/projects/carson-templates/source/main.ts.create.ejs +0 -3
  60. package/templates/projects/carson-templates/tests/tsconfig.json.ejs +0 -3
  61. package/templates/projects/carson-templates/tsconfig.json.ejs +0 -3
  62. package/templates/projects/carson-templates/tsconfig.typecheck.json.ejs +0 -3
  63. package/templates/projects/carson-templates/typedoc.config.cjs.ejs +0 -3
  64. package/templates/projects/carson-templates/vite.config.ts.ejs +0 -27
  65. package/templates/tsconfig.json.ejs +0 -28
  66. package/templates/tsconfig.test.json.ejs +0 -24
  67. package/templates/typedoc.config.cjs.ejs +0 -19
package/README.md CHANGED
@@ -19,6 +19,7 @@ npm install @jakubmazanec/carson-templates
19
19
  #### Prerequisites
20
20
 
21
21
  - Node.js 24 or later
22
+ - TypeScript 5 or later
22
23
  <!-- prerequisites -->
23
24
 
24
25
  ## Usage
@@ -15,6 +15,7 @@ export declare const ECMASCRIPT_VERSION = 2024;
15
15
  export declare const TSCONFIG_COMPILER_OPTIONS: {
16
16
  allowSyntheticDefaultImports: boolean;
17
17
  composite: boolean;
18
+ erasableSyntaxOnly: boolean;
18
19
  exactOptionalPropertyTypes: boolean;
19
20
  forceConsistentCasingInFileNames: boolean;
20
21
  isolatedModules: boolean;
@@ -42,6 +42,7 @@ export const ECMASCRIPT_VERSION = 2024;
42
42
  export const TSCONFIG_COMPILER_OPTIONS = {
43
43
  allowSyntheticDefaultImports: true,
44
44
  composite: true,
45
+ erasableSyntaxOnly: true,
45
46
  exactOptionalPropertyTypes: true,
46
47
  forceConsistentCasingInFileNames: true,
47
48
  isolatedModules: true,
@@ -116,24 +117,24 @@ export const DEPENDENCY_VERSIONS = {
116
117
  "@react-router/fs-routes": "^7.0.0",
117
118
  "@react-router/node": "^7.0.0",
118
119
  "@react-router/serve": "^7.0.0",
119
- "@storybook/addon-links": "^9.0.0",
120
- "@storybook/addon-docs": "^9.0.0",
121
- "@storybook/react-vite": "^9.0.0",
120
+ "@storybook/addon-links": "^10.0.0",
121
+ "@storybook/addon-docs": "^10.0.0",
122
+ "@storybook/react-vite": "^10.0.0",
122
123
  "@testing-library/jest-dom": "^6.0.0",
123
124
  "@testing-library/react": "^16.0.0",
124
125
  "@types/lodash": "^4.0.0",
125
126
  "@types/react": "^19.0.0",
126
127
  "@types/semver": "^7.0.0",
127
128
  "@types/react-dom": "^19.0.0",
128
- "@vitest/coverage-v8": "^3.0.0",
129
+ "@vitest/coverage-v8": "^4.0.0",
129
130
  chromatic: "^13.0.0",
130
131
  concurrently: "^9.0.0",
131
132
  "cross-env": "^10.0.0",
132
- "del-cli": "^6.0.0",
133
+ "del-cli": "^7.0.0",
133
134
  esbuild: "^0.24.0",
134
135
  eslint: "^9.0.0",
135
136
  execa: "^9.0.0",
136
- "happy-dom": "^18.0.0",
137
+ "happy-dom": "^20.0.0",
137
138
  isbot: "^5.0.0",
138
139
  lodash: "^4.0.0",
139
140
  "patch-package": "^8.0.0",
@@ -144,7 +145,7 @@ export const DEPENDENCY_VERSIONS = {
144
145
  "react-dom": "^19.0.0",
145
146
  "react-router": "^7.0.0",
146
147
  semver: "^7.0.0",
147
- storybook: "^9.0.0",
148
+ storybook: "^10.0.0",
148
149
  tailwindcss: "^4.0.0",
149
150
  "@tailwindcss/vite": "^4.0.0",
150
151
  tsx: "^4.0.0",
@@ -153,7 +154,7 @@ export const DEPENDENCY_VERSIONS = {
153
154
  "typedoc-plugin-markdown": "^4.0.0",
154
155
  typescript: "^5.0.0",
155
156
  vite: "^7.0.0",
156
- vitest: "^3.0.0",
157
+ vitest: "^4.0.0",
157
158
  node: "^24.0.0",
158
159
  "@types/node": "^24.0.0",
159
160
  npm: "^11.0.0",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../source/constants.ts"],
4
- "sourcesContent": ["import fs from 'node:fs';\nimport {createRequire} from 'node:module';\nimport semver from 'semver';\n\nexport const AUTHOR = 'Jakub Mazanec <jakub@mazanec.dev>';\n\nexport const BUILD_DIRECTORY = 'build';\nexport const STORYBOOK_BUILD_DIRECTORY = 'storybook-static';\nexport const SOURCE_DIRECTORY = 'source';\n\nexport const APP_PORT = 5000;\n\nexport const CARSON_PACKAGE_NAME = '@jakubmazanec/carson';\nexport const TEMPLATE_PACKAGE_NAME = '@jakubmazanec/carson-templates';\nexport const LINTER_CONFIG_PACKAGE_NAME = '@jakubmazanec/eslint-config';\nexport const CHANGELOG_PACKAGE_NAME = '@jakubmazanec/changesets-changelog';\n\nexport const MAIN_BRANCH_NAMES = new Set(['main', 'master']);\nexport const DEVELOPMENT_BRANCH_NAMES = new Set(['dev', 'develop', 'development']);\n\nexport const LINT_IGNORES = [\n '.cache/**',\n '.turbo/**',\n 'bin/**',\n 'coverage/**',\n 'node_modules/**',\n 'public/**',\n '**/*.d.ts',\n '**/*.json',\n '**/*.md',\n '**/*.mdx',\n `${BUILD_DIRECTORY}/**`,\n].sort();\n\nexport const FORMAT_IGNORE_PATTERNS = [\n '.cache/',\n '.turbo/',\n 'coverage/',\n 'node_modules/',\n 'public/',\n 'npm-shrinkwrap.json',\n 'package-lock.json',\n 'CHANGELOG.md',\n 'LICENSE.md',\n `${BUILD_DIRECTORY}/`,\n].sort();\n\nexport const ECMASCRIPT_VERSION = 2024;\n\nexport const TSCONFIG_COMPILER_OPTIONS = {\n allowSyntheticDefaultImports: true,\n composite: true,\n exactOptionalPropertyTypes: true,\n forceConsistentCasingInFileNames: true,\n isolatedModules: true,\n jsx: 'react-jsx',\n lib: ['dom', 'dom.iterable', `es${ECMASCRIPT_VERSION}`],\n module: 'node16',\n moduleResolution: 'node16',\n noEmitOnError: true,\n noImplicitOverride: true,\n noImplicitReturns: true,\n noUncheckedIndexedAccess: true,\n skipLibCheck: true,\n strict: true,\n target: `es${ECMASCRIPT_VERSION}`,\n};\n\nexport const PRETTIER_OPTIONS = {\n arrowParens: 'always',\n bracketSameLine: false,\n bracketSpacing: false,\n embeddedLanguageFormatting: 'auto',\n experimentalTernaries: true,\n htmlWhitespaceSensitivity: 'css',\n jsxSingleQuote: false,\n printWidth: 100,\n proseWrap: 'always',\n quoteProps: 'as-needed',\n requirePragma: false,\n semi: true,\n singleQuote: true,\n trailingComma: 'all',\n // TODO: remove when this is fixed: https://github.com/prettier/prettier/issues/15956\n overrides: [\n {\n files: ['tsconfig.json'],\n options: {\n trailingComma: 'none',\n },\n },\n ],\n};\n\nexport const TYPEDOC_CONFIG = {\n plugin: 'typedoc-plugin-markdown',\n entryPoints: [`./${SOURCE_DIRECTORY}/main.ts`],\n out: 'docs',\n readme: 'none',\n githubPages: false,\n hideBreadcrumbs: true,\n};\n\n// dependencies\nlet require = createRequire(import.meta.url);\nlet carsonPackageVersion =\n semver\n .minVersion(\n (\n JSON.parse(\n fs.readFileSync(require.resolve(`${TEMPLATE_PACKAGE_NAME}/package.json`), {\n encoding: 'utf8',\n }),\n ) as {peerDependencies: Record<string, string>}\n ).peerDependencies[CARSON_PACKAGE_NAME] ?? '^1.0.0',\n )\n ?.format() ?? '1.0.0';\nlet isCarsonPackageVersionPrerelease = !!semver.prerelease(carsonPackageVersion)?.length;\nlet templatesPackageVersion = (\n JSON.parse(\n fs.readFileSync(require.resolve(`${TEMPLATE_PACKAGE_NAME}/package.json`), {\n encoding: 'utf8',\n }),\n ) as {version: string}\n).version;\nlet isTemplatesPackageVersionPrerelease = !!semver.prerelease(templatesPackageVersion)?.length;\n\nexport const DEPENDENCY_VERSIONS: Record<string, string> = {\n [CARSON_PACKAGE_NAME]:\n isCarsonPackageVersionPrerelease ? carsonPackageVersion : `^${carsonPackageVersion}`,\n [TEMPLATE_PACKAGE_NAME]:\n isTemplatesPackageVersionPrerelease ? templatesPackageVersion : `^${templatesPackageVersion}`,\n [CHANGELOG_PACKAGE_NAME]: '^2.0.0',\n [LINTER_CONFIG_PACKAGE_NAME]: '^4.0.0',\n\n '@changesets/cli': '^2.0.0',\n '@chromatic-com/storybook': '^4.0.0',\n '@react-router/dev': '^7.0.0',\n '@react-router/fs-routes': '^7.0.0',\n '@react-router/node': '^7.0.0',\n '@react-router/serve': '^7.0.0',\n '@storybook/addon-links': '^9.0.0',\n '@storybook/addon-docs': '^9.0.0',\n '@storybook/react-vite': '^9.0.0',\n '@testing-library/jest-dom': '^6.0.0',\n '@testing-library/react': '^16.0.0',\n '@types/lodash': '^4.0.0',\n '@types/react': '^19.0.0',\n '@types/semver': '^7.0.0',\n '@types/react-dom': '^19.0.0',\n '@vitest/coverage-v8': '^3.0.0',\n chromatic: '^13.0.0',\n concurrently: '^9.0.0',\n 'cross-env': '^10.0.0',\n 'del-cli': '^6.0.0',\n esbuild: '^0.24.0',\n eslint: '^9.0.0',\n execa: '^9.0.0',\n 'happy-dom': '^18.0.0',\n isbot: '^5.0.0',\n lodash: '^4.0.0',\n 'patch-package': '^8.0.0',\n prettier: '^3.0.0',\n 'prettier-plugin-packagejson': '^2.0.0',\n 'prettier-plugin-tailwindcss': '^0.6.0',\n react: '^19.0.0',\n 'react-dom': '^19.0.0',\n 'react-router': '^7.0.0',\n semver: '^7.0.0',\n storybook: '^9.0.0',\n tailwindcss: '^4.0.0',\n '@tailwindcss/vite': '^4.0.0',\n tsx: '^4.0.0',\n turbo: '^2.0.0',\n typedoc: '^0.28.0',\n 'typedoc-plugin-markdown': '^4.0.0',\n typescript: '^5.0.0',\n vite: '^7.0.0',\n vitest: '^3.0.0',\n\n node: '^24.0.0',\n '@types/node': '^24.0.0',\n npm: '^11.0.0',\n\n gel: '^6.7.0',\n};\n\n// commands\nexport const FORMAT_COMMAND = 'prettier . --write --ignore-unknown';\nexport const TEST_COMMAND = 'vitest run --coverage --passWithNoTests';\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import fs from 'node:fs';\nimport {createRequire} from 'node:module';\nimport semver from 'semver';\n\nexport const AUTHOR = 'Jakub Mazanec <jakub@mazanec.dev>';\n\nexport const BUILD_DIRECTORY = 'build';\nexport const STORYBOOK_BUILD_DIRECTORY = 'storybook-static';\nexport const SOURCE_DIRECTORY = 'source';\n\nexport const APP_PORT = 5000;\n\nexport const CARSON_PACKAGE_NAME = '@jakubmazanec/carson';\nexport const TEMPLATE_PACKAGE_NAME = '@jakubmazanec/carson-templates';\nexport const LINTER_CONFIG_PACKAGE_NAME = '@jakubmazanec/eslint-config';\nexport const CHANGELOG_PACKAGE_NAME = '@jakubmazanec/changesets-changelog';\n\nexport const MAIN_BRANCH_NAMES = new Set(['main', 'master']);\nexport const DEVELOPMENT_BRANCH_NAMES = new Set(['dev', 'develop', 'development']);\n\nexport const LINT_IGNORES = [\n '.cache/**',\n '.turbo/**',\n 'bin/**',\n 'coverage/**',\n 'node_modules/**',\n 'public/**',\n '**/*.d.ts',\n '**/*.json',\n '**/*.md',\n '**/*.mdx',\n `${BUILD_DIRECTORY}/**`,\n].sort();\n\nexport const FORMAT_IGNORE_PATTERNS = [\n '.cache/',\n '.turbo/',\n 'coverage/',\n 'node_modules/',\n 'public/',\n 'npm-shrinkwrap.json',\n 'package-lock.json',\n 'CHANGELOG.md',\n 'LICENSE.md',\n `${BUILD_DIRECTORY}/`,\n].sort();\n\nexport const ECMASCRIPT_VERSION = 2024;\n\nexport const TSCONFIG_COMPILER_OPTIONS = {\n allowSyntheticDefaultImports: true,\n composite: true,\n erasableSyntaxOnly: true,\n exactOptionalPropertyTypes: true,\n forceConsistentCasingInFileNames: true,\n isolatedModules: true,\n jsx: 'react-jsx',\n lib: ['dom', 'dom.iterable', `es${ECMASCRIPT_VERSION}`],\n module: 'node16',\n moduleResolution: 'node16',\n noEmitOnError: true,\n noImplicitOverride: true,\n noImplicitReturns: true,\n noUncheckedIndexedAccess: true,\n skipLibCheck: true,\n strict: true,\n target: `es${ECMASCRIPT_VERSION}`,\n};\n\nexport const PRETTIER_OPTIONS = {\n arrowParens: 'always',\n bracketSameLine: false,\n bracketSpacing: false,\n embeddedLanguageFormatting: 'auto',\n experimentalTernaries: true,\n htmlWhitespaceSensitivity: 'css',\n jsxSingleQuote: false,\n printWidth: 100,\n proseWrap: 'always',\n quoteProps: 'as-needed',\n requirePragma: false,\n semi: true,\n singleQuote: true,\n trailingComma: 'all',\n // TODO: remove when this is fixed: https://github.com/prettier/prettier/issues/15956\n overrides: [\n {\n files: ['tsconfig.json'],\n options: {\n trailingComma: 'none',\n },\n },\n ],\n};\n\nexport const TYPEDOC_CONFIG = {\n plugin: 'typedoc-plugin-markdown',\n entryPoints: [`./${SOURCE_DIRECTORY}/main.ts`],\n out: 'docs',\n readme: 'none',\n githubPages: false,\n hideBreadcrumbs: true,\n};\n\n// dependencies\nlet require = createRequire(import.meta.url);\nlet carsonPackageVersion =\n semver\n .minVersion(\n (\n JSON.parse(\n fs.readFileSync(require.resolve(`${TEMPLATE_PACKAGE_NAME}/package.json`), {\n encoding: 'utf8',\n }),\n ) as {peerDependencies: Record<string, string>}\n ).peerDependencies[CARSON_PACKAGE_NAME] ?? '^1.0.0',\n )\n ?.format() ?? '1.0.0';\nlet isCarsonPackageVersionPrerelease = !!semver.prerelease(carsonPackageVersion)?.length;\nlet templatesPackageVersion = (\n JSON.parse(\n fs.readFileSync(require.resolve(`${TEMPLATE_PACKAGE_NAME}/package.json`), {\n encoding: 'utf8',\n }),\n ) as {version: string}\n).version;\nlet isTemplatesPackageVersionPrerelease = !!semver.prerelease(templatesPackageVersion)?.length;\n\nexport const DEPENDENCY_VERSIONS: Record<string, string> = {\n [CARSON_PACKAGE_NAME]:\n isCarsonPackageVersionPrerelease ? carsonPackageVersion : `^${carsonPackageVersion}`,\n [TEMPLATE_PACKAGE_NAME]:\n isTemplatesPackageVersionPrerelease ? templatesPackageVersion : `^${templatesPackageVersion}`,\n [CHANGELOG_PACKAGE_NAME]: '^2.0.0',\n [LINTER_CONFIG_PACKAGE_NAME]: '^4.0.0',\n\n '@changesets/cli': '^2.0.0',\n '@chromatic-com/storybook': '^4.0.0',\n '@react-router/dev': '^7.0.0',\n '@react-router/fs-routes': '^7.0.0',\n '@react-router/node': '^7.0.0',\n '@react-router/serve': '^7.0.0',\n '@storybook/addon-links': '^10.0.0',\n '@storybook/addon-docs': '^10.0.0',\n '@storybook/react-vite': '^10.0.0',\n '@testing-library/jest-dom': '^6.0.0',\n '@testing-library/react': '^16.0.0',\n '@types/lodash': '^4.0.0',\n '@types/react': '^19.0.0',\n '@types/semver': '^7.0.0',\n '@types/react-dom': '^19.0.0',\n '@vitest/coverage-v8': '^4.0.0',\n chromatic: '^13.0.0',\n concurrently: '^9.0.0',\n 'cross-env': '^10.0.0',\n 'del-cli': '^7.0.0',\n esbuild: '^0.24.0',\n eslint: '^9.0.0',\n execa: '^9.0.0',\n 'happy-dom': '^20.0.0',\n isbot: '^5.0.0',\n lodash: '^4.0.0',\n 'patch-package': '^8.0.0',\n prettier: '^3.0.0',\n 'prettier-plugin-packagejson': '^2.0.0',\n 'prettier-plugin-tailwindcss': '^0.6.0',\n react: '^19.0.0',\n 'react-dom': '^19.0.0',\n 'react-router': '^7.0.0',\n semver: '^7.0.0',\n storybook: '^10.0.0',\n tailwindcss: '^4.0.0',\n '@tailwindcss/vite': '^4.0.0',\n tsx: '^4.0.0',\n turbo: '^2.0.0',\n typedoc: '^0.28.0',\n 'typedoc-plugin-markdown': '^4.0.0',\n typescript: '^5.0.0',\n vite: '^7.0.0',\n vitest: '^4.0.0',\n\n node: '^24.0.0',\n '@types/node': '^24.0.0',\n npm: '^11.0.0',\n\n gel: '^6.7.0',\n};\n\n// commands\nexport const FORMAT_COMMAND = 'prettier . --write --ignore-unknown';\nexport const TEST_COMMAND = 'vitest run --coverage --passWithNoTests';\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jakubmazanec/carson-templates",
3
- "version": "8.0.0-unstable.d0bbc216",
3
+ "version": "8.0.0",
4
4
  "description": "Collection of Carson templates.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -23,6 +23,7 @@
23
23
  "scripts": {
24
24
  "build": "del-cli build tsconfig.tsbuildinfo && esbuild \"source/**/*\" --platform=node --target=node24.3 --outdir=build --sourcemap && tsc",
25
25
  "clean": "del-cli coverage build *.tsbuildinfo",
26
+ "develop": "concurrently \"esbuild \"source/**/*\" --platform=node --target=node24.3 --outdir=build --sourcemap --watch\" \"tsc --watch\"",
26
27
  "document": "del-cli docs && typedoc --options typedoc.config.cjs",
27
28
  "format": "prettier . --write --ignore-unknown",
28
29
  "lint": "eslint .",
@@ -34,31 +35,32 @@
34
35
  "semver": "^7.7.3"
35
36
  },
36
37
  "devDependencies": {
37
- "@jakubmazanec/carson": "3.0.4-unstable.d0bbc216",
38
- "@jakubmazanec/eslint-config": "4.1.10-unstable.d0bbc216",
39
- "@jakubmazanec/fs-utils": "0.2.16-unstable.d0bbc216",
38
+ "@jakubmazanec/carson": "^3.0.0",
39
+ "@jakubmazanec/eslint-config": "^4.1.0",
40
+ "@jakubmazanec/fs-utils": "^0.2.0",
40
41
  "@types/fs-extra": "^11.0.4",
41
42
  "@types/lodash": "^4.17.21",
42
43
  "@types/node": "^24.0.4",
43
44
  "@types/semver": "^7.7.1",
44
45
  "@types/zen-observable": "^0.8.7",
45
- "@vitest/coverage-v8": "^3.2.4",
46
- "del-cli": "^6.0.0",
46
+ "@vitest/coverage-v8": "^4.0.14",
47
+ "concurrently": "^9.2.1",
48
+ "del-cli": "^7.0.0",
47
49
  "esbuild": "^0.27.0",
48
50
  "eslint": "^9.33.0",
49
51
  "execa": "^9.6.0",
50
52
  "fast-glob": "^3.3.3",
51
53
  "fs-extra": "^11.3.2",
52
- "prettier": "^3.6.2",
54
+ "prettier": "^3.7.1",
53
55
  "prettier-plugin-packagejson": "^2.5.19",
54
56
  "typedoc": "^0.28.14",
55
57
  "typedoc-plugin-markdown": "^4.9.0",
56
58
  "typescript": "^5.9.3",
57
- "vitest": "^3.2.4",
59
+ "vitest": "^4.0.14",
58
60
  "zen-observable": "^0.10.0"
59
61
  },
60
62
  "peerDependencies": {
61
- "@jakubmazanec/carson": "3.0.4-unstable.d0bbc216"
63
+ "@jakubmazanec/carson": "^3.0.0"
62
64
  },
63
65
  "packageManager": "npm@11.3.0",
64
66
  "engines": {
@@ -50,6 +50,7 @@ export const ECMASCRIPT_VERSION = 2024;
50
50
  export const TSCONFIG_COMPILER_OPTIONS = {
51
51
  allowSyntheticDefaultImports: true,
52
52
  composite: true,
53
+ erasableSyntaxOnly: true,
53
54
  exactOptionalPropertyTypes: true,
54
55
  forceConsistentCasingInFileNames: true,
55
56
  isolatedModules: true,
@@ -139,24 +140,24 @@ export const DEPENDENCY_VERSIONS: Record<string, string> = {
139
140
  '@react-router/fs-routes': '^7.0.0',
140
141
  '@react-router/node': '^7.0.0',
141
142
  '@react-router/serve': '^7.0.0',
142
- '@storybook/addon-links': '^9.0.0',
143
- '@storybook/addon-docs': '^9.0.0',
144
- '@storybook/react-vite': '^9.0.0',
143
+ '@storybook/addon-links': '^10.0.0',
144
+ '@storybook/addon-docs': '^10.0.0',
145
+ '@storybook/react-vite': '^10.0.0',
145
146
  '@testing-library/jest-dom': '^6.0.0',
146
147
  '@testing-library/react': '^16.0.0',
147
148
  '@types/lodash': '^4.0.0',
148
149
  '@types/react': '^19.0.0',
149
150
  '@types/semver': '^7.0.0',
150
151
  '@types/react-dom': '^19.0.0',
151
- '@vitest/coverage-v8': '^3.0.0',
152
+ '@vitest/coverage-v8': '^4.0.0',
152
153
  chromatic: '^13.0.0',
153
154
  concurrently: '^9.0.0',
154
155
  'cross-env': '^10.0.0',
155
- 'del-cli': '^6.0.0',
156
+ 'del-cli': '^7.0.0',
156
157
  esbuild: '^0.24.0',
157
158
  eslint: '^9.0.0',
158
159
  execa: '^9.0.0',
159
- 'happy-dom': '^18.0.0',
160
+ 'happy-dom': '^20.0.0',
160
161
  isbot: '^5.0.0',
161
162
  lodash: '^4.0.0',
162
163
  'patch-package': '^8.0.0',
@@ -167,7 +168,7 @@ export const DEPENDENCY_VERSIONS: Record<string, string> = {
167
168
  'react-dom': '^19.0.0',
168
169
  'react-router': '^7.0.0',
169
170
  semver: '^7.0.0',
170
- storybook: '^9.0.0',
171
+ storybook: '^10.0.0',
171
172
  tailwindcss: '^4.0.0',
172
173
  '@tailwindcss/vite': '^4.0.0',
173
174
  tsx: '^4.0.0',
@@ -176,7 +177,7 @@ export const DEPENDENCY_VERSIONS: Record<string, string> = {
176
177
  'typedoc-plugin-markdown': '^4.0.0',
177
178
  typescript: '^5.0.0',
178
179
  vite: '^7.0.0',
179
- vitest: '^3.0.0',
180
+ vitest: '^4.0.0',
180
181
 
181
182
  node: '^24.0.0',
182
183
  '@types/node': '^24.0.0',
@@ -1,3 +1,3 @@
1
1
  ---
2
- extends: '../../.editorconfig.ejs'
2
+ extends: '../library/.editorconfig.ejs'
3
3
  ---
@@ -1,3 +1,3 @@
1
1
  ---
2
- extends: '../../CONTRIBUTING.md.ejs'
2
+ extends: '../library/CONTRIBUTING.md.ejs'
3
3
  ---
@@ -36,7 +36,7 @@ for (let project of workspace.projects) {
36
36
  #
37
37
 
38
38
  # Base stage
39
- FROM node:<%- semver.major(semver.minVersion(DEPENDENCY_VERSIONS.node)) %>-slim as base
39
+ FROM node:<%- semver.major(semver.minVersion(DEPENDENCY_VERSIONS.node)) %>-slim AS base
40
40
 
41
41
  WORKDIR /workspace
42
42
 
@@ -61,7 +61,7 @@ ENV GEL_BRANCH=$GEL_BRANCH
61
61
  -%>
62
62
 
63
63
  # Throw-away build stage to reduce size of final image
64
- FROM base as build
64
+ FROM base AS build
65
65
 
66
66
  # Install packages needed to install dependencies
67
67
  RUN apt-get update -qq && apt-get install --no-install-recommends -y build-essential node-gyp pkg-config python-is-python3
@@ -93,7 +93,7 @@ FROM base
93
93
  <%- copyFilesLines.join('\n') %>
94
94
 
95
95
  # Install dependencies
96
- RUN npm ci --omit=dev --ignore-scripts
96
+ RUN npm ci --omit=dev --ignore-scripts && npm cache clean --force
97
97
 
98
98
  # Start the server
99
99
  WORKDIR /workspace/<%- project.relativePath %>
@@ -1,3 +1,3 @@
1
1
  ---
2
- extends: '../../README.md.insert.header.ejs'
2
+ extends: '../library/README.md.insert.header.ejs'
3
3
  ---
@@ -1,22 +1,3 @@
1
1
  ---
2
- to: 'prettier.config.cjs'
3
- strategy: overwrite
2
+ extends: '../react-library/prettier.config.cjs.ejs'
4
3
  ---
5
- <%
6
- let prettierConfig = lodash.merge(
7
- {
8
- ...PRETTIER_OPTIONS,
9
- plugins: ['prettier-plugin-packagejson', 'prettier-plugin-tailwindcss'],
10
- },
11
- project.config.overrides?.prettierConfig ?? {},
12
- );
13
- -%>
14
- /**
15
- * DO NOT EDIT!
16
- * This file was autogenerated by Carson.
17
- * Changes may cause incorrect behavior and will be lost when the file is regenerated.
18
- *
19
- * Run `npx carson update workspace` to regenerate.
20
- */
21
-
22
- module.exports = <%- JSON.stringify(prettierConfig, null, 2) %>;
@@ -1,3 +1,3 @@
1
1
  ---
2
- extends: '../../../tsconfig.test.json.ejs'
2
+ extends: '../../library/tests/tsconfig.json.ejs'
3
3
  ---
@@ -1,3 +1,28 @@
1
1
  ---
2
- extends: '../../.editorconfig.ejs'
2
+ to: '.editorconfig'
3
+ strategy: overwrite
3
4
  ---
5
+ #
6
+ # DO NOT EDIT!
7
+ # This file was autogenerated by Carson.
8
+ # Changes may cause incorrect behavior and will be lost when the file is regenerated.
9
+ #
10
+ # Run `npx carson update workspace` to regenerate.
11
+ #
12
+
13
+ root = true
14
+
15
+ [*]
16
+ end_of_line = lf
17
+ insert_final_newline = true
18
+ charset = utf-8
19
+
20
+ [**.{js,jsx,mjs,cjs,ts,tsx,cts,mts,css,graphql,json,yaml,yml}]
21
+ indent_style = space
22
+ indent_size = 2
23
+ trim_trailing_whitespace = true
24
+
25
+ [**.{md,mdx}]
26
+ indent_style = space
27
+ indent_size = 2
28
+ trim_trailing_whitespace = false
@@ -1,3 +1,13 @@
1
1
  ---
2
- extends: '../../.prettierignore.ejs'
2
+ to: '.prettierignore'
3
+ strategy: overwrite
3
4
  ---
5
+ #
6
+ # DO NOT EDIT!
7
+ # This file was autogenerated by Carson.
8
+ # Changes may cause incorrect behavior and will be lost when the file is regenerated.
9
+ #
10
+ # Run `npx carson update workspace` to regenerate.
11
+ #
12
+
13
+ <%- FORMAT_IGNORE_PATTERNS.join('\n') %>
@@ -1,3 +1,25 @@
1
1
  ---
2
- extends: '../../CONTRIBUTING.md.ejs'
2
+ to: 'CONTRIBUTING.md'
3
+ strategy: overwrite
3
4
  ---
5
+ <!--
6
+ DO NOT EDIT!
7
+ This file was autogenerated by Carson.
8
+ Changes may cause incorrect behavior and will be lost when the file is regenerated.
9
+
10
+ Run `npx carson update workspace` to regenerate.
11
+ -->
12
+
13
+ # Contributing
14
+
15
+ Thank you for your interest in contributing to this project! Your help is greatly appreciated.
16
+
17
+ ## Reporting Bugs
18
+
19
+ If you encounter a bug, please let me know by opening an issue with a detailed description. You can
20
+ also create a repository with a minimal reproducible example to help me fix it more quickly.
21
+
22
+ ## Pull Requests
23
+
24
+ At this time, I am not accepting pull requests from external contributors. However, if you have a
25
+ feature request, please feel free to open an issue to discuss it.
@@ -1,3 +1,12 @@
1
1
  ---
2
- extends: '../../README.md.insert.header.ejs'
2
+ to: 'README.md'
3
+ strategy: [insert, header]
3
4
  ---
5
+
6
+ <div align="center">
7
+
8
+ # <%- project.name -%>
9
+
10
+ <%- project.packageJson.description -%>
11
+
12
+ </div>
@@ -1,3 +1,9 @@
1
1
  ---
2
- extends: '../../README.md.insert.prerequisites.ejs'
2
+ to: 'README.md'
3
+ strategy: [insert, prerequisites]
3
4
  ---
5
+
6
+ #### Prerequisites
7
+
8
+ - Node.js <%- semver.major(semver.minVersion(DEPENDENCY_VERSIONS.node)) %> or later
9
+ - TypeScript <%- semver.major(semver.minVersion(DEPENDENCY_VERSIONS.typescript)) %> or later
@@ -5,6 +5,10 @@ strategy: merge
5
5
  <%
6
6
  let files = [BUILD_DIRECTORY, SOURCE_DIRECTORY];
7
7
 
8
+ if (project.name === TEMPLATE_PACKAGE_NAME) {
9
+ files.push('templates');
10
+ }
11
+
8
12
  if (project.packageJson.bin) {
9
13
  files.push('bin');
10
14
  }
@@ -33,6 +37,15 @@ let developmentDependencies = [
33
37
  return !Object.keys(project.packageJson.dependencies ?? {}).some((key) => key === dependency); // if the project package.json already contains dependency, we don't need to add it
34
38
  });
35
39
 
40
+ let exports = `./${BUILD_DIRECTORY}/main.js`;
41
+
42
+ if (project.name === TEMPLATE_PACKAGE_NAME) {
43
+ exports = {
44
+ '.': `./${BUILD_DIRECTORY}/main.js`,
45
+ './package.json': './package.json',
46
+ };
47
+ }
48
+
36
49
  let packageJson = lodash.merge(
37
50
  {
38
51
  repository: {
@@ -40,7 +53,7 @@ let packageJson = lodash.merge(
40
53
  directory: project.relativePath,
41
54
  },
42
55
  type: 'module',
43
- exports: `./${BUILD_DIRECTORY}/main.js`,
56
+ exports,
44
57
  files,
45
58
  scripts: {
46
59
  build: `del-cli ${BUILD_DIRECTORY} tsconfig.tsbuildinfo && ${getBuildToEsmCommand(workspace)} && tsc`,
@@ -1,3 +1,22 @@
1
1
  ---
2
- extends: '../../prettier.config.cjs.ejs'
2
+ to: 'prettier.config.cjs'
3
+ strategy: overwrite
3
4
  ---
5
+ <%
6
+ let prettierConfig = lodash.merge(
7
+ {
8
+ ...PRETTIER_OPTIONS,
9
+ plugins: ['prettier-plugin-packagejson'],
10
+ },
11
+ project.config.overrides?.prettierConfig ?? {},
12
+ );
13
+ -%>
14
+ /**
15
+ * DO NOT EDIT!
16
+ * This file was autogenerated by Carson.
17
+ * Changes may cause incorrect behavior and will be lost when the file is regenerated.
18
+ *
19
+ * Run `npx carson update workspace` to regenerate.
20
+ */
21
+
22
+ module.exports = <%- JSON.stringify(prettierConfig, null, 2) %>;
@@ -1,3 +1,4 @@
1
1
  ---
2
- extends: '../../../main.ts.check.ejs'
2
+ to: <%- `${SOURCE_DIRECTORY}/main.ts` %>
3
+ strategy: check
3
4
  ---
@@ -1,3 +1,5 @@
1
1
  ---
2
- extends: '../../../main.ts.create.ejs'
2
+ to: <%- `${SOURCE_DIRECTORY}/main.ts` %>
3
+ strategy: create
3
4
  ---
5
+ export {}
@@ -1,3 +1,24 @@
1
1
  ---
2
- extends: '../../../tsconfig.test.json.ejs'
2
+ to: 'tests/tsconfig.json'
3
+ strategy: overwrite
3
4
  ---
5
+ <%
6
+ let tsconfig = {
7
+ compilerOptions: {
8
+ ...TSCONFIG_COMPILER_OPTIONS,
9
+ composite: false,
10
+ noEmit: true,
11
+ },
12
+ include: ['./**/*'],
13
+ references: [{path: '..'}],
14
+ };
15
+ -%>
16
+ //
17
+ // DO NOT EDIT!
18
+ // This file was autogenerated by Carson.
19
+ // Changes may cause incorrect behavior and will be lost when the file is regenerated.
20
+ //
21
+ // Run `npx carson update workspace` to regenerate.
22
+ //
23
+
24
+ <%- JSON.stringify(tsconfig, null, 2) %>
@@ -1,3 +1,28 @@
1
1
  ---
2
- extends: '../../tsconfig.json.ejs'
2
+ to: 'tsconfig.json'
3
+ strategy: overwrite
3
4
  ---
5
+ <%
6
+ let tsconfig = lodash.merge(
7
+ {
8
+ compilerOptions: {
9
+ ...TSCONFIG_COMPILER_OPTIONS,
10
+ emitDeclarationOnly: true,
11
+ outDir: `./${BUILD_DIRECTORY}`,
12
+ rootDir: `./${SOURCE_DIRECTORY}`,
13
+ },
14
+ include: [`./${SOURCE_DIRECTORY}/**/*`],
15
+ references: getReferences(workspace, project),
16
+ },
17
+ project.config.overrides?.tsconfig ?? {},
18
+ );
19
+ -%>
20
+ //
21
+ // DO NOT EDIT!
22
+ // This file was autogenerated by Carson.
23
+ // Changes may cause incorrect behavior and will be lost when the file is regenerated.
24
+ //
25
+ // Run `npx carson update workspace` to regenerate.
26
+ //
27
+
28
+ <%- JSON.stringify(tsconfig, null, 2) %>
@@ -1,3 +1,19 @@
1
1
  ---
2
- extends: '../../typedoc.config.cjs.ejs'
2
+ to: 'typedoc.config.cjs'
3
+ strategy: overwrite
3
4
  ---
5
+ <%
6
+ let typedocConfig = lodash.merge(
7
+ TYPEDOC_CONFIG,
8
+ project.config.overrides?.typedocConfig ?? {},
9
+ );
10
+ -%>
11
+ /**
12
+ * DO NOT EDIT!
13
+ * This file was autogenerated by Carson.
14
+ * Changes may cause incorrect behavior and will be lost when the file is regenerated.
15
+ *
16
+ * Run `npx carson update workspace` to regenerate.
17
+ */
18
+
19
+ module.exports = <%- JSON.stringify(typedocConfig, null, 2) %>;
@@ -1,3 +1,3 @@
1
1
  ---
2
- extends: '../../.editorconfig.ejs'
2
+ extends: '../library/.editorconfig.ejs'
3
3
  ---
@@ -1,3 +1,3 @@
1
1
  ---
2
- extends: '../../CONTRIBUTING.md.ejs'
2
+ extends: '../library/CONTRIBUTING.md.ejs'
3
3
  ---
@@ -1,36 +1,3 @@
1
1
  ---
2
- to: 'README.md'
3
- strategy: create
2
+ extends: '../library/README.md.create.ejs'
4
3
  ---
5
- <!-- header --><!-- header -->
6
-
7
- ## Installation
8
-
9
- ```sh
10
- npm install <%- project.name %>
11
- ```
12
-
13
- ⚠️ This is an [ESM](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c) package!
14
- It cannot be required from a CommonJS module.
15
-
16
- #### Prerequisites
17
-
18
- - Node.js 20 or later
19
- - TypeScript 5 or later
20
-
21
- ## Usage
22
-
23
- 🚧 This section is under development. Please check back later for updates.
24
-
25
- ## Documentation
26
-
27
- See [API reference](./docs) for auto-generated documentation.
28
-
29
- ## Contributing
30
-
31
- If you want to contribute, see [CONTRIBUTING](./CONTRIBUTING.md) for details.
32
-
33
- ## License
34
-
35
- This package is licensed under the GNU Lesser General Public License v3. See [LICENSE](./LICENSE.md)
36
- for details.
@@ -1,3 +1,3 @@
1
1
  ---
2
- extends: '../../README.md.insert.header.ejs'
2
+ extends: '../library/README.md.insert.header.ejs'
3
3
  ---
@@ -1,3 +1,3 @@
1
1
  ---
2
- extends: '../../README.md.insert.prerequisites.ejs'
2
+ extends: '../library/README.md.insert.prerequisites.ejs'
3
3
  ---
@@ -19,4 +19,5 @@ export default [
19
19
  {
20
20
  ignores: <%- JSON.stringify([...LINT_IGNORES, STORYBOOK_BUILD_DIRECTORY, '!.storybook/'].sort(), null, 2) %>,
21
21
  },
22
+ <%- project.config.overrides?.eslintConfig ? JSON.stringify(project.config.overrides.eslintConfig, null, 2) : '' %>
22
23
  ];
@@ -1,3 +1,3 @@
1
1
  ---
2
- extends: '../../../main.ts.check.ejs'
2
+ extends: '../../library/source/main.ts.check.ejs'
3
3
  ---
@@ -1,3 +1,3 @@
1
1
  ---
2
- extends: '../../../main.ts.create.ejs'
2
+ extends: '../../library/source/main.ts.create.ejs'
3
3
  ---
@@ -1,3 +1,3 @@
1
1
  ---
2
- extends: '../../../tsconfig.test.json.ejs'
2
+ extends: '../../library/tests/tsconfig.json.ejs'
3
3
  ---
@@ -1,3 +1,3 @@
1
1
  ---
2
- extends: '../../tsconfig.json.ejs'
2
+ extends: '../library/tsconfig.json.ejs'
3
3
  ---
@@ -1,3 +1,3 @@
1
1
  ---
2
- extends: '../../typedoc.config.cjs.ejs'
2
+ extends: '../library/typedoc.config.cjs.ejs'
3
3
  ---
@@ -1,3 +1,3 @@
1
1
  ---
2
- extends: '../.editorconfig.ejs'
2
+ extends: '../projects/library/.editorconfig.ejs'
3
3
  ---
@@ -48,12 +48,8 @@ async function checkCarsonTemplatesPackage(
48
48
 
49
49
  if (result?.[0]) {
50
50
  let newMajorVersion = semver.major(semver.minVersion(bump)!);
51
- let oldMajorVersion = semver.major(semver.minVersion(result[0])!);
52
51
 
53
- // Node.js is a special case, because it isn't specified in `dependencies` field
54
- if (newMajorVersion > oldMajorVersion || dependencyName === 'node') {
55
- templatesBump.set(dependencyName, `${newMajorVersion}`);
56
- }
52
+ templatesBump.set(dependencyName, `${newMajorVersion}`);
57
53
  }
58
54
  }
59
55
  }
@@ -1,3 +1,3 @@
1
1
  ---
2
- extends: '../.prettierignore.ejs'
2
+ extends: '../projects/library/.prettierignore.ejs'
3
3
  ---
@@ -42,15 +42,7 @@ let turboConfig = lodash.merge(
42
42
  outputs: [],
43
43
  },
44
44
  },
45
- globalEnv: ['CI'],
46
- globalDependencies: [
47
- '.editorconfig',
48
- '.prettierignore',
49
- 'eslint.config.js',
50
- 'prettier.config.cjs',
51
- 'tsconfig.json',
52
- 'tsconfig.typecheck.json',
53
- ],
45
+ globalEnv: ['CI']
54
46
  },
55
47
  workspace.config.overrides?.turbo ?? {},
56
48
  );
@@ -1,28 +0,0 @@
1
- ---
2
- to: '.editorconfig'
3
- strategy: overwrite
4
- ---
5
- #
6
- # DO NOT EDIT!
7
- # This file was autogenerated by Carson.
8
- # Changes may cause incorrect behavior and will be lost when the file is regenerated.
9
- #
10
- # Run `npx carson update workspace` to regenerate.
11
- #
12
-
13
- root = true
14
-
15
- [*]
16
- end_of_line = lf
17
- insert_final_newline = true
18
- charset = utf-8
19
-
20
- [**.{js,jsx,mjs,cjs,ts,tsx,cts,mts,css,graphql,json,yaml,yml}]
21
- indent_style = space
22
- indent_size = 2
23
- trim_trailing_whitespace = true
24
-
25
- [**.{md,mdx}]
26
- indent_style = space
27
- indent_size = 2
28
- trim_trailing_whitespace = false
@@ -1,13 +0,0 @@
1
- ---
2
- to: '.prettierignore'
3
- strategy: overwrite
4
- ---
5
- #
6
- # DO NOT EDIT!
7
- # This file was autogenerated by Carson.
8
- # Changes may cause incorrect behavior and will be lost when the file is regenerated.
9
- #
10
- # Run `npx carson update workspace` to regenerate.
11
- #
12
-
13
- <%- FORMAT_IGNORE_PATTERNS.join('\n') %>
@@ -1,25 +0,0 @@
1
- ---
2
- to: 'CONTRIBUTING.md'
3
- strategy: overwrite
4
- ---
5
- <!--
6
- DO NOT EDIT!
7
- This file was autogenerated by Carson.
8
- Changes may cause incorrect behavior and will be lost when the file is regenerated.
9
-
10
- Run `npx carson update workspace` to regenerate.
11
- -->
12
-
13
- # Contributing
14
-
15
- Thank you for your interest in contributing to this project! Your help is greatly appreciated.
16
-
17
- ## Reporting Bugs
18
-
19
- If you encounter a bug, please let me know by opening an issue with a detailed description. You can
20
- also create a repository with a minimal reproducible example to help me fix it more quickly.
21
-
22
- ## Pull Requests
23
-
24
- At this time, I am not accepting pull requests from external contributors. However, if you have a
25
- feature request, please feel free to open an issue to discuss it.
@@ -1,12 +0,0 @@
1
- ---
2
- to: 'README.md'
3
- strategy: [insert, header]
4
- ---
5
-
6
- <div align="center">
7
-
8
- # <%- project.name -%>
9
-
10
- <%- project.packageJson.description -%>
11
-
12
- </div>
@@ -1,9 +0,0 @@
1
- ---
2
- to: 'README.md'
3
- strategy: [insert, prerequisites]
4
- ---
5
-
6
- #### Prerequisites
7
-
8
- - Node.js <%- semver.major(semver.minVersion(DEPENDENCY_VERSIONS.node)) %> or later
9
- - TypeScript <%- semver.major(semver.minVersion(DEPENDENCY_VERSIONS.typescript)) %> or later
@@ -1,4 +0,0 @@
1
- ---
2
- to: <%- `${SOURCE_DIRECTORY}/main.ts` %>
3
- strategy: check
4
- ---
@@ -1,5 +0,0 @@
1
- ---
2
- to: <%- `${SOURCE_DIRECTORY}/main.ts` %>
3
- strategy: create
4
- ---
5
- export {}
@@ -1,22 +0,0 @@
1
- ---
2
- to: 'prettier.config.cjs'
3
- strategy: overwrite
4
- ---
5
- <%
6
- let prettierConfig = lodash.merge(
7
- {
8
- ...PRETTIER_OPTIONS,
9
- plugins: ['prettier-plugin-packagejson'],
10
- },
11
- project.config.overrides?.prettierConfig ?? {},
12
- );
13
- -%>
14
- /**
15
- * DO NOT EDIT!
16
- * This file was autogenerated by Carson.
17
- * Changes may cause incorrect behavior and will be lost when the file is regenerated.
18
- *
19
- * Run `npx carson update workspace` to regenerate.
20
- */
21
-
22
- module.exports = <%- JSON.stringify(prettierConfig, null, 2) %>;
@@ -1,3 +0,0 @@
1
- ---
2
- extends: '../../.editorconfig.ejs'
3
- ---
@@ -1,3 +0,0 @@
1
- ---
2
- extends: '../../.prettierignore.ejs'
3
- ---
@@ -1,3 +0,0 @@
1
- ---
2
- extends: '../../CONTRIBUTING.md.ejs'
3
- ---
@@ -1,3 +0,0 @@
1
- ---
2
- extends: '../../README.md.insert.header.ejs'
3
- ---
@@ -1,8 +0,0 @@
1
- ---
2
- to: 'README.md'
3
- strategy: [insert, prerequisites]
4
- ---
5
-
6
- #### Prerequisites
7
-
8
- - Node.js <%- semver.major(semver.minVersion(DEPENDENCY_VERSIONS.node)) %> or later
@@ -1,23 +0,0 @@
1
- ---
2
- to: 'eslint.config.js'
3
- strategy: overwrite
4
- ---
5
- /**
6
- * DO NOT EDIT!
7
- * This file was autogenerated by Carson.
8
- * Changes may cause incorrect behavior and will be lost when the file is regenerated.
9
- *
10
- * Run `npx carson update workspace` to regenerate.
11
- */
12
-
13
- import main, {nodejs, prettier} from '@jakubmazanec/eslint-config';
14
-
15
- export default [
16
- ...main,
17
- ...nodejs,
18
- ...prettier,
19
- {
20
- ignores: <%- JSON.stringify(LINT_IGNORES, null, 2) %>,
21
- },
22
- <%- project.config.overrides?.eslintConfig ? JSON.stringify(project.config.overrides.eslintConfig, null, 2) : '' %>
23
- ];
@@ -1,15 +0,0 @@
1
- ---
2
- to: 'package.json'
3
- strategy: create
4
- ---
5
- {
6
- "name": "<%- project.name %>",
7
- "version": "0.0.0",
8
- "description": "",
9
- "repository": {
10
- "url": "<%- workspace.repository?.url ?? '' %>"
11
- },
12
- "license": "MIT",
13
- "author": "<%- AUTHOR %>",
14
- "sideEffects": false
15
- }
@@ -1,49 +0,0 @@
1
- ---
2
- to: 'package.json'
3
- strategy: merge
4
- ---
5
- <%
6
- let developmentDependencies = [
7
- LINTER_CONFIG_PACKAGE_NAME,
8
- '@types/lodash',
9
- '@types/node',
10
- '@vitest/coverage-v8',
11
- 'del-cli',
12
- 'esbuild',
13
- 'eslint',
14
- 'lodash',
15
- 'prettier',
16
- 'prettier-plugin-packagejson',
17
- 'typedoc',
18
- 'typedoc-plugin-markdown',
19
- 'typescript',
20
- 'vitest',
21
- ].filter((dependency) => {
22
- return !Object.keys(project.packageJson.dependencies ?? {}).some((key) => key === dependency); // if the project package.json already contains dependency, we don't need to add it
23
- });
24
- let packageJson = {
25
- repository: {
26
- type: 'git',
27
- directory: project.relativePath,
28
- },
29
- type: 'module',
30
- exports: {
31
- '.': `./${BUILD_DIRECTORY}/main.js`,
32
- './package.json': './package.json',
33
- },
34
- files: [BUILD_DIRECTORY, SOURCE_DIRECTORY, 'templates'],
35
- scripts: {
36
- build: `del-cli ${BUILD_DIRECTORY} tsconfig.tsbuildinfo && ${getBuildToEsmCommand(workspace)} && tsc`,
37
- clean: `del-cli coverage ${BUILD_DIRECTORY} *.tsbuildinfo`,
38
- document: 'del-cli docs && typedoc --options typedoc.config.cjs',
39
- format: FORMAT_COMMAND,
40
- lint: 'eslint .',
41
- test: `del-cli coverage && ${TEST_COMMAND}`,
42
- typecheck: 'tsc --project tsconfig.typecheck.json',
43
- },
44
- devDependencies: getDependencies(developmentDependencies, workspace),
45
- packageManager: `npm@${semver.minVersion(getDependencies(['npm'], workspace)['npm'])}`,
46
- engines: getDependencies(['node', 'npm'], workspace),
47
- };
48
- -%>
49
- <%- JSON.stringify(packageJson) %>
@@ -1,3 +0,0 @@
1
- ---
2
- extends: '../../prettier.config.cjs.ejs'
3
- ---
@@ -1,3 +0,0 @@
1
- ---
2
- extends: '../../../main.ts.check.ejs'
3
- ---
@@ -1,3 +0,0 @@
1
- ---
2
- extends: '../../../main.ts.create.ejs'
3
- ---
@@ -1,3 +0,0 @@
1
- ---
2
- extends: '../../../tsconfig.test.json.ejs'
3
- ---
@@ -1,3 +0,0 @@
1
- ---
2
- extends: '../../tsconfig.json.ejs'
3
- ---
@@ -1,3 +0,0 @@
1
- ---
2
- extends: '../library/tsconfig.typecheck.json.ejs'
3
- ---
@@ -1,3 +0,0 @@
1
- ---
2
- extends: '../../typedoc.config.cjs.ejs'
3
- ---
@@ -1,27 +0,0 @@
1
- ---
2
- to: 'vite.config.ts'
3
- strategy: overwrite
4
- ---
5
- /**
6
- * DO NOT EDIT!
7
- * This file was autogenerated by Carson.
8
- * Changes may cause incorrect behavior and will be lost when the file is regenerated.
9
- *
10
- * Run `npx carson update workspace` to regenerate.
11
- */
12
-
13
- import _ from 'lodash';
14
- import {defineConfig} from 'vitest/config';
15
-
16
- export default defineConfig(
17
- _.merge(
18
- {
19
- test: {
20
- coverage: {
21
- include: ['<%- SOURCE_DIRECTORY %>/**'],
22
- },
23
- },
24
- },
25
- <%- JSON.stringify(project.config.overrides?.viteConfig ?? {}, null, 2) %>,
26
- ),
27
- );
@@ -1,28 +0,0 @@
1
- ---
2
- to: 'tsconfig.json'
3
- strategy: overwrite
4
- ---
5
- <%
6
- let tsconfig = lodash.merge(
7
- {
8
- compilerOptions: {
9
- ...TSCONFIG_COMPILER_OPTIONS,
10
- emitDeclarationOnly: true,
11
- outDir: `./${BUILD_DIRECTORY}`,
12
- rootDir: `./${SOURCE_DIRECTORY}`,
13
- },
14
- include: [`./${SOURCE_DIRECTORY}/**/*`],
15
- references: getReferences(workspace, project),
16
- },
17
- project.config.overrides?.tsconfig ?? {},
18
- );
19
- -%>
20
- //
21
- // DO NOT EDIT!
22
- // This file was autogenerated by Carson.
23
- // Changes may cause incorrect behavior and will be lost when the file is regenerated.
24
- //
25
- // Run `npx carson update workspace` to regenerate.
26
- //
27
-
28
- <%- JSON.stringify(tsconfig, null, 2) %>
@@ -1,24 +0,0 @@
1
- ---
2
- to: 'tests/tsconfig.json'
3
- strategy: overwrite
4
- ---
5
- <%
6
- let tsconfig = {
7
- compilerOptions: {
8
- ...TSCONFIG_COMPILER_OPTIONS,
9
- composite: false,
10
- noEmit: true,
11
- },
12
- include: ['./**/*'],
13
- references: [{path: '..'}],
14
- };
15
- -%>
16
- //
17
- // DO NOT EDIT!
18
- // This file was autogenerated by Carson.
19
- // Changes may cause incorrect behavior and will be lost when the file is regenerated.
20
- //
21
- // Run `npx carson update workspace` to regenerate.
22
- //
23
-
24
- <%- JSON.stringify(tsconfig, null, 2) %>
@@ -1,19 +0,0 @@
1
- ---
2
- to: 'typedoc.config.cjs'
3
- strategy: overwrite
4
- ---
5
- <%
6
- let typedocConfig = lodash.merge(
7
- TYPEDOC_CONFIG,
8
- project.config.overrides?.typedocConfig ?? {},
9
- );
10
- -%>
11
- /**
12
- * DO NOT EDIT!
13
- * This file was autogenerated by Carson.
14
- * Changes may cause incorrect behavior and will be lost when the file is regenerated.
15
- *
16
- * Run `npx carson update workspace` to regenerate.
17
- */
18
-
19
- module.exports = <%- JSON.stringify(typedocConfig, null, 2) %>;