@jakubmazanec/carson-templates 4.0.0-unstable.d445549a → 4.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 (93) hide show
  1. package/README.md +4 -1
  2. package/build/constants.d.ts +3 -0
  3. package/build/constants.js +11 -9
  4. package/build/constants.js.map +2 -2
  5. package/build/getAppUrl.js +2 -1
  6. package/build/getAppUrl.js.map +2 -2
  7. package/package.json +11 -11
  8. package/source/constants.ts +14 -8
  9. package/source/getAppUrl.ts +3 -1
  10. package/templates/.editorconfig.ejs +28 -0
  11. package/templates/.prettierignore.ejs +13 -0
  12. package/templates/CONTRIBUTING.md.ejs +17 -0
  13. package/templates/README.md.insert.header.ejs +12 -0
  14. package/templates/README.md.insert.prerequisites.ejs +9 -0
  15. package/templates/main.ts.check.ejs +4 -0
  16. package/templates/main.ts.create.ejs +5 -0
  17. package/templates/prettier.config.cjs.ejs +19 -0
  18. package/templates/projects/carson-templates/.editorconfig.ejs +1 -26
  19. package/templates/projects/carson-templates/.prettierignore.ejs +1 -1
  20. package/templates/projects/carson-templates/CONTRIBUTING.md.ejs +1 -1
  21. package/templates/projects/carson-templates/README.md.insert.header.ejs +1 -10
  22. package/templates/projects/carson-templates/README.md.insert.prerequisites.ejs +8 -0
  23. package/templates/projects/carson-templates/package.json.create.ejs +1 -1
  24. package/templates/projects/carson-templates/prettier.config.cjs.ejs +1 -1
  25. package/templates/projects/carson-templates/source/main.ts.check.ejs +1 -2
  26. package/templates/projects/carson-templates/source/main.ts.create.ejs +1 -4
  27. package/templates/projects/carson-templates/tests/tsconfig.json.ejs +1 -22
  28. package/templates/projects/carson-templates/tsconfig.json.ejs +1 -26
  29. package/templates/projects/carson-templates/typedoc.config.cjs.ejs +1 -1
  30. package/templates/projects/changesets-changelog/.editorconfig.ejs +1 -26
  31. package/templates/projects/changesets-changelog/.prettierignore.ejs +1 -1
  32. package/templates/projects/changesets-changelog/CONTRIBUTING.md.ejs +1 -1
  33. package/templates/projects/changesets-changelog/README.md.insert.header.ejs +1 -10
  34. package/templates/projects/changesets-changelog/README.md.insert.prerequisites.ejs +8 -0
  35. package/templates/projects/changesets-changelog/package.json.create.ejs +1 -1
  36. package/templates/projects/changesets-changelog/prettier.config.cjs.ejs +1 -1
  37. package/templates/projects/changesets-changelog/source/main.ts.check.ejs +1 -2
  38. package/templates/projects/changesets-changelog/source/main.ts.create.ejs +1 -4
  39. package/templates/projects/changesets-changelog/tests/tsconfig.json.ejs +1 -22
  40. package/templates/projects/changesets-changelog/tsconfig.json.ejs +1 -26
  41. package/templates/projects/eslint-config/.editorconfig.ejs +1 -26
  42. package/templates/projects/eslint-config/.prettierignore.ejs +1 -1
  43. package/templates/projects/eslint-config/CONTRIBUTING.md.ejs +1 -1
  44. package/templates/projects/eslint-config/README.md.insert.header.ejs +1 -10
  45. package/templates/projects/eslint-config/README.md.insert.prerequisites.ejs +3 -0
  46. package/templates/projects/eslint-config/package.json.create.ejs +1 -1
  47. package/templates/projects/eslint-config/prettier.config.cjs.ejs +1 -1
  48. package/templates/projects/eslint-config/source/main.ts.check.ejs +1 -2
  49. package/templates/projects/eslint-config/source/main.ts.create.ejs +1 -4
  50. package/templates/projects/eslint-config/tsconfig.json.ejs +1 -26
  51. package/templates/projects/library/.editorconfig.ejs +1 -26
  52. package/templates/projects/library/.prettierignore.ejs +1 -1
  53. package/templates/projects/library/CONTRIBUTING.md.ejs +1 -16
  54. package/templates/projects/library/README.md.insert.header.ejs +1 -10
  55. package/templates/projects/library/README.md.insert.prerequisites.ejs +3 -0
  56. package/templates/projects/library/package.json.create.ejs +1 -1
  57. package/templates/projects/library/prettier.config.cjs.ejs +1 -1
  58. package/templates/projects/library/source/main.ts.check.ejs +1 -2
  59. package/templates/projects/library/source/main.ts.create.ejs +1 -3
  60. package/templates/projects/library/tests/tsconfig.json.ejs +1 -22
  61. package/templates/projects/library/tsconfig.json.ejs +1 -26
  62. package/templates/projects/library/typedoc.config.cjs.ejs +1 -16
  63. package/templates/projects/react-library/.editorconfig.ejs +1 -1
  64. package/templates/projects/react-library/CONTRIBUTING.md.ejs +1 -1
  65. package/templates/projects/react-library/README.md.insert.header.ejs +1 -10
  66. package/templates/projects/react-library/README.md.insert.prerequisites.ejs +3 -0
  67. package/templates/projects/react-library/package.json.ejs +2 -2
  68. package/templates/projects/react-library/source/main.ts.check.ejs +1 -1
  69. package/templates/projects/react-library/source/main.ts.create.ejs +1 -1
  70. package/templates/projects/react-library/tests/tsconfig.json.ejs +1 -22
  71. package/templates/projects/react-library/tsconfig.json.ejs +1 -1
  72. package/templates/projects/react-library/typedoc.config.cjs.ejs +1 -1
  73. package/templates/projects/remix-app/.editorconfig.ejs +1 -26
  74. package/templates/projects/remix-app/.prettierignore.ejs +11 -1
  75. package/templates/projects/remix-app/CONTRIBUTING.md.ejs +1 -1
  76. package/templates/projects/remix-app/Dockerfile.ejs +1 -1
  77. package/templates/projects/remix-app/README.md.insert.header.ejs +1 -10
  78. package/templates/projects/remix-app/fly.toml.ejs +1 -1
  79. package/templates/projects/remix-app/package.json.create.ejs +1 -1
  80. package/templates/projects/remix-app/package.json.ejs +2 -2
  81. package/templates/projects/remix-app/source/tailwindConfig.ts.create.ejs +1 -1
  82. package/templates/projects/remix-app/tests/tsconfig.json.ejs +1 -22
  83. package/templates/projects/remix-app/vite.config.ts.ejs +2 -2
  84. package/templates/tsconfig.json.ejs +28 -0
  85. package/templates/tsconfig.test.json.ejs +24 -0
  86. package/templates/typedoc.config.cjs.ejs +18 -0
  87. package/templates/workspace/.dockerignore.ejs +2 -1
  88. package/templates/workspace/.editorconfig.ejs +1 -26
  89. package/templates/workspace/.github/workflows/update-pull-request.yaml.ejs +4 -4
  90. package/templates/workspace/.prettierignore.ejs +1 -11
  91. package/templates/workspace/package.json.create.ejs +1 -1
  92. package/templates/workspace/prettier.config.cjs.ejs +1 -17
  93. package/templates/workspace/turbo.json.ejs +3 -3
