dynamo-command-builder 0.1.6 → 0.1.7
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/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var zod=require('zod');function x(e){let{sKey:t,skValue2:s,skComparator:o}=e,n="#pk = :pk";if(!t&&!s)return n;switch(b(o??"=")){case "<":n+=" AND #sk < :sk";break;case ">":n+=" AND #sk > :sk";break;case "<=":n+=" AND #sk <= :sk";break;case ">=":n+=" AND #sk >= :sk";break;case "BEGINS_WITH":if(!s)throw new Error("BEGINS_WITH operation requires skValue2.");n+=" AND begins_with(#sk, :skValue2)";break;case "BETWEEN":if(!t||!s)throw new Error("BETWEEN operation requires both sk and skValue2.");n+=" AND #sk BETWEEN :sk AND :skValue2";break;default:n+=" AND #sk = :sk";break}return n}function b(e){switch(e.toUpperCase()){case "BETWEEN":return "BETWEEN";case "BEGINS_WITH":return "BEGINS_WITH";case "GREATER_THAN":case ">":return ">";case "LESS_THAN":case "<":return "<";case "GREATER_THAN_OR_EQUAL":case ">=":return ">=";case "LESS_THAN_OR_EQUAL":case "<=":return "<=";case "EQUAL":case "=":return "=";default:throw new Error(`Invalid operation key: ${e}`)}}var l=class extends Error{constructor(t,s=400){super(t),this.name="QueryParseError",this.statusCode=s;}},D=l;var W=zod.z.enum(["S","N","B","BOOL","NULL","SS","NS","BS","M","L"]),U=zod.z.enum(["S","N","B"]),k=zod.z.enum(["=","<","<=",">",">=","BETWEEN","BEGINS_WITH"]),P=zod.z.preprocess(e=>typeof e=="string"?e.trim():e,zod.z.string().min(1)),C=zod.z.preprocess(e=>{if(!(e===""||e===null||e===void 0))return typeof e=="string"?e.trim():e},zod.z.string().optional()),V=zod.z.preprocess(e=>{if(!(e===""||e===null||e===void 0)){if(typeof e=="object")return e;if(typeof e=="string"){let t=e.trim();if(!t)return;try{return JSON.parse(t)}catch{return t}}return e}},zod.z.record(zod.z.string(),zod.z.unknown()).optional()),c=zod.z.object({pKey:P,pKeyType:U,pKeyProp:P,sKey:C,sKeyType:U.optional(),sKeyProp:C,skValue2:C,skComparator:k.optional(),indexName:C,limit:zod.z.coerce.number().int().positive().optional(),lastEvaluatedKey:V,sorting:zod.z.enum(["ASC","DESC"]).optional()}).superRefine((e,t)=>{typeof e.lastEvaluatedKey=="string"&&t.addIssue({path:["lastEvaluatedKey"],code:"custom",message:"lastEvaluatedKey must be a JSON object or a stringified JSON object"}),e.skComparator?(e.sKey||t.addIssue({path:["sKey"],code:"custom",message:"sKey is required when skComparator is present"}),e.sKeyProp||t.addIssue({path:["sKeyProp"],code:"custom",message:"sKeyProp is required when skComparator is present"}),e.sKeyType||t.addIssue({path:["sKeyType"],code:"custom",message:"sKeyType is required when skComparator is present"}),e.skComparator==="BETWEEN"?e.skValue2||t.addIssue({path:["skValue2"],code:"custom",message:"skValue2 is required when skComparator is BETWEEN"}):e.skValue2&&t.addIssue({path:["skValue2"],code:"custom",message:"skValue2/skValue2Type are only allowed when skComparator is BETWEEN"})):(e.sKey||e.sKeyProp||e.sKeyType||e.skValue2)&&t.addIssue({path:["skComparator"],code:"custom",message:"skComparator is required when providing sort key conditions"});});var O=zod.z.enum(["INDEXES","TOTAL","NONE"]),f=zod.z.enum(["SIZE","NONE"]),q=zod.z.object({tableName:zod.z.string(),key:zod.z.record(zod.z.string(),zod.z.unknown()),projectionExpression:zod.z.string().optional(),expressionAttributeNames:zod.z.record(zod.z.string(),zod.z.string()).optional(),consistentRead:zod.z.boolean().optional(),returnConsumedCapacity:O.optional()}),X=zod.z.object({tableName:zod.z.string(),queryRequest:c,keyConditionExpression:zod.z.string().optional(),filterExpression:zod.z.string().optional(),expressionAttributeNames:zod.z.record(zod.z.string(),zod.z.string()).optional(),expressionAttributeValues:zod.z.record(zod.z.string(),zod.z.unknown()).optional(),extraExpAttributeNames:zod.z.record(zod.z.string(),zod.z.string()).optional(),extraExpAttributeValues:zod.z.record(zod.z.string(),zod.z.unknown()).optional(),projectionExpression:zod.z.string().optional(),scanIndexForward:zod.z.boolean().optional(),returnConsumedCapacity:O.optional()}),_=zod.z.object({tableName:zod.z.string(),item:zod.z.record(zod.z.string(),zod.z.unknown()),conditionExpression:zod.z.string().optional(),expressionAttributeNames:zod.z.record(zod.z.string(),zod.z.string()).optional(),expressionAttributeValues:zod.z.record(zod.z.string(),zod.z.unknown()).optional(),returnValues:zod.z.enum(["NONE","ALL_OLD","UPDATED_OLD","ALL_NEW","UPDATED_NEW"]).optional(),returnConsumedCapacity:O.optional(),returnItemCollectionMetrics:f.optional()}),v=zod.z.object({tableName:zod.z.string(),key:zod.z.record(zod.z.string(),zod.z.unknown()),item:zod.z.record(zod.z.string(),zod.z.unknown()).optional(),updateExpression:zod.z.string().optional(),conditionExpression:zod.z.string().optional(),expressionAttributeNames:zod.z.record(zod.z.string(),zod.z.string()).optional(),expressionAttributeValues:zod.z.record(zod.z.string(),zod.z.unknown()).optional(),extraExpAttributeNames:zod.z.record(zod.z.string(),zod.z.string()).optional(),extraExpAttributeValues:zod.z.record(zod.z.string(),zod.z.unknown()).optional(),returnValues:zod.z.enum(["NONE","ALL_OLD","UPDATED_OLD","ALL_NEW","UPDATED_NEW"]).optional(),returnConsumedCapacity:O.optional(),returnItemCollectionMetrics:f.optional()});function oe(e,t){let s=e||{},o={...s,indexName:s.index??s.indexName},n=o.indexName,i=typeof o.pKey=="string"&&o.pKey.trim().length>0;return n?n===t.indexName?A(i?{...o,indexName:t.indexName}:{indexName:t.indexName,pKey:o.pKey||t.pKey,pKeyType:o.pKeyType||t.pKeyType,pKeyProp:o.pKeyProp||t.pKeyProp,limit:Number(o.limit||t.limit||"10"),sKey:o.sKey||t.sKey,sKeyType:o.sKeyType||t.sKeyType,sKeyProp:o.sKeyProp||t.sKeyProp,skValue2:o.skValue2||t.skValue2,skComparator:o.skComparator||t.skComparator,lastEvaluatedKey:o.lastEvaluatedKey||t.lastEvaluatedKey,sorting:o.sorting||t.sorting}):A(o):A(i?o:{...t,...o})}function A(e){let t=c.safeParse(e);if(!t.success){let s=t.error.issues.map(o=>`${o.path}: ${o.message}`).join(", ");throw new D(`Bad request! ${s}`,400)}return t.data}function d(e,t){switch(t){case "S":return e;case "N":return Number(e);case "BOOL":return e.toLowerCase()==="true";case "NULL":return null;case "M":try{return JSON.parse(e)}catch{throw new Error("Invalid JSON format for partitionKeyType M (Map)")}case "L":try{return JSON.parse(e)}catch{throw new Error("Invalid JSON format for partitionKeyType L (List)")}case "SS":return e.split(",").map(s=>s.trim());case "NS":return e.split(",").map(s=>Number(s.trim())).filter(s=>!isNaN(s));case "BS":return e.split(",").map(s=>Buffer.from(s.trim(),"base64"));default:throw new Error(`Unsupported partitionKeyType: ${t}`)}}function I(e){let t={};for(let s of e.split(",")){let o=s.trim();o.startsWith("#")&&(t[o]=o.slice(1));}return t}function g(e){let t={},s=e.replace(/^\s*SET\s+/i,"").trim();if(!s)return t;let o=s.split(",");for(let n of o){let i=n.split("=")[0]?.trim();!i||!i.startsWith("#")||(t[i]=i.slice(1));}return t}var K=new Set(["ABORT","ABSOLUTE","ACTION","ADD","AFTER","AGENT","AGGREGATE","ALL","ALLOCATE","ALTER","ANALYZE","AND","ANY","ARCHIVE","ARE","ARRAY","AS","ASC","ASCII","ASENSITIVE","ASSERTION","ASYMMETRIC","AT","ATOMIC","ATTACH","ATTRIBUTE","AUTH","AUTHORIZATION","AUTHORIZE","AUTO","AVG","BACK","BACKUP","BASE","BATCH","BEFORE","BEGIN","BETWEEN","BIGINT","BINARY","BIT","BLOB","BLOCK","BOOLEAN","BOTH","BREADTH","BUCKET","BULK","BY","BYTE","CALL","CALLED","CALLING","CAPACITY","CASCADE","CASCADED","CASE","CAST","CATALOG","CHAR","CHARACTER","CHECK","CLASS","CLOB","CLOSE","CLUSTER","CLUSTERED","CLUSTERING","CLUSTERS","COALESCE","COLLATE","COLLATION","COLLECTION","COLUMN","COLUMNS","COMBINE","COMMENT","COMMIT","COMPACT","COMPILE","COMPRESS","CONDITION","CONFLICT","CONNECT","CONNECTION","CONSISTENCY","CONSISTENT","CONSTRAINT","CONSTRUCTOR","CONSUMED","CONTINUE","CONVERT","COPY","CORRESPONDING","COUNT","COUNTER","CREATE","CROSS","CSV","CUBE","CURRENT","CURSOR","CYCLE","DATA","DATABASE","DATE","DATETIME","DAY","DEALLOCATE","DEC","DECIMAL","DECLARE","DEFAULT","DEFERRABLE","DEFERRED","DEFINE","DEFINED","DEFINITION","DELETE","DELIMITED","DEPTH","DEREF","DESC","DESCRIBE","DESCRIPTOR","DETACH","DETERMINISTIC","DIAGNOSTICS","DIRECTORIES","DISABLE","DISCONNECT","DISTINCT","DISTRIBUTE","DO","DOMAIN","DOUBLE","DROP","DUMP","DURATION","DYNAMIC","EACH","ELEMENT","ELSE","ELSEIF","EMPTY","ENABLE","END","EQUAL","EQUALS","ERROR","ESCAPE","ESCAPED","EVAL","EVALUATE","EXCEEDED","EXCEPT","EXCEPTIONS","EXCLUSIVE","EXEC","EXECUTE","EXISTS","EXIT","EXPLAIN","EXPLODE","EXPORT","EXPRESSION","EXTENDED","EXTERNAL","EXTRACT","FAIL","FALSE","FAMILY","FETCH","FIELDS","FILE","FILTER","FILTERING","FINAL","FINISH","FIRST","FIXED","FLATTERN","FLOAT","FOR","FORCE","FOREIGN","FORMAT","FORWARD","FOUND","FREE","FROM","FULL","FUNCTION","FUNCTIONS","GENERAL","GENERATE","GET","GLOB","GLOBAL","GO","GOTO","GRANT","GROUP","GROUPING","HANDLER","HASH","HAVE","HAVING","HEAP","HIDDEN","HOLD","HOUR","IDENTIFIED","IDENTITY","IF","IGNORE","IMMEDIATE","IMPORT","IN","INCLUDING","INCLUSIVE","INCREMENT","INDEX","INDEXED","INDEXES","INET","INF","INFINITE","INITIALLY","INLINE","INNER","INNTER","INPUT","INSENSITIVE","INSERT","INSTEAD","INT","INTEGER","INTERSECT","INTERVAL","INTO","INVALIDATE","IS","ISOLATION","ITEM","ITEMS","ITERATE","JOIN","KEY","KEYS","LAG","LANGUAGE","LARGE","LAST","LATERAL","LEAD","LEADING","LEAVE","LEFT","LEVEL","LIKE","LIMIT","LIMITED","LINES","LIST","LOAD","LOCAL","LOCALTIME","LOCALTIMESTAMP","LOCATION","LOCATOR","LOCK","LOCKS","LOG","LOGED","LONG","LOOP","LOW","MAP","MATCH","MATERIALIZED","MAX","MAXLEN","MEMBER","MERGE","METHOD","MIN","MINUS","MINUTE","MISSING","MOD","MODE","MODIFIES","MODIFY","MODULE","MONTH","MULTI","MULTISET","NAME","NAMES","NATIONAL","NATURAL","NCHAR","NCLOB","NEW","NEXT","NO","NONE","NOT","NULL","NULLIF","NUMBER","NUMERIC","OBJECT","OF","OFFLINE","OFFSET","OLD","ON","ONLINE","ONLY","OPAQUE","OPEN","OPERATOR","OPTION","OR","ORDER","ORDINALITY","OUT","OUTER","OUTPUT","OVER","OVERLAPS","OVERRIDE","PARTITION","PARTITIONED","PARTITIONS","PATH","PERCENT","PERCENTILE","PERMISSION","PERMISSIONS","PIPE","PIPELINED","PLAN","POOL","POSITION","PRECISION","PREPARE","PRESERVE","PRIMARY","PRIOR","PRIVATE","PRIVILEGES","PROCEDURE","PROCESSED","PROJECT","PROJECTION","PROPERTY","PROVISIONING","PUBLIC","PUT","QUERY","QUIT","QUORUM","RAISE","RANGE","RANK","RAW","READ","READS","REAL","REBUILD","RECORD","RECURSIVE","REDUCE","REF","REFERENCE","REFERENCES","REFERENCING","REGEXP","REGION","REINDEX","RELATIVE","RELEASE","REMA","REMAINDER","RENAME","REPEAT","REPLACE","REQUEST","RESET","RESIGNAL","RESOURCE","RESPONSE","RESTORE","RESTRICT","RESULT","RETURN","RETURNING","REVEAL","REVERSE","REVOKE","RIGHT","ROLE","ROLES","ROLLBACK","ROLLUP","ROUTINE","ROW","ROWS","RULE","RULES","SAMPLE","SATISFIES","SAVE","SAVEPOINT","SCAN","SCHEMA","SCOPE","SCROLL","SEARCH","SECOND","SECTION","SEGMENT","SEGMENTS","SELECT","SELF","SEMI","SENSITIVE","SEPARATE","SEQUENCE","SERIALIZABLE","SESSION","SET","SETS","SHARD","SHARE","SHARED","SHORT","SHOW","SIGNAL","SIMILAR","SIZE","SKEWED","SMALLINT","SNAPSHOT","SOME","SOURCE","SPACE","SPLIT","SQL","SQLCODE","SQLERROR","SQLEXCEPTION","SQLSTATE","SQLWARNING","START","STATE","STATIC","STATUS","STORAGE","STORE","STORED","STREAM","STRING","STRUCT","STYLE","SUB","SUBMULTISET","SUBPARTITION","SUBSTRING","SUBTYPE","SUM","SUPER","SYMMETRIC","SYNONYM","SYSTEM","TABLE","TABLESAMPLE","TEMP","TEMPORARY","TERMINATED","TEXT","THAN","THEN","THROUGHPUT","TIME","TIMESTAMP","TIMEZONE","TINYINT","TO","TOKEN","TOTAL","TOUCH","TRAILING","TRAN","TRANSACTION","TRANSFORM","TRANSLATE","TRANSLATION","TREAT","TRIGGER","TRIM","TRUE","TRUNCATE","TTL","TUPLE","TYPE","UNDER","UNDO","UNION","UNIQUE","UNIT","UNKNOWN","UNLOGGED","UNNEST","UNPROCESSED","UNSIGNED","UNTIL","UPDATE","UPPER","URL","USAGE","USE","USING","UUID","VACUUM","VALUE","VALUED","VALUES","VARCHAR","VARIABLE","VARIANCE","VARINT","VARYING","VIEW","VIEWS","VIRTUAL","VOID","WAIT","WHEN","WHENEVER","WHERE","WHILE","WINDOW","WITH","WITHIN","WITHOUT","WORK","WRAPPED","WRITE","YEAR","ZONE"]),G=new RegExp(`\\b(?:${[...K].join("|")})\\b(?=\\s*=)`,"gi");function M(e){return e.replace(G,t=>`#${t}`)}function L(e){return e.split(",").map(t=>{let s=t.trim();return s&&(K.has(s.toUpperCase())?`#${s}`:s)}).join(", ")}function Se(e){let{tableName:t,key:s,projectionExpression:o,expressionAttributeNames:n,consistentRead:i,returnConsumedCapacity:u}=e,m=o?L(o):void 0,T={TableName:t,Key:s,ProjectionExpression:m,ConsistentRead:i,ReturnConsumedCapacity:u},p={...m?I(m):{},...n??{}};return Object.keys(p).length>0&&(T.ExpressionAttributeNames=p),T}function Oe(e){let{tableName:t,item:s,conditionExpression:o,expressionAttributeNames:n,expressionAttributeValues:i,returnValues:u="NONE",returnConsumedCapacity:m,returnItemCollectionMetrics:T}=e,p={TableName:t,Item:s,ConditionExpression:o,ReturnValues:u,ReturnConsumedCapacity:m,ReturnItemCollectionMetrics:T},E=!!o,R=!!n&&Object.keys(n).length>0;if(E||R){let N=E?I(o):{},S=R?{...N,...n}:N;Object.keys(S).length>0&&(p.ExpressionAttributeNames=S);}return i&&Object.keys(i).length>0&&(p.ExpressionAttributeValues=i),p}function ye(e){let{queryRequest:t}=e,s=x(t),o=e.projectionExpression?L(e.projectionExpression):void 0,n={"#pk":t.pKeyProp,...t.sKeyProp&&{"#sk":t.sKeyProp},...o&&I(o),...e.extraExpAttributeNames||{}},i={":pk":d(t.pKey,t.pKeyType),...t.sKey&&{":sk":d(t.sKey,t.sKeyType??"S")},...t.skValue2&&{":skValue2":d(t.skValue2,t.sKeyType??"S")},...e.extraExpAttributeValues||{}};return {TableName:e.tableName,IndexName:t.indexName,KeyConditionExpression:s,FilterExpression:e.filterExpression,ExpressionAttributeNames:n,ExpressionAttributeValues:i,ProjectionExpression:o,ScanIndexForward:t.sorting!==void 0?t.sorting.toUpperCase()==="ASC":e.scanIndexForward,ReturnConsumedCapacity:e.returnConsumedCapacity,ExclusiveStartKey:t.lastEvaluatedKey,Limit:t.limit}}function xe(e){let t={TableName:e.tableName,Key:e.key,ConditionExpression:e.conditionExpression,ReturnValues:e.returnValues??"NONE",ReturnConsumedCapacity:e.returnConsumedCapacity,ReturnItemCollectionMetrics:e.returnItemCollectionMetrics},s={},o={};if(e.expressionAttributeNames)for(let E in e.expressionAttributeNames)s[E]=e.expressionAttributeNames[E];if(e.extraExpAttributeNames)for(let E in e.extraExpAttributeNames)s[E]=e.extraExpAttributeNames[E];if(e.expressionAttributeValues)for(let E in e.expressionAttributeValues)o[E]=e.expressionAttributeValues[E];if(e.extraExpAttributeValues)for(let E in e.extraExpAttributeValues)o[E]=e.extraExpAttributeValues[E];let n=e.updateExpression;if(n)return Object.keys(s).length>0&&(t.ExpressionAttributeNames=s),Object.keys(o).length>0&&(t.ExpressionAttributeValues=o),t.UpdateExpression=n,t;let i=e.item;if(!i||Object.keys(i).length===0)throw new Error("Either updateExpression or item with at least one field must be provided.");let u=[],m=i;for(let E in m){let R=m[E],N=`:${E}`;if(o[N]!==void 0){let S=1,y;do y=`:${E}_update_${S++}`;while(o[y]!==void 0);N=y;}u.push(`${E} = ${N}`),o[N]=R;}let T=`SET ${u.join(", ")}`;n=M(T);let p=g(n);for(let E in p)E in s||(s[E]=p[E]);return Object.keys(s).length>0&&(t.ExpressionAttributeNames=s),Object.keys(o).length>0&&(t.ExpressionAttributeValues=o),t.UpdateExpression=n,t}exports.QueryParseError=D;exports.RESERVED_KEYWORDS_SET=K;exports.buildGetCommandInput=Se;exports.buildPutCommandInput=Oe;exports.buildQueryCommandInput=ye;exports.buildUpdateCommandInput=xe;exports.createKeyConditionExpression=x;exports.customGetCommandInputSchema=q;exports.customPutCommandInputSchema=_;exports.customQueryCommandInputSchema=X;exports.customUpdateCommandInputSchema=v;exports.dynamoAttrTypeSch=W;exports.dynamoComparatorSch=k;exports.dynamoKeyAttrTypeSch=U;exports.dynamoQueryRequestSch=c;exports.extractExpAttributeNamesFromExpression=I;exports.extractExpAttributeNamesFromUpdateExp=g;exports.extractQueryReqFromParams=oe;exports.parseDynamoKeyValue=d;exports.replaceReservedKeywordsFromProjection=L;exports.replaceReservedKeywordsFromUpdateExp=M;
|
|
1
|
+
'use strict';var zod=require('zod');function x(e){let{sKey:t,skValue2:s,skComparator:o}=e,n="#pk = :pk";if(!t&&!s)return n;switch(b(o??"=")){case "<":n+=" AND #sk < :sk";break;case ">":n+=" AND #sk > :sk";break;case "<=":n+=" AND #sk <= :sk";break;case ">=":n+=" AND #sk >= :sk";break;case "BEGINS_WITH":if(!s)throw new Error("BEGINS_WITH operation requires skValue2.");n+=" AND begins_with(#sk, :skValue2)";break;case "BETWEEN":if(!t||!s)throw new Error("BETWEEN operation requires both sk and skValue2.");n+=" AND #sk BETWEEN :sk AND :skValue2";break;default:n+=" AND #sk = :sk";break}return n}function b(e){switch(e.toUpperCase()){case "BETWEEN":return "BETWEEN";case "BEGINS_WITH":return "BEGINS_WITH";case "GREATER_THAN":case ">":return ">";case "LESS_THAN":case "<":return "<";case "GREATER_THAN_OR_EQUAL":case ">=":return ">=";case "LESS_THAN_OR_EQUAL":case "<=":return "<=";case "EQUAL":case "=":return "=";default:throw new Error(`Invalid operation key: ${e}`)}}var l=class extends Error{constructor(t,s=400){super(t),this.name="QueryParseError",this.statusCode=s;}},D=l;var W=zod.z.enum(["S","N","B","BOOL","NULL","SS","NS","BS","M","L"]),U=zod.z.enum(["S","N","B"]),k=zod.z.enum(["=","<","<=",">",">=","BETWEEN","BEGINS_WITH"]),P=zod.z.preprocess(e=>typeof e=="string"?e.trim():e,zod.z.string().min(1)),C=zod.z.preprocess(e=>{if(!(e===""||e===null||e===void 0))return typeof e=="string"?e.trim():e},zod.z.string().optional()),V=zod.z.preprocess(e=>{if(!(e===""||e===null||e===void 0)){if(typeof e=="object")return e;if(typeof e=="string"){let t=e.trim();if(!t)return;try{return JSON.parse(t)}catch{return t}}return e}},zod.z.record(zod.z.string(),zod.z.unknown()).optional()),c=zod.z.object({pKey:P,pKeyType:U,pKeyProp:P,sKey:C,sKeyType:U.optional(),sKeyProp:C,skValue2:C,skComparator:k.optional(),indexName:C,limit:zod.z.coerce.number().int().positive().optional(),lastEvaluatedKey:V,sorting:zod.z.enum(["ASC","DESC"]).optional()}).superRefine((e,t)=>{typeof e.lastEvaluatedKey=="string"&&t.addIssue({path:["lastEvaluatedKey"],code:"custom",message:"lastEvaluatedKey must be a JSON object or a stringified JSON object"}),e.skComparator?(e.sKey||t.addIssue({path:["sKey"],code:"custom",message:"sKey is required when skComparator is present"}),e.sKeyProp||t.addIssue({path:["sKeyProp"],code:"custom",message:"sKeyProp is required when skComparator is present"}),e.sKeyType||t.addIssue({path:["sKeyType"],code:"custom",message:"sKeyType is required when skComparator is present"}),e.skComparator==="BETWEEN"?e.skValue2||t.addIssue({path:["skValue2"],code:"custom",message:"skValue2 is required when skComparator is BETWEEN"}):e.skValue2&&t.addIssue({path:["skValue2"],code:"custom",message:"skValue2/skValue2Type are only allowed when skComparator is BETWEEN"})):(e.sKey||e.sKeyProp||e.sKeyType||e.skValue2)&&t.addIssue({path:["skComparator"],code:"custom",message:"skComparator is required when providing sort key conditions"});});var O=zod.z.enum(["INDEXES","TOTAL","NONE"]),f=zod.z.enum(["SIZE","NONE"]),q=zod.z.object({tableName:zod.z.string(),key:zod.z.record(zod.z.string(),zod.z.unknown()),projectionExpression:zod.z.string().optional(),expressionAttributeNames:zod.z.record(zod.z.string(),zod.z.string()).optional(),consistentRead:zod.z.boolean().optional(),returnConsumedCapacity:O.optional()}),X=zod.z.object({tableName:zod.z.string(),queryRequest:c,keyConditionExpression:zod.z.string().optional(),filterExpression:zod.z.string().optional(),expressionAttributeNames:zod.z.record(zod.z.string(),zod.z.string()).optional(),expressionAttributeValues:zod.z.record(zod.z.string(),zod.z.unknown()).optional(),extraExpAttributeNames:zod.z.record(zod.z.string(),zod.z.string()).optional(),extraExpAttributeValues:zod.z.record(zod.z.string(),zod.z.unknown()).optional(),projectionExpression:zod.z.string().optional(),scanIndexForward:zod.z.boolean().optional(),returnConsumedCapacity:O.optional()}),_=zod.z.object({tableName:zod.z.string(),item:zod.z.record(zod.z.string(),zod.z.unknown()),conditionExpression:zod.z.string().optional(),expressionAttributeNames:zod.z.record(zod.z.string(),zod.z.string()).optional(),expressionAttributeValues:zod.z.record(zod.z.string(),zod.z.unknown()).optional(),returnValues:zod.z.enum(["NONE","ALL_OLD","UPDATED_OLD","ALL_NEW","UPDATED_NEW"]).optional(),returnConsumedCapacity:O.optional(),returnItemCollectionMetrics:f.optional()}),v=zod.z.object({tableName:zod.z.string(),key:zod.z.record(zod.z.string(),zod.z.unknown()),item:zod.z.record(zod.z.string(),zod.z.unknown()).optional(),updateExpression:zod.z.string().optional(),conditionExpression:zod.z.string().optional(),expressionAttributeNames:zod.z.record(zod.z.string(),zod.z.string()).optional(),expressionAttributeValues:zod.z.record(zod.z.string(),zod.z.unknown()).optional(),extraExpAttributeNames:zod.z.record(zod.z.string(),zod.z.string()).optional(),extraExpAttributeValues:zod.z.record(zod.z.string(),zod.z.unknown()).optional(),returnValues:zod.z.enum(["NONE","ALL_OLD","UPDATED_OLD","ALL_NEW","UPDATED_NEW"]).optional(),returnConsumedCapacity:O.optional(),returnItemCollectionMetrics:f.optional()});function oe(e,t){let s=e||{},o={...s,indexName:s.indexName??s.index},n=o.indexName,i=typeof o.pKey=="string"&&o.pKey.trim().length>0;return n?n===t.indexName?A(i?{...o,indexName:t.indexName}:{indexName:t.indexName,pKey:o.pKey||t.pKey,pKeyType:o.pKeyType||t.pKeyType,pKeyProp:o.pKeyProp||t.pKeyProp,limit:Number(o.limit||t.limit||"10"),sKey:o.sKey||t.sKey,sKeyType:o.sKeyType||t.sKeyType,sKeyProp:o.sKeyProp||t.sKeyProp,skValue2:o.skValue2||t.skValue2,skComparator:o.skComparator||t.skComparator,lastEvaluatedKey:o.lastEvaluatedKey||t.lastEvaluatedKey,sorting:o.sorting||t.sorting}):A(o):A(i?o:{...t,...o,indexName:t.indexName})}function A(e){let t=c.safeParse(e);if(!t.success){let s=t.error.issues.map(o=>`${o.path}: ${o.message}`).join(", ");throw new D(`Bad request! ${s}`,400)}return t.data}function d(e,t){switch(t){case "S":return e;case "N":return Number(e);case "BOOL":return e.toLowerCase()==="true";case "NULL":return null;case "M":try{return JSON.parse(e)}catch{throw new Error("Invalid JSON format for partitionKeyType M (Map)")}case "L":try{return JSON.parse(e)}catch{throw new Error("Invalid JSON format for partitionKeyType L (List)")}case "SS":return e.split(",").map(s=>s.trim());case "NS":return e.split(",").map(s=>Number(s.trim())).filter(s=>!isNaN(s));case "BS":return e.split(",").map(s=>Buffer.from(s.trim(),"base64"));default:throw new Error(`Unsupported partitionKeyType: ${t}`)}}function I(e){let t={};for(let s of e.split(",")){let o=s.trim();o.startsWith("#")&&(t[o]=o.slice(1));}return t}function g(e){let t={},s=e.replace(/^\s*SET\s+/i,"").trim();if(!s)return t;let o=s.split(",");for(let n of o){let i=n.split("=")[0]?.trim();!i||!i.startsWith("#")||(t[i]=i.slice(1));}return t}var K=new Set(["ABORT","ABSOLUTE","ACTION","ADD","AFTER","AGENT","AGGREGATE","ALL","ALLOCATE","ALTER","ANALYZE","AND","ANY","ARCHIVE","ARE","ARRAY","AS","ASC","ASCII","ASENSITIVE","ASSERTION","ASYMMETRIC","AT","ATOMIC","ATTACH","ATTRIBUTE","AUTH","AUTHORIZATION","AUTHORIZE","AUTO","AVG","BACK","BACKUP","BASE","BATCH","BEFORE","BEGIN","BETWEEN","BIGINT","BINARY","BIT","BLOB","BLOCK","BOOLEAN","BOTH","BREADTH","BUCKET","BULK","BY","BYTE","CALL","CALLED","CALLING","CAPACITY","CASCADE","CASCADED","CASE","CAST","CATALOG","CHAR","CHARACTER","CHECK","CLASS","CLOB","CLOSE","CLUSTER","CLUSTERED","CLUSTERING","CLUSTERS","COALESCE","COLLATE","COLLATION","COLLECTION","COLUMN","COLUMNS","COMBINE","COMMENT","COMMIT","COMPACT","COMPILE","COMPRESS","CONDITION","CONFLICT","CONNECT","CONNECTION","CONSISTENCY","CONSISTENT","CONSTRAINT","CONSTRUCTOR","CONSUMED","CONTINUE","CONVERT","COPY","CORRESPONDING","COUNT","COUNTER","CREATE","CROSS","CSV","CUBE","CURRENT","CURSOR","CYCLE","DATA","DATABASE","DATE","DATETIME","DAY","DEALLOCATE","DEC","DECIMAL","DECLARE","DEFAULT","DEFERRABLE","DEFERRED","DEFINE","DEFINED","DEFINITION","DELETE","DELIMITED","DEPTH","DEREF","DESC","DESCRIBE","DESCRIPTOR","DETACH","DETERMINISTIC","DIAGNOSTICS","DIRECTORIES","DISABLE","DISCONNECT","DISTINCT","DISTRIBUTE","DO","DOMAIN","DOUBLE","DROP","DUMP","DURATION","DYNAMIC","EACH","ELEMENT","ELSE","ELSEIF","EMPTY","ENABLE","END","EQUAL","EQUALS","ERROR","ESCAPE","ESCAPED","EVAL","EVALUATE","EXCEEDED","EXCEPT","EXCEPTIONS","EXCLUSIVE","EXEC","EXECUTE","EXISTS","EXIT","EXPLAIN","EXPLODE","EXPORT","EXPRESSION","EXTENDED","EXTERNAL","EXTRACT","FAIL","FALSE","FAMILY","FETCH","FIELDS","FILE","FILTER","FILTERING","FINAL","FINISH","FIRST","FIXED","FLATTERN","FLOAT","FOR","FORCE","FOREIGN","FORMAT","FORWARD","FOUND","FREE","FROM","FULL","FUNCTION","FUNCTIONS","GENERAL","GENERATE","GET","GLOB","GLOBAL","GO","GOTO","GRANT","GROUP","GROUPING","HANDLER","HASH","HAVE","HAVING","HEAP","HIDDEN","HOLD","HOUR","IDENTIFIED","IDENTITY","IF","IGNORE","IMMEDIATE","IMPORT","IN","INCLUDING","INCLUSIVE","INCREMENT","INDEX","INDEXED","INDEXES","INET","INF","INFINITE","INITIALLY","INLINE","INNER","INNTER","INPUT","INSENSITIVE","INSERT","INSTEAD","INT","INTEGER","INTERSECT","INTERVAL","INTO","INVALIDATE","IS","ISOLATION","ITEM","ITEMS","ITERATE","JOIN","KEY","KEYS","LAG","LANGUAGE","LARGE","LAST","LATERAL","LEAD","LEADING","LEAVE","LEFT","LEVEL","LIKE","LIMIT","LIMITED","LINES","LIST","LOAD","LOCAL","LOCALTIME","LOCALTIMESTAMP","LOCATION","LOCATOR","LOCK","LOCKS","LOG","LOGED","LONG","LOOP","LOW","MAP","MATCH","MATERIALIZED","MAX","MAXLEN","MEMBER","MERGE","METHOD","MIN","MINUS","MINUTE","MISSING","MOD","MODE","MODIFIES","MODIFY","MODULE","MONTH","MULTI","MULTISET","NAME","NAMES","NATIONAL","NATURAL","NCHAR","NCLOB","NEW","NEXT","NO","NONE","NOT","NULL","NULLIF","NUMBER","NUMERIC","OBJECT","OF","OFFLINE","OFFSET","OLD","ON","ONLINE","ONLY","OPAQUE","OPEN","OPERATOR","OPTION","OR","ORDER","ORDINALITY","OUT","OUTER","OUTPUT","OVER","OVERLAPS","OVERRIDE","PARTITION","PARTITIONED","PARTITIONS","PATH","PERCENT","PERCENTILE","PERMISSION","PERMISSIONS","PIPE","PIPELINED","PLAN","POOL","POSITION","PRECISION","PREPARE","PRESERVE","PRIMARY","PRIOR","PRIVATE","PRIVILEGES","PROCEDURE","PROCESSED","PROJECT","PROJECTION","PROPERTY","PROVISIONING","PUBLIC","PUT","QUERY","QUIT","QUORUM","RAISE","RANGE","RANK","RAW","READ","READS","REAL","REBUILD","RECORD","RECURSIVE","REDUCE","REF","REFERENCE","REFERENCES","REFERENCING","REGEXP","REGION","REINDEX","RELATIVE","RELEASE","REMA","REMAINDER","RENAME","REPEAT","REPLACE","REQUEST","RESET","RESIGNAL","RESOURCE","RESPONSE","RESTORE","RESTRICT","RESULT","RETURN","RETURNING","REVEAL","REVERSE","REVOKE","RIGHT","ROLE","ROLES","ROLLBACK","ROLLUP","ROUTINE","ROW","ROWS","RULE","RULES","SAMPLE","SATISFIES","SAVE","SAVEPOINT","SCAN","SCHEMA","SCOPE","SCROLL","SEARCH","SECOND","SECTION","SEGMENT","SEGMENTS","SELECT","SELF","SEMI","SENSITIVE","SEPARATE","SEQUENCE","SERIALIZABLE","SESSION","SET","SETS","SHARD","SHARE","SHARED","SHORT","SHOW","SIGNAL","SIMILAR","SIZE","SKEWED","SMALLINT","SNAPSHOT","SOME","SOURCE","SPACE","SPLIT","SQL","SQLCODE","SQLERROR","SQLEXCEPTION","SQLSTATE","SQLWARNING","START","STATE","STATIC","STATUS","STORAGE","STORE","STORED","STREAM","STRING","STRUCT","STYLE","SUB","SUBMULTISET","SUBPARTITION","SUBSTRING","SUBTYPE","SUM","SUPER","SYMMETRIC","SYNONYM","SYSTEM","TABLE","TABLESAMPLE","TEMP","TEMPORARY","TERMINATED","TEXT","THAN","THEN","THROUGHPUT","TIME","TIMESTAMP","TIMEZONE","TINYINT","TO","TOKEN","TOTAL","TOUCH","TRAILING","TRAN","TRANSACTION","TRANSFORM","TRANSLATE","TRANSLATION","TREAT","TRIGGER","TRIM","TRUE","TRUNCATE","TTL","TUPLE","TYPE","UNDER","UNDO","UNION","UNIQUE","UNIT","UNKNOWN","UNLOGGED","UNNEST","UNPROCESSED","UNSIGNED","UNTIL","UPDATE","UPPER","URL","USAGE","USE","USING","UUID","VACUUM","VALUE","VALUED","VALUES","VARCHAR","VARIABLE","VARIANCE","VARINT","VARYING","VIEW","VIEWS","VIRTUAL","VOID","WAIT","WHEN","WHENEVER","WHERE","WHILE","WINDOW","WITH","WITHIN","WITHOUT","WORK","WRAPPED","WRITE","YEAR","ZONE"]),G=new RegExp(`\\b(?:${[...K].join("|")})\\b(?=\\s*=)`,"gi");function M(e){return e.replace(G,t=>`#${t}`)}function L(e){return e.split(",").map(t=>{let s=t.trim();return s&&(K.has(s.toUpperCase())?`#${s}`:s)}).join(", ")}function Se(e){let{tableName:t,key:s,projectionExpression:o,expressionAttributeNames:n,consistentRead:i,returnConsumedCapacity:u}=e,m=o?L(o):void 0,T={TableName:t,Key:s,ProjectionExpression:m,ConsistentRead:i,ReturnConsumedCapacity:u},p={...m?I(m):{},...n??{}};return Object.keys(p).length>0&&(T.ExpressionAttributeNames=p),T}function Oe(e){let{tableName:t,item:s,conditionExpression:o,expressionAttributeNames:n,expressionAttributeValues:i,returnValues:u="NONE",returnConsumedCapacity:m,returnItemCollectionMetrics:T}=e,p={TableName:t,Item:s,ConditionExpression:o,ReturnValues:u,ReturnConsumedCapacity:m,ReturnItemCollectionMetrics:T},E=!!o,R=!!n&&Object.keys(n).length>0;if(E||R){let N=E?I(o):{},S=R?{...N,...n}:N;Object.keys(S).length>0&&(p.ExpressionAttributeNames=S);}return i&&Object.keys(i).length>0&&(p.ExpressionAttributeValues=i),p}function ye(e){let{queryRequest:t}=e,s=x(t),o=e.projectionExpression?L(e.projectionExpression):void 0,n={"#pk":t.pKeyProp,...t.sKeyProp&&{"#sk":t.sKeyProp},...o&&I(o),...e.extraExpAttributeNames||{}},i={":pk":d(t.pKey,t.pKeyType),...t.sKey&&{":sk":d(t.sKey,t.sKeyType??"S")},...t.skValue2&&{":skValue2":d(t.skValue2,t.sKeyType??"S")},...e.extraExpAttributeValues||{}};return {TableName:e.tableName,IndexName:t.indexName,KeyConditionExpression:s,FilterExpression:e.filterExpression,ExpressionAttributeNames:n,ExpressionAttributeValues:i,ProjectionExpression:o,ScanIndexForward:t.sorting!==void 0?t.sorting.toUpperCase()==="ASC":e.scanIndexForward,ReturnConsumedCapacity:e.returnConsumedCapacity,ExclusiveStartKey:t.lastEvaluatedKey,Limit:t.limit}}function xe(e){let t={TableName:e.tableName,Key:e.key,ConditionExpression:e.conditionExpression,ReturnValues:e.returnValues??"NONE",ReturnConsumedCapacity:e.returnConsumedCapacity,ReturnItemCollectionMetrics:e.returnItemCollectionMetrics},s={},o={};if(e.expressionAttributeNames)for(let E in e.expressionAttributeNames)s[E]=e.expressionAttributeNames[E];if(e.extraExpAttributeNames)for(let E in e.extraExpAttributeNames)s[E]=e.extraExpAttributeNames[E];if(e.expressionAttributeValues)for(let E in e.expressionAttributeValues)o[E]=e.expressionAttributeValues[E];if(e.extraExpAttributeValues)for(let E in e.extraExpAttributeValues)o[E]=e.extraExpAttributeValues[E];let n=e.updateExpression;if(n)return Object.keys(s).length>0&&(t.ExpressionAttributeNames=s),Object.keys(o).length>0&&(t.ExpressionAttributeValues=o),t.UpdateExpression=n,t;let i=e.item;if(!i||Object.keys(i).length===0)throw new Error("Either updateExpression or item with at least one field must be provided.");let u=[],m=i;for(let E in m){let R=m[E],N=`:${E}`;if(o[N]!==void 0){let S=1,y;do y=`:${E}_update_${S++}`;while(o[y]!==void 0);N=y;}u.push(`${E} = ${N}`),o[N]=R;}let T=`SET ${u.join(", ")}`;n=M(T);let p=g(n);for(let E in p)E in s||(s[E]=p[E]);return Object.keys(s).length>0&&(t.ExpressionAttributeNames=s),Object.keys(o).length>0&&(t.ExpressionAttributeValues=o),t.UpdateExpression=n,t}exports.QueryParseError=D;exports.RESERVED_KEYWORDS_SET=K;exports.buildGetCommandInput=Se;exports.buildPutCommandInput=Oe;exports.buildQueryCommandInput=ye;exports.buildUpdateCommandInput=xe;exports.createKeyConditionExpression=x;exports.customGetCommandInputSchema=q;exports.customPutCommandInputSchema=_;exports.customQueryCommandInputSchema=X;exports.customUpdateCommandInputSchema=v;exports.dynamoAttrTypeSch=W;exports.dynamoComparatorSch=k;exports.dynamoKeyAttrTypeSch=U;exports.dynamoQueryRequestSch=c;exports.extractExpAttributeNamesFromExpression=I;exports.extractExpAttributeNamesFromUpdateExp=g;exports.extractQueryReqFromParams=oe;exports.parseDynamoKeyValue=d;exports.replaceReservedKeywordsFromProjection=L;exports.replaceReservedKeywordsFromUpdateExp=M;
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import {z}from'zod';function x(e){let{sKey:t,skValue2:s,skComparator:o}=e,n="#pk = :pk";if(!t&&!s)return n;switch(b(o??"=")){case "<":n+=" AND #sk < :sk";break;case ">":n+=" AND #sk > :sk";break;case "<=":n+=" AND #sk <= :sk";break;case ">=":n+=" AND #sk >= :sk";break;case "BEGINS_WITH":if(!s)throw new Error("BEGINS_WITH operation requires skValue2.");n+=" AND begins_with(#sk, :skValue2)";break;case "BETWEEN":if(!t||!s)throw new Error("BETWEEN operation requires both sk and skValue2.");n+=" AND #sk BETWEEN :sk AND :skValue2";break;default:n+=" AND #sk = :sk";break}return n}function b(e){switch(e.toUpperCase()){case "BETWEEN":return "BETWEEN";case "BEGINS_WITH":return "BEGINS_WITH";case "GREATER_THAN":case ">":return ">";case "LESS_THAN":case "<":return "<";case "GREATER_THAN_OR_EQUAL":case ">=":return ">=";case "LESS_THAN_OR_EQUAL":case "<=":return "<=";case "EQUAL":case "=":return "=";default:throw new Error(`Invalid operation key: ${e}`)}}var l=class extends Error{constructor(t,s=400){super(t),this.name="QueryParseError",this.statusCode=s;}},D=l;var W=z.enum(["S","N","B","BOOL","NULL","SS","NS","BS","M","L"]),U=z.enum(["S","N","B"]),k=z.enum(["=","<","<=",">",">=","BETWEEN","BEGINS_WITH"]),P=z.preprocess(e=>typeof e=="string"?e.trim():e,z.string().min(1)),C=z.preprocess(e=>{if(!(e===""||e===null||e===void 0))return typeof e=="string"?e.trim():e},z.string().optional()),V=z.preprocess(e=>{if(!(e===""||e===null||e===void 0)){if(typeof e=="object")return e;if(typeof e=="string"){let t=e.trim();if(!t)return;try{return JSON.parse(t)}catch{return t}}return e}},z.record(z.string(),z.unknown()).optional()),c=z.object({pKey:P,pKeyType:U,pKeyProp:P,sKey:C,sKeyType:U.optional(),sKeyProp:C,skValue2:C,skComparator:k.optional(),indexName:C,limit:z.coerce.number().int().positive().optional(),lastEvaluatedKey:V,sorting:z.enum(["ASC","DESC"]).optional()}).superRefine((e,t)=>{typeof e.lastEvaluatedKey=="string"&&t.addIssue({path:["lastEvaluatedKey"],code:"custom",message:"lastEvaluatedKey must be a JSON object or a stringified JSON object"}),e.skComparator?(e.sKey||t.addIssue({path:["sKey"],code:"custom",message:"sKey is required when skComparator is present"}),e.sKeyProp||t.addIssue({path:["sKeyProp"],code:"custom",message:"sKeyProp is required when skComparator is present"}),e.sKeyType||t.addIssue({path:["sKeyType"],code:"custom",message:"sKeyType is required when skComparator is present"}),e.skComparator==="BETWEEN"?e.skValue2||t.addIssue({path:["skValue2"],code:"custom",message:"skValue2 is required when skComparator is BETWEEN"}):e.skValue2&&t.addIssue({path:["skValue2"],code:"custom",message:"skValue2/skValue2Type are only allowed when skComparator is BETWEEN"})):(e.sKey||e.sKeyProp||e.sKeyType||e.skValue2)&&t.addIssue({path:["skComparator"],code:"custom",message:"skComparator is required when providing sort key conditions"});});var O=z.enum(["INDEXES","TOTAL","NONE"]),f=z.enum(["SIZE","NONE"]),q=z.object({tableName:z.string(),key:z.record(z.string(),z.unknown()),projectionExpression:z.string().optional(),expressionAttributeNames:z.record(z.string(),z.string()).optional(),consistentRead:z.boolean().optional(),returnConsumedCapacity:O.optional()}),X=z.object({tableName:z.string(),queryRequest:c,keyConditionExpression:z.string().optional(),filterExpression:z.string().optional(),expressionAttributeNames:z.record(z.string(),z.string()).optional(),expressionAttributeValues:z.record(z.string(),z.unknown()).optional(),extraExpAttributeNames:z.record(z.string(),z.string()).optional(),extraExpAttributeValues:z.record(z.string(),z.unknown()).optional(),projectionExpression:z.string().optional(),scanIndexForward:z.boolean().optional(),returnConsumedCapacity:O.optional()}),_=z.object({tableName:z.string(),item:z.record(z.string(),z.unknown()),conditionExpression:z.string().optional(),expressionAttributeNames:z.record(z.string(),z.string()).optional(),expressionAttributeValues:z.record(z.string(),z.unknown()).optional(),returnValues:z.enum(["NONE","ALL_OLD","UPDATED_OLD","ALL_NEW","UPDATED_NEW"]).optional(),returnConsumedCapacity:O.optional(),returnItemCollectionMetrics:f.optional()}),v=z.object({tableName:z.string(),key:z.record(z.string(),z.unknown()),item:z.record(z.string(),z.unknown()).optional(),updateExpression:z.string().optional(),conditionExpression:z.string().optional(),expressionAttributeNames:z.record(z.string(),z.string()).optional(),expressionAttributeValues:z.record(z.string(),z.unknown()).optional(),extraExpAttributeNames:z.record(z.string(),z.string()).optional(),extraExpAttributeValues:z.record(z.string(),z.unknown()).optional(),returnValues:z.enum(["NONE","ALL_OLD","UPDATED_OLD","ALL_NEW","UPDATED_NEW"]).optional(),returnConsumedCapacity:O.optional(),returnItemCollectionMetrics:f.optional()});function oe(e,t){let s=e||{},o={...s,indexName:s.index??s.indexName},n=o.indexName,i=typeof o.pKey=="string"&&o.pKey.trim().length>0;return n?n===t.indexName?A(i?{...o,indexName:t.indexName}:{indexName:t.indexName,pKey:o.pKey||t.pKey,pKeyType:o.pKeyType||t.pKeyType,pKeyProp:o.pKeyProp||t.pKeyProp,limit:Number(o.limit||t.limit||"10"),sKey:o.sKey||t.sKey,sKeyType:o.sKeyType||t.sKeyType,sKeyProp:o.sKeyProp||t.sKeyProp,skValue2:o.skValue2||t.skValue2,skComparator:o.skComparator||t.skComparator,lastEvaluatedKey:o.lastEvaluatedKey||t.lastEvaluatedKey,sorting:o.sorting||t.sorting}):A(o):A(i?o:{...t,...o})}function A(e){let t=c.safeParse(e);if(!t.success){let s=t.error.issues.map(o=>`${o.path}: ${o.message}`).join(", ");throw new D(`Bad request! ${s}`,400)}return t.data}function d(e,t){switch(t){case "S":return e;case "N":return Number(e);case "BOOL":return e.toLowerCase()==="true";case "NULL":return null;case "M":try{return JSON.parse(e)}catch{throw new Error("Invalid JSON format for partitionKeyType M (Map)")}case "L":try{return JSON.parse(e)}catch{throw new Error("Invalid JSON format for partitionKeyType L (List)")}case "SS":return e.split(",").map(s=>s.trim());case "NS":return e.split(",").map(s=>Number(s.trim())).filter(s=>!isNaN(s));case "BS":return e.split(",").map(s=>Buffer.from(s.trim(),"base64"));default:throw new Error(`Unsupported partitionKeyType: ${t}`)}}function I(e){let t={};for(let s of e.split(",")){let o=s.trim();o.startsWith("#")&&(t[o]=o.slice(1));}return t}function g(e){let t={},s=e.replace(/^\s*SET\s+/i,"").trim();if(!s)return t;let o=s.split(",");for(let n of o){let i=n.split("=")[0]?.trim();!i||!i.startsWith("#")||(t[i]=i.slice(1));}return t}var K=new Set(["ABORT","ABSOLUTE","ACTION","ADD","AFTER","AGENT","AGGREGATE","ALL","ALLOCATE","ALTER","ANALYZE","AND","ANY","ARCHIVE","ARE","ARRAY","AS","ASC","ASCII","ASENSITIVE","ASSERTION","ASYMMETRIC","AT","ATOMIC","ATTACH","ATTRIBUTE","AUTH","AUTHORIZATION","AUTHORIZE","AUTO","AVG","BACK","BACKUP","BASE","BATCH","BEFORE","BEGIN","BETWEEN","BIGINT","BINARY","BIT","BLOB","BLOCK","BOOLEAN","BOTH","BREADTH","BUCKET","BULK","BY","BYTE","CALL","CALLED","CALLING","CAPACITY","CASCADE","CASCADED","CASE","CAST","CATALOG","CHAR","CHARACTER","CHECK","CLASS","CLOB","CLOSE","CLUSTER","CLUSTERED","CLUSTERING","CLUSTERS","COALESCE","COLLATE","COLLATION","COLLECTION","COLUMN","COLUMNS","COMBINE","COMMENT","COMMIT","COMPACT","COMPILE","COMPRESS","CONDITION","CONFLICT","CONNECT","CONNECTION","CONSISTENCY","CONSISTENT","CONSTRAINT","CONSTRUCTOR","CONSUMED","CONTINUE","CONVERT","COPY","CORRESPONDING","COUNT","COUNTER","CREATE","CROSS","CSV","CUBE","CURRENT","CURSOR","CYCLE","DATA","DATABASE","DATE","DATETIME","DAY","DEALLOCATE","DEC","DECIMAL","DECLARE","DEFAULT","DEFERRABLE","DEFERRED","DEFINE","DEFINED","DEFINITION","DELETE","DELIMITED","DEPTH","DEREF","DESC","DESCRIBE","DESCRIPTOR","DETACH","DETERMINISTIC","DIAGNOSTICS","DIRECTORIES","DISABLE","DISCONNECT","DISTINCT","DISTRIBUTE","DO","DOMAIN","DOUBLE","DROP","DUMP","DURATION","DYNAMIC","EACH","ELEMENT","ELSE","ELSEIF","EMPTY","ENABLE","END","EQUAL","EQUALS","ERROR","ESCAPE","ESCAPED","EVAL","EVALUATE","EXCEEDED","EXCEPT","EXCEPTIONS","EXCLUSIVE","EXEC","EXECUTE","EXISTS","EXIT","EXPLAIN","EXPLODE","EXPORT","EXPRESSION","EXTENDED","EXTERNAL","EXTRACT","FAIL","FALSE","FAMILY","FETCH","FIELDS","FILE","FILTER","FILTERING","FINAL","FINISH","FIRST","FIXED","FLATTERN","FLOAT","FOR","FORCE","FOREIGN","FORMAT","FORWARD","FOUND","FREE","FROM","FULL","FUNCTION","FUNCTIONS","GENERAL","GENERATE","GET","GLOB","GLOBAL","GO","GOTO","GRANT","GROUP","GROUPING","HANDLER","HASH","HAVE","HAVING","HEAP","HIDDEN","HOLD","HOUR","IDENTIFIED","IDENTITY","IF","IGNORE","IMMEDIATE","IMPORT","IN","INCLUDING","INCLUSIVE","INCREMENT","INDEX","INDEXED","INDEXES","INET","INF","INFINITE","INITIALLY","INLINE","INNER","INNTER","INPUT","INSENSITIVE","INSERT","INSTEAD","INT","INTEGER","INTERSECT","INTERVAL","INTO","INVALIDATE","IS","ISOLATION","ITEM","ITEMS","ITERATE","JOIN","KEY","KEYS","LAG","LANGUAGE","LARGE","LAST","LATERAL","LEAD","LEADING","LEAVE","LEFT","LEVEL","LIKE","LIMIT","LIMITED","LINES","LIST","LOAD","LOCAL","LOCALTIME","LOCALTIMESTAMP","LOCATION","LOCATOR","LOCK","LOCKS","LOG","LOGED","LONG","LOOP","LOW","MAP","MATCH","MATERIALIZED","MAX","MAXLEN","MEMBER","MERGE","METHOD","MIN","MINUS","MINUTE","MISSING","MOD","MODE","MODIFIES","MODIFY","MODULE","MONTH","MULTI","MULTISET","NAME","NAMES","NATIONAL","NATURAL","NCHAR","NCLOB","NEW","NEXT","NO","NONE","NOT","NULL","NULLIF","NUMBER","NUMERIC","OBJECT","OF","OFFLINE","OFFSET","OLD","ON","ONLINE","ONLY","OPAQUE","OPEN","OPERATOR","OPTION","OR","ORDER","ORDINALITY","OUT","OUTER","OUTPUT","OVER","OVERLAPS","OVERRIDE","PARTITION","PARTITIONED","PARTITIONS","PATH","PERCENT","PERCENTILE","PERMISSION","PERMISSIONS","PIPE","PIPELINED","PLAN","POOL","POSITION","PRECISION","PREPARE","PRESERVE","PRIMARY","PRIOR","PRIVATE","PRIVILEGES","PROCEDURE","PROCESSED","PROJECT","PROJECTION","PROPERTY","PROVISIONING","PUBLIC","PUT","QUERY","QUIT","QUORUM","RAISE","RANGE","RANK","RAW","READ","READS","REAL","REBUILD","RECORD","RECURSIVE","REDUCE","REF","REFERENCE","REFERENCES","REFERENCING","REGEXP","REGION","REINDEX","RELATIVE","RELEASE","REMA","REMAINDER","RENAME","REPEAT","REPLACE","REQUEST","RESET","RESIGNAL","RESOURCE","RESPONSE","RESTORE","RESTRICT","RESULT","RETURN","RETURNING","REVEAL","REVERSE","REVOKE","RIGHT","ROLE","ROLES","ROLLBACK","ROLLUP","ROUTINE","ROW","ROWS","RULE","RULES","SAMPLE","SATISFIES","SAVE","SAVEPOINT","SCAN","SCHEMA","SCOPE","SCROLL","SEARCH","SECOND","SECTION","SEGMENT","SEGMENTS","SELECT","SELF","SEMI","SENSITIVE","SEPARATE","SEQUENCE","SERIALIZABLE","SESSION","SET","SETS","SHARD","SHARE","SHARED","SHORT","SHOW","SIGNAL","SIMILAR","SIZE","SKEWED","SMALLINT","SNAPSHOT","SOME","SOURCE","SPACE","SPLIT","SQL","SQLCODE","SQLERROR","SQLEXCEPTION","SQLSTATE","SQLWARNING","START","STATE","STATIC","STATUS","STORAGE","STORE","STORED","STREAM","STRING","STRUCT","STYLE","SUB","SUBMULTISET","SUBPARTITION","SUBSTRING","SUBTYPE","SUM","SUPER","SYMMETRIC","SYNONYM","SYSTEM","TABLE","TABLESAMPLE","TEMP","TEMPORARY","TERMINATED","TEXT","THAN","THEN","THROUGHPUT","TIME","TIMESTAMP","TIMEZONE","TINYINT","TO","TOKEN","TOTAL","TOUCH","TRAILING","TRAN","TRANSACTION","TRANSFORM","TRANSLATE","TRANSLATION","TREAT","TRIGGER","TRIM","TRUE","TRUNCATE","TTL","TUPLE","TYPE","UNDER","UNDO","UNION","UNIQUE","UNIT","UNKNOWN","UNLOGGED","UNNEST","UNPROCESSED","UNSIGNED","UNTIL","UPDATE","UPPER","URL","USAGE","USE","USING","UUID","VACUUM","VALUE","VALUED","VALUES","VARCHAR","VARIABLE","VARIANCE","VARINT","VARYING","VIEW","VIEWS","VIRTUAL","VOID","WAIT","WHEN","WHENEVER","WHERE","WHILE","WINDOW","WITH","WITHIN","WITHOUT","WORK","WRAPPED","WRITE","YEAR","ZONE"]),G=new RegExp(`\\b(?:${[...K].join("|")})\\b(?=\\s*=)`,"gi");function M(e){return e.replace(G,t=>`#${t}`)}function L(e){return e.split(",").map(t=>{let s=t.trim();return s&&(K.has(s.toUpperCase())?`#${s}`:s)}).join(", ")}function Se(e){let{tableName:t,key:s,projectionExpression:o,expressionAttributeNames:n,consistentRead:i,returnConsumedCapacity:u}=e,m=o?L(o):void 0,T={TableName:t,Key:s,ProjectionExpression:m,ConsistentRead:i,ReturnConsumedCapacity:u},p={...m?I(m):{},...n??{}};return Object.keys(p).length>0&&(T.ExpressionAttributeNames=p),T}function Oe(e){let{tableName:t,item:s,conditionExpression:o,expressionAttributeNames:n,expressionAttributeValues:i,returnValues:u="NONE",returnConsumedCapacity:m,returnItemCollectionMetrics:T}=e,p={TableName:t,Item:s,ConditionExpression:o,ReturnValues:u,ReturnConsumedCapacity:m,ReturnItemCollectionMetrics:T},E=!!o,R=!!n&&Object.keys(n).length>0;if(E||R){let N=E?I(o):{},S=R?{...N,...n}:N;Object.keys(S).length>0&&(p.ExpressionAttributeNames=S);}return i&&Object.keys(i).length>0&&(p.ExpressionAttributeValues=i),p}function ye(e){let{queryRequest:t}=e,s=x(t),o=e.projectionExpression?L(e.projectionExpression):void 0,n={"#pk":t.pKeyProp,...t.sKeyProp&&{"#sk":t.sKeyProp},...o&&I(o),...e.extraExpAttributeNames||{}},i={":pk":d(t.pKey,t.pKeyType),...t.sKey&&{":sk":d(t.sKey,t.sKeyType??"S")},...t.skValue2&&{":skValue2":d(t.skValue2,t.sKeyType??"S")},...e.extraExpAttributeValues||{}};return {TableName:e.tableName,IndexName:t.indexName,KeyConditionExpression:s,FilterExpression:e.filterExpression,ExpressionAttributeNames:n,ExpressionAttributeValues:i,ProjectionExpression:o,ScanIndexForward:t.sorting!==void 0?t.sorting.toUpperCase()==="ASC":e.scanIndexForward,ReturnConsumedCapacity:e.returnConsumedCapacity,ExclusiveStartKey:t.lastEvaluatedKey,Limit:t.limit}}function xe(e){let t={TableName:e.tableName,Key:e.key,ConditionExpression:e.conditionExpression,ReturnValues:e.returnValues??"NONE",ReturnConsumedCapacity:e.returnConsumedCapacity,ReturnItemCollectionMetrics:e.returnItemCollectionMetrics},s={},o={};if(e.expressionAttributeNames)for(let E in e.expressionAttributeNames)s[E]=e.expressionAttributeNames[E];if(e.extraExpAttributeNames)for(let E in e.extraExpAttributeNames)s[E]=e.extraExpAttributeNames[E];if(e.expressionAttributeValues)for(let E in e.expressionAttributeValues)o[E]=e.expressionAttributeValues[E];if(e.extraExpAttributeValues)for(let E in e.extraExpAttributeValues)o[E]=e.extraExpAttributeValues[E];let n=e.updateExpression;if(n)return Object.keys(s).length>0&&(t.ExpressionAttributeNames=s),Object.keys(o).length>0&&(t.ExpressionAttributeValues=o),t.UpdateExpression=n,t;let i=e.item;if(!i||Object.keys(i).length===0)throw new Error("Either updateExpression or item with at least one field must be provided.");let u=[],m=i;for(let E in m){let R=m[E],N=`:${E}`;if(o[N]!==void 0){let S=1,y;do y=`:${E}_update_${S++}`;while(o[y]!==void 0);N=y;}u.push(`${E} = ${N}`),o[N]=R;}let T=`SET ${u.join(", ")}`;n=M(T);let p=g(n);for(let E in p)E in s||(s[E]=p[E]);return Object.keys(s).length>0&&(t.ExpressionAttributeNames=s),Object.keys(o).length>0&&(t.ExpressionAttributeValues=o),t.UpdateExpression=n,t}export{D as QueryParseError,K as RESERVED_KEYWORDS_SET,Se as buildGetCommandInput,Oe as buildPutCommandInput,ye as buildQueryCommandInput,xe as buildUpdateCommandInput,x as createKeyConditionExpression,q as customGetCommandInputSchema,_ as customPutCommandInputSchema,X as customQueryCommandInputSchema,v as customUpdateCommandInputSchema,W as dynamoAttrTypeSch,k as dynamoComparatorSch,U as dynamoKeyAttrTypeSch,c as dynamoQueryRequestSch,I as extractExpAttributeNamesFromExpression,g as extractExpAttributeNamesFromUpdateExp,oe as extractQueryReqFromParams,d as parseDynamoKeyValue,L as replaceReservedKeywordsFromProjection,M as replaceReservedKeywordsFromUpdateExp};
|
|
1
|
+
import {z}from'zod';function x(e){let{sKey:t,skValue2:s,skComparator:o}=e,n="#pk = :pk";if(!t&&!s)return n;switch(b(o??"=")){case "<":n+=" AND #sk < :sk";break;case ">":n+=" AND #sk > :sk";break;case "<=":n+=" AND #sk <= :sk";break;case ">=":n+=" AND #sk >= :sk";break;case "BEGINS_WITH":if(!s)throw new Error("BEGINS_WITH operation requires skValue2.");n+=" AND begins_with(#sk, :skValue2)";break;case "BETWEEN":if(!t||!s)throw new Error("BETWEEN operation requires both sk and skValue2.");n+=" AND #sk BETWEEN :sk AND :skValue2";break;default:n+=" AND #sk = :sk";break}return n}function b(e){switch(e.toUpperCase()){case "BETWEEN":return "BETWEEN";case "BEGINS_WITH":return "BEGINS_WITH";case "GREATER_THAN":case ">":return ">";case "LESS_THAN":case "<":return "<";case "GREATER_THAN_OR_EQUAL":case ">=":return ">=";case "LESS_THAN_OR_EQUAL":case "<=":return "<=";case "EQUAL":case "=":return "=";default:throw new Error(`Invalid operation key: ${e}`)}}var l=class extends Error{constructor(t,s=400){super(t),this.name="QueryParseError",this.statusCode=s;}},D=l;var W=z.enum(["S","N","B","BOOL","NULL","SS","NS","BS","M","L"]),U=z.enum(["S","N","B"]),k=z.enum(["=","<","<=",">",">=","BETWEEN","BEGINS_WITH"]),P=z.preprocess(e=>typeof e=="string"?e.trim():e,z.string().min(1)),C=z.preprocess(e=>{if(!(e===""||e===null||e===void 0))return typeof e=="string"?e.trim():e},z.string().optional()),V=z.preprocess(e=>{if(!(e===""||e===null||e===void 0)){if(typeof e=="object")return e;if(typeof e=="string"){let t=e.trim();if(!t)return;try{return JSON.parse(t)}catch{return t}}return e}},z.record(z.string(),z.unknown()).optional()),c=z.object({pKey:P,pKeyType:U,pKeyProp:P,sKey:C,sKeyType:U.optional(),sKeyProp:C,skValue2:C,skComparator:k.optional(),indexName:C,limit:z.coerce.number().int().positive().optional(),lastEvaluatedKey:V,sorting:z.enum(["ASC","DESC"]).optional()}).superRefine((e,t)=>{typeof e.lastEvaluatedKey=="string"&&t.addIssue({path:["lastEvaluatedKey"],code:"custom",message:"lastEvaluatedKey must be a JSON object or a stringified JSON object"}),e.skComparator?(e.sKey||t.addIssue({path:["sKey"],code:"custom",message:"sKey is required when skComparator is present"}),e.sKeyProp||t.addIssue({path:["sKeyProp"],code:"custom",message:"sKeyProp is required when skComparator is present"}),e.sKeyType||t.addIssue({path:["sKeyType"],code:"custom",message:"sKeyType is required when skComparator is present"}),e.skComparator==="BETWEEN"?e.skValue2||t.addIssue({path:["skValue2"],code:"custom",message:"skValue2 is required when skComparator is BETWEEN"}):e.skValue2&&t.addIssue({path:["skValue2"],code:"custom",message:"skValue2/skValue2Type are only allowed when skComparator is BETWEEN"})):(e.sKey||e.sKeyProp||e.sKeyType||e.skValue2)&&t.addIssue({path:["skComparator"],code:"custom",message:"skComparator is required when providing sort key conditions"});});var O=z.enum(["INDEXES","TOTAL","NONE"]),f=z.enum(["SIZE","NONE"]),q=z.object({tableName:z.string(),key:z.record(z.string(),z.unknown()),projectionExpression:z.string().optional(),expressionAttributeNames:z.record(z.string(),z.string()).optional(),consistentRead:z.boolean().optional(),returnConsumedCapacity:O.optional()}),X=z.object({tableName:z.string(),queryRequest:c,keyConditionExpression:z.string().optional(),filterExpression:z.string().optional(),expressionAttributeNames:z.record(z.string(),z.string()).optional(),expressionAttributeValues:z.record(z.string(),z.unknown()).optional(),extraExpAttributeNames:z.record(z.string(),z.string()).optional(),extraExpAttributeValues:z.record(z.string(),z.unknown()).optional(),projectionExpression:z.string().optional(),scanIndexForward:z.boolean().optional(),returnConsumedCapacity:O.optional()}),_=z.object({tableName:z.string(),item:z.record(z.string(),z.unknown()),conditionExpression:z.string().optional(),expressionAttributeNames:z.record(z.string(),z.string()).optional(),expressionAttributeValues:z.record(z.string(),z.unknown()).optional(),returnValues:z.enum(["NONE","ALL_OLD","UPDATED_OLD","ALL_NEW","UPDATED_NEW"]).optional(),returnConsumedCapacity:O.optional(),returnItemCollectionMetrics:f.optional()}),v=z.object({tableName:z.string(),key:z.record(z.string(),z.unknown()),item:z.record(z.string(),z.unknown()).optional(),updateExpression:z.string().optional(),conditionExpression:z.string().optional(),expressionAttributeNames:z.record(z.string(),z.string()).optional(),expressionAttributeValues:z.record(z.string(),z.unknown()).optional(),extraExpAttributeNames:z.record(z.string(),z.string()).optional(),extraExpAttributeValues:z.record(z.string(),z.unknown()).optional(),returnValues:z.enum(["NONE","ALL_OLD","UPDATED_OLD","ALL_NEW","UPDATED_NEW"]).optional(),returnConsumedCapacity:O.optional(),returnItemCollectionMetrics:f.optional()});function oe(e,t){let s=e||{},o={...s,indexName:s.indexName??s.index},n=o.indexName,i=typeof o.pKey=="string"&&o.pKey.trim().length>0;return n?n===t.indexName?A(i?{...o,indexName:t.indexName}:{indexName:t.indexName,pKey:o.pKey||t.pKey,pKeyType:o.pKeyType||t.pKeyType,pKeyProp:o.pKeyProp||t.pKeyProp,limit:Number(o.limit||t.limit||"10"),sKey:o.sKey||t.sKey,sKeyType:o.sKeyType||t.sKeyType,sKeyProp:o.sKeyProp||t.sKeyProp,skValue2:o.skValue2||t.skValue2,skComparator:o.skComparator||t.skComparator,lastEvaluatedKey:o.lastEvaluatedKey||t.lastEvaluatedKey,sorting:o.sorting||t.sorting}):A(o):A(i?o:{...t,...o,indexName:t.indexName})}function A(e){let t=c.safeParse(e);if(!t.success){let s=t.error.issues.map(o=>`${o.path}: ${o.message}`).join(", ");throw new D(`Bad request! ${s}`,400)}return t.data}function d(e,t){switch(t){case "S":return e;case "N":return Number(e);case "BOOL":return e.toLowerCase()==="true";case "NULL":return null;case "M":try{return JSON.parse(e)}catch{throw new Error("Invalid JSON format for partitionKeyType M (Map)")}case "L":try{return JSON.parse(e)}catch{throw new Error("Invalid JSON format for partitionKeyType L (List)")}case "SS":return e.split(",").map(s=>s.trim());case "NS":return e.split(",").map(s=>Number(s.trim())).filter(s=>!isNaN(s));case "BS":return e.split(",").map(s=>Buffer.from(s.trim(),"base64"));default:throw new Error(`Unsupported partitionKeyType: ${t}`)}}function I(e){let t={};for(let s of e.split(",")){let o=s.trim();o.startsWith("#")&&(t[o]=o.slice(1));}return t}function g(e){let t={},s=e.replace(/^\s*SET\s+/i,"").trim();if(!s)return t;let o=s.split(",");for(let n of o){let i=n.split("=")[0]?.trim();!i||!i.startsWith("#")||(t[i]=i.slice(1));}return t}var K=new Set(["ABORT","ABSOLUTE","ACTION","ADD","AFTER","AGENT","AGGREGATE","ALL","ALLOCATE","ALTER","ANALYZE","AND","ANY","ARCHIVE","ARE","ARRAY","AS","ASC","ASCII","ASENSITIVE","ASSERTION","ASYMMETRIC","AT","ATOMIC","ATTACH","ATTRIBUTE","AUTH","AUTHORIZATION","AUTHORIZE","AUTO","AVG","BACK","BACKUP","BASE","BATCH","BEFORE","BEGIN","BETWEEN","BIGINT","BINARY","BIT","BLOB","BLOCK","BOOLEAN","BOTH","BREADTH","BUCKET","BULK","BY","BYTE","CALL","CALLED","CALLING","CAPACITY","CASCADE","CASCADED","CASE","CAST","CATALOG","CHAR","CHARACTER","CHECK","CLASS","CLOB","CLOSE","CLUSTER","CLUSTERED","CLUSTERING","CLUSTERS","COALESCE","COLLATE","COLLATION","COLLECTION","COLUMN","COLUMNS","COMBINE","COMMENT","COMMIT","COMPACT","COMPILE","COMPRESS","CONDITION","CONFLICT","CONNECT","CONNECTION","CONSISTENCY","CONSISTENT","CONSTRAINT","CONSTRUCTOR","CONSUMED","CONTINUE","CONVERT","COPY","CORRESPONDING","COUNT","COUNTER","CREATE","CROSS","CSV","CUBE","CURRENT","CURSOR","CYCLE","DATA","DATABASE","DATE","DATETIME","DAY","DEALLOCATE","DEC","DECIMAL","DECLARE","DEFAULT","DEFERRABLE","DEFERRED","DEFINE","DEFINED","DEFINITION","DELETE","DELIMITED","DEPTH","DEREF","DESC","DESCRIBE","DESCRIPTOR","DETACH","DETERMINISTIC","DIAGNOSTICS","DIRECTORIES","DISABLE","DISCONNECT","DISTINCT","DISTRIBUTE","DO","DOMAIN","DOUBLE","DROP","DUMP","DURATION","DYNAMIC","EACH","ELEMENT","ELSE","ELSEIF","EMPTY","ENABLE","END","EQUAL","EQUALS","ERROR","ESCAPE","ESCAPED","EVAL","EVALUATE","EXCEEDED","EXCEPT","EXCEPTIONS","EXCLUSIVE","EXEC","EXECUTE","EXISTS","EXIT","EXPLAIN","EXPLODE","EXPORT","EXPRESSION","EXTENDED","EXTERNAL","EXTRACT","FAIL","FALSE","FAMILY","FETCH","FIELDS","FILE","FILTER","FILTERING","FINAL","FINISH","FIRST","FIXED","FLATTERN","FLOAT","FOR","FORCE","FOREIGN","FORMAT","FORWARD","FOUND","FREE","FROM","FULL","FUNCTION","FUNCTIONS","GENERAL","GENERATE","GET","GLOB","GLOBAL","GO","GOTO","GRANT","GROUP","GROUPING","HANDLER","HASH","HAVE","HAVING","HEAP","HIDDEN","HOLD","HOUR","IDENTIFIED","IDENTITY","IF","IGNORE","IMMEDIATE","IMPORT","IN","INCLUDING","INCLUSIVE","INCREMENT","INDEX","INDEXED","INDEXES","INET","INF","INFINITE","INITIALLY","INLINE","INNER","INNTER","INPUT","INSENSITIVE","INSERT","INSTEAD","INT","INTEGER","INTERSECT","INTERVAL","INTO","INVALIDATE","IS","ISOLATION","ITEM","ITEMS","ITERATE","JOIN","KEY","KEYS","LAG","LANGUAGE","LARGE","LAST","LATERAL","LEAD","LEADING","LEAVE","LEFT","LEVEL","LIKE","LIMIT","LIMITED","LINES","LIST","LOAD","LOCAL","LOCALTIME","LOCALTIMESTAMP","LOCATION","LOCATOR","LOCK","LOCKS","LOG","LOGED","LONG","LOOP","LOW","MAP","MATCH","MATERIALIZED","MAX","MAXLEN","MEMBER","MERGE","METHOD","MIN","MINUS","MINUTE","MISSING","MOD","MODE","MODIFIES","MODIFY","MODULE","MONTH","MULTI","MULTISET","NAME","NAMES","NATIONAL","NATURAL","NCHAR","NCLOB","NEW","NEXT","NO","NONE","NOT","NULL","NULLIF","NUMBER","NUMERIC","OBJECT","OF","OFFLINE","OFFSET","OLD","ON","ONLINE","ONLY","OPAQUE","OPEN","OPERATOR","OPTION","OR","ORDER","ORDINALITY","OUT","OUTER","OUTPUT","OVER","OVERLAPS","OVERRIDE","PARTITION","PARTITIONED","PARTITIONS","PATH","PERCENT","PERCENTILE","PERMISSION","PERMISSIONS","PIPE","PIPELINED","PLAN","POOL","POSITION","PRECISION","PREPARE","PRESERVE","PRIMARY","PRIOR","PRIVATE","PRIVILEGES","PROCEDURE","PROCESSED","PROJECT","PROJECTION","PROPERTY","PROVISIONING","PUBLIC","PUT","QUERY","QUIT","QUORUM","RAISE","RANGE","RANK","RAW","READ","READS","REAL","REBUILD","RECORD","RECURSIVE","REDUCE","REF","REFERENCE","REFERENCES","REFERENCING","REGEXP","REGION","REINDEX","RELATIVE","RELEASE","REMA","REMAINDER","RENAME","REPEAT","REPLACE","REQUEST","RESET","RESIGNAL","RESOURCE","RESPONSE","RESTORE","RESTRICT","RESULT","RETURN","RETURNING","REVEAL","REVERSE","REVOKE","RIGHT","ROLE","ROLES","ROLLBACK","ROLLUP","ROUTINE","ROW","ROWS","RULE","RULES","SAMPLE","SATISFIES","SAVE","SAVEPOINT","SCAN","SCHEMA","SCOPE","SCROLL","SEARCH","SECOND","SECTION","SEGMENT","SEGMENTS","SELECT","SELF","SEMI","SENSITIVE","SEPARATE","SEQUENCE","SERIALIZABLE","SESSION","SET","SETS","SHARD","SHARE","SHARED","SHORT","SHOW","SIGNAL","SIMILAR","SIZE","SKEWED","SMALLINT","SNAPSHOT","SOME","SOURCE","SPACE","SPLIT","SQL","SQLCODE","SQLERROR","SQLEXCEPTION","SQLSTATE","SQLWARNING","START","STATE","STATIC","STATUS","STORAGE","STORE","STORED","STREAM","STRING","STRUCT","STYLE","SUB","SUBMULTISET","SUBPARTITION","SUBSTRING","SUBTYPE","SUM","SUPER","SYMMETRIC","SYNONYM","SYSTEM","TABLE","TABLESAMPLE","TEMP","TEMPORARY","TERMINATED","TEXT","THAN","THEN","THROUGHPUT","TIME","TIMESTAMP","TIMEZONE","TINYINT","TO","TOKEN","TOTAL","TOUCH","TRAILING","TRAN","TRANSACTION","TRANSFORM","TRANSLATE","TRANSLATION","TREAT","TRIGGER","TRIM","TRUE","TRUNCATE","TTL","TUPLE","TYPE","UNDER","UNDO","UNION","UNIQUE","UNIT","UNKNOWN","UNLOGGED","UNNEST","UNPROCESSED","UNSIGNED","UNTIL","UPDATE","UPPER","URL","USAGE","USE","USING","UUID","VACUUM","VALUE","VALUED","VALUES","VARCHAR","VARIABLE","VARIANCE","VARINT","VARYING","VIEW","VIEWS","VIRTUAL","VOID","WAIT","WHEN","WHENEVER","WHERE","WHILE","WINDOW","WITH","WITHIN","WITHOUT","WORK","WRAPPED","WRITE","YEAR","ZONE"]),G=new RegExp(`\\b(?:${[...K].join("|")})\\b(?=\\s*=)`,"gi");function M(e){return e.replace(G,t=>`#${t}`)}function L(e){return e.split(",").map(t=>{let s=t.trim();return s&&(K.has(s.toUpperCase())?`#${s}`:s)}).join(", ")}function Se(e){let{tableName:t,key:s,projectionExpression:o,expressionAttributeNames:n,consistentRead:i,returnConsumedCapacity:u}=e,m=o?L(o):void 0,T={TableName:t,Key:s,ProjectionExpression:m,ConsistentRead:i,ReturnConsumedCapacity:u},p={...m?I(m):{},...n??{}};return Object.keys(p).length>0&&(T.ExpressionAttributeNames=p),T}function Oe(e){let{tableName:t,item:s,conditionExpression:o,expressionAttributeNames:n,expressionAttributeValues:i,returnValues:u="NONE",returnConsumedCapacity:m,returnItemCollectionMetrics:T}=e,p={TableName:t,Item:s,ConditionExpression:o,ReturnValues:u,ReturnConsumedCapacity:m,ReturnItemCollectionMetrics:T},E=!!o,R=!!n&&Object.keys(n).length>0;if(E||R){let N=E?I(o):{},S=R?{...N,...n}:N;Object.keys(S).length>0&&(p.ExpressionAttributeNames=S);}return i&&Object.keys(i).length>0&&(p.ExpressionAttributeValues=i),p}function ye(e){let{queryRequest:t}=e,s=x(t),o=e.projectionExpression?L(e.projectionExpression):void 0,n={"#pk":t.pKeyProp,...t.sKeyProp&&{"#sk":t.sKeyProp},...o&&I(o),...e.extraExpAttributeNames||{}},i={":pk":d(t.pKey,t.pKeyType),...t.sKey&&{":sk":d(t.sKey,t.sKeyType??"S")},...t.skValue2&&{":skValue2":d(t.skValue2,t.sKeyType??"S")},...e.extraExpAttributeValues||{}};return {TableName:e.tableName,IndexName:t.indexName,KeyConditionExpression:s,FilterExpression:e.filterExpression,ExpressionAttributeNames:n,ExpressionAttributeValues:i,ProjectionExpression:o,ScanIndexForward:t.sorting!==void 0?t.sorting.toUpperCase()==="ASC":e.scanIndexForward,ReturnConsumedCapacity:e.returnConsumedCapacity,ExclusiveStartKey:t.lastEvaluatedKey,Limit:t.limit}}function xe(e){let t={TableName:e.tableName,Key:e.key,ConditionExpression:e.conditionExpression,ReturnValues:e.returnValues??"NONE",ReturnConsumedCapacity:e.returnConsumedCapacity,ReturnItemCollectionMetrics:e.returnItemCollectionMetrics},s={},o={};if(e.expressionAttributeNames)for(let E in e.expressionAttributeNames)s[E]=e.expressionAttributeNames[E];if(e.extraExpAttributeNames)for(let E in e.extraExpAttributeNames)s[E]=e.extraExpAttributeNames[E];if(e.expressionAttributeValues)for(let E in e.expressionAttributeValues)o[E]=e.expressionAttributeValues[E];if(e.extraExpAttributeValues)for(let E in e.extraExpAttributeValues)o[E]=e.extraExpAttributeValues[E];let n=e.updateExpression;if(n)return Object.keys(s).length>0&&(t.ExpressionAttributeNames=s),Object.keys(o).length>0&&(t.ExpressionAttributeValues=o),t.UpdateExpression=n,t;let i=e.item;if(!i||Object.keys(i).length===0)throw new Error("Either updateExpression or item with at least one field must be provided.");let u=[],m=i;for(let E in m){let R=m[E],N=`:${E}`;if(o[N]!==void 0){let S=1,y;do y=`:${E}_update_${S++}`;while(o[y]!==void 0);N=y;}u.push(`${E} = ${N}`),o[N]=R;}let T=`SET ${u.join(", ")}`;n=M(T);let p=g(n);for(let E in p)E in s||(s[E]=p[E]);return Object.keys(s).length>0&&(t.ExpressionAttributeNames=s),Object.keys(o).length>0&&(t.ExpressionAttributeValues=o),t.UpdateExpression=n,t}export{D as QueryParseError,K as RESERVED_KEYWORDS_SET,Se as buildGetCommandInput,Oe as buildPutCommandInput,ye as buildQueryCommandInput,xe as buildUpdateCommandInput,x as createKeyConditionExpression,q as customGetCommandInputSchema,_ as customPutCommandInputSchema,X as customQueryCommandInputSchema,v as customUpdateCommandInputSchema,W as dynamoAttrTypeSch,k as dynamoComparatorSch,U as dynamoKeyAttrTypeSch,c as dynamoQueryRequestSch,I as extractExpAttributeNamesFromExpression,g as extractExpAttributeNamesFromUpdateExp,oe as extractQueryReqFromParams,d as parseDynamoKeyValue,L as replaceReservedKeywordsFromProjection,M as replaceReservedKeywordsFromUpdateExp};
|
package/package.json
CHANGED