@jakubmazanec/carson-templates 2.0.1 → 2.1.0-next.1e9228c

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.
@@ -7,6 +7,7 @@ export declare const TEST_COMMAND = "vitest run --coverage --passWithNoTests";
7
7
  export declare const CARSON_PACKAGE_NAME = "@jakubmazanec/carson";
8
8
  export declare const TEMPLATE_PACKAGE_NAME = "@jakubmazanec/carson-templates";
9
9
  export declare const LINTER_CONFIG_PACKAGE_NAME = "@jakubmazanec/eslint-config";
10
+ export declare const CHANGELOG_PACKAGE_NAME = "@jakubmazanec/changesets-changelog";
10
11
  export declare const MAIN_BRANCH_NAMES: Set<string>;
11
12
  export declare const DEVELOPMENT_BRANCH_NAMES: Set<string>;
12
13
  export declare const LINT_IGNORE_PATTERNS: string[];
@@ -8,6 +8,7 @@ export const TEST_COMMAND = "vitest run --coverage --passWithNoTests";
8
8
  export const CARSON_PACKAGE_NAME = "@jakubmazanec/carson";
9
9
  export const TEMPLATE_PACKAGE_NAME = "@jakubmazanec/carson-templates";
10
10
  export const LINTER_CONFIG_PACKAGE_NAME = "@jakubmazanec/eslint-config";
11
+ export const CHANGELOG_PACKAGE_NAME = "@jakubmazanec/changesets-changelog";
11
12
  export const MAIN_BRANCH_NAMES = /* @__PURE__ */ new Set(["main", "master"]);
12
13
  export const DEVELOPMENT_BRANCH_NAMES = /* @__PURE__ */ new Set(["development", "develop", "dev"]);