package/README.md CHANGED
@@ -14,9 +14,12 @@ Collection of Carson templates.
14
14
  npm install @jakubmazanec/carson-templates
15
15
  ```
16
16
 
17
+ <!-- prerequisites -->
18
+
17
19
  #### Prerequisites
18
20
 
19
- - Node.js 20 or later
21
+ - Node.js 22 or later
22
+ <!-- prerequisites -->
20
23
 
21
24
  ## Usage
22
25
 
@@ -1,6 +1,8 @@
1
+ export declare const AUTHOR = "Jakub Mazanec <jakub@mazanec.dev>";
1
2
  export declare const BUILD_DIRECTORY = "build";
2
3
  export declare const STORYBOOK_BUILD_DIRECTORY = "storybook-static";
3
4
  export declare const SOURCE_DIRECTORY = "source";
5
+ export declare const APP_PORT = 5000;
4
6
  export declare const CARSON_PACKAGE_NAME = "@jakubmazanec/carson";
5
7
  export declare const TEMPLATE_PACKAGE_NAME = "@jakubmazanec/carson-templates";
6
8
  export declare const LINTER_CONFIG_PACKAGE_NAME = "@jakubmazanec/eslint-config";
@@ -9,6 +11,7 @@ export declare const MAIN_BRANCH_NAMES: Set<string>;
9
11
  export declare const DEVELOPMENT_BRANCH_NAMES: Set<string>;
10
12
  export declare const LINT_IGNORES: string[];
11
13
  export declare const FORMAT_IGNORE_PATTERNS: string[];
14
+ export declare const ECMASCRIPT_VERSION = 2024;
12
15
  export declare const TSCONFIG_COMPILER_OPTIONS: {
13
16
  allowSyntheticDefaultImports: boolean;
14
17
  composite: boolean;
@@ -2,9 +2,11 @@
2
2
  import fs from "node:fs";
3
3
  import { createRequire } from "node:module";
4
4
  import semver from "semver";
5
+ export const AUTHOR = "Jakub Mazanec <jakub@mazanec.dev>";
5
6
  export const BUILD_DIRECTORY = "build";
6
7
  export const STORYBOOK_BUILD_DIRECTORY = "storybook-static";
7
8
  export const SOURCE_DIRECTORY = "source";
9
+ export const APP_PORT = 5e3;
8
10
  export const CARSON_PACKAGE_NAME = "@jakubmazanec/carson";
9
11
  export const TEMPLATE_PACKAGE_NAME = "@jakubmazanec/carson-templates";
10
12
  export const LINTER_CONFIG_PACKAGE_NAME = "@jakubmazanec/eslint-config";
@@ -36,6 +38,7 @@ export const FORMAT_IGNORE_PATTERNS = [
36
38
  "LICENSE.md",
37
39
  `${BUILD_DIRECTORY}/`
38
40
  ].sort();
41
+ export const ECMASCRIPT_VERSION = 2024;
39
42
  export const TSCONFIG_COMPILER_OPTIONS = {
40
43
  allowSyntheticDefaultImports: true,
41
44
  composite: true,
@@ -43,17 +46,16 @@ export const TSCONFIG_COMPILER_OPTIONS = {
43
46
  forceConsistentCasingInFileNames: true,
44
47
  isolatedModules: true,
45
48
  jsx: "react-jsx",
46
- lib: ["dom", "dom.iterable", "es2022"],
49
+ lib: ["dom", "dom.iterable", `es${ECMASCRIPT_VERSION}`],
47
50
  module: "node16",
48
51
  moduleResolution: "node16",
49
- noEmitOnError: false,
50
- // TODO: change to `true` when this is fixed: https://github.com/kulshekhar/ts-jest/issues/4198
52
+ noEmitOnError: true,
51
53
  noImplicitOverride: true,
52
54
  noImplicitReturns: true,
53
55
  noUncheckedIndexedAccess: true,
54
56
  skipLibCheck: true,
55
57
  strict: true,
56
- target: "es2022"
58
+ target: `es${ECMASCRIPT_VERSION}`
57
59
  };
58
60
  export const PRETTIER_OPTIONS = {
59
61
  arrowParens: "always",
@@ -127,8 +129,8 @@ export const DEPENDENCY_VERSIONS = {
127
129
  "@testing-library/react": "^16.0.0",
128
130
  "@types/lodash": "^4.0.0",
129
131
  "@types/node": "^22.0.0",
130
- "@types/react": "^18.0.0",
131
- "@types/react-dom": "^18.0.0",
132
+ "@types/react": "^19.0.0",
133
+ "@types/react-dom": "^19.0.0",
132
134
  "@vitest/coverage-v8": "^2.0.0",
133
135
  autoprefixer: "^10.0.0",
134
136
  chromatic: "^11.0.0",
@@ -144,8 +146,8 @@ export const DEPENDENCY_VERSIONS = {
144
146
  prettier: "^3.0.0",
145
147
  "prettier-plugin-packagejson": "^2.0.0",
146
148
  "prettier-plugin-tailwindcss": "^0.6.0",
147
- react: "^18.0.0",
148
- "react-dom": "^18.0.0",
149
+ react: "^19.0.0",
150
+ "react-dom": "^19.0.0",
149
151
  "react-router": "^7.0.0",
150
152
  storybook: "^8.0.0",
151
153
  tailwindcss: "^3.0.0",
@@ -155,7 +157,7 @@ export const DEPENDENCY_VERSIONS = {
155
157
  typescript: "^5.0.0",
156
158
  vite: "^6.0.0",
157
159
  vitest: "^2.0.0",
158
- node: "^22.12.0",
160
+ node: "^22.13.0",
159
161
  npm: "^10.9.0"
160
162
  };
161
163
  export const BUILD_TO_ESM_COMMAND = `esbuild "${SOURCE_DIRECTORY}/**/*" --platform=node --target=node${semver.major(semver.minVersion(DEPENDENCY_VERSIONS.node))}.${semver.minor(semver.minVersion(DEPENDENCY_VERSIONS.node))} --outdir=${BUILD_DIRECTORY} --sourcemap`;
@@ -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 BUILD_DIRECTORY = 'build';\nexport const STORYBOOK_BUILD_DIRECTORY = 'storybook-static';\nexport const SOURCE_DIRECTORY = 'source';\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 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', 'es2022'],\n module: 'node16',\n moduleResolution: 'node16',\n noEmitOnError: false, // TODO: change to `true` when this is fixed: https://github.com/kulshekhar/ts-jest/issues/4198\n noImplicitOverride: true,\n noImplicitReturns: true,\n noUncheckedIndexedAccess: true,\n skipLibCheck: true,\n strict: true,\n target: 'es2022',\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': '^3.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-controls': '^8.0.0',\n '@storybook/addon-essentials': '^8.0.0',\n '@storybook/addon-interactions': '^8.0.0',\n '@storybook/addon-links': '^8.0.0',\n '@storybook/blocks': '^8.0.0',\n '@storybook/preview-api': '^8.0.0',\n '@storybook/react': '^8.0.0',\n '@storybook/react-vite': '^8.0.0',\n '@storybook/test': '^8.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/node': '^22.0.0',\n '@types/react': '^18.0.0',\n '@types/react-dom': '^18.0.0',\n '@vitest/coverage-v8': '^2.0.0',\n autoprefixer: '^10.0.0',\n chromatic: '^11.0.0',\n concurrently: '^9.0.0',\n 'cross-env': '^7.0.0',\n 'del-cli': '^6.0.0',\n esbuild: '^0.24.0',\n eslint: '^9.0.0',\n 'happy-dom': '^16.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: '^18.0.0',\n 'react-dom': '^18.0.0',\n 'react-router': '^7.0.0',\n storybook: '^8.0.0',\n tailwindcss: '^3.0.0',\n turbo: '^2.0.0',\n typedoc: '^0.27.0',\n 'typedoc-plugin-markdown': '^4.0.0',\n typescript: '^5.0.0',\n vite: '^6.0.0',\n vitest: '^2.0.0',\n\n node: '^22.12.0',\n npm: '^10.9.0',\n};\n\n// commands\nexport const BUILD_TO_ESM_COMMAND = `esbuild \"${SOURCE_DIRECTORY}/**/*\" --platform=node --target=node${semver.major(semver.minVersion(DEPENDENCY_VERSIONS.node!)!)}.${semver.minor(semver.minVersion(DEPENDENCY_VERSIONS.node!)!)} --outdir=${BUILD_DIRECTORY} --sourcemap`;\nexport const BUILD_TO_CJS_COMMAND = `esbuild \"${SOURCE_DIRECTORY}/**/*\" --platform=node --target=node${semver.major(semver.minVersion(DEPENDENCY_VERSIONS.node!)!)}.${semver.minor(semver.minVersion(DEPENDENCY_VERSIONS.node!)!)} --format=cjs --outdir=${BUILD_DIRECTORY} --sourcemap`;\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 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': '^3.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-controls': '^8.0.0',\n '@storybook/addon-essentials': '^8.0.0',\n '@storybook/addon-interactions': '^8.0.0',\n '@storybook/addon-links': '^8.0.0',\n '@storybook/blocks': '^8.0.0',\n '@storybook/preview-api': '^8.0.0',\n '@storybook/react': '^8.0.0',\n '@storybook/react-vite': '^8.0.0',\n '@storybook/test': '^8.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/node': '^22.0.0',\n '@types/react': '^19.0.0',\n '@types/react-dom': '^19.0.0',\n '@vitest/coverage-v8': '^2.0.0',\n autoprefixer: '^10.0.0',\n chromatic: '^11.0.0',\n concurrently: '^9.0.0',\n 'cross-env': '^7.0.0',\n 'del-cli': '^6.0.0',\n esbuild: '^0.24.0',\n eslint: '^9.0.0',\n 'happy-dom': '^16.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 storybook: '^8.0.0',\n tailwindcss: '^3.0.0',\n turbo: '^2.0.0',\n typedoc: '^0.27.0',\n 'typedoc-plugin-markdown': '^4.0.0',\n typescript: '^5.0.0',\n vite: '^6.0.0',\n vitest: '^2.0.0',\n\n node: '^22.13.0',\n npm: '^10.9.0',\n};\n\n// commands\nexport const BUILD_TO_ESM_COMMAND = `esbuild \"${SOURCE_DIRECTORY}/**/*\" --platform=node --target=node${semver.major(semver.minVersion(DEPENDENCY_VERSIONS.node!)!)}.${semver.minor(semver.minVersion(DEPENDENCY_VERSIONS.node!)!)} --outdir=${BUILD_DIRECTORY} --sourcemap`;\nexport const BUILD_TO_CJS_COMMAND = `esbuild \"${SOURCE_DIRECTORY}/**/*\" --platform=node --target=node${semver.major(semver.minVersion(DEPENDENCY_VERSIONS.node!)!)}.${semver.minor(semver.minVersion(DEPENDENCY_VERSIONS.node!)!)} --format=cjs --outdir=${BUILD_DIRECTORY} --sourcemap`;\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
  }
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ import { APP_PORT } from "./constants.js";
2
3
  export function getAppUrl(project, deploymentEnvironment) {
3
4
  let appName = project.config.deployment?.appName;
4
5
  let appUrl = project.config.deployment?.appUrl;
@@ -6,7 +7,7 @@ export function getAppUrl(project, deploymentEnvironment) {
6
7
  return appUrl;
7
8
  }
8
9
  if (!appName) {
9
- return `http://localhost:5000`;
10
+ return `http://localhost:${APP_PORT}`;
10
11
  }
11
12
  return `https://${deploymentEnvironment ? `${appName}-${deploymentEnvironment}` : appName}.fly.dev`;
12
13
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../source/getAppUrl.ts"],
4
- "sourcesContent": ["import {type Project} from '@jakubmazanec/carson';\n\nexport function getAppUrl(project: Project, deploymentEnvironment?: string) {\n let appName = (project.config as {deployment?: {appName?: string}}).deployment?.appName;\n let appUrl = (project.config as {deployment?: {appUrl?: string}}).deployment?.appUrl;\n\n if ((appUrl && deploymentEnvironment === undefined) || (!appName && appUrl)) {\n return appUrl;\n }\n\n if (!appName) {\n return `http://localhost:5000`;\n }\n\n return `https://${deploymentEnvironment ? `${appName}-${deploymentEnvironment}` : appName}.fly.dev`;\n}\n"],
5
- "mappings": ";AAEO,gBAAS,UAAU,SAAkB,uBAAgC;AAC1E,MAAI,UAAW,QAAQ,OAA6C,YAAY;AAChF,MAAI,SAAU,QAAQ,OAA4C,YAAY;AAE9E,MAAK,UAAU,0BAA0B,UAAe,CAAC,WAAW,QAAS;AAC3E,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,SAAS;AACZ,WAAO;AAAA,EACT;AAEA,SAAO,WAAW,wBAAwB,GAAG,OAAO,IAAI,qBAAqB,KAAK,OAAO;AAC3F;",
4
+ "sourcesContent": ["import {type Project} from '@jakubmazanec/carson';\n\nimport {APP_PORT} from './constants.js';\n\nexport function getAppUrl(project: Project, deploymentEnvironment?: string) {\n let appName = (project.config as {deployment?: {appName?: string}}).deployment?.appName;\n let appUrl = (project.config as {deployment?: {appUrl?: string}}).deployment?.appUrl;\n\n if ((appUrl && deploymentEnvironment === undefined) || (!appName && appUrl)) {\n return appUrl;\n }\n\n if (!appName) {\n return `http://localhost:${APP_PORT}`;\n }\n\n return `https://${deploymentEnvironment ? `${appName}-${deploymentEnvironment}` : appName}.fly.dev`;\n}\n"],
5
+ "mappings": ";AAEA,SAAQ,gBAAe;AAEhB,gBAAS,UAAU,SAAkB,uBAAgC;AAC1E,MAAI,UAAW,QAAQ,OAA6C,YAAY;AAChF,MAAI,SAAU,QAAQ,OAA4C,YAAY;AAE9E,MAAK,UAAU,0BAA0B,UAAe,CAAC,WAAW,QAAS;AAC3E,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,SAAS;AACZ,WAAO,oBAAoB,QAAQ;AAAA,EACrC;AAEA,SAAO,WAAW,wBAAwB,GAAG,OAAO,IAAI,qBAAqB,KAAK,OAAO;AAC3F;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jakubmazanec/carson-templates",
3
- "version": "4.0.0-unstable.d445549a",
3
+ "version": "4.0.0",
4
4
  "description": "Collection of Carson templates.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -21,7 +21,7 @@
21
21
  "templates"
22
22
  ],
