tsondb 0.5.18 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/dist/src/bin/tsondb.js +1 -1
  2. package/dist/src/index.d.ts +1 -1
  3. package/dist/src/node/config.d.ts +20 -0
  4. package/dist/src/node/config.js +5 -0
  5. package/dist/src/node/index.d.ts +3 -2
  6. package/dist/src/node/index.js +13 -8
  7. package/dist/src/node/renderers/jsonschema/render.d.ts +1 -1
  8. package/dist/src/node/renderers/jsonschema/render.js +12 -7
  9. package/dist/src/node/renderers/ts/render.d.ts +1 -1
  10. package/dist/src/node/renderers/ts/render.js +12 -6
  11. package/dist/src/node/schema/Node.d.ts +100 -29
  12. package/dist/src/node/schema/Node.js +268 -61
  13. package/dist/src/node/schema/Schema.js +96 -1
  14. package/dist/src/node/schema/TypeParameter.d.ts +7 -9
  15. package/dist/src/node/schema/TypeParameter.js +7 -5
  16. package/dist/src/node/schema/declarations/Declaration.d.ts +10 -28
  17. package/dist/src/node/schema/declarations/Declaration.js +8 -110
  18. package/dist/src/node/schema/declarations/EntityDecl.d.ts +48 -48
  19. package/dist/src/node/schema/declarations/EntityDecl.js +15 -12
  20. package/dist/src/node/schema/declarations/EnumDecl.d.ts +14 -17
  21. package/dist/src/node/schema/declarations/EnumDecl.js +12 -12
  22. package/dist/src/node/schema/declarations/TypeAliasDecl.d.ts +8 -14
  23. package/dist/src/node/schema/declarations/TypeAliasDecl.js +10 -11
  24. package/dist/src/node/schema/index.d.ts +0 -2
  25. package/dist/src/node/schema/index.js +0 -1
  26. package/dist/src/node/schema/types/Type.d.ts +19 -42
  27. package/dist/src/node/schema/types/Type.js +29 -167
  28. package/dist/src/node/schema/types/generic/ArrayType.d.ts +5 -14
  29. package/dist/src/node/schema/types/generic/ArrayType.js +15 -20
  30. package/dist/src/node/schema/types/generic/EnumType.d.ts +5 -17
  31. package/dist/src/node/schema/types/generic/EnumType.js +12 -20
  32. package/dist/src/node/schema/types/generic/ObjectType.d.ts +5 -19
  33. package/dist/src/node/schema/types/generic/ObjectType.js +11 -15
  34. package/dist/src/node/schema/types/primitives/BooleanType.d.ts +7 -8
  35. package/dist/src/node/schema/types/primitives/BooleanType.js +5 -4
  36. package/dist/src/node/schema/types/primitives/DateType.d.ts +6 -8
  37. package/dist/src/node/schema/types/primitives/DateType.js +5 -4
  38. package/dist/src/node/schema/types/primitives/FloatType.d.ts +9 -21
  39. package/dist/src/node/schema/types/primitives/FloatType.js +5 -4
  40. package/dist/src/node/schema/types/primitives/IntegerType.d.ts +9 -21
  41. package/dist/src/node/schema/types/primitives/IntegerType.js +5 -4
  42. package/dist/src/node/schema/types/primitives/StringType.d.ts +6 -10
  43. package/dist/src/node/schema/types/primitives/StringType.js +5 -4
  44. package/dist/src/node/schema/types/references/ChildEntitiesType.d.ts +18 -0
  45. package/dist/src/node/schema/types/references/ChildEntitiesType.js +18 -0
  46. package/dist/src/node/schema/types/references/IncludeIdentifierType.d.ts +7 -13
  47. package/dist/src/node/schema/types/references/IncludeIdentifierType.js +12 -12
  48. package/dist/src/node/schema/types/references/NestedEntityMapType.d.ts +7 -17
  49. package/dist/src/node/schema/types/references/NestedEntityMapType.js +11 -13
  50. package/dist/src/node/schema/types/references/ReferenceIdentifierType.d.ts +4 -10
  51. package/dist/src/node/schema/types/references/ReferenceIdentifierType.js +3 -5
  52. package/dist/src/node/schema/types/references/TypeArgumentType.d.ts +5 -10
  53. package/dist/src/node/schema/types/references/TypeArgumentType.js +10 -5
  54. package/dist/src/node/server/api/declarations.js +24 -6
  55. package/dist/src/node/server/api/index.js +11 -0
  56. package/dist/src/node/server/api/instances.js +9 -6
  57. package/dist/src/node/server/index.d.ts +6 -1
  58. package/dist/src/node/server/index.js +7 -3
  59. package/dist/src/node/server/init.d.ts +2 -1
  60. package/dist/src/node/server/init.js +11 -11
  61. package/dist/src/node/server/utils/childInstances.d.ts +4 -0
  62. package/dist/src/node/server/utils/childInstances.js +41 -0
  63. package/dist/src/node/server/utils/instanceOperations.d.ts +8 -0
  64. package/dist/src/node/server/utils/instanceOperations.js +107 -0
  65. package/dist/src/node/server/utils/locales.d.ts +2 -0
  66. package/dist/src/node/server/utils/locales.js +8 -0
  67. package/dist/src/node/utils/childInstances.d.ts +32 -0
  68. package/dist/src/node/utils/childInstances.js +164 -0
  69. package/dist/src/node/utils/displayName.d.ts +2 -1
  70. package/dist/src/node/utils/displayName.js +5 -4
  71. package/dist/src/node/utils/files.d.ts +5 -0
  72. package/dist/src/node/utils/files.js +9 -0
  73. package/dist/src/node/utils/instanceOperations.d.ts +14 -0
  74. package/dist/src/node/utils/instanceOperations.js +88 -0
  75. package/dist/src/node/utils/instances.d.ts +1 -1
  76. package/dist/src/node/utils/instances.js +12 -6
  77. package/dist/src/node/utils/references.d.ts +3 -1
  78. package/dist/src/node/utils/references.js +43 -18
  79. package/dist/src/node/utils/referencesWorker.d.ts +5 -0
  80. package/dist/src/node/utils/referencesWorker.js +22 -0
  81. package/dist/src/node/utils/workers.d.ts +15 -0
  82. package/dist/src/node/utils/workers.js +90 -0
  83. package/dist/src/shared/api.d.ts +14 -1
  84. package/dist/src/shared/schema/Node.d.ts +63 -0
  85. package/dist/src/shared/schema/Node.js +128 -0
  86. package/dist/src/shared/schema/TypeParameter.d.ts +9 -0
  87. package/dist/src/shared/schema/TypeParameter.js +2 -0
  88. package/dist/src/shared/schema/declarations/Declaration.d.ts +21 -0
  89. package/dist/src/shared/schema/declarations/Declaration.js +4 -0
  90. package/dist/src/shared/schema/declarations/EntityDecl.d.ts +32 -0
  91. package/dist/src/shared/schema/declarations/EntityDecl.js +8 -0
  92. package/dist/src/shared/schema/declarations/EnumDecl.d.ts +11 -0
  93. package/dist/src/shared/schema/declarations/EnumDecl.js +9 -0
  94. package/dist/src/shared/schema/declarations/TypeAliasDecl.d.ts +11 -0
  95. package/dist/src/shared/schema/declarations/TypeAliasDecl.js +7 -0
  96. package/dist/src/shared/schema/types/ArrayType.d.ts +11 -0
  97. package/dist/src/shared/schema/types/ArrayType.js +8 -0
  98. package/dist/src/shared/schema/types/BooleanType.d.ts +7 -0
  99. package/dist/src/shared/schema/types/BooleanType.js +2 -0
  100. package/dist/src/shared/schema/types/ChildEntitiesType.d.ts +8 -0
  101. package/dist/src/shared/schema/types/ChildEntitiesType.js +2 -0
  102. package/dist/src/shared/schema/types/DateType.d.ts +8 -0
  103. package/dist/src/shared/schema/types/DateType.js +2 -0
  104. package/dist/src/shared/schema/types/EnumType.d.ts +14 -0
  105. package/dist/src/shared/schema/types/EnumType.js +28 -0
  106. package/dist/src/shared/schema/types/FloatType.d.ts +11 -0
  107. package/dist/src/shared/schema/types/FloatType.js +2 -0
  108. package/dist/src/shared/schema/types/IncludeIdentifierType.d.ts +11 -0
  109. package/dist/src/shared/schema/types/IncludeIdentifierType.js +13 -0
  110. package/dist/src/shared/schema/types/IntegerType.d.ts +11 -0
  111. package/dist/src/shared/schema/types/IntegerType.js +2 -0
  112. package/dist/src/shared/schema/types/NestedEntityMapType.d.ts +17 -0
  113. package/dist/src/shared/schema/types/NestedEntityMapType.js +14 -0
  114. package/dist/src/shared/schema/types/ObjectType.d.ts +19 -0
  115. package/dist/src/shared/schema/types/ObjectType.js +14 -0
  116. package/dist/src/shared/schema/types/ReferenceIdentifierType.d.ts +8 -0
  117. package/dist/src/shared/schema/types/ReferenceIdentifierType.js +2 -0
  118. package/dist/src/shared/schema/types/StringType.d.ts +10 -0
  119. package/dist/src/shared/schema/types/StringType.js +2 -0
  120. package/dist/src/shared/schema/types/Type.d.ts +20 -0
  121. package/dist/src/shared/schema/types/TypeArgumentType.d.ts +12 -0
  122. package/dist/src/shared/schema/types/TypeArgumentType.js +7 -0
  123. package/dist/src/shared/utils/array.d.ts +4 -0
  124. package/dist/src/shared/utils/array.js +30 -0
  125. package/dist/src/shared/utils/async.d.ts +8 -0
  126. package/dist/src/shared/utils/async.js +35 -0
  127. package/dist/src/shared/utils/compare.js +3 -3
  128. package/dist/src/shared/utils/displayName.d.ts +6 -2
  129. package/dist/src/shared/utils/displayName.js +21 -8
  130. package/dist/src/shared/utils/instances.d.ts +2 -3
  131. package/dist/src/shared/utils/instances.js +3 -1
  132. package/dist/src/shared/utils/markdown.d.ts +4 -0
  133. package/dist/src/shared/utils/markdown.js +173 -110
  134. package/dist/src/shared/utils/object.d.ts +2 -0
  135. package/dist/src/shared/utils/object.js +2 -0
  136. package/dist/src/shared/utils/result.d.ts +8 -2
  137. package/dist/src/shared/utils/result.js +1 -1
  138. package/dist/src/web/api/declarations.d.ts +26 -0
  139. package/dist/src/web/api/declarations.js +51 -0
  140. package/dist/src/web/api/git.d.ts +14 -0
  141. package/dist/src/web/api/git.js +20 -0
  142. package/dist/src/web/api/index.d.ts +1 -0
  143. package/dist/src/web/api/index.js +2 -0
  144. package/dist/src/web/api/instances.d.ts +2 -0
  145. package/dist/src/web/api/instances.js +2 -0
  146. package/dist/src/web/components/Git.js +19 -16
  147. package/dist/src/web/components/InstanceRouteSkeleton.d.ts +42 -0
  148. package/dist/src/web/components/InstanceRouteSkeleton.js +114 -0
  149. package/dist/src/web/components/Layout.js +3 -2
  150. package/dist/src/web/components/ModalDialog.d.ts +3 -0
  151. package/dist/src/web/components/ModalDialog.js +16 -0
  152. package/dist/src/web/components/Settings.d.ts +2 -0
  153. package/dist/src/web/components/Settings.js +47 -0
  154. package/dist/src/web/components/typeInputs/ArrayTypeInput.d.ts +3 -11
  155. package/dist/src/web/components/typeInputs/ArrayTypeInput.js +5 -4
  156. package/dist/src/web/components/typeInputs/BooleanTypeInput.d.ts +3 -6
  157. package/dist/src/web/components/typeInputs/BooleanTypeInput.js +2 -2
  158. package/dist/src/web/components/typeInputs/ChildEntitiesTypeInput.d.ts +6 -0
  159. package/dist/src/web/components/typeInputs/ChildEntitiesTypeInput.js +27 -0
  160. package/dist/src/web/components/typeInputs/DateTypeInput.d.ts +3 -6
  161. package/dist/src/web/components/typeInputs/DateTypeInput.js +2 -2
  162. package/dist/src/web/components/typeInputs/EnumTypeInput.d.ts +3 -11
  163. package/dist/src/web/components/typeInputs/EnumTypeInput.js +55 -22
  164. package/dist/src/web/components/typeInputs/FloatTypeInput.d.ts +3 -6
  165. package/dist/src/web/components/typeInputs/FloatTypeInput.js +2 -2
  166. package/dist/src/web/components/typeInputs/GenericTypeArgumentIdentifierTypeInput.d.ts +3 -4
  167. package/dist/src/web/components/typeInputs/IncludeIdentifierTypeInput.d.ts +3 -11
  168. package/dist/src/web/components/typeInputs/IncludeIdentifierTypeInput.js +3 -2
  169. package/dist/src/web/components/typeInputs/IntegerTypeInput.d.ts +3 -6
  170. package/dist/src/web/components/typeInputs/IntegerTypeInput.js +2 -2
  171. package/dist/src/web/components/typeInputs/NestedEntityMapTypeInput.d.ts +3 -11
  172. package/dist/src/web/components/typeInputs/NestedEntityMapTypeInput.js +5 -4
  173. package/dist/src/web/components/typeInputs/ObjectTypeInput.d.ts +3 -11
  174. package/dist/src/web/components/typeInputs/ObjectTypeInput.js +8 -5
  175. package/dist/src/web/components/typeInputs/ReferenceIdentifierTypeInput.d.ts +3 -8
  176. package/dist/src/web/components/typeInputs/ReferenceIdentifierTypeInput.js +2 -2
  177. package/dist/src/web/components/typeInputs/StringTypeInput.d.ts +3 -6
  178. package/dist/src/web/components/typeInputs/StringTypeInput.js +3 -3
  179. package/dist/src/web/components/typeInputs/TypeInput.d.ts +12 -4
  180. package/dist/src/web/components/typeInputs/TypeInput.js +22 -17
  181. package/dist/src/web/components/typeInputs/utils/ValidationErrors.d.ts +1 -0
  182. package/dist/src/web/components/typeInputs/utils/ValidationErrors.js +1 -3
  183. package/dist/src/web/context/config.d.ts +11 -0
  184. package/dist/src/web/context/config.js +6 -0
  185. package/dist/src/web/context/entities.d.ts +8 -5
  186. package/dist/src/web/context/entities.js +1 -1
  187. package/dist/src/web/context/settings.d.ts +8 -0
  188. package/dist/src/web/context/settings.js +10 -0
  189. package/dist/src/web/hooks/useEntityFromRoute.d.ts +1 -1
  190. package/dist/src/web/hooks/useEntityFromRoute.js +2 -2
  191. package/dist/src/web/hooks/useInstanceNamesByEntity.d.ts +1 -1
  192. package/dist/src/web/hooks/useInstanceNamesByEntity.js +4 -2
  193. package/dist/src/web/hooks/useMappedAPIResource.js +2 -4
  194. package/dist/src/web/hooks/useSecondaryDeclarations.d.ts +1 -1
  195. package/dist/src/web/hooks/useSecondaryDeclarations.js +8 -4
  196. package/dist/src/web/hooks/useSettings.d.ts +10 -0
  197. package/dist/src/web/hooks/useSettings.js +51 -0
  198. package/dist/src/web/index.js +11 -5
  199. package/dist/src/web/routes/CreateInstance.js +40 -79
  200. package/dist/src/web/routes/Entity.js +42 -19
  201. package/dist/src/web/routes/Home.js +24 -5
  202. package/dist/src/web/routes/Instance.js +34 -85
  203. package/dist/src/web/utils/InlineMarkdown.d.ts +1 -1
  204. package/dist/src/web/utils/InlineMarkdown.js +13 -1
  205. package/dist/src/web/utils/api.d.ts +25 -0
  206. package/dist/src/web/utils/api.js +34 -0
  207. package/dist/src/web/utils/typeSkeleton.d.ts +1 -1
  208. package/dist/src/web/utils/typeSkeleton.js +2 -0
  209. package/package.json +2 -1
  210. package/public/css/styles.css +171 -12
  211. package/dist/src/node/schema/types/primitives/NumericType.d.ts +0 -6
  212. package/dist/src/node/schema/types/primitives/NumericType.js +0 -2
  213. package/dist/src/node/schema/types/primitives/PrimitiveType.d.ts +0 -6
  214. package/dist/src/node/schema/validation/type.d.ts +0 -4
  215. package/dist/src/node/schema/validation/type.js +0 -1
  216. package/dist/src/node/server/api/instanceOperations.d.ts +0 -6
  217. package/dist/src/node/server/api/instanceOperations.js +0 -93
  218. package/dist/src/shared/config.d.ts +0 -11
  219. package/dist/src/shared/config.js +0 -1
  220. package/dist/src/web/api.d.ts +0 -24
  221. package/dist/src/web/api.js +0 -201
  222. /package/dist/src/{node/schema/types/primitives/PrimitiveType.js → shared/schema/types/Type.js} +0 -0
