@nixxie-cms/core 1.0.3 → 2.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 (203) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/CHANGES-1.1.md +134 -0
  3. package/context/dist/nixxie-cms-core-context.cjs.js +4 -3
  4. package/context/dist/nixxie-cms-core-context.esm.js +3 -2
  5. package/dist/declarations/src/access.d.ts +2 -2
  6. package/dist/declarations/src/access.d.ts.map +1 -1
  7. package/dist/declarations/src/admin-ui/components/Navigation.d.ts +2 -2
  8. package/dist/declarations/src/admin-ui/components/Navigation.d.ts.map +1 -1
  9. package/dist/declarations/src/admin-ui/context.d.ts +6 -6
  10. package/dist/declarations/src/admin-ui/context.d.ts.map +1 -1
  11. package/dist/declarations/src/admin-ui/utils/Fields.d.ts +3 -3
  12. package/dist/declarations/src/admin-ui/utils/Fields.d.ts.map +1 -1
  13. package/dist/declarations/src/admin-ui/utils/filters.d.ts +5 -5
  14. package/dist/declarations/src/admin-ui/utils/filters.d.ts.map +1 -1
  15. package/dist/declarations/src/admin-ui/utils/useCreateItem.d.ts +3 -3
  16. package/dist/declarations/src/admin-ui/utils/useCreateItem.d.ts.map +1 -1
  17. package/dist/declarations/src/admin-ui/utils/utils.d.ts +2 -2
  18. package/dist/declarations/src/admin-ui/utils/utils.d.ts.map +1 -1
  19. package/dist/declarations/src/context.d.ts +1 -1
  20. package/dist/declarations/src/context.d.ts.map +1 -1
  21. package/dist/declarations/src/fields/types/bigInt/index.d.ts +3 -3
  22. package/dist/declarations/src/fields/types/bigInt/index.d.ts.map +1 -1
  23. package/dist/declarations/src/fields/types/bytes/index.d.ts +3 -3
  24. package/dist/declarations/src/fields/types/bytes/index.d.ts.map +1 -1
  25. package/dist/declarations/src/fields/types/calendarDay/index.d.ts +3 -3
  26. package/dist/declarations/src/fields/types/calendarDay/index.d.ts.map +1 -1
  27. package/dist/declarations/src/fields/types/checkbox/index.d.ts +3 -3
  28. package/dist/declarations/src/fields/types/checkbox/index.d.ts.map +1 -1
  29. package/dist/declarations/src/fields/types/decimal/index.d.ts +3 -3
  30. package/dist/declarations/src/fields/types/decimal/index.d.ts.map +1 -1
  31. package/dist/declarations/src/fields/types/file/index.d.ts +4 -4
  32. package/dist/declarations/src/fields/types/file/index.d.ts.map +1 -1
  33. package/dist/declarations/src/fields/types/float/index.d.ts +3 -3
  34. package/dist/declarations/src/fields/types/float/index.d.ts.map +1 -1
  35. package/dist/declarations/src/fields/types/image/index.d.ts +4 -4
  36. package/dist/declarations/src/fields/types/image/index.d.ts.map +1 -1
  37. package/dist/declarations/src/fields/types/integer/index.d.ts +3 -3
  38. package/dist/declarations/src/fields/types/integer/index.d.ts.map +1 -1
  39. package/dist/declarations/src/fields/types/json/index.d.ts +3 -3
  40. package/dist/declarations/src/fields/types/json/index.d.ts.map +1 -1
  41. package/dist/declarations/src/fields/types/multiselect/index.d.ts +3 -3
  42. package/dist/declarations/src/fields/types/multiselect/index.d.ts.map +1 -1
  43. package/dist/declarations/src/fields/types/multiselect/views/index.d.ts.map +1 -1
  44. package/dist/declarations/src/fields/types/password/index.d.ts +3 -3
  45. package/dist/declarations/src/fields/types/password/index.d.ts.map +1 -1
  46. package/dist/declarations/src/fields/types/relationship/index.d.ts +8 -8
  47. package/dist/declarations/src/fields/types/relationship/index.d.ts.map +1 -1
  48. package/dist/declarations/src/fields/types/relationship/views/ComboboxMany.d.ts +3 -3
  49. package/dist/declarations/src/fields/types/relationship/views/ComboboxMany.d.ts.map +1 -1
  50. package/dist/declarations/src/fields/types/relationship/views/ComboboxSingle.d.ts +3 -3
  51. package/dist/declarations/src/fields/types/relationship/views/ComboboxSingle.d.ts.map +1 -1
  52. package/dist/declarations/src/fields/types/relationship/views/index.d.ts +3 -3
  53. package/dist/declarations/src/fields/types/relationship/views/index.d.ts.map +1 -1
  54. package/dist/declarations/src/fields/types/relationship/views/types.d.ts +3 -3
  55. package/dist/declarations/src/fields/types/relationship/views/types.d.ts.map +1 -1
  56. package/dist/declarations/src/fields/types/select/index.d.ts +3 -3
  57. package/dist/declarations/src/fields/types/select/index.d.ts.map +1 -1
  58. package/dist/declarations/src/fields/types/text/index.d.ts +3 -3
  59. package/dist/declarations/src/fields/types/text/index.d.ts.map +1 -1
  60. package/dist/declarations/src/fields/types/timestamp/index.d.ts +3 -3
  61. package/dist/declarations/src/fields/types/timestamp/index.d.ts.map +1 -1
  62. package/dist/declarations/src/fields/types/virtual/index.d.ts +7 -7
  63. package/dist/declarations/src/fields/types/virtual/index.d.ts.map +1 -1
  64. package/dist/declarations/src/helpers.d.ts +249 -13
  65. package/dist/declarations/src/helpers.d.ts.map +1 -1
  66. package/dist/declarations/src/index.d.ts +9 -4
  67. package/dist/declarations/src/index.d.ts.map +1 -1
  68. package/dist/declarations/src/internal-unstable/admin-ui/pages/ListPage/index.d.ts.map +1 -1
  69. package/dist/declarations/src/lib/admin-meta.d.ts +11 -11
  70. package/dist/declarations/src/lib/admin-meta.d.ts.map +1 -1
  71. package/dist/declarations/src/lib/core/access-control.d.ts +18 -18
  72. package/dist/declarations/src/lib/core/access-control.d.ts.map +1 -1
  73. package/dist/declarations/src/lib/core/cascade.d.ts +47 -0
  74. package/dist/declarations/src/lib/core/cascade.d.ts.map +1 -0
  75. package/dist/declarations/src/lib/core/initialise-lists.d.ts +27 -24
  76. package/dist/declarations/src/lib/core/initialise-lists.d.ts.map +1 -1
  77. package/dist/declarations/src/lib/env.d.ts +9 -0
  78. package/dist/declarations/src/lib/env.d.ts.map +1 -0
  79. package/dist/declarations/src/lib/system.d.ts +1 -1
  80. package/dist/declarations/src/lib/system.d.ts.map +1 -1
  81. package/dist/declarations/src/list-features.d.ts +162 -0
  82. package/dist/declarations/src/list-features.d.ts.map +1 -0
  83. package/dist/declarations/src/schema.d.ts +24 -23
  84. package/dist/declarations/src/schema.d.ts.map +1 -1
  85. package/dist/declarations/src/session.d.ts +75 -0
  86. package/dist/declarations/src/session.d.ts.map +1 -1
  87. package/dist/declarations/src/types/admin-meta.d.ts +11 -11
  88. package/dist/declarations/src/types/admin-meta.d.ts.map +1 -1
  89. package/dist/declarations/src/types/config/access-control.d.ts +42 -42
  90. package/dist/declarations/src/types/config/access-control.d.ts.map +1 -1
  91. package/dist/declarations/src/types/config/fields.d.ts +19 -19
  92. package/dist/declarations/src/types/config/fields.d.ts.map +1 -1
  93. package/dist/declarations/src/types/config/hooks.d.ts +131 -131
  94. package/dist/declarations/src/types/config/hooks.d.ts.map +1 -1
  95. package/dist/declarations/src/types/config/index.d.ts +190 -8
  96. package/dist/declarations/src/types/config/index.d.ts.map +1 -1
  97. package/dist/declarations/src/types/config/lists.d.ts +146 -108
  98. package/dist/declarations/src/types/config/lists.d.ts.map +1 -1
  99. package/dist/declarations/src/types/context.d.ts +507 -47
  100. package/dist/declarations/src/types/context.d.ts.map +1 -1
  101. package/dist/declarations/src/types/next-fields.d.ts +28 -28
  102. package/dist/declarations/src/types/next-fields.d.ts.map +1 -1
  103. package/dist/declarations/src/types/type-info.d.ts +3 -3
  104. package/dist/declarations/src/types/type-info.d.ts.map +1 -1
  105. package/dist/{express-455ae20c.cjs.js → express-84d534c2.cjs.js} +6 -6
  106. package/dist/{express-7559ca2d.esm.js → express-d0a4ce99.esm.js} +6 -6
  107. package/dist/{index-15c8f81e.esm.js → index-5d8b0b4e.esm.js} +363 -183
  108. package/dist/index-6055753b.cjs.js +393 -0
  109. package/dist/{index-42045902.cjs.js → index-ac29f382.cjs.js} +363 -185
  110. package/dist/index-f1703b7b.esm.js +386 -0
  111. package/dist/nixxie-cms-core.cjs.js +1388 -30
  112. package/dist/nixxie-cms-core.esm.js +1362 -24
  113. package/dist/{non-null-graphql-add6bb3d.cjs.js → non-null-graphql-4a44c122.cjs.js} +1 -1
  114. package/dist/{non-null-graphql-a84ed64d.esm.js → non-null-graphql-8c5feaae.esm.js} +1 -1
  115. package/dist/{resolve-hooks-165a9ce2.cjs.js → resolve-hooks-10a5f84c.cjs.js} +240 -6
  116. package/dist/{resolve-hooks-6813a045.esm.js → resolve-hooks-9e676794.esm.js} +238 -7
  117. package/dist/{system-a321642d.cjs.js → system-6b37a5f8.cjs.js} +33 -7
  118. package/dist/{system-03e49e4f.esm.js → system-e591d821.esm.js} +33 -7
  119. package/fields/dist/nixxie-cms-core-fields.cjs.js +29 -576
  120. package/fields/dist/nixxie-cms-core-fields.esm.js +18 -565
  121. package/fields/types/bytes/dist/nixxie-cms-core-fields-types-bytes.cjs.js +4 -2
  122. package/fields/types/bytes/dist/nixxie-cms-core-fields-types-bytes.esm.js +4 -2
  123. package/fields/types/multiselect/views/dist/nixxie-cms-core-fields-types-multiselect-views.cjs.js +1 -6
  124. package/fields/types/multiselect/views/dist/nixxie-cms-core-fields-types-multiselect-views.esm.js +1 -6
  125. package/fields/types/password/dist/nixxie-cms-core-fields-types-password.cjs.js +4 -2
  126. package/fields/types/password/dist/nixxie-cms-core-fields-types-password.esm.js +4 -2
  127. package/internal-unstable/artifacts/dist/nixxie-cms-core-internal-unstable-artifacts.cjs.js +4 -3
  128. package/internal-unstable/artifacts/dist/nixxie-cms-core-internal-unstable-artifacts.esm.js +4 -3
  129. package/package.json +4 -4
  130. package/scripts/cli/dist/nixxie-cms-core-scripts-cli.cjs.js +4 -3
  131. package/scripts/cli/dist/nixxie-cms-core-scripts-cli.esm.js +4 -3
  132. package/scripts/dist/nixxie-cms-core-scripts.cjs.js +4 -3
  133. package/scripts/dist/nixxie-cms-core-scripts.esm.js +4 -3
  134. package/session/dist/nixxie-cms-core-session.cjs.js +286 -0
  135. package/session/dist/nixxie-cms-core-session.esm.js +279 -1
  136. package/src/access.ts +25 -25
  137. package/src/admin-ui/admin-meta-graphql.ts +5 -5
  138. package/src/admin-ui/components/CreateButtonLink.tsx +46 -46
  139. package/src/admin-ui/components/Navigation.tsx +3 -3
  140. package/src/admin-ui/context.tsx +6 -6
  141. package/src/admin-ui/utils/Fields.tsx +241 -241
  142. package/src/admin-ui/utils/actionData.ts +36 -36
  143. package/src/admin-ui/utils/filters.ts +148 -148
  144. package/src/admin-ui/utils/useCreateItem.ts +171 -171
  145. package/src/admin-ui/utils/utils.tsx +127 -127
  146. package/src/context.ts +1 -1
  147. package/src/fields/non-null-graphql.ts +115 -115
  148. package/src/fields/types/bigInt/index.ts +6 -6
  149. package/src/fields/types/bytes/index.ts +6 -6
  150. package/src/fields/types/calendarDay/index.ts +18 -19
  151. package/src/fields/types/checkbox/index.ts +6 -6
  152. package/src/fields/types/decimal/index.ts +6 -6
  153. package/src/fields/types/file/index.ts +8 -8
  154. package/src/fields/types/float/index.ts +6 -6
  155. package/src/fields/types/image/index.ts +8 -8
  156. package/src/fields/types/integer/index.ts +6 -6
  157. package/src/fields/types/json/index.ts +5 -5
  158. package/src/fields/types/multiselect/index.ts +7 -7
  159. package/src/fields/types/multiselect/views/index.tsx +149 -151
  160. package/src/fields/types/password/index.ts +6 -6
  161. package/src/fields/types/relationship/index.ts +13 -13
  162. package/src/fields/types/relationship/views/ComboboxMany.tsx +110 -110
  163. package/src/fields/types/relationship/views/ComboboxSingle.tsx +115 -115
  164. package/src/fields/types/relationship/views/ContextualActions.tsx +139 -139
  165. package/src/fields/types/relationship/views/index.tsx +492 -492
  166. package/src/fields/types/relationship/views/types.ts +46 -46
  167. package/src/fields/types/relationship/views/useApolloQuery.ts +185 -185
  168. package/src/fields/types/relationship/views/useFilter.tsx +109 -109
  169. package/src/fields/types/select/index.ts +6 -6
  170. package/src/fields/types/text/index.ts +6 -6
  171. package/src/fields/types/timestamp/index.ts +23 -21
  172. package/src/fields/types/virtual/index.ts +11 -11
  173. package/src/helpers.ts +773 -42
  174. package/src/index.ts +66 -24
  175. package/src/internal-unstable/admin-ui/pages/ItemPage/common.tsx +4 -4
  176. package/src/internal-unstable/admin-ui/pages/ItemPage/index.tsx +5 -5
  177. package/src/internal-unstable/admin-ui/pages/ListPage/index.tsx +8 -8
  178. package/src/lib/admin-meta.ts +369 -369
  179. package/src/lib/context/createContext.ts +6 -0
  180. package/src/lib/core/access-control.ts +434 -434
  181. package/src/lib/core/cascade.ts +236 -0
  182. package/src/lib/core/initialise-lists.ts +49 -33
  183. package/src/lib/core/mutations/index.ts +7 -0
  184. package/src/lib/core/mutations/nested-mutation-many-input-resolvers.ts +145 -145
  185. package/src/lib/core/mutations/nested-mutation-one-input-resolvers.ts +71 -71
  186. package/src/lib/core/queries/output-field.ts +178 -178
  187. package/src/lib/env.ts +50 -0
  188. package/src/lib/id-field.ts +2 -2
  189. package/src/lib/system.ts +221 -207
  190. package/src/lib/typescript-schema-printer.ts +227 -227
  191. package/src/list-features.ts +476 -0
  192. package/src/schema.ts +92 -22
  193. package/src/session.ts +225 -0
  194. package/src/types/admin-meta.ts +218 -218
  195. package/src/types/config/access-control.ts +186 -186
  196. package/src/types/config/fields.ts +96 -96
  197. package/src/types/config/hooks.ts +529 -529
  198. package/src/types/config/index.ts +206 -7
  199. package/src/types/config/lists.ts +606 -565
  200. package/src/types/context.ts +592 -55
  201. package/src/types/next-fields.ts +31 -31
  202. package/src/types/type-info.ts +38 -38
  203. package/src/types/type-tests.ts +21 -21
