dinah 0.15.0 → 0.15.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.
@@ -1 +1 @@
1
- {"version":3,"file":"streams.mjs","names":[],"sources":["../src/streams.ts"],"sourcesContent":["import {\n type _Record,\n DescribeStreamCommand,\n type DynamoDBStreams,\n GetRecordsCommand,\n GetShardIteratorCommand,\n ResourceNotFoundException,\n type Shard,\n type ShardIteratorType,\n TrimmedDataAccessException,\n} from \"@aws-sdk/client-dynamodb-streams\";\n\nexport class EventStreamer {\n readonly client: DynamoDBStreams;\n readonly streamArn: string;\n\n private pollTimer: NodeJS.Timeout | undefined;\n\n // a map of shard ids to shards\n protected shards = new Map<string, { shard: Shard; iterator?: string }>();\n\n constructor(client: DynamoDBStreams, streamArn: string) {\n this.client = client;\n this.streamArn = streamArn;\n }\n\n protected async syncShards(\n iteratorType?: ShardIteratorType,\n sequenceNumber?: string,\n ): Promise<void> {\n // TODO: technically this will only return a maximum of 100 shards, pagination is required otherwise\n // DescribeStream can only be called 10 times per second\n // Closed streams can be returned, and will contain a EndingSequenceNumber\n const { StreamDescription } = await this.client.send(\n new DescribeStreamCommand({ StreamArn: this.streamArn }),\n );\n\n const availableShards = StreamDescription?.Shards ?? [];\n\n const newShards = availableShards.filter(\n (shard) => shard.ShardId && !this.shards.has(shard.ShardId),\n );\n\n // TODO: is this safe to process in parallel? Probably since its unlikely a large number\n // of shards would show up out of nowhere, but consider batching...\n await Promise.all(\n newShards.map(async (shard) => {\n // TODO: handle TrimmedDataAccessException which can happen if a sequence\n // number outside the 24hr sliding window is specified or the shard iterator\n // goes unused for 24 hrs (shouldn't be possible with this library)\n const { ShardIterator } = await this.client.send(\n new GetShardIteratorCommand({\n StreamArn: this.streamArn,\n ShardIteratorType: iteratorType ?? \"LATEST\",\n ShardId: shard.ShardId,\n SequenceNumber: sequenceNumber,\n }),\n );\n\n this.shards.set(shard.ShardId!, { shard, iterator: ShardIterator });\n }),\n );\n\n // clear out any shards that are no longer returned\n for (const shardId in this.shards.keys()) {\n const availableShard = availableShards.find((shard) => shard.ShardId === shardId);\n if (!availableShard) {\n this.shards.delete(shardId);\n }\n }\n }\n\n protected async getShardRecords(shardId: string): Promise<_Record[]> {\n const shard = this.shards.get(shardId);\n if (!shard?.iterator) return [];\n\n const data = await this.client\n .send(\n new GetRecordsCommand({\n ShardIterator: shard.iterator,\n }),\n )\n .catch((e) => {\n // we need to handle this case gracefully because of a quirk with dynamodb-local shard creation\n if (e instanceof ResourceNotFoundException || e instanceof TrimmedDataAccessException) {\n return { Records: [], NextShardIterator: undefined };\n }\n\n throw e;\n });\n\n shard.iterator = data.NextShardIterator;\n\n return data.Records ?? [];\n }\n\n protected async processStream(): Promise<void> {\n await this.syncShards(\"TRIM_HORIZON\");\n\n // topologically sort shard ids (parents come before children)\n // TODO: this could be optimized, but probably isn't worth it\n const sortedShardIds: string[] = [];\n while (sortedShardIds.length !== this.shards.size) {\n let shardAdded = false;\n this.shards.forEach(({ shard }, shardId) => {\n if (sortedShardIds.includes(shardId)) return;\n if (shard.ParentShardId && !sortedShardIds.includes(shard.ParentShardId)) return;\n\n sortedShardIds.push(shardId);\n shardAdded = true;\n });\n\n // this check is just to avoid an infinite loop and should\n // never happen if the API behaves as documented\n if (!shardAdded) {\n console.warn(\"Failed to topologically sort shards.\");\n break;\n }\n }\n\n // TODO: we could potentitally fetch shard records in parallel\n let recordCount = 0;\n for (const shardId of sortedShardIds) {\n const records = await this.getShardRecords(shardId);\n recordCount += records.length;\n }\n\n console.log(`Found ${recordCount} records across ${sortedShardIds.length} shards.`);\n }\n\n startPolling(): void {\n clearTimeout(this.pollTimer);\n this.pollTimer = setTimeout(() => {\n this.processStream().then(() => {\n if (this.pollTimer) this.startPolling();\n });\n }, 5000);\n }\n\n stopPolling(): void {\n clearTimeout(this.pollTimer);\n this.pollTimer = undefined;\n }\n}\n"],"mappings":";;AAYA,IAAa,gBAAb,MAA2B;CACzB;CACA;CAEA;CAGA,yBAAmB,IAAI,KAAkD;CAEzE,YAAY,QAAyB,WAAmB;AACtD,OAAK,SAAS;AACd,OAAK,YAAY;;CAGnB,MAAgB,WACd,cACA,gBACe;EAIf,MAAM,EAAE,sBAAsB,MAAM,KAAK,OAAO,KAC9C,IAAI,sBAAsB,EAAE,WAAW,KAAK,WAAW,CAAC,CACzD;EAED,MAAM,kBAAkB,mBAAmB,UAAU,EAAE;EAEvD,MAAM,YAAY,gBAAgB,QAC/B,UAAU,MAAM,WAAW,CAAC,KAAK,OAAO,IAAI,MAAM,QAAQ,CAC5D;AAID,QAAM,QAAQ,IACZ,UAAU,IAAI,OAAO,UAAU;GAI7B,MAAM,EAAE,kBAAkB,MAAM,KAAK,OAAO,KAC1C,IAAI,wBAAwB;IAC1B,WAAW,KAAK;IAChB,mBAAmB,gBAAgB;IACnC,SAAS,MAAM;IACf,gBAAgB;IACjB,CAAC,CACH;AAED,QAAK,OAAO,IAAI,MAAM,SAAU;IAAE;IAAO,UAAU;IAAe,CAAC;IACnE,CACH;AAGD,OAAK,MAAM,WAAW,KAAK,OAAO,MAAM,CAEtC,KAAI,CADmB,gBAAgB,MAAM,UAAU,MAAM,YAAY,QAAQ,CAE/E,MAAK,OAAO,OAAO,QAAQ;;CAKjC,MAAgB,gBAAgB,SAAqC;EACnE,MAAM,QAAQ,KAAK,OAAO,IAAI,QAAQ;AACtC,MAAI,CAAC,OAAO,SAAU,QAAO,EAAE;EAE/B,MAAM,OAAO,MAAM,KAAK,OACrB,KACC,IAAI,kBAAkB,EACpB,eAAe,MAAM,UACtB,CAAC,CACH,CACA,OAAO,MAAM;AAEZ,OAAI,aAAa,6BAA6B,aAAa,2BACzD,QAAO;IAAE,SAAS,EAAE;IAAE,mBAAmB,KAAA;IAAW;AAGtD,SAAM;IACN;AAEJ,QAAM,WAAW,KAAK;AAEtB,SAAO,KAAK,WAAW,EAAE;;CAG3B,MAAgB,gBAA+B;AAC7C,QAAM,KAAK,WAAW,eAAe;EAIrC,MAAM,iBAA2B,EAAE;AACnC,SAAO,eAAe,WAAW,KAAK,OAAO,MAAM;GACjD,IAAI,aAAa;AACjB,QAAK,OAAO,SAAS,EAAE,SAAS,YAAY;AAC1C,QAAI,eAAe,SAAS,QAAQ,CAAE;AACtC,QAAI,MAAM,iBAAiB,CAAC,eAAe,SAAS,MAAM,cAAc,CAAE;AAE1E,mBAAe,KAAK,QAAQ;AAC5B,iBAAa;KACb;AAIF,OAAI,CAAC,YAAY;AACf,YAAQ,KAAK,uCAAuC;AACpD;;;EAKJ,IAAI,cAAc;AAClB,OAAK,MAAM,WAAW,gBAAgB;GACpC,MAAM,UAAU,MAAM,KAAK,gBAAgB,QAAQ;AACnD,kBAAe,QAAQ;;AAGzB,UAAQ,IAAI,SAAS,YAAY,kBAAkB,eAAe,OAAO,UAAU;;CAGrF,eAAqB;AACnB,eAAa,KAAK,UAAU;AAC5B,OAAK,YAAY,iBAAiB;AAChC,QAAK,eAAe,CAAC,WAAW;AAC9B,QAAI,KAAK,UAAW,MAAK,cAAc;KACvC;KACD,IAAK;;CAGV,cAAoB;AAClB,eAAa,KAAK,UAAU;AAC5B,OAAK,YAAY,KAAA"}
1
+ {"version":3,"file":"streams.mjs","names":[],"sources":["../src/streams.ts"],"sourcesContent":["import {\n type _Record,\n DescribeStreamCommand,\n type DynamoDBStreams,\n GetRecordsCommand,\n GetShardIteratorCommand,\n ResourceNotFoundException,\n type Shard,\n type ShardIteratorType,\n TrimmedDataAccessException,\n} from \"@aws-sdk/client-dynamodb-streams\";\n\nexport class EventStreamer {\n readonly client: DynamoDBStreams;\n readonly streamArn: string;\n\n private pollTimer: NodeJS.Timeout | undefined;\n\n // a map of shard ids to shards\n protected shards = new Map<string, { shard: Shard; iterator?: string }>();\n\n constructor(client: DynamoDBStreams, streamArn: string) {\n this.client = client;\n this.streamArn = streamArn;\n }\n\n protected async syncShards(\n iteratorType?: ShardIteratorType,\n sequenceNumber?: string,\n ): Promise<void> {\n // TODO: technically this will only return a maximum of 100 shards, pagination is required otherwise\n // DescribeStream can only be called 10 times per second\n // Closed streams can be returned, and will contain a EndingSequenceNumber\n const { StreamDescription } = await this.client.send(\n new DescribeStreamCommand({ StreamArn: this.streamArn }),\n );\n\n const availableShards = StreamDescription?.Shards ?? [];\n\n const newShards = availableShards.filter(\n (shard) => shard.ShardId && !this.shards.has(shard.ShardId),\n );\n\n // TODO: is this safe to process in parallel? Probably since its unlikely a large number\n // of shards would show up out of nowhere, but consider batching...\n await Promise.all(\n newShards.map(async (shard) => {\n // TODO: handle TrimmedDataAccessException which can happen if a sequence\n // number outside the 24hr sliding window is specified or the shard iterator\n // goes unused for 24 hrs (shouldn't be possible with this library)\n const { ShardIterator } = await this.client.send(\n new GetShardIteratorCommand({\n StreamArn: this.streamArn,\n ShardIteratorType: iteratorType ?? \"LATEST\",\n ShardId: shard.ShardId,\n SequenceNumber: sequenceNumber,\n }),\n );\n\n this.shards.set(shard.ShardId!, { shard, iterator: ShardIterator });\n }),\n );\n\n // clear out any shards that are no longer returned\n for (const shardId in this.shards.keys()) {\n const availableShard = availableShards.find((shard) => shard.ShardId === shardId);\n if (!availableShard) {\n this.shards.delete(shardId);\n }\n }\n }\n\n protected async getShardRecords(shardId: string): Promise<_Record[]> {\n const shard = this.shards.get(shardId);\n if (!shard?.iterator) return [];\n\n const data = await this.client\n .send(\n new GetRecordsCommand({\n ShardIterator: shard.iterator,\n }),\n )\n .catch((e) => {\n // we need to handle this case gracefully because of a quirk with dynamodb-local shard creation\n if (e instanceof ResourceNotFoundException || e instanceof TrimmedDataAccessException) {\n return { Records: [], NextShardIterator: undefined };\n }\n\n throw e;\n });\n\n shard.iterator = data.NextShardIterator;\n\n return data.Records ?? [];\n }\n\n protected async processStream(): Promise<void> {\n await this.syncShards(\"TRIM_HORIZON\");\n\n // topologically sort shard ids (parents come before children)\n // TODO: this could be optimized, but probably isn't worth it\n const sortedShardIds: string[] = [];\n while (sortedShardIds.length !== this.shards.size) {\n let shardAdded = false;\n this.shards.forEach(({ shard }, shardId) => {\n if (sortedShardIds.includes(shardId)) return;\n if (shard.ParentShardId && !sortedShardIds.includes(shard.ParentShardId)) return;\n\n sortedShardIds.push(shardId);\n shardAdded = true;\n });\n\n // this check is just to avoid an infinite loop and should\n // never happen if the API behaves as documented\n if (!shardAdded) {\n console.warn(\"Failed to topologically sort shards.\");\n break;\n }\n }\n\n // TODO: we could potentitally fetch shard records in parallel\n let recordCount = 0;\n for (const shardId of sortedShardIds) {\n const records = await this.getShardRecords(shardId);\n recordCount += records.length;\n }\n\n console.log(`Found ${recordCount} records across ${sortedShardIds.length} shards.`);\n }\n\n startPolling(): void {\n clearTimeout(this.pollTimer);\n this.pollTimer = setTimeout(() => {\n this.processStream().then(() => {\n if (this.pollTimer) this.startPolling();\n });\n }, 5000);\n }\n\n stopPolling(): void {\n clearTimeout(this.pollTimer);\n this.pollTimer = undefined;\n }\n}\n"],"mappings":";;AAYA,IAAa,gBAAb,MAA2B;CACzB;CACA;CAEA;CAGA,yBAAmB,IAAI,IAAiD;CAExE,YAAY,QAAyB,WAAmB;EACtD,KAAK,SAAS;EACd,KAAK,YAAY;CACnB;CAEA,MAAgB,WACd,cACA,gBACe;EAIf,MAAM,EAAE,sBAAsB,MAAM,KAAK,OAAO,KAC9C,IAAI,sBAAsB,EAAE,WAAW,KAAK,UAAU,CAAC,CACzD;EAEA,MAAM,kBAAkB,mBAAmB,UAAU,CAAC;EAEtD,MAAM,YAAY,gBAAgB,QAC/B,UAAU,MAAM,WAAW,CAAC,KAAK,OAAO,IAAI,MAAM,OAAO,CAC5D;EAIA,MAAM,QAAQ,IACZ,UAAU,IAAI,OAAO,UAAU;GAI7B,MAAM,EAAE,kBAAkB,MAAM,KAAK,OAAO,KAC1C,IAAI,wBAAwB;IAC1B,WAAW,KAAK;IAChB,mBAAmB,gBAAgB;IACnC,SAAS,MAAM;IACf,gBAAgB;GAClB,CAAC,CACH;GAEA,KAAK,OAAO,IAAI,MAAM,SAAU;IAAE;IAAO,UAAU;GAAc,CAAC;EACpE,CAAC,CACH;EAGA,KAAK,MAAM,WAAW,KAAK,OAAO,KAAK,GAErC,IAAI,CADmB,gBAAgB,MAAM,UAAU,MAAM,YAAY,OACvD,GAChB,KAAK,OAAO,OAAO,OAAO;CAGhC;CAEA,MAAgB,gBAAgB,SAAqC;EACnE,MAAM,QAAQ,KAAK,OAAO,IAAI,OAAO;EACrC,IAAI,CAAC,OAAO,UAAU,OAAO,CAAC;EAE9B,MAAM,OAAO,MAAM,KAAK,OACrB,KACC,IAAI,kBAAkB,EACpB,eAAe,MAAM,SACvB,CAAC,CACH,CAAC,CACA,OAAO,MAAM;GAEZ,IAAI,aAAa,6BAA6B,aAAa,4BACzD,OAAO;IAAE,SAAS,CAAC;IAAG,mBAAmB,KAAA;GAAU;GAGrD,MAAM;EACR,CAAC;EAEH,MAAM,WAAW,KAAK;EAEtB,OAAO,KAAK,WAAW,CAAC;CAC1B;CAEA,MAAgB,gBAA+B;EAC7C,MAAM,KAAK,WAAW,cAAc;EAIpC,MAAM,iBAA2B,CAAC;EAClC,OAAO,eAAe,WAAW,KAAK,OAAO,MAAM;GACjD,IAAI,aAAa;GACjB,KAAK,OAAO,SAAS,EAAE,SAAS,YAAY;IAC1C,IAAI,eAAe,SAAS,OAAO,GAAG;IACtC,IAAI,MAAM,iBAAiB,CAAC,eAAe,SAAS,MAAM,aAAa,GAAG;IAE1E,eAAe,KAAK,OAAO;IAC3B,aAAa;GACf,CAAC;GAID,IAAI,CAAC,YAAY;IACf,QAAQ,KAAK,sCAAsC;IACnD;GACF;EACF;EAGA,IAAI,cAAc;EAClB,KAAK,MAAM,WAAW,gBAAgB;GACpC,MAAM,UAAU,MAAM,KAAK,gBAAgB,OAAO;GAClD,eAAe,QAAQ;EACzB;EAEA,QAAQ,IAAI,SAAS,YAAY,kBAAkB,eAAe,OAAO,SAAS;CACpF;CAEA,eAAqB;EACnB,aAAa,KAAK,SAAS;EAC3B,KAAK,YAAY,iBAAiB;GAChC,KAAK,cAAc,CAAC,CAAC,WAAW;IAC9B,IAAI,KAAK,WAAW,KAAK,aAAa;GACxC,CAAC;EACH,GAAG,GAAI;CACT;CAEA,cAAoB;EAClB,aAAa,KAAK,SAAS;EAC3B,KAAK,YAAY,KAAA;CACnB;AACF"}
@@ -167,4 +167,4 @@ declare class Table<Schema extends TSchema = TSchema, const Def extends TableDef
167
167
  }