23
23
  "scripts": {
24
- "build": "del-cli build tsconfig.tsbuildinfo && esbuild \"source/**/*\" --platform=node --target=node22.12 --outdir=build --sourcemap && tsc",
24
+ "build": "del-cli build tsconfig.tsbuildinfo && esbuild \"source/**/*\" --platform=node --target=node22.13 --outdir=build --sourcemap && tsc",
25
25
  "clean": "del-cli coverage build *.tsbuildinfo",
26
26
  "document": "del-cli docs && typedoc --options typedoc.config.cjs",
27
27
  "format": "prettier . --write --ignore-unknown",
@@ -34,33 +34,33 @@
34
34
  "semver": "^7.6.3"
35
35
  },
36
36
  "devDependencies": {
37
- "@jakubmazanec/carson": "1.4.0-unstable.d445549a",
37
+ "@jakubmazanec/carson": "^2.0.0",
38
38
  "@jakubmazanec/eslint-config": "^4.1.0",
39
39
  "@jakubmazanec/fs-utils": "^0.2.0",
40
40
  "@types/fs-extra": "^11.0.4",
41
- "@types/lodash": "^4.17.13",
42
- "@types/node": "^22.10.2",
41
+ "@types/lodash": "^4.17.14",
42
+ "@types/node": "^22.10.5",
43
43
  "@types/zen-observable": "^0.8.7",
44
44
  "@vitest/coverage-v8": "^2.1.8",
45
45
  "del-cli": "^6.0.0",
46
46
  "esbuild": "^0.24.2",
47
- "eslint": "^9.17.0",
47
+ "eslint": "^9.18.0",
48
48
  "execa": "^9.5.2",
49
- "fast-glob": "^3.3.2",
49
+ "fast-glob": "^3.3.3",
50
50
  "fs-extra": "^11.2.0",
51
51
  "prettier": "^3.4.2",
52
52
  "prettier-plugin-packagejson": "^2.5.6",
53
53
  "typedoc": "^0.27.6",
54
- "typedoc-plugin-markdown": "^4.4.0",
55
- "typescript": "^5.7.2",
54
+ "typedoc-plugin-markdown": "^4.4.1",
55
+ "typescript": "^5.7.3",
56
56
  "vitest": "^2.1.8",
57
57
  "zen-observable": "^0.10.0"
58
58
  },
