@jakubmazanec/carson-templates 0.1.0-dee6883 → 0.1.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.
- package/dist/main.d.ts +2 -3
- package/dist/main.js +51 -11
- package/dist/main.js.map +1 -1
- package/package.json +4 -3
- package/src/main.ts +52 -12
- package/templates/projects/carson-templates/package.json.ejs +27 -28
- package/templates/projects/changesets-changelog/package.json.ejs +22 -22
- package/templates/projects/eslint-config/package.json.ejs +26 -26
- package/templates/projects/library/package.json.ejs +4 -4
- package/templates/workspace/.eslintrc.cjs.ejs +0 -3
- package/templates/workspace/.github/workflows/release.yaml.ejs +4 -4
- package/templates/workspace/package.json.ejs +62 -43
- package/templates/workspace/turbo.json.ejs +7 -2
package/dist/main.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { type Project, type Workspace } from '@jakubmazanec/carson';
|
|
2
2
|
export { default as lodash } from 'lodash';
|
|
3
|
+
export { default as semver } from 'semver';
|
|
3
4
|
export declare function getMainBranch(workspace: Workspace | Workspace<false>): string | undefined;
|
|
4
5
|
export declare function getDevelopmentBranch(workspace: Workspace | Workspace<false>): string | undefined;
|
|
5
6
|
export declare function getMajorVersion(version: string): number;
|
|
6
|
-
export declare function getDependencies(
|
|
7
|
-
[x: string]: string;
|
|
8
|
-
};
|
|
7
|
+
export declare function getDependencies(dependencies: string[], workspace: Workspace | Workspace<false>): Record<string, string>;
|
|
9
8
|
export declare function getReferences(workspace: Workspace | Workspace<false>, project: Project | Project<false>): {
|
|
10
9
|
path: string;
|
|
11
10
|
}[];
|
package/dist/main.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import semver from 'semver';
|
|
1
2
|
export { default as lodash } from 'lodash';
|
|
3
|
+
export { default as semver } from 'semver';
|
|
2
4
|
const MAIN_BRANCH_NAMES = new Set([
|
|
3
5
|
'main',
|
|
4
6
|
'master'
|
|
@@ -8,6 +10,30 @@ const DEVELOPMENT_BRANCH_NAMES = new Set([
|
|
|
8
10
|
'develop',
|
|
9
11
|
'dev'
|
|
10
12
|
]);
|
|
13
|
+
const DEPENDENCY_VERSIONS = {
|
|
14
|
+
'@changesets/cli': '^2.0.0',
|
|
15
|
+
'@jakubmazanec/carson': '^0.0.0',
|
|
16
|
+
'@jakubmazanec/carson-templates': '^0.0.0',
|
|
17
|
+
'@jest/globals': '^29.0.0',
|
|
18
|
+
'@swc/cli': '^0.1.0',
|
|
19
|
+
'@swc/core': '^1.0.0',
|
|
20
|
+
'@testing-library/jest-dom': '^5.0.0',
|
|
21
|
+
'@types/node': '^16.0.0',
|
|
22
|
+
chokidar: '^3.0.0',
|
|
23
|
+
'cross-env': '^7.0.0',
|
|
24
|
+
'del-cli': '^5.0.0',
|
|
25
|
+
eslint: '^8.0.0',
|
|
26
|
+
jest: '^29.0.0',
|
|
27
|
+
'patch-package': '^6.0.0',
|
|
28
|
+
prettier: '^2.0.0',
|
|
29
|
+
'prettier-plugin-packagejson': '^2.0.0',
|
|
30
|
+
'ts-jest': '^29.0.0',
|
|
31
|
+
'ts-node': '^10.0.0',
|
|
32
|
+
turbo: '^1.0.0',
|
|
33
|
+
typedoc: '^0.24.0',
|
|
34
|
+
'typedoc-plugin-markdown': '^3.0.0',
|
|
35
|
+
typescript: '^5.0.0'
|
|
36
|
+
};
|
|
11
37
|
export function getMainBranch(workspace) {
|
|
12
38
|
var _workspace_repository;
|
|
13
39
|
for (let branch of ((_workspace_repository = workspace.repository) === null || _workspace_repository === void 0 ? void 0 : _workspace_repository.branches) ?? []){
|
|
@@ -29,29 +55,43 @@ export function getDevelopmentBranch(workspace) {
|
|
|
29
55
|
export function getMajorVersion(version) {
|
|
30
56
|
return Number(version.split('.')[0].replace(/\D/, ''));
|
|
31
57
|
}
|
|
32
|
-
export function getDependencies(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
58
|
+
export function getDependencies(dependencies, workspace) {
|
|
59
|
+
const result = {};
|
|
60
|
+
for (const dependency of dependencies){
|
|
61
|
+
const version = DEPENDENCY_VERSIONS[dependency];
|
|
62
|
+
if (version) {
|
|
63
|
+
result[dependency] = version;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const projectNames = workspace.projects.map((project)=>project.name);
|
|
67
|
+
for (const [dependencyName, dependencyVersion] of Object.entries(result)){
|
|
68
|
+
const installedDependency = workspace.allDependencies.find((dependency)=>dependencyName === dependency.name);
|
|
39
69
|
// if the dependency is already installed in the workspace, we might want to use that existing version
|
|
40
70
|
if (installedDependency) {
|
|
41
|
-
|
|
71
|
+
const version = [
|
|
42
72
|
...installedDependency.exactVersions
|
|
43
73
|
].sort().reverse()[0];
|
|
44
74
|
// if the dependency is actually a project in the workspace, we use existing version
|
|
45
75
|
if (projectNames.includes(dependencyName)) {
|
|
46
|
-
|
|
76
|
+
var _semver_prerelease;
|
|
77
|
+
if ((_semver_prerelease = semver.prerelease(version)) === null || _semver_prerelease === void 0 ? void 0 : _semver_prerelease.length) {
|
|
78
|
+
result[dependencyName] = version;
|
|
79
|
+
} else {
|
|
80
|
+
result[dependencyName] = `^${version}`;
|
|
81
|
+
}
|
|
47
82
|
}
|
|
48
83
|
// we use existing version only if major versions match; we don't want the user of this template to be able to overwrite any major version number and use potentially incompatible version
|
|
49
84
|
if (getMajorVersion(version) === getMajorVersion(dependencyVersion)) {
|
|
50
|
-
|
|
85
|
+
var _semver_prerelease1;
|
|
86
|
+
if ((_semver_prerelease1 = semver.prerelease(version)) === null || _semver_prerelease1 === void 0 ? void 0 : _semver_prerelease1.length) {
|
|
87
|
+
result[dependencyName] = version;
|
|
88
|
+
} else {
|
|
89
|
+
result[dependencyName] = `^${version}`;
|
|
90
|
+
}
|
|
51
91
|
}
|
|
52
92
|
}
|
|
53
93
|
}
|
|
54
|
-
return
|
|
94
|
+
return result;
|
|
55
95
|
}
|
|
56
96
|
export function getReferences(workspace, project) {
|
|
57
97
|
let references = [];
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/main.ts"],"sourcesContent":["import {type Project, type Workspace} from '@jakubmazanec/carson';\n\nexport {default as lodash} from 'lodash';\n\nconst MAIN_BRANCH_NAMES = new Set(['main', 'master']);\nconst DEVELOPMENT_BRANCH_NAMES = new Set(['development', 'develop', 'dev']);\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\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\nexport function getMajorVersion(version: string) {\n return Number(version.split('.')[0]!.replace(/\\D/, ''));\n}\n\nexport function getDependencies(
|
|
1
|
+
{"version":3,"sources":["../src/main.ts"],"sourcesContent":["import {type Project, type Workspace} from '@jakubmazanec/carson';\nimport semver from 'semver';\n\nexport {default as lodash} from 'lodash';\nexport {default as semver} from 'semver';\n\nconst MAIN_BRANCH_NAMES = new Set(['main', 'master']);\nconst DEVELOPMENT_BRANCH_NAMES = new Set(['development', 'develop', 'dev']);\n\nconst DEPENDENCY_VERSIONS: Record<string, string> = {\n '@changesets/cli': '^2.0.0',\n '@jakubmazanec/carson': '^0.0.0',\n '@jakubmazanec/carson-templates': '^0.0.0',\n '@jest/globals': '^29.0.0',\n '@swc/cli': '^0.1.0',\n '@swc/core': '^1.0.0',\n '@testing-library/jest-dom': '^5.0.0',\n '@types/node': '^16.0.0',\n chokidar: '^3.0.0',\n 'cross-env': '^7.0.0',\n 'del-cli': '^5.0.0',\n eslint: '^8.0.0',\n jest: '^29.0.0',\n 'patch-package': '^6.0.0',\n prettier: '^2.0.0',\n 'prettier-plugin-packagejson': '^2.0.0',\n 'ts-jest': '^29.0.0',\n 'ts-node': '^10.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};\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\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\nexport function 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 = workspace.projects.map((project) => project.name);\n\n for (const [dependencyName, dependencyVersion] of Object.entries(result)) {\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.includes(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 only if major versions match; we don't want the user of this template to be able to overwrite any major version number and use potentially incompatible version\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\nexport function getReferences(\n workspace: Workspace | Workspace<false>,\n project: Project | Project<false>,\n) {\n let references = [];\n let currentProject = project;\n\n for (let dependency of workspace.allDependencies) {\n for (let project of workspace.projects) {\n if (dependency.name === project.name) {\n for (let dependencyProject of dependency.projects) {\n if (dependencyProject.name === currentProject.name) {\n references.push({\n path: `${currentProject.relativePath\n .split('/')\n .map(() => '..')\n .join('/')}/${project.relativePath}`,\n });\n }\n }\n }\n }\n }\n\n references.sort((a, b) => a.path.localeCompare(b.path));\n\n return references;\n}\n"],"names":["semver","default","lodash","MAIN_BRANCH_NAMES","Set","DEVELOPMENT_BRANCH_NAMES","DEPENDENCY_VERSIONS","chokidar","eslint","jest","prettier","turbo","typedoc","typescript","getMainBranch","workspace","branch","repository","branches","has","undefined","getDevelopmentBranch","getMajorVersion","version","Number","split","replace","getDependencies","dependencies","result","dependency","projectNames","projects","map","project","name","dependencyName","dependencyVersion","Object","entries","installedDependency","allDependencies","find","exactVersions","sort","reverse","includes","prerelease","length","getReferences","references","currentProject","dependencyProject","push","path","relativePath","join","a","b","localeCompare"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jakubmazanec/carson-templates",
|
|
3
|
-
"version": "0.1.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "Collection of Carson templates.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -30,8 +30,9 @@
|
|
|
30
30
|
"typecheck": "tsc --project tsconfig.typecheck.json"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@jakubmazanec/carson": "0.1.0
|
|
34
|
-
"lodash": "^4.17.21"
|
|
33
|
+
"@jakubmazanec/carson": "^0.1.0",
|
|
34
|
+
"lodash": "^4.17.21",
|
|
35
|
+
"semver": "^7.3.6"
|
|
35
36
|
},
|
|
36
37
|
"devDependencies": {
|
|
37
38
|
"@jest/globals": "^29.5.0",
|
package/src/main.ts
CHANGED
|
@@ -1,10 +1,37 @@
|
|
|
1
1
|
import {type Project, type Workspace} from '@jakubmazanec/carson';
|
|
2
|
+
import semver from 'semver';
|
|
2
3
|
|
|
3
4
|
export {default as lodash} from 'lodash';
|
|
5
|
+
export {default as semver} from 'semver';
|
|
4
6
|
|
|
5
7
|
const MAIN_BRANCH_NAMES = new Set(['main', 'master']);
|
|
6
8
|
const DEVELOPMENT_BRANCH_NAMES = new Set(['development', 'develop', 'dev']);
|
|
7
9
|
|
|
10
|
+
const DEPENDENCY_VERSIONS: Record<string, string> = {
|
|
11
|
+
'@changesets/cli': '^2.0.0',
|
|
12
|
+
'@jakubmazanec/carson': '^0.0.0',
|
|
13
|
+
'@jakubmazanec/carson-templates': '^0.0.0',
|
|
14
|
+
'@jest/globals': '^29.0.0',
|
|
15
|
+
'@swc/cli': '^0.1.0',
|
|
16
|
+
'@swc/core': '^1.0.0',
|
|
17
|
+
'@testing-library/jest-dom': '^5.0.0',
|
|
18
|
+
'@types/node': '^16.0.0',
|
|
19
|
+
chokidar: '^3.0.0',
|
|
20
|
+
'cross-env': '^7.0.0',
|
|
21
|
+
'del-cli': '^5.0.0',
|
|
22
|
+
eslint: '^8.0.0',
|
|
23
|
+
jest: '^29.0.0',
|
|
24
|
+
'patch-package': '^6.0.0',
|
|
25
|
+
prettier: '^2.0.0',
|
|
26
|
+
'prettier-plugin-packagejson': '^2.0.0',
|
|
27
|
+
'ts-jest': '^29.0.0',
|
|
28
|
+
'ts-node': '^10.0.0',
|
|
29
|
+
turbo: '^1.0.0',
|
|
30
|
+
typedoc: '^0.24.0',
|
|
31
|
+
'typedoc-plugin-markdown': '^3.0.0',
|
|
32
|
+
typescript: '^5.0.0',
|
|
33
|
+
};
|
|
34
|
+
|
|
8
35
|
export function getMainBranch(workspace: Workspace | Workspace<false>) {
|
|
9
36
|
for (let branch of workspace.repository?.branches ?? []) {
|
|
10
37
|
if (MAIN_BRANCH_NAMES.has(branch)) {
|
|
@@ -29,36 +56,49 @@ export function getMajorVersion(version: string) {
|
|
|
29
56
|
return Number(version.split('.')[0]!.replace(/\D/, ''));
|
|
30
57
|
}
|
|
31
58
|
|
|
32
|
-
export function getDependencies(
|
|
33
|
-
|
|
34
|
-
workspace: Workspace | Workspace<false>,
|
|
35
|
-
) {
|
|
36
|
-
let dependencies = {...defaultDependencies};
|
|
59
|
+
export function getDependencies(dependencies: string[], workspace: Workspace | Workspace<false>) {
|
|
60
|
+
const result: Record<string, string> = {};
|
|
37
61
|
|
|
38
|
-
|
|
62
|
+
for (const dependency of dependencies) {
|
|
63
|
+
const version = DEPENDENCY_VERSIONS[dependency];
|
|
39
64
|
|
|
40
|
-
|
|
41
|
-
|
|
65
|
+
if (version) {
|
|
66
|
+
result[dependency] = version;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const projectNames = workspace.projects.map((project) => project.name);
|
|
71
|
+
|
|
72
|
+
for (const [dependencyName, dependencyVersion] of Object.entries(result)) {
|
|
73
|
+
const installedDependency = workspace.allDependencies.find(
|
|
42
74
|
(dependency) => dependencyName === dependency.name,
|
|
43
75
|
);
|
|
44
76
|
|
|
45
77
|
// if the dependency is already installed in the workspace, we might want to use that existing version
|
|
46
78
|
if (installedDependency) {
|
|
47
|
-
|
|
79
|
+
const version = [...installedDependency.exactVersions].sort().reverse()[0] as string;
|
|
48
80
|
|
|
49
81
|
// if the dependency is actually a project in the workspace, we use existing version
|
|
50
82
|
if (projectNames.includes(dependencyName)) {
|
|
51
|
-
|
|
83
|
+
if (semver.prerelease(version)?.length) {
|
|
84
|
+
result[dependencyName] = version;
|
|
85
|
+
} else {
|
|
86
|
+
result[dependencyName] = `^${version}`;
|
|
87
|
+
}
|
|
52
88
|
}
|
|
53
89
|
|
|
54
90
|
// we use existing version only if major versions match; we don't want the user of this template to be able to overwrite any major version number and use potentially incompatible version
|
|
55
91
|
if (getMajorVersion(version) === getMajorVersion(dependencyVersion)) {
|
|
56
|
-
|
|
92
|
+
if (semver.prerelease(version)?.length) {
|
|
93
|
+
result[dependencyName] = version;
|
|
94
|
+
} else {
|
|
95
|
+
result[dependencyName] = `^${version}`;
|
|
96
|
+
}
|
|
57
97
|
}
|
|
58
98
|
}
|
|
59
99
|
}
|
|
60
100
|
|
|
61
|
-
return
|
|
101
|
+
return result;
|
|
62
102
|
}
|
|
63
103
|
|
|
64
104
|
export function getReferences(
|
|
@@ -2,35 +2,34 @@
|
|
|
2
2
|
to: 'package.json'
|
|
3
3
|
strategy: merge
|
|
4
4
|
---
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
<%
|
|
6
|
+
let packageJson = {
|
|
7
|
+
repository: {
|
|
8
|
+
type: 'git',
|
|
9
|
+
directory: '<%- project.relativePath %>',
|
|
9
10
|
},
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
type: 'module',
|
|
12
|
+
exports: {
|
|
13
|
+
'.': './dist/main.js',
|
|
14
|
+
'./package.json': './package.json',
|
|
14
15
|
},
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
"format": "prettier . --write --ignore-unknown --ignore-path ../../.prettierignore",
|
|
25
|
-
"lint": "eslint .",
|
|
26
|
-
"test": "cross-env NODE_OPTIONS=--experimental-vm-modules jest --passWithNoTests",
|
|
27
|
-
"typecheck": "tsc --project tsconfig.typecheck.json"
|
|
16
|
+
files: ['dist', 'src', 'templates'],
|
|
17
|
+
scripts: {
|
|
18
|
+
build: 'swc src -d dist && tsc',
|
|
19
|
+
clean: 'del-cli coverage dist *.tsbuildinfo',
|
|
20
|
+
document: 'typedoc --options typedoc.config.cjs',
|
|
21
|
+
format: 'prettier . --write --ignore-unknown --ignore-path ../../.prettierignore',
|
|
22
|
+
lint: 'eslint .',
|
|
23
|
+
test: 'cross-env NODE_OPTIONS=--experimental-vm-modules jest --passWithNoTests',
|
|
24
|
+
typecheck: 'tsc --project tsconfig.typecheck.json',
|
|
28
25
|
},
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
devDependencies: {
|
|
27
|
+
'@jest/globals': '^29.5.0',
|
|
31
28
|
},
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
}
|
|
29
|
+
packageManager: 'npm@8.19.4',
|
|
30
|
+
engines: {
|
|
31
|
+
node: '>=16.20.0',
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
-%>
|
|
35
|
+
<%- JSON.stringify(packageJson) %>
|
|
@@ -2,27 +2,27 @@
|
|
|
2
2
|
to: 'package.json'
|
|
3
3
|
strategy: merge
|
|
4
4
|
---
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
<%
|
|
6
|
+
let packageJson = {
|
|
7
|
+
repository: {
|
|
8
|
+
type: 'git',
|
|
9
|
+
directory: '<%- project.relativePath %>',
|
|
9
10
|
},
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
"lint": "eslint .",
|
|
21
|
-
"test": "jest --passWithNoTests",
|
|
22
|
-
"typecheck": "tsc --project tsconfig.typecheck.json"
|
|
11
|
+
type: 'commonjs',
|
|
12
|
+
exports: './dist/main.js',
|
|
13
|
+
files: ['dist', 'src'],
|
|
14
|
+
scripts: {
|
|
15
|
+
build: 'swc src -d dist && tsc',
|
|
16
|
+
clean: 'del-cli coverage dist *.tsbuildinfo',
|
|
17
|
+
format: 'prettier . --write --ignore-unknown --ignore-path ../../.prettierignore',
|
|
18
|
+
lint: 'eslint .',
|
|
19
|
+
test: 'jest --passWithNoTests',
|
|
20
|
+
typecheck: 'tsc --project tsconfig.typecheck.json',
|
|
23
21
|
},
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
}
|
|
22
|
+
packageManager: 'npm@8.19.4',
|
|
23
|
+
engines: {
|
|
24
|
+
node: '>=16.20.0',
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
-%>
|
|
28
|
+
<%- JSON.stringify(packageJson) %>
|
|
@@ -2,32 +2,32 @@
|
|
|
2
2
|
to: 'package.json'
|
|
3
3
|
strategy: merge
|
|
4
4
|
---
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
<%
|
|
6
|
+
let packageJson = {
|
|
7
|
+
repository: {
|
|
8
|
+
type: 'git',
|
|
9
|
+
directory: '<%- project.relativePath %>',
|
|
9
10
|
},
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
type: 'commonjs',
|
|
12
|
+
exports: {
|
|
13
|
+
'.': './dist/main.js',
|
|
14
|
+
'./nextjs': './dist/presets/nextjs.js',
|
|
15
|
+
'./nodejs': './dist/presets/nodejs.js',
|
|
16
|
+
'./prettier': './dist/presets/prettier.js',
|
|
16
17
|
},
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
"lint": "eslint .",
|
|
26
|
-
"test": "jest --passWithNoTests",
|
|
27
|
-
"typecheck": "tsc --project tsconfig.typecheck.json"
|
|
18
|
+
files: ['dist', 'src'],
|
|
19
|
+
scripts: {
|
|
20
|
+
build: 'swc src -d dist && tsc',
|
|
21
|
+
clean: 'del-cli coverage dist *.tsbuildinfo',
|
|
22
|
+
format: 'prettier . --write --ignore-unknown --ignore-path ../../.prettierignore',
|
|
23
|
+
lint: 'eslint .',
|
|
24
|
+
test: 'jest --passWithNoTests',
|
|
25
|
+
typecheck: 'tsc --project tsconfig.typecheck.json',
|
|
28
26
|
},
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
}
|
|
27
|
+
packageManager: 'npm@8.19.4',
|
|
28
|
+
engines: {
|
|
29
|
+
node: '>=16.20.0',
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
-%>
|
|
33
|
+
<%- JSON.stringify(packageJson) %>
|
|
@@ -3,9 +3,9 @@ to: 'package.json'
|
|
|
3
3
|
strategy: merge
|
|
4
4
|
---
|
|
5
5
|
<%
|
|
6
|
-
let developmentDependencies = getDependencies(
|
|
7
|
-
'@jest/globals'
|
|
8
|
-
|
|
6
|
+
let developmentDependencies = getDependencies([
|
|
7
|
+
'@jest/globals',
|
|
8
|
+
], workspace);
|
|
9
9
|
let packageJson = lodash.merge(
|
|
10
10
|
{
|
|
11
11
|
repository: {
|
|
@@ -17,7 +17,7 @@ let packageJson = lodash.merge(
|
|
|
17
17
|
files: ['dist', 'src'],
|
|
18
18
|
scripts: {
|
|
19
19
|
build: 'swc src -d dist && tsc',
|
|
20
|
-
clean: 'del-cli dist *.tsbuildinfo',
|
|
20
|
+
clean: 'del-cli coverage dist *.tsbuildinfo',
|
|
21
21
|
document: 'typedoc --options typedoc.config.cjs',
|
|
22
22
|
format:
|
|
23
23
|
'prettier . --write --ignore-unknown --ignore-path ../../.prettierignore',
|
|
@@ -142,7 +142,7 @@ jobs:
|
|
|
142
142
|
with:
|
|
143
143
|
access_token: ${{ secrets.GITHUB_TOKEN }}
|
|
144
144
|
|
|
145
|
-
- uses: actions/checkout@
|
|
145
|
+
- uses: actions/checkout@v3
|
|
146
146
|
with:
|
|
147
147
|
token: ${{ secrets.PAT }}
|
|
148
148
|
fetch-depth: 0
|
|
@@ -152,7 +152,7 @@ jobs:
|
|
|
152
152
|
git config user.email "bot@mazanec.dev"
|
|
153
153
|
git config user.name "Bot"
|
|
154
154
|
|
|
155
|
-
- uses: actions/setup-node@
|
|
155
|
+
- uses: actions/setup-node@v3
|
|
156
156
|
with:
|
|
157
157
|
node-version: 16
|
|
158
158
|
registry-url: 'https://registry.npmjs.org'
|
|
@@ -235,7 +235,7 @@ jobs:
|
|
|
235
235
|
with:
|
|
236
236
|
access_token: ${{ secrets.GITHUB_TOKEN }}
|
|
237
237
|
|
|
238
|
-
- uses: actions/checkout@
|
|
238
|
+
- uses: actions/checkout@v3
|
|
239
239
|
with:
|
|
240
240
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
241
241
|
fetch-depth: 0
|
|
@@ -245,7 +245,7 @@ jobs:
|
|
|
245
245
|
git config user.email "bot@mazanec.dev"
|
|
246
246
|
git config user.name "Bot"
|
|
247
247
|
|
|
248
|
-
- uses: actions/setup-node@
|
|
248
|
+
- uses: actions/setup-node@v3
|
|
249
249
|
with:
|
|
250
250
|
node-version: 16
|
|
251
251
|
registry-url: 'https://registry.npmjs.org'
|
|
@@ -3,48 +3,67 @@ to: 'package.json'
|
|
|
3
3
|
strategy: merge
|
|
4
4
|
---
|
|
5
5
|
<%
|
|
6
|
-
let developmentDependencies = getDependencies(
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
6
|
+
let developmentDependencies = getDependencies(
|
|
7
|
+
[
|
|
8
|
+
'@changesets/cli',
|
|
9
|
+
'@jakubmazanec/carson',
|
|
10
|
+
'@jakubmazanec/carson-templates',
|
|
11
|
+
'@swc/cli',
|
|
12
|
+
'@swc/core',
|
|
13
|
+
'@testing-library/jest-dom',
|
|
14
|
+
'@types/node',
|
|
15
|
+
'chokidar',
|
|
16
|
+
'cross-env',
|
|
17
|
+
'del-cli',
|
|
18
|
+
'eslint',
|
|
19
|
+
'jest',
|
|
20
|
+
'patch-package',
|
|
21
|
+
'prettier',
|
|
22
|
+
'prettier-plugin-packagejson',
|
|
23
|
+
'ts-jest',
|
|
24
|
+
'ts-node',
|
|
25
|
+
'turbo',
|
|
26
|
+
'typedoc',
|
|
27
|
+
'typedoc-plugin-markdown',
|
|
28
|
+
'typescript',
|
|
29
|
+
],
|
|
30
|
+
workspace,
|
|
31
|
+
);
|
|
32
|
+
let packageJson = lodash.merge(
|
|
33
|
+
{
|
|
34
|
+
private: true,
|
|
35
|
+
scripts: {
|
|
36
|
+
build: 'turbo run build --no-daemon',
|
|
37
|
+
changeset: 'changeset',
|
|
38
|
+
clean: 'turbo run clean --no-daemon',
|
|
39
|
+
document: 'turbo run document --no-daemon',
|
|
40
|
+
format: 'turbo run format --no-daemon && prettier ./*.* --write --ignore-unknown',
|
|
41
|
+
lint: 'turbo run lint --no-daemon',
|
|
42
|
+
prepare: 'patch-package',
|
|
43
|
+
reinstall: 'npm run uninstall && npm install',
|
|
44
|
+
test: 'turbo run test --no-daemon',
|
|
45
|
+
typecheck: 'turbo run typecheck --no-daemon',
|
|
46
|
+
uninstall: 'del-cli ./**/node_modules ./package-lock.json',
|
|
47
|
+
},
|
|
48
|
+
devDependencies: developmentDependencies,
|
|
49
|
+
packageManager: 'npm@8.19.4',
|
|
50
|
+
engines: {
|
|
51
|
+
node: '>=16.20.0',
|
|
52
|
+
},
|
|
44
53
|
},
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
54
|
+
workspace.config.overrides?.packageJson ?? {},
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
if (workspace.projects.find((project) => project.name === '@jakubmazanec/carson')) {
|
|
58
|
+
packageJson.scripts.prepare +=
|
|
59
|
+
' && turbo run build --no-daemon --filter=@jakubmazanec/carson --filter=@jakubmazanec/carson-templates';
|
|
50
60
|
}
|
|
61
|
+
|
|
62
|
+
packageJson.scripts.prepare += ' && carson update workspace';
|
|
63
|
+
-%>
|
|
64
|
+
<%- JSON.stringify(packageJson) %>
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
@@ -7,7 +7,7 @@ let turboConfig = {
|
|
|
7
7
|
$schema: 'https://turborepo.org/schema.json',
|
|
8
8
|
pipeline: {
|
|
9
9
|
build: {
|
|
10
|
-
dependsOn: ['^build', '
|
|
10
|
+
dependsOn: ['^build', 'codegen'],
|
|
11
11
|
outputs: ['build/**', 'dist/**'],
|
|
12
12
|
},
|
|
13
13
|
clean: {
|
|
@@ -16,6 +16,11 @@ let turboConfig = {
|
|
|
16
16
|
codegen: {
|
|
17
17
|
cache: false,
|
|
18
18
|
},
|
|
19
|
+
develop: {
|
|
20
|
+
dependsOn: ['codegen'],
|
|
21
|
+
cache: false,
|
|
22
|
+
persistent: true,
|
|
23
|
+
},
|
|
19
24
|
document: {
|
|
20
25
|
dependsOn: ['^build', 'codegen'],
|
|
21
26
|
outputs: ['docs/**'],
|
|
@@ -28,7 +33,7 @@ let turboConfig = {
|
|
|
28
33
|
outputs: [],
|
|
29
34
|
},
|
|
30
35
|
test: {
|
|
31
|
-
dependsOn: ['^build', '
|
|
36
|
+
dependsOn: ['^build', 'typecheck', 'lint'],
|
|
32
37
|
outputs: ['coverage/**'],
|
|
33
38
|
},
|
|
34
39
|
typecheck: {
|