@dyrected/core 2.6.3 → 2.7.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/dist/__tests__/access-features.test.d.ts +2 -0
- package/dist/__tests__/access-features.test.d.ts.map +1 -0
- package/dist/__tests__/access-features.test.js +159 -0
- package/dist/__tests__/access-features.test.js.map +1 -0
- package/dist/__tests__/access-parity.test.d.ts +2 -0
- package/dist/__tests__/access-parity.test.d.ts.map +1 -0
- package/dist/__tests__/access-parity.test.js +338 -0
- package/dist/__tests__/access-parity.test.js.map +1 -0
- package/dist/__tests__/access.test.d.ts +2 -0
- package/dist/__tests__/access.test.d.ts.map +1 -0
- package/dist/__tests__/access.test.js +137 -0
- package/dist/__tests__/access.test.js.map +1 -0
- package/dist/__tests__/admin-auth.test.d.ts +2 -0
- package/dist/__tests__/admin-auth.test.d.ts.map +1 -0
- package/dist/__tests__/admin-auth.test.js +440 -0
- package/dist/__tests__/admin-auth.test.js.map +1 -0
- package/dist/__tests__/app.test.d.ts +2 -0
- package/dist/__tests__/app.test.d.ts.map +1 -0
- package/dist/__tests__/app.test.js +112 -0
- package/dist/__tests__/app.test.js.map +1 -0
- package/dist/__tests__/audit.test.d.ts +2 -0
- package/dist/__tests__/audit.test.d.ts.map +1 -0
- package/dist/__tests__/audit.test.js +125 -0
- package/dist/__tests__/audit.test.js.map +1 -0
- package/dist/__tests__/auth-hydration.test.d.ts +2 -0
- package/dist/__tests__/auth-hydration.test.d.ts.map +1 -0
- package/dist/__tests__/auth-hydration.test.js +90 -0
- package/dist/__tests__/auth-hydration.test.js.map +1 -0
- package/dist/__tests__/auth-invite.test.d.ts +2 -0
- package/dist/__tests__/auth-invite.test.d.ts.map +1 -0
- package/dist/__tests__/auth-invite.test.js +152 -0
- package/dist/__tests__/auth-invite.test.js.map +1 -0
- package/dist/__tests__/auth-lockout.test.d.ts +2 -0
- package/dist/__tests__/auth-lockout.test.d.ts.map +1 -0
- package/dist/__tests__/auth-lockout.test.js +154 -0
- package/dist/__tests__/auth-lockout.test.js.map +1 -0
- package/dist/__tests__/auth-sessions.test.d.ts +2 -0
- package/dist/__tests__/auth-sessions.test.d.ts.map +1 -0
- package/dist/__tests__/auth-sessions.test.js +118 -0
- package/dist/__tests__/auth-sessions.test.js.map +1 -0
- package/dist/__tests__/config.test.d.ts +2 -0
- package/dist/__tests__/config.test.d.ts.map +1 -0
- package/dist/__tests__/config.test.js +402 -0
- package/dist/__tests__/config.test.js.map +1 -0
- package/dist/__tests__/define-field.test.d.ts +2 -0
- package/dist/__tests__/define-field.test.d.ts.map +1 -0
- package/dist/__tests__/define-field.test.js +121 -0
- package/dist/__tests__/define-field.test.js.map +1 -0
- package/dist/__tests__/deleteMany.test.d.ts +2 -0
- package/dist/__tests__/deleteMany.test.d.ts.map +1 -0
- package/dist/__tests__/deleteMany.test.js +75 -0
- package/dist/__tests__/deleteMany.test.js.map +1 -0
- package/dist/__tests__/depth.test.d.ts +2 -0
- package/dist/__tests__/depth.test.d.ts.map +1 -0
- package/dist/__tests__/depth.test.js +115 -0
- package/dist/__tests__/depth.test.js.map +1 -0
- package/dist/__tests__/dynamic-options.test.d.ts +2 -0
- package/dist/__tests__/dynamic-options.test.d.ts.map +1 -0
- package/dist/__tests__/dynamic-options.test.js +168 -0
- package/dist/__tests__/dynamic-options.test.js.map +1 -0
- package/dist/__tests__/email.service.test.d.ts +2 -0
- package/dist/__tests__/email.service.test.d.ts.map +1 -0
- package/dist/__tests__/email.service.test.js +52 -0
- package/dist/__tests__/email.service.test.js.map +1 -0
- package/dist/__tests__/field-inference.test-types.d.ts +161 -0
- package/dist/__tests__/field-inference.test-types.d.ts.map +1 -0
- package/dist/__tests__/field-inference.test-types.js +87 -0
- package/dist/__tests__/field-inference.test-types.js.map +1 -0
- package/dist/__tests__/fixtures/editorial-workflow.d.ts +14 -0
- package/dist/__tests__/fixtures/editorial-workflow.d.ts.map +1 -0
- package/dist/__tests__/fixtures/editorial-workflow.js +12 -0
- package/dist/__tests__/fixtures/editorial-workflow.js.map +1 -0
- package/dist/__tests__/hooks.test.d.ts +2 -0
- package/dist/__tests__/hooks.test.d.ts.map +1 -0
- package/dist/__tests__/hooks.test.js +320 -0
- package/dist/__tests__/hooks.test.js.map +1 -0
- package/dist/__tests__/mocks.d.ts +75 -0
- package/dist/__tests__/mocks.d.ts.map +1 -0
- package/dist/__tests__/mocks.js +170 -0
- package/dist/__tests__/mocks.js.map +1 -0
- package/dist/__tests__/observability.test.d.ts +2 -0
- package/dist/__tests__/observability.test.d.ts.map +1 -0
- package/dist/__tests__/observability.test.js +233 -0
- package/dist/__tests__/observability.test.js.map +1 -0
- package/dist/__tests__/openapi.test.d.ts +2 -0
- package/dist/__tests__/openapi.test.d.ts.map +1 -0
- package/dist/__tests__/openapi.test.js +105 -0
- package/dist/__tests__/openapi.test.js.map +1 -0
- package/dist/__tests__/parse-sort.test.d.ts +2 -0
- package/dist/__tests__/parse-sort.test.d.ts.map +1 -0
- package/dist/__tests__/parse-sort.test.js +24 -0
- package/dist/__tests__/parse-sort.test.js.map +1 -0
- package/dist/__tests__/preferences.test.d.ts +2 -0
- package/dist/__tests__/preferences.test.d.ts.map +1 -0
- package/dist/__tests__/preferences.test.js +168 -0
- package/dist/__tests__/preferences.test.js.map +1 -0
- package/dist/__tests__/router.test.d.ts +2 -0
- package/dist/__tests__/router.test.d.ts.map +1 -0
- package/dist/__tests__/router.test.js +70 -0
- package/dist/__tests__/router.test.js.map +1 -0
- package/dist/__tests__/search.test.d.ts +2 -0
- package/dist/__tests__/search.test.d.ts.map +1 -0
- package/dist/__tests__/search.test.js +174 -0
- package/dist/__tests__/search.test.js.map +1 -0
- package/dist/__tests__/upload-validation.test.d.ts +2 -0
- package/dist/__tests__/upload-validation.test.d.ts.map +1 -0
- package/dist/__tests__/upload-validation.test.js +41 -0
- package/dist/__tests__/upload-validation.test.js.map +1 -0
- package/dist/__tests__/where.test.d.ts +2 -0
- package/dist/__tests__/where.test.d.ts.map +1 -0
- package/dist/__tests__/where.test.js +105 -0
- package/dist/__tests__/where.test.js.map +1 -0
- package/dist/__tests__/workflow.test.d.ts +2 -0
- package/dist/__tests__/workflow.test.d.ts.map +1 -0
- package/dist/__tests__/workflow.test.js +684 -0
- package/dist/__tests__/workflow.test.js.map +1 -0
- package/dist/app-config-C9VJ6rTv.d.cts +2092 -0
- package/dist/app-config-C9VJ6rTv.d.ts +2092 -0
- package/dist/app-config-CYV70eoF.d.cts +2100 -0
- package/dist/app-config-CYV70eoF.d.ts +2100 -0
- package/dist/app-config-ChsrBB7p.d.cts +2100 -0
- package/dist/app-config-ChsrBB7p.d.ts +2100 -0
- package/dist/app.d.ts +35 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +164 -0
- package/dist/app.js.map +1 -0
- package/dist/auth/access.d.ts +5 -0
- package/dist/auth/access.d.ts.map +1 -0
- package/dist/auth/access.js +59 -0
- package/dist/auth/access.js.map +1 -0
- package/dist/auth/jexl.d.ts +13 -0
- package/dist/auth/jexl.d.ts.map +1 -0
- package/dist/auth/jexl.js +30 -0
- package/dist/auth/jexl.js.map +1 -0
- package/dist/auth/lockout.d.ts +11 -0
- package/dist/auth/lockout.d.ts.map +1 -0
- package/dist/auth/lockout.js +37 -0
- package/dist/auth/lockout.js.map +1 -0
- package/dist/auth/password.d.ts +10 -0
- package/dist/auth/password.d.ts.map +1 -0
- package/dist/auth/password.js +28 -0
- package/dist/auth/password.js.map +1 -0
- package/dist/auth/sessions.d.ts +39 -0
- package/dist/auth/sessions.d.ts.map +1 -0
- package/dist/auth/sessions.js +126 -0
- package/dist/auth/sessions.js.map +1 -0
- package/dist/auth/token.d.ts +23 -0
- package/dist/auth/token.d.ts.map +1 -0
- package/dist/auth/token.js +40 -0
- package/dist/auth/token.js.map +1 -0
- package/dist/chunk-23NM4LDU.js +2883 -0
- package/dist/chunk-2TKDCCIR.js +2622 -0
- package/dist/chunk-3SFITPX4.js +2628 -0
- package/dist/chunk-CQVTQ67D.js +2632 -0
- package/dist/chunk-ELHRRPKX.js +2863 -0
- package/dist/chunk-HRLSFTLR.js +3061 -0
- package/dist/chunk-QTIAQBNH.js +3097 -0
- package/dist/chunk-T2DGC4MD.js +3008 -0
- package/dist/chunk-TLU77TLE.js +3203 -0
- package/dist/chunk-YEBCT77K.js +3269 -0
- package/dist/chunk-YXEKNN5X.js +3085 -0
- package/dist/controllers/admin-auth.controller.d.ts +71 -0
- package/dist/controllers/admin-auth.controller.d.ts.map +1 -0
- package/dist/controllers/admin-auth.controller.js +450 -0
- package/dist/controllers/admin-auth.controller.js.map +1 -0
- package/dist/controllers/audit.controller.d.ts +42 -0
- package/dist/controllers/audit.controller.d.ts.map +1 -0
- package/dist/controllers/audit.controller.js +149 -0
- package/dist/controllers/audit.controller.js.map +1 -0
- package/dist/controllers/auth.controller.d.ts +143 -0
- package/dist/controllers/auth.controller.d.ts.map +1 -0
- package/dist/controllers/auth.controller.js +572 -0
- package/dist/controllers/auth.controller.js.map +1 -0
- package/dist/controllers/collection.controller.d.ts +170 -0
- package/dist/controllers/collection.controller.d.ts.map +1 -0
- package/dist/controllers/collection.controller.js +1033 -0
- package/dist/controllers/collection.controller.js.map +1 -0
- package/dist/controllers/global.controller.d.ts +20 -0
- package/dist/controllers/global.controller.d.ts.map +1 -0
- package/dist/controllers/global.controller.js +182 -0
- package/dist/controllers/global.controller.js.map +1 -0
- package/dist/controllers/media.controller.d.ts +39 -0
- package/dist/controllers/media.controller.d.ts.map +1 -0
- package/dist/controllers/media.controller.js +178 -0
- package/dist/controllers/media.controller.js.map +1 -0
- package/dist/controllers/preview.controller.d.ts +37 -0
- package/dist/controllers/preview.controller.d.ts.map +1 -0
- package/dist/controllers/preview.controller.js +48 -0
- package/dist/controllers/preview.controller.js.map +1 -0
- package/dist/index.cjs +707 -27
- package/dist/index.d.cts +77 -5
- package/dist/index.d.ts +77 -5
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -1
- package/dist/index.js.map +1 -0
- package/dist/middleware/auth.d.ts +19 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +157 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/middleware/rate-limit.d.ts +9 -0
- package/dist/middleware/rate-limit.d.ts.map +1 -0
- package/dist/middleware/rate-limit.js +75 -0
- package/dist/middleware/rate-limit.js.map +1 -0
- package/dist/network.d.ts +6 -0
- package/dist/network.d.ts.map +1 -0
- package/dist/network.js +70 -0
- package/dist/network.js.map +1 -0
- package/dist/observability.d.ts +113 -0
- package/dist/observability.d.ts.map +1 -0
- package/dist/observability.js +497 -0
- package/dist/observability.js.map +1 -0
- package/dist/router.d.ts +8 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +704 -0
- package/dist/router.js.map +1 -0
- package/dist/server.cjs +861 -54
- package/dist/server.d.cts +9 -1
- package/dist/server.d.ts +9 -1
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +189 -26
- package/dist/server.js.map +1 -0
- package/dist/services/audit.service.d.ts +23 -0
- package/dist/services/audit.service.d.ts.map +1 -0
- package/dist/services/audit.service.js +39 -0
- package/dist/services/audit.service.js.map +1 -0
- package/dist/services/defaults.service.d.ts +8 -0
- package/dist/services/defaults.service.d.ts.map +1 -0
- package/dist/services/defaults.service.js +55 -0
- package/dist/services/defaults.service.js.map +1 -0
- package/dist/services/email-template.d.ts +46 -0
- package/dist/services/email-template.d.ts.map +1 -0
- package/dist/services/email-template.js +88 -0
- package/dist/services/email-template.js.map +1 -0
- package/dist/services/email.service.d.ts +34 -0
- package/dist/services/email.service.d.ts.map +1 -0
- package/dist/services/email.service.js +129 -0
- package/dist/services/email.service.js.map +1 -0
- package/dist/services/media.service.d.ts +20 -0
- package/dist/services/media.service.d.ts.map +1 -0
- package/dist/services/media.service.js +49 -0
- package/dist/services/media.service.js.map +1 -0
- package/dist/services/population.service.d.ts +20 -0
- package/dist/services/population.service.d.ts.map +1 -0
- package/dist/services/population.service.js +224 -0
- package/dist/services/population.service.js.map +1 -0
- package/dist/types/access.d.ts +48 -0
- package/dist/types/access.d.ts.map +1 -0
- package/dist/types/access.js +2 -0
- package/dist/types/access.js.map +1 -0
- package/dist/types/adapters.d.ts +152 -0
- package/dist/types/adapters.d.ts.map +1 -0
- package/dist/types/adapters.js +2 -0
- package/dist/types/adapters.js.map +1 -0
- package/dist/types/admin-auth.d.ts +132 -0
- package/dist/types/admin-auth.d.ts.map +1 -0
- package/dist/types/admin-auth.js +2 -0
- package/dist/types/admin-auth.js.map +1 -0
- package/dist/types/admin.d.ts +86 -0
- package/dist/types/admin.d.ts.map +1 -0
- package/dist/types/admin.js +2 -0
- package/dist/types/admin.js.map +1 -0
- package/dist/types/app-config.d.ts +279 -0
- package/dist/types/app-config.d.ts.map +1 -0
- package/dist/types/app-config.js +2 -0
- package/dist/types/app-config.js.map +1 -0
- package/dist/types/documents.d.ts +65 -0
- package/dist/types/documents.d.ts.map +1 -0
- package/dist/types/documents.js +2 -0
- package/dist/types/documents.js.map +1 -0
- package/dist/types/hooks.d.ts +122 -0
- package/dist/types/hooks.d.ts.map +1 -0
- package/dist/types/hooks.js +2 -0
- package/dist/types/hooks.js.map +1 -0
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +13 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/request.d.ts +42 -0
- package/dist/types/request.d.ts.map +1 -0
- package/dist/types/request.js +2 -0
- package/dist/types/request.js.map +1 -0
- package/dist/types/schema-config.d.ts +443 -0
- package/dist/types/schema-config.d.ts.map +1 -0
- package/dist/types/schema-config.js +2 -0
- package/dist/types/schema-config.js.map +1 -0
- package/dist/types/schema-core.d.ts +628 -0
- package/dist/types/schema-core.d.ts.map +1 -0
- package/dist/types/schema-core.js +2 -0
- package/dist/types/schema-core.js.map +1 -0
- package/dist/types/schema-inference.d.ts +73 -0
- package/dist/types/schema-inference.d.ts.map +1 -0
- package/dist/types/schema-inference.js +2 -0
- package/dist/types/schema-inference.js.map +1 -0
- package/dist/types/workflows.d.ts +121 -0
- package/dist/types/workflows.d.ts.map +1 -0
- package/dist/types/workflows.js +7 -0
- package/dist/types/workflows.js.map +1 -0
- package/dist/utils/access-control.d.ts +35 -0
- package/dist/utils/access-control.d.ts.map +1 -0
- package/dist/utils/access-control.js +161 -0
- package/dist/utils/access-control.js.map +1 -0
- package/dist/utils/admin-auth.d.ts +5 -0
- package/dist/utils/admin-auth.d.ts.map +1 -0
- package/dist/utils/admin-auth.js +39 -0
- package/dist/utils/admin-auth.js.map +1 -0
- package/dist/utils/block-references.d.ts +10 -0
- package/dist/utils/block-references.d.ts.map +1 -0
- package/dist/utils/block-references.js +100 -0
- package/dist/utils/block-references.js.map +1 -0
- package/dist/utils/collection-search.d.ts +11 -0
- package/dist/utils/collection-search.d.ts.map +1 -0
- package/dist/utils/collection-search.js +204 -0
- package/dist/utils/collection-search.js.map +1 -0
- package/dist/utils/config.d.ts +8 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +336 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/hooks.d.ts +41 -0
- package/dist/utils/hooks.d.ts.map +1 -0
- package/dist/utils/hooks.js +177 -0
- package/dist/utils/hooks.js.map +1 -0
- package/dist/utils/openapi.d.ts +6 -0
- package/dist/utils/openapi.d.ts.map +1 -0
- package/dist/utils/openapi.js +981 -0
- package/dist/utils/openapi.js.map +1 -0
- package/dist/utils/parse-sort.d.ts +43 -0
- package/dist/utils/parse-sort.d.ts.map +1 -0
- package/dist/utils/parse-sort.js +70 -0
- package/dist/utils/parse-sort.js.map +1 -0
- package/dist/utils/parse-where.d.ts +69 -0
- package/dist/utils/parse-where.d.ts.map +1 -0
- package/dist/utils/parse-where.js +202 -0
- package/dist/utils/parse-where.js.map +1 -0
- package/dist/utils/readonly-db.d.ts +9 -0
- package/dist/utils/readonly-db.d.ts.map +1 -0
- package/dist/utils/readonly-db.js +21 -0
- package/dist/utils/readonly-db.js.map +1 -0
- package/dist/utils/swagger.d.ts +11 -0
- package/dist/utils/swagger.d.ts.map +1 -0
- package/dist/utils/swagger.js +62 -0
- package/dist/utils/swagger.js.map +1 -0
- package/dist/utils/upload-validation.d.ts +23 -0
- package/dist/utils/upload-validation.d.ts.map +1 -0
- package/dist/utils/upload-validation.js +46 -0
- package/dist/utils/upload-validation.js.map +1 -0
- package/dist/utils/where-sanitizer.d.ts +10 -0
- package/dist/utils/where-sanitizer.d.ts.map +1 -0
- package/dist/utils/where-sanitizer.js +67 -0
- package/dist/utils/where-sanitizer.js.map +1 -0
- package/dist/workflows.d.ts +86 -0
- package/dist/workflows.d.ts.map +1 -0
- package/dist/workflows.js +405 -0
- package/dist/workflows.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { Block, Field } from "./schema-core.js";
|
|
2
|
+
export type Prettify<T> = {
|
|
3
|
+
[K in keyof T]: T[K];
|
|
4
|
+
};
|
|
5
|
+
type FieldValueType<F extends Field> = F["type"] extends "text" | "textarea" | "email" | "url" | "icon" | "date" | "datetime" | "time" | "select" | "radio" ? string : F["type"] extends "number" ? number : F["type"] extends "boolean" ? boolean : F["type"] extends "multiSelect" ? string[] : F["type"] extends "relationship" ? F extends {
|
|
6
|
+
hasMany: true;
|
|
7
|
+
} ? string[] : string : F["type"] extends "image" ? F extends {
|
|
8
|
+
hasMany: true;
|
|
9
|
+
} ? string[] : string : F["type"] extends "richText" | "json" ? Record<string, unknown> : F["type"] extends "object" ? F extends {
|
|
10
|
+
fields: infer SF extends readonly Field[];
|
|
11
|
+
} ? Prettify<InferDocShape<SF>> : Record<string, unknown> : F["type"] extends "array" ? F extends {
|
|
12
|
+
fields: infer SF extends readonly Field[];
|
|
13
|
+
} ? Array<Prettify<InferDocShape<SF>>> : unknown[] : F["type"] extends "blocks" ? F extends {
|
|
14
|
+
blocks: infer B extends readonly Block[];
|
|
15
|
+
} ? Array<InferBlocksUnion<B>> : Array<{
|
|
16
|
+
blockType: string;
|
|
17
|
+
} & Record<string, unknown>> : unknown;
|
|
18
|
+
type InferBlocksUnion<Blocks extends readonly Block[]> = Blocks extends readonly [
|
|
19
|
+
infer B extends Block,
|
|
20
|
+
...infer Rest extends readonly Block[]
|
|
21
|
+
] ? B["fields"] extends readonly Field[] ? ({
|
|
22
|
+
blockType: B["slug"];
|
|
23
|
+
} & Prettify<InferDocShape<B["fields"]>>) | InferBlocksUnion<Rest> : ({
|
|
24
|
+
blockType: B["slug"];
|
|
25
|
+
} & Record<string, unknown>) | InferBlocksUnion<Rest> : never;
|
|
26
|
+
type InferFieldEntry<F extends Field> = F extends {
|
|
27
|
+
type: "row";
|
|
28
|
+
fields: infer SF extends readonly Field[];
|
|
29
|
+
} ? InferDocShape<SF> : F extends {
|
|
30
|
+
type: "join";
|
|
31
|
+
} ? Record<never, never> : F extends {
|
|
32
|
+
name: infer N extends string;
|
|
33
|
+
required: true;
|
|
34
|
+
} ? {
|
|
35
|
+
[K in N]: FieldValueType<F>;
|
|
36
|
+
} : F extends {
|
|
37
|
+
name: infer N extends string;
|
|
38
|
+
} ? {
|
|
39
|
+
[K in N]?: FieldValueType<F>;
|
|
40
|
+
} : Record<never, never>;
|
|
41
|
+
export type InferDocShape<Fields extends readonly Field[]> = Fields extends readonly [] ? Record<never, never> : Fields extends readonly [infer Head extends Field, ...infer Tail extends readonly Field[]] ? InferFieldEntry<Head> & InferDocShape<Tail> : Record<string, unknown>;
|
|
42
|
+
export type SystemDocFields = {
|
|
43
|
+
createdAt?: string;
|
|
44
|
+
updatedAt?: string;
|
|
45
|
+
createdBy?: string;
|
|
46
|
+
updatedBy?: string;
|
|
47
|
+
};
|
|
48
|
+
export type AuthDocFields = {
|
|
49
|
+
email: string;
|
|
50
|
+
password?: string;
|
|
51
|
+
roles?: string[];
|
|
52
|
+
};
|
|
53
|
+
export type UploadDocFields = {
|
|
54
|
+
filename: string;
|
|
55
|
+
filesize?: number;
|
|
56
|
+
mimeType: string;
|
|
57
|
+
url: string;
|
|
58
|
+
width?: number;
|
|
59
|
+
height?: number;
|
|
60
|
+
focalPoint?: {
|
|
61
|
+
x: number;
|
|
62
|
+
y: number;
|
|
63
|
+
};
|
|
64
|
+
blurhash?: string;
|
|
65
|
+
sizes?: Record<string, {
|
|
66
|
+
filename?: string;
|
|
67
|
+
url?: string;
|
|
68
|
+
width?: number;
|
|
69
|
+
height?: number;
|
|
70
|
+
}>;
|
|
71
|
+
};
|
|
72
|
+
export {};
|
|
73
|
+
//# sourceMappingURL=schema-inference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-inference.d.ts","sourceRoot":"","sources":["../../src/types/schema-inference.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-inference.js","sourceRoot":"","sources":["../../src/types/schema-inference.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import type { DatabaseAdapter } from "./adapters.js";
|
|
2
|
+
import type { AuthenticatedUser, HookRequestContext } from "./request.js";
|
|
3
|
+
export declare const LIFECYCLE_EVENT_NAMES: readonly ["revision.created", "workflow.transitioned", "entry.published", "entry.unpublished"];
|
|
4
|
+
export type LifecycleEventName = (typeof LIFECYCLE_EVENT_NAMES)[number];
|
|
5
|
+
export interface WorkflowState {
|
|
6
|
+
/** Stable machine-readable state key. */
|
|
7
|
+
name: string;
|
|
8
|
+
/** Label rendered in the Admin UI. */
|
|
9
|
+
label: string;
|
|
10
|
+
/** Marks the state whose revision is visible to public readers. */
|
|
11
|
+
published?: boolean;
|
|
12
|
+
/** Optional visual tone used by the Admin UI. */
|
|
13
|
+
color?: "neutral" | "warning" | "success" | "danger" | "info";
|
|
14
|
+
}
|
|
15
|
+
export interface WorkflowTransition {
|
|
16
|
+
/** Stable transition key used by the REST and SDK APIs. */
|
|
17
|
+
name: string;
|
|
18
|
+
label: string;
|
|
19
|
+
from: string | string[];
|
|
20
|
+
to: string;
|
|
21
|
+
/** Every listed capability is required. */
|
|
22
|
+
requiredCapabilities?: string[];
|
|
23
|
+
/** Require a non-empty comment when performing the transition. */
|
|
24
|
+
requireComment?: boolean;
|
|
25
|
+
/** Remove the public snapshot after this transition commits. */
|
|
26
|
+
unpublish?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface WorkflowRole {
|
|
29
|
+
/** Existing user role value, for example `editor` or `publisher`. */
|
|
30
|
+
role: string;
|
|
31
|
+
capabilities: string[];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Configuration for a collection's editorial workflow: the states a document
|
|
35
|
+
* can be in, the transitions between them, and the roles allowed to perform
|
|
36
|
+
* each. Attach it to a collection's `workflow`, or build one with
|
|
37
|
+
* `definePublishingWorkflow`.
|
|
38
|
+
*/
|
|
39
|
+
export interface WorkflowConfig<TDoc extends object = Record<string, unknown>> {
|
|
40
|
+
/** The state every new document starts in, e.g. `"draft"`. */
|
|
41
|
+
initialState: string;
|
|
42
|
+
/** State used for a new working revision created from published content. */
|
|
43
|
+
draftState?: string;
|
|
44
|
+
/** All states a document can occupy. Exactly one should be marked `published`. */
|
|
45
|
+
states: WorkflowState[];
|
|
46
|
+
/** The allowed moves between states, each with its own capability and comment rules. */
|
|
47
|
+
transitions: WorkflowTransition[];
|
|
48
|
+
/** Maps values in `user.roles` to workflow capabilities. */
|
|
49
|
+
roles?: WorkflowRole[];
|
|
50
|
+
/** Server-side hooks that run around every transition. */
|
|
51
|
+
hooks?: {
|
|
52
|
+
/** Runs before a transition commits — throw to validate or block the move. */
|
|
53
|
+
beforeTransition?: CollectionBeforeTransitionHook<TDoc>[];
|
|
54
|
+
/** Runs after a transition commits — trigger notifications or downstream work. */
|
|
55
|
+
afterTransition?: CollectionAfterTransitionHook<TDoc>[];
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export interface WorkflowMetadata {
|
|
59
|
+
/** The document's current workflow state, e.g. `"draft"` or `"published"`. */
|
|
60
|
+
state: string;
|
|
61
|
+
/** Revision counter, incremented on every committed transition. */
|
|
62
|
+
revision: number;
|
|
63
|
+
/** Revision number currently exposed as the public snapshot, once published. */
|
|
64
|
+
publishedRevision?: number;
|
|
65
|
+
/** ISO timestamp of the most recent publish. */
|
|
66
|
+
publishedAt?: string;
|
|
67
|
+
/** Id of the user who last published this document. */
|
|
68
|
+
publishedBy?: string;
|
|
69
|
+
/** Transitions currently allowed for the requesting user. Response-only. */
|
|
70
|
+
availableTransitions?: string[];
|
|
71
|
+
}
|
|
72
|
+
export interface WorkflowTransitionContext<TDoc extends object = Record<string, unknown>> {
|
|
73
|
+
/** The transition being performed. */
|
|
74
|
+
transition: WorkflowTransition;
|
|
75
|
+
/** State the document is moving out of. */
|
|
76
|
+
from: string;
|
|
77
|
+
/** State the document is moving into. */
|
|
78
|
+
to: string;
|
|
79
|
+
/** The document as it stands before the transition commits. */
|
|
80
|
+
doc: TDoc;
|
|
81
|
+
/** The user performing the transition, when the request is authenticated. */
|
|
82
|
+
user?: AuthenticatedUser;
|
|
83
|
+
/** Comment supplied with the transition; required when `requireComment` is set. */
|
|
84
|
+
comment?: string;
|
|
85
|
+
/** Request context for the transition. */
|
|
86
|
+
req: HookRequestContext;
|
|
87
|
+
/** Transaction-scoped database adapter for reads and writes inside the hook. */
|
|
88
|
+
db: DatabaseAdapter;
|
|
89
|
+
}
|
|
90
|
+
export type CollectionBeforeTransitionHook<TDoc extends object = Record<string, unknown>> = (args: WorkflowTransitionContext<TDoc>) => void | Promise<void>;
|
|
91
|
+
export type CollectionAfterTransitionHook<TDoc extends object = Record<string, unknown>> = (args: WorkflowTransitionContext<TDoc> & {
|
|
92
|
+
event: LifecycleEvent;
|
|
93
|
+
}) => void | Promise<void>;
|
|
94
|
+
export interface LifecycleEvent<TPayload = Record<string, unknown>> {
|
|
95
|
+
/** Unique id for this event. */
|
|
96
|
+
id: string;
|
|
97
|
+
/** The lifecycle event name, e.g. `"workflow.transitioned"` or `"entry.published"`. */
|
|
98
|
+
name: LifecycleEventName;
|
|
99
|
+
/** Slug of the collection the event is about. */
|
|
100
|
+
collection: string;
|
|
101
|
+
/** Id of the document the event is about. */
|
|
102
|
+
documentId: string;
|
|
103
|
+
/** ISO timestamp of when the event occurred. */
|
|
104
|
+
occurredAt: string;
|
|
105
|
+
/** Id of the user who triggered the event, when known. */
|
|
106
|
+
actorId?: string;
|
|
107
|
+
/** Event-specific data, such as the transition name and affected revision. */
|
|
108
|
+
payload: TPayload;
|
|
109
|
+
/** Number of delivery attempts made so far. */
|
|
110
|
+
attempts: number;
|
|
111
|
+
/** Current delivery status as the dispatcher works through the queue. */
|
|
112
|
+
status: "pending" | "processing" | "delivered" | "failed";
|
|
113
|
+
/** ISO timestamp of the next delivery retry, while pending. */
|
|
114
|
+
nextAttemptAt?: string;
|
|
115
|
+
/** ISO timestamp of successful delivery. */
|
|
116
|
+
deliveredAt?: string;
|
|
117
|
+
/** Message from the most recent failed delivery attempt. */
|
|
118
|
+
lastError?: string;
|
|
119
|
+
}
|
|
120
|
+
export type LifecycleEventHandler = (event: LifecycleEvent) => void | Promise<void>;
|
|
121
|
+
//# sourceMappingURL=workflows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/types/workflows.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/types/workflows.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,kBAAkB;IAClB,uBAAuB;IACvB,iBAAiB;IACjB,mBAAmB;CACX,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { HookRequestContext, Field, DyrectedConfig, AuthenticatedUser } from "../types/index.js";
|
|
2
|
+
import type { AccessFunctionArgs, AccessRule } from "../types/access.js";
|
|
3
|
+
type RequestLike = {
|
|
4
|
+
query: () => Record<string, string>;
|
|
5
|
+
header: () => Record<string, string>;
|
|
6
|
+
raw?: Request;
|
|
7
|
+
};
|
|
8
|
+
type AccessArgs<TDoc extends object = Record<string, unknown>> = AccessFunctionArgs<TDoc> & {
|
|
9
|
+
id?: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function toHookRequestContext(req: RequestLike): HookRequestContext;
|
|
12
|
+
export declare function resolveBooleanAccess<TDoc extends object = Record<string, unknown>>(config: DyrectedConfig, access: AccessRule<TDoc> | undefined | null, args: AccessArgs<TDoc>): Promise<boolean>;
|
|
13
|
+
export declare function matchesAccessConstraint(config: DyrectedConfig, collection: string, id: string, constraint: Record<string, unknown>): Promise<boolean>;
|
|
14
|
+
export declare function resolveCollectionAccess<TDoc extends object = Record<string, unknown>>(config: DyrectedConfig, collection: string, action: "read" | "create" | "update" | "delete", access: AccessRule<TDoc> | undefined | null, args: AccessArgs<TDoc> & {
|
|
15
|
+
id?: string;
|
|
16
|
+
}): Promise<{
|
|
17
|
+
allowed: boolean;
|
|
18
|
+
constraint?: Record<string, unknown>;
|
|
19
|
+
}>;
|
|
20
|
+
type FieldAccessContext = {
|
|
21
|
+
config: DyrectedConfig;
|
|
22
|
+
fields: Field[];
|
|
23
|
+
user: AuthenticatedUser | undefined;
|
|
24
|
+
req: HookRequestContext;
|
|
25
|
+
doc?: Record<string, unknown>;
|
|
26
|
+
data?: Record<string, unknown>;
|
|
27
|
+
id?: string;
|
|
28
|
+
/** Which write is being checked. `create` uses the field's `create` rule (falling back to `update`); anything else uses `update`. Defaults to `update`. */
|
|
29
|
+
operation?: "create" | "update";
|
|
30
|
+
};
|
|
31
|
+
export declare function applyFieldReadAccess(context: FieldAccessContext, doc: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
32
|
+
export declare function applyFieldWriteAccess(context: FieldAccessContext, data: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
33
|
+
export declare function mergeWhereConstraint(where: Record<string, unknown> | undefined, constraint: Record<string, unknown>): Record<string, unknown>;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=access-control.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-control.d.ts","sourceRoot":"","sources":["../../src/utils/access-control.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { resolveAccess } from "../auth/access.js";
|
|
2
|
+
export function toHookRequestContext(req) {
|
|
3
|
+
return {
|
|
4
|
+
query: req.query(),
|
|
5
|
+
headers: req.header(),
|
|
6
|
+
raw: req.raw,
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
export async function resolveBooleanAccess(config, access, args) {
|
|
10
|
+
const result = await resolveAccess(config, access, args);
|
|
11
|
+
if (result === undefined)
|
|
12
|
+
return true;
|
|
13
|
+
return typeof result === "boolean" ? result : false;
|
|
14
|
+
}
|
|
15
|
+
export async function matchesAccessConstraint(config, collection, id, constraint) {
|
|
16
|
+
if (!config.db)
|
|
17
|
+
return false;
|
|
18
|
+
const match = await config.db.find({
|
|
19
|
+
collection,
|
|
20
|
+
where: { AND: [{ id: { equals: id } }, constraint] },
|
|
21
|
+
limit: 1,
|
|
22
|
+
});
|
|
23
|
+
return match.total > 0;
|
|
24
|
+
}
|
|
25
|
+
export async function resolveCollectionAccess(config, collection, action, access, args) {
|
|
26
|
+
const result = await resolveAccess(config, access, args);
|
|
27
|
+
if (result === undefined)
|
|
28
|
+
return { allowed: true };
|
|
29
|
+
if (typeof result === "boolean")
|
|
30
|
+
return { allowed: result };
|
|
31
|
+
if (action === "read" && !args.id) {
|
|
32
|
+
return { allowed: true, constraint: result };
|
|
33
|
+
}
|
|
34
|
+
if (!args.id) {
|
|
35
|
+
return { allowed: false };
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
allowed: await matchesAccessConstraint(config, collection, args.id, result),
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function resolveFieldAccessId(context) {
|
|
42
|
+
const candidate = context.id ?? context.doc?.id ?? context.data?.id;
|
|
43
|
+
return typeof candidate === "string" && candidate.length > 0
|
|
44
|
+
? candidate
|
|
45
|
+
: undefined;
|
|
46
|
+
}
|
|
47
|
+
export async function applyFieldReadAccess(context, doc) {
|
|
48
|
+
if (!doc || typeof doc !== "object")
|
|
49
|
+
return doc;
|
|
50
|
+
const result = { ...doc };
|
|
51
|
+
for (const field of context.fields) {
|
|
52
|
+
if (field.type === "row" && field.fields) {
|
|
53
|
+
Object.assign(result, await applyFieldReadAccess({ ...context, fields: field.fields }, result));
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
if (!field.name)
|
|
57
|
+
continue;
|
|
58
|
+
const value = result[field.name];
|
|
59
|
+
const canRead = await resolveBooleanAccess(context.config, field.access?.read, {
|
|
60
|
+
user: context.user,
|
|
61
|
+
req: context.req,
|
|
62
|
+
doc: context.doc,
|
|
63
|
+
data: context.data,
|
|
64
|
+
id: resolveFieldAccessId(context),
|
|
65
|
+
});
|
|
66
|
+
if (!canRead) {
|
|
67
|
+
delete result[field.name];
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
if (value === undefined || value === null)
|
|
71
|
+
continue;
|
|
72
|
+
if (field.type === "object" &&
|
|
73
|
+
field.fields &&
|
|
74
|
+
typeof value === "object" &&
|
|
75
|
+
!Array.isArray(value)) {
|
|
76
|
+
result[field.name] = await applyFieldReadAccess({ ...context, fields: field.fields }, value);
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
if (field.type === "array" && field.fields && Array.isArray(value)) {
|
|
80
|
+
const childFields = field.fields;
|
|
81
|
+
result[field.name] = await Promise.all(value.map((item) => typeof item === "object" && item !== null
|
|
82
|
+
? applyFieldReadAccess({ ...context, fields: childFields }, item)
|
|
83
|
+
: item));
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
if (field.type === "blocks" && field.blocks && Array.isArray(value)) {
|
|
87
|
+
result[field.name] = await Promise.all(value.map(async (item) => {
|
|
88
|
+
if (typeof item !== "object" || item === null)
|
|
89
|
+
return item;
|
|
90
|
+
const typedItem = item;
|
|
91
|
+
const block = field.blocks?.find((candidate) => candidate.slug === typedItem.blockType);
|
|
92
|
+
if (!block || !block.fields)
|
|
93
|
+
return item;
|
|
94
|
+
return applyFieldReadAccess({ ...context, fields: block.fields }, typedItem);
|
|
95
|
+
}));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return result;
|
|
99
|
+
}
|
|
100
|
+
export async function applyFieldWriteAccess(context, data) {
|
|
101
|
+
if (!data || typeof data !== "object")
|
|
102
|
+
return data;
|
|
103
|
+
const result = { ...data };
|
|
104
|
+
for (const field of context.fields) {
|
|
105
|
+
if (field.type === "row" && field.fields) {
|
|
106
|
+
Object.assign(result, await applyFieldWriteAccess({ ...context, fields: field.fields }, result));
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
if (!field.name || !(field.name in result))
|
|
110
|
+
continue;
|
|
111
|
+
// On create, the field's `create` rule governs the write, falling back to
|
|
112
|
+
// `update` when it is not set. On update (the default), `update` governs.
|
|
113
|
+
const writeRule = context.operation === "create"
|
|
114
|
+
? (field.access?.create ?? field.access?.update)
|
|
115
|
+
: field.access?.update;
|
|
116
|
+
const canWrite = await resolveBooleanAccess(context.config, writeRule, {
|
|
117
|
+
user: context.user,
|
|
118
|
+
req: context.req,
|
|
119
|
+
doc: context.doc,
|
|
120
|
+
data: context.data,
|
|
121
|
+
id: resolveFieldAccessId(context),
|
|
122
|
+
});
|
|
123
|
+
if (!canWrite) {
|
|
124
|
+
delete result[field.name];
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
const value = result[field.name];
|
|
128
|
+
if (value === undefined || value === null)
|
|
129
|
+
continue;
|
|
130
|
+
if (field.type === "object" &&
|
|
131
|
+
field.fields &&
|
|
132
|
+
typeof value === "object" &&
|
|
133
|
+
!Array.isArray(value)) {
|
|
134
|
+
result[field.name] = await applyFieldWriteAccess({ ...context, fields: field.fields }, value);
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
if (field.type === "array" && field.fields && Array.isArray(value)) {
|
|
138
|
+
const childFields = field.fields;
|
|
139
|
+
result[field.name] = await Promise.all(value.map((item) => typeof item === "object" && item !== null
|
|
140
|
+
? applyFieldWriteAccess({ ...context, fields: childFields }, item)
|
|
141
|
+
: item));
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
if (field.type === "blocks" && field.blocks && Array.isArray(value)) {
|
|
145
|
+
result[field.name] = await Promise.all(value.map(async (item) => {
|
|
146
|
+
if (typeof item !== "object" || item === null)
|
|
147
|
+
return item;
|
|
148
|
+
const typedItem = item;
|
|
149
|
+
const block = field.blocks?.find((candidate) => candidate.slug === typedItem.blockType);
|
|
150
|
+
if (!block || !block.fields)
|
|
151
|
+
return item;
|
|
152
|
+
return applyFieldWriteAccess({ ...context, fields: block.fields }, typedItem);
|
|
153
|
+
}));
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return result;
|
|
157
|
+
}
|
|
158
|
+
export function mergeWhereConstraint(where, constraint) {
|
|
159
|
+
return where ? { AND: [where, constraint] } : constraint;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=access-control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access-control.js","sourceRoot":"","sources":["../../src/utils/access-control.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { AdminAuthConfig, CollectionConfig, DyrectedConfig, PublicAdminAuthConfig } from "../types/index.js";
|
|
2
|
+
export declare function getAdminAuthCollection(config: Pick<DyrectedConfig, "collections" | "adminAuth">): CollectionConfig | null;
|
|
3
|
+
export declare function resolveAdminAuthCollection(collections: CollectionConfig[], collectionSlug?: string): CollectionConfig | undefined;
|
|
4
|
+
export declare function getPublicAdminAuthConfig(adminAuth?: AdminAuthConfig, collections?: CollectionConfig[]): PublicAdminAuthConfig;
|
|
5
|
+
//# sourceMappingURL=admin-auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-auth.d.ts","sourceRoot":"","sources":["../../src/utils/admin-auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EAEtB,MAAM,mBAAmB,CAAC;AAE3B,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,aAAa,GAAG,WAAW,CAAC,GACxD,gBAAgB,GAAG,IAAI,CAGzB;AAED,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,gBAAgB,EAAE,EAC/B,cAAc,CAAC,EAAE,MAAM,GACtB,gBAAgB,GAAG,SAAS,CAS9B;AAED,wBAAgB,wBAAwB,CACtC,SAAS,CAAC,EAAE,eAAe,EAC3B,WAAW,CAAC,EAAE,gBAAgB,EAAE,GAC/B,qBAAqB,CAiBvB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export function getAdminAuthCollection(config) {
|
|
2
|
+
const adminCollection = resolveAdminAuthCollection(config.collections, config.adminAuth?.collectionSlug);
|
|
3
|
+
return adminCollection ?? null;
|
|
4
|
+
}
|
|
5
|
+
export function resolveAdminAuthCollection(collections, collectionSlug) {
|
|
6
|
+
const adminsCollection = collections.find((collection) => collection.slug === "__admins");
|
|
7
|
+
if (adminsCollection)
|
|
8
|
+
return adminsCollection;
|
|
9
|
+
if (collectionSlug) {
|
|
10
|
+
const requestedCollection = collections.find((collection) => collection.slug === collectionSlug);
|
|
11
|
+
if (requestedCollection)
|
|
12
|
+
return requestedCollection;
|
|
13
|
+
}
|
|
14
|
+
return collections.find((collection) => collection.auth);
|
|
15
|
+
}
|
|
16
|
+
export function getPublicAdminAuthConfig(adminAuth, collections) {
|
|
17
|
+
const providers = (adminAuth?.providers ?? []).map((provider) => ({
|
|
18
|
+
id: provider.id,
|
|
19
|
+
type: provider.type,
|
|
20
|
+
displayName: provider.displayName || humanizeProviderName(provider.id, provider.type),
|
|
21
|
+
autoRedirect: provider.autoRedirect,
|
|
22
|
+
}));
|
|
23
|
+
const resolvedCollectionSlug = collections
|
|
24
|
+
? resolveAdminAuthCollection(collections, adminAuth?.collectionSlug)?.slug
|
|
25
|
+
: adminAuth?.collectionSlug;
|
|
26
|
+
return {
|
|
27
|
+
mode: adminAuth?.mode ?? "local",
|
|
28
|
+
collectionSlug: resolvedCollectionSlug,
|
|
29
|
+
provisioningMode: adminAuth?.provisioningMode,
|
|
30
|
+
providers,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function humanizeProviderName(id, type) {
|
|
34
|
+
const cleaned = id.replace(/[-_]+/g, " ").trim();
|
|
35
|
+
if (!cleaned)
|
|
36
|
+
return type.toUpperCase();
|
|
37
|
+
return cleaned.replace(/\b\w/g, (char) => char.toUpperCase());
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=admin-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-auth.js","sourceRoot":"","sources":["../../src/utils/admin-auth.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,sBAAsB,CACpC,MAAyD;IAEzD,MAAM,eAAe,GAAG,0BAA0B,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACzG,OAAO,eAAe,IAAI,IAAI,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,WAA+B,EAC/B,cAAuB;IAEvB,MAAM,gBAAgB,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;IAC1F,IAAI,gBAAgB;QAAE,OAAO,gBAAgB,CAAC;IAC9C,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,mBAAmB,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;QACjG,IAAI,mBAAmB;YAAE,OAAO,mBAAmB,CAAC;IACtD,CAAC;IAED,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,SAA2B,EAC3B,WAAgC;IAEhC,MAAM,SAAS,GAA8B,CAAC,SAAS,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC3F,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,WAAW,EAAE,QAAQ,CAAC,WAAW,IAAI,oBAAoB,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC;QACrF,YAAY,EAAE,QAAQ,CAAC,YAAY;KACpC,CAAC,CAAC,CAAC;IACJ,MAAM,sBAAsB,GAAG,WAAW;QACxC,CAAC,CAAC,0BAA0B,CAAC,WAAW,EAAE,SAAS,EAAE,cAAc,CAAC,EAAE,IAAI;QAC1E,CAAC,CAAC,SAAS,EAAE,cAAc,CAAC;IAE9B,OAAO;QACL,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,OAAO;QAChC,cAAc,EAAE,sBAAsB;QACtC,gBAAgB,EAAE,SAAS,EAAE,gBAAgB;QAC7C,SAAS;KACV,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,EAAU,EAAE,IAAqC;IAC7E,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IACxC,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Block, CollectionConfig, DyrectedConfig, GlobalConfig } from "../types/index.js";
|
|
2
|
+
type SchemaFragment = {
|
|
3
|
+
blocks?: Block[];
|
|
4
|
+
collections?: CollectionConfig[];
|
|
5
|
+
globals?: GlobalConfig[];
|
|
6
|
+
};
|
|
7
|
+
export declare function normalizeSchemaFragment<T extends SchemaFragment>(fragment: T): T;
|
|
8
|
+
export declare function mergeDynamicConfig(baseConfig: DyrectedConfig, dynamic: Awaited<ReturnType<NonNullable<DyrectedConfig["onSchemaFetch"]>>>): DyrectedConfig;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=block-references.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-references.d.ts","sourceRoot":"","sources":["../../src/utils/block-references.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,gBAAgB,EAChB,cAAc,EAEd,YAAY,EACb,MAAM,mBAAmB,CAAC;AAE3B,KAAK,cAAc,GAAG;IACpB,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACjC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;CAC1B,CAAC;AAgGF,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,cAAc,EAC9D,QAAQ,EAAE,CAAC,GACV,CAAC,CAyBH;AAED,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,cAAc,EAC1B,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GACzE,cAAc,CAsBhB"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
function mergeUniqueBlocks(blocks) {
|
|
2
|
+
const seen = new Map();
|
|
3
|
+
for (const block of blocks) {
|
|
4
|
+
const existing = seen.get(block.slug);
|
|
5
|
+
if (existing && existing !== block) {
|
|
6
|
+
throw new Error(`Duplicate block slug "${block.slug}" found in the reusable block registry. Block slugs must be unique.`);
|
|
7
|
+
}
|
|
8
|
+
if (!existing)
|
|
9
|
+
seen.set(block.slug, block);
|
|
10
|
+
}
|
|
11
|
+
return Array.from(seen.values());
|
|
12
|
+
}
|
|
13
|
+
function buildRegistry(blocks) {
|
|
14
|
+
return new Map(blocks.map((block) => [block.slug, block]));
|
|
15
|
+
}
|
|
16
|
+
function resolveField(field, registry, blockCache) {
|
|
17
|
+
const next = { ...field };
|
|
18
|
+
if (next.fields) {
|
|
19
|
+
next.fields = next.fields.map((child) => resolveField(child, registry, blockCache));
|
|
20
|
+
}
|
|
21
|
+
if (next.type !== "blocks")
|
|
22
|
+
return next;
|
|
23
|
+
const hasInlineBlocks = Array.isArray(next.blocks) && next.blocks.length > 0;
|
|
24
|
+
const hasReferences = Array.isArray(next.blockReferences) && next.blockReferences.length > 0;
|
|
25
|
+
if (hasInlineBlocks && hasReferences) {
|
|
26
|
+
throw new Error(`Blocks field "${next.name ?? "(unnamed)"}" cannot define both "blocks" and "blockReferences". Use one or the other.`);
|
|
27
|
+
}
|
|
28
|
+
if (hasReferences) {
|
|
29
|
+
next.blocks = next.blockReferences.map((slug) => {
|
|
30
|
+
const block = registry.get(slug);
|
|
31
|
+
if (!block) {
|
|
32
|
+
throw new Error(`Unknown block reference "${slug}" on blocks field "${next.name ?? "(unnamed)"}". Add it to defineConfig({ blocks: [...] }).`);
|
|
33
|
+
}
|
|
34
|
+
return resolveBlock(block, registry, blockCache);
|
|
35
|
+
});
|
|
36
|
+
return next;
|
|
37
|
+
}
|
|
38
|
+
if (hasInlineBlocks) {
|
|
39
|
+
next.blocks = next.blocks.map((block) => resolveBlock(block, registry, blockCache));
|
|
40
|
+
}
|
|
41
|
+
return next;
|
|
42
|
+
}
|
|
43
|
+
function resolveBlock(block, registry, blockCache) {
|
|
44
|
+
const cached = blockCache.get(block);
|
|
45
|
+
if (cached)
|
|
46
|
+
return cached;
|
|
47
|
+
const resolved = {
|
|
48
|
+
...block,
|
|
49
|
+
fields: [],
|
|
50
|
+
};
|
|
51
|
+
blockCache.set(block, resolved);
|
|
52
|
+
resolved.fields = block.fields.map((field) => resolveField(field, registry, blockCache));
|
|
53
|
+
return resolved;
|
|
54
|
+
}
|
|
55
|
+
function resolveFields(fields, registry, blockCache) {
|
|
56
|
+
return fields.map((field) => resolveField(field, registry, blockCache));
|
|
57
|
+
}
|
|
58
|
+
export function normalizeSchemaFragment(fragment) {
|
|
59
|
+
const reusableBlocks = mergeUniqueBlocks(fragment.blocks ?? []);
|
|
60
|
+
const registry = buildRegistry(reusableBlocks);
|
|
61
|
+
const blockCache = new WeakMap();
|
|
62
|
+
const resolvedBlocks = reusableBlocks.map((block) => resolveBlock(block, registry, blockCache));
|
|
63
|
+
const resolvedCollections = (fragment.collections ?? []).map((collection) => ({
|
|
64
|
+
...collection,
|
|
65
|
+
fields: resolveFields(collection.fields ?? [], registry, blockCache),
|
|
66
|
+
}));
|
|
67
|
+
const resolvedGlobals = (fragment.globals ?? []).map((global) => ({
|
|
68
|
+
...global,
|
|
69
|
+
fields: resolveFields(global.fields ?? [], registry, blockCache),
|
|
70
|
+
}));
|
|
71
|
+
return {
|
|
72
|
+
...fragment,
|
|
73
|
+
...(fragment.blocks ? { blocks: resolvedBlocks } : {}),
|
|
74
|
+
...(fragment.collections ? { collections: resolvedCollections } : {}),
|
|
75
|
+
...(fragment.globals ? { globals: resolvedGlobals } : {}),
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
export function mergeDynamicConfig(baseConfig, dynamic) {
|
|
79
|
+
const normalizedDynamic = normalizeSchemaFragment({
|
|
80
|
+
...dynamic,
|
|
81
|
+
blocks: [...(baseConfig.blocks ?? []), ...(dynamic.blocks ?? [])],
|
|
82
|
+
});
|
|
83
|
+
return {
|
|
84
|
+
...baseConfig,
|
|
85
|
+
...(normalizedDynamic.blocks ? { blocks: normalizedDynamic.blocks } : {}),
|
|
86
|
+
...(dynamic.admin
|
|
87
|
+
? { admin: { ...baseConfig.admin, ...dynamic.admin } }
|
|
88
|
+
: {}),
|
|
89
|
+
...(dynamic.adminAuth
|
|
90
|
+
? { adminAuth: { ...baseConfig.adminAuth, ...dynamic.adminAuth } }
|
|
91
|
+
: {}),
|
|
92
|
+
collections: normalizedDynamic.collections
|
|
93
|
+
? [...baseConfig.collections, ...normalizedDynamic.collections]
|
|
94
|
+
: baseConfig.collections,
|
|
95
|
+
globals: normalizedDynamic.globals
|
|
96
|
+
? [...baseConfig.globals, ...normalizedDynamic.globals]
|
|
97
|
+
: baseConfig.globals,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=block-references.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-references.js","sourceRoot":"","sources":["../../src/utils/block-references.ts"],"names":[],"mappings":"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"}
|