@duplojs/lang 0.0.1-beta.2 → 0.0.1-beta.3

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 (123) hide show
  1. package/dist/common/constraint/index.d.ts +1 -0
  2. package/dist/common/constraint/remove.cjs +6 -0
  3. package/dist/common/constraint/remove.d.ts +2 -0
  4. package/dist/common/constraint/remove.mjs +6 -0
  5. package/dist/common/index.cjs +3 -0
  6. package/dist/common/index.mjs +3 -1
  7. package/dist/common/types/forward.d.ts +1 -0
  8. package/dist/common/types/index.d.ts +1 -0
  9. package/dist/dataStructure/common/codec.d.ts +1 -1
  10. package/dist/dataStructure/constraint/defaults/allowedCharacters.d.ts +1 -1
  11. package/dist/dataStructure/constraint/defaults/arrayLengthEqual.d.ts +1 -1
  12. package/dist/dataStructure/constraint/defaults/betweenThan.d.ts +1 -1
  13. package/dist/dataStructure/constraint/defaults/betweenThanOrEqual.d.ts +1 -1
  14. package/dist/dataStructure/constraint/defaults/email.d.ts +1 -1
  15. package/dist/dataStructure/constraint/defaults/even.d.ts +1 -1
  16. package/dist/dataStructure/constraint/defaults/greaterThan.d.ts +1 -1
  17. package/dist/dataStructure/constraint/defaults/greaterThanOrEqual.d.ts +1 -1
  18. package/dist/dataStructure/constraint/defaults/index.d.ts +1 -0
  19. package/dist/dataStructure/constraint/defaults/integer.d.ts +1 -1
  20. package/dist/dataStructure/constraint/defaults/lessThan.d.ts +1 -1
  21. package/dist/dataStructure/constraint/defaults/lessThanOrEqual.d.ts +1 -1
  22. package/dist/dataStructure/constraint/defaults/maxCharacters.d.ts +1 -1
  23. package/dist/dataStructure/constraint/defaults/maxElements.d.ts +1 -1
  24. package/dist/dataStructure/constraint/defaults/minCharacters.cjs +3 -3
  25. package/dist/dataStructure/constraint/defaults/minCharacters.d.ts +2 -2
  26. package/dist/dataStructure/constraint/defaults/minCharacters.mjs +3 -3
  27. package/dist/dataStructure/constraint/defaults/minElements.d.ts +1 -1
  28. package/dist/dataStructure/constraint/defaults/multipleOf.d.ts +1 -1
  29. package/dist/dataStructure/constraint/defaults/negative.d.ts +1 -1
  30. package/dist/dataStructure/constraint/defaults/notEmpty.d.ts +1 -1
  31. package/dist/dataStructure/constraint/defaults/notZero.d.ts +1 -1
  32. package/dist/dataStructure/constraint/defaults/odd.d.ts +1 -1
  33. package/dist/dataStructure/constraint/defaults/positive.d.ts +1 -1
  34. package/dist/dataStructure/constraint/defaults/refine.d.ts +1 -1
  35. package/dist/dataStructure/constraint/defaults/regex.cjs +13 -0
  36. package/dist/dataStructure/constraint/defaults/regex.d.ts +10 -0
  37. package/dist/dataStructure/constraint/defaults/regex.mjs +12 -0
  38. package/dist/dataStructure/constraint/defaults/safe.d.ts +1 -1
  39. package/dist/dataStructure/constraint/defaults/strictNegative.d.ts +1 -1
  40. package/dist/dataStructure/constraint/defaults/strictPositive.d.ts +1 -1
  41. package/dist/dataStructure/constraint/defaults/stringLengthEqual.d.ts +1 -1
  42. package/dist/dataStructure/constraint/defaults/trimmed.d.ts +1 -1
  43. package/dist/dataStructure/constraint/defaults/url.cjs +2 -2
  44. package/dist/dataStructure/constraint/defaults/url.d.ts +2 -3
  45. package/dist/dataStructure/constraint/defaults/url.mjs +2 -2
  46. package/dist/dataStructure/constraint/defaults/uuid.cjs +1 -3
  47. package/dist/dataStructure/constraint/defaults/uuid.d.ts +1 -3
  48. package/dist/dataStructure/constraint/defaults/uuid.mjs +3 -4
  49. package/dist/dataStructure/constraint/identifier.d.ts +4 -2
  50. package/dist/dataStructure/constraint/types/constraints.d.ts +18 -15
  51. package/dist/dataStructure/fundamentalType/defaults/bigint.d.ts +1 -1
  52. package/dist/dataStructure/fundamentalType/defaults/boolean.d.ts +1 -1
  53. package/dist/dataStructure/fundamentalType/defaults/date.d.ts +1 -1
  54. package/dist/dataStructure/fundamentalType/defaults/null.d.ts +1 -1
  55. package/dist/dataStructure/fundamentalType/defaults/number.d.ts +1 -1
  56. package/dist/dataStructure/fundamentalType/defaults/string.d.ts +1 -1
  57. package/dist/dataStructure/fundamentalType/defaults/time.d.ts +1 -1
  58. package/dist/dataStructure/fundamentalType/defaults/undefined.d.ts +1 -1
  59. package/dist/dataStructure/fundamentalType/identifier.d.ts +4 -2
  60. package/dist/dataStructure/helpers/index.d.ts +1 -0
  61. package/dist/dataStructure/helpers/nullable.cjs +5 -2
  62. package/dist/dataStructure/helpers/nullable.mjs +5 -2
  63. package/dist/dataStructure/helpers/optional.cjs +5 -2
  64. package/dist/dataStructure/helpers/optional.mjs +5 -2
  65. package/dist/dataStructure/helpers/partial.cjs +5 -2
  66. package/dist/dataStructure/helpers/partial.mjs +5 -2
  67. package/dist/dataStructure/helpers/regex.cjs +7 -0
  68. package/dist/dataStructure/helpers/regex.d.ts +2 -0
  69. package/dist/dataStructure/helpers/regex.mjs +7 -0
  70. package/dist/dataStructure/helpers/required.cjs +6 -3
  71. package/dist/dataStructure/helpers/required.d.ts +2 -1
  72. package/dist/dataStructure/helpers/required.mjs +6 -3
  73. package/dist/dataStructure/helpers/url.cjs +2 -2
  74. package/dist/dataStructure/helpers/url.d.ts +1 -2
  75. package/dist/dataStructure/helpers/url.mjs +2 -2
  76. package/dist/dataStructure/index.cjs +12 -6
  77. package/dist/dataStructure/index.mjs +11 -7
  78. package/dist/dataStructure/structure/defaults/array.d.ts +1 -1
  79. package/dist/dataStructure/structure/defaults/lazy.cjs +6 -1
  80. package/dist/dataStructure/structure/defaults/lazy.d.ts +1 -1
  81. package/dist/dataStructure/structure/defaults/lazy.mjs +6 -1
  82. package/dist/dataStructure/structure/defaults/nonEncodableString.d.ts +1 -1
  83. package/dist/dataStructure/structure/defaults/object.d.ts +1 -1
  84. package/dist/dataStructure/structure/defaults/record.cjs +7 -7
  85. package/dist/dataStructure/structure/defaults/record.d.ts +2 -2
  86. package/dist/dataStructure/structure/defaults/record.mjs +7 -7
  87. package/dist/dataStructure/structure/defaults/type.d.ts +1 -1
  88. package/dist/dataStructure/structure/defaults/union.cjs +11 -5
  89. package/dist/dataStructure/structure/defaults/union.d.ts +2 -2
  90. package/dist/dataStructure/structure/defaults/union.mjs +11 -5
  91. package/dist/dataStructure/structure/identifier.d.ts +4 -2
  92. package/dist/dataStructure/type/defaults/bigint.d.ts +1 -1
  93. package/dist/dataStructure/type/defaults/bigintLiteral.d.ts +1 -1
  94. package/dist/dataStructure/type/defaults/boolean.d.ts +1 -1
  95. package/dist/dataStructure/type/defaults/booleanLiteral.d.ts +1 -1
  96. package/dist/dataStructure/type/defaults/date.d.ts +1 -1
  97. package/dist/dataStructure/type/defaults/null.d.ts +1 -1
  98. package/dist/dataStructure/type/defaults/number.d.ts +1 -1
  99. package/dist/dataStructure/type/defaults/numberLiteral.d.ts +1 -1
  100. package/dist/dataStructure/type/defaults/string.d.ts +1 -1
  101. package/dist/dataStructure/type/defaults/stringLiteral.d.ts +1 -1
  102. package/dist/dataStructure/type/defaults/time.d.ts +1 -1
  103. package/dist/dataStructure/type/defaults/undefined.d.ts +1 -1
  104. package/dist/dataStructure/type/identifier.d.ts +4 -2
  105. package/dist/index.cjs +2 -0
  106. package/dist/index.mjs +2 -1
  107. package/dist/invocation/flow/base.d.ts +1 -1
  108. package/dist/invocation/flow/controller/defaults/aborter.cjs +4 -1
  109. package/dist/invocation/flow/controller/defaults/aborter.d.ts +6 -3
  110. package/dist/invocation/flow/controller/defaults/aborter.mjs +4 -1
  111. package/dist/invocation/flow/controller/defaults/debounce.d.ts +1 -1
  112. package/dist/invocation/flow/controller/defaults/filter.d.ts +1 -1
  113. package/dist/invocation/flow/controller/defaults/retry.d.ts +1 -1
  114. package/dist/invocation/flow/controller/defaults/throttling.d.ts +1 -1
  115. package/dist/invocation/flow/controller/defaults/timeout.d.ts +1 -1
  116. package/dist/kind/createIdentifier.d.ts +2 -2
  117. package/dist/modeling/entity/base.d.ts +3 -4
  118. package/dist/modeling/newType/base.d.ts +1 -1
  119. package/dist/modeling/taggedObject/base.d.ts +3 -4
  120. package/dist/string/isUrl.cjs +2 -11
  121. package/dist/string/isUrl.d.ts +1 -5
  122. package/dist/string/isUrl.mjs +2 -11
  123. package/package.json +1 -1
