@shapio/cms 0.5.5 → 0.5.6

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 (156) hide show
  1. package/dist/admin/assets/{AssetTile-CaYPqR_F.js → AssetTile-_qRYsivK.js} +2 -2
  2. package/dist/admin/assets/{AssetTile-CaYPqR_F.js.map → AssetTile-_qRYsivK.js.map} +1 -1
  3. package/dist/admin/assets/{AssistError-drmpXSbS.js → AssistError-CMXQWiQo.js} +2 -2
  4. package/dist/admin/assets/{AssistError-drmpXSbS.js.map → AssistError-CMXQWiQo.js.map} +1 -1
  5. package/dist/admin/assets/{BlockMenuItems-D-jZ0oaU.js → BlockMenuItems-WIrbyv1a.js} +2 -2
  6. package/dist/admin/assets/{BlockMenuItems-D-jZ0oaU.js.map → BlockMenuItems-WIrbyv1a.js.map} +1 -1
  7. package/dist/admin/assets/{Body-Gn_z2KPN.js → Body-BYc1IVsQ.js} +2 -2
  8. package/dist/admin/assets/{Body-Gn_z2KPN.js.map → Body-BYc1IVsQ.js.map} +1 -1
  9. package/dist/admin/assets/Builder-CwHpRhZN.js +2 -0
  10. package/dist/admin/assets/Builder-CwHpRhZN.js.map +1 -0
  11. package/dist/admin/assets/{CodeEditor-CzRU6och.js → CodeEditor-NMvrWgxT.js} +2 -2
  12. package/dist/admin/assets/{CodeEditor-CzRU6och.js.map → CodeEditor-NMvrWgxT.js.map} +1 -1
  13. package/dist/admin/assets/{ConfirmDialog-DZRJfdvH.js → ConfirmDialog-Rd6WDt6q.js} +2 -2
  14. package/dist/admin/assets/{ConfirmDialog-DZRJfdvH.js.map → ConfirmDialog-Rd6WDt6q.js.map} +1 -1
  15. package/dist/admin/assets/{CopyButton-h4HYhnYp.js → CopyButton-B0RuxynJ.js} +2 -2
  16. package/dist/admin/assets/{CopyButton-h4HYhnYp.js.map → CopyButton-B0RuxynJ.js.map} +1 -1
  17. package/dist/admin/assets/{CursorPager-H4SpVYw7.js → CursorPager-CQZsKNxR.js} +2 -2
  18. package/dist/admin/assets/{CursorPager-H4SpVYw7.js.map → CursorPager-CQZsKNxR.js.map} +1 -1
  19. package/dist/admin/assets/{FocalPoint-CSeKI4Iw.js → FocalPoint-BYu2fOTb.js} +2 -2
  20. package/dist/admin/assets/{FocalPoint-CSeKI4Iw.js.map → FocalPoint-BYu2fOTb.js.map} +1 -1
  21. package/dist/admin/assets/{Form-DF_YmR1G.js → Form-CiZUsLPp.js} +2 -2
  22. package/dist/admin/assets/{Form-DF_YmR1G.js.map → Form-CiZUsLPp.js.map} +1 -1
  23. package/dist/admin/assets/{FormCheckboxGroup-V3IKrvzc.js → FormCheckboxGroup-Bz8KERs1.js} +2 -2
  24. package/dist/admin/assets/{FormCheckboxGroup-V3IKrvzc.js.map → FormCheckboxGroup-Bz8KERs1.js.map} +1 -1
  25. package/dist/admin/assets/{FormRadioGroup-DIv-MYgn.js → FormRadioGroup-c-wyx7dq.js} +2 -2
  26. package/dist/admin/assets/{FormRadioGroup-DIv-MYgn.js.map → FormRadioGroup-c-wyx7dq.js.map} +1 -1
  27. package/dist/admin/assets/{FormSelectField-CUhaPIMY.js → FormSelectField-ijG9qPpb.js} +2 -2
  28. package/dist/admin/assets/{FormSelectField-CUhaPIMY.js.map → FormSelectField-ijG9qPpb.js.map} +1 -1
  29. package/dist/admin/assets/{FormSwitchField-DW8ysyk_.js → FormSwitchField-Bp3hNpeP.js} +2 -2
  30. package/dist/admin/assets/{FormSwitchField-DW8ysyk_.js.map → FormSwitchField-Bp3hNpeP.js.map} +1 -1
  31. package/dist/admin/assets/{FormTextareaField-DbqZ-MwI.js → FormTextareaField-BSKMqHcW.js} +2 -2
  32. package/dist/admin/assets/{FormTextareaField-DbqZ-MwI.js.map → FormTextareaField-BSKMqHcW.js.map} +1 -1
  33. package/dist/admin/assets/{HintedLabel-BlLtqVVz.js → HintedLabel-BrLH4NQW.js} +2 -2
  34. package/dist/admin/assets/{HintedLabel-BlLtqVVz.js.map → HintedLabel-BrLH4NQW.js.map} +1 -1
  35. package/dist/admin/assets/{InfoHint-bYMd_t0J.js → InfoHint-Dyzyf59c.js} +2 -2
  36. package/dist/admin/assets/{InfoHint-bYMd_t0J.js.map → InfoHint-Dyzyf59c.js.map} +1 -1
  37. package/dist/admin/assets/{InsertMenuItem-D2HGERzb.js → InsertMenuItem-BvRDuXtd.js} +2 -2
  38. package/dist/admin/assets/{InsertMenuItem-D2HGERzb.js.map → InsertMenuItem-BvRDuXtd.js.map} +1 -1
  39. package/dist/admin/assets/{Match-GDx_orOH.js → Match-Bixf1ygj.js} +2 -2
  40. package/dist/admin/assets/{Match-GDx_orOH.js.map → Match-Bixf1ygj.js.map} +1 -1
  41. package/dist/admin/assets/{QueryView-UBO-U5Wo.js → QueryView--_vvV7dC.js} +2 -2
  42. package/dist/admin/assets/{QueryView-UBO-U5Wo.js.map → QueryView--_vvV7dC.js.map} +1 -1
  43. package/dist/admin/assets/{RadioTile-CJbIIV8t.js → RadioTile-BCp6auUz.js} +2 -2
  44. package/dist/admin/assets/{RadioTile-CJbIIV8t.js.map → RadioTile-BCp6auUz.js.map} +1 -1
  45. package/dist/admin/assets/{RichTextField-M7HyUhYF.js → RichTextField-fWNjndUc.js} +2 -2
  46. package/dist/admin/assets/{RichTextField-M7HyUhYF.js.map → RichTextField-fWNjndUc.js.map} +1 -1
  47. package/dist/admin/assets/{RowTitle-DoxDM1XL.js → RowTitle-B4CE8tt7.js} +2 -2
  48. package/dist/admin/assets/{RowTitle-DoxDM1XL.js.map → RowTitle-B4CE8tt7.js.map} +1 -1
  49. package/dist/admin/assets/{SecretReveal-kCkLH5jg.js → SecretReveal-BhSqdWqh.js} +2 -2
  50. package/dist/admin/assets/{SecretReveal-kCkLH5jg.js.map → SecretReveal-BhSqdWqh.js.map} +1 -1
  51. package/dist/admin/assets/{SharedGlyph-D1OMHXPf.js → SharedGlyph-71FTypoi.js} +2 -2
  52. package/dist/admin/assets/{SharedGlyph-D1OMHXPf.js.map → SharedGlyph-71FTypoi.js.map} +1 -1
  53. package/dist/admin/assets/StepList-CZJmwy9e.js +2 -0
  54. package/dist/admin/assets/StepList-CZJmwy9e.js.map +1 -0
  55. package/dist/admin/assets/Structure-Dk87778W.js +2 -0
  56. package/dist/admin/assets/{Structure-CO4aJZVP.js.map → Structure-Dk87778W.js.map} +1 -1
  57. package/dist/admin/assets/{SuggestAltButton-CbRUxD5s.js → SuggestAltButton-CxS8IR6m.js} +2 -2
  58. package/dist/admin/assets/{SuggestAltButton-CbRUxD5s.js.map → SuggestAltButton-CxS8IR6m.js.map} +1 -1
  59. package/dist/admin/assets/{Thumbnail-D1XuDElk.js → Thumbnail-BwbCNpgQ.js} +2 -2
  60. package/dist/admin/assets/{Thumbnail-D1XuDElk.js.map → Thumbnail-BwbCNpgQ.js.map} +1 -1
  61. package/dist/admin/assets/{UnsavedChangesGuard-C1n7egF6.js → UnsavedChangesGuard-C6nD55Fn.js} +2 -2
  62. package/dist/admin/assets/{UnsavedChangesGuard-C1n7egF6.js.map → UnsavedChangesGuard-C6nD55Fn.js.map} +1 -1
  63. package/dist/admin/assets/{UserAvatar-Bl32IpG_.js → UserAvatar-D7IbSpsP.js} +2 -2
  64. package/dist/admin/assets/{UserAvatar-Bl32IpG_.js.map → UserAvatar-D7IbSpsP.js.map} +1 -1
  65. package/dist/admin/assets/{badge-ydvfgE8a.js → badge-vLiQczOd.js} +2 -2
  66. package/dist/admin/assets/{badge-ydvfgE8a.js.map → badge-vLiQczOd.js.map} +1 -1
  67. package/dist/admin/assets/{changeSets-DgfCKja3.js → changeSets-D5VevASj.js} +2 -2
  68. package/dist/admin/assets/{changeSets-DgfCKja3.js.map → changeSets-D5VevASj.js.map} +1 -1
  69. package/dist/admin/assets/{constants-esJAnNTh.js → constants-CKGh8uwT.js} +2 -2
  70. package/dist/admin/assets/{constants-esJAnNTh.js.map → constants-CKGh8uwT.js.map} +1 -1
  71. package/dist/admin/assets/{content-DsMSB6Wb.js → content-Cbavyq0x.js} +3 -3
  72. package/dist/admin/assets/{content-DsMSB6Wb.js.map → content-Cbavyq0x.js.map} +1 -1
  73. package/dist/admin/assets/{contentTypes-C-AKiYu1.js → contentTypes-DzQ_0v36.js} +2 -2
  74. package/dist/admin/assets/{contentTypes-C-AKiYu1.js.map → contentTypes-DzQ_0v36.js.map} +1 -1
  75. package/dist/admin/assets/{develop-DL-2W9jv.js → develop-BDqMOEql.js} +2 -2
  76. package/dist/admin/assets/{develop-DL-2W9jv.js.map → develop-BDqMOEql.js.map} +1 -1
  77. package/dist/admin/assets/{dropdown-menu-C53v9ioW.js → dropdown-menu-CVAnm22s.js} +2 -2
  78. package/dist/admin/assets/{dropdown-menu-C53v9ioW.js.map → dropdown-menu-CVAnm22s.js.map} +1 -1
  79. package/dist/admin/assets/es2015-BKfbx3rz.js +42 -0
  80. package/dist/admin/assets/es2015-BKfbx3rz.js.map +1 -0
  81. package/dist/admin/assets/{field-W1dB_h6d.js → field-Bg-JRgsB.js} +2 -2
  82. package/dist/admin/assets/{field-W1dB_h6d.js.map → field-Bg-JRgsB.js.map} +1 -1
  83. package/dist/admin/assets/{fileRoute-DzWMBrRx.js → fileRoute-DQCI1nMN.js} +2 -2
  84. package/dist/admin/assets/{fileRoute-DzWMBrRx.js.map → fileRoute-DQCI1nMN.js.map} +1 -1
  85. package/dist/admin/assets/{followPlural-D-5ZJqJF.js → followPlural-D0bENI5E.js} +2 -2
  86. package/dist/admin/assets/{followPlural-D-5ZJqJF.js.map → followPlural-D0bENI5E.js.map} +1 -1
  87. package/dist/admin/assets/{inbox-DUqOrFEA.js → inbox-Dfy4YBZ2.js} +2 -2
  88. package/dist/admin/assets/{inbox-DUqOrFEA.js.map → inbox-Dfy4YBZ2.js.map} +1 -1
  89. package/dist/admin/assets/{index-D03RZB7e.js → index-M4TUI1dl.js} +4 -4
  90. package/dist/admin/assets/{index-D03RZB7e.js.map → index-M4TUI1dl.js.map} +1 -1
  91. package/dist/admin/assets/{labels-CHE0gg1n.js → labels-BrwwGWnv.js} +2 -2
  92. package/dist/admin/assets/{labels-CHE0gg1n.js.map → labels-BrwwGWnv.js.map} +1 -1
  93. package/dist/admin/assets/{media-BUUEsWxd.js → media-DBdx-UmR.js} +2 -2
  94. package/dist/admin/assets/{media-BUUEsWxd.js.map → media-DBdx-UmR.js.map} +1 -1
  95. package/dist/admin/assets/{network-Bolr2lmf.js → network-BpbMYp6D.js} +2 -2
  96. package/dist/admin/assets/{network-Bolr2lmf.js.map → network-BpbMYp6D.js.map} +1 -1
  97. package/dist/admin/assets/{publishing-ClNjPLQ9.js → publishing-CpSDO3M7.js} +2 -2
  98. package/dist/admin/assets/{publishing-ClNjPLQ9.js.map → publishing-CpSDO3M7.js.map} +1 -1
  99. package/dist/admin/assets/{radio-group-rFxn7cz2.js → radio-group-DQ3sC1ol.js} +2 -2
  100. package/dist/admin/assets/{radio-group-rFxn7cz2.js.map → radio-group-DQ3sC1ol.js.map} +1 -1
  101. package/dist/admin/assets/{searchSchemas-C4qp-vCa.js → searchSchemas-D4S2ceA0.js} +2 -2
  102. package/dist/admin/assets/{searchSchemas-C4qp-vCa.js.map → searchSchemas-D4S2ceA0.js.map} +1 -1
  103. package/dist/admin/assets/{sections-C7Z6Xd8r.js → sections-Cl1LrzqH.js} +2 -2
  104. package/dist/admin/assets/{sections-C7Z6Xd8r.js.map → sections-Cl1LrzqH.js.map} +1 -1
  105. package/dist/admin/assets/{select-DUhL27UN.js → select-DjCAH45V.js} +2 -2
  106. package/dist/admin/assets/{select-DUhL27UN.js.map → select-DjCAH45V.js.map} +1 -1
  107. package/dist/admin/assets/{seo-l1ZORjtv.js → seo-DJ4k3LtY.js} +2 -2
  108. package/dist/admin/assets/{seo-l1ZORjtv.js.map → seo-DJ4k3LtY.js.map} +1 -1
  109. package/dist/admin/assets/{settings-DgoG3H8C.js → settings-DRZ33PTg.js} +2 -2
  110. package/dist/admin/assets/{settings-DgoG3H8C.js.map → settings-DRZ33PTg.js.map} +1 -1
  111. package/dist/admin/assets/{shapes-BZ87ap5s.js → shapes-BJe3IMuj.js} +5 -5
  112. package/dist/admin/assets/{shapes-BZ87ap5s.js.map → shapes-BJe3IMuj.js.map} +1 -1
  113. package/dist/admin/assets/{skeleton-Dyi_b1wq.js → skeleton-D4eOLKLY.js} +2 -2
  114. package/dist/admin/assets/{skeleton-Dyi_b1wq.js.map → skeleton-D4eOLKLY.js.map} +1 -1
  115. package/dist/admin/assets/src-DUpL-qwG.js +7 -0
  116. package/dist/admin/assets/src-DUpL-qwG.js.map +1 -0
  117. package/dist/admin/assets/{switch-C3dDDUIk.js → switch-B2R13aVU.js} +2 -2
  118. package/dist/admin/assets/{switch-C3dDDUIk.js.map → switch-B2R13aVU.js.map} +1 -1
  119. package/dist/admin/assets/{theme-DPe080iG.js → theme-X-qeg74W.js} +2 -2
  120. package/dist/admin/assets/{theme-DPe080iG.js.map → theme-X-qeg74W.js.map} +1 -1
  121. package/dist/admin/assets/{titles-C5PaMgFJ.js → titles-CLh5ftA2.js} +2 -2
  122. package/dist/admin/assets/{titles-C5PaMgFJ.js.map → titles-CLh5ftA2.js.map} +1 -1
  123. package/dist/admin/assets/{tooltip-BEaZkRPK.js → tooltip-u2epXfJF.js} +2 -2
  124. package/dist/admin/assets/{tooltip-BEaZkRPK.js.map → tooltip-u2epXfJF.js.map} +1 -1
  125. package/dist/admin/assets/{useContentSchema-wLDa2L3f.js → useContentSchema-DaQHlL19.js} +2 -2
  126. package/dist/admin/assets/{useContentSchema-wLDa2L3f.js.map → useContentSchema-DaQHlL19.js.map} +1 -1
  127. package/dist/admin/assets/{useDiscardGuard-WTUINqD5.js → useDiscardGuard-BVJGUCiH.js} +2 -2
  128. package/dist/admin/assets/{useDiscardGuard-WTUINqD5.js.map → useDiscardGuard-BVJGUCiH.js.map} +1 -1
  129. package/dist/admin/assets/{useMediaPickerDialog-CFN9ZKfe.js → useMediaPickerDialog-C23eOHQR.js} +2 -2
  130. package/dist/admin/assets/{useMediaPickerDialog-CFN9ZKfe.js.map → useMediaPickerDialog-C23eOHQR.js.map} +1 -1
  131. package/dist/admin/assets/{useMediaUploader-B42H_CMG.js → useMediaUploader-CTViR0LX.js} +2 -2
  132. package/dist/admin/assets/{useMediaUploader-B42H_CMG.js.map → useMediaUploader-CTViR0LX.js.map} +1 -1
  133. package/dist/admin/assets/{useResolvedScheme-aV0QDPi3.js → useResolvedScheme-Cg8TdO85.js} +2 -2
  134. package/dist/admin/assets/{useResolvedScheme-aV0QDPi3.js.map → useResolvedScheme-Cg8TdO85.js.map} +1 -1
  135. package/dist/admin/assets/{zod-C-k48Hnc.js → zod-D5i60ErJ.js} +2 -2
  136. package/dist/admin/assets/{zod-C-k48Hnc.js.map → zod-D5i60ErJ.js.map} +1 -1
  137. package/dist/admin/index.html +27 -27
  138. package/dist/cli.js +10 -3
  139. package/dist/cli.js.map +1 -1
  140. package/dist/index.d.ts +7 -2
  141. package/dist/index.js +1 -1
  142. package/dist/{s3Adapter-sL1zP4Zl.js → s3Adapter-CtPzkzf0.js} +2 -2
  143. package/dist/{s3Adapter-sL1zP4Zl.js.map → s3Adapter-CtPzkzf0.js.map} +1 -1
  144. package/dist/{worker-DMES6pqh.js → worker-DRCCGGjl.js} +3823 -3719
  145. package/dist/worker-DRCCGGjl.js.map +1 -0
  146. package/package.json +5 -5
  147. package/dist/admin/assets/Builder-DyCcikfS.js +0 -2
  148. package/dist/admin/assets/Builder-DyCcikfS.js.map +0 -1
  149. package/dist/admin/assets/StepList-BIQjDaWQ.js +0 -2
  150. package/dist/admin/assets/StepList-BIQjDaWQ.js.map +0 -1
  151. package/dist/admin/assets/Structure-CO4aJZVP.js +0 -2
  152. package/dist/admin/assets/es2015-DrAA1N2V.js +0 -42
  153. package/dist/admin/assets/es2015-DrAA1N2V.js.map +0 -1
  154. package/dist/admin/assets/src-BcLeD2-K.js +0 -7
  155. package/dist/admin/assets/src-BcLeD2-K.js.map +0 -1
  156. package/dist/worker-DMES6pqh.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"src-BcLeD2-K.js","names":["GraphemeCount","CodePointCount","IsMaxLength","IsMinLength","IsArray","IsBigInt","IsBoolean","IsConstructor","IsUndefined","IsFunction","IsInteger","IsNull","IsNumber","IsObject","IsString","IsSymbol","IsMultipleOf","UnicodeSegmentGuard.GraphemeCount","UnicodeGuard.CodePointCount","IsMaxLength","UnicodeGuard.IsMaxLength","IsMinLength","UnicodeGuard.IsMinLength","IsBoolean","IsNumber","IsString","IsDate","Guard","Get","Settings.Get","IsSchemaObject","Guard.HasPropertyKey","Guard.Keys","Guard.IsUnsafePropertyKey","FromValue","Guard.IsEqual","Guard.Symbols","FromObject","Guard.IsClassInstance","FromArray","FromRegExp","GlobalsGuard.IsTypeArray","GlobalsGuard.IsRegExp","GlobalsGuard.IsMap","GlobalsGuard.IsSet","Guard.IsArray","Guard.IsObject","Clone","Settings.Get","Guard.Keys","Clone","Update","Settings.Get","Clone","Guard.IsObject","Guard.HasPropertyKey","Guard.IsEqual","IsSchema","Memory.Create","Memory.Update","Memory.Update","Memory.Create","Memory.Discard","Memory.Create","Memory.Discard","Memory.Create","Memory.Discard","Ref","Memory.Create","IsRef","Memory.Create","Memory.Create","Memory.Create","IsSchema","Guard.HasPropertyKey","Guard.Keys","Guard.Values","Memory.Create","Memory.Discard","Memory.Create","Guard.Keys","Memory.Update","Memory.Create","Guard.IsObjectNotArray","Guard.HasPropertyKey","Guard.IsNull","Match","Memory.Create","Memory.Discard","Guard.IsObjectNotArray","Guard.Keys","Memory.Create","IsEnum","Memory.Create","Memory.Discard","FromArray","FromBigInt","FromBoolean","FromNull","FromNumber","FromObject","FromString","FromUndefined","GlobalsGuard.IsTypeArray","GlobalsGuard.IsDate","GlobalsGuard.IsRegExp","GlobalsGuard.IsBoolean","GlobalsGuard.IsString","GlobalsGuard.IsNumber","Guard.IsArray","Guard.IsBoolean","Guard.IsBigInt","Guard.IsConstructor","Guard.IsNull","Guard.IsObject","Guard.IsString","Guard.IsSymbol","Guard.IsUndefined","Guard.IsFunction","Get","IsSchema","Guard.HasPropertyKey","Guard.IsObject","IsSchema","Guard.HasPropertyKey","IsSchema","Guard.HasPropertyKey","BigInt","Memory.Create","Boolean","Memory.Create","Memory.Create","Guard.IsBigInt","Guard.IsBoolean","Guard.IsNumber","Guard.IsString","Memory.Create","Memory.Create","Number","Memory.Create","Memory.Create","String","Memory.Create","Memory.Create","Memory.Discard","Guard.IsEqual","FromLiteral","Guard.ShiftLeft","FromType","FromTypes","Guard.IsEqual","Memory.Create","Guard.ShiftLeft","FromLiteral","Guard.IsEqual","FromUnion","FromType","String","Memory.Create","Object","Memory.Create","Memory.Discard","Memory.Discard","Memory.Update","Memory.Discard","Memory.Update","Object","Guard.Keys","Object","Guard.IsEqual","Guard.ShiftLeft","Guard.IsEqual","Distribute","ExtendsResult.IsExtendsTrueLike","Guard.ShiftLeft","Guard.ShiftLeft","Distribute","IsEnum","Guard.IsEqual","Guard.IsString","Guard.IsNumber","Object","Guard.IsEqual","Guard.HasPropertyKey","Guard.IsString","Guard.ShiftLeft","Guard.IsEqual","Guard.IsString","Guard.IsNumber","Object","IsSchema","IsEnum","Object","Memory.Update","Guard.IsEqual","String","Number","Guard.Keys","Memory.Create","Memory.Create","T.BigInt","T.String","T.Number","T.Integer","T.Never","T.Literal","T.Union","Match","AllowedDigits","Match","Match","Token.Const","S.PatternBigIntMapping","S.PatternStringMapping","S.PatternNumberMapping","S.PatternIntegerMapping","S.PatternNeverMapping","Token.Until_1","S.PatternTextMapping","S.PatternBaseMapping","S.PatternGroupMapping","S.PatternUnionMapping","S.PatternTermMapping","S.PatternBodyMapping","S.PatternMapping","Guard.ShiftLeft","IsEnum","Memory.Update","IsSchema","Guard.HasPropertyKey","Guard.IsEqual","ExtendsUnion","Memory.Create","Guard.IsObject","Guard.HasPropertyKey","Guard.IsEqual","Match","Result.Match","Result.ExtendsTrue","Memory.Assign","Result.ExtendsFalse","Guard.ShiftLeft","IsEnum","Result.ExtendsTrue","Result.ExtendsUnion","Result.ExtendsFalse","Result.ExtendsTrue","Result.ExtendsTrue","Result.ExtendsFalse","Result.Match","Guard.ShiftLeft","Result.ExtendsTrue","Result.ExtendsTrue","Result.ExtendsTrue","Result.Match","Result.ExtendsFalse","Result.Match","Result.ExtendsTrue","Result.Match","Result.ExtendsFalse","Result.ExtendsTrue","Result.ExtendsTrue","Result.ExtendsFalse","Guard.IsBigInt","Guard.IsBoolean","Guard.IsNumber","Guard.IsString","Result.ExtendsTrue","Result.ExtendsTrue","Result.ExtendsTrue","Result.ExtendsTrue","Result.ExtendsFalse","Result.Match","Result.IsExtendsTrueLike","Guard.Keys","Memory.Assign","Guard.Values","Guard.HasPropertyKey","Guard.ShiftLeft","Object","FromObject","Guard.IsEqual","Guard.Keys","Result.ExtendsTrue","Result.ExtendsFalse","FromRecord","Result.ExtendsTrue","Result.ExtendsTrue","Memory.Create","Guard.IsObject","Guard.HasPropertyKey","Guard.IsEqual","Guard.IsString","Result.IsExtendsTrueLike","Guard.IsArray","Result.ExtendsTrue","Memory.Assign","Result.ExtendsFalse","IsSchema","Result.Match","Result.ExtendsFalse","Guard.ShiftLeft","Guard.IsEqual","Result.ExtendsTrue","Result.IsExtendsTrueLike","Result.ExtendsTrue","Guard.ShiftLeft","Result.Match","Result.ExtendsTrue","Result.ExtendsFalse","Result.ExtendsTrue","Result.ExtendsFalse","Result.ExtendsTrue","IsEnum","Result.ExtendsFalse","Object","Memory.Update","IsSchema","Guard.HasPropertyKey","Guard.IsEqual","FromRef","FromType","FromProperties","FromTypes","Guard.ShiftLeft","IsRef","FromRef","FromType","FromProperties","FromTypes","IsRef","FromRef","FromProperties","Guard.Keys","FromType","FromTypes","IsRef","Object","Object","Guard.Keys","IsRef","ExtendsResult.IsExtendsTrueLike","ExtendsResult.IsExtendsFalse","Guard.ShiftLeft","Guard.IsEqual","Memory.Update","Guard.IsEqual","IsRef","Guard.ShiftLeft","IsEnum","FromRef","FromType","IsRef","ExtendsResult.IsExtendsTrueLike","Memory.Assign","Guard.ShiftLeft","Guard.IsLessThan","Settings.Get","Guard.IsEqual","Guard.IsGreaterThan","Ref","Memory.Create","Memory.Discard","Memory.Update","FromLiteral","Guard.IsString","FromTemplateLiteral","FromType","FromUnion","FromType","FromType","FromLiteral","FromTemplateLiteral","FromUnion","Memory.Update","FromType","ExtendsResult.IsExtendsUnion","ExtendsResult.IsExtendsTrue","Memory.Update","Memory.Update","Memory.Update","ExtendsResult.IsExtendsTrueLike","Guard.ShiftLeft","Memory.Update","FromCyclic","FromType","FromDependent","FromType","Guard.Keys","Guard.HasPropertyKey","Memory.Assign","FromIntersect","FromType","FromObject","FromTuple","FromType","Guard.Keys","Guard.ShiftLeft","FromType","FromUnion","FromType","FromCyclic","FromDependent","FromIntersect","FromUnion","FromTuple","FromObject","FromType","Object","FromArray","Number","ExtendsResult.IsExtendsTrueLike","Guard.IsEqual","FromCyclic","FromType","FromDependent","FromType","FromEnum","FromType","FromIntersect","FromType","FromLiteral","FromTemplateLiteral","FromType","FromUnion","FromType","FromType","FromCyclic","FromDependent","IsEnum","FromEnum","FromIntersect","FromLiteral","FromTemplateLiteral","FromUnion","FromType","FromTypes","FromType","FromObject","ExtendsResult.IsExtendsTrueLike","FromTuple","Guard.IsEqual","FromType","FromArray","FromObject","FromTuple","NormalizeType","Memory.Update","FromType","Memory.Update","Number","String","FromArray","Number","FromObject","Guard.Keys","FromRecord","FromTuple","FromType","FromArray","FromObject","FromRecord","FromTuple","Memory.Update","FromType","FromTemplateLiteral","FromType","FromUnion","FromEnum","FromLiteral","Guard.IsNumber","IsEnum","Memory.Assign","Object","Memory.Update","Memory.Assign","Guard.Keys","Memory.Update","Memory.Update","FromKeys","Guard.Keys","FromType","Object","Memory.Update","FromType","Memory.Update","FromCyclic","FromType","Memory.Assign","FromDependent","FromType","FromIntersect","FromType","FromUnion","FromType","FromObject","Guard.Keys","Object","FromType","FromCyclic","FromDependent","FromIntersect","FromUnion","FromObject","Object","Memory.Update","FromType","Guard.Keys","Memory.Assign","FromType","Object","Memory.Update","FromType","FromArray","Array","FromCyclic","FromType","Memory.Assign","FromDependent","FromType","FromIntersect","FromType","FromObject","Guard.Keys","Object","FromTuple","FromUnion","FromType","FromType","FromArray","FromCyclic","FromDependent","FromIntersect","FromObject","FromTuple","FromUnion","Memory.Update","FromType","FromCyclic","FromType","Memory.Assign","FromType","FromIntersect","FromType","FromUnion","FromType","FromObject","Guard.Keys","Object","FromType","FromCyclic","FromIntersect","FromUnion","FromObject","Object","Memory.Update","FromType","Memory.Update","Memory.Update","IsRef","Guard.ShiftLeft","IsRef","Guard.Keys","Guard.IsEqual","Object","Memory.Update","Guard.IsEqual","Insert","Guard.ShiftLeft","closed","Type.String","Type.Optional","Type.Object","Type.Record","Type.Unknown","Type.Enum","Type.Boolean","Type.Array","Type.Literal","Type.Union","Type.Object","Type.String","Type.Optional","Type.Array","closed","Type.Integer","Type.String","Type.Optional","Type.Object","Type.Enum","Type.Boolean","Type.Number","Type.Array","closed","Type.Optional","Type.String","Type.Object","Type.Integer","Type.Enum","Type.Array","Type.Number","Type.Boolean","pluralize","Guard.HasPropertyKey","Guard.IsArray","Guard.Every","Guard.IsObject","Guard.IsFunction","Guard.IsObject","Guard.IsArray","Guard.IsBoolean","Guard.HasPropertyKey","Guard.HasPropertyKey","Guard.HasPropertyKey","Guard.IsArray","Guard.HasPropertyKey","Guard.IsString","Guard.HasPropertyKey","Guard.IsArray","Guard.HasPropertyKey","Guard.HasPropertyKey","Guard.HasPropertyKey","Guard.HasPropertyKey","Guard.IsObject","Guard.IsArray","Guard.IsString","Guard.HasPropertyKey","Guard.IsObject","Guard.IsArray","Guard.IsString","Guard.HasPropertyKey","Guard.IsObject","Guard.HasPropertyKey","Guard.IsString","Guard.HasPropertyKey","Guard.IsString","Guard.HasPropertyKey","Guard.HasPropertyKey","Guard.IsArray","Guard.HasPropertyKey","Guard.IsNumber","Guard.IsBigInt","Guard.HasPropertyKey","Guard.IsNumber","Guard.IsBigInt","Guard.HasPropertyKey","Guard.IsString","Guard.HasPropertyKey","Guard.IsString","Guard.HasPropertyKey","Guard.HasPropertyKey","Guard.IsArray","Guard.HasPropertyKey","Guard.IsNumber","Guard.IsBigInt","Guard.HasPropertyKey","Guard.IsNumber","Guard.HasPropertyKey","Guard.IsNumber","Guard.HasPropertyKey","Guard.IsNumber","Guard.HasPropertyKey","Guard.IsNumber","Guard.HasPropertyKey","Guard.IsNumber","Guard.IsBigInt","Guard.HasPropertyKey","Guard.IsNumber","Guard.HasPropertyKey","Guard.IsNumber","Guard.HasPropertyKey","Guard.IsNumber","Guard.HasPropertyKey","Guard.IsNumber","Guard.HasPropertyKey","Guard.IsNumber","Guard.IsBigInt","Guard.HasPropertyKey","Guard.HasPropertyKey","Guard.IsArray","Guard.HasPropertyKey","Guard.IsString","Guard.HasPropertyKey","Guard.IsObject","Guard.HasPropertyKey","Guard.IsArray","Guard.HasPropertyKey","Guard.IsObject","Guard.HasPropertyKey","Guard.IsObject","Guard.HasPropertyKey","Guard.IsBoolean","Guard.IsEqual","Guard.HasPropertyKey","Guard.IsString","Guard.HasPropertyKey","Guard.IsString","Guard.HasPropertyKey","Guard.IsArray","Guard.IsString","Guard.HasPropertyKey","Guard.HasPropertyKey","Guard.IsString","Guard.IsArray","Guard.HasPropertyKey","Guard.IsBoolean","Guard.HasPropertyKey","Guard.HasPropertyKey","Settings.Get","G.Every","G.EveryAll","Guard.IsEqual","Schema.IsSchemaObject","Schema.IsId","Schema.IsSchemaBoolean","Schema.IsDynamicAnchor","Schema.IsRecursiveAnchorTrue","Guard.IsUndefined","IsValid","Schema.IsItems","G.IsArray","G.Every","G.IsLessThan","Schema.IsPatternProperties","G.Keys","Schema.IsProperties","G.IsEqual","G.Every","G.EveryAll","Pathing.EncodeFragment","G.IsEqual","G.IsGreaterThan","G.IsValueLike","G.IsEqual","G.IsDeepEqual","IsValid","Schema.IsMinContains","G.IsEqual","G.SomeAll","G.IsEqual","G.Keys","G.Every","G.Entries","G.HasPropertyKey","G.IsArray","G.EveryAll","Pathing.EncodeFragment","G.IsEqual","G.Keys","G.Every","G.Entries","G.HasPropertyKey","G.EveryAll","G.IsEqual","G.Keys","G.Every","G.Entries","G.HasPropertyKey","G.EveryAll","Pathing.EncodeFragment","Guard.IsObject","Guard.IsUnsafePropertyKey","Schema.IsSchemaObject","Schema.IsId","Stack.NextUri","Stack.DefaultUri","Guard.IsObject","Schema.IsDynamicAnchor","Guard.IsEqual","Guard.Keys","Guard.IsArray","Guard.IsUndefined","Pointer.Get","Schema.IsAnchor","Guard.HasPropertyKey","Stack.NextStack","Schema.IsRecursiveAnchorTrue","Resolve.DynamicRef","Schema.IsSchema","G.Some","G.IsValueLike","G.IsEqual","G.IsDeepEqual","G.IsLessThan","G.IsGreaterThan","Decode","Encode","FormatPuny.IsAcePrefixed","FormatPuny.Decode","FormatPuny.Encode","FormatBidi.HasRightToLeftCharacters","FormatBidi.SatisfiesBidiRule","FormatPuny.IsAcePrefixed","FormatPuny.Decode","LabelUnicode.IsUnicodeLabel","IsValidLabelLength","IsLabel","LabelPuny.IsPunyLabel","LabelAscii.IsAsciiLabel","IsHostname","LabelPuny.IsPunyLabel","LabelUnicode.IsUnicodeLabel","IsIdnHostname","FormatBidi.HasBidiChars","FormatBidi.SatisfiesBidiRule","Idna.IsHostname","Idna.IsIdnHostname","InvalidIriChars","Format.Test","Schema.IsThen","Schema.IsElse","G.Every","G.IsLessEqualThan","G.EveryAll","Schema.IsPrefixItems","Schema.IsItemsSized","IsValid","Schema.IsContains","G.Counted","G.IsLessEqualThan","Schema.IsMinContains","G.IsLessEqualThan","G.IsLessEqualThan","G.IsMaxLength","G.IsLessEqualThan","G.Keys","IsValid","Schema.IsContains","G.Counted","G.IsGreaterEqualThan","G.IsGreaterEqualThan","G.IsGreaterEqualThan","G.IsMinLength","G.IsGreaterEqualThan","G.Keys","G.IsMultipleOf","G.IsEqual","G.IsString","G.Every","G.Entries","G.EveryAll","Pathing.EncodeFragment","G.IsEqual","G.Every","G.IsLessEqualThan","G.EveryAll","Settings.Get","G.IsUndefined","Schema.IsRequired","G.Every","G.Entries","G.HasPropertyKey","G.EveryAll","Pathing.EncodeFragment","G.Every","G.Keys","G.EveryAll","Pathing.EncodeFragment","Resolve.RecursiveRef","Schema.IsSchema","Resolve.Ref","Schema.IsSchema","G.Every","G.HasPropertyKey","G.EveryAll","G.IsEqual","G.IsObjectNotArray","G.IsArray","G.IsBoolean","G.IsInteger","G.IsNumber","G.IsNull","G.IsString","G.IsBigInt","G.IsConstructor","G.IsFunction","G.IsSymbol","G.IsUndefined","G.Some","G.Every","G.EveryAll","G.Every","G.Entries","G.EveryAll","G.IsEqual","Hashing.Hash","Stack.NextStack","Schema.IsSchemaBoolean","Schema.IsType","G.IsObject","G.IsArray","Schema.IsRequired","Schema.IsAdditionalProperties","Schema.IsDependencies","Schema.IsDependentRequired","Schema.IsDependentSchemas","Schema.IsPatternProperties","Schema.IsProperties","Schema.IsPropertyNames","Schema.IsMinProperties","Schema.IsMaxProperties","Schema.IsAdditionalItems","Schema.IsContains","Schema.IsItems","Schema.IsMinContains","Schema.IsMaxContains","Schema.IsMinItems","Schema.IsMaxItems","Schema.IsPrefixItems","Schema.IsUniqueItems","G.IsString","Schema.IsMinLength","Schema.IsMaxLength","Schema.IsFormat","Schema.IsPattern","G.IsNumber","G.IsBigInt","Schema.IsExclusiveMinimum","Schema.IsExclusiveMaximum","Schema.IsMinimum","Schema.IsMaximum","Schema.IsMultipleOf","Schema.IsRef","Schema.IsRecursiveRef","Schema.IsDynamicRef","Schema.IsConst","Schema.IsEnum","Schema.IsIf","Schema.IsNot","Schema.IsAllOf","Schema.IsAnyOf","Schema.IsOneOf","Schema.IsUnevaluatedItems","Schema.IsUnevaluatedProperties","Schema.IsRefine","Errors","Arguments.Match","Engine.Stack","Engine.ErrorContext","Engine.ErrorSchema","GetLocalizationFunction","Get","Check","Arguments.Match","Engine.Stack","Engine.CheckContext","Engine.CheckSchema","Arguments.Match","SchemaCheck","Arguments.Match","SchemaErrors","FromArray","Guard.IsArray","FromType","FromCyclic","FromType","Ref","Guard.HasPropertyKey","FromIntersect","FromType","Guard.HasPropertyKey","FromObject","Guard.IsObject","Guard.IsArray","Guard.Keys","Guard.HasPropertyKey","FromType","Guard.IsBoolean","Guard.IsEqual","IsSchema","FromRecord","Guard.IsObject","Guard.Keys","FromType","Guard.IsBoolean","Guard.IsEqual","IsSchema","FromRef","Guard.HasPropertyKey","FromType","FromTuple","Guard.IsArray","FromType","Guard.IsGreaterThan","SystemClone","FromUnion","FromType","FromType","T.IsArray","FromArray","T.IsCyclic","FromCyclic","T.IsIntersect","FromIntersect","T.IsObject","FromObject","T.IsRecord","FromRecord","T.IsRef","FromRef","T.IsTuple","FromTuple","T.IsUnion","FromUnion","Guard","FromProperties","FromType","Arguments.Match","Settings.Get","FromType","Guard.IsObject","Guard.HasPropertyKey","Guard.IsArray","FromBoolean","Guard.IsEqual","FromString","Guard.IsBigInt","Guard.IsBoolean","Guard.IsNumber","Guard.IsNull","Guard.IsString","Guard.IsUndefined","FromBigInt","Guard.IsEqual","FromNumber","FromString","Guard.IsBigInt","Guard.IsBoolean","Guard.IsNumber","Guard.IsNull","Guard.IsString","Guard.IsUndefined","FromBigInt","Guard.IsEqual","FromBoolean","FromNumber","FromString","Guard.IsBigInt","Guard.IsBoolean","Guard.IsNumber","Guard.IsNull","Guard.IsString","Guard.IsUndefined","FromBigInt","FromBoolean","FromString","Guard.IsNumber","Guard.IsEqual","Guard.IsBigInt","Guard.IsBoolean","Guard.IsNull","Guard.IsString","Guard.IsUndefined","Guard.IsBigInt","Guard.IsBoolean","Guard.IsNumber","Guard.IsNull","Guard.IsString","Guard.IsUndefined","FromBigInt","Guard.IsEqual","FromBoolean","FromNumber","FromString","Guard.IsBigInt","Guard.IsBoolean","Guard.IsNumber","Guard.IsNull","Guard.IsString","Guard.IsUndefined","FromArray","Try.TryArray","FromType","Try.TryBigInt","Try.IsOk","Try.TryBoolean","Try.IsOk","FromCyclic","FromType","Ref","FromType","Try.TryNumber","Try.IsOk","FromIntersect","FromType","Try.TryBigInt","Try.IsOk","Guard.IsEqual","Try.TryBoolean","Try.TryNumber","Try.TryString","Try.TryNull","Try.IsOk","Try.TryNumber","Try.IsOk","Guard.Keys","FromType","Guard.IsUndefined","Guard.EntriesRegExp","Guard.Keys","FromType","Guard.HasPropertyKey","Guard.IsObject","FromObject","Guard.IsObjectNotArray","Guard.EntriesRegExp","Guard.Keys","FromType","Guard.HasPropertyKey","Guard.IsObject","FromRecord","Guard.IsObjectNotArray","FromRef","Guard.HasPropertyKey","FromType","Try.TryString","Try.IsOk","FromType","FromTuple","Guard.IsArray","FromType","Try.TryUndefined","Try.IsOk","FromUnion","FromType","Guard.IsUndefined","Try.TryUndefined","Try.IsOk","FromType","Type.IsArray","FromArray","Type.IsBigInt","Type.IsBoolean","Type.IsCyclic","FromCyclic","Type.IsEnum","Type.IsInteger","Type.IsIntersect","FromIntersect","Type.IsLiteral","Type.IsNull","Type.IsNumber","Type.IsObject","FromObject","Type.IsRecord","FromRecord","Type.IsRef","FromRef","Type.IsString","Type.IsTemplateLiteral","Type.IsTuple","FromTuple","Type.IsUndefined","Type.IsUnion","FromUnion","Type.IsVoid","Arguments.Match","FromType","FromArray","Guard.IsArray","FromType","FromCyclic","FromType","Ref","Guard.IsUndefined","Guard.IsFunction","FromIntersect","FromType","FromObject","Guard.IsObject","Guard.Keys","FromType","Guard.IsUndefined","Guard.HasPropertyKey","Guard.IsBoolean","FromRecord","Guard.IsObject","Guard.Keys","FromType","FromRef","Guard.HasPropertyKey","FromType","FromTuple","Guard.IsArray","FromType","FromUnion","FromType","FromType","T.IsArray","FromArray","T.IsCyclic","FromCyclic","T.IsIntersect","FromIntersect","T.IsObject","FromObject","T.IsRecord","FromRecord","T.IsRef","FromRef","T.IsTuple","FromTuple","T.IsUnion","FromUnion","Arguments.Match","FromType","Arguments.Match","Decode","Encode","Guard.IsEqual","Decode","Guard.IsArray","Encode","Guard.IsEqual","Ref","Guard.IsDeepEqual","Decode","Guard.IsEqual","Guard.IsObject","Encode","Decode","Guard.IsObjectNotArray","Guard.Keys","Guard.HasPropertyKey","Encode","Guard.IsEqual","Decode","Guard.IsObjectNotArray","Guard.Keys","Encode","Guard.IsEqual","Guard.HasPropertyKey","Guard.IsEqual","Decode","Guard.IsArray","Encode","Guard.IsEqual","Guard.IsEqual","Type.IsArray","Type.IsCyclic","Type.IsIntersect","Type.IsObject","Type.IsRecord","Type.IsRef","Type.IsTuple","Type.IsUnion","Assert","Settings.Get","Assert","Settings.Get","T.Object","T.Literal","T.String","T.Unknown","T.Union","Value.Errors","Type.Object","Type.Enum","Type.String","Type.Integer","Type.Optional","Type.Union","Type.Null","Type.Literal","Type.Array","Type.Record","Type.Object","Type.Optional","Type.String","Type.Record","Type.Union","Type.Null","__toESM","__require","__commonJSMin","SEO_COMPONENT_ID","SEO_FIELD_IDS","SEO_EDITOR_ID","SEO_TITLE_TEMPLATE_PATTERN","SEO_TWITTER_HANDLE_PATTERN","STABLE_ID_PATTERN","isStableId","value","createStableId","DATA_TYPES","SCALAR_DATA_TYPES","UNIQUE_CAPABLE_DATA_TYPES","STORAGE_FAMILY","Metrics","CodePointCount$1","result","index","prev","next","IsMaxLength$2","maxLength","IsMinLength$2","minLength","IsArray$1","IsBigInt$1","IsEqual","IsBoolean$2","IsConstructor$1","IsUndefined$1","IsFunction$1","IsInteger$1","IsNull$1","IsNumber$2","IsObjectNotArray","IsObject$1","IsString$2","IsSymbol$1","left","right","IsGreaterThan","IsLessThan","IsLessEqualThan","IsGreaterEqualThan","IsMultipleOf$1","dividend","divisor","mod","IsClassInstance","proto","IsValueLike","IsMaxLength$1","IsMinLength$1","Every","offset","callback","item","EveryAll","Some","SomeAll","Counted","ShiftLeft","array","false_","true_","IsUnsafePropertyKey","key","HasPropertyKey","Entries","Keys","Symbols","Values","DeepEqualObject","keys","IsDeepEqual","DeepEqualArray","IsBoolean$1","IsNumber$1","IsString$1","IsTypeArray","IsRegExp","IsDate$1","IsSet","IsMap","settings","Get$2","Freeze","Assign","FromClassInstance","IsSchemaObject$1","FromSchemaObject","descriptor","FromValue$1","FromPlainObject","FromObject$12","FromArray$8","element","FromTypedArray","FromRegExp$1","FromMap","FromSet","Clone$1","MergeHidden","Merge","Create","withOptions","enumerable","options","hidden","Discard","propertyKeys","Update$1","current","IsKind","kind","IsSchema$1","Deferred","IsDeferred","AddReadonlyOperation","type","AddReadonlyAction","AddReadonlyInstantiate","InstantiateType","context","state","AddOptionalOperation","AddOptionalAction","AddOptionalInstantiate","_Array_","IsArray","ArrayOptions","Constructor","IsConstructor","ConstructorOptions","_Function_","IsFunction","FunctionOptions","Ref$1","ref","IsRef$1","Generic","IsGeneric","Any","IsAny","NeverPattern","Never","IsNever","AddOptional","Optional","IsOptional","RequiredArray","properties","PropertyKeys","PropertyValues","_Object_","requiredKeys","IsObject","ObjectOptions","Unknown","IsUnknown","Cyclic","$defs","IsCyclic","IsUnsafe","Match$3","match","args","IsInfer","Dependent","if_","then_","else_","IsDependent","DependentOptions","IsTypeScriptEnumLike","TypeScriptEnumToEnumValues","Enum","IsEnum$1","Intersect","types","IsIntersect","IntersectOptions","Unreachable","InstanceKeys","IsIEEE754","ByteMarker","\"Array\"","\"BigInt\"","\"Boolean\"","\"Date\"","\"Constructor\"","\"Function\"","\"Null\"","\"Number\"","\"Object\"","\"RegExp\"","\"String\"","\"Symbol\"","\"TypeArray\"","\"Undefined\"","Accumulator","Prime","Size","Bytes","i","F64","F64In","F64Out","FNV1A64_OP","byte","FromArray$7","FromValue","FromBigInt$5","FromBoolean$5","FromConstructor","FromDate","FromFunction","FromNull$1","FromNumber$4","FromObject$11","FromRegExp","FromString$6","encoder","FromSymbol","FromTypeArray","buffer","FromUndefined$1","HashCode","Hash","en_US","error","locale","Get$1","IsImmutable","AddReadonly","IsReadonly","BigIntPattern","BigInt$1","IsBigInt","Boolean$1","IsBoolean","IntegerPattern","Integer","IsInteger","InvalidLiteralValue","LiteralTypeName","Literal","IsLiteralValue","IsLiteralNumber","IsLiteral","IsLiteralString","Null","IsNull","NumberPattern","Number$1","IsNumber","Symbol","IsSymbol","String$1","IsString","Union","IsUnion","UnionOptions","ParsePatternIntoTypes","parsed","Pattern","pattern","FromLiteral$5","FromTypesReduce","FromType$22","FromTypes$5","IsTemplateLiteralFinite","TemplateLiteralCreate","FromLiteralPush","variants","FromLiteral$4","FromUnion$11","FromType$21","DecodeFromSpan","VariantsToLiterals","variant","DecodeTypesAsUnion","DecodeTypes","TemplateLiteralDecodeUnsafe","TemplateLiteralDecode","decoded","IsTemplateLiteral","CreateRecord","FromAnyKey","StringKey","FromBooleanKey","Tuple","items","minItems","additionalItems","IsTuple","TupleOptions","RemoveReadonlyOperation","RemoveReadonlyAction","RemoveReadonlyInstantiate","RemoveReadonly","RemoveOptionalOperation","RemoveOptionalAction","RemoveOptionalInstantiate","RemoveOptional","TupleElementsToProperties","TupleToObject","CanComposite","IsReadonlyProperty","IsOptionalProperty","CompositeProperty","isReadonly","isOptional","property","EvaluateIntersect","CompositePropertyKey","CompositeProperties","GetProperties","Composite","NarrowCompareRule","Compare","NarrowCompositeRule","canCompositeLeft","canCompositeRight","Narrow","ShouldEvaluate","DistributeOperation","evaluatedLeft","EvaluateType","evaluatedRight","DistributeType","DistributeUnion","distribution","Distribute$1","ExcludeType","IsExtendsTrueLike","Extends","ExcludeUnion","tail","head","ExcludeOperation","evaluated","EvaluateUnion","EvaluateDependent","EvaluateEnum","values","Broaden","EvaluateTemplateLiteral","EvaluateUnionFast","FromEnumKey","FromKey","FromIntegerKey","IntegerKey","FromIntersectKey","FromLiteralKey","FromNumberKey","NumberKey","FromStringKey","FromTemplateKey","FlattenType","Flatten","StringOrNumberCheck","TryBuildRecord","CreateProperties","CreateObject","FromUnionKey","flattened","record","RecordAction","CanInstantiate","RecordDeferred","RecordInstantiate","Record","RecordFromPattern","RecordPatternToType","RecordPattern","RecordKey","RecordValue","IsRecord","Rest","IsRest","IsThis","Undefined","IsUndefined","IsVoid","PatternBigIntMapping","PatternStringMapping","PatternNumberMapping","PatternIntegerMapping","PatternNeverMapping","PatternTextMapping","input","PatternBaseMapping","PatternGroupMapping","PatternUnionMapping","PatternTermMapping","PatternBodyMapping","PatternMapping","IsMatch","Match$2","ok","fail","TakeVariant","Take","Range","end","start","Alpha","Digit","LineComment","OpenComment","CloseComment","DiscardMultilineComment","DiscardLineComment","TrimStartUntilNewline","TrimWhitespace","trimmed","Trim","TakeConst","const_","Const","TakeOne","IsInputMatchSentinal","Until","One","Until_1","UntilRest","If","PatternBigInt","_0","PatternString","PatternNumber","PatternInteger","PatternNever","PatternText","PatternBase","PatternGroup","PatternBody","_1","_2","PatternUnion","PatternTerm","JoinString","UnwrapTemplateLiteralPattern","EncodeLiteral","EncodeTypes","EncodeBigInt","EncodeInteger","EncodeNumber","EncodeBoolean","EncodeType","EncodeString","EncodeTemplateLiteral","templatePattern","EncodeTemplateLiteralDeferred","TemplateLiteralAction","EncodeEnum","EncodeUnion","IsTemplateLiteralDeferred","EncodePattern","TemplateLiteralEncode","TemplateLiteralDeferred","TemplateLiteralInstantiate","InstantiateTypes","ExtendsUnion$1","IsExtendsUnion","ExtendsTrue","IsExtendsTrue","ExtendsFalse","IsExtendsFalse","Match$1","ExtendsRightInfer","ExtendsLeft","inferred","checkInferred","name","ExtendsRightAny","ExtendsRightDependent","ExtendsRightEnum","ExtendsRightIntersect","ExtendsRightTemplateLiteral","ExtendsRightUnion","ExtendsRight","ExtendsAny","ExtendsImmutable","isImmutableLeft","isImmutableRight","ExtendsArray","arrayLeft","ExtendsBigInt","ExtendsBoolean","ParameterCompare","checkLeft","checkRight","isLeftOptional","isRightOptional","ExtendsParameters","leftRest","rightRest","ParameterRight","ParametersLeft","ExtendsReturnType","ExtendsConstructor","parameters","\"parameters\"","returnType","\"instanceType\"","ExtendsDependent","ExtendsEnum","ExtendsFunction","\"returnType\"","ExtendsInteger","ExtendsIntersect","ExtendsLiteralValue","ExtendsLiteralBigInt","ExtendsLiteralBoolean","ExtendsLiteralNumber","ExtendsLiteralString","ExtendsLiteral","ExtendsNever","ExtendsNull","ExtendsNumber","ExtendsPropertyOptional","ExtendsProperty","ExtractInferredProperties","ExtendsPropertiesComparer","rightKey","checked","extracted","ExtendsProperties","compared","ExtendsObjectToObject","RecordMergeInferred","ExtendsRecordComparer","ExtendsObjectToRecord","ExtendsObject","FromObject$10","FromRecord$5","leftValue","rightValue","ExtendsRecord","leftPattern","ExtendsString","ExtendsSymbol","ExtendsTemplateLiteral","Inferrable","IsInferable","TryRestInferable","TryInferable","TryInferResults","rest","InferTupleResult","results","InferUnionResult","Reverse","ApplyReverse","reversed","Reversed","first","ElementsCompare","Elements","ElementsLeft","inferable","\"name\"","\"type\"","ElementsRight","ExtendsTupleToTuple","instantiatedRight","InstantiateElements","State","ExtendsTupleToArrayReduce","ExtendsTupleToArray","inferrable","ExtendsTuple","instantiatedLeft","ExtendsUndefined","ExtendsUnionSome","unionTypes","ExtendsUnionLeft","ExtendsUnion","ExtendsUnknown","ExtendsVoid","InterfaceOperation","heritage","InterfaceAction","InterfaceDeferred","InterfaceInstantiate","InstantiateProperties","IsInterfaceDeferred","FromRef$7","stack","FromType$20","FromProperties$4","FromTypes$4","CyclicCheck","ResolveCandidateKeys","CyclicCandidates","FromRef$6","FromType$19","FromProperties$3","FromTypes$3","CyclicDependencies","FromRef$5","FromProperties$2","FromType$18","FromTypes$2","CyclicAnyFromParameters","defs","CyclicExtends","CyclicInterface","instantiatedHeritage","instantiatedProperties","CyclicDefinitions","dependencies","instantiatedType","InstantiateCyclic","Resolve","CyclicTarget","Canonical","extendsCheck","BroadenFilter","compare","all","BroadenType","BroadenTypes","EvaluateAction","EvaluateInstantiate","CollectDistributionNames","expression","\"$ref\"","BuildDistributionArray","names","ZipDistributionArray","arguments_","distributionArray","argumentRight","booleanRight","booleanLeft","argumentLeft","CanonicalArgument","Expand","canonicalArgument","Append","Cross","Distribute","zipped","DistributeArguments","zippedArguments","FromNotResolvable","FromNotGeneric","FromGeneric","FromRef$4","FromType$17","target","ResolveTarget","AssertArgumentExtends","IsCall","extends_","cause","BindArgument","instantiatedArgument","BindArguments","instantiatedExtends","parameterLeft","instantiatedEquals","BindParameters","parameterRight","ResolveArgumentsContext","instantiationDepth","instantiationCount","InstantiationAssert","InstantiationIncrement","InstantiationDecrement","Peek","IsTailCall","CallDispatch","argumentsContext","\"callstack\"","\"visited\"","CallDistributed","distributedArguments","CallImmediate","returnTypes","CallInstantiate","instantiatedArguments","resolved","CallConstruct","RemoveImmutableOperation","RemoveImmutableAction","RemoveImmutableInstantiate","ApplyMapping","mapping","FromLiteral$3","FromTemplateLiteral$3","FromType$16","FromUnion$10","CapitalizeDeferred","LowercaseDeferred","UncapitalizeDeferred","UppercaseDeferred","CapitalizeMapping","LowercaseMapping","UncapitalizeMapping","UppercaseMapping","CapitalizeAction","LowercaseAction","UncapitalizeAction","UppercaseAction","CapitalizeInstantiate","LowercaseInstantiate","UncapitalizeInstantiate","UppercaseInstantiate","ConditionalDeferred","ConditionalOperation","extendsResult","ConditionalAction","ConditionalInstantiate","ConstructorParametersDeferred","ConstructorParametersOperation","ConstructorParametersAction","ConstructorParametersInstantiate","ExcludeDeferred","ExcludeAction","ExcludeInstantiate","ExtractDeferred","ExtractType","ExtractUnion","ExtractOperation","ExtractAction","ExtractInstantiate","IndexDeferred","indexer","FromCyclic$8","FromType$15","FromDependent$4","CollapseIntersectProperties","leftKeys","rightKeys","sharedKeys","leftProperties","rightProperties","sharedProperties","FromIntersect$8","FromObject$9","FromTuple$7","CollapseUnionProperties","ReduceVariants","FromUnion$9","CollapseToObject","integerKeyPattern","ConvertToIntegerKey","normal","NormalizeLiteral","NormalizeIndexerTypes","NormalizeIndexer","FromArray$6","FromCyclic$7","FromType$14","FromDependent$3","FromEnum$2","FromIntersect$7","FromLiteral$2","FromTemplateLiteral$2","FromUnion$8","ToIndexableKeys","FromTypes$1","FromType$13","ExpandThis","IndexProperty","IndexProperties","FromIndexer","NumericKeyPattern","NumericKeys","FromIndexerNumber","FromObject$8","ConvertLiteral","ArrayIndexerTypes","FormatArrayIndexer","IndexElementsWithIndexer","FromTupleWithIndexer","FromTupleWithoutIndexer","FromTuple$6","FromType$12","NormalizeType$1","IndexAction","IndexInstantiate","InstanceTypeDeferred","InstanceTypeOperation","InstanceTypeAction","InstanceTypeInstantiate","KeyOfDeferred","FromAny","FromArray$5","FromPropertyKeys","FromObject$7","FromRecord$4","FromTuple$5","FromType$11","NormalizeType","KeyOfAction","KeyOfInstantiate","MappedDeferred","identifier","as","FromTemplateLiteral$1","FromType$10","FromUnion$7","FromEnum$1","FromLiteral$1","MappedVariants","CanonicalAs","instantiatedAs","MappedVariant","variantContext","canonicalAs","instantiatedProperty","MappedProperties","MappedObjects","MappedOperation","MappedAction","MappedInstantiate","InstantiateCyclics","declarationContext","declarations","cyclicKeys","InstantiateNonCyclics","InstantiateModule","cyclicCandidates","instantiatedCyclics","instantiatedNonCyclics","ModuleInstantiate","NonNullableDeferred","NonNullableOperation","NonNullableAction","NonNullableInstantiate","OmitDeferred","ToIndexable","collapsed","FromKeys$1","FromType$9","OmitAction","OmitInstantiate","ParametersDeferred","ParametersOperation","ParametersAction","ParametersInstantiate","PartialDeferred","FromCyclic$6","partial","FromType$8","FromDependent$2","FromIntersect$6","FromUnion$6","FromObject$6","PartialAction","PartialInstantiate","PickDeferred","FromKeys","FromType$7","PickAction","PickInstantiate","ReadonlyObjectDeferred","FromArray$4","AddImmutable","FromCyclic$5","FromType$6","FromDependent$1","FromIntersect$5","FromObject$5","FromTuple$4","FromUnion$5","ReadonlyObjectAction","ReadonlyObjectInstantiate","RefInstantiate","FromCyclic$4","FromType$5","FromDependent","FromIntersect$4","FromUnion$4","FromObject$4","RequiredDeferred","RequiredAction","RequiredInstantiate","ReturnTypeDeferred","ReturnTypeOperation","ReturnTypeAction","ReturnTypeInstantiate","WithDeferred","WithAction","WithInstantiate","SpreadElement","RestSpread","WithModifiers","withOptional","withReadonly","AddImmutableAction","InstantiateDeferred","action","AddImmutableInstantiate","InstantiateImmediate","AddImmutableOperation","closed$3","MODEL_KINDS","DEFINITION_KINDS","SORT_DIRECTIONS","ENTRY_LAYOUTS","FIELD_WIDTHS","MAX_DESCRIPTION_LENGTH","Label","Description","EditorChoiceInputSchema","FieldInputSchema","FieldGroupSchema","ModelDisplayInputSchema","ComponentDisplayInputSchema","definitionBase","ModelDefinitionInputSchema","ComponentDefinitionInputSchema","isComponentDefinition","definition","isModelDefinition","LOCALE_CODE_PATTERN","DATE_PATTERN","DATETIME_PATTERN","TIME_PATTERN","DECIMAL_PATTERN","BIGINTEGER_PATTERN","SLUG_PATTERN","UID_PATTERN","RICHTEXT_FORMAT","closed$2","NonNegativeInt","regex","lengthRules","countRules","MEDIA_KINDS","RELATION_CARDINALITIES","CODE_LANGUAGES","EnumValueSchema","SETTINGS_SCHEMAS","isSeoField","field","closed$1","Placeholder","isMultipleEnum","entries","EDITOR_CATALOGUE","entry","DEFAULT_EDITORS","CUSTOM_EDITOR_ID_PATTERN","isCustomEditorId","id","listCompatibleEditors","TITLE_FIELD_TYPES","TEXT_TITLE_FIELD_TYPES","effectiveTitleField","live","configured","INLINE_TITLE_TYPES","isCanvasEligible","isDocumentPlaceable","title","isCoverEligible","byIds","ids","unique","fields","f","groupProperties","groups","model","group","grouped","coverOf","canvas","effectiveLayout","titleInline","configuredCanvas","canvasCandidates","cover","placed","propertyGroups","stripFieldsOf","layout","hasValue","limit","entryLayoutOf","ungroupedSectionId","candidate","groupIds","effectiveFormLayout","groupOf","fieldId","sections","groupSections","run","section","richTextBodyOf","import_pluralize","exports","module","pluralize","pluralRules","singularRules","uncountables","irregularPlurals","irregularSingles","sanitizeRule","rule","restoreCase","word","token","interpolate","str","replace","sanitizeWord","len","rules","replaceWord","keepMap","replaceMap","checkWord","pluralized","count","inclusive","replacement","plural","single","API_KEY_PATTERN","isApiKeySyntaxValid","checkApiKeySyntax","noun","foldApiKey","PLURAL_FALLBACK_SUFFIX","suggestPlural","apiKey","SETTINGS_DEFAULTS","OPTIONAL_TEXT_KEYS","OPTIONAL_LIST_KEYS","withoutEmpty","isEmptyText","isEmptyList","normalizeField","normalizeModelDisplay","display","normalizeComponentDisplay","normalizeDefinition","renormalizeDefinition","checkDefaultValue","isString","matches","allowed","issue","toTypeName","MODEL_TYPE_SUFFIXES","COMPONENT_TYPE_SUFFIXES","MUTATION_PREFIXES","routeKeyOf","collectionQueryName","RESERVED_TYPE_NAMES","RESERVED_DEFINITION_API_KEYS","RESERVED_FIELD_API_KEYS","RESERVED_QUERY_NAMES","generatedNames","typeName","definitionId","suffix","fieldType","prefix","IsRefine","IsSchemaObject","IsSchemaBoolean","IsSchema","IsAdditionalItems","schema","IsAdditionalProperties","IsAllOf","IsAnchor","IsAnyOf","IsConst","IsContains","IsDependencies","IsDependentRequired","IsDependentSchemas","IsDynamicAnchor","IsDynamicRef","IsElse","IsEnum","IsExclusiveMaximum","IsExclusiveMinimum","IsFormat","IsId","IsIf","IsItems","IsItemsSized","IsMaximum","IsMaxContains","IsMaxItems","IsMaxLength","IsMaxProperties","IsMinimum","IsMinContains","IsMinItems","IsMinLength","IsMinProperties","IsMultipleOf","IsNot","IsOneOf","IsPattern","IsPatternProperties","IsPrefixItems","IsProperties","IsPropertyNames","IsRecursiveAnchor","IsRecursiveAnchorTrue","IsRecursiveRef","IsRef","IsRequired","IsThen","IsType","IsUniqueItems","IsUnevaluatedItems","IsUnevaluatedProperties","CheckContext","indices","ErrorContext","CheckRefine","refinement","ErrorRefine","schemaPath","instancePath","DefaultUri","NextUri","base","Stack","RegisterResourceAnchors","anchors","isRoot","ResourceEntry","NextEnteredResource","IsRelativeId","NextIds","NextRecursiveAnchor","NextDynamicAnchors","registered","NextPendingResource","NextLexicalBase","NextResourceBase","NextUseResourceBaseForReference","NextReferenceBase","isRetrieved","useResourceBaseForReference","NextLexicalSchema","HasStackKeywords","NextStack","IsValid$4","CheckAdditionalItems","CheckSchemaPushStack","ErrorAdditionalItems","nextSchemaPath","nextInstancePath","ErrorSchemaPushStack","EncodeFragment","fragment","UnicodeRegExp","GetPropertyKeyAsPattern","GetPropertiesPattern","patterns","CheckAdditionalProperties","regexp","ErrorAdditionalProperties","additionalProperties","isAdditionalProperty","CheckAllOf","nextContext","CheckSchema","ErrorAllOf","failedContexts","isSchema","ErrorSchema","isAllOf","failed","CheckAnyOf","ErrorAnyOf","isAnyOf","CheckSchemaBoolean","ErrorSchemaBoolean","CheckConst","ErrorConst","IsValid$3","CheckContains","ErrorContains","CheckDependencies","isLength","isEvery","ErrorDependencies","dependency","CheckDependentRequired","ErrorDependentRequired","isEveryEntry","CheckDependentSchemas","ErrorDependentSchemas","Indices","pointer","Get","RelativeBase","AbsoluteBase","CanonicalHref","url","Base","SearchBase","RefRoot","IsPointerFragment","SearchDynamicAnchor","nextBase","MatchWithHash","MatchWithId","absoluteRef","MatchWithAnchor","absoluteAnchor","MatchWithDynamicAnchor","MatchSchemaObject","MatchFromArray","Match","MatchFromObject","relativeBase","Resource","RefInternal","FindDeferredResourceLegacy","targetBase","FindDeferredResourceModern","remoteRoot","canonical","FindDeferredResource","remote","isRemote","FindResolvedResource","resource","RefInternalWithContext","RefInternalWithLocal","RefInternalWithRemote","canonicalHref","remoteSchema","remoteBase","absoluteBase","RefNextStackDeferred","deferredResource","resourceEntries","RefNextStackResolved","resolvedResource","RefNextStack","RefResultFound","RefResultNotFound","Ref","IsRecursiveAnchorInScope","RecursiveRef","recursiveRef","DynamicRefFragment","dynamicRef","FindScopedDynamicAnchor","anchor","DynamicRefWhenFound","fragmentTarget","DynamicRefWhenNotFound","DynamicRef","fragmentRoot","CheckDynamicRef","nextStack","ErrorDynamicRef","CheckEnum","option","ErrorEnum","CheckExclusiveMaximum","ErrorExclusiveMaximum","CheckExclusiveMinimum","ErrorExclusiveMinimum","DAYS","DATE","IsLeapYear","year","IsDate","month","day","TIME","IsTime","strictTimeZone","hr","min","sec","tzH","tzM","tzSign","IsDateTime","dateTime","Duration","IsDuration","Email","IsEmail","RE_RULE_HYPHEN_PLACEMENT","RE_RULE_NOT_RESERVED_ACE","RE_ASCII_LDH","RE_NON_ASCII","RE_ASCII_DIGIT","RE_ARABIC_INDIC_DIGIT","RE_EXT_ARABIC_INDIC_DIGIT","RE_COMMON_SEPARATOR","RE_EUROPEAN_SEPARATOR","RE_MARK_NONSPACING","RE_MARK_SPACING_COMBINING","RE_COMBINING_MARK","RE_LETTER","RE_NUMBER_DECIMAL","RE_SCRIPT_GREEK","RE_SCRIPT_HEBREW","RE_SCRIPT_JAPANESE","RE_SCRIPT_ARABIC_LETTER","RE_VIRAMA","RE_RFC5892_DISALLOWED","RE_CONTEXTO_EXCEPTIONS","RE_PVALID_EXCEPTIONS","RE_EUROPEAN_NUMBER","RE_PERMITTED_CATEGORY","IsAsciiLabel","PUNYCODE_BASE","PUNYCODE_TMIN","PUNYCODE_TMAX","PUNYCODE_SKEW","PUNYCODE_DAMP","PUNYCODE_INITIAL_BIAS","PUNYCODE_INITIAL_N","ThrowDontCare","IsAcePrefixed","Adapt","firstTime","delta","numPoints","k","Decode$7","output","bias","delimIdx","j","cp","inIdx","oldi","w","ch","digit","t","outLen","DigitToChar","RE_REPLACE_NON_ASCII","Encode$7","basic","basicLength","codePoints","char","n","handledCPCount","m","q","RE_RTL_ALLOWED","RE_LTR_ALLOWED","RE_RTL_CLASSES","HasBidiChars","HasRightToLeftCharacters","GetBidiClass","codePoint","SatisfiesBidiRule","isRtl","sawEN","sawAN","isFirst","bidiClass","ExceedsMaxALabelLength","HasInvalidHyphens","chars","IsUnicodeLabel","c","length","hasJapanese","IsPunyLabel","body","IsValidLabelLength$1","IsLabel$1","IsHostname$1","label","IsValidLabelLength","IsLabel","NormalizeHostname","IsIdnHostname$1","normalized","labels","hasBidiChars","IsHostname","IdnEmail","IsIdnEmail","IsIdnHostname","IPv4","IsIPv4","IPv6","IsIPv6","InvalidIriChars$1","MalformedScheme","IsIriReference","InvalidIriChars","InvalidPercentEncoding","IsIri","JsonPointerUriFragment","IsJsonPointerUriFragment","JsonPointer","IsJsonPointer","IsRegex","RelativeJsonPointer","IsRelativeJsonPointer","UriReference","IsUriReference","UriTemplate","IsUriTemplate","Uri","IsUri","IsUrl","Uuid","IsUuid","formats","Clear","Test","format","Reset","CheckFormat","ErrorFormat","CheckIf","thenSchema","elseSchema","ErrorIf","trueContext","isIf","CheckItemsSized","ErrorItemsSized","CheckItemsUnsized","ErrorItemsUnsized","CheckItems","ErrorItems","IsValid$2","CheckMaxContains","ErrorMaxContains","minContains","CheckMaximum","ErrorMaximum","CheckMaxItems","ErrorMaxItems","CheckMaxLength","ErrorMaxLength","CheckMaxProperties","ErrorMaxProperties","IsValid$1","CheckMinContains","ErrorMinContains","CheckMinimum","ErrorMinimum","CheckMinItems","ErrorMinItems","CheckMinLength","ErrorMinLength","CheckMinProperties","ErrorMinProperties","CheckMultipleOf","ErrorMultipleOf","CheckNot","ErrorNot","CheckOneOf","passedContexts","ErrorOneOf","passingSchemas","isOneOf","CheckPattern","ErrorPattern","CheckPatternProperties","prop","ErrorPatternProperties","CheckPrefixItems","ErrorPrefixItems","IsExactOptional","required","InexactOptionalCheck","CheckProperties","isProperty","ErrorProperties","CheckPropertyNames","ErrorPropertyNames","propertyNames","isPropertyName","CheckRecursiveRef","ErrorRecursiveRef","CheckRef","valid","ErrorRef","CheckRequired","ErrorRequired","requiredProperties","hasKey","CheckTypeName","CheckTypeNames","CheckType","ErrorType","CheckUnevaluatedItems","ErrorUnevaluatedItems","unevaluatedItems","isEvaluatedItem","CheckUnevaluatedProperties","ErrorUnevaluatedProperties","unevaluatedProperties","isEvaluatedProperty","IsValid","CheckUniqueItems","set","ErrorUniqueItems","duplicateItems","hash","Errors$1","errorContext","errors","Errors","_","collectSchemaErrors","extra","message","basePath","RESERVED_FIELD_KEYS","RESERVED_DEFINITION_KEYS","RESERVED_ENUM_VALUES","compareNumbers","a","b","compareBigInts","diff","compareDecimals","compareText","checkRange","max","path","settingsRanges","s","issues","checkSettings","seen","entryPath","source","checkFlags","reject","flag","why","isComponent","checkEditor","checkField","syntax","defaultProblem","checkFieldUniqueness","folded","clash","checkGroups","groupIndex","fieldIds","checkFieldList","check","reason","checkDocumentLayout","canvasFieldIds","coverFieldId","found","stripFieldIds","checkDisplay","titleFieldId","sort","checkPluralApiKey","validateDefinition","isObject","structuralIssues","raw","settingsSchema","assignIds","explicitIds","previousByKey","previous","matched","createId","parseDefinition","structural","RESERVED_TYPES","RESERVED_QUERIES","withDefinition","describeOrigin","byId","claimedKeys","describeKey","checkIdentity","fieldOwners","definitions","owner","checkGeneratedNames","embeddedComponentIds","checkReferences","expectComponent","at","componentIndex","checkNesting","depthOf","reported","visit","known","cycle","member","children","child","depth","validateSchema","sortKeys","sorted","canonicalJson","serializeDefinition","same","asJson","DEFINITION_METADATA","FIELD_METADATA","FIELD_FLAGS","diffFieldSettings","from","before","to","after","diffField","changes","diffDefinitions","beforeRecord","afterRecord","beforeFields","afterIds","keptBefore","keptAfter","LOCK_FILE_PATH","LockEntrySchema","serializeLockFile","lock","isNullOrString","isIntegerIn","SAFE_LINK_PATTERN","isSafeHref","CELL_ATTRS","width","NODE_RULES","MARK_RULES","NODE_KEYS","MAX_PROBLEMS","isRecord","walk","checkAttrs","given","attrs","checkMarks","marks","mark","matchesAllow","allow","checkNode","node","childContext","content","validateRichText","doc","richTextToPlainText","blocks","inline","document","richTextPlainText","THEME_SEMANTIC_TOKENS","THEME_BRAND_TOKENS","THEME_VARIANTS","THEME_KEY_PATTERN","SURFACES","surface","text","seoComponentDefinition","closed","ASSET_ID_PATTERN","SeoLocaleDefaultsSchema"],"sources":["../../../../packages/schema/src/seo/ids.ts","../../../../packages/schema/src/ids.ts","../../../../packages/schema/src/types/dataTypes.ts","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/system/memory/metrics.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/guard/unicode/unicode_segment.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/guard/unicode/unicode.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/guard/guard.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/guard/globals.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/guard/index.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/system/settings/settings.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/system/memory/freeze.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/system/memory/assign.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/system/memory/clone.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/system/memory/create.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/system/memory/discard.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/system/memory/update.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/schema.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/deferred.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/readonly/instantiate_add.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/optional/instantiate_add.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/array.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/constructor.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/function.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/ref.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/generic.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/any.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/never.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/_add_optional.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/_optional.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/properties.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/object.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/unknown.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/cyclic.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/unsafe.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/system/arguments/arguments.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/infer.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/dependent.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/enum/typescript_enum_to_enum_values.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/enum.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/intersect.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/system/unreachable/unreachable.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/system/hashing/hash.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/system/locale/en_US.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/system/locale/_config.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/_codec.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/_immutable.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/_add_readonly.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/_readonly.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/bigint.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/boolean.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/integer.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/literal.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/null.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/number.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/symbol.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/string.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/union.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/patterns/pattern.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/template_literal/is_finite.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/template_literal/create.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/template_literal/decode.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/record/record_create.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/record/from_key_any.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/record/from_key_boolean.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/tuple.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/readonly/instantiate_remove.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/_remove_readonly.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/optional/instantiate_remove.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/_remove_optional.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/tuple/to_object.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/evaluate/composite.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/evaluate/narrow.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/evaluate/distribute.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/exclude/operation.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/evaluate/evaluate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/record/from_key_enum.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/record/from_key_integer.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/record/from_key_intersect.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/record/from_key_literal.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/record/from_key_number.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/record/from_key_string.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/record/from_key_template_literal.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/evaluate/flatten.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/record/from_key_union.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/record/from_key.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/record/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/record.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/rest.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/this.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/undefined.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/void.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/script/mapping.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/script/token/internal/match.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/script/token/internal/take.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/script/token/internal/char.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/script/token/internal/trim.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/script/token/unsigned_integer.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/script/token/const.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/script/token/ident.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/script/token/unsigned_number.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/script/token/until.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/script/token/until_1.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/script/parser.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/template_literal/encode.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/template_literal/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/template_literal.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/result.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/extends_right.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/any.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/array.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/bigint.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/boolean.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/parameters.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/return_type.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/constructor.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/dependent.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/enum.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/function.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/integer.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/intersect.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/literal.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/never.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/null.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/number.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/object.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/record.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/string.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/symbol.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/template_literal.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/inference.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/tuple.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/undefined.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/union.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/unknown.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/void.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/extends_left.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/interface/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/interface.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/cyclic/check.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/cyclic/candidates.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/cyclic/dependencies.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/cyclic/extends.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/cyclic/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/cyclic/target.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/extends/extends.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/evaluate/compare.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/evaluate/broaden.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/evaluate/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/call/distribute_arguments.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/call/resolve_target.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/call/resolve_arguments.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/call/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/types/call.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/immutable/instantiate_remove.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/intrinsics/mapping.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/intrinsics/from_literal.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/intrinsics/from_template_literal.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/intrinsics/from_union.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/intrinsics/from_type.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/capitalize.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/lowercase.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/uncapitalize.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/uppercase.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/intrinsics/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/conditional.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/conditional/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/constructor_parameters.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/constructor_parameters/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/exclude.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/exclude/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/extract.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/extract/operation.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/extract/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/indexed.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/object/from_cyclic.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/object/from_dependent.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/object/from_intersect.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/object/from_object.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/object/from_tuple.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/object/from_union.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/object/from_type.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/object/collapse.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/helpers/keys.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/indexed/from_array.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/indexable/from_cyclic.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/indexable/from_dependent.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/indexable/from_enum.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/indexable/from_intersect.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/indexable/from_literal.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/indexable/from_template_literal.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/indexable/from_union.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/indexable/from_type.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/indexable/to_indexable_keys.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/this/expand_this.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/indexed/from_object.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/indexed/array_indexer.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/indexed/from_tuple.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/indexed/from_type.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/indexed/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/instance_type.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/instance_type/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/keyof.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/keyof/from_any.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/keyof/from_array.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/keyof/from_object.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/keyof/from_record.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/keyof/from_tuple.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/keyof/from_type.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/keyof/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/mapped.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/mapped/mapped_variants.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/mapped/mapped_operation.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/mapped/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/module/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/non_nullable.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/non_nullable/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/omit.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/indexable/to_indexable.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/omit/from_type.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/omit/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/parameters.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/parameters/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/partial.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/partial/from_cyclic.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/partial/from_dependent.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/partial/from_intersect.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/partial/from_union.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/partial/from_object.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/partial/from_type.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/partial/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/pick.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/pick/from_type.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/pick/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/readonly_object.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/readonly_object/from_array.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/readonly_object/from_cyclic.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/readonly_object/from_dependent.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/readonly_object/from_intersect.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/readonly_object/from_object.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/readonly_object/from_tuple.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/readonly_object/from_union.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/readonly_object/from_type.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/readonly_object/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/ref/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/required/from_cyclic.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/required/from_dependent.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/required/from_intersect.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/required/from_union.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/required/from_object.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/required/from_type.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/required.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/required/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/return_type.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/return_type/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/with.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/with/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/rest/spread.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/instantiate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/immutable/instantiate_add.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/_add_immutable.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/action/evaluate.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/type/engine/priority/priority.mjs","../../../../packages/schema/src/types/definitions.ts","../../../../packages/schema/src/types/locales.ts","../../../../packages/schema/src/types/valueFormats.ts","../../../../packages/schema/src/types/settings.ts","../../../../packages/schema/src/seo/field.ts","../../../../packages/schema/src/editors/catalogue.ts","../../../../packages/schema/src/display/titleField.ts","../../../../packages/schema/src/display/layout.ts","../../../../node_modules/.pnpm/pluralize@8.0.0/node_modules/pluralize/pluralize.js","../../../../packages/schema/src/validators/apiKey.ts","../../../../packages/schema/src/naming/plural.ts","../../../../packages/schema/src/normalize.ts","../../../../packages/schema/src/validators/defaultValue.ts","../../../../packages/schema/src/validators/issues.ts","../../../../packages/schema/src/validators/naming.ts","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/_refine.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/schema.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/additionalItems.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/additionalProperties.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/allOf.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/anchor.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/anyOf.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/const.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/contains.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/default.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/dependencies.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/dependentRequired.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/dependentSchemas.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/dynamicAnchor.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/dynamicRef.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/else.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/enum.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/exclusiveMaximum.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/exclusiveMinimum.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/format.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/id.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/if.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/items.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/maximum.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/maxContains.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/maxItems.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/maxLength.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/maxProperties.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/minimum.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/minContains.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/minItems.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/minLength.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/minProperties.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/multipleOf.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/not.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/oneOf.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/pattern.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/patternProperties.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/prefixItems.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/properties.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/propertyNames.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/recursiveAnchor.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/recursiveRef.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/ref.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/required.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/then.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/type.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/uniqueItems.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/unevaluatedItems.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/types/unevaluatedProperties.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/_context.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/_refine.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/_stack.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/additionalItems.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/_pathing.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/_regexp.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/additionalProperties.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/allOf.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/anyOf.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/boolean.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/const.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/contains.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/dependencies.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/dependentRequired.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/dependentSchemas.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/pointer/pointer.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/resolve/resolve.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/dynamicRef.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/enum.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/exclusiveMaximum.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/exclusiveMinimum.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/date.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/time.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/date_time.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/duration.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/email.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/idna/pattern/pattern.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/idna/label/ascii.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/idna/format/puny.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/idna/format/bidi.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/idna/label/unicode.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/idna/label/puny.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/idna/hostname.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/idna/idn-hostname.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/hostname.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/idn_email.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/idn_hostname.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/ipv4.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/ipv6.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/iri_reference.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/iri.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/json_pointer_uri_fragment.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/json_pointer.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/regex.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/relative_json_pointer.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/uri_reference.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/uri_template.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/uri.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/url.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/uuid.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/format/_registry.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/format.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/if.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/items.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/maxContains.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/maximum.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/maxItems.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/maxLength.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/maxProperties.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/minContains.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/minimum.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/minItems.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/minLength.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/minProperties.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/multipleOf.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/not.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/oneOf.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/pattern.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/patternProperties.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/prefixItems.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/_exact_optional.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/properties.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/propertyNames.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/recursiveRef.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/ref.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/required.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/type.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/unevaluatedItems.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/unevaluatedProperties.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/uniqueItems.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/engine/schema.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/errors.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/system/settings/internal.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/schema/check.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/check/check.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/errors/errors.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/assert/assert.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/clean/from_array.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/clean/from_cyclic.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/clean/from_intersect.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/clean/additional.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/clean/from_object.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/clean/from_record.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/clean/from_ref.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/clean/from_tuple.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/clone/clone.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/clean/from_union.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/clean/from_type.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/shared/union_priority_sort.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/clean/clean.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/try/try_result.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/try/try_array.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/try/try_bigint.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/try/try_boolean.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/try/try_null.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/try/try_number.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/try/try_string.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/try/try_undefined.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/from_array.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/from_bigint.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/from_boolean.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/from_cyclic.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/from_enum.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/from_integer.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/from_intersect.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/from_literal.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/from_null.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/from_number.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/from_additional.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/shared/optional_undefined.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/from_object.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/from_record.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/from_ref.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/from_string.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/from_template_literal.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/from_tuple.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/from_undefined.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/from_union.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/from_void.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/from_type.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/convert/convert.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/default/from_array.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/default/from_cyclic.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/default/from_default.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/default/from_intersect.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/default/from_object.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/default/from_record.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/default/from_ref.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/default/from_tuple.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/default/from_union.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/default/from_type.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/default/default.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/pipeline/pipeline.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/codec/callback.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/codec/from_array.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/codec/from_cyclic.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/codec/from_intersect.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/codec/from_object.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/codec/from_record.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/codec/from_ref.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/codec/from_tuple.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/codec/from_union.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/codec/from_type.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/codec/decode.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/codec/encode.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/parse/parse.mjs","../../../../node_modules/.pnpm/typebox@1.3.34/node_modules/typebox/build/value/delta/edit.mjs","../../../../packages/schema/src/validators/typeboxIssues.ts","../../../../packages/schema/src/validators/definition.ts","../../../../packages/schema/src/validators/parse.ts","../../../../packages/schema/src/validators/schema.ts","../../../../packages/schema/src/fileFormat/canonical.ts","../../../../packages/schema/src/diff/diffDefinitions.ts","../../../../packages/schema/src/fileFormat/lockFile.ts","../../../../packages/schema/src/richtext/spec.ts","../../../../packages/schema/src/richtext/validate.ts","../../../../packages/schema/src/richtext/render.ts","../../../../packages/schema/src/richtext/plainText.ts","../../../../packages/schema/src/themes/tokens.ts","../../../../packages/schema/src/themes/contrast.ts","../../../../packages/schema/src/seo/definition.ts","../../../../packages/schema/src/seo/defaults.ts"],"sourcesContent":["/**\n * The built-in SEO component (plan seo-fields). It is ordinary schema data, created through the change planner\n * and always shared with every site; what makes it \"the\" SEO component is its stable ID, never its API ID, so\n * a renamed or extended copy is still recognised and an unrelated `seo` component (an import) never is.\n */\nexport const SEO_COMPONENT_ID = 'f3905a00-d2a3-4c62-899a-c894bfd6cb9b';\n\n/** The API ID the built-in is created with (it may be renamed later; detection never relies on it). */\nexport const SEO_COMPONENT_API_KEY = 'seo';\n\n/** Stable field IDs of the built-in's fields. Resolver and admin look fields up by these. */\nexport const SEO_FIELD_IDS = {\n title: '3fe294a9-6af9-4019-8b32-43010822e45a',\n description: '6d1917f3-94a2-4391-ba1f-a98d14577b93',\n image: 'd27c9354-4afc-4583-93b4-367214a7714a',\n canonical: '17b374b6-cd85-444e-8403-20c7458ed29e',\n noindex: 'e8346f99-dc3c-4b5c-906f-4854e03c9a57',\n} as const;\n\nexport type SeoFieldKey = keyof typeof SEO_FIELD_IDS;\n\n/** The built-in editor for a field holding the SEO component (preview and counters in the admin). */\nexport const SEO_EDITOR_ID = 'seoEditor';\n\n/** Admin-only counters: lengths past which search results usually truncate. Never enforced. */\nexport const SEO_TITLE_SOFT_MAX = 70;\nexport const SEO_DESCRIPTION_SOFT_MAX = 160;\n\n/** The placeholder a title template must contain exactly once. */\nexport const SEO_TITLE_PLACEHOLDER = '%s';\n\n/** A title template holds the placeholder exactly once, e.g. `%s · Acme`. */\nexport const SEO_TITLE_TEMPLATE_PATTERN = /^(?:(?!%s)[\\s\\S])*%s(?:(?!%s)[\\s\\S])*$/;\n\n/** A Twitter/X handle with its `@`. */\nexport const SEO_TWITTER_HANDLE_PATTERN = /^@[A-Za-z0-9_]{1,15}$/;\n","/**\n * Stable IDs for models, components and fields: random UUIDs (v4).\n *\n * Why UUID rather than ULID: PostgreSQL stores and indexes `uuid` natively (16 bytes) for the system\n * tables that key on model IDs; `crypto.randomUUID()` exists in Node and every browser, so the admin can\n * create field IDs client-side with no dependency; and nothing in Shapio needs IDs to sort by creation time\n * (revisions carry their own version numbers and timestamps). IDs are compared case-insensitively nowhere:\n * they are always lower-case as generated.\n */\nexport const STABLE_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;\n\nexport const isStableId = (value: unknown): value is string =>\n typeof value === 'string' && STABLE_ID_PATTERN.test(value);\n\nexport const createStableId = (): string => globalThis.crypto.randomUUID();\n","/** Every stored data type. A field's data type is separate from the editor that renders it (brief §2.5). */\nexport const DATA_TYPES = [\n 'string',\n 'text',\n 'code',\n 'richtext',\n 'number',\n 'integer',\n 'decimal',\n 'biginteger',\n 'boolean',\n 'date',\n 'datetime',\n 'time',\n 'enum',\n 'json',\n 'slug',\n 'email',\n 'url',\n 'uid',\n 'media',\n 'relation',\n 'component',\n 'dynamiczone',\n] as const;\n\nexport type DataType = (typeof DATA_TYPES)[number];\n\nexport const isDataType = (value: unknown): value is DataType =>\n typeof value === 'string' && (DATA_TYPES as readonly string[]).includes(value);\n\n/**\n * Scalar types stored as one JSON value per field (string, number or boolean). Only these can be unique,\n * filterable or sortable: their index expression is a single cast of `data ->> fieldId` (ADR 0001).\n */\nexport const SCALAR_DATA_TYPES: ReadonlySet<DataType> = new Set<DataType>([\n 'string',\n 'text',\n 'number',\n 'integer',\n 'decimal',\n 'biginteger',\n 'boolean',\n 'date',\n 'datetime',\n 'time',\n 'enum',\n 'slug',\n 'email',\n 'url',\n 'uid',\n]);\n\n/** Types that may carry `unique: true` (boolean and long text make no sense as unique keys). */\nexport const UNIQUE_CAPABLE_DATA_TYPES: ReadonlySet<DataType> = new Set<DataType>([\n 'string',\n 'number',\n 'integer',\n 'decimal',\n 'biginteger',\n 'date',\n 'datetime',\n 'time',\n 'slug',\n 'email',\n 'url',\n 'uid',\n]);\n\n/** Types whose values point at other definitions; the reference checks look at these. */\nexport const REFERENCE_DATA_TYPES: ReadonlySet<DataType> = new Set<DataType>([\n 'relation',\n 'component',\n 'dynamiczone',\n]);\n\n/**\n * How a value is physically represented in the content JSON. Changing a field's type within a storage\n * family never needs a data conversion, only a validity check; across families it is a conversion.\n */\nexport type StorageFamily =\n | 'jsonString'\n | 'jsonNumber'\n | 'numericString'\n | 'boolean'\n | 'json'\n | 'richtext'\n | 'media'\n | 'relation'\n | 'component'\n | 'dynamiczone';\n\nexport const STORAGE_FAMILY: Readonly<Record<DataType, StorageFamily>> = {\n string: 'jsonString',\n text: 'jsonString',\n code: 'jsonString',\n slug: 'jsonString',\n email: 'jsonString',\n url: 'jsonString',\n uid: 'jsonString',\n enum: 'jsonString',\n date: 'jsonString',\n datetime: 'jsonString',\n time: 'jsonString',\n number: 'jsonNumber',\n integer: 'jsonNumber',\n decimal: 'numericString',\n biginteger: 'numericString',\n boolean: 'boolean',\n json: 'json',\n richtext: 'richtext',\n media: 'media',\n relation: 'relation',\n component: 'component',\n dynamiczone: 'dynamiczone',\n};\n","/** TypeBox instantiation metrics */\nexport const Metrics = {\n assign: 0,\n create: 0,\n clone: 0,\n discard: 0,\n update: 0\n};\n","// --------------------------------------------------------------------------\n// IsBetween\n// --------------------------------------------------------------------------\nfunction IsBetween(value, min, max) {\n return value >= min && value <= max;\n}\n// --------------------------------------------------------------------------\n// IsZeroWidthJoiner\n// --------------------------------------------------------------------------\nfunction IsZeroWidthJoiner(value) {\n return (value === 0x200D);\n}\n// --------------------------------------------------------------------------\n// IsHighSurrogate\n// --------------------------------------------------------------------------\nfunction IsHighSurrogate(value) {\n return IsBetween(value, 0xD800, 0xDBFF);\n}\n// --------------------------------------------------------------------------\n// IsRegionalIndicator\n// --------------------------------------------------------------------------\nfunction IsRegionalIndicator(value) {\n return IsBetween(value, 0x1F1E6, 0x1F1FF);\n}\n// --------------------------------------------------------------------------\n// IsVariationSelector\n// --------------------------------------------------------------------------\nfunction IsVariationSelector(value) {\n return IsBetween(value, 0xFE00, 0xFE0F);\n}\n// --------------------------------------------------------------------------\n// IsCombiningMark\n// --------------------------------------------------------------------------\nfunction IsCombiningMark(value) {\n return (IsBetween(value, 0x0300, 0x036F) ||\n IsBetween(value, 0x1AB0, 0x1AFF) ||\n IsBetween(value, 0x1DC0, 0x1DFF) ||\n IsBetween(value, 0xFE20, 0xFE2F));\n}\n// --------------------------------------------------------------------------\n// CodePointLength\n// --------------------------------------------------------------------------\nfunction CodePointLength(value) {\n return value > 0xFFFF ? 2 : 1;\n}\n// --------------------------------------------------------------------------\n// ConsumeModifiers (helper)\n// --------------------------------------------------------------------------\nfunction ConsumeModifiers(value, index) {\n while (index < value.length) {\n const point = value.codePointAt(index);\n if (IsCombiningMark(point) || IsVariationSelector(point)) {\n index += CodePointLength(point);\n }\n else {\n break;\n }\n }\n return index;\n}\n// --------------------------------------------------------------------------\n// NextGraphemeClusterIndex\n// --------------------------------------------------------------------------\nfunction NextGraphemeClusterIndex(value, clusterStart) {\n const startCP = value.codePointAt(clusterStart);\n let clusterEnd = clusterStart + CodePointLength(startCP);\n // Consume combining marks & variation selectors\n clusterEnd = ConsumeModifiers(value, clusterEnd);\n // Handle multi-ZWJ sequences\n while (clusterEnd < value.length - 1 && IsZeroWidthJoiner(value.codePointAt(clusterEnd))) {\n const nextCP = value.codePointAt(clusterEnd + 1);\n clusterEnd += 1 + CodePointLength(nextCP);\n clusterEnd = ConsumeModifiers(value, clusterEnd);\n }\n // Handle regional indicator pairs (flags)\n if (IsRegionalIndicator(startCP) &&\n clusterEnd < value.length &&\n IsRegionalIndicator(value.codePointAt(clusterEnd))) {\n clusterEnd += CodePointLength(value.codePointAt(clusterEnd));\n }\n return clusterEnd;\n}\n// --------------------------------------------------------------------------\n// IsGraphemeCodePoint\n// --------------------------------------------------------------------------\nfunction IsGraphemeCodePoint(value) {\n return ((value >= 0x0300) && ( // above special range\n IsHighSurrogate(value) ||\n IsCombiningMark(value) ||\n IsVariationSelector(value) ||\n IsZeroWidthJoiner(value)));\n}\n// --------------------------------------------------------------------------\n// IsMinLengthSegmented\n// --------------------------------------------------------------------------\n/** Checks if a string has at least a minimum number of grapheme clusters */\nfunction IsMinLengthSegmented(value, minLength) {\n // if (minLength === 0) return true // 0-length (unreachable)\n let count = 0, index = 0;\n while (index < value.length) {\n index = NextGraphemeClusterIndex(value, index);\n if ((++count) >= minLength)\n return true;\n }\n return false;\n}\n// --------------------------------------------------------------------------\n// IsMaxLengthSegmented\n// --------------------------------------------------------------------------\n/** Checks if a string has at most a maximum number of grapheme clusters */\nfunction IsMaxLengthSegmented(value, maxLength) {\n let count = 0, index = 0;\n while (index < value.length) {\n index = NextGraphemeClusterIndex(value, index);\n if ((++count) > maxLength)\n return false;\n }\n return true;\n}\n// --------------------------------------------------------------------------\n// GraphemeCount\n// --------------------------------------------------------------------------\n/** Returns the number of grapheme clusters in a string */\nexport function GraphemeCount(value) {\n let count = 0, index = 0;\n while (index < value.length) {\n index = NextGraphemeClusterIndex(value, index);\n count++;\n }\n return count;\n}\n// --------------------------------------------------------------------------\n// IsMinLength\n// --------------------------------------------------------------------------\n/** Fast check for minimum grapheme length, falls back to full check if needed */\nexport function IsMinLength(value, minLength) {\n if (minLength === 0)\n return true; // 0-length\n if (value.length < minLength)\n return false; // length is upper bound on grapheme count\n let index = 0;\n while (true) {\n if (IsGraphemeCodePoint(value.charCodeAt(index))) {\n return IsMinLengthSegmented(value, minLength);\n }\n if ((++index) >= minLength)\n return true;\n }\n}\n// --------------------------------------------------------------------------\n// IsMaxLength\n// --------------------------------------------------------------------------\n/** Fast check for maximum grapheme length, falls back to full check if needed */\nexport function IsMaxLength(value, maxLength) {\n if (value.length <= maxLength)\n return true; // length is upper bound on grapheme count\n let index = 0;\n while (true) {\n if (IsGraphemeCodePoint(value.charCodeAt(index))) {\n return IsMaxLengthSegmented(value, maxLength);\n }\n if ((++index) > maxLength)\n return false;\n }\n}\n","// ------------------------------------------------------------------\n// CodePointCount (10-bit Shift Branchless)\n//\n// Counts code points by enumerating UTF-16 sequences and incrementing\n// when not within a high/low pairing. Because surrogate blocks are\n// 1024 (2^10) wide and aligned, by shifting right by (0xA), we can\n// collapse each unit to a constant per block (high: 0x36, low: 0x37)\n// and shift again into a packed (0x3637) for comparison. Fetch calls\n// to charCodeAt(...) are kept to one call per iteration.\n//\n// ------------------------------------------------------------------\n/** Returns the total number of Unicode code points in the string */\nexport function CodePointCount(value) {\n let result = 0, index = 0, prev = 0;\n while (index < value.length) {\n const next = value.charCodeAt(index++) >> 0xA; // shift (10-bits into high/low)\n result += +(((prev << 8) | next) !== 0x3637); // packed (or +!(prev === 0x36 && next === 0x37))\n prev = next;\n }\n return result;\n}\n// ------------------------------------------------------------------\n// IsMaxLength\n// ------------------------------------------------------------------\n/** Returns true if the string length in Unicode code points is less than or equal to maxLength */\nexport function IsMaxLength(value, maxLength) {\n return value.length <= maxLength || (value.length <= (maxLength << 1) && CodePointCount(value) <= maxLength);\n}\n// ------------------------------------------------------------------\n// IsMinLength\n// ------------------------------------------------------------------\n/** Returns true if the string length in Unicode code points is greater than or equal to minLength */\nexport function IsMinLength(value, minLength) {\n return value.length >= (minLength << 1) || (value.length >= minLength && CodePointCount(value) >= minLength);\n}\n","// deno-fmt-ignore-file\nimport * as UnicodeSegmentGuard from './unicode/unicode_segment.mjs';\nimport * as UnicodeGuard from './unicode/unicode.mjs';\n// --------------------------------------------------------------------------\n// Guards\n// --------------------------------------------------------------------------\n/** Returns true if this value is an array */\nexport function IsArray(value) {\n return Array.isArray(value);\n}\n/** Returns true if this value is bigint */\nexport function IsBigInt(value) {\n return IsEqual(typeof value, 'bigint');\n}\n/** Returns true if this value is a boolean */\nexport function IsBoolean(value) {\n return IsEqual(typeof value, 'boolean');\n}\n/** Returns true if this value is a constructor */\nexport function IsConstructor(value) {\n if (IsUndefined(value) || !IsFunction(value))\n return false;\n const result = Function.prototype.toString.call(value);\n if (/^class\\s/.test(result))\n return true;\n if (/\\[native code\\]/.test(result))\n return true;\n return false;\n}\n/** Returns true if this value is a function */\nexport function IsFunction(value) {\n return IsEqual(typeof value, 'function');\n}\n/** Returns true if this value is integer */\nexport function IsInteger(value) {\n return Number.isInteger(value);\n}\n/** Returns true if this value is null */\nexport function IsNull(value) {\n return IsEqual(value, null);\n}\n/** Returns true if this value is number */\nexport function IsNumber(value) {\n return Number.isFinite(value);\n}\n/** Returns true if this value is an object but not an array */\nexport function IsObjectNotArray(value) {\n return IsObject(value) && !IsArray(value);\n}\n/** Returns true if this value is an object */\nexport function IsObject(value) {\n return IsEqual(typeof value, 'object') && !(IsNull(value));\n}\n/** Returns true if this value is string */\nexport function IsString(value) {\n return IsEqual(typeof value, 'string');\n}\n/** Returns true if this value is symbol */\nexport function IsSymbol(value) {\n return IsEqual(typeof value, 'symbol');\n}\n/** Returns true if this value is undefined */\nexport function IsUndefined(value) {\n return IsEqual(value, undefined);\n}\n// --------------------------------------------------------------------------\n// Relational\n// --------------------------------------------------------------------------\nexport function IsEqual(left, right) {\n return left === right;\n}\nexport function IsGreaterThan(left, right) {\n return left > right;\n}\nexport function IsLessThan(left, right) {\n return left < right;\n}\nexport function IsLessEqualThan(left, right) {\n return left <= right;\n}\nexport function IsGreaterEqualThan(left, right) {\n return left >= right;\n}\n// --------------------------------------------------------------------------\n// MultipleOf\n// --------------------------------------------------------------------------\nexport function IsMultipleOf(dividend, divisor) {\n if (IsBigInt(dividend) || IsBigInt(divisor)) {\n return BigInt(dividend) % BigInt(divisor) === 0n;\n }\n const tolerance = 1e-10;\n if (!IsNumber(dividend))\n return true;\n if (IsInteger(dividend) && (1 / divisor) % 1 === 0)\n return true;\n const mod = dividend % divisor;\n return Math.min(Math.abs(mod), Math.abs(mod - divisor), Math.abs(mod + divisor)) < tolerance;\n}\n// ------------------------------------------------------------------\n// IsClassInstance\n// ------------------------------------------------------------------\n/** Returns true if the value appears to be an instance of a class. */\nexport function IsClassInstance(value) {\n if (!IsObject(value))\n return false;\n const proto = globalThis.Object.getPrototypeOf(value);\n if (IsNull(proto))\n return false;\n return IsEqual(typeof proto.constructor, 'function') &&\n !(IsEqual(proto.constructor, globalThis.Object) ||\n IsEqual(proto.constructor.name, 'Object'));\n}\n// ------------------------------------------------------------------\n// IsValueLike\n// ------------------------------------------------------------------\nexport function IsValueLike(value) {\n return IsBigInt(value) ||\n IsBoolean(value) ||\n IsNull(value) ||\n IsNumber(value) ||\n IsString(value) ||\n IsUndefined(value);\n}\n// --------------------------------------------------------------------------\n// String\n// --------------------------------------------------------------------------\n/** Returns the total number of visual grapheme clusters in the string. */\nexport function GraphemeCount(value) {\n return UnicodeSegmentGuard.GraphemeCount(value);\n}\n/** Returns the total number of Unicode code points in the string. */\nexport function CodePointCount(value) {\n return UnicodeGuard.CodePointCount(value);\n}\n/** Returns true if the string length in Unicode code points does not exceed maxLength */\nexport function IsMaxLength(value, maxLength) {\n return UnicodeGuard.IsMaxLength(value, maxLength);\n}\n/** Returns true if the string length in Unicode code points is at least minLength */\nexport function IsMinLength(value, minLength) {\n return UnicodeGuard.IsMinLength(value, minLength);\n}\n// --------------------------------------------------------------------------\n// Array\n// --------------------------------------------------------------------------\n/** Returns true if every element from offset satisfies the callback, short-circuiting on the first failure */\nexport function Every(value, offset, callback) {\n return value.every((item, index) => (index < offset) || callback(item, index));\n}\n/** Returns true if every element from offset satisfies the callback, using exhaustive enumeration */\nexport function EveryAll(value, offset, callback) {\n let result = true;\n value.forEach((item, index) => { if ((index >= offset) && !callback(item, index))\n result = false; });\n return result;\n}\n/** Returns true if some element satisfies the callback, short-circuiting on the first success */\nexport function Some(value, callback) {\n return value.some((value, index) => callback(value, index));\n}\n/** Returns true if some element satisfies the callback, using exhaustive enumeration */\nexport function SomeAll(value, callback) {\n let result = false;\n value.forEach((item, index) => { if (callback(item, index))\n result = true; });\n return result;\n}\n/** Returns the count of elements that satisfy the callback */\nexport function Counted(value, callback) {\n return value.reduce((result, value, index) => callback(value, index) ? ++result : result, 0);\n}\n/** Shifts the left-most element from an array and dispatches to the true arm, or the false arm if empty */\nexport function ShiftLeft(array, true_, false_) {\n return (IsEqual(array.length, 0) ? false_() : true_(array[0], array.slice(1)));\n}\n// --------------------------------------------------------------------------\n// Object\n// --------------------------------------------------------------------------\n/** Returns true if the PropertyKey is Unsafe (ref: prototype-pollution). */\nexport function IsUnsafePropertyKey(key) {\n return IsEqual(key, '__proto__') || IsEqual(key, 'constructor') || IsEqual(key, 'prototype');\n}\n/** Returns true if this value has this property key */\nexport function HasPropertyKey(value, key) {\n return IsUnsafePropertyKey(key) ? Object.prototype.hasOwnProperty.call(value, key) : key in value;\n}\n/** Returns object entries as `[RegExp, Value][]` */\nexport function EntriesRegExp(value) {\n return Keys(value).map((key) => [new RegExp(`^${key}$`), value[key]]);\n}\n/** Returns object entries as `[string, Value][]` */\nexport function Entries(value) {\n return Object.entries(value);\n}\n/** Returns property keys for this object via `Object.getOwnPropertyNames({ ... })` */\nexport function Keys(value) {\n return Object.getOwnPropertyNames(value);\n}\n/** Returns the property keys for this object via `Object.getOwnPropertySymbols({ ... })` */\nexport function Symbols(value) {\n return Object.getOwnPropertySymbols(value);\n}\n/** Returns the property values for the given object via `Object.values()` */\nexport function Values(value) {\n return Object.values(value);\n}\n// ------------------------------------------------------------------\n// IsDeepEqual\n// ------------------------------------------------------------------\nfunction DeepEqualObject(left, right) {\n if (!IsObject(right))\n return false;\n const keys = Keys(left);\n return IsEqual(keys.length, Keys(right).length) &&\n keys.every((key) => IsDeepEqual(left[key], right[key]));\n}\nfunction DeepEqualArray(left, right) {\n return IsArray(right) && IsEqual(left.length, right.length) &&\n left.every((_, index) => IsDeepEqual(left[index], right[index]));\n}\n/** Returns true if left and right values are structurally equal */\nexport function IsDeepEqual(left, right) {\n return (IsArray(left) ? DeepEqualArray(left, right) :\n IsObject(left) ? DeepEqualObject(left, right) :\n IsEqual(left, right));\n}\n","// --------------------------------------------------------------------------\n// Primitives\n// --------------------------------------------------------------------------\nexport function IsBoolean(value) {\n return value instanceof Boolean;\n}\nexport function IsNumber(value) {\n return value instanceof Number;\n}\nexport function IsString(value) {\n return value instanceof String;\n}\n// --------------------------------------------------------------------------\n// TypeArray\n// --------------------------------------------------------------------------\nexport function IsTypeArray(value) {\n return globalThis.ArrayBuffer.isView(value);\n}\n/** Returns true if the value is a Int8Array */\nexport function IsInt8Array(value) {\n return value instanceof globalThis.Int8Array;\n}\n/** Returns true if the value is a Uint8Array */\nexport function IsUint8Array(value) {\n return value instanceof globalThis.Uint8Array;\n}\n/** Returns true if the value is a Uint8ClampedArray */\nexport function IsUint8ClampedArray(value) {\n return value instanceof globalThis.Uint8ClampedArray;\n}\n/** Returns true if the value is a Int16Array */\nexport function IsInt16Array(value) {\n return value instanceof globalThis.Int16Array;\n}\n/** Returns true if the value is a Uint16Array */\nexport function IsUint16Array(value) {\n return value instanceof globalThis.Uint16Array;\n}\n/** Returns true if the value is a Int32Array */\nexport function IsInt32Array(value) {\n return value instanceof globalThis.Int32Array;\n}\n/** Returns true if the value is a Uint32Array */\nexport function IsUint32Array(value) {\n return value instanceof globalThis.Uint32Array;\n}\n/** Returns true if the value is a Float32Array */\nexport function IsFloat32Array(value) {\n return value instanceof globalThis.Float32Array;\n}\n/** Returns true if the value is a Float64Array */\nexport function IsFloat64Array(value) {\n return value instanceof globalThis.Float64Array;\n}\n/** Returns true if the value is a BigInt64Array */\nexport function IsBigInt64Array(value) {\n return value instanceof globalThis.BigInt64Array;\n}\n/** Returns true if the value is a BigUint64Array */\nexport function IsBigUint64Array(value) {\n return value instanceof globalThis.BigUint64Array;\n}\n// ------------------------------------------------------------------\n// RegExp\n// ------------------------------------------------------------------\n/** Returns true if the value is a RegExp */\nexport function IsRegExp(value) {\n return value instanceof globalThis.RegExp;\n}\n// ------------------------------------------------------------------\n// Date\n// ------------------------------------------------------------------\n/** Returns true if the value is a Date */\nexport function IsDate(value) {\n return value instanceof globalThis.Date;\n}\n// ------------------------------------------------------------------\n// Set\n// ------------------------------------------------------------------\n/** Returns true if the value is a Set */\nexport function IsSet(value) {\n return value instanceof globalThis.Set;\n}\n// ------------------------------------------------------------------\n// Map\n// ------------------------------------------------------------------\n/** Returns true if the value is a Map */\nexport function IsMap(value) {\n return value instanceof globalThis.Map;\n}\n","// ------------------------------------------------------------------\n// Guards\n// ------------------------------------------------------------------\nexport * as EmitGuard from './emit.mjs';\nexport * as GlobalsGuard from './globals.mjs';\nexport * as NativeGuard from './native.mjs';\n// ------------------------------------------------------------------\n// Default\n// ------------------------------------------------------------------\nimport * as Guard from './guard.mjs';\nexport * as Guard from './guard.mjs';\nexport default Guard;\n","import { Guard } from '../../guard/index.mjs';\n// -------------------------------------------------------------------\n// State\n// -------------------------------------------------------------------\n// Internal mutable state\nconst settings = {\n immutableTypes: false,\n maxErrors: 8,\n maxParseErrors: 1,\n maxInstantiationCount: 128,\n useAcceleration: true,\n exactOptionalPropertyTypes: false,\n enumerableKind: false,\n correctiveParse: false,\n unionPrioritySort: true\n};\n// -------------------------------------------------------------------\n// Reset\n// -------------------------------------------------------------------\n/** Resets system settings to defaults */\nexport function Reset() {\n settings.immutableTypes = false;\n settings.maxErrors = 8;\n settings.maxParseErrors = 1;\n settings.maxInstantiationCount = 128;\n settings.useAcceleration = true;\n settings.exactOptionalPropertyTypes = false;\n settings.enumerableKind = false;\n settings.correctiveParse = false;\n settings.unionPrioritySort = true;\n}\n// -------------------------------------------------------------------\n// Set\n// -------------------------------------------------------------------\n/** Sets system settings */\nexport function Set(options) {\n for (const key of Guard.Keys(options)) {\n const value = options[key];\n if (value !== undefined) {\n Object.defineProperty(settings, key, { value });\n }\n }\n}\n// -------------------------------------------------------------------\n// Get\n// -------------------------------------------------------------------\n/** Gets current system settings */\nexport function Get() {\n return settings;\n}\n","// deno-lint-ignore-file no-explicit-any\nimport { Settings } from '../settings/index.mjs';\n/** Conditionally freezes the value if `immutableTypes` is true, otherwise no action. */\nexport function Freeze(value) {\n return Settings.Get().immutableTypes ? Object.freeze(value) : value;\n}\n","// deno-lint-ignore-file ban-types no-explicit-any\n// deno-fmt-ignore-file\nimport { Metrics } from './metrics.mjs';\nimport { Freeze } from './freeze.mjs';\n/**\n * Performs an Object assign using the Left and Right object types. We track this operation as it\n * creates a new GC handle per assignment.\n */\nexport function Assign(left, right) {\n Metrics.assign += 1;\n return Freeze({ ...left, ...right });\n}\n","// deno-fmt-ignore-file\nimport { Guard, GlobalsGuard } from '../../guard/index.mjs';\nimport { Metrics } from './metrics.mjs';\n// ------------------------------------------------------------------\n// ClassInstance\n//\n// TypeBox does not clone arbitrary class instances. Class instances\n// cannot be safely cloned without potentially breaking private\n// members of the instance.\n//\n// ------------------------------------------------------------------\nfunction FromClassInstance(value) {\n return value; // atomic\n}\n// ------------------------------------------------------------------\n// SchemaObject\n//\n// Schema objects have non-enumerable properties that MUST be preserved \n// on Clone. The following is the optimal path these objects.\n// ------------------------------------------------------------------\nfunction IsSchemaObject(value) {\n return (Guard.HasPropertyKey(value, '~kind') ||\n Guard.HasPropertyKey(value, '~unsafe'));\n}\nfunction FromSchemaObject(value) {\n const result = {};\n for (const key of Guard.Keys(value)) {\n if (Guard.IsUnsafePropertyKey(key))\n continue; // (ignore: prototype-pollution)\n const descriptor = Object.getOwnPropertyDescriptor(value, key); // safe-name!\n descriptor.value = FromValue(descriptor.value);\n if (Guard.IsEqual(descriptor.enumerable, true)) {\n result[key] = descriptor.value;\n }\n else {\n Object.defineProperty(result, key, descriptor);\n }\n }\n return result;\n}\n// ------------------------------------------------------------------\n// PlainObject\n// ------------------------------------------------------------------\nfunction FromPlainObject(value) {\n const result = {};\n for (const key of Guard.Keys(value)) {\n if (Guard.IsUnsafePropertyKey(key))\n continue; // (ignore: prototype-pollution)\n result[key] = FromValue(value[key]);\n }\n for (const key of Guard.Symbols(value)) {\n result[key] = FromValue(value[key]);\n }\n return result;\n}\n// ------------------------------------------------------------------\n// Object\n// ------------------------------------------------------------------\nfunction FromObject(value) {\n return (Guard.IsClassInstance(value) ? FromClassInstance(value) :\n IsSchemaObject(value) ? FromSchemaObject(value) :\n FromPlainObject(value));\n}\n// ------------------------------------------------------------------\n// Array\n// ------------------------------------------------------------------\nfunction FromArray(value) {\n return value.map((element) => FromValue(element));\n}\n// ------------------------------------------------------------------\n// TypeArray\n// ------------------------------------------------------------------\nfunction FromTypedArray(value) {\n return value.slice();\n}\n// ------------------------------------------------------------------\n// RegExp\n// ------------------------------------------------------------------\nfunction FromRegExp(value) {\n return new RegExp(value.source, value.flags);\n}\n// ------------------------------------------------------------------\n// Map\n// ------------------------------------------------------------------\nfunction FromMap(value) {\n return new Map(FromValue([...value.entries()]));\n}\n// ------------------------------------------------------------------\n// Set\n// ------------------------------------------------------------------\nfunction FromSet(value) {\n return new Set(FromValue([...value.values()]));\n}\nfunction FromValue(value) {\n return (GlobalsGuard.IsTypeArray(value) ? FromTypedArray(value) :\n GlobalsGuard.IsRegExp(value) ? FromRegExp(value) :\n GlobalsGuard.IsMap(value) ? FromMap(value) :\n GlobalsGuard.IsSet(value) ? FromSet(value) :\n Guard.IsArray(value) ? FromArray(value) :\n Guard.IsObject(value) ? FromObject(value) :\n value);\n}\n// ------------------------------------------------------------------\n// Clone\n// ------------------------------------------------------------------\n/**\n * Returns a Clone of the given value. This function is similar to structuredClone()\n * but also supports deep cloning instances of Map, Set and TypeArray.\n */\nexport function Clone(value) {\n Metrics.clone += 1;\n return FromValue(value);\n}\n","// deno-lint-ignore-file no-explicit-any\nimport { Settings } from '../settings/index.mjs';\nimport { Metrics } from './metrics.mjs';\nimport { Freeze } from './freeze.mjs';\nfunction MergeHidden(left, right) {\n for (const key of Object.keys(right)) {\n Object.defineProperty(left, key, {\n configurable: true,\n writable: true,\n enumerable: false,\n value: right[key]\n });\n }\n return left;\n}\nfunction Merge(left, right) {\n return { ...left, ...right };\n}\n/**\n * Creates an object with hidden, enumerable, and optional property sets. This function\n * ensures types are instantiated according to configuration rules for enumerable and\n * non-enumerable properties.\n */\nexport function Create(hidden, enumerable, options = {}) {\n Metrics.create += 1;\n const withOptions = Merge(enumerable, options);\n const withHidden = Settings.Get().enumerableKind ? Merge(withOptions, hidden) : MergeHidden(withOptions, hidden);\n return Freeze(withHidden);\n}\n","// deno-lint-ignore-file no-explicit-any\nimport { Guard } from '../../guard/index.mjs';\nimport { Metrics } from './metrics.mjs';\nimport { Freeze } from './freeze.mjs';\nimport { Clone } from './clone.mjs';\n/** Discards multiple property keys from the given object value */\nexport function Discard(value, propertyKeys) {\n Metrics.discard += 1;\n const result = {};\n for (const key of Guard.Keys(value)) {\n if (propertyKeys.includes(key))\n continue;\n const descriptor = Object.getOwnPropertyDescriptor(value, key); // safe-name!\n descriptor.value = Clone(descriptor.value);\n Object.defineProperty(result, key, descriptor);\n }\n return Freeze(result);\n}\n","// deno-lint-ignore-file no-explicit-any\nimport { Settings } from '../settings/index.mjs';\nimport { Metrics } from './metrics.mjs';\nimport { Freeze } from './freeze.mjs';\nimport { Clone } from './clone.mjs';\n/**\n * Updates a value with new properties while preserving property enumerability. Use this function to modify\n * existing types without altering their configuration.\n */\nexport function Update(current, hidden, enumerable) {\n Metrics.update += 1;\n const settings = Settings.Get();\n const result = Clone(current);\n // hidden\n for (const key of Object.keys(hidden)) {\n Object.defineProperty(result, key, {\n configurable: true,\n writable: true,\n enumerable: settings.enumerableKind,\n value: hidden[key]\n });\n }\n // enumerable\n for (const key of Object.keys(enumerable)) {\n Object.defineProperty(result, key, {\n configurable: true,\n enumerable: true,\n writable: true,\n value: enumerable[key]\n });\n }\n return Freeze(result);\n}\n","// deno-lint-ignore-file\n// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Kind\n// ------------------------------------------------------------------\nexport function IsKind(value, kind) {\n return Guard.IsObject(value) && Guard.HasPropertyKey(value, '~kind') && Guard.IsEqual(value[\"~kind\"], kind);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\nexport function IsSchema(value) {\n return Guard.IsObject(value);\n}\n","import { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates a Deferred action. */\nexport function Deferred(action, parameters, options) {\n return Memory.Create({ '~kind': 'Deferred' }, { type: 'deferred', action, parameters, options }, {});\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is a TDeferred. */\nexport function IsDeferred(value) {\n return IsKind(value, 'Deferred');\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { InstantiateType } from '../instantiate.mjs';\nfunction AddReadonlyOperation(type) {\n return Memory.Update(type, { '~readonly': true }, {});\n}\nexport function AddReadonlyAction(type, options) {\n const result = Memory.Update(AddReadonlyOperation(type), {}, options);\n return result;\n}\nexport function AddReadonlyInstantiate(context, state, type, options) {\n const instantiatedType = InstantiateType(context, state, type);\n return AddReadonlyAction(instantiatedType, options);\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { InstantiateType } from '../instantiate.mjs';\nfunction AddOptionalOperation(type) {\n return Memory.Update(type, { '~optional': true }, {});\n}\nexport function AddOptionalAction(type, options) {\n const result = Memory.Update(AddOptionalOperation(type), {}, options);\n return result;\n}\nexport function AddOptionalInstantiate(context, state, type, options) {\n const instantiatedType = InstantiateType(context, state, type);\n return AddOptionalAction(instantiatedType, options);\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates an Array type. */\nexport function _Array_(items, options) {\n return Memory.Create({ '~kind': 'Array' }, { type: 'array', items }, options);\n}\nexport { _Array_ as Array }; // Prevent Collision With Global Scope\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is a TArray. */\nexport function IsArray(value) {\n return IsKind(value, 'Array');\n}\n// ------------------------------------------------------------------\n// Options\n// ------------------------------------------------------------------\n/** Extracts options from a TArray. */\nexport function ArrayOptions(type) {\n return Memory.Discard(type, ['~kind', 'type', 'items']);\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates a Constructor type. */\nexport function Constructor(parameters, instanceType, options = {}) {\n return Memory.Create({ '~kind': 'Constructor' }, { type: 'constructor', parameters, instanceType }, options);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is a TConstructor. */\nexport function IsConstructor(value) {\n return IsKind(value, 'Constructor');\n}\n// ------------------------------------------------------------------\n// Options\n// ------------------------------------------------------------------\n/** Extracts options from a TConstructor. */\nexport function ConstructorOptions(type) {\n return Memory.Discard(type, ['~kind', 'type', 'parameters', 'instanceType']);\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates a Function type. */\nexport function _Function_(parameters, returnType, options = {}) {\n return Memory.Create({ ['~kind']: 'Function' }, { type: 'function', parameters, returnType }, options);\n}\nexport { _Function_ as Function }; // Prevent Collision With Global Scope\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is TFunction. */\nexport function IsFunction(value) {\n return IsKind(value, 'Function');\n}\n// ------------------------------------------------------------------\n// Options\n// ------------------------------------------------------------------\n/** Extracts options from a TFunction. */\nexport function FunctionOptions(type) {\n return Memory.Discard(type, ['~kind', 'type', 'parameters', 'returnType']);\n}\n","// deno-lint-ignore-file no-explicit-any\n// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates a Ref type. */\nexport function Ref(ref, options) {\n return Memory.Create({ ['~kind']: 'Ref' }, { $ref: ref }, options);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is TRef. */\nexport function IsRef(value) {\n return IsKind(value, 'Ref');\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from '../types/schema.mjs';\n// ------------------------------------------------------------------\n// Type\n// ------------------------------------------------------------------\n/** Creates a Generic type. */\nexport function Generic(parameters, expression) {\n return Memory.Create({ '~kind': 'Generic' }, { type: 'generic', parameters, expression });\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is a TGeneric. */\nexport function IsGeneric(value) {\n return IsKind(value, 'Generic');\n}\n","// deno-fmt-ignore-file\n// deno-lint-ignore-file \nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates a Any type. */\nexport function Any(options) {\n return Memory.Create({ ['~kind']: 'Any' }, {}, options);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is a TAny. */\nexport function IsAny(value) {\n return IsKind(value, 'Any');\n}\n","// deno-lint-ignore-file ban-types\n// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\n// ------------------------------------------------------------------\n// Pattern\n// ------------------------------------------------------------------\nexport const NeverPattern = '(?!)';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates a Never type. */\nexport function Never(options) {\n return Memory.Create({ '~kind': 'Never' }, { not: {} }, options);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is TNever. */\nexport function IsNever(value) {\n return IsKind(value, 'Never');\n}\n","// deno-fmt-ignore-file\nimport { Deferred } from '../types/deferred.mjs';\nimport { AddOptionalAction } from '../engine/optional/instantiate_add.mjs';\n/** Creates a deferred AddOptional action. */\nexport function AddOptionalDeferred(type, options = {}) {\n return Deferred('AddOptional', [type], options);\n}\n/** Applies an AddOptional action to a type. */\nexport function AddOptional(type, options = {}) {\n return AddOptionalAction(type, options);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema } from './schema.mjs';\nimport { AddOptional } from '../action/_add_optional.mjs';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Applies an Optional modifier to the given type. */\nexport function Optional(type) {\n return AddOptional(type);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is TOptional */\nexport function IsOptional(value) {\n return IsSchema(value) && Guard.HasPropertyKey(value, '~optional');\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsOptional } from './_optional.mjs';\n/** Creates a RequiredArray derived from the given TProperties value. */\nexport function RequiredArray(properties) {\n return Guard.Keys(properties).filter((key) => !IsOptional(properties[key]));\n}\n/** Extracts a tuple of keys from a TProperties value. */\nexport function PropertyKeys(properties) {\n return Guard.Keys(properties);\n}\n/** Extracts a tuple of property values from a TProperties value. */\nexport function PropertyValues(properties) {\n return Guard.Values(properties);\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\nimport { RequiredArray } from './properties.mjs';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates an Object type. */\nexport function _Object_(properties, options = {}) {\n const requiredKeys = RequiredArray(properties);\n const required = requiredKeys.length > 0 ? { required: requiredKeys } : {};\n return Memory.Create({ '~kind': 'Object' }, { type: 'object', ...required, properties }, options);\n}\nexport { _Object_ as Object }; // Prevent Collision With Global Scope\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is TObject. */\nexport function IsObject(value) {\n return IsKind(value, 'Object');\n}\n// ------------------------------------------------------------------\n// Options\n// ------------------------------------------------------------------\n/** Extracts options from a TObject. */\nexport function ObjectOptions(type) {\n return Memory.Discard(type, ['~kind', 'type', 'properties', 'required']);\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates an Unknown type. */\nexport function Unknown(options) {\n return Memory.Create({ ['~kind']: 'Unknown' }, {}, options);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is TUnknown. */\nexport function IsUnknown(value) {\n return IsKind(value, 'Unknown');\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates a Cyclic type. */\nexport function Cyclic($defs, $ref, options) {\n // $defs require an $id per definition to enable Ajv to resolve correctly\n const defs = Guard.Keys($defs).reduce((result, key) => {\n return { ...result, [key]: Memory.Update($defs[key], {}, { $id: key }) };\n }, {});\n return Memory.Create({ ['~kind']: 'Cyclic' }, { $defs: defs, $ref }, options);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is a TCyclic. */\nexport function IsCyclic(value) {\n return IsKind(value, 'Cyclic');\n}\n// ------------------------------------------------------------------\n// Options\n// ------------------------------------------------------------------\n/** Extracts options from a TCyclic. */\nexport function CyclicOptions(type) {\n return Memory.Discard(type, ['~kind', '$defs', '$ref']);\n}\n","// deno-fmt-ignore-file\n// deno-lint-ignore-file \nimport { Guard } from '../../guard/index.mjs';\nimport { Memory } from '../../system/memory/index.mjs';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates a Unsafe type. */\nexport function Unsafe(schema) {\n return Memory.Update(schema, { ['~unsafe']: null }, {});\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is TUnsafe. */\nexport function IsUnsafe(value) {\n return Guard.IsObjectNotArray(value)\n && Guard.HasPropertyKey(value, '~unsafe')\n && Guard.IsNull(value['~unsafe']);\n}\n","/**\n * Match arguments for overloaded functions that use the `...args: unknown[]` pattern. Arguments\n * are parsed using argument length only.\n */\nexport function Match(args, match) {\n return (match[args.length]?.(...args) ?? (() => {\n throw Error('Invalid Arguments');\n })());\n}\n","// deno-fmt-ignore-file\nimport { Arguments } from '../../system/arguments/index.mjs';\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from '../types/schema.mjs';\nimport { Unknown } from '../types/unknown.mjs';\n/** Creates an Infer instruction. */\nexport function Infer(...args) {\n const [name, extends_] = Arguments.Match(args, {\n 2: (name, extends_) => [name, extends_, extends_],\n 1: (name) => [name, Unknown(), Unknown()],\n });\n return Memory.Create({ ['~kind']: 'Infer' }, { type: 'infer', name, extends: extends_ }, {});\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is TInfer. */\nexport function IsInfer(value) {\n return IsKind(value, 'Infer');\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates a Dependent type */\nexport function Dependent(if_, then_, else_, options = {}) {\n return Memory.Create({ '~kind': 'Dependent' }, { if: if_, then: then_, else: else_ }, options);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is TDependent. */\nexport function IsDependent(value) {\n return IsKind(value, 'Dependent');\n}\n// ------------------------------------------------------------------\n// Options\n// ------------------------------------------------------------------\n/** Extracts options from a IsDependent. */\nexport function DependentOptions(type) {\n return Memory.Discard(type, ['~kind', 'if', 'then', 'else']);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nexport function IsTypeScriptEnumLike(value) {\n return Guard.IsObjectNotArray(value);\n}\nexport function TypeScriptEnumToEnumValues(type) {\n const keys = Guard.Keys(type).filter((key) => isNaN(key));\n return keys.reduce((result, key) => [...result, type[key]], []);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\nimport { IsTypeScriptEnumLike } from '../engine/enum/typescript_enum_to_enum_values.mjs';\nimport { TypeScriptEnumToEnumValues } from '../engine/enum/typescript_enum_to_enum_values.mjs';\n/** Returns true if the given value is a EnumValue */\nexport function IsEnumValue(value) {\n return Guard.IsString(value) || Guard.IsNumber(value);\n}\n/** Creates an Enum type. */\nexport function Enum(value, options) {\n const values = IsTypeScriptEnumLike(value) ? TypeScriptEnumToEnumValues(value) : value;\n return Memory.Create({ '~kind': 'Enum' }, { enum: values }, options);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is a TEnum. */\nexport function IsEnum(value) {\n return IsKind(value, 'Enum');\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates a Intersect type. */\nexport function Intersect(types, options = {}) {\n return Memory.Create({ '~kind': 'Intersect' }, { allOf: types }, options);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is TIntersect. */\nexport function IsIntersect(value) {\n return IsKind(value, 'Intersect');\n}\n// ------------------------------------------------------------------\n// Options\n// ------------------------------------------------------------------\n/** Extracts options from a TIntersect. */\nexport function IntersectOptions(type) {\n return Memory.Discard(type, ['~kind', 'allOf']);\n}\n","// deno-coverage-ignore-start - unreachable by definition\n/** Used for unreachable logic */\nexport function Unreachable() {\n throw new Error('Unreachable');\n}\n// deno-coverage-ignore-stop\n","// deno-fmt-ignore-file\nimport { Unreachable } from '../unreachable/index.mjs';\nimport { Guard, GlobalsGuard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// InstanceKeys\n//\n// Retrieves all enumerable and non-enumerable own property keys \n// and inherited prototype keys (excluding symbols and the 'constructor') \n// from an object instance.\n//\n// This function is useful for differentiating between class instances \n// based on their structural keys rather than relying on the \n// constructor name. It provides a more reliable structural comparison \n// by capturing both own and prototype properties.\n//\n// ------------------------------------------------------------------\nfunction InstanceKeys(value) {\n const propertyKeys = new Set();\n let current = value;\n while (current && current !== Object.prototype) {\n for (const key of Reflect.ownKeys(current)) {\n if (key !== 'constructor' && typeof key !== 'symbol')\n propertyKeys.add(key);\n }\n current = Object.getPrototypeOf(current);\n }\n return [...propertyKeys];\n}\n// ------------------------------------------------------------------\n// IsIEEE754\n//\n// TypeBox guards do not consider +/- Infinity or NaN as valid\n// numbers, but they are valid IEEE754 numbers. We use a special\n// guard to ensure these numbers are considered for hashing.\n//\n// ------------------------------------------------------------------\nfunction IsIEEE754(value) {\n return typeof value === 'number';\n}\n// ------------------------------------------------------------------\n// ByteMarker\n// ------------------------------------------------------------------\nvar ByteMarker;\n(function (ByteMarker) {\n ByteMarker[ByteMarker[\"Array\"] = 0] = \"Array\";\n ByteMarker[ByteMarker[\"BigInt\"] = 1] = \"BigInt\";\n ByteMarker[ByteMarker[\"Boolean\"] = 2] = \"Boolean\";\n ByteMarker[ByteMarker[\"Date\"] = 3] = \"Date\";\n ByteMarker[ByteMarker[\"Constructor\"] = 4] = \"Constructor\";\n ByteMarker[ByteMarker[\"Function\"] = 5] = \"Function\";\n ByteMarker[ByteMarker[\"Null\"] = 6] = \"Null\";\n ByteMarker[ByteMarker[\"Number\"] = 7] = \"Number\";\n ByteMarker[ByteMarker[\"Object\"] = 8] = \"Object\";\n ByteMarker[ByteMarker[\"RegExp\"] = 9] = \"RegExp\";\n ByteMarker[ByteMarker[\"String\"] = 10] = \"String\";\n ByteMarker[ByteMarker[\"Symbol\"] = 11] = \"Symbol\";\n ByteMarker[ByteMarker[\"TypeArray\"] = 12] = \"TypeArray\";\n ByteMarker[ByteMarker[\"Undefined\"] = 13] = \"Undefined\";\n})(ByteMarker || (ByteMarker = {}));\n// ------------------------------------------------------------------\n// State\n// ------------------------------------------------------------------\nlet Accumulator = BigInt('14695981039346656037');\nconst [Prime, Size] = [BigInt('1099511628211'), BigInt('18446744073709551616' /* 2 ^ 64 */)];\nconst Bytes = Array.from({ length: 256 }).map((_, i) => BigInt(i));\nconst F64 = new Float64Array(1);\nconst F64In = new DataView(F64.buffer);\nconst F64Out = new Uint8Array(F64.buffer);\n// ------------------------------------------------------------------\n// Operation\n// ------------------------------------------------------------------\nfunction FNV1A64_OP(byte) {\n Accumulator = Accumulator ^ Bytes[byte];\n Accumulator = (Accumulator * Prime) % Size;\n}\n// ------------------------------------------------------------------\n// Array\n// ------------------------------------------------------------------\nfunction FromArray(value) {\n FNV1A64_OP(ByteMarker.Array);\n for (const item of value) {\n FromValue(item);\n }\n}\n// ------------------------------------------------------------------\n// BigInt\n// ------------------------------------------------------------------\nfunction FromBigInt(value) {\n FNV1A64_OP(ByteMarker.BigInt);\n F64In.setBigInt64(0, value);\n for (const byte of F64Out) {\n FNV1A64_OP(byte);\n }\n}\n// ------------------------------------------------------------------\n// Boolean\n// ------------------------------------------------------------------\nfunction FromBoolean(value) {\n FNV1A64_OP(ByteMarker.Boolean);\n FNV1A64_OP(value ? 1 : 0);\n}\n// ------------------------------------------------------------------\n// Constructor\n// ------------------------------------------------------------------\nfunction FromConstructor(value) {\n FNV1A64_OP(ByteMarker.Constructor);\n FromValue(value.toString());\n}\n// ------------------------------------------------------------------\n// Date\n// ------------------------------------------------------------------\nfunction FromDate(value) {\n FNV1A64_OP(ByteMarker.Date);\n FromValue(value.getTime());\n}\n// ------------------------------------------------------------------\n// Function\n// ------------------------------------------------------------------\nfunction FromFunction(value) {\n FNV1A64_OP(ByteMarker.Function);\n FromValue(value.toString());\n}\n// ------------------------------------------------------------------\n// Null\n// ------------------------------------------------------------------\nfunction FromNull(_value) {\n FNV1A64_OP(ByteMarker.Null);\n}\n// ------------------------------------------------------------------\n// Number | IEEE754\n// ------------------------------------------------------------------\nfunction FromNumber(value) {\n FNV1A64_OP(ByteMarker.Number);\n F64In.setFloat64(0, value, true /* little-endian */);\n for (const byte of F64Out) {\n FNV1A64_OP(byte);\n }\n}\n// ------------------------------------------------------------------\n// Object\n// ------------------------------------------------------------------\nfunction FromObject(value) {\n FNV1A64_OP(ByteMarker.Object);\n for (const key of InstanceKeys(value).sort()) {\n FromValue(key);\n FromValue(value[key]);\n }\n}\n// ------------------------------------------------------------------\n// RegExp\n// ------------------------------------------------------------------\nfunction FromRegExp(value) {\n FNV1A64_OP(ByteMarker.RegExp);\n FromString(value.toString());\n}\n// ------------------------------------------------------------------\n// String\n// ------------------------------------------------------------------\nconst encoder = new TextEncoder();\nfunction FromString(value) {\n FNV1A64_OP(ByteMarker.String);\n for (const byte of encoder.encode(value)) {\n FNV1A64_OP(byte);\n }\n}\n// ------------------------------------------------------------------\n// Symbol\n// ------------------------------------------------------------------\nfunction FromSymbol(value) {\n FNV1A64_OP(ByteMarker.Symbol);\n FromValue(value.toString());\n}\n// ------------------------------------------------------------------\n// TypeArray\n// ------------------------------------------------------------------\nfunction FromTypeArray(value) {\n FNV1A64_OP(ByteMarker.TypeArray);\n const buffer = new Uint8Array(value.buffer);\n for (let i = 0; i < buffer.length; i++) {\n FNV1A64_OP(buffer[i]);\n }\n}\n// ------------------------------------------------------------------\n// Undefined\n// ------------------------------------------------------------------\nfunction FromUndefined(_value) {\n return FNV1A64_OP(ByteMarker.Undefined);\n}\n// ------------------------------------------------------------------\n// Hash\n//\n// deno-coverage-ignore-start - unreachable\n//\n// This function should all JavaScript values so we can't reach the\n// fall-through. We use Unreachable to assert that no values pass\n// through. We will need to handle these should they arise.\n//\n// ------------------------------------------------------------------\nfunction FromValue(value) {\n return (GlobalsGuard.IsTypeArray(value) ? FromTypeArray(value) :\n GlobalsGuard.IsDate(value) ? FromDate(value) :\n GlobalsGuard.IsRegExp(value) ? FromRegExp(value) :\n GlobalsGuard.IsBoolean(value) ? FromBoolean(value.valueOf()) :\n GlobalsGuard.IsString(value) ? FromString(value.valueOf()) :\n GlobalsGuard.IsNumber(value) ? FromNumber(value.valueOf()) :\n IsIEEE754(value) ? FromNumber(value) :\n Guard.IsArray(value) ? FromArray(value) :\n Guard.IsBoolean(value) ? FromBoolean(value) :\n Guard.IsBigInt(value) ? FromBigInt(value) :\n Guard.IsConstructor(value) ? FromConstructor(value) :\n Guard.IsNull(value) ? FromNull(value) :\n Guard.IsObject(value) ? FromObject(value) :\n Guard.IsString(value) ? FromString(value) :\n Guard.IsSymbol(value) ? FromSymbol(value) :\n Guard.IsUndefined(value) ? FromUndefined(value) :\n Guard.IsFunction(value) ? FromFunction(value) :\n Unreachable());\n}\n// deno-coverage-ignore-stop\n// ------------------------------------------------------------------\n// Hash\n// ------------------------------------------------------------------\n/** Generates a FNV1A-64 non cryptographic hash of the given value */\nexport function HashCode(value) {\n Accumulator = BigInt('14695981039346656037');\n FromValue(value);\n return Accumulator;\n}\n/** Generates a FNV1A-64 non cryptographic hash of the given value */\nexport function Hash(value) {\n return HashCode(value).toString(16).padStart(16, '0');\n}\n","// deno-fmt-ignore-file\n/** en_US: English (United States) - ISO 639-1 language code 'en' with ISO 3166-1 alpha-2 country code 'US' for United States. */\nexport function en_US(error) {\n switch (error.keyword) {\n case 'additionalProperties': return 'must not have additional properties';\n case 'anyOf': return 'must match a schema in anyOf';\n case 'boolean': return 'schema is false';\n case 'const': return 'must be equal to constant';\n case 'contains': return 'must contain at least 1 valid item';\n case 'dependencies': return `must have properties ${error.params.dependencies.join(', ')} when property ${error.params.property} is present`;\n case 'dependentRequired': return `must have properties ${error.params.dependencies.join(', ')} when property ${error.params.property} is present`;\n case 'enum': return 'must be equal to one of the allowed values';\n case 'exclusiveMaximum': return `must be ${error.params.comparison} ${error.params.limit}`;\n case 'exclusiveMinimum': return `must be ${error.params.comparison} ${error.params.limit}`;\n case 'format': return `must match format \"${error.params.format}\"`;\n case 'if': return `must match \"${error.params.failingKeyword}\" schema`;\n case 'maxItems': return `must not have more than ${error.params.limit} items`;\n case 'maxLength': return `must not have more than ${error.params.limit} characters`;\n case 'maxProperties': return `must not have more than ${error.params.limit} properties`;\n case 'maximum': return `must be ${error.params.comparison} ${error.params.limit}`;\n case 'minItems': return `must not have fewer than ${error.params.limit} items`;\n case 'minLength': return `must not have fewer than ${error.params.limit} characters`;\n case 'minProperties': return `must not have fewer than ${error.params.limit} properties`;\n case 'minimum': return `must be ${error.params.comparison} ${error.params.limit}`;\n case 'multipleOf': return `must be multiple of ${error.params.multipleOf}`;\n case 'not': return 'must not be valid';\n case 'oneOf': return 'must match exactly one schema in oneOf';\n case 'pattern': return `must match pattern \"${error.params.pattern}\"`;\n case 'propertyNames': return `property names ${error.params.propertyNames.join(', ')} are invalid`;\n case 'required': return `must have required properties ${error.params.requiredProperties.join(', ')}`;\n case 'type': return typeof error.params.type === 'string' ? `must be ${error.params.type}` : `must be either ${error.params.type.join(' or ')}`;\n case 'unevaluatedItems': return 'must not have unevaluated items';\n case 'unevaluatedProperties': return 'must not have unevaluated properties';\n case 'uniqueItems': return `must not have duplicate items`;\n case '~refine': return error.params.message;\n // deno-coverage-ignore - unreachable\n default: return 'an unknown validation error occurred';\n }\n}\n","// deno-fmt-ignore-file\nimport { en_US } from './en_US.mjs';\nlet locale = en_US;\n/** Sets the locale */\nexport function Set(callback) {\n locale = callback;\n}\n/** Gets the locale */\nexport function Get() {\n return locale;\n}\n/** Resets the locale to `en_US` */\nexport function Reset() {\n Set(en_US);\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../system/index.mjs';\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\nexport class EncodeBuilder {\n constructor(type, decode) {\n this.type = type;\n this.decode = decode;\n }\n Encode(callback) {\n const type = this.type;\n const decode = IsCodec(type) ? (value) => this.decode(type['~codec'].decode(value)) : this.decode;\n const encode = IsCodec(type) ? (value) => type['~codec'].encode(callback(value)) : callback;\n const codec = { decode, encode };\n return Memory.Update(this.type, { '~codec': codec }, {});\n }\n}\nexport class DecodeBuilder {\n constructor(type) {\n this.type = type;\n }\n Decode(callback) {\n return new EncodeBuilder(this.type, callback);\n }\n}\n// ------------------------------------------------------------------\n// Bidirectional\n// ------------------------------------------------------------------\n/** Creates a bi-directional Codec. Codec functions are called on Value.Decode and Value.Encode. */\nexport function Codec(type) {\n return new DecodeBuilder(type);\n}\n// ------------------------------------------------------------------\n// Unidirectional\n// ------------------------------------------------------------------\n/** Createsa uni-directional Codec with Decode only. The Decode function is called on Value.Decode */\nexport function Decode(type, callback) {\n return Codec(type).Decode(callback).Encode(() => {\n throw Error('Encode not implemented');\n });\n}\n/** Creates a uni-directional Codec with Encode only. The Encode function is called on Value.Encode */\nexport function Encode(type, callback) {\n return Codec(type).Decode(() => {\n throw Error('Decode not implemented');\n }).Encode(callback);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\nexport function IsCodec(value) {\n return IsSchema(value) &&\n Guard.HasPropertyKey(value, '~codec') &&\n Guard.IsObject(value['~codec']) &&\n Guard.HasPropertyKey(value['~codec'], 'encode') &&\n Guard.HasPropertyKey(value['~codec'], 'decode');\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema } from './schema.mjs';\nimport { AddImmutable } from '../action/_add_immutable.mjs';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Applies an Immutable modifier to the given type. */\nexport function Immutable(type) {\n return AddImmutable(type);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is a TImmutable */\nexport function IsImmutable(value) {\n return IsSchema(value) && Guard.HasPropertyKey(value, '~immutable');\n}\n","// deno-fmt-ignore-file\nimport { Deferred } from '../types/deferred.mjs';\nimport { AddReadonlyAction } from '../engine/readonly/instantiate_add.mjs';\n/** Creates a deferred AddReadonly action. */\nexport function AddReadonlyDeferred(type, options = {}) {\n return Deferred('AddReadonly', [type], options);\n}\n/** Applies an AddReadonly action to a type. */\nexport function AddReadonly(type, options = {}) {\n return AddReadonlyAction(type, options);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema } from './schema.mjs';\nimport { AddReadonly } from '../action/_add_readonly.mjs';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Applies an Readonly property modifier to the given type. */\nexport function Readonly(type) {\n return AddReadonly(type);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is a TReadonly */\nexport function IsReadonly(value) {\n return IsSchema(value) && Guard.HasPropertyKey(value, '~readonly');\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\n// ------------------------------------------------------------------\n// Pattern\n// ------------------------------------------------------------------\nexport const BigIntPattern = '-?(?:0|[1-9][0-9]*)n';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates a BigInt type. */\nexport function BigInt(options) {\n return Memory.Create({ '~kind': 'BigInt' }, { type: 'bigint' }, options);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is a TBigInt. */\nexport function IsBigInt(value) {\n return IsKind(value, 'BigInt');\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates a Boolean type. */\nexport function Boolean(options) {\n return Memory.Create({ '~kind': 'Boolean' }, { type: 'boolean' }, options);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is a TBoolean. */\nexport function IsBoolean(value) {\n return IsKind(value, 'Boolean');\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\n// ------------------------------------------------------------------\n// Pattern\n// ------------------------------------------------------------------\nexport const IntegerPattern = '-?(?:0|[1-9][0-9]*)';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates a Integer type. */\nexport function Integer(options) {\n return Memory.Create({ '~kind': 'Integer' }, { type: 'integer' }, options);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is TInteger. */\nexport function IsInteger(value) {\n return IsKind(value, 'Integer');\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { Guard } from '../../guard/index.mjs';\nimport { IsKind } from './schema.mjs';\n// ------------------------------------------------------------------\n// InvalidLiteralValue\n// ------------------------------------------------------------------\nexport class InvalidLiteralValue extends Error {\n constructor(value) {\n super(`Invalid Literal value`);\n Object.defineProperty(this, 'cause', {\n value: { value },\n writable: false,\n configurable: false,\n enumerable: false\n });\n }\n}\nexport function LiteralTypeName(value) {\n return (Guard.IsBigInt(value) ? 'bigint' :\n Guard.IsBoolean(value) ? 'boolean' :\n Guard.IsNumber(value) ? 'number' :\n Guard.IsString(value) ? 'string' :\n (() => { throw new InvalidLiteralValue(value); })());\n}\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates a Literal type. */\nexport function Literal(value, options) {\n return Memory.Create({ '~kind': 'Literal' }, { type: LiteralTypeName(value), const: value }, options);\n}\n// ------------------------------------------------------------------\n// Guards\n// ------------------------------------------------------------------\n/** Returns true if the given value is a TLiteralValue. */\nexport function IsLiteralValue(value) {\n return Guard.IsBigInt(value)\n || Guard.IsBoolean(value)\n || Guard.IsNumber(value)\n || Guard.IsString(value);\n}\n/** Returns true if the given value is TLiteral<bigint>. */\nexport function IsLiteralBigInt(value) {\n return IsLiteral(value) && Guard.IsBigInt(value.const);\n}\n/** Returns true if the given value is TLiteral<boolean>. */\nexport function IsLiteralBoolean(value) {\n return IsLiteral(value) && Guard.IsBoolean(value.const);\n}\n/** Returns true if the given value is TLiteral<number>. */\nexport function IsLiteralNumber(value) {\n return IsLiteral(value) && Guard.IsNumber(value.const);\n}\n/** Returns true if the given value is TLiteral<string>. */\nexport function IsLiteralString(value) {\n return IsLiteral(value) && Guard.IsString(value.const);\n}\n/** Returns true if the given value is TLiteral. */\nexport function IsLiteral(value) {\n return IsKind(value, 'Literal');\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates a Null type. */\nexport function Null(options) {\n return Memory.Create({ '~kind': 'Null' }, { type: 'null' }, options);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is TNull. */\nexport function IsNull(value) {\n return IsKind(value, 'Null');\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\n// ------------------------------------------------------------------\n// Pattern\n// ------------------------------------------------------------------\nexport const NumberPattern = '-?(?:0|[1-9][0-9]*)(?:\\\\.[0-9]+)?';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates a Number type. */\nexport function Number(options) {\n return Memory.Create({ '~kind': 'Number' }, { type: 'number' }, options);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is a TNumber. */\nexport function IsNumber(value) {\n return IsKind(value, 'Number');\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates a Symbol type. */\nexport function Symbol(options) {\n return Memory.Create({ '~kind': 'Symbol' }, { type: 'symbol' }, options);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is TSymbol. */\nexport function IsSymbol(value) {\n return IsKind(value, 'Symbol');\n}\n","// deno-lint-ignore-file\n// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\n// ------------------------------------------------------------------\n// StringPattern\n// ------------------------------------------------------------------\nexport const StringPattern = '.*';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates a String type. */\nexport function String(options) {\n return Memory.Create({ '~kind': 'String' }, { type: 'string' }, options);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is TString. */\nexport function IsString(value) {\n return IsKind(value, 'String');\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates a Union type. */\nexport function Union(anyOf, options = {}) {\n return Memory.Create({ '~kind': 'Union' }, { anyOf }, options);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is TUnion. */\nexport function IsUnion(value) {\n return IsKind(value, 'Union');\n}\n// ------------------------------------------------------------------\n// Options\n// ------------------------------------------------------------------\n/** Extracts options from a TUnion. */\nexport function UnionOptions(type) {\n return Memory.Discard(type, ['~kind', 'anyOf']);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { Pattern } from '../../script/parser.mjs';\n/** Parses a Pattern into a sequence of TemplateLiteral types. A result of [] indicates failure to parse. */\nexport function ParsePatternIntoTypes(pattern) {\n const parsed = Pattern(pattern);\n const result = Guard.IsEqual(parsed.length, 2)\n ? parsed[0]\n : []; // Failed to Parse\n return result;\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { IsLiteral } from '../../types/literal.mjs';\nimport { IsUnion } from '../../types/union.mjs';\nfunction FromLiteral(_value) {\n return true;\n}\nfunction FromTypesReduce(types) {\n return Guard.ShiftLeft(types, (left, right) => FromType(left)\n ? FromTypesReduce(right)\n : false, () => true);\n}\nfunction FromTypes(types) {\n const result = Guard.IsEqual(types.length, 0) ? false : FromTypesReduce(types);\n return result;\n}\nfunction FromType(type) {\n return (IsUnion(type) ? FromTypes(type.anyOf) :\n IsLiteral(type) ? FromLiteral(type.const) :\n false);\n}\n/** Returns true if the given TemplateLiteral types yields a finite variant set */\nexport function IsTemplateLiteralFinite(types) {\n const result = FromTypes(types);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nexport function TemplateLiteralCreate(pattern) {\n return Memory.Create({ ['~kind']: 'TemplateLiteral' }, { type: 'string', pattern }, {});\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { Unreachable } from '../../../system/unreachable/index.mjs';\nimport { Literal, IsLiteral } from '../../types/literal.mjs';\nimport { String } from '../../types/string.mjs';\nimport { IsTemplateLiteral } from '../../types/template_literal.mjs';\nimport { Union, IsUnion } from '../../types/union.mjs';\nimport { ParsePatternIntoTypes } from '../patterns/pattern.mjs';\nimport { IsTemplateLiteralFinite } from './is_finite.mjs';\nimport { TemplateLiteralCreate } from './create.mjs';\nfunction FromLiteralPush(variants, value, result = []) {\n return Guard.ShiftLeft(variants, (left, right) => FromLiteralPush(right, value, [...result, `${left}${value}`]), () => result);\n}\nfunction FromLiteral(variants, value) {\n return (Guard.IsEqual(variants.length, 0) ? [`${value}`] : FromLiteralPush(variants, value));\n}\nfunction FromUnion(variants, types, result = []) {\n return Guard.ShiftLeft(types, (left, right) => FromUnion(variants, right, [...result, ...FromType(variants, left)]), () => result);\n}\n// ------------------------------------------------------------------\n// deno-coverage-ignore-start - symmetric unreachable | internal\n// \n// Parsed TemplateLiteral patterns only yield Literal or Union but\n// we keep the fall-through to assert that no other types can reach \n// here without error.\n//\n// ------------------------------------------------------------------\nfunction FromType(variants, type) {\n const result = (IsUnion(type) ? FromUnion(variants, type.anyOf) :\n IsLiteral(type) ? FromLiteral(variants, type.const) :\n Unreachable() // []\n );\n return result;\n}\nfunction DecodeFromSpan(variants, types) {\n return Guard.ShiftLeft(types, (left, right) => DecodeFromSpan(FromType(variants, left), right), () => variants);\n}\nfunction VariantsToLiterals(variants) {\n return variants.map(variant => Literal(variant));\n}\nfunction DecodeTypesAsUnion(types) {\n const variants = DecodeFromSpan([], types);\n const literals = VariantsToLiterals(variants);\n const result = Union(literals);\n return result;\n}\n// ------------------------------------------------------------------\n// deno-coverage-ignore-start - internal\n// \n// Cannot invoke the 0-length condition as the TemplateLiteral \n// parsers always return at least 1 TLiteral or TUnion. We would \n// return a empty string TLiteral for this case, but will use \n// Unreachable to catch parse inputs that trigger 0-length.\n//\n// ------------------------------------------------------------------\nfunction DecodeTypes(types) {\n return (Guard.IsEqual(types.length, 0) ? Unreachable() : // Literal('') :\n Guard.IsEqual(types.length, 1) && IsLiteral(types[0]) ? types[0] :\n DecodeTypesAsUnion(types));\n}\n/**\n * (Internal) Decodes a TemplateLiteral pattern into a Type. This function is unsafe. Decoding a non-finite\n * TemplateLiteral pattern may produce another TemplateLiteral pattern. During enumeration, this\n * TemplateLiteral -> TemplateLiteral behavior can cause a StackOverflow. A better in-flight template-literal\n * decoding algorithm is needed. (for review)\n */\nexport function TemplateLiteralDecodeUnsafe(pattern) {\n const types = ParsePatternIntoTypes(pattern);\n const result = Guard.IsEqual(types.length, 0) // Failed to Parse | IsTemplateLiteralPattern\n ? String() // ... Pattern cannot be typed, so discard\n : IsTemplateLiteralFinite(types)\n ? DecodeTypes(types)\n : TemplateLiteralCreate(pattern);\n return result;\n}\n/** Decodes a TemplateLiteral pattern but returns TString if the pattern in non-finite. */\nexport function TemplateLiteralDecode(pattern) {\n const decoded = TemplateLiteralDecodeUnsafe(pattern);\n const result = IsTemplateLiteral(decoded) ? String() : decoded;\n return result;\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nexport function CreateRecord(key, value) {\n const type = 'object';\n const patternProperties = { [key]: value };\n return Memory.Create({ ['~kind']: 'Record' }, { type, patternProperties });\n}\n","// deno-fmt-ignore-file\nimport { StringKey } from '../../types/record.mjs';\nimport { CreateRecord } from './record_create.mjs';\nexport function FromAnyKey(value) {\n return CreateRecord(StringKey, value);\n}\n","// deno-fmt-ignore-file\nimport { Object } from '../../types/object.mjs';\nexport function FromBooleanKey(value) {\n return Object({ true: value, false: value });\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates a Tuple type. */\nexport function Tuple(types, options = {}) {\n const [items, minItems, additionalItems] = [types, types.length, false];\n return Memory.Create({ ['~kind']: 'Tuple' }, { type: 'array', additionalItems, items, minItems }, options);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is TTuple. */\nexport function IsTuple(value) {\n return IsKind(value, 'Tuple');\n}\n// ------------------------------------------------------------------\n// Options\n// ------------------------------------------------------------------\n/** Extracts options from a TTuple. */\nexport function TupleOptions(type) {\n return Memory.Discard(type, ['~kind', 'type', 'items', 'minItems', 'additionalItems']);\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { InstantiateType } from '../instantiate.mjs';\nfunction RemoveReadonlyOperation(type) {\n return Memory.Discard(type, ['~readonly']);\n}\nexport function RemoveReadonlyAction(type, options) {\n const result = Memory.Update(RemoveReadonlyOperation(type), {}, options);\n return result;\n}\nexport function RemoveReadonlyInstantiate(context, state, type, options) {\n const instantiatedType = InstantiateType(context, state, type);\n return RemoveReadonlyAction(instantiatedType, options);\n}\n","// deno-fmt-ignore-file\nimport { Deferred } from '../types/deferred.mjs';\nimport { RemoveReadonlyAction } from '../engine/readonly/instantiate_remove.mjs';\n/** Creates a deferred RemoveReadonly action. */\nexport function RemoveReadonlyDeferred(type, options = {}) {\n return Deferred('RemoveReadonly', [type], options);\n}\n/** Applies an RemoveReadonly action to a type. */\nexport function RemoveReadonly(type, options = {}) {\n return RemoveReadonlyAction(type, options);\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { InstantiateType } from '../instantiate.mjs';\nfunction RemoveOptionalOperation(type) {\n return Memory.Discard(type, ['~optional']);\n}\nexport function RemoveOptionalAction(type, options) {\n const result = Memory.Update(RemoveOptionalOperation(type), {}, options);\n return result;\n}\nexport function RemoveOptionalInstantiate(context, state, type, options) {\n const instantiatedType = InstantiateType(context, state, type);\n return RemoveOptionalAction(instantiatedType, options);\n}\n","// deno-fmt-ignore-file\nimport { Deferred } from '../types/deferred.mjs';\nimport { RemoveOptionalAction } from '../engine/optional/instantiate_remove.mjs';\n/** Creates a deferred RemoveOptional action. */\nexport function RemoveOptionalDeferred(type, options = {}) {\n return Deferred('RemoveOptional', [type], options);\n}\n/** Applies an RemoveOptional action to a type. */\nexport function RemoveOptional(type, options = {}) {\n return RemoveOptionalAction(type, options);\n}\n","// deno-lint-ignore-file ban-types\n// deno-fmt-ignore-file\nimport { Object } from '../../types/object.mjs';\nexport function TupleElementsToProperties(types) {\n const result = types.reduceRight((result, right, index) => {\n return { [index]: right, ...result };\n }, {});\n return result;\n}\nexport function TupleToObject(type) {\n const properties = TupleElementsToProperties(type.items);\n const result = Object(properties);\n return result;\n}\n","// deno-fmt-ignore-file\n// deno-lint-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { IsReadonly } from '../../types/_readonly.mjs';\nimport { IsOptional } from '../../types/_optional.mjs';\nimport { Object, IsObject } from '../../types/object.mjs';\nimport { Never } from '../../types/never.mjs';\nimport { IsTuple } from '../../types/tuple.mjs';\nimport { AddReadonly } from '../../action/_add_readonly.mjs';\nimport { AddOptional } from '../../action/_add_optional.mjs';\nimport { RemoveReadonly } from '../../action/_remove_readonly.mjs';\nimport { RemoveOptional } from '../../action/_remove_optional.mjs';\nimport { TupleElementsToProperties } from '../tuple/to_object.mjs';\nimport { EvaluateIntersect } from './evaluate.mjs';\n/** Returns true if the type is a valid operand to Composite. */\nexport function CanComposite(type) {\n return (IsObject(type) || IsTuple(type));\n}\nfunction IsReadonlyProperty(left, right) {\n return (IsReadonly(left) ? IsReadonly(right) ? true : false : false);\n}\nfunction IsOptionalProperty(left, right) {\n return (IsOptional(left) ? IsOptional(right) ? true : false : false);\n}\nfunction CompositeProperty(left, right) {\n const isReadonly = IsReadonlyProperty(left, right);\n const isOptional = IsOptionalProperty(left, right);\n const evaluated = EvaluateIntersect([left, right]);\n // Modifiers need to be discarded and re-applied\n const property = RemoveReadonly(RemoveOptional(evaluated));\n return (isReadonly && isOptional ? AddReadonly(AddOptional(property)) :\n isReadonly && !isOptional ? AddReadonly(property) :\n !isReadonly && isOptional ? AddOptional(property) :\n property);\n}\nfunction CompositePropertyKey(left, right, key) {\n return (key in left\n ? key in right ? CompositeProperty(left[key], right[key]) : left[key]\n : key in right ? right[key] : Never());\n}\nfunction CompositeProperties(left, right) {\n const keys = new Set([...Guard.Keys(left), ...Guard.Keys(right)]);\n const result = [...keys].reduce((result, key) => {\n return { ...result, [key]: CompositePropertyKey(left, right, key) };\n }, {});\n return result;\n}\nfunction GetProperties(type) {\n const result = (IsObject(type) ? type.properties :\n IsTuple(type) ? TupleElementsToProperties(type.items) :\n {});\n return result;\n}\nexport function Composite(left, right) {\n const leftProperties = GetProperties(left);\n const rightProperties = GetProperties(right);\n const properties = CompositeProperties(leftProperties, rightProperties);\n const result = Object(properties);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { IsAny } from '../../types/any.mjs';\nimport { Never, IsNever } from '../../types/never.mjs';\nimport { IsUnknown } from '../../types/unknown.mjs';\nimport { Compare, CompareResultLeftInside, CompareResultRightInside, CompareResultEqual } from './compare.mjs';\nimport { Composite, CanComposite } from './composite.mjs';\nfunction NarrowCompareRule(left, right) {\n const result = Compare(left, right);\n return (Guard.IsEqual(result, CompareResultLeftInside) ? left :\n Guard.IsEqual(result, CompareResultRightInside) ? right :\n Guard.IsEqual(result, CompareResultEqual) ? right :\n Never());\n}\nfunction NarrowCompositeRule(left, right) {\n const canCompositeLeft = CanComposite(left);\n const canCompositeRight = CanComposite(right);\n return (canCompositeLeft && canCompositeRight ? Composite(left, right) :\n canCompositeLeft && !canCompositeRight ? left :\n !canCompositeLeft && canCompositeRight ? right :\n NarrowCompareRule(left, right));\n}\nexport function Narrow(left, right) {\n return (IsNever(left) ? left :\n IsAny(left) ? left :\n IsUnknown(left) ? right :\n IsNever(right) ? right :\n IsAny(right) ? right :\n IsUnknown(right) ? left :\n NarrowCompositeRule(left, right));\n}\n","// deno-fmt-ignore-file\n// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { IsUnion } from '../../types/union.mjs';\nimport { Narrow } from './narrow.mjs';\nimport { EvaluateIntersect } from './evaluate.mjs';\nimport { EvaluateType } from './evaluate.mjs';\nfunction ShouldEvaluate(left, right) {\n const result = IsUnion(left) || IsUnion(right);\n return result;\n}\nfunction DistributeOperation(left, right) {\n const evaluatedLeft = EvaluateType(left);\n const evaluatedRight = EvaluateType(right);\n const shouldEvaluate = ShouldEvaluate(evaluatedLeft, evaluatedRight);\n const result = shouldEvaluate\n ? EvaluateIntersect([evaluatedLeft, evaluatedRight])\n : Narrow(evaluatedLeft, evaluatedRight);\n return result;\n}\nfunction DistributeType(type, types, result = []) {\n return Guard.ShiftLeft(types, (left, right) => DistributeType(type, right, [...result, DistributeOperation(left, type)]), () => Guard.IsEqual(result.length, 0)\n ? [type]\n : result);\n}\nfunction DistributeUnion(types, distribution, result = []) {\n return Guard.ShiftLeft(types, (left, right) => DistributeUnion(right, distribution, [...result, ...Distribute([left], distribution)]), () => result);\n}\nexport function Distribute(types, result = []) {\n return Guard.ShiftLeft(types, (left, right) => IsUnion(left)\n ? Distribute(right, DistributeUnion(left.anyOf, result))\n : Distribute(right, DistributeType(left, result)), () => result);\n}\n","// deno-lint-ignore-file ban-types\n// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { IsUnion } from '../../types/union.mjs';\nimport { Extends, ExtendsResult } from '../../extends/index.mjs';\nimport { EvaluateType } from '../evaluate/evaluate.mjs';\nimport { EvaluateUnion } from '../evaluate/evaluate.mjs';\nfunction ExcludeType(left, right) {\n const check = Extends({}, left, right);\n const result = ExtendsResult.IsExtendsTrueLike(check) ? [] : [left];\n return result;\n}\nfunction ExcludeUnion(left, right, result = []) {\n return Guard.ShiftLeft(left, (head, tail) => ExcludeUnion(tail, right, [...result, ...ExcludeType(head, right)]), () => result);\n}\nexport function ExcludeOperation(left, right) {\n const evaluated = EvaluateType(left);\n const canonical = IsUnion(evaluated) ? evaluated.anyOf : [evaluated];\n const remaining = ExcludeUnion(canonical, right);\n const result = EvaluateUnion(remaining);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { IsDependent } from '../../types/dependent.mjs';\nimport { IsEnum } from '../../types/enum.mjs';\nimport { IsIntersect } from '../../types/intersect.mjs';\nimport { Literal } from '../../types/literal.mjs';\nimport { Never } from '../../types/never.mjs';\nimport { IsTemplateLiteral } from '../../types/template_literal.mjs';\nimport { Union, IsUnion } from '../../types/union.mjs';\n// ------------------------------------------------------------------\n// Infrastructure\n// ------------------------------------------------------------------\nimport { Distribute } from './distribute.mjs';\nimport { Broaden } from './broaden.mjs';\nimport { ExcludeOperation } from '../exclude/operation.mjs';\nimport { TemplateLiteralDecode } from '../template_literal/decode.mjs';\nexport function EvaluateDependent(if_, then_, else_) {\n const intersected = EvaluateIntersect([if_, then_]);\n const excluded = ExcludeOperation(else_, if_);\n const result = EvaluateUnion([intersected, excluded]);\n return result;\n}\nexport function EvaluateEnum(values, result = []) {\n return Guard.ShiftLeft(values, (left, right) => EvaluateEnum(right, [...result, Literal(left)]), () => EvaluateUnion(result));\n}\nexport function EvaluateIntersect(types) {\n const distribution = Distribute(types);\n const broadend = Broaden(distribution);\n const result = EvaluateUnion(broadend);\n return result;\n}\nexport function EvaluateTemplateLiteral(pattern) {\n const evaluated = TemplateLiteralDecode(pattern);\n const result = EvaluateType(evaluated);\n return result;\n}\nexport function EvaluateUnion(types) {\n const broadend = Broaden(types);\n const result = EvaluateUnionFast(broadend);\n return result;\n}\nexport function EvaluateType(type) {\n const result = (IsDependent(type) ? EvaluateDependent(type.if, type.then, type.else) :\n IsEnum(type) ? EvaluateEnum(type.enum) :\n IsIntersect(type) ? EvaluateIntersect(type.allOf) :\n IsTemplateLiteral(type) ? EvaluateTemplateLiteral(type.pattern) :\n IsUnion(type) ? EvaluateUnion(type.anyOf) :\n type);\n return result;\n}\nexport function EvaluateUnionFast(types) {\n const result = (Guard.IsEqual(types.length, 1) ? types[0] :\n Guard.IsEqual(types.length, 0) ? Never() :\n Union(types));\n return result;\n}\n","// deno-fmt-ignore-file\nimport { FromKey } from './from_key.mjs';\nimport { EvaluateEnum } from '../evaluate/evaluate.mjs';\nexport function FromEnumKey(values, value) {\n const unionKey = EvaluateEnum(values);\n const result = FromKey(unionKey, value);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { IntegerKey } from '../../types/record.mjs';\nimport { CreateRecord } from './record_create.mjs';\nexport function FromIntegerKey(_key, value) {\n const result = CreateRecord(IntegerKey, value);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { EvaluateIntersect } from '../evaluate/evaluate.mjs';\nimport { FromKey } from './from_key.mjs';\nexport function FromIntersectKey(types, value) {\n const evaluatedKey = EvaluateIntersect(types);\n const result = FromKey(evaluatedKey, value);\n return result;\n}\n","// deno-fmt-ignore-file\n// deno-lint-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { Object } from '../../types/object.mjs';\nexport function FromLiteralKey(key, value) {\n return (Guard.IsString(key) || Guard.IsNumber(key) ? Object({ [key]: value }) :\n Guard.IsEqual(key, false) ? Object({ false: value }) :\n Guard.IsEqual(key, true) ? Object({ true: value }) :\n Object({}));\n}\n","// deno-fmt-ignore-file\nimport { NumberKey } from '../../types/record.mjs';\nimport { CreateRecord } from './record_create.mjs';\nexport function FromNumberKey(_key, value) {\n const result = CreateRecord(NumberKey, value);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { StringKey } from '../../types/record.mjs';\nimport { CreateRecord } from './record_create.mjs';\nexport function FromStringKey(key, value) {\n // special case: override for string with raw pattern. We do not observe inference for the\n // raw string patterns, but as a pattern (assuming non-never) is in the set of string, we\n // allow overriding. Callers will need to narrow to the pattern manually. TB legacy.\n return (Guard.HasPropertyKey(key, 'pattern') && (Guard.IsString(key.pattern) || key.pattern instanceof RegExp)\n ? CreateRecord(key.pattern.toString(), value)\n : CreateRecord(StringKey, value));\n}\n","// deno-fmt-ignore-file\nimport { FromKey } from './from_key.mjs';\nimport { ParsePatternIntoTypes } from '../patterns/pattern.mjs';\nimport { IsTemplateLiteralFinite } from '../template_literal/is_finite.mjs';\nimport { EvaluateTemplateLiteral } from '../evaluate/evaluate.mjs';\nimport { CreateRecord } from './record_create.mjs';\nexport function FromTemplateKey(pattern, value) {\n const types = ParsePatternIntoTypes(pattern);\n const finite = IsTemplateLiteralFinite(types);\n const result = finite ? FromKey(EvaluateTemplateLiteral(pattern), value) : CreateRecord(pattern, value);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { IsUnion } from '../../types/union.mjs';\nfunction FlattenType(type) {\n const result = IsUnion(type) ? Flatten(type.anyOf) : [type];\n return result;\n}\nexport function Flatten(types, result = []) {\n return Guard.ShiftLeft(types, (left, right) => Flatten(right, [...result, ...FlattenType(left)]), () => result);\n}\n","// deno-fmt-ignore-file\n// deno-lint-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { IsSchema } from '../../types/schema.mjs';\nimport { IsLiteral } from '../../types/literal.mjs';\nimport { IsNumber } from '../../types/number.mjs';\nimport { IsInteger } from '../../types/integer.mjs';\nimport { Object } from '../../types/object.mjs';\nimport { IsString } from '../../types/string.mjs';\nimport { StringKey } from '../../types/record.mjs';\nimport { Flatten } from '../evaluate/flatten.mjs';\nimport { CreateRecord } from './record_create.mjs';\nfunction StringOrNumberCheck(types) {\n return types.some(type => IsString(type) || IsNumber(type) || IsInteger(type));\n}\nfunction TryBuildRecord(types, value) {\n return (Guard.IsEqual(StringOrNumberCheck(types), true)\n ? CreateRecord(StringKey, value)\n : undefined);\n}\nfunction CreateProperties(types, value) {\n return types.reduce((result, left) => {\n return IsLiteral(left) && (Guard.IsString(left.const) || Guard.IsNumber(left.const))\n ? { ...result, [left.const]: value }\n : result;\n }, {});\n}\nfunction CreateObject(types, value) {\n const properties = CreateProperties(types, value);\n const result = Object(properties);\n return result;\n}\nexport function FromUnionKey(types, value) {\n const flattened = Flatten(types);\n const record = TryBuildRecord(flattened, value);\n return (IsSchema(record) // maybe IsRecord?\n ? record\n : CreateObject(flattened, value));\n}\n","// deno-fmt-ignore-file\n// deno-lint-ignore-file\nimport { IsAny } from '../../types/any.mjs';\nimport { IsBoolean } from '../../types/boolean.mjs';\nimport { IsEnum } from '../../types/enum.mjs';\nimport { IsIntersect } from '../../types/intersect.mjs';\nimport { IsInteger } from '../../types/integer.mjs';\nimport { IsLiteral } from '../../types/literal.mjs';\nimport { IsNumber } from '../../types/number.mjs';\nimport { Object } from '../../types/object.mjs';\nimport { IsString } from '../../types/string.mjs';\nimport { IsTemplateLiteral } from '../../types/template_literal.mjs';\nimport { IsUnion } from '../../types/union.mjs';\n// ------------------------------------------------------------------\n// Keys and Deferred\n// ------------------------------------------------------------------\nimport { FromAnyKey } from './from_key_any.mjs';\nimport { FromBooleanKey } from './from_key_boolean.mjs';\nimport { FromEnumKey } from './from_key_enum.mjs';\nimport { FromIntegerKey } from './from_key_integer.mjs';\nimport { FromIntersectKey } from './from_key_intersect.mjs';\nimport { FromLiteralKey } from './from_key_literal.mjs';\nimport { FromNumberKey } from './from_key_number.mjs';\nimport { FromStringKey } from './from_key_string.mjs';\nimport { FromTemplateKey } from './from_key_template_literal.mjs';\nimport { FromUnionKey } from './from_key_union.mjs';\nexport function FromKey(key, value) {\n const result = (IsAny(key) ? FromAnyKey(value) :\n IsBoolean(key) ? FromBooleanKey(value) :\n IsEnum(key) ? FromEnumKey(key.enum, value) :\n IsInteger(key) ? FromIntegerKey(key, value) :\n IsIntersect(key) ? FromIntersectKey(key.allOf, value) :\n IsLiteral(key) ? FromLiteralKey(key.const, value) :\n IsNumber(key) ? FromNumberKey(key, value) :\n IsUnion(key) ? FromUnionKey(key.anyOf, value) :\n IsString(key) ? FromStringKey(key, value) :\n IsTemplateLiteral(key) ? FromTemplateKey(key.pattern, value) :\n Object({}));\n return result;\n}\n","// deno-fmt-ignore-file\n// deno-lint-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { RecordDeferred } from '../../types/record.mjs';\nimport { FromKey } from './from_key.mjs';\nimport { InstantiateType, CanInstantiate } from '../instantiate.mjs';\nexport function RecordAction(key, value, options) {\n const result = CanInstantiate([key])\n ? Memory.Update(FromKey(key, value), {}, options)\n : RecordDeferred(key, value, options);\n return result;\n}\nexport function RecordInstantiate(context, state, key, value, options) {\n const instantiatedKey = InstantiateType(context, state, key);\n const instantiatedValue = InstantiateType(context, state, value);\n return RecordAction(instantiatedKey, instantiatedValue, options);\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { Guard } from '../../guard/index.mjs';\nimport { IsKind } from './schema.mjs';\nimport { Integer, IntegerPattern } from './integer.mjs';\nimport { Number, NumberPattern } from './number.mjs';\nimport { String, StringPattern } from './string.mjs';\nimport { Deferred } from './deferred.mjs';\nimport { TemplateLiteralDecodeUnsafe } from '../engine/template_literal/decode.mjs';\nimport { CreateRecord } from '../engine/record/record_create.mjs';\nimport { RecordAction } from '../engine/record/instantiate.mjs';\nexport const IntegerKey = `^${IntegerPattern}$`;\nexport const NumberKey = `^${NumberPattern}$`;\nexport const StringKey = `^${StringPattern}$`;\n/** Represents a deferred Record action. */\nexport function RecordDeferred(key, value, options = {}) {\n return Deferred('Record', [key, value], options);\n}\n// -------------------------------------------------------------------\n// Factory\n// -------------------------------------------------------------------\n/** Creates a Record type. */\nexport function Record(key, value, options = {}) {\n return RecordAction(key, value, options);\n}\n// -------------------------------------------------------------------\n// RecordFromPattern\n// -------------------------------------------------------------------\n/** Creates a Record type from regular expression pattern. */\nexport function RecordFromPattern(pattern, value) {\n return CreateRecord(pattern, value);\n}\n/** Transforms a Record Pattern to a Type */\nexport function RecordPatternToType(pattern) {\n const result = (Guard.IsEqual(pattern, StringKey) ? String() :\n Guard.IsEqual(pattern, IntegerKey) ? Integer() :\n Guard.IsEqual(pattern, NumberKey) ? Number() :\n TemplateLiteralDecodeUnsafe(pattern));\n return result;\n}\n/** Extracts the Pattern from a Record type */\nexport function RecordPattern(type) {\n return Guard.Keys(type.patternProperties)[0];\n}\n/** Extracts the Key from a Record type */\nexport function RecordKey(type) {\n const pattern = RecordPattern(type);\n const result = RecordPatternToType(pattern);\n return result;\n}\n/** Extracts the Value from a Record type */\nexport function RecordValue(type) {\n return type.patternProperties[RecordPattern(type)];\n}\n// -------------------------------------------------------------------\n// Guard\n// -------------------------------------------------------------------\nexport function IsRecord(value) {\n return IsKind(value, 'Record');\n}\n// -------------------------------------------------------------------\n// Options\n// -------------------------------------------------------------------\nexport function RecordOptions(type) {\n return Memory.Discard(type, ['~kind', 'type', 'patternProperties']);\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from '../types/schema.mjs';\n// ------------------------------------------------------------------\n// Type\n// ------------------------------------------------------------------\n/** Creates a Rest instruction type. */\nexport function Rest(type) {\n return Memory.Create({ '~kind': 'Rest' }, { type: 'rest', items: type }, {});\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is TRest. */\nexport function IsRest(value) {\n return IsKind(value, 'Rest');\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates a This type. */\nexport function This(options) {\n return Memory.Create({ ['~kind']: 'This' }, { $ref: '#' }, options);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is TThis. */\nexport function IsThis(value) {\n return IsKind(value, 'This');\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates a Undefined type. */\nexport function Undefined(options) {\n return Memory.Create({ '~kind': 'Undefined' }, { type: 'undefined' }, options);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is TUndefined. */\nexport function IsUndefined(value) {\n return IsKind(value, 'Undefined');\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates a Void type. */\nexport function Void(options) {\n return Memory.Create({ '~kind': 'Void' }, { type: 'void' }, options);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is TVoid. */\nexport function IsVoid(value) {\n return IsKind(value, 'Void');\n}\n","// deno-fmt-ignore-file\n// deno-lint-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { Guard } from '../../guard/index.mjs';\nimport * as T from '../types/index.mjs';\nimport * as S from '../action/index.mjs';\nfunction IntrinsicOrCall(ref, parameters) {\n // deno-coverage-ignore-start\n //\n // Have extensively tested but reports show no Omit coverage (review)\n return (Guard.IsEqual(ref, 'Array') ? T.Array(parameters[0]) :\n Guard.IsEqual(ref, 'Capitalize') ? S.CapitalizeDeferred(parameters[0]) :\n Guard.IsEqual(ref, 'ConstructorParameters') ? S.ConstructorParametersDeferred(parameters[0]) :\n Guard.IsEqual(ref, 'Evaluate') ? S.EvaluateDeferred(parameters[0]) :\n Guard.IsEqual(ref, 'Exclude') ? S.ExcludeDeferred(parameters[0], parameters[1]) :\n Guard.IsEqual(ref, 'Extract') ? S.ExtractDeferred(parameters[0], parameters[1]) :\n Guard.IsEqual(ref, 'Index') ? S.IndexDeferred(parameters[0], parameters[1]) :\n Guard.IsEqual(ref, 'InstanceType') ? S.InstanceTypeDeferred(parameters[0]) :\n Guard.IsEqual(ref, 'Lowercase') ? S.LowercaseDeferred(parameters[0]) :\n Guard.IsEqual(ref, 'NonNullable') ? S.NonNullableDeferred(parameters[0]) :\n Guard.IsEqual(ref, 'Omit') ? S.OmitDeferred(parameters[0], parameters[1]) :\n Guard.IsEqual(ref, 'Parameters') ? S.ParametersDeferred(parameters[0]) :\n Guard.IsEqual(ref, 'Partial') ? S.PartialDeferred(parameters[0]) :\n Guard.IsEqual(ref, 'Pick') ? S.PickDeferred(parameters[0], parameters[1]) :\n Guard.IsEqual(ref, 'Readonly') ? S.ReadonlyObjectDeferred(parameters[0]) :\n Guard.IsEqual(ref, 'KeyOf') ? S.KeyOfDeferred(parameters[0]) :\n Guard.IsEqual(ref, 'Record') ? T.RecordDeferred(parameters[0], parameters[1]) :\n Guard.IsEqual(ref, 'Required') ? S.RequiredDeferred(parameters[0]) :\n Guard.IsEqual(ref, 'ReturnType') ? S.ReturnTypeDeferred(parameters[0]) :\n Guard.IsEqual(ref, 'Uncapitalize') ? S.UncapitalizeDeferred(parameters[0]) :\n Guard.IsEqual(ref, 'Uppercase') ? S.UppercaseDeferred(parameters[0]) :\n T.CallConstruct(T.Ref(ref), parameters));\n // deno-coverage-ignore-stop\n}\n// ------------------------------------------------------------------\n// Unreachable\n// ------------------------------------------------------------------\n// deno-coverage-ignore-start\nfunction Unreachable() {\n throw Error('Unreachable');\n}\nfunction DelimitedDecode(input, result = []) {\n return Guard.ShiftLeft(input, (left, right) => DelimitedDecode(right, [...result, left[1]]), () => result);\n}\nfunction Delimited(input) {\n return Guard.IsEqual(input.length, 3)\n ? [input[0], ...DelimitedDecode(input[1])]\n : [];\n}\nexport function GenericParameterExtendsEqualsMapping(input) {\n return T.Parameter(input[0], input[2], input[4]);\n}\nexport function GenericParameterExtendsMapping(input) {\n return T.Parameter(input[0], input[2], input[2]);\n}\nexport function GenericParameterEqualsMapping(input) {\n return T.Parameter(input[0], T.Unknown(), input[2]);\n}\nexport function GenericParameterIdentifierMapping(input) {\n return T.Parameter(input, T.Unknown(), T.Unknown());\n}\nexport function GenericParameterMapping(input) {\n return input;\n}\nexport function GenericParameterListMapping(input) {\n return Delimited(input);\n}\nexport function GenericParametersMapping(input) {\n return input[1];\n}\nexport function GenericCallArgumentListMapping(input) {\n return Delimited(input);\n}\nexport function GenericCallArgumentsMapping(input) {\n return input[1];\n}\nexport function GenericCallMapping(input) {\n return IntrinsicOrCall(input[0], input[1]);\n}\nexport function OptionalSemiColonMapping(input) {\n return null;\n}\nexport function KeywordStringMapping(input) {\n return T.String();\n}\nexport function KeywordNumberMapping(input) {\n return T.Number();\n}\nexport function KeywordBooleanMapping(input) {\n return T.Boolean();\n}\nexport function KeywordUndefinedMapping(input) {\n return T.Undefined();\n}\nexport function KeywordNullMapping(input) {\n return T.Null();\n}\nexport function KeywordIntegerMapping(input) {\n return T.Integer();\n}\nexport function KeywordBigIntMapping(input) {\n return T.BigInt();\n}\nexport function KeywordUnknownMapping(input) {\n return T.Unknown();\n}\nexport function KeywordAnyMapping(input) {\n return T.Any();\n}\nexport function KeywordObjectMapping(input) {\n return T.Object({});\n}\nexport function KeywordNeverMapping(input) {\n return T.Never();\n}\nexport function KeywordSymbolMapping(input) {\n return T.Symbol();\n}\nexport function KeywordVoidMapping(input) {\n return T.Void();\n}\nexport function KeywordThisMapping(input) {\n return T.This();\n}\nexport function LiteralBigIntMapping(input) {\n return T.Literal(BigInt(input));\n}\nexport function LiteralBooleanMapping(input) {\n return T.Literal(Guard.IsEqual(input, 'true'));\n}\nexport function LiteralNumberMapping(input) {\n return T.Literal(parseFloat(input));\n}\nexport function LiteralStringMapping(input) {\n return T.Literal(input);\n}\nexport function TemplateInterpolateMapping(input) {\n return input[1];\n}\nexport function TemplateSpanMapping(input) {\n return T.Literal(input);\n}\nexport function TemplateBodyMapping(input) {\n return (Guard.IsEqual(input.length, 3)\n ? [input[0], input[1], ...input[2]]\n : [input[0]]);\n}\nexport function TemplateLiteralTypesMapping(input) {\n return input[1];\n}\nexport function TemplateLiteralMapping(input) {\n return T.TemplateLiteralDeferred(input);\n}\nexport function DependentMapping(input) {\n return (Guard.IsEqual(input.length, 6) ? T.Dependent(input[1], input[3], input[5]) :\n T.Dependent(input[1], input[3], T.Unknown()));\n}\nexport function KeyOfMapping(input) {\n return input.length > 0;\n}\nexport function IndexArrayMapping(input) {\n return input.reduce((result, current) => {\n return Guard.IsEqual(current.length, 3)\n ? [...result, [current[1]]]\n : [...result, []];\n }, []);\n}\nexport function ExtendsMapping(input) {\n return Guard.IsEqual(input.length, 6)\n ? [input[1], input[3], input[5]]\n : [];\n}\nexport function BaseMapping(input) {\n return Guard.IsArray(input) && Guard.IsEqual(input.length, 3)\n ? input[1]\n : input;\n}\nexport function WithMapping(input) {\n return Guard.IsEqual(input.length, 2) ? input[1] : [];\n}\n// deno-coverage-ignore-start\nfunction FactorIndexArray(Type, indexArray) {\n return indexArray.reduce((result, left) => {\n const _left = left;\n return (Guard.IsEqual(_left.length, 1) ? S.IndexDeferred(result, _left[0]) :\n Guard.IsEqual(_left.length, 0) ? T.Array(result) :\n Unreachable());\n }, Type);\n}\n// deno-coverage-ignore-stop\nfunction FactorExtends(type, extend) {\n return Guard.IsEqual(extend.length, 3)\n ? S.ConditionalDeferred(type, extend[0], extend[1], extend[2])\n : type;\n}\nfunction FactorWith(type, withClause) {\n return Guard.IsArray(withClause) && Guard.IsEqual(withClause.length, 0)\n ? type\n : S.WithDeferred(type, withClause);\n}\nexport function FactorMapping(input) {\n const [keyOf, type, indexArray, extend, withClause] = input;\n return FactorWith(keyOf\n ? FactorExtends(S.KeyOfDeferred(FactorIndexArray(type, indexArray)), extend)\n : FactorExtends(FactorIndexArray(type, indexArray), extend), withClause);\n}\n// deno-coverage-ignore-start\nfunction ExprBinaryMapping(left, rest) {\n return (Guard.IsEqual(rest.length, 3) ? (() => {\n const [operator, right, next] = rest;\n const Schema = ExprBinaryMapping(right, next);\n if (Guard.IsEqual(operator, '&')) {\n return T.IsIntersect(Schema)\n ? T.Intersect([left, ...Schema.allOf])\n : T.Intersect([left, Schema]);\n }\n if (Guard.IsEqual(operator, '|')) {\n return T.IsUnion(Schema)\n ? T.Union([left, ...Schema.anyOf])\n : T.Union([left, Schema]);\n }\n Unreachable();\n })() : left);\n}\nexport function ExprTermTailMapping(input) {\n return input;\n}\nexport function ExprTermMapping(input) {\n const [left, rest] = input;\n return ExprBinaryMapping(left, rest);\n}\nexport function ExprTailMapping(input) {\n return input;\n}\nexport function ExprMapping(input) {\n const [left, rest] = input;\n return ExprBinaryMapping(left, rest);\n}\nexport function ExprReadonlyMapping(input) {\n return S.AddImmutableDeferred(input[1]);\n}\nexport function ExprPipeMapping(input) {\n return input[1];\n}\nexport function GenericTypeMapping(input) {\n return T.Generic(input[0], input[2]);\n}\n// deno-coverage-ignore-start\nexport function InferTypeMapping(input) {\n return (Guard.IsEqual(input.length, 4) ? T.Infer(input[1], input[3]) :\n Guard.IsEqual(input.length, 2) ? T.Infer(input[1], T.Unknown()) :\n Unreachable());\n}\nexport function TypeMapping(input) {\n return input;\n}\nexport function PropertyKeyNumberMapping(input) {\n return `${input}`;\n}\nexport function PropertyKeyIdentMapping(input) {\n return input;\n}\nexport function PropertyKeyQuotedMapping(input) {\n return input;\n}\n// deno-coverage-ignore-start\nexport function PropertyKeyIndexMapping(input) {\n return (T.IsInteger(input[3]) ? T.IntegerKey :\n T.IsNumber(input[3]) ? T.NumberKey :\n T.IsSymbol(input[3]) ? T.StringKey :\n T.IsString(input[3]) ? T.StringKey :\n Unreachable());\n}\nexport function PropertyKeyMapping(input) {\n return input;\n}\nexport function ReadonlyMapping(input) {\n return input.length > 0;\n}\nexport function OptionalMapping(input) {\n return input.length > 0;\n}\nexport function PropertyMapping(input) {\n const [isReadonly, key, isOptional, _colon, type] = input;\n return {\n [key]: (isReadonly && isOptional ? S.AddReadonlyDeferred(S.AddOptionalDeferred(type)) :\n isReadonly && !isOptional ? S.AddReadonlyDeferred(type) :\n !isReadonly && isOptional ? S.AddOptionalDeferred(type) :\n type)\n };\n}\nexport function PropertyDelimiterMapping(input) {\n return input;\n}\nexport function PropertyListMapping(input) {\n return Delimited(input);\n}\nfunction PropertiesReduce(propertyList) {\n return propertyList.reduce((result, left) => {\n const isPatternProperties = (Guard.HasPropertyKey(left, T.IntegerKey) || Guard.HasPropertyKey(left, T.NumberKey) || Guard.HasPropertyKey(left, T.StringKey));\n // @ts-ignore 5.0.4 - unable to observe ...left on right arm\n return (isPatternProperties\n ? [result[0], Memory.Assign(result[1], left)]\n : [Memory.Assign(result[0], left), result[1]]);\n }, [{}, {}]);\n}\nexport function PropertiesMapping(input) {\n return PropertiesReduce(input[1]);\n}\nexport function _Object_Mapping(input) {\n const [properties, patternProperties] = input;\n const options = Guard.IsEqual(Guard.Keys(patternProperties).length, 0) ? {} : { patternProperties };\n return T.Object(properties, options);\n}\n// deno-coverage-ignore-start\nexport function ElementNamedMapping(input) {\n return (Guard.IsEqual(input.length, 5) ? S.AddReadonlyDeferred(S.AddOptionalDeferred(input[4])) :\n Guard.IsEqual(input.length, 3) ? input[2] :\n Guard.IsEqual(input.length, 4) ? (Guard.IsEqual(input[2], 'readonly') ? S.AddReadonlyDeferred(input[3]) : S.AddOptionalDeferred(input[3])) :\n Unreachable());\n}\nexport function ElementBaseMapping(input) {\n if (!Guard.IsArray(input) || !Guard.IsEqual(input.length, 3))\n return input;\n const [isReadonly, type, isOptional] = input;\n return (isReadonly && isOptional ? S.AddReadonlyDeferred(S.AddOptionalDeferred(type)) :\n isReadonly && !isOptional ? S.AddReadonlyDeferred(type) :\n !isReadonly && isOptional ? S.AddOptionalDeferred(type) :\n type);\n}\n// deno-coverage-ignore-start\nexport function ElementMapping(input) {\n return (Guard.IsEqual(input.length, 2) ? T.Rest(input[1]) :\n Guard.IsEqual(input.length, 1) ? input[0] :\n Unreachable());\n}\nexport function ElementListMapping(input) {\n return Delimited(input);\n}\nexport function _Tuple_Mapping(input) {\n return T.Tuple(input[1]);\n}\nexport function ParameterReadonlyOptionalMapping(input) {\n return S.AddReadonlyDeferred(S.AddOptionalDeferred(input[4]));\n}\nexport function ParameterReadonlyMapping(input) {\n return S.AddReadonlyDeferred(input[3]);\n}\nexport function ParameterOptionalMapping(input) {\n return S.AddOptionalDeferred(input[3]);\n}\nexport function ParameterTypeMapping(input) {\n return input[2];\n}\nexport function ParameterBaseMapping(input) {\n return input;\n}\n// deno-coverage-ignore-start\nexport function ParameterMapping(input) {\n return (Guard.IsEqual(input.length, 2) ? T.Rest(input[1]) :\n Guard.IsEqual(input.length, 1) ? input[0] :\n Unreachable());\n}\nexport function ParameterListMapping(input) {\n return Delimited(input);\n}\nexport function _Function_Mapping(input) {\n return T._Function_(input[1], input[4]);\n}\nexport function _Constructor_Mapping(input) {\n return T.Constructor(input[2], input[5]);\n}\nfunction ApplyReadonly(state, type) {\n return (Guard.IsEqual(state, 'remove') ? S.RemoveReadonlyDeferred(type) :\n Guard.IsEqual(state, 'add') ? S.AddReadonlyDeferred(type) :\n type);\n}\nexport function MappedReadonlyMapping(input) {\n return (Guard.IsEqual(input.length, 2) && Guard.IsEqual(input[0], '-') ? 'remove' :\n Guard.IsEqual(input.length, 2) && Guard.IsEqual(input[0], '+') ? 'add' :\n Guard.IsEqual(input.length, 1) ? 'add' :\n 'none');\n}\nfunction ApplyOptional(state, type) {\n return (Guard.IsEqual(state, 'remove') ? S.RemoveOptionalDeferred(type) :\n Guard.IsEqual(state, 'add') ? S.AddOptionalDeferred(type) :\n type);\n}\nexport function MappedOptionalMapping(input) {\n return (Guard.IsEqual(input.length, 2) && Guard.IsEqual(input[0], '-') ? 'remove' :\n Guard.IsEqual(input.length, 2) && Guard.IsEqual(input[0], '+') ? 'add' :\n Guard.IsEqual(input.length, 1) ? 'add' :\n 'none');\n}\nexport function MappedAsMapping(input) {\n return Guard.IsEqual(input.length, 2) ? [input[1]] : [];\n}\nexport function _Mapped_Mapping(input) {\n return (Guard.IsArray(input[6]) && Guard.IsEqual(input[6].length, 1)\n ? S.MappedDeferred(T.Identifier(input[3]), input[5], input[6][0], ApplyReadonly(input[1], ApplyOptional(input[8], input[10])))\n : S.MappedDeferred(T.Identifier(input[3]), input[5], T.Ref(input[3]), ApplyReadonly(input[1], ApplyOptional(input[8], input[10]))));\n}\nexport function ReferenceMapping(input) {\n return T.Ref(input);\n}\nexport function WithBigIntMapping(input) {\n return BigInt(input);\n}\nexport function WithNumberMapping(input) {\n return parseFloat(input);\n}\nexport function WithBooleanMapping(input) {\n return Guard.IsEqual(input, 'true');\n}\nexport function WithStringMapping(input) {\n return input;\n}\nexport function WithNullMapping(input) {\n return null;\n}\nexport function WithUndefinedMapping(input) {\n return undefined;\n}\nexport function WithPropertyMapping(input) {\n return { [input[0]]: input[2] };\n}\nexport function WithPropertyListMapping(input) {\n return Delimited(input);\n}\nfunction WithObjectMappingReduce(propertyList) {\n return propertyList.reduce((result, left) => {\n return Memory.Assign(result, left);\n }, {});\n}\nexport function WithObjectMapping(input) {\n return WithObjectMappingReduce(input[1]);\n}\nexport function WithElementListMapping(input) {\n return Delimited(input);\n}\nexport function WithArrayMapping(input) {\n return input[1];\n}\nexport function WithValueMapping(input) {\n return input;\n}\nexport function PatternBigIntMapping(input) {\n return T.BigInt();\n}\nexport function PatternStringMapping(input) {\n return T.String();\n}\nexport function PatternNumberMapping(input) {\n return T.Number();\n}\nexport function PatternIntegerMapping(input) {\n return T.Integer();\n}\nexport function PatternNeverMapping(input) {\n return T.Never();\n}\nexport function PatternTextMapping(input) {\n return T.Literal(input);\n}\nexport function PatternBaseMapping(input) {\n return input;\n}\nexport function PatternGroupMapping(input) {\n return T.Union(input[1]);\n}\nexport function PatternUnionMapping(input) {\n return (input.length === 3 ? [...input[0], ...input[2]] :\n input.length === 1 ? [...input[0]] :\n []);\n}\nexport function PatternTermMapping(input) {\n return [input[0], ...input[1]];\n}\nexport function PatternBodyMapping(input) {\n return input;\n}\nexport function PatternMapping(input) {\n return input[1];\n}\nexport function InterfaceDeclarationHeritageListMapping(input) {\n return Delimited(input);\n}\nexport function InterfaceDeclarationHeritageMapping(input) {\n return Guard.IsEqual(input.length, 2) ? input[1] : [];\n}\nexport function InterfaceDeclarationGenericMapping(input) {\n const parameters = input[2];\n const heritage = input[3];\n const [properties, patternProperties] = input[4];\n const options = Guard.IsEqual(Guard.Keys(patternProperties).length, 0) ? {} : { patternProperties };\n return { [input[1]]: T.Generic(parameters, S.InterfaceDeferred(heritage, properties, options)) };\n}\nexport function InterfaceDeclarationMapping(input) {\n const heritage = input[2];\n const [properties, patternProperties] = input[3];\n const options = Guard.IsEqual(Guard.Keys(patternProperties).length, 0) ? {} : { patternProperties };\n return { [input[1]]: S.InterfaceDeferred(heritage, properties, options) };\n}\nexport function TypeAliasDeclarationGenericMapping(input) {\n return { [input[1]]: T.Generic(input[2], input[4]) };\n}\nexport function TypeAliasDeclarationMapping(input) {\n return { [input[1]]: input[3] };\n}\nexport function ExportKeywordMapping(input) {\n return null; // ignored-dont-care\n}\nexport function ModuleDeclarationDelimiterMapping(input) {\n return input;\n}\nexport function ModuleDeclarationListMapping(input) {\n return Delimited(input);\n}\nexport function ModuleDeclarationMapping(input) {\n return input[1];\n}\nexport function ModuleMapping(input) {\n const [moduleDeclaration, moduleDeclarationList] = [input[0], input[1]];\n return S.ModuleDeferred(Memory.Assign(moduleDeclaration, PropertiesReduce(moduleDeclarationList)[0]));\n}\nexport function ScriptMapping(input) {\n return input;\n}\n","// deno-coverage-ignore-start - parsebox tested\nimport { IsEqual } from './guard.mjs';\n/** Checks the value is a Tuple-2 [string, string] result */\nexport function IsMatch(value) {\n return IsEqual(value.length, 2);\n}\n/** Matches on a result and dispatches either left or right arm */\nexport function Match(input, ok, fail) {\n return IsMatch(input) ? ok(input[0], input[1]) : fail();\n}\n// deno-coverage-ignore-stop\n","// deno-coverage-ignore-start - parsebox tested\n// deno-fmt-ignore-file\nimport { IsMatch } from './match.mjs';\nimport { IsEqual } from './guard.mjs';\nfunction TakeVariant(variant, input) {\n return (IsEqual(input.indexOf(variant), 0)\n ? [variant, input.slice(variant.length)]\n : []);\n}\n/** Takes one of the given variants or fail */\nexport function Take(variants, input) {\n // ----------------------------------------------------------------\n // Symmetric\n // ----------------------------------------------------------------\n // return Guard.ShiftLeft(variants, (valueLeft, valueRight) => \n // Match(TakeVariant(valueLeft, input), (take, rest) => \n // [take, rest],\n // () => Take(valueRight, input)),\n // () => []) as never\n // ----------------------------------------------------------------\n // Inline\n // ----------------------------------------------------------------\n for (let i = 0; i < variants.length; i++) {\n const result = TakeVariant(variants[i], input);\n if (IsMatch(result))\n return result;\n }\n return [];\n}\n// deno-coverage-ignore-stop\n","// deno-coverage-ignore-start - parsebox tested\n// deno-fmt-ignore-file\n// ------------------------------------------------------------------\n// Range\n// ------------------------------------------------------------------\nfunction Range(start, end) {\n return Array.from({ length: end - start + 1 }, (_, i) => String.fromCharCode(start + i));\n}\nexport const Alpha = [\n ...Range(97, 122), // Lowercase\n ...Range(65, 90) // Uppercase\n];\nexport const Zero = '0';\nexport const NonZero = Range(49, 57); // 1 - 9\nexport const Digit = [Zero, ...NonZero];\n// ------------------------------------------------------------------\n// Characters\n// ------------------------------------------------------------------\nexport const WhiteSpace = ' ';\nexport const NewLine = '\\n';\nexport const TabSpace = '\\t';\nexport const UnderScore = '_';\nexport const Dot = '.';\nexport const DollarSign = '$';\nexport const Hyphen = '-';\n// deno-coverage-ignore-stop\n","// deno-coverage-ignore-start - parsebox tested\n// deno-fmt-ignore-file\nimport { IsEqual } from './guard.mjs';\nimport * as Char from './char.mjs';\nconst LineComment = '//';\nconst OpenComment = '/*';\nconst CloseComment = '*/';\nfunction DiscardMultilineComment(input) {\n const index = input.indexOf(CloseComment);\n const result = IsEqual(index, -1) ? '' : input.slice(index + 2);\n return result;\n}\nfunction DiscardLineComment(input) {\n const index = input.indexOf(Char.NewLine);\n const result = IsEqual(index, -1) ? '' : input.slice(index);\n return result;\n}\n// ...\nfunction TrimStartUntilNewline(input) {\n return input.replace(/^[ \\t\\r\\f\\v]+/, '');\n}\nexport function TrimWhitespace(input) {\n const trimmed = TrimStartUntilNewline(input);\n return (trimmed.startsWith(OpenComment) ? TrimWhitespace(DiscardMultilineComment(trimmed.slice(2))) :\n trimmed.startsWith(LineComment) ? TrimWhitespace(DiscardLineComment(trimmed.slice(2))) :\n trimmed);\n}\nexport function Trim(input) {\n const trimmed = input.trimStart();\n return (trimmed.startsWith(OpenComment) ? Trim(DiscardMultilineComment(trimmed.slice(2))) :\n trimmed.startsWith(LineComment) ? Trim(DiscardLineComment(trimmed.slice(2))) :\n trimmed);\n}\n// deno-coverage-ignore-stop\n","// deno-coverage-ignore-start - parsebox tested\n// deno-fmt-ignore-file\nimport { Match } from './internal/match.mjs';\nimport { Trim } from './internal/trim.mjs';\nimport { Take } from './internal/take.mjs';\nimport { Many } from './internal/many.mjs';\nimport { Digit } from './internal/char.mjs';\nimport { Zero } from './internal/char.mjs';\nimport { NonZero } from './internal/char.mjs';\nimport { UnderScore } from './internal/char.mjs';\nfunction TakeNonZero(input) {\n return Take(NonZero, input);\n}\nconst AllowedDigits = [...Digit, UnderScore];\nfunction TakeDigits(input) {\n return Many(AllowedDigits, [UnderScore], input);\n}\nfunction TakeUnsignedInteger(input) {\n return Match(Take([Zero], input), (Zero, ZeroRest) => [Zero, ZeroRest], () => Match(TakeNonZero(input), (NonZero, NonZeroRest) => Match(TakeDigits(NonZeroRest), (Digits, DigitsRest) => [`${NonZero}${Digits}`, DigitsRest], () => []), // fail: did not match Digits\n () => [])); // fail: did not match NonZero\n}\n/** Matches if next is a UnsignedInteger */\nexport function UnsignedInteger(input) {\n return TakeUnsignedInteger(Trim(input));\n}\n// deno-coverage-ignore-stop\n","// deno-coverage-ignore-start - parsebox tested\n// deno-fmt-ignore-file\nimport { IsEqual } from './internal/guard.mjs';\nimport { TrimWhitespace } from './internal/trim.mjs';\nimport { Trim } from './internal/trim.mjs';\nimport { Take } from './internal/take.mjs';\nimport { NewLine } from './internal/char.mjs';\nimport { WhiteSpace } from './internal/char.mjs';\nfunction TakeConst(const_, input) {\n return Take([const_], input);\n}\n/** Matches if next is the given Const value */\nexport function Const(const_, input) {\n return (IsEqual(const_, '') ? ['', input] : (const_.startsWith(NewLine) ? TakeConst(const_, TrimWhitespace(input)) :\n const_.startsWith(WhiteSpace) ? TakeConst(const_, input) :\n TakeConst(const_, Trim(input))));\n}\n// deno-coverage-ignore-stop\n","// deno-coverage-ignore-start - parsebox tested\n// deno-fmt-ignore-file\nimport { Match } from './internal/match.mjs';\nimport { Trim } from './internal/trim.mjs';\nimport { Take } from './internal/take.mjs';\nimport { Alpha } from './internal/char.mjs';\nimport { Digit } from './internal/char.mjs';\nimport { UnderScore } from './internal/char.mjs';\nimport { DollarSign } from './internal/char.mjs';\nconst Initial = [...Alpha, UnderScore, DollarSign];\nfunction TakeInitial(input) {\n return Take(Initial, input);\n}\nconst Remaining = [...Initial, ...Digit];\nfunction TakeRemaining(input, result = '') {\n return Match(Take(Remaining, input), (Remaining, RemainingRest) => TakeRemaining(RemainingRest, `${result}${Remaining}`), () => [result, input]);\n}\nfunction TakeIdent(input) {\n return Match(TakeInitial(input), (Initial, InitialRest) => Match(TakeRemaining(InitialRest), (Remaining, RemainingRest) => [`${Initial}${Remaining}`, RemainingRest], () => []), // fail: did not match Remaining\n () => []); // fail: did not match Initial\n}\n/** Matches if next is an Ident */\nexport function Ident(input) {\n return TakeIdent(Trim(input));\n}\n// deno-coverage-ignore-stop\n","// deno-coverage-ignore-start - parsebox tested\n// deno-fmt-ignore-file\nimport { IsEqual } from './internal/guard.mjs';\nimport { IsMatch, Match } from './internal/match.mjs';\nimport { Trim } from './internal/trim.mjs';\nimport { Take } from './internal/take.mjs';\nimport { Many } from './internal/many.mjs';\nimport { Digit, UnderScore } from './internal/char.mjs';\nimport { Dot } from './internal/char.mjs';\nimport { UnsignedInteger } from './unsigned_integer.mjs';\nconst AllowedDigits = [...Digit, UnderScore];\nfunction IsLeadingDot(input) {\n return IsMatch(Take([Dot], input));\n}\nfunction TakeFractional(input) {\n return Match(Many(AllowedDigits, [UnderScore], input), (Digits, DigitsRest) => IsEqual(Digits, '')\n ? [] // fail: no Digits\n : [Digits, DigitsRest], () => []); // fail: did not match Digits\n}\nfunction LeadingDot(input) {\n return Match(Take([Dot], input), (Dot, DotRest) => Match(TakeFractional(DotRest), (Fractional, FractionalRest) => [`0${Dot}${Fractional}`, FractionalRest], () => []), // fail: did not match Fractional\n () => []); // fail: did not match Dot\n}\nfunction LeadingInteger(input) {\n return Match(UnsignedInteger(input), (Integer, IntegerRest) => Match(Take([Dot], IntegerRest), (Dot, DotRest) => Match(TakeFractional(DotRest), (Fractional, FractionalRest) => [`${Integer}${Dot}${Fractional}`, FractionalRest], () => [`${Integer}`, DotRest]), // fail: did not match Fractional, use Integer\n () => [`${Integer}`, IntegerRest]), // fail: did not match Dot, use Integer\n () => []); // fail: did not match Integer\n}\nfunction TakeUnsignedNumber(input) {\n return (IsLeadingDot(input)\n ? LeadingDot(input)\n : LeadingInteger(input));\n}\n/** Matches if next is a UnsignedNumber */\nexport function UnsignedNumber(input) {\n return TakeUnsignedNumber(Trim(input));\n}\n// deno-coverage-ignore-stop\n","// deno-coverage-ignore-start - parsebox tested\n// deno-fmt-ignore-file\nimport { Match } from './internal/match.mjs';\nimport { IsEqual, ShiftLeft } from './internal/guard.mjs';\nfunction TakeOne(input) {\n const result = IsEqual(input, '') ? [] : [input.slice(0, 1), input.slice(1)];\n return result;\n}\nfunction IsInputMatchSentinal(end, input) {\n return ShiftLeft(end, (left, right) => input.startsWith(left)\n ? true\n : IsInputMatchSentinal(right, input), () => false);\n}\n/** Match Input until but not including End. No match if End not found. */\nexport function Until(end, input, result = '') {\n return Match(TakeOne(input), (One, Rest) => IsInputMatchSentinal(end, input)\n ? [result, input] // ok: at sentinal \n : Until(end, Rest, `${result}${One}`) // fail: advance + 1\n , () => []);\n}\n// deno-coverage-ignore-stop\n","// deno-coverage-ignore-start - parsebox tested\n// deno-fmt-ignore-file\nimport { IsEqual } from './internal/guard.mjs';\nimport { Match } from './internal/match.mjs';\nimport { Until } from './until.mjs';\n/** Match Input until but not including End. No match if End not found or match is zero-length. */\nexport function Until_1(end, input) {\n return Match(Until(end, input), (Until, UntilRest) => IsEqual(Until, '')\n ? [] // fail: match has no characters\n : [Until, UntilRest], () => []); // fail: did not match Until\n}\n// deno-coverage-ignore-stop\n","// deno-fmt-ignore-file\n// deno-lint-ignore-file\n// ------------------------------------------------------------------\n//\n// This module was auto-generated by TypeBox's parser compiler\n// infrastructure (ParseBox). The source grammar is located at:\n//\n// Source: ./design/syntax/syntax.ts\n//\n// ------------------------------------------------------------------\nimport * as S from './mapping.mjs';\nimport * as Token from './token/index.mjs';\nconst If = (result, left, right = () => []) => result.length === 2 ? left(result) : right();\nexport const GenericParameterExtendsEquals = (input) => If(If(Token.Ident(input), ([_0, input]) => If(Token.Const('extends', input), ([_1, input]) => If(Type(input), ([_2, input]) => If(Token.Const('=', input), ([_3, input]) => If(Type(input), ([_4, input]) => [[_0, _1, _2, _3, _4], input]))))), ([_0, input]) => [S.GenericParameterExtendsEqualsMapping(_0), input]);\nexport const GenericParameterExtends = (input) => If(If(Token.Ident(input), ([_0, input]) => If(Token.Const('extends', input), ([_1, input]) => If(Type(input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [S.GenericParameterExtendsMapping(_0), input]);\nexport const GenericParameterEquals = (input) => If(If(Token.Ident(input), ([_0, input]) => If(Token.Const('=', input), ([_1, input]) => If(Type(input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [S.GenericParameterEqualsMapping(_0), input]);\nexport const GenericParameterIdentifier = (input) => If(Token.Ident(input), ([_0, input]) => [S.GenericParameterIdentifierMapping(_0), input]);\nexport const GenericParameter = (input) => If(If(GenericParameterExtendsEquals(input), ([_0, input]) => [_0, input], () => If(GenericParameterExtends(input), ([_0, input]) => [_0, input], () => If(GenericParameterEquals(input), ([_0, input]) => [_0, input], () => If(GenericParameterIdentifier(input), ([_0, input]) => [_0, input], () => [])))), ([_0, input]) => [S.GenericParameterMapping(_0), input]);\nexport const GenericParameterList_0 = (input, result = []) => If(If(Token.Const(',', input), ([_0, input]) => If(GenericParameter(input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => GenericParameterList_0(input, [...result, _0]), () => [result, input]);\nexport const GenericParameterList = (input) => If(If(If(GenericParameter(input), ([_0, input]) => If(GenericParameterList_0(input), ([_1, input]) => If(If(Token.Const(',', input), ([_0, input]) => [[_0], input], () => [[], input]), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.GenericParameterListMapping(_0), input]);\nexport const GenericParameters = (input) => If(If(Token.Const('<', input), ([_0, input]) => If(GenericParameterList(input), ([_1, input]) => If(Token.Const('>', input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [S.GenericParametersMapping(_0), input]);\nexport const GenericCallArgumentList_0 = (input, result = []) => If(If(Token.Const(',', input), ([_0, input]) => If(Type(input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => GenericCallArgumentList_0(input, [...result, _0]), () => [result, input]);\nexport const GenericCallArgumentList = (input) => If(If(If(Type(input), ([_0, input]) => If(GenericCallArgumentList_0(input), ([_1, input]) => If(If(Token.Const(',', input), ([_0, input]) => [[_0], input], () => [[], input]), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.GenericCallArgumentListMapping(_0), input]);\nexport const GenericCallArguments = (input) => If(If(Token.Const('<', input), ([_0, input]) => If(GenericCallArgumentList(input), ([_1, input]) => If(Token.Const('>', input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [S.GenericCallArgumentsMapping(_0), input]);\nexport const GenericCall = (input) => If(If(Token.Ident(input), ([_0, input]) => If(GenericCallArguments(input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => [S.GenericCallMapping(_0), input]);\nexport const OptionalSemiColon = (input) => If(If(If(Token.Const(';', input), ([_0, input]) => [[_0], input]), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.OptionalSemiColonMapping(_0), input]);\nexport const KeywordString = (input) => If(Token.Const('string', input), ([_0, input]) => [S.KeywordStringMapping(_0), input]);\nexport const KeywordNumber = (input) => If(Token.Const('number', input), ([_0, input]) => [S.KeywordNumberMapping(_0), input]);\nexport const KeywordBoolean = (input) => If(Token.Const('boolean', input), ([_0, input]) => [S.KeywordBooleanMapping(_0), input]);\nexport const KeywordUndefined = (input) => If(Token.Const('undefined', input), ([_0, input]) => [S.KeywordUndefinedMapping(_0), input]);\nexport const KeywordNull = (input) => If(Token.Const('null', input), ([_0, input]) => [S.KeywordNullMapping(_0), input]);\nexport const KeywordInteger = (input) => If(Token.Const('integer', input), ([_0, input]) => [S.KeywordIntegerMapping(_0), input]);\nexport const KeywordBigInt = (input) => If(Token.Const('bigint', input), ([_0, input]) => [S.KeywordBigIntMapping(_0), input]);\nexport const KeywordUnknown = (input) => If(Token.Const('unknown', input), ([_0, input]) => [S.KeywordUnknownMapping(_0), input]);\nexport const KeywordAny = (input) => If(Token.Const('any', input), ([_0, input]) => [S.KeywordAnyMapping(_0), input]);\nexport const KeywordObject = (input) => If(Token.Const('object', input), ([_0, input]) => [S.KeywordObjectMapping(_0), input]);\nexport const KeywordNever = (input) => If(Token.Const('never', input), ([_0, input]) => [S.KeywordNeverMapping(_0), input]);\nexport const KeywordSymbol = (input) => If(Token.Const('symbol', input), ([_0, input]) => [S.KeywordSymbolMapping(_0), input]);\nexport const KeywordVoid = (input) => If(Token.Const('void', input), ([_0, input]) => [S.KeywordVoidMapping(_0), input]);\nexport const KeywordThis = (input) => If(Token.Const('this', input), ([_0, input]) => [S.KeywordThisMapping(_0), input]);\nexport const TemplateInterpolate = (input) => If(If(Token.Const('${', input), ([_0, input]) => If(Type(input), ([_1, input]) => If(Token.Const('}', input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [S.TemplateInterpolateMapping(_0), input]);\nexport const TemplateSpan = (input) => If(Token.Until(['${', '`'], input), ([_0, input]) => [S.TemplateSpanMapping(_0), input]);\nexport const TemplateBody = (input) => If(If(If(TemplateSpan(input), ([_0, input]) => If(TemplateInterpolate(input), ([_1, input]) => If(TemplateBody(input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [_0, input], () => If(If(TemplateSpan(input), ([_0, input]) => [[_0], input]), ([_0, input]) => [_0, input], () => If(If(TemplateSpan(input), ([_0, input]) => [[_0], input]), ([_0, input]) => [_0, input], () => []))), ([_0, input]) => [S.TemplateBodyMapping(_0), input]);\nexport const TemplateLiteralTypes = (input) => If(If(Token.Const('`', input), ([_0, input]) => If(TemplateBody(input), ([_1, input]) => If(Token.Const('`', input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [S.TemplateLiteralTypesMapping(_0), input]);\nexport const TemplateLiteral = (input) => If(TemplateLiteralTypes(input), ([_0, input]) => [S.TemplateLiteralMapping(_0), input]);\nexport const Dependent = (input) => If(If(If(Token.Const('if', input), ([_0, input]) => If(Type(input), ([_1, input]) => If(Token.Const('then', input), ([_2, input]) => If(Type(input), ([_3, input]) => If(Token.Const('else', input), ([_4, input]) => If(Type(input), ([_5, input]) => [[_0, _1, _2, _3, _4, _5], input])))))), ([_0, input]) => [_0, input], () => If(If(Token.Const('if', input), ([_0, input]) => If(Type(input), ([_1, input]) => If(Token.Const('then', input), ([_2, input]) => If(Type(input), ([_3, input]) => [[_0, _1, _2, _3], input])))), ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.DependentMapping(_0), input]);\nexport const LiteralBigInt = (input) => If(Token.BigInt(input), ([_0, input]) => [S.LiteralBigIntMapping(_0), input]);\nexport const LiteralBoolean = (input) => If(If(Token.Const('true', input), ([_0, input]) => [_0, input], () => If(Token.Const('false', input), ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.LiteralBooleanMapping(_0), input]);\nexport const LiteralNumber = (input) => If(Token.Number(input), ([_0, input]) => [S.LiteralNumberMapping(_0), input]);\nexport const LiteralString = (input) => If(Token.String(['\\'', '\\\"'], input), ([_0, input]) => [S.LiteralStringMapping(_0), input]);\nexport const KeyOf = (input) => If(If(If(Token.Const('keyof', input), ([_0, input]) => [[_0], input]), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.KeyOfMapping(_0), input]);\nexport const IndexArray_0 = (input, result = []) => If(If(If(Token.Const('[', input), ([_0, input]) => If(Type(input), ([_1, input]) => If(Token.Const(']', input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [_0, input], () => If(If(Token.Const('[', input), ([_0, input]) => If(Token.Const(']', input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => [_0, input], () => [])), ([_0, input]) => IndexArray_0(input, [...result, _0]), () => [result, input]);\nexport const IndexArray = (input) => If(IndexArray_0(input), ([_0, input]) => [S.IndexArrayMapping(_0), input]);\nexport const Extends = (input) => If(If(If(Token.Const('extends', input), ([_0, input]) => If(Type(input), ([_1, input]) => If(Token.Const('?', input), ([_2, input]) => If(Type(input), ([_3, input]) => If(Token.Const(':', input), ([_4, input]) => If(Type(input), ([_5, input]) => [[_0, _1, _2, _3, _4, _5], input])))))), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.ExtendsMapping(_0), input]);\nexport const Base = (input) => If(If(If(Token.Const('(', input), ([_0, input]) => If(Type(input), ([_1, input]) => If(Token.Const(')', input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [_0, input], () => If(KeywordString(input), ([_0, input]) => [_0, input], () => If(KeywordNumber(input), ([_0, input]) => [_0, input], () => If(KeywordBoolean(input), ([_0, input]) => [_0, input], () => If(KeywordUndefined(input), ([_0, input]) => [_0, input], () => If(KeywordNull(input), ([_0, input]) => [_0, input], () => If(KeywordInteger(input), ([_0, input]) => [_0, input], () => If(KeywordBigInt(input), ([_0, input]) => [_0, input], () => If(KeywordUnknown(input), ([_0, input]) => [_0, input], () => If(KeywordAny(input), ([_0, input]) => [_0, input], () => If(KeywordObject(input), ([_0, input]) => [_0, input], () => If(KeywordNever(input), ([_0, input]) => [_0, input], () => If(KeywordSymbol(input), ([_0, input]) => [_0, input], () => If(KeywordVoid(input), ([_0, input]) => [_0, input], () => If(KeywordThis(input), ([_0, input]) => [_0, input], () => If(LiteralBigInt(input), ([_0, input]) => [_0, input], () => If(LiteralBoolean(input), ([_0, input]) => [_0, input], () => If(LiteralNumber(input), ([_0, input]) => [_0, input], () => If(LiteralString(input), ([_0, input]) => [_0, input], () => If(TemplateLiteral(input), ([_0, input]) => [_0, input], () => If(Dependent(input), ([_0, input]) => [_0, input], () => If(_Object_(input), ([_0, input]) => [_0, input], () => If(_Tuple_(input), ([_0, input]) => [_0, input], () => If(_Constructor_(input), ([_0, input]) => [_0, input], () => If(_Function_(input), ([_0, input]) => [_0, input], () => If(_Mapped_(input), ([_0, input]) => [_0, input], () => If(GenericCall(input), ([_0, input]) => [_0, input], () => If(Reference(input), ([_0, input]) => [_0, input], () => [])))))))))))))))))))))))))))), ([_0, input]) => [S.BaseMapping(_0), input]);\nexport const With = (input) => If(If(If(Token.Const('with', input), ([_0, input]) => If(WithObject(input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.WithMapping(_0), input]);\nexport const Factor = (input) => If(If(KeyOf(input), ([_0, input]) => If(Base(input), ([_1, input]) => If(IndexArray(input), ([_2, input]) => If(Extends(input), ([_3, input]) => If(With(input), ([_4, input]) => [[_0, _1, _2, _3, _4], input]))))), ([_0, input]) => [S.FactorMapping(_0), input]);\nexport const ExprTermTail = (input) => If(If(If(Token.Const('&', input), ([_0, input]) => If(Factor(input), ([_1, input]) => If(ExprTermTail(input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.ExprTermTailMapping(_0), input]);\nexport const ExprTerm = (input) => If(If(Factor(input), ([_0, input]) => If(ExprTermTail(input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => [S.ExprTermMapping(_0), input]);\nexport const ExprTail = (input) => If(If(If(Token.Const('|', input), ([_0, input]) => If(ExprTerm(input), ([_1, input]) => If(ExprTail(input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.ExprTailMapping(_0), input]);\nexport const Expr = (input) => If(If(ExprTerm(input), ([_0, input]) => If(ExprTail(input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => [S.ExprMapping(_0), input]);\nexport const ExprReadonly = (input) => If(If(Token.Const('readonly', input), ([_0, input]) => If(Expr(input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => [S.ExprReadonlyMapping(_0), input]);\nexport const ExprPipe = (input) => If(If(Token.Const('|', input), ([_0, input]) => If(Expr(input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => [S.ExprPipeMapping(_0), input]);\nexport const GenericType = (input) => If(If(GenericParameters(input), ([_0, input]) => If(Token.Const('=', input), ([_1, input]) => If(Type(input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [S.GenericTypeMapping(_0), input]);\nexport const InferType = (input) => If(If(If(Token.Const('infer', input), ([_0, input]) => If(Token.Ident(input), ([_1, input]) => If(Token.Const('extends', input), ([_2, input]) => If(Expr(input), ([_3, input]) => [[_0, _1, _2, _3], input])))), ([_0, input]) => [_0, input], () => If(If(Token.Const('infer', input), ([_0, input]) => If(Token.Ident(input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.InferTypeMapping(_0), input]);\nexport const Type = (input) => If(If(InferType(input), ([_0, input]) => [_0, input], () => If(ExprPipe(input), ([_0, input]) => [_0, input], () => If(ExprReadonly(input), ([_0, input]) => [_0, input], () => If(Expr(input), ([_0, input]) => [_0, input], () => [])))), ([_0, input]) => [S.TypeMapping(_0), input]);\nexport const PropertyKeyNumber = (input) => If(Token.Number(input), ([_0, input]) => [S.PropertyKeyNumberMapping(_0), input]);\nexport const PropertyKeyIdent = (input) => If(Token.Ident(input), ([_0, input]) => [S.PropertyKeyIdentMapping(_0), input]);\nexport const PropertyKeyQuoted = (input) => If(Token.String(['\\'', '\\\"'], input), ([_0, input]) => [S.PropertyKeyQuotedMapping(_0), input]);\nexport const PropertyKeyIndex = (input) => If(If(Token.Const('[', input), ([_0, input]) => If(Token.Ident(input), ([_1, input]) => If(Token.Const(':', input), ([_2, input]) => If(If(KeywordInteger(input), ([_0, input]) => [_0, input], () => If(KeywordNumber(input), ([_0, input]) => [_0, input], () => If(KeywordString(input), ([_0, input]) => [_0, input], () => If(KeywordSymbol(input), ([_0, input]) => [_0, input], () => [])))), ([_3, input]) => If(Token.Const(']', input), ([_4, input]) => [[_0, _1, _2, _3, _4], input]))))), ([_0, input]) => [S.PropertyKeyIndexMapping(_0), input]);\nexport const PropertyKey = (input) => If(If(PropertyKeyNumber(input), ([_0, input]) => [_0, input], () => If(PropertyKeyIdent(input), ([_0, input]) => [_0, input], () => If(PropertyKeyQuoted(input), ([_0, input]) => [_0, input], () => If(PropertyKeyIndex(input), ([_0, input]) => [_0, input], () => [])))), ([_0, input]) => [S.PropertyKeyMapping(_0), input]);\nexport const Readonly = (input) => If(If(If(Token.Const('readonly', input), ([_0, input]) => [[_0], input]), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.ReadonlyMapping(_0), input]);\nexport const Optional = (input) => If(If(If(Token.Const('?', input), ([_0, input]) => [[_0], input]), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.OptionalMapping(_0), input]);\nexport const Property = (input) => If(If(Readonly(input), ([_0, input]) => If(PropertyKey(input), ([_1, input]) => If(Optional(input), ([_2, input]) => If(Token.Const(':', input), ([_3, input]) => If(Type(input), ([_4, input]) => [[_0, _1, _2, _3, _4], input]))))), ([_0, input]) => [S.PropertyMapping(_0), input]);\nexport const PropertyDelimiter = (input) => If(If(If(Token.Const(',', input), ([_0, input]) => If(Token.Const('\\n', input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => [_0, input], () => If(If(Token.Const(';', input), ([_0, input]) => If(Token.Const('\\n', input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => [_0, input], () => If(If(Token.Const(',', input), ([_0, input]) => [[_0], input]), ([_0, input]) => [_0, input], () => If(If(Token.Const(';', input), ([_0, input]) => [[_0], input]), ([_0, input]) => [_0, input], () => If(If(Token.Const('\\n', input), ([_0, input]) => [[_0], input]), ([_0, input]) => [_0, input], () => []))))), ([_0, input]) => [S.PropertyDelimiterMapping(_0), input]);\nexport const PropertyList_0 = (input, result = []) => If(If(PropertyDelimiter(input), ([_0, input]) => If(Property(input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => PropertyList_0(input, [...result, _0]), () => [result, input]);\nexport const PropertyList = (input) => If(If(If(Property(input), ([_0, input]) => If(PropertyList_0(input), ([_1, input]) => If(If(PropertyDelimiter(input), ([_0, input]) => [[_0], input], () => [[], input]), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.PropertyListMapping(_0), input]);\nexport const Properties = (input) => If(If(Token.Const('{', input), ([_0, input]) => If(PropertyList(input), ([_1, input]) => If(Token.Const('}', input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [S.PropertiesMapping(_0), input]);\nexport const _Object_ = (input) => If(Properties(input), ([_0, input]) => [S._Object_Mapping(_0), input]);\nexport const ElementNamed = (input) => If(If(If(Token.Ident(input), ([_0, input]) => If(Token.Const('?', input), ([_1, input]) => If(Token.Const(':', input), ([_2, input]) => If(Token.Const('readonly', input), ([_3, input]) => If(Type(input), ([_4, input]) => [[_0, _1, _2, _3, _4], input]))))), ([_0, input]) => [_0, input], () => If(If(Token.Ident(input), ([_0, input]) => If(Token.Const(':', input), ([_1, input]) => If(Token.Const('readonly', input), ([_2, input]) => If(Type(input), ([_3, input]) => [[_0, _1, _2, _3], input])))), ([_0, input]) => [_0, input], () => If(If(Token.Ident(input), ([_0, input]) => If(Token.Const('?', input), ([_1, input]) => If(Token.Const(':', input), ([_2, input]) => If(Type(input), ([_3, input]) => [[_0, _1, _2, _3], input])))), ([_0, input]) => [_0, input], () => If(If(Token.Ident(input), ([_0, input]) => If(Token.Const(':', input), ([_1, input]) => If(Type(input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [_0, input], () => [])))), ([_0, input]) => [S.ElementNamedMapping(_0), input]);\nexport const ElementBase = (input) => If(If(ElementNamed(input), ([_0, input]) => [_0, input], () => If(If(Readonly(input), ([_0, input]) => If(Type(input), ([_1, input]) => If(Optional(input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.ElementBaseMapping(_0), input]);\nexport const Element = (input) => If(If(If(Token.Const('...', input), ([_0, input]) => If(ElementBase(input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => [_0, input], () => If(If(ElementBase(input), ([_0, input]) => [[_0], input]), ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.ElementMapping(_0), input]);\nexport const ElementList_0 = (input, result = []) => If(If(Token.Const(',', input), ([_0, input]) => If(Element(input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => ElementList_0(input, [...result, _0]), () => [result, input]);\nexport const ElementList = (input) => If(If(If(Element(input), ([_0, input]) => If(ElementList_0(input), ([_1, input]) => If(If(Token.Const(',', input), ([_0, input]) => [[_0], input], () => [[], input]), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.ElementListMapping(_0), input]);\nexport const _Tuple_ = (input) => If(If(Token.Const('[', input), ([_0, input]) => If(ElementList(input), ([_1, input]) => If(Token.Const(']', input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [S._Tuple_Mapping(_0), input]);\nexport const ParameterReadonlyOptional = (input) => If(If(Token.Ident(input), ([_0, input]) => If(Token.Const('?', input), ([_1, input]) => If(Token.Const(':', input), ([_2, input]) => If(Token.Const('readonly', input), ([_3, input]) => If(Type(input), ([_4, input]) => [[_0, _1, _2, _3, _4], input]))))), ([_0, input]) => [S.ParameterReadonlyOptionalMapping(_0), input]);\nexport const ParameterReadonly = (input) => If(If(Token.Ident(input), ([_0, input]) => If(Token.Const(':', input), ([_1, input]) => If(Token.Const('readonly', input), ([_2, input]) => If(Type(input), ([_3, input]) => [[_0, _1, _2, _3], input])))), ([_0, input]) => [S.ParameterReadonlyMapping(_0), input]);\nexport const ParameterOptional = (input) => If(If(Token.Ident(input), ([_0, input]) => If(Token.Const('?', input), ([_1, input]) => If(Token.Const(':', input), ([_2, input]) => If(Type(input), ([_3, input]) => [[_0, _1, _2, _3], input])))), ([_0, input]) => [S.ParameterOptionalMapping(_0), input]);\nexport const ParameterType = (input) => If(If(Token.Ident(input), ([_0, input]) => If(Token.Const(':', input), ([_1, input]) => If(Type(input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [S.ParameterTypeMapping(_0), input]);\nexport const ParameterBase = (input) => If(If(ParameterReadonlyOptional(input), ([_0, input]) => [_0, input], () => If(ParameterReadonly(input), ([_0, input]) => [_0, input], () => If(ParameterOptional(input), ([_0, input]) => [_0, input], () => If(ParameterType(input), ([_0, input]) => [_0, input], () => [])))), ([_0, input]) => [S.ParameterBaseMapping(_0), input]);\nexport const Parameter = (input) => If(If(If(Token.Const('...', input), ([_0, input]) => If(ParameterBase(input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => [_0, input], () => If(If(ParameterBase(input), ([_0, input]) => [[_0], input]), ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.ParameterMapping(_0), input]);\nexport const ParameterList_0 = (input, result = []) => If(If(Token.Const(',', input), ([_0, input]) => If(Parameter(input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => ParameterList_0(input, [...result, _0]), () => [result, input]);\nexport const ParameterList = (input) => If(If(If(Parameter(input), ([_0, input]) => If(ParameterList_0(input), ([_1, input]) => If(If(Token.Const(',', input), ([_0, input]) => [[_0], input], () => [[], input]), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.ParameterListMapping(_0), input]);\nexport const _Function_ = (input) => If(If(Token.Const('(', input), ([_0, input]) => If(ParameterList(input), ([_1, input]) => If(Token.Const(')', input), ([_2, input]) => If(Token.Const('=>', input), ([_3, input]) => If(Type(input), ([_4, input]) => [[_0, _1, _2, _3, _4], input]))))), ([_0, input]) => [S._Function_Mapping(_0), input]);\nexport const _Constructor_ = (input) => If(If(Token.Const('new', input), ([_0, input]) => If(Token.Const('(', input), ([_1, input]) => If(ParameterList(input), ([_2, input]) => If(Token.Const(')', input), ([_3, input]) => If(Token.Const('=>', input), ([_4, input]) => If(Type(input), ([_5, input]) => [[_0, _1, _2, _3, _4, _5], input])))))), ([_0, input]) => [S._Constructor_Mapping(_0), input]);\nexport const MappedReadonly = (input) => If(If(If(Token.Const('+', input), ([_0, input]) => If(Token.Const('readonly', input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => [_0, input], () => If(If(Token.Const('-', input), ([_0, input]) => If(Token.Const('readonly', input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => [_0, input], () => If(If(Token.Const('readonly', input), ([_0, input]) => [[_0], input]), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])))), ([_0, input]) => [S.MappedReadonlyMapping(_0), input]);\nexport const MappedOptional = (input) => If(If(If(Token.Const('+', input), ([_0, input]) => If(Token.Const('?', input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => [_0, input], () => If(If(Token.Const('-', input), ([_0, input]) => If(Token.Const('?', input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => [_0, input], () => If(If(Token.Const('?', input), ([_0, input]) => [[_0], input]), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])))), ([_0, input]) => [S.MappedOptionalMapping(_0), input]);\nexport const MappedAs = (input) => If(If(If(Token.Const('as', input), ([_0, input]) => If(Type(input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.MappedAsMapping(_0), input]);\nexport const _Mapped_ = (input) => If(If(Token.Const('{', input), ([_0, input]) => If(MappedReadonly(input), ([_1, input]) => If(Token.Const('[', input), ([_2, input]) => If(Token.Ident(input), ([_3, input]) => If(Token.Const('in', input), ([_4, input]) => If(Type(input), ([_5, input]) => If(MappedAs(input), ([_6, input]) => If(Token.Const(']', input), ([_7, input]) => If(MappedOptional(input), ([_8, input]) => If(Token.Const(':', input), ([_9, input]) => If(Type(input), ([_10, input]) => If(OptionalSemiColon(input), ([_11, input]) => If(Token.Const('}', input), ([_12, input]) => [[_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12], input]))))))))))))), ([_0, input]) => [S._Mapped_Mapping(_0), input]);\nexport const Reference = (input) => If(Token.Ident(input), ([_0, input]) => [S.ReferenceMapping(_0), input]);\nexport const WithBigInt = (input) => If(Token.BigInt(input), ([_0, input]) => [S.WithBigIntMapping(_0), input]);\nexport const WithNumber = (input) => If(Token.Number(input), ([_0, input]) => [S.WithNumberMapping(_0), input]);\nexport const WithBoolean = (input) => If(If(Token.Const('true', input), ([_0, input]) => [_0, input], () => If(Token.Const('false', input), ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.WithBooleanMapping(_0), input]);\nexport const WithString = (input) => If(Token.String(['\\\"', '\\''], input), ([_0, input]) => [S.WithStringMapping(_0), input]);\nexport const WithNull = (input) => If(Token.Const('null', input), ([_0, input]) => [S.WithNullMapping(_0), input]);\nexport const WithUndefined = (input) => If(Token.Const('undefined', input), ([_0, input]) => [S.WithUndefinedMapping(_0), input]);\nexport const WithProperty = (input) => If(If(PropertyKey(input), ([_0, input]) => If(Token.Const(':', input), ([_1, input]) => If(WithValue(input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [S.WithPropertyMapping(_0), input]);\nexport const WithPropertyList_0 = (input, result = []) => If(If(PropertyDelimiter(input), ([_0, input]) => If(WithProperty(input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => WithPropertyList_0(input, [...result, _0]), () => [result, input]);\nexport const WithPropertyList = (input) => If(If(If(WithProperty(input), ([_0, input]) => If(WithPropertyList_0(input), ([_1, input]) => If(If(PropertyDelimiter(input), ([_0, input]) => [[_0], input], () => [[], input]), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.WithPropertyListMapping(_0), input]);\nexport const WithObject = (input) => If(If(Token.Const('{', input), ([_0, input]) => If(WithPropertyList(input), ([_1, input]) => If(Token.Const('}', input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [S.WithObjectMapping(_0), input]);\nexport const WithElementList_0 = (input, result = []) => If(If(Token.Const(',', input), ([_0, input]) => If(WithValue(input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => WithElementList_0(input, [...result, _0]), () => [result, input]);\nexport const WithElementList = (input) => If(If(If(WithValue(input), ([_0, input]) => If(WithElementList_0(input), ([_1, input]) => If(If(Token.Const(',', input), ([_0, input]) => [[_0], input], () => [[], input]), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.WithElementListMapping(_0), input]);\nexport const WithArray = (input) => If(If(Token.Const('[', input), ([_0, input]) => If(WithElementList(input), ([_1, input]) => If(Token.Const(']', input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [S.WithArrayMapping(_0), input]);\nexport const WithValue = (input) => If(If(WithBigInt(input), ([_0, input]) => [_0, input], () => If(WithNumber(input), ([_0, input]) => [_0, input], () => If(WithBoolean(input), ([_0, input]) => [_0, input], () => If(WithString(input), ([_0, input]) => [_0, input], () => If(WithNull(input), ([_0, input]) => [_0, input], () => If(WithUndefined(input), ([_0, input]) => [_0, input], () => If(WithObject(input), ([_0, input]) => [_0, input], () => If(WithArray(input), ([_0, input]) => [_0, input], () => [])))))))), ([_0, input]) => [S.WithValueMapping(_0), input]);\nexport const PatternBigInt = (input) => If(Token.Const('-?(?:0|[1-9][0-9]*)n', input), ([_0, input]) => [S.PatternBigIntMapping(_0), input]);\nexport const PatternString = (input) => If(Token.Const('.*', input), ([_0, input]) => [S.PatternStringMapping(_0), input]);\nexport const PatternNumber = (input) => If(Token.Const('-?(?:0|[1-9][0-9]*)(?:\\\\.[0-9]+)?', input), ([_0, input]) => [S.PatternNumberMapping(_0), input]);\nexport const PatternInteger = (input) => If(Token.Const('-?(?:0|[1-9][0-9]*)', input), ([_0, input]) => [S.PatternIntegerMapping(_0), input]);\nexport const PatternNever = (input) => If(Token.Const('(?!)', input), ([_0, input]) => [S.PatternNeverMapping(_0), input]);\nexport const PatternText = (input) => If(Token.Until_1(['-?(?:0|[1-9][0-9]*)n', '.*', '-?(?:0|[1-9][0-9]*)(?:\\\\.[0-9]+)?', '-?(?:0|[1-9][0-9]*)', '(?!)', '(', ')', '$', '|'], input), ([_0, input]) => [S.PatternTextMapping(_0), input]);\nexport const PatternBase = (input) => If(If(PatternBigInt(input), ([_0, input]) => [_0, input], () => If(PatternString(input), ([_0, input]) => [_0, input], () => If(PatternNumber(input), ([_0, input]) => [_0, input], () => If(PatternInteger(input), ([_0, input]) => [_0, input], () => If(PatternNever(input), ([_0, input]) => [_0, input], () => If(PatternGroup(input), ([_0, input]) => [_0, input], () => If(PatternText(input), ([_0, input]) => [_0, input], () => []))))))), ([_0, input]) => [S.PatternBaseMapping(_0), input]);\nexport const PatternGroup = (input) => If(If(Token.Const('(', input), ([_0, input]) => If(PatternBody(input), ([_1, input]) => If(Token.Const(')', input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [S.PatternGroupMapping(_0), input]);\nexport const PatternUnion = (input) => If(If(If(PatternTerm(input), ([_0, input]) => If(Token.Const('|', input), ([_1, input]) => If(PatternUnion(input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [_0, input], () => If(If(PatternTerm(input), ([_0, input]) => [[_0], input]), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => []))), ([_0, input]) => [S.PatternUnionMapping(_0), input]);\nexport const PatternTerm = (input) => If(If(PatternBase(input), ([_0, input]) => If(PatternBody(input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => [S.PatternTermMapping(_0), input]);\nexport const PatternBody = (input) => If(If(PatternUnion(input), ([_0, input]) => [_0, input], () => If(PatternTerm(input), ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.PatternBodyMapping(_0), input]);\nexport const Pattern = (input) => If(If(Token.Const('^', input), ([_0, input]) => If(PatternBody(input), ([_1, input]) => If(Token.Const('$', input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [S.PatternMapping(_0), input]);\nexport const InterfaceDeclarationHeritageList_0 = (input, result = []) => If(If(Token.Const(',', input), ([_0, input]) => If(Type(input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => InterfaceDeclarationHeritageList_0(input, [...result, _0]), () => [result, input]);\nexport const InterfaceDeclarationHeritageList = (input) => If(If(If(Type(input), ([_0, input]) => If(InterfaceDeclarationHeritageList_0(input), ([_1, input]) => If(If(Token.Const(',', input), ([_0, input]) => [[_0], input], () => [[], input]), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.InterfaceDeclarationHeritageListMapping(_0), input]);\nexport const InterfaceDeclarationHeritage = (input) => If(If(If(Token.Const('extends', input), ([_0, input]) => If(InterfaceDeclarationHeritageList(input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.InterfaceDeclarationHeritageMapping(_0), input]);\nexport const InterfaceDeclarationGeneric = (input) => If(If(Token.Const('interface', input), ([_0, input]) => If(Token.Ident(input), ([_1, input]) => If(GenericParameters(input), ([_2, input]) => If(InterfaceDeclarationHeritage(input), ([_3, input]) => If(Properties(input), ([_4, input]) => [[_0, _1, _2, _3, _4], input]))))), ([_0, input]) => [S.InterfaceDeclarationGenericMapping(_0), input]);\nexport const InterfaceDeclaration = (input) => If(If(Token.Const('interface', input), ([_0, input]) => If(Token.Ident(input), ([_1, input]) => If(InterfaceDeclarationHeritage(input), ([_2, input]) => If(Properties(input), ([_3, input]) => [[_0, _1, _2, _3], input])))), ([_0, input]) => [S.InterfaceDeclarationMapping(_0), input]);\nexport const TypeAliasDeclarationGeneric = (input) => If(If(Token.Const('type', input), ([_0, input]) => If(Token.Ident(input), ([_1, input]) => If(GenericParameters(input), ([_2, input]) => If(Token.Const('=', input), ([_3, input]) => If(Type(input), ([_4, input]) => [[_0, _1, _2, _3, _4], input]))))), ([_0, input]) => [S.TypeAliasDeclarationGenericMapping(_0), input]);\nexport const TypeAliasDeclaration = (input) => If(If(Token.Const('type', input), ([_0, input]) => If(Token.Ident(input), ([_1, input]) => If(Token.Const('=', input), ([_2, input]) => If(Type(input), ([_3, input]) => [[_0, _1, _2, _3], input])))), ([_0, input]) => [S.TypeAliasDeclarationMapping(_0), input]);\nexport const ExportKeyword = (input) => If(If(If(Token.Const('export', input), ([_0, input]) => [[_0], input]), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.ExportKeywordMapping(_0), input]);\nexport const ModuleDeclarationDelimiter = (input) => If(If(If(Token.Const(';', input), ([_0, input]) => If(Token.Const('\\n', input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => [_0, input], () => If(If(Token.Const(';', input), ([_0, input]) => [[_0], input]), ([_0, input]) => [_0, input], () => If(If(Token.Const('\\n', input), ([_0, input]) => [[_0], input]), ([_0, input]) => [_0, input], () => []))), ([_0, input]) => [S.ModuleDeclarationDelimiterMapping(_0), input]);\nexport const ModuleDeclarationList_0 = (input, result = []) => If(If(ModuleDeclarationDelimiter(input), ([_0, input]) => If(ModuleDeclaration(input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => ModuleDeclarationList_0(input, [...result, _0]), () => [result, input]);\nexport const ModuleDeclarationList = (input) => If(If(If(ModuleDeclaration(input), ([_0, input]) => If(ModuleDeclarationList_0(input), ([_1, input]) => If(If(ModuleDeclarationDelimiter(input), ([_0, input]) => [[_0], input], () => [[], input]), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [_0, input], () => If([[], input], ([_0, input]) => [_0, input], () => [])), ([_0, input]) => [S.ModuleDeclarationListMapping(_0), input]);\nexport const ModuleDeclaration = (input) => If(If(ExportKeyword(input), ([_0, input]) => If(If(InterfaceDeclarationGeneric(input), ([_0, input]) => [_0, input], () => If(InterfaceDeclaration(input), ([_0, input]) => [_0, input], () => If(TypeAliasDeclarationGeneric(input), ([_0, input]) => [_0, input], () => If(TypeAliasDeclaration(input), ([_0, input]) => [_0, input], () => [])))), ([_1, input]) => If(OptionalSemiColon(input), ([_2, input]) => [[_0, _1, _2], input]))), ([_0, input]) => [S.ModuleDeclarationMapping(_0), input]);\nexport const Module = (input) => If(If(ModuleDeclaration(input), ([_0, input]) => If(ModuleDeclarationList(input), ([_1, input]) => [[_0, _1], input])), ([_0, input]) => [S.ModuleMapping(_0), input]);\nexport const Script = (input) => If(If(Module(input), ([_0, input]) => [_0, input], () => If(GenericType(input), ([_0, input]) => [_0, input], () => If(Type(input), ([_0, input]) => [_0, input], () => []))), ([_0, input]) => [S.ScriptMapping(_0), input]);\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { IsEnum } from '../../types/enum.mjs';\nimport { Literal, IsLiteral } from '../../types/literal.mjs';\nimport { Union, IsUnion } from '../../types/union.mjs';\nimport { IsTemplateLiteral, IsTemplateLiteralDeferred } from '../../types/template_literal.mjs';\nimport { IsBigInt, BigIntPattern } from '../../types/bigint.mjs';\nimport { IsString, StringPattern } from '../../types/string.mjs';\nimport { IsNumber, NumberPattern } from '../../types/number.mjs';\nimport { IsInteger, IntegerPattern } from '../../types/integer.mjs';\nimport { IsBoolean } from '../../types/boolean.mjs';\nimport { NeverPattern } from '../../types/never.mjs';\nimport { TemplateLiteralCreate } from './create.mjs';\nimport { EvaluateEnum } from '../evaluate/evaluate.mjs';\nimport { TemplateLiteralAction } from './instantiate.mjs';\nfunction JoinString(input) {\n return input.join('|');\n}\nfunction UnwrapTemplateLiteralPattern(pattern) {\n return pattern.slice(1, pattern.length - 1);\n}\nfunction EncodeLiteral(value, right, pattern) {\n return EncodeTypes(right, `${pattern}${value}`);\n}\nfunction EncodeBigInt(right, pattern) {\n return EncodeTypes(right, `${pattern}${BigIntPattern}`);\n}\nfunction EncodeInteger(right, pattern) {\n return EncodeTypes(right, `${pattern}${IntegerPattern}`);\n}\nfunction EncodeNumber(right, pattern) {\n return EncodeTypes(right, `${pattern}${NumberPattern}`);\n}\nfunction EncodeBoolean(right, pattern) {\n return EncodeType(Union([Literal('false'), Literal('true')]), right, pattern);\n}\nfunction EncodeString(right, pattern) {\n return EncodeTypes(right, `${pattern}${StringPattern}`);\n}\nfunction EncodeTemplateLiteral(templatePattern, right, pattern) {\n return EncodeTypes(right, `${pattern}${UnwrapTemplateLiteralPattern(templatePattern)}`);\n}\nfunction EncodeTemplateLiteralDeferred(types, right, pattern) {\n const templateLiteral = TemplateLiteralAction(types, {});\n const result = EncodeType(templateLiteral, right, pattern);\n return result;\n}\nfunction EncodeEnum(values, right, pattern) {\n const evaluated = EvaluateEnum(values);\n return EncodeType(evaluated, right, pattern);\n}\nfunction EncodeUnion(types, right, pattern, result = []) {\n return Guard.ShiftLeft(types, (head, tail) => EncodeUnion(tail, right, pattern, [...result, EncodeType(head, [], '')]), () => EncodeTypes(right, `${pattern}(${JoinString(result)})`));\n}\nfunction EncodeType(type, right, pattern) {\n return (IsEnum(type) ? EncodeEnum(type.enum, right, pattern) :\n IsInteger(type) ? EncodeInteger(right, pattern) :\n IsLiteral(type) ? EncodeLiteral(type.const, right, pattern) :\n IsBigInt(type) ? EncodeBigInt(right, pattern) :\n IsBoolean(type) ? EncodeBoolean(right, pattern) :\n IsNumber(type) ? EncodeNumber(right, pattern) :\n IsString(type) ? EncodeString(right, pattern) :\n IsTemplateLiteral(type) ? EncodeTemplateLiteral(type.pattern, right, pattern) :\n IsTemplateLiteralDeferred(type) ? EncodeTemplateLiteralDeferred(type.parameters[0], right, pattern) :\n IsUnion(type) ? EncodeUnion(type.anyOf, right, pattern) :\n NeverPattern);\n}\nfunction EncodeTypes(types, pattern) {\n return Guard.ShiftLeft(types, (left, right) => EncodeType(left, right, pattern), () => pattern);\n}\nfunction EncodePattern(types) {\n const encoded = EncodeTypes(types, '');\n const result = `^${encoded}$`;\n return result;\n}\n/** Encodes a TemplateLiteral type sequence into a TemplateLiteral */\nexport function TemplateLiteralEncode(types) {\n const pattern = EncodePattern(types);\n const result = TemplateLiteralCreate(pattern);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { TemplateLiteralDeferred } from '../../types/template_literal.mjs';\nimport { TemplateLiteralEncode } from './encode.mjs';\nimport { InstantiateTypes, CanInstantiate } from '../instantiate.mjs';\nexport function TemplateLiteralAction(types, options) {\n const result = CanInstantiate(types)\n ? Memory.Update(TemplateLiteralEncode(types), {}, options)\n : TemplateLiteralDeferred(types, options);\n return result;\n}\nexport function TemplateLiteralInstantiate(context, state, types, options) {\n const instantiatedTypes = InstantiateTypes(context, state, types);\n return TemplateLiteralAction(instantiatedTypes, options);\n}\n","// deno-fmt-ignore-file\n// deno-lint-ignore-file\nimport { Memory } from '../../system/system.mjs';\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema, IsKind } from './schema.mjs';\nimport { Deferred } from './deferred.mjs';\nimport { ParseTemplateIntoTypes } from '../engine/patterns/template.mjs';\nimport { TemplateLiteralAction } from '../engine/template_literal/instantiate.mjs';\n/** Creates a deferred TemplateLiteral action. */\nexport function TemplateLiteralDeferred(types, options = {}) {\n return Deferred('TemplateLiteral', [types], options);\n}\n/** Returns true if this value is a deferred Interface action. */\nexport function IsTemplateLiteralDeferred(value) {\n return IsSchema(value)\n && Guard.HasPropertyKey(value, 'action')\n && Guard.IsEqual(value.action, 'TemplateLiteral');\n}\nexport function TemplateLiteralFromTypes(types) {\n return TemplateLiteralAction(types, {});\n}\nexport function TemplateLiteralFromString(template) {\n const types = ParseTemplateIntoTypes(template);\n return TemplateLiteralFromTypes(types);\n}\n/** Creates a TemplateLiteral type. */\nexport function TemplateLiteral(input, options = {}) {\n const type = Guard.IsString(input) ? TemplateLiteralFromString(input) : TemplateLiteralFromTypes(input);\n return Memory.Update(type, {}, options);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given value is TTemplateLiteral. */\nexport function IsTemplateLiteral(value) {\n return IsKind(value, 'TemplateLiteral');\n}\n","import { Guard } from '../../guard/index.mjs';\nimport { Memory } from '../../system/memory/index.mjs';\nexport function ExtendsUnion(inferred) {\n return Memory.Create({ ['~kind']: 'ExtendsUnion' }, { inferred });\n}\nexport function IsExtendsUnion(value) {\n return Guard.IsObject(value) &&\n Guard.HasPropertyKey(value, '~kind') &&\n Guard.HasPropertyKey(value, 'inferred') &&\n Guard.IsEqual(value['~kind'], 'ExtendsUnion') &&\n Guard.IsObject(value.inferred);\n}\nexport function ExtendsTrue(inferred) {\n return Memory.Create({ ['~kind']: 'ExtendsTrue' }, { inferred });\n}\nexport function IsExtendsTrue(value) {\n return Guard.IsObject(value) &&\n Guard.HasPropertyKey(value, '~kind') &&\n Guard.HasPropertyKey(value, 'inferred') &&\n Guard.IsEqual(value['~kind'], 'ExtendsTrue') &&\n Guard.IsObject(value.inferred);\n}\nexport function ExtendsFalse() {\n return Memory.Create({ ['~kind']: 'ExtendsFalse' }, {});\n}\nexport function IsExtendsFalse(value) {\n return Guard.IsObject(value) &&\n Guard.HasPropertyKey(value, '~kind') &&\n Guard.IsEqual(value['~kind'], 'ExtendsFalse');\n}\nexport function IsExtendsTrueLike(value) {\n return IsExtendsUnion(value) || IsExtendsTrue(value);\n}\nexport function Match(result, true_, false_) {\n return IsExtendsTrueLike(result) ? true_(result.inferred) : false_();\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsAny } from '../types/any.mjs';\nimport { IsDependent } from '../types/dependent.mjs';\nimport { IsEnum } from '../types/enum.mjs';\nimport { IsInfer } from '../types/infer.mjs';\nimport { IsIntersect } from '../types/intersect.mjs';\nimport { IsTemplateLiteral } from '../types/template_literal.mjs';\nimport { IsUnion } from '../types/union.mjs';\nimport { IsUnknown } from '../types/unknown.mjs';\nimport { ExtendsLeft } from './extends_left.mjs';\nimport * as Result from './result.mjs';\nimport { EvaluateEnum } from '../engine/evaluate/evaluate.mjs';\nimport { EvaluateTemplateLiteral } from '../engine/evaluate/evaluate.mjs';\nfunction ExtendsRightInfer(inferred, name, left, right) {\n return Result.Match(ExtendsLeft(inferred, left, right), checkInferred => Result.ExtendsTrue(Memory.Assign(Memory.Assign(inferred, checkInferred), { [name]: left })), () => Result.ExtendsFalse());\n}\nfunction ExtendsRightAny(inferred, _left) {\n return Result.ExtendsTrue(inferred);\n}\nfunction ExtendsRightDependent(inferred, left, if_, then_, else_) {\n return Result.Match(ExtendsLeft(inferred, left, if_), inferred => Result.Match(ExtendsLeft(inferred, left, then_), inferred => Result.ExtendsTrue(inferred), () => Result.ExtendsFalse()), () => Result.Match(ExtendsLeft(inferred, left, else_), inferred => Result.ExtendsTrue(inferred), () => Result.ExtendsFalse()));\n}\nfunction ExtendsRightEnum(inferred, left, right) {\n const evaluated = EvaluateEnum(right);\n return ExtendsLeft(inferred, left, evaluated);\n}\nfunction ExtendsRightIntersect(inferred, left, right) {\n return Guard.ShiftLeft(right, (head, tail) => Result.Match(ExtendsLeft(inferred, left, head), inferred => ExtendsRightIntersect(inferred, left, tail), () => Result.ExtendsFalse()), () => Result.ExtendsTrue(inferred));\n}\nfunction ExtendsRightTemplateLiteral(inferred, left, right) {\n const evaluated = EvaluateTemplateLiteral(right);\n return ExtendsLeft(inferred, left, evaluated);\n}\nfunction ExtendsRightUnion(inferred, left, right) {\n return Guard.ShiftLeft(right, (head, tail) => Result.Match(ExtendsLeft(inferred, left, head), inferred => Result.ExtendsTrue(inferred), () => ExtendsRightUnion(inferred, left, tail)), () => Result.ExtendsFalse());\n}\nexport function ExtendsRight(inferred, left, right) {\n return (IsAny(right) ? ExtendsRightAny(inferred, left) :\n IsDependent(right) ? ExtendsRightDependent(inferred, left, right.if, right.then, right.else) :\n IsEnum(right) ? ExtendsRightEnum(inferred, left, right.enum) :\n IsInfer(right) ? ExtendsRightInfer(inferred, right.name, left, right.extends) :\n IsIntersect(right) ? ExtendsRightIntersect(inferred, left, right.allOf) :\n IsTemplateLiteral(right) ? ExtendsRightTemplateLiteral(inferred, left, right.pattern) :\n IsUnion(right) ? ExtendsRightUnion(inferred, left, right.anyOf) :\n IsUnknown(right) ? Result.ExtendsTrue(inferred) :\n Result.ExtendsFalse());\n}\n","// deno-fmt-ignore-file\nimport { IsInfer } from '../types/infer.mjs';\nimport { IsAny } from '../types/any.mjs';\nimport { IsUnknown } from '../types/unknown.mjs';\nimport { ExtendsRight } from './extends_right.mjs';\nimport * as Result from './result.mjs';\nexport function ExtendsAny(inferred, left, right) {\n return (IsInfer(right) ? ExtendsRight(inferred, left, right) :\n IsAny(right) ? Result.ExtendsTrue(inferred) :\n IsUnknown(right) ? Result.ExtendsTrue(inferred) :\n Result.ExtendsUnion(inferred));\n}\n","// deno-fmt-ignore-file\nimport { IsArray } from '../types/array.mjs';\nimport { IsImmutable } from '../types/_immutable.mjs';\nimport { ExtendsRight } from './extends_right.mjs';\nimport { ExtendsLeft } from './extends_left.mjs';\nimport * as Result from './result.mjs';\nfunction ExtendsImmutable(left, right) {\n const isImmutableLeft = IsImmutable(left);\n const isImmutableRight = IsImmutable(right);\n return (isImmutableLeft && isImmutableRight ? true :\n !isImmutableLeft && isImmutableRight ? true :\n isImmutableLeft && !isImmutableRight ? false :\n true);\n}\nexport function ExtendsArray(inferred, arrayLeft, left, right) {\n return (IsArray(right)\n ? ExtendsImmutable(arrayLeft, right)\n ? ExtendsLeft(inferred, left, right.items)\n : Result.ExtendsFalse()\n : ExtendsRight(inferred, arrayLeft, right));\n}\n","// deno-fmt-ignore-file\nimport { IsBigInt } from '../types/bigint.mjs';\nimport { ExtendsRight } from './extends_right.mjs';\nimport * as Result from './result.mjs';\nexport function ExtendsBigInt(inferred, left, right) {\n return (IsBigInt(right)\n ? Result.ExtendsTrue(inferred)\n : ExtendsRight(inferred, left, right));\n}\n","// deno-fmt-ignore-file\nimport { IsBoolean } from '../types/boolean.mjs';\nimport { ExtendsRight } from './extends_right.mjs';\nimport * as Result from './result.mjs';\nexport function ExtendsBoolean(inferred, left, right) {\n return (IsBoolean(right)\n ? Result.ExtendsTrue(inferred)\n : ExtendsRight(inferred, left, right));\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsInfer } from '../types/infer.mjs';\nimport { IsOptional } from '../types/_optional.mjs';\nimport { ExtendsLeft } from './extends_left.mjs';\nimport * as Result from './result.mjs';\nfunction ParameterCompare(inferred, left, leftRest, right, rightRest) {\n // Parameter extends Right on Left, except when infer Right \n const checkLeft = IsInfer(right) ? left : right;\n const checkRight = IsInfer(right) ? right : left;\n const isLeftOptional = IsOptional(left);\n const isRightOptional = IsOptional(right);\n return ((!isLeftOptional && isRightOptional)\n ? Result.ExtendsFalse() // 'fail: left-required-but-right-is-optional'\n : Result.Match(ExtendsLeft(inferred, checkLeft, checkRight), inferred => ExtendsParameters(inferred, leftRest, rightRest), () => Result.ExtendsFalse()) // 'fail: left-and-right-did-not-match'\n );\n}\nfunction ParameterRight(inferred, left, leftRest, rightRest) {\n return Guard.ShiftLeft(rightRest, (head, tail) => ParameterCompare(inferred, left, leftRest, head, tail), () => IsOptional(left) // 'right-did-not-have-enough-elements'\n ? Result.ExtendsTrue(inferred) // 'ok: left was optional'\n : Result.ExtendsFalse()); // 'fail: left was required'\n}\nfunction ParametersLeft(inferred, left, rightRest) {\n return Guard.ShiftLeft(left, (head, tail) => ParameterRight(inferred, head, tail, rightRest), () => Result.ExtendsTrue(inferred)); // 'ok: no-more-elements-in-left'\n}\nexport function ExtendsParameters(inferred, left, right) {\n return ParametersLeft(inferred, left, right);\n}\n","// deno-fmt-ignore-file\nimport { IsVoid } from '../types/void.mjs';\nimport { ExtendsLeft } from './extends_left.mjs';\nimport * as Result from './result.mjs';\nexport function ExtendsReturnType(inferred, left, right) {\n return (IsVoid(right)\n ? Result.ExtendsTrue(inferred)\n : ExtendsLeft(inferred, left, right));\n}\n","// deno-fmt-ignore-file\nimport { IsAny } from '../types/any.mjs';\nimport { IsConstructor } from '../types/constructor.mjs';\nimport { IsUnknown } from '../types/unknown.mjs';\nimport * as Result from './result.mjs';\n// ------------------------------------------------------------------\n// Parameters | ReturnType\n// ------------------------------------------------------------------ \nimport { ExtendsParameters } from './parameters.mjs';\nimport { ExtendsReturnType } from './return_type.mjs';\nexport function ExtendsConstructor(inferred, parameters, returnType, right) {\n return (IsAny(right) ? Result.ExtendsTrue(inferred) :\n IsUnknown(right) ? Result.ExtendsTrue(inferred) :\n IsConstructor(right) ? Result.Match(ExtendsParameters(inferred, parameters, right['parameters']), inferred => ExtendsReturnType(inferred, returnType, right['instanceType']), () => Result.ExtendsFalse()) // 'not-a-parameter-match'\n : Result.ExtendsFalse() // 'not-a-constructor'\n );\n}\n","// deno-fmt-ignore-file\nimport { ExtendsLeft } from './extends_left.mjs';\nimport * as Result from './result.mjs';\nexport function ExtendsDependent(inferred, if_, then_, else_, right) {\n return Result.Match(ExtendsLeft(inferred, if_, right), () => ExtendsLeft(inferred, then_, right), () => ExtendsLeft(inferred, else_, right));\n}\n","// deno-fmt-ignore-file\nimport { ExtendsLeft } from './extends_left.mjs';\nimport { EvaluateEnum } from '../engine/evaluate/evaluate.mjs';\nexport function ExtendsEnum(inferred, left, right) {\n const evaluated = EvaluateEnum(left);\n return ExtendsLeft(inferred, evaluated, right);\n}\n","// deno-fmt-ignore-file\nimport { IsAny } from '../types/any.mjs';\nimport { IsFunction } from '../types/function.mjs';\nimport { IsUnknown } from '../types/unknown.mjs';\nimport * as Result from './result.mjs';\n// ------------------------------------------------------------------\n// Parameters | ReturnType\n// ------------------------------------------------------------------ \nimport { ExtendsParameters } from './parameters.mjs';\nimport { ExtendsReturnType } from './return_type.mjs';\nexport function ExtendsFunction(inferred, parameters, returnType, right) {\n return (IsAny(right) ? Result.ExtendsTrue(inferred) :\n IsUnknown(right) ? Result.ExtendsTrue(inferred) :\n IsFunction(right) ? Result.Match(ExtendsParameters(inferred, parameters, right['parameters']), inferred => ExtendsReturnType(inferred, returnType, right['returnType']), () => Result.ExtendsFalse()) // 'not-a-parameter-match'\n : Result.ExtendsFalse() // 'not-a-function'\n );\n}\n","// deno-fmt-ignore-file\nimport { IsInteger } from '../types/integer.mjs';\nimport { IsNumber } from '../types/number.mjs';\nimport { ExtendsRight } from './extends_right.mjs';\nimport * as Result from './result.mjs';\nexport function ExtendsInteger(inferred, left, right) {\n return (IsInteger(right) ? Result.ExtendsTrue(inferred) :\n IsNumber(right) ? Result.ExtendsTrue(inferred) :\n ExtendsRight(inferred, left, right));\n}\n","// deno-fmt-ignore-file\nimport { ExtendsLeft } from './extends_left.mjs';\n// ----------------------------------------------------------------------------\n// ExtendsIntersect\n//\n// This function evaluates the intersection and continues. This is different\n// to IntersectRight which MUST enumerate each type to derive Inferred. Left \n// side types do not infer so it should be ok to do this.\n//\n// ----------------------------------------------------------------------------\nimport { EvaluateIntersect } from '../engine/evaluate/index.mjs';\nexport function ExtendsIntersect(inferred, left, right) {\n const evaluated = EvaluateIntersect(left);\n return ExtendsLeft(inferred, evaluated, right);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { Unreachable } from '../../system/unreachable/unreachable.mjs';\nimport { IsLiteral, Literal } from '../types/literal.mjs';\nimport { IsBigInt } from '../types/bigint.mjs';\nimport { IsBoolean } from '../types/boolean.mjs';\nimport { IsNumber } from '../types/number.mjs';\nimport { IsString } from '../types/string.mjs';\nimport { ExtendsRight } from './extends_right.mjs';\nimport * as Result from './result.mjs';\nfunction ExtendsLiteralValue(inferred, left, right) {\n return (left === right\n ? Result.ExtendsTrue(inferred)\n : Result.ExtendsFalse());\n}\nfunction ExtendsLiteralBigInt(inferred, left, right) {\n return (IsLiteral(right) ? ExtendsLiteralValue(inferred, left, right.const) :\n IsBigInt(right) ? Result.ExtendsTrue(inferred) :\n ExtendsRight(inferred, Literal(left), right));\n}\nfunction ExtendsLiteralBoolean(inferred, left, right) {\n return (IsLiteral(right) ? ExtendsLiteralValue(inferred, left, right.const) :\n IsBoolean(right) ? Result.ExtendsTrue(inferred) :\n ExtendsRight(inferred, Literal(left), right));\n}\nfunction ExtendsLiteralNumber(inferred, left, right) {\n return (IsLiteral(right) ? ExtendsLiteralValue(inferred, left, right.const) :\n IsNumber(right) ? Result.ExtendsTrue(inferred) :\n ExtendsRight(inferred, Literal(left), right));\n}\nfunction ExtendsLiteralString(inferred, left, right) {\n return (IsLiteral(right) ? ExtendsLiteralValue(inferred, left, right.const) :\n IsString(right) ? Result.ExtendsTrue(inferred) :\n ExtendsRight(inferred, Literal(left), right));\n}\nexport function ExtendsLiteral(inferred, left, right) {\n return (Guard.IsBigInt(left.const) ? ExtendsLiteralBigInt(inferred, left.const, right) :\n Guard.IsBoolean(left.const) ? ExtendsLiteralBoolean(inferred, left.const, right) :\n Guard.IsNumber(left.const) ? ExtendsLiteralNumber(inferred, left.const, right) :\n Guard.IsString(left.const) ? ExtendsLiteralString(inferred, left.const, right) :\n Unreachable() // ExtendsRight(inferred, left, right)\n );\n}\n// deno-coverage-ignore-stop\n","// deno-fmt-ignore-file\nimport { IsInfer } from '../types/infer.mjs';\nimport { ExtendsRight } from './extends_right.mjs';\nimport * as Result from './result.mjs';\nexport function ExtendsNever(inferred, left, right) {\n return (IsInfer(right)\n ? ExtendsRight(inferred, left, right)\n : Result.ExtendsTrue(inferred));\n}\n","// deno-fmt-ignore-file\nimport { IsNull } from '../types/null.mjs';\nimport { ExtendsRight } from './extends_right.mjs';\nimport * as Result from './result.mjs';\nexport function ExtendsNull(inferred, left, right) {\n return (IsNull(right)\n ? Result.ExtendsTrue(inferred)\n : ExtendsRight(inferred, left, right));\n}\n","// deno-fmt-ignore-file\nimport { IsNumber } from '../types/number.mjs';\nimport { ExtendsRight } from './extends_right.mjs';\nimport * as Result from './result.mjs';\nexport function ExtendsNumber(inferred, left, right) {\n return (IsNumber(right)\n ? Result.ExtendsTrue(inferred)\n : ExtendsRight(inferred, left, right));\n}\n","// deno-lint-ignore-file ban-types\n// deno-fmt-ignore-file\nimport { Unreachable } from '../../system/unreachable/index.mjs';\nimport { Memory } from '../../system/memory/index.mjs';\nimport { Guard } from '../../guard/index.mjs';\nimport { IsOptional } from '../types/_optional.mjs';\nimport { IsInfer } from '../types/infer.mjs';\nimport { IsNever } from '../types/never.mjs';\nimport { IsObject, Object } from '../types/object.mjs';\nimport { IsRecord, RecordPattern, RecordValue } from '../types/record.mjs';\nimport { Union, IsUnion } from '../types/union.mjs';\nimport { ExtendsLeft } from './extends_left.mjs';\nimport { ExtendsRight } from './extends_right.mjs';\nimport * as Result from './result.mjs';\nfunction ExtendsPropertyOptional(inferred, left, right) {\n return (IsOptional(left)\n ? IsOptional(right)\n ? Result.ExtendsTrue(inferred)\n : Result.ExtendsFalse()\n : Result.ExtendsTrue(inferred));\n}\nfunction ExtendsProperty(inferred, left, right) {\n return (\n // Right TInfer<TNever> is TExtendsFalse\n (IsInfer(right) && IsNever(right.extends))\n ? Result.ExtendsFalse()\n : Result.Match(ExtendsLeft(inferred, left, right), inferred => ExtendsPropertyOptional(inferred, left, right), () => Result.ExtendsFalse()));\n}\nfunction ExtractInferredProperties(keys, properties) {\n return keys.reduce((result, key) => {\n return key in properties\n ? Result.IsExtendsTrueLike(properties[key])\n // @ts-ignore 5.0.4 cannot see `.inferred`\n ? { ...result, ...properties[key].inferred }\n : Unreachable() // result\n : Unreachable(); // result\n }, {});\n}\nfunction ExtendsPropertiesComparer(inferred, left, right) {\n const properties = {};\n for (const rightKey of Guard.Keys(right)) {\n properties[rightKey] = (rightKey in left\n // We don't consider the exterior Inferred as part of the property check as\n // we don't want the exterior Context to override the Inferred Context for\n // the Property Key. This override behavior is observed in the following\n // case we want the inferred A to shadow the exterior A.\n //\n // const A = Type.Script(`{ x: 1, y: 1 }`)\n // const S = Type.Script({ A }, `{\n // [K in keyof A]: A extends { \n // x: infer A, \n // y: infer B \n // } ? [A, B] <-- inferred 'A' shadows the exterior 'A'\n // : never\n // }`)\n ? ExtendsProperty({}, left[rightKey], right[rightKey])\n // If the right key K is not in left, but the right property is optional\n // then we say this property is permissable. This is because an optional\n // property on right is the same as property missing in left. If the\n // right is infer, then we just assign the extend type to inferred.\n : IsOptional(right[rightKey])\n ? IsInfer(right[rightKey])\n // @ts-ignore 5.0.1 - cannot observe extend in right[rightKey].extends\n ? Result.ExtendsTrue(Memory.Assign(inferred, { [right[rightKey].name]: right[rightKey].extends }))\n : Result.ExtendsTrue(inferred)\n : Result.ExtendsFalse());\n }\n // Check if all properties are ExtendsTrueLike\n const checked = Guard.Values(properties).every(result => Result.IsExtendsTrueLike(result));\n // Extract inferred results from properties, but only if the check is true.\n const extracted = checked ? ExtractInferredProperties(Guard.Keys(properties), properties) : {};\n return (checked\n ? Result.ExtendsTrue(extracted)\n : Result.ExtendsFalse());\n}\nfunction ExtendsProperties(inferred, left, right) {\n const compared = ExtendsPropertiesComparer(inferred, left, right);\n return (Result.IsExtendsTrueLike(compared)\n ? Result.ExtendsTrue(Memory.Assign(inferred, compared.inferred))\n : Result.ExtendsFalse());\n}\nfunction ExtendsObjectToObject(inferred, left, right) {\n return ExtendsProperties(inferred, left, right);\n}\nfunction RecordMergeInferred(left, right) {\n return Guard.Keys(right).reduce((result, key) => {\n return {\n ...result, [key]: Guard.HasPropertyKey(left, key)\n ? IsUnion(result[key])\n // @ts-ignore 5.0.4 cannot see `.anyOf`\n ? Union([...result[key].anyOf, right[key]])\n : Union([left[key], right[key]])\n : right[key]\n };\n }, left);\n}\nfunction ExtendsRecordComparer(properties, keys, type, result) {\n return Guard.ShiftLeft(keys, (left, right) => Result.Match(ExtendsLeft({}, properties[left], type), inferred => ExtendsRecordComparer(properties, right, type, RecordMergeInferred(result, inferred)), () => Result.ExtendsFalse()), () => Result.ExtendsTrue(result));\n}\nfunction ExtendsObjectToRecord(inferred, properties, _pattern, value) {\n const keys = Guard.Keys(properties);\n const result = ExtendsRecordComparer(properties, keys, value, inferred);\n return result;\n}\nexport function ExtendsObject(inferred, left, right) {\n return (IsRecord(right) ? ExtendsObjectToRecord(inferred, left, RecordPattern(right), RecordValue(right)) :\n IsObject(right) ? ExtendsObjectToObject(inferred, left, right.properties) :\n ExtendsRight(inferred, Object(left), right));\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsAny } from '../types/any.mjs';\nimport { IsUnknown } from '../types/unknown.mjs';\nimport { IsObject } from '../types/object.mjs';\nimport { IsRecord, RecordPatternToType, RecordPattern, RecordValue } from '../types/record.mjs';\nimport { ExtendsLeft } from './extends_left.mjs';\nimport * as Result from './result.mjs';\nfunction FromObject(inferred, properties) {\n return (Guard.IsEqual(Guard.Keys(properties).length, 0)\n ? Result.ExtendsTrue(inferred)\n : Result.ExtendsFalse());\n}\nfunction FromRecord(inferred, _leftKey, leftValue, _rightKey, rightValue) {\n return ExtendsLeft(inferred, leftValue, rightValue);\n}\nexport function ExtendsRecord(inferred, leftPattern, leftValue, right) {\n return (IsRecord(right) ? FromRecord(inferred, RecordPatternToType(leftPattern), leftValue, RecordPatternToType(RecordPattern(right)), RecordValue(right)) :\n IsObject(right) ? FromObject(inferred, right.properties) :\n IsAny(right) ? Result.ExtendsTrue(inferred) :\n IsUnknown(right) ? Result.ExtendsTrue(inferred) :\n Result.ExtendsFalse());\n}\n","// deno-fmt-ignore-file\nimport { IsString } from '../types/string.mjs';\nimport { ExtendsRight } from './extends_right.mjs';\nimport * as Result from './result.mjs';\nexport function ExtendsString(inferred, left, right) {\n return (IsString(right)\n ? Result.ExtendsTrue(inferred)\n : ExtendsRight(inferred, left, right));\n}\n","// deno-fmt-ignore-file\nimport { IsSymbol } from '../types/symbol.mjs';\nimport { ExtendsRight } from './extends_right.mjs';\nimport * as Result from './result.mjs';\nexport function ExtendsSymbol(inferred, left, right) {\n return (IsSymbol(right)\n ? Result.ExtendsTrue(inferred)\n : ExtendsRight(inferred, left, right));\n}\n","// deno-fmt-ignore-file\nimport { ExtendsLeft } from './extends_left.mjs';\nimport { EvaluateTemplateLiteral } from '../engine/evaluate/evaluate.mjs';\nexport function ExtendsTemplateLiteral(inferred, left, right) {\n const evaluated = EvaluateTemplateLiteral(left);\n return ExtendsLeft(inferred, evaluated, right);\n}\n","// deno-lint-ignore-file ban-types\n// deno-fmt-ignore-file\nimport { Unreachable } from '../../system/unreachable/index.mjs';\nimport { Memory } from '../../system/memory/index.mjs';\nimport { Guard } from '../../guard/index.mjs';\nimport { IsArray } from '../types/array.mjs';\nimport { IsUnknown } from '../types/unknown.mjs';\nimport { Tuple } from '../types/tuple.mjs';\nimport { ExtendsLeft } from './extends_left.mjs';\nimport { Union } from '../types/union.mjs';\n// ----------------------------------------------------------------------------\n// Operator\n// ----------------------------------------------------------------------------\nimport { IsInfer } from '../types/infer.mjs';\nimport { IsRest } from '../types/rest.mjs';\nimport * as Result from './result.mjs';\n// ----------------------------------------------------------------------------\n// Factory\n// ----------------------------------------------------------------------------\nexport function Inferrable(name, type) {\n return Memory.Create({ '~kind': 'Inferrable' }, { name, type }, {});\n}\n// ----------------------------------------------------------------------------\n// Guard\n// ----------------------------------------------------------------------------\nexport function IsInferable(value) {\n return Guard.IsObject(value)\n && Guard.HasPropertyKey(value, '~kind')\n && Guard.HasPropertyKey(value, 'name')\n && Guard.HasPropertyKey(value, 'type')\n && Guard.IsEqual(value[\"~kind\"], 'Inferrable')\n && Guard.IsString(value.name)\n && Guard.IsObject(value.type);\n}\nexport function TryRestInferable(type) {\n return (IsRest(type)\n ? IsInfer(type.items)\n ? IsArray(type.items.extends) ? Inferrable(type.items.name, type.items.extends.items) :\n IsUnknown(type.items.extends) ? Inferrable(type.items.name, type.items.extends) :\n undefined\n : Unreachable() // undefined\n : undefined);\n}\nexport function TryInferable(type) {\n return (IsInfer(type) ? Inferrable(type.name, type.extends) :\n undefined);\n}\n// function TryInferResults<Rest extends TSchema[], Right extends TSchema>(rest: [...Rest], right: Right, result: TSchema[] = []): TryInferResults<Rest, Right> {\n// return Guard.ShiftLeft(rest, (head, tail) =>\n// Result.Match(ExtendsLeft({}, head, right),\n// () => TryInferResults(tail, right, [...result, head]), // Stack Overflow Here (Large Rest)\n// () => undefined),\n// () => result) as never\n// }\nfunction TryInferResults(rest, right) {\n const result = [];\n for (const head of rest) {\n if (!Result.IsExtendsTrueLike(ExtendsLeft({}, head, right)))\n return undefined;\n result.push(head);\n }\n return result;\n}\nexport function InferTupleResult(inferred, name, left, right) {\n const results = TryInferResults(left, right);\n return (Guard.IsArray(results)\n ? Result.ExtendsTrue(Memory.Assign(inferred, { [name]: Tuple(results) }))\n : Result.ExtendsFalse());\n}\nexport function InferUnionResult(inferred, name, left, right) {\n const results = TryInferResults(left, right);\n return (Guard.IsArray(results)\n ? Result.ExtendsTrue(Memory.Assign(inferred, { [name]: Union(results) }))\n : Result.ExtendsFalse());\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema } from '../types/schema.mjs';\nimport { IsArray } from '../types/array.mjs';\nimport { IsTuple, Tuple } from '../types/tuple.mjs';\nimport { ExtendsLeft } from './extends_left.mjs';\nimport { ExtendsRight } from './extends_right.mjs';\nimport * as Result from './result.mjs';\nimport { InstantiateElements } from '../engine/instantiate.mjs';\nimport { State } from '../engine/instantiate.mjs';\n// ----------------------------------------------------------------------------\n// Inference\n// ----------------------------------------------------------------------------\nimport { TryRestInferable, TryInferable, IsInferable, InferTupleResult, InferUnionResult } from './inference.mjs';\nfunction Reverse(types) {\n return [...types].reverse();\n}\nfunction ApplyReverse(types, reversed) {\n return (reversed ? Reverse(types) : types);\n}\nfunction Reversed(types) {\n const first = types.length > 0 ? types[0] : undefined;\n const inferrable = IsSchema(first) ? TryRestInferable(first) : undefined;\n return IsSchema(inferrable);\n}\nfunction ElementsCompare(inferred, reversed, left, leftRest, right, rightRest) {\n return Result.Match(ExtendsLeft(inferred, left, right), checkInferred => Elements(checkInferred, reversed, leftRest, rightRest), () => Result.ExtendsFalse()); // 'left-and-right-not-compared'\n}\nfunction ElementsLeft(inferred, reversed, leftRest, right, rightRest) {\n const inferable = TryRestInferable(right);\n return (\n // Rest Inferrable Right Means we delegate to TInferTupleResult to Generate a Result\n IsInferable(inferable)\n ? InferTupleResult(inferred, inferable['name'], ApplyReverse(leftRest, reversed), inferable['type'])\n : Guard.ShiftLeft(leftRest, (head, tail) => ElementsCompare(inferred, reversed, head, tail, right, rightRest), () => Result.ExtendsFalse()));\n}\nfunction ElementsRight(inferred, reversed, leftRest, rightRest) {\n return Guard.ShiftLeft(rightRest, (head, tail) => ElementsLeft(inferred, reversed, leftRest, head, tail), () => Guard.IsEqual(leftRest.length, 0)\n ? Result.ExtendsTrue(inferred) // 'Ok: right-empty-and-left-empty'\n : Result.ExtendsFalse()); // 'Fail: right-empty-and-left-not-empty'\n}\nfunction Elements(inferred, reversed, leftRest, rightRest) {\n return ElementsRight(inferred, reversed, leftRest, rightRest);\n}\nfunction ExtendsTupleToTuple(inferred, left, right) {\n const instantiatedRight = InstantiateElements(inferred, State([], []), right);\n const reversed = Reversed(instantiatedRight);\n return Elements(inferred, reversed, ApplyReverse(left, reversed), ApplyReverse(instantiatedRight, reversed));\n}\n// function ExtendsTupleToArrayReduce<Inferred extends TProperties, Left extends TSchema[], Right extends TSchema>\n// (inferred: Inferred, left: [...Left], right: Right):\n// TExtendsTupleToArrayReduce<Inferred, Left, Right> {\n// return (\n// Guard.ShiftLeft(left, (head, tail) =>\n// Result.Match(ExtendsLeft(inferred, head, right), inferred =>\n// ExtendsTupleToArrayReduce(inferred, tail, right), // Stack Overflow Here (Large Left)\n// () => Result.ExtendsFalse()),\n// () => Result.ExtendsTrue(inferred))\n// ) as never\n// }\nfunction ExtendsTupleToArrayReduce(inferred, left, right) {\n for (const head of left) {\n const result = ExtendsLeft(inferred, head, right);\n if (!Result.IsExtendsTrueLike(result))\n return result;\n inferred = result.inferred; // (review-assign-to-argument)\n }\n return Result.ExtendsTrue(inferred);\n}\nfunction ExtendsTupleToArray(inferred, left, right) {\n const inferrable = TryInferable(right);\n return (IsInferable(inferrable)\n ? InferUnionResult(inferred, inferrable['name'], left, inferrable['type'])\n : ExtendsTupleToArrayReduce(inferred, left, right));\n}\nexport function ExtendsTuple(inferred, left, right) {\n const instantiatedLeft = InstantiateElements(inferred, State([], []), left);\n return (IsTuple(right) ? ExtendsTupleToTuple(inferred, instantiatedLeft, right.items) :\n IsArray(right) ? ExtendsTupleToArray(inferred, instantiatedLeft, right.items) :\n ExtendsRight(inferred, Tuple(instantiatedLeft), right));\n}\n","// deno-fmt-ignore-file\nimport { IsUndefined } from '../types/undefined.mjs';\nimport { IsVoid } from '../types/void.mjs';\nimport { ExtendsRight } from './extends_right.mjs';\nimport * as Result from './result.mjs';\nexport function ExtendsUndefined(inferred, left, right) {\n return (IsVoid(right) ? Result.ExtendsTrue(inferred) :\n IsUndefined(right) ? Result.ExtendsTrue(inferred) :\n ExtendsRight(inferred, left, right));\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsUnion } from '../types/union.mjs';\nimport { ExtendsLeft } from './extends_left.mjs';\nimport * as Result from './result.mjs';\n// ----------------------------------------------------------------------------\n// Inference\n// ----------------------------------------------------------------------------\nimport { IsInferable, TryInferable, InferUnionResult } from './inference.mjs';\nfunction ExtendsUnionSome(inferred, type, unionTypes) {\n return Guard.ShiftLeft(unionTypes, (head, tail) => Result.Match(ExtendsLeft(inferred, type, head), inferred => Result.ExtendsTrue(inferred), () => ExtendsUnionSome(inferred, type, tail)), () => Result.ExtendsFalse());\n}\nfunction ExtendsUnionLeft(inferred, left, right) {\n return Guard.ShiftLeft(left, (head, tail) => Result.Match(ExtendsUnionSome(inferred, head, right), inferred => ExtendsUnionLeft(inferred, tail, right), () => Result.ExtendsFalse()), () => Result.ExtendsTrue(inferred));\n}\nexport function ExtendsUnion(inferred, left, right) {\n const inferrable = TryInferable(right);\n return (IsInferable(inferrable)\n // @ts-ignore 4.9.5 fails to see `type` property on inferrable\n ? InferUnionResult(inferred, inferrable.name, left, inferrable.type)\n : IsUnion(right)\n ? ExtendsUnionLeft(inferred, left, right.anyOf)\n : ExtendsUnionLeft(inferred, left, [right]));\n}\n","// deno-fmt-ignore-file\nimport { IsAny } from '../types/any.mjs';\nimport { IsUnknown } from '../types/unknown.mjs';\nimport { IsInfer } from '../types/infer.mjs';\nimport { ExtendsRight } from './extends_right.mjs';\nimport * as Result from './result.mjs';\nexport function ExtendsUnknown(inferred, left, right) {\n return (IsInfer(right) ? ExtendsRight(inferred, left, right) :\n IsAny(right) ? Result.ExtendsTrue(inferred) :\n IsUnknown(right) ? Result.ExtendsTrue(inferred) :\n Result.ExtendsFalse());\n}\n","// deno-fmt-ignore-file\nimport { IsVoid } from '../types/void.mjs';\nimport { ExtendsRight } from './extends_right.mjs';\nimport * as Result from './result.mjs';\nexport function ExtendsVoid(inferred, left, right) {\n return (IsVoid(right)\n ? Result.ExtendsTrue(inferred)\n : ExtendsRight(inferred, left, right));\n}\n","// deno-fmt-ignore-file\nimport { ExtendsAny } from './any.mjs';\nimport { ExtendsArray } from './array.mjs';\nimport { ExtendsBigInt } from './bigint.mjs';\nimport { ExtendsBoolean } from './boolean.mjs';\nimport { ExtendsConstructor } from './constructor.mjs';\nimport { ExtendsDependent } from './dependent.mjs';\nimport { ExtendsEnum } from './enum.mjs';\nimport { ExtendsFunction } from './function.mjs';\nimport { ExtendsInteger } from './integer.mjs';\nimport { ExtendsIntersect } from './intersect.mjs';\nimport { ExtendsLiteral } from './literal.mjs';\nimport { ExtendsNever } from './never.mjs';\nimport { ExtendsNull } from './null.mjs';\nimport { ExtendsNumber } from './number.mjs';\nimport { ExtendsObject } from './object.mjs';\nimport { ExtendsRecord } from './record.mjs';\nimport { ExtendsString } from './string.mjs';\nimport { ExtendsSymbol } from './symbol.mjs';\nimport { ExtendsTemplateLiteral } from './template_literal.mjs';\nimport { ExtendsTuple } from './tuple.mjs';\nimport { ExtendsUndefined } from './undefined.mjs';\nimport { ExtendsUnion } from './union.mjs';\nimport { ExtendsUnknown } from './unknown.mjs';\nimport { ExtendsVoid } from './void.mjs';\n// ----------------------------------------------------------------------------\n// Types\n// ----------------------------------------------------------------------------\nimport { IsAny } from '../types/any.mjs';\nimport { IsArray } from '../types/array.mjs';\nimport { IsBigInt } from '../types/bigint.mjs';\nimport { IsBoolean } from '../types/boolean.mjs';\nimport { IsConstructor } from '../types/constructor.mjs';\nimport { IsDependent } from '../types/dependent.mjs';\nimport { IsEnum } from '../types/enum.mjs';\nimport { IsFunction } from '../types/function.mjs';\nimport { IsInteger } from '../types/integer.mjs';\nimport { IsIntersect } from '../types/intersect.mjs';\nimport { IsLiteral } from '../types/literal.mjs';\nimport { IsNever } from '../types/never.mjs';\nimport { IsNull } from '../types/null.mjs';\nimport { IsNumber } from '../types/number.mjs';\nimport { IsObject } from '../types/object.mjs';\nimport { IsRecord, RecordPattern, RecordValue } from '../types/record.mjs';\nimport { IsString } from '../types/string.mjs';\nimport { IsSymbol } from '../types/symbol.mjs';\nimport { IsTemplateLiteral } from '../types/template_literal.mjs';\nimport { IsTuple } from '../types/tuple.mjs';\nimport { IsUndefined } from '../types/undefined.mjs';\nimport { IsUnknown } from '../types/unknown.mjs';\nimport { IsUnion } from '../types/union.mjs';\nimport { IsVoid } from '../types/void.mjs';\nimport * as Result from './result.mjs';\nexport function ExtendsLeft(inferred, left, right) {\n return (IsAny(left) ? ExtendsAny(inferred, left, right) :\n IsArray(left) ? ExtendsArray(inferred, left, left.items, right) :\n IsBigInt(left) ? ExtendsBigInt(inferred, left, right) :\n IsBoolean(left) ? ExtendsBoolean(inferred, left, right) :\n IsConstructor(left) ? ExtendsConstructor(inferred, left.parameters, left.instanceType, right) :\n IsDependent(left) ? ExtendsDependent(inferred, left.if, left.then, left.else, right) :\n IsEnum(left) ? ExtendsEnum(inferred, left.enum, right) :\n IsFunction(left) ? ExtendsFunction(inferred, left.parameters, left.returnType, right) :\n IsInteger(left) ? ExtendsInteger(inferred, left, right) :\n IsIntersect(left) ? ExtendsIntersect(inferred, left.allOf, right) :\n IsLiteral(left) ? ExtendsLiteral(inferred, left, right) :\n IsNever(left) ? ExtendsNever(inferred, left, right) :\n IsNull(left) ? ExtendsNull(inferred, left, right) :\n IsNumber(left) ? ExtendsNumber(inferred, left, right) :\n IsObject(left) ? ExtendsObject(inferred, left.properties, right) :\n IsRecord(left) ? ExtendsRecord(inferred, RecordPattern(left), RecordValue(left), right) :\n IsString(left) ? ExtendsString(inferred, left, right) :\n IsSymbol(left) ? ExtendsSymbol(inferred, left, right) :\n IsTemplateLiteral(left) ? ExtendsTemplateLiteral(inferred, left.pattern, right) :\n IsTuple(left) ? ExtendsTuple(inferred, left.items, right) :\n IsUndefined(left) ? ExtendsUndefined(inferred, left, right) :\n IsUnion(left) ? ExtendsUnion(inferred, left.anyOf, right) :\n IsUnknown(left) ? ExtendsUnknown(inferred, left, right) :\n IsVoid(left) ? ExtendsVoid(inferred, left, right) :\n Result.ExtendsFalse());\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { Object } from '../../types/object.mjs';\nimport { EvaluateIntersect } from '../evaluate/evaluate.mjs';\nimport { InterfaceDeferred } from '../../action/index.mjs';\nimport { CanInstantiate } from '../instantiate.mjs';\nimport { InstantiateProperties } from '../instantiate.mjs';\nimport { InstantiateTypes } from '../instantiate.mjs';\nfunction InterfaceOperation(heritage, properties) {\n const result = EvaluateIntersect([...heritage, Object(properties)]);\n return result;\n}\nexport function InterfaceAction(heritage, properties, options) {\n const result = CanInstantiate(heritage)\n ? Memory.Update(InterfaceOperation(heritage, properties), {}, options)\n : InterfaceDeferred(heritage, properties, options);\n return result;\n}\nexport function InterfaceInstantiate(context, state, heritage, properties, options) {\n const instantiatedHeritage = InstantiateTypes(context, state, heritage);\n const instantiatedProperties = InstantiateProperties(context, state, properties);\n return InterfaceAction(instantiatedHeritage, instantiatedProperties, options);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema } from '../types/schema.mjs';\nimport { Deferred } from '../types/deferred.mjs';\nimport { InterfaceAction } from '../engine/interface/instantiate.mjs';\n/** Creates a deferred Interface action. */\nexport function InterfaceDeferred(heritage, properties, options = {}) {\n return Deferred('Interface', [heritage, properties], options);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if this value is a deferred Interface action. */\nexport function IsInterfaceDeferred(value) {\n return IsSchema(value)\n && Guard.HasPropertyKey(value, 'action')\n && Guard.IsEqual(value.action, 'Interface');\n}\n/** Creates an Interface using the given heritage and properties. */\nexport function Interface(heritage, properties, options = {}) {\n return InterfaceAction(heritage, properties, options);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { IsArray } from '../../types/array.mjs';\nimport { IsConstructor } from '../../types/constructor.mjs';\nimport { IsFunction } from '../../types/function.mjs';\nimport { IsIntersect } from '../../types/intersect.mjs';\nimport { IsObject } from '../../types/object.mjs';\nimport { PropertyValues } from '../../types/properties.mjs';\nimport { IsRecord, RecordValue } from '../../types/record.mjs';\nimport { IsTuple } from '../../types/tuple.mjs';\nimport { IsUnion } from '../../types/union.mjs';\nimport { IsRef } from '../../types/ref.mjs';\nimport { IsInterfaceDeferred } from '../../action/interface.mjs';\nfunction FromRef(stack, context, ref) {\n return (stack.includes(ref)\n ? true\n : FromType([...stack, ref], context, context[ref]));\n}\nfunction FromProperties(stack, context, properties) {\n const types = PropertyValues(properties);\n return FromTypes(stack, context, types);\n}\nfunction FromTypes(stack, context, types) {\n return Guard.ShiftLeft(types, (left, right) => FromType(stack, context, left)\n ? true\n : FromTypes(stack, context, right), () => false);\n}\nfunction FromType(stack, context, type) {\n return (IsRef(type) ? FromRef(stack, context, type.$ref) :\n IsArray(type) ? FromType(stack, context, type.items) :\n IsConstructor(type) ? FromTypes(stack, context, [...type.parameters, type.instanceType]) :\n IsFunction(type) ? FromTypes(stack, context, [...type.parameters, type.returnType]) :\n IsInterfaceDeferred(type) ? FromProperties(stack, context, type.parameters[1]) :\n IsIntersect(type) ? FromTypes(stack, context, type.allOf) :\n IsObject(type) ? FromProperties(stack, context, type.properties) :\n IsUnion(type) ? FromTypes(stack, context, type.anyOf) :\n IsTuple(type) ? FromTypes(stack, context, type.items) :\n IsRecord(type) ? FromType(stack, context, RecordValue(type)) :\n false);\n}\n/** Performs a cyclic check on the given type. Initial key stack can be empty, but faster if specified */\nexport function CyclicCheck(stack, context, type) {\n const result = FromType(stack, context, type);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { PropertyKeys } from '../../types/properties.mjs';\nimport { CyclicCheck } from './check.mjs';\nfunction ResolveCandidateKeys(context, keys) {\n return keys.reduce((result, left) => {\n return CyclicCheck([left], context, context[left])\n ? [...result, left]\n : result;\n }, []);\n}\n/** Returns keys for context types that need to be transformed to TCyclic. */\nexport function CyclicCandidates(context) {\n const keys = PropertyKeys(context);\n const result = ResolveCandidateKeys(context, keys);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { Unreachable } from '../../../system/unreachable/index.mjs';\nimport { IsArray } from '../../types/array.mjs';\nimport { IsConstructor } from '../../types/constructor.mjs';\nimport { IsFunction } from '../../types/function.mjs';\nimport { IsIntersect } from '../../types/intersect.mjs';\nimport { IsObject } from '../../types/object.mjs';\nimport { PropertyValues } from '../../types/properties.mjs';\nimport { IsRecord, RecordValue } from '../../types/record.mjs';\nimport { IsTuple } from '../../types/tuple.mjs';\nimport { IsUnion } from '../../types/union.mjs';\nimport { IsRef } from '../../types/ref.mjs';\nimport { IsInterfaceDeferred } from '../../action/interface.mjs';\nfunction FromRef(context, ref, result) {\n return (result.includes(ref)\n ? result\n : ref in context\n ? FromType(context, context[ref], [...result, ref])\n : Unreachable());\n}\nfunction FromProperties(context, properties, result) {\n const types = PropertyValues(properties);\n return FromTypes(context, types, result);\n}\nfunction FromTypes(context, types, result) {\n return types.reduce((result, left) => {\n return FromType(context, left, result);\n }, result);\n}\nfunction FromType(context, type, result) {\n return (IsRef(type) ? FromRef(context, type.$ref, result) :\n IsArray(type) ? FromType(context, type.items, result) :\n IsConstructor(type) ? FromTypes(context, [...type.parameters, type.instanceType], result) :\n IsFunction(type) ? FromTypes(context, [...type.parameters, type.returnType], result) :\n IsInterfaceDeferred(type) ? FromProperties(context, type.parameters[1], result) :\n IsIntersect(type) ? FromTypes(context, type.allOf, result) :\n IsObject(type) ? FromProperties(context, type.properties, result) :\n IsUnion(type) ? FromTypes(context, type.anyOf, result) :\n IsTuple(type) ? FromTypes(context, type.items, result) :\n IsRecord(type) ? FromType(context, RecordValue(type), result) :\n result);\n}\n/** Returns dependent cyclic keys for the given type. This function is used to dead-type-eliminate (DTE) for initializing TCyclic types. */\nexport function CyclicDependencies(context, key, type) {\n const result = FromType(context, type, [key]);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { Any } from '../../types/any.mjs';\nimport { Array as _Array_, IsArray, ArrayOptions } from '../../types/array.mjs';\nimport { Constructor, IsConstructor } from '../../types/constructor.mjs';\nimport { Function as _Function_, IsFunction } from '../../types/function.mjs';\nimport { Intersect, IsIntersect } from '../../types/intersect.mjs';\nimport { Object, IsObject } from '../../types/object.mjs';\nimport { IsRecord, Record, RecordKey, RecordValue } from '../../types/record.mjs';\nimport { IsRef } from '../../types/ref.mjs';\nimport { Tuple, IsTuple } from '../../types/tuple.mjs';\nimport { Union, IsUnion } from '../../types/union.mjs';\nimport { Unknown } from '../../types/unknown.mjs';\nfunction FromRef(_ref) {\n return Any();\n}\nfunction FromProperties(properties) {\n return Guard.Keys(properties).reduce((result, key) => {\n return { ...result, [key]: FromType(properties[key]) };\n }, {});\n}\nfunction FromTypes(types) {\n return types.reduce((result, left) => {\n return [...result, FromType(left)];\n }, []);\n}\nfunction FromType(type) {\n return (IsRef(type) ? FromRef(type.$ref) :\n IsArray(type) ? _Array_(FromType(type.items), ArrayOptions(type)) :\n IsConstructor(type) ? Constructor(FromTypes(type.parameters), FromType(type.instanceType)) :\n IsFunction(type) ? _Function_(FromTypes(type.parameters), FromType(type.returnType)) :\n IsIntersect(type) ? Intersect(FromTypes(type.allOf)) :\n IsObject(type) ? Object(FromProperties(type.properties)) :\n IsRecord(type) ? Record(RecordKey(type), FromType(RecordValue(type))) :\n IsUnion(type) ? Union(FromTypes(type.anyOf)) :\n IsTuple(type) ? Tuple(FromTypes(type.items)) :\n type);\n}\nfunction CyclicAnyFromParameters(defs, ref) {\n return (ref in defs\n ? FromType(defs[ref])\n : Unknown());\n}\n/** Transforms TCyclic TRef's into TAny's. This function is used prior to TExtends checks to enable cyclics to be structurally checked and terminated (with TAny) at first point of recursion, what would otherwise be a recursive TRef.*/\nexport function CyclicExtends(type) {\n return CyclicAnyFromParameters(type.$defs, type.$ref);\n}\n","// deno-lint-ignore-file ban-types\n// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { Cyclic } from '../../types/cyclic.mjs';\nimport { Object } from '../../types/object.mjs';\nimport { CyclicDependencies } from '../cyclic/dependencies.mjs';\nimport { IsInterfaceDeferred } from '../../action/index.mjs';\nimport { InstantiateProperties } from '../instantiate.mjs';\nimport { InstantiateTypes } from '../instantiate.mjs';\nimport { State } from '../instantiate.mjs';\nimport { EvaluateIntersect } from '../evaluate/evaluate.mjs';\nfunction CyclicInterface(context, heritage, properties) {\n const instantiatedHeritage = InstantiateTypes(context, State([], []), heritage);\n const instantiatedProperties = InstantiateProperties({}, State([], []), properties);\n const evaluatedInterface = EvaluateIntersect([...instantiatedHeritage, Object(instantiatedProperties)]);\n return evaluatedInterface;\n}\nfunction CyclicDefinitions(context, dependencies) {\n const keys = Guard.Keys(context).filter(key => dependencies.includes(key));\n return keys.reduce((result, key) => {\n const type = context[key];\n const instantiatedType = IsInterfaceDeferred(type) ? CyclicInterface(context, type.parameters[0], type.parameters[1]) : type;\n return { ...result, [key]: instantiatedType };\n }, {});\n}\nexport function InstantiateCyclic(context, ref, type) {\n const dependencies = CyclicDependencies(context, ref, type);\n const definitions = CyclicDefinitions(context, dependencies);\n const result = Cyclic(definitions, ref);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { Never } from '../../types/never.mjs';\nimport { IsRef } from '../../types/ref.mjs';\nfunction Resolve(defs, ref) {\n return (ref in defs\n ? IsRef(defs[ref])\n // @ts-ignore 5.0.4 - does not see $ref\n ? Resolve(defs, defs[ref].$ref)\n : defs[ref]\n : Never());\n}\n/** Returns the target Type from the Defs or Never if target is non-resolvable */\nexport function CyclicTarget(defs, ref) {\n const result = Resolve(defs, ref);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { IsCyclic } from '../types/cyclic.mjs';\nimport { Unknown } from '../types/unknown.mjs';\nimport { IsUnsafe } from '../types/unsafe.mjs';\nimport { ExtendsLeft } from './extends_left.mjs';\nimport { CyclicExtends } from '../engine/cyclic/index.mjs';\nfunction Canonical(type) {\n return (IsCyclic(type) ? CyclicExtends(type) :\n IsUnsafe(type) ? Unknown() :\n type);\n}\n/** Performs a structural extends check on left and right types and yields inferred types on right if specified. */\nexport function Extends(inferred, left, right) {\n const canonicalLeft = Canonical(left);\n const canonicalRight = Canonical(right);\n return ExtendsLeft(inferred, canonicalLeft, canonicalRight);\n}\n","// deno-lint-ignore-file ban-types\n// deno-fmt-ignore-file\nimport { Extends, ExtendsResult } from \"../../extends/index.mjs\";\n// ------------------------------------------------------------------\n// TCompare\n// ------------------------------------------------------------------\nexport const CompareResultEqual = 0; // 'equal'\nexport const CompareResultDisjoint = 1; // 'disjoint'\nexport const CompareResultLeftInside = 2; // 'left-inside'\nexport const CompareResultRightInside = 3; // 'right-inside'\n/** Compares left and right types and determines their set relationship. */\nexport function Compare(left, right) {\n const extendsCheck = [Extends({}, left, right), Extends({}, right, left)];\n return (ExtendsResult.IsExtendsTrueLike(extendsCheck[0]) && ExtendsResult.IsExtendsTrueLike(extendsCheck[1]) ? CompareResultEqual :\n ExtendsResult.IsExtendsTrueLike(extendsCheck[0]) && ExtendsResult.IsExtendsFalse(extendsCheck[1]) ? CompareResultLeftInside :\n ExtendsResult.IsExtendsFalse(extendsCheck[0]) && ExtendsResult.IsExtendsTrueLike(extendsCheck[1]) ? CompareResultRightInside :\n CompareResultDisjoint);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { IsAny } from '../../types/any.mjs';\nimport { IsNever } from '../../types/never.mjs';\nimport { IsObject } from '../../types/object.mjs';\nimport { IsUnknown } from '../../types/unknown.mjs';\nimport { Compare, CompareResultLeftInside, CompareResultEqual, CompareResultDisjoint } from './compare.mjs';\nimport { Flatten } from './flatten.mjs';\nimport { EvaluateType } from './evaluate.mjs';\nfunction BroadenFilter(type, types, result = [], all = types) {\n return Guard.ShiftLeft(types, (left, right) => {\n const compare = Compare(type, left);\n return ((Guard.IsEqual(compare, CompareResultLeftInside) || Guard.IsEqual(compare, CompareResultEqual))\n ? all // Left in set. Return original All set.\n : Guard.IsEqual(compare, CompareResultDisjoint)\n ? BroadenFilter(type, right, [...result, left], all) // Left is disjoint, keep it\n : BroadenFilter(type, right, result, all) // Left in Type, drop it\n );\n }, () => [...result, type]); // Type broadest in set\n}\nfunction BroadenType(type, types, result) {\n const evaluated = EvaluateType(type);\n return (IsAny(evaluated) ? [evaluated] : // terminate (always the most broad)\n IsUnknown(evaluated) ? [evaluated] : // terminate (always the most broad)\n IsNever(evaluated) ? BroadenTypes(types, result) : // ignored: never is dropped\n IsObject(evaluated) ? BroadenTypes(types, [...result, evaluated]) : // objects are always considered (too expensive to compare)\n BroadenTypes(types, BroadenFilter(evaluated, result)));\n}\nfunction BroadenTypes(types, result = []) {\n return Guard.ShiftLeft(types, (left, right) => (BroadenType(left, right, result)), () => result);\n}\n/** Broadens a set of types and returns either the most broad type, or union or disjoint types. */\nexport function Broaden(types) {\n const broadened = BroadenTypes(types);\n const flattened = Flatten(broadened);\n return flattened;\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { InstantiateType } from '../instantiate.mjs';\nimport { EvaluateType } from './evaluate.mjs';\nexport function EvaluateAction(type, options) {\n const result = Memory.Update(EvaluateType(type), {}, options);\n return result;\n}\nexport function EvaluateInstantiate(context, state, type, options) {\n const instantiatedType = InstantiateType(context, state, type);\n return EvaluateAction(instantiatedType, options);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { IsUnion } from '../../types/union.mjs';\nimport { IsDeferred } from '../../types/deferred.mjs';\nimport { IsEnum } from '../../types/enum.mjs';\nimport { IsTemplateLiteral } from '../../types/template_literal.mjs';\nimport { IsRef } from '../../types/ref.mjs';\n// ------------------------------------------------------------------\n// Infrastructure\n// ------------------------------------------------------------------\nimport { EvaluateTemplateLiteral } from '../evaluate/evaluate.mjs';\nimport { EvaluateEnum } from '../evaluate/evaluate.mjs';\nfunction CollectDistributionNames(expression, result = []) {\n return (\n // Conditional\n IsDeferred(expression) && Guard.IsEqual(expression.action, 'Conditional')\n ? IsRef(expression.parameters[0])\n ? CollectDistributionNames(expression.parameters[2], CollectDistributionNames(expression.parameters[3], [...result, expression.parameters[0]['$ref']]))\n : CollectDistributionNames(expression.parameters[2], CollectDistributionNames(expression.parameters[3], result))\n // Mapped\n : IsDeferred(expression) && Guard.IsEqual(expression.action, 'Mapped')\n ? (IsDeferred(expression.parameters[1]) && Guard.IsEqual(expression.parameters[1].action, 'KeyOf') && IsRef(expression.parameters[1].parameters[0]) ? [...result, expression.parameters[1].parameters[0]['$ref']] :\n result) : result);\n}\nfunction BuildDistributionArray(parameters, names) {\n return parameters.reduce((result, left) => [...result, names.includes(left.name)], []);\n}\nfunction ZipDistributionArray(arguments_, distributionArray, result = []) {\n return Guard.ShiftLeft(arguments_, (argumentLeft, argumentRight) => Guard.ShiftLeft(distributionArray, (booleanLeft, booleanRight) => ZipDistributionArray(argumentRight, booleanRight, [...result, [booleanLeft, argumentLeft]]), () => result), () => result);\n}\nfunction CanonicalArgument(type) {\n return (IsTemplateLiteral(type) ? EvaluateTemplateLiteral(type.pattern) :\n IsEnum(type) ? EvaluateEnum(type.enum) :\n type);\n}\nfunction Expand(type) {\n const canonicalArgument = CanonicalArgument(type);\n return (IsUnion(canonicalArgument)\n ? [...canonicalArgument.anyOf]\n : [canonicalArgument]);\n}\nfunction Append(current, type) {\n return current.reduce((result, left) => [...result, [...left, type]], []);\n}\nfunction Cross(current, variants) {\n return variants.reduce((result, left) => {\n return [...result, ...Append(current, left)];\n }, []);\n}\nfunction Distribute(zipped) {\n return zipped.reduce((result, left) => {\n return Guard.IsEqual(left[0], true)\n ? Cross(result, Expand(left[1]))\n : Cross(result, [left[1]]); // - no-expansion\n }, [[]]);\n}\nexport function DistributeArguments(parameters, arguments_, expression) {\n const distributionNames = CollectDistributionNames(expression);\n const distributionArray = BuildDistributionArray(parameters, distributionNames);\n const zippedArguments = ZipDistributionArray(arguments_, distributionArray);\n return (IsDeferred(expression) && Guard.IsEqual(expression.action, 'Conditional')\n ? Distribute(zippedArguments)\n : IsDeferred(expression) && Guard.IsEqual(expression.action, 'Mapped')\n ? Distribute(zippedArguments)\n : [arguments_]);\n}\n","// deno-fmt-ignore-file\nimport { Generic, IsGeneric } from '../../types/generic.mjs';\nimport { IsRef } from '../../types/ref.mjs';\nimport { Never } from '../../types/never.mjs';\nfunction FromNotResolvable() {\n return ['(not-resolvable)', Never()];\n}\nfunction FromNotGeneric() {\n return ['(not-generic)', Never()];\n}\nfunction FromGeneric(name, parameters, expression) {\n return [name, Generic(parameters, expression)];\n}\nfunction FromRef(context, ref, arguments_) {\n return (ref in context\n ? FromType(context, ref, context[ref], arguments_)\n : FromNotResolvable());\n}\nfunction FromType(context, name, target, arguments_) {\n return (IsGeneric(target) ? FromGeneric(name, target.parameters, target.expression) :\n IsRef(target) ? FromRef(context, target.$ref, arguments_) :\n FromNotGeneric());\n}\n/** Resolves a named generic target from the context, or returns TNever if it cannot be resolved or is not generic. */\nexport function ResolveTarget(context, target, arguments_) {\n return FromType(context, '(anonymous)', target, arguments_);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { InstantiateType } from '../instantiate.mjs';\nimport { Extends, ExtendsResult } from '../../extends/index.mjs';\nimport { IsInfer } from '../../types/infer.mjs';\nimport { IsCall } from '../../types/call.mjs';\n// ------------------------------------------------------------------\n// AssertArgument\n// ------------------------------------------------------------------\nfunction AssertArgumentExtends(name, type, extends_) {\n if (IsInfer(type) || IsCall(type) || ExtendsResult.IsExtendsTrueLike(Extends({}, type, extends_)))\n return;\n const cause = { parameter: name, expect: extends_, actual: type };\n // @ts-ignore - no definition for { cause } options \n throw new Error(`Argument for parameter ${name} does not satisfy constraint`, { cause });\n}\nfunction BindArgument(context, state, name, extends_, type) {\n const instantiatedArgument = InstantiateType(context, state, type);\n AssertArgumentExtends(name, instantiatedArgument, extends_);\n return Memory.Assign(context, { [name]: instantiatedArgument });\n}\nfunction BindArguments(context, state, parameterLeft, parameterRight, arguments_) {\n const instantiatedExtends = InstantiateType(context, state, parameterLeft.extends);\n const instantiatedEquals = InstantiateType(context, state, parameterLeft.equals);\n return Guard.ShiftLeft(arguments_, (left, right) => BindParameters(BindArgument(context, state, parameterLeft['name'], instantiatedExtends, left), state, parameterRight, right), () => BindParameters(BindArgument(context, state, parameterLeft['name'], instantiatedExtends, instantiatedEquals), state, parameterRight, []));\n}\nfunction BindParameters(context, state, parameters, arguments_) {\n return Guard.ShiftLeft(parameters, (left, right) => BindArguments(context, state, left, right, arguments_), () => context);\n}\nexport function ResolveArgumentsContext(context, state, parameters, arguments_) {\n return BindParameters(context, state, parameters, arguments_);\n}\n","// deno-fmt-ignore-file\nimport { Settings } from '../../../system/settings/index.mjs';\nimport { Guard } from '../../../guard/index.mjs';\nimport { CallConstruct } from '../../types/call.mjs';\nimport { Ref } from '../../types/ref.mjs';\nimport { IsGeneric } from '../../types/generic.mjs';\nimport { EvaluateUnion } from '../evaluate/index.mjs';\nimport { InstantiateType } from '../instantiate.mjs';\nimport { InstantiateTypes } from '../instantiate.mjs';\nimport { State } from '../instantiate.mjs';\n// ------------------------------------------------------------------\n// Infrastructure\n// ------------------------------------------------------------------\nimport { DistributeArguments } from './distribute_arguments.mjs';\nimport { ResolveTarget } from './resolve_target.mjs';\nimport { ResolveArgumentsContext } from './resolve_arguments.mjs';\n// ------------------------------------------------------------------\n// InstantiationGuard\n// ------------------------------------------------------------------\nlet instantiationDepth = 0;\nlet instantiationCount = 0;\nfunction InstantiationAssert() {\n if (Guard.IsLessThan(instantiationCount, Settings.Get().maxInstantiationCount))\n return;\n throw Error('Type instantiation is excessively deep and possibly infinite');\n}\nfunction InstantiationIncrement() {\n InstantiationAssert();\n instantiationCount++;\n instantiationDepth++;\n}\nfunction InstantiationDecrement() {\n instantiationDepth--;\n if (Guard.IsEqual(instantiationDepth, 0))\n instantiationCount = 0;\n}\nfunction Peek(state) {\n const result = Guard.IsGreaterThan(state.callstack.length, 0) ? state.callstack[state.callstack.length - 1] : '';\n return result;\n}\nfunction IsTailCall(state, name) {\n const result = Guard.IsEqual(Peek(state), name);\n return result;\n}\nfunction CallDispatch(context, state, target, parameters, expression, arguments_) {\n InstantiationIncrement();\n try {\n const argumentsContext = ResolveArgumentsContext(context, state, parameters, arguments_);\n const returnType = InstantiateType(argumentsContext, State([...state['callstack'], target['$ref']], state['visited']), expression);\n return InstantiateType(argumentsContext, State([], []), returnType);\n }\n finally {\n InstantiationDecrement();\n }\n}\nfunction CallDistributed(context, state, target, parameters, expression, distributedArguments) {\n return distributedArguments.reduce((result, arguments_) => {\n const returnType = CallDispatch(context, state, target, parameters, expression, arguments_);\n return [...result, returnType];\n }, []);\n}\nfunction CallImmediate(context, state, target, parameters, expression, arguments_) {\n const distributedArguments = DistributeArguments(parameters, arguments_, expression);\n const returnTypes = CallDistributed(context, state, target, parameters, expression, distributedArguments);\n const result = Guard.IsEqual(returnTypes.length, 1) ? returnTypes[0] : EvaluateUnion(returnTypes);\n return result;\n}\nexport function CallInstantiate(context, state, target, arguments_) {\n const instantiatedArguments = InstantiateTypes(context, state, arguments_);\n const resolved = ResolveTarget(context, target, arguments_);\n const name = resolved[0];\n const type = resolved[1];\n const result = (IsGeneric(type)\n ? IsTailCall(state, name)\n ? CallConstruct(Ref(name), instantiatedArguments)\n : CallImmediate(context, state, Ref(name), type.parameters, type.expression, instantiatedArguments)\n : CallConstruct(target, instantiatedArguments));\n return result;\n}\n","// deno-lint-ignore-file ban-types\n// deno-fmt-ignore-file\nimport { Memory } from '../../system/memory/index.mjs';\nimport { IsKind } from './schema.mjs';\nimport { CallInstantiate } from '../engine/call/instantiate.mjs';\nimport { State } from '../engine/instantiate.mjs';\nexport function CallConstruct(target, arguments_) {\n return Memory.Create({ ['~kind']: 'Call' }, { type: 'call', target, arguments: arguments_ }, {});\n}\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\n/** Creates a Call type. */\nexport function Call(target, arguments_) {\n return CallInstantiate({}, State([], []), target, arguments_);\n}\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/** Returns true if the given type is a TCall. */\nexport function IsCall(value) {\n return IsKind(value, 'Call');\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { InstantiateType } from '../instantiate.mjs';\nfunction RemoveImmutableOperation(type) {\n return Memory.Discard(type, ['~immutable']);\n}\nexport function RemoveImmutableAction(type, options) {\n const result = Memory.Update(RemoveImmutableOperation(type), {}, options);\n return result;\n}\nexport function RemoveImmutableInstantiate(context, state, type, options) {\n const instantiatedType = InstantiateType(context, state, type);\n return RemoveImmutableAction(instantiatedType, options);\n}\n","// deno-fmt-ignore-file\nexport function ApplyMapping(mapping, value) {\n return mapping(value);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { Literal } from '../../types/literal.mjs';\nimport { ApplyMapping } from './mapping.mjs';\nexport function FromLiteral(mapping, value) {\n return (Guard.IsString(value)\n ? Literal(ApplyMapping(mapping, value))\n : Literal(value));\n}\n","// deno-fmt-ignore-file\nimport { FromType } from './from_type.mjs';\nimport { EvaluateTemplateLiteral } from '../evaluate/index.mjs';\nexport function FromTemplateLiteral(mapping, pattern) {\n const evaluated = EvaluateTemplateLiteral(pattern);\n const result = FromType(mapping, evaluated);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { Union } from '../../types/union.mjs';\nimport { FromType } from './from_type.mjs';\nexport function FromUnion(mapping, types) {\n const result = types.map(type => FromType(mapping, type));\n return Union(result);\n}\n","// deno-fmt-ignore-file\nimport { IsLiteral } from '../../types/literal.mjs';\nimport { IsTemplateLiteral } from '../../types/template_literal.mjs';\nimport { IsUnion } from '../../types/union.mjs';\nimport { FromLiteral } from './from_literal.mjs';\nimport { FromTemplateLiteral } from './from_template_literal.mjs';\nimport { FromUnion } from './from_union.mjs';\nexport function FromType(mapping, type) {\n return (IsLiteral(type) ? FromLiteral(mapping, type.const) :\n IsTemplateLiteral(type) ? FromTemplateLiteral(mapping, type.pattern) :\n IsUnion(type) ? FromUnion(mapping, type.anyOf) :\n type);\n}\n","// deno-fmt-ignore-file\nimport { Deferred } from '../types/deferred.mjs';\nimport { CapitalizeAction } from '../engine/intrinsics/instantiate.mjs';\n/** Creates a deferred Capitalize action. */\nexport function CapitalizeDeferred(type, options = {}) {\n return Deferred('Capitalize', [type], options);\n}\n/** Applies a Capitalize action to the given type. */\nexport function Capitalize(type, options = {}) {\n return CapitalizeAction(type, options);\n}\n","// deno-fmt-ignore-file\nimport { Deferred } from '../types/deferred.mjs';\nimport { LowercaseAction } from '../engine/intrinsics/instantiate.mjs';\n/** Creates a deferred Lowercase action. */\nexport function LowercaseDeferred(type, options = {}) {\n return Deferred('Lowercase', [type], options);\n}\n/** Applies a Lowercase action to the given type. */\nexport function Lowercase(type, options = {}) {\n return LowercaseAction(type, options);\n}\n","// deno-fmt-ignore-file\nimport { Deferred } from '../types/deferred.mjs';\nimport { UncapitalizeAction } from '../engine/intrinsics/instantiate.mjs';\n/** Creates a deferred Uncapitalize action. */\nexport function UncapitalizeDeferred(type, options = {}) {\n return Deferred('Uncapitalize', [type], options);\n}\n/** Applies a Uncapitalize action to the given type. */\nexport function Uncapitalize(type, options = {}) {\n return UncapitalizeAction(type, options);\n}\n","// deno-fmt-ignore-file\nimport { Deferred } from '../types/deferred.mjs';\nimport { UppercaseAction } from '../engine/intrinsics/instantiate.mjs';\n/** Creates a deferred Uppercase action. */\nexport function UppercaseDeferred(type, options = {}) {\n return Deferred('Uppercase', [type], options);\n}\n/** Applies a Uppercase action to the given type. */\nexport function Uppercase(type, options = {}) {\n return UppercaseAction(type, options);\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { FromType } from './from_type.mjs';\nimport { InstantiateType, CanInstantiate } from '../instantiate.mjs';\nimport { CapitalizeDeferred } from '../../action/capitalize.mjs';\nimport { LowercaseDeferred } from '../../action/lowercase.mjs';\nimport { UncapitalizeDeferred } from '../../action/uncapitalize.mjs';\nimport { UppercaseDeferred } from '../../action/uppercase.mjs';\nconst CapitalizeMapping = (input) => input[0].toUpperCase() + input.slice(1);\nconst LowercaseMapping = (input) => input.toLowerCase();\nconst UncapitalizeMapping = (input) => input[0].toLowerCase() + input.slice(1);\nconst UppercaseMapping = (input) => input.toUpperCase();\nexport function CapitalizeAction(type, options) {\n const result = CanInstantiate([type])\n ? Memory.Update(FromType(CapitalizeMapping, type), {}, options)\n : CapitalizeDeferred(type, options);\n return result;\n}\nexport function LowercaseAction(type, options) {\n const result = CanInstantiate([type])\n ? Memory.Update(FromType(LowercaseMapping, type), {}, options)\n : LowercaseDeferred(type, options);\n return result;\n}\nexport function UncapitalizeAction(type, options) {\n const result = CanInstantiate([type])\n ? Memory.Update(FromType(UncapitalizeMapping, type), {}, options)\n : UncapitalizeDeferred(type, options);\n return result;\n}\nexport function UppercaseAction(type, options) {\n const result = CanInstantiate([type])\n ? Memory.Update(FromType(UppercaseMapping, type), {}, options)\n : UppercaseDeferred(type, options);\n return result;\n}\nexport function CapitalizeInstantiate(context, state, type, options) {\n const instantiatedType = InstantiateType(context, state, type);\n return CapitalizeAction(instantiatedType, options);\n}\nexport function LowercaseInstantiate(context, state, type, options) {\n const instantiatedType = InstantiateType(context, state, type);\n return LowercaseAction(instantiatedType, options);\n}\nexport function UncapitalizeInstantiate(context, state, type, options) {\n const instantiatedType = InstantiateType(context, state, type);\n return UncapitalizeAction(instantiatedType, options);\n}\nexport function UppercaseInstantiate(context, state, type, options) {\n const instantiatedType = InstantiateType(context, state, type);\n return UppercaseAction(instantiatedType, options);\n}\n","// deno-lint-ignore-file ban-types\n// deno-fmt-ignore-file\nimport { Deferred } from '../types/deferred.mjs';\nimport { ConditionalAction } from '../engine/conditional/instantiate.mjs';\nimport { State } from '../engine/instantiate.mjs';\n/** Creates a deferred Conditional action. */\nexport function ConditionalDeferred(left, right, true_, false_, options = {}) {\n return Deferred('Conditional', [left, right, true_, false_], options);\n}\n/** Applies a Conditional action to the given types. */\nexport function Conditional(left, right, true_, false_, options = {}) {\n return ConditionalAction({}, State([], []), left, right, true_, false_, options);\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { Union } from '../../types/union.mjs';\nimport { Extends, ExtendsResult } from '../../extends/index.mjs';\nimport { InstantiateType, CanInstantiate } from '../instantiate.mjs';\nimport { ConditionalDeferred } from '../../action/conditional.mjs';\nfunction ConditionalOperation(context, state, left, right, true_, false_) {\n const extendsResult = Extends(context, left, right);\n return (ExtendsResult.IsExtendsUnion(extendsResult) ? Union([InstantiateType(extendsResult.inferred, state, true_), InstantiateType(context, state, false_)]) :\n ExtendsResult.IsExtendsTrue(extendsResult) ? InstantiateType(extendsResult.inferred, state, true_) :\n InstantiateType(context, state, false_));\n}\nexport function ConditionalAction(context, state, left, right, true_, false_, options) {\n const result = CanInstantiate([left, right])\n ? Memory.Update(ConditionalOperation(context, state, left, right, true_, false_), {}, options)\n : ConditionalDeferred(left, right, true_, false_, options);\n return result;\n}\nexport function ConditionalInstantiate(context, state, left, right, true_, false_, options) {\n const instantiatedLeft = InstantiateType(context, state, left);\n const instantiatedRight = InstantiateType(context, state, right);\n return ConditionalAction(context, state, instantiatedLeft, instantiatedRight, true_, false_, options);\n}\n","// deno-fmt-ignore-file\nimport { Deferred } from '../types/deferred.mjs';\nimport { ConstructorParametersAction } from '../engine/constructor_parameters/instantiate.mjs';\n/** Creates a deferred ConstructorParameters action. */\nexport function ConstructorParametersDeferred(type, options = {}) {\n return Deferred('ConstructorParameters', [type], options);\n}\n/** Applies a ConstructorParameters action to a type. */\nexport function ConstructorParameters(type, options = {}) {\n return ConstructorParametersAction(type, options);\n}\n","// deno-lint-ignore-file ban-types\n// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { IsConstructor } from '../../types/constructor.mjs';\nimport { Tuple } from '../../types/tuple.mjs';\nimport { ConstructorParametersDeferred } from '../../action/constructor_parameters.mjs';\nimport { InstantiateType, CanInstantiate } from '../instantiate.mjs';\nimport { InstantiateElements } from '../instantiate.mjs';\nimport { State } from '../instantiate.mjs';\nfunction ConstructorParametersOperation(type) {\n const parameters = IsConstructor(type) ? type['parameters'] : [];\n const instantiatedParameters = InstantiateElements({}, State([], []), parameters);\n const result = Tuple(instantiatedParameters);\n return result;\n}\nexport function ConstructorParametersAction(type, options) {\n const result = CanInstantiate([type])\n ? Memory.Update(ConstructorParametersOperation(type), {}, options)\n : ConstructorParametersDeferred(type, options);\n return result;\n}\nexport function ConstructorParametersInstantiate(context, state, type, options) {\n const instantiatedType = InstantiateType(context, state, type);\n return ConstructorParametersAction(instantiatedType, options);\n}\n","// deno-fmt-ignore-file\nimport { Deferred } from '../types/deferred.mjs';\nimport { ExcludeAction } from '../engine/exclude/instantiate.mjs';\n/** Creates a deferred Exclude action. */\nexport function ExcludeDeferred(left, right, options = {}) {\n return Deferred('Exclude', [left, right], options);\n}\n/** Applies a Exclude action using the given types */\nexport function Exclude(left, right, options = {}) {\n return ExcludeAction(left, right, options);\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { InstantiateType, CanInstantiate } from '../instantiate.mjs';\nimport { ExcludeDeferred } from '../../action/exclude.mjs';\nimport { ExcludeOperation } from './operation.mjs';\nexport function ExcludeAction(left, right, options) {\n const result = CanInstantiate([left, right])\n ? Memory.Update(ExcludeOperation(left, right), {}, options)\n : ExcludeDeferred(left, right, options);\n return result;\n}\nexport function ExcludeInstantiate(context, state, left, right, options) {\n const instantiatedLeft = InstantiateType(context, state, left);\n const instantiatedRight = InstantiateType(context, state, right);\n return ExcludeAction(instantiatedLeft, instantiatedRight, options);\n}\n","// deno-fmt-ignore-file\nimport { Deferred } from '../types/deferred.mjs';\nimport { ExtractAction } from '../engine/extract/instantiate.mjs';\n/** Creates a deferred Extract action. */\nexport function ExtractDeferred(left, right, options = {}) {\n return Deferred('Extract', [left, right], options);\n}\n/** Applies an Extract action using the given types. */\nexport function Extract(left, right, options = {}) {\n return ExtractAction(left, right, options);\n}\n","// deno-lint-ignore-file ban-types\n// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { IsUnion } from '../../types/union.mjs';\nimport { Extends, ExtendsResult } from '../../extends/index.mjs';\nimport { EvaluateType } from '../evaluate/evaluate.mjs';\nimport { EvaluateUnion } from '../evaluate/evaluate.mjs';\nfunction ExtractType(left, right) {\n const check = Extends({}, left, right);\n const result = ExtendsResult.IsExtendsTrueLike(check) ? [left] : [];\n return result;\n}\nfunction ExtractUnion(left, right, result = []) {\n return Guard.ShiftLeft(left, (head, tail) => ExtractUnion(tail, right, [...result, ...ExtractType(head, right)]), () => result);\n}\nexport function ExtractOperation(left, right) {\n const evaluated = EvaluateType(left);\n const canonical = IsUnion(evaluated) ? evaluated.anyOf : [evaluated];\n const remaining = ExtractUnion(canonical, right);\n const result = EvaluateUnion(remaining);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { InstantiateType, CanInstantiate } from '../instantiate.mjs';\nimport { ExtractDeferred } from '../../action/extract.mjs';\nimport { ExtractOperation } from './operation.mjs';\nexport function ExtractAction(left, right, options) {\n const result = CanInstantiate([left, right])\n ? Memory.Update(ExtractOperation(left, right), {}, options)\n : ExtractDeferred(left, right, options);\n return result;\n}\nexport function ExtractInstantiate(context, state, left, right, options) {\n const instantiatedLeft = InstantiateType(context, state, left);\n const instantiatedRight = InstantiateType(context, state, right);\n return ExtractAction(instantiatedLeft, instantiatedRight, options);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { Deferred } from '../types/deferred.mjs';\nimport { KeysToIndexer } from '../engine/helpers/keys_to_indexer.mjs';\nimport { IndexAction } from '../engine/indexed/instantiate.mjs';\n/** Creates a deferred Index action. */\nexport function IndexDeferred(type, indexer, options = {}) {\n return Deferred('Index', [type, indexer], options);\n}\n/** Applies a Index action using the given types. */\nexport function Index(type, indexer_or_keys, options = {}) {\n const indexer = Guard.IsArray(indexer_or_keys) ? KeysToIndexer(indexer_or_keys) : indexer_or_keys;\n return IndexAction(type, indexer, options);\n}\n","// deno-fmt-ignore-file\nimport { FromType } from './from_type.mjs';\nimport { CyclicTarget } from '../cyclic/target.mjs';\nexport function FromCyclic(defs, ref) {\n const target = CyclicTarget(defs, ref);\n const result = FromType(target);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { FromType } from './from_type.mjs';\nimport { EvaluateDependent } from '../evaluate/evaluate.mjs';\nexport function FromDependent(if_, then_, else_) {\n const evaluated = EvaluateDependent(if_, then_, else_);\n const result = FromType(evaluated);\n return result;\n}\n","// deno-lint-ignore-file ban-types\n// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { Guard } from '../../../guard/index.mjs';\nimport { FromType } from './from_type.mjs';\nimport { EvaluateIntersect } from '../evaluate/evaluate.mjs';\nfunction CollapseIntersectProperties(left, right) {\n const leftKeys = Guard.Keys(left).filter((key) => !Guard.HasPropertyKey(right, key));\n const rightKeys = Guard.Keys(right).filter((key) => !Guard.HasPropertyKey(left, key));\n const sharedKeys = Guard.Keys(left).filter((key) => Guard.HasPropertyKey(right, key));\n const leftProperties = leftKeys.reduce((result, key) => ({ ...result, [key]: left[key] }), {});\n const rightProperties = rightKeys.reduce((result, key) => ({ ...result, [key]: right[key] }), {});\n const sharedProperties = sharedKeys.reduce((result, key) => ({ ...result, [key]: EvaluateIntersect([left[key], right[key]]) }), {});\n const unique = Memory.Assign(leftProperties, rightProperties);\n const shared = Memory.Assign(unique, sharedProperties);\n return shared;\n}\nexport function FromIntersect(types) {\n return types.reduce((result, left) => {\n return CollapseIntersectProperties(result, FromType(left));\n }, {});\n}\n","// deno-fmt-ignore-file\nexport function FromObject(properties) {\n return properties;\n}\n","// deno-fmt-ignore-file\nimport { Tuple } from '../../types/tuple.mjs';\nimport { TupleToObject } from '../tuple/to_object.mjs';\nimport { FromType } from './from_type.mjs';\nexport function FromTuple(types) {\n const object = TupleToObject(Tuple(types));\n const result = FromType(object);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { Unreachable } from '../../../system/unreachable/index.mjs';\nimport { EvaluateUnion } from '../evaluate/evaluate.mjs';\nimport { FromType } from './from_type.mjs';\nfunction CollapseUnionProperties(left, right) {\n const sharedKeys = Guard.Keys(left).filter((key) => key in right);\n const result = sharedKeys.reduce((result, key) => {\n return { ...result, [key]: EvaluateUnion([left[key], right[key]]) };\n }, {});\n return result;\n}\nfunction ReduceVariants(types, result) {\n return Guard.ShiftLeft(types, (left, right) => ReduceVariants(right, CollapseUnionProperties(result, FromType(left))), () => result);\n}\nexport function FromUnion(types) {\n return Guard.ShiftLeft(types, (left, right) => ReduceVariants(right, FromType(left)), () => Unreachable());\n}\n// deno-coverage-ignore-stop\n","// deno-lint-ignore-file ban-types\n// deno-fmt-ignore-file\nimport { IsCyclic } from '../../types/cyclic.mjs';\nimport { IsDependent } from '../../types/dependent.mjs';\nimport { IsIntersect } from '../../types/intersect.mjs';\nimport { IsObject } from '../../types/object.mjs';\nimport { IsTuple } from '../../types/tuple.mjs';\nimport { IsUnion } from '../../types/union.mjs';\nimport { FromCyclic } from './from_cyclic.mjs';\nimport { FromDependent } from './from_dependent.mjs';\nimport { FromIntersect } from './from_intersect.mjs';\nimport { FromObject } from './from_object.mjs';\nimport { FromTuple } from './from_tuple.mjs';\nimport { FromUnion } from './from_union.mjs';\nexport function FromType(type) {\n return (IsCyclic(type) ? FromCyclic(type.$defs, type.$ref) :\n IsDependent(type) ? FromDependent(type.if, type.then, type.else) :\n IsIntersect(type) ? FromIntersect(type.allOf) :\n IsUnion(type) ? FromUnion(type.anyOf) :\n IsTuple(type) ? FromTuple(type.items) :\n IsObject(type) ? FromObject(type.properties) :\n {});\n}\n","// deno-fmt-ignore-file\nimport { Object } from '../../types/object.mjs';\nimport { FromType } from './from_type.mjs';\n/**\n * Collapses a type into a TObject schema. This is a lossy fast path used to\n * normalize arbitrary TSchema types into a TObject structure. This function is\n * primarily used in indexing operations where a normalized object structure\n * is required. If the type cannot be collapsed, an empty object schema is returned.\n */\nexport function CollapseToObject(type) {\n const properties = FromType(type);\n const result = Object(properties);\n return result;\n}\n","// deno-fmt-ignore-file\nconst integerKeyPattern = new RegExp('^(?:0|[1-9][0-9]*)$');\nexport function ConvertToIntegerKey(value) {\n const normal = `${value}`;\n return (integerKeyPattern.test(normal)\n ? parseInt(normal)\n : value);\n}\n","// deno-lint-ignore-file ban-types\n// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { Intersect, IsIntersect } from '../../types/intersect.mjs';\nimport { Union, IsUnion } from '../../types/union.mjs';\nimport { Literal, IsLiteral } from '../../types/literal.mjs';\nimport { Number } from '../../types/number.mjs';\nimport { Never } from '../../types/never.mjs';\nimport { Extends, ExtendsResult } from '../../extends/index.mjs';\nimport { ConvertToIntegerKey } from '../helpers/keys.mjs';\nfunction NormalizeLiteral(value) {\n return Literal(ConvertToIntegerKey(value));\n}\nfunction NormalizeIndexerTypes(types) {\n return types.map(type => NormalizeIndexer(type));\n}\nexport function NormalizeIndexer(type) {\n return (IsIntersect(type) ? Intersect(NormalizeIndexerTypes(type.allOf)) :\n IsUnion(type) ? Union(NormalizeIndexerTypes(type.anyOf)) :\n IsLiteral(type) ? NormalizeLiteral(type.const) :\n type);\n}\nexport function FromArray(type, indexer) {\n const normalizedIndexer = NormalizeIndexer(indexer);\n const check = Extends({}, normalizedIndexer, Number());\n const result = (\n // indexer\n ExtendsResult.IsExtendsTrueLike(check)\n ? type\n // length (intrinsic)\n : IsLiteral(indexer) && Guard.IsEqual(indexer.const, 'length')\n ? Number()\n : Never());\n return result;\n}\n","// deno-fmt-ignore-file\nimport { FromType } from './from_type.mjs';\nimport { CyclicTarget } from '../cyclic/target.mjs';\nexport function FromCyclic(defs, ref) {\n const target = CyclicTarget(defs, ref);\n const result = FromType(target);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { FromType } from './from_type.mjs';\nimport { EvaluateDependent } from '../evaluate/evaluate.mjs';\nexport function FromDependent(if_, then_, else_) {\n const evaluated = EvaluateDependent(if_, then_, else_);\n const result = FromType(evaluated);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { FromType } from './from_type.mjs';\nimport { EvaluateEnum } from '../evaluate/evaluate.mjs';\nexport function FromEnum(values) {\n const evaluated = EvaluateEnum(values);\n const result = FromType(evaluated);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { EvaluateIntersect } from '../evaluate/evaluate.mjs';\nimport { FromType } from './from_type.mjs';\nexport function FromIntersect(types) {\n const evaluated = EvaluateIntersect(types);\n const result = FromType(evaluated);\n return result;\n}\n","// deno-fmt-ignore-file\nexport function FromLiteral(value) {\n const result = [`${value}`];\n return result;\n}\n","// deno-fmt-ignore-file\nimport { FromType } from './from_type.mjs';\nimport { EvaluateTemplateLiteral } from '../evaluate/evaluate.mjs';\nexport function FromTemplateLiteral(pattern) {\n const evaluated = EvaluateTemplateLiteral(pattern);\n const result = FromType(evaluated);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { FromType } from './from_type.mjs';\nexport function FromUnion(types) {\n return types.reduce((result, left) => {\n return [...result, ...FromType(left)];\n }, []);\n}\n","// deno-fmt-ignore-file\nimport { IsCyclic } from '../../types/cyclic.mjs';\nimport { IsDependent } from '../../types/dependent.mjs';\nimport { IsEnum } from '../../types/enum.mjs';\nimport { IsIntersect } from '../../types/intersect.mjs';\nimport { IsLiteral } from '../../types/literal.mjs';\nimport { IsTemplateLiteral } from '../../types/template_literal.mjs';\nimport { IsUnion } from '../../types/union.mjs';\nimport { FromCyclic } from './from_cyclic.mjs';\nimport { FromDependent } from './from_dependent.mjs';\nimport { FromEnum } from './from_enum.mjs';\nimport { FromIntersect } from './from_intersect.mjs';\nimport { FromLiteral } from './from_literal.mjs';\nimport { FromTemplateLiteral } from './from_template_literal.mjs';\nimport { FromUnion } from './from_union.mjs';\nexport function FromType(type) {\n return (IsCyclic(type) ? FromCyclic(type.$defs, type.$ref) :\n IsDependent(type) ? FromDependent(type.if, type.then, type.else) :\n IsEnum(type) ? FromEnum(type.enum) :\n IsIntersect(type) ? FromIntersect(type.allOf) :\n IsLiteral(type) ? FromLiteral(type.const) :\n IsTemplateLiteral(type) ? FromTemplateLiteral(type.pattern) :\n IsUnion(type) ? FromUnion(type.anyOf) :\n []);\n}\n","// deno-fmt-ignore-file\nimport { FromType } from './from_type.mjs';\n/**\n * Transforms a type meant as an Indexer into string[] array which is used by Indexable types\n * like Index, Pick and Omit to select from property keys. This function should only be used\n * for Object key selection, and not for Array / Tuple key selection as Array-Like structures\n * require TNumber indexing support.\n */\nexport function ToIndexableKeys(type) {\n const result = FromType(type);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { IsArray, _Array_ } from '../../types/array.mjs';\nimport { IsConstructor, Constructor } from '../../types/constructor.mjs';\nimport { IsFunction, _Function_ } from '../../types/function.mjs';\nimport { IsIntersect, Intersect } from '../../types/intersect.mjs';\nimport { _Object_ } from '../../types/object.mjs';\nimport { IsTuple, Tuple } from '../../types/tuple.mjs';\nimport { IsThis } from '../../types/this.mjs';\nimport { IsUnion, Union } from '../../types/union.mjs';\nfunction FromTypes(properties, types) {\n return types.map(type => FromType(properties, type));\n}\nexport function FromType(properties, type) {\n return (IsArray(type) ? _Array_(FromType(properties, type.items)) :\n IsConstructor(type) ? Constructor(FromTypes(properties, type.parameters), FromType(properties, type.instanceType)) :\n IsFunction(type) ? _Function_(FromTypes(properties, type.parameters), FromType(properties, type.returnType)) :\n IsTuple(type) ? Tuple(FromTypes(properties, type.items)) :\n IsUnion(type) ? Union(FromTypes(properties, type.anyOf)) :\n IsIntersect(type) ? Intersect(FromTypes(properties, type.allOf)) :\n IsThis(type) ? _Object_(properties) :\n type);\n}\nexport function ExpandThis(properties, type) {\n const result = FromType(properties, type);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { IsNumber } from '../../types/number.mjs';\nimport { Never } from '../../types/never.mjs';\nimport { PropertyKeys } from '../../types/properties.mjs';\nimport { EvaluateUnion } from '../evaluate/evaluate.mjs';\nimport { ToIndexableKeys } from '../indexable/to_indexable_keys.mjs';\nimport { IntegerKey } from '../../types/record.mjs';\nimport { ExpandThis } from '../this/expand_this.mjs';\nfunction IndexProperty(properties, key) {\n const selectedType = key in properties ? properties[key] : Never();\n const result = ExpandThis(properties, selectedType);\n return result;\n}\nfunction IndexProperties(properties, keys) {\n return keys.reduce((result, left) => {\n return [...result, IndexProperty(properties, left)];\n }, []);\n}\nfunction FromIndexer(properties, indexer) {\n const keys = ToIndexableKeys(indexer);\n const variants = IndexProperties(properties, keys);\n const result = EvaluateUnion(variants);\n return result;\n}\nconst NumericKeyPattern = new RegExp(IntegerKey);\nfunction NumericKeys(keys) {\n const result = keys.filter(key => NumericKeyPattern.test(key));\n return result;\n}\nfunction FromIndexerNumber(properties) {\n const keys = PropertyKeys(properties);\n const numericKeys = NumericKeys(keys);\n const variants = IndexProperties(properties, numericKeys);\n const result = EvaluateUnion(variants);\n return result;\n}\nexport function FromObject(properties, indexer) {\n const result = IsNumber(indexer) ? FromIndexerNumber(properties) : FromIndexer(properties, indexer);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { Union, IsUnion } from '../../types/union.mjs';\nimport { Intersect, IsIntersect } from '../../types/intersect.mjs';\nimport { Literal, IsLiteral } from '../../types/literal.mjs';\nimport { ConvertToIntegerKey } from '../helpers/keys.mjs';\nfunction ConvertLiteral(value) {\n return Literal(ConvertToIntegerKey(value));\n}\nfunction ArrayIndexerTypes(types) {\n return types.map(type => FormatArrayIndexer(type));\n}\n/** Formats embedded integer-like strings on an Indexer to be number values inline with TS indexing | coercion behaviors. */\nexport function FormatArrayIndexer(type) {\n return (IsIntersect(type) ? Intersect(ArrayIndexerTypes(type.allOf)) :\n IsUnion(type) ? Union(ArrayIndexerTypes(type.anyOf)) :\n IsLiteral(type) ? ConvertLiteral(type.const) :\n type);\n}\n","// deno-lint-ignore-file ban-types\n// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { Literal, IsLiteral } from '../../types/literal.mjs';\nimport { IsNumber } from '../../types/number.mjs';\nimport { IsInteger } from '../../types/integer.mjs';\nimport { EvaluateUnionFast } from '../evaluate/evaluate.mjs';\nimport { Extends, ExtendsResult } from '../../extends/index.mjs';\nimport { FormatArrayIndexer } from './array_indexer.mjs';\nfunction IndexElementsWithIndexer(types, indexer) {\n return types.reduceRight((result, right, index) => {\n const check = Extends({}, Literal(index), indexer);\n return ExtendsResult.IsExtendsTrueLike(check)\n ? [right, ...result]\n : result;\n }, []);\n}\nfunction FromTupleWithIndexer(types, indexer) {\n const formattedArrayIndexer = FormatArrayIndexer(indexer);\n const elements = IndexElementsWithIndexer(types, formattedArrayIndexer);\n return EvaluateUnionFast(elements);\n}\nfunction FromTupleWithoutIndexer(types) {\n return EvaluateUnionFast(types);\n}\nexport function FromTuple(types, indexer) {\n return (\n // length (intrinsic)\n IsLiteral(indexer) && Guard.IsEqual(indexer.const, 'length')\n ? Literal(types.length)\n // indexer\n : IsNumber(indexer) || IsInteger(indexer)\n ? FromTupleWithoutIndexer(types)\n : FromTupleWithIndexer(types, indexer));\n}\n","// deno-fmt-ignore-file\nimport { IsArray } from '../../types/array.mjs';\nimport { Never } from '../../types/never.mjs';\nimport { IsObject } from '../../types/object.mjs';\nimport { IsTuple } from '../../types/tuple.mjs';\nimport { FromArray } from './from_array.mjs';\nimport { FromObject } from './from_object.mjs';\nimport { FromTuple } from './from_tuple.mjs';\nexport function FromType(type, indexer) {\n return (IsArray(type) ? FromArray(type.items, indexer) :\n IsObject(type) ? FromObject(type.properties, indexer) :\n IsTuple(type) ? FromTuple(type.items, indexer) :\n Never());\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { IsCyclic } from '../../types/cyclic.mjs';\nimport { IsDependent } from '../../types/dependent.mjs';\nimport { IsIntersect } from '../../types/intersect.mjs';\nimport { IsUnion } from '../../types/union.mjs';\nimport { InstantiateType, CanInstantiate } from '../instantiate.mjs';\nimport { IndexDeferred } from '../../action/indexed.mjs';\nimport { CollapseToObject } from '../object/index.mjs';\nimport { FromType } from './from_type.mjs';\nfunction NormalizeType(type) {\n const result = (IsCyclic(type) ||\n IsDependent(type) ||\n IsIntersect(type) ||\n IsUnion(type)) ? CollapseToObject(type) : type;\n return result;\n}\nexport function IndexAction(type, indexer, options) {\n const result = CanInstantiate([type, indexer])\n ? Memory.Update(FromType(NormalizeType(type), indexer), {}, options)\n : IndexDeferred(type, indexer, options);\n return result;\n}\nexport function IndexInstantiate(context, state, type, indexer, options) {\n const instantiatedType = InstantiateType(context, state, type);\n const instantiatedIndexer = InstantiateType(context, state, indexer);\n return IndexAction(instantiatedType, instantiatedIndexer, options);\n}\n","// deno-fmt-ignore-file\nimport { Deferred } from '../types/deferred.mjs';\nimport { InstanceTypeAction } from '../engine/instance_type/instantiate.mjs';\n/** Creates a deferred InstanceType action. */\nexport function InstanceTypeDeferred(type, options = {}) {\n return Deferred('InstanceType', [type], options);\n}\n/** Applies a InstanceType action to the given type. */\nexport function InstanceType(type, options = {}) {\n return InstanceTypeAction(type, options);\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { IsConstructor } from '../../types/constructor.mjs';\nimport { Never } from '../../types/never.mjs';\nimport { InstanceTypeDeferred } from '../../action/instance_type.mjs';\nimport { InstantiateType, CanInstantiate } from '../instantiate.mjs';\nfunction InstanceTypeOperation(type) {\n return (IsConstructor(type)\n ? type['instanceType']\n : Never());\n}\nexport function InstanceTypeAction(type, options) {\n const result = CanInstantiate([type])\n ? Memory.Update(InstanceTypeOperation(type), {}, options)\n : InstanceTypeDeferred(type, options);\n return result;\n}\nexport function InstanceTypeInstantiate(context, state, type, options = {}) {\n const instantiatedType = InstantiateType(context, state, type);\n return InstanceTypeAction(instantiatedType, options);\n}\n","// deno-fmt-ignore-file\nimport { Deferred } from '../types/deferred.mjs';\nimport { KeyOfAction } from '../engine/keyof/instantiate.mjs';\n/** Creates a deferred KeyOf action. */\nexport function KeyOfDeferred(type, options = {}) {\n return Deferred('KeyOf', [type], options);\n}\n/** Applies a KeyOf action to the given type. */\nexport function KeyOf(type, options = {}) {\n return KeyOfAction(type, options);\n}\n","// deno-fmt-ignore-file\nimport { Number } from '../../types/number.mjs';\nimport { String } from '../../types/string.mjs';\nimport { Symbol } from '../../types/symbol.mjs';\nimport { Union } from '../../types/union.mjs';\nexport function FromAny() {\n return Union([Number(), String(), Symbol()]);\n}\n","// deno-fmt-ignore-file\nimport { Number } from '../../types/number.mjs';\nexport function FromArray(_type) {\n return Number();\n}\n","// deno-fmt-ignore-file\nimport { Unreachable } from '../../../system/unreachable/index.mjs';\nimport { Guard } from '../../../guard/index.mjs';\nimport { Literal, IsLiteralValue } from '../../types/literal.mjs';\nimport { ConvertToIntegerKey } from '../helpers/keys.mjs';\nimport { EvaluateUnionFast } from '../evaluate/evaluate.mjs';\nfunction FromPropertyKeys(keys) {\n const result = keys.reduce((result, left) => {\n return IsLiteralValue(left)\n ? [...result, Literal(ConvertToIntegerKey(left))]\n : Unreachable();\n }, []);\n return result;\n}\nexport function FromObject(properties) {\n const propertyKeys = Guard.Keys(properties);\n const variants = FromPropertyKeys(propertyKeys);\n const result = EvaluateUnionFast(variants);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { RecordKey } from '../../types/record.mjs';\nexport function FromRecord(type) {\n return RecordKey(type);\n}\n","// deno-fmt-ignore-file\nimport { Literal } from '../../types/literal.mjs';\nimport { EvaluateUnionFast } from '../evaluate/evaluate.mjs';\nexport function FromTuple(types) {\n const result = types.map((_, index) => Literal(index));\n return EvaluateUnionFast(result);\n}\n","// deno-fmt-ignore-file\nimport { IsAny } from '../../types/any.mjs';\nimport { IsArray } from '../../types/array.mjs';\nimport { Never } from '../../types/never.mjs';\nimport { IsObject } from '../../types/object.mjs';\nimport { IsRecord } from '../../types/record.mjs';\nimport { IsTuple } from '../../types/tuple.mjs';\n// ------------------------------------------------------------------\n// Computed\n// ------------------------------------------------------------------\nimport { FromAny } from './from_any.mjs';\nimport { FromArray } from './from_array.mjs';\nimport { FromObject } from './from_object.mjs';\nimport { FromRecord } from './from_record.mjs';\nimport { FromTuple } from './from_tuple.mjs';\nexport function FromType(type) {\n return (IsAny(type) ? FromAny() :\n IsArray(type) ? FromArray(type.items) :\n IsObject(type) ? FromObject(type.properties) :\n IsRecord(type) ? FromRecord(type) :\n IsTuple(type) ? FromTuple(type.items) :\n Never());\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { IsCyclic } from '../../types/cyclic.mjs';\nimport { IsDependent } from '../../types/dependent.mjs';\nimport { IsIntersect } from '../../types/intersect.mjs';\nimport { IsUnion } from '../../types/union.mjs';\nimport { KeyOfDeferred } from '../../action/keyof.mjs';\nimport { InstantiateType, CanInstantiate } from '../instantiate.mjs';\nimport { CollapseToObject } from '../object/index.mjs';\n// ------------------------------------------------------------------\n// Computed\n// ------------------------------------------------------------------\nimport { FromType } from './from_type.mjs';\nfunction NormalizeType(type) {\n const result = (IsCyclic(type) ||\n IsDependent(type) ||\n IsIntersect(type) ||\n IsUnion(type)) ? CollapseToObject(type) : type;\n return result;\n}\nexport function KeyOfAction(type, options) {\n return (CanInstantiate([type])\n ? Memory.Update(FromType(NormalizeType(type)), {}, options)\n : KeyOfDeferred(type, options));\n}\nexport function KeyOfInstantiate(context, state, type, options) {\n const instantiatedType = InstantiateType(context, state, type);\n return KeyOfAction(instantiatedType, options);\n}\n","// deno-lint-ignore-file ban-types\n// deno-fmt-ignore-file\nimport { Deferred } from '../types/deferred.mjs';\nimport { MappedAction } from '../engine/mapped/instantiate.mjs';\nimport { State } from '../engine/instantiate.mjs';\n/** Creates a deferred Mapped action. */\nexport function MappedDeferred(identifier, type, as, property, options = {}) {\n return Deferred('Mapped', [identifier, type, as, property], options);\n}\n/** Applies a Mapped action using the given types. */\nexport function Mapped(identifier, type, as, property, options = {}) {\n return MappedAction({}, State([], []), identifier, type, as, property, options);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { Literal, IsLiteral } from '../../types/literal.mjs';\nimport { IsEnum } from '../../types/enum.mjs';\nimport { IsTemplateLiteral } from '../../types/template_literal.mjs';\nimport { IsUnion } from '../../types/union.mjs';\nimport { EvaluateEnum } from '../evaluate/evaluate.mjs';\nimport { EvaluateTemplateLiteral } from '../evaluate/evaluate.mjs';\nfunction FromTemplateLiteral(pattern) {\n const evaluated = EvaluateTemplateLiteral(pattern);\n const result = FromType(evaluated);\n return result;\n}\nfunction FromUnion(types) {\n return types.reduce((result, left) => {\n return [...result, ...FromType(left)];\n }, []);\n}\nfunction FromEnum(values) {\n const evaluated = EvaluateEnum(values);\n const result = FromType(evaluated);\n return result;\n}\nfunction FromLiteral(value) {\n const result = Guard.IsNumber(value) ? [Literal(`${value}`)] : [Literal(value)];\n return result;\n}\nfunction FromType(type) {\n const result = (IsEnum(type) ? FromEnum(type.enum) :\n IsLiteral(type) ? FromLiteral(type.const) :\n IsTemplateLiteral(type) ? FromTemplateLiteral(type.pattern) :\n IsUnion(type) ? FromUnion(type.anyOf) :\n [type]);\n return result;\n}\nexport function MappedVariants(type) {\n const result = FromType(type);\n return result;\n}\n","// deno-lint-ignore-file ban-types\n// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { IsLiteralNumber, IsLiteralString } from '../../types/literal.mjs';\nimport { Object } from '../../types/object.mjs';\nimport { IsTemplateLiteral } from '../../types/template_literal.mjs';\nimport { InstantiateType } from '../instantiate.mjs';\nimport { EvaluateIntersect } from '../evaluate/evaluate.mjs';\nimport { EvaluateTemplateLiteral } from '../evaluate/evaluate.mjs';\nimport { MappedVariants } from './mapped_variants.mjs';\nfunction CanonicalAs(instantiatedAs) {\n const result = IsTemplateLiteral(instantiatedAs)\n ? EvaluateTemplateLiteral(instantiatedAs.pattern)\n : instantiatedAs;\n return result;\n}\nfunction MappedVariant(context, state, identifier, variant, as, property) {\n const variantContext = Memory.Assign(context, { [identifier['name']]: variant });\n const instantiatedAs = InstantiateType(variantContext, state, as);\n const canonicalAs = CanonicalAs(instantiatedAs);\n const instantiatedProperty = InstantiateType(variantContext, state, property);\n return (IsLiteralNumber(canonicalAs) || IsLiteralString(canonicalAs)\n ? { [canonicalAs.const]: instantiatedProperty }\n : {});\n}\nfunction MappedProperties(context, state, identifier, variants, as, property) {\n return variants.reduce((result, left) => {\n return [...result, MappedVariant(context, state, identifier, left, as, property)];\n }, []);\n}\nfunction MappedObjects(properties) {\n return properties.reduce((result, left) => {\n return [...result, Object(left)];\n }, []);\n}\nexport function MappedOperation(context, state, identifier, type, as, property) {\n const variants = MappedVariants(type);\n const mappedProperties = MappedProperties(context, state, identifier, variants, as, property);\n const mappedObjects = MappedObjects(mappedProperties);\n const result = EvaluateIntersect(mappedObjects);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { MappedDeferred } from '../../action/mapped.mjs';\nimport { InstantiateType, CanInstantiate } from '../instantiate.mjs';\nimport { MappedOperation } from './mapped_operation.mjs';\nexport function MappedAction(context, state, identifier, type, as, property, options) {\n const result = CanInstantiate([type])\n ? Memory.Update(MappedOperation(context, state, identifier, type, as, property), {}, options)\n : MappedDeferred(identifier, type, as, property, options);\n return result;\n}\nexport function MappedInstantiate(context, state, identifier, type, as, property, options) {\n const instantiatedType = InstantiateType(context, state, type);\n return MappedAction(context, state, identifier, instantiatedType, as, property, options);\n}\n","// deno-lint-ignore-file ban-types\n// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { State } from '../instantiate.mjs';\n// ------------------------------------------------------------------\n// Module: Instantiation Infrastructure\n// ------------------------------------------------------------------\nimport { CyclicCandidates } from '../cyclic/candidates.mjs';\nimport { InstantiateCyclic } from '../cyclic/instantiate.mjs';\nimport { InstantiateType } from '../instantiate.mjs';\nfunction InstantiateCyclics(context, declarations, cyclicKeys) {\n const declarationContext = Memory.Assign(context, declarations);\n const declarationKeys = Guard.Keys(declarations).filter(key => cyclicKeys.includes(key));\n return declarationKeys.reduce((result, key) => {\n return { ...result, [key]: InstantiateCyclic(declarationContext, key, declarations[key]) };\n }, {});\n}\nfunction InstantiateNonCyclics(context, declarations, cyclicKeys) {\n const declarationContext = Memory.Assign(context, declarations);\n const declarationKeys = Guard.Keys(declarations).filter(key => !cyclicKeys.includes(key));\n return declarationKeys.reduce((result, key) => {\n return { ...result, [key]: InstantiateType(declarationContext, State([], []), declarations[key]) };\n }, {});\n}\nfunction InstantiateModule(context, declarations, options) {\n const cyclicCandidates = CyclicCandidates(declarations);\n const instantiatedCyclics = InstantiateCyclics(context, declarations, cyclicCandidates);\n const instantiatedNonCyclics = InstantiateNonCyclics(context, declarations, cyclicCandidates);\n const instantiatedModule = { ...instantiatedCyclics, ...instantiatedNonCyclics };\n return Memory.Update(instantiatedModule, {}, options);\n}\nexport function ModuleInstantiate(context, _state, declarations, options) {\n const instantiatedModule = InstantiateModule(context, declarations, options);\n return instantiatedModule;\n}\n","// deno-fmt-ignore-file\nimport { Deferred } from '../types/deferred.mjs';\nimport { NonNullableAction } from '../engine/non_nullable/instantiate.mjs';\n/** Creates a deferred NonNullable action. */\nexport function NonNullableDeferred(type, options = {}) {\n return Deferred('NonNullable', [type], options);\n}\n/** Applies a NonNullable action to the given type. */\nexport function NonNullable(type, options = {}) {\n return NonNullableAction(type, options);\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { Null } from '../../types/null.mjs';\nimport { Undefined } from '../../types/undefined.mjs';\nimport { Union } from '../../types/union.mjs';\nimport { ExcludeAction } from '../exclude/instantiate.mjs';\nimport { NonNullableDeferred } from '../../action/non_nullable.mjs';\nimport { InstantiateType, CanInstantiate } from '../instantiate.mjs';\nfunction NonNullableOperation(type) {\n const excluded = Union([Null(), Undefined()]);\n return ExcludeAction(type, excluded, {});\n}\nexport function NonNullableAction(type, options) {\n const result = CanInstantiate([type])\n ? Memory.Update(NonNullableOperation(type), {}, options)\n : NonNullableDeferred(type, options);\n return result;\n}\nexport function NonNullableInstantiate(context, state, type, options) {\n const instantiatedType = InstantiateType(context, state, type);\n return NonNullableAction(instantiatedType, options);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { Deferred } from '../types/deferred.mjs';\nimport { KeysToIndexer } from '../engine/helpers/keys_to_indexer.mjs';\nimport { OmitAction } from '../engine/omit/instantiate.mjs';\n/** Creates a deferred Omit action. */\nexport function OmitDeferred(type, indexer, options = {}) {\n return Deferred('Omit', [type, indexer], options);\n}\n/** Applies a Omit action using the given types. */\nexport function Omit(type, indexer_or_keys, options = {}) {\n const indexer = Guard.IsArray(indexer_or_keys) ? KeysToIndexer(indexer_or_keys) : indexer_or_keys;\n return OmitAction(type, indexer, options);\n}\n","// deno-fmt-ignore-file\nimport { Unreachable } from '../../../system/unreachable/index.mjs';\nimport { IsObject } from '../../types/object.mjs';\nimport { CollapseToObject } from '../object/index.mjs';\n// deno-coverage-ignore-start - symmetric unreachable\n/** Transforms a type into a TProperties used for indexing operations */\nexport function ToIndexable(type) {\n const collapsed = CollapseToObject(type);\n const result = IsObject(collapsed)\n ? collapsed.properties\n : Unreachable();\n return result;\n}\n// deno-coverage-ignore-stop\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { Object } from '../../types/object.mjs';\nimport { ToIndexableKeys } from '../indexable/to_indexable_keys.mjs';\nimport { ToIndexable } from '../indexable/to_indexable.mjs';\nfunction FromKeys(properties, keys) {\n const result = Guard.Keys(properties).reduce((result, key) => {\n return keys.includes(key) ? result : { ...result, [key]: properties[key] };\n }, {});\n return result;\n}\nexport function FromType(type, indexer) {\n const indexable = ToIndexable(type);\n const indexableKeys = ToIndexableKeys(indexer);\n const omitted = FromKeys(indexable, indexableKeys);\n const result = Object(omitted);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { OmitDeferred } from '../../action/omit.mjs';\nimport { InstantiateType, CanInstantiate } from '../instantiate.mjs';\nimport { FromType } from './from_type.mjs';\nexport function OmitAction(type, indexer, options) {\n const result = CanInstantiate([type, indexer])\n ? Memory.Update(FromType(type, indexer), {}, options)\n : OmitDeferred(type, indexer, options);\n return result;\n}\nexport function OmitInstantiate(context, state, type, indexer, options) {\n const instantiatedType = InstantiateType(context, state, type);\n const instantiatedIndexer = InstantiateType(context, state, indexer);\n return OmitAction(instantiatedType, instantiatedIndexer, options);\n}\n","// deno-fmt-ignore-file\nimport { Deferred } from '../types/deferred.mjs';\nimport { ParametersAction } from '../engine/parameters/instantiate.mjs';\n/** Creates a deferred Parameters action. */\nexport function ParametersDeferred(type, options = {}) {\n return Deferred('Parameters', [type], options);\n}\n/** Applies a Parameters action to the given type. */\nexport function Parameters(type, options = {}) {\n return ParametersAction(type, options);\n}\n","// deno-lint-ignore-file ban-types\n// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { IsFunction } from '../../types/function.mjs';\nimport { Tuple } from '../../types/tuple.mjs';\nimport { ParametersDeferred } from '../../action/parameters.mjs';\nimport { InstantiateType, CanInstantiate } from '../instantiate.mjs';\nimport { InstantiateElements } from '../instantiate.mjs';\nimport { State } from '../instantiate.mjs';\nfunction ParametersOperation(type) {\n const parameters = IsFunction(type) ? type['parameters'] : [];\n const instantiatedParameters = InstantiateElements({}, State([], []), parameters);\n const result = Tuple(instantiatedParameters);\n return result;\n}\nexport function ParametersAction(type, options) {\n const result = CanInstantiate([type])\n ? Memory.Update(ParametersOperation(type), {}, options)\n : ParametersDeferred(type, options);\n return result;\n}\nexport function ParametersInstantiate(context, state, type, options) {\n const instantiatedType = InstantiateType(context, state, type);\n return ParametersAction(instantiatedType, options);\n}\n","// deno-fmt-ignore-file\nimport { Deferred } from '../types/deferred.mjs';\nimport { PartialAction } from '../engine/partial/instantiate.mjs';\n/** Creates a deferred Partial action. */\nexport function PartialDeferred(type, options = {}) {\n return Deferred('Partial', [type], options);\n}\n/** Applies a Partial action to the given type. */\nexport function Partial(type, options = {}) {\n return PartialAction(type, options);\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { Cyclic } from '../../types/cyclic.mjs';\nimport { FromType } from './from_type.mjs';\nimport { CyclicTarget } from '../cyclic/target.mjs';\nexport function FromCyclic(defs, ref) {\n const target = CyclicTarget(defs, ref);\n const partial = FromType(target);\n const result = Cyclic(Memory.Assign(defs, { [ref]: partial }), ref);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { FromType } from './from_type.mjs';\nimport { EvaluateDependent } from '../evaluate/evaluate.mjs';\nexport function FromDependent(if_, then_, else_) {\n const evaluated = EvaluateDependent(if_, then_, else_);\n const result = FromType(evaluated);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { FromType } from './from_type.mjs';\nimport { EvaluateIntersect } from '../evaluate/evaluate.mjs';\nexport function FromIntersect(types) {\n const evaluated = EvaluateIntersect(types);\n const result = FromType(evaluated);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { Union } from '../../types/union.mjs';\nimport { FromType } from './from_type.mjs';\nexport function FromUnion(types) {\n const result = types.map(type => FromType(type));\n return Union(result);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { Object } from '../../types/object.mjs';\nimport { AddOptional } from '../../action/_add_optional.mjs';\nexport function FromObject(properties) {\n const mapped = Guard.Keys(properties).reduce((result, left) => {\n return { ...result, [left]: AddOptional(properties[left]) };\n }, {});\n const result = Object(mapped);\n return result;\n}\n","// deno-lint-ignore-file ban-types\n// deno-fmt-ignore-file\nimport { IsCyclic } from '../../types/cyclic.mjs';\nimport { IsDependent } from '../../types/dependent.mjs';\nimport { IsIntersect } from '../../types/intersect.mjs';\nimport { Object, IsObject } from '../../types/object.mjs';\nimport { IsUnion } from '../../types/union.mjs';\nimport { FromCyclic } from './from_cyclic.mjs';\nimport { FromDependent } from './from_dependent.mjs';\nimport { FromIntersect } from './from_intersect.mjs';\nimport { FromUnion } from './from_union.mjs';\nimport { FromObject } from './from_object.mjs';\nexport function FromType(type) {\n return (IsCyclic(type) ? FromCyclic(type.$defs, type.$ref) :\n IsDependent(type) ? FromDependent(type.if, type.then, type.else) :\n IsIntersect(type) ? FromIntersect(type.allOf) :\n IsUnion(type) ? FromUnion(type.anyOf) :\n IsObject(type) ? FromObject(type.properties) :\n Object({}));\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { PartialDeferred } from '../../action/partial.mjs';\nimport { FromType } from './from_type.mjs';\nimport { InstantiateType, CanInstantiate } from '../instantiate.mjs';\nexport function PartialAction(type, options) {\n const result = CanInstantiate([type])\n ? Memory.Update(FromType(type), {}, options)\n : PartialDeferred(type, options);\n return result;\n}\nexport function PartialInstantiate(context, state, type, options) {\n const instantiatedType = InstantiateType(context, state, type);\n return PartialAction(instantiatedType, options);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { Deferred } from '../types/deferred.mjs';\nimport { KeysToIndexer } from '../engine/helpers/keys_to_indexer.mjs';\nimport { PickAction } from '../engine/pick/instantiate.mjs';\n/** Creates a deferred Pick action. */\nexport function PickDeferred(type, indexer, options = {}) {\n return Deferred('Pick', [type, indexer], options);\n}\n/** Applies a Pick action using the given types. */\nexport function Pick(type, indexer_or_keys, options = {}) {\n const indexer = Guard.IsArray(indexer_or_keys) ? KeysToIndexer(indexer_or_keys) : indexer_or_keys;\n return PickAction(type, indexer, options);\n}\n","// deno-lint-ignore-file ban-types\n// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { Guard } from '../../../guard/index.mjs';\nimport { Object } from '../../types/object.mjs';\nimport { ToIndexableKeys } from '../indexable/to_indexable_keys.mjs';\nimport { ToIndexable } from '../indexable/to_indexable.mjs';\nfunction FromKeys(properties, keys) {\n const result = Guard.Keys(properties).reduce((result, key) => {\n return keys.includes(key) ? Memory.Assign(result, { [key]: properties[key] }) : result;\n }, {});\n return result;\n}\nexport function FromType(type, indexer) {\n const indexable = ToIndexable(type);\n const keys = ToIndexableKeys(indexer);\n const applied = FromKeys(indexable, keys);\n const result = Object(applied);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { PickDeferred } from '../../action/pick.mjs';\nimport { InstantiateType, CanInstantiate } from '../instantiate.mjs';\nimport { FromType } from './from_type.mjs';\nexport function PickAction(type, indexer, options) {\n const result = CanInstantiate([type, indexer])\n ? Memory.Update(FromType(type, indexer), {}, options)\n : PickDeferred(type, indexer, options);\n return result;\n}\nexport function PickInstantiate(context, state, type, indexer, options) {\n const instantiatedType = InstantiateType(context, state, type);\n const instantiatedIndexer = InstantiateType(context, state, indexer);\n return PickAction(instantiatedType, instantiatedIndexer, options);\n}\n","// deno-fmt-ignore-file\nimport { Deferred } from '../types/deferred.mjs';\nimport { ReadonlyObjectAction } from '../engine/readonly_object/instantiate.mjs';\n/** Creates a deferred ReadonlyType action. */\nexport function ReadonlyObjectDeferred(type, options = {}) {\n return Deferred('ReadonlyObject', [type], options);\n}\n/** This type is an alias for TypeScript's `Readonly<T>` utility type. It will make all properties of a TObject readonly or marks an TArray or TTuple as immutable `readonly T[]`. */\nexport function ReadonlyObject(type, options = {}) {\n return ReadonlyObjectAction(type, options);\n}\n// ------------------------------------------------------------------\n// Alias\n// ------------------------------------------------------------------\n/**\n * This type has been renamed to ReadonlyObject.\n * @deprecated\n*/\nexport const ReadonlyType = ReadonlyObject;\n","// deno-fmt-ignore-file\nimport { Array } from '../../types/array.mjs';\nimport { AddImmutable } from '../../action/_add_immutable.mjs';\nexport function FromArray(type) {\n const result = AddImmutable(Array(type));\n return result;\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { Cyclic } from '../../types/cyclic.mjs';\nimport { FromType } from './from_type.mjs';\nimport { CyclicTarget } from '../cyclic/target.mjs';\nexport function FromCyclic(defs, ref) {\n const target = CyclicTarget(defs, ref);\n const partial = FromType(target);\n const result = Cyclic(Memory.Assign(defs, { [ref]: partial }), ref);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { FromType } from './from_type.mjs';\nimport { EvaluateDependent } from '../evaluate/evaluate.mjs';\nexport function FromDependent(if_, then_, else_) {\n const evaluated = EvaluateDependent(if_, then_, else_);\n const result = FromType(evaluated);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { FromType } from './from_type.mjs';\nimport { EvaluateIntersect } from '../evaluate/evaluate.mjs';\nexport function FromIntersect(types) {\n const evaluated = EvaluateIntersect(types);\n const result = FromType(evaluated);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { Object } from '../../types/object.mjs';\nimport { AddReadonly } from '../../action/_add_readonly.mjs';\nexport function FromObject(properties) {\n const mapped = Guard.Keys(properties).reduce((result, left) => {\n return { ...result, [left]: AddReadonly(properties[left]) };\n }, {});\n const result = Object(mapped);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { Tuple } from '../../types/tuple.mjs';\nimport { AddImmutable } from '../../action/_add_immutable.mjs';\nexport function FromTuple(types) {\n const result = AddImmutable(Tuple(types));\n return result;\n}\n","// deno-fmt-ignore-file\nimport { Union } from '../../types/union.mjs';\nimport { FromType } from './from_type.mjs';\nexport function FromUnion(types) {\n const result = types.map(type => FromType(type));\n return Union(result);\n}\n","// deno-fmt-ignore-file\nimport { IsArray } from '../../types/array.mjs';\nimport { IsCyclic } from '../../types/cyclic.mjs';\nimport { IsDependent } from '../../types/dependent.mjs';\nimport { IsIntersect } from '../../types/intersect.mjs';\nimport { IsObject } from '../../types/object.mjs';\nimport { IsTuple } from '../../types/tuple.mjs';\nimport { IsUnion } from '../../types/union.mjs';\nimport { FromArray } from './from_array.mjs';\nimport { FromCyclic } from './from_cyclic.mjs';\nimport { FromDependent } from './from_dependent.mjs';\nimport { FromIntersect } from './from_intersect.mjs';\nimport { FromObject } from './from_object.mjs';\nimport { FromTuple } from './from_tuple.mjs';\nimport { FromUnion } from './from_union.mjs';\nexport function FromType(type) {\n return (IsArray(type) ? FromArray(type.items) :\n IsCyclic(type) ? FromCyclic(type.$defs, type.$ref) :\n IsDependent(type) ? FromDependent(type.if, type.then, type.else) :\n IsIntersect(type) ? FromIntersect(type.allOf) :\n IsObject(type) ? FromObject(type.properties) :\n IsTuple(type) ? FromTuple(type.items) :\n IsUnion(type) ? FromUnion(type.anyOf) :\n type);\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { ReadonlyObjectDeferred } from '../../action/readonly_object.mjs';\nimport { FromType } from './from_type.mjs';\nimport { InstantiateType, CanInstantiate } from '../instantiate.mjs';\nexport function ReadonlyObjectAction(type, options) {\n const result = CanInstantiate([type])\n ? Memory.Update(FromType(type), {}, options)\n : ReadonlyObjectDeferred(type);\n return result;\n}\nexport function ReadonlyObjectInstantiate(context, state, type, options) {\n const instantiatedType = InstantiateType(context, state, type);\n return ReadonlyObjectAction(instantiatedType, options);\n}\n","// deno-fmt-ignore-file\nimport { InstantiateType } from '../instantiate.mjs';\nimport { State } from '../instantiate.mjs';\nexport function RefInstantiate(context, state, type, ref) {\n return (state.visited.includes(ref)\n ? type\n : ref in context\n ? InstantiateType(context, State(state['callstack'], [...state['visited'], ref]), context[ref])\n : type);\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { Cyclic } from '../../types/cyclic.mjs';\nimport { FromType } from './from_type.mjs';\nimport { CyclicTarget } from '../cyclic/target.mjs';\nexport function FromCyclic(defs, ref) {\n const target = CyclicTarget(defs, ref);\n const partial = FromType(target);\n const result = Cyclic(Memory.Assign(defs, { [ref]: partial }), ref);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { FromType } from './from_type.mjs';\nimport { EvaluateDependent } from '../evaluate/evaluate.mjs';\nexport function FromDependent(if_, then_, else_) {\n const evaluated = EvaluateDependent(if_, then_, else_);\n const result = FromType(evaluated);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { FromType } from './from_type.mjs';\nimport { EvaluateIntersect } from '../evaluate/evaluate.mjs';\nexport function FromIntersect(types) {\n const evaluated = EvaluateIntersect(types);\n const result = FromType(evaluated);\n return result;\n}\n","// deno-fmt-ignore-file\nimport { Union } from '../../types/union.mjs';\nimport { FromType } from './from_type.mjs';\nexport function FromUnion(types) {\n const result = types.map(type => FromType(type));\n return Union(result);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { Object } from '../../types/object.mjs';\nimport { RemoveOptional } from '../../action/_remove_optional.mjs';\nexport function FromObject(properties) {\n const mapped = Guard.Keys(properties).reduce((result, left) => {\n return { ...result, [left]: RemoveOptional(properties[left]) };\n }, {});\n const result = Object(mapped);\n return result;\n}\n","// deno-lint-ignore-file ban-types\n// deno-fmt-ignore-file\nimport { IsCyclic } from '../../types/cyclic.mjs';\nimport { IsDependent } from '../../types/dependent.mjs';\nimport { IsIntersect } from '../../types/intersect.mjs';\nimport { Object, IsObject } from '../../types/object.mjs';\nimport { IsUnion } from '../../types/union.mjs';\nimport { FromCyclic } from './from_cyclic.mjs';\nimport { FromDependent } from './from_dependent.mjs';\nimport { FromIntersect } from './from_intersect.mjs';\nimport { FromUnion } from './from_union.mjs';\nimport { FromObject } from './from_object.mjs';\nexport function FromType(type) {\n return (IsCyclic(type) ? FromCyclic(type.$defs, type.$ref) :\n IsDependent(type) ? FromDependent(type.if, type.then, type.else) :\n IsIntersect(type) ? FromIntersect(type.allOf) :\n IsUnion(type) ? FromUnion(type.anyOf) :\n IsObject(type) ? FromObject(type.properties) :\n Object({}));\n}\n","// deno-fmt-ignore-file\nimport { Deferred } from '../types/deferred.mjs';\nimport { RequiredAction } from '../engine/required/instantiate.mjs';\n/** Creates a deferred Required action. */\nexport function RequiredDeferred(type, options = {}) {\n return Deferred('Required', [type], options);\n}\n/** Applies a Required action to the given type. */\nexport function Required(type, options = {}) {\n return RequiredAction(type, options);\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { FromType } from './from_type.mjs';\nimport { RequiredDeferred } from '../../action/required.mjs';\nimport { InstantiateType, CanInstantiate } from '../instantiate.mjs';\nexport function RequiredAction(type, options) {\n const result = CanInstantiate([type])\n ? Memory.Update(FromType(type), {}, options)\n : RequiredDeferred(type, options);\n return result;\n}\nexport function RequiredInstantiate(context, state, type, options) {\n const instaniatedType = InstantiateType(context, state, type);\n return RequiredAction(instaniatedType, options);\n}\n","// deno-fmt-ignore-file\nimport { Deferred } from '../types/deferred.mjs';\nimport { ReturnTypeAction } from '../engine/return_type/instantiate.mjs';\n/** Creates a deferred ReturnType action. */\nexport function ReturnTypeDeferred(type, options = {}) {\n return Deferred('ReturnType', [type], options);\n}\n/** Applies a ReturnType action to the given type. */\nexport function ReturnType(type, options = {}) {\n return ReturnTypeAction(type, options);\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { IsFunction } from '../../types/function.mjs';\nimport { Never } from '../../types/never.mjs';\nimport { ReturnTypeDeferred } from '../../action/return_type.mjs';\nimport { InstantiateType, CanInstantiate } from '../instantiate.mjs';\nfunction ReturnTypeOperation(type) {\n return (IsFunction(type)\n ? type['returnType']\n : Never());\n}\nexport function ReturnTypeAction(type, options) {\n const result = CanInstantiate([type])\n ? Memory.Update(ReturnTypeOperation(type), {}, options)\n : ReturnTypeDeferred(type, options);\n return result;\n}\nexport function ReturnTypeInstantiate(context, state, type, options = {}) {\n const instantiatedType = InstantiateType(context, state, type);\n return ReturnTypeAction(instantiatedType, options);\n}\n","// deno-fmt-ignore-file\nimport { Deferred } from '../types/deferred.mjs';\nimport { WithAction } from '../engine/with/instantiate.mjs';\n/** Creates a deferred With action. */\nexport function WithDeferred(type, options) {\n return Deferred('With', [type, options], {});\n}\n/** Applies annotation options to the given type. */\nexport function With(type, options) {\n return WithAction(type, options);\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { InstantiateType, CanInstantiate } from '../instantiate.mjs';\nimport { WithDeferred } from '../../action/with.mjs';\nexport function WithAction(type, options) {\n const result = CanInstantiate([type])\n ? Memory.Update(type, {}, options)\n : WithDeferred(type, options);\n return result;\n}\nexport function WithInstantiate(context, state, type, options) {\n const instaniatedType = InstantiateType(context, state, type);\n return WithAction(instaniatedType, options);\n}\n","// deno-fmt-ignore-file\nimport { IsInfer } from '../../types/infer.mjs';\nimport { Never } from '../../types/never.mjs';\nimport { IsRest } from '../../types/rest.mjs';\nimport { IsRef } from '../../types/ref.mjs';\nimport { IsTuple } from '../../types/tuple.mjs';\nfunction SpreadElement(type) {\n const result = (IsRest(type) ? (IsTuple(type.items) ? RestSpread(type.items.items) :\n IsInfer(type.items) ? [type] :\n IsRef(type.items) ? [type] :\n [Never()]) : [type]);\n return result;\n}\nexport function RestSpread(types) {\n const result = types.reduce((result, left) => {\n return [...result, ...SpreadElement(left)];\n }, []);\n return result;\n}\n","// deno-fmt-ignore-file\n// deno-lint-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Modifiers\n// ------------------------------------------------------------------\nimport { AddImmutableAction } from './immutable/instantiate_add.mjs';\nimport { AddReadonlyAction } from './readonly/instantiate_add.mjs';\nimport { AddOptionalAction } from './optional/instantiate_add.mjs';\nimport { _Array_, IsArray, ArrayOptions } from '../types/array.mjs';\nimport { Constructor, IsConstructor, ConstructorOptions } from '../types/constructor.mjs';\nimport { Deferred, IsDeferred } from '../types/deferred.mjs';\nimport { _Function_, IsFunction, FunctionOptions } from '../types/function.mjs';\nimport { IsCall } from '../types/call.mjs';\nimport { Dependent, IsDependent, DependentOptions } from '../types/dependent.mjs';\nimport { Intersect, IsIntersect, IntersectOptions } from '../types/intersect.mjs';\nimport { Object, IsObject, ObjectOptions } from '../types/object.mjs';\nimport { RecordFromPattern, IsRecord, RecordPattern, RecordValue } from '../types/record.mjs';\nimport { Tuple, IsTuple, TupleOptions } from '../types/tuple.mjs';\nimport { Union, IsUnion, UnionOptions } from '../types/union.mjs';\nimport { IsRef } from '../types/ref.mjs';\nimport { Rest, IsRest } from '../types/rest.mjs';\n// ------------------------------------------------------------------\n// Modifier Instantiate\n// ------------------------------------------------------------------\nimport { AddImmutableInstantiate } from './immutable/instantiate_add.mjs';\nimport { RemoveImmutableInstantiate } from './immutable/instantiate_remove.mjs';\nimport { AddReadonlyInstantiate } from './readonly/instantiate_add.mjs';\nimport { RemoveReadonlyInstantiate } from './readonly/instantiate_remove.mjs';\nimport { AddOptionalInstantiate } from './optional/instantiate_add.mjs';\nimport { RemoveOptionalInstantiate } from './optional/instantiate_remove.mjs';\nimport { IsOptional } from '../types/_optional.mjs';\nimport { IsImmutable } from '../types/_immutable.mjs';\nimport { IsReadonly } from '../types/_readonly.mjs';\n// ------------------------------------------------------------------\n// Instantiate\n// ------------------------------------------------------------------\nimport { CallInstantiate } from './call/instantiate.mjs';\nimport { CapitalizeInstantiate } from './intrinsics/instantiate.mjs';\nimport { ConditionalInstantiate } from './conditional/index.mjs';\nimport { ConstructorParametersInstantiate } from './constructor_parameters/instantiate.mjs';\nimport { EvaluateInstantiate } from './evaluate/instantiate.mjs';\nimport { ExcludeInstantiate } from './exclude/instantiate.mjs';\nimport { ExtractInstantiate } from './extract/instantiate.mjs';\nimport { IndexInstantiate } from './indexed/instantiate.mjs';\nimport { InstanceTypeInstantiate } from './instance_type/instantiate.mjs';\nimport { InterfaceInstantiate } from './interface/instantiate.mjs';\nimport { KeyOfInstantiate } from './keyof/instantiate.mjs';\nimport { LowercaseInstantiate } from './intrinsics/instantiate.mjs';\nimport { MappedInstantiate } from './mapped/instantiate.mjs';\nimport { ModuleInstantiate } from './module/instantiate.mjs';\nimport { NonNullableInstantiate } from './non_nullable/instantiate.mjs';\nimport { OmitInstantiate } from './omit/instantiate.mjs';\nimport { ParametersInstantiate } from './parameters/instantiate.mjs';\nimport { PartialInstantiate } from './partial/instantiate.mjs';\nimport { PickInstantiate } from './pick/instantiate.mjs';\nimport { ReadonlyObjectInstantiate } from './readonly_object/instantiate.mjs';\nimport { RecordInstantiate } from './record/instantiate.mjs';\nimport { RefInstantiate } from './ref/instantiate.mjs';\nimport { RequiredInstantiate } from './required/instantiate.mjs';\nimport { ReturnTypeInstantiate } from './return_type/instantiate.mjs';\nimport { TemplateLiteralInstantiate } from './template_literal/instantiate.mjs';\nimport { UncapitalizeInstantiate } from './intrinsics/instantiate.mjs';\nimport { UppercaseInstantiate } from './intrinsics/instantiate.mjs';\nimport { WithInstantiate } from './with/instantiate.mjs';\nimport { RestSpread } from './rest/index.mjs';\nexport function State(callstack, visited) {\n return { callstack, visited };\n}\nexport function CanInstantiate(types) {\n return Guard.ShiftLeft(types, (left, right) => IsRef(left)\n ? false\n : CanInstantiate(right), () => true);\n}\nexport function InstantiateProperties(context, state, properties) {\n return Guard.Keys(properties).reduce((result, key) => {\n return { ...result, [key]: InstantiateType(context, state, properties[key]) };\n }, {});\n}\nexport function InstantiateElements(context, state, types) {\n const elements = InstantiateTypes(context, state, types);\n const result = RestSpread(elements);\n return result;\n}\nexport function InstantiateTypes(context, state, types) {\n return types.map(type => InstantiateType(context, state, type));\n}\nfunction WithModifiers(type, instantiatedType) {\n const withOptional = IsOptional(type) ? AddOptionalAction(instantiatedType, {}) : instantiatedType;\n const withReadonly = IsReadonly(type) ? AddReadonlyAction(withOptional, {}) : withOptional;\n const withImmutable = IsImmutable(type) ? AddImmutableAction(withReadonly, {}) : withReadonly;\n return withImmutable;\n}\nfunction InstantiateDeferred(context, state, action, parameters, options) {\n return (\n // Modifiers\n Guard.IsEqual(action, 'AddImmutable') ? AddImmutableInstantiate(context, state, parameters[0], options) :\n Guard.IsEqual(action, 'RemoveImmutable') ? RemoveImmutableInstantiate(context, state, parameters[0], options) :\n Guard.IsEqual(action, 'AddReadonly') ? AddReadonlyInstantiate(context, state, parameters[0], options) :\n Guard.IsEqual(action, 'RemoveReadonly') ? RemoveReadonlyInstantiate(context, state, parameters[0], options) :\n Guard.IsEqual(action, 'AddOptional') ? AddOptionalInstantiate(context, state, parameters[0], options) :\n Guard.IsEqual(action, 'RemoveOptional') ? RemoveOptionalInstantiate(context, state, parameters[0], options) :\n // Actions\n Guard.IsEqual(action, 'Capitalize') ? CapitalizeInstantiate(context, state, parameters[0], options) :\n Guard.IsEqual(action, 'Conditional') ? ConditionalInstantiate(context, state, parameters[0], parameters[1], parameters[2], parameters[3], options) :\n Guard.IsEqual(action, 'ConstructorParameters') ? ConstructorParametersInstantiate(context, state, parameters[0], options) :\n Guard.IsEqual(action, 'Evaluate') ? EvaluateInstantiate(context, state, parameters[0], options) :\n Guard.IsEqual(action, 'Exclude') ? ExcludeInstantiate(context, state, parameters[0], parameters[1], options) :\n Guard.IsEqual(action, 'Extract') ? ExtractInstantiate(context, state, parameters[0], parameters[1], options) :\n Guard.IsEqual(action, 'Index') ? IndexInstantiate(context, state, parameters[0], parameters[1], options) :\n Guard.IsEqual(action, 'InstanceType') ? InstanceTypeInstantiate(context, state, parameters[0], options) :\n Guard.IsEqual(action, 'Interface') ? InterfaceInstantiate(context, state, parameters[0], parameters[1], options) :\n Guard.IsEqual(action, 'KeyOf') ? KeyOfInstantiate(context, state, parameters[0], options) :\n Guard.IsEqual(action, 'Lowercase') ? LowercaseInstantiate(context, state, parameters[0], options) :\n Guard.IsEqual(action, 'Mapped') ? MappedInstantiate(context, state, parameters[0], parameters[1], parameters[2], parameters[3], options) :\n Guard.IsEqual(action, 'Module') ? ModuleInstantiate(context, state, parameters[0], options) :\n Guard.IsEqual(action, 'NonNullable') ? NonNullableInstantiate(context, state, parameters[0], options) :\n Guard.IsEqual(action, 'Pick') ? PickInstantiate(context, state, parameters[0], parameters[1], options) :\n Guard.IsEqual(action, 'Parameters') ? ParametersInstantiate(context, state, parameters[0], options) :\n Guard.IsEqual(action, 'Partial') ? PartialInstantiate(context, state, parameters[0], options) :\n Guard.IsEqual(action, 'Omit') ? OmitInstantiate(context, state, parameters[0], parameters[1], options) :\n Guard.IsEqual(action, 'ReadonlyObject') ? ReadonlyObjectInstantiate(context, state, parameters[0], options) :\n Guard.IsEqual(action, 'Record') ? RecordInstantiate(context, state, parameters[0], parameters[1], options) :\n Guard.IsEqual(action, 'Required') ? RequiredInstantiate(context, state, parameters[0], options) :\n Guard.IsEqual(action, 'ReturnType') ? ReturnTypeInstantiate(context, state, parameters[0], options) :\n Guard.IsEqual(action, 'TemplateLiteral') ? TemplateLiteralInstantiate(context, state, parameters[0], options) :\n Guard.IsEqual(action, 'Uncapitalize') ? UncapitalizeInstantiate(context, state, parameters[0], options) :\n Guard.IsEqual(action, 'Uppercase') ? UppercaseInstantiate(context, state, parameters[0], options) :\n Guard.IsEqual(action, 'With') ? WithInstantiate(context, state, parameters[0], parameters[1]) :\n Deferred(action, parameters, options));\n}\nfunction InstantiateImmediate(context, state, type) {\n const instantiatedType = (IsRef(type) ? RefInstantiate(context, state, type, type.$ref) :\n IsArray(type) ? _Array_(InstantiateType(context, state, type.items), ArrayOptions(type)) :\n IsCall(type) ? CallInstantiate(context, state, type.target, type.arguments) :\n IsConstructor(type) ? Constructor(InstantiateTypes(context, state, type.parameters), InstantiateType(context, state, type.instanceType), ConstructorOptions(type)) :\n IsFunction(type) ? _Function_(InstantiateTypes(context, state, type.parameters), InstantiateType(context, state, type.returnType), FunctionOptions(type)) :\n IsDependent(type) ? Dependent(InstantiateType(context, state, type.if), InstantiateType(context, state, type.then), InstantiateType(context, state, type.else), DependentOptions(type)) :\n IsIntersect(type) ? Intersect(InstantiateTypes(context, state, type.allOf), IntersectOptions(type)) :\n IsObject(type) ? Object(InstantiateProperties(context, state, type.properties), ObjectOptions(type)) :\n IsRecord(type) ? RecordFromPattern(RecordPattern(type), InstantiateType(context, state, RecordValue(type))) :\n IsRest(type) ? Rest(InstantiateType(context, state, type.items)) :\n IsTuple(type) ? Tuple(InstantiateElements(context, state, type.items), TupleOptions(type)) :\n IsUnion(type) ? Union(InstantiateTypes(context, state, type.anyOf), UnionOptions(type)) :\n type);\n const withModifiers = WithModifiers(type, instantiatedType);\n return withModifiers;\n}\nexport function InstantiateType(context, state, type) {\n const result = IsDeferred(type)\n ? InstantiateDeferred(context, state, type.action, type.parameters, type.options)\n : InstantiateImmediate(context, state, type);\n return result;\n}\n/** Instantiates computed schematics using the given context and type. */\nexport function Instantiate(context, type) {\n return InstantiateType(context, State([], []), type);\n}\n","// deno-fmt-ignore-file\nimport { Memory } from '../../../system/memory/index.mjs';\nimport { InstantiateType } from '../instantiate.mjs';\nfunction AddImmutableOperation(type) {\n return Memory.Update(type, { '~immutable': true }, {});\n}\nexport function AddImmutableAction(type, options) {\n const result = Memory.Update(AddImmutableOperation(type), {}, options);\n return result;\n}\nexport function AddImmutableInstantiate(context, state, type, options) {\n const instantiatedType = InstantiateType(context, state, type);\n return AddImmutableAction(instantiatedType, options);\n}\n","// deno-fmt-ignore-file\nimport { Deferred } from '../types/deferred.mjs';\nimport { AddImmutableAction } from '../engine/immutable/instantiate_add.mjs';\n/** Creates a deferred AddImmutable action. */\nexport function AddImmutableDeferred(type, options = {}) {\n return Deferred('AddImmutable', [type], options);\n}\n/** Applies an AddImmutable action to a type. */\nexport function AddImmutable(type, options = {}) {\n return AddImmutableAction(type, options);\n}\n","// deno-fmt-ignore-file\nimport { Deferred } from '../types/deferred.mjs';\nimport { EvaluateAction } from '../engine/evaluate/instantiate.mjs';\n/** Creates a deferred Evaluate action. */\nexport function EvaluateDeferred(type, options = {}) {\n return Deferred('Evaluate', [type], options);\n}\n/** Applies an Evaluate action to a type. */\nexport function Evaluate(type, options = {}) {\n return EvaluateAction(type, options);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { Compare, CompareResultRightInside, CompareResultDisjoint } from '../evaluate/compare.mjs';\nfunction Comparer(left, right) {\n const compareResult = Compare(left, right);\n return (Guard.IsEqual(compareResult, CompareResultRightInside) ? 1 :\n Guard.IsEqual(compareResult, CompareResultDisjoint) ? 1 :\n 0);\n}\nfunction Insert(type, types, result = []) {\n return Guard.ShiftLeft(types, (left, right) => Guard.IsEqual(Comparer(type, left), 1)\n ? Insert(type, right, [...result, left])\n : [...result, type, ...types], () => [...result, type]);\n}\nfunction Sort(types, result = []) {\n return Guard.ShiftLeft(types, (left, right) => Sort(right, Insert(left, result)), () => result);\n}\n/**\n * Priority sorts types in sequence of narrowest to broadest using an Insertion Sort\n * algorithm. This function is typically used to sequence types for union variant\n * checks to ensure that values are checked against the most narrow types before\n * the broadest, which in turn helps ensure order-independent Union checking.\n */\nexport function Priority(types) {\n const result = Sort(types);\n return result;\n}\n","import { Type, type Static } from 'typebox';\nimport { DATA_TYPES, type DataType } from './dataTypes.js';\nimport type { JsonValue } from './json.js';\nimport type { DataTypeSettings } from './settings.js';\n\n/**\n * Model and component definitions. Both kinds share one table (`models`, with a `kind` discriminator) but\n * have distinct TypeScript types: a component cannot be published, localised or addressed by a route.\n *\n * The `*InputSchema` TypeBox schemas describe what callers send and what schema files contain: IDs and\n * defaulted properties may be omitted. `normalizeDefinition` turns input into the normalized types below,\n * which are what Shapio stores, hashes and diffs.\n */\nconst closed = { additionalProperties: false } as const;\n\nexport const MODEL_KINDS = ['collection', 'singleton'] as const;\nexport type ModelKind = (typeof MODEL_KINDS)[number];\nexport const DEFINITION_KINDS = [...MODEL_KINDS, 'component'] as const;\nexport type DefinitionKind = (typeof DEFINITION_KINDS)[number];\n\nexport const SORT_DIRECTIONS = ['asc', 'desc'] as const;\nexport type SortDirection = (typeof SORT_DIRECTIONS)[number];\n\n/**\n * How an entry of a model opens: `document` (title typed into the page, blocks in a canvas, properties in\n * the strip and the settings drawer) or `form` (every field inline at its `width`, sections from\n * `display.groups`). Unset means `document`; normalizing drops an explicit `document`.\n */\nexport const ENTRY_LAYOUTS = ['document', 'form'] as const;\nexport type EntryLayout = (typeof ENTRY_LAYOUTS)[number];\n\n/**\n * A field's width in a form-layout entry, as a share of the row: rows fill in field order and wrap. Unset\n * means `full`; normalizing drops an explicit `full`.\n */\nexport const FIELD_WIDTHS = ['full', 'two-thirds', 'half', 'third'] as const;\nexport type FieldWidth = (typeof FIELD_WIDTHS)[number];\n\nexport const MAX_FIELDS_PER_DEFINITION = 500;\nexport const MAX_LABEL_LENGTH = 200;\nexport const MAX_DESCRIPTION_LENGTH = 2000;\n\nconst Label = Type.String({ minLength: 1, maxLength: MAX_LABEL_LENGTH });\nconst Description = Type.Optional(Type.String({ maxLength: MAX_DESCRIPTION_LENGTH }));\n\nexport const EditorChoiceInputSchema = Type.Object(\n {\n id: Type.String({ minLength: 1, maxLength: 128 }),\n options: Type.Optional(Type.Record(Type.String(), Type.Unknown())),\n },\n closed,\n);\n\nexport const FieldInputSchema = Type.Object(\n {\n id: Type.Optional(Type.String()),\n apiKey: Type.String(),\n label: Label,\n /** Help text shown under the control. */\n description: Description,\n type: Type.Enum(DATA_TYPES),\n required: Type.Optional(Type.Boolean()),\n /** Per-locale value. Ignored (must be false) when the model is not localized. */\n localized: Type.Optional(Type.Boolean()),\n /** Readable by delivery principals wherever the model is readable (ADR 0005). Default true. */\n public: Type.Optional(Type.Boolean()),\n unique: Type.Optional(Type.Boolean()),\n filterable: Type.Optional(Type.Boolean()),\n sortable: Type.Optional(Type.Boolean()),\n /** Hidden from editors and the API; stored values are preserved until an explicit cleanup. */\n deprecated: Type.Optional(Type.Boolean()),\n /** Used for new entries and to backfill existing ones when the field becomes required. */\n defaultValue: Type.Optional(Type.Unknown()),\n /** Type-specific settings, validated against SETTINGS_SCHEMAS[type]. */\n settings: Type.Optional(Type.Record(Type.String(), Type.Unknown())),\n editor: Type.Optional(EditorChoiceInputSchema),\n /**\n * Width in a form-layout entry (`display.layout: 'form'`). Default `full`. Model fields only: the\n * validator refuses it on a component's field.\n */\n width: Type.Optional(Type.Enum(FIELD_WIDTHS)),\n },\n closed,\n);\n\nconst FieldGroupSchema = Type.Object(\n { id: Type.String({ minLength: 1, maxLength: 64 }), label: Label, fieldIds: Type.Array(Type.String()) },\n closed,\n);\n\nexport const ModelDisplayInputSchema = Type.Object(\n {\n /** How entries open: `document` (default) or `form`. See `ENTRY_LAYOUTS`. */\n layout: Type.Optional(Type.Enum(ENTRY_LAYOUTS)),\n /** Field whose value labels an entry in lists, pickers and relation summaries. */\n titleFieldId: Type.Optional(Type.String()),\n /** Columns of the content list, in order. */\n listFieldIds: Type.Optional(Type.Array(Type.String())),\n defaultSort: Type.Optional(\n Type.Object({ fieldId: Type.String(), direction: Type.Enum(SORT_DIRECTIONS) }, closed),\n ),\n /** Editor layout: named sections of the entry form. */\n groups: Type.Optional(Type.Array(FieldGroupSchema)),\n /** Fields rendered as blocks in the entry document's canvas, in order. Default: see `effectiveLayout`. */\n canvasFieldIds: Type.Optional(Type.Array(Type.String())),\n /** A single image `media` field shown as the cover above the title. Default: see `effectiveLayout`. */\n coverFieldId: Type.Optional(Type.String()),\n /** Properties shown as chips in the document's strip. Default: the first non-empty ones. */\n stripFieldIds: Type.Optional(Type.Array(Type.String())),\n },\n closed,\n);\n\nexport const ComponentDisplayInputSchema = Type.Object(\n {\n titleFieldId: Type.Optional(Type.String()),\n groups: Type.Optional(Type.Array(FieldGroupSchema)),\n },\n closed,\n);\n\nconst definitionBase = {\n id: Type.Optional(Type.String()),\n apiKey: Type.String(),\n label: Label,\n description: Description,\n fields: Type.Array(FieldInputSchema, { maxItems: MAX_FIELDS_PER_DEFINITION }),\n};\n\nexport const ModelDefinitionInputSchema = Type.Object(\n {\n ...definitionBase,\n kind: Type.Enum(MODEL_KINDS),\n /**\n * Collections only: names the list route and query (`/api/content/articles`, `articles(…)`). Optional\n * here so files written before plural API IDs still parse; normalizing fills it on a collection.\n */\n pluralApiKey: Type.Optional(Type.String()),\n localized: Type.Optional(Type.Boolean()),\n /** Entries have separate draft and published states. Default true. */\n draftAndPublish: Type.Optional(Type.Boolean()),\n display: Type.Optional(ModelDisplayInputSchema),\n },\n closed,\n);\n\nexport const ComponentDefinitionInputSchema = Type.Object(\n {\n ...definitionBase,\n kind: Type.Literal('component'),\n category: Type.Optional(Type.String({ minLength: 1, maxLength: 100 })),\n icon: Type.Optional(Type.String({ minLength: 1, maxLength: 64 })),\n display: Type.Optional(ComponentDisplayInputSchema),\n },\n closed,\n);\n\nexport const DefinitionInputSchema = Type.Union([ModelDefinitionInputSchema, ComponentDefinitionInputSchema]);\n\nexport type FieldInput = Static<typeof FieldInputSchema>;\nexport type ModelDefinitionInput = Static<typeof ModelDefinitionInputSchema>;\nexport type ComponentDefinitionInput = Static<typeof ComponentDefinitionInputSchema>;\nexport type DefinitionInput = ModelDefinitionInput | ComponentDefinitionInput;\n\nexport type EditorChoice = { id: string; options: Record<string, JsonValue> };\n\ntype FieldBase = {\n id: string;\n apiKey: string;\n label: string;\n description?: string;\n required: boolean;\n localized: boolean;\n public: boolean;\n unique: boolean;\n filterable: boolean;\n sortable: boolean;\n deprecated: boolean;\n defaultValue?: JsonValue;\n editor: EditorChoice;\n /** Width in a form-layout entry; absent means `full`. */\n width?: FieldWidth;\n};\n\n/** A normalized field. Narrow on `type` to get typed `settings`. */\nexport type FieldDefinition<T extends DataType = DataType> = {\n [K in T]: FieldBase & { type: K; settings: DataTypeSettings[K] };\n}[T];\n\nexport type FieldGroup = { id: string; label: string; fieldIds: string[] };\n\nexport type ModelDisplay = {\n /** Absent means `document`. */\n layout?: EntryLayout;\n titleFieldId?: string;\n listFieldIds?: string[];\n defaultSort?: { fieldId: string; direction: SortDirection };\n groups?: FieldGroup[];\n canvasFieldIds?: string[];\n coverFieldId?: string;\n stripFieldIds?: string[];\n};\n\nexport type ComponentDisplay = { titleFieldId?: string; groups?: FieldGroup[] };\n\nexport type ModelDefinition = {\n id: string;\n kind: ModelKind;\n apiKey: string;\n /**\n * Present on collections (filled by normalizing), absent on singletons. Read it through `routeKeyOf`,\n * which also covers a stored definition that predates plural API IDs.\n */\n pluralApiKey?: string;\n label: string;\n description?: string;\n localized: boolean;\n draftAndPublish: boolean;\n fields: FieldDefinition[];\n display: ModelDisplay;\n};\n\nexport type ComponentDefinition = {\n id: string;\n kind: 'component';\n apiKey: string;\n label: string;\n description?: string;\n category?: string;\n icon?: string;\n fields: FieldDefinition[];\n display: ComponentDisplay;\n};\n\n/** Either kind. Most schema machinery (diff, file format, registry) works on both. */\nexport type SchemaDefinition = ModelDefinition | ComponentDefinition;\n\nexport const isComponentDefinition = (definition: SchemaDefinition): definition is ComponentDefinition =>\n definition.kind === 'component';\n\nexport const isModelDefinition = (definition: SchemaDefinition): definition is ModelDefinition =>\n definition.kind !== 'component';\n","import { Type, type Static } from 'typebox';\n\n/** BCP 47 subset: language (2–3 letters) plus optional subtags, e.g. `en`, `fr-CA`, `zh-Hant-TW`. */\nexport const LOCALE_CODE_PATTERN = /^[a-z]{2,3}(-[A-Za-z0-9]{2,8})*$/;\nexport const MAX_FALLBACK_CHAIN = 10;\n\nexport const LocaleInputSchema = Type.Object(\n {\n code: Type.String({ pattern: LOCALE_CODE_PATTERN.source, maxLength: 35 }),\n label: Type.String({ minLength: 1, maxLength: 100 }),\n /** Locales tried in order when content is missing in this one; the default locale is always last. */\n fallbacks: Type.Optional(Type.Array(Type.String(), { maxItems: MAX_FALLBACK_CHAIN })),\n },\n { additionalProperties: false },\n);\n\nexport type LocaleInput = Static<typeof LocaleInputSchema>;\n\nexport type LocaleDefinition = {\n code: string;\n label: string;\n isDefault: boolean;\n fallbacks: string[];\n};\n","/**\n * Canonical text formats for values stored as JSON strings (ADR 0001: dates and times are canonical UTC\n * ISO-8601 text so they index and sort as text; decimal and biginteger are strings so no precision is lost).\n * The content validator (package E) and the settings validators here share these patterns.\n */\nexport const DATE_PATTERN = /^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$/;\nexport const DATETIME_PATTERN =\n /^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])T([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(\\.\\d{3})?Z$/;\nexport const TIME_PATTERN = /^([01]\\d|2[0-3]):[0-5]\\d(:[0-5]\\d(\\.\\d{3})?)?$/;\nexport const DECIMAL_PATTERN = /^-?(0|[1-9]\\d*)(\\.\\d+)?$/;\nexport const BIGINTEGER_PATTERN = /^-?(0|[1-9]\\d*)$/;\n/** Lower-case words joined by single hyphens, e.g. `summer-sale-2026`. */\nexport const SLUG_PATTERN = /^[a-z0-9]+(-[a-z0-9]+)*$/;\n/** URL-safe identifier characters for `uid` fields. */\nexport const UID_PATTERN = /^[A-Za-z0-9_.~-]+$/;\n\n/** The rich-text document envelope version this release reads and writes (ADR 0003). */\nexport const RICHTEXT_FORMAT = 'shapio-richtext';\nexport const RICHTEXT_FORMAT_VERSION = 1;\n","import { Type, type Static, type TSchema } from 'typebox';\nimport type { DataType } from './dataTypes.js';\nimport {\n BIGINTEGER_PATTERN,\n DATE_PATTERN,\n DATETIME_PATTERN,\n DECIMAL_PATTERN,\n TIME_PATTERN,\n} from './valueFormats.js';\n\n/**\n * Per-data-type settings: validation rules and type configuration (relation target, component reference,\n * enum values...). Each schema is closed (`additionalProperties: false`) so a typo in a hand-edited schema\n * file is reported instead of ignored. Defaults are applied by `normalizeDefinition`.\n */\nconst closed = { additionalProperties: false } as const;\nconst NonNegativeInt = Type.Integer({ minimum: 0 });\nconst pattern = (regex: RegExp) => Type.String({ pattern: regex.source });\n\nconst lengthRules = {\n minLength: Type.Optional(NonNegativeInt),\n maxLength: Type.Optional(Type.Integer({ minimum: 1 })),\n};\nconst countRules = {\n min: Type.Optional(NonNegativeInt),\n max: Type.Optional(Type.Integer({ minimum: 1 })),\n};\n\nexport const MEDIA_KINDS = ['image', 'video', 'audio', 'document', 'other'] as const;\nexport const RELATION_CARDINALITIES = ['one', 'many'] as const;\n\n/** Languages a `code` field can hold. The language reaches the API (OpenAPI, GraphQL, generated types). */\nexport const CODE_LANGUAGES = ['plain', 'html', 'css', 'javascript', 'json', 'yaml', 'markdown'] as const;\nexport type CodeLanguage = (typeof CODE_LANGUAGES)[number];\n\nexport const EnumValueSchema = Type.Object(\n {\n value: Type.String({ minLength: 1, maxLength: 64 }),\n label: Type.String({ minLength: 1, maxLength: 200 }),\n },\n closed,\n);\n\nexport const SETTINGS_SCHEMAS = {\n string: Type.Object(\n { ...lengthRules, pattern: Type.Optional(Type.String({ minLength: 1, maxLength: 500 })) },\n closed,\n ),\n text: Type.Object(lengthRules, closed),\n code: Type.Object(\n {\n language: Type.Optional(Type.Enum(CODE_LANGUAGES)),\n ...lengthRules,\n /** JSON only: a value that does not parse is refused. */\n validate: Type.Optional(Type.Boolean()),\n },\n closed,\n ),\n richtext: Type.Object(\n {\n formatVersion: Type.Optional(Type.Integer({ minimum: 1 })),\n maxLength: Type.Optional(Type.Integer({ minimum: 1 })),\n },\n closed,\n ),\n number: Type.Object({ min: Type.Optional(Type.Number()), max: Type.Optional(Type.Number()) }, closed),\n integer: Type.Object({ min: Type.Optional(Type.Integer()), max: Type.Optional(Type.Integer()) }, closed),\n decimal: Type.Object(\n {\n precision: Type.Optional(Type.Integer({ minimum: 1, maximum: 1000 })),\n scale: Type.Optional(Type.Integer({ minimum: 0, maximum: 1000 })),\n min: Type.Optional(pattern(DECIMAL_PATTERN)),\n max: Type.Optional(pattern(DECIMAL_PATTERN)),\n },\n closed,\n ),\n biginteger: Type.Object(\n { min: Type.Optional(pattern(BIGINTEGER_PATTERN)), max: Type.Optional(pattern(BIGINTEGER_PATTERN)) },\n closed,\n ),\n boolean: Type.Object({}, closed),\n date: Type.Object(\n { min: Type.Optional(pattern(DATE_PATTERN)), max: Type.Optional(pattern(DATE_PATTERN)) },\n closed,\n ),\n datetime: Type.Object(\n { min: Type.Optional(pattern(DATETIME_PATTERN)), max: Type.Optional(pattern(DATETIME_PATTERN)) },\n closed,\n ),\n time: Type.Object(\n { min: Type.Optional(pattern(TIME_PATTERN)), max: Type.Optional(pattern(TIME_PATTERN)) },\n closed,\n ),\n enum: Type.Object(\n {\n values: Type.Array(EnumValueSchema, { minItems: 1, maxItems: 500 }),\n multiple: Type.Optional(Type.Boolean()),\n },\n closed,\n ),\n json: Type.Object({}, closed),\n slug: Type.Object({ ...lengthRules, sourceFieldId: Type.Optional(Type.String()) }, closed),\n email: Type.Object({}, closed),\n url: Type.Object(\n { protocols: Type.Optional(Type.Array(Type.Enum(['http', 'https', 'mailto', 'tel']), { minItems: 1 })) },\n closed,\n ),\n uid: Type.Object(lengthRules, closed),\n media: Type.Object(\n {\n multiple: Type.Optional(Type.Boolean()),\n allowedKinds: Type.Optional(Type.Array(Type.Enum(MEDIA_KINDS), { minItems: 1 })),\n ...countRules,\n },\n closed,\n ),\n relation: Type.Object(\n { target: Type.String(), cardinality: Type.Enum(RELATION_CARDINALITIES), ...countRules },\n closed,\n ),\n component: Type.Object(\n { component: Type.String(), repeatable: Type.Optional(Type.Boolean()), ...countRules },\n closed,\n ),\n dynamiczone: Type.Object(\n { components: Type.Array(Type.String(), { minItems: 1, maxItems: 100 }), ...countRules },\n closed,\n ),\n} satisfies Record<DataType, TSchema>;\n\ntype SettingsSchemas = typeof SETTINGS_SCHEMAS;\n\n/** Settings as authored (defaults may be missing). */\nexport type DataTypeSettingsInput = { [T in DataType]: Static<SettingsSchemas[T]> };\n\n/** Settings after normalization: the defaulted keys are always present. */\nexport type DataTypeSettings = Omit<\n DataTypeSettingsInput,\n 'code' | 'richtext' | 'enum' | 'media' | 'component'\n> & {\n code: DataTypeSettingsInput['code'] & { language: CodeLanguage };\n richtext: DataTypeSettingsInput['richtext'] & { formatVersion: number };\n enum: DataTypeSettingsInput['enum'] & { multiple: boolean };\n media: DataTypeSettingsInput['media'] & { multiple: boolean };\n component: DataTypeSettingsInput['component'] & { repeatable: boolean };\n};\n","import type { FieldDefinition } from '../types/definitions.js';\nimport { SEO_COMPONENT_ID } from './ids.js';\n\n/** Whether a field holds the built-in SEO component (by stable ID, whatever its API ID or editor). */\nexport const isSeoField = (field: FieldDefinition): boolean =>\n field.type === 'component' && field.settings.component === SEO_COMPONENT_ID && !field.settings.repeatable;\n","import { Type, type TSchema } from 'typebox';\nimport { isSeoField } from '../seo/field.js';\nimport { SEO_EDITOR_ID } from '../seo/ids.js';\nimport type { DataType } from '../types/dataTypes.js';\nimport type { FieldDefinition } from '../types/definitions.js';\n\n/**\n * Built-in editors (ADR 0009): which data types each can edit and the schema of its options. The server\n * validates every field's editor choice against this catalogue, so selecting and configuring an editor is\n * runtime metadata. Custom editors (loaded at runtime from the project) use namespaced IDs containing a dot,\n * e.g. `acme.colorWheel`; their options are free-form JSON here because their schema lives in the project.\n */\nexport type EditorCatalogueEntry = {\n id: string;\n dataTypes: readonly DataType[];\n optionsSchema: TSchema;\n /** Extra compatibility rule beyond the data type (e.g. radio buttons only for single-value enums). */\n supports?: (field: FieldDefinition) => boolean;\n};\n\nconst closed = { additionalProperties: false } as const;\nconst Placeholder = Type.Optional(Type.String({ maxLength: 200 }));\nconst isMultipleEnum = (field: FieldDefinition) => field.type === 'enum' && field.settings.multiple;\n\nconst entries: EditorCatalogueEntry[] = [\n {\n id: 'textInput',\n dataTypes: ['string', 'email', 'url', 'uid'],\n optionsSchema: Type.Object({ placeholder: Placeholder }, closed),\n },\n {\n id: 'textarea',\n dataTypes: ['text', 'string'],\n optionsSchema: Type.Object(\n { placeholder: Placeholder, rows: Type.Optional(Type.Integer({ minimum: 2, maximum: 40 })) },\n closed,\n ),\n },\n {\n id: 'color',\n dataTypes: ['string'],\n optionsSchema: Type.Object(\n {\n format: Type.Optional(Type.Enum(['hex', 'rgb'])),\n presets: Type.Optional(Type.Array(Type.String({ maxLength: 32 }), { maxItems: 50 })),\n },\n closed,\n ),\n },\n {\n id: 'richText',\n dataTypes: ['richtext'],\n optionsSchema: Type.Object({ toolbar: Type.Optional(Type.Enum(['full', 'minimal'])) }, closed),\n },\n {\n id: 'numberInput',\n dataTypes: ['number', 'integer', 'decimal', 'biginteger'],\n optionsSchema: Type.Object(\n { placeholder: Placeholder, step: Type.Optional(Type.Number({ exclusiveMinimum: 0 })) },\n closed,\n ),\n },\n {\n id: 'toggle',\n dataTypes: ['boolean'],\n optionsSchema: Type.Object({}, closed),\n },\n {\n id: 'checkbox',\n dataTypes: ['boolean'],\n optionsSchema: Type.Object({}, closed),\n },\n {\n id: 'segmented',\n dataTypes: ['boolean', 'enum'],\n optionsSchema: Type.Object(\n {\n trueLabel: Type.Optional(Type.String({ maxLength: 50 })),\n falseLabel: Type.Optional(Type.String({ maxLength: 50 })),\n },\n closed,\n ),\n supports: (field) => !isMultipleEnum(field),\n },\n {\n id: 'select',\n dataTypes: ['enum'],\n optionsSchema: Type.Object({ placeholder: Placeholder }, closed),\n },\n {\n id: 'radio',\n dataTypes: ['enum'],\n optionsSchema: Type.Object({ layout: Type.Optional(Type.Enum(['vertical', 'horizontal'])) }, closed),\n supports: (field) => !isMultipleEnum(field),\n },\n {\n id: 'checkboxGroup',\n dataTypes: ['enum'],\n optionsSchema: Type.Object({ layout: Type.Optional(Type.Enum(['vertical', 'horizontal'])) }, closed),\n supports: isMultipleEnum,\n },\n {\n id: 'datePicker',\n dataTypes: ['date'],\n optionsSchema: Type.Object({}, closed),\n },\n {\n id: 'dateTimePicker',\n dataTypes: ['datetime'],\n optionsSchema: Type.Object({ display: Type.Optional(Type.Enum(['local', 'utc'])) }, closed),\n },\n {\n id: 'timePicker',\n dataTypes: ['time'],\n optionsSchema: Type.Object(\n { stepMinutes: Type.Optional(Type.Integer({ minimum: 1, maximum: 60 })) },\n closed,\n ),\n },\n {\n id: 'slugInput',\n dataTypes: ['slug'],\n optionsSchema: Type.Object({ placeholder: Placeholder }, closed),\n },\n {\n id: 'jsonEditor',\n dataTypes: ['json'],\n optionsSchema: Type.Object({ rows: Type.Optional(Type.Integer({ minimum: 3, maximum: 80 })) }, closed),\n },\n {\n id: 'codeEditor',\n dataTypes: ['code'],\n optionsSchema: Type.Object({ rows: Type.Optional(Type.Integer({ minimum: 3, maximum: 80 })) }, closed),\n },\n {\n id: 'mediaPicker',\n dataTypes: ['media'],\n optionsSchema: Type.Object({}, closed),\n },\n {\n id: 'relationPicker',\n dataTypes: ['relation'],\n optionsSchema: Type.Object({ allowInlineCreate: Type.Optional(Type.Boolean()) }, closed),\n },\n {\n id: 'componentEditor',\n dataTypes: ['component'],\n optionsSchema: Type.Object({ collapsed: Type.Optional(Type.Boolean()) }, closed),\n },\n {\n // The built-in SEO component's editor: its fields with length counters and a search-result preview.\n id: SEO_EDITOR_ID,\n dataTypes: ['component'],\n optionsSchema: Type.Object({}, closed),\n supports: isSeoField,\n },\n {\n id: 'dynamicZoneEditor',\n dataTypes: ['dynamiczone'],\n optionsSchema: Type.Object({ collapsed: Type.Optional(Type.Boolean()) }, closed),\n },\n];\n\nexport const EDITOR_CATALOGUE: ReadonlyMap<string, EditorCatalogueEntry> = new Map(\n entries.map((entry) => [entry.id, entry]),\n);\n\n/** The editor a field gets when its definition names none. */\nexport const DEFAULT_EDITORS: Readonly<Record<DataType, string>> = {\n string: 'textInput',\n text: 'textarea',\n code: 'codeEditor',\n richtext: 'richText',\n number: 'numberInput',\n integer: 'numberInput',\n decimal: 'numberInput',\n biginteger: 'numberInput',\n boolean: 'toggle',\n date: 'datePicker',\n datetime: 'dateTimePicker',\n time: 'timePicker',\n enum: 'select',\n json: 'jsonEditor',\n slug: 'slugInput',\n email: 'textInput',\n url: 'textInput',\n uid: 'textInput',\n media: 'mediaPicker',\n relation: 'relationPicker',\n component: 'componentEditor',\n dynamiczone: 'dynamicZoneEditor',\n};\n\n/** `vendor.name` (letters, digits, `_`, `-`), e.g. `acme.colorWheel`. Built-in IDs never contain a dot. */\nexport const CUSTOM_EDITOR_ID_PATTERN = /^[A-Za-z][A-Za-z0-9_-]*(\\.[A-Za-z][A-Za-z0-9_-]*)+$/;\n\nexport const isCustomEditorId = (id: string): boolean => CUSTOM_EDITOR_ID_PATTERN.test(id);\n\n/** Built-in editors that can edit this field (for the admin's editor picker). */\nexport const listCompatibleEditors = (field: FieldDefinition): EditorCatalogueEntry[] =>\n entries.filter((entry) => entry.dataTypes.includes(field.type) && (entry.supports?.(field) ?? true));\n","import type { FieldDefinition, SchemaDefinition } from '../types/definitions.js';\n\n/** Field types that may label entries: the only types `display.titleFieldId` accepts, and the fallback's. */\nexport const TITLE_FIELD_TYPES: ReadonlySet<string> = new Set([\n 'string',\n 'text',\n 'slug',\n 'email',\n 'uid',\n 'enum',\n]);\n\n/**\n * Field types the list API's `q` search runs on, checked on top of the title field: an enum title is not\n * searchable. `url` is listed for search only; it is never a title.\n */\nexport const TEXT_TITLE_FIELD_TYPES: ReadonlySet<string> = new Set([\n 'string',\n 'text',\n 'slug',\n 'email',\n 'url',\n 'uid',\n]);\n\n/**\n * The field that labels a definition's entries in lists, pickers, relation summaries and search: the\n * configured `display.titleFieldId` when it points at a live (non-deprecated) field, otherwise the first\n * live field of a title type (TITLE_FIELD_TYPES) in field order, otherwise undefined. `titleFieldId` is\n * optional, so a model built without one still gets a readable title.\n */\nexport const effectiveTitleField = (definition: SchemaDefinition): FieldDefinition | undefined => {\n const live = definition.fields.filter((field) => !field.deprecated);\n const configured = definition.display.titleFieldId;\n return (\n (configured === undefined ? undefined : live.find((field) => field.id === configured)) ??\n live.find((field) => TITLE_FIELD_TYPES.has(field.type))\n );\n};\n","import type { DataType } from '../types/dataTypes.js';\nimport type { EntryLayout, FieldDefinition, ModelDefinition } from '../types/definitions.js';\nimport { effectiveTitleField } from './titleField.js';\n\n/**\n * Data types that are blocks of the entry document's canvas by default. Components must also be repeatable\n * and media must hold several files (`isCanvasEligible`); a single component or file is a property unless\n * `display.canvasFieldIds` places it in the document.\n */\nexport const CANVAS_ELIGIBLE: ReadonlySet<DataType> = new Set<DataType>([\n 'richtext',\n 'dynamiczone',\n 'component',\n 'media',\n]);\n\n/** Title types that the document edits inline as its H1; any other title type stays a property. */\nexport const INLINE_TITLE_TYPES: ReadonlySet<DataType> = new Set<DataType>(['string', 'text']);\n\n/** How many properties the strip shows when `display.stripFieldIds` is not set. */\nexport const STRIP_DEFAULT_COUNT = 5;\n\n/**\n * The automatic rule: the fields written in the document while `display.canvasFieldIds` is unset (rich\n * text, dynamic zones, repeatable components, media with several files). Also what a canvas field can take\n * between blocks: only these hold blocks.\n */\nexport const isCanvasEligible = (field: FieldDefinition): boolean => {\n switch (field.type) {\n case 'richtext':\n case 'dynamiczone':\n return true;\n case 'component':\n return field.settings.repeatable;\n case 'media':\n return field.settings.multiple;\n default:\n return false;\n }\n};\n\n/**\n * Whether `display.canvasFieldIds` may list the field: any field but the entry's title (`effectiveTitleField`),\n * which the document shows as its heading. A configured cover is refused by the validator; an automatically\n * chosen one placed in the document simply stops being the cover.\n */\nexport const isDocumentPlaceable = (field: FieldDefinition, title: FieldDefinition | undefined): boolean =>\n field.id !== title?.id;\n\n/** A single `media` field that may hold an image. */\nexport const isCoverEligible = (field: FieldDefinition): boolean =>\n field.type === 'media' &&\n !field.settings.multiple &&\n (field.settings.allowedKinds === undefined || field.settings.allowedKinds.includes('image'));\n\n/** Properties under one of the model's `display.groups` (`label` undefined for ungrouped fields). */\nexport type PropertyGroup = { id: string; label: string | undefined; fields: FieldDefinition[] };\n\nexport type DocumentLayout = {\n /** The field that labels the entry (`effectiveTitleField`), if any. */\n title: FieldDefinition | undefined;\n /** The title is edited inline as the H1 (string/text); otherwise it is shown read-only and is a property. */\n titleInline: boolean;\n cover: FieldDefinition | undefined;\n /**\n * The fields written in the document, in order: block fields (`isCanvasEligible`) and any other field\n * that `display.canvasFieldIds` places there, each under its heading.\n */\n canvas: FieldDefinition[];\n /** Every other live field, ordered by `display.groups`, then field order. */\n properties: FieldDefinition[];\n /** `properties` split by group, for the settings drawer and the property grid. */\n propertyGroups: PropertyGroup[];\n /**\n * The strip's configured properties, or null when it is not configured: then it shows the first\n * STRIP_DEFAULT_COUNT non-empty properties (`stripFieldsOf`), which depends on the entry's values.\n */\n strip: FieldDefinition[] | null;\n};\n\nconst byIds = (live: readonly FieldDefinition[], ids: readonly string[] | undefined) =>\n (ids ?? [])\n .map((id) => live.find((field) => field.id === id))\n .filter((field): field is FieldDefinition => field !== undefined);\n\nconst unique = (fields: readonly FieldDefinition[]) => [...new Map(fields.map((f) => [f.id, f])).values()];\n\nconst groupProperties = (model: ModelDefinition, properties: readonly FieldDefinition[]): PropertyGroup[] => {\n const groups = (model.display.groups ?? [])\n .map((group) => ({ id: group.id, label: group.label, fields: byIds(properties, group.fieldIds) }))\n .filter((group) => group.fields.length > 0);\n const grouped = new Set(groups.flatMap((group) => group.fields.map((field) => field.id)));\n const rest = properties.filter((field) => !grouped.has(field.id));\n return rest.length > 0 ? [...groups, { id: 'other', label: undefined, fields: rest }] : groups;\n};\n\nconst coverOf = (model: ModelDefinition, live: readonly FieldDefinition[], canvas: ReadonlySet<string>) => {\n const configured = byIds(live, model.display.coverFieldId ? [model.display.coverFieldId] : [])[0];\n if (configured && isCoverEligible(configured) && !canvas.has(configured.id)) {\n return configured;\n }\n return live.find((field) => isCoverEligible(field) && !canvas.has(field.id));\n};\n\n/**\n * The entry document's layout: title, cover, document fields and properties. Configured `display` ids win\n * when they point at live, eligible fields; anything else falls back to the defaults (canvas: every block\n * field in field order; cover: the first single image field not in the canvas). Deprecated, unknown ids and\n * the title are skipped, so a stale definition never breaks the editor. Pure: no values, no I/O.\n */\nexport const effectiveLayout = (model: ModelDefinition): DocumentLayout => {\n const live = model.fields.filter((field) => !field.deprecated);\n const title = effectiveTitleField(model);\n const titleInline = title !== undefined && INLINE_TITLE_TYPES.has(title.type);\n const configuredCanvas = unique(\n byIds(live, model.display.canvasFieldIds).filter((field) => isDocumentPlaceable(field, title)),\n );\n const canvasCandidates =\n model.display.canvasFieldIds === undefined ? live.filter(isCanvasEligible) : configuredCanvas;\n const cover = coverOf(model, live, new Set(configuredCanvas.map((field) => field.id)));\n const canvas = canvasCandidates.filter((field) => field.id !== cover?.id);\n const placed = new Set([\n ...canvas.map((field) => field.id),\n ...(cover ? [cover.id] : []),\n ...(titleInline && title ? [title.id] : []),\n ]);\n const propertyGroups = groupProperties(\n model,\n live.filter((field) => !placed.has(field.id)),\n );\n const properties = propertyGroups.flatMap((group) => group.fields);\n const strip =\n model.display.stripFieldIds === undefined ? null : unique(byIds(properties, model.display.stripFieldIds));\n return { title, titleInline, cover, canvas, properties, propertyGroups, strip };\n};\n\n/** The strip's properties: the configured ones, or the first `limit` that `hasValue` says are non-empty. */\nexport const stripFieldsOf = (\n layout: DocumentLayout,\n hasValue: (field: FieldDefinition) => boolean,\n limit = STRIP_DEFAULT_COUNT,\n): FieldDefinition[] => layout.strip ?? layout.properties.filter(hasValue).slice(0, limit);\n\n/** How the model's entries open (`display.layout`): `document` unless set to `form`. */\nexport const entryLayoutOf = (model: ModelDefinition): EntryLayout => model.display.layout ?? 'document';\n\n/**\n * One section of a form-layout entry: a `display.groups` group (its `id` and `label`), or a run of\n * consecutive ungrouped fields (`label` undefined). A run's `id` is `ungrouped-<ID of its first field>`:\n * stable while that field stays first, and unique because a field starts one run at most. Should a group\n * be given that very ID, the run's ID gets `~` prefixed until no group has it.\n */\nexport type FieldSection = PropertyGroup;\n\nexport type FormLayout = {\n /** The field that labels the entry (`effectiveTitleField`): the page heading. It is also in `sections`. */\n title: FieldDefinition | undefined;\n /** Every live field, in sections. */\n sections: FieldSection[];\n};\n\nconst ungroupedSectionId = (first: FieldDefinition, groupIds: ReadonlySet<string>) => {\n let candidate = `ungrouped-${first.id}`;\n while (groupIds.has(candidate)) {\n candidate = `~${candidate}`;\n }\n return candidate;\n};\n\n/**\n * The entry form's layout (`display.layout: 'form'`): every live field, the title included, in sections.\n * Field order decides everything: a group's section sits where its first field appears, with its fields in\n * field order, and every run of consecutive ungrouped fields is an unlabelled section of its own at its\n * place. So name, price, sku, description with a Pricing group (price, sku) reads [name], Pricing [price,\n * sku], [description]. Unknown and deprecated ids are skipped. Pure: no values, no I/O.\n */\nexport const effectiveFormLayout = (model: ModelDefinition): FormLayout => {\n const groups = model.display.groups ?? [];\n const groupIds = new Set(groups.map((group) => group.id));\n const groupOf = new Map<string, { id: string; label: string }>();\n for (const group of groups) {\n for (const fieldId of group.fieldIds) {\n if (!groupOf.has(fieldId)) {\n groupOf.set(fieldId, group);\n }\n }\n }\n const sections: FieldSection[] = [];\n const groupSections = new Map<string, FieldSection>();\n let run: FieldSection | undefined;\n for (const field of model.fields) {\n if (field.deprecated) {\n continue;\n }\n const group = groupOf.get(field.id);\n if (!group) {\n if (!run) {\n run = { id: ungroupedSectionId(field, groupIds), label: undefined, fields: [] };\n sections.push(run);\n }\n run.fields.push(field);\n continue;\n }\n run = undefined;\n let section = groupSections.get(group.id);\n if (!section) {\n section = { id: group.id, label: group.label, fields: [] };\n groupSections.set(group.id, section);\n sections.push(section);\n }\n section.fields.push(field);\n }\n return { title: effectiveTitleField(model), sections };\n};\n\n/**\n * The entry's rich-text body, which \"Summarize from body\" reads: the document's rich-text canvas fields, or\n * every live rich-text field of a form (a form has no canvas; its fields are all on the page).\n */\nexport const richTextBodyOf = (model: ModelDefinition): FieldDefinition[] =>\n entryLayoutOf(model) === 'form'\n ? model.fields.filter((field) => field.type === 'richtext' && !field.deprecated)\n : effectiveLayout(model).canvas.filter((field) => field.type === 'richtext');\n","/* global define */\n\n(function (root, pluralize) {\n /* istanbul ignore else */\n if (typeof require === 'function' && typeof exports === 'object' && typeof module === 'object') {\n // Node.\n module.exports = pluralize();\n } else if (typeof define === 'function' && define.amd) {\n // AMD, registers as an anonymous module.\n define(function () {\n return pluralize();\n });\n } else {\n // Browser global.\n root.pluralize = pluralize();\n }\n})(this, function () {\n // Rule storage - pluralize and singularize need to be run sequentially,\n // while other rules can be optimized using an object for instant lookups.\n var pluralRules = [];\n var singularRules = [];\n var uncountables = {};\n var irregularPlurals = {};\n var irregularSingles = {};\n\n /**\n * Sanitize a pluralization rule to a usable regular expression.\n *\n * @param {(RegExp|string)} rule\n * @return {RegExp}\n */\n function sanitizeRule (rule) {\n if (typeof rule === 'string') {\n return new RegExp('^' + rule + '$', 'i');\n }\n\n return rule;\n }\n\n /**\n * Pass in a word token to produce a function that can replicate the case on\n * another word.\n *\n * @param {string} word\n * @param {string} token\n * @return {Function}\n */\n function restoreCase (word, token) {\n // Tokens are an exact match.\n if (word === token) return token;\n\n // Lower cased words. E.g. \"hello\".\n if (word === word.toLowerCase()) return token.toLowerCase();\n\n // Upper cased words. E.g. \"WHISKY\".\n if (word === word.toUpperCase()) return token.toUpperCase();\n\n // Title cased words. E.g. \"Title\".\n if (word[0] === word[0].toUpperCase()) {\n return token.charAt(0).toUpperCase() + token.substr(1).toLowerCase();\n }\n\n // Lower cased words. E.g. \"test\".\n return token.toLowerCase();\n }\n\n /**\n * Interpolate a regexp string.\n *\n * @param {string} str\n * @param {Array} args\n * @return {string}\n */\n function interpolate (str, args) {\n return str.replace(/\\$(\\d{1,2})/g, function (match, index) {\n return args[index] || '';\n });\n }\n\n /**\n * Replace a word using a rule.\n *\n * @param {string} word\n * @param {Array} rule\n * @return {string}\n */\n function replace (word, rule) {\n return word.replace(rule[0], function (match, index) {\n var result = interpolate(rule[1], arguments);\n\n if (match === '') {\n return restoreCase(word[index - 1], result);\n }\n\n return restoreCase(match, result);\n });\n }\n\n /**\n * Sanitize a word by passing in the word and sanitization rules.\n *\n * @param {string} token\n * @param {string} word\n * @param {Array} rules\n * @return {string}\n */\n function sanitizeWord (token, word, rules) {\n // Empty string or doesn't need fixing.\n if (!token.length || uncountables.hasOwnProperty(token)) {\n return word;\n }\n\n var len = rules.length;\n\n // Iterate over the sanitization rules and use the first one to match.\n while (len--) {\n var rule = rules[len];\n\n if (rule[0].test(word)) return replace(word, rule);\n }\n\n return word;\n }\n\n /**\n * Replace a word with the updated word.\n *\n * @param {Object} replaceMap\n * @param {Object} keepMap\n * @param {Array} rules\n * @return {Function}\n */\n function replaceWord (replaceMap, keepMap, rules) {\n return function (word) {\n // Get the correct token and case restoration functions.\n var token = word.toLowerCase();\n\n // Check against the keep object map.\n if (keepMap.hasOwnProperty(token)) {\n return restoreCase(word, token);\n }\n\n // Check against the replacement map for a direct word replacement.\n if (replaceMap.hasOwnProperty(token)) {\n return restoreCase(word, replaceMap[token]);\n }\n\n // Run all the rules against the word.\n return sanitizeWord(token, word, rules);\n };\n }\n\n /**\n * Check if a word is part of the map.\n */\n function checkWord (replaceMap, keepMap, rules, bool) {\n return function (word) {\n var token = word.toLowerCase();\n\n if (keepMap.hasOwnProperty(token)) return true;\n if (replaceMap.hasOwnProperty(token)) return false;\n\n return sanitizeWord(token, token, rules) === token;\n };\n }\n\n /**\n * Pluralize or singularize a word based on the passed in count.\n *\n * @param {string} word The word to pluralize\n * @param {number} count How many of the word exist\n * @param {boolean} inclusive Whether to prefix with the number (e.g. 3 ducks)\n * @return {string}\n */\n function pluralize (word, count, inclusive) {\n var pluralized = count === 1\n ? pluralize.singular(word) : pluralize.plural(word);\n\n return (inclusive ? count + ' ' : '') + pluralized;\n }\n\n /**\n * Pluralize a word.\n *\n * @type {Function}\n */\n pluralize.plural = replaceWord(\n irregularSingles, irregularPlurals, pluralRules\n );\n\n /**\n * Check if a word is plural.\n *\n * @type {Function}\n */\n pluralize.isPlural = checkWord(\n irregularSingles, irregularPlurals, pluralRules\n );\n\n /**\n * Singularize a word.\n *\n * @type {Function}\n */\n pluralize.singular = replaceWord(\n irregularPlurals, irregularSingles, singularRules\n );\n\n /**\n * Check if a word is singular.\n *\n * @type {Function}\n */\n pluralize.isSingular = checkWord(\n irregularPlurals, irregularSingles, singularRules\n );\n\n /**\n * Add a pluralization rule to the collection.\n *\n * @param {(string|RegExp)} rule\n * @param {string} replacement\n */\n pluralize.addPluralRule = function (rule, replacement) {\n pluralRules.push([sanitizeRule(rule), replacement]);\n };\n\n /**\n * Add a singularization rule to the collection.\n *\n * @param {(string|RegExp)} rule\n * @param {string} replacement\n */\n pluralize.addSingularRule = function (rule, replacement) {\n singularRules.push([sanitizeRule(rule), replacement]);\n };\n\n /**\n * Add an uncountable word rule.\n *\n * @param {(string|RegExp)} word\n */\n pluralize.addUncountableRule = function (word) {\n if (typeof word === 'string') {\n uncountables[word.toLowerCase()] = true;\n return;\n }\n\n // Set singular and plural references for the word.\n pluralize.addPluralRule(word, '$0');\n pluralize.addSingularRule(word, '$0');\n };\n\n /**\n * Add an irregular word definition.\n *\n * @param {string} single\n * @param {string} plural\n */\n pluralize.addIrregularRule = function (single, plural) {\n plural = plural.toLowerCase();\n single = single.toLowerCase();\n\n irregularSingles[single] = plural;\n irregularPlurals[plural] = single;\n };\n\n /**\n * Irregular rules.\n */\n [\n // Pronouns.\n ['I', 'we'],\n ['me', 'us'],\n ['he', 'they'],\n ['she', 'they'],\n ['them', 'them'],\n ['myself', 'ourselves'],\n ['yourself', 'yourselves'],\n ['itself', 'themselves'],\n ['herself', 'themselves'],\n ['himself', 'themselves'],\n ['themself', 'themselves'],\n ['is', 'are'],\n ['was', 'were'],\n ['has', 'have'],\n ['this', 'these'],\n ['that', 'those'],\n // Words ending in with a consonant and `o`.\n ['echo', 'echoes'],\n ['dingo', 'dingoes'],\n ['volcano', 'volcanoes'],\n ['tornado', 'tornadoes'],\n ['torpedo', 'torpedoes'],\n // Ends with `us`.\n ['genus', 'genera'],\n ['viscus', 'viscera'],\n // Ends with `ma`.\n ['stigma', 'stigmata'],\n ['stoma', 'stomata'],\n ['dogma', 'dogmata'],\n ['lemma', 'lemmata'],\n ['schema', 'schemata'],\n ['anathema', 'anathemata'],\n // Other irregular rules.\n ['ox', 'oxen'],\n ['axe', 'axes'],\n ['die', 'dice'],\n ['yes', 'yeses'],\n ['foot', 'feet'],\n ['eave', 'eaves'],\n ['goose', 'geese'],\n ['tooth', 'teeth'],\n ['quiz', 'quizzes'],\n ['human', 'humans'],\n ['proof', 'proofs'],\n ['carve', 'carves'],\n ['valve', 'valves'],\n ['looey', 'looies'],\n ['thief', 'thieves'],\n ['groove', 'grooves'],\n ['pickaxe', 'pickaxes'],\n ['passerby', 'passersby']\n ].forEach(function (rule) {\n return pluralize.addIrregularRule(rule[0], rule[1]);\n });\n\n /**\n * Pluralization rules.\n */\n [\n [/s?$/i, 's'],\n [/[^\\u0000-\\u007F]$/i, '$0'],\n [/([^aeiou]ese)$/i, '$1'],\n [/(ax|test)is$/i, '$1es'],\n [/(alias|[^aou]us|t[lm]as|gas|ris)$/i, '$1es'],\n [/(e[mn]u)s?$/i, '$1s'],\n [/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i, '$1'],\n [/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i, '$1i'],\n [/(alumn|alg|vertebr)(?:a|ae)$/i, '$1ae'],\n [/(seraph|cherub)(?:im)?$/i, '$1im'],\n [/(her|at|gr)o$/i, '$1oes'],\n [/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i, '$1a'],\n [/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i, '$1a'],\n [/sis$/i, 'ses'],\n [/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i, '$1$2ves'],\n [/([^aeiouy]|qu)y$/i, '$1ies'],\n [/([^ch][ieo][ln])ey$/i, '$1ies'],\n [/(x|ch|ss|sh|zz)$/i, '$1es'],\n [/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i, '$1ices'],\n [/\\b((?:tit)?m|l)(?:ice|ouse)$/i, '$1ice'],\n [/(pe)(?:rson|ople)$/i, '$1ople'],\n [/(child)(?:ren)?$/i, '$1ren'],\n [/eaux$/i, '$0'],\n [/m[ae]n$/i, 'men'],\n ['thou', 'you']\n ].forEach(function (rule) {\n return pluralize.addPluralRule(rule[0], rule[1]);\n });\n\n /**\n * Singularization rules.\n */\n [\n [/s$/i, ''],\n [/(ss)$/i, '$1'],\n [/(wi|kni|(?:after|half|high|low|mid|non|night|[^\\w]|^)li)ves$/i, '$1fe'],\n [/(ar|(?:wo|[ae])l|[eo][ao])ves$/i, '$1f'],\n [/ies$/i, 'y'],\n [/\\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i, '$1ie'],\n [/\\b(mon|smil)ies$/i, '$1ey'],\n [/\\b((?:tit)?m|l)ice$/i, '$1ouse'],\n [/(seraph|cherub)im$/i, '$1'],\n [/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i, '$1'],\n [/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i, '$1sis'],\n [/(movie|twelve|abuse|e[mn]u)s$/i, '$1'],\n [/(test)(?:is|es)$/i, '$1is'],\n [/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i, '$1us'],\n [/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i, '$1um'],\n [/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i, '$1on'],\n [/(alumn|alg|vertebr)ae$/i, '$1a'],\n [/(cod|mur|sil|vert|ind)ices$/i, '$1ex'],\n [/(matr|append)ices$/i, '$1ix'],\n [/(pe)(rson|ople)$/i, '$1rson'],\n [/(child)ren$/i, '$1'],\n [/(eau)x?$/i, '$1'],\n [/men$/i, 'man']\n ].forEach(function (rule) {\n return pluralize.addSingularRule(rule[0], rule[1]);\n });\n\n /**\n * Uncountable rules.\n */\n [\n // Singular words with no plurals.\n 'adulthood',\n 'advice',\n 'agenda',\n 'aid',\n 'aircraft',\n 'alcohol',\n 'ammo',\n 'analytics',\n 'anime',\n 'athletics',\n 'audio',\n 'bison',\n 'blood',\n 'bream',\n 'buffalo',\n 'butter',\n 'carp',\n 'cash',\n 'chassis',\n 'chess',\n 'clothing',\n 'cod',\n 'commerce',\n 'cooperation',\n 'corps',\n 'debris',\n 'diabetes',\n 'digestion',\n 'elk',\n 'energy',\n 'equipment',\n 'excretion',\n 'expertise',\n 'firmware',\n 'flounder',\n 'fun',\n 'gallows',\n 'garbage',\n 'graffiti',\n 'hardware',\n 'headquarters',\n 'health',\n 'herpes',\n 'highjinks',\n 'homework',\n 'housework',\n 'information',\n 'jeans',\n 'justice',\n 'kudos',\n 'labour',\n 'literature',\n 'machinery',\n 'mackerel',\n 'mail',\n 'media',\n 'mews',\n 'moose',\n 'music',\n 'mud',\n 'manga',\n 'news',\n 'only',\n 'personnel',\n 'pike',\n 'plankton',\n 'pliers',\n 'police',\n 'pollution',\n 'premises',\n 'rain',\n 'research',\n 'rice',\n 'salmon',\n 'scissors',\n 'series',\n 'sewage',\n 'shambles',\n 'shrimp',\n 'software',\n 'species',\n 'staff',\n 'swine',\n 'tennis',\n 'traffic',\n 'transportation',\n 'trout',\n 'tuna',\n 'wealth',\n 'welfare',\n 'whiting',\n 'wildebeest',\n 'wildlife',\n 'you',\n /pok[eé]mon$/i,\n // Regexes.\n /[^aeiou]ese$/i, // \"chinese\", \"japanese\"\n /deer$/i, // \"deer\", \"reindeer\"\n /fish$/i, // \"fish\", \"blowfish\", \"angelfish\"\n /measles$/i,\n /o[iu]s$/i, // \"carnivorous\"\n /pox$/i, // \"chickpox\", \"smallpox\"\n /sheep$/i\n ].forEach(pluralize.addUncountableRule);\n\n return pluralize;\n});\n","import type { IssueCode } from './issues.js';\n\n/**\n * API keys (models, components, fields) must be valid GraphQL names from day one (CONTRIBUTING.md rule 4),\n * so GraphQL can expose them without renames.\n */\nexport const API_KEY_PATTERN = /^[_A-Za-z][_0-9A-Za-z]*$/;\nexport const MAX_API_KEY_LENGTH = 64;\n\nexport const isApiKeySyntaxValid = (key: string): boolean => API_KEY_PATTERN.test(key);\n\n/**\n * Syntax checks shared by every kind of API key (`noun` names it in messages, e.g. \"plural API ID\").\n * Returns the first problem, or null.\n */\nexport const checkApiKeySyntax = (\n key: string,\n noun = 'API ID',\n): { code: IssueCode; message: string } | null => {\n if (!isApiKeySyntaxValid(key)) {\n return {\n code: 'API_KEY_INVALID',\n message: `\"${key}\" is not a valid ${noun}: use letters, digits and _, not starting with a digit`,\n };\n }\n if (key.length > MAX_API_KEY_LENGTH) {\n return { code: 'API_KEY_TOO_LONG', message: `${noun}s are at most ${MAX_API_KEY_LENGTH} characters` };\n }\n // GraphQL reserves the `__` prefix for introspection.\n if (key.startsWith('__')) {\n return {\n code: 'API_KEY_RESERVED_PREFIX',\n message: `${noun}s must not start with \"__\" (reserved by GraphQL)`,\n };\n }\n return null;\n};\n\n/** Case-folded form used for every collision check: `Title` and `title` collide. */\nexport const foldApiKey = (key: string): string => key.toLowerCase();\n","import pluralize from 'pluralize';\nimport { foldApiKey, MAX_API_KEY_LENGTH } from '../validators/apiKey.js';\n\n/** Appended when English has no distinct plural (`news` → `newsItems`, `series` → `seriesItems`). */\nexport const PLURAL_FALLBACK_SUFFIX = 'Items';\n\n/**\n * Suggests the plural API ID of a collection from its singular one (`article` → `articles`,\n * `category` → `categories`). Only a suggestion for the admin and the value filled into definitions that\n * predate plural API IDs: the plural is stored on the definition and nothing pluralises at request time.\n * Deterministic for a given `pluralize` version, which is pinned exactly for that reason.\n */\nexport const suggestPlural = (apiKey: string): string => {\n if (apiKey === '') {\n return '';\n }\n const plural = pluralize(apiKey);\n if (plural.length <= MAX_API_KEY_LENGTH && foldApiKey(plural) !== foldApiKey(apiKey)) {\n return plural;\n }\n return `${apiKey.slice(0, MAX_API_KEY_LENGTH - PLURAL_FALLBACK_SUFFIX.length)}${PLURAL_FALLBACK_SUFFIX}`;\n};\n","import { DEFAULT_EDITORS } from './editors/catalogue.js';\nimport { suggestPlural } from './naming/plural.js';\nimport type {\n ComponentDefinition,\n ComponentDefinitionInput,\n ComponentDisplay,\n FieldDefinition,\n FieldInput,\n ModelDefinition,\n ModelDefinitionInput,\n ModelDisplay,\n SchemaDefinition,\n} from './types/definitions.js';\nimport type { JsonValue } from './types/json.js';\nimport { RICHTEXT_FORMAT_VERSION } from './types/valueFormats.js';\n\n/** Input whose IDs have been assigned (see `assignIds`). */\ntype WithIds<T extends { id?: string }> = T & { id: string };\nexport type FieldInputWithId = WithIds<FieldInput>;\nexport type DefinitionInputWithIds =\n | (WithIds<ModelDefinitionInput> & { fields: FieldInputWithId[] })\n | (WithIds<ComponentDefinitionInput> & { fields: FieldInputWithId[] });\n\nconst SETTINGS_DEFAULTS: Partial<Record<FieldDefinition['type'], Record<string, unknown>>> = {\n code: { language: 'plain' },\n richtext: { formatVersion: RICHTEXT_FORMAT_VERSION },\n enum: { multiple: false },\n media: { multiple: false },\n component: { repeatable: false },\n};\n\n/** Optional text properties where an empty string means \"not set\". */\nconst OPTIONAL_TEXT_KEYS: ReadonlySet<string> = new Set([\n 'description',\n 'category',\n 'icon',\n 'titleFieldId',\n 'coverFieldId',\n 'pluralApiKey',\n]);\n/** Optional list properties where an empty list means \"not set\". `fields` is never optional. */\nconst OPTIONAL_LIST_KEYS: ReadonlySet<string> = new Set([\n 'listFieldIds',\n 'groups',\n 'canvasFieldIds',\n 'stripFieldIds',\n]);\n\nconst withoutEmpty = <T extends Record<string, unknown>>(value: T): T => {\n const result: Record<string, unknown> = {};\n for (const [key, entry] of Object.entries(value)) {\n const isEmptyText = OPTIONAL_TEXT_KEYS.has(key) && entry === '';\n const isEmptyList = OPTIONAL_LIST_KEYS.has(key) && Array.isArray(entry) && entry.length === 0;\n if (entry === undefined || isEmptyText || isEmptyList) {\n continue;\n }\n result[key] = entry;\n }\n return result as T;\n};\n\nconst normalizeField = (field: FieldInputWithId): FieldDefinition => {\n const normalized = {\n id: field.id,\n apiKey: field.apiKey,\n label: field.label,\n description: field.description,\n type: field.type,\n required: field.required ?? false,\n localized: field.localized ?? false,\n public: field.public ?? true,\n unique: field.unique ?? false,\n filterable: field.filterable ?? false,\n sortable: field.sortable ?? false,\n deprecated: field.deprecated ?? false,\n defaultValue: field.defaultValue as JsonValue | undefined,\n settings: { ...SETTINGS_DEFAULTS[field.type], ...field.settings },\n editor: {\n id: field.editor?.id ?? DEFAULT_EDITORS[field.type],\n options: (field.editor?.options ?? {}) as Record<string, JsonValue>,\n },\n // The default width has one spelling: absent (so hashes of existing definitions don't change).\n width: field.width === 'full' ? undefined : field.width,\n };\n return withoutEmpty(normalized) as FieldDefinition;\n};\n\n// The default layout has one spelling: absent.\nconst normalizeModelDisplay = (display: ModelDefinitionInput['display']): ModelDisplay =>\n withoutEmpty({ ...display, layout: display?.layout === 'document' ? undefined : display?.layout });\n\nconst normalizeComponentDisplay = (display: ComponentDefinitionInput['display']): ComponentDisplay =>\n withoutEmpty({ ...display });\n\n/**\n * Applies defaults so that two definitions meaning the same thing are byte-identical once serialized\n * canonically: a hand-written file that omits `public` hashes the same as one that says `public: true`.\n * Empty optional strings and arrays are dropped, and so are the defaults of keys added after definitions\n * were first hashed (`width: 'full'`, `display.layout: 'document'`). A collection without a plural API ID\n * gets the suggested one (`suggestPlural`), so files and definitions from before plural API IDs keep working.\n */\nexport const normalizeDefinition = (input: DefinitionInputWithIds): SchemaDefinition => {\n const fields = input.fields.map(normalizeField);\n if (input.kind === 'component') {\n const component: ComponentDefinition = withoutEmpty({\n id: input.id,\n kind: 'component',\n apiKey: input.apiKey,\n label: input.label,\n description: input.description,\n category: input.category,\n icon: input.icon,\n fields,\n display: normalizeComponentDisplay(input.display),\n });\n return component;\n }\n const model: ModelDefinition = withoutEmpty({\n id: input.id,\n kind: input.kind,\n apiKey: input.apiKey,\n // Collections always carry a plural API ID (filled from the singular when missing or empty);\n // singletons never do, so switching a collection to a singleton drops it.\n pluralApiKey: input.kind === 'collection' ? input.pluralApiKey || suggestPlural(input.apiKey) : undefined,\n label: input.label,\n description: input.description,\n localized: input.localized ?? false,\n draftAndPublish: input.draftAndPublish ?? true,\n fields,\n display: normalizeModelDisplay(input.display),\n });\n return model;\n};\n\n/** Normalizes a definition that is already normalized-shaped (e.g. read back from the database). */\nexport const renormalizeDefinition = (definition: SchemaDefinition): SchemaDefinition =>\n normalizeDefinition(definition as unknown as DefinitionInputWithIds);\n","import type { FieldDefinition } from '../types/definitions.js';\nimport {\n BIGINTEGER_PATTERN,\n DATE_PATTERN,\n DATETIME_PATTERN,\n DECIMAL_PATTERN,\n SLUG_PATTERN,\n TIME_PATTERN,\n UID_PATTERN,\n} from '../types/valueFormats.js';\n\n/**\n * Checks that a field's `defaultValue` has the right JSON shape for its type. Full content rules\n * (lengths, ranges) are applied by the content validator when the default is used.\n * Returns a message, or null when the default is acceptable.\n */\nexport const checkDefaultValue = (field: FieldDefinition): string | null => {\n const value = field.defaultValue;\n if (value === undefined) {\n return null;\n }\n const isString = typeof value === 'string';\n const matches = (pattern: RegExp) => isString && pattern.test(value);\n switch (field.type) {\n case 'string':\n case 'text':\n case 'code':\n case 'email':\n case 'url':\n return isString ? null : 'must be a string';\n case 'slug':\n return matches(SLUG_PATTERN) ? null : 'must be a lower-case slug';\n case 'uid':\n return matches(UID_PATTERN) ? null : 'must contain only URL-safe characters';\n case 'number':\n return typeof value === 'number' && Number.isFinite(value) ? null : 'must be a number';\n case 'integer':\n return Number.isSafeInteger(value) ? null : 'must be an integer';\n case 'decimal':\n return matches(DECIMAL_PATTERN) ? null : 'must be a decimal string, e.g. \"12.50\"';\n case 'biginteger':\n return matches(BIGINTEGER_PATTERN) ? null : 'must be an integer string, e.g. \"9007199254740993\"';\n case 'boolean':\n return typeof value === 'boolean' ? null : 'must be true or false';\n case 'date':\n return matches(DATE_PATTERN) ? null : 'must be a date, YYYY-MM-DD';\n case 'datetime':\n return matches(DATETIME_PATTERN) ? null : 'must be a UTC date-time, YYYY-MM-DDTHH:mm:ssZ';\n case 'time':\n return matches(TIME_PATTERN) ? null : 'must be a time, HH:mm[:ss]';\n case 'enum': {\n const allowed = new Set(field.settings.values.map((entry) => entry.value));\n if (field.settings.multiple) {\n return Array.isArray(value) && value.every((item) => typeof item === 'string' && allowed.has(item))\n ? null\n : 'must be a list of the enum values';\n }\n return isString && allowed.has(value) ? null : 'must be one of the enum values';\n }\n case 'json':\n return null;\n default:\n return `${field.type} fields cannot have a default value`;\n }\n};\n","/**\n * A problem found in a definition. `path` is a JSON pointer into the definition (`/fields/2/apiKey`), so\n * the admin can put the message next to the control and the CLI can point at the file location.\n */\nexport type ValidationIssue = {\n path: string;\n code: IssueCode;\n message: string;\n /** Set by cross-definition checks so a multi-definition apply can say which file is wrong. */\n definitionId?: string;\n};\n\nexport type IssueCode =\n | 'INVALID_STRUCTURE'\n | 'INVALID_ID'\n | 'DUPLICATE_ID'\n | 'API_KEY_INVALID'\n | 'API_KEY_TOO_LONG'\n | 'API_KEY_RESERVED_PREFIX'\n | 'API_KEY_RESERVED'\n | 'API_KEY_COLLISION'\n | 'PLURAL_API_KEY_SAME_AS_SINGULAR'\n | 'GENERATED_NAME_COLLISION'\n | 'INVALID_SETTINGS'\n | 'INVALID_RANGE'\n | 'INVALID_PATTERN'\n | 'DUPLICATE_ENUM_VALUE'\n | 'INVALID_ENUM_VALUE'\n | 'UNSUPPORTED_FLAG'\n | 'INVALID_DEFAULT_VALUE'\n | 'UNKNOWN_EDITOR'\n | 'INCOMPATIBLE_EDITOR'\n | 'INVALID_EDITOR_OPTIONS'\n | 'UNKNOWN_FIELD_REFERENCE'\n | 'INVALID_FIELD_REFERENCE'\n | 'DUPLICATE_GROUP'\n | 'UNKNOWN_REFERENCE'\n | 'INVALID_REFERENCE_TARGET'\n | 'COMPONENT_CYCLE'\n | 'COMPONENT_TOO_DEEP'\n | 'REFERENCED_DEFINITION';\n\nexport class SchemaValidationError extends Error {\n readonly issues: readonly ValidationIssue[];\n\n constructor(issues: readonly ValidationIssue[]) {\n super(\n `Schema definition is invalid: ${issues.map((issue) => `${issue.path} ${issue.message}`).join('; ')}`,\n );\n this.name = 'SchemaValidationError';\n this.issues = issues;\n }\n}\n\nexport const issue = (path: string, code: IssueCode, message: string): ValidationIssue => ({\n path,\n code,\n message,\n});\n","import { suggestPlural } from '../naming/plural.js';\nimport type { ModelDefinition, SchemaDefinition } from '../types/definitions.js';\n\n/**\n * The names GraphQL (package J) and other generated contracts derive from API keys. Defined here, with the\n * validator, so a name that would collide in GraphQL is rejected when the model is saved, never later.\n * Package J must generate exactly these names.\n */\nexport const toTypeName = (apiKey: string): string => apiKey.charAt(0).toUpperCase() + apiKey.slice(1);\n\n/** Suffixes of the types generated for each model (`Page`, `PageFilter`, `PageInput`...). */\nexport const MODEL_TYPE_SUFFIXES = [\n '',\n 'Filter',\n 'Input',\n 'Connection',\n 'Edge',\n 'Localizations',\n 'Sort',\n] as const;\nexport const COMPONENT_TYPE_SUFFIXES = ['', 'Input'] as const;\nexport const MUTATION_PREFIXES = ['create', 'update', 'delete', 'publish', 'unpublish'] as const;\n\n/**\n * The key a model is addressed by in the delivery API (`/api/content/:routeKey`, preview routes): the\n * plural API ID of a collection, the API ID of a singleton. A collection stored before plural API IDs\n * existed gets the same derived value normalizing would fill, so this never returns undefined.\n */\nexport const routeKeyOf = (definition: ModelDefinition): string =>\n definition.kind === 'collection'\n ? definition.pluralApiKey || suggestPlural(definition.apiKey)\n : definition.apiKey;\n\n/** GraphQL list query of a collection (`articles(…)`): its plural API ID. */\nexport const collectionQueryName = (definition: ModelDefinition): string => routeKeyOf(definition);\n\n/**\n * A stored definition with the plural API ID a collection gets when it predates them (the value\n * normalizing fills), and whether anything was filled. Callers that hash definitions re-hash when `filled`.\n */\nexport const withDerivedPlural = <T extends SchemaDefinition>(\n definition: T,\n): { definition: T; filled: boolean } => {\n if (definition.kind !== 'collection' || definition.pluralApiKey) {\n return { definition, filled: false };\n }\n const { id, kind, apiKey, ...rest } = definition;\n const filled = { id, kind, apiKey, pluralApiKey: suggestPlural(apiKey), ...rest } as T;\n return { definition: filled, filled: true };\n};\n\n/**\n * GraphQL built-ins and the fixed types Shapio's schema always defines. Compared case-folded, so a model\n * called `string` (type `String`) or `pageInfo` is rejected.\n */\nexport const RESERVED_TYPE_NAMES: readonly string[] = [\n 'Query',\n 'Mutation',\n 'Subscription',\n 'String',\n 'Int',\n 'Float',\n 'Boolean',\n 'ID',\n 'JSON',\n 'Date',\n 'DateTime',\n 'Time',\n 'Decimal',\n 'BigInt',\n 'RichText',\n 'Media',\n 'MediaAsset',\n 'MediaVariant',\n 'FocalPoint',\n 'MediaKind',\n 'Int53',\n 'PageInfo',\n 'Locale',\n 'PublicationState',\n 'SortDirection',\n 'Node',\n 'Entry',\n 'Upload',\n 'StringFilter',\n 'IntFilter',\n 'FloatFilter',\n 'BooleanFilter',\n 'IDFilter',\n 'DateFilter',\n 'DateTimeFilter',\n 'TimeFilter',\n 'DecimalFilter',\n 'BigIntFilter',\n 'JSONFilter',\n // The snapshot diff (`_changes`, `_snapshot`).\n 'SnapshotChange',\n 'SnapshotChangeKind',\n 'SnapshotChangeLocale',\n 'SnapshotChangePage',\n 'SnapshotInfo',\n // The site and its SEO defaults (`_site`).\n 'SiteInfo',\n 'SiteSeoDefaults',\n 'SiteSeoLocale',\n];\n\n/**\n * Model and component API keys the admin uses as static URL segments (`/content/new`,\n * `/develop/components`), so a type with one of these keys could not be opened. Compared case-folded.\n */\nexport const RESERVED_DEFINITION_API_KEYS: readonly string[] = ['new', 'components'];\n\n/**\n * Field API keys that collide with the system fields every entry exposes in REST and GraphQL.\n * Compared case-folded.\n */\nexport const RESERVED_FIELD_API_KEYS: readonly string[] = [\n 'id',\n 'locale',\n 'localizations',\n 'status',\n 'version',\n 'createdAt',\n 'updatedAt',\n 'publishedAt',\n 'createdBy',\n 'updatedBy',\n 'publicationState',\n // Logical operators of every model's GraphQL filter input (`XFilter`), next to the field keys.\n 'and',\n 'or',\n 'not',\n];\n\n/**\n * Root query fields every GraphQL schema has, whatever models exist. Compared case-folded. The first is the\n * schema version field (schemaBuilder.ts reads it by position).\n */\nexport const RESERVED_QUERY_NAMES: readonly string[] = ['_schemaVersion', '_changes', '_snapshot', '_site'];\n\nexport type NameNamespace = 'type' | 'query' | 'mutation';\n\nexport type GeneratedName = {\n namespace: NameNamespace;\n name: string;\n /** Which definition (and field, for per-field types) produced the name, for error messages. */\n definitionId: string;\n fieldId?: string;\n /** The definition property the name comes from, when not `apiKey` (for the issue path). */\n property?: 'pluralApiKey';\n};\n\n/** Every name a definition contributes to the GraphQL schema. */\nexport const generatedNames = (definition: SchemaDefinition): GeneratedName[] => {\n const typeName = toTypeName(definition.apiKey);\n const definitionId = definition.id;\n const suffixes = definition.kind === 'component' ? COMPONENT_TYPE_SUFFIXES : MODEL_TYPE_SUFFIXES;\n const names: GeneratedName[] = suffixes.map((suffix) => ({\n namespace: 'type',\n name: `${typeName}${suffix}`,\n definitionId,\n }));\n for (const field of definition.fields) {\n const fieldType = `${typeName}${toTypeName(field.apiKey)}`;\n if (field.type === 'enum') {\n names.push({ namespace: 'type', name: `${fieldType}Enum`, definitionId, fieldId: field.id });\n }\n if (field.type === 'dynamiczone') {\n names.push({ namespace: 'type', name: `${fieldType}Zone`, definitionId, fieldId: field.id });\n names.push({ namespace: 'type', name: `${fieldType}ZoneInput`, definitionId, fieldId: field.id });\n }\n }\n if (definition.kind !== 'component') {\n names.push({ namespace: 'query', name: definition.apiKey, definitionId });\n // Only collections have a list query, so switching a singleton to a collection adds a name; the\n // switch is validated against the whole schema like any other change.\n if (definition.kind === 'collection') {\n names.push({\n namespace: 'query',\n name: collectionQueryName(definition),\n definitionId,\n property: 'pluralApiKey',\n });\n }\n for (const prefix of MUTATION_PREFIXES) {\n names.push({ namespace: 'mutation', name: `${prefix}${typeName}`, definitionId });\n }\n }\n return names;\n};\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains an '~refine` keyword\n * @specification None\n */\nexport function IsRefine(value) {\n return Guard.HasPropertyKey(value, '~refine')\n && Guard.IsArray(value[\"~refine\"])\n && Guard.Every(value['~refine'], 0, value => Guard.IsObject(value)\n && Guard.HasPropertyKey(value, 'check')\n && Guard.HasPropertyKey(value, 'error')\n && Guard.IsFunction(value.check)\n && Guard.IsFunction(value.error));\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n/** Returns true if this value is object like */\nexport function IsSchemaObject(value) {\n return Guard.IsObject(value) && !Guard.IsArray(value);\n}\n/** Returns true if this value is a boolean */\nexport function IsSchemaBoolean(value) {\n return Guard.IsBoolean(value);\n}\n/** Returns true if this value is schema like */\nexport function IsSchema(value) {\n return IsSchemaObject(value) || IsSchemaBoolean(value);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema } from '../types/schema.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid additionalItems property\n * @specification Json Schema 7\n */\nexport function IsAdditionalItems(schema) {\n return Guard.HasPropertyKey(schema, 'additionalItems')\n && IsSchema(schema.additionalItems);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid additionalProperties property\n * @specification Json Schema 7\n */\nexport function IsAdditionalProperties(schema) {\n return Guard.HasPropertyKey(schema, 'additionalProperties')\n && IsSchema(schema.additionalProperties);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid allOf property\n * @specification Json Schema 7\n */\nexport function IsAllOf(schema) {\n return Guard.HasPropertyKey(schema, 'allOf')\n && Guard.IsArray(schema.allOf)\n && schema.allOf.every(value => IsSchema(value));\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid $anchor property\n */\nexport function IsAnchor(schema) {\n return Guard.HasPropertyKey(schema, '$anchor')\n && Guard.IsString(schema.$anchor);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid anyOf property\n * @specification Json Schema 7\n */\nexport function IsAnyOf(schema) {\n return Guard.HasPropertyKey(schema, 'anyOf')\n && Guard.IsArray(schema.anyOf)\n && schema.anyOf.every(value => IsSchema(value));\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid const property\n * @specification Json Schema 7\n */\nexport function IsConst(value) {\n return Guard.HasPropertyKey(value, 'const');\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid contains property\n * @specification Json Schema 7\n */\nexport function IsContains(schema) {\n return Guard.HasPropertyKey(schema, 'contains')\n && IsSchema(schema.contains);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid contentMediaType property\n * @specification Json Schema 7\n */\nexport function IsDefault(schema) {\n return Guard.HasPropertyKey(schema, 'default');\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid dependencies property\n * @specification Json Schema 7\n */\nexport function IsDependencies(schema) {\n return Guard.HasPropertyKey(schema, 'dependencies')\n && Guard.IsObject(schema.dependencies)\n && Object.values(schema.dependencies).every(value => IsSchema(value)\n || (Guard.IsArray(value) && value.every(value => Guard.IsString(value))));\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid dependentRequired property\n * @specification Json Schema 2019-09\n */\nexport function IsDependentRequired(schema) {\n return Guard.HasPropertyKey(schema, 'dependentRequired')\n && Guard.IsObject(schema.dependentRequired)\n && Object.values(schema.dependentRequired).every(value => Guard.IsArray(value)\n && value.every(value => Guard.IsString(value)));\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid dependentRequired property\n * @specification Json Schema 2019-09\n */\nexport function IsDependentSchemas(schema) {\n return Guard.HasPropertyKey(schema, 'dependentSchemas')\n && Guard.IsObject(schema.dependentSchemas)\n && Object.values(schema.dependentSchemas).every(value => IsSchema(value));\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid $dynamicAnchor property\n */\nexport function IsDynamicAnchor(schema) {\n return Guard.HasPropertyKey(schema, '$dynamicAnchor')\n && Guard.IsString(schema.$dynamicAnchor);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid $dynamicRef property\n */\nexport function IsDynamicRef(schema) {\n return Guard.HasPropertyKey(schema, '$dynamicRef')\n && Guard.IsString(schema.$dynamicRef);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid else property\n * @specification Json Schema 7\n */\nexport function IsElse(schema) {\n return Guard.HasPropertyKey(schema, 'else')\n && IsSchema(schema.else);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid enum property\n * @specification Json Schema 7\n */\nexport function IsEnum(schema) {\n return Guard.HasPropertyKey(schema, 'enum')\n && Guard.IsArray(schema.enum);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid exclusiveMaximum property\n * @specification Json Schema 7\n */\nexport function IsExclusiveMaximum(schema) {\n return Guard.HasPropertyKey(schema, 'exclusiveMaximum')\n && (Guard.IsNumber(schema.exclusiveMaximum) || Guard.IsBigInt(schema.exclusiveMaximum));\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid exclusiveMinimum property\n * @specification Json Schema 7\n */\nexport function IsExclusiveMinimum(schema) {\n return Guard.HasPropertyKey(schema, 'exclusiveMinimum')\n && (Guard.IsNumber(schema.exclusiveMinimum) || Guard.IsBigInt(schema.exclusiveMinimum));\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid format property\n * @specification Json Schema 7\n */\nexport function IsFormat(schema) {\n return Guard.HasPropertyKey(schema, 'format')\n && Guard.IsString(schema.format);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid $id property\n * @specification Json Schema 7\n */\nexport function IsId(schema) {\n return Guard.HasPropertyKey(schema, '$id')\n && Guard.IsString(schema.$id);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid $id property\n * @specification Json Schema 7\n */\nexport function IsIf(schema) {\n return Guard.HasPropertyKey(schema, 'if')\n && IsSchema(schema.if);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid items property\n * @specification Json Schema 7\n */\nexport function IsItems(schema) {\n return Guard.HasPropertyKey(schema, 'items')\n && (IsSchema(schema.items)\n || (Guard.IsArray(schema.items)\n && schema.items.every(value => {\n return IsSchema(value);\n })));\n}\n/** Returns true if this schema is a sized items variant */\nexport function IsItemsSized(schema) {\n return IsItems(schema) && Guard.IsArray(schema.items);\n}\n/** Returns true if this schema is a unsized items variant */\nexport function IsItemsUnsized(schema) {\n return IsItems(schema) && !Guard.IsArray(schema.items);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid maximum property\n * @specification Json Schema 7\n */\nexport function IsMaximum(schema) {\n return Guard.HasPropertyKey(schema, 'maximum')\n && (Guard.IsNumber(schema.maximum) || Guard.IsBigInt(schema.maximum));\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid maxContains property\n * @specification Json Schema 2019-09\n */\nexport function IsMaxContains(schema) {\n return Guard.HasPropertyKey(schema, 'maxContains')\n && Guard.IsNumber(schema.maxContains);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid maxItems property\n * @specification Json Schema 7\n */\nexport function IsMaxItems(schema) {\n return Guard.HasPropertyKey(schema, 'maxItems')\n && Guard.IsNumber(schema.maxItems);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid maxLength property\n * @specification Json Schema 7\n */\nexport function IsMaxLength(schema) {\n return Guard.HasPropertyKey(schema, 'maxLength')\n && Guard.IsNumber(schema.maxLength);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid maxProperties property\n * @specification Json Schema 7\n */\nexport function IsMaxProperties(schema) {\n return Guard.HasPropertyKey(schema, 'maxProperties')\n && Guard.IsNumber(schema.maxProperties);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid minimum property\n * @specification Json Schema 7\n */\nexport function IsMinimum(schema) {\n return Guard.HasPropertyKey(schema, 'minimum')\n && (Guard.IsNumber(schema.minimum) || Guard.IsBigInt(schema.minimum));\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid maxContains property\n * @specification Json Schema 2019-09\n */\nexport function IsMinContains(schema) {\n return Guard.HasPropertyKey(schema, 'minContains')\n && Guard.IsNumber(schema.minContains);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid minItems property\n * @specification Json Schema 7\n */\nexport function IsMinItems(schema) {\n return Guard.HasPropertyKey(schema, 'minItems')\n && Guard.IsNumber(schema.minItems);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid minLength property\n * @specification Json Schema 7\n */\nexport function IsMinLength(schema) {\n return Guard.HasPropertyKey(schema, 'minLength')\n && Guard.IsNumber(schema.minLength);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid minProperties property\n * @specification Json Schema 7\n */\nexport function IsMinProperties(schema) {\n return Guard.HasPropertyKey(schema, 'minProperties')\n && Guard.IsNumber(schema.minProperties);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid multipleOf property\n * @specification Json Schema 7\n */\nexport function IsMultipleOf(schema) {\n return Guard.HasPropertyKey(schema, 'multipleOf')\n && (Guard.IsNumber(schema.multipleOf) || Guard.IsBigInt(schema.multipleOf));\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid not property\n * @specification Json Schema 7\n */\nexport function IsNot(schema) {\n return Guard.HasPropertyKey(schema, 'not')\n && IsSchema(schema.not);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid oneOf property\n * @specification Json Schema 7\n */\nexport function IsOneOf(schema) {\n return Guard.HasPropertyKey(schema, 'oneOf')\n && Guard.IsArray(schema.oneOf)\n && schema.oneOf.every(value => IsSchema(value));\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid pattern property\n * @specification Json Schema 7\n */\nexport function IsPattern(schema) {\n return Guard.HasPropertyKey(schema, 'pattern')\n && (Guard.IsString(schema.pattern)\n || schema.pattern instanceof RegExp);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid patternProperties property\n * @specification Json Schema 7\n */\nexport function IsPatternProperties(schema) {\n return Guard.HasPropertyKey(schema, 'patternProperties')\n && Guard.IsObject(schema.patternProperties)\n && Object.values(schema.patternProperties).every(value => IsSchema(value));\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid prefixItems property\n */\nexport function IsPrefixItems(schema) {\n return Guard.HasPropertyKey(schema, 'prefixItems')\n && Guard.IsArray(schema.prefixItems)\n && schema.prefixItems.every(schema => IsSchema(schema));\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid properties property\n * @specification Json Schema 7\n */\nexport function IsProperties(schema) {\n return Guard.HasPropertyKey(schema, 'properties')\n && Guard.IsObject(schema.properties)\n && Object.values(schema.properties).every(value => IsSchema(value));\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid propertyNames property\n * @specification Json Schema 7\n */\nexport function IsPropertyNames(schema) {\n return Guard.HasPropertyKey(schema, 'propertyNames')\n && (Guard.IsObject(schema.propertyNames)\n || IsSchema(schema.propertyNames));\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid $recursiveAnchor property\n */\nexport function IsRecursiveAnchor(schema) {\n return Guard.HasPropertyKey(schema, '$recursiveAnchor')\n && Guard.IsBoolean(schema.$recursiveAnchor);\n}\n/**\n * Returns true if the schema contains a valid $recursiveAnchor property that is true\n */\nexport function IsRecursiveAnchorTrue(schema) {\n return IsRecursiveAnchor(schema)\n && Guard.IsEqual(schema.$recursiveAnchor, true);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid $recursiveRef property\n */\nexport function IsRecursiveRef(schema) {\n return Guard.HasPropertyKey(schema, '$recursiveRef')\n && Guard.IsString(schema.$recursiveRef);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid $ref property\n * @specification Json Schema 7\n */\nexport function IsRef(schema) {\n return Guard.HasPropertyKey(schema, '$ref')\n && Guard.IsString(schema.$ref);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid required property\n * @specification Json Schema 7\n */\nexport function IsRequired(schema) {\n return Guard.HasPropertyKey(schema, 'required')\n && Guard.IsArray(schema.required)\n && schema.required.every(value => Guard.IsString(value));\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid then property\n * @specification Json Schema 7\n */\nexport function IsThen(schema) {\n return Guard.HasPropertyKey(schema, 'then')\n && IsSchema(schema.then);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid type property\n * @specification Json Schema 7\n */\nexport function IsType(schema) {\n return Guard.HasPropertyKey(schema, 'type')\n && (Guard.IsString(schema.type)\n || (Guard.IsArray(schema.type)\n && schema.type.every(value => Guard.IsString(value))));\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid uniqueItems property\n * @specification Json Schema 7\n */\nexport function IsUniqueItems(schema) {\n return Guard.HasPropertyKey(schema, 'uniqueItems')\n && Guard.IsBoolean(schema.uniqueItems);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid unevaluatedItems property\n * @specification Json Schema 2019-09\n */\nexport function IsUnevaluatedItems(schema) {\n return Guard.HasPropertyKey(schema, 'unevaluatedItems')\n && IsSchema(schema.unevaluatedItems);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\n/**\n * Returns true if the schema contains a valid unevaluatedProperties property\n * @specification Json Schema 2019-09\n */\nexport function IsUnevaluatedProperties(schema) {\n return Guard.HasPropertyKey(schema, 'unevaluatedProperties')\n && IsSchema(schema.unevaluatedProperties);\n}\n","// deno-fmt-ignore-file\nimport { Settings } from '../../system/settings/index.mjs';\nimport * as Schema from '../types/index.mjs';\nimport { Guard as G, EmitGuard as E } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// HasUnevaluated\n// ------------------------------------------------------------------\nfunction HasUnevaluatedFromObject(value) {\n return (Schema.IsUnevaluatedItems(value)\n || Schema.IsUnevaluatedProperties(value)\n || G.Some(G.Keys(value), key => HasUnevaluatedFromUnknown(value[key])));\n}\nfunction HasUnevaluatedFromArray(value) {\n return G.Some(value, value => HasUnevaluatedFromUnknown(value));\n}\nfunction HasUnevaluatedFromUnknown(value) {\n return (G.IsArray(value) ? HasUnevaluatedFromArray(value) :\n G.IsObject(value) ? HasUnevaluatedFromObject(value) :\n false);\n}\nexport function HasUnevaluated(context, schema) {\n return HasUnevaluatedFromUnknown(schema) || G.Some(G.Keys(context), key => HasUnevaluatedFromUnknown(context[key]));\n}\n// ------------------------------------------------------------------\n// BuildContext\n// ------------------------------------------------------------------\nexport class BuildContext {\n constructor(hasUnevaluated) {\n this.hasUnevaluated = hasUnevaluated;\n }\n UseUnevaluated() {\n return this.hasUnevaluated;\n }\n // ----------------------------------------------------------------\n // Stack\n // ----------------------------------------------------------------\n Push() {\n return E.Call(E.Member('context', 'Push'), []);\n }\n Pop() {\n return E.Call(E.Member('context', 'Pop'), []);\n }\n // ----------------------------------------------------------------\n // Top\n // ----------------------------------------------------------------\n AddIndex(index) {\n return E.Call(E.Member('context', 'AddIndex'), [index]);\n }\n AddKey(key) {\n return E.Call(E.Member('context', 'AddKey'), [key]);\n }\n Merge(results) {\n return E.Call(E.Member('context', 'Merge'), [results]);\n }\n}\n// ------------------------------------------------------------------\n// CheckContext\n// ------------------------------------------------------------------\nexport class CheckContext {\n constructor() {\n const indices = new Set();\n const keys = new Set();\n this.stack = [{ indices, keys }];\n }\n // ----------------------------------------------------------------\n // Stack\n // ----------------------------------------------------------------\n Push() {\n const indices = new Set();\n const keys = new Set();\n this.stack.push({ indices, keys });\n return true;\n }\n Pop() {\n this.stack.pop();\n return true;\n }\n // ----------------------------------------------------------------\n // Top\n // ----------------------------------------------------------------\n AddIndex(index) {\n this.GetIndices().add(index);\n return true;\n }\n AddKey(key) {\n this.GetKeys().add(key);\n return true;\n }\n GetIndices() {\n const top = this.stack[this.stack.length - 1];\n return top.indices;\n }\n GetKeys() {\n const top = this.stack[this.stack.length - 1];\n return top.keys;\n }\n Merge(results) {\n for (const context of results) {\n context.GetIndices().forEach(value => this.GetIndices().add(value));\n context.GetKeys().forEach(value => this.GetKeys().add(value));\n }\n return true;\n }\n}\n// ------------------------------------------------------------------\n// ErrorContext\n// ------------------------------------------------------------------\nexport class ErrorContext extends CheckContext {\n constructor() {\n super();\n this.errors = [];\n }\n // ----------------------------------------------------------------\n // Public\n // ----------------------------------------------------------------\n AtCapacity() {\n return this.errors.length >= Settings.Get().maxErrors;\n }\n AddError(keyword, schemaPath, instancePath, params) {\n return this.AddErrorObject({ keyword, schemaPath, instancePath, params });\n }\n AddErrors(error) {\n error.forEach(error => this.AddErrorObject(error));\n return false;\n }\n GetErrors() {\n return this.errors;\n }\n // ----------------------------------------------------------------\n // Private\n // ----------------------------------------------------------------\n AddErrorObject(error) {\n if (!this.AtCapacity())\n this.errors.push(error);\n return false;\n }\n}\n","// deno-fmt-ignore-file\nimport * as Externals from './_externals.mjs';\nimport { EmitGuard as E, Guard as G } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nfunction BuildRefineMultiple(_stack, _context, schema, value) {\n const external = Externals.CreateVariable(schema['~refine']);\n return E.Every(external, E.Constant(0), ['refinement', '_'], E.Call(E.Member('refinement', 'check'), [value]));\n}\nfunction BuildRefineSingle(_stack, _context, schema, value) {\n const external = Externals.CreateVariable(schema['~refine'][0]);\n return E.Call(E.Member(external, 'check'), [value]);\n}\nexport function BuildRefine(_stack, _context, schema, value) {\n return G.IsEqual(schema['~refine'].length, 1)\n ? BuildRefineSingle(_stack, _context, schema, value)\n : BuildRefineMultiple(_stack, _context, schema, value);\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckRefine(_stack, _context, schema, value) {\n return G.Every(schema['~refine'], 0, (refinement, _) => refinement.check(value));\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorRefine(_stack, context, schemaPath, instancePath, schema, value) {\n return G.EveryAll(schema['~refine'], 0, (refinement, index) => {\n return refinement.check(value) ||\n context.AddError('~refine', schemaPath, instancePath, { index, message: refinement.error(value) });\n });\n}\n","import { Guard } from '../../guard/index.mjs';\nimport * as Schema from '../types/index.mjs';\n// ------------------------------------------------------------------\n// DefaultUri\n// ------------------------------------------------------------------\nexport const DefaultUri = 'urn:typebox:root';\n// ------------------------------------------------------------------\n// NextUri\n//\n// Resolves a relative or absolute ref against a base URI or URN.\n// Hierarchical bases (http, https, etc.) resolve using the normal\n// URL rules. URN bases have no path to resolve against, so the ref\n// is appended after the base's last ':' segment instead.\n// ------------------------------------------------------------------\nexport function NextUri(ref, base) {\n return (URL.canParse(ref, base)) ? new URL(ref, base) : Guard.IsEqual(base, DefaultUri) ? new URL(`${base}:${ref}`) : new URL(`${base.slice(0, base.lastIndexOf(':'))}:${ref}`);\n}\n// ------------------------------------------------------------------\n// Stack\n//\n// Creates the root frame a schema traversal starts from.\n// ------------------------------------------------------------------\nexport function Stack(context, schema) {\n const base = Schema.IsSchemaObject(schema) && Schema.IsId(schema) ? NextUri(schema.$id, DefaultUri).href : DefaultUri;\n return {\n context,\n schema,\n lexicalSchema: schema,\n lexicalBase: base,\n resourceBase: base,\n referenceBase: base,\n ids: [],\n useResourceBaseForReference: true,\n recursiveAnchor: undefined,\n dynamicAnchors: [],\n resourceEntries: new Map(),\n pendingResource: true,\n enteredResource: false\n };\n}\n// ------------------------------------------------------------------\n// RegisterResourceAnchors\n//\n// Collects $dynamicAnchor schemas reachable from a resource root,\n// stopping at nested $id boundaries which own their own anchors.\n// ------------------------------------------------------------------\nfunction RegisterResourceAnchors(anchors, schema, isRoot = true) {\n if (Schema.IsSchemaBoolean(schema))\n return anchors;\n if (Array.isArray(schema))\n return schema.reduce((result, item) => RegisterResourceAnchors(result, item, false), anchors);\n if (!Schema.IsSchemaObject(schema))\n return anchors;\n if (!isRoot && Schema.IsId(schema))\n return anchors;\n const next = !isRoot && Schema.IsDynamicAnchor(schema) ? [...anchors, schema] : anchors;\n return Object.keys(schema).reduce((result, key) => RegisterResourceAnchors(result, schema[key], false), next);\n}\n// ------------------------------------------------------------------\n// ResourceEntry\n//\n// A ref crossing (Resolve.Ref) may have marked `schema` as the entry\n// point of a retrieved/legacy resource. If so the frame resets to\n// that resource's base/root instead of chaining onto the parent.\n// ------------------------------------------------------------------\nfunction ResourceEntry(stack, schema) {\n return stack.resourceEntries.get(schema);\n}\nfunction NextEnteredResource(stack, schema) {\n return stack.enteredResource || ResourceEntry(stack, schema) !== undefined;\n}\n// ------------------------------------------------------------------\n// NextStack\n//\n// Each Next* helper below computes one XStack field in isolation from\n// the previous frame and the schema being pushed.\n// ------------------------------------------------------------------\nfunction IsRelativeId(schema) {\n return !/^[A-Za-z][A-Za-z0-9+.-]*:/.test(schema.$id);\n}\nfunction NextIds(stack, schema) {\n return Schema.IsId(schema) ? [...stack.ids, schema] : stack.ids;\n}\nfunction NextRecursiveAnchor(stack, schema) {\n return stack.recursiveAnchor ?? (Schema.IsRecursiveAnchorTrue(schema) ? schema : undefined);\n}\nfunction NextDynamicAnchors(stack, schema) {\n const registered = Schema.IsId(schema) ? RegisterResourceAnchors(stack.dynamicAnchors, schema) : stack.dynamicAnchors;\n return Schema.IsDynamicAnchor(schema) ? [...registered, schema] : registered;\n}\nfunction NextPendingResource(stack, schema) {\n return Schema.IsId(schema) ? false : stack.pendingResource;\n}\nfunction NextLexicalBase(stack, schema) {\n const entry = ResourceEntry(stack, schema);\n if (entry)\n return entry.base;\n return Schema.IsId(schema) ? NextUri(schema.$id, stack.lexicalBase).href : stack.lexicalBase;\n}\nfunction NextResourceBase(stack, schema) {\n const entry = ResourceEntry(stack, schema);\n if (entry)\n return entry.base;\n return (Schema.IsId(schema) && stack.pendingResource) ? NextUri(schema.$id, stack.resourceBase).href : stack.resourceBase;\n}\nfunction NextUseResourceBaseForReference(stack, schema) {\n return Schema.IsId(schema) ? !IsRelativeId(schema) : stack.useResourceBaseForReference;\n}\nfunction NextReferenceBase(stack, schema) {\n const isRetrieved = NextEnteredResource(stack, schema);\n const useResourceBaseForReference = NextUseResourceBaseForReference(stack, schema);\n return (isRetrieved || useResourceBaseForReference) ? NextResourceBase(stack, schema) : NextLexicalBase(stack, schema);\n}\nfunction NextLexicalSchema(stack, schema) {\n const entry = ResourceEntry(stack, schema);\n if (entry)\n return entry.root;\n return Schema.IsId(schema) ? schema : stack.lexicalSchema;\n}\n// ------------------------------------------------------------------\n// NextStack | HasStackKeywords (Optimization)\n//\n// HasStackKeywords narrows schema to an object and checks whether it\n// carries $id, $dynamicAnchor, a first-seen $recursiveAnchor, or a\n// resource-entry point. When none apply, NextStack skips the frame\n// rebuild and returns the parent stack as-is.\n// ------------------------------------------------------------------\nfunction HasStackKeywords(stack, schema) {\n return Schema.IsSchemaObject(schema) && (Schema.IsId(schema) ||\n Schema.IsDynamicAnchor(schema) ||\n (Guard.IsUndefined(stack.recursiveAnchor) && Schema.IsRecursiveAnchorTrue(schema)) ||\n !Guard.IsUndefined(ResourceEntry(stack, schema)));\n}\nexport function NextStack(stack, schema) {\n return HasStackKeywords(stack, schema)\n ? {\n ...stack,\n ids: NextIds(stack, schema),\n dynamicAnchors: NextDynamicAnchors(stack, schema),\n recursiveAnchor: NextRecursiveAnchor(stack, schema),\n pendingResource: NextPendingResource(stack, schema),\n lexicalBase: NextLexicalBase(stack, schema),\n resourceBase: NextResourceBase(stack, schema),\n useResourceBaseForReference: NextUseResourceBaseForReference(stack, schema),\n referenceBase: NextReferenceBase(stack, schema),\n lexicalSchema: NextLexicalSchema(stack, schema),\n enteredResource: NextEnteredResource(stack, schema)\n }\n : stack;\n}\n","// deno-fmt-ignore-file\nimport * as Schema from '../types/index.mjs';\nimport { Unique } from './_unique.mjs';\nimport { Guard as G, EmitGuard as E } from '../../guard/index.mjs';\nimport { BuildSchemaPushStack, CheckSchemaPushStack, ErrorSchemaPushStack } from './schema.mjs';\n// ------------------------------------------------------------------\n// Valid\n// ------------------------------------------------------------------\nfunction IsValid(schema) {\n return Schema.IsItems(schema) && G.IsArray(schema.items);\n}\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nfunction BuildAdditionalItemsStandard(stack, context, schema, value) {\n const [item, index] = [Unique(), Unique()];\n const isSchema = BuildSchemaPushStack(stack, context, schema.additionalItems, item);\n const isLength = E.IsLessThan(index, E.Constant(schema.items.length));\n const addIndex = context.AddIndex(index);\n return E.Every(value, E.Constant(0), [item, index], E.Or(isLength, E.And(isSchema, addIndex)));\n}\nfunction BuildAdditionalItemsFast(stack, context, schema, value) {\n const [item, index] = [Unique(), Unique()];\n const isSchema = BuildSchemaPushStack(stack, context, schema.additionalItems, item);\n const isLength = E.IsLessThan(index, E.Constant(schema.items.length));\n return E.Every(value, E.Constant(0), [item, index], E.Or(isLength, isSchema));\n}\nexport function BuildAdditionalItems(stack, context, schema, value) {\n if (!IsValid(schema))\n return E.Constant(true);\n return context.UseUnevaluated()\n ? BuildAdditionalItemsStandard(stack, context, schema, value)\n : BuildAdditionalItemsFast(stack, context, schema, value);\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckAdditionalItems(stack, context, schema, value) {\n if (!IsValid(schema))\n return true;\n const isAdditionalItems = G.Every(value, 0, (item, index) => {\n return G.IsLessThan(index, schema.items.length)\n || (CheckSchemaPushStack(stack, context, schema.additionalItems, item) && context.AddIndex(index));\n });\n return isAdditionalItems;\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorAdditionalItems(stack, context, schemaPath, instancePath, schema, value) {\n if (!IsValid(schema))\n return true;\n const isAdditionalItems = G.Every(value, 0, (item, index) => {\n const nextSchemaPath = `${schemaPath}/additionalItems`;\n const nextInstancePath = `${instancePath}/${index}`;\n return G.IsLessThan(index, schema.items.length) ||\n (ErrorSchemaPushStack(stack, context, nextSchemaPath, nextInstancePath, schema.additionalItems, item) && context.AddIndex(index));\n });\n return isAdditionalItems;\n}\n","// ------------------------------------------------------------------\n// EncodeFragment\n//\n// We use this function to encode instancePath and schemaPath path\n// fragments for errors. We need this encoding such that callers\n// can use Pointer to deref error targets. We should consider adding\n// this to the Pointer module as Pointer.Encode(...) (review)\n// ------------------------------------------------------------------\nexport function EncodeFragment(fragment) {\n return fragment.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n","/** Standard RegExp with Unicode */\nexport function UnicodeRegExp(pattern) {\n return new RegExp(pattern, 'u');\n}\n","// deno-fmt-ignore-file\nimport * as Schema from '../types/index.mjs';\nimport * as Externals from './_externals.mjs';\nimport * as Pathing from './_pathing.mjs';\nimport { Unique } from './_unique.mjs';\nimport { UnicodeRegExp } from './_regexp.mjs';\nimport { EmitGuard as E, Guard as G } from '../../guard/index.mjs';\nimport { BuildSchemaPushStack, CheckSchemaPushStack, ErrorSchemaPushStack } from './schema.mjs';\n// ------------------------------------------------------------------\n// Optimization: IsAdditionalPropertiesIgnored\n//\n// We can ignore additionalProperties if the schema is true-like and\n// we are not in an unevaluated context, noting that additional\n// properties are considered tracked, evaluated keys.\n// ------------------------------------------------------------------\nfunction IsAdditionalPropertiesIgnored(context, additionalProperties) {\n return !context.UseUnevaluated() &&\n (G.IsEqual(additionalProperties, true) ||\n (G.IsObject(additionalProperties) && G.IsEqual(G.Keys(additionalProperties).length, 0)));\n}\n// ------------------------------------------------------------------\n// Optimization: GetPropertiesPattern\n//\n// Constructs a regular expression that matches all property keys\n// and pattern properties defined in a schema. This approach unifies\n// handling of both property types, avoiding separate logic paths.\n//\n// If no keys or patterns are present, it returns a pattern that\n// matches nothing: '(?!)'.\n//\n// ------------------------------------------------------------------\nfunction GetPropertyKeyAsPattern(key) {\n const escaped = key.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n return `^${escaped}$`;\n}\nfunction GetPropertiesPattern(schema) {\n const patterns = [];\n if (Schema.IsPatternProperties(schema))\n patterns.push(...G.Keys(schema.patternProperties));\n if (Schema.IsProperties(schema))\n patterns.push(...G.Keys(schema.properties).map(GetPropertyKeyAsPattern));\n return G.IsEqual(patterns.length, 0) ? '(?!)' : `(${patterns.join('|')})`;\n}\n// ------------------------------------------------------------------\n// BuildAdditionalPropertiesFast\n//\n// Optimized logic for schemas with `additionalProperties: false`.\n//\n// This fast-path applies only when:\n// - `additionalProperties` is explicitly set to false,\n// - the schema uses only `properties` (no `patternProperties`),\n// - and all defined properties are required (i.e., no optional keys).\n//\n// This constraint is common when enforcing strict object shapes\n// with only known, fixed keys. When all these conditions are met,\n// we can generate a simplified and efficient runtime check.\n//\n// ------------------------------------------------------------------\nexport function CanAdditionalPropertiesFast(_context, schema, _value) {\n return Schema.IsRequired(schema)\n && Schema.IsProperties(schema)\n && !Schema.IsPatternProperties(schema)\n && G.IsEqual(schema.additionalProperties, false)\n && G.IsEqual(G.Keys(schema.properties).length, schema.required.length);\n}\nexport function BuildAdditionalPropertiesFast(_context, schema, value) {\n return E.IsEqual(E.Member(E.Call(E.Member('Object', 'getOwnPropertyNames'), [value]), 'length'), E.Constant(schema.required.length));\n}\n// ------------------------------------------------------------------\n// BuildAdditionalPropertiesStandard\n// ------------------------------------------------------------------\nexport function BuildAdditionalPropertiesStandard(stack, context, schema, value) {\n const [key, _index] = [Unique(), Unique()];\n const regexp = Externals.CreateVariable(UnicodeRegExp(GetPropertiesPattern(schema)));\n const isSchema = BuildSchemaPushStack(stack, context, schema.additionalProperties, `${value}[${key}]`);\n const isKey = E.Call(E.Member(regexp, 'test'), [key]);\n const addKey = context.AddKey(key);\n const guarded = context.UseUnevaluated() ? E.Or(isKey, E.And(isSchema, addKey)) : E.Or(isKey, isSchema);\n const result = E.Every(E.Keys(value), E.Constant(0), [key, _index], guarded);\n return result;\n}\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildAdditionalProperties(stack, context, schema, value) {\n if (IsAdditionalPropertiesIgnored(context, schema.additionalProperties))\n return E.Constant(true);\n return CanAdditionalPropertiesFast(context, schema, value)\n ? BuildAdditionalPropertiesFast(context, schema, value)\n : BuildAdditionalPropertiesStandard(stack, context, schema, value);\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckAdditionalProperties(stack, context, schema, value) {\n const regexp = UnicodeRegExp(GetPropertiesPattern(schema));\n const isAdditionalProperties = G.Every(G.Keys(value), 0, (key, _index) => {\n return regexp.test(key) ||\n (CheckSchemaPushStack(stack, context, schema.additionalProperties, value[key]) && context.AddKey(key));\n });\n return isAdditionalProperties;\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorAdditionalProperties(stack, context, schemaPath, instancePath, schema, value) {\n const regexp = UnicodeRegExp(GetPropertiesPattern(schema));\n const additionalProperties = [];\n const isAdditionalProperties = G.EveryAll(G.Keys(value), 0, (key, _index) => {\n const nextSchemaPath = `${schemaPath}/additionalProperties`;\n const nextInstancePath = `${instancePath}/${Pathing.EncodeFragment(key)}`;\n const isAdditionalProperty = regexp.test(key) ||\n (ErrorSchemaPushStack(stack, context, nextSchemaPath, nextInstancePath, schema.additionalProperties, value[key]) && context.AddKey(key));\n if (!isAdditionalProperty)\n additionalProperties.push(key);\n return isAdditionalProperty;\n });\n return isAdditionalProperties ||\n context.AddError('additionalProperties', schemaPath, instancePath, { additionalProperties });\n}\n","// deno-fmt-ignore-file\nimport { CheckContext, ErrorContext } from './_context.mjs';\nimport { Reducer } from './_reducer.mjs';\nimport { EmitGuard as E, Guard as G } from '../../guard/index.mjs';\nimport { BuildSchema, CheckSchema, ErrorSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nfunction BuildAllOfStandard(stack, context, schema, value) {\n return Reducer(stack, context, schema.allOf, value, E.IsEqual(E.Member('results', 'length'), E.Constant(schema.allOf.length)));\n}\nfunction BuildAllOfFast(stack, context, schema, value) {\n return E.ReduceAnd(schema.allOf.map((schema) => BuildSchema(stack, context, schema, value)));\n}\nexport function BuildAllOf(stack, context, schema, value) {\n return context.UseUnevaluated()\n ? BuildAllOfStandard(stack, context, schema, value)\n : BuildAllOfFast(stack, context, schema, value);\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckAllOf(stack, context, schema, value) {\n const results = schema.allOf.reduce((result, schema) => {\n const nextContext = new CheckContext();\n return CheckSchema(stack, nextContext, schema, value) ? [...result, nextContext] : result;\n }, []);\n return G.IsEqual(results.length, schema.allOf.length) && context.Merge(results);\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorAllOf(stack, context, schemaPath, instancePath, schema, value) {\n const failedContexts = [];\n const results = schema.allOf.reduce((result, schema, index) => {\n const nextSchemaPath = `${schemaPath}/allOf/${index}`;\n const nextContext = new ErrorContext();\n const isSchema = ErrorSchema(stack, nextContext, nextSchemaPath, instancePath, schema, value);\n if (!isSchema)\n failedContexts.push(nextContext);\n return isSchema ? [...result, nextContext] : result;\n }, []);\n const isAllOf = G.IsEqual(results.length, schema.allOf.length) && context.Merge(results);\n if (!isAllOf)\n failedContexts.forEach(failed => context.AddErrors(failed.GetErrors()));\n return isAllOf;\n}\n","// deno-fmt-ignore-file\nimport { Reducer } from './_reducer.mjs';\nimport { CheckContext, ErrorContext } from './_context.mjs';\nimport { BuildSchema, CheckSchema, ErrorSchema } from './schema.mjs';\nimport { Guard as G, EmitGuard as E } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nfunction BuildAnyOfStandard(stack, context, schema, value) {\n return Reducer(stack, context, schema.anyOf, value, E.IsGreaterThan(E.Member('results', 'length'), E.Constant(0)));\n}\nfunction BuildAnyOfFast(stack, context, schema, value) {\n return E.ReduceOr(schema.anyOf.map((schema) => BuildSchema(stack, context, schema, value)));\n}\nexport function BuildAnyOf(stack, context, schema, value) {\n return context.UseUnevaluated()\n ? BuildAnyOfStandard(stack, context, schema, value)\n : BuildAnyOfFast(stack, context, schema, value);\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckAnyOf(stack, context, schema, value) {\n const results = schema.anyOf.reduce((result, schema) => {\n const nextContext = new CheckContext();\n return CheckSchema(stack, nextContext, schema, value) ? [...result, nextContext] : result;\n }, []);\n return G.IsGreaterThan(results.length, 0) && context.Merge(results);\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorAnyOf(stack, context, schemaPath, instancePath, schema, value) {\n const failedContexts = [];\n const results = schema.anyOf.reduce((result, schema, index) => {\n const nextContext = new ErrorContext();\n const nextSchemaPath = `${schemaPath}/anyOf/${index}`;\n const isSchema = ErrorSchema(stack, nextContext, nextSchemaPath, instancePath, schema, value);\n if (!isSchema)\n failedContexts.push(nextContext);\n return isSchema ? [...result, nextContext] : result;\n }, []);\n const isAnyOf = G.IsGreaterThan(results.length, 0) && context.Merge(results);\n if (!isAnyOf)\n failedContexts.forEach(failed => context.AddErrors(failed.GetErrors()));\n return isAnyOf || context.AddError('anyOf', schemaPath, instancePath, {});\n}\n","// deno-fmt-ignore-file\nimport { EmitGuard as E } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildSchemaBoolean(_stack, _context, schema, _value) {\n return schema ? E.Constant(true) : E.Constant(false);\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckSchemaBoolean(_stack, _context, schema, _value) {\n return schema;\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorSchemaBoolean(stack, context, schemaPath, instancePath, schema, value) {\n return CheckSchemaBoolean(stack, context, schema, value) ||\n context.AddError('boolean', schemaPath, instancePath, {});\n}\n","// deno-fmt-ignore-file\nimport * as Externals from './_externals.mjs';\nimport { EmitGuard as E, Guard as G } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildConst(_stack, _context, schema, value) {\n return G.IsValueLike(schema.const)\n ? E.IsEqual(value, E.Constant(schema.const))\n : E.IsDeepEqual(value, Externals.CreateVariable(schema.const));\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckConst(_stack, _context, schema, value) {\n return G.IsValueLike(schema.const)\n ? G.IsEqual(value, schema.const)\n : G.IsDeepEqual(value, schema.const);\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function ErrorConst(stack, context, schemaPath, instancePath, schema, value) {\n return CheckConst(stack, context, schema, value) ||\n context.AddError('const', schemaPath, instancePath, { allowedValue: schema.const });\n}\n","// deno-fmt-ignore-file\nimport * as Schema from '../types/index.mjs';\nimport { Unique } from './_unique.mjs';\nimport { EmitGuard as E, Guard as G } from '../../guard/index.mjs';\nimport { BuildSchema, CheckSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Invalid\n// ------------------------------------------------------------------\nfunction IsValid(schema) {\n return !(Schema.IsMinContains(schema) && G.IsEqual(schema.minContains, 0));\n}\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nfunction BuildContainsStandard(stack, context, schema, value) {\n const [item, index] = [Unique(), Unique()];\n const isLength = E.Not(E.IsEqual(E.Member(value, 'length'), E.Constant(0)));\n const isSome = E.SomeAll(value, [item, index], E.And(BuildSchema(stack, context, schema.contains, item), context.AddIndex(index)));\n return E.And(isLength, isSome);\n}\nfunction BuildContainsFast(stack, context, schema, value) {\n const [item] = [Unique()];\n const isLength = E.Not(E.IsEqual(E.Member(value, 'length'), E.Constant(0)));\n const isSome = E.Some(value, [item, '_'], BuildSchema(stack, context, schema.contains, item));\n return E.And(isLength, isSome);\n}\nexport function BuildContains(stack, context, schema, value) {\n if (!IsValid(schema))\n return E.Constant(true);\n return context.UseUnevaluated()\n ? BuildContainsStandard(stack, context, schema, value)\n : BuildContainsFast(stack, context, schema, value);\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckContains(stack, context, schema, value) {\n if (!IsValid(schema))\n return true;\n return !G.IsEqual(value.length, 0) && G.SomeAll(value, (item, index) => {\n return CheckSchema(stack, context, schema.contains, item) && context.AddIndex(index);\n });\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorContains(stack, context, schemaPath, instancePath, schema, value) {\n return CheckContains(stack, context, schema, value) ||\n context.AddError('contains', schemaPath, instancePath, { minContains: 1 });\n}\n","// deno-fmt-ignore-file\nimport * as Pathing from './_pathing.mjs';\nimport { EmitGuard as E, Guard as G } from '../../guard/index.mjs';\nimport { BuildSchema, CheckSchema, ErrorSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildDependencies(stack, context, schema, value) {\n const isLength = E.IsEqual(E.Member(E.Keys(value), 'length'), E.Constant(0));\n const isEveryDependency = E.ReduceAnd(G.Entries(schema.dependencies).map(([key, schema]) => {\n const notKey = E.Not(E.HasPropertyKey(value, E.Constant(key)));\n const isSchema = BuildSchema(stack, context, schema, value);\n const isEveryKey = (schema) => E.ReduceAnd(schema.map((key) => E.HasPropertyKey(value, E.Constant(key))));\n return E.Or(notKey, G.IsArray(schema) ? isEveryKey(schema) : isSchema);\n }));\n return E.Or(isLength, isEveryDependency);\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckDependencies(stack, context, schema, value) {\n const isLength = G.IsEqual(G.Keys(value).length, 0);\n const isEvery = G.Every(G.Entries(schema.dependencies), 0, ([key, schema]) => {\n return !G.HasPropertyKey(value, key) || (G.IsArray(schema)\n ? schema.every((key) => G.HasPropertyKey(value, key))\n : CheckSchema(stack, context, schema, value));\n });\n return isLength || isEvery;\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorDependencies(stack, context, schemaPath, instancePath, schema, value) {\n const isLength = G.IsEqual(G.Keys(value).length, 0);\n const isEvery = G.EveryAll(G.Entries(schema.dependencies), 0, ([key, schema]) => {\n const nextSchemaPath = `${schemaPath}/dependencies/${Pathing.EncodeFragment(key)}`;\n return !G.HasPropertyKey(value, key) || (G.IsArray(schema)\n ? schema.every((dependency) => G.HasPropertyKey(value, dependency) ||\n context.AddError('dependencies', schemaPath, instancePath, { property: key, dependencies: schema }))\n : ErrorSchema(stack, context, nextSchemaPath, instancePath, schema, value));\n });\n return isLength || isEvery;\n}\n","// deno-fmt-ignore-file\nimport { EmitGuard as E, Guard as G } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildDependentRequired(_stack, _context, schema, value) {\n const isLength = E.IsEqual(E.Member(E.Keys(value), 'length'), E.Constant(0));\n const isEvery = E.ReduceAnd(G.Entries(schema.dependentRequired).map(([key, keys]) => {\n const notKey = E.Not(E.HasPropertyKey(value, E.Constant(key)));\n const everyKey = E.ReduceAnd(keys.map((key) => E.HasPropertyKey(value, E.Constant(key))));\n return E.Or(notKey, everyKey);\n }));\n return E.Or(isLength, isEvery);\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckDependentRequired(_stack, _context, schema, value) {\n const isLength = G.IsEqual(G.Keys(value).length, 0);\n const isEvery = G.Every(G.Entries(schema.dependentRequired), 0, ([key, keys]) => {\n return !G.HasPropertyKey(value, key) ||\n keys.every((key) => G.HasPropertyKey(value, key));\n });\n return isLength || isEvery;\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorDependentRequired(_stack, context, schemaPath, instancePath, schema, value) {\n const isLength = G.IsEqual(G.Keys(value).length, 0);\n const isEveryEntry = G.EveryAll(G.Entries(schema.dependentRequired), 0, ([key, keys]) => {\n return !G.HasPropertyKey(value, key) || G.EveryAll(keys, 0, (dependency) => G.HasPropertyKey(value, dependency) ||\n context.AddError('dependentRequired', schemaPath, instancePath, { property: key, dependencies: keys }));\n });\n return isLength || isEveryEntry;\n}\n","// deno-fmt-ignore-file\nimport * as Pathing from './_pathing.mjs';\nimport { Guard as G, EmitGuard as E } from '../../guard/index.mjs';\nimport { BuildSchema, CheckSchema, ErrorSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildDependentSchemas(stack, context, schema, value) {\n const isLength = E.IsEqual(E.Member(E.Keys(value), 'length'), E.Constant(0));\n const isEvery = E.ReduceAnd(G.Entries(schema.dependentSchemas).map(([key, schema]) => {\n const notKey = E.Not(E.HasPropertyKey(value, E.Constant(key)));\n const isSchema = BuildSchema(stack, context, schema, value);\n return E.Or(notKey, isSchema);\n }));\n return E.Or(isLength, isEvery);\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckDependentSchemas(stack, context, schema, value) {\n const isLength = G.IsEqual(G.Keys(value).length, 0);\n const isEvery = G.Every(G.Entries(schema.dependentSchemas), 0, ([key, schema]) => {\n return !G.HasPropertyKey(value, key) ||\n CheckSchema(stack, context, schema, value);\n });\n return isLength || isEvery;\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorDependentSchemas(stack, context, schemaPath, instancePath, schema, value) {\n const isLength = G.IsEqual(G.Keys(value).length, 0);\n const isEvery = G.EveryAll(G.Entries(schema.dependentSchemas), 0, ([key, schema]) => {\n const nextSchemaPath = `${schemaPath}/dependentSchemas/${Pathing.EncodeFragment(key)}`;\n return !G.HasPropertyKey(value, key) ||\n ErrorSchema(stack, context, nextSchemaPath, instancePath, schema, value);\n });\n return isLength || isEvery;\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Throw\n// ------------------------------------------------------------------\nfunction Throw(message) {\n throw Error(message);\n}\nfunction ThrowUnsafePropertyKey() {\n Throw('Pointer contains unsafe property key');\n}\nfunction ThrowCannotSetRoot() {\n Throw('Cannot set value');\n}\n// ------------------------------------------------------------------\n// Indices\n// ------------------------------------------------------------------\nexport function Indices(pointer) {\n const indices = pointer.split('/').map(index => index.replace(/~1/g, '/').replace(/~0/g, '~'));\n return indices[0] === '' ? indices.slice(1) : indices;\n}\n// ------------------------------------------------------------------\n// Has\n// ------------------------------------------------------------------\nexport function Has(value, pointer) {\n let current = value;\n for (const index of Indices(pointer)) {\n if (!Guard.IsObject(current) || !Guard.HasPropertyKey(current, index))\n return false;\n current = current[index];\n }\n return true;\n}\n// ------------------------------------------------------------------\n// Get\n// ------------------------------------------------------------------\nexport function Get(value, pointer) {\n let current = value;\n for (const index of Indices(pointer)) {\n if (!Guard.IsObject(current) || Guard.IsUnsafePropertyKey(index))\n return undefined;\n current = current[index];\n }\n return current;\n}\n// ------------------------------------------------------------------\n// Get\n// ------------------------------------------------------------------\nfunction Parent(value, indices, last) {\n let current = value;\n for (const index of indices) {\n if (Guard.IsUnsafePropertyKey(index))\n ThrowUnsafePropertyKey();\n current = Guard.IsObject(current) ? current[index] : undefined;\n }\n if (Guard.IsUnsafePropertyKey(last))\n ThrowUnsafePropertyKey();\n if (!Guard.IsObject(current))\n ThrowCannotSetRoot();\n return current;\n}\n// ------------------------------------------------------------------\n// Set\n// ------------------------------------------------------------------\nexport function Set(value, pointer, next) {\n const indices = Indices(pointer);\n const last = indices.pop();\n if (Guard.IsUndefined(last))\n ThrowCannotSetRoot();\n Parent(value, indices, last)[last] = next;\n return value;\n}\n// ------------------------------------------------------------------\n// Delete\n// ------------------------------------------------------------------\nexport function Delete(value, pointer) {\n const indices = Indices(pointer);\n const last = indices.pop();\n if (Guard.IsUndefined(last))\n ThrowCannotSetRoot();\n const parent = Parent(value, indices, last);\n if (Guard.IsArray(parent) && /^(0|[1-9]\\d*)$/.test(last)) {\n parent.splice(Number(last), 1);\n }\n else {\n delete parent[last];\n }\n return value;\n}\n","import { Guard } from '../../guard/index.mjs';\nimport { Pointer } from '../pointer/index.mjs';\nimport * as Schema from '../types/index.mjs';\nimport * as Stack from '../engine/_stack.mjs';\n// ------------------------------------------------------------------\n// Helpers\n//\n// Utilities to compute schema base URIs, normalize absolute URLs,\n// strip URL fragments for canonical hrefs, find target base URIs,\n// resolve $ref root schemas, and identify JSON pointers vs anchors.\n// ------------------------------------------------------------------\nfunction RelativeBase(schema, base) {\n return Schema.IsSchemaObject(schema) && Schema.IsId(schema) ? Stack.NextUri(schema.$id, base.href) : base;\n}\nfunction AbsoluteBase(base) {\n return Stack.NextUri(base, Stack.DefaultUri);\n}\nfunction CanonicalHref(url) {\n return url.href.split('#')[0];\n}\nfunction Base(schema, base, target) {\n return SearchBase(schema, AbsoluteBase(base), target);\n}\nfunction RefRoot(stack, ref) {\n return (ref.$ref.startsWith('#') || stack.enteredResource) ? stack.lexicalSchema : stack.schema;\n}\nfunction IsPointerFragment(fragment) {\n return fragment.startsWith('#/');\n}\n// ------------------------------------------------------------------\n// Search\n//\n// Recursive tree walks that locate things by identity, not URL.\n// SearchDynamicAnchor finds a node with a matching $dynamicAnchor.\n// SearchBase finds a specific target schema (by reference) and\n// returns its base URI, tracking $id rebasing as it descends.\n// ------------------------------------------------------------------\nfunction SearchDynamicAnchor(schema, name) {\n if (Guard.IsObject(schema) && Schema.IsDynamicAnchor(schema) && Guard.IsEqual(schema.$dynamicAnchor, name)) {\n return schema;\n }\n if (Guard.IsObject(schema)) {\n for (const key of Guard.Keys(schema)) {\n const result = SearchDynamicAnchor(schema[key], name);\n if (result)\n return result;\n }\n }\n return undefined;\n}\nfunction SearchBase(schema, base, target) {\n if (Guard.IsEqual(schema, target))\n return base.href;\n const nextBase = RelativeBase(schema, base);\n if (Guard.IsArray(schema)) {\n for (const item of schema) {\n const result = SearchBase(item, nextBase, target);\n if (!Guard.IsUndefined(result))\n return result;\n }\n }\n else if (Guard.IsObject(schema)) {\n for (const key of Guard.Keys(schema)) {\n const result = SearchBase(schema[key], nextBase, target);\n if (!Guard.IsUndefined(result))\n return result;\n }\n }\n return undefined;\n}\n// ------------------------------------------------------------------\n// Match\n//\n// Tests whether a schema node is what a reference URL points to.\n// MatchSchemaObject checks a single node in order: $id, $anchor,\n// $dynamicAnchor, then JSON pointer/hash. MatchFromArray,\n// MatchFromObject, and Match recurse through the tree to try every\n// node, skipping const and enum since their values are user data,\n// not schema.\n// ------------------------------------------------------------------\nfunction MatchWithHash(schema, ref) {\n if (ref.href.endsWith('#'))\n return schema;\n if (!ref.hash.startsWith('#'))\n return undefined;\n const fragment = decodeURIComponent(ref.hash.slice(1));\n if (!fragment.startsWith('/'))\n return undefined;\n return Pointer.Get(schema, fragment);\n}\nfunction MatchWithId(schema, base, ref) {\n if (!Schema.IsId(schema))\n return undefined;\n if (Guard.IsEqual(schema.$id, ref.hash))\n return schema;\n const absoluteRef = new URL(ref.href, base.href);\n if (Guard.IsEqual(base.pathname, absoluteRef.pathname))\n return ref.hash.startsWith('#') ? MatchWithHash(schema, ref) : schema;\n return undefined;\n}\nfunction MatchWithAnchor(schema, base, ref) {\n if (!Schema.IsAnchor(schema))\n return undefined;\n const absoluteAnchor = new URL(`#${schema.$anchor}`, base.href);\n const absoluteRef = new URL(ref.href, base.href);\n return Guard.IsEqual(absoluteAnchor.href, absoluteRef.href) ? schema : undefined;\n}\nfunction MatchWithDynamicAnchor(schema, base, ref) {\n if (!Schema.IsDynamicAnchor(schema))\n return undefined;\n const absoluteAnchor = new URL(`#${schema.$dynamicAnchor}`, base.href);\n const absoluteRef = new URL(ref.href, base.href);\n const isMatch = Guard.IsEqual(absoluteAnchor.href, absoluteRef.href);\n return isMatch ? schema : undefined;\n}\nfunction MatchSchemaObject(schema, base, ref) {\n if (!Schema.IsSchemaObject(schema))\n return undefined;\n return MatchWithId(schema, base, ref) ??\n MatchWithAnchor(schema, base, ref) ??\n MatchWithDynamicAnchor(schema, base, ref) ??\n MatchWithHash(schema, ref);\n}\nfunction MatchFromArray(schema, base, ref) {\n if (!Guard.IsArray(schema))\n return undefined;\n return schema.reduce((result, item) => {\n const match = Match(item, base, ref);\n return !Guard.IsUndefined(match) ? match : result;\n }, undefined);\n}\nfunction MatchFromObject(schema, base, ref) {\n if (!Guard.IsObject(schema))\n return undefined;\n return Guard.Keys(schema).reduce((result, key) => {\n if (Guard.IsEqual(key, 'const') || Guard.IsEqual(key, 'enum'))\n return result;\n const match = Match(schema[key], base, ref);\n return !Guard.IsUndefined(match) ? match : result;\n }, undefined);\n}\nfunction Match(schema, base, ref) {\n const relativeBase = RelativeBase(schema, base);\n return MatchSchemaObject(schema, relativeBase, ref) ??\n MatchFromArray(schema, relativeBase, ref) ??\n MatchFromObject(schema, relativeBase, ref);\n}\n// ------------------------------------------------------------------\n// Resource\n//\n// Wraps RefInternal to check whether the resolved schema is itself\n// a resource root (carries its own $id). Used by FindResolvedResource\n// to tell a boundary hit from a landing inside a resource.\n// ------------------------------------------------------------------\nfunction Resource(context, schema, base, ref) {\n const result = RefInternal(context, schema, base, ref);\n return Schema.IsSchemaObject(result) && Schema.IsId(result) ? result : undefined;\n}\n// ------------------------------------------------------------------\n// FindDeferredResource\n//\n// Legacy Draft-4 schemas (no $schema keyword) treat a nested $id as\n// an in-place base change, not a new resource. A local ('#...') ref\n// landing at a different base than the current one needs a stack\n// entry so later lookups use the right base.\n// ------------------------------------------------------------------\nfunction FindDeferredResourceLegacy(stack, ref, schema) {\n if (!ref.$ref.startsWith('#'))\n return undefined;\n if (!Schema.IsSchemaObject(stack.schema) || Guard.HasPropertyKey(stack.schema, '$schema'))\n return undefined;\n const targetBase = Base(stack.lexicalSchema, stack.referenceBase, schema);\n if (Guard.IsUndefined(targetBase) || Guard.IsEqual(targetBase, stack.referenceBase))\n return undefined;\n return { target: schema, base: targetBase, root: /* safe-object-root */ stack.lexicalSchema };\n}\nfunction FindDeferredResourceModern(stack, canonical, schema) {\n const remoteRoot = stack.context[canonical];\n if (!Schema.IsSchemaObject(remoteRoot))\n return undefined;\n return { target: schema, base: canonical, root: remoteRoot };\n}\nfunction FindDeferredResource(stack, ref, schema, canonical, isRemote) {\n const remote = isRemote ? FindDeferredResourceModern(stack, canonical, schema) : undefined;\n return Guard.IsUndefined(remote) ? FindDeferredResourceLegacy(stack, ref, schema) : remote;\n}\n// ------------------------------------------------------------------\n// FindResolvedResource\n//\n// Handles a ref that crossed into a different resource but landed\n// on a schema without that resource's $id (e.g. a pointer into the\n// middle of a remote document). Enters the enclosing resource so\n// lexical/base lookups behave as if traversal walked in from its top.\n// ------------------------------------------------------------------\nfunction FindResolvedResource(stack, canonical, schema) {\n if (Schema.IsId(schema))\n return undefined;\n const resource = Resource(stack.context, /* safe-object-root */ stack.schema, stack.referenceBase, canonical);\n if (!resource || stack.ids.includes(resource))\n return undefined;\n return { resource };\n}\n// ------------------------------------------------------------------\n// RefInternal\n//\n// Shared lookup used by Ref, RecursiveRef, and DynamicRef. Tries,\n// in order: exact match in the pre-registered context, then a local\n// search within the given schema, then a search in a remote\n// document. Returns just the schema; caller-specific bookkeeping\n// (deferred/resolved resources) happens one level up.\n// ------------------------------------------------------------------\nfunction RefInternalWithContext(context, ref) {\n return Guard.HasPropertyKey(context, ref) ? context[ref] : undefined;\n}\nfunction RefInternalWithLocal(schema, base, ref) {\n return Match(schema, base, ref);\n}\nfunction RefInternalWithRemote(context, base, ref) {\n const canonicalHref = CanonicalHref(ref);\n if (!Guard.HasPropertyKey(context, canonicalHref) || Guard.IsEqual(canonicalHref, CanonicalHref(base)))\n return undefined;\n const remoteSchema = context[canonicalHref];\n const remoteBase = RelativeBase(remoteSchema, new URL(canonicalHref));\n return Guard.IsEqual(ref.hash, '') ? remoteSchema : Match(remoteSchema, remoteBase, ref);\n}\nfunction RefInternal(context, schema, base, ref) {\n const absoluteBase = AbsoluteBase(base);\n const target = Stack.NextUri(ref, absoluteBase.href);\n return RefInternalWithContext(context, ref) ??\n RefInternalWithLocal(schema, absoluteBase, target) ??\n RefInternalWithRemote(context, absoluteBase, target);\n}\n// ------------------------------------------------------------------\n// RefNextStack\n//\n// Computes the next stack state from any deferred or resolved\n// resource found while following a $ref, carrying existing stack\n// state forward rather than rebuilding it.\n// ------------------------------------------------------------------\nfunction RefNextStackDeferred(stack, deferredResource) {\n if (!deferredResource)\n return stack;\n const resourceEntries = new Map(stack.resourceEntries);\n resourceEntries.set(deferredResource.target, { base: deferredResource.base, root: deferredResource.root });\n return { ...stack, resourceEntries };\n}\nfunction RefNextStackResolved(stack, resolvedResource) {\n return resolvedResource ? Stack.NextStack(stack, resolvedResource.resource) : stack;\n}\nfunction RefNextStack(stack, pendingResource, deferredResource, resolvedResource) {\n const withDeferred = RefNextStackDeferred({ ...stack, pendingResource }, deferredResource);\n const withResolved = RefNextStackResolved(withDeferred, resolvedResource);\n return withResolved;\n}\n// ------------------------------------------------------------------\n// RefResult\n//\n// Builds the final XRefResult. RefResultFound gets the canonical\n// URL, checks if it's remote from the current resource, and looks\n// for a deferred or resolved resource crossing accordingly.\n// RefResultNotFound just advances pendingResource if a schema was\n// found without crossing into a resource.\n// ------------------------------------------------------------------\nfunction RefResultFound(stack, ref, schema) {\n const canonical = CanonicalHref(Stack.NextUri(ref.$ref, stack.referenceBase));\n const isRemote = !Guard.IsEqual(canonical, stack.resourceBase);\n const deferredResource = FindDeferredResource(stack, ref, schema, canonical, isRemote);\n const resolvedResource = isRemote ? FindResolvedResource(stack, canonical, schema) : undefined;\n return { schema, stack: RefNextStack(stack, true, deferredResource, resolvedResource) };\n}\nfunction RefResultNotFound(stack, schema) {\n return { schema, stack: RefNextStack(stack, !Guard.IsUndefined(schema)) };\n}\n// ------------------------------------------------------------------\n// Ref\n//\n// Picks the root to resolve against, and returns a XRefResult\n// containing the resolved schema and the next stack state for\n// subsequent evaluation.\n// ------------------------------------------------------------------\nexport function Ref(stack, ref) {\n const schema = RefInternal(stack.context, RefRoot(stack, ref), stack.referenceBase, ref.$ref);\n return Schema.IsSchemaObject(schema) ? RefResultFound(stack, ref, schema) : RefResultNotFound(stack, schema);\n}\n// ------------------------------------------------------------------\n// RecursiveRef: Draft 2019-09\n//\n// If a $recursiveAnchor is active in scope, it's used as the root\n// instead of the lexical schema, letting the ref bind to the\n// outermost applicable schema rather than the innermost.\n// ------------------------------------------------------------------\nfunction IsRecursiveAnchorInScope(stack) {\n return Schema.IsSchemaObject(stack.lexicalSchema) && Schema.IsRecursiveAnchorTrue(stack.lexicalSchema);\n}\nexport function RecursiveRef(stack, recursiveRef) {\n const schema = IsRecursiveAnchorInScope(stack) ? stack.recursiveAnchor : stack.lexicalSchema;\n return RefInternal(stack.context, schema, stack.lexicalBase, recursiveRef.$recursiveRef);\n}\n// ------------------------------------------------------------------\n// DynamicRef: Draft 2020-12\n//\n// FindScopedDynamicAnchor checks anchors tracked on the stack first,\n// then falls back to a full tree search. If RefInternal finds a target\n// directly, DynamicRefWhenFound only continues the scoped search when\n// that target itself has a $dynamicAnchor. If RefInternal finds nothing,\n// DynamicRefWhenNotFound goes straight to a scoped anchor search\n// by name.\n// ------------------------------------------------------------------\nfunction DynamicRefFragment(stack, dynamicRef) {\n return Stack.NextUri(dynamicRef.$dynamicRef, AbsoluteBase(stack.lexicalBase).href).hash;\n}\nfunction FindScopedDynamicAnchor(stack, name) {\n return stack.dynamicAnchors.find((anchor) => Guard.IsEqual(anchor.$dynamicAnchor, name)) ?? SearchDynamicAnchor(stack.schema, name);\n}\nfunction DynamicRefWhenFound(stack, dynamicRef, fragmentTarget) {\n if (!Schema.IsSchemaObject(fragmentTarget) || !Schema.IsDynamicAnchor(fragmentTarget))\n return fragmentTarget;\n const fragment = DynamicRefFragment(stack, dynamicRef);\n return IsPointerFragment(fragment) ? fragmentTarget : FindScopedDynamicAnchor(stack, fragmentTarget.$dynamicAnchor);\n}\nfunction DynamicRefWhenNotFound(stack, dynamicRef) {\n const fragment = DynamicRefFragment(stack, dynamicRef);\n // (review): We never observe this condition, but should be able to reach here in coverage.\n // if (IsPointerFragment(fragment) || !fragment.startsWith('#')) return undefined\n return FindScopedDynamicAnchor(stack, decodeURIComponent(fragment.slice(1)));\n}\nexport function DynamicRef(stack, dynamicRef) {\n const fragmentRoot = dynamicRef.$dynamicRef.startsWith('#') ? stack.lexicalSchema : stack.schema;\n const fragmentTarget = RefInternal(stack.context, fragmentRoot, stack.lexicalBase, dynamicRef.$dynamicRef);\n return Guard.IsUndefined(fragmentTarget) ? DynamicRefWhenNotFound(stack, dynamicRef) : DynamicRefWhenFound(stack, dynamicRef, fragmentTarget);\n}\n","// deno-fmt-ignore-file\nimport * as Schema from '../types/index.mjs';\nimport * as Functions from './_functions.mjs';\nimport { Resolve } from '../resolve/index.mjs';\nimport { CheckSchema, ErrorSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildDynamicRef(stack, context, schema, value) {\n const target = Resolve.DynamicRef(stack, schema) ?? false;\n const nextStack = target ? { ...stack, pendingResource: true } : stack;\n return Functions.CreateFunction(nextStack, context, target, value);\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckDynamicRef(stack, context, schema, value) {\n const target = Resolve.DynamicRef(stack, schema) ?? false;\n const nextStack = target ? { ...stack, pendingResource: true } : stack;\n return (Schema.IsSchema(target) && CheckSchema(nextStack, context, target, value));\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorDynamicRef(stack, context, schemaPath, instancePath, schema, value) {\n const target = Resolve.DynamicRef(stack, schema) ?? false;\n const nextStack = target ? { ...stack, pendingResource: true } : stack;\n return (Schema.IsSchema(target) && ErrorSchema(nextStack, context, schemaPath, instancePath, target, value));\n}\n","// deno-fmt-ignore-file\nimport * as Externals from './_externals.mjs';\nimport { Guard as G, EmitGuard as E } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildEnum(_stack, _context, schema, value) {\n return E.ReduceOr(schema.enum.map(option => {\n if (G.IsValueLike(option))\n return E.IsEqual(value, E.Constant(option));\n const variable = Externals.CreateVariable(option);\n return E.IsDeepEqual(value, variable);\n }));\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckEnum(_stack, _context, schema, value) {\n return G.Some(schema.enum, option => G.IsValueLike(option)\n ? G.IsEqual(value, option)\n : G.IsDeepEqual(value, option));\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorEnum(stack, context, schemaPath, instancePath, schema, value) {\n return CheckEnum(stack, context, schema, value) ||\n context.AddError('enum', schemaPath, instancePath, { allowedValues: schema.enum });\n}\n","// deno-fmt-ignore-file\nimport { Guard as G, EmitGuard as E } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildExclusiveMaximum(_stack, _context, schema, value) {\n return E.IsLessThan(value, E.Constant(schema.exclusiveMaximum));\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckExclusiveMaximum(_stack, _context, schema, value) {\n return G.IsLessThan(value, schema.exclusiveMaximum);\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorExclusiveMaximum(stack, context, schemaPath, instancePath, schema, value) {\n return CheckExclusiveMaximum(stack, context, schema, value) ||\n context.AddError('exclusiveMaximum', schemaPath, instancePath, { comparison: '<', limit: schema.exclusiveMaximum });\n}\n","// deno-fmt-ignore-file\nimport { Guard as G, EmitGuard as E } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildExclusiveMinimum(_stack, _context, schema, value) {\n return E.IsGreaterThan(value, E.Constant(schema.exclusiveMinimum));\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckExclusiveMinimum(_stack, _context, schema, value) {\n return G.IsGreaterThan(value, schema.exclusiveMinimum);\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorExclusiveMinimum(stack, context, schemaPath, instancePath, schema, value) {\n return CheckExclusiveMinimum(stack, context, schema, value) ||\n context.AddError('exclusiveMinimum', schemaPath, instancePath, { comparison: '>', limit: schema.exclusiveMinimum });\n}\n","const DAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst DATE = /^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)$/;\nfunction IsLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n/**\n * Returns true if the value is a ISO8601 Date component string\n * @description https://datatracker.ietf.org/doc/html/rfc3339\n * @example `2020-12-12`\n */\nexport function IsDate(value) {\n const matches = DATE.exec(value);\n if (!matches)\n return false;\n const year = +matches[1];\n const month = +matches[2];\n const day = +matches[3];\n return month >= 1 && month <= 12 && day >= 1 && day <= (month === 2 && IsLeapYear(year) ? 29 : DAYS[month]);\n}\n","const TIME = /^(\\d\\d):(\\d\\d):(\\d\\d)(?:\\.\\d+)?(?:([Zz])|([+-])(\\d\\d):(\\d\\d))?$/;\n/**\n * Returns true if the value is an ISO time string\n * @specification https://datatracker.ietf.org/doc/html/rfc3339\n */\nexport function IsTime(value, strictTimeZone = true) {\n const matches = TIME.exec(value);\n if (!matches)\n return false;\n // Require timezone offset or 'Z'/'z' when strictTimeZone is true\n if (strictTimeZone && !matches[4] && !matches[5])\n return false;\n const hr = +matches[1];\n const min = +matches[2];\n const sec = +matches[3];\n if (hr > 23 || min > 59 || sec > 60)\n return false;\n if (matches[5]) {\n const tzH = +matches[6];\n const tzM = +matches[7];\n if (tzH > 23 || tzM > 59)\n return false;\n }\n if (sec < 60)\n return true;\n // Leap second handling: must normalize to 23:59:60 UTC (1439 total UTC minutes)\n const tzSign = matches[5] === '-' ? -1 : 1;\n const tzH = +(matches[6] || 0);\n const tzM = +(matches[7] || 0);\n const totalUtcMin = (hr * 60 + min) - tzSign * (tzH * 60 + tzM);\n return (totalUtcMin % 1440 + 1440) % 1440 === 1439;\n}\n","import { IsDate } from './date.mjs';\nimport { IsTime } from './time.mjs';\n/**\n * Returns true if the value is a ISO8601 DateTime string\n * @specification https://datatracker.ietf.org/doc/html/rfc3339\n * @example `2020-12-12T20:20:40+00:00`\n */\nexport function IsDateTime(value) {\n const dateTime = value.split(/T/i);\n return dateTime.length === 2 && IsDate(dateTime[0]) && IsTime(dateTime[1]);\n}\n","const Duration = /^P((\\d+Y(\\d+M(\\d+D)?)?|\\d+M(\\d+D)?|\\d+D)(T(\\d+H(\\d+M(\\d+S)?)?|\\d+M(\\d+S)?|\\d+S))?|T(\\d+H(\\d+M(\\d+S)?)?|\\d+M(\\d+S)?|\\d+S)|\\d+W)$/;\n/**\n * Returns true if the value is a valid ISO-8601 duration.\n * @specification https://tools.ietf.org/html/rfc3339\n */\nexport function IsDuration(value) {\n return Duration.test(value);\n}\n","const Email = /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[^\"\\\\]|\\\\[\\x20-\\x7e])*\")@(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*|\\[(?:IPv6:[a-f0-9:]+|(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(?:\\.(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3})\\])$/i;\n/**\n * Returns true if the value is an Email\n * @specification https://datatracker.ietf.org/doc/html/rfc5322\n */\nexport function IsEmail(value) {\n return Email.test(value);\n}\n","// deno-fmt-ignore-file\n// -------------------------------------------------------------------\n// Validation Rules\n// -------------------------------------------------------------------\nexport const RE_RULE_HYPHEN_PLACEMENT = /^(?!-).*(?<!-)$/;\nexport const RE_RULE_NOT_RESERVED_ACE = /^(?!..--)/;\nexport const RE_ASCII_LDH = /^[a-zA-Z0-9-]*$/;\n// -------------------------------------------------------------------\n// ASCII & Encoding\n// -------------------------------------------------------------------\nexport const RE_ASCII = /^\\p{ASCII}*$/u;\nexport const RE_NON_ASCII = /[^\\p{ASCII}]/u;\n// -------------------------------------------------------------------\n// Structural & Unicode Controls\n// -------------------------------------------------------------------\nexport const RE_HIGH_SURROGATE = /[\\u{d800}-\\u{dbff}]/u;\nexport const RE_REGIONAL_INDICATOR = /[\\u{1f1e6}-\\u{1f1ff}]/u;\nexport const RE_VARIATION_SELECTOR = /[\\u{fe00}-\\u{fe0f}]/u;\nexport const RE_ZERO_WIDTH_JOINER = /\\u{200d}/u;\n// -------------------------------------------------------------------\n// Numbers & Digits\n// -------------------------------------------------------------------\nexport const RE_ASCII_DIGIT = /[0-9]/;\nexport const RE_ARABIC_INDIC_DIGIT = /[\\u{0660}-\\u{0669}]/u;\nexport const RE_EXT_ARABIC_INDIC_DIGIT = /[\\u{06f0}-\\u{06f9}]/u;\n// -------------------------------------------------------------------\n// Separators\n// -------------------------------------------------------------------\nexport const RE_COMMON_SEPARATOR = /[\\u{002e}\\u{002c}\\u{003a}\\u{002f}]/u;\nexport const RE_EUROPEAN_SEPARATOR = /[\\u{002d}\\u{002b}]/u;\n// -------------------------------------------------------------------\n// General Categories\n// -------------------------------------------------------------------\nexport const RE_MARK_NONSPACING = /\\p{Mn}/u;\nexport const RE_MARK_SPACING_COMBINING = /\\p{Mc}/u;\nexport const RE_MARK_ENCLOSING = /\\p{Me}/u;\nexport const RE_COMBINING_MARK = /[\\p{Mn}\\p{Mc}\\p{Me}]/u;\nexport const RE_LETTER = /\\p{L}/u;\nexport const RE_NUMBER_DECIMAL = /\\p{Nd}/u;\n// -------------------------------------------------------------------\n// Scripts\n// -------------------------------------------------------------------\nexport const RE_SCRIPT_GREEK = /\\p{Script=Greek}/u;\nexport const RE_SCRIPT_HEBREW = /\\p{Script=Hebrew}/u;\nexport const RE_SCRIPT_JAPANESE = /[\\p{Script=Hiragana}\\p{Script=Katakana}\\p{Script=Han}]/u;\nexport const RE_SCRIPT_ARABIC_LETTER = /[\\p{Script=Arabic}\\p{Script=Syriac}\\p{Script=Thaana}\\p{Script=Mandaic}]/u;\n// -------------------------------------------------------------------\n// RFC Specifications & Context Exceptions\n// -------------------------------------------------------------------\nexport const RE_VIRAMA = /[\\u{094d}\\u{09cd}\\u{0a4d}\\u{0acd}\\u{0b4d}\\u{0bcd}\\u{0c4d}\\u{0ccd}\\u{0d3b}\\u{0d3c}\\u{0d4d}\\u{0dca}\\u{1b44}\\u{1baa}\\u{1bab}\\u{a9c0}\\u{11046}\\u{1107f}\\u{110b9}\\u{11133}\\u{11134}\\u{111c0}\\u{11235}\\u{1134d}\\u{11442}\\u{114c2}\\u{115bf}\\u{1163f}\\u{116b6}\\u{11c3f}\\u{11d44}\\u{11d45}]/u;\nexport const RE_RFC5892_DISALLOWED = /[\\u{0640}\\u{07fa}\\u{302e}\\u{302f}\\u{3031}\\u{3032}\\u{3033}\\u{3034}\\u{3035}\\u{303b}]/u;\nexport const RE_CONTEXTO_EXCEPTIONS = /[\\u{00b7}\\u{0375}\\u{05f3}\\u{05f4}\\u{200c}\\u{200d}\\u{30fb}]/u;\nexport const RE_PVALID_EXCEPTIONS = /[\\u{00df}\\u{03c2}\\u{06fd}\\u{06fe}\\u{0f0b}\\u{3007}]/u;\n// -------------------------------------------------------------------\n// Composite Patterns\n// -------------------------------------------------------------------\nexport const RE_EUROPEAN_NUMBER = new RegExp([\n RE_ASCII_DIGIT,\n RE_EXT_ARABIC_INDIC_DIGIT\n].map((regexp) => regexp.source).join('|'), 'u');\nexport const RE_PERMITTED_CATEGORY = new RegExp([\n RE_LETTER,\n RE_EUROPEAN_SEPARATOR,\n RE_COMMON_SEPARATOR,\n RE_NUMBER_DECIMAL,\n RE_MARK_NONSPACING,\n RE_MARK_SPACING_COMBINING,\n RE_CONTEXTO_EXCEPTIONS,\n RE_PVALID_EXCEPTIONS\n].map((regexp) => regexp.source).join('|'), 'u');\n","import * as Pattern from '../pattern/pattern.mjs';\n// -------------------------------------------------------------------\n// Validates an ASCII LDH label per RFC 5891 §4.2.3.1\n// -------------------------------------------------------------------\nexport function IsAsciiLabel(value) {\n return (Pattern.RE_RULE_HYPHEN_PLACEMENT.test(value) &&\n Pattern.RE_RULE_NOT_RESERVED_ACE.test(value) &&\n Pattern.RE_ASCII_LDH.test(value));\n}\n","import * as Pattern from '../pattern/pattern.mjs';\n// ------------------------------------------------------------------\n// PunyCode (RFC 3492)\n// ------------------------------------------------------------------\nconst PUNYCODE_BASE = 36;\nconst PUNYCODE_TMIN = 1;\nconst PUNYCODE_TMAX = 26;\nconst PUNYCODE_SKEW = 38;\nconst PUNYCODE_DAMP = 700;\nconst PUNYCODE_INITIAL_BIAS = 72;\nconst PUNYCODE_INITIAL_N = 128;\n// ------------------------------------------------------------------\n// ThrowDontCare\n// ------------------------------------------------------------------\nfunction ThrowDontCare() {\n throw null;\n}\n// ------------------------------------------------------------------\n// IsAcePrefixed\n// ------------------------------------------------------------------\nexport function IsAcePrefixed(value) {\n return value.toLowerCase().startsWith('xn--');\n}\n// ------------------------------------------------------------------\n// Adapt\n// ------------------------------------------------------------------\nfunction Adapt(delta, numPoints, firstTime) {\n delta = firstTime ? Math.floor(delta / PUNYCODE_DAMP) : delta >> 1;\n delta += Math.floor(delta / numPoints);\n let k = 0;\n while (delta > (((PUNYCODE_BASE - PUNYCODE_TMIN) * PUNYCODE_TMAX) >> 1)) {\n delta = Math.floor(delta / (PUNYCODE_BASE - PUNYCODE_TMIN));\n k += PUNYCODE_BASE;\n }\n return k + Math.floor(((PUNYCODE_BASE - PUNYCODE_TMIN + 1) * delta) / (delta + PUNYCODE_SKEW));\n}\n// ------------------------------------------------------------------\n// Decode\n// ------------------------------------------------------------------\nexport function Decode(value) {\n const output = [];\n let n = PUNYCODE_INITIAL_N;\n let i = 0;\n let bias = PUNYCODE_INITIAL_BIAS;\n const delimIdx = value.lastIndexOf('-');\n if (delimIdx > 0) {\n for (let j = 0; j < delimIdx; j++) {\n const cp = value.charCodeAt(j);\n if (cp >= 128)\n ThrowDontCare(); // throw new Error('Invalid punycode: non-basic before delimiter')\n output.push(cp);\n }\n }\n let inIdx = delimIdx < 0 ? 0 : delimIdx + 1;\n while (inIdx < value.length) {\n const oldi = i;\n let w = 1;\n let k = PUNYCODE_BASE;\n while (true) {\n if (inIdx >= value.length)\n ThrowDontCare(); // throw new Error('Invalid punycode: unexpected end of input')\n const ch = value.charCodeAt(inIdx++);\n let digit;\n if (ch >= 0x61 && ch <= 0x7a)\n digit = ch - 0x61; // a-z => 0-25\n else if (ch >= 0x30 && ch <= 0x39)\n digit = ch - 0x30 + 26; // 0-9 => 26-35\n // else if (ch >= 0x41 && ch <= 0x5a) digit = ch - 0x41 // A-Z => 0-25 // (no-spec-coverage)\n else\n ThrowDontCare(); // throw new Error('Invalid punycode: bad digit character')\n i += digit * w;\n const t = k <= bias ? PUNYCODE_TMIN : k >= bias + PUNYCODE_TMAX ? PUNYCODE_TMAX : k - bias;\n if (digit < t)\n break;\n w *= PUNYCODE_BASE - t;\n k += PUNYCODE_BASE;\n }\n const outLen = output.length + 1;\n bias = Adapt(i - oldi, outLen, oldi === 0);\n n += Math.floor(i / outLen);\n i %= outLen;\n output.splice(i, 0, n);\n i++;\n }\n return String.fromCodePoint(...output);\n}\n// ------------------------------------------------------------------\n// DigitToChar\n// ------------------------------------------------------------------\nfunction DigitToChar(digit) {\n return digit < 26 ? String.fromCharCode(digit + 0x61) : String.fromCharCode(digit - 26 + 0x30);\n}\n// ------------------------------------------------------------------\n// Encode\n//\n// Encodes a Unicode string into its Punycode payload (the part that\n// follows the 'xn--' ACE prefix). Used to compute the true A-label\n// length of a U-label, since the 63-octet label length limit (RFC\n// 5891 §4.2.4) applies to the encoded form, not the code point count.\n// ------------------------------------------------------------------\nconst RE_REPLACE_NON_ASCII = new RegExp(Pattern.RE_NON_ASCII.source, 'gu');\nexport function Encode(input) {\n // Extract basic ASCII characters and set initial output array state\n const basic = input.replace(RE_REPLACE_NON_ASCII, '');\n const basicLength = basic.length;\n const result = basicLength > 0 ? [basic, '-'] : [];\n // Extract unicode codepoints\n const codePoints = Array.from(input, (char) => char.codePointAt(0));\n let n = PUNYCODE_INITIAL_N;\n let delta = 0;\n let bias = PUNYCODE_INITIAL_BIAS;\n let handledCPCount = basicLength;\n while (handledCPCount < codePoints.length) {\n let m = Infinity;\n for (const cp of codePoints) {\n if (cp >= n && cp < m)\n m = cp;\n }\n delta += (m - n) * (handledCPCount + 1);\n n = m;\n for (const cp of codePoints) {\n if (cp < n)\n delta++;\n if (cp === n) {\n let q = delta;\n for (let k = PUNYCODE_BASE;; k += PUNYCODE_BASE) {\n const t = k <= bias ? PUNYCODE_TMIN : k >= bias + PUNYCODE_TMAX ? PUNYCODE_TMAX : k - bias;\n if (q < t)\n break;\n const digit = t + ((q - t) % (PUNYCODE_BASE - t));\n result.push(DigitToChar(digit));\n q = Math.floor((q - t) / (PUNYCODE_BASE - t));\n }\n result.push(DigitToChar(q));\n bias = Adapt(delta, handledCPCount + 1, handledCPCount === basicLength);\n delta = 0;\n handledCPCount++;\n }\n }\n delta++;\n n++;\n }\n return result.join('');\n}\n","// deno-fmt-ignore-file\nimport * as FormatPuny from './puny.mjs';\nimport * as Pattern from '../pattern/pattern.mjs';\n// ------------------------------------------------------------------\n// LOCAL REGEX: Allowed Bidi classes per direction (RFC 5893)\n// ------------------------------------------------------------------\nconst RE_RTL_ALLOWED = /^(?:R|AL|AN|EN|ES|CS|ET|ON|BN|NSM)$/;\nconst RE_LTR_ALLOWED = /^(?:L|EN|ES|CS|ET|ON|BN|NSM)$/;\nconst RE_RTL_CLASSES = /^(?:R|AL|AN)$/;\n// ------------------------------------------------------------------\n// HasBidiChars\n//\n// Decodes a punycode label to its Unicode form (if it is one) and\n// checks whether the result is an RTL label per RFC 5893 §1.4.\n// ------------------------------------------------------------------\nexport function HasBidiChars(value) {\n if (FormatPuny.IsAcePrefixed(value)) {\n try {\n return HasRightToLeftCharacters(FormatPuny.Decode(value.slice(4).toLowerCase()));\n }\n catch {\n return false;\n }\n }\n return HasRightToLeftCharacters(value);\n}\n// ------------------------------------------------------------------\n// GetBidiClass\n// ------------------------------------------------------------------\nfunction GetBidiClass(codePoint) {\n const char = String.fromCodePoint(codePoint);\n return (Pattern.RE_EUROPEAN_NUMBER.test(char) ? 'EN' :\n Pattern.RE_ARABIC_INDIC_DIGIT.test(char) ? 'AN' :\n // Pattern.RE_EUROPEAN_SEPARATOR.test(char) ? 'ES' : // (no-spec-coverage)\n // Pattern.RE_COMMON_SEPARATOR.test(char) ? 'CS' : // (no-spec-coverage)\n Pattern.RE_MARK_NONSPACING.test(char) ? 'NSM' :\n Pattern.RE_SCRIPT_HEBREW.test(char) ? 'R' :\n Pattern.RE_SCRIPT_ARABIC_LETTER.test(char) ? 'AL' :\n Pattern.RE_LETTER.test(char) ? 'L' :\n 'ON');\n}\n// ------------------------------------------------------------------\n// HasRightToLeftCharacters\n//\n// Per RFC 5893 §1.4: \"An RTL label is a label that contains at least\n// one character of type R, AL, or AN.\" Used to determine whether a\n// domain name is a \"Bidi domain name\" (RFC 5893 §1.4), in which case\n// the Bidi Rule applies to every label in the domain.\n// ------------------------------------------------------------------\nexport function HasRightToLeftCharacters(value) {\n for (const ch of value)\n if (RE_RTL_CLASSES.test(GetBidiClass(ch.codePointAt(0))))\n return true;\n return false;\n}\n// ------------------------------------------------------------------\n// SatisfiesBidiRule\n// ------------------------------------------------------------------\nexport function SatisfiesBidiRule(value) {\n let isRtl = false;\n let allowed = RE_LTR_ALLOWED;\n let sawEN = false;\n let sawAN = false;\n let isFirst = true;\n // let lastClass: string | null = null // (no-spec-coverage)\n for (const ch of value) {\n const bidiClass = GetBidiClass(ch.codePointAt(0));\n if (isFirst) {\n // 1. The first character must be a character with Bidi property L, R, or AL.\n if (bidiClass !== 'L' && bidiClass !== 'R' && bidiClass !== 'AL')\n return false;\n isRtl = bidiClass === 'R' || bidiClass === 'AL';\n allowed = isRtl ? RE_RTL_ALLOWED : RE_LTR_ALLOWED;\n isFirst = false;\n }\n // 2 / 5. Only characters in the allowed set for this direction may appear.\n if (!allowed.test(bidiClass))\n return false;\n if (bidiClass === 'EN')\n sawEN = true;\n else if (bidiClass === 'AN')\n sawAN = true;\n // if (bidiClass !== 'NSM') lastClass = bidiClass // (no-spec-coverage)\n }\n if (isRtl && sawEN && sawAN)\n return false; // spec coverage path\n // (no-spec-coverage)\n // if (isRtl) {\n // // 3. The end of the label must be R, AL, EN, or AN (ignoring trailing NSM).\n // // if (lastClass !== 'R' && lastClass !== 'AL' && lastClass !== 'EN' && lastClass !== 'AN') return false\n // // 4. If an EN is present, no AN may be present, and vice versa.\n // if (sawEN && sawAN) return false\n // } else {\n // // 6. The end of the label must be L or EN (ignoring trailing NSM).\n // // if (lastClass !== 'L' && lastClass !== 'EN') return false\n // }\n return true;\n}\n","import * as Pattern from '../pattern/pattern.mjs';\nimport * as FormatBidi from '../format/bidi.mjs';\nimport * as FormatPuny from '../format/puny.mjs';\n// ------------------------------------------------------------------\n// ExceedsMaxALabelLength\n//\n// RFC 5890 §2.3.2.1: an A-label (the ACE-encoded form of a label,\n// \"xn--\" + punycode) must not exceed 63 octets. Only labels\n// containing non-ASCII characters need checking - a pure-ASCII label\n// has no \"xn--\" prefix and is used as-is, so its punycode-encoded\n// length is irrelevant. The ASCII check is a cheap short-circuit that\n// avoids running the punycode encoder on labels that don't need it.\n// ------------------------------------------------------------------\nfunction ExceedsMaxALabelLength(value) {\n return Pattern.RE_NON_ASCII.test(value) && FormatPuny.Encode(value).length + 4 > 63;\n}\n// ------------------------------------------------------------------\n// HasInvalidHyphens\n//\n// RFC 5891 §4.2.3.2: label must not start or end with a hyphen, and\n// must not have hyphens in the 3rd and 4th codepoint positions (the\n// ACE prefix reservation, e.g. \"xn--\"). Operates on `chars` (the\n// per-codepoint string array) rather than raw string indices so\n// supplementary-plane characters earlier in the label don't throw\n// off the codepoint-position count.\n// ------------------------------------------------------------------\nfunction HasInvalidHyphens(chars) {\n if (chars[0] === '-' || chars[chars.length - 1] === '-')\n return true;\n return chars.slice(2).join('').startsWith('--');\n}\n// ------------------------------------------------------------------\n// IsUnicodeLabel\n// ------------------------------------------------------------------\nexport function IsUnicodeLabel(value) {\n // RFC 5890 §2.3.2.1: Ensure Max Length\n if (ExceedsMaxALabelLength(value))\n return false;\n // RFC 5893 - Bidi Rule (applies whenever this label itself is RTL)\n if (FormatBidi.HasRightToLeftCharacters(value) && !FormatBidi.SatisfiesBidiRule(value))\n return false;\n const chars = [...value];\n const codePoints = chars.map((c) => c.codePointAt(0));\n const length = codePoints.length;\n // RFC 5891 §4.2.3.2: Hyphen rules\n if (HasInvalidHyphens(chars))\n return false;\n // RFC 5891 §4.2.3.2 - Must not begin with a combining mark\n if (Pattern.RE_COMBINING_MARK.test(chars[0]))\n return false;\n let hasJapanese = false;\n // let hasArabicIndic = false // (no-spec-coverage)\n // let hasExtendedArabicIndic = false // (no-spec-coverage)\n for (let i = 0; i < length; i++) {\n const codePoint = codePoints[i];\n const char = chars[i];\n // 1. DISALLOWED exceptions\n if (Pattern.RE_RFC5892_DISALLOWED.test(char))\n return false;\n // 1b. General category (PVALID) enforcement\n if (!Pattern.RE_PERMITTED_CATEGORY.test(char))\n return false;\n // 2. Collect Flags\n if (Pattern.RE_SCRIPT_JAPANESE.test(char))\n hasJapanese = true;\n // if (Pattern.RE_ARABIC_INDIC_DIGIT.test(char)) hasArabicIndic = true // (no-spec-coverage)\n // if (Pattern.RE_EXT_ARABIC_INDIC_DIGIT.test(char)) hasExtendedArabicIndic = true // (no-spec-coverage)\n // 3. CONTEXTO / CONTEXTJ Neighbor Rules\n const prev = codePoints[i - 1], next = codePoints[i + 1];\n switch (codePoint) {\n case 0x00b7:\n if (prev !== 0x006c || next !== 0x006c)\n return false;\n break; // MIDDLE DOT (Catalan)\n case 0x0375:\n if (!next || !Pattern.RE_SCRIPT_GREEK.test(chars[i + 1]))\n return false;\n break; // Greek KERAIA\n case 0x05f3:\n case 0x05f4:\n if (!prev || !Pattern.RE_SCRIPT_HEBREW.test(chars[i - 1]))\n return false;\n break; // Hebrew GERESH\n case 0x200c: // ZWNJ - RFC 5892 Appendix A.1\n // Note: Full validation requires a Unicode joining type table. We reject\n // only when preceded by ASCII (U+0000-U+007F), which can never satisfy\n // the Virama or cursive-joining rules.\n if (!prev || (prev < 0x0080 && !Pattern.RE_VIRAMA.test(chars[i - 1])))\n return false;\n break;\n case 0x200d: // ZWJ: RFC 5892 Appendix A.2\n if (!prev || !Pattern.RE_VIRAMA.test(chars[i - 1]))\n return false;\n break;\n case 0x30fb: // Checked at end via hasJapanese\n break; // KATAKANA MIDDLE DOT\n }\n }\n // 4. Global Context Validations (Post-loop)\n // RFC 5892 Appendix A.7 - Katakana Middle Dot requirement\n if (value.includes('\\u30fb') && !hasJapanese)\n return false;\n // RFC 5892 Appendix A.8/A.9 - Mixing Arabic Digits\n // if (hasArabicIndic && hasExtendedArabicIndic) return false // (no-spec-coverage)\n return true;\n}\n","import * as FormatPuny from '../format/puny.mjs';\nimport * as LabelUnicode from './unicode.mjs';\nimport * as Pattern from '../pattern/pattern.mjs';\n// ------------------------------------------------------------------\n// IsPunyLabel\n// ------------------------------------------------------------------\nexport function IsPunyLabel(value) {\n if (!FormatPuny.IsAcePrefixed(value))\n return false;\n try {\n const body = value.slice(4).toLowerCase();\n // A payload consisting of only a hyphen, or starting with the delimiter\n // (like \"-9uc\"), has 0 basic ASCII characters preceding it and is malformed.\n if (body.lastIndexOf('-') === 0)\n return false;\n const decoded = FormatPuny.Decode(body);\n // RFC 5890 §2.3.2.1 - a U-label must contain at least one non-ASCII\n // character. Code-unit level check: any non-ASCII codepoint has at least\n // one UTF-16 unit >= 0x80 (surrogate halves included), so no need to\n // decode codepoints or allocate a character array to answer this.\n if (!Pattern.RE_NON_ASCII.test(decoded))\n return false;\n return LabelUnicode.IsUnicodeLabel(decoded);\n }\n catch {\n return false;\n }\n}\n","import * as LabelAscii from './label/ascii.mjs';\nimport * as LabelPuny from './label/puny.mjs';\nfunction IsValidLabelLength(value) {\n return value.length > 0 && value.length <= 63;\n}\nfunction IsLabel(value) {\n return IsValidLabelLength(value) && (LabelPuny.IsPunyLabel(value) ||\n LabelAscii.IsAsciiLabel(value));\n}\nexport function IsHostname(value) {\n if (value.length === 0 || value.length > 253)\n return false;\n if (value.charCodeAt(value.length - 1) === 46)\n return false;\n return value.split('.').every((label) => IsLabel(label));\n}\n","import * as FormatBidi from './format/bidi.mjs';\nimport * as LabelUnicode from './label/unicode.mjs';\nimport * as LabelPuny from './label/puny.mjs';\n// ------------------------------------------------------------------\n// IsLabel\n// ------------------------------------------------------------------\nfunction IsValidLabelLength(value) {\n return value.length > 0 && value.length <= 63;\n}\nfunction IsLabel(value) {\n return IsValidLabelLength(value) && (LabelPuny.IsPunyLabel(value) ||\n LabelUnicode.IsUnicodeLabel(value));\n}\n// ------------------------------------------------------------------\n// NormalizeHostname\n//\n// Normalizes a hostname for label validation. Maps fullwidth\n// codepoints to their ASCII equivalent (e.g. 'a' U+FF41 maps to\n// 'a'), then normalizes for NFC such that equivalent codepoint\n// sequences can be uniformly compared. It also removes codepoints\n// that IDNA mapping ignores, and converts full stop variants to\n// ASCII '.' so the hostname can be split into labels.\n// ------------------------------------------------------------------\nfunction NormalizeHostname(value) {\n return value\n .replace(/[\\uff01-\\uff5e]/g, (char) => String.fromCharCode(char.charCodeAt(0) - 0xfee0)) // RE_FULLWIDTH_MAPPING\n .normalize('NFC')\n .replace(/[\\u00ad\\u034f\\u180b-\\u180d\\u200b\\ufe00-\\ufe0f\\u{e0100}-\\u{e01ef}]/gu, '') // RE_IGNORED_MAPPING\n .replace(/[\\u002E\\u3002\\uFF0E\\uFF61]/g, '.'); // RE_FULL_STOP_MAPPING\n}\n// ------------------------------------------------------------------\n// IsIdnHostname\n// ------------------------------------------------------------------\nexport function IsIdnHostname(value) {\n if (value.length === 0 || value.includes(' '))\n return false;\n const normalized = NormalizeHostname(value);\n if (normalized.length > 253)\n return false;\n const labels = normalized.split('.');\n const hasBidiChars = labels.some((label) => FormatBidi.HasBidiChars(label));\n return labels.every((label) => IsLabel(label) && (!hasBidiChars || FormatBidi.SatisfiesBidiRule(label)));\n}\n","import * as Idna from './idna/index.mjs';\n/**\n * Returns true if the value is a valid hostname.\n * @specification https://tools.ietf.org/html/rfc1123\n * @specification https://tools.ietf.org/html/rfc5891\n * @specification https://tools.ietf.org/html/rfc5892\n */\nexport function IsHostname(value) {\n return Idna.IsHostname(value);\n}\n","const IdnEmail = /^(?:[A-Za-z0-9!#$%&'*+\\/=?^_`{|}~\\u{0080}-\\u{10FFFF}-]+(?:\\.[A-Za-z0-9!#$%&'*+\\/=?^_`{|}~\\u{0080}-\\u{10FFFF}-]+)*|\"(?:[^\"\\\\]|\\\\.)*\")@[\\p{L}\\p{N}](?:[\\p{L}\\p{N}-]{0,62})(?<!-)(?:\\.[\\p{L}\\p{N}](?:[\\p{L}\\p{N}-]{0,62})(?<!-))*$/iu;\n/**\n * Returns true if the value is an IdnEmail\n * @specification https://datatracker.ietf.org/doc/html/rfc4952\n */\nexport function IsIdnEmail(value) {\n return IdnEmail.test(value.normalize('NFC'));\n}\n","import * as Idna from './idna/index.mjs';\n/**\n * Returns true if the value is a valid internationalized (IDN) hostname.\n * @specification https://tools.ietf.org/html/rfc3490\n * @specification https://tools.ietf.org/html/rfc5891\n * @specification https://tools.ietf.org/html/rfc5892\n * @specification https://tools.ietf.org/html/rfc5893\n */\nexport function IsIdnHostname(value) {\n return Idna.IsIdnHostname(value);\n}\n","const IPv4 = /^(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)$/;\n/**\n * Returns true if the value is a IPV4 address\n * @specification http://tools.ietf.org/html/rfc2673#section-3.2\n */\nexport function IsIPv4(value) {\n return IPv4.test(value);\n}\n","const IPv6 = /^(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:)?[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)$/i;\n/**\n * Returns true if the value is an IPv6 address\n * @specification http://tools.ietf.org/html/rfc2373#section-2.2\n */\nexport function IsIPv6(value) {\n return IPv6.test(value);\n}\n","// deno-lint-ignore-file no-control-regex\n// Rejects unencoded spaces (0x20), backslashes, control characters (0x00-0x1F, 0x7F), or malformed percent-encodings\nconst InvalidIriChars = /[\\x00-\\x20\\x7F\\\\]|%(?![0-9a-fA-F]{2})/;\n// Detects malformed scheme/authority patterns lacking a colon (e.g. \"httpx//example.com\")\nconst MalformedScheme = /^[a-zA-Z][a-zA-Z0-9+\\-.]*\\/\\//;\n/**\n * Returns true if the value is an IRI reference\n * @specification https://tools.ietf.org/html/rfc3987\n */\nexport function IsIriReference(value) {\n return (!InvalidIriChars.test(value) &&\n !MalformedScheme.test(value) &&\n URL.canParse(value, 'http://example.com'));\n}\n","// deno-lint-ignore-file no-control-regex\n// ------------------------------------------------------------------\n//\n// Removed by the following PR\n//\n// https://github.com/json-schema-org/JSON-Schema-Test-Suite/pull/1176\n//\n// NarrowIpvFuture\n//\n// Substitutes an IPvFuture address with a standard IPv6 loopback\n// address ([::1]). We do this because the native URL.canParse\n// (WHATWG standard) rejects IPvFuture literals, which are\n// otherwise valid in RFC 3987. Because regex substitution can\n// be expensive on large strings, this operation is strictly\n// limited to inputs under a defined length threshold.\n//\n// ------------------------------------------------------------------\n//\n// const IpvFutureMatchMaxLength = 2048\n// const IpvFutureMatch = /\\[[vV][0-9a-fA-F]+\\.[^\\]]+\\]/ // Guarded By IpvFutureMatchMaxLength\n//\n// function NarrowIpvFuture(value: string): string {\n// return value.length < IpvFutureMatchMaxLength ? value.replace(IpvFutureMatch, '[::1]') : value\n// }\n//\n// ------------------------------------------------------------------\nconst InvalidIriChars = /[\\x00-\\x20<>\\^`{|}\\\\]/;\nconst InvalidPercentEncoding = /%(?![0-9a-fA-F]{2})/;\n/**\n * Returns true if the value is a valid Internationalized Resource Identifier.\n * @specification https://datatracker.ietf.org/doc/html/rfc3987\n */\nexport function IsIri(value) {\n // 1. Reject strings containing unencoded whitespace or illegal control characters.\n if (InvalidIriChars.test(value))\n return false;\n // 2. Reject malformed percent-encoding triplets.\n if (InvalidPercentEncoding.test(value))\n return false;\n // 3. Delegate to the native URL parser, patching the IPvFuture edge case beforehand.\n return URL.canParse(value);\n}\n","const JsonPointerUriFragment = /^#(?:\\/(?:[a-z0-9_\\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i;\n/**\n * Returns true if the value is a json pointer uri fragment\n * @specification https://datatracker.ietf.org/doc/html/rfc6901\n * @source https://github.com/ajv-validator/ajv-formats\n */\nexport function IsJsonPointerUriFragment(value) {\n return JsonPointerUriFragment.test(value);\n}\n","const JsonPointer = /^(?:\\/(?:[^~/]|~0|~1)*)*$/;\n/**\n * Returns true if the value is a json pointer\n * @specification https://datatracker.ietf.org/doc/html/rfc6901\n * @source https://github.com/ajv-validator/ajv-formats\n */\nexport function IsJsonPointer(value) {\n return JsonPointer.test(value);\n}\n","/**\n * Returns true if the value is a regular expression string pattern\n * @specification https://ecma-international.org/ecma-262\n */\nexport function IsRegex(value) {\n try {\n new RegExp(value, 'u');\n return true;\n }\n catch {\n return false;\n }\n}\n","const RelativeJsonPointer = /^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~/]|~0|~1)*)*)$/;\n/**\n * Returns true if the value is a relative json pointer\n * @specification https://datatracker.ietf.org/doc/html/rfc6901\n * @source https://github.com/ajv-validator/ajv-formats\n */\nexport function IsRelativeJsonPointer(value) {\n return RelativeJsonPointer.test(value);\n}\n","const UriReference = /^(?:[a-z][a-z0-9+\\-.]*:(?:\\/\\/(?:(?:[-a-z0-9._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:[\\da-f]{1,4}:){6}(?:[\\da-f]{1,4}:[\\da-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d))|::(?:[\\da-f]{1,4}:){5}(?:[\\da-f]{1,4}:[\\da-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d))|(?:[\\da-f]{1,4})?::(?:[\\da-f]{1,4}:){4}(?:[\\da-f]{1,4}:[\\da-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d))|(?:(?:[\\da-f]{1,4}:){0,1}[\\da-f]{1,4})?::(?:[\\da-f]{1,4}:){3}(?:[\\da-f]{1,4}:[\\da-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d))|(?:(?:[\\da-f]{1,4}:){0,2}[\\da-f]{1,4})?::(?:[\\da-f]{1,4}:){2}(?:[\\da-f]{1,4}:[\\da-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d))|(?:(?:[\\da-f]{1,4}:){0,3}[\\da-f]{1,4})?::[\\da-f]{1,4}:(?:[\\da-f]{1,4}:[\\da-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d))|(?:(?:[\\da-f]{1,4}:){0,4}[\\da-f]{1,4})?::(?:[\\da-f]{1,4}:[\\da-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d))|(?:(?:[\\da-f]{1,4}:){0,5}[\\da-f]{1,4})?::[\\da-f]{1,4}|(?:(?:[\\da-f]{1,4}:){0,6}[\\da-f]{1,4})?::)|v[0-9a-f]+\\.[-a-z0-9._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)|(?:[-a-z0-9._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[-a-z0-9._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[-a-z0-9._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[-a-z0-9._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[-a-z0-9._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[-a-z0-9._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:\\/\\/(?:(?:[-a-z0-9._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:[\\da-f]{1,4}:){6}(?:[\\da-f]{1,4}:[\\da-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d))|::(?:[\\da-f]{1,4}:){5}(?:[\\da-f]{1,4}:[\\da-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d))|(?:[\\da-f]{1,4})?::(?:[\\da-f]{1,4}:){4}(?:[\\da-f]{1,4}:[\\da-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d))|(?:(?:[\\da-f]{1,4}:){0,1}[\\da-f]{1,4})?::(?:[\\da-f]{1,4}:){3}(?:[\\da-f]{1,4}:[\\da-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d))|(?:(?:[\\da-f]{1,4}:){0,2}[\\da-f]{1,4})?::(?:[\\da-f]{1,4}:){2}(?:[\\da-f]{1,4}:[\\da-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d))|(?:(?:[\\da-f]{1,4}:){0,3}[\\da-f]{1,4})?::[\\da-f]{1,4}:(?:[\\da-f]{1,4}:[\\da-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d))|(?:(?:[\\da-f]{1,4}:){0,4}[\\da-f]{1,4})?::(?:[\\da-f]{1,4}:[\\da-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d))|(?:(?:[\\da-f]{1,4}:){0,5}[\\da-f]{1,4})?::[\\da-f]{1,4}|(?:(?:[\\da-f]{1,4}:){0,6}[\\da-f]{1,4})?::)|v[0-9a-f]+\\.[-a-z0-9._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)|(?:[-a-z0-9._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[-a-z0-9._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[-a-z0-9._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[-a-z0-9._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[-a-z0-9._~!$&'()*+,;=@]|%[0-9a-f]{2})+(?:\\/(?:[-a-z0-9._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?)(?:\\?(?:[-a-z0-9._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[-a-z0-9._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;\n/**\n * Returns true if the value is a valid Uri Reference.\n * @specification https://tools.ietf.org/html/rfc3986\n */\nexport function IsUriReference(value) {\n return UriReference.test(value);\n}\n","// deno-lint-ignore-file no-control-regex\nconst UriTemplate = /^(?:(?:[^\\x00-\\x20\"<>%\\\\^`{|}\\x7f]|%[0-9a-f]{2})|\\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?:\\.(?:[a-z0-9_]|%[0-9a-f]{2})+)*(?::[1-9]\\d{0,3}|\\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?:\\.(?:[a-z0-9_]|%[0-9a-f]{2})+)*(?::[1-9]\\d{0,3}|\\*)?)*\\})*$/i;\n/**\n * Returns true if the value is a valid Uri Template\n * @specification https://datatracker.ietf.org/doc/html/rfc6570\n */\nexport function IsUriTemplate(value) {\n return UriTemplate.test(value);\n}\n","const Uri = /^[a-z][a-z0-9+\\-.]*:(?:\\/\\/(?:(?:[-a-z0-9._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:[\\da-f]{1,4}:){6}(?:[\\da-f]{1,4}:[\\da-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d))|::(?:[\\da-f]{1,4}:){5}(?:[\\da-f]{1,4}:[\\da-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d))|(?:[\\da-f]{1,4})?::(?:[\\da-f]{1,4}:){4}(?:[\\da-f]{1,4}:[\\da-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d))|(?:(?:[\\da-f]{1,4}:){0,1}[\\da-f]{1,4})?::(?:[\\da-f]{1,4}:){3}(?:[\\da-f]{1,4}:[\\da-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d))|(?:(?:[\\da-f]{1,4}:){0,2}[\\da-f]{1,4})?::(?:[\\da-f]{1,4}:){2}(?:[\\da-f]{1,4}:[\\da-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d))|(?:(?:[\\da-f]{1,4}:){0,3}[\\da-f]{1,4})?::[\\da-f]{1,4}:(?:[\\da-f]{1,4}:[\\da-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d))|(?:(?:[\\da-f]{1,4}:){0,4}[\\da-f]{1,4})?::(?:[\\da-f]{1,4}:[\\da-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d))|(?:(?:[\\da-f]{1,4}:){0,5}[\\da-f]{1,4})?::[\\da-f]{1,4}|(?:(?:[\\da-f]{1,4}:){0,6}[\\da-f]{1,4})?::)|v[0-9a-f]+\\.[-a-z0-9._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)|(?:[-a-z0-9._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[-a-z0-9._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[-a-z0-9._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[-a-z0-9._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[-a-z0-9._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[-a-z0-9._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\\?(?:[-a-z0-9._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[-a-z0-9._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;\n/**\n * Returns true if the value is a valid Uniform Resource Identifier.\n * @specification https://tools.ietf.org/html/rfc3986\n */\nexport function IsUri(value) {\n return Uri.test(value);\n}\n","/**\n * Returns true if the value is a valid Uniform Resource Locator\n * @specification https://datatracker.ietf.org/doc/html/rfc3986\n * @specification https://datatracker.ietf.org/doc/html/rfc3987\n */\nexport function IsUrl(value) {\n return URL.canParse(value);\n}\n","const Uuid = /^[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i;\n/**\n * Returns true if the value is a uuid\n * @specification https://www.rfc-editor.org/info/rfc4122/\n * @specification https://www.rfc-editor.org/info/rfc9562/\n */\nexport function IsUuid(value) {\n return Uuid.test(value);\n}\n","import { IsDateTime } from './date_time.mjs';\nimport { IsDate } from './date.mjs';\nimport { IsDuration } from './duration.mjs';\nimport { IsEmail } from './email.mjs';\nimport { IsHostname } from './hostname.mjs';\nimport { IsIdnEmail } from './idn_email.mjs';\nimport { IsIdnHostname } from './idn_hostname.mjs';\nimport { IsIPv4 } from './ipv4.mjs';\nimport { IsIPv6 } from './ipv6.mjs';\nimport { IsIriReference } from './iri_reference.mjs';\nimport { IsIri } from './iri.mjs';\nimport { IsJsonPointerUriFragment } from './json_pointer_uri_fragment.mjs';\nimport { IsJsonPointer } from './json_pointer.mjs';\nimport { IsRegex } from './regex.mjs';\nimport { IsRelativeJsonPointer } from './relative_json_pointer.mjs';\nimport { IsTime } from './time.mjs';\nimport { IsUriReference } from './uri_reference.mjs';\nimport { IsUriTemplate } from './uri_template.mjs';\nimport { IsUri } from './uri.mjs';\nimport { IsUrl } from './url.mjs';\nimport { IsUuid } from './uuid.mjs';\n// ------------------------------------------------------------------\n// Formats\n// ------------------------------------------------------------------\nconst formats = new Map();\n// ------------------------------------------------------------------\n// Clear\n// ------------------------------------------------------------------\n/** Clears all entries */\nexport function Clear() {\n formats.clear();\n}\n// ------------------------------------------------------------------\n// Entries\n// ------------------------------------------------------------------\n/** Returns format entries in this registry */\nexport function Entries() {\n return [...formats.entries()];\n}\n// ------------------------------------------------------------------\n// Set\n// ------------------------------------------------------------------\n/** Sets a format */\nexport function Set(format, check) {\n formats.set(format, check);\n}\n// ------------------------------------------------------------------\n// Has\n// ------------------------------------------------------------------\n/** Returns true if the registry has this format */\nexport function Has(format) {\n return formats.has(format);\n}\n// ------------------------------------------------------------------\n// Get\n// ------------------------------------------------------------------\n/** Gets a format or undefined if not exists */\nexport function Get(format) {\n return formats.get(format);\n}\n// ------------------------------------------------------------------\n// Test\n// ------------------------------------------------------------------\n/** Tests a value against a format, if the format is not registered, true */\nexport function Test(format, value) {\n return formats.get(format)?.(value) ?? true;\n}\n// ------------------------------------------------------------------\n// Reset\n// ------------------------------------------------------------------\n/** Resets all formats to defaults */\nexport function Reset() {\n Clear();\n formats.set('date-time', IsDateTime);\n formats.set('date', IsDate);\n formats.set('duration', IsDuration);\n formats.set('email', IsEmail);\n formats.set('hostname', IsHostname);\n formats.set('idn-email', IsIdnEmail);\n formats.set('idn-hostname', IsIdnHostname);\n formats.set('ipv4', IsIPv4);\n formats.set('ipv6', IsIPv6);\n formats.set('iri-reference', IsIriReference);\n formats.set('iri', IsIri);\n formats.set('json-pointer-uri-fragment', IsJsonPointerUriFragment);\n formats.set('json-pointer', IsJsonPointer);\n formats.set('regex', IsRegex);\n formats.set('relative-json-pointer', IsRelativeJsonPointer);\n formats.set('time', IsTime);\n formats.set('uri-reference', IsUriReference);\n formats.set('uri-template', IsUriTemplate);\n formats.set('uri', IsUri);\n formats.set('url', IsUrl);\n formats.set('uuid', IsUuid);\n}\nReset();\n","// deno-fmt-ignore-file\nimport * as Externals from './_externals.mjs';\nimport { Format } from '../../format/index.mjs';\nimport { EmitGuard as E } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build (Remote)\n// ------------------------------------------------------------------\n// export function BuildFormat(_stack: Stack.XStack, _context: BuildContext, schema: Schema.XFormat, value: string): string {\n// return E.Call(E.Member('Format', 'Test'), [E.Constant(schema.format), value])\n// }\n// ------------------------------------------------------------------\n// Build (Inline)\n// ------------------------------------------------------------------\nexport function BuildFormat(_stack, _context, schema, value) {\n return Format.Has(schema.format) ? E.Call(Externals.CreateVariable(Format.Get(schema.format)), [value]) : E.Constant(true);\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckFormat(_stack, _context, schema, value) {\n return Format.Test(schema.format, value);\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorFormat(stack, context, schemaPath, instancePath, schema, value) {\n return CheckFormat(stack, context, schema, value) ||\n context.AddError('format', schemaPath, instancePath, { format: schema.format });\n}\n","// deno-fmt-ignore-file\nimport * as Schema from '../types/index.mjs';\nimport { ErrorContext } from './_context.mjs';\nimport { BuildSchema, CheckSchema, ErrorSchema } from './schema.mjs';\nimport { EmitGuard as E } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildIf(stack, context, schema, value) {\n const thenSchema = Schema.IsThen(schema) ? schema.then : true;\n const elseSchema = Schema.IsElse(schema) ? schema.else : true;\n return E.Ternary(BuildSchema(stack, context, schema.if, value), BuildSchema(stack, context, thenSchema, value), BuildSchema(stack, context, elseSchema, value));\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckIf(stack, context, schema, value) {\n const thenSchema = Schema.IsThen(schema) ? schema.then : true;\n const elseSchema = Schema.IsElse(schema) ? schema.else : true;\n return CheckSchema(stack, context, schema.if, value)\n ? CheckSchema(stack, context, thenSchema, value)\n : CheckSchema(stack, context, elseSchema, value);\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorIf(stack, context, schemaPath, instancePath, schema, value) {\n const thenSchema = Schema.IsThen(schema) ? schema.then : true;\n const elseSchema = Schema.IsElse(schema) ? schema.else : true;\n const trueContext = new ErrorContext();\n const isIf = ErrorSchema(stack, trueContext, `${schemaPath}/if`, instancePath, schema.if, value)\n ? ErrorSchema(stack, trueContext, `${schemaPath}/then`, instancePath, thenSchema, value) ||\n context.AddError('if', schemaPath, instancePath, { failingKeyword: 'then' })\n : ErrorSchema(stack, context, `${schemaPath}/else`, instancePath, elseSchema, value) ||\n context.AddError('if', schemaPath, instancePath, { failingKeyword: 'else' });\n if (isIf)\n context.Merge([trueContext]);\n return isIf;\n}\n","// deno-fmt-ignore-file\nimport * as Schema from '../types/index.mjs';\nimport { BuildSchemaPushStack, CheckSchemaPushStack, ErrorSchemaPushStack } from './schema.mjs';\nimport { Guard as G, EmitGuard as E } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// ItemsSized\n// ------------------------------------------------------------------\nfunction BuildItemsSizedStandard(stack, context, schema, value) {\n return E.ReduceAnd(schema.items.map((schema, index) => {\n const isLength = E.IsLessEqualThan(E.Member(value, 'length'), E.Constant(index));\n const isSchema = BuildSchemaPushStack(stack, context, schema, `${value}[${index}]`);\n const addIndex = context.AddIndex(E.Constant(index));\n return E.Or(isLength, E.And(isSchema, addIndex));\n }));\n}\nfunction BuildItemsSizedFast(stack, context, schema, value) {\n return E.ReduceAnd(schema.items.map((schema, index) => {\n const isLength = E.IsLessEqualThan(E.Member(value, 'length'), E.Constant(index));\n const isSchema = BuildSchemaPushStack(stack, context, schema, `${value}[${index}]`);\n return E.Or(isLength, isSchema);\n }));\n}\nfunction BuildItemsSized(stack, context, schema, value) {\n return context.UseUnevaluated()\n ? BuildItemsSizedStandard(stack, context, schema, value)\n : BuildItemsSizedFast(stack, context, schema, value);\n}\nfunction CheckItemsSized(stack, context, schema, value) {\n return G.Every(schema.items, 0, (schema, index) => {\n return G.IsLessEqualThan(value.length, index)\n || (CheckSchemaPushStack(stack, context, schema, value[index]) && context.AddIndex(index));\n });\n}\nfunction ErrorItemsSized(stack, context, schemaPath, instancePath, schema, value) {\n return G.EveryAll(schema.items, 0, (schema, index) => {\n const nextSchemaPath = `${schemaPath}/items/${index}`;\n const nextInstancePath = `${instancePath}/${index}`;\n return G.IsLessEqualThan(value.length, index)\n || (ErrorSchemaPushStack(stack, context, nextSchemaPath, nextInstancePath, schema, value[index]) && context.AddIndex(index));\n });\n}\n// ------------------------------------------------------------------\n// ItemsUnsized\n// ------------------------------------------------------------------\nfunction BuildItemsUnsizedStandard(stack, context, schema, value) {\n const offset = Schema.IsPrefixItems(schema) ? schema.prefixItems.length : 0;\n const isSchema = BuildSchemaPushStack(stack, context, schema.items, 'element');\n const addIndex = context.AddIndex('index');\n return E.Every(value, E.Constant(offset), ['element', 'index'], E.And(isSchema, addIndex));\n}\nfunction BuildItemsUnsizedFast(stack, context, schema, value) {\n const offset = Schema.IsPrefixItems(schema) ? schema.prefixItems.length : 0;\n const isSchema = BuildSchemaPushStack(stack, context, schema.items, 'element');\n return E.Every(value, E.Constant(offset), ['element', 'index'], isSchema);\n}\nfunction BuildItemsUnsized(stack, context, schema, value) {\n return context.UseUnevaluated()\n ? BuildItemsUnsizedStandard(stack, context, schema, value)\n : BuildItemsUnsizedFast(stack, context, schema, value);\n}\nfunction CheckItemsUnsized(stack, context, schema, value) {\n const offset = Schema.IsPrefixItems(schema) ? schema.prefixItems.length : 0;\n return G.Every(value, offset, (element, index) => {\n return CheckSchemaPushStack(stack, context, schema.items, element)\n && context.AddIndex(index);\n });\n}\nfunction ErrorItemsUnsized(stack, context, schemaPath, instancePath, schema, value) {\n const offset = Schema.IsPrefixItems(schema) ? schema.prefixItems.length : 0;\n return G.EveryAll(value, offset, (element, index) => {\n const nextSchemaPath = `${schemaPath}/items`;\n const nextInstancePath = `${instancePath}/${index}`;\n return ErrorSchemaPushStack(stack, context, nextSchemaPath, nextInstancePath, schema.items, element)\n && context.AddIndex(index);\n });\n}\n// ------------------------------------------------------------------\n// Items\n// ------------------------------------------------------------------\nexport function BuildItems(stack, context, schema, value) {\n return Schema.IsItemsSized(schema) ? BuildItemsSized(stack, context, schema, value) : BuildItemsUnsized(stack, context, schema, value);\n}\nexport function CheckItems(stack, context, schema, value) {\n return Schema.IsItemsSized(schema) ? CheckItemsSized(stack, context, schema, value) : CheckItemsUnsized(stack, context, schema, value);\n}\nexport function ErrorItems(stack, context, schemaPath, instancePath, schema, value) {\n return Schema.IsItemsSized(schema) ? ErrorItemsSized(stack, context, schemaPath, instancePath, schema, value) : ErrorItemsUnsized(stack, context, schemaPath, instancePath, schema, value);\n}\n","// deno-fmt-ignore-file\nimport * as Schema from '../types/index.mjs';\nimport { Unique } from './_unique.mjs';\nimport { Guard as G, EmitGuard as E } from '../../guard/index.mjs';\nimport { BuildSchema, CheckSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Valid\n// ------------------------------------------------------------------\nfunction IsValid(schema) {\n return Schema.IsContains(schema);\n}\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildMaxContains(stack, context, schema, value) {\n if (!IsValid(schema))\n return E.Constant(true);\n const [item] = [Unique()];\n const count = E.Counted(value, [item, '_'], BuildSchema(stack, context, schema.contains, item));\n return E.IsLessEqualThan(count, E.Constant(schema.maxContains));\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckMaxContains(stack, context, schema, value) {\n if (!IsValid(schema))\n return true;\n const count = G.Counted(value, (item) => CheckSchema(stack, context, schema.contains, item));\n return G.IsLessEqualThan(count, schema.maxContains);\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorMaxContains(stack, context, schemaPath, instancePath, schema, value) {\n const minContains = Schema.IsMinContains(schema) ? schema.minContains : 1;\n return CheckMaxContains(stack, context, schema, value) ||\n context.AddError('contains', schemaPath, instancePath, { minContains, maxContains: schema.maxContains });\n}\n","// deno-fmt-ignore-file\nimport { Guard as G, EmitGuard as E } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildMaximum(_stack, _context, schema, value) {\n return E.IsLessEqualThan(value, E.Constant(schema.maximum));\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckMaximum(_stack, _context, schema, value) {\n return G.IsLessEqualThan(value, schema.maximum);\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorMaximum(stack, context, schemaPath, instancePath, schema, value) {\n return CheckMaximum(stack, context, schema, value) ||\n context.AddError('maximum', schemaPath, instancePath, { comparison: '<=', limit: schema.maximum });\n}\n","// deno-fmt-ignore-file\nimport { Guard as G, EmitGuard as E } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildMaxItems(_stack, _context, schema, value) {\n return E.IsLessEqualThan(E.Member(value, 'length'), E.Constant(schema.maxItems));\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckMaxItems(_stack, _context, schema, value) {\n return G.IsLessEqualThan(value.length, schema.maxItems);\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorMaxItems(stack, context, schemaPath, instancePath, schema, value) {\n return CheckMaxItems(stack, context, schema, value) ||\n context.AddError('maxItems', schemaPath, instancePath, { limit: schema.maxItems });\n}\n","// deno-fmt-ignore-file\nimport { Guard as G, EmitGuard as E } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildMaxLength(_stack, _context, schema, value) {\n return E.IsMaxLength(value, E.Constant(schema.maxLength));\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckMaxLength(_stack, _context, schema, value) {\n return G.IsMaxLength(value, schema.maxLength);\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorMaxLength(stack, context, schemaPath, instancePath, schema, value) {\n return CheckMaxLength(stack, context, schema, value) ||\n context.AddError('maxLength', schemaPath, instancePath, { limit: schema.maxLength });\n}\n","// deno-fmt-ignore-file\nimport { EmitGuard as E, Guard as G } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildMaxProperties(_stack, _context, schema, value) {\n return E.IsLessEqualThan(E.Member(E.Keys(value), 'length'), E.Constant(schema.maxProperties));\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckMaxProperties(_stack, _context, schema, value) {\n return G.IsLessEqualThan(G.Keys(value).length, schema.maxProperties);\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function ErrorMaxProperties(stack, context, schemaPath, instancePath, schema, value) {\n return CheckMaxProperties(stack, context, schema, value) ||\n context.AddError('maxProperties', schemaPath, instancePath, { limit: schema.maxProperties });\n}\n","// deno-fmt-ignore-file\nimport * as Schema from '../types/index.mjs';\nimport { Unique } from './_unique.mjs';\nimport { Guard as G, EmitGuard as E } from '../../guard/index.mjs';\nimport { BuildSchema, CheckSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Valid\n// ------------------------------------------------------------------\nfunction IsValid(schema) {\n return Schema.IsContains(schema);\n}\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nfunction BuildMinContainsStandard(stack, context, schema, value) {\n const [item, index] = [Unique(), Unique()];\n const count = E.Counted(value, [item, index], E.And(BuildSchema(stack, context, schema.contains, item), context.AddIndex(index)));\n return E.IsGreaterEqualThan(count, E.Constant(schema.minContains));\n}\nfunction BuildMinContainsFast(stack, context, schema, value) {\n const [item] = [Unique()];\n const count = E.Counted(value, [item, '_'], BuildSchema(stack, context, schema.contains, item));\n return E.IsGreaterEqualThan(count, E.Constant(schema.minContains));\n}\nexport function BuildMinContains(stack, context, schema, value) {\n if (!IsValid(schema))\n return E.Constant(true);\n return context.UseUnevaluated()\n ? BuildMinContainsStandard(stack, context, schema, value)\n : BuildMinContainsFast(stack, context, schema, value);\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckMinContains(stack, context, schema, value) {\n if (!IsValid(schema))\n return true;\n const count = G.Counted(value, (item, index) => CheckSchema(stack, context, schema.contains, item) && context.AddIndex(index));\n return G.IsGreaterEqualThan(count, schema.minContains);\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorMinContains(stack, context, schemaPath, instancePath, schema, value) {\n return CheckMinContains(stack, context, schema, value) ||\n context.AddError('contains', schemaPath, instancePath, { minContains: schema.minContains });\n}\n","// deno-fmt-ignore-file\nimport { Guard as G, EmitGuard as E } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildMinimum(_stack, _context, schema, value) {\n return E.IsGreaterEqualThan(value, E.Constant(schema.minimum));\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckMinimum(_stack, _context, schema, value) {\n return G.IsGreaterEqualThan(value, schema.minimum);\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorMinimum(stack, context, schemaPath, instancePath, schema, value) {\n return CheckMinimum(stack, context, schema, value) ||\n context.AddError('minimum', schemaPath, instancePath, { comparison: '>=', limit: schema.minimum });\n}\n","// deno-fmt-ignore-file\nimport { Guard as G, EmitGuard as E } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildMinItems(_stack, _context, schema, value) {\n return E.IsGreaterEqualThan(E.Member(value, 'length'), E.Constant(schema.minItems));\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckMinItems(_stack, _context, schema, value) {\n return G.IsGreaterEqualThan(value.length, schema.minItems);\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorMinItems(stack, context, schemaPath, instancePath, schema, value) {\n return CheckMinItems(stack, context, schema, value) ||\n context.AddError('minItems', schemaPath, instancePath, { limit: schema.minItems });\n}\n","// deno-fmt-ignore-file\nimport { Guard as G, EmitGuard as E } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildMinLength(_stack, _context, schema, value) {\n return E.IsMinLength(value, E.Constant(schema.minLength));\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckMinLength(_stack, _context, schema, value) {\n return G.IsMinLength(value, schema.minLength);\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorMinLength(stack, context, schemaPath, instancePath, schema, value) {\n return CheckMinLength(stack, context, schema, value) ||\n context.AddError('minLength', schemaPath, instancePath, { limit: schema.minLength });\n}\n","// deno-fmt-ignore-file\nimport { Guard as G, EmitGuard as E } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildMinProperties(_stack, _context, schema, value) {\n return E.IsGreaterEqualThan(E.Member(E.Keys(value), 'length'), E.Constant(schema.minProperties));\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckMinProperties(_stack, _context, schema, value) {\n return G.IsGreaterEqualThan(G.Keys(value).length, schema.minProperties);\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorMinProperties(stack, context, schemaPath, instancePath, schema, value) {\n return CheckMinProperties(stack, context, schema, value) ||\n context.AddError('minProperties', schemaPath, instancePath, { limit: schema.minProperties });\n}\n","// deno-fmt-ignore-file\nimport { Guard as G, EmitGuard as E } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildMultipleOf(_stack, _context, schema, value) {\n return E.MultipleOf(value, E.Constant(schema.multipleOf));\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckMultipleOf(_stack, _context, schema, value) {\n return G.IsMultipleOf(value, schema.multipleOf);\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorMultipleOf(stack, context, schemaPath, instancePath, schema, value) {\n return CheckMultipleOf(stack, context, schema, value) ||\n context.AddError('multipleOf', schemaPath, instancePath, { multipleOf: schema.multipleOf });\n}\n","// deno-fmt-ignore-file\nimport { Reducer } from './_reducer.mjs';\nimport { CheckContext } from './_context.mjs';\nimport { BuildSchema, CheckSchema } from './schema.mjs';\nimport { EmitGuard as E } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nfunction BuildNotStandard(stack, context, schema, value) {\n return Reducer(stack, context, [schema.not], value, E.Not(E.IsEqual(E.Member('results', 'length'), E.Constant(1))));\n}\nfunction BuildNotFast(stack, context, schema, value) {\n return E.Not(BuildSchema(stack, context, schema.not, value));\n}\nexport function BuildNot(stack, context, schema, value) {\n return context.UseUnevaluated()\n ? BuildNotStandard(stack, context, schema, value)\n : BuildNotFast(stack, context, schema, value);\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckNot(stack, context, schema, value) {\n const nextContext = new CheckContext();\n const isSchema = !CheckSchema(stack, nextContext, schema.not, value);\n const isNot = isSchema && context.Merge([nextContext]);\n return isNot;\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorNot(stack, context, schemaPath, instancePath, schema, value) {\n return CheckNot(stack, context, schema, value) ||\n context.AddError('not', schemaPath, instancePath, {});\n}\n","// deno-fmt-ignore-file\nimport { Reducer } from './_reducer.mjs';\nimport { Unique } from './_unique.mjs';\nimport { CheckContext, ErrorContext } from './_context.mjs';\nimport { BuildSchema, CheckSchema, ErrorSchema } from './schema.mjs';\nimport { EmitGuard as E, Guard as G } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nfunction BuildOneOfStandard(stack, context, schema, value) {\n return Reducer(stack, context, schema.oneOf, value, E.IsEqual(E.Member('results', 'length'), E.Constant(1)));\n}\nfunction BuildOneOfFast(stack, context, schema, value) {\n const [result] = [Unique()];\n const results = E.ArrayLiteral(schema.oneOf.map((schema) => BuildSchema(stack, context, schema, value)));\n const count = E.Counted(results, [result, '_'], E.IsEqual(result, E.Constant(true)));\n return E.IsEqual(count, E.Constant(1));\n}\nexport function BuildOneOf(stack, context, schema, value) {\n return context.UseUnevaluated()\n ? BuildOneOfStandard(stack, context, schema, value)\n : BuildOneOfFast(stack, context, schema, value);\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckOneOf(stack, context, schema, value) {\n const passedContexts = schema.oneOf.reduce((result, schema) => {\n const nextContext = new CheckContext();\n return CheckSchema(stack, nextContext, schema, value) ? [...result, nextContext] : result;\n }, []);\n return G.IsEqual(passedContexts.length, 1) && context.Merge(passedContexts);\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorOneOf(stack, context, schemaPath, instancePath, schema, value) {\n const failedContexts = [];\n const passingSchemas = [];\n const passedContexts = schema.oneOf.reduce((result, schema, index) => {\n const nextContext = new ErrorContext();\n const nextSchemaPath = `${schemaPath}/oneOf/${index}`;\n const isSchema = ErrorSchema(stack, nextContext, nextSchemaPath, instancePath, schema, value);\n if (isSchema)\n passingSchemas.push(index);\n if (!isSchema)\n failedContexts.push(nextContext);\n return isSchema ? [...result, nextContext] : result;\n }, []);\n const isOneOf = G.IsEqual(passedContexts.length, 1) && context.Merge(passedContexts);\n if (!isOneOf && G.IsEqual(passingSchemas.length, 0))\n failedContexts.forEach(failed => context.AddErrors(failed.GetErrors()));\n return isOneOf || context.AddError('oneOf', schemaPath, instancePath, { passingSchemas });\n}\n","// deno-fmt-ignore-file\nimport * as Externals from './_externals.mjs';\nimport { UnicodeRegExp } from './_regexp.mjs';\nimport { Guard as G, EmitGuard as E } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildPattern(_stack, _context, schema, value) {\n const regexp = Externals.CreateVariable(G.IsString(schema.pattern) ? UnicodeRegExp(schema.pattern) : schema.pattern);\n return E.Call(E.Member(regexp, 'test'), [value]);\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckPattern(_stack, _context, schema, value) {\n const regexp = G.IsString(schema.pattern) ? UnicodeRegExp(schema.pattern) : schema.pattern;\n return regexp.test(value);\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorPattern(stack, context, schemaPath, instancePath, schema, value) {\n return CheckPattern(stack, context, schema, value) ||\n context.AddError('pattern', schemaPath, instancePath, { pattern: schema.pattern });\n}\n","// deno-fmt-ignore-file\nimport * as Externals from './_externals.mjs';\nimport * as Pathing from './_pathing.mjs';\nimport { Unique } from './_unique.mjs';\nimport { UnicodeRegExp } from './_regexp.mjs';\nimport { BuildSchemaPushStack, CheckSchemaPushStack, ErrorSchemaPushStack } from './schema.mjs';\nimport { Guard as G, EmitGuard as E } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildPatternProperties(stack, context, schema, value) {\n return E.ReduceAnd(G.Entries(schema.patternProperties).map(([pattern, schema]) => {\n const [key, prop] = [Unique(), Unique()];\n const regexp = Externals.CreateVariable(UnicodeRegExp(pattern));\n const notKey = E.Not(E.Call(E.Member(regexp, 'test'), [key]));\n const isSchema = BuildSchemaPushStack(stack, context, schema, prop);\n const addKey = context.AddKey(key);\n const guarded = context.UseUnevaluated() ? E.Or(notKey, E.And(isSchema, addKey)) : E.Or(notKey, isSchema);\n return E.Every(E.Entries(value), E.Constant(0), [`[${key}, ${prop}]`, '_'], guarded);\n }));\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckPatternProperties(stack, context, schema, value) {\n return G.Every(G.Entries(schema.patternProperties), 0, ([pattern, schema]) => {\n const regexp = UnicodeRegExp(pattern);\n return G.Every(G.Entries(value), 0, ([key, prop]) => {\n return !regexp.test(key) || CheckSchemaPushStack(stack, context, schema, prop) && context.AddKey(key);\n });\n });\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorPatternProperties(stack, context, schemaPath, instancePath, schema, value) {\n return G.EveryAll(G.Entries(schema.patternProperties), 0, ([pattern, schema]) => {\n const nextSchemaPath = `${schemaPath}/patternProperties/${Pathing.EncodeFragment(pattern)}`;\n const regexp = UnicodeRegExp(pattern);\n return G.EveryAll(G.Entries(value), 0, ([key, value]) => {\n const nextInstancePath = `${instancePath}/${Pathing.EncodeFragment(key)}`;\n const notKey = !regexp.test(key);\n return notKey || ErrorSchemaPushStack(stack, context, nextSchemaPath, nextInstancePath, schema, value) && context.AddKey(key);\n });\n });\n}\n","// deno-fmt-ignore-file\nimport { BuildSchemaPushStack, CheckSchemaPushStack, ErrorSchemaPushStack } from './schema.mjs';\nimport { Guard as G, EmitGuard as E } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildPrefixItems(stack, context, schema, value) {\n return E.ReduceAnd(schema.prefixItems.map((schema, index) => {\n const isLength = E.IsLessEqualThan(E.Member(value, 'length'), E.Constant(index));\n const isSchema = BuildSchemaPushStack(stack, context, schema, `${value}[${index}]`);\n const addIndex = context.AddIndex(E.Constant(index));\n const guarded = context.UseUnevaluated() ? E.And(isSchema, addIndex) : isSchema;\n return E.Or(isLength, guarded);\n }));\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckPrefixItems(stack, context, schema, value) {\n return G.IsEqual(value.length, 0) || G.Every(schema.prefixItems, 0, (schema, index) => {\n return G.IsLessEqualThan(value.length, index)\n || (CheckSchemaPushStack(stack, context, schema, value[index]) && context.AddIndex(index));\n });\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorPrefixItems(stack, context, schemaPath, instancePath, schema, value) {\n return G.IsEqual(value.length, 0) || G.EveryAll(schema.prefixItems, 0, (schema, index) => {\n const nextSchemaPath = `${schemaPath}/prefixItems/${index}`;\n const nextInstancePath = `${instancePath}/${index}`;\n return G.IsLessEqualThan(value.length, index)\n || (ErrorSchemaPushStack(stack, context, nextSchemaPath, nextInstancePath, schema, value[index]) && context.AddIndex(index));\n });\n}\n","import { Settings } from '../../system/settings/index.mjs';\nimport { EmitGuard as E, Guard as G } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// IsExactOptional\n// ------------------------------------------------------------------\nexport function IsExactOptional(required, key) {\n return required.includes(key) || Settings.Get().exactOptionalPropertyTypes;\n}\n// ------------------------------------------------------------------\n// ExactOptionalBuild\n// ------------------------------------------------------------------\nexport function InexactOptionalBuild(value, key) {\n return E.IsUndefined(E.Member(value, key));\n}\n// ------------------------------------------------------------------\n// ExactOptionalCheck\n// ------------------------------------------------------------------\nexport function InexactOptionalCheck(value, key) {\n return G.IsUndefined(value[key]);\n}\n","// deno-fmt-ignore-file\nimport * as Schema from '../types/index.mjs';\nimport * as Pathing from './_pathing.mjs';\nimport { BuildSchemaPushStack, CheckSchemaPushStack, ErrorSchemaPushStack } from './schema.mjs';\nimport { InexactOptionalCheck, InexactOptionalBuild, IsExactOptional } from './_exact_optional.mjs';\nimport { Guard as G, EmitGuard as E } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildProperties(stack, context, schema, value) {\n const required = Schema.IsRequired(schema) ? schema.required : [];\n const everyKey = G.Entries(schema.properties).map(([key, schema]) => {\n const notKey = E.Not(E.HasPropertyKey(value, E.Constant(key)));\n const isSchema = BuildSchemaPushStack(stack, context, schema, E.Member(value, key));\n const addKey = context.AddKey(E.Constant(key));\n const guarded = context.UseUnevaluated() ? E.And(isSchema, addKey) : isSchema;\n // --------------------------------------------------------------\n // Optimization\n //\n // If a key is required, we can skip the `notKey` check since this\n // condition is already enforced by Required. This optimization is\n // only valid when Required is evaluated before Properties.\n //\n // --------------------------------------------------------------\n const isProperty = required.includes(key) ? guarded : E.Or(notKey, guarded);\n // --------------------------------------------------------------\n // ExactOptionalProperties\n //\n // By default, TypeScript allows optional properties to be assigned\n // undefined. This is a bit misleading, since 'optional' is usually\n // understood to mean 'the key may be absent', not 'the key may be\n // present with an undefined value'.\n //\n // The 'IsExactOptional' check returns false by default, matching\n // TypeScript's behavior. When exactOptionalPropertyTypes is enabled\n // in tsconfig.json, TypeBox can be configured to use the stricter \n // semantics via System settings:\n //\n // Settings.Set({ exactOptionalPropertyTypes: true })\n //\n // --------------------------------------------------------------\n return IsExactOptional(required, key)\n ? isProperty\n : E.Or(InexactOptionalBuild(value, key), isProperty);\n });\n return E.ReduceAnd(everyKey);\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckProperties(stack, context, schema, value) {\n const required = Schema.IsRequired(schema) ? schema.required : [];\n const isProperties = G.Every(G.Entries(schema.properties), 0, ([key, schema]) => {\n const isProperty = !G.HasPropertyKey(value, key) || (CheckSchemaPushStack(stack, context, schema, value[key]) && context.AddKey(key));\n return IsExactOptional(required, key)\n ? isProperty\n : InexactOptionalCheck(value, key) || isProperty;\n });\n return isProperties;\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorProperties(stack, context, schemaPath, instancePath, schema, value) {\n const required = Schema.IsRequired(schema) ? schema.required : [];\n const isProperties = G.EveryAll(G.Entries(schema.properties), 0, ([key, schema]) => {\n const nextSchemaPath = `${schemaPath}/properties/${Pathing.EncodeFragment(key)}`;\n const nextInstancePath = `${instancePath}/${Pathing.EncodeFragment(key)}`;\n // Defer error generation for IsExactOptional\n const isProperty = () => (!G.HasPropertyKey(value, key) || (ErrorSchemaPushStack(stack, context, nextSchemaPath, nextInstancePath, schema, value[key]) && context.AddKey(key)));\n return IsExactOptional(required, key)\n ? isProperty()\n : InexactOptionalCheck(value, key) || isProperty();\n });\n return isProperties;\n}\n","// deno-fmt-ignore-file\nimport * as Pathing from './_pathing.mjs';\nimport { Unique } from './_unique.mjs';\nimport { BuildSchema, CheckSchema, ErrorSchema } from './schema.mjs';\nimport { EmitGuard as E, Guard as G } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildPropertyNames(stack, context, schema, value) {\n const [key, _index] = [Unique(), Unique()];\n return E.Every(E.Keys(value), E.Constant(0), [key, _index], BuildSchema(stack, context, schema.propertyNames, key));\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckPropertyNames(stack, context, schema, value) {\n return G.Every(G.Keys(value), 0, (key, _index) => CheckSchema(stack, context, schema.propertyNames, key));\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorPropertyNames(stack, context, schemaPath, instancePath, schema, value) {\n const propertyNames = [];\n const isPropertyNames = G.EveryAll(G.Keys(value), 0, (key, _index) => {\n const nextInstancePath = `${instancePath}/${Pathing.EncodeFragment(key)}`;\n const nextSchemaPath = `${schemaPath}/propertyNames`;\n const isPropertyName = ErrorSchema(stack, context, nextSchemaPath, nextInstancePath, schema.propertyNames, key);\n if (!isPropertyName)\n propertyNames.push(key);\n return isPropertyName;\n });\n return isPropertyNames ||\n context.AddError('propertyNames', schemaPath, instancePath, { propertyNames });\n}\n","// deno-fmt-ignore-file\nimport * as Schema from '../types/index.mjs';\nimport * as Functions from './_functions.mjs';\nimport { Resolve } from '../resolve/index.mjs';\nimport { CheckSchema, ErrorSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildRecursiveRef(stack, context, schema, value) {\n const target = Resolve.RecursiveRef(stack, schema) ?? false;\n const nextStack = target ? { ...stack, pendingResource: true } : stack;\n return Functions.CreateFunction(nextStack, context, target, value);\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckRecursiveRef(stack, context, schema, value) {\n const target = Resolve.RecursiveRef(stack, schema) ?? false;\n const nextStack = target ? { ...stack, pendingResource: true } : stack;\n return (Schema.IsSchema(target) && CheckSchema(nextStack, context, target, value));\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorRecursiveRef(stack, context, schemaPath, instancePath, schema, value) {\n const target = Resolve.RecursiveRef(stack, schema) ?? false;\n const nextStack = target ? { ...stack, pendingResource: true } : stack;\n return (Schema.IsSchema(target) && ErrorSchema(nextStack, context, schemaPath, instancePath, target, value));\n}\n","// deno-fmt-ignore-file\nimport * as Functions from './_functions.mjs';\nimport * as Schema from '../types/index.mjs';\nimport { Resolve } from '../resolve/index.mjs';\nimport { CheckContext, ErrorContext } from './_context.mjs';\nimport { EmitGuard as E } from '../../guard/index.mjs';\nimport { CheckSchema, ErrorSchema } from './schema.mjs';\n// ------------------------------------------------------------------\n// BuildRef\n// ------------------------------------------------------------------\nfunction BuildRefStandard(stack, context, target, value) {\n const interior = E.ArrowFunction(['context', 'value'], Functions.CreateFunction(stack, context, target, 'value'));\n const exterior = E.ArrowFunction(['context', 'value'], E.Statements([\n E.ConstDeclaration('nextContext', E.New('CheckContext', [])),\n E.ConstDeclaration('result', E.Call(interior, ['nextContext', 'value'])),\n E.If('result', context.Merge('[nextContext]')),\n E.Return('result')\n ]));\n return E.Call(exterior, ['context', value]);\n}\nfunction BuildRefFast(stack, context, target, value) {\n return Functions.CreateFunction(stack, context, target, value);\n}\nexport function BuildRef(stack, context, schema, value) {\n const result = Resolve.Ref(stack, schema);\n const target = result.schema ?? false;\n return context.UseUnevaluated()\n ? BuildRefStandard(result.stack, context, target, value)\n : BuildRefFast(result.stack, context, target, value);\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckRef(stack, context, schema, value) {\n const result = Resolve.Ref(stack, schema);\n const target = result.schema ?? false;\n const nextContext = new CheckContext();\n const valid = (Schema.IsSchema(target) && CheckSchema(result.stack, nextContext, target, value));\n if (valid)\n context.Merge([nextContext]);\n return valid;\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorRef(stack, context, schemaPath, instancePath, schema, value) {\n const result = Resolve.Ref(stack, schema);\n const target = result.schema ?? false;\n const nextContext = new ErrorContext();\n const valid = (Schema.IsSchema(target) && ErrorSchema(result.stack, nextContext, schemaPath, instancePath, target, value));\n if (valid)\n context.Merge([nextContext]);\n if (!valid)\n context.AddErrors(nextContext.GetErrors());\n return valid;\n}\n","// deno-fmt-ignore-file\nimport { EmitGuard as E, Guard as G } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildRequired(_stack, _context, schema, value) {\n return E.ReduceAnd(schema.required.map((key) => E.HasPropertyKey(value, E.Constant(key))));\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckRequired(_stack, _context, schema, value) {\n return G.Every(schema.required, 0, (key) => G.HasPropertyKey(value, key));\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorRequired(_stack, context, schemaPath, instancePath, schema, value) {\n const requiredProperties = [];\n const isRequired = G.EveryAll(schema.required, 0, (key) => {\n const hasKey = G.HasPropertyKey(value, key);\n if (!hasKey)\n requiredProperties.push(key);\n return hasKey;\n });\n return isRequired ||\n context.AddError('required', schemaPath, instancePath, { requiredProperties });\n}\n","// deno-fmt-ignore-file\nimport { Guard as G, EmitGuard as E } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// TypeName\n// ------------------------------------------------------------------\nfunction BuildTypeName(_stack, _context, type, value) {\n return (\n // jsonschema\n G.IsEqual(type, 'object') ? E.IsObjectNotArray(value) :\n G.IsEqual(type, 'array') ? E.IsArray(value) :\n G.IsEqual(type, 'boolean') ? E.IsBoolean(value) :\n G.IsEqual(type, 'integer') ? E.IsInteger(value) :\n G.IsEqual(type, 'number') ? E.IsNumber(value) :\n G.IsEqual(type, 'null') ? E.IsNull(value) :\n G.IsEqual(type, 'string') ? E.IsString(value) :\n // xschema\n G.IsEqual(type, 'bigint') ? E.IsBigInt(value) :\n G.IsEqual(type, 'constructor') ? E.IsConstructor(value) :\n G.IsEqual(type, 'function') ? E.IsFunction(value) :\n G.IsEqual(type, 'symbol') ? E.IsSymbol(value) :\n G.IsEqual(type, 'undefined') ? E.IsUndefined(value) :\n G.IsEqual(type, 'void') ? E.IsUndefined(value) :\n E.Constant(true));\n}\nfunction CheckTypeName(_stack, _context, type, _schema, value) {\n return (\n // jsonschema\n G.IsEqual(type, 'object') ? G.IsObjectNotArray(value) :\n G.IsEqual(type, 'array') ? G.IsArray(value) :\n G.IsEqual(type, 'boolean') ? G.IsBoolean(value) :\n G.IsEqual(type, 'integer') ? G.IsInteger(value) :\n G.IsEqual(type, 'number') ? G.IsNumber(value) :\n G.IsEqual(type, 'null') ? G.IsNull(value) :\n G.IsEqual(type, 'string') ? G.IsString(value) :\n // xschema\n G.IsEqual(type, 'bigint') ? G.IsBigInt(value) :\n G.IsEqual(type, 'constructor') ? G.IsConstructor(value) :\n G.IsEqual(type, 'function') ? G.IsFunction(value) :\n G.IsEqual(type, 'symbol') ? G.IsSymbol(value) :\n G.IsEqual(type, 'undefined') ? G.IsUndefined(value) :\n G.IsEqual(type, 'void') ? G.IsUndefined(value) :\n true);\n}\n// ------------------------------------------------------------------\n// TypeNames\n// ------------------------------------------------------------------\nfunction BuildTypeNames(stack, context, typenames, value) {\n return E.ReduceOr(typenames.map(type => BuildTypeName(stack, context, type, value)));\n}\nfunction CheckTypeNames(stack, context, types, schema, value) {\n return G.Some(types, type => CheckTypeName(stack, context, type, schema, value));\n}\n// ------------------------------------------------------------------\n// Type\n// ------------------------------------------------------------------\nexport function BuildType(stack, context, schema, value) {\n return G.IsArray(schema.type) ? BuildTypeNames(stack, context, schema.type, value) : BuildTypeName(stack, context, schema.type, value);\n}\nexport function CheckType(stack, context, schema, value) {\n return G.IsArray(schema.type) ? CheckTypeNames(stack, context, schema.type, schema, value) : CheckTypeName(stack, context, schema.type, schema, value);\n}\nexport function ErrorType(stack, context, schemaPath, instancePath, schema, value) {\n const isType = G.IsArray(schema.type) ? CheckTypeNames(stack, context, schema.type, schema, value) : CheckTypeName(stack, context, schema.type, schema, value);\n return isType ||\n context.AddError('type', schemaPath, instancePath, { type: schema.type });\n}\n","// deno-fmt-ignore-file\nimport { Unique } from './_unique.mjs';\nimport { ErrorContext } from './_context.mjs';\nimport { BuildSchema, CheckSchema, ErrorSchema } from './schema.mjs';\nimport { Guard as G, EmitGuard as E } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildUnevaluatedItems(stack, context, schema, value) {\n const [index, item] = [Unique(), Unique()];\n const indices = E.Call(E.Member('context', 'GetIndices'), []);\n const hasIndex = E.Call(E.Member('indices', 'has'), [index]);\n const isSchema = BuildSchema(stack, context, schema.unevaluatedItems, item);\n const addIndex = E.Call(E.Member('context', 'AddIndex'), [index]);\n const isEvery = E.Every(value, E.Constant(0), [item, index], E.And(E.Or(hasIndex, isSchema), addIndex));\n return E.Call(E.ArrowFunction(['context'], E.Statements([\n E.ConstDeclaration('indices', indices),\n E.Return(isEvery)\n ])), ['context']);\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckUnevaluatedItems(stack, context, schema, value) {\n const indices = context.GetIndices();\n return G.Every(value, 0, (item, index) => {\n return (indices.has(index) || CheckSchema(stack, context, schema.unevaluatedItems, item))\n && context.AddIndex(index);\n });\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorUnevaluatedItems(stack, context, schemaPath, instancePath, schema, value) {\n const indices = context.GetIndices();\n const unevaluatedItems = [];\n const isUnevaluatedItems = G.EveryAll(value, 0, (item, index) => {\n const nextContext = new ErrorContext();\n const isEvaluatedItem = (indices.has(index) || ErrorSchema(stack, nextContext, schemaPath, instancePath, schema.unevaluatedItems, item))\n && context.AddIndex(index);\n if (!isEvaluatedItem)\n unevaluatedItems.push(index);\n return isEvaluatedItem;\n });\n return isUnevaluatedItems ||\n context.AddError('unevaluatedItems', schemaPath, instancePath, { unevaluatedItems });\n}\n","// deno-fmt-ignore-file\nimport { Unique } from './_unique.mjs';\nimport { ErrorContext } from './_context.mjs';\nimport { BuildSchema, CheckSchema, ErrorSchema } from './schema.mjs';\nimport { Guard as G, EmitGuard as E } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildUnevaluatedProperties(stack, context, schema, value) {\n const [key, prop] = [Unique(), Unique()];\n const keys = E.Call(E.Member('context', 'GetKeys'), []);\n const hasKey = E.Call(E.Member('keys', 'has'), [key]);\n const addKey = E.Call(E.Member('context', 'AddKey'), [key]);\n const isSchema = BuildSchema(stack, context, schema.unevaluatedProperties, prop);\n const isEvery = E.Every(E.Entries(value), E.Constant(0), [`[${key}, ${prop}]`, '_'], E.Or(hasKey, E.And(isSchema, addKey)));\n return E.Call(E.ArrowFunction(['context'], E.Statements([\n E.ConstDeclaration('keys', keys),\n E.Return(isEvery)\n ])), ['context']);\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckUnevaluatedProperties(stack, context, schema, value) {\n const keys = context.GetKeys();\n return G.Every(G.Entries(value), 0, ([key, prop]) => {\n return keys.has(key)\n || (CheckSchema(stack, context, schema.unevaluatedProperties, prop) && context.AddKey(key));\n });\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorUnevaluatedProperties(stack, context, schemaPath, instancePath, schema, value) {\n const keys = context.GetKeys();\n const unevaluatedProperties = [];\n const isUnevaluatedProperties = G.EveryAll(G.Entries(value), 0, ([key, prop]) => {\n const nextContext = new ErrorContext();\n const isEvaluatedProperty = keys.has(key)\n || (ErrorSchema(stack, nextContext, schemaPath, instancePath, schema.unevaluatedProperties, prop) && context.AddKey(key));\n if (!isEvaluatedProperty)\n unevaluatedProperties.push(key);\n return isEvaluatedProperty;\n });\n return isUnevaluatedProperties ||\n context.AddError('unevaluatedProperties', schemaPath, instancePath, { unevaluatedProperties });\n}\n","// deno-fmt-ignore-file\nimport { Hashing } from '../../system/hashing/index.mjs';\nimport { EmitGuard as E, Guard as G } from '../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Valid\n// ------------------------------------------------------------------\nfunction IsValid(schema) {\n return !G.IsEqual(schema.uniqueItems, false);\n}\n// ------------------------------------------------------------------\n// Build\n// ------------------------------------------------------------------\nexport function BuildUniqueItems(_stack, _context, schema, value) {\n if (!IsValid(schema))\n return E.Constant(true);\n const set = E.Member(E.New('Set', [E.Call(E.Member(value, 'map'), [E.Member('Hashing', 'Hash')])]), 'size');\n const isLength = E.Member(value, 'length');\n return E.IsEqual(set, isLength);\n}\n// ------------------------------------------------------------------\n// Check\n// ------------------------------------------------------------------\nexport function CheckUniqueItems(_stack, _context, schema, value) {\n if (!IsValid(schema))\n return true;\n const set = new Set(value.map(Hashing.Hash)).size;\n const isLength = value.length;\n return G.IsEqual(set, isLength);\n}\n// ------------------------------------------------------------------\n// Error\n// ------------------------------------------------------------------\nexport function ErrorUniqueItems(_stack, context, schemaPath, instancePath, schema, value) {\n if (!IsValid(schema))\n return true;\n const set = new Set();\n const duplicateItems = value.reduce((result, value, index) => {\n const hash = Hashing.Hash(value);\n if (set.has(hash))\n return [...result, index];\n set.add(hash);\n return result;\n }, []);\n const isUniqueItems = G.IsEqual(duplicateItems.length, 0);\n return isUniqueItems ||\n context.AddError('uniqueItems', schemaPath, instancePath, { duplicateItems });\n}\n","// deno-fmt-ignore-file\nimport * as Schema from '../types/index.mjs';\nimport { BuildRefine, CheckRefine, ErrorRefine } from './_refine.mjs';\nimport * as Stack from './_stack.mjs';\nimport { EmitGuard as E, Guard as G } from '../../guard/index.mjs';\nimport { BuildAdditionalItems, CheckAdditionalItems, ErrorAdditionalItems } from './additionalItems.mjs';\nimport { BuildAdditionalProperties, CheckAdditionalProperties, ErrorAdditionalProperties } from './additionalProperties.mjs';\nimport { BuildAllOf, CheckAllOf, ErrorAllOf } from './allOf.mjs';\nimport { BuildAnyOf, CheckAnyOf, ErrorAnyOf } from './anyOf.mjs';\nimport { BuildSchemaBoolean, CheckSchemaBoolean, ErrorSchemaBoolean } from './boolean.mjs';\nimport { BuildConst, CheckConst, ErrorConst } from './const.mjs';\nimport { BuildContains, CheckContains, ErrorContains } from './contains.mjs';\nimport { BuildDependencies, CheckDependencies, ErrorDependencies } from './dependencies.mjs';\nimport { BuildDependentRequired, CheckDependentRequired, ErrorDependentRequired } from './dependentRequired.mjs';\nimport { BuildDependentSchemas, CheckDependentSchemas, ErrorDependentSchemas } from './dependentSchemas.mjs';\nimport { BuildDynamicRef, CheckDynamicRef, ErrorDynamicRef } from './dynamicRef.mjs';\nimport { BuildEnum, CheckEnum, ErrorEnum } from './enum.mjs';\nimport { BuildExclusiveMaximum, CheckExclusiveMaximum, ErrorExclusiveMaximum } from './exclusiveMaximum.mjs';\nimport { BuildExclusiveMinimum, CheckExclusiveMinimum, ErrorExclusiveMinimum } from './exclusiveMinimum.mjs';\nimport { BuildFormat, CheckFormat, ErrorFormat } from './format.mjs';\nimport { BuildIf, CheckIf, ErrorIf } from './if.mjs';\nimport { BuildItems, CheckItems, ErrorItems } from './items.mjs';\nimport { BuildMaxContains, CheckMaxContains, ErrorMaxContains } from './maxContains.mjs';\nimport { BuildMaximum, CheckMaximum, ErrorMaximum } from './maximum.mjs';\nimport { BuildMaxItems, CheckMaxItems, ErrorMaxItems } from './maxItems.mjs';\nimport { BuildMaxLength, CheckMaxLength, ErrorMaxLength } from './maxLength.mjs';\nimport { BuildMaxProperties, CheckMaxProperties, ErrorMaxProperties } from './maxProperties.mjs';\nimport { BuildMinContains, CheckMinContains, ErrorMinContains } from './minContains.mjs';\nimport { BuildMinimum, CheckMinimum, ErrorMinimum } from './minimum.mjs';\nimport { BuildMinItems, CheckMinItems, ErrorMinItems } from './minItems.mjs';\nimport { BuildMinLength, CheckMinLength, ErrorMinLength } from './minLength.mjs';\nimport { BuildMinProperties, CheckMinProperties, ErrorMinProperties } from './minProperties.mjs';\nimport { BuildMultipleOf, CheckMultipleOf, ErrorMultipleOf } from './multipleOf.mjs';\nimport { BuildNot, CheckNot, ErrorNot } from './not.mjs';\nimport { BuildOneOf, CheckOneOf, ErrorOneOf } from './oneOf.mjs';\nimport { BuildPattern, CheckPattern, ErrorPattern } from './pattern.mjs';\nimport { BuildPatternProperties, CheckPatternProperties, ErrorPatternProperties } from './patternProperties.mjs';\nimport { BuildPrefixItems, CheckPrefixItems, ErrorPrefixItems } from './prefixItems.mjs';\nimport { BuildProperties, CheckProperties, ErrorProperties } from './properties.mjs';\nimport { BuildPropertyNames, CheckPropertyNames, ErrorPropertyNames } from './propertyNames.mjs';\nimport { BuildRecursiveRef, CheckRecursiveRef, ErrorRecursiveRef } from './recursiveRef.mjs';\nimport { BuildRef, CheckRef, ErrorRef } from './ref.mjs';\nimport { BuildRequired, CheckRequired, ErrorRequired } from './required.mjs';\nimport { BuildType, CheckType, ErrorType } from './type.mjs';\nimport { BuildUnevaluatedItems, CheckUnevaluatedItems, ErrorUnevaluatedItems } from './unevaluatedItems.mjs';\nimport { BuildUnevaluatedProperties, CheckUnevaluatedProperties, ErrorUnevaluatedProperties } from './unevaluatedProperties.mjs';\nimport { BuildUniqueItems, CheckUniqueItems, ErrorUniqueItems } from './uniqueItems.mjs';\n// ----------------------------------------------------------------\n// HasTypeName (Optimization)\n//\n// We only consider a schema as having a type name when the schema \n// has a single type string, or when every element in the type \n// array is the same. For a type array, we must treat multi-variant \n// types as unions and therefore can NOT use an optimized forward \n// type check.\n//\n// ----------------------------------------------------------------\nfunction HasTypeName(schema, typename) {\n return (Schema.IsType(schema) &&\n ((G.IsArray(schema.type) &&\n G.IsGreaterThan(schema.type.length, 0) &&\n G.Every(schema.type, 0, type => G.IsEqual(type, typename))) ||\n G.IsEqual(schema.type, typename)));\n}\n// ----------------------------------------------------------------\n// HasObject\n// ----------------------------------------------------------------\nfunction HasObjectType(schema) {\n return HasTypeName(schema, 'object');\n}\nfunction HasObjectKeywords(schema) {\n return Schema.IsSchemaObject(schema) && (Schema.IsAdditionalProperties(schema) ||\n Schema.IsDependencies(schema) ||\n Schema.IsDependentRequired(schema) ||\n Schema.IsDependentSchemas(schema) ||\n Schema.IsProperties(schema) ||\n Schema.IsPatternProperties(schema) ||\n Schema.IsPropertyNames(schema) ||\n Schema.IsMinProperties(schema) ||\n Schema.IsMaxProperties(schema) ||\n Schema.IsRequired(schema) ||\n Schema.IsUnevaluatedProperties(schema));\n}\n// ----------------------------------------------------------------\n// HasArray\n// ----------------------------------------------------------------\nfunction HasArrayType(schema) {\n return HasTypeName(schema, 'array');\n}\nfunction HasArrayKeywords(schema) {\n return Schema.IsSchemaObject(schema) && (Schema.IsAdditionalItems(schema) ||\n Schema.IsItems(schema) ||\n Schema.IsContains(schema) ||\n Schema.IsMaxContains(schema) ||\n Schema.IsMaxItems(schema) ||\n Schema.IsMinContains(schema) ||\n Schema.IsMinItems(schema) ||\n Schema.IsPrefixItems(schema) ||\n Schema.IsUnevaluatedItems(schema) ||\n Schema.IsUniqueItems(schema));\n}\n// ----------------------------------------------------------------\n// HasString\n// ----------------------------------------------------------------\nfunction HasStringType(schema) {\n return HasTypeName(schema, 'string');\n}\nfunction HasStringKeywords(schema) {\n return Schema.IsSchemaObject(schema) && (Schema.IsMinLength(schema) ||\n Schema.IsMaxLength(schema) ||\n Schema.IsFormat(schema) ||\n Schema.IsPattern(schema));\n}\n// ----------------------------------------------------------------\n// HasNumber\n// ----------------------------------------------------------------\nfunction HasNumberType(schema) {\n return HasTypeName(schema, 'number') || HasTypeName(schema, 'bigint');\n}\nfunction HasNumberKeywords(schema) {\n return Schema.IsSchemaObject(schema) && (Schema.IsMinimum(schema) ||\n Schema.IsMaximum(schema) ||\n Schema.IsExclusiveMaximum(schema) ||\n Schema.IsExclusiveMinimum(schema) ||\n Schema.IsMultipleOf(schema));\n}\n// ----------------------------------------------------------------\n// Build\n// ----------------------------------------------------------------\nexport function BuildSchemaPushStack(stack, context, schema, value) {\n return context.UseUnevaluated()\n ? E.And(E.And(context.Push(), BuildSchema(stack, context, schema, value)), context.Pop())\n : BuildSchema(stack, context, schema, value);\n}\nexport function BuildSchema(stack, context, schema, value) {\n const current = Stack.NextStack(stack, schema);\n const conditions = [];\n if (Schema.IsSchemaBoolean(schema))\n return BuildSchemaBoolean(current, context, schema, value);\n if (Schema.IsType(schema))\n conditions.push(BuildType(current, context, schema, value));\n if (HasObjectKeywords(schema)) {\n const constraints = [];\n if (Schema.IsRequired(schema))\n constraints.push(BuildRequired(current, context, schema, value));\n if (Schema.IsAdditionalProperties(schema))\n constraints.push(BuildAdditionalProperties(current, context, schema, value));\n if (Schema.IsDependencies(schema))\n constraints.push(BuildDependencies(current, context, schema, value));\n if (Schema.IsDependentRequired(schema))\n constraints.push(BuildDependentRequired(current, context, schema, value));\n if (Schema.IsDependentSchemas(schema))\n constraints.push(BuildDependentSchemas(current, context, schema, value));\n if (Schema.IsPatternProperties(schema))\n constraints.push(BuildPatternProperties(current, context, schema, value));\n if (Schema.IsProperties(schema))\n constraints.push(BuildProperties(current, context, schema, value));\n if (Schema.IsPropertyNames(schema))\n constraints.push(BuildPropertyNames(current, context, schema, value));\n if (Schema.IsMinProperties(schema))\n constraints.push(BuildMinProperties(current, context, schema, value));\n if (Schema.IsMaxProperties(schema))\n constraints.push(BuildMaxProperties(current, context, schema, value));\n const reduced = E.ReduceAnd(constraints);\n const guarded = E.Or(E.Not(E.IsObjectNotArray(value)), reduced);\n conditions.push(HasObjectType(schema) ? reduced : guarded);\n }\n if (HasArrayKeywords(schema)) {\n const constraints = [];\n if (Schema.IsAdditionalItems(schema))\n constraints.push(BuildAdditionalItems(current, context, schema, value));\n if (Schema.IsContains(schema))\n constraints.push(BuildContains(current, context, schema, value));\n if (Schema.IsItems(schema))\n constraints.push(BuildItems(current, context, schema, value));\n if (Schema.IsMinContains(schema))\n constraints.push(BuildMinContains(current, context, schema, value));\n if (Schema.IsMaxContains(schema))\n constraints.push(BuildMaxContains(current, context, schema, value));\n if (Schema.IsMinItems(schema))\n constraints.push(BuildMinItems(current, context, schema, value));\n if (Schema.IsMaxItems(schema))\n constraints.push(BuildMaxItems(current, context, schema, value));\n if (Schema.IsPrefixItems(schema))\n constraints.push(BuildPrefixItems(current, context, schema, value));\n if (Schema.IsUniqueItems(schema))\n constraints.push(BuildUniqueItems(current, context, schema, value));\n const reduced = E.ReduceAnd(constraints);\n const guarded = E.Or(E.Not(E.IsArray(value)), reduced);\n conditions.push(HasArrayType(schema) ? reduced : guarded);\n }\n if (HasStringKeywords(schema)) {\n const constraints = [];\n if (Schema.IsMinLength(schema))\n constraints.push(BuildMinLength(current, context, schema, value));\n if (Schema.IsMaxLength(schema))\n constraints.push(BuildMaxLength(current, context, schema, value));\n if (Schema.IsFormat(schema))\n constraints.push(BuildFormat(current, context, schema, value));\n if (Schema.IsPattern(schema))\n constraints.push(BuildPattern(current, context, schema, value));\n const reduced = E.ReduceAnd(constraints);\n const guarded = E.Or(E.Not(E.IsString(value)), reduced);\n conditions.push(HasStringType(schema) ? reduced : guarded);\n }\n if (HasNumberKeywords(schema)) {\n const constraints = [];\n if (Schema.IsExclusiveMinimum(schema))\n constraints.push(BuildExclusiveMinimum(current, context, schema, value));\n if (Schema.IsExclusiveMaximum(schema))\n constraints.push(BuildExclusiveMaximum(current, context, schema, value));\n if (Schema.IsMinimum(schema))\n constraints.push(BuildMinimum(current, context, schema, value));\n if (Schema.IsMaximum(schema))\n constraints.push(BuildMaximum(current, context, schema, value));\n if (Schema.IsMultipleOf(schema))\n constraints.push(BuildMultipleOf(current, context, schema, value));\n const reduced = E.ReduceAnd(constraints);\n const guarded = E.Or(E.Not(E.Or(E.IsNumber(value), E.IsBigInt(value))), reduced);\n conditions.push(HasNumberType(schema) ? reduced : guarded);\n }\n if (Schema.IsRef(schema))\n conditions.push(BuildRef(current, context, schema, value));\n if (Schema.IsRecursiveRef(schema))\n conditions.push(BuildRecursiveRef(current, context, schema, value));\n if (Schema.IsDynamicRef(schema))\n conditions.push(BuildDynamicRef(current, context, schema, value));\n if (Schema.IsConst(schema))\n conditions.push(BuildConst(current, context, schema, value));\n if (Schema.IsEnum(schema))\n conditions.push(BuildEnum(current, context, schema, value));\n if (Schema.IsIf(schema))\n conditions.push(BuildIf(current, context, schema, value));\n if (Schema.IsNot(schema))\n conditions.push(BuildNot(current, context, schema, value));\n if (Schema.IsAllOf(schema))\n conditions.push(BuildAllOf(current, context, schema, value));\n if (Schema.IsAnyOf(schema))\n conditions.push(BuildAnyOf(current, context, schema, value));\n if (Schema.IsOneOf(schema))\n conditions.push(BuildOneOf(current, context, schema, value));\n if (Schema.IsUnevaluatedItems(schema))\n conditions.push(E.Or(E.Not(E.IsArray(value)), BuildUnevaluatedItems(current, context, schema, value)));\n if (Schema.IsUnevaluatedProperties(schema))\n conditions.push(E.Or(E.Not(E.IsObject(value)), BuildUnevaluatedProperties(current, context, schema, value)));\n if (Schema.IsRefine(schema))\n conditions.push(BuildRefine(current, context, schema, value));\n const result = E.ReduceAnd(conditions);\n return result;\n}\n// ----------------------------------------------------------------\n// Check\n// ----------------------------------------------------------------\nexport function CheckSchemaPushStack(stack, context, schema, value) {\n return (context.Push() && CheckSchema(stack, context, schema, value)) && context.Pop();\n}\nexport function CheckSchema(stack, context, schema, value) {\n const current = Stack.NextStack(stack, schema);\n const result = Schema.IsSchemaBoolean(schema) ? CheckSchemaBoolean(current, context, schema, value) : ((!Schema.IsType(schema) || CheckType(current, context, schema, value)) &&\n (!(G.IsObject(value) && !G.IsArray(value)) || ((!Schema.IsRequired(schema) || CheckRequired(current, context, schema, value)) &&\n (!Schema.IsAdditionalProperties(schema) || CheckAdditionalProperties(current, context, schema, value)) &&\n (!Schema.IsDependencies(schema) || CheckDependencies(current, context, schema, value)) &&\n (!Schema.IsDependentRequired(schema) || CheckDependentRequired(current, context, schema, value)) &&\n (!Schema.IsDependentSchemas(schema) || CheckDependentSchemas(current, context, schema, value)) &&\n (!Schema.IsPatternProperties(schema) || CheckPatternProperties(current, context, schema, value)) &&\n (!Schema.IsProperties(schema) || CheckProperties(current, context, schema, value)) &&\n (!Schema.IsPropertyNames(schema) || CheckPropertyNames(current, context, schema, value)) &&\n (!Schema.IsMinProperties(schema) || CheckMinProperties(current, context, schema, value)) &&\n (!Schema.IsMaxProperties(schema) || CheckMaxProperties(current, context, schema, value)))) &&\n (!G.IsArray(value) || ((!Schema.IsAdditionalItems(schema) || CheckAdditionalItems(current, context, schema, value)) &&\n (!Schema.IsContains(schema) || CheckContains(current, context, schema, value)) &&\n (!Schema.IsItems(schema) || CheckItems(current, context, schema, value)) &&\n (!Schema.IsMinContains(schema) || CheckMinContains(current, context, schema, value)) &&\n (!Schema.IsMaxContains(schema) || CheckMaxContains(current, context, schema, value)) &&\n (!Schema.IsMinItems(schema) || CheckMinItems(current, context, schema, value)) &&\n (!Schema.IsMaxItems(schema) || CheckMaxItems(current, context, schema, value)) &&\n (!Schema.IsPrefixItems(schema) || CheckPrefixItems(current, context, schema, value)) &&\n (!Schema.IsUniqueItems(schema) || CheckUniqueItems(current, context, schema, value)))) &&\n (!G.IsString(value) || ((!Schema.IsMinLength(schema) || CheckMinLength(current, context, schema, value)) &&\n (!Schema.IsMaxLength(schema) || CheckMaxLength(current, context, schema, value)) &&\n (!Schema.IsFormat(schema) || CheckFormat(current, context, schema, value)) &&\n (!Schema.IsPattern(schema) || CheckPattern(current, context, schema, value)))) &&\n (!(G.IsNumber(value) || G.IsBigInt(value)) || ((!Schema.IsExclusiveMinimum(schema) || CheckExclusiveMinimum(current, context, schema, value)) &&\n (!Schema.IsExclusiveMaximum(schema) || CheckExclusiveMaximum(current, context, schema, value)) &&\n (!Schema.IsMinimum(schema) || CheckMinimum(current, context, schema, value)) &&\n (!Schema.IsMaximum(schema) || CheckMaximum(current, context, schema, value)) &&\n (!Schema.IsMultipleOf(schema) || CheckMultipleOf(current, context, schema, value)))) &&\n (!Schema.IsRef(schema) || CheckRef(current, context, schema, value)) &&\n (!Schema.IsRecursiveRef(schema) || CheckRecursiveRef(current, context, schema, value)) &&\n (!Schema.IsDynamicRef(schema) || CheckDynamicRef(current, context, schema, value)) &&\n (!Schema.IsConst(schema) || CheckConst(current, context, schema, value)) &&\n (!Schema.IsEnum(schema) || CheckEnum(current, context, schema, value)) &&\n (!Schema.IsIf(schema) || CheckIf(current, context, schema, value)) &&\n (!Schema.IsNot(schema) || CheckNot(current, context, schema, value)) &&\n (!Schema.IsAllOf(schema) || CheckAllOf(current, context, schema, value)) &&\n (!Schema.IsAnyOf(schema) || CheckAnyOf(current, context, schema, value)) &&\n (!Schema.IsOneOf(schema) || CheckOneOf(current, context, schema, value)) &&\n (!Schema.IsUnevaluatedItems(schema) || (!G.IsArray(value) || CheckUnevaluatedItems(current, context, schema, value))) &&\n (!Schema.IsUnevaluatedProperties(schema) || (!G.IsObject(value) || CheckUnevaluatedProperties(current, context, schema, value))) &&\n (!Schema.IsRefine(schema) || CheckRefine(current, context, schema, value)));\n return result;\n}\n// ----------------------------------------------------------------\n// Error\n// ----------------------------------------------------------------\nexport function ErrorSchemaPushStack(stack, context, schemaPath, instancePath, schema, value) {\n return (context.Push() && ErrorSchema(stack, context, schemaPath, instancePath, schema, value)) && context.Pop();\n}\nexport function ErrorSchema(stack, context, schemaPath, instancePath, schema, value) {\n // Optimization: We can safely terminate here when the context is at capacity because we are unable to\n // append additional errors. It is worth being mindful that logical keywords such as allOf, anyOf,\n // oneOf pass a new context per operand, so the capacity check applies per context, not across the\n // full set of errors accumulated by the schema as a whole. (review)\n if (context.AtCapacity())\n return false;\n const current = Stack.NextStack(stack, schema);\n const result = (Schema.IsSchemaBoolean(schema)) ? ErrorSchemaBoolean(current, context, schemaPath, instancePath, schema, value) : (!!(+(!Schema.IsType(schema) || ErrorType(current, context, schemaPath, instancePath, schema, value)) &\n +(!(G.IsObject(value) && !G.IsArray(value)) || !!(+(!Schema.IsRequired(schema) || ErrorRequired(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsAdditionalProperties(schema) || ErrorAdditionalProperties(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsDependencies(schema) || ErrorDependencies(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsDependentRequired(schema) || ErrorDependentRequired(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsDependentSchemas(schema) || ErrorDependentSchemas(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsPatternProperties(schema) || ErrorPatternProperties(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsProperties(schema) || ErrorProperties(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsPropertyNames(schema) || ErrorPropertyNames(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsMinProperties(schema) || ErrorMinProperties(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsMaxProperties(schema) || ErrorMaxProperties(current, context, schemaPath, instancePath, schema, value)))) &\n +(!G.IsArray(value) || !!(+(!Schema.IsAdditionalItems(schema) || ErrorAdditionalItems(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsContains(schema) || ErrorContains(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsItems(schema) || ErrorItems(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsMinContains(schema) || ErrorMinContains(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsMaxContains(schema) || ErrorMaxContains(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsMinItems(schema) || ErrorMinItems(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsMaxItems(schema) || ErrorMaxItems(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsPrefixItems(schema) || ErrorPrefixItems(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsUniqueItems(schema) || ErrorUniqueItems(current, context, schemaPath, instancePath, schema, value)))) &\n +(!G.IsString(value) || !!(+(!Schema.IsMinLength(schema) || ErrorMinLength(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsMaxLength(schema) || ErrorMaxLength(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsFormat(schema) || ErrorFormat(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsPattern(schema) || ErrorPattern(current, context, schemaPath, instancePath, schema, value)))) &\n +(!(G.IsNumber(value) || G.IsBigInt(value)) || !!(+(!Schema.IsExclusiveMinimum(schema) || ErrorExclusiveMinimum(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsExclusiveMaximum(schema) || ErrorExclusiveMaximum(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsMinimum(schema) || ErrorMinimum(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsMaximum(schema) || ErrorMaximum(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsMultipleOf(schema) || ErrorMultipleOf(current, context, schemaPath, instancePath, schema, value)))) &\n +(!Schema.IsRef(schema) || ErrorRef(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsRecursiveRef(schema) || ErrorRecursiveRef(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsDynamicRef(schema) || ErrorDynamicRef(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsConst(schema) || ErrorConst(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsEnum(schema) || ErrorEnum(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsIf(schema) || ErrorIf(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsNot(schema) || ErrorNot(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsAllOf(schema) || ErrorAllOf(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsAnyOf(schema) || ErrorAnyOf(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsOneOf(schema) || ErrorOneOf(current, context, schemaPath, instancePath, schema, value)) &\n +(!Schema.IsUnevaluatedItems(schema) || (!G.IsArray(value) || ErrorUnevaluatedItems(current, context, schemaPath, instancePath, schema, value))) &\n +(!Schema.IsUnevaluatedProperties(schema) || (!G.IsObject(value) || ErrorUnevaluatedProperties(current, context, schemaPath, instancePath, schema, value)))) &&\n (!Schema.IsRefine(schema) || ErrorRefine(current, context, schemaPath, instancePath, schema, value)));\n return result;\n}\n","// deno-fmt-ignore-file\nimport { Arguments } from '../system/arguments/index.mjs';\nimport { Get as GetLocalizationFunction } from '../system/locale/_config.mjs';\nimport * as Engine from './engine/index.mjs';\n/** Returns an array of validation errors for the given value. */\nexport function Errors(...args) {\n const [context, schema, value] = Arguments.Match(args, {\n 3: (context, schema, value) => [context, schema, value],\n 2: (schema, value) => [{}, schema, value]\n });\n const stack = Engine.Stack(context, schema);\n const errorContext = new Engine.ErrorContext();\n const result = Engine.ErrorSchema(stack, errorContext, '#', '', schema, value);\n const errors = errorContext.GetErrors();\n const locale = GetLocalizationFunction();\n const localized = errors.map(error => ({ ...error, message: locale(error) }));\n return [result, localized];\n}\n","import { Get } from './settings.mjs';\n// ------------------------------------------------------------------\n// TempMaxErrors\n// ------------------------------------------------------------------\nlet TempMaxErrors = 0;\n// ------------------------------------------------------------------\n// [Internal] EnableParseErrors\n// ------------------------------------------------------------------\nexport function EnableParseErrors() {\n const settings = Get();\n TempMaxErrors = settings.maxErrors;\n settings.maxErrors = settings.maxParseErrors;\n}\n// ------------------------------------------------------------------\n// [Internal] DisableParseErrors\n// ------------------------------------------------------------------\nexport function DisableParseErrors() {\n const settings = Get();\n settings.maxErrors = TempMaxErrors;\n}\n","// deno-fmt-ignore-file\n// deno-lint-ignore-file\nimport { Arguments } from '../system/arguments/index.mjs';\nimport * as Engine from './engine/index.mjs';\n/** Checks a value against the provided schema */\nexport function Check(...args) {\n const [context, schema, value] = Arguments.Match(args, {\n 3: (context, schema, value) => [context, schema, value],\n 2: (schema, value) => [{}, schema, value]\n });\n const stack = Engine.Stack(context, schema);\n const checkContext = new Engine.CheckContext();\n return Engine.CheckSchema(stack, checkContext, schema, value);\n}\n","// deno-fmt-ignore-file\nimport { Arguments } from '../../system/arguments/index.mjs';\nimport { Check as SchemaCheck } from '../../schema/index.mjs';\n/** Checks a value matches the provided type. */\nexport function Check(...args) {\n const [context, type, value] = Arguments.Match(args, {\n 3: (context, type, value) => [context, type, value],\n 2: (type, value) => [{}, type, value]\n });\n return SchemaCheck(context, type, value);\n}\n","// deno-fmt-ignore-file\nimport { Arguments } from '../../system/arguments/index.mjs';\nimport { Errors as SchemaErrors } from '../../schema/index.mjs';\n/** Returns an array of validation errors for the given value. */\nexport function Errors(...args) {\n const [context, type, value] = Arguments.Match(args, {\n 3: (context, type, value) => [context, type, value],\n 2: (type, value) => [{}, type, value],\n });\n const [_, errors] = SchemaErrors(context, type, value);\n return errors;\n}\n","// deno-fmt-ignore-file\nimport { Arguments } from '../../system/arguments/index.mjs';\nimport { Check } from '../check/index.mjs';\nimport { Errors } from '../errors/index.mjs';\n// ------------------------------------------------------------------\n// AssertError\n// ------------------------------------------------------------------\nexport class AssertError extends Error {\n constructor(source, value, errors) {\n super(source);\n Object.defineProperty(this, 'cause', {\n value: { source, errors, value },\n writable: false,\n configurable: false,\n enumerable: false\n });\n }\n}\n/** Asserts the a value matches the given type. This function returns a TypeScript type asserts predicate and will throw AssertError if value does not match. */\nexport function Assert(...args) {\n const [context, type, value] = Arguments.Match(args, {\n 3: (context, type, value) => [context, type, value],\n 2: (type, value) => [{}, type, value]\n });\n const check = Check(context, type, value);\n if (!check)\n throw new AssertError('Assert', value, Errors(context, type, value));\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { FromType } from './from_type.mjs';\nexport function FromArray(context, type, value) {\n if (!Guard.IsArray(value))\n return value;\n return value.map((value) => FromType(context, type.items, value));\n}\n","// deno-fmt-ignore-file\nimport { Ref } from '../../type/index.mjs';\nimport { FromType } from './from_type.mjs';\nexport function FromCyclic(context, type, value) {\n return FromType({ ...context, ...type.$defs }, Ref(type.$ref), value);\n}\n","// deno-fmt-ignore-file\nimport { Evaluate, Instantiate, IsObject, With } from '../../type/index.mjs';\nimport { Guard } from '../../guard/index.mjs';\nimport { FromType } from './from_type.mjs';\n// ------------------------------------------------------------------\n// EvaluateIntersection\n// ------------------------------------------------------------------\nfunction EvaluateIntersection(context, type) {\n // Note: reinterpret unevaluatedProperties as additionalProperties\n const additionalProperties = Guard.HasPropertyKey(type, 'unevaluatedProperties')\n ? { additionalProperties: type.unevaluatedProperties }\n : {};\n const instantiated = Instantiate(context, type);\n const evaluated = Evaluate(instantiated);\n return IsObject(evaluated)\n ? With(evaluated, additionalProperties)\n : evaluated;\n}\n// ------------------------------------------------------------------\n// FromIntersection\n// ------------------------------------------------------------------\nexport function FromIntersect(context, type, value) {\n // Note: Evaluate and route back to FromType in evaluated form (likely an Object)\n const evaluated = EvaluateIntersection(context, type);\n return FromType(context, evaluated, value);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nexport function GetAdditionalProperties(type) {\n const additionalProperties = Guard.HasPropertyKey(type, 'additionalProperties') ? type.additionalProperties : undefined;\n return additionalProperties;\n}\n","// deno-fmt-ignore-file\nimport { IsSchema } from '../../type/index.mjs';\nimport { Guard } from '../../guard/index.mjs';\nimport { FromType } from './from_type.mjs';\nimport { Check } from '../check/index.mjs';\nimport { GetAdditionalProperties } from './additional.mjs';\n// ------------------------------------------------------------------\n// FromObject\n// ------------------------------------------------------------------\nexport function FromObject(context, type, value) {\n if (!Guard.IsObject(value) || Guard.IsArray(value))\n return value;\n const additionalProperties = GetAdditionalProperties(type);\n for (const key of Guard.Keys(value)) {\n if (Guard.HasPropertyKey(type.properties, key)) {\n value[key] = FromType(context, type.properties[key], value[key]);\n continue;\n }\n const unknownCheck = \n // 1. additionalProperties: true\n (Guard.IsBoolean(additionalProperties) && Guard.IsEqual(additionalProperties, true))\n // 2. additionalProperties: TSchema\n || IsSchema(additionalProperties) && Check(context, additionalProperties, value[key]);\n if (unknownCheck) {\n value[key] = FromType(context, additionalProperties, value[key]);\n continue;\n }\n delete value[key];\n }\n return value;\n}\n","// deno-fmt-ignore-file\nimport { IsSchema, RecordPattern, RecordValue } from '../../type/index.mjs';\nimport { Guard } from '../../guard/index.mjs';\nimport { FromType } from './from_type.mjs';\nimport { Check } from '../check/index.mjs';\nimport { GetAdditionalProperties } from './additional.mjs';\n// ------------------------------------------------------------------\n// FromRecord\n// ------------------------------------------------------------------\nexport function FromRecord(context, type, value) {\n if (!Guard.IsObject(value))\n return value;\n const additionalProperties = GetAdditionalProperties(type);\n const [recordPattern, recordValue] = [new RegExp(RecordPattern(type)), RecordValue(type)];\n for (const key of Guard.Keys(value)) {\n if (recordPattern.test(key)) {\n value[key] = FromType(context, recordValue, value[key]);\n continue;\n }\n const unknownCheck = \n // 1. additionalProperties: true\n (Guard.IsBoolean(additionalProperties) && Guard.IsEqual(additionalProperties, true))\n // 2. additionalProperties: TSchema\n || IsSchema(additionalProperties) && Check(context, additionalProperties, value[key]);\n if (unknownCheck) {\n value[key] = FromType(context, additionalProperties, value[key]);\n continue;\n }\n delete value[key];\n }\n return value;\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { FromType } from './from_type.mjs';\nexport function FromRef(context, type, value) {\n return Guard.HasPropertyKey(context, type.$ref)\n ? FromType(context, context[type.$ref], value)\n : value;\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { FromType } from './from_type.mjs';\nexport function FromTuple(context, schema, value) {\n if (!Guard.IsArray(value))\n return value;\n const length = Math.min(value.length, schema.items.length);\n for (let index = 0; index < length; index++) {\n value[index] = FromType(context, schema.items[index], value[index]);\n }\n return Guard.IsGreaterThan(value.length, length)\n ? value.slice(0, length)\n : value;\n}\n","// deno-fmt-ignore-file\nimport { Clone as SystemClone } from '../../system/memory/clone.mjs';\n// ------------------------------------------------------------------\n// Clone\n// ------------------------------------------------------------------\n/**\n * Returns a Clone of the given value. This function is similar to structuredClone()\n * but also supports deep cloning instances of Map, Set and TypeArray.\n */\nexport function Clone(value) {\n return SystemClone(value);\n}\n","// deno-fmt-ignore-file\nimport { Check } from '../check/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { FromType } from './from_type.mjs';\nexport function FromUnion(context, type, value) {\n for (const schema of type.anyOf) {\n const clean = FromType(context, schema, Clone(value));\n if (Check(context, schema, clean))\n return clean;\n }\n return value;\n}\n","// deno-fmt-ignore-file\nimport * as T from '../../type/index.mjs';\nimport { FromArray } from './from_array.mjs';\nimport { FromCyclic } from './from_cyclic.mjs';\nimport { FromIntersect } from './from_intersect.mjs';\nimport { FromObject } from './from_object.mjs';\nimport { FromRecord } from './from_record.mjs';\nimport { FromRef } from './from_ref.mjs';\nimport { FromTuple } from './from_tuple.mjs';\nimport { FromUnion } from './from_union.mjs';\nexport function FromType(context, type, value) {\n return (T.IsArray(type) ? FromArray(context, type, value) :\n T.IsCyclic(type) ? FromCyclic(context, type, value) :\n T.IsIntersect(type) ? FromIntersect(context, type, value) :\n T.IsObject(type) ? FromObject(context, type, value) :\n T.IsRecord(type) ? FromRecord(context, type, value) :\n T.IsRef(type) ? FromRef(context, type, value) :\n T.IsTuple(type) ? FromTuple(context, type, value) :\n T.IsUnion(type) ? FromUnion(context, type, value) :\n value);\n}\n","// deno-fmt-ignore-file\nimport Guard from '../../guard/index.mjs';\nimport { IsArray, Array as _Array_, ArrayOptions } from '../../type/index.mjs';\nimport { IsUnion, Union } from '../../type/index.mjs';\nimport { IsObject, Object as _Object_ } from '../../type/index.mjs';\nimport { IsRecord, Record, RecordKey, RecordValue } from '../../type/index.mjs';\nimport { IsTuple, Tuple } from '../../type/index.mjs';\nimport { IsIntersect, Intersect } from '../../type/index.mjs';\nimport { Priority } from '../../type/index.mjs';\n// ------------------------------------------------------------------\n// Modifiers (Mutable)\n//\n// Prioritized types lose `~modifier` properties and additional constraints\n// (e.g. additionalProperties) during the mapping phase and need to be\n// reassigned afterward. This is a fast mutable assignment to handle that,\n// but we should consider a more general solution. (review)\n//\n// ------------------------------------------------------------------\nfunction Modifiers(type, next) {\n for (const key of Guard.Keys(type)) {\n if (Guard.HasPropertyKey(next, key))\n continue;\n next[key] = type[key];\n }\n return next;\n}\n// ------------------------------------------------------------------\n// Properties\n// ------------------------------------------------------------------\nfunction FromProperties(properties) {\n const result = {};\n for (const key of Guard.Keys(properties))\n result[key] = FromType(properties[key]);\n return result;\n}\n// ------------------------------------------------------------------\n// PriorityTypes\n// ------------------------------------------------------------------\nfunction FromPriorityTypes(types) {\n return FromTypes(Priority(types));\n}\n// ------------------------------------------------------------------\n// Types\n// ------------------------------------------------------------------\nfunction FromTypes(types) {\n return types.map(type => FromType(type));\n}\n// ------------------------------------------------------------------\n// Type\n// ------------------------------------------------------------------\nfunction FromType(type) {\n const next = (IsArray(type) ? _Array_(FromType(type.items), ArrayOptions(type)) :\n IsIntersect(type) ? Intersect(FromTypes(type.allOf)) :\n IsUnion(type) ? Union(FromPriorityTypes(type.anyOf)) :\n IsObject(type) ? _Object_(FromProperties(type.properties)) :\n IsRecord(type) ? Record(RecordKey(type), FromType(RecordValue(type))) :\n IsTuple(type) ? Tuple(FromTypes(type.items)) :\n type);\n return Modifiers(type, next);\n}\n// ------------------------------------------------------------------\n// UnionPrioritySort\n// ------------------------------------------------------------------\n/**\n * (Type-Preprocessor) Recursively reorders Union variants from narrowest to broadest, ensuring\n * more specific types (e.g. Literal) are evaluated before broader types (e.g. String). Used\n * prior to Clean, Decode, and Encode operations.\n */\nexport function UnionPrioritySort(type) {\n const result = FromType(type);\n return result;\n}\n","import { Arguments, Settings } from '../../system/index.mjs';\nimport { FromType } from './from_type.mjs';\nimport { UnionPrioritySort } from '../shared/union_priority_sort.mjs';\n/**\n * Cleans a value by removing non-evaluated properties and elements as derived from the provided type.\n * This function returns unknown so callers should Check the return value before use. This function\n * mutates the provided value. If mutation is not wanted, you should Clone the value before passing\n * to this function.\n */\nexport function Clean(...args) {\n const [context, type, value] = Arguments.Match(args, {\n 3: (context, type, value) => [context, type, value],\n 2: (type, value) => [{}, type, value]\n });\n const sorted = Settings.Get().unionPrioritySort ? UnionPrioritySort(type) : type;\n return FromType(context, sorted, value);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\n// ------------------------------------------------------------------\n// Guard\n// ------------------------------------------------------------------\nexport function IsOk(value) {\n return Guard.IsObject(value) && Guard.HasPropertyKey(value, 'value');\n}\n// ------------------------------------------------------------------\n// Factory\n// ------------------------------------------------------------------\nexport function Ok(value) {\n return { value };\n}\nexport function Fail() {\n return undefined;\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { Ok } from './try_result.mjs';\nexport function TryArray(value) {\n return Guard.IsArray(value) ? Ok(value) : Ok([value]);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { Ok, Fail } from './try_result.mjs';\n// ------------------------------------------------------------------\n// Boolean\n// ------------------------------------------------------------------\nfunction FromBoolean(value) {\n return Guard.IsEqual(value, true) ? Ok(BigInt(1)) : Ok(BigInt(0));\n}\n// ------------------------------------------------------------------\n// String\n// ------------------------------------------------------------------\nconst bigintPattern = /^-?(0|[1-9]\\d*)n$/;\nconst decimalPattern = /^-?(0|[1-9]\\d*)\\.\\d+$/;\nconst integerPattern = /^-?(0|[1-9]\\d*)$/;\nfunction IsStringBigIntLike(value) {\n return bigintPattern.test(value);\n}\nfunction IsStringDecimalLike(value) {\n return decimalPattern.test(value);\n}\nfunction IsStringIntegerLike(value) {\n return integerPattern.test(value);\n}\nfunction FromString(value) {\n const lowercase = value.toLowerCase();\n return (IsStringBigIntLike(value) ? Ok(BigInt(value.slice(0, value.length - 1))) :\n IsStringDecimalLike(value) ? Ok(BigInt(value.split('.')[0])) :\n IsStringIntegerLike(value) ? Ok(BigInt(value)) :\n Guard.IsEqual(lowercase, 'false') ? Ok(BigInt(0)) :\n Guard.IsEqual(lowercase, 'true') ? Ok(BigInt(1)) :\n Fail());\n}\n// ------------------------------------------------------------------\n// Try\n// ------------------------------------------------------------------\nexport function TryBigInt(value) {\n return (Guard.IsBigInt(value) ? Ok(value) :\n Guard.IsBoolean(value) ? FromBoolean(value) :\n Guard.IsNumber(value) ? Ok(BigInt(Math.trunc(value))) :\n Guard.IsNull(value) ? Ok(BigInt(0)) :\n Guard.IsString(value) ? FromString(value) :\n Guard.IsUndefined(value) ? Ok(BigInt(0)) :\n Fail());\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { Ok, Fail } from './try_result.mjs';\n// ------------------------------------------------------------------\n// BigInt\n// ------------------------------------------------------------------\nfunction FromBigInt(value) {\n return (Guard.IsEqual(value, BigInt(0)) ? Ok(false) :\n Guard.IsEqual(value, BigInt(1)) ? Ok(true) :\n Fail());\n}\n// ------------------------------------------------------------------\n// Number\n// ------------------------------------------------------------------\nfunction FromNumber(value) {\n return (Guard.IsEqual(value, 0) ? Ok(false) :\n Guard.IsEqual(value, 1) ? Ok(true) :\n Fail());\n}\n// ------------------------------------------------------------------\n// String\n// ------------------------------------------------------------------\nfunction FromString(value) {\n return (Guard.IsEqual(value.toLowerCase(), 'false') ? Ok(false) :\n Guard.IsEqual(value.toLowerCase(), 'true') ? Ok(true) :\n Guard.IsEqual(value, '0') ? Ok(false) :\n Guard.IsEqual(value, '1') ? Ok(true) :\n Fail());\n}\n// ------------------------------------------------------------------\n// Try\n// ------------------------------------------------------------------\nexport function TryBoolean(value) {\n return (Guard.IsBigInt(value) ? FromBigInt(value) :\n Guard.IsBoolean(value) ? Ok(value) :\n Guard.IsNumber(value) ? FromNumber(value) :\n Guard.IsNull(value) ? Ok(false) :\n Guard.IsString(value) ? FromString(value) :\n Guard.IsUndefined(value) ? Ok(false) :\n Fail());\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { Ok, Fail } from './try_result.mjs';\n// ------------------------------------------------------------------\n// BigInt\n// ------------------------------------------------------------------\nfunction FromBigInt(value) {\n return Guard.IsEqual(value, BigInt(0)) ? Ok(null) : Fail();\n}\n// ------------------------------------------------------------------\n// Boolean\n// ------------------------------------------------------------------\nfunction FromBoolean(value) {\n return Guard.IsEqual(value, false) ? Ok(null) : Fail();\n}\n// ------------------------------------------------------------------\n// Number\n// ------------------------------------------------------------------\nfunction FromNumber(value) {\n return Guard.IsEqual(value, 0) ? Ok(null) : Fail();\n}\n// ------------------------------------------------------------------\n// String\n// ------------------------------------------------------------------\nfunction FromString(value) {\n const lowercase = value.toLowerCase();\n const predicate = Guard.IsEqual(lowercase, 'undefined')\n || Guard.IsEqual(lowercase, 'null')\n || Guard.IsEqual(value, '')\n || Guard.IsEqual(value, '0');\n return predicate ? Ok(null) : Fail();\n}\n// ------------------------------------------------------------------\n// Try\n// ------------------------------------------------------------------\nexport function TryNull(value) {\n return (Guard.IsBigInt(value) ? FromBigInt(value) :\n Guard.IsBoolean(value) ? FromBoolean(value) :\n Guard.IsNumber(value) ? FromNumber(value) :\n Guard.IsNull(value) ? Ok(null) :\n Guard.IsString(value) ? FromString(value) :\n Guard.IsUndefined(value) ? Ok(null) :\n Fail());\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { Ok, Fail, IsOk } from './try_result.mjs';\nimport { TryBigInt } from './try_bigint.mjs';\n// ------------------------------------------------------------------\n// BigInt\n// ------------------------------------------------------------------\nconst maxBigInt = BigInt(Number.MAX_SAFE_INTEGER);\nconst minBigInt = BigInt(Number.MIN_SAFE_INTEGER);\nfunction FromBigInt(value) {\n return (value <= maxBigInt && value >= minBigInt) ? Ok(Number(value)) : Fail();\n}\nfunction FromBoolean(value) {\n return Ok(value ? 1 : 0);\n}\n// ------------------------------------------------------------------\n// String\n// ------------------------------------------------------------------\nfunction FromString(value) {\n const coerced = +value;\n if (Guard.IsNumber(coerced))\n return Ok(coerced);\n const lowercase = value.toLowerCase();\n if (Guard.IsEqual(lowercase, 'false'))\n return Ok(0);\n if (Guard.IsEqual(lowercase, 'true'))\n return Ok(1);\n const result = TryBigInt(value);\n if (IsOk(result))\n return (result.value <= maxBigInt && result.value >= minBigInt) ? Ok(Number(result.value)) : Fail();\n return Fail();\n}\n// ------------------------------------------------------------------\n// Try\n// ------------------------------------------------------------------\nexport function TryNumber(value) {\n return (Guard.IsBigInt(value) ? FromBigInt(value) :\n Guard.IsBoolean(value) ? FromBoolean(value) :\n Guard.IsNumber(value) ? Ok(value) :\n Guard.IsNull(value) ? Ok(0) :\n Guard.IsString(value) ? FromString(value) :\n Guard.IsUndefined(value) ? Ok(0) :\n Fail());\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { Ok, Fail } from './try_result.mjs';\nexport function TryString(value) {\n return (Guard.IsBigInt(value) ? Ok(value.toString()) :\n Guard.IsBoolean(value) ? Ok(value.toString()) :\n Guard.IsNumber(value) ? Ok(value.toString()) :\n Guard.IsNull(value) ? Ok('null') :\n Guard.IsString(value) ? Ok(value) :\n Guard.IsUndefined(value) ? Ok('') :\n Fail());\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../../guard/index.mjs';\nimport { Ok, Fail } from './try_result.mjs';\n// ------------------------------------------------------------------\n// BigInt\n// ------------------------------------------------------------------\nfunction FromBigInt(value) {\n return Guard.IsEqual(value, BigInt(0)) ? Ok(undefined) : Fail();\n}\n// ------------------------------------------------------------------\n// Boolean\n// ------------------------------------------------------------------\nfunction FromBoolean(value) {\n return Guard.IsEqual(value, false) ? Ok(undefined) : Fail();\n}\n// ------------------------------------------------------------------\n// Number\n// ------------------------------------------------------------------\nfunction FromNumber(value) {\n return Guard.IsEqual(value, 0) ? Ok(undefined) : Fail();\n}\n// ------------------------------------------------------------------\n// String\n// ------------------------------------------------------------------\nfunction FromString(value) {\n const lowercase = value.toLowerCase();\n const predicate = Guard.IsEqual(lowercase, 'undefined')\n || Guard.IsEqual(lowercase, 'null')\n || Guard.IsEqual(value, '')\n || Guard.IsEqual(value, '0');\n return predicate ? Ok(undefined) : Fail();\n}\n// ------------------------------------------------------------------\n// Try\n// ------------------------------------------------------------------\nexport function TryUndefined(value) {\n return (Guard.IsBigInt(value) ? FromBigInt(value) :\n Guard.IsBoolean(value) ? FromBoolean(value) :\n Guard.IsNumber(value) ? FromNumber(value) :\n Guard.IsNull(value) ? Ok(undefined) :\n Guard.IsString(value) ? FromString(value) :\n Guard.IsUndefined(value) ? Ok(value) :\n Fail());\n}\n","// deno-fmt-ignore-file\nimport { FromType } from './from_type.mjs';\nimport { Try } from './try/index.mjs';\nexport function FromArray(context, type, value) {\n const result = Try.TryArray(value);\n return result.value.map(value => FromType(context, type.items, value));\n}\n","// deno-fmt-ignore-file\nimport { Try } from './try/index.mjs';\nexport function FromBigInt(_context, _type, value) {\n const result = Try.TryBigInt(value);\n return Try.IsOk(result) ? result.value : value;\n}\n","// deno-fmt-ignore-file\nimport { Try } from './try/index.mjs';\nexport function FromBoolean(_context, _type, value) {\n const result = Try.TryBoolean(value);\n return Try.IsOk(result) ? result.value : value;\n}\n","// deno-fmt-ignore-file\nimport { Ref } from '../../type/index.mjs';\nimport { FromType } from './from_type.mjs';\nexport function FromCyclic(context, type, value) {\n return FromType({ ...context, ...type.$defs }, Ref(type.$ref), value);\n}\n","// deno-fmt-ignore-file\nimport { Evaluate } from '../../type/index.mjs';\nimport { FromType } from './from_type.mjs';\nexport function FromEnum(context, type, value) {\n return FromType(context, Evaluate(type), value);\n}\n","// deno-fmt-ignore-file\nimport { Try } from './try/index.mjs';\nexport function FromInteger(_context, _type, value) {\n const result = Try.TryNumber(value);\n return Try.IsOk(result) ? Math.trunc(result.value) : value;\n}\n","// deno-fmt-ignore-file\nimport { Evaluate, Instantiate } from '../../type/index.mjs';\nimport { FromType } from './from_type.mjs';\nexport function FromIntersect(context, type, value) {\n const instantiated = Instantiate(context, type);\n const evaluated = Evaluate(instantiated);\n return FromType(context, evaluated, value);\n}\n","// deno-fmt-ignore-file\nimport { Unreachable } from '../../system/unreachable/index.mjs';\nimport { Guard } from '../../guard/index.mjs';\nimport { IsLiteralBigInt, IsLiteralBoolean, IsLiteralNumber, IsLiteralString } from '../../type/index.mjs';\nimport { Try } from './try/index.mjs';\n// ------------------------------------------------------------------\n// BigInt\n// ------------------------------------------------------------------\nfunction FromLiteralBigInt(_context, type, value) {\n const result = Try.TryBigInt(value);\n return Try.IsOk(result) && Guard.IsEqual(type.const, result.value) ? result.value : value;\n}\n// ------------------------------------------------------------------\n// Boolean\n// ------------------------------------------------------------------\nfunction FromLiteralBoolean(_context, type, value) {\n const result = Try.TryBoolean(value);\n return Try.IsOk(result) && Guard.IsEqual(type.const, result.value) ? result.value : value;\n}\n// ------------------------------------------------------------------\n// Number\n// ------------------------------------------------------------------\nfunction FromLiteralNumber(_context, type, value) {\n const result = Try.TryNumber(value);\n return Try.IsOk(result) && Guard.IsEqual(type.const, result.value) ? result.value : value;\n}\n// ------------------------------------------------------------------\n// String\n// ------------------------------------------------------------------\nfunction FromLiteralString(_context, type, value) {\n const result = Try.TryString(value);\n return Try.IsOk(result) && Guard.IsEqual(type.const, result.value) ? result.value : value;\n}\n// deno-coverage-ignore-start - unreachable | guarded\nexport function FromLiteral(context, type, value) {\n if (Guard.IsEqual(type.const, value))\n return value;\n return (IsLiteralBigInt(type) ? FromLiteralBigInt(context, type, value) :\n IsLiteralBoolean(type) ? FromLiteralBoolean(context, type, value) :\n IsLiteralNumber(type) ? FromLiteralNumber(context, type, value) :\n IsLiteralString(type) ? FromLiteralString(context, type, value) :\n Unreachable());\n}\n// deno-coverage-ignore-stop\n","// deno-fmt-ignore-file\nimport { Try } from './try/index.mjs';\nexport function FromNull(_context, _type, value) {\n const result = Try.TryNull(value);\n return Try.IsOk(result) ? result.value : value;\n}\n","// deno-fmt-ignore-file\nimport { Try } from './try/index.mjs';\nexport function FromNumber(_context, _type, value) {\n const result = Try.TryNumber(value);\n return Try.IsOk(result) ? result.value : value;\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { FromType } from './from_type.mjs';\n/**\n * Used by Object and Record Types. The entries are derived from the known\n * properties obtained from 'properties' and 'patternProperties' respectively.\n */\nexport function FromAdditionalProperties(context, entries, additionalProperties, value) {\n const keys = Guard.Keys(value);\n for (const [regexp, _] of entries) {\n for (const key of keys) {\n if (!regexp.test(key)) {\n value[key] = FromType(context, additionalProperties, value[key]);\n }\n }\n }\n return value;\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsOptional } from '../../type/index.mjs';\n// ------------------------------------------------------------------\n// IsOptionalUndefined\n//\n// Indicates whether a key should be excluded from processing when it is \n// defined as optional in the schema and its corresponding value is undefined. \n// This case cannot be reliably distinguished from an omitted key, and therefore \n// introduces ambiguity between a key that is not provided and one that is \n// explicitly assigned an undefined value.\n// ------------------------------------------------------------------\nexport function IsOptionalUndefined(property, key, value) {\n return IsOptional(property) && Guard.IsUndefined(value[key]);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { FromType } from './from_type.mjs';\nimport { FromAdditionalProperties } from './from_additional.mjs';\nimport { IsOptionalUndefined } from '../shared/optional_undefined.mjs';\n// ------------------------------------------------------------------\n// FromProperties\n// ------------------------------------------------------------------\nfunction FromProperties(context, type, value) {\n const entries = Guard.EntriesRegExp(type.properties);\n const keys = Guard.Keys(value);\n for (const [regexp, property] of entries) {\n for (const key of keys) {\n // Ignore for non-present or optional-undefined\n if (!regexp.test(key) || IsOptionalUndefined(property, key, value))\n continue;\n value[key] = FromType(context, property, value[key]);\n }\n }\n return (Guard.HasPropertyKey(type, 'additionalProperties') && Guard.IsObject(type.additionalProperties)\n ? FromAdditionalProperties(context, entries, type.additionalProperties, value)\n : value);\n}\nexport function FromObject(context, type, value) {\n return Guard.IsObjectNotArray(value)\n ? FromProperties(context, type, value)\n : value;\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { FromType } from './from_type.mjs';\nimport { FromAdditionalProperties } from './from_additional.mjs';\nfunction FromPatternProperties(context, type, value) {\n const entries = Guard.EntriesRegExp(type.patternProperties);\n const keys = Guard.Keys(value);\n for (const [regexp, schema] of entries) {\n for (const key of keys) {\n if (regexp.test(key)) {\n value[key] = FromType(context, schema, value[key]);\n }\n }\n }\n return (Guard.HasPropertyKey(type, 'additionalProperties') && Guard.IsObject(type.additionalProperties)\n ? FromAdditionalProperties(context, entries, type.additionalProperties, value)\n : value);\n}\nexport function FromRecord(context, type, value) {\n return Guard.IsObjectNotArray(value)\n ? FromPatternProperties(context, type, value)\n : value;\n}\n","// deno-fmt-ignore-file\nimport { FromType } from './from_type.mjs';\nimport { Guard } from '../../guard/index.mjs';\nexport function FromRef(context, type, value) {\n return (Guard.HasPropertyKey(context, type.$ref)\n ? FromType(context, context[type.$ref], value)\n : value);\n}\n","// deno-fmt-ignore-file\nimport { Try } from './try/index.mjs';\nexport function FromString(_context, _type, value) {\n const result = Try.TryString(value);\n return Try.IsOk(result) ? result.value : value;\n}\n","// deno-fmt-ignore-file\nimport { Evaluate } from '../../type/index.mjs';\nimport { FromType } from './from_type.mjs';\nexport function FromTemplateLiteral(context, type, value) {\n return FromType(context, Evaluate(type), value);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { FromType } from './from_type.mjs';\nexport function FromTuple(context, type, value) {\n if (!Guard.IsArray(value))\n return value;\n for (let index = 0; index < Math.min(type.items.length, value.length); index++) {\n value[index] = FromType(context, type.items[index], value[index]);\n }\n return value;\n}\n","// deno-fmt-ignore-file\nimport { Try } from './try/index.mjs';\nexport function FromUndefined(_context, _type, value) {\n const result = Try.TryUndefined(value);\n return Try.IsOk(result) ? result.value : value;\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { Check } from '../check/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { FromType } from './from_type.mjs';\nexport function FromUnion(context, type, value) {\n const matched = type.anyOf.some(type => Check(context, type, value));\n if (matched)\n return value;\n const candidates = type.anyOf.map(type => FromType(context, type, Clone(value)));\n const selected = candidates.find(value => Check(context, type, value));\n return Guard.IsUndefined(selected) ? value : selected;\n}\n","// deno-fmt-ignore-file\nimport { Try } from './try/index.mjs';\nexport function FromVoid(_context, _type, value) {\n const result = Try.TryUndefined(value);\n return Try.IsOk(result) ? (void 0) : value;\n}\n","// deno-fmt-ignore-file\nimport * as Type from '../../type/index.mjs';\nimport { FromArray } from './from_array.mjs';\nimport { FromBigInt } from './from_bigint.mjs';\nimport { FromBoolean } from './from_boolean.mjs';\nimport { FromCyclic } from './from_cyclic.mjs';\nimport { FromEnum } from './from_enum.mjs';\nimport { FromInteger } from './from_integer.mjs';\nimport { FromIntersect } from './from_intersect.mjs';\nimport { FromLiteral } from './from_literal.mjs';\nimport { FromNull } from './from_null.mjs';\nimport { FromNumber } from './from_number.mjs';\nimport { FromObject } from './from_object.mjs';\nimport { FromRecord } from './from_record.mjs';\nimport { FromRef } from './from_ref.mjs';\nimport { FromString } from './from_string.mjs';\nimport { FromTemplateLiteral } from './from_template_literal.mjs';\nimport { FromTuple } from './from_tuple.mjs';\nimport { FromUndefined } from './from_undefined.mjs';\nimport { FromUnion } from './from_union.mjs';\nimport { FromVoid } from './from_void.mjs';\nexport function FromType(context, type, value) {\n return (Type.IsArray(type) ? FromArray(context, type, value) :\n Type.IsBigInt(type) ? FromBigInt(context, type, value) :\n Type.IsBoolean(type) ? FromBoolean(context, type, value) :\n Type.IsCyclic(type) ? FromCyclic(context, type, value) :\n Type.IsEnum(type) ? FromEnum(context, type, value) :\n Type.IsInteger(type) ? FromInteger(context, type, value) :\n Type.IsIntersect(type) ? FromIntersect(context, type, value) :\n Type.IsLiteral(type) ? FromLiteral(context, type, value) :\n Type.IsNull(type) ? FromNull(context, type, value) :\n Type.IsNumber(type) ? FromNumber(context, type, value) :\n Type.IsObject(type) ? FromObject(context, type, value) :\n Type.IsRecord(type) ? FromRecord(context, type, value) :\n Type.IsRef(type) ? FromRef(context, type, value) :\n Type.IsString(type) ? FromString(context, type, value) :\n Type.IsTemplateLiteral(type) ? FromTemplateLiteral(context, type, value) :\n Type.IsTuple(type) ? FromTuple(context, type, value) :\n Type.IsUndefined(type) ? FromUndefined(context, type, value) :\n Type.IsUnion(type) ? FromUnion(context, type, value) :\n Type.IsVoid(type) ? FromVoid(context, type, value) :\n value);\n}\n","// deno-fmt-ignore-file\nimport { Arguments } from '../../system/arguments/index.mjs';\nimport { FromType } from './from_type.mjs';\n/**\n * Converts a value to the given type, coercing interior values if a reasonable conversion is possible. This\n * function returns unknown so callers should Check the return value before use. This function mutates the\n * provided value. If mutation is not wanted, you should Clone the value before passing to this function.\n */\nexport function Convert(...args) {\n const [context, type, value] = Arguments.Match(args, {\n 3: (context, type, value) => [context, type, value],\n 2: (type, value) => [{}, type, value],\n });\n return FromType(context, type, value);\n}\n","// deno-fmt-ignore-file\n// deno-lint-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { FromType } from './from_type.mjs';\nexport function FromArray(context, type, value) {\n if (!Guard.IsArray(value))\n return value;\n for (let i = 0; i < value.length; i++) {\n value[i] = FromType(context, type.items, value[i]);\n }\n return value;\n}\n","// deno-fmt-ignore-file\n// deno-lint-ignore-file\nimport { Ref } from '../../type/index.mjs';\nimport { FromType } from './from_type.mjs';\nexport function FromCyclic(context, type, value) {\n return FromType({ ...context, ...type.$defs }, Ref(type.$ref), value);\n}\n","// deno-fmt-ignore-file\n// deno-lint-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { Clone } from '../clone/index.mjs';\n// ------------------------------------------------------------------\n// FromDefault\n// ------------------------------------------------------------------\nexport function FromDefault(type, value) {\n // we only use defaults when values are undefined, exit early\n if (!Guard.IsUndefined(value))\n return value;\n return Guard.IsFunction(type.default) ? type.default() : Clone(type.default);\n}\n","// deno-fmt-ignore-file\n// deno-lint-ignore-file\nimport { Evaluate, Instantiate } from '../../type/index.mjs';\nimport { FromType } from './from_type.mjs';\nexport function FromIntersect(context, type, value) {\n const instantiated = Instantiate(context, type);\n const evaluated = Evaluate(instantiated);\n return FromType(context, evaluated, value);\n}\n","// deno-fmt-ignore-file\n// deno-lint-ignore-file\nimport { IsOptional } from '../../type/index.mjs';\nimport { Guard } from '../../guard/index.mjs';\nimport { FromType } from './from_type.mjs';\nimport { IsAdditionalProperties } from '../../schema/types/index.mjs';\nexport function FromObject(context, type, value) {\n if (!Guard.IsObject(value))\n return value;\n const knownPropertyKeys = Guard.Keys(type.properties);\n // Properties\n for (const key of knownPropertyKeys) {\n // Resolve Value for Property\n const propertyValue = FromType(context, type.properties[key], value[key]);\n // Ambiguious Undefined: If the value is undefined, the type is optional there's no default. ignore.\n const isUnassignableUndefined = Guard.IsUndefined(propertyValue) && (IsOptional(type.properties[key]) || !Guard.HasPropertyKey(type.properties[key], 'default'));\n if (isUnassignableUndefined)\n continue;\n // Assign\n value[key] = propertyValue;\n }\n // return if not additional properties\n if (!IsAdditionalProperties(type) || Guard.IsBoolean(type.additionalProperties))\n return value;\n // AdditionalProperties\n for (const key of Guard.Keys(value)) {\n if (knownPropertyKeys.includes(key))\n continue;\n value[key] = FromType(context, type.additionalProperties, value[key]);\n }\n return value;\n}\n","// deno-fmt-ignore-file\n// deno-lint-ignore-file\nimport { RecordPattern, RecordValue } from '../../type/index.mjs';\nimport { IsAdditionalProperties, IsDefault } from '../../schema/types/index.mjs';\nimport { Guard } from '../../guard/index.mjs';\nimport { FromType } from './from_type.mjs';\nexport function FromRecord(context, type, value) {\n if (!Guard.IsObject(value))\n return value;\n // PatternProperties\n const [recordKey, recordValue] = [new RegExp(RecordPattern(type)), RecordValue(type)];\n for (const key of Guard.Keys(value)) {\n if (!(recordKey.test(key) && IsDefault(recordValue)))\n continue;\n value[key] = FromType(context, recordValue, value[key]);\n }\n // AdditionalProperties\n if (!IsAdditionalProperties(type))\n return value;\n for (const key of Guard.Keys(value)) {\n if (recordKey.test(key))\n continue;\n value[key] = FromType(context, type.additionalProperties, value[key]);\n }\n return value;\n}\n","// deno-fmt-ignore-file\n// deno-lint-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { FromType } from './from_type.mjs';\nexport function FromRef(context, type, value) {\n return Guard.HasPropertyKey(context, type.$ref)\n ? FromType(context, context[type.$ref], value)\n : value;\n}\n","// deno-fmt-ignore-file\n// deno-lint-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { FromType } from './from_type.mjs';\nexport function FromTuple(context, schema, value) {\n if (!Guard.IsArray(value))\n return value;\n const [items, max] = [schema.items, Math.max(schema.items.length, value.length)];\n for (let i = 0; i < max; i++) {\n if (i < items.length)\n value[i] = FromType(context, items[i], value[i]);\n }\n return value;\n}\n","// deno-fmt-ignore-file\n// deno-lint-ignore-file\nimport { Check } from '../check/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { FromType } from './from_type.mjs';\nexport function FromUnion(context, schema, value) {\n for (const inner of schema.anyOf) {\n const result = FromType(context, inner, Clone(value));\n if (Check(context, inner, result)) {\n return result;\n }\n }\n return value;\n}\n","// deno-fmt-ignore-file\n// deno-lint-ignore-file\nimport { IsDefault } from '../../schema/index.mjs';\nimport * as T from '../../type/index.mjs';\nimport { FromArray } from './from_array.mjs';\nimport { FromCyclic } from './from_cyclic.mjs';\nimport { FromDefault } from './from_default.mjs';\nimport { FromIntersect } from './from_intersect.mjs';\nimport { FromObject } from './from_object.mjs';\nimport { FromRecord } from './from_record.mjs';\nimport { FromRef } from './from_ref.mjs';\nimport { FromTuple } from './from_tuple.mjs';\nimport { FromUnion } from './from_union.mjs';\nexport function FromType(context, type, value) {\n const defaulted = IsDefault(type) ? FromDefault(type, value) : value;\n return (T.IsArray(type) ? FromArray(context, type, defaulted) :\n T.IsCyclic(type) ? FromCyclic(context, type, defaulted) :\n T.IsIntersect(type) ? FromIntersect(context, type, defaulted) :\n T.IsObject(type) ? FromObject(context, type, defaulted) :\n T.IsRecord(type) ? FromRecord(context, type, defaulted) :\n T.IsRef(type) ? FromRef(context, type, defaulted) :\n T.IsTuple(type) ? FromTuple(context, type, defaulted) :\n T.IsUnion(type) ? FromUnion(context, type, defaulted) :\n defaulted);\n}\n","// deno-fmt-ignore-file\nimport { Arguments } from '../../system/arguments/index.mjs';\nimport { FromType } from './from_type.mjs';\n/**\n * Patches missing properties on the value using default annotations specified on the provided type. This\n * function returns unknown so callers should Check the return value before use. This function mutates the\n * provided value. If mutation is not wanted, you should Clone the value before passing to this function.\n */\nexport function Default(...args) {\n const [context, type, value] = Arguments.Match(args, {\n 3: (context, type, value) => [context, type, value],\n 2: (type, value) => [{}, type, value],\n });\n return FromType(context, type, value);\n}\n","// deno-fmt-ignore-file\nimport { Arguments } from '../../system/arguments/index.mjs';\n// ------------------------------------------------------------------\n// Pipeline\n// ------------------------------------------------------------------\n/** Creates a value processing pipeline. */\nexport function Pipeline(pipeline) {\n return (...args) => {\n const [context, type, value] = Arguments.Match(args, {\n 3: (context, type, value) => [context, type, value],\n 2: (type, value) => [{}, type, value],\n });\n return pipeline.reduce((result, func) => func(context, type, result), value);\n };\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { IsCodec } from '../../type/index.mjs';\n// ------------------------------------------------------------------\n// Decode\n// ------------------------------------------------------------------\nfunction Decode(_context, type, value) {\n return type['~codec'].decode(value);\n}\n// ------------------------------------------------------------------\n// Encode\n// ------------------------------------------------------------------\nfunction Encode(_context, type, value) {\n return type['~codec'].encode(value);\n}\n// ------------------------------------------------------------------\n// Callback\n// ------------------------------------------------------------------\nexport function Callback(direction, context, type, value) {\n if (!IsCodec(type))\n return value;\n return Guard.IsEqual(direction, 'Decode')\n ? Decode(context, type, value)\n : Encode(context, type, value);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { FromType } from './from_type.mjs';\nimport { Callback } from './callback.mjs';\n// ------------------------------------------------------------------\n// Decode\n// ------------------------------------------------------------------\nfunction Decode(direction, context, type, value) {\n if (!Guard.IsArray(value))\n return value;\n for (let i = 0; i < value.length; i++) {\n value[i] = FromType(direction, context, type.items, value[i]);\n }\n return Callback(direction, context, type, value);\n}\n// ------------------------------------------------------------------\n// Encode\n// ------------------------------------------------------------------\nfunction Encode(direction, context, type, value) {\n const exterior = Callback(direction, context, type, value);\n if (!Guard.IsArray(exterior))\n return exterior;\n for (let i = 0; i < exterior.length; i++) {\n exterior[i] = FromType(direction, context, type.items, exterior[i]);\n }\n return exterior;\n}\n// ------------------------------------------------------------------\n// FromArray\n// ------------------------------------------------------------------\nexport function FromArray(direction, context, type, value) {\n return Guard.IsEqual(direction, 'Decode')\n ? Decode(direction, context, type, value)\n : Encode(direction, context, type, value);\n}\n","// deno-fmt-ignore-file\nimport { Ref } from '../../type/index.mjs';\nimport { FromType } from './from_type.mjs';\nimport { Callback } from './callback.mjs';\nexport function FromCyclic(direction, context, type, value) {\n value = FromType(direction, { ...context, ...type.$defs }, Ref(type.$ref), value);\n return Callback(direction, context, type, value);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { FromType } from './from_type.mjs';\nimport { Callback } from './callback.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { Clean } from '../clean/index.mjs';\n// ------------------------------------------------------------------\n// MergeInteriors\n//\n// Merges all interior operand results into a single object. Each\n// subsequent operand's properties override those of prior operands.\n//\n// ------------------------------------------------------------------\nfunction MergeInteriors(interiors) {\n return interiors.reduce((results, interior) => ({ ...results, ...interior }), {});\n}\n// ------------------------------------------------------------------\n// NonMatchingInterior\n//\n// Used when Intersect operands do not all produce Objects. Returns\n// the first interior result that differs from the original value,\n// indicating a Codec has transformed the data. If no operand\n// produced a change, defaults to the first interior result.\n//\n// ------------------------------------------------------------------\nfunction NonMatchingInterior(value, interiors) {\n for (const interior of interiors)\n if (!Guard.IsDeepEqual(value, interior))\n return interior;\n return value; // value-unchanged\n}\n// ------------------------------------------------------------------\n// Decode\n// ------------------------------------------------------------------\nfunction Decode(direction, context, type, value) {\n if (Guard.IsEqual(type.allOf.length, 0))\n return Callback(direction, context, type, value);\n const interiors = type.allOf.map((schema) => FromType(direction, context, schema, Clean(schema, Clone(value))));\n const structural = interiors.every((result) => Guard.IsObject(result));\n const exterior = structural ? MergeInteriors(interiors) : NonMatchingInterior(value, interiors);\n return Callback(direction, context, type, exterior);\n}\n// ------------------------------------------------------------------\n// Encode\n// ------------------------------------------------------------------\nfunction Encode(direction, context, type, value) {\n if (Guard.IsEqual(type.allOf.length, 0))\n return Callback(direction, context, type, value);\n const exterior = Callback(direction, context, type, value);\n const interiors = type.allOf.map((schema) => FromType(direction, context, schema, Clean(schema, Clone(exterior))));\n const structural = interiors.every((result) => Guard.IsObject(result));\n if (structural)\n return MergeInteriors(interiors);\n return NonMatchingInterior(exterior, interiors);\n}\nexport function FromIntersect(direction, context, type, value) {\n return Guard.IsEqual(direction, 'Decode') ? Decode(direction, context, type, value) : Encode(direction, context, type, value);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { FromType } from './from_type.mjs';\nimport { Callback } from './callback.mjs';\nimport { IsOptionalUndefined } from '../shared/optional_undefined.mjs';\n// ------------------------------------------------------------------\n// Decode\n// ------------------------------------------------------------------\nfunction Decode(direction, context, type, value) {\n if (!Guard.IsObjectNotArray(value))\n return value;\n for (const key of Guard.Keys(type.properties)) {\n // Ignore for non-present or optional-undefined\n if (!Guard.HasPropertyKey(value, key) || IsOptionalUndefined(type.properties[key], key, value))\n continue;\n value[key] = FromType(direction, context, type.properties[key], value[key]);\n }\n return Callback(direction, context, type, value);\n}\n// ------------------------------------------------------------------\n// Encode\n// ------------------------------------------------------------------\nfunction Encode(direction, context, type, value) {\n const exterior = Callback(direction, context, type, value);\n if (!Guard.IsObjectNotArray(exterior))\n return exterior;\n for (const key of Guard.Keys(type.properties)) {\n // Ignore for non-present or optional-undefined\n if (!Guard.HasPropertyKey(exterior, key) || IsOptionalUndefined(type.properties[key], key, exterior))\n continue;\n exterior[key] = FromType(direction, context, type.properties[key], exterior[key]);\n }\n return exterior;\n}\n// ------------------------------------------------------------------\n// FromObject\n// ------------------------------------------------------------------\nexport function FromObject(direction, context, type, value) {\n return Guard.IsEqual(direction, 'Decode')\n ? Decode(direction, context, type, value)\n : Encode(direction, context, type, value);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { RecordPattern, RecordValue } from '../../type/index.mjs';\nimport { FromType } from './from_type.mjs';\nimport { Callback } from './callback.mjs';\n// ------------------------------------------------------------------\n// Decode\n// ------------------------------------------------------------------\nfunction Decode(direction, context, type, value) {\n if (!Guard.IsObjectNotArray(value))\n return value;\n const regexp = new RegExp(RecordPattern(type));\n for (const key of Guard.Keys(value)) {\n if (!regexp.test(key))\n continue;\n value[key] = FromType(direction, context, RecordValue(type), value[key]);\n }\n return Callback(direction, context, type, value);\n}\n// ------------------------------------------------------------------\n// Encode\n// ------------------------------------------------------------------\nfunction Encode(direction, context, type, value) {\n const exterior = Callback(direction, context, type, value);\n if (!Guard.IsObjectNotArray(exterior))\n return exterior;\n const regexp = new RegExp(RecordPattern(type));\n for (const key of Guard.Keys(exterior)) {\n if (!regexp.test(key))\n continue;\n exterior[key] = FromType(direction, context, RecordValue(type), exterior[key]);\n }\n return exterior;\n}\nexport function FromRecord(direction, context, type, value) {\n return Guard.IsEqual(direction, 'Decode')\n ? Decode(direction, context, type, value)\n : Encode(direction, context, type, value);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { FromType } from './from_type.mjs';\nimport { Callback } from './callback.mjs';\n// ------------------------------------------------------------------\n// ResolveRef\n// ------------------------------------------------------------------\nfunction ResolveRef(direction, context, type, value) {\n return Guard.HasPropertyKey(context, type.$ref)\n ? FromType(direction, context, context[type.$ref], value)\n : value;\n}\n// ------------------------------------------------------------------\n// FromRef\n//\n// Decode and Encode apply the Callback and the referenced type's\n// codec pipeline in opposite orders, since the two operations are\n// inverses of each other.\n//\n// Decode: referenced type resolves first, Callback runs after.\n// wire value -> resolve $ref -> Callback -> decoded value\n//\n// Encode: Callback runs first, referenced type resolves after.\n// encoded value -> Callback -> resolve $ref -> wire value\n//\n// ------------------------------------------------------------------\nexport function FromRef(direction, context, type, value) {\n return Guard.IsEqual(direction, 'Decode')\n ? Callback(direction, context, type, ResolveRef(direction, context, type, value))\n : ResolveRef(direction, context, type, Callback(direction, context, type, value));\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { FromType } from './from_type.mjs';\nimport { Callback } from './callback.mjs';\n// ------------------------------------------------------------------\n// Decode\n// ------------------------------------------------------------------\nfunction Decode(direction, context, type, value) {\n if (!Guard.IsArray(value))\n return value;\n for (let i = 0; i < Math.min(type.items.length, value.length); i++) {\n value[i] = FromType(direction, context, type.items[i], value[i]);\n }\n return Callback(direction, context, type, value);\n}\n// ------------------------------------------------------------------\n// Encode\n// ------------------------------------------------------------------\nfunction Encode(direction, context, type, value) {\n const exterior = Callback(direction, context, type, value);\n if (!Guard.IsArray(exterior))\n return value;\n for (let i = 0; i < Math.min(type.items.length, exterior.length); i++) {\n exterior[i] = FromType(direction, context, type.items[i], exterior[i]);\n }\n return exterior;\n}\nexport function FromTuple(direction, context, type, value) {\n return Guard.IsEqual(direction, 'Decode')\n ? Decode(direction, context, type, value)\n : Encode(direction, context, type, value);\n}\n","// deno-fmt-ignore-file\nimport { Guard } from '../../guard/index.mjs';\nimport { Callback } from './callback.mjs';\nimport { FromType } from './from_type.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { Check } from '../check/index.mjs';\n// ------------------------------------------------------------------\n// Decode\n// ------------------------------------------------------------------\nfunction Decode(direction, context, type, value) {\n for (const schema of type.anyOf) {\n if (!Check(context, schema, value))\n continue;\n const variant = FromType(direction, context, schema, value);\n return Callback(direction, context, type, variant);\n }\n return value;\n}\n// ------------------------------------------------------------------\n// Encode\n// ------------------------------------------------------------------\nfunction Encode(direction, context, type, value) {\n const exterior = Callback(direction, context, type, value);\n for (const schema of type.anyOf) {\n const variant = FromType(direction, context, schema, Clone(exterior));\n if (!Check(context, schema, variant))\n continue;\n return variant;\n }\n return exterior;\n}\n// ------------------------------------------------------------------\n// FromUnion\n// ------------------------------------------------------------------\nexport function FromUnion(direction, context, type, value) {\n return Guard.IsEqual(direction, 'Decode')\n ? Decode(direction, context, type, value)\n : Encode(direction, context, type, value);\n}\n","// deno-fmt-ignore-file\nimport * as Type from '../../type/index.mjs';\nimport { FromArray } from './from_array.mjs';\nimport { FromCyclic } from './from_cyclic.mjs';\nimport { FromIntersect } from './from_intersect.mjs';\nimport { FromObject } from './from_object.mjs';\nimport { FromRecord } from './from_record.mjs';\nimport { FromRef } from './from_ref.mjs';\nimport { FromTuple } from './from_tuple.mjs';\nimport { FromUnion } from './from_union.mjs';\nimport { Callback } from './callback.mjs';\nexport function FromType(direction, context, type, value) {\n return (Type.IsArray(type) ? FromArray(direction, context, type, value) :\n Type.IsCyclic(type) ? FromCyclic(direction, context, type, value) :\n Type.IsIntersect(type) ? FromIntersect(direction, context, type, value) :\n Type.IsObject(type) ? FromObject(direction, context, type, value) :\n Type.IsRecord(type) ? FromRecord(direction, context, type, value) :\n Type.IsRef(type) ? FromRef(direction, context, type, value) :\n Type.IsTuple(type) ? FromTuple(direction, context, type, value) :\n Type.IsUnion(type) ? FromUnion(direction, context, type, value) :\n Callback(direction, context, type, value));\n}\n","// deno-fmt-ignore-file\nimport { Arguments, Settings } from '../../system/index.mjs';\nimport { AssertError } from '../assert/index.mjs';\nimport { Check } from '../check/index.mjs';\nimport { Errors } from '../errors/index.mjs';\nimport { Clean } from '../clean/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { Convert } from '../convert/index.mjs';\nimport { Default } from '../default/index.mjs';\nimport { Pipeline } from '../pipeline/index.mjs';\nimport { FromType } from './from_type.mjs';\nimport { UnionPrioritySort } from '../shared/union_priority_sort.mjs';\n// ------------------------------------------------------------------\n// Assert\n// ------------------------------------------------------------------\nexport class DecodeError extends AssertError {\n constructor(value, errors) {\n super('Decode', value, errors);\n }\n}\nfunction Assert(context, type, value) {\n if (!Check(context, type, value))\n throw new DecodeError(value, Errors(context, type, value));\n return value;\n}\n// ------------------------------------------------------------------\n// DecodeUnsafe\n// ------------------------------------------------------------------\n/** Executes Decode callbacks only */\nexport function DecodeUnsafe(context, type, value) {\n const sorted = Settings.Get().unionPrioritySort ? UnionPrioritySort(type) : type;\n return FromType('Decode', context, sorted, value);\n}\n// ------------------------------------------------------------------\n// Decoder\n// ------------------------------------------------------------------\nconst Decoder = Pipeline([\n (_context, _type, value) => Clone(value),\n (context, type, value) => Default(context, type, value),\n (context, type, value) => Convert(context, type, value),\n (context, type, value) => Clean(context, type, value),\n (context, type, value) => Assert(context, type, value),\n (context, type, value) => DecodeUnsafe(context, type, value)\n]);\n/** Decodes a value with the given type. */\nexport function Decode(...args) {\n const [context, type, value] = Arguments.Match(args, {\n 3: (context, type, value) => [context, type, value],\n 2: (type, value) => [{}, type, value],\n });\n return Decoder(context, type, value);\n}\n","// deno-fmt-ignore-file\nimport { Arguments, Settings } from '../../system/index.mjs';\nimport { AssertError } from '../assert/index.mjs';\nimport { Check } from '../check/index.mjs';\nimport { Errors } from '../errors/index.mjs';\nimport { Clean } from '../clean/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { Convert } from '../convert/index.mjs';\nimport { Default } from '../default/index.mjs';\nimport { Pipeline } from '../pipeline/index.mjs';\nimport { FromType } from './from_type.mjs';\nimport { UnionPrioritySort } from '../shared/union_priority_sort.mjs';\n// ------------------------------------------------------------------\n// Assert\n// ------------------------------------------------------------------\nexport class EncodeError extends AssertError {\n constructor(value, errors) {\n super('Encode', value, errors);\n }\n}\nfunction Assert(context, type, value) {\n if (!Check(context, type, value))\n throw new EncodeError(value, Errors(context, type, value));\n return value;\n}\n// ------------------------------------------------------------------\n// EncodeUnsafe\n// ------------------------------------------------------------------\n/** Executes Encode callbacks only */\nexport function EncodeUnsafe(context, type, value) {\n const sorted = Settings.Get().unionPrioritySort ? UnionPrioritySort(type) : type;\n return FromType('Encode', context, sorted, value);\n}\n// ------------------------------------------------------------------\n// Encoder\n// ------------------------------------------------------------------\nconst Encoder = Pipeline([\n (_context, _type, value) => Clone(value),\n (context, type, value) => EncodeUnsafe(context, type, value),\n (context, type, value) => Default(context, type, value),\n (context, type, value) => Convert(context, type, value),\n (context, type, value) => Clean(context, type, value),\n (context, type, value) => Assert(context, type, value),\n]);\n/** Encodes a value with the given type. */\nexport function Encode(...args) {\n const [context, type, value] = Arguments.Match(args, {\n 3: (context, type, value) => [context, type, value],\n 2: (type, value) => [{}, type, value],\n });\n return Encoder(context, type, value);\n}\n","// deno-fmt-ignore-file\nimport { EnableParseErrors, DisableParseErrors } from '../../system/settings/internal.mjs';\nimport { Arguments, Settings } from '../../system/index.mjs';\nimport { AssertError } from '../assert/index.mjs';\nimport { Check } from '../check/index.mjs';\nimport { Errors } from '../errors/index.mjs';\nimport { Clean } from '../clean/index.mjs';\nimport { Clone } from '../clone/index.mjs';\nimport { Convert } from '../convert/index.mjs';\nimport { Default } from '../default/index.mjs';\nimport { Pipeline } from '../pipeline/index.mjs';\n// ------------------------------------------------------------------\n// Assert\n// ------------------------------------------------------------------\nexport class ParseError extends AssertError {\n constructor(value, errors) {\n super('Parse', value, errors);\n }\n}\nfunction Assert(context, type, value) {\n EnableParseErrors();\n const errors = Errors(context, type, value);\n DisableParseErrors();\n if (!Check(context, type, value))\n throw new ParseError(value, errors);\n return value;\n}\n// ------------------------------------------------------------------\n// Parser\n// ------------------------------------------------------------------\nexport const Parser = Pipeline([\n (_context, _type, value) => Clone(value),\n (context, type, value) => Default(context, type, value),\n (context, type, value) => Convert(context, type, value),\n (context, type, value) => Clean(context, type, value),\n (context, type, value) => Assert(context, type, value)\n]);\n/** Parses a value with the given type. */\nexport function Parse(...args) {\n const [context, type, value] = Arguments.Match(args, {\n 3: (context, type, value) => [context, type, value],\n 2: (type, value) => [{}, type, value],\n });\n const checked = Check(context, type, value);\n if (checked)\n return value;\n if (Settings.Get().correctiveParse)\n return Parser(context, type, value);\n EnableParseErrors();\n const errors = Errors(context, type, value);\n DisableParseErrors();\n throw new ParseError(value, errors);\n}\n","// deno-fmt-ignore-file\nimport * as T from '../../type/index.mjs';\nexport const Insert = T.Object({\n type: T.Literal('insert'),\n path: T.String(),\n value: T.Unknown(),\n});\nexport const Update = Object({\n type: T.Literal('update'),\n path: T.String(),\n value: T.Unknown(),\n});\nexport const Delete = T.Object({\n type: T.Literal('delete'),\n path: T.String(),\n});\nexport const Edit = T.Union([Insert, Update, Delete]);\n","import type { TSchema } from 'typebox';\nimport { Value } from 'typebox/value';\n\nexport type SchemaError = { path: string; message: string };\n\n/**\n * TypeBox errors as (JSON pointer, message) pairs. The `schema is false` echo that accompanies every\n * `additionalProperties` error is dropped, and unknown properties are named in the message.\n */\nexport const collectSchemaErrors = (schema: TSchema, value: unknown, basePath = ''): SchemaError[] =>\n [...Value.Errors(schema, value)]\n .filter((error) => error.keyword !== 'boolean')\n .map((error) => {\n const extra = (error.params as { additionalProperties?: unknown }).additionalProperties;\n const message =\n error.keyword === 'additionalProperties' && Array.isArray(extra)\n ? `unknown propert${extra.length === 1 ? 'y' : 'ies'}: ${extra.join(', ')}`\n : error.message;\n return { path: `${basePath}${error.instancePath}`, message };\n });\n","import { isCoverEligible, isDocumentPlaceable } from '../display/layout.js';\nimport { effectiveTitleField, TITLE_FIELD_TYPES } from '../display/titleField.js';\nimport { EDITOR_CATALOGUE, isCustomEditorId } from '../editors/catalogue.js';\nimport { isStableId } from '../ids.js';\nimport { SCALAR_DATA_TYPES, UNIQUE_CAPABLE_DATA_TYPES } from '../types/dataTypes.js';\nimport type { FieldDefinition, FieldGroup, ModelDefinition, SchemaDefinition } from '../types/definitions.js';\nimport { checkApiKeySyntax, foldApiKey, isApiKeySyntaxValid } from './apiKey.js';\nimport { checkDefaultValue } from './defaultValue.js';\nimport { issue, type ValidationIssue } from './issues.js';\nimport { RESERVED_DEFINITION_API_KEYS, RESERVED_FIELD_API_KEYS } from './naming.js';\nimport { collectSchemaErrors } from './typeboxIssues.js';\n\n/**\n * Checks one normalized definition on its own: IDs, API keys, per-type settings, flags, editor choice and\n * display references. References to other definitions are checked by `validateSchema`.\n */\nconst RESERVED_FIELD_KEYS: ReadonlySet<string> = new Set(RESERVED_FIELD_API_KEYS.map(foldApiKey));\nconst RESERVED_DEFINITION_KEYS: ReadonlySet<string> = new Set(RESERVED_DEFINITION_API_KEYS.map(foldApiKey));\n/** GraphQL enum values must be names and cannot be `true`, `false` or `null`. */\nconst RESERVED_ENUM_VALUES: ReadonlySet<string> = new Set(['true', 'false', 'null']);\n\ntype RangeCheck = { min: unknown; max: unknown; compare: (a: never, b: never) => number; path: string };\n\nconst compareNumbers = (a: number, b: number) => a - b;\nconst compareBigInts = (a: string, b: string) => {\n const diff = BigInt(a) - BigInt(b);\n return diff === 0n ? 0 : diff > 0n ? 1 : -1;\n};\nconst compareDecimals = (a: string, b: string) => Number(a) - Number(b);\nconst compareText = (a: string, b: string) => (a === b ? 0 : a > b ? 1 : -1);\n\nconst checkRange = ({ min, max, compare, path }: RangeCheck): ValidationIssue[] =>\n min !== undefined && max !== undefined && compare(min as never, max as never) > 0\n ? [issue(path, 'INVALID_RANGE', 'minimum is greater than maximum')]\n : [];\n\nconst settingsRanges = (field: FieldDefinition, path: string): ValidationIssue[] => {\n const s = field.settings as Record<string, unknown>;\n const issues: ValidationIssue[] = [];\n issues.push(\n ...checkRange({ min: s.minLength, max: s.maxLength, compare: compareNumbers, path: `${path}/minLength` }),\n );\n switch (field.type) {\n case 'number':\n case 'integer':\n case 'media':\n case 'relation':\n case 'component':\n case 'dynamiczone':\n issues.push(...checkRange({ min: s.min, max: s.max, compare: compareNumbers, path: `${path}/min` }));\n break;\n case 'biginteger':\n issues.push(...checkRange({ min: s.min, max: s.max, compare: compareBigInts, path: `${path}/min` }));\n break;\n case 'decimal':\n issues.push(...checkRange({ min: s.min, max: s.max, compare: compareDecimals, path: `${path}/min` }));\n if (field.settings.scale !== undefined && field.settings.precision !== undefined) {\n issues.push(\n ...checkRange({\n min: field.settings.scale,\n max: field.settings.precision,\n compare: compareNumbers,\n path: `${path}/scale`,\n }),\n );\n }\n break;\n case 'date':\n case 'datetime':\n case 'time':\n issues.push(...checkRange({ min: s.min, max: s.max, compare: compareText, path: `${path}/min` }));\n break;\n default:\n break;\n }\n return issues;\n};\n\nconst checkSettings = (\n field: FieldDefinition,\n path: string,\n definition: SchemaDefinition,\n): ValidationIssue[] => {\n const issues = settingsRanges(field, `${path}/settings`);\n if (field.type === 'string' && field.settings.pattern !== undefined) {\n try {\n new RegExp(field.settings.pattern, 'u');\n } catch {\n issues.push(issue(`${path}/settings/pattern`, 'INVALID_PATTERN', 'is not a valid regular expression'));\n }\n }\n if (field.type === 'enum') {\n const seen = new Set<string>();\n field.settings.values.forEach((entry, index) => {\n const entryPath = `${path}/settings/values/${index}/value`;\n if (\n !isApiKeySyntaxValid(entry.value) ||\n entry.value.startsWith('__') ||\n RESERVED_ENUM_VALUES.has(entry.value)\n ) {\n issues.push(\n issue(\n entryPath,\n 'INVALID_ENUM_VALUE',\n 'enum values must be GraphQL names (letters, digits, _), not true/false/null',\n ),\n );\n }\n if (seen.has(entry.value)) {\n issues.push(issue(entryPath, 'DUPLICATE_ENUM_VALUE', `\"${entry.value}\" is listed twice`));\n }\n seen.add(entry.value);\n });\n }\n if (field.type === 'slug' && field.settings.sourceFieldId !== undefined) {\n const source = definition.fields.find((candidate) => candidate.id === field.settings.sourceFieldId);\n if (!source) {\n issues.push(\n issue(\n `${path}/settings/sourceFieldId`,\n 'UNKNOWN_FIELD_REFERENCE',\n 'refers to no field of this definition',\n ),\n );\n } else if (source.type !== 'string' && source.type !== 'text') {\n issues.push(\n issue(\n `${path}/settings/sourceFieldId`,\n 'INVALID_FIELD_REFERENCE',\n 'must refer to a string or text field',\n ),\n );\n }\n }\n if (field.type === 'code' && field.settings.validate && field.settings.language !== 'json') {\n issues.push(\n issue(`${path}/settings/validate`, 'INVALID_SETTINGS', 'only a json code field can be validated'),\n );\n }\n if (field.type === 'richtext' && field.settings.formatVersion !== 1) {\n issues.push(\n issue(`${path}/settings/formatVersion`, 'INVALID_SETTINGS', 'unsupported rich-text format version'),\n );\n }\n if (field.type === 'relation' && !isStableId(field.settings.target)) {\n issues.push(issue(`${path}/settings/target`, 'INVALID_ID', 'must be the ID of a model'));\n }\n if (field.type === 'component' && !isStableId(field.settings.component)) {\n issues.push(issue(`${path}/settings/component`, 'INVALID_ID', 'must be the ID of a component'));\n }\n if (field.type === 'dynamiczone') {\n field.settings.components.forEach((id, index) => {\n if (!isStableId(id)) {\n issues.push(\n issue(`${path}/settings/components/${index}`, 'INVALID_ID', 'must be the ID of a component'),\n );\n }\n });\n }\n return issues;\n};\n\nconst checkFlags = (field: FieldDefinition, path: string, isComponent: boolean): ValidationIssue[] => {\n const issues: ValidationIssue[] = [];\n const reject = (flag: string, why: string) =>\n issues.push(issue(`${path}/${flag}`, 'UNSUPPORTED_FLAG', why));\n if (field.unique && !UNIQUE_CAPABLE_DATA_TYPES.has(field.type)) {\n reject('unique', `${field.type} fields cannot be unique`);\n }\n for (const flag of ['filterable', 'sortable'] as const) {\n if (field[flag] && !SCALAR_DATA_TYPES.has(field.type)) {\n reject(flag, `${field.type} fields cannot be ${flag}`);\n }\n if (field[flag] && field.type === 'enum' && field.settings.multiple) {\n reject(flag, `multi-value enum fields cannot be ${flag}`);\n }\n }\n if (isComponent) {\n // Component values live inside a parent entry field; uniqueness and indexes apply to entry fields only.\n for (const flag of ['unique', 'filterable', 'sortable'] as const) {\n if (field[flag]) {\n reject(flag, `fields of a component cannot be ${flag}`);\n }\n }\n // Widths lay out a form-layout entry; component editors don't use them (yet), so none are stored.\n if (field.width !== undefined) {\n reject('width', 'fields of a component have no width');\n }\n }\n if (field.deprecated && field.required) {\n reject('required', 'a deprecated field cannot be required');\n }\n return issues;\n};\n\nconst checkEditor = (field: FieldDefinition, path: string): ValidationIssue[] => {\n const { id, options } = field.editor;\n if (isCustomEditorId(id)) {\n return [];\n }\n const entry = EDITOR_CATALOGUE.get(id);\n if (!entry) {\n return [\n issue(\n `${path}/editor/id`,\n 'UNKNOWN_EDITOR',\n `\"${id}\" is not a built-in editor (custom editors use a vendor.name ID)`,\n ),\n ];\n }\n if (!entry.dataTypes.includes(field.type) || !(entry.supports?.(field) ?? true)) {\n return [\n issue(\n `${path}/editor/id`,\n 'INCOMPATIBLE_EDITOR',\n `the ${id} editor cannot edit this ${field.type} field`,\n ),\n ];\n }\n return collectSchemaErrors(entry.optionsSchema, options, `${path}/editor/options`).map((error) =>\n issue(error.path, 'INVALID_EDITOR_OPTIONS', error.message),\n );\n};\n\nconst checkField = (\n field: FieldDefinition,\n index: number,\n definition: SchemaDefinition,\n): ValidationIssue[] => {\n const path = `/fields/${index}`;\n const issues: ValidationIssue[] = [];\n if (!isStableId(field.id)) {\n issues.push(issue(`${path}/id`, 'INVALID_ID', 'must be a lower-case UUID'));\n }\n const syntax = checkApiKeySyntax(field.apiKey);\n if (syntax) {\n issues.push(issue(`${path}/apiKey`, syntax.code, syntax.message));\n } else if (RESERVED_FIELD_KEYS.has(foldApiKey(field.apiKey))) {\n issues.push(issue(`${path}/apiKey`, 'API_KEY_RESERVED', `\"${field.apiKey}\" is a system field name`));\n }\n issues.push(...checkSettings(field, path, definition));\n issues.push(...checkFlags(field, path, definition.kind === 'component'));\n const defaultProblem = checkDefaultValue(field);\n if (defaultProblem) {\n issues.push(issue(`${path}/defaultValue`, 'INVALID_DEFAULT_VALUE', defaultProblem));\n }\n issues.push(...checkEditor(field, path));\n return issues;\n};\n\nconst checkFieldUniqueness = (definition: SchemaDefinition): ValidationIssue[] => {\n const issues: ValidationIssue[] = [];\n const ids = new Set<string>();\n const keys = new Map<string, string>();\n definition.fields.forEach((field, index) => {\n if (ids.has(field.id)) {\n issues.push(issue(`/fields/${index}/id`, 'DUPLICATE_ID', 'another field has the same ID'));\n }\n ids.add(field.id);\n const folded = foldApiKey(field.apiKey);\n const clash = keys.get(folded);\n if (clash !== undefined) {\n issues.push(\n issue(\n `/fields/${index}/apiKey`,\n 'API_KEY_COLLISION',\n `\"${field.apiKey}\" collides with field \"${clash}\" (keys are case-insensitive)`,\n ),\n );\n }\n keys.set(folded, field.apiKey);\n });\n return issues;\n};\n\nconst checkGroups = (\n groups: readonly FieldGroup[] | undefined,\n fieldIds: ReadonlySet<string>,\n): ValidationIssue[] => {\n const issues: ValidationIssue[] = [];\n const groupIds = new Set<string>();\n const placed = new Set<string>();\n (groups ?? []).forEach((group, groupIndex) => {\n if (groupIds.has(group.id)) {\n issues.push(\n issue(`/display/groups/${groupIndex}/id`, 'DUPLICATE_GROUP', 'another group has the same ID'),\n );\n }\n groupIds.add(group.id);\n group.fieldIds.forEach((fieldId, index) => {\n const path = `/display/groups/${groupIndex}/fieldIds/${index}`;\n if (!fieldIds.has(fieldId)) {\n issues.push(issue(path, 'UNKNOWN_FIELD_REFERENCE', 'refers to no field of this definition'));\n } else if (placed.has(fieldId)) {\n issues.push(issue(path, 'INVALID_FIELD_REFERENCE', 'a field can be in one group only'));\n }\n placed.add(fieldId);\n });\n });\n return issues;\n};\n\ntype FieldReferenceCheck = {\n path: string;\n fields: ReadonlyMap<string, FieldDefinition>;\n /** Returns why the field can't be used here, or undefined when it can. */\n reject: (field: FieldDefinition) => string | undefined;\n};\n\n/** A list of field IDs: each must exist, appear once and pass `reject`. */\nconst checkFieldList = (\n ids: readonly string[] | undefined,\n check: FieldReferenceCheck,\n): ValidationIssue[] => {\n const seen = new Set<string>();\n return (ids ?? []).flatMap((fieldId, index) => {\n const path = `${check.path}/${index}`;\n const field = check.fields.get(fieldId);\n if (!field) {\n return [issue(path, 'UNKNOWN_FIELD_REFERENCE', 'refers to no field of this definition')];\n }\n if (seen.has(fieldId)) {\n return [issue(path, 'INVALID_FIELD_REFERENCE', 'the field is listed more than once')];\n }\n seen.add(fieldId);\n const reason = check.reject(field);\n return reason ? [issue(path, 'INVALID_FIELD_REFERENCE', reason)] : [];\n });\n};\n\n/**\n * The entry document's layout (`effectiveLayout`): document fields, cover and strip. Title, cover and\n * canvas are disjoint: any field but the title (configured or automatic) may be in the canvas, the\n * configured cover may not; strip entries are properties, so never the cover or a document field.\n */\nconst checkDocumentLayout = (\n model: ModelDefinition,\n fields: ReadonlyMap<string, FieldDefinition>,\n): ValidationIssue[] => {\n const { canvasFieldIds, coverFieldId, stripFieldIds } = model.display;\n const canvas = new Set(canvasFieldIds ?? []);\n const title = effectiveTitleField(model);\n const issues = checkFieldList(canvasFieldIds, {\n path: '/display/canvasFieldIds',\n fields,\n reject: (field) =>\n isDocumentPlaceable(field, title)\n ? undefined\n : 'the title is the heading of the document, not a field in it',\n });\n if (coverFieldId !== undefined) {\n issues.push(\n ...checkFieldList([coverFieldId], {\n path: '/display/coverFieldId',\n fields,\n reject: (field) =>\n !isCoverEligible(field)\n ? 'the cover must be a single media field that allows images'\n : canvas.has(field.id)\n ? 'the cover cannot also be in the canvas'\n : undefined,\n }).map((found) => ({ ...found, path: '/display/coverFieldId' })),\n );\n }\n issues.push(\n ...checkFieldList(stripFieldIds, {\n path: '/display/stripFieldIds',\n fields,\n reject: (field) =>\n canvas.has(field.id) || field.id === coverFieldId\n ? 'the strip shows properties, not the cover or canvas blocks'\n : undefined,\n }),\n );\n return issues;\n};\n\nconst checkDisplay = (definition: SchemaDefinition): ValidationIssue[] => {\n const fields = new Map(definition.fields.map((field) => [field.id, field]));\n const fieldIds = new Set(fields.keys());\n const issues: ValidationIssue[] = [];\n const { titleFieldId } = definition.display;\n if (titleFieldId !== undefined) {\n const title = fields.get(titleFieldId);\n if (!title) {\n issues.push(\n issue('/display/titleFieldId', 'UNKNOWN_FIELD_REFERENCE', 'refers to no field of this definition'),\n );\n } else if (!TITLE_FIELD_TYPES.has(title.type)) {\n issues.push(\n issue(\n '/display/titleFieldId',\n 'INVALID_FIELD_REFERENCE',\n `a ${title.type} field cannot be the title`,\n ),\n );\n }\n }\n if (definition.kind !== 'component') {\n definition.display.listFieldIds?.forEach((fieldId, index) => {\n if (!fieldIds.has(fieldId)) {\n issues.push(\n issue(\n `/display/listFieldIds/${index}`,\n 'UNKNOWN_FIELD_REFERENCE',\n 'refers to no field of this definition',\n ),\n );\n }\n });\n const sort = definition.display.defaultSort;\n if (sort) {\n const field = fields.get(sort.fieldId);\n if (!field) {\n issues.push(\n issue(\n '/display/defaultSort/fieldId',\n 'UNKNOWN_FIELD_REFERENCE',\n 'refers to no field of this definition',\n ),\n );\n } else if (!field.sortable) {\n issues.push(\n issue(\n '/display/defaultSort/fieldId',\n 'INVALID_FIELD_REFERENCE',\n 'the default sort field must be sortable',\n ),\n );\n }\n }\n issues.push(...checkDocumentLayout(definition, fields));\n }\n issues.push(...checkGroups(definition.display.groups, fieldIds));\n return issues;\n};\n\n/**\n * A collection's plural API ID follows the API ID rules and must differ from its singular. Singletons and\n * components have none (normalizing drops it).\n */\nconst checkPluralApiKey = (definition: SchemaDefinition): ValidationIssue[] => {\n if (definition.kind !== 'collection' || definition.pluralApiKey === undefined) {\n return [];\n }\n const syntax = checkApiKeySyntax(definition.pluralApiKey, 'plural API ID');\n if (syntax) {\n return [issue('/pluralApiKey', syntax.code, syntax.message)];\n }\n if (foldApiKey(definition.pluralApiKey) === foldApiKey(definition.apiKey)) {\n return [\n issue(\n '/pluralApiKey',\n 'PLURAL_API_KEY_SAME_AS_SINGULAR',\n 'the plural API ID must differ from the API ID (case-insensitively)',\n ),\n ];\n }\n return [];\n};\n\n/** All problems with one definition, in document order. Empty means valid on its own. */\nexport const validateDefinition = (definition: SchemaDefinition): ValidationIssue[] => {\n const issues: ValidationIssue[] = [];\n if (!isStableId(definition.id)) {\n issues.push(issue('/id', 'INVALID_ID', 'must be a lower-case UUID'));\n }\n const syntax = checkApiKeySyntax(definition.apiKey);\n if (syntax) {\n issues.push(issue('/apiKey', syntax.code, syntax.message));\n } else if (RESERVED_DEFINITION_KEYS.has(foldApiKey(definition.apiKey))) {\n issues.push(issue('/apiKey', 'API_KEY_RESERVED', `\"${definition.apiKey}\" is reserved by the admin`));\n }\n // A plural derived from an invalid API ID is invalid too; report the API ID once.\n if (!syntax) {\n issues.push(...checkPluralApiKey(definition));\n }\n definition.fields.forEach((field, index) => issues.push(...checkField(field, index, definition)));\n issues.push(...checkFieldUniqueness(definition));\n issues.push(...checkDisplay(definition));\n return issues;\n};\n","import { createStableId } from '../ids.js';\nimport { normalizeDefinition, type DefinitionInputWithIds, type FieldInputWithId } from '../normalize.js';\nimport {\n ComponentDefinitionInputSchema,\n ModelDefinitionInputSchema,\n type DefinitionInput,\n type FieldInput,\n type SchemaDefinition,\n} from '../types/definitions.js';\nimport { SETTINGS_SCHEMAS } from '../types/settings.js';\nimport { foldApiKey } from './apiKey.js';\nimport { validateDefinition } from './definition.js';\nimport { issue, type ValidationIssue } from './issues.js';\nimport { collectSchemaErrors } from './typeboxIssues.js';\n\nexport type ParseDefinitionResult =\n { ok: true; definition: SchemaDefinition } | { ok: false; issues: ValidationIssue[] };\n\nexport type ParseDefinitionOptions = {\n /**\n * The current definition, if this is an edit. Fields sent without an `id` are matched to the current\n * field with the same API key (case-insensitive) and keep its ID; unmatched fields get a new ID.\n */\n previous?: SchemaDefinition;\n createId?: () => string;\n};\n\nconst isObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nconst structuralIssues = (raw: Record<string, unknown>): ValidationIssue[] => {\n const schema = raw.kind === 'component' ? ComponentDefinitionInputSchema : ModelDefinitionInputSchema;\n const issues = collectSchemaErrors(schema, raw).map((error) =>\n issue(error.path, 'INVALID_STRUCTURE', error.message),\n );\n if (issues.length > 0) {\n return issues;\n }\n const fields = raw.fields as FieldInput[];\n fields.forEach((field, index) => {\n const settingsSchema = SETTINGS_SCHEMAS[field.type];\n for (const error of collectSchemaErrors(\n settingsSchema,\n field.settings ?? {},\n `/fields/${index}/settings`,\n )) {\n issues.push(issue(error.path, 'INVALID_SETTINGS', error.message));\n }\n });\n return issues;\n};\n\n/** Fills in missing definition and field IDs (see ParseDefinitionOptions.previous). */\nexport const assignIds = (\n input: DefinitionInput,\n { previous, createId = createStableId }: ParseDefinitionOptions = {},\n): DefinitionInputWithIds => {\n const explicitIds = new Set(input.fields.flatMap((field) => (field.id ? [field.id] : [])));\n const previousByKey = new Map(\n (previous?.fields ?? [])\n .filter((field) => !explicitIds.has(field.id))\n .map((field) => [foldApiKey(field.apiKey), field.id]),\n );\n const fields: FieldInputWithId[] = input.fields.map((field) => {\n if (field.id) {\n return { ...field, id: field.id };\n }\n const matched = previousByKey.get(foldApiKey(field.apiKey));\n previousByKey.delete(foldApiKey(field.apiKey));\n return { ...field, id: matched ?? createId() };\n });\n return { ...input, id: input.id ?? previous?.id ?? createId(), fields };\n};\n\n/**\n * The single entry point from untrusted input (request bodies, schema files) to a normalized definition:\n * structure, settings per data type, ID assignment, defaults, then the per-definition semantic checks.\n * Cross-definition rules (references, cycles, GraphQL name collisions) are `validateSchema`'s job.\n */\nexport const parseDefinition = (\n raw: unknown,\n options: ParseDefinitionOptions = {},\n): ParseDefinitionResult => {\n if (!isObject(raw)) {\n return { ok: false, issues: [issue('', 'INVALID_STRUCTURE', 'a definition must be a JSON object')] };\n }\n const structural = structuralIssues(raw);\n if (structural.length > 0) {\n return { ok: false, issues: structural };\n }\n const definition = normalizeDefinition(assignIds(raw as DefinitionInput, options));\n const issues = validateDefinition(definition);\n return issues.length > 0 ? { ok: false, issues } : { ok: true, definition };\n};\n","import type { SchemaDefinition } from '../types/definitions.js';\nimport { foldApiKey } from './apiKey.js';\nimport { issue, type ValidationIssue } from './issues.js';\nimport {\n generatedNames,\n RESERVED_QUERY_NAMES,\n RESERVED_TYPE_NAMES,\n routeKeyOf,\n type GeneratedName,\n} from './naming.js';\n\n/** Deepest allowed nesting of components (a component inside a component inside ... ) below an entry. */\nexport const MAX_COMPONENT_DEPTH = 5;\n\nconst RESERVED_TYPES: ReadonlySet<string> = new Set(RESERVED_TYPE_NAMES.map(foldApiKey));\nconst RESERVED_QUERIES: ReadonlySet<string> = new Set(RESERVED_QUERY_NAMES.map(foldApiKey));\n\nconst withDefinition = (definition: SchemaDefinition, found: ValidationIssue): ValidationIssue => ({\n ...found,\n definitionId: definition.id,\n});\n\nconst describeOrigin = (name: GeneratedName, byId: ReadonlyMap<string, SchemaDefinition>) => {\n const definition = byId.get(name.definitionId);\n const field = name.fieldId\n ? definition?.fields.find((candidate) => candidate.id === name.fieldId)\n : undefined;\n return field ? `${definition?.apiKey ?? '?'}.${field.apiKey}` : (definition?.apiKey ?? '?');\n};\n\n/** The API IDs a definition claims in the shared case-insensitive namespace, with their issue paths. */\nconst claimedKeys = (definition: SchemaDefinition): Array<{ key: string; path: string; plural: boolean }> => {\n const keys = [{ key: definition.apiKey, path: '/apiKey', plural: false }];\n const plural = definition.kind === 'collection' ? routeKeyOf(definition) : '';\n if (plural) {\n keys.push({ key: plural, path: '/pluralApiKey', plural: true });\n }\n return keys;\n};\n\nconst describeKey = ({ definition, key }: { definition: SchemaDefinition; key: string }) =>\n key === definition.apiKey ? `\"${key}\"` : `the plural API ID \"${key}\" of \"${definition.apiKey}\"`;\n\nconst checkIdentity = (definitions: readonly SchemaDefinition[]): ValidationIssue[] => {\n const issues: ValidationIssue[] = [];\n const ids = new Set<string>();\n const keys = new Map<string, { definition: SchemaDefinition; key: string }>();\n const fieldOwners = new Map<string, SchemaDefinition>();\n for (const definition of definitions) {\n if (ids.has(definition.id)) {\n issues.push(\n withDefinition(definition, issue('/id', 'DUPLICATE_ID', 'another definition has the same ID')),\n );\n }\n ids.add(definition.id);\n // Plural API IDs share the namespace: `/api/content/posts` and the `posts` query must be unambiguous.\n for (const { key, path, plural } of claimedKeys(definition)) {\n const folded = foldApiKey(key);\n const clash = keys.get(folded);\n if (clash && clash.definition.id !== definition.id) {\n issues.push(\n withDefinition(\n definition,\n issue(\n path,\n 'API_KEY_COLLISION',\n `${plural ? 'the plural API ID ' : ''}\"${key}\" collides with ${describeKey(clash)} (models and components share one case-insensitive namespace)`,\n ),\n ),\n );\n }\n if (!clash) {\n keys.set(folded, { definition, key });\n }\n }\n definition.fields.forEach((field, index) => {\n const owner = fieldOwners.get(field.id);\n if (owner && owner.id !== definition.id) {\n issues.push(\n withDefinition(\n definition,\n issue(\n `/fields/${index}/id`,\n 'DUPLICATE_ID',\n `field ID is already used by \"${owner.apiKey}\"; field IDs are global`,\n ),\n ),\n );\n }\n fieldOwners.set(field.id, definition);\n });\n }\n return issues;\n};\n\nconst checkGeneratedNames = (definitions: readonly SchemaDefinition[]): ValidationIssue[] => {\n const byId = new Map(definitions.map((definition) => [definition.id, definition]));\n const issues: ValidationIssue[] = [];\n const seen = new Map<string, GeneratedName>();\n for (const definition of definitions) {\n for (const name of generatedNames(definition)) {\n const folded = `${name.namespace}:${foldApiKey(name.name)}`;\n const path = name.fieldId\n ? `/fields/${definition.fields.findIndex((field) => field.id === name.fieldId)}/apiKey`\n : `/${name.property ?? 'apiKey'}`;\n if (name.namespace === 'type' && RESERVED_TYPES.has(foldApiKey(name.name))) {\n issues.push(\n withDefinition(\n definition,\n issue(path, 'API_KEY_RESERVED', `generates the GraphQL type \"${name.name}\", which is reserved`),\n ),\n );\n continue;\n }\n if (name.namespace === 'query' && RESERVED_QUERIES.has(foldApiKey(name.name))) {\n issues.push(\n withDefinition(\n definition,\n issue(path, 'API_KEY_RESERVED', `generates the GraphQL query \"${name.name}\", which is reserved`),\n ),\n );\n continue;\n }\n const clash = seen.get(folded);\n if (clash && (clash.definitionId !== name.definitionId || clash.fieldId !== name.fieldId)) {\n issues.push(\n withDefinition(\n definition,\n issue(\n path,\n 'GENERATED_NAME_COLLISION',\n `generates the GraphQL ${name.namespace} name \"${name.name}\", which \"${describeOrigin(clash, byId)}\" already generates`,\n ),\n ),\n );\n continue;\n }\n seen.set(folded, name);\n }\n }\n return issues;\n};\n\n/** Component IDs a definition embeds directly (component and dynamic-zone fields). */\nexport const embeddedComponentIds = (definition: SchemaDefinition): string[] =>\n definition.fields.flatMap((field) => {\n if (field.type === 'component') {\n return [field.settings.component];\n }\n if (field.type === 'dynamiczone') {\n return field.settings.components;\n }\n return [];\n });\n\nconst checkReferences = (definitions: readonly SchemaDefinition[]): ValidationIssue[] => {\n const byId = new Map(definitions.map((definition) => [definition.id, definition]));\n const issues: ValidationIssue[] = [];\n for (const definition of definitions) {\n definition.fields.forEach((field, index) => {\n const path = `/fields/${index}/settings`;\n const expectComponent = (id: string, at: string) => {\n const target = byId.get(id);\n if (!target) {\n issues.push(withDefinition(definition, issue(at, 'UNKNOWN_REFERENCE', 'refers to no component')));\n } else if (target.kind !== 'component') {\n issues.push(\n withDefinition(\n definition,\n issue(at, 'INVALID_REFERENCE_TARGET', `\"${target.apiKey}\" is a model, not a component`),\n ),\n );\n }\n };\n if (field.type === 'relation') {\n const target = byId.get(field.settings.target);\n if (!target) {\n issues.push(\n withDefinition(definition, issue(`${path}/target`, 'UNKNOWN_REFERENCE', 'refers to no model')),\n );\n } else if (target.kind !== 'collection') {\n issues.push(\n withDefinition(\n definition,\n issue(\n `${path}/target`,\n 'INVALID_REFERENCE_TARGET',\n `relations must target a collection model; \"${target.apiKey}\" is a ${target.kind}`,\n ),\n ),\n );\n }\n }\n if (field.type === 'component') {\n expectComponent(field.settings.component, `${path}/component`);\n }\n if (field.type === 'dynamiczone') {\n const seen = new Set<string>();\n field.settings.components.forEach((id, componentIndex) => {\n const at = `${path}/components/${componentIndex}`;\n if (seen.has(id)) {\n issues.push(withDefinition(definition, issue(at, 'DUPLICATE_ID', 'component listed twice')));\n }\n seen.add(id);\n expectComponent(id, at);\n });\n }\n });\n }\n return issues;\n};\n\n/**\n * Longest chain of nested components below each definition, or a cycle. Depth 1 means the definition\n * embeds components that embed nothing.\n */\nconst checkNesting = (definitions: readonly SchemaDefinition[]): ValidationIssue[] => {\n const byId = new Map(definitions.map((definition) => [definition.id, definition]));\n const depthOf = new Map<string, number>();\n const issues: ValidationIssue[] = [];\n const reported = new Set<string>();\n\n const visit = (id: string, stack: string[]): number => {\n const known = depthOf.get(id);\n if (known !== undefined) {\n return known;\n }\n if (stack.includes(id)) {\n const cycle = [...stack.slice(stack.indexOf(id)), id].map(\n (member) => byId.get(member)?.apiKey ?? member,\n );\n const definition = byId.get(id);\n if (definition && !reported.has(id)) {\n reported.add(id);\n issues.push(\n withDefinition(\n definition,\n issue('/fields', 'COMPONENT_CYCLE', `components nest in a cycle: ${cycle.join(' → ')}`),\n ),\n );\n }\n return Number.POSITIVE_INFINITY;\n }\n const definition = byId.get(id);\n if (!definition) {\n return 0;\n }\n const children = embeddedComponentIds(definition).filter(\n (child) => byId.get(child)?.kind === 'component',\n );\n const depth =\n children.length === 0 ? 0 : 1 + Math.max(...children.map((child) => visit(child, [...stack, id])));\n depthOf.set(id, depth);\n return depth;\n };\n\n for (const definition of definitions) {\n const depth = visit(definition.id, []);\n if (Number.isFinite(depth) && depth > MAX_COMPONENT_DEPTH && definition.kind !== 'component') {\n issues.push(\n withDefinition(\n definition,\n issue(\n '/fields',\n 'COMPONENT_TOO_DEEP',\n `components nest ${depth} levels deep; the limit is ${MAX_COMPONENT_DEPTH}`,\n ),\n ),\n );\n }\n }\n return issues;\n};\n\n/**\n * Cross-definition checks over a whole schema (every active definition with the proposed change applied):\n * unique IDs and API keys, GraphQL name collisions, relation and component targets, component cycles and\n * nesting depth. Each definition must already pass `validateDefinition`.\n */\nexport const validateSchema = (definitions: readonly SchemaDefinition[]): ValidationIssue[] => [\n ...checkIdentity(definitions),\n ...checkGeneratedNames(definitions),\n ...checkReferences(definitions),\n ...checkNesting(definitions),\n];\n\n/** Definitions that reference `id` (relations, components, dynamic zones). Used to block deletions. */\nexport const findReferencingDefinitions = (\n definitions: readonly SchemaDefinition[],\n id: string,\n): SchemaDefinition[] =>\n definitions.filter(\n (definition) =>\n definition.id !== id &&\n definition.fields.some(\n (field) =>\n (field.type === 'relation' && field.settings.target === id) ||\n (field.type === 'component' && field.settings.component === id) ||\n (field.type === 'dynamiczone' && field.settings.components.includes(id)),\n ),\n );\n\n/**\n * Models that embed a component directly or through other components, i.e. whose entries change shape\n * when the component does (brief §5: \"editing a shared component must account for all dependent models\").\n */\nexport const findDependentModels = (\n definitions: readonly SchemaDefinition[],\n componentId: string,\n): SchemaDefinition[] => {\n const embeddedBy = new Map<string, SchemaDefinition[]>();\n for (const definition of definitions) {\n for (const child of embeddedComponentIds(definition)) {\n embeddedBy.set(child, [...(embeddedBy.get(child) ?? []), definition]);\n }\n }\n const models = new Map<string, SchemaDefinition>();\n const visited = new Set<string>();\n const queue = [componentId];\n while (queue.length > 0) {\n const current = queue.shift() as string;\n if (visited.has(current)) {\n continue;\n }\n visited.add(current);\n for (const parent of embeddedBy.get(current) ?? []) {\n if (parent.kind === 'component') {\n queue.push(parent.id);\n } else {\n models.set(parent.id, parent);\n }\n }\n }\n return [...models.values()];\n};\n","import type { SchemaDefinition } from '../types/definitions.js';\n\n/**\n * Canonical JSON: object keys sorted by code point at every level, arrays in their given order (field\n * order is meaningful: it is the form order), two-space indentation and a trailing newline. Two equal\n * definitions always serialize to the same bytes, so files diff cleanly in git and hashes are stable.\n */\nconst sortKeys = (value: unknown): unknown => {\n if (Array.isArray(value)) {\n return value.map(sortKeys);\n }\n if (typeof value === 'object' && value !== null) {\n const sorted: Record<string, unknown> = {};\n for (const key of Object.keys(value).sort()) {\n const entry = (value as Record<string, unknown>)[key];\n if (entry !== undefined) {\n sorted[key] = sortKeys(entry);\n }\n }\n return sorted;\n }\n return value;\n};\n\nexport const canonicalJson = (value: unknown): string => `${JSON.stringify(sortKeys(value), null, 2)}\\n`;\n\n/**\n * The bytes Shapio hashes and writes for a definition. The definition must be normalized\n * (`normalizeDefinition`), so defaults are explicit and the same meaning has one spelling.\n */\nexport const serializeDefinition = (definition: SchemaDefinition): string => canonicalJson(definition);\n","import { canonicalJson } from '../fileFormat/canonical.js';\nimport type { FieldDefinition, SchemaDefinition } from '../types/definitions.js';\nimport type { JsonValue } from '../types/json.js';\nimport { routeKeyOf } from '../validators/naming.js';\nimport type { SchemaChange } from './types.js';\n\nconst same = (a: unknown, b: unknown): boolean => canonicalJson(a ?? null) === canonicalJson(b ?? null);\nconst asJson = (value: unknown): JsonValue | undefined => value as JsonValue | undefined;\n\nconst DEFINITION_METADATA = ['label', 'description', 'category', 'icon', 'display'] as const;\nconst FIELD_METADATA = ['label', 'description', 'defaultValue', 'width'] as const;\nconst FIELD_FLAGS = [\n ['required', 'field.required'],\n ['localized', 'field.localized'],\n ['public', 'field.public'],\n ['deprecated', 'field.deprecated'],\n ['unique', 'field.unique'],\n ['filterable', 'field.filterable'],\n ['sortable', 'field.sortable'],\n] as const;\n\nconst diffFieldSettings = (\n definitionId: string,\n before: FieldDefinition,\n after: FieldDefinition,\n): SchemaChange[] => {\n const from = before.settings as Record<string, unknown>;\n const to = after.settings as Record<string, unknown>;\n const keys = [...new Set([...Object.keys(from), ...Object.keys(to)])].sort();\n return keys\n .filter((key) => !same(from[key], to[key]))\n .map((key) => ({\n kind: 'field.settings',\n definitionId,\n fieldId: after.id,\n property: key,\n from: asJson(from[key]),\n to: asJson(to[key]),\n }));\n};\n\nconst diffField = (definitionId: string, before: FieldDefinition, after: FieldDefinition): SchemaChange[] => {\n const changes: SchemaChange[] = [];\n const base = { definitionId, fieldId: after.id };\n if (before.apiKey !== after.apiKey) {\n changes.push({ ...base, kind: 'field.apiKey', from: before.apiKey, to: after.apiKey });\n }\n for (const property of FIELD_METADATA) {\n if (!same(before[property], after[property])) {\n changes.push({\n ...base,\n kind: 'field.metadata',\n property,\n from: asJson(before[property]),\n to: asJson(after[property]),\n });\n }\n }\n if (!same(before.editor, after.editor)) {\n changes.push({ ...base, kind: 'field.editor', from: before.editor, to: after.editor });\n }\n if (before.type !== after.type) {\n // Settings are type-specific; a type change is planned as one conversion including its new settings.\n changes.push({ ...base, kind: 'field.type', from: before.type, to: after.type });\n } else {\n changes.push(...diffFieldSettings(definitionId, before, after));\n }\n for (const [flag, kind] of FIELD_FLAGS) {\n if (before[flag] !== after[flag]) {\n changes.push({ ...base, kind, from: before[flag], to: after[flag] });\n }\n }\n return changes;\n};\n\n/**\n * Every difference between two versions of a definition, matched by stable IDs (so a renamed field is a\n * rename, not a removal plus an addition). Pass `null` for a side that does not exist. The order is\n * deterministic: definition-level changes, then fields in the new order, then removed fields.\n */\nexport const diffDefinitions = (\n before: SchemaDefinition | null,\n after: SchemaDefinition | null,\n): SchemaChange[] => {\n if (!before && !after) {\n return [];\n }\n if (!before) {\n return [\n {\n kind: 'definition.added',\n definitionId: (after as SchemaDefinition).id,\n to: (after as SchemaDefinition).apiKey,\n },\n ];\n }\n if (!after) {\n return [{ kind: 'definition.removed', definitionId: before.id, from: before.apiKey }];\n }\n const definitionId = after.id;\n const changes: SchemaChange[] = [];\n if (before.apiKey !== after.apiKey) {\n changes.push({ kind: 'definition.apiKey', definitionId, from: before.apiKey, to: after.apiKey });\n }\n const beforeRecord = before as unknown as Record<string, unknown>;\n const afterRecord = after as unknown as Record<string, unknown>;\n for (const property of DEFINITION_METADATA) {\n if (!same(beforeRecord[property], afterRecord[property])) {\n changes.push({\n kind: 'definition.metadata',\n definitionId,\n property,\n from: asJson(beforeRecord[property]),\n to: asJson(afterRecord[property]),\n });\n }\n }\n if (before.kind !== after.kind) {\n changes.push({ kind: 'model.kind', definitionId, from: before.kind, to: after.kind });\n }\n // Only between two collections: a kind switch is its own (breaking) change and adds or drops the plural.\n if (before.kind === 'collection' && after.kind === 'collection') {\n const [from, to] = [routeKeyOf(before), routeKeyOf(after)];\n if (from !== to) {\n changes.push({ kind: 'definition.pluralApiKey', definitionId, from, to });\n }\n }\n if (before.kind !== 'component' && after.kind !== 'component') {\n if (before.localized !== after.localized) {\n changes.push({ kind: 'model.localized', definitionId, from: before.localized, to: after.localized });\n }\n if (before.draftAndPublish !== after.draftAndPublish) {\n changes.push({\n kind: 'model.draftAndPublish',\n definitionId,\n from: before.draftAndPublish,\n to: after.draftAndPublish,\n });\n }\n }\n\n const beforeFields = new Map(before.fields.map((field) => [field.id, field]));\n const afterIds = new Set(after.fields.map((field) => field.id));\n for (const field of after.fields) {\n const previous = beforeFields.get(field.id);\n if (!previous) {\n changes.push({\n kind: 'field.added',\n definitionId,\n fieldId: field.id,\n to: field as unknown as JsonValue,\n });\n } else {\n changes.push(...diffField(definitionId, previous, field));\n }\n }\n for (const field of before.fields) {\n if (!afterIds.has(field.id)) {\n changes.push({\n kind: 'field.removed',\n definitionId,\n fieldId: field.id,\n from: field as unknown as JsonValue,\n });\n }\n }\n const keptBefore = before.fields.filter((field) => afterIds.has(field.id)).map((field) => field.id);\n const keptAfter = after.fields.filter((field) => beforeFields.has(field.id)).map((field) => field.id);\n if (!same(keptBefore, keptAfter)) {\n changes.push({ kind: 'field.order', definitionId, from: keptBefore, to: keptAfter });\n }\n return changes;\n};\n","import { Type, type Static } from 'typebox';\nimport { DEFINITION_KINDS, type SchemaDefinition } from '../types/definitions.js';\nimport { collectSchemaErrors } from '../validators/typeboxIssues.js';\nimport { canonicalJson } from './canonical.js';\n\n/** Where `shapio schema pull` keeps its record of what it pulled, relative to the project root. */\nexport const LOCK_FILE_PATH = '.shapio/schema-lock.json';\n/**\n * Format 2 (per-site schemas): each entry records its scope (`site`: a site key, or null when shared) and\n * the lock lists the sites the tree covers. Format 1 (every definition shared) still reads: its entries\n * have no `site`, which means shared, and it covers no site. `upgradeLockFile` spells both the same way.\n */\nexport const LOCK_FILE_FORMAT_VERSION = 2;\n\nexport const LockEntrySchema = Type.Object(\n {\n kind: Type.Enum(DEFINITION_KINDS),\n apiKey: Type.String(),\n /** The definition's per-model version on the instance when it was pulled. */\n version: Type.Integer({ minimum: 1 }),\n /** `hashDefinition` of the pulled definition; a local file with another hash has been edited. */\n hash: Type.String(),\n /**\n * The key of the site the definition belongs to; null (or absent, format 1) when shared. Null comes first:\n * Fastify's Ajv coerces types, and a string branch tried first would turn null into \"\" (no site at all).\n */\n site: Type.Optional(Type.Union([Type.Null(), Type.String()])),\n },\n { additionalProperties: false },\n);\n\nexport const LockFileSchema = Type.Object(\n {\n formatVersion: Type.Union([Type.Literal(1), Type.Literal(LOCK_FILE_FORMAT_VERSION)]),\n /** The instance's global schema version at pull time (informational; the guard is per model). */\n schemaVersion: Type.Integer({ minimum: 0 }),\n /** Keys of the sites whose definitions this tree holds (format 2; absent: none, shared only). */\n sites: Type.Optional(Type.Array(Type.String())),\n /** Keyed by definition ID. */\n definitions: Type.Record(Type.String(), LockEntrySchema),\n },\n { additionalProperties: false },\n);\n\nexport type LockEntry = Static<typeof LockEntrySchema>;\nexport type LockFile = Static<typeof LockFileSchema>;\n\n/** A lock in format 2 with every scope spelled out. */\nexport type ScopedLockEntry = LockEntry & { site: string | null };\nexport type ScopedLockFile = Omit<LockFile, 'formatVersion' | 'sites' | 'definitions'> & {\n formatVersion: typeof LOCK_FILE_FORMAT_VERSION;\n sites: string[];\n definitions: Record<string, ScopedLockEntry>;\n};\n\n/** Format 1 or 2 → format 2: absent scopes are shared, absent sites none. */\nexport const upgradeLockFile = (lock: LockFile): ScopedLockFile => ({\n formatVersion: LOCK_FILE_FORMAT_VERSION,\n schemaVersion: lock.schemaVersion,\n sites: [...(lock.sites ?? [])],\n definitions: Object.fromEntries(\n Object.entries(lock.definitions).map(([id, entry]) => [id, { ...entry, site: entry.site ?? null }]),\n ),\n});\n\n/** The lock entries one site's tree is about: the shared definitions and that site's (`siteKey`). */\nexport const lockEntriesForSite = (lock: LockFile, siteKey: string | null): LockFile['definitions'] =>\n Object.fromEntries(\n Object.entries(lock.definitions).filter(\n ([, entry]) => (entry.site ?? null) === null || entry.site === siteKey,\n ),\n );\n\n/** A tree applies to a site when it covers no site yet (shared only, or format 1) or lists that site. */\nexport const lockCoversSite = (lock: LockFile, siteKey: string): boolean => {\n const sites = lock.sites ?? [];\n return sites.length === 0 || sites.includes(siteKey);\n};\n\n/** `sites` plus `siteKey`, sorted and without duplicates (stable diffs in git). */\nexport const withSiteCovered = (sites: readonly string[], siteKey: string): string[] =>\n [...new Set([...sites, siteKey])].sort();\n\n/**\n * The lock after pulling one site's view (`shapio schema pull --site <siteKey>`): the shared entries and that\n * site's are replaced by what was pulled, another site's entries are kept as they are (one tree can hold\n * several sites), and the tree now covers `siteKey`. A format 1 lock upgrades first (every entry shared).\n */\nexport const mergePulledLock = (\n lock: LockFile | undefined,\n pulled: { schemaVersion: number; siteKey: string; definitions: readonly ExportedDefinition[] },\n): ScopedLockFile => {\n const current = lock ? upgradeLockFile(lock) : undefined;\n const pulledIds = new Set(pulled.definitions.map(({ definition }) => definition.id));\n const kept = Object.entries(current?.definitions ?? {}).filter(\n ([id, entry]) => entry.site !== null && entry.site !== pulled.siteKey && !pulledIds.has(id),\n );\n return {\n formatVersion: LOCK_FILE_FORMAT_VERSION,\n schemaVersion: pulled.schemaVersion,\n sites: withSiteCovered(current?.sites ?? [], pulled.siteKey),\n definitions: Object.fromEntries([\n ...kept,\n ...pulled.definitions.map(({ definition, version, hash, site }): [string, ScopedLockEntry] => [\n definition.id,\n { kind: definition.kind, apiKey: definition.apiKey, version, hash, site },\n ]),\n ]),\n };\n};\n\n/** One definition as `schema export` returns it, with its scope (a site key, or null when shared). */\nexport type ExportedDefinition = {\n definition: SchemaDefinition;\n version: number;\n hash: string;\n site: string | null;\n};\n\nexport class LockFileError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'LockFileError';\n }\n}\n\nexport const parseLockFile = (text: string): LockFile => {\n let parsed: unknown;\n try {\n parsed = JSON.parse(text);\n } catch {\n throw new LockFileError(`${LOCK_FILE_PATH} is not valid JSON`);\n }\n const errors = collectSchemaErrors(LockFileSchema, parsed);\n if (errors.length > 0) {\n throw new LockFileError(\n `${LOCK_FILE_PATH} is invalid: ${errors.map((error) => `${error.path || '/'} ${error.message}`).join('; ')}`,\n );\n }\n return parsed as LockFile;\n};\n\nexport const serializeLockFile = (lock: LockFile): string => canonicalJson(lock);\n","import { isStableId } from '../ids.js';\n\n/**\n * The rich-text document schema (ADR 0003, build plan §3.9): the baseline Tiptap/ProseMirror node and mark\n * set, as data. The server validates stored documents against it and renders HTML from it; the admin's\n * Tiptap editor (package F) must produce exactly these nodes, marks and attributes. Anything else is\n * rejected, never stripped silently.\n *\n * Why a hand-written structural check instead of `@tiptap/core` headless: the baseline is small and fixed,\n * the check needs no DOM shim, no extra runtime dependency on the server and no schema instantiation per\n * request, and it reports precise paths. Package F keeps the editor in step with this module (it is the\n * contract), and the shared JSON fixtures in this module's tests are what both sides agree on.\n */\n\nexport type AttrRule = {\n /** Returns true when the value is acceptable. `null` is checked like any other value. */\n check: (value: unknown) => boolean;\n /** Used when the attribute is absent. */\n default: unknown;\n};\n\nexport type NodeRule = {\n /** `block` nodes sit in block containers; `inline` nodes in textblocks. */\n group: 'block' | 'inline' | 'listItem' | 'tableRow' | 'tableCell' | 'doc';\n /** Allowed child groups or node types, and the minimum number of children. */\n content?: { allow: readonly string[]; min: number };\n attrs?: Readonly<Record<string, AttrRule>>;\n /** Inline children may carry marks (text nodes in a textblock); false for code blocks. */\n marks?: boolean;\n};\n\nconst isNullOrString = (max: number) => (value: unknown) =>\n value === null || (typeof value === 'string' && value.length <= max);\nconst isIntegerIn = (min: number, max: number) => (value: unknown) =>\n typeof value === 'number' && Number.isInteger(value) && value >= min && value <= max;\n\n/** `href` values a link may carry: web, mail and phone links, and same-document/relative paths. */\nexport const SAFE_LINK_PATTERN = /^(https?:\\/\\/|mailto:|tel:|\\/(?!\\/)|#)/i;\nconst isSafeHref = (value: unknown) =>\n typeof value === 'string' && value.length <= 2048 && SAFE_LINK_PATTERN.test(value.trim());\n\nconst CELL_ATTRS: Readonly<Record<string, AttrRule>> = {\n colspan: { check: isIntegerIn(1, 1000), default: 1 },\n rowspan: { check: isIntegerIn(1, 1000), default: 1 },\n colwidth: {\n check: (value) =>\n value === null || (Array.isArray(value) && value.every((width) => isIntegerIn(0, 100_000)(width))),\n default: null,\n },\n};\n\nexport const NODE_RULES: Readonly<Record<string, NodeRule>> = {\n doc: { group: 'doc', content: { allow: ['block'], min: 0 } },\n paragraph: { group: 'block', content: { allow: ['inline'], min: 0 }, marks: true },\n heading: {\n group: 'block',\n content: { allow: ['inline'], min: 0 },\n marks: true,\n attrs: { level: { check: isIntegerIn(1, 6), default: 1 } },\n },\n blockquote: { group: 'block', content: { allow: ['block'], min: 1 } },\n bulletList: { group: 'block', content: { allow: ['listItem'], min: 1 } },\n orderedList: {\n group: 'block',\n content: { allow: ['listItem'], min: 1 },\n attrs: {\n start: { check: isIntegerIn(0, 1_000_000), default: 1 },\n type: {\n check: (value) => value === null || ['1', 'a', 'A', 'i', 'I'].includes(value as string),\n default: null,\n },\n },\n },\n listItem: { group: 'listItem', content: { allow: ['block'], min: 1 } },\n codeBlock: {\n group: 'block',\n content: { allow: ['text'], min: 0 },\n marks: false,\n attrs: {\n language: {\n check: (value) =>\n value === null || (typeof value === 'string' && /^[A-Za-z0-9_+#.-]{1,32}$/.test(value)),\n default: null,\n },\n },\n },\n horizontalRule: { group: 'block' },\n image: {\n group: 'block',\n attrs: {\n // A media library reference, never a URL: delivery resolves it so private media stays private.\n mediaId: { check: isStableId, default: undefined },\n alt: { check: isNullOrString(1000), default: null },\n title: { check: isNullOrString(1000), default: null },\n },\n },\n table: { group: 'block', content: { allow: ['tableRow'], min: 1 } },\n tableRow: { group: 'tableRow', content: { allow: ['tableCell'], min: 1 } },\n tableHeader: { group: 'tableCell', content: { allow: ['block'], min: 1 }, attrs: CELL_ATTRS },\n tableCell: { group: 'tableCell', content: { allow: ['block'], min: 1 }, attrs: CELL_ATTRS },\n text: { group: 'inline' },\n hardBreak: { group: 'inline' },\n};\n\nexport type MarkRule = { attrs?: Readonly<Record<string, AttrRule>> };\n\nexport const MARK_RULES: Readonly<Record<string, MarkRule>> = {\n bold: {},\n italic: {},\n code: {},\n link: {\n attrs: {\n href: { check: isSafeHref, default: undefined },\n target: { check: (value) => value === null || value === '_blank', default: null },\n rel: { check: isNullOrString(200), default: null },\n class: { check: (value) => value === null, default: null },\n },\n },\n};\n\n/** Nesting deeper than this is rejected (keeps validation and rendering bounded). */\nexport const MAX_RICHTEXT_DEPTH = 40;\n","import { RICHTEXT_FORMAT, RICHTEXT_FORMAT_VERSION } from '../types/valueFormats.js';\nimport { MARK_RULES, MAX_RICHTEXT_DEPTH, NODE_RULES, type AttrRule } from './spec.js';\n\n/** A ProseMirror JSON node in Shapio's normalized form (only known keys, attributes defaulted). */\nexport type RichTextNode = {\n type: string;\n attrs?: Record<string, unknown>;\n content?: RichTextNode[];\n text?: string;\n marks?: Array<{ type: string; attrs?: Record<string, unknown> }>;\n};\n\nexport type RichTextDocument = { format: string; version: number; doc: RichTextNode };\n\nexport type RichTextProblem = { path: string; message: string };\n\nexport type RichTextResult =\n { ok: true; document: RichTextDocument; textLength: number } | { ok: false; problems: RichTextProblem[] };\n\nconst NODE_KEYS = new Set(['type', 'attrs', 'content', 'text', 'marks']);\nconst MAX_PROBLEMS = 20;\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\ntype Walk = { problems: RichTextProblem[]; textLength: number };\n\nconst fail = (walk: Walk, path: string, message: string): undefined => {\n if (walk.problems.length < MAX_PROBLEMS) {\n walk.problems.push({ path, message });\n }\n return undefined;\n};\n\nconst checkAttrs = (\n walk: Walk,\n path: string,\n rules: Readonly<Record<string, AttrRule>> | undefined,\n raw: unknown,\n): Record<string, unknown> | undefined => {\n if (raw !== undefined && !isRecord(raw)) {\n return fail(walk, `${path}/attrs`, 'must be an object');\n }\n const given = raw ?? {};\n const attrs: Record<string, unknown> = {};\n for (const key of Object.keys(given)) {\n if (!rules || !Object.hasOwn(rules, key)) {\n fail(walk, `${path}/attrs/${key}`, 'is not an allowed attribute');\n }\n }\n for (const [key, rule] of Object.entries(rules ?? {})) {\n const value = Object.hasOwn(given, key) ? given[key] : rule.default;\n if (value === undefined || !rule.check(value)) {\n fail(walk, `${path}/attrs/${key}`, value === undefined ? 'is required' : 'has an invalid value');\n continue;\n }\n attrs[key] = value;\n }\n return Object.keys(attrs).length > 0 ? attrs : undefined;\n};\n\nconst checkMarks = (walk: Walk, path: string, raw: unknown, allowed: boolean) => {\n if (raw === undefined) {\n return undefined;\n }\n if (!Array.isArray(raw)) {\n return fail(walk, `${path}/marks`, 'must be a list');\n }\n if (!allowed && raw.length > 0) {\n return fail(walk, `${path}/marks`, 'marks are not allowed here');\n }\n const seen = new Set<string>();\n const marks: NonNullable<RichTextNode['marks']> = [];\n raw.forEach((mark: unknown, index) => {\n const at = `${path}/marks/${index}`;\n if (!isRecord(mark) || typeof mark.type !== 'string' || !Object.hasOwn(MARK_RULES, mark.type)) {\n fail(walk, at, 'is not an allowed mark');\n return;\n }\n if (Object.keys(mark).some((key) => key !== 'type' && key !== 'attrs')) {\n fail(walk, at, 'has unknown properties');\n }\n if (seen.has(mark.type)) {\n fail(walk, at, 'is repeated');\n }\n seen.add(mark.type);\n const attrs = checkAttrs(walk, at, MARK_RULES[mark.type]?.attrs, mark.attrs);\n marks.push(attrs ? { type: mark.type, attrs } : { type: mark.type });\n });\n return marks.length > 0 ? marks : undefined;\n};\n\nconst matchesAllow = (allow: readonly string[], type: string): boolean => {\n const rule = NODE_RULES[type];\n return allow.includes(type) || (rule !== undefined && allow.includes(rule.group));\n};\n\nconst checkNode = (\n walk: Walk,\n raw: unknown,\n path: string,\n depth: number,\n context: { allow: readonly string[]; marks: boolean },\n): RichTextNode | undefined => {\n if (depth > MAX_RICHTEXT_DEPTH) {\n return fail(walk, path, 'is nested too deeply');\n }\n if (!isRecord(raw) || typeof raw.type !== 'string') {\n return fail(walk, path, 'must be a node with a type');\n }\n const { type } = raw;\n const rule = Object.hasOwn(NODE_RULES, type) ? NODE_RULES[type] : undefined;\n if (!rule) {\n return fail(walk, path, `\"${type}\" is not an allowed node`);\n }\n if (!matchesAllow(context.allow, type)) {\n return fail(walk, path, `\"${type}\" is not allowed here`);\n }\n for (const key of Object.keys(raw)) {\n if (!NODE_KEYS.has(key)) {\n fail(walk, `${path}/${key}`, 'is not an allowed property');\n }\n }\n if (type === 'text') {\n if (typeof raw.text !== 'string' || raw.text.length === 0) {\n return fail(walk, `${path}/text`, 'must be a non-empty string');\n }\n walk.textLength += raw.text.length;\n const marks = checkMarks(walk, path, raw.marks, context.marks);\n return marks ? { type, text: raw.text, marks } : { type, text: raw.text };\n }\n if (raw.text !== undefined) {\n fail(walk, `${path}/text`, 'only text nodes carry text');\n }\n const node: RichTextNode = { type };\n const attrs = checkAttrs(walk, path, rule.attrs, raw.attrs);\n if (attrs) {\n node.attrs = attrs;\n }\n const marks = checkMarks(walk, path, raw.marks, context.marks && rule.group === 'inline');\n if (marks) {\n node.marks = marks;\n }\n if (!rule.content) {\n if (raw.content !== undefined && !(Array.isArray(raw.content) && raw.content.length === 0)) {\n fail(walk, `${path}/content`, `\"${type}\" has no content`);\n }\n return node;\n }\n if (raw.content !== undefined && !Array.isArray(raw.content)) {\n return fail(walk, `${path}/content`, 'must be a list');\n }\n const children = (raw.content ?? []) as unknown[];\n if (children.length < rule.content.min) {\n fail(walk, `${path}/content`, `\"${type}\" needs at least ${rule.content.min} child node(s)`);\n }\n const childContext = { allow: rule.content.allow, marks: rule.marks ?? true };\n const content = children.flatMap((child, index) => {\n const checked = checkNode(walk, child, `${path}/content/${index}`, depth + 1, childContext);\n return checked ? [checked] : [];\n });\n if (content.length > 0) {\n node.content = content;\n }\n if (type === 'codeBlock' || type === 'paragraph' || type === 'heading') {\n walk.textLength += 1;\n }\n return node;\n};\n\n/**\n * Validates a stored rich-text value: the versioned envelope `{ format, version, doc }` and the document\n * against the baseline schema. Returns a normalized copy (known keys only, attribute defaults filled).\n */\nexport const validateRichText = (value: unknown): RichTextResult => {\n const walk: Walk = { problems: [], textLength: 0 };\n if (!isRecord(value)) {\n return { ok: false, problems: [{ path: '', message: 'must be a rich-text document object' }] };\n }\n if (value.format !== RICHTEXT_FORMAT) {\n fail(walk, '/format', `must be \"${RICHTEXT_FORMAT}\"`);\n }\n if (value.version !== RICHTEXT_FORMAT_VERSION) {\n fail(walk, '/version', `must be ${RICHTEXT_FORMAT_VERSION}`);\n }\n for (const key of Object.keys(value)) {\n if (!['format', 'version', 'doc'].includes(key)) {\n fail(walk, `/${key}`, 'is not an allowed property');\n }\n }\n const doc = checkNode(walk, value.doc, '/doc', 0, { allow: ['doc'], marks: false });\n if (walk.problems.length > 0 || !doc) {\n return {\n ok: false,\n problems: walk.problems.length > 0 ? walk.problems : [{ path: '/doc', message: 'is invalid' }],\n };\n }\n return {\n ok: true,\n document: { format: RICHTEXT_FORMAT, version: RICHTEXT_FORMAT_VERSION, doc },\n textLength: walk.textLength,\n };\n};\n\n/** True when a document holds no text and no media (an empty editor). */\nexport const isEmptyRichText = (document: RichTextDocument): boolean => {\n const hasSubstance = (node: RichTextNode): boolean =>\n node.type === 'text' ||\n node.type === 'image' ||\n node.type === 'horizontalRule' ||\n (node.content ?? []).some(hasSubstance);\n return !hasSubstance(document.doc);\n};\n\n/** Media assets a document's images reference, in document order, without repeats. */\nexport const richTextMediaIds = (document: RichTextDocument): string[] => {\n const ids = new Set<string>();\n const walk = (node: RichTextNode) => {\n if (node.type === 'image' && typeof node.attrs?.mediaId === 'string') {\n ids.add(node.attrs.mediaId);\n }\n (node.content ?? []).forEach(walk);\n };\n walk(document.doc);\n return [...ids];\n};\n","import { RICHTEXT_FORMAT, RICHTEXT_FORMAT_VERSION } from '../types/valueFormats.js';\nimport { SAFE_LINK_PATTERN } from './spec.js';\nimport type { RichTextDocument, RichTextNode } from './validate.js';\n\n/**\n * HTML rendering of stored rich text for delivery (ADR 0003). Rendered from JSON only, never from stored\n * HTML: every tag comes from this allow-list and every text and attribute value is escaped, so the output\n * is safe whatever the document held. Deterministic, so a site built at a pinned snapshot gets the same HTML.\n */\n\n/** Resolves an image's media ID to a deliverable URL; undefined when the asset is missing or not visible. */\nexport type MediaUrlResolver = (mediaId: string) => string | undefined;\n\nconst ESCAPES: Readonly<Record<string, string>> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n};\n\nexport const escapeHtml = (value: string): string =>\n value.replace(/[&<>\"']/g, (char) => ESCAPES[char] ?? char);\n\n/** Attribute values come from validated documents: strings and numbers only. */\nconst textOf = (value: unknown): string =>\n typeof value === 'string' || typeof value === 'number' ? String(value) : '';\n\nconst attribute = (name: string, value: unknown) =>\n value === null || value === undefined ? '' : ` ${name}=\"${escapeHtml(textOf(value))}\"`;\n\nconst BLOCK_TAGS: Readonly<Record<string, string>> = {\n paragraph: 'p',\n blockquote: 'blockquote',\n bulletList: 'ul',\n listItem: 'li',\n table: 'table',\n tableRow: 'tr',\n tableHeader: 'th',\n tableCell: 'td',\n};\n\nconst renderMarks = (text: string, marks: RichTextNode['marks']): string =>\n (marks ?? []).reduceRight((inner, mark) => {\n switch (mark.type) {\n case 'bold':\n return `<strong>${inner}</strong>`;\n case 'italic':\n return `<em>${inner}</em>`;\n case 'code':\n return `<code>${inner}</code>`;\n case 'link': {\n const href = textOf(mark.attrs?.href).trim();\n if (!SAFE_LINK_PATTERN.test(href)) {\n return inner;\n }\n const blank = mark.attrs?.target === '_blank';\n return `<a${attribute('href', href)}${blank ? ' target=\"_blank\" rel=\"noopener noreferrer nofollow\"' : ''}>${inner}</a>`;\n }\n default:\n return inner;\n }\n }, escapeHtml(text));\n\nconst cellAttributes = (node: RichTextNode) => {\n const colspan = Number(node.attrs?.colspan ?? 1);\n const rowspan = Number(node.attrs?.rowspan ?? 1);\n return `${colspan > 1 ? attribute('colspan', colspan) : ''}${rowspan > 1 ? attribute('rowspan', rowspan) : ''}`;\n};\n\nconst renderNode = (node: RichTextNode, resolveMedia: MediaUrlResolver | undefined): string => {\n const children = () => (node.content ?? []).map((child) => renderNode(child, resolveMedia)).join('');\n switch (node.type) {\n case 'doc':\n return children();\n case 'text':\n return renderMarks(node.text ?? '', node.marks);\n case 'hardBreak':\n return '<br>';\n case 'horizontalRule':\n return '<hr>';\n case 'heading': {\n const level = Math.min(6, Math.max(1, Number(node.attrs?.level ?? 1)));\n return `<h${level}>${children()}</h${level}>`;\n }\n case 'orderedList': {\n const start = Number(node.attrs?.start ?? 1);\n return `<ol${start !== 1 ? attribute('start', start) : ''}${attribute('type', node.attrs?.type)}>${children()}</ol>`;\n }\n case 'codeBlock': {\n const language = node.attrs?.language;\n const text = (node.content ?? []).map((child) => escapeHtml(child.text ?? '')).join('');\n return `<pre><code${language ? attribute('class', `language-${textOf(language)}`) : ''}>${text}</code></pre>`;\n }\n case 'image': {\n const mediaId = textOf(node.attrs?.mediaId);\n const src = resolveMedia?.(mediaId);\n if (!src) {\n // Unknown or private-and-unsigned media renders nothing rather than a broken or leaking link.\n return '';\n }\n return `<img${attribute('src', src)}${attribute('alt', node.attrs?.alt ?? '')}${attribute('title', node.attrs?.title)}>`;\n }\n case 'table':\n return `<table><tbody>${children()}</tbody></table>`;\n case 'tableHeader':\n case 'tableCell': {\n const tag = BLOCK_TAGS[node.type] as string;\n return `<${tag}${cellAttributes(node)}>${children()}</${tag}>`;\n }\n default: {\n const tag = BLOCK_TAGS[node.type];\n return tag ? `<${tag}>${children()}</${tag}>` : '';\n }\n }\n};\n\n/** Renders a validated document to sanitized HTML. */\nexport const renderRichTextHtml = (document: RichTextDocument, resolveMedia?: MediaUrlResolver): string =>\n renderNode(document.doc, resolveMedia);\n\n/** The document's text, blocks separated by blank lines (rich text → plain text conversions, search). */\nexport const richTextToPlainText = (document: RichTextDocument): string => {\n const blocks: string[] = [];\n const inline = (node: RichTextNode): string =>\n node.type === 'text'\n ? (node.text ?? '')\n : node.type === 'hardBreak'\n ? '\\n'\n : (node.content ?? []).map(inline).join('');\n const walk = (node: RichTextNode) => {\n if (node.type === 'paragraph' || node.type === 'heading' || node.type === 'codeBlock') {\n blocks.push(inline(node));\n return;\n }\n (node.content ?? []).forEach(walk);\n };\n walk(document.doc);\n return blocks.join('\\n\\n');\n};\n\n/** Plain text → a document of paragraphs (blank lines split paragraphs; single newlines are hard breaks). */\nexport const plainTextToRichText = (text: string): RichTextDocument => {\n const paragraphs = text\n .replace(/\\r\\n?/g, '\\n')\n .split(/\\n{2,}/)\n .filter((paragraph) => paragraph.length > 0)\n .map((paragraph): RichTextNode => {\n const content = paragraph\n .split('\\n')\n .flatMap((line, index): RichTextNode[] => [\n ...(index > 0 ? [{ type: 'hardBreak' }] : []),\n ...(line.length > 0 ? [{ type: 'text', text: line }] : []),\n ]);\n return content.length > 0 ? { type: 'paragraph', content } : { type: 'paragraph' };\n });\n return {\n format: RICHTEXT_FORMAT,\n version: RICHTEXT_FORMAT_VERSION,\n doc: { type: 'doc', content: paragraphs.length > 0 ? paragraphs : [{ type: 'paragraph' }] },\n };\n};\n","import { richTextToPlainText } from './render.js';\nimport { validateRichText } from './validate.js';\n\n/**\n * A stored rich text value (`{ format, version, doc }`) as one line of plain text: blocks separated by a\n * space, whitespace collapsed. For summaries (list cells, collapsed items, review rows), never for delivery.\n * Anything that is not a valid document (an unconverted value of a field that became rich text) reads as ''.\n */\nexport const richTextPlainText = (value: unknown): string => {\n const result = validateRichText(value);\n return result.ok ? richTextToPlainText(result.document).replace(/\\s+/g, ' ').trim() : '';\n};\n","/**\n * Admin themes (docs/plans/themes.md): a theme is a named, complete set of these tokens for a light variant, a\n * dark variant or both. One list, shared by the admin's stylesheets (and their tests) and the API, which\n * validates themes declared by extensions (`shapio.config` `themes`).\n */\n/** The UI tokens: every theme variant sets all of them. */\nexport const THEME_SEMANTIC_TOKENS = [\n 'background',\n 'foreground',\n 'card',\n 'card-foreground',\n 'popover',\n 'popover-foreground',\n 'primary',\n 'primary-foreground',\n 'primary-hover',\n 'secondary',\n 'secondary-foreground',\n 'muted',\n 'muted-foreground',\n 'accent',\n 'accent-foreground',\n 'destructive',\n 'destructive-foreground',\n 'destructive-muted',\n 'success',\n 'success-muted',\n 'warning',\n 'warning-muted',\n 'info',\n 'info-muted',\n 'border',\n 'input',\n 'ring',\n 'link',\n 'overlay',\n 'sidebar',\n 'sidebar-foreground',\n 'sidebar-primary',\n 'sidebar-primary-foreground',\n 'sidebar-accent',\n 'sidebar-accent-foreground',\n 'sidebar-border',\n 'sidebar-ring',\n] as const;\n\n/**\n * The logo (tile, S, letters) and the signed-out screens' brand panel. Built-in themes set them all; an\n * extension theme may leave them out and gets Shapio's for that variant.\n */\nexport const THEME_BRAND_TOKENS = [\n 'brand-logo',\n 'brand-logo-foreground',\n 'brand-letters',\n 'brand-panel-from',\n 'brand-panel-to',\n 'brand-panel-foreground',\n 'brand-panel-mark',\n] as const;\n\nexport const THEME_TOKENS = [...THEME_SEMANTIC_TOKENS, ...THEME_BRAND_TOKENS] as const;\n\nexport type ThemeToken = (typeof THEME_TOKENS)[number];\n\nexport const THEME_VARIANTS = ['light', 'dark'] as const;\n\nexport type ThemeVariant = (typeof THEME_VARIANTS)[number];\n\n/** A theme key: used in `data-theme` and in CSS selectors, so deliberately narrow. */\nexport const THEME_KEY_PATTERN = /^[a-z][a-z0-9-]{0,40}$/;\n\n/** The themes the admin ships; an extension theme may not reuse these keys. */\nexport const BUILT_IN_THEME_KEYS = [\n 'shapio',\n 'classic',\n 'murdered-out',\n 'forest',\n 'snowed',\n 'butter',\n] as const;\n\nexport type BuiltInThemeKey = (typeof BUILT_IN_THEME_KEYS)[number];\n\n/**\n * A token value an extension may use: a hex colour or a colour function whose arguments are numbers, units\n * and separators only (no `;`, quotes, braces or nested functions such as `url()` or `var()`), so a value\n * can never escape its declaration.\n */\nexport const THEME_COLOUR_PATTERN =\n /^(?:#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|(?:rgba?|hsla?|oklch|oklab)\\([0-9a-z.,%\\s/+-]{1,80}\\))$/;\n","import type { ThemeVariant } from './tokens.js';\n\n/**\n * WCAG 2.1 AA contrast of a theme's tokens: text pairs need 4.5:1 (1.4.3); what identifies a control or the\n * focus (input borders, unchecked switches, focus rings, primary buttons against the page) needs 3:1 (1.4.11).\n * The admin's built-in themes are gated on this by a unit test; extension themes get warnings from\n * `shapio extensions check`. axe checks rendered text only, not these pairs.\n */\nexport type ContrastPair = readonly [foreground: string, background: string];\n\nconst SURFACES = ['background', 'card', 'popover'];\n\nexport const THEME_TEXT_PAIRS: readonly ContrastPair[] = [\n ...SURFACES.map((surface): ContrastPair => ['foreground', surface]),\n ...[...SURFACES, 'muted', 'secondary', 'accent', 'sidebar'].map((surface): ContrastPair => [\n 'muted-foreground',\n surface,\n ]),\n ['primary-foreground', 'primary'],\n ['primary-foreground', 'primary-hover'],\n ['secondary-foreground', 'secondary'],\n ['accent-foreground', 'accent'],\n ['destructive-foreground', 'destructive'],\n ['destructive', 'background'],\n ['destructive', 'card'],\n ['success', 'background'],\n ['success', 'card'],\n ['success', 'success-muted'],\n // Status chips (StatusChip): tone text on its own tinted background, and on plain surfaces.\n ['warning', 'warning-muted'],\n ['warning', 'card'],\n ['info', 'info-muted'],\n ['info', 'card'],\n ['destructive', 'destructive-muted'],\n ['foreground', 'muted'],\n ['link', 'background'],\n ['link', 'card'],\n ['sidebar-foreground', 'sidebar'],\n ['sidebar-primary-foreground', 'sidebar-primary'],\n ['sidebar-accent-foreground', 'sidebar-accent'],\n ['sidebar-foreground', 'sidebar-accent'],\n ['muted-foreground', 'sidebar-accent'],\n // Status and link text on raised and muted surfaces (popovers, sheets, muted bands).\n ...['destructive', 'success', 'warning', 'link'].flatMap((text): ContrastPair[] => [\n [text, 'popover'],\n [text, 'muted'],\n ]),\n // The signed-out screens' brand panel (tagline and pitch on both ends of the gradient).\n ['brand-panel-foreground', 'brand-panel-from'],\n ['brand-panel-foreground', 'brand-panel-to'],\n];\n\nexport const THEME_UI_PAIRS: readonly ContrastPair[] = [\n ...[...SURFACES, 'muted', 'secondary'].map((surface): ContrastPair => ['input', surface]),\n ...SURFACES.map((surface): ContrastPair => ['ring', surface]),\n ['ring', 'muted'],\n ['ring', 'accent'],\n ['primary', 'background'],\n ['primary', 'card'],\n ['primary', 'popover'],\n // Primary icons on neutral tiles (IconTile accent) and the info alert's icon.\n ['primary', 'muted'],\n ['info', 'muted'],\n ['sidebar-ring', 'sidebar'],\n // The active nav item's left bar.\n ['sidebar-primary', 'sidebar'],\n ['sidebar-primary', 'sidebar-accent'],\n];\n\n/**\n * Dark only: control borders on the selection surface. In light, selected table rows use accent/40, which\n * passes, and other selected surfaces hold no controls.\n */\nexport const THEME_DARK_UI_PAIRS: readonly ContrastPair[] = [['input', 'accent']];\n\nconst HEX = /^#[0-9a-fA-F]{6}$/;\n\nconst channel = (value: number) => {\n const c = value / 255;\n return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\n};\n\nconst luminance = (hex: string) => {\n const [r, g, b] = [1, 3, 5].map((index) => channel(parseInt(hex.slice(index, index + 2), 16)));\n return 0.2126 * (r ?? 0) + 0.7152 * (g ?? 0) + 0.0722 * (b ?? 0);\n};\n\n/** The WCAG contrast ratio of two `#rrggbb` colours. */\nexport const contrastRatio = (a: string, b: string): number => {\n const [high = 0, low = 0] = [luminance(a), luminance(b)].sort((x, y) => y - x);\n return (high + 0.05) / (low + 0.05);\n};\n\nexport type ContrastCheck = {\n foreground: string;\n background: string;\n /** 4.5 for text, 3 for controls. */\n required: number;\n /** Undefined when a value is not a `#rrggbb` colour (functions such as `oklch()` are not checked). */\n ratio: number | undefined;\n};\n\n/** Every pair the variant must meet, with its ratio. Missing tokens report an undefined ratio. */\nexport const checkThemeContrast = (\n tokens: Readonly<Record<string, string>>,\n variant: ThemeVariant,\n): ContrastCheck[] => {\n const uiPairs = variant === 'dark' ? [...THEME_UI_PAIRS, ...THEME_DARK_UI_PAIRS] : THEME_UI_PAIRS;\n const measure = ([foreground, background]: ContrastPair, required: number): ContrastCheck => {\n const a = tokens[foreground];\n const b = tokens[background];\n return {\n foreground,\n background,\n required,\n ratio: a && b && HEX.test(a) && HEX.test(b) ? contrastRatio(a, b) : undefined,\n };\n };\n return [...THEME_TEXT_PAIRS.map((pair) => measure(pair, 4.5)), ...uiPairs.map((pair) => measure(pair, 3))];\n};\n","import { normalizeDefinition } from '../normalize.js';\nimport type { ComponentDefinition } from '../types/definitions.js';\nimport { SEO_COMPONENT_API_KEY, SEO_COMPONENT_ID, SEO_FIELD_IDS } from './ids.js';\n\n/**\n * The built-in SEO component as first created. All fields are public and none has a length limit: the 70 and\n * 160 character marks are admin-only counters (`SEO_TITLE_SOFT_MAX`), never validation.\n */\nexport const seoComponentDefinition = (): ComponentDefinition =>\n normalizeDefinition({\n id: SEO_COMPONENT_ID,\n kind: 'component',\n apiKey: SEO_COMPONENT_API_KEY,\n label: 'SEO',\n description: 'Search and social metadata: title, description, image, canonical URL and indexing.',\n category: 'Built-in',\n icon: 'search',\n fields: [\n { id: SEO_FIELD_IDS.title, apiKey: 'title', label: 'Title', type: 'string' },\n { id: SEO_FIELD_IDS.description, apiKey: 'description', label: 'Description', type: 'text' },\n {\n id: SEO_FIELD_IDS.image,\n apiKey: 'image',\n label: 'Social image',\n type: 'media',\n settings: { multiple: false, allowedKinds: ['image'] },\n },\n {\n id: SEO_FIELD_IDS.canonical,\n apiKey: 'canonical',\n label: 'Canonical URL',\n type: 'url',\n settings: { protocols: ['https', 'http'] },\n },\n { id: SEO_FIELD_IDS.noindex, apiKey: 'noindex', label: 'Hide from search engines', type: 'boolean' },\n ],\n display: { titleFieldId: SEO_FIELD_IDS.title },\n }) as ComponentDefinition;\n","import { Type, type Static } from 'typebox';\nimport { LOCALE_CODE_PATTERN } from '../types/locales.js';\nimport { SEO_TITLE_TEMPLATE_PATTERN, SEO_TWITTER_HANDLE_PATTERN } from './ids.js';\n\nconst closed = { additionalProperties: false } as const;\n\n/** Media asset IDs are UUIDs. */\nconst ASSET_ID_PATTERN = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/;\n\n/** One locale's default texts. Every key is optional: a missing one falls back along the locale chain. */\nexport const SeoLocaleDefaultsSchema = Type.Object(\n {\n siteName: Type.Optional(Type.String({ minLength: 1, maxLength: 200 })),\n titleTemplate: Type.Optional(\n Type.String({ minLength: 2, maxLength: 200, pattern: SEO_TITLE_TEMPLATE_PATTERN.source }),\n ),\n description: Type.Optional(Type.String({ minLength: 1, maxLength: 1000 })),\n },\n closed,\n);\n\n/**\n * A site's SEO defaults (`sites.seo_defaults`): texts per locale code, the default social image (a public\n * image asset of the same site) and the Twitter handle for the whole site.\n */\nexport const SeoDefaultsSchema = Type.Object(\n {\n locales: Type.Record(Type.String({ pattern: LOCALE_CODE_PATTERN.source }), SeoLocaleDefaultsSchema, {\n additionalProperties: false,\n }),\n imageId: Type.Union([Type.String({ pattern: ASSET_ID_PATTERN.source }), Type.Null()]),\n twitterHandle: Type.Union([Type.String({ pattern: SEO_TWITTER_HANDLE_PATTERN.source }), Type.Null()]),\n },\n closed,\n);\n\nexport type SeoLocaleDefaults = Static<typeof SeoLocaleDefaultsSchema>;\nexport type SeoDefaults = Static<typeof SeoDefaultsSchema>;\n"],"ignoreList":[3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,270,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483],"mappings":"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"}