@jspreddy/torq 0.1.31
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/LICENSE +21 -0
- package/README.md +146 -0
- package/dist/module.js +1149 -0
- package/dist/module.js.map +1 -0
- package/dist/types.d.ts +113 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +60 -0
- package/src/core/Query.ts +574 -0
- package/src/core/Structure.ts +57 -0
- package/src/core/dynamo_reserved_words.ts +583 -0
- package/src/index.ts +2 -0
- package/tsconfig.json +108 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":";;;;AEAA,qGAAqG;AAErG;;;;;CAKC,GACM,MAAM,4CAAW;IACpB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IA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","sources":["src/index.ts","src/core/Query.ts","src/core/dynamo_reserved_words.ts","src/core/Structure.ts"],"sourcesContent":["export { Query, DdbType, Operation } from './core/Query';\nexport { Index, Table } from './core/Structure';\n","import _ from 'lodash';\nimport { reserved } from './dynamo_reserved_words';\nimport assert from 'assert';\nimport { Index, Table } from './Structure';\n\n/**\n * Type of attributes accepted by dynamo db.\n */\nexport enum DdbType {\n String = 'S',\n StringSet = 'SS',\n Number = 'N',\n NumberSet = 'NS',\n Binary = 'B',\n BinarySet = 'BS',\n Boolean = 'BOOL',\n Null = 'NULL',\n List = 'L',\n Map = 'M',\n}\n\ntype DynamoValue = string | number | boolean;\n\ntype BetweenValues = {\n start: DynamoValue,\n end: DynamoValue,\n};\n\nexport enum Operation {\n Eq = '=',\n NotEq = '<>',\n Gt = '>',\n GtEq = '>=',\n Lt = '<',\n LtEq = '<=',\n}\n\ntype SizeValue = {\n val: DynamoValue,\n op: Operation,\n};\n\ntype Condition = {\n key: string;\n val?: DynamoValue | BetweenValues | DdbType | SizeValue;\n type: string;\n actualName?: string,\n};\n\ntype ProjectionExpressionObj = { ProjectionExpression: string | undefined };\ntype KeyConditionExpressionObj = { KeyConditionExpression: string | undefined };\ntype FilterExpressionObj = { FilterExpression: string | undefined };\ntype ExpressionAttributeValuesObj = { ExpressionAttributeValues: object | undefined };\ntype ExpressionAttributeNamesObj = { ExpressionAttributeNames: object | undefined };\n\ntype Replacements = {\n keys: Record<string, string>;\n vals: Record<string, DynamoValue>;\n};\n\ntype RawFilter = {\n condition: string;\n replacements: Replacements;\n} | undefined;\n\nexport class Query {\n static DEFAULT_LIMIT = 25;\n\n private _tableName: string;\n private _hashKey: string;\n private _rangeKey: string | undefined;\n\n private _mode: 'select' | 'count' | 'scan' | undefined;\n\n private _selections: string[];\n private _keys: Array<Condition>;\n private _filters: Array<Condition>;\n private _rawFilters: Array<RawFilter>;\n\n private _index: Index | undefined;\n private _scanForward: boolean | undefined;\n private _limit: number = Query.DEFAULT_LIMIT;\n private _count: boolean = false;\n private _startAfter: string | number | object | undefined;\n private _consumedCapacity: string | undefined;\n\n get state() {\n return {\n tableName: this._tableName,\n hashKey: this._hashKey,\n rangeKey: this._rangeKey,\n\n mode: this._mode,\n\n selections: this._selections,\n keys: this._keys,\n filters: this._filters,\n\n index: this._index,\n scanForward: this._scanForward,\n limit: this._limit,\n count: this._count,\n startAfter: this._startAfter,\n consumedCapacity: this._consumedCapacity,\n };\n }\n\n constructor(table: Table) {\n this._tableName = table.name;\n this._hashKey = table.hashKey;\n this._rangeKey = table.rangeKey;\n\n // initialize here so that each query obj has its own filter list.\n this._filters = [];\n this._keys = [];\n this._selections = [];\n this._rawFilters = [];\n }\n\n select(cols: string[]) {\n throwIfModeExists(this._mode);\n this._selections = cols;\n this._mode = 'select';\n return this;\n }\n\n scan(cols: string[]) {\n throwIfModeExists(this._mode);\n this._selections = cols;\n this._mode = 'scan';\n return this;\n }\n\n count() {\n throwIfModeExists(this._mode);\n this._count = true;\n this._mode = 'count';\n return this;\n }\n\n get where() {\n assert(this._mode !== 'scan', 'Query.where: Cannot use \"where\" clause with scan(), use \"filter\" instead.');\n\n const pushRangeKey = (val: Condition['val'], type: string) => {\n if (_.isNil(this._index)) {\n assert(\n _.isString(this._rangeKey) && _.size(this._rangeKey) > 0,\n 'Query.where.range: Table does not have a rangeKey',\n );\n this._keys.push({ key: this._rangeKey, val: val, type: type });\n return;\n }\n assert(\n _.isString(this._index.rangeKey) && _.size(this._index.rangeKey) > 0,\n 'Query.where.range: Provided Index does not have a rangeKey',\n );\n this._keys.push({ key: this._index.rangeKey, val: val, type: type });\n };\n const whereSelectors = {\n hash: {\n eq: (val: string): Query => {\n if (_.isNil(this._index)) {\n this._keys.push({ key: this._hashKey, val: val, type: 'hash-eq' });\n return this;\n }\n assert(\n _.isString(this._index?.hashKey) && _.size(this._index.hashKey) > 0,\n 'Query.where.hash: Provided Index does not have a hashKey',\n );\n this._keys.push({ key: this._index.hashKey, val: val, type: 'hash-eq' });\n return this;\n }\n },\n range: {\n eq: (val: DynamoValue): Query => {\n pushRangeKey(val, 'eq');\n return this;\n },\n beginsWith: (val: DynamoValue): Query => {\n pushRangeKey(val, 'begins_with');\n return this;\n },\n gt: (val: DynamoValue): Query => {\n pushRangeKey(val, 'gt');\n return this;\n },\n gtEq: (val: DynamoValue): Query => {\n pushRangeKey(val, 'gtEq');\n return this;\n },\n lt: (val: DynamoValue): Query => {\n pushRangeKey(val, 'lt');\n return this;\n },\n ltEq: (val: DynamoValue): Query => {\n pushRangeKey(val, 'ltEq');\n return this;\n },\n between: (start: DynamoValue, end: DynamoValue): Query => {\n pushRangeKey({ start, end }, 'between');\n return this;\n },\n },\n };\n return whereSelectors;\n }\n\n get filter() {\n const filterConditions = {\n eq: (key: string, val: DynamoValue): Query => {\n this._filters.push({ key, val, type: 'eq' });\n return this;\n },\n notEq: (key: string, val: DynamoValue): Query => {\n this._filters.push({ key, val, type: 'notEq' });\n return this;\n },\n gt: (key: string, val: DynamoValue): Query => {\n this._filters.push({ key, val, type: 'gt' });\n return this;\n },\n gtEq: (key: string, val: DynamoValue): Query => {\n this._filters.push({ key, val, type: 'gtEq' });\n return this;\n },\n lt: (key: string, val: DynamoValue): Query => {\n this._filters.push({ key, val, type: 'lt' });\n return this;\n },\n ltEq: (key: string, val: DynamoValue): Query => {\n this._filters.push({ key, val, type: 'ltEq' });\n return this;\n },\n beginsWith: (key: string, val: DynamoValue): Query => {\n this._filters.push({ key, val, type: 'begins_with' });\n return this;\n },\n attributeExists: (key: string): Query => {\n this._filters.push({ key, type: 'attribute_exists' });\n return this;\n },\n attributeNotExists: (key: string): Query => {\n this._filters.push({ key, type: 'attribute_not_exists' });\n return this;\n },\n attributeType: (key: string, val: DdbType): Query => {\n this._filters.push({ key, val, type: 'attribute_type' });\n return this;\n },\n contains: (key: string, val: DynamoValue): Query => {\n this._filters.push({ key, val, type: 'contains' });\n return this;\n },\n size: (key: string, op: Operation, val: DynamoValue): Query => {\n this._filters.push({\n key,\n val: {\n val,\n op,\n },\n type: 'size',\n });\n return this;\n },\n between: (key: string, start: DynamoValue, end: DynamoValue): Query => {\n this._filters.push({ key, val: { start, end }, type: 'between' });\n return this;\n },\n raw: (filterCondition: string, replacements: Replacements): Query => {\n this._rawFilters.push({\n condition: filterCondition,\n replacements,\n });\n return this;\n },\n };\n return filterConditions;\n }\n\n using(index: Index, scanForward: boolean | undefined = undefined): Query {\n assert(\n typeof scanForward === 'boolean' || _.isNil(scanForward),\n 'Query.using(): scanForward must be a boolean or undefined',\n );\n\n this._index = index;\n this._scanForward = scanForward;\n return this;\n }\n\n limit(l: number): Query {\n this._limit = l ?? Query.DEFAULT_LIMIT;\n return this;\n }\n\n startAfter(lastEvaluatedKey: string | number | object | undefined) {\n this._startAfter = lastEvaluatedKey;\n return this;\n }\n\n withConsumedCapacity(capacityType: 'INDEXES' | 'TOTAL' | 'NONE' = 'TOTAL') {\n assert(\n capacityType === 'INDEXES' || capacityType === 'TOTAL' || capacityType === 'NONE',\n 'Query.withConsumedCapacity(): capacity type must be INDEXES, TOTAL, or NONE',\n );\n if (capacityType === 'NONE') {\n return this;\n }\n this._consumedCapacity = capacityType;\n return this;\n }\n\n toDynamo(): object {\n const [keyCond, keyAttribVals, keyAttribNames] = formatKeyCondition(this._keys);\n const [filterCond, filterAttribVals, filterAttribNames] = formatFilterCondition(this._filters, this._rawFilters);\n const [projection, projectionAttribNames] = formatProjectionExpression(this._selections);\n\n return _.omitBy({\n TableName: this._tableName,\n Select: this._count ? 'COUNT' : undefined,\n ...projection,\n ...keyCond,\n ...filterCond,\n ..._.merge(keyAttribNames, filterAttribNames, projectionAttribNames),\n ..._.merge(keyAttribVals, filterAttribVals),\n Limit: this._limit,\n IndexName: this._index?.name,\n ScanIndexForward: this._scanForward,\n ExclusiveStartKey: this._startAfter,\n ReturnConsumedCapacity: this._consumedCapacity,\n }, _.isNil);\n }\n}\n\nconst isReserved = (name: string): boolean => {\n // Does the upper cased \"name\" exists in the reserved words list.\n return _.indexOf(reserved, _.toUpper(name)) != -1;\n}\n\nconst replaceReservedNames = (conditions: Array<Condition>): Array<Condition> => {\n return _.map(conditions, (cond) => {\n\n if (isReserved(cond.key)) {\n return {\n ...cond,\n key: `#${cond.key}`,\n actualName: cond.key,\n };\n }\n\n if (_.startsWith(cond.key, \"_\")) {\n return {\n ...cond,\n key: `#${cond.key}`,\n actualName: cond.key,\n };\n }\n\n return cond;\n });\n};\n\nconst formatKeyCondition = (conditions: Array<Condition>): [KeyConditionExpressionObj, ExpressionAttributeValuesObj, ExpressionAttributeNamesObj] => {\n const updatedConditions = replaceReservedNames(conditions);\n\n const conditionParts: string[] = [];\n const attribVals = {};\n const attribNames = {};\n\n _.each(updatedConditions, (cond) => {\n const { key, val, type, actualName } = cond;\n const valRef = `:${_.trim(key, '#')}`;\n\n switch (type) {\n case \"hash-eq\":\n case \"eq\":\n conditionParts.push(`${key} = ${valRef}`);\n _.set(attribVals, valRef, val);\n break;\n\n case \"gt\":\n conditionParts.push(`${key} > ${valRef}`);\n _.set(attribVals, valRef, val);\n break;\n\n case \"gtEq\":\n conditionParts.push(`${key} >= ${valRef}`);\n _.set(attribVals, valRef, val);\n break;\n\n case \"lt\":\n conditionParts.push(`${key} < ${valRef}`);\n _.set(attribVals, valRef, val);\n break;\n\n case \"ltEq\":\n conditionParts.push(`${key} <= ${valRef}`);\n _.set(attribVals, valRef, val);\n break;\n\n case \"between\": {\n const valRefStart = `${valRef}_start`;\n const valRefEnd = `${valRef}_end`;\n const between = val as BetweenValues;\n conditionParts.push(`${key} BETWEEN ${valRefStart} AND ${valRefEnd}`);\n _.set(attribVals, valRefStart, between.start);\n _.set(attribVals, valRefEnd, between.end);\n break;\n }\n\n case \"begins_with\":\n conditionParts.push(`begins_with(${key}, ${valRef})`);\n _.set(attribVals, valRef, val);\n break;\n }\n\n if (actualName) {\n _.set(attribNames, key, actualName);\n }\n });\n\n return [\n { KeyConditionExpression: _.isEmpty(conditionParts) ? undefined : _.join(conditionParts, \" and \") },\n { ExpressionAttributeValues: _.isEmpty(attribVals) ? undefined : attribVals },\n { ExpressionAttributeNames: _.isEmpty(attribNames) ? undefined : attribNames },\n ];\n};\n\nconst formatFilterCondition = (filters: Array<Condition>, rawFilters: Array<RawFilter>): [FilterExpressionObj, ExpressionAttributeValuesObj, ExpressionAttributeNamesObj] => {\n const updatedFilters = replaceReservedNames(filters);\n\n const filterParts: string[] = [];\n const attribVals = {};\n const attribNames = {};\n const usedValRefs = new Set<string>();\n\n _.each(updatedFilters, f => {\n let valRef = `:${_.trim(f.key, '#')}`;\n // Add numeric suffix if valRef is already used\n if (usedValRefs.has(valRef)) {\n let counter = 1;\n while (usedValRefs.has(`${valRef}_${counter}`)) {\n counter++;\n }\n valRef = `${valRef}_${counter}`;\n }\n usedValRefs.add(valRef);\n\n switch (f.type) {\n case 'eq':\n _.set(attribVals, valRef, f.val);\n filterParts.push(`${f.key} = ${valRef}`);\n break;\n\n case 'notEq':\n _.set(attribVals, valRef, f.val);\n filterParts.push(`${f.key} <> ${valRef}`);\n break;\n\n case 'gt':\n _.set(attribVals, valRef, f.val);\n filterParts.push(`${f.key} > ${valRef}`);\n break;\n\n case 'gtEq':\n _.set(attribVals, valRef, f.val);\n filterParts.push(`${f.key} >= ${valRef}`);\n break;\n\n case 'lt':\n _.set(attribVals, valRef, f.val);\n filterParts.push(`${f.key} < ${valRef}`);\n break;\n\n case 'ltEq':\n _.set(attribVals, valRef, f.val);\n filterParts.push(`${f.key} <= ${valRef}`);\n break;\n\n case 'begins_with':\n _.set(attribVals, valRef, f.val);\n filterParts.push(`begins_with(${f.key}, ${valRef})`);\n break;\n\n case 'attribute_exists':\n _.set(attribVals, valRef, f.val);\n filterParts.push(`attribute_exists(${f.key})`);\n break;\n\n case 'attribute_not_exists':\n _.set(attribVals, valRef, f.val);\n filterParts.push(`attribute_not_exists(${f.key})`);\n break;\n\n case 'attribute_type':\n _.set(attribVals, valRef, f.val);\n filterParts.push(`attribute_type(${f.key}, ${valRef})`);\n break;\n\n case 'contains':\n _.set(attribVals, valRef, f.val);\n filterParts.push(`contains(${f.key}, ${valRef})`);\n break;\n\n case 'size': {\n const sizeVal = f.val as SizeValue;\n const newValRef = `:size_${_.trim(valRef, ':')}`;\n _.set(attribVals, newValRef, sizeVal.val);\n filterParts.push(`size(${f.key}) ${sizeVal.op} ${newValRef}`);\n break;\n }\n\n case 'between': {\n const valRefStart = `${valRef}_start`;\n const valRefEnd = `${valRef}_end`;\n const between = f.val as BetweenValues;\n filterParts.push(`${f.key} BETWEEN ${valRefStart} AND ${valRefEnd}`);\n _.set(attribVals, valRefStart, between.start);\n _.set(attribVals, valRefEnd, between.end);\n break;\n }\n }\n\n if (f.actualName) {\n _.set(attribNames, f.key, f.actualName);\n }\n });\n\n let filterExp = _.join(filterParts, ' and ');\n\n if (rawFilters.length > 0) {\n const rawFilterCondition = _.chain(rawFilters).map(f => f ? `(${f.condition})` : undefined).compact().join(' and ').value();\n if (_.isEmpty(filterExp)) {\n filterExp = rawFilterCondition;\n }\n else {\n filterExp = _.join([filterExp, rawFilterCondition], ' and ');\n }\n _.merge(attribVals, _.chain(rawFilters).map(f => f?.replacements.vals).compact().reduce(_.merge, {}).value());\n _.merge(attribNames, _.chain(rawFilters).map(f => f?.replacements.keys).compact().reduce(_.merge, {}).value());\n }\n\n return [\n { FilterExpression: _.isEmpty(filterExp) ? undefined : filterExp },\n { ExpressionAttributeValues: _.isEmpty(attribVals) ? undefined : attribVals },\n { ExpressionAttributeNames: _.isEmpty(attribNames) ? undefined : attribNames },\n ];\n};\n\nconst formatProjectionExpression = (proj: Array<string>): [ProjectionExpressionObj, ExpressionAttributeNamesObj] => {\n const attribNames = {};\n\n const projection = _.map(proj, (col) => {\n const attribRef = `#${_.trim(col)}`;\n if (isReserved(col)) {\n _.set(attribNames, attribRef, col);\n return attribRef;\n }\n if (_.startsWith(col, \"_\")) {\n _.set(attribNames, attribRef, col);\n return attribRef;\n }\n return col;\n });\n\n return [\n { ProjectionExpression: _.isEmpty(projection) ? undefined : _.join(projection, \", \") },\n { ExpressionAttributeNames: _.isEmpty(attribNames) ? undefined : attribNames },\n ];\n};\n\nfunction throwIfModeExists(mode: string | undefined) {\n assert(_.isEmpty(mode), 'Query: Cannot use more than one mode (select, count, scan) at the same time.');\n}\n","// picked up from https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html\n\n/**\n * These words are reserved in dynamodb and can not be used as part of expressions.\n * If we need to use these words, then we will have to use expression attribute names concept.\n *\n * CASE INSENSITIVE\n */\nexport const reserved = [\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 'CONSTRAINTS',\n 'CONSTRUCTOR',\n 'CONSUMED',\n 'CONTINUE',\n 'CONVERT',\n 'COPY',\n 'CORRESPONDING',\n 'COUNT',\n 'COUNTER',\n 'CREATE',\n 'CROSS',\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 'EXCEPTION',\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 'GREATER',\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 'INCREMENTAL',\n 'INDEX',\n 'INDEXED',\n 'INDEXES',\n 'INDICATOR',\n 'INFINITE',\n 'INITIALLY',\n 'INLINE',\n 'INNER',\n 'INNTER',\n 'INOUT',\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 'LENGTH',\n 'LESS',\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 'LOWER',\n 'MAP',\n 'MATCH',\n 'MATERIALIZED',\n 'MAX',\n 'MAXLEN',\n 'MEMBER',\n 'MERGE',\n 'METHOD',\n 'METRICS',\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 'OTHER',\n 'OTHERS',\n 'OUT',\n 'OUTER',\n 'OUTPUT',\n 'OVER',\n 'OVERLAPS',\n 'OVERRIDE',\n 'OWNER',\n 'PAD',\n 'PARALLEL',\n 'PARAMETER',\n 'PARAMETERS',\n 'PARTIAL',\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 'RANDOM',\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 '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 'RETURNS',\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 'SPACES',\n 'SPARSE',\n 'SPECIFIC',\n 'SPECIFICTYPE',\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 '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 'USER',\n 'USERS',\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","import _ from 'lodash';\nimport assert from 'assert';\n\nexport class Table {\n private _name: string;\n private _hashKey: string;\n private _rangeKey: string | undefined;\n\n constructor(name: string, hashKey: string, rangeKey: string | undefined = undefined) {\n assert(_.isString(name) && _.size(name) > 0, 'Table.constructor(): name must be provided');\n assert(_.isString(hashKey) && _.size(hashKey) > 0, 'Table.constructor(): hashKey must be provided');\n assert(_.isNil(rangeKey) || (_.isString(rangeKey) && _.size(rangeKey) > 0), 'Table.constructor(): rangeKey is invalid');\n\n this._name = name;\n this._hashKey = hashKey;\n this._rangeKey = rangeKey;\n }\n\n get name() {\n return this._name;\n }\n\n get hashKey() {\n return this._hashKey;\n }\n\n get rangeKey() {\n return this._rangeKey;\n }\n}\n\nexport class Index {\n private _name: string;\n private _hashKey: string;\n private _rangeKey: string | undefined;\n\n constructor(name: string, hashKey: string, rangeKey: string | undefined) {\n assert(_.isString(name) && _.size(name) > 0, 'Index.constructor(): name must be provided');\n assert(_.isString(hashKey) && _.size(hashKey) > 0, 'Index.constructor(): hashKey must be provided');\n\n this._name = name;\n this._hashKey = hashKey;\n this._rangeKey = rangeKey;\n }\n\n get name() {\n return this._name;\n }\n\n get hashKey() {\n return this._hashKey;\n }\n\n get rangeKey() {\n return this._rangeKey;\n }\n}\n"],"names":[],"version":3,"file":"module.js.map","sourceRoot":"../"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
export class Table {
|
|
2
|
+
constructor(name: string, hashKey: string, rangeKey?: string | undefined);
|
|
3
|
+
get name(): string;
|
|
4
|
+
get hashKey(): string;
|
|
5
|
+
get rangeKey(): string | undefined;
|
|
6
|
+
}
|
|
7
|
+
export class Index {
|
|
8
|
+
constructor(name: string, hashKey: string, rangeKey: string | undefined);
|
|
9
|
+
get name(): string;
|
|
10
|
+
get hashKey(): string;
|
|
11
|
+
get rangeKey(): string | undefined;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Type of attributes accepted by dynamo db.
|
|
15
|
+
*/
|
|
16
|
+
export enum DdbType {
|
|
17
|
+
String = "S",
|
|
18
|
+
StringSet = "SS",
|
|
19
|
+
Number = "N",
|
|
20
|
+
NumberSet = "NS",
|
|
21
|
+
Binary = "B",
|
|
22
|
+
BinarySet = "BS",
|
|
23
|
+
Boolean = "BOOL",
|
|
24
|
+
Null = "NULL",
|
|
25
|
+
List = "L",
|
|
26
|
+
Map = "M"
|
|
27
|
+
}
|
|
28
|
+
type DynamoValue = string | number | boolean;
|
|
29
|
+
type BetweenValues = {
|
|
30
|
+
start: DynamoValue;
|
|
31
|
+
end: DynamoValue;
|
|
32
|
+
};
|
|
33
|
+
export enum Operation {
|
|
34
|
+
Eq = "=",
|
|
35
|
+
NotEq = "<>",
|
|
36
|
+
Gt = ">",
|
|
37
|
+
GtEq = ">=",
|
|
38
|
+
Lt = "<",
|
|
39
|
+
LtEq = "<="
|
|
40
|
+
}
|
|
41
|
+
type SizeValue = {
|
|
42
|
+
val: DynamoValue;
|
|
43
|
+
op: Operation;
|
|
44
|
+
};
|
|
45
|
+
type Condition = {
|
|
46
|
+
key: string;
|
|
47
|
+
val?: DynamoValue | BetweenValues | DdbType | SizeValue;
|
|
48
|
+
type: string;
|
|
49
|
+
actualName?: string;
|
|
50
|
+
};
|
|
51
|
+
type Replacements = {
|
|
52
|
+
keys: Record<string, string>;
|
|
53
|
+
vals: Record<string, DynamoValue>;
|
|
54
|
+
};
|
|
55
|
+
export class Query {
|
|
56
|
+
static DEFAULT_LIMIT: number;
|
|
57
|
+
get state(): {
|
|
58
|
+
tableName: string;
|
|
59
|
+
hashKey: string;
|
|
60
|
+
rangeKey: string | undefined;
|
|
61
|
+
mode: "select" | "count" | "scan" | undefined;
|
|
62
|
+
selections: string[];
|
|
63
|
+
keys: Condition[];
|
|
64
|
+
filters: Condition[];
|
|
65
|
+
index: Index | undefined;
|
|
66
|
+
scanForward: boolean | undefined;
|
|
67
|
+
limit: number;
|
|
68
|
+
count: boolean;
|
|
69
|
+
startAfter: string | number | object | undefined;
|
|
70
|
+
consumedCapacity: string | undefined;
|
|
71
|
+
};
|
|
72
|
+
constructor(table: Table);
|
|
73
|
+
select(cols: string[]): this;
|
|
74
|
+
scan(cols: string[]): this;
|
|
75
|
+
count(): this;
|
|
76
|
+
get where(): {
|
|
77
|
+
hash: {
|
|
78
|
+
eq: (val: string) => Query;
|
|
79
|
+
};
|
|
80
|
+
range: {
|
|
81
|
+
eq: (val: DynamoValue) => Query;
|
|
82
|
+
beginsWith: (val: DynamoValue) => Query;
|
|
83
|
+
gt: (val: DynamoValue) => Query;
|
|
84
|
+
gtEq: (val: DynamoValue) => Query;
|
|
85
|
+
lt: (val: DynamoValue) => Query;
|
|
86
|
+
ltEq: (val: DynamoValue) => Query;
|
|
87
|
+
between: (start: DynamoValue, end: DynamoValue) => Query;
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
get filter(): {
|
|
91
|
+
eq: (key: string, val: DynamoValue) => Query;
|
|
92
|
+
notEq: (key: string, val: DynamoValue) => Query;
|
|
93
|
+
gt: (key: string, val: DynamoValue) => Query;
|
|
94
|
+
gtEq: (key: string, val: DynamoValue) => Query;
|
|
95
|
+
lt: (key: string, val: DynamoValue) => Query;
|
|
96
|
+
ltEq: (key: string, val: DynamoValue) => Query;
|
|
97
|
+
beginsWith: (key: string, val: DynamoValue) => Query;
|
|
98
|
+
attributeExists: (key: string) => Query;
|
|
99
|
+
attributeNotExists: (key: string) => Query;
|
|
100
|
+
attributeType: (key: string, val: DdbType) => Query;
|
|
101
|
+
contains: (key: string, val: DynamoValue) => Query;
|
|
102
|
+
size: (key: string, op: Operation, val: DynamoValue) => Query;
|
|
103
|
+
between: (key: string, start: DynamoValue, end: DynamoValue) => Query;
|
|
104
|
+
raw: (filterCondition: string, replacements: Replacements) => Query;
|
|
105
|
+
};
|
|
106
|
+
using(index: Index, scanForward?: boolean | undefined): Query;
|
|
107
|
+
limit(l: number): Query;
|
|
108
|
+
startAfter(lastEvaluatedKey: string | number | object | undefined): this;
|
|
109
|
+
withConsumedCapacity(capacityType?: 'INDEXES' | 'TOTAL' | 'NONE'): this;
|
|
110
|
+
toDynamo(): object;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mappings":"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","sources":["src/src/core/dynamo_reserved_words.ts","src/src/core/Structure.ts","src/src/core/Query.ts","src/src/index.ts","src/index.ts"],"sourcesContent":[null,null,null,null,"export { Query, DdbType, Operation } from './core/Query';\nexport { Index, Table } from './core/Structure';\n"],"names":[],"version":3,"file":"types.d.ts.map","sourceRoot":"../"}
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@jspreddy/torq",
|
|
3
|
+
"version": "0.1.31",
|
|
4
|
+
"description": "SQL Like query builder for dynamodb.",
|
|
5
|
+
"author": "Sai Phaninder Reddy Jonnala",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"source": "src/index.ts",
|
|
8
|
+
"module": "dist/module.js",
|
|
9
|
+
"types": "dist/types.d.ts",
|
|
10
|
+
"engines": {
|
|
11
|
+
"node": ">= 16"
|
|
12
|
+
},
|
|
13
|
+
"scripts": {
|
|
14
|
+
"ddb-local:cleanup": "npx kill-port 8000",
|
|
15
|
+
"test": "jest /tests/",
|
|
16
|
+
"test:all": "npm run ddb-local:cleanup && jest /tests/",
|
|
17
|
+
"test:watch": "npm run ddb-local:cleanup && jest --watch /tests/",
|
|
18
|
+
"test:int": "npm run ddb-local:cleanup && jest /tests/integration-tests/",
|
|
19
|
+
"test:int:watch": "npm run ddb-local:cleanup && jest --watch /tests/integration-tests/",
|
|
20
|
+
"test:unit": "jest /tests/unit-tests/",
|
|
21
|
+
"test:unit:watch": "jest --watch /tests/unit-tests/",
|
|
22
|
+
"test:cover": "jest --coverage /tests/",
|
|
23
|
+
"test:unit:cover": "jest --coverage /tests/unit-tests/",
|
|
24
|
+
"test:int:cover": "jest --coverage /tests/integration-tests/",
|
|
25
|
+
"open:cover": "open coverage/lcov-report/index.html",
|
|
26
|
+
"lint": "npx eslint .",
|
|
27
|
+
"lint:fix": "npx eslint --fix .",
|
|
28
|
+
"watch": "parcel watch",
|
|
29
|
+
"build": "npm run clean && parcel build",
|
|
30
|
+
"clean": "rm -rf ./dist && rm -rf ./.parcel-cache",
|
|
31
|
+
"check": "npm run lint; npm run test:all; npm run build;"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@aws-sdk/client-dynamodb": "^3.678.0",
|
|
35
|
+
"@aws-sdk/lib-dynamodb": "^3.678.0",
|
|
36
|
+
"@babel/core": "^7.24.9",
|
|
37
|
+
"@babel/preset-env": "^7.25.0",
|
|
38
|
+
"@babel/preset-typescript": "^7.24.7",
|
|
39
|
+
"@eslint/js": "^9.8.0",
|
|
40
|
+
"@parcel/packager-ts": "^2.12.0",
|
|
41
|
+
"@parcel/transformer-typescript-types": "^2.12.0",
|
|
42
|
+
"@shelf/jest-dynamodb": "^3.5.0",
|
|
43
|
+
"@types/eslint__js": "^8.42.3",
|
|
44
|
+
"@types/jest": "^29.5.12",
|
|
45
|
+
"@types/lodash": "^4.17.7",
|
|
46
|
+
"@types/node": "^22.7.7",
|
|
47
|
+
"babel-jest": "^29.7.0",
|
|
48
|
+
"bluebird": "^3.7.2",
|
|
49
|
+
"eslint": "^8.57.0",
|
|
50
|
+
"eslint-plugin-jest": "^28.6.0",
|
|
51
|
+
"jest": "^29.7.0",
|
|
52
|
+
"kill-port": "^2.0.1",
|
|
53
|
+
"parcel": "^2.12.0",
|
|
54
|
+
"typescript": "^5.5.4",
|
|
55
|
+
"typescript-eslint": "^7.17.0"
|
|
56
|
+
},
|
|
57
|
+
"peerDependencies": {
|
|
58
|
+
"lodash": "^4.17.21"
|
|
59
|
+
}
|
|
60
|
+
}
|