@effected/github-actions 0.13.2 → 0.13.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.
@@ -615,6 +615,16 @@ const dies = unstubbed("PackageManagerInstaller.makeTest");
615
615
  * stage-then-swap invariant holds here for free — shims included, the tool
616
616
  * cache only ever contains complete package managers.
617
617
  *
618
+ * The pin is the whole contract: the installer provisions exactly the named
619
+ * version and does not read the artifact's `engines.node` against the
620
+ * runner's node. A pin whose engines the runner does not satisfy (npm 12 on
621
+ * a node below `^22.22.2 || ^24.15.0 || >=26.0.0`) still installs and still
622
+ * runs — npm itself warns (`npm warn cli npm v12.0.2 does not support ...`)
623
+ * on every invocation and carries on (`lib/cli/entry.js`), so the
624
+ * mismatch is visible in the job log but is not a typed failure here.
625
+ * Keeping node and the manager pins coherent is the consumer's call, made
626
+ * where it pins node.
627
+ *
618
628
  * @example
619
629
  * ```ts
620
630
  * import { ActionOutputs, PackageManagerInstaller } from "@effected/github-actions";
package/index.d.ts CHANGED
@@ -4677,6 +4677,16 @@ declare const PackageManagerInstaller_base: Context.ServiceClass<PackageManagerI
4677
4677
  * stage-then-swap invariant holds here for free — shims included, the tool
4678
4678
  * cache only ever contains complete package managers.
4679
4679
  *
4680
+ * The pin is the whole contract: the installer provisions exactly the named
4681
+ * version and does not read the artifact's `engines.node` against the
4682
+ * runner's node. A pin whose engines the runner does not satisfy (npm 12 on
4683
+ * a node below `^22.22.2 || ^24.15.0 || >=26.0.0`) still installs and still
4684
+ * runs — npm itself warns (`npm warn cli npm v12.0.2 does not support ...`)
4685
+ * on every invocation and carries on (`lib/cli/entry.js`), so the
4686
+ * mismatch is visible in the job log but is not a typed failure here.
4687
+ * Keeping node and the manager pins coherent is the consumer's call, made
4688
+ * where it pins node.
4689
+ *
4680
4690
  * @example
4681
4691
  * ```ts
4682
4692
  * import { ActionOutputs, PackageManagerInstaller } from "@effected/github-actions";
@@ -25,11 +25,30 @@ const delimiterFor = (value) => {
25
25
  };
26
26
  /**
27
27
  * Whether `name` can head a block without breaking the structure it lives
28
- * in: non-empty, and free of the line breaks that would end it early.
28
+ * in: non-empty, free of the line breaks that would end it early, and free
29
+ * of the separators the runner's file-command parser would re-split the
30
+ * line on.
31
+ *
32
+ * @remarks
33
+ * The runner (`FileCommandManager`) locates the first `=` and the first
34
+ * `<<` on each line and whichever comes first decides the shape: a
35
+ * `key=value` property assignment, or a `name<<delimiter` heredoc block.
36
+ * Because a block line is always `name<<DELIMITER`, an `=` anywhere in the
37
+ * name precedes the marker and the line parses as a property assignment cut
38
+ * at that `=`, leaving every line of the block to be read as stray entries;
39
+ * a `<<` inside the name splits there instead and yields a delimiter the
40
+ * terminating line can never match. Either way the entries after the
41
+ * malformed block are corrupted, so both separators are refused. A name
42
+ * ending in a single `<` corrupts the block the same way: the composed
43
+ * header `name<<<DELIMITER` matches the runner's first `<<` one character
44
+ * early, so the delimiter it waits for is `<DELIMITER` and the terminating
45
+ * line never matches — the whole file is lost. An interior `<` is safe
46
+ * (`a<b` still composes a header that splits exactly at the marker), so
47
+ * only the trailing position is refused.
29
48
  *
30
49
  * @internal
31
50
  */
32
- const isUsableName = (name) => name !== "" && !/[\r\n]/.test(name);
51
+ const isUsableName = (name) => name !== "" && !/[\r\n]/.test(name) && !name.includes("=") && !name.includes("<<") && !name.endsWith("<");
33
52
  /**
34
53
  * One heredoc block, ready to append. The caller has checked the name with
35
54
  * {@link isUsableName}.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effected/github-actions",
3
- "version": "0.13.2",
3
+ "version": "0.13.4",
4
4
  "private": false,
5
5
  "description": "The GitHub Actions runtime: env, inputs, outputs, state, logging, cache, artifacts, blob storage, OIDC and the token bridge.",
6
6
  "keywords": [
@@ -39,13 +39,14 @@
39
39
  },
40
40
  "dependencies": {
41
41
  "@azure/storage-blob": "^12.33.0",
42
- "@effected/github": "^0.10.1",
43
- "@effected/glob": "^0.6.0",
44
- "@effected/markdown": "^0.10.0",
45
- "@effected/npm": "^0.14.0",
46
- "@effected/sbom": "^0.6.1",
47
- "@effected/templates": "^0.6.0",
48
- "@effected/walker": "^0.9.0"
42
+ "@effected/github": "^0.10.2",
43
+ "@effected/glob": "^0.6.1",
44
+ "@effected/markdown": "^0.10.1",
45
+ "@effected/npm": "^0.14.2",
46
+ "@effected/sbom": "^0.6.2",
47
+ "@effected/semver": "^0.7.1",
48
+ "@effected/templates": "^0.6.1",
49
+ "@effected/walker": "^0.9.1"
49
50
  },
50
51
  "peerDependencies": {
51
52
  "@effect/platform-node": "4.0.0-rc.115",