feathers-utils 10.0.0-3 → 10.0.0-5

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.
Files changed (39) hide show
  1. package/CHANGELOG.md +18 -2
  2. package/dist/{chunk-U2HKW5ZL.js → chunk-CCG76NAU.js} +27 -25
  3. package/dist/chunk-CCG76NAU.js.map +1 -0
  4. package/dist/chunk-G2FB6TZW.js +15 -0
  5. package/dist/chunk-G2FB6TZW.js.map +1 -0
  6. package/dist/{chunk-KSCPQLU3.js → chunk-JIARTRVW.js} +3 -3
  7. package/dist/{chunk-KSCPQLU3.js.map → chunk-JIARTRVW.js.map} +1 -1
  8. package/dist/{chunk-4TBKW4G4.js → chunk-WF2LUJAT.js} +26 -15
  9. package/dist/chunk-WF2LUJAT.js.map +1 -0
  10. package/dist/hooks.d.ts +14 -8
  11. package/dist/hooks.js +4 -4
  12. package/dist/{index-DhUJBJMr.d.ts → index-BCF2ZbXO.d.ts} +1 -1
  13. package/dist/index.d.ts +1 -1
  14. package/dist/index.js +4 -4
  15. package/dist/predicates.js +2 -2
  16. package/dist/resolvers.d.ts +2 -2
  17. package/dist/resolvers.js +5 -5
  18. package/dist/resolvers.js.map +1 -1
  19. package/dist/transformers.js +1 -1
  20. package/dist/utils.d.ts +1 -1
  21. package/dist/utils.js +3 -3
  22. package/package.json +1 -1
  23. package/src/feathers-cjs-fix.ts +5 -0
  24. package/src/hooks/cache/cache.hook.ts +1 -1
  25. package/src/hooks/check-required/check-required.hook.ts +1 -1
  26. package/src/hooks/create-related/create-related.hook.ts +0 -2
  27. package/src/hooks/disable-pagination/disable-pagination.hook.ts +2 -2
  28. package/src/hooks/on-delete/on-delete.hook.ts +2 -2
  29. package/src/hooks/soft-delete/soft-delete.hook.ts +25 -11
  30. package/src/hooks/throw-if/throw-if.hook.ts +1 -3
  31. package/src/internal.utils.ts +28 -0
  32. package/src/resolvers/hooks/resolve-result.ts +1 -1
  33. package/src/resolvers/hooks/resolve.ts +1 -1
  34. package/src/utils/add-to-query/add-to-query.util.ts +24 -16
  35. package/src/utils/get-exposed-methods/get-exposed-methods.util.ts +1 -1
  36. package/dist/chunk-4TBKW4G4.js.map +0 -1
  37. package/dist/chunk-DKP457HT.js +0 -9
  38. package/dist/chunk-DKP457HT.js.map +0 -1
  39. package/dist/chunk-U2HKW5ZL.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -2,16 +2,32 @@
2
2
 
3
3
  ## [Unreleased](https://github.com/feathersjs/feathers-utils/tree/HEAD)
4
4
 
5
- [Full Changelog](https://github.com/feathersjs/feathers-utils/compare/v10.0.0-2...HEAD)
5
+ [Full Changelog](https://github.com/feathersjs/feathers-utils/compare/v10.0.0-4...HEAD)
6
6
 
7
7
  **Merged pull requests:**
8
8
 
9
- - feat\(utils\): new util addToQuery [\#6](https://github.com/feathersjs/feathers-utils/pull/6) ([fratzinger](https://github.com/fratzinger))
9
+ - fix: cjs fix for SERVICE from @feathersjs/feathers [\#8](https://github.com/feathersjs/feathers-utils/pull/8) ([fratzinger](https://github.com/fratzinger))
10
+
11
+ ## [v10.0.0-4](https://github.com/feathersjs/feathers-utils/tree/v10.0.0-4) (2025-09-26)
12
+
13
+ [Full Changelog](https://github.com/feathersjs/feathers-utils/compare/v10.0.0-3...v10.0.0-4)
14
+
15
+ ## [v10.0.0-3](https://github.com/feathersjs/feathers-utils/tree/v10.0.0-3) (2025-09-26)
16
+
17
+ [Full Changelog](https://github.com/feathersjs/feathers-utils/compare/v10.0.0-2...v10.0.0-3)
18
+
19
+ **Merged pull requests:**
20
+
21
+ - chore: tsup external packages [\#7](https://github.com/feathersjs/feathers-utils/pull/7) ([fratzinger](https://github.com/fratzinger))
10
22
 
11
23
  ## [v10.0.0-2](https://github.com/feathersjs/feathers-utils/tree/v10.0.0-2) (2025-09-25)
12
24
 
13
25
  [Full Changelog](https://github.com/feathersjs/feathers-utils/compare/v10.0.0-1...v10.0.0-2)
14
26
 
27
+ **Merged pull requests:**
28
+
29
+ - feat\(utils\): new util addToQuery [\#6](https://github.com/feathersjs/feathers-utils/pull/6) ([fratzinger](https://github.com/fratzinger))
30
+
15
31
  ## [v10.0.0-1](https://github.com/feathersjs/feathers-utils/tree/v10.0.0-1) (2025-09-23)
16
32
 
17
33
  [Full Changelog](https://github.com/feathersjs/feathers-utils/compare/v10.0.0-0...v10.0.0-1)
@@ -1,6 +1,6 @@
1
- import { mutateResult, checkContext, getDataIsArray, getResultIsArray, mutateData, contextToJson, transformParams } from './chunk-4TBKW4G4.js';
2
- import { isMulti, isProvider, isPromise, every, traverse } from './chunk-KSCPQLU3.js';
3
- import { toArray } from './chunk-DKP457HT.js';
1
+ import { mutateResult, checkContext, getDataIsArray, getResultIsArray, mutateData, contextToJson, addToQuery, transformParams } from './chunk-WF2LUJAT.js';
2
+ import { isMulti, isProvider, isPromise, every, traverse } from './chunk-JIARTRVW.js';
3
+ import { toArray, early } from './chunk-G2FB6TZW.js';
4
4
  import isObject from 'lodash/isObject.js';
5
5
  import copy from 'fast-copy';
6
6
  import { MethodNotAllowed, BadRequest, Forbidden } from '@feathersjs/errors';
@@ -10,6 +10,7 @@ import _omit from 'lodash/omit.js';
10
10
  import _set from 'lodash/set.js';
11
11
  import _setWith from 'lodash/setWith.js';
12
12
  import _clone from 'lodash/clone.js';
13
+ import { isPromise as isPromise$1 } from 'util/types';
13
14
 
14
15
  // src/utils/combine/combine.util.ts
15
16
  function combine(...serviceHooks) {
@@ -74,7 +75,7 @@ var cache = (options) => {
74
75
  await cacheBefore(context, cacheMap);
75
76
  await next();
76
77
  await cacheAfter(context, cacheMap);
77
- return context;
78
+ return;
78
79
  }
79
80
  };
80
81
  };
@@ -215,7 +216,7 @@ function checkRequired(fieldNames) {
215
216
  }
216
217
  }
217
218
  }
218
- if (next) return next().then(() => context);
219
+ if (next) return next();
219
220
  };
220
221
  }
221
222
 
@@ -246,7 +247,6 @@ function createRelated(options) {
246
247
  }
247
248
  })
248
249
  );
249
- return context;
250
250
  };
251
251
  }
252
252
 