168
168
  //#endregion
169
169
  export { TableKey as C, ValidPrimaryKeys as D, ValidGsiKeys as E, ValidTtlKeys as O, TableGsi as S, UpdateExpression as T, ResolvedAttrType as _, DistPartialSome as a, TableDef as b, ExtractTableDef as c, Gsi as d, KeyCondition as f, PickTypeOf as g, PathRef as h, DistOmit as i, ValueOfUnion as k, ExtractTableSchema as l, PartialSome as m, AllKeys as n, ExtractKey as o, Obj as p, Condition as r, ExtractKeys as s, Table as t, Func as u, SortKeyOps as v, ToUnion as w, TableDesc as x, SortKeyQuery as y };
170
- //# sourceMappingURL=table-GSI2RvTa.d.cts.map
170
+ //# sourceMappingURL=table-CcZ5Kv5z.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-CcZ5Kv5z.d.cts","names":[],"sources":["../src/types.ts","../src/table.ts"],"mappings":"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"}
@@ -167,4 +167,4 @@ declare class Table<Schema extends TSchema = TSchema, const Def extends TableDef
167
167
  }
168
168
  //#endregion
169
169
  export { TableKey as C, ValidPrimaryKeys as D, ValidGsiKeys as E, ValidTtlKeys as O, TableGsi as S, UpdateExpression as T, ResolvedAttrType as _, DistPartialSome as a, TableDef as b, ExtractTableDef as c, Gsi as d, KeyCondition as f, PickTypeOf as g, PathRef as h, DistOmit as i, ValueOfUnion as k, ExtractTableSchema as l, PartialSome as m, AllKeys as n, ExtractKey as o, Obj as p, Condition as r, ExtractKeys as s, Table as t, Func as u, SortKeyOps as v, ToUnion as w, TableDesc as x, SortKeyQuery as y };