@@ -34,6 +34,7 @@ const require_stringLengthEqual = require("./constraint/defaults/stringLengthEqu
34
34
  const require_trimmed = require("./constraint/defaults/trimmed.cjs");
35
35
  const require_url = require("./constraint/defaults/url.cjs");
36
36
  const require_uuid = require("./constraint/defaults/uuid.cjs");
37
+ const require_regex = require("./constraint/defaults/regex.cjs");
37
38
  const require_identifier = require("./constraint/identifier.cjs");
38
39
  const require_base$1 = require("./fundamentalType/base.cjs");
39
40
  const require_bigint = require("./fundamentalType/defaults/bigint.cjs");
@@ -48,10 +49,10 @@ const require_identifier$1 = require("./fundamentalType/identifier.cjs");
48
49
  const require_allowedCharacters$1 = require("./helpers/allowedCharacters.cjs");
49
50
  const require_base$2 = require("./structure/base.cjs");
50
51
  const require_array = require("./structure/defaults/array.cjs");
52
+ const require_identifier$2 = require("./structure/identifier.cjs");
51
53
  const require_lazy = require("./structure/defaults/lazy.cjs");
52
54
  const require_nonEncodableString = require("./structure/defaults/nonEncodableString.cjs");
53
55
  const require_object = require("./structure/defaults/object.cjs");
54
- const require_identifier$2 = require("./structure/identifier.cjs");
55
56
  const require_union = require("./structure/defaults/union.cjs");
56
57
  const require_type = require("./structure/defaults/type.cjs");
57
58
  const require_base$3 = require("./type/base.cjs");
@@ -118,6 +119,7 @@ const require_time$2 = require("./helpers/time.cjs");
118
119
  const require_trimmed$1 = require("./helpers/trimmed.cjs");
119
120
  const require_url$1 = require("./helpers/url.cjs");
120
121
  const require_uuid$1 = require("./helpers/uuid.cjs");
122
+ const require_regex$1 = require("./helpers/regex.cjs");
121
123
  //#region scripts/dataStructure/index.ts
122
124
  var dataStructure_exports = /* @__PURE__ */ require_runtime.__exportAll({
123
125
  AllowedCharactersConstraint: () => require_allowedCharacters.AllowedCharactersConstraint,
@@ -156,6 +158,7 @@ var dataStructure_exports = /* @__PURE__ */ require_runtime.__exportAll({
156
158
  PositiveConstraint: () => require_positive.PositiveConstraint,
157
159
  RecordStructure: () => require_record.RecordStructure,
158
160
  RefineConstraint: () => require_refine.RefineConstraint,
161
+ RegexConstraint: () => require_regex.RegexConstraint,
159
162
  SafeConstraint: () => require_safe.SafeConstraint,
160
163
  StrictNegativeConstraint: () => require_strictNegative.StrictNegativeConstraint,
161
164
  StrictPositiveConstraint: () => require_strictPositive.StrictPositiveConstraint,
@@ -244,6 +247,7 @@ var dataStructure_exports = /* @__PURE__ */ require_runtime.__exportAll({
244
247
  maxElements: () => require_maxElements$1.maxElements,
245
248
  maxElementsConstraintKind: () => require_maxElements.maxElementsConstraintKind,
246
249
  minCharacters: () => require_minCharacters$1.minCharacters,
250
+ minCharactersConstraintKind: () => require_minCharacters.minCharactersConstraintKind,
247
251
  minElements: () => require_minElements$1.minElements,
248
252
  minElementsConstraintKind: () => require_minElements.minElementsConstraintKind,
249
253
  multipleOf: () => require_multipleOf$1.multipleOf,
@@ -275,6 +279,8 @@ var dataStructure_exports = /* @__PURE__ */ require_runtime.__exportAll({
275
279
  recordStructureKind: () => require_record.recordStructureKind,
276
280
  refine: () => require_refine$1.refine,
277
281
  refineConstraintKind: () => require_refine.refineConstraintKind,
282
+ regex: () => require_regex$1.regex,
283
+ regexConstraintKind: () => require_regex.regexConstraintKind,
278
284
  required: () => require_required.required,
279
285
  safe: () => require_safe$1.safe,
280
286
  safeConstraintKind: () => require_safe.safeConstraintKind,
@@ -287,7 +293,6 @@ var dataStructure_exports = /* @__PURE__ */ require_runtime.__exportAll({
287
293
  stringLengthEqual: () => require_stringLengthEqual$1.stringLengthEqual,
288
294
  stringLengthEqualConstraintKind: () => require_stringLengthEqual.stringLengthEqualConstraintKind,
289
295
  stringLiteralTypeKind: () => require_stringLiteral.stringLiteralTypeKind,
290
- stringMinConstraintKind: () => require_minCharacters.stringMinConstraintKind,
291
296
  stringTypeKind: () => require_string$1.stringTypeKind,
292
297
  structureIdentifier: () => require_identifier$2.structureIdentifier,
293
298
  structureKind: () => require_base$2.structureKind,
@@ -307,8 +312,7 @@ var dataStructure_exports = /* @__PURE__ */ require_runtime.__exportAll({
307
312
  url: () => require_url$1.url,
308
313
  urlConstraintKind: () => require_url.urlConstraintKind,
309
314
  uuid: () => require_uuid$1.uuid,
310
- uuidConstraintKind: () => require_uuid.uuidConstraintKind,
311
- uuidRegex: () => require_uuid.uuidRegex
315
+ uuidConstraintKind: () => require_uuid.uuidConstraintKind
312
316
  });
313
317
  //#endregion
314
318
  exports.AllowedCharactersConstraint = require_allowedCharacters.AllowedCharactersConstraint;
@@ -347,6 +351,7 @@ exports.OddConstraint = require_odd.OddConstraint;
347
351
  exports.PositiveConstraint = require_positive.PositiveConstraint;
348
352
  exports.RecordStructure = require_record.RecordStructure;
349
353
  exports.RefineConstraint = require_refine.RefineConstraint;
354
+ exports.RegexConstraint = require_regex.RegexConstraint;
350
355
  exports.SafeConstraint = require_safe.SafeConstraint;
351
356
  exports.StrictNegativeConstraint = require_strictNegative.StrictNegativeConstraint;
352
357
  exports.StrictPositiveConstraint = require_strictPositive.StrictPositiveConstraint;
@@ -441,6 +446,7 @@ exports.maxCharactersConstraintKind = require_maxCharacters.maxCharactersConstra
441
446
  exports.maxElements = require_maxElements$1.maxElements;
442
447
  exports.maxElementsConstraintKind = require_maxElements.maxElementsConstraintKind;
443
448
  exports.minCharacters = require_minCharacters$1.minCharacters;
449
+ exports.minCharactersConstraintKind = require_minCharacters.minCharactersConstraintKind;
444
450
  exports.minElements = require_minElements$1.minElements;
445
451
  exports.minElementsConstraintKind = require_minElements.minElementsConstraintKind;
446
452
  exports.multipleOf = require_multipleOf$1.multipleOf;
@@ -472,6 +478,8 @@ exports.record = require_record$1.record;
472
478
  exports.recordStructureKind = require_record.recordStructureKind;
473
479
  exports.refine = require_refine$1.refine;
474
480
  exports.refineConstraintKind = require_refine.refineConstraintKind;
481
+ exports.regex = require_regex$1.regex;
482
+ exports.regexConstraintKind = require_regex.regexConstraintKind;
475
483
  exports.required = require_required.required;
476
484
  exports.safe = require_safe$1.safe;
477
485
  exports.safeConstraintKind = require_safe.safeConstraintKind;
@@ -484,7 +492,6 @@ exports.stringFundamentalTypeKind = require_string.stringFundamentalTypeKind;
484
492
  exports.stringLengthEqual = require_stringLengthEqual$1.stringLengthEqual;
485
493
  exports.stringLengthEqualConstraintKind = require_stringLengthEqual.stringLengthEqualConstraintKind;
486
494
  exports.stringLiteralTypeKind = require_stringLiteral.stringLiteralTypeKind;
487
- exports.stringMinConstraintKind = require_minCharacters.stringMinConstraintKind;
488
495
  exports.stringTypeKind = require_string$1.stringTypeKind;
489
496
  exports.structureIdentifier = require_identifier$2.structureIdentifier;
490
497
  exports.structureKind = require_base$2.structureKind;
@@ -505,4 +512,3 @@ exports.url = require_url$1.url;
505
512
  exports.urlConstraintKind = require_url.urlConstraintKind;
506
513
  exports.uuid = require_uuid$1.uuid;
507
514
  exports.uuidConstraintKind = require_uuid.uuidConstraintKind;
508
- exports.uuidRegex = require_uuid.uuidRegex;
@@ -18,7 +18,7 @@ import { LessThanConstraint, lessThanConstraintKind } from "./constraint/default
18
18
  import { LessThanOrEqualConstraint, lessThanOrEqualConstraintKind } from "./constraint/defaults/lessThanOrEqual.mjs";
19
19
  import { MaxCharactersConstraint, maxCharactersConstraintKind } from "./constraint/defaults/maxCharacters.mjs";
20
20
  import { MaxElementsConstraint, maxElementsConstraintKind } from "./constraint/defaults/maxElements.mjs";
21
- import { MinCharactersConstraint, stringMinConstraintKind } from "./constraint/defaults/minCharacters.mjs";
21
+ import { MinCharactersConstraint, minCharactersConstraintKind } from "./constraint/defaults/minCharacters.mjs";
22
22
  import { MinElementsConstraint, minElementsConstraintKind } from "./constraint/defaults/minElements.mjs";
23
23
  import { MultipleOfConstraint, multipleOfConstraintKind } from "./constraint/defaults/multipleOf.mjs";
24
24
  import { NegativeConstraint, negativeConstraintKind } from "./constraint/defaults/negative.mjs";
@@ -33,7 +33,8 @@ import { StrictPositiveConstraint, strictPositiveConstraintKind } from "./constr
33
33
  import { StringLengthEqualConstraint, stringLengthEqualConstraintKind } from "./constraint/defaults/stringLengthEqual.mjs";
34
34
  import { TrimmedConstraint, trimmedConstraintKind } from "./constraint/defaults/trimmed.mjs";
35
35
  import { UrlConstraint, urlConstraintKind } from "./constraint/defaults/url.mjs";
36
- import { UuidConstraint, uuidConstraintKind, uuidRegex } from "./constraint/defaults/uuid.mjs";
36
+ import { UuidConstraint, uuidConstraintKind } from "./constraint/defaults/uuid.mjs";
37
+ import { RegexConstraint, regexConstraintKind } from "./constraint/defaults/regex.mjs";
37
38
  import { constraintIdentifier } from "./constraint/identifier.mjs";
38
39
  import { createFundamentalType, fundamentalTypeKind } from "./fundamentalType/base.mjs";
39
40
  import { TheBigint, bigintFundamentalTypeKind } from "./fundamentalType/defaults/bigint.mjs";
@@ -48,10 +49,10 @@ import { fundamentalTypeIdentifier } from "./fundamentalType/identifier.mjs";
48
49
  import { allowedCharacters } from "./helpers/allowedCharacters.mjs";
49
50
  import { StructureClass, createStructure, structureKind } from "./structure/base.mjs";
50
51
  import { ArrayStructure, arrayStructureKind } from "./structure/defaults/array.mjs";
52
+ import { structureIdentifier } from "./structure/identifier.mjs";
51
53
  import { LazyStructure, lazyStructureKind } from "./structure/defaults/lazy.mjs";
52
54
  import { NonEncodableStringStructure, nonEncodableStringStructureKind } from "./structure/defaults/nonEncodableString.mjs";
53
55
  import { ObjectStructure, objectStructureKind } from "./structure/defaults/object.mjs";
54
- import { structureIdentifier } from "./structure/identifier.mjs";
55
56
  import { UnionStructure, unionStructureKind } from "./structure/defaults/union.mjs";
56
57
  import { TypeStructure, typeStructureKind } from "./structure/defaults/type.mjs";
57
58
  import { createType, typeKind } from "./type/base.mjs";
@@ -118,6 +119,7 @@ import { time } from "./helpers/time.mjs";
118
119
  import { trimmed } from "./helpers/trimmed.mjs";
119
120
  import { url } from "./helpers/url.mjs";
120
121
  import { uuid } from "./helpers/uuid.mjs";
122
+ import { regex } from "./helpers/regex.mjs";
121
123
  //#region scripts/dataStructure/index.ts
122
124
  var dataStructure_exports = /* @__PURE__ */ __exportAll({
123
125
  AllowedCharactersConstraint: () => AllowedCharactersConstraint,
@@ -156,6 +158,7 @@ var dataStructure_exports = /* @__PURE__ */ __exportAll({
156
158
  PositiveConstraint: () => PositiveConstraint,
157
159
  RecordStructure: () => RecordStructure,
158
160
  RefineConstraint: () => RefineConstraint,
161
+ RegexConstraint: () => RegexConstraint,
159
162
  SafeConstraint: () => SafeConstraint,
160
163
  StrictNegativeConstraint: () => StrictNegativeConstraint,
161
164
  StrictPositiveConstraint: () => StrictPositiveConstraint,
@@ -244,6 +247,7 @@ var dataStructure_exports = /* @__PURE__ */ __exportAll({
244
247
  maxElements: () => maxElements,
245
248
  maxElementsConstraintKind: () => maxElementsConstraintKind,
246
249
  minCharacters: () => minCharacters,
250
+ minCharactersConstraintKind: () => minCharactersConstraintKind,
247
251
  minElements: () => minElements,
248
252
  minElementsConstraintKind: () => minElementsConstraintKind,
249
253
  multipleOf: () => multipleOf,
@@ -275,6 +279,8 @@ var dataStructure_exports = /* @__PURE__ */ __exportAll({
275
279
  recordStructureKind: () => recordStructureKind,
276
280
  refine: () => refine,
277
281
  refineConstraintKind: () => refineConstraintKind,
282
+ regex: () => regex,
283
+ regexConstraintKind: () => regexConstraintKind,
278
284
  required: () => required,
279
285
  safe: () => safe,
280
286
  safeConstraintKind: () => safeConstraintKind,
@@ -287,7 +293,6 @@ var dataStructure_exports = /* @__PURE__ */ __exportAll({
287
293
  stringLengthEqual: () => stringLengthEqual,
288
294
  stringLengthEqualConstraintKind: () => stringLengthEqualConstraintKind,
289
295
  stringLiteralTypeKind: () => stringLiteralTypeKind,
290
- stringMinConstraintKind: () => stringMinConstraintKind,
291
296
  stringTypeKind: () => stringTypeKind,
292
297
  structureIdentifier: () => structureIdentifier,
293
298
  structureKind: () => structureKind,
@@ -307,8 +312,7 @@ var dataStructure_exports = /* @__PURE__ */ __exportAll({
307
312
  url: () => url,
308
313
  urlConstraintKind: () => urlConstraintKind,
309
314
  uuid: () => uuid,
310
- uuidConstraintKind: () => uuidConstraintKind,
311
- uuidRegex: () => uuidRegex
315
+ uuidConstraintKind: () => uuidConstraintKind
312
316
  });
313
317
  //#endregion
314
- export { AllowedCharactersConstraint, ArrayLengthEqualConstraint, ArrayStructure, BetweenThanConstraint, BetweenThanOrEqualConstraint, BigintLiteralType, BigintType, BooleanLiteralType, BooleanType, DateType, EmailConstraint, ErrorSymbol, EvenConstraint, GreaterThanConstraint, GreaterThanOrEqualConstraint, IntegerConstraint, LazyStructure, LessThanConstraint, LessThanOrEqualConstraint, MaxCharactersConstraint, MaxElementsConstraint, MinCharactersConstraint, MinElementsConstraint, MultipleOfConstraint, NegativeConstraint, NonEncodableStringStructure, NotEmptyConstraint, NotZeroConstraint, NullType, NumberLiteralType, NumberType, ObjectStructure, OddConstraint, PositiveConstraint, RecordStructure, RefineConstraint, SafeConstraint, StrictNegativeConstraint, StrictPositiveConstraint, StringLengthEqualConstraint, StringLiteralType, StringType, StructureClass, SuccessSymbol, TheBigint, TheBoolean, TheDate, TheNull, TheNumber, TheString, TheTime, TheUndefined, TimeType, TrimmedConstraint, TypeStructure, UndefinedType, UnionStructure, UrlConstraint, UuidConstraint, allowedCharacters, allowedCharactersConstraintKind, array, arrayLengthEqual, arrayLengthEqualConstraintKind, arrayStructureKind, betweenThan, betweenThanConstraintKind, betweenThanOrEqual, betweenThanOrEqualConstraintKind, bigint, bigintFundamentalTypeKind, bigintLiteralTypeKind, bigintTypeKind, boolean, booleanFundamentalTypeKind, booleanLiteralTypeKind, booleanTypeKind, codecKind, codecsKind, constraintIdentifier, constraintKind, createCodec, createCodecs, createConstraint, createErrorHandler, createErrorInterpreter, createFundamentalType, createGetErrorHandler, createKind, createStructure, createType, dataStructure_exports, date, dateFundamentalTypeKind, dateTypeKind, decodeIssueKind, email, emailConstraintKind, encodeIssueKind, even, evenConstraintKind, extend, fundamentalTypeIdentifier, fundamentalTypeKind, greaterThan, greaterThanConstraintKind, greaterThanOrEqual, greaterThanOrEqualConstraintKind, integer, integerConstraintKind, isNullStructure, isUndefinedStructure, issueKind, lazy, lazyStructureKind, lessThan, lessThanConstraintKind, lessThanOrEqual, lessThanOrEqualConstraintKind, literal, maxCharacters, maxCharactersConstraintKind, maxElements, maxElementsConstraintKind, minCharacters, minElements, minElementsConstraintKind, multipleOf, multipleOfConstraintKind, negative, negativeConstraintKind, nonEncodableStringStructureKind, notEmpty, notEmptyConstraintKind, notZero, notZeroConstraintKind, nullHelper as null, nullFundamentalTypeKind, nullTypeKind, nullable, number, numberFundamentalTypeKind, numberLiteralTypeKind, numberTypeKind, object, objectStructureKind, odd, oddConstraintKind, optional, partial, positive, positiveConstraintKind, record, recordStructureKind, refine, refineConstraintKind, required, safe, safeConstraintKind, strictNegative, strictNegativeConstraintKind, strictPositive, strictPositiveConstraintKind, string, stringFundamentalTypeKind, stringLengthEqual, stringLengthEqualConstraintKind, stringLiteralTypeKind, stringMinConstraintKind, stringTypeKind, structureIdentifier, structureKind, time, timeFundamentalTypeKind, timeTypeKind, trimmed, trimmedConstraintKind, typeIdentifier, typeKind, typeStructureKind, undefinedHelper as undefined, undefinedFundamentalTypeKind, undefinedTypeKind, union, unionStructureKind, url, urlConstraintKind, uuid, uuidConstraintKind, uuidRegex };
318
+ export { AllowedCharactersConstraint, ArrayLengthEqualConstraint, ArrayStructure, BetweenThanConstraint, BetweenThanOrEqualConstraint, BigintLiteralType, BigintType, BooleanLiteralType, BooleanType, DateType, EmailConstraint, ErrorSymbol, EvenConstraint, GreaterThanConstraint, GreaterThanOrEqualConstraint, IntegerConstraint, LazyStructure, LessThanConstraint, LessThanOrEqualConstraint, MaxCharactersConstraint, MaxElementsConstraint, MinCharactersConstraint, MinElementsConstraint, MultipleOfConstraint, NegativeConstraint, NonEncodableStringStructure, NotEmptyConstraint, NotZeroConstraint, NullType, NumberLiteralType, NumberType, ObjectStructure, OddConstraint, PositiveConstraint, RecordStructure, RefineConstraint, RegexConstraint, SafeConstraint, StrictNegativeConstraint, StrictPositiveConstraint, StringLengthEqualConstraint, StringLiteralType, StringType, StructureClass, SuccessSymbol, TheBigint, TheBoolean, TheDate, TheNull, TheNumber, TheString, TheTime, TheUndefined, TimeType, TrimmedConstraint, TypeStructure, UndefinedType, UnionStructure, UrlConstraint, UuidConstraint, allowedCharacters, allowedCharactersConstraintKind, array, arrayLengthEqual, arrayLengthEqualConstraintKind, arrayStructureKind, betweenThan, betweenThanConstraintKind, betweenThanOrEqual, betweenThanOrEqualConstraintKind, bigint, bigintFundamentalTypeKind, bigintLiteralTypeKind, bigintTypeKind, boolean, booleanFundamentalTypeKind, booleanLiteralTypeKind, booleanTypeKind, codecKind, codecsKind, constraintIdentifier, constraintKind, createCodec, createCodecs, createConstraint, createErrorHandler, createErrorInterpreter, createFundamentalType, createGetErrorHandler, createKind, createStructure, createType, dataStructure_exports, date, dateFundamentalTypeKind, dateTypeKind, decodeIssueKind, email, emailConstraintKind, encodeIssueKind, even, evenConstraintKind, extend, fundamentalTypeIdentifier, fundamentalTypeKind, greaterThan, greaterThanConstraintKind, greaterThanOrEqual, greaterThanOrEqualConstraintKind, integer, integerConstraintKind, isNullStructure, isUndefinedStructure, issueKind, lazy, lazyStructureKind, lessThan, lessThanConstraintKind, lessThanOrEqual, lessThanOrEqualConstraintKind, literal, maxCharacters, maxCharactersConstraintKind, maxElements, maxElementsConstraintKind, minCharacters, minCharactersConstraintKind, minElements, minElementsConstraintKind, multipleOf, multipleOfConstraintKind, negative, negativeConstraintKind, nonEncodableStringStructureKind, notEmpty, notEmptyConstraintKind, notZero, notZeroConstraintKind, nullHelper as null, nullFundamentalTypeKind, nullTypeKind, nullable, number, numberFundamentalTypeKind, numberLiteralTypeKind, numberTypeKind, object, objectStructureKind, odd, oddConstraintKind, optional, partial, positive, positiveConstraintKind, record, recordStructureKind, refine, refineConstraintKind, regex, regexConstraintKind, required, safe, safeConstraintKind, strictNegative, strictNegativeConstraintKind, strictPositive, strictPositiveConstraintKind, string, stringFundamentalTypeKind, stringLengthEqual, stringLengthEqualConstraintKind, stringLiteralTypeKind, stringTypeKind, structureIdentifier, structureKind, time, timeFundamentalTypeKind, timeTypeKind, trimmed, trimmedConstraintKind, typeIdentifier, typeKind, typeStructureKind, undefinedHelper as undefined, undefinedFundamentalTypeKind, undefinedTypeKind, union, unionStructureKind, url, urlConstraintKind, uuid, uuidConstraintKind };
@@ -13,6 +13,6 @@ export declare const arrayStructureKind: DKind.Handler<DKind.Definition<"@Duploj
13
13
  export interface ArrayStructureDefinition<GenericConstraints extends readonly Constraint[] = readonly Constraint[]> extends StructureDefinition<GenericConstraints> {
14
14
  readonly element: Structure;
15
15
  }
16
- export interface ArrayStructure<GenericValue extends readonly unknown[] = readonly unknown[], GenericConstraints extends readonly Constraint<GenericValue>[] = readonly Constraint<GenericValue>[]> extends DCommon.UnionToIntersection<Structure<GenericValue, ArrayStructureDefinition<GenericConstraints>> & DKind.Kind<typeof arrayStructureKind>> {
16
+ export interface ArrayStructure<GenericValue extends readonly unknown[] = readonly unknown[], GenericConstraints extends readonly Constraint<GenericValue>[] = readonly Constraint<GenericValue>[]> extends DCommon.Forward<Structure<GenericValue, ArrayStructureDefinition<GenericConstraints>> & DKind.Kind<typeof arrayStructureKind>> {
17
17
  }
18
18
  export declare const ArrayStructure: <GenericElement extends Structure, const GenericConstraints extends readonly Constraint<readonly StructureValue<GenericElement>[]>[]>(element: GenericElement, constraints: GenericConstraints) => NoInfer<ArrayStructure<readonly StructureValue<GenericElement>[], readonly [...GenericConstraints]>>;
@@ -3,10 +3,15 @@ const require_memo = require("../../../common/memo.cjs");
3
3
  const require_kind = require("../../kind.cjs");
4
4
  const require_resultSymbol = require("../../common/resultSymbol.cjs");
5
5
  const require_base = require("../base.cjs");
6
+ const require_identifier = require("../identifier.cjs");
6
7
  //#region scripts/dataStructure/structure/defaults/lazy.ts
7
8
  const lazyStructureKind = require_kind.createKind("lazy-structure");
8
9
  const LazyStructure = require_base.createStructure(lazyStructureKind, ({ init }) => (getStructure, constraints) => init({
9
- getter: require_memo.memo(getStructure),
10
+ getter: require_memo.memo(() => {
11
+ const dataStructure = getStructure();
12
+ if (require_identifier.structureIdentifier(dataStructure, lazyStructureKind)) return dataStructure.definition.getter.value;
13
+ return dataStructure;
14
+ }),
10
15
  constraints
11
16
  }, {
12
17
  executeCheck: (self, data, errorHandler) => self.definition.getter.value.executeCheck(data, errorHandler),
@@ -7,6 +7,6 @@ export declare const lazyStructureKind: DKind.Handler<DKind.Definition<"@Duplojs
7
7
  export interface LazyStructureDefinition<GenericConstraints extends readonly Constraint[] = readonly Constraint[]> extends StructureDefinition<GenericConstraints> {
8
8
  readonly getter: DCommon.Memoized<Structure>;
9
9
  }
10
- export interface LazyStructure<GenericValue extends unknown = unknown, GenericConstraints extends readonly Constraint<GenericValue>[] = readonly Constraint<GenericValue>[]> extends DCommon.UnionToIntersection<Structure<GenericValue, LazyStructureDefinition<GenericConstraints>> & DKind.Kind<typeof lazyStructureKind>> {
10
+ export interface LazyStructure<GenericValue extends unknown = unknown, GenericConstraints extends readonly Constraint<GenericValue>[] = readonly Constraint<GenericValue>[]> extends DCommon.Forward<Structure<GenericValue, LazyStructureDefinition<GenericConstraints>> & DKind.Kind<typeof lazyStructureKind>> {
11
11
  }
12
12
  export declare const LazyStructure: <GenericStructure extends Structure, const GenericConstraints extends readonly Constraint<StructureValue<GenericStructure>>[]>(getStructure: () => GenericStructure, constraints: GenericConstraints) => NoInfer<LazyStructure<StructureValue<GenericStructure>, readonly [...GenericConstraints]>>;
@@ -3,10 +3,15 @@ import { memo } from "../../../common/memo.mjs";
3
3
  import { createKind } from "../../kind.mjs";
4
4
  import { ErrorSymbol } from "../../common/resultSymbol.mjs";
5
5
  import { createStructure } from "../base.mjs";
6
+ import { structureIdentifier } from "../identifier.mjs";
6
7
  //#region scripts/dataStructure/structure/defaults/lazy.ts
7
8
  const lazyStructureKind = createKind("lazy-structure");
8
9
  const LazyStructure = createStructure(lazyStructureKind, ({ init }) => (getStructure, constraints) => init({
9
- getter: memo(getStructure),
10
+ getter: memo(() => {
11
+ const dataStructure = getStructure();
12
+ if (structureIdentifier(dataStructure, lazyStructureKind)) return dataStructure.definition.getter.value;
13
+ return dataStructure;
14
+ }),
10
15
  constraints
11
16
  }, {
12
17
  executeCheck: (self, data, errorHandler) => self.definition.getter.value.executeCheck(data, errorHandler),
@@ -5,6 +5,6 @@ export declare const nonEncodableStringStructureKind: DKind.Handler<DKind.Defini
5
5
  export interface NonEncodableStringStructureDefinition extends StructureDefinition<readonly []> {
6
6
  readonly value: string;
7
7
  }
8
- export interface NonEncodableStringStructure extends DCommon.UnionToIntersection<Structure<String, NonEncodableStringStructureDefinition> & DKind.Kind<typeof nonEncodableStringStructureKind>> {
8
+ export interface NonEncodableStringStructure extends DCommon.Forward<Structure<String, NonEncodableStringStructureDefinition> & DKind.Kind<typeof nonEncodableStringStructureKind>> {
9
9
  }
10
10
  export declare const NonEncodableStringStructure: (value: string) => NoInfer<NonEncodableStringStructure>;
@@ -25,6 +25,6 @@ export interface ObjectStructureDefinition<GenericConstraints extends readonly C
25
25
  readonly shape: DCommon.Memoized<readonly EntryShapeObjectStructure[]>;
26
26
  readonly keys: readonly string[];
27
27
  }
28
- export interface ObjectStructure<GenericValue extends Record<string, unknown> = Record<string, unknown>, GenericConstraints extends readonly Constraint<GenericValue>[] = readonly Constraint<GenericValue>[]> extends DCommon.UnionToIntersection<Structure<GenericValue, ObjectStructureDefinition<GenericConstraints>> & DKind.Kind<typeof objectStructureKind>> {
28
+ export interface ObjectStructure<GenericValue extends Record<string, unknown> = Record<string, unknown>, GenericConstraints extends readonly Constraint<GenericValue>[] = readonly Constraint<GenericValue>[]> extends DCommon.Forward<Structure<GenericValue, ObjectStructureDefinition<GenericConstraints>> & DKind.Kind<typeof objectStructureKind>> {
29
29
  }
30
30
  export declare const ObjectStructure: <GenericShape extends ShapeObjectStructure, const GenericConstraints extends readonly Constraint<ShapeObjectStructureValue<GenericShape>>[]>(shape: GenericShape, constraints: GenericConstraints) => NoInfer<ObjectStructure<ShapeObjectStructureValue<GenericShape>, readonly [...GenericConstraints]>>;
@@ -1,6 +1,6 @@
1
1
  const require_callThen = require("../../../common/callThen.cjs");
2
2
  const require_isType = require("../../../common/isType.cjs");
3
- const require_justExec = require("../../../common/justExec.cjs");
3
+ const require_memo = require("../../../common/memo.cjs");
4
4
  const require_kind = require("../../kind.cjs");
5
5
  const require_resultSymbol = require("../../common/resultSymbol.cjs");
6
6
  const require_base = require("../base.cjs");
@@ -16,10 +16,10 @@ const RecordStructure = require_base.createStructure(recordStructureKind, ({ ini
16
16
  key,
17
17
  value,
18
18
  constraints,
19
- requiredKeys: require_justExec.justExec(() => {
19
+ requiredKeys: require_memo.memo(() => {
20
20
  if (require_identifier.structureIdentifier(key, require_union.unionStructureKind)) {
21
- if (key.definition.values.some((value) => require_identifier.structureIdentifier(value, require_type.typeStructureKind) && require_identifier$1.typeIdentifier(value.definition.type, require_string.stringTypeKind))) return null;
22
- return key.definition.values.map((value) => require_identifier.structureIdentifier(value, require_type.typeStructureKind) && require_identifier$1.typeIdentifier(value.definition.type, require_stringLiteral.stringLiteralTypeKind) ? value.definition.type.definition.value : null).filter(require_isType.isType("string"));
21
+ if (key.definition.values.value.some((value) => require_identifier.structureIdentifier(value, require_type.typeStructureKind) && require_identifier$1.typeIdentifier(value.definition.type, require_string.stringTypeKind))) return null;
22
+ return key.definition.values.value.map((value) => require_identifier.structureIdentifier(value, require_type.typeStructureKind) && require_identifier$1.typeIdentifier(value.definition.type, require_stringLiteral.stringLiteralTypeKind) ? value.definition.type.definition.value : null).filter(require_isType.isType("string"));
23
23
  }
24
24
  if (require_identifier.structureIdentifier(key, require_type.typeStructureKind) && require_identifier$1.typeIdentifier(key.definition.type, require_stringLiteral.stringLiteralTypeKind)) return [key.definition.type.definition.value];
25
25
  return null;
@@ -28,7 +28,7 @@ const RecordStructure = require_base.createStructure(recordStructureKind, ({ ini
28
28
  executeCheck: (self, data, errorHandler) => {
29
29
  if (typeof data !== "object" || data === null || data.constructor !== void 0 && data.constructor.name !== "Object" || Object.getOwnPropertySymbols(data).length !== 0) return errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol;
30
30
  const keyData = Object.keys(data);
31
- const requiredKeys = self.definition.requiredKeys;
31
+ const requiredKeys = self.definition.requiredKeys.value;
32
32
  if (requiredKeys && keyData.some((value) => !requiredKeys.includes(value))) return errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol;
33
33
  const pathStage = errorHandler?.().createPathStage();
34
34
  const result = (requiredKeys ?? keyData).reduce((accumulator, key) => require_callThen.callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(`{record key: ${key}}`) ?? require_callThen.callThen(self.definition.key.executeCheck(key, errorHandler), (resultKey) => pathStage?.setCurrentPath(`{record value: ${key}}`) ?? require_callThen.callThen(self.definition.value.executeCheck(data[key], errorHandler), (resultValue) => resultValue === require_resultSymbol.ErrorSymbol || resultKey === require_resultSymbol.ErrorSymbol || awaitedAccumulator === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_resultSymbol.SuccessSymbol))), require_resultSymbol.SuccessSymbol);
@@ -40,7 +40,7 @@ const RecordStructure = require_base.createStructure(recordStructureKind, ({ ini
40
40
  executeEncode: (self, codecContext, data, errorHandler) => {
41
41
  if (typeof data !== "object" || data === null || data.constructor !== void 0 && data.constructor.name !== "Object" || Object.getOwnPropertySymbols(data).length !== 0) return errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol;
42
42
  const keyData = Object.keys(data);
43
- const requiredKeys = self.definition.requiredKeys;
43
+ const requiredKeys = self.definition.requiredKeys.value;
44
44
  if (requiredKeys && keyData.some((value) => !requiredKeys.includes(value))) return errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol;
45
45
  const pathStage = errorHandler?.().createPathStage();
46
46
  const encodedData = (requiredKeys ?? keyData).reduce((accumulator, key) => require_callThen.callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(`{record key: ${key}}`) ?? require_callThen.callThen(self.definition.key.executeCheck(key, errorHandler), (keyResult) => pathStage?.setCurrentPath(`{record value: ${key}}`) ?? require_callThen.callThen(self.definition.value.executeEncode(codecContext, data[key], errorHandler), (encodedValue) => {
@@ -53,7 +53,7 @@ const RecordStructure = require_base.createStructure(recordStructureKind, ({ ini
53
53
  executeDecode: (self, codecContext, data, errorHandler) => {
54
54
  if (typeof data !== "object" || data === null || data.constructor !== void 0 && data.constructor.name !== "Object" || Object.getOwnPropertySymbols(data).length !== 0) return errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol;
55
55
  const keyData = Object.keys(data);
56
- const requiredKeys = self.definition.requiredKeys;
56
+ const requiredKeys = self.definition.requiredKeys.value;
57
57
  if (requiredKeys && keyData.some((value) => !requiredKeys.includes(value))) return errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol;
58
58
  const pathStage = errorHandler?.().createPathStage();
59
59
  const decodedData = (requiredKeys ?? keyData).reduce((accumulator, key) => require_callThen.callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(`{record key: ${key}}`) ?? require_callThen.callThen(self.definition.key.executeCheck(key, errorHandler), (keyResult) => pathStage?.setCurrentPath(`{record value: ${key}}`) ?? require_callThen.callThen(self.definition.value.executeDecode(codecContext, data[key], errorHandler), (decodedValue) => {
@@ -12,8 +12,8 @@ export declare const recordStructureKind: DKind.Handler<DKind.Definition<"@Duplo
12
12
  export interface RecordStructureDefinition<GenericConstraints extends readonly Constraint[] = readonly Constraint[]> extends StructureDefinition<GenericConstraints> {
13
13
  readonly key: UnionStructure<string> | TypeStructure<string>;
14
14
  readonly value: Structure;
15
- readonly requiredKeys: string[] | null;
15
+ readonly requiredKeys: DCommon.Memoized<string[] | null>;
16
16
  }
17
- export interface RecordStructure<GenericValue extends Record<string, unknown> = Record<string, unknown>, GenericConstraints extends readonly Constraint<GenericValue>[] = readonly Constraint<GenericValue>[]> extends DCommon.UnionToIntersection<Structure<GenericValue, RecordStructureDefinition<GenericConstraints>> & DKind.Kind<typeof recordStructureKind>> {
17
+ export interface RecordStructure<GenericValue extends Record<string, unknown> = Record<string, unknown>, GenericConstraints extends readonly Constraint<GenericValue>[] = readonly Constraint<GenericValue>[]> extends DCommon.Forward<Structure<GenericValue, RecordStructureDefinition<GenericConstraints>> & DKind.Kind<typeof recordStructureKind>> {
18
18
  }
19
19
  export declare const RecordStructure: <GenericKey extends (UnionStructure<string> | TypeStructure<string>), GenericValueStructure extends Structure, const GenericConstraints extends readonly Constraint<RecordStructureValue<GenericKey, GenericValueStructure>>[]>(key: GenericKey, value: GenericValueStructure, constraints: GenericConstraints) => NoInfer<RecordStructure<RecordStructureValue<GenericKey, GenericValueStructure>, readonly [...GenericConstraints]>>;
@@ -1,6 +1,6 @@
1
1
  import { callThen } from "../../../common/callThen.mjs";
2
2
  import { isType } from "../../../common/isType.mjs";
3
- import { justExec } from "../../../common/justExec.mjs";
3
+ import { memo } from "../../../common/memo.mjs";
4
4
  import { createKind } from "../../kind.mjs";
5
5
  import { ErrorSymbol, SuccessSymbol } from "../../common/resultSymbol.mjs";
6
6
  import { createStructure } from "../base.mjs";
@@ -16,10 +16,10 @@ const RecordStructure = createStructure(recordStructureKind, ({ init }) => (key,
16
16
  key,
17
17
  value,
18
18
  constraints,
19
- requiredKeys: justExec(() => {
19
+ requiredKeys: memo(() => {
20
20
  if (structureIdentifier(key, unionStructureKind)) {
21
- if (key.definition.values.some((value) => structureIdentifier(value, typeStructureKind) && typeIdentifier(value.definition.type, stringTypeKind))) return null;
22
- return key.definition.values.map((value) => structureIdentifier(value, typeStructureKind) && typeIdentifier(value.definition.type, stringLiteralTypeKind) ? value.definition.type.definition.value : null).filter(isType("string"));
21
+ if (key.definition.values.value.some((value) => structureIdentifier(value, typeStructureKind) && typeIdentifier(value.definition.type, stringTypeKind))) return null;
22
+ return key.definition.values.value.map((value) => structureIdentifier(value, typeStructureKind) && typeIdentifier(value.definition.type, stringLiteralTypeKind) ? value.definition.type.definition.value : null).filter(isType("string"));
23
23
  }
24
24
  if (structureIdentifier(key, typeStructureKind) && typeIdentifier(key.definition.type, stringLiteralTypeKind)) return [key.definition.type.definition.value];
25
25
  return null;
@@ -28,7 +28,7 @@ const RecordStructure = createStructure(recordStructureKind, ({ init }) => (key,
28
28
  executeCheck: (self, data, errorHandler) => {
29
29
  if (typeof data !== "object" || data === null || data.constructor !== void 0 && data.constructor.name !== "Object" || Object.getOwnPropertySymbols(data).length !== 0) return errorHandler?.().addIssue(self, data) ?? ErrorSymbol;
30
30
  const keyData = Object.keys(data);
31
- const requiredKeys = self.definition.requiredKeys;
31
+ const requiredKeys = self.definition.requiredKeys.value;
32
32
  if (requiredKeys && keyData.some((value) => !requiredKeys.includes(value))) return errorHandler?.().addIssue(self, data) ?? ErrorSymbol;
33
33
  const pathStage = errorHandler?.().createPathStage();
34
34
  const result = (requiredKeys ?? keyData).reduce((accumulator, key) => callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(`{record key: ${key}}`) ?? callThen(self.definition.key.executeCheck(key, errorHandler), (resultKey) => pathStage?.setCurrentPath(`{record value: ${key}}`) ?? callThen(self.definition.value.executeCheck(data[key], errorHandler), (resultValue) => resultValue === ErrorSymbol || resultKey === ErrorSymbol || awaitedAccumulator === ErrorSymbol ? ErrorSymbol : SuccessSymbol))), SuccessSymbol);
@@ -40,7 +40,7 @@ const RecordStructure = createStructure(recordStructureKind, ({ init }) => (key,
40
40
  executeEncode: (self, codecContext, data, errorHandler) => {
41
41
  if (typeof data !== "object" || data === null || data.constructor !== void 0 && data.constructor.name !== "Object" || Object.getOwnPropertySymbols(data).length !== 0) return errorHandler?.().addIssue(self, data) ?? ErrorSymbol;
42
42
  const keyData = Object.keys(data);
43
- const requiredKeys = self.definition.requiredKeys;
43
+ const requiredKeys = self.definition.requiredKeys.value;
44
44
  if (requiredKeys && keyData.some((value) => !requiredKeys.includes(value))) return errorHandler?.().addIssue(self, data) ?? ErrorSymbol;
45
45
  const pathStage = errorHandler?.().createPathStage();
46
46
  const encodedData = (requiredKeys ?? keyData).reduce((accumulator, key) => callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(`{record key: ${key}}`) ?? callThen(self.definition.key.executeCheck(key, errorHandler), (keyResult) => pathStage?.setCurrentPath(`{record value: ${key}}`) ?? callThen(self.definition.value.executeEncode(codecContext, data[key], errorHandler), (encodedValue) => {
@@ -53,7 +53,7 @@ const RecordStructure = createStructure(recordStructureKind, ({ init }) => (key,
53
53
  executeDecode: (self, codecContext, data, errorHandler) => {
54
54
  if (typeof data !== "object" || data === null || data.constructor !== void 0 && data.constructor.name !== "Object" || Object.getOwnPropertySymbols(data).length !== 0) return errorHandler?.().addIssue(self, data) ?? ErrorSymbol;
55
55
  const keyData = Object.keys(data);
56
- const requiredKeys = self.definition.requiredKeys;
56
+ const requiredKeys = self.definition.requiredKeys.value;
57
57
  if (requiredKeys && keyData.some((value) => !requiredKeys.includes(value))) return errorHandler?.().addIssue(self, data) ?? ErrorSymbol;
58
58
  const pathStage = errorHandler?.().createPathStage();
59
59
  const decodedData = (requiredKeys ?? keyData).reduce((accumulator, key) => callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(`{record key: ${key}}`) ?? callThen(self.definition.key.executeCheck(key, errorHandler), (keyResult) => pathStage?.setCurrentPath(`{record value: ${key}}`) ?? callThen(self.definition.value.executeDecode(codecContext, data[key], errorHandler), (decodedValue) => {
@@ -7,6 +7,6 @@ export declare const typeStructureKind: DKind.Handler<DKind.Definition<"@Duplojs
7
7
  export interface TypeStructureDefinition<GenericConstraints extends readonly Constraint[] = readonly Constraint[]> extends StructureDefinition<GenericConstraints> {
8
8
  readonly type: Type;
9
9
  }
10
- export interface TypeStructure<GenericType extends unknown = unknown, GenericConstraints extends readonly Constraint<GenericType>[] = readonly Constraint<GenericType>[]> extends DCommon.UnionToIntersection<Structure<GenericType, TypeStructureDefinition<GenericConstraints>> & DKind.Kind<typeof typeStructureKind>> {
10
+ export interface TypeStructure<GenericType extends unknown = unknown, GenericConstraints extends readonly Constraint<GenericType>[] = readonly Constraint<GenericType>[]> extends DCommon.Forward<Structure<GenericType, TypeStructureDefinition<GenericConstraints>> & DKind.Kind<typeof typeStructureKind>> {
11
11
  }
12
12
  export declare const TypeStructure: <GenericType extends Type, const GenericConstraints extends readonly Constraint<TypeValue<GenericType>>[]>(type: GenericType, constraints: GenericConstraints) => NoInfer<TypeStructure<TypeValue<GenericType>, readonly [...GenericConstraints]>>;
@@ -1,18 +1,24 @@
1
1
  const require_callThen = require("../../../common/callThen.cjs");
2
+ const require_memo = require("../../../common/memo.cjs");
2
3
  const require_kind = require("../../kind.cjs");
3
4
  const require_resultSymbol = require("../../common/resultSymbol.cjs");
4
5
  const require_error = require("../../common/error.cjs");
5
6
  const require_base = require("../base.cjs");
6
7
  const require_identifier = require("../identifier.cjs");
8
+ const require_lazy = require("./lazy.cjs");
7
9
  //#region scripts/dataStructure/structure/defaults/union.ts
8
10
  const unionStructureKind = require_kind.createKind("union-structure");
9
11
  const UnionStructure = require_base.createStructure(unionStructureKind, ({ init }) => (values, constraints) => init({
10
- values: values.flatMap((value) => require_identifier.structureIdentifier(value, unionStructureKind) ? value.definition.values : value),
12
+ values: require_memo.memo(() => values.flatMap((value) => (function flatUnion(structure) {
13
+ if (require_identifier.structureIdentifier(structure, unionStructureKind)) return structure.definition.values.value.flatMap(flatUnion);
14
+ if (require_identifier.structureIdentifier(structure, require_lazy.lazyStructureKind)) return flatUnion(structure.definition.getter.value);
15
+ return structure;
16
+ })(value))),
11
17
  constraints
12
18
  }, {
13
19
  executeCheck: (self, data, errorHandler) => {
14
20
  const errorHandlers = errorHandler ? [] : void 0;
15
- const result = self.definition.values.reduce((accumulator, value, index) => require_callThen.callThen(accumulator, (awaitedAccumulator) => {
21
+ const result = self.definition.values.value.reduce((accumulator, value, index) => require_callThen.callThen(accumulator, (awaitedAccumulator) => {
16
22
  if (awaitedAccumulator === require_resultSymbol.SuccessSymbol) return awaitedAccumulator;
17
23
  const subErrorHandler = errorHandler === void 0 ? void 0 : require_error.createGetErrorHandler(errorHandler().currentPath);
18
24
  if (errorHandlers && subErrorHandler) {
@@ -32,7 +38,7 @@ const UnionStructure = require_base.createStructure(unionStructureKind, ({ init
32
38
  },
33
39
  executeEncode: (self, codec, data, errorHandler) => {
34
40
  const errorHandlers = errorHandler ? [] : void 0;
35
- const encodedData = self.definition.values.reduce((accumulator, value, index) => require_callThen.callThen(accumulator, (awaitedAccumulator) => {
41
+ const encodedData = self.definition.values.value.reduce((accumulator, value, index) => require_callThen.callThen(accumulator, (awaitedAccumulator) => {
36
42
  if (awaitedAccumulator !== require_resultSymbol.ErrorSymbol) return awaitedAccumulator;
37
43
  const subErrorHandler = errorHandler === void 0 ? void 0 : require_error.createGetErrorHandler(errorHandler().currentPath);
38
44
  if (errorHandlers && subErrorHandler) {
@@ -52,7 +58,7 @@ const UnionStructure = require_base.createStructure(unionStructureKind, ({ init
52
58
  },
53
59
  executeDecode: (self, codec, data, errorHandler) => {
54
60
  const errorHandlers = errorHandler ? [] : void 0;
55
- const decodedData = self.definition.values.reduce((accumulator, value, index) => require_callThen.callThen(accumulator, (awaitedAccumulator) => {
61
+ const decodedData = self.definition.values.value.reduce((accumulator, value, index) => require_callThen.callThen(accumulator, (awaitedAccumulator) => {
56
62
  if (awaitedAccumulator !== require_resultSymbol.ErrorSymbol) return awaitedAccumulator;
57
63
  const subErrorHandler = errorHandler === void 0 ? void 0 : require_error.createGetErrorHandler(errorHandler().currentPath);
58
64
  if (errorHandlers && subErrorHandler) {
@@ -70,7 +76,7 @@ const UnionStructure = require_base.createStructure(unionStructureKind, ({ init
70
76
  return require_callThen.callThen(self.executeConstraints(awaitedDecodedData, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : awaitedDecodedData);
71
77
  });
72
78
  },
73
- isAsynchronous: (self) => self.definition.values.some((value) => value.isAsynchronous())
79
+ isAsynchronous: (self) => self.definition.values.value.some((value) => value.isAsynchronous())
74
80
  }));
75
81
  //#endregion
76
82
  exports.UnionStructure = UnionStructure;
@@ -5,8 +5,8 @@ import type * as DKind from '../../../kind';
5
5
  import * as DCommon from '../../../common';
6
6
  export declare const unionStructureKind: DKind.Handler<DKind.Definition<"@DuplojsLangDataStructure/union-structure", unknown>>;
7
7
  export interface UnionStructureDefinition<GenericConstraints extends readonly Constraint[] = readonly Constraint[]> extends StructureDefinition<GenericConstraints> {
8
- readonly values: DCommon.AnyTuple<Structure>;
8
+ readonly values: DCommon.Memoized<DCommon.AnyTuple<Structure>>;
9
9
  }
10
- export interface UnionStructure<GenericValue extends unknown = unknown, GenericConstraints extends readonly Constraint<GenericValue>[] = readonly Constraint<GenericValue>[]> extends DCommon.UnionToIntersection<Structure<GenericValue, UnionStructureDefinition<GenericConstraints>> & DKind.Kind<typeof unionStructureKind>> {
10
+ export interface UnionStructure<GenericValue extends unknown = unknown, GenericConstraints extends readonly Constraint<GenericValue>[] = readonly Constraint<GenericValue>[]> extends DCommon.Forward<Structure<GenericValue, UnionStructureDefinition<GenericConstraints>> & DKind.Kind<typeof unionStructureKind>> {
11
11
  }
12
12
  export declare const UnionStructure: <GenericValues extends DCommon.AnyTuple<Structure>, const GenericConstraints extends readonly Constraint<StructureValue<GenericValues[number]>>[]>(values: GenericValues, constraints: GenericConstraints) => NoInfer<UnionStructure<StructureValue<GenericValues[number]>, readonly [...GenericConstraints]>>;
@@ -1,18 +1,24 @@
1
1
  import { callThen } from "../../../common/callThen.mjs";
2
+ import { memo } from "../../../common/memo.mjs";
2
3
  import { createKind } from "../../kind.mjs";
3
4
  import { ErrorSymbol, SuccessSymbol } from "../../common/resultSymbol.mjs";
4
5
  import { createGetErrorHandler } from "../../common/error.mjs";
5
6
  import { createStructure } from "../base.mjs";
6
7
  import { structureIdentifier } from "../identifier.mjs";
8
+ import { lazyStructureKind } from "./lazy.mjs";
7
9
  //#region scripts/dataStructure/structure/defaults/union.ts
8
10
  const unionStructureKind = createKind("union-structure");
9
11
  const UnionStructure = createStructure(unionStructureKind, ({ init }) => (values, constraints) => init({
10
- values: values.flatMap((value) => structureIdentifier(value, unionStructureKind) ? value.definition.values : value),
12
+ values: memo(() => values.flatMap((value) => (function flatUnion(structure) {
13
+ if (structureIdentifier(structure, unionStructureKind)) return structure.definition.values.value.flatMap(flatUnion);
14
+ if (structureIdentifier(structure, lazyStructureKind)) return flatUnion(structure.definition.getter.value);
15
+ return structure;
16
+ })(value))),
11
17
  constraints
12
18
  }, {
13
19
  executeCheck: (self, data, errorHandler) => {
14
20
  const errorHandlers = errorHandler ? [] : void 0;
15
- const result = self.definition.values.reduce((accumulator, value, index) => callThen(accumulator, (awaitedAccumulator) => {
21
+ const result = self.definition.values.value.reduce((accumulator, value, index) => callThen(accumulator, (awaitedAccumulator) => {
16
22
  if (awaitedAccumulator === SuccessSymbol) return awaitedAccumulator;
17
23
  const subErrorHandler = errorHandler === void 0 ? void 0 : createGetErrorHandler(errorHandler().currentPath);
18
24
  if (errorHandlers && subErrorHandler) {
@@ -32,7 +38,7 @@ const UnionStructure = createStructure(unionStructureKind, ({ init }) => (values
32
38
  },
33
39
  executeEncode: (self, codec, data, errorHandler) => {
34
40
  const errorHandlers = errorHandler ? [] : void 0;
35
- const encodedData = self.definition.values.reduce((accumulator, value, index) => callThen(accumulator, (awaitedAccumulator) => {
41
+ const encodedData = self.definition.values.value.reduce((accumulator, value, index) => callThen(accumulator, (awaitedAccumulator) => {
36
42
  if (awaitedAccumulator !== ErrorSymbol) return awaitedAccumulator;
37
43
  const subErrorHandler = errorHandler === void 0 ? void 0 : createGetErrorHandler(errorHandler().currentPath);
38
44
  if (errorHandlers && subErrorHandler) {
@@ -52,7 +58,7 @@ const UnionStructure = createStructure(unionStructureKind, ({ init }) => (values
52
58
  },
53
59
  executeDecode: (self, codec, data, errorHandler) => {
54
60
  const errorHandlers = errorHandler ? [] : void 0;
55
- const decodedData = self.definition.values.reduce((accumulator, value, index) => callThen(accumulator, (awaitedAccumulator) => {
61
+ const decodedData = self.definition.values.value.reduce((accumulator, value, index) => callThen(accumulator, (awaitedAccumulator) => {
56
62
  if (awaitedAccumulator !== ErrorSymbol) return awaitedAccumulator;
57
63
  const subErrorHandler = errorHandler === void 0 ? void 0 : createGetErrorHandler(errorHandler().currentPath);
58
64
  if (errorHandlers && subErrorHandler) {
@@ -70,7 +76,7 @@ const UnionStructure = createStructure(unionStructureKind, ({ init }) => (values
70
76
  return callThen(self.executeConstraints(awaitedDecodedData, errorHandler), (result) => result === ErrorSymbol ? ErrorSymbol : awaitedDecodedData);
71
77
  });
72
78
  },
73
- isAsynchronous: (self) => self.definition.values.some((value) => value.isAsynchronous())
79
+ isAsynchronous: (self) => self.definition.values.value.some((value) => value.isAsynchronous())
74
80
  }));
75
81
  //#endregion
76
82
  export { UnionStructure, unionStructureKind };