@nixxie-cms/core 1.0.0 → 1.0.2

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 (187) hide show
  1. package/README.md +2 -2
  2. package/admin-ui/components/dist/nixxie-cms-core-admin-ui-components.cjs.js +4 -4
  3. package/admin-ui/components/dist/nixxie-cms-core-admin-ui-components.esm.js +4 -4
  4. package/admin-ui/context/dist/nixxie-cms-core-admin-ui-context.cjs.js +2 -2
  5. package/admin-ui/context/dist/nixxie-cms-core-admin-ui-context.esm.js +2 -2
  6. package/context/dist/nixxie-cms-core-context.cjs.js +2 -2
  7. package/context/dist/nixxie-cms-core-context.esm.js +2 -2
  8. package/dist/{CreateItemDialog-33335548.esm.js → CreateItemDialog-7008b050.esm.js} +1 -1
  9. package/dist/{CreateItemDialog-56cf59b7.cjs.js → CreateItemDialog-a0cab315.cjs.js} +1 -1
  10. package/dist/{PageContainer-7db73317.esm.js → PageContainer-5ae731cc.esm.js} +25 -18
  11. package/dist/{PageContainer-27c27f10.cjs.js → PageContainer-abd7159f.cjs.js} +25 -18
  12. package/dist/{admin-meta-graphql-6f7f5331.esm.js → admin-meta-graphql-0e6e606e.esm.js} +1 -1
  13. package/dist/{admin-meta-graphql-c8f926e9.cjs.js → admin-meta-graphql-306c224a.cjs.js} +1 -1
  14. package/dist/{context-3132c3ed.esm.js → context-af9957ed.esm.js} +2 -2
  15. package/dist/{context-e7a45152.cjs.js → context-b5204629.cjs.js} +2 -2
  16. package/dist/declarations/src/admin-ui/components/Navigation.d.ts.map +1 -1
  17. package/dist/declarations/src/admin-ui/components/PageContainer.d.ts.map +1 -1
  18. package/dist/declarations/src/helpers.d.ts.map +1 -1
  19. package/dist/declarations/src/index.d.ts +1 -0
  20. package/dist/declarations/src/index.d.ts.map +1 -1
  21. package/dist/declarations/src/internal-unstable/admin-ui/id-field-view.d.ts.map +1 -0
  22. package/dist/declarations/src/internal-unstable/admin-ui/pages/App/index.d.ts.map +1 -0
  23. package/dist/declarations/src/internal-unstable/admin-ui/pages/CreateItemPage/index.d.ts.map +1 -0
  24. package/dist/declarations/src/internal-unstable/admin-ui/pages/HomePage/index.d.ts.map +1 -0
  25. package/dist/declarations/src/internal-unstable/admin-ui/pages/ItemPage/index.d.ts.map +1 -0
  26. package/dist/declarations/src/internal-unstable/admin-ui/pages/ListPage/index.d.ts.map +1 -0
  27. package/dist/declarations/src/internal-unstable/admin-ui/pages/NoAccessPage/index.d.ts.map +1 -0
  28. package/dist/declarations/src/internal-unstable/artifacts.d.ts.map +1 -0
  29. package/dist/declarations/src/lib/core/initialise-lists.d.ts +1 -1
  30. package/dist/declarations/src/schema.d.ts.map +1 -1
  31. package/dist/declarations/src/types/config/index.d.ts +60 -1
  32. package/dist/declarations/src/types/config/index.d.ts.map +1 -1
  33. package/dist/declarations/src/types/config/lists.d.ts +4 -4
  34. package/dist/declarations/src/types/context.d.ts +150 -0
  35. package/dist/declarations/src/types/context.d.ts.map +1 -1
  36. package/dist/declarations/src/types/next-fields.d.ts +1 -1
  37. package/dist/{express-e9ed9a7d.cjs.js → express-455ae20c.cjs.js} +1 -1
  38. package/dist/{express-6743b918.esm.js → express-7559ca2d.esm.js} +1 -1
  39. package/dist/{index-ac01583b.cjs.js → index-89635494.cjs.js} +4 -4
  40. package/dist/{index-24b78415.esm.js → index-baa799e0.esm.js} +4 -4
  41. package/dist/nixxie-cms-core.cjs.js +104 -77
  42. package/dist/nixxie-cms-core.esm.js +104 -77
  43. package/dist/{non-null-graphql-5315718c.esm.js → non-null-graphql-a84ed64d.esm.js} +1 -1
  44. package/dist/{non-null-graphql-17b83ddc.cjs.js → non-null-graphql-add6bb3d.cjs.js} +1 -1
  45. package/dist/{resolve-hooks-66fe8a8e.cjs.js → resolve-hooks-165a9ce2.cjs.js} +1 -1
  46. package/dist/{resolve-hooks-17aafd37.esm.js → resolve-hooks-6813a045.esm.js} +2 -2
  47. package/dist/{system-dfec2f0a.esm.js → system-03e49e4f.esm.js} +8 -4
  48. package/dist/{system-48c5f6df.cjs.js → system-a321642d.cjs.js} +8 -4
  49. package/dist/{useFilter-0b5a1ee6.esm.js → useFilter-9b6db1f9.esm.js} +1 -1
  50. package/dist/{useFilter-1a4e6900.cjs.js → useFilter-acc9d413.cjs.js} +1 -1
  51. package/fields/dist/nixxie-cms-core-fields.cjs.js +16 -16
  52. package/fields/dist/nixxie-cms-core-fields.esm.js +17 -17
  53. package/fields/types/bytes/dist/nixxie-cms-core-fields-types-bytes.cjs.js +3 -3
  54. package/fields/types/bytes/dist/nixxie-cms-core-fields-types-bytes.esm.js +3 -3
  55. package/fields/types/bytes/views/dist/nixxie-cms-core-fields-types-bytes-views.cjs.js +1 -1
  56. package/fields/types/bytes/views/dist/nixxie-cms-core-fields-types-bytes-views.esm.js +1 -1
  57. package/fields/types/password/dist/nixxie-cms-core-fields-types-password.cjs.js +3 -3
  58. package/fields/types/password/dist/nixxie-cms-core-fields-types-password.esm.js +3 -3
  59. package/fields/types/relationship/views/dist/nixxie-cms-core-fields-types-relationship-views.cjs.js +4 -4
  60. package/fields/types/relationship/views/dist/nixxie-cms-core-fields-types-relationship-views.esm.js +4 -4
  61. package/fields/types/select/views/dist/nixxie-cms-core-fields-types-select-views.cjs.js +1 -1
  62. package/fields/types/select/views/dist/nixxie-cms-core-fields-types-select-views.esm.js +1 -1
  63. package/fields/types/text/views/dist/nixxie-cms-core-fields-types-text-views.cjs.js +1 -1
  64. package/fields/types/text/views/dist/nixxie-cms-core-fields-types-text-views.esm.js +1 -1
  65. package/internal-unstable/admin-ui/id-field-view/dist/nixxie-cms-core-internal-unstable-admin-ui-id-field-view.cjs.d.ts +2 -0
  66. package/internal-unstable/admin-ui/id-field-view/dist/nixxie-cms-core-internal-unstable-admin-ui-id-field-view.cjs.js +244 -0
  67. package/internal-unstable/admin-ui/id-field-view/dist/nixxie-cms-core-internal-unstable-admin-ui-id-field-view.esm.js +235 -0
  68. package/internal-unstable/admin-ui/id-field-view/package.json +4 -0
  69. package/internal-unstable/admin-ui/next-config/package.json +4 -0
  70. package/internal-unstable/admin-ui/pages/App/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-App.cjs.d.ts +2 -0
  71. package/internal-unstable/admin-ui/pages/App/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-App.cjs.js +59 -0
  72. package/internal-unstable/admin-ui/pages/App/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-App.esm.js +55 -0
  73. package/internal-unstable/admin-ui/pages/App/package.json +4 -0
  74. package/internal-unstable/admin-ui/pages/CreateItemPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-CreateItemPage.cjs.d.ts +2 -0
  75. package/internal-unstable/admin-ui/pages/CreateItemPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-CreateItemPage.cjs.js +116 -0
  76. package/internal-unstable/admin-ui/pages/CreateItemPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-CreateItemPage.esm.js +112 -0
  77. package/internal-unstable/admin-ui/pages/CreateItemPage/package.json +4 -0
  78. package/internal-unstable/admin-ui/pages/HomePage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-HomePage.cjs.d.ts +2 -0
  79. package/internal-unstable/admin-ui/pages/HomePage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-HomePage.cjs.js +336 -0
  80. package/internal-unstable/admin-ui/pages/HomePage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-HomePage.esm.js +332 -0
  81. package/internal-unstable/admin-ui/pages/HomePage/package.json +4 -0
  82. package/internal-unstable/admin-ui/pages/ItemPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-ItemPage.cjs.d.ts +2 -0
  83. package/internal-unstable/admin-ui/pages/ItemPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-ItemPage.cjs.js +463 -0
  84. package/internal-unstable/admin-ui/pages/ItemPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-ItemPage.esm.js +455 -0
  85. package/internal-unstable/admin-ui/pages/ItemPage/package.json +4 -0
  86. package/internal-unstable/admin-ui/pages/ListPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-ListPage.cjs.d.ts +2 -0
  87. package/internal-unstable/admin-ui/pages/ListPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-ListPage.cjs.js +1195 -0
  88. package/internal-unstable/admin-ui/pages/ListPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-ListPage.esm.js +1187 -0
  89. package/internal-unstable/admin-ui/pages/ListPage/package.json +4 -0
  90. package/internal-unstable/admin-ui/pages/NoAccessPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-NoAccessPage.cjs.d.ts +2 -0
  91. package/internal-unstable/admin-ui/pages/NoAccessPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-NoAccessPage.cjs.js +40 -0
  92. package/internal-unstable/admin-ui/pages/NoAccessPage/dist/nixxie-cms-core-internal-unstable-admin-ui-pages-NoAccessPage.esm.js +35 -0
  93. package/internal-unstable/admin-ui/pages/NoAccessPage/package.json +4 -0
  94. package/internal-unstable/artifacts/dist/nixxie-cms-core-internal-unstable-artifacts.cjs.d.ts +2 -0
  95. package/internal-unstable/artifacts/dist/nixxie-cms-core-internal-unstable-artifacts.cjs.js +51 -0
  96. package/internal-unstable/artifacts/dist/nixxie-cms-core-internal-unstable-artifacts.esm.js +38 -0
  97. package/internal-unstable/artifacts/package.json +4 -0
  98. package/package.json +44 -44
  99. package/scripts/cli/dist/nixxie-cms-core-scripts-cli.cjs.js +44 -15
  100. package/scripts/cli/dist/nixxie-cms-core-scripts-cli.esm.js +44 -15
  101. package/scripts/dist/nixxie-cms-core-scripts.cjs.js +3 -3
  102. package/scripts/dist/nixxie-cms-core-scripts.esm.js +3 -3
  103. package/src/admin-ui/admin-meta-graphql.ts +168 -168
  104. package/src/admin-ui/components/CommandPalette.tsx +433 -431
  105. package/src/admin-ui/components/Navigation.tsx +389 -385
  106. package/src/admin-ui/components/PageContainer.tsx +311 -310
  107. package/src/admin-ui/components/WelcomeDialog.tsx +1 -1
  108. package/src/admin-ui/context.tsx +338 -338
  109. package/src/admin-ui/templates/app.ts +60 -60
  110. package/src/admin-ui/templates/create-item.ts +5 -5
  111. package/src/admin-ui/templates/home.ts +2 -2
  112. package/src/admin-ui/templates/item.tsx +5 -5
  113. package/src/admin-ui/templates/list.tsx +5 -5
  114. package/src/admin-ui/templates/next-config.ts +29 -0
  115. package/src/admin-ui/templates/no-access.ts +7 -7
  116. package/src/fields/types/bigInt/index.ts +181 -181
  117. package/src/fields/types/bytes/index.ts +275 -275
  118. package/src/fields/types/calendarDay/index.ts +194 -194
  119. package/src/fields/types/checkbox/index.ts +76 -76
  120. package/src/fields/types/decimal/index.ts +182 -182
  121. package/src/fields/types/file/index.ts +168 -168
  122. package/src/fields/types/float/index.ts +133 -133
  123. package/src/fields/types/image/index.ts +244 -244
  124. package/src/fields/types/integer/index.ts +156 -156
  125. package/src/fields/types/json/index.ts +77 -77
  126. package/src/fields/types/multiselect/index.ts +212 -212
  127. package/src/fields/types/password/index.ts +241 -241
  128. package/src/fields/types/relationship/index.ts +381 -381
  129. package/src/fields/types/relationship/views/RelationshipTable.tsx +190 -190
  130. package/src/fields/types/select/index.ts +226 -226
  131. package/src/fields/types/text/index.ts +207 -207
  132. package/src/fields/types/timestamp/index.ts +116 -116
  133. package/src/fields/types/virtual/index.ts +108 -108
  134. package/src/helpers.ts +342 -316
  135. package/src/index.ts +4 -0
  136. package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/id-field-view.tsx +167 -167
  137. package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/App/index.tsx +22 -22
  138. package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/CreateItemPage/index.tsx +71 -71
  139. package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/HomePage/index.tsx +333 -333
  140. package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/ItemPage/common.tsx +358 -358
  141. package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/ItemPage/index.tsx +483 -483
  142. package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/ListPage/FilterAdd.tsx +221 -221
  143. package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/ListPage/PaginationControls.tsx +170 -170
  144. package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/ListPage/Tag.tsx +72 -72
  145. package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/ListPage/index.tsx +1006 -1006
  146. package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/NoAccessPage/index.tsx +24 -24
  147. package/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/artifacts.ts +5 -5
  148. package/src/lib/context/createContext.ts +165 -161
  149. package/src/lib/core/initialise-lists.ts +1097 -1097
  150. package/src/lib/id-field.ts +214 -214
  151. package/src/lib/telemetry.ts +342 -342
  152. package/src/schema.ts +237 -233
  153. package/src/scripts/telemetry.ts +1 -1
  154. package/src/types/config/index.ts +400 -333
  155. package/src/types/config/lists.ts +4 -4
  156. package/src/types/context.ts +700 -530
  157. package/src/types/next-fields.ts +499 -499
  158. package/src/types/telemetry.ts +51 -51
  159. package/tests/telemetry.test.ts +361 -361
  160. package/CHANGELOG.md +0 -3158
  161. package/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view/package.json +0 -4
  162. package/___internal-do-not-use-will-break-in-patch/admin-ui/next-config/package.json +0 -4
  163. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/package.json +0 -4
  164. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/package.json +0 -4
  165. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/package.json +0 -4
  166. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/package.json +0 -4
  167. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/package.json +0 -4
  168. package/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/package.json +0 -4
  169. package/___internal-do-not-use-will-break-in-patch/artifacts/package.json +0 -4
  170. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/id-field-view.d.ts.map +0 -1
  171. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/App/index.d.ts.map +0 -1
  172. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/CreateItemPage/index.d.ts.map +0 -1
  173. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/HomePage/index.d.ts.map +0 -1
  174. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ItemPage/index.d.ts.map +0 -1
  175. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/ListPage/index.d.ts.map +0 -1
  176. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/admin-ui/pages/NoAccessPage/index.d.ts.map +0 -1
  177. package/dist/declarations/src/___internal-do-not-use-will-break-in-patch/artifacts.d.ts.map +0 -1
  178. /package/dist/{common-1a350e11.cjs.js → common-5933f758.cjs.js} +0 -0
  179. /package/dist/{common-29fc82e6.esm.js → common-ea5c441a.esm.js} +0 -0
  180. /package/dist/declarations/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/id-field-view.d.ts +0 -0
  181. /package/dist/declarations/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/App/index.d.ts +0 -0
  182. /package/dist/declarations/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/CreateItemPage/index.d.ts +0 -0
  183. /package/dist/declarations/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/HomePage/index.d.ts +0 -0
  184. /package/dist/declarations/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/ItemPage/index.d.ts +0 -0
  185. /package/dist/declarations/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/ListPage/index.d.ts +0 -0
  186. /package/dist/declarations/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/admin-ui/pages/NoAccessPage/index.d.ts +0 -0
  187. /package/dist/declarations/src/{___internal-do-not-use-will-break-in-patch → internal-unstable}/artifacts.d.ts +0 -0
