@smoothbricks/cli 0.10.0 → 0.10.2
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/cli.js +5 -2
- package/dist/github-ci/index.js +4 -3
- package/dist/lib/conflict-markers.d.ts.map +1 -1
- package/dist/lib/workspace.d.ts +1 -1
- package/dist/lib/workspace.d.ts.map +1 -1
- package/dist/monorepo/ci-workflow.d.ts.map +1 -1
- package/dist/monorepo/ci-workflow.js +1 -0
- package/dist/monorepo/lockfile.d.ts +2 -0
- package/dist/monorepo/lockfile.d.ts.map +1 -1
- package/dist/monorepo/lockfile.js +13 -2
- package/dist/monorepo/managed-files.d.ts +1 -0
- package/dist/monorepo/managed-files.d.ts.map +1 -1
- package/dist/monorepo/managed-files.js +12 -5
- package/dist/monorepo/publish-workflow.d.ts.map +1 -1
- package/dist/monorepo/publish-workflow.js +1 -0
- package/dist/monorepo/tool-validation.d.ts.map +1 -1
- package/dist/monorepo/tool-validation.js +20 -7
- package/dist/release/github-release.d.ts +2 -2
- package/dist/wrangler/prepare-env.d.ts.map +1 -1
- package/dist/wrangler/prepare-env.js +1 -1
- package/dist/wrangler/scaffold.d.ts.map +1 -1
- package/dist/wrangler/scaffold.js +1 -1
- package/managed/raw/tooling/direnv/setup-environment.ts +2 -8
- package/managed/raw/tooling/git-hooks/pre-commit.sh +6 -0
- package/package.json +3 -13
- package/src/cli.ts +7 -4
- package/src/github-ci/index.ts +5 -3
- package/src/monorepo/__tests__/ci-workflow.test.ts +2 -0
- package/src/monorepo/__tests__/publish-workflow.test.ts +12 -4
- package/src/monorepo/ci-workflow.ts +2 -0
- package/src/monorepo/lockfile.test.ts +157 -0
- package/src/monorepo/lockfile.ts +15 -2
- package/src/monorepo/managed-files.test.ts +13 -0
- package/src/monorepo/managed-files.ts +20 -5
- package/src/monorepo/package-policy.test.ts +7 -37
- package/src/monorepo/publish-workflow.ts +2 -0
- package/src/monorepo/tool-validation.test.ts +59 -24
- package/src/monorepo/tool-validation.ts +21 -7
- package/src/monorepo/wrangler.test.ts +9 -2
- package/src/release/__tests__/fixture-repo.test.ts +8 -0
- package/src/release/__tests__/helpers/fixture-repo.ts +28 -8
- package/src/wrangler/prepare-env.ts +14 -4
- package/src/wrangler/scaffold.ts +8 -3
package/dist/cli.js
CHANGED
|
@@ -67,9 +67,12 @@ function buildProgram() {
|
|
|
67
67
|
const { validateCommitMessageFile } = await import('./monorepo/index.js');
|
|
68
68
|
validateCommitMessageFile(commitMsgFile, options, await findRepoRoot());
|
|
69
69
|
});
|
|
70
|
-
monorepo
|
|
70
|
+
monorepo
|
|
71
|
+
.command('sync-bun-lockfile-versions')
|
|
72
|
+
.option('--stage', 'stage bun.lock when versions were resynced (pre-commit self-heal); quiet when clean')
|
|
73
|
+
.action(async (options) => {
|
|
71
74
|
const { syncBunLockfileVersions } = await import('./monorepo/index.js');
|
|
72
|
-
syncBunLockfileVersions(await findRepoRoot());
|
|
75
|
+
syncBunLockfileVersions(await findRepoRoot(), options.stage ? { log: false, stage: true } : {});
|
|
73
76
|
});
|
|
74
77
|
monorepo
|
|
75
78
|
.command('list-release-packages')
|
package/dist/github-ci/index.js
CHANGED
|
@@ -185,9 +185,10 @@ function nxProjectList(output) {
|
|
|
185
185
|
return Array.isArray(parsed) ? parsed.filter((project) => typeof project === 'string') : [];
|
|
186
186
|
}
|
|
187
187
|
function recordValue(value) {
|
|
188
|
-
return value
|
|
189
|
-
|
|
190
|
-
|
|
188
|
+
return isRecord(value) ? value : undefined;
|
|
189
|
+
}
|
|
190
|
+
function isRecord(value) {
|
|
191
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
191
192
|
}
|
|
192
193
|
async function createGithubStatus(name, step) {
|
|
193
194
|
await postGithubStatus(name, 'pending', `Running ${name}...`, step);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conflict-markers.d.ts","sourceRoot":"","sources":["../../src/lib/conflict-markers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,gDAAgD,CAAC;AAIrF,MAAM,WAAW,iBAAiB;IAChC,gDAAgD;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,oEAAoE;AACpE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAStD;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,CACP,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClE;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,MAAM,EAAO,GACvB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAW9B;AAED,uFAAuF;AACvF,qBAAa,oBAAqB,SAAQ,KAAK;IAE3C,QAAQ,CAAC,IAAI,EAAE,iBAAiB,EAAE;
|
|
1
|
+
{"version":3,"file":"conflict-markers.d.ts","sourceRoot":"","sources":["../../src/lib/conflict-markers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,gDAAgD,CAAC;AAIrF,MAAM,WAAW,iBAAiB;IAChC,gDAAgD;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,oEAAoE;AACpE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAStD;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,CACP,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClE;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,MAAM,EACZ,SAAS,GAAE,MAAM,EAAO,GACvB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAW9B;AAED,uFAAuF;AACvF,qBAAa,oBAAqB,SAAQ,KAAK;IAE3C,QAAQ,CAAC,IAAI,EAAE,iBAAiB,EAAE;IADpC,YACW,IAAI,EAAE,iBAAiB,EAAE,EAClC,OAAO,EAAE,MAAM,EAIhB;CACF;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKlH;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAkB9B;AAED,4EAA4E;AAC5E,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,EAAE,CA2BhE;AAED,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAElE"}
|
package/dist/lib/workspace.d.ts
CHANGED
|
@@ -30,7 +30,7 @@ export interface RepositoryInfo {
|
|
|
30
30
|
type: string;
|
|
31
31
|
url: string;
|
|
32
32
|
}
|
|
33
|
-
export declare const workspaceDependencyFields: readonly [
|
|
33
|
+
export declare const workspaceDependencyFields: readonly ['dependencies', 'devDependencies', 'peerDependencies', 'optionalDependencies'];
|
|
34
34
|
export declare function listPublicPackages(root: string): PackageInfo[];
|
|
35
35
|
export declare function listReleasePackages(root: string, rootPackage?: PackageInfo | null): PackageInfo[];
|
|
36
36
|
export declare function rootRepositoryInfo(root: string): RepositoryInfo | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/lib/workspace.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,WAAY,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,eAAO,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/lib/workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci-workflow.d.ts","sourceRoot":"","sources":["../../src/monorepo/ci-workflow.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ci-workflow.d.ts","sourceRoot":"","sources":["../../src/monorepo/ci-workflow.ts"],"names":[],"mappings":"AAEA,oBAAY,kBAAkB;IAC5B,QAAQ,aAAa;IACrB,WAAW,iBAAiB;IAC5B,SAAS,gBAAgB;IACzB,cAAc,qBAAqB;IACnC,KAAK,UAAU;IACf,IAAI,SAAS;IACb,SAAS,eAAe;IACxB,MAAM,WAAW;IACjB,WAAW,kBAAkB;IAC7B,cAAc,qBAAqB;IACnC,aAAa,oBAAoB;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAID,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,2BAA2B,GAAG,cAAc,EAAE,CAmBvF;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,MAAM,CAGjF"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export interface SyncBunLockfileVersionsOptions {
|
|
2
2
|
log?: boolean;
|
|
3
|
+
/** `git add` bun.lock after rewriting it, for the pre-commit self-heal path. */
|
|
4
|
+
stage?: boolean;
|
|
3
5
|
}
|
|
4
6
|
export declare function syncBunLockfileVersions(root: string, options?: SyncBunLockfileVersionsOptions): number;
|
|
5
7
|
export declare function validateBunLockfileVersions(root: string): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lockfile.d.ts","sourceRoot":"","sources":["../../src/monorepo/lockfile.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,8BAA8B;IAC7C,GAAG,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"lockfile.d.ts","sourceRoot":"","sources":["../../src/monorepo/lockfile.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,8BAA8B;IAC7C,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,gFAAgF;IAChF,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAiBD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,8BAAmC,GAAG,MAAM,CAuD1G;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiChE"}
|
|
@@ -11,6 +11,12 @@ import { escapeRegex, getWorkspacePackages } from '../lib/workspace.js';
|
|
|
11
11
|
// - https://github.com/oven-sh/bun/issues/18906
|
|
12
12
|
// - https://github.com/oven-sh/bun/issues/20477
|
|
13
13
|
// - https://github.com/oven-sh/bun/issues/20829
|
|
14
|
+
//
|
|
15
|
+
// Any `bun install` rewrites the workspace versions from package.json, reverting
|
|
16
|
+
// this sync between releases. The pre-commit hook therefore runs
|
|
17
|
+
// `smoo monorepo sync-bun-lockfile-versions --stage` on every commit so drift is
|
|
18
|
+
// healed at the commit that would otherwise carry it — validation must never
|
|
19
|
+
// fail a committer for drift a routine `bun install` introduced.
|
|
14
20
|
export function syncBunLockfileVersions(root, options = {}) {
|
|
15
21
|
const log = options.log ?? true;
|
|
16
22
|
const lockfilePath = join(root, 'bun.lock');
|
|
@@ -53,9 +59,14 @@ export function syncBunLockfileVersions(root, options = {}) {
|
|
|
53
59
|
}
|
|
54
60
|
if (updated > 0) {
|
|
55
61
|
writeFileSync(lockfilePath, lockfile);
|
|
62
|
+
if (options.stage) {
|
|
63
|
+
execSync('git add bun.lock', { cwd: root, stdio: ['pipe', 'pipe', 'pipe'] });
|
|
64
|
+
}
|
|
56
65
|
}
|
|
57
|
-
if (log) {
|
|
58
|
-
console.log(updated > 0
|
|
66
|
+
if (log || updated > 0) {
|
|
67
|
+
console.log(updated > 0
|
|
68
|
+
? `Updated ${updated} workspace version(s) in bun.lock${options.stage ? ' (staged)' : ''}`
|
|
69
|
+
: 'All workspace versions already in sync.');
|
|
59
70
|
}
|
|
60
71
|
return updated;
|
|
61
72
|
}
|
|
@@ -27,6 +27,7 @@ export declare const INLINE_LOCAL_END = "# smoo-local-end";
|
|
|
27
27
|
interface InlineLocalBlock {
|
|
28
28
|
anchor: string;
|
|
29
29
|
lines: string;
|
|
30
|
+
markerIndent?: string;
|
|
30
31
|
}
|
|
31
32
|
/** Pull inline local blocks out of a managed section, returning the section
|
|
32
33
|
* with each block (and its markers) removed, plus the extracted blocks in
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"managed-files.d.ts","sourceRoot":"","sources":["../../src/monorepo/managed-files.ts"],"names":[],"mappings":"AAUA;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,yEAAyE,CAAC;AAU3G,sFAAsF;AACtF,iBAAS,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAIlF;AAED,uCAAuC;AACvC,eAAO,MAAM,wBAAwB,0BAAoB,CAAC;AAE1D;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"managed-files.d.ts","sourceRoot":"","sources":["../../src/monorepo/managed-files.ts"],"names":[],"mappings":"AAUA;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,yEAAyE,CAAC;AAU3G,sFAAsF;AACtF,iBAAS,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAIlF;AAED,uCAAuC;AACvC,eAAO,MAAM,wBAAwB,0BAAoB,CAAC;AAE1D;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;8BAE8B;AAC9B,iBAAS,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,gBAAgB,EAAE,CAAA;CAAE,CAkCxG;AAED,wCAAwC;AACxC,eAAO,MAAM,+BAA+B,iCAA2B,CAAC;AAExE;+EAC+E;AAC/E,iBAAS,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAqBtF;AAED,yCAAyC;AACzC,eAAO,MAAM,gCAAgC,kCAA4B,CAAC;AAE1E,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,iBAAiB,GAAG,SAAS,GAAG,YAAY,CAAC;CACxG;AA8GD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,EAAE,CAG/F;AAkLD,wBAAgB,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAIxD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQzD"}
|
|
@@ -57,7 +57,12 @@ function extractInlineLocalBlocks(managed) {
|
|
|
57
57
|
if (i >= lines.length) {
|
|
58
58
|
throw new Error(`${INLINE_LOCAL_BEGIN} anchored on "${anchor}" has no matching ${INLINE_LOCAL_END}`);
|
|
59
59
|
}
|
|
60
|
-
|
|
60
|
+
const markerIndent = line.slice(0, line.length - line.trimStart().length);
|
|
61
|
+
blocks.push({
|
|
62
|
+
anchor,
|
|
63
|
+
lines: blockLines.join('\n'),
|
|
64
|
+
...(markerIndent === '' ? {} : { markerIndent }),
|
|
65
|
+
});
|
|
61
66
|
i += 1; // skip the END marker line itself
|
|
62
67
|
continue;
|
|
63
68
|
}
|
|
@@ -80,7 +85,8 @@ function reinsertInlineLocalBlocks(content, blocks) {
|
|
|
80
85
|
throw new Error(`${INLINE_LOCAL_BEGIN} block anchored on "${block.anchor}" no longer matches any line in the updated ` +
|
|
81
86
|
'template — reconcile the repo-owned block manually');
|
|
82
87
|
}
|
|
83
|
-
|
|
88
|
+
const markerIndent = block.markerIndent ?? '';
|
|
89
|
+
lines.splice(index + 1, 0, `${markerIndent}${INLINE_LOCAL_BEGIN}`, ...block.lines.split('\n'), `${markerIndent}${INLINE_LOCAL_END}`);
|
|
84
90
|
}
|
|
85
91
|
return lines.join('\n');
|
|
86
92
|
}
|
|
@@ -325,9 +331,10 @@ function readCiPushBranches(packageJson) {
|
|
|
325
331
|
return branches.filter((branch) => typeof branch === 'string' && branch.length > 0);
|
|
326
332
|
}
|
|
327
333
|
function recordValue(value) {
|
|
328
|
-
return value
|
|
329
|
-
|
|
330
|
-
|
|
334
|
+
return isRecord(value) ? value : undefined;
|
|
335
|
+
}
|
|
336
|
+
function isRecord(value) {
|
|
337
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
331
338
|
}
|
|
332
339
|
function renderYamlFlowList(values) {
|
|
333
340
|
return JSON.stringify(values);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish-workflow.d.ts","sourceRoot":"","sources":["../../src/monorepo/publish-workflow.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"publish-workflow.d.ts","sourceRoot":"","sources":["../../src/monorepo/publish-workflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-validation.d.ts","sourceRoot":"","sources":["../../src/monorepo/tool-validation.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAyB,MAAM,qBAAqB,CAAC;AAU9E,MAAM,WAAW,UAAU;IACzB,sBAAsB,EAAE,OAAO,CAAC;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,UAAU,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"tool-validation.d.ts","sourceRoot":"","sources":["../../src/monorepo/tool-validation.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,WAAW,EAAyB,MAAM,qBAAqB,CAAC;AAU9E,MAAM,WAAW,UAAU;IACzB,sBAAsB,EAAE,OAAO,CAAC;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,UAAU,CAAC;CACpB;AAiCD,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKzE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQvD;AAED,wBAAsB,8BAA8B,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBtG;AAoCD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAkBlF;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAY/D;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CA0B7D;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,GAAG,IAAI,GAAG,MAAM,CAyBvG;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAoB/E;AAED,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,GAAG,MAAM,CAWhF;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAmB3D;AA0DD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAQzD"}
|
|
@@ -5,11 +5,11 @@ import { getOrCreateRecord, readJsonObject, recordProperty, setStringProperty, w
|
|
|
5
5
|
import { readPackageJsonObject } from '../lib/workspace.js';
|
|
6
6
|
const rootDevDependencies = [
|
|
7
7
|
{ name: '@biomejs/biome', fallbackVersion: '^2.3.5', minimumVersion: '2.3.0', prefix: '^' },
|
|
8
|
-
{ name: '@nx/js', fallbackVersion: '
|
|
8
|
+
{ name: '@nx/js', fallbackVersion: '23.1.0', minimumVersion: '23.1.0' },
|
|
9
9
|
{
|
|
10
10
|
name: '@smoothbricks/nx-plugin',
|
|
11
|
-
fallbackVersion: '^0.0
|
|
12
|
-
minimumVersion: '0.0
|
|
11
|
+
fallbackVersion: '^0.3.0',
|
|
12
|
+
minimumVersion: '0.3.0',
|
|
13
13
|
prefix: '^',
|
|
14
14
|
useWorkspaceRangeInCodebase: true,
|
|
15
15
|
},
|
|
@@ -21,8 +21,11 @@ const rootDevDependencies = [
|
|
|
21
21
|
prefix: '^',
|
|
22
22
|
useWorkspaceRangeInCodebase: true,
|
|
23
23
|
},
|
|
24
|
-
{ name: 'nx', fallbackVersion: '
|
|
24
|
+
{ name: 'nx', fallbackVersion: '23.1.0', minimumVersion: '23.1.0' },
|
|
25
25
|
{ name: 'prettier', fallbackVersion: '^3.6.1', minimumVersion: '3.6.0', prefix: '^' },
|
|
26
|
+
{ name: 'ttsc', fallbackVersion: '^0.18.4', minimumVersion: '0.18.4', prefix: '^' },
|
|
27
|
+
// Nx and typescript-eslint still load the TypeScript 5.x JavaScript API.
|
|
28
|
+
// Compilation is exclusively delegated to ttsc by the Nx plugin targets.
|
|
26
29
|
{ name: 'typescript', fallbackVersion: '^5.9.3', minimumVersion: '5.9.0', prefix: '^' },
|
|
27
30
|
];
|
|
28
31
|
const cliPackageName = '@smoothbricks/cli';
|
|
@@ -287,16 +290,26 @@ function formatExpectedDependency(policy, dependency) {
|
|
|
287
290
|
}
|
|
288
291
|
export function readToolContext(root) {
|
|
289
292
|
const rootPackage = readPackageJsonObject(join(root, 'package.json'));
|
|
290
|
-
|
|
293
|
+
const toolingPackage = readJsonObject(join(root, 'tooling', 'package.json'));
|
|
294
|
+
const configuredCliRange = recordProperty(toolingPackage ?? {}, 'dependencies')?.[cliPackageName];
|
|
295
|
+
return {
|
|
296
|
+
rootPackage,
|
|
297
|
+
policy: toolPolicy(rootPackage, typeof configuredCliRange === 'string' ? configuredCliRange : null),
|
|
298
|
+
};
|
|
291
299
|
}
|
|
292
|
-
function toolPolicy(rootPackage) {
|
|
300
|
+
function toolPolicy(rootPackage, configuredCliRange) {
|
|
293
301
|
const name = typeof rootPackage?.name === 'string' ? rootPackage.name : null;
|
|
294
302
|
const isCodebase = isSmoothBricksCodebasePackageName(name ?? undefined);
|
|
295
303
|
const toolingName = toolingPackageName(name);
|
|
304
|
+
// A locally linked prerelease can be newer than every published CLI. Keep an existing
|
|
305
|
+
// installable range instead of rewriting the consumer manifest to an unpublished version.
|
|
306
|
+
const publishedCliRange = cliPackageVersion.includes('-') && configuredCliRange && parseVersion(configuredCliRange)
|
|
307
|
+
? configuredCliRange
|
|
308
|
+
: `^${cliPackageVersion}`;
|
|
296
309
|
return {
|
|
297
310
|
isSmoothBricksCodebase: isCodebase,
|
|
298
311
|
toolingPackageName: toolingName,
|
|
299
|
-
cliDependencyRange: isCodebase ? 'workspace:*' :
|
|
312
|
+
cliDependencyRange: isCodebase ? 'workspace:*' : publishedCliRange,
|
|
300
313
|
};
|
|
301
314
|
}
|
|
302
315
|
function toolingPackageName(rootName) {
|
|
@@ -18,7 +18,6 @@ export interface GithubReleaseWriteShell {
|
|
|
18
18
|
export declare function renderNxProjectChangelogContents(input: RenderNxProjectChangelogInput): Promise<string>;
|
|
19
19
|
export declare function createOrUpdateGithubRelease(pkg: ReleasePackageInfo, contents: string, shell: GithubReleaseWriteShell): Promise<void>;
|
|
20
20
|
export declare function nxProjectChangelogArgs(pkg: ReleasePackageInfo, previousTag: string | null, dryRun: boolean): {
|
|
21
|
-
from: string;
|
|
22
21
|
version: string;
|
|
23
22
|
projects: string[];
|
|
24
23
|
gitCommit: false;
|
|
@@ -28,8 +27,8 @@ export declare function nxProjectChangelogArgs(pkg: ReleasePackageInfo, previous
|
|
|
28
27
|
createRelease: false;
|
|
29
28
|
deleteVersionPlans: false;
|
|
30
29
|
dryRun: boolean;
|
|
30
|
+
from: string;
|
|
31
31
|
} | {
|
|
32
|
-
firstRelease: boolean;
|
|
33
32
|
version: string;
|
|
34
33
|
projects: string[];
|
|
35
34
|
gitCommit: false;
|
|
@@ -39,6 +38,7 @@ export declare function nxProjectChangelogArgs(pkg: ReleasePackageInfo, previous
|
|
|
39
38
|
createRelease: false;
|
|
40
39
|
deleteVersionPlans: false;
|
|
41
40
|
dryRun: boolean;
|
|
41
|
+
firstRelease: boolean;
|
|
42
42
|
};
|
|
43
43
|
export declare function projectChangelogContents(result: ProjectChangelogLookupResult, projectName: string): string;
|
|
44
44
|
export declare function githubReleaseCommandArgs(tag: string, notesFile: string, releaseExists: boolean, version: string): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare-env.d.ts","sourceRoot":"","sources":["../../src/wrangler/prepare-env.ts"],"names":[],"mappings":"AAyBA,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEjE;
|
|
1
|
+
{"version":3,"file":"prepare-env.d.ts","sourceRoot":"","sources":["../../src/wrangler/prepare-env.ts"],"names":[],"mappings":"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"}
|
|
@@ -295,7 +295,7 @@ export async function ensureNamespace(logical, existing, cwd) {
|
|
|
295
295
|
await $ `bunx wrangler kv namespace create ${logical}`.cwd(cwd).quiet();
|
|
296
296
|
}
|
|
297
297
|
catch (err) {
|
|
298
|
-
return errText(err).includes('already') ?
|
|
298
|
+
return errText(err).includes('already') ? await reList(logical, cwd) : null;
|
|
299
299
|
}
|
|
300
300
|
return reList(logical, cwd);
|
|
301
301
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../src/wrangler/scaffold.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../src/wrangler/scaffold.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAsMD,4FAA4F;AAC5F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,MAAM,CA6B7F"}
|
|
@@ -76,7 +76,7 @@ async function checkMode(env: string): Promise<void> {
|
|
|
76
76
|
for (const binding of kvBindings) {
|
|
77
77
|
const inToml = pe.getKvId(toml, env, binding);
|
|
78
78
|
const liveId = live.find((n) => n.title === kvTitle(binding, env))?.id ?? null;
|
|
79
|
-
p.log.message(\` KV \${binding}: \${!liveId ? '✗ not created' : inToml === liveId ? \`✓ \${liveId}\` :
|
|
79
|
+
p.log.message(\` KV \${binding}: \${!liveId ? '✗ not created' : inToml === liveId ? \`✓ \${liveId}\` : \`! drift (live \${liveId}, toml \${inToml ?? 'unset'})\`}\`);
|
|
80
80
|
}
|
|
81
81
|
for (const name of vars) {
|
|
82
82
|
p.log.message(\` var \${name}: \${pe.getVar(toml, env, name) ? '✓ set' : '✗ empty'}\`);
|
|
@@ -67,9 +67,7 @@ try {
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
async function installLocalDependencies(): Promise<void> {
|
|
70
|
-
//
|
|
71
|
-
// ts-patch. Multiple concurrent direnv activations can otherwise race while
|
|
72
|
-
// mutating the same files under node_modules.
|
|
70
|
+
// Serialize concurrent direnv activations installing into the same node_modules.
|
|
73
71
|
await withSetupLock(async () => {
|
|
74
72
|
await runSetupCommand('bun install --no-summary', $`bun install --no-summary`);
|
|
75
73
|
});
|
|
@@ -106,7 +104,7 @@ async function acquireLock(lockDir: string): Promise<void> {
|
|
|
106
104
|
await mkdir(lockDir, { recursive: false });
|
|
107
105
|
return;
|
|
108
106
|
} catch (error) {
|
|
109
|
-
if (!
|
|
107
|
+
if (!(error instanceof Error && 'code' in error && error.code === 'EEXIST') || Date.now() > deadline) {
|
|
110
108
|
throw error;
|
|
111
109
|
}
|
|
112
110
|
await Bun.sleep(100);
|
|
@@ -114,10 +112,6 @@ async function acquireLock(lockDir: string): Promise<void> {
|
|
|
114
112
|
}
|
|
115
113
|
}
|
|
116
114
|
|
|
117
|
-
function isFileExistsError(error: unknown): boolean {
|
|
118
|
-
return error instanceof Error && 'code' in error && error.code === 'EEXIST';
|
|
119
|
-
}
|
|
120
|
-
|
|
121
115
|
function replayCapturedOutput(error: unknown): void {
|
|
122
116
|
if (!(error instanceof CapturedCommandError)) {
|
|
123
117
|
return;
|
|
@@ -9,6 +9,12 @@ set -e -o pipefail
|
|
|
9
9
|
# Format exactly what is staged so the commit includes the formatter output.
|
|
10
10
|
git-format-staged
|
|
11
11
|
|
|
12
|
+
# Any `bun install` rewrites bun.lock workspace versions from package.json,
|
|
13
|
+
# reverting the stable-tag versions the release flow syncs (see
|
|
14
|
+
# packages/cli/src/monorepo/lockfile.ts). Self-heal here instead of failing a
|
|
15
|
+
# later commit on drift it didn't cause.
|
|
16
|
+
smoo monorepo sync-bun-lockfile-versions --stage
|
|
17
|
+
|
|
12
18
|
# Adding a workspace package is rare and easy to leave half-wired. Run the
|
|
13
19
|
# full monorepo validator only for newly staged package manifests.
|
|
14
20
|
smoo monorepo validate --fail-fast --only-if-new-workspace-package
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@smoothbricks/cli",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "SmoothBricks monorepo automation CLI",
|
|
6
6
|
"bin": {
|
|
@@ -52,8 +52,8 @@
|
|
|
52
52
|
],
|
|
53
53
|
"dependencies": {
|
|
54
54
|
"@arethetypeswrong/core": "^0.18.2",
|
|
55
|
-
"@smoothbricks/nx-plugin": "0.
|
|
56
|
-
"@smoothbricks/validation": "0.1.
|
|
55
|
+
"@smoothbricks/nx-plugin": "0.3.1",
|
|
56
|
+
"@smoothbricks/validation": "0.1.2",
|
|
57
57
|
"commander": "^14.0.3",
|
|
58
58
|
"publint": "^0.3.18",
|
|
59
59
|
"semver": "^7.7.4",
|
|
@@ -67,16 +67,6 @@
|
|
|
67
67
|
"nx": {
|
|
68
68
|
"targets": {
|
|
69
69
|
"lint": {},
|
|
70
|
-
"typecheck-tests": {
|
|
71
|
-
"executor": "nx:run-commands",
|
|
72
|
-
"options": {
|
|
73
|
-
"command": "tsc --noEmit -p tsconfig.test.json",
|
|
74
|
-
"cwd": "packages/cli"
|
|
75
|
-
},
|
|
76
|
-
"dependsOn": [
|
|
77
|
-
"build"
|
|
78
|
-
]
|
|
79
|
-
},
|
|
80
70
|
"test": {
|
|
81
71
|
"executor": "@smoothbricks/nx-plugin:bounded-exec",
|
|
82
72
|
"options": {
|
package/src/cli.ts
CHANGED
|
@@ -76,10 +76,13 @@ function buildProgram(): Command {
|
|
|
76
76
|
const { validateCommitMessageFile } = await import('./monorepo/index.js');
|
|
77
77
|
validateCommitMessageFile(commitMsgFile, options, await findRepoRoot());
|
|
78
78
|
});
|
|
79
|
-
monorepo
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
79
|
+
monorepo
|
|
80
|
+
.command('sync-bun-lockfile-versions')
|
|
81
|
+
.option('--stage', 'stage bun.lock when versions were resynced (pre-commit self-heal); quiet when clean')
|
|
82
|
+
.action(async (options: { stage?: boolean }) => {
|
|
83
|
+
const { syncBunLockfileVersions } = await import('./monorepo/index.js');
|
|
84
|
+
syncBunLockfileVersions(await findRepoRoot(), options.stage ? { log: false, stage: true } : {});
|
|
85
|
+
});
|
|
83
86
|
monorepo
|
|
84
87
|
.command('list-release-packages')
|
|
85
88
|
.option('--fail-empty', 'fail when no owned release packages are found')
|
package/src/github-ci/index.ts
CHANGED
|
@@ -220,9 +220,11 @@ function nxProjectList(output: string): string[] {
|
|
|
220
220
|
}
|
|
221
221
|
|
|
222
222
|
function recordValue(value: unknown): Record<string, unknown> | undefined {
|
|
223
|
-
return value
|
|
224
|
-
|
|
225
|
-
|
|
223
|
+
return isRecord(value) ? value : undefined;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
function isRecord(value: unknown): value is Record<string, unknown> {
|
|
227
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
226
228
|
}
|
|
227
229
|
|
|
228
230
|
async function createGithubStatus(name: string, step: string): Promise<void> {
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/* biome-ignore-all lint/suspicious/noTemplateCurlyInString: Assertions cover literal GitHub Actions expressions. */
|
|
2
|
+
|
|
1
3
|
import { describe, expect, it } from 'bun:test';
|
|
2
4
|
import { readFile } from 'node:fs/promises';
|
|
3
5
|
import { join } from 'node:path';
|
|
@@ -250,11 +252,17 @@ class WorkflowScenarioState {
|
|
|
250
252
|
private readonly repairBuilds = new Set<string>();
|
|
251
253
|
private readonly publishedCurrent = new Set<string>();
|
|
252
254
|
private readonly durableGaps = new Set<string>();
|
|
253
|
-
private readonly validationState
|
|
255
|
+
private readonly validationState: {
|
|
256
|
+
checks: number;
|
|
257
|
+
builds: string[];
|
|
258
|
+
lints: string[];
|
|
259
|
+
tests: string[];
|
|
260
|
+
validates: number;
|
|
261
|
+
} = {
|
|
254
262
|
checks: 0,
|
|
255
|
-
builds: []
|
|
256
|
-
lints: []
|
|
257
|
-
tests: []
|
|
263
|
+
builds: [],
|
|
264
|
+
lints: [],
|
|
265
|
+
tests: [],
|
|
258
266
|
validates: 0,
|
|
259
267
|
};
|
|
260
268
|
|