@owlmeans/resource 0.1.18-rc.39 → 0.1.18-rc.40
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/README.md +20 -19
- package/agent-meta/manifest.json +2 -2
- package/agent-meta/skills/resource/SKILL.md +15 -15
- package/build/index.d.ts +1 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js.map +1 -1
- package/build/types.d.ts +3 -1
- package/build/types.d.ts.map +1 -1
- package/build/utils/name.d.ts.map +1 -1
- package/build/utils/name.js.map +1 -1
- package/build/utils/query/types.d.ts +35 -0
- package/build/utils/query/types.d.ts.map +1 -0
- package/build/utils/query/types.js +2 -0
- package/build/utils/query/types.js.map +1 -0
- package/build/utils/query.d.ts +8 -20
- package/build/utils/query.d.ts.map +1 -1
- package/build/utils/query.js +96 -102
- package/build/utils/query.js.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +1 -0
- package/src/types.ts +1 -1
- package/src/utils/name.ts +2 -2
- package/src/utils/query/types.ts +37 -0
- package/src/utils/query.ts +105 -96
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@ wants is the `resource-choice` decision.
|
|
|
12
12
|
## Installation
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
|
-
bun add @owlmeans/resource@^0.1.18-rc.
|
|
15
|
+
bun add @owlmeans/resource@^0.1.18-rc.40
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
## Concepts
|
|
@@ -75,17 +75,17 @@ export const projectResource = (ctx: BasicContext<BasicConfig>) =>
|
|
|
75
75
|
### CRUD in a handler
|
|
76
76
|
|
|
77
77
|
A read is addressed by an id **or** by criteria; a write takes the record, with its id inside it.
|
|
78
|
-
The organization is keyed by `entityId`, which a server handler takes from `
|
|
78
|
+
The organization is keyed by `entityId`, which a server handler takes from `makeEntityScope(req).requireEntityKey()`
|
|
79
79
|
(`@owlmeans/auth-common`), never from the token or the body.
|
|
80
80
|
|
|
81
81
|
```ts
|
|
82
|
-
import {
|
|
82
|
+
import { makeEntityScope } from '@owlmeans/auth-common'
|
|
83
83
|
import type { AbstractRequest } from '@owlmeans/entrypoint'
|
|
84
84
|
import { MisshapedRecord, UnknownRecordError } from '@owlmeans/resource'
|
|
85
85
|
import type { Resource } from '@owlmeans/resource'
|
|
86
86
|
|
|
87
87
|
export const handleCreateProject = async (req: AbstractRequest, ctx: Context) => {
|
|
88
|
-
const entityId =
|
|
88
|
+
const entityId = makeEntityScope(req).requireEntityKey()
|
|
89
89
|
const { alias } = req.body as { alias?: string }
|
|
90
90
|
if (alias == null || alias.trim() === '') {
|
|
91
91
|
throw new MisshapedRecord('alias-required')
|
|
@@ -96,7 +96,7 @@ export const handleCreateProject = async (req: AbstractRequest, ctx: Context) =>
|
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
export const handleGetProject = async (req: AbstractRequest, ctx: Context) => {
|
|
99
|
-
const entityId =
|
|
99
|
+
const entityId = makeEntityScope(req).requireEntityKey()
|
|
100
100
|
const { alias } = req.params as { alias: string }
|
|
101
101
|
|
|
102
102
|
// One record by several fields is one call — get() throws UnknownRecordError on a miss
|
|
@@ -104,7 +104,7 @@ export const handleGetProject = async (req: AbstractRequest, ctx: Context) => {
|
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
export const handleRenameProject = async (req: AbstractRequest, ctx: Context) => {
|
|
107
|
-
const entityId =
|
|
107
|
+
const entityId = makeEntityScope(req).requireEntityKey()
|
|
108
108
|
const { id } = req.params as { id: string }
|
|
109
109
|
const project = await projectResource(ctx).load(id)
|
|
110
110
|
if (project == null || project.entityId !== entityId) {
|
|
@@ -131,7 +131,7 @@ export const handleDestroyProject = async (req: AbstractRequest, ctx: Context) =
|
|
|
131
131
|
import type { Criteria, ListQuery, ListResult } from '@owlmeans/resource'
|
|
132
132
|
|
|
133
133
|
export const handleListProjects = async (req: AbstractRequest, ctx: Context) => {
|
|
134
|
-
const entityId =
|
|
134
|
+
const entityId = makeEntityScope(req).requireEntityKey()
|
|
135
135
|
const { where, sort, page, size } = req.query as ListQuery<ProjectRecord>
|
|
136
136
|
|
|
137
137
|
const criteria: Criteria<ProjectRecord> = {
|
|
@@ -174,15 +174,15 @@ Client state hooks take the same `Criteria<T>`.
|
|
|
174
174
|
|
|
175
175
|
```ts
|
|
176
176
|
import { useStoreList } from '@owlmeans/client'
|
|
177
|
-
import {
|
|
177
|
+
import { recordQueryHelper } from '@owlmeans/resource'
|
|
178
178
|
import type { Criteria } from '@owlmeans/resource'
|
|
179
179
|
|
|
180
180
|
const open: Criteria<StoryRecord> = { status: ['open', 'review'], archivedAt: null, assignee: undefined }
|
|
181
181
|
|
|
182
|
-
filterRecords(stories, open)
|
|
183
|
-
firstMatch(stories, open, { sort: [{ field: 'updatedAt', order: 'desc' }] })
|
|
184
|
-
applyQuery(stories, open, { sort: ['title'], page: 1, size: 10 }) // a full ListResult
|
|
185
|
-
stories.some(story => matchCriteria(story, { priority: { $gte: 3 } }))
|
|
182
|
+
recordQueryHelper.filterRecords(stories, open) // every match, insertion order
|
|
183
|
+
recordQueryHelper.firstMatch(stories, open, { sort: [{ field: 'updatedAt', order: 'desc' }] })
|
|
184
|
+
recordQueryHelper.applyQuery(stories, open, { sort: ['title'], page: 1, size: 10 }) // a full ListResult
|
|
185
|
+
stories.some(story => recordQueryHelper.matchCriteria(story, { priority: { $gte: 3 } }))
|
|
186
186
|
|
|
187
187
|
// Web state (hook from @owlmeans/client) — the query is the same vocabulary
|
|
188
188
|
export const useStoryList = (query: Criteria<StoryRecord> = {}) =>
|
|
@@ -320,11 +320,12 @@ throws `UnsupportedArgumentError('page-without-size')`.
|
|
|
320
320
|
|
|
321
321
|
| Symbol | Kind | Purpose |
|
|
322
322
|
|---|---|---|
|
|
323
|
-
| `
|
|
324
|
-
| `
|
|
325
|
-
| `
|
|
326
|
-
| `
|
|
327
|
-
| `
|
|
323
|
+
| `recordQueryHelper` (`createRecordQueryHelper()`, `RecordQueryHelper`) | helper | the in-memory criteria engine below |
|
|
324
|
+
| `recordQueryHelper.matchCriteria(record, where?)` | member | does one record satisfy the criteria |
|
|
325
|
+
| `recordQueryHelper.filterRecords(records, where?)` | member | every match, in insertion order |
|
|
326
|
+
| `recordQueryHelper.sortRecords(records, sort?)` | member | a sorted copy |
|
|
327
|
+
| `recordQueryHelper.firstMatch(records, where?, { sort }?)` | member | the record `load(where)` returns |
|
|
328
|
+
| `recordQueryHelper.applyQuery(records, where?, opts?)` | member | filter, sort and page into a `ListResult` |
|
|
328
329
|
| `createListSchema(schema)` | function | AJV `JSONSchemaType<ListResult<T>>` for a record schema |
|
|
329
330
|
| `filterObject(obj, keep?)` | function | drop null/undefined properties, keeping names in `keep` |
|
|
330
331
|
| `createDbService(alias, override, init?)` | function | base for `ResourceDbService` implementations; `name()` resolves `config.schema ?? config.alias ?? service.alias` |
|
|
@@ -381,7 +382,7 @@ durable ledger, and make `run` atomic with the ledger write where the database a
|
|
|
381
382
|
detects an edit.
|
|
382
383
|
- Install `@noble/hashes` and `@scure/base` alongside this package when you load
|
|
383
384
|
`createMigrationRegistry` or `runMigrations`; install peer `ajv` when you use `createListSchema`.
|
|
384
|
-
- Scope organization data by `entityId` from `
|
|
385
|
+
- Scope organization data by `entityId` from `makeEntityScope(req).requireEntityKey()`, never by an id taken from the
|
|
385
386
|
wire.
|
|
386
387
|
|
|
387
388
|
## Related packages
|
|
@@ -403,7 +404,7 @@ This package ships embedded agent skills under `agent-meta/`. After installing y
|
|
|
403
404
|
your project's skill store (`.agents/skills/`):
|
|
404
405
|
|
|
405
406
|
```sh
|
|
406
|
-
npx @owlmeans/agent-skills@^0.1.18-rc.
|
|
407
|
+
npx @owlmeans/agent-skills@^0.1.18-rc.49
|
|
407
408
|
```
|
|
408
409
|
|
|
409
410
|
The embedded files are version-matched to this package release. Do not edit them
|
package/agent-meta/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"package": "@owlmeans/resource",
|
|
4
|
-
"version": "0.1.18-rc.
|
|
5
|
-
"generatedAt": "2026-10-
|
|
4
|
+
"version": "0.1.18-rc.40",
|
|
5
|
+
"generatedAt": "2026-10-05T21:03:06.379Z",
|
|
6
6
|
"canonicalRepo": "https://github.com/owlmeans/common",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
@@ -8,7 +8,7 @@ user-invocable: false
|
|
|
8
8
|
# @owlmeans/resource
|
|
9
9
|
|
|
10
10
|
**Layer:** Core
|
|
11
|
-
**Install:** `"@owlmeans/resource": "^0.1.18-rc.
|
|
11
|
+
**Install:** `"@owlmeans/resource": "^0.1.18-rc.40"` in `dependencies`
|
|
12
12
|
|
|
13
13
|
## Key Exports
|
|
14
14
|
|
|
@@ -19,7 +19,7 @@ user-invocable: false
|
|
|
19
19
|
| `Criteria<T>`, `FieldCriteria<V>`, `FieldOperators<V>` | The query language, typed by the record — a mistyped field is a compile error. |
|
|
20
20
|
| `Sort<T>`, `SortField<T>`, `FirstOptions<T>`, `ListOptions<T>`, `ListQuery<T>`, `ListResult<T>` | Ordering, the read options, the one-object form an API carries over the wire, and the answer shape `{ items, total, page?, size? }`. |
|
|
21
21
|
| `WriteOptions`, `Ttl` | `{ ttl }` on `create`/`update`/`save`; seconds from now, or the instant to expire at. Backends without expiry refuse it. |
|
|
22
|
-
| `matchCriteria`, `filterRecords`, `sortRecords`, `firstMatch`, `applyQuery` | The shared in-memory engine — one criteria object means the same thing in a browser store as it does in SQL. |
|
|
22
|
+
| `recordQueryHelper` — `matchCriteria`, `filterRecords`, `sortRecords`, `firstMatch`, `applyQuery` | The shared in-memory engine — one criteria object means the same thing in a browser store as it does in SQL. |
|
|
23
23
|
| `PubSubResource<T>`, `WatchableResource<T>`, `StreamResource<T>`, `LockableResource<T>` | **Optional capabilities**, composed into a concrete resource interface alongside `Resource<T>`. `SubscribeOptions` (`{ channel, once, ttl }`) and `Unsubscribe` come with the first two. |
|
|
24
24
|
| `MigratableResource<Tx, Self>` | **Optional migration capability** — `migration(name, apply, stage?)` (chainable) + `migrations()`. Optional the way pub/sub is on redis resources: mongo and postgres extend it, backends with nothing to migrate don't. |
|
|
25
25
|
| `Migration`, `MigrationRegistry`, `MigrationStore`, `MigrationReport`, `MigrationRunOptions` | The framework's contracts. `MigrationStore` is the *migration register* a database implements to track applied migrations (`ensure`/`applied`/`baseline`/`run`). |
|
|
@@ -150,17 +150,17 @@ result set. `page` without `size` against an unpaged backend throws
|
|
|
150
150
|
|
|
151
151
|
### The shared in-memory engine
|
|
152
152
|
|
|
153
|
-
Every store without a query engine of its own — redis after its SCAN, the client and static
|
|
154
|
-
|
|
155
|
-
selects the same records when a screen applies it locally:
|
|
153
|
+
Every store without a query engine of its own — redis after its SCAN, the client and static stores,
|
|
154
|
+
state — filters through the same helper, `recordQueryHelper`, so a criteria object written for an
|
|
155
|
+
endpoint selects the same records when a screen applies it locally:
|
|
156
156
|
|
|
157
|
-
|
|
|
157
|
+
| Member | Answers |
|
|
158
158
|
|---|---|
|
|
159
|
-
| `matchCriteria(record, where)` | does this one record match |
|
|
160
|
-
| `filterRecords(records, where)` | every match, in insertion order |
|
|
161
|
-
| `sortRecords(records, sort)` | a sorted copy |
|
|
162
|
-
| `firstMatch(records, where, { sort })` | the record `load(where)` / `get(where)` return |
|
|
163
|
-
| `applyQuery(records, where, opts)` | the whole `ListResult` — filter, sort and page in one call |
|
|
159
|
+
| `recordQueryHelper.matchCriteria(record, where)` | does this one record match |
|
|
160
|
+
| `recordQueryHelper.filterRecords(records, where)` | every match, in insertion order |
|
|
161
|
+
| `recordQueryHelper.sortRecords(records, sort)` | a sorted copy |
|
|
162
|
+
| `recordQueryHelper.firstMatch(records, where, { sort })` | the record `load(where)` / `get(where)` return |
|
|
163
|
+
| `recordQueryHelper.applyQuery(records, where, opts)` | the whole `ListResult` — filter, sort and page in one call |
|
|
164
164
|
|
|
165
165
|
Reach for them when implementing a backend, and when narrowing a list already in hand rather than
|
|
166
166
|
going back to the store.
|
|
@@ -190,10 +190,10 @@ Adding migration support to a new database backend:
|
|
|
190
190
|
1. Extend the concrete resource interface with `MigratableResource<YourTx>` and design the
|
|
191
191
|
`Tx` façade a migration receives.
|
|
192
192
|
2. Keep registrations in a **module-scope declaration keyed by alias** — the shape mongo and
|
|
193
|
-
postgres both expose as `
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
data transformations.
|
|
193
|
+
postgres both expose as `mongoDeclarationHelper` / `pgDeclarationHelper` with
|
|
194
|
+
`.getDeclaration(alias)` / `.resetDeclarations(alias?)`. A maker that runs more than once for the
|
|
195
|
+
same alias (a custom maker, a test) then re-declares the same entries and loses nothing, where a
|
|
196
|
+
registry held on the resource object would silently lose data transformations.
|
|
197
197
|
3. Implement `MigrationStore` over a durable ledger when the database can store one
|
|
198
198
|
(`_owlmeans_migrations` in both mongo and postgres); a store-less backend may run
|
|
199
199
|
migrations unconditionally if its bodies are self-checking.
|
package/build/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export * from './utils.js';
|
|
|
4
4
|
export * from './service.js';
|
|
5
5
|
export * from './helper.js';
|
|
6
6
|
export * from './utils/query.js';
|
|
7
|
+
export type * from './utils/query/types.js';
|
|
7
8
|
export * from './migration.js';
|
|
8
9
|
export type * from './types.js';
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,mBAAmB,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAChC,mBAAmB,wBAAwB,CAAA;AAC3C,cAAc,gBAAgB,CAAA;AAC9B,mBAAmB,YAAY,CAAA"}
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA;AAEhC,cAAc,gBAAgB,CAAA"}
|
package/build/types.d.ts
CHANGED
|
@@ -110,7 +110,9 @@ export interface Resource<T extends ResourceRecord> extends BasicResource {
|
|
|
110
110
|
/** Bulk delete. Refuses an empty criteria object rather than emptying the resource. */
|
|
111
111
|
purge(where: Criteria<T>): Promise<number>;
|
|
112
112
|
}
|
|
113
|
-
export
|
|
113
|
+
export interface Unsubscribe {
|
|
114
|
+
(): Promise<void>;
|
|
115
|
+
}
|
|
114
116
|
export interface SubscribeOptions {
|
|
115
117
|
channel?: string;
|
|
116
118
|
once?: boolean;
|
package/build/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"name.d.ts","sourceRoot":"","sources":["../../src/utils/name.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"name.d.ts","sourceRoot":"","sources":["../../src/utils/name.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE/E,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,YAC9D,CAAC,WAAW,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,QAAQ,KAClE,MAAwD,CAAA"}
|
package/build/utils/name.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"name.js","sourceRoot":"","sources":["../../src/utils/name.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,QAAW,EAAE,OAAoC,EAAE,MAAgB,
|
|
1
|
+
{"version":3,"file":"name.js","sourceRoot":"","sources":["../../src/utils/name.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,QAAW,EAAE,OAAoC,EAAE,MAAgB,EAC3D,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { Criteria, ListOptions, ListResult, ResourceRecord, Sort } from '../../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* In-memory evaluation of `Criteria<any>` — the engine every store without a query language of its
|
|
4
|
+
* own (state, static, client, redis) answers a criteria object through.
|
|
5
|
+
*/
|
|
6
|
+
export interface RecordQueryHelper {
|
|
7
|
+
/**
|
|
8
|
+
* Whether one record satisfies the criteria.
|
|
9
|
+
*
|
|
10
|
+
* `undefined` as a criteria value is skipped rather than compared — it is what an optional filter
|
|
11
|
+
* looks like when nothing was chosen, and treating it as "must be undefined" makes an unset
|
|
12
|
+
* dropdown filter the list down to nothing.
|
|
13
|
+
*
|
|
14
|
+
* @throws {UnsupportedArgumentError} on an unknown operator.
|
|
15
|
+
*/
|
|
16
|
+
matchCriteria: <T extends ResourceRecord>(record: T, criteria?: Criteria<any>) => boolean;
|
|
17
|
+
/** Every record the criteria accepts, in insertion order. */
|
|
18
|
+
filterRecords: <T extends ResourceRecord>(records: T[], criteria?: Criteria<any>) => T[];
|
|
19
|
+
/**
|
|
20
|
+
* Sort a copy. A bare field name is ascending; `{ field, order: 'desc' }` reverses it — the same
|
|
21
|
+
* meaning every backend gives it, so a sort written for one store orders the same way against
|
|
22
|
+
* another.
|
|
23
|
+
*/
|
|
24
|
+
sortRecords: <T extends ResourceRecord>(records: T[], sort?: Sort<any>[]) => T[];
|
|
25
|
+
/** The first record the criteria accepts, honouring the sort. */
|
|
26
|
+
firstMatch: <T extends ResourceRecord>(records: T[], where?: Criteria<any>, opts?: {
|
|
27
|
+
sort?: Sort<any>[];
|
|
28
|
+
}) => T | null;
|
|
29
|
+
/**
|
|
30
|
+
* Filter, sort and page an in-memory record set into the shape every resource answers with.
|
|
31
|
+
* `size` is opt-in: an in-memory store returns everything when none is asked for.
|
|
32
|
+
*/
|
|
33
|
+
applyQuery: <T extends ResourceRecord>(records: T[], where?: Criteria<any>, opts?: ListOptions<any>) => ListResult<T>;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/query/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAE7F;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;;;OAQG;IACH,aAAa,EAAE,CAAC,CAAC,SAAS,cAAc,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,OAAO,CAAA;IACzF,6DAA6D;IAC7D,aAAa,EAAE,CAAC,CAAC,SAAS,cAAc,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAA;IACxF;;;;OAIG;IACH,WAAW,EAAE,CAAC,CAAC,SAAS,cAAc,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,EAAE,CAAA;IAChF,iEAAiE;IACjE,UAAU,EAAE,CAAC,CAAC,SAAS,cAAc,EACnC,OAAO,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;KAAE,KAC/D,CAAC,GAAG,IAAI,CAAA;IACb;;;OAGG;IACH,UAAU,EAAE,CAAC,CAAC,SAAS,cAAc,EACnC,OAAO,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,KACzD,UAAU,CAAC,CAAC,CAAC,CAAA;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/utils/query/types.ts"],"names":[],"mappings":""}
|
package/build/utils/query.d.ts
CHANGED
|
@@ -1,29 +1,17 @@
|
|
|
1
1
|
import type { Criteria, ListOptions, ListResult, ResourceRecord, Sort } from '../types.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
* looks like when nothing was chosen, and treating it as "must be undefined" makes an unset
|
|
7
|
-
* dropdown filter the list down to nothing.
|
|
8
|
-
*
|
|
9
|
-
* @throws {UnsupportedArgumentError} on an unknown operator.
|
|
10
|
-
*/
|
|
2
|
+
import type { RecordQueryHelper } from './query/types.js';
|
|
3
|
+
export declare const createRecordQueryHelper: () => RecordQueryHelper;
|
|
4
|
+
export declare const recordQueryHelper: RecordQueryHelper;
|
|
5
|
+
/** @deprecated compat:factory-refactor — use `recordQueryHelper.matchCriteria(…)` */
|
|
11
6
|
export declare const matchCriteria: <T extends ResourceRecord>(record: T, criteria?: Criteria<any>) => boolean;
|
|
12
|
-
/**
|
|
7
|
+
/** @deprecated compat:factory-refactor — use `recordQueryHelper.filterRecords(…)` */
|
|
13
8
|
export declare const filterRecords: <T extends ResourceRecord>(records: T[], criteria?: Criteria<any>) => T[];
|
|
14
|
-
/**
|
|
15
|
-
* Sort a copy. A bare field name is ascending; `{ field, order: 'desc' }` reverses it — the same
|
|
16
|
-
* meaning every backend gives it, so a sort written for one store orders the same way against
|
|
17
|
-
* another.
|
|
18
|
-
*/
|
|
9
|
+
/** @deprecated compat:factory-refactor — use `recordQueryHelper.sortRecords(…)` */
|
|
19
10
|
export declare const sortRecords: <T extends ResourceRecord>(records: T[], sort?: Sort<any>[]) => T[];
|
|
20
|
-
/**
|
|
11
|
+
/** @deprecated compat:factory-refactor — use `recordQueryHelper.firstMatch(…)` */
|
|
21
12
|
export declare const firstMatch: <T extends ResourceRecord>(records: T[], where?: Criteria<any>, opts?: {
|
|
22
13
|
sort?: Sort<any>[];
|
|
23
14
|
}) => T | null;
|
|
24
|
-
/**
|
|
25
|
-
* Filter, sort and page an in-memory record set into the shape every resource answers with.
|
|
26
|
-
* `size` is opt-in: an in-memory store returns everything when none is asked for.
|
|
27
|
-
*/
|
|
15
|
+
/** @deprecated compat:factory-refactor — use `recordQueryHelper.applyQuery(…)` */
|
|
28
16
|
export declare const applyQuery: <T extends ResourceRecord>(records: T[], where?: Criteria<any>, opts?: ListOptions<any>) => ListResult<T>;
|
|
29
17
|
//# sourceMappingURL=query.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/utils/query.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/utils/query.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAE1F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AA8JzD,eAAO,MAAM,uBAAuB,QAAO,iBAmG1C,CAAA;AAED,eAAO,MAAM,iBAAiB,mBAA4B,CAAA;AAE1D,qFAAqF;AACrF,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,cAAc,UAAU,CAAC,aAAa,QAAQ,CAAC,GAAG,CAAC,KAAG,OAC3C,CAAA;AAEnD,qFAAqF;AACrF,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,cAAc,WAAW,CAAC,EAAE,aAAa,QAAQ,CAAC,GAAG,CAAC,KAAG,CAAC,EAC9C,CAAA;AAEpD,mFAAmF;AACnF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,cAAc,WAAW,CAAC,EAAE,SAAS,IAAI,CAAC,GAAG,CAAC,EAAE,KAAG,CAAC,EAC5C,CAAA;AAE9C,kFAAkF;AAClF,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,cAAc,WACxC,CAAC,EAAE,UAAU,QAAQ,CAAC,GAAG,CAAC,SAAS;IAAE,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;CAAE,KACjE,CAAC,GAAG,IAA0D,CAAA;AAEjE,kFAAkF;AAClF,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,cAAc,WACxC,CAAC,EAAE,UAAU,QAAQ,CAAC,GAAG,CAAC,SAAS,WAAW,CAAC,GAAG,CAAC,KAC3D,UAAU,CAAC,CAAC,CAAuD,CAAA"}
|
package/build/utils/query.js
CHANGED
|
@@ -159,112 +159,106 @@ const applyOperators = (value, spec) => {
|
|
|
159
159
|
}
|
|
160
160
|
return true;
|
|
161
161
|
};
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
* looks like when nothing was chosen, and treating it as "must be undefined" makes an unset
|
|
167
|
-
* dropdown filter the list down to nothing.
|
|
168
|
-
*
|
|
169
|
-
* @throws {UnsupportedArgumentError} on an unknown operator.
|
|
170
|
-
*/
|
|
171
|
-
export const matchCriteria = (record, criteria) => {
|
|
172
|
-
for (const [key, raw] of Object.entries(criteria ?? {})) {
|
|
173
|
-
if (raw === undefined) {
|
|
174
|
-
continue;
|
|
175
|
-
}
|
|
176
|
-
if (key === '$and' || key === '$or') {
|
|
177
|
-
const parts = (Array.isArray(raw) ? raw : [raw]);
|
|
178
|
-
if (parts.length < 1)
|
|
162
|
+
export const createRecordQueryHelper = () => {
|
|
163
|
+
const matchCriteria = (record, criteria) => {
|
|
164
|
+
for (const [key, raw] of Object.entries(criteria ?? {})) {
|
|
165
|
+
if (raw === undefined) {
|
|
179
166
|
continue;
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
167
|
+
}
|
|
168
|
+
if (key === '$and' || key === '$or') {
|
|
169
|
+
const parts = (Array.isArray(raw) ? raw : [raw]);
|
|
170
|
+
if (parts.length < 1)
|
|
171
|
+
continue;
|
|
172
|
+
const matched = key === '$and'
|
|
173
|
+
? parts.every(part => matchCriteria(record, part))
|
|
174
|
+
: parts.some(part => matchCriteria(record, part));
|
|
175
|
+
if (!matched)
|
|
176
|
+
return false;
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
if (key === '$not') {
|
|
180
|
+
if (matchCriteria(record, raw))
|
|
181
|
+
return false;
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
const value = reach(record, key.split('.'));
|
|
185
|
+
if (raw === null) {
|
|
186
|
+
if (value != null)
|
|
187
|
+
return false;
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
if (isOperatorSpec(raw)) {
|
|
191
|
+
if (!applyOperators(value, raw))
|
|
192
|
+
return false;
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
if (Array.isArray(raw)) {
|
|
196
|
+
/**
|
|
197
|
+
* A bare array means "any of these", exactly as it does against a relational store.
|
|
198
|
+
* Exact array equality stays reachable as `{ $eq: [...] }`.
|
|
199
|
+
*/
|
|
200
|
+
if (!inList(value, raw))
|
|
201
|
+
return false;
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
if (!equal(value, raw))
|
|
200
205
|
return false;
|
|
201
|
-
continue;
|
|
202
206
|
}
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
207
|
+
return true;
|
|
208
|
+
};
|
|
209
|
+
const filterRecords = (records, criteria) => criteria == null || Object.keys(criteria).length < 1
|
|
210
|
+
? [...records]
|
|
211
|
+
: records.filter(record => matchCriteria(record, criteria));
|
|
212
|
+
const sortRecords = (records, sort) => {
|
|
213
|
+
if (sort == null || sort.length < 1) {
|
|
214
|
+
return [...records];
|
|
211
215
|
}
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
/**
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
if (b == null)
|
|
243
|
-
return -1;
|
|
244
|
-
if (a < b)
|
|
245
|
-
return desc ? 1 : -1;
|
|
246
|
-
if (a > b)
|
|
247
|
-
return desc ? -1 : 1;
|
|
216
|
+
const rules = sort.map(entry => typeof entry === 'string'
|
|
217
|
+
? { field: entry, desc: false }
|
|
218
|
+
: { field: entry.field, desc: entry.order === 'desc' });
|
|
219
|
+
return [...records].sort((left, right) => {
|
|
220
|
+
for (const { field, desc } of rules) {
|
|
221
|
+
const a = comparable(reach(left, field.split('.')));
|
|
222
|
+
const b = comparable(reach(right, field.split('.')));
|
|
223
|
+
if (a == null && b == null)
|
|
224
|
+
continue;
|
|
225
|
+
/** An absent value sorts last ascending, which is where a reader expects "no value". */
|
|
226
|
+
if (a == null)
|
|
227
|
+
return 1;
|
|
228
|
+
if (b == null)
|
|
229
|
+
return -1;
|
|
230
|
+
if (a < b)
|
|
231
|
+
return desc ? 1 : -1;
|
|
232
|
+
if (a > b)
|
|
233
|
+
return desc ? -1 : 1;
|
|
234
|
+
}
|
|
235
|
+
return 0;
|
|
236
|
+
});
|
|
237
|
+
};
|
|
238
|
+
const firstMatch = (records, where, opts) => sortRecords(filterRecords(records, where), opts?.sort)[0] ?? null;
|
|
239
|
+
const applyQuery = (records, where, opts) => {
|
|
240
|
+
const matched = sortRecords(filterRecords(records, where), opts?.sort);
|
|
241
|
+
const total = matched.length;
|
|
242
|
+
// `size: 0` is the explicit ask for everything — the same meaning the paged backends give it, so
|
|
243
|
+
// one query object means one thing whichever store answers it. An omitted size is unpaged here.
|
|
244
|
+
if (opts?.size == null || opts.size === 0) {
|
|
245
|
+
return { items: matched, total };
|
|
248
246
|
}
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
};
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
/**
|
|
255
|
-
* Filter, sort and page an in-memory record set into the shape every resource answers with.
|
|
256
|
-
* `size` is opt-in: an in-memory store returns everything when none is asked for.
|
|
257
|
-
*/
|
|
258
|
-
export const applyQuery = (records, where, opts) => {
|
|
259
|
-
const matched = sortRecords(filterRecords(records, where), opts?.sort);
|
|
260
|
-
const total = matched.length;
|
|
261
|
-
// `size: 0` is the explicit ask for everything — the same meaning the paged backends give it, so
|
|
262
|
-
// one query object means one thing whichever store answers it. An omitted size is unpaged here.
|
|
263
|
-
if (opts?.size == null || opts.size === 0) {
|
|
264
|
-
return { items: matched, total };
|
|
265
|
-
}
|
|
266
|
-
const page = opts.page ?? 0;
|
|
267
|
-
const from = page * opts.size;
|
|
268
|
-
return { items: matched.slice(from, from + opts.size), total, page, size: opts.size };
|
|
247
|
+
const page = opts.page ?? 0;
|
|
248
|
+
const from = page * opts.size;
|
|
249
|
+
return { items: matched.slice(from, from + opts.size), total, page, size: opts.size };
|
|
250
|
+
};
|
|
251
|
+
return { matchCriteria, filterRecords, sortRecords, firstMatch, applyQuery };
|
|
269
252
|
};
|
|
253
|
+
export const recordQueryHelper = createRecordQueryHelper();
|
|
254
|
+
/** @deprecated compat:factory-refactor — use `recordQueryHelper.matchCriteria(…)` */
|
|
255
|
+
export const matchCriteria = (record, criteria) => recordQueryHelper.matchCriteria(record, criteria);
|
|
256
|
+
/** @deprecated compat:factory-refactor — use `recordQueryHelper.filterRecords(…)` */
|
|
257
|
+
export const filterRecords = (records, criteria) => recordQueryHelper.filterRecords(records, criteria);
|
|
258
|
+
/** @deprecated compat:factory-refactor — use `recordQueryHelper.sortRecords(…)` */
|
|
259
|
+
export const sortRecords = (records, sort) => recordQueryHelper.sortRecords(records, sort);
|
|
260
|
+
/** @deprecated compat:factory-refactor — use `recordQueryHelper.firstMatch(…)` */
|
|
261
|
+
export const firstMatch = (records, where, opts) => recordQueryHelper.firstMatch(records, where, opts);
|
|
262
|
+
/** @deprecated compat:factory-refactor — use `recordQueryHelper.applyQuery(…)` */
|
|
263
|
+
export const applyQuery = (records, where, opts) => recordQueryHelper.applyQuery(records, where, opts);
|
|
270
264
|
//# sourceMappingURL=query.js.map
|
package/build/utils/query.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/utils/query.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/utils/query.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@owlmeans/resource",
|
|
3
|
-
"version": "0.1.18-rc.
|
|
3
|
+
"version": "0.1.18-rc.40",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
}
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@owlmeans/context": "^0.1.18-rc.
|
|
26
|
-
"@owlmeans/error": "^0.1.18-rc.
|
|
25
|
+
"@owlmeans/context": "^0.1.18-rc.34",
|
|
26
|
+
"@owlmeans/error": "^0.1.18-rc.38"
|
|
27
27
|
},
|
|
28
28
|
"peerDependencies": {
|
|
29
29
|
"ajv": "*"
|
package/src/index.ts
CHANGED
package/src/types.ts
CHANGED
|
@@ -116,7 +116,7 @@ export interface Resource<T extends ResourceRecord> extends BasicResource {
|
|
|
116
116
|
purge(where: Criteria<T>): Promise<number>
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
-
export
|
|
119
|
+
export interface Unsubscribe { (): Promise<void> }
|
|
120
120
|
|
|
121
121
|
export interface SubscribeOptions {
|
|
122
122
|
channel?: string
|
package/src/utils/name.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {Context, Config, ResourceDbService, DbConfig} from '../types.js'
|
|
1
|
+
import type { Context, Config, ResourceDbService, DbConfig } from '../types.js'
|
|
2
2
|
|
|
3
3
|
export const dbName = <C extends Config, T extends Context<C> = Context<C>>(
|
|
4
4
|
_context: T, service: ResourceDbService<any, any>, config: DbConfig
|
|
5
|
-
) => config.schema ?? config.alias ?? service.alias
|
|
5
|
+
): string => config.schema ?? config.alias ?? service.alias
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Criteria, ListOptions, ListResult, ResourceRecord, Sort } from '../../types.js'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* In-memory evaluation of `Criteria<any>` — the engine every store without a query language of its
|
|
5
|
+
* own (state, static, client, redis) answers a criteria object through.
|
|
6
|
+
*/
|
|
7
|
+
export interface RecordQueryHelper {
|
|
8
|
+
/**
|
|
9
|
+
* Whether one record satisfies the criteria.
|
|
10
|
+
*
|
|
11
|
+
* `undefined` as a criteria value is skipped rather than compared — it is what an optional filter
|
|
12
|
+
* looks like when nothing was chosen, and treating it as "must be undefined" makes an unset
|
|
13
|
+
* dropdown filter the list down to nothing.
|
|
14
|
+
*
|
|
15
|
+
* @throws {UnsupportedArgumentError} on an unknown operator.
|
|
16
|
+
*/
|
|
17
|
+
matchCriteria: <T extends ResourceRecord>(record: T, criteria?: Criteria<any>) => boolean
|
|
18
|
+
/** Every record the criteria accepts, in insertion order. */
|
|
19
|
+
filterRecords: <T extends ResourceRecord>(records: T[], criteria?: Criteria<any>) => T[]
|
|
20
|
+
/**
|
|
21
|
+
* Sort a copy. A bare field name is ascending; `{ field, order: 'desc' }` reverses it — the same
|
|
22
|
+
* meaning every backend gives it, so a sort written for one store orders the same way against
|
|
23
|
+
* another.
|
|
24
|
+
*/
|
|
25
|
+
sortRecords: <T extends ResourceRecord>(records: T[], sort?: Sort<any>[]) => T[]
|
|
26
|
+
/** The first record the criteria accepts, honouring the sort. */
|
|
27
|
+
firstMatch: <T extends ResourceRecord>(
|
|
28
|
+
records: T[], where?: Criteria<any>, opts?: { sort?: Sort<any>[] }
|
|
29
|
+
) => T | null
|
|
30
|
+
/**
|
|
31
|
+
* Filter, sort and page an in-memory record set into the shape every resource answers with.
|
|
32
|
+
* `size` is opt-in: an in-memory store returns everything when none is asked for.
|
|
33
|
+
*/
|
|
34
|
+
applyQuery: <T extends ResourceRecord>(
|
|
35
|
+
records: T[], where?: Criteria<any>, opts?: ListOptions<any>
|
|
36
|
+
) => ListResult<T>
|
|
37
|
+
}
|
package/src/utils/query.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { UnsupportedArgumentError } from '../errors.js'
|
|
2
2
|
import type { Criteria, ListOptions, ListResult, ResourceRecord, Sort } from '../types.js'
|
|
3
3
|
import { COMPARISON } from './consts.local.js'
|
|
4
|
+
import type { RecordQueryHelper } from './query/types.js'
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* In-memory evaluation of `Criteria<any>`.
|
|
@@ -158,119 +159,127 @@ const applyOperators = (value: unknown, spec: Record<string, unknown>): boolean
|
|
|
158
159
|
return true
|
|
159
160
|
}
|
|
160
161
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
*/
|
|
170
|
-
export const matchCriteria = <T extends ResourceRecord>(
|
|
171
|
-
record: T, criteria?: Criteria<any>
|
|
172
|
-
): boolean => {
|
|
173
|
-
for (const [key, raw] of Object.entries(criteria ?? {})) {
|
|
174
|
-
if (raw === undefined) {
|
|
175
|
-
continue
|
|
176
|
-
}
|
|
162
|
+
export const createRecordQueryHelper = (): RecordQueryHelper => {
|
|
163
|
+
const matchCriteria = <T extends ResourceRecord>(
|
|
164
|
+
record: T, criteria?: Criteria<any>
|
|
165
|
+
): boolean => {
|
|
166
|
+
for (const [key, raw] of Object.entries(criteria ?? {})) {
|
|
167
|
+
if (raw === undefined) {
|
|
168
|
+
continue
|
|
169
|
+
}
|
|
177
170
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
171
|
+
if (key === '$and' || key === '$or') {
|
|
172
|
+
const parts = (Array.isArray(raw) ? raw : [raw]) as Criteria<any>[]
|
|
173
|
+
if (parts.length < 1) continue
|
|
174
|
+
const matched = key === '$and'
|
|
175
|
+
? parts.every(part => matchCriteria(record, part))
|
|
176
|
+
: parts.some(part => matchCriteria(record, part))
|
|
177
|
+
if (!matched) return false
|
|
178
|
+
continue
|
|
179
|
+
}
|
|
180
|
+
if (key === '$not') {
|
|
181
|
+
if (matchCriteria(record, raw as Criteria<any>)) return false
|
|
182
|
+
continue
|
|
183
|
+
}
|
|
191
184
|
|
|
192
|
-
|
|
185
|
+
const value = reach(record, key.split('.'))
|
|
193
186
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
187
|
+
if (raw === null) {
|
|
188
|
+
if (value != null) return false
|
|
189
|
+
continue
|
|
190
|
+
}
|
|
191
|
+
if (isOperatorSpec(raw)) {
|
|
192
|
+
if (!applyOperators(value, raw as Record<string, unknown>)) return false
|
|
193
|
+
continue
|
|
194
|
+
}
|
|
195
|
+
if (Array.isArray(raw)) {
|
|
196
|
+
/**
|
|
197
|
+
* A bare array means "any of these", exactly as it does against a relational store.
|
|
198
|
+
* Exact array equality stays reachable as `{ $eq: [...] }`.
|
|
199
|
+
*/
|
|
200
|
+
if (!inList(value, raw)) return false
|
|
201
|
+
continue
|
|
202
|
+
}
|
|
203
|
+
if (!equal(value, raw)) return false
|
|
209
204
|
}
|
|
210
|
-
|
|
205
|
+
|
|
206
|
+
return true
|
|
211
207
|
}
|
|
212
208
|
|
|
213
|
-
|
|
214
|
-
|
|
209
|
+
const filterRecords = <T extends ResourceRecord>(
|
|
210
|
+
records: T[], criteria?: Criteria<any>
|
|
211
|
+
): T[] => criteria == null || Object.keys(criteria).length < 1
|
|
212
|
+
? [...records]
|
|
213
|
+
: records.filter(record => matchCriteria(record, criteria))
|
|
215
214
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
? [...records]
|
|
221
|
-
: records.filter(record => matchCriteria(record, criteria))
|
|
215
|
+
const sortRecords = <T extends ResourceRecord>(records: T[], sort?: Sort<any>[]): T[] => {
|
|
216
|
+
if (sort == null || sort.length < 1) {
|
|
217
|
+
return [...records]
|
|
218
|
+
}
|
|
222
219
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
220
|
+
const rules = sort.map(entry => typeof entry === 'string'
|
|
221
|
+
? { field: entry, desc: false }
|
|
222
|
+
: { field: entry.field, desc: entry.order === 'desc' })
|
|
223
|
+
|
|
224
|
+
return [...records].sort((left, right) => {
|
|
225
|
+
for (const { field, desc } of rules) {
|
|
226
|
+
const a = comparable(reach(left, field.split('.')))
|
|
227
|
+
const b = comparable(reach(right, field.split('.')))
|
|
228
|
+
if (a == null && b == null) continue
|
|
229
|
+
/** An absent value sorts last ascending, which is where a reader expects "no value". */
|
|
230
|
+
if (a == null) return 1
|
|
231
|
+
if (b == null) return -1
|
|
232
|
+
if ((a as never) < (b as never)) return desc ? 1 : -1
|
|
233
|
+
if ((a as never) > (b as never)) return desc ? -1 : 1
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
return 0
|
|
237
|
+
})
|
|
231
238
|
}
|
|
232
239
|
|
|
233
|
-
const
|
|
234
|
-
|
|
235
|
-
|
|
240
|
+
const firstMatch = <T extends ResourceRecord>(
|
|
241
|
+
records: T[], where?: Criteria<any>, opts?: { sort?: Sort<any>[] }
|
|
242
|
+
): T | null => sortRecords(filterRecords(records, where), opts?.sort)[0] ?? null
|
|
236
243
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
if ((a as never) > (b as never)) return desc ? -1 : 1
|
|
244
|
+
const applyQuery = <T extends ResourceRecord>(
|
|
245
|
+
records: T[], where?: Criteria<any>, opts?: ListOptions<any>
|
|
246
|
+
): ListResult<T> => {
|
|
247
|
+
const matched = sortRecords(filterRecords(records, where), opts?.sort)
|
|
248
|
+
const total = matched.length
|
|
249
|
+
// `size: 0` is the explicit ask for everything — the same meaning the paged backends give it, so
|
|
250
|
+
// one query object means one thing whichever store answers it. An omitted size is unpaged here.
|
|
251
|
+
if (opts?.size == null || opts.size === 0) {
|
|
252
|
+
return { items: matched, total }
|
|
247
253
|
}
|
|
254
|
+
const page = opts.page ?? 0
|
|
255
|
+
const from = page * opts.size
|
|
248
256
|
|
|
249
|
-
return
|
|
250
|
-
}
|
|
257
|
+
return { items: matched.slice(from, from + opts.size), total, page, size: opts.size }
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
return { matchCriteria, filterRecords, sortRecords, firstMatch, applyQuery }
|
|
251
261
|
}
|
|
252
262
|
|
|
253
|
-
|
|
263
|
+
export const recordQueryHelper = createRecordQueryHelper()
|
|
264
|
+
|
|
265
|
+
/** @deprecated compat:factory-refactor — use `recordQueryHelper.matchCriteria(…)` */
|
|
266
|
+
export const matchCriteria = <T extends ResourceRecord>(record: T, criteria?: Criteria<any>): boolean =>
|
|
267
|
+
recordQueryHelper.matchCriteria(record, criteria)
|
|
268
|
+
|
|
269
|
+
/** @deprecated compat:factory-refactor — use `recordQueryHelper.filterRecords(…)` */
|
|
270
|
+
export const filterRecords = <T extends ResourceRecord>(records: T[], criteria?: Criteria<any>): T[] =>
|
|
271
|
+
recordQueryHelper.filterRecords(records, criteria)
|
|
272
|
+
|
|
273
|
+
/** @deprecated compat:factory-refactor — use `recordQueryHelper.sortRecords(…)` */
|
|
274
|
+
export const sortRecords = <T extends ResourceRecord>(records: T[], sort?: Sort<any>[]): T[] =>
|
|
275
|
+
recordQueryHelper.sortRecords(records, sort)
|
|
276
|
+
|
|
277
|
+
/** @deprecated compat:factory-refactor — use `recordQueryHelper.firstMatch(…)` */
|
|
254
278
|
export const firstMatch = <T extends ResourceRecord>(
|
|
255
279
|
records: T[], where?: Criteria<any>, opts?: { sort?: Sort<any>[] }
|
|
256
|
-
): T | null =>
|
|
280
|
+
): T | null => recordQueryHelper.firstMatch(records, where, opts)
|
|
257
281
|
|
|
258
|
-
/**
|
|
259
|
-
* Filter, sort and page an in-memory record set into the shape every resource answers with.
|
|
260
|
-
* `size` is opt-in: an in-memory store returns everything when none is asked for.
|
|
261
|
-
*/
|
|
282
|
+
/** @deprecated compat:factory-refactor — use `recordQueryHelper.applyQuery(…)` */
|
|
262
283
|
export const applyQuery = <T extends ResourceRecord>(
|
|
263
284
|
records: T[], where?: Criteria<any>, opts?: ListOptions<any>
|
|
264
|
-
): ListResult<T> =>
|
|
265
|
-
const matched = sortRecords(filterRecords(records, where), opts?.sort)
|
|
266
|
-
const total = matched.length
|
|
267
|
-
// `size: 0` is the explicit ask for everything — the same meaning the paged backends give it, so
|
|
268
|
-
// one query object means one thing whichever store answers it. An omitted size is unpaged here.
|
|
269
|
-
if (opts?.size == null || opts.size === 0) {
|
|
270
|
-
return { items: matched, total }
|
|
271
|
-
}
|
|
272
|
-
const page = opts.page ?? 0
|
|
273
|
-
const from = page * opts.size
|
|
274
|
-
|
|
275
|
-
return { items: matched.slice(from, from + opts.size), total, page, size: opts.size }
|
|
276
|
-
}
|
|
285
|
+
): ListResult<T> => recordQueryHelper.applyQuery(records, where, opts)
|