dinah 0.3.0 → 0.3.1
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/dist/cdk.cjs +1 -1
- package/dist/cdk.mjs +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.mjs +1 -1
- package/dist/streams.cjs +1 -1
- package/dist/{util-DDOj_NRD.mjs → util-B4dDuxlC.mjs} +3 -2
- package/dist/util-B4dDuxlC.mjs.map +1 -0
- package/dist/{util-zAG7brd9.cjs → util-BOJ7V5_l.cjs} +9 -8
- package/dist/util-BOJ7V5_l.cjs.map +1 -0
- package/package.json +1 -1
- package/dist/util-DDOj_NRD.mjs.map +0 -1
- package/dist/util-zAG7brd9.cjs.map +0 -1
package/dist/cdk.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_util = require("./util-
|
|
2
|
+
const require_util = require("./util-BOJ7V5_l.cjs");
|
|
3
3
|
let aws_cdk_lib_aws_dynamodb = require("aws-cdk-lib/aws-dynamodb");
|
|
4
4
|
aws_cdk_lib_aws_dynamodb = require_util.__toESM(aws_cdk_lib_aws_dynamodb);
|
|
5
5
|
//#region src/cdk.ts
|
package/dist/cdk.mjs
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_util = require("./util-
|
|
2
|
+
const require_util = require("./util-BOJ7V5_l.cjs");
|
|
3
3
|
let _aws_sdk_client_dynamodb = require("@aws-sdk/client-dynamodb");
|
|
4
4
|
let _aws_sdk_lib_dynamodb = require("@aws-sdk/lib-dynamodb");
|
|
5
5
|
_aws_sdk_lib_dynamodb = require_util.__toESM(_aws_sdk_lib_dynamodb);
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as resolveAttrType, n as extractTableDesc, r as removeUndefined, t as chunk } from "./util-
|
|
1
|
+
import { i as resolveAttrType, n as extractTableDesc, r as removeUndefined, t as chunk } from "./util-B4dDuxlC.mjs";
|
|
2
2
|
import { CreateTableCommand, DeleteTableCommand, DynamoDB, DynamoDBClient, ListTablesCommand } from "@aws-sdk/client-dynamodb";
|
|
3
3
|
import * as Lib from "@aws-sdk/lib-dynamodb";
|
|
4
4
|
import sift from "sift";
|
package/dist/streams.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
require("./util-
|
|
2
|
+
require("./util-BOJ7V5_l.cjs");
|
|
3
3
|
let _aws_sdk_client_dynamodb_streams = require("@aws-sdk/client-dynamodb-streams");
|
|
4
4
|
//#region src/streams.ts
|
|
5
5
|
var EventStreamer = class {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import "typebox";
|
|
2
|
+
import * as T from "typebox/type";
|
|
2
3
|
//#region src/util.ts
|
|
3
4
|
const resolveAttrType = (schema, attrName) => {
|
|
4
5
|
if (T.IsString(schema) || T.IsLiteralString(schema)) return "S";
|
|
@@ -73,4 +74,4 @@ const removeUndefined = (obj) => {
|
|
|
73
74
|
//#endregion
|
|
74
75
|
export { resolveAttrType as i, extractTableDesc as n, removeUndefined as r, chunk as t };
|
|
75
76
|
|
|
76
|
-
//# sourceMappingURL=util-
|
|
77
|
+
//# sourceMappingURL=util-B4dDuxlC.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util-B4dDuxlC.mjs","names":[],"sources":["../src/util.ts"],"sourcesContent":["import type {\n AttributeDefinition,\n CreateTableCommandInput,\n ProjectionType,\n} from \"@aws-sdk/client-dynamodb\";\nimport { type TSchema } from \"typebox\";\nimport * as T from \"typebox/type\";\nimport type { Obj } from \"./types\";\nimport type { Table } from \"./table\";\n\nexport const resolveAttrType = (schema: TSchema, attrName: string): \"S\" | \"N\" => {\n if (T.IsString(schema) || T.IsLiteralString(schema)) {\n return \"S\";\n }\n\n if (T.IsNumber(schema) || T.IsLiteralNumber(schema) || T.IsInteger(schema)) {\n return \"N\";\n }\n\n if (T.IsObject(schema)) {\n const attrSchema = schema.properties[attrName];\n if (!attrSchema) {\n throw new Error(`Attribute \"${attrName}\" not found.`);\n }\n return resolveAttrType(attrSchema, attrName);\n }\n\n if (T.IsIntersect(schema) || T.IsUnion(schema)) {\n const schemas = T.IsUnion(schema) ? schema.anyOf : schema.allOf;\n const [firstType, ...otherTypes] = schemas.flatMap((s) => resolveAttrType(s, attrName));\n if (!firstType || otherTypes.some((t) => t !== firstType)) {\n throw new Error(`Attribute \"${attrName}\" type not consistent.`);\n }\n\n return firstType;\n }\n\n throw new Error(`Unable to resolve type for attribute \"${attrName}\"`);\n};\n\nexport const extractTableDesc = (table: Table): CreateTableCommandInput => {\n const attributes = new Map<string, AttributeDefinition>();\n\n const setAttributes = (\n attrNames: (string | undefined)[],\n keyType: \"HASH\" | \"RANGE\",\n ): { AttributeName: string; KeyType: \"HASH\" | \"RANGE\" }[] => {\n return attrNames.flatMap((attrName) => {\n if (!attrName) return [];\n attributes.set(attrName, {\n AttributeName: attrName,\n AttributeType: resolveAttrType(table.schema, attrName),\n });\n return { AttributeName: attrName, KeyType: keyType };\n });\n };\n\n let gsis: CreateTableCommandInput[\"GlobalSecondaryIndexes\"];\n if (table.def.gsis) {\n gsis = Object.entries(table.def.gsis ?? {}).map(([indexName, gsi]) => {\n return {\n IndexName: indexName,\n KeySchema: [\n ...setAttributes([gsi.partitionKey].flat(), \"HASH\"),\n ...setAttributes([gsi.sortKey].flat(), \"RANGE\"),\n ],\n Projection: {\n ProjectionType: (Array.isArray(gsi.projection)\n ? \"INCLUDE\"\n : (gsi.projection ?? \"ALL\")) as ProjectionType,\n NonKeyAttributes: Array.isArray(gsi.projection) ? gsi.projection : undefined,\n },\n };\n });\n }\n\n // attribute definitions need to go AFTER key schemas since\n // are built while resolving the rest of the configuration\n return {\n TableName: table.def.name,\n KeySchema: [\n ...setAttributes([table.def.partitionKey], \"HASH\"),\n ...setAttributes([table.def.sortKey], \"RANGE\"),\n ],\n GlobalSecondaryIndexes: gsis,\n AttributeDefinitions: [...attributes.values()],\n BillingMode: table.def.billingMode,\n StreamSpecification: table.def.stream\n ? { StreamEnabled: true, StreamViewType: table.def.stream }\n : undefined,\n };\n};\n\nexport const chunk = <T = unknown>(arr: T[], chunkSize: number): T[][] => {\n if (chunkSize <= 0) return [];\n\n const chunks: T[][] = [];\n for (let i = 0; i < arr.length; i += chunkSize) {\n chunks.push(arr.slice(i, i + chunkSize));\n }\n\n return chunks;\n};\n\n// this currently creates sparse arrays if an undefined\n// value is found inside an array...not sure if thats valid?\nexport const removeUndefined = (obj: Obj) => {\n const stack = [obj];\n while (stack.length) {\n const currentObj = stack.pop();\n if (currentObj !== undefined) {\n Object.entries(currentObj).forEach(([k, v]) => {\n if (v && v instanceof Object) stack.push(v);\n else if (v === undefined) delete currentObj[k];\n });\n }\n }\n return obj;\n};\n"],"mappings":";;;AAUA,MAAa,mBAAmB,QAAiB,aAAgC;AAC/E,KAAI,EAAE,SAAS,OAAO,IAAI,EAAE,gBAAgB,OAAO,CACjD,QAAO;AAGT,KAAI,EAAE,SAAS,OAAO,IAAI,EAAE,gBAAgB,OAAO,IAAI,EAAE,UAAU,OAAO,CACxE,QAAO;AAGT,KAAI,EAAE,SAAS,OAAO,EAAE;EACtB,MAAM,aAAa,OAAO,WAAW;AACrC,MAAI,CAAC,WACH,OAAM,IAAI,MAAM,cAAc,SAAS,cAAc;AAEvD,SAAO,gBAAgB,YAAY,SAAS;;AAG9C,KAAI,EAAE,YAAY,OAAO,IAAI,EAAE,QAAQ,OAAO,EAAE;EAE9C,MAAM,CAAC,WAAW,GAAG,eADL,EAAE,QAAQ,OAAO,GAAG,OAAO,QAAQ,OAAO,OACf,SAAS,MAAM,gBAAgB,GAAG,SAAS,CAAC;AACvF,MAAI,CAAC,aAAa,WAAW,MAAM,MAAM,MAAM,UAAU,CACvD,OAAM,IAAI,MAAM,cAAc,SAAS,wBAAwB;AAGjE,SAAO;;AAGT,OAAM,IAAI,MAAM,yCAAyC,SAAS,GAAG;;AAGvE,MAAa,oBAAoB,UAA0C;CACzE,MAAM,6BAAa,IAAI,KAAkC;CAEzD,MAAM,iBACJ,WACA,YAC2D;AAC3D,SAAO,UAAU,SAAS,aAAa;AACrC,OAAI,CAAC,SAAU,QAAO,EAAE;AACxB,cAAW,IAAI,UAAU;IACvB,eAAe;IACf,eAAe,gBAAgB,MAAM,QAAQ,SAAS;IACvD,CAAC;AACF,UAAO;IAAE,eAAe;IAAU,SAAS;IAAS;IACpD;;CAGJ,IAAI;AACJ,KAAI,MAAM,IAAI,KACZ,QAAO,OAAO,QAAQ,MAAM,IAAI,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,SAAS;AACpE,SAAO;GACL,WAAW;GACX,WAAW,CACT,GAAG,cAAc,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,OAAO,EACnD,GAAG,cAAc,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAChD;GACD,YAAY;IACV,gBAAiB,MAAM,QAAQ,IAAI,WAAW,GAC1C,YACC,IAAI,cAAc;IACvB,kBAAkB,MAAM,QAAQ,IAAI,WAAW,GAAG,IAAI,aAAa,KAAA;IACpE;GACF;GACD;AAKJ,QAAO;EACL,WAAW,MAAM,IAAI;EACrB,WAAW,CACT,GAAG,cAAc,CAAC,MAAM,IAAI,aAAa,EAAE,OAAO,EAClD,GAAG,cAAc,CAAC,MAAM,IAAI,QAAQ,EAAE,QAAQ,CAC/C;EACD,wBAAwB;EACxB,sBAAsB,CAAC,GAAG,WAAW,QAAQ,CAAC;EAC9C,aAAa,MAAM,IAAI;EACvB,qBAAqB,MAAM,IAAI,SAC3B;GAAE,eAAe;GAAM,gBAAgB,MAAM,IAAI;GAAQ,GACzD,KAAA;EACL;;AAGH,MAAa,SAAsB,KAAU,cAA6B;AACxE,KAAI,aAAa,EAAG,QAAO,EAAE;CAE7B,MAAM,SAAgB,EAAE;AACxB,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,UACnC,QAAO,KAAK,IAAI,MAAM,GAAG,IAAI,UAAU,CAAC;AAG1C,QAAO;;AAKT,MAAa,mBAAmB,QAAa;CAC3C,MAAM,QAAQ,CAAC,IAAI;AACnB,QAAO,MAAM,QAAQ;EACnB,MAAM,aAAa,MAAM,KAAK;AAC9B,MAAI,eAAe,KAAA,EACjB,QAAO,QAAQ,WAAW,CAAC,SAAS,CAAC,GAAG,OAAO;AAC7C,OAAI,KAAK,aAAa,OAAQ,OAAM,KAAK,EAAE;YAClC,MAAM,KAAA,EAAW,QAAO,WAAW;IAC5C;;AAGN,QAAO"}
|
|
@@ -20,19 +20,20 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
20
20
|
enumerable: true
|
|
21
21
|
}) : target, mod));
|
|
22
22
|
//#endregion
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
require("typebox");
|
|
24
|
+
let typebox_type = require("typebox/type");
|
|
25
|
+
typebox_type = __toESM(typebox_type);
|
|
25
26
|
//#region src/util.ts
|
|
26
27
|
const resolveAttrType = (schema, attrName) => {
|
|
27
|
-
if (
|
|
28
|
-
if (
|
|
29
|
-
if (
|
|
28
|
+
if (typebox_type.IsString(schema) || typebox_type.IsLiteralString(schema)) return "S";
|
|
29
|
+
if (typebox_type.IsNumber(schema) || typebox_type.IsLiteralNumber(schema) || typebox_type.IsInteger(schema)) return "N";
|
|
30
|
+
if (typebox_type.IsObject(schema)) {
|
|
30
31
|
const attrSchema = schema.properties[attrName];
|
|
31
32
|
if (!attrSchema) throw new Error(`Attribute "${attrName}" not found.`);
|
|
32
33
|
return resolveAttrType(attrSchema, attrName);
|
|
33
34
|
}
|
|
34
|
-
if (
|
|
35
|
-
const [firstType, ...otherTypes] = (
|
|
35
|
+
if (typebox_type.IsIntersect(schema) || typebox_type.IsUnion(schema)) {
|
|
36
|
+
const [firstType, ...otherTypes] = (typebox_type.IsUnion(schema) ? schema.anyOf : schema.allOf).flatMap((s) => resolveAttrType(s, attrName));
|
|
36
37
|
if (!firstType || otherTypes.some((t) => t !== firstType)) throw new Error(`Attribute "${attrName}" type not consistent.`);
|
|
37
38
|
return firstType;
|
|
38
39
|
}
|
|
@@ -125,4 +126,4 @@ Object.defineProperty(exports, "resolveAttrType", {
|
|
|
125
126
|
}
|
|
126
127
|
});
|
|
127
128
|
|
|
128
|
-
//# sourceMappingURL=util-
|
|
129
|
+
//# sourceMappingURL=util-BOJ7V5_l.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util-BOJ7V5_l.cjs","names":["T"],"sources":["../src/util.ts"],"sourcesContent":["import type {\n AttributeDefinition,\n CreateTableCommandInput,\n ProjectionType,\n} from \"@aws-sdk/client-dynamodb\";\nimport { type TSchema } from \"typebox\";\nimport * as T from \"typebox/type\";\nimport type { Obj } from \"./types\";\nimport type { Table } from \"./table\";\n\nexport const resolveAttrType = (schema: TSchema, attrName: string): \"S\" | \"N\" => {\n if (T.IsString(schema) || T.IsLiteralString(schema)) {\n return \"S\";\n }\n\n if (T.IsNumber(schema) || T.IsLiteralNumber(schema) || T.IsInteger(schema)) {\n return \"N\";\n }\n\n if (T.IsObject(schema)) {\n const attrSchema = schema.properties[attrName];\n if (!attrSchema) {\n throw new Error(`Attribute \"${attrName}\" not found.`);\n }\n return resolveAttrType(attrSchema, attrName);\n }\n\n if (T.IsIntersect(schema) || T.IsUnion(schema)) {\n const schemas = T.IsUnion(schema) ? schema.anyOf : schema.allOf;\n const [firstType, ...otherTypes] = schemas.flatMap((s) => resolveAttrType(s, attrName));\n if (!firstType || otherTypes.some((t) => t !== firstType)) {\n throw new Error(`Attribute \"${attrName}\" type not consistent.`);\n }\n\n return firstType;\n }\n\n throw new Error(`Unable to resolve type for attribute \"${attrName}\"`);\n};\n\nexport const extractTableDesc = (table: Table): CreateTableCommandInput => {\n const attributes = new Map<string, AttributeDefinition>();\n\n const setAttributes = (\n attrNames: (string | undefined)[],\n keyType: \"HASH\" | \"RANGE\",\n ): { AttributeName: string; KeyType: \"HASH\" | \"RANGE\" }[] => {\n return attrNames.flatMap((attrName) => {\n if (!attrName) return [];\n attributes.set(attrName, {\n AttributeName: attrName,\n AttributeType: resolveAttrType(table.schema, attrName),\n });\n return { AttributeName: attrName, KeyType: keyType };\n });\n };\n\n let gsis: CreateTableCommandInput[\"GlobalSecondaryIndexes\"];\n if (table.def.gsis) {\n gsis = Object.entries(table.def.gsis ?? {}).map(([indexName, gsi]) => {\n return {\n IndexName: indexName,\n KeySchema: [\n ...setAttributes([gsi.partitionKey].flat(), \"HASH\"),\n ...setAttributes([gsi.sortKey].flat(), \"RANGE\"),\n ],\n Projection: {\n ProjectionType: (Array.isArray(gsi.projection)\n ? \"INCLUDE\"\n : (gsi.projection ?? \"ALL\")) as ProjectionType,\n NonKeyAttributes: Array.isArray(gsi.projection) ? gsi.projection : undefined,\n },\n };\n });\n }\n\n // attribute definitions need to go AFTER key schemas since\n // are built while resolving the rest of the configuration\n return {\n TableName: table.def.name,\n KeySchema: [\n ...setAttributes([table.def.partitionKey], \"HASH\"),\n ...setAttributes([table.def.sortKey], \"RANGE\"),\n ],\n GlobalSecondaryIndexes: gsis,\n AttributeDefinitions: [...attributes.values()],\n BillingMode: table.def.billingMode,\n StreamSpecification: table.def.stream\n ? { StreamEnabled: true, StreamViewType: table.def.stream }\n : undefined,\n };\n};\n\nexport const chunk = <T = unknown>(arr: T[], chunkSize: number): T[][] => {\n if (chunkSize <= 0) return [];\n\n const chunks: T[][] = [];\n for (let i = 0; i < arr.length; i += chunkSize) {\n chunks.push(arr.slice(i, i + chunkSize));\n }\n\n return chunks;\n};\n\n// this currently creates sparse arrays if an undefined\n// value is found inside an array...not sure if thats valid?\nexport const removeUndefined = (obj: Obj) => {\n const stack = [obj];\n while (stack.length) {\n const currentObj = stack.pop();\n if (currentObj !== undefined) {\n Object.entries(currentObj).forEach(([k, v]) => {\n if (v && v instanceof Object) stack.push(v);\n else if (v === undefined) delete currentObj[k];\n });\n }\n }\n return obj;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,MAAa,mBAAmB,QAAiB,aAAgC;AAC/E,KAAIA,aAAE,SAAS,OAAO,IAAIA,aAAE,gBAAgB,OAAO,CACjD,QAAO;AAGT,KAAIA,aAAE,SAAS,OAAO,IAAIA,aAAE,gBAAgB,OAAO,IAAIA,aAAE,UAAU,OAAO,CACxE,QAAO;AAGT,KAAIA,aAAE,SAAS,OAAO,EAAE;EACtB,MAAM,aAAa,OAAO,WAAW;AACrC,MAAI,CAAC,WACH,OAAM,IAAI,MAAM,cAAc,SAAS,cAAc;AAEvD,SAAO,gBAAgB,YAAY,SAAS;;AAG9C,KAAIA,aAAE,YAAY,OAAO,IAAIA,aAAE,QAAQ,OAAO,EAAE;EAE9C,MAAM,CAAC,WAAW,GAAG,eADLA,aAAE,QAAQ,OAAO,GAAG,OAAO,QAAQ,OAAO,OACf,SAAS,MAAM,gBAAgB,GAAG,SAAS,CAAC;AACvF,MAAI,CAAC,aAAa,WAAW,MAAM,MAAM,MAAM,UAAU,CACvD,OAAM,IAAI,MAAM,cAAc,SAAS,wBAAwB;AAGjE,SAAO;;AAGT,OAAM,IAAI,MAAM,yCAAyC,SAAS,GAAG;;AAGvE,MAAa,oBAAoB,UAA0C;CACzE,MAAM,6BAAa,IAAI,KAAkC;CAEzD,MAAM,iBACJ,WACA,YAC2D;AAC3D,SAAO,UAAU,SAAS,aAAa;AACrC,OAAI,CAAC,SAAU,QAAO,EAAE;AACxB,cAAW,IAAI,UAAU;IACvB,eAAe;IACf,eAAe,gBAAgB,MAAM,QAAQ,SAAS;IACvD,CAAC;AACF,UAAO;IAAE,eAAe;IAAU,SAAS;IAAS;IACpD;;CAGJ,IAAI;AACJ,KAAI,MAAM,IAAI,KACZ,QAAO,OAAO,QAAQ,MAAM,IAAI,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,SAAS;AACpE,SAAO;GACL,WAAW;GACX,WAAW,CACT,GAAG,cAAc,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,OAAO,EACnD,GAAG,cAAc,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAChD;GACD,YAAY;IACV,gBAAiB,MAAM,QAAQ,IAAI,WAAW,GAC1C,YACC,IAAI,cAAc;IACvB,kBAAkB,MAAM,QAAQ,IAAI,WAAW,GAAG,IAAI,aAAa,KAAA;IACpE;GACF;GACD;AAKJ,QAAO;EACL,WAAW,MAAM,IAAI;EACrB,WAAW,CACT,GAAG,cAAc,CAAC,MAAM,IAAI,aAAa,EAAE,OAAO,EAClD,GAAG,cAAc,CAAC,MAAM,IAAI,QAAQ,EAAE,QAAQ,CAC/C;EACD,wBAAwB;EACxB,sBAAsB,CAAC,GAAG,WAAW,QAAQ,CAAC;EAC9C,aAAa,MAAM,IAAI;EACvB,qBAAqB,MAAM,IAAI,SAC3B;GAAE,eAAe;GAAM,gBAAgB,MAAM,IAAI;GAAQ,GACzD,KAAA;EACL;;AAGH,MAAa,SAAsB,KAAU,cAA6B;AACxE,KAAI,aAAa,EAAG,QAAO,EAAE;CAE7B,MAAM,SAAgB,EAAE;AACxB,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,UACnC,QAAO,KAAK,IAAI,MAAM,GAAG,IAAI,UAAU,CAAC;AAG1C,QAAO;;AAKT,MAAa,mBAAmB,QAAa;CAC3C,MAAM,QAAQ,CAAC,IAAI;AACnB,QAAO,MAAM,QAAQ;EACnB,MAAM,aAAa,MAAM,KAAK;AAC9B,MAAI,eAAe,KAAA,EACjB,QAAO,QAAQ,WAAW,CAAC,SAAS,CAAC,GAAG,OAAO;AAC7C,OAAI,KAAK,aAAa,OAAQ,OAAM,KAAK,EAAE;YAClC,MAAM,KAAA,EAAW,QAAO,WAAW;IAC5C;;AAGN,QAAO"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"util-DDOj_NRD.mjs","names":[],"sources":["../src/util.ts"],"sourcesContent":["import type {\n AttributeDefinition,\n CreateTableCommandInput,\n ProjectionType,\n} from \"@aws-sdk/client-dynamodb\";\nimport { type TSchema } from \"typebox\";\nimport * as T from \"typebox\";\nimport type { Obj } from \"./types\";\nimport type { Table } from \"./table\";\n\nexport const resolveAttrType = (schema: TSchema, attrName: string): \"S\" | \"N\" => {\n if (T.IsString(schema) || T.IsLiteralString(schema)) {\n return \"S\";\n }\n\n if (T.IsNumber(schema) || T.IsLiteralNumber(schema) || T.IsInteger(schema)) {\n return \"N\";\n }\n\n if (T.IsObject(schema)) {\n const attrSchema = schema.properties[attrName];\n if (!attrSchema) {\n throw new Error(`Attribute \"${attrName}\" not found.`);\n }\n return resolveAttrType(attrSchema, attrName);\n }\n\n if (T.IsIntersect(schema) || T.IsUnion(schema)) {\n const schemas = T.IsUnion(schema) ? schema.anyOf : schema.allOf;\n const [firstType, ...otherTypes] = schemas.flatMap((s) => resolveAttrType(s, attrName));\n if (!firstType || otherTypes.some((t) => t !== firstType)) {\n throw new Error(`Attribute \"${attrName}\" type not consistent.`);\n }\n\n return firstType;\n }\n\n throw new Error(`Unable to resolve type for attribute \"${attrName}\"`);\n};\n\nexport const extractTableDesc = (table: Table): CreateTableCommandInput => {\n const attributes = new Map<string, AttributeDefinition>();\n\n const setAttributes = (\n attrNames: (string | undefined)[],\n keyType: \"HASH\" | \"RANGE\",\n ): { AttributeName: string; KeyType: \"HASH\" | \"RANGE\" }[] => {\n return attrNames.flatMap((attrName) => {\n if (!attrName) return [];\n attributes.set(attrName, {\n AttributeName: attrName,\n AttributeType: resolveAttrType(table.schema, attrName),\n });\n return { AttributeName: attrName, KeyType: keyType };\n });\n };\n\n let gsis: CreateTableCommandInput[\"GlobalSecondaryIndexes\"];\n if (table.def.gsis) {\n gsis = Object.entries(table.def.gsis ?? {}).map(([indexName, gsi]) => {\n return {\n IndexName: indexName,\n KeySchema: [\n ...setAttributes([gsi.partitionKey].flat(), \"HASH\"),\n ...setAttributes([gsi.sortKey].flat(), \"RANGE\"),\n ],\n Projection: {\n ProjectionType: (Array.isArray(gsi.projection)\n ? \"INCLUDE\"\n : (gsi.projection ?? \"ALL\")) as ProjectionType,\n NonKeyAttributes: Array.isArray(gsi.projection) ? gsi.projection : undefined,\n },\n };\n });\n }\n\n // attribute definitions need to go AFTER key schemas since\n // are built while resolving the rest of the configuration\n return {\n TableName: table.def.name,\n KeySchema: [\n ...setAttributes([table.def.partitionKey], \"HASH\"),\n ...setAttributes([table.def.sortKey], \"RANGE\"),\n ],\n GlobalSecondaryIndexes: gsis,\n AttributeDefinitions: [...attributes.values()],\n BillingMode: table.def.billingMode,\n StreamSpecification: table.def.stream\n ? { StreamEnabled: true, StreamViewType: table.def.stream }\n : undefined,\n };\n};\n\nexport const chunk = <T = unknown>(arr: T[], chunkSize: number): T[][] => {\n if (chunkSize <= 0) return [];\n\n const chunks: T[][] = [];\n for (let i = 0; i < arr.length; i += chunkSize) {\n chunks.push(arr.slice(i, i + chunkSize));\n }\n\n return chunks;\n};\n\n// this currently creates sparse arrays if an undefined\n// value is found inside an array...not sure if thats valid?\nexport const removeUndefined = (obj: Obj) => {\n const stack = [obj];\n while (stack.length) {\n const currentObj = stack.pop();\n if (currentObj !== undefined) {\n Object.entries(currentObj).forEach(([k, v]) => {\n if (v && v instanceof Object) stack.push(v);\n else if (v === undefined) delete currentObj[k];\n });\n }\n }\n return obj;\n};\n"],"mappings":";;AAUA,MAAa,mBAAmB,QAAiB,aAAgC;AAC/E,KAAI,EAAE,SAAS,OAAO,IAAI,EAAE,gBAAgB,OAAO,CACjD,QAAO;AAGT,KAAI,EAAE,SAAS,OAAO,IAAI,EAAE,gBAAgB,OAAO,IAAI,EAAE,UAAU,OAAO,CACxE,QAAO;AAGT,KAAI,EAAE,SAAS,OAAO,EAAE;EACtB,MAAM,aAAa,OAAO,WAAW;AACrC,MAAI,CAAC,WACH,OAAM,IAAI,MAAM,cAAc,SAAS,cAAc;AAEvD,SAAO,gBAAgB,YAAY,SAAS;;AAG9C,KAAI,EAAE,YAAY,OAAO,IAAI,EAAE,QAAQ,OAAO,EAAE;EAE9C,MAAM,CAAC,WAAW,GAAG,eADL,EAAE,QAAQ,OAAO,GAAG,OAAO,QAAQ,OAAO,OACf,SAAS,MAAM,gBAAgB,GAAG,SAAS,CAAC;AACvF,MAAI,CAAC,aAAa,WAAW,MAAM,MAAM,MAAM,UAAU,CACvD,OAAM,IAAI,MAAM,cAAc,SAAS,wBAAwB;AAGjE,SAAO;;AAGT,OAAM,IAAI,MAAM,yCAAyC,SAAS,GAAG;;AAGvE,MAAa,oBAAoB,UAA0C;CACzE,MAAM,6BAAa,IAAI,KAAkC;CAEzD,MAAM,iBACJ,WACA,YAC2D;AAC3D,SAAO,UAAU,SAAS,aAAa;AACrC,OAAI,CAAC,SAAU,QAAO,EAAE;AACxB,cAAW,IAAI,UAAU;IACvB,eAAe;IACf,eAAe,gBAAgB,MAAM,QAAQ,SAAS;IACvD,CAAC;AACF,UAAO;IAAE,eAAe;IAAU,SAAS;IAAS;IACpD;;CAGJ,IAAI;AACJ,KAAI,MAAM,IAAI,KACZ,QAAO,OAAO,QAAQ,MAAM,IAAI,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,SAAS;AACpE,SAAO;GACL,WAAW;GACX,WAAW,CACT,GAAG,cAAc,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,OAAO,EACnD,GAAG,cAAc,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAChD;GACD,YAAY;IACV,gBAAiB,MAAM,QAAQ,IAAI,WAAW,GAC1C,YACC,IAAI,cAAc;IACvB,kBAAkB,MAAM,QAAQ,IAAI,WAAW,GAAG,IAAI,aAAa,KAAA;IACpE;GACF;GACD;AAKJ,QAAO;EACL,WAAW,MAAM,IAAI;EACrB,WAAW,CACT,GAAG,cAAc,CAAC,MAAM,IAAI,aAAa,EAAE,OAAO,EAClD,GAAG,cAAc,CAAC,MAAM,IAAI,QAAQ,EAAE,QAAQ,CAC/C;EACD,wBAAwB;EACxB,sBAAsB,CAAC,GAAG,WAAW,QAAQ,CAAC;EAC9C,aAAa,MAAM,IAAI;EACvB,qBAAqB,MAAM,IAAI,SAC3B;GAAE,eAAe;GAAM,gBAAgB,MAAM,IAAI;GAAQ,GACzD,KAAA;EACL;;AAGH,MAAa,SAAsB,KAAU,cAA6B;AACxE,KAAI,aAAa,EAAG,QAAO,EAAE;CAE7B,MAAM,SAAgB,EAAE;AACxB,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,UACnC,QAAO,KAAK,IAAI,MAAM,GAAG,IAAI,UAAU,CAAC;AAG1C,QAAO;;AAKT,MAAa,mBAAmB,QAAa;CAC3C,MAAM,QAAQ,CAAC,IAAI;AACnB,QAAO,MAAM,QAAQ;EACnB,MAAM,aAAa,MAAM,KAAK;AAC9B,MAAI,eAAe,KAAA,EACjB,QAAO,QAAQ,WAAW,CAAC,SAAS,CAAC,GAAG,OAAO;AAC7C,OAAI,KAAK,aAAa,OAAQ,OAAM,KAAK,EAAE;YAClC,MAAM,KAAA,EAAW,QAAO,WAAW;IAC5C;;AAGN,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"util-zAG7brd9.cjs","names":["T"],"sources":["../src/util.ts"],"sourcesContent":["import type {\n AttributeDefinition,\n CreateTableCommandInput,\n ProjectionType,\n} from \"@aws-sdk/client-dynamodb\";\nimport { type TSchema } from \"typebox\";\nimport * as T from \"typebox\";\nimport type { Obj } from \"./types\";\nimport type { Table } from \"./table\";\n\nexport const resolveAttrType = (schema: TSchema, attrName: string): \"S\" | \"N\" => {\n if (T.IsString(schema) || T.IsLiteralString(schema)) {\n return \"S\";\n }\n\n if (T.IsNumber(schema) || T.IsLiteralNumber(schema) || T.IsInteger(schema)) {\n return \"N\";\n }\n\n if (T.IsObject(schema)) {\n const attrSchema = schema.properties[attrName];\n if (!attrSchema) {\n throw new Error(`Attribute \"${attrName}\" not found.`);\n }\n return resolveAttrType(attrSchema, attrName);\n }\n\n if (T.IsIntersect(schema) || T.IsUnion(schema)) {\n const schemas = T.IsUnion(schema) ? schema.anyOf : schema.allOf;\n const [firstType, ...otherTypes] = schemas.flatMap((s) => resolveAttrType(s, attrName));\n if (!firstType || otherTypes.some((t) => t !== firstType)) {\n throw new Error(`Attribute \"${attrName}\" type not consistent.`);\n }\n\n return firstType;\n }\n\n throw new Error(`Unable to resolve type for attribute \"${attrName}\"`);\n};\n\nexport const extractTableDesc = (table: Table): CreateTableCommandInput => {\n const attributes = new Map<string, AttributeDefinition>();\n\n const setAttributes = (\n attrNames: (string | undefined)[],\n keyType: \"HASH\" | \"RANGE\",\n ): { AttributeName: string; KeyType: \"HASH\" | \"RANGE\" }[] => {\n return attrNames.flatMap((attrName) => {\n if (!attrName) return [];\n attributes.set(attrName, {\n AttributeName: attrName,\n AttributeType: resolveAttrType(table.schema, attrName),\n });\n return { AttributeName: attrName, KeyType: keyType };\n });\n };\n\n let gsis: CreateTableCommandInput[\"GlobalSecondaryIndexes\"];\n if (table.def.gsis) {\n gsis = Object.entries(table.def.gsis ?? {}).map(([indexName, gsi]) => {\n return {\n IndexName: indexName,\n KeySchema: [\n ...setAttributes([gsi.partitionKey].flat(), \"HASH\"),\n ...setAttributes([gsi.sortKey].flat(), \"RANGE\"),\n ],\n Projection: {\n ProjectionType: (Array.isArray(gsi.projection)\n ? \"INCLUDE\"\n : (gsi.projection ?? \"ALL\")) as ProjectionType,\n NonKeyAttributes: Array.isArray(gsi.projection) ? gsi.projection : undefined,\n },\n };\n });\n }\n\n // attribute definitions need to go AFTER key schemas since\n // are built while resolving the rest of the configuration\n return {\n TableName: table.def.name,\n KeySchema: [\n ...setAttributes([table.def.partitionKey], \"HASH\"),\n ...setAttributes([table.def.sortKey], \"RANGE\"),\n ],\n GlobalSecondaryIndexes: gsis,\n AttributeDefinitions: [...attributes.values()],\n BillingMode: table.def.billingMode,\n StreamSpecification: table.def.stream\n ? { StreamEnabled: true, StreamViewType: table.def.stream }\n : undefined,\n };\n};\n\nexport const chunk = <T = unknown>(arr: T[], chunkSize: number): T[][] => {\n if (chunkSize <= 0) return [];\n\n const chunks: T[][] = [];\n for (let i = 0; i < arr.length; i += chunkSize) {\n chunks.push(arr.slice(i, i + chunkSize));\n }\n\n return chunks;\n};\n\n// this currently creates sparse arrays if an undefined\n// value is found inside an array...not sure if thats valid?\nexport const removeUndefined = (obj: Obj) => {\n const stack = [obj];\n while (stack.length) {\n const currentObj = stack.pop();\n if (currentObj !== undefined) {\n Object.entries(currentObj).forEach(([k, v]) => {\n if (v && v instanceof Object) stack.push(v);\n else if (v === undefined) delete currentObj[k];\n });\n }\n }\n return obj;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAUA,MAAa,mBAAmB,QAAiB,aAAgC;AAC/E,KAAIA,QAAE,SAAS,OAAO,IAAIA,QAAE,gBAAgB,OAAO,CACjD,QAAO;AAGT,KAAIA,QAAE,SAAS,OAAO,IAAIA,QAAE,gBAAgB,OAAO,IAAIA,QAAE,UAAU,OAAO,CACxE,QAAO;AAGT,KAAIA,QAAE,SAAS,OAAO,EAAE;EACtB,MAAM,aAAa,OAAO,WAAW;AACrC,MAAI,CAAC,WACH,OAAM,IAAI,MAAM,cAAc,SAAS,cAAc;AAEvD,SAAO,gBAAgB,YAAY,SAAS;;AAG9C,KAAIA,QAAE,YAAY,OAAO,IAAIA,QAAE,QAAQ,OAAO,EAAE;EAE9C,MAAM,CAAC,WAAW,GAAG,eADLA,QAAE,QAAQ,OAAO,GAAG,OAAO,QAAQ,OAAO,OACf,SAAS,MAAM,gBAAgB,GAAG,SAAS,CAAC;AACvF,MAAI,CAAC,aAAa,WAAW,MAAM,MAAM,MAAM,UAAU,CACvD,OAAM,IAAI,MAAM,cAAc,SAAS,wBAAwB;AAGjE,SAAO;;AAGT,OAAM,IAAI,MAAM,yCAAyC,SAAS,GAAG;;AAGvE,MAAa,oBAAoB,UAA0C;CACzE,MAAM,6BAAa,IAAI,KAAkC;CAEzD,MAAM,iBACJ,WACA,YAC2D;AAC3D,SAAO,UAAU,SAAS,aAAa;AACrC,OAAI,CAAC,SAAU,QAAO,EAAE;AACxB,cAAW,IAAI,UAAU;IACvB,eAAe;IACf,eAAe,gBAAgB,MAAM,QAAQ,SAAS;IACvD,CAAC;AACF,UAAO;IAAE,eAAe;IAAU,SAAS;IAAS;IACpD;;CAGJ,IAAI;AACJ,KAAI,MAAM,IAAI,KACZ,QAAO,OAAO,QAAQ,MAAM,IAAI,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,SAAS;AACpE,SAAO;GACL,WAAW;GACX,WAAW,CACT,GAAG,cAAc,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,OAAO,EACnD,GAAG,cAAc,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAChD;GACD,YAAY;IACV,gBAAiB,MAAM,QAAQ,IAAI,WAAW,GAC1C,YACC,IAAI,cAAc;IACvB,kBAAkB,MAAM,QAAQ,IAAI,WAAW,GAAG,IAAI,aAAa,KAAA;IACpE;GACF;GACD;AAKJ,QAAO;EACL,WAAW,MAAM,IAAI;EACrB,WAAW,CACT,GAAG,cAAc,CAAC,MAAM,IAAI,aAAa,EAAE,OAAO,EAClD,GAAG,cAAc,CAAC,MAAM,IAAI,QAAQ,EAAE,QAAQ,CAC/C;EACD,wBAAwB;EACxB,sBAAsB,CAAC,GAAG,WAAW,QAAQ,CAAC;EAC9C,aAAa,MAAM,IAAI;EACvB,qBAAqB,MAAM,IAAI,SAC3B;GAAE,eAAe;GAAM,gBAAgB,MAAM,IAAI;GAAQ,GACzD,KAAA;EACL;;AAGH,MAAa,SAAsB,KAAU,cAA6B;AACxE,KAAI,aAAa,EAAG,QAAO,EAAE;CAE7B,MAAM,SAAgB,EAAE;AACxB,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,UACnC,QAAO,KAAK,IAAI,MAAM,GAAG,IAAI,UAAU,CAAC;AAG1C,QAAO;;AAKT,MAAa,mBAAmB,QAAa;CAC3C,MAAM,QAAQ,CAAC,IAAI;AACnB,QAAO,MAAM,QAAQ;EACnB,MAAM,aAAa,MAAM,KAAK;AAC9B,MAAI,eAAe,KAAA,EACjB,QAAO,QAAQ,WAAW,CAAC,SAAS,CAAC,GAAG,OAAO;AAC7C,OAAI,KAAK,aAAa,OAAQ,OAAM,KAAK,EAAE;YAClC,MAAM,KAAA,EAAW,QAAO,WAAW;IAC5C;;AAGN,QAAO"}
|