@ac-kit/core 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/dist/big-int/is-safe-number.d.ts +20 -0
  3. package/dist/big-int/is-safe-number.d.ts.map +1 -0
  4. package/dist/big-int/is-safe-number.js +24 -0
  5. package/dist/big-int/is-safe-number.js.map +1 -0
  6. package/dist/guards/has-object-prototype.d.ts +27 -0
  7. package/dist/guards/has-object-prototype.d.ts.map +1 -0
  8. package/dist/guards/has-object-prototype.js +30 -0
  9. package/dist/guards/has-object-prototype.js.map +1 -0
  10. package/dist/guards/is-object.d.ts +28 -2
  11. package/dist/guards/is-object.d.ts.map +1 -1
  12. package/dist/guards/is-object.js +28 -2
  13. package/dist/guards/is-object.js.map +1 -1
  14. package/dist/guards/is-pojo.d.ts +27 -2
  15. package/dist/guards/is-pojo.d.ts.map +1 -1
  16. package/dist/guards/is-pojo.js +27 -2
  17. package/dist/guards/is-pojo.js.map +1 -1
  18. package/dist/index.d.ts +11 -13
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +11 -13
  21. package/dist/index.js.map +1 -1
  22. package/dist/json/replacers/big-int.d.ts.map +1 -1
  23. package/dist/json/replacers/big-int.js +2 -5
  24. package/dist/json/replacers/big-int.js.map +1 -1
  25. package/dist/number/parse-number-or-big-int.d.ts +30 -0
  26. package/dist/number/parse-number-or-big-int.d.ts.map +1 -0
  27. package/dist/number/parse-number-or-big-int.js +44 -0
  28. package/dist/number/parse-number-or-big-int.js.map +1 -0
  29. package/dist/object/defaults.d.ts.map +1 -1
  30. package/dist/object/defaults.js +11 -4
  31. package/dist/object/defaults.js.map +1 -1
  32. package/dist/object/get-at-path.d.ts +5 -0
  33. package/dist/object/get-at-path.d.ts.map +1 -1
  34. package/dist/object/get-at-path.js +5 -0
  35. package/dist/object/get-at-path.js.map +1 -1
  36. package/dist/object/is-unsafe-record-key.d.ts +26 -0
  37. package/dist/object/is-unsafe-record-key.d.ts.map +1 -0
  38. package/dist/object/is-unsafe-record-key.js +28 -0
  39. package/dist/object/is-unsafe-record-key.js.map +1 -0
  40. package/dist/object/merge-inplace.d.ts.map +1 -1
  41. package/dist/object/merge-inplace.js +4 -2
  42. package/dist/object/merge-inplace.js.map +1 -1
  43. package/dist/object/merge.d.ts.map +1 -1
  44. package/dist/object/merge.js +4 -2
  45. package/dist/object/merge.js.map +1 -1
  46. package/dist/object/null-if-empty.d.ts +12 -0
  47. package/dist/object/null-if-empty.d.ts.map +1 -0
  48. package/dist/object/null-if-empty.js +17 -0
  49. package/dist/object/null-if-empty.js.map +1 -0
  50. package/dist/object/set-at-path.d.ts +5 -0
  51. package/dist/object/set-at-path.d.ts.map +1 -1
  52. package/dist/object/set-at-path.js +10 -3
  53. package/dist/object/set-at-path.js.map +1 -1
  54. package/dist/object/set-record-entry.d.ts +32 -0
  55. package/dist/object/set-record-entry.d.ts.map +1 -0
  56. package/dist/object/set-record-entry.js +43 -0
  57. package/dist/object/set-record-entry.js.map +1 -0
  58. package/dist/object/traverse.js +3 -3
  59. package/dist/object/traverse.js.map +1 -1
  60. package/dist/system/fs/escape-posix-path.d.ts.map +1 -0
  61. package/dist/system/fs/escape-posix-path.js.map +1 -0
  62. package/dist/system/fs/escape-win32-path.d.ts.map +1 -0
  63. package/dist/system/fs/escape-win32-path.js.map +1 -0
  64. package/dist/system/net/ephemeral-port.d.ts.map +1 -0
  65. package/dist/system/net/ephemeral-port.js.map +1 -0
  66. package/dist/system/net/inet-address.d.ts.map +1 -0
  67. package/dist/system/net/inet-address.js.map +1 -0
  68. package/dist/system/net/inet-endpoint.d.ts.map +1 -0
  69. package/dist/system/net/inet-endpoint.js.map +1 -0
  70. package/package.json +2 -2
  71. package/dist/guards/is-plain-object.d.ts +0 -8
  72. package/dist/guards/is-plain-object.d.ts.map +0 -1
  73. package/dist/guards/is-plain-object.js +0 -11
  74. package/dist/guards/is-plain-object.js.map +0 -1
  75. package/dist/net/ephemeral-port.d.ts.map +0 -1
  76. package/dist/net/ephemeral-port.js.map +0 -1
  77. package/dist/net/inet-address.d.ts.map +0 -1
  78. package/dist/net/inet-address.js.map +0 -1
  79. package/dist/net/inet-endpoint.d.ts.map +0 -1
  80. package/dist/net/inet-endpoint.js.map +0 -1
  81. package/dist/shell/fs/escape-posix-path.d.ts.map +0 -1
  82. package/dist/shell/fs/escape-posix-path.js.map +0 -1
  83. package/dist/shell/fs/escape-win32-path.d.ts.map +0 -1
  84. package/dist/shell/fs/escape-win32-path.js.map +0 -1
  85. package/dist/shell/process/parse-env-variable.d.ts +0 -43
  86. package/dist/shell/process/parse-env-variable.d.ts.map +0 -1
  87. package/dist/shell/process/parse-env-variable.js +0 -109
  88. package/dist/shell/process/parse-env-variable.js.map +0 -1
  89. package/dist/shell/process/stringify-env-variable.d.ts +0 -50
  90. package/dist/shell/process/stringify-env-variable.d.ts.map +0 -1
  91. package/dist/shell/process/stringify-env-variable.js +0 -86
  92. package/dist/shell/process/stringify-env-variable.js.map +0 -1
  93. package/dist/shell/process/types.d.ts +0 -7
  94. package/dist/shell/process/types.d.ts.map +0 -1
  95. package/dist/shell/process/types.js +0 -2
  96. package/dist/shell/process/types.js.map +0 -1
  97. package/dist/shell/shell/escape-posix-sh-command-arg.d.ts +0 -20
  98. package/dist/shell/shell/escape-posix-sh-command-arg.d.ts.map +0 -1
  99. package/dist/shell/shell/escape-posix-sh-command-arg.js +0 -26
  100. package/dist/shell/shell/escape-posix-sh-command-arg.js.map +0 -1
  101. package/dist/shell/shell/escape-posix-sh-command.d.ts +0 -19
  102. package/dist/shell/shell/escape-posix-sh-command.d.ts.map +0 -1
  103. package/dist/shell/shell/escape-posix-sh-command.js +0 -55
  104. package/dist/shell/shell/escape-posix-sh-command.js.map +0 -1
  105. package/dist/shell/shell/escape-posix-sh-sqe.d.ts +0 -13
  106. package/dist/shell/shell/escape-posix-sh-sqe.d.ts.map +0 -1
  107. package/dist/shell/shell/escape-posix-sh-sqe.js +0 -15
  108. package/dist/shell/shell/escape-posix-sh-sqe.js.map +0 -1
  109. package/dist/shell/shell/escape-win32-cmd-command-arg.d.ts +0 -20
  110. package/dist/shell/shell/escape-win32-cmd-command-arg.d.ts.map +0 -1
  111. package/dist/shell/shell/escape-win32-cmd-command-arg.js +0 -29
  112. package/dist/shell/shell/escape-win32-cmd-command-arg.js.map +0 -1
  113. package/dist/shell/shell/escape-win32-cmd-command.d.ts +0 -18
  114. package/dist/shell/shell/escape-win32-cmd-command.d.ts.map +0 -1
  115. package/dist/shell/shell/escape-win32-cmd-command.js +0 -20
  116. package/dist/shell/shell/escape-win32-cmd-command.js.map +0 -1
  117. /package/dist/{shell → system}/fs/escape-posix-path.d.ts +0 -0
  118. /package/dist/{shell → system}/fs/escape-posix-path.js +0 -0
  119. /package/dist/{shell → system}/fs/escape-win32-path.d.ts +0 -0
  120. /package/dist/{shell → system}/fs/escape-win32-path.js +0 -0
  121. /package/dist/{net → system/net}/ephemeral-port.d.ts +0 -0
  122. /package/dist/{net → system/net}/ephemeral-port.js +0 -0
  123. /package/dist/{net → system/net}/inet-address.d.ts +0 -0
  124. /package/dist/{net → system/net}/inet-address.js +0 -0
  125. /package/dist/{net → system/net}/inet-endpoint.d.ts +0 -0
  126. /package/dist/{net → system/net}/inet-endpoint.js +0 -0
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Parse a numeric literal, widening to `bigint` rather than rounding.
3
+ *
4
+ * An integer the double range cannot hold exactly comes back as a `bigint`, so
5
+ * no value is silently rounded; everything else comes back as a `number`, so a
6
+ * caller only ever meets a `bigint` where it changes the answer.
7
+ *
8
+ * Accepts what `BigInt()` accepts — an optional sign, decimal digits, and the
9
+ * `0b`/`0o`/`0x` prefixes — and otherwise what `Number()` accepts: a fractional
10
+ * part, an exponent, and `Infinity`. Surrounding whitespace is ignored by both.
11
+ * Blank text is `null` here, where `Number("")` answers `0`.
12
+ *
13
+ * Use this to read a number out of text a human wrote — an environment
14
+ * variable, a config field, a CLI argument. Prefer `bigIntParse` when the value
15
+ * must be an integer, or when the radix is known and not spelled in the text;
16
+ * it reports a malformed input by throwing instead of by returning `null`.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * parseNumberOrBigInt("42"); // 42
21
+ * parseNumberOrBigInt("1.5e3"); // 1500
22
+ * parseNumberOrBigInt("9007199254740993"); // 9007199254740993n
23
+ * parseNumberOrBigInt("abc"); // null
24
+ * ```;
25
+ *
26
+ * @param text The text to parse.
27
+ * @returns The number or bigint it spells, or null if it spells neither.
28
+ */
29
+ export declare function parseNumberOrBigInt(text: string): number | bigint | null;
30
+ //# sourceMappingURL=parse-number-or-big-int.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-number-or-big-int.d.ts","sourceRoot":"","sources":["../../src/number/parse-number-or-big-int.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAaxE"}
@@ -0,0 +1,44 @@
1
+ import { bigIntIsSafeNumber } from "../big-int/is-safe-number.js";
2
+ /**
3
+ * Parse a numeric literal, widening to `bigint` rather than rounding.
4
+ *
5
+ * An integer the double range cannot hold exactly comes back as a `bigint`, so
6
+ * no value is silently rounded; everything else comes back as a `number`, so a
7
+ * caller only ever meets a `bigint` where it changes the answer.
8
+ *
9
+ * Accepts what `BigInt()` accepts — an optional sign, decimal digits, and the
10
+ * `0b`/`0o`/`0x` prefixes — and otherwise what `Number()` accepts: a fractional
11
+ * part, an exponent, and `Infinity`. Surrounding whitespace is ignored by both.
12
+ * Blank text is `null` here, where `Number("")` answers `0`.
13
+ *
14
+ * Use this to read a number out of text a human wrote — an environment
15
+ * variable, a config field, a CLI argument. Prefer `bigIntParse` when the value
16
+ * must be an integer, or when the radix is known and not spelled in the text;
17
+ * it reports a malformed input by throwing instead of by returning `null`.
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * parseNumberOrBigInt("42"); // 42
22
+ * parseNumberOrBigInt("1.5e3"); // 1500
23
+ * parseNumberOrBigInt("9007199254740993"); // 9007199254740993n
24
+ * parseNumberOrBigInt("abc"); // null
25
+ * ```;
26
+ *
27
+ * @param text The text to parse.
28
+ * @returns The number or bigint it spells, or null if it spells neither.
29
+ */
30
+ export function parseNumberOrBigInt(text) {
31
+ // `BigInt("")` and `Number("")` both answer 0, which no caller means by blank.
32
+ if (text.trim().length === 0) {
33
+ return null;
34
+ }
35
+ try {
36
+ const integer = BigInt(text);
37
+ return bigIntIsSafeNumber(integer) ? Number(integer) : integer;
38
+ }
39
+ catch {
40
+ const float = Number(text);
41
+ return Number.isNaN(float) ? null : float;
42
+ }
43
+ }
44
+ //# sourceMappingURL=parse-number-or-big-int.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-number-or-big-int.js","sourceRoot":"","sources":["../../src/number/parse-number-or-big-int.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC/C,+EAA+E;IAC/E,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3C,CAAC;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/object/defaults.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACvE,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,GACvC,CAAC,CAcH"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/object/defaults.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACvE,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,GACvC,CAAC,CAmBH"}
@@ -1,3 +1,4 @@
1
+ import { setRecordEntry } from "./set-record-entry.js";
1
2
  /**
2
3
  * Assign default options to an object.
3
4
  *
@@ -20,10 +21,16 @@
20
21
  export function defaults(...args) {
21
22
  return args.reduce((result, arg) => {
22
23
  if (arg) {
23
- for (const key in arg) {
24
- if (result[key] === undefined &&
25
- arg[key] !== undefined) {
26
- result[key] = arg[key];
24
+ // Own keys only: `for...in` would walk a hostile source's prototype too,
25
+ // and reading `result[key]` through the chain hides `__proto__` behind a
26
+ // value that is never `undefined`.
27
+ for (const key of Object.keys(arg)) {
28
+ const value = arg[key];
29
+ const current = Object.hasOwn(result, key)
30
+ ? result[key]
31
+ : undefined;
32
+ if (current === undefined && value !== undefined) {
33
+ setRecordEntry(result, key, value);
27
34
  }
28
35
  }
29
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/object/defaults.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,QAAQ,CACvB,GAAG,IAAsC;IAEzC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,MAAa,EAAE,GAAG,EAAE,EAAE;QACzC,IAAI,GAAG,EAAE,CAAC;YACT,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;gBACvB,IACE,MAAwB,CAAC,GAAG,CAAC,KAAK,SAAS;oBAC3C,GAAqB,CAAC,GAAG,CAAC,KAAK,SAAS,EACxC,CAAC;oBACD,MAAwB,CAAC,GAAG,CAAC,GAAI,GAAqB,CAAC,GAAG,CAAC,CAAC;gBAC9D,CAAC;YACF,CAAC;QACF,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC,EAAE,EAAO,CAAM,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/object/defaults.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,QAAQ,CACvB,GAAG,IAAsC;IAEzC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,MAAa,EAAE,GAAG,EAAE,EAAE;QACzC,IAAI,GAAG,EAAE,CAAC;YACT,yEAAyE;YACzE,yEAAyE;YACzE,mCAAmC;YACnC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpC,MAAM,KAAK,GAAI,GAAqB,CAAC,GAAG,CAAC,CAAC;gBAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBACzC,CAAC,CAAE,MAAwB,CAAC,GAAG,CAAC;oBAChC,CAAC,CAAC,SAAS,CAAC;gBAEb,IAAI,OAAO,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBAClD,cAAc,CAAC,MAAuB,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;gBACrD,CAAC;YACF,CAAC;QACF,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC,EAAE,EAAO,CAAM,CAAC;AAClB,CAAC"}
@@ -6,6 +6,11 @@ export type PropertyPath = readonly (string | number)[];
6
6
  /**
7
7
  * Gets the value at `path` inside `root`.
8
8
  *
9
+ * Unlike `setAtPath`, this does not refuse a path through `__proto__`,
10
+ * `constructor` or `prototype`: reading one hands back a prototype the caller
11
+ * could already reach through any object it holds, so refusing it would cost an
12
+ * honest lookup and prevent nothing.
13
+ *
9
14
  * @param root The root object/array to traverse
10
15
  * @param path The path to traverse
11
16
  * @returns The value at the path, or `undefined` if the path does not exist.
@@ -1 +1 @@
1
- {"version":3,"file":"get-at-path.d.ts","sourceRoot":"","sources":["../../src/object/get-at-path.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;AAExD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAkBpE"}
1
+ {"version":3,"file":"get-at-path.d.ts","sourceRoot":"","sources":["../../src/object/get-at-path.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;AAExD;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAkBpE"}
@@ -2,6 +2,11 @@ import { isObject } from "../guards/is-object.js";
2
2
  /**
3
3
  * Gets the value at `path` inside `root`.
4
4
  *
5
+ * Unlike `setAtPath`, this does not refuse a path through `__proto__`,
6
+ * `constructor` or `prototype`: reading one hands back a prototype the caller
7
+ * could already reach through any object it holds, so refusing it would cost an
8
+ * honest lookup and prevent nothing.
9
+ *
5
10
  * @param root The root object/array to traverse
6
11
  * @param path The path to traverse
7
12
  * @returns The value at the path, or `undefined` if the path does not exist.
@@ -1 +1 @@
1
- {"version":3,"file":"get-at-path.js","sourceRoot":"","sources":["../../src/object/get-at-path.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAQlD;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,IAAa,EAAE,IAAkB;IAC1D,IAAI,OAAO,GAAG,IAAI,CAAC;IAEnB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC;YACnB,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO;YACR,CAAC;YACD,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,OAAO,GAAI,OAAyB,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACP,OAAO;QACR,CAAC;IACF,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"get-at-path.js","sourceRoot":"","sources":["../../src/object/get-at-path.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAQlD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,IAAa,EAAE,IAAkB;IAC1D,IAAI,OAAO,GAAG,IAAI,CAAC;IAEnB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC;YACnB,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO;YACR,CAAC;YACD,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,OAAO,GAAI,OAAyB,CAAC,GAAG,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACP,OAAO;QACR,CAAC;IACF,CAAC;IAED,OAAO,OAAO,CAAC;AAChB,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Check whether a key may be followed while walking a record built from
3
+ * untrusted input.
4
+ *
5
+ * `__proto__` reaches the prototype setter when assigned to; `constructor`
6
+ * followed by `prototype` reaches `Object.prototype` when merely read, and a
7
+ * path-walking writer then mutates it. All three names are rejected together
8
+ * because a walk cannot tell which position it is in until the damage is done.
9
+ *
10
+ * Use this for a **path**. A single leaf assignment wants `setRecordEntry`
11
+ * instead, which stores such a key rather than refusing it — a record of
12
+ * environment variables or INI settings should still be able to hold one named
13
+ * `constructor`.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * isUnsafeRecordKey("__proto__"); // true
18
+ * isUnsafeRecordKey("constructor"); // true
19
+ * isUnsafeRecordKey("toString"); // false — shadowing is not pollution
20
+ * ```;
21
+ *
22
+ * @param key The key to check.
23
+ * @returns True if following the key can reach a shared prototype.
24
+ */
25
+ export declare function isUnsafeRecordKey(key: PropertyKey): boolean;
26
+ //# sourceMappingURL=is-unsafe-record-key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-unsafe-record-key.d.ts","sourceRoot":"","sources":["../../src/object/is-unsafe-record-key.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAE3D"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Check whether a key may be followed while walking a record built from
3
+ * untrusted input.
4
+ *
5
+ * `__proto__` reaches the prototype setter when assigned to; `constructor`
6
+ * followed by `prototype` reaches `Object.prototype` when merely read, and a
7
+ * path-walking writer then mutates it. All three names are rejected together
8
+ * because a walk cannot tell which position it is in until the damage is done.
9
+ *
10
+ * Use this for a **path**. A single leaf assignment wants `setRecordEntry`
11
+ * instead, which stores such a key rather than refusing it — a record of
12
+ * environment variables or INI settings should still be able to hold one named
13
+ * `constructor`.
14
+ *
15
+ * @example
16
+ * ```ts
17
+ * isUnsafeRecordKey("__proto__"); // true
18
+ * isUnsafeRecordKey("constructor"); // true
19
+ * isUnsafeRecordKey("toString"); // false — shadowing is not pollution
20
+ * ```;
21
+ *
22
+ * @param key The key to check.
23
+ * @returns True if following the key can reach a shared prototype.
24
+ */
25
+ export function isUnsafeRecordKey(key) {
26
+ return key === "__proto__" || key === "constructor" || key === "prototype";
27
+ }
28
+ //# sourceMappingURL=is-unsafe-record-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-unsafe-record-key.js","sourceRoot":"","sources":["../../src/object/is-unsafe-record-key.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAgB;IACjD,OAAO,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,WAAW,CAAC;AAC5E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"merge-inplace.d.ts","sourceRoot":"","sources":["../../src/object/merge-inplace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAOlD,OAAO,EAEN,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,MAAM,oBAAoB,CAAC;AA4B5B;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EACvD,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,EACT,OAAO,CAAC,EAAE,YAAY,GAAG;IAAE,SAAS,CAAC,EAAE,KAAK,CAAA;CAAE,GAC5C,CAAC,CAAC;AACL,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3D,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,YAAY,GAAG;IAAE,SAAS,EAAE,IAAI,CAAA;CAAE,GACzC,CAAC,CAAC;AASL;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,QAAQ,SAAS,SAAS,OAAO,EAAE,EAC3E,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,QAAQ,EACjB,OAAO,CAAC,EAAE,YAAY,GACpB,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CASnC"}
1
+ {"version":3,"file":"merge-inplace.d.ts","sourceRoot":"","sources":["../../src/object/merge-inplace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAOlD,OAAO,EAEN,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,MAAM,oBAAoB,CAAC;AA6B5B;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EACvD,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,EACT,OAAO,CAAC,EAAE,YAAY,GAAG;IAAE,SAAS,CAAC,EAAE,KAAK,CAAA;CAAE,GAC5C,CAAC,CAAC;AACL,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3D,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,YAAY,GAAG;IAAE,SAAS,EAAE,IAAI,CAAA;CAAE,GACzC,CAAC,CAAC;AASL;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,QAAQ,SAAS,SAAS,OAAO,EAAE,EAC3E,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,QAAQ,EACjB,OAAO,CAAC,EAAE,YAAY,GACpB,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,CASnC"}
@@ -4,6 +4,7 @@ import { isPojo } from "../guards/is-pojo.js";
4
4
  import { isSet } from "../guards/is-set.js";
5
5
  import { clone } from "./clone.js";
6
6
  import { MERGE_DEFAULT_OPTIONS, } from "./merge-options.js";
7
+ import { setRecordEntry } from "./set-record-entry.js";
7
8
  function resolve_(options) {
8
9
  return {
9
10
  recursive: options?.recursive ?? MERGE_DEFAULT_OPTIONS.recursive,
@@ -65,8 +66,9 @@ function mergeInplace_(target, source, options) {
65
66
  return fromSource_(source, options);
66
67
  }
67
68
  function mergePojoInplace_(target, source, options) {
68
- for (const key in source) {
69
- target[key] = nested_(target[key], source[key], options);
69
+ // Own keys only: `for...in` would walk a hostile source's prototype too.
70
+ for (const key of Object.keys(source)) {
71
+ setRecordEntry(target, key, nested_(target[key], source[key], options));
70
72
  }
71
73
  }
72
74
  function mergeSetInplace_(target, source, options) {
@@ -1 +1 @@
1
- {"version":3,"file":"merge-inplace.js","sourceRoot":"","sources":["../../src/object/merge-inplace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merge-inplace.js","sourceRoot":"","sources":["../../src/object/merge-inplace.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/object/merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAOlD,OAAO,EAEN,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,MAAM,oBAAoB,CAAC;AA4B5B;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAChD,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,EACT,OAAO,CAAC,EAAE,YAAY,GAAG;IAAE,SAAS,CAAC,EAAE,KAAK,CAAA;CAAE,GAC5C,CAAC,CAAC;AACL,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EACpD,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,YAAY,GAAG;IAAE,SAAS,EAAE,IAAI,CAAA;CAAE,GACzC,CAAC,CAAC;AASL;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,SAAS,SAAS,OAAO,EAAE,EAC3D,OAAO,EAAE,QAAQ,EACjB,OAAO,CAAC,EAAE,YAAY,GACpB,aAAa,CAAC,QAAQ,CAAC,CASzB"}
1
+ {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/object/merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAOlD,OAAO,EAEN,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,MAAM,oBAAoB,CAAC;AA6B5B;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAChD,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,EACT,OAAO,CAAC,EAAE,YAAY,GAAG;IAAE,SAAS,CAAC,EAAE,KAAK,CAAA;CAAE,GAC5C,CAAC,CAAC;AACL,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EACpD,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,YAAY,GAAG;IAAE,SAAS,EAAE,IAAI,CAAA;CAAE,GACzC,CAAC,CAAC;AASL;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,SAAS,SAAS,OAAO,EAAE,EAC3D,OAAO,EAAE,QAAQ,EACjB,OAAO,CAAC,EAAE,YAAY,GACpB,aAAa,CAAC,QAAQ,CAAC,CASzB"}
@@ -4,6 +4,7 @@ import { isPojo } from "../guards/is-pojo.js";
4
4
  import { isSet } from "../guards/is-set.js";
5
5
  import { clone } from "./clone.js";
6
6
  import { MERGE_DEFAULT_OPTIONS, } from "./merge-options.js";
7
+ import { setRecordEntry } from "./set-record-entry.js";
7
8
  function resolve_(options) {
8
9
  return {
9
10
  recursive: options?.recursive ?? MERGE_DEFAULT_OPTIONS.recursive,
@@ -60,8 +61,9 @@ function merge_(target, source, options) {
60
61
  }
61
62
  function mergePojo_(target, source, options) {
62
63
  const output = { ...target };
63
- for (const key in source) {
64
- output[key] = nested_(target[key], source[key], options);
64
+ // Own keys only: `for...in` would walk a hostile source's prototype too.
65
+ for (const key of Object.keys(source)) {
66
+ setRecordEntry(output, key, nested_(target[key], source[key], options));
65
67
  }
66
68
  return output;
67
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/object/merge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/object/merge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Normalizes an object with no own enumerable property to `null`.
3
+ *
4
+ * Useful against APIs that report "no value" as an empty object rather than as
5
+ * `null` or `undefined`, so that callers only have one absent form to test.
6
+ *
7
+ * @param value The object to normalize.
8
+ * @returns The object, or `null` when it is absent or has no own enumerable
9
+ * property.
10
+ */
11
+ export declare function nullIfEmpty<T extends object>(value: T | null | undefined): T | null;
12
+ //# sourceMappingURL=null-if-empty.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"null-if-empty.d.ts","sourceRoot":"","sources":["../../src/object/null-if-empty.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAC3C,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,GACzB,CAAC,GAAG,IAAI,CAMV"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Normalizes an object with no own enumerable property to `null`.
3
+ *
4
+ * Useful against APIs that report "no value" as an empty object rather than as
5
+ * `null` or `undefined`, so that callers only have one absent form to test.
6
+ *
7
+ * @param value The object to normalize.
8
+ * @returns The object, or `null` when it is absent or has no own enumerable
9
+ * property.
10
+ */
11
+ export function nullIfEmpty(value) {
12
+ if (value === null || value === undefined) {
13
+ return null;
14
+ }
15
+ return Object.keys(value).length === 0 ? null : value;
16
+ }
17
+ //# sourceMappingURL=null-if-empty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"null-if-empty.js","sourceRoot":"","sources":["../../src/object/null-if-empty.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAC1B,KAA2B;IAE3B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IACb,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AACvD,CAAC"}
@@ -6,6 +6,11 @@ import { PropertyPath } from "./get-at-path.js";
6
6
  * the next key (`number` → array, `string` → object). Existing `null` or
7
7
  * `undefined` intermediates are replaced.
8
8
  *
9
+ * A path containing `__proto__`, `constructor` or `prototype` is refused
10
+ * outright and nothing is written, because walking one reaches a prototype
11
+ * shared with every other object. The refusal is silent, like the one for a
12
+ * non-numeric index into an array.
13
+ *
9
14
  * @param root The root object/array to mutate
10
15
  * @param path The path to traverse
11
16
  * @param value The value to set at the path
@@ -1 +1 @@
1
- {"version":3,"file":"set-at-path.d.ts","sourceRoot":"","sources":["../../src/object/set-at-path.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,EACzC,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,OAAO,GACZ,IAAI,CAyCN"}
1
+ {"version":3,"file":"set-at-path.d.ts","sourceRoot":"","sources":["../../src/object/set-at-path.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIhD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,EACzC,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,OAAO,GACZ,IAAI,CAyCN"}
@@ -1,4 +1,6 @@
1
1
  import { isObject } from "../guards/is-object.js";
2
+ import { isUnsafeRecordKey } from "./is-unsafe-record-key.js";
3
+ import { setRecordEntry } from "./set-record-entry.js";
2
4
  /**
3
5
  * Mutates `root` by setting the value at `path`.
4
6
  *
@@ -6,12 +8,17 @@ import { isObject } from "../guards/is-object.js";
6
8
  * the next key (`number` → array, `string` → object). Existing `null` or
7
9
  * `undefined` intermediates are replaced.
8
10
  *
11
+ * A path containing `__proto__`, `constructor` or `prototype` is refused
12
+ * outright and nothing is written, because walking one reaches a prototype
13
+ * shared with every other object. The refusal is silent, like the one for a
14
+ * non-numeric index into an array.
15
+ *
9
16
  * @param root The root object/array to mutate
10
17
  * @param path The path to traverse
11
18
  * @param value The value to set at the path
12
19
  */
13
20
  export function setAtPath(root, path, value) {
14
- if (path.length === 0) {
21
+ if (path.length === 0 || path.some(isUnsafeRecordKey)) {
15
22
  return;
16
23
  }
17
24
  let current = root;
@@ -31,7 +38,7 @@ export function setAtPath(root, path, value) {
31
38
  else {
32
39
  const obj = current;
33
40
  if (!isObject(obj[key]) && !Array.isArray(obj[key])) {
34
- obj[key] = typeof nextKey === "number" ? [] : {};
41
+ setRecordEntry(obj, String(key), typeof nextKey === "number" ? [] : {});
35
42
  }
36
43
  current = obj[key];
37
44
  }
@@ -45,7 +52,7 @@ export function setAtPath(root, path, value) {
45
52
  current[lastIndex] = value;
46
53
  }
47
54
  else {
48
- current[lastKey] = value;
55
+ setRecordEntry(current, String(lastKey), value);
49
56
  }
50
57
  }
51
58
  //# sourceMappingURL=set-at-path.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"set-at-path.js","sourceRoot":"","sources":["../../src/object/set-at-path.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGlD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CACxB,IAAyC,EACzC,IAAkB,EAClB,KAAc;IAEd,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;IACR,CAAC;IAED,IAAI,OAAO,GAAY,IAAI,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;QAE7B,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC;YACnB,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO;YACR,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACjE,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,CAAC;YACD,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACP,MAAM,GAAG,GAAG,OAAwB,CAAC;YAErC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACrD,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,CAAC;YACD,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;IACF,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IACvC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC;QAC3B,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO;QACR,CAAC;QACD,OAAO,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,OAAyB,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;IAC7C,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"set-at-path.js","sourceRoot":"","sources":["../../src/object/set-at-path.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,SAAS,CACxB,IAAyC,EACzC,IAAkB,EAClB,KAAc;IAEd,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACvD,OAAO;IACR,CAAC;IAED,IAAI,OAAO,GAAY,IAAI,CAAC;IAE5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;QAE7B,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC;YACnB,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO;YACR,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACjE,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,CAAC;YACD,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACP,MAAM,GAAG,GAAG,OAAwB,CAAC;YAErC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACrD,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;IACF,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IACvC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC;QAC3B,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO;QACR,CAAC;QACD,OAAO,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;IAC5B,CAAC;SAAM,CAAC;QACP,cAAc,CAAC,OAAwB,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;AACF,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Assign into a record whose keys come from untrusted input.
3
+ *
4
+ * `record[key] = value` runs the `__proto__` setter inherited from
5
+ * `Object.prototype`, so one key out of parsed text can replace the prototype
6
+ * of every object built afterwards. Defining the property instead stores an
7
+ * ordinary own `__proto__` entry and reaches no setter, leaving the record an
8
+ * otherwise normal object: same prototype, same spread, same `deepEqual`.
9
+ *
10
+ * Costs one string comparison over a plain assignment for every other key, so
11
+ * it is safe to call from a parser loop — `Object.defineProperty` is far slower
12
+ * and is taken only for the single key that needs it.
13
+ *
14
+ * This guards a **write**. A caller walking a path of untrusted keys must also
15
+ * guard its reads with `isUnsafeRecordKey`: stepping through `constructor` and
16
+ * then `prototype` pollutes without ever assigning to `__proto__`.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * const parsed: Record<string, unknown> = {};
21
+ * setRecordEntry(parsed, "__proto__", { polluted: true });
22
+ *
23
+ * parsed["__proto__"]; // { polluted: true } — an own entry
24
+ * Object.getPrototypeOf(parsed) === Object.prototype; // true — untouched
25
+ * ```;
26
+ *
27
+ * @param record The record to assign into.
28
+ * @param key The key, which may come from untrusted input.
29
+ * @param value The value to store.
30
+ */
31
+ export declare function setRecordEntry<T>(record: Record<string, T>, key: string, value: NoInfer<T>): void;
32
+ //# sourceMappingURL=set-record-entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-record-entry.d.ts","sourceRoot":"","sources":["../../src/object/set-record-entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EACzB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GACf,IAAI,CAYN"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Assign into a record whose keys come from untrusted input.
3
+ *
4
+ * `record[key] = value` runs the `__proto__` setter inherited from
5
+ * `Object.prototype`, so one key out of parsed text can replace the prototype
6
+ * of every object built afterwards. Defining the property instead stores an
7
+ * ordinary own `__proto__` entry and reaches no setter, leaving the record an
8
+ * otherwise normal object: same prototype, same spread, same `deepEqual`.
9
+ *
10
+ * Costs one string comparison over a plain assignment for every other key, so
11
+ * it is safe to call from a parser loop — `Object.defineProperty` is far slower
12
+ * and is taken only for the single key that needs it.
13
+ *
14
+ * This guards a **write**. A caller walking a path of untrusted keys must also
15
+ * guard its reads with `isUnsafeRecordKey`: stepping through `constructor` and
16
+ * then `prototype` pollutes without ever assigning to `__proto__`.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * const parsed: Record<string, unknown> = {};
21
+ * setRecordEntry(parsed, "__proto__", { polluted: true });
22
+ *
23
+ * parsed["__proto__"]; // { polluted: true } — an own entry
24
+ * Object.getPrototypeOf(parsed) === Object.prototype; // true — untouched
25
+ * ```;
26
+ *
27
+ * @param record The record to assign into.
28
+ * @param key The key, which may come from untrusted input.
29
+ * @param value The value to store.
30
+ */
31
+ export function setRecordEntry(record, key, value) {
32
+ if (key === "__proto__") {
33
+ Object.defineProperty(record, key, {
34
+ value,
35
+ enumerable: true,
36
+ writable: true,
37
+ configurable: true,
38
+ });
39
+ return;
40
+ }
41
+ record[key] = value;
42
+ }
43
+ //# sourceMappingURL=set-record-entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-record-entry.js","sourceRoot":"","sources":["../../src/object/set-record-entry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,cAAc,CAC7B,MAAyB,EACzB,GAAW,EACX,KAAiB;IAEjB,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;QACzB,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE;YAClC,KAAK;YACL,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI;SAClB,CAAC,CAAC;QACH,OAAO;IACR,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AACrB,CAAC"}
@@ -1,5 +1,5 @@
1
+ import { hasObjectPrototype } from "../guards/has-object-prototype.js";
1
2
  import { isMap } from "../guards/is-map.js";
2
- import { isPlainObject } from "../guards/is-plain-object.js";
3
3
  import { isSet } from "../guards/is-set.js";
4
4
  import { defaults } from "./defaults.js";
5
5
  import { getObjectKeys, } from "./get-object-keys.js";
@@ -95,8 +95,8 @@ function traverseValue_(value, visitor, options, context) {
95
95
  return value;
96
96
  }
97
97
  // Check if we should traverse this object's properties
98
- const shouldTraverseObject = (isPlainObject(value) && options.traversePlainObjects) ||
99
- (!isPlainObject(value) &&
98
+ const shouldTraverseObject = (hasObjectPrototype(value) && options.traversePlainObjects) ||
99
+ (!hasObjectPrototype(value) &&
100
100
  shouldTraverseCustomObject(value, options.traverseCustomObjects));
101
101
  if (shouldTraverseObject) {
102
102
  return traverseObjectProperties_(value, visitor, options, parentPath);
@@ -1 +1 @@
1
- {"version":3,"file":"traverse.js","sourceRoot":"","sources":["../../src/object/traverse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"traverse.js","sourceRoot":"","sources":["../../src/object/traverse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escape-posix-path.d.ts","sourceRoot":"","sources":["../../../src/system/fs/escape-posix-path.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,SAAM,GAAG,MAAM,CAOtE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escape-posix-path.js","sourceRoot":"","sources":["../../../src/system/fs/escape-posix-path.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,WAAW,GAAG,GAAG;IAC7D,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjC,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;IACjB,CAAC;IAED,4CAA4C;IAC5C,OAAO,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/D,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escape-win32-path.d.ts","sourceRoot":"","sources":["../../../src/system/fs/escape-win32-path.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,SAAM,GAAG,MAAM,CAYtE"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escape-win32-path.js","sourceRoot":"","sources":["../../../src/system/fs/escape-win32-path.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,WAAW,GAAG,GAAG;IAC7D,IAAI,+CAA+C,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/D,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED,OAAO,CACN,GAAG;QACF,4CAA4C;SAC3C,OAAO,CAAC,wBAAwB,EAAE,WAAW,CAAC;SAC9C,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC;SAC9B,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CACnB,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ephemeral-port.d.ts","sourceRoot":"","sources":["../../../src/system/net/ephemeral-port.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAE9C,yDAAyD;AACzD,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAK9C;;;;;;GAMG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAK/C"}