effect-dynamodb 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/LICENSE +21 -0
- package/README.md +69 -0
- package/dist/Aggregate.d.ts +210 -0
- package/dist/Aggregate.d.ts.map +1 -0
- package/dist/Aggregate.js +1169 -0
- package/dist/Aggregate.js.map +1 -0
- package/dist/Batch.d.ts +62 -0
- package/dist/Batch.d.ts.map +1 -0
- package/dist/Batch.js +218 -0
- package/dist/Batch.js.map +1 -0
- package/dist/Collection.d.ts +58 -0
- package/dist/Collection.d.ts.map +1 -0
- package/dist/Collection.js +195 -0
- package/dist/Collection.js.map +1 -0
- package/dist/Collections.d.ts +121 -0
- package/dist/Collections.d.ts.map +1 -0
- package/dist/Collections.js +121 -0
- package/dist/Collections.js.map +1 -0
- package/dist/DynamoClient.d.ts +317 -0
- package/dist/DynamoClient.d.ts.map +1 -0
- package/dist/DynamoClient.js +653 -0
- package/dist/DynamoClient.js.map +1 -0
- package/dist/DynamoModel.d.ts +278 -0
- package/dist/DynamoModel.d.ts.map +1 -0
- package/dist/DynamoModel.js +453 -0
- package/dist/DynamoModel.js.map +1 -0
- package/dist/DynamoSchema.d.ts +137 -0
- package/dist/DynamoSchema.d.ts.map +1 -0
- package/dist/DynamoSchema.js +188 -0
- package/dist/DynamoSchema.js.map +1 -0
- package/dist/Entity.d.ts +628 -0
- package/dist/Entity.d.ts.map +1 -0
- package/dist/Entity.js +2371 -0
- package/dist/Entity.js.map +1 -0
- package/dist/Errors.d.ts +227 -0
- package/dist/Errors.d.ts.map +1 -0
- package/dist/Errors.js +93 -0
- package/dist/Errors.js.map +1 -0
- package/dist/EventStore.d.ts +208 -0
- package/dist/EventStore.d.ts.map +1 -0
- package/dist/EventStore.js +333 -0
- package/dist/EventStore.js.map +1 -0
- package/dist/Expression.d.ts +50 -0
- package/dist/Expression.d.ts.map +1 -0
- package/dist/Expression.js +170 -0
- package/dist/Expression.js.map +1 -0
- package/dist/KeyComposer.d.ts +125 -0
- package/dist/KeyComposer.d.ts.map +1 -0
- package/dist/KeyComposer.js +257 -0
- package/dist/KeyComposer.js.map +1 -0
- package/dist/Marshaller.d.ts +30 -0
- package/dist/Marshaller.d.ts.map +1 -0
- package/dist/Marshaller.js +115 -0
- package/dist/Marshaller.js.map +1 -0
- package/dist/Projection.d.ts +28 -0
- package/dist/Projection.d.ts.map +1 -0
- package/dist/Projection.js +39 -0
- package/dist/Projection.js.map +1 -0
- package/dist/Query.d.ts +214 -0
- package/dist/Query.d.ts.map +1 -0
- package/dist/Query.js +397 -0
- package/dist/Query.js.map +1 -0
- package/dist/Table.d.ts +178 -0
- package/dist/Table.d.ts.map +1 -0
- package/dist/Table.js +211 -0
- package/dist/Table.js.map +1 -0
- package/dist/Transaction.d.ts +79 -0
- package/dist/Transaction.d.ts.map +1 -0
- package/dist/Transaction.js +215 -0
- package/dist/Transaction.js.map +1 -0
- package/dist/_AggregateCursor.d.ts +44 -0
- package/dist/_AggregateCursor.d.ts.map +1 -0
- package/dist/_AggregateCursor.js +18 -0
- package/dist/_AggregateCursor.js.map +1 -0
- package/dist/_AggregateEdges.d.ts +77 -0
- package/dist/_AggregateEdges.d.ts.map +1 -0
- package/dist/_AggregateEdges.js +41 -0
- package/dist/_AggregateEdges.js.map +1 -0
- package/dist/_AggregateSchemas.d.ts +69 -0
- package/dist/_AggregateSchemas.d.ts.map +1 -0
- package/dist/_AggregateSchemas.js +194 -0
- package/dist/_AggregateSchemas.js.map +1 -0
- package/dist/_AggregateTypes.d.ts +94 -0
- package/dist/_AggregateTypes.d.ts.map +1 -0
- package/dist/_AggregateTypes.js +7 -0
- package/dist/_AggregateTypes.js.map +1 -0
- package/dist/_EntityCombinators.d.ts +155 -0
- package/dist/_EntityCombinators.d.ts.map +1 -0
- package/dist/_EntityCombinators.js +158 -0
- package/dist/_EntityCombinators.js.map +1 -0
- package/dist/_EntityConfig.d.ts +100 -0
- package/dist/_EntityConfig.d.ts.map +1 -0
- package/dist/_EntityConfig.js +7 -0
- package/dist/_EntityConfig.js.map +1 -0
- package/dist/_EntityOps.d.ts +205 -0
- package/dist/_EntityOps.d.ts.map +1 -0
- package/dist/_EntityOps.js +137 -0
- package/dist/_EntityOps.js.map +1 -0
- package/dist/_EntitySchemas.d.ts +57 -0
- package/dist/_EntitySchemas.d.ts.map +1 -0
- package/dist/_EntitySchemas.js +298 -0
- package/dist/_EntitySchemas.js.map +1 -0
- package/dist/_EntityTypes.d.ts +81 -0
- package/dist/_EntityTypes.d.ts.map +1 -0
- package/dist/_EntityTypes.js +7 -0
- package/dist/_EntityTypes.js.map +1 -0
- package/dist/_sparse_check.d.ts +2 -0
- package/dist/_sparse_check.d.ts.map +1 -0
- package/dist/_sparse_check.js +193 -0
- package/dist/_sparse_check.js.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/AggregateCursor.d.ts +44 -0
- package/dist/internal/AggregateCursor.d.ts.map +1 -0
- package/dist/internal/AggregateCursor.js +18 -0
- package/dist/internal/AggregateCursor.js.map +1 -0
- package/dist/internal/AggregateEdges.d.ts +77 -0
- package/dist/internal/AggregateEdges.d.ts.map +1 -0
- package/dist/internal/AggregateEdges.js +41 -0
- package/dist/internal/AggregateEdges.js.map +1 -0
- package/dist/internal/AggregateSchemas.d.ts +69 -0
- package/dist/internal/AggregateSchemas.d.ts.map +1 -0
- package/dist/internal/AggregateSchemas.js +193 -0
- package/dist/internal/AggregateSchemas.js.map +1 -0
- package/dist/internal/AggregateTypes.d.ts +94 -0
- package/dist/internal/AggregateTypes.d.ts.map +1 -0
- package/dist/internal/AggregateTypes.js +7 -0
- package/dist/internal/AggregateTypes.js.map +1 -0
- package/dist/internal/BoundQuery.d.ts +107 -0
- package/dist/internal/BoundQuery.d.ts.map +1 -0
- package/dist/internal/BoundQuery.js +111 -0
- package/dist/internal/BoundQuery.js.map +1 -0
- package/dist/internal/EntityCombinators.d.ts +173 -0
- package/dist/internal/EntityCombinators.d.ts.map +1 -0
- package/dist/internal/EntityCombinators.js +183 -0
- package/dist/internal/EntityCombinators.js.map +1 -0
- package/dist/internal/EntityConfig.d.ts +100 -0
- package/dist/internal/EntityConfig.d.ts.map +1 -0
- package/dist/internal/EntityConfig.js +7 -0
- package/dist/internal/EntityConfig.js.map +1 -0
- package/dist/internal/EntityOps.d.ts +268 -0
- package/dist/internal/EntityOps.d.ts.map +1 -0
- package/dist/internal/EntityOps.js +153 -0
- package/dist/internal/EntityOps.js.map +1 -0
- package/dist/internal/EntitySchemas.d.ts +57 -0
- package/dist/internal/EntitySchemas.d.ts.map +1 -0
- package/dist/internal/EntitySchemas.js +299 -0
- package/dist/internal/EntitySchemas.js.map +1 -0
- package/dist/internal/EntityTypes.d.ts +128 -0
- package/dist/internal/EntityTypes.d.ts.map +1 -0
- package/dist/internal/EntityTypes.js +7 -0
- package/dist/internal/EntityTypes.js.map +1 -0
- package/dist/internal/Expr.d.ts +141 -0
- package/dist/internal/Expr.d.ts.map +1 -0
- package/dist/internal/Expr.js +332 -0
- package/dist/internal/Expr.js.map +1 -0
- package/dist/internal/PathBuilder.d.ts +88 -0
- package/dist/internal/PathBuilder.d.ts.map +1 -0
- package/dist/internal/PathBuilder.js +100 -0
- package/dist/internal/PathBuilder.js.map +1 -0
- package/dist/internal/TransactableOps.d.ts +25 -0
- package/dist/internal/TransactableOps.d.ts.map +1 -0
- package/dist/internal/TransactableOps.js +58 -0
- package/dist/internal/TransactableOps.js.map +1 -0
- package/dist/internal/sparse_check.d.ts +2 -0
- package/dist/internal/sparse_check.d.ts.map +1 -0
- package/dist/internal/sparse_check.js +196 -0
- package/dist/internal/sparse_check.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @internal Aggregate type-level computations — derived types for Aggregate operations.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from Aggregate.ts for decomposition. Not part of the public API.
|
|
5
|
+
*/
|
|
6
|
+
import type { Schema } from "effect";
|
|
7
|
+
import type { DiscriminatorConfig, UpdateContext } from "./AggregateCursor.js";
|
|
8
|
+
import type { AggregateEdge, ManyEdge, OneEdge, RefEdge } from "./AggregateEdges.js";
|
|
9
|
+
/**
|
|
10
|
+
* A composable sub-aggregate definition — a graph shape that can be embedded
|
|
11
|
+
* in a parent aggregate via `.with()`.
|
|
12
|
+
*/
|
|
13
|
+
export interface SubAggregate<TSchema extends Schema.Top, TEdges extends Record<string, AggregateEdge | BoundSubAggregate<any, any>> = Record<string, AggregateEdge | BoundSubAggregate<any, any>>> {
|
|
14
|
+
readonly _tag: "SubAggregate";
|
|
15
|
+
readonly schema: TSchema;
|
|
16
|
+
readonly root: {
|
|
17
|
+
readonly entityType: string;
|
|
18
|
+
};
|
|
19
|
+
readonly edges: TEdges;
|
|
20
|
+
/** Bind with discriminator values to distinguish multiple embeddings */
|
|
21
|
+
readonly with: (config: DiscriminatorConfig) => BoundSubAggregate<TSchema, TEdges>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* A sub-aggregate bound with discriminator values, ready to embed in a parent.
|
|
25
|
+
*/
|
|
26
|
+
export interface BoundSubAggregate<TSchema extends Schema.Top, TEdges extends Record<string, AggregateEdge | BoundSubAggregate<any, any>> = Record<string, AggregateEdge | BoundSubAggregate<any, any>>> {
|
|
27
|
+
readonly _tag: "BoundSubAggregate";
|
|
28
|
+
readonly aggregate: SubAggregate<TSchema, TEdges>;
|
|
29
|
+
readonly discriminator: Record<string, unknown>;
|
|
30
|
+
}
|
|
31
|
+
/** Extract the domain type from an Aggregate */
|
|
32
|
+
export type Type<T> = T extends {
|
|
33
|
+
readonly schema: infer S extends Schema.Top;
|
|
34
|
+
} ? Schema.Schema.Type<S> : never;
|
|
35
|
+
/** Extract the key type from an Aggregate */
|
|
36
|
+
export type Key<T> = T extends {
|
|
37
|
+
readonly get: (key: infer K) => any;
|
|
38
|
+
} ? K : never;
|
|
39
|
+
/** Extract the input type from an Aggregate */
|
|
40
|
+
export type Input<T> = T extends {
|
|
41
|
+
readonly inputSchema: Schema.Codec<infer I>;
|
|
42
|
+
} ? I : never;
|
|
43
|
+
/** Extract the update mutation function type from an Aggregate */
|
|
44
|
+
export type UpdateFn<T> = T extends {
|
|
45
|
+
readonly schema: infer S extends Schema.Top;
|
|
46
|
+
} ? (context: UpdateContext<S["Iso"], Schema.Schema.Type<S>>) => Schema.Schema.Type<S> | S["Iso"] : never;
|
|
47
|
+
/**
|
|
48
|
+
* Compute the aggregate input type from the domain model, edges, and PK composites.
|
|
49
|
+
*
|
|
50
|
+
* - OneEdge / RefEdge fields → `${field}Id: string`
|
|
51
|
+
* - BoundSubAggregate fields → recursed
|
|
52
|
+
* - ManyEdge fields → array elements recursed for ref replacement
|
|
53
|
+
* - PK composites → omitted
|
|
54
|
+
* - Everything else → kept as-is
|
|
55
|
+
*/
|
|
56
|
+
export type AggregateInputType<TModel, TEdges extends Record<string, AggregateEdge | BoundSubAggregate<any, any>>, TPK extends ReadonlyArray<string>> = _Simplify<{
|
|
57
|
+
readonly [K in keyof TModel as K extends keyof TEdges ? never : K extends TPK[number] ? never : K]: _StripUndefined<TModel[K]>;
|
|
58
|
+
} & {
|
|
59
|
+
readonly [K in keyof TEdges as TEdges[K] extends OneEdge | RefEdge ? _IsOptionalIn<TModel, K> extends true ? never : `${K & string}Id` : never]: string;
|
|
60
|
+
} & {
|
|
61
|
+
readonly [K in keyof TEdges as TEdges[K] extends OneEdge | RefEdge ? _IsOptionalIn<TModel, K> extends true ? `${K & string}Id` : never : never]?: string;
|
|
62
|
+
} & {
|
|
63
|
+
readonly [K in keyof TEdges as TEdges[K] extends BoundSubAggregate<any, any> ? _IsOptionalIn<TModel, K> extends true ? never : K : never]: TEdges[K] extends BoundSubAggregate<infer S, infer E> ? AggregateInputType<Schema.Schema.Type<S>, E, []> : never;
|
|
64
|
+
} & {
|
|
65
|
+
readonly [K in keyof TEdges as TEdges[K] extends BoundSubAggregate<any, any> ? _IsOptionalIn<TModel, K> extends true ? K : never : never]?: TEdges[K] extends BoundSubAggregate<infer S, infer E> ? AggregateInputType<Schema.Schema.Type<S>, E, []> : never;
|
|
66
|
+
} & {
|
|
67
|
+
readonly [K in keyof TEdges as TEdges[K] extends ManyEdge ? _IsOptionalIn<TModel, K> extends true ? never : TEdges[K] extends {
|
|
68
|
+
readonly inputField: infer IF extends string;
|
|
69
|
+
} ? IF : K : never]: K extends keyof TModel ? _TransformManyEdge<TModel[K]> : never;
|
|
70
|
+
} & {
|
|
71
|
+
readonly [K in keyof TEdges as TEdges[K] extends ManyEdge ? _IsOptionalIn<TModel, K> extends true ? TEdges[K] extends {
|
|
72
|
+
readonly inputField: infer IF extends string;
|
|
73
|
+
} ? IF : K : never : never]?: K extends keyof TModel ? _TransformManyEdge<TModel[K]> : never;
|
|
74
|
+
}>;
|
|
75
|
+
/** Detect ref-like types: objects with an `id: string` property (Schema.Class entities) */
|
|
76
|
+
type _IsRefLike<T> = T extends {
|
|
77
|
+
readonly id: string;
|
|
78
|
+
} ? string extends keyof T ? false : true : false;
|
|
79
|
+
/** Transform an object's ref-like fields to `${field}Id: string` */
|
|
80
|
+
type _RefFieldsToIds<T> = _Simplify<{
|
|
81
|
+
readonly [K in keyof T as _IsRefLike<T[K]> extends true ? `${K & string}Id` : K]: _IsRefLike<T[K]> extends true ? string : T[K];
|
|
82
|
+
}>;
|
|
83
|
+
/** Distribute over unions (e.g., ReadonlyArray<T> | undefined) to transform array elements */
|
|
84
|
+
type _TransformManyEdge<T> = T extends ReadonlyArray<infer E> ? _IsRefLike<E> extends true ? ReadonlyArray<string> : ReadonlyArray<_RefFieldsToIds<E>> : T;
|
|
85
|
+
/** Check if key K is an optional property of T */
|
|
86
|
+
type _IsOptionalIn<T, K> = K extends keyof T ? ({} extends Pick<T, K> ? true : false) : false;
|
|
87
|
+
/** Strip `undefined` from optional field value types — the `?` modifier already expresses optionality */
|
|
88
|
+
type _StripUndefined<T> = undefined extends T ? Exclude<T, undefined> : T;
|
|
89
|
+
/** Flatten intersection types — `extends infer O` breaks the alias chain for eager IDE expansion */
|
|
90
|
+
type _Simplify<T> = T extends infer O ? {
|
|
91
|
+
[K in keyof O]: O[K];
|
|
92
|
+
} : never;
|
|
93
|
+
export {};
|
|
94
|
+
//# sourceMappingURL=AggregateTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AggregateTypes.d.ts","sourceRoot":"","sources":["../../src/internal/AggregateTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AggregateTypes.js","sourceRoot":"","sources":["../../src/internal/AggregateTypes.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @internal BoundQuery — Fluent query builder with pre-resolved services.
|
|
3
|
+
*
|
|
4
|
+
* `BoundQuery<Model, SkRemaining, A>` wraps a `Query<A>` with a pre-resolved
|
|
5
|
+
* `provide` function so all terminals return `Effect` with `R = never`.
|
|
6
|
+
*
|
|
7
|
+
* - Combinators return a new `BoundQuery` (immutable).
|
|
8
|
+
* - `where` consumes `SkRemaining` → `BoundQuery<Model, never, A>`.
|
|
9
|
+
* - `where` is only available when `SkRemaining` is not `never`.
|
|
10
|
+
* - Terminals: `fetch`, `collect`, `paginate`, `count`.
|
|
11
|
+
*/
|
|
12
|
+
import { type Effect, Stream } from "effect";
|
|
13
|
+
import type { DynamoClientError } from "../DynamoClient.js";
|
|
14
|
+
import type { ValidationError } from "../Errors.js";
|
|
15
|
+
import * as Query from "../Query.js";
|
|
16
|
+
import type { ConditionOps, ConditionShorthand, Expr } from "./Expr.js";
|
|
17
|
+
import type { Path, PathBuilder } from "./PathBuilder.js";
|
|
18
|
+
/** Sort key condition operators for `.where()` callback.
|
|
19
|
+
* The `field` parameter accepts values from `t` (e.g. `t.status`). */
|
|
20
|
+
export interface SkConditionOps<SK = Record<string, unknown>> {
|
|
21
|
+
readonly eq: (field: SK[keyof SK], value: string) => Query.SortKeyCondition;
|
|
22
|
+
readonly lt: (field: SK[keyof SK], value: string) => Query.SortKeyCondition;
|
|
23
|
+
readonly lte: (field: SK[keyof SK], value: string) => Query.SortKeyCondition;
|
|
24
|
+
readonly gt: (field: SK[keyof SK], value: string) => Query.SortKeyCondition;
|
|
25
|
+
readonly gte: (field: SK[keyof SK], value: string) => Query.SortKeyCondition;
|
|
26
|
+
readonly between: (field: SK[keyof SK], low: string, high: string) => Query.SortKeyCondition;
|
|
27
|
+
readonly beginsWith: (field: SK[keyof SK], prefix: string) => Query.SortKeyCondition;
|
|
28
|
+
}
|
|
29
|
+
export interface BoundQueryBase<Model, SkRemaining, A> {
|
|
30
|
+
/** Add a filter expression (post-read). Callback or shorthand. */
|
|
31
|
+
readonly filter: {
|
|
32
|
+
(fn: (t: PathBuilder<Model, Model, never>, ops: ConditionOps<Model>) => Expr): BoundQuery<Model, SkRemaining, A>;
|
|
33
|
+
(shorthand: ConditionShorthand): BoundQuery<Model, SkRemaining, A>;
|
|
34
|
+
};
|
|
35
|
+
/** Select specific attributes (projection). Callback or string array. */
|
|
36
|
+
readonly select: {
|
|
37
|
+
(fn: (t: PathBuilder<Model, Model, never>) => ReadonlyArray<Path<Model, any, any>>): BoundQuery<Model, SkRemaining, Record<string, unknown>>;
|
|
38
|
+
(attributes: ReadonlyArray<string>): BoundQuery<Model, SkRemaining, Record<string, unknown>>;
|
|
39
|
+
};
|
|
40
|
+
/** Set the maximum number of items per DynamoDB page. */
|
|
41
|
+
readonly limit: (n: number) => BoundQuery<Model, SkRemaining, A>;
|
|
42
|
+
/** Set the maximum number of DynamoDB pages to fetch. */
|
|
43
|
+
readonly maxPages: (n: number) => BoundQuery<Model, SkRemaining, A>;
|
|
44
|
+
/** Reverse the sort order (ScanIndexForward = false). */
|
|
45
|
+
readonly reverse: () => BoundQuery<Model, SkRemaining, A>;
|
|
46
|
+
/** Resume pagination from an opaque cursor. */
|
|
47
|
+
readonly startFrom: (cursor: string) => BoundQuery<Model, SkRemaining, A>;
|
|
48
|
+
/** Enable consistent reads. */
|
|
49
|
+
readonly consistentRead: () => BoundQuery<Model, SkRemaining, A>;
|
|
50
|
+
/** Skip the __edd_e__ entity type filter. */
|
|
51
|
+
readonly ignoreOwnership: () => BoundQuery<Model, SkRemaining, A>;
|
|
52
|
+
/** Execute a single page. Returns items + opaque cursor. */
|
|
53
|
+
readonly fetch: () => Effect.Effect<Query.Page<A>, DynamoClientError | ValidationError, never>;
|
|
54
|
+
/** Execute and collect all pages into a single array. */
|
|
55
|
+
readonly collect: () => Effect.Effect<Array<A>, DynamoClientError | ValidationError, never>;
|
|
56
|
+
/** Execute and return a lazy Stream of items. Automatically paginates. */
|
|
57
|
+
readonly paginate: () => Stream.Stream<A, DynamoClientError | ValidationError, never>;
|
|
58
|
+
/** Execute a count-only query (no items returned). */
|
|
59
|
+
readonly count: () => Effect.Effect<number, DynamoClientError, never>;
|
|
60
|
+
}
|
|
61
|
+
export interface BoundQueryWithWhere<Model, SkRemaining, A> {
|
|
62
|
+
/**
|
|
63
|
+
* Sort key condition on remaining SK composites.
|
|
64
|
+
* Consumes SkRemaining — cannot be called twice.
|
|
65
|
+
*
|
|
66
|
+
* ```ts
|
|
67
|
+
* .where((t, { beginsWith }) => beginsWith(t.status, "d"))
|
|
68
|
+
* .where((t, { eq }) => eq(t.status, "done"))
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
readonly where: (fn: (t: SkRemaining, ops: SkConditionOps<SkRemaining>) => Query.SortKeyCondition) => BoundQuery<Model, never, A>;
|
|
72
|
+
}
|
|
73
|
+
export type BoundQuery<Model, SkRemaining, A> = BoundQueryBase<Model, SkRemaining, A> & ([SkRemaining] extends [never] ? {} : BoundQueryWithWhere<Model, SkRemaining, A>);
|
|
74
|
+
/** @internal */
|
|
75
|
+
export interface BoundQueryConfig<Model> {
|
|
76
|
+
readonly pathBuilder: PathBuilder<Model, Model, never>;
|
|
77
|
+
readonly conditionOps: ConditionOps<Model>;
|
|
78
|
+
/** SK composite field names for building the SkAccessor in `.where()`. */
|
|
79
|
+
readonly skFields?: ReadonlyArray<string> | undefined;
|
|
80
|
+
readonly provide: <X, E>(eff: Effect.Effect<X, E, any>) => Effect.Effect<X, E, never>;
|
|
81
|
+
/** Optional: transform SK condition (e.g., compose prefix for partial composites) */
|
|
82
|
+
readonly composeSkCondition?: (condition: Query.SortKeyCondition) => Query.SortKeyCondition;
|
|
83
|
+
}
|
|
84
|
+
/** @internal */
|
|
85
|
+
export declare class BoundQueryImpl<Model, SkRemaining, A> {
|
|
86
|
+
readonly _query: Query.Query<A>;
|
|
87
|
+
readonly _config: BoundQueryConfig<Model>;
|
|
88
|
+
constructor(_query: Query.Query<A>, _config: BoundQueryConfig<Model>);
|
|
89
|
+
where(fn: (t: SkRemaining, ops: SkConditionOps<SkRemaining>) => Query.SortKeyCondition): BoundQueryImpl<Model, never, A>;
|
|
90
|
+
filter(fnOrShorthand: ((t: PathBuilder<Model, Model, never>, ops: ConditionOps<Model>) => Expr) | ConditionShorthand): BoundQueryImpl<Model, SkRemaining, A>;
|
|
91
|
+
select(fnOrAttrs: ((t: PathBuilder<Model, Model, never>) => ReadonlyArray<Path<Model, any, any>>) | ReadonlyArray<string>): BoundQueryImpl<Model, SkRemaining, Record<string, unknown>>;
|
|
92
|
+
limit(n: number): BoundQueryImpl<Model, SkRemaining, A>;
|
|
93
|
+
maxPages(n: number): BoundQueryImpl<Model, SkRemaining, A>;
|
|
94
|
+
reverse(): BoundQueryImpl<Model, SkRemaining, A>;
|
|
95
|
+
startFrom(cursor: string): BoundQueryImpl<Model, SkRemaining, A>;
|
|
96
|
+
consistentRead(): BoundQueryImpl<Model, SkRemaining, A>;
|
|
97
|
+
ignoreOwnership(): BoundQueryImpl<Model, SkRemaining, A>;
|
|
98
|
+
fetch(): Effect.Effect<Query.Page<A>, DynamoClientError | ValidationError, never>;
|
|
99
|
+
collect(): Effect.Effect<Array<A>, DynamoClientError | ValidationError, never>;
|
|
100
|
+
paginate(): Stream.Stream<A, DynamoClientError | ValidationError, never>;
|
|
101
|
+
count(): Effect.Effect<number, DynamoClientError, never>;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* @internal Create a BoundQuery wrapping a Query with pre-resolved config.
|
|
105
|
+
*/
|
|
106
|
+
export declare const makeBoundQuery: <Model, SkRemaining, A>(query: Query.Query<A>, config: BoundQueryConfig<Model>) => BoundQuery<Model, SkRemaining, A>;
|
|
107
|
+
//# sourceMappingURL=BoundQuery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BoundQuery.d.ts","sourceRoot":"","sources":["../../src/internal/BoundQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @internal BoundQuery — Fluent query builder with pre-resolved services.
|
|
3
|
+
*
|
|
4
|
+
* `BoundQuery<Model, SkRemaining, A>` wraps a `Query<A>` with a pre-resolved
|
|
5
|
+
* `provide` function so all terminals return `Effect` with `R = never`.
|
|
6
|
+
*
|
|
7
|
+
* - Combinators return a new `BoundQuery` (immutable).
|
|
8
|
+
* - `where` consumes `SkRemaining` → `BoundQuery<Model, never, A>`.
|
|
9
|
+
* - `where` is only available when `SkRemaining` is not `never`.
|
|
10
|
+
* - Terminals: `fetch`, `collect`, `paginate`, `count`.
|
|
11
|
+
*/
|
|
12
|
+
import { Stream } from "effect";
|
|
13
|
+
import * as Query from "../Query.js";
|
|
14
|
+
import { parseSimpleShorthand } from "./Expr.js";
|
|
15
|
+
const skConditionOps = {
|
|
16
|
+
eq: (_field, value) => ({ eq: value }),
|
|
17
|
+
lt: (_field, value) => ({ lt: value }),
|
|
18
|
+
lte: (_field, value) => ({ lte: value }),
|
|
19
|
+
gt: (_field, value) => ({ gt: value }),
|
|
20
|
+
gte: (_field, value) => ({ gte: value }),
|
|
21
|
+
between: (_field, low, high) => ({ between: [low, high] }),
|
|
22
|
+
beginsWith: (_field, prefix) => ({ beginsWith: prefix }),
|
|
23
|
+
};
|
|
24
|
+
/** Build the runtime sk accessor object — each property returns its field name. */
|
|
25
|
+
const buildSkAccessor = (fields) => {
|
|
26
|
+
const acc = {};
|
|
27
|
+
for (const f of fields)
|
|
28
|
+
acc[f] = f;
|
|
29
|
+
return acc;
|
|
30
|
+
};
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
// BoundQuery implementation
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
/** @internal */
|
|
35
|
+
export class BoundQueryImpl {
|
|
36
|
+
_query;
|
|
37
|
+
_config;
|
|
38
|
+
constructor(_query, _config) {
|
|
39
|
+
this._query = _query;
|
|
40
|
+
this._config = _config;
|
|
41
|
+
}
|
|
42
|
+
// --- where ---
|
|
43
|
+
where(fn) {
|
|
44
|
+
const skAccessor = (this._config.skFields ? buildSkAccessor(this._config.skFields) : {});
|
|
45
|
+
const condition = fn(skAccessor, skConditionOps);
|
|
46
|
+
const finalCondition = this._config.composeSkCondition
|
|
47
|
+
? this._config.composeSkCondition(condition)
|
|
48
|
+
: condition;
|
|
49
|
+
return new BoundQueryImpl(Query.where(this._query, finalCondition), this._config);
|
|
50
|
+
}
|
|
51
|
+
// --- filter ---
|
|
52
|
+
filter(fnOrShorthand) {
|
|
53
|
+
if (typeof fnOrShorthand === "function") {
|
|
54
|
+
const expr = fnOrShorthand(this._config.pathBuilder, this._config.conditionOps);
|
|
55
|
+
return new BoundQueryImpl(Query.filterExpr(this._query, expr), this._config);
|
|
56
|
+
}
|
|
57
|
+
// Shorthand object — parse to equality Expr then apply
|
|
58
|
+
const expr = parseSimpleShorthand(fnOrShorthand);
|
|
59
|
+
return new BoundQueryImpl(Query.filterExpr(this._query, expr), this._config);
|
|
60
|
+
}
|
|
61
|
+
// --- select ---
|
|
62
|
+
select(fnOrAttrs) {
|
|
63
|
+
if (typeof fnOrAttrs === "function") {
|
|
64
|
+
const paths = fnOrAttrs(this._config.pathBuilder);
|
|
65
|
+
const segments = paths.map((p) => p.segments);
|
|
66
|
+
return new BoundQueryImpl(Query.selectPaths(this._query, segments), this._config);
|
|
67
|
+
}
|
|
68
|
+
return new BoundQueryImpl(Query.select(this._query, fnOrAttrs), this._config);
|
|
69
|
+
}
|
|
70
|
+
// --- pagination & ordering ---
|
|
71
|
+
limit(n) {
|
|
72
|
+
return new BoundQueryImpl(Query.limit(this._query, n), this._config);
|
|
73
|
+
}
|
|
74
|
+
maxPages(n) {
|
|
75
|
+
return new BoundQueryImpl(Query.maxPages(this._query, n), this._config);
|
|
76
|
+
}
|
|
77
|
+
reverse() {
|
|
78
|
+
return new BoundQueryImpl(Query.reverse(this._query), this._config);
|
|
79
|
+
}
|
|
80
|
+
startFrom(cursor) {
|
|
81
|
+
return new BoundQueryImpl(Query.startFrom(this._query, cursor), this._config);
|
|
82
|
+
}
|
|
83
|
+
// --- read options ---
|
|
84
|
+
consistentRead() {
|
|
85
|
+
return new BoundQueryImpl(Query.consistentRead(this._query), this._config);
|
|
86
|
+
}
|
|
87
|
+
ignoreOwnership() {
|
|
88
|
+
return new BoundQueryImpl(Query.ignoreOwnership(this._query), this._config);
|
|
89
|
+
}
|
|
90
|
+
// --- terminals ---
|
|
91
|
+
fetch() {
|
|
92
|
+
return this._config.provide(Query.execute(this._query));
|
|
93
|
+
}
|
|
94
|
+
collect() {
|
|
95
|
+
return this._config.provide(Query.collect(this._query));
|
|
96
|
+
}
|
|
97
|
+
paginate() {
|
|
98
|
+
return Stream.unwrap(this._config.provide(Query.paginate(this._query))).pipe(Stream.flatMap((page) => Stream.fromIterable(page)));
|
|
99
|
+
}
|
|
100
|
+
count() {
|
|
101
|
+
return this._config.provide(Query.count(this._query));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// ---------------------------------------------------------------------------
|
|
105
|
+
// Factory functions
|
|
106
|
+
// ---------------------------------------------------------------------------
|
|
107
|
+
/**
|
|
108
|
+
* @internal Create a BoundQuery wrapping a Query with pre-resolved config.
|
|
109
|
+
*/
|
|
110
|
+
export const makeBoundQuery = (query, config) => new BoundQueryImpl(query, config);
|
|
111
|
+
//# sourceMappingURL=BoundQuery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BoundQuery.js","sourceRoot":"","sources":["../../src/internal/BoundQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @internal Entity operation combinators — terminal functions and update combinators.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from Entity.ts for decomposition. Not part of the public API.
|
|
5
|
+
*/
|
|
6
|
+
import type { AttributeValue } from "@aws-sdk/client-dynamodb";
|
|
7
|
+
import { type Effect } from "effect";
|
|
8
|
+
import type { CascadePartialFailure } from "../Errors.js";
|
|
9
|
+
import type { ConditionInput } from "../Expression.js";
|
|
10
|
+
import { type CascadeTarget, type EntityDelete, type EntityGet, type EntityOp, type EntityPut, type EntityUpdate, type PathAddOp, type PathAppendOp, type PathDeleteOp, type PathIfNotExistsOp, type PathPrependOp, type PathSetOp, type PathSubtractOp, type ReturnValuesMode } from "./EntityOps.js";
|
|
11
|
+
import type { Expr } from "./Expr.js";
|
|
12
|
+
/** Helper: extract Rec phantom type */
|
|
13
|
+
type ExtractRec<T> = T extends EntityOp<any, infer Rec, any, any> ? Rec : never;
|
|
14
|
+
/** Helper: extract E type */
|
|
15
|
+
type ExtractE<T> = T extends EntityOp<any, any, infer E, any> ? E : never;
|
|
16
|
+
/** Helper: extract R type */
|
|
17
|
+
type ExtractR<T> = T extends EntityOp<any, any, any, infer R> ? R : never;
|
|
18
|
+
/** Decode through model schema (default for yield*). Returns clean model class instance. */
|
|
19
|
+
export declare const asModel: <Self extends EntityOp<any, any, any, any>>(self: Self) => Effect.Effect<Self extends EntityOp<infer A, any, any, any> ? A : never, ExtractE<Self>, ExtractR<Self>>;
|
|
20
|
+
/** Decode through record schema (model + system fields). */
|
|
21
|
+
export declare const asRecord: <Self extends EntityOp<any, any, any, any>>(self: Self) => Effect.Effect<ExtractRec<Self>, ExtractE<Self>, ExtractR<Self>>;
|
|
22
|
+
/** Decode through item schema (model + system + keys + `__edd_e__`). Returns `Record<string, unknown>`. */
|
|
23
|
+
export declare const asItem: <Self extends EntityOp<any, any, any, any>>(self: Self) => Effect.Effect<globalThis.Record<string, unknown>, ExtractE<Self>, ExtractR<Self>>;
|
|
24
|
+
/** Return raw marshalled DynamoDB format (`Record<string, AttributeValue>`). No decode. */
|
|
25
|
+
export declare const asNative: <Self extends EntityOp<any, any, any, any>>(self: Self) => Effect.Effect<globalThis.Record<string, AttributeValue>, ExtractE<Self>, ExtractR<Self>>;
|
|
26
|
+
/**
|
|
27
|
+
* Set the fields to update.
|
|
28
|
+
*
|
|
29
|
+
* When updating GSI composite fields, the consumer is responsible for providing ALL
|
|
30
|
+
* composites for that GSI (fetch-merge pattern). If only some composites are provided,
|
|
31
|
+
* `extractComposites` in KeyComposer will throw during GSI key recomposition.
|
|
32
|
+
*
|
|
33
|
+
* When using `Entity.remove()` on a GSI composite attribute, the corresponding GSI
|
|
34
|
+
* key fields (pk/sk) are automatically removed so the item drops out of the sparse index.
|
|
35
|
+
*/
|
|
36
|
+
export declare const set: {
|
|
37
|
+
<Updates extends globalThis.Record<string, unknown>>(updates: Updates): <A, Rec, U, E, R>(self: EntityUpdate<A, Rec, U, E, R>) => EntityUpdate<A, Rec, U, E, R>;
|
|
38
|
+
<A, Rec, U, E, R>(self: EntityUpdate<A, Rec, U, E, R>, updates: NoInfer<U>): EntityUpdate<A, Rec, U, E, R>;
|
|
39
|
+
};
|
|
40
|
+
/** Set the expected version for optimistic locking. */
|
|
41
|
+
export declare const expectedVersion: {
|
|
42
|
+
(version: number): <A, Rec, U, E, R>(self: EntityUpdate<A, Rec, U, E, R>) => EntityUpdate<A, Rec, U, E, R>;
|
|
43
|
+
<A, Rec, U, E, R>(self: EntityUpdate<A, Rec, U, E, R>, version: number): EntityUpdate<A, Rec, U, E, R>;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Enable consistent reads on an EntityGet operation.
|
|
47
|
+
* Call with no arguments to enable (defaults to true).
|
|
48
|
+
*/
|
|
49
|
+
export declare const consistentRead: {
|
|
50
|
+
(): <A, Rec, E, R>(self: EntityGet<A, Rec, E, R>) => EntityGet<A, Rec, E, R>;
|
|
51
|
+
<A, Rec, E, R>(self: EntityGet<A, Rec, E, R>): EntityGet<A, Rec, E, R>;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Select specific attributes to return (ProjectionExpression) on an EntityGet.
|
|
55
|
+
* When projection is active, the result is a raw `Record<string, unknown>`
|
|
56
|
+
* instead of a decoded schema instance, since projected items may be partial.
|
|
57
|
+
*/
|
|
58
|
+
export declare const project: {
|
|
59
|
+
(attributes: ReadonlyArray<string>): <A, Rec, E, R>(self: EntityGet<A, Rec, E, R>) => EntityGet<globalThis.Record<string, unknown>, globalThis.Record<string, unknown>, E, R>;
|
|
60
|
+
<A, Rec, E, R>(self: EntityGet<A, Rec, E, R>, attributes: ReadonlyArray<string>): EntityGet<globalThis.Record<string, unknown>, globalThis.Record<string, unknown>, E, R>;
|
|
61
|
+
};
|
|
62
|
+
/** @internal Helper type for condition-compatible operations */
|
|
63
|
+
type ConditionTarget = EntityPut<any, any, any, any> | EntityUpdate<any, any, any, any, any> | EntityDelete<any, any>;
|
|
64
|
+
/**
|
|
65
|
+
* Add a condition expression to a put, update, or delete operation.
|
|
66
|
+
* The condition is evaluated server-side by DynamoDB. If it fails,
|
|
67
|
+
* the operation returns a `ConditionalCheckFailed` error.
|
|
68
|
+
*
|
|
69
|
+
* Accepts either a `ConditionInput` shorthand or a compiled `Expr` node.
|
|
70
|
+
* For updates, the user condition is ANDed with any optimistic lock condition.
|
|
71
|
+
*/
|
|
72
|
+
export declare const condition: {
|
|
73
|
+
(cond: Expr | ConditionInput): <T extends ConditionTarget>(self: T) => T;
|
|
74
|
+
<T extends ConditionTarget>(self: T, cond: Expr | ConditionInput): T;
|
|
75
|
+
};
|
|
76
|
+
/** @internal Helper type for returnValues-compatible operations */
|
|
77
|
+
type ReturnValuesTarget = EntityUpdate<any, any, any, any, any> | EntityDelete<any, any>;
|
|
78
|
+
/**
|
|
79
|
+
* Set the DynamoDB `ReturnValues` mode on an update or delete operation.
|
|
80
|
+
*
|
|
81
|
+
* Modes:
|
|
82
|
+
* - `"none"` — return nothing (default for delete)
|
|
83
|
+
* - `"allOld"` — return the item as it was before the operation
|
|
84
|
+
* - `"allNew"` — return the item as it is after the operation (default for update)
|
|
85
|
+
* - `"updatedOld"` — return only the updated attributes, with old values
|
|
86
|
+
* - `"updatedNew"` — return only the updated attributes, with new values
|
|
87
|
+
*
|
|
88
|
+
* For deletes, only `"none"` and `"allOld"` are valid DynamoDB modes.
|
|
89
|
+
*/
|
|
90
|
+
export declare const returnValues: {
|
|
91
|
+
(mode: ReturnValuesMode): <T extends ReturnValuesTarget>(self: T) => T;
|
|
92
|
+
<T extends ReturnValuesTarget>(self: T, mode: ReturnValuesMode): T;
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* Remove one or more attributes from the item.
|
|
96
|
+
* Produces a DynamoDB `REMOVE` clause.
|
|
97
|
+
*/
|
|
98
|
+
export declare const remove: {
|
|
99
|
+
(fields: ReadonlyArray<string>): <A, Rec, U, E, R>(self: EntityUpdate<A, Rec, U, E, R>) => EntityUpdate<A, Rec, U, E, R>;
|
|
100
|
+
<A, Rec, U, E, R>(self: EntityUpdate<A, Rec, U, E, R>, fields: ReadonlyArray<string>): EntityUpdate<A, Rec, U, E, R>;
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Atomically add numeric values to attributes.
|
|
104
|
+
* Produces a DynamoDB `ADD` clause. If the attribute doesn't exist,
|
|
105
|
+
* it is initialized to the provided value.
|
|
106
|
+
*/
|
|
107
|
+
export declare const add: {
|
|
108
|
+
(values: globalThis.Record<string, number>): <A, Rec, U, E, R>(self: EntityUpdate<A, Rec, U, E, R>) => EntityUpdate<A, Rec, U, E, R>;
|
|
109
|
+
<A, Rec, U, E, R>(self: EntityUpdate<A, Rec, U, E, R>, values: globalThis.Record<string, number>): EntityUpdate<A, Rec, U, E, R>;
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* Subtract numeric values from attributes.
|
|
113
|
+
* Synthesizes `SET #field = #field - :val` (DynamoDB has no native SUBTRACT).
|
|
114
|
+
*/
|
|
115
|
+
export declare const subtract: {
|
|
116
|
+
(values: globalThis.Record<string, number>): <A, Rec, U, E, R>(self: EntityUpdate<A, Rec, U, E, R>) => EntityUpdate<A, Rec, U, E, R>;
|
|
117
|
+
<A, Rec, U, E, R>(self: EntityUpdate<A, Rec, U, E, R>, values: globalThis.Record<string, number>): EntityUpdate<A, Rec, U, E, R>;
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* Append elements to list attributes.
|
|
121
|
+
* Synthesizes `SET #field = list_append(#field, :val)`.
|
|
122
|
+
*/
|
|
123
|
+
export declare const append: {
|
|
124
|
+
(values: globalThis.Record<string, ReadonlyArray<unknown>>): <A, Rec, U, E, R>(self: EntityUpdate<A, Rec, U, E, R>) => EntityUpdate<A, Rec, U, E, R>;
|
|
125
|
+
<A, Rec, U, E, R>(self: EntityUpdate<A, Rec, U, E, R>, values: globalThis.Record<string, ReadonlyArray<unknown>>): EntityUpdate<A, Rec, U, E, R>;
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* Delete elements from a set attribute.
|
|
129
|
+
* Produces a DynamoDB `DELETE` clause.
|
|
130
|
+
* The value should be a set (e.g., `{ tags: new Set(["old"]) }`).
|
|
131
|
+
*/
|
|
132
|
+
export declare const deleteFromSet: {
|
|
133
|
+
(values: globalThis.Record<string, unknown>): <A, Rec, U, E, R>(self: EntityUpdate<A, Rec, U, E, R>) => EntityUpdate<A, Rec, U, E, R>;
|
|
134
|
+
<A, Rec, U, E, R>(self: EntityUpdate<A, Rec, U, E, R>, values: globalThis.Record<string, unknown>): EntityUpdate<A, Rec, U, E, R>;
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* Configure cascade updates to propagate source entity changes to target entities
|
|
138
|
+
* that embed it via `DynamoModel.ref`. After the source update completes, all matching
|
|
139
|
+
* target items are queried via their cascade GSI and updated with the new domain data.
|
|
140
|
+
*
|
|
141
|
+
* Default mode is "eventual" (batch updates, no item limit).
|
|
142
|
+
* Use `mode: "transactional"` for atomic cascade (max 100 items).
|
|
143
|
+
*/
|
|
144
|
+
export declare const cascade: {
|
|
145
|
+
(config: {
|
|
146
|
+
readonly targets: ReadonlyArray<CascadeTarget>;
|
|
147
|
+
readonly filter?: globalThis.Record<string, unknown> | undefined;
|
|
148
|
+
readonly mode?: "eventual" | "transactional" | undefined;
|
|
149
|
+
}): <A, Rec, U, E, R>(self: EntityUpdate<A, Rec, U, E | CascadePartialFailure, R>) => EntityUpdate<A, Rec, U, E | CascadePartialFailure, R>;
|
|
150
|
+
<A, Rec, U, E, R>(self: EntityUpdate<A, Rec, U, E, R>, config: {
|
|
151
|
+
readonly targets: ReadonlyArray<CascadeTarget>;
|
|
152
|
+
readonly filter?: globalThis.Record<string, unknown> | undefined;
|
|
153
|
+
readonly mode?: "eventual" | "transactional" | undefined;
|
|
154
|
+
}): EntityUpdate<A, Rec, U, E | CascadePartialFailure, R>;
|
|
155
|
+
};
|
|
156
|
+
/** @internal Add a path-based SET operation to the update state */
|
|
157
|
+
export declare const pathSet: <A, Rec, U, E, R>(self: EntityUpdate<A, Rec, U, E, R>, op: PathSetOp) => EntityUpdate<A, Rec, U, E, R>;
|
|
158
|
+
/** @internal Add a path-based REMOVE operation to the update state */
|
|
159
|
+
export declare const pathRemove: <A, Rec, U, E, R>(self: EntityUpdate<A, Rec, U, E, R>, segments: ReadonlyArray<string | number>) => EntityUpdate<A, Rec, U, E, R>;
|
|
160
|
+
/** @internal Add a path-based ADD operation to the update state */
|
|
161
|
+
export declare const pathAdd: <A, Rec, U, E, R>(self: EntityUpdate<A, Rec, U, E, R>, op: PathAddOp) => EntityUpdate<A, Rec, U, E, R>;
|
|
162
|
+
/** @internal Add a path-based SUBTRACT operation to the update state */
|
|
163
|
+
export declare const pathSubtract: <A, Rec, U, E, R>(self: EntityUpdate<A, Rec, U, E, R>, op: PathSubtractOp) => EntityUpdate<A, Rec, U, E, R>;
|
|
164
|
+
/** @internal Add a path-based APPEND operation to the update state */
|
|
165
|
+
export declare const pathAppend: <A, Rec, U, E, R>(self: EntityUpdate<A, Rec, U, E, R>, op: PathAppendOp) => EntityUpdate<A, Rec, U, E, R>;
|
|
166
|
+
/** @internal Add a path-based PREPEND operation to the update state */
|
|
167
|
+
export declare const pathPrepend: <A, Rec, U, E, R>(self: EntityUpdate<A, Rec, U, E, R>, op: PathPrependOp) => EntityUpdate<A, Rec, U, E, R>;
|
|
168
|
+
/** @internal Add a path-based if_not_exists operation to the update state */
|
|
169
|
+
export declare const pathIfNotExists: <A, Rec, U, E, R>(self: EntityUpdate<A, Rec, U, E, R>, op: PathIfNotExistsOp) => EntityUpdate<A, Rec, U, E, R>;
|
|
170
|
+
/** @internal Add a path-based DELETE (set removal) operation to the update state */
|
|
171
|
+
export declare const pathDelete: <A, Rec, U, E, R>(self: EntityUpdate<A, Rec, U, E, R>, op: PathDeleteOp) => EntityUpdate<A, Rec, U, E, R>;
|
|
172
|
+
export {};
|
|
173
|
+
//# sourceMappingURL=EntityCombinators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityCombinators.d.ts","sourceRoot":"","sources":["../../src/internal/EntityCombinators.ts"],"names":[],"mappings":"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"}
|