@smoothbricks/cli 0.10.3 → 0.10.4
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 +9 -13
- package/dist/bun/preload.d.ts +13 -0
- package/dist/bun/preload.d.ts.map +1 -0
- package/dist/bun/preload.js +12 -0
- package/dist/cli.js +12 -4
- package/dist/generate/index.d.ts.map +1 -1
- package/dist/generate/index.js +0 -6
- package/dist/github-ci/index.d.ts.map +1 -1
- package/dist/github-ci/index.js +52 -16
- package/dist/github-ci/outputs.d.ts.map +1 -1
- package/dist/github-ci/outputs.js +1 -2
- package/dist/lib/cli-package.js +2 -2
- package/dist/lib/json.d.ts +118 -11
- package/dist/lib/json.d.ts.map +1 -1
- package/dist/lib/json.js +317 -29
- package/dist/lib/workspace.d.ts +7 -14
- package/dist/lib/workspace.d.ts.map +1 -1
- package/dist/lib/workspace.js +76 -82
- package/dist/monorepo/ci-workflow.d.ts +2 -0
- package/dist/monorepo/ci-workflow.d.ts.map +1 -1
- package/dist/monorepo/ci-workflow.js +27 -1
- package/dist/monorepo/git-config.js +2 -2
- package/dist/monorepo/index.d.ts +3 -1
- package/dist/monorepo/index.d.ts.map +1 -1
- package/dist/monorepo/index.js +6 -2
- package/dist/monorepo/lockfile.d.ts +13 -1
- package/dist/monorepo/lockfile.d.ts.map +1 -1
- package/dist/monorepo/lockfile.js +33 -21
- package/dist/monorepo/managed-files.d.ts +11 -0
- package/dist/monorepo/managed-files.d.ts.map +1 -1
- package/dist/monorepo/managed-files.js +52 -32
- package/dist/monorepo/package-policy.d.ts.map +1 -1
- package/dist/monorepo/package-policy.js +52 -45
- package/dist/monorepo/packed-manifest.d.ts +5 -2
- package/dist/monorepo/packed-manifest.d.ts.map +1 -1
- package/dist/monorepo/packed-manifest.js +16 -47
- package/dist/monorepo/packed-package.d.ts.map +1 -1
- package/dist/monorepo/packed-package.js +28 -16
- package/dist/monorepo/packs/index.d.ts.map +1 -1
- package/dist/monorepo/packs/index.js +13 -4
- package/dist/monorepo/publish-workflow.js +3 -1
- package/dist/monorepo/runtime.d.ts +15 -0
- package/dist/monorepo/runtime.d.ts.map +1 -1
- package/dist/monorepo/runtime.js +66 -12
- package/dist/monorepo/tool-validation.d.ts.map +1 -1
- package/dist/monorepo/tool-validation.js +32 -23
- package/dist/monorepo/wrangler.d.ts.map +1 -1
- package/dist/monorepo/wrangler.js +13 -13
- package/dist/nx/index.d.ts +9 -7
- package/dist/nx/index.d.ts.map +1 -1
- package/dist/nx/index.js +48 -31
- package/dist/pr/index.d.ts.map +1 -1
- package/dist/pr/index.js +28 -32
- package/dist/release/candidates.d.ts +3 -2
- package/dist/release/candidates.d.ts.map +1 -1
- package/dist/release/candidates.js +4 -5
- package/dist/release/index.d.ts +1 -0
- package/dist/release/index.d.ts.map +1 -1
- package/dist/release/index.js +82 -59
- package/dist/wrangler/prepare-env.d.ts +0 -1
- package/dist/wrangler/prepare-env.d.ts.map +1 -1
- package/dist/wrangler/prepare-env.js +100 -51
- package/dist/wrangler/scaffold.d.ts.map +1 -1
- package/dist/wrangler/scaffold.js +12 -12
- package/managed/raw/git-format-staged.yml +19 -1
- package/managed/raw/tooling/direnv/github-actions-bootstrap.sh +2 -1
- package/managed/raw/tooling/direnv/merge-newer-pins.sh +3 -3
- package/managed/raw/tooling/direnv/setup-environment.ts +150 -19
- package/managed/raw/tooling/git-hooks/pre-commit.sh +0 -6
- package/managed/templates/github/actions/cache-node-modules/action.yml +5 -2
- package/managed/templates/github/actions/cache-ttsc-plugins/action.yml +19 -0
- package/managed/templates/github/actions/setup-devenv/action.yml +5 -0
- package/managed/templates/github/workflows/managed-files.yml +80 -0
- package/package.json +15 -4
- package/src/bun/preload.ts +12 -0
- package/src/cli.ts +19 -7
- package/src/generate/index.ts +0 -6
- package/src/github-ci/index.ts +49 -18
- package/src/github-ci/outputs.ts +1 -2
- package/src/lib/cli-package.ts +2 -2
- package/src/lib/json.ts +291 -32
- package/src/lib/workspace.ts +88 -100
- package/src/monorepo/__tests__/ci-workflow.test.ts +3 -3
- package/src/monorepo/ci-workflow.ts +27 -1
- package/src/monorepo/git-config.ts +2 -2
- package/src/monorepo/index.ts +6 -2
- package/src/monorepo/lockfile.test.ts +35 -36
- package/src/monorepo/lockfile.ts +48 -24
- package/src/monorepo/managed-files.test.ts +1 -0
- package/src/monorepo/managed-files.ts +57 -38
- package/src/monorepo/package-policy.test.ts +20 -50
- package/src/monorepo/package-policy.ts +76 -59
- package/src/monorepo/packed-manifest.ts +18 -52
- package/src/monorepo/packed-package.ts +43 -22
- package/src/monorepo/packs/index.ts +13 -4
- package/src/monorepo/publish-workflow.ts +3 -1
- package/src/monorepo/runtime.test.ts +42 -3
- package/src/monorepo/runtime.ts +90 -12
- package/src/monorepo/tool-validation.ts +35 -25
- package/src/monorepo/wrangler.test.ts +11 -15
- package/src/monorepo/wrangler.ts +15 -15
- package/src/nx/index.test.ts +9 -5
- package/src/nx/index.ts +69 -42
- package/src/pr/index.ts +42 -36
- package/src/release/__tests__/candidates.test.ts +5 -4
- package/src/release/__tests__/trust-publisher.test.ts +7 -0
- package/src/release/candidates.ts +10 -17
- package/src/release/index.ts +104 -73
- package/src/wrangler/prepare-env.ts +75 -54
- package/src/wrangler/scaffold.test.ts +9 -12
- package/src/wrangler/scaffold.ts +13 -13
package/README.md
CHANGED
|
@@ -231,7 +231,7 @@ candidates to downstream dependents because that would duplicate Nx's dependency
|
|
|
231
231
|
`@smoothbricks/nx-plugin` owns transformer-aware TypeScript targets because this workspace compiles through `ttsc`.
|
|
232
232
|
Configuring `@nx/js/typescript` would run `tsc`/`tsgo` directly and bypass the Typia and LMAO transformers. A package
|
|
233
233
|
`tsconfig.lib.json` therefore produces the concrete `tsc-js` target from the SmoothBricks plugin. The same plugin also
|
|
234
|
-
infers Bun test typechecking,
|
|
234
|
+
infers Bun test typechecking, Cargo workspace targets, and aggregate targets.
|
|
235
235
|
|
|
236
236
|
Concrete targets use `{tool}-{output}` names and describe the tool that runs and the artifact or purpose it produces:
|
|
237
237
|
|
|
@@ -242,8 +242,8 @@ Concrete targets use `{tool}-{output}` names and describe the tool that runs and
|
|
|
242
242
|
- Test tsconfigs are validation configs, not TypeScript build-mode projects. They must use `noEmit`, must not set
|
|
243
243
|
`composite: true`, and package root `tsconfig.json` must not reference `./tsconfig.test.json`. The inferred
|
|
244
244
|
`typecheck-tests` target runs `ttsc --noEmit -p tsconfig.test.json` after `build` instead.
|
|
245
|
-
-
|
|
246
|
-
`
|
|
245
|
+
- A neighboring workspace-root `Cargo.toml` provides Cargo test, lint, mutation, and benchmark targets. Workspaces with
|
|
246
|
+
`cdylib` member crates also receive the cacheable `cargo-wasm` output target.
|
|
247
247
|
- `build` is an aggregate. It exists only when there is at least one concrete build target such as `tsc-js`,
|
|
248
248
|
`tsdown-js`, or another tool-output target, and it depends on output-family wildcards such as `*-js`, `*-web`,
|
|
249
249
|
`*-html`, `*-css`, `*-ios`, `*-android`, `*-native`, `*-napi`, `*-bun`, and `*-wasm` instead of duplicating commands.
|
|
@@ -253,16 +253,18 @@ The root `@typescript/native` dependency follows TypeScript's documented side-by
|
|
|
253
253
|
and supplies the native compiler used by `ttsc`. Because `ttsc` resolves only the unscoped package by default, the
|
|
254
254
|
managed devenv shell sets `TTSC_TSGO_BINARY` to `node_modules/@typescript/native/bin/tsc`; the GitHub setup action
|
|
255
255
|
persists that absolute path through `GITHUB_ENV`. Nx and other JavaScript tooling still require the full TypeScript
|
|
256
|
-
compiler API, so workspace `typescript`
|
|
257
|
-
|
|
256
|
+
compiler API, so workspace `typescript` stays on TypeScript 6. After install, setup-environment forces Bun's shared
|
|
257
|
+
`.bun/node_modules/typescript` hoist onto that API package so Nx does not load `@typescript/native` (TS7) via the store
|
|
258
|
+
([oven-sh/bun#33834](https://github.com/oven-sh/bun/issues/33834)). Both dependencies and the environment binding are
|
|
259
|
+
required: TypeScript 7 under the unscoped name breaks Nx API calls such as `readConfigFile`.
|
|
258
260
|
|
|
259
261
|
Explicit Nx target names must not contain `:`. Nx already uses colon syntax at the CLI boundary:
|
|
260
262
|
`project:target:configuration`. Allowing target names like `build:wasm` makes command parsing and package-script aliases
|
|
261
263
|
look like configurations, and it prevents a clean split between concrete tool-output targets and aggregate targets.
|
|
262
264
|
|
|
263
|
-
Use tool-output names for concrete targets, such as `tsc-js`, `tsdown-js`, and `
|
|
265
|
+
Use tool-output names for concrete targets, such as `tsc-js`, `tsdown-js`, and `cargo-wasm`. Use `build` and `lint` only
|
|
264
266
|
as aggregate targets. Package scripts may still use developer-friendly colon names, for example `build:wasm`, but those
|
|
265
|
-
scripts should delegate to unambiguous Nx targets such as `nx run pkg:
|
|
267
|
+
scripts should delegate to unambiguous Nx targets such as `nx run pkg:cargo-wasm`.
|
|
266
268
|
|
|
267
269
|
## Managed Files
|
|
268
270
|
|
|
@@ -526,12 +528,6 @@ nx lint @smoothbricks/cli
|
|
|
526
528
|
smoo monorepo validate
|
|
527
529
|
```
|
|
528
530
|
|
|
529
|
-
If validating packages with Zig build steps from outside the devenv shell, add Zig explicitly:
|
|
530
|
-
|
|
531
|
-
```bash
|
|
532
|
-
nix shell nixpkgs#zig -c nx run-many -t build --projects=<public-projects>
|
|
533
|
-
```
|
|
534
|
-
|
|
535
531
|
## Links
|
|
536
532
|
|
|
537
533
|
[are-the-types-wrong]: https://github.com/arethetypeswrong/arethetypeswrong.github.io/tree/main/packages/cli
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bun runtime preload for consumers of `@smoothbricks/cli`.
|
|
3
|
+
*
|
|
4
|
+
* Re-exports the Typia/ttsc transform preload from `@smoothbricks/validation`.
|
|
5
|
+
* External repos depend on the CLI package only — they must not need a direct
|
|
6
|
+
* `@smoothbricks/validation` dependency just to run `smoo` against source.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* import '@smoothbricks/cli/bun/preload';
|
|
10
|
+
* // or bunfig.toml: preload = ["@smoothbricks/cli/bun/preload"]
|
|
11
|
+
*/
|
|
12
|
+
import '@smoothbricks/validation/bun/preload';
|
|
13
|
+
//# sourceMappingURL=preload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preload.d.ts","sourceRoot":"","sources":["../../src/bun/preload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,sCAAsC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bun runtime preload for consumers of `@smoothbricks/cli`.
|
|
3
|
+
*
|
|
4
|
+
* Re-exports the Typia/ttsc transform preload from `@smoothbricks/validation`.
|
|
5
|
+
* External repos depend on the CLI package only — they must not need a direct
|
|
6
|
+
* `@smoothbricks/validation` dependency just to run `smoo` against source.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* import '@smoothbricks/cli/bun/preload';
|
|
10
|
+
* // or bunfig.toml: preload = ["@smoothbricks/cli/bun/preload"]
|
|
11
|
+
*/
|
|
12
|
+
import '@smoothbricks/validation/bun/preload';
|
package/dist/cli.js
CHANGED
|
@@ -52,9 +52,12 @@ function buildProgram() {
|
|
|
52
52
|
const { updateManagedFiles } = await import('./monorepo/index.js');
|
|
53
53
|
updateManagedFiles(await findRepoRoot());
|
|
54
54
|
});
|
|
55
|
-
monorepo
|
|
55
|
+
monorepo
|
|
56
|
+
.command('check')
|
|
57
|
+
.option('--warn', 'report drift as warnings (GitHub annotations) instead of failing')
|
|
58
|
+
.action(async (options) => {
|
|
56
59
|
const { checkManagedFiles } = await import('./monorepo/index.js');
|
|
57
|
-
checkManagedFiles(await findRepoRoot());
|
|
60
|
+
checkManagedFiles(await findRepoRoot(), { warn: options.warn });
|
|
58
61
|
});
|
|
59
62
|
monorepo.command('diff').action(async () => {
|
|
60
63
|
const { diffManagedFiles } = await import('./monorepo/index.js');
|
|
@@ -69,10 +72,15 @@ function buildProgram() {
|
|
|
69
72
|
});
|
|
70
73
|
monorepo
|
|
71
74
|
.command('sync-bun-lockfile-versions')
|
|
72
|
-
.option('--stage', 'stage bun.lock when versions were resynced
|
|
75
|
+
.option('--stage', 'stage bun.lock when versions were resynced; quiet when clean')
|
|
76
|
+
.option('--mode <mode>', 'install: match package.json (CI); publish: map unpublished -next to last stable tag (pre-pack)', 'publish')
|
|
73
77
|
.action(async (options) => {
|
|
74
78
|
const { syncBunLockfileVersions } = await import('./monorepo/index.js');
|
|
75
|
-
|
|
79
|
+
const mode = options.mode === 'install' ? 'install' : 'publish';
|
|
80
|
+
syncBunLockfileVersions(await findRepoRoot(), {
|
|
81
|
+
mode,
|
|
82
|
+
...(options.stage ? { log: false, stage: true } : {}),
|
|
83
|
+
});
|
|
76
84
|
});
|
|
77
85
|
monorepo
|
|
78
86
|
.command('list-release-packages')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generate/index.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,eAAe;IAC9B,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IACjC,sDAAsD;IACtD,OAAO,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CACpC;AAED,UAAU,aAAa;IACrB,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generate/index.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,eAAe;IAC9B,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IACjC,sDAAsD;IACtD,OAAO,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CACpC;AAED,UAAU,aAAa;IACrB,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAYpD,CAAC;AAMF,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC,CAyBf"}
|
package/dist/generate/index.js
CHANGED
|
@@ -7,12 +7,6 @@ export const variants = {
|
|
|
7
7
|
args: (name) => ['--name', name, '--variant', 'ts-lib'],
|
|
8
8
|
options: [{ flag: '--public', description: 'configure for npm publication' }],
|
|
9
9
|
},
|
|
10
|
-
'ts-zig': {
|
|
11
|
-
generator: 'create-package',
|
|
12
|
-
description: 'Create a TypeScript + Zig/WASM hybrid package',
|
|
13
|
-
args: (name) => ['--name', name, '--variant', 'ts-zig'],
|
|
14
|
-
options: [{ flag: '--public', description: 'configure for npm publication' }],
|
|
15
|
-
},
|
|
16
10
|
'make-public': {
|
|
17
11
|
generator: 'make-public',
|
|
18
12
|
description: 'Promote a private package to npm publication',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/github-ci/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/github-ci/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,cAAc,EAAsB,MAAM,gBAAgB,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAmBhD,KAAK,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;AAEpD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBtE;AAmFD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,UAAU,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAO3G;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,WAAW,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GACpG,OAAO,CAAC,IAAI,CAAC,CAWf;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,WAAW,EAAE,CAAC;IACpB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,gBAAgB,GAAG,oBAAoB,CAiC9G;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE,CAwC/E;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAehF;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGlE;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAa9F;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EAAE,EACrB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC,CAGf;AAgCD,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,WAAW,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACrG,OAAO,CAAC,IAAI,CAAC,CA0Bf"}
|
package/dist/github-ci/index.js
CHANGED
|
@@ -1,9 +1,30 @@
|
|
|
1
|
-
import { existsSync } from 'node:fs';
|
|
1
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
2
2
|
import { appendFile, mkdtemp, realpath, rename, rm } from 'node:fs/promises';
|
|
3
3
|
import { dirname, join } from 'node:path';
|
|
4
4
|
import { $ } from 'bun';
|
|
5
|
+
import typia from 'typia';
|
|
6
|
+
import { parseStringArrayText } from '../lib/json.js';
|
|
5
7
|
import { decode, run, runStatus } from '../lib/run.js';
|
|
6
8
|
import { readProjectTargets } from '../nx/index.js';
|
|
9
|
+
const parseGithubActionsEvent = (() => {
|
|
10
|
+
const _io0 = input => undefined === input.repository || "object" === typeof input.repository && null !== input.repository && false === Array.isArray(input.repository) && _io1(input.repository);
|
|
11
|
+
const _io1 = input => undefined === input.default_branch || "string" === typeof input.default_branch;
|
|
12
|
+
const __is = input => "object" === typeof input && null !== input && false === Array.isArray(input) && _io0(input);
|
|
13
|
+
return input => { input = JSON.parse(input); return __is(input) ? input : null; };
|
|
14
|
+
})();
|
|
15
|
+
const parseNxProjectDeployConfigurations = (() => {
|
|
16
|
+
const _io0 = input => undefined === input.targets || "object" === typeof input.targets && null !== input.targets && false === Array.isArray(input.targets) && _io1(input.targets);
|
|
17
|
+
const _io1 = input => undefined === input.deploy || "object" === typeof input.deploy && null !== input.deploy && false === Array.isArray(input.deploy) && _io2(input.deploy);
|
|
18
|
+
const _io2 = input => undefined === input.configurations || "object" === typeof input.configurations && null !== input.configurations && false === Array.isArray(input.configurations) && _io3(input.configurations);
|
|
19
|
+
const _io3 = input => Object.keys(input).every(key => {
|
|
20
|
+
const value = input[key];
|
|
21
|
+
if (undefined === value)
|
|
22
|
+
return true;
|
|
23
|
+
return true;
|
|
24
|
+
});
|
|
25
|
+
const __is = input => "object" === typeof input && null !== input && false === Array.isArray(input) && _io0(input);
|
|
26
|
+
return input => { input = JSON.parse(input); return __is(input) ? input : null; };
|
|
27
|
+
})();
|
|
7
28
|
export async function cleanupGithubCiCache(root) {
|
|
8
29
|
const githubOutput = process.env.GITHUB_OUTPUT;
|
|
9
30
|
const markCacheReady = async (ready) => {
|
|
@@ -233,7 +254,7 @@ export async function githubCiApplyOutputs(root, directories, expectedSourceSha)
|
|
|
233
254
|
async function loadOutputBoundary() {
|
|
234
255
|
if (import.meta.url.endsWith('/src/github-ci/index.ts')) {
|
|
235
256
|
// The source self-hosting shim has no Typia transform; register it before loading manifest validators.
|
|
236
|
-
await import('@smoothbricks/
|
|
257
|
+
await import('@smoothbricks/cli/bun/preload');
|
|
237
258
|
}
|
|
238
259
|
// This boundary must stay lazy because the transformed dist and source self-hosting paths initialize Typia differently.
|
|
239
260
|
return import('./outputs.js');
|
|
@@ -286,7 +307,32 @@ function resolveNxSmartMode(mode) {
|
|
|
286
307
|
if (mode === 'affected' || mode === 'run-many') {
|
|
287
308
|
return mode;
|
|
288
309
|
}
|
|
289
|
-
|
|
310
|
+
const defaultBranch = eventDefaultBranch() ?? 'main';
|
|
311
|
+
if (process.env.GITHUB_EVENT_NAME === 'push') {
|
|
312
|
+
return process.env.GITHUB_REF_NAME === defaultBranch ? 'run-many' : 'affected';
|
|
313
|
+
}
|
|
314
|
+
// A PR into a NON-default branch is an integration surface (e.g. a mirror-sync
|
|
315
|
+
// review branch): its base moves outside the default-branch workflow that
|
|
316
|
+
// affected scoping is calibrated against, so under-selection can pass PR CI
|
|
317
|
+
// and only fail after merge. Validate those PRs in full.
|
|
318
|
+
if (process.env.GITHUB_EVENT_NAME === 'pull_request') {
|
|
319
|
+
const base = process.env.GITHUB_BASE_REF;
|
|
320
|
+
return base && base !== defaultBranch ? 'run-many' : 'affected';
|
|
321
|
+
}
|
|
322
|
+
return 'affected';
|
|
323
|
+
}
|
|
324
|
+
/** The repository default branch from the Actions event payload. */
|
|
325
|
+
function eventDefaultBranch() {
|
|
326
|
+
const eventPath = process.env.GITHUB_EVENT_PATH;
|
|
327
|
+
if (!eventPath)
|
|
328
|
+
return undefined;
|
|
329
|
+
try {
|
|
330
|
+
const payload = parseGithubActionsEvent(readFileSync(eventPath, 'utf8'));
|
|
331
|
+
return payload?.repository?.default_branch || undefined;
|
|
332
|
+
}
|
|
333
|
+
catch {
|
|
334
|
+
return undefined;
|
|
335
|
+
}
|
|
290
336
|
}
|
|
291
337
|
async function deployProjectsWithConfiguration(root, configuration, mode) {
|
|
292
338
|
const listArgs = mode === 'affected'
|
|
@@ -304,21 +350,11 @@ async function deployProjectsWithConfiguration(root, configuration, mode) {
|
|
|
304
350
|
}
|
|
305
351
|
async function deployTargetHasConfiguration(root, project, configuration) {
|
|
306
352
|
const result = await $ `nx show project ${project} --json`.cwd(root).quiet();
|
|
307
|
-
const parsed =
|
|
308
|
-
|
|
309
|
-
const deploy = recordValue(targets)?.deploy;
|
|
310
|
-
const configurations = recordValue(deploy)?.configurations;
|
|
311
|
-
return recordValue(configurations)?.[configuration] !== undefined;
|
|
353
|
+
const parsed = parseNxProjectDeployConfigurations(decode(result.stdout));
|
|
354
|
+
return parsed?.targets?.deploy?.configurations?.[configuration] !== undefined;
|
|
312
355
|
}
|
|
313
356
|
function nxProjectList(output) {
|
|
314
|
-
|
|
315
|
-
return Array.isArray(parsed) ? parsed.filter((project) => typeof project === 'string') : [];
|
|
316
|
-
}
|
|
317
|
-
function recordValue(value) {
|
|
318
|
-
return isRecord(value) ? value : undefined;
|
|
319
|
-
}
|
|
320
|
-
function isRecord(value) {
|
|
321
|
-
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
357
|
+
return parseStringArrayText(output) ?? [];
|
|
322
358
|
}
|
|
323
359
|
async function createGithubStatus(name, step) {
|
|
324
360
|
await postGithubStatus(name, 'pending', `Running ${name}...`, step);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outputs.d.ts","sourceRoot":"","sources":["../../src/github-ci/outputs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"outputs.d.ts","sourceRoot":"","sources":["../../src/github-ci/outputs.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,cAAc,EAAsB,MAAM,gBAAgB,CAAC;AAEzE,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,mBAAmB,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAWD,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,WAAW,EAAE,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,wBAAwB,CAAC,CAgEnC;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EAAE,EACrB,iBAAiB,EAAE,MAAM,EACzB,QAAQ,CAAC,EAAE,cAAc,EAAE,GAC1B,OAAO,CAAC,IAAI,CAAC,CAqGf;AAED,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,MAAM,CAa7F"}
|
|
@@ -4,7 +4,6 @@ import { createHash } from 'node:crypto';
|
|
|
4
4
|
import { createReadStream } from 'node:fs';
|
|
5
5
|
import { copyFile, lstat, mkdir, readdir, readFile, writeFile } from 'node:fs/promises';
|
|
6
6
|
import { isAbsolute, relative, resolve, sep } from 'node:path';
|
|
7
|
-
import { isRecord } from '@smoothbricks/validation';
|
|
8
7
|
import typia from 'typia';
|
|
9
8
|
import { readProjectTargets } from '../nx/index.js';
|
|
10
9
|
const parseManifest = (() => {
|
|
@@ -636,7 +635,7 @@ function assertGitSha(value, description) {
|
|
|
636
635
|
}
|
|
637
636
|
}
|
|
638
637
|
function isMissingPathError(error) {
|
|
639
|
-
return
|
|
638
|
+
return error instanceof Error && 'code' in error && error.code === 'ENOENT';
|
|
640
639
|
}
|
|
641
640
|
function sha256File(path) {
|
|
642
641
|
return new Promise((resolveHash, reject) => {
|
package/dist/lib/cli-package.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { fileURLToPath } from 'node:url';
|
|
2
|
-
import { readJsonObject
|
|
2
|
+
import { readJsonObject } from './json.js';
|
|
3
3
|
export const smoothBricksCodebasePackageName = '@smoothbricks/codebase';
|
|
4
4
|
export const cliPackageVersion = readCliPackageVersion();
|
|
5
5
|
function readCliPackageVersion() {
|
|
6
6
|
const pkg = readJsonObject(fileURLToPath(new URL('../../package.json', import.meta.url)));
|
|
7
|
-
const version = pkg
|
|
7
|
+
const version = pkg?.version;
|
|
8
8
|
if (!version) {
|
|
9
9
|
throw new Error('Unable to read @smoothbricks/cli package version.');
|
|
10
10
|
}
|
package/dist/lib/json.d.ts
CHANGED
|
@@ -1,13 +1,120 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
/** String-keyed dependency / script / engine maps. */
|
|
2
|
+
export type StringMap = Record<string, string>;
|
|
3
|
+
export interface PackageRepository {
|
|
4
|
+
type?: string;
|
|
5
|
+
url?: string;
|
|
6
|
+
directory?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface PackageNxConfig {
|
|
9
|
+
name?: string;
|
|
10
|
+
tags?: string[];
|
|
11
|
+
includedScripts?: string[];
|
|
12
|
+
targets?: Record<string, NxTargetConfig>;
|
|
13
|
+
}
|
|
14
|
+
export interface PackagePublishConfig {
|
|
15
|
+
access?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface PackageSmooGithub {
|
|
18
|
+
pushBranches?: string[];
|
|
19
|
+
}
|
|
20
|
+
export interface PackageSmooConfig {
|
|
21
|
+
github?: PackageSmooGithub;
|
|
22
|
+
}
|
|
23
|
+
export interface PackageWorkspacesObject {
|
|
24
|
+
packages?: string[];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* package.json shape used by smoo. Optional fields stay optional so partial
|
|
28
|
+
* manifests parse; mutation helpers create nested objects on demand.
|
|
29
|
+
*/
|
|
30
|
+
export interface PackageJson {
|
|
31
|
+
name?: string;
|
|
32
|
+
version?: string;
|
|
33
|
+
private?: boolean;
|
|
34
|
+
license?: string;
|
|
35
|
+
types?: string;
|
|
36
|
+
packageManager?: string;
|
|
37
|
+
files?: string[];
|
|
38
|
+
bin?: string | StringMap;
|
|
39
|
+
exports?: PackageExports;
|
|
40
|
+
workspaces?: string[] | PackageWorkspacesObject;
|
|
41
|
+
dependencies?: StringMap;
|
|
42
|
+
devDependencies?: StringMap;
|
|
43
|
+
peerDependencies?: StringMap;
|
|
44
|
+
optionalDependencies?: StringMap;
|
|
45
|
+
engines?: StringMap;
|
|
46
|
+
scripts?: StringMap;
|
|
47
|
+
publishConfig?: PackagePublishConfig;
|
|
48
|
+
repository?: string | PackageRepository;
|
|
49
|
+
nx?: PackageNxConfig;
|
|
50
|
+
smoo?: PackageSmooConfig;
|
|
51
|
+
}
|
|
52
|
+
/** Recursive package exports map (conditions nest arbitrarily). */
|
|
53
|
+
export type PackageExports = string | PackageExportMap | null | undefined;
|
|
54
|
+
export interface PackageExportMap {
|
|
55
|
+
[condition: string]: PackageExports;
|
|
56
|
+
}
|
|
57
|
+
export interface NxDependsOnObject {
|
|
58
|
+
target: string;
|
|
59
|
+
projects?: string | string[];
|
|
60
|
+
}
|
|
61
|
+
export type NxDependsOn = string | NxDependsOnObject;
|
|
62
|
+
/** Nx target options are executor-specific open bags. */
|
|
63
|
+
export type NxTargetOptions = Record<string, unknown>;
|
|
64
|
+
export type NxInput = string | Record<string, unknown>;
|
|
65
|
+
export interface NxTargetConfig {
|
|
66
|
+
executor?: string;
|
|
67
|
+
dependsOn?: NxDependsOn[];
|
|
68
|
+
outputs?: string[];
|
|
69
|
+
inputs?: NxInput[];
|
|
70
|
+
options?: NxTargetOptions;
|
|
71
|
+
configurations?: Record<string, NxTargetConfig>;
|
|
72
|
+
cache?: boolean;
|
|
73
|
+
command?: string;
|
|
74
|
+
parallelism?: boolean;
|
|
75
|
+
}
|
|
76
|
+
export interface NxProjectJson {
|
|
77
|
+
name?: string;
|
|
78
|
+
root?: string;
|
|
79
|
+
targets?: Record<string, NxTargetConfig>;
|
|
80
|
+
}
|
|
81
|
+
export interface NxJson {
|
|
82
|
+
namedInputs?: Record<string, Array<string | Record<string, unknown>> | string>;
|
|
83
|
+
}
|
|
84
|
+
/** Parse package.json text. Invalid JSON throws; wrong shape returns null. */
|
|
85
|
+
export declare const parsePackageJsonText: (input: string) => PackageJson | null;
|
|
86
|
+
/** Parse `nx show project --json` output. Invalid JSON throws; wrong shape returns null. */
|
|
87
|
+
export declare const parseNxProjectJsonText: (input: string) => NxProjectJson | null;
|
|
88
|
+
/** Parse nx.json text. Invalid JSON throws; wrong shape returns null. */
|
|
89
|
+
export declare const parseNxJsonText: (input: string) => NxJson | null;
|
|
90
|
+
/** Parse a JSON string array. Invalid JSON throws; non-arrays return null. */
|
|
91
|
+
export declare const parseStringArrayText: (input: string) => string[] | null;
|
|
92
|
+
export declare function readJsonObject(path: string): PackageJson | null;
|
|
93
|
+
export declare function requiredJsonObject(path: string): PackageJson;
|
|
94
|
+
export declare function writeJsonObject(path: string, value: object): void;
|
|
95
|
+
export declare function jsonObjectText(value: object): string;
|
|
12
96
|
export declare function readJson(path: string): unknown;
|
|
97
|
+
export declare function isPackageJson(value: unknown): value is PackageJson;
|
|
98
|
+
/** Ensure package.json.scripts exists. */
|
|
99
|
+
export declare function ensureScripts(pkg: PackageJson): StringMap;
|
|
100
|
+
/** Ensure package.json.dependencies (or other string-map dep field) exists. */
|
|
101
|
+
export declare function ensureDependencyMap(pkg: PackageJson, key: 'dependencies' | 'devDependencies' | 'peerDependencies' | 'optionalDependencies'): StringMap;
|
|
102
|
+
/** Ensure package.json.engines exists. */
|
|
103
|
+
export declare function ensureEngines(pkg: PackageJson): StringMap;
|
|
104
|
+
/** Ensure package.json.nx exists. */
|
|
105
|
+
export declare function ensureNx(pkg: PackageJson): PackageNxConfig;
|
|
106
|
+
/** Ensure package.json.nx.targets exists. */
|
|
107
|
+
export declare function ensureNxTargets(nx: PackageNxConfig): Record<string, NxTargetConfig>;
|
|
108
|
+
/** Ensure package.json.publishConfig exists. */
|
|
109
|
+
export declare function ensurePublishConfig(pkg: PackageJson): PackagePublishConfig;
|
|
110
|
+
/** Ensure package.json.repository is an object (not a string URL). */
|
|
111
|
+
export declare function ensureRepositoryObject(pkg: PackageJson): PackageRepository;
|
|
112
|
+
export declare function setStringProperty(record: StringMap, key: string, value: string): boolean;
|
|
113
|
+
export declare function setMissingStringProperty(record: StringMap, key: string, value: string): boolean;
|
|
114
|
+
export declare function setPackageStringField(pkg: PackageJson, key: 'name' | 'version' | 'license' | 'types' | 'packageManager', value: string): boolean;
|
|
115
|
+
export declare function setMissingPackageStringField(pkg: PackageJson, key: 'name' | 'version' | 'license' | 'types' | 'packageManager', value: string): boolean;
|
|
116
|
+
export declare function setNxName(nx: PackageNxConfig, value: string): boolean;
|
|
117
|
+
export declare function setPublishAccess(publishConfig: PackagePublishConfig, value: string): boolean;
|
|
118
|
+
export declare function setRepositoryField(repository: PackageRepository, key: 'type' | 'url' | 'directory', value: string): boolean;
|
|
119
|
+
export declare function setMissingRepositoryField(repository: PackageRepository, key: 'type' | 'url' | 'directory', value: string): boolean;
|
|
13
120
|
//# sourceMappingURL=json.d.ts.map
|
package/dist/lib/json.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/lib/json.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/lib/json.ts"],"names":[],"mappings":"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"}
|