@rakun-kit/core 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/api/routes/manager/media/finalizeUpload.js +42 -0
  3. package/dist/cjs/api/routes/manager/media/finalizeUpload.js.map +1 -1
  4. package/dist/cjs/api/routes/manager/media/prepareUpload.js +26 -1
  5. package/dist/cjs/api/routes/manager/media/prepareUpload.js.map +1 -1
  6. package/dist/cjs/api/routes/manager/media/uploadBinary.js +40 -0
  7. package/dist/cjs/api/routes/manager/media/uploadBinary.js.map +1 -1
  8. package/dist/cjs/bootstrapState.js.map +1 -1
  9. package/dist/cjs/client.js +3 -2
  10. package/dist/cjs/client.js.map +1 -1
  11. package/dist/cjs/index.js +0 -14
  12. package/dist/cjs/index.js.map +1 -1
  13. package/dist/cjs/lib/ContentType.js +106 -74
  14. package/dist/cjs/lib/ContentType.js.map +1 -1
  15. package/dist/cjs/lib/Logger.js +56 -0
  16. package/dist/cjs/lib/Logger.js.map +1 -1
  17. package/dist/cjs/lib/Registry.js +35 -22
  18. package/dist/cjs/lib/Registry.js.map +1 -1
  19. package/dist/cjs/lib/fields/Boolean.js +14 -9
  20. package/dist/cjs/lib/fields/Boolean.js.map +1 -1
  21. package/dist/cjs/lib/fields/ContentReference.js +29 -17
  22. package/dist/cjs/lib/fields/ContentReference.js.map +1 -1
  23. package/dist/cjs/lib/fields/Date.js +26 -22
  24. package/dist/cjs/lib/fields/Date.js.map +1 -1
  25. package/dist/cjs/lib/fields/Field.js +79 -59
  26. package/dist/cjs/lib/fields/Field.js.map +1 -1
  27. package/dist/cjs/lib/fields/Fields.js +32 -0
  28. package/dist/cjs/lib/fields/Fields.js.map +1 -0
  29. package/dist/cjs/lib/fields/File.js +60 -85
  30. package/dist/cjs/lib/fields/File.js.map +1 -1
  31. package/dist/cjs/lib/fields/Iterator.js +8 -10
  32. package/dist/cjs/lib/fields/Iterator.js.map +1 -1
  33. package/dist/cjs/lib/fields/Link.js +20 -15
  34. package/dist/cjs/lib/fields/Link.js.map +1 -1
  35. package/dist/cjs/lib/fields/List.js +47 -16
  36. package/dist/cjs/lib/fields/List.js.map +1 -1
  37. package/dist/cjs/lib/fields/Number.js +35 -17
  38. package/dist/cjs/lib/fields/Number.js.map +1 -1
  39. package/dist/cjs/lib/fields/Relation.js +73 -66
  40. package/dist/cjs/lib/fields/Relation.js.map +1 -1
  41. package/dist/cjs/lib/fields/Select.js +28 -17
  42. package/dist/cjs/lib/fields/Select.js.map +1 -1
  43. package/dist/cjs/lib/fields/SelfRelation.js +30 -21
  44. package/dist/cjs/lib/fields/SelfRelation.js.map +1 -1
  45. package/dist/cjs/lib/fields/SimpleList.js +38 -21
  46. package/dist/cjs/lib/fields/SimpleList.js.map +1 -1
  47. package/dist/cjs/lib/fields/String.js +54 -40
  48. package/dist/cjs/lib/fields/String.js.map +1 -1
  49. package/dist/cjs/lib/fields/index.js +29 -37
  50. package/dist/cjs/lib/fields/index.js.map +1 -1
  51. package/dist/cjs/orm/operations/findDependencies.js +4 -2
  52. package/dist/cjs/orm/operations/findDependencies.js.map +1 -1
  53. package/dist/esm/api/operations/index.d.ts +15 -16
  54. package/dist/esm/api/operations/index.d.ts.map +1 -1
  55. package/dist/esm/api/operations/manager-contract.d.ts +7 -6
  56. package/dist/esm/api/operations/manager-contract.d.ts.map +1 -1
  57. package/dist/esm/api/operations/manager.d.ts +7 -6
  58. package/dist/esm/api/operations/manager.d.ts.map +1 -1
  59. package/dist/esm/api/operations/web-contract.d.ts +8 -10
  60. package/dist/esm/api/operations/web-contract.d.ts.map +1 -1
  61. package/dist/esm/api/operations/web.d.ts +8 -10
  62. package/dist/esm/api/operations/web.d.ts.map +1 -1
  63. package/dist/esm/api/proxies/index.d.ts +7 -3
  64. package/dist/esm/api/proxies/index.d.ts.map +1 -1
  65. package/dist/esm/api/routes/manager/media/finalizeUpload.d.ts.map +1 -1
  66. package/dist/esm/api/routes/manager/media/finalizeUpload.js +42 -0
  67. package/dist/esm/api/routes/manager/media/finalizeUpload.js.map +1 -1
  68. package/dist/esm/api/routes/manager/media/prepareUpload.d.ts.map +1 -1
  69. package/dist/esm/api/routes/manager/media/prepareUpload.js +26 -1
  70. package/dist/esm/api/routes/manager/media/prepareUpload.js.map +1 -1
  71. package/dist/esm/api/routes/manager/media/uploadBinary.d.ts.map +1 -1
  72. package/dist/esm/api/routes/manager/media/uploadBinary.js +40 -0
  73. package/dist/esm/api/routes/manager/media/uploadBinary.js.map +1 -1
  74. package/dist/esm/api/utils/getLanguages.d.ts +2 -6
  75. package/dist/esm/api/utils/getLanguages.d.ts.map +1 -1
  76. package/dist/esm/api/utils/getUser.d.ts +6 -2
  77. package/dist/esm/api/utils/getUser.d.ts.map +1 -1
  78. package/dist/esm/bootstrapState.d.ts +3 -2
  79. package/dist/esm/bootstrapState.d.ts.map +1 -1
  80. package/dist/esm/bootstrapState.js.map +1 -1
  81. package/dist/esm/client.d.ts +1 -1
  82. package/dist/esm/client.d.ts.map +1 -1
  83. package/dist/esm/client.js +1 -1
  84. package/dist/esm/client.js.map +1 -1
  85. package/dist/esm/index.d.ts +0 -14
  86. package/dist/esm/index.d.ts.map +1 -1
  87. package/dist/esm/index.js +0 -14
  88. package/dist/esm/index.js.map +1 -1
  89. package/dist/esm/internal-content-types/HelloWorld.d.ts +53 -1
  90. package/dist/esm/internal-content-types/HelloWorld.d.ts.map +1 -1
  91. package/dist/esm/internal-content-types/Language.d.ts +68 -4
  92. package/dist/esm/internal-content-types/Language.d.ts.map +1 -1
  93. package/dist/esm/internal-content-types/LiteralTranslation.d.ts +107 -3
  94. package/dist/esm/internal-content-types/LiteralTranslation.d.ts.map +1 -1
  95. package/dist/esm/internal-content-types/ManagerRole.d.ts +54 -2
  96. package/dist/esm/internal-content-types/ManagerRole.d.ts.map +1 -1
  97. package/dist/esm/internal-content-types/ManagerUser.d.ts +348 -19
  98. package/dist/esm/internal-content-types/ManagerUser.d.ts.map +1 -1
  99. package/dist/esm/internal-content-types/Media.d.ts +469 -52
  100. package/dist/esm/internal-content-types/Media.d.ts.map +1 -1
  101. package/dist/esm/internal-content-types/MediaFolder.d.ts +161 -5
  102. package/dist/esm/internal-content-types/MediaFolder.d.ts.map +1 -1
  103. package/dist/esm/internal-content-types/MfaChallenge.d.ts +961 -53
  104. package/dist/esm/internal-content-types/MfaChallenge.d.ts.map +1 -1
  105. package/dist/esm/internal-content-types/Page.d.ts +242 -26
  106. package/dist/esm/internal-content-types/Page.d.ts.map +1 -1
  107. package/dist/esm/internal-content-types/Redirect.d.ts +270 -12
  108. package/dist/esm/internal-content-types/Redirect.d.ts.map +1 -1
  109. package/dist/esm/internal-content-types/Route.d.ts +280 -9
  110. package/dist/esm/internal-content-types/Route.d.ts.map +1 -1
  111. package/dist/esm/internal-content-types/RouteLayoutModule.d.ts +306 -7
  112. package/dist/esm/internal-content-types/RouteLayoutModule.d.ts.map +1 -1
  113. package/dist/esm/internal-content-types/RouteLayoutModuleOverride.d.ts +266 -6
  114. package/dist/esm/internal-content-types/RouteLayoutModuleOverride.d.ts.map +1 -1
  115. package/dist/esm/internal-content-types/RouteMap.d.ts +265 -5
  116. package/dist/esm/internal-content-types/RouteMap.d.ts.map +1 -1
  117. package/dist/esm/internal-content-types/RouteSettings.d.ts +296 -76
  118. package/dist/esm/internal-content-types/RouteSettings.d.ts.map +1 -1
  119. package/dist/esm/internal-content-types/Seo.d.ts +54 -2
  120. package/dist/esm/internal-content-types/Seo.d.ts.map +1 -1
  121. package/dist/esm/internal-content-types/Session.d.ts +892 -49
  122. package/dist/esm/internal-content-types/Session.d.ts.map +1 -1
  123. package/dist/esm/internal-content-types/UserMfa.d.ts +829 -52
  124. package/dist/esm/internal-content-types/UserMfa.d.ts.map +1 -1
  125. package/dist/esm/internal-content-types/WebAuthnCredential.d.ts +1064 -52
  126. package/dist/esm/internal-content-types/WebAuthnCredential.d.ts.map +1 -1
  127. package/dist/esm/internal-content-types/WebAuthnRegChallenge.d.ts +946 -51
  128. package/dist/esm/internal-content-types/WebAuthnRegChallenge.d.ts.map +1 -1
  129. package/dist/esm/lib/ContentType.d.ts +87 -49
  130. package/dist/esm/lib/ContentType.d.ts.map +1 -1
  131. package/dist/esm/lib/ContentType.js +93 -64
  132. package/dist/esm/lib/ContentType.js.map +1 -1
  133. package/dist/esm/lib/Logger.d.ts.map +1 -1
  134. package/dist/esm/lib/Logger.js +56 -0
  135. package/dist/esm/lib/Logger.js.map +1 -1
  136. package/dist/esm/lib/Registry.d.ts +28 -6
  137. package/dist/esm/lib/Registry.d.ts.map +1 -1
  138. package/dist/esm/lib/Registry.js +35 -22
  139. package/dist/esm/lib/Registry.js.map +1 -1
  140. package/dist/esm/lib/fields/Boolean.d.ts +8 -10
  141. package/dist/esm/lib/fields/Boolean.d.ts.map +1 -1
  142. package/dist/esm/lib/fields/Boolean.js +14 -8
  143. package/dist/esm/lib/fields/Boolean.js.map +1 -1
  144. package/dist/esm/lib/fields/ContentReference.d.ts +14 -14
  145. package/dist/esm/lib/fields/ContentReference.d.ts.map +1 -1
  146. package/dist/esm/lib/fields/ContentReference.js +29 -16
  147. package/dist/esm/lib/fields/ContentReference.js.map +1 -1
  148. package/dist/esm/lib/fields/Date.d.ts +14 -17
  149. package/dist/esm/lib/fields/Date.d.ts.map +1 -1
  150. package/dist/esm/lib/fields/Date.js +25 -21
  151. package/dist/esm/lib/fields/Date.js.map +1 -1
  152. package/dist/esm/lib/fields/Field.d.ts +122 -59
  153. package/dist/esm/lib/fields/Field.d.ts.map +1 -1
  154. package/dist/esm/lib/fields/Field.js +70 -55
  155. package/dist/esm/lib/fields/Field.js.map +1 -1
  156. package/dist/esm/lib/fields/Fields.d.ts +29 -0
  157. package/dist/esm/lib/fields/Fields.d.ts.map +1 -0
  158. package/dist/esm/lib/fields/Fields.js +29 -0
  159. package/dist/esm/lib/fields/Fields.js.map +1 -0
  160. package/dist/esm/lib/fields/File.d.ts +26 -51
  161. package/dist/esm/lib/fields/File.d.ts.map +1 -1
  162. package/dist/esm/lib/fields/File.js +59 -84
  163. package/dist/esm/lib/fields/File.js.map +1 -1
  164. package/dist/esm/lib/fields/Iterator.d.ts +13 -25
  165. package/dist/esm/lib/fields/Iterator.d.ts.map +1 -1
  166. package/dist/esm/lib/fields/Iterator.js +9 -10
  167. package/dist/esm/lib/fields/Iterator.js.map +1 -1
  168. package/dist/esm/lib/fields/Link.d.ts +13 -15
  169. package/dist/esm/lib/fields/Link.d.ts.map +1 -1
  170. package/dist/esm/lib/fields/Link.js +20 -14
  171. package/dist/esm/lib/fields/Link.js.map +1 -1
  172. package/dist/esm/lib/fields/List.d.ts +34 -34
  173. package/dist/esm/lib/fields/List.d.ts.map +1 -1
  174. package/dist/esm/lib/fields/List.js +46 -15
  175. package/dist/esm/lib/fields/List.js.map +1 -1
  176. package/dist/esm/lib/fields/Number.d.ts +12 -12
  177. package/dist/esm/lib/fields/Number.d.ts.map +1 -1
  178. package/dist/esm/lib/fields/Number.js +35 -16
  179. package/dist/esm/lib/fields/Number.js.map +1 -1
  180. package/dist/esm/lib/fields/Relation.d.ts +44 -38
  181. package/dist/esm/lib/fields/Relation.d.ts.map +1 -1
  182. package/dist/esm/lib/fields/Relation.js +74 -66
  183. package/dist/esm/lib/fields/Relation.js.map +1 -1
  184. package/dist/esm/lib/fields/Select.d.ts +14 -13
  185. package/dist/esm/lib/fields/Select.d.ts.map +1 -1
  186. package/dist/esm/lib/fields/Select.js +28 -16
  187. package/dist/esm/lib/fields/Select.js.map +1 -1
  188. package/dist/esm/lib/fields/SelfRelation.d.ts +19 -18
  189. package/dist/esm/lib/fields/SelfRelation.d.ts.map +1 -1
  190. package/dist/esm/lib/fields/SelfRelation.js +30 -20
  191. package/dist/esm/lib/fields/SelfRelation.js.map +1 -1
  192. package/dist/esm/lib/fields/SimpleList.d.ts +16 -20
  193. package/dist/esm/lib/fields/SimpleList.d.ts.map +1 -1
  194. package/dist/esm/lib/fields/SimpleList.js +38 -20
  195. package/dist/esm/lib/fields/SimpleList.js.map +1 -1
  196. package/dist/esm/lib/fields/String.d.ts +18 -25
  197. package/dist/esm/lib/fields/String.d.ts.map +1 -1
  198. package/dist/esm/lib/fields/String.js +53 -39
  199. package/dist/esm/lib/fields/String.js.map +1 -1
  200. package/dist/esm/lib/fields/index.d.ts +15 -83
  201. package/dist/esm/lib/fields/index.d.ts.map +1 -1
  202. package/dist/esm/lib/fields/index.js +15 -36
  203. package/dist/esm/lib/fields/index.js.map +1 -1
  204. package/dist/esm/lib/types/index.d.ts +6 -2
  205. package/dist/esm/lib/types/index.d.ts.map +1 -1
  206. package/dist/esm/manager.d.ts +28 -24
  207. package/dist/esm/manager.d.ts.map +1 -1
  208. package/dist/esm/orm/operations/findDependencies.d.ts.map +1 -1
  209. package/dist/esm/orm/operations/findDependencies.js +4 -2
  210. package/dist/esm/orm/operations/findDependencies.js.map +1 -1
  211. package/dist/esm/orm/utils/parseId.d.ts +1 -1
  212. package/dist/esm/orm/utils/parseId.d.ts.map +1 -1
  213. package/dist/esm/schemas/web/page.d.ts +66 -18
  214. package/dist/esm/schemas/web/page.d.ts.map +1 -1
  215. package/dist/tsconfig.build.tsbuildinfo +1 -1
  216. package/package.json +4 -3