170
- //# sourceMappingURL=table-O4EneQbj.d.mts.map
170
+ //# sourceMappingURL=table-CcZ5Kv5z.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-CcZ5Kv5z.d.mts","names":[],"sources":["../src/types.ts","../src/table.ts"],"mappings":"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"}
@@ -132,4 +132,4 @@ Object.defineProperty(exports, "resolveAttrType", {
132
132
  }
133
133
  });
134
134
 
135
- //# sourceMappingURL=util-DT6vwquI.cjs.map
135
+ //# sourceMappingURL=util-CYPpI7J0.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"util-DT6vwquI.cjs","names":["T"],"sources":["../src/util.ts"],"sourcesContent":["import type {\n AttributeDefinition,\n CreateTableCommandInput,\n ProjectionType,\n} from \"@aws-sdk/client-dynamodb\";\nimport * as T from \"typebox\";\nimport type { Obj } from \"./types\";\nimport type { Table } from \"./table\";\n\nexport const resolveAttrType = (schema: T.TSchema | T.TEnumValue, attrName: string): \"S\" | \"N\" => {\n if (T.IsString(schema) || T.IsLiteralString(schema) || typeof schema === \"string\") {\n return \"S\";\n }\n\n if (\n T.IsNumber(schema) ||\n T.IsLiteralNumber(schema) ||\n T.IsInteger(schema) ||\n typeof schema === \"number\"\n ) {\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.IsEnum(schema) || T.IsIntersect(schema) || T.IsUnion(schema)) {\n const schemas = T.IsEnum(schema)\n ? schema.enum\n : T.IsUnion(schema)\n ? schema.anyOf\n : 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 matchesPartial = <T extends object>(partial: Partial<T>, item: T): boolean =>\n (Object.entries(partial) as [keyof T, unknown][]).every(([k, v]) => item[k] === v);\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":"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"}
1
+ {"version":3,"file":"util-CYPpI7J0.cjs","names":["T"],"sources":["../src/util.ts"],"sourcesContent":["import type {\n AttributeDefinition,\n CreateTableCommandInput,\n ProjectionType,\n} from \"@aws-sdk/client-dynamodb\";\nimport * as T from \"typebox\";\nimport type { Obj } from \"./types\";\nimport type { Table } from \"./table\";\n\nexport const resolveAttrType = (schema: T.TSchema | T.TEnumValue, attrName: string): \"S\" | \"N\" => {\n if (T.IsString(schema) || T.IsLiteralString(schema) || typeof schema === \"string\") {\n return \"S\";\n }\n\n if (\n T.IsNumber(schema) ||\n T.IsLiteralNumber(schema) ||\n T.IsInteger(schema) ||\n typeof schema === \"number\"\n ) {\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.IsEnum(schema) || T.IsIntersect(schema) || T.IsUnion(schema)) {\n const schemas = T.IsEnum(schema)\n ? schema.enum\n : T.IsUnion(schema)\n ? schema.anyOf\n : 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 matchesPartial = <T extends object>(partial: Partial<T>, item: T): boolean =>\n (Object.entries(partial) as [keyof T, unknown][]).every(([k, v]) => item[k] === v);\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":"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"}
@@ -74,4 +74,4 @@ const removeUndefined = (obj) => {
74
74
  //#endregion
75
75
  export { resolveAttrType as a, removeUndefined as i, extractTableDesc as n, matchesPartial as r, chunk as t };
76
76
 
77
- //# sourceMappingURL=util-0kc6E2VD.mjs.map
77
+ //# sourceMappingURL=util-q3_Y61hN.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"util-0kc6E2VD.mjs","names":[],"sources":["../src/util.ts"],"sourcesContent":["import type {\n AttributeDefinition,\n CreateTableCommandInput,\n ProjectionType,\n} from \"@aws-sdk/client-dynamodb\";\nimport * as T from \"typebox\";\nimport type { Obj } from \"./types\";\nimport type { Table } from \"./table\";\n\nexport const resolveAttrType = (schema: T.TSchema | T.TEnumValue, attrName: string): \"S\" | \"N\" => {\n if (T.IsString(schema) || T.IsLiteralString(schema) || typeof schema === \"string\") {\n return \"S\";\n }\n\n if (\n T.IsNumber(schema) ||\n T.IsLiteralNumber(schema) ||\n T.IsInteger(schema) ||\n typeof schema === \"number\"\n ) {\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.IsEnum(schema) || T.IsIntersect(schema) || T.IsUnion(schema)) {\n const schemas = T.IsEnum(schema)\n ? schema.enum\n : T.IsUnion(schema)\n ? schema.anyOf\n : 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 matchesPartial = <T extends object>(partial: Partial<T>, item: T): boolean =>\n (Object.entries(partial) as [keyof T, unknown][]).every(([k, v]) => item[k] === v);\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":"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"}
1
+ {"version":3,"file":"util-q3_Y61hN.mjs","names":[],"sources":["../src/util.ts"],"sourcesContent":["import type {\n AttributeDefinition,\n CreateTableCommandInput,\n ProjectionType,\n} from \"@aws-sdk/client-dynamodb\";\nimport * as T from \"typebox\";\nimport type { Obj } from \"./types\";\nimport type { Table } from \"./table\";\n\nexport const resolveAttrType = (schema: T.TSchema | T.TEnumValue, attrName: string): \"S\" | \"N\" => {\n if (T.IsString(schema) || T.IsLiteralString(schema) || typeof schema === \"string\") {\n return \"S\";\n }\n\n if (\n T.IsNumber(schema) ||\n T.IsLiteralNumber(schema) ||\n T.IsInteger(schema) ||\n typeof schema === \"number\"\n ) {\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.IsEnum(schema) || T.IsIntersect(schema) || T.IsUnion(schema)) {\n const schemas = T.IsEnum(schema)\n ? schema.enum\n : T.IsUnion(schema)\n ? schema.anyOf\n : 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 matchesPartial = <T extends object>(partial: Partial<T>, item: T): boolean =>\n (Object.entries(partial) as [keyof T, unknown][]).every(([k, v]) => item[k] === v);\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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dinah",
3
- "version": "0.15.0",
3
+ "version": "0.15.2",
4
4
  "description": "A dynamodb client designed for typescript",
5
5
  "homepage": "https://github.com/jayalfredprufrock/dinah#readme",
6
6
  "bugs": {
@@ -47,8 +47,8 @@
47
47
  "@typescript/native-preview": "7.0.0-dev.20260328.1",
48
48
  "aws-cdk-lib": "^2.250.0",
49
49
  "semantic-release": "^25.0.3",
50
- "typebox": "^1.1.32",
51
- "vite-plus": "^0.1.19"
50
+ "typebox": "^1.3.2",
51
+ "vite-plus": "0.2.1"
52
52
  },
53
53
  "peerDependencies": {
54
54
  "@aws-sdk/client-dynamodb": "^3.1027.0",
@@ -1 +0,0 @@
1
- {"version":3,"file":"table-GSI2RvTa.d.cts","names":[],"sources":["../src/types.ts","../src/table.ts"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"table-O4EneQbj.d.mts","names":[],"sources":["../src/types.ts","../src/table.ts"],"mappings":"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"}