@commercelayer/sdk
Version:
Commerce Layer Javascript SDK
1 lines • 7.95 kB
Source Map (JSON)
{"version":3,"sources":["../src/query.ts"],"names":["debug_default","SdkError"],"mappings":";;;;;;AAOA,IAAM,KAAA,GAAQA,gCAAM,OAAO,CAAA;AAG3B,IAAM,YAAA,GAAe,CAAC,MAAA,EAAQ,MAAA,EAAQ,OAAO,iBAAiB,CAAA;AAC9D,IAAM,aAAA,GAAgB,CAAC,MAAA,KAA4B;AAClD,EAAA,OAAO,aAAa,IAAA,CAAK,CAAA,CAAA,KAAK,MAAA,CAAO,QAAA,CAAS,CAAC,CAAC,CAAA;AACjD,CAAA;AAEA,IAAM,aAAA,GAAgB,CAAC,QAAQ,CAAA;AAC/B,IAAM,cAAA,GAAiB,CAAC,MAAA,KAA4B;AACnD,EAAA,OAAO,cAAc,IAAA,CAAK,CAAA,CAAA,KAAK,MAAA,CAAO,QAAA,CAAS,CAAC,CAAC,CAAA;AAClD,CAAA;AAyCA,IAAM,YAAA,GAAe,CAAqB,MAAA,KAA8C;AACvF,EAAA,OAAO,WAAW,MAAA,CAAO,OAAA,IAAW,OAAO,UAAA,IAAc,MAAA,CAAO,YAAY,MAAA,CAAO,IAAA,CAAA;AACpF;AAKA,IAAM,yBAAA,GAA4B,CAAqB,MAAA,EAAoC,GAAA,KAAkD;AAE5I,EAAA,KAAA,CAAM,sCAAA,EAAwC,QAAQ,GAAG,CAAA;AAEzD,EAAA,MAAM,KAAwB,EAAC;AAC/B,EAAA,IAAI,CAAC,QAAQ,OAAO,EAAA;AAGpB,EAAA,IAAI,OAAO,OAAA,EAAS,EAAA,CAAG,UAAU,MAAA,CAAO,OAAA,CAAQ,KAAK,GAAG,CAAA;AAExD,EAAA,IAAI,OAAO,MAAA,EAAQ;AAClB,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,MAAM,GAAG,MAAA,CAAO,MAAA,GAAS,EAAE,CAAE,GAAA,CAAqB,IAAA,IAAQ,GAAG,GAAG,OAAO,MAAA,EAAO;AACvG,IAAA,MAAA,CAAO,OAAA,CAAQ,OAAO,MAAM,CAAA,CAAE,QAAQ,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA,KAAM;AACjD,MAAA,EAAA,CAAG,UAAU,CAAC,CAAA,CAAA,CAAG,CAAA,GAAI,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,IAChC,CAAC,CAAA;AAAA,EACF;AAEA,EAAA,IAAI,YAAA,CAAa,MAAM,CAAA,EAAG;AAEzB,IAAA,IAAI,OAAO,IAAA,EAAM;AAChB,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,IAAI,CAAA,KAAM,IAAA,GAAO,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA;AAAA,WACzD,EAAA,CAAG,OAAO,MAAA,CAAO,OAAA,CAAQ,OAAO,IAAI,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA,KAAM,CAAA,EAAG,CAAA,KAAM,MAAA,GAAS,GAAA,GAAM,EAAE,GAAG,CAAC,CAAA,CAAE,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAAA,IACtG;AAEA,IAAA,IAAI,OAAO,UAAA,EAAY,EAAA,CAAG,cAAc,CAAA,GAAI,MAAA,CAAO,OAAO,UAAU,CAAA;AACpE,IAAA,IAAI,OAAO,QAAA,EAAU,EAAA,CAAG,YAAY,CAAA,GAAI,MAAA,CAAO,OAAO,QAAQ,CAAA;AAE9D,IAAA,IAAI,OAAO,OAAA,EAAS;AACnB,MAAA,MAAA,CAAO,OAAA,CAAQ,OAAO,OAAO,CAAA,CAAE,QAAQ,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA,KAAM;AAClD,QAAA,IAAI,GAAA;AACJ,QAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,EAAG;AACrB,UAAA,IAAI,CAAC,aAAA,CAAc,CAAC,GAAG,MAAM,IAAIC,2BAAS,EAAE,OAAA,EAAS,CAAA,kBAAA,EAAqB,CAAC,+DAA+D,YAAA,CAAa,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,EAAI,+BAAyB,CAAA;AAC9L,UAAA,GAAA,GAAM,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,QACjB,CAAA,MAAA,IACS,OAAO,CAAA,KAAM,QAAA,EAAU;AAC/B,UAAA,IAAI,CAAC,cAAA,CAAe,CAAC,GAAG,MAAM,IAAIA,2BAAS,EAAE,OAAA,EAAS,CAAA,kBAAA,EAAqB,CAAC,gEAAgE,aAAA,CAAc,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,EAAI,+BAAyB,CAAA;AACjM,UAAA,GAAA,GAAM,IAAA,CAAK,UAAU,CAAC,CAAA;AAAA,QACvB,CAAA,MACK,GAAA,GAAM,MAAA,CAAO,CAAC,CAAA;AACnB,QAAA,EAAA,CAAG,CAAA,UAAA,EAAa,CAAC,CAAA,CAAA,CAAG,CAAA,GAAI,GAAA;AAAA,MACzB,CAAC,CAAA;AAAA,IACF;AAAA,EACD;AAEA,EAAA,KAAA,CAAM,2BAA2B,EAAE,CAAA;AAEnC,EAAA,OAAO,EAAA;AAER;AAGA,IAAM,oBAAA,GAAuB,CAAC,MAAA,EAA4B,YAAA,GAAwB,IAAA,KAAiB;AAClG,EAAA,IAAI,CAAC,UAAW,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA,CAAE,MAAA,KAAW,GAAI,OAAO,EAAA;AAC1D,EAAA,OAAO,CAAA,EAAG,YAAA,GAAe,GAAA,GAAM,EAAE,CAAA,EAAG,OAAO,OAAA,CAAQ,MAAM,CAAA,CAAE,GAAA,CAAI,CAAC,CAAC,KAAK,GAAG,CAAA,KAAM,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,MAAA,CAAO,GAAG,CAAC,CAAA,CAAE,CAAA,CAAE,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAClH","file":"chunk-YY5ENJSH.cjs","sourcesContent":["\nimport type { Resource, ResourceType } from \"./resource\"\nimport { ErrorType, SdkError } from \"./error\"\nimport type { PositiveNumberRange, StringKey } from \"./types\"\nimport type { ResourceFields, ResourceSortFields, ResourceTypeLock } from \"./enum\"\n\nimport Debug from './debug'\nconst debug = Debug('query')\n\n\nconst arrayFilters = ['_any', '_all', '_in', '_not_in_or_null']\nconst isArrayFilter = (filter: string): boolean => {\n\treturn arrayFilters.some(f => filter.endsWith(f))\n}\n\nconst objectFilters = ['_jcont']\nconst isObjectFilter = (filter: string): boolean => {\n\treturn objectFilters.some(f => filter.endsWith(f))\n}\n\n\n// type QueryResType<T> = T extends { type: infer Type } ? Type : never\ntype QueryResType<T extends Resource> = T['type']\n\nexport type QueryInclude = string[]\n\ntype QueryResourceFields<R extends ResourceTypeLock> = keyof ResourceFields[R]\ntype QueryArrayFields<R extends Resource> = Array<QueryResourceFields<QueryResType<R>>>\ntype QueryRecordFields = { [key in keyof ResourceFields]?: Array<(QueryResourceFields<key>)> }\nexport type QueryFields<R extends Resource> = QueryArrayFields<R> | QueryRecordFields\n\nexport interface QueryParamsRetrieve<R extends Resource = Resource> {\n\tinclude?: QueryInclude\n\tfields?: QueryFields<R>\n}\n\ntype QuerySortType = 'asc' | 'desc'\ntype QueryResourceSortable<R extends Resource> = ResourceSortFields[QueryResType<R>]\ntype QueryResourceSortableFields<R extends Resource> = StringKey<QueryResourceSortable<R>>\ntype QueryArraySortable<R extends Resource> = Array<QueryResourceSortableFields<R> | `-${QueryResourceSortableFields<R>}`>\ntype QueryRecordSortable<R extends Resource> = Partial<Record<keyof QueryResourceSortable<R>, QuerySortType>>\nexport type QuerySort<R extends Resource> = QueryArraySortable<R> | QueryRecordSortable<R>\n\nexport type QueryFilter = Record<string, string | number | boolean | object | Array<string | number>>\n\nexport type QueryPageNumber = number\nexport type QueryPageSize = PositiveNumberRange<25>\n\nexport interface QueryParamsList<R extends Resource = Resource> extends QueryParamsRetrieve<R> {\n\tsort?: QuerySort<R>\n\tfilters?: QueryFilter\n\tpageNumber?: QueryPageNumber\n\tpageSize?: QueryPageSize\n}\n\nexport type QueryParams<R extends Resource = Resource> = QueryParamsRetrieve<R> | QueryParamsList<R>\n\n\n\nconst isParamsList = <R extends Resource>(params: any): params is QueryParamsList<R> => {\n\treturn params && (params.filters || params.pageNumber || params.pageSize || params.sort)\n}\n\n\ntype QueryStringParams = Record<string, string>\n\nconst generateQueryStringParams = <R extends Resource>(params: QueryParams<R> | undefined, res: string | ResourceType): QueryStringParams => {\n\n\tdebug('generate query string params: %O, %O', params, res)\n\n\tconst qp: QueryStringParams = {}\n\tif (!params) return qp\n\n\t// Include\n\tif (params.include) qp.include = params.include.join(',')\n\t// Fields\n\tif (params.fields) {\n\t\tif (Array.isArray(params.fields)) params.fields = { [(res as ResourceType).type || res]: params.fields }\n\t\tObject.entries(params.fields).forEach(([p, v]) => {\n\t\t\tqp[`fields[${p}]`] = v.join(',')\n\t\t})\n\t}\n\n\tif (isParamsList(params)) {\n\t\t// Sort\n\t\tif (params.sort) {\n\t\t\tif (Array.isArray(params.sort)) qp.sort = params.sort.join(',')\n\t\t\telse qp.sort = Object.entries(params.sort).map(([k, v]) => `${v === 'desc' ? '-' : ''}${k}`).join(',')\n\t\t}\n\t\t// Page\n\t\tif (params.pageNumber) qp['page[number]'] = String(params.pageNumber)\n\t\tif (params.pageSize) qp['page[size]'] = String(params.pageSize)\n\t\t// Filters\n\t\tif (params.filters) {\n\t\t\tObject.entries(params.filters).forEach(([p, v]) => {\n\t\t\t\tlet val\n\t\t\t\tif (Array.isArray(v)) {\n\t\t\t\t\tif (!isArrayFilter(p)) throw new SdkError({ message: `Incorrect filter [${p}]: Array value is supported only for the following filters: ${arrayFilters.join(', ')}`, type: ErrorType.REQUEST })\n\t\t\t\t\tval = v.join(',')\n\t\t\t\t}\n\t\t\t\telse if (typeof v === 'object') {\n\t\t\t\t\tif (!isObjectFilter(p)) throw new SdkError({ message: `Incorrect filter [${p}]: Object value is supported only for the following filters: ${objectFilters.join(', ')}`, type: ErrorType.REQUEST })\n\t\t\t\t\tval = JSON.stringify(v)\n\t\t\t\t}\n\t\t\t\telse val = String(v)\n\t\t\t\tqp[`filter[q][${p}]`] = val\n\t\t\t})\n\t\t}\n\t}\n\n\tdebug('query string params: %O', qp)\n\n\treturn qp\n\n}\n\n\nconst generateSearchString = (params?: QueryStringParams, questionMark: boolean = true): string => {\n\tif (!params || (Object.keys(params).length === 0)) return ''\n\treturn `${questionMark ? '?' : ''}${Object.entries(params).map(([key, val]) => `${key}=${String(val)}`).join('&')}`\n}\n\n\nexport { generateQueryStringParams, isParamsList, generateSearchString }\n"]}