59
59
  "peerDependencies": {
60
- "@jakubmazanec/carson": "1.4.0-unstable.d445549a"
60
+ "@jakubmazanec/carson": "^2.0.0"
61
61
  },
62
62
  "packageManager": "npm@10.9.0",
63
63
  "engines": {
64
- "node": "^22.12.0"
64
+ "node": "^22.13.0"
65
65
  }
66
66
  }
@@ -2,10 +2,14 @@ import fs from 'node:fs';
2
2
  import {createRequire} from 'node:module';
3
3
  import semver from 'semver';
4
4
 
5
+ export const AUTHOR = 'Jakub Mazanec <jakub@mazanec.dev>';
6
+
5
7
  export const BUILD_DIRECTORY = 'build';
6
8
  export const STORYBOOK_BUILD_DIRECTORY = 'storybook-static';
7
9
  export const SOURCE_DIRECTORY = 'source';
8
10
 
11
+ export const APP_PORT = 5000;
12
+
9
13
  export const CARSON_PACKAGE_NAME = '@jakubmazanec/carson';
10
14
  export const TEMPLATE_PACKAGE_NAME = '@jakubmazanec/carson-templates';
11
15
  export const LINTER_CONFIG_PACKAGE_NAME = '@jakubmazanec/eslint-config';