13
14
  export const LINT_IGNORE_PATTERNS = [
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../source/constants.ts"],
4
- "sourcesContent": ["export const BUILD_DIRECTORY = 'build';\nexport const SOURCE_DIRECTORY = 'source';\n\nexport const BUILD_TO_ESM_COMMAND = `esbuild \"${SOURCE_DIRECTORY}/**/*\" --platform=node --target=node20.8 --outdir=${BUILD_DIRECTORY} --sourcemap`;\nexport const BUILD_TO_CJS_COMMAND = `esbuild \"${SOURCE_DIRECTORY}/**/*\" --platform=node --target=node20.8 --format=cjs --outdir=${BUILD_DIRECTORY} --sourcemap`;\nexport const FORMAT_COMMAND = 'prettier . --write --ignore-unknown';\nexport const TEST_COMMAND = 'vitest run --coverage --passWithNoTests';\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';\n\nexport const MAIN_BRANCH_NAMES = new Set(['main', 'master']);\nexport const DEVELOPMENT_BRANCH_NAMES = new Set(['development', 'develop', 'dev']);\n\nexport const LINT_IGNORE_PATTERNS = [\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"],
5
- "mappings": ";AAAO,aAAM,kBAAkB;AACxB,aAAM,mBAAmB;AAEzB,aAAM,uBAAuB,YAAY,gBAAgB,qDAAqD,eAAe;AAC7H,aAAM,uBAAuB,YAAY,gBAAgB,kEAAkE,eAAe;AAC1I,aAAM,iBAAiB;AACvB,aAAM,eAAe;AAErB,aAAM,sBAAsB;AAC5B,aAAM,wBAAwB;AAC9B,aAAM,6BAA6B;AAEnC,aAAM,oBAAoB,oBAAI,IAAI,CAAC,QAAQ,QAAQ,CAAC;AACpD,aAAM,2BAA2B,oBAAI,IAAI,CAAC,eAAe,WAAW,KAAK,CAAC;AAE1E,aAAM,uBAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG,eAAe;AACpB,EAAE,KAAK;AAEA,aAAM,yBAAyB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG,eAAe;AACpB,EAAE,KAAK;AAEA,aAAM,4BAA4B;AAAA,EACvC,8BAA8B;AAAA,EAC9B,WAAW;AAAA,EACX,4BAA4B;AAAA,EAC5B,kCAAkC;AAAA,EAClC,iBAAiB;AAAA,EACjB,KAAK;AAAA,EACL,KAAK,CAAC,OAAO,gBAAgB,QAAQ;AAAA,EACrC,QAAQ;AAAA,EACR,kBAAkB;AAAA,EAClB,eAAe;AAAA;AAAA,EACf,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,0BAA0B;AAAA,EAC1B,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,QAAQ;AACV;AAEO,aAAM,mBAAmB;AAAA,EAC9B,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,4BAA4B;AAAA,EAC5B,uBAAuB;AAAA,EACvB,2BAA2B;AAAA,EAC3B,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,MAAM;AAAA,EACN,aAAa;AAAA,EACb,eAAe;AAAA;AAAA,EAEf,WAAW;AAAA,IACT;AAAA,MACE,OAAO,CAAC,eAAe;AAAA,MACvB,SAAS;AAAA,QACP,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AACF;AAEO,aAAM,iBAAiB;AAAA,EAC5B,QAAQ;AAAA,EACR,aAAa,CAAC,KAAK,gBAAgB,UAAU;AAAA,EAC7C,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,iBAAiB;AACnB;",
4
+ "sourcesContent": ["export const BUILD_DIRECTORY = 'build';\nexport const SOURCE_DIRECTORY = 'source';\n\nexport const BUILD_TO_ESM_COMMAND = `esbuild \"${SOURCE_DIRECTORY}/**/*\" --platform=node --target=node20.8 --outdir=${BUILD_DIRECTORY} --sourcemap`;\nexport const BUILD_TO_CJS_COMMAND = `esbuild \"${SOURCE_DIRECTORY}/**/*\" --platform=node --target=node20.8 --format=cjs --outdir=${BUILD_DIRECTORY} --sourcemap`;\nexport const FORMAT_COMMAND = 'prettier . --write --ignore-unknown';\nexport const TEST_COMMAND = 'vitest run --coverage --passWithNoTests';\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(['development', 'develop', 'dev']);\n\nexport const LINT_IGNORE_PATTERNS = [\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"],
5
+ "mappings": ";AAAO,aAAM,kBAAkB;AACxB,aAAM,mBAAmB;AAEzB,aAAM,uBAAuB,YAAY,gBAAgB,qDAAqD,eAAe;AAC7H,aAAM,uBAAuB,YAAY,gBAAgB,kEAAkE,eAAe;AAC1I,aAAM,iBAAiB;AACvB,aAAM,eAAe;AAErB,aAAM,sBAAsB;AAC5B,aAAM,wBAAwB;AAC9B,aAAM,6BAA6B;AACnC,aAAM,yBAAyB;AAE/B,aAAM,oBAAoB,oBAAI,IAAI,CAAC,QAAQ,QAAQ,CAAC;AACpD,aAAM,2BAA2B,oBAAI,IAAI,CAAC,eAAe,WAAW,KAAK,CAAC;AAE1E,aAAM,uBAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG,eAAe;AACpB,EAAE,KAAK;AAEA,aAAM,yBAAyB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG,eAAe;AACpB,EAAE,KAAK;AAEA,aAAM,4BAA4B;AAAA,EACvC,8BAA8B;AAAA,EAC9B,WAAW;AAAA,EACX,4BAA4B;AAAA,EAC5B,kCAAkC;AAAA,EAClC,iBAAiB;AAAA,EACjB,KAAK;AAAA,EACL,KAAK,CAAC,OAAO,gBAAgB,QAAQ;AAAA,EACrC,QAAQ;AAAA,EACR,kBAAkB;AAAA,EAClB,eAAe;AAAA;AAAA,EACf,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,0BAA0B;AAAA,EAC1B,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,QAAQ;AACV;AAEO,aAAM,mBAAmB;AAAA,EAC9B,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,4BAA4B;AAAA,EAC5B,uBAAuB;AAAA,EACvB,2BAA2B;AAAA,EAC3B,gBAAgB;AAAA,EAChB,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,eAAe;AAAA,EACf,MAAM;AAAA,EACN,aAAa;AAAA,EACb,eAAe;AAAA;AAAA,EAEf,WAAW;AAAA,IACT;AAAA,MACE,OAAO,CAAC,eAAe;AAAA,MACvB,SAAS;AAAA,QACP,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AACF;AAEO,aAAM,iBAAiB;AAAA,EAC5B,QAAQ;AAAA,EACR,aAAa,CAAC,KAAK,gBAAgB,UAAU;AAAA,EAC7C,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,iBAAiB;AACnB;",
6
6
  "names": []
7
7
  }
