@nixxie-cms/core 1.0.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 (658) hide show
  1. package/CHANGELOG.md +3158 -0
  2. package/LICENSE +21 -0
  3. package/README.md +6 -0
  4. package/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-id-field-view.cjs.d.ts +2 -0
  5. package/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-id-field-view.cjs.js +244 -0
  6. package/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-id-field-view.esm.js +235 -0
  7. package/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view/package.json +4 -0
  8. package/___internal-do-not-use-will-break-in-patch/admin-ui/next-config/package.json +4 -0
  9. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-App.cjs.d.ts +2 -0
  10. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-App.cjs.js +59 -0
  11. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-App.esm.js +55 -0
  12. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/package.json +4 -0
  13. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-CreateItemPage.cjs.d.ts +2 -0
  14. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-CreateItemPage.cjs.js +116 -0
  15. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-CreateItemPage.esm.js +112 -0
  16. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/package.json +4 -0
  17. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-HomePage.cjs.d.ts +2 -0
  18. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-HomePage.cjs.js +336 -0
  19. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-HomePage.esm.js +332 -0
  20. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/package.json +4 -0
  21. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-ItemPage.cjs.d.ts +2 -0
  22. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-ItemPage.cjs.js +463 -0
  23. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-ItemPage.esm.js +455 -0
  24. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/package.json +4 -0
  25. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-ListPage.cjs.d.ts +2 -0
  26. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-ListPage.cjs.js +1195 -0
  27. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-ListPage.esm.js +1187 -0
  28. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/package.json +4 -0
  29. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-NoAccessPage.cjs.d.ts +2 -0
  30. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-NoAccessPage.cjs.js +40 -0
  31. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-admin-ui-pages-NoAccessPage.esm.js +35 -0
  32. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/package.json +4 -0
  33. package/___internal-do-not-use-will-break-in-patch/artifacts/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-artifacts.cjs.d.ts +2 -0
  34. package/___internal-do-not-use-will-break-in-patch/artifacts/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-artifacts.cjs.js +51 -0
  35. package/___internal-do-not-use-will-break-in-patch/artifacts/dist/nixxie-cms-core-___internal-do-not-use-will-break-in-patch-artifacts.esm.js +38 -0
  36. package/___internal-do-not-use-will-break-in-patch/artifacts/package.json +4 -0
  37. package/access/dist/nixxie-cms-core-access.cjs.d.ts +2 -0
  38. package/access/dist/nixxie-cms-core-access.cjs.js +26 -0
  39. package/access/dist/nixxie-cms-core-access.esm.js +19 -0
  40. package/access/package.json +4 -0
  41. package/admin-ui/apollo/dist/nixxie-cms-core-admin-ui-apollo.cjs.d.ts +2 -0
  42. package/admin-ui/apollo/dist/nixxie-cms-core-admin-ui-apollo.cjs.js +87 -0
  43. package/admin-ui/apollo/dist/nixxie-cms-core-admin-ui-apollo.esm.js +2 -0
  44. package/admin-ui/apollo/package.json +4 -0
  45. package/admin-ui/components/dist/nixxie-cms-core-admin-ui-components.cjs.d.ts +2 -0
  46. package/admin-ui/components/dist/nixxie-cms-core-admin-ui-components.cjs.js +77 -0
  47. package/admin-ui/components/dist/nixxie-cms-core-admin-ui-components.esm.js +58 -0
  48. package/admin-ui/components/package.json +4 -0
  49. package/admin-ui/context/dist/nixxie-cms-core-admin-ui-context.cjs.d.ts +2 -0
  50. package/admin-ui/context/dist/nixxie-cms-core-admin-ui-context.cjs.js +35 -0
  51. package/admin-ui/context/dist/nixxie-cms-core-admin-ui-context.esm.js +23 -0
  52. package/admin-ui/context/package.json +4 -0
  53. package/admin-ui/image/dist/nixxie-cms-core-admin-ui-image.cjs.d.ts +3 -0
  54. package/admin-ui/image/dist/nixxie-cms-core-admin-ui-image.cjs.js +18 -0
  55. package/admin-ui/image/dist/nixxie-cms-core-admin-ui-image.esm.js +2 -0
  56. package/admin-ui/image/package.json +4 -0
  57. package/admin-ui/router/dist/nixxie-cms-core-admin-ui-router.cjs.d.ts +2 -0
  58. package/admin-ui/router/dist/nixxie-cms-core-admin-ui-router.cjs.js +34 -0
  59. package/admin-ui/router/dist/nixxie-cms-core-admin-ui-router.esm.js +12 -0
  60. package/admin-ui/router/package.json +4 -0
  61. package/admin-ui/utils/dist/nixxie-cms-core-admin-ui-utils.cjs.d.ts +2 -0
  62. package/admin-ui/utils/dist/nixxie-cms-core-admin-ui-utils.cjs.js +45 -0
  63. package/admin-ui/utils/dist/nixxie-cms-core-admin-ui-utils.esm.js +22 -0
  64. package/admin-ui/utils/package.json +4 -0
  65. package/bin/cli.js +3 -0
  66. package/context/dist/nixxie-cms-core-context.cjs.d.ts +2 -0
  67. package/context/dist/nixxie-cms-core-context.cjs.js +31 -0
  68. package/context/dist/nixxie-cms-core-context.esm.js +23 -0
  69. package/context/package.json +4 -0
  70. package/dist/CreateItemDialog-33335548.esm.js +55 -0
  71. package/dist/CreateItemDialog-56cf59b7.cjs.js +57 -0
  72. package/dist/Errors-575adfa3.cjs.js +147 -0
  73. package/dist/Errors-bf24759e.esm.js +143 -0
  74. package/dist/Field-47f85161.esm.js +278 -0
  75. package/dist/Field-ed8d7627.cjs.js +287 -0
  76. package/dist/Fields-956d9a14.esm.js +203 -0
  77. package/dist/Fields-e2c28056.cjs.js +206 -0
  78. package/dist/GraphQLErrorNotice-cd74180d.cjs.js +57 -0
  79. package/dist/GraphQLErrorNotice-d9f0931b.esm.js +55 -0
  80. package/dist/NullableFieldWrapper-6ea48af3.esm.js +71 -0
  81. package/dist/NullableFieldWrapper-daa0a080.cjs.js +74 -0
  82. package/dist/PageContainer-27c27f10.cjs.js +1144 -0
  83. package/dist/PageContainer-7db73317.esm.js +1129 -0
  84. package/dist/actionData-64d4c37a.esm.js +28 -0
  85. package/dist/actionData-7858738d.cjs.js +32 -0
  86. package/dist/admin-meta-14c60fec.esm.js +210 -0
  87. package/dist/admin-meta-18d0c276.cjs.js +217 -0
  88. package/dist/admin-meta-graphql-6f7f5331.esm.js +142 -0
  89. package/dist/admin-meta-graphql-c8f926e9.cjs.js +144 -0
  90. package/dist/common-1a350e11.cjs.js +324 -0
  91. package/dist/common-29fc82e6.esm.js +315 -0
  92. package/dist/context-3132c3ed.esm.js +419 -0
  93. package/dist/context-e7a45152.cjs.js +432 -0
  94. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view.d.ts +6 -0
  95. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view.d.ts.map +1 -0
  96. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/index.d.ts +10 -0
  97. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/index.d.ts.map +1 -0
  98. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/index.d.ts +6 -0
  99. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/index.d.ts.map +1 -0
  100. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/index.d.ts +2 -0
  101. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/index.d.ts.map +1 -0
  102. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/index.d.ts +6 -0
  103. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/index.d.ts.map +1 -0
  104. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/index.d.ts +12 -0
  105. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/index.d.ts.map +1 -0
  106. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/index.d.ts +7 -0
  107. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/index.d.ts.map +1 -0
  108. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/artifacts.d.ts +6 -0
  109. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/artifacts.d.ts.map +1 -0
  110. package/dist/declarations/src/access.d.ts +12 -0
  111. package/dist/declarations/src/access.d.ts.map +1 -0
  112. package/dist/declarations/src/admin-ui/apollo.d.ts +8 -0
  113. package/dist/declarations/src/admin-ui/apollo.d.ts.map +1 -0
  114. package/dist/declarations/src/admin-ui/components/CellContainer.d.ts +5 -0
  115. package/dist/declarations/src/admin-ui/components/CellContainer.d.ts.map +1 -0
  116. package/dist/declarations/src/admin-ui/components/CreateItemDialog.d.ts +5 -0
  117. package/dist/declarations/src/admin-ui/components/CreateItemDialog.d.ts.map +1 -0
  118. package/dist/declarations/src/admin-ui/components/Errors.d.ts +28 -0
  119. package/dist/declarations/src/admin-ui/components/Errors.d.ts.map +1 -0
  120. package/dist/declarations/src/admin-ui/components/GraphQLErrorNotice.d.ts +6 -0
  121. package/dist/declarations/src/admin-ui/components/GraphQLErrorNotice.d.ts.map +1 -0
  122. package/dist/declarations/src/admin-ui/components/InlineCode.d.ts +3 -0
  123. package/dist/declarations/src/admin-ui/components/InlineCode.d.ts.map +1 -0
  124. package/dist/declarations/src/admin-ui/components/Logo.d.ts +2 -0
  125. package/dist/declarations/src/admin-ui/components/Logo.d.ts.map +1 -0
  126. package/dist/declarations/src/admin-ui/components/Navigation.d.ts +22 -0
  127. package/dist/declarations/src/admin-ui/components/Navigation.d.ts.map +1 -0
  128. package/dist/declarations/src/admin-ui/components/NullableFieldWrapper.d.ts +33 -0
  129. package/dist/declarations/src/admin-ui/components/NullableFieldWrapper.d.ts.map +1 -0
  130. package/dist/declarations/src/admin-ui/components/PageContainer.d.ts +10 -0
  131. package/dist/declarations/src/admin-ui/components/PageContainer.d.ts.map +1 -0
  132. package/dist/declarations/src/admin-ui/components/index.d.ts +11 -0
  133. package/dist/declarations/src/admin-ui/components/index.d.ts.map +1 -0
  134. package/dist/declarations/src/admin-ui/context.d.ts +50 -0
  135. package/dist/declarations/src/admin-ui/context.d.ts.map +1 -0
  136. package/dist/declarations/src/admin-ui/image.d.ts +3 -0
  137. package/dist/declarations/src/admin-ui/image.d.ts.map +1 -0
  138. package/dist/declarations/src/admin-ui/router.d.ts +15 -0
  139. package/dist/declarations/src/admin-ui/router.d.ts.map +1 -0
  140. package/dist/declarations/src/admin-ui/utils/Fields.d.ts +16 -0
  141. package/dist/declarations/src/admin-ui/utils/Fields.d.ts.map +1 -0
  142. package/dist/declarations/src/admin-ui/utils/filters.d.ts +10 -0
  143. package/dist/declarations/src/admin-ui/utils/filters.d.ts.map +1 -0
  144. package/dist/declarations/src/admin-ui/utils/index.d.ts +8 -0
  145. package/dist/declarations/src/admin-ui/utils/index.d.ts.map +1 -0
  146. package/dist/declarations/src/admin-ui/utils/useCreateItem.d.ts +24 -0
  147. package/dist/declarations/src/admin-ui/utils/useCreateItem.d.ts.map +1 -0
  148. package/dist/declarations/src/admin-ui/utils/utils.d.ts +8 -0
  149. package/dist/declarations/src/admin-ui/utils/utils.d.ts.map +1 -0
  150. package/dist/declarations/src/artifacts.d.ts +14 -0
  151. package/dist/declarations/src/artifacts.d.ts.map +1 -0
  152. package/dist/declarations/src/context.d.ts +2 -0
  153. package/dist/declarations/src/context.d.ts.map +1 -0
  154. package/dist/declarations/src/fields/filters/enum-filter.d.ts +27 -0
  155. package/dist/declarations/src/fields/filters/enum-filter.d.ts.map +1 -0
  156. package/dist/declarations/src/fields/filters/index.d.ts +2 -0
  157. package/dist/declarations/src/fields/filters/index.d.ts.map +1 -0
  158. package/dist/declarations/src/fields/filters/internal.d.ts +21 -0
  159. package/dist/declarations/src/fields/filters/internal.d.ts.map +1 -0
  160. package/dist/declarations/src/fields/filters/providers/mysql.d.ts +182 -0
  161. package/dist/declarations/src/fields/filters/providers/mysql.d.ts.map +1 -0
  162. package/dist/declarations/src/fields/filters/providers/postgresql.d.ts +182 -0
  163. package/dist/declarations/src/fields/filters/providers/postgresql.d.ts.map +1 -0
  164. package/dist/declarations/src/fields/filters/providers/sqlite.d.ts +179 -0
  165. package/dist/declarations/src/fields/filters/providers/sqlite.d.ts.map +1 -0
  166. package/dist/declarations/src/fields/index.d.ts +35 -0
  167. package/dist/declarations/src/fields/index.d.ts.map +1 -0
  168. package/dist/declarations/src/fields/types/bigInt/index.d.ts +20 -0
  169. package/dist/declarations/src/fields/types/bigInt/index.d.ts.map +1 -0
  170. package/dist/declarations/src/fields/types/bigInt/views/index.d.ts +24 -0
  171. package/dist/declarations/src/fields/types/bigInt/views/index.d.ts.map +1 -0
  172. package/dist/declarations/src/fields/types/bytes/index.d.ts +70 -0
  173. package/dist/declarations/src/fields/types/bytes/index.d.ts.map +1 -0
  174. package/dist/declarations/src/fields/types/bytes/views/index.d.ts +24 -0
  175. package/dist/declarations/src/fields/types/bytes/views/index.d.ts.map +1 -0
  176. package/dist/declarations/src/fields/types/calendarDay/index.d.ts +15 -0
  177. package/dist/declarations/src/fields/types/calendarDay/index.d.ts.map +1 -0
  178. package/dist/declarations/src/fields/types/calendarDay/views/index.d.ts +18 -0
  179. package/dist/declarations/src/fields/types/calendarDay/views/index.d.ts.map +1 -0
  180. package/dist/declarations/src/fields/types/checkbox/index.d.ts +11 -0
  181. package/dist/declarations/src/fields/types/checkbox/index.d.ts.map +1 -0
  182. package/dist/declarations/src/fields/types/checkbox/views/index.d.ts +9 -0
  183. package/dist/declarations/src/fields/types/checkbox/views/index.d.ts.map +1 -0
  184. package/dist/declarations/src/fields/types/decimal/index.d.ts +20 -0
  185. package/dist/declarations/src/fields/types/decimal/index.d.ts.map +1 -0
  186. package/dist/declarations/src/fields/types/decimal/views/index.d.ts +22 -0
  187. package/dist/declarations/src/fields/types/decimal/views/index.d.ts.map +1 -0
  188. package/dist/declarations/src/fields/types/file/index.d.ts +34 -0
  189. package/dist/declarations/src/fields/types/file/index.d.ts.map +1 -0
  190. package/dist/declarations/src/fields/types/file/views/Field.d.ts +17 -0
  191. package/dist/declarations/src/fields/types/file/views/Field.d.ts.map +1 -0
  192. package/dist/declarations/src/fields/types/file/views/index.d.ts +29 -0
  193. package/dist/declarations/src/fields/types/file/views/index.d.ts.map +1 -0
  194. package/dist/declarations/src/fields/types/float/index.d.ts +18 -0
  195. package/dist/declarations/src/fields/types/float/index.d.ts.map +1 -0
  196. package/dist/declarations/src/fields/types/float/views/index.d.ts +22 -0
  197. package/dist/declarations/src/fields/types/float/views/index.d.ts.map +1 -0
  198. package/dist/declarations/src/fields/types/image/index.d.ts +34 -0
  199. package/dist/declarations/src/fields/types/image/index.d.ts.map +1 -0
  200. package/dist/declarations/src/fields/types/image/utils.d.ts +2 -0
  201. package/dist/declarations/src/fields/types/image/utils.d.ts.map +1 -0
  202. package/dist/declarations/src/fields/types/image/views/Field.d.ts +4 -0
  203. package/dist/declarations/src/fields/types/image/views/Field.d.ts.map +1 -0
  204. package/dist/declarations/src/fields/types/image/views/index.d.ts +49 -0
  205. package/dist/declarations/src/fields/types/image/views/index.d.ts.map +1 -0
  206. package/dist/declarations/src/fields/types/integer/index.d.ts +20 -0
  207. package/dist/declarations/src/fields/types/integer/index.d.ts.map +1 -0
  208. package/dist/declarations/src/fields/types/integer/views/index.d.ts +23 -0
  209. package/dist/declarations/src/fields/types/integer/views/index.d.ts.map +1 -0
  210. package/dist/declarations/src/fields/types/json/index.d.ts +25 -0
  211. package/dist/declarations/src/fields/types/json/index.d.ts.map +1 -0
  212. package/dist/declarations/src/fields/types/json/views/index.d.ts +9 -0
  213. package/dist/declarations/src/fields/types/json/views/index.d.ts.map +1 -0
  214. package/dist/declarations/src/fields/types/multiselect/index.d.ts +50 -0
  215. package/dist/declarations/src/fields/types/multiselect/index.d.ts.map +1 -0
  216. package/dist/declarations/src/fields/types/multiselect/views/index.d.ts +26 -0
  217. package/dist/declarations/src/fields/types/multiselect/views/index.d.ts.map +1 -0
  218. package/dist/declarations/src/fields/types/password/index.d.ts +49 -0
  219. package/dist/declarations/src/fields/types/password/index.d.ts.map +1 -0
  220. package/dist/declarations/src/fields/types/password/views/index.d.ts +47 -0
  221. package/dist/declarations/src/fields/types/password/views/index.d.ts.map +1 -0
  222. package/dist/declarations/src/fields/types/relationship/index.d.ts +113 -0
  223. package/dist/declarations/src/fields/types/relationship/index.d.ts.map +1 -0
  224. package/dist/declarations/src/fields/types/relationship/views/ComboboxMany.d.ts +26 -0
  225. package/dist/declarations/src/fields/types/relationship/views/ComboboxMany.d.ts.map +1 -0
  226. package/dist/declarations/src/fields/types/relationship/views/ComboboxSingle.d.ts +24 -0
  227. package/dist/declarations/src/fields/types/relationship/views/ComboboxSingle.d.ts.map +1 -0
  228. package/dist/declarations/src/fields/types/relationship/views/index.d.ts +27 -0
  229. package/dist/declarations/src/fields/types/relationship/views/index.d.ts.map +1 -0
  230. package/dist/declarations/src/fields/types/relationship/views/types.d.ts +39 -0
  231. package/dist/declarations/src/fields/types/relationship/views/types.d.ts.map +1 -0
  232. package/dist/declarations/src/fields/types/select/index.d.ts +42 -0
  233. package/dist/declarations/src/fields/types/select/index.d.ts.map +1 -0
  234. package/dist/declarations/src/fields/types/select/views/index.d.ts +32 -0
  235. package/dist/declarations/src/fields/types/select/views/index.d.ts.map +1 -0
  236. package/dist/declarations/src/fields/types/text/index.d.ts +58 -0
  237. package/dist/declarations/src/fields/types/text/index.d.ts.map +1 -0
  238. package/dist/declarations/src/fields/types/text/views/index.d.ts +36 -0
  239. package/dist/declarations/src/fields/types/text/views/index.d.ts.map +1 -0
  240. package/dist/declarations/src/fields/types/timestamp/index.d.ts +19 -0
  241. package/dist/declarations/src/fields/types/timestamp/index.d.ts.map +1 -0
  242. package/dist/declarations/src/fields/types/timestamp/views/index.d.ts +14 -0
  243. package/dist/declarations/src/fields/types/timestamp/views/index.d.ts.map +1 -0
  244. package/dist/declarations/src/fields/types/timestamp/views/utils.d.ts +14 -0
  245. package/dist/declarations/src/fields/types/timestamp/views/utils.d.ts.map +1 -0
  246. package/dist/declarations/src/fields/types/virtual/index.d.ts +40 -0
  247. package/dist/declarations/src/fields/types/virtual/index.d.ts.map +1 -0
  248. package/dist/declarations/src/fields/types/virtual/views/index.d.ts +7 -0
  249. package/dist/declarations/src/fields/types/virtual/views/index.d.ts.map +1 -0
  250. package/dist/declarations/src/graphql-ts.d.ts +5 -0
  251. package/dist/declarations/src/graphql-ts.d.ts.map +1 -0
  252. package/dist/declarations/src/helpers.d.ts +121 -0
  253. package/dist/declarations/src/helpers.d.ts.map +1 -0
  254. package/dist/declarations/src/index.d.ts +6 -0
  255. package/dist/declarations/src/index.d.ts.map +1 -0
  256. package/dist/declarations/src/lib/admin-meta.d.ts +71 -0
  257. package/dist/declarations/src/lib/admin-meta.d.ts.map +1 -0
  258. package/dist/declarations/src/lib/core/access-control.d.ts +39 -0
  259. package/dist/declarations/src/lib/core/access-control.d.ts.map +1 -0
  260. package/dist/declarations/src/lib/core/initialise-lists.d.ts +131 -0
  261. package/dist/declarations/src/lib/core/initialise-lists.d.ts.map +1 -0
  262. package/dist/declarations/src/lib/core/resolve-relationships.d.ts +30 -0
  263. package/dist/declarations/src/lib/core/resolve-relationships.d.ts.map +1 -0
  264. package/dist/declarations/src/lib/core/where-inputs.d.ts +15 -0
  265. package/dist/declarations/src/lib/core/where-inputs.d.ts.map +1 -0
  266. package/dist/declarations/src/lib/express.d.ts +10 -0
  267. package/dist/declarations/src/lib/express.d.ts.map +1 -0
  268. package/dist/declarations/src/lib/migrations.d.ts +13 -0
  269. package/dist/declarations/src/lib/migrations.d.ts.map +1 -0
  270. package/dist/declarations/src/lib/system.d.ts +35 -0
  271. package/dist/declarations/src/lib/system.d.ts.map +1 -0
  272. package/dist/declarations/src/schema.d.ts +40 -0
  273. package/dist/declarations/src/schema.d.ts.map +1 -0
  274. package/dist/declarations/src/scripts/cli.d.ts +11 -0
  275. package/dist/declarations/src/scripts/cli.d.ts.map +1 -0
  276. package/dist/declarations/src/scripts/index.d.ts +2 -0
  277. package/dist/declarations/src/scripts/index.d.ts.map +1 -0
  278. package/dist/declarations/src/scripts/utils.d.ts +7 -0
  279. package/dist/declarations/src/scripts/utils.d.ts.map +1 -0
  280. package/dist/declarations/src/session.d.ts +86 -0
  281. package/dist/declarations/src/session.d.ts.map +1 -0
  282. package/dist/declarations/src/testing.d.ts +2 -0
  283. package/dist/declarations/src/testing.d.ts.map +1 -0
  284. package/dist/declarations/src/types/admin-meta.d.ts +190 -0
  285. package/dist/declarations/src/types/admin-meta.d.ts.map +1 -0
  286. package/dist/declarations/src/types/config/access-control.d.ts +108 -0
  287. package/dist/declarations/src/types/config/access-control.d.ts.map +1 -0
  288. package/dist/declarations/src/types/config/fields.d.ts +67 -0
  289. package/dist/declarations/src/types/config/fields.d.ts.map +1 -0
  290. package/dist/declarations/src/types/config/hooks.d.ts +441 -0
  291. package/dist/declarations/src/types/config/hooks.d.ts.map +1 -0
  292. package/dist/declarations/src/types/config/index.d.ts +283 -0
  293. package/dist/declarations/src/types/config/index.d.ts.map +1 -0
  294. package/dist/declarations/src/types/config/lists.d.ts +430 -0
  295. package/dist/declarations/src/types/config/lists.d.ts.map +1 -0
  296. package/dist/declarations/src/types/context.d.ts +458 -0
  297. package/dist/declarations/src/types/context.d.ts.map +1 -0
  298. package/dist/declarations/src/types/core.d.ts +9 -0
  299. package/dist/declarations/src/types/core.d.ts.map +1 -0
  300. package/dist/declarations/src/types/index.d.ts +9 -0
  301. package/dist/declarations/src/types/index.d.ts.map +1 -0
  302. package/dist/declarations/src/types/next-fields.d.ts +308 -0
  303. package/dist/declarations/src/types/next-fields.d.ts.map +1 -0
  304. package/dist/declarations/src/types/prisma.d.ts +13 -0
  305. package/dist/declarations/src/types/prisma.d.ts.map +1 -0
  306. package/dist/declarations/src/types/schema/g.d.ts +7 -0
  307. package/dist/declarations/src/types/schema/g.d.ts.map +1 -0
  308. package/dist/declarations/src/types/schema/gWithContext.d.ts +12 -0
  309. package/dist/declarations/src/types/schema/gWithContext.d.ts.map +1 -0
  310. package/dist/declarations/src/types/schema/index.d.ts +4 -0
  311. package/dist/declarations/src/types/schema/index.d.ts.map +1 -0
  312. package/dist/declarations/src/types/schema/legacy-alias.d.ts +28 -0
  313. package/dist/declarations/src/types/schema/scalars.d.ts +22 -0
  314. package/dist/declarations/src/types/schema/scalars.d.ts.map +1 -0
  315. package/dist/declarations/src/types/session.d.ts +28 -0
  316. package/dist/declarations/src/types/session.d.ts.map +1 -0
  317. package/dist/declarations/src/types/type-info.d.ts +35 -0
  318. package/dist/declarations/src/types/type-info.d.ts.map +1 -0
  319. package/dist/declarations/src/types/utils.d.ts +78 -0
  320. package/dist/declarations/src/types/utils.d.ts.map +1 -0
  321. package/dist/declarations/types/dist/nixxie-cms-core-types.cjs.d.ts +2 -0
  322. package/dist/express-6743b918.esm.js +476 -0
  323. package/dist/express-e9ed9a7d.cjs.js +495 -0
  324. package/dist/filters-8c8616f9.esm.js +89 -0
  325. package/dist/filters-b3e5eb50.cjs.js +96 -0
  326. package/dist/index-24b78415.esm.js +419 -0
  327. package/dist/index-ac01583b.cjs.js +425 -0
  328. package/dist/migrations-996e66a0.esm.js +76 -0
  329. package/dist/migrations-ab2e0fd4.cjs.js +78 -0
  330. package/dist/next-fields-49c025ef.cjs.js +251 -0
  331. package/dist/next-fields-9bf04ed8.esm.js +241 -0
  332. package/dist/nixxie-cms-core.cjs.d.ts +2 -0
  333. package/dist/nixxie-cms-core.cjs.js +522 -0
  334. package/dist/nixxie-cms-core.esm.js +504 -0
  335. package/dist/non-null-graphql-17b83ddc.cjs.js +72 -0
  336. package/dist/non-null-graphql-5315718c.esm.js +67 -0
  337. package/dist/pick-5fe45878.cjs.js +71 -0
  338. package/dist/pick-b7ef3115.esm.js +68 -0
  339. package/dist/resolve-hooks-17aafd37.esm.js +2026 -0
  340. package/dist/resolve-hooks-66fe8a8e.cjs.js +2043 -0
  341. package/dist/system-48c5f6df.cjs.js +4283 -0
  342. package/dist/system-dfec2f0a.esm.js +4273 -0
  343. package/dist/useCreateItem-1be4987e.cjs.js +160 -0
  344. package/dist/useCreateItem-1f94d252.esm.js +157 -0
  345. package/dist/useFilter-0b5a1ee6.esm.js +118 -0
  346. package/dist/useFilter-1a4e6900.cjs.js +120 -0
  347. package/dist/utils-0cc426c8.esm.js +19 -0
  348. package/dist/utils-1b632a8f.cjs.js +21 -0
  349. package/dist/utils-230cddb1.cjs.js +150 -0
  350. package/dist/utils-5e1d4d28.esm.js +138 -0
  351. package/dist/utils-b031e11c.cjs.js +49 -0
  352. package/dist/utils-e74e3527.cjs.js +87 -0
  353. package/dist/utils-ef2cd0f4.esm.js +80 -0
  354. package/dist/utils-f9556354.esm.js +41 -0
  355. package/fields/dist/nixxie-cms-core-fields.cjs.d.ts +2 -0
  356. package/fields/dist/nixxie-cms-core-fields.cjs.js +1808 -0
  357. package/fields/dist/nixxie-cms-core-fields.esm.js +1785 -0
  358. package/fields/package.json +4 -0
  359. package/fields/types/bigInt/views/dist/nixxie-cms-core-fields-types-bigInt-views.cjs.d.ts +2 -0
  360. package/fields/types/bigInt/views/dist/nixxie-cms-core-fields-types-bigInt-views.cjs.js +258 -0
  361. package/fields/types/bigInt/views/dist/nixxie-cms-core-fields-types-bigInt-views.esm.js +253 -0
  362. package/fields/types/bigInt/views/package.json +4 -0
  363. package/fields/types/bytes/dist/nixxie-cms-core-fields-types-bytes.cjs.d.ts +2 -0
  364. package/fields/types/bytes/dist/nixxie-cms-core-fields-types-bytes.cjs.js +221 -0
  365. package/fields/types/bytes/dist/nixxie-cms-core-fields-types-bytes.esm.js +216 -0
  366. package/fields/types/bytes/package.json +4 -0
  367. package/fields/types/bytes/views/dist/nixxie-cms-core-fields-types-bytes-views.cjs.d.ts +2 -0
  368. package/fields/types/bytes/views/dist/nixxie-cms-core-fields-types-bytes-views.cjs.js +239 -0
  369. package/fields/types/bytes/views/dist/nixxie-cms-core-fields-types-bytes-views.esm.js +234 -0
  370. package/fields/types/bytes/views/package.json +4 -0
  371. package/fields/types/calendarDay/views/dist/nixxie-cms-core-fields-types-calendarDay-views.cjs.d.ts +2 -0
  372. package/fields/types/calendarDay/views/dist/nixxie-cms-core-fields-types-calendarDay-views.cjs.js +147 -0
  373. package/fields/types/calendarDay/views/dist/nixxie-cms-core-fields-types-calendarDay-views.esm.js +141 -0
  374. package/fields/types/calendarDay/views/package.json +4 -0
  375. package/fields/types/checkbox/views/dist/nixxie-cms-core-fields-types-checkbox-views.cjs.d.ts +2 -0
  376. package/fields/types/checkbox/views/dist/nixxie-cms-core-fields-types-checkbox-views.cjs.js +126 -0
  377. package/fields/types/checkbox/views/dist/nixxie-cms-core-fields-types-checkbox-views.esm.js +120 -0
  378. package/fields/types/checkbox/views/package.json +4 -0
  379. package/fields/types/decimal/views/dist/nixxie-cms-core-fields-types-decimal-views.cjs.d.ts +2 -0
  380. package/fields/types/decimal/views/dist/nixxie-cms-core-fields-types-decimal-views.cjs.js +248 -0
  381. package/fields/types/decimal/views/dist/nixxie-cms-core-fields-types-decimal-views.esm.js +239 -0
  382. package/fields/types/decimal/views/package.json +4 -0
  383. package/fields/types/file/utils/package.json +4 -0
  384. package/fields/types/file/views/dist/nixxie-cms-core-fields-types-file-views.cjs.d.ts +2 -0
  385. package/fields/types/file/views/dist/nixxie-cms-core-fields-types-file-views.cjs.js +86 -0
  386. package/fields/types/file/views/dist/nixxie-cms-core-fields-types-file-views.esm.js +81 -0
  387. package/fields/types/file/views/package.json +4 -0
  388. package/fields/types/float/views/dist/nixxie-cms-core-fields-types-float-views.cjs.d.ts +2 -0
  389. package/fields/types/float/views/dist/nixxie-cms-core-fields-types-float-views.cjs.js +237 -0
  390. package/fields/types/float/views/dist/nixxie-cms-core-fields-types-float-views.esm.js +232 -0
  391. package/fields/types/float/views/package.json +4 -0
  392. package/fields/types/image/utils/dist/nixxie-cms-core-fields-types-image-utils.cjs.d.ts +2 -0
  393. package/fields/types/image/utils/dist/nixxie-cms-core-fields-types-image-utils.cjs.js +7 -0
  394. package/fields/types/image/utils/dist/nixxie-cms-core-fields-types-image-utils.esm.js +3 -0
  395. package/fields/types/image/utils/package.json +4 -0
  396. package/fields/types/image/views/dist/nixxie-cms-core-fields-types-image-views.cjs.d.ts +2 -0
  397. package/fields/types/image/views/dist/nixxie-cms-core-fields-types-image-views.cjs.js +361 -0
  398. package/fields/types/image/views/dist/nixxie-cms-core-fields-types-image-views.esm.js +354 -0
  399. package/fields/types/image/views/package.json +4 -0
  400. package/fields/types/integer/views/dist/nixxie-cms-core-fields-types-integer-views.cjs.d.ts +2 -0
  401. package/fields/types/integer/views/dist/nixxie-cms-core-fields-types-integer-views.cjs.js +254 -0
  402. package/fields/types/integer/views/dist/nixxie-cms-core-fields-types-integer-views.esm.js +249 -0
  403. package/fields/types/integer/views/package.json +4 -0
  404. package/fields/types/json/views/dist/nixxie-cms-core-fields-types-json-views.cjs.d.ts +2 -0
  405. package/fields/types/json/views/dist/nixxie-cms-core-fields-types-json-views.cjs.js +83 -0
  406. package/fields/types/json/views/dist/nixxie-cms-core-fields-types-json-views.esm.js +77 -0
  407. package/fields/types/json/views/package.json +4 -0
  408. package/fields/types/multiselect/views/dist/nixxie-cms-core-fields-types-multiselect-views.cjs.d.ts +2 -0
  409. package/fields/types/multiselect/views/dist/nixxie-cms-core-fields-types-multiselect-views.cjs.js +147 -0
  410. package/fields/types/multiselect/views/dist/nixxie-cms-core-fields-types-multiselect-views.esm.js +141 -0
  411. package/fields/types/multiselect/views/package.json +4 -0
  412. package/fields/types/password/dist/nixxie-cms-core-fields-types-password.cjs.d.ts +2 -0
  413. package/fields/types/password/dist/nixxie-cms-core-fields-types-password.cjs.js +206 -0
  414. package/fields/types/password/dist/nixxie-cms-core-fields-types-password.esm.js +196 -0
  415. package/fields/types/password/package.json +4 -0
  416. package/fields/types/password/views/dist/nixxie-cms-core-fields-types-password-views.cjs.d.ts +2 -0
  417. package/fields/types/password/views/dist/nixxie-cms-core-fields-types-password-views.cjs.js +330 -0
  418. package/fields/types/password/views/dist/nixxie-cms-core-fields-types-password-views.esm.js +320 -0
  419. package/fields/types/password/views/package.json +4 -0
  420. package/fields/types/relationship/views/RelationshipSelect/package.json +4 -0
  421. package/fields/types/relationship/views/dist/nixxie-cms-core-fields-types-relationship-views.cjs.d.ts +2 -0
  422. package/fields/types/relationship/views/dist/nixxie-cms-core-fields-types-relationship-views.cjs.js +1213 -0
  423. package/fields/types/relationship/views/dist/nixxie-cms-core-fields-types-relationship-views.esm.js +1201 -0
  424. package/fields/types/relationship/views/package.json +4 -0
  425. package/fields/types/select/views/dist/nixxie-cms-core-fields-types-select-views.cjs.d.ts +2 -0
  426. package/fields/types/select/views/dist/nixxie-cms-core-fields-types-select-views.cjs.js +422 -0
  427. package/fields/types/select/views/dist/nixxie-cms-core-fields-types-select-views.esm.js +416 -0
  428. package/fields/types/select/views/package.json +4 -0
  429. package/fields/types/text/views/dist/nixxie-cms-core-fields-types-text-views.cjs.d.ts +2 -0
  430. package/fields/types/text/views/dist/nixxie-cms-core-fields-types-text-views.cjs.js +316 -0
  431. package/fields/types/text/views/dist/nixxie-cms-core-fields-types-text-views.esm.js +311 -0
  432. package/fields/types/text/views/package.json +4 -0
  433. package/fields/types/timestamp/views/dist/nixxie-cms-core-fields-types-timestamp-views.cjs.d.ts +2 -0
  434. package/fields/types/timestamp/views/dist/nixxie-cms-core-fields-types-timestamp-views.cjs.js +285 -0
  435. package/fields/types/timestamp/views/dist/nixxie-cms-core-fields-types-timestamp-views.esm.js +279 -0
  436. package/fields/types/timestamp/views/package.json +4 -0
  437. package/fields/types/virtual/views/dist/nixxie-cms-core-fields-types-virtual-views.cjs.d.ts +2 -0
  438. package/fields/types/virtual/views/dist/nixxie-cms-core-fields-types-virtual-views.cjs.js +54 -0
  439. package/fields/types/virtual/views/dist/nixxie-cms-core-fields-types-virtual-views.esm.js +48 -0
  440. package/fields/types/virtual/views/package.json +4 -0
  441. package/graphql-ts/dist/nixxie-cms-core-graphql-ts.cjs.d.ts +2 -0
  442. package/graphql-ts/dist/nixxie-cms-core-graphql-ts.cjs.js +45 -0
  443. package/graphql-ts/dist/nixxie-cms-core-graphql-ts.esm.js +2 -0
  444. package/graphql-ts/package.json +4 -0
  445. package/package.json +339 -0
  446. package/schema/package.json +4 -0
  447. package/scripts/cli/dist/nixxie-cms-core-scripts-cli.cjs.d.ts +2 -0
  448. package/scripts/cli/dist/nixxie-cms-core-scripts-cli.cjs.js +1607 -0
  449. package/scripts/cli/dist/nixxie-cms-core-scripts-cli.esm.js +1586 -0
  450. package/scripts/cli/package.json +4 -0
  451. package/scripts/dist/nixxie-cms-core-scripts.cjs.d.ts +2 -0
  452. package/scripts/dist/nixxie-cms-core-scripts.cjs.js +73 -0
  453. package/scripts/dist/nixxie-cms-core-scripts.esm.js +71 -0
  454. package/scripts/package.json +4 -0
  455. package/session/dist/nixxie-cms-core-session.cjs.d.ts +2 -0
  456. package/session/dist/nixxie-cms-core-session.cjs.js +157 -0
  457. package/session/dist/nixxie-cms-core-session.esm.js +129 -0
  458. package/session/package.json +4 -0
  459. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view.tsx +167 -0
  460. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/index.tsx +22 -0
  461. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/index.tsx +71 -0
  462. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/index.tsx +333 -0
  463. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/common.tsx +358 -0
  464. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/index.tsx +483 -0
  465. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/FilterAdd.tsx +221 -0
  466. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/PaginationControls.tsx +170 -0
  467. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/Tag.tsx +72 -0
  468. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/index.tsx +1006 -0
  469. package/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/index.tsx +24 -0
  470. package/src/___internal-do-not-use-will-break-in-patch/artifacts.ts +5 -0
  471. package/src/access.ts +25 -0
  472. package/src/admin-ui/admin-meta-graphql.ts +168 -0
  473. package/src/admin-ui/apollo.tsx +35 -0
  474. package/src/admin-ui/components/CellContainer.tsx +6 -0
  475. package/src/admin-ui/components/CommandPalette.tsx +431 -0
  476. package/src/admin-ui/components/Container.tsx +14 -0
  477. package/src/admin-ui/components/CreateButtonLink.tsx +46 -0
  478. package/src/admin-ui/components/CreateItemDialog.tsx +56 -0
  479. package/src/admin-ui/components/EmptyState.tsx +52 -0
  480. package/src/admin-ui/components/Errors.tsx +130 -0
  481. package/src/admin-ui/components/GraphQLErrorNotice.tsx +78 -0
  482. package/src/admin-ui/components/InlineCode.tsx +17 -0
  483. package/src/admin-ui/components/Logo.tsx +70 -0
  484. package/src/admin-ui/components/Navigation.tsx +385 -0
  485. package/src/admin-ui/components/NullableFieldWrapper.tsx +72 -0
  486. package/src/admin-ui/components/PageContainer.tsx +310 -0
  487. package/src/admin-ui/components/WelcomeDialog.tsx +119 -0
  488. package/src/admin-ui/components/index.ts +23 -0
  489. package/src/admin-ui/context.tsx +338 -0
  490. package/src/admin-ui/image.tsx +2 -0
  491. package/src/admin-ui/index.tsx +1 -0
  492. package/src/admin-ui/router.tsx +24 -0
  493. package/src/admin-ui/system/generateAdminUI.ts +155 -0
  494. package/src/admin-ui/system/index.ts +1 -0
  495. package/src/admin-ui/templates/app.ts +60 -0
  496. package/src/admin-ui/templates/create-item.ts +5 -0
  497. package/src/admin-ui/templates/home.ts +2 -0
  498. package/src/admin-ui/templates/index.ts +53 -0
  499. package/src/admin-ui/templates/item.tsx +5 -0
  500. package/src/admin-ui/templates/list.tsx +5 -0
  501. package/src/admin-ui/templates/next-config.ts +16 -0
  502. package/src/admin-ui/templates/no-access.ts +7 -0
  503. package/src/admin-ui/utils/Fields.tsx +241 -0
  504. package/src/admin-ui/utils/actionData.ts +36 -0
  505. package/src/admin-ui/utils/filters.ts +148 -0
  506. package/src/admin-ui/utils/index.ts +10 -0
  507. package/src/admin-ui/utils/pick.ts +12 -0
  508. package/src/admin-ui/utils/useCreateItem.ts +171 -0
  509. package/src/admin-ui/utils/usePreventNavigation.tsx +31 -0
  510. package/src/admin-ui/utils/utils.tsx +127 -0
  511. package/src/artifacts.ts +110 -0
  512. package/src/context.ts +1 -0
  513. package/src/fields/filters/enum-filter.ts +77 -0
  514. package/src/fields/filters/index.ts +1 -0
  515. package/src/fields/filters/internal.ts +89 -0
  516. package/src/fields/filters/providers/mysql.ts +450 -0
  517. package/src/fields/filters/providers/postgresql.ts +448 -0
  518. package/src/fields/filters/providers/sqlite.ts +442 -0
  519. package/src/fields/index.ts +34 -0
  520. package/src/fields/non-null-graphql.ts +115 -0
  521. package/src/fields/resolve-hooks.ts +61 -0
  522. package/src/fields/types/bigInt/index.ts +181 -0
  523. package/src/fields/types/bigInt/views/index.tsx +254 -0
  524. package/src/fields/types/bytes/index.ts +275 -0
  525. package/src/fields/types/bytes/views/index.tsx +190 -0
  526. package/src/fields/types/calendarDay/index.ts +194 -0
  527. package/src/fields/types/calendarDay/views/index.tsx +144 -0
  528. package/src/fields/types/checkbox/index.ts +76 -0
  529. package/src/fields/types/checkbox/views/index.tsx +97 -0
  530. package/src/fields/types/decimal/index.ts +182 -0
  531. package/src/fields/types/decimal/views/index.tsx +215 -0
  532. package/src/fields/types/file/index.ts +168 -0
  533. package/src/fields/types/file/views/Field.tsx +300 -0
  534. package/src/fields/types/file/views/index.tsx +74 -0
  535. package/src/fields/types/float/index.ts +133 -0
  536. package/src/fields/types/float/views/index.tsx +215 -0
  537. package/src/fields/types/image/index.ts +244 -0
  538. package/src/fields/types/image/internal-utils.ts +58 -0
  539. package/src/fields/types/image/utils.ts +1 -0
  540. package/src/fields/types/image/views/Field.tsx +295 -0
  541. package/src/fields/types/image/views/index.tsx +92 -0
  542. package/src/fields/types/integer/index.ts +156 -0
  543. package/src/fields/types/integer/views/index.tsx +255 -0
  544. package/src/fields/types/json/index.ts +77 -0
  545. package/src/fields/types/json/views/index.tsx +76 -0
  546. package/src/fields/types/multiselect/index.ts +212 -0
  547. package/src/fields/types/multiselect/views/index.tsx +151 -0
  548. package/src/fields/types/password/index.ts +241 -0
  549. package/src/fields/types/password/views/index.tsx +342 -0
  550. package/src/fields/types/relationship/index.ts +381 -0
  551. package/src/fields/types/relationship/views/ComboboxMany.tsx +110 -0
  552. package/src/fields/types/relationship/views/ComboboxSingle.tsx +115 -0
  553. package/src/fields/types/relationship/views/ContextualActions.tsx +139 -0
  554. package/src/fields/types/relationship/views/RelationshipTable.tsx +190 -0
  555. package/src/fields/types/relationship/views/index.tsx +492 -0
  556. package/src/fields/types/relationship/views/types.ts +46 -0
  557. package/src/fields/types/relationship/views/useApolloQuery.ts +185 -0
  558. package/src/fields/types/relationship/views/useFilter.tsx +109 -0
  559. package/src/fields/types/select/index.ts +226 -0
  560. package/src/fields/types/select/views/SegmentedControl.tsx +83 -0
  561. package/src/fields/types/select/views/index.tsx +318 -0
  562. package/src/fields/types/text/index.ts +207 -0
  563. package/src/fields/types/text/views/index.tsx +273 -0
  564. package/src/fields/types/timestamp/index.ts +116 -0
  565. package/src/fields/types/timestamp/views/__tests__/index.tsx +68 -0
  566. package/src/fields/types/timestamp/views/__tests__/utils.tsx +16 -0
  567. package/src/fields/types/timestamp/views/index.tsx +262 -0
  568. package/src/fields/types/timestamp/views/utils.ts +22 -0
  569. package/src/fields/types/virtual/index.ts +108 -0
  570. package/src/fields/types/virtual/views/index.tsx +53 -0
  571. package/src/graphql-ts.ts +32 -0
  572. package/src/helpers.ts +316 -0
  573. package/src/index.ts +20 -0
  574. package/src/lib/admin-meta-graphql.ts +407 -0
  575. package/src/lib/admin-meta.ts +369 -0
  576. package/src/lib/coerceAndValidateForGraphQLInput.ts +29 -0
  577. package/src/lib/context/api.ts +99 -0
  578. package/src/lib/context/createContext.ts +161 -0
  579. package/src/lib/context/graphql.ts +300 -0
  580. package/src/lib/core/access-control.ts +434 -0
  581. package/src/lib/core/field-assertions.ts +118 -0
  582. package/src/lib/core/filter-order-access.ts +48 -0
  583. package/src/lib/core/graphql-errors.ts +76 -0
  584. package/src/lib/core/hooks.ts +111 -0
  585. package/src/lib/core/initialise-lists.ts +1097 -0
  586. package/src/lib/core/mutations/index.ts +917 -0
  587. package/src/lib/core/mutations/nested-mutation-many-input-resolvers.ts +145 -0
  588. package/src/lib/core/mutations/nested-mutation-one-input-resolvers.ts +71 -0
  589. package/src/lib/core/prisma-schema-printer.ts +256 -0
  590. package/src/lib/core/queries/index.ts +66 -0
  591. package/src/lib/core/queries/output-field.ts +178 -0
  592. package/src/lib/core/queries/resolvers.ts +258 -0
  593. package/src/lib/core/resolve-relationships.ts +303 -0
  594. package/src/lib/core/utils.ts +56 -0
  595. package/src/lib/core/where-inputs.ts +130 -0
  596. package/src/lib/express.ts +109 -0
  597. package/src/lib/graphql.ts +83 -0
  598. package/src/lib/id-field.ts +214 -0
  599. package/src/lib/middleware.ts +68 -0
  600. package/src/lib/migrations.ts +90 -0
  601. package/src/lib/otel.ts +43 -0
  602. package/src/lib/prompts.ts +29 -0
  603. package/src/lib/system.ts +207 -0
  604. package/src/lib/telemetry.ts +342 -0
  605. package/src/lib/typescript-schema-printer.ts +227 -0
  606. package/src/lib/utils.ts +21 -0
  607. package/src/pkg-dir.ts +6 -0
  608. package/src/schema.ts +233 -0
  609. package/src/scripts/build.ts +64 -0
  610. package/src/scripts/cli.ts +124 -0
  611. package/src/scripts/dev.ts +452 -0
  612. package/src/scripts/esbuild.ts +120 -0
  613. package/src/scripts/index.ts +20 -0
  614. package/src/scripts/migrate.ts +214 -0
  615. package/src/scripts/prisma.ts +49 -0
  616. package/src/scripts/start.ts +76 -0
  617. package/src/scripts/telemetry.ts +37 -0
  618. package/src/scripts/utils.ts +22 -0
  619. package/src/session.ts +168 -0
  620. package/src/testing.ts +23 -0
  621. package/src/types/admin-meta.ts +218 -0
  622. package/src/types/config/access-control.ts +186 -0
  623. package/src/types/config/fields.ts +96 -0
  624. package/src/types/config/hooks.ts +529 -0
  625. package/src/types/config/index.ts +333 -0
  626. package/src/types/config/lists.ts +565 -0
  627. package/src/types/context.ts +530 -0
  628. package/src/types/core.ts +16 -0
  629. package/src/types/index.ts +8 -0
  630. package/src/types/next-fields.ts +499 -0
  631. package/src/types/prisma.ts +16 -0
  632. package/src/types/schema/g.ts +5 -0
  633. package/src/types/schema/gWithContext.ts +20 -0
  634. package/src/types/schema/index.ts +4 -0
  635. package/src/types/schema/legacy-alias.d.ts +28 -0
  636. package/src/types/schema/legacy-alias.js +1 -0
  637. package/src/types/schema/scalars.ts +220 -0
  638. package/src/types/session.ts +26 -0
  639. package/src/types/telemetry.ts +51 -0
  640. package/src/types/type-info.ts +38 -0
  641. package/src/types/type-tests.ts +21 -0
  642. package/src/types/utils.ts +108 -0
  643. package/static/admin-error.html +53 -0
  644. package/static/dev-loading.html +146 -0
  645. package/static/favicon.ico +0 -0
  646. package/static/favicon.svg +4 -0
  647. package/system/package.json +4 -0
  648. package/testing/dist/nixxie-cms-core-testing.cjs.d.ts +2 -0
  649. package/testing/dist/nixxie-cms-core-testing.cjs.js +29 -0
  650. package/testing/dist/nixxie-cms-core-testing.esm.js +21 -0
  651. package/testing/package.json +4 -0
  652. package/tests/conditional-filters.test.ts +326 -0
  653. package/tests/telemetry.test.ts +361 -0
  654. package/tsconfig.json +20 -0
  655. package/types/dist/nixxie-cms-core-types.cjs.d.ts +2 -0
  656. package/types/dist/nixxie-cms-core-types.cjs.js +29 -0
  657. package/types/dist/nixxie-cms-core-types.esm.js +9 -0
  658. package/types/package.json +4 -0
