@byline/core 0.9.3
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/LICENSE +373 -0
- package/README.md +17 -0
- package/dist/@types/admin-types.d.ts +275 -0
- package/dist/@types/admin-types.d.ts.map +1 -0
- package/dist/@types/admin-types.js +18 -0
- package/dist/@types/admin-types.js.map +1 -0
- package/dist/@types/collection-types.d.ts +816 -0
- package/dist/@types/collection-types.d.ts.map +1 -0
- package/dist/@types/collection-types.js +217 -0
- package/dist/@types/collection-types.js.map +1 -0
- package/dist/@types/db-types.d.ts +463 -0
- package/dist/@types/db-types.d.ts.map +1 -0
- package/dist/@types/db-types.js +2 -0
- package/dist/@types/db-types.js.map +1 -0
- package/dist/@types/field-data-types.d.ts +147 -0
- package/dist/@types/field-data-types.d.ts.map +1 -0
- package/dist/@types/field-data-types.js +38 -0
- package/dist/@types/field-data-types.js.map +1 -0
- package/dist/@types/field-types.d.ts +579 -0
- package/dist/@types/field-types.d.ts.map +1 -0
- package/dist/@types/field-types.js +32 -0
- package/dist/@types/field-types.js.map +1 -0
- package/dist/@types/index.d.ts +18 -0
- package/dist/@types/index.d.ts.map +1 -0
- package/dist/@types/index.js +18 -0
- package/dist/@types/index.js.map +1 -0
- package/dist/@types/populate-types.d.ts +54 -0
- package/dist/@types/populate-types.d.ts.map +1 -0
- package/dist/@types/populate-types.js +9 -0
- package/dist/@types/populate-types.js.map +1 -0
- package/dist/@types/query-predicate.d.ts +74 -0
- package/dist/@types/query-predicate.d.ts.map +1 -0
- package/dist/@types/query-predicate.js +9 -0
- package/dist/@types/query-predicate.js.map +1 -0
- package/dist/@types/site-config.d.ts +212 -0
- package/dist/@types/site-config.d.ts.map +1 -0
- package/dist/@types/site-config.js +9 -0
- package/dist/@types/site-config.js.map +1 -0
- package/dist/@types/storage-types.d.ts +86 -0
- package/dist/@types/storage-types.d.ts.map +1 -0
- package/dist/@types/storage-types.js +9 -0
- package/dist/@types/storage-types.js.map +1 -0
- package/dist/@types/store-types.d.ts +134 -0
- package/dist/@types/store-types.d.ts.map +1 -0
- package/dist/@types/store-types.js +24 -0
- package/dist/@types/store-types.js.map +1 -0
- package/dist/@types/type-utils.d.ts +17 -0
- package/dist/@types/type-utils.d.ts.map +1 -0
- package/dist/@types/type-utils.js +9 -0
- package/dist/@types/type-utils.js.map +1 -0
- package/dist/auth/apply-before-read.d.ts +36 -0
- package/dist/auth/apply-before-read.d.ts.map +1 -0
- package/dist/auth/apply-before-read.js +68 -0
- package/dist/auth/apply-before-read.js.map +1 -0
- package/dist/auth/apply-before-read.test.node.d.ts +9 -0
- package/dist/auth/apply-before-read.test.node.d.ts.map +1 -0
- package/dist/auth/apply-before-read.test.node.js +144 -0
- package/dist/auth/apply-before-read.test.node.js.map +1 -0
- package/dist/auth/assert-actor-can-perform.d.ts +39 -0
- package/dist/auth/assert-actor-can-perform.d.ts.map +1 -0
- package/dist/auth/assert-actor-can-perform.js +64 -0
- package/dist/auth/assert-actor-can-perform.js.map +1 -0
- package/dist/auth/assert-actor-can-perform.test.node.d.ts +9 -0
- package/dist/auth/assert-actor-can-perform.test.node.d.ts.map +1 -0
- package/dist/auth/assert-actor-can-perform.test.node.js +119 -0
- package/dist/auth/assert-actor-can-perform.test.node.js.map +1 -0
- package/dist/auth/index.d.ts +11 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +11 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/register-collection-abilities.d.ts +40 -0
- package/dist/auth/register-collection-abilities.d.ts.map +1 -0
- package/dist/auth/register-collection-abilities.js +87 -0
- package/dist/auth/register-collection-abilities.js.map +1 -0
- package/dist/auth/register-collection-abilities.test.node.d.ts +9 -0
- package/dist/auth/register-collection-abilities.test.node.d.ts.map +1 -0
- package/dist/auth/register-collection-abilities.test.node.js +124 -0
- package/dist/auth/register-collection-abilities.test.node.js.map +1 -0
- package/dist/config/config.d.ts +10 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +108 -0
- package/dist/config/config.js.map +1 -0
- package/dist/config/routes.d.ts +16 -0
- package/dist/config/routes.d.ts.map +1 -0
- package/dist/config/routes.js +26 -0
- package/dist/config/routes.js.map +1 -0
- package/dist/config/validate-admin-configs.d.ts +33 -0
- package/dist/config/validate-admin-configs.d.ts.map +1 -0
- package/dist/config/validate-admin-configs.js +250 -0
- package/dist/config/validate-admin-configs.js.map +1 -0
- package/dist/config/validate-admin-configs.test.node.d.ts +9 -0
- package/dist/config/validate-admin-configs.test.node.d.ts.map +1 -0
- package/dist/config/validate-admin-configs.test.node.js +224 -0
- package/dist/config/validate-admin-configs.test.node.js.map +1 -0
- package/dist/config/validate-collections.d.ts +33 -0
- package/dist/config/validate-collections.d.ts.map +1 -0
- package/dist/config/validate-collections.js +70 -0
- package/dist/config/validate-collections.js.map +1 -0
- package/dist/config/validate-collections.test.node.d.ts +9 -0
- package/dist/config/validate-collections.test.node.d.ts.map +1 -0
- package/dist/config/validate-collections.test.node.js +149 -0
- package/dist/config/validate-collections.test.node.js.map +1 -0
- package/dist/core.d.ts +89 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +99 -0
- package/dist/core.js.map +1 -0
- package/dist/defaults/default-values.d.ts +13 -0
- package/dist/defaults/default-values.d.ts.map +1 -0
- package/dist/defaults/default-values.js +60 -0
- package/dist/defaults/default-values.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/errors.d.ts +98 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +134 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/logger.d.ts +62 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +120 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/registry.d.ts +65 -0
- package/dist/lib/registry.d.ts.map +1 -0
- package/dist/lib/registry.js +133 -0
- package/dist/lib/registry.js.map +1 -0
- package/dist/logger/index.d.ts +3 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/index.js +3 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/patches/apply-patches.d.ts +21 -0
- package/dist/patches/apply-patches.d.ts.map +1 -0
- package/dist/patches/apply-patches.js +357 -0
- package/dist/patches/apply-patches.js.map +1 -0
- package/dist/patches/index.d.ts +3 -0
- package/dist/patches/index.d.ts.map +1 -0
- package/dist/patches/index.js +4 -0
- package/dist/patches/index.js.map +1 -0
- package/dist/patches/patch-types.d.ts +82 -0
- package/dist/patches/patch-types.d.ts.map +1 -0
- package/dist/patches/patch-types.js +3 -0
- package/dist/patches/patch-types.js.map +1 -0
- package/dist/patches/patch.test.node.d.ts +2 -0
- package/dist/patches/patch.test.node.d.ts.map +1 -0
- package/dist/patches/patch.test.node.js +193 -0
- package/dist/patches/patch.test.node.js.map +1 -0
- package/dist/query/parse-where.d.ts +100 -0
- package/dist/query/parse-where.d.ts.map +1 -0
- package/dist/query/parse-where.js +352 -0
- package/dist/query/parse-where.js.map +1 -0
- package/dist/query/parse-where.test.node.d.ts +9 -0
- package/dist/query/parse-where.test.node.d.ts.map +1 -0
- package/dist/query/parse-where.test.node.js +581 -0
- package/dist/query/parse-where.test.node.js.map +1 -0
- package/dist/schemas/zod/builder.d.ts +466 -0
- package/dist/schemas/zod/builder.d.ts.map +1 -0
- package/dist/schemas/zod/builder.js +276 -0
- package/dist/schemas/zod/builder.js.map +1 -0
- package/dist/schemas/zod/cache.d.ts +14 -0
- package/dist/schemas/zod/cache.d.ts.map +1 -0
- package/dist/schemas/zod/cache.js +40 -0
- package/dist/schemas/zod/cache.js.map +1 -0
- package/dist/schemas/zod/index.d.ts +4 -0
- package/dist/schemas/zod/index.d.ts.map +1 -0
- package/dist/schemas/zod/index.js +4 -0
- package/dist/schemas/zod/index.js.map +1 -0
- package/dist/schemas/zod/types.d.ts +13 -0
- package/dist/schemas/zod/types.d.ts.map +1 -0
- package/dist/schemas/zod/types.js +2 -0
- package/dist/schemas/zod/types.js.map +1 -0
- package/dist/services/collection-bootstrap.d.ts +46 -0
- package/dist/services/collection-bootstrap.d.ts.map +1 -0
- package/dist/services/collection-bootstrap.js +108 -0
- package/dist/services/collection-bootstrap.js.map +1 -0
- package/dist/services/collection-bootstrap.test.node.d.ts +9 -0
- package/dist/services/collection-bootstrap.test.node.d.ts.map +1 -0
- package/dist/services/collection-bootstrap.test.node.js +208 -0
- package/dist/services/collection-bootstrap.test.node.js.map +1 -0
- package/dist/services/document-lifecycle.d.ts +245 -0
- package/dist/services/document-lifecycle.d.ts.map +1 -0
- package/dist/services/document-lifecycle.js +481 -0
- package/dist/services/document-lifecycle.js.map +1 -0
- package/dist/services/document-lifecycle.test.node.d.ts +9 -0
- package/dist/services/document-lifecycle.test.node.d.ts.map +1 -0
- package/dist/services/document-lifecycle.test.node.js +781 -0
- package/dist/services/document-lifecycle.test.node.js.map +1 -0
- package/dist/services/document-read.d.ts +26 -0
- package/dist/services/document-read.d.ts.map +1 -0
- package/dist/services/document-read.js +60 -0
- package/dist/services/document-read.js.map +1 -0
- package/dist/services/field-upload.d.ts +100 -0
- package/dist/services/field-upload.d.ts.map +1 -0
- package/dist/services/field-upload.js +328 -0
- package/dist/services/field-upload.js.map +1 -0
- package/dist/services/field-upload.test.node.d.ts +9 -0
- package/dist/services/field-upload.test.node.d.ts.map +1 -0
- package/dist/services/field-upload.test.node.js +337 -0
- package/dist/services/field-upload.test.node.js.map +1 -0
- package/dist/services/index.d.ts +10 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +11 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/populate.d.ts +299 -0
- package/dist/services/populate.d.ts.map +1 -0
- package/dist/services/populate.js +484 -0
- package/dist/services/populate.js.map +1 -0
- package/dist/services/populate.test.node.d.ts +9 -0
- package/dist/services/populate.test.node.d.ts.map +1 -0
- package/dist/services/populate.test.node.js +910 -0
- package/dist/services/populate.test.node.js.map +1 -0
- package/dist/services/relation-projection.d.ts +52 -0
- package/dist/services/relation-projection.d.ts.map +1 -0
- package/dist/services/relation-projection.js +81 -0
- package/dist/services/relation-projection.js.map +1 -0
- package/dist/services/richtext-populate.d.ts +87 -0
- package/dist/services/richtext-populate.d.ts.map +1 -0
- package/dist/services/richtext-populate.js +189 -0
- package/dist/services/richtext-populate.js.map +1 -0
- package/dist/services/richtext-populate.test.node.d.ts +9 -0
- package/dist/services/richtext-populate.test.node.d.ts.map +1 -0
- package/dist/services/richtext-populate.test.node.js +197 -0
- package/dist/services/richtext-populate.test.node.js.map +1 -0
- package/dist/storage/collection-fingerprint.d.ts +21 -0
- package/dist/storage/collection-fingerprint.d.ts.map +1 -0
- package/dist/storage/collection-fingerprint.js +172 -0
- package/dist/storage/collection-fingerprint.js.map +1 -0
- package/dist/storage/collection-fingerprint.test.node.d.ts +9 -0
- package/dist/storage/collection-fingerprint.test.node.d.ts.map +1 -0
- package/dist/storage/collection-fingerprint.test.node.js +256 -0
- package/dist/storage/collection-fingerprint.test.node.js.map +1 -0
- package/dist/storage/field-store-map.d.ts +59 -0
- package/dist/storage/field-store-map.d.ts.map +1 -0
- package/dist/storage/field-store-map.js +75 -0
- package/dist/storage/field-store-map.js.map +1 -0
- package/dist/storage/field-store-map.test.node.d.ts +9 -0
- package/dist/storage/field-store-map.test.node.d.ts.map +1 -0
- package/dist/storage/field-store-map.test.node.js +117 -0
- package/dist/storage/field-store-map.test.node.js.map +1 -0
- package/dist/storage/index.d.ts +10 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +10 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/utils/normalise-dates.d.ts +15 -0
- package/dist/utils/normalise-dates.d.ts.map +1 -0
- package/dist/utils/normalise-dates.js +22 -0
- package/dist/utils/normalise-dates.js.map +1 -0
- package/dist/utils/slugify.d.ts +56 -0
- package/dist/utils/slugify.d.ts.map +1 -0
- package/dist/utils/slugify.js +91 -0
- package/dist/utils/slugify.js.map +1 -0
- package/dist/utils/slugify.test.node.d.ts +9 -0
- package/dist/utils/slugify.test.node.d.ts.map +1 -0
- package/dist/utils/slugify.test.node.js +86 -0
- package/dist/utils/slugify.test.node.js.map +1 -0
- package/dist/utils/storage-utils.d.ts +36 -0
- package/dist/utils/storage-utils.d.ts.map +1 -0
- package/dist/utils/storage-utils.js +38 -0
- package/dist/utils/storage-utils.js.map +1 -0
- package/dist/utils/utils.general.d.ts +64 -0
- package/dist/utils/utils.general.d.ts.map +1 -0
- package/dist/utils/utils.general.js +219 -0
- package/dist/utils/utils.general.js.map +1 -0
- package/dist/validation/index.d.ts +9 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +9 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/shared.d.ts +36 -0
- package/dist/validation/shared.d.ts.map +1 -0
- package/dist/validation/shared.js +42 -0
- package/dist/validation/shared.js.map +1 -0
- package/dist/workflow/index.d.ts +2 -0
- package/dist/workflow/index.d.ts.map +1 -0
- package/dist/workflow/index.js +3 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow/workflow.d.ts +40 -0
- package/dist/workflow/workflow.d.ts.map +1 -0
- package/dist/workflow/workflow.js +96 -0
- package/dist/workflow/workflow.js.map +1 -0
- package/dist/workflow/workflow.test.node.d.ts +2 -0
- package/dist/workflow/workflow.test.node.d.ts.map +1 -0
- package/dist/workflow/workflow.test.node.js +198 -0
- package/dist/workflow/workflow.test.node.js.map +1 -0
- package/package.json +88 -0
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
import type { RequestContext } from '@byline/auth';
|
|
2
|
+
import type { CollectionDefinition } from '@byline/core';
|
|
3
|
+
import type { QueryPredicate } from './query-predicate.js';
|
|
4
|
+
/**
|
|
5
|
+
* Read mode for document queries.
|
|
6
|
+
*
|
|
7
|
+
* - `'any'` — return the latest version of each document regardless
|
|
8
|
+
* of its workflow status (the standard `current_documents`
|
|
9
|
+
* view semantics). Default when omitted; used by admin
|
|
10
|
+
* UIs that need to surface in-progress drafts.
|
|
11
|
+
* - `'published'` — return the latest *published* version of each
|
|
12
|
+
* document, falling back past newer drafts to the
|
|
13
|
+
* previously-published content. A document with no
|
|
14
|
+
* published version is invisible in this mode.
|
|
15
|
+
* Used by public read consumers (`@byline/client`
|
|
16
|
+
* defaults to this).
|
|
17
|
+
*/
|
|
18
|
+
export type ReadMode = 'any' | 'published';
|
|
19
|
+
/**
|
|
20
|
+
* Request-scoped context shared across every read and populate walk in one
|
|
21
|
+
* logical request. Threaded through populate, `afterRead` hooks, and any
|
|
22
|
+
* nested reads the hook itself performs — the visited set and read budget
|
|
23
|
+
* survive across these calls to prevent A→B→A infinite loops.
|
|
24
|
+
*
|
|
25
|
+
* Lives in `@types` (not `services/`) so collection-hook type definitions
|
|
26
|
+
* can reference it without a layer violation. The `createReadContext()`
|
|
27
|
+
* factory stays in `services/populate.ts`.
|
|
28
|
+
*/
|
|
29
|
+
export interface ReadContext {
|
|
30
|
+
/**
|
|
31
|
+
* Composite keys (`${target_collection_id}:${document_id}`) for every
|
|
32
|
+
* document populate has materialised during this request. Used by the
|
|
33
|
+
* populate walk to skip re-fetching a target it has already expanded
|
|
34
|
+
* (the cycle-stub path).
|
|
35
|
+
*/
|
|
36
|
+
visited: Set<string>;
|
|
37
|
+
/**
|
|
38
|
+
* Composite keys (`${collection_path}:${document_id}`) for every
|
|
39
|
+
* document whose `afterRead` hook has fired during this request. Used
|
|
40
|
+
* to enforce "each document runs through `afterRead` at most once per
|
|
41
|
+
* logical request" — the rule that forecloses the A→B→A loop when a
|
|
42
|
+
* hook performs its own reads.
|
|
43
|
+
*/
|
|
44
|
+
afterReadFired: Set<string>;
|
|
45
|
+
/**
|
|
46
|
+
* Per-request memoisation of `beforeRead` hook results, keyed by
|
|
47
|
+
* `collectionPath`. Populate fans out across many source documents and
|
|
48
|
+
* many target-collection batches; without a cache, an async hook
|
|
49
|
+
* (e.g. resolving the actor's tenant id) would re-run on every batch.
|
|
50
|
+
* Keyed by collection path because the actor is invariant for the
|
|
51
|
+
* lifetime of one `ReadContext`. `null` records "hook ran and returned
|
|
52
|
+
* void" (i.e. no scoping applies); absence records "hook has not been
|
|
53
|
+
* run yet for this collection".
|
|
54
|
+
*/
|
|
55
|
+
beforeReadCache: Map<string, QueryPredicate | null>;
|
|
56
|
+
/** Monotonic count of document materialisations; compared against `maxReads`. */
|
|
57
|
+
readCount: number;
|
|
58
|
+
/** Hard ceiling on materialisations per request. Default 500. */
|
|
59
|
+
maxReads: number;
|
|
60
|
+
/** Hard ceiling on populate depth per request. Default 8. */
|
|
61
|
+
maxDepth: number;
|
|
62
|
+
}
|
|
63
|
+
/** Operators supported by field-level WHERE clauses. */
|
|
64
|
+
export type FieldFilterOperator = '$eq' | '$ne' | '$gt' | '$gte' | '$lt' | '$lte' | '$contains' | '$in' | '$nin';
|
|
65
|
+
/**
|
|
66
|
+
* A single field-level filter, pre-resolved to the correct EAV store table
|
|
67
|
+
* and value column. The client API's `parse-where` module produces these;
|
|
68
|
+
* the DB adapter consumes them to build EXISTS subqueries.
|
|
69
|
+
*/
|
|
70
|
+
export interface FieldFilter {
|
|
71
|
+
kind: 'field';
|
|
72
|
+
/** The field name as declared in CollectionDefinition (e.g. 'title'). */
|
|
73
|
+
fieldName: string;
|
|
74
|
+
/** Which EAV store table holds this field's data (e.g. 'text', 'numeric'). */
|
|
75
|
+
storeType: string;
|
|
76
|
+
/** The column within the store table that holds the value (e.g. 'value', 'value_integer'). */
|
|
77
|
+
valueColumn: string;
|
|
78
|
+
/** The comparison operator. */
|
|
79
|
+
operator: FieldFilterOperator;
|
|
80
|
+
/** The value(s) to compare against. */
|
|
81
|
+
value: string | number | boolean | null | Array<string | number>;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* A cross-collection relation filter. Matches documents whose relation
|
|
85
|
+
* field `fieldName` points at a target document that itself satisfies
|
|
86
|
+
* `nested` filters. Produced by `parse-where` when a where value under
|
|
87
|
+
* a relation field is a plain object of target-field predicates, e.g.
|
|
88
|
+
* `{ category: { path: 'news' } }`. The adapter compiles this into a
|
|
89
|
+
* nested EXISTS joining `store_relation` to the target collection's
|
|
90
|
+
* current-documents view and recursing into `nested` against the
|
|
91
|
+
* target's own EAV stores.
|
|
92
|
+
*
|
|
93
|
+
* The nesting is finite — user-written `where` clauses cannot cycle
|
|
94
|
+
* because the structure itself is finite — so no cycle guard is needed
|
|
95
|
+
* on this path (unlike populate, which traverses implicitly).
|
|
96
|
+
*/
|
|
97
|
+
export interface RelationFilter {
|
|
98
|
+
kind: 'relation';
|
|
99
|
+
/** The relation field name on the source collection (e.g. 'category'). */
|
|
100
|
+
fieldName: string;
|
|
101
|
+
/** The target collection's id (resolved at parse time). */
|
|
102
|
+
targetCollectionId: string;
|
|
103
|
+
/** Filters applied to the target document. Recursive. */
|
|
104
|
+
nested: DocumentFilter[];
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* A boolean combinator group. Wraps a list of child filters with explicit
|
|
108
|
+
* AND or OR semantics; nests freely. Produced by `parse-where` from
|
|
109
|
+
* `$and` / `$or` keys in the source `QueryPredicate`. The adapter compiles
|
|
110
|
+
* each child into its existing SQL form (field EXISTS, relation EXISTS,
|
|
111
|
+
* or another combinator group) and joins them with the matching SQL
|
|
112
|
+
* operator inside parentheses.
|
|
113
|
+
*
|
|
114
|
+
* Top-level `$and` is structurally redundant with the implicit AND across
|
|
115
|
+
* `DocumentFilter[]` and the parser flattens it for simplicity; the
|
|
116
|
+
* combinator only earns its keep when nested inside `$or` (or vice versa).
|
|
117
|
+
*/
|
|
118
|
+
export interface CombinatorFilter {
|
|
119
|
+
kind: 'and' | 'or';
|
|
120
|
+
children: DocumentFilter[];
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* A predicate over a document-version column (`status`, `path`). Distinct
|
|
124
|
+
* from `FieldFilter` — these columns live on `document_versions` itself,
|
|
125
|
+
* not on the EAV stores, so they compile to a direct outer-scope column
|
|
126
|
+
* comparison rather than an `EXISTS` subquery.
|
|
127
|
+
*
|
|
128
|
+
* Produced by `parse-where` when `status` / `path` appear *inside* a
|
|
129
|
+
* combinator (`$or` / `$and` child). At the top level the same keys are
|
|
130
|
+
* intercepted as reserved keys on `ParsedWhere.status` / `ParsedWhere.pathFilter`
|
|
131
|
+
* because they map to direct adapter parameters there; inside a
|
|
132
|
+
* combinator that mapping no longer makes sense (you can't OR-combine
|
|
133
|
+
* with the outer scalar parameter), so they downshift to this filter.
|
|
134
|
+
*/
|
|
135
|
+
export interface DocumentColumnFilter {
|
|
136
|
+
kind: 'docColumn';
|
|
137
|
+
column: 'status' | 'path';
|
|
138
|
+
operator: FieldFilterOperator;
|
|
139
|
+
value: string | null;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Any filter that can appear in a `findDocuments` call — a direct field
|
|
143
|
+
* predicate (`FieldFilter`), a cross-collection hop through a relation
|
|
144
|
+
* (`RelationFilter`), a nested boolean combinator (`CombinatorFilter`),
|
|
145
|
+
* or a document-version column comparison (`DocumentColumnFilter`).
|
|
146
|
+
*/
|
|
147
|
+
export type DocumentFilter = FieldFilter | RelationFilter | CombinatorFilter | DocumentColumnFilter;
|
|
148
|
+
/**
|
|
149
|
+
* A field-level sort descriptor, pre-resolved to the correct EAV store
|
|
150
|
+
* table and value column. Used for sorting by field values (as opposed to
|
|
151
|
+
* document-level columns like created_at).
|
|
152
|
+
*/
|
|
153
|
+
export interface FieldSort {
|
|
154
|
+
/** The field name as declared in CollectionDefinition. */
|
|
155
|
+
fieldName: string;
|
|
156
|
+
/** Which EAV store table holds this field's data. */
|
|
157
|
+
storeType: string;
|
|
158
|
+
/** The column within the store table that holds the sortable value. */
|
|
159
|
+
valueColumn: string;
|
|
160
|
+
/** Sort direction. */
|
|
161
|
+
direction: 'asc' | 'desc';
|
|
162
|
+
}
|
|
163
|
+
export interface IDbAdapter {
|
|
164
|
+
commands: {
|
|
165
|
+
collections: ICollectionCommands;
|
|
166
|
+
documents: IDocumentCommands;
|
|
167
|
+
};
|
|
168
|
+
queries: {
|
|
169
|
+
collections: ICollectionQueries;
|
|
170
|
+
documents: IDocumentQueries;
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
export interface ICollectionCommands {
|
|
174
|
+
/**
|
|
175
|
+
* Insert a new collection row. `opts.version` and `opts.schemaHash` are
|
|
176
|
+
* used by the startup bootstrap to anchor initial values; omitted by
|
|
177
|
+
* legacy seed scripts that rely on the DB-level `version` default.
|
|
178
|
+
*/
|
|
179
|
+
create(path: string, config: CollectionDefinition, opts?: {
|
|
180
|
+
version?: number;
|
|
181
|
+
schemaHash?: string;
|
|
182
|
+
}): Promise<any>;
|
|
183
|
+
/**
|
|
184
|
+
* Partial update for the collection row. Only fields supplied in `patch`
|
|
185
|
+
* are written — other columns are left untouched. Used by the startup
|
|
186
|
+
* bootstrap to record schema version bumps alongside a refreshed
|
|
187
|
+
* config/hash.
|
|
188
|
+
*/
|
|
189
|
+
update(id: string, patch: {
|
|
190
|
+
config?: CollectionDefinition;
|
|
191
|
+
version?: number;
|
|
192
|
+
schemaHash?: string;
|
|
193
|
+
}): Promise<any>;
|
|
194
|
+
delete(id: string): Promise<any>;
|
|
195
|
+
}
|
|
196
|
+
export interface IDocumentCommands {
|
|
197
|
+
createDocumentVersion(params: {
|
|
198
|
+
documentId?: string;
|
|
199
|
+
collectionId: string;
|
|
200
|
+
/**
|
|
201
|
+
* The collection's schema version at the time of this write. Stamped
|
|
202
|
+
* onto the `documentVersions` row so that Phase-2 in-memory migration
|
|
203
|
+
* can later resolve each document against the shape it was authored
|
|
204
|
+
* under. Resolved by the caller from the core registry.
|
|
205
|
+
*/
|
|
206
|
+
collectionVersion: number;
|
|
207
|
+
collectionConfig: CollectionDefinition;
|
|
208
|
+
action: string;
|
|
209
|
+
documentData: any;
|
|
210
|
+
path: string;
|
|
211
|
+
locale?: string;
|
|
212
|
+
status?: string;
|
|
213
|
+
createdBy?: string;
|
|
214
|
+
/**
|
|
215
|
+
* When updating an existing document, the version ID of the version being
|
|
216
|
+
* replaced. If provided and `locale` is a specific locale (not 'all'),
|
|
217
|
+
* field-value rows for other locales are copied forward from this version
|
|
218
|
+
* into the new one so that per-locale content is not lost.
|
|
219
|
+
*/
|
|
220
|
+
previousVersionId?: string;
|
|
221
|
+
}): Promise<{
|
|
222
|
+
document: any;
|
|
223
|
+
fieldCount: number;
|
|
224
|
+
}>;
|
|
225
|
+
/**
|
|
226
|
+
* Mutate the status on an existing document version row.
|
|
227
|
+
*
|
|
228
|
+
* This is the one case where we UPDATE a version in-place rather than
|
|
229
|
+
* creating a new version — status is lifecycle metadata, not content.
|
|
230
|
+
*/
|
|
231
|
+
setDocumentStatus(params: {
|
|
232
|
+
document_version_id: string;
|
|
233
|
+
status: string;
|
|
234
|
+
}): Promise<void>;
|
|
235
|
+
/**
|
|
236
|
+
* Archive ALL versions of a document that currently have a given status.
|
|
237
|
+
*
|
|
238
|
+
* Optionally exclude a specific version (e.g. the one being published right
|
|
239
|
+
* now) so we don't accidentally archive it.
|
|
240
|
+
*
|
|
241
|
+
* Returns the number of rows updated.
|
|
242
|
+
*/
|
|
243
|
+
archivePublishedVersions(params: {
|
|
244
|
+
document_id: string;
|
|
245
|
+
currentStatus?: string;
|
|
246
|
+
excludeVersionId?: string;
|
|
247
|
+
}): Promise<number>;
|
|
248
|
+
/**
|
|
249
|
+
* Soft-delete a document by setting `is_deleted = true` on ALL of its
|
|
250
|
+
* versions. The `current_documents` view automatically filters these out,
|
|
251
|
+
* so the document disappears from listings without physically removing data.
|
|
252
|
+
*
|
|
253
|
+
* Returns the number of version rows marked as deleted.
|
|
254
|
+
*/
|
|
255
|
+
softDeleteDocument(params: {
|
|
256
|
+
document_id: string;
|
|
257
|
+
}): Promise<number>;
|
|
258
|
+
}
|
|
259
|
+
export interface ICollectionQueries {
|
|
260
|
+
getAllCollections(): Promise<any[]>;
|
|
261
|
+
getCollectionByPath(path: string): Promise<any>;
|
|
262
|
+
getCollectionById(id: string): Promise<any>;
|
|
263
|
+
}
|
|
264
|
+
export interface IDocumentQueries {
|
|
265
|
+
getDocumentById(params: {
|
|
266
|
+
collection_id: string;
|
|
267
|
+
document_id: string;
|
|
268
|
+
locale?: string;
|
|
269
|
+
reconstruct?: boolean;
|
|
270
|
+
/** See `ReadMode`. Defaults to `'any'`. */
|
|
271
|
+
readMode?: ReadMode;
|
|
272
|
+
/**
|
|
273
|
+
* Additional WHERE-clause predicates ANDed onto the query. Used by
|
|
274
|
+
* `CollectionHandle` to apply `beforeRead`-hook scoping; when the
|
|
275
|
+
* predicate excludes the row, the method returns `null` (the same
|
|
276
|
+
* shape as "document does not exist").
|
|
277
|
+
*/
|
|
278
|
+
filters?: DocumentFilter[];
|
|
279
|
+
/**
|
|
280
|
+
* Request-scoped auth context. Plumbing only in Phase 0 — adapters
|
|
281
|
+
* currently ignore it. Phase 4 uses it for `collections.<path>.read`
|
|
282
|
+
* ability assertion and for `beforeRead`-hook query scoping.
|
|
283
|
+
* See docs/analysis/AUTHN-AUTHZ-ANALYSIS.md.
|
|
284
|
+
*/
|
|
285
|
+
requestContext?: RequestContext;
|
|
286
|
+
}): Promise<any | null>;
|
|
287
|
+
/**
|
|
288
|
+
* Fetch only the current version's metadata row (no field reconstruction).
|
|
289
|
+
*
|
|
290
|
+
* Use this when the caller only needs `{document_version_id, status,
|
|
291
|
+
* path, ...}` — for example, workflow transitions that read the current
|
|
292
|
+
* status and version ID before mutating. Skipping reconstruction avoids
|
|
293
|
+
* the full 7-way UNION ALL and the meta-row fetch.
|
|
294
|
+
*
|
|
295
|
+
* Returns `null` when the document does not exist (or has been soft-deleted).
|
|
296
|
+
*/
|
|
297
|
+
getCurrentVersionMetadata(params: {
|
|
298
|
+
collection_id: string;
|
|
299
|
+
document_id: string;
|
|
300
|
+
}): Promise<{
|
|
301
|
+
document_version_id: string;
|
|
302
|
+
document_id: string;
|
|
303
|
+
collection_id: string;
|
|
304
|
+
path: string;
|
|
305
|
+
status: string;
|
|
306
|
+
created_at: Date;
|
|
307
|
+
updated_at: Date;
|
|
308
|
+
} | null>;
|
|
309
|
+
getDocumentByPath(params: {
|
|
310
|
+
collection_id: string;
|
|
311
|
+
path: string;
|
|
312
|
+
locale?: string;
|
|
313
|
+
reconstruct: boolean;
|
|
314
|
+
/** See `ReadMode`. Defaults to `'any'`. */
|
|
315
|
+
readMode?: ReadMode;
|
|
316
|
+
/** See `getDocumentById.filters`. */
|
|
317
|
+
filters?: DocumentFilter[];
|
|
318
|
+
/** See `getDocumentById.requestContext`. */
|
|
319
|
+
requestContext?: RequestContext;
|
|
320
|
+
}): Promise<any | null>;
|
|
321
|
+
getDocumentByVersion(params: {
|
|
322
|
+
document_version_id: string;
|
|
323
|
+
locale?: string;
|
|
324
|
+
}): Promise<any>;
|
|
325
|
+
getDocumentsByVersionIds(params: {
|
|
326
|
+
document_version_ids: string[];
|
|
327
|
+
locale?: string;
|
|
328
|
+
}): Promise<any[]>;
|
|
329
|
+
/**
|
|
330
|
+
* Batch-fetch current versions for a list of logical document IDs.
|
|
331
|
+
*
|
|
332
|
+
* Used by the client API's relationship populate pass: `store_relation`
|
|
333
|
+
* rows carry `target_document_id` values (not version IDs), so populate
|
|
334
|
+
* collects those IDs and resolves them to fully reconstructed documents
|
|
335
|
+
* in a single round trip. Supports selective field loading via `fields`.
|
|
336
|
+
*
|
|
337
|
+
* Only returns current (non-soft-deleted) versions. Missing IDs are
|
|
338
|
+
* silently omitted from the result.
|
|
339
|
+
*/
|
|
340
|
+
getDocumentsByDocumentIds(params: {
|
|
341
|
+
collection_id: string;
|
|
342
|
+
document_ids: string[];
|
|
343
|
+
locale?: string;
|
|
344
|
+
fields?: string[];
|
|
345
|
+
/** See `ReadMode`. Defaults to `'any'`. */
|
|
346
|
+
readMode?: ReadMode;
|
|
347
|
+
/** See `getDocumentById.filters`. Used by populate to apply each target
|
|
348
|
+
* collection's `beforeRead` predicate to its batch fetch. */
|
|
349
|
+
filters?: DocumentFilter[];
|
|
350
|
+
/** See `getDocumentById.requestContext`. */
|
|
351
|
+
requestContext?: RequestContext;
|
|
352
|
+
}): Promise<any[]>;
|
|
353
|
+
getDocumentHistory(params: {
|
|
354
|
+
collection_id: string;
|
|
355
|
+
document_id: string;
|
|
356
|
+
locale?: string;
|
|
357
|
+
page?: number;
|
|
358
|
+
page_size?: number;
|
|
359
|
+
order?: string;
|
|
360
|
+
desc?: boolean;
|
|
361
|
+
query?: string;
|
|
362
|
+
}): Promise<{
|
|
363
|
+
documents: any[];
|
|
364
|
+
meta: {
|
|
365
|
+
total: number;
|
|
366
|
+
page: number;
|
|
367
|
+
page_size: number;
|
|
368
|
+
total_pages: number;
|
|
369
|
+
order: string;
|
|
370
|
+
desc: boolean;
|
|
371
|
+
};
|
|
372
|
+
}>;
|
|
373
|
+
/**
|
|
374
|
+
* Find the latest version of a document that has a specific status.
|
|
375
|
+
*
|
|
376
|
+
* This queries `document_versions` directly (not the current_documents view)
|
|
377
|
+
* so it can find a published version even when a newer draft exists.
|
|
378
|
+
*
|
|
379
|
+
* Returns minimal version metadata (not reconstructed content).
|
|
380
|
+
*/
|
|
381
|
+
getPublishedVersion(params: {
|
|
382
|
+
collection_id: string;
|
|
383
|
+
document_id: string;
|
|
384
|
+
status?: string;
|
|
385
|
+
}): Promise<{
|
|
386
|
+
document_version_id: string;
|
|
387
|
+
document_id: string;
|
|
388
|
+
status: string;
|
|
389
|
+
created_at: Date;
|
|
390
|
+
updated_at: Date;
|
|
391
|
+
} | null>;
|
|
392
|
+
/**
|
|
393
|
+
* Return the set of document IDs (from the provided list) that have at
|
|
394
|
+
* least one version with the given status. Used to efficiently annotate
|
|
395
|
+
* list views with a "published version exists" flag.
|
|
396
|
+
*/
|
|
397
|
+
getPublishedDocumentIds(params: {
|
|
398
|
+
collection_id: string;
|
|
399
|
+
document_ids: string[];
|
|
400
|
+
status?: string;
|
|
401
|
+
}): Promise<Set<string>>;
|
|
402
|
+
/**
|
|
403
|
+
* Return a count of current documents grouped by status for a given
|
|
404
|
+
* collection. Uses the `current_documents` view so each logical document
|
|
405
|
+
* is counted once at its latest version.
|
|
406
|
+
*/
|
|
407
|
+
getDocumentCountsByStatus(params: {
|
|
408
|
+
collection_id: string;
|
|
409
|
+
/** See `getDocumentById.filters`. Used by `CollectionHandle.countByStatus`
|
|
410
|
+
* to apply `beforeRead`-hook scoping so per-status counts reflect only
|
|
411
|
+
* the rows the actor can see. */
|
|
412
|
+
filters?: DocumentFilter[];
|
|
413
|
+
/** See `getDocumentById.requestContext`. */
|
|
414
|
+
requestContext?: RequestContext;
|
|
415
|
+
}): Promise<Array<{
|
|
416
|
+
status: string;
|
|
417
|
+
count: number;
|
|
418
|
+
}>>;
|
|
419
|
+
/**
|
|
420
|
+
* Execute a filtered, sorted, paginated query against current documents
|
|
421
|
+
* using field-level EAV filters and optional field-level sorting.
|
|
422
|
+
*
|
|
423
|
+
* Used by the client API's query builder (Phase 2). Each FieldFilter
|
|
424
|
+
* becomes an EXISTS subquery against the appropriate store table; a
|
|
425
|
+
* RelationFilter becomes a nested EXISTS that joins through
|
|
426
|
+
* `store_relation` to the target collection's current-documents view
|
|
427
|
+
* and recurses into its own filters. A FieldSort becomes a LATERAL
|
|
428
|
+
* JOIN to pull the sort value into the outer query.
|
|
429
|
+
*/
|
|
430
|
+
findDocuments(params: {
|
|
431
|
+
collection_id: string;
|
|
432
|
+
filters?: DocumentFilter[];
|
|
433
|
+
/**
|
|
434
|
+
* Exact-match filter on the current version's `status` column. Used by
|
|
435
|
+
* admin UIs that filter the list view by a specific status ("show me
|
|
436
|
+
* all drafts"). Distinct from `readMode`, which selects the *source
|
|
437
|
+
* view* — see `ReadMode`.
|
|
438
|
+
*/
|
|
439
|
+
status?: string;
|
|
440
|
+
pathFilter?: {
|
|
441
|
+
operator: FieldFilterOperator;
|
|
442
|
+
value: string;
|
|
443
|
+
};
|
|
444
|
+
/** Text search across the collection's configured search fields. */
|
|
445
|
+
query?: string;
|
|
446
|
+
sort?: FieldSort;
|
|
447
|
+
/** Document-level sort column (created_at, updated_at, path). Used when sort is not a field-level sort. */
|
|
448
|
+
orderBy?: string;
|
|
449
|
+
orderDirection?: 'asc' | 'desc';
|
|
450
|
+
locale?: string;
|
|
451
|
+
page?: number;
|
|
452
|
+
pageSize?: number;
|
|
453
|
+
fields?: string[];
|
|
454
|
+
/** See `ReadMode`. Defaults to `'any'`. */
|
|
455
|
+
readMode?: ReadMode;
|
|
456
|
+
/** See `getDocumentById.requestContext`. */
|
|
457
|
+
requestContext?: RequestContext;
|
|
458
|
+
}): Promise<{
|
|
459
|
+
documents: any[];
|
|
460
|
+
total: number;
|
|
461
|
+
}>;
|
|
462
|
+
}
|
|
463
|
+
//# sourceMappingURL=db-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db-types.d.ts","sourceRoot":"","sources":["../../src/@types/db-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db-types.js","sourceRoot":"","sources":["../../src/@types/db-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This Source Code is subject to the terms of the Mozilla Public
|
|
3
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
4
|
+
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) Infonomic Company Limited
|
|
7
|
+
*/
|
|
8
|
+
import type { ArrayField, BlocksField, Field, FieldSet, GroupField, LocalizedField, OptionalField, SelectField } from './field-types.js';
|
|
9
|
+
import type { Prettify, ValueUnion } from './type-utils.js';
|
|
10
|
+
type BaseFieldDataTypes = {
|
|
11
|
+
array: never;
|
|
12
|
+
blocks: never;
|
|
13
|
+
boolean: boolean;
|
|
14
|
+
checkbox: boolean;
|
|
15
|
+
date: Date;
|
|
16
|
+
datetime: Date;
|
|
17
|
+
decimal: string;
|
|
18
|
+
float: number;
|
|
19
|
+
group: never;
|
|
20
|
+
integer: number;
|
|
21
|
+
json: unknown;
|
|
22
|
+
object: unknown;
|
|
23
|
+
richText: unknown;
|
|
24
|
+
select: never;
|
|
25
|
+
textArea: string;
|
|
26
|
+
text: string;
|
|
27
|
+
time: string;
|
|
28
|
+
relation: RelatedDocumentValue;
|
|
29
|
+
file: StoredFileValue;
|
|
30
|
+
image: StoredFileValue;
|
|
31
|
+
};
|
|
32
|
+
type BlocksFieldData<T extends BlocksField> = Array<Prettify<ValueUnion<{
|
|
33
|
+
[K in T['blocks'][number] as K['blockType']]: Prettify<{
|
|
34
|
+
_id: string;
|
|
35
|
+
_type: K['blockType'];
|
|
36
|
+
} & FieldSetData<K['fields']>>;
|
|
37
|
+
}>>>;
|
|
38
|
+
type BaseFieldData<T extends Field> = T extends ArrayField ? Array<Prettify<{
|
|
39
|
+
_id: string;
|
|
40
|
+
} & FieldSetData<T['fields']>>> : T extends BlocksField ? Prettify<BlocksFieldData<T>> : T extends GroupField ? FieldSetData<T['fields']> : T extends SelectField ? T['options'][number]['value'] : BaseFieldDataTypes[T['type']];
|
|
41
|
+
export type FieldData<T extends Field = Field> = T extends OptionalField ? BaseFieldData<T> | undefined : BaseFieldData<T>;
|
|
42
|
+
export type FieldSetData<T extends FieldSet = FieldSet> = Prettify<{
|
|
43
|
+
-readonly [F in T[number] as F extends OptionalField ? never : F['name']]: FieldData<F>;
|
|
44
|
+
} & {
|
|
45
|
+
-readonly [F in T[number] as F extends OptionalField ? F['name'] : never]?: FieldData<F>;
|
|
46
|
+
}>;
|
|
47
|
+
export type PerLocale<T> = {
|
|
48
|
+
[locale: string]: T;
|
|
49
|
+
};
|
|
50
|
+
type BlocksFieldDataAllLocales<T extends BlocksField> = Array<Prettify<ValueUnion<{
|
|
51
|
+
[K in T['blocks'][number] as K['blockType']]: {
|
|
52
|
+
_id: string;
|
|
53
|
+
_type: K['blockType'];
|
|
54
|
+
} & FieldSetDataAllLocales<K['fields']>;
|
|
55
|
+
}>>>;
|
|
56
|
+
type BaseFieldDataAllLocales<T extends Field> = T extends ArrayField ? Array<Prettify<{
|
|
57
|
+
_id: string;
|
|
58
|
+
} & FieldSetDataAllLocales<T['fields']>>> : T extends BlocksField ? Prettify<BlocksFieldDataAllLocales<T>> : T extends GroupField ? FieldSetDataAllLocales<T['fields']> : T extends SelectField ? T['options'][number]['value'] : BaseFieldDataTypes[T['type']];
|
|
59
|
+
type LocalizedFieldDataAllLocales<T extends Field> = T extends LocalizedField ? PerLocale<BaseFieldDataAllLocales<T>> : BaseFieldDataAllLocales<T>;
|
|
60
|
+
export type FieldDataAllLocales<T extends Field = Field> = T extends OptionalField ? LocalizedFieldDataAllLocales<T> | undefined : LocalizedFieldDataAllLocales<T>;
|
|
61
|
+
export type FieldSetDataAllLocales<T extends FieldSet = FieldSet> = Prettify<{
|
|
62
|
+
-readonly [F in T[number] as F extends OptionalField ? never : F['name']]: FieldDataAllLocales<F>;
|
|
63
|
+
} & {
|
|
64
|
+
-readonly [F in T[number] as F extends OptionalField ? F['name'] : never]?: FieldDataAllLocales<F>;
|
|
65
|
+
}>;
|
|
66
|
+
/**
|
|
67
|
+
* One generated image variant persisted alongside the original file.
|
|
68
|
+
*
|
|
69
|
+
* Populated by the upload service after Sharp produces a derivative —
|
|
70
|
+
* the storage path is always present, the URL is captured at the
|
|
71
|
+
* upload moment via `storage.getUrl()`, and the resolved dimensions /
|
|
72
|
+
* output format are recorded so the read side can build a
|
|
73
|
+
* `<picture>` / `srcset` without a second round-trip.
|
|
74
|
+
*/
|
|
75
|
+
export interface PersistedVariant {
|
|
76
|
+
/** Variant name from `UploadConfig.sizes[].name`, e.g. `'thumbnail'`, `'card'`. */
|
|
77
|
+
name: string;
|
|
78
|
+
storagePath: string;
|
|
79
|
+
storageUrl?: string;
|
|
80
|
+
width?: number;
|
|
81
|
+
height?: number;
|
|
82
|
+
/** Output format the variant was written as — `'webp'`, `'avif'`, etc. */
|
|
83
|
+
format?: string;
|
|
84
|
+
}
|
|
85
|
+
export interface StoredFileValue {
|
|
86
|
+
fileId: string;
|
|
87
|
+
filename: string;
|
|
88
|
+
originalFilename: string;
|
|
89
|
+
mimeType: string;
|
|
90
|
+
fileSize: number;
|
|
91
|
+
storageProvider: string;
|
|
92
|
+
storagePath: string;
|
|
93
|
+
storageUrl?: string;
|
|
94
|
+
fileHash?: string;
|
|
95
|
+
imageWidth?: number;
|
|
96
|
+
imageHeight?: number;
|
|
97
|
+
imageFormat?: string;
|
|
98
|
+
processingStatus: 'pending' | 'processing' | 'complete' | 'failed';
|
|
99
|
+
thumbnailGenerated?: boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Image variants generated by the upload pipeline. Empty / absent for
|
|
102
|
+
* non-image uploads, for image fields with no `sizes` declared, or
|
|
103
|
+
* for bypass MIME types (SVG, GIF). The read side reads this directly
|
|
104
|
+
* — no special-casing in the EAV restore path.
|
|
105
|
+
*/
|
|
106
|
+
variants?: PersistedVariant[];
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* A placeholder StoredFileValue used when an image/file is selected but not yet
|
|
110
|
+
* uploaded. This allows the form to hold the file's preview URL while deferring
|
|
111
|
+
* the actual upload until Save.
|
|
112
|
+
*/
|
|
113
|
+
export interface PendingStoredFileValue {
|
|
114
|
+
fileId: string;
|
|
115
|
+
filename: string;
|
|
116
|
+
originalFilename: string;
|
|
117
|
+
mimeType: string;
|
|
118
|
+
fileSize: string;
|
|
119
|
+
storageProvider: 'pending';
|
|
120
|
+
storagePath: '';
|
|
121
|
+
storageUrl: string;
|
|
122
|
+
fileHash: null;
|
|
123
|
+
imageWidth: number | null;
|
|
124
|
+
imageHeight: number | null;
|
|
125
|
+
imageFormat: null;
|
|
126
|
+
processingStatus: 'pending';
|
|
127
|
+
thumbnailGenerated: false;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Type guard to check if a StoredFileValue represents a pending (not yet uploaded) file.
|
|
131
|
+
*/
|
|
132
|
+
export declare function isPendingStoredFileValue(value: unknown): value is PendingStoredFileValue;
|
|
133
|
+
/**
|
|
134
|
+
* Create a pending placeholder value for a file that is selected but not yet uploaded.
|
|
135
|
+
*/
|
|
136
|
+
export declare function createPendingStoredFileValue(file: File, previewUrl: string, dimensions?: {
|
|
137
|
+
width: number;
|
|
138
|
+
height: number;
|
|
139
|
+
}): PendingStoredFileValue;
|
|
140
|
+
export interface RelatedDocumentValue {
|
|
141
|
+
targetDocumentId: string;
|
|
142
|
+
targetCollectionId: string;
|
|
143
|
+
relationshipType?: string;
|
|
144
|
+
cascadeDelete?: boolean;
|
|
145
|
+
}
|
|
146
|
+
export {};
|
|
147
|
+
//# sourceMappingURL=field-data-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-data-types.d.ts","sourceRoot":"","sources":["../../src/@types/field-data-types.ts"],"names":[],"mappings":"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"}
|