@@ -5,13 +5,13 @@ import type { Options as BodyParserOptions } from 'body-parser';
5
5
  import type { CorsOptions } from 'cors';
6
6
  import type express from 'express';
7
7
  import type { GraphQLSchema } from 'graphql';
8
- import type { BaseNixxieTypeInfo, DatabaseProvider, NixxieAiService, NixxieAuditService, NixxieCacheService, NixxieContext, NixxieEmailService, NixxieHealthService, NixxieJobsService, NixxieNotificationsService, NixxieRateLimitService, NixxieSearchService, NixxieStorageService, NixxieWebhooksService } from "../index.js";
8
+ import type { BaseNixxieTypeInfo, DatabaseProvider, NixxieAiRagService, NixxieAiService, NixxieApiKeysService, NixxieAuditService, NixxieBackupService, NixxieCacheService, NixxieContext, NixxieEmailService, NixxieHealthService, NixxieJobsService, NixxieLoggerService, NixxieNotificationsService, NixxieRateLimitService, NixxieSearchService, NixxieStorageService, NixxieVersioningService, NixxieWebhooksService, NixxieWorkflowService } from "../index.js";
9
9
  import type { SessionStrategy } from "../session.js";
10
10
  import type { MaybePromise } from "../utils.js";
11
- import type { FieldAccessControl, ListAccessControl } from "./access-control.js";
11
+ import type { FieldAccessControl, CollectionAccessControl } from "./access-control.js";
12
12
  import type { BaseFields } from "./fields.js";
