graphddb 0.2.0 → 0.2.2

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.
@@ -52,6 +52,113 @@ type ResolvedKey = {
52
52
  inputFieldNames: string[];
53
53
  };
54
54
 
55
+ /**
56
+ * Parameter placeholders for the parameterized query / command definition DSL
57
+ * (issue #41, Python-bridge Phase 0a).
58
+ *
59
+ * A `Param<T>` is a **branded placeholder** standing in for a value that is not
60
+ * known at definition time but is supplied later (at execution, e.g. from
61
+ * Python). It carries:
62
+ *
63
+ * - the **TypeScript value type** `T` it represents (`string`, `number`, or a
64
+ * string-literal union), preserved through the IR and the inferred return
65
+ * types of `defineQueries` / `defineCommands`; and
66
+ * - a **runtime descriptor** (`kind` + optional `literals`) that the static
67
+ * planner (#42) and the code generator read to emit `operations.json`.
68
+ *
69
+ * Placeholders are created with `param.string()`, `param.number()`, and
70
+ * `param.literal(...)`. They are *only* legal at value positions inside a
71
+ * parameterized key / changes structure passed to the `define*` entry points —
72
+ * never to the live `Model.query` / `Model.putItem` runtime API, whose types remain
73
+ * uncontaminated by params.
74
+ */
75
+ /** Brand tag preventing a plain object from structurally matching a {@link Param}. */
76
+ declare const PARAM_BRAND: unique symbol;
77
+ /** Runtime discriminant for a parameter placeholder. */
78
+ type ParamKind = 'string' | 'number' | 'literal' | 'array';
79
+ /**
80
+ * A branded parameter placeholder representing a value of TypeScript type `T`
81
+ * that is bound at execution time rather than definition time.
82
+ *
83
+ * The brand (`[PARAM_BRAND]: T`) keeps `Param<string>` and `Param<number>`
84
+ * distinct and prevents a bare value from being mistaken for a placeholder.
85
+ *
86
+ * @typeParam T - The value type this placeholder stands in for.
87
+ */
88
+ interface Param<out T> {
89
+ /** @internal Type brand carrying the represented value type. */
90
+ readonly [PARAM_BRAND]: T;
91
+ /** Runtime discriminant: `'string'` | `'number'` | `'literal'` | `'array'`. */
92
+ readonly kind: ParamKind;
93
+ /**
94
+ * For `param.literal(...)`, the allowed literal values (preserved at runtime
95
+ * for the generator). `undefined` for `string` / `number`.
96
+ */
97
+ readonly literals?: readonly T[];
98
+ /**
99
+ * For `param.array({...})`, the descriptor of each element's fields. Lets the
100
+ * transaction planner (#46) type `forEach` element references and emit the
101
+ * `{item.<field>}` templates. `undefined` for scalar params.
102
+ */
103
+ readonly element?: Readonly<Record<string, Param<unknown>>>;
104
+ }
105
+ /** A `Param` whose represented value type is `string`. */
106
+ type StringParam = Param<string>;
107
+ /** A `Param` whose represented value type is `number`. */
108
+ type NumberParam = Param<number>;
109
+ /** A `Param` whose represented value type is the literal union `L`. */
110
+ type LiteralParam<L extends string | number> = Param<L>;
111
+ /** The element-field descriptor shape accepted by {@link param.array}. */
112
+ type ArrayElementShape = Record<string, Param<unknown>>;
113
+ /**
114
+ * The TypeScript element type implied by an {@link ArrayElementShape} `E`: each
115
+ * field carries the value type its placeholder represents.
116
+ */
117
+ type ElementOf<E extends ArrayElementShape> = {
118
+ [K in keyof E]: E[K] extends Param<infer V> ? V : never;
119
+ };
120
+ /** A `Param` standing in for an **array** whose elements have shape `E`. */
121
+ type ArrayParam<E extends ArrayElementShape> = Param<ElementOf<E>[]> & {
122
+ readonly element: E;
123
+ };
124
+ /** Allowed scalar value types a placeholder may stand in for. */
125
+ type ParamValue = string | number;
126
+ /**
127
+ * Placeholder factory. Each call returns a branded {@link Param} carrying both
128
+ * the TypeScript value type and a runtime descriptor.
129
+ */
130
+ declare const param: {
131
+ /** A placeholder for a `string` value. */
132
+ readonly string: () => StringParam;
133
+ /** A placeholder for a `number` value. */
134
+ readonly number: () => NumberParam;
135
+ /**
136
+ * A placeholder constrained to one of the given literal values. The value
137
+ * type of the resulting {@link Param} is the **union of the literals**, so it
138
+ * is preserved precisely in the IR and the inferred definition types.
139
+ *
140
+ * @example
141
+ * ```ts
142
+ * param.literal('active', 'disabled'); // Param<'active' | 'disabled'>
143
+ * ```
144
+ */
145
+ readonly literal: <const L extends readonly [ParamValue, ...ParamValue[]]>(...values: L) => LiteralParam<L[number]>;
146
+ /**
147
+ * A placeholder for an **array** parameter whose elements have the given field
148
+ * shape. Used by `defineTransaction`'s `tx.forEach(p.<arrayParam>, …)` to bind
149
+ * each element's fields to `{item.<field>}` templates.
150
+ *
151
+ * @example
152
+ * ```ts
153
+ * param.array({ userId: param.string(), role: param.string() });
154
+ * // Param<{ userId: string; role: string }[]>
155
+ * ```
156
+ */
157
+ readonly array: <const E extends ArrayElementShape>(element: E) => ArrayParam<E>;
158
+ };
159
+ /** Runtime type guard: is `value` a parameter placeholder? */
160
+ declare function isParam(value: unknown): value is Param<unknown>;
161
+
55
162
  /**
56
163
  * Internal brand identifying a {@link RawCondition} produced by {@link cond}.
57
164
  */