@@ -289,13 +289,13 @@ var debug = (msg, ...fieldNames) => async (context, next) => {
289
289
 
290
290
  // src/hooks/disable-pagination/disable-pagination.hook.ts
291
291
  var disablePagination = () => (context, next) => {
292
- checkContext(context, "before", ["find"], "disablePagination");
292
+ checkContext(context, ["before", "around"], ["find"], "disablePagination");
293
293
  const $limit = context.params?.query?.$limit;
294
294
  if ($limit === "-1" || $limit === -1) {
295
295
  context.params.paginate = false;
296
296
  delete context.params.query.$limit;
297
297
  }
298
- if (next) return next().then(() => context);
298
+ if (next) return next();
299
299
  return context;
300
300
  };
301
301
  var disallow = (transports) => {
@@ -358,7 +358,7 @@ var onDelete = (options) => {
358
358
  }
359
359
  const { result } = getResultIsArray(context);
360
360
  if (!result.length) {
361
- return context;
361
+ return;
362
362
  }
363
363
  const promises = [];
364
364
  optionsMulti.forEach(
@@ -389,7 +389,7 @@ var onDelete = (options) => {
389
389
  if (promises.length) {
390
390
  await Promise.all(promises);
391
391
  }
392
- return context;
392
+ return;
393
393
  };
394
394
  };
395
395
 
@@ -614,8 +614,6 @@ var skippable = (hook, predicate) => (context, next) => {
614
614
  }
615
615
  return skip.then(skipOrRun);
616
616
  };
617
-
618
- // src/hooks/soft-delete/soft-delete.hook.ts
619
617
  var softDelete = (options) => {
620
618
  if (!options?.deletedQuery || !options?.removeData) {
621
619
  throw new Error(
@@ -626,28 +624,33 @@ var softDelete = (options) => {
626
624
  checkContext(context, ["before", "around"], null, "softDelete");
627
625
  const { disableSoftDeleteKey = "disableSoftDelete" } = options;
628
626
  if (context.params[disableSoftDeleteKey]) {
629
- return context;
627
+ return early(context, next);
630
628
  }
631
629
  const { deletedQuery, removeData } = options;
632
- const deleteQuery = await getValue(deletedQuery, context);
630
+ let deleteQuery = getValue(deletedQuery, context);
631
+ if (isPromise$1(deleteQuery)) {
632
+ deleteQuery = await deleteQuery;
633
+ }
634
+ const query = addToQuery(context.params.query, deleteQuery);
633
635
  const params = transformParams(
634
636
  {
635
637
  ...context.params,
636
- query: {
637
- ...context.params.query,
638
- ...deleteQuery
639
- }
638
+ query
640
639
  },
641
640
  options.transformParams
642
641
  );
643
642
  context.params = params;
644
643
  if (context.method === "remove") {
645
- const data = await getValue(removeData, context);
646
- const result = await context.service.patch(context.id, data, params);
644
+ let data = getValue(removeData, context);
645
+ if (isPromise$1(data)) {
646
+ data = await data;
647
+ }
648
+ const method = options.usePatchWithHooks ? "patch" : "_patch";
649
+ const result = await context.service[method](context.id, data, params);
647
650
  context.result = result;
648
651
  }
649
652
  if (next) {
650
- await next();
653
+ return await next();
651
654
  }
652
655
  return context;
653
656
  };
@@ -697,9 +700,8 @@ var throwIf = (predicate, options) => {
697
700
  throw options?.error ? options.error(context) : new BadRequest("Invalid operation");
698
701
  }
699
702
  if (next) {
700
- await next();
703
+ return await next();
701
704
  }
702
- return context;
703
705
  };
704
706
  };
705
707
 
@@ -765,5 +767,5 @@ function unless(predicate, ...hooks) {
765
767
  }
766
768
 
767
769
  export { cache, checkMulti, checkRequired, combine, createRelated, debug, disablePagination, disallow, iff, iffElse, onDelete, paramsForServer, paramsFromClient, preventChanges, setData, setField, setResult, setSlug, skippable, softDelete, stashBefore, throwIf, throwIfIsMulti, throwIfIsProvider, transformData, transformQuery, transformResult, traverse2 as traverse, unless };
768
- //# sourceMappingURL=chunk-U2HKW5ZL.js.map
769
- //# sourceMappingURL=chunk-U2HKW5ZL.js.map
770
+ //# sourceMappingURL=chunk-CCG76NAU.js.map
771
+ //# sourceMappingURL=chunk-CCG76NAU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/combine/combine.util.ts","../src/hooks/cache/cache-utils.ts","../src/hooks/cache/cache.hook.ts","../src/hooks/check-multi/check-multi.hook.ts","../src/hooks/check-required/check-required.hook.ts","../src/hooks/create-related/create-related.hook.ts","../src/hooks/debug/debug.hook.ts","../src/hooks/disable-pagination/disable-pagination.hook.ts","../src/hooks/disallow/disallow.hook.ts","../src/hooks/iff-else/iff-else.hook.ts","../src/hooks/iff/iff.hook.ts","../src/hooks/on-delete/on-delete.hook.ts","../src/hooks/params-for-server/params-for-from-shared.ts","../src/hooks/params-for-server/params-for-server.hook.ts","../src/hooks/params-from-client/params-from-client.hook.ts","../src/hooks/transform-data/transform-data.hook.ts","../src/hooks/prevent-changes/prevent-changes.hook.ts","../src/hooks/set-data/set-data.hook.ts","../src/hooks/set-field/set-field.hook.ts","../src/hooks/set-result/set-result.hook.ts","../src/hooks/set-slug/set-slug.hook.ts","../src/hooks/skippable/skippable.ts","../src/hooks/soft-delete/soft-delete.hook.ts","../src/hooks/stash-before/stash-before.hook.ts","../src/hooks/throw-if/throw-if.hook.ts","../src/hooks/throw-if-is-multi/throw-if-is-multi.hook.ts","../src/hooks/throw-if-is-provider/throw-if-is-provider.hook.ts","../src/hooks/transform-query/transform-query.hook.ts","../src/hooks/transform-result/transform-result.hook.ts","../src/hooks/traverse/traverse.hook.ts","../src/hooks/unless/unless.hook.ts"],"names":["key","_has","MethodNotAllowed","onDelete","BadRequest","_get","Forbidden","_set","skip","isPromise","isMulti","defaultError","traverse"],"mappings":"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","file":"chunk-CCG76NAU.js","sourcesContent":["import type { HookContext } from '@feathersjs/feathers'\nimport type { HookFunction } from '../../types.js'\n\n/**\n * Sequentially execute multiple hooks.\n *\n * @see https://utils.feathersjs.com/utils/combine.html\n */\nexport function combine<H extends HookContext = HookContext>(\n ...serviceHooks: HookFunction<H>[]\n) {\n const isContext = function (ctx: H) {\n return typeof ctx?.method === 'string' && typeof ctx?.type === 'string'\n }\n\n return async function (context: H) {\n let ctx = context\n\n const updateCurrentHook = (current: void | H) => {\n // Either use the returned hook object or the current\n // hook object from the chain if the hook returned undefined\n if (current) {\n if (!isContext(current)) {\n throw new Error(\n `${ctx.type} hook for '${ctx.method}' method returned invalid hook object`,\n )\n }\n\n ctx = current\n }\n\n return ctx\n }\n\n // Go through all hooks and chain them into our promise\n\n // @ts-expect-error TODO\n const promise = serviceHooks.reduce(async (current, fn) => {\n // @ts-expect-error TODO\n const hook = fn.bind(this)\n\n // Use the returned hook object or the old one\n\n const currentHook = await current\n const currentCtx = await hook(currentHook)\n return updateCurrentHook(currentCtx)\n }, Promise.resolve(ctx))\n\n try {\n await promise\n return ctx\n } catch (error: any) {\n // Add the hook information to any errors\n error.hook = ctx\n throw error\n }\n }\n}\n","import isObject from 'lodash/isObject.js'\n\nexport const stableStringify = (obj: Record<string, any>) => {\n return JSON.stringify(obj, (key, value) => {\n if (typeof value === 'function') {\n throw new Error('Cannot stringify non JSON value')\n }\n\n if (isObject(value)) {\n return Object.keys(value)\n .sort()\n .reduce(\n (result, key) => {\n result[key] = (value as any)[key]\n return result\n },\n {} as Record<string, any>,\n )\n }\n\n return value\n })\n}\n","import type { HookContext, NextFunction, Params } from '@feathersjs/feathers'\nimport { stableStringify } from './cache-utils.js'\nimport copy from 'fast-copy'\nimport type { Promisable } from '../../internal.utils.js'\n\ntype Cache = {\n get: (key: string) => Promisable<any>\n set: (key: string, value: any) => Promisable<any>\n delete: (key: string) => Promisable<any>\n clear: () => any\n keys: () => Generator<string, void, unknown>\n}\n\nexport type CacheOptions = {\n /**\n * The cache implementation to use. It should implement the methods `get`, `set`, `delete`, `clear`, and `keys`.\n * This can be a Map, Redis client, or any other cache implementation.\n *\n * Use 'lru-cache' for an LRU cache implementation.\n */\n map: Cache\n /**\n * The id field to use for caching. Defaults to `service.options.id` and if not found, then 'id'.\n */\n id?: string\n /**\n * params are stringified for the key-value cache.\n * There are params properties you don't want to include in the cache key.\n * You can use this function to transform the params before they are stringified.\n */\n transformParams: (params: Params) => Params\n}\n\nexport const cache = <H extends HookContext = HookContext>(\n options: CacheOptions,\n) => {\n const cacheMap = new ContextCacheMap(options)\n return async (context: H, next?: NextFunction) => {\n if (context.type === 'before') {\n return await cacheBefore(context, cacheMap)\n }\n if (context.type === 'after') {\n return await cacheAfter(context, cacheMap)\n }\n\n if (context.type === 'around' && next) {\n await cacheBefore(context, cacheMap)\n await next()\n await cacheAfter(context, cacheMap)\n return\n }\n }\n}\n\nconst cacheBefore = async (context: HookContext, cacheMap: ContextCacheMap) => {\n if (context.method === 'get' || context.method === 'find') {\n const value = await cacheMap.get(context)\n if (value) {\n context.result = value\n }\n }\n\n return context\n}\n\nconst cacheAfter = async (context: HookContext, cacheMap: ContextCacheMap) => {\n if (context.method === 'get' || context.method === 'find') {\n await cacheMap.set(context)\n } else {\n await cacheMap.clear(context)\n }\n\n return context\n}\n\nclass ContextCacheMap {\n map: Cache\n private delimiter = ':'\n private options: CacheOptions\n\n constructor(options: CacheOptions) {\n this.map = options.map\n this.options = options\n }\n\n private stringifyCacheKey(context: HookContext) {\n if (context.method !== 'get' && context.method !== 'find') {\n throw new Error(\n `Cache can only be used with 'get' or 'find' methods, not '${context.method}'`,\n )\n }\n\n const stringifiedParams = stableStringify(\n this.options.transformParams(context.params ?? {}),\n )\n\n return `${context.id ?? 'null'}${this.delimiter}${stringifiedParams}`\n }\n\n private getCachedId(key: string) {\n const index = key.indexOf(this.delimiter)\n if (index === -1) {\n throw new Error(\n `Cache key '${key}' does not contain a delimiter '${this.delimiter}'`,\n )\n }\n return key.substring(0, index)\n }\n\n private getId(item: Record<string, any>, context: HookContext) {\n const idField = context.service.options?.id || this.options.id || 'id'\n const id = item[idField]\n return id && id.toString ? id.toString() : id\n }\n\n /**\n * Called before get() and find()\n *\n * returns a cached result for the given context if it exists.\n */\n async get(context: HookContext) {\n const key = this.stringifyCacheKey(context)\n const result = this.map.get(key)\n if (result) {\n return copy(result) // Use copy to avoid mutation of the original result\n }\n }\n\n /**\n * Called after get() and find()\n *\n * Caches the result for the given context.\n */\n async set(context: HookContext) {\n const key = this.stringifyCacheKey(context)\n return this.map.set(key, copy(context.result)) // Use copy to avoid mutation of the original result\n }\n\n // Called after create(), update(), patch(), and remove()\n async clear<H extends HookContext>(context: H): Promise<H> {\n const results = Array.isArray(context.result)\n ? context.result\n : [context.result]\n\n const promises: Promise<any>[] = []\n\n const itemIds = results\n .map((item: any) => this.getId(item, context))\n .filter(Boolean)\n\n // If no itemIds are found, clear the entire cache to avoid stale data\n if (!itemIds.length) {\n await this.map.clear()\n return context\n }\n\n for (const key of this.map.keys()) {\n const cachedId = this.getCachedId(key)\n if (cachedId === 'null') {\n // This is a cached `find` request. Any create/patch/update/del\n // could affect the results of this query so it should be deleted\n promises.push(this.map.delete(key))\n continue\n }\n\n // This is a cached `get` request\n\n if (context.method === 'create') {\n // If this is a create, we don't need to delete any cached get requests\n continue\n }\n\n for (const itemId of itemIds) {\n if (cachedId === itemId) {\n // If the cached id matches the item id, delete the cached get\n promises.push(this.map.delete(key))\n }\n }\n }\n\n await Promise.all(promises)\n\n return context\n }\n}\n","import type { FeathersError } from '@feathersjs/errors'\nimport { MethodNotAllowed } from '@feathersjs/errors'\nimport type { HookContext, NextFunction } from '@feathersjs/feathers'\nimport { isMulti } from '../../predicates/index.js'\n\nexport type CheckMultiOptions = {\n /**\n * Customize the error that is thrown if the service does not allow multi operations.\n *\n * If not provided, throws a `MethodNotAllowed` error with a message indicating the operation.\n */\n error?: (context: HookContext) => FeathersError\n}\n\n/**\n * Check if the 'multi' option is set for a method. You can use this to early throw an error if 'multi' is not set.\n *\n * @see https://utils.feathersjs.com/hooks/check-multi.html\n */\nexport function checkMulti<H extends HookContext = HookContext>(\n options?: CheckMultiOptions,\n) {\n return (context: H, next?: NextFunction) => {\n const { service, method } = context\n if (!service.allowsMulti || !isMulti(context) || method === 'find') {\n return context\n }\n\n if (!service.allowsMulti(method)) {\n throw options?.error\n ? options.error(context)\n : new MethodNotAllowed(`Can not ${method} multiple entries`)\n }\n\n if (next) {\n return next()\n }\n\n return context\n }\n}\n","import _get from 'lodash/get.js'\nimport _has from 'lodash/has.js'\nimport { BadRequest } from '@feathersjs/errors'\n\nimport { checkContext, getDataIsArray } from '../../utils/index.js'\nimport type { HookContext, NextFunction } from '@feathersjs/feathers'\nimport type { MaybeArray } from '../../internal.utils.js'\nimport { toArray } from '../../internal.utils.js'\n\n/**\n * Check selected fields exist and are not falsey. Numeric 0 is acceptable.\n *\n * @see https://utils.feathersjs.com/hooks/check-required.html\n */\nexport function checkRequired<H extends HookContext = HookContext>(\n fieldNames: MaybeArray<string>,\n) {\n const fieldNamesArray = toArray(fieldNames)\n return (context: H, next?: NextFunction) => {\n checkContext(\n context,\n ['before', 'around'],\n ['create', 'update', 'patch'],\n 'checkRequired',\n )\n\n const { data } = getDataIsArray(context)\n\n for (let i = 0; i < data.length; i++) {\n const item = data[i]\n\n for (let j = 0; j < fieldNamesArray.length; j++) {\n const name = fieldNamesArray[j]\n\n if (!_has(item, name)) {\n throw new BadRequest(`Field ${name} does not exist. (required)`)\n }\n\n const value = _get(item, name)\n\n if (!value && value !== 0 && value !== false) {\n throw new BadRequest(`Field ${name} is null. (required)`)\n }\n }\n }\n\n if (next) return next()\n }\n}\n","import type { HookContext, NextFunction } from '@feathersjs/feathers'\nimport { checkContext, getResultIsArray } from '../../utils/index.js'\nimport type { MaybeArray, Promisable } from '../../internal.utils.js'\n\nexport interface CreateRelatedOptions<S = Record<string, any>> {\n service: keyof S\n multi?: boolean\n data: (item: any, context: HookContext) => Promisable<Record<string, any>>\n}\n\n/**\n * Create related records in other services.\n *\n * @see https://utils.feathersjs.com/hooks/create-related.html\n */\nexport function createRelated<\n S = Record<string, any>,\n H extends HookContext = HookContext,\n>(options: MaybeArray<CreateRelatedOptions<S>>) {\n return async (context: H, next?: NextFunction) => {\n checkContext(context, ['after', 'around'], ['create'], 'createRelated')\n\n if (next) {\n await next()\n }\n\n const { result } = getResultIsArray(context)\n\n const entries = Array.isArray(options) ? options : [options]\n\n await Promise.all(\n entries.map(async (entry) => {\n const { data, service, multi } = entry\n\n const dataToCreate = (\n await Promise.all(result.map(async (item) => data(item, context)))\n ).filter((x) => !!x)\n\n if (!dataToCreate || dataToCreate.length <= 0) {\n return context\n }\n\n if (multi || dataToCreate.length === 1) {\n await context.app\n .service(service as string)\n .create(dataToCreate.length === 1 ? dataToCreate[0] : dataToCreate)\n } else {\n await Promise.all(\n dataToCreate.map(async (item) =>\n context.app.service(service as string).create(item),\n ),\n )\n }\n }),\n )\n }\n}\n","import type { HookContext, NextFunction } from '@feathersjs/feathers'\n\n/**\n * Display the current hook context for debugging.\n *\n * @see https://utils.feathersjs.com/hooks/debug.html\n */\nexport const debug =\n <H extends HookContext = HookContext>(msg: string, ...fieldNames: string[]) =>\n async (context: H, next?: NextFunction) => {\n if (next) {\n await next()\n }\n\n // display timestamp\n const now = new Date()\n console.log(\n `${now.getFullYear()}-${\n now.getMonth() + 1\n }-${now.getDate()} ${now.getHours()}:${now.getMinutes()}:${now.getSeconds()}`,\n )\n\n if (msg) {\n console.log(msg)\n }\n\n // display service, method & type of hook (before/after/error)\n console.log(\n `${context.type} service('${context.path}').${context.method}()`,\n )\n\n // display id for get, patch, update & remove\n if (!['find', 'create'].includes(context.method) && 'id' in context) {\n console.log('id:', context.id)\n }\n\n if (context.data) {\n console.log('data:', context.data)\n }\n\n if (context.params?.query) {\n console.log('query:', context.params.query)\n }\n\n if (context.result) {\n console.log('result:', context.result)\n }\n\n // display additional params\n const params = context.params || {}\n console.log('params props:', Object.keys(params).sort())\n\n fieldNames.forEach((name) => {\n console.log(`params.${name}:`, params[name])\n })\n\n if (context.error) {\n console.log('error', context.error)\n }\n }\n","import type { HookContext, NextFunction } from '@feathersjs/feathers'\nimport { checkContext } from '../../utils/index.js'\n\n/**\n * Disables pagination when `query.$limit` is `-1` or `'-1'`.\n *\n * @see https://utils.feathersjs.com/hooks/disable-pagination.html\n */\nexport const disablePagination =\n <H extends HookContext = HookContext>() =>\n (context: H, next?: NextFunction) => {\n checkContext(context, ['before', 'around'], ['find'], 'disablePagination')\n const $limit = context.params?.query?.$limit\n\n if ($limit === '-1' || $limit === -1) {\n context.params.paginate = false\n delete context.params.query.$limit\n }\n\n if (next) return next()\n\n return context\n }\n","import { MethodNotAllowed } from '@feathersjs/errors'\nimport type { HookContext, NextFunction } from '@feathersjs/feathers'\nimport type { TransportName } from '../../types.js'\nimport { isProvider } from '../../predicates/index.js'\nimport type { MaybeArray } from '../../internal.utils.js'\nimport { toArray } from '../../internal.utils.js'\n\n/**\n * Prevents access to a service method completely or for specific transports.\n *\n * @see https://utils.feathersjs.com/hooks/disallow.html\n */\nexport const disallow = <H extends HookContext = HookContext>(\n transports?: MaybeArray<TransportName>,\n) => {\n const transportsArr = toArray(transports)\n return (context: H, next?: NextFunction) => {\n if (!transports) {\n throw new MethodNotAllowed('Method not allowed')\n }\n\n if (isProvider(...(transportsArr as TransportName[]))(context)) {\n throw new MethodNotAllowed(\n `Provider '${context.params.provider}' can not call '${context.method}'. (disallow)`,\n )\n }\n\n if (next) return next().then(() => context)\n }\n}\n","import type { HookContext } from '@feathersjs/feathers'\nimport { isPromise } from '../../common/index.js'\nimport { combine } from '../../utils/combine/combine.util.js'\nimport type { HookFunction, PredicateFn } from '../../types.js'\n\n/**\n * Execute one array of hooks or another based on a sync or async predicate.\n *\n * @see https://utils.feathersjs.com/hooks/iff-else.html\n */\nexport function iffElse<H extends HookContext = HookContext>(\n predicate: boolean | PredicateFn<H>,\n trueHook: HookFunction<H> | HookFunction<H>[] | undefined,\n falseHook?: HookFunction<H> | HookFunction<H>[] | undefined,\n) {\n // fnArgs is [context] for service & permission hooks, [data, connection, context] for event filters\n return function (this: any, ctx: H) {\n const trueHooks = Array.isArray(trueHook)\n ? trueHook\n : typeof trueHook === 'function'\n ? [trueHook]\n : undefined\n\n const falseHooks = Array.isArray(falseHook)\n ? falseHook\n : typeof falseHook === 'function'\n ? [falseHook]\n : undefined\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this\n const check =\n typeof predicate === 'function'\n ? predicate.apply(that, [ctx])\n : !!predicate\n\n if (!check) {\n return callHooks.call(that, ctx, falseHooks as any)\n }\n\n if (!isPromise(check)) {\n return callHooks.call(that, ctx, trueHooks as any)\n }\n\n return check.then((check1: any) => {\n const hooks = check1 ? trueHooks : falseHooks\n return callHooks.call(that, ctx, hooks as any)\n })\n }\n}\n\nfunction callHooks<H extends HookContext = HookContext>(\n this: any,\n ctx: H,\n serviceHooks: HookFunction<H>[],\n) {\n return serviceHooks ? combine(...serviceHooks).call(this, ctx) : ctx\n}\n","import type { HookContext } from '@feathersjs/feathers'\nimport { iffElse } from '../iff-else/iff-else.hook.js'\nimport type { HookFunction, PredicateFn } from '../../types.js'\n\nexport interface IffHook<H extends HookContext = HookContext>\n extends HookFunction<H> {\n else(...hooks: HookFunction<H>[]): HookFunction<H>\n}\n\n/**\n * Execute one or another series of hooks depending on a sync or async predicate.\n *\n * @see https://utils.feathersjs.com/hooks/iff.html\n */\nexport function iff<H extends HookContext = HookContext>(\n predicate: boolean | PredicateFn<H>,\n ...hooks: HookFunction<H>[]\n): IffHook<H> {\n if (hooks.length && Array.isArray(hooks[0])) {\n hooks = hooks[0]\n }\n\n const iffWithoutElse = function (context: H) {\n return iffElse(predicate, hooks.slice())(context)\n }\n\n iffWithoutElse.else =\n (...falseHooks: any[]) =>\n (context: H) =>\n iffElse(predicate, hooks.slice(), falseHooks.slice())(context)\n\n return iffWithoutElse as IffHook<H>\n}\n\nexport { iff as when }\n","import type { HookContext, NextFunction } from '@feathersjs/feathers'\nimport { checkContext, getResultIsArray } from '../../utils/index.js'\nimport type { KeyOf, MaybeArray } from '../../internal.utils.js'\n\nexport type OnDeleteAction = 'cascade' | 'set null'\n\nexport interface OnDeleteOptions<Path extends string = string> {\n /**\n * The related service where related items should be manipulated\n */\n service: Path\n /**\n * The propertyKey in the related service\n */\n keyThere: string\n /**\n * The propertyKey in the current service.\n */\n keyHere: string\n /**\n * The action to perform on the related items.\n *\n * - `cascade`: remove related items\n * - `set null`: set the related property to null\n */\n onDelete: OnDeleteAction\n /**\n * If true, the hook will wait for the service to finish before continuing\n *\n * @default false\n */\n blocking?: boolean\n}\n\n/**\n * hook to manipulate related items on delete.\n *\n * This can be handled by your database, but this hook allows you to do it in your application logic.\n * Then you get service events and hooks for the related items.\n *\n * @see https://utils.feathersjs.com/hooks/on-delete.html\n */\nexport const onDelete = <\n S = Record<string, any>,\n H extends HookContext = HookContext,\n>(\n options: MaybeArray<OnDeleteOptions<KeyOf<S>>>,\n) => {\n const optionsMulti = Array.isArray(options) ? options : [options]\n\n return async (context: H, next?: NextFunction) => {\n checkContext(context, ['after', 'around'], 'remove', 'onDelete')\n\n if (next) {\n await next()\n }\n\n const { result } = getResultIsArray(context)\n\n if (!result.length) {\n return\n }\n\n const promises: Promise<any>[] = []\n\n optionsMulti.forEach(\n async ({ keyHere, keyThere, onDelete, service, blocking }) => {\n let ids = result.map((x) => x[keyHere]).filter((x) => !!x)\n ids = [...new Set(ids)]\n\n if (!ids || ids.length <= 0) {\n return context\n }\n\n const params = {\n query: {\n ...(ids.length === 1\n ? { [keyThere]: ids[0] }\n : { [keyThere]: { $in: ids } }),\n },\n paginate: false,\n }\n\n let promise: Promise<any> | undefined = undefined\n\n if (onDelete === 'cascade') {\n promise = context.app.service(service as string).remove(null, params)\n } else if (onDelete === 'set null') {\n const data = { [keyThere]: null }\n promise = context.app\n .service(service as string)\n .patch(null, data, params)\n }\n\n if (promise && blocking) {\n promises.push(promise)\n }\n },\n )\n\n if (promises.length) {\n await Promise.all(promises)\n }\n\n return\n }\n}\n","export const FROM_CLIENT_FOR_SERVER_DEFAULT_KEY = '_$client' as const\n","import type { HookContext, NextFunction } from '@feathersjs/feathers'\nimport type { MaybeArray } from '../../internal.utils.js'\nimport { toArray } from '../../internal.utils.js'\nimport { FROM_CLIENT_FOR_SERVER_DEFAULT_KEY } from './params-for-from-shared.js'\n\nexport type ParamsForServerOptions = {\n /**\n * @default '_$client'\n */\n keyToHide?: string\n}\n\n/**\n * a hook to move params to query._$client\n * the server only receives 'query' from params. All other params are ignored.\n * So, to use `$populateParams` on the server, we need to move the params to query._$client\n * the server will move them back to params\n *\n * @see https://utils.feathersjs.com/hooks/params-for-server.html\n */\nexport const paramsForServer = (\n whitelist: MaybeArray<string>,\n options?: ParamsForServerOptions,\n) => {\n const whitelistArr = toArray(whitelist)\n\n const { keyToHide = FROM_CLIENT_FOR_SERVER_DEFAULT_KEY } = options || {}\n\n return <H extends HookContext>(context: H, next?: NextFunction) => {\n // clone params on demand\n let clonedParams: any\n\n Object.keys(context.params).forEach((key) => {\n if (key === 'query') {\n return\n }\n\n if (whitelistArr.includes(key)) {\n if (!clonedParams) {\n clonedParams = {\n ...context.params,\n query: {\n ...context.params.query,\n },\n }\n }\n\n if (!clonedParams.query[keyToHide]) {\n clonedParams.query[keyToHide] = {}\n }\n\n clonedParams.query[keyToHide][key] = clonedParams[key]\n delete clonedParams[key]\n }\n })\n\n if (clonedParams) {\n context.params = clonedParams\n }\n\n if (next) {\n return next()\n }\n\n return context\n }\n}\n","import type { HookContext, NextFunction } from '@feathersjs/feathers'\nimport type { MaybeArray } from '../../internal.utils.js'\nimport { toArray } from '../../internal.utils.js'\nimport { FROM_CLIENT_FOR_SERVER_DEFAULT_KEY } from '../params-for-server/params-for-from-shared.js'\n\nexport type paramsFromClientOptions = {\n /**\n * @default '_$client'\n */\n keyToHide?: string\n}\n\n/**\n * Pass `context.params` from client to server. Server hook.\n *\n * @see https://utils.feathersjs.com/hooks/params-from-client.html\n */\nexport const paramsFromClient = (\n whitelist: MaybeArray<string>,\n options?: paramsFromClientOptions,\n) => {\n const whitelistArr = toArray(whitelist)\n const { keyToHide = FROM_CLIENT_FOR_SERVER_DEFAULT_KEY } = options || {}\n return (context: HookContext, next?: NextFunction) => {\n if (\n !context.params?.query?.[keyToHide] ||\n typeof context.params.query[keyToHide] !== 'object'\n ) {\n return context\n }\n\n const params = {\n ...context.params,\n query: {\n ...context.params.query,\n [keyToHide]: {\n ...context.params.query[keyToHide],\n },\n },\n }\n\n const client = params.query[keyToHide]\n\n whitelistArr.forEach((key) => {\n if (key in client) {\n params[key] = client[key]\n delete client[key]\n }\n })\n\n if (Object.keys(client).length === 0) {\n delete params.query[keyToHide]\n }\n\n context.params = params\n\n if (next) {\n return next()\n }\n\n return context\n }\n}\n","import type { HookContext, NextFunction } from '@feathersjs/feathers'\nimport { mutateData } from '../../utils/mutate-data/mutate-data.util.js'\nimport type { TransformerFn } from '../../types.js'\n\n/**\n * Make changes to items in `context.data`. Very flexible.\n *\n * @see https://utils.feathersjs.com/hooks/transform-data.html\n */\nexport const transformData =\n <T = Record<string, any>, H extends HookContext = HookContext>(\n transformer: TransformerFn<T, H>,\n ) =>\n async (context: H, next?: NextFunction) => {\n await mutateData(context, transformer)\n\n if (next) {\n return next()\n }\n\n return context\n }\n","import _has from 'lodash/has.js'\nimport _omit from 'lodash/omit.js'\nimport type { FeathersError } from '@feathersjs/errors'\nimport { BadRequest } from '@feathersjs/errors'\nimport { transformData } from '../transform-data/transform-data.hook.js'\nimport type { MaybeArray } from '../../internal.utils.js'\nimport { toArray } from '../../internal.utils.js'\n\nexport type PreventChangesOptions = {\n /**\n * Customize the error that is thrown if the service tries to patch a field that is not allowed.\n *\n * If not provided, throws a `BadRequest` error with a message indicating the field that is not allowed.\n */\n error?: boolean | ((item: any, name: string) => FeathersError)\n}\n\n/**\n * Prevent patch service calls from changing certain fields.\n *\n * @see https://utils.feathersjs.com/hooks/prevent-changes.html\n */\nexport const preventChanges = (\n fieldNames: MaybeArray<string>,\n options?: PreventChangesOptions,\n) => {\n const fieldNamesArr = toArray(fieldNames)\n\n return transformData((item) => {\n if (options?.error) {\n for (let i = 0; i < fieldNamesArr.length; i++) {\n const name = fieldNamesArr[i]\n\n if (_has(item, name)) {\n const error =\n typeof options.error === 'function'\n ? options.error(item, name)\n : new BadRequest(\n `Field ${name} may not be patched. (preventChanges)`,\n )\n\n throw error\n }\n }\n } else {\n item = _omit(item, fieldNamesArr)\n }\n\n return item\n })\n}\n","import _get from 'lodash/get.js'\nimport _set from 'lodash/set.js'\nimport _has from 'lodash/has.js'\n\nimport type { FeathersError } from '@feathersjs/errors'\nimport { Forbidden } from '@feathersjs/errors'\n\nimport type { HookContext, NextFunction } from '@feathersjs/feathers'\nimport type { PropertyPath } from 'lodash'\nimport { contextToJson } from '../../utils/context-to-json/context-to-json.util.js'\nimport { getDataIsArray } from '../../utils/index.js'\nimport type { PredicateItemWithContext } from '../../types.js'\n\nexport interface HookSetDataOptions {\n /**\n * Wether to throw if the context[from] is undefined.\n *\n * @default false\n */\n allowUndefined?: boolean\n /**\n * @default true\n */\n overwrite?: boolean | PredicateItemWithContext\n /**\n * Customize the error that is thrown if the context[from] is not available.\n * If not provided, throws a `Forbidden` error with a message indicating the missing field.\n */\n error?: (context: HookContext, from: PropertyPath) => FeathersError\n}\n\n/**\n * hook to set properties on `context.data`\n *\n * @see https://utils.feathersjs.com/hooks/set-data.html\n */\nexport function setData<H extends HookContext = HookContext>(\n /**\n * The property path of the context to set the value from. 'dot.notation' is supported.\n *\n * If the property does not exist, the hook will throw an error unless `allowUndefined` is set to true.\n * If the property exists, it will be set to the value of the `to` property path of the data item.\n *\n * @example 'params.user.id'\n */\n from: PropertyPath,\n /**\n * The property path of the data item to set the value to. 'dot.notation' is supported.\n *\n * If the property does not exist, it will be created.\n * If the property exists, it will be overwritten unless `overwrite` is set to false.\n *\n * @example 'userId'\n */\n to: PropertyPath,\n options?: HookSetDataOptions,\n) {\n const { allowUndefined = false, overwrite = true } = options ?? {}\n\n return (context: H, next?: NextFunction) => {\n const { data } = getDataIsArray(context)\n\n const contextJson = contextToJson(context)\n\n if (!_has(contextJson, from)) {\n if (!context.params?.provider || allowUndefined === true) {\n return context\n }\n\n if (\n !overwrite &&\n data.every((item: Record<string, unknown>) => _has(item, to))\n ) {\n return context\n }\n\n throw options?.error\n ? options.error(context, from)\n : new Forbidden(`Expected field ${from.toString()} not available`)\n }\n\n const val = _get(contextJson, from)\n\n for (let i = 0, len = data.length; i < len; i++) {\n const item: Record<string, unknown> = data[i]\n\n const currentOverwrite =\n typeof overwrite === 'function' ? overwrite(item, context) : overwrite\n\n if (!currentOverwrite && _has(item, to)) {\n continue\n }\n\n _set(item, to, val)\n }\n\n if (next) {\n return next()\n }\n\n return context\n }\n}\n","import _get from 'lodash/get.js'\nimport _setWith from 'lodash/setWith.js'\nimport _clone from 'lodash/clone.js'\nimport { checkContext } from '../../utils/index.js'\nimport type { FeathersError } from '@feathersjs/errors'\nimport { Forbidden } from '@feathersjs/errors'\nimport type { HookContext, NextFunction } from '@feathersjs/feathers'\n\nexport interface SetFieldOptions {\n as: string\n from: string\n /**\n * If set to `true`, allows the field to be undefined.\n * If the field is not available and this is `true`, the hook will not throw an error.\n *\n * If set to `false`, the hook will throw an error if the field is not available.\n *\n * @default false\n */\n allowUndefined?: boolean\n /**\n * Customize the error that is thrown if the field is not available.\n *\n * If not provided, throws a `Forbidden` error with a message indicating the missing field.\n */\n error?: (context: HookContext, from: string) => FeathersError\n}\n\n/**\n * The `setField` hook allows to set a field on the hook context based on the value of another field on the hook context.\n *\n * @see https://utils.feathersjs.com/hooks/set-field.html\n */\nexport const setField =\n <H extends HookContext = HookContext>({\n as,\n from,\n allowUndefined = false,\n error,\n }: SetFieldOptions) =>\n (context: H, next?: NextFunction) => {\n const { params } = context\n\n checkContext(context, ['before', 'around'], null, 'setField')\n\n const value = _get(context, from)\n\n if (value === undefined) {\n if (!params.provider || allowUndefined) {\n return context\n }\n\n throw error\n ? error(context, from)\n : new Forbidden(`Expected field ${as} not available`)\n }\n\n context = _setWith(context, as, value, _clone)\n\n if (next) return next()\n\n return context\n }\n","import _get from 'lodash/get.js'\nimport _set from 'lodash/set.js'\nimport _has from 'lodash/has.js'\n\nimport type { FeathersError } from '@feathersjs/errors'\nimport { Forbidden } from '@feathersjs/errors'\n\nimport type { HookContext, NextFunction } from '@feathersjs/feathers'\nimport type { PropertyPath } from 'lodash'\nimport { contextToJson } from '../../utils/context-to-json/context-to-json.util.js'\nimport { getResultIsArray } from '../../utils/index.js'\nimport type { DispatchOption, PredicateItemWithContext } from '../../types.js'\n\nexport interface SetResultOptions {\n /**\n * Wether to throw if the context[from] is undefined.\n *\n * @default false\n */\n allowUndefined?: boolean\n /**\n * @default true\n */\n overwrite?: boolean | PredicateItemWithContext\n /**\n * Customize the error that is thrown if the context[from] is not available.\n * If not provided, throws a `Forbidden` error with a message indicating the missing field.\n */\n error?: (context: HookContext, from: PropertyPath) => FeathersError\n dispatch?: DispatchOption\n}\n\n/**\n * hook to set properties on `context.result`\n *\n * @see https://utils.feathersjs.com/hooks/set-result.html\n */\nexport function setResult<H extends HookContext = HookContext>(\n /**\n * The property path of the context to set the value from. 'dot.notation' is supported.\n *\n * If the property does not exist, the hook will throw an error unless `allowUndefined` is set to true.\n * If the property exists, it will be set to the value of the `to` property path of the data item.\n *\n * @example 'params.user.id'\n */\n from: PropertyPath,\n /**\n * The property path of the data item to set the value to. 'dot.notation' is supported.\n *\n * If the property does not exist, it will be created.\n * If the property exists, it will be overwritten unless `overwrite` is set to false.\n *\n * @example 'userId'\n */\n to: PropertyPath,\n options?: SetResultOptions,\n) {\n const { allowUndefined = false, overwrite = true } = options ?? {}\n\n const forResultOrDispatch = (context: H, dispatch: boolean) => {\n const { result } = getResultIsArray(context, { dispatch })\n\n const contextJson = contextToJson(context)\n\n if (!_has(contextJson, from)) {\n if (!context.params?.provider || allowUndefined === true) {\n return context\n }\n\n if (\n !overwrite &&\n result.every((item: Record<string, unknown>) => _has(item, to))\n ) {\n return context\n }\n\n throw options?.error\n ? options.error(context, from)\n : new Forbidden(`Expected field ${from.toString()} not available`)\n }\n\n const val = _get(contextJson, from)\n\n for (let i = 0; i < result.length; i++) {\n const item: Record<string, unknown> = result[i]\n\n const currentOverwrite =\n typeof overwrite === 'function' ? overwrite(item, context) : overwrite\n\n if (!currentOverwrite && _has(item, to)) {\n continue\n }\n\n _set(item, to, val)\n }\n\n return context\n }\n\n const fn = (context: H) => {\n if (options?.dispatch === 'both') {\n forResultOrDispatch(context, true)\n return forResultOrDispatch(context, false)\n }\n\n return forResultOrDispatch(context, !!options?.dispatch)\n }\n\n return (context: H, next?: NextFunction) => {\n if (next) {\n next().then(() => fn(context))\n }\n\n return fn(context)\n }\n}\n","import _set from 'lodash/set.js'\nimport type { HookContext, NextFunction } from '@feathersjs/feathers'\n\n/**\n * Fix slugs in URL, e.g. /stores/:storeId.\n *\n * @see https://utils.feathersjs.com/hooks/set-slug.html\n */\nexport const setSlug = <H extends HookContext = HookContext>(\n slug: string,\n fieldName?: string,\n) => {\n if (typeof fieldName !== 'string') {\n fieldName = `query.${slug}`\n }\n\n return (context: H, next?: NextFunction) => {\n if (context.params && context.params.provider === 'rest') {\n const value = context.params.route[slug]\n if (typeof value === 'string' && value[0] !== ':') {\n _set(context.params, fieldName, value)\n }\n }\n\n if (next) return next()\n\n return context\n }\n}\n","import type { HookContext, NextFunction } from '@feathersjs/feathers'\nimport type { HookFunction, PredicateFn } from '../../types.js'\n\n/**\n * Wrap a hook to make it skippable\n */\nexport const skippable =\n <H extends HookContext = HookContext>(\n hook: HookFunction<H>,\n predicate: PredicateFn<H>,\n ) =>\n (context: H, next?: NextFunction) => {\n const skip = predicate(context)\n\n function skipOrRun(skip: boolean) {\n if (skip) {\n return context\n } else {\n return hook(context, next)\n }\n }\n\n if (!skip || typeof skip === 'boolean') {\n return skipOrRun(skip)\n }\n\n return skip.then(skipOrRun)\n }\n","import type { HookContext, NextFunction } from '@feathersjs/feathers'\nimport { addToQuery, checkContext } from '../../utils/index.js'\nimport type { TransformParamsFn } from '../../types.js'\nimport { transformParams } from '../../utils/transform-params/transform-params.util.js'\nimport { early, type Promisable } from '../../internal.utils.js'\nimport { isPromise } from 'node:util/types'\n\nexport type SoftDeleteOptionFunction<H extends HookContext = HookContext> = (\n context?: H,\n) => Promisable<{ [key: string]: any }>\n\nexport interface SoftDeleteOptions<H extends HookContext = HookContext> {\n /**\n * @example { deletedAt: null }\n */\n deletedQuery: { [key: string]: any } | SoftDeleteOptionFunction<H>\n /**\n * @example { deletedAt: new Date() }\n */\n removeData: { [key: string]: any } | SoftDeleteOptionFunction<H>\n /**\n * Transform the params before calling the service method. E.g. remove 'params.provider' or add custom params.\n */\n transformParams?: TransformParamsFn\n\n /**\n * Key in `params` to disable the soft delete functionality.\n *\n * @default 'disableSoftDelete'\n */\n disableSoftDeleteKey?: string\n\n /**\n * `softDelete` uses `._patch()` internally to mark items as deleted.\n *\n * If you set this option to `true`, it will use the `.patch()` method with hooks instead.\n */\n usePatchWithHooks?: boolean\n}\n\n/**\n * Allow to mark items as deleted instead of removing them.\n *\n * @see https://utils.feathersjs.com/hooks/soft-delete.html\n */\nexport const softDelete = <H extends HookContext = HookContext>(\n options: SoftDeleteOptions<H>,\n) => {\n if (!options?.deletedQuery || !options?.removeData) {\n throw new Error(\n 'You must provide `deletedQuery` and `removeData` options to the softDelete hook.',\n )\n }\n\n return async (context: H, next?: NextFunction) => {\n checkContext(context, ['before', 'around'], null, 'softDelete')\n\n const { disableSoftDeleteKey = 'disableSoftDelete' } = options\n\n if (context.params[disableSoftDeleteKey]) {\n return early(context, next)\n }\n\n const { deletedQuery, removeData } = options\n\n let deleteQuery = getValue(deletedQuery, context)\n if (isPromise(deleteQuery)) {\n deleteQuery = await deleteQuery\n }\n\n const query = addToQuery(context.params.query, deleteQuery)\n\n const params = transformParams(\n {\n ...context.params,\n query,\n },\n options.transformParams,\n )\n\n context.params = params\n\n if (context.method === 'remove') {\n let data = getValue(removeData, context)\n if (isPromise(data)) {\n data = await data\n }\n const method = options.usePatchWithHooks ? 'patch' : '_patch'\n const result = await context.service[method](context.id, data, params)\n\n context.result = result\n }\n\n if (next) {\n return await next()\n }\n\n return context\n }\n}\n\nconst getValue = (value: any, ...args: any[]) => {\n if (typeof value === 'function') {\n return value(...args)\n }\n return value\n}\n","import type { HookContext, NextFunction } from '@feathersjs/feathers'\nimport { checkContext } from '../../utils/index.js'\n\n/**\n * Stash current value of record, usually before mutating it. Performs a get call.\n *\n * @see https://utils.feathersjs.com/hooks/stash-before.html\n */\nexport function stashBefore<H extends HookContext = HookContext>(\n fieldName?: string,\n) {\n const beforeField = fieldName || 'before'\n\n return async (context: H, next?: NextFunction) => {\n if (context.params.disableStashBefore) {\n return context\n }\n\n checkContext(\n context,\n ['before', 'around'],\n ['update', 'patch', 'remove'],\n 'stashBefore',\n )\n\n const isMulti = context.id == null\n\n const params = {\n ...context.params,\n disableStashBefore: true,\n ...(isMulti ? { paginate: false } : {}),\n }\n\n await (\n !isMulti\n ? context.service.get(context.id, params)\n : context.service.find(params)\n )\n .then((result: any) => {\n context.params[beforeField] = result\n return context\n })\n .catch(() => {\n return context\n })\n\n if (next) {\n return await next()\n }\n\n return context\n }\n}\n","import type { HookContext, NextFunction } from '@feathersjs/feathers'\nimport type { PredicateFn } from '../../types.js'\nimport { BadRequest } from '@feathersjs/errors'\nimport type { FeathersError } from '@feathersjs/errors'\n\nexport type ThrowIfOptions = {\n /**\n * Customize the error that is thrown if the predicate returns true.\n *\n * If not provided, throws a `BadRequest` error with 'Invalid operation'.\n */\n error?: (context: HookContext) => FeathersError\n}\n\n/**\n * Throw an error if the predicate function returns true.\n *\n * This hook is useful for validating conditions before proceeding with the request.\n *\n * @see https://utils.feathersjs.com/hooks/throw-if.html\n */\nexport const throwIf = <H extends HookContext = HookContext>(\n predicate: PredicateFn,\n options?: ThrowIfOptions,\n) => {\n return async (context: H, next?: NextFunction) => {\n const result = await predicate(context)\n\n if (result) {\n throw options?.error\n ? options.error(context)\n : new BadRequest('Invalid operation')\n }\n\n if (next) {\n return await next()\n }\n }\n}\n","import type { HookContext } from '@feathersjs/feathers'\nimport type { PredicateFn } from '../../types.js'\nimport { BadRequest, type FeathersError } from '@feathersjs/errors'\nimport { every, isMulti } from '../../predicates/index.js'\nimport { throwIf } from '../throw-if/throw-if.hook.js'\n\nexport type ThrowIfIsMultiOptions = {\n /**\n * A predicate function to filter the contexts that should be checked for multi operations.\n * If provided, only contexts that pass this predicate will be checked for multi operations.\n */\n filter?: PredicateFn\n /**\n * Customize the error that is thrown if the context is multi and the service does not allow it.\n * If not provided, throws a `BadRequest` error.\n */\n error?: (context: HookContext) => FeathersError\n}\n\nconst defaultError = (context: HookContext) =>\n new BadRequest(`Cannot perform multi operation on method '${context.method}'`)\n\n/**\n * Throw an error if the context is multi. You can use this to early return if a user provides an array on create or id:null on patch or remove.\n *\n * @see https://utils.feathersjs.com/hooks/throw-if-is-multi.html\n */\nexport const throwIfIsMulti = <H extends HookContext = HookContext>(\n options?: ThrowIfIsMultiOptions,\n) =>\n throwIf<H>(\n every(\n every(isMulti, (context) => context.method !== 'find'),\n options?.filter,\n ),\n {\n error: options?.error ?? defaultError,\n },\n )\n","import type { HookContext } from '@feathersjs/feathers'\nimport type { PredicateFn, TransportName } from '../../types.js'\nimport { throwIf } from '../throw-if/throw-if.hook.js'\nimport { every, isProvider } from '../../predicates/index.js'\nimport type { FeathersError } from '@feathersjs/errors'\nimport { MethodNotAllowed } from '@feathersjs/errors'\nimport { toArray } from '../../internal.utils.js'\n\nconst defaultError = (context: HookContext) =>\n new MethodNotAllowed(\n `Provider '${context.params.provider}' can not call '${context.method}'.`,\n )\n\nexport type ThrowIfIsIsProviderOptions = {\n filter?: PredicateFn\n /**\n * Customize the error that is thrown if the context is a provider and the service does not allow it.\n * If not provided, throws a `MethodNotAllowed` error.\n */\n error?: (context: HookContext) => FeathersError\n}\n\n/**\n * Throw an error for certain transports.\n *\n * @see https://utils.feathersjs.com/hooks/throw-if-is-provider.html\n */\nexport const throwIfIsProvider = <H extends HookContext = HookContext>(\n transports: TransportName | TransportName[],\n options?: ThrowIfIsIsProviderOptions,\n) => {\n const disallowTransports = toArray(transports)\n\n return throwIf<H>(\n every(isProvider(...(disallowTransports as any)), options?.filter),\n {\n error: options?.error ?? defaultError,\n },\n )\n}\n","import type { HookContext, NextFunction, Query } from '@feathersjs/feathers'\nimport type { TransformerFn } from '../../types.js'\n\n/**\n * Transforms the query object.\n */\nexport const transformQuery = <\n Q extends Query,\n H extends HookContext = HookContext,\n>(\n transformer: TransformerFn<Q, H>,\n) => {\n return (context: H, next?: NextFunction) => {\n context.params.query = transformer(context.params.query ?? {}, {\n context,\n i: 0,\n })\n\n if (next) {\n return next().then(() => context)\n }\n\n return context\n }\n}\n","import type { HookContext, NextFunction } from '@feathersjs/feathers'\nimport { mutateResult } from '../../utils/mutate-result/mutate-result.util.js'\nimport type { DispatchOption, TransformerFn } from '../../types.js'\n\nexport type TransformResultOptions = {\n dispatch?: DispatchOption\n}\n\n/**\n * Make changes to items in `context.result`. Very flexible.\n *\n * @see https://utils.feathersjs.com/hooks/transform-result.html\n */\nexport const transformResult =\n <T = Record<string, any>, H extends HookContext = HookContext>(\n transformer: TransformerFn<T, H>,\n options?: TransformResultOptions,\n ) =>\n (context: H, next?: NextFunction) =>\n mutateResult(context, transformer, {\n next,\n dispatch: options?.dispatch,\n })\n","import type { HookContext, NextFunction } from '@feathersjs/feathers'\nimport { traverse as _traverse } from '../../common/index.js'\n\nexport type TraverseOptions = {\n transformer: (transformContext: any) => any\n getObject: (\n context: HookContext,\n ) => Record<string, any> | Record<string, any>[]\n}\n\n/**\n * Transform fields & objects in place in the record(s) using a recursive walk. Powerful.\n * Check docs at https://github.com/substack/js-traverse for info on transformContext!\n *\n * @see https://utils.feathersjs.com/hooks/traverse.html\n */\nexport const traverse =\n <H extends HookContext = HookContext>({\n transformer,\n getObject,\n }: TraverseOptions) =>\n (context: H, next?: NextFunction) => {\n _traverse(getObject(context), transformer)\n\n if (next) {\n return next()\n }\n\n return context\n }\n","import type { HookContext } from '@feathersjs/feathers'\nimport { iffElse } from '../iff-else/iff-else.hook.js'\nimport type { PredicateFn, HookFunction } from '../../types.js'\n\n/**\n * Execute a series of hooks if a sync or async predicate is falsy.\n *\n * @see https://utils.feathersjs.com/hooks/unless.html\n */\nexport function unless<H extends HookContext = HookContext>(\n predicate: boolean | PredicateFn,\n ...hooks: HookFunction<H>[]\n) {\n return iffElse(predicate, undefined, [...hooks])\n}\n"]}
@@ -0,0 +1,15 @@
1
+ // src/internal.utils.ts
2
+ var hasOwnProperty = (obj, ...keys) => {
3
+ return keys.some((x) => Object.prototype.hasOwnProperty.call(obj, x));
4
+ };
5
+ var toArray = (value) => Array.isArray(value) ? value : [value];
6
+ var early = (context, next) => {
7
+ if (next) {
8
+ return next(context);
9
+ }
10
+ return;
11
+ };
12
+
13
+ export { early, hasOwnProperty, toArray };
14
+ //# sourceMappingURL=chunk-G2FB6TZW.js.map
15
+ //# sourceMappingURL=chunk-G2FB6TZW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internal.utils.ts"],"names":[],"mappings":";AAEO,IAAM,cAAA,GAAiB,CAC5B,GAAA,EAAA,GACG,IAAA,KACS;AACZ,EAAA,OAAO,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,KAAM,MAAA,CAAO,UAAU,cAAA,CAAe,IAAA,CAAK,GAAA,EAAK,CAAC,CAAC,CAAA;AACtE;AAGO,IAAM,OAAA,GAAU,CAAI,KAAA,KACzB,KAAA,CAAM,QAAQ,KAAK,CAAA,GAAI,KAAA,GAAQ,CAAC,KAAK;AAUhC,IAAM,KAAA,GAAQ,CACnB,OAAA,EACA,IAAA,KACqB;AACrB,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,OAAO,KAAK,OAAO,CAAA;AAAA,EACrB;AACA,EAAA;AACF","file":"chunk-G2FB6TZW.js","sourcesContent":["import type { HookContext } from '@feathersjs/feathers'\n\nexport const hasOwnProperty = (\n obj: Record<string, unknown>,\n ...keys: string[]\n): boolean => {\n return keys.some((x) => Object.prototype.hasOwnProperty.call(obj, x))\n}\n\nexport type MaybeArray<T> = T | T[]\nexport const toArray = <T>(value: T | T[]): T[] =>\n Array.isArray(value) ? value : [value]\n\nexport type Promisable<T> = T | Promise<T>\nexport type KeyOf<T> = Extract<keyof T, string>\n\n/**+\n * Can be used to early return a hook.\n *\n * If it's an around hook, it will call `next` if provided.\n */\nexport const early = <H extends HookContext>(\n context: H,\n next?: (context: H) => Promisable<void>,\n): Promisable<void> => {\n if (next) {\n return next(context)\n }\n return\n}\n\n/**\n * Checks if a value is a Promise.\n */\nexport const isPromise = (value: any): value is Promise<any> => {\n return (\n value !== null &&\n typeof value === 'object' &&\n typeof value.then === 'function'\n )\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { toArray, hasOwnProperty } from './chunk-DKP457HT.js';
1
+ import { toArray, hasOwnProperty } from './chunk-G2FB6TZW.js';
2
2
  import _traverse from 'neotraverse';
3
3
  import { MethodNotAllowed, GeneralError } from '@feathersjs/errors';
4
4
 
@@ -185,5 +185,5 @@ var some = (...predicates) => (context) => {
185
185
  };
186
186
 
187
187
  export { every, getPaginate, isContext, isMulti, isPaginated, isPromise, isProvider, not, shouldSkip, some, traverse };
188
- //# sourceMappingURL=chunk-KSCPQLU3.js.map
189
- //# sourceMappingURL=chunk-KSCPQLU3.js.map
188
+ //# sourceMappingURL=chunk-JIARTRVW.js.map
189
+ //# sourceMappingURL=chunk-JIARTRVW.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common/traverse.ts","../src/common/index.ts","../src/predicates/every/every.predicate.ts","../src/predicates/is-context/is-context.predicate.ts","../src/predicates/is-multi/is-multi.predicate.ts","../src/utils/get-paginate/get-paginate.util.ts","../src/predicates/is-paginated/is-paginated.predicate.ts","../src/predicates/is-provider/is-provider.predicate.ts","../src/predicates/not/not.predicate.ts","../src/predicates/should-skip/should-skip.predicate.ts","../src/predicates/some/some.predicate.ts"],"names":[],"mappings":"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","file":"chunk-KSCPQLU3.js","sourcesContent":["import _traverse from 'neotraverse'\n\nexport function traverse<T extends Record<string, any>>(\n items: T | T[],\n converter: (item: T) => void,\n) {\n ;(Array.isArray(items) ? items : [items]).forEach((item) => {\n _traverse(item).forEach(converter) // replacement is in place\n })\n}\n","export function isPromise(p: any): p is Promise<any> {\n return p instanceof Promise\n}\n\nexport { traverse } from './traverse.js'\nexport { clone } from './clone.js'\n","import type { HookContext } from '@feathersjs/feathers'\nimport type { PredicateFn } from '../../types.js'\nimport { isPromise } from '../../common/index.js'\n\n/**\n * Return the and of a series of sync or async predicate functions.\n *\n * @see https://utils.feathersjs.com/predicates/every.html\n */\nexport const every =\n <H extends HookContext = HookContext>(\n ...predicates: (PredicateFn<H> | undefined)[]\n ): PredicateFn<H> =>\n (context: H): boolean | Promise<boolean> => {\n if (!predicates.length) {\n // same as Array.prototype.every\n // see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every#description\n return true\n }\n\n const promises: Promise<boolean>[] = []\n\n let everyUndefined = true\n\n for (const predicate of predicates) {\n if (!predicate) {\n // skip undefined predicates\n continue\n } else {\n everyUndefined = false\n }\n\n const result = predicate(context)\n if (result === false) {\n return false\n } else if (isPromise(result)) {\n promises.push(result)\n }\n }\n\n if (everyUndefined) {\n // all predicates are undefined -> same as Array.prototype.every\n // see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every#description\n return true\n }\n\n if (!promises.length) {\n // no promises returned -> all predicates are sync and true\n return true\n }\n\n return Promise.all(promises).then((results) =>\n results.every((result) => !!result),\n )\n }\n","import type { HookType } from '@feathersjs/feathers'\nimport type { MethodName } from '../../types.js'\nimport type { MaybeArray } from '../../internal.utils.js'\nimport { toArray } from '../../internal.utils.js'\n\nexport type IsContextOptions = {\n path?: MaybeArray<string>\n type?: MaybeArray<HookType>\n method?: MaybeArray<MethodName>\n}\n\n/**\n * Check if the context matches the given options.\n *\n * @see https://utils.feathersjs.com/predicates/is-context.html\n */\nexport const isContext =\n (options: IsContextOptions) =>\n (context: any): boolean => {\n if (options.path != null) {\n const path = toArray(options.path)\n\n if (!path.some((x) => context.path.includes(x))) {\n return false\n }\n }\n\n if (options.type != null) {\n const type = toArray(options.type)\n\n if (!type.some((x) => context.type === x)) {\n return false\n }\n }\n\n if (options.method != null) {\n const method = toArray(options.method)\n\n if (!method.some((x) => context.method === x)) {\n return false\n }\n }\n\n return true\n }\n","import type { HookContext } from '@feathersjs/feathers'\n\n/**\n * util to check if a hook is a multi hook:\n * - find: true\n * - get: false\n * - create: `context.data` is an array\n * - update: false\n * - patch: `context.id == null`\n * - remove: `context.id == null`\n *\n * @see https://utils.feathersjs.com/predicates/is-multi.html\n */\nexport const isMulti = <H extends HookContext = HookContext>(\n context: H,\n): boolean => {\n const { method } = context\n if (method === 'find') {\n return true\n } else if (method === 'patch' || method === 'remove') {\n return context.id == null\n } else if (method === 'create') {\n return Array.isArray(context.data)\n } else if (method === 'get' || method === 'update') {\n return false\n }\n\n return false\n}\n","import type { PaginationOptions } from '@feathersjs/adapter-commons'\nimport type { HookContext } from '@feathersjs/feathers'\nimport { hasOwnProperty } from '../../internal.utils.js'\n\n/**\n * util to get paginate options from context\n * 1. it uses `context.params.paginate` if it exists\n * 2. it uses `service.options.paginate` if it exists\n * 3. it uses `context.params.adapter` if it exists\n */\nexport const getPaginate = <H extends HookContext = HookContext>(\n context: H,\n): PaginationOptions | undefined => {\n if (hasOwnProperty(context.params, 'paginate')) {\n return (context.params.paginate as PaginationOptions) || undefined\n }\n\n if (context.params.paginate === false) {\n return undefined\n }\n let options = context.service?.options || {}\n\n options = {\n ...options,\n ...context.params.adapter,\n }\n\n return options.paginate || undefined\n}\n","import type { HookContext } from '@feathersjs/feathers'\nimport { getPaginate } from '../../utils/get-paginate/get-paginate.util.js'\n\n/**\n * util to check if a hook is a paginated hook using `getPaginate`\n *\n * @see https://utils.feathersjs.com/predicates/is-paginated.html\n */\nexport const isPaginated = <H extends HookContext = HookContext>(\n context: H,\n): boolean => {\n if (context.params.paginate === false || context.method !== 'find') {\n return false\n }\n\n const paginate = getPaginate(context)\n\n return !!paginate\n}\n","import { MethodNotAllowed } from '@feathersjs/errors'\nimport type { HookContext } from '@feathersjs/feathers'\nimport type { TransportName } from '../../types.js'\n\n/**\n * Check which transport provided the service call.\n *\n * @see https://utils.feathersjs.com/predicates/is-provider.html\n */\nexport function isProvider<H extends HookContext = HookContext>(\n ...providers: TransportName[]\n) {\n if (!providers.length) {\n throw new MethodNotAllowed('Calling isProvider predicate incorrectly.')\n }\n\n return (context: H): boolean => {\n const hookProvider = context.params.provider\n\n return providers.some(\n (provider) =>\n provider === hookProvider ||\n (provider === 'server' && !hookProvider) ||\n (provider === 'external' && !!hookProvider),\n )\n }\n}\n","import type { HookContext } from '@feathersjs/feathers'\nimport { isPromise } from '../../common/index.js'\nimport type { PredicateFn } from '../../types.js'\n\n/**\n * Negate a predicate function.\n *\n * @see https://utils.feathersjs.com/predicates/not.html\n */\nexport const not =\n <H extends HookContext = HookContext>(\n predicate: PredicateFn<H>,\n ): PredicateFn<H> =>\n (context: H) => {\n const result = predicate(context)\n\n if (!isPromise(result)) {\n return !result\n }\n\n return result.then((result1) => !result1)\n }\n","import { GeneralError } from '@feathersjs/errors'\n\nimport type { HookContext } from '@feathersjs/feathers'\nimport type { SkipHookName } from '../../utils/index.js'\n\n/**\n * Util to detect if a hook should be skipped\n *\n * Checks the `params.skipHooks` array for the hook name, type, or 'all'.\n */\nexport const shouldSkip = <H extends HookContext = HookContext>(\n hookName: SkipHookName,\n) => {\n return (context: H): boolean => {\n if (!context.params?.skipHooks) {\n return false\n }\n\n const { skipHooks } = context.params\n if (!Array.isArray(skipHooks)) {\n throw new GeneralError(\n 'The `skipHooks` param must be an Array of Strings',\n )\n }\n const { type } = context\n if (skipHooks.includes(hookName)) {\n return true\n } else if (skipHooks.includes('all')) {\n return true\n } else if (skipHooks.includes(type)) {\n return true\n } else if (skipHooks.includes(`${type}:${hookName}`)) {\n return true\n }\n\n return false\n }\n}\n","import type { HookContext } from '@feathersjs/feathers'\nimport type { PredicateFn } from '../../types.js'\nimport { isPromise } from '../../common/index.js'\n\n/**\n * Return the or of a series of sync or async predicate functions.\n *\n * @see https://utils.feathersjs.com/predicates/some.html\n */\nexport const some =\n <H extends HookContext = HookContext>(\n ...predicates: (PredicateFn<H> | undefined)[]\n ): PredicateFn<H> =>\n (context: H): boolean | Promise<boolean> => {\n if (!predicates.length) {\n // same as Array.prototype.some\n // see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some#description\n return true\n }\n\n const promises: Promise<boolean>[] = []\n\n let everyUndefined = true\n\n for (const predicate of predicates) {\n if (!predicate) {\n // skip undefined predicates\n continue\n } else {\n everyUndefined = false\n }\n\n const result = predicate(context)\n\n if (result === true) {\n return true\n } else if (result === false) {\n continue\n } else if (isPromise(result)) {\n promises.push(result)\n }\n }\n\n if (everyUndefined) {\n // all predicates are undefined -> same as Array.prototype.some\n // see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some#description\n return true\n }\n\n if (!promises.length) {\n // no promises returned -> all predicates are sync and false\n return false\n }\n\n return Promise.all(promises).then((results) =>\n results.some((result) => !!result),\n )\n }\n"]}
1
+ {"version":3,"sources":["../src/common/traverse.ts","../src/common/index.ts","../src/predicates/every/every.predicate.ts","../src/predicates/is-context/is-context.predicate.ts","../src/predicates/is-multi/is-multi.predicate.ts","../src/utils/get-paginate/get-paginate.util.ts","../src/predicates/is-paginated/is-paginated.predicate.ts","../src/predicates/is-provider/is-provider.predicate.ts","../src/predicates/not/not.predicate.ts","../src/predicates/should-skip/should-skip.predicate.ts","../src/predicates/some/some.predicate.ts"],"names":[],"mappings":"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","file":"chunk-JIARTRVW.js","sourcesContent":["import _traverse from 'neotraverse'\n\nexport function traverse<T extends Record<string, any>>(\n items: T | T[],\n converter: (item: T) => void,\n) {\n ;(Array.isArray(items) ? items : [items]).forEach((item) => {\n _traverse(item).forEach(converter) // replacement is in place\n })\n}\n","export function isPromise(p: any): p is Promise<any> {\n return p instanceof Promise\n}\n\nexport { traverse } from './traverse.js'\nexport { clone } from './clone.js'\n","import type { HookContext } from '@feathersjs/feathers'\nimport type { PredicateFn } from '../../types.js'\nimport { isPromise } from '../../common/index.js'\n\n/**\n * Return the and of a series of sync or async predicate functions.\n *\n * @see https://utils.feathersjs.com/predicates/every.html\n */\nexport const every =\n <H extends HookContext = HookContext>(\n ...predicates: (PredicateFn<H> | undefined)[]\n ): PredicateFn<H> =>\n (context: H): boolean | Promise<boolean> => {\n if (!predicates.length) {\n // same as Array.prototype.every\n // see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every#description\n return true\n }\n\n const promises: Promise<boolean>[] = []\n\n let everyUndefined = true\n\n for (const predicate of predicates) {\n if (!predicate) {\n // skip undefined predicates\n continue\n } else {\n everyUndefined = false\n }\n\n const result = predicate(context)\n if (result === false) {\n return false\n } else if (isPromise(result)) {\n promises.push(result)\n }\n }\n\n if (everyUndefined) {\n // all predicates are undefined -> same as Array.prototype.every\n // see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every#description\n return true\n }\n\n if (!promises.length) {\n // no promises returned -> all predicates are sync and true\n return true\n }\n\n return Promise.all(promises).then((results) =>\n results.every((result) => !!result),\n )\n }\n","import type { HookType } from '@feathersjs/feathers'\nimport type { MethodName } from '../../types.js'\nimport type { MaybeArray } from '../../internal.utils.js'\nimport { toArray } from '../../internal.utils.js'\n\nexport type IsContextOptions = {\n path?: MaybeArray<string>\n type?: MaybeArray<HookType>\n method?: MaybeArray<MethodName>\n}\n\n/**\n * Check if the context matches the given options.\n *\n * @see https://utils.feathersjs.com/predicates/is-context.html\n */\nexport const isContext =\n (options: IsContextOptions) =>\n (context: any): boolean => {\n if (options.path != null) {\n const path = toArray(options.path)\n\n if (!path.some((x) => context.path.includes(x))) {\n return false\n }\n }\n\n if (options.type != null) {\n const type = toArray(options.type)\n\n if (!type.some((x) => context.type === x)) {\n return false\n }\n }\n\n if (options.method != null) {\n const method = toArray(options.method)\n\n if (!method.some((x) => context.method === x)) {\n return false\n }\n }\n\n return true\n }\n","import type { HookContext } from '@feathersjs/feathers'\n\n/**\n * util to check if a hook is a multi hook:\n * - find: true\n * - get: false\n * - create: `context.data` is an array\n * - update: false\n * - patch: `context.id == null`\n * - remove: `context.id == null`\n *\n * @see https://utils.feathersjs.com/predicates/is-multi.html\n */\nexport const isMulti = <H extends HookContext = HookContext>(\n context: H,\n): boolean => {\n const { method } = context\n if (method === 'find') {\n return true\n } else if (method === 'patch' || method === 'remove') {\n return context.id == null\n } else if (method === 'create') {\n return Array.isArray(context.data)\n } else if (method === 'get' || method === 'update') {\n return false\n }\n\n return false\n}\n","import type { PaginationOptions } from '@feathersjs/adapter-commons'\nimport type { HookContext } from '@feathersjs/feathers'\nimport { hasOwnProperty } from '../../internal.utils.js'\n\n/**\n * util to get paginate options from context\n * 1. it uses `context.params.paginate` if it exists\n * 2. it uses `service.options.paginate` if it exists\n * 3. it uses `context.params.adapter` if it exists\n */\nexport const getPaginate = <H extends HookContext = HookContext>(\n context: H,\n): PaginationOptions | undefined => {\n if (hasOwnProperty(context.params, 'paginate')) {\n return (context.params.paginate as PaginationOptions) || undefined\n }\n\n if (context.params.paginate === false) {\n return undefined\n }\n let options = context.service?.options || {}\n\n options = {\n ...options,\n ...context.params.adapter,\n }\n\n return options.paginate || undefined\n}\n","import type { HookContext } from '@feathersjs/feathers'\nimport { getPaginate } from '../../utils/get-paginate/get-paginate.util.js'\n\n/**\n * util to check if a hook is a paginated hook using `getPaginate`\n *\n * @see https://utils.feathersjs.com/predicates/is-paginated.html\n */\nexport const isPaginated = <H extends HookContext = HookContext>(\n context: H,\n): boolean => {\n if (context.params.paginate === false || context.method !== 'find') {\n return false\n }\n\n const paginate = getPaginate(context)\n\n return !!paginate\n}\n","import { MethodNotAllowed } from '@feathersjs/errors'\nimport type { HookContext } from '@feathersjs/feathers'\nimport type { TransportName } from '../../types.js'\n\n/**\n * Check which transport provided the service call.\n *\n * @see https://utils.feathersjs.com/predicates/is-provider.html\n */\nexport function isProvider<H extends HookContext = HookContext>(\n ...providers: TransportName[]\n) {\n if (!providers.length) {\n throw new MethodNotAllowed('Calling isProvider predicate incorrectly.')\n }\n\n return (context: H): boolean => {\n const hookProvider = context.params.provider\n\n return providers.some(\n (provider) =>\n provider === hookProvider ||\n (provider === 'server' && !hookProvider) ||\n (provider === 'external' && !!hookProvider),\n )\n }\n}\n","import type { HookContext } from '@feathersjs/feathers'\nimport { isPromise } from '../../common/index.js'\nimport type { PredicateFn } from '../../types.js'\n\n/**\n * Negate a predicate function.\n *\n * @see https://utils.feathersjs.com/predicates/not.html\n */\nexport const not =\n <H extends HookContext = HookContext>(\n predicate: PredicateFn<H>,\n ): PredicateFn<H> =>\n (context: H) => {\n const result = predicate(context)\n\n if (!isPromise(result)) {\n return !result\n }\n\n return result.then((result1) => !result1)\n }\n","import { GeneralError } from '@feathersjs/errors'\n\nimport type { HookContext } from '@feathersjs/feathers'\nimport type { SkipHookName } from '../../utils/index.js'\n\n/**\n * Util to detect if a hook should be skipped\n *\n * Checks the `params.skipHooks` array for the hook name, type, or 'all'.\n */\nexport const shouldSkip = <H extends HookContext = HookContext>(\n hookName: SkipHookName,\n) => {\n return (context: H): boolean => {\n if (!context.params?.skipHooks) {\n return false\n }\n\n const { skipHooks } = context.params\n if (!Array.isArray(skipHooks)) {\n throw new GeneralError(\n 'The `skipHooks` param must be an Array of Strings',\n )\n }\n const { type } = context\n if (skipHooks.includes(hookName)) {\n return true\n } else if (skipHooks.includes('all')) {\n return true\n } else if (skipHooks.includes(type)) {\n return true\n } else if (skipHooks.includes(`${type}:${hookName}`)) {\n return true\n }\n\n return false\n }\n}\n","import type { HookContext } from '@feathersjs/feathers'\nimport type { PredicateFn } from '../../types.js'\nimport { isPromise } from '../../common/index.js'\n\n/**\n * Return the or of a series of sync or async predicate functions.\n *\n * @see https://utils.feathersjs.com/predicates/some.html\n */\nexport const some =\n <H extends HookContext = HookContext>(\n ...predicates: (PredicateFn<H> | undefined)[]\n ): PredicateFn<H> =>\n (context: H): boolean | Promise<boolean> => {\n if (!predicates.length) {\n // same as Array.prototype.some\n // see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some#description\n return true\n }\n\n const promises: Promise<boolean>[] = []\n\n let everyUndefined = true\n\n for (const predicate of predicates) {\n if (!predicate) {\n // skip undefined predicates\n continue\n } else {\n everyUndefined = false\n }\n\n const result = predicate(context)\n\n if (result === true) {\n return true\n } else if (result === false) {\n continue\n } else if (isPromise(result)) {\n promises.push(result)\n }\n }\n\n if (everyUndefined) {\n // all predicates are undefined -> same as Array.prototype.some\n // see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some#description\n return true\n }\n\n if (!promises.length) {\n // no promises returned -> all predicates are sync and false\n return false\n }\n\n return Promise.all(promises).then((results) =>\n results.some((result) => !!result),\n )\n }\n"]}
@@ -1,34 +1,42 @@
1
- import { isContext, isPromise, isMulti, isPaginated } from './chunk-KSCPQLU3.js';
1
+ import { isContext, isPromise, isMulti, isPaginated } from './chunk-JIARTRVW.js';
2
2
  import { deepEqual } from 'fast-equals';
3
- import { SERVICE } from '@feathersjs/feathers';
3
+ import * as feathers from '@feathersjs/feathers';
4
4
  import copy from 'fast-copy';
5
5
 
6
- var addToQuery = (targetQuery, property, value) => {
7
- if (!(property in targetQuery)) {
6
+ function addToQuery(targetQuery, query) {
7
+ targetQuery ??= {};
8
+ if (Object.keys(query).length === 0) {
9
+ return targetQuery;
10
+ }
11
+ const entries = Object.entries(query);
12
+ if (entries.every(([property]) => !(property in targetQuery))) {
8
13
  return {
9
14
  ...targetQuery,
10
- [property]: value
15
+ ...query
11
16
  };
12
17
  }
13
- if (deepEqual(targetQuery[property], value)) {
18
+ function isAlreadyInQuery(targetQuery2, entries2) {
19
+ return entries2.every(
20
+ ([property, value]) => property in targetQuery2 && deepEqual(targetQuery2[property], value)
21
+ );
22
+ }
23
+ if (isAlreadyInQuery(targetQuery, entries)) {
14
24
  return targetQuery;
15
25
  }
16
26
  if (!targetQuery.$and) {
17
27
  return {
18
28
  ...targetQuery,
19
- $and: [{ [property]: value }]
29
+ $and: [{ ...query }]
20
30
  };
21
31
  }
22
- if (targetQuery.$and.some(
23
- (q) => property in q && deepEqual(q[property], value)
24
- )) {
32
+ if (targetQuery.$and.some((q) => isAlreadyInQuery(q, entries))) {
25
33
  return targetQuery;
26
34
  }
27
35
  return {
28
36
  ...targetQuery,
29
- $and: [...targetQuery.$and, { [property]: value }]
37
+ $and: [...targetQuery.$and, { ...query }]
30
38
  };
31
- };
39
+ }
32
40
 
33
41
  // src/utils/add-skip/add-skip.util.ts
34
42
  var addSkip = (context, hooks) => {
@@ -86,8 +94,11 @@ function getDataIsArray(context) {
86
94
  data: isArray ? context.data : [context.data]
87
95
  };
88
96
  }
97
+ var SERVICE2 = feathers.SERVICE || feathers.default?.SERVICE;
98
+
99
+ // src/utils/get-exposed-methods/get-exposed-methods.util.ts
89
100
  function getExposedMethods(service) {
90
- const result = service[SERVICE].methods;
101
+ const result = service[SERVICE2].methods;
91
102
  if (!result || !Array.isArray(result)) {
92
103
  throw new Error(`Service does not have exposed methods`);
93
104
  }
@@ -358,5 +369,5 @@ var walkQuery = (query, walker) => {
358
369
  };
359
370
 
360
371
  export { addSkip, addToQuery, checkContext, contextToJson, defineHooks, getDataIsArray, getExposedMethods, getResultIsArray, iterateFind, mutateData, mutateResult, patchBatch, skipResult, transformParams, walkQuery };
361
- //# sourceMappingURL=chunk-4TBKW4G4.js.map
362
- //# sourceMappingURL=chunk-4TBKW4G4.js.map
372
+ //# sourceMappingURL=chunk-WF2LUJAT.js.map
373
+ //# sourceMappingURL=chunk-WF2LUJAT.js.map