@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,338 @@
1
+ import UploadLink from 'apollo-upload-client/UploadHttpLink.mjs'
2
+ import NextHead from 'next/head'
3
+ import { type ReactNode, createContext, useContext, useEffect, useMemo } from 'react'
4
+
5
+ import { ClientSideOnlyDocumentElement, KeystarProvider } from '@keystar/ui/core'
6
+ import { injectGlobal, tokenSchema } from '@keystar/ui/style'
7
+ import { Toaster } from '@keystar/ui/toast'
8
+ import { useRouter } from '@nixxie-cms/core/admin-ui/router'
9
+
10
+ import { snapValueToClosest } from '../___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/PaginationControls'
11
+ import type {
12
+ AdminConfig,
13
+ BaseListTypeInfo,
14
+ ConditionalFilter,
15
+ ConditionalFilterCase,
16
+ FieldViews,
17
+ ListMeta,
18
+ } from '../types'
19
+ import { type AdminMetaQuery, adminMetaQuery } from './admin-meta-graphql'
20
+ import {
21
+ ApolloClient,
22
+ ApolloProvider,
23
+ type ErrorLike,
24
+ InMemoryCache,
25
+ gql,
26
+ useQuery,
27
+ } from './apollo'
28
+ import { getConditionalFilterFieldKeys, isActionAvailable } from './utils/filters'
29
+
30
+ type NixxieContextType = {
31
+ adminConfig: AdminConfig | null
32
+ apiPath: string | null
33
+ error?: ErrorLike | null
34
+ fieldViews: FieldViews
35
+ lists: { [list: string]: ListMeta }
36
+ }
37
+
38
+ const NixxieContext = createContext<NixxieContextType>({
39
+ adminConfig: null,
40
+ apiPath: null,
41
+ lists: {},
42
+ fieldViews: {},
43
+ })
44
+
45
+ type NixxieProviderProps = {
46
+ adminConfig: AdminConfig
47
+ apiPath: string
48
+ fieldViews: FieldViews
49
+ children: ReactNode
50
+ }
51
+
52
+ const expectedExports = new Set(['Field', 'controller'])
53
+
54
+ function InternalNixxieProvider({
55
+ adminConfig,
56
+ apiPath,
57
+ fieldViews,
58
+ children,
59
+ }: NixxieProviderProps) {
60
+ const { push: navigate } = useRouter()
61
+ const keystarRouter = useMemo(() => ({ navigate }), [navigate])
62
+ const { data, loading, error } = useQuery<AdminMetaQuery>(adminMetaQuery, {
63
+ errorPolicy: 'all',
64
+ })
65
+ const listsData = data?.nixxie?.adminMeta?.lists
66
+ const lists = useMemo(() => {
67
+ if (!listsData) return
68
+ if (error) return
69
+
70
+ const lists: NixxieContextType['lists'] = {}
71
+
72
+ for (const listData of listsData) {
73
+ lists[listData.key] = {
74
+ ...listData,
75
+ pageSize: snapValueToClosest(listData.pageSize ?? 50),
76
+ fields: {},
77
+ groups: [],
78
+ }
79
+
80
+ for (const field of listData.fields) {
81
+ for (const exportName of expectedExports) {
82
+ if ((fieldViews[field.viewsIndex] as any)[exportName] === undefined) {
83
+ throw new Error(
84
+ `The view for the field at ${listData.key}.${field.key} is missing the ${exportName} export`
85
+ )
86
+ }
87
+ }
88
+
89
+ const views = { ...fieldViews[field.viewsIndex] }
90
+ const customViews: Record<string, any> = {}
91
+ if (field.customViewsIndex !== null) {
92
+ const customViewsSource: FieldViews[number] & Record<string, any> =
93
+ fieldViews[field.customViewsIndex]
94
+ const allowedExportsOnCustomViews = new Set(views.allowedExportsOnCustomViews)
95
+ for (const exportName in customViewsSource) {
96
+ if (allowedExportsOnCustomViews.has(exportName)) {
97
+ customViews[exportName] = customViewsSource[exportName]
98
+ } else if (expectedExports.has(exportName)) {
99
+ ;(views as any)[exportName] = customViewsSource[exportName]
100
+ }
101
+ }
102
+ }
103
+
104
+ lists[listData.key].fields[field.key] = {
105
+ ...field,
106
+ createView: {
107
+ fieldMode: field.createView?.fieldMode ?? null,
108
+ isRequired: field.createView?.isRequired ?? false,
109
+ },
110
+ itemView: {
111
+ fieldMode: field.itemView?.fieldMode ?? null,
112
+ fieldPosition: field.itemView?.fieldPosition ?? null,
113
+ isRequired: field.itemView?.isRequired ?? false,
114
+ },
115
+ listView: {
116
+ fieldMode: field.listView?.fieldMode ?? null,
117
+ },
118
+ views,
119
+ controller: views.controller({
120
+ listKey: listData.key,
121
+ fieldKey: field.key,
122
+ label: field.label,
123
+ description: field.description,
124
+ fieldMeta: field.fieldMeta,
125
+ customViews,
126
+ }),
127
+ }
128
+ }
129
+
130
+ for (const group of listData.groups) {
131
+ lists[listData.key].groups.push({
132
+ label: group.label,
133
+ description: group.description,
134
+ fields: group.fields.map(field => lists[listData.key].fields[field.key]),
135
+ })
136
+ }
137
+ }
138
+
139
+ return lists
140
+ }, [listsData, error, fieldViews])
141
+
142
+ useEffect(() => {
143
+ injectGlobal({
144
+ body: {
145
+ fontFamily:
146
+ "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
147
+ WebkitFontSmoothing: 'antialiased',
148
+ MozOsxFontSmoothing: 'grayscale',
149
+ },
150
+ '*, ::before, ::after': {
151
+ borderWidth: 0,
152
+ borderStyle: 'solid',
153
+ borderColor: tokenSchema.color.border.neutral,
154
+ boxSizing: 'border-box',
155
+ },
156
+ // Force light background on all Keystar surface/canvas elements
157
+ // when they appear inside the main content (not inside our dark sidebar)
158
+ '[data-nixxie-content]': {
159
+ colorScheme: 'light',
160
+ },
161
+ })
162
+ }, [])
163
+
164
+ // TODO
165
+ if (loading) return null
166
+ // if (!meta) return null
167
+ return (
168
+ <KeystarProvider router={keystarRouter} colorScheme="light">
169
+ <ClientSideOnlyDocumentElement bodyBackground="canvas" />
170
+ <NextHead>
171
+ <meta key="viewport" name="viewport" content="width=device-width, initial-scale=1.0" />
172
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
173
+ <link
174
+ href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"
175
+ rel="stylesheet"
176
+ />
177
+ </NextHead>
178
+
179
+ <NixxieContext.Provider
180
+ value={{
181
+ adminConfig,
182
+ apiPath,
183
+ fieldViews,
184
+ lists: lists ?? {},
185
+ error: error ?? null,
186
+ }}
187
+ >
188
+ {children}
189
+ </NixxieContext.Provider>
190
+ <Toaster />
191
+ </KeystarProvider>
192
+ )
193
+ }
194
+
195
+ export function NixxieProvider(props: NixxieProviderProps) {
196
+ const apolloClient = useMemo(
197
+ () =>
198
+ new ApolloClient({
199
+ cache: new InMemoryCache(),
200
+ link: new UploadLink({
201
+ uri: props.apiPath,
202
+ headers: { 'Apollo-Require-Preflight': 'true' },
203
+ }),
204
+ }),
205
+ [props.apiPath]
206
+ )
207
+
208
+ return (
209
+ <ApolloProvider client={apolloClient}>
210
+ <InternalNixxieProvider {...props} />
211
+ </ApolloProvider>
212
+ )
213
+ }
214
+
215
+ export function useNixxie() {
216
+ return useContext(NixxieContext)
217
+ }
218
+
219
+ export function useList(listKey: string) {
220
+ const { lists } = useNixxie()
221
+ const list = lists?.[listKey]
222
+ if (!list) throw new Error(`Unknown list ${listKey}`)
223
+ return list
224
+ }
225
+
226
+ export function useField(listKey: string, fieldKey: string) {
227
+ const list = useList(listKey)
228
+ const field = list.fields[fieldKey]
229
+ if (!field) throw new Error(`Unknown field ${listKey}.${fieldKey}`)
230
+ return field
231
+ }
232
+
233
+ // TODO useContext?
234
+ export function useListItem(
235
+ listKey: string,
236
+ itemId: string | null
237
+ ): useQuery.Result<
238
+ {
239
+ item: Record<string, unknown> | null
240
+ nixxie: {
241
+ adminMeta: {
242
+ list: {
243
+ fields: {
244
+ key: string
245
+ itemView: {
246
+ fieldMode: ConditionalFilter<
247
+ 'edit' | 'read' | 'hidden',
248
+ 'read' | 'hidden',
249
+ BaseListTypeInfo
250
+ >
251
+ fieldPosition: 'form' | 'sidebar'
252
+ isRequired: ConditionalFilterCase<BaseListTypeInfo>
253
+ } | null
254
+ }[]
255
+ actions: {
256
+ key: string
257
+ itemView: {
258
+ actionMode: ConditionalFilter<
259
+ 'enabled' | 'disabled' | 'hidden',
260
+ 'disabled' | 'hidden',
261
+ BaseListTypeInfo
262
+ >
263
+ } | null
264
+ }[]
265
+ } | null
266
+ }
267
+ }
268
+ },
269
+ { id: string | null; listKey: string }
270
+ > {
271
+ const list = useList(listKey)
272
+ const query = useMemo(() => {
273
+ const selectedFieldKeys = new Set<string>()
274
+
275
+ for (const field of Object.values(list.fields)) {
276
+ if (field.key === 'id') continue // always in the query
277
+ if (field.itemView.fieldMode === 'hidden') continue
278
+ selectedFieldKeys.add(field.key)
279
+ }
280
+
281
+ for (const action of list.actions) {
282
+ if (!isActionAvailable(action, action.itemView)) continue
283
+
284
+ for (const fieldKey of getConditionalFilterFieldKeys(action.itemView.actionMode)) {
285
+ selectedFieldKeys.add(fieldKey)
286
+ }
287
+
288
+ for (const arg of action.graphql.arguments) {
289
+ if (!arg.source) continue
290
+ selectedFieldKeys.add(arg.source.itemField)
291
+ }
292
+ }
293
+
294
+ const selectedFields = [...selectedFieldKeys]
295
+ .map(fieldKey => list.fields[fieldKey])
296
+ .filter(Boolean)
297
+ .map(field => field.controller.graphqlSelection)
298
+ .join('\n')
299
+
300
+ return gql`
301
+ query KsFetchItem ($listKey: String!, $id: ID!) {
302
+ nixxie {
303
+ adminMeta {
304
+ list(key: $listKey, itemId: $id) {
305
+ fields {
306
+ key
307
+ itemView {
308
+ fieldMode
309
+ fieldPosition
310
+ isRequired
311
+ }
312
+ }
313
+ actions {
314
+ key
315
+ itemView {
316
+ actionMode
317
+ }
318
+ }
319
+ }
320
+ }
321
+ }
322
+ item: ${list.graphql.names.itemQueryName}(where: { id: $id }) {
323
+ id
324
+ ${selectedFields}
325
+ }
326
+ }
327
+ `
328
+ }, [list])
329
+
330
+ return useQuery(query, {
331
+ errorPolicy: 'all',
332
+ skip: itemId === null,
333
+ variables: {
334
+ listKey,
335
+ id: itemId,
336
+ },
337
+ })
338
+ }
@@ -0,0 +1,2 @@
1
+ export * from 'next/image'
2
+ export { default } from 'next/image'
@@ -0,0 +1 @@
1
+ export { NixxieProvider, useNixxie, useList } from './context'
@@ -0,0 +1,24 @@
1
+ /**
2
+ * This file is exposed by the /router entrypoint, and helps ensure that other
3
+ * packages import the same instance of next's router.
4
+ */
5
+
6
+ // not using export * because Rollup's CJS re-export code doesn't ignore __esModule on the exports object so it will re-define it if it exists
7
+ // and since __esModule isn't configurable(at least with the code that's _generally_ emitted by Rollup, Babel, tsc and etc.)
8
+ // an error will be thrown
9
+ // that's normally not a problem because modules generally use Object.defineProperty(exports, '__esModule', { value: true })
10
+ // which means that the property isn't enumerable but Next uses Babel's loose mode and Babel's loose mode for the CJS transform
11
+ // uses exports.__esModule = true instead of defineProperty so the property is enumerable
12
+ export { Router, useRouter, withRouter } from 'next/router'
13
+ export type { NextRouter } from 'next/router'
14
+
15
+ import NextLink, { type LinkProps as NextLinkProps } from 'next/link'
16
+ import type { AnchorHTMLAttributes } from 'react'
17
+
18
+ export type LinkProps = NextLinkProps & AnchorHTMLAttributes<HTMLAnchorElement>
19
+
20
+ export const Link = NextLink
21
+
22
+ import NextHead from 'next/head'
23
+
24
+ export const Head = NextHead
@@ -0,0 +1,155 @@
1
+ import { type Entry, walk as _walk } from '@nodelib/fs.walk'
2
+ import fse from 'fs-extra'
3
+ import fs from 'node:fs/promises'
4
+ import Path from 'node:path'
5
+ import { promisify } from 'node:util'
6
+
7
+ import type { AdminMetaSource } from '../../lib/admin-meta'
8
+ import type { AdminFileToWrite, NixxieConfig } from '../../types'
9
+ import { writeAdminFiles } from '../templates'
10
+ import { withSpan } from '../../lib/otel'
11
+
12
+ const walk = promisify(_walk)
13
+
14
+ function toPosixPath(p: string) {
15
+ return p.split(Path.sep).join('/')
16
+ }
17
+
18
+ function serializePathForImport(path: string) {
19
+ // JSON.stringify is important here because it will escape windows style paths(and any thing else that might potentially be in there)
20
+ return JSON.stringify(
21
+ toPosixPath(
22
+ path
23
+ // Next is unhappy about imports that include .ts/tsx in them because TypeScript is unhappy with them because when doing a TypeScript compilation with tsc, the imports won't be written so they would be wrong there
24
+ .replace(/\.tsx?$/, '')
25
+ )
26
+ )
27
+ }
28
+
29
+ export async function writeAdminFile(file: AdminFileToWrite, projectAdminPath: string) {
30
+ const outputFilename = Path.join(projectAdminPath, file.outputPath)
31
+ if (file.mode === 'copy') {
32
+ if (!Path.isAbsolute(file.inputPath)) {
33
+ throw new Error(
34
+ `An inputPath of "${file.inputPath}" was provided to copy but inputPaths must be absolute`
35
+ )
36
+ }
37
+ await fse.ensureDir(Path.dirname(outputFilename))
38
+ // TODO: should we use copyFile or copy?
39
+ await fs.copyFile(file.inputPath, outputFilename)
40
+ }
41
+ let content: undefined | string
42
+ try {
43
+ content = await fs.readFile(outputFilename, 'utf8')
44
+ } catch (err: any) {
45
+ if (err.code !== 'ENOENT') throw err
46
+ }
47
+ if (file.mode === 'write' && content !== file.src) {
48
+ await fse.outputFile(outputFilename, file.src)
49
+ }
50
+ return Path.normalize(outputFilename)
51
+ }
52
+
53
+ const pageExtensions = new Set(['.js', '.jsx', '.ts', '.tsx'])
54
+
55
+ export async function generateAdminUI(
56
+ config: NixxieConfig,
57
+ adminMeta: AdminMetaSource,
58
+ projectAdminPath: string,
59
+ isLiveReload: boolean
60
+ ) {
61
+ await withSpan('generating admin next application', async () => {
62
+ // when we're not doing a live reload, we want to clear everything out except the .next directory (not the .next directory because it has caches)
63
+ // so that at least every so often, we'll clear out anything that the deleting we do during live reloads doesn't (should just be directories)
64
+ if (!isLiveReload) {
65
+ const dir = await fs.readdir(projectAdminPath).catch(err => {
66
+ if (err.code === 'ENOENT') return []
67
+ throw err
68
+ })
69
+
70
+ await Promise.all(
71
+ dir.map(x => {
72
+ if (x === '.next') return
73
+ return fs.rm(Path.join(projectAdminPath, x), { recursive: true })
74
+ })
75
+ )
76
+ }
77
+
78
+ // Write out the files configured by the user
79
+ const userFilesToWrite = await config.ui.getAdditionalFiles()
80
+ const savedFiles = await Promise.all(
81
+ userFilesToWrite.map(file => writeAdminFile(file, projectAdminPath))
82
+ )
83
+ const uniqueFiles = new Set(savedFiles)
84
+
85
+ // Add files to pages/ which point to any files which exist in admin/pages
86
+ const adminConfigDir = Path.join(process.cwd(), 'admin')
87
+ const userPagesDir = Path.join(adminConfigDir, 'pages')
88
+
89
+ let userPagesEntries: Entry[] = []
90
+ try {
91
+ userPagesEntries = await walk(userPagesDir, {
92
+ entryFilter: entry => entry.dirent.isFile() && pageExtensions.has(Path.extname(entry.name)),
93
+ })
94
+ } catch (err: any) {
95
+ if (err.code !== 'ENOENT') throw err
96
+ }
97
+
98
+ // Collect files into a map keyed by outputPath to handle duplicates
99
+ // User-provided files take precedence over internal files
100
+ const adminFilesMap = new Map<string, AdminFileToWrite>()
101
+
102
+ // Add internal files first
103
+ for (const file of writeAdminFiles(config, adminMeta)) {
104
+ adminFilesMap.set(file.outputPath, file)
105
+ }
106
+
107
+ // Add user page files (these override internal files)
108
+ for (const { path } of userPagesEntries) {
109
+ const outputFilename = toPosixPath(Path.relative(adminConfigDir, path))
110
+ const importPath = Path.relative(
111
+ Path.dirname(Path.join(projectAdminPath, outputFilename)),
112
+ path
113
+ )
114
+ const serializedImportPath = serializePathForImport(importPath)
115
+ adminFilesMap.set(outputFilename, {
116
+ mode: 'write',
117
+ outputPath: outputFilename,
118
+ src: `export { default } from ${serializedImportPath}`,
119
+ })
120
+ }
121
+
122
+ // Filter out files already written by getAdditionalFiles() and convert to array
123
+ const adminFiles = Array.from(adminFilesMap.values()).filter(
124
+ x => !uniqueFiles.has(Path.normalize(Path.join(projectAdminPath, x.outputPath)))
125
+ )
126
+
127
+ // Write distinct output paths in parallel after deterministic de-duplication
128
+ await Promise.all(adminFiles.map(file => writeAdminFile(file, projectAdminPath)))
129
+
130
+ // Because Next will re-compile things (or at least check things and log a bunch of stuff)
131
+ // if we delete pages and then re-create them, we want to avoid that when live reloading
132
+ // so we only delete things that shouldn't exist anymore
133
+ // this won't clear out empty directories, this is fine since:
134
+ // - they won't create pages in Admin UI which is really what this deleting is about avoiding
135
+ // - we'll remove them when the user restarts the process
136
+ if (isLiveReload) {
137
+ const ignoredDir = Path.resolve(projectAdminPath, '.next')
138
+ const ignoredFiles = new Set(
139
+ [
140
+ ...adminFiles.map(x => x.outputPath),
141
+ ...uniqueFiles,
142
+ 'next-env.d.ts',
143
+ 'pages/api/__nixxie_api_build.js',
144
+ ].map(x => Path.resolve(projectAdminPath, x))
145
+ )
146
+
147
+ const entries = await walk(projectAdminPath, {
148
+ deepFilter: entry => entry.path !== ignoredDir,
149
+ entryFilter: entry => entry.dirent.isFile() && !ignoredFiles.has(entry.path),
150
+ })
151
+
152
+ await Promise.all(entries.map(entry => fs.rm(entry.path, { recursive: true })))
153
+ }
154
+ })
155
+ }
@@ -0,0 +1 @@
1
+ export { generateAdminUI } from './generateAdminUI'
@@ -0,0 +1,60 @@
1
+ import Path from 'node:path'
2
+ import resolve from 'resolve'
3
+
4
+ import type { AdminMetaSource } from '../../lib/admin-meta'
5
+ import type { NixxieConfig } from '../../types'
6
+
7
+ function doesConfigExist(path: string[]) {
8
+ try {
9
+ const configPath = Path.join(process.cwd(), ...path)
10
+ resolve.sync(configPath, {
11
+ extensions: ['.ts', '.tsx', '.js'],
12
+ preserveSymlinks: false,
13
+ })
14
+ return true
15
+ } catch (err: any) {
16
+ if (err.code === 'MODULE_NOT_FOUND') return false
17
+ throw err
18
+ }
19
+ }
20
+
21
+ export function appTemplate(config: NixxieConfig, adminMeta: AdminMetaSource) {
22
+ const allViews = adminMeta.views.map(viewRelativeToProject => {
23
+ const isRelativeToFile =
24
+ viewRelativeToProject.startsWith('./') || viewRelativeToProject.startsWith('../')
25
+ const viewRelativeToAppFile = isRelativeToFile
26
+ ? '../../../' + viewRelativeToProject
27
+ : viewRelativeToProject
28
+
29
+ // we're not using serializePathForImport here because we want the thing you write for a view
30
+ // to be exactly what you would put in an import in the project directory.
31
+ // we're still using JSON.stringify to escape anything that might need to be though
32
+ return JSON.stringify(viewRelativeToAppFile)
33
+ })
34
+ // -- TEMPLATE START
35
+ return `import { getApp } from '@nixxie-cms/core/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App'
36
+
37
+ ${allViews.map((views, i) => `import * as view${i} from ${views}`).join('\n')}
38
+
39
+ ${
40
+ doesConfigExist(['.nixxie', 'admin', 'config'])
41
+ ? `import * as packageAdminConfig from "../../../.nixxie/admin/config"`
42
+ : 'let packageAdminConfig = {}'
43
+ }
44
+
45
+ ${
46
+ doesConfigExist(['admin', 'config'])
47
+ ? `import * as userAdminConfig from "../../../admin/config"`
48
+ : 'let userAdminConfig = {}'
49
+ }
50
+
51
+ export default getApp({
52
+ adminConfig: {
53
+ ...packageAdminConfig,
54
+ ...userAdminConfig
55
+ },
56
+ apiPath: "${config.graphql.path}",
57
+ fieldViews: [${allViews.map((_, i) => `view${i}`)}],
58
+ })
59
+ `
60
+ }
@@ -0,0 +1,5 @@
1
+ export const createItemTemplate = (listKey: string) =>
2
+ `import { getCreateItemPage } from '@nixxie-cms/core/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage';
3
+
4
+ export default getCreateItemPage(${JSON.stringify({ listKey })})
5
+ `
@@ -0,0 +1,2 @@
1
+ export const homeTemplate = `export { HomePage as default } from '@nixxie-cms/core/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage';
2
+ `
@@ -0,0 +1,53 @@
1
+ import path from 'node:path'
2
+
3
+ import type { AdminMetaSource } from '../../lib/admin-meta'
4
+ import type { NixxieConfig } from '../../types'
5
+ import { appTemplate } from './app'
6
+ import { createItemTemplate } from './create-item'
7
+ import { homeTemplate } from './home'
8
+ import { itemTemplate } from './item'
9
+ import { listTemplate } from './list'
10
+ import { nextConfigTemplate } from './next-config'
11
+ import { noAccessTemplate } from './no-access'
12
+
13
+ const pkgDir = path.dirname(require.resolve('@nixxie-cms/core/package.json'))
14
+
15
+ export function writeAdminFiles(config: NixxieConfig, adminMeta: AdminMetaSource) {
16
+ return [
17
+ {
18
+ mode: 'write' as const,
19
+ src: nextConfigTemplate(config.ui?.basePath),
20
+ outputPath: 'next.config.js',
21
+ },
22
+ {
23
+ mode: 'copy' as const,
24
+ inputPath: path.join(pkgDir, 'static', 'favicon.ico'),
25
+ outputPath: 'public/favicon.ico',
26
+ },
27
+ {
28
+ mode: 'copy' as const,
29
+ inputPath: path.join(pkgDir, 'static', 'favicon.svg'),
30
+ outputPath: 'public/favicon.svg',
31
+ },
32
+ {
33
+ mode: 'write' as const,
34
+ src: noAccessTemplate(config.session),
35
+ outputPath: 'pages/no-access.js',
36
+ },
37
+ {
38
+ mode: 'write' as const,
39
+ src: appTemplate(config, adminMeta),
40
+ outputPath: 'pages/_app.js',
41
+ },
42
+ { mode: 'write' as const, src: homeTemplate, outputPath: 'pages/index.js' },
43
+ ...adminMeta.lists.flatMap(({ path, key }) => [
44
+ { mode: 'write' as const, src: listTemplate(key), outputPath: `pages/${path}/index.js` },
45
+ { mode: 'write' as const, src: itemTemplate(key), outputPath: `pages/${path}/[id].js` },
46
+ {
47
+ mode: 'write' as const,
48
+ src: createItemTemplate(key),
49
+ outputPath: `pages/${path}/create.js`,
50
+ },
51
+ ]),
52
+ ]
53
+ }
@@ -0,0 +1,5 @@
1
+ export const itemTemplate = (listKey: string) =>
2
+ `import { getItemPage } from '@nixxie-cms/core/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage';
3
+
4
+ export default getItemPage(${JSON.stringify({ listKey })})
5
+ `
@@ -0,0 +1,5 @@
1
+ export const listTemplate = (listKey: string) =>
2
+ `import { getListPage } from '@nixxie-cms/core/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage';
3
+
4
+ export default getListPage(${JSON.stringify({ listKey })});
5
+ `
@@ -0,0 +1,16 @@
1
+ export const nextConfigTemplate = (basePath?: string) =>
2
+ `const nextConfig = {
3
+ bundlePagesRouterDependencies: true,
4
+ typescript: {
5
+ ignoreBuildErrors: true,
6
+ },
7
+ eslint: {
8
+ ignoreDuringBuilds: true,
9
+ },
10
+ // We use transpilePackages for the custom admin-ui pages in the ./admin folder
11
+ // as they import ts files into nextjs
12
+ transpilePackages: ['../../admin'],
13
+ ${basePath ? `basePath: '${basePath}',` : ''}
14
+ }
15
+
16
+ module.exports = nextConfig`
@@ -0,0 +1,7 @@
1
+ import type { NixxieConfig } from '../../types'
2
+
3
+ export const noAccessTemplate = (session: NixxieConfig['session']) =>
4
+ `import { getNoAccessPage } from '@nixxie-cms/core/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage';
5
+
6
+ export default getNoAccessPage(${JSON.stringify({ sessionsEnabled: !!session })})
7
+ `