@@ -4,6 +4,7 @@ import { createRequire } from "node:module";
4
4
  import semver from "semver";
5
5
  import {
6
6
  CARSON_PACKAGE_NAME,
7
+ CHANGELOG_PACKAGE_NAME,
7
8
  LINTER_CONFIG_PACKAGE_NAME,
8
9
  TEMPLATE_PACKAGE_NAME
9
10
  } from "./constants.js";
@@ -25,6 +26,7 @@ let isTemplatesPackageVersionPrerelease = !!semver.prerelease(templatesPackageVe
25
26
  export const DEPENDENCY_VERSIONS = {
26
27
  [CARSON_PACKAGE_NAME]: isCarsonPackageVersionPrerelease ? carsonPackageVersion : `^${carsonPackageVersion}`,
27
28
  [TEMPLATE_PACKAGE_NAME]: isTemplatesPackageVersionPrerelease ? templatesPackageVersion : `^${templatesPackageVersion}`,
29
+ [CHANGELOG_PACKAGE_NAME]: "^2.0.0",
28
30
  [LINTER_CONFIG_PACKAGE_NAME]: "^3.0.0",
29
31
  "@changesets/cli": "^2.0.0",
30
32
  "@remix-run/dev": "^2.0.0",
@@ -32,7 +34,7 @@ export const DEPENDENCY_VERSIONS = {
32
34
  "@remix-run/node": "^2.0.0",
33
35
  "@remix-run/react": "^2.0.0",
34
36
  "@remix-run/serve": "^2.0.0",
35
- "@testing-library/jest-dom": "^5.0.0",
37
+ "@testing-library/jest-dom": "^6.0.0",
36
38
  "@testing-library/react": "^14.0.0",
37
39
  "@types/lodash": "^4.0.0",
38
40
  "@types/node": "^20.0.0",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../source/dependency-versions.ts"],
4
- "sourcesContent": ["import fs from 'node:fs';\nimport {createRequire} from 'node:module';\nimport semver from 'semver';\n\nimport {\n CARSON_PACKAGE_NAME,\n LINTER_CONFIG_PACKAGE_NAME,\n TEMPLATE_PACKAGE_NAME,\n} from './constants.js';\n\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 [LINTER_CONFIG_PACKAGE_NAME]: '^3.0.0',\n\n '@changesets/cli': '^2.0.0',\n '@remix-run/dev': '^2.0.0',\n '@remix-run/express': '^2.0.0',\n '@remix-run/node': '^2.0.0',\n '@remix-run/react': '^2.0.0',\n '@remix-run/serve': '^2.0.0',\n '@testing-library/jest-dom': '^5.0.0',\n '@testing-library/react': '^14.0.0',\n '@types/lodash': '^4.0.0',\n '@types/node': '^20.0.0',\n '@types/react': '^18.0.0',\n '@types/react-dom': '^18.0.0',\n '@vitest/coverage-v8': '^1.0.0',\n autoprefixer: '^10.0.0',\n concurrently: '^8.0.0',\n 'cross-env': '^7.0.0',\n 'del-cli': '^5.0.0',\n esbuild: '^0.19.0',\n eslint: '^8.0.0',\n 'happy-dom': '^13.0.0',\n lodash: '^4.0.0',\n isbot: '^4.0.0',\n 'patch-package': '^6.0.0',\n prettier: '^3.0.0',\n 'prettier-plugin-packagejson': '^2.0.0',\n 'prettier-plugin-tailwindcss': '^0.5.0',\n react: '^18.0.0',\n 'react-dom': '^18.0.0',\n tailwindcss: '^3.0.0',\n turbo: '^1.0.0',\n typedoc: '^0.24.0',\n 'typedoc-plugin-markdown': '^3.0.0',\n typescript: '^5.0.0',\n vite: '^5.0.0',\n vitest: '^1.0.0',\n};\n"],
5
- "mappings": ";AAAA,OAAO,QAAQ;AACf,SAAQ,qBAAoB;AAC5B,OAAO,YAAY;AAEnB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,IAAI,UAAU,cAAc,YAAY,GAAG;AAC3C,IAAI,uBACF,OACG;AAAA,EAEG,KAAK;AAAA,IACH,GAAG,aAAa,QAAQ,QAAQ,GAAG,qBAAqB,eAAe,GAAG;AAAA,MACxE,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,EACA,iBAAiB,mBAAmB,KAAK;AAC7C,GACE,OAAO,KAAK;AAClB,IAAI,mCAAmC,CAAC,CAAC,OAAO,WAAW,oBAAoB,GAAG;AAClF,IAAI,0BACF,KAAK;AAAA,EACH,GAAG,aAAa,QAAQ,QAAQ,GAAG,qBAAqB,eAAe,GAAG;AAAA,IACxE,UAAU;AAAA,EACZ,CAAC;AACH,EACA;AACF,IAAI,sCAAsC,CAAC,CAAC,OAAO,WAAW,uBAAuB,GAAG;AAEjF,aAAM,sBAA8C;AAAA,EACzD,CAAC,mBAAmB,GAClB,mCAAmC,uBAAuB,IAAI,oBAAoB;AAAA,EACpF,CAAC,qBAAqB,GACpB,sCAAsC,0BAA0B,IAAI,uBAAuB;AAAA,EAC7F,CAAC,0BAA0B,GAAG;AAAA,EAE9B,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,sBAAsB;AAAA,EACtB,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,6BAA6B;AAAA,EAC7B,0BAA0B;AAAA,EAC1B,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,EACvB,cAAc;AAAA,EACd,cAAc;AAAA,EACd,aAAa;AAAA,EACb,WAAW;AAAA,EACX,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,+BAA+B;AAAA,EAC/B,+BAA+B;AAAA,EAC/B,OAAO;AAAA,EACP,aAAa;AAAA,EACb,aAAa;AAAA,EACb,OAAO;AAAA,EACP,SAAS;AAAA,EACT,2BAA2B;AAAA,EAC3B,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,QAAQ;AACV;",
4
+ "sourcesContent": ["import fs from 'node:fs';\nimport {createRequire} from 'node:module';\nimport semver from 'semver';\n\nimport {\n CARSON_PACKAGE_NAME,\n CHANGELOG_PACKAGE_NAME,\n LINTER_CONFIG_PACKAGE_NAME,\n TEMPLATE_PACKAGE_NAME,\n} from './constants.js';\n\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]: '^3.0.0',\n\n '@changesets/cli': '^2.0.0',\n '@remix-run/dev': '^2.0.0',\n '@remix-run/express': '^2.0.0',\n '@remix-run/node': '^2.0.0',\n '@remix-run/react': '^2.0.0',\n '@remix-run/serve': '^2.0.0',\n '@testing-library/jest-dom': '^6.0.0',\n '@testing-library/react': '^14.0.0',\n '@types/lodash': '^4.0.0',\n '@types/node': '^20.0.0',\n '@types/react': '^18.0.0',\n '@types/react-dom': '^18.0.0',\n '@vitest/coverage-v8': '^1.0.0',\n autoprefixer: '^10.0.0',\n concurrently: '^8.0.0',\n 'cross-env': '^7.0.0',\n 'del-cli': '^5.0.0',\n esbuild: '^0.19.0',\n eslint: '^8.0.0',\n 'happy-dom': '^13.0.0',\n lodash: '^4.0.0',\n isbot: '^4.0.0',\n 'patch-package': '^6.0.0',\n prettier: '^3.0.0',\n 'prettier-plugin-packagejson': '^2.0.0',\n 'prettier-plugin-tailwindcss': '^0.5.0',\n react: '^18.0.0',\n 'react-dom': '^18.0.0',\n tailwindcss: '^3.0.0',\n turbo: '^1.0.0',\n typedoc: '^0.24.0',\n 'typedoc-plugin-markdown': '^3.0.0',\n typescript: '^5.0.0',\n vite: '^5.0.0',\n vitest: '^1.0.0',\n};\n"],
5
+ "mappings": ";AAAA,OAAO,QAAQ;AACf,SAAQ,qBAAoB;AAC5B,OAAO,YAAY;AAEnB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,IAAI,UAAU,cAAc,YAAY,GAAG;AAC3C,IAAI,uBACF,OACG;AAAA,EAEG,KAAK;AAAA,IACH,GAAG,aAAa,QAAQ,QAAQ,GAAG,qBAAqB,eAAe,GAAG;AAAA,MACxE,UAAU;AAAA,IACZ,CAAC;AAAA,EACH,EACA,iBAAiB,mBAAmB,KAAK;AAC7C,GACE,OAAO,KAAK;AAClB,IAAI,mCAAmC,CAAC,CAAC,OAAO,WAAW,oBAAoB,GAAG;AAClF,IAAI,0BACF,KAAK;AAAA,EACH,GAAG,aAAa,QAAQ,QAAQ,GAAG,qBAAqB,eAAe,GAAG;AAAA,IACxE,UAAU;AAAA,EACZ,CAAC;AACH,EACA;AACF,IAAI,sCAAsC,CAAC,CAAC,OAAO,WAAW,uBAAuB,GAAG;AAEjF,aAAM,sBAA8C;AAAA,EACzD,CAAC,mBAAmB,GAClB,mCAAmC,uBAAuB,IAAI,oBAAoB;AAAA,EACpF,CAAC,qBAAqB,GACpB,sCAAsC,0BAA0B,IAAI,uBAAuB;AAAA,EAC7F,CAAC,sBAAsB,GAAG;AAAA,EAC1B,CAAC,0BAA0B,GAAG;AAAA,EAE9B,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,sBAAsB;AAAA,EACtB,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,6BAA6B;AAAA,EAC7B,0BAA0B;AAAA,EAC1B,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EACpB,uBAAuB;AAAA,EACvB,cAAc;AAAA,EACd,cAAc;AAAA,EACd,aAAa;AAAA,EACb,WAAW;AAAA,EACX,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,+BAA+B;AAAA,EAC/B,+BAA+B;AAAA,EAC/B,OAAO;AAAA,EACP,aAAa;AAAA,EACb,aAAa;AAAA,EACb,OAAO;AAAA,EACP,SAAS;AAAA,EACT,2BAA2B;AAAA,EAC3B,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,QAAQ;AACV;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jakubmazanec/carson-templates",
3
- "version": "2.0.1",
3
+ "version": "2.1.0-next.1e9228c",
4
4
  "description": "Collection of Carson templates.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -9,6 +9,7 @@ export const TEST_COMMAND = 'vitest run --coverage --passWithNoTests';
9
9
  export const CARSON_PACKAGE_NAME = '@jakubmazanec/carson';
10
10
  export const TEMPLATE_PACKAGE_NAME = '@jakubmazanec/carson-templates';
11
11
  export const LINTER_CONFIG_PACKAGE_NAME = '@jakubmazanec/eslint-config';
12
+ export const CHANGELOG_PACKAGE_NAME = '@jakubmazanec/changesets-changelog';
12
13
 
13
14
  export const MAIN_BRANCH_NAMES = new Set(['main', 'master']);
14
15
  export const DEVELOPMENT_BRANCH_NAMES = new Set(['development', 'develop', 'dev']);
@@ -4,6 +4,7 @@ import semver from 'semver';
4
4
 
5
5
  import {
6
6
  CARSON_PACKAGE_NAME,
7
+ CHANGELOG_PACKAGE_NAME,
7
8
  LINTER_CONFIG_PACKAGE_NAME,
8
9
  TEMPLATE_PACKAGE_NAME,
9
10
  } from './constants.js';
@@ -36,6 +37,7 @@ export const DEPENDENCY_VERSIONS: Record<string, string> = {
36
37
  isCarsonPackageVersionPrerelease ? carsonPackageVersion : `^${carsonPackageVersion}`,
37
38
  [TEMPLATE_PACKAGE_NAME]:
38
39
  isTemplatesPackageVersionPrerelease ? templatesPackageVersion : `^${templatesPackageVersion}`,
40
+ [CHANGELOG_PACKAGE_NAME]: '^2.0.0',
39
41
  [LINTER_CONFIG_PACKAGE_NAME]: '^3.0.0',
40
42
 
41
43
  '@changesets/cli': '^2.0.0',
@@ -44,7 +46,7 @@ export const DEPENDENCY_VERSIONS: Record<string, string> = {
44
46
  '@remix-run/node': '^2.0.0',
45
47
  '@remix-run/react': '^2.0.0',
46
48
  '@remix-run/serve': '^2.0.0',
47
- '@testing-library/jest-dom': '^5.0.0',
49
+ '@testing-library/jest-dom': '^6.0.0',
48
50
  '@testing-library/react': '^14.0.0',
49
51
  '@types/lodash': '^4.0.0',
50
52
  '@types/node': '^20.0.0',
@@ -6,7 +6,19 @@ strategy: overwrite
6
6
  let lines = [];
7
7
 
8
8
  for (let project of workspace.projects) {
9
- lines.push(`COPY --chown=nodeuser ${project.relativePath} ${project.relativePath}`);
9
+ if (project.config.deployment?.appName) {
10
+ lines.push(`COPY --from=build /workspace/${project.relativePath}/build /workspace/${project.relativePath}/build`);
11
+ lines.push(`COPY --from=build /workspace/${project.relativePath}/node_modules /workspace/${project.relativePath}/node_modules`);
12
+ lines.push(`COPY --from=build /workspace/${project.relativePath}/package.json /workspace/${project.relativePath}/package.json`);
13
+ } else {
14
+ if (project.packageJson.bin) {
15
+ lines.push(`COPY --from=build /workspace/${project.relativePath}/bin /workspace/${project.relativePath}/bin`);
16
+ }
17
+
18
+ lines.push(`COPY --from=build /workspace/${project.relativePath}/build /workspace/${project.relativePath}/build`);
19
+ lines.push(`COPY --from=build /workspace/${project.relativePath}/node_modules /workspace/${project.relativePath}/node_modules`);
20
+ lines.push(`COPY --from=build /workspace/${project.relativePath}/package.json /workspace/${project.relativePath}/package.json`);
21
+ }
10
22
  }
11
23
  -%>
12
24
  #
@@ -17,31 +29,41 @@ for (let project of workspace.projects) {
17
29
  # Run `npx carson update workspace` to regenerate.
18
30
  #
19
31
 
20
- FROM node:16-alpine
32
+ # Base stage
33
+ FROM node:20-slim as base
21
34
 
22
- # Create a new user and change directory ownership
23
- RUN adduser --disabled-password --home /app --uid 12000 --gecos '' nodeuser
24
- RUN chown -R nodeuser /app
25
- USER nodeuser
35
+ WORKDIR /workspace
26
36
 
27
- WORKDIR /app
37
+ ENV NODE_ENV=production
28
38
 
29
- # Copy files
30
- # We need to copy files needed for installing dependencies, app, and its direct and indirect dependencies that are located in the same workspace
31
- COPY --chown=nodeuser package.json package.json
32
- COPY --chown=nodeuser package-lock.json package-lock.json
33
- <%- lines.join('\n') %>
39
+ # Throw-away build stage to reduce size of final image
40
+ FROM base as build
41
+
42
+ # Install packages needed to install dependencies
43
+ RUN apt-get update -qq && \
44
+ apt-get install --no-install-recommends -y build-essential node-gyp pkg-config python-is-python3
34
45
 
35
46
  # Install dependencies
36
- RUN npm ci --ignore-scripts
47
+ COPY --link package-lock.json package.json ./
48
+ RUN npm ci --include=dev --ignore-scripts
37
49
 
38
- # Add stuff to process.env
39
- ENV IS_DOCKER=true
40
- ENV TZ=Europe/Prague
41
- ENV NODE_ENV=production
42
- ENV NODE_OPTIONS=--enable-source-maps
50
+ # Copy the workspace
51
+ COPY --link . .
43
52
 
44
- WORKDIR /app/<%- project.relativePath %>
53
+ # Build
54
+ RUN npm run build
55
+
56
+ # Remove development dependencies
57
+ RUN npm prune --omit=dev
58
+
59
+ # Final stage for app image
60
+ FROM base
61
+
62
+ # Copy files
63
+ COPY --from=build /workspace/node_modules /workspace/node_modules
64
+ <%- lines.join('\n') %>
45
65
 
66
+ # Start the server
67
+ WORKDIR /workspace/apps/somewhere
46
68
  EXPOSE 5000
47
69
  ENTRYPOINT ["npm", "start"]
@@ -10,6 +10,7 @@ let dependencies = [
10
10
  '@remix-run/serve',
11
11
  'cross-env',
12
12
  'isbot',
13
+ 'lodash',
13
14
  'react',
14
15
  'react-dom'
15
16
  ];
@@ -18,12 +19,12 @@ let developmentDependencies = [
18
19
  '@remix-run/dev',
19
20
  '@testing-library/jest-dom',
20
21
  '@testing-library/react',
22
+ '@types/lodash',
21
23
  '@types/node',
22
24
  '@types/react',
23
25
  '@types/react-dom',
24
26
  '@vitest/coverage-v8',
25
27
  'autoprefixer',
26
- 'cross-env',
27
28
  'del-cli',
28
29
  'eslint',
29
30
  'happy-dom',
@@ -52,7 +53,7 @@ let packageJson = lodash.merge(
52
53
  lint: 'eslint .',
53
54
  start:
54
55
  'cross-env NODE_ENV=production PORT=5000 remix-serve ./build/server/index.js',
55
- test: 'del-cli coverage && vitest run --coverage',
56
+ test: `del-cli coverage && ${TEST_COMMAND}`,
56
57
  typecheck: 'tsc --project tsconfig.typecheck.json',
57
58
  },
58
59
  dependencies: getDependencies(dependencies, workspace),
@@ -0,0 +1,51 @@
1
+ ---
2
+ to: '.dockerignore'
3
+ if: <%- workspace.projects.some((project) => project.config.deployment?.appName) %>
4
+ strategy: overwrite
5
+ ---
6
+ <%
7
+ let lines = [];
8
+
9
+ for (let project of workspace.projects) {
10
+ if (project.config.deployment?.appName) {
11
+ lines.push(`!${project.relativePath}/app/**`);
12
+ lines.push(`!${project.relativePath}/public/**`);
13
+ lines.push(`!${project.relativePath}/env.d.ts`);
14
+ lines.push(`!${project.relativePath}/package.json`);
15
+ lines.push(`!${project.relativePath}/postcss.config.cjs`);
16
+ lines.push(`!${project.relativePath}/tailwind.config.ts`);
17
+ lines.push(`!${project.relativePath}/tsconfig.json`);
18
+ lines.push(`!${project.relativePath}/vite.config.ts`);
19
+
20
+ } else {
21
+ if (project.packageJson.bin) {
22
+ lines.push(`!${project.relativePath}/bin/**`);
23
+ }
24
+
25
+ lines.push(`!${project.relativePath}/${BUILD_DIRECTORY}/**`);
26
+ lines.push(`!${project.relativePath}/package.json`);
27
+ }
28
+ }
29
+
30
+ lines.push('!/package-lock.json');
31
+ lines.push('!/package.json');
32
+ lines.push('!/turbo.json');
33
+ -%>
34
+ #
35
+ # DO NOT EDIT!
36
+ # This file was autogenerated by Carson.
37
+ # Changes may cause incorrect behavior and will be lost when the file is regenerated.
38
+ #
39
+ # Run `npx carson update workspace` to regenerate.
40
+ #
41
+
42
+ # TODO: Use wildcards instead of package names when this is fixed: https://github.com/moby/moby/issues/40319
43
+
44
+ # ignore everything
45
+ *
46
+
47
+ # except files that are allowed to be in the Docker image
48
+ <%- lines.join('\n') %>
49
+
50
+ # we might also need .npmrc with token
51
+ !.npmrc
@@ -103,3 +103,25 @@ jobs:
103
103
  NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
104
104
  NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
105
105
  NPM_CONFIG_PROVENANCE: 'true' # must be string, not boolean
106
+ <%
107
+ if (workspace.projects.some((project) => project.config.deployment?.appName)) {
108
+ -%>
109
+
110
+ - uses: superfly/flyctl-actions/setup-flyctl@master
111
+ <%
112
+ }
113
+
114
+ for (let project of workspace.projects) {
115
+ if (project.config.deployment?.appName) {
116
+ -%>
117
+
118
+ - name: Deploy <%- project.name %>
119
+ run:
120
+ npm run deploy --workspace <%- project.name %> -- --app <%- project.config.deployment?.appName %>-unstable
121
+ env:
122
+ FLY_ACCESS_TOKEN: ${{ secrets.FLY_TOKEN }}
123
+ FLY_API_TOKEN: ${{ secrets.FLY_TOKEN }}
124
+ <%
125
+ }
126
+ }
127
+ -%>
@@ -122,20 +122,28 @@ jobs:
122
122
  - name: Push changes
123
123
  run: |
124
124
  git push --follow-tags
125
+ <%
126
+ if (workspace.projects.some((project) => project.config.deployment?.appName)) {
127
+ -%>
125
128
 
129
+ - uses: superfly/flyctl-actions/setup-flyctl@master
126
130
  <%
131
+ }
132
+
127
133
  for (let project of workspace.projects) {
128
134
  if (project.config.deployment?.appName) {
129
135
  -%>
130
- - name: Deploy
136
+
137
+ - name: Deploy <%- project.name %>
131
138
  run:
132
139
  npm run deploy --workspace <%- project.name %>
133
140
  env:
134
- FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}
141
+ FLY_ACCESS_TOKEN: ${{ secrets.FLY_TOKEN }}
142
+ FLY_API_TOKEN: ${{ secrets.FLY_TOKEN }}
135
143
  <%
136
144
  }
137
145
  }
138
- %>
146
+ -%>
139
147
 
140
148
  - name: Checkout main branch
141
149
  run: |
@@ -165,11 +173,6 @@ for (let project of workspace.projects) {
165
173
  contents: read
166
174
  id-token: write
167
175
  steps:
168
- - name: Cancel previous runs
169
- uses: styfle/cancel-workflow-action@0.11.0
170
- with:
171
- access_token: ${{ secrets.GITHUB_TOKEN }}
172
-
173
176
  - uses: actions/checkout@v4
174
177
  with:
175
178
  token: ${{ secrets.PAT }}
@@ -252,17 +255,25 @@ for (let project of workspace.projects) {
252
255
  NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
253
256
  NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
254
257
  NPM_CONFIG_PROVENANCE: 'true' # must be string, not boolean
258
+ <%
259
+ if (workspace.projects.some((project) => project.config.deployment?.appName)) {
260
+ -%>
255
261
 
262
+ - uses: superfly/flyctl-actions/setup-flyctl@master
256
263
  <%
264
+ }
265
+
257
266
  for (let project of workspace.projects) {
258
267
  if (project.config.deployment?.appName) {
259
268
  -%>
260
- - name: Deploy
269
+
270
+ - name: Deploy <%- project.name %>
261
271
  run:
262
- npm run deploy --workspace <%- project.name %> -- --app <%- project.config.deployment?.appName %>-staging
272
+ npm run deploy --workspace <%- project.name %> -- --app <%- project.config.deployment?.appName %>-next
263
273
  env:
264
- FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}
274
+ FLY_ACCESS_TOKEN: ${{ secrets.FLY_TOKEN }}
275
+ FLY_API_TOKEN: ${{ secrets.FLY_TOKEN }}
265
276
  <%
266
277
  }
267
278
  }
268
- %>
279
+ -%>
@@ -254,4 +254,5 @@ web_modules/
254
254
  # Project specific files
255
255
 
256
256
  ## Build folders
257
+ apps/**/<%- BUILD_DIRECTORY %>
257
258
  packages/**/<%- BUILD_DIRECTORY %>
@@ -5,6 +5,7 @@ strategy: create
5
5
  {
6
6
  "author": "Jakub Mazanec <jakub@mazanec.dev>",
7
7
  "workspaces": [
8
+ "./apps/*",
8
9
  "./packages/*"
9
10
  ]
10
11
  }
@@ -4,9 +4,10 @@ strategy: merge
4
4
  ---
5
5
  <%
6
6
  let dependencies = [
7
+ CARSON_PACKAGE_NAME,
8
+ CHANGELOG_PACKAGE_NAME,
9
+ TEMPLATE_PACKAGE_NAME,
7
10
  '@changesets/cli',
8
- '@jakubmazanec/carson',
9
- '@jakubmazanec/carson-templates',
10
11
  '@types/node',
11
12
  'del-cli',
12
13
  'patch-package',
@@ -44,9 +45,14 @@ let packageJson = lodash.merge(
44
45
  workspace.config.overrides?.packageJson ?? {},
45
46
  );
46
47
 
47
- if (workspace.projects.find((project) => project.name === '@jakubmazanec/carson')) {
48
+ if (workspace.projects.find((project) => project.name === CARSON_PACKAGE_NAME)) {
48
49
  packageJson.scripts.prepare +=
49
- ' && turbo run build --no-daemon --filter=@jakubmazanec/carson --filter=@jakubmazanec/carson-templates';
50
+ ` && turbo run build --no-daemon --filter=${CARSON_PACKAGE_NAME}`;
51
+ }
52
+
53
+ if (workspace.projects.find((project) => project.name === TEMPLATE_PACKAGE_NAME)) {
54
+ packageJson.scripts.prepare +=
55
+ ` && turbo run build --no-daemon --filter=${TEMPLATE_PACKAGE_NAME}`;
50
56
  }
51
57
 
52
58
  packageJson.scripts.prepare += ' && carson update workspace';