@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,352 @@
|
|
|
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 { fieldTypeToStore } from '../storage/field-store-map.js';
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
// Document-level reserved keys
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
/** Where clause keys that map to document-level columns, not EAV stores. */
|
|
13
|
+
const DOCUMENT_LEVEL_KEYS = new Set(['status', 'path', 'query']);
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
// Document-level sort columns
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
const DOCUMENT_SORT_COLUMNS = {
|
|
18
|
+
createdAt: 'created_at',
|
|
19
|
+
updatedAt: 'updated_at',
|
|
20
|
+
path: 'path',
|
|
21
|
+
created_at: 'created_at',
|
|
22
|
+
updated_at: 'updated_at',
|
|
23
|
+
};
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
// Parse functions
|
|
26
|
+
// ---------------------------------------------------------------------------
|
|
27
|
+
/**
|
|
28
|
+
* Parse a client API `where` clause into document-level conditions and
|
|
29
|
+
* adapter-facing DocumentFilter descriptors. When `ctx` is provided,
|
|
30
|
+
* nested relation sub-clauses (e.g. `{ category: { path: 'news' } }`)
|
|
31
|
+
* are resolved into `RelationFilter` entries; otherwise only
|
|
32
|
+
* direct/operator predicates against the relation's own
|
|
33
|
+
* `target_document_id` are emitted.
|
|
34
|
+
*/
|
|
35
|
+
export async function parseWhere(where, definition, ctx) {
|
|
36
|
+
return parseWhereInternal(where, definition, ctx, { isNested: false, inCombinator: false });
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Combine a `beforeRead` hook predicate with a caller-supplied where
|
|
40
|
+
* clause using implicit AND. Returns whichever side is non-empty, or
|
|
41
|
+
* wraps both in `$and` when both are present.
|
|
42
|
+
*
|
|
43
|
+
* Defined at the predicate level (rather than merging two `ParsedWhere`
|
|
44
|
+
* outputs) so the result still flows through `parseWhere` once — there
|
|
45
|
+
* is one normalisation pass and one place where reserved keys, relation
|
|
46
|
+
* lookups, and combinator flattening happen. `null` is treated the same
|
|
47
|
+
* as `undefined` (the cache value `null` records "hook ran and applied
|
|
48
|
+
* no scoping").
|
|
49
|
+
*/
|
|
50
|
+
export function mergePredicates(hookPredicate, userWhere) {
|
|
51
|
+
if (!hookPredicate && !userWhere)
|
|
52
|
+
return undefined;
|
|
53
|
+
if (!hookPredicate)
|
|
54
|
+
return userWhere;
|
|
55
|
+
if (!userWhere)
|
|
56
|
+
return hookPredicate;
|
|
57
|
+
return { $and: [hookPredicate, userWhere] };
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Recursion entry point. `isNested: true` disables the top-level reserved
|
|
61
|
+
* keys (`status`, `query`, `path`) so that on a nested sub-where, those
|
|
62
|
+
* names resolve as ordinary fields on the target collection (where `path`
|
|
63
|
+
* and `status` are typically real text fields).
|
|
64
|
+
*/
|
|
65
|
+
async function parseWhereInternal(where, definition, ctx, { isNested, inCombinator }) {
|
|
66
|
+
const result = { filters: [] };
|
|
67
|
+
if (!where)
|
|
68
|
+
return result;
|
|
69
|
+
for (const [key, rawValue] of Object.entries(where)) {
|
|
70
|
+
// The shared `QueryPredicate` index signature includes `undefined` so it
|
|
71
|
+
// can coexist with the optional `$and` / `$or` combinator properties;
|
|
72
|
+
// skip explicit-undefined entries up front so the rest of this loop can
|
|
73
|
+
// assume a concrete value.
|
|
74
|
+
if (rawValue === undefined)
|
|
75
|
+
continue;
|
|
76
|
+
// --- Boolean combinators ---------------------------------------------
|
|
77
|
+
// `$and` / `$or` carry an array of child predicates. Each child is
|
|
78
|
+
// parsed in its own scope (an `$or` child is itself an implicit AND of
|
|
79
|
+
// its keys); the resulting `DocumentFilter[]` is wrapped in a
|
|
80
|
+
// CombinatorFilter and added to the outer filter list.
|
|
81
|
+
//
|
|
82
|
+
// Top-level `$and` is structurally redundant with the implicit AND
|
|
83
|
+
// across `result.filters`, so we flatten it: parse each child and
|
|
84
|
+
// splice its filters in. The combinator only earns its keep when
|
|
85
|
+
// nested under `$or` (or vice versa). Document-level reserved-key
|
|
86
|
+
// results (status / query / pathFilter) inside combinators are
|
|
87
|
+
// intentionally dropped — they don't compose with OR semantics and
|
|
88
|
+
// belong at the top level of the where clause.
|
|
89
|
+
if (key === '$and' || key === '$or') {
|
|
90
|
+
if (!Array.isArray(rawValue)) {
|
|
91
|
+
ctx?.logger?.debug({ key, collection: definition.path }, 'parse-where: dropping combinator — value is not an array of predicates');
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
const childFilters = [];
|
|
95
|
+
for (const child of rawValue) {
|
|
96
|
+
// Children parse with `inCombinator: true` so reserved keys
|
|
97
|
+
// (`status`, `path`) become `DocumentColumnFilter` predicates
|
|
98
|
+
// rather than being intercepted as top-level scalar parameters
|
|
99
|
+
// — they need to compose with the combinator's OR/AND, which
|
|
100
|
+
// the top-level scalar form cannot do.
|
|
101
|
+
const childParsed = await parseWhereInternal(child, definition, ctx, {
|
|
102
|
+
isNested,
|
|
103
|
+
inCombinator: true,
|
|
104
|
+
});
|
|
105
|
+
childFilters.push(childParsed.filters);
|
|
106
|
+
}
|
|
107
|
+
if (key === '$and') {
|
|
108
|
+
// Flatten: AND over [[a, b], [c]] becomes [a, b, c] at the outer
|
|
109
|
+
// level since the outer scope is itself implicit-AND.
|
|
110
|
+
for (const group of childFilters)
|
|
111
|
+
result.filters.push(...group);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
// `$or`: each child group is itself implicit-AND, so wrap each
|
|
115
|
+
// group in an inner `and` combinator (when it has more than one
|
|
116
|
+
// filter) and emit a single outer `or` combinator over the lot.
|
|
117
|
+
// Empty child groups (parsed to nothing) are skipped — keeping
|
|
118
|
+
// them would change semantics ("OR with always-true").
|
|
119
|
+
const orChildren = [];
|
|
120
|
+
for (const group of childFilters) {
|
|
121
|
+
if (group.length === 0)
|
|
122
|
+
continue;
|
|
123
|
+
if (group.length === 1) {
|
|
124
|
+
orChildren.push(group[0]);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
orChildren.push({ kind: 'and', children: group });
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (orChildren.length > 0) {
|
|
131
|
+
result.filters.push({ kind: 'or', children: orChildren });
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
// --- Document-level reserved keys --------------------------------------
|
|
137
|
+
// At the top level (not nested in a relation, not inside a combinator)
|
|
138
|
+
// these keys map to direct adapter scalar parameters
|
|
139
|
+
// (`ParsedWhere.status` / `query` / `pathFilter`) which compile to the
|
|
140
|
+
// outermost WHERE clause. Inside a combinator that mapping no longer
|
|
141
|
+
// composes — the predicate needs to OR with siblings, which the scalar
|
|
142
|
+
// parameter form cannot express — so `status` / `path` downshift to a
|
|
143
|
+
// `DocumentColumnFilter` and `query` is dropped (text search has no
|
|
144
|
+
// sensible OR-composing form here).
|
|
145
|
+
if (!isNested) {
|
|
146
|
+
if (key === 'status') {
|
|
147
|
+
if (inCombinator) {
|
|
148
|
+
const parsed = normaliseToOperator(rawValue);
|
|
149
|
+
if (parsed) {
|
|
150
|
+
result.filters.push({
|
|
151
|
+
kind: 'docColumn',
|
|
152
|
+
column: 'status',
|
|
153
|
+
operator: parsed.operator,
|
|
154
|
+
value: parsed.value === null ? null : String(parsed.value),
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
if (typeof rawValue === 'string') {
|
|
160
|
+
result.status = rawValue;
|
|
161
|
+
}
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
if (key === 'query') {
|
|
165
|
+
if (inCombinator) {
|
|
166
|
+
ctx?.logger?.debug({ collection: definition.path }, 'parse-where: dropping `query` inside a combinator — text search does not compose with OR/AND');
|
|
167
|
+
continue;
|
|
168
|
+
}
|
|
169
|
+
if (typeof rawValue === 'string') {
|
|
170
|
+
result.query = rawValue;
|
|
171
|
+
}
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
if (key === 'path') {
|
|
175
|
+
if (inCombinator) {
|
|
176
|
+
const parsed = normaliseToOperator(rawValue);
|
|
177
|
+
if (parsed) {
|
|
178
|
+
result.filters.push({
|
|
179
|
+
kind: 'docColumn',
|
|
180
|
+
column: 'path',
|
|
181
|
+
operator: parsed.operator,
|
|
182
|
+
value: parsed.value === null ? null : String(parsed.value),
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
const parsed = normaliseToOperator(rawValue);
|
|
188
|
+
if (parsed) {
|
|
189
|
+
result.pathFilter = {
|
|
190
|
+
operator: parsed.operator,
|
|
191
|
+
value: String(parsed.value),
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
// --- Field-level keys --------------------------------------------------
|
|
198
|
+
const field = definition.fields.find((f) => f.name === key);
|
|
199
|
+
if (!field)
|
|
200
|
+
continue; // Unknown field — skip silently
|
|
201
|
+
// Relation field with a plain-object sub-clause → cross-collection filter.
|
|
202
|
+
// A "plain object with no $-prefixed top-level keys" is unambiguously a
|
|
203
|
+
// nested where; anything else (bare value, operator object) stays in the
|
|
204
|
+
// ordinary field-filter path below and matches the relation's
|
|
205
|
+
// target_document_id column directly.
|
|
206
|
+
if (field.type === 'relation' && isPlainSubWhere(rawValue)) {
|
|
207
|
+
if (!ctx) {
|
|
208
|
+
// No way to resolve the target without a ParseContext. Direct
|
|
209
|
+
// callers of `parseWhere` (tests, tooling) can legitimately hit
|
|
210
|
+
// this path; CollectionHandle always provides one.
|
|
211
|
+
continue;
|
|
212
|
+
}
|
|
213
|
+
const relation = field;
|
|
214
|
+
const targetPath = relation.targetCollection;
|
|
215
|
+
if (!targetPath) {
|
|
216
|
+
ctx.logger?.debug({ fieldName: key, collection: definition.path }, 'parse-where: dropping nested relation sub-clause — relation field has no targetCollection');
|
|
217
|
+
continue;
|
|
218
|
+
}
|
|
219
|
+
const targetDef = ctx.collections.find((c) => c.path === targetPath);
|
|
220
|
+
if (!targetDef) {
|
|
221
|
+
ctx.logger?.debug({ fieldName: key, targetPath, collection: definition.path }, 'parse-where: dropping nested relation sub-clause — target collection not registered');
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
const targetCollectionId = await ctx.resolveCollectionId(targetPath);
|
|
225
|
+
const nested = await parseWhereInternal(rawValue, targetDef, ctx, {
|
|
226
|
+
isNested: true,
|
|
227
|
+
inCombinator: false,
|
|
228
|
+
});
|
|
229
|
+
// Flatten nested: only field-level / relation-level conditions make
|
|
230
|
+
// sense inside a relation subclause. Document-level keys (status,
|
|
231
|
+
// path, query) on the target are deliberately out of scope for this
|
|
232
|
+
// first phase — they can be added later by promoting them into
|
|
233
|
+
// the nested filter list here.
|
|
234
|
+
result.filters.push({
|
|
235
|
+
kind: 'relation',
|
|
236
|
+
fieldName: key,
|
|
237
|
+
targetCollectionId,
|
|
238
|
+
nested: nested.filters,
|
|
239
|
+
});
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
const storeInfo = fieldTypeToStore[field.type];
|
|
243
|
+
if (!storeInfo)
|
|
244
|
+
continue; // Structure fields can't be filtered directly
|
|
245
|
+
const parsed = normaliseToOperator(rawValue);
|
|
246
|
+
if (!parsed)
|
|
247
|
+
continue;
|
|
248
|
+
result.filters.push({
|
|
249
|
+
kind: 'field',
|
|
250
|
+
fieldName: key,
|
|
251
|
+
storeType: storeInfo.storeType,
|
|
252
|
+
valueColumn: storeInfo.valueColumn,
|
|
253
|
+
operator: parsed.operator,
|
|
254
|
+
value: parsed.value,
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
return result;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Parse a client API `sort` spec into either a field-level sort descriptor
|
|
261
|
+
* or a document-level order column.
|
|
262
|
+
*/
|
|
263
|
+
export function parseSort(sort, definition) {
|
|
264
|
+
if (!sort) {
|
|
265
|
+
return { orderBy: 'created_at', orderDirection: 'desc' };
|
|
266
|
+
}
|
|
267
|
+
const entries = Object.entries(sort);
|
|
268
|
+
if (entries.length === 0) {
|
|
269
|
+
return { orderBy: 'created_at', orderDirection: 'desc' };
|
|
270
|
+
}
|
|
271
|
+
const [fieldName, direction] = entries[0];
|
|
272
|
+
// Check if it's a document-level column
|
|
273
|
+
const docColumn = DOCUMENT_SORT_COLUMNS[fieldName];
|
|
274
|
+
if (docColumn) {
|
|
275
|
+
return { orderBy: docColumn, orderDirection: direction };
|
|
276
|
+
}
|
|
277
|
+
// Check if it's a collection field
|
|
278
|
+
const field = definition.fields.find((f) => f.name === fieldName);
|
|
279
|
+
if (!field) {
|
|
280
|
+
return { orderBy: 'created_at', orderDirection: 'desc' };
|
|
281
|
+
}
|
|
282
|
+
const storeInfo = fieldTypeToStore[field.type];
|
|
283
|
+
if (!storeInfo) {
|
|
284
|
+
return { orderBy: 'created_at', orderDirection: 'desc' };
|
|
285
|
+
}
|
|
286
|
+
return {
|
|
287
|
+
fieldSort: {
|
|
288
|
+
fieldName,
|
|
289
|
+
storeType: storeInfo.storeType,
|
|
290
|
+
valueColumn: storeInfo.valueColumn,
|
|
291
|
+
direction,
|
|
292
|
+
},
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Predicate-level combinator keys. These are `$`-prefixed but, unlike
|
|
297
|
+
* operator keys (`$eq`, `$ne`, …), they are valid inside a "plain
|
|
298
|
+
* sub-where" because their value is a list of nested predicates rather
|
|
299
|
+
* than a comparison value.
|
|
300
|
+
*/
|
|
301
|
+
const COMBINATOR_KEYS = new Set(['$and', '$or']);
|
|
302
|
+
/**
|
|
303
|
+
* A "plain sub-where" is a non-null, non-array object whose top-level keys
|
|
304
|
+
* are field names or predicate-level combinators (`$and` / `$or`) — but
|
|
305
|
+
* **not** comparison-operator keys (`$eq`, `$ne`, …). Used to disambiguate
|
|
306
|
+
* `{ category: { path: 'news' } }` (nested where against the target) from
|
|
307
|
+
* `{ category: { $eq: 'abc-id' } }` (operator object on the relation's own
|
|
308
|
+
* `target_document_id`).
|
|
309
|
+
*/
|
|
310
|
+
function isPlainSubWhere(raw) {
|
|
311
|
+
if (raw === null || typeof raw !== 'object')
|
|
312
|
+
return false;
|
|
313
|
+
if (Array.isArray(raw))
|
|
314
|
+
return false;
|
|
315
|
+
const keys = Object.keys(raw);
|
|
316
|
+
// An empty object is not a meaningful sub-where; treat as non-match
|
|
317
|
+
// (ordinary field-filter path will then reject it via normaliseToOperator).
|
|
318
|
+
if (keys.length === 0)
|
|
319
|
+
return false;
|
|
320
|
+
for (const k of keys) {
|
|
321
|
+
if (k.startsWith('$') && !COMBINATOR_KEYS.has(k))
|
|
322
|
+
return false;
|
|
323
|
+
}
|
|
324
|
+
return true;
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Normalise a WhereValue (bare value or operator object) into a single
|
|
328
|
+
* operator + value pair.
|
|
329
|
+
*/
|
|
330
|
+
function normaliseToOperator(raw) {
|
|
331
|
+
// Bare value → $eq
|
|
332
|
+
if (raw === null ||
|
|
333
|
+
typeof raw === 'string' ||
|
|
334
|
+
typeof raw === 'number' ||
|
|
335
|
+
typeof raw === 'boolean') {
|
|
336
|
+
return { operator: '$eq', value: raw };
|
|
337
|
+
}
|
|
338
|
+
// Operator object
|
|
339
|
+
const ops = raw;
|
|
340
|
+
const operatorEntries = Object.entries(ops);
|
|
341
|
+
if (operatorEntries.length === 0)
|
|
342
|
+
return undefined;
|
|
343
|
+
// Use the first operator found
|
|
344
|
+
const [op, val] = operatorEntries[0];
|
|
345
|
+
return {
|
|
346
|
+
operator: op,
|
|
347
|
+
value: val,
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
/** Exported for testing. */
|
|
351
|
+
export { DOCUMENT_LEVEL_KEYS, DOCUMENT_SORT_COLUMNS };
|
|
352
|
+
//# sourceMappingURL=parse-where.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-where.js","sourceRoot":"","sources":["../../src/query/parse-where.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
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
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=parse-where.test.node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-where.test.node.d.ts","sourceRoot":"","sources":["../../src/query/parse-where.test.node.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|