@@ -1,60 +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
- }
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-unstable/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
+ }
@@ -1,5 +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
- `
1
+ export const createItemTemplate = (listKey: string) =>
2
+ `import { getCreateItemPage } from '@nixxie-cms/core/internal-unstable/admin-ui/pages/CreateItemPage';
3
+
4
+ export default getCreateItemPage(${JSON.stringify({ listKey })})
5
+ `
@@ -1,2 +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
- `
1
+ export const homeTemplate = `export { HomePage as default } from '@nixxie-cms/core/internal-unstable/admin-ui/pages/HomePage';
2
+ `
@@ -1,5 +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
- `
1
+ export const itemTemplate = (listKey: string) =>
2
+ `import { getItemPage } from '@nixxie-cms/core/internal-unstable/admin-ui/pages/ItemPage';
3
+
4
+ export default getItemPage(${JSON.stringify({ listKey })})
5
+ `
@@ -1,5 +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
- `
1
+ export const listTemplate = (listKey: string) =>
2
+ `import { getListPage } from '@nixxie-cms/core/internal-unstable/admin-ui/pages/ListPage';
3
+
4
+ export default getListPage(${JSON.stringify({ listKey })});
5
+ `
@@ -11,6 +11,35 @@ export const nextConfigTemplate = (basePath?: string) =>
11
11
  // as they import ts files into nextjs