@@ -0,0 +1,128 @@
1
+ import { enumOfObject } from "../utils/enum.js";
2
+ import { assertExhaustive } from "../utils/typeSafety.js";
3
+ import { getReferencesForSerializedEntityDecl, resolveTypeArgumentsInSerializedEntityDecl, } from "./declarations/EntityDecl.js";
4
+ import { getReferencesForSerializedEnumDecl, resolveTypeArgumentsInSerializedEnumDecl, } from "./declarations/EnumDecl.js";
5
+ import { getReferencesForSerializedTypeAliasDecl, resolveTypeArgumentsInSerializedTypeAliasDecl, } from "./declarations/TypeAliasDecl.js";
6
+ import { getReferencesForSerializedTypeParameter, resolveTypeArgumentsInSerializedTypeParameter, } from "./TypeParameter.js";
7
+ import { getReferencesForSerializedArrayType, resolveTypeArgumentsInSerializedArrayType, } from "./types/ArrayType.js";
8
+ import { getReferencesForSerializedBooleanType, resolveTypeArgumentsInSerializedBooleanType, } from "./types/BooleanType.js";
9
+ import { getReferencesForSerializedChildEntitiesType, resolveTypeArgumentsInSerializedChildEntitiesType, } from "./types/ChildEntitiesType.js";
10
+ import { getReferencesForSerializedDateType, resolveTypeArgumentsInSerializedDateType, } from "./types/DateType.js";
11
+ import { getReferencesForSerializedEnumType, resolveTypeArgumentsInSerializedEnumType, } from "./types/EnumType.js";
12
+ import { getReferencesForSerializedFloatType, resolveTypeArgumentsInSerializedFloatType, } from "./types/FloatType.js";
13
+ import { getReferencesForSerializedIncludeIdentifierType, resolveTypeArgumentsInSerializedIncludeIdentifierType, } from "./types/IncludeIdentifierType.js";
14
+ import { getReferencesForSerializedIntegerType, resolveTypeArgumentsInSerializedIntegerType, } from "./types/IntegerType.js";
15
+ import { getReferencesForSerializedNestedEntityMapType, resolveTypeArgumentsInSerializedNestedEntityMapType, } from "./types/NestedEntityMapType.js";
16
+ import { getReferencesForSerializedObjectType, resolveTypeArgumentsInSerializedObjectType, } from "./types/ObjectType.js";
17
+ import { getReferencesForSerializedReferenceIdentifierType, resolveTypeArgumentsInSerializedReferenceIdentifierType, } from "./types/ReferenceIdentifierType.js";
18
+ import { getReferencesForSerializedStringType, resolveTypeArgumentsInSerializedStringType, } from "./types/StringType.js";
19
+ import { getReferencesForSerializedTypeArgumentType, resolveTypeArgumentsInSerializedTypeArgumentType, } from "./types/TypeArgumentType.js";
20
+ export const NodeKind = enumOfObject({
21
+ ChildEntityDecl: null,
22
+ EntityDecl: null,
23
+ EnumDecl: null,
24
+ EnumCaseDecl: null,
25
+ TypeAliasDecl: null,
26
+ MemberDecl: null,
27
+ ArrayType: null,
28
+ ObjectType: null,
29
+ BooleanType: null,
30
+ FloatType: null,
31
+ IntegerType: null,
32
+ StringType: null,
33
+ DateType: null,
34
+ TypeArgumentType: null,
35
+ TypeParameter: null,
36
+ ReferenceIdentifierType: null,
37
+ IncludeIdentifierType: null,
38
+ NestedEntityMapType: null,
39
+ EnumType: null,
40
+ ChildEntitiesType: null,
41
+ });
42
+ export const resolveSerializedTypeArguments = (decls, args, node) => {
43
+ switch (node.kind) {
44
+ case NodeKind.EntityDecl:
45
+ return resolveTypeArgumentsInSerializedEntityDecl(decls, args, node);
46
+ case NodeKind.EnumDecl:
47
+ return resolveTypeArgumentsInSerializedEnumDecl(decls, args, node);
48
+ case NodeKind.TypeAliasDecl:
49
+ return resolveTypeArgumentsInSerializedTypeAliasDecl(decls, args, node);
50
+ case NodeKind.ArrayType:
51
+ return resolveTypeArgumentsInSerializedArrayType(decls, args, node);
52
+ case NodeKind.ObjectType:
53
+ return resolveTypeArgumentsInSerializedObjectType(decls, args, node);
54
+ case NodeKind.BooleanType:
55
+ return resolveTypeArgumentsInSerializedBooleanType(decls, args, node);
56
+ case NodeKind.DateType:
57
+ return resolveTypeArgumentsInSerializedDateType(decls, args, node);
58
+ case NodeKind.FloatType:
59
+ return resolveTypeArgumentsInSerializedFloatType(decls, args, node);
60
+ case NodeKind.IntegerType:
61
+ return resolveTypeArgumentsInSerializedIntegerType(decls, args, node);
62
+ case NodeKind.StringType:
63
+ return resolveTypeArgumentsInSerializedStringType(decls, args, node);
64
+ case NodeKind.TypeArgumentType:
65
+ return resolveTypeArgumentsInSerializedTypeArgumentType(decls, args, node);
66
+ case NodeKind.ReferenceIdentifierType:
67
+ return resolveTypeArgumentsInSerializedReferenceIdentifierType(decls, args, node);
68
+ case NodeKind.IncludeIdentifierType:
69
+ return resolveTypeArgumentsInSerializedIncludeIdentifierType(decls, args, node);
70
+ case NodeKind.NestedEntityMapType:
71
+ return resolveTypeArgumentsInSerializedNestedEntityMapType(decls, args, node);
72
+ case NodeKind.EnumType:
73
+ return resolveTypeArgumentsInSerializedEnumType(decls, args, node);
74
+ case NodeKind.TypeParameter:
75
+ return resolveTypeArgumentsInSerializedTypeParameter(decls, args, node);
76
+ case NodeKind.ChildEntitiesType:
77
+ return resolveTypeArgumentsInSerializedChildEntitiesType(decls, args, node);
78
+ default:
79
+ return assertExhaustive(node);
80
+ }
81
+ };
82
+ export const getReferencesSerialized = (decls, node, value) => {
83
+ switch (node.kind) {
84
+ case NodeKind.EntityDecl:
85
+ return getReferencesForSerializedEntityDecl(decls, node, value);
86
+ case NodeKind.EnumDecl:
87
+ return getReferencesForSerializedEnumDecl(decls, node, value);
88
+ case NodeKind.TypeAliasDecl:
89
+ return getReferencesForSerializedTypeAliasDecl(decls, node, value);
90
+ case NodeKind.ArrayType:
91
+ return getReferencesForSerializedArrayType(decls, node, value);
92
+ case NodeKind.ObjectType:
93
+ return getReferencesForSerializedObjectType(decls, node, value);
94
+ case NodeKind.BooleanType:
95
+ return getReferencesForSerializedBooleanType(decls, node, value);
96
+ case NodeKind.DateType:
97
+ return getReferencesForSerializedDateType(decls, node, value);
98
+ case NodeKind.FloatType:
99
+ return getReferencesForSerializedFloatType(decls, node, value);
100
+ case NodeKind.IntegerType:
101
+ return getReferencesForSerializedIntegerType(decls, node, value);
102
+ case NodeKind.StringType:
103
+ return getReferencesForSerializedStringType(decls, node, value);
104
+ case NodeKind.TypeArgumentType:
105
+ return getReferencesForSerializedTypeArgumentType(decls, node, value);
106
+ case NodeKind.ReferenceIdentifierType:
107
+ return getReferencesForSerializedReferenceIdentifierType(decls, node, value);
108
+ case NodeKind.IncludeIdentifierType:
109
+ return getReferencesForSerializedIncludeIdentifierType(decls, node, value);
110
+ case NodeKind.NestedEntityMapType:
111
+ return getReferencesForSerializedNestedEntityMapType(decls, node, value);
112
+ case NodeKind.EnumType:
113
+ return getReferencesForSerializedEnumType(decls, node, value);
114
+ case NodeKind.TypeParameter:
115
+ return getReferencesForSerializedTypeParameter(decls, node, value);
116
+ case NodeKind.ChildEntitiesType:
117
+ return getReferencesForSerializedChildEntitiesType(decls, node, value);
118
+ default:
119
+ return assertExhaustive(node);
120
+ }
121
+ };
122
+ export const getDecl = (decls, name) => {
123
+ const decl = decls[name];
124
+ if (!decl) {
125
+ throw new Error(`Declaration not found: ${name}`);
126
+ }
127
+ return decl;
128
+ };
@@ -0,0 +1,9 @@
1
+ import type { GetReferencesSerialized, NodeKind, SerializedTypeArgumentsResolver } from "./Node.ts";
2
+ import type { SerializedBaseType, SerializedType } from "./types/Type.ts";
3
+ export interface SerializedTypeParameter<N extends string = string, T extends SerializedType = SerializedType> extends SerializedBaseType {
4
+ kind: NodeKind["TypeParameter"];
5
+ name: N;
6
+ constraint?: T;
7
+ }
8
+ export declare const resolveTypeArgumentsInSerializedTypeParameter: SerializedTypeArgumentsResolver<SerializedTypeParameter>;
9
+ export declare const getReferencesForSerializedTypeParameter: GetReferencesSerialized<SerializedTypeParameter>;
@@ -0,0 +1,2 @@
1
+ export const resolveTypeArgumentsInSerializedTypeParameter = (_decls, _args, param) => param;
2
+ export const getReferencesForSerializedTypeParameter = () => [];
@@ -0,0 +1,21 @@
1
+ import type { BaseNode } from "../Node.ts";
2
+ import type { SerializedTypeParameter } from "../TypeParameter.ts";
3
+ import type { SerializedEnumCaseDecl } from "../types/EnumType.ts";
4
+ import type { SerializedMemberDecl } from "../types/ObjectType.ts";
5
+ import { type SerializedType } from "../types/Type.ts";
6
+ import type { SerializedEntityDecl } from "./EntityDecl.ts";
7
+ import type { SerializedEnumDecl } from "./EnumDecl.ts";
8
+ import type { SerializedTypeAliasDecl } from "./TypeAliasDecl.ts";
9
+ export type SerializedTypeArguments<Params extends SerializedTypeParameter[]> = {
10
+ [K in keyof Params]: Params[K] extends SerializedTypeParameter<string, infer T> ? T : SerializedType;
11
+ };
12
+ export declare const getSerializedTypeArgumentsRecord: <Params extends SerializedTypeParameter[]>(decl: SerializedDeclP<Params>, args: SerializedTypeArguments<Params>) => Record<string, SerializedType>;
13
+ export type SerializedDecl = SerializedEntityDecl | SerializedEnumDecl | SerializedTypeAliasDecl;
14
+ export type SerializedDeclP<Params extends SerializedTypeParameter[] = SerializedTypeParameter[]> = SerializedEntityDecl | SerializedEnumDecl<string, Record<string, SerializedEnumCaseDecl>, Params> | SerializedTypeAliasDecl<string, SerializedType, Params>;
15
+ export type SerializedSecondaryDecl = SerializedEnumDecl | SerializedTypeAliasDecl | SerializedEntityDecl<string, Record<string, SerializedMemberDecl>, string>;
16
+ export interface SerializedBaseDecl<Name extends string = string, Params extends SerializedTypeParameter[] = SerializedTypeParameter[]> extends BaseNode {
17
+ sourceUrl: string;
18
+ name: Name;
19
+ comment?: string;
20
+ parameters: Params;
21
+ }
@@ -0,0 +1,4 @@
1
+ import {} from "../types/Type.js";
2
+ export const getSerializedTypeArgumentsRecord = (decl, args) => Object.fromEntries(
3
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
4
+ args.slice(0, decl.parameters.length).map((arg, i) => [decl.parameters[i].name, arg]));
@@ -0,0 +1,32 @@
1
+ import type { Leaves } from "../../../shared/utils/object.ts";
2
+ import { NodeKind, type GetReferencesSerialized, type SerializedNode, type SerializedTypeArgumentsResolver } from "../Node.ts";
3
+ import { type SerializedMemberDecl, type SerializedObjectType } from "../types/ObjectType.ts";
4
+ import type { SerializedAsType } from "../types/Type.ts";
5
+ import type { SerializedBaseDecl } from "./Declaration.ts";
6
+ export type SerializedEntityDisplayName<T extends SerializedObjectType> = Leaves<SerializedAsType<T>> | {
7
+ /**
8
+ * @default "translations"
9
+ */
10
+ pathToLocaleMap?: Leaves<SerializedAsType<T>>;
11
+ /**
12
+ * @default "name"
13
+ */
14
+ pathInLocaleMap?: string;
15
+ } | null;
16
+ type TConstraint = Record<string, SerializedMemberDecl>;
17
+ export interface SerializedEntityDecl<Name extends string = string, T extends TConstraint = TConstraint, FK extends (keyof T & string) | undefined = (keyof T & string) | undefined> extends SerializedBaseDecl<Name, []> {
18
+ kind: NodeKind["EntityDecl"];
19
+ namePlural: string;
20
+ type: SerializedObjectType<T>;
21
+ parentReferenceKey: FK;
22
+ /**
23
+ * @default "name"
24
+ */
25
+ displayName?: SerializedEntityDisplayName<SerializedObjectType<T>>;
26
+ displayNameCustomizer: boolean;
27
+ isDeprecated?: boolean;
28
+ }
29
+ export declare const isSerializedEntityDecl: (node: SerializedNode) => node is SerializedEntityDecl;
30
+ export declare const resolveTypeArgumentsInSerializedEntityDecl: SerializedTypeArgumentsResolver<SerializedEntityDecl>;
31
+ export declare const getReferencesForSerializedEntityDecl: GetReferencesSerialized<SerializedEntityDecl>;
32
+ export {};
@@ -0,0 +1,8 @@
1
+ import { NodeKind, resolveSerializedTypeArguments, } from "../Node.js";
2
+ import { getReferencesForSerializedObjectType, } from "../types/ObjectType.js";
3
+ export const isSerializedEntityDecl = (node) => node.kind === NodeKind.EntityDecl;
4
+ export const resolveTypeArgumentsInSerializedEntityDecl = (decls, _args, decl) => ({
5
+ ...decl,
6
+ type: resolveSerializedTypeArguments(decls, {}, decl.type),
7
+ });
8
+ export const getReferencesForSerializedEntityDecl = (decls, decl, value) => getReferencesForSerializedObjectType(decls, decl.type, value);
@@ -0,0 +1,11 @@
1
+ import type { GetReferencesSerialized, NodeKind, SerializedTypeArgumentsResolver } from "../Node.ts";
2
+ import type { SerializedTypeParameter } from "../TypeParameter.ts";
3
+ import { type SerializedEnumCaseDecl, type SerializedEnumType } from "../types/EnumType.ts";
4
+ import type { SerializedBaseDecl } from "./Declaration.ts";
5
+ export interface SerializedEnumDecl<Name extends string = string, T extends Record<string, SerializedEnumCaseDecl> = Record<string, SerializedEnumCaseDecl>, Params extends SerializedTypeParameter[] = SerializedTypeParameter[]> extends SerializedBaseDecl<Name, Params> {
6
+ kind: NodeKind["EnumDecl"];
7
+ type: SerializedEnumType<T>;
8
+ isDeprecated?: boolean;
9
+ }
10
+ export declare const resolveTypeArgumentsInSerializedEnumDecl: SerializedTypeArgumentsResolver<SerializedEnumDecl>;
11
+ export declare const getReferencesForSerializedEnumDecl: GetReferencesSerialized<SerializedEnumDecl>;
@@ -0,0 +1,9 @@
1
+ import { getReferencesForSerializedEnumType, resolveTypeArgumentsInSerializedEnumType, } from "../types/EnumType.js";
2
+ export const resolveTypeArgumentsInSerializedEnumDecl = (decls, args, decl) => {
3
+ return {
4
+ ...decl,
5
+ parameters: [],
6
+ type: resolveTypeArgumentsInSerializedEnumType(decls, args, decl.type),
7
+ };
8
+ };
9
+ export const getReferencesForSerializedEnumDecl = (decls, decl, value) => getReferencesForSerializedEnumType(decls, decl.type, value);
@@ -0,0 +1,11 @@
1
+ import { type GetReferencesSerialized, type NodeKind, type SerializedTypeArgumentsResolver } from "../Node.ts";
2
+ import type { SerializedTypeParameter } from "../TypeParameter.ts";
3
+ import type { SerializedType } from "../types/Type.ts";
4
+ import type { SerializedBaseDecl } from "./Declaration.ts";
5
+ export interface SerializedTypeAliasDecl<Name extends string = string, T extends SerializedType = SerializedType, Params extends SerializedTypeParameter[] = SerializedTypeParameter[]> extends SerializedBaseDecl<Name, Params> {
6
+ kind: NodeKind["TypeAliasDecl"];
7
+ type: T;
8
+ isDeprecated?: boolean;
9
+ }
10
+ export declare const resolveTypeArgumentsInSerializedTypeAliasDecl: SerializedTypeArgumentsResolver<SerializedTypeAliasDecl>;
11
+ export declare const getReferencesForSerializedTypeAliasDecl: GetReferencesSerialized<SerializedTypeAliasDecl>;
@@ -0,0 +1,7 @@
1
+ import { getReferencesSerialized, resolveSerializedTypeArguments, } from "../Node.js";
2
+ export const resolveTypeArgumentsInSerializedTypeAliasDecl = (decls, args, decl) => ({
3
+ ...decl,
4
+ parameters: [],
5
+ type: resolveSerializedTypeArguments(decls, args, decl.type),
6
+ });
7
+ export const getReferencesForSerializedTypeAliasDecl = (decls, decl, value) => getReferencesSerialized(decls, decl.type, value);
@@ -0,0 +1,11 @@
1
+ import { type GetReferencesSerialized, type NodeKind, type SerializedTypeArgumentsResolver } from "../Node.ts";
2
+ import type { SerializedBaseType, SerializedType } from "./Type.ts";
3
+ export interface SerializedArrayType<T extends SerializedType = SerializedType> extends SerializedBaseType {
4
+ kind: NodeKind["ArrayType"];
5
+ minItems?: number;
6
+ maxItems?: number;
7
+ uniqueItems?: boolean;
8
+ items: T;
9
+ }
10
+ export declare const resolveTypeArgumentsInSerializedArrayType: SerializedTypeArgumentsResolver<SerializedArrayType>;
11
+ export declare const getReferencesForSerializedArrayType: GetReferencesSerialized<SerializedArrayType>;
@@ -0,0 +1,8 @@
1
+ import { getReferencesSerialized, resolveSerializedTypeArguments, } from "../Node.js";
2
+ export const resolveTypeArgumentsInSerializedArrayType = (decls, args, type) => ({
3
+ ...type,
4
+ items: resolveSerializedTypeArguments(decls, args, type.items),
5
+ });
6
+ export const getReferencesForSerializedArrayType = (decls, type, value) => Array.isArray(value)
7
+ ? value.flatMap(item => getReferencesSerialized(decls, type.items, item))
8
+ : [];
@@ -0,0 +1,7 @@
1
+ import type { GetReferencesSerialized, NodeKind, SerializedTypeArgumentsResolver } from "../Node.ts";
2
+ import type { SerializedBaseType } from "./Type.ts";
3
+ export interface SerializedBooleanType extends SerializedBaseType {
4
+ kind: NodeKind["BooleanType"];
5
+ }
6
+ export declare const resolveTypeArgumentsInSerializedBooleanType: SerializedTypeArgumentsResolver<SerializedBooleanType>;
7
+ export declare const getReferencesForSerializedBooleanType: GetReferencesSerialized<SerializedBooleanType>;
@@ -0,0 +1,2 @@
1
+ export const resolveTypeArgumentsInSerializedBooleanType = (_decls, _args, type) => type;
2
+ export const getReferencesForSerializedBooleanType = () => [];
@@ -0,0 +1,8 @@
1
+ import type { GetReferencesSerialized, NodeKind, SerializedTypeArgumentsResolver } from "../Node.ts";
2
+ import type { SerializedBaseType } from "./Type.ts";
3
+ export interface SerializedChildEntitiesType extends SerializedBaseType {
4
+ kind: NodeKind["ChildEntitiesType"];
5
+ entity: string;
6
+ }
7
+ export declare const resolveTypeArgumentsInSerializedChildEntitiesType: SerializedTypeArgumentsResolver<SerializedChildEntitiesType>;
8
+ export declare const getReferencesForSerializedChildEntitiesType: GetReferencesSerialized<SerializedChildEntitiesType>;
@@ -0,0 +1,2 @@
1
+ export const resolveTypeArgumentsInSerializedChildEntitiesType = (_decls, _args, type) => type;
2
+ export const getReferencesForSerializedChildEntitiesType = () => [];
@@ -0,0 +1,8 @@
1
+ import type { DateConstraints } from "../../validation/date.ts";
2
+ import type { GetReferencesSerialized, NodeKind, SerializedTypeArgumentsResolver } from "../Node.ts";
3
+ import type { SerializedBaseType } from "./Type.ts";
4
+ export interface SerializedDateType extends SerializedBaseType, DateConstraints {
5
+ kind: NodeKind["DateType"];
6
+ }
7
+ export declare const resolveTypeArgumentsInSerializedDateType: SerializedTypeArgumentsResolver<SerializedDateType>;
8
+ export declare const getReferencesForSerializedDateType: GetReferencesSerialized<SerializedDateType>;
@@ -0,0 +1,2 @@
1
+ export const resolveTypeArgumentsInSerializedDateType = (_decls, _args, type) => type;
2
+ export const getReferencesForSerializedDateType = () => [];
@@ -0,0 +1,14 @@
1
+ import { type GetReferencesSerialized, type NodeKind, type SerializedTypeArgumentsResolver } from "../Node.ts";
2
+ import type { SerializedBaseType, SerializedType } from "./Type.ts";
3
+ export interface SerializedEnumType<T extends Record<string, SerializedEnumCaseDecl> = Record<string, SerializedEnumCaseDecl>> extends SerializedBaseType {
4
+ kind: NodeKind["EnumType"];
5
+ values: T;
6
+ }
7
+ export interface SerializedEnumCaseDecl<T extends SerializedType | null = SerializedType | null> {
8
+ kind: NodeKind["EnumCaseDecl"];
9
+ type: T;
10
+ comment?: string;
11
+ isDeprecated?: boolean;
12
+ }
13
+ export declare const resolveTypeArgumentsInSerializedEnumType: SerializedTypeArgumentsResolver<SerializedEnumType>;
14
+ export declare const getReferencesForSerializedEnumType: GetReferencesSerialized<SerializedEnumType>;
@@ -0,0 +1,28 @@
1
+ import { discriminatorKey } from "../../enum.js";
2
+ import { getReferencesSerialized, resolveSerializedTypeArguments, } from "../Node.js";
3
+ export const resolveTypeArgumentsInSerializedEnumType = (decls, args, type) => ({
4
+ ...type,
5
+ values: Object.fromEntries(Object.entries(type.values).map(([key, { type, ...caseMember }]) => [
6
+ key,
7
+ {
8
+ ...caseMember,
9
+ type: type === null ? null : resolveSerializedTypeArguments(decls, args, type),
10
+ },
11
+ ])),
12
+ });
13
+ export const getReferencesForSerializedEnumType = (decls, type, value) => {
14
+ if (typeof value !== "object" ||
15
+ value === null ||
16
+ Array.isArray(value) ||
17
+ !(discriminatorKey in value)) {
18
+ return [];
19
+ }
20
+ const enumCase = value[discriminatorKey];
21
+ return typeof enumCase === "string" &&
22
+ enumCase in type.values &&
23
+ type.values[enumCase] !== undefined &&
24
+ type.values[enumCase].type !== null &&
25
+ enumCase in value
26
+ ? getReferencesSerialized(decls, type.values[enumCase].type, value[enumCase])
27
+ : [];
28
+ };
@@ -0,0 +1,11 @@
1
+ import type { RangeBound } from "../../validation/number.ts";
2
+ import type { GetReferencesSerialized, NodeKind, SerializedTypeArgumentsResolver } from "../Node.ts";
3
+ import type { SerializedBaseType } from "./Type.ts";
4
+ export interface SerializedFloatType extends SerializedBaseType {
5
+ kind: NodeKind["FloatType"];
6
+ minimum?: RangeBound;
7
+ maximum?: RangeBound;
8
+ multipleOf?: number;
9
+ }
10
+ export declare const resolveTypeArgumentsInSerializedFloatType: SerializedTypeArgumentsResolver<SerializedFloatType>;
11
+ export declare const getReferencesForSerializedFloatType: GetReferencesSerialized<SerializedFloatType>;
@@ -0,0 +1,2 @@
1
+ export const resolveTypeArgumentsInSerializedFloatType = (_decls, _args, type) => type;
2
+ export const getReferencesForSerializedFloatType = () => [];
@@ -0,0 +1,11 @@
1
+ import { type SerializedDecl, type SerializedTypeArguments } from "../declarations/Declaration.ts";
2
+ import { type GetReferencesSerialized, type NodeKind } from "../Node.ts";
3
+ import type { SerializedTypeParameter } from "../TypeParameter.ts";
4
+ import type { SerializedBaseType, SerializedType } from "./Type.ts";
5
+ export interface SerializedIncludeIdentifierType<Params extends SerializedTypeParameter[] = SerializedTypeParameter[]> extends SerializedBaseType {
6
+ kind: NodeKind["IncludeIdentifierType"];
7
+ reference: string;
8
+ args: SerializedTypeArguments<Params>;
9
+ }
10
+ export declare const resolveTypeArgumentsInSerializedIncludeIdentifierType: <T extends SerializedIncludeIdentifierType>(decls: Record<string, SerializedDecl>, args: Record<string, SerializedType>, type: T) => T extends SerializedIncludeIdentifierType<[]> ? T : SerializedType;
11
+ export declare const getReferencesForSerializedIncludeIdentifierType: GetReferencesSerialized<SerializedIncludeIdentifierType>;
@@ -0,0 +1,13 @@
1
+ import { getSerializedTypeArgumentsRecord, } from "../declarations/Declaration.js";
2
+ import { getDecl, getReferencesSerialized, resolveSerializedTypeArguments, } from "../Node.js";
3
+ const isNoGenericSerializedIncludeIdentifierType = (node) => node.args.length === 0;
4
+ export const resolveTypeArgumentsInSerializedIncludeIdentifierType = ((decls, args, type) => {
5
+ const reference = getDecl(decls, type.reference);
6
+ return (isNoGenericSerializedIncludeIdentifierType(type)
7
+ ? type
8
+ : resolveSerializedTypeArguments(decls, getSerializedTypeArgumentsRecord(reference, type.args.map(arg => resolveSerializedTypeArguments(decls, args, arg))), reference).type);
9
+ });
10
+ export const getReferencesForSerializedIncludeIdentifierType = (decls, type, value) => {
11
+ const reference = getDecl(decls, type.reference);
12
+ return getReferencesSerialized(decls, resolveSerializedTypeArguments(decls, getSerializedTypeArgumentsRecord(reference, type.args), reference), value);
13
+ };
@@ -0,0 +1,11 @@
1
+ import type { RangeBound } from "../../validation/number.ts";
2
+ import type { GetReferencesSerialized, NodeKind, SerializedTypeArgumentsResolver } from "../Node.ts";
3
+ import type { SerializedBaseType } from "./Type.ts";
4
+ export interface SerializedIntegerType extends SerializedBaseType {
5
+ kind: NodeKind["IntegerType"];
6
+ minimum?: RangeBound;
7
+ maximum?: RangeBound;
8
+ multipleOf?: number;
9
+ }
10
+ export declare const resolveTypeArgumentsInSerializedIntegerType: SerializedTypeArgumentsResolver<SerializedIntegerType>;
11
+ export declare const getReferencesForSerializedIntegerType: GetReferencesSerialized<SerializedIntegerType>;
@@ -0,0 +1,2 @@
1
+ export const resolveTypeArgumentsInSerializedIntegerType = (_decls, _args, type) => type;
2
+ export const getReferencesForSerializedIntegerType = () => [];
@@ -0,0 +1,17 @@
1
+ import type { NodeKind } from "../Node.ts";
2
+ import { type GetReferencesSerialized, type SerializedTypeArgumentsResolver } from "../Node.ts";
3
+ import { type SerializedIncludeIdentifierType } from "./IncludeIdentifierType.ts";
4
+ import { type SerializedMemberDecl, type SerializedObjectType } from "./ObjectType.ts";
5
+ import type { SerializedBaseType } from "./Type.ts";
6
+ type TSerializedConstraint = Record<string, SerializedMemberDecl>;
7
+ type PossibleType<T extends TSerializedConstraint> = SerializedObjectType<T> | SerializedIncludeIdentifierType<[]>;
8
+ export interface SerializedNestedEntityMapType<Name extends string = string, T extends TSerializedConstraint = TSerializedConstraint> extends SerializedBaseType {
9
+ kind: NodeKind["NestedEntityMapType"];
10
+ name: Name;
11
+ comment?: string;
12
+ secondaryEntity: string;
13
+ type: PossibleType<T>;
14
+ }
15
+ export declare const resolveTypeArgumentsInSerializedNestedEntityMapType: SerializedTypeArgumentsResolver<SerializedNestedEntityMapType>;
16
+ export declare const getReferencesForSerializedNestedEntityMapType: GetReferencesSerialized<SerializedNestedEntityMapType>;
17
+ export {};
@@ -0,0 +1,14 @@
1
+ import { resolveSerializedTypeArguments, } from "../Node.js";
2
+ import { getReferencesForSerializedIncludeIdentifierType, } from "./IncludeIdentifierType.js";
3
+ import { getReferencesForSerializedObjectType, isSerializedObjectType, } from "./ObjectType.js";
4
+ export const resolveTypeArgumentsInSerializedNestedEntityMapType = (decls, args, type) => ({
5
+ ...type,
6
+ type: resolveSerializedTypeArguments(decls, args, type.type),
7
+ });
8
+ export const getReferencesForSerializedNestedEntityMapType = (decls, type, value) => typeof value === "object" && value !== null && !Array.isArray(value)
9
+ ? Object.values(value)
10
+ .flatMap(item => isSerializedObjectType(type.type)
11
+ ? getReferencesForSerializedObjectType(decls, type.type, item)
12
+ : getReferencesForSerializedIncludeIdentifierType(decls, type.type, item))
13
+ .concat(Object.keys(value))
14
+ : [];
@@ -0,0 +1,19 @@
1
+ import type { ObjectConstraints } from "../../validation/object.ts";
2
+ import { NodeKind, type GetReferencesSerialized, type SerializedNode, type SerializedTypeArgumentsResolver } from "../Node.ts";
3
+ import type { SerializedBaseType, SerializedType } from "./Type.ts";
4
+ type TSerializedConstraint = Record<string, SerializedMemberDecl>;
5
+ export interface SerializedObjectType<T extends TSerializedConstraint = TSerializedConstraint> extends SerializedBaseType, ObjectConstraints {
6
+ kind: NodeKind["ObjectType"];
7
+ properties: T;
8
+ }
9
+ export interface SerializedMemberDecl<T extends SerializedType = SerializedType, R extends boolean = boolean> {
10
+ kind: NodeKind["MemberDecl"];
11
+ isRequired: R;
12
+ type: T;
13
+ comment?: string;
14
+ isDeprecated?: boolean;
15
+ }
16
+ export declare const isSerializedObjectType: (type: SerializedNode) => type is SerializedObjectType;
17
+ export declare const resolveTypeArgumentsInSerializedObjectType: SerializedTypeArgumentsResolver<SerializedObjectType>;
18
+ export declare const getReferencesForSerializedObjectType: GetReferencesSerialized<SerializedObjectType>;
19
+ export {};
@@ -0,0 +1,14 @@
1
+ import { getReferencesSerialized, NodeKind, resolveSerializedTypeArguments, } from "../Node.js";
2
+ export const isSerializedObjectType = (type) => type.kind === NodeKind.ObjectType;
3
+ export const resolveTypeArgumentsInSerializedObjectType = (decls, args, type) => ({
4
+ ...type,
5
+ properties: Object.fromEntries(Object.entries(type.properties).map(([key, config]) => [
6
+ key,
7
+ { ...config, type: resolveSerializedTypeArguments(decls, args, config.type) },
8
+ ])),
9
+ });
10
+ export const getReferencesForSerializedObjectType = (decls, type, value) => typeof value === "object" && value !== null
11
+ ? Object.entries(value).flatMap(([key, propValue]) => type.properties[key]
12
+ ? getReferencesSerialized(decls, type.properties[key].type, propValue)
13
+ : [])
14
+ : [];
@@ -0,0 +1,8 @@
1
+ import type { GetReferencesSerialized, NodeKind, SerializedTypeArgumentsResolver } from "../Node.ts";
2
+ import type { SerializedBaseType } from "./Type.ts";
3
+ export interface SerializedReferenceIdentifierType extends SerializedBaseType {
4
+ kind: NodeKind["ReferenceIdentifierType"];
5
+ entity: string;
6
+ }
7
+ export declare const resolveTypeArgumentsInSerializedReferenceIdentifierType: SerializedTypeArgumentsResolver<SerializedReferenceIdentifierType>;
8
+ export declare const getReferencesForSerializedReferenceIdentifierType: GetReferencesSerialized<SerializedReferenceIdentifierType>;
@@ -0,0 +1,2 @@
1
+ export const resolveTypeArgumentsInSerializedReferenceIdentifierType = (_decls, _args, type) => type;
2
+ export const getReferencesForSerializedReferenceIdentifierType = (_decls, _type, value) => (typeof value === "string" ? [value] : []);
@@ -0,0 +1,10 @@
1
+ import type { StringConstraints } from "../../validation/string.ts";
2
+ import type { GetReferencesSerialized, NodeKind, SerializedTypeArgumentsResolver } from "../Node.ts";
3
+ import type { SerializedBaseType } from "./Type.ts";
4
+ export interface SerializedStringType extends SerializedBaseType, StringConstraints {
5
+ kind: NodeKind["StringType"];
6
+ pattern?: string;
7
+ isMarkdown?: boolean;
8
+ }
9
+ export declare const resolveTypeArgumentsInSerializedStringType: SerializedTypeArgumentsResolver<SerializedStringType>;
10
+ export declare const getReferencesForSerializedStringType: GetReferencesSerialized<SerializedStringType>;
@@ -0,0 +1,2 @@
1
+ export const resolveTypeArgumentsInSerializedStringType = (_decls, _args, type) => type;
2
+ export const getReferencesForSerializedStringType = () => [];
@@ -0,0 +1,20 @@
1
+ import type { BaseNode } from "../Node.ts";
2
+ import type { SerializedArrayType } from "./ArrayType.ts";
3
+ import type { SerializedBooleanType } from "./BooleanType.ts";
4
+ import type { SerializedChildEntitiesType } from "./ChildEntitiesType.ts";
5
+ import type { SerializedDateType } from "./DateType.ts";
6
+ import type { SerializedEnumType } from "./EnumType.ts";
7
+ import type { SerializedFloatType } from "./FloatType.ts";
8
+ import type { SerializedIncludeIdentifierType } from "./IncludeIdentifierType.ts";
9
+ import type { SerializedIntegerType } from "./IntegerType.ts";
10
+ import type { SerializedNestedEntityMapType } from "./NestedEntityMapType.ts";
11
+ import type { SerializedMemberDecl, SerializedObjectType } from "./ObjectType.ts";
12
+ import type { SerializedReferenceIdentifierType } from "./ReferenceIdentifierType.ts";
13
+ import type { SerializedStringType } from "./StringType.ts";
14
+ import type { SerializedTypeArgumentType } from "./TypeArgumentType.ts";
15
+ export interface SerializedBaseType extends BaseNode {
16
+ }
17
+ export type SerializedType = SerializedBooleanType | SerializedDateType | SerializedFloatType | SerializedIntegerType | SerializedStringType | SerializedArrayType | SerializedObjectType | SerializedTypeArgumentType | SerializedReferenceIdentifierType | SerializedIncludeIdentifierType | SerializedNestedEntityMapType | SerializedEnumType | SerializedChildEntitiesType;
18
+ export type SerializedAsType<T extends SerializedType> = T extends SerializedArrayType<infer I> ? SerializedAsType<I>[] : T extends SerializedObjectType<infer P> ? {
19
+ [K in keyof P]: P[K] extends SerializedMemberDecl<SerializedType, true> ? SerializedAsType<P[K]["type"]> : SerializedAsType<P[K]["type"]> | undefined;
20
+ } : T extends SerializedBooleanType ? boolean : T extends SerializedDateType ? Date : T extends SerializedFloatType ? number : T extends SerializedIntegerType ? number : T extends SerializedStringType ? string : T extends SerializedTypeArgumentType ? unknown : T extends SerializedIncludeIdentifierType ? unknown : T extends SerializedNestedEntityMapType ? unknown : T extends SerializedReferenceIdentifierType ? unknown : T extends SerializedChildEntitiesType ? unknown : never;
@@ -0,0 +1,12 @@
1
+ import type { SerializedDecl } from "../declarations/Declaration.ts";
2
+ import type { GetReferencesSerialized, NodeKind } from "../Node.ts";
3
+ import type { SerializedTypeParameter } from "../TypeParameter.ts";
4
+ import type { SerializedBaseType, SerializedType } from "./Type.ts";
5
+ type TSerializedConstraint = SerializedTypeParameter;
6
+ export interface SerializedTypeArgumentType<T extends TSerializedConstraint = TSerializedConstraint> extends SerializedBaseType {
7
+ kind: NodeKind["TypeArgumentType"];
8
+ argument: T;
9
+ }
10
+ export declare const resolveTypeArgumentsInSerializedTypeArgumentType: <T extends TSerializedConstraint, Args extends Record<string, SerializedType>>(_decls: Record<string, SerializedDecl>, args: Args, type: SerializedTypeArgumentType<T>) => Args[T["name"]];
11
+ export declare const getReferencesForSerializedTypeArgumentType: GetReferencesSerialized<SerializedTypeArgumentType>;
12
+ export {};
@@ -0,0 +1,7 @@
1
+ export const resolveTypeArgumentsInSerializedTypeArgumentType = ((_decls, args, type) => {
2
+ if (!(type.argument.name in args)) {
3
+ throw new TypeError(`no generic argument provided for "${type.argument.name}"`);
4
+ }
5
+ return args[type.argument.name];
6
+ });
7
+ export const getReferencesForSerializedTypeArgumentType = () => [];
@@ -18,3 +18,7 @@ export interface ArrayDiffResult<T> {
18
18
  removed: T[];
19
19
  }
20
20
  export declare const unique: <T>(arr: T[], equalityCheck?: (a: T, b: T) => boolean) => T[];
21
+ /**
22
+ * Moves an element from one position to another within the array.
23
+ */
24
+ export declare const reorder: <T>(arr: T[], sourceIndex: number, targetIndex: number) => T[];