@nixxie-cms/core 1.0.3 → 1.1.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.
- package/CHANGES-1.1.md +134 -0
- package/context/dist/nixxie-cms-core-context.cjs.js +4 -3
- package/context/dist/nixxie-cms-core-context.esm.js +3 -2
- package/dist/declarations/src/access.d.ts +2 -2
- package/dist/declarations/src/access.d.ts.map +1 -1
- package/dist/declarations/src/admin-ui/components/Navigation.d.ts +2 -2
- package/dist/declarations/src/admin-ui/components/Navigation.d.ts.map +1 -1
- package/dist/declarations/src/admin-ui/context.d.ts +6 -6
- package/dist/declarations/src/admin-ui/context.d.ts.map +1 -1
- package/dist/declarations/src/admin-ui/utils/Fields.d.ts +3 -3
- package/dist/declarations/src/admin-ui/utils/Fields.d.ts.map +1 -1
- package/dist/declarations/src/admin-ui/utils/filters.d.ts +5 -5
- package/dist/declarations/src/admin-ui/utils/filters.d.ts.map +1 -1
- package/dist/declarations/src/admin-ui/utils/useCreateItem.d.ts +3 -3
- package/dist/declarations/src/admin-ui/utils/useCreateItem.d.ts.map +1 -1
- package/dist/declarations/src/admin-ui/utils/utils.d.ts +2 -2
- package/dist/declarations/src/admin-ui/utils/utils.d.ts.map +1 -1
- package/dist/declarations/src/context.d.ts +1 -1
- package/dist/declarations/src/context.d.ts.map +1 -1
- package/dist/declarations/src/fields/types/bigInt/index.d.ts +3 -3
- package/dist/declarations/src/fields/types/bigInt/index.d.ts.map +1 -1
- package/dist/declarations/src/fields/types/bytes/index.d.ts +3 -3
- package/dist/declarations/src/fields/types/bytes/index.d.ts.map +1 -1
- package/dist/declarations/src/fields/types/calendarDay/index.d.ts +3 -3
- package/dist/declarations/src/fields/types/calendarDay/index.d.ts.map +1 -1
- package/dist/declarations/src/fields/types/checkbox/index.d.ts +3 -3
- package/dist/declarations/src/fields/types/checkbox/index.d.ts.map +1 -1
- package/dist/declarations/src/fields/types/decimal/index.d.ts +3 -3
- package/dist/declarations/src/fields/types/decimal/index.d.ts.map +1 -1
- package/dist/declarations/src/fields/types/file/index.d.ts +4 -4
- package/dist/declarations/src/fields/types/file/index.d.ts.map +1 -1
- package/dist/declarations/src/fields/types/float/index.d.ts +3 -3
- package/dist/declarations/src/fields/types/float/index.d.ts.map +1 -1
- package/dist/declarations/src/fields/types/image/index.d.ts +4 -4
- package/dist/declarations/src/fields/types/image/index.d.ts.map +1 -1
- package/dist/declarations/src/fields/types/integer/index.d.ts +3 -3
- package/dist/declarations/src/fields/types/integer/index.d.ts.map +1 -1
- package/dist/declarations/src/fields/types/json/index.d.ts +3 -3
- package/dist/declarations/src/fields/types/json/index.d.ts.map +1 -1
- package/dist/declarations/src/fields/types/multiselect/index.d.ts +3 -3
- package/dist/declarations/src/fields/types/multiselect/index.d.ts.map +1 -1
- package/dist/declarations/src/fields/types/multiselect/views/index.d.ts.map +1 -1
- package/dist/declarations/src/fields/types/password/index.d.ts +3 -3
- package/dist/declarations/src/fields/types/password/index.d.ts.map +1 -1
- package/dist/declarations/src/fields/types/relationship/index.d.ts +8 -8
- package/dist/declarations/src/fields/types/relationship/index.d.ts.map +1 -1
- package/dist/declarations/src/fields/types/relationship/views/ComboboxMany.d.ts +3 -3
- package/dist/declarations/src/fields/types/relationship/views/ComboboxMany.d.ts.map +1 -1
- package/dist/declarations/src/fields/types/relationship/views/ComboboxSingle.d.ts +3 -3
- package/dist/declarations/src/fields/types/relationship/views/ComboboxSingle.d.ts.map +1 -1
- package/dist/declarations/src/fields/types/relationship/views/index.d.ts +3 -3
- package/dist/declarations/src/fields/types/relationship/views/index.d.ts.map +1 -1
- package/dist/declarations/src/fields/types/relationship/views/types.d.ts +3 -3
- package/dist/declarations/src/fields/types/relationship/views/types.d.ts.map +1 -1
- package/dist/declarations/src/fields/types/select/index.d.ts +3 -3
- package/dist/declarations/src/fields/types/select/index.d.ts.map +1 -1
- package/dist/declarations/src/fields/types/text/index.d.ts +3 -3
- package/dist/declarations/src/fields/types/text/index.d.ts.map +1 -1
- package/dist/declarations/src/fields/types/timestamp/index.d.ts +3 -3
- package/dist/declarations/src/fields/types/timestamp/index.d.ts.map +1 -1
- package/dist/declarations/src/fields/types/virtual/index.d.ts +7 -7
- package/dist/declarations/src/fields/types/virtual/index.d.ts.map +1 -1
- package/dist/declarations/src/helpers.d.ts +249 -13
- package/dist/declarations/src/helpers.d.ts.map +1 -1
- package/dist/declarations/src/index.d.ts +9 -4
- package/dist/declarations/src/index.d.ts.map +1 -1
- package/dist/declarations/src/internal-unstable/admin-ui/pages/ListPage/index.d.ts.map +1 -1
- package/dist/declarations/src/lib/admin-meta.d.ts +11 -11
- package/dist/declarations/src/lib/admin-meta.d.ts.map +1 -1
- package/dist/declarations/src/lib/core/access-control.d.ts +18 -18
- package/dist/declarations/src/lib/core/access-control.d.ts.map +1 -1
- package/dist/declarations/src/lib/core/cascade.d.ts +47 -0
- package/dist/declarations/src/lib/core/cascade.d.ts.map +1 -0
- package/dist/declarations/src/lib/core/initialise-lists.d.ts +27 -24
- package/dist/declarations/src/lib/core/initialise-lists.d.ts.map +1 -1
- package/dist/declarations/src/lib/env.d.ts +9 -0
- package/dist/declarations/src/lib/env.d.ts.map +1 -0
- package/dist/declarations/src/lib/system.d.ts +1 -1
- package/dist/declarations/src/lib/system.d.ts.map +1 -1
- package/dist/declarations/src/list-features.d.ts +162 -0
- package/dist/declarations/src/list-features.d.ts.map +1 -0
- package/dist/declarations/src/schema.d.ts +24 -23
- package/dist/declarations/src/schema.d.ts.map +1 -1
- package/dist/declarations/src/session.d.ts +75 -0
- package/dist/declarations/src/session.d.ts.map +1 -1
- package/dist/declarations/src/types/admin-meta.d.ts +11 -11
- package/dist/declarations/src/types/admin-meta.d.ts.map +1 -1
- package/dist/declarations/src/types/config/access-control.d.ts +42 -42
- package/dist/declarations/src/types/config/access-control.d.ts.map +1 -1
- package/dist/declarations/src/types/config/fields.d.ts +19 -19
- package/dist/declarations/src/types/config/fields.d.ts.map +1 -1
- package/dist/declarations/src/types/config/hooks.d.ts +131 -131
- package/dist/declarations/src/types/config/hooks.d.ts.map +1 -1
- package/dist/declarations/src/types/config/index.d.ts +171 -8
- package/dist/declarations/src/types/config/index.d.ts.map +1 -1
- package/dist/declarations/src/types/config/lists.d.ts +146 -108
- package/dist/declarations/src/types/config/lists.d.ts.map +1 -1
- package/dist/declarations/src/types/context.d.ts +349 -47
- package/dist/declarations/src/types/context.d.ts.map +1 -1
- package/dist/declarations/src/types/next-fields.d.ts +28 -28
- package/dist/declarations/src/types/next-fields.d.ts.map +1 -1
- package/dist/declarations/src/types/type-info.d.ts +3 -3
- package/dist/declarations/src/types/type-info.d.ts.map +1 -1
- package/dist/{express-7559ca2d.esm.js → express-0abbce07.esm.js} +6 -6
- package/dist/{express-455ae20c.cjs.js → express-7ca6f76a.cjs.js} +6 -6
- package/dist/{index-15c8f81e.esm.js → index-5d8b0b4e.esm.js} +363 -183
- package/dist/index-6055753b.cjs.js +393 -0
- package/dist/{index-42045902.cjs.js → index-ac29f382.cjs.js} +363 -185
- package/dist/index-f1703b7b.esm.js +386 -0
- package/dist/nixxie-cms-core.cjs.js +1387 -30
- package/dist/nixxie-cms-core.esm.js +1361 -24
- package/dist/{non-null-graphql-add6bb3d.cjs.js → non-null-graphql-4a44c122.cjs.js} +1 -1
- package/dist/{non-null-graphql-a84ed64d.esm.js → non-null-graphql-8c5feaae.esm.js} +1 -1
- package/dist/{resolve-hooks-165a9ce2.cjs.js → resolve-hooks-10a5f84c.cjs.js} +240 -6
- package/dist/{resolve-hooks-6813a045.esm.js → resolve-hooks-9e676794.esm.js} +238 -7
- package/dist/{system-03e49e4f.esm.js → system-4d2a2648.esm.js} +32 -7
- package/dist/{system-a321642d.cjs.js → system-69e1a285.cjs.js} +32 -7
- package/fields/dist/nixxie-cms-core-fields.cjs.js +29 -576
- package/fields/dist/nixxie-cms-core-fields.esm.js +18 -565
- package/fields/types/bytes/dist/nixxie-cms-core-fields-types-bytes.cjs.js +4 -2
- package/fields/types/bytes/dist/nixxie-cms-core-fields-types-bytes.esm.js +4 -2
- package/fields/types/multiselect/views/dist/nixxie-cms-core-fields-types-multiselect-views.cjs.js +1 -6
- package/fields/types/multiselect/views/dist/nixxie-cms-core-fields-types-multiselect-views.esm.js +1 -6
- package/fields/types/password/dist/nixxie-cms-core-fields-types-password.cjs.js +4 -2
- package/fields/types/password/dist/nixxie-cms-core-fields-types-password.esm.js +4 -2
- package/internal-unstable/artifacts/dist/nixxie-cms-core-internal-unstable-artifacts.cjs.js +4 -3
- package/internal-unstable/artifacts/dist/nixxie-cms-core-internal-unstable-artifacts.esm.js +4 -3
- package/package.json +4 -4
- package/scripts/cli/dist/nixxie-cms-core-scripts-cli.cjs.js +4 -3
- package/scripts/cli/dist/nixxie-cms-core-scripts-cli.esm.js +4 -3
- package/scripts/dist/nixxie-cms-core-scripts.cjs.js +4 -3
- package/scripts/dist/nixxie-cms-core-scripts.esm.js +4 -3
- package/session/dist/nixxie-cms-core-session.cjs.js +286 -0
- package/session/dist/nixxie-cms-core-session.esm.js +279 -1
- package/src/access.ts +25 -25
- package/src/admin-ui/admin-meta-graphql.ts +5 -5
- package/src/admin-ui/components/CreateButtonLink.tsx +46 -46
- package/src/admin-ui/components/Navigation.tsx +3 -3
- package/src/admin-ui/context.tsx +6 -6
- package/src/admin-ui/utils/Fields.tsx +241 -241
- package/src/admin-ui/utils/actionData.ts +36 -36
- package/src/admin-ui/utils/filters.ts +148 -148
- package/src/admin-ui/utils/useCreateItem.ts +171 -171
- package/src/admin-ui/utils/utils.tsx +127 -127
- package/src/context.ts +1 -1
- package/src/fields/non-null-graphql.ts +115 -115
- package/src/fields/types/bigInt/index.ts +6 -6
- package/src/fields/types/bytes/index.ts +6 -6
- package/src/fields/types/calendarDay/index.ts +18 -19
- package/src/fields/types/checkbox/index.ts +6 -6
- package/src/fields/types/decimal/index.ts +6 -6
- package/src/fields/types/file/index.ts +8 -8
- package/src/fields/types/float/index.ts +6 -6
- package/src/fields/types/image/index.ts +8 -8
- package/src/fields/types/integer/index.ts +6 -6
- package/src/fields/types/json/index.ts +5 -5
- package/src/fields/types/multiselect/index.ts +7 -7
- package/src/fields/types/multiselect/views/index.tsx +149 -151
- package/src/fields/types/password/index.ts +6 -6
- package/src/fields/types/relationship/index.ts +13 -13
- package/src/fields/types/relationship/views/ComboboxMany.tsx +110 -110
- package/src/fields/types/relationship/views/ComboboxSingle.tsx +115 -115
- package/src/fields/types/relationship/views/ContextualActions.tsx +139 -139
- package/src/fields/types/relationship/views/index.tsx +492 -492
- package/src/fields/types/relationship/views/types.ts +46 -46
- package/src/fields/types/relationship/views/useApolloQuery.ts +185 -185
- package/src/fields/types/relationship/views/useFilter.tsx +109 -109
- package/src/fields/types/select/index.ts +6 -6
- package/src/fields/types/text/index.ts +6 -6
- package/src/fields/types/timestamp/index.ts +23 -21
- package/src/fields/types/virtual/index.ts +11 -11
- package/src/helpers.ts +773 -42
- package/src/index.ts +66 -24
- package/src/internal-unstable/admin-ui/pages/ItemPage/common.tsx +4 -4
- package/src/internal-unstable/admin-ui/pages/ItemPage/index.tsx +5 -5
- package/src/internal-unstable/admin-ui/pages/ListPage/index.tsx +8 -8
- package/src/lib/admin-meta.ts +369 -369
- package/src/lib/context/createContext.ts +5 -0
- package/src/lib/core/access-control.ts +434 -434
- package/src/lib/core/cascade.ts +236 -0
- package/src/lib/core/initialise-lists.ts +49 -33
- package/src/lib/core/mutations/index.ts +7 -0
- package/src/lib/core/mutations/nested-mutation-many-input-resolvers.ts +145 -145
- package/src/lib/core/mutations/nested-mutation-one-input-resolvers.ts +71 -71
- package/src/lib/core/queries/output-field.ts +178 -178
- package/src/lib/env.ts +50 -0
- package/src/lib/id-field.ts +2 -2
- package/src/lib/system.ts +221 -207
- package/src/lib/typescript-schema-printer.ts +227 -227
- package/src/list-features.ts +476 -0
- package/src/schema.ts +91 -22
- package/src/session.ts +225 -0
- package/src/types/admin-meta.ts +218 -218
- package/src/types/config/access-control.ts +186 -186
- package/src/types/config/fields.ts +96 -96
- package/src/types/config/hooks.ts +529 -529
- package/src/types/config/index.ts +185 -7
- package/src/types/config/lists.ts +606 -565
- package/src/types/context.ts +426 -55
- package/src/types/next-fields.ts +31 -31
- package/src/types/type-info.ts +38 -38
- package/src/types/type-tests.ts +21 -21
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import type { CacheHint } from '@apollo/cache-control-types';
|
|
2
|
-
import { GInputObjectType
|
|
2
|
+
import type { GInputObjectType } from '@graphql-ts/schema';
|
|
3
|
+
import { type GArg, type GInputType } from '@graphql-ts/schema';
|
|
3
4
|
import type { GroupInfo } from "../../schema.js";
|
|
4
|
-
import type { ActionMeta, BaseFieldTypeInfo,
|
|
5
|
-
import type { ResolvedFieldHooks,
|
|
6
|
-
import type { BaseActions, MaybeBooleanItemFunctionWithFilter, MaybeBooleanSessionFunctionWithFilter, MaybeItemActionFunctionWithFilter, MaybeItemFieldFunction, MaybeItemFieldFunctionWithFilter, MaybeSessionFunction, MaybeSessionFunctionWithFilter } from "../../types/config/lists.js";
|
|
5
|
+
import type { ActionMeta, BaseFieldTypeInfo, BaseCollectionTypeInfo, CacheHintArgs, GraphQLTypesForCollection, NixxieConfig, MaybeFieldFunction, NextFieldType } from "../../types/index.js";
|
|
6
|
+
import type { ResolvedFieldHooks, ResolvedCollectionHooks } from "../../types/config/hooks.js";
|
|
7
|
+
import type { BaseActions, CascadeRule, MaybeBooleanItemFunctionWithFilter, MaybeBooleanSessionFunctionWithFilter, MaybeItemActionFunctionWithFilter, MaybeItemFieldFunction, MaybeItemFieldFunctionWithFilter, MaybeSessionFunction, MaybeSessionFunctionWithFilter } from "../../types/config/lists.js";
|
|
7
8
|
import { type GraphQLNames } from "../../types/utils.js";
|
|
8
|
-
import { type ResolvedActionAccessControl, type ResolvedFieldAccessControl, type
|
|
9
|
+
import { type ResolvedActionAccessControl, type ResolvedFieldAccessControl, type ResolvedCollectionAccessControl } from "./access-control.js";
|
|
9
10
|
import { type ResolvedDBField } from "./resolve-relationships.js";
|
|
10
11
|
export type InitialisedAction = {
|
|
11
12
|
actionKey: string;
|
|
12
13
|
access: ResolvedActionAccessControl;
|
|
13
|
-
resolve: BaseActions<
|
|
14
|
+
resolve: BaseActions<BaseCollectionTypeInfo>[keyof BaseActions<BaseCollectionTypeInfo>]['resolve'];
|
|
14
15
|
graphql: {
|
|
15
16
|
arguments: {
|
|
16
17
|
name: string;
|
|
@@ -35,10 +36,10 @@ export type InitialisedAction = {
|
|
|
35
36
|
icon: ActionMeta['icon'];
|
|
36
37
|
messages: ActionMeta['messages'];
|
|
37
38
|
itemView: Omit<ActionMeta['itemView'], 'actionMode'> & {
|
|
38
|
-
actionMode: MaybeItemActionFunctionWithFilter<'enabled' | 'disabled' | 'hidden', 'disabled' | 'hidden',
|
|
39
|
+
actionMode: MaybeItemActionFunctionWithFilter<'enabled' | 'disabled' | 'hidden', 'disabled' | 'hidden', BaseCollectionTypeInfo>;
|
|
39
40
|
};
|
|
40
41
|
listView: {
|
|
41
|
-
actionMode: MaybeSessionFunctionWithFilter<'enabled' | 'disabled' | 'hidden', 'disabled' | 'hidden',
|
|
42
|
+
actionMode: MaybeSessionFunctionWithFilter<'enabled' | 'disabled' | 'hidden', 'disabled' | 'hidden', BaseCollectionTypeInfo>;
|
|
42
43
|
};
|
|
43
44
|
argSources: Record<string, {
|
|
44
45
|
itemField: string;
|
|
@@ -49,14 +50,14 @@ export type InitialisedField = {
|
|
|
49
50
|
fieldKey: string;
|
|
50
51
|
access: ResolvedFieldAccessControl;
|
|
51
52
|
dbField: ResolvedDBField;
|
|
52
|
-
hooks: ResolvedFieldHooks<
|
|
53
|
+
hooks: ResolvedFieldHooks<BaseCollectionTypeInfo, BaseFieldTypeInfo>;
|
|
53
54
|
graphql: {
|
|
54
55
|
isEnabled: {
|
|
55
56
|
read: boolean;
|
|
56
57
|
create: boolean;
|
|
57
58
|
update: boolean;
|
|
58
|
-
filter: MaybeFieldFunction<
|
|
59
|
-
orderBy: MaybeFieldFunction<
|
|
59
|
+
filter: MaybeFieldFunction<BaseCollectionTypeInfo>;
|
|
60
|
+
orderBy: MaybeFieldFunction<BaseCollectionTypeInfo>;
|
|
60
61
|
};
|
|
61
62
|
isNonNull: {
|
|
62
63
|
read: boolean;
|
|
@@ -70,31 +71,33 @@ export type InitialisedField = {
|
|
|
70
71
|
description: string;
|
|
71
72
|
views: string | null;
|
|
72
73
|
createView: {
|
|
73
|
-
fieldMode: MaybeSessionFunctionWithFilter<'edit' | 'hidden', 'hidden',
|
|
74
|
-
isRequired: MaybeBooleanSessionFunctionWithFilter<
|
|
74
|
+
fieldMode: MaybeSessionFunctionWithFilter<'edit' | 'hidden', 'hidden', BaseCollectionTypeInfo>;
|
|
75
|
+
isRequired: MaybeBooleanSessionFunctionWithFilter<BaseCollectionTypeInfo>;
|
|
75
76
|
};
|
|
76
77
|
itemView: {
|
|
77
|
-
fieldMode: MaybeItemFieldFunctionWithFilter<'read' | 'edit' | 'hidden', 'read' | 'hidden',
|
|
78
|
-
fieldPosition: MaybeItemFieldFunction<'form' | 'sidebar',
|
|
79
|
-
isRequired: MaybeBooleanItemFunctionWithFilter<
|
|
78
|
+
fieldMode: MaybeItemFieldFunctionWithFilter<'read' | 'edit' | 'hidden', 'read' | 'hidden', BaseCollectionTypeInfo, BaseFieldTypeInfo>;
|
|
79
|
+
fieldPosition: MaybeItemFieldFunction<'form' | 'sidebar', BaseCollectionTypeInfo, BaseFieldTypeInfo>;
|
|
80
|
+
isRequired: MaybeBooleanItemFunctionWithFilter<BaseCollectionTypeInfo, BaseFieldTypeInfo>;
|
|
80
81
|
};
|
|
81
82
|
listView: {
|
|
82
|
-
fieldMode: MaybeSessionFunction<'read' | 'hidden',
|
|
83
|
+
fieldMode: MaybeSessionFunction<'read' | 'hidden', BaseCollectionTypeInfo>;
|
|
83
84
|
};
|
|
84
85
|
};
|
|
85
86
|
} & Pick<NextFieldType, 'input' | 'output' | 'getAdminMeta' | 'views' | '__nxTelemetryFieldTypeName' | 'extraOutputFields' | 'unreferencedConcreteInterfaceImplementations'>;
|
|
86
87
|
export type InitialisedList = {
|
|
87
88
|
listKey: string;
|
|
88
|
-
access:
|
|
89
|
+
access: ResolvedCollectionAccessControl;
|
|
90
|
+
/** Referential-integrity rules enacted on delete (see CascadeRule). */
|
|
91
|
+
cascade: CascadeRule[];
|
|
89
92
|
fields: Record<string, InitialisedField>;
|
|
90
93
|
actions: InitialisedAction[];
|
|
91
|
-
groups: GroupInfo<
|
|
92
|
-
hooks:
|
|
94
|
+
groups: GroupInfo<BaseCollectionTypeInfo>[];
|
|
95
|
+
hooks: ResolvedCollectionHooks<BaseCollectionTypeInfo>;
|
|
93
96
|
/** This will include the opposites to one-sided relationships */
|
|
94
97
|
resolvedDbFields: Record<string, ResolvedDBField>;
|
|
95
98
|
lists: Record<string, InitialisedList>;
|
|
96
99
|
graphql: {
|
|
97
|
-
types:
|
|
100
|
+
types: GraphQLTypesForCollection;
|
|
98
101
|
names: GraphQLNames;
|
|
99
102
|
isEnabled: {
|
|
100
103
|
type: boolean;
|
|
@@ -102,8 +105,8 @@ export type InitialisedList = {
|
|
|
102
105
|
create: boolean;
|
|
103
106
|
update: boolean;
|
|
104
107
|
delete: boolean;
|
|
105
|
-
filter: MaybeFieldFunction<
|
|
106
|
-
orderBy: MaybeFieldFunction<
|
|
108
|
+
filter: MaybeFieldFunction<BaseCollectionTypeInfo>;
|
|
109
|
+
orderBy: MaybeFieldFunction<BaseCollectionTypeInfo>;
|
|
107
110
|
};
|
|
108
111
|
};
|
|
109
112
|
prisma: {
|
|
@@ -125,7 +128,7 @@ export type InitialisedList = {
|
|
|
125
128
|
triviallySearchableFields: Set<string>;
|
|
126
129
|
};
|
|
127
130
|
isSingleton: boolean;
|
|
128
|
-
cacheHint: ((args: CacheHintArgs<
|
|
131
|
+
cacheHint: ((args: CacheHintArgs<BaseCollectionTypeInfo>) => CacheHint) | undefined;
|
|
129
132
|
};
|
|
130
133
|
export declare function initialiseLists(config: NixxieConfig): Record<string, InitialisedList>;
|
|
131
134
|
//# sourceMappingURL=initialise-lists.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initialise-lists.d.ts","sourceRoot":"../../../../../src/lib/core","sources":["initialise-lists.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,KAAK,IAAI,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"initialise-lists.d.ts","sourceRoot":"../../../../../src/lib/core","sources":["initialise-lists.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAa/D,OAAO,KAAK,EAAE,SAAS,EAAE,wBAAoB;AAC7C,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EAEjB,sBAAsB,EACtB,aAAa,EAGb,yBAAyB,EACzB,YAAY,EAGZ,kBAAkB,EAClB,aAAa,EACd,6BAAmB;AAEpB,OAAO,KAAK,EAEV,kBAAkB,EAClB,uBAAuB,EACxB,oCAAgC;AACjC,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,kCAAkC,EAClC,qCAAqC,EACrC,iCAAiC,EACjC,sBAAsB,EACtB,gCAAgC,EAChC,oBAAoB,EACpB,8BAA8B,EAC/B,oCAAgC;AACjC,OAAO,EAAE,KAAK,YAAY,EAAc,6BAAyB;AACjE,OAAO,EACL,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAC/B,KAAK,+BAA+B,EAGrC,4BAAwB;AAGzB,OAAO,EAAE,KAAK,eAAe,EAAwB,mCAA+B;AAGpF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,MAAM,CAAA;IAEjB,MAAM,EAAE,2BAA2B,CAAA;IACnC,OAAO,EAAE,WAAW,CAAC,sBAAsB,CAAC,CAAC,MAAM,WAAW,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAClG,OAAO,EAAE;QACP,SAAS,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE;gBAAE,SAAS,EAAE,MAAM,CAAA;aAAE,GAAG,IAAI,CAAA;SAAE,EAAE,CAAA;QACjF,KAAK,EAAE;YACL,GAAG,EAAE,MAAM,CAAA;YACX,IAAI,EAAE,MAAM,CAAA;YACZ,IAAI,EAAE,MAAM,CAAA;SACb,CAAA;QACD,KAAK,EAAE;YACL,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;YAC3C,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;SACzD,CAAA;KACF,CAAA;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE;QACF,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;QAC1B,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;QACxB,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;QAChC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,GAAG;YACrD,UAAU,EAAE,iCAAiC,CAC3C,SAAS,GAAG,UAAU,GAAG,QAAQ,EACjC,UAAU,GAAG,QAAQ,EACrB,sBAAsB,CACvB,CAAA;SACF,CAAA;QACD,QAAQ,EAAE;YACR,UAAU,EAAE,8BAA8B,CACxC,SAAS,GAAG,UAAU,GAAG,QAAQ,EACjC,UAAU,GAAG,QAAQ,EACrB,sBAAsB,CACvB,CAAA;SACF,CAAA;QACD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAClD,CAAA;CACF,CAAA;AAoBD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAEhB,MAAM,EAAE,0BAA0B,CAAA;IAClC,OAAO,EAAE,eAAe,CAAA;IACxB,KAAK,EAAE,kBAAkB,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAA;IACpE,OAAO,EAAE;QACP,SAAS,EAAE;YACT,IAAI,EAAE,OAAO,CAAA;YACb,MAAM,EAAE,OAAO,CAAA;YACf,MAAM,EAAE,OAAO,CAAA;YACf,MAAM,EAAE,kBAAkB,CAAC,sBAAsB,CAAC,CAAA;YAClD,OAAO,EAAE,kBAAkB,CAAC,sBAAsB,CAAC,CAAA;SACpD,CAAA;QACD,SAAS,EAAE;YACT,IAAI,EAAE,OAAO,CAAA;YACb,MAAM,EAAE,OAAO,CAAA;YACf,MAAM,EAAE,OAAO,CAAA;SAChB,CAAA;QACD,SAAS,EAAE,SAAS,GAAG,SAAS,CAAA;KACjC,CAAA;IACD,EAAE,EAAE;QACF,KAAK,EAAE,MAAM,CAAA;QACb,WAAW,EAAE,MAAM,CAAA;QACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;QACpB,UAAU,EAAE;YACV,SAAS,EAAE,8BAA8B,CAAC,MAAM,GAAG,QAAQ,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAA;YAC9F,UAAU,EAAE,qCAAqC,CAAC,sBAAsB,CAAC,CAAA;SAC1E,CAAA;QACD,QAAQ,EAAE;YACR,SAAS,EAAE,gCAAgC,CACzC,MAAM,GAAG,MAAM,GAAG,QAAQ,EAC1B,MAAM,GAAG,QAAQ,EACjB,sBAAsB,EACtB,iBAAiB,CAClB,CAAA;YACD,aAAa,EAAE,sBAAsB,CACnC,MAAM,GAAG,SAAS,EAClB,sBAAsB,EACtB,iBAAiB,CAClB,CAAA;YACD,UAAU,EAAE,kCAAkC,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAA;SAC1F,CAAA;QACD,QAAQ,EAAE;YACR,SAAS,EAAE,oBAAoB,CAAC,MAAM,GAAG,QAAQ,EAAE,sBAAsB,CAAC,CAAA;SAC3E,CAAA;KACF,CAAA;CACF,GAAG,IAAI,CACN,aAAa,EACX,OAAO,GACP,QAAQ,GACR,cAAc,GACd,OAAO,GACP,4BAA4B,GAC5B,mBAAmB,GACnB,8CAA8C,CACjD,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAA;IAEf,MAAM,EAAE,+BAA+B,CAAA;IAEvC,uEAAuE;IACvE,OAAO,EAAE,WAAW,EAAE,CAAA;IAEtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IACxC,OAAO,EAAE,iBAAiB,EAAE,CAAA;IAC5B,MAAM,EAAE,SAAS,CAAC,sBAAsB,CAAC,EAAE,CAAA;IAE3C,KAAK,EAAE,uBAAuB,CAAC,sBAAsB,CAAC,CAAA;IAEtD,iEAAiE;IACjE,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACjD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAEtC,OAAO,EAAE;QACP,KAAK,EAAE,yBAAyB,CAAA;QAChC,KAAK,EAAE,YAAY,CAAA;QACnB,SAAS,EAAE;YACT,IAAI,EAAE,OAAO,CAAA;YACb,KAAK,EAAE,OAAO,CAAA;YACd,MAAM,EAAE,OAAO,CAAA;YACf,MAAM,EAAE,OAAO,CAAA;YACf,MAAM,EAAE,OAAO,CAAA;YACf,MAAM,EAAE,kBAAkB,CAAC,sBAAsB,CAAC,CAAA;YAClD,OAAO,EAAE,kBAAkB,CAAC,sBAAsB,CAAC,CAAA;SACpD,CAAA;KACF,CAAA;IAED,MAAM,EAAE;QACN,KAAK,EAAE,YAAY,CAAA;QACnB,OAAO,EAAE,MAAM,CAAA;QACf,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;QAC3B,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAA;KAC7D,CAAA;IAED,EAAE,EAAE;QACF,MAAM,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;QACzE,UAAU,EAAE,MAAM,CAAA;QAClB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;QACzB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,IAAI,CAAC,CAAA;QAC/D,yBAAyB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;KACvC,CAAA;IAED,WAAW,EAAE,OAAO,CAAA;IACpB,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC,sBAAsB,CAAC,KAAK,SAAS,CAAC,GAAG,SAAS,CAAA;CACpF,CAAA;AA2vBD,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CA2HrF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { NixxieEnvSpec } from "../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Validate `env` (default `process.env`) against a spec. Applies `default`s to the env
|
|
4
|
+
* object for unset variables, then throws one aggregated error listing every missing or
|
|
5
|
+
* malformed variable. Called automatically when the config declares `env`, and exported
|
|
6
|
+
* for standalone use.
|
|
7
|
+
*/
|
|
8
|
+
export declare function validateEnv(spec: NixxieEnvSpec, env?: Record<string, string | undefined>): void;
|
|
9
|
+
//# sourceMappingURL=env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"../../../../src/lib","sources":["env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAoB,0BAAgB;AAS/D;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,aAAa,EACnB,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,IAAI,CA+BN"}
|
|
@@ -31,5 +31,5 @@ export declare function createSystem(config: NixxieConfig): {
|
|
|
31
31
|
};
|
|
32
32
|
};
|
|
33
33
|
export type System = ReturnType<typeof createSystem>;
|
|
34
|
-
export declare function
|
|
34
|
+
export declare function createNixxieContext<TypeInfo extends BaseNixxieTypeInfo>(config: NixxieConfig<TypeInfo>, PrismaModule: unknown): NixxieContext<TypeInfo>;
|
|
35
35
|
//# sourceMappingURL=system.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.d.ts","sourceRoot":"../../../../src/lib","sources":["system.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,0BAAgB;AAG/E,OAAO,EAAmB,KAAK,eAAe,EAAE,mCAA+B;AAI/E,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,MAAM,UAE1D;AAsID,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY;;;;;;;;;;oBAe7B,MAAM;;;;;;;;;;;;;oBAEN,GAAG;;;;;
|
|
1
|
+
{"version":3,"file":"system.d.ts","sourceRoot":"../../../../src/lib","sources":["system.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,aAAa,EAAE,0BAAgB;AAG/E,OAAO,EAAmB,KAAK,eAAe,EAAE,mCAA+B;AAI/E,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,MAAM,UAE1D;AAsID,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY;;;;;;;;;;oBAe7B,MAAM;;;;;;;;;;;;;oBAEN,GAAG;;;;;EA8CtB;AAED,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAA;AAEpD,wBAAgB,mBAAmB,CAAC,QAAQ,SAAS,kBAAkB,EACrE,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,EAC9B,YAAY,EAAE,OAAO,GACpB,aAAa,CAAC,QAAQ,CAAC,CAIzB"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Declarative collection features compiled into hooks + access-control filters by
|
|
3
|
+
* `defineCollection()`: computed fields, constraints, default filters, state machines,
|
|
4
|
+
* policies, events, search indexing and version snapshots.
|
|
5
|
+
*
|
|
6
|
+
* Everything here builds on the public hook/access surface — no resolver internals —
|
|
7
|
+
* so the features compose with mixins and user hooks via the same merge pipeline.
|
|
8
|
+
*/
|
|
9
|
+
import type { CollectionHooks } from "./types/index.js";
|
|
10
|
+
import type { MaybePromise } from "./types/utils.js";
|
|
11
|
+
type AnyArgs = any;
|
|
12
|
+
/**
|
|
13
|
+
* Persisted derived fields, recalculated on every create/update after all other
|
|
14
|
+
* `resolveInput` hooks have run. The target keys must be real fields on the collection
|
|
15
|
+
* (unlike `virtual()` fields, computed values are stored — so they can be filtered and
|
|
16
|
+
* sorted). `merged` is the item's prospective state (existing values + this write).
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* computed: { total: ({ merged }) => merged.price * merged.quantity }
|
|
20
|
+
*/
|
|
21
|
+
export type ComputedConfig = Record<string, (args: {
|
|
22
|
+
operation: 'create' | 'update';
|
|
23
|
+
resolvedData: Record<string, any>;
|
|
24
|
+
/** Existing item values overlaid with this operation's resolved data. */
|
|
25
|
+
merged: Record<string, any>;
|
|
26
|
+
item: Record<string, any> | undefined;
|
|
27
|
+
context: any;
|
|
28
|
+
}) => MaybePromise<unknown>>;
|
|
29
|
+
/**
|
|
30
|
+
* Data-integrity rules checked before every create/update.
|
|
31
|
+
*
|
|
32
|
+
* - `uniqueTogether`: compound uniqueness over scalar fields (e.g. `[['tenant', 'slug']]`).
|
|
33
|
+
* Checked with a query, so add a DB index for hot paths.
|
|
34
|
+
* - `checks`: named cross-field rules; return an error message to reject the write.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* constraints: {
|
|
38
|
+
* uniqueTogether: [['translationKey', 'locale']],
|
|
39
|
+
* checks: { dates: ({ merged }) => merged.endDate <= merged.startDate ? 'endDate must be after startDate' : undefined },
|
|
40
|
+
* }
|
|
41
|
+
*/
|
|
42
|
+
export type ConstraintsConfig = {
|
|
43
|
+
uniqueTogether?: string[][];
|
|
44
|
+
checks?: Record<string, (args: {
|
|
45
|
+
operation: 'create' | 'update';
|
|
46
|
+
resolvedData: Record<string, any>;
|
|
47
|
+
merged: Record<string, any>;
|
|
48
|
+
item: Record<string, any> | undefined;
|
|
49
|
+
context: any;
|
|
50
|
+
}) => MaybePromise<string | undefined | void>>;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* A where-filter automatically ANDed into every query/update/delete — including the
|
|
54
|
+
* Admin UI, which respects access filters. This is what makes `withSoftDelete()` real:
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* defaultFilter: { deletedAt: null }
|
|
58
|
+
* @example
|
|
59
|
+
* defaultFilter: ({ session }) => session?.data?.isAdmin ? true : { status: { equals: 'published' } }
|
|
60
|
+
*/
|
|
61
|
+
export type DefaultFilterConfig = Record<string, unknown> | ((args: {
|
|
62
|
+
session?: any;
|
|
63
|
+
context: any;
|
|
64
|
+
}) => MaybePromise<boolean | Record<string, unknown>>);
|
|
65
|
+
/**
|
|
66
|
+
* Enforce legal status transitions on a select field at the mutation layer.
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* stateMachine: {
|
|
70
|
+
* field: 'status',
|
|
71
|
+
* transitions: { draft: ['review'], review: ['published', 'draft'], published: ['archived'] },
|
|
72
|
+
* guards: { 'review->published': ({ session }) => session?.data?.role === 'editor' || 'Only editors can publish' },
|
|
73
|
+
* }
|
|
74
|
+
*/
|
|
75
|
+
export type StateMachineConfig = {
|
|
76
|
+
/** The (select) field holding the state. */
|
|
77
|
+
field: string;
|
|
78
|
+
/** Allowed transitions: from-state → list of reachable states. */
|
|
79
|
+
transitions: Record<string, string[]>;
|
|
80
|
+
/**
|
|
81
|
+
* Optional guards keyed `"from->to"`. Return `false` to block (generic message)
|
|
82
|
+
* or a string to block with that message.
|
|
83
|
+
*/
|
|
84
|
+
guards?: Record<string, (args: {
|
|
85
|
+
item: Record<string, any>;
|
|
86
|
+
resolvedData: Record<string, any>;
|
|
87
|
+
context: any;
|
|
88
|
+
session?: any;
|
|
89
|
+
}) => MaybePromise<boolean | string>>;
|
|
90
|
+
/** States allowed on create. Omit to allow any state on create. */
|
|
91
|
+
initial?: string | string[];
|
|
92
|
+
};
|
|
93
|
+
/** One row-level access rule: the first rule whose `when` matches decides the filter. */
|
|
94
|
+
export type PolicyRule = {
|
|
95
|
+
/** Does this rule apply to the session? (e.g. `session => session?.data?.role === 'editor'`) */
|
|
96
|
+
when: (session: any) => boolean;
|
|
97
|
+
/** `true` = unrestricted, `false` = no access, object = where-filter, function = computed filter. */
|
|
98
|
+
filter: boolean | Record<string, unknown> | ((session: any) => boolean | Record<string, unknown>);
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* Declarative row-level access: per operation, rules are evaluated in order and the
|
|
102
|
+
* first matching `when` supplies the filter; no match means no access. ANDed with any
|
|
103
|
+
* explicit `access.filter` you also configure. Pairs naturally with @nixxie-cms/rbac.
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* policies: {
|
|
107
|
+
* query: [
|
|
108
|
+
* { when: s => s?.data?.role === 'admin', filter: true },
|
|
109
|
+
* { when: s => !!s, filter: s => ({ author: { id: { equals: s.itemId } } }) },
|
|
110
|
+
* ],
|
|
111
|
+
* }
|
|
112
|
+
*/
|
|
113
|
+
export type PoliciesConfig = Partial<Record<'query' | 'update' | 'delete', PolicyRule[]>>;
|
|
114
|
+
/**
|
|
115
|
+
* Emit lifecycle events through `context.services.webhooks` after every write:
|
|
116
|
+
* `<prefix>.created` / `.updated` / `.deleted` (prefix defaults to the list key).
|
|
117
|
+
* No-op when the webhooks service is not configured.
|
|
118
|
+
*/
|
|
119
|
+
export type EventsConfig = true | {
|
|
120
|
+
/** Event name prefix. @default the list key */
|
|
121
|
+
prefix?: string;
|
|
122
|
+
operations?: ('create' | 'update' | 'delete')[];
|
|
123
|
+
/** Customise the event payload. @default { listKey, id, item } */
|
|
124
|
+
payload?: (args: AnyArgs) => unknown;
|
|
125
|
+
};
|
|
126
|
+
/**
|
|
127
|
+
* Keep a search index in sync through `context.services.search`: documents are indexed
|
|
128
|
+
* after create/update and removed after delete. No-op when search is not configured.
|
|
129
|
+
*/
|
|
130
|
+
export type SearchableConfig = true | {
|
|
131
|
+
/** Index name. @default the list key lowercased */
|
|
132
|
+
index?: string;
|
|
133
|
+
/** Item fields copied into the document. @default all scalar values on the item */
|
|
134
|
+
fields?: string[];
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* Snapshot every create/update into `context.services.versioning` (resource = list key).
|
|
138
|
+
* No-op when versioning is not configured.
|
|
139
|
+
*/
|
|
140
|
+
export type VersionedConfig = true | {
|
|
141
|
+
/** Optional label for each snapshot. */
|
|
142
|
+
label?: (args: AnyArgs) => string | undefined;
|
|
143
|
+
};
|
|
144
|
+
export type ListFeaturesConfig = {
|
|
145
|
+
computed?: ComputedConfig;
|
|
146
|
+
constraints?: ConstraintsConfig;
|
|
147
|
+
defaultFilter?: DefaultFilterConfig;
|
|
148
|
+
stateMachine?: StateMachineConfig;
|
|
149
|
+
policies?: PoliciesConfig;
|
|
150
|
+
events?: EventsConfig;
|
|
151
|
+
searchable?: SearchableConfig;
|
|
152
|
+
versioned?: VersionedConfig;
|
|
153
|
+
};
|
|
154
|
+
/** Compile the declarative features into hook fragments, in a deliberate order. */
|
|
155
|
+
export declare function compileFeatureHooks(features: ListFeaturesConfig): Array<Partial<CollectionHooks<any>>>;
|
|
156
|
+
/**
|
|
157
|
+
* Merge `defaultFilter` and `policies` into an access-control object. Existing filters
|
|
158
|
+
* are preserved and ANDed with the feature filters.
|
|
159
|
+
*/
|
|
160
|
+
export declare function applyAccessFeatures(access: any, features: Pick<ListFeaturesConfig, 'defaultFilter' | 'policies'>): any;
|
|
161
|
+
export {};
|
|
162
|
+
//# sourceMappingURL=list-features.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-features.d.ts","sourceRoot":"../../../src","sources":["list-features.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,40 +1,41 @@
|
|
|
1
|
-
import type { Action, ActionArgsConfig, BaseFields, BaseNixxieTypeInfo,
|
|
2
|
-
export declare function
|
|
3
|
-
export type GroupInfo<
|
|
1
|
+
import type { Action, ActionArgsConfig, BaseFields, BaseNixxieTypeInfo, BaseCollectionTypeInfo, DeclaredAction, NixxieConfig, NixxieConfigPre, CollectionConfig, MaybeItemFunctionWithFilter, MaybeSessionFunction, MaybeSessionFunctionWithFilter } from "./types/index.js";
|
|
2
|
+
export declare function buildConfig<TypeInfo extends BaseNixxieTypeInfo>(config: NixxieConfigPre<TypeInfo>): NixxieConfig<TypeInfo>;
|
|
3
|
+
export type GroupInfo<CollectionTypeInfo extends BaseCollectionTypeInfo> = {
|
|
4
4
|
fields: string[];
|
|
5
5
|
label: string;
|
|
6
6
|
description: string;
|
|
7
|
-
ui: GroupUIConfig<
|
|
7
|
+
ui: GroupUIConfig<CollectionTypeInfo> | undefined;
|
|
8
8
|
};
|
|
9
|
-
type GroupUIConfig<
|
|
9
|
+
type GroupUIConfig<CollectionTypeInfo extends BaseCollectionTypeInfo> = {
|
|
10
10
|
createView?: {
|
|
11
|
-
defaultFieldMode?: MaybeSessionFunctionWithFilter<'hidden' | 'edit', 'hidden',
|
|
11
|
+
defaultFieldMode?: MaybeSessionFunctionWithFilter<'hidden' | 'edit', 'hidden', CollectionTypeInfo>;
|
|
12
12
|
};
|
|
13
13
|
itemView?: {
|
|
14
|
-
defaultFieldMode?: MaybeItemFunctionWithFilter<'edit' | 'hidden' | 'read', 'hidden' | 'read',
|
|
14
|
+
defaultFieldMode?: MaybeItemFunctionWithFilter<'edit' | 'hidden' | 'read', 'hidden' | 'read', CollectionTypeInfo>;
|
|
15
15
|
};
|
|
16
16
|
listView?: {
|
|
17
|
-
defaultFieldMode?: MaybeSessionFunction<'read' | 'hidden',
|
|
17
|
+
defaultFieldMode?: MaybeSessionFunction<'read' | 'hidden', CollectionTypeInfo>;
|
|
18
18
|
};
|
|
19
19
|
};
|
|
20
|
-
export declare function
|
|
20
|
+
export declare function fieldGroup<CollectionTypeInfo extends BaseCollectionTypeInfo>(config: {
|
|
21
21
|
label: string;
|
|
22
22
|
description?: string;
|
|
23
|
-
ui?: GroupUIConfig<
|
|
24
|
-
fields: BaseFields<
|
|
25
|
-
}): BaseFields<
|
|
26
|
-
export declare function
|
|
27
|
-
access: import("./types/index.js").
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
23
|
+
ui?: GroupUIConfig<CollectionTypeInfo>;
|
|
24
|
+
fields: BaseFields<CollectionTypeInfo>;
|
|
25
|
+
}): BaseFields<CollectionTypeInfo>;
|
|
26
|
+
export declare function collection<CollectionTypeInfo extends BaseCollectionTypeInfo>(listConfig: CollectionConfig<CollectionTypeInfo>): {
|
|
27
|
+
access: import("./types/index.js").CollectionAccessControl<CollectionTypeInfo>;
|
|
28
|
+
cascade?: import("./index.js").CascadeRule[];
|
|
29
|
+
fields: BaseFields<CollectionTypeInfo>;
|
|
30
|
+
actions?: import("./types/index.js").BaseActions<CollectionTypeInfo> | undefined;
|
|
31
|
+
ui?: import("./types/index.js").CollectionAdminUIConfig<CollectionTypeInfo> | undefined;
|
|
32
|
+
hooks?: import("./types/index.js").CollectionHooks<CollectionTypeInfo> | undefined;
|
|
33
|
+
graphql?: import("./types/index.js").CollectionGraphQLConfig<CollectionTypeInfo> | undefined;
|
|
34
|
+
db?: import("./types/index.js").CollectionDBConfig;
|
|
34
35
|
isSingleton?: boolean;
|
|
35
|
-
defaultIsFilterable?: import("./types/index.js").MaybeFieldFunction<
|
|
36
|
-
defaultIsOrderable?: import("./types/index.js").MaybeFieldFunction<
|
|
36
|
+
defaultIsFilterable?: import("./types/index.js").MaybeFieldFunction<CollectionTypeInfo> | undefined;
|
|
37
|
+
defaultIsOrderable?: import("./types/index.js").MaybeFieldFunction<CollectionTypeInfo> | undefined;
|
|
37
38
|
};
|
|
38
|
-
export declare function
|
|
39
|
+
export declare function createAction<CollectionTypeInfo extends BaseCollectionTypeInfo, Args extends ActionArgsConfig<CollectionTypeInfo> | undefined = undefined>(action: Action<CollectionTypeInfo, Args>): DeclaredAction<CollectionTypeInfo>;
|
|
39
40
|
export {};
|
|
40
41
|
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"../../../src","sources":["schema.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"../../../src","sources":["schema.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,MAAM,EACN,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EAEd,YAAY,EACZ,eAAe,EAEf,gBAAgB,EAChB,2BAA2B,EAC3B,oBAAoB,EACpB,8BAA8B,EAC/B,yBAAe;AA4HhB,wBAAgB,WAAW,CAAC,QAAQ,SAAS,kBAAkB,EAC7D,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,GAChC,YAAY,CAAC,QAAQ,CAAC,CA6FxB;AAID,MAAM,MAAM,SAAS,CAAC,kBAAkB,SAAS,sBAAsB,IAAI;IACzE,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,EAAE,EAAE,aAAa,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAAA;CAClD,CAAA;AAED,KAAK,aAAa,CAAC,kBAAkB,SAAS,sBAAsB,IAAI;IACtE,UAAU,CAAC,EAAE;QACX,gBAAgB,CAAC,EAAE,8BAA8B,CAC/C,QAAQ,GAAG,MAAM,EACjB,QAAQ,EACR,kBAAkB,CACnB,CAAA;KACF,CAAA;IACD,QAAQ,CAAC,EAAE;QACT,gBAAgB,CAAC,EAAE,2BAA2B,CAC5C,MAAM,GAAG,QAAQ,GAAG,MAAM,EAC1B,QAAQ,GAAG,MAAM,EACjB,kBAAkB,CACnB,CAAA;KACF,CAAA;IACD,QAAQ,CAAC,EAAE;QACT,gBAAgB,CAAC,EAAE,oBAAoB,CAAC,MAAM,GAAG,QAAQ,EAAE,kBAAkB,CAAC,CAAA;KAC/E,CAAA;CACF,CAAA;AAED,wBAAgB,UAAU,CAAC,kBAAkB,SAAS,sBAAsB,EAAE,MAAM,EAAE;IACpF,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,EAAE,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAA;IACtC,MAAM,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAA;CACvC,GAcM,UAAU,CAAC,kBAAkB,CAAC,CACpC;AAED,wBAAgB,UAAU,CAAC,kBAAkB,SAAS,sBAAsB,EAC1E,UAAU,EAAE,gBAAgB,CAAC,kBAAkB,CAAC;;;;;;;;;;;;EAGjD;AAED,wBAAgB,YAAY,CAC1B,kBAAkB,SAAS,sBAAsB,EACjD,IAAI,SAAS,gBAAgB,CAAC,kBAAkB,CAAC,GAAG,SAAS,GAAG,SAAS,EACzE,MAAM,EAAE,MAAM,CAAC,kBAAkB,EAAE,IAAI,CAAC,GAAG,cAAc,CAAC,kBAAkB,CAAC,CAK9E"}
|
|
@@ -67,6 +67,68 @@ cookieName, path, secure, ironOptions, domain, sameSite, }?: StatelessSessionsOp
|
|
|
67
67
|
data: Session;
|
|
68
68
|
}): Promise<string | undefined>;
|
|
69
69
|
};
|
|
70
|
+
type PersistentSessionsOptions = StatelessSessionsOptions & {
|
|
71
|
+
/**
|
|
72
|
+
* Key of the collection that stores sessions (see `sessionCollection()`).
|
|
73
|
+
* @default 'UserSession'
|
|
74
|
+
*/
|
|
75
|
+
collection?: string;
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Database-backed sessions: the cookie carries only an opaque token; the session itself
|
|
79
|
+
* lives in a collection, so sessions survive restarts, can be listed per user, and can be
|
|
80
|
+
* revoked server-side (see `listSessions` / `revokeSession` / `revokeUserSessions`).
|
|
81
|
+
*
|
|
82
|
+
* Tracks `lastSeenAt` (refreshed at most once a minute), `userAgent` and `ip` per session.
|
|
83
|
+
* Pair with a scheduled `pruneSessions()` job to clear expired/revoked rows.
|
|
84
|
+
*/
|
|
85
|
+
export declare function persistentSessions<Session>({ collection, maxAge, // 8 hours
|
|
86
|
+
...statelessSessionsOptions }?: PersistentSessionsOptions): {
|
|
87
|
+
get({ context }: {
|
|
88
|
+
context: NixxieContext<any>;
|
|
89
|
+
}): Promise<Session | undefined>;
|
|
90
|
+
start({ context, data }: {
|
|
91
|
+
context: NixxieContext<any>;
|
|
92
|
+
data: Session;
|
|
93
|
+
}): Promise<string>;
|
|
94
|
+
end({ context }: {
|
|
95
|
+
context: NixxieContext<any>;
|
|
96
|
+
}): Promise<void>;
|
|
97
|
+
};
|
|
98
|
+
export type SessionInfo = {
|
|
99
|
+
id: string;
|
|
100
|
+
itemId: string | null;
|
|
101
|
+
createdAt: Date;
|
|
102
|
+
lastSeenAt: Date | null;
|
|
103
|
+
expiresAt: Date | null;
|
|
104
|
+
revokedAt: Date | null;
|
|
105
|
+
userAgent: string | null;
|
|
106
|
+
ip: string | null;
|
|
107
|
+
};
|
|
108
|
+
/** Active (non-revoked, non-expired) sessions for a user, without their tokens. */
|
|
109
|
+
export declare function listSessions(context: NixxieContext, itemId: string, { collection }?: {
|
|
110
|
+
collection?: string;
|
|
111
|
+
}): Promise<SessionInfo[]>;
|
|
112
|
+
/** Revoke a single session by its row id. The next request with its cookie is signed out. */
|
|
113
|
+
export declare function revokeSession(context: NixxieContext, sessionId: string, { collection }?: {
|
|
114
|
+
collection?: string;
|
|
115
|
+
}): Promise<void>;
|
|
116
|
+
/** Revoke every session belonging to a user (e.g. after a password change). */
|
|
117
|
+
export declare function revokeUserSessions(context: NixxieContext, itemId: string, { collection }?: {
|
|
118
|
+
collection?: string;
|
|
119
|
+
}): Promise<number>;
|
|
120
|
+
/** Delete expired and revoked session rows. Run from a scheduled job. */
|
|
121
|
+
export declare function pruneSessions(context: NixxieContext, { collection }?: {
|
|
122
|
+
collection?: string;
|
|
123
|
+
}): Promise<number>;
|
|
124
|
+
/**
|
|
125
|
+
* Sign the current user in as another user, recording who is impersonating in the
|
|
126
|
+
* session (`impersonatedBy`). Works with any session strategy. The caller is
|
|
127
|
+
* responsible for authorising the action (e.g. an admin-only check).
|
|
128
|
+
*/
|
|
129
|
+
export declare function startImpersonation(context: NixxieContext, itemId: string | number): Promise<void>;
|
|
130
|
+
/** Return from an impersonated session to the original user's session. */
|
|
131
|
+
export declare function endImpersonation(context: NixxieContext): Promise<void>;
|
|
70
132
|
export declare function storedSessions<Session>({ store: storeFn, maxAge, // 8 hours
|
|
71
133
|
...statelessSessionsOptions }: {
|
|
72
134
|
store: SessionStoreFunction<Session>;
|
|
@@ -82,5 +144,18 @@ export declare function storedSessions<Session>({ store: storeFn, maxAge, // 8 h
|
|
|
82
144
|
context: NixxieContext<any>;
|
|
83
145
|
}): Promise<void>;
|
|
84
146
|
};
|
|
147
|
+
/**
|
|
148
|
+
* Ready-made collection definition backing `persistentSessions()`.
|
|
149
|
+
*
|
|
150
|
+
* @example
|
|
151
|
+
* config({
|
|
152
|
+
* collections: {
|
|
153
|
+
* UserSession: sessionCollection(),
|
|
154
|
+
* ...collections,
|
|
155
|
+
* },
|
|
156
|
+
* session: persistentSessions({ collection: 'UserSession' }),
|
|
157
|
+
* })
|
|
158
|
+
*/
|
|
159
|
+
export declare function sessionCollection(): any;
|
|
85
160
|
export {};
|
|
86
161
|
//# sourceMappingURL=session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"../../../src","sources":["session.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"../../../src","sources":["session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { allIcons as KeystarIcons } from '@keystar/ui/icon/all';
|
|
2
2
|
import type { ReactElement } from 'react';
|
|
3
|
-
import type { ConditionalFilter, ConditionalFilterCase,
|
|
4
|
-
import type {
|
|
3
|
+
import type { ConditionalFilter, ConditionalFilterCase, CollectionSortDescriptor } from "./config/index.js";
|
|
4
|
+
import type { BaseCollectionTypeInfo } from "./type-info.js";
|
|
5
5
|
import type { GraphQLNames, JSONValue } from "./utils.js";
|
|
6
6
|
export type NavigationProps = {
|
|
7
|
-
lists:
|
|
7
|
+
lists: CollectionMeta[];
|
|
8
8
|
};
|
|
9
9
|
export type AdminConfig = {
|
|
10
10
|
components?: {
|
|
@@ -76,13 +76,13 @@ export type FieldMeta = {
|
|
|
76
76
|
search: 'default' | 'insensitive' | null;
|
|
77
77
|
isNonNull: ('read' | 'create' | 'update')[];
|
|
78
78
|
createView: {
|
|
79
|
-
fieldMode: ConditionalFilter<'edit' | 'hidden', 'hidden',
|
|
80
|
-
isRequired: ConditionalFilterCase<
|
|
79
|
+
fieldMode: ConditionalFilter<'edit' | 'hidden', 'hidden', BaseCollectionTypeInfo>;
|
|
80
|
+
isRequired: ConditionalFilterCase<BaseCollectionTypeInfo>;
|
|
81
81
|
};
|
|
82
82
|
itemView: {
|
|
83
|
-
fieldMode: ConditionalFilter<'edit' | 'read' | 'hidden', 'read' | 'hidden',
|
|
83
|
+
fieldMode: ConditionalFilter<'edit' | 'read' | 'hidden', 'read' | 'hidden', BaseCollectionTypeInfo>;
|
|
84
84
|
fieldPosition: 'form' | 'sidebar';
|
|
85
|
-
isRequired: ConditionalFilterCase<
|
|
85
|
+
isRequired: ConditionalFilterCase<BaseCollectionTypeInfo>;
|
|
86
86
|
};
|
|
87
87
|
listView: {
|
|
88
88
|
fieldMode: 'read' | 'hidden';
|
|
@@ -123,16 +123,16 @@ export type ActionMeta = {
|
|
|
123
123
|
successMany: string;
|
|
124
124
|
};
|
|
125
125
|
itemView: {
|
|
126
|
-
actionMode: ConditionalFilter<'enabled' | 'disabled' | 'hidden', 'disabled' | 'hidden',
|
|
126
|
+
actionMode: ConditionalFilter<'enabled' | 'disabled' | 'hidden', 'disabled' | 'hidden', BaseCollectionTypeInfo>;
|
|
127
127
|
navigation: 'follow' | 'refetch' | 'return';
|
|
128
128
|
hidePrompt: boolean;
|
|
129
129
|
hideToast: boolean;
|
|
130
130
|
};
|
|
131
131
|
listView: {
|
|
132
|
-
actionMode: ConditionalFilter<'enabled' | 'disabled' | 'hidden', 'disabled' | 'hidden',
|
|
132
|
+
actionMode: ConditionalFilter<'enabled' | 'disabled' | 'hidden', 'disabled' | 'hidden', BaseCollectionTypeInfo>;
|
|
133
133
|
};
|
|
134
134
|
};
|
|
135
|
-
export type
|
|
135
|
+
export type CollectionMeta = {
|
|
136
136
|
key: string;
|
|
137
137
|
label: string;
|
|
138
138
|
singular: string;
|
|
@@ -150,7 +150,7 @@ export type ListMeta = {
|
|
|
150
150
|
pageSize: number;
|
|
151
151
|
initialColumns: string[];
|
|
152
152
|
initialSearchFields: string[];
|
|
153
|
-
initialSort:
|
|
153
|
+
initialSort: CollectionSortDescriptor<string>;
|
|
154
154
|
initialFilter: JSONValue;
|
|
155
155
|
isSingleton: boolean;
|
|
156
156
|
hideNavigation: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-meta.d.ts","sourceRoot":"../../../../src/types","sources":["admin-meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"admin-meta.d.ts","sourceRoot":"../../../../src/types","sources":["admin-meta.ts"],"names":[],"mappings":"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"}
|