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,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @internal Entity type-level computations — derived types for Entity operations.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from Entity.ts for decomposition. Not part of the public API.
|
|
5
|
+
*/
|
|
6
|
+
import type { DateTime, Schema } from "effect";
|
|
7
|
+
import type { RefNotFound } from "../Errors.js";
|
|
8
|
+
/** Extract the model's Type directly — preserves Schema.Class name (e.g. `User`) */
|
|
9
|
+
export type ModelType<TModel extends Schema.Top> = Schema.Schema.Type<TModel>;
|
|
10
|
+
/** Extract primary key composite attribute names as a string union */
|
|
11
|
+
export type PrimaryKeyComposites<TIndexes> = TIndexes extends {
|
|
12
|
+
readonly primary: {
|
|
13
|
+
readonly pk: {
|
|
14
|
+
readonly composite: infer PKC extends ReadonlyArray<string>;
|
|
15
|
+
};
|
|
16
|
+
readonly sk: {
|
|
17
|
+
readonly composite: infer SKC extends ReadonlyArray<string>;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
} ? PKC[number] | SKC[number] : string;
|
|
21
|
+
/** Compute system fields added by timestamps and versioned config */
|
|
22
|
+
export type SystemFieldsType<TTimestamps, TVersioned> = ([TTimestamps] extends [undefined] ? {} : [TTimestamps] extends [false] ? {} : {
|
|
23
|
+
readonly createdAt: DateTime.Utc;
|
|
24
|
+
readonly updatedAt: DateTime.Utc;
|
|
25
|
+
}) & ([TVersioned] extends [undefined] ? {} : [TVersioned] extends [false] ? {} : {
|
|
26
|
+
readonly version: number;
|
|
27
|
+
});
|
|
28
|
+
/** Entity key type: Pick model fields by primary key composites */
|
|
29
|
+
export type EntityKeyType<TModel extends Schema.Top, TIndexes> = Pick<ModelType<TModel>, PrimaryKeyComposites<TIndexes> & keyof ModelType<TModel>>;
|
|
30
|
+
/** Entity record type: model fields + system fields */
|
|
31
|
+
export type EntityRecordType<TModel extends Schema.Top, TTimestamps, TVersioned> = ModelType<TModel> & SystemFieldsType<TTimestamps, TVersioned>;
|
|
32
|
+
/** Entity input type: same as model fields (system fields auto-managed) */
|
|
33
|
+
export type EntityInputType<TModel extends Schema.Top> = ModelType<TModel>;
|
|
34
|
+
/** Entity create type: input fields minus identifier (or PK composites as fallback) */
|
|
35
|
+
export type EntityCreateType<TModel extends Schema.Top, TIndexes, TIdentifier extends string | undefined> = [TIdentifier] extends [string] ? Omit<ModelType<TModel>, TIdentifier> : Omit<ModelType<TModel>, PrimaryKeyComposites<TIndexes>>;
|
|
36
|
+
/** Entity update type: partial model fields minus primary key composites */
|
|
37
|
+
export type EntityUpdateType<TModel extends Schema.Top, TIndexes> = Partial<Omit<ModelType<TModel>, PrimaryKeyComposites<TIndexes>>>;
|
|
38
|
+
/** Extract PK-only composite attribute names (excludes SK) */
|
|
39
|
+
type PrimaryPkOnlyComposites<TIndexes> = TIndexes extends {
|
|
40
|
+
readonly primary: {
|
|
41
|
+
readonly pk: {
|
|
42
|
+
readonly composite: infer PKC extends ReadonlyArray<string>;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
} ? PKC[number] : never;
|
|
46
|
+
/** Extract the Entity from a ref value `{ entity: Entity, cascade?: ... }`. */
|
|
47
|
+
export type ExtractRefEntity<R> = R extends {
|
|
48
|
+
readonly entity: infer E;
|
|
49
|
+
} ? E : never;
|
|
50
|
+
/** Extract the identifier value type from a ref Entity's PK composites.
|
|
51
|
+
* For an entity with `pk: { composite: ["id"] }` and `id: TeamId`, yields `TeamId`. */
|
|
52
|
+
type EntityIdentifierValue<E> = ExtractRefEntity<E> extends {
|
|
53
|
+
readonly model: infer M extends Schema.Top;
|
|
54
|
+
readonly indexes: infer I;
|
|
55
|
+
} ? ModelType<M>[PrimaryPkOnlyComposites<I> & keyof ModelType<M>] : string;
|
|
56
|
+
/** Entity ref input type: when refs present, replace ref fields with branded ID fields */
|
|
57
|
+
export type EntityRefInputType<TModel extends Schema.Top, TRefs> = [TRefs] extends [undefined] ? ModelType<TModel> : Omit<ModelType<TModel>, keyof TRefs & string> & {
|
|
58
|
+
readonly [K in keyof TRefs & string as `${K}Id`]: EntityIdentifierValue<TRefs[K]>;
|
|
59
|
+
};
|
|
60
|
+
/** Entity ref create type: input minus identifier (or PK composites), ref-aware */
|
|
61
|
+
export type EntityRefCreateType<TModel extends Schema.Top, TIndexes, TRefs, TIdentifier extends string | undefined> = [TRefs] extends [undefined] ? EntityCreateType<TModel, TIndexes, TIdentifier> : [TIdentifier] extends [string] ? Omit<EntityRefInputType<TModel, TRefs>, TIdentifier> : Omit<EntityRefInputType<TModel, TRefs>, PrimaryKeyComposites<TIndexes>>;
|
|
62
|
+
/** Entity ref update type: when refs present, swap ref fields for optional branded ID fields */
|
|
63
|
+
export type EntityRefUpdateType<TModel extends Schema.Top, TIndexes, TRefs> = [TRefs] extends [
|
|
64
|
+
undefined
|
|
65
|
+
] ? EntityUpdateType<TModel, TIndexes> : Partial<Omit<ModelType<TModel>, PrimaryKeyComposites<TIndexes> | (keyof TRefs & string)>> & {
|
|
66
|
+
readonly [K in keyof TRefs & string as `${K}Id`]?: EntityIdentifierValue<TRefs[K]>;
|
|
67
|
+
};
|
|
68
|
+
/** Error type contribution from refs — never when no refs, RefNotFound when refs present */
|
|
69
|
+
export type RefErrors<TRefs> = [TRefs] extends [undefined] ? never : RefNotFound;
|
|
70
|
+
/** Extract pk composite names for a specific index */
|
|
71
|
+
export type IndexPkComposites<TIndexes, K extends keyof TIndexes> = TIndexes[K] extends {
|
|
72
|
+
readonly pk: {
|
|
73
|
+
readonly composite: infer PKC extends ReadonlyArray<string>;
|
|
74
|
+
};
|
|
75
|
+
} ? PKC[number] : never;
|
|
76
|
+
/** Extract sk composite names (union) for a specific index */
|
|
77
|
+
export type IndexSkComposites<TIndexes, K extends keyof TIndexes> = TIndexes[K] extends {
|
|
78
|
+
readonly sk: {
|
|
79
|
+
readonly composite: infer SKC extends ReadonlyArray<string>;
|
|
80
|
+
};
|
|
81
|
+
} ? SKC[number] : never;
|
|
82
|
+
/**
|
|
83
|
+
* Map a refs config object to its derived `${ref}Id` field map.
|
|
84
|
+
*
|
|
85
|
+
* For `{ team: { entity: TeamEntity }, player: { entity: PlayerEntity } }` this yields
|
|
86
|
+
* `{ teamId: TeamId, playerId: PlayerId }`, using each referenced entity's identifier
|
|
87
|
+
* value type (branded when available, falling back to `string`).
|
|
88
|
+
*/
|
|
89
|
+
type RefIdFields<TRefs> = [TRefs] extends [undefined] ? {} : {
|
|
90
|
+
readonly [K in keyof TRefs & string as `${K}Id`]: EntityIdentifierValue<TRefs[K]>;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Composite-resolvable fields for an entity: model fields plus the derived ref-id
|
|
94
|
+
* fields. This is the canonical lookup table for resolving the value type of a
|
|
95
|
+
* composite key name like `playerId` (which lives on the ref, not on the model).
|
|
96
|
+
*/
|
|
97
|
+
type CompositeFields<TModel extends Schema.Top, TRefs> = ModelType<TModel> & RefIdFields<TRefs>;
|
|
98
|
+
/** Pick SK composite fields from the model (or refs) with their actual types. */
|
|
99
|
+
export type IndexSkFields<TModel extends Schema.Top, TIndexes, K extends keyof TIndexes, TRefs = undefined> = Pick<CompositeFields<TModel, TRefs>, IndexSkComposites<TIndexes, K> & keyof CompositeFields<TModel, TRefs>>;
|
|
100
|
+
/**
|
|
101
|
+
* Widen string literal types to include their lowercase variants.
|
|
102
|
+
* Since the key composer applies casing (default: lowercase) to composite values,
|
|
103
|
+
* queries should accept both `"Male"` and `"male"` for indexed attributes.
|
|
104
|
+
* Non-string types pass through unchanged.
|
|
105
|
+
*/
|
|
106
|
+
type CaseInsensitive<T> = T extends string ? T | Lowercase<T> : T;
|
|
107
|
+
/** Apply CaseInsensitive to all properties of an object type */
|
|
108
|
+
type CaseInsensitiveProps<T> = {
|
|
109
|
+
[K in keyof T]: CaseInsensitive<T[K]>;
|
|
110
|
+
};
|
|
111
|
+
/** Flatten an intersection into a plain object type for clean IDE hover display */
|
|
112
|
+
type Simplify<T> = {
|
|
113
|
+
[K in keyof T]: T[K];
|
|
114
|
+
} & {};
|
|
115
|
+
/**
|
|
116
|
+
* Compute the typed query input for a specific index.
|
|
117
|
+
* PK composites are required. SK composites are optional.
|
|
118
|
+
* SK prefix ordering is enforced at runtime.
|
|
119
|
+
* String literal types are widened to include lowercase variants.
|
|
120
|
+
*
|
|
121
|
+
* When `TRefs` is provided, ref-derived composite names (e.g. `teamId` for a
|
|
122
|
+
* `team: Team.pipe(DynamoModel.ref)` field) resolve to the referenced entity's
|
|
123
|
+
* branded identifier type. Without this, an index whose pk composite references
|
|
124
|
+
* a renamed ref field would silently collapse to `Pick<Model, never>`.
|
|
125
|
+
*/
|
|
126
|
+
export type IndexPkInput<TModel extends Schema.Top, TIndexes, K extends keyof TIndexes, TRefs = undefined> = Simplify<CaseInsensitiveProps<Pick<CompositeFields<TModel, TRefs>, IndexPkComposites<TIndexes, K> & keyof CompositeFields<TModel, TRefs>>> & Partial<CaseInsensitiveProps<Pick<CompositeFields<TModel, TRefs>, IndexSkComposites<TIndexes, K> & keyof CompositeFields<TModel, TRefs>>>>>;
|
|
127
|
+
export {};
|
|
128
|
+
//# sourceMappingURL=EntityTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityTypes.d.ts","sourceRoot":"","sources":["../../src/internal/EntityTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityTypes.js","sourceRoot":"","sources":["../../src/internal/EntityTypes.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @internal Expr — Expression ADT for type-safe DynamoDB condition/filter expressions.
|
|
3
|
+
*
|
|
4
|
+
* Provides a discriminated union of expression nodes that compile to DynamoDB
|
|
5
|
+
* ConditionExpression / FilterExpression strings with attribute name/value placeholders.
|
|
6
|
+
*/
|
|
7
|
+
import type { AttributeValue } from "@aws-sdk/client-dynamodb";
|
|
8
|
+
import type { ConditionInput } from "../Expression.js";
|
|
9
|
+
import { type Path, type SizeOperand } from "./PathBuilder.js";
|
|
10
|
+
export type Operand = {
|
|
11
|
+
readonly _tag: "path";
|
|
12
|
+
readonly segments: ReadonlyArray<string | number>;
|
|
13
|
+
} | {
|
|
14
|
+
readonly _tag: "value";
|
|
15
|
+
readonly value: unknown;
|
|
16
|
+
} | {
|
|
17
|
+
readonly _tag: "size";
|
|
18
|
+
readonly segments: ReadonlyArray<string | number>;
|
|
19
|
+
};
|
|
20
|
+
export declare const ExprTag: unique symbol;
|
|
21
|
+
export type ExprTag = typeof ExprTag;
|
|
22
|
+
export type Expr = ExprComparison | ExprBetween | ExprIn | ExprExists | ExprNotExists | ExprAttributeType | ExprBeginsWith | ExprContains | ExprAnd | ExprOr | ExprNot;
|
|
23
|
+
interface ExprComparison {
|
|
24
|
+
readonly [ExprTag]: ExprTag;
|
|
25
|
+
readonly _tag: "eq" | "ne" | "lt" | "lte" | "gt" | "gte";
|
|
26
|
+
readonly left: Operand;
|
|
27
|
+
readonly right: Operand;
|
|
28
|
+
}
|
|
29
|
+
interface ExprBetween {
|
|
30
|
+
readonly [ExprTag]: ExprTag;
|
|
31
|
+
readonly _tag: "between";
|
|
32
|
+
readonly operand: Operand;
|
|
33
|
+
readonly low: Operand;
|
|
34
|
+
readonly high: Operand;
|
|
35
|
+
}
|
|
36
|
+
interface ExprIn {
|
|
37
|
+
readonly [ExprTag]: ExprTag;
|
|
38
|
+
readonly _tag: "in";
|
|
39
|
+
readonly operand: Operand;
|
|
40
|
+
readonly values: ReadonlyArray<Operand>;
|
|
41
|
+
}
|
|
42
|
+
interface ExprExists {
|
|
43
|
+
readonly [ExprTag]: ExprTag;
|
|
44
|
+
readonly _tag: "exists";
|
|
45
|
+
readonly operand: Operand;
|
|
46
|
+
}
|
|
47
|
+
interface ExprNotExists {
|
|
48
|
+
readonly [ExprTag]: ExprTag;
|
|
49
|
+
readonly _tag: "notExists";
|
|
50
|
+
readonly operand: Operand;
|
|
51
|
+
}
|
|
52
|
+
interface ExprAttributeType {
|
|
53
|
+
readonly [ExprTag]: ExprTag;
|
|
54
|
+
readonly _tag: "type";
|
|
55
|
+
readonly operand: Operand;
|
|
56
|
+
readonly attributeType: string;
|
|
57
|
+
}
|
|
58
|
+
interface ExprBeginsWith {
|
|
59
|
+
readonly [ExprTag]: ExprTag;
|
|
60
|
+
readonly _tag: "beginsWith";
|
|
61
|
+
readonly operand: Operand;
|
|
62
|
+
readonly prefix: Operand;
|
|
63
|
+
}
|
|
64
|
+
interface ExprContains {
|
|
65
|
+
readonly [ExprTag]: ExprTag;
|
|
66
|
+
readonly _tag: "contains";
|
|
67
|
+
readonly operand: Operand;
|
|
68
|
+
readonly value: Operand;
|
|
69
|
+
}
|
|
70
|
+
interface ExprAnd {
|
|
71
|
+
readonly [ExprTag]: ExprTag;
|
|
72
|
+
readonly _tag: "and";
|
|
73
|
+
readonly exprs: ReadonlyArray<Expr>;
|
|
74
|
+
}
|
|
75
|
+
interface ExprOr {
|
|
76
|
+
readonly [ExprTag]: ExprTag;
|
|
77
|
+
readonly _tag: "or";
|
|
78
|
+
readonly exprs: ReadonlyArray<Expr>;
|
|
79
|
+
}
|
|
80
|
+
interface ExprNot {
|
|
81
|
+
readonly [ExprTag]: ExprTag;
|
|
82
|
+
readonly _tag: "not";
|
|
83
|
+
readonly expr: Expr;
|
|
84
|
+
}
|
|
85
|
+
export declare const isExpr: (u: unknown) => u is Expr;
|
|
86
|
+
/**
|
|
87
|
+
* Operations available in condition/filter callbacks.
|
|
88
|
+
* Each function accepts paths and values, returning an Expr node.
|
|
89
|
+
*/
|
|
90
|
+
export interface ConditionOps<Model> {
|
|
91
|
+
readonly eq: <V>(left: Path<Model, V> | SizeOperand<Model>, right: V | Path<Model, V>) => Expr;
|
|
92
|
+
readonly ne: <V>(left: Path<Model, V> | SizeOperand<Model>, right: V | Path<Model, V>) => Expr;
|
|
93
|
+
readonly lt: <V>(left: Path<Model, V> | SizeOperand<Model>, right: V | Path<Model, V>) => Expr;
|
|
94
|
+
readonly lte: <V>(left: Path<Model, V> | SizeOperand<Model>, right: V | Path<Model, V>) => Expr;
|
|
95
|
+
readonly gt: <V>(left: Path<Model, V> | SizeOperand<Model>, right: V | Path<Model, V>) => Expr;
|
|
96
|
+
readonly gte: <V>(left: Path<Model, V> | SizeOperand<Model>, right: V | Path<Model, V>) => Expr;
|
|
97
|
+
readonly between: <V>(operand: Path<Model, V>, low: V, high: V) => Expr;
|
|
98
|
+
readonly isIn: <V>(operand: Path<Model, V>, values: ReadonlyArray<V>) => Expr;
|
|
99
|
+
readonly exists: (operand: Path<Model, any>) => Expr;
|
|
100
|
+
readonly notExists: (operand: Path<Model, any>) => Expr;
|
|
101
|
+
readonly attributeType: (operand: Path<Model, any>, type: string) => Expr;
|
|
102
|
+
readonly beginsWith: (operand: Path<Model, string>, prefix: string) => Expr;
|
|
103
|
+
readonly contains: (operand: Path<Model, string | ReadonlyArray<any>>, value: unknown) => Expr;
|
|
104
|
+
readonly and: (...exprs: ReadonlyArray<Expr>) => Expr;
|
|
105
|
+
readonly or: (...exprs: ReadonlyArray<Expr>) => Expr;
|
|
106
|
+
readonly not: (expr: Expr) => Expr;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Create a ConditionOps object that builds Expr nodes.
|
|
110
|
+
*/
|
|
111
|
+
export declare const createConditionOps: <Model>() => ConditionOps<Model>;
|
|
112
|
+
export declare const eq: (left: unknown, right: unknown) => Expr;
|
|
113
|
+
export declare const ne: (left: unknown, right: unknown) => Expr;
|
|
114
|
+
export declare const and: (...exprs: ReadonlyArray<Expr>) => Expr;
|
|
115
|
+
export declare const or: (...exprs: ReadonlyArray<Expr>) => Expr;
|
|
116
|
+
export declare const not: (expr: Expr) => Expr;
|
|
117
|
+
export interface CompileResult {
|
|
118
|
+
readonly expression: string;
|
|
119
|
+
readonly names: globalThis.Record<string, string>;
|
|
120
|
+
readonly values: globalThis.Record<string, AttributeValue>;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Compile an Expr node to a DynamoDB expression string with name/value placeholders.
|
|
124
|
+
*/
|
|
125
|
+
export declare const compileExpr: (expr: Expr, resolveDbName?: (name: string) => string) => CompileResult;
|
|
126
|
+
/**
|
|
127
|
+
* Convert a ConditionInput shorthand object to an Expr ADT node.
|
|
128
|
+
*/
|
|
129
|
+
export declare const parseShorthand: (input: ConditionInput) => Expr;
|
|
130
|
+
/**
|
|
131
|
+
* A simplified condition shorthand where keys are attribute names and values
|
|
132
|
+
* are equality matches. Example: `{ status: "active", role: "admin" }`
|
|
133
|
+
*/
|
|
134
|
+
export type ConditionShorthand = globalThis.Record<string, unknown>;
|
|
135
|
+
/**
|
|
136
|
+
* Parse a simple shorthand object into an Expr. Each key-value pair becomes
|
|
137
|
+
* an equality comparison, ANDed together.
|
|
138
|
+
*/
|
|
139
|
+
export declare const parseSimpleShorthand: (input: ConditionShorthand) => Expr;
|
|
140
|
+
export {};
|
|
141
|
+
//# sourceMappingURL=Expr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Expr.d.ts","sourceRoot":"","sources":["../../src/internal/Expr.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @internal Expr — Expression ADT for type-safe DynamoDB condition/filter expressions.
|
|
3
|
+
*
|
|
4
|
+
* Provides a discriminated union of expression nodes that compile to DynamoDB
|
|
5
|
+
* ConditionExpression / FilterExpression strings with attribute name/value placeholders.
|
|
6
|
+
*/
|
|
7
|
+
import { toAttributeValue } from "../Marshaller.js";
|
|
8
|
+
import { compilePath, PathTag } from "./PathBuilder.js";
|
|
9
|
+
/** Convert a Path, SizeOperand, or raw value to an Operand */
|
|
10
|
+
const toOperand = (v) => {
|
|
11
|
+
if (typeof v === "object" && v !== null) {
|
|
12
|
+
if (PathTag in v) {
|
|
13
|
+
return { _tag: "path", segments: v.segments };
|
|
14
|
+
}
|
|
15
|
+
if ("_tag" in v && v._tag === "size") {
|
|
16
|
+
return { _tag: "size", segments: v.segments };
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return { _tag: "value", value: v };
|
|
20
|
+
};
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
// Expr — Discriminated union of expression nodes
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
export const ExprTag = Symbol.for("effect-dynamodb/Expr");
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
// Type guard
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
export const isExpr = (u) => typeof u === "object" && u !== null && ExprTag in u;
|
|
29
|
+
/**
|
|
30
|
+
* Create a ConditionOps object that builds Expr nodes.
|
|
31
|
+
*/
|
|
32
|
+
export const createConditionOps = () => ({
|
|
33
|
+
eq: (left, right) => ({
|
|
34
|
+
[ExprTag]: ExprTag,
|
|
35
|
+
_tag: "eq",
|
|
36
|
+
left: toOperand(left),
|
|
37
|
+
right: toOperand(right),
|
|
38
|
+
}),
|
|
39
|
+
ne: (left, right) => ({
|
|
40
|
+
[ExprTag]: ExprTag,
|
|
41
|
+
_tag: "ne",
|
|
42
|
+
left: toOperand(left),
|
|
43
|
+
right: toOperand(right),
|
|
44
|
+
}),
|
|
45
|
+
lt: (left, right) => ({
|
|
46
|
+
[ExprTag]: ExprTag,
|
|
47
|
+
_tag: "lt",
|
|
48
|
+
left: toOperand(left),
|
|
49
|
+
right: toOperand(right),
|
|
50
|
+
}),
|
|
51
|
+
lte: (left, right) => ({
|
|
52
|
+
[ExprTag]: ExprTag,
|
|
53
|
+
_tag: "lte",
|
|
54
|
+
left: toOperand(left),
|
|
55
|
+
right: toOperand(right),
|
|
56
|
+
}),
|
|
57
|
+
gt: (left, right) => ({
|
|
58
|
+
[ExprTag]: ExprTag,
|
|
59
|
+
_tag: "gt",
|
|
60
|
+
left: toOperand(left),
|
|
61
|
+
right: toOperand(right),
|
|
62
|
+
}),
|
|
63
|
+
gte: (left, right) => ({
|
|
64
|
+
[ExprTag]: ExprTag,
|
|
65
|
+
_tag: "gte",
|
|
66
|
+
left: toOperand(left),
|
|
67
|
+
right: toOperand(right),
|
|
68
|
+
}),
|
|
69
|
+
between: (operand, low, high) => ({
|
|
70
|
+
[ExprTag]: ExprTag,
|
|
71
|
+
_tag: "between",
|
|
72
|
+
operand: toOperand(operand),
|
|
73
|
+
low: toOperand(low),
|
|
74
|
+
high: toOperand(high),
|
|
75
|
+
}),
|
|
76
|
+
isIn: (operand, values) => ({
|
|
77
|
+
[ExprTag]: ExprTag,
|
|
78
|
+
_tag: "in",
|
|
79
|
+
operand: toOperand(operand),
|
|
80
|
+
values: values.map((v) => toOperand(v)),
|
|
81
|
+
}),
|
|
82
|
+
exists: (operand) => ({
|
|
83
|
+
[ExprTag]: ExprTag,
|
|
84
|
+
_tag: "exists",
|
|
85
|
+
operand: toOperand(operand),
|
|
86
|
+
}),
|
|
87
|
+
notExists: (operand) => ({
|
|
88
|
+
[ExprTag]: ExprTag,
|
|
89
|
+
_tag: "notExists",
|
|
90
|
+
operand: toOperand(operand),
|
|
91
|
+
}),
|
|
92
|
+
attributeType: (operand, type) => ({
|
|
93
|
+
[ExprTag]: ExprTag,
|
|
94
|
+
_tag: "type",
|
|
95
|
+
operand: toOperand(operand),
|
|
96
|
+
attributeType: type,
|
|
97
|
+
}),
|
|
98
|
+
beginsWith: (operand, prefix) => ({
|
|
99
|
+
[ExprTag]: ExprTag,
|
|
100
|
+
_tag: "beginsWith",
|
|
101
|
+
operand: toOperand(operand),
|
|
102
|
+
prefix: toOperand(prefix),
|
|
103
|
+
}),
|
|
104
|
+
contains: (operand, value) => ({
|
|
105
|
+
[ExprTag]: ExprTag,
|
|
106
|
+
_tag: "contains",
|
|
107
|
+
operand: toOperand(operand),
|
|
108
|
+
value: toOperand(value),
|
|
109
|
+
}),
|
|
110
|
+
and: (...exprs) => ({
|
|
111
|
+
[ExprTag]: ExprTag,
|
|
112
|
+
_tag: "and",
|
|
113
|
+
exprs,
|
|
114
|
+
}),
|
|
115
|
+
or: (...exprs) => ({
|
|
116
|
+
[ExprTag]: ExprTag,
|
|
117
|
+
_tag: "or",
|
|
118
|
+
exprs,
|
|
119
|
+
}),
|
|
120
|
+
not: (expr) => ({
|
|
121
|
+
[ExprTag]: ExprTag,
|
|
122
|
+
_tag: "not",
|
|
123
|
+
expr,
|
|
124
|
+
}),
|
|
125
|
+
});
|
|
126
|
+
// ---------------------------------------------------------------------------
|
|
127
|
+
// Standalone constructors (untyped, for library-internal use)
|
|
128
|
+
// ---------------------------------------------------------------------------
|
|
129
|
+
export const eq = (left, right) => ({
|
|
130
|
+
[ExprTag]: ExprTag,
|
|
131
|
+
_tag: "eq",
|
|
132
|
+
left: toOperand(left),
|
|
133
|
+
right: toOperand(right),
|
|
134
|
+
});
|
|
135
|
+
export const ne = (left, right) => ({
|
|
136
|
+
[ExprTag]: ExprTag,
|
|
137
|
+
_tag: "ne",
|
|
138
|
+
left: toOperand(left),
|
|
139
|
+
right: toOperand(right),
|
|
140
|
+
});
|
|
141
|
+
export const and = (...exprs) => ({
|
|
142
|
+
[ExprTag]: ExprTag,
|
|
143
|
+
_tag: "and",
|
|
144
|
+
exprs,
|
|
145
|
+
});
|
|
146
|
+
export const or = (...exprs) => ({
|
|
147
|
+
[ExprTag]: ExprTag,
|
|
148
|
+
_tag: "or",
|
|
149
|
+
exprs,
|
|
150
|
+
});
|
|
151
|
+
export const not = (expr) => ({
|
|
152
|
+
[ExprTag]: ExprTag,
|
|
153
|
+
_tag: "not",
|
|
154
|
+
expr,
|
|
155
|
+
});
|
|
156
|
+
/**
|
|
157
|
+
* Compile an Expr node to a DynamoDB expression string with name/value placeholders.
|
|
158
|
+
*/
|
|
159
|
+
export const compileExpr = (expr, resolveDbName) => {
|
|
160
|
+
const names = {};
|
|
161
|
+
const values = {};
|
|
162
|
+
const counter = { value: 0 };
|
|
163
|
+
const compileOperand = (op) => {
|
|
164
|
+
switch (op._tag) {
|
|
165
|
+
case "path":
|
|
166
|
+
return compilePath(op.segments, names, "e", counter, resolveDbName);
|
|
167
|
+
case "value": {
|
|
168
|
+
const key = `:e${counter.value++}`;
|
|
169
|
+
values[key] = toAttributeValue(op.value);
|
|
170
|
+
return key;
|
|
171
|
+
}
|
|
172
|
+
case "size":
|
|
173
|
+
return `size(${compilePath(op.segments, names, "e", counter, resolveDbName)})`;
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
const compile = (node) => {
|
|
177
|
+
switch (node._tag) {
|
|
178
|
+
case "eq":
|
|
179
|
+
case "ne":
|
|
180
|
+
case "lt":
|
|
181
|
+
case "lte":
|
|
182
|
+
case "gt":
|
|
183
|
+
case "gte": {
|
|
184
|
+
const ops = { eq: "=", ne: "<>", lt: "<", lte: "<=", gt: ">", gte: ">=" };
|
|
185
|
+
return `${compileOperand(node.left)} ${ops[node._tag]} ${compileOperand(node.right)}`;
|
|
186
|
+
}
|
|
187
|
+
case "between":
|
|
188
|
+
return `${compileOperand(node.operand)} BETWEEN ${compileOperand(node.low)} AND ${compileOperand(node.high)}`;
|
|
189
|
+
case "in": {
|
|
190
|
+
const vals = node.values.map(compileOperand).join(", ");
|
|
191
|
+
return `${compileOperand(node.operand)} IN (${vals})`;
|
|
192
|
+
}
|
|
193
|
+
case "exists":
|
|
194
|
+
return `attribute_exists(${compileOperand(node.operand)})`;
|
|
195
|
+
case "notExists":
|
|
196
|
+
return `attribute_not_exists(${compileOperand(node.operand)})`;
|
|
197
|
+
case "type": {
|
|
198
|
+
const pathStr = compileOperand(node.operand);
|
|
199
|
+
const typeKey = `:e${counter.value++}`;
|
|
200
|
+
values[typeKey] = toAttributeValue(node.attributeType);
|
|
201
|
+
return `attribute_type(${pathStr}, ${typeKey})`;
|
|
202
|
+
}
|
|
203
|
+
case "beginsWith":
|
|
204
|
+
return `begins_with(${compileOperand(node.operand)}, ${compileOperand(node.prefix)})`;
|
|
205
|
+
case "contains":
|
|
206
|
+
return `contains(${compileOperand(node.operand)}, ${compileOperand(node.value)})`;
|
|
207
|
+
case "and": {
|
|
208
|
+
if (node.exprs.length === 0)
|
|
209
|
+
return "";
|
|
210
|
+
if (node.exprs.length === 1)
|
|
211
|
+
return compile(node.exprs[0]);
|
|
212
|
+
return node.exprs.map((e) => `(${compile(e)})`).join(" AND ");
|
|
213
|
+
}
|
|
214
|
+
case "or": {
|
|
215
|
+
if (node.exprs.length === 0)
|
|
216
|
+
return "";
|
|
217
|
+
if (node.exprs.length === 1)
|
|
218
|
+
return compile(node.exprs[0]);
|
|
219
|
+
return node.exprs.map((e) => `(${compile(e)})`).join(" OR ");
|
|
220
|
+
}
|
|
221
|
+
case "not":
|
|
222
|
+
return `NOT (${compile(node.expr)})`;
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
return { expression: compile(expr), names, values };
|
|
226
|
+
};
|
|
227
|
+
// ---------------------------------------------------------------------------
|
|
228
|
+
// Shorthand parser — convert ConditionInput-like objects to Expr
|
|
229
|
+
// ---------------------------------------------------------------------------
|
|
230
|
+
/**
|
|
231
|
+
* Convert a ConditionInput shorthand object to an Expr ADT node.
|
|
232
|
+
*/
|
|
233
|
+
export const parseShorthand = (input) => {
|
|
234
|
+
const exprs = [];
|
|
235
|
+
const pathOp = (path) => ({ _tag: "path", segments: [path] });
|
|
236
|
+
const valOp = (v) => ({ _tag: "value", value: v });
|
|
237
|
+
const comparison = (tag, attrs) => {
|
|
238
|
+
for (const [attr, val] of Object.entries(attrs)) {
|
|
239
|
+
exprs.push({
|
|
240
|
+
[ExprTag]: ExprTag,
|
|
241
|
+
_tag: tag,
|
|
242
|
+
left: pathOp(attr),
|
|
243
|
+
right: valOp(val),
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
if (input.eq)
|
|
248
|
+
comparison("eq", input.eq);
|
|
249
|
+
if (input.ne)
|
|
250
|
+
comparison("ne", input.ne);
|
|
251
|
+
if (input.lt)
|
|
252
|
+
comparison("lt", input.lt);
|
|
253
|
+
if (input.le)
|
|
254
|
+
comparison("lte", input.le);
|
|
255
|
+
if (input.gt)
|
|
256
|
+
comparison("gt", input.gt);
|
|
257
|
+
if (input.ge)
|
|
258
|
+
comparison("gte", input.ge);
|
|
259
|
+
if (input.between) {
|
|
260
|
+
for (const [attr, [low, high]] of Object.entries(input.between)) {
|
|
261
|
+
exprs.push({
|
|
262
|
+
[ExprTag]: ExprTag,
|
|
263
|
+
_tag: "between",
|
|
264
|
+
operand: pathOp(attr),
|
|
265
|
+
low: valOp(low),
|
|
266
|
+
high: valOp(high),
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
if (input.beginsWith) {
|
|
271
|
+
for (const [attr, prefix] of Object.entries(input.beginsWith)) {
|
|
272
|
+
exprs.push({
|
|
273
|
+
[ExprTag]: ExprTag,
|
|
274
|
+
_tag: "beginsWith",
|
|
275
|
+
operand: pathOp(attr),
|
|
276
|
+
prefix: valOp(prefix),
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
if (input.attributeExists) {
|
|
281
|
+
const attrs = Array.isArray(input.attributeExists)
|
|
282
|
+
? input.attributeExists
|
|
283
|
+
: [input.attributeExists];
|
|
284
|
+
for (const attr of attrs) {
|
|
285
|
+
exprs.push({
|
|
286
|
+
[ExprTag]: ExprTag,
|
|
287
|
+
_tag: "exists",
|
|
288
|
+
operand: pathOp(attr),
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
if (input.attributeNotExists) {
|
|
293
|
+
const attrs = Array.isArray(input.attributeNotExists)
|
|
294
|
+
? input.attributeNotExists
|
|
295
|
+
: [input.attributeNotExists];
|
|
296
|
+
for (const attr of attrs) {
|
|
297
|
+
exprs.push({
|
|
298
|
+
[ExprTag]: ExprTag,
|
|
299
|
+
_tag: "notExists",
|
|
300
|
+
operand: pathOp(attr),
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
if (exprs.length === 0)
|
|
305
|
+
return { [ExprTag]: ExprTag, _tag: "and", exprs: [] };
|
|
306
|
+
if (exprs.length === 1)
|
|
307
|
+
return exprs[0];
|
|
308
|
+
return { [ExprTag]: ExprTag, _tag: "and", exprs };
|
|
309
|
+
};
|
|
310
|
+
/**
|
|
311
|
+
* Parse a simple shorthand object into an Expr. Each key-value pair becomes
|
|
312
|
+
* an equality comparison, ANDed together.
|
|
313
|
+
*/
|
|
314
|
+
export const parseSimpleShorthand = (input) => {
|
|
315
|
+
const exprs = [];
|
|
316
|
+
for (const [attr, val] of Object.entries(input)) {
|
|
317
|
+
if (val === undefined)
|
|
318
|
+
continue;
|
|
319
|
+
exprs.push({
|
|
320
|
+
[ExprTag]: ExprTag,
|
|
321
|
+
_tag: "eq",
|
|
322
|
+
left: { _tag: "path", segments: [attr] },
|
|
323
|
+
right: { _tag: "value", value: val },
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
if (exprs.length === 0)
|
|
327
|
+
return { [ExprTag]: ExprTag, _tag: "and", exprs: [] };
|
|
328
|
+
if (exprs.length === 1)
|
|
329
|
+
return exprs[0];
|
|
330
|
+
return { [ExprTag]: ExprTag, _tag: "and", exprs };
|
|
331
|
+
};
|
|
332
|
+
//# sourceMappingURL=Expr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Expr.js","sourceRoot":"","sources":["../../src/internal/Expr.ts"],"names":[],"mappings":"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"}
|