@strapi/utils 5.37.0 → 5.38.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.
- package/dist/async.js.map +1 -1
- package/dist/async.mjs.map +1 -1
- package/dist/content-api-constants.js.map +1 -1
- package/dist/content-api-constants.mjs.map +1 -1
- package/dist/content-api-route-params.js.map +1 -1
- package/dist/content-api-route-params.mjs.map +1 -1
- package/dist/content-api-router.js.map +1 -1
- package/dist/content-api-router.mjs.map +1 -1
- package/dist/content-types.js.map +1 -1
- package/dist/content-types.mjs +1 -1
- package/dist/content-types.mjs.map +1 -1
- package/dist/convert-query-params.js.map +1 -1
- package/dist/convert-query-params.mjs +2 -2
- package/dist/convert-query-params.mjs.map +1 -1
- package/dist/env-helper.js.map +1 -1
- package/dist/env-helper.mjs.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/errors.mjs.map +1 -1
- package/dist/file.js.map +1 -1
- package/dist/file.mjs.map +1 -1
- package/dist/format-yup-error.js.map +1 -1
- package/dist/format-yup-error.mjs.map +1 -1
- package/dist/hooks.js.map +1 -1
- package/dist/hooks.mjs.map +1 -1
- package/dist/import-default.js.map +1 -1
- package/dist/import-default.mjs.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.mjs +4 -4
- package/dist/install-id.js.map +1 -1
- package/dist/install-id.mjs.map +1 -1
- package/dist/model-cache.js.map +1 -1
- package/dist/model-cache.mjs.map +1 -1
- package/dist/operators.js.map +1 -1
- package/dist/operators.mjs.map +1 -1
- package/dist/package-manager.js.map +1 -1
- package/dist/package-manager.mjs.map +1 -1
- package/dist/pagination.js.map +1 -1
- package/dist/pagination.mjs +1 -1
- package/dist/pagination.mjs.map +1 -1
- package/dist/parse-type.js.map +1 -1
- package/dist/parse-type.mjs.map +1 -1
- package/dist/policy.js.map +1 -1
- package/dist/policy.mjs.map +1 -1
- package/dist/primitives/arrays.js.map +1 -1
- package/dist/primitives/arrays.mjs.map +1 -1
- package/dist/primitives/dates.js.map +1 -1
- package/dist/primitives/dates.mjs.map +1 -1
- package/dist/primitives/objects.js.map +1 -1
- package/dist/primitives/objects.mjs.map +1 -1
- package/dist/primitives/strings.js.map +1 -1
- package/dist/primitives/strings.mjs.map +1 -1
- package/dist/print-value.js.map +1 -1
- package/dist/print-value.mjs.map +1 -1
- package/dist/provider-factory.js.map +1 -1
- package/dist/provider-factory.mjs +1 -1
- package/dist/provider-factory.mjs.map +1 -1
- package/dist/relations.js.map +1 -1
- package/dist/relations.mjs.map +1 -1
- package/dist/route-serialization.js.map +1 -1
- package/dist/route-serialization.mjs.map +1 -1
- package/dist/sanitize/index.js +1 -1
- package/dist/sanitize/index.js.map +1 -1
- package/dist/sanitize/index.mjs +4 -4
- package/dist/sanitize/index.mjs.map +1 -1
- package/dist/sanitize/sanitizers.js +1 -0
- package/dist/sanitize/sanitizers.js.map +1 -1
- package/dist/sanitize/sanitizers.mjs +2 -1
- package/dist/sanitize/sanitizers.mjs.map +1 -1
- package/dist/sanitize/visitors/expand-wildcard-populate.js.map +1 -1
- package/dist/sanitize/visitors/expand-wildcard-populate.mjs.map +1 -1
- package/dist/sanitize/visitors/remove-disallowed-fields.js.map +1 -1
- package/dist/sanitize/visitors/remove-disallowed-fields.mjs.map +1 -1
- package/dist/sanitize/visitors/remove-dynamic-zones.js.map +1 -1
- package/dist/sanitize/visitors/remove-dynamic-zones.mjs.map +1 -1
- package/dist/sanitize/visitors/remove-morph-to-relations.js.map +1 -1
- package/dist/sanitize/visitors/remove-morph-to-relations.mjs.map +1 -1
- package/dist/sanitize/visitors/remove-password.js.map +1 -1
- package/dist/sanitize/visitors/remove-password.mjs.map +1 -1
- package/dist/sanitize/visitors/remove-private.js.map +1 -1
- package/dist/sanitize/visitors/remove-private.mjs.map +1 -1
- package/dist/sanitize/visitors/remove-restricted-fields.js.map +1 -1
- package/dist/sanitize/visitors/remove-restricted-fields.mjs.map +1 -1
- package/dist/sanitize/visitors/remove-restricted-relations.js.map +1 -1
- package/dist/sanitize/visitors/remove-restricted-relations.mjs.map +1 -1
- package/dist/sanitize/visitors/remove-unrecognized-fields.js.map +1 -1
- package/dist/sanitize/visitors/remove-unrecognized-fields.mjs.map +1 -1
- package/dist/security.js.map +1 -1
- package/dist/security.mjs.map +1 -1
- package/dist/set-creator-fields.js.map +1 -1
- package/dist/set-creator-fields.mjs.map +1 -1
- package/dist/template.js.map +1 -1
- package/dist/template.mjs.map +1 -1
- package/dist/traverse/factory.js.map +1 -1
- package/dist/traverse/factory.mjs.map +1 -1
- package/dist/traverse/query-fields.js.map +1 -1
- package/dist/traverse/query-fields.mjs.map +1 -1
- package/dist/traverse/query-filters.js.map +1 -1
- package/dist/traverse/query-filters.mjs.map +1 -1
- package/dist/traverse/query-populate.js.map +1 -1
- package/dist/traverse/query-populate.mjs +1 -1
- package/dist/traverse/query-populate.mjs.map +1 -1
- package/dist/traverse/query-sort.js.map +1 -1
- package/dist/traverse/query-sort.mjs +1 -1
- package/dist/traverse/query-sort.mjs.map +1 -1
- package/dist/traverse-entity.js.map +1 -1
- package/dist/traverse-entity.mjs +8 -8
- package/dist/traverse-entity.mjs.map +1 -1
- package/dist/validate/index.js +1 -1
- package/dist/validate/index.js.map +1 -1
- package/dist/validate/index.mjs +3 -3
- package/dist/validate/index.mjs.map +1 -1
- package/dist/validate/utils.js.map +1 -1
- package/dist/validate/utils.mjs.map +1 -1
- package/dist/validate/validators.js +2 -1
- package/dist/validate/validators.js.map +1 -1
- package/dist/validate/validators.mjs +3 -2
- package/dist/validate/validators.mjs.map +1 -1
- package/dist/validate/visitors/throw-disallowed-fields.js.map +1 -1
- package/dist/validate/visitors/throw-disallowed-fields.mjs.map +1 -1
- package/dist/validate/visitors/throw-dynamic-zones.js.map +1 -1
- package/dist/validate/visitors/throw-dynamic-zones.mjs.map +1 -1
- package/dist/validate/visitors/throw-morph-to-relations.js.map +1 -1
- package/dist/validate/visitors/throw-morph-to-relations.mjs.map +1 -1
- package/dist/validate/visitors/throw-password.js.map +1 -1
- package/dist/validate/visitors/throw-password.mjs.map +1 -1
- package/dist/validate/visitors/throw-private.js.map +1 -1
- package/dist/validate/visitors/throw-private.mjs.map +1 -1
- package/dist/validate/visitors/throw-restricted-fields.js.map +1 -1
- package/dist/validate/visitors/throw-restricted-fields.mjs.map +1 -1
- package/dist/validate/visitors/throw-restricted-relations.js.map +1 -1
- package/dist/validate/visitors/throw-restricted-relations.mjs.map +1 -1
- package/dist/validate/visitors/throw-unrecognized-fields.js.map +1 -1
- package/dist/validate/visitors/throw-unrecognized-fields.mjs.map +1 -1
- package/dist/validation/route-validators/base.js.map +1 -1
- package/dist/validation/route-validators/base.mjs.map +1 -1
- package/dist/validation/route-validators/query-params.js.map +1 -1
- package/dist/validation/route-validators/query-params.mjs.map +1 -1
- package/dist/validation/utilities.js.map +1 -1
- package/dist/validation/utilities.mjs.map +1 -1
- package/dist/validators.js.map +1 -1
- package/dist/validators.mjs.map +1 -1
- package/dist/yup.js.map +1 -1
- package/dist/yup.mjs.map +1 -1
- package/dist/zod.js.map +1 -1
- package/dist/zod.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.mjs
CHANGED
|
@@ -13,14 +13,14 @@ export { convertQueryParams as queryParams };
|
|
|
13
13
|
export { ALLOWED_QUERY_PARAM_KEYS, RESERVED_INPUT_PARAM_KEYS, SHARED_QUERY_PARAM_KEYS } from './content-api-constants.mjs';
|
|
14
14
|
import * as index from './sanitize/index.mjs';
|
|
15
15
|
export { index as sanitize };
|
|
16
|
-
import * as index$
|
|
17
|
-
export { index$
|
|
16
|
+
import * as index$2 from './validate/index.mjs';
|
|
17
|
+
export { index$2 as validate };
|
|
18
18
|
import * as pagination from './pagination.mjs';
|
|
19
19
|
export { pagination };
|
|
20
20
|
import * as packageManager from './package-manager.mjs';
|
|
21
21
|
export { packageManager };
|
|
22
|
-
import * as index$
|
|
23
|
-
export { index$
|
|
22
|
+
import * as index$1 from './traverse/index.mjs';
|
|
23
|
+
export { index$1 as traverse };
|
|
24
24
|
import * as template from './template.mjs';
|
|
25
25
|
export { template };
|
|
26
26
|
import * as file from './file.mjs';
|
package/dist/install-id.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-id.js","sources":["../src/install-id.ts"],"sourcesContent":["import crypto from 'crypto';\nimport { machineIdSync } from 'node-machine-id';\n\nexport const generateInstallId = (projectId: string, installId: string) => {\n if (installId) return installId;\n try {\n const machineId = machineIdSync();\n return projectId\n ? crypto.createHash('sha256').update(`${machineId}-${projectId}`).digest('hex')\n : crypto.randomUUID();\n } catch (error) {\n return crypto.randomUUID();\n }\n};\n"],"names":["generateInstallId","projectId","installId","machineId","machineIdSync","crypto","createHash","update","digest","randomUUID","error"],"mappings":";;;;;AAGO,MAAMA,
|
|
1
|
+
{"version":3,"file":"install-id.js","sources":["../src/install-id.ts"],"sourcesContent":["import crypto from 'crypto';\nimport { machineIdSync } from 'node-machine-id';\n\nexport const generateInstallId = (projectId: string, installId: string) => {\n if (installId) return installId;\n try {\n const machineId = machineIdSync();\n return projectId\n ? crypto.createHash('sha256').update(`${machineId}-${projectId}`).digest('hex')\n : crypto.randomUUID();\n } catch (error) {\n return crypto.randomUUID();\n }\n};\n"],"names":["generateInstallId","projectId","installId","machineId","machineIdSync","crypto","createHash","update","digest","randomUUID","error"],"mappings":";;;;;AAGO,MAAMA,iBAAAA,GAAoB,CAACC,SAAAA,EAAmBC,SAAAA,GAAAA;AACnD,IAAA,IAAIA,WAAW,OAAOA,SAAAA;IACtB,IAAI;AACF,QAAA,MAAMC,SAAAA,GAAYC,2BAAAA,EAAAA;AAClB,QAAA,OAAOH,YACHI,MAAAA,CAAOC,UAAU,CAAC,QAAA,CAAA,CAAUC,MAAM,CAAC,CAAA,EAAGJ,SAAAA,CAAU,CAAC,EAAEF,SAAAA,CAAAA,CAAW,CAAA,CAAEO,MAAM,CAAC,KAAA,CAAA,GACvEH,OAAOI,UAAU,EAAA;AACvB,IAAA,CAAA,CAAE,OAAOC,KAAAA,EAAO;AACd,QAAA,OAAOL,OAAOI,UAAU,EAAA;AAC1B,IAAA;AACF;;;;"}
|
package/dist/install-id.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-id.mjs","sources":["../src/install-id.ts"],"sourcesContent":["import crypto from 'crypto';\nimport { machineIdSync } from 'node-machine-id';\n\nexport const generateInstallId = (projectId: string, installId: string) => {\n if (installId) return installId;\n try {\n const machineId = machineIdSync();\n return projectId\n ? crypto.createHash('sha256').update(`${machineId}-${projectId}`).digest('hex')\n : crypto.randomUUID();\n } catch (error) {\n return crypto.randomUUID();\n }\n};\n"],"names":["generateInstallId","projectId","installId","machineId","machineIdSync","crypto","createHash","update","digest","randomUUID","error"],"mappings":";;;AAGO,MAAMA,
|
|
1
|
+
{"version":3,"file":"install-id.mjs","sources":["../src/install-id.ts"],"sourcesContent":["import crypto from 'crypto';\nimport { machineIdSync } from 'node-machine-id';\n\nexport const generateInstallId = (projectId: string, installId: string) => {\n if (installId) return installId;\n try {\n const machineId = machineIdSync();\n return projectId\n ? crypto.createHash('sha256').update(`${machineId}-${projectId}`).digest('hex')\n : crypto.randomUUID();\n } catch (error) {\n return crypto.randomUUID();\n }\n};\n"],"names":["generateInstallId","projectId","installId","machineId","machineIdSync","crypto","createHash","update","digest","randomUUID","error"],"mappings":";;;AAGO,MAAMA,iBAAAA,GAAoB,CAACC,SAAAA,EAAmBC,SAAAA,GAAAA;AACnD,IAAA,IAAIA,WAAW,OAAOA,SAAAA;IACtB,IAAI;AACF,QAAA,MAAMC,SAAAA,GAAYC,aAAAA,EAAAA;AAClB,QAAA,OAAOH,YACHI,MAAAA,CAAOC,UAAU,CAAC,QAAA,CAAA,CAAUC,MAAM,CAAC,CAAA,EAAGJ,SAAAA,CAAU,CAAC,EAAEF,SAAAA,CAAAA,CAAW,CAAA,CAAEO,MAAM,CAAC,KAAA,CAAA,GACvEH,OAAOI,UAAU,EAAA;AACvB,IAAA,CAAA,CAAE,OAAOC,KAAAA,EAAO;AACd,QAAA,OAAOL,OAAOI,UAAU,EAAA;AAC1B,IAAA;AACF;;;;"}
|
package/dist/model-cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-cache.js","sources":["../src/model-cache.ts"],"sourcesContent":["import type { Model } from './types';\n\n/**\n * Model cache to prevent redundant getModel() calls during populate traversal.\n *\n * Models don't change at runtime (changes require server restart), so caching\n * is safe. Current scoping (per-request) provides isolation and predictable\n * memory behavior.\n */\n\n/**\n * Creates cache for getModel() calls.\n *\n * @param getModelFn - The underlying getModel function to cache\n * @returns An object with cached getModel function and clear method\n */\nexport const createModelCache = (\n getModelFn: (\n uid: // TODO should use the type from @strapi/types but this package doesn't depend on it\n any\n ) => Model\n) => {\n const cache = new Map<string, Model>();\n\n return {\n getModel(uid: any): Model {\n const cached = cache.get(uid);\n if (cached) {\n return cached;\n }\n\n const model = getModelFn(uid);\n cache.set(uid, model);\n return model;\n },\n clear() {\n cache.clear();\n },\n };\n};\n"],"names":["createModelCache","getModelFn","cache","Map","getModel","uid","cached","get","model","set","clear"],"mappings":";;AAEA;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"model-cache.js","sources":["../src/model-cache.ts"],"sourcesContent":["import type { Model } from './types';\n\n/**\n * Model cache to prevent redundant getModel() calls during populate traversal.\n *\n * Models don't change at runtime (changes require server restart), so caching\n * is safe. Current scoping (per-request) provides isolation and predictable\n * memory behavior.\n */\n\n/**\n * Creates cache for getModel() calls.\n *\n * @param getModelFn - The underlying getModel function to cache\n * @returns An object with cached getModel function and clear method\n */\nexport const createModelCache = (\n getModelFn: (\n uid: // TODO should use the type from @strapi/types but this package doesn't depend on it\n any\n ) => Model\n) => {\n const cache = new Map<string, Model>();\n\n return {\n getModel(uid: any): Model {\n const cached = cache.get(uid);\n if (cached) {\n return cached;\n }\n\n const model = getModelFn(uid);\n cache.set(uid, model);\n return model;\n },\n clear() {\n cache.clear();\n },\n };\n};\n"],"names":["createModelCache","getModelFn","cache","Map","getModel","uid","cached","get","model","set","clear"],"mappings":";;AAEA;;;;;;;;;;;IAcO,MAAMA,gBAAAA,GAAmB,CAC9BC,UAAAA,GAAAA;AAKA,IAAA,MAAMC,QAAQ,IAAIC,GAAAA,EAAAA;IAElB,OAAO;AACLC,QAAAA,QAAAA,CAAAA,CAASC,GAAQ,EAAA;YACf,MAAMC,MAAAA,GAASJ,KAAAA,CAAMK,GAAG,CAACF,GAAAA,CAAAA;AACzB,YAAA,IAAIC,MAAAA,EAAQ;gBACV,OAAOA,MAAAA;AACT,YAAA;AAEA,YAAA,MAAME,QAAQP,UAAAA,CAAWI,GAAAA,CAAAA;YACzBH,KAAAA,CAAMO,GAAG,CAACJ,GAAAA,EAAKG,KAAAA,CAAAA;YACf,OAAOA,KAAAA;AACT,QAAA,CAAA;AACAE,QAAAA,KAAAA,CAAAA,GAAAA;AACER,YAAAA,KAAAA,CAAMQ,KAAK,EAAA;AACb,QAAA;AACF,KAAA;AACF;;;;"}
|
package/dist/model-cache.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-cache.mjs","sources":["../src/model-cache.ts"],"sourcesContent":["import type { Model } from './types';\n\n/**\n * Model cache to prevent redundant getModel() calls during populate traversal.\n *\n * Models don't change at runtime (changes require server restart), so caching\n * is safe. Current scoping (per-request) provides isolation and predictable\n * memory behavior.\n */\n\n/**\n * Creates cache for getModel() calls.\n *\n * @param getModelFn - The underlying getModel function to cache\n * @returns An object with cached getModel function and clear method\n */\nexport const createModelCache = (\n getModelFn: (\n uid: // TODO should use the type from @strapi/types but this package doesn't depend on it\n any\n ) => Model\n) => {\n const cache = new Map<string, Model>();\n\n return {\n getModel(uid: any): Model {\n const cached = cache.get(uid);\n if (cached) {\n return cached;\n }\n\n const model = getModelFn(uid);\n cache.set(uid, model);\n return model;\n },\n clear() {\n cache.clear();\n },\n };\n};\n"],"names":["createModelCache","getModelFn","cache","Map","getModel","uid","cached","get","model","set","clear"],"mappings":"AAEA;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"model-cache.mjs","sources":["../src/model-cache.ts"],"sourcesContent":["import type { Model } from './types';\n\n/**\n * Model cache to prevent redundant getModel() calls during populate traversal.\n *\n * Models don't change at runtime (changes require server restart), so caching\n * is safe. Current scoping (per-request) provides isolation and predictable\n * memory behavior.\n */\n\n/**\n * Creates cache for getModel() calls.\n *\n * @param getModelFn - The underlying getModel function to cache\n * @returns An object with cached getModel function and clear method\n */\nexport const createModelCache = (\n getModelFn: (\n uid: // TODO should use the type from @strapi/types but this package doesn't depend on it\n any\n ) => Model\n) => {\n const cache = new Map<string, Model>();\n\n return {\n getModel(uid: any): Model {\n const cached = cache.get(uid);\n if (cached) {\n return cached;\n }\n\n const model = getModelFn(uid);\n cache.set(uid, model);\n return model;\n },\n clear() {\n cache.clear();\n },\n };\n};\n"],"names":["createModelCache","getModelFn","cache","Map","getModel","uid","cached","get","model","set","clear"],"mappings":"AAEA;;;;;;;;;;;IAcO,MAAMA,gBAAAA,GAAmB,CAC9BC,UAAAA,GAAAA;AAKA,IAAA,MAAMC,QAAQ,IAAIC,GAAAA,EAAAA;IAElB,OAAO;AACLC,QAAAA,QAAAA,CAAAA,CAASC,GAAQ,EAAA;YACf,MAAMC,MAAAA,GAASJ,KAAAA,CAAMK,GAAG,CAACF,GAAAA,CAAAA;AACzB,YAAA,IAAIC,MAAAA,EAAQ;gBACV,OAAOA,MAAAA;AACT,YAAA;AAEA,YAAA,MAAME,QAAQP,UAAAA,CAAWI,GAAAA,CAAAA;YACzBH,KAAAA,CAAMO,GAAG,CAACJ,GAAAA,EAAKG,KAAAA,CAAAA;YACf,OAAOA,KAAAA;AACT,QAAA,CAAA;AACAE,QAAAA,KAAAA,CAAAA,GAAAA;AACER,YAAAA,KAAAA,CAAMQ,KAAK,EAAA;AACb,QAAA;AACF,KAAA;AACF;;;;"}
|
package/dist/operators.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operators.js","sources":["../src/operators.ts"],"sourcesContent":["const GROUP_OPERATORS = ['$and', '$or'];\n\nconst WHERE_OPERATORS = [\n '$not',\n '$in',\n '$notIn',\n '$eq',\n '$eqi',\n '$ne',\n '$nei',\n '$gt',\n '$gte',\n '$lt',\n '$lte',\n '$null',\n '$notNull',\n '$between',\n '$startsWith',\n '$endsWith',\n '$startsWithi',\n '$endsWithi',\n '$contains',\n '$notContains',\n '$containsi',\n '$notContainsi',\n // Experimental, only for internal use\n '$jsonSupersetOf',\n];\n\nconst CAST_OPERATORS = [\n '$not',\n '$in',\n '$notIn',\n '$eq',\n '$ne',\n '$gt',\n '$gte',\n '$lt',\n '$lte',\n '$between',\n];\n\nconst ARRAY_OPERATORS = ['$in', '$notIn', '$between'];\n\nconst OPERATORS = {\n where: WHERE_OPERATORS,\n cast: CAST_OPERATORS,\n group: GROUP_OPERATORS,\n array: ARRAY_OPERATORS,\n};\n\n// for performance, cache all operators in lowercase\nconst OPERATORS_LOWERCASE = Object.fromEntries(\n Object.entries(OPERATORS).map(([key, values]) => [\n key,\n values.map((value) => value.toLowerCase()),\n ])\n);\n\nconst isObjKey = <T extends object>(key: string | symbol | number, obj: T): key is keyof T => {\n return key in obj;\n};\n\nexport const isOperatorOfType = (type: string, key: string, ignoreCase = false) => {\n if (ignoreCase) {\n return OPERATORS_LOWERCASE[type]?.includes(key.toLowerCase()) ?? false;\n }\n\n if (isObjKey(type, OPERATORS)) {\n return OPERATORS[type]?.includes(key) ?? false;\n }\n\n return false;\n};\n\nexport const isOperator = (key: string, ignoreCase = false) => {\n return Object.keys(OPERATORS).some((type) => isOperatorOfType(type, key, ignoreCase));\n};\n"],"names":["GROUP_OPERATORS","WHERE_OPERATORS","CAST_OPERATORS","ARRAY_OPERATORS","OPERATORS","where","cast","group","array","OPERATORS_LOWERCASE","Object","fromEntries","entries","map","key","values","value","toLowerCase","isObjKey","obj","isOperatorOfType","type","ignoreCase","includes","isOperator","keys","some"],"mappings":";;AAAA,MAAMA,
|
|
1
|
+
{"version":3,"file":"operators.js","sources":["../src/operators.ts"],"sourcesContent":["const GROUP_OPERATORS = ['$and', '$or'];\n\nconst WHERE_OPERATORS = [\n '$not',\n '$in',\n '$notIn',\n '$eq',\n '$eqi',\n '$ne',\n '$nei',\n '$gt',\n '$gte',\n '$lt',\n '$lte',\n '$null',\n '$notNull',\n '$between',\n '$startsWith',\n '$endsWith',\n '$startsWithi',\n '$endsWithi',\n '$contains',\n '$notContains',\n '$containsi',\n '$notContainsi',\n // Experimental, only for internal use\n '$jsonSupersetOf',\n];\n\nconst CAST_OPERATORS = [\n '$not',\n '$in',\n '$notIn',\n '$eq',\n '$ne',\n '$gt',\n '$gte',\n '$lt',\n '$lte',\n '$between',\n];\n\nconst ARRAY_OPERATORS = ['$in', '$notIn', '$between'];\n\nconst OPERATORS = {\n where: WHERE_OPERATORS,\n cast: CAST_OPERATORS,\n group: GROUP_OPERATORS,\n array: ARRAY_OPERATORS,\n};\n\n// for performance, cache all operators in lowercase\nconst OPERATORS_LOWERCASE = Object.fromEntries(\n Object.entries(OPERATORS).map(([key, values]) => [\n key,\n values.map((value) => value.toLowerCase()),\n ])\n);\n\nconst isObjKey = <T extends object>(key: string | symbol | number, obj: T): key is keyof T => {\n return key in obj;\n};\n\nexport const isOperatorOfType = (type: string, key: string, ignoreCase = false) => {\n if (ignoreCase) {\n return OPERATORS_LOWERCASE[type]?.includes(key.toLowerCase()) ?? false;\n }\n\n if (isObjKey(type, OPERATORS)) {\n return OPERATORS[type]?.includes(key) ?? false;\n }\n\n return false;\n};\n\nexport const isOperator = (key: string, ignoreCase = false) => {\n return Object.keys(OPERATORS).some((type) => isOperatorOfType(type, key, ignoreCase));\n};\n"],"names":["GROUP_OPERATORS","WHERE_OPERATORS","CAST_OPERATORS","ARRAY_OPERATORS","OPERATORS","where","cast","group","array","OPERATORS_LOWERCASE","Object","fromEntries","entries","map","key","values","value","toLowerCase","isObjKey","obj","isOperatorOfType","type","ignoreCase","includes","isOperator","keys","some"],"mappings":";;AAAA,MAAMA,eAAAA,GAAkB;AAAC,IAAA,MAAA;AAAQ,IAAA;AAAM,CAAA;AAEvC,MAAMC,eAAAA,GAAkB;AACtB,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,QAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,OAAA;AACA,IAAA,UAAA;AACA,IAAA,UAAA;AACA,IAAA,aAAA;AACA,IAAA,WAAA;AACA,IAAA,cAAA;AACA,IAAA,YAAA;AACA,IAAA,WAAA;AACA,IAAA,cAAA;AACA,IAAA,YAAA;AACA,IAAA,eAAA;;AAEA,IAAA;AACD,CAAA;AAED,MAAMC,cAAAA,GAAiB;AACrB,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,QAAA;AACA,IAAA,KAAA;AACA,IAAA,KAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA;AACD,CAAA;AAED,MAAMC,eAAAA,GAAkB;AAAC,IAAA,KAAA;AAAO,IAAA,QAAA;AAAU,IAAA;AAAW,CAAA;AAErD,MAAMC,SAAAA,GAAY;IAChBC,KAAAA,EAAOJ,eAAAA;IACPK,IAAAA,EAAMJ,cAAAA;IACNK,KAAAA,EAAOP,eAAAA;IACPQ,KAAAA,EAAOL;AACT,CAAA;AAEA;AACA,MAAMM,mBAAAA,GAAsBC,MAAAA,CAAOC,WAAW,CAC5CD,OAAOE,OAAO,CAACR,SAAAA,CAAAA,CAAWS,GAAG,CAAC,CAAC,CAACC,GAAAA,EAAKC,OAAO,GAAK;AAC/CD,QAAAA,GAAAA;AACAC,QAAAA,MAAAA,CAAOF,GAAG,CAAC,CAACG,KAAAA,GAAUA,MAAMC,WAAW,EAAA;AACxC,KAAA,CAAA,CAAA;AAGH,MAAMC,QAAAA,GAAW,CAAmBJ,GAAAA,EAA+BK,GAAAA,GAAAA;AACjE,IAAA,OAAOL,GAAAA,IAAOK,GAAAA;AAChB,CAAA;MAEaC,gBAAAA,GAAmB,CAACC,IAAAA,EAAcP,GAAAA,EAAaQ,aAAa,KAAK,GAAA;AAC5E,IAAA,IAAIA,UAAAA,EAAY;AACd,QAAA,OAAOb,mBAAmB,CAACY,IAAAA,CAAK,EAAEE,QAAAA,CAAST,GAAAA,CAAIG,WAAW,EAAA,CAAA,IAAO,KAAA;AACnE,IAAA;IAEA,IAAIC,QAAAA,CAASG,MAAMjB,SAAAA,CAAAA,EAAY;AAC7B,QAAA,OAAOA,SAAS,CAACiB,IAAAA,CAAK,EAAEE,SAAST,GAAAA,CAAAA,IAAQ,KAAA;AAC3C,IAAA;IAEA,OAAO,KAAA;AACT;AAEO,MAAMU,UAAAA,GAAa,CAACV,GAAAA,EAAaQ,aAAa,KAAK,GAAA;IACxD,OAAOZ,MAAAA,CAAOe,IAAI,CAACrB,SAAAA,CAAAA,CAAWsB,IAAI,CAAC,CAACL,IAAAA,GAASD,gBAAAA,CAAiBC,IAAAA,EAAMP,GAAAA,EAAKQ,UAAAA,CAAAA,CAAAA;AAC3E;;;;;"}
|
package/dist/operators.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operators.mjs","sources":["../src/operators.ts"],"sourcesContent":["const GROUP_OPERATORS = ['$and', '$or'];\n\nconst WHERE_OPERATORS = [\n '$not',\n '$in',\n '$notIn',\n '$eq',\n '$eqi',\n '$ne',\n '$nei',\n '$gt',\n '$gte',\n '$lt',\n '$lte',\n '$null',\n '$notNull',\n '$between',\n '$startsWith',\n '$endsWith',\n '$startsWithi',\n '$endsWithi',\n '$contains',\n '$notContains',\n '$containsi',\n '$notContainsi',\n // Experimental, only for internal use\n '$jsonSupersetOf',\n];\n\nconst CAST_OPERATORS = [\n '$not',\n '$in',\n '$notIn',\n '$eq',\n '$ne',\n '$gt',\n '$gte',\n '$lt',\n '$lte',\n '$between',\n];\n\nconst ARRAY_OPERATORS = ['$in', '$notIn', '$between'];\n\nconst OPERATORS = {\n where: WHERE_OPERATORS,\n cast: CAST_OPERATORS,\n group: GROUP_OPERATORS,\n array: ARRAY_OPERATORS,\n};\n\n// for performance, cache all operators in lowercase\nconst OPERATORS_LOWERCASE = Object.fromEntries(\n Object.entries(OPERATORS).map(([key, values]) => [\n key,\n values.map((value) => value.toLowerCase()),\n ])\n);\n\nconst isObjKey = <T extends object>(key: string | symbol | number, obj: T): key is keyof T => {\n return key in obj;\n};\n\nexport const isOperatorOfType = (type: string, key: string, ignoreCase = false) => {\n if (ignoreCase) {\n return OPERATORS_LOWERCASE[type]?.includes(key.toLowerCase()) ?? false;\n }\n\n if (isObjKey(type, OPERATORS)) {\n return OPERATORS[type]?.includes(key) ?? false;\n }\n\n return false;\n};\n\nexport const isOperator = (key: string, ignoreCase = false) => {\n return Object.keys(OPERATORS).some((type) => isOperatorOfType(type, key, ignoreCase));\n};\n"],"names":["GROUP_OPERATORS","WHERE_OPERATORS","CAST_OPERATORS","ARRAY_OPERATORS","OPERATORS","where","cast","group","array","OPERATORS_LOWERCASE","Object","fromEntries","entries","map","key","values","value","toLowerCase","isObjKey","obj","isOperatorOfType","type","ignoreCase","includes","isOperator","keys","some"],"mappings":"AAAA,MAAMA,
|
|
1
|
+
{"version":3,"file":"operators.mjs","sources":["../src/operators.ts"],"sourcesContent":["const GROUP_OPERATORS = ['$and', '$or'];\n\nconst WHERE_OPERATORS = [\n '$not',\n '$in',\n '$notIn',\n '$eq',\n '$eqi',\n '$ne',\n '$nei',\n '$gt',\n '$gte',\n '$lt',\n '$lte',\n '$null',\n '$notNull',\n '$between',\n '$startsWith',\n '$endsWith',\n '$startsWithi',\n '$endsWithi',\n '$contains',\n '$notContains',\n '$containsi',\n '$notContainsi',\n // Experimental, only for internal use\n '$jsonSupersetOf',\n];\n\nconst CAST_OPERATORS = [\n '$not',\n '$in',\n '$notIn',\n '$eq',\n '$ne',\n '$gt',\n '$gte',\n '$lt',\n '$lte',\n '$between',\n];\n\nconst ARRAY_OPERATORS = ['$in', '$notIn', '$between'];\n\nconst OPERATORS = {\n where: WHERE_OPERATORS,\n cast: CAST_OPERATORS,\n group: GROUP_OPERATORS,\n array: ARRAY_OPERATORS,\n};\n\n// for performance, cache all operators in lowercase\nconst OPERATORS_LOWERCASE = Object.fromEntries(\n Object.entries(OPERATORS).map(([key, values]) => [\n key,\n values.map((value) => value.toLowerCase()),\n ])\n);\n\nconst isObjKey = <T extends object>(key: string | symbol | number, obj: T): key is keyof T => {\n return key in obj;\n};\n\nexport const isOperatorOfType = (type: string, key: string, ignoreCase = false) => {\n if (ignoreCase) {\n return OPERATORS_LOWERCASE[type]?.includes(key.toLowerCase()) ?? false;\n }\n\n if (isObjKey(type, OPERATORS)) {\n return OPERATORS[type]?.includes(key) ?? false;\n }\n\n return false;\n};\n\nexport const isOperator = (key: string, ignoreCase = false) => {\n return Object.keys(OPERATORS).some((type) => isOperatorOfType(type, key, ignoreCase));\n};\n"],"names":["GROUP_OPERATORS","WHERE_OPERATORS","CAST_OPERATORS","ARRAY_OPERATORS","OPERATORS","where","cast","group","array","OPERATORS_LOWERCASE","Object","fromEntries","entries","map","key","values","value","toLowerCase","isObjKey","obj","isOperatorOfType","type","ignoreCase","includes","isOperator","keys","some"],"mappings":"AAAA,MAAMA,eAAAA,GAAkB;AAAC,IAAA,MAAA;AAAQ,IAAA;AAAM,CAAA;AAEvC,MAAMC,eAAAA,GAAkB;AACtB,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,QAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,OAAA;AACA,IAAA,UAAA;AACA,IAAA,UAAA;AACA,IAAA,aAAA;AACA,IAAA,WAAA;AACA,IAAA,cAAA;AACA,IAAA,YAAA;AACA,IAAA,WAAA;AACA,IAAA,cAAA;AACA,IAAA,YAAA;AACA,IAAA,eAAA;;AAEA,IAAA;AACD,CAAA;AAED,MAAMC,cAAAA,GAAiB;AACrB,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,QAAA;AACA,IAAA,KAAA;AACA,IAAA,KAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA,KAAA;AACA,IAAA,MAAA;AACA,IAAA;AACD,CAAA;AAED,MAAMC,eAAAA,GAAkB;AAAC,IAAA,KAAA;AAAO,IAAA,QAAA;AAAU,IAAA;AAAW,CAAA;AAErD,MAAMC,SAAAA,GAAY;IAChBC,KAAAA,EAAOJ,eAAAA;IACPK,IAAAA,EAAMJ,cAAAA;IACNK,KAAAA,EAAOP,eAAAA;IACPQ,KAAAA,EAAOL;AACT,CAAA;AAEA;AACA,MAAMM,mBAAAA,GAAsBC,MAAAA,CAAOC,WAAW,CAC5CD,OAAOE,OAAO,CAACR,SAAAA,CAAAA,CAAWS,GAAG,CAAC,CAAC,CAACC,GAAAA,EAAKC,OAAO,GAAK;AAC/CD,QAAAA,GAAAA;AACAC,QAAAA,MAAAA,CAAOF,GAAG,CAAC,CAACG,KAAAA,GAAUA,MAAMC,WAAW,EAAA;AACxC,KAAA,CAAA,CAAA;AAGH,MAAMC,QAAAA,GAAW,CAAmBJ,GAAAA,EAA+BK,GAAAA,GAAAA;AACjE,IAAA,OAAOL,GAAAA,IAAOK,GAAAA;AAChB,CAAA;MAEaC,gBAAAA,GAAmB,CAACC,IAAAA,EAAcP,GAAAA,EAAaQ,aAAa,KAAK,GAAA;AAC5E,IAAA,IAAIA,UAAAA,EAAY;AACd,QAAA,OAAOb,mBAAmB,CAACY,IAAAA,CAAK,EAAEE,QAAAA,CAAST,GAAAA,CAAIG,WAAW,EAAA,CAAA,IAAO,KAAA;AACnE,IAAA;IAEA,IAAIC,QAAAA,CAASG,MAAMjB,SAAAA,CAAAA,EAAY;AAC7B,QAAA,OAAOA,SAAS,CAACiB,IAAAA,CAAK,EAAEE,SAAST,GAAAA,CAAAA,IAAQ,KAAA;AAC3C,IAAA;IAEA,OAAO,KAAA;AACT;AAEO,MAAMU,UAAAA,GAAa,CAACV,GAAAA,EAAaQ,aAAa,KAAK,GAAA;IACxD,OAAOZ,MAAAA,CAAOe,IAAI,CAACrB,SAAAA,CAAAA,CAAWsB,IAAI,CAAC,CAACL,IAAAA,GAASD,gBAAAA,CAAiBC,IAAAA,EAAMP,GAAAA,EAAKQ,UAAAA,CAAAA,CAAAA;AAC3E;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-manager.js","sources":["../src/package-manager.ts"],"sourcesContent":["import execa from 'execa';\nimport preferredPM from 'preferred-pm';\n\nimport type { Options as ProcessOptions } from 'execa';\n\nconst SUPPORTED_PACKAGE_MANAGERS = ['npm', 'yarn'];\nconst DEFAULT_PACKAGE_MANAGER = 'npm' as const;\n\ntype SupportedPackageManagerName = 'npm' | 'yarn';\n\nexport const getPreferred = async (pkgPath: string): Promise<SupportedPackageManagerName> => {\n const pm = await preferredPM(pkgPath);\n\n const hasPackageManager = pm !== undefined;\n if (!hasPackageManager) {\n throw new Error(`Couldn't find a package manager in your project.`);\n }\n\n const isPackageManagerSupported = SUPPORTED_PACKAGE_MANAGERS.includes(pm.name);\n if (!isPackageManagerSupported) {\n process.emitWarning(\n `We detected your package manager (${pm.name} v${pm.version}), but it's not officially supported by Strapi yet. Defaulting to npm instead.`\n );\n\n return DEFAULT_PACKAGE_MANAGER;\n }\n\n return pm.name as SupportedPackageManagerName;\n};\n\nexport const installDependencies = (\n path: string,\n packageManager: SupportedPackageManagerName,\n options: ProcessOptions<string> = {}\n) => {\n return execa(packageManager, ['install'], { ...options, cwd: path, stdin: 'ignore' });\n};\n"],"names":["SUPPORTED_PACKAGE_MANAGERS","DEFAULT_PACKAGE_MANAGER","getPreferred","pkgPath","pm","preferredPM","hasPackageManager","undefined","Error","isPackageManagerSupported","includes","name","process","emitWarning","version","installDependencies","path","packageManager","options","execa","cwd","stdin"],"mappings":";;;;;AAKA,MAAMA,
|
|
1
|
+
{"version":3,"file":"package-manager.js","sources":["../src/package-manager.ts"],"sourcesContent":["import execa from 'execa';\nimport preferredPM from 'preferred-pm';\n\nimport type { Options as ProcessOptions } from 'execa';\n\nconst SUPPORTED_PACKAGE_MANAGERS = ['npm', 'yarn'];\nconst DEFAULT_PACKAGE_MANAGER = 'npm' as const;\n\ntype SupportedPackageManagerName = 'npm' | 'yarn';\n\nexport const getPreferred = async (pkgPath: string): Promise<SupportedPackageManagerName> => {\n const pm = await preferredPM(pkgPath);\n\n const hasPackageManager = pm !== undefined;\n if (!hasPackageManager) {\n throw new Error(`Couldn't find a package manager in your project.`);\n }\n\n const isPackageManagerSupported = SUPPORTED_PACKAGE_MANAGERS.includes(pm.name);\n if (!isPackageManagerSupported) {\n process.emitWarning(\n `We detected your package manager (${pm.name} v${pm.version}), but it's not officially supported by Strapi yet. Defaulting to npm instead.`\n );\n\n return DEFAULT_PACKAGE_MANAGER;\n }\n\n return pm.name as SupportedPackageManagerName;\n};\n\nexport const installDependencies = (\n path: string,\n packageManager: SupportedPackageManagerName,\n options: ProcessOptions<string> = {}\n) => {\n return execa(packageManager, ['install'], { ...options, cwd: path, stdin: 'ignore' });\n};\n"],"names":["SUPPORTED_PACKAGE_MANAGERS","DEFAULT_PACKAGE_MANAGER","getPreferred","pkgPath","pm","preferredPM","hasPackageManager","undefined","Error","isPackageManagerSupported","includes","name","process","emitWarning","version","installDependencies","path","packageManager","options","execa","cwd","stdin"],"mappings":";;;;;AAKA,MAAMA,0BAAAA,GAA6B;AAAC,IAAA,KAAA;AAAO,IAAA;AAAO,CAAA;AAClD,MAAMC,uBAAAA,GAA0B,KAAA;AAIzB,MAAMC,eAAe,OAAOC,OAAAA,GAAAA;IACjC,MAAMC,EAAAA,GAAK,MAAMC,WAAAA,CAAYF,OAAAA,CAAAA;AAE7B,IAAA,MAAMG,oBAAoBF,EAAAA,KAAOG,SAAAA;AACjC,IAAA,IAAI,CAACD,iBAAAA,EAAmB;AACtB,QAAA,MAAM,IAAIE,KAAAA,CAAM,CAAC,gDAAgD,CAAC,CAAA;AACpE,IAAA;AAEA,IAAA,MAAMC,yBAAAA,GAA4BT,0BAAAA,CAA2BU,QAAQ,CAACN,GAAGO,IAAI,CAAA;AAC7E,IAAA,IAAI,CAACF,yBAAAA,EAA2B;AAC9BG,QAAAA,OAAAA,CAAQC,WAAW,CACjB,CAAC,kCAAkC,EAAET,EAAAA,CAAGO,IAAI,CAAC,EAAE,EAAEP,EAAAA,CAAGU,OAAO,CAAC,8EAA8E,CAAC,CAAA;QAG7I,OAAOb,uBAAAA;AACT,IAAA;AAEA,IAAA,OAAOG,GAAGO,IAAI;AAChB;MAEaI,mBAAAA,GAAsB,CACjCC,MACAC,cAAAA,EACAC,OAAAA,GAAkC,EAAE,GAAA;AAEpC,IAAA,OAAOC,MAAMF,cAAAA,EAAgB;AAAC,QAAA;KAAU,EAAE;AAAE,QAAA,GAAGC,OAAO;QAAEE,GAAAA,EAAKJ,IAAAA;QAAMK,KAAAA,EAAO;AAAS,KAAA,CAAA;AACrF;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-manager.mjs","sources":["../src/package-manager.ts"],"sourcesContent":["import execa from 'execa';\nimport preferredPM from 'preferred-pm';\n\nimport type { Options as ProcessOptions } from 'execa';\n\nconst SUPPORTED_PACKAGE_MANAGERS = ['npm', 'yarn'];\nconst DEFAULT_PACKAGE_MANAGER = 'npm' as const;\n\ntype SupportedPackageManagerName = 'npm' | 'yarn';\n\nexport const getPreferred = async (pkgPath: string): Promise<SupportedPackageManagerName> => {\n const pm = await preferredPM(pkgPath);\n\n const hasPackageManager = pm !== undefined;\n if (!hasPackageManager) {\n throw new Error(`Couldn't find a package manager in your project.`);\n }\n\n const isPackageManagerSupported = SUPPORTED_PACKAGE_MANAGERS.includes(pm.name);\n if (!isPackageManagerSupported) {\n process.emitWarning(\n `We detected your package manager (${pm.name} v${pm.version}), but it's not officially supported by Strapi yet. Defaulting to npm instead.`\n );\n\n return DEFAULT_PACKAGE_MANAGER;\n }\n\n return pm.name as SupportedPackageManagerName;\n};\n\nexport const installDependencies = (\n path: string,\n packageManager: SupportedPackageManagerName,\n options: ProcessOptions<string> = {}\n) => {\n return execa(packageManager, ['install'], { ...options, cwd: path, stdin: 'ignore' });\n};\n"],"names":["SUPPORTED_PACKAGE_MANAGERS","DEFAULT_PACKAGE_MANAGER","getPreferred","pkgPath","pm","preferredPM","hasPackageManager","undefined","Error","isPackageManagerSupported","includes","name","process","emitWarning","version","installDependencies","path","packageManager","options","execa","cwd","stdin"],"mappings":";;;AAKA,MAAMA,
|
|
1
|
+
{"version":3,"file":"package-manager.mjs","sources":["../src/package-manager.ts"],"sourcesContent":["import execa from 'execa';\nimport preferredPM from 'preferred-pm';\n\nimport type { Options as ProcessOptions } from 'execa';\n\nconst SUPPORTED_PACKAGE_MANAGERS = ['npm', 'yarn'];\nconst DEFAULT_PACKAGE_MANAGER = 'npm' as const;\n\ntype SupportedPackageManagerName = 'npm' | 'yarn';\n\nexport const getPreferred = async (pkgPath: string): Promise<SupportedPackageManagerName> => {\n const pm = await preferredPM(pkgPath);\n\n const hasPackageManager = pm !== undefined;\n if (!hasPackageManager) {\n throw new Error(`Couldn't find a package manager in your project.`);\n }\n\n const isPackageManagerSupported = SUPPORTED_PACKAGE_MANAGERS.includes(pm.name);\n if (!isPackageManagerSupported) {\n process.emitWarning(\n `We detected your package manager (${pm.name} v${pm.version}), but it's not officially supported by Strapi yet. Defaulting to npm instead.`\n );\n\n return DEFAULT_PACKAGE_MANAGER;\n }\n\n return pm.name as SupportedPackageManagerName;\n};\n\nexport const installDependencies = (\n path: string,\n packageManager: SupportedPackageManagerName,\n options: ProcessOptions<string> = {}\n) => {\n return execa(packageManager, ['install'], { ...options, cwd: path, stdin: 'ignore' });\n};\n"],"names":["SUPPORTED_PACKAGE_MANAGERS","DEFAULT_PACKAGE_MANAGER","getPreferred","pkgPath","pm","preferredPM","hasPackageManager","undefined","Error","isPackageManagerSupported","includes","name","process","emitWarning","version","installDependencies","path","packageManager","options","execa","cwd","stdin"],"mappings":";;;AAKA,MAAMA,0BAAAA,GAA6B;AAAC,IAAA,KAAA;AAAO,IAAA;AAAO,CAAA;AAClD,MAAMC,uBAAAA,GAA0B,KAAA;AAIzB,MAAMC,eAAe,OAAOC,OAAAA,GAAAA;IACjC,MAAMC,EAAAA,GAAK,MAAMC,WAAAA,CAAYF,OAAAA,CAAAA;AAE7B,IAAA,MAAMG,oBAAoBF,EAAAA,KAAOG,SAAAA;AACjC,IAAA,IAAI,CAACD,iBAAAA,EAAmB;AACtB,QAAA,MAAM,IAAIE,KAAAA,CAAM,CAAC,gDAAgD,CAAC,CAAA;AACpE,IAAA;AAEA,IAAA,MAAMC,yBAAAA,GAA4BT,0BAAAA,CAA2BU,QAAQ,CAACN,GAAGO,IAAI,CAAA;AAC7E,IAAA,IAAI,CAACF,yBAAAA,EAA2B;AAC9BG,QAAAA,OAAAA,CAAQC,WAAW,CACjB,CAAC,kCAAkC,EAAET,EAAAA,CAAGO,IAAI,CAAC,EAAE,EAAEP,EAAAA,CAAGU,OAAO,CAAC,8EAA8E,CAAC,CAAA;QAG7I,OAAOb,uBAAAA;AACT,IAAA;AAEA,IAAA,OAAOG,GAAGO,IAAI;AAChB;MAEaI,mBAAAA,GAAsB,CACjCC,MACAC,cAAAA,EACAC,OAAAA,GAAkC,EAAE,GAAA;AAEpC,IAAA,OAAOC,MAAMF,cAAAA,EAAgB;AAAC,QAAA;KAAU,EAAE;AAAE,QAAA,GAAGC,OAAO;QAAEE,GAAAA,EAAKJ,IAAAA;QAAMK,KAAAA,EAAO;AAAS,KAAA,CAAA;AACrF;;;;"}
|
package/dist/pagination.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.js","sources":["../src/pagination.ts"],"sourcesContent":["import { merge, pipe, omit, isNil } from 'lodash/fp';\nimport { PaginationError } from './errors';\n\ninterface PaginationArgs {\n page: number;\n pageSize: number;\n start: number;\n limit: number;\n}\n\nexport interface Pagination {\n start: number;\n limit: number;\n}\n\nexport interface PagePatinationInformation {\n page: number;\n pageSize: number;\n pageCount: number;\n total: number;\n}\n\nexport interface OffsetPaginationInformation {\n start: number;\n limit: number;\n total: number;\n}\n\nconst STRAPI_DEFAULTS = {\n offset: {\n start: 0,\n limit: 10,\n },\n page: {\n page: 1,\n pageSize: 10,\n },\n};\n\nconst paginationAttributes = ['start', 'limit', 'page', 'pageSize'];\n\nconst withMaxLimit = (limit: number, maxLimit = -1) => {\n if (maxLimit === -1 || limit < maxLimit) {\n return limit;\n }\n\n return maxLimit;\n};\n\n// Ensure minimum page & pageSize values (page >= 1, pageSize >= 0, start >= 0, limit >= 0)\nconst ensureMinValues = ({ start, limit }: Pagination) => ({\n start: Math.max(start, 0),\n limit: limit === -1 ? limit : Math.max(limit, 1),\n});\n\nconst ensureMaxValues =\n (maxLimit = -1) =>\n ({ start, limit }: { start: number; limit: number }) => ({\n start,\n limit: withMaxLimit(limit, maxLimit),\n });\n\n// Apply maxLimit as the limit when limit is -1\nconst withNoLimit = (pagination: Pagination, maxLimit = -1) => ({\n ...pagination,\n limit: pagination.limit === -1 ? maxLimit : pagination.limit,\n});\n\nconst withDefaultPagination = <T extends Partial<PaginationArgs>>(\n args: T,\n { defaults = {}, maxLimit = -1 } = {}\n) => {\n const defaultValues = merge(STRAPI_DEFAULTS, defaults);\n\n const usePagePagination = !isNil(args.page) || !isNil(args.pageSize);\n const useOffsetPagination = !isNil(args.start) || !isNil(args.limit);\n\n const ensureValidValues = pipe(ensureMinValues, ensureMaxValues(maxLimit));\n\n // If there is no pagination attribute, don't modify the payload\n if (!usePagePagination && !useOffsetPagination) {\n return merge(args, ensureValidValues(defaultValues.offset));\n }\n\n // If there is page & offset pagination attributes, throw an error\n if (usePagePagination && useOffsetPagination) {\n throw new PaginationError('Cannot use both page & offset pagination in the same query');\n }\n\n const pagination: Pagination = {\n start: 0,\n limit: 0,\n };\n\n // Start / Limit\n if (useOffsetPagination) {\n const { start, limit } = merge(defaultValues.offset, args);\n\n Object.assign(pagination, { start, limit });\n }\n\n // Page / PageSize\n if (usePagePagination) {\n const { page, pageSize } = merge(defaultValues.page, {\n ...args,\n pageSize: Math.max(1, args.pageSize ?? 0),\n });\n\n Object.assign(pagination, {\n start: (page - 1) * pageSize,\n limit: pageSize,\n });\n }\n\n // Handle -1 limit\n Object.assign(pagination, withNoLimit(pagination, maxLimit));\n\n const replacePaginationAttributes = pipe(\n // Remove pagination attributes\n omit(paginationAttributes),\n // Merge the object with the new pagination + ensure minimum & maximum values\n merge(ensureValidValues(pagination))\n );\n\n return replacePaginationAttributes(args);\n};\n\n/**\n * Transform pagination information into a paginated response:\n * {\n * page: number,\n * pageSize: number,\n * pageCount: number,\n * total: number\n * }\n */\nconst transformPagedPaginationInfo = (\n paginationInfo: Partial<PaginationArgs>,\n total: number\n): PagePatinationInformation => {\n if (!isNil(paginationInfo.page)) {\n const page = paginationInfo.page;\n const pageSize = paginationInfo.pageSize ?? total;\n\n return {\n page,\n pageSize,\n pageCount: pageSize > 0 ? Math.ceil(total / pageSize) : 0,\n total,\n };\n }\n\n if (!isNil(paginationInfo.start)) {\n const start = paginationInfo.start;\n const limit = paginationInfo.limit ?? total;\n\n // Start limit to page page size\n return {\n page: Math.floor(start / limit) + 1,\n pageSize: limit,\n pageCount: limit > 0 ? Math.ceil(total / limit) : 0,\n total,\n };\n }\n\n // Default pagination\n return {\n ...paginationInfo,\n page: 1,\n pageSize: 10,\n pageCount: 1,\n total,\n };\n};\n\n/**\n * Transform pagination information into a offset response:\n * {\n * start: number,\n * limit: number,\n * total: number\n * }\n */\nconst transformOffsetPaginationInfo = (\n paginationInfo: Partial<PaginationArgs>,\n total: number\n): OffsetPaginationInformation => {\n if (!isNil(paginationInfo.page)) {\n const limit = paginationInfo.pageSize ?? total;\n const start = (paginationInfo.page - 1) * limit;\n\n return { start, limit, total };\n }\n\n if (!isNil(paginationInfo.start)) {\n const start = paginationInfo.start;\n const limit = paginationInfo.limit ?? total;\n\n // Start limit to page page size\n return { start, limit, total };\n }\n\n // Default pagination\n return {\n ...paginationInfo,\n start: 0,\n limit: 10,\n total,\n };\n};\n\nexport { withDefaultPagination, transformPagedPaginationInfo, transformOffsetPaginationInfo };\n"],"names":["STRAPI_DEFAULTS","offset","start","limit","page","pageSize","paginationAttributes","withMaxLimit","maxLimit","ensureMinValues","Math","max","ensureMaxValues","withNoLimit","pagination","withDefaultPagination","args","defaults","defaultValues","merge","usePagePagination","isNil","useOffsetPagination","ensureValidValues","pipe","PaginationError","Object","assign","replacePaginationAttributes","omit","transformPagedPaginationInfo","paginationInfo","total","pageCount","ceil","floor","transformOffsetPaginationInfo"],"mappings":";;;;;AA4BA,MAAMA,eAAkB,GAAA;IACtBC,MAAQ,EAAA;QACNC,KAAO,EAAA,CAAA;QACPC,KAAO,EAAA;AACT,KAAA;IACAC,IAAM,EAAA;QACJA,IAAM,EAAA,CAAA;QACNC,QAAU,EAAA;AACZ;AACF,CAAA;AAEA,MAAMC,oBAAuB,GAAA;AAAC,IAAA,OAAA;AAAS,IAAA,OAAA;AAAS,IAAA,MAAA;AAAQ,IAAA;AAAW,CAAA;AAEnE,MAAMC,YAAe,GAAA,CAACJ,KAAeK,EAAAA,QAAAA,GAAW,CAAC,CAAC,GAAA;AAChD,IAAA,IAAIA,QAAa,KAAA,CAAC,CAAKL,IAAAA,KAAAA,GAAQK,QAAU,EAAA;QACvC,OAAOL,KAAAA;AACT;IAEA,OAAOK,QAAAA;AACT,CAAA;AAEA;AACA,MAAMC,eAAAA,GAAkB,CAAC,EAAEP,KAAK,EAAEC,KAAK,EAAc,IAAM;QACzDD,KAAOQ,EAAAA,IAAAA,CAAKC,GAAG,CAACT,KAAO,EAAA,CAAA,CAAA;AACvBC,QAAAA,KAAAA,EAAOA,UAAU,CAAC,CAAA,GAAIA,QAAQO,IAAKC,CAAAA,GAAG,CAACR,KAAO,EAAA,CAAA;KAChD,CAAA;AAEA,MAAMS,eACJ,GAAA,CAACJ,QAAW,GAAA,CAAC,CAAC,GACd,CAAC,EAAEN,KAAK,EAAEC,KAAK,EAAoC,IAAM;AACvDD,YAAAA,KAAAA;AACAC,YAAAA,KAAAA,EAAOI,aAAaJ,KAAOK,EAAAA,QAAAA;SAC7B,CAAA;AAEF;AACA,MAAMK,cAAc,CAACC,UAAAA,EAAwBN,WAAW,CAAC,CAAC,IAAM;AAC9D,QAAA,GAAGM,UAAU;AACbX,QAAAA,KAAAA,EAAOW,WAAWX,KAAK,KAAK,CAAC,CAAIK,GAAAA,QAAAA,GAAWM,WAAWX;KACzD,CAAA;AAEA,MAAMY,qBAAwB,GAAA,CAC5BC,IACA,EAAA,EAAEC,WAAW,EAAE,EAAET,QAAAA,GAAW,CAAC,CAAC,EAAE,GAAG,EAAE,GAAA;IAErC,MAAMU,aAAAA,GAAgBC,SAAMnB,eAAiBiB,EAAAA,QAAAA,CAAAA;IAE7C,MAAMG,iBAAAA,GAAoB,CAACC,QAAML,CAAAA,IAAAA,CAAKZ,IAAI,CAAK,IAAA,CAACiB,QAAML,CAAAA,IAAAA,CAAKX,QAAQ,CAAA;IACnE,MAAMiB,mBAAAA,GAAsB,CAACD,QAAML,CAAAA,IAAAA,CAAKd,KAAK,CAAK,IAAA,CAACmB,QAAML,CAAAA,IAAAA,CAAKb,KAAK,CAAA;IAEnE,MAAMoB,iBAAAA,GAAoBC,OAAKf,CAAAA,eAAAA,EAAiBG,eAAgBJ,CAAAA,QAAAA,CAAAA,CAAAA;;IAGhE,IAAI,CAACY,iBAAqB,IAAA,CAACE,mBAAqB,EAAA;AAC9C,QAAA,OAAOH,QAAMH,CAAAA,IAAAA,EAAMO,iBAAkBL,CAAAA,aAAAA,CAAcjB,MAAM,CAAA,CAAA;AAC3D;;AAGA,IAAA,IAAImB,qBAAqBE,mBAAqB,EAAA;AAC5C,QAAA,MAAM,IAAIG,sBAAgB,CAAA,4DAAA,CAAA;AAC5B;AAEA,IAAA,MAAMX,UAAyB,GAAA;QAC7BZ,KAAO,EAAA,CAAA;QACPC,KAAO,EAAA;AACT,KAAA;;AAGA,IAAA,IAAImB,mBAAqB,EAAA;QACvB,MAAM,EAAEpB,KAAK,EAAEC,KAAK,EAAE,GAAGgB,QAAAA,CAAMD,aAAcjB,CAAAA,MAAM,EAAEe,IAAAA,CAAAA;QAErDU,MAAOC,CAAAA,MAAM,CAACb,UAAY,EAAA;AAAEZ,YAAAA,KAAAA;AAAOC,YAAAA;AAAM,SAAA,CAAA;AAC3C;;AAGA,IAAA,IAAIiB,iBAAmB,EAAA;QACrB,MAAM,EAAEhB,IAAI,EAAEC,QAAQ,EAAE,GAAGc,QAAAA,CAAMD,aAAcd,CAAAA,IAAI,EAAE;AACnD,YAAA,GAAGY,IAAI;AACPX,YAAAA,QAAAA,EAAUK,KAAKC,GAAG,CAAC,CAAGK,EAAAA,IAAAA,CAAKX,QAAQ,IAAI,CAAA;AACzC,SAAA,CAAA;QAEAqB,MAAOC,CAAAA,MAAM,CAACb,UAAY,EAAA;AACxBZ,YAAAA,KAAAA,EAAO,CAACE,IAAO,GAAA,CAAA,IAAKC,QAAAA;YACpBF,KAAOE,EAAAA;AACT,SAAA,CAAA;AACF;;AAGAqB,IAAAA,MAAAA,CAAOC,MAAM,CAACb,UAAYD,EAAAA,WAAAA,CAAYC,UAAYN,EAAAA,QAAAA,CAAAA,CAAAA;IAElD,MAAMoB,2BAAAA,GAA8BJ;AAElCK,IAAAA,OAAAA,CAAKvB;AAELa,IAAAA,QAAAA,CAAMI,iBAAkBT,CAAAA,UAAAA,CAAAA,CAAAA,CAAAA;AAG1B,IAAA,OAAOc,2BAA4BZ,CAAAA,IAAAA,CAAAA;AACrC;AAEA;;;;;;;;IASA,MAAMc,4BAA+B,GAAA,CACnCC,cACAC,EAAAA,KAAAA,GAAAA;AAEA,IAAA,IAAI,CAACX,QAAAA,CAAMU,cAAe3B,CAAAA,IAAI,CAAG,EAAA;QAC/B,MAAMA,IAAAA,GAAO2B,eAAe3B,IAAI;QAChC,MAAMC,QAAAA,GAAW0B,cAAe1B,CAAAA,QAAQ,IAAI2B,KAAAA;QAE5C,OAAO;AACL5B,YAAAA,IAAAA;AACAC,YAAAA,QAAAA;AACA4B,YAAAA,SAAAA,EAAW5B,WAAW,CAAIK,GAAAA,IAAAA,CAAKwB,IAAI,CAACF,QAAQ3B,QAAY,CAAA,GAAA,CAAA;AACxD2B,YAAAA;AACF,SAAA;AACF;AAEA,IAAA,IAAI,CAACX,QAAAA,CAAMU,cAAe7B,CAAAA,KAAK,CAAG,EAAA;QAChC,MAAMA,KAAAA,GAAQ6B,eAAe7B,KAAK;QAClC,MAAMC,KAAAA,GAAQ4B,cAAe5B,CAAAA,KAAK,IAAI6B,KAAAA;;QAGtC,OAAO;AACL5B,YAAAA,IAAAA,EAAMM,IAAKyB,CAAAA,KAAK,CAACjC,KAAAA,GAAQC,KAAS,CAAA,GAAA,CAAA;YAClCE,QAAUF,EAAAA,KAAAA;AACV8B,YAAAA,SAAAA,EAAW9B,QAAQ,CAAIO,GAAAA,IAAAA,CAAKwB,IAAI,CAACF,QAAQ7B,KAAS,CAAA,GAAA,CAAA;AAClD6B,YAAAA;AACF,SAAA;AACF;;IAGA,OAAO;AACL,QAAA,GAAGD,cAAc;QACjB3B,IAAM,EAAA,CAAA;QACNC,QAAU,EAAA,EAAA;QACV4B,SAAW,EAAA,CAAA;AACXD,QAAAA;AACF,KAAA;AACF;AAEA;;;;;;;IAQA,MAAMI,6BAAgC,GAAA,CACpCL,cACAC,EAAAA,KAAAA,GAAAA;AAEA,IAAA,IAAI,CAACX,QAAAA,CAAMU,cAAe3B,CAAAA,IAAI,CAAG,EAAA;QAC/B,MAAMD,KAAAA,GAAQ4B,cAAe1B,CAAAA,QAAQ,IAAI2B,KAAAA;AACzC,QAAA,MAAM9B,QAAQ,CAAC6B,eAAe3B,IAAI,GAAG,CAAA,IAAKD,KAAAA;QAE1C,OAAO;AAAED,YAAAA,KAAAA;AAAOC,YAAAA,KAAAA;AAAO6B,YAAAA;AAAM,SAAA;AAC/B;AAEA,IAAA,IAAI,CAACX,QAAAA,CAAMU,cAAe7B,CAAAA,KAAK,CAAG,EAAA;QAChC,MAAMA,KAAAA,GAAQ6B,eAAe7B,KAAK;QAClC,MAAMC,KAAAA,GAAQ4B,cAAe5B,CAAAA,KAAK,IAAI6B,KAAAA;;QAGtC,OAAO;AAAE9B,YAAAA,KAAAA;AAAOC,YAAAA,KAAAA;AAAO6B,YAAAA;AAAM,SAAA;AAC/B;;IAGA,OAAO;AACL,QAAA,GAAGD,cAAc;QACjB7B,KAAO,EAAA,CAAA;QACPC,KAAO,EAAA,EAAA;AACP6B,QAAAA;AACF,KAAA;AACF;;;;;;"}
|
|
1
|
+
{"version":3,"file":"pagination.js","sources":["../src/pagination.ts"],"sourcesContent":["import { merge, pipe, omit, isNil } from 'lodash/fp';\nimport { PaginationError } from './errors';\n\ninterface PaginationArgs {\n page: number;\n pageSize: number;\n start: number;\n limit: number;\n}\n\nexport interface Pagination {\n start: number;\n limit: number;\n}\n\nexport interface PagePatinationInformation {\n page: number;\n pageSize: number;\n pageCount: number;\n total: number;\n}\n\nexport interface OffsetPaginationInformation {\n start: number;\n limit: number;\n total: number;\n}\n\nconst STRAPI_DEFAULTS = {\n offset: {\n start: 0,\n limit: 10,\n },\n page: {\n page: 1,\n pageSize: 10,\n },\n};\n\nconst paginationAttributes = ['start', 'limit', 'page', 'pageSize'];\n\nconst withMaxLimit = (limit: number, maxLimit = -1) => {\n if (maxLimit === -1 || limit < maxLimit) {\n return limit;\n }\n\n return maxLimit;\n};\n\n// Ensure minimum page & pageSize values (page >= 1, pageSize >= 0, start >= 0, limit >= 0)\nconst ensureMinValues = ({ start, limit }: Pagination) => ({\n start: Math.max(start, 0),\n limit: limit === -1 ? limit : Math.max(limit, 1),\n});\n\nconst ensureMaxValues =\n (maxLimit = -1) =>\n ({ start, limit }: { start: number; limit: number }) => ({\n start,\n limit: withMaxLimit(limit, maxLimit),\n });\n\n// Apply maxLimit as the limit when limit is -1\nconst withNoLimit = (pagination: Pagination, maxLimit = -1) => ({\n ...pagination,\n limit: pagination.limit === -1 ? maxLimit : pagination.limit,\n});\n\nconst withDefaultPagination = <T extends Partial<PaginationArgs>>(\n args: T,\n { defaults = {}, maxLimit = -1 } = {}\n) => {\n const defaultValues = merge(STRAPI_DEFAULTS, defaults);\n\n const usePagePagination = !isNil(args.page) || !isNil(args.pageSize);\n const useOffsetPagination = !isNil(args.start) || !isNil(args.limit);\n\n const ensureValidValues = pipe(ensureMinValues, ensureMaxValues(maxLimit));\n\n // If there is no pagination attribute, don't modify the payload\n if (!usePagePagination && !useOffsetPagination) {\n return merge(args, ensureValidValues(defaultValues.offset));\n }\n\n // If there is page & offset pagination attributes, throw an error\n if (usePagePagination && useOffsetPagination) {\n throw new PaginationError('Cannot use both page & offset pagination in the same query');\n }\n\n const pagination: Pagination = {\n start: 0,\n limit: 0,\n };\n\n // Start / Limit\n if (useOffsetPagination) {\n const { start, limit } = merge(defaultValues.offset, args);\n\n Object.assign(pagination, { start, limit });\n }\n\n // Page / PageSize\n if (usePagePagination) {\n const { page, pageSize } = merge(defaultValues.page, {\n ...args,\n pageSize: Math.max(1, args.pageSize ?? 0),\n });\n\n Object.assign(pagination, {\n start: (page - 1) * pageSize,\n limit: pageSize,\n });\n }\n\n // Handle -1 limit\n Object.assign(pagination, withNoLimit(pagination, maxLimit));\n\n const replacePaginationAttributes = pipe(\n // Remove pagination attributes\n omit(paginationAttributes),\n // Merge the object with the new pagination + ensure minimum & maximum values\n merge(ensureValidValues(pagination))\n );\n\n return replacePaginationAttributes(args);\n};\n\n/**\n * Transform pagination information into a paginated response:\n * {\n * page: number,\n * pageSize: number,\n * pageCount: number,\n * total: number\n * }\n */\nconst transformPagedPaginationInfo = (\n paginationInfo: Partial<PaginationArgs>,\n total: number\n): PagePatinationInformation => {\n if (!isNil(paginationInfo.page)) {\n const page = paginationInfo.page;\n const pageSize = paginationInfo.pageSize ?? total;\n\n return {\n page,\n pageSize,\n pageCount: pageSize > 0 ? Math.ceil(total / pageSize) : 0,\n total,\n };\n }\n\n if (!isNil(paginationInfo.start)) {\n const start = paginationInfo.start;\n const limit = paginationInfo.limit ?? total;\n\n // Start limit to page page size\n return {\n page: Math.floor(start / limit) + 1,\n pageSize: limit,\n pageCount: limit > 0 ? Math.ceil(total / limit) : 0,\n total,\n };\n }\n\n // Default pagination\n return {\n ...paginationInfo,\n page: 1,\n pageSize: 10,\n pageCount: 1,\n total,\n };\n};\n\n/**\n * Transform pagination information into a offset response:\n * {\n * start: number,\n * limit: number,\n * total: number\n * }\n */\nconst transformOffsetPaginationInfo = (\n paginationInfo: Partial<PaginationArgs>,\n total: number\n): OffsetPaginationInformation => {\n if (!isNil(paginationInfo.page)) {\n const limit = paginationInfo.pageSize ?? total;\n const start = (paginationInfo.page - 1) * limit;\n\n return { start, limit, total };\n }\n\n if (!isNil(paginationInfo.start)) {\n const start = paginationInfo.start;\n const limit = paginationInfo.limit ?? total;\n\n // Start limit to page page size\n return { start, limit, total };\n }\n\n // Default pagination\n return {\n ...paginationInfo,\n start: 0,\n limit: 10,\n total,\n };\n};\n\nexport { withDefaultPagination, transformPagedPaginationInfo, transformOffsetPaginationInfo };\n"],"names":["STRAPI_DEFAULTS","offset","start","limit","page","pageSize","paginationAttributes","withMaxLimit","maxLimit","ensureMinValues","Math","max","ensureMaxValues","withNoLimit","pagination","withDefaultPagination","args","defaults","defaultValues","merge","usePagePagination","isNil","useOffsetPagination","ensureValidValues","pipe","PaginationError","Object","assign","replacePaginationAttributes","omit","transformPagedPaginationInfo","paginationInfo","total","pageCount","ceil","floor","transformOffsetPaginationInfo"],"mappings":"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"}
|
package/dist/pagination.mjs
CHANGED
package/dist/pagination.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.mjs","sources":["../src/pagination.ts"],"sourcesContent":["import { merge, pipe, omit, isNil } from 'lodash/fp';\nimport { PaginationError } from './errors';\n\ninterface PaginationArgs {\n page: number;\n pageSize: number;\n start: number;\n limit: number;\n}\n\nexport interface Pagination {\n start: number;\n limit: number;\n}\n\nexport interface PagePatinationInformation {\n page: number;\n pageSize: number;\n pageCount: number;\n total: number;\n}\n\nexport interface OffsetPaginationInformation {\n start: number;\n limit: number;\n total: number;\n}\n\nconst STRAPI_DEFAULTS = {\n offset: {\n start: 0,\n limit: 10,\n },\n page: {\n page: 1,\n pageSize: 10,\n },\n};\n\nconst paginationAttributes = ['start', 'limit', 'page', 'pageSize'];\n\nconst withMaxLimit = (limit: number, maxLimit = -1) => {\n if (maxLimit === -1 || limit < maxLimit) {\n return limit;\n }\n\n return maxLimit;\n};\n\n// Ensure minimum page & pageSize values (page >= 1, pageSize >= 0, start >= 0, limit >= 0)\nconst ensureMinValues = ({ start, limit }: Pagination) => ({\n start: Math.max(start, 0),\n limit: limit === -1 ? limit : Math.max(limit, 1),\n});\n\nconst ensureMaxValues =\n (maxLimit = -1) =>\n ({ start, limit }: { start: number; limit: number }) => ({\n start,\n limit: withMaxLimit(limit, maxLimit),\n });\n\n// Apply maxLimit as the limit when limit is -1\nconst withNoLimit = (pagination: Pagination, maxLimit = -1) => ({\n ...pagination,\n limit: pagination.limit === -1 ? maxLimit : pagination.limit,\n});\n\nconst withDefaultPagination = <T extends Partial<PaginationArgs>>(\n args: T,\n { defaults = {}, maxLimit = -1 } = {}\n) => {\n const defaultValues = merge(STRAPI_DEFAULTS, defaults);\n\n const usePagePagination = !isNil(args.page) || !isNil(args.pageSize);\n const useOffsetPagination = !isNil(args.start) || !isNil(args.limit);\n\n const ensureValidValues = pipe(ensureMinValues, ensureMaxValues(maxLimit));\n\n // If there is no pagination attribute, don't modify the payload\n if (!usePagePagination && !useOffsetPagination) {\n return merge(args, ensureValidValues(defaultValues.offset));\n }\n\n // If there is page & offset pagination attributes, throw an error\n if (usePagePagination && useOffsetPagination) {\n throw new PaginationError('Cannot use both page & offset pagination in the same query');\n }\n\n const pagination: Pagination = {\n start: 0,\n limit: 0,\n };\n\n // Start / Limit\n if (useOffsetPagination) {\n const { start, limit } = merge(defaultValues.offset, args);\n\n Object.assign(pagination, { start, limit });\n }\n\n // Page / PageSize\n if (usePagePagination) {\n const { page, pageSize } = merge(defaultValues.page, {\n ...args,\n pageSize: Math.max(1, args.pageSize ?? 0),\n });\n\n Object.assign(pagination, {\n start: (page - 1) * pageSize,\n limit: pageSize,\n });\n }\n\n // Handle -1 limit\n Object.assign(pagination, withNoLimit(pagination, maxLimit));\n\n const replacePaginationAttributes = pipe(\n // Remove pagination attributes\n omit(paginationAttributes),\n // Merge the object with the new pagination + ensure minimum & maximum values\n merge(ensureValidValues(pagination))\n );\n\n return replacePaginationAttributes(args);\n};\n\n/**\n * Transform pagination information into a paginated response:\n * {\n * page: number,\n * pageSize: number,\n * pageCount: number,\n * total: number\n * }\n */\nconst transformPagedPaginationInfo = (\n paginationInfo: Partial<PaginationArgs>,\n total: number\n): PagePatinationInformation => {\n if (!isNil(paginationInfo.page)) {\n const page = paginationInfo.page;\n const pageSize = paginationInfo.pageSize ?? total;\n\n return {\n page,\n pageSize,\n pageCount: pageSize > 0 ? Math.ceil(total / pageSize) : 0,\n total,\n };\n }\n\n if (!isNil(paginationInfo.start)) {\n const start = paginationInfo.start;\n const limit = paginationInfo.limit ?? total;\n\n // Start limit to page page size\n return {\n page: Math.floor(start / limit) + 1,\n pageSize: limit,\n pageCount: limit > 0 ? Math.ceil(total / limit) : 0,\n total,\n };\n }\n\n // Default pagination\n return {\n ...paginationInfo,\n page: 1,\n pageSize: 10,\n pageCount: 1,\n total,\n };\n};\n\n/**\n * Transform pagination information into a offset response:\n * {\n * start: number,\n * limit: number,\n * total: number\n * }\n */\nconst transformOffsetPaginationInfo = (\n paginationInfo: Partial<PaginationArgs>,\n total: number\n): OffsetPaginationInformation => {\n if (!isNil(paginationInfo.page)) {\n const limit = paginationInfo.pageSize ?? total;\n const start = (paginationInfo.page - 1) * limit;\n\n return { start, limit, total };\n }\n\n if (!isNil(paginationInfo.start)) {\n const start = paginationInfo.start;\n const limit = paginationInfo.limit ?? total;\n\n // Start limit to page page size\n return { start, limit, total };\n }\n\n // Default pagination\n return {\n ...paginationInfo,\n start: 0,\n limit: 10,\n total,\n };\n};\n\nexport { withDefaultPagination, transformPagedPaginationInfo, transformOffsetPaginationInfo };\n"],"names":["STRAPI_DEFAULTS","offset","start","limit","page","pageSize","paginationAttributes","withMaxLimit","maxLimit","ensureMinValues","Math","max","ensureMaxValues","withNoLimit","pagination","withDefaultPagination","args","defaults","defaultValues","merge","usePagePagination","isNil","useOffsetPagination","ensureValidValues","pipe","PaginationError","Object","assign","replacePaginationAttributes","omit","transformPagedPaginationInfo","paginationInfo","total","pageCount","ceil","floor","transformOffsetPaginationInfo"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pagination.mjs","sources":["../src/pagination.ts"],"sourcesContent":["import { merge, pipe, omit, isNil } from 'lodash/fp';\nimport { PaginationError } from './errors';\n\ninterface PaginationArgs {\n page: number;\n pageSize: number;\n start: number;\n limit: number;\n}\n\nexport interface Pagination {\n start: number;\n limit: number;\n}\n\nexport interface PagePatinationInformation {\n page: number;\n pageSize: number;\n pageCount: number;\n total: number;\n}\n\nexport interface OffsetPaginationInformation {\n start: number;\n limit: number;\n total: number;\n}\n\nconst STRAPI_DEFAULTS = {\n offset: {\n start: 0,\n limit: 10,\n },\n page: {\n page: 1,\n pageSize: 10,\n },\n};\n\nconst paginationAttributes = ['start', 'limit', 'page', 'pageSize'];\n\nconst withMaxLimit = (limit: number, maxLimit = -1) => {\n if (maxLimit === -1 || limit < maxLimit) {\n return limit;\n }\n\n return maxLimit;\n};\n\n// Ensure minimum page & pageSize values (page >= 1, pageSize >= 0, start >= 0, limit >= 0)\nconst ensureMinValues = ({ start, limit }: Pagination) => ({\n start: Math.max(start, 0),\n limit: limit === -1 ? limit : Math.max(limit, 1),\n});\n\nconst ensureMaxValues =\n (maxLimit = -1) =>\n ({ start, limit }: { start: number; limit: number }) => ({\n start,\n limit: withMaxLimit(limit, maxLimit),\n });\n\n// Apply maxLimit as the limit when limit is -1\nconst withNoLimit = (pagination: Pagination, maxLimit = -1) => ({\n ...pagination,\n limit: pagination.limit === -1 ? maxLimit : pagination.limit,\n});\n\nconst withDefaultPagination = <T extends Partial<PaginationArgs>>(\n args: T,\n { defaults = {}, maxLimit = -1 } = {}\n) => {\n const defaultValues = merge(STRAPI_DEFAULTS, defaults);\n\n const usePagePagination = !isNil(args.page) || !isNil(args.pageSize);\n const useOffsetPagination = !isNil(args.start) || !isNil(args.limit);\n\n const ensureValidValues = pipe(ensureMinValues, ensureMaxValues(maxLimit));\n\n // If there is no pagination attribute, don't modify the payload\n if (!usePagePagination && !useOffsetPagination) {\n return merge(args, ensureValidValues(defaultValues.offset));\n }\n\n // If there is page & offset pagination attributes, throw an error\n if (usePagePagination && useOffsetPagination) {\n throw new PaginationError('Cannot use both page & offset pagination in the same query');\n }\n\n const pagination: Pagination = {\n start: 0,\n limit: 0,\n };\n\n // Start / Limit\n if (useOffsetPagination) {\n const { start, limit } = merge(defaultValues.offset, args);\n\n Object.assign(pagination, { start, limit });\n }\n\n // Page / PageSize\n if (usePagePagination) {\n const { page, pageSize } = merge(defaultValues.page, {\n ...args,\n pageSize: Math.max(1, args.pageSize ?? 0),\n });\n\n Object.assign(pagination, {\n start: (page - 1) * pageSize,\n limit: pageSize,\n });\n }\n\n // Handle -1 limit\n Object.assign(pagination, withNoLimit(pagination, maxLimit));\n\n const replacePaginationAttributes = pipe(\n // Remove pagination attributes\n omit(paginationAttributes),\n // Merge the object with the new pagination + ensure minimum & maximum values\n merge(ensureValidValues(pagination))\n );\n\n return replacePaginationAttributes(args);\n};\n\n/**\n * Transform pagination information into a paginated response:\n * {\n * page: number,\n * pageSize: number,\n * pageCount: number,\n * total: number\n * }\n */\nconst transformPagedPaginationInfo = (\n paginationInfo: Partial<PaginationArgs>,\n total: number\n): PagePatinationInformation => {\n if (!isNil(paginationInfo.page)) {\n const page = paginationInfo.page;\n const pageSize = paginationInfo.pageSize ?? total;\n\n return {\n page,\n pageSize,\n pageCount: pageSize > 0 ? Math.ceil(total / pageSize) : 0,\n total,\n };\n }\n\n if (!isNil(paginationInfo.start)) {\n const start = paginationInfo.start;\n const limit = paginationInfo.limit ?? total;\n\n // Start limit to page page size\n return {\n page: Math.floor(start / limit) + 1,\n pageSize: limit,\n pageCount: limit > 0 ? Math.ceil(total / limit) : 0,\n total,\n };\n }\n\n // Default pagination\n return {\n ...paginationInfo,\n page: 1,\n pageSize: 10,\n pageCount: 1,\n total,\n };\n};\n\n/**\n * Transform pagination information into a offset response:\n * {\n * start: number,\n * limit: number,\n * total: number\n * }\n */\nconst transformOffsetPaginationInfo = (\n paginationInfo: Partial<PaginationArgs>,\n total: number\n): OffsetPaginationInformation => {\n if (!isNil(paginationInfo.page)) {\n const limit = paginationInfo.pageSize ?? total;\n const start = (paginationInfo.page - 1) * limit;\n\n return { start, limit, total };\n }\n\n if (!isNil(paginationInfo.start)) {\n const start = paginationInfo.start;\n const limit = paginationInfo.limit ?? total;\n\n // Start limit to page page size\n return { start, limit, total };\n }\n\n // Default pagination\n return {\n ...paginationInfo,\n start: 0,\n limit: 10,\n total,\n };\n};\n\nexport { withDefaultPagination, transformPagedPaginationInfo, transformOffsetPaginationInfo };\n"],"names":["STRAPI_DEFAULTS","offset","start","limit","page","pageSize","paginationAttributes","withMaxLimit","maxLimit","ensureMinValues","Math","max","ensureMaxValues","withNoLimit","pagination","withDefaultPagination","args","defaults","defaultValues","merge","usePagePagination","isNil","useOffsetPagination","ensureValidValues","pipe","PaginationError","Object","assign","replacePaginationAttributes","omit","transformPagedPaginationInfo","paginationInfo","total","pageCount","ceil","floor","transformOffsetPaginationInfo"],"mappings":"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"}
|
package/dist/parse-type.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-type.js","sources":["../src/parse-type.ts"],"sourcesContent":["import * as _ from 'lodash';\nimport * as dates from 'date-fns';\n\nconst timeRegex = /^(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(.[0-9]{1,3})?$/;\n\nconst isDate = (v: unknown): v is Date => {\n return dates.isDate(v);\n};\n\nconst parseTime = (value: unknown): string => {\n if (isDate(value)) {\n return dates.format(value, 'HH:mm:ss.SSS');\n }\n\n if (typeof value !== 'string') {\n throw new Error(`Expected a string, got a ${typeof value}`);\n }\n const result = value.match(timeRegex);\n\n if (result === null) {\n throw new Error('Invalid time format, expected HH:mm:ss.SSS');\n }\n\n const [, hours, minutes, seconds, fraction = '.000'] = result;\n const fractionPart = _.padEnd(fraction.slice(1), 3, '0');\n\n return `${hours}:${minutes}:${seconds}.${fractionPart}`;\n};\n\nconst parseDate = (value: unknown) => {\n if (isDate(value)) {\n return dates.format(value, 'yyyy-MM-dd');\n }\n\n if (typeof value !== 'string') {\n throw new Error(`Expected a string, got a ${typeof value}`);\n }\n\n try {\n const date = dates.parseISO(value);\n\n if (dates.isValid(date)) return dates.format(date, 'yyyy-MM-dd');\n\n throw new Error(`Invalid format, expected an ISO compatible date`);\n } catch (error) {\n throw new Error(`Invalid format, expected an ISO compatible date`);\n }\n};\n\nconst parseDateTimeOrTimestamp = (value: unknown) => {\n if (isDate(value)) {\n return value;\n }\n\n if (typeof value !== 'string') {\n throw new Error(`Expected a string, got a ${typeof value}`);\n }\n\n try {\n const date = dates.parseISO(value);\n if (dates.isValid(date)) return date;\n\n const milliUnixDate = dates.parse(value, 'T', new Date());\n if (dates.isValid(milliUnixDate)) return milliUnixDate;\n\n throw new Error(`Invalid format, expected a timestamp or an ISO date`);\n } catch (error) {\n throw new Error(`Invalid format, expected a timestamp or an ISO date`);\n }\n};\n\ntype TypeMap = {\n boolean: boolean;\n integer: number;\n biginteger: number;\n float: number;\n decimal: number;\n time: string;\n date: string;\n timestamp: Date;\n datetime: Date;\n};\n\nexport interface ParseTypeOptions<T extends keyof TypeMap> {\n type: T;\n value: unknown;\n forceCast?: boolean;\n}\n\nconst parseBoolean = (value: unknown, options: { forceCast?: boolean }): boolean => {\n const { forceCast = false } = options;\n\n if (typeof value === 'boolean') {\n return value;\n }\n\n if (typeof value === 'string' || typeof value === 'number') {\n if (['true', 't', '1', 1].includes(value)) {\n return true;\n }\n\n if (['false', 'f', '0', 0].includes(value)) {\n return false;\n }\n }\n\n if (forceCast) {\n return Boolean(value);\n }\n\n throw new Error('Invalid boolean input. Expected \"t\",\"1\",\"true\",\"false\",\"0\",\"f\"');\n};\n\n/**\n * Cast basic values based on attribute type\n */\nconst parseType = <Type extends keyof TypeMap>(options: ParseTypeOptions<Type>): TypeMap[Type] => {\n const { type, value, forceCast } = options;\n\n switch (type) {\n case 'boolean':\n return parseBoolean(value, { forceCast }) as TypeMap[Type];\n case 'integer':\n case 'biginteger':\n case 'float':\n case 'decimal': {\n return _.toNumber(value) as TypeMap[Type];\n }\n case 'time': {\n return parseTime(value) as TypeMap[Type];\n }\n case 'date': {\n return parseDate(value) as TypeMap[Type];\n }\n case 'timestamp':\n case 'datetime': {\n return parseDateTimeOrTimestamp(value) as TypeMap[Type];\n }\n default:\n return value as TypeMap[Type];\n }\n};\n\nexport default parseType;\n"],"names":["timeRegex","isDate","v","dates","parseTime","value","format","Error","result","match","hours","minutes","seconds","fraction","fractionPart","_","padEnd","slice","parseDate","date","parseISO","isValid","error","parseDateTimeOrTimestamp","milliUnixDate","parse","Date","parseBoolean","options","forceCast","includes","Boolean","parseType","type","toNumber"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAGA,MAAMA,
|
|
1
|
+
{"version":3,"file":"parse-type.js","sources":["../src/parse-type.ts"],"sourcesContent":["import * as _ from 'lodash';\nimport * as dates from 'date-fns';\n\nconst timeRegex = /^(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(.[0-9]{1,3})?$/;\n\nconst isDate = (v: unknown): v is Date => {\n return dates.isDate(v);\n};\n\nconst parseTime = (value: unknown): string => {\n if (isDate(value)) {\n return dates.format(value, 'HH:mm:ss.SSS');\n }\n\n if (typeof value !== 'string') {\n throw new Error(`Expected a string, got a ${typeof value}`);\n }\n const result = value.match(timeRegex);\n\n if (result === null) {\n throw new Error('Invalid time format, expected HH:mm:ss.SSS');\n }\n\n const [, hours, minutes, seconds, fraction = '.000'] = result;\n const fractionPart = _.padEnd(fraction.slice(1), 3, '0');\n\n return `${hours}:${minutes}:${seconds}.${fractionPart}`;\n};\n\nconst parseDate = (value: unknown) => {\n if (isDate(value)) {\n return dates.format(value, 'yyyy-MM-dd');\n }\n\n if (typeof value !== 'string') {\n throw new Error(`Expected a string, got a ${typeof value}`);\n }\n\n try {\n const date = dates.parseISO(value);\n\n if (dates.isValid(date)) return dates.format(date, 'yyyy-MM-dd');\n\n throw new Error(`Invalid format, expected an ISO compatible date`);\n } catch (error) {\n throw new Error(`Invalid format, expected an ISO compatible date`);\n }\n};\n\nconst parseDateTimeOrTimestamp = (value: unknown) => {\n if (isDate(value)) {\n return value;\n }\n\n if (typeof value !== 'string') {\n throw new Error(`Expected a string, got a ${typeof value}`);\n }\n\n try {\n const date = dates.parseISO(value);\n if (dates.isValid(date)) return date;\n\n const milliUnixDate = dates.parse(value, 'T', new Date());\n if (dates.isValid(milliUnixDate)) return milliUnixDate;\n\n throw new Error(`Invalid format, expected a timestamp or an ISO date`);\n } catch (error) {\n throw new Error(`Invalid format, expected a timestamp or an ISO date`);\n }\n};\n\ntype TypeMap = {\n boolean: boolean;\n integer: number;\n biginteger: number;\n float: number;\n decimal: number;\n time: string;\n date: string;\n timestamp: Date;\n datetime: Date;\n};\n\nexport interface ParseTypeOptions<T extends keyof TypeMap> {\n type: T;\n value: unknown;\n forceCast?: boolean;\n}\n\nconst parseBoolean = (value: unknown, options: { forceCast?: boolean }): boolean => {\n const { forceCast = false } = options;\n\n if (typeof value === 'boolean') {\n return value;\n }\n\n if (typeof value === 'string' || typeof value === 'number') {\n if (['true', 't', '1', 1].includes(value)) {\n return true;\n }\n\n if (['false', 'f', '0', 0].includes(value)) {\n return false;\n }\n }\n\n if (forceCast) {\n return Boolean(value);\n }\n\n throw new Error('Invalid boolean input. Expected \"t\",\"1\",\"true\",\"false\",\"0\",\"f\"');\n};\n\n/**\n * Cast basic values based on attribute type\n */\nconst parseType = <Type extends keyof TypeMap>(options: ParseTypeOptions<Type>): TypeMap[Type] => {\n const { type, value, forceCast } = options;\n\n switch (type) {\n case 'boolean':\n return parseBoolean(value, { forceCast }) as TypeMap[Type];\n case 'integer':\n case 'biginteger':\n case 'float':\n case 'decimal': {\n return _.toNumber(value) as TypeMap[Type];\n }\n case 'time': {\n return parseTime(value) as TypeMap[Type];\n }\n case 'date': {\n return parseDate(value) as TypeMap[Type];\n }\n case 'timestamp':\n case 'datetime': {\n return parseDateTimeOrTimestamp(value) as TypeMap[Type];\n }\n default:\n return value as TypeMap[Type];\n }\n};\n\nexport default parseType;\n"],"names":["timeRegex","isDate","v","dates","parseTime","value","format","Error","result","match","hours","minutes","seconds","fraction","fractionPart","_","padEnd","slice","parseDate","date","parseISO","isValid","error","parseDateTimeOrTimestamp","milliUnixDate","parse","Date","parseBoolean","options","forceCast","includes","Boolean","parseType","type","toNumber"],"mappings":"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"}
|
package/dist/parse-type.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-type.mjs","sources":["../src/parse-type.ts"],"sourcesContent":["import * as _ from 'lodash';\nimport * as dates from 'date-fns';\n\nconst timeRegex = /^(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(.[0-9]{1,3})?$/;\n\nconst isDate = (v: unknown): v is Date => {\n return dates.isDate(v);\n};\n\nconst parseTime = (value: unknown): string => {\n if (isDate(value)) {\n return dates.format(value, 'HH:mm:ss.SSS');\n }\n\n if (typeof value !== 'string') {\n throw new Error(`Expected a string, got a ${typeof value}`);\n }\n const result = value.match(timeRegex);\n\n if (result === null) {\n throw new Error('Invalid time format, expected HH:mm:ss.SSS');\n }\n\n const [, hours, minutes, seconds, fraction = '.000'] = result;\n const fractionPart = _.padEnd(fraction.slice(1), 3, '0');\n\n return `${hours}:${minutes}:${seconds}.${fractionPart}`;\n};\n\nconst parseDate = (value: unknown) => {\n if (isDate(value)) {\n return dates.format(value, 'yyyy-MM-dd');\n }\n\n if (typeof value !== 'string') {\n throw new Error(`Expected a string, got a ${typeof value}`);\n }\n\n try {\n const date = dates.parseISO(value);\n\n if (dates.isValid(date)) return dates.format(date, 'yyyy-MM-dd');\n\n throw new Error(`Invalid format, expected an ISO compatible date`);\n } catch (error) {\n throw new Error(`Invalid format, expected an ISO compatible date`);\n }\n};\n\nconst parseDateTimeOrTimestamp = (value: unknown) => {\n if (isDate(value)) {\n return value;\n }\n\n if (typeof value !== 'string') {\n throw new Error(`Expected a string, got a ${typeof value}`);\n }\n\n try {\n const date = dates.parseISO(value);\n if (dates.isValid(date)) return date;\n\n const milliUnixDate = dates.parse(value, 'T', new Date());\n if (dates.isValid(milliUnixDate)) return milliUnixDate;\n\n throw new Error(`Invalid format, expected a timestamp or an ISO date`);\n } catch (error) {\n throw new Error(`Invalid format, expected a timestamp or an ISO date`);\n }\n};\n\ntype TypeMap = {\n boolean: boolean;\n integer: number;\n biginteger: number;\n float: number;\n decimal: number;\n time: string;\n date: string;\n timestamp: Date;\n datetime: Date;\n};\n\nexport interface ParseTypeOptions<T extends keyof TypeMap> {\n type: T;\n value: unknown;\n forceCast?: boolean;\n}\n\nconst parseBoolean = (value: unknown, options: { forceCast?: boolean }): boolean => {\n const { forceCast = false } = options;\n\n if (typeof value === 'boolean') {\n return value;\n }\n\n if (typeof value === 'string' || typeof value === 'number') {\n if (['true', 't', '1', 1].includes(value)) {\n return true;\n }\n\n if (['false', 'f', '0', 0].includes(value)) {\n return false;\n }\n }\n\n if (forceCast) {\n return Boolean(value);\n }\n\n throw new Error('Invalid boolean input. Expected \"t\",\"1\",\"true\",\"false\",\"0\",\"f\"');\n};\n\n/**\n * Cast basic values based on attribute type\n */\nconst parseType = <Type extends keyof TypeMap>(options: ParseTypeOptions<Type>): TypeMap[Type] => {\n const { type, value, forceCast } = options;\n\n switch (type) {\n case 'boolean':\n return parseBoolean(value, { forceCast }) as TypeMap[Type];\n case 'integer':\n case 'biginteger':\n case 'float':\n case 'decimal': {\n return _.toNumber(value) as TypeMap[Type];\n }\n case 'time': {\n return parseTime(value) as TypeMap[Type];\n }\n case 'date': {\n return parseDate(value) as TypeMap[Type];\n }\n case 'timestamp':\n case 'datetime': {\n return parseDateTimeOrTimestamp(value) as TypeMap[Type];\n }\n default:\n return value as TypeMap[Type];\n }\n};\n\nexport default parseType;\n"],"names":["timeRegex","isDate","v","dates","parseTime","value","format","Error","result","match","hours","minutes","seconds","fraction","fractionPart","_","padEnd","slice","parseDate","date","parseISO","isValid","error","parseDateTimeOrTimestamp","milliUnixDate","parse","Date","parseBoolean","options","forceCast","includes","Boolean","parseType","type","toNumber"],"mappings":";;;AAGA,MAAMA,
|
|
1
|
+
{"version":3,"file":"parse-type.mjs","sources":["../src/parse-type.ts"],"sourcesContent":["import * as _ from 'lodash';\nimport * as dates from 'date-fns';\n\nconst timeRegex = /^(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])(.[0-9]{1,3})?$/;\n\nconst isDate = (v: unknown): v is Date => {\n return dates.isDate(v);\n};\n\nconst parseTime = (value: unknown): string => {\n if (isDate(value)) {\n return dates.format(value, 'HH:mm:ss.SSS');\n }\n\n if (typeof value !== 'string') {\n throw new Error(`Expected a string, got a ${typeof value}`);\n }\n const result = value.match(timeRegex);\n\n if (result === null) {\n throw new Error('Invalid time format, expected HH:mm:ss.SSS');\n }\n\n const [, hours, minutes, seconds, fraction = '.000'] = result;\n const fractionPart = _.padEnd(fraction.slice(1), 3, '0');\n\n return `${hours}:${minutes}:${seconds}.${fractionPart}`;\n};\n\nconst parseDate = (value: unknown) => {\n if (isDate(value)) {\n return dates.format(value, 'yyyy-MM-dd');\n }\n\n if (typeof value !== 'string') {\n throw new Error(`Expected a string, got a ${typeof value}`);\n }\n\n try {\n const date = dates.parseISO(value);\n\n if (dates.isValid(date)) return dates.format(date, 'yyyy-MM-dd');\n\n throw new Error(`Invalid format, expected an ISO compatible date`);\n } catch (error) {\n throw new Error(`Invalid format, expected an ISO compatible date`);\n }\n};\n\nconst parseDateTimeOrTimestamp = (value: unknown) => {\n if (isDate(value)) {\n return value;\n }\n\n if (typeof value !== 'string') {\n throw new Error(`Expected a string, got a ${typeof value}`);\n }\n\n try {\n const date = dates.parseISO(value);\n if (dates.isValid(date)) return date;\n\n const milliUnixDate = dates.parse(value, 'T', new Date());\n if (dates.isValid(milliUnixDate)) return milliUnixDate;\n\n throw new Error(`Invalid format, expected a timestamp or an ISO date`);\n } catch (error) {\n throw new Error(`Invalid format, expected a timestamp or an ISO date`);\n }\n};\n\ntype TypeMap = {\n boolean: boolean;\n integer: number;\n biginteger: number;\n float: number;\n decimal: number;\n time: string;\n date: string;\n timestamp: Date;\n datetime: Date;\n};\n\nexport interface ParseTypeOptions<T extends keyof TypeMap> {\n type: T;\n value: unknown;\n forceCast?: boolean;\n}\n\nconst parseBoolean = (value: unknown, options: { forceCast?: boolean }): boolean => {\n const { forceCast = false } = options;\n\n if (typeof value === 'boolean') {\n return value;\n }\n\n if (typeof value === 'string' || typeof value === 'number') {\n if (['true', 't', '1', 1].includes(value)) {\n return true;\n }\n\n if (['false', 'f', '0', 0].includes(value)) {\n return false;\n }\n }\n\n if (forceCast) {\n return Boolean(value);\n }\n\n throw new Error('Invalid boolean input. Expected \"t\",\"1\",\"true\",\"false\",\"0\",\"f\"');\n};\n\n/**\n * Cast basic values based on attribute type\n */\nconst parseType = <Type extends keyof TypeMap>(options: ParseTypeOptions<Type>): TypeMap[Type] => {\n const { type, value, forceCast } = options;\n\n switch (type) {\n case 'boolean':\n return parseBoolean(value, { forceCast }) as TypeMap[Type];\n case 'integer':\n case 'biginteger':\n case 'float':\n case 'decimal': {\n return _.toNumber(value) as TypeMap[Type];\n }\n case 'time': {\n return parseTime(value) as TypeMap[Type];\n }\n case 'date': {\n return parseDate(value) as TypeMap[Type];\n }\n case 'timestamp':\n case 'datetime': {\n return parseDateTimeOrTimestamp(value) as TypeMap[Type];\n }\n default:\n return value as TypeMap[Type];\n }\n};\n\nexport default parseType;\n"],"names":["timeRegex","isDate","v","dates","parseTime","value","format","Error","result","match","hours","minutes","seconds","fraction","fractionPart","_","padEnd","slice","parseDate","date","parseISO","isValid","error","parseDateTimeOrTimestamp","milliUnixDate","parse","Date","parseBoolean","options","forceCast","includes","Boolean","parseType","type","toNumber"],"mappings":";;;AAGA,MAAMA,SAAAA,GAAY,8DAAA;AAElB,MAAMC,SAAS,CAACC,CAAAA,GAAAA;IACd,OAAOC,KAAAA,CAAMF,MAAM,CAACC,CAAAA,CAAAA;AACtB,CAAA;AAEA,MAAME,YAAY,CAACC,KAAAA,GAAAA;AACjB,IAAA,IAAIJ,OAAOI,KAAAA,CAAAA,EAAQ;QACjB,OAAOF,KAAAA,CAAMG,MAAM,CAACD,KAAAA,EAAO,cAAA,CAAA;AAC7B,IAAA;IAEA,IAAI,OAAOA,UAAU,QAAA,EAAU;AAC7B,QAAA,MAAM,IAAIE,KAAAA,CAAM,CAAC,yBAAyB,EAAE,OAAOF,KAAAA,CAAAA,CAAO,CAAA;AAC5D,IAAA;IACA,MAAMG,MAAAA,GAASH,KAAAA,CAAMI,KAAK,CAACT,SAAAA,CAAAA;AAE3B,IAAA,IAAIQ,WAAW,IAAA,EAAM;AACnB,QAAA,MAAM,IAAID,KAAAA,CAAM,4CAAA,CAAA;AAClB,IAAA;AAEA,IAAA,MAAM,GAAGG,KAAAA,EAAOC,OAAAA,EAASC,SAASC,QAAAA,GAAW,MAAM,CAAC,GAAGL,MAAAA;IACvD,MAAMM,YAAAA,GAAeC,EAAEC,MAAM,CAACH,SAASI,KAAK,CAAC,IAAI,CAAA,EAAG,GAAA,CAAA;IAEpD,OAAO,CAAA,EAAGP,KAAAA,CAAM,CAAC,EAAEC,OAAAA,CAAQ,CAAC,EAAEC,OAAAA,CAAQ,CAAC,EAAEE,YAAAA,CAAAA,CAAc;AACzD,CAAA;AAEA,MAAMI,YAAY,CAACb,KAAAA,GAAAA;AACjB,IAAA,IAAIJ,OAAOI,KAAAA,CAAAA,EAAQ;QACjB,OAAOF,KAAAA,CAAMG,MAAM,CAACD,KAAAA,EAAO,YAAA,CAAA;AAC7B,IAAA;IAEA,IAAI,OAAOA,UAAU,QAAA,EAAU;AAC7B,QAAA,MAAM,IAAIE,KAAAA,CAAM,CAAC,yBAAyB,EAAE,OAAOF,KAAAA,CAAAA,CAAO,CAAA;AAC5D,IAAA;IAEA,IAAI;QACF,MAAMc,IAAAA,GAAOhB,KAAAA,CAAMiB,QAAQ,CAACf,KAAAA,CAAAA;QAE5B,IAAIF,KAAAA,CAAMkB,OAAO,CAACF,IAAAA,CAAAA,EAAO,OAAOhB,KAAAA,CAAMG,MAAM,CAACa,IAAAA,EAAM,YAAA,CAAA;AAEnD,QAAA,MAAM,IAAIZ,KAAAA,CAAM,CAAC,+CAA+C,CAAC,CAAA;AACnE,IAAA,CAAA,CAAE,OAAOe,KAAAA,EAAO;AACd,QAAA,MAAM,IAAIf,KAAAA,CAAM,CAAC,+CAA+C,CAAC,CAAA;AACnE,IAAA;AACF,CAAA;AAEA,MAAMgB,2BAA2B,CAAClB,KAAAA,GAAAA;AAChC,IAAA,IAAIJ,OAAOI,KAAAA,CAAAA,EAAQ;QACjB,OAAOA,KAAAA;AACT,IAAA;IAEA,IAAI,OAAOA,UAAU,QAAA,EAAU;AAC7B,QAAA,MAAM,IAAIE,KAAAA,CAAM,CAAC,yBAAyB,EAAE,OAAOF,KAAAA,CAAAA,CAAO,CAAA;AAC5D,IAAA;IAEA,IAAI;QACF,MAAMc,IAAAA,GAAOhB,KAAAA,CAAMiB,QAAQ,CAACf,KAAAA,CAAAA;AAC5B,QAAA,IAAIF,KAAAA,CAAMkB,OAAO,CAACF,IAAAA,CAAAA,EAAO,OAAOA,IAAAA;AAEhC,QAAA,MAAMK,gBAAgBrB,KAAAA,CAAMsB,KAAK,CAACpB,KAAAA,EAAO,KAAK,IAAIqB,IAAAA,EAAAA,CAAAA;AAClD,QAAA,IAAIvB,KAAAA,CAAMkB,OAAO,CAACG,aAAAA,CAAAA,EAAgB,OAAOA,aAAAA;AAEzC,QAAA,MAAM,IAAIjB,KAAAA,CAAM,CAAC,mDAAmD,CAAC,CAAA;AACvE,IAAA,CAAA,CAAE,OAAOe,KAAAA,EAAO;AACd,QAAA,MAAM,IAAIf,KAAAA,CAAM,CAAC,mDAAmD,CAAC,CAAA;AACvE,IAAA;AACF,CAAA;AAoBA,MAAMoB,YAAAA,GAAe,CAACtB,KAAAA,EAAgBuB,OAAAA,GAAAA;AACpC,IAAA,MAAM,EAAEC,SAAAA,GAAY,KAAK,EAAE,GAAGD,OAAAA;IAE9B,IAAI,OAAOvB,UAAU,SAAA,EAAW;QAC9B,OAAOA,KAAAA;AACT,IAAA;AAEA,IAAA,IAAI,OAAOA,KAAAA,KAAU,QAAA,IAAY,OAAOA,UAAU,QAAA,EAAU;QAC1D,IAAI;AAAC,YAAA,MAAA;AAAQ,YAAA,GAAA;AAAK,YAAA,GAAA;AAAK,YAAA;SAAE,CAACyB,QAAQ,CAACzB,KAAAA,CAAAA,EAAQ;YACzC,OAAO,IAAA;AACT,QAAA;QAEA,IAAI;AAAC,YAAA,OAAA;AAAS,YAAA,GAAA;AAAK,YAAA,GAAA;AAAK,YAAA;SAAE,CAACyB,QAAQ,CAACzB,KAAAA,CAAAA,EAAQ;YAC1C,OAAO,KAAA;AACT,QAAA;AACF,IAAA;AAEA,IAAA,IAAIwB,SAAAA,EAAW;AACb,QAAA,OAAOE,OAAAA,CAAQ1B,KAAAA,CAAAA;AACjB,IAAA;AAEA,IAAA,MAAM,IAAIE,KAAAA,CAAM,gEAAA,CAAA;AAClB,CAAA;AAEA;;IAGA,MAAMyB,YAAY,CAA6BJ,OAAAA,GAAAA;AAC7C,IAAA,MAAM,EAAEK,IAAI,EAAE5B,KAAK,EAAEwB,SAAS,EAAE,GAAGD,OAAAA;IAEnC,OAAQK,IAAAA;QACN,KAAK,SAAA;AACH,YAAA,OAAON,aAAatB,KAAAA,EAAO;AAAEwB,gBAAAA;AAAU,aAAA,CAAA;QACzC,KAAK,SAAA;QACL,KAAK,YAAA;QACL,KAAK,OAAA;QACL,KAAK,SAAA;AAAW,YAAA;gBACd,OAAOd,CAAAA,CAAEmB,QAAQ,CAAC7B,KAAAA,CAAAA;AACpB,YAAA;QACA,KAAK,MAAA;AAAQ,YAAA;AACX,gBAAA,OAAOD,SAAAA,CAAUC,KAAAA,CAAAA;AACnB,YAAA;QACA,KAAK,MAAA;AAAQ,YAAA;AACX,gBAAA,OAAOa,SAAAA,CAAUb,KAAAA,CAAAA;AACnB,YAAA;QACA,KAAK,WAAA;QACL,KAAK,UAAA;AAAY,YAAA;AACf,gBAAA,OAAOkB,wBAAAA,CAAyBlB,KAAAA,CAAAA;AAClC,YAAA;AACA,QAAA;YACE,OAAOA,KAAAA;AACX;AACF;;;;"}
|
package/dist/policy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.js","sources":["../src/policy.ts"],"sourcesContent":["import { eq } from 'lodash/fp';\n\ninterface Options {\n name: string;\n validator?(config: unknown): void;\n handler(...args: any[]): any;\n}\n\nconst createPolicy = (options: Options) => {\n const { name = 'unnamed', validator, handler } = options;\n\n const wrappedValidator = (config: unknown) => {\n if (validator) {\n try {\n validator(config);\n } catch (e) {\n throw new Error(`Invalid config passed to \"${name}\" policy.`);\n }\n }\n };\n\n return {\n name,\n validator: wrappedValidator,\n handler,\n };\n};\n\nconst createPolicyContext = (type: string, ctx: object) => {\n return Object.assign(\n {\n is: eq(type),\n get type() {\n return type;\n },\n },\n ctx\n );\n};\n\nexport { createPolicy, createPolicyContext };\n"],"names":["createPolicy","options","name","validator","handler","wrappedValidator","config","e","Error","createPolicyContext","type","ctx","Object","assign","is","eq"],"mappings":";;;;AAQA,MAAMA,eAAe,CAACC,OAAAA,GAAAA;IACpB,MAAM,EAAEC,OAAO,SAAS,EAAEC,SAAS,EAAEC,OAAO,EAAE,GAAGH,OAAAA;AAEjD,IAAA,MAAMI,mBAAmB,CAACC,MAAAA,GAAAA;AACxB,QAAA,IAAIH,
|
|
1
|
+
{"version":3,"file":"policy.js","sources":["../src/policy.ts"],"sourcesContent":["import { eq } from 'lodash/fp';\n\ninterface Options {\n name: string;\n validator?(config: unknown): void;\n handler(...args: any[]): any;\n}\n\nconst createPolicy = (options: Options) => {\n const { name = 'unnamed', validator, handler } = options;\n\n const wrappedValidator = (config: unknown) => {\n if (validator) {\n try {\n validator(config);\n } catch (e) {\n throw new Error(`Invalid config passed to \"${name}\" policy.`);\n }\n }\n };\n\n return {\n name,\n validator: wrappedValidator,\n handler,\n };\n};\n\nconst createPolicyContext = (type: string, ctx: object) => {\n return Object.assign(\n {\n is: eq(type),\n get type() {\n return type;\n },\n },\n ctx\n );\n};\n\nexport { createPolicy, createPolicyContext };\n"],"names":["createPolicy","options","name","validator","handler","wrappedValidator","config","e","Error","createPolicyContext","type","ctx","Object","assign","is","eq"],"mappings":";;;;AAQA,MAAMA,eAAe,CAACC,OAAAA,GAAAA;IACpB,MAAM,EAAEC,OAAO,SAAS,EAAEC,SAAS,EAAEC,OAAO,EAAE,GAAGH,OAAAA;AAEjD,IAAA,MAAMI,mBAAmB,CAACC,MAAAA,GAAAA;AACxB,QAAA,IAAIH,SAAAA,EAAW;YACb,IAAI;gBACFA,SAAAA,CAAUG,MAAAA,CAAAA;AACZ,YAAA,CAAA,CAAE,OAAOC,CAAAA,EAAG;AACV,gBAAA,MAAM,IAAIC,KAAAA,CAAM,CAAC,0BAA0B,EAAEN,IAAAA,CAAK,SAAS,CAAC,CAAA;AAC9D,YAAA;AACF,QAAA;AACF,IAAA,CAAA;IAEA,OAAO;AACLA,QAAAA,IAAAA;QACAC,SAAAA,EAAWE,gBAAAA;AACXD,QAAAA;AACF,KAAA;AACF;AAEA,MAAMK,mBAAAA,GAAsB,CAACC,IAAAA,EAAcC,GAAAA,GAAAA;IACzC,OAAOC,MAAAA,CAAOC,MAAM,CAClB;AACEC,QAAAA,EAAAA,EAAIC,KAAAA,CAAGL,IAAAA,CAAAA;AACP,QAAA,IAAIA,IAAAA,CAAAA,GAAO;YACT,OAAOA,IAAAA;AACT,QAAA;KACF,EACAC,GAAAA,CAAAA;AAEJ;;;;;"}
|
package/dist/policy.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.mjs","sources":["../src/policy.ts"],"sourcesContent":["import { eq } from 'lodash/fp';\n\ninterface Options {\n name: string;\n validator?(config: unknown): void;\n handler(...args: any[]): any;\n}\n\nconst createPolicy = (options: Options) => {\n const { name = 'unnamed', validator, handler } = options;\n\n const wrappedValidator = (config: unknown) => {\n if (validator) {\n try {\n validator(config);\n } catch (e) {\n throw new Error(`Invalid config passed to \"${name}\" policy.`);\n }\n }\n };\n\n return {\n name,\n validator: wrappedValidator,\n handler,\n };\n};\n\nconst createPolicyContext = (type: string, ctx: object) => {\n return Object.assign(\n {\n is: eq(type),\n get type() {\n return type;\n },\n },\n ctx\n );\n};\n\nexport { createPolicy, createPolicyContext };\n"],"names":["createPolicy","options","name","validator","handler","wrappedValidator","config","e","Error","createPolicyContext","type","ctx","Object","assign","is","eq"],"mappings":";;AAQA,MAAMA,eAAe,CAACC,OAAAA,GAAAA;IACpB,MAAM,EAAEC,OAAO,SAAS,EAAEC,SAAS,EAAEC,OAAO,EAAE,GAAGH,OAAAA;AAEjD,IAAA,MAAMI,mBAAmB,CAACC,MAAAA,GAAAA;AACxB,QAAA,IAAIH,
|
|
1
|
+
{"version":3,"file":"policy.mjs","sources":["../src/policy.ts"],"sourcesContent":["import { eq } from 'lodash/fp';\n\ninterface Options {\n name: string;\n validator?(config: unknown): void;\n handler(...args: any[]): any;\n}\n\nconst createPolicy = (options: Options) => {\n const { name = 'unnamed', validator, handler } = options;\n\n const wrappedValidator = (config: unknown) => {\n if (validator) {\n try {\n validator(config);\n } catch (e) {\n throw new Error(`Invalid config passed to \"${name}\" policy.`);\n }\n }\n };\n\n return {\n name,\n validator: wrappedValidator,\n handler,\n };\n};\n\nconst createPolicyContext = (type: string, ctx: object) => {\n return Object.assign(\n {\n is: eq(type),\n get type() {\n return type;\n },\n },\n ctx\n );\n};\n\nexport { createPolicy, createPolicyContext };\n"],"names":["createPolicy","options","name","validator","handler","wrappedValidator","config","e","Error","createPolicyContext","type","ctx","Object","assign","is","eq"],"mappings":";;AAQA,MAAMA,eAAe,CAACC,OAAAA,GAAAA;IACpB,MAAM,EAAEC,OAAO,SAAS,EAAEC,SAAS,EAAEC,OAAO,EAAE,GAAGH,OAAAA;AAEjD,IAAA,MAAMI,mBAAmB,CAACC,MAAAA,GAAAA;AACxB,QAAA,IAAIH,SAAAA,EAAW;YACb,IAAI;gBACFA,SAAAA,CAAUG,MAAAA,CAAAA;AACZ,YAAA,CAAA,CAAE,OAAOC,CAAAA,EAAG;AACV,gBAAA,MAAM,IAAIC,KAAAA,CAAM,CAAC,0BAA0B,EAAEN,IAAAA,CAAK,SAAS,CAAC,CAAA;AAC9D,YAAA;AACF,QAAA;AACF,IAAA,CAAA;IAEA,OAAO;AACLA,QAAAA,IAAAA;QACAC,SAAAA,EAAWE,gBAAAA;AACXD,QAAAA;AACF,KAAA;AACF;AAEA,MAAMK,mBAAAA,GAAsB,CAACC,IAAAA,EAAcC,GAAAA,GAAAA;IACzC,OAAOC,MAAAA,CAAOC,MAAM,CAClB;AACEC,QAAAA,EAAAA,EAAIC,EAAAA,CAAGL,IAAAA,CAAAA;AACP,QAAA,IAAIA,IAAAA,CAAAA,GAAO;YACT,OAAOA,IAAAA;AACT,QAAA;KACF,EACAC,GAAAA,CAAAA;AAEJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arrays.js","sources":["../../src/primitives/arrays.ts"],"sourcesContent":["const castIncludes = (arr: unknown[], val: unknown, cast: (val: unknown) => unknown): boolean =>\n arr.map((val) => cast(val)).includes(cast(val));\n\nconst includesString = (arr: unknown[], val: unknown) => castIncludes(arr, val, String);\n\nexport { includesString };\n"],"names":["castIncludes","arr","val","cast","map","includes","includesString","String"],"mappings":";;AAAA,MAAMA,
|
|
1
|
+
{"version":3,"file":"arrays.js","sources":["../../src/primitives/arrays.ts"],"sourcesContent":["const castIncludes = (arr: unknown[], val: unknown, cast: (val: unknown) => unknown): boolean =>\n arr.map((val) => cast(val)).includes(cast(val));\n\nconst includesString = (arr: unknown[], val: unknown) => castIncludes(arr, val, String);\n\nexport { includesString };\n"],"names":["castIncludes","arr","val","cast","map","includes","includesString","String"],"mappings":";;AAAA,MAAMA,YAAAA,GAAe,CAACC,GAAAA,EAAgBC,GAAAA,EAAcC,OAClDF,GAAAA,CAAIG,GAAG,CAAC,CAACF,GAAAA,GAAQC,IAAAA,CAAKD,GAAAA,CAAAA,CAAAA,CAAMG,QAAQ,CAACF,IAAAA,CAAKD,GAAAA,CAAAA,CAAAA;AAE5C,MAAMI,iBAAiB,CAACL,GAAAA,EAAgBC,GAAAA,GAAiBF,YAAAA,CAAaC,KAAKC,GAAAA,EAAKK,MAAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arrays.mjs","sources":["../../src/primitives/arrays.ts"],"sourcesContent":["const castIncludes = (arr: unknown[], val: unknown, cast: (val: unknown) => unknown): boolean =>\n arr.map((val) => cast(val)).includes(cast(val));\n\nconst includesString = (arr: unknown[], val: unknown) => castIncludes(arr, val, String);\n\nexport { includesString };\n"],"names":["castIncludes","arr","val","cast","map","includes","includesString","String"],"mappings":"AAAA,MAAMA,
|
|
1
|
+
{"version":3,"file":"arrays.mjs","sources":["../../src/primitives/arrays.ts"],"sourcesContent":["const castIncludes = (arr: unknown[], val: unknown, cast: (val: unknown) => unknown): boolean =>\n arr.map((val) => cast(val)).includes(cast(val));\n\nconst includesString = (arr: unknown[], val: unknown) => castIncludes(arr, val, String);\n\nexport { includesString };\n"],"names":["castIncludes","arr","val","cast","map","includes","includesString","String"],"mappings":"AAAA,MAAMA,YAAAA,GAAe,CAACC,GAAAA,EAAgBC,GAAAA,EAAcC,OAClDF,GAAAA,CAAIG,GAAG,CAAC,CAACF,GAAAA,GAAQC,IAAAA,CAAKD,GAAAA,CAAAA,CAAAA,CAAMG,QAAQ,CAACF,IAAAA,CAAKD,GAAAA,CAAAA,CAAAA;AAE5C,MAAMI,iBAAiB,CAACL,GAAAA,EAAgBC,GAAAA,GAAiBF,YAAAA,CAAaC,KAAKC,GAAAA,EAAKK,MAAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dates.js","sources":["../../src/primitives/dates.ts"],"sourcesContent":["// Using timestamp (milliseconds) to be sure it is unique\n// + converting timestamp to base 36 for better readibility\nconst timestampCode = (date?: Date) => {\n const referDate = date ?? new Date();\n\n return referDate.getTime().toString(36);\n};\n\nexport { timestampCode };\n"],"names":["timestampCode","date","referDate","Date","getTime","toString"],"mappings":";;AAAA;AACA;AACA,MAAMA,gBAAgB,CAACC,IAAAA,GAAAA;IACrB,MAAMC,SAAAA,GAAYD,QAAQ,IAAIE,IAAAA,EAAAA;AAE9B,IAAA,OAAOD,
|
|
1
|
+
{"version":3,"file":"dates.js","sources":["../../src/primitives/dates.ts"],"sourcesContent":["// Using timestamp (milliseconds) to be sure it is unique\n// + converting timestamp to base 36 for better readibility\nconst timestampCode = (date?: Date) => {\n const referDate = date ?? new Date();\n\n return referDate.getTime().toString(36);\n};\n\nexport { timestampCode };\n"],"names":["timestampCode","date","referDate","Date","getTime","toString"],"mappings":";;AAAA;AACA;AACA,MAAMA,gBAAgB,CAACC,IAAAA,GAAAA;IACrB,MAAMC,SAAAA,GAAYD,QAAQ,IAAIE,IAAAA,EAAAA;AAE9B,IAAA,OAAOD,SAAAA,CAAUE,OAAO,EAAA,CAAGC,QAAQ,CAAC,EAAA,CAAA;AACtC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dates.mjs","sources":["../../src/primitives/dates.ts"],"sourcesContent":["// Using timestamp (milliseconds) to be sure it is unique\n// + converting timestamp to base 36 for better readibility\nconst timestampCode = (date?: Date) => {\n const referDate = date ?? new Date();\n\n return referDate.getTime().toString(36);\n};\n\nexport { timestampCode };\n"],"names":["timestampCode","date","referDate","Date","getTime","toString"],"mappings":"AAAA;AACA;AACA,MAAMA,gBAAgB,CAACC,IAAAA,GAAAA;IACrB,MAAMC,SAAAA,GAAYD,QAAQ,IAAIE,IAAAA,EAAAA;AAE9B,IAAA,OAAOD,
|
|
1
|
+
{"version":3,"file":"dates.mjs","sources":["../../src/primitives/dates.ts"],"sourcesContent":["// Using timestamp (milliseconds) to be sure it is unique\n// + converting timestamp to base 36 for better readibility\nconst timestampCode = (date?: Date) => {\n const referDate = date ?? new Date();\n\n return referDate.getTime().toString(36);\n};\n\nexport { timestampCode };\n"],"names":["timestampCode","date","referDate","Date","getTime","toString"],"mappings":"AAAA;AACA;AACA,MAAMA,gBAAgB,CAACC,IAAAA,GAAAA;IACrB,MAAMC,SAAAA,GAAYD,QAAQ,IAAIE,IAAAA,EAAAA;AAE9B,IAAA,OAAOD,SAAAA,CAAUE,OAAO,EAAA,CAAGC,QAAQ,CAAC,EAAA,CAAA;AACtC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objects.js","sources":["../../src/primitives/objects.ts"],"sourcesContent":["import _ from 'lodash';\n\nconst keysDeep = (obj: object, path: string[] = []): string[] =>\n !_.isObject(obj)\n ? [path.join('.')]\n : _.reduce(\n obj,\n (acc, next, key) => _.concat(acc, keysDeep(next, [...path, key])),\n [] as string[]\n );\n\nexport { keysDeep };\n"],"names":["keysDeep","obj","path","_","isObject","join","reduce","acc","next","key","concat"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"objects.js","sources":["../../src/primitives/objects.ts"],"sourcesContent":["import _ from 'lodash';\n\nconst keysDeep = (obj: object, path: string[] = []): string[] =>\n !_.isObject(obj)\n ? [path.join('.')]\n : _.reduce(\n obj,\n (acc, next, key) => _.concat(acc, keysDeep(next, [...path, key])),\n [] as string[]\n );\n\nexport { keysDeep };\n"],"names":["keysDeep","obj","path","_","isObject","join","reduce","acc","next","key","concat"],"mappings":";;;;AAEA,MAAMA,QAAAA,GAAW,CAACC,GAAAA,EAAaC,IAAAA,GAAiB,EAAE,GAChD,CAACC,CAAAA,CAAEC,QAAQ,CAACH,GAAAA,CAAAA,GACR;AAACC,QAAAA,IAAAA,CAAKG,IAAI,CAAC,GAAA;AAAK,KAAA,GAChBF,CAAAA,CAAEG,MAAM,CACNL,GAAAA,EACA,CAACM,GAAAA,EAAKC,IAAAA,EAAMC,GAAAA,GAAQN,CAAAA,CAAEO,MAAM,CAACH,GAAAA,EAAKP,SAASQ,IAAAA,EAAM;AAAIN,YAAAA,GAAAA,IAAAA;AAAMO,YAAAA;AAAI,SAAA,CAAA,CAAA,EAC/D,EAAE;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objects.mjs","sources":["../../src/primitives/objects.ts"],"sourcesContent":["import _ from 'lodash';\n\nconst keysDeep = (obj: object, path: string[] = []): string[] =>\n !_.isObject(obj)\n ? [path.join('.')]\n : _.reduce(\n obj,\n (acc, next, key) => _.concat(acc, keysDeep(next, [...path, key])),\n [] as string[]\n );\n\nexport { keysDeep };\n"],"names":["keysDeep","obj","path","_","isObject","join","reduce","acc","next","key","concat"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"objects.mjs","sources":["../../src/primitives/objects.ts"],"sourcesContent":["import _ from 'lodash';\n\nconst keysDeep = (obj: object, path: string[] = []): string[] =>\n !_.isObject(obj)\n ? [path.join('.')]\n : _.reduce(\n obj,\n (acc, next, key) => _.concat(acc, keysDeep(next, [...path, key])),\n [] as string[]\n );\n\nexport { keysDeep };\n"],"names":["keysDeep","obj","path","_","isObject","join","reduce","acc","next","key","concat"],"mappings":";;AAEA,MAAMA,QAAAA,GAAW,CAACC,GAAAA,EAAaC,IAAAA,GAAiB,EAAE,GAChD,CAACC,UAAAA,CAAEC,QAAQ,CAACH,GAAAA,CAAAA,GACR;AAACC,QAAAA,IAAAA,CAAKG,IAAI,CAAC,GAAA;AAAK,KAAA,GAChBF,UAAAA,CAAEG,MAAM,CACNL,GAAAA,EACA,CAACM,GAAAA,EAAKC,IAAAA,EAAMC,GAAAA,GAAQN,UAAAA,CAAEO,MAAM,CAACH,GAAAA,EAAKP,SAASQ,IAAAA,EAAM;AAAIN,YAAAA,GAAAA,IAAAA;AAAMO,YAAAA;AAAI,SAAA,CAAA,CAAA,EAC/D,EAAE;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strings.js","sources":["../../src/primitives/strings.ts"],"sourcesContent":["import _, { kebabCase } from 'lodash';\nimport { trimChars, trimCharsEnd, trimCharsStart } from 'lodash/fp';\nimport slugify from '@sindresorhus/slugify';\n\nconst nameToSlug = (name: string, options: slugify.Options = { separator: '-' }) =>\n slugify(name, options);\n\nconst nameToCollectionName = (name: string) => slugify(name, { separator: '_' });\n\nconst toRegressedEnumValue = (value: string) =>\n slugify(value, {\n decamelize: false,\n lowercase: false,\n separator: '_',\n });\n\nconst getCommonPath = (...paths: string[]) => {\n const [segments, ...otherSegments] = paths.map((it) => _.split(it, '/'));\n return _.join(\n _.takeWhile(segments, (str, index) => otherSegments.every((it) => it[index] === str)),\n '/'\n );\n};\n\nconst isEqual = (a: unknown, b: unknown) => String(a) === String(b);\nconst isCamelCase = (value: string) => /^[a-z][a-zA-Z0-9]+$/.test(value);\nconst isKebabCase = (value: string) => /^([a-z][a-z0-9]*)(-[a-z0-9]+)*$/.test(value);\nconst startsWithANumber = (value: string) => /^[0-9]/.test(value);\n\nconst joinBy = (joint: string, ...args: string[]) => {\n const trim = trimChars(joint);\n const trimEnd = trimCharsEnd(joint);\n const trimStart = trimCharsStart(joint);\n\n return args.reduce((url, path, index) => {\n if (args.length === 1) return path;\n if (index === 0) return trimEnd(path);\n if (index === args.length - 1) return url + joint + trimStart(path);\n return url + joint + trim(path);\n }, '');\n};\n\nconst toKebabCase = (value: string) => kebabCase(value);\n\nexport {\n nameToSlug,\n nameToCollectionName,\n getCommonPath,\n isEqual,\n isCamelCase,\n isKebabCase,\n toKebabCase,\n toRegressedEnumValue,\n startsWithANumber,\n joinBy,\n};\n"],"names":["nameToSlug","name","options","separator","slugify","nameToCollectionName","toRegressedEnumValue","value","decamelize","lowercase","getCommonPath","paths","segments","otherSegments","map","it","_","split","join","takeWhile","str","index","every","isEqual","a","b","String","isCamelCase","test","isKebabCase","startsWithANumber","joinBy","joint","args","trim","trimChars","trimEnd","trimCharsEnd","trimStart","trimCharsStart","reduce","url","path","length","toKebabCase","kebabCase"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"strings.js","sources":["../../src/primitives/strings.ts"],"sourcesContent":["import _, { kebabCase } from 'lodash';\nimport { trimChars, trimCharsEnd, trimCharsStart } from 'lodash/fp';\nimport slugify from '@sindresorhus/slugify';\n\nconst nameToSlug = (name: string, options: slugify.Options = { separator: '-' }) =>\n slugify(name, options);\n\nconst nameToCollectionName = (name: string) => slugify(name, { separator: '_' });\n\nconst toRegressedEnumValue = (value: string) =>\n slugify(value, {\n decamelize: false,\n lowercase: false,\n separator: '_',\n });\n\nconst getCommonPath = (...paths: string[]) => {\n const [segments, ...otherSegments] = paths.map((it) => _.split(it, '/'));\n return _.join(\n _.takeWhile(segments, (str, index) => otherSegments.every((it) => it[index] === str)),\n '/'\n );\n};\n\nconst isEqual = (a: unknown, b: unknown) => String(a) === String(b);\nconst isCamelCase = (value: string) => /^[a-z][a-zA-Z0-9]+$/.test(value);\nconst isKebabCase = (value: string) => /^([a-z][a-z0-9]*)(-[a-z0-9]+)*$/.test(value);\nconst startsWithANumber = (value: string) => /^[0-9]/.test(value);\n\nconst joinBy = (joint: string, ...args: string[]) => {\n const trim = trimChars(joint);\n const trimEnd = trimCharsEnd(joint);\n const trimStart = trimCharsStart(joint);\n\n return args.reduce((url, path, index) => {\n if (args.length === 1) return path;\n if (index === 0) return trimEnd(path);\n if (index === args.length - 1) return url + joint + trimStart(path);\n return url + joint + trim(path);\n }, '');\n};\n\nconst toKebabCase = (value: string) => kebabCase(value);\n\nexport {\n nameToSlug,\n nameToCollectionName,\n getCommonPath,\n isEqual,\n isCamelCase,\n isKebabCase,\n toKebabCase,\n toRegressedEnumValue,\n startsWithANumber,\n joinBy,\n};\n"],"names":["nameToSlug","name","options","separator","slugify","nameToCollectionName","toRegressedEnumValue","value","decamelize","lowercase","getCommonPath","paths","segments","otherSegments","map","it","_","split","join","takeWhile","str","index","every","isEqual","a","b","String","isCamelCase","test","isKebabCase","startsWithANumber","joinBy","joint","args","trim","trimChars","trimEnd","trimCharsEnd","trimStart","trimCharsStart","reduce","url","path","length","toKebabCase","kebabCase"],"mappings":";;;;;;AAIA,MAAMA,UAAAA,GAAa,CAACC,IAAAA,EAAcC,OAAAA,GAA2B;IAAEC,SAAAA,EAAW;AAAI,CAAC,GAC7EC,QAAQH,IAAAA,EAAMC,OAAAA;AAEhB,MAAMG,oBAAAA,GAAuB,CAACJ,IAAAA,GAAiBG,OAAAA,CAAQH,IAAAA,EAAM;QAAEE,SAAAA,EAAW;AAAI,KAAA;AAE9E,MAAMG,oBAAAA,GAAuB,CAACC,KAAAA,GAC5BH,OAAAA,CAAQG,KAAAA,EAAO;QACbC,UAAAA,EAAY,KAAA;QACZC,SAAAA,EAAW,KAAA;QACXN,SAAAA,EAAW;AACb,KAAA;AAEF,MAAMO,aAAAA,GAAgB,CAAC,GAAGC,KAAAA,GAAAA;AACxB,IAAA,MAAM,CAACC,QAAAA,EAAU,GAAGC,aAAAA,CAAc,GAAGF,KAAAA,CAAMG,GAAG,CAAC,CAACC,EAAAA,GAAOC,CAAAA,CAAEC,KAAK,CAACF,EAAAA,EAAI,GAAA,CAAA,CAAA;AACnE,IAAA,OAAOC,EAAEE,IAAI,CACXF,EAAEG,SAAS,CAACP,UAAU,CAACQ,GAAAA,EAAKC,QAAUR,aAAAA,CAAcS,KAAK,CAAC,CAACP,EAAAA,GAAOA,EAAE,CAACM,KAAAA,CAAM,KAAKD,GAAAA,CAAAA,CAAAA,EAChF,GAAA,CAAA;AAEJ;AAEA,MAAMG,UAAU,CAACC,CAAAA,EAAYC,CAAAA,GAAeC,MAAAA,CAAOF,OAAOE,MAAAA,CAAOD,CAAAA;AACjE,MAAME,WAAAA,GAAc,CAACpB,KAAAA,GAAkB,qBAAA,CAAsBqB,IAAI,CAACrB,KAAAA;AAClE,MAAMsB,WAAAA,GAAc,CAACtB,KAAAA,GAAkB,iCAAA,CAAkCqB,IAAI,CAACrB,KAAAA;AAC9E,MAAMuB,iBAAAA,GAAoB,CAACvB,KAAAA,GAAkB,QAAA,CAASqB,IAAI,CAACrB,KAAAA;AAE3D,MAAMwB,MAAAA,GAAS,CAACC,KAAAA,EAAe,GAAGC,IAAAA,GAAAA;AAChC,IAAA,MAAMC,OAAOC,YAAAA,CAAUH,KAAAA,CAAAA;AACvB,IAAA,MAAMI,UAAUC,eAAAA,CAAaL,KAAAA,CAAAA;AAC7B,IAAA,MAAMM,YAAYC,iBAAAA,CAAeP,KAAAA,CAAAA;AAEjC,IAAA,OAAOC,IAAAA,CAAKO,MAAM,CAAC,CAACC,KAAKC,IAAAA,EAAMrB,KAAAA,GAAAA;AAC7B,QAAA,IAAIY,IAAAA,CAAKU,MAAM,KAAK,CAAA,EAAG,OAAOD,IAAAA;QAC9B,IAAIrB,KAAAA,KAAU,CAAA,EAAG,OAAOe,OAAAA,CAAQM,IAAAA,CAAAA;QAChC,IAAIrB,KAAAA,KAAUY,KAAKU,MAAM,GAAG,GAAG,OAAOF,GAAAA,GAAMT,QAAQM,SAAAA,CAAUI,IAAAA,CAAAA;QAC9D,OAAOD,GAAAA,GAAMT,QAAQE,IAAAA,CAAKQ,IAAAA,CAAAA;IAC5B,CAAA,EAAG,EAAA,CAAA;AACL;AAEA,MAAME,WAAAA,GAAc,CAACrC,KAAAA,GAAkBsC,WAAAA,CAAUtC,KAAAA;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strings.mjs","sources":["../../src/primitives/strings.ts"],"sourcesContent":["import _, { kebabCase } from 'lodash';\nimport { trimChars, trimCharsEnd, trimCharsStart } from 'lodash/fp';\nimport slugify from '@sindresorhus/slugify';\n\nconst nameToSlug = (name: string, options: slugify.Options = { separator: '-' }) =>\n slugify(name, options);\n\nconst nameToCollectionName = (name: string) => slugify(name, { separator: '_' });\n\nconst toRegressedEnumValue = (value: string) =>\n slugify(value, {\n decamelize: false,\n lowercase: false,\n separator: '_',\n });\n\nconst getCommonPath = (...paths: string[]) => {\n const [segments, ...otherSegments] = paths.map((it) => _.split(it, '/'));\n return _.join(\n _.takeWhile(segments, (str, index) => otherSegments.every((it) => it[index] === str)),\n '/'\n );\n};\n\nconst isEqual = (a: unknown, b: unknown) => String(a) === String(b);\nconst isCamelCase = (value: string) => /^[a-z][a-zA-Z0-9]+$/.test(value);\nconst isKebabCase = (value: string) => /^([a-z][a-z0-9]*)(-[a-z0-9]+)*$/.test(value);\nconst startsWithANumber = (value: string) => /^[0-9]/.test(value);\n\nconst joinBy = (joint: string, ...args: string[]) => {\n const trim = trimChars(joint);\n const trimEnd = trimCharsEnd(joint);\n const trimStart = trimCharsStart(joint);\n\n return args.reduce((url, path, index) => {\n if (args.length === 1) return path;\n if (index === 0) return trimEnd(path);\n if (index === args.length - 1) return url + joint + trimStart(path);\n return url + joint + trim(path);\n }, '');\n};\n\nconst toKebabCase = (value: string) => kebabCase(value);\n\nexport {\n nameToSlug,\n nameToCollectionName,\n getCommonPath,\n isEqual,\n isCamelCase,\n isKebabCase,\n toKebabCase,\n toRegressedEnumValue,\n startsWithANumber,\n joinBy,\n};\n"],"names":["nameToSlug","name","options","separator","slugify","nameToCollectionName","toRegressedEnumValue","value","decamelize","lowercase","getCommonPath","paths","segments","otherSegments","map","it","_","split","join","takeWhile","str","index","every","isEqual","a","b","String","isCamelCase","test","isKebabCase","startsWithANumber","joinBy","joint","args","trim","trimChars","trimEnd","trimCharsEnd","trimStart","trimCharsStart","reduce","url","path","length","toKebabCase","kebabCase"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"strings.mjs","sources":["../../src/primitives/strings.ts"],"sourcesContent":["import _, { kebabCase } from 'lodash';\nimport { trimChars, trimCharsEnd, trimCharsStart } from 'lodash/fp';\nimport slugify from '@sindresorhus/slugify';\n\nconst nameToSlug = (name: string, options: slugify.Options = { separator: '-' }) =>\n slugify(name, options);\n\nconst nameToCollectionName = (name: string) => slugify(name, { separator: '_' });\n\nconst toRegressedEnumValue = (value: string) =>\n slugify(value, {\n decamelize: false,\n lowercase: false,\n separator: '_',\n });\n\nconst getCommonPath = (...paths: string[]) => {\n const [segments, ...otherSegments] = paths.map((it) => _.split(it, '/'));\n return _.join(\n _.takeWhile(segments, (str, index) => otherSegments.every((it) => it[index] === str)),\n '/'\n );\n};\n\nconst isEqual = (a: unknown, b: unknown) => String(a) === String(b);\nconst isCamelCase = (value: string) => /^[a-z][a-zA-Z0-9]+$/.test(value);\nconst isKebabCase = (value: string) => /^([a-z][a-z0-9]*)(-[a-z0-9]+)*$/.test(value);\nconst startsWithANumber = (value: string) => /^[0-9]/.test(value);\n\nconst joinBy = (joint: string, ...args: string[]) => {\n const trim = trimChars(joint);\n const trimEnd = trimCharsEnd(joint);\n const trimStart = trimCharsStart(joint);\n\n return args.reduce((url, path, index) => {\n if (args.length === 1) return path;\n if (index === 0) return trimEnd(path);\n if (index === args.length - 1) return url + joint + trimStart(path);\n return url + joint + trim(path);\n }, '');\n};\n\nconst toKebabCase = (value: string) => kebabCase(value);\n\nexport {\n nameToSlug,\n nameToCollectionName,\n getCommonPath,\n isEqual,\n isCamelCase,\n isKebabCase,\n toKebabCase,\n toRegressedEnumValue,\n startsWithANumber,\n joinBy,\n};\n"],"names":["nameToSlug","name","options","separator","slugify","nameToCollectionName","toRegressedEnumValue","value","decamelize","lowercase","getCommonPath","paths","segments","otherSegments","map","it","_","split","join","takeWhile","str","index","every","isEqual","a","b","String","isCamelCase","test","isKebabCase","startsWithANumber","joinBy","joint","args","trim","trimChars","trimEnd","trimCharsEnd","trimStart","trimCharsStart","reduce","url","path","length","toKebabCase","kebabCase"],"mappings":";;;;AAIA,MAAMA,UAAAA,GAAa,CAACC,IAAAA,EAAcC,OAAAA,GAA2B;IAAEC,SAAAA,EAAW;AAAI,CAAC,GAC7EC,QAAQH,IAAAA,EAAMC,OAAAA;AAEhB,MAAMG,oBAAAA,GAAuB,CAACJ,IAAAA,GAAiBG,OAAAA,CAAQH,IAAAA,EAAM;QAAEE,SAAAA,EAAW;AAAI,KAAA;AAE9E,MAAMG,oBAAAA,GAAuB,CAACC,KAAAA,GAC5BH,OAAAA,CAAQG,KAAAA,EAAO;QACbC,UAAAA,EAAY,KAAA;QACZC,SAAAA,EAAW,KAAA;QACXN,SAAAA,EAAW;AACb,KAAA;AAEF,MAAMO,aAAAA,GAAgB,CAAC,GAAGC,KAAAA,GAAAA;AACxB,IAAA,MAAM,CAACC,QAAAA,EAAU,GAAGC,aAAAA,CAAc,GAAGF,KAAAA,CAAMG,GAAG,CAAC,CAACC,EAAAA,GAAOC,UAAAA,CAAEC,KAAK,CAACF,EAAAA,EAAI,GAAA,CAAA,CAAA;AACnE,IAAA,OAAOC,WAAEE,IAAI,CACXF,WAAEG,SAAS,CAACP,UAAU,CAACQ,GAAAA,EAAKC,QAAUR,aAAAA,CAAcS,KAAK,CAAC,CAACP,EAAAA,GAAOA,EAAE,CAACM,KAAAA,CAAM,KAAKD,GAAAA,CAAAA,CAAAA,EAChF,GAAA,CAAA;AAEJ;AAEA,MAAMG,UAAU,CAACC,CAAAA,EAAYC,CAAAA,GAAeC,MAAAA,CAAOF,OAAOE,MAAAA,CAAOD,CAAAA;AACjE,MAAME,WAAAA,GAAc,CAACpB,KAAAA,GAAkB,qBAAA,CAAsBqB,IAAI,CAACrB,KAAAA;AAClE,MAAMsB,WAAAA,GAAc,CAACtB,KAAAA,GAAkB,iCAAA,CAAkCqB,IAAI,CAACrB,KAAAA;AAC9E,MAAMuB,iBAAAA,GAAoB,CAACvB,KAAAA,GAAkB,QAAA,CAASqB,IAAI,CAACrB,KAAAA;AAE3D,MAAMwB,MAAAA,GAAS,CAACC,KAAAA,EAAe,GAAGC,IAAAA,GAAAA;AAChC,IAAA,MAAMC,OAAOC,SAAAA,CAAUH,KAAAA,CAAAA;AACvB,IAAA,MAAMI,UAAUC,YAAAA,CAAaL,KAAAA,CAAAA;AAC7B,IAAA,MAAMM,YAAYC,cAAAA,CAAeP,KAAAA,CAAAA;AAEjC,IAAA,OAAOC,IAAAA,CAAKO,MAAM,CAAC,CAACC,KAAKC,IAAAA,EAAMrB,KAAAA,GAAAA;AAC7B,QAAA,IAAIY,IAAAA,CAAKU,MAAM,KAAK,CAAA,EAAG,OAAOD,IAAAA;QAC9B,IAAIrB,KAAAA,KAAU,CAAA,EAAG,OAAOe,OAAAA,CAAQM,IAAAA,CAAAA;QAChC,IAAIrB,KAAAA,KAAUY,KAAKU,MAAM,GAAG,GAAG,OAAOF,GAAAA,GAAMT,QAAQM,SAAAA,CAAUI,IAAAA,CAAAA;QAC9D,OAAOD,GAAAA,GAAMT,QAAQE,IAAAA,CAAKQ,IAAAA,CAAAA;IAC5B,CAAA,EAAG,EAAA,CAAA;AACL;AAEA,MAAME,WAAAA,GAAc,CAACrC,KAAAA,GAAkBsC,SAAAA,CAAUtC,KAAAA;;;;"}
|
package/dist/print-value.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"print-value.js","sources":["../src/print-value.ts"],"sourcesContent":["// Code copied from the yup library (https://github.com/jquense/yup)\n// https://github.com/jquense/yup/blob/2778b88bdacd5260d593c6468793da2e77daf21f/src/util/printValue.ts\n\nconst { toString } = Object.prototype;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\nconst symbolToString = typeof Symbol !== 'undefined' ? Symbol.prototype.toString : () => '';\n\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\n\nfunction printNumber(val: number) {\n // eslint-disable-next-line eqeqeq\n if (val != +val) return 'NaN';\n const isNegativeZero = val === 0 && 1 / val < 0;\n return isNegativeZero ? '-0' : `${val}`;\n}\n\nfunction printSimpleValue(val: unknown, quoteStrings = false) {\n if (val == null || val === true || val === false) return `${val}`;\n\n if (typeof val === 'number') return printNumber(val);\n if (typeof val === 'string') return quoteStrings ? `\"${val}\"` : val;\n if (typeof val === 'function') return `[Function ${val.name || 'anonymous'}]`;\n if (typeof val === 'symbol') return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n\n const tag = toString.call(val).slice(8, -1);\n\n if (tag === 'Date') {\n const v = val as Date;\n return Number.isNaN(v.getTime()) ? `${v}` : v.toISOString();\n }\n if (tag === 'Error' || val instanceof Error) return `[${errorToString.call(val)}]`;\n if (tag === 'RegExp') return regExpToString.call(val);\n\n return null;\n}\n\nfunction printValue(value: unknown, quoteStrings: boolean) {\n const result = printSimpleValue(value, quoteStrings);\n if (result !== null) return result;\n\n return JSON.stringify(\n value,\n function replacer(key, value) {\n const result = printSimpleValue(this[key], quoteStrings);\n if (result !== null) return result;\n return value;\n },\n 2\n );\n}\n\nexport { printValue };\n"],"names":["toString","Object","prototype","errorToString","Error","regExpToString","RegExp","symbolToString","Symbol","SYMBOL_REGEXP","printNumber","val","isNegativeZero","printSimpleValue","quoteStrings","name","call","replace","tag","slice","v","Number","isNaN","getTime","toISOString","printValue","value","result","JSON","stringify","replacer","key"],"mappings":";;AAAA;AACA;AAEA,MAAM,EAAEA,QAAQ,EAAE,GAAGC,OAAOC,SAAS;AACrC,MAAMC,
|
|
1
|
+
{"version":3,"file":"print-value.js","sources":["../src/print-value.ts"],"sourcesContent":["// Code copied from the yup library (https://github.com/jquense/yup)\n// https://github.com/jquense/yup/blob/2778b88bdacd5260d593c6468793da2e77daf21f/src/util/printValue.ts\n\nconst { toString } = Object.prototype;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\nconst symbolToString = typeof Symbol !== 'undefined' ? Symbol.prototype.toString : () => '';\n\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\n\nfunction printNumber(val: number) {\n // eslint-disable-next-line eqeqeq\n if (val != +val) return 'NaN';\n const isNegativeZero = val === 0 && 1 / val < 0;\n return isNegativeZero ? '-0' : `${val}`;\n}\n\nfunction printSimpleValue(val: unknown, quoteStrings = false) {\n if (val == null || val === true || val === false) return `${val}`;\n\n if (typeof val === 'number') return printNumber(val);\n if (typeof val === 'string') return quoteStrings ? `\"${val}\"` : val;\n if (typeof val === 'function') return `[Function ${val.name || 'anonymous'}]`;\n if (typeof val === 'symbol') return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n\n const tag = toString.call(val).slice(8, -1);\n\n if (tag === 'Date') {\n const v = val as Date;\n return Number.isNaN(v.getTime()) ? `${v}` : v.toISOString();\n }\n if (tag === 'Error' || val instanceof Error) return `[${errorToString.call(val)}]`;\n if (tag === 'RegExp') return regExpToString.call(val);\n\n return null;\n}\n\nfunction printValue(value: unknown, quoteStrings: boolean) {\n const result = printSimpleValue(value, quoteStrings);\n if (result !== null) return result;\n\n return JSON.stringify(\n value,\n function replacer(key, value) {\n const result = printSimpleValue(this[key], quoteStrings);\n if (result !== null) return result;\n return value;\n },\n 2\n );\n}\n\nexport { printValue };\n"],"names":["toString","Object","prototype","errorToString","Error","regExpToString","RegExp","symbolToString","Symbol","SYMBOL_REGEXP","printNumber","val","isNegativeZero","printSimpleValue","quoteStrings","name","call","replace","tag","slice","v","Number","isNaN","getTime","toISOString","printValue","value","result","JSON","stringify","replacer","key"],"mappings":";;AAAA;AACA;AAEA,MAAM,EAAEA,QAAQ,EAAE,GAAGC,OAAOC,SAAS;AACrC,MAAMC,aAAAA,GAAgBC,KAAAA,CAAMF,SAAS,CAACF,QAAQ;AAC9C,MAAMK,cAAAA,GAAiBC,MAAAA,CAAOJ,SAAS,CAACF,QAAQ;AAChD,MAAMO,cAAAA,GAAiB,OAAOC,MAAAA,KAAW,WAAA,GAAcA,OAAON,SAAS,CAACF,QAAQ,GAAG,IAAM,EAAA;AAEzF,MAAMS,aAAAA,GAAgB,sBAAA;AAEtB,SAASC,YAAYC,GAAW,EAAA;;IAE9B,IAAIA,GAAAA,IAAO,CAACA,GAAAA,EAAK,OAAO,KAAA;AACxB,IAAA,MAAMC,cAAAA,GAAiBD,GAAAA,KAAQ,CAAA,IAAK,CAAA,GAAIA,GAAAA,GAAM,CAAA;IAC9C,OAAOC,cAAAA,GAAiB,IAAA,GAAO,CAAA,EAAGD,GAAAA,CAAAA,CAAK;AACzC;AAEA,SAASE,gBAAAA,CAAiBF,GAAY,EAAEG,YAAAA,GAAe,KAAK,EAAA;IAC1D,IAAIH,GAAAA,IAAO,QAAQA,GAAAA,KAAQ,IAAA,IAAQA,QAAQ,KAAA,EAAO,OAAO,GAAGA,GAAAA,CAAAA,CAAK;AAEjE,IAAA,IAAI,OAAOA,GAAAA,KAAQ,QAAA,EAAU,OAAOD,WAAAA,CAAYC,GAAAA,CAAAA;IAChD,IAAI,OAAOA,GAAAA,KAAQ,QAAA,EAAU,OAAOG,YAAAA,GAAe,CAAC,CAAC,EAAEH,GAAAA,CAAI,CAAC,CAAC,GAAGA,GAAAA;AAChE,IAAA,IAAI,OAAOA,GAAAA,KAAQ,UAAA,EAAY,OAAO,CAAC,UAAU,EAAEA,GAAAA,CAAII,IAAI,IAAI,WAAA,CAAY,CAAC,CAAC;IAC7E,IAAI,OAAOJ,GAAAA,KAAQ,QAAA,EAAU,OAAOJ,cAAAA,CAAeS,IAAI,CAACL,GAAAA,CAAAA,CAAKM,OAAO,CAACR,aAAAA,EAAe,YAAA,CAAA;IAEpF,MAAMS,GAAAA,GAAMlB,SAASgB,IAAI,CAACL,KAAKQ,KAAK,CAAC,GAAG,EAAC,CAAA;AAEzC,IAAA,IAAID,QAAQ,MAAA,EAAQ;AAClB,QAAA,MAAME,CAAAA,GAAIT,GAAAA;QACV,OAAOU,MAAAA,CAAOC,KAAK,CAACF,CAAAA,CAAEG,OAAO,MAAM,CAAA,EAAGH,CAAAA,CAAAA,CAAG,GAAGA,CAAAA,CAAEI,WAAW,EAAA;AAC3D,IAAA;AACA,IAAA,IAAIN,GAAAA,KAAQ,OAAA,IAAWP,GAAAA,YAAeP,KAAAA,EAAO,OAAO,CAAC,CAAC,EAAED,aAAAA,CAAca,IAAI,CAACL,GAAAA,CAAAA,CAAK,CAAC,CAAC;AAClF,IAAA,IAAIO,GAAAA,KAAQ,QAAA,EAAU,OAAOb,cAAAA,CAAeW,IAAI,CAACL,GAAAA,CAAAA;IAEjD,OAAO,IAAA;AACT;AAEA,SAASc,UAAAA,CAAWC,KAAc,EAAEZ,YAAqB,EAAA;IACvD,MAAMa,MAAAA,GAASd,iBAAiBa,KAAAA,EAAOZ,YAAAA,CAAAA;IACvC,IAAIa,MAAAA,KAAW,MAAM,OAAOA,MAAAA;IAE5B,OAAOC,IAAAA,CAAKC,SAAS,CACnBH,KAAAA,EACA,SAASI,QAAAA,CAASC,GAAG,EAAEL,KAAK,EAAA;AAC1B,QAAA,MAAMC,MAAAA,GAASd,gBAAAA,CAAiB,IAAI,CAACkB,IAAI,EAAEjB,YAAAA,CAAAA;QAC3C,IAAIa,MAAAA,KAAW,MAAM,OAAOA,MAAAA;QAC5B,OAAOD,KAAAA;IACT,CAAA,EACA,CAAA,CAAA;AAEJ;;;;"}
|
package/dist/print-value.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"print-value.mjs","sources":["../src/print-value.ts"],"sourcesContent":["// Code copied from the yup library (https://github.com/jquense/yup)\n// https://github.com/jquense/yup/blob/2778b88bdacd5260d593c6468793da2e77daf21f/src/util/printValue.ts\n\nconst { toString } = Object.prototype;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\nconst symbolToString = typeof Symbol !== 'undefined' ? Symbol.prototype.toString : () => '';\n\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\n\nfunction printNumber(val: number) {\n // eslint-disable-next-line eqeqeq\n if (val != +val) return 'NaN';\n const isNegativeZero = val === 0 && 1 / val < 0;\n return isNegativeZero ? '-0' : `${val}`;\n}\n\nfunction printSimpleValue(val: unknown, quoteStrings = false) {\n if (val == null || val === true || val === false) return `${val}`;\n\n if (typeof val === 'number') return printNumber(val);\n if (typeof val === 'string') return quoteStrings ? `\"${val}\"` : val;\n if (typeof val === 'function') return `[Function ${val.name || 'anonymous'}]`;\n if (typeof val === 'symbol') return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n\n const tag = toString.call(val).slice(8, -1);\n\n if (tag === 'Date') {\n const v = val as Date;\n return Number.isNaN(v.getTime()) ? `${v}` : v.toISOString();\n }\n if (tag === 'Error' || val instanceof Error) return `[${errorToString.call(val)}]`;\n if (tag === 'RegExp') return regExpToString.call(val);\n\n return null;\n}\n\nfunction printValue(value: unknown, quoteStrings: boolean) {\n const result = printSimpleValue(value, quoteStrings);\n if (result !== null) return result;\n\n return JSON.stringify(\n value,\n function replacer(key, value) {\n const result = printSimpleValue(this[key], quoteStrings);\n if (result !== null) return result;\n return value;\n },\n 2\n );\n}\n\nexport { printValue };\n"],"names":["toString","Object","prototype","errorToString","Error","regExpToString","RegExp","symbolToString","Symbol","SYMBOL_REGEXP","printNumber","val","isNegativeZero","printSimpleValue","quoteStrings","name","call","replace","tag","slice","v","Number","isNaN","getTime","toISOString","printValue","value","result","JSON","stringify","replacer","key"],"mappings":"AAAA;AACA;AAEA,MAAM,EAAEA,QAAQ,EAAE,GAAGC,OAAOC,SAAS;AACrC,MAAMC,
|
|
1
|
+
{"version":3,"file":"print-value.mjs","sources":["../src/print-value.ts"],"sourcesContent":["// Code copied from the yup library (https://github.com/jquense/yup)\n// https://github.com/jquense/yup/blob/2778b88bdacd5260d593c6468793da2e77daf21f/src/util/printValue.ts\n\nconst { toString } = Object.prototype;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\nconst symbolToString = typeof Symbol !== 'undefined' ? Symbol.prototype.toString : () => '';\n\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\n\nfunction printNumber(val: number) {\n // eslint-disable-next-line eqeqeq\n if (val != +val) return 'NaN';\n const isNegativeZero = val === 0 && 1 / val < 0;\n return isNegativeZero ? '-0' : `${val}`;\n}\n\nfunction printSimpleValue(val: unknown, quoteStrings = false) {\n if (val == null || val === true || val === false) return `${val}`;\n\n if (typeof val === 'number') return printNumber(val);\n if (typeof val === 'string') return quoteStrings ? `\"${val}\"` : val;\n if (typeof val === 'function') return `[Function ${val.name || 'anonymous'}]`;\n if (typeof val === 'symbol') return symbolToString.call(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n\n const tag = toString.call(val).slice(8, -1);\n\n if (tag === 'Date') {\n const v = val as Date;\n return Number.isNaN(v.getTime()) ? `${v}` : v.toISOString();\n }\n if (tag === 'Error' || val instanceof Error) return `[${errorToString.call(val)}]`;\n if (tag === 'RegExp') return regExpToString.call(val);\n\n return null;\n}\n\nfunction printValue(value: unknown, quoteStrings: boolean) {\n const result = printSimpleValue(value, quoteStrings);\n if (result !== null) return result;\n\n return JSON.stringify(\n value,\n function replacer(key, value) {\n const result = printSimpleValue(this[key], quoteStrings);\n if (result !== null) return result;\n return value;\n },\n 2\n );\n}\n\nexport { printValue };\n"],"names":["toString","Object","prototype","errorToString","Error","regExpToString","RegExp","symbolToString","Symbol","SYMBOL_REGEXP","printNumber","val","isNegativeZero","printSimpleValue","quoteStrings","name","call","replace","tag","slice","v","Number","isNaN","getTime","toISOString","printValue","value","result","JSON","stringify","replacer","key"],"mappings":"AAAA;AACA;AAEA,MAAM,EAAEA,QAAQ,EAAE,GAAGC,OAAOC,SAAS;AACrC,MAAMC,aAAAA,GAAgBC,KAAAA,CAAMF,SAAS,CAACF,QAAQ;AAC9C,MAAMK,cAAAA,GAAiBC,MAAAA,CAAOJ,SAAS,CAACF,QAAQ;AAChD,MAAMO,cAAAA,GAAiB,OAAOC,MAAAA,KAAW,WAAA,GAAcA,OAAON,SAAS,CAACF,QAAQ,GAAG,IAAM,EAAA;AAEzF,MAAMS,aAAAA,GAAgB,sBAAA;AAEtB,SAASC,YAAYC,GAAW,EAAA;;IAE9B,IAAIA,GAAAA,IAAO,CAACA,GAAAA,EAAK,OAAO,KAAA;AACxB,IAAA,MAAMC,cAAAA,GAAiBD,GAAAA,KAAQ,CAAA,IAAK,CAAA,GAAIA,GAAAA,GAAM,CAAA;IAC9C,OAAOC,cAAAA,GAAiB,IAAA,GAAO,CAAA,EAAGD,GAAAA,CAAAA,CAAK;AACzC;AAEA,SAASE,gBAAAA,CAAiBF,GAAY,EAAEG,YAAAA,GAAe,KAAK,EAAA;IAC1D,IAAIH,GAAAA,IAAO,QAAQA,GAAAA,KAAQ,IAAA,IAAQA,QAAQ,KAAA,EAAO,OAAO,GAAGA,GAAAA,CAAAA,CAAK;AAEjE,IAAA,IAAI,OAAOA,GAAAA,KAAQ,QAAA,EAAU,OAAOD,WAAAA,CAAYC,GAAAA,CAAAA;IAChD,IAAI,OAAOA,GAAAA,KAAQ,QAAA,EAAU,OAAOG,YAAAA,GAAe,CAAC,CAAC,EAAEH,GAAAA,CAAI,CAAC,CAAC,GAAGA,GAAAA;AAChE,IAAA,IAAI,OAAOA,GAAAA,KAAQ,UAAA,EAAY,OAAO,CAAC,UAAU,EAAEA,GAAAA,CAAII,IAAI,IAAI,WAAA,CAAY,CAAC,CAAC;IAC7E,IAAI,OAAOJ,GAAAA,KAAQ,QAAA,EAAU,OAAOJ,cAAAA,CAAeS,IAAI,CAACL,GAAAA,CAAAA,CAAKM,OAAO,CAACR,aAAAA,EAAe,YAAA,CAAA;IAEpF,MAAMS,GAAAA,GAAMlB,SAASgB,IAAI,CAACL,KAAKQ,KAAK,CAAC,GAAG,EAAC,CAAA;AAEzC,IAAA,IAAID,QAAQ,MAAA,EAAQ;AAClB,QAAA,MAAME,CAAAA,GAAIT,GAAAA;QACV,OAAOU,MAAAA,CAAOC,KAAK,CAACF,CAAAA,CAAEG,OAAO,MAAM,CAAA,EAAGH,CAAAA,CAAAA,CAAG,GAAGA,CAAAA,CAAEI,WAAW,EAAA;AAC3D,IAAA;AACA,IAAA,IAAIN,GAAAA,KAAQ,OAAA,IAAWP,GAAAA,YAAeP,KAAAA,EAAO,OAAO,CAAC,CAAC,EAAED,aAAAA,CAAca,IAAI,CAACL,GAAAA,CAAAA,CAAK,CAAC,CAAC;AAClF,IAAA,IAAIO,GAAAA,KAAQ,QAAA,EAAU,OAAOb,cAAAA,CAAeW,IAAI,CAACL,GAAAA,CAAAA;IAEjD,OAAO,IAAA;AACT;AAEA,SAASc,UAAAA,CAAWC,KAAc,EAAEZ,YAAqB,EAAA;IACvD,MAAMa,MAAAA,GAASd,iBAAiBa,KAAAA,EAAOZ,YAAAA,CAAAA;IACvC,IAAIa,MAAAA,KAAW,MAAM,OAAOA,MAAAA;IAE5B,OAAOC,IAAAA,CAAKC,SAAS,CACnBH,KAAAA,EACA,SAASI,QAAAA,CAASC,GAAG,EAAEL,KAAK,EAAA;AAC1B,QAAA,MAAMC,MAAAA,GAASd,gBAAAA,CAAiB,IAAI,CAACkB,IAAI,EAAEjB,YAAAA,CAAAA;QAC3C,IAAIa,MAAAA,KAAW,MAAM,OAAOA,MAAAA;QAC5B,OAAOD,KAAAA;IACT,CAAA,EACA,CAAA,CAAA;AAEJ;;;;"}
|