ultimabase 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/README.md +4 -2
- package/dist/access.d.ts +62 -0
- package/dist/access.d.ts.map +1 -0
- package/dist/access.js +258 -0
- package/dist/adapter-errors.d.ts +43 -0
- package/dist/adapter-errors.d.ts.map +1 -0
- package/dist/adapter-errors.js +72 -0
- package/dist/adapter-json.d.ts +20 -0
- package/dist/adapter-json.d.ts.map +1 -0
- package/dist/adapter-json.js +2 -0
- package/dist/adapter-migrations.d.ts +90 -0
- package/dist/adapter-migrations.d.ts.map +1 -0
- package/dist/adapter-migrations.js +1 -0
- package/dist/adapter.d.ts +333 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/adapter.js +5 -0
- package/dist/aggregate.d.ts +31 -0
- package/dist/aggregate.d.ts.map +1 -0
- package/dist/aggregate.js +99 -0
- package/dist/app-internals.d.ts +10 -0
- package/dist/app-internals.d.ts.map +1 -0
- package/dist/app-internals.js +12 -0
- package/dist/app-options.d.ts +22 -0
- package/dist/app-options.d.ts.map +1 -0
- package/dist/app-options.js +3 -0
- package/dist/cascade.d.ts +47 -0
- package/dist/cascade.d.ts.map +1 -0
- package/dist/cascade.js +209 -0
- package/dist/cli-config.d.ts +6 -0
- package/dist/cli-config.d.ts.map +1 -0
- package/dist/cli-config.js +45 -0
- package/dist/cli-deploy.d.ts +14 -0
- package/dist/cli-deploy.d.ts.map +1 -0
- package/dist/cli-deploy.js +193 -0
- package/dist/cli-main.d.ts +16 -0
- package/dist/cli-main.d.ts.map +1 -0
- package/dist/cli-main.js +151 -0
- package/dist/cli-migrate.d.ts +20 -0
- package/dist/cli-migrate.d.ts.map +1 -0
- package/dist/cli-migrate.js +105 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +4 -0
- package/dist/complete.d.ts +13 -0
- package/dist/complete.d.ts.map +1 -0
- package/dist/complete.js +60 -0
- package/dist/console-logger.d.ts +3 -0
- package/dist/console-logger.d.ts.map +1 -0
- package/dist/console-logger.js +62 -0
- package/dist/create-many.d.ts +7 -0
- package/dist/create-many.d.ts.map +1 -0
- package/dist/create-many.js +88 -0
- package/dist/decimal.d.ts +23 -0
- package/dist/decimal.d.ts.map +1 -0
- package/dist/decimal.js +50 -0
- package/dist/define-app.d.ts +59 -0
- package/dist/define-app.d.ts.map +1 -0
- package/dist/define-app.js +5 -0
- package/dist/define-enum.d.ts +6 -0
- package/dist/define-enum.d.ts.map +1 -0
- package/dist/define-enum.js +18 -0
- package/dist/define-function.d.ts +25 -0
- package/dist/define-function.d.ts.map +1 -0
- package/dist/define-function.js +111 -0
- package/dist/define-model.d.ts +48 -0
- package/dist/define-model.d.ts.map +1 -0
- package/dist/define-model.js +85 -0
- package/dist/definition.d.ts +179 -0
- package/dist/definition.d.ts.map +1 -0
- package/dist/definition.js +165 -0
- package/dist/delete-many.d.ts +13 -0
- package/dist/delete-many.d.ts.map +1 -0
- package/dist/delete-many.js +58 -0
- package/dist/engine.d.ts +16 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +174 -0
- package/dist/errors.d.ts +50 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +43 -0
- package/dist/exact.d.ts +20 -0
- package/dist/exact.d.ts.map +1 -0
- package/dist/exact.js +1 -0
- package/dist/feed.d.ts +6 -0
- package/dist/feed.d.ts.map +1 -0
- package/dist/feed.js +33 -0
- package/dist/field-codec.d.ts +11 -0
- package/dist/field-codec.d.ts.map +1 -0
- package/dist/field-codec.js +48 -0
- package/dist/field-rules.d.ts +57 -0
- package/dist/field-rules.d.ts.map +1 -0
- package/dist/field-rules.js +1 -0
- package/dist/field-type.d.ts +51 -0
- package/dist/field-type.d.ts.map +1 -0
- package/dist/field-type.js +106 -0
- package/dist/fields.d.ts +295 -0
- package/dist/fields.d.ts.map +1 -0
- package/dist/fields.js +1 -0
- package/dist/function.d.ts +126 -0
- package/dist/function.d.ts.map +1 -0
- package/dist/function.js +1 -0
- package/dist/functions.d.ts +18 -0
- package/dist/functions.d.ts.map +1 -0
- package/dist/functions.js +99 -0
- package/dist/group-by.d.ts +10 -0
- package/dist/group-by.d.ts.map +1 -0
- package/dist/group-by.js +145 -0
- package/dist/group-having.d.ts +8 -0
- package/dist/group-having.d.ts.map +1 -0
- package/dist/group-having.js +97 -0
- package/dist/hooks.d.ts +41 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +149 -0
- package/dist/hosts.d.ts +3 -0
- package/dist/hosts.d.ts.map +1 -0
- package/dist/hosts.js +8 -0
- package/dist/identify.d.ts +15 -0
- package/dist/identify.d.ts.map +1 -0
- package/dist/identify.js +71 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/internal.d.ts +28 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +39 -0
- package/dist/lifecycle.d.ts +21 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +149 -0
- package/dist/list-update.d.ts +12 -0
- package/dist/list-update.d.ts.map +1 -0
- package/dist/list-update.js +52 -0
- package/dist/live.d.ts +37 -0
- package/dist/live.d.ts.map +1 -0
- package/dist/live.js +139 -0
- package/dist/manifest.d.ts +11 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +60 -0
- package/dist/memory-aggregate.d.ts +7 -0
- package/dist/memory-aggregate.d.ts.map +1 -0
- package/dist/memory-aggregate.js +107 -0
- package/dist/memory-conditions.d.ts +8 -0
- package/dist/memory-conditions.d.ts.map +1 -0
- package/dist/memory-conditions.js +82 -0
- package/dist/memory-draft.d.ts +34 -0
- package/dist/memory-draft.d.ts.map +1 -0
- package/dist/memory-draft.js +255 -0
- package/dist/memory-json.d.ts +6 -0
- package/dist/memory-json.d.ts.map +1 -0
- package/dist/memory-json.js +86 -0
- package/dist/memory-read.d.ts +45 -0
- package/dist/memory-read.d.ts.map +1 -0
- package/dist/memory-read.js +244 -0
- package/dist/memory-search.d.ts +16 -0
- package/dist/memory-search.d.ts.map +1 -0
- package/dist/memory-search.js +110 -0
- package/dist/memory-values.d.ts +23 -0
- package/dist/memory-values.d.ts.map +1 -0
- package/dist/memory-values.js +82 -0
- package/dist/memory.d.ts +4 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +157 -0
- package/dist/migrate.d.ts +22 -0
- package/dist/migrate.d.ts.map +1 -0
- package/dist/migrate.js +131 -0
- package/dist/model.d.ts +239 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +1 -0
- package/dist/nested-write.d.ts +64 -0
- package/dist/nested-write.d.ts.map +1 -0
- package/dist/nested-write.js +274 -0
- package/dist/number-update.d.ts +18 -0
- package/dist/number-update.d.ts.map +1 -0
- package/dist/number-update.js +96 -0
- package/dist/plugin-app.d.ts +48 -0
- package/dist/plugin-app.d.ts.map +1 -0
- package/dist/plugin-app.js +230 -0
- package/dist/plugin-code.d.ts +17 -0
- package/dist/plugin-code.d.ts.map +1 -0
- package/dist/plugin-code.js +125 -0
- package/dist/plugin-use.d.ts +22 -0
- package/dist/plugin-use.d.ts.map +1 -0
- package/dist/plugin-use.js +161 -0
- package/dist/plugin.d.ts +357 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +17 -0
- package/dist/query-aggregate.d.ts +82 -0
- package/dist/query-aggregate.d.ts.map +1 -0
- package/dist/query-aggregate.js +1 -0
- package/dist/query-args.d.ts +41 -0
- package/dist/query-args.d.ts.map +1 -0
- package/dist/query-args.js +263 -0
- package/dist/query-bulk.d.ts +35 -0
- package/dist/query-bulk.d.ts.map +1 -0
- package/dist/query-bulk.js +1 -0
- package/dist/query-conditions.d.ts +9 -0
- package/dist/query-conditions.d.ts.map +1 -0
- package/dist/query-conditions.js +46 -0
- package/dist/query-context.d.ts +32 -0
- package/dist/query-context.d.ts.map +1 -0
- package/dist/query-context.js +55 -0
- package/dist/query-filter.d.ts +46 -0
- package/dist/query-filter.d.ts.map +1 -0
- package/dist/query-filter.js +1 -0
- package/dist/query-group.d.ts +82 -0
- package/dist/query-group.d.ts.map +1 -0
- package/dist/query-group.js +1 -0
- package/dist/query-json.d.ts +9 -0
- package/dist/query-json.d.ts.map +1 -0
- package/dist/query-json.js +66 -0
- package/dist/query-order.d.ts +15 -0
- package/dist/query-order.d.ts.map +1 -0
- package/dist/query-order.js +115 -0
- package/dist/query-project.d.ts +15 -0
- package/dist/query-project.d.ts.map +1 -0
- package/dist/query-project.js +45 -0
- package/dist/query-search.d.ts +24 -0
- package/dist/query-search.d.ts.map +1 -0
- package/dist/query-search.js +2 -0
- package/dist/query-values.d.ts +28 -0
- package/dist/query-values.d.ts.map +1 -0
- package/dist/query-values.js +91 -0
- package/dist/query-where.d.ts +46 -0
- package/dist/query-where.d.ts.map +1 -0
- package/dist/query-where.js +200 -0
- package/dist/query-write.d.ts +14 -0
- package/dist/query-write.d.ts.map +1 -0
- package/dist/query-write.js +260 -0
- package/dist/query.d.ts +254 -0
- package/dist/query.d.ts.map +1 -0
- package/dist/query.js +1 -0
- package/dist/record.d.ts +257 -0
- package/dist/record.d.ts.map +1 -0
- package/dist/record.js +1 -0
- package/dist/recorder.d.ts +32 -0
- package/dist/recorder.d.ts.map +1 -0
- package/dist/recorder.js +152 -0
- package/dist/relation-write.d.ts +41 -0
- package/dist/relation-write.d.ts.map +1 -0
- package/dist/relation-write.js +112 -0
- package/dist/relations.d.ts +42 -0
- package/dist/relations.d.ts.map +1 -0
- package/dist/relations.js +119 -0
- package/dist/rules.d.ts +97 -0
- package/dist/rules.d.ts.map +1 -0
- package/dist/rules.js +71 -0
- package/dist/running.d.ts +29 -0
- package/dist/running.d.ts.map +1 -0
- package/dist/running.js +39 -0
- package/dist/schema-indexes.d.ts +11 -0
- package/dist/schema-indexes.d.ts.map +1 -0
- package/dist/schema-indexes.js +59 -0
- package/dist/schema-virtuals.d.ts +19 -0
- package/dist/schema-virtuals.d.ts.map +1 -0
- package/dist/schema-virtuals.js +100 -0
- package/dist/schema.d.ts +35 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +267 -0
- package/dist/scope.d.ts +46 -0
- package/dist/scope.d.ts.map +1 -0
- package/dist/scope.js +82 -0
- package/dist/scratch.d.ts +14 -0
- package/dist/scratch.d.ts.map +1 -0
- package/dist/scratch.js +10 -0
- package/dist/serve.d.ts +2 -0
- package/dist/serve.d.ts.map +1 -0
- package/dist/serve.js +4 -0
- package/dist/symbols.d.ts +10 -0
- package/dist/symbols.d.ts.map +1 -0
- package/dist/symbols.js +1 -0
- package/dist/transaction.d.ts +28 -0
- package/dist/transaction.d.ts.map +1 -0
- package/dist/transaction.js +156 -0
- package/dist/types.d.ts +58 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +1 -0
- package/dist/update-many.d.ts +7 -0
- package/dist/update-many.d.ts.map +1 -0
- package/dist/update-many.js +182 -0
- package/dist/uuid.d.ts +7 -0
- package/dist/uuid.d.ts.map +1 -0
- package/dist/uuid.js +48 -0
- package/dist/validation.d.ts +24 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +72 -0
- package/dist/virtual-read.d.ts +9 -0
- package/dist/virtual-read.d.ts.map +1 -0
- package/dist/virtual-read.js +145 -0
- package/dist/virtual.d.ts +142 -0
- package/dist/virtual.d.ts.map +1 -0
- package/dist/virtual.js +1 -0
- package/dist/write-context.d.ts +46 -0
- package/dist/write-context.d.ts.map +1 -0
- package/dist/write-context.js +102 -0
- package/dist/write-data.d.ts +26 -0
- package/dist/write-data.d.ts.map +1 -0
- package/dist/write-data.js +144 -0
- package/dist/write-plan.d.ts +107 -0
- package/dist/write-plan.d.ts.map +1 -0
- package/dist/write-plan.js +170 -0
- package/dist/write-target.d.ts +17 -0
- package/dist/write-target.d.ts.map +1 -0
- package/dist/write-target.js +59 -0
- package/dist/writes.d.ts +23 -0
- package/dist/writes.d.ts.map +1 -0
- package/dist/writes.js +246 -0
- package/dist/writing.d.ts +10 -0
- package/dist/writing.d.ts.map +1 -0
- package/dist/writing.js +66 -0
- package/package.json +42 -3
- package/src/access.ts +329 -0
- package/src/adapter-errors.ts +89 -0
- package/src/adapter-json.ts +21 -0
- package/src/adapter-migrations.ts +98 -0
- package/src/adapter.ts +363 -0
- package/src/aggregate.ts +136 -0
- package/src/app-internals.ts +26 -0
- package/src/app-options.ts +24 -0
- package/src/cascade.ts +297 -0
- package/src/cli-config.ts +45 -0
- package/src/cli-deploy.ts +235 -0
- package/src/cli-main.ts +165 -0
- package/src/cli-migrate.ts +143 -0
- package/src/cli.ts +5 -0
- package/src/complete.ts +73 -0
- package/src/console-logger.ts +87 -0
- package/src/create-many.ts +126 -0
- package/src/decimal.ts +74 -0
- package/src/define-app.ts +108 -0
- package/src/define-enum.ts +26 -0
- package/src/define-function.ts +188 -0
- package/src/define-model.ts +220 -0
- package/src/definition.ts +352 -0
- package/src/delete-many.ts +76 -0
- package/src/engine.ts +281 -0
- package/src/errors.ts +97 -0
- package/src/exact.ts +49 -0
- package/src/feed.ts +39 -0
- package/src/field-codec.ts +72 -0
- package/src/field-rules.ts +77 -0
- package/src/field-type.ts +219 -0
- package/src/fields.ts +383 -0
- package/src/function.ts +143 -0
- package/src/functions.ts +154 -0
- package/src/group-by.ts +186 -0
- package/src/group-having.ts +143 -0
- package/src/hooks.ts +215 -0
- package/src/hosts.ts +11 -0
- package/src/identify.ts +95 -0
- package/src/index.ts +125 -0
- package/src/internal.ts +68 -0
- package/src/lifecycle.ts +214 -0
- package/src/list-update.ts +71 -0
- package/src/live.ts +199 -0
- package/src/manifest.ts +71 -0
- package/src/memory-aggregate.ts +162 -0
- package/src/memory-conditions.ts +88 -0
- package/src/memory-draft.ts +319 -0
- package/src/memory-json.ts +91 -0
- package/src/memory-read.ts +311 -0
- package/src/memory-search.ts +149 -0
- package/src/memory-values.ts +106 -0
- package/src/memory.ts +173 -0
- package/src/migrate.ts +152 -0
- package/src/model.ts +312 -0
- package/src/nested-write.ts +390 -0
- package/src/number-update.ts +142 -0
- package/src/plugin-app.ts +308 -0
- package/src/plugin-code.ts +158 -0
- package/src/plugin-use.ts +217 -0
- package/src/plugin.ts +400 -0
- package/src/query-aggregate.ts +96 -0
- package/src/query-args.ts +375 -0
- package/src/query-bulk.ts +53 -0
- package/src/query-conditions.ts +53 -0
- package/src/query-context.ts +104 -0
- package/src/query-filter.ts +54 -0
- package/src/query-group.ts +137 -0
- package/src/query-json.ts +90 -0
- package/src/query-order.ts +158 -0
- package/src/query-project.ts +73 -0
- package/src/query-search.ts +31 -0
- package/src/query-values.ts +131 -0
- package/src/query-where.ts +318 -0
- package/src/query-write.ts +360 -0
- package/src/query.ts +400 -0
- package/src/record.ts +379 -0
- package/src/recorder.ts +212 -0
- package/src/relation-write.ts +176 -0
- package/src/relations.ts +165 -0
- package/src/rules.ts +188 -0
- package/src/running.ts +62 -0
- package/src/schema-indexes.ts +88 -0
- package/src/schema-virtuals.ts +134 -0
- package/src/schema.ts +367 -0
- package/src/scope.ts +123 -0
- package/src/scratch.ts +28 -0
- package/src/serve.ts +5 -0
- package/src/symbols.ts +11 -0
- package/src/transaction.ts +211 -0
- package/src/types.ts +79 -0
- package/src/update-many.ts +268 -0
- package/src/uuid.ts +51 -0
- package/src/validation.ts +107 -0
- package/src/virtual-read.ts +198 -0
- package/src/virtual.ts +187 -0
- package/src/write-context.ts +170 -0
- package/src/write-data.ts +188 -0
- package/src/write-plan.ts +273 -0
- package/src/write-target.ts +92 -0
- package/src/writes.ts +361 -0
- package/src/writing.ts +93 -0
package/dist/query.d.ts
ADDED
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import type { CreateData, RecordOf, RelationKeys, ScalarKeys, StoredValue, SystemFields, TargetFields, UniqueKeys, UpdateData } from './record.ts';
|
|
2
|
+
import type { Exact } from './exact.ts';
|
|
3
|
+
import type { JsonValue } from './fields.ts';
|
|
4
|
+
import type { AggregateArgs, Aggregates, IsOrdered } from './query-aggregate.ts';
|
|
5
|
+
import type { BulkQueries } from './query-bulk.ts';
|
|
6
|
+
import type { JsonPathFilter, ListFilter, ScalarFilter } from './query-filter.ts';
|
|
7
|
+
import type { Relevance, SearchWhere } from './query-search.ts';
|
|
8
|
+
import type { GroupByArgs, GroupChecked, GroupField, Groups, SortOrder } from './query-group.ts';
|
|
9
|
+
import type { Identity } from './rules.ts';
|
|
10
|
+
import type { fieldType } from './symbols.ts';
|
|
11
|
+
import type { DefaultRow, DefaultVirtualKeys, VirtualArgs, VirtualIncludes, VirtualKeys, VirtualOutput } from './virtual.ts';
|
|
12
|
+
type KindOf<X> = X extends {
|
|
13
|
+
readonly [fieldType]: {
|
|
14
|
+
readonly kind: infer K;
|
|
15
|
+
};
|
|
16
|
+
} ? K : never;
|
|
17
|
+
type TargetOf<X> = X extends {
|
|
18
|
+
readonly [fieldType]: {
|
|
19
|
+
readonly target: infer T;
|
|
20
|
+
};
|
|
21
|
+
} ? T : never;
|
|
22
|
+
type OptionalOne<X> = X extends {
|
|
23
|
+
readonly [fieldType]: {
|
|
24
|
+
readonly options: {
|
|
25
|
+
readonly optional: true;
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
} ? null : never;
|
|
29
|
+
type IsList<X> = X extends {
|
|
30
|
+
readonly [fieldType]: {
|
|
31
|
+
readonly options: {
|
|
32
|
+
readonly list: true;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
} ? true : false;
|
|
36
|
+
/** A json field's value, any JSON without a schema, or a path filter (D-149). */
|
|
37
|
+
type JsonFilter<V> = V | ScalarFilter<NonNullable<V>> | JsonPathFilter;
|
|
38
|
+
type FilterOf<X> = IsList<X> extends true ? StoredValue<X> extends readonly (infer E)[] ? ListFilter<E> : never : KindOf<X> extends 'scalar' ? X extends {
|
|
39
|
+
readonly [fieldType]: {
|
|
40
|
+
readonly json: true;
|
|
41
|
+
};
|
|
42
|
+
} ? JsonFilter<unknown extends StoredValue<X> ? JsonValue : StoredValue<X>> : StoredValue<X> | ScalarFilter<NonNullable<StoredValue<X>>, IsOrdered<X>> : KindOf<X> extends 'one' ? {
|
|
43
|
+
readonly is?: Where<TargetFields<TargetOf<X>>> | null | undefined;
|
|
44
|
+
readonly isNot?: Where<TargetFields<TargetOf<X>>> | null | undefined;
|
|
45
|
+
} : {
|
|
46
|
+
readonly some?: Where<TargetFields<TargetOf<X>>> | undefined;
|
|
47
|
+
readonly every?: Where<TargetFields<TargetOf<X>>> | undefined;
|
|
48
|
+
readonly none?: Where<TargetFields<TargetOf<X>>> | undefined;
|
|
49
|
+
};
|
|
50
|
+
/** A plugin field type's stored field (D-122), `never` for a kernel one. */
|
|
51
|
+
type StoredOf<X> = X extends {
|
|
52
|
+
readonly [fieldType]: {
|
|
53
|
+
readonly stored: infer S;
|
|
54
|
+
};
|
|
55
|
+
} ? S : never;
|
|
56
|
+
/** The fields of a plugin field type, which only a `beforeFind` filters. */
|
|
57
|
+
type PluginKeys<F> = {
|
|
58
|
+
[K in keyof F]: [StoredOf<F[K]>] extends [never] ? never : K;
|
|
59
|
+
}[keyof F];
|
|
60
|
+
/** The system fields' filters and the combinators of a `where` `W`. */
|
|
61
|
+
interface Filters<W> {
|
|
62
|
+
readonly id?: string | Omit<ScalarFilter<string>, 'mode'> | undefined;
|
|
63
|
+
readonly createdAt?: Date | ScalarFilter<Date> | undefined;
|
|
64
|
+
readonly updatedAt?: Date | ScalarFilter<Date> | undefined;
|
|
65
|
+
readonly AND?: W | readonly W[] | undefined;
|
|
66
|
+
readonly OR?: readonly W[] | undefined;
|
|
67
|
+
readonly NOT?: W | readonly W[] | undefined;
|
|
68
|
+
}
|
|
69
|
+
/** No `where` filters a virtual (D-151). */
|
|
70
|
+
export type Where<F> = {
|
|
71
|
+
readonly [K in Exclude<keyof F, PluginKeys<F> | VirtualKeys<F>>]?: FilterOf<F[K]> | undefined;
|
|
72
|
+
} & Filters<Where<F>> & SearchWhere<F>;
|
|
73
|
+
/** A `beforeFind`'s filter: a plugin field's in its stored form (D-122). */
|
|
74
|
+
export type FindWhere<F> = {
|
|
75
|
+
readonly [K in Exclude<keyof F, VirtualKeys<F>>]?: (K extends PluginKeys<F> ? FilterOf<StoredOf<F[K]>> : FilterOf<F[K]>) | undefined;
|
|
76
|
+
} & Filters<FindWhere<F>> & SearchWhere<F>;
|
|
77
|
+
/** A unique index's value: a scalar's, or a `one` relation's target id. */
|
|
78
|
+
type IndexValue<X> = KindOf<X> extends 'one' ? string : NonNullable<StoredValue<X>>;
|
|
79
|
+
/** A unique index, targeted flat with exactly its fields (D-52). */
|
|
80
|
+
type IndexTarget<F, X> = X extends readonly (infer K extends keyof F)[] ? {
|
|
81
|
+
readonly [P in K]: IndexValue<F[P]>;
|
|
82
|
+
} : never;
|
|
83
|
+
/**
|
|
84
|
+
* `findUnique` and single-row writes target `id`, a unique field or a unique
|
|
85
|
+
* index, whose fields `X` lists (D-52).
|
|
86
|
+
*/
|
|
87
|
+
export type UniqueWhere<F, X = never> = {
|
|
88
|
+
readonly id: string;
|
|
89
|
+
} | {
|
|
90
|
+
[K in UniqueKeys<F>]: {
|
|
91
|
+
readonly [P in K]: StoredValue<F[K]>;
|
|
92
|
+
};
|
|
93
|
+
}[UniqueKeys<F>] | IndexTarget<F, X>;
|
|
94
|
+
type Direction = 'asc' | 'desc';
|
|
95
|
+
/**
|
|
96
|
+
* A json field is not sorted: each database orders json its own way (D-94);
|
|
97
|
+
* nor is a list (D-120), nor a plugin field (D-122).
|
|
98
|
+
*/
|
|
99
|
+
export type SortedKeys<F> = {
|
|
100
|
+
[K in Exclude<ScalarKeys<F>, PluginKeys<F>>]: F[K] extends {
|
|
101
|
+
readonly [fieldType]: {
|
|
102
|
+
readonly json: true;
|
|
103
|
+
};
|
|
104
|
+
} ? never : IsList<F[K]> extends true ? never : K;
|
|
105
|
+
}[Exclude<ScalarKeys<F>, PluginKeys<F>>];
|
|
106
|
+
type KeysOf<F, Kind> = {
|
|
107
|
+
[K in keyof F]: KindOf<F[K]> extends Kind ? K : never;
|
|
108
|
+
}[keyof F];
|
|
109
|
+
/**
|
|
110
|
+
* An optional field sorts with its `null`s first or last (D-149), a `one`
|
|
111
|
+
* relation by its target's fields, a `many` by its count (D-134).
|
|
112
|
+
*/
|
|
113
|
+
type Sorts<F> = {
|
|
114
|
+
readonly [K in SortedKeys<F> | keyof SystemFields]?: SortOrder<K extends keyof RecordOf<F> ? RecordOf<F>[K] : never> | undefined;
|
|
115
|
+
} & {
|
|
116
|
+
readonly [K in KeysOf<F, 'one'>]?: Sorts<TargetFields<TargetOf<F[K]>>> | undefined;
|
|
117
|
+
} & {
|
|
118
|
+
readonly [K in KeysOf<F, 'many'>]?: {
|
|
119
|
+
readonly _count: Direction;
|
|
120
|
+
} | undefined;
|
|
121
|
+
};
|
|
122
|
+
/** A read's sort, by its `_search`'s relevance too (D-148). */
|
|
123
|
+
export type OrderBy<F> = Sorts<F> & Relevance<F>;
|
|
124
|
+
/** `_count`: every `many` relation, or the ones `select` names (D-134). */
|
|
125
|
+
type Count<F> = true | {
|
|
126
|
+
readonly select: {
|
|
127
|
+
readonly [K in KeysOf<F, 'many'>]?: boolean | {
|
|
128
|
+
readonly where?: Where<TargetFields<TargetOf<F[K]>>> | undefined;
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
};
|
|
132
|
+
/** A model with a `many` relation takes `_count`. */
|
|
133
|
+
type Counts<F> = [KeysOf<F, 'many'>] extends [never] ? unknown : {
|
|
134
|
+
readonly _count?: Count<F> | false;
|
|
135
|
+
};
|
|
136
|
+
type Counted<F, C> = C extends {
|
|
137
|
+
readonly select: infer S;
|
|
138
|
+
} ? {
|
|
139
|
+
readonly [K in keyof S as S[K] extends false | undefined ? never : K]: number;
|
|
140
|
+
} : C extends true ? {
|
|
141
|
+
readonly [K in KeysOf<F, 'many'>]: number;
|
|
142
|
+
} : unknown;
|
|
143
|
+
/** The `_count` of a `select` or an `include` `A`. */
|
|
144
|
+
type CountOf<F, A> = A extends {
|
|
145
|
+
readonly _count: infer C;
|
|
146
|
+
} ? C extends false | undefined ? unknown : {
|
|
147
|
+
readonly _count: Counted<F, C>;
|
|
148
|
+
} : unknown;
|
|
149
|
+
type RelationArgs<X> = Shaping<TargetFields<TargetOf<X>>> & (KindOf<X> extends 'many' ? {
|
|
150
|
+
readonly where?: Where<TargetFields<TargetOf<X>>> | undefined;
|
|
151
|
+
readonly orderBy?: OrderBy<TargetFields<TargetOf<X>>> | undefined;
|
|
152
|
+
readonly take?: number | undefined;
|
|
153
|
+
readonly skip?: number | undefined;
|
|
154
|
+
readonly cursor?: UniqueWhere<TargetFields<TargetOf<X>>> | undefined;
|
|
155
|
+
} : unknown);
|
|
156
|
+
export type Select<F> = {
|
|
157
|
+
readonly [K in keyof SystemFields]?: boolean;
|
|
158
|
+
} & {
|
|
159
|
+
readonly [K in keyof F]?: KindOf<F[K]> extends 'scalar' ? boolean : KindOf<F[K]> extends 'virtual' ? VirtualArgs<F[K]> : boolean | RelationArgs<F[K]>;
|
|
160
|
+
} & Counts<F>;
|
|
161
|
+
/** A model without relations or virtuals takes no `include`. */
|
|
162
|
+
export type Include<F> = [RelationKeys<F> | VirtualKeys<F>] extends [never] ? never : {
|
|
163
|
+
readonly [K in RelationKeys<F>]?: boolean | RelationArgs<F[K]>;
|
|
164
|
+
} & VirtualIncludes<F> & Counts<F>;
|
|
165
|
+
type Output<X, A> = KindOf<X> extends 'scalar' ? StoredValue<X> : KindOf<X> extends 'virtual' ? VirtualOutput<X, A> : KindOf<X> extends 'one' ? Payload<TargetFields<TargetOf<X>>, A> | OptionalOne<X> : Payload<TargetFields<TargetOf<X>>, A>[];
|
|
166
|
+
type Selected<F, S> = {
|
|
167
|
+
readonly [K in Exclude<keyof S, '_count'> as S[K] extends false | undefined ? never : K]: K extends keyof F ? Output<F[K], S[K]> : K extends keyof SystemFields ? SystemFields[K] : never;
|
|
168
|
+
};
|
|
169
|
+
type Included<F, I> = {
|
|
170
|
+
readonly [K in Exclude<keyof I, '_count'> as I[K] extends false | undefined ? never : K]: K extends keyof F ? Output<F[K], I[K]> : never;
|
|
171
|
+
};
|
|
172
|
+
/** `omit`: scalars, system fields, default virtuals left out (D-135). */
|
|
173
|
+
export type OmitArgs<F> = {
|
|
174
|
+
readonly [K in keyof RecordOf<F> | DefaultVirtualKeys<F>]?: boolean;
|
|
175
|
+
};
|
|
176
|
+
/** `select` and `omit` exclude each other (D-135). */
|
|
177
|
+
export type Shaping<F> = {
|
|
178
|
+
readonly include?: Include<F>;
|
|
179
|
+
} & ({
|
|
180
|
+
readonly select?: Select<F>;
|
|
181
|
+
readonly omit?: undefined;
|
|
182
|
+
} | {
|
|
183
|
+
readonly select?: undefined;
|
|
184
|
+
readonly omit?: OmitArgs<F>;
|
|
185
|
+
});
|
|
186
|
+
/** The scalar and system fields, less those `omit` sets to `true`. */
|
|
187
|
+
type Kept<F, A> = A extends {
|
|
188
|
+
readonly omit: infer O;
|
|
189
|
+
} ? Omit<DefaultRow<F>, {
|
|
190
|
+
[K in keyof O]: O[K] extends true ? K : never;
|
|
191
|
+
}[keyof O]> : DefaultRow<F>;
|
|
192
|
+
/** Without `select`, scalar fields return and relations do not (D-20). */
|
|
193
|
+
export type Payload<F, A> = A extends {
|
|
194
|
+
readonly select: infer S;
|
|
195
|
+
} ? Selected<F, S> & CountOf<F, S> : A extends {
|
|
196
|
+
readonly include: infer I;
|
|
197
|
+
} ? Kept<F, A> & Included<F, I> & CountOf<F, I> : Kept<F, A>;
|
|
198
|
+
export type QueryOptions = {
|
|
199
|
+
readonly as?: Identity;
|
|
200
|
+
};
|
|
201
|
+
/** `findFirst`; `cursor` starts at a unique target. */
|
|
202
|
+
export type FindFirstArgs<F, X = never> = Shaping<F> & {
|
|
203
|
+
readonly where?: Where<F> | undefined;
|
|
204
|
+
readonly orderBy?: OrderBy<F> | readonly OrderBy<F>[] | undefined;
|
|
205
|
+
readonly take?: number | undefined;
|
|
206
|
+
readonly skip?: number | undefined;
|
|
207
|
+
readonly cursor?: UniqueWhere<F, X> | undefined;
|
|
208
|
+
};
|
|
209
|
+
/** `findMany`: `distinct` keeps one row per key, without `cursor` (D-147). */
|
|
210
|
+
export type FindManyArgs<F, X = never, N = never> = FindFirstArgs<F, X> & {
|
|
211
|
+
readonly distinct?: readonly [GroupField<F, N>, ...GroupField<F, N>[]] | undefined;
|
|
212
|
+
};
|
|
213
|
+
export type FindUniqueArgs<F, X = never> = Shaping<F> & {
|
|
214
|
+
readonly where: UniqueWhere<F, X>;
|
|
215
|
+
};
|
|
216
|
+
export type CreateArgs<F, N = never> = Shaping<F> & {
|
|
217
|
+
readonly data: CreateData<F, N>;
|
|
218
|
+
};
|
|
219
|
+
export type UpdateArgs<F, X = never, N = never> = Shaping<F> & {
|
|
220
|
+
readonly where: UniqueWhere<F, X>;
|
|
221
|
+
readonly data: UpdateData<F, N>;
|
|
222
|
+
};
|
|
223
|
+
/** `update` the row `where` targets, or `create` it when absent (D-142). */
|
|
224
|
+
export type UpsertArgs<F, X = never, N = never> = Shaping<F> & {
|
|
225
|
+
readonly where: UniqueWhere<F, X>;
|
|
226
|
+
readonly create: CreateData<F, N>;
|
|
227
|
+
readonly update: UpdateData<F, N>;
|
|
228
|
+
};
|
|
229
|
+
/** Model methods (D-18), the subset the prototype measures. */
|
|
230
|
+
/** `N` is the model's name, which nested creation needs (D-128). */
|
|
231
|
+
export interface Queries<F, X = never, N = never> extends BulkQueries<F> {
|
|
232
|
+
findMany<const A extends FindManyArgs<F, X, N>>(this: void, args?: A & NoInfer<Exact<A, FindManyArgs<F, X, N>>>, options?: QueryOptions): Promise<Payload<F, A>[]>;
|
|
233
|
+
findFirst<const A extends FindFirstArgs<F, X>>(this: void, args?: A & NoInfer<Exact<A, FindFirstArgs<F, X>>>, options?: QueryOptions): Promise<Payload<F, A> | null>;
|
|
234
|
+
findUnique<const A extends FindUniqueArgs<F, X>>(this: void, args: A & NoInfer<Exact<A, FindUniqueArgs<F, X>>>, options?: QueryOptions): Promise<Payload<F, A> | null>;
|
|
235
|
+
/** `findFirst`, which fails with `NOT_FOUND` rather than `null` (D-135). */
|
|
236
|
+
findFirstOrThrow<const A extends FindFirstArgs<F, X>>(this: void, args?: A & NoInfer<Exact<A, FindFirstArgs<F, X>>>, options?: QueryOptions): Promise<Payload<F, A>>;
|
|
237
|
+
/** `findUnique`, which fails with `NOT_FOUND` rather than `null` (D-135). */
|
|
238
|
+
findUniqueOrThrow<const A extends FindUniqueArgs<F, X>>(this: void, args: A & NoInfer<Exact<A, FindUniqueArgs<F, X>>>, options?: QueryOptions): Promise<Payload<F, A>>;
|
|
239
|
+
count(this: void, args?: {
|
|
240
|
+
readonly where?: Where<F>;
|
|
241
|
+
}, options?: QueryOptions): Promise<number>;
|
|
242
|
+
/** Of the rows the caller reads; server code only (D-143). */
|
|
243
|
+
aggregate<const A extends AggregateArgs<F>>(this: void, args: A & NoInfer<Exact<A, AggregateArgs<F>>>, options?: QueryOptions): Promise<Aggregates<F, A>>;
|
|
244
|
+
/** Of the rows the caller reads, by `by`; server code only (D-146). */
|
|
245
|
+
groupBy<const A extends GroupByArgs<F, N>>(this: void, args: A & NoInfer<GroupChecked<F, N, A>>, options?: QueryOptions): Promise<Groups<F, N, A>>;
|
|
246
|
+
create<const A extends CreateArgs<F, N>>(this: void, args: A & NoInfer<Exact<A, CreateArgs<F, N>>>, options?: QueryOptions): Promise<Payload<F, A>>;
|
|
247
|
+
update<const A extends UpdateArgs<F, X, N>>(this: void, args: A & NoInfer<Exact<A, UpdateArgs<F, X, N>>>, options?: QueryOptions): Promise<Payload<F, A>>;
|
|
248
|
+
/** The branch that runs applies its own rules and hooks (D-142). */
|
|
249
|
+
upsert<const A extends UpsertArgs<F, X, N>>(this: void, args: A & NoInfer<Exact<A, UpsertArgs<F, X, N>>>, options?: QueryOptions): Promise<Payload<F, A>>;
|
|
250
|
+
/** Its relations and counts are read as they were before it (D-135). */
|
|
251
|
+
delete<const A extends FindUniqueArgs<F, X>>(this: void, args: A & NoInfer<Exact<A, FindUniqueArgs<F, X>>>, options?: QueryOptions): Promise<Payload<F, A>>;
|
|
252
|
+
}
|
|
253
|
+
export {};
|
|
254
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"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"}
|
package/dist/query.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/record.d.ts
ADDED
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
import type { UniqueWhere } from './query.ts';
|
|
2
|
+
import type { fieldType, modelFields } from './symbols.ts';
|
|
3
|
+
import type { VirtualKeys } from './virtual.ts';
|
|
4
|
+
type Scalar<V = unknown, O = unknown> = {
|
|
5
|
+
readonly [fieldType]: {
|
|
6
|
+
readonly kind: 'scalar';
|
|
7
|
+
readonly value: V;
|
|
8
|
+
readonly options: O;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
type Relation<K extends 'one' | 'many', T = unknown, O = unknown> = {
|
|
12
|
+
readonly [fieldType]: {
|
|
13
|
+
readonly kind: K;
|
|
14
|
+
readonly target: T;
|
|
15
|
+
readonly options: O;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
type IsOptional<O> = O extends {
|
|
19
|
+
readonly optional: true;
|
|
20
|
+
} ? true : false;
|
|
21
|
+
/** The fields of the model a relation's thunk returns. */
|
|
22
|
+
export type TargetFields<T> = T extends () => infer M ? M extends {
|
|
23
|
+
readonly [modelFields]: infer F;
|
|
24
|
+
} ? F : never : never;
|
|
25
|
+
/** What the kernel adds to every record (D-22). */
|
|
26
|
+
export type SystemFields = {
|
|
27
|
+
readonly id: string;
|
|
28
|
+
readonly createdAt: Date;
|
|
29
|
+
readonly updatedAt: Date;
|
|
30
|
+
};
|
|
31
|
+
/** A stored scalar value: an optional field may be `null`. */
|
|
32
|
+
export type StoredValue<X> = X extends Scalar<infer V, infer O> ? IsOptional<O> extends true ? V | null : V : never;
|
|
33
|
+
/** A record without its relations, as a query returns it without `select`. */
|
|
34
|
+
export type RecordOf<F> = SystemFields & {
|
|
35
|
+
readonly [K in keyof F as F[K] extends Scalar ? K : never]: StoredValue<F[K]>;
|
|
36
|
+
};
|
|
37
|
+
/** A stored `one` relation: its key, `null` when optional and unset. */
|
|
38
|
+
type StoredRef<X> = X extends Relation<'one', unknown, infer O> ? IsOptional<O> extends true ? {
|
|
39
|
+
readonly id: string;
|
|
40
|
+
} | null : {
|
|
41
|
+
readonly id: string;
|
|
42
|
+
} : never;
|
|
43
|
+
/** The name of the model a relation's thunk returns. */
|
|
44
|
+
type TargetName<T> = T extends () => infer M ? M extends {
|
|
45
|
+
readonly name: infer N extends string;
|
|
46
|
+
} ? N : never : never;
|
|
47
|
+
/**
|
|
48
|
+
* Whether field `J` of target `T` may face field `K` of model `N`, as startup
|
|
49
|
+
* resolves it (D-37).
|
|
50
|
+
*/
|
|
51
|
+
type Facing<N, K, T, J> = TargetFields<T>[J & keyof TargetFields<T>] extends Relation<'one' | 'many', infer B, infer O> ? O extends {
|
|
52
|
+
readonly inverse: infer I extends string;
|
|
53
|
+
} ? [I] extends [K] ? true : false : [J, TargetName<T>] extends [K, N] ? false : [TargetName<B>] extends [N] ? true : false : false;
|
|
54
|
+
/**
|
|
55
|
+
* The field of relation `X`'s target that faces it, named `K` on model `N`:
|
|
56
|
+
* the rows it creates leave it out (D-128).
|
|
57
|
+
*/
|
|
58
|
+
type InverseOf<N, K, X> = X extends Relation<'one' | 'many', infer T, infer O> ? O extends {
|
|
59
|
+
readonly inverse: infer I extends string;
|
|
60
|
+
} ? I : {
|
|
61
|
+
[J in keyof TargetFields<T>]: Facing<N, K, T, J> extends true ? J : never;
|
|
62
|
+
}[keyof TargetFields<T>] : never;
|
|
63
|
+
/**
|
|
64
|
+
* Whether relation `X`, named `K` on model `N`, faces a `one`: the two
|
|
65
|
+
* sides of a one-to-one, of which the required one stores the key (D-37).
|
|
66
|
+
*/
|
|
67
|
+
type FacesOne<N, K, X> = X extends Relation<'one', infer T> ? [InverseOf<N, K, X>] extends [never] ? false : TargetFields<T>[InverseOf<N, K, X> & keyof TargetFields<T>] extends Relation<'one'> ? true : false : false;
|
|
68
|
+
/**
|
|
69
|
+
* A `one` relation the row stores: a required one, or an optional one facing
|
|
70
|
+
* a `many`. The optional side of a one-to-one has no column (D-37).
|
|
71
|
+
*/
|
|
72
|
+
type Stored<N, K, X> = X extends Relation<'one', unknown, infer O> ? IsOptional<O> extends true ? FacesOne<N, K, X> extends true ? false : true : true : false;
|
|
73
|
+
/**
|
|
74
|
+
* The stored row of model `N` that access rules and hooks receive (D-77):
|
|
75
|
+
* the record plus the key of each `one` relation the row stores, with no
|
|
76
|
+
* query.
|
|
77
|
+
*/
|
|
78
|
+
export type StoredRecord<F, N extends string> = RecordOf<F> & {
|
|
79
|
+
readonly [K in keyof F as Stored<N, K, F[K]> extends true ? K : never]: StoredRef<F[K]>;
|
|
80
|
+
};
|
|
81
|
+
type Loose = {
|
|
82
|
+
readonly id: string;
|
|
83
|
+
readonly [field: string]: unknown;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* The record a field rule receives (D-44): loose, or with the fields the
|
|
87
|
+
* developer declared.
|
|
88
|
+
*/
|
|
89
|
+
export type RecordFor<R extends object> = [R] extends [never] ? Loose : {
|
|
90
|
+
readonly id: string;
|
|
91
|
+
} & Readonly<R>;
|
|
92
|
+
/** A written scalar value: the schema's input when one transforms (D-23). */
|
|
93
|
+
type WrittenValue<X> = X extends {
|
|
94
|
+
readonly [fieldType]: {
|
|
95
|
+
readonly input: infer I;
|
|
96
|
+
readonly options: infer O;
|
|
97
|
+
};
|
|
98
|
+
} ? IsOptional<O> extends true ? I | null : I : StoredValue<X>;
|
|
99
|
+
type Ref = {
|
|
100
|
+
readonly id: string;
|
|
101
|
+
};
|
|
102
|
+
/** The data of a row relation `K` of model `N` creates (D-128). */
|
|
103
|
+
type Created<N, K, X> = X extends Relation<'one' | 'many', infer T> ? CreateData<TargetFields<T>, TargetName<T>, InverseOf<N, K, X>> : never;
|
|
104
|
+
/** A unique target of the relation's model, as stored (D-52, D-138). */
|
|
105
|
+
type Target<X> = X extends Relation<'one' | 'many', infer T> ? UniqueWhere<TargetFields<T>> : never;
|
|
106
|
+
type OrCreate<N, K, X> = {
|
|
107
|
+
readonly where: Target<X>;
|
|
108
|
+
readonly create: Created<N, K, X>;
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* The data of a linked row relation `K` of model `N` updates, without the
|
|
112
|
+
* relation back to the row (D-138).
|
|
113
|
+
*/
|
|
114
|
+
type Updated<N, K, X> = X extends Relation<'one' | 'many', infer T> ? Omit<UpdateData<TargetFields<T>, TargetName<T>>, InverseOf<N, K, X>> : never;
|
|
115
|
+
/**
|
|
116
|
+
* A `one` is connected or created; `connectOrCreate` only where the caller
|
|
117
|
+
* writes it, as rules and hooks see it resolved (D-138).
|
|
118
|
+
*/
|
|
119
|
+
type Connect<N, K, X, Resolved extends boolean = false> = {
|
|
120
|
+
readonly connect: Ref;
|
|
121
|
+
} | {
|
|
122
|
+
readonly create: Created<N, K, X>;
|
|
123
|
+
} | (Resolved extends true ? never : {
|
|
124
|
+
readonly connectOrCreate: OrCreate<N, K, X>;
|
|
125
|
+
});
|
|
126
|
+
/** A relation is connected or created (D-20, D-128, D-138). */
|
|
127
|
+
type CreateInput<X, N, K> = X extends Scalar ? WrittenValue<X> : X extends Relation<'one'> ? Connect<N, K, X> : {
|
|
128
|
+
readonly connect?: readonly Ref[];
|
|
129
|
+
readonly create?: readonly Created<N, K, X>[];
|
|
130
|
+
readonly connectOrCreate?: readonly OrCreate<N, K, X>[];
|
|
131
|
+
};
|
|
132
|
+
/** A plain number field: no list, no JSON, no plugin field type. */
|
|
133
|
+
type IsNumber<X> = X extends {
|
|
134
|
+
readonly [fieldType]: {
|
|
135
|
+
readonly value: infer V;
|
|
136
|
+
readonly input: infer I;
|
|
137
|
+
readonly json: false;
|
|
138
|
+
readonly stored: infer S;
|
|
139
|
+
};
|
|
140
|
+
} ? [V, I, S] extends [number, number, never] ? [number] extends [V] ? true : false : false : false;
|
|
141
|
+
/** Exactly one of `T`'s keys; `undefined` leaves the field as it is. */
|
|
142
|
+
type OneOf<T> = {
|
|
143
|
+
[K in keyof T]: {
|
|
144
|
+
readonly [P in K]: T[K] | undefined;
|
|
145
|
+
} & {
|
|
146
|
+
readonly [P in Exclude<keyof T, K>]?: never;
|
|
147
|
+
};
|
|
148
|
+
}[keyof T];
|
|
149
|
+
/** One operation on a number, computed on the row (D-132). */
|
|
150
|
+
type NumberUpdate<V> = OneOf<{
|
|
151
|
+
readonly set: V;
|
|
152
|
+
readonly increment: number;
|
|
153
|
+
readonly decrement: number;
|
|
154
|
+
readonly multiply: number;
|
|
155
|
+
readonly divide: number;
|
|
156
|
+
}>;
|
|
157
|
+
/** One operation on a list, with an element or a list of them (D-149). */
|
|
158
|
+
type ListUpdate<E> = OneOf<{
|
|
159
|
+
readonly set: E | readonly E[];
|
|
160
|
+
readonly push: E | readonly E[];
|
|
161
|
+
readonly pushUnique: E | readonly E[];
|
|
162
|
+
readonly remove: E | readonly E[];
|
|
163
|
+
}>;
|
|
164
|
+
/** A list's element type, `never` for any other field. */
|
|
165
|
+
type ElementOf<X> = X extends Scalar<unknown, {
|
|
166
|
+
readonly list: true;
|
|
167
|
+
}> ? WrittenValue<X> extends readonly (infer E)[] ? E : never : never;
|
|
168
|
+
/** A `one` the caller writes; rules and hooks see it resolved (D-138). */
|
|
169
|
+
type OneUpdate<N, K, X, O, Operations extends boolean> = Connect<N, K, X, Not<Operations>> | {
|
|
170
|
+
readonly update: Updated<N, K, X>;
|
|
171
|
+
} | (IsOptional<O> extends true ? {
|
|
172
|
+
readonly disconnect: true;
|
|
173
|
+
} | {
|
|
174
|
+
readonly delete: true;
|
|
175
|
+
} : never);
|
|
176
|
+
/** A `many` the caller writes; `set` reaches rules and hooks resolved. */
|
|
177
|
+
type ManyUpdate<N, K, X, Operations extends boolean> = {
|
|
178
|
+
readonly connect?: readonly Ref[];
|
|
179
|
+
readonly disconnect?: readonly Ref[];
|
|
180
|
+
readonly create?: readonly Created<N, K, X>[];
|
|
181
|
+
readonly update?: readonly {
|
|
182
|
+
readonly where: Target<X>;
|
|
183
|
+
readonly data: Updated<N, K, X>;
|
|
184
|
+
}[];
|
|
185
|
+
readonly delete?: readonly Target<X>[];
|
|
186
|
+
} & (Operations extends true ? {
|
|
187
|
+
readonly set?: readonly Ref[];
|
|
188
|
+
readonly connectOrCreate?: readonly OrCreate<N, K, X>[];
|
|
189
|
+
} : unknown);
|
|
190
|
+
type Not<B extends boolean> = B extends true ? false : true;
|
|
191
|
+
/**
|
|
192
|
+
* An optional `one` relation is unset with `disconnect: true` (D-20); with
|
|
193
|
+
* `Operations`, a number field also takes an operation (D-132), a list one
|
|
194
|
+
* (D-149), and a relation `set` and `connectOrCreate` (D-138).
|
|
195
|
+
*/
|
|
196
|
+
type UpdateInput<X, N, K, Operations extends boolean> = X extends Scalar ? Operations extends true ? IsNumber<X> extends true ? WrittenValue<X> | NumberUpdate<WrittenValue<X>> : [ElementOf<X>] extends [never] ? WrittenValue<X> : WrittenValue<X> | ListUpdate<ElementOf<X>> : WrittenValue<X> : X extends Relation<'one', unknown, infer O> ? OneUpdate<N, K, X, O, Operations> : ManyUpdate<N, K, X, Operations>;
|
|
197
|
+
type Needed<X> = X extends Scalar<unknown, infer O> ? IsOptional<O> extends true ? false : O extends {
|
|
198
|
+
readonly default: unknown;
|
|
199
|
+
} | {
|
|
200
|
+
readonly list: true;
|
|
201
|
+
} ? false : true : X extends Relation<'one', unknown, infer O> ? IsOptional<O> extends true ? false : O extends {
|
|
202
|
+
readonly default: unknown;
|
|
203
|
+
} ? false : true : false;
|
|
204
|
+
/** `V`'s fields but `E`, each required when `F` needs it to create a row. */
|
|
205
|
+
type Creating<F, E, V extends {
|
|
206
|
+
readonly [K in keyof F]: unknown;
|
|
207
|
+
}> = {
|
|
208
|
+
readonly [K in keyof F as K extends E ? never : Needed<F[K]> extends true ? K : never]: V[K];
|
|
209
|
+
} & {
|
|
210
|
+
readonly [K in keyof F as K extends E ? never : Needed<F[K]> extends true ? never : K]?: V[K] | undefined;
|
|
211
|
+
};
|
|
212
|
+
/**
|
|
213
|
+
* The data that creates a row of model `N`, without its views (D-151) nor
|
|
214
|
+
* field `E`: the relation back to the row that creates it (D-128). Code that does not know `N`
|
|
215
|
+
* leaves that relation to the kernel.
|
|
216
|
+
*/
|
|
217
|
+
export type CreateData<F, N = never, E = never> = Creating<F, E | Unwritten<F>, {
|
|
218
|
+
readonly [K in keyof F]: CreateInput<F[K], N, K>;
|
|
219
|
+
}>;
|
|
220
|
+
/** A row `createMany` creates: a `one` is connected, a `many` not written (D-135). */
|
|
221
|
+
export type CreateManyData<F> = Creating<F, {
|
|
222
|
+
[K in keyof F]: F[K] extends Relation<'many'> ? K : never;
|
|
223
|
+
}[keyof F] | VirtualKeys<F>, {
|
|
224
|
+
readonly [K in keyof F]: F[K] extends Scalar ? WrittenValue<F[K]> : {
|
|
225
|
+
readonly connect: Ref;
|
|
226
|
+
};
|
|
227
|
+
}>;
|
|
228
|
+
/**
|
|
229
|
+
* `undefined` leaves a field unchanged, as in Prisma (D-84). Rules and hooks
|
|
230
|
+
* see the data without `Operations`: each number and list as computed
|
|
231
|
+
* (D-132, D-149), each relation resolved (D-138).
|
|
232
|
+
*/
|
|
233
|
+
export type UpdateData<F, N = never, Operations extends boolean = true> = {
|
|
234
|
+
readonly [K in keyof F as K extends Unwritten<F> ? never : K]?: UpdateInput<F[K], N, K, Operations> | undefined;
|
|
235
|
+
};
|
|
236
|
+
/** The views and virtuals of `F`, which no data writes (D-151). */
|
|
237
|
+
type Unwritten<F> = Views<F> | VirtualKeys<F>;
|
|
238
|
+
type Views<F> = {
|
|
239
|
+
[K in keyof F]: F[K] extends Relation<'many', unknown, {
|
|
240
|
+
readonly from: string;
|
|
241
|
+
}> ? K : never;
|
|
242
|
+
}[keyof F];
|
|
243
|
+
/** The data `updateMany` writes on each row: scalars only (D-133). */
|
|
244
|
+
export type UpdateManyData<F> = Pick<UpdateData<F>, ScalarKeys<F> & keyof UpdateData<F>>;
|
|
245
|
+
export type ScalarKeys<F> = {
|
|
246
|
+
[K in keyof F]: F[K] extends Scalar ? K : never;
|
|
247
|
+
}[keyof F];
|
|
248
|
+
export type UniqueKeys<F> = {
|
|
249
|
+
[K in keyof F]: F[K] extends Scalar<unknown, {
|
|
250
|
+
readonly unique: true;
|
|
251
|
+
}> ? K : never;
|
|
252
|
+
}[keyof F];
|
|
253
|
+
export type RelationKeys<F> = {
|
|
254
|
+
[K in keyof F]: F[K] extends Relation<'one' | 'many'> ? K : never;
|
|
255
|
+
}[keyof F];
|
|
256
|
+
export {};
|
|
257
|
+
//# sourceMappingURL=record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../src/record.ts"],"names":[],"mappings":"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"}
|
package/dist/record.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { AggregateRead, CountRead, Filter, Read, Row } from './adapter.ts';
|
|
2
|
+
import type { Models } from './query-where.ts';
|
|
3
|
+
/** What one read reached. */
|
|
4
|
+
export type Recorded = {
|
|
5
|
+
readonly model: string;
|
|
6
|
+
/** Absent, the read reached every row of the model. */
|
|
7
|
+
readonly where?: Filter;
|
|
8
|
+
/** The rows it found; absent for a count, or rows it did not list. */
|
|
9
|
+
readonly ids?: readonly string[];
|
|
10
|
+
/** The relation, as `Model.field`, it followed from another read's rows. */
|
|
11
|
+
readonly relation?: string;
|
|
12
|
+
/** The fields it returned or aggregated; absent, every field. */
|
|
13
|
+
readonly fields?: readonly string[];
|
|
14
|
+
/**
|
|
15
|
+
* The fields that chose and ordered its rows: its filter's, sort's and
|
|
16
|
+
* keys'; absent, it may depend on any field.
|
|
17
|
+
*/
|
|
18
|
+
readonly filters?: readonly string[];
|
|
19
|
+
};
|
|
20
|
+
/** Runs `run`, keeping each read the kernel makes until it settles. */
|
|
21
|
+
export declare function recording<R>(run: () => Promise<R>): Promise<{
|
|
22
|
+
readonly result: R;
|
|
23
|
+
readonly reads: readonly Recorded[];
|
|
24
|
+
readonly expires?: Date;
|
|
25
|
+
}>;
|
|
26
|
+
/** Keeps `at` when it is the earliest expiry, if a recording runs. */
|
|
27
|
+
export declare function recordExpiry(at: Date): void;
|
|
28
|
+
/** Keeps a find, if a recording runs. */
|
|
29
|
+
export declare function recordFind(models: Models, read: Read, rows: readonly Row[]): void;
|
|
30
|
+
/** Keeps a count or an aggregate, if a recording runs. */
|
|
31
|
+
export declare function recordCount(models: Models, read: CountRead | AggregateRead): void;
|
|
32
|
+
//# sourceMappingURL=recorder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recorder.d.ts","sourceRoot":"","sources":["../src/recorder.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACX,aAAa,EACb,SAAS,EACT,MAAM,EAGN,IAAI,EACJ,GAAG,EAEH,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAG9C,6BAA6B;AAC7B,MAAM,MAAM,QAAQ,GAAG;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,uDAAuD;IACvD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,sEAAsE;IACtE,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,iEAAiE;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACpC,CAAA;AAMD,uEAAuE;AACvE,wBAAsB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IAClE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAClB,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAA;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAA;CACvB,CAAC,CASD;AAED,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,EAAE,EAAE,IAAI,GAAG,IAAI,CAM3C;AA4GD,yCAAyC;AACzC,wBAAgB,UAAU,CACzB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,SAAS,GAAG,EAAE,GAClB,IAAI,CAWN;AAED,0DAA0D;AAC1D,wBAAgB,WAAW,CAC1B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,SAAS,GAAG,aAAa,GAC7B,IAAI,CAkBN"}
|