@@ -85,7 +192,7 @@ interface RawCondition<M = unknown> {
85
192
  * @typeParam M - The owning model brand. Constrains all columns to one model,
86
193
  * so passing another model's column is a compile error.
87
194
  */
88
- type CondSlot<M> = Column<any, M> | string | number | boolean | Date;
195
+ type CondSlot<M> = Column<any, M> | string | number | boolean | Date | Param<unknown>;
89
196
  /**
90
197
  * Raw DynamoDB condition escape hatch.
91
198
  *
@@ -197,6 +304,35 @@ type FilterInput<T> = ({
197
304
  or?: readonly (FilterInput<T> | RawCondition<T>)[];
198
305
  not?: FilterInput<T> | RawCondition<T>;
199
306
  }) | RawCondition<T>;
307
+ /**
308
+ * A type-safe **write condition** for `putItem` / `updateItem` / `deleteItem`
309
+ * and a transaction item (issue #114-A). Structurally the declarative operator
310
+ * subset of {@link FilterInput} — the same per-field-type operator constraints
311
+ * (e.g. `beginsWith` on a numeric field is a compile error) — plus the legacy
312
+ * existence primitives (`{ notExists }` / `{ attributeExists }` /
313
+ * `{ attributeNotExists }`). The raw `cond` escape hatch (issue #114-B) is also
314
+ * accepted — as a whole condition or as a member of an `and` / `or` / `not`
315
+ * group — for conditions the declarative subset cannot express; its
316
+ * `Model.col.<field>` brand must match the write target model `T`
317
+ * (injection-free / refactor-safe), exactly as on the read side.
318
+ */
319
+ type WriteCondition<T> = ({
320
+ [K in ScalarKeys<T>]?: FieldFilter<T[K]>;
321
+ } & {
322
+ /** Legacy whole-row guard: `attribute_not_exists(PK)`. */
323
+ notExists?: true;
324
+ /** `attribute_exists(<field>)` — the named attribute must be present. */
325
+ attributeExists?: string;
326
+ /** `attribute_not_exists(<field>)` — the named attribute must be absent. */
327
+ attributeNotExists?: string;
328
+ and?: readonly (WriteCondition<T> | RawCondition<T>)[];
329
+ or?: readonly (WriteCondition<T> | RawCondition<T>)[];
330
+ not?: WriteCondition<T> | RawCondition<T>;
331
+ }) | RawCondition<T>;
332
+ /** Options carrying an optional type-safe write {@link WriteCondition}. */
333
+ interface WriteOptions<T> {
334
+ readonly condition?: WriteCondition<T>;
335
+ }
200
336
 
201
337
  /**
202
338
  * Internal brand symbol identifying a compiled select builder at runtime.
@@ -700,7 +836,7 @@ interface ModelStatic<T extends DDBModel, C = unknown> {
700
836
  consistentRead?: boolean;
701
837
  filter?: FilterInput<T>;
702
838
  }): ExecutionPlan;
703
- putItem(item: EntityInput<T>, options?: Record<string, unknown>): Promise<void>;
839
+ putItem(item: EntityInput<T>, options?: WriteOptions<T>): Promise<void>;
704
840
  /**
705
841
  * Update an item identified by its **explicit base-table primary key**
706
842
  * (`PrimaryKeyOf<C>`). This is the canonical form — it requires the key input
@@ -708,7 +844,7 @@ interface ModelStatic<T extends DDBModel, C = unknown> {
708
844
  *
709
845
  * @example `await User.updateItem({ userId: 'alice' }, { status: 'disabled' });`
710
846
  */
711
- updateItem(key: UpdateExplicitKey<C>, changes: Partial<T>, options?: Record<string, unknown>): Promise<void>;
847
+ updateItem(key: UpdateExplicitKey<C>, changes: Partial<T>, options?: WriteOptions<T>): Promise<void>;
712
848
  /**
713
849
  * Update an item using an **updatable** entity obtained from
714
850
  * `query(..., { updatable: true })` / `list(..., { updatable: true })`. The
@@ -719,18 +855,33 @@ interface ModelStatic<T extends DDBModel, C = unknown> {
719
855
  * brand (rejected here at compile time) and the hidden key (rejected at
720
856
  * runtime), preventing an accidental wrong-item update.
721
857
  */
722
- updateItem(entity: Partial<T> & Updatable, changes: Partial<T>, options?: Record<string, unknown>): Promise<void>;
723
- deleteItem(key: DeleteKey<C>, options?: Record<string, unknown>): Promise<void>;
858
+ updateItem(entity: Partial<T> & Updatable, changes: Partial<T>, options?: WriteOptions<T>): Promise<void>;
859
+ deleteItem(key: DeleteKey<C>, options?: WriteOptions<T>): Promise<void>;
724
860
  }