12
12
  transpilePackages: ['../../admin'],
13
13
  ${basePath ? `basePath: '${basePath}',` : ''}
14
+ webpack: (config, { webpack, isServer }) => {
15
+ // The Admin UI bundle pulls in isomorphic helpers (e.g. the GraphQL schema builder) from
16
+ // server packages whose modules also import Node built-ins via the "node:" scheme. Webpack
17
+ // cannot resolve "node:"-scheme imports for the browser, so on the client we strip the prefix
18
+ // and stub the built-ins to empty modules. The server-only code paths that actually use them
19
+ // are never executed in the browser.
20
+ if (!isServer) {
21
+ config.plugins.push(
22
+ new webpack.NormalModuleReplacementPlugin(/^node:/, resource => {
23
+ resource.request = resource.request.replace(/^node:/, '')
24
+ })
25
+ )
26
+ config.resolve.fallback = {
27
+ ...config.resolve.fallback,
28
+ crypto: false,
29
+ fs: false,
30
+ 'fs/promises': false,
31
+ http: false,
32
+ https: false,
33
+ module: false,
34
+ net: false,
35
+ os: false,
36
+ path: false,
37
+ stream: false,
38
+ util: false,
39
+ }
40
+ }
41
+ return config
42
+ },
14
43
  }