@@ -0,0 +1,1808 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var resolveHooks = require('../../dist/resolve-hooks-66fe8a8e.cjs.js');
6
+ require('pluralize');
7
+ var nextFields = require('../../dist/next-fields-49c025ef.cjs.js');
8
+ var index = require('../../dist/index-ac01583b.cjs.js');
9
+ var nonNullGraphql = require('../../dist/non-null-graphql-17b83ddc.cjs.js');
10
+ require('node:path');
11
+ var schema = require('@graphql-ts/schema');
12
+ require('@graphql-ts/extend');
13
+ var Decimal = require('decimal.js');
14
+ var node_crypto = require('node:crypto');
15
+ var fields_types_image_utils_dist_nixxieCmsCoreFieldsTypesImageUtils = require('../types/image/utils/dist/nixxie-cms-core-fields-types-image-utils.cjs.js');
16
+ var jpg = require('image-size/types/jpg');
17
+ var png = require('image-size/types/png');
18
+ var webp = require('image-size/types/webp');
19
+ var gif = require('image-size/types/gif');
20
+ var node_stream = require('node:stream');
21
+ var fields_types_password_dist_nixxieCmsCoreFieldsTypesPassword = require('../types/password/dist/nixxie-cms-core-fields-types-password.cjs.js');
22
+ var utils = require('../../dist/utils-1b632a8f.cjs.js');
23
+ var graphql = require('graphql');
24
+ var fields_types_bytes_dist_nixxieCmsCoreFieldsTypesBytes = require('../types/bytes/dist/nixxie-cms-core-fields-types-bytes.cjs.js');
25
+ require('graphql-upload/GraphQLUpload.js');
26
+ require('../../dist/admin-meta-18d0c276.cjs.js');
27
+ require('bcryptjs');
28
+ require('dumb-passwords');
29
+ require('../../dist/utils-b031e11c.cjs.js');
30
+
31
+ function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
32
+
33
+ var Decimal__default = /*#__PURE__*/_interopDefault(Decimal);
34
+
35
+ function checkbox(config = {}) {
36
+ const {
37
+ defaultValue = false
38
+ } = config;
39
+ return meta => {
40
+ var _config$db, _config$db2;
41
+ if (config.isIndexed === 'unique') {
42
+ throw TypeError("isIndexed: 'unique' is not a supported option for field type checkbox");
43
+ }
44
+ nonNullGraphql.assertReadIsNonNullAllowed(meta, config, false);
45
+ return nextFields.fieldType({
46
+ kind: 'scalar',
47
+ mode: 'required',
48
+ scalar: 'Boolean',
49
+ default: {
50
+ kind: 'literal',
51
+ value: defaultValue
52
+ },
53
+ map: (_config$db = config.db) === null || _config$db === void 0 ? void 0 : _config$db.map,
54
+ extendPrismaSchema: (_config$db2 = config.db) === null || _config$db2 === void 0 ? void 0 : _config$db2.extendPrismaSchema
55
+ })({
56
+ ...config,
57
+ input: {
58
+ where: {
59
+ arg: nextFields.g.arg({
60
+ type: index.filters[meta.provider].Boolean.required
61
+ })
62
+ },
63
+ create: {
64
+ arg: nextFields.g.arg({
65
+ type: nextFields.g.Boolean,
66
+ defaultValue: typeof defaultValue === 'boolean' ? defaultValue : undefined
67
+ }),
68
+ resolve(val) {
69
+ if (val === null) throw resolveHooks.userInputError('Checkbox fields cannot be set to null');
70
+ return val !== null && val !== void 0 ? val : defaultValue;
71
+ }
72
+ },
73
+ update: {
74
+ arg: nextFields.g.arg({
75
+ type: nextFields.g.Boolean
76
+ }),
77
+ resolve(val) {
78
+ if (val === null) throw resolveHooks.userInputError('Checkbox fields cannot be set to null');
79
+ return val;
80
+ }
81
+ },
82
+ orderBy: {
83
+ arg: nextFields.g.arg({
84
+ type: nextFields.orderDirectionEnum
85
+ })
86
+ }
87
+ },
88
+ output: nextFields.g.field({
89
+ type: nextFields.g.Boolean
90
+ }),
91
+ __ksTelemetryFieldTypeName: '@nixxie-cms/checkbox',
92
+ views: '@nixxie-cms/core/fields/types/checkbox/views',
93
+ getAdminMeta: () => ({
94
+ defaultValue
95
+ })
96
+ });
97
+ };
98
+ }
99
+
100
+ function safeParseDecimal(value) {
101
+ if (value === null || value === undefined) return value;
102
+ const result = new Decimal__default["default"](value);
103
+ if (!result.isFinite()) throw new Error(`"${value}" is not finite`);
104
+ return result;
105
+ }
106
+
107
+ // TODO: https://github.com/Nixxie/keystatic/blob/main/design-system/pkg/src/number-field/NumberField.tsx
108
+ function decimal(config = {}) {
109
+ var _safeParseDecimal, _safeParseDecimal2;
110
+ const {
111
+ defaultValue: defaultValue_,
112
+ isIndexed,
113
+ precision = 18,
114
+ scale = 4,
115
+ validation = {}
116
+ } = config;
117
+ const {
118
+ isRequired = false,
119
+ min,
120
+ max
121
+ } = validation;
122
+ const defaultValue = typeof defaultValue_ === 'string' ? defaultValue_ : null;
123
+ const parsedDefaultValue = safeParseDecimal(defaultValue);
124
+ const parsedMax = (_safeParseDecimal = safeParseDecimal(max)) !== null && _safeParseDecimal !== void 0 ? _safeParseDecimal : undefined;
125
+ const parsedMin = (_safeParseDecimal2 = safeParseDecimal(min)) !== null && _safeParseDecimal2 !== void 0 ? _safeParseDecimal2 : undefined;
126
+ return meta => {
127
+ var _config$db, _config$db2;
128
+ if (meta.provider === 'sqlite') {
129
+ throw new Error('The decimal field does not support sqlite');
130
+ }
131
+ if (!Number.isInteger(scale)) {
132
+ throw new TypeError(`The scale for decimal fields must be an integer but the scale for the decimal field at ${meta.listKey}.${meta.fieldKey} is not an integer`);
133
+ }
134
+ if (!Number.isInteger(precision)) {
135
+ throw new TypeError(`The precision for decimal fields must be an integer but the precision for the decimal field at ${meta.listKey}.${meta.fieldKey} is not an integer`);
136
+ }
137
+ if (scale > precision) {
138
+ throw new Error(`The scale configured for decimal field at ${meta.listKey}.${meta.fieldKey} (${scale}) ` + `must not be larger than the field's precision (${precision})`);
139
+ }
140
+ if (defaultValue !== null && !parsedDefaultValue) {
141
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies a default value of: ${defaultValue} but it must be a valid finite number`);
142
+ }
143
+ if (min !== undefined && !parsedMin) {
144
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies validation.min: ${min} but it must be a valid finite number`);
145
+ }
146
+ if (max !== undefined && !parsedMax) {
147
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies validation.max: ${max} but it must be a valid finite number`);
148
+ }
149
+ if (min !== undefined && max !== undefined && parsedMin && parsedMax && parsedMin > parsedMax) {
150
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies a validation.max that is less than the validation.min, and therefore has no valid options`);
151
+ }
152
+ const hasAdditionalValidation = min !== undefined || max !== undefined;
153
+ const {
154
+ mode,
155
+ validate
156
+ } = nonNullGraphql.makeValidateHook(meta, config, hasAdditionalValidation ? ({
157
+ resolvedData,
158
+ operation,
159
+ addValidationError
160
+ }) => {
161
+ if (operation === 'delete') return;
162
+ const value = safeParseDecimal(resolvedData[meta.fieldKey]);
163
+ if (value != null) {
164
+ if (parsedMin !== undefined && value.lessThan(parsedMin)) {
165
+ addValidationError(`value must be greater than or equal to ${min}`);
166
+ }
167
+ if (parsedMax !== undefined && value.greaterThan(parsedMax)) {
168
+ addValidationError(`value must be less than or equal to ${max}`);
169
+ }
170
+ }
171
+ } : undefined);
172
+ return nextFields.fieldType({
173
+ kind: 'scalar',
174
+ mode,
175
+ scalar: 'Decimal',
176
+ nativeType: `Decimal(${precision}, ${scale})`,
177
+ index: isIndexed === true ? 'index' : isIndexed || undefined,
178
+ default: typeof defaultValue === 'string' ? {
179
+ kind: 'literal',
180
+ value: defaultValue
181
+ } : undefined,
182
+ map: (_config$db = config.db) === null || _config$db === void 0 ? void 0 : _config$db.map,
183
+ extendPrismaSchema: (_config$db2 = config.db) === null || _config$db2 === void 0 ? void 0 : _config$db2.extendPrismaSchema
184
+ })({
185
+ ...config,
186
+ ...nonNullGraphql.defaultIsRequired(config, isRequired),
187
+ hooks: {
188
+ ...config.hooks,
189
+ validate
190
+ },
191
+ input: {
192
+ uniqueWhere: isIndexed === 'unique' ? {
193
+ arg: nextFields.g.arg({
194
+ type: nextFields.g.Decimal
195
+ })
196
+ } : undefined,
197
+ where: {
198
+ arg: nextFields.g.arg({
199
+ type: index.filters[meta.provider].Decimal[mode]
200
+ }),
201
+ resolve: mode === 'optional' ? index.resolveCommon : undefined
202
+ },
203
+ create: {
204
+ arg: nextFields.g.arg({
205
+ type: nextFields.g.Decimal,
206
+ defaultValue: parsedDefaultValue
207
+ }),
208
+ resolve(val) {
209
+ if (val === undefined) return parsedDefaultValue;
210
+ return val;
211
+ }
212
+ },
213
+ update: {
214
+ arg: nextFields.g.arg({
215
+ type: nextFields.g.Decimal
216
+ })
217
+ },
218
+ orderBy: {
219
+ arg: nextFields.g.arg({
220
+ type: nextFields.orderDirectionEnum
221
+ })
222
+ }
223
+ },
224
+ output: nextFields.g.field({
225
+ type: nextFields.g.Decimal,
226
+ resolve({
227
+ value
228
+ }) {
229
+ if (value === null) return null;
230
+ const val = new Decimal__default["default"](value);
231
+ val.scaleToPrint = scale;
232
+ return val;
233
+ }
234
+ }),
235
+ __ksTelemetryFieldTypeName: '@nixxie-cms/decimal',
236
+ views: '@nixxie-cms/core/fields/types/decimal/views',
237
+ getAdminMeta() {
238
+ return {
239
+ validation: {
240
+ max: max !== null && max !== void 0 ? max : null,
241
+ min: min !== null && min !== void 0 ? min : null
242
+ },
243
+ defaultValue
244
+ };
245
+ }
246
+ });
247
+ };
248
+ }
249
+
250
+ const FileFieldInput = nextFields.g.inputObject({
251
+ name: 'FileFieldInput',
252
+ fields: {
253
+ upload: nextFields.g.arg({
254
+ type: nextFields.g.nonNull(nextFields.g.Upload)
255
+ })
256
+ }
257
+ });
258
+ const inputArg$1 = nextFields.g.arg({
259
+ type: FileFieldInput
260
+ });
261
+ const FileFieldOutput = nextFields.g.object()({
262
+ name: 'FileFieldOutput',
263
+ fields: {
264
+ filename: nextFields.g.field({
265
+ type: nextFields.g.nonNull(nextFields.g.String)
266
+ }),
267
+ filesize: nextFields.g.field({
268
+ type: nextFields.g.nonNull(nextFields.g.Int)
269
+ }),
270
+ url: nextFields.g.field({
271
+ type: nextFields.g.nonNull(nextFields.g.String)
272
+ })
273
+ }
274
+ });
275
+ async function inputResolver$1(storage, transformName, context, data) {
276
+ if (data === null || data === undefined) return {
277
+ filename: data,
278
+ filesize: data
279
+ };
280
+ const upload = await data.upload;
281
+ const stream = upload.createReadStream();
282
+ let filesize = 0;
283
+ stream.on('data', data => {
284
+ filesize += data.length;
285
+ });
286
+ const filename = await transformName(upload.filename);
287
+ await storage.put(filename, stream, {
288
+ contentType: 'application/octet-stream'
289
+ }, context);
290
+ return {
291
+ filename,
292
+ filesize
293
+ };
294
+ }
295
+ function file(config) {
296
+ const {
297
+ transformName = defaultTransformName$1
298
+ } = config;
299
+ return meta => {
300
+ var _config$db, _config$hooks;
301
+ const {
302
+ fieldKey
303
+ } = meta;
304
+ if ('isIndexed' in config) {
305
+ throw Error("isIndexed: 'unique' is not a supported option for field type file");
306
+ }
307
+ const afterOperationResolver = async function afterOperationResolver(args) {
308
+ if (args.operation === 'update' || args.operation === 'delete') {
309
+ var _args$item;
310
+ const filenameKey = `${fieldKey}_filename`;
311
+ const oldFilename = args.originalItem[filenameKey];
312
+ const newFilename = (_args$item = args.item) === null || _args$item === void 0 ? void 0 : _args$item[filenameKey];
313
+
314
+ // this will occur on an update where a file already existed but has been
315
+ // changed, or on a delete, where there is no longer an item
316
+ // but not when the old and new filenames are the same (in that case, presumably the file has been overwritten)
317
+ if (typeof oldFilename === 'string' && oldFilename !== newFilename) {
318
+ await config.storage.delete(oldFilename, args.context);
319
+ }
320
+ }
321
+ };
322
+ return nextFields.fieldType({
323
+ kind: 'multi',
324
+ extendPrismaSchema: (_config$db = config.db) === null || _config$db === void 0 ? void 0 : _config$db.extendPrismaSchema,
325
+ fields: {
326
+ filesize: {
327
+ kind: 'scalar',
328
+ scalar: 'Int',
329
+ mode: 'optional'
330
+ },
331
+ filename: {
332
+ kind: 'scalar',
333
+ scalar: 'String',
334
+ mode: 'optional'
335
+ }
336
+ }
337
+ })({
338
+ ...config,
339
+ hooks: {
340
+ ...config.hooks,
341
+ afterOperation: resolveHooks.merge((_config$hooks = config.hooks) === null || _config$hooks === void 0 ? void 0 : _config$hooks.afterOperation, {
342
+ update: afterOperationResolver,
343
+ delete: afterOperationResolver
344
+ })
345
+ },
346
+ input: {
347
+ create: {
348
+ arg: inputArg$1,
349
+ resolve: (data, context) => inputResolver$1(config.storage, transformName, context, data)
350
+ },
351
+ update: {
352
+ arg: inputArg$1,
353
+ resolve: (data, context) => inputResolver$1(config.storage, transformName, context, data)
354
+ }
355
+ },
356
+ output: nextFields.g.field({
357
+ type: FileFieldOutput,
358
+ resolve({
359
+ value: {
360
+ filesize,
361
+ filename
362
+ }
363
+ }) {
364
+ if (filename === null) return null;
365
+ if (filesize === null) return null;
366
+ return {
367
+ filename,
368
+ filesize,
369
+ url: async (_, context) => config.storage.url(filename, context)
370
+ };
371
+ }
372
+ }),
373
+ __ksTelemetryFieldTypeName: '@nixxie-cms/file',
374
+ views: '@nixxie-cms/core/fields/types/file/views'
375
+ });
376
+ };
377
+ }
378
+
379
+ // appends a 128-bit random identifier to the filename to prevent guessing
380
+ function defaultTransformName$1(path) {
381
+ // this regex lazily matches for any characters that aren't a new line
382
+ // it then optionally matches the last instance of a "." symbol
383
+ // followed by any alphanumerical character before the end of the string
384
+ const [, name, ext] = path.match(/^([^:\n].*?)(\.[A-Za-z0-9]{0,10})?$/);
385
+ const id = node_crypto.randomBytes(16).toString('base64url');
386
+ const urlSafeName = name.replace(/[^A-Za-z0-9]/g, '-');
387
+ if (ext) return `${urlSafeName}-${id}${ext}`;
388
+ return `${urlSafeName}-${id}`;
389
+ }
390
+
391
+ function float(config = {}) {
392
+ const {
393
+ defaultValue: defaultValue_,
394
+ isIndexed,
395
+ validation = {}
396
+ } = config;
397
+ const {
398
+ isRequired = false,
399
+ min,
400
+ max
401
+ } = validation;
402
+ const defaultValue = defaultValue_ !== null && defaultValue_ !== void 0 ? defaultValue_ : null;
403
+ return meta => {
404
+ var _config$db, _config$db2;
405
+ if (defaultValue !== null && !Number.isFinite(defaultValue)) {
406
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies a default value of: ${defaultValue} but it must be a valid finite number`);
407
+ }
408
+ if (min !== undefined && !Number.isFinite(min)) {
409
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies validation.min: ${min} but it must be a valid finite number`);
410
+ }
411
+ if (max !== undefined && !Number.isFinite(max)) {
412
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies validation.max: ${max} but it must be a valid finite number`);
413
+ }
414
+ if (min !== undefined && max !== undefined && min > max) {
415
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies a validation.max that is less than the validation.min, and therefore has no valid options`);
416
+ }
417
+ const hasAdditionalValidation = min !== undefined || max !== undefined;
418
+ const {
419
+ mode,
420
+ validate
421
+ } = nonNullGraphql.makeValidateHook(meta, config, hasAdditionalValidation ? ({
422
+ resolvedData,
423
+ operation,
424
+ addValidationError
425
+ }) => {
426
+ if (operation === 'delete') return;
427
+ const value = resolvedData[meta.fieldKey];
428
+ if (typeof value === 'number') {
429
+ if (min !== undefined && value < min) {
430
+ addValidationError(`value must be greater than or equal to ${min}`);
431
+ }
432
+ if (max !== undefined && value > max) {
433
+ addValidationError(`value must be less than or equal to ${max}`);
434
+ }
435
+ }
436
+ } : undefined);
437
+ return nextFields.fieldType({
438
+ kind: 'scalar',
439
+ mode,
440
+ scalar: 'Float',
441
+ index: isIndexed === true ? 'index' : isIndexed || undefined,
442
+ default: typeof defaultValue === 'number' ? {
443
+ kind: 'literal',
444
+ value: defaultValue
445
+ } : undefined,
446
+ map: (_config$db = config.db) === null || _config$db === void 0 ? void 0 : _config$db.map,
447
+ extendPrismaSchema: (_config$db2 = config.db) === null || _config$db2 === void 0 ? void 0 : _config$db2.extendPrismaSchema
448
+ })({
449
+ ...config,
450
+ ...nonNullGraphql.defaultIsRequired(config, isRequired),
451
+ hooks: {
452
+ ...config.hooks,
453
+ validate
454
+ },
455
+ input: {
456
+ uniqueWhere: isIndexed === 'unique' ? {
457
+ arg: nextFields.g.arg({
458
+ type: nextFields.g.Float
459
+ })
460
+ } : undefined,
461
+ where: {
462
+ arg: nextFields.g.arg({
463
+ type: index.filters[meta.provider].Float[mode]
464
+ }),
465
+ resolve: mode === 'optional' ? index.resolveCommon : undefined
466
+ },
467
+ create: {
468
+ arg: nextFields.g.arg({
469
+ type: nextFields.g.Float,
470
+ defaultValue: typeof defaultValue === 'number' ? defaultValue : undefined
471
+ }),
472
+ resolve(value) {
473
+ if (value === undefined) return defaultValue;
474
+ return value;
475
+ }
476
+ },
477
+ update: {
478
+ arg: nextFields.g.arg({
479
+ type: nextFields.g.Float
480
+ })
481
+ },
482
+ orderBy: {
483
+ arg: nextFields.g.arg({
484
+ type: nextFields.orderDirectionEnum
485
+ })
486
+ }
487
+ },
488
+ output: nextFields.g.field({
489
+ type: nextFields.g.Float
490
+ }),
491
+ __ksTelemetryFieldTypeName: '@nixxie-cms/float',
492
+ views: '@nixxie-cms/core/fields/types/float/views',
493
+ getAdminMeta() {
494
+ return {
495
+ validation: {
496
+ min: min !== null && min !== void 0 ? min : null,
497
+ max: max !== null && max !== void 0 ? max : null
498
+ },
499
+ defaultValue: defaultValue === null ? null : defaultValue.toString()
500
+ };
501
+ }
502
+ });
503
+ };
504
+ }
505
+
506
+ // for a signed 32-bit integer
507
+ const MAX_INT$3 = 0x7fffffff;
508
+ const MIN_INT$3 = -0x80000000;
509
+ function integer(config = {}) {
510
+ var _defaultValue_$kind;
511
+ const {
512
+ defaultValue: defaultValue_,
513
+ isIndexed,
514
+ validation = {}
515
+ } = config;
516
+ const {
517
+ isRequired = false,
518
+ min,
519
+ max
520
+ } = validation;
521
+ const defaultValue = typeof defaultValue_ === 'number' ? defaultValue_ : (_defaultValue_$kind = defaultValue_ === null || defaultValue_ === void 0 ? void 0 : defaultValue_.kind) !== null && _defaultValue_$kind !== void 0 ? _defaultValue_$kind : null;
522
+ return meta => {
523
+ var _config$db, _config$db2;
524
+ if (typeof defaultValue === 'number' && !Number.isInteger(defaultValue)) {
525
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies a default value of: ${defaultValue} but it must be a valid finite number`);
526
+ }
527
+ if (min !== undefined && !Number.isInteger(min)) {
528
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies validation.min: ${min} but it must be an integer`);
529
+ }
530
+ if (max !== undefined && !Number.isInteger(max)) {
531
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies validation.max: ${max} but it must be an integer`);
532
+ }
533
+ if (min !== undefined && (min > MAX_INT$3 || min < MIN_INT$3)) {
534
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies validation.min: ${min} which is outside of the range of a 32-bit signed integer`);
535
+ }
536
+ if (max !== undefined && (max > MAX_INT$3 || max < MIN_INT$3)) {
537
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies validation.max: ${max} which is outside of the range of a 32-bit signed integer`);
538
+ }
539
+ if (min !== undefined && max !== undefined && min > max) {
540
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies a validation.max that is less than the validation.min, and therefore has no valid options`);
541
+ }
542
+ const hasAdditionalValidation = min !== undefined || max !== undefined;
543
+ const {
544
+ mode,
545
+ validate
546
+ } = nonNullGraphql.makeValidateHook(meta, config, hasAdditionalValidation ? ({
547
+ resolvedData,
548
+ operation,
549
+ addValidationError
550
+ }) => {
551
+ if (operation === 'delete') return;
552
+ const value = resolvedData[meta.fieldKey];
553
+ if (typeof value === 'number') {
554
+ if (min !== undefined && value < min) {
555
+ addValidationError(`value must be greater than or equal to ${min}`);
556
+ }
557
+ if (max !== undefined && value > max) {
558
+ addValidationError(`value must be less than or equal to ${max}`);
559
+ }
560
+ }
561
+ } : undefined, defaultValue !== null);
562
+ return nextFields.fieldType({
563
+ kind: 'scalar',
564
+ mode,
565
+ scalar: 'Int',
566
+ index: isIndexed === true ? 'index' : isIndexed || undefined,
567
+ default: typeof defaultValue === 'number' ? {
568
+ kind: 'literal',
569
+ value: defaultValue
570
+ } : defaultValue === 'autoincrement' ? {
571
+ kind: 'autoincrement'
572
+ } : undefined,
573
+ map: (_config$db = config.db) === null || _config$db === void 0 ? void 0 : _config$db.map,
574
+ extendPrismaSchema: (_config$db2 = config.db) === null || _config$db2 === void 0 ? void 0 : _config$db2.extendPrismaSchema
575
+ })({
576
+ ...config,
577
+ ...nonNullGraphql.defaultIsRequired(config, isRequired),
578
+ hooks: {
579
+ ...config.hooks,
580
+ validate
581
+ },
582
+ input: {
583
+ uniqueWhere: isIndexed === 'unique' ? {
584
+ arg: nextFields.g.arg({
585
+ type: nextFields.g.Int
586
+ })
587
+ } : undefined,
588
+ where: {
589
+ arg: nextFields.g.arg({
590
+ type: index.filters[meta.provider].Int[mode]
591
+ }),
592
+ resolve: mode === 'optional' ? index.resolveCommon : undefined
593
+ },
594
+ create: {
595
+ arg: nextFields.g.arg({
596
+ type: nextFields.g.Int,
597
+ defaultValue: typeof defaultValue === 'number' ? defaultValue : undefined
598
+ }),
599
+ resolve(value) {
600
+ if (value === undefined) {
601
+ if (defaultValue === 'autoincrement') return undefined;
602
+ return defaultValue;
603
+ }
604
+ return value;
605
+ }
606
+ },
607
+ update: {
608
+ arg: nextFields.g.arg({
609
+ type: nextFields.g.Int
610
+ })
611
+ },
612
+ orderBy: {
613
+ arg: nextFields.g.arg({
614
+ type: nextFields.orderDirectionEnum
615
+ })
616
+ }
617
+ },
618
+ output: nextFields.g.field({
619
+ type: nextFields.g.Int
620
+ }),
621
+ __ksTelemetryFieldTypeName: '@nixxie-cms/integer',
622
+ views: '@nixxie-cms/core/fields/types/integer/views',
623
+ getAdminMeta() {
624
+ return {
625
+ validation: {
626
+ min: min !== null && min !== void 0 ? min : MIN_INT$3,
627
+ max: max !== null && max !== void 0 ? max : MAX_INT$3
628
+ },
629
+ defaultValue
630
+ };
631
+ }
632
+ });
633
+ };
634
+ }
635
+
636
+ // for a signed 64-bit integer
637
+ const MAX_INT$2 = 9223372036854775807n;
638
+ const MIN_INT$2 = -9223372036854775808n;
639
+
640
+ // TODO: https://github.com/Nixxie/keystatic/blob/main/design-system/pkg/src/number-field/NumberField.tsx
641
+ function bigInt(config = {}) {
642
+ var _defaultValue_$kind;
643
+ const {
644
+ defaultValue: defaultValue_ = null,
645
+ isIndexed,
646
+ validation = {}
647
+ } = config;
648
+ const {
649
+ isRequired = false,
650
+ min,
651
+ max
652
+ } = validation;
653
+ const defaultValue = typeof defaultValue_ === 'bigint' ? defaultValue_ : (_defaultValue_$kind = defaultValue_ === null || defaultValue_ === void 0 ? void 0 : defaultValue_.kind) !== null && _defaultValue_$kind !== void 0 ? _defaultValue_$kind : null;
654
+ return meta => {
655
+ var _config$db, _config$db2;
656
+ if (defaultValue === 'autoincrement') {
657
+ if (meta.provider === 'sqlite' || meta.provider === 'mysql') {
658
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies defaultValue: { kind: 'autoincrement' }, this is not supported on ${meta.provider}`);
659
+ }
660
+ const isNullable = nonNullGraphql.resolveDbNullable(validation, config.db);
661
+ if (isNullable !== false) {
662
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies defaultValue: { kind: 'autoincrement' } but doesn't specify db.isNullable: false.\n` + `Having nullable autoincrements on Prisma currently incorrectly creates a non-nullable column so it is not allowed.\n` + `https://github.com/prisma/prisma/issues/8663`);
663
+ }
664
+ if (isRequired) {
665
+ throw new Error(`${meta.listKey}.${meta.fieldKey} defaultValue: { kind: 'autoincrement' } conflicts with validation.isRequired: true`);
666
+ }
667
+ }
668
+ if (
669
+ // TODO: prefer typescript only?
670
+ defaultValue !== null && defaultValue !== 'autoincrement' && typeof defaultValue !== 'bigint') {
671
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies a default value of: ${defaultValue} but it must be a valid finite number`);
672
+ }
673
+ if (min !== undefined && !Number.isInteger(min)) {
674
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies validation.min: ${min} but it must be an integer`);
675
+ }
676
+ if (max !== undefined && !Number.isInteger(max)) {
677
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies validation.max: ${max} but it must be an integer`);
678
+ }
679
+ if (min !== undefined && (min > MAX_INT$2 || min < MIN_INT$2)) {
680
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies validation.min: ${min} which is outside of the range of a 64-bit signed integer`);
681
+ }
682
+ if (max !== undefined && (max > MAX_INT$2 || max < MIN_INT$2)) {
683
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies validation.max: ${max} which is outside of the range of a 64-bit signed integer`);
684
+ }
685
+ if (min !== undefined && max !== undefined && min > max) {
686
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies a validation.max that is less than the validation.min, and therefore has no valid options`);
687
+ }
688
+ const hasAdditionalValidation = min !== undefined || max !== undefined;
689
+ const {
690
+ mode,
691
+ validate
692
+ } = nonNullGraphql.makeValidateHook(meta, config, hasAdditionalValidation ? ({
693
+ resolvedData,
694
+ operation,
695
+ addValidationError
696
+ }) => {
697
+ if (operation === 'delete') return;
698
+ const value = resolvedData[meta.fieldKey];
699
+ if (typeof value === 'number') {
700
+ if (min !== undefined && value < min) {
701
+ addValidationError(`value must be greater than or equal to ${min}`);
702
+ }
703
+ if (max !== undefined && value > max) {
704
+ addValidationError(`value must be less than or equal to ${max}`);
705
+ }
706
+ }
707
+ } : undefined);
708
+ return nextFields.fieldType({
709
+ kind: 'scalar',
710
+ mode,
711
+ scalar: 'BigInt',
712
+ index: isIndexed === true ? 'index' : isIndexed || undefined,
713
+ default: typeof defaultValue === 'bigint' ? {
714
+ kind: 'literal',
715
+ value: defaultValue
716
+ } : defaultValue === 'autoincrement' ? {
717
+ kind: 'autoincrement'
718
+ } : undefined,
719
+ map: (_config$db = config.db) === null || _config$db === void 0 ? void 0 : _config$db.map,
720
+ extendPrismaSchema: (_config$db2 = config.db) === null || _config$db2 === void 0 ? void 0 : _config$db2.extendPrismaSchema
721
+ })({
722
+ ...config,
723
+ ...nonNullGraphql.defaultIsRequired(config, isRequired),
724
+ hooks: {
725
+ ...config.hooks,
726
+ validate
727
+ },
728
+ input: {
729
+ uniqueWhere: isIndexed === 'unique' ? {
730
+ arg: nextFields.g.arg({
731
+ type: nextFields.g.BigInt
732
+ })
733
+ } : undefined,
734
+ where: {
735
+ arg: nextFields.g.arg({
736
+ type: index.filters[meta.provider].BigInt[mode]
737
+ }),
738
+ resolve: mode === 'optional' ? index.resolveCommon : undefined
739
+ },
740
+ create: {
741
+ arg: nextFields.g.arg({
742
+ type: nextFields.g.BigInt,
743
+ defaultValue: typeof defaultValue === 'bigint' ? defaultValue : undefined
744
+ }),
745
+ resolve(value) {
746
+ if (value === undefined) {
747
+ if (defaultValue === 'autoincrement') return null;
748
+ return defaultValue;
749
+ }
750
+ return value;
751
+ }
752
+ },
753
+ update: {
754
+ arg: nextFields.g.arg({
755
+ type: nextFields.g.BigInt
756
+ })
757
+ },
758
+ orderBy: {
759
+ arg: nextFields.g.arg({
760
+ type: nextFields.orderDirectionEnum
761
+ })
762
+ }
763
+ },
764
+ output: nextFields.g.field({
765
+ type: nextFields.g.BigInt
766
+ }),
767
+ __ksTelemetryFieldTypeName: '@nixxie-cms/bigInt',
768
+ views: '@nixxie-cms/core/fields/types/bigInt/views',
769
+ getAdminMeta() {
770
+ var _min$toString, _max$toString;
771
+ return {
772
+ validation: {
773
+ min: (_min$toString = min === null || min === void 0 ? void 0 : min.toString()) !== null && _min$toString !== void 0 ? _min$toString : `${MIN_INT$2}`,
774
+ max: (_max$toString = max === null || max === void 0 ? void 0 : max.toString()) !== null && _max$toString !== void 0 ? _max$toString : `${MAX_INT$2}`
775
+ },
776
+ defaultValue: typeof defaultValue === 'bigint' ? defaultValue.toString() : defaultValue
777
+ };
778
+ }
779
+ });
780
+ };
781
+ }
782
+
783
+ function getImageMetadata(bytes) {
784
+ for (const [type, checker] of types) {
785
+ if (checker.validate(bytes)) {
786
+ const result = checker.calculate(bytes);
787
+ if (result.width === undefined || result.height === undefined) {
788
+ return;
789
+ }
790
+ return {
791
+ width: result.width,
792
+ height: result.height,
793
+ extension: type
794
+ };
795
+ }
796
+ }
797
+ }
798
+ const types = [['jpg', jpg.JPG], ['png', png.PNG], ['webp', webp.WEBP], ['gif', gif.GIF]];
799
+ async function getBytesFromStream(stream, maxBytes) {
800
+ let chunks = [];
801
+ for await (const chunk of stream) {
802
+ maxBytes -= chunk.length;
803
+ chunks.push(chunk);
804
+ if (maxBytes <= 0) {
805
+ break;
806
+ }
807
+ }
808
+ stream.destroy();
809
+ return Buffer.concat(chunks);
810
+ }
811
+ function teeStream(source) {
812
+ const passThrough1 = new node_stream.PassThrough();
813
+ const passThrough2 = new node_stream.PassThrough();
814
+ source.pipe(passThrough1);
815
+ source.pipe(passThrough2);
816
+ source.on('error', err => {
817
+ passThrough1.destroy(err);
818
+ passThrough2.destroy(err);
819
+ });
820
+ return [passThrough1, passThrough2];
821
+ }
822
+
823
+ // TODO: dynamic
824
+ const ImageExtensionEnum = nextFields.g.enum({
825
+ name: 'ImageExtension',
826
+ values: nextFields.g.enumValues(fields_types_image_utils_dist_nixxieCmsCoreFieldsTypesImageUtils.SUPPORTED_IMAGE_EXTENSIONS)
827
+ });
828
+ const ImageFieldInput = nextFields.g.inputObject({
829
+ name: 'ImageFieldInput',
830
+ fields: {
831
+ upload: nextFields.g.arg({
832
+ type: nextFields.g.nonNull(nextFields.g.Upload)
833
+ })
834
+ }
835
+ });
836
+ const inputArg = nextFields.g.arg({
837
+ type: ImageFieldInput
838
+ });
839
+ const ImageFieldOutput = nextFields.g.object()({
840
+ name: 'ImageFieldOutput',
841
+ fields: {
842
+ id: nextFields.g.field({
843
+ type: nextFields.g.nonNull(nextFields.g.ID)
844
+ }),
845
+ url: nextFields.g.field({
846
+ type: nextFields.g.nonNull(nextFields.g.String)
847
+ }),
848
+ extension: nextFields.g.field({
849
+ type: nextFields.g.nonNull(ImageExtensionEnum)
850
+ }),
851
+ filesize: nextFields.g.field({
852
+ type: nextFields.g.nonNull(nextFields.g.Int)
853
+ }),
854
+ width: nextFields.g.field({
855
+ type: nextFields.g.nonNull(nextFields.g.Int)
856
+ }),
857
+ height: nextFields.g.field({
858
+ type: nextFields.g.nonNull(nextFields.g.Int)
859
+ })
860
+ }
861
+ });
862
+
863
+ // this is a conservative estimate of the number of bytes
864
+ // that we need to determine the image metadata
865
+ // since 1Kib in memory will be fine
866
+ const bytesToDetermineImageMetadata = 1024;
867
+ async function inputResolver(storage, transformName, context, data) {
868
+ if (data === null || data === undefined) {
869
+ return {
870
+ id: data,
871
+ extension: data,
872
+ filesize: data,
873
+ width: data,
874
+ height: data
875
+ };
876
+ }
877
+ const upload = await data.upload;
878
+ let filesize = 0;
879
+ const _readable = upload.createReadStream();
880
+ const [readableForFilesize, _readable2] = teeStream(_readable);
881
+ const [readableForMetadata, readableForUpload] = teeStream(_readable2);
882
+ readableForFilesize.on('data', data => {
883
+ filesize += data.length;
884
+ });
885
+ const buffer = await getBytesFromStream(readableForMetadata, bytesToDetermineImageMetadata);
886
+ const metadata = getImageMetadata(buffer);
887
+ if (!metadata) {
888
+ throw new Error('File type not found');
889
+ }
890
+ const id = await transformName(upload.filename, metadata.extension);
891
+ await storage.put(`${id}.${metadata.extension}`, readableForUpload, {
892
+ contentType: {
893
+ png: 'image/png',
894
+ webp: 'image/webp',
895
+ gif: 'image/gif',
896
+ jpg: 'image/jpeg'
897
+ }[metadata.extension]
898
+ }, context);
899
+ return {
900
+ filesize,
901
+ id,
902
+ extension: metadata.extension,
903
+ height: metadata.height,
904
+ width: metadata.width
905
+ };
906
+ }
907
+ const extensionsSet = new Set(fields_types_image_utils_dist_nixxieCmsCoreFieldsTypesImageUtils.SUPPORTED_IMAGE_EXTENSIONS);
908
+ function isValidImageExtension(extension) {
909
+ return extensionsSet.has(extension);
910
+ }
911
+ function image(config) {
912
+ const {
913
+ transformName = defaultTransformName
914
+ } = config;
915
+ return meta => {
916
+ var _config$db, _config$hooks;
917
+ const {
918
+ fieldKey
919
+ } = meta;
920
+ if ('isIndexed' in config) {
921
+ throw Error("isIndexed: 'unique' is not a supported option for field type image");
922
+ }
923
+ const afterOperationResolver = async function afterOperationResolver(args) {
924
+ if (args.operation === 'update' || args.operation === 'delete') {
925
+ var _args$originalItem, _args$item, _args$originalItem2, _args$item2;
926
+ const idKey = `${fieldKey}_id`;
927
+ const oldId = (_args$originalItem = args.originalItem) === null || _args$originalItem === void 0 ? void 0 : _args$originalItem[idKey];
928
+ const newId = (_args$item = args.item) === null || _args$item === void 0 ? void 0 : _args$item[idKey];
929
+ const extensionKey = `${fieldKey}_extension`;
930
+ const oldExtension = (_args$originalItem2 = args.originalItem) === null || _args$originalItem2 === void 0 ? void 0 : _args$originalItem2[extensionKey];
931
+ const newExtension = (_args$item2 = args.item) === null || _args$item2 === void 0 ? void 0 : _args$item2[extensionKey];
932
+ // this will occur on an update where an image already existed but has been
933
+ // changed, or on a delete, where there is no longer an item
934
+ if (typeof oldId === 'string' && typeof oldExtension === 'string' && isValidImageExtension(oldExtension) && (oldId !== newId || oldExtension !== newExtension)) {
935
+ await config.storage.delete(`${oldId}.${oldExtension}`, args.context);
936
+ }
937
+ }
938
+ };
939
+ return nextFields.fieldType({
940
+ kind: 'multi',
941
+ extendPrismaSchema: (_config$db = config.db) === null || _config$db === void 0 ? void 0 : _config$db.extendPrismaSchema,
942
+ fields: {
943
+ id: {
944
+ kind: 'scalar',
945
+ scalar: 'String',
946
+ mode: 'optional'
947
+ },
948
+ extension: {
949
+ kind: 'scalar',
950
+ scalar: 'String',
951
+ mode: 'optional'
952
+ },
953
+ filesize: {
954
+ kind: 'scalar',
955
+ scalar: 'Int',
956
+ mode: 'optional'
957
+ },
958
+ width: {
959
+ kind: 'scalar',
960
+ scalar: 'Int',
961
+ mode: 'optional'
962
+ },
963
+ height: {
964
+ kind: 'scalar',
965
+ scalar: 'Int',
966
+ mode: 'optional'
967
+ }
968
+ }
969
+ })({
970
+ ...config,
971
+ hooks: {
972
+ ...config.hooks,
973
+ afterOperation: resolveHooks.merge((_config$hooks = config.hooks) === null || _config$hooks === void 0 ? void 0 : _config$hooks.afterOperation, {
974
+ update: afterOperationResolver,
975
+ delete: afterOperationResolver
976
+ })
977
+ },
978
+ input: {
979
+ create: {
980
+ arg: inputArg,
981
+ resolve: (data, context) => inputResolver(config.storage, transformName, context, data)
982
+ },
983
+ update: {
984
+ arg: inputArg,
985
+ resolve: (data, context) => inputResolver(config.storage, transformName, context, data)
986
+ }
987
+ },
988
+ output: nextFields.g.field({
989
+ type: ImageFieldOutput,
990
+ resolve({
991
+ value: {
992
+ id,
993
+ extension,
994
+ filesize,
995
+ width,
996
+ height
997
+ }
998
+ }) {
999
+ if (id === null) return null;
1000
+ if (extension === null) return null;
1001
+ if (filesize === null) return null;
1002
+ if (width === null) return null;
1003
+ if (height === null) return null;
1004
+ if (!isValidImageExtension(extension)) return null; // TODO: dynamic
1005
+
1006
+ return {
1007
+ id,
1008
+ filesize,
1009
+ width,
1010
+ height,
1011
+ extension,
1012
+ url: async (_, context) => config.storage.url(`${id}.${extension}`, context)
1013
+ };
1014
+ }
1015
+ }),
1016
+ __ksTelemetryFieldTypeName: '@nixxie-cms/image',
1017
+ views: '@nixxie-cms/core/fields/types/image/views'
1018
+ });
1019
+ };
1020
+ }
1021
+ function defaultTransformName(_) {
1022
+ return node_crypto.randomBytes(16).toString('base64url');
1023
+ }
1024
+
1025
+ function json({
1026
+ defaultValue = null,
1027
+ ...config
1028
+ } = {}) {
1029
+ return meta => {
1030
+ var _config$db, _config$db2;
1031
+ if (config.isIndexed === 'unique') {
1032
+ throw Error("isIndexed: 'unique' is not a supported option for field type json");
1033
+ }
1034
+ return nextFields.fieldType({
1035
+ kind: 'scalar',
1036
+ mode: 'optional',
1037
+ scalar: 'Json',
1038
+ default: defaultValue === null ? undefined : meta.provider === 'sqlite' ? undefined : {
1039
+ kind: 'literal',
1040
+ // TODO: waiting on https://github.com/prisma/prisma/issues/26571
1041
+ // input.create manages defaultValues anyway
1042
+ value: JSON.stringify(defaultValue !== null && defaultValue !== void 0 ? defaultValue : null)
1043
+ },
1044
+ map: (_config$db = config.db) === null || _config$db === void 0 ? void 0 : _config$db.map,
1045
+ extendPrismaSchema: (_config$db2 = config.db) === null || _config$db2 === void 0 ? void 0 : _config$db2.extendPrismaSchema
1046
+ })({
1047
+ ...config,
1048
+ __ksTelemetryFieldTypeName: '@nixxie-cms/json',
1049
+ input: {
1050
+ create: {
1051
+ arg: nextFields.g.arg({
1052
+ type: nextFields.g.JSON
1053
+ }),
1054
+ resolve(val) {
1055
+ // TODO: redundant when https://github.com/prisma/prisma/issues/26571 is resolved
1056
+ return val === undefined ? defaultValue : val;
1057
+ }
1058
+ },
1059
+ update: {
1060
+ arg: nextFields.g.arg({
1061
+ type: nextFields.g.JSON
1062
+ })
1063
+ }
1064
+ },
1065
+ output: nextFields.g.field({
1066
+ type: nextFields.g.JSON
1067
+ }),
1068
+ views: '@nixxie-cms/core/fields/types/json/views',
1069
+ getAdminMeta: () => ({
1070
+ defaultValue
1071
+ })
1072
+ });
1073
+ };
1074
+ }
1075
+
1076
+ // these are the lowest and highest values for a signed 32-bit integer
1077
+ const MAX_INT$1 = 2147483647;
1078
+ const MIN_INT$1 = -2147483648;
1079
+ function select(config) {
1080
+ const {
1081
+ isIndexed,
1082
+ ui: {
1083
+ displayMode = 'select',
1084
+ ...ui
1085
+ } = {},
1086
+ defaultValue,
1087
+ validation
1088
+ } = config;
1089
+ return meta => {
1090
+ var _validation$isRequire, _config$db, _config$db2;
1091
+ const options = config.options.map(option => {
1092
+ if (typeof option === 'string') {
1093
+ return {
1094
+ label: utils.humanize(option),
1095
+ value: option
1096
+ };
1097
+ }
1098
+ return option;
1099
+ });
1100
+ const accepted = new Set(options.map(x => x.value));
1101
+ if (accepted.size !== options.length) {
1102
+ throw new Error(`${meta.listKey}.${meta.fieldKey}: duplicate options, this is not allowed`);
1103
+ }
1104
+ const {
1105
+ mode,
1106
+ validate
1107
+ } = nonNullGraphql.makeValidateHook(meta, config, ({
1108
+ resolvedData,
1109
+ operation,
1110
+ addValidationError
1111
+ }) => {
1112
+ if (operation === 'delete') return;
1113
+ const value = resolvedData[meta.fieldKey];
1114
+ if (value != null && !accepted.has(value)) {
1115
+ addValidationError(`value is not an accepted option`);
1116
+ }
1117
+ });
1118
+ const commonConfig = {
1119
+ ...config,
1120
+ mode,
1121
+ ...nonNullGraphql.defaultIsRequired({
1122
+ ui
1123
+ }, (_validation$isRequire = validation === null || validation === void 0 ? void 0 : validation.isRequired) !== null && _validation$isRequire !== void 0 ? _validation$isRequire : false),
1124
+ hooks: {
1125
+ ...config.hooks,
1126
+ validate
1127
+ },
1128
+ __ksTelemetryFieldTypeName: '@nixxie-cms/select',
1129
+ views: '@nixxie-cms/core/fields/types/select/views',
1130
+ getAdminMeta: () => {
1131
+ var _config$type;
1132
+ return {
1133
+ options,
1134
+ type: (_config$type = config.type) !== null && _config$type !== void 0 ? _config$type : 'string',
1135
+ displayMode: displayMode,
1136
+ defaultValue: defaultValue !== null && defaultValue !== void 0 ? defaultValue : null
1137
+ };
1138
+ }
1139
+ };
1140
+ const commonDbFieldConfig = {
1141
+ mode,
1142
+ index: isIndexed === true ? 'index' : isIndexed || undefined,
1143
+ default: defaultValue === undefined ? undefined : {
1144
+ kind: 'literal',
1145
+ value: defaultValue
1146
+ },
1147
+ map: (_config$db = config.db) === null || _config$db === void 0 ? void 0 : _config$db.map,
1148
+ extendPrismaSchema: (_config$db2 = config.db) === null || _config$db2 === void 0 ? void 0 : _config$db2.extendPrismaSchema
1149
+ };
1150
+ const resolveCreate = val => {
1151
+ if (val === undefined) {
1152
+ var _ref;
1153
+ return (_ref = defaultValue) !== null && _ref !== void 0 ? _ref : null;
1154
+ }
1155
+ return val;
1156
+ };
1157
+ if (config.type === 'integer') {
1158
+ if (config.options.some(({
1159
+ value
1160
+ }) => !Number.isInteger(value) || value > MAX_INT$1 || value < MIN_INT$1)) {
1161
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies integer values that are outside the range of a 32-bit signed integer`);
1162
+ }
1163
+ return nextFields.fieldType({
1164
+ kind: 'scalar',
1165
+ scalar: 'Int',
1166
+ ...commonDbFieldConfig
1167
+ })({
1168
+ ...commonConfig,
1169
+ input: {
1170
+ uniqueWhere: isIndexed === 'unique' ? {
1171
+ arg: nextFields.g.arg({
1172
+ type: nextFields.g.Int
1173
+ })
1174
+ } : undefined,
1175
+ where: {
1176
+ arg: nextFields.g.arg({
1177
+ type: index.filters[meta.provider].Int[mode]
1178
+ }),
1179
+ resolve: mode === 'required' ? undefined : index.resolveCommon
1180
+ },
1181
+ create: {
1182
+ arg: nextFields.g.arg({
1183
+ type: nextFields.g.Int,
1184
+ defaultValue: typeof defaultValue === 'number' ? defaultValue : undefined
1185
+ }),
1186
+ resolve: resolveCreate
1187
+ },
1188
+ update: {
1189
+ arg: nextFields.g.arg({
1190
+ type: nextFields.g.Int
1191
+ })
1192
+ },
1193
+ orderBy: {
1194
+ arg: nextFields.g.arg({
1195
+ type: nextFields.orderDirectionEnum
1196
+ })
1197
+ }
1198
+ },
1199
+ output: nextFields.g.field({
1200
+ type: nextFields.g.Int
1201
+ })
1202
+ });
1203
+ }
1204
+ if (config.type === 'enum') {
1205
+ const enumName = `${meta.listKey}${utils.humanize(meta.fieldKey).replace(/ /g, '')}Type`;
1206
+ const enumValues = options.map(x => `${x.value}`);
1207
+ const graphQLType = nextFields.g.enum({
1208
+ name: enumName,
1209
+ values: nextFields.g.enumValues(enumValues)
1210
+ });
1211
+ return nextFields.fieldType(meta.provider === 'sqlite' ? {
1212
+ kind: 'scalar',
1213
+ scalar: 'String',
1214
+ ...commonDbFieldConfig
1215
+ } : {
1216
+ kind: 'enum',
1217
+ values: enumValues,
1218
+ name: enumName,
1219
+ ...commonDbFieldConfig
1220
+ })({
1221
+ ...commonConfig,
1222
+ input: {
1223
+ uniqueWhere: isIndexed === 'unique' ? {
1224
+ arg: nextFields.g.arg({
1225
+ type: graphQLType
1226
+ })
1227
+ } : undefined,
1228
+ where: {
1229
+ arg: nextFields.g.arg({
1230
+ type: index.filters[meta.provider].enum(graphQLType).optional
1231
+ }),
1232
+ resolve: mode === 'required' ? undefined : index.resolveCommon
1233
+ },
1234
+ create: {
1235
+ arg: nextFields.g.arg({
1236
+ type: graphQLType,
1237
+ defaultValue: typeof defaultValue === 'string' ? defaultValue : undefined
1238
+ }),
1239
+ resolve: resolveCreate
1240
+ },
1241
+ update: {
1242
+ arg: nextFields.g.arg({
1243
+ type: graphQLType
1244
+ })
1245
+ },
1246
+ orderBy: {
1247
+ arg: nextFields.g.arg({
1248
+ type: nextFields.orderDirectionEnum
1249
+ })
1250
+ }
1251
+ },
1252
+ output: nextFields.g.field({
1253
+ type: graphQLType
1254
+ })
1255
+ });
1256
+ }
1257
+ return nextFields.fieldType({
1258
+ kind: 'scalar',
1259
+ scalar: 'String',
1260
+ ...commonDbFieldConfig
1261
+ })({
1262
+ ...commonConfig,
1263
+ input: {
1264
+ uniqueWhere: isIndexed === 'unique' ? {
1265
+ arg: nextFields.g.arg({
1266
+ type: nextFields.g.String
1267
+ })
1268
+ } : undefined,
1269
+ where: {
1270
+ arg: nextFields.g.arg({
1271
+ type: index.filters[meta.provider].String[mode]
1272
+ }),
1273
+ resolve: mode === 'required' ? undefined : index.resolveString
1274
+ },
1275
+ create: {
1276
+ arg: nextFields.g.arg({
1277
+ type: nextFields.g.String,
1278
+ defaultValue: typeof defaultValue === 'string' ? defaultValue : undefined
1279
+ }),
1280
+ resolve: resolveCreate
1281
+ },
1282
+ update: {
1283
+ arg: nextFields.g.arg({
1284
+ type: nextFields.g.String
1285
+ })
1286
+ },
1287
+ orderBy: {
1288
+ arg: nextFields.g.arg({
1289
+ type: nextFields.orderDirectionEnum
1290
+ })
1291
+ }
1292
+ },
1293
+ output: nextFields.g.field({
1294
+ type: nextFields.g.String
1295
+ })
1296
+ });
1297
+ };
1298
+ }
1299
+
1300
+ function text(config = {}) {
1301
+ var _config$db, _config$db2, _config$db2$isNullabl, _validation$isRequire, _validation$length$mi, _validation$length, _validation$length2, _validation$length3;
1302
+ const {
1303
+ defaultValue: defaultValue_,
1304
+ isIndexed,
1305
+ validation = {}
1306
+ } = config;
1307
+ (_config$db = config.db) !== null && _config$db !== void 0 ? _config$db : config.db = {};
1308
+ (_config$db2$isNullabl = (_config$db2 = config.db).isNullable) !== null && _config$db2$isNullabl !== void 0 ? _config$db2$isNullabl : _config$db2.isNullable = false; // TODO: sigh, remove in breaking change?
1309
+
1310
+ const isRequired = (_validation$isRequire = validation.isRequired) !== null && _validation$isRequire !== void 0 ? _validation$isRequire : false;
1311
+ const match = validation.match;
1312
+ const min = validation.isRequired ? (_validation$length$mi = (_validation$length = validation.length) === null || _validation$length === void 0 ? void 0 : _validation$length.min) !== null && _validation$length$mi !== void 0 ? _validation$length$mi : 1 : (_validation$length2 = validation.length) === null || _validation$length2 === void 0 ? void 0 : _validation$length2.min;
1313
+ const max = (_validation$length3 = validation.length) === null || _validation$length3 === void 0 ? void 0 : _validation$length3.max;
1314
+ return meta => {
1315
+ var _config$db$isNullable, _config$db3, _config$db4, _config$db5, _config$db6;
1316
+ if (min !== undefined && (!Number.isInteger(min) || min < 0)) {
1317
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies validation.length.min: ${min} but it must be a positive integer`);
1318
+ }
1319
+ if (max !== undefined && (!Number.isInteger(max) || max < 0)) {
1320
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies validation.length.max: ${max} but it must be a positive integer`);
1321
+ }
1322
+ if (isRequired && min !== undefined && min === 0) {
1323
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies validation.isRequired: true and validation.length.min: 0, this is not allowed because validation.isRequired implies at least a min length of 1`);
1324
+ }
1325
+ if (isRequired && max !== undefined && max === 0) {
1326
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies validation.isRequired: true and validation.length.max: 0, this is not allowed because validation.isRequired implies at least a max length of 1`);
1327
+ }
1328
+ if (min !== undefined && max !== undefined && min > max) {
1329
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies a validation.length.max that is less than the validation.length.min, and therefore has no valid options`);
1330
+ }
1331
+
1332
+ // defaulted to false as a zero length string is preferred to null
1333
+ const isNullable = (_config$db$isNullable = (_config$db3 = config.db) === null || _config$db3 === void 0 ? void 0 : _config$db3.isNullable) !== null && _config$db$isNullable !== void 0 ? _config$db$isNullable : false;
1334
+ const defaultValue = isNullable ? defaultValue_ !== null && defaultValue_ !== void 0 ? defaultValue_ : null : defaultValue_ !== null && defaultValue_ !== void 0 ? defaultValue_ : '';
1335
+ const hasAdditionalValidation = match || min !== undefined || max !== undefined;
1336
+ const {
1337
+ mode,
1338
+ validate
1339
+ } = nonNullGraphql.makeValidateHook(meta, config, hasAdditionalValidation ? ({
1340
+ resolvedData,
1341
+ operation,
1342
+ addValidationError
1343
+ }) => {
1344
+ if (operation === 'delete') return;
1345
+ const value = resolvedData[meta.fieldKey];
1346
+ if (value != null) {
1347
+ if (min !== undefined && value.length < min) {
1348
+ if (min === 1) {
1349
+ addValidationError(`value must not be empty`);
1350
+ } else {
1351
+ addValidationError(`value must be at least ${min} characters long`);
1352
+ }
1353
+ }
1354
+ if (max !== undefined && value.length > max) {
1355
+ addValidationError(`value must be no longer than ${max} characters`);
1356
+ }
1357
+ if (match && !match.regex.test(value)) {
1358
+ var _match$explanation;
1359
+ addValidationError((_match$explanation = match.explanation) !== null && _match$explanation !== void 0 ? _match$explanation : `value must match ${match.regex}`);
1360
+ }
1361
+ }
1362
+ } : undefined);
1363
+ return nextFields.fieldType({
1364
+ kind: 'scalar',
1365
+ mode,
1366
+ scalar: 'String',
1367
+ default: defaultValue === null ? undefined : {
1368
+ kind: 'literal',
1369
+ value: defaultValue
1370
+ },
1371
+ index: isIndexed === true ? 'index' : isIndexed || undefined,
1372
+ map: (_config$db4 = config.db) === null || _config$db4 === void 0 ? void 0 : _config$db4.map,
1373
+ nativeType: (_config$db5 = config.db) === null || _config$db5 === void 0 ? void 0 : _config$db5.nativeType,
1374
+ extendPrismaSchema: (_config$db6 = config.db) === null || _config$db6 === void 0 ? void 0 : _config$db6.extendPrismaSchema
1375
+ })({
1376
+ ...config,
1377
+ ...nonNullGraphql.defaultIsRequired(config, isRequired),
1378
+ hooks: {
1379
+ ...config.hooks,
1380
+ validate
1381
+ },
1382
+ input: {
1383
+ uniqueWhere: isIndexed === 'unique' ? {
1384
+ arg: nextFields.g.arg({
1385
+ type: nextFields.g.String
1386
+ })
1387
+ } : undefined,
1388
+ where: {
1389
+ arg: nextFields.g.arg({
1390
+ type: index.filters[meta.provider].String[mode]
1391
+ }),
1392
+ resolve: mode === 'required' ? undefined : index.resolveString
1393
+ },
1394
+ create: {
1395
+ arg: nextFields.g.arg({
1396
+ type: nextFields.g.String,
1397
+ defaultValue: typeof defaultValue === 'string' ? defaultValue : undefined
1398
+ }),
1399
+ resolve(val) {
1400
+ if (val !== undefined) return val;
1401
+ return defaultValue !== null && defaultValue !== void 0 ? defaultValue : null;
1402
+ }
1403
+ },
1404
+ update: {
1405
+ arg: nextFields.g.arg({
1406
+ type: nextFields.g.String
1407
+ })
1408
+ },
1409
+ orderBy: {
1410
+ arg: nextFields.g.arg({
1411
+ type: nextFields.orderDirectionEnum
1412
+ })
1413
+ }
1414
+ },
1415
+ output: nextFields.g.field({
1416
+ type: nextFields.g.String
1417
+ }),
1418
+ __ksTelemetryFieldTypeName: '@nixxie-cms/text',
1419
+ views: '@nixxie-cms/core/fields/types/text/views',
1420
+ getAdminMeta() {
1421
+ var _config$ui$displayMod, _config$ui, _match$explanation2;
1422
+ return {
1423
+ displayMode: (_config$ui$displayMod = (_config$ui = config.ui) === null || _config$ui === void 0 ? void 0 : _config$ui.displayMode) !== null && _config$ui$displayMod !== void 0 ? _config$ui$displayMod : 'input',
1424
+ shouldUseModeInsensitive: meta.provider === 'postgresql',
1425
+ validation: {
1426
+ match: match ? {
1427
+ regex: {
1428
+ source: match.regex.source,
1429
+ flags: match.regex.flags
1430
+ },
1431
+ explanation: (_match$explanation2 = match.explanation) !== null && _match$explanation2 !== void 0 ? _match$explanation2 : `value must match ${match.regex}`
1432
+ } : null,
1433
+ length: {
1434
+ max: max !== null && max !== void 0 ? max : null,
1435
+ min: min !== null && min !== void 0 ? min : null
1436
+ }
1437
+ },
1438
+ defaultValue: defaultValue !== null && defaultValue !== void 0 ? defaultValue : isNullable ? null : '',
1439
+ isNullable
1440
+ };
1441
+ }
1442
+ });
1443
+ };
1444
+ }
1445
+
1446
+ function virtual({
1447
+ field,
1448
+ ...config
1449
+ }) {
1450
+ return meta => {
1451
+ var _config$ui, _config$ui2, _config$ui3;
1452
+ const usableField = typeof field === 'function' ? field(meta.lists) : field;
1453
+ const namedType = graphql.getNamedType(usableField.type);
1454
+ const hasRequiredArgs = usableField.args && Object.values(usableField.args).some(x => x.type instanceof schema.GNonNull && x.defaultValue === undefined);
1455
+ if ((!graphql.isLeafType(namedType) || hasRequiredArgs) && !((_config$ui = config.ui) !== null && _config$ui !== void 0 && _config$ui.query) && (((_config$ui2 = config.ui) === null || _config$ui2 === void 0 || (_config$ui2 = _config$ui2.itemView) === null || _config$ui2 === void 0 ? void 0 : _config$ui2.fieldMode) !== 'hidden' || ((_config$ui3 = config.ui) === null || _config$ui3 === void 0 || (_config$ui3 = _config$ui3.listView) === null || _config$ui3 === void 0 ? void 0 : _config$ui3.fieldMode) !== 'hidden')) {
1456
+ throw new Error(`${meta.listKey}.${meta.fieldKey} requires ui.query, or ui.listView.fieldMode and ui.itemView.fieldMode to be set to 'hidden'`);
1457
+ }
1458
+ return nextFields.fieldType({
1459
+ kind: 'none'
1460
+ })({
1461
+ ...config,
1462
+ output: nextFields.g.field({
1463
+ ...usableField,
1464
+ resolve({
1465
+ item
1466
+ }, ...args) {
1467
+ return usableField.resolve(item, ...args);
1468
+ }
1469
+ }),
1470
+ __ksTelemetryFieldTypeName: '@nixxie-cms/virtual',
1471
+ views: '@nixxie-cms/core/fields/types/virtual/views',
1472
+ getAdminMeta: () => {
1473
+ var _config$ui$query, _config$ui4;
1474
+ return {
1475
+ query: (_config$ui$query = (_config$ui4 = config.ui) === null || _config$ui4 === void 0 ? void 0 : _config$ui4.query) !== null && _config$ui$query !== void 0 ? _config$ui$query : ''
1476
+ };
1477
+ }
1478
+ });
1479
+ };
1480
+ }
1481
+
1482
+ function calendarDay(config = {}) {
1483
+ const {
1484
+ isIndexed,
1485
+ validation,
1486
+ defaultValue
1487
+ } = config;
1488
+ return meta => {
1489
+ var _config$db, _config$db2, _validation$isRequire;
1490
+ if (typeof defaultValue === 'string') {
1491
+ try {
1492
+ nextFields.g.CalendarDay.parseValue(defaultValue);
1493
+ } catch (err) {
1494
+ throw new Error(`The calendarDay field at ${meta.listKey}.${meta.fieldKey} specifies defaultValue: ${defaultValue} but values must be provided as a full-date ISO8601 string such as 1970-01-01`);
1495
+ }
1496
+ }
1497
+ const usesNativeDateType = meta.provider === 'postgresql' || meta.provider === 'mysql';
1498
+ function resolveInput(value) {
1499
+ if (meta.provider === 'sqlite' || value == null) {
1500
+ return value;
1501
+ }
1502
+ return dateStringToDateObjectInUTC(value);
1503
+ }
1504
+ const {
1505
+ mode,
1506
+ validate
1507
+ } = nonNullGraphql.makeValidateHook(meta, config);
1508
+ const commonResolveFilter = mode === 'optional' ? index.resolveCommon : x => x;
1509
+ return nextFields.fieldType({
1510
+ kind: 'scalar',
1511
+ mode,
1512
+ scalar: usesNativeDateType ? 'DateTime' : 'String',
1513
+ index: isIndexed === true ? 'index' : isIndexed || undefined,
1514
+ default: typeof defaultValue === 'string' ? {
1515
+ kind: 'literal',
1516
+ value: defaultValue
1517
+ } : undefined,
1518
+ map: (_config$db = config.db) === null || _config$db === void 0 ? void 0 : _config$db.map,
1519
+ extendPrismaSchema: (_config$db2 = config.db) === null || _config$db2 === void 0 ? void 0 : _config$db2.extendPrismaSchema,
1520
+ nativeType: usesNativeDateType ? 'Date' : undefined
1521
+ })({
1522
+ ...config,
1523
+ ...nonNullGraphql.defaultIsRequired(config, (_validation$isRequire = validation === null || validation === void 0 ? void 0 : validation.isRequired) !== null && _validation$isRequire !== void 0 ? _validation$isRequire : false),
1524
+ hooks: {
1525
+ ...config.hooks,
1526
+ validate
1527
+ },
1528
+ input: {
1529
+ uniqueWhere: isIndexed === 'unique' ? {
1530
+ arg: nextFields.g.arg({
1531
+ type: nextFields.g.CalendarDay
1532
+ }),
1533
+ resolve: usesNativeDateType ? dateStringToDateObjectInUTC : undefined
1534
+ } : undefined,
1535
+ where: {
1536
+ arg: nextFields.g.arg({
1537
+ type: mode === 'optional' ? CalendarDayNullableFilter : CalendarDayFilter
1538
+ }),
1539
+ resolve: usesNativeDateType ? value => commonResolveFilter(transformFilterDateStringsToDateObjects(value)) : commonResolveFilter
1540
+ },
1541
+ create: {
1542
+ arg: nextFields.g.arg({
1543
+ type: nextFields.g.CalendarDay,
1544
+ defaultValue
1545
+ }),
1546
+ resolve(val) {
1547
+ if (val === undefined) {
1548
+ val = defaultValue !== null && defaultValue !== void 0 ? defaultValue : null;
1549
+ }
1550
+ return resolveInput(val);
1551
+ }
1552
+ },
1553
+ update: {
1554
+ arg: nextFields.g.arg({
1555
+ type: nextFields.g.CalendarDay
1556
+ }),
1557
+ resolve: resolveInput
1558
+ },
1559
+ orderBy: {
1560
+ arg: nextFields.g.arg({
1561
+ type: nextFields.orderDirectionEnum
1562
+ })
1563
+ }
1564
+ },
1565
+ output: nextFields.g.field({
1566
+ type: nextFields.g.CalendarDay,
1567
+ resolve({
1568
+ value
1569
+ }) {
1570
+ if (value instanceof Date) {
1571
+ return value.toISOString().slice(0, 10);
1572
+ }
1573
+ return value;
1574
+ }
1575
+ }),
1576
+ __ksTelemetryFieldTypeName: '@nixxie-cms/calendarDay',
1577
+ views: '@nixxie-cms/core/fields/types/calendarDay/views',
1578
+ getAdminMeta() {
1579
+ return {
1580
+ defaultValue: defaultValue !== null && defaultValue !== void 0 ? defaultValue : null
1581
+ };
1582
+ }
1583
+ });
1584
+ };
1585
+ }
1586
+ function dateStringToDateObjectInUTC(value) {
1587
+ return new Date(`${value}T00:00Z`);
1588
+ }
1589
+ function transformFilterDateStringsToDateObjects(filter) {
1590
+ if (filter === null) {
1591
+ return filter;
1592
+ }
1593
+ return Object.fromEntries(Object.entries(filter).map(([key, value]) => {
1594
+ if (value == null) {
1595
+ return [key, value];
1596
+ }
1597
+ if (Array.isArray(value)) {
1598
+ return [key, value.map(dateStringToDateObjectInUTC)];
1599
+ }
1600
+ if (typeof value === 'object') {
1601
+ return [key, transformFilterDateStringsToDateObjects(value)];
1602
+ }
1603
+ return [key, dateStringToDateObjectInUTC(value)];
1604
+ }));
1605
+ }
1606
+ const filterFields = nestedType => ({
1607
+ equals: nextFields.g.arg({
1608
+ type: nextFields.g.CalendarDay
1609
+ }),
1610
+ in: nextFields.g.arg({
1611
+ type: nextFields.g.list(nextFields.g.nonNull(nextFields.g.CalendarDay))
1612
+ }),
1613
+ notIn: nextFields.g.arg({
1614
+ type: nextFields.g.list(nextFields.g.nonNull(nextFields.g.CalendarDay))
1615
+ }),
1616
+ lt: nextFields.g.arg({
1617
+ type: nextFields.g.CalendarDay
1618
+ }),
1619
+ lte: nextFields.g.arg({
1620
+ type: nextFields.g.CalendarDay
1621
+ }),
1622
+ gt: nextFields.g.arg({
1623
+ type: nextFields.g.CalendarDay
1624
+ }),
1625
+ gte: nextFields.g.arg({
1626
+ type: nextFields.g.CalendarDay
1627
+ }),
1628
+ not: nextFields.g.arg({
1629
+ type: nestedType
1630
+ })
1631
+ });
1632
+ const CalendarDayNullableFilter = nextFields.g.inputObject({
1633
+ name: 'CalendarDayNullableFilter',
1634
+ fields: () => filterFields(CalendarDayNullableFilter)
1635
+ });
1636
+ const CalendarDayFilter = nextFields.g.inputObject({
1637
+ name: 'CalendarDayFilter',
1638
+ fields: () => filterFields(CalendarDayFilter)
1639
+ });
1640
+
1641
+ // these are the lowest and highest values for a signed 32-bit integer
1642
+ const MAX_INT = 2147483647;
1643
+ const MIN_INT = -2147483648;
1644
+ function multiselect(config) {
1645
+ var _config$db, _config$db2, _config$db2$isNullabl;
1646
+ const {
1647
+ defaultValue: defaultValue_,
1648
+ ui: {
1649
+ displayMode = 'select',
1650
+ ...ui
1651
+ } = {}
1652
+ } = config;
1653
+ (_config$db = config.db) !== null && _config$db !== void 0 ? _config$db : config.db = {};
1654
+ (_config$db2$isNullabl = (_config$db2 = config.db).isNullable) !== null && _config$db2$isNullabl !== void 0 ? _config$db2$isNullabl : _config$db2.isNullable = false; // TODO: deprecated, remove in breaking change
1655
+ const defaultValue = config.db.isNullable ? defaultValue_ : defaultValue_ !== null && defaultValue_ !== void 0 ? defaultValue_ : []; // TODO: deprecated, remove in breaking change?
1656
+
1657
+ return meta => {
1658
+ var _config$db3, _config$db4;
1659
+ if (config.isIndexed === 'unique') {
1660
+ throw TypeError("isIndexed: 'unique' is not a supported option for field type multiselect");
1661
+ }
1662
+ const resolveCreate = val => {
1663
+ const resolved = resolveUpdate(val);
1664
+ if (resolved === undefined) {
1665
+ return defaultValue;
1666
+ }
1667
+ return resolved;
1668
+ };
1669
+ const resolveUpdate = val => {
1670
+ return val;
1671
+ };
1672
+ const transformedConfig = configToOptionsAndGraphQLType(config, meta);
1673
+ const type = nextFields.g.list(nextFields.g.nonNull(transformedConfig.graphqlType));
1674
+ const accepted = new Set(transformedConfig.options.map(x => x.value));
1675
+ if (accepted.size !== transformedConfig.options.length) {
1676
+ throw new Error(`${meta.listKey}.${meta.fieldKey} has duplicate options, this is not allowed`);
1677
+ }
1678
+ const {
1679
+ mode,
1680
+ validate
1681
+ } = nonNullGraphql.makeValidateHook(meta, config, ({
1682
+ inputData,
1683
+ operation,
1684
+ addValidationError
1685
+ }) => {
1686
+ if (operation === 'delete') return;
1687
+ const values = inputData[meta.fieldKey]; // resolvedData is JSON
1688
+ if (values != null) {
1689
+ for (const value of values) {
1690
+ if (!accepted.has(value)) {
1691
+ addValidationError(`'${value}' is not an accepted option`);
1692
+ }
1693
+ }
1694
+ if (new Set(values).size !== values.length) {
1695
+ addValidationError(`non-unique set of options selected`);
1696
+ }
1697
+ }
1698
+ });
1699
+ return nextFields.fieldType({
1700
+ kind: 'scalar',
1701
+ scalar: 'Json',
1702
+ mode,
1703
+ map: config === null || config === void 0 || (_config$db3 = config.db) === null || _config$db3 === void 0 ? void 0 : _config$db3.map,
1704
+ extendPrismaSchema: (_config$db4 = config.db) === null || _config$db4 === void 0 ? void 0 : _config$db4.extendPrismaSchema,
1705
+ default: meta.provider === 'sqlite' ? undefined : {
1706
+ kind: 'literal',
1707
+ // TODO: waiting on https://github.com/prisma/prisma/issues/26571
1708
+ // input.create manages defaultValues anyway
1709
+ value: JSON.stringify(defaultValue !== null && defaultValue !== void 0 ? defaultValue : null)
1710
+ }
1711
+ })({
1712
+ ...config,
1713
+ ui,
1714
+ __ksTelemetryFieldTypeName: '@nixxie-cms/multiselect',
1715
+ hooks: {
1716
+ ...config.hooks,
1717
+ validate
1718
+ },
1719
+ views: '@nixxie-cms/core/fields/types/multiselect/views',
1720
+ getAdminMeta: () => {
1721
+ var _config$type;
1722
+ return {
1723
+ options: transformedConfig.options,
1724
+ type: (_config$type = config.type) !== null && _config$type !== void 0 ? _config$type : 'string',
1725
+ displayMode: displayMode,
1726
+ defaultValue: []
1727
+ };
1728
+ },
1729
+ input: {
1730
+ create: {
1731
+ arg: nextFields.g.arg({
1732
+ type
1733
+ }),
1734
+ resolve: resolveCreate
1735
+ },
1736
+ update: {
1737
+ arg: nextFields.g.arg({
1738
+ type
1739
+ }),
1740
+ resolve: resolveUpdate
1741
+ }
1742
+ },
1743
+ output: nextFields.g.field({
1744
+ type: type,
1745
+ resolve({
1746
+ value
1747
+ }) {
1748
+ return value;
1749
+ }
1750
+ })
1751
+ });
1752
+ };
1753
+ }
1754
+ function configToOptionsAndGraphQLType(config, meta) {
1755
+ if (config.type === 'integer') {
1756
+ if (config.options.some(({
1757
+ value
1758
+ }) => !Number.isInteger(value) || value > MAX_INT || value < MIN_INT)) {
1759
+ throw new Error(`${meta.listKey}.${meta.fieldKey} specifies integer values that are outside the range of a 32-bit signed integer`);
1760
+ }
1761
+ return {
1762
+ graphqlType: nextFields.g.Int,
1763
+ options: config.options
1764
+ };
1765
+ }
1766
+ const options = config.options.map(option => {
1767
+ if (typeof option === 'string') {
1768
+ return {
1769
+ label: utils.humanize(option),
1770
+ value: option
1771
+ };
1772
+ }
1773
+ return option;
1774
+ });
1775
+ if (config.type === 'enum') {
1776
+ const enumName = `${meta.listKey}${utils.humanize(meta.fieldKey).replace(/ /g, '')}Type`;
1777
+ const graphqlType = nextFields.g.enum({
1778
+ name: enumName,
1779
+ values: nextFields.g.enumValues(options.map(x => x.value))
1780
+ });
1781
+ return {
1782
+ graphqlType,
1783
+ options
1784
+ };
1785
+ }
1786
+ return {
1787
+ graphqlType: nextFields.g.String,
1788
+ options
1789
+ };
1790
+ }
1791
+
1792
+ exports.relationship = index.relationship;
1793
+ exports.timestamp = index.timestamp;
1794
+ exports.password = fields_types_password_dist_nixxieCmsCoreFieldsTypesPassword.password;
1795
+ exports.bytes = fields_types_bytes_dist_nixxieCmsCoreFieldsTypesBytes.bytes;
1796
+ exports.bigInt = bigInt;
1797
+ exports.calendarDay = calendarDay;
1798
+ exports.checkbox = checkbox;
1799
+ exports.decimal = decimal;
1800
+ exports.file = file;
1801
+ exports.float = float;
1802
+ exports.image = image;
1803
+ exports.integer = integer;
1804
+ exports.json = json;
1805
+ exports.multiselect = multiselect;
1806
+ exports.select = select;
1807
+ exports.text = text;
1808
+ exports.virtual = virtual;