725
861
 
726
- interface PutOptions {
727
- condition?: Record<string, unknown>;
862
+ interface PutOptions<T = unknown> {
863
+ condition?: WriteCondition<T>;
728
864
  }
729
- interface UpdateOptions {
730
- condition?: Record<string, unknown>;
865
+ interface UpdateOptions<T = unknown> {
866
+ condition?: WriteCondition<T>;
867
+ /**
868
+ * How to re-derive a GSI key whose composing fields are changed but **not all**
869
+ * available from `{ ...key, ...changes }` (issue #115).
870
+ *
871
+ * - **unset (default)** — refuse with an explicit error rather than let the
872
+ * index silently rot. The error names the index, the changed field, and the
873
+ * missing field(s). The happy path (all composing fields available) re-derives
874
+ * in the SAME `UpdateExpression` and is unaffected by this option.
875
+ * - `'read-modify-write'` — read the current item, merge `{ ...item, ...changes }`,
876
+ * re-derive every affected GSI key from the merged image, and write back under
877
+ * an optimistic condition (the item must still exist / be unchanged). This costs
878
+ * one extra read and is NOT atomic with the original update, but always re-derives
879
+ * correctly.
880
+ */
881
+ rederive?: 'read-modify-write';
731
882
  }
732
- interface DeleteOptions {
733
- condition?: Record<string, unknown>;
883
+ interface DeleteOptions<T = unknown> {
884
+ condition?: WriteCondition<T>;
734
885
  }
735
886
 
736
887
  interface PutInput {
@@ -949,113 +1100,6 @@ declare class BatchGetResult {
949
1100
  declare function executeBatchGet(requests: BatchGetRequest[]): Promise<BatchGetResult>;
950
1101
  declare function executeBatchWrite(requests: BatchWriteRequest[]): Promise<void>;
951
1102
 
952
- /**
953
- * Parameter placeholders for the parameterized query / command definition DSL
954
- * (issue #41, Python-bridge Phase 0a).
955
- *
956
- * A `Param<T>` is a **branded placeholder** standing in for a value that is not
957
- * known at definition time but is supplied later (at execution, e.g. from
958
- * Python). It carries:
959
- *
960
- * - the **TypeScript value type** `T` it represents (`string`, `number`, or a
961
- * string-literal union), preserved through the IR and the inferred return
962
- * types of `defineQueries` / `defineCommands`; and
963
- * - a **runtime descriptor** (`kind` + optional `literals`) that the static
964
- * planner (#42) and the code generator read to emit `operations.json`.
965
- *
966
- * Placeholders are created with `param.string()`, `param.number()`, and
967
- * `param.literal(...)`. They are *only* legal at value positions inside a
968
- * parameterized key / changes structure passed to the `define*` entry points —
969
- * never to the live `Model.query` / `Model.putItem` runtime API, whose types remain
970
- * uncontaminated by params.
971
- */
972
- /** Brand tag preventing a plain object from structurally matching a {@link Param}. */
973
- declare const PARAM_BRAND: unique symbol;
974
- /** Runtime discriminant for a parameter placeholder. */
975
- type ParamKind = 'string' | 'number' | 'literal' | 'array';
976
- /**
977
- * A branded parameter placeholder representing a value of TypeScript type `T`
978
- * that is bound at execution time rather than definition time.
979
- *
980
- * The brand (`[PARAM_BRAND]: T`) keeps `Param<string>` and `Param<number>`
981
- * distinct and prevents a bare value from being mistaken for a placeholder.
982
- *
983
- * @typeParam T - The value type this placeholder stands in for.
984
- */
985
- interface Param<out T> {
986
- /** @internal Type brand carrying the represented value type. */
987
- readonly [PARAM_BRAND]: T;
988
- /** Runtime discriminant: `'string'` | `'number'` | `'literal'` | `'array'`. */
989
- readonly kind: ParamKind;
990
- /**
991
- * For `param.literal(...)`, the allowed literal values (preserved at runtime
992
- * for the generator). `undefined` for `string` / `number`.
993
- */
994
- readonly literals?: readonly T[];
995
- /**
996
- * For `param.array({...})`, the descriptor of each element's fields. Lets the
997
- * transaction planner (#46) type `forEach` element references and emit the
998
- * `{item.<field>}` templates. `undefined` for scalar params.
999
- */
1000
- readonly element?: Readonly<Record<string, Param<unknown>>>;
1001
- }
1002
- /** A `Param` whose represented value type is `string`. */
1003
- type StringParam = Param<string>;
1004
- /** A `Param` whose represented value type is `number`. */
1005
- type NumberParam = Param<number>;
1006
- /** A `Param` whose represented value type is the literal union `L`. */
1007
- type LiteralParam<L extends string | number> = Param<L>;
1008
- /** The element-field descriptor shape accepted by {@link param.array}. */
1009
- type ArrayElementShape = Record<string, Param<unknown>>;
1010
- /**
1011
- * The TypeScript element type implied by an {@link ArrayElementShape} `E`: each
1012
- * field carries the value type its placeholder represents.
1013
- */
1014
- type ElementOf<E extends ArrayElementShape> = {
1015
- [K in keyof E]: E[K] extends Param<infer V> ? V : never;
1016
- };
1017
- /** A `Param` standing in for an **array** whose elements have shape `E`. */
1018
- type ArrayParam<E extends ArrayElementShape> = Param<ElementOf<E>[]> & {
1019
- readonly element: E;
1020
- };
1021
- /** Allowed scalar value types a placeholder may stand in for. */
1022
- type ParamValue = string | number;
1023
- /**
1024
- * Placeholder factory. Each call returns a branded {@link Param} carrying both
1025
- * the TypeScript value type and a runtime descriptor.
1026
- */
1027
- declare const param: {
1028
- /** A placeholder for a `string` value. */
1029
- readonly string: () => StringParam;
1030
- /** A placeholder for a `number` value. */
1031
- readonly number: () => NumberParam;
1032
- /**
1033
- * A placeholder constrained to one of the given literal values. The value
1034
- * type of the resulting {@link Param} is the **union of the literals**, so it
1035
- * is preserved precisely in the IR and the inferred definition types.
1036
- *
1037
- * @example
1038
- * ```ts
1039
- * param.literal('active', 'disabled'); // Param<'active' | 'disabled'>
1040
- * ```
1041
- */
1042
- readonly literal: <const L extends readonly [ParamValue, ...ParamValue[]]>(...values: L) => LiteralParam<L[number]>;
1043
- /**
1044
- * A placeholder for an **array** parameter whose elements have the given field
1045
- * shape. Used by `defineTransaction`'s `tx.forEach(p.<arrayParam>, …)` to bind
1046
- * each element's fields to `{item.<field>}` templates.
1047
- *
1048
- * @example
1049
- * ```ts
1050
- * param.array({ userId: param.string(), role: param.string() });
1051
- * // Param<{ userId: string; role: string }[]>
1052
- * ```
1053
- */
1054
- readonly array: <const E extends ArrayElementShape>(element: E) => ArrayParam<E>;
1055
- };
1056
- /** Runtime type guard: is `value` a parameter placeholder? */
1057
- declare function isParam(value: unknown): value is Param<unknown>;
1058
-
1059
1103
  /**
1060
1104
  * Intermediate representation (IR) produced by the parameterized definition DSL
1061
1105
  * (issue #41). This is the **in-memory, typed** representation consumed by the
@@ -1092,18 +1136,48 @@ type OperationKind = 'query' | 'list' | 'put' | 'update' | 'delete';
1092
1136
  * - `{ field: value, … }` → field equality (`#f = :v AND …`). Each value may be
1093
1137
  * a concrete literal **or** a {@link Param} placeholder (bound at execution).
1094
1138
  *
1095
- * The forms are mutually exclusive: `notExists` / `attributeExists` /
1139
+ * The existence forms are mutually exclusive: `notExists` / `attributeExists` /
1096
1140
  * `attributeNotExists` are single-primitive conditions and ignore any sibling
1097
1141
  * fields. (When more than one would be present the most specific is taken in the
1098
1142
  * order `notExists` → `attributeExists` → `attributeNotExists`.)
1099
- */
1143
+ *
1144
+ * Beyond bare equality, a field value may be a declarative **operator object**
1145
+ * (issue #114-A) — `{ gt }`, `{ between }`, `{ in }`, `{ beginsWith }`, … —
1146
+ * mirroring the read-side `FilterInput`, and the reserved `and` / `or` (arrays)
1147
+ * / `not` (single nested condition) keys express logical groups. Each operand
1148
+ * value may be a concrete literal or a {@link Param} placeholder.
1149
+ */
1150
+ type ConditionLeaf = Param<unknown> | string | number | boolean | Date;
1151
+ /** A declarative operator object on one condition field (subset of FilterInput). */
1152
+ interface ConditionOperatorObject {
1153
+ readonly eq?: ConditionLeaf;
1154
+ readonly ne?: ConditionLeaf;
1155
+ readonly gt?: ConditionLeaf;
1156
+ readonly ge?: ConditionLeaf;
1157
+ readonly lt?: ConditionLeaf;
1158
+ readonly le?: ConditionLeaf;
1159
+ readonly between?: readonly [ConditionLeaf, ConditionLeaf];
1160
+ readonly in?: readonly ConditionLeaf[];
1161
+ readonly beginsWith?: ConditionLeaf;
1162
+ readonly contains?: ConditionLeaf;
1163
+ readonly notContains?: ConditionLeaf;
1164
+ readonly attributeExists?: boolean;
1165
+ readonly attributeType?: string;
1166
+ }
1100
1167
  type ConditionInput = {
1101
1168
  readonly notExists: true;
1102
1169
  } | {
1103
1170
  readonly attributeExists: string;
1104
1171
  } | {
1105
1172
  readonly attributeNotExists: string;
1106
- } | Readonly<Record<string, Param<unknown> | string | number | boolean>>;
1173
+ } | RawCondition | ConditionTree;
1174
+ /** A recursive declarative condition tree (field clauses + logical groups). */
1175
+ interface ConditionTree {
1176
+ readonly and?: readonly ConditionInput[];
1177
+ readonly or?: readonly ConditionInput[];
1178
+ readonly not?: ConditionInput;
1179
+ readonly [field: string]: ConditionLeaf | ConditionOperatorObject | readonly ConditionInput[] | ConditionInput | undefined;
1180
+ }
1107
1181
  /** Options accepted by the write `define*` entry points (issue #46). */
1108
1182
  interface WriteDefinitionOptions {
1109
1183
  /** Optional declarative write condition (subset). */
@@ -1954,6 +2028,16 @@ type WriteOperationType = 'PutItem' | 'UpdateItem' | 'DeleteItem';
1954
2028
  * named attribute must be absent (field-level uniqueness / first-write guard).
1955
2029
  * - `{ kind: 'equals'; fields }` → `#f = :v AND …` field equality (each value a
1956
2030
  * `{param}` / literal template).
2031
+ * - `{ kind: 'expr'; declarative }` → the full declarative operator tree (issue
2032
+ * #114-A): comparison (`gt`/`ge`/`lt`/`le`/`ne`), `between`, `in`,
2033
+ * `begins_with`/`contains`/`notContains`, `attributeType`, and the logical
2034
+ * `and`/`or`/`not` groups, mirroring the read-side {@link FilterSpec}. The tree
2035
+ * is JSON-safe: each leaf value is either a native literal (string / number /
2036
+ * boolean) or a {@link ConditionParamLeaf} (`{ $param }`) marking a caller
2037
+ * param bound at execution time. The runtime resolves the param leaves against
2038
+ * the caller params, then compiles the tree to a DynamoDB `ConditionExpression`
2039
+ * with the SAME mechanics the filter compiler uses (so TS and Python emit an
2040
+ * identical expression / semantics).
1957
2041
  */
1958
2042
  type ConditionSpec = {
1959
2043
  readonly kind: 'notExists';
@@ -1966,6 +2050,30 @@ type ConditionSpec = {
1966
2050
  } | {
1967
2051
  readonly kind: 'equals';
1968
2052
  readonly fields: Readonly<Record<string, string>>;
2053
+ } | {
2054
+ readonly kind: 'expr';
2055
+ readonly declarative: unknown;
2056
+ } | {
2057
+ /**
2058
+ * A raw DynamoDB condition produced by the `cond` escape hatch (issue
2059
+ * #114-B), for write conditions that the declarative operator subset
2060
+ * cannot express. It is **pre-compiled and deterministic**: the
2061
+ * `expression` is a finished DynamoDB `ConditionExpression` whose name
2062
+ * placeholders are stable `#cr_<field>` aliases (reused per distinct
2063
+ * column) and whose value placeholders are sequential `:cr0`, `:cr1`, …
2064
+ * (assigned in template order), so the serialized golden is stable. The
2065
+ * names map binds each `#cr_<field>` alias to its entity field; the values
2066
+ * map binds each `:crN` alias to either a native literal (an embedded
2067
+ * `cond` value — in-process the concrete value) or a {@link ConditionParamLeaf}
2068
+ * (`{ $param }`) marker bound from a caller param at execution time (the
2069
+ * public-contract slot). The runtime substitutes the param leaves, then
2070
+ * attaches `expression` / `names` / serialized `values` to the write —
2071
+ * TS and Python build the identical DynamoDB expression.
2072
+ */
2073
+ readonly kind: 'raw';
2074
+ readonly expression: string;
2075
+ readonly names: Readonly<Record<string, string>>;
2076
+ readonly values: Readonly<Record<string, unknown>>;
1969
2077
  };
1970
2078
  interface CommandSpec {
1971
2079
  readonly type: WriteOperationType;
@@ -4511,4 +4619,4 @@ interface CdcEmulatorOptions {
4511
4619
  }
4512
4620
  type ShardId = string;
4513
4621
 
4514
- export { type BridgeBundle as $, type EntityInput as A, type BatchGetExecInput as B, type ChangeEvent as C, type DynamoDBOperation as D, type Executor as E, type FaultSpec as F, type UniqueQueryKeyOf as G, type EntityRef as H, type ConditionInput as I, type QueryMethodSpec as J, type CommandModelContract as K, type CommandMethodSpec as L, type ModelStatic as M, type ContractSpec as N, type OperationDefinition as O, type PutInput as P, type QueryModelContract as Q, type ResolvedKey as R, type SelectableOf as S, type TransactWriteExecItem as T, type UpdateInput as U, type QuerySpec as V, type WriteExecOptions as W, type CommandSpec as X, type ContextSpec as Y, type OperationsDocument as Z, type AnyOperationDefinition as _, type ExecutorResult as a, type InputArity as a$, type ConditionSpec as a0, type BatchDeleteRequest as a1, type BatchGetRequest as a2, BatchGetResult as a3, type BatchPutRequest as a4, type BatchResult as a5, type BatchWriteRequest as a6, CONTRACT_RANGE_FANOUT_CONCURRENCY as a7, type CdcMode as a8, type ChangeBatch as a9, type ContractKeyRef as aA, type ContractKeySpec as aB, type ContractKind as aC, type ContractMethodOp as aD, type ContractParamRef as aE, type ContractQueryParams as aF, type ContractResolution as aG, type DeleteOptions as aH, type DeriveEffect as aI, type DerivedEdgeWrite as aJ, type DerivedUpdate as aK, type DescriptorBinding as aL, ENTITY_WRITES_MARKER as aM, type EdgeEffect as aN, type EffectPath as aO, type EmitEffect as aP, type EntityWritesDefinition as aQ, type EntityWritesShape as aR, type ExecutableCommandContract as aS, type ExecutableQueryContract as aT, type FilterInput as aU, type FilterSpec as aV, type FragmentInput as aW, type GsiDefinitionMarker as aX, type GsiOptions as aY, type IdempotencyEffect as aZ, type InProcessWriteDescriptor as a_, type ChangeEventName as aa, type ClockMode as ab, type Column as ac, type ColumnMap as ad, type CommandContractMethodSpec as ae, type CommandInputShape as af, type CommandMethod as ag, type CommandPlan as ah, type CommandResolutionTarget as ai, type CommandResultKind as aj, type CommandSelectShape as ak, type CompiledFragment as al, type ComposeSpec as am, type CondSlot as an, type ConditionCheckInput as ao, type Connection as ap, type ContractCallSignature as aq, type ContractCardinality as ar, type ContractCommandParams as as, type ContractCommandResult as at, type ContractComposeNode as au, type ContractFromRef as av, type ContractInputArity as aw, type ContractItem as ax, type ContractKeyFieldRef as ay, type ContractKeyInput as az, type WriteResult as b, type UniqueEffect as b$, type KeyDefinitionMarker as b0, type KeySegment as b1, type KeySlot as b2, type KeyStructure as b3, type KeyedResult as b4, LIFECYCLE_CONTRACT_MARKER as b5, type LifecycleContract as b6, type LifecycleEffects as b7, type LiteralParam as b8, type ManifestEntity as b9, type QueryContractMethodSpec as bA, type QueryEnvelopeResult as bB, type QueryKeyOf as bC, type QueryMethod as bD, type QueryResult as bE, type RangeConditionSpec as bF, type RawCondition as bG, type ReadEnvelope as bH, type ReadOperationType as bI, type ReadRouteDescriptor as bJ, type ReadRouteOptions as bK, type ReadRouteResult as bL, type RecordedCompose as bM, type RelationBuilder as bN, type RelationSelect as bO, type RelationSpec as bP, type RequiresEffect as bQ, type Resolution as bR, SPEC_VERSION as bS, type SegmentSpec as bT, type SelectBuilder as bU, type SelectOf as bV, type StartingPosition as bW, type StreamViewType as bX, type StringParam as bY, TransactionContext as bZ, type TransactionItemType as b_, type ManifestField as ba, type ManifestFieldType as bb, type ManifestGsi as bc, type ManifestKey as bd, type ManifestRelation as be, type ManifestTable as bf, type ModelRef as bg, type MutateMode as bh, type MutateOptions as bi, type MutateParallelResult as bj, type MutateTransactionResult as bk, type MutationBody as bl, type MutationDescriptorMap as bm, type MutationFragment as bn, type MutationInputProxy as bo, type MutationInputRef as bp, type MutationIntent as bq, type NumberParam as br, type OperationKind as bs, type OperationSpec as bt, type ParallelOpResult as bu, type ParamKind as bv, type ParamSpec as bw, type ParamStructure as bx, type PlannedCommandMethod as by, type PutOptions as bz, type DeleteInput as c, type Updatable as c0, type UpdateOptions as c1, type WhenSpec as c2, type WriteDescriptor as c3, type WriteEnvelope as c4, type WriteLifecyclePhase as c5, type WriteOperationType as c6, type WriteRecorder as c7, type WriteResultProjection as c8, attachModelClass as c9, isContractComposeNode as cA, isContractFromRef as cB, isContractKeyFieldRef as cC, isContractKeyRef as cD, isContractParamRef as cE, isEntityWritesDefinition as cF, isKeySegment as cG, isLifecycleContract as cH, isMutationFragment as cI, isMutationInputRef as cJ, isParam as cK, isPlannedCommandMethod as cL, isQueryModelContract as cM, k as cN, key as cO, lifecyclePhaseForIntent as cP, mintContractKeyFieldRef as cQ, mintContractParamRef as cR, mutation as cS, param as cT, publicCommandModel as cU, publicQueryModel as cV, query as cW, resolveLifecycle as cX, wholeKeysSentinel as cY, buildDeleteInput as ca, buildPutInput as cb, buildUpdateInput as cc, compileFragment as cd, compileMutationPlan as ce, compileSingleFragmentPlan as cf, cond as cg, contractOfMethodSpec as ch, definePlan as ci, entityWrites as cj, executeBatchGet as ck, executeBatchWrite as cl, executeCommandMethod as cm, executeDelete as cn, executeKeyedBatchGet as co, executePut as cp, executeQueryMethod as cq, executeRangeFanout as cr, executeTransaction as cs, executeUpdate as ct, from as cu, getEntityWrites as cv, gsi as cw, isColumn as cx, isCommandModelContract as cy, isCommandPlan as cz, type BatchWriteExecItem as d, DDBModel as e, type PrimaryKeyOf as f, type ExecutionPlanSpec as g, type SegmentedKey as h, type SelectBuilderSpec as i, type TransactionSpec as j, type Manifest as k, type ExecutionPlan as l, type CdcEmulatorOptions as m, type ChangeHandler as n, type Unsubscribe as o, type ConcurrentRecomputeRef as p, type EventLog as q, type ReplayOptions as r, type ShardId as s, type TransactionItemSpec as t, type Param as u, type ParamDescriptor as v, type DefinitionMap as w, type WriteDefinitionOptions as x, type PartialQueryKeyOf as y, type StrictSelectSpec as z };
4622
+ export { type AnyOperationDefinition as $, type StrictSelectSpec as A, type BatchGetExecInput as B, type ChangeEvent as C, type DynamoDBOperation as D, type Executor as E, type FaultSpec as F, type EntityInput as G, type UniqueQueryKeyOf as H, type EntityRef as I, type ConditionInput as J, type QueryMethodSpec as K, type CommandModelContract as L, type ModelStatic as M, type CommandMethodSpec as N, type OperationDefinition as O, type PutInput as P, type QueryModelContract as Q, type RawCondition as R, type SelectableOf as S, type TransactWriteExecItem as T, type UpdateInput as U, type ContractSpec as V, type WriteExecOptions as W, type QuerySpec as X, type CommandSpec as Y, type ContextSpec as Z, type OperationsDocument as _, type ExecutorResult as a, type InProcessWriteDescriptor as a$, type BridgeBundle as a0, type ConditionSpec as a1, type BatchDeleteRequest as a2, type BatchGetRequest as a3, BatchGetResult as a4, type BatchPutRequest as a5, type BatchResult as a6, type BatchWriteRequest as a7, CONTRACT_RANGE_FANOUT_CONCURRENCY as a8, type CdcMode as a9, type ContractKeyInput as aA, type ContractKeyRef as aB, type ContractKeySpec as aC, type ContractKind as aD, type ContractMethodOp as aE, type ContractParamRef as aF, type ContractQueryParams as aG, type ContractResolution as aH, type DeleteOptions as aI, type DeriveEffect as aJ, type DerivedEdgeWrite as aK, type DerivedUpdate as aL, type DescriptorBinding as aM, ENTITY_WRITES_MARKER as aN, type EdgeEffect as aO, type EffectPath as aP, type EmitEffect as aQ, type EntityWritesDefinition as aR, type EntityWritesShape as aS, type ExecutableCommandContract as aT, type ExecutableQueryContract as aU, type FilterInput as aV, type FilterSpec as aW, type FragmentInput as aX, type GsiDefinitionMarker as aY, type GsiOptions as aZ, type IdempotencyEffect as a_, type ChangeBatch as aa, type ChangeEventName as ab, type ClockMode as ac, type Column as ad, type ColumnMap as ae, type CommandContractMethodSpec as af, type CommandInputShape as ag, type CommandMethod as ah, type CommandPlan as ai, type CommandResolutionTarget as aj, type CommandResultKind as ak, type CommandSelectShape as al, type CompiledFragment as am, type ComposeSpec as an, type CondSlot as ao, type ConditionCheckInput as ap, type Connection as aq, type ContractCallSignature as ar, type ContractCardinality as as, type ContractCommandParams as at, type ContractCommandResult as au, type ContractComposeNode as av, type ContractFromRef as aw, type ContractInputArity as ax, type ContractItem as ay, type ContractKeyFieldRef as az, type WriteResult as b, type UniqueEffect as b$, type InputArity as b0, type KeyDefinitionMarker as b1, type KeySegment as b2, type KeySlot as b3, type KeyStructure as b4, type KeyedResult as b5, LIFECYCLE_CONTRACT_MARKER as b6, type LifecycleContract as b7, type LifecycleEffects as b8, type LiteralParam as b9, type PutOptions as bA, type QueryContractMethodSpec as bB, type QueryEnvelopeResult as bC, type QueryKeyOf as bD, type QueryMethod as bE, type QueryResult as bF, type RangeConditionSpec as bG, type ReadEnvelope as bH, type ReadOperationType as bI, type ReadRouteDescriptor as bJ, type ReadRouteOptions as bK, type ReadRouteResult as bL, type RecordedCompose as bM, type RelationBuilder as bN, type RelationSelect as bO, type RelationSpec as bP, type RequiresEffect as bQ, type Resolution as bR, SPEC_VERSION as bS, type SegmentSpec as bT, type SelectBuilder as bU, type SelectOf as bV, type StartingPosition as bW, type StreamViewType as bX, type StringParam as bY, TransactionContext as bZ, type TransactionItemType as b_, type ManifestEntity as ba, type ManifestField as bb, type ManifestFieldType as bc, type ManifestGsi as bd, type ManifestKey as be, type ManifestRelation as bf, type ManifestTable as bg, type ModelRef as bh, type MutateMode as bi, type MutateOptions as bj, type MutateParallelResult as bk, type MutateTransactionResult as bl, type MutationBody as bm, type MutationDescriptorMap as bn, type MutationFragment as bo, type MutationInputProxy as bp, type MutationInputRef as bq, type MutationIntent as br, type NumberParam as bs, type OperationKind as bt, type OperationSpec as bu, type ParallelOpResult as bv, type ParamKind as bw, type ParamSpec as bx, type ParamStructure as by, type PlannedCommandMethod as bz, type DeleteInput as c, type Updatable as c0, type UpdateOptions as c1, type WhenSpec as c2, type WriteDescriptor as c3, type WriteEnvelope as c4, type WriteLifecyclePhase as c5, type WriteOperationType as c6, type WriteRecorder as c7, type WriteResultProjection as c8, attachModelClass as c9, isContractComposeNode as cA, isContractFromRef as cB, isContractKeyFieldRef as cC, isContractKeyRef as cD, isContractParamRef as cE, isEntityWritesDefinition as cF, isKeySegment as cG, isLifecycleContract as cH, isMutationFragment as cI, isMutationInputRef as cJ, isParam as cK, isPlannedCommandMethod as cL, isQueryModelContract as cM, k as cN, key as cO, lifecyclePhaseForIntent as cP, mintContractKeyFieldRef as cQ, mintContractParamRef as cR, mutation as cS, param as cT, publicCommandModel as cU, publicQueryModel as cV, query as cW, resolveLifecycle as cX, wholeKeysSentinel as cY, buildDeleteInput as ca, buildPutInput as cb, buildUpdateInput as cc, compileFragment as cd, compileMutationPlan as ce, compileSingleFragmentPlan as cf, cond as cg, contractOfMethodSpec as ch, definePlan as ci, entityWrites as cj, executeBatchGet as ck, executeBatchWrite as cl, executeCommandMethod as cm, executeDelete as cn, executeKeyedBatchGet as co, executePut as cp, executeQueryMethod as cq, executeRangeFanout as cr, executeTransaction as cs, executeUpdate as ct, from as cu, getEntityWrites as cv, gsi as cw, isColumn as cx, isCommandModelContract as cy, isCommandPlan as cz, type BatchWriteExecItem as d, DDBModel as e, type PrimaryKeyOf as f, type ExecutionPlanSpec as g, type SegmentedKey as h, type SelectBuilderSpec as i, type TransactionSpec as j, type Manifest as k, type ExecutionPlan as l, type ResolvedKey as m, type CdcEmulatorOptions as n, type ChangeHandler as o, type Unsubscribe as p, type ConcurrentRecomputeRef as q, type EventLog as r, type ReplayOptions as s, type ShardId as t, type TransactionItemSpec as u, type Param as v, type ParamDescriptor as w, type DefinitionMap as x, type WriteDefinitionOptions as y, type PartialQueryKeyOf as z };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "graphddb",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Graph data modeling on DynamoDB with adjacency list pattern",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",