15
44
 
16
45
  module.exports = nextConfig`
@@ -1,7 +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
- `
1
+ import type { NixxieConfig } from '../../types'
2
+
3
+ export const noAccessTemplate = (session: NixxieConfig['session']) =>
4
+ `import { getNoAccessPage } from '@nixxie-cms/core/internal-unstable/admin-ui/pages/NoAccessPage';
5
+
6
+ export default getNoAccessPage(${JSON.stringify({ sessionsEnabled: !!session })})
7
+ `
@@ -1,181 +1,181 @@
1
- import type { SimpleFieldTypeInfo } from '../../../types'
2
- import {
3
- type BaseListTypeInfo,
4
- type CommonFieldConfig,
5
- type FieldTypeFunc,
6
- fieldType,
7
- orderDirectionEnum,
8
- } from '../../../types'
9
- import { g } from '../../..'
10
- import { filters } from '../../filters'
11
- import { resolveDbNullable, makeValidateHook, defaultIsRequired } from '../../non-null-graphql'
12
- import type { controller } from './views'
13
-
14
- export type BigIntFieldConfig<ListTypeInfo extends BaseListTypeInfo> = CommonFieldConfig<
15
- ListTypeInfo,
16
- SimpleFieldTypeInfo<'BigInt'>
17
- > & {
18
- isIndexed?: boolean | 'unique'
19
- defaultValue?: bigint | null | { kind: 'autoincrement' }
20
- validation?: {
21
- isRequired?: boolean
22
- min?: bigint
23
- max?: bigint
24
- }
25
- db?: {
26
- isNullable?: boolean
27
- map?: string
28
- extendPrismaSchema?: (field: string) => string
29
- }
30
- }
31
-
32
- // for a signed 64-bit integer
33
- const MAX_INT = 9223372036854775807n
34
- const MIN_INT = -9223372036854775808n
35
-
36
- // TODO: https://github.com/Nixxie/keystatic/blob/main/design-system/pkg/src/number-field/NumberField.tsx
37
- export function bigInt<ListTypeInfo extends BaseListTypeInfo>(
38
- config: BigIntFieldConfig<ListTypeInfo> = {}
39
- ): FieldTypeFunc<ListTypeInfo> {
40
- const { defaultValue: defaultValue_ = null, isIndexed, validation = {} } = config
41
-
42
- const { isRequired = false, min, max } = validation
43
- const defaultValue =
44
- typeof defaultValue_ === 'bigint' ? defaultValue_ : (defaultValue_?.kind ?? null)
45
-
46
- return meta => {
47
- if (defaultValue === 'autoincrement') {
48
- if (meta.provider === 'sqlite' || meta.provider === 'mysql') {
49
- throw new Error(
50
- `${meta.listKey}.${meta.fieldKey} specifies defaultValue: { kind: 'autoincrement' }, this is not supported on ${meta.provider}`
51
- )
52
- }
53
- const isNullable = resolveDbNullable(validation, config.db)
54
- if (isNullable !== false) {
55
- throw new Error(
56
- `${meta.listKey}.${meta.fieldKey} specifies defaultValue: { kind: 'autoincrement' } but doesn't specify db.isNullable: false.\n` +
57
- `Having nullable autoincrements on Prisma currently incorrectly creates a non-nullable column so it is not allowed.\n` +
58
- `https://github.com/prisma/prisma/issues/8663`
59
- )
60
- }
61
- if (isRequired) {
62
- throw new Error(
63
- `${meta.listKey}.${meta.fieldKey} defaultValue: { kind: 'autoincrement' } conflicts with validation.isRequired: true`
64
- )
65
- }
66
- }
67
- if (
68
- // TODO: prefer typescript only?
69
- defaultValue !== null &&
70
- defaultValue !== 'autoincrement' &&
71
- typeof defaultValue !== 'bigint'
72
- ) {
73
- throw new Error(
74
- `${meta.listKey}.${meta.fieldKey} specifies a default value of: ${defaultValue} but it must be a valid finite number`
75
- )
76
- }
77
- if (min !== undefined && !Number.isInteger(min)) {
78
- throw new Error(
79
- `${meta.listKey}.${meta.fieldKey} specifies validation.min: ${min} but it must be an integer`
80
- )
81
- }
82
- if (max !== undefined && !Number.isInteger(max)) {
83
- throw new Error(
84
- `${meta.listKey}.${meta.fieldKey} specifies validation.max: ${max} but it must be an integer`
85
- )
86
- }
87
- if (min !== undefined && (min > MAX_INT || min < MIN_INT)) {
88
- throw new Error(
89
- `${meta.listKey}.${meta.fieldKey} specifies validation.min: ${min} which is outside of the range of a 64-bit signed integer`
90
- )
91
- }
92
- if (max !== undefined && (max > MAX_INT || max < MIN_INT)) {
93
- throw new Error(
94
- `${meta.listKey}.${meta.fieldKey} specifies validation.max: ${max} which is outside of the range of a 64-bit signed integer`
95
- )
96
- }
97
- if (min !== undefined && max !== undefined && min > max) {
98
- throw new Error(
99
- `${meta.listKey}.${meta.fieldKey} specifies a validation.max that is less than the validation.min, and therefore has no valid options`
100
- )
101
- }
102
-
103
- const hasAdditionalValidation = min !== undefined || max !== undefined
104
- const { mode, validate } = makeValidateHook(
105
- meta,
106
- config,
107
- hasAdditionalValidation
108
- ? ({ resolvedData, operation, addValidationError }) => {
109
- if (operation === 'delete') return
110
-
111
- const value = resolvedData[meta.fieldKey]
112
- if (typeof value === 'number') {
113
- if (min !== undefined && value < min) {
114
- addValidationError(`value must be greater than or equal to ${min}`)
115
- }
116
-
117
- if (max !== undefined && value > max) {
118
- addValidationError(`value must be less than or equal to ${max}`)
119
- }
120
- }
121
- }
122
- : undefined
123
- )
124
-
125
- return fieldType({
126
- kind: 'scalar',
127
- mode,
128
- scalar: 'BigInt',
129
- index: isIndexed === true ? 'index' : isIndexed || undefined,
130
- default:
131
- typeof defaultValue === 'bigint'
132
- ? { kind: 'literal', value: defaultValue }
133
- : defaultValue === 'autoincrement'
134
- ? { kind: 'autoincrement' }
135
- : undefined,
136
- map: config.db?.map,
137
- extendPrismaSchema: config.db?.extendPrismaSchema,
138
- })({
139
- ...config,
140
- ...defaultIsRequired(config, isRequired),
141
- hooks: {
142
- ...config.hooks,
143
- validate,
144
- },
145
- input: {
146
- uniqueWhere: isIndexed === 'unique' ? { arg: g.arg({ type: g.BigInt }) } : undefined,
147
- where: {
148
- arg: g.arg({ type: filters[meta.provider].BigInt[mode] }),
149
- resolve: mode === 'optional' ? filters.resolveCommon : undefined,
150
- },
151
- create: {
152
- arg: g.arg({
153
- type: g.BigInt,
154
- defaultValue: typeof defaultValue === 'bigint' ? defaultValue : undefined,
155
- }),
156
- resolve(value) {
157
- if (value === undefined) {
158
- if (defaultValue === 'autoincrement') return null
159
- return defaultValue
160
- }
161
- return value
162
- },
163
- },
164
- update: { arg: g.arg({ type: g.BigInt }) },
165
- orderBy: { arg: g.arg({ type: orderDirectionEnum }) },
166
- },
167
- output: g.field({ type: g.BigInt }),
168
- __ksTelemetryFieldTypeName: '@nixxie-cms/bigInt',
169
- views: '@nixxie-cms/core/fields/types/bigInt/views',
170
- getAdminMeta(): Parameters<typeof controller>[0]['fieldMeta'] {
171
- return {
172
- validation: {
173
- min: min?.toString() ?? `${MIN_INT}`,
174
- max: max?.toString() ?? `${MAX_INT}`,
175
- },
176
- defaultValue: typeof defaultValue === 'bigint' ? defaultValue.toString() : defaultValue,
177
- }
178
- },
179
- })
180
- }
181
- }
1
+ import type { SimpleFieldTypeInfo } from '../../../types'
2
+ import {
3
+ type BaseListTypeInfo,
4
+ type CommonFieldConfig,
5
+ type FieldTypeFunc,
6
+ fieldType,
7
+ orderDirectionEnum,
8
+ } from '../../../types'
9
+ import { g } from '../../..'
10
+ import { filters } from '../../filters'
11
+ import { resolveDbNullable, makeValidateHook, defaultIsRequired } from '../../non-null-graphql'
12
+ import type { controller } from './views'
13
+
14
+ export type BigIntFieldConfig<ListTypeInfo extends BaseListTypeInfo> = CommonFieldConfig<
15
+ ListTypeInfo,
16
+ SimpleFieldTypeInfo<'BigInt'>
17
+ > & {
18
+ isIndexed?: boolean | 'unique'
19
+ defaultValue?: bigint | null | { kind: 'autoincrement' }
20
+ validation?: {
21
+ isRequired?: boolean
22
+ min?: bigint
23
+ max?: bigint
24
+ }
25
+ db?: {
26
+ isNullable?: boolean
27
+ map?: string
28
+ extendPrismaSchema?: (field: string) => string
29
+ }
30
+ }
31
+
32
+ // for a signed 64-bit integer
33
+ const MAX_INT = 9223372036854775807n
34
+ const MIN_INT = -9223372036854775808n
35
+
36
+ // TODO: https://github.com/Nixxie/keystatic/blob/main/design-system/pkg/src/number-field/NumberField.tsx
37
+ export function bigInt<ListTypeInfo extends BaseListTypeInfo>(
38
+ config: BigIntFieldConfig<ListTypeInfo> = {}
39
+ ): FieldTypeFunc<ListTypeInfo> {
40
+ const { defaultValue: defaultValue_ = null, isIndexed, validation = {} } = config
41
+
42
+ const { isRequired = false, min, max } = validation
43
+ const defaultValue =
44
+ typeof defaultValue_ === 'bigint' ? defaultValue_ : (defaultValue_?.kind ?? null)
45
+
46
+ return meta => {
47
+ if (defaultValue === 'autoincrement') {
48
+ if (meta.provider === 'sqlite' || meta.provider === 'mysql') {
49
+ throw new Error(
50
+ `${meta.listKey}.${meta.fieldKey} specifies defaultValue: { kind: 'autoincrement' }, this is not supported on ${meta.provider}`
51
+ )
52
+ }
53
+ const isNullable = resolveDbNullable(validation, config.db)
54
+ if (isNullable !== false) {
55
+ throw new Error(
56
+ `${meta.listKey}.${meta.fieldKey} specifies defaultValue: { kind: 'autoincrement' } but doesn't specify db.isNullable: false.\n` +
57
+ `Having nullable autoincrements on Prisma currently incorrectly creates a non-nullable column so it is not allowed.\n` +
58
+ `https://github.com/prisma/prisma/issues/8663`
59
+ )
60
+ }
61
+ if (isRequired) {
62
+ throw new Error(
63
+ `${meta.listKey}.${meta.fieldKey} defaultValue: { kind: 'autoincrement' } conflicts with validation.isRequired: true`
64
+ )
65
+ }
66
+ }
67
+ if (
68
+ // TODO: prefer typescript only?
69
+ defaultValue !== null &&
70
+ defaultValue !== 'autoincrement' &&
71
+ typeof defaultValue !== 'bigint'
72
+ ) {
73
+ throw new Error(
74
+ `${meta.listKey}.${meta.fieldKey} specifies a default value of: ${defaultValue} but it must be a valid finite number`
75
+ )
76
+ }
77
+ if (min !== undefined && !Number.isInteger(min)) {
78
+ throw new Error(
79
+ `${meta.listKey}.${meta.fieldKey} specifies validation.min: ${min} but it must be an integer`
80
+ )
81
+ }
82
+ if (max !== undefined && !Number.isInteger(max)) {
83
+ throw new Error(
84
+ `${meta.listKey}.${meta.fieldKey} specifies validation.max: ${max} but it must be an integer`
85
+ )
86
+ }
87
+ if (min !== undefined && (min > MAX_INT || min < MIN_INT)) {
88
+ throw new Error(
89
+ `${meta.listKey}.${meta.fieldKey} specifies validation.min: ${min} which is outside of the range of a 64-bit signed integer`
90
+ )
91
+ }
92
+ if (max !== undefined && (max > MAX_INT || max < MIN_INT)) {
93
+ throw new Error(
94
+ `${meta.listKey}.${meta.fieldKey} specifies validation.max: ${max} which is outside of the range of a 64-bit signed integer`
95
+ )
96
+ }
97
+ if (min !== undefined && max !== undefined && min > max) {
98
+ throw new Error(
99
+ `${meta.listKey}.${meta.fieldKey} specifies a validation.max that is less than the validation.min, and therefore has no valid options`
100
+ )
101
+ }
102
+
103
+ const hasAdditionalValidation = min !== undefined || max !== undefined
104
+ const { mode, validate } = makeValidateHook(
105
+ meta,
106
+ config,
107
+ hasAdditionalValidation
108
+ ? ({ resolvedData, operation, addValidationError }) => {
109
+ if (operation === 'delete') return
110
+
111
+ const value = resolvedData[meta.fieldKey]
112
+ if (typeof value === 'number') {
113
+ if (min !== undefined && value < min) {
114
+ addValidationError(`value must be greater than or equal to ${min}`)
115
+ }
116
+
117
+ if (max !== undefined && value > max) {
118
+ addValidationError(`value must be less than or equal to ${max}`)
119
+ }
120
+ }
121
+ }
122
+ : undefined
123
+ )
124
+
125
+ return fieldType({
126
+ kind: 'scalar',
127
+ mode,
128
+ scalar: 'BigInt',
129
+ index: isIndexed === true ? 'index' : isIndexed || undefined,
130
+ default:
131
+ typeof defaultValue === 'bigint'
132
+ ? { kind: 'literal', value: defaultValue }
133
+ : defaultValue === 'autoincrement'
134
+ ? { kind: 'autoincrement' }
135
+ : undefined,
136
+ map: config.db?.map,
137
+ extendPrismaSchema: config.db?.extendPrismaSchema,
138
+ })({
139
+ ...config,
140
+ ...defaultIsRequired(config, isRequired),
141
+ hooks: {
142
+ ...config.hooks,
143
+ validate,
144
+ },
145
+ input: {
146
+ uniqueWhere: isIndexed === 'unique' ? { arg: g.arg({ type: g.BigInt }) } : undefined,
147
+ where: {
148
+ arg: g.arg({ type: filters[meta.provider].BigInt[mode] }),
149
+ resolve: mode === 'optional' ? filters.resolveCommon : undefined,
150
+ },
151
+ create: {
152
+ arg: g.arg({
153
+ type: g.BigInt,
154
+ defaultValue: typeof defaultValue === 'bigint' ? defaultValue : undefined,
155
+ }),
156
+ resolve(value) {
157
+ if (value === undefined) {
158
+ if (defaultValue === 'autoincrement') return null
159
+ return defaultValue
160
+ }
161
+ return value
162
+ },
163
+ },
164
+ update: { arg: g.arg({ type: g.BigInt }) },
165
+ orderBy: { arg: g.arg({ type: orderDirectionEnum }) },
166
+ },
167
+ output: g.field({ type: g.BigInt }),
168
+ __nxTelemetryFieldTypeName: '@nixxie-cms/bigInt',
169
+ views: '@nixxie-cms/core/fields/types/bigInt/views',
170
+ getAdminMeta(): Parameters<typeof controller>[0]['fieldMeta'] {
171
+ return {
172
+ validation: {
173
+ min: min?.toString() ?? `${MIN_INT}`,
174
+ max: max?.toString() ?? `${MAX_INT}`,
175
+ },
176
+ defaultValue: typeof defaultValue === 'bigint' ? defaultValue.toString() : defaultValue,
177
+ }
178
+ },
179
+ })
180
+ }
181
+ }