pipecraft 0.29.3 → 0.36.14
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/README.md +128 -54
- package/dist/cli/index.d.ts +3 -3
- package/dist/cli/index.js +68 -25
- package/dist/cli/index.js.map +1 -1
- package/dist/generators/init.tpl.d.ts +4 -4
- package/dist/generators/init.tpl.d.ts.map +1 -1
- package/dist/generators/init.tpl.js +214 -108
- package/dist/generators/init.tpl.js.map +1 -1
- package/dist/generators/workflows.tpl.d.ts +9 -9
- package/dist/generators/workflows.tpl.d.ts.map +1 -1
- package/dist/generators/workflows.tpl.js +33 -36
- package/dist/generators/workflows.tpl.js.map +1 -1
- package/dist/templates/actions/calculate-version.yml.tpl.d.ts +7 -4
- package/dist/templates/actions/calculate-version.yml.tpl.d.ts.map +1 -1
- package/dist/templates/actions/calculate-version.yml.tpl.js +49 -23
- package/dist/templates/actions/calculate-version.yml.tpl.js.map +1 -1
- package/dist/templates/actions/create-pr.yml.tpl.d.ts +5 -2
- package/dist/templates/actions/create-pr.yml.tpl.d.ts.map +1 -1
- package/dist/templates/actions/create-pr.yml.tpl.js +14 -8
- package/dist/templates/actions/create-pr.yml.tpl.js.map +1 -1
- package/dist/templates/actions/create-release.yml.tpl.d.ts +5 -2
- package/dist/templates/actions/create-release.yml.tpl.d.ts.map +1 -1
- package/dist/templates/actions/create-release.yml.tpl.js +16 -11
- package/dist/templates/actions/create-release.yml.tpl.js.map +1 -1
- package/dist/templates/actions/create-tag.yml.tpl.d.ts +5 -2
- package/dist/templates/actions/create-tag.yml.tpl.d.ts.map +1 -1
- package/dist/templates/actions/create-tag.yml.tpl.js +13 -9
- package/dist/templates/actions/create-tag.yml.tpl.js.map +1 -1
- package/dist/templates/actions/detect-changes.yml.tpl.d.ts +17 -51
- package/dist/templates/actions/detect-changes.yml.tpl.d.ts.map +1 -1
- package/dist/templates/actions/detect-changes.yml.tpl.js +130 -110
- package/dist/templates/actions/detect-changes.yml.tpl.js.map +1 -1
- package/dist/templates/actions/manage-branch.yml.tpl.d.ts +5 -2
- package/dist/templates/actions/manage-branch.yml.tpl.d.ts.map +1 -1
- package/dist/templates/actions/manage-branch.yml.tpl.js +13 -9
- package/dist/templates/actions/manage-branch.yml.tpl.js.map +1 -1
- package/dist/templates/actions/promote-branch.yml.tpl.d.ts +5 -2
- package/dist/templates/actions/promote-branch.yml.tpl.d.ts.map +1 -1
- package/dist/templates/actions/promote-branch.yml.tpl.js +39 -92
- package/dist/templates/actions/promote-branch.yml.tpl.js.map +1 -1
- package/dist/templates/release-it.cjs.tpl.d.ts +1 -1
- package/dist/templates/release-it.cjs.tpl.d.ts.map +1 -1
- package/dist/templates/release-it.cjs.tpl.js +38 -29
- package/dist/templates/release-it.cjs.tpl.js.map +1 -1
- package/dist/templates/workflows/enforce-pr-target.yml.tpl.d.ts +1 -1
- package/dist/templates/workflows/enforce-pr-target.yml.tpl.d.ts.map +1 -1
- package/dist/templates/workflows/enforce-pr-target.yml.tpl.js +2 -3
- package/dist/templates/workflows/enforce-pr-target.yml.tpl.js.map +1 -1
- package/dist/templates/workflows/pipeline.yml.tpl.d.ts +2 -2
- package/dist/templates/workflows/pipeline.yml.tpl.d.ts.map +1 -1
- package/dist/templates/workflows/pipeline.yml.tpl.js +337 -84
- package/dist/templates/workflows/pipeline.yml.tpl.js.map +1 -1
- package/dist/templates/workflows/pr-title-check.yml.tpl.d.ts +1 -1
- package/dist/templates/workflows/pr-title-check.yml.tpl.d.ts.map +1 -1
- package/dist/templates/workflows/pr-title-check.yml.tpl.js +101 -22
- package/dist/templates/workflows/pr-title-check.yml.tpl.js.map +1 -1
- package/dist/templates/workflows/shared/index.d.ts +4 -2
- package/dist/templates/workflows/shared/index.d.ts.map +1 -1
- package/dist/templates/workflows/shared/index.js +4 -2
- package/dist/templates/workflows/shared/index.js.map +1 -1
- package/dist/templates/workflows/shared/managed-workflow.d.ts +32 -0
- package/dist/templates/workflows/shared/managed-workflow.d.ts.map +1 -0
- package/dist/templates/workflows/shared/managed-workflow.js +51 -0
- package/dist/templates/workflows/shared/managed-workflow.js.map +1 -0
- package/dist/templates/workflows/shared/operations-changes.d.ts +13 -3
- package/dist/templates/workflows/shared/operations-changes.d.ts.map +1 -1
- package/dist/templates/workflows/shared/operations-changes.js +42 -16
- package/dist/templates/workflows/shared/operations-changes.js.map +1 -1
- package/dist/templates/workflows/shared/operations-domain-jobs.d.ts +18 -1
- package/dist/templates/workflows/shared/operations-domain-jobs.d.ts.map +1 -1
- package/dist/templates/workflows/shared/operations-domain-jobs.js +142 -17
- package/dist/templates/workflows/shared/operations-domain-jobs.js.map +1 -1
- package/dist/templates/workflows/shared/operations-gate.d.ts +6 -0
- package/dist/templates/workflows/shared/operations-gate.d.ts.map +1 -0
- package/dist/templates/workflows/shared/operations-gate.js +116 -0
- package/dist/templates/workflows/shared/operations-gate.js.map +1 -0
- package/dist/templates/workflows/shared/operations-header.d.ts +11 -1
- package/dist/templates/workflows/shared/operations-header.d.ts.map +1 -1
- package/dist/templates/workflows/shared/operations-header.js +66 -7
- package/dist/templates/workflows/shared/operations-header.js.map +1 -1
- package/dist/templates/workflows/shared/operations-tag-promote.d.ts +4 -3
- package/dist/templates/workflows/shared/operations-tag-promote.d.ts.map +1 -1
- package/dist/templates/workflows/shared/operations-tag-promote.js +144 -33
- package/dist/templates/workflows/shared/operations-tag-promote.js.map +1 -1
- package/dist/templates/workflows/shared/operations-version.d.ts +3 -2
- package/dist/templates/workflows/shared/operations-version.d.ts.map +1 -1
- package/dist/templates/workflows/shared/operations-version.js +17 -16
- package/dist/templates/workflows/shared/operations-version.js.map +1 -1
- package/dist/templates/yaml-format-utils.d.ts.map +1 -1
- package/dist/templates/yaml-format-utils.js +1 -5
- package/dist/templates/yaml-format-utils.js.map +1 -1
- package/dist/types/index.d.ts +65 -53
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/action-reference.d.ts +73 -0
- package/dist/utils/action-reference.d.ts.map +1 -0
- package/dist/utils/action-reference.js +120 -0
- package/dist/utils/action-reference.js.map +1 -0
- package/dist/utils/ast-path-operations.d.ts +3 -3
- package/dist/utils/ast-path-operations.d.ts.map +1 -1
- package/dist/utils/ast-path-operations.js +58 -17
- package/dist/utils/ast-path-operations.js.map +1 -1
- package/dist/utils/config.d.ts +16 -5
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +69 -12
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/github-setup.d.ts +7 -7
- package/dist/utils/github-setup.d.ts.map +1 -1
- package/dist/utils/github-setup.js +84 -63
- package/dist/utils/github-setup.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/messaging.d.ts +2 -2
- package/dist/utils/messaging.d.ts.map +1 -1
- package/dist/utils/messaging.js +12 -8
- package/dist/utils/messaging.js.map +1 -1
- package/dist/utils/preflight.d.ts +2 -2
- package/dist/utils/preflight.d.ts.map +1 -1
- package/dist/utils/preflight.js +43 -41
- package/dist/utils/preflight.js.map +1 -1
- package/dist/utils/versioning.d.ts +1 -1
- package/dist/utils/versioning.d.ts.map +1 -1
- package/dist/utils/versioning.js +10 -10
- package/dist/utils/versioning.js.map +1 -1
- package/dist/utils/workflow-semantics.d.ts +61 -0
- package/dist/utils/workflow-semantics.d.ts.map +1 -0
- package/dist/utils/workflow-semantics.js +230 -0
- package/dist/utils/workflow-semantics.js.map +1 -0
- package/package.json +12 -4
- package/src/generators/init.tpl.ts +275 -128
- package/src/generators/workflows.tpl.ts +54 -57
- package/dist/templates/actions/detect-changes-nx.yml.tpl.d.ts +0 -32
- package/dist/templates/actions/detect-changes-nx.yml.tpl.d.ts.map +0 -1
- package/dist/templates/actions/detect-changes-nx.yml.tpl.js +0 -227
- package/dist/templates/actions/detect-changes-nx.yml.tpl.js.map +0 -1
- package/dist/templates/workflows/pipeline-nx.yml.tpl.d.ts +0 -22
- package/dist/templates/workflows/pipeline-nx.yml.tpl.d.ts.map +0 -1
- package/dist/templates/workflows/pipeline-nx.yml.tpl.js +0 -196
- package/dist/templates/workflows/pipeline-nx.yml.tpl.js.map +0 -1
- package/dist/utils/idempotency.d.ts +0 -187
- package/dist/utils/idempotency.d.ts.map +0 -1
- package/dist/utils/idempotency.js +0 -304
- package/dist/utils/idempotency.js.map +0 -1
|
@@ -51,8 +51,8 @@ export interface PreflightChecks {
|
|
|
51
51
|
* Check if PipeCraft configuration file exists.
|
|
52
52
|
*
|
|
53
53
|
* Uses cosmiconfig to search for configuration files in standard locations:
|
|
54
|
-
* - .pipecraftrc
|
|
55
|
-
* - .pipecraftrc (
|
|
54
|
+
* - .pipecraftrc (YAML or JSON, recommended)
|
|
55
|
+
* - .pipecraftrc.json (legacy, still supported)
|
|
56
56
|
* - pipecraft.config.js
|
|
57
57
|
* - package.json (pipecraft key)
|
|
58
58
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/utils/preflight.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,MAAM,EAAE,OAAO,CAAA;IAEf,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAA;IAEf,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,YAAY,EAAE,eAAe,CAAA;IAE7B,0DAA0D;IAC1D,WAAW,EAAE,eAAe,CAAA;IAE5B,4CAA4C;IAC5C,SAAS,EAAE,eAAe,CAAA;IAE1B,wCAAwC;IACxC,YAAY,EAAE,eAAe,CAAA;IAE7B,8CAA8C;IAC9C,iBAAiB,EAAE,eAAe,CAAA;CACnC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,IAAI,eAAe,CAgBnD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,IAAI,eAAe,CAuDlD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,cAAc,IAAI,eAAe,CAkBhD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,iBAAiB,IAAI,eAAe,CAgCnD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,sBAAsB,IAAI,eAAe,CAyCxD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,GAAE,MAAiB,GAAG,eAAe,CAkB/E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CAQpD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,eAAe,GAAG;IAC/D,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CACrB,
|
|
1
|
+
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/utils/preflight.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,MAAM,EAAE,OAAO,CAAA;IAEf,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAA;IAEf,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,YAAY,EAAE,eAAe,CAAA;IAE7B,0DAA0D;IAC1D,WAAW,EAAE,eAAe,CAAA;IAE5B,4CAA4C;IAC5C,SAAS,EAAE,eAAe,CAAA;IAE1B,wCAAwC;IACxC,YAAY,EAAE,eAAe,CAAA;IAE7B,8CAA8C;IAC9C,iBAAiB,EAAE,eAAe,CAAA;CACnC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,iBAAiB,IAAI,eAAe,CAgBnD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,IAAI,eAAe,CAuDlD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,cAAc,IAAI,eAAe,CAkBhD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,iBAAiB,IAAI,eAAe,CAgCnD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,sBAAsB,IAAI,eAAe,CAyCxD;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,GAAE,MAAiB,GAAG,eAAe,CAkB/E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,CAQpD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,eAAe,GAAG;IAC/D,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CACrB,CAoDA"}
|
package/dist/utils/preflight.js
CHANGED
|
@@ -15,16 +15,16 @@
|
|
|
15
15
|
*
|
|
16
16
|
* @module utils/preflight
|
|
17
17
|
*/
|
|
18
|
-
import { existsSync, mkdirSync, writeFileSync, unlinkSync } from 'fs';
|
|
19
18
|
import { execSync } from 'child_process';
|
|
20
|
-
import { join } from 'path';
|
|
21
19
|
import { cosmiconfigSync } from 'cosmiconfig';
|
|
20
|
+
import { existsSync, mkdirSync, unlinkSync, writeFileSync } from 'fs';
|
|
21
|
+
import { join } from 'path';
|
|
22
22
|
/**
|
|
23
23
|
* Check if PipeCraft configuration file exists.
|
|
24
24
|
*
|
|
25
25
|
* Uses cosmiconfig to search for configuration files in standard locations:
|
|
26
|
-
* - .pipecraftrc
|
|
27
|
-
* - .pipecraftrc (
|
|
26
|
+
* - .pipecraftrc (YAML or JSON, recommended)
|
|
27
|
+
* - .pipecraftrc.json (legacy, still supported)
|
|
28
28
|
* - pipecraft.config.js
|
|
29
29
|
* - package.json (pipecraft key)
|
|
30
30
|
*
|
|
@@ -79,16 +79,16 @@ export function checkConfigExists() {
|
|
|
79
79
|
* ```
|
|
80
80
|
*/
|
|
81
81
|
export function checkConfigValid() {
|
|
82
|
-
const explorer = cosmiconfigSync('pipecraft');
|
|
83
|
-
const result = explorer.search();
|
|
84
|
-
if (!result) {
|
|
85
|
-
return {
|
|
86
|
-
passed: false,
|
|
87
|
-
message: 'No configuration file found',
|
|
88
|
-
suggestion: "Run 'pipecraft init' first"
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
82
|
try {
|
|
83
|
+
const explorer = cosmiconfigSync('pipecraft');
|
|
84
|
+
const result = explorer.search();
|
|
85
|
+
if (!result) {
|
|
86
|
+
return {
|
|
87
|
+
passed: false,
|
|
88
|
+
message: 'No configuration file found',
|
|
89
|
+
suggestion: "Run 'pipecraft init' first"
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
92
|
const config = result.config;
|
|
93
93
|
// Check for required fields
|
|
94
94
|
const requiredFields = ['ciProvider', 'branchFlow', 'domains'];
|
|
@@ -105,7 +105,7 @@ export function checkConfigValid() {
|
|
|
105
105
|
return {
|
|
106
106
|
passed: false,
|
|
107
107
|
message: 'Config has no domains configured',
|
|
108
|
-
suggestion:
|
|
108
|
+
suggestion: 'Add at least one domain to your config file'
|
|
109
109
|
};
|
|
110
110
|
}
|
|
111
111
|
return {
|
|
@@ -417,33 +417,35 @@ export function formatPreflightResults(checks) {
|
|
|
417
417
|
}
|
|
418
418
|
}
|
|
419
419
|
// Provide next steps if all checks passed
|
|
420
|
-
const nextSteps = allPassed
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
420
|
+
const nextSteps = allPassed
|
|
421
|
+
? [
|
|
422
|
+
'Your environment is ready to generate workflows!',
|
|
423
|
+
'',
|
|
424
|
+
'📋 Next steps:',
|
|
425
|
+
'',
|
|
426
|
+
'1. Review and customize the generated workflows:',
|
|
427
|
+
' - Add test commands to test-* jobs',
|
|
428
|
+
' - Add deployment logic to deploy-* jobs (if deployable: true)',
|
|
429
|
+
' - Add remote tests to remote-test-* jobs (if remoteTestable: true)',
|
|
430
|
+
'',
|
|
431
|
+
'2. Validate the workflow:',
|
|
432
|
+
' npx pipecraft validate # Check config and workflow',
|
|
433
|
+
'',
|
|
434
|
+
'3. Configure GitHub permissions for auto-merge:',
|
|
435
|
+
' pipecraft setup-github # Interactive setup',
|
|
436
|
+
' pipecraft setup-github --apply # Auto-apply (no prompts)',
|
|
437
|
+
'',
|
|
438
|
+
'4. Commit and push:',
|
|
439
|
+
' git add .github/workflows/ .pipecraftrc',
|
|
440
|
+
' git commit -m "feat: add pipecraft workflows"',
|
|
441
|
+
' git push',
|
|
442
|
+
'',
|
|
443
|
+
'5. Watch your first pipeline run at:',
|
|
444
|
+
` https://github.com/${getRepoInfo()}/actions`,
|
|
445
|
+
'',
|
|
446
|
+
'⚠️ Important: Set up GitHub permissions (step 3) BEFORE pushing to ensure workflows run correctly!'
|
|
447
|
+
]
|
|
448
|
+
: undefined;
|
|
447
449
|
return {
|
|
448
450
|
allPassed,
|
|
449
451
|
output: results.join('\n'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/utils/preflight.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/utils/preflight.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versioning.d.ts","sourceRoot":"","sources":["../../src/utils/versioning.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"versioning.d.ts","sourceRoot":"","sources":["../../src/utils/versioning.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAExD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAiB;IAE/B;;;;OAIG;gBACS,MAAM,EAAE,eAAe;IAInC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,uBAAuB,IAAI,MAAM;IAmEjC;;;;;;;;;;;;;;;OAeG;IACH,wBAAwB,IAAI,MAAM;IA8BlC;;;;;;;;OAQG;IACH,mBAAmB,IAAI,MAAM;IAO7B;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,sBAAsB,IAAI,IAAI;IAkC9B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,wBAAwB;IAsBhC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,2BAA2B,IAAI,OAAO;IAmBtC;;;;;;;;;;;;;OAaG;IACH,iBAAiB,IAAI,MAAM;IAa3B;;;;;;;;;;;;;;;OAeG;IACH,oBAAoB,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;CAwB1D"}
|
package/dist/utils/versioning.js
CHANGED
|
@@ -76,8 +76,8 @@ export class VersionManager {
|
|
|
76
76
|
git: {
|
|
77
77
|
requireCleanWorkingDir: false,
|
|
78
78
|
commit: false,
|
|
79
|
-
pushArgs: [
|
|
80
|
-
tagMatch:
|
|
79
|
+
pushArgs: ['--tags'],
|
|
80
|
+
tagMatch: 'v[0-9]*.[0-9]*.[0-9]*'
|
|
81
81
|
},
|
|
82
82
|
github: {
|
|
83
83
|
release: false
|
|
@@ -88,10 +88,10 @@ export class VersionManager {
|
|
|
88
88
|
skipChecks: true
|
|
89
89
|
},
|
|
90
90
|
hooks: {
|
|
91
|
-
|
|
91
|
+
'after:release': 'echo ${version} > .release-version'
|
|
92
92
|
},
|
|
93
93
|
plugins: {
|
|
94
|
-
|
|
94
|
+
'@release-it/conventional-changelog': {
|
|
95
95
|
whatBump: (commits, options) => {
|
|
96
96
|
// Import DEFAULT_PREFIXES from the release-it config
|
|
97
97
|
const { DEFAULT_PREFIXES } = require('../../.release-it.cjs');
|
|
@@ -100,9 +100,9 @@ export class VersionManager {
|
|
|
100
100
|
const bumpRules = { ...defaults, ...this.config.versioning?.bumpRules };
|
|
101
101
|
let breakings = 0;
|
|
102
102
|
let features = 0;
|
|
103
|
-
|
|
103
|
+
const levelSet = ['major', 'minor', 'patch', 'ignore'];
|
|
104
104
|
// eslint-disable-next-line prefer-spread
|
|
105
|
-
|
|
105
|
+
const level = Math.min.apply(Math, commits.map(commit => {
|
|
106
106
|
let level = levelSet.indexOf(bumpRules[commit.type] || 'ignore');
|
|
107
107
|
level = level < 0 ? 3 : level;
|
|
108
108
|
if (commit.notes.length > 0) {
|
|
@@ -258,12 +258,12 @@ npx commitlint --edit $1`;
|
|
|
258
258
|
// Merge with existing scripts, preserving any user-defined ones
|
|
259
259
|
packageJson.scripts = {
|
|
260
260
|
...packageJson.scripts,
|
|
261
|
-
|
|
261
|
+
release: 'release-it',
|
|
262
262
|
'release:dry': 'release-it --dry-run',
|
|
263
263
|
'version:check': 'release-it --dry-run',
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
264
|
+
changelog: 'conventional-changelog -p angular -i CHANGELOG.md -s',
|
|
265
|
+
commit: 'git add . && git commit',
|
|
266
|
+
prepare: 'husky install'
|
|
267
267
|
};
|
|
268
268
|
writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2));
|
|
269
269
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versioning.js","sourceRoot":"","sources":["../../src/utils/versioning.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAA;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAG3B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,cAAc;IACjB,MAAM,CAAiB;IAE/B;;;;OAIG;IACH,YAAY,MAAuB;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,uBAAuB;QACrB,MAAM,aAAa,GAAG;YACpB,GAAG,EAAE;gBACH,sBAAsB,EAAE,KAAK;gBAC7B,MAAM,EAAE,KAAK;gBACb,QAAQ,EAAE,CAAC,QAAQ,CAAC;gBACpB,QAAQ,EAAE,uBAAuB;aAClC;YACD,MAAM,EAAE;gBACN,OAAO,EAAE,KAAK;aACf;YACD,GAAG,EAAE;gBACH,aAAa,EAAE,IAAI;gBACnB,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,IAAI;aACjB;YACD,KAAK,EAAE;gBACL,eAAe,EAAE,oCAAoC;aACtD;YACD,OAAO,EAAE;gBACP,oCAAoC,EAAE;oBACpC,QAAQ,EAAE,CAAC,OAAc,EAAE,OAAY,EAAE,EAAE;wBACzC,qDAAqD;wBACrD,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAA;wBAC7D,MAAM,QAAQ,GAAG,gBAAgB,CAAA;wBAEjC,qCAAqC;wBACrC,MAAM,SAAS,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,CAAA;wBAEvE,IAAI,SAAS,GAAG,CAAC,CAAA;wBACjB,IAAI,QAAQ,GAAG,CAAC,CAAA;wBAChB,
|
|
1
|
+
{"version":3,"file":"versioning.js","sourceRoot":"","sources":["../../src/utils/versioning.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow Semantic Validation
|
|
3
|
+
*
|
|
4
|
+
* Validates the semantic correctness of generated GitHub Actions workflows.
|
|
5
|
+
* This includes:
|
|
6
|
+
* - Job dependency validation (no circular dependencies)
|
|
7
|
+
* - Missing job reference detection
|
|
8
|
+
* - Output reference validation
|
|
9
|
+
* - Unreachable job detection
|
|
10
|
+
*
|
|
11
|
+
* @module utils/workflow-semantics
|
|
12
|
+
*/
|
|
13
|
+
export interface SemanticError {
|
|
14
|
+
type: 'error';
|
|
15
|
+
code: string;
|
|
16
|
+
message: string;
|
|
17
|
+
location?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface SemanticWarning {
|
|
20
|
+
type: 'warning';
|
|
21
|
+
code: string;
|
|
22
|
+
message: string;
|
|
23
|
+
location?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface SemanticValidationResult {
|
|
26
|
+
valid: boolean;
|
|
27
|
+
errors: SemanticError[];
|
|
28
|
+
warnings: SemanticWarning[];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Validate job dependencies in a workflow.
|
|
32
|
+
*
|
|
33
|
+
* Checks for:
|
|
34
|
+
* 1. Circular dependencies between jobs
|
|
35
|
+
* 2. Missing job references in needs arrays
|
|
36
|
+
* 3. Invalid output references
|
|
37
|
+
* 4. Unreachable jobs (warning)
|
|
38
|
+
*
|
|
39
|
+
* @param yamlContent - The workflow YAML content as a string
|
|
40
|
+
* @returns Validation result with errors and warnings
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* const result = validateJobDependencies(workflowYaml)
|
|
45
|
+
* if (!result.valid) {
|
|
46
|
+
* console.error('Validation errors:', result.errors)
|
|
47
|
+
* }
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare function validateJobDependencies(yamlContent: string): SemanticValidationResult;
|
|
51
|
+
/**
|
|
52
|
+
* Validate a complete workflow for semantic correctness.
|
|
53
|
+
*
|
|
54
|
+
* This is the main entry point for workflow validation. It combines
|
|
55
|
+
* job dependency validation with other semantic checks.
|
|
56
|
+
*
|
|
57
|
+
* @param yamlContent - The workflow YAML content as a string
|
|
58
|
+
* @returns Validation result with errors and warnings
|
|
59
|
+
*/
|
|
60
|
+
export declare function validateWorkflowSemantics(yamlContent: string): SemanticValidationResult;
|
|
61
|
+
//# sourceMappingURL=workflow-semantics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-semantics.d.ts","sourceRoot":"","sources":["../../src/utils/workflow-semantics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,aAAa,EAAE,CAAA;IACvB,QAAQ,EAAE,eAAe,EAAE,CAAA;CAC5B;AA6MD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,wBAAwB,CAyBrF;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,wBAAwB,CAEvF"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow Semantic Validation
|
|
3
|
+
*
|
|
4
|
+
* Validates the semantic correctness of generated GitHub Actions workflows.
|
|
5
|
+
* This includes:
|
|
6
|
+
* - Job dependency validation (no circular dependencies)
|
|
7
|
+
* - Missing job reference detection
|
|
8
|
+
* - Output reference validation
|
|
9
|
+
* - Unreachable job detection
|
|
10
|
+
*
|
|
11
|
+
* @module utils/workflow-semantics
|
|
12
|
+
*/
|
|
13
|
+
import { parse as parseYAML } from 'yaml';
|
|
14
|
+
/**
|
|
15
|
+
* Parse a workflow YAML string into a structured format for validation.
|
|
16
|
+
*/
|
|
17
|
+
function parseWorkflow(yamlContent) {
|
|
18
|
+
const parsed = parseYAML(yamlContent);
|
|
19
|
+
const jobs = {};
|
|
20
|
+
if (parsed.jobs && typeof parsed.jobs === 'object') {
|
|
21
|
+
for (const [jobName, jobDef] of Object.entries(parsed.jobs)) {
|
|
22
|
+
const job = jobDef;
|
|
23
|
+
let needs = [];
|
|
24
|
+
if (job.needs) {
|
|
25
|
+
if (Array.isArray(job.needs)) {
|
|
26
|
+
needs = job.needs.map(String);
|
|
27
|
+
}
|
|
28
|
+
else if (typeof job.needs === 'string') {
|
|
29
|
+
needs = [job.needs];
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// Handle if condition - can be string or boolean in YAML
|
|
33
|
+
let ifCondition;
|
|
34
|
+
if (job.if !== undefined) {
|
|
35
|
+
ifCondition = String(job.if);
|
|
36
|
+
}
|
|
37
|
+
jobs[jobName] = {
|
|
38
|
+
name: jobName,
|
|
39
|
+
needs,
|
|
40
|
+
if: ifCondition,
|
|
41
|
+
outputs: job.outputs && typeof job.outputs === 'object'
|
|
42
|
+
? job.outputs
|
|
43
|
+
: undefined
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
name: parsed.name,
|
|
49
|
+
jobs
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Detect circular dependencies in job needs.
|
|
54
|
+
*/
|
|
55
|
+
function detectCircularDependencies(jobs) {
|
|
56
|
+
const errors = [];
|
|
57
|
+
const visited = new Set();
|
|
58
|
+
const recursionStack = new Set();
|
|
59
|
+
const path = [];
|
|
60
|
+
function dfs(jobName) {
|
|
61
|
+
if (recursionStack.has(jobName)) {
|
|
62
|
+
// Found cycle - construct the cycle path
|
|
63
|
+
const cycleStart = path.indexOf(jobName);
|
|
64
|
+
const cyclePath = [...path.slice(cycleStart), jobName].join(' → ');
|
|
65
|
+
errors.push({
|
|
66
|
+
type: 'error',
|
|
67
|
+
code: 'CIRCULAR_DEPENDENCY',
|
|
68
|
+
message: `Circular dependency detected: ${cyclePath}`,
|
|
69
|
+
location: `jobs.${jobName}`
|
|
70
|
+
});
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
if (visited.has(jobName)) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
visited.add(jobName);
|
|
77
|
+
recursionStack.add(jobName);
|
|
78
|
+
path.push(jobName);
|
|
79
|
+
const job = jobs[jobName];
|
|
80
|
+
if (job) {
|
|
81
|
+
for (const dep of job.needs) {
|
|
82
|
+
if (jobs[dep]) {
|
|
83
|
+
dfs(dep);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
path.pop();
|
|
88
|
+
recursionStack.delete(jobName);
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
for (const jobName of Object.keys(jobs)) {
|
|
92
|
+
if (!visited.has(jobName)) {
|
|
93
|
+
dfs(jobName);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return errors;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Detect missing job references in needs arrays.
|
|
100
|
+
*/
|
|
101
|
+
function detectMissingJobReferences(jobs) {
|
|
102
|
+
const errors = [];
|
|
103
|
+
const jobNames = new Set(Object.keys(jobs));
|
|
104
|
+
for (const [jobName, job] of Object.entries(jobs)) {
|
|
105
|
+
for (const dep of job.needs) {
|
|
106
|
+
if (!jobNames.has(dep)) {
|
|
107
|
+
errors.push({
|
|
108
|
+
type: 'error',
|
|
109
|
+
code: 'MISSING_JOB_REFERENCE',
|
|
110
|
+
message: `Job "${jobName}" references non-existent job "${dep}" in needs`,
|
|
111
|
+
location: `jobs.${jobName}.needs`
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return errors;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Detect invalid output references in job conditions or steps.
|
|
120
|
+
*/
|
|
121
|
+
function detectInvalidOutputReferences(jobs, yamlContent) {
|
|
122
|
+
const errors = [];
|
|
123
|
+
// Match patterns like needs.jobName.outputs.outputName
|
|
124
|
+
const outputRefPattern = /needs\.([a-zA-Z0-9_-]+)\.outputs\.([a-zA-Z0-9_-]+)/g;
|
|
125
|
+
const matches = yamlContent.matchAll(outputRefPattern);
|
|
126
|
+
for (const match of matches) {
|
|
127
|
+
const [fullMatch, jobName, outputName] = match;
|
|
128
|
+
// Check if the referenced job exists
|
|
129
|
+
if (!jobs[jobName]) {
|
|
130
|
+
errors.push({
|
|
131
|
+
type: 'error',
|
|
132
|
+
code: 'INVALID_OUTPUT_REFERENCE',
|
|
133
|
+
message: `Output reference "${fullMatch}" refers to non-existent job "${jobName}"`,
|
|
134
|
+
location: fullMatch
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return errors;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Detect unreachable jobs (jobs that can never run due to impossible conditions).
|
|
142
|
+
* This is a warning, not an error.
|
|
143
|
+
*/
|
|
144
|
+
function detectUnreachableJobs(jobs) {
|
|
145
|
+
const warnings = [];
|
|
146
|
+
const jobNames = new Set(Object.keys(jobs));
|
|
147
|
+
for (const [jobName, job] of Object.entries(jobs)) {
|
|
148
|
+
// Check if job depends on non-existent jobs (already an error, but also unreachable)
|
|
149
|
+
const hasMissingDep = job.needs.some(dep => !jobNames.has(dep));
|
|
150
|
+
// Check for obvious impossible conditions
|
|
151
|
+
if (job.if) {
|
|
152
|
+
// Detect conditions that are always false
|
|
153
|
+
if (job.if === 'false' || job.if === '${{ false }}') {
|
|
154
|
+
warnings.push({
|
|
155
|
+
type: 'warning',
|
|
156
|
+
code: 'UNREACHABLE_JOB',
|
|
157
|
+
message: `Job "${jobName}" has condition that is always false`,
|
|
158
|
+
location: `jobs.${jobName}.if`
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
// Detect self-referencing conditions (job referencing its own results)
|
|
162
|
+
if (job.if.includes(`needs.${jobName}.`)) {
|
|
163
|
+
warnings.push({
|
|
164
|
+
type: 'warning',
|
|
165
|
+
code: 'SELF_REFERENCING_CONDITION',
|
|
166
|
+
message: `Job "${jobName}" references its own results in condition`,
|
|
167
|
+
location: `jobs.${jobName}.if`
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return warnings;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Validate job dependencies in a workflow.
|
|
176
|
+
*
|
|
177
|
+
* Checks for:
|
|
178
|
+
* 1. Circular dependencies between jobs
|
|
179
|
+
* 2. Missing job references in needs arrays
|
|
180
|
+
* 3. Invalid output references
|
|
181
|
+
* 4. Unreachable jobs (warning)
|
|
182
|
+
*
|
|
183
|
+
* @param yamlContent - The workflow YAML content as a string
|
|
184
|
+
* @returns Validation result with errors and warnings
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```typescript
|
|
188
|
+
* const result = validateJobDependencies(workflowYaml)
|
|
189
|
+
* if (!result.valid) {
|
|
190
|
+
* console.error('Validation errors:', result.errors)
|
|
191
|
+
* }
|
|
192
|
+
* ```
|
|
193
|
+
*/
|
|
194
|
+
export function validateJobDependencies(yamlContent) {
|
|
195
|
+
const errors = [];
|
|
196
|
+
const warnings = [];
|
|
197
|
+
try {
|
|
198
|
+
const workflow = parseWorkflow(yamlContent);
|
|
199
|
+
// Run all validations
|
|
200
|
+
errors.push(...detectCircularDependencies(workflow.jobs));
|
|
201
|
+
errors.push(...detectMissingJobReferences(workflow.jobs));
|
|
202
|
+
errors.push(...detectInvalidOutputReferences(workflow.jobs, yamlContent));
|
|
203
|
+
warnings.push(...detectUnreachableJobs(workflow.jobs));
|
|
204
|
+
}
|
|
205
|
+
catch (err) {
|
|
206
|
+
errors.push({
|
|
207
|
+
type: 'error',
|
|
208
|
+
code: 'PARSE_ERROR',
|
|
209
|
+
message: `Failed to parse workflow YAML: ${err instanceof Error ? err.message : String(err)}`
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
return {
|
|
213
|
+
valid: errors.length === 0,
|
|
214
|
+
errors,
|
|
215
|
+
warnings
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Validate a complete workflow for semantic correctness.
|
|
220
|
+
*
|
|
221
|
+
* This is the main entry point for workflow validation. It combines
|
|
222
|
+
* job dependency validation with other semantic checks.
|
|
223
|
+
*
|
|
224
|
+
* @param yamlContent - The workflow YAML content as a string
|
|
225
|
+
* @returns Validation result with errors and warnings
|
|
226
|
+
*/
|
|
227
|
+
export function validateWorkflowSemantics(yamlContent) {
|
|
228
|
+
return validateJobDependencies(yamlContent);
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=workflow-semantics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-semantics.js","sourceRoot":"","sources":["../../src/utils/workflow-semantics.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pipecraft",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.36.14",
|
|
4
4
|
"description": "Automated CI/CD pipeline generator for trunk-based development. Generates intelligent GitHub Actions workflows with domain-based change detection, semantic versioning, and branch flow management. Full documentation: https://pipecraft.thecraftlab.dev",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
],
|
|
15
15
|
"repository": {
|
|
16
16
|
"type": "git",
|
|
17
|
-
"url": "https://github.com/
|
|
17
|
+
"url": "https://github.com/the-craftlab/pipecraft.git"
|
|
18
18
|
},
|
|
19
19
|
"homepage": "https://pipecraft.thecraftlab.dev",
|
|
20
20
|
"bugs": {
|
|
21
|
-
"url": "https://github.com/
|
|
21
|
+
"url": "https://github.com/the-craftlab/pipecraft/issues"
|
|
22
22
|
},
|
|
23
23
|
"keywords": [
|
|
24
24
|
"ci-cd",
|
|
@@ -62,7 +62,13 @@
|
|
|
62
62
|
"docs:dev": "cd docs && pnpm run start",
|
|
63
63
|
"docs:serve": "cd docs && pnpm run serve",
|
|
64
64
|
"docs:typedoc": "cd docs && pnpm run typedoc",
|
|
65
|
-
"docs:deploy": "npm run build && cd docs && pnpm run typedoc && pnpm run build"
|
|
65
|
+
"docs:deploy": "npm run build && cd docs && pnpm run typedoc && pnpm run build",
|
|
66
|
+
"examples:store-git": "./scripts/store-example-git-repos.sh",
|
|
67
|
+
"examples:activate": "node tests/scripts/activate-example-repos.mjs",
|
|
68
|
+
"examples:deactivate": "node tests/scripts/deactivate-example-repos.mjs",
|
|
69
|
+
"sync-actions": "tsx scripts/sync-actions.ts",
|
|
70
|
+
"sync-actions:check": "tsx scripts/sync-actions.ts --check",
|
|
71
|
+
"sync-actions:verify": "tsx scripts/sync-actions.ts --verify"
|
|
66
72
|
},
|
|
67
73
|
"devDependencies": {
|
|
68
74
|
"@eslint/eslintrc": "^3.3.1",
|
|
@@ -86,8 +92,10 @@
|
|
|
86
92
|
"inquirer": "^12.10.0",
|
|
87
93
|
"prettier": "^2.8.8",
|
|
88
94
|
"release-it": "^18.1.2",
|
|
95
|
+
"tsx": "^4.20.6",
|
|
89
96
|
"typedoc": "^0.28.14",
|
|
90
97
|
"typedoc-plugin-markdown": "^4.9.0",
|
|
98
|
+
"typescript": "^5.9.3",
|
|
91
99
|
"vitest": "^2.1.8"
|
|
92
100
|
},
|
|
93
101
|
"dependencies": {
|