13
- import type { FieldHooks, ListHooks } from "./hooks.js";
14
- import type { IdFieldConfig, ListConfig, MaybeItemFunctionWithFilter, MaybeSessionFunction } from "./lists.js";
13
+ import type { FieldHooks, CollectionHooks } from "./hooks.js";
14
+ import type { IdFieldConfig, CollectionConfig, MaybeItemFunctionWithFilter, MaybeSessionFunction } from "./lists.js";
15
15
  export type * from "./access-control.js";
16
16
  export type * from "./fields.js";
17
17
  export type * from "./lists.js";
@@ -20,10 +20,89 @@ type PrismaLogDefinition = {
20
20
  level: PrismaLogLevel;
21
21
  emit: 'stdout' | 'event';
22
22
  };
23
+ /**
24
+ * A Nixxie plugin — one object that can contribute collections, transform the config,
25
+ * and run setup once the database connects. Register via `config({ plugins: [...] })`.
26
+ *
27
+ * Plugins are applied in array order: collections are merged first (a key conflict with
28
+ * the user's collections or an earlier plugin throws), then `extendConfig` runs, then at
29
+ * boot every plugin's `onConnect` runs (in order) before `db.onConnect`.
30
+ *
31
+ * @example
32
+ * export function myPlugin(): NixxiePlugin {
33
+ * return {
34
+ * name: 'my-plugin',
35
+ * collections: { MyPluginLog: collection({ fields: { ... } }) },
36
+ * extendConfig: config => ({
37
+ * ...config,
38
+ * server: {
39
+ * ...config.server,
40
+ * extendExpressApp: async (app, context) => {
41
+ * await config.server?.extendExpressApp?.(app, context)
42
+ * app.get('/my-plugin/ping', (_, res) => res.send('pong'))
43
+ * },
44
+ * },
45
+ * }),
46
+ * onConnect: async context => { ... },
47
+ * }
48
+ * }
49
+ */
50
+ export type NixxiePlugin<TypeInfo extends BaseNixxieTypeInfo = BaseNixxieTypeInfo> = {
51
+ /** Unique name, used in error messages. */
52
+ name: string;
53
+ /** Collections contributed by this plugin. A key conflict throws at config build time. */
54
+ collections?: Record<string, CollectionConfig<any>>;
55
+ /**
56
+ * Transform the (pre-normalisation) config — register services, wrap hooks, extend
57
+ * the Express app, etc. Must return the new config.
58
+ */
59
+ extendConfig?: (config: NixxieConfigPre<TypeInfo>) => NixxieConfigPre<TypeInfo>;
60
+ /** Run once the database has connected, before the user's `db.onConnect`. */
61
+ onConnect?: (context: NixxieContext<TypeInfo>) => MaybePromise<void>;
62
+ };
63
+ /** Requirements for a single environment variable (see `NixxieConfigPre['env']`). */
64
+ export type NixxieEnvVarSpec = {
65
+ /**
66
+ * Fail at boot when the variable is unset (and no `default` is given).
67
+ * @default true
68
+ */
69
+ required?: boolean;
70
+ /** Regex the value must match (checked when the variable is set). */
71
+ pattern?: RegExp;
72
+ /** Applied to `process.env` when the variable is unset. */
73
+ default?: string;
74
+ /** Shown in the boot error to explain what the variable is for. */
75
+ description?: string;
76
+ };
77
+ /**
78
+ * Environment validation spec: either a list of required variable names, or a record of
79
+ * per-variable requirements. Validated when the config is built, so a misconfigured
80
+ * deployment fails immediately with one aggregated, readable error instead of a
81
+ * confusing crash later.
82
+ */
83
+ export type NixxieEnvSpec = readonly string[] | Record<string, NixxieEnvVarSpec>;
23
84
  export type NixxieConfigPre<TypeInfo extends BaseNixxieTypeInfo = BaseNixxieTypeInfo> = {
24
85
  types?: {
25
86
  path: string;
26
87
  };
88
+ /**
89
+ * Plugins to apply to this config (collections + config transforms + boot hooks).
90
+ * See `NixxiePlugin`.
91
+ */
92
+ plugins?: NixxiePlugin<TypeInfo>[];
93
+ /**
94
+ * Environment variables this app needs. Validated at config build time —
95
+ * missing or malformed variables fail the boot with one aggregated error.
96
+ *
97
+ * @example
98
+ * env: ['DATABASE_URL', 'SESSION_SECRET']
99
+ * @example
100
+ * env: {
101
+ * DATABASE_URL: { description: 'Postgres connection string' },
102
+ * SMTP_PORT: { required: false, pattern: /^\d+$/, default: '587' },
103
+ * }
104
+ */
105
+ env?: NixxieEnvSpec;
27
106
  db: {
28
107
  provider: DatabaseProvider;
29
108
  url: string;
@@ -97,7 +176,7 @@ export type NixxieConfigPre<TypeInfo extends BaseNixxieTypeInfo = BaseNixxieType
97
176
  */
98
177
  extendGraphqlSchema?: (schema: GraphQLSchema) => GraphQLSchema;
99
178
  };
100
- lists: Record<string, ListConfig<any>>;
179
+ collections: Record<string, CollectionConfig<any>>;
101
180
  server?: {
102
181
  /** Configuration options for the cors middleware. Set to `true` to use Nixxie's defaults */
103
182
  cors?: boolean | CorsOptions;
@@ -273,6 +352,103 @@ export type NixxieConfigPre<TypeInfo extends BaseNixxieTypeInfo = BaseNixxieType
273
352
  * ```
274
353
  */
275
354
  ai?: NixxieAiService;
355
+ /**
356
+ * Custom RAG assistant created with `createAiRag()` from `@nixxie-cms/ai-rag`.
357
+ * Available as `context.services.aiRag`. Stores a knowledge base, indexes it into
358
+ * embeddings, and answers questions grounded in that content with citations and
359
+ * hallucination guarding. Prefer registering it via `ragPlugin()` so the knowledge-base
360
+ * collections, HTTP routes and scheduled indexing are wired automatically.
361
+ *
362
+ * @example
363
+ * ```ts
364
+ * import { createAiRag, ragPlugin } from '@nixxie-cms/ai-rag'
365
+ * const aiRag = createAiRag({
366
+ * generation: { provider: 'anthropic', apiKey: process.env.ANTHROPIC_API_KEY! },
367
+ * embedding: { provider: 'openai', apiKey: process.env.OPENAI_API_KEY! },
368
+ * })
369
+ * export default config({ aiRag, plugins: [ragPlugin({ service: aiRag })] })
370
+ * ```
371
+ */
372
+ aiRag?: NixxieAiRagService;
373
+ /**
374
+ * Content revision history created with `createVersioning()` from
375
+ * `@nixxie-cms/versioning`. Available as `context.services.versioning`.
376
+ * Snapshots item data so changes can be listed, diffed and rolled back.
377
+ *
378
+ * @example
379
+ * ```ts
380
+ * import { createVersioning } from '@nixxie-cms/versioning'
381
+ * export default config({
382
+ * versioning: createVersioning({ store: 'memory' }),
383
+ * })
384
+ * ```
385
+ */
386
+ versioning?: NixxieVersioningService;
387
+ /**
388
+ * Editorial state machine created with `createWorkflow()` from
389
+ * `@nixxie-cms/workflow`. Available as `context.services.workflow`.
390
+ * Enforces allowed transitions (e.g. draft → review → published).
391
+ *
392
+ * @example
393
+ * ```ts
394
+ * import { createWorkflow } from '@nixxie-cms/workflow'
395
+ * export default config({
396
+ * workflow: createWorkflow({
397
+ * name: 'editorial',
398
+ * initial: 'draft',
399
+ * states: ['draft', 'review', 'published'],
400
+ * transitions: [
401
+ * { from: 'draft', to: 'review', name: 'submit' },
402
+ * { from: 'review', to: 'published', name: 'publish' },
403
+ * { from: 'review', to: 'draft', name: 'reject' },
404
+ * ],
405
+ * }),
406
+ * })
407
+ * ```
408
+ */
409
+ workflow?: NixxieWorkflowService;
410
+ /**
411
+ * Machine-to-machine API keys created with `createApiKeys()` from
412
+ * `@nixxie-cms/api-keys`. Available as `context.services.apiKeys`.
413
+ * Issues scoped, revocable tokens; only key hashes are stored.
414
+ *
415
+ * @example
416
+ * ```ts
417
+ * import { createApiKeys } from '@nixxie-cms/api-keys'
418
+ * export default config({
419
+ * apiKeys: createApiKeys({ store: 'memory', prefix: 'nxk' }),
420
+ * })
421
+ * ```
422
+ */
423
+ apiKeys?: NixxieApiKeysService;
424
+ /**
425
+ * Structured logger created with `createLogger()` from `@nixxie-cms/logger`.
426
+ * Available as `context.services.logger`. Level-aware with bound child loggers
427
+ * and pluggable sinks.
428
+ *
429
+ * @example
430
+ * ```ts
431
+ * import { createLogger } from '@nixxie-cms/logger'
432
+ * export default config({
433
+ * logger: createLogger({ level: 'info', pretty: process.env.NODE_ENV !== 'production' }),
434
+ * })
435
+ * ```
436
+ */
437
+ logger?: NixxieLoggerService;
438
+ /**
439
+ * Content export / import / seed created with `createBackup()` from
440
+ * `@nixxie-cms/backup`. Available as `context.services.backup`.
441
+ *
442
+ * @example
443
+ * ```ts
444
+ * import { createBackup, nixxieDataSource } from '@nixxie-cms/backup'
445
+ * // `getContext()` returns a long-lived context (see createNixxieContext)
446
+ * export default config({
447
+ * backup: createBackup({ source: () => nixxieDataSource(getContext().sudo()) }),
448
+ * })
449
+ * ```
450
+ */
451
+ backup?: NixxieBackupService;
276
452
  /** Telemetry boolean to disable telemetry for this project */
277
453
  telemetry?: boolean;
278
454
  ui?: {
@@ -307,7 +483,7 @@ export type NixxieConfig<TypeInfo extends BaseNixxieTypeInfo = BaseNixxieTypeInf
307
483
  lists: {
308
484
  [listKey: string]: {
309
485
  listKey: string;
310
- } & Required<NixxieConfigPre<TypeInfo>['lists'][string]>;
486
+ } & Required<NixxieConfigPre<TypeInfo>['collections'][string]>;
311
487
  };
312
488
  server: Omit<Required<NonNullable<NixxieConfigPre<TypeInfo>['server']>>, 'cors' | 'port'> & {
313
489
  cors: CorsOptions | null;
@@ -325,10 +501,16 @@ export type NixxieConfig<TypeInfo extends BaseNixxieTypeInfo = BaseNixxieTypeInf
325
501
  search: NixxieSearchService | undefined;
326
502
  notifications: NixxieNotificationsService | undefined;
327
503
  ai: NixxieAiService | undefined;
504
+ aiRag: NixxieAiRagService | undefined;
505
+ versioning: NixxieVersioningService | undefined;
506
+ workflow: NixxieWorkflowService | undefined;
507
+ apiKeys: NixxieApiKeysService | undefined;
508
+ logger: NixxieLoggerService | undefined;
509
+ backup: NixxieBackupService | undefined;
328
510
  telemetry: boolean;
329
511
  ui: NonNullable<Required<NixxieConfigPre<TypeInfo>['ui']>>;
330
512
  };
331
- export type { BaseFields, ListConfig, MaybeItemFunctionWithFilter, MaybeSessionFunction };
513
+ export type { BaseFields, CollectionConfig, MaybeItemFunctionWithFilter, MaybeSessionFunction };
332
514
  export type AdminFileToWrite = {
333
515
  mode: 'write';
334
516
  src: string;
@@ -338,5 +520,5 @@ export type AdminFileToWrite = {
338
520
  inputPath: string;
339
521
  outputPath: string;
340
522
  };
341
- export type { FieldAccessControl, FieldHooks, ListAccessControl, ListHooks };
523
+ export type { FieldAccessControl, FieldHooks, CollectionAccessControl, CollectionHooks };
342
524
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"../../../../../src/types/config","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,KAAK,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AACvC,OAAO,KAAK,OAAO,MAAM,SAAS,CAAA;AAClC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,0BAA0B,EAC1B,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACtB,oBAAU;AACX,OAAO,KAAK,EAAE,eAAe,EAAE,sBAAkB;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAgB;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,4BAAwB;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAgB;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,mBAAe;AACpD,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,2BAA2B,EAC3B,oBAAoB,EACrB,mBAAe;AAEhB,yCAAqC;AACrC,iCAA6B;AAC7B,gCAA4B;AAG5B,KAAK,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAA;AACzD,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,cAAc,CAAA;IACrB,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,eAAe,CAAC,QAAQ,SAAS,kBAAkB,GAAG,kBAAkB,IAAI;IACtF,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IAED,EAAE,EAAE;QACF,QAAQ,EAAE,gBAAgB,CAAA;QAC1B,GAAG,EAAE,MAAM,CAAA;QAEX,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAC1B,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;QAC5D,aAAa,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,cAAc,GAAG,mBAAmB,CAAC,CAAA;QACrE,OAAO,CAAC,EAAE,aAAa,CAAA;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;QAEzB,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAA;QAC/C,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,GAAG,CAAA;KAC1C,CAAA;IAED,OAAO,CAAC,EAAE;QAER,IAAI,CAAC,EAAE,MAAM,CAAA;QAGb,IAAI,CAAC,EAAE,WAAW,CAAA;QAClB,UAAU,CAAC,EAAE,iBAAiB,CAAA;QAC9B;;;;;WAKG;QACH,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;QAC/B;;;WAGG;QACH,YAAY,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QACpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAgCG;QACH,KAAK,CAAC,EAAE,OAAO,CAAA;QAEf;;;WAGG;QACH,UAAU,CAAC,EAAE,MAAM,CAAA;QAEnB;;;WAGG;QACH,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,aAAa,CAAA;KAC/D,CAAA;IAED,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;IACtC,MAAM,CAAC,EAAE;QACP,4FAA4F;QAC5F,IAAI,CAAC,EAAE,OAAO,GAAG,WAAW,CAAA;QAE5B,kDAAkD;QAClD,WAAW,CAAC,EAAE,MAAM,CAAA;QAEpB,oDAAoD;QACpD,gBAAgB,CAAC,EAAE,CACjB,GAAG,EAAE,OAAO,CAAC,OAAO,EACpB,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,KAC7B,YAAY,CAAC,IAAI,CAAC,CAAA;QAEvB,iDAAiD;QACjD,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,CAAA;KAC5F,GAAG,CACA;QACE,+EAA+E;QAC/E,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,GACD;QACE,+BAA+B;QAC/B,OAAO,CAAC,EAAE,aAAa,CAAA;KACxB,CACJ,CAAA;IAED,OAAO,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAA;IAExD;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,EAAE,kBAAkB,CAAA;IAE1B;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAA;IAExB;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,EAAE,kBAAkB,CAAA;IAE1B;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,EAAE,kBAAkB,CAAA;IAE1B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,EAAE,qBAAqB,CAAA;IAEhC;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,sBAAsB,CAAA;IAElC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAE5B;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,EAAE,oBAAoB,CAAA;IAE9B;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAE5B;;;;;;;;;;;;OAYG;IACH,aAAa,CAAC,EAAE,0BAA0B,CAAA;IAE1C;;;;;;;;;;;;OAYG;IACH,EAAE,CAAC,EAAE,eAAe,CAAA;IAEpB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB,EAAE,CAAC,EAAE;QACH,uCAAuC;QACvC,UAAU,CAAC,EAAE,OAAO,CAAA;QAEpB,yGAAyG;QACzG,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,YAAY,CAAC,OAAO,CAAC,CAAA;QAE7E,uEAAuE;QACvE,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;QAE/B,yCAAyC;QACzC,QAAQ,CAAC,EAAE,MAAM,CAAA;QAEjB,kBAAkB,CAAC,EAAE,MAAM,YAAY,CAAC,SAAS,gBAAgB,EAAE,CAAC,CAAA;QAEpE,yEAAyE;QACzE,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE;YACtB,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAA;YAChC,gBAAgB,EAAE,OAAO,CAAA;YACzB,QAAQ,EAAE,MAAM,CAAA;SACjB,KAAK,YAAY,CAAC;YAAE,IAAI,EAAE,UAAU,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC,CAAA;KAC5D,CAAA;CACF,CAAA;AAED,MAAM,MAAM,YAAY,CAAC,QAAQ,SAAS,kBAAkB,GAAG,kBAAkB,IAAI;IACnF,KAAK,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAA;IACzC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,eAAe,CAAC,GAAG;QACrE,aAAa,EAAE,cAAc,GAAG,KAAK,CAAC,cAAc,GAAG,mBAAmB,CAAC,CAAA;KAC5E,CAAA;IACD,OAAO,EAAE,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG;QAC3D,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;IACD,KAAK,EAAE;QACL,CAAC,OAAO,EAAE,MAAM,GAAG;YACjB,OAAO,EAAE,MAAM,CAAA;SAChB,GAAG,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;KACzD,CAAA;IACD,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG;QAC1F,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;QACxB,OAAO,EAAE,aAAa,CAAA;KACvB,CAAA;IACD,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAA;IAC7C,KAAK,EAAE,kBAAkB,GAAG,SAAS,CAAA;IACrC,IAAI,EAAE,iBAAiB,GAAG,SAAS,CAAA;IACnC,KAAK,EAAE,kBAAkB,GAAG,SAAS,CAAA;IACrC,KAAK,EAAE,kBAAkB,GAAG,SAAS,CAAA;IACrC,QAAQ,EAAE,qBAAqB,GAAG,SAAS,CAAA;IAC3C,SAAS,EAAE,sBAAsB,GAAG,SAAS,CAAA;IAC7C,MAAM,EAAE,mBAAmB,GAAG,SAAS,CAAA;IACvC,OAAO,EAAE,oBAAoB,GAAG,SAAS,CAAA;IACzC,MAAM,EAAE,mBAAmB,GAAG,SAAS,CAAA;IACvC,aAAa,EAAE,0BAA0B,GAAG,SAAS,CAAA;IACrD,EAAE,EAAE,eAAe,GAAG,SAAS,CAAA;IAC/B,SAAS,EAAE,OAAO,CAAA;IAClB,EAAE,EAAE,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;CAC3D,CAAA;AAED,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,CAAA;AAEzF,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAA;AAE3D,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"../../../../../src/types/config","sources":["index.ts"],"names":[],"mappings":"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"}