@aurios/mizzle 1.1.1 → 1.1.3

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.
Files changed (116) hide show
  1. package/.turbo/turbo-build.log +37 -0
  2. package/LICENSE +21 -0
  3. package/README.md +57 -0
  4. package/dist/chunk-AQVECMXP.js +1 -0
  5. package/dist/chunk-DU7UPWBW.js +1 -0
  6. package/dist/chunk-GPYZK4WY.js +1 -0
  7. package/dist/chunk-NPPZW6VT.js +1 -0
  8. package/dist/chunk-TOYV2M4M.js +1 -0
  9. package/dist/chunk-UM3YF5EC.js +1 -0
  10. package/dist/columns.d.ts +1 -0
  11. package/dist/columns.js +1 -0
  12. package/dist/db-zHIHBm1E.d.ts +815 -0
  13. package/dist/db.d.ts +3 -0
  14. package/dist/db.js +1 -0
  15. package/dist/diff.d.ts +18 -0
  16. package/dist/diff.js +1 -0
  17. package/dist/index.d.ts +42 -0
  18. package/dist/index.js +1 -0
  19. package/dist/introspection.d.ts +7 -0
  20. package/dist/introspection.js +1 -0
  21. package/dist/operators-BVreW0ky.d.ts +719 -0
  22. package/dist/snapshot.d.ts +24 -0
  23. package/dist/snapshot.js +1 -0
  24. package/dist/table.d.ts +1 -0
  25. package/dist/table.js +1 -0
  26. package/dist/transaction-RE7LXTGV.js +1 -0
  27. package/package.json +73 -24
  28. package/src/builders/base.ts +53 -56
  29. package/src/builders/batch-get.ts +63 -58
  30. package/src/builders/batch-write.ts +81 -78
  31. package/src/builders/delete.ts +46 -53
  32. package/src/builders/insert.ts +158 -150
  33. package/src/builders/query-promise.ts +26 -35
  34. package/src/builders/relational-builder.ts +214 -191
  35. package/src/builders/select.ts +250 -238
  36. package/src/builders/transaction.ts +170 -151
  37. package/src/builders/update.ts +198 -191
  38. package/src/columns/binary-set.ts +29 -38
  39. package/src/columns/binary.ts +25 -35
  40. package/src/columns/boolean.ts +25 -30
  41. package/src/columns/date.ts +57 -64
  42. package/src/columns/index.ts +15 -15
  43. package/src/columns/json.ts +39 -48
  44. package/src/columns/list.ts +26 -36
  45. package/src/columns/map.ts +26 -34
  46. package/src/columns/number-set.ts +29 -38
  47. package/src/columns/number.ts +33 -40
  48. package/src/columns/string-set.ts +38 -47
  49. package/src/columns/string.ts +37 -49
  50. package/src/columns/uuid.ts +26 -33
  51. package/src/core/client.ts +9 -9
  52. package/src/core/column-builder.ts +194 -220
  53. package/src/core/column.ts +127 -135
  54. package/src/core/diff.ts +40 -34
  55. package/src/core/errors.ts +20 -17
  56. package/src/core/introspection.ts +62 -58
  57. package/src/core/operations.ts +17 -23
  58. package/src/core/parser.ts +82 -88
  59. package/src/core/relations.ts +165 -152
  60. package/src/core/retry.ts +52 -52
  61. package/src/core/snapshot.ts +131 -130
  62. package/src/core/strategies.ts +222 -214
  63. package/src/core/table.ts +189 -202
  64. package/src/core/validation.ts +52 -52
  65. package/src/db.ts +216 -213
  66. package/src/expressions/actions.ts +26 -26
  67. package/src/expressions/builder.ts +62 -54
  68. package/src/expressions/operators.ts +48 -48
  69. package/src/expressions/update-builder.ts +79 -75
  70. package/src/index.ts +2 -1
  71. package/src/indexes.ts +8 -8
  72. package/test/batch-resilience.test.ts +138 -0
  73. package/test/builders/delete.test.ts +100 -0
  74. package/test/builders/insert.test.ts +216 -0
  75. package/test/builders/relational-types.test.ts +55 -0
  76. package/test/builders/relational.integration.test.ts +291 -0
  77. package/test/builders/relational.test.ts +66 -0
  78. package/test/builders/select.test.ts +411 -0
  79. package/test/builders/transaction-errors.test.ts +46 -0
  80. package/test/builders/transaction-execution.test.ts +99 -0
  81. package/test/builders/transaction-proxy.test.ts +41 -0
  82. package/test/builders/update-expression.test.ts +106 -0
  83. package/test/builders/update.test.ts +179 -0
  84. package/test/core/diff.test.ts +152 -0
  85. package/test/core/expressions.test.ts +64 -0
  86. package/test/core/introspection.test.ts +47 -0
  87. package/test/core/parser.test.ts +69 -0
  88. package/test/core/snapshot-gen.test.ts +155 -0
  89. package/test/core/snapshot.test.ts +52 -0
  90. package/test/date-column.test.ts +159 -0
  91. package/test/fluent-writes.integration.test.ts +148 -0
  92. package/test/integration-retry.test.ts +77 -0
  93. package/test/integration.test.ts +105 -0
  94. package/test/item-size-error.test.ts +16 -0
  95. package/test/item-size-validation.test.ts +82 -0
  96. package/test/item-size.test.ts +47 -0
  97. package/test/iterator-pagination.integration.test.ts +132 -0
  98. package/test/jsdoc-builders.test.ts +55 -0
  99. package/test/jsdoc-schema.test.ts +107 -0
  100. package/test/json-column.test.ts +51 -0
  101. package/test/metadata.test.ts +54 -0
  102. package/test/mizzle-package.test.ts +20 -0
  103. package/test/relational-centralized.test.ts +83 -0
  104. package/test/relational-definition.test.ts +75 -0
  105. package/test/relational-init.test.ts +30 -0
  106. package/test/relational-proxy.test.ts +52 -0
  107. package/test/relations.test.ts +45 -0
  108. package/test/resilience-config.test.ts +34 -0
  109. package/test/retry-handler.test.ts +63 -0
  110. package/test/transaction.integration.test.ts +153 -0
  111. package/test/unified-select.integration.test.ts +153 -0
  112. package/test/unified-update.integration.test.ts +139 -0
  113. package/test/update.integration.test.ts +132 -0
  114. package/tsconfig.json +12 -9
  115. package/tsup.config.ts +11 -11
  116. package/vitest.config.ts +8 -0
package/dist/db.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import './operators-BVreW0ky.js';
2
+ export { i as DynamoDB, M as MizzleConfig, Q as QuerySchema, X as mizzle } from './db-zHIHBm1E.js';
3
+ import '@aws-sdk/client-dynamodb';
package/dist/db.js ADDED
@@ -0,0 +1 @@
1
+ import{k as a,l as b}from"./chunk-NPPZW6VT.js";import"./chunk-UM3YF5EC.js";import"./chunk-GPYZK4WY.js";import"./chunk-DU7UPWBW.js";export{a as DynamoDB,b as mizzle};
package/dist/diff.d.ts ADDED
@@ -0,0 +1,18 @@
1
+ import { TableSnapshot, SchemaCurrent, MizzleSnapshot } from './snapshot.js';
2
+ import './operators-BVreW0ky.js';
3
+ import '@aws-sdk/client-dynamodb';
4
+
5
+ type SchemaChange = {
6
+ type: "create";
7
+ table: TableSnapshot;
8
+ } | {
9
+ type: "delete";
10
+ tableName: string;
11
+ } | {
12
+ type: "update";
13
+ tableName: string;
14
+ changes: unknown[];
15
+ };
16
+ declare function compareSchema(current: SchemaCurrent, snapshot: MizzleSnapshot): SchemaChange[];
17
+
18
+ export { type SchemaChange, compareSchema };
package/dist/diff.js ADDED
@@ -0,0 +1 @@
1
+ import{a}from"./chunk-TOYV2M4M.js";import"./chunk-AQVECMXP.js";import"./chunk-GPYZK4WY.js";import"./chunk-DU7UPWBW.js";export{a as compareSchema};
@@ -0,0 +1,42 @@
1
+ import { E as Expression } from './operators-BVreW0ky.js';
2
+ export { A as AnyTable, a as Assume, b as AtomicValues, B as BinaryExpression, C as ColumnType, c as ColumnsBuilder, d as Condition, e as ENTITY_SYMBOLS, f as Entity, g as EntityConfig, h as EntityWithColumns, F as FunctionExpression, I as INFER_MODE, i as IndexBuilder, j as IndexColumnConfig, k as InferInsertModel, l as InferModelFromColumns, m as InferSelectModel, n as InferSelectedModel, K as KeyStrategy, o as KeyStrategyType, L as LogicalExpression, M as MapColumnName, N as NULLS, O as ORDER, p as Operators, P as PhysicalTable, q as PhysicalTableConfig, R as RELATION_SYMBOLS, S as Simplify, r as StrategyCallback, s as StrategyResolution, T as TABLE_SYMBOLS, t as TableDefinition, U as Update, u as UpdateTableConfig, v as and, w as attributeExists, x as beginsWith, y as between, z as binary, D as binarySet, G as boolean, H as compositeKey, J as contains, Q as date, V as dynamoEntity, W as dynamoTable, X as eq, Y as getColumnBuilders, Z as getEntityColumns, _ as gsi, $ as gt, a0 as gte, a1 as inList, a2 as json, a3 as list, a4 as lsi, a5 as lt, a6 as lte, a7 as map, a8 as mapToLogical, a9 as number, aa as numberSet, ab as operators, ac as or, ad as prefixKey, ae as resolveStrategies, af as resolveTableName, ag as staticKey, ah as string, ai as stringSet, aj as uuid } from './operators-BVreW0ky.js';
3
+ export { A as ActionType, a as AddAction, B as BatchGetBase, b as BatchGetBuilder, c as BatchGetResult, d as BatchWriteBase, e as BatchWriteBuilder, f as BatchWriteOperation, g as BatchWriteResult, C as ConditionCheckBuilder, D as DeleteAction, h as DeleteBuilder, i as DynamoDB, E as EntityMetadata, I as IncludeOptions, j as InferRelationalModel, k as InsertBase, l as InsertBuilder, m as InternalRelationalSchema, M as MizzleConfig, n as MultiRelationsCallback, o as MultiRelationsDefinition, Q as QuerySchema, R as Relation, p as RelationConfig, q as RelationType, r as RelationalQueryOptions, s as RelationnalQueryBuilder, t as RelationsCallback, u as RelationsDefinition, v as RelationsHelpers, w as RemoveAction, x as RetryConfig, y as RetryHandler, S as SelectBase, z as SelectBuilder, F as SelectedFields, G as SetAction, T as TransactionExecutor, H as TransactionProxy, U as UpdateAction, J as UpdateBuilder, K as add, L as addToSet, N as append, O as defineRelations, P as deleteFromSet, V as extractMetadata, W as ifNotExists, X as mizzle, Y as remove } from './db-zHIHBm1E.js';
4
+ export { SchemaChange, compareSchema } from './diff.js';
5
+ import '@aws-sdk/client-dynamodb';
6
+ import './snapshot.js';
7
+
8
+ /**
9
+ * Recursively builds a DynamoDB expression string from an Expression object.
10
+ *
11
+ * @param cond The expression object to build.
12
+ * @param addName A callback to add an attribute name and return its placeholder.
13
+ * @param addValue A callback to add an attribute value and return its placeholder.
14
+ * @param excludeColumns Optional set of physical column names to exclude from the expression.
15
+ * @returns A string suitable for use in ConditionExpression or FilterExpression.
16
+ */
17
+ declare function buildExpression(cond: Expression, addName: (name: string) => string, addValue: (value: unknown) => string, excludeColumns?: Set<string>): string | undefined;
18
+
19
+ /**
20
+ * Error thrown when a DynamoDB item exceeds the 400KB limit.
21
+ */
22
+ declare class ItemSizeExceededError extends Error {
23
+ constructor(message: string);
24
+ }
25
+ /**
26
+ * Detailed reason for a transaction cancellation.
27
+ */
28
+ interface CancellationReason {
29
+ index: number;
30
+ code: string;
31
+ message?: string;
32
+ item?: Record<string, unknown>;
33
+ }
34
+ /**
35
+ * Error thrown when a DynamoDB transaction is canceled.
36
+ */
37
+ declare class TransactionFailedError extends Error {
38
+ readonly reasons: CancellationReason[];
39
+ constructor(message: string, reasons: CancellationReason[]);
40
+ }
41
+
42
+ export { type CancellationReason, Expression, ItemSizeExceededError, TransactionFailedError, buildExpression };
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ import{a as Dr}from"./chunk-TOYV2M4M.js";import"./chunk-AQVECMXP.js";import{a as lr,b as kr,c as Ir,d as dr,e as hr,f as jr,g as qr,h as vr,i as zr,j as Ar,k as Er,l as Fr}from"./chunk-NPPZW6VT.js";import{A as O,B as P,C as Q,D as fr,F as xr,G as mr,H as nr,I as ir,L as sr,M as gr,N as cr,O as ur,P as Cr,Q as ar,R as br,S as wr,T as yr,a as u,b as l,c as k,d as C,e as a,f as b,g as w,h as y,i as I,j as d,k as h,l as j,m as q,n as v,o as z,p as A,q as D,r as E,s as F,t as G,u as H,v as J,w as K,x as L,y as M,z as N}from"./chunk-UM3YF5EC.js";import{a as or,b as tr,c as er,d as pr}from"./chunk-GPYZK4WY.js";import{a as p,b as f,c as x,d as m,e as n,f as i,g as s,h as g,i as c,k as R,l as S,m as T,n as U,o as V,p as W,q as X,r as Y,s as Z,t as _,u as $,v as B,w as rr}from"./chunk-DU7UPWBW.js";var o=class{constructor(t,e){this.type=t;this.config=e}};function Gr(r,t){return new o("gsi",{pk:r,sk:t})}function Hr(r){return new o("lsi",{sk:r})}export{H as AddAction,dr as BatchGetBase,Ir as BatchGetBuilder,jr as BatchWriteBase,hr as BatchWriteBuilder,l as BinaryExpression,br as ConditionCheckBuilder,K as DeleteAction,ar as DeleteBuilder,Er as DynamoDB,n as ENTITY_SYMBOLS,tr as Entity,u as Expression,C as FunctionExpression,p as INFER_MODE,o as IndexBuilder,ur as InsertBase,cr as InsertBuilder,sr as ItemSizeExceededError,k as LogicalExpression,x as NULLS,f as ORDER,or as PhysicalTable,i as RELATION_SYMBOLS,vr as Relation,qr as RelationnalQueryBuilder,J as RemoveAction,fr as RetryHandler,kr as SelectBase,lr as SelectBuilder,G as SetAction,m as TABLE_SYMBOLS,yr as TransactionExecutor,gr as TransactionFailedError,wr as TransactionProxy,F as UpdateAction,Cr as UpdateBuilder,L as add,P as addToSet,A as and,M as append,v as attributeExists,j as beginsWith,d as between,R as binary,S as binarySet,T as boolean,E as buildExpression,Dr as compareSchema,nr as compositeKey,q as contains,U as date,zr as defineRelations,Q as deleteFromSet,er as dynamoEntity,pr as dynamoTable,a as eq,Ar as extractMetadata,rr as getColumnBuilders,s as getEntityColumns,Gr as gsi,b as gt,w as gte,N as ifNotExists,h as inList,B as json,V as list,Hr as lsi,y as lt,I as lte,W as map,c as mapToLogical,Fr as mizzle,X as number,Y as numberSet,D as operators,z as or,mr as prefixKey,O as remove,ir as resolveStrategies,g as resolveTableName,xr as staticKey,Z as string,_ as stringSet,$ as uuid};
@@ -0,0 +1,7 @@
1
+ import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
2
+ import { MizzleSnapshot } from './snapshot.js';
3
+ import './operators-BVreW0ky.js';
4
+
5
+ declare function getRemoteSnapshot(client: DynamoDBClient): Promise<MizzleSnapshot>;
6
+
7
+ export { getRemoteSnapshot };
@@ -0,0 +1 @@
1
+ import{ListTablesCommand as m,DescribeTableCommand as l}from"@aws-sdk/client-dynamodb";async function p(t){let n={},e,a=[];do{let o=await t.send(new m({ExclusiveStartTableName:e}));o.TableNames&&a.push(...o.TableNames),e=o.LastEvaluatedTableName}while(e);for(let o of a)try{let r=await t.send(new l({TableName:o}));if(r.Table){let i=s(r.Table);n[o]=i}}catch(r){console.warn(`Failed to describe table ${o}:`,r)}return{version:"remote",tables:n}}function s(t){let n={TableName:t.TableName,AttributeDefinitions:t.AttributeDefinitions?.map(e=>({AttributeName:e.AttributeName,AttributeType:e.AttributeType})).sort((e,a)=>e.AttributeName.localeCompare(a.AttributeName))||[],KeySchema:t.KeySchema?.map(e=>({AttributeName:e.AttributeName,KeyType:e.KeyType}))||[]};return t.GlobalSecondaryIndexes&&t.GlobalSecondaryIndexes.length>0&&(n.GlobalSecondaryIndexes=t.GlobalSecondaryIndexes.map(e=>({IndexName:e.IndexName,KeySchema:e.KeySchema?.map(a=>({AttributeName:a.AttributeName,KeyType:a.KeyType})),Projection:e.Projection?{ProjectionType:e.Projection.ProjectionType}:void 0})).sort((e,a)=>e.IndexName.localeCompare(a.IndexName))),t.LocalSecondaryIndexes&&t.LocalSecondaryIndexes.length>0&&(n.LocalSecondaryIndexes=t.LocalSecondaryIndexes.map(e=>({IndexName:e.IndexName,KeySchema:e.KeySchema?.map(a=>({AttributeName:a.AttributeName,KeyType:a.KeyType})),Projection:e.Projection?{ProjectionType:e.Projection.ProjectionType}:void 0})).sort((e,a)=>e.IndexName.localeCompare(a.IndexName))),n}export{p as getRemoteSnapshot};