dinah 0.1.3 → 0.3.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/README.md +19 -15
- package/dist/cdk.cjs +33 -0
- package/dist/cdk.cjs.map +1 -0
- package/dist/cdk.d.cts +10 -0
- package/dist/cdk.d.cts.map +1 -0
- package/dist/cdk.d.mts +10 -0
- package/dist/cdk.d.mts.map +1 -0
- package/dist/cdk.mjs +30 -0
- package/dist/cdk.mjs.map +1 -0
- package/dist/index.cjs +924 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +12 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +12 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +914 -0
- package/dist/index.mjs.map +1 -0
- package/dist/streams.cjs +84 -0
- package/dist/streams.cjs.map +1 -0
- package/dist/streams.d.cts +21 -0
- package/dist/streams.d.cts.map +1 -0
- package/dist/streams.d.mts +21 -0
- package/dist/streams.d.mts.map +1 -0
- package/dist/streams.mjs +82 -0
- package/dist/streams.mjs.map +1 -0
- package/dist/table-DBf8kWHl.d.cts +520 -0
- package/dist/table-DBf8kWHl.d.cts.map +1 -0
- package/dist/table-DqJt-sXI.d.mts +520 -0
- package/dist/table-DqJt-sXI.d.mts.map +1 -0
- package/dist/util-DDOj_NRD.mjs +76 -0
- package/dist/util-DDOj_NRD.mjs.map +1 -0
- package/dist/util-zAG7brd9.cjs +128 -0
- package/dist/util-zAG7brd9.cjs.map +1 -0
- package/package.json +52 -5
package/README.md
CHANGED
|
@@ -203,26 +203,30 @@ await userRepo.trxWrite(
|
|
|
203
203
|
);
|
|
204
204
|
```
|
|
205
205
|
|
|
206
|
-
###
|
|
206
|
+
### Default Values
|
|
207
207
|
|
|
208
|
-
|
|
208
|
+
To attach defaults like timestamps to every write, subclass `AbstractRepo` and override `defaultPutData` and/or `defaultUpdateData`:
|
|
209
209
|
|
|
210
210
|
```typescript
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
updatedAt: Date.now()
|
|
222
|
-
}
|
|
223
|
-
}
|
|
211
|
+
import { AbstractRepo } from "dinah";
|
|
212
|
+
|
|
213
|
+
class UserRepo extends AbstractRepo<typeof UserTable> {
|
|
214
|
+
readonly table = UserTable;
|
|
215
|
+
|
|
216
|
+
override get defaultPutData() {
|
|
217
|
+
return { createdAt: Date.now() };
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
override get defaultUpdateData() {
|
|
221
|
+
return { updatedAt: Date.now() };
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
const userRepo = new UserRepo(db);
|
|
224
226
|
```
|
|
225
227
|
|
|
228
|
+
`defaultPutData` is merged under every `put` / `create` / `batchWrite` put / `trxPut` / `trxCreate`. `defaultUpdateData` is merged under every `update` / `trxUpdate`. Caller-provided values always win on conflict.
|
|
229
|
+
|
|
226
230
|
## License
|
|
227
231
|
|
|
228
232
|
[MIT](LICENSE)
|
package/dist/cdk.cjs
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_util = require("./util-zAG7brd9.cjs");
|
|
3
|
+
let aws_cdk_lib_aws_dynamodb = require("aws-cdk-lib/aws-dynamodb");
|
|
4
|
+
aws_cdk_lib_aws_dynamodb = require_util.__toESM(aws_cdk_lib_aws_dynamodb);
|
|
5
|
+
//#region src/cdk.ts
|
|
6
|
+
const resolveAttrs = (schema, attrNames) => {
|
|
7
|
+
const names = attrNames.filter((name) => name !== void 0);
|
|
8
|
+
if (!names.length) return void 0;
|
|
9
|
+
return names.map((name) => ({
|
|
10
|
+
name,
|
|
11
|
+
type: require_util.resolveAttrType(schema, name) === "S" ? aws_cdk_lib_aws_dynamodb.AttributeType.STRING : aws_cdk_lib_aws_dynamodb.AttributeType.NUMBER
|
|
12
|
+
}));
|
|
13
|
+
};
|
|
14
|
+
const extractTableCdkConfig = (table) => {
|
|
15
|
+
const { schema, def } = table;
|
|
16
|
+
const globalSecondaryIndexes = def.gsis ? Object.entries(def.gsis).map(([indexName, gsi]) => ({
|
|
17
|
+
indexName,
|
|
18
|
+
partitionKeys: resolveAttrs(schema, [gsi.partitionKey].flat()),
|
|
19
|
+
sortKeys: resolveAttrs(schema, [gsi.sortKey].flat())
|
|
20
|
+
})) : void 0;
|
|
21
|
+
return {
|
|
22
|
+
tableName: def.name,
|
|
23
|
+
partitionKey: resolveAttrs(schema, [def.partitionKey])?.at(0),
|
|
24
|
+
sortKey: resolveAttrs(schema, [def.sortKey])?.at(0),
|
|
25
|
+
timeToLiveAttribute: def.ttlAttribute,
|
|
26
|
+
globalSecondaryIndexes
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
//#endregion
|
|
30
|
+
exports.extractTableCdkConfig = extractTableCdkConfig;
|
|
31
|
+
exports.resolveAttrs = resolveAttrs;
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=cdk.cjs.map
|
package/dist/cdk.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cdk.cjs","names":["resolveAttrType","cdk"],"sources":["../src/cdk.ts"],"sourcesContent":["import type { Table } from \"./table\";\nimport * as cdk from \"aws-cdk-lib/aws-dynamodb\";\nimport { resolveAttrType } from \"./util\";\nimport type { TSchema } from \"typebox\";\n\nexport const resolveAttrs = (\n schema: TSchema,\n attrNames: (string | undefined)[],\n): cdk.Attribute[] | undefined => {\n const names = attrNames.filter((name) => name !== undefined);\n if (!names.length) return undefined;\n return names.map((name) => ({\n name,\n type:\n resolveAttrType(schema, name) === \"S\" ? cdk.AttributeType.STRING : cdk.AttributeType.NUMBER,\n }));\n};\n\nexport const extractTableCdkConfig = (\n table: Table,\n): Pick<\n cdk.TablePropsV2,\n \"tableName\" | \"partitionKey\" | \"sortKey\" | \"timeToLiveAttribute\" | \"globalSecondaryIndexes\"\n> => {\n const { schema, def } = table;\n\n const globalSecondaryIndexes = def.gsis\n ? Object.entries(def.gsis).map(([indexName, gsi]) => ({\n indexName,\n partitionKeys: resolveAttrs(schema, [gsi.partitionKey].flat()),\n sortKeys: resolveAttrs(schema, [gsi.sortKey].flat()),\n }))\n : undefined;\n\n return {\n tableName: def.name,\n partitionKey: resolveAttrs(schema, [def.partitionKey])?.at(0)!,\n sortKey: resolveAttrs(schema, [def.sortKey])?.at(0),\n timeToLiveAttribute: def.ttlAttribute,\n //billing: def.billingMode as cdk.BillingMode,\n // stream: def.stream as cdk.StreamViewType,\n globalSecondaryIndexes,\n };\n};\n"],"mappings":";;;;;AAKA,MAAa,gBACX,QACA,cACgC;CAChC,MAAM,QAAQ,UAAU,QAAQ,SAAS,SAAS,KAAA,EAAU;AAC5D,KAAI,CAAC,MAAM,OAAQ,QAAO,KAAA;AAC1B,QAAO,MAAM,KAAK,UAAU;EAC1B;EACA,MACEA,aAAAA,gBAAgB,QAAQ,KAAK,KAAK,MAAMC,yBAAI,cAAc,SAASA,yBAAI,cAAc;EACxF,EAAE;;AAGL,MAAa,yBACX,UAIG;CACH,MAAM,EAAE,QAAQ,QAAQ;CAExB,MAAM,yBAAyB,IAAI,OAC/B,OAAO,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,UAAU;EAClD;EACA,eAAe,aAAa,QAAQ,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC;EAC9D,UAAU,aAAa,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC;EACrD,EAAE,GACH,KAAA;AAEJ,QAAO;EACL,WAAW,IAAI;EACf,cAAc,aAAa,QAAQ,CAAC,IAAI,aAAa,CAAC,EAAE,GAAG,EAAE;EAC7D,SAAS,aAAa,QAAQ,CAAC,IAAI,QAAQ,CAAC,EAAE,GAAG,EAAE;EACnD,qBAAqB,IAAI;EAGzB;EACD"}
|
package/dist/cdk.d.cts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { t as Table } from "./table-DBf8kWHl.cjs";
|
|
2
|
+
import { TSchema } from "typebox";
|
|
3
|
+
import * as cdk from "aws-cdk-lib/aws-dynamodb";
|
|
4
|
+
|
|
5
|
+
//#region src/cdk.d.ts
|
|
6
|
+
declare const resolveAttrs: (schema: TSchema, attrNames: (string | undefined)[]) => cdk.Attribute[] | undefined;
|
|
7
|
+
declare const extractTableCdkConfig: (table: Table) => Pick<cdk.TablePropsV2, "tableName" | "partitionKey" | "sortKey" | "timeToLiveAttribute" | "globalSecondaryIndexes">;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { extractTableCdkConfig, resolveAttrs };
|
|
10
|
+
//# sourceMappingURL=cdk.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cdk.d.cts","names":[],"sources":["../src/cdk.ts"],"mappings":";;;;;cAKa,YAAA,GAAY,MAAA,EACf,OAAA,EAAO,SAAA,6BAEd,GAAA,CAAI,SAAA;AAAA,cAUM,qBAAA,GAAqB,KAAA,EACzB,KAAA,KACN,IAAA,CACD,GAAA,CAAI,YAAA"}
|
package/dist/cdk.d.mts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { t as Table } from "./table-DqJt-sXI.mjs";
|
|
2
|
+
import { TSchema } from "typebox";
|
|
3
|
+
import * as cdk from "aws-cdk-lib/aws-dynamodb";
|
|
4
|
+
|
|
5
|
+
//#region src/cdk.d.ts
|
|
6
|
+
declare const resolveAttrs: (schema: TSchema, attrNames: (string | undefined)[]) => cdk.Attribute[] | undefined;
|
|
7
|
+
declare const extractTableCdkConfig: (table: Table) => Pick<cdk.TablePropsV2, "tableName" | "partitionKey" | "sortKey" | "timeToLiveAttribute" | "globalSecondaryIndexes">;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { extractTableCdkConfig, resolveAttrs };
|
|
10
|
+
//# sourceMappingURL=cdk.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cdk.d.mts","names":[],"sources":["../src/cdk.ts"],"mappings":";;;;;cAKa,YAAA,GAAY,MAAA,EACf,OAAA,EAAO,SAAA,6BAEd,GAAA,CAAI,SAAA;AAAA,cAUM,qBAAA,GAAqB,KAAA,EACzB,KAAA,KACN,IAAA,CACD,GAAA,CAAI,YAAA"}
|
package/dist/cdk.mjs
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { i as resolveAttrType } from "./util-DDOj_NRD.mjs";
|
|
2
|
+
import * as cdk from "aws-cdk-lib/aws-dynamodb";
|
|
3
|
+
//#region src/cdk.ts
|
|
4
|
+
const resolveAttrs = (schema, attrNames) => {
|
|
5
|
+
const names = attrNames.filter((name) => name !== void 0);
|
|
6
|
+
if (!names.length) return void 0;
|
|
7
|
+
return names.map((name) => ({
|
|
8
|
+
name,
|
|
9
|
+
type: resolveAttrType(schema, name) === "S" ? cdk.AttributeType.STRING : cdk.AttributeType.NUMBER
|
|
10
|
+
}));
|
|
11
|
+
};
|
|
12
|
+
const extractTableCdkConfig = (table) => {
|
|
13
|
+
const { schema, def } = table;
|
|
14
|
+
const globalSecondaryIndexes = def.gsis ? Object.entries(def.gsis).map(([indexName, gsi]) => ({
|
|
15
|
+
indexName,
|
|
16
|
+
partitionKeys: resolveAttrs(schema, [gsi.partitionKey].flat()),
|
|
17
|
+
sortKeys: resolveAttrs(schema, [gsi.sortKey].flat())
|
|
18
|
+
})) : void 0;
|
|
19
|
+
return {
|
|
20
|
+
tableName: def.name,
|
|
21
|
+
partitionKey: resolveAttrs(schema, [def.partitionKey])?.at(0),
|
|
22
|
+
sortKey: resolveAttrs(schema, [def.sortKey])?.at(0),
|
|
23
|
+
timeToLiveAttribute: def.ttlAttribute,
|
|
24
|
+
globalSecondaryIndexes
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
//#endregion
|
|
28
|
+
export { extractTableCdkConfig, resolveAttrs };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=cdk.mjs.map
|
package/dist/cdk.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cdk.mjs","names":[],"sources":["../src/cdk.ts"],"sourcesContent":["import type { Table } from \"./table\";\nimport * as cdk from \"aws-cdk-lib/aws-dynamodb\";\nimport { resolveAttrType } from \"./util\";\nimport type { TSchema } from \"typebox\";\n\nexport const resolveAttrs = (\n schema: TSchema,\n attrNames: (string | undefined)[],\n): cdk.Attribute[] | undefined => {\n const names = attrNames.filter((name) => name !== undefined);\n if (!names.length) return undefined;\n return names.map((name) => ({\n name,\n type:\n resolveAttrType(schema, name) === \"S\" ? cdk.AttributeType.STRING : cdk.AttributeType.NUMBER,\n }));\n};\n\nexport const extractTableCdkConfig = (\n table: Table,\n): Pick<\n cdk.TablePropsV2,\n \"tableName\" | \"partitionKey\" | \"sortKey\" | \"timeToLiveAttribute\" | \"globalSecondaryIndexes\"\n> => {\n const { schema, def } = table;\n\n const globalSecondaryIndexes = def.gsis\n ? Object.entries(def.gsis).map(([indexName, gsi]) => ({\n indexName,\n partitionKeys: resolveAttrs(schema, [gsi.partitionKey].flat()),\n sortKeys: resolveAttrs(schema, [gsi.sortKey].flat()),\n }))\n : undefined;\n\n return {\n tableName: def.name,\n partitionKey: resolveAttrs(schema, [def.partitionKey])?.at(0)!,\n sortKey: resolveAttrs(schema, [def.sortKey])?.at(0),\n timeToLiveAttribute: def.ttlAttribute,\n //billing: def.billingMode as cdk.BillingMode,\n // stream: def.stream as cdk.StreamViewType,\n globalSecondaryIndexes,\n };\n};\n"],"mappings":";;;AAKA,MAAa,gBACX,QACA,cACgC;CAChC,MAAM,QAAQ,UAAU,QAAQ,SAAS,SAAS,KAAA,EAAU;AAC5D,KAAI,CAAC,MAAM,OAAQ,QAAO,KAAA;AAC1B,QAAO,MAAM,KAAK,UAAU;EAC1B;EACA,MACE,gBAAgB,QAAQ,KAAK,KAAK,MAAM,IAAI,cAAc,SAAS,IAAI,cAAc;EACxF,EAAE;;AAGL,MAAa,yBACX,UAIG;CACH,MAAM,EAAE,QAAQ,QAAQ;CAExB,MAAM,yBAAyB,IAAI,OAC/B,OAAO,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,UAAU;EAClD;EACA,eAAe,aAAa,QAAQ,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC;EAC9D,UAAU,aAAa,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC;EACrD,EAAE,GACH,KAAA;AAEJ,QAAO;EACL,WAAW,IAAI;EACf,cAAc,aAAa,QAAQ,CAAC,IAAI,aAAa,CAAC,EAAE,GAAG,EAAE;EAC7D,SAAS,aAAa,QAAQ,CAAC,IAAI,QAAQ,CAAC,EAAE,GAAG,EAAE;EACnD,qBAAqB,IAAI;EAGzB;EACD"}
|