@jakubmazanec/carson-templates 9.0.0-unstable.f507ff42 → 9.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 (36) hide show
  1. package/README.md +1 -1
  2. package/build/constants.d.ts +7 -3
  3. package/build/constants.js +22 -19
  4. package/build/constants.js.map +2 -2
  5. package/build/getAppUrl.js +0 -1
  6. package/build/getAppUrl.js.map +1 -1
  7. package/build/getBuildToCjsCommand.js +0 -1
  8. package/build/getBuildToCjsCommand.js.map +1 -1
  9. package/build/getBuildToEsmCommand.js +0 -1
  10. package/build/getBuildToEsmCommand.js.map +1 -1
  11. package/build/getDependencies.js +0 -1
  12. package/build/getDependencies.js.map +1 -1
  13. package/build/getDevelopmentBranch.js +0 -1
  14. package/build/getDevelopmentBranch.js.map +1 -1
  15. package/build/getMainBranch.js +0 -1
  16. package/build/getMainBranch.js.map +1 -1
  17. package/build/getProjectsWithBrowserTests.js +0 -1
  18. package/build/getProjectsWithBrowserTests.js.map +1 -1
  19. package/build/getReferences.js +0 -1
  20. package/build/getReferences.js.map +1 -1
  21. package/build/getWorkspaceName.js +0 -1
  22. package/build/getWorkspaceName.js.map +1 -1
  23. package/build/hasProjectBrowserTests.js +0 -1
  24. package/build/hasProjectBrowserTests.js.map +1 -1
  25. package/build/main.js +0 -1
  26. package/build/main.js.map +1 -1
  27. package/package.json +8 -8
  28. package/source/constants.ts +21 -17
  29. package/templates/projects/library/README.md.create.ejs +1 -4
  30. package/templates/workspace/.github/tools/create-dependencies-changeset.ts.ejs +28 -5
  31. package/templates/workspace/.github/workflows/check-pull-request.yaml.ejs +4 -4
  32. package/templates/workspace/.github/workflows/merge-to-main-branch.yaml.ejs +4 -4
  33. package/templates/workspace/.github/workflows/release-pull-request.yaml.ejs +4 -4
  34. package/templates/workspace/.github/workflows/release.yaml.ejs +8 -8
  35. package/templates/workspace/.github/workflows/update-pull-request.yaml.ejs +4 -4
  36. package/templates/workspace/renovate.json.ejs +19 -0
package/README.md CHANGED
@@ -18,7 +18,7 @@ npm install @jakubmazanec/carson-templates
18
18
  #### Prerequisites
19
19
 
20
20
  - Node.js 24 or later
21
- - TypeScript 5 or later
21
+ - TypeScript 6 or later
22
22
 
23
23
  <!-- prerequisites -->
24
24
 
@@ -1,4 +1,9 @@
1
+ export declare const AUTHOR_NAME = "Jakub Mazanec";
2
+ export declare const AUTHOR_EMAIL = "jakub@mazanec.dev";
1
3
  export declare const AUTHOR = "Jakub Mazanec <jakub@mazanec.dev>";
4
+ export declare const BOT_NAME = "Bot";
5
+ export declare const BOT_EMAIL = "bot@mazanec.dev";
6
+ export declare const BOT = "Bot <bot@mazanec.dev>";
2
7
  export declare const BUILD_DIRECTORY = "build";
3
8
  export declare const STORYBOOK_BUILD_DIRECTORY = "storybook-static";
4
9
  export declare const SOURCE_DIRECTORY = "source";
@@ -11,9 +16,8 @@ export declare const MAIN_BRANCH_NAMES: Set<string>;
11
16
  export declare const DEVELOPMENT_BRANCH_NAMES: Set<string>;
12
17
  export declare const LINT_IGNORES: string[];
13
18
  export declare const FORMAT_IGNORE_PATTERNS: string[];