@@ -41,6 +45,8 @@ export const FORMAT_IGNORE_PATTERNS = [
41
45
  `${BUILD_DIRECTORY}/`,
42
46
  ].sort();
43
47
 
48
+ export const ECMASCRIPT_VERSION = 2024;
49
+
44
50
  export const TSCONFIG_COMPILER_OPTIONS = {
45
51
  allowSyntheticDefaultImports: true,
46
52
  composite: true,
@@ -48,16 +54,16 @@ export const TSCONFIG_COMPILER_OPTIONS = {
48
54
  forceConsistentCasingInFileNames: true,
49
55
  isolatedModules: true,
50
56
  jsx: 'react-jsx',
51
- lib: ['dom', 'dom.iterable', 'es2022'],
57
+ lib: ['dom', 'dom.iterable', `es${ECMASCRIPT_VERSION}`],
52
58
  module: 'node16',
53
59
  moduleResolution: 'node16',
54
- noEmitOnError: false, // TODO: change to `true` when this is fixed: https://github.com/kulshekhar/ts-jest/issues/4198
60
+ noEmitOnError: true,
55
61
  noImplicitOverride: true,
56
62
  noImplicitReturns: true,
57
63
  noUncheckedIndexedAccess: true,
58
64
  skipLibCheck: true,
59
65
  strict: true,
60
- target: 'es2022',
66
+ target: `es${ECMASCRIPT_VERSION}`,
61
67
  };
62
68
 
63
69
  export const PRETTIER_OPTIONS = {
@@ -146,8 +152,8 @@ export const DEPENDENCY_VERSIONS: Record<string, string> = {
146
152
  '@testing-library/react': '^16.0.0',
147
153
  '@types/lodash': '^4.0.0',
148
154
  '@types/node': '^22.0.0',
149
- '@types/react': '^18.0.0',
150
- '@types/react-dom': '^18.0.0',
155
+ '@types/react': '^19.0.0',
156
+ '@types/react-dom': '^19.0.0',
151
157
  '@vitest/coverage-v8': '^2.0.0',
152
158
  autoprefixer: '^10.0.0',
153
159
  chromatic: '^11.0.0',
@@ -163,8 +169,8 @@ export const DEPENDENCY_VERSIONS: Record<string, string> = {
163
169
  prettier: '^3.0.0',
164
170
  'prettier-plugin-packagejson': '^2.0.0',
165
171
  'prettier-plugin-tailwindcss': '^0.6.0',
166
- react: '^18.0.0',
167
- 'react-dom': '^18.0.0',
172
+ react: '^19.0.0',
173
+ 'react-dom': '^19.0.0',
168
174
  'react-router': '^7.0.0',
169
175
  storybook: '^8.0.0',
170
176
  tailwindcss: '^3.0.0',
@@ -175,7 +181,7 @@ export const DEPENDENCY_VERSIONS: Record<string, string> = {
175
181
  vite: '^6.0.0',
176
182
  vitest: '^2.0.0',
177
183
 
178
- node: '^22.12.0',
184
+ node: '^22.13.0',
179
185
  npm: '^10.9.0',
180
186
  };
181
187
 
@@ -1,5 +1,7 @@
1
1
  import {type Project} from '@jakubmazanec/carson';
2
2
 
3
+ import {APP_PORT} from './constants.js';
4
+
3
5
  export function getAppUrl(project: Project, deploymentEnvironment?: string) {
4
6
  let appName = (project.config as {deployment?: {appName?: string}}).deployment?.appName;
5
7
  let appUrl = (project.config as {deployment?: {appUrl?: string}}).deployment?.appUrl;
@@ -9,7 +11,7 @@ export function getAppUrl(project: Project, deploymentEnvironment?: string) {
9
11
  }
10
12
 
11
13
  if (!appName) {
12
- return `http://localhost:5000`;
14
+ return `http://localhost:${APP_PORT}`;
13
15
  }
14
16
 
15
17
  return `https://${deploymentEnvironment ? `${appName}-${deploymentEnvironment}` : appName}.fly.dev`;
@@ -0,0 +1,28 @@
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
@@ -0,0 +1,13 @@
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') %>
@@ -0,0 +1,17 @@
1
+ ---
2
+ to: 'CONTRIBUTING.md'
3
+ strategy: overwrite
4
+ ---
5
+ # Contributing
6
+
7
+ Thank you for your interest in contributing to this project! Your help is greatly appreciated.
8
+
9
+ ## Reporting Bugs
10
+
11
+ If you encounter a bug, please let me know by opening an issue with a detailed description. You can
12
+ also create a repository with a minimal reproducible example to help me fix it more quickly.
13
+
14
+ ## Pull Requests
15
+
16
+ At this time, I am not accepting pull requests from external contributors. However, if you have a
17
+ feature request, please feel free to open an issue to discuss it.
@@ -0,0 +1,12 @@
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>
@@ -0,0 +1,9 @@
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
@@ -0,0 +1,4 @@
1
+ ---
2
+ to: <%- `${SOURCE_DIRECTORY}/main.ts` %>
3
+ strategy: check
4
+ ---
@@ -0,0 +1,5 @@
1
+ ---
2
+ to: <%- `${SOURCE_DIRECTORY}/main.ts` %>
3
+ strategy: create
4
+ ---
5
+ export {}
@@ -0,0 +1,19 @@
1
+ ---
2
+ to: 'prettier.config.cjs'
3
+ strategy: overwrite
4
+ ---
5
+ <%
6
+ let prettierConfig = {
7
+ ...PRETTIER_OPTIONS,
8
+ plugins: ['prettier-plugin-packagejson'],
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(prettierConfig, null, 2) %>;
@@ -1,28 +1,3 @@
1
1
  ---
2
- to: '.editorconfig'
3
- strategy: overwrite
2
+ extends: '../../.editorconfig.ejs'
4
3
  ---
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,3 @@
1
1
  ---
2
- extends: '../../workspace/.prettierignore.ejs'
2
+ extends: '../../.prettierignore.ejs'
3
3
  ---
@@ -1,3 +1,3 @@
1
1
  ---
2
- extends: '../library/CONTRIBUTING.md.ejs'
2
+ extends: '../../CONTRIBUTING.md.ejs'
3
3
  ---
@@ -1,12 +1,3 @@
1
1
  ---
2
- to: 'README.md'
3
- strategy: [insert, header]
2
+ extends: '../../README.md.insert.header.ejs'
4
3
  ---
5
-
6
- <div align="center">
7
-
8
- # <%- project.name -%>
9
-
10
- <%- project.packageJson.description -%>
11
-
12
- </div>
@@ -0,0 +1,8 @@
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
@@ -10,6 +10,6 @@ strategy: create
10
10
  "url": "<%- workspace.repository?.url ?? '' %>"
11
11
  },
12
12
  "license": "MIT",
13
- "author": "Jakub Mazanec <jakub@mazanec.dev>",
13
+ "author": "<%- AUTHOR %>",
14
14
  "sideEffects": false
15
15
  }
@@ -1,3 +1,3 @@
1
1
  ---
2
- extends: '../../workspace/prettier.config.cjs.ejs'
2
+ extends: '../../prettier.config.cjs.ejs'
3
3
  ---
@@ -1,4 +1,3 @@
1
1
  ---
2
- to: <%- `${SOURCE_DIRECTORY}/main.ts` %>
3
- strategy: check
2
+ extends: '../../../main.ts.check.ejs'
4
3
  ---
@@ -1,6 +1,3 @@
1
1
  ---
2
- to: <%- `${SOURCE_DIRECTORY}/main.ts` %>
3
- strategy: create
2
+ extends: '../../../main.ts.create.ejs'
4
3
  ---
5
- export {}
6
-
@@ -1,24 +1,3 @@
1
1
  ---
2
- to: 'tests/tsconfig.json'
3
- strategy: overwrite
2
+ extends: '../../../tsconfig.test.json.ejs'
4
3
  ---
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,28 +1,3 @@
1
1
  ---
2
- to: 'tsconfig.json'
3
- strategy: overwrite
2
+ extends: '../../tsconfig.json.ejs'
4
3
  ---
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,3 @@
1
1
  ---
2
- extends: '../library/typedoc.config.cjs.ejs'
2
+ extends: '../../typedoc.config.cjs.ejs'
3
3
  ---