@@ -1,21 +1,40 @@
1
1
  import z from "zod";
2
- import { Field } from "./Field";
3
- export class NumberField extends Field {
4
- constructor() {
5
- super({
6
- config: { ui: "Number", type: "Number" },
7
- schema: z.number(),
8
- });
9
- }
10
- min(value, message) {
11
- this.minValue = value;
12
- this.schema = this.schema.min(value, message);
13
- return this;
2
+ import { createField, defaultFieldState, sameSchemas, withFieldModifiers, } from "./Field";
3
+ export function numberField() {
4
+ return makeNumberField({}, defaultFieldState);
5
+ }
6
+ function makeNumberField(options, state) {
7
+ const field = {
8
+ ...createField({
9
+ meta: {
10
+ type: "Number",
11
+ ui: "Number",
12
+ minValue: options.minValue,
13
+ maxValue: options.maxValue,
14
+ },
15
+ state,
16
+ schemas: sameSchemas(() => buildNumberSchema(options)),
17
+ }),
18
+ min: function (value, message) {
19
+ return makeNumberField({ ...options, minValue: value, minMessage: message }, this.state);
20
+ },
21
+ max: function (value, message) {
22
+ return makeNumberField({ ...options, maxValue: value, maxMessage: message }, this.state);
23
+ },
24
+ };
25
+ return withFieldModifiers({
26
+ field,
27
+ rebuild: (nextState) => makeNumberField(options, nextState),
28
+ });
29
+ }
30
+ function buildNumberSchema(options) {
31
+ let schema = z.number();
32
+ if (options.minValue !== undefined) {
33
+ schema = schema.min(options.minValue, options.minMessage);
14
34
  }
15
- max(value, message) {
16
- this.maxValue = value;
17
- this.schema = this.schema.max(value, message);
18
- return this;
35
+ if (options.maxValue !== undefined) {
36
+ schema = schema.max(options.maxValue, options.maxMessage);
19
37
  }
38
+ return schema;
20
39
  }
21
40
  //# sourceMappingURL=Number.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Number.js","sourceRoot":"","sources":["../../../../src/lib/fields/Number.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAGpB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAOhC,MAAM,OAAO,WAIX,SAAQ,KAOT;IAGC;QACE,KAAK,CAAC;YACJ,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;SACnB,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,OAAgB;QACjC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG,CAAC,KAAa,EAAE,OAAgB;QACjC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
1
+ {"version":3,"file":"Number.js","sourceRoot":"","sources":["../../../../src/lib/fields/Number.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,EACL,WAAW,EACX,iBAAiB,EAEjB,WAAW,EAOX,kBAAkB,GACnB,MAAM,SAAS,CAAC;AA8CjB,MAAM,UAAU,WAAW;IACzB,OAAO,eAAe,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,eAAe,CACtB,OAAsB,EACtB,KAAY;IAEZ,MAAM,KAAK,GAA2B;QACpC,GAAG,WAAW,CAAC;YACb,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,EAAE,EAAE,QAAQ;gBACZ,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC3B;YACD,KAAK;YACL,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;SACvD,CAAC;QACF,GAAG,EAAE,UAEH,KAAa,EACb,OAAgB;YAEhB,OAAO,eAAe,CACpB,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,EACpD,IAAI,CAAC,KAA4B,CAClC,CAAC;QACJ,CAAC;QACD,GAAG,EAAE,UAEH,KAAa,EACb,OAAgB;YAEhB,OAAO,eAAe,CACpB,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,EACpD,IAAI,CAAC,KAA4B,CAClC,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,OAAO,kBAAkB,CAAC;QACxB,KAAK;QACL,OAAO,EAAE,CAA+B,SAAoB,EAAE,EAAE,CAC9D,eAAe,CAAC,OAAO,EAAE,SAAS,CAGjC;KACJ,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAsB;IAC/C,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;IAExB,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,48 +1,54 @@
1
1
  import z from "zod";
2
- import type { EncodedField } from "./Field";
3
- import { Field } from "./Field";
4
- import { SimpleListField } from "./SimpleList";
5
- import type ContentType from "../ContentType";
6
- import type { FieldHKT, If, getInputTypeWithModifiers, getTypeWithModifiers, getOutputTypeWithModifiers } from "../types";
2
+ import { type EncodedField, type DefaultFieldState, type FieldLike, type FieldState, type FieldStateOf, type FieldWithModifiers, type PopulatableFieldLike, type SetRequired } from "./Field";
7
3
  import type { EncodedContentType } from "../ContentType";
4
+ import { type SimpleListField } from "./SimpleList";
8
5
  export type OnlyType = "existing" | "new" | undefined;
9
- type isNew<X extends OnlyType> = X extends "new" ? true : false;
10
- interface RelationFieldHKT<CT extends ContentType, X extends OnlyType, S extends ReturnType<CT["getInputSchema"]>, Sout extends ReturnType<CT["getOutputSchema"]>> extends FieldHKT {
11
- type: RelationField<CT, X, S, Sout, this["args"][1], this["args"][2], this["args"][3]>;
12
- }
13
- type NewType<S extends z.ZodTypeAny> = z.ZodObject<{
14
- type: z.ZodLiteral<"new">;
15
- data: S;
16
- }, z.core.$strip>;
17
- type ExistingType = z.ZodObject<{
18
- type: z.ZodLiteral<"existing">;
19
- _id: z.ZodString;
20
- contentType: z.ZodLiteral<string>;
21
- }, z.core.$strip>;
22
- type SchemaType<X extends OnlyType, S extends z.ZodTypeAny> = If<isNew<X>, NewType<S>, ExistingType>;
23
- export declare class RelationField<CT extends ContentType = ContentType, X extends OnlyType = OnlyType, S extends ReturnType<CT["getInputSchema"]> = ReturnType<CT["getInputSchema"]>, Sout extends ReturnType<CT["getOutputSchemaWithoutIterators"]> = ReturnType<CT["getOutputSchemaWithoutIterators"]>, TRequired extends boolean = false, TTranslatable extends boolean = false, TVisibility extends "api" | "manager" | "all" = "all"> extends Field<RelationFieldHKT<CT, X, S, Sout>, SchemaType<X, S>, Sout, TRequired, TTranslatable, TVisibility> {
24
- contentType: CT;
25
- private only?;
26
- constructor(contentType: CT, only?: X);
27
- setSelfRelateds(): void;
28
- private getSchemaType;
29
- protected getBaseInputSchema(): getInputTypeWithModifiers<SchemaType<X, S>, TRequired, TTranslatable>;
30
- protected getBaseSchema(): getTypeWithModifiers<SchemaType<X, S>, TRequired, TTranslatable>;
31
- protected getBaseOutputSchema(): getOutputTypeWithModifiers<Sout, TRequired>;
32
- getPopulatedSchema(): getOutputTypeWithModifiers<Sout, TRequired>;
33
- multiple(): SimpleListField<RelationField<CT, X, ReturnType<CT["getInputSchema"]>, ReturnType<CT["getOutputSchemaWithoutIterators"]>, true, false, "all">, z.ZodArray<If<isNew<X>, NewType<ReturnType<CT["getInputSchema"]>>, ExistingType>>, z.ZodArray<ReturnType<RelationField<CT, X, ReturnType<CT["getInputSchema"]>, ReturnType<CT["getOutputSchemaWithoutIterators"]>, true, false, "all"> extends infer T ? T extends RelationField<CT, X, ReturnType<CT["getInputSchema"]>, ReturnType<CT["getOutputSchemaWithoutIterators"]>, true, false, "all"> ? T extends {
34
- getPopulatedSchema: () => z.ZodTypeAny;
35
- } ? T["getPopulatedSchema"] : T["getSchema"] : never : never>>, false, false, "all">;
36
- }
6
+ export type ContentTypeLike<Name extends string = string> = {
7
+ name: Name;
8
+ getInputSchema: () => z.ZodTypeAny;
9
+ getOutputSchema: () => z.ZodTypeAny;
10
+ getOutputSchemaWithoutIterators?: () => z.ZodTypeAny;
11
+ getPopulatedSchema?: () => z.ZodTypeAny;
12
+ };
13
+ type ContentTypeInput<CT extends ContentTypeLike> = z.infer<ReturnType<CT["getInputSchema"]>>;
14
+ type ContentTypeOutputSchema<CT extends ContentTypeLike> = CT extends {
15
+ getOutputSchemaWithoutIterators: () => infer Schema extends z.ZodTypeAny;
16
+ } ? Schema : ReturnType<CT["getOutputSchema"]>;
17
+ type ContentTypePopulatedSchema<CT extends ContentTypeLike> = CT extends {
18
+ getPopulatedSchema: () => infer Schema extends z.ZodTypeAny;
19
+ } ? Schema : ContentTypeOutputSchema<CT>;
20
+ type ContentTypeOutput<CT extends ContentTypeLike> = z.infer<ContentTypeOutputSchema<CT>>;
21
+ type ContentTypePopulated<CT extends ContentTypeLike> = z.infer<ContentTypePopulatedSchema<CT>>;
22
+ export type RelationExisting<Name extends string = string> = {
23
+ type: "existing";
24
+ _id: string;
25
+ contentType: Name;
26
+ };
27
+ export type RelationNew<Data = unknown> = {
28
+ type: "new";
29
+ data: Data;
30
+ };
31
+ export type RelationFieldValue = RelationExisting | RelationNew<unknown>;
32
+ export type RelationExistingDefaltData = RelationExisting;
33
+ export type RelationNewDefaultData<S> = RelationNew<S>;
34
+ type RelationValue<CT extends ContentTypeLike, Only extends OnlyType> = Only extends "new" ? RelationNew<ContentTypeInput<CT>> : RelationExisting<CT["name"]>;
35
+ export type RelationMeta<Name extends string = string, Only extends OnlyType = OnlyType> = {
36
+ type: "Relation";
37
+ ui: "ContentType";
38
+ contentType: Name;
39
+ only?: Only;
40
+ };
37
41
  export type EncodedRelationField = EncodedField & {
38
42
  contentType: EncodedContentType;
39
43
  only?: OnlyType;
40
44
  };
41
- export type RelationFieldValue = z.infer<ExistingType | NewType<z.ZodTypeAny>>;
42
- export type RelationExistingDefaltData = z.infer<ExistingType>;
43
- export type RelationNewDefaultData<S> = {
44
- type: "new";
45
- data: S;
45
+ export type RelationField<CT extends ContentTypeLike = ContentTypeLike, Only extends OnlyType = undefined, State extends FieldState = DefaultFieldState> = FieldWithModifiers<RelationFieldCore<CT, Only, State>>;
46
+ type RelationFieldCore<CT extends ContentTypeLike, Only extends OnlyType, State extends FieldState> = RelationFieldBase<CT, Only, State> & PopulatableFieldLike<ContentTypePopulated<CT>, State> & {
47
+ contentType: CT;
48
+ only?: Only;
49
+ multiple: <TThis extends RelationFieldBase<CT, Only, FieldState>>(this: TThis) => SimpleListField<RelationField<CT, Only, SetRequired<DefaultFieldState>>, FieldStateOf<TThis>>;
46
50
  };
51
+ type RelationFieldBase<CT extends ContentTypeLike, Only extends OnlyType, State extends FieldState> = FieldLike<RelationValue<CT, Only>, RelationValue<CT, Only>, ContentTypeOutput<CT>, RelationMeta<CT["name"], Only>, State>;
52
+ export declare function relationField<CT extends ContentTypeLike, const Only extends OnlyType = undefined>(contentType: CT, only?: Only): RelationField<CT, Only>;
47
53
  export {};
48
54
  //# sourceMappingURL=Relation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Relation.d.ts","sourceRoot":"","sources":["../../../../src/lib/fields/Relation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Relation.d.ts","sourceRoot":"","sources":["../../../../src/lib/fields/Relation.ts"],"names":[],"mappings":"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"}
@@ -1,73 +1,81 @@
1
1
  import z from "zod";
2
- import { Field } from "./Field";
3
- import { SimpleListField } from "./SimpleList";
4
- import { SelfRelationField } from "./SelfRelation";
5
- import { getDefaultInputSchema, getDefaultOutputSchema, getDefaultSchema, } from "../utils/getSchemas";
2
+ import { createField, defaultFieldState, withFieldModifiers, } from "./Field";
3
+ import { simpleListField } from "./SimpleList";
6
4
  import { Id } from "../utils/id";
7
- export class RelationField extends Field {
8
- constructor(contentType, only) {
9
- super({
10
- config: { ui: "ContentType", type: "Relation" },
11
- schema: contentType.getInputSchema(),
12
- });
13
- this.contentType = contentType;
14
- this.only = only;
15
- }
16
- setSelfRelateds() {
17
- Object.values(this.contentType.fields).forEach((field) => {
18
- if (field instanceof SelfRelationField) {
19
- field.setContentType(this.contentType);
5
+ export function relationField(contentType, only) {
6
+ return makeRelationField({ contentType, only }, defaultFieldState);
7
+ }
8
+ function makeRelationField(options, state) {
9
+ const field = {
10
+ ...createField({
11
+ meta: {
12
+ type: "Relation",
13
+ ui: "ContentType",
14
+ contentType: options.contentType.name,
15
+ only: options.only,
16
+ },
17
+ state,
18
+ schemas: {
19
+ input: () => buildRelationSchema(options),
20
+ db: () => buildRelationSchema(options),
21
+ output: () => getContentTypeOutputSchema(options.contentType),
22
+ },
23
+ }),
24
+ getPopulatedSchema: () => applyRelationOutputPresence(getContentTypePopulatedSchema(options.contentType), state),
25
+ contentType: options.contentType,
26
+ only: options.only,
27
+ multiple: function () {
28
+ const relation = makeRelationField(options, defaultFieldState).required();
29
+ let list = simpleListField(relation);
30
+ if (this.state.required) {
31
+ list = list.required();
20
32
  }
21
- });
22
- }
23
- getSchemaType() {
24
- const newSchema = z.object({
25
- type: z.literal("new"),
26
- data: this.schema,
27
- });
28
- const existingSchema = z.object({
29
- type: z.literal("existing"),
30
- _id: Id,
31
- contentType: z.literal(this.contentType.name),
32
- });
33
- const bothSchema = z.discriminatedUnion("type", [
34
- newSchema,
35
- existingSchema,
36
- ]);
37
- return (this.only === "new"
38
- ? newSchema
39
- : this.only === "existing"
40
- ? existingSchema
41
- : bothSchema);
42
- }
43
- getBaseInputSchema() {
44
- return getDefaultInputSchema(this.getSchemaType(), this.isRequired, this.isTranslatable);
45
- }
46
- getBaseSchema() {
47
- return getDefaultSchema(this.getSchemaType(), this.isRequired, this.isTranslatable);
48
- }
49
- getBaseOutputSchema() {
50
- return getDefaultOutputSchema(this.contentType.getOutputSchemaWithoutIterators(), this.isRequired);
51
- }
52
- getPopulatedSchema() {
53
- return getDefaultOutputSchema(this.schema, this.isRequired);
33
+ if (this.state.translatable) {
34
+ list = list.translatable();
35
+ }
36
+ if (this.state.visibility === "api") {
37
+ list = list.apiOnly();
38
+ }
39
+ if (this.state.visibility === "manager") {
40
+ list = list.managerOnly();
41
+ }
42
+ return list;
43
+ },
44
+ };
45
+ return withFieldModifiers({
46
+ field,
47
+ rebuild: (nextState) => makeRelationField(options, nextState),
48
+ });
49
+ }
50
+ function buildRelationSchema(options) {
51
+ const newSchema = z.object({
52
+ type: z.literal("new"),
53
+ data: options.contentType.getInputSchema(),
54
+ });
55
+ const existingSchema = z.object({
56
+ type: z.literal("existing"),
57
+ _id: Id,
58
+ contentType: z.literal(options.contentType.name),
59
+ });
60
+ if (options.only === "new") {
61
+ return newSchema;
54
62
  }
55
- multiple() {
56
- const relation = new RelationField(this.contentType, this.only).required();
57
- const list = new SimpleListField(relation);
58
- if (this.isRequired) {
59
- list.required();
60
- }
61
- if (this.isTranslatable) {
62
- list.translatable();
63
- }
64
- if (this.visibility === "api") {
65
- list.apiOnly();
66
- }
67
- if (this.visibility === "manager") {
68
- list.managerOnly();
69
- }
70
- return list;
63
+ if (options.only === "existing") {
64
+ return existingSchema;
71
65
  }
66
+ return z.discriminatedUnion("type", [
67
+ newSchema,
68
+ existingSchema,
69
+ ]);
70
+ }
71
+ function getContentTypeOutputSchema(contentType) {
72
+ return (contentType.getOutputSchemaWithoutIterators?.() ??
73
+ contentType.getOutputSchema());
74
+ }
75
+ function getContentTypePopulatedSchema(contentType) {
76
+ return (contentType.getPopulatedSchema?.() ?? getContentTypeOutputSchema(contentType));
77
+ }
78
+ function applyRelationOutputPresence(schema, state) {
79
+ return state.required ? schema : schema.optional();
72
80
  }
73
81
  //# sourceMappingURL=Relation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Relation.js","sourceRoot":"","sources":["../../../../src/lib/fields/Relation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Relation.js","sourceRoot":"","sources":["../../../../src/lib/fields/Relation.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,20 @@
1
- import z from "zod";
2
- import type { EncodedField } from "./Field";
3
- import { Field } from "./Field";
4
- import type { FieldHKT, If, Visibility } from "../types";
5
- interface SelectFieldHKT<L extends string[], M extends boolean> extends FieldHKT {
6
- type: SelectField<L, M, If<M, z.ZodArray<z.ZodLiteral<L[number]>>, z.ZodLiteral<L[number]>>, this["args"][1], this["args"][2], this["args"][3]>;
7
- }
8
- export declare class SelectField<const L extends string[] = string[], M extends boolean = false, S extends If<M, z.ZodArray<z.ZodLiteral<L[number]>>, z.ZodLiteral<L[number]>> = If<M, z.ZodArray<z.ZodLiteral<L[number]>>, z.ZodLiteral<L[number]>>, TRequired extends boolean = false, TTranslatable extends boolean = false, TVisibility extends Visibility = "all"> extends Field<SelectFieldHKT<L, M>, S, S, TRequired, TTranslatable, TVisibility> {
9
- options: L;
10
- isMultiple: M;
11
- constructor(options: L);
12
- multiple(): SelectField<L, true, z.ZodArray<z.ZodLiteral<L[number]>>, TRequired, TTranslatable, TVisibility>;
13
- }
1
+ import { type EncodedField, type DefaultFieldState, type FieldLike, type FieldState, type FieldStateOf, type FieldWithModifiers } from "./Field";
2
+ type SelectValue<Options extends readonly string[], Multiple extends boolean> = Multiple extends true ? Options[number][] : Options[number];
3
+ export type SelectMeta<Options extends readonly string[] = readonly string[], Multiple extends boolean = boolean> = {
4
+ type: "Select";
5
+ ui: Multiple extends true ? "MultiSelect" : "Select";
6
+ options: Options;
7
+ isMultiple: Multiple;
8
+ };
14
9
  export type EncodedSelectField = EncodedField & {
15
10
  options: string[];
16
11
  isMultiple: boolean;
17
12
  };
13
+ export type SelectField<Options extends readonly string[] = readonly string[], Multiple extends boolean = false, State extends FieldState = DefaultFieldState> = FieldWithModifiers<SelectFieldCore<Options, Multiple, State>>;
14
+ type SelectFieldCore<Options extends readonly string[], Multiple extends boolean, State extends FieldState> = SelectFieldBase<Options, Multiple, State> & {
15
+ multiple: <TThis extends SelectFieldBase<Options, Multiple, FieldState>>(this: TThis) => SelectField<Options, true, FieldStateOf<TThis>>;
16
+ };
17
+ type SelectFieldBase<Options extends readonly string[], Multiple extends boolean, State extends FieldState> = FieldLike<SelectValue<Options, Multiple>, SelectValue<Options, Multiple>, SelectValue<Options, Multiple>, SelectMeta<Options, Multiple>, State>;
18
+ export declare function selectField<const Options extends readonly string[]>(options: Options): SelectField<Options>;
18
19
  export {};
19
20
  //# sourceMappingURL=Select.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../../src/lib/fields/Select.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEzD,UAAU,cAAc,CACtB,CAAC,SAAS,MAAM,EAAE,EAClB,CAAC,SAAS,OAAO,CACjB,SAAQ,QAAQ;IAChB,IAAI,EAAE,WAAW,CACf,CAAC,EACD,CAAC,EACD,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EACnE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EACf,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EACf,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAChB,CAAC;CACH;AAED,qBAAa,WAAW,CACtB,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,EACnC,CAAC,SAAS,OAAO,GAAG,KAAK,EACzB,CAAC,SAAS,EAAE,CACV,CAAC,EACD,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EACnC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CACxB,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EACvE,SAAS,SAAS,OAAO,GAAG,KAAK,EACjC,aAAa,SAAS,OAAO,GAAG,KAAK,EACrC,WAAW,SAAS,UAAU,GAAG,KAAK,CACtC,SAAQ,KAAK,CACb,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,CAAC,EACD,CAAC,EACD,SAAS,EACT,aAAa,EACb,WAAW,CACZ;IACC,OAAO,EAAE,CAAC,CAAC;IACX,UAAU,EAAE,CAAC,CAAc;gBACf,OAAO,EAAE,CAAC;IAQtB,QAAQ,IAIS,WAAW,CACxB,CAAC,EACD,IAAI,EACJ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EACnC,SAAS,EACT,aAAa,EACb,WAAW,CACZ;CAEJ;AAED,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG;IAC9C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC"}
1
+ {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../../src/lib/fields/Select.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,YAAY,EAEjB,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,kBAAkB,EAGxB,MAAM,SAAS,CAAC;AAEjB,KAAK,WAAW,CACd,OAAO,SAAS,SAAS,MAAM,EAAE,EACjC,QAAQ,SAAS,OAAO,IACtB,QAAQ,SAAS,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAEhE,MAAM,MAAM,UAAU,CACpB,OAAO,SAAS,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,EACrD,QAAQ,SAAS,OAAO,GAAG,OAAO,IAChC;IACF,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,QAAQ,SAAS,IAAI,GAAG,aAAa,GAAG,QAAQ,CAAC;IACrD,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,QAAQ,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG;IAC9C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAUF,MAAM,MAAM,WAAW,CACrB,OAAO,SAAS,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,EACrD,QAAQ,SAAS,OAAO,GAAG,KAAK,EAChC,KAAK,SAAS,UAAU,GAAG,iBAAiB,IAC1C,kBAAkB,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AAElE,KAAK,eAAe,CAClB,OAAO,SAAS,SAAS,MAAM,EAAE,EACjC,QAAQ,SAAS,OAAO,EACxB,KAAK,SAAS,UAAU,IACtB,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG;IAC9C,QAAQ,EAAE,CACR,KAAK,SAAS,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,EAE5D,IAAI,EAAE,KAAK,KACR,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;CACtD,CAAC;AAEF,KAAK,eAAe,CAClB,OAAO,SAAS,SAAS,MAAM,EAAE,EACjC,QAAQ,SAAS,OAAO,EACxB,KAAK,SAAS,UAAU,IACtB,SAAS,CACX,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,EAC9B,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,EAC9B,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,EAC9B,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,EAC7B,KAAK,CACN,CAAC;AAEF,wBAAgB,WAAW,CAAC,KAAK,CAAC,OAAO,SAAS,SAAS,MAAM,EAAE,EACjE,OAAO,EAAE,OAAO,GACf,WAAW,CAAC,OAAO,CAAC,CAEtB"}
@@ -1,19 +1,31 @@
1
1
  import z from "zod";
2
- import { Field } from "./Field";
3
- export class SelectField extends Field {
4
- constructor(options) {
5
- super({
6
- config: { ui: "Select", type: "Select" },
7
- schema: z.literal(options.length ? options : [""]),
8
- });
9
- this.isMultiple = false;
10
- this.options = options;
11
- }
12
- multiple() {
13
- this.schema = z.array(z.literal(this.options));
14
- this.config.ui = "MultiSelect";
15
- this.isMultiple = true;
16
- return this;
17
- }
2
+ import { createField, defaultFieldState, sameSchemas, withFieldModifiers, } from "./Field";
3
+ export function selectField(options) {
4
+ return makeSelectField({ options, multiple: false }, defaultFieldState);
5
+ }
6
+ function makeSelectField(options, state) {
7
+ const field = {
8
+ ...createField({
9
+ meta: {
10
+ type: "Select",
11
+ ui: (options.multiple ? "MultiSelect" : "Select"),
12
+ options: options.options,
13
+ isMultiple: options.multiple,
14
+ },
15
+ state,
16
+ schemas: sameSchemas(() => buildSelectSchema(options)),
17
+ }),
18
+ multiple: function () {
19
+ return makeSelectField({ ...options, multiple: true }, this.state);
20
+ },
21
+ };
22
+ return withFieldModifiers({
23
+ field,
24
+ rebuild: (nextState) => makeSelectField(options, nextState),
25
+ });
26
+ }
27
+ function buildSelectSchema(options) {
28
+ const literal = z.literal(options.options.length ? options.options : [""]);
29
+ return (options.multiple ? z.array(literal) : literal);
18
30
  }
19
31
  //# sourceMappingURL=Select.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Select.js","sourceRoot":"","sources":["../../../../src/lib/fields/Select.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAGpB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAiBhC,MAAM,OAAO,WAWX,SAAQ,KAOT;IAGC,YAAY,OAAU;QACpB,KAAK,CAAC;YACJ,MAAM,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAM;SACxD,CAAC,CAAC;QALL,eAAU,GAAM,KAAU,CAAC;QAMzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAM,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,aAAa,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,IAAS,CAAC;QAC5B,OAAO,IAON,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"Select.js","sourceRoot":"","sources":["../../../../src/lib/fields/Select.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,EACL,WAAW,EACX,iBAAiB,EAEjB,WAAW,EAOX,kBAAkB,GACnB,MAAM,SAAS,CAAC;AA4DjB,MAAM,UAAU,WAAW,CACzB,OAAgB;IAEhB,OAAO,eAAe,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,iBAAiB,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,eAAe,CAKtB,OAAyC,EACzC,KAAY;IAEZ,MAAM,KAAK,GAA8C;QACvD,GAAG,WAAW,CAAC;YACb,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAGzC;gBACP,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,UAAU,EAAE,OAAO,CAAC,QAAQ;aAC7B;YACD,KAAK;YACL,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;SACvD,CAAC;QACF,QAAQ,EAAE;YAGR,OAAO,eAAe,CACpB,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,EAC9B,IAAI,CAAC,KAA4B,CAClC,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,OAAO,kBAAkB,CAAC;QACxB,KAAK;QACL,OAAO,EAAE,CAA+B,SAAoB,EAAE,EAAE,CAC9D,eAAe,CAAC,OAAO,EAAE,SAAS,CAGjC;KACJ,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAGxB,OAAyC;IACzC,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CACvB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAClB,CAAC;IAEhC,OAAO,CACL,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CACD,CAAC;AACjD,CAAC"}
@@ -1,21 +1,22 @@
1
- import z from "zod";
2
- import type { EncodedField } from "./Field";
3
- import { Field } from "./Field";
4
- import type ContentType from "../ContentType";
5
- import type { FieldHKT, Visibility } from "../types";
6
- declare const SelfRelationSchema: z.ZodObject<{
7
- type: z.ZodLiteral<"self">;
8
- _id: z.ZodString;
9
- contentType: z.ZodString;
10
- }, z.core.$strip>;
11
- type SelfRelationSchema = typeof SelfRelationSchema;
12
- interface SelfRelationFieldHKT extends FieldHKT {
13
- type: SelfRelationField<this["args"][1], this["args"][2], this["args"][3]>;
14
- }
15
- export declare class SelfRelationField<TRequired extends boolean = false, TTranslatable extends boolean = false, TVisibility extends Visibility = "all"> extends Field<SelfRelationFieldHKT, SelfRelationSchema, SelfRelationSchema, TRequired, TTranslatable, TVisibility> {
16
- constructor();
17
- setContentType(contentType: ContentType): void;
18
- }
1
+ import { type EncodedField, type DefaultFieldState, type FieldLike, type FieldState, type FieldStateOf, type FieldWithModifiers } from "./Field";
2
+ export type SelfRelationValue<Name extends string = string> = {
3
+ type: "self";
4
+ _id: string;
5
+ contentType: Name;
6
+ };
7
+ export type SelfRelationMeta<Name extends string = string> = {
8
+ type: "Relation";
9
+ ui: "SelfRelation";
10
+ contentType?: Name;
11
+ };
12
+ export type SelfRelationField<Name extends string = string, State extends FieldState = DefaultFieldState> = FieldWithModifiers<SelfRelationFieldCore<Name, State>>;
13
+ type SelfRelationFieldCore<Name extends string, State extends FieldState> = SelfRelationFieldBase<Name, State> & {
14
+ setContentType: <TThis extends SelfRelationFieldBase<Name, FieldState>, NextName extends string>(this: TThis, contentType: {
15
+ name: NextName;
16
+ }) => SelfRelationField<NextName, FieldStateOf<TThis>>;
17
+ };
18
+ type SelfRelationFieldBase<Name extends string, State extends FieldState> = FieldLike<SelfRelationValue<Name>, SelfRelationValue<Name>, SelfRelationValue<Name>, SelfRelationMeta<Name>, State>;
19
+ export declare function selfRelationField(): SelfRelationField;
19
20
  export type EncodedSelfRelationField = EncodedField;
20
21
  export {};
21
22
  //# sourceMappingURL=SelfRelation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelfRelation.d.ts","sourceRoot":"","sources":["../../../../src/lib/fields/SelfRelation.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAE9C,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAErD,QAAA,MAAM,kBAAkB;;;;iBAItB,CAAC;AAEH,KAAK,kBAAkB,GAAG,OAAO,kBAAkB,CAAC;AAEpD,UAAU,oBAAqB,SAAQ,QAAQ;IAC7C,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5E;AAED,qBAAa,iBAAiB,CAC5B,SAAS,SAAS,OAAO,GAAG,KAAK,EACjC,aAAa,SAAS,OAAO,GAAG,KAAK,EACrC,WAAW,SAAS,UAAU,GAAG,KAAK,CACtC,SAAQ,KAAK,CACb,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,WAAW,CACZ;;IAQC,cAAc,CAAC,WAAW,EAAE,WAAW;CAOxC;AAED,MAAM,MAAM,wBAAwB,GAAG,YAAY,CAAC"}
1
+ {"version":3,"file":"SelfRelation.d.ts","sourceRoot":"","sources":["../../../../src/lib/fields/SelfRelation.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,YAAY,EAEjB,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,kBAAkB,EAGxB,MAAM,SAAS,CAAC;AAGjB,MAAM,MAAM,iBAAiB,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,IAAI;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,IAAI,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,IAAI;IAC3D,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,cAAc,CAAC;IACnB,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAC3B,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,KAAK,SAAS,UAAU,GAAG,iBAAiB,IAC1C,kBAAkB,CAAC,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAE3D,KAAK,qBAAqB,CACxB,IAAI,SAAS,MAAM,EACnB,KAAK,SAAS,UAAU,IACtB,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG;IACvC,cAAc,EAAE,CACd,KAAK,SAAS,qBAAqB,CAAC,IAAI,EAAE,UAAU,CAAC,EACrD,QAAQ,SAAS,MAAM,EAEvB,IAAI,EAAE,KAAK,EACX,WAAW,EAAE;QAAE,IAAI,EAAE,QAAQ,CAAA;KAAE,KAC5B,iBAAiB,CAAC,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;CACvD,CAAC;AAEF,KAAK,qBAAqB,CACxB,IAAI,SAAS,MAAM,EACnB,KAAK,SAAS,UAAU,IACtB,SAAS,CACX,iBAAiB,CAAC,IAAI,CAAC,EACvB,iBAAiB,CAAC,IAAI,CAAC,EACvB,iBAAiB,CAAC,IAAI,CAAC,EACvB,gBAAgB,CAAC,IAAI,CAAC,EACtB,KAAK,CACN,CAAC;AAEF,wBAAgB,iBAAiB,IAAI,iBAAiB,CAErD;AAED,MAAM,MAAM,wBAAwB,GAAG,YAAY,CAAC"}
@@ -1,24 +1,34 @@
1
1
  import z from "zod";
2
- import { Field } from "./Field";
2
+ import { createField, defaultFieldState, sameSchemas, withFieldModifiers, } from "./Field";
3
3
  import { Id } from "../utils/id";
4
- const SelfRelationSchema = z.object({
5
- type: z.literal("self"),
6
- _id: Id,
7
- contentType: z.string(),
8
- });
9
- export class SelfRelationField extends Field {
10
- constructor() {
11
- super({
12
- config: { ui: "SelfRelation", type: "Relation" },
13
- schema: SelfRelationSchema,
14
- });
15
- }
16
- setContentType(contentType) {
17
- this.schema = z.object({
18
- type: z.literal("self"),
19
- _id: Id,
20
- contentType: z.literal(contentType.name),
21
- });
22
- }
4
+ export function selfRelationField() {
5
+ return makeSelfRelationField({}, defaultFieldState);
6
+ }
7
+ function makeSelfRelationField(options, state) {
8
+ const field = {
9
+ ...createField({
10
+ meta: {
11
+ type: "Relation",
12
+ ui: "SelfRelation",
13
+ contentType: options.contentType,
14
+ },
15
+ state,
16
+ schemas: sameSchemas(() => buildSelfRelationSchema(options.contentType)),
17
+ }),
18
+ setContentType: function (contentType) {
19
+ return makeSelfRelationField({ contentType: contentType.name }, this.state);
20
+ },
21
+ };
22
+ return withFieldModifiers({
23
+ field,
24
+ rebuild: (nextState) => makeSelfRelationField(options, nextState),
25
+ });
26
+ }
27
+ function buildSelfRelationSchema(contentType) {
28
+ return z.object({
29
+ type: z.literal("self"),
30
+ _id: Id,
31
+ contentType: contentType ? z.literal(contentType) : z.string(),
32
+ });
23
33
  }
24
34
  //# sourceMappingURL=SelfRelation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelfRelation.js","sourceRoot":"","sources":["../../../../src/lib/fields/SelfRelation.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAGpB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAGjC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACvB,GAAG,EAAE,EAAE;IACP,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;CACxB,CAAC,CAAC;AAQH,MAAM,OAAO,iBAIX,SAAQ,KAOT;IACC;QACE,KAAK,CAAC;YACJ,MAAM,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE;YAChD,MAAM,EAAE,kBAAkB;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,WAAwB;QACrC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;YACrB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;YACvB,GAAG,EAAE,EAAE;YACP,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;SACzC,CAAkC,CAAC;IACtC,CAAC;CACF"}
1
+ {"version":3,"file":"SelfRelation.js","sourceRoot":"","sources":["../../../../src/lib/fields/SelfRelation.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,EACL,WAAW,EACX,iBAAiB,EAEjB,WAAW,EAOX,kBAAkB,GACnB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AA2CjC,MAAM,UAAU,iBAAiB;IAC/B,OAAO,qBAAqB,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC;AACtD,CAAC;AAID,SAAS,qBAAqB,CAI5B,OAA+B,EAC/B,KAAY;IAEZ,MAAM,KAAK,GAAuC;QAChD,GAAG,WAAW,CAAC;YACb,IAAI,EAAE;gBACJ,IAAI,EAAE,UAAU;gBAChB,EAAE,EAAE,cAAc;gBAClB,WAAW,EAAE,OAAO,CAAC,WAAW;aACjC;YACD,KAAK;YACL,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;SACzE,CAAC;QACF,cAAc,EAAE,UAGD,WAA+B;YAC5C,OAAO,qBAAqB,CAC1B,EAAE,WAAW,EAAE,WAAW,CAAC,IAAI,EAAE,EACjC,IAAI,CAAC,KAA4B,CAClC,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,OAAO,kBAAkB,CAAC;QACxB,KAAK;QACL,OAAO,EAAE,CAA+B,SAAoB,EAAE,EAAE,CAC9D,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAGvC;KACJ,CAAC,CAAC;AACL,CAAC;AAED,SAAS,uBAAuB,CAAsB,WAAkB;IACtE,OAAO,CAAC,CAAC,MAAM,CAAC;QACd,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QACvB,GAAG,EAAE,EAAE;QACP,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;KAC/D,CAAuC,CAAC;AAC3C,CAAC"}