14
- export declare const ECMASCRIPT_VERSION = 2024;
19
+ export declare const ECMASCRIPT_VERSION = 2025;
15
20
  export declare const TSCONFIG_COMPILER_OPTIONS: {
16
- allowSyntheticDefaultImports: boolean;
17
21
  composite: boolean;
18
22
  erasableSyntaxOnly: boolean;
19
23
  exactOptionalPropertyTypes: boolean;
@@ -28,8 +32,8 @@ export declare const TSCONFIG_COMPILER_OPTIONS: {
28
32
  noImplicitReturns: boolean;
29
33
  noUncheckedIndexedAccess: boolean;
30
34
  skipLibCheck: boolean;
31
- strict: boolean;
32
35
  target: string;
36
+ types: string[];
33
37
  };
34
38
  export declare const PRETTIER_OPTIONS: {
35
39
  arrowParens: string;
@@ -1,8 +1,12 @@
1
- "use strict";
2
1
  import fs from "node:fs";
3
2
  import { createRequire } from "node:module";
4
3
  import semver from "semver";
5
- export const AUTHOR = "Jakub Mazanec <jakub@mazanec.dev>";
4
+ export const AUTHOR_NAME = "Jakub Mazanec";
5
+ export const AUTHOR_EMAIL = "jakub@mazanec.dev";
6
+ export const AUTHOR = `${AUTHOR_NAME} <${AUTHOR_EMAIL}>`;
7
+ export const BOT_NAME = "Bot";
8
+ export const BOT_EMAIL = "bot@mazanec.dev";
9
+ export const BOT = `${BOT_NAME} <${BOT_EMAIL}>`;
6
10
  export const BUILD_DIRECTORY = "build";
7
11
  export const STORYBOOK_BUILD_DIRECTORY = "storybook-static";
8
12
  export const SOURCE_DIRECTORY = "source";
@@ -38,16 +42,15 @@ export const FORMAT_IGNORE_PATTERNS = [
38
42
  "LICENSE.md",
39
43
  `${BUILD_DIRECTORY}/`
40
44
  ].sort();
41
- export const ECMASCRIPT_VERSION = 2024;
45
+ export const ECMASCRIPT_VERSION = 2025;
42
46
  export const TSCONFIG_COMPILER_OPTIONS = {
43
- allowSyntheticDefaultImports: true,
44
47
  composite: true,
45
48
  erasableSyntaxOnly: true,
46
49
  exactOptionalPropertyTypes: true,
47
50
  forceConsistentCasingInFileNames: true,
48
51
  isolatedModules: true,
49
52
  jsx: "react-jsx",
50
- lib: ["dom", "dom.iterable", `es${ECMASCRIPT_VERSION}`],
53
+ lib: ["dom", `es${ECMASCRIPT_VERSION}`],
51
54
  module: "node16",
52
55
  moduleResolution: "node16",
53
56
  noEmitOnError: true,
@@ -55,8 +58,8 @@ export const TSCONFIG_COMPILER_OPTIONS = {
55
58
  noImplicitReturns: true,
56
59
  noUncheckedIndexedAccess: true,
57
60
  skipLibCheck: true,
58
- strict: true,
59
- target: `es${ECMASCRIPT_VERSION}`
61
+ target: `es${ECMASCRIPT_VERSION}`,
62
+ types: ["node"]
60
63
  };
61
64
  export const PRETTIER_OPTIONS = {
62
65
  arrowParens: "always",
@@ -110,13 +113,13 @@ export const DEPENDENCY_VERSIONS = {
110
113
  [CARSON_PACKAGE_NAME]: isCarsonPackageVersionPrerelease ? carsonPackageVersion : `^${carsonPackageVersion}`,
111
114
  [TEMPLATE_PACKAGE_NAME]: isTemplatesPackageVersionPrerelease ? templatesPackageVersion : `^${templatesPackageVersion}`,
112
115
  [CHANGELOG_PACKAGE_NAME]: "^2.0.0",
113
- [LINTER_CONFIG_PACKAGE_NAME]: "^4.0.0",
116
+ [LINTER_CONFIG_PACKAGE_NAME]: "^5.0.0",
114
117
  "@changesets/cli": "^2.0.0",
115
118
  "@chromatic-com/storybook": "^5.0.0",
116
- "@react-router/dev": "^7.0.0",
117
- "@react-router/fs-routes": "^7.0.0",
118
- "@react-router/node": "^7.0.0",
119
- "@react-router/serve": "^7.0.0",
119
+ "@react-router/dev": "^8.0.0",
120
+ "@react-router/fs-routes": "^8.0.0",
121
+ "@react-router/node": "^8.0.0",
122
+ "@react-router/serve": "^8.0.0",
120
123
  "@storybook/addon-links": "^10.0.0",
121
124
  "@storybook/addon-docs": "^10.0.0",
122
125
  "@storybook/react-vite": "^10.0.0",
@@ -127,22 +130,22 @@ export const DEPENDENCY_VERSIONS = {
127
130
  "@vitest/browser-playwright": "^4.0.0",
128
131
  "@vitest/coverage-v8": "^4.0.0",
129
132
  chromatic: "^18.0.0",
130
- concurrently: "^9.0.0",
133
+ concurrently: "^10.0.0",
131
134
  "cross-env": "^10.0.0",
132
135
  "del-cli": "^7.0.0",
133
- esbuild: "^0.24.0",
136
+ esbuild: "^0.28.0",
134
137
  eslint: "^9.0.0",
135
- execa: "^9.0.0",
138
+ execa: "^10.0.0",
136
139
  isbot: "^5.0.0",
137
140
  lodash: "^4.0.0",
138
141
  "patch-package": "^8.0.0",
139
142
  playwright: "^1.60.0",
140
143
  prettier: "^3.0.0",
141
144
  "prettier-plugin-packagejson": "^2.0.0",
142
- "prettier-plugin-tailwindcss": "^0.6.0",
145
+ "prettier-plugin-tailwindcss": "^0.8.0",
143
146
  react: "^19.0.0",
144
147
  "react-dom": "^19.0.0",
145
- "react-router": "^7.0.0",
148
+ "react-router": "^8.0.0",
146
149
  semver: "^7.0.0",
147
150
  storybook: "^10.0.0",
148
151
  tailwindcss: "^4.0.0",
@@ -151,8 +154,8 @@ export const DEPENDENCY_VERSIONS = {
151
154
  turbo: "^2.0.0",
152
155
  typedoc: "^0.28.0",
153
156
  "typedoc-plugin-markdown": "^4.0.0",
154
- typescript: "^5.0.0",
155
- vite: "^7.0.0",
157
+ typescript: "^6.0.0",
158
+ vite: "^8.0.0",
156
159
  vitest: "^4.0.0",
157
160
  "vitest-browser-react": "^2.0.0",
158
161
  node: "^24.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 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': '^5.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 '@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/browser-playwright': '^4.0.0',\n '@vitest/coverage-v8': '^4.0.0',\n chromatic: '^18.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 isbot: '^5.0.0',\n lodash: '^4.0.0',\n 'patch-package': '^8.0.0',\n playwright: '^1.60.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 'vitest-browser-react': '^2.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// tests\nexport const TEST_GLOB = 'tests/**/*.test.?(c|m)[jt]s?(x)';\nexport const BROWSER_TEST_GLOB = 'tests/**/*.browser.test.?(c|m)[jt]s?(x)';\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_NAME = 'Jakub Mazanec';\nexport const AUTHOR_EMAIL = 'jakub@mazanec.dev';\nexport const AUTHOR = `${AUTHOR_NAME} <${AUTHOR_EMAIL}>`;\nexport const BOT_NAME = 'Bot';\nexport const BOT_EMAIL = 'bot@mazanec.dev';\nexport const BOT = `${BOT_NAME} <${BOT_EMAIL}>`;\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 = 2025;\n\nexport const TSCONFIG_COMPILER_OPTIONS = {\n composite: true,\n erasableSyntaxOnly: true,\n exactOptionalPropertyTypes: true,\n forceConsistentCasingInFileNames: true,\n isolatedModules: true,\n jsx: 'react-jsx',\n lib: ['dom', `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 target: `es${ECMASCRIPT_VERSION}`,\n types: ['node'],\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]: '^5.0.0',\n\n '@changesets/cli': '^2.0.0',\n '@chromatic-com/storybook': '^5.0.0',\n '@react-router/dev': '^8.0.0',\n '@react-router/fs-routes': '^8.0.0',\n '@react-router/node': '^8.0.0',\n '@react-router/serve': '^8.0.0',\n '@storybook/addon-links': '^10.0.0',\n '@storybook/addon-docs': '^10.0.0',\n '@storybook/react-vite': '^10.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/browser-playwright': '^4.0.0',\n '@vitest/coverage-v8': '^4.0.0',\n chromatic: '^18.0.0',\n concurrently: '^10.0.0',\n 'cross-env': '^10.0.0',\n 'del-cli': '^7.0.0',\n esbuild: '^0.28.0',\n eslint: '^9.0.0',\n execa: '^10.0.0',\n isbot: '^5.0.0',\n lodash: '^4.0.0',\n 'patch-package': '^8.0.0',\n playwright: '^1.60.0',\n prettier: '^3.0.0',\n 'prettier-plugin-packagejson': '^2.0.0',\n 'prettier-plugin-tailwindcss': '^0.8.0',\n react: '^19.0.0',\n 'react-dom': '^19.0.0',\n 'react-router': '^8.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: '^6.0.0',\n vite: '^8.0.0',\n vitest: '^4.0.0',\n 'vitest-browser-react': '^2.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// tests\nexport const TEST_GLOB = 'tests/**/*.test.?(c|m)[jt]s?(x)';\nexport const BROWSER_TEST_GLOB = 'tests/**/*.browser.test.?(c|m)[jt]s?(x)';\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
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import { APP_PORT } from "./constants.js";
3
2
  export function getAppUrl(project, deploymentEnvironment) {
4
3
  let appName = project.config.deployment?.appName;
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../source/getAppUrl.ts"],
4
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;",
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
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import semver from "semver";
3
2
  import { BUILD_DIRECTORY, DEPENDENCY_VERSIONS, SOURCE_DIRECTORY } from "./constants.js";
4
3
  export function getBuildToCjsCommand(workspace) {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../source/getBuildToCjsCommand.ts"],
4
4
  "sourcesContent": ["import {type Workspace} from '@jakubmazanec/carson';\nimport semver from 'semver';\n\nimport {BUILD_DIRECTORY, DEPENDENCY_VERSIONS, SOURCE_DIRECTORY} from './constants.js';\n\nexport function getBuildToCjsCommand(workspace: Workspace | Workspace<false>) {\n let nodeVersion = workspace.allDependencies.getVersions().node?.[0] ?? DEPENDENCY_VERSIONS.node!;\n\n return `esbuild \"${SOURCE_DIRECTORY}/**/*\" --platform=node --target=node${semver.major(semver.minVersion(nodeVersion)!)}.${semver.minor(semver.minVersion(nodeVersion)!)} --format=cjs --outdir=${BUILD_DIRECTORY} --sourcemap`;\n}\n"],
5
- "mappings": ";AACA,OAAO,YAAY;AAEnB,SAAQ,iBAAiB,qBAAqB,wBAAuB;AAE9D,gBAAS,qBAAqB,WAAyC;AAC5E,MAAI,cAAc,UAAU,gBAAgB,YAAY,EAAE,OAAO,CAAC,KAAK,oBAAoB;AAE3F,SAAO,YAAY,gBAAgB,uCAAuC,OAAO,MAAM,OAAO,WAAW,WAAW,CAAE,CAAC,IAAI,OAAO,MAAM,OAAO,WAAW,WAAW,CAAE,CAAC,0BAA0B,eAAe;AACnN;",
5
+ "mappings": "AACA,OAAO,YAAY;AAEnB,SAAQ,iBAAiB,qBAAqB,wBAAuB;AAE9D,gBAAS,qBAAqB,WAAyC;AAC5E,MAAI,cAAc,UAAU,gBAAgB,YAAY,EAAE,OAAO,CAAC,KAAK,oBAAoB;AAE3F,SAAO,YAAY,gBAAgB,uCAAuC,OAAO,MAAM,OAAO,WAAW,WAAW,CAAE,CAAC,IAAI,OAAO,MAAM,OAAO,WAAW,WAAW,CAAE,CAAC,0BAA0B,eAAe;AACnN;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import semver from "semver";
3
2
  import { BUILD_DIRECTORY, DEPENDENCY_VERSIONS, SOURCE_DIRECTORY } from "./constants.js";
4
3
  export function getBuildToEsmCommand(workspace) {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../source/getBuildToEsmCommand.ts"],
4
4
  "sourcesContent": ["import {type Workspace} from '@jakubmazanec/carson';\nimport semver from 'semver';\n\nimport {BUILD_DIRECTORY, DEPENDENCY_VERSIONS, SOURCE_DIRECTORY} from './constants.js';\n\nexport function getBuildToEsmCommand(workspace: Workspace | Workspace<false>) {\n let nodeVersion = workspace.allDependencies.getVersions().node?.[0] ?? DEPENDENCY_VERSIONS.node!;\n\n return `esbuild \"${SOURCE_DIRECTORY}/**/*\" --platform=node --target=node${semver.major(semver.minVersion(nodeVersion)!)}.${semver.minor(semver.minVersion(nodeVersion)!)} --outdir=${BUILD_DIRECTORY} --sourcemap`;\n}\n"],
5
- "mappings": ";AACA,OAAO,YAAY;AAEnB,SAAQ,iBAAiB,qBAAqB,wBAAuB;AAE9D,gBAAS,qBAAqB,WAAyC;AAC5E,MAAI,cAAc,UAAU,gBAAgB,YAAY,EAAE,OAAO,CAAC,KAAK,oBAAoB;AAE3F,SAAO,YAAY,gBAAgB,uCAAuC,OAAO,MAAM,OAAO,WAAW,WAAW,CAAE,CAAC,IAAI,OAAO,MAAM,OAAO,WAAW,WAAW,CAAE,CAAC,aAAa,eAAe;AACtM;",
5
+ "mappings": "AACA,OAAO,YAAY;AAEnB,SAAQ,iBAAiB,qBAAqB,wBAAuB;AAE9D,gBAAS,qBAAqB,WAAyC;AAC5E,MAAI,cAAc,UAAU,gBAAgB,YAAY,EAAE,OAAO,CAAC,KAAK,oBAAoB;AAE3F,SAAO,YAAY,gBAAgB,uCAAuC,OAAO,MAAM,OAAO,WAAW,WAAW,CAAE,CAAC,IAAI,OAAO,MAAM,OAAO,WAAW,WAAW,CAAE,CAAC,aAAa,eAAe;AACtM;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import semver from "semver";
3
2
  import { DEPENDENCY_VERSIONS, TEMPLATE_PACKAGE_NAME } from "./constants.js";
4
3
  function getMajorVersion(version) {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../source/getDependencies.ts"],
4
4
  "sourcesContent": ["import {type Workspace} from '@jakubmazanec/carson';\nimport semver from 'semver';\n\nimport {DEPENDENCY_VERSIONS, TEMPLATE_PACKAGE_NAME} from './constants.js';\n\nfunction getMajorVersion(version: string) {\n return Number(version.split('.')[0]!.replace(/\\D/, ''));\n}\n\nexport function getDependencies(dependencies: string[], workspace: Workspace | Workspace<false>) {\n const result: Record<string, string> = {};\n\n for (const dependency of dependencies) {\n const version = DEPENDENCY_VERSIONS[dependency];\n\n if (version) {\n result[dependency] = version;\n }\n }\n\n const projectNames = new Set(workspace.projects.map((project) => project.name));\n\n for (const [dependencyName, dependencyVersion] of Object.entries(result)) {\n if (dependencyName === TEMPLATE_PACKAGE_NAME) {\n continue;\n }\n\n const installedDependency = workspace.allDependencies.find(\n (dependency) => dependencyName === dependency.name,\n );\n\n // if the dependency is already installed in the workspace, we might want to use that existing version\n if (installedDependency) {\n const version = [...installedDependency.exactVersions].sort().reverse()[0] as string;\n\n // if the dependency is actually a project in the workspace, we use existing version\n if (projectNames.has(dependencyName)) {\n if (semver.prerelease(version)?.length) {\n result[dependencyName] = version;\n } else {\n result[dependencyName] = `^${version}`;\n }\n }\n\n // we use existing version if its major version is equal or greater than major version recommended by the template\n if (getMajorVersion(version) >= getMajorVersion(dependencyVersion)) {\n if (semver.prerelease(version)?.length) {\n result[dependencyName] = version;\n } else {\n result[dependencyName] = `^${version}`;\n }\n }\n }\n }\n\n return result;\n}\n"],
5
- "mappings": ";AACA,OAAO,YAAY;AAEnB,SAAQ,qBAAqB,6BAA4B;AAEzD,SAAS,gBAAgB,SAAiB;AACxC,SAAO,OAAO,QAAQ,MAAM,GAAG,EAAE,CAAC,EAAG,QAAQ,MAAM,EAAE,CAAC;AACxD;AAEO,gBAAS,gBAAgB,cAAwB,WAAyC;AAC/F,QAAM,SAAiC,CAAC;AAExC,aAAW,cAAc,cAAc;AACrC,UAAM,UAAU,oBAAoB,UAAU;AAE9C,QAAI,SAAS;AACX,aAAO,UAAU,IAAI;AAAA,IACvB;AAAA,EACF;AAEA,QAAM,eAAe,IAAI,IAAI,UAAU,SAAS,IAAI,CAAC,YAAY,QAAQ,IAAI,CAAC;AAE9E,aAAW,CAAC,gBAAgB,iBAAiB,KAAK,OAAO,QAAQ,MAAM,GAAG;AACxE,QAAI,mBAAmB,uBAAuB;AAC5C;AAAA,IACF;AAEA,UAAM,sBAAsB,UAAU,gBAAgB;AAAA,MACpD,CAAC,eAAe,mBAAmB,WAAW;AAAA,IAChD;AAGA,QAAI,qBAAqB;AACvB,YAAM,UAAU,CAAC,GAAG,oBAAoB,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAGzE,UAAI,aAAa,IAAI,cAAc,GAAG;AACpC,YAAI,OAAO,WAAW,OAAO,GAAG,QAAQ;AACtC,iBAAO,cAAc,IAAI;AAAA,QAC3B,OAAO;AACL,iBAAO,cAAc,IAAI,IAAI,OAAO;AAAA,QACtC;AAAA,MACF;AAGA,UAAI,gBAAgB,OAAO,KAAK,gBAAgB,iBAAiB,GAAG;AAClE,YAAI,OAAO,WAAW,OAAO,GAAG,QAAQ;AACtC,iBAAO,cAAc,IAAI;AAAA,QAC3B,OAAO;AACL,iBAAO,cAAc,IAAI,IAAI,OAAO;AAAA,QACtC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;",
5
+ "mappings": "AACA,OAAO,YAAY;AAEnB,SAAQ,qBAAqB,6BAA4B;AAEzD,SAAS,gBAAgB,SAAiB;AACxC,SAAO,OAAO,QAAQ,MAAM,GAAG,EAAE,CAAC,EAAG,QAAQ,MAAM,EAAE,CAAC;AACxD;AAEO,gBAAS,gBAAgB,cAAwB,WAAyC;AAC/F,QAAM,SAAiC,CAAC;AAExC,aAAW,cAAc,cAAc;AACrC,UAAM,UAAU,oBAAoB,UAAU;AAE9C,QAAI,SAAS;AACX,aAAO,UAAU,IAAI;AAAA,IACvB;AAAA,EACF;AAEA,QAAM,eAAe,IAAI,IAAI,UAAU,SAAS,IAAI,CAAC,YAAY,QAAQ,IAAI,CAAC;AAE9E,aAAW,CAAC,gBAAgB,iBAAiB,KAAK,OAAO,QAAQ,MAAM,GAAG;AACxE,QAAI,mBAAmB,uBAAuB;AAC5C;AAAA,IACF;AAEA,UAAM,sBAAsB,UAAU,gBAAgB;AAAA,MACpD,CAAC,eAAe,mBAAmB,WAAW;AAAA,IAChD;AAGA,QAAI,qBAAqB;AACvB,YAAM,UAAU,CAAC,GAAG,oBAAoB,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAGzE,UAAI,aAAa,IAAI,cAAc,GAAG;AACpC,YAAI,OAAO,WAAW,OAAO,GAAG,QAAQ;AACtC,iBAAO,cAAc,IAAI;AAAA,QAC3B,OAAO;AACL,iBAAO,cAAc,IAAI,IAAI,OAAO;AAAA,QACtC;AAAA,MACF;AAGA,UAAI,gBAAgB,OAAO,KAAK,gBAAgB,iBAAiB,GAAG;AAClE,YAAI,OAAO,WAAW,OAAO,GAAG,QAAQ;AACtC,iBAAO,cAAc,IAAI;AAAA,QAC3B,OAAO;AACL,iBAAO,cAAc,IAAI,IAAI,OAAO;AAAA,QACtC;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import { DEVELOPMENT_BRANCH_NAMES } from "./constants.js";
3
2
  export function getDevelopmentBranch(workspace) {
4
3
  for (let branch of workspace.repository?.branches ?? []) {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../source/getDevelopmentBranch.ts"],
4
4
  "sourcesContent": ["import {type Workspace} from '@jakubmazanec/carson';\n\nimport {DEVELOPMENT_BRANCH_NAMES} from './constants.js';\n\nexport function getDevelopmentBranch(workspace: Workspace | Workspace<false>) {\n for (let branch of workspace.repository?.branches ?? []) {\n if (DEVELOPMENT_BRANCH_NAMES.has(branch)) {\n return branch;\n }\n }\n\n return undefined;\n}\n"],
5
- "mappings": ";AAEA,SAAQ,gCAA+B;AAEhC,gBAAS,qBAAqB,WAAyC;AAC5E,WAAS,UAAU,UAAU,YAAY,YAAY,CAAC,GAAG;AACvD,QAAI,yBAAyB,IAAI,MAAM,GAAG;AACxC,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;",
5
+ "mappings": "AAEA,SAAQ,gCAA+B;AAEhC,gBAAS,qBAAqB,WAAyC;AAC5E,WAAS,UAAU,UAAU,YAAY,YAAY,CAAC,GAAG;AACvD,QAAI,yBAAyB,IAAI,MAAM,GAAG;AACxC,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import { MAIN_BRANCH_NAMES } from "./constants.js";
3
2
  export function getMainBranch(workspace) {
4
3
  for (let branch of workspace.repository?.branches ?? []) {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../source/getMainBranch.ts"],
4
4
  "sourcesContent": ["import {type Workspace} from '@jakubmazanec/carson';\n\nimport {MAIN_BRANCH_NAMES} from './constants.js';\n\nexport function getMainBranch(workspace: Workspace | Workspace<false>) {\n for (let branch of workspace.repository?.branches ?? []) {\n if (MAIN_BRANCH_NAMES.has(branch)) {\n return branch;\n }\n }\n\n return undefined;\n}\n"],
5
- "mappings": ";AAEA,SAAQ,yBAAwB;AAEzB,gBAAS,cAAc,WAAyC;AACrE,WAAS,UAAU,UAAU,YAAY,YAAY,CAAC,GAAG;AACvD,QAAI,kBAAkB,IAAI,MAAM,GAAG;AACjC,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;",
5
+ "mappings": "AAEA,SAAQ,yBAAwB;AAEzB,gBAAS,cAAc,WAAyC;AACrE,WAAS,UAAU,UAAU,YAAY,YAAY,CAAC,GAAG;AACvD,QAAI,kBAAkB,IAAI,MAAM,GAAG;AACjC,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import glob from "fast-glob";
3
2
  import { BROWSER_TEST_GLOB } from "./constants.js";
4
3
  export function getProjectsWithBrowserTests(workspace) {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../source/getProjectsWithBrowserTests.ts"],
4
4
  "sourcesContent": ["import {type Workspace} from '@jakubmazanec/carson';\nimport glob from 'fast-glob';\n\nimport {BROWSER_TEST_GLOB} from './constants.js';\n\nexport function getProjectsWithBrowserTests(workspace: Workspace | Workspace<false>) {\n return workspace.projects.filter(\n (project) => glob.sync(BROWSER_TEST_GLOB, {cwd: project.path}).length > 0,\n );\n}\n"],
5
- "mappings": ";AACA,OAAO,UAAU;AAEjB,SAAQ,yBAAwB;AAEzB,gBAAS,4BAA4B,WAAyC;AACnF,SAAO,UAAU,SAAS;AAAA,IACxB,CAAC,YAAY,KAAK,KAAK,mBAAmB,EAAC,KAAK,QAAQ,KAAI,CAAC,EAAE,SAAS;AAAA,EAC1E;AACF;",
5
+ "mappings": "AACA,OAAO,UAAU;AAEjB,SAAQ,yBAAwB;AAEzB,gBAAS,4BAA4B,WAAyC;AACnF,SAAO,UAAU,SAAS;AAAA,IACxB,CAAC,YAAY,KAAK,KAAK,mBAAmB,EAAC,KAAK,QAAQ,KAAI,CAAC,EAAE,SAAS;AAAA,EAC1E;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  export function getReferences(workspace, project) {
3
2
  let references = [];
4
3
  for (let dependency of workspace.allDependencies) {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../source/getReferences.ts"],
4
4
  "sourcesContent": ["import {type Project, type Workspace} from '@jakubmazanec/carson';\n\nexport function getReferences(\n workspace: Workspace | Workspace<false>,\n project: Project | Project<false>,\n) {\n let references = [];\n\n for (let dependency of workspace.allDependencies) {\n for (let workspaceProject of workspace.projects) {\n if (dependency.name === workspaceProject.name) {\n for (let dependencyProject of dependency.projects) {\n if (dependencyProject.name === project.name) {\n references.push({\n path: `${project.relativePath\n .split('/')\n .map(() => '..')\n .join('/')}/${workspaceProject.relativePath}`,\n });\n }\n }\n }\n }\n }\n\n references.sort((a, b) => a.path.localeCompare(b.path));\n\n return references;\n}\n"],
5
- "mappings": ";AAEO,gBAAS,cACd,WACA,SACA;AACA,MAAI,aAAa,CAAC;AAElB,WAAS,cAAc,UAAU,iBAAiB;AAChD,aAAS,oBAAoB,UAAU,UAAU;AAC/C,UAAI,WAAW,SAAS,iBAAiB,MAAM;AAC7C,iBAAS,qBAAqB,WAAW,UAAU;AACjD,cAAI,kBAAkB,SAAS,QAAQ,MAAM;AAC3C,uBAAW,KAAK;AAAA,cACd,MAAM,GAAG,QAAQ,aACd,MAAM,GAAG,EACT,IAAI,MAAM,IAAI,EACd,KAAK,GAAG,CAAC,IAAI,iBAAiB,YAAY;AAAA,YAC/C,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,aAAW,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAEtD,SAAO;AACT;",
5
+ "mappings": "AAEO,gBAAS,cACd,WACA,SACA;AACA,MAAI,aAAa,CAAC;AAElB,WAAS,cAAc,UAAU,iBAAiB;AAChD,aAAS,oBAAoB,UAAU,UAAU;AAC/C,UAAI,WAAW,SAAS,iBAAiB,MAAM;AAC7C,iBAAS,qBAAqB,WAAW,UAAU;AACjD,cAAI,kBAAkB,SAAS,QAAQ,MAAM;AAC3C,uBAAW,KAAK;AAAA,cACd,MAAM,GAAG,QAAQ,aACd,MAAM,GAAG,EACT,IAAI,MAAM,IAAI,EACd,KAAK,GAAG,CAAC,IAAI,iBAAiB,YAAY;AAAA,YAC/C,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,aAAW,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAEtD,SAAO;AACT;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import path from "node:path";
3
2
  const GIT_REPO_REGEXP = /\/([^/]+?)(\.git)?$/;
4
3
  export function getWorkspaceName(workspace) {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../source/getWorkspaceName.ts"],
4
4
  "sourcesContent": ["import {type Workspace} from '@jakubmazanec/carson';\nimport path from 'node:path';\n\nconst GIT_REPO_REGEXP = /\\/([^/]+?)(\\.git)?$/;\n\nexport function getWorkspaceName(workspace: Workspace | Workspace<false>) {\n if (workspace.packageJson?.name) {\n return workspace.packageJson.name;\n }\n\n if (workspace.repository?.url) {\n let matches = workspace.repository.url.match(GIT_REPO_REGEXP);\n\n if (matches?.[1]) {\n return matches[1];\n }\n }\n\n return path.basename(workspace.path);\n}\n"],
5
- "mappings": ";AACA,OAAO,UAAU;AAEjB,MAAM,kBAAkB;AAEjB,gBAAS,iBAAiB,WAAyC;AACxE,MAAI,UAAU,aAAa,MAAM;AAC/B,WAAO,UAAU,YAAY;AAAA,EAC/B;AAEA,MAAI,UAAU,YAAY,KAAK;AAC7B,QAAI,UAAU,UAAU,WAAW,IAAI,MAAM,eAAe;AAE5D,QAAI,UAAU,CAAC,GAAG;AAChB,aAAO,QAAQ,CAAC;AAAA,IAClB;AAAA,EACF;AAEA,SAAO,KAAK,SAAS,UAAU,IAAI;AACrC;",
5
+ "mappings": "AACA,OAAO,UAAU;AAEjB,MAAM,kBAAkB;AAEjB,gBAAS,iBAAiB,WAAyC;AACxE,MAAI,UAAU,aAAa,MAAM;AAC/B,WAAO,UAAU,YAAY;AAAA,EAC/B;AAEA,MAAI,UAAU,YAAY,KAAK;AAC7B,QAAI,UAAU,UAAU,WAAW,IAAI,MAAM,eAAe;AAE5D,QAAI,UAAU,CAAC,GAAG;AAChB,aAAO,QAAQ,CAAC;AAAA,IAClB;AAAA,EACF;AAEA,SAAO,KAAK,SAAS,UAAU,IAAI;AACrC;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  import { getProjectsWithBrowserTests } from "./getProjectsWithBrowserTests.js";
3
2
  export function hasProjectBrowserTests(project) {
4
3
  return getProjectsWithBrowserTests(project.workspace).some(
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../source/hasProjectBrowserTests.ts"],
4
4
  "sourcesContent": ["import {type Project} from '@jakubmazanec/carson';\n\nimport {getProjectsWithBrowserTests} from './getProjectsWithBrowserTests.js';\n\nexport function hasProjectBrowserTests(project: Project | Project<false>) {\n return getProjectsWithBrowserTests(project.workspace).some(\n (projectWithBrowserTests) => projectWithBrowserTests.path === project.path,\n );\n}\n"],
5
- "mappings": ";AAEA,SAAQ,mCAAkC;AAEnC,gBAAS,uBAAuB,SAAmC;AACxE,SAAO,4BAA4B,QAAQ,SAAS,EAAE;AAAA,IACpD,CAAC,4BAA4B,wBAAwB,SAAS,QAAQ;AAAA,EACxE;AACF;",
5
+ "mappings": "AAEA,SAAQ,mCAAkC;AAEnC,gBAAS,uBAAuB,SAAmC;AACxE,SAAO,4BAA4B,QAAQ,SAAS,EAAE;AAAA,IACpD,CAAC,4BAA4B,wBAAwB,SAAS,QAAQ;AAAA,EACxE;AACF;",
6
6
  "names": []
7
7
  }
package/build/main.js CHANGED
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  export * from "./constants.js";
3
2
  export * from "./getAppUrl.js";
4
3
  export * from "./getBuildToCjsCommand.js";
package/build/main.js.map CHANGED
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../source/main.ts"],
4
4
  "sourcesContent": ["export * from './constants.js';\nexport * from './getAppUrl.js';\nexport * from './getBuildToCjsCommand.js';\nexport * from './getBuildToEsmCommand.js';\nexport * from './getDependencies.js';\nexport * from './getDevelopmentBranch.js';\nexport * from './getMainBranch.js';\nexport * from './getProjectsWithBrowserTests.js';\nexport * from './getReferences.js';\nexport * from './getWorkspaceName.js';\nexport * from './hasProjectBrowserTests.js';\nexport {default as lodash} from 'lodash';\nexport {default as semver} from 'semver';\n"],
5
- "mappings": ";AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAAQ,WAAW,cAAa;AAChC,SAAQ,WAAW,cAAa;",
5
+ "mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAAQ,WAAW,cAAa;AAChC,SAAQ,WAAW,cAAa;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jakubmazanec/carson-templates",
3
- "version": "9.0.0-unstable.f507ff42",
3
+ "version": "9.0.0",
4
4
  "description": "Collection of Carson templates.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -36,31 +36,31 @@
36
36
  "semver": "^7.8.5"
37
37
  },
38
38
  "devDependencies": {
39
- "@jakubmazanec/carson": "3.0.6-unstable.f507ff42",
40
- "@jakubmazanec/eslint-config": "5.0.0-unstable.f507ff42",
41
- "@jakubmazanec/fs-utils": "0.2.18-unstable.f507ff42",
39
+ "@jakubmazanec/carson": "^3.0.0",
40
+ "@jakubmazanec/eslint-config": "^5.0.0",
41
+ "@jakubmazanec/fs-utils": "^0.2.0",
42
42
  "@types/fs-extra": "^11.0.4",
43
43
  "@types/lodash": "^4.17.24",
44
44
  "@types/node": "^24.0.4",
45
45
  "@types/semver": "^7.7.1",
46
46
  "@types/zen-observable": "^0.8.7",
47
47
  "@vitest/coverage-v8": "^4.1.10",
48
- "concurrently": "^9.2.4",
48
+ "concurrently": "^10.0.3",
49
49
  "del-cli": "^7.0.0",
50
50
  "esbuild": "^0.28.1",
51
51
  "eslint": "^9.39.4",
52
- "execa": "^9.6.1",
52
+ "execa": "^10.0.0",
53
53
  "fs-extra": "^11.3.6",
54
54
  "prettier": "^3.9.5",
55
55
  "prettier-plugin-packagejson": "^2.5.22",
56
56
  "typedoc": "^0.28.20",
57
57
  "typedoc-plugin-markdown": "^4.12.0",
58
- "typescript": "^5.9.3",
58
+ "typescript": "^6.0.0",
59
59
  "vitest": "^4.1.10",
60
60
  "zen-observable": "^0.10.0"
61
61
  },
62
62
  "peerDependencies": {
63
- "@jakubmazanec/carson": "3.0.6-unstable.f507ff42"
63
+ "@jakubmazanec/carson": "^3.0.0"
64
64
  },
65
65
  "packageManager": "npm@11.3.0",
66
66
  "engines": {
@@ -2,7 +2,12 @@ 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>';
5
+ export const AUTHOR_NAME = 'Jakub Mazanec';
6
+ export const AUTHOR_EMAIL = 'jakub@mazanec.dev';
7
+ export const AUTHOR = `${AUTHOR_NAME} <${AUTHOR_EMAIL}>`;
8
+ export const BOT_NAME = 'Bot';
9
+ export const BOT_EMAIL = 'bot@mazanec.dev';
10
+ export const BOT = `${BOT_NAME} <${BOT_EMAIL}>`;
6
11
 
7
12
  export const BUILD_DIRECTORY = 'build';
8
13
  export const STORYBOOK_BUILD_DIRECTORY = 'storybook-static';
@@ -45,17 +50,16 @@ export const FORMAT_IGNORE_PATTERNS = [
45
50
  `${BUILD_DIRECTORY}/`,
46
51
  ].sort();
47
52
 
48
- export const ECMASCRIPT_VERSION = 2024;
53
+ export const ECMASCRIPT_VERSION = 2025;
49
54
 
50
55
  export const TSCONFIG_COMPILER_OPTIONS = {
51
- allowSyntheticDefaultImports: true,
52
56
  composite: true,
53
57
  erasableSyntaxOnly: true,
54
58
  exactOptionalPropertyTypes: true,
55
59
  forceConsistentCasingInFileNames: true,
56
60
  isolatedModules: true,
57
61
  jsx: 'react-jsx',
58
- lib: ['dom', 'dom.iterable', `es${ECMASCRIPT_VERSION}`],
62
+ lib: ['dom', `es${ECMASCRIPT_VERSION}`],
59
63
  module: 'node16',
60
64
  moduleResolution: 'node16',
61
65
  noEmitOnError: true,
@@ -63,8 +67,8 @@ export const TSCONFIG_COMPILER_OPTIONS = {
63
67
  noImplicitReturns: true,
64
68
  noUncheckedIndexedAccess: true,
65
69
  skipLibCheck: true,
66
- strict: true,
67
70
  target: `es${ECMASCRIPT_VERSION}`,
71
+ types: ['node'],
68
72
  };
69
73
 
70
74
  export const PRETTIER_OPTIONS = {
@@ -132,14 +136,14 @@ export const DEPENDENCY_VERSIONS: Record<string, string> = {
132
136
  [TEMPLATE_PACKAGE_NAME]:
133
137
  isTemplatesPackageVersionPrerelease ? templatesPackageVersion : `^${templatesPackageVersion}`,
134
138
  [CHANGELOG_PACKAGE_NAME]: '^2.0.0',
135
- [LINTER_CONFIG_PACKAGE_NAME]: '^4.0.0',
139
+ [LINTER_CONFIG_PACKAGE_NAME]: '^5.0.0',
136
140
 
137
141
  '@changesets/cli': '^2.0.0',
138
142
  '@chromatic-com/storybook': '^5.0.0',
139
- '@react-router/dev': '^7.0.0',
140
- '@react-router/fs-routes': '^7.0.0',
141
- '@react-router/node': '^7.0.0',
142
- '@react-router/serve': '^7.0.0',
143
+ '@react-router/dev': '^8.0.0',
144
+ '@react-router/fs-routes': '^8.0.0',
145
+ '@react-router/node': '^8.0.0',
146
+ '@react-router/serve': '^8.0.0',
143
147
  '@storybook/addon-links': '^10.0.0',
144
148
  '@storybook/addon-docs': '^10.0.0',
145
149
  '@storybook/react-vite': '^10.0.0',
@@ -150,22 +154,22 @@ export const DEPENDENCY_VERSIONS: Record<string, string> = {
150
154
  '@vitest/browser-playwright': '^4.0.0',
151
155
  '@vitest/coverage-v8': '^4.0.0',
152
156
  chromatic: '^18.0.0',
153
- concurrently: '^9.0.0',
157
+ concurrently: '^10.0.0',
154
158
  'cross-env': '^10.0.0',
155
159
  'del-cli': '^7.0.0',
156
- esbuild: '^0.24.0',
160
+ esbuild: '^0.28.0',
157
161
  eslint: '^9.0.0',
158
- execa: '^9.0.0',
162
+ execa: '^10.0.0',
159
163
  isbot: '^5.0.0',
160
164
  lodash: '^4.0.0',
161
165
  'patch-package': '^8.0.0',
162
166
  playwright: '^1.60.0',
163
167
  prettier: '^3.0.0',
164
168
  'prettier-plugin-packagejson': '^2.0.0',
165
- 'prettier-plugin-tailwindcss': '^0.6.0',
169
+ 'prettier-plugin-tailwindcss': '^0.8.0',
166
170
  react: '^19.0.0',
167
171
  'react-dom': '^19.0.0',
168
- 'react-router': '^7.0.0',
172
+ 'react-router': '^8.0.0',
169
173
  semver: '^7.0.0',
170
174
  storybook: '^10.0.0',
171
175
  tailwindcss: '^4.0.0',
@@ -174,8 +178,8 @@ export const DEPENDENCY_VERSIONS: Record<string, string> = {
174
178
  turbo: '^2.0.0',
175
179
  typedoc: '^0.28.0',
176
180
  'typedoc-plugin-markdown': '^4.0.0',
177
- typescript: '^5.0.0',
178
- vite: '^7.0.0',
181
+ typescript: '^6.0.0',
182
+ vite: '^8.0.0',
179
183
  vitest: '^4.0.0',
180
184
  'vitest-browser-react': '^2.0.0',
181
185
 
@@ -13,10 +13,7 @@ npm install <%- project.name %>
13
13
  ⚠️ This is an [ESM](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c) package!
14
14
  It cannot be required from a CommonJS module.
15
15
 
16
- #### Prerequisites
17
-
18
- - Node.js 20 or later
19
- - TypeScript 5 or later
16
+ <!-- prerequisites --><!-- prerequisites -->
20
17
 
21
18
  ## Usage
22
19
 
@@ -73,11 +73,17 @@ async function checkCarsonTemplatesPackage(dependencyBumps: DependencyBumps) {
73
73
  let result = regexp.exec(constantsFile);
74
74
 
75
75
  if (result?.[0]) {
76
- let newMajorVersion = semver.major(semver.minVersion(bump)!);
77
- let oldMajorVersion = semver.major(semver.minVersion(result[0])!);
78
-
79
- // Node.js is a special case, because it isn't specified in `dependencies` field
80
- if (newMajorVersion > oldMajorVersion || dependencyName === 'node') {
76
+ let newVersion = semver.minVersion(bump)!;
77
+ let oldVersion = semver.minVersion(result[0])!;
78
+ let newMajorVersion = semver.major(newVersion);
79
+ let oldMajorVersion = semver.major(oldVersion);
80
+ let newMinorVersion = semver.minor(newVersion);
81
+ let oldMinorVersion = semver.minor(oldVersion);
82
+
83
+ if (
84
+ newMajorVersion > oldMajorVersion ||
85
+ (oldMajorVersion === 0 && newMinorVersion > oldMinorVersion)
86
+ ) {
81
87
  throw new Error(
82
88
  `Bumping major version of dependency "${dependencyName}" that is handled by Carson, update of the Carson template package is needed!`,
83
89
  );
@@ -87,6 +93,22 @@ async function checkCarsonTemplatesPackage(dependencyBumps: DependencyBumps) {
87
93
  }
88
94
  }
89
95
 
96
+ /**
97
+ * A function that checks if Carson template files were changed, which necessitates manual update of the Carson template package.
98
+ */
99
+ function checkCarsonTemplateFiles(changedFiles: string[]) {
100
+ // eslint-disable-next-line no-constant-condition, @typescript-eslint/no-unnecessary-condition -- this is autogenerated
101
+ if (<%- !workspace.projects.some((project) => project.name === TEMPLATE_PACKAGE_NAME) %>) {
102
+ return;
103
+ }
104
+
105
+ if (changedFiles.some((file) => file.startsWith('<%- `${workspace.projects.find((project) => project.name === TEMPLATE_PACKAGE_NAME)?.relativePath ?? ''}/templates/` %>'))) {
106
+ throw new Error(
107
+ 'Bumping version in Carson template files, update of the Carson template package is needed!',
108
+ );
109
+ }
110
+ }
111
+
90
112
  /**
91
113
  * A function that creates changesets for projects dependencies update.
92
114
  */
@@ -195,6 +217,7 @@ if (dependencyBumps.get(WORKSPACE_PLACEHOLDER_NAME)?.has(TEMPLATE_PACKAGE_NAME))
195
217
 
196
218
  await fs.writeFile(getChangesetName(), '---\n---\n');
197
219
  await checkCarsonTemplatesPackage(dependencyBumps);
220
+ checkCarsonTemplateFiles(diff.split('\n'));
198
221
  } else {
199
222
  await createChangeset(getChangesetName, dependencyBumps);
200
223
  await checkCarsonTemplatesPackage(dependencyBumps);
@@ -46,17 +46,17 @@ jobs:
46
46
  contents: read
47
47
  id-token: write
48
48
  steps:
49
- - uses: actions/checkout@v5
49
+ - uses: actions/checkout@v7
50
50
  with:
51
51
  token: ${{ secrets.PAT }}
52
52
  fetch-depth: 0
53
53
 
54
54
  - name: Configure git
55
55
  run: |
56
- git config user.email "bot@mazanec.dev"
57
- git config user.name "Bot"
56
+ git config user.email "<%- BOT_EMAIL %>"
57
+ git config user.name "<%- BOT_NAME %>"
58
58
 
59
- - uses: actions/setup-node@v4
59
+ - uses: actions/setup-node@v7
60
60
  with:
61
61
  node-version: <%- semver.major(semver.minVersion(DEPENDENCY_VERSIONS.node)) %>
62
62
 
@@ -33,17 +33,17 @@ jobs:
33
33
  runs-on: ubuntu-latest
34
34
  timeout-minutes: 15
35
35
  steps:
36
- - uses: actions/checkout@v5
36
+ - uses: actions/checkout@v7
37
37
  with:
38
38
  token: ${{ secrets.PAT }}
39
39
  fetch-depth: 0
40
40
 
41
41
  - name: Configure git
42
42
  run: |
43
- git config user.email "bot@mazanec.dev"
44
- git config user.name "Bot"
43
+ git config user.email "<%- BOT_EMAIL %>"
44
+ git config user.name "<%- BOT_NAME %>"
45
45
 
46
- - uses: actions/setup-node@v4
46
+ - uses: actions/setup-node@v7
47
47
  with:
48
48
  node-version: <%- semver.major(semver.minVersion(DEPENDENCY_VERSIONS.node)) %>
49
49
  registry-url: 'https://registry.npmjs.org'
@@ -57,17 +57,17 @@ jobs:
57
57
  contents: read
58
58
  id-token: write
59
59
  steps:
60
- - uses: actions/checkout@v5
60
+ - uses: actions/checkout@v7
61
61
  with:
62
62
  token: ${{ secrets.GITHUB_TOKEN }}
63
63
  fetch-depth: 0
64
64
 
65
65
  - name: Configure git
66
66
  run: |
67
- git config user.email "bot@mazanec.dev"
68
- git config user.name "Bot"
67
+ git config user.email "<%- BOT_EMAIL %>"
68
+ git config user.name "<%- BOT_NAME %>"
69
69
 
70
- - uses: actions/setup-node@v4
70
+ - uses: actions/setup-node@v7
71
71
  with:
72
72
  node-version: <%- semver.major(semver.minVersion(DEPENDENCY_VERSIONS.node)) %>
73
73
  registry-url: 'https://registry.npmjs.org'
@@ -54,17 +54,17 @@ jobs:
54
54
  contents: read
55
55
  id-token: write
56
56
  steps:
57
- - uses: actions/checkout@v5
57
+ - uses: actions/checkout@v7
58
58
  with:
59
59
  token: ${{ secrets.PAT }}
60
60
  fetch-depth: 0
61
61
 
62
62
  - name: Configure git
63
63
  run: |
64
- git config user.email "bot@mazanec.dev"
65
- git config user.name "Bot"
64
+ git config user.email "<%- BOT_EMAIL %>"
65
+ git config user.name "<%- BOT_NAME %>"
66
66
 
67
- - uses: actions/setup-node@v4
67
+ - uses: actions/setup-node@v7
68
68
  with:
69
69
  node-version: <%- semver.major(semver.minVersion(DEPENDENCY_VERSIONS.node)) %>
70
70
  registry-url: 'https://registry.npmjs.org'
@@ -285,17 +285,17 @@ for (let project of workspace.projects) {
285
285
  contents: read
286
286
  id-token: write
287
287
  steps:
288
- - uses: actions/checkout@v5
288
+ - uses: actions/checkout@v7
289
289
  with:
290
290
  token: ${{ secrets.PAT }}
291
291
  fetch-depth: 0
292
292
 
293
293
  - name: Configure git
294
294
  run: |
295
- git config user.email "bot@mazanec.dev"
296
- git config user.name "Bot"
295
+ git config user.email "<%- BOT_EMAIL %>"
296
+ git config user.name "<%- BOT_NAME %>"
297
297
 
298
- - uses: actions/setup-node@v4
298
+ - uses: actions/setup-node@v7
299
299
  with:
300
300
  node-version: <%- semver.major(semver.minVersion(DEPENDENCY_VERSIONS.node)) %>
301
301
  registry-url: 'https://registry.npmjs.org'
@@ -23,7 +23,7 @@ jobs:
23
23
  runs-on: ubuntu-latest
24
24
  timeout-minutes: 15
25
25
  steps:
26
- - uses: actions/checkout@v5
26
+ - uses: actions/checkout@v7
27
27
  with:
28
28
  ref: ${{ github.head_ref }}
29
29
  token: ${{ secrets.PAT }}
@@ -31,10 +31,10 @@ jobs:
31
31
 
32
32
  - name: Configure git
33
33
  run: |
34
- git config user.email "bot@mazanec.dev"
35
- git config user.name "Bot"
34
+ git config user.email "<%- BOT_EMAIL %>"
35
+ git config user.name "<%- BOT_NAME %>"
36
36
 
37
- - uses: actions/setup-node@v4
37
+ - uses: actions/setup-node@v7
38
38
  with:
39
39
  node-version: <%- semver.major(semver.minVersion(DEPENDENCY_VERSIONS.node)) %>
40
40
 
@@ -3,6 +3,16 @@ to: 'renovate.json'
3
3
  strategy: overwrite
4
4
  ---
5
5
  <%
6
+ let nonMajorGroup = {
7
+ matchPackageNames: [`!${CARSON_PACKAGE_NAME}`, `!${TEMPLATE_PACKAGE_NAME}`],
8
+ groupName: 'dependencies',
9
+ schedule: ['before 6am on monday'],
10
+ };
11
+
12
+ let hasTemplatesProject = workspace.projects.find(
13
+ (project) => project.name === TEMPLATE_PACKAGE_NAME,
14
+ );
15
+
6
16
  let renovateConfig = lodash.merge(
7
17
  {
8
18
  $schema: 'https://docs.renovatebot.com/renovate-schema.json',
@@ -32,8 +42,17 @@ let renovateConfig = lodash.merge(
32
42
  matchDepTypes: ['overrides'],
33
43
  enabled: false,
34
44
  },
45
+ {...nonMajorGroup, matchUpdateTypes: ['patch', 'pin', 'digest']},
46
+ {...nonMajorGroup, matchUpdateTypes: ['minor'], matchCurrentVersion: '>=1.0.0'},
35
47
  ],
36
48
  },
49
+ hasTemplatesProject ?
50
+ {
51
+ 'github-actions': {
52
+ managerFilePatterns: [`/${hasTemplatesProject.relativePath}/templates/.+\\.ya?ml\\.ejs$/`],
53
+ },
54
+ }
55
+ : {},
37
56
  workspace.config.overrides?.renovate ?? {},
38
57
  );
39
58
  -%>