@openclaw/discord 2026.9.6 → 2026.9.7

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 (150) hide show
  1. package/assets/icon.png +0 -0
  2. package/dist/.setup/{account-inspect-BwQj24ht.mjs → account-inspect-De8hOUxG.mjs} +1 -1
  3. package/dist/.setup/{accounts-CwJQoLjM.mjs → accounts-ChaMcixG.mjs} +1 -4
  4. package/dist/.setup/{activities-api-COU4-0nR.mjs → activities-api-tvbsU2e3.mjs} +38 -66
  5. package/dist/.setup/{api-CBK9zcq5.mjs → api-DVbJwZVt.mjs} +10 -2
  6. package/dist/.setup/{approval-handler.runtime-CbBktBb4.mjs → approval-handler.runtime-DxCK2Rux.mjs} +49 -125
  7. package/dist/.setup/{approval-message-updates-jf9zMaIC.mjs → approval-message-updates-BKFqavHZ.mjs} +2 -2
  8. package/dist/.setup/{audit-vKbh-LFR.mjs → audit-CLg9I71N.mjs} +5 -5
  9. package/dist/.setup/{channel-Dv4e3Jpc.mjs → channel-DxlUVU9t.mjs} +121 -227
  10. package/dist/.setup/{channel-type-DKnjV1XW.mjs → channel-type-DRCrEMss.mjs} +22 -22
  11. package/dist/.setup/{channel.setup-0NX6FFwi.mjs → channel.setup-CRo1GjV7.mjs} +6 -9
  12. package/dist/.setup/{components-yBEb75bB.mjs → components-Cq1PvIpN.mjs} +41 -69
  13. package/dist/.setup/{config-schema-CiZz-mtA.mjs → config-schema-oxELUSDx.mjs} +19 -44
  14. package/dist/.setup/{conversation-binding-route-B7qImK_b.mjs → conversation-binding-route-Caz_XuFH.mjs} +10 -5
  15. package/dist/.setup/{directory-config-BytTftz-.mjs → directory-config-esqNn0Eo.mjs} +6 -9
  16. package/dist/.setup/{directory-live--EGTH0DC.mjs → directory-live-DtKRHuGV.mjs} +6 -12
  17. package/dist/.setup/{discord-BXpHW-cu.mjs → discord-0xJYfdDD.mjs} +82 -386
  18. package/dist/.setup/{doctor-D1R-uFIu.mjs → doctor-BCl1H5tl.mjs} +21 -36
  19. package/dist/.setup/{doctor-contract-Co5vRCZ6.mjs → doctor-contract-CvvgwrrG.mjs} +41 -50
  20. package/dist/.setup/{channel-actions.runtime-leZuw01r.mjs → handle-action-CUvQWnE7.mjs} +67 -104
  21. package/dist/.setup/{handle-action.guild-admin-DcFa8NwA.mjs → handle-action.guild-admin-Df-8gVle.mjs} +62 -120
  22. package/dist/.setup/{live-policy-config-eKQ-PLdy.mjs → live-policy-config-8Pv20CHc.mjs} +2 -3
  23. package/dist/.setup/{message-handler-X6ejmbtY.mjs → message-handler-B-Jk4oDk.mjs} +18 -94
  24. package/dist/.setup/{message-handler.preflight-pluralkit-8Xji34AF.mjs → message-handler.preflight-pluralkit-CWLUBVcx.mjs} +8 -10
  25. package/dist/.setup/{message-handler.preflight-DE_POxFc.mjs → message-handler.preflight-v-__NSDq.mjs} +69 -180
  26. package/dist/.setup/{message-handler.process-CCmIVnxy.mjs → message-handler.process-BNFFuChn.mjs} +65 -86
  27. package/dist/.setup/{outbound-adapter-ClIgmu4F.mjs → outbound-adapter-BobT-kse.mjs} +105 -19
  28. package/dist/.setup/{outbound-session-route-VulUE0yV.mjs → outbound-session-route-zVGxxceg.mjs} +140 -108
  29. package/dist/.setup/{pluralkit-CdAt1G0P.mjs → pluralkit-a6_NLfH9.mjs} +1 -1
  30. package/dist/.setup/{presence-cache-dYSHPWMx.mjs → presence-cache-Di3H3DIU.mjs} +0 -4
  31. package/dist/.setup/{probe-CupW4we4.mjs → probe-LYrIHlBF.mjs} +13 -4
  32. package/dist/.setup/{provider-iOf73HW-.mjs → provider-B_G5hASF.mjs} +721 -1416
  33. package/dist/.setup/provider-session.runtime-BYlTBFD2.mjs +6 -0
  34. package/dist/.setup/provider.runtime-CUE3UxER.mjs +2 -0
  35. package/dist/.setup/{realtime-session.runtime-Dz8uVutq.mjs → realtime-session.runtime-oUd9DOcz.mjs} +41 -55
  36. package/dist/.setup/{receive-recovery-DHst8WRx.mjs → receive-recovery-CHPOsnLc.mjs} +1 -4
  37. package/dist/.setup/{resolve-allowlist-common-CwMBzbx9.mjs → resolve-allowlist-common-DPdRggu5.mjs} +4 -7
  38. package/dist/.setup/{resolve-channels-BbvsLQOZ.mjs → resolve-channels-BFPNRmVv.mjs} +21 -40
  39. package/dist/.setup/{resolve-users-ByFlR7LQ.mjs → resolve-users-0-aBuCy3.mjs} +4 -4
  40. package/dist/.setup/{retry-BEYkDy0P.mjs → retry-pz_cSha2.mjs} +3 -3
  41. package/dist/.setup/rolldown-runtime-B4FMCO8f.mjs +28 -0
  42. package/dist/.setup/{runtime-B8lJfyrA.mjs → runtime-FN000lxA.mjs} +60 -162
  43. package/dist/.setup/runtime-doctor-migrations-CshUGl36.mjs +159 -0
  44. package/dist/.setup/{runtime-DisDbixd.mjs → runtime-sUksZ--Q.mjs} +2 -5
  45. package/dist/.setup/{secret-config-contract-DFu9hfU8.mjs → secret-config-contract-uOE2J7yM.mjs} +15 -85
  46. package/dist/.setup/{security-audit-s5w50-Ly.mjs → security-audit-Cdaegq7C.mjs} +3 -1
  47. package/dist/.setup/{send-CIBzvXjS.mjs → send-CrfEI6Bs.mjs} +53 -108
  48. package/dist/.setup/{send.components-ChY21qr-.mjs → send.components-DxQAMfES.mjs} +62 -107
  49. package/dist/.setup/{send.outbound-QTyuFupn.mjs → send.outbound-BISKnb-a.mjs} +66 -140
  50. package/dist/.setup/{send.shared-VNvWfX2T.mjs → send.shared-DGFkbkQR.mjs} +10 -25
  51. package/dist/.setup/{sender-identity-0Ymgvmaj.mjs → sender-identity-B9X5Vb9R.mjs} +2 -3
  52. package/dist/.setup/setup-plugin-api-BQUBxbhe.mjs +3 -0
  53. package/dist/.setup/{shared-DHPDaMSx.mjs → shared-B3wZ4hN-.mjs} +25 -32
  54. package/dist/.setup/{subagent-hooks-CjW7r8Pe.mjs → subagent-hooks-nlUE9ow7.mjs} +5 -6
  55. package/dist/.setup/system-events-CdeZnvPV.mjs +33 -0
  56. package/dist/.setup/{target-resolver-BXpy6VT8.mjs → target-resolver-BuLapkhy.mjs} +9 -12
  57. package/dist/.setup/targets-0KUcEIYx.mjs +3 -0
  58. package/dist/.setup/{thread-bindings-CEh2dhqP.mjs → thread-bindings-D7TfgjR_.mjs} +33 -35
  59. package/dist/.setup/{thread-bindings.manager-ve-i6oqt.mjs → thread-bindings.manager-DN-NissX.mjs} +325 -233
  60. package/dist/.setup/thread-bindings.session-updates-CshfKghV.mjs +359 -0
  61. package/dist/.setup/{thread-bindings.state-BThFQEga.mjs → thread-bindings.state-g6v9zAym.mjs} +21 -62
  62. package/dist/.setup/{transcripts-source-DVegW0WI.mjs → transcripts-source-p8EV179h.mjs} +76 -235
  63. package/dist/.setup/{typing-BKZL5fGj.mjs → typing-BiHCzBRu.mjs} +2 -1
  64. package/dist/.setup/{voice-runtime-elTtjEIG.mjs → voice-runtime-B46rcwrG.mjs} +140 -244
  65. package/dist/account-inspect-api.js +1 -1
  66. package/dist/action-runtime-api.js +1 -1
  67. package/dist/activities-api.js +1 -1
  68. package/dist/api.js +18 -18
  69. package/dist/channel-config-api.js +1 -1
  70. package/dist/channel-plugin-api.js +1 -1
  71. package/dist/directory-contract-api.js +1 -1
  72. package/dist/doctor-contract-api.js +4 -4
  73. package/dist/index.js +1 -1
  74. package/dist/runtime-api.js +20 -20
  75. package/dist/secret-contract-api.js +1 -1
  76. package/dist/security-audit-contract-api.js +1 -1
  77. package/dist/setup-entry.js +1 -1
  78. package/dist/setup-plugin-api.js +1 -1
  79. package/dist/src/voice/audio-worker.runtime.js +15 -24
  80. package/dist/subagent-hooks-api.js +3 -4
  81. package/dist/transcripts-source-api.js +1 -1
  82. package/node_modules/@types/node/README.md +2 -2
  83. package/node_modules/@types/node/child_process.d.ts +1 -1
  84. package/node_modules/@types/node/crypto.d.ts +20 -8
  85. package/node_modules/@types/node/ffi.d.ts +14 -0
  86. package/node_modules/@types/node/http2.d.ts +3 -2
  87. package/node_modules/@types/node/net.d.ts +16 -4
  88. package/node_modules/@types/node/package.json +2 -17
  89. package/node_modules/@types/node/process.d.ts +1 -0
  90. package/node_modules/@types/node/quic.d.ts +39 -1
  91. package/node_modules/@types/node/stream/iter.d.ts +9 -12
  92. package/node_modules/@types/node/test/reporters.d.ts +1 -0
  93. package/node_modules/@types/node/test.d.ts +72 -0
  94. package/node_modules/@types/node/tls.d.ts +14 -10
  95. package/node_modules/@types/node/vm.d.ts +2 -1
  96. package/node_modules/@types/node/worker_threads.d.ts +4 -1
  97. package/node_modules/typebox/build/compile/code.mjs +1 -2
  98. package/node_modules/typebox/build/compile/validator.mjs +5 -1
  99. package/node_modules/typebox/build/format/iri.mjs +16 -9
  100. package/node_modules/typebox/build/guard/emit.mjs +2 -2
  101. package/node_modules/typebox/build/guard/guard.d.mts +7 -5
  102. package/node_modules/typebox/build/guard/guard.mjs +14 -9
  103. package/node_modules/typebox/build/guard/index.mjs +6 -0
  104. package/node_modules/typebox/build/guard/unicode/unicode.d.mts +6 -0
  105. package/node_modules/typebox/build/guard/unicode/unicode.mjs +35 -0
  106. package/node_modules/typebox/build/guard/{string.mjs → unicode/unicode_segment.mjs} +16 -19
  107. package/node_modules/typebox/build/schema/build.mjs +2 -3
  108. package/node_modules/typebox/build/schema/engine/_pathing.d.mts +1 -0
  109. package/node_modules/typebox/build/schema/engine/_pathing.mjs +11 -0
  110. package/node_modules/typebox/build/schema/engine/_refine.mjs +13 -5
  111. package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +2 -1
  112. package/node_modules/typebox/build/schema/engine/dependencies.mjs +2 -1
  113. package/node_modules/typebox/build/schema/engine/dependentSchemas.mjs +2 -1
  114. package/node_modules/typebox/build/schema/engine/dynamicRef.d.mts +1 -1
  115. package/node_modules/typebox/build/schema/engine/dynamicRef.mjs +2 -2
  116. package/node_modules/typebox/build/schema/engine/format.mjs +9 -2
  117. package/node_modules/typebox/build/schema/engine/patternProperties.mjs +3 -2
  118. package/node_modules/typebox/build/schema/engine/properties.mjs +3 -2
  119. package/node_modules/typebox/build/schema/engine/propertyNames.mjs +2 -1
  120. package/node_modules/typebox/build/schema/engine/recursiveRef.d.mts +1 -1
  121. package/node_modules/typebox/build/schema/engine/recursiveRef.mjs +2 -2
  122. package/node_modules/typebox/build/schema/engine/ref.d.mts +1 -1
  123. package/node_modules/typebox/build/schema/engine/ref.mjs +2 -2
  124. package/node_modules/typebox/build/schema/engine/schema.mjs +24 -24
  125. package/node_modules/typebox/build/schema/parse.mjs +3 -0
  126. package/node_modules/typebox/build/schema/pointer/pointer.d.mts +1 -6
  127. package/node_modules/typebox/build/schema/pointer/pointer.mjs +47 -64
  128. package/node_modules/typebox/build/system/settings/internal.d.mts +2 -0
  129. package/node_modules/typebox/build/system/settings/internal.mjs +20 -0
  130. package/node_modules/typebox/build/system/settings/settings.d.mts +11 -0
  131. package/node_modules/typebox/build/system/settings/settings.mjs +14 -0
  132. package/node_modules/typebox/build/type/extends/inference.d.mts +1 -1
  133. package/node_modules/typebox/build/type/extends/inference.mjs +15 -2
  134. package/node_modules/typebox/build/type/extends/tuple.d.mts +2 -1
  135. package/node_modules/typebox/build/type/extends/tuple.mjs +21 -1
  136. package/node_modules/typebox/build/value/parse/parse.mjs +10 -4
  137. package/node_modules/typebox/package.json +1 -1
  138. package/node_modules/typebox/readme.md +3 -1
  139. package/openclaw.plugin.json +21 -1
  140. package/package.json +5 -5
  141. package/dist/.setup/agent-components.runtime-CEPrf2SY.mjs +0 -4
  142. package/dist/.setup/probe.runtime-DBQ_AGPe.mjs +0 -2
  143. package/dist/.setup/provider-session.runtime-DrGAYnZv.mjs +0 -6
  144. package/dist/.setup/provider.runtime-BmjW_pIw.mjs +0 -2
  145. package/dist/.setup/security-audit.runtime-DHtYenx9.mjs +0 -2
  146. package/dist/.setup/setup-plugin-api-Dvr41dyx.mjs +0 -3
  147. package/dist/.setup/system-events-B2YEEMbS.mjs +0 -34
  148. package/dist/.setup/targets-CvemhN3i.mjs +0 -3
  149. package/dist/.setup/thread-bindings.session-updates-DCQq1WZ5.mjs +0 -55
  150. /package/node_modules/typebox/build/guard/{string.d.mts → unicode/unicode_segment.d.mts} +0 -0
@@ -0,0 +1,11 @@
1
+ // ------------------------------------------------------------------
2
+ // EncodeFragment
3
+ //
4
+ // We use this function to encode instancePath and schemaPath path
5
+ // fragments for errors. We need this encoding such that callers
6
+ // can use Pointer to deref error targets. We should consider adding
7
+ // this to the Pointer module as Pointer.Encode(...) (review)
8
+ // ------------------------------------------------------------------
9
+ export function EncodeFragment(fragment) {
10
+ return fragment.replace(/~/g, '~0').replace(/\//g, '~1');
11
+ }
@@ -4,9 +4,18 @@ import { EmitGuard as E, Guard as G } from '../../guard/index.mjs';
4
4
  // ------------------------------------------------------------------
5
5
  // Build
6
6
  // ------------------------------------------------------------------
7
+ function BuildRefineMultiple(_stack, _context, schema, value) {
8
+ const external = Externals.CreateVariable(schema['~refine']);
9
+ return E.Every(external, E.Constant(0), ['refinement', '_'], E.Call(E.Member('refinement', 'check'), [value]));
10
+ }
11
+ function BuildRefineSingle(_stack, _context, schema, value) {
12
+ const external = Externals.CreateVariable(schema['~refine'][0]);
13
+ return E.Call(E.Member(external, 'check'), [value]);
14
+ }
7
15
  export function BuildRefine(_stack, _context, schema, value) {
8
- const refinements = Externals.CreateVariable(schema['~refine'].map((refinement) => refinement));
9
- return E.Every(refinements, E.Constant(0), ['refinement', '_'], E.Call(E.Member('refinement', 'check'), [value]));
16
+ return G.IsEqual(schema['~refine'].length, 1)
17
+ ? BuildRefineSingle(_stack, _context, schema, value)
18
+ : BuildRefineMultiple(_stack, _context, schema, value);
10
19
  }
11
20
  // ------------------------------------------------------------------
12
21
  // Check
@@ -19,8 +28,7 @@ export function CheckRefine(_stack, _context, schema, value) {
19
28
  // ------------------------------------------------------------------
20
29
  export function ErrorRefine(_stack, context, schemaPath, instancePath, schema, value) {
21
30
  return G.EveryAll(schema['~refine'], 0, (refinement, index) => {
22
- return refinement.check(value) || context.AddError('~refine', schemaPath, instancePath, {
23
- index, message: refinement.error(value)
24
- });
31
+ return refinement.check(value) ||
32
+ context.AddError('~refine', schemaPath, instancePath, { index, message: refinement.error(value) });
25
33
  });
26
34
  }
@@ -1,6 +1,7 @@
1
1
  // deno-fmt-ignore-file
2
2
  import * as Schema from '../types/index.mjs';
3
3
  import * as Externals from './_externals.mjs';
4
+ import * as Pathing from './_pathing.mjs';
4
5
  import { Unique } from './_unique.mjs';
5
6
  import { UnicodeRegExp } from './_regexp.mjs';
6
7
  import { EmitGuard as E, Guard as G } from '../../guard/index.mjs';
@@ -107,7 +108,7 @@ export function ErrorAdditionalProperties(stack, context, schemaPath, instancePa
107
108
  const additionalProperties = [];
108
109
  const isAdditionalProperties = G.EveryAll(G.Keys(value), 0, (key, _index) => {
109
110
  const nextSchemaPath = `${schemaPath}/additionalProperties`;
110
- const nextInstancePath = `${instancePath}/${key}`;
111
+ const nextInstancePath = `${instancePath}/${Pathing.EncodeFragment(key)}`;
111
112
  const isAdditionalProperty = regexp.test(key) ||
112
113
  (ErrorSchemaPushStack(stack, context, nextSchemaPath, nextInstancePath, schema.additionalProperties, value[key]) && context.AddKey(key));
113
114
  if (!isAdditionalProperty)
@@ -1,4 +1,5 @@
1
1
  // deno-fmt-ignore-file
2
+ import * as Pathing from './_pathing.mjs';
2
3
  import { EmitGuard as E, Guard as G } from '../../guard/index.mjs';
3
4
  import { BuildSchema, CheckSchema, ErrorSchema } from './schema.mjs';
4
5
  // ------------------------------------------------------------------
@@ -32,7 +33,7 @@ export function CheckDependencies(stack, context, schema, value) {
32
33
  export function ErrorDependencies(stack, context, schemaPath, instancePath, schema, value) {
33
34
  const isLength = G.IsEqual(G.Keys(value).length, 0);
34
35
  const isEvery = G.EveryAll(G.Entries(schema.dependencies), 0, ([key, schema]) => {
35
- const nextSchemaPath = `${schemaPath}/dependencies/${key}`;
36
+ const nextSchemaPath = `${schemaPath}/dependencies/${Pathing.EncodeFragment(key)}`;
36
37
  return !G.HasPropertyKey(value, key) || (G.IsArray(schema)
37
38
  ? schema.every((dependency) => G.HasPropertyKey(value, dependency) ||
38
39
  context.AddError('dependencies', schemaPath, instancePath, { property: key, dependencies: schema }))
@@ -1,4 +1,5 @@
1
1
  // deno-fmt-ignore-file
2
+ import * as Pathing from './_pathing.mjs';
2
3
  import { Guard as G, EmitGuard as E } from '../../guard/index.mjs';
3
4
  import { BuildSchema, CheckSchema, ErrorSchema } from './schema.mjs';
4
5
  // ------------------------------------------------------------------
@@ -30,7 +31,7 @@ export function CheckDependentSchemas(stack, context, schema, value) {
30
31
  export function ErrorDependentSchemas(stack, context, schemaPath, instancePath, schema, value) {
31
32
  const isLength = G.IsEqual(G.Keys(value).length, 0);
32
33
  const isEvery = G.EveryAll(G.Entries(schema.dependentSchemas), 0, ([key, schema]) => {
33
- const nextSchemaPath = `${schemaPath}/dependentSchemas/${key}`;
34
+ const nextSchemaPath = `${schemaPath}/dependentSchemas/${Pathing.EncodeFragment(key)}`;
34
35
  return !G.HasPropertyKey(value, key) ||
35
36
  ErrorSchema(stack, context, nextSchemaPath, instancePath, schema, value);
36
37
  });
@@ -3,4 +3,4 @@ import * as Stack from './_stack.mjs';
3
3
  import { BuildContext, CheckContext, ErrorContext } from './_context.mjs';
4
4
  export declare function BuildDynamicRef(stack: Stack.XStack, context: BuildContext, schema: Schema.XDynamicRef, value: string): string;
5
5
  export declare function CheckDynamicRef(stack: Stack.XStack, context: CheckContext, schema: Schema.XDynamicRef, value: unknown): boolean;
6
- export declare function ErrorDynamicRef(stack: Stack.XStack, context: ErrorContext, _schemaPath: string, instancePath: string, schema: Schema.XDynamicRef, value: unknown): boolean;
6
+ export declare function ErrorDynamicRef(stack: Stack.XStack, context: ErrorContext, schemaPath: string, instancePath: string, schema: Schema.XDynamicRef, value: unknown): boolean;
@@ -22,8 +22,8 @@ export function CheckDynamicRef(stack, context, schema, value) {
22
22
  // ------------------------------------------------------------------
23
23
  // Error
24
24
  // ------------------------------------------------------------------
25
- export function ErrorDynamicRef(stack, context, _schemaPath, instancePath, schema, value) {
25
+ export function ErrorDynamicRef(stack, context, schemaPath, instancePath, schema, value) {
26
26
  const target = Resolve.DynamicRef(stack, schema) ?? false;
27
27
  const nextStack = target ? { ...stack, pendingResource: true } : stack;
28
- return (Schema.IsSchema(target) && ErrorSchema(nextStack, context, '#', instancePath, target, value));
28
+ return (Schema.IsSchema(target) && ErrorSchema(nextStack, context, schemaPath, instancePath, target, value));
29
29
  }
@@ -1,11 +1,18 @@
1
1
  // deno-fmt-ignore-file
2
+ import * as Externals from './_externals.mjs';
2
3
  import { Format } from '../../format/index.mjs';
3
4
  import { EmitGuard as E } from '../../guard/index.mjs';
4
5
  // ------------------------------------------------------------------
5
- // Build
6
+ // Build (Remote)
7
+ // ------------------------------------------------------------------
8
+ // export function BuildFormat(_stack: Stack.XStack, _context: BuildContext, schema: Schema.XFormat, value: string): string {
9
+ // return E.Call(E.Member('Format', 'Test'), [E.Constant(schema.format), value])
10
+ // }
11
+ // ------------------------------------------------------------------
12
+ // Build (Inline)
6
13
  // ------------------------------------------------------------------
7
14
  export function BuildFormat(_stack, _context, schema, value) {
8
- return E.Call(E.Member('Format', 'Test'), [E.Constant(schema.format), value]);
15
+ return Format.Has(schema.format) ? E.Call(Externals.CreateVariable(Format.Get(schema.format)), [value]) : E.Constant(true);
9
16
  }
10
17
  // ------------------------------------------------------------------
11
18
  // Check
@@ -1,5 +1,6 @@
1
1
  // deno-fmt-ignore-file
2
2
  import * as Externals from './_externals.mjs';
3
+ import * as Pathing from './_pathing.mjs';
3
4
  import { Unique } from './_unique.mjs';
4
5
  import { UnicodeRegExp } from './_regexp.mjs';
5
6
  import { BuildSchemaPushStack, CheckSchemaPushStack, ErrorSchemaPushStack } from './schema.mjs';
@@ -34,10 +35,10 @@ export function CheckPatternProperties(stack, context, schema, value) {
34
35
  // ------------------------------------------------------------------
35
36
  export function ErrorPatternProperties(stack, context, schemaPath, instancePath, schema, value) {
36
37
  return G.EveryAll(G.Entries(schema.patternProperties), 0, ([pattern, schema]) => {
37
- const nextSchemaPath = `${schemaPath}/patternProperties/${pattern}`;
38
+ const nextSchemaPath = `${schemaPath}/patternProperties/${Pathing.EncodeFragment(pattern)}`;
38
39
  const regexp = UnicodeRegExp(pattern);
39
40
  return G.EveryAll(G.Entries(value), 0, ([key, value]) => {
40
- const nextInstancePath = `${instancePath}/${key}`;
41
+ const nextInstancePath = `${instancePath}/${Pathing.EncodeFragment(key)}`;
41
42
  const notKey = !regexp.test(key);
42
43
  return notKey || ErrorSchemaPushStack(stack, context, nextSchemaPath, nextInstancePath, schema, value) && context.AddKey(key);
43
44
  });
@@ -1,5 +1,6 @@
1
1
  // deno-fmt-ignore-file
2
2
  import * as Schema from '../types/index.mjs';
3
+ import * as Pathing from './_pathing.mjs';
3
4
  import { BuildSchemaPushStack, CheckSchemaPushStack, ErrorSchemaPushStack } from './schema.mjs';
4
5
  import { InexactOptionalCheck, InexactOptionalBuild, IsExactOptional } from './_exact_optional.mjs';
5
6
  import { Guard as G, EmitGuard as E } from '../../guard/index.mjs';
@@ -63,8 +64,8 @@ export function CheckProperties(stack, context, schema, value) {
63
64
  export function ErrorProperties(stack, context, schemaPath, instancePath, schema, value) {
64
65
  const required = Schema.IsRequired(schema) ? schema.required : [];
65
66
  const isProperties = G.EveryAll(G.Entries(schema.properties), 0, ([key, schema]) => {
66
- const nextSchemaPath = `${schemaPath}/properties/${key}`;
67
- const nextInstancePath = `${instancePath}/${key}`;
67
+ const nextSchemaPath = `${schemaPath}/properties/${Pathing.EncodeFragment(key)}`;
68
+ const nextInstancePath = `${instancePath}/${Pathing.EncodeFragment(key)}`;
68
69
  // Defer error generation for IsExactOptional
69
70
  const isProperty = () => (!G.HasPropertyKey(value, key) || (ErrorSchemaPushStack(stack, context, nextSchemaPath, nextInstancePath, schema, value[key]) && context.AddKey(key)));
70
71
  return IsExactOptional(required, key)
@@ -1,4 +1,5 @@
1
1
  // deno-fmt-ignore-file
2
+ import * as Pathing from './_pathing.mjs';
2
3
  import { Unique } from './_unique.mjs';
3
4
  import { BuildSchema, CheckSchema, ErrorSchema } from './schema.mjs';
4
5
  import { EmitGuard as E, Guard as G } from '../../guard/index.mjs';
@@ -21,7 +22,7 @@ export function CheckPropertyNames(stack, context, schema, value) {
21
22
  export function ErrorPropertyNames(stack, context, schemaPath, instancePath, schema, value) {
22
23
  const propertyNames = [];
23
24
  const isPropertyNames = G.EveryAll(G.Keys(value), 0, (key, _index) => {
24
- const nextInstancePath = `${instancePath}/${key}`;
25
+ const nextInstancePath = `${instancePath}/${Pathing.EncodeFragment(key)}`;
25
26
  const nextSchemaPath = `${schemaPath}/propertyNames`;
26
27
  const isPropertyName = ErrorSchema(stack, context, nextSchemaPath, nextInstancePath, schema.propertyNames, key);
27
28
  if (!isPropertyName)
@@ -3,4 +3,4 @@ import * as Stack from './_stack.mjs';
3
3
  import { BuildContext, CheckContext, ErrorContext } from './_context.mjs';
4
4
  export declare function BuildRecursiveRef(stack: Stack.XStack, context: BuildContext, schema: Schema.XRecursiveRef, value: string): string;
5
5
  export declare function CheckRecursiveRef(stack: Stack.XStack, context: CheckContext, schema: Schema.XRecursiveRef, value: unknown): boolean;
6
- export declare function ErrorRecursiveRef(stack: Stack.XStack, context: ErrorContext, _schemaPath: string, instancePath: string, schema: Schema.XRecursiveRef, value: unknown): boolean;
6
+ export declare function ErrorRecursiveRef(stack: Stack.XStack, context: ErrorContext, schemaPath: string, instancePath: string, schema: Schema.XRecursiveRef, value: unknown): boolean;
@@ -22,8 +22,8 @@ export function CheckRecursiveRef(stack, context, schema, value) {
22
22
  // ------------------------------------------------------------------
23
23
  // Error
24
24
  // ------------------------------------------------------------------
25
- export function ErrorRecursiveRef(stack, context, _schemaPath, instancePath, schema, value) {
25
+ export function ErrorRecursiveRef(stack, context, schemaPath, instancePath, schema, value) {
26
26
  const target = Resolve.RecursiveRef(stack, schema) ?? false;
27
27
  const nextStack = target ? { ...stack, pendingResource: true } : stack;
28
- return (Schema.IsSchema(target) && ErrorSchema(nextStack, context, '#', instancePath, target, value));
28
+ return (Schema.IsSchema(target) && ErrorSchema(nextStack, context, schemaPath, instancePath, target, value));
29
29
  }
@@ -3,4 +3,4 @@ import * as Stack from './_stack.mjs';
3
3
  import { BuildContext, CheckContext, ErrorContext } from './_context.mjs';
4
4
  export declare function BuildRef(stack: Stack.XStack, context: BuildContext, schema: Schema.XRef, value: string): string;
5
5
  export declare function CheckRef(stack: Stack.XStack, context: CheckContext, schema: Schema.XRef, value: unknown): boolean;
6
- export declare function ErrorRef(stack: Stack.XStack, context: ErrorContext, _schemaPath: string, instancePath: string, schema: Schema.XRef, value: unknown): boolean;
6
+ export declare function ErrorRef(stack: Stack.XStack, context: ErrorContext, schemaPath: string, instancePath: string, schema: Schema.XRef, value: unknown): boolean;
@@ -43,11 +43,11 @@ export function CheckRef(stack, context, schema, value) {
43
43
  // ------------------------------------------------------------------
44
44
  // Error
45
45
  // ------------------------------------------------------------------
46
- export function ErrorRef(stack, context, _schemaPath, instancePath, schema, value) {
46
+ export function ErrorRef(stack, context, schemaPath, instancePath, schema, value) {
47
47
  const result = Resolve.Ref(stack, schema);
48
48
  const target = result.schema ?? false;
49
49
  const nextContext = new ErrorContext();
50
- const valid = (Schema.IsSchema(target) && ErrorSchema(result.stack, nextContext, '#', instancePath, target, value));
50
+ const valid = (Schema.IsSchema(target) && ErrorSchema(result.stack, nextContext, schemaPath, instancePath, target, value));
51
51
  if (valid)
52
52
  context.Merge([nextContext]);
53
53
  if (!valid)
@@ -173,14 +173,14 @@ export function BuildSchema(stack, context, schema, value) {
173
173
  constraints.push(BuildContains(current, context, schema, value));
174
174
  if (Schema.IsItems(schema))
175
175
  constraints.push(BuildItems(current, context, schema, value));
176
- if (Schema.IsMaxContains(schema))
177
- constraints.push(BuildMaxContains(current, context, schema, value));
178
- if (Schema.IsMaxItems(schema))
179
- constraints.push(BuildMaxItems(current, context, schema, value));
180
176
  if (Schema.IsMinContains(schema))
181
177
  constraints.push(BuildMinContains(current, context, schema, value));
178
+ if (Schema.IsMaxContains(schema))
179
+ constraints.push(BuildMaxContains(current, context, schema, value));
182
180
  if (Schema.IsMinItems(schema))
183
181
  constraints.push(BuildMinItems(current, context, schema, value));
182
+ if (Schema.IsMaxItems(schema))
183
+ constraints.push(BuildMaxItems(current, context, schema, value));
184
184
  if (Schema.IsPrefixItems(schema))
185
185
  constraints.push(BuildPrefixItems(current, context, schema, value));
186
186
  if (Schema.IsUniqueItems(schema))
@@ -191,10 +191,10 @@ export function BuildSchema(stack, context, schema, value) {
191
191
  }
192
192
  if (HasStringKeywords(schema)) {
193
193
  const constraints = [];
194
- if (Schema.IsMaxLength(schema))
195
- constraints.push(BuildMaxLength(current, context, schema, value));
196
194
  if (Schema.IsMinLength(schema))
197
195
  constraints.push(BuildMinLength(current, context, schema, value));
196
+ if (Schema.IsMaxLength(schema))
197
+ constraints.push(BuildMaxLength(current, context, schema, value));
198
198
  if (Schema.IsFormat(schema))
199
199
  constraints.push(BuildFormat(current, context, schema, value));
200
200
  if (Schema.IsPattern(schema))
@@ -205,14 +205,14 @@ export function BuildSchema(stack, context, schema, value) {
205
205
  }
206
206
  if (HasNumberKeywords(schema)) {
207
207
  const constraints = [];
208
- if (Schema.IsExclusiveMaximum(schema))
209
- constraints.push(BuildExclusiveMaximum(current, context, schema, value));
210
208
  if (Schema.IsExclusiveMinimum(schema))
211
209
  constraints.push(BuildExclusiveMinimum(current, context, schema, value));
212
- if (Schema.IsMaximum(schema))
213
- constraints.push(BuildMaximum(current, context, schema, value));
210
+ if (Schema.IsExclusiveMaximum(schema))
211
+ constraints.push(BuildExclusiveMaximum(current, context, schema, value));
214
212
  if (Schema.IsMinimum(schema))
215
213
  constraints.push(BuildMinimum(current, context, schema, value));
214
+ if (Schema.IsMaximum(schema))
215
+ constraints.push(BuildMaximum(current, context, schema, value));
216
216
  if (Schema.IsMultipleOf(schema))
217
217
  constraints.push(BuildMultipleOf(current, context, schema, value));
218
218
  const reduced = E.ReduceAnd(constraints);
@@ -270,20 +270,20 @@ export function CheckSchema(stack, context, schema, value) {
270
270
  (!G.IsArray(value) || ((!Schema.IsAdditionalItems(schema) || CheckAdditionalItems(current, context, schema, value)) &&
271
271
  (!Schema.IsContains(schema) || CheckContains(current, context, schema, value)) &&
272
272
  (!Schema.IsItems(schema) || CheckItems(current, context, schema, value)) &&
273
- (!Schema.IsMaxContains(schema) || CheckMaxContains(current, context, schema, value)) &&
274
- (!Schema.IsMaxItems(schema) || CheckMaxItems(current, context, schema, value)) &&
275
273
  (!Schema.IsMinContains(schema) || CheckMinContains(current, context, schema, value)) &&
274
+ (!Schema.IsMaxContains(schema) || CheckMaxContains(current, context, schema, value)) &&
276
275
  (!Schema.IsMinItems(schema) || CheckMinItems(current, context, schema, value)) &&
276
+ (!Schema.IsMaxItems(schema) || CheckMaxItems(current, context, schema, value)) &&
277
277
  (!Schema.IsPrefixItems(schema) || CheckPrefixItems(current, context, schema, value)) &&
278
278
  (!Schema.IsUniqueItems(schema) || CheckUniqueItems(current, context, schema, value)))) &&
279
- (!G.IsString(value) || ((!Schema.IsMaxLength(schema) || CheckMaxLength(current, context, schema, value)) &&
280
- (!Schema.IsMinLength(schema) || CheckMinLength(current, context, schema, value)) &&
279
+ (!G.IsString(value) || ((!Schema.IsMinLength(schema) || CheckMinLength(current, context, schema, value)) &&
280
+ (!Schema.IsMaxLength(schema) || CheckMaxLength(current, context, schema, value)) &&
281
281
  (!Schema.IsFormat(schema) || CheckFormat(current, context, schema, value)) &&
282
282
  (!Schema.IsPattern(schema) || CheckPattern(current, context, schema, value)))) &&
283
- (!(G.IsNumber(value) || G.IsBigInt(value)) || ((!Schema.IsExclusiveMaximum(schema) || CheckExclusiveMaximum(current, context, schema, value)) &&
284
- (!Schema.IsExclusiveMinimum(schema) || CheckExclusiveMinimum(current, context, schema, value)) &&
285
- (!Schema.IsMaximum(schema) || CheckMaximum(current, context, schema, value)) &&
283
+ (!(G.IsNumber(value) || G.IsBigInt(value)) || ((!Schema.IsExclusiveMinimum(schema) || CheckExclusiveMinimum(current, context, schema, value)) &&
284
+ (!Schema.IsExclusiveMaximum(schema) || CheckExclusiveMaximum(current, context, schema, value)) &&
286
285
  (!Schema.IsMinimum(schema) || CheckMinimum(current, context, schema, value)) &&
286
+ (!Schema.IsMaximum(schema) || CheckMaximum(current, context, schema, value)) &&
287
287
  (!Schema.IsMultipleOf(schema) || CheckMultipleOf(current, context, schema, value)))) &&
288
288
  (!Schema.IsRef(schema) || CheckRef(current, context, schema, value)) &&
289
289
  (!Schema.IsRecursiveRef(schema) || CheckRecursiveRef(current, context, schema, value)) &&
@@ -328,20 +328,20 @@ export function ErrorSchema(stack, context, schemaPath, instancePath, schema, va
328
328
  +(!G.IsArray(value) || !!(+(!Schema.IsAdditionalItems(schema) || ErrorAdditionalItems(current, context, schemaPath, instancePath, schema, value)) &
329
329
  +(!Schema.IsContains(schema) || ErrorContains(current, context, schemaPath, instancePath, schema, value)) &
330
330
  +(!Schema.IsItems(schema) || ErrorItems(current, context, schemaPath, instancePath, schema, value)) &
331
- +(!Schema.IsMaxContains(schema) || ErrorMaxContains(current, context, schemaPath, instancePath, schema, value)) &
332
- +(!Schema.IsMaxItems(schema) || ErrorMaxItems(current, context, schemaPath, instancePath, schema, value)) &
333
331
  +(!Schema.IsMinContains(schema) || ErrorMinContains(current, context, schemaPath, instancePath, schema, value)) &
332
+ +(!Schema.IsMaxContains(schema) || ErrorMaxContains(current, context, schemaPath, instancePath, schema, value)) &
334
333
  +(!Schema.IsMinItems(schema) || ErrorMinItems(current, context, schemaPath, instancePath, schema, value)) &
334
+ +(!Schema.IsMaxItems(schema) || ErrorMaxItems(current, context, schemaPath, instancePath, schema, value)) &
335
335
  +(!Schema.IsPrefixItems(schema) || ErrorPrefixItems(current, context, schemaPath, instancePath, schema, value)) &
336
336
  +(!Schema.IsUniqueItems(schema) || ErrorUniqueItems(current, context, schemaPath, instancePath, schema, value)))) &
337
- +(!G.IsString(value) || !!(+(!Schema.IsMaxLength(schema) || ErrorMaxLength(current, context, schemaPath, instancePath, schema, value)) &
338
- +(!Schema.IsMinLength(schema) || ErrorMinLength(current, context, schemaPath, instancePath, schema, value)) &
337
+ +(!G.IsString(value) || !!(+(!Schema.IsMinLength(schema) || ErrorMinLength(current, context, schemaPath, instancePath, schema, value)) &
338
+ +(!Schema.IsMaxLength(schema) || ErrorMaxLength(current, context, schemaPath, instancePath, schema, value)) &
339
339
  +(!Schema.IsFormat(schema) || ErrorFormat(current, context, schemaPath, instancePath, schema, value)) &
340
340
  +(!Schema.IsPattern(schema) || ErrorPattern(current, context, schemaPath, instancePath, schema, value)))) &
341
- +(!(G.IsNumber(value) || G.IsBigInt(value)) || !!(+(!Schema.IsExclusiveMaximum(schema) || ErrorExclusiveMaximum(current, context, schemaPath, instancePath, schema, value)) &
342
- +(!Schema.IsExclusiveMinimum(schema) || ErrorExclusiveMinimum(current, context, schemaPath, instancePath, schema, value)) &
343
- +(!Schema.IsMaximum(schema) || ErrorMaximum(current, context, schemaPath, instancePath, schema, value)) &
341
+ +(!(G.IsNumber(value) || G.IsBigInt(value)) || !!(+(!Schema.IsExclusiveMinimum(schema) || ErrorExclusiveMinimum(current, context, schemaPath, instancePath, schema, value)) &
342
+ +(!Schema.IsExclusiveMaximum(schema) || ErrorExclusiveMaximum(current, context, schemaPath, instancePath, schema, value)) &
344
343
  +(!Schema.IsMinimum(schema) || ErrorMinimum(current, context, schemaPath, instancePath, schema, value)) &
344
+ +(!Schema.IsMaximum(schema) || ErrorMaximum(current, context, schemaPath, instancePath, schema, value)) &
345
345
  +(!Schema.IsMultipleOf(schema) || ErrorMultipleOf(current, context, schemaPath, instancePath, schema, value)))) &
346
346
  +(!Schema.IsRef(schema) || ErrorRef(current, context, schemaPath, instancePath, schema, value)) &
347
347
  +(!Schema.IsRecursiveRef(schema) || ErrorRecursiveRef(current, context, schemaPath, instancePath, schema, value)) &
@@ -1,5 +1,6 @@
1
1
  // deno-fmt-ignore-file
2
2
  // deno-lint-ignore-file
3
+ import { EnableParseErrors, DisableParseErrors } from '../system/settings/internal.mjs';
3
4
  import { Arguments } from '../system/arguments/index.mjs';
4
5
  import { Check } from './check.mjs';
5
6
  import { Errors } from './errors.mjs';
@@ -17,7 +18,9 @@ export class ParseError {
17
18
  // ThrowParseError
18
19
  // ------------------------------------------------------------------
19
20
  export function ThrowParseError(context, schema, value) {
21
+ EnableParseErrors();
20
22
  const result = Errors(context, schema, value);
23
+ DisableParseErrors();
21
24
  throw new ParseError(schema, value, result[1]);
22
25
  }
23
26
  /** Parses a value against the provided schema */
@@ -1,10 +1,5 @@
1
- /** Returns an array of path indices for the given pointer */
2
1
  export declare function Indices(pointer: string): string[];
3
- /** Returns true if a value exists at the current pointer */
4
- export declare function Has(value: unknown, pointer: string): unknown;
5
- /** Gets a value at the pointer, or undefined if not exists */
2
+ export declare function Has(value: unknown, pointer: string): boolean;
6
3
  export declare function Get(value: unknown, pointer: string): unknown;
7
- /** Sets a value at the given pointer. May throw if the target value is not indexable */
8
4
  export declare function Set(value: unknown, pointer: string, next: unknown): unknown;
9
- /** Deletes the value at the given pointer. May throw if the target value is not indexable */
10
5
  export declare function Delete(value: unknown, pointer: string): unknown;
@@ -1,106 +1,89 @@
1
1
  // deno-fmt-ignore-file
2
2
  import { Guard } from '../../guard/index.mjs';
3
3
  // ------------------------------------------------------------------
4
- // Asserts
4
+ // Throw
5
5
  // ------------------------------------------------------------------
6
- function AssertNotRoot(indices) {
7
- if (indices.length === 0)
8
- throw Error('Cannot set root');
6
+ function Throw(message) {
7
+ throw Error(message);
9
8
  }
10
- function AssertCanSet(value) {
11
- if (!Guard.IsObject(value))
12
- throw Error('Cannot set value');
9
+ function ThrowUnsafePropertyKey() {
10
+ Throw('Pointer contains unsafe property key');
13
11
  }
14
- function AssertIndex(index) {
15
- if (Guard.IsUnsafePropertyKey(index))
16
- throw Error('Pointer contains unsafe property key');
17
- }
18
- function AssertIndices(indices) {
19
- for (const index of indices)
20
- AssertIndex(index);
21
- }
22
- // ------------------------------------------------------------------
23
- // Indices
24
- // ------------------------------------------------------------------
25
- function IsNumericIndex(index) {
26
- return /^(0|[1-9]\d*)$/.test(index);
27
- }
28
- function TakeIndexRight(indices) {
29
- return [
30
- indices.slice(0, indices.length - 1),
31
- indices.slice(indices.length - 1)[0]
32
- ];
33
- }
34
- function HasIndex(index, value) {
35
- return Guard.IsObject(value) && Guard.HasPropertyKey(value, index);
36
- }
37
- function GetIndex(index, value) {
38
- return Guard.IsObject(value) && !Guard.IsUnsafePropertyKey(index) ? value[index] : undefined;
39
- }
40
- function GetIndices(indices, value) {
41
- return indices.reduce((value, index) => GetIndex(index, value), value);
12
+ function ThrowCannotSetRoot() {
13
+ Throw('Cannot set value');
42
14
  }
43
15
  // ------------------------------------------------------------------
44
16
  // Indices
45
17
  // ------------------------------------------------------------------
46
- /** Returns an array of path indices for the given pointer */
47
18
  export function Indices(pointer) {
48
- if (Guard.IsEqual(pointer.length, 0))
49
- return [];
50
- const indices = pointer.split("/").map(index => index.replace(/~1/g, "/").replace(/~0/g, "~"));
51
- return (indices.length > 0 && indices[0] === '') ? indices.slice(1) : indices;
19
+ const indices = pointer.split('/').map(index => index.replace(/~1/g, '/').replace(/~0/g, '~'));
20
+ return indices[0] === '' ? indices.slice(1) : indices;
52
21
  }
53
22
  // ------------------------------------------------------------------
54
23
  // Has
55
24
  // ------------------------------------------------------------------
56
- /** Returns true if a value exists at the current pointer */
57
25
  export function Has(value, pointer) {
58
26
  let current = value;
59
- return Indices(pointer).every(index => {
60
- if (!HasIndex(index, current))
27
+ for (const index of Indices(pointer)) {
28
+ if (!Guard.IsObject(current) || !Guard.HasPropertyKey(current, index))
61
29
  return false;
62
30
  current = current[index];
63
- return true;
64
- });
31
+ }
32
+ return true;
65
33
  }
66
34
  // ------------------------------------------------------------------
67
35
  // Get
68
36
  // ------------------------------------------------------------------
69
- /** Gets a value at the pointer, or undefined if not exists */
70
37
  export function Get(value, pointer) {
71
- const indices = Indices(pointer);
72
- return GetIndices(indices, value);
38
+ let current = value;
39
+ for (const index of Indices(pointer)) {
40
+ if (!Guard.IsObject(current) || Guard.IsUnsafePropertyKey(index))
41
+ return undefined;
42
+ current = current[index];
43
+ }
44
+ return current;
45
+ }
46
+ // ------------------------------------------------------------------
47
+ // Get
48
+ // ------------------------------------------------------------------
49
+ function Parent(value, indices, last) {
50
+ let current = value;
51
+ for (const index of indices) {
52
+ if (Guard.IsUnsafePropertyKey(index))
53
+ ThrowUnsafePropertyKey();
54
+ current = Guard.IsObject(current) ? current[index] : undefined;
55
+ }
56
+ if (Guard.IsUnsafePropertyKey(last))
57
+ ThrowUnsafePropertyKey();
58
+ if (!Guard.IsObject(current))
59
+ ThrowCannotSetRoot();
60
+ return current;
73
61
  }
74
62
  // ------------------------------------------------------------------
75
63
  // Set
76
64
  // ------------------------------------------------------------------
77
- /** Sets a value at the given pointer. May throw if the target value is not indexable */
78
65
  export function Set(value, pointer, next) {
79
66
  const indices = Indices(pointer);
80
- AssertNotRoot(indices);
81
- AssertIndices(indices);
82
- const [head, index] = TakeIndexRight(indices);
83
- const parent = GetIndices(head, value);
84
- AssertCanSet(parent);
85
- parent[index] = next;
67
+ const last = indices.pop();
68
+ if (Guard.IsUndefined(last))
69
+ ThrowCannotSetRoot();
70
+ Parent(value, indices, last)[last] = next;
86
71
  return value;
87
72
  }
88
73
  // ------------------------------------------------------------------
89
74
  // Delete
90
75
  // ------------------------------------------------------------------
91
- /** Deletes the value at the given pointer. May throw if the target value is not indexable */
92
76
  export function Delete(value, pointer) {
93
77
  const indices = Indices(pointer);
94
- AssertNotRoot(indices);
95
- AssertIndices(indices);
96
- const [head, index] = TakeIndexRight(indices);
97
- const parent = GetIndices(head, value);
98
- AssertCanSet(parent);
99
- if (Guard.IsArray(parent) && IsNumericIndex(index)) {
100
- parent.splice(+index, 1);
78
+ const last = indices.pop();
79
+ if (Guard.IsUndefined(last))
80
+ ThrowCannotSetRoot();
81
+ const parent = Parent(value, indices, last);
82
+ if (Guard.IsArray(parent) && /^(0|[1-9]\d*)$/.test(last)) {
83
+ parent.splice(Number(last), 1);
101
84
  }
102
85
  else {
103
- delete parent[index];
86
+ delete parent[last];
104
87
  }
105
88
  return value;
106
89
  }
@@ -0,0 +1,2 @@
1
+ export declare function EnableParseErrors(): void;
2
+ export declare function DisableParseErrors(): void;
@@ -0,0 +1,20 @@
1
+ import { Get } from './settings.mjs';
2
+ // ------------------------------------------------------------------
3
+ // TempMaxErrors
4
+ // ------------------------------------------------------------------
5
+ let TempMaxErrors = 0;
6
+ // ------------------------------------------------------------------
7
+ // [Internal] EnableParseErrors
8
+ // ------------------------------------------------------------------
9
+ export function EnableParseErrors() {
10
+ const settings = Get();
11
+ TempMaxErrors = settings.maxErrors;
12
+ settings.maxErrors = settings.maxParseErrors;
13
+ }
14
+ // ------------------------------------------------------------------
15
+ // [Internal] DisableParseErrors
16
+ // ------------------------------------------------------------------
17
+ export function DisableParseErrors() {
18
+ const settings = Get();
19
+ settings.maxErrors = TempMaxErrors;
20
+ }
@@ -16,6 +16,17 @@ export interface TSettings {
16
16
  * @default 8
17
17
  */
18
18
  maxErrors: number;
19
+ /**
20
+ * Specifies the maximum number of errors to gather for failed Parse operations. TypeBox will
21
+ * automatically run an error-gathering pass on failed Parses to attach diagnostics to the
22
+ * thrown exception. This setting controls the number of errors gathered in that pass. Higher
23
+ * values will reduce throughput on failure cases, so a maximum of 4 is recommended if more
24
+ * errors are needed. The default setting of 1 will terminate on the first error, while a
25
+ * setting of 0 will skip error gathering entirely.
26
+ *
27
+ * @default 1
28
+ */
29
+ maxParseErrors: number;
19
30
  /**
20
31
  * Specifies the maximum number of instantiations allowed within a top-level generic instantiation
21
32
  * context. This setting can be used to bound generic calls to a fixed count, which can be useful if
@@ -1,8 +1,12 @@
1
1
  import { Guard } from '../../guard/index.mjs';
2
+ // -------------------------------------------------------------------
3
+ // State
4
+ // -------------------------------------------------------------------
2
5
  // Internal mutable state
3
6
  const settings = {
4
7
  immutableTypes: false,
5
8
  maxErrors: 8,
9
+ maxParseErrors: 1,
6
10
  maxInstantiationCount: 128,
7
11
  useAcceleration: true,
8
12
  exactOptionalPropertyTypes: false,
@@ -10,10 +14,14 @@ const settings = {
10
14
  correctiveParse: false,
11
15
  unionPrioritySort: true
12
16
  };
17
+ // -------------------------------------------------------------------
18
+ // Reset
19
+ // -------------------------------------------------------------------
13
20
  /** Resets system settings to defaults */
14
21
  export function Reset() {
15
22
  settings.immutableTypes = false;
16
23
  settings.maxErrors = 8;
24
+ settings.maxParseErrors = 1;
17
25
  settings.maxInstantiationCount = 128;
18
26
  settings.useAcceleration = true;
19
27
  settings.exactOptionalPropertyTypes = false;
@@ -21,6 +29,9 @@ export function Reset() {
21
29
  settings.correctiveParse = false;
22
30
  settings.unionPrioritySort = true;
23
31
  }
32
+ // -------------------------------------------------------------------
33
+ // Set
34
+ // -------------------------------------------------------------------
24
35
  /** Sets system settings */
25
36
  export function Set(options) {
26
37
  for (const key of Guard.Keys(options)) {
@@ -30,6 +41,9 @@ export function Set(options) {
30
41
  }
31
42
  }
32
43
  }
44
+ // -------------------------------------------------------------------
45
+ // Get
46
+ // -------------------------------------------------------------------
33
47
  /** Gets current system settings */
34
48
  export function Get() {
35
49
  return settings;