dynamo-command-builder 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/query-request/comparator.ts","../src/utils/dynamo-value-parse.ts","../src/utils/expression-attribute-names.ts","../src/utils/reserved-keywords.ts","../src/command/build-get-command.ts","../src/command/build-put-command.ts","../src/command/build-query-command.ts","../src/command/build-update-command.ts","../src/types/dynamo-query-request.types.ts","../src/types/command.types.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["import { DynamoQueryRequest } from '../../types';\n\n/**\n * Create a DynamoDB condition expression based on the provided query request.\n *\n * ### Process flow:\n * 1. Start with a base condition for the partition key.\n * 2. Check if a sort key is provided in the query request.\n * 3. Depending on the comparator specified, append the appropriate condition for the sort key.\n * 4. Handle special cases for 'BEGINS_WITH' and 'BETWEEN' comparators.\n * 5. Return the constructed condition expression string.\n *\n * ### Notes:\n * - If no sort key is provided, only the partition key condition is returned.\n * - The function supports various comparators including '=', '<', '>', '<=', '>=', 'BEGINS_WITH', and 'BETWEEN'.\n *\n * @param queryRequest\n * @returns\n */\nexport function createKeyConditionExpression(queryRequest: DynamoQueryRequest): string {\n const { sKey, skValue2, skComparator } = queryRequest;\n let keyConditionExpression = '#pk = :pk';\n\n // If there is no sort key condition, return the partition key condition only\n if (!sKey && !skValue2) return keyConditionExpression;\n\n switch (getOperatorSymbolByKey(skComparator ?? '=')) {\n case '<':\n keyConditionExpression += ' AND #sk < :sk';\n break;\n case '>':\n keyConditionExpression += ' AND #sk > :sk';\n break;\n case '<=':\n keyConditionExpression += ' AND #sk <= :sk';\n break;\n case '>=':\n keyConditionExpression += ' AND #sk >= :sk';\n break;\n case 'BEGINS_WITH':\n if (!skValue2) throw new Error('BEGINS_WITH operation requires skValue2.');\n keyConditionExpression += ` AND begins_with(#sk, :skValue2)`;\n break;\n case 'BETWEEN':\n if (!sKey || !skValue2) throw new Error('BETWEEN operation requires both sk and skValue2.');\n keyConditionExpression += ' AND #sk BETWEEN :sk AND :skValue2';\n break;\n default:\n keyConditionExpression += ' AND #sk = :sk';\n break;\n }\n\n return keyConditionExpression;\n}\n\n/**\n * Get the DynamoDB operator symbol based on the provided operation key.\n *\n * ### Supported operations:\n * - 'BETWEEN'\n * - 'BEGINS_WITH'\n * - 'GREATER_THAN' or '>'\n * - 'LESS_THAN' or '<'\n * - 'GREATER_THAN_OR_EQUAL' or '>='\n * - 'LESS_THAN_OR_EQUAL' or '<='\n * - 'EQUAL' or '='\n *\n *\n * @param operation\n * @returns\n */\nfunction getOperatorSymbolByKey(operation: string): string {\n switch (operation.toUpperCase()) {\n case 'BETWEEN':\n return 'BETWEEN';\n case 'BEGINS_WITH':\n return 'BEGINS_WITH';\n case 'GREATER_THAN':\n case '>':\n return '>';\n case 'LESS_THAN':\n case '<':\n return '<';\n case 'GREATER_THAN_OR_EQUAL':\n case '>=':\n return '>=';\n case 'LESS_THAN_OR_EQUAL':\n case '<=':\n return '<=';\n case 'EQUAL':\n case '=':\n return '=';\n default:\n throw new Error(`Invalid operation key: ${operation}`);\n }\n}\n","/**\n * Parses a partition or sort key value based on its type.\n *\n * ### Process flow:\n * 1. Check the provided key type.\n * 2. Depending on the type, convert the string value to the appropriate JavaScript type:\n * - 'S' → string\n * - 'N' → number\n * - 'BOOL' → boolean\n * - 'NULL' → null\n * - 'M' → object (parsed from JSON string)\n * - 'L' → array (parsed from JSON string)\n * - 'SS' → array of strings (split by commas)\n * - 'NS' → array of numbers (split by commas)\n * - 'BS' → array of binary data (split by commas, base64 encoded)\n * 3. Return the parsed value.\n *\n * ### Notes:\n * - For types 'M' and 'L', the function expects a valid JSON string representation.\n * - For set types ('SS', 'NS', 'BS'), the input string should have items separated by commas.\n * - If the key type is unrecognized, an error is thrown.\n *\n *\n * @param key - The value of the partition key as a string.\n * @param type - The type of the partition key (e.g., 'S', 'N', 'BOOL', etc.).\n * @returns The parsed partition key value in its appropriate type.\n * @throws Error if the partition key type is invalid or the format is incorrect for types 'M' or 'L'.\n * @example\n * parsePartitionKeyValue('123', 'N'); // Returns 123 as a number\n * parsePartitionKeyValue('true', 'BOOL'); // Returns true as a boolean\n * parsePartitionKeyValue('{\"key\": \"value\"}', 'M'); // Returns { key: \"value\" } as an object\n */\nexport function parseDynamoKeyValue(key: string, keyType: string): unknown {\n switch (keyType) {\n case 'S': // String\n return key;\n case 'N': // Number\n return Number(key);\n case 'BOOL': // Boolean\n return key.toLowerCase() === 'true';\n case 'NULL': // Null\n return null;\n case 'M': // Map (JSON string)\n try {\n return JSON.parse(key);\n } catch {\n throw new Error('Invalid JSON format for partitionKeyType M (Map)');\n }\n case 'L': // List (JSON array)\n try {\n return JSON.parse(key);\n } catch {\n throw new Error('Invalid JSON format for partitionKeyType L (List)');\n }\n case 'SS': // String Set\n return key.split(',').map((item) => item.trim());\n case 'NS': // Number Set\n return key\n .split(',')\n .map((item) => Number(item.trim()))\n .filter((num) => !isNaN(num));\n case 'BS': // Binary Set\n return key.split(',').map((item) => Buffer.from(item.trim(), 'base64'));\n default:\n throw new Error(`Unsupported partitionKeyType: ${keyType}`);\n }\n}\n","/**\n * Extracts expression attribute names from a projection string.\n *\n * ### Process flow:\n * 1. Split the projection string by commas to get individual attribute names.\n * 2. Trim whitespace from each attribute name.\n * 3. Check if the attribute name starts with '#'.\n * 4. If it does, add an entry to the result object mapping the attribute name to its unprefixed version.\n * 5. Return the resulting record of expression attribute names.\n *\n * @param {string} expression - The projection expression string.\n * @returns {Record<string, string>} - A record of expression attribute names.\n */\nexport function extractExpAttributeNamesFromExpression(expression: string): Record<string, string> {\n const result: Record<string, string> = {};\n\n for (const raw of expression.split(',')) {\n const attr = raw.trim();\n if (attr.startsWith('#')) {\n result[attr] = attr.slice(1);\n }\n }\n\n return result;\n}\n\n/**\n * Extracts expression attribute names from a DynamoDB UPDATE expression.\n *\n * Example:\n * 'SET #size = :size, #count = :count' → { '#size': 'size', '#count': 'count' }\n *\n * ### Process flow:\n * 1. Remove the leading \"SET \" from the expression.\n * 2. Split the remaining string by commas to get individual assignments.\n * 3. For each assignment, split by '=' to isolate the attribute name.\n * 4. Trim whitespace and check if the attribute name starts with '#'.\n * 5. If it does, add an entry to the result object mapping the attribute name to its unprefixed version.\n * 6. Return the resulting record of expression attribute names.\n *\n * @param {string} expression - The DynamoDB UPDATE expression.\n * @returns {Record<string, string>} - A record of expression attribute names.\n */\nexport function extractExpAttributeNamesFromUpdateExp(expression: string): Record<string, string> {\n const result: Record<string, string> = {};\n\n // Remove leading \"SET \" (case-insensitive) and surrounding whitespace\n const body = expression.replace(/^\\s*SET\\s+/i, '').trim();\n if (!body) return result;\n\n // Split on commas between assignments\n const assignments = body.split(',');\n\n for (const assignment of assignments) {\n const leftSide = assignment.split('=')[0]?.trim();\n if (!leftSide || !leftSide.startsWith('#')) continue;\n\n result[leftSide] = leftSide.slice(1);\n }\n\n return result;\n}\n","export const RESERVED_KEYWORDS_SET = new Set([\n 'ABORT',\n 'ABSOLUTE',\n 'ACTION',\n 'ADD',\n 'AFTER',\n 'AGENT',\n 'AGGREGATE',\n 'ALL',\n 'ALLOCATE',\n 'ALTER',\n 'ANALYZE',\n 'AND',\n 'ANY',\n 'ARCHIVE',\n 'ARE',\n 'ARRAY',\n 'AS',\n 'ASC',\n 'ASCII',\n 'ASENSITIVE',\n 'ASSERTION',\n 'ASYMMETRIC',\n 'AT',\n 'ATOMIC',\n 'ATTACH',\n 'ATTRIBUTE',\n 'AUTH',\n 'AUTHORIZATION',\n 'AUTHORIZE',\n 'AUTO',\n 'AVG',\n 'BACK',\n 'BACKUP',\n 'BASE',\n 'BATCH',\n 'BEFORE',\n 'BEGIN',\n 'BETWEEN',\n 'BIGINT',\n 'BINARY',\n 'BIT',\n 'BLOB',\n 'BLOCK',\n 'BOOLEAN',\n 'BOTH',\n 'BREADTH',\n 'BUCKET',\n 'BULK',\n 'BY',\n 'BYTE',\n 'CALL',\n 'CALLED',\n 'CALLING',\n 'CAPACITY',\n 'CASCADE',\n 'CASCADED',\n 'CASE',\n 'CAST',\n 'CATALOG',\n 'CHAR',\n 'CHARACTER',\n 'CHECK',\n 'CLASS',\n 'CLOB',\n 'CLOSE',\n 'CLUSTER',\n 'CLUSTERED',\n 'CLUSTERING',\n 'CLUSTERS',\n 'COALESCE',\n 'COLLATE',\n 'COLLATION',\n 'COLLECTION',\n 'COLUMN',\n 'COLUMNS',\n 'COMBINE',\n 'COMMENT',\n 'COMMIT',\n 'COMPACT',\n 'COMPILE',\n 'COMPRESS',\n 'CONDITION',\n 'CONFLICT',\n 'CONNECT',\n 'CONNECTION',\n 'CONSISTENCY',\n 'CONSISTENT',\n 'CONSTRAINT',\n 'CONSTRUCTOR',\n 'CONSUMED',\n 'CONTINUE',\n 'CONVERT',\n 'COPY',\n 'CORRESPONDING',\n 'COUNT',\n 'COUNTER',\n 'CREATE',\n 'CROSS',\n 'CSV',\n 'CUBE',\n 'CURRENT',\n 'CURSOR',\n 'CYCLE',\n 'DATA',\n 'DATABASE',\n 'DATE',\n 'DATETIME',\n 'DAY',\n 'DEALLOCATE',\n 'DEC',\n 'DECIMAL',\n 'DECLARE',\n 'DEFAULT',\n 'DEFERRABLE',\n 'DEFERRED',\n 'DEFINE',\n 'DEFINED',\n 'DEFINITION',\n 'DELETE',\n 'DELIMITED',\n 'DEPTH',\n 'DEREF',\n 'DESC',\n 'DESCRIBE',\n 'DESCRIPTOR',\n 'DETACH',\n 'DETERMINISTIC',\n 'DIAGNOSTICS',\n 'DIRECTORIES',\n 'DISABLE',\n 'DISCONNECT',\n 'DISTINCT',\n 'DISTRIBUTE',\n 'DO',\n 'DOMAIN',\n 'DOUBLE',\n 'DROP',\n 'DUMP',\n 'DURATION',\n 'DYNAMIC',\n 'EACH',\n 'ELEMENT',\n 'ELSE',\n 'ELSEIF',\n 'EMPTY',\n 'ENABLE',\n 'END',\n 'EQUAL',\n 'EQUALS',\n 'ERROR',\n 'ESCAPE',\n 'ESCAPED',\n 'EVAL',\n 'EVALUATE',\n 'EXCEEDED',\n 'EXCEPT',\n 'EXCEPTIONS',\n 'EXCLUSIVE',\n 'EXEC',\n 'EXECUTE',\n 'EXISTS',\n 'EXIT',\n 'EXPLAIN',\n 'EXPLODE',\n 'EXPORT',\n 'EXPRESSION',\n 'EXTENDED',\n 'EXTERNAL',\n 'EXTRACT',\n 'FAIL',\n 'FALSE',\n 'FAMILY',\n 'FETCH',\n 'FIELDS',\n 'FILE',\n 'FILTER',\n 'FILTERING',\n 'FINAL',\n 'FINISH',\n 'FIRST',\n 'FIXED',\n 'FLATTERN',\n 'FLOAT',\n 'FOR',\n 'FORCE',\n 'FOREIGN',\n 'FORMAT',\n 'FORWARD',\n 'FOUND',\n 'FREE',\n 'FROM',\n 'FULL',\n 'FUNCTION',\n 'FUNCTIONS',\n 'GENERAL',\n 'GENERATE',\n 'GET',\n 'GLOB',\n 'GLOBAL',\n 'GO',\n 'GOTO',\n 'GRANT',\n 'GROUP',\n 'GROUPING',\n 'HANDLER',\n 'HASH',\n 'HAVE',\n 'HAVING',\n 'HEAP',\n 'HIDDEN',\n 'HOLD',\n 'HOUR',\n 'IDENTIFIED',\n 'IDENTITY',\n 'IF',\n 'IGNORE',\n 'IMMEDIATE',\n 'IMPORT',\n 'IN',\n 'INCLUDING',\n 'INCLUSIVE',\n 'INCREMENT',\n 'INDEX',\n 'INDEXED',\n 'INDEXES',\n 'INET',\n 'INF',\n 'INFINITE',\n 'INITIALLY',\n 'INLINE',\n 'INNER',\n 'INNTER',\n 'INPUT',\n 'INSENSITIVE',\n 'INSERT',\n 'INSTEAD',\n 'INT',\n 'INTEGER',\n 'INTERSECT',\n 'INTERVAL',\n 'INTO',\n 'INVALIDATE',\n 'IS',\n 'ISOLATION',\n 'ITEM',\n 'ITEMS',\n 'ITERATE',\n 'JOIN',\n 'KEY',\n 'KEYS',\n 'LAG',\n 'LANGUAGE',\n 'LARGE',\n 'LAST',\n 'LATERAL',\n 'LEAD',\n 'LEADING',\n 'LEAVE',\n 'LEFT',\n 'LEVEL',\n 'LIKE',\n 'LIMIT',\n 'LIMITED',\n 'LINES',\n 'LIST',\n 'LOAD',\n 'LOCAL',\n 'LOCALTIME',\n 'LOCALTIMESTAMP',\n 'LOCATION',\n 'LOCATOR',\n 'LOCK',\n 'LOCKS',\n 'LOG',\n 'LOGED',\n 'LONG',\n 'LOOP',\n 'LOW',\n 'MAP',\n 'MATCH',\n 'MATERIALIZED',\n 'MAX',\n 'MAXLEN',\n 'MEMBER',\n 'MERGE',\n 'METHOD',\n 'MIN',\n 'MINUS',\n 'MINUTE',\n 'MISSING',\n 'MOD',\n 'MODE',\n 'MODIFIES',\n 'MODIFY',\n 'MODULE',\n 'MONTH',\n 'MULTI',\n 'MULTISET',\n 'NAME',\n 'NAMES',\n 'NATIONAL',\n 'NATURAL',\n 'NCHAR',\n 'NCLOB',\n 'NEW',\n 'NEXT',\n 'NO',\n 'NONE',\n 'NOT',\n 'NULL',\n 'NULLIF',\n 'NUMBER',\n 'NUMERIC',\n 'OBJECT',\n 'OF',\n 'OFFLINE',\n 'OFFSET',\n 'OLD',\n 'ON',\n 'ONLINE',\n 'ONLY',\n 'OPAQUE',\n 'OPEN',\n 'OPERATOR',\n 'OPTION',\n 'OR',\n 'ORDER',\n 'ORDINALITY',\n 'OUT',\n 'OUTER',\n 'OUTPUT',\n 'OVER',\n 'OVERLAPS',\n 'OVERRIDE',\n 'PARTITION',\n 'PARTITIONED',\n 'PARTITIONS',\n 'PATH',\n 'PERCENT',\n 'PERCENTILE',\n 'PERMISSION',\n 'PERMISSIONS',\n 'PIPE',\n 'PIPELINED',\n 'PLAN',\n 'POOL',\n 'POSITION',\n 'PRECISION',\n 'PREPARE',\n 'PRESERVE',\n 'PRIMARY',\n 'PRIOR',\n 'PRIVATE',\n 'PRIVILEGES',\n 'PROCEDURE',\n 'PROCESSED',\n 'PROJECT',\n 'PROJECTION',\n 'PROPERTY',\n 'PROVISIONING',\n 'PUBLIC',\n 'PUT',\n 'QUERY',\n 'QUIT',\n 'QUORUM',\n 'RAISE',\n 'RANGE',\n 'RANK',\n 'RAW',\n 'READ',\n 'READS',\n 'REAL',\n 'REBUILD',\n 'RECORD',\n 'RECURSIVE',\n 'REDUCE',\n 'REF',\n 'REFERENCE',\n 'REFERENCES',\n 'REFERENCING',\n 'REGEXP',\n 'REGION',\n 'REINDEX',\n 'RELATIVE',\n 'RELEASE',\n 'REMA',\n 'REMAINDER',\n 'RENAME',\n 'REPEAT',\n 'REPLACE',\n 'REQUEST',\n 'RESET',\n 'RESIGNAL',\n 'RESOURCE',\n 'RESPONSE',\n 'RESTORE',\n 'RESTRICT',\n 'RESULT',\n 'RETURN',\n 'RETURNING',\n 'REVEAL',\n 'REVERSE',\n 'REVOKE',\n 'RIGHT',\n 'ROLE',\n 'ROLES',\n 'ROLLBACK',\n 'ROLLUP',\n 'ROUTINE',\n 'ROW',\n 'ROWS',\n 'RULE',\n 'RULES',\n 'SAMPLE',\n 'SATISFIES',\n 'SAVE',\n 'SAVEPOINT',\n 'SCAN',\n 'SCHEMA',\n 'SCOPE',\n 'SCROLL',\n 'SEARCH',\n 'SECOND',\n 'SECTION',\n 'SEGMENT',\n 'SEGMENTS',\n 'SELECT',\n 'SELF',\n 'SEMI',\n 'SENSITIVE',\n 'SEPARATE',\n 'SEQUENCE',\n 'SERIALIZABLE',\n 'SESSION',\n 'SET',\n 'SETS',\n 'SHARD',\n 'SHARE',\n 'SHARED',\n 'SHORT',\n 'SHOW',\n 'SIGNAL',\n 'SIMILAR',\n 'SIZE',\n 'SKEWED',\n 'SMALLINT',\n 'SNAPSHOT',\n 'SOME',\n 'SOURCE',\n 'SPACE',\n 'SPLIT',\n 'SQL',\n 'SQLCODE',\n 'SQLERROR',\n 'SQLEXCEPTION',\n 'SQLSTATE',\n 'SQLWARNING',\n 'START',\n 'STATE',\n 'STATIC',\n 'STATUS',\n 'STORAGE',\n 'STORE',\n 'STORED',\n 'STREAM',\n 'STRING',\n 'STRUCT',\n 'STYLE',\n 'SUB',\n 'SUBMULTISET',\n 'SUBPARTITION',\n 'SUBSTRING',\n 'SUBTYPE',\n 'SUM',\n 'SUPER',\n 'SYMMETRIC',\n 'SYNONYM',\n 'SYSTEM',\n 'TABLE',\n 'TABLESAMPLE',\n 'TEMP',\n 'TEMPORARY',\n 'TERMINATED',\n 'TEXT',\n 'THAN',\n 'THEN',\n 'THROUGHPUT',\n 'TIME',\n 'TIMESTAMP',\n 'TIMEZONE',\n 'TINYINT',\n 'TO',\n 'TOKEN',\n 'TOTAL',\n 'TOUCH',\n 'TRAILING',\n 'TRAN',\n 'TRANSACTION',\n 'TRANSFORM',\n 'TRANSLATE',\n 'TRANSLATION',\n 'TREAT',\n 'TRIGGER',\n 'TRIM',\n 'TRUE',\n 'TRUNCATE',\n 'TTL',\n 'TUPLE',\n 'TYPE',\n 'UNDER',\n 'UNDO',\n 'UNION',\n 'UNIQUE',\n 'UNIT',\n 'UNKNOWN',\n 'UNLOGGED',\n 'UNNEST',\n 'UNPROCESSED',\n 'UNSIGNED',\n 'UNTIL',\n 'UPDATE',\n 'UPPER',\n 'URL',\n 'USAGE',\n 'USE',\n 'USING',\n 'UUID',\n 'VACUUM',\n 'VALUE',\n 'VALUED',\n 'VALUES',\n 'VARCHAR',\n 'VARIABLE',\n 'VARIANCE',\n 'VARINT',\n 'VARYING',\n 'VIEW',\n 'VIEWS',\n 'VIRTUAL',\n 'VOID',\n 'WAIT',\n 'WHEN',\n 'WHENEVER',\n 'WHERE',\n 'WHILE',\n 'WINDOW',\n 'WITH',\n 'WITHIN',\n 'WITHOUT',\n 'WORK',\n 'WRAPPED',\n 'WRITE',\n 'YEAR',\n 'ZONE',\n]);\n\n// Build a single regex dynamically from RESERVED_KEYWORDS_SET\nconst UPDATE_RESERVED_REGEX = new RegExp(`\\\\b(?:${[...RESERVED_KEYWORDS_SET].join('|')})\\\\b(?=\\\\s*=)`, 'gi');\n\n/**\n * Replaces DynamoDB reserved keywords in an update expression with attribute aliases.\n *\n * @param updateExpression - The DynamoDB update expression.\n * @returns The update expression with reserved keywords replaced by attribute aliases.\n */\nexport function replaceReservedKeywordsFromUpdateExp(updateExpression: string): string {\n return updateExpression.replace(UPDATE_RESERVED_REGEX, (match) => `#${match}`);\n}\n\n/**\n * Replaces DynamoDB reserved keywords in a projection expression with attribute aliases.\n * Example:\n * size, color, status\n * → #size, color, #status\n */\nexport function replaceReservedKeywordsFromProjection(projection: string): string {\n return projection\n .split(',')\n .map((item) => {\n const trimmed = item.trim();\n if (!trimmed) return trimmed;\n\n return RESERVED_KEYWORDS_SET.has(trimmed.toUpperCase()) ? `#${trimmed}` : trimmed;\n })\n .join(', ');\n}\n","import { GetCommandInput } from '@aws-sdk/lib-dynamodb';\nimport { CustomGetCommandInput } from '../types/command.types';\nimport { extractExpAttributeNamesFromExpression, replaceReservedKeywordsFromProjection } from '../utils';\n\n/**\n * Build a DynamoDB {@link GetCommandInput} from a higher-level input shape.\n *\n * ### Process flow\n * 1. Extracts relevant fields from the input object.\n * 2. If `projectionExpression` is provided, it replaces reserved keywords and prepares the expression.\n * 3. Builds the initial `GetCommandInput` object with table name, key, and optional parameters.\n * 4. Combines `ExpressionAttributeNames` from:\n * - Extracted names from `ProjectionExpression`.\n * - Any additional names provided in `extraExpressionAttributeNames`.\n * 5. Adds `ExpressionAttributeNames` to the command if any are present.\n * 6. Returns the final `GetCommandInput` object.\n *\n * ### Notes\n * - If `projectionExpression` is provided, reserved keywords are replaced and\n * `ExpressionAttributeNames` are composed automatically from the projection.\n * - Any provided `expressionAttributeNames` are merged on top of the extracted ones.\n *\n * ### Contract\n * - Input: {@link CustomGetCommandInput} containing table name, key, and optional projection.\n * - Output: A fully-formed `GetCommandInput` safe to pass to the AWS SDK.\n * - Error: This function does not throw; let the caller handle AWS command errors.\n *\n * @param input - The higher-level input for building the GetCommand.\n * @returns The constructed {@link GetCommandInput}.\n */\n\nexport function buildGetCommandInput(input: CustomGetCommandInput): GetCommandInput {\n const {\n tableName: TableName, // The name of the DynamoDB table\n key: Key, // The key of the item to retrieve\n projectionExpression, // Optional: Specifies attributes to retrieve\n expressionAttributeNames: extraExpressionAttributesNames, // Additional expression attribute names\n consistentRead: ConsistentRead, // Optional: Specifies whether to use strongly consistent reads\n returnConsumedCapacity: ReturnConsumedCapacity, // Optional: Determines whether to return consumed capacity\n } = input;\n\n const ProjectionExpression = projectionExpression\n ? replaceReservedKeywordsFromProjection(projectionExpression)\n : undefined;\n\n const commandInput: GetCommandInput = {\n TableName,\n Key,\n ProjectionExpression,\n ConsistentRead,\n ReturnConsumedCapacity,\n };\n\n const expressionAttributeNames: Record<string, string> = {\n ...(ProjectionExpression ? extractExpAttributeNamesFromExpression(ProjectionExpression) : {}),\n ...(extraExpressionAttributesNames ?? {}),\n };\n\n if (Object.keys(expressionAttributeNames).length > 0) {\n commandInput.ExpressionAttributeNames = expressionAttributeNames;\n }\n\n return commandInput;\n}\n","import { PutCommandInput } from '@aws-sdk/lib-dynamodb';\nimport { CustomPutCommandInput } from '../types';\nimport { extractExpAttributeNamesFromExpression } from '../utils';\n\n/**\n * Build a DynamoDB {@link PutCommandInput} from a higher-level input shape.\n *\n * ### Process flow\n * 1. Extracts relevant fields from the input object.\n * 2. Builds the initial `PutCommandInput` object with table name, item, and optional parameters.\n * 3. If `conditionExpression` is provided, it extracts attribute names and merges them with any provided names.\n * 4. Adds `ExpressionAttributeNames` and `ExpressionAttributeValues` to the command if any are present.\n * 5. Returns the final `PutCommandInput` object.\n *\n * ### Notes\n * - If `conditionExpression` is provided, `ExpressionAttributeNames` are composed automatically from the condition.\n * - Any provided `expressionAttributeNames` are merged on top of the extracted ones.\n * - `expressionAttributeValues` are added directly if provided.\n *\n * ### Contract\n * - Input: {@link CustomPutCommandInput} containing table name, item, and optional parameters.\n * - Output: A fully-formed `PutCommandInput` safe to pass to the AWS SDK.\n * - Error: This function does not throw; let the caller handle AWS command errors.\n *\n * @param input - The higher-level input for building the PutCommand.\n * @returns The constructed {@link PutCommandInput}.\n */\nexport function buildPutCommandInput(input: CustomPutCommandInput): PutCommandInput {\n const {\n tableName,\n item,\n conditionExpression,\n expressionAttributeNames,\n expressionAttributeValues,\n returnValues = 'NONE',\n returnConsumedCapacity,\n returnItemCollectionMetrics,\n } = input;\n\n const commandInput: PutCommandInput = {\n TableName: tableName,\n Item: item as Record<string, unknown>,\n ConditionExpression: conditionExpression,\n ReturnValues: returnValues,\n ReturnConsumedCapacity: returnConsumedCapacity,\n ReturnItemCollectionMetrics: returnItemCollectionMetrics,\n };\n\n // Only do any name/values work if needed\n const hasCondition = !!conditionExpression;\n const hasProvidedNames = !!expressionAttributeNames && Object.keys(expressionAttributeNames).length > 0;\n\n if (hasCondition || hasProvidedNames) {\n const generatedNames = hasCondition ? extractExpAttributeNamesFromExpression(conditionExpression) : {};\n\n const mergedNames = hasProvidedNames ? { ...generatedNames, ...expressionAttributeNames } : generatedNames;\n\n if (Object.keys(mergedNames).length > 0) {\n commandInput.ExpressionAttributeNames = mergedNames;\n }\n }\n\n if (expressionAttributeValues && Object.keys(expressionAttributeValues).length > 0) {\n commandInput.ExpressionAttributeValues = expressionAttributeValues;\n }\n\n return commandInput;\n}\n","import { QueryCommandInput } from '@aws-sdk/lib-dynamodb';\nimport { CustomQueryCommandInput } from '../types';\nimport {\n createKeyConditionExpression,\n extractExpAttributeNamesFromExpression,\n replaceReservedKeywordsFromProjection,\n parseDynamoKeyValue,\n} from '../utils';\n\n/**\n * Build a DynamoDB {@link QueryCommandInput} from a structured input shape.\n *\n * ### Process flow\n * 1. Extracts relevant fields from the input object.\n * 2. Generates `KeyConditionExpression` using `generateKeyConditionExpression`. `generateKeyConditionExpression` constructs the key condition expression based on the provided sort key and its value.\n * 3. Normalizes `ProjectionExpression` to avoid reserved keywords and extracts attribute names.\n * 4. Combines all `ExpressionAttributeNames` from:\n * - Base key attributes (`pKeyProp`, `sKeyProp`).\n * - Extracted names from `ProjectionExpression`.\n * - Any additional names provided in `extraExpAttributeNames`.\n *\n *\n * ### Contract\n * - Input: {@link CustomQueryCommandInput} including `queryRequest` to drive key conditions.\n * - Output: A fully-formed `QueryCommandInput` safe to pass to the AWS SDK.\n * - Error: This function does not throw; let the caller handle AWS command errors.\n *\n * ### Notes\n * - `KeyConditionExpression` is generated from `queryRequest` via `generateKeyConditionExpression`.\n * - `ProjectionExpression` is normalized to avoid reserved keywords and names are extracted.\n * - `ExpressionAttributeNames` are combined from base, projection, and extras.\n * - `Pagination` (`ExclusiveStartKey`) is parsed from `lastEvaluatedKey` JSON when present.\n * - `ScanIndexForward` defaults to ascending; can be controlled by `sorting` or `scanIdxForward`.\n *\n * @param {CustomQueryCommandInput} input - The input parameters for the query command.\n * @returns {QueryCommandInput} - The constructed DynamoDB `QueryCommandInput` object.\n */\nexport function buildQueryCommandInput(input: CustomQueryCommandInput): QueryCommandInput {\n const { queryRequest } = input;\n const KeyConditionExpression = createKeyConditionExpression(queryRequest);\n\n const ProjectionExpression: string | undefined = input.projectionExpression\n ? replaceReservedKeywordsFromProjection(input.projectionExpression)\n : undefined;\n\n const ExpressionAttributeNames: Record<string, string> = {\n '#pk': queryRequest.pKeyProp,\n ...(queryRequest.sKeyProp && { '#sk': queryRequest.sKeyProp }),\n ...(ProjectionExpression && extractExpAttributeNamesFromExpression(ProjectionExpression)),\n ...(input.extraExpAttributeNames || {}),\n };\n\n const ExpressionAttributeValues: Record<string, unknown> = {\n ':pk': parseDynamoKeyValue(queryRequest.pKey, queryRequest.pKeyType),\n ...(queryRequest.sKey && {\n ':sk': parseDynamoKeyValue(queryRequest.sKey, queryRequest.sKeyType ?? `S`),\n }),\n ...(queryRequest.skValue2 && {\n ':skValue2': parseDynamoKeyValue(queryRequest.skValue2, queryRequest.sKeyType ?? `S`),\n }),\n ...(input.extraExpAttributeValues || {}),\n };\n\n const commandInput: QueryCommandInput = {\n TableName: input.tableName,\n IndexName: queryRequest.indexName,\n KeyConditionExpression,\n FilterExpression: input.filterExpression,\n ExpressionAttributeNames,\n ExpressionAttributeValues,\n ProjectionExpression,\n ScanIndexForward:\n queryRequest.sorting !== undefined ? queryRequest.sorting.toUpperCase() === 'ASC' : input.scanIndexForward,\n ReturnConsumedCapacity: input.returnConsumedCapacity,\n ExclusiveStartKey: queryRequest.lastEvaluatedKey,\n Limit: queryRequest.limit,\n };\n\n return commandInput;\n}\n","import type { UpdateCommandInput } from '@aws-sdk/lib-dynamodb';\nimport type { CustomUpdateCommandInput } from '../types';\nimport { extractExpAttributeNamesFromUpdateExp, replaceReservedKeywordsFromUpdateExp } from '../utils';\n\n/**\n * Builds a DynamoDB {@link UpdateCommandInput} from a higher-level input shape.\n *\n * ### Process flow:\n * 1. Extracts relevant fields from the input object.\n * 2. Merges `ExpressionAttributeNames` and `ExpressionAttributeValues` from:\n * - Provided attributes in the input.\n * - Additional attributes specified in `extraExpAttributeNames` and `extraExpAttributeValues`.\n * 3. If `updateExpression` is provided, it uses it directly after merging attributes.\n * 4. If `updateExpression` is not provided, it generates one from the `item` field.\n * 5. Replaces reserved keywords in the update expression with attribute aliases.\n * 6. Extracts attribute names from the final update expression and merges them.\n * 7. Constructs and returns the final `UpdateCommandInput`.\n *\n * ### Notes:\n * - If `updateExpression` is provided, it is used directly.\n * - If not, an update expression is generated from the `item` field.\n * - Reserved keywords in the update expression are replaced with attribute aliases.\n * - `ExpressionAttributeNames` and `ExpressionAttributeValues` are merged from multiple sources.\n *\n * ### Contract:\n * - Input: {@link CustomUpdateCommandInput} containing table name, key, and optional parameters.\n * - Output: A fully-formed `UpdateCommandInput` safe to pass to the AWS SDK.\n *\n * @param input - The higher-level input for building the UpdateCommand.\n * @returns The constructed {@link UpdateCommandInput}.\n */\nexport function buildUpdateCommandInput(input: CustomUpdateCommandInput): UpdateCommandInput {\n const commandInput: UpdateCommandInput = {\n TableName: input.tableName,\n Key: input.key,\n ConditionExpression: input.conditionExpression,\n ReturnValues: input.returnValues ?? 'NONE',\n ReturnConsumedCapacity: input.returnConsumedCapacity,\n ReturnItemCollectionMetrics: input.returnItemCollectionMetrics,\n };\n\n // These will hold the final merged names/values.\n const names: Record<string, string> = {};\n const values: Record<string, unknown> = {};\n\n // Merge provided ExpressionAttributeNames\n if (input.expressionAttributeNames) {\n for (const key in input.expressionAttributeNames) {\n names[key] = input.expressionAttributeNames[key];\n }\n }\n if (input.extraExpAttributeNames) {\n for (const key in input.extraExpAttributeNames) {\n names[key] = input.extraExpAttributeNames[key];\n }\n }\n\n // Merge provided ExpressionAttributeValues\n if (input.expressionAttributeValues) {\n for (const key in input.expressionAttributeValues) {\n values[key] = input.expressionAttributeValues[key];\n }\n }\n if (input.extraExpAttributeValues) {\n for (const key in input.extraExpAttributeValues) {\n values[key] = input.extraExpAttributeValues[key];\n }\n }\n\n let updateExpression = input.updateExpression;\n\n // ── Mode 1: explicit updateExpression ──────────────────────────────────────\n if (updateExpression) {\n if (Object.keys(names).length > 0) {\n commandInput.ExpressionAttributeNames = names;\n }\n if (Object.keys(values).length > 0) {\n commandInput.ExpressionAttributeValues = values;\n }\n commandInput.UpdateExpression = updateExpression;\n return commandInput;\n }\n\n // ── Mode 2: generated from `item` ─────────────────────────────────────────\n const item = input.item;\n\n if (!item || Object.keys(item).length === 0) {\n throw new Error('Either updateExpression or item with at least one field must be provided.');\n }\n\n const updateParts: string[] = [];\n const itemRecord = item as Record<string, unknown>;\n\n for (const field in itemRecord) {\n const value = itemRecord[field];\n\n let valueKey = `:${field}`;\n if (values[valueKey] !== undefined) {\n // Avoid collisions with existing placeholders from caller\n let counter = 1;\n let candidate: string;\n do {\n candidate = `:${field}_update_${counter++}`;\n } while (values[candidate] !== undefined);\n valueKey = candidate;\n }\n\n updateParts.push(`${field} = ${valueKey}`);\n values[valueKey] = value;\n }\n\n const rawExpression = `SET ${updateParts.join(', ')}`;\n updateExpression = replaceReservedKeywordsFromUpdateExp(rawExpression);\n\n // Auto-extract names from the final UpdateExpression.\n // Caller-provided names (in `names`) must win on conflicts\n const autoNames = extractExpAttributeNamesFromUpdateExp(updateExpression);\n for (const key in autoNames) {\n if (!(key in names)) {\n names[key] = autoNames[key];\n }\n }\n\n if (Object.keys(names).length > 0) {\n commandInput.ExpressionAttributeNames = names;\n }\n if (Object.keys(values).length > 0) {\n commandInput.ExpressionAttributeValues = values;\n }\n\n commandInput.UpdateExpression = updateExpression;\n\n return commandInput;\n}\n","import { z } from 'zod';\n\nexport const dynamoQueryRequestSch = z\n .object({\n pKey: z.string(),\n pKeyType: z.string(),\n pKeyProp: z.string(),\n sKey: z.string().optional(),\n sKeyType: z.string().optional(),\n sKeyProp: z.string().optional(),\n skValue2: z.string().optional(),\n skValue2Type: z.string().optional(),\n skComparator: z.string().optional(),\n indexName: z.string().optional(),\n limit: z.number().optional(),\n lastEvaluatedKey: z.record(z.string(), z.unknown()).optional(),\n sorting: z.string().optional(),\n })\n .superRefine((data, ctx) => {\n if (data.skComparator) {\n if (!data.sKey) {\n ctx.addIssue({\n path: ['sKey'],\n message: 'sKey is required when skComparator is present',\n code: 'invalid_type',\n expected: 'string',\n received: typeof data.sKey,\n });\n }\n if (!data.sKeyProp) {\n ctx.addIssue({\n path: ['sKeyProp'],\n message: 'sKeyProp is required when skComparator is present',\n code: 'invalid_type',\n expected: 'string',\n received: typeof data.sKeyProp,\n });\n }\n if (!data.sKeyType) {\n ctx.addIssue({\n path: ['sKeyType'],\n message: 'sKeyType is required when skComparator is present',\n code: 'invalid_type',\n expected: 'string',\n received: typeof data.sKeyType,\n });\n }\n }\n });\n\nexport type DynamoQueryRequest = z.infer<typeof dynamoQueryRequestSch>;\n","import { z } from 'zod';\nimport { dynamoQueryRequestSch } from './dynamo-query-request.types';\n\nconst returnConsumedCapacityOptionsSchema = z.enum(['INDEXES', 'TOTAL', 'NONE']);\nconst returnItemCollectionMetricsOptionsSchema = z.enum(['SIZE', 'NONE']);\n\nexport const customGetCommandInputSchema = z.object({\n tableName: z.string(),\n key: z.record(z.string(), z.unknown()),\n projectionExpression: z.string().optional(),\n expressionAttributeNames: z.record(z.string(), z.string()).optional(),\n consistentRead: z.boolean().optional(),\n returnConsumedCapacity: returnConsumedCapacityOptionsSchema.optional(),\n});\n\nexport type CustomGetCommandInput = z.infer<typeof customGetCommandInputSchema>;\n\nexport const customQueryCommandInputSchema = z.object({\n tableName: z.string(),\n queryRequest: dynamoQueryRequestSch,\n keyConditionExpression: z.string().optional(),\n filterExpression: z.string().optional(),\n expressionAttributeNames: z.record(z.string(), z.string()).optional(),\n expressionAttributeValues: z.record(z.string(), z.unknown()).optional(),\n extraExpAttributeNames: z.record(z.string(), z.string()).optional(),\n extraExpAttributeValues: z.record(z.string(), z.unknown()).optional(),\n projectionExpression: z.string().optional(),\n scanIndexForward: z.boolean().optional(),\n returnConsumedCapacity: returnConsumedCapacityOptionsSchema.optional(),\n});\n\nexport type CustomQueryCommandInput = z.infer<typeof customQueryCommandInputSchema>;\n\nexport const customPutCommandInputSchema = z.object({\n tableName: z.string(),\n item: z.record(z.string(), z.unknown()),\n conditionExpression: z.string().optional(),\n expressionAttributeNames: z.record(z.string(), z.string()).optional(),\n expressionAttributeValues: z.record(z.string(), z.unknown()).optional(),\n returnValues: z.enum(['NONE', 'ALL_OLD', 'UPDATED_OLD', 'ALL_NEW', 'UPDATED_NEW']).optional(),\n returnConsumedCapacity: returnConsumedCapacityOptionsSchema.optional(),\n returnItemCollectionMetrics: returnItemCollectionMetricsOptionsSchema.optional(),\n});\n\nexport type CustomPutCommandInput = z.infer<typeof customPutCommandInputSchema>;\n\nexport const customUpdateCommandInputSchema = z.object({\n tableName: z.string(),\n key: z.record(z.string(), z.unknown()),\n item: z.record(z.string(), z.unknown()).optional(),\n updateExpression: z.string().optional(),\n conditionExpression: z.string().optional(),\n expressionAttributeNames: z.record(z.string(), z.string()).optional(), // Overwrite ExpressionAttributeNames\n expressionAttributeValues: z.record(z.string(), z.unknown()).optional(), // Overwrite ExpressionAttributeValues\n extraExpAttributeNames: z.record(z.string(), z.string()).optional(), // Add ExpressionAttributeNames without overwriting existing ones\n extraExpAttributeValues: z.record(z.string(), z.unknown()).optional(), // Add ExpressionAttributeValues without overwriting existing ones\n returnValues: z.enum(['NONE', 'ALL_OLD', 'UPDATED_OLD', 'ALL_NEW', 'UPDATED_NEW']).optional(),\n returnConsumedCapacity: returnConsumedCapacityOptionsSchema.optional(),\n returnItemCollectionMetrics: returnItemCollectionMetricsOptionsSchema.optional(),\n});\n\nexport type CustomUpdateCommandInput = z.infer<typeof customUpdateCommandInputSchema>;\n"]}