feathers-utils 2.0.0-8 → 2.0.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.
Files changed (156) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +3 -1
  3. package/dist/index.cjs +918 -0
  4. package/dist/index.d.ts +255 -5
  5. package/dist/index.mjs +892 -0
  6. package/package.json +34 -38
  7. package/src/filters/object.ts +1 -1
  8. package/src/hooks/forEach.ts +47 -0
  9. package/src/hooks/index.ts +3 -0
  10. package/src/hooks/makeSequelizeQuery.ts_ +4 -4
  11. package/src/hooks/parseFields.ts +27 -0
  12. package/src/hooks/runPerItem.ts +1 -2
  13. package/src/hooks/setData.ts +1 -1
  14. package/src/index.ts +1 -0
  15. package/src/typesInternal.ts +7 -0
  16. package/src/utility-types/index.ts +116 -0
  17. package/src/utils/filterQuery.ts +0 -2
  18. package/src/utils/getItemsIsArray.ts +29 -13
  19. package/src/utils/getPaginate.ts +1 -1
  20. package/src/utils/isPaginated.ts +1 -1
  21. package/src/utils/shouldSkip.ts +5 -17
  22. package/dist/esm/filters/array.d.ts +0 -2
  23. package/dist/esm/filters/array.js +0 -17
  24. package/dist/esm/filters/index.d.ts +0 -2
  25. package/dist/esm/filters/index.js +0 -2
  26. package/dist/esm/filters/object.d.ts +0 -2
  27. package/dist/esm/filters/object.js +0 -15
  28. package/dist/esm/hooks/checkMulti.d.ts +0 -5
  29. package/dist/esm/hooks/checkMulti.js +0 -20
  30. package/dist/esm/hooks/createRelated.d.ts +0 -12
  31. package/dist/esm/hooks/createRelated.js +0 -31
  32. package/dist/esm/hooks/index.d.ts +0 -6
  33. package/dist/esm/hooks/index.js +0 -6
  34. package/dist/esm/hooks/onDelete.d.ts +0 -12
  35. package/dist/esm/hooks/onDelete.js +0 -47
  36. package/dist/esm/hooks/removeRelated.d.ts +0 -11
  37. package/dist/esm/hooks/removeRelated.js +0 -37
  38. package/dist/esm/hooks/runPerItem.d.ts +0 -11
  39. package/dist/esm/hooks/runPerItem.js +0 -30
  40. package/dist/esm/hooks/setData.d.ts +0 -11
  41. package/dist/esm/hooks/setData.js +0 -46
  42. package/dist/esm/index.d.ts +0 -5
  43. package/dist/esm/index.js +0 -5
  44. package/dist/esm/mixins/debounce-mixin/DebouncedStore.d.ts +0 -18
  45. package/dist/esm/mixins/debounce-mixin/DebouncedStore.js +0 -46
  46. package/dist/esm/mixins/debounce-mixin/debounceMixin.d.ts +0 -3
  47. package/dist/esm/mixins/debounce-mixin/debounceMixin.js +0 -19
  48. package/dist/esm/mixins/debounce-mixin/index.d.ts +0 -3
  49. package/dist/esm/mixins/debounce-mixin/index.js +0 -3
  50. package/dist/esm/mixins/debounce-mixin/types.d.ts +0 -13
  51. package/dist/esm/mixins/debounce-mixin/types.js +0 -1
  52. package/dist/esm/mixins/index.d.ts +0 -1
  53. package/dist/esm/mixins/index.js +0 -1
  54. package/dist/esm/types.d.ts +0 -3
  55. package/dist/esm/types.js +0 -1
  56. package/dist/esm/typesInternal.d.ts +0 -3
  57. package/dist/esm/typesInternal.js +0 -3
  58. package/dist/esm/utils/filterQuery.d.ts +0 -8
  59. package/dist/esm/utils/filterQuery.js +0 -32
  60. package/dist/esm/utils/getItemsIsArray.d.ts +0 -10
  61. package/dist/esm/utils/getItemsIsArray.js +0 -16
  62. package/dist/esm/utils/getPaginate.d.ts +0 -9
  63. package/dist/esm/utils/getPaginate.js +0 -20
  64. package/dist/esm/utils/index.d.ts +0 -11
  65. package/dist/esm/utils/index.js +0 -11
  66. package/dist/esm/utils/isMulti.d.ts +0 -11
  67. package/dist/esm/utils/isMulti.js +0 -26
  68. package/dist/esm/utils/isPaginated.d.ts +0 -5
  69. package/dist/esm/utils/isPaginated.js +0 -11
  70. package/dist/esm/utils/markHookForSkip.d.ts +0 -7
  71. package/dist/esm/utils/markHookForSkip.js +0 -18
  72. package/dist/esm/utils/mergeQuery/index.d.ts +0 -3
  73. package/dist/esm/utils/mergeQuery/index.js +0 -3
  74. package/dist/esm/utils/mergeQuery/mergeArrays.d.ts +0 -3
  75. package/dist/esm/utils/mergeQuery/mergeArrays.js +0 -37
  76. package/dist/esm/utils/mergeQuery/mergeQuery.d.ts +0 -3
  77. package/dist/esm/utils/mergeQuery/mergeQuery.js +0 -70
  78. package/dist/esm/utils/mergeQuery/types.d.ts +0 -13
  79. package/dist/esm/utils/mergeQuery/types.js +0 -1
  80. package/dist/esm/utils/mergeQuery/utils.d.ts +0 -11
  81. package/dist/esm/utils/mergeQuery/utils.js +0 -272
  82. package/dist/esm/utils/pushSet.d.ts +0 -8
  83. package/dist/esm/utils/pushSet.js +0 -22
  84. package/dist/esm/utils/setResultEmpty.d.ts +0 -5
  85. package/dist/esm/utils/setResultEmpty.js +0 -28
  86. package/dist/esm/utils/shouldSkip.d.ts +0 -8
  87. package/dist/esm/utils/shouldSkip.js +0 -32
  88. package/dist/esm/utils/validateQueryProperty.d.ts +0 -5
  89. package/dist/esm/utils/validateQueryProperty.js +0 -23
  90. package/dist/filters/array.d.ts +0 -2
  91. package/dist/filters/array.js +0 -21
  92. package/dist/filters/index.d.ts +0 -2
  93. package/dist/filters/index.js +0 -18
  94. package/dist/filters/object.d.ts +0 -2
  95. package/dist/filters/object.js +0 -22
  96. package/dist/hooks/checkMulti.d.ts +0 -5
  97. package/dist/hooks/checkMulti.js +0 -24
  98. package/dist/hooks/createRelated.d.ts +0 -12
  99. package/dist/hooks/createRelated.js +0 -44
  100. package/dist/hooks/index.d.ts +0 -6
  101. package/dist/hooks/index.js +0 -22
  102. package/dist/hooks/onDelete.d.ts +0 -12
  103. package/dist/hooks/onDelete.js +0 -60
  104. package/dist/hooks/removeRelated.d.ts +0 -11
  105. package/dist/hooks/removeRelated.js +0 -50
  106. package/dist/hooks/runPerItem.d.ts +0 -11
  107. package/dist/hooks/runPerItem.js +0 -43
  108. package/dist/hooks/setData.d.ts +0 -11
  109. package/dist/hooks/setData.js +0 -54
  110. package/dist/index.js +0 -21
  111. package/dist/mixins/debounce-mixin/DebouncedStore.d.ts +0 -18
  112. package/dist/mixins/debounce-mixin/DebouncedStore.js +0 -65
  113. package/dist/mixins/debounce-mixin/debounceMixin.d.ts +0 -3
  114. package/dist/mixins/debounce-mixin/debounceMixin.js +0 -23
  115. package/dist/mixins/debounce-mixin/index.d.ts +0 -3
  116. package/dist/mixins/debounce-mixin/index.js +0 -19
  117. package/dist/mixins/debounce-mixin/types.d.ts +0 -13
  118. package/dist/mixins/debounce-mixin/types.js +0 -2
  119. package/dist/mixins/index.d.ts +0 -1
  120. package/dist/mixins/index.js +0 -17
  121. package/dist/types.d.ts +0 -3
  122. package/dist/types.js +0 -2
  123. package/dist/typesInternal.d.ts +0 -3
  124. package/dist/typesInternal.js +0 -4
  125. package/dist/utils/filterQuery.d.ts +0 -8
  126. package/dist/utils/filterQuery.js +0 -48
  127. package/dist/utils/getItemsIsArray.d.ts +0 -10
  128. package/dist/utils/getItemsIsArray.js +0 -20
  129. package/dist/utils/getPaginate.d.ts +0 -9
  130. package/dist/utils/getPaginate.js +0 -21
  131. package/dist/utils/index.d.ts +0 -11
  132. package/dist/utils/index.js +0 -27
  133. package/dist/utils/isMulti.d.ts +0 -11
  134. package/dist/utils/isMulti.js +0 -30
  135. package/dist/utils/isPaginated.d.ts +0 -5
  136. package/dist/utils/isPaginated.js +0 -15
  137. package/dist/utils/markHookForSkip.d.ts +0 -7
  138. package/dist/utils/markHookForSkip.js +0 -22
  139. package/dist/utils/mergeQuery/index.d.ts +0 -3
  140. package/dist/utils/mergeQuery/index.js +0 -19
  141. package/dist/utils/mergeQuery/mergeArrays.d.ts +0 -3
  142. package/dist/utils/mergeQuery/mergeArrays.js +0 -41
  143. package/dist/utils/mergeQuery/mergeQuery.d.ts +0 -3
  144. package/dist/utils/mergeQuery/mergeQuery.js +0 -77
  145. package/dist/utils/mergeQuery/types.d.ts +0 -13
  146. package/dist/utils/mergeQuery/types.js +0 -2
  147. package/dist/utils/mergeQuery/utils.d.ts +0 -11
  148. package/dist/utils/mergeQuery/utils.js +0 -287
  149. package/dist/utils/pushSet.d.ts +0 -8
  150. package/dist/utils/pushSet.js +0 -29
  151. package/dist/utils/setResultEmpty.d.ts +0 -5
  152. package/dist/utils/setResultEmpty.js +0 -32
  153. package/dist/utils/shouldSkip.d.ts +0 -8
  154. package/dist/utils/shouldSkip.js +0 -36
  155. package/dist/utils/validateQueryProperty.d.ts +0 -5
  156. package/dist/utils/validateQueryProperty.js +0 -25
@@ -1,29 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.pushSet = void 0;
7
- const isEqual_js_1 = __importDefault(require("lodash/isEqual.js"));
8
- const get_js_1 = __importDefault(require("lodash/get.js"));
9
- const set_js_1 = __importDefault(require("lodash/set.js"));
10
- /**
11
- * util to push a value to an array at a given path in an object
12
- */
13
- const pushSet = (obj, path, val, options) => {
14
- options = options || {};
15
- let arr = (0, get_js_1.default)(obj, path);
16
- if (!arr || !Array.isArray(arr)) {
17
- arr = [val];
18
- (0, set_js_1.default)(obj, path, arr);
19
- return arr;
20
- }
21
- else {
22
- if (options.unique && arr.some((x) => (0, isEqual_js_1.default)(x, val))) {
23
- return arr;
24
- }
25
- arr.push(val);
26
- return arr;
27
- }
28
- };
29
- exports.pushSet = pushSet;
@@ -1,5 +0,0 @@
1
- import type { HookContext } from "@feathersjs/feathers";
2
- /**
3
- * util to set `context.result` to an empty array or object, depending on the hook type
4
- */
5
- export declare const setResultEmpty: <H extends HookContext<import("@feathersjs/feathers").Application<any, any>, any> = HookContext<import("@feathersjs/feathers").Application<any, any>, any>>(context: H) => H;
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setResultEmpty = void 0;
4
- const isMulti_1 = require("./isMulti");
5
- const isPaginated_1 = require("./isPaginated");
6
- /**
7
- * util to set `context.result` to an empty array or object, depending on the hook type
8
- */
9
- const setResultEmpty = (context) => {
10
- if (context.result) {
11
- return context;
12
- }
13
- const multi = (0, isMulti_1.isMulti)(context);
14
- if (multi) {
15
- if (context.method === "find" && (0, isPaginated_1.isPaginated)(context)) {
16
- context.result = {
17
- total: 0,
18
- skip: 0,
19
- limit: 0,
20
- data: [],
21
- };
22
- }
23
- else {
24
- context.result = [];
25
- }
26
- }
27
- else {
28
- context.result = null;
29
- }
30
- return context;
31
- };
32
- exports.setResultEmpty = setResultEmpty;
@@ -1,8 +0,0 @@
1
- import type { HookContext } from "@feathersjs/feathers";
2
- export declare type ShouldSkipOptions = {
3
- notSkippable?: boolean;
4
- };
5
- /**
6
- * util to detect if a hook should be skipped
7
- */
8
- export declare const shouldSkip: <H extends HookContext<import("@feathersjs/feathers").Application<any, any>, any> = HookContext<import("@feathersjs/feathers").Application<any, any>, any>, O extends ShouldSkipOptions = ShouldSkipOptions>(hookName: string, context: H, options?: O | undefined) => boolean;
@@ -1,36 +0,0 @@
1
- "use strict";
2
- // Kudos to @DaddyWarbucks! This is a cheeky copy of his awesome library: 'feathers-fletching'.
3
- // Definitely check it out! https://daddywarbucks.github.io/feathers-fletching/overview.html
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.shouldSkip = void 0;
6
- const errors_1 = require("@feathersjs/errors");
7
- /**
8
- * util to detect if a hook should be skipped
9
- */
10
- const shouldSkip = (hookName, context, options) => {
11
- if (!context.params || !context.params.skipHooks || (options === null || options === void 0 ? void 0 : options.notSkippable)) {
12
- return false;
13
- }
14
- const { skipHooks } = context.params;
15
- if (!Array.isArray(skipHooks)) {
16
- throw new errors_1.GeneralError("The `skipHooks` param must be an Array of Strings");
17
- }
18
- const { type } = context;
19
- if (skipHooks.includes(hookName)) {
20
- return true;
21
- }
22
- if (skipHooks.includes("all")) {
23
- return true;
24
- }
25
- if (type === "before") {
26
- return (skipHooks.includes(`before:${hookName}`) || skipHooks.includes("before"));
27
- }
28
- if (type === "after") {
29
- return (skipHooks.includes(`after:${hookName}`) || skipHooks.includes("after"));
30
- }
31
- if (type === "error") {
32
- return (skipHooks.includes(`error:${hookName}`) || skipHooks.includes("error"));
33
- }
34
- return false;
35
- };
36
- exports.shouldSkip = shouldSkip;
@@ -1,5 +0,0 @@
1
- import type { Query } from "@feathersjs/feathers";
2
- /**
3
- * util to validate a query for operators
4
- */
5
- export declare const validateQueryProperty: (query: any, operators?: string[]) => Query;
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.validateQueryProperty = void 0;
4
- const commons_1 = require("@feathersjs/commons");
5
- const errors_1 = require("@feathersjs/errors");
6
- const isPlainObject = (value) => commons_1._.isObject(value) && value.constructor === {}.constructor;
7
- /**
8
- * util to validate a query for operators
9
- */
10
- const validateQueryProperty = (query, operators = []) => {
11
- if (!isPlainObject(query)) {
12
- return query;
13
- }
14
- for (const key of Object.keys(query)) {
15
- if (key.startsWith("$") && !operators.includes(key)) {
16
- throw new errors_1.BadRequest(`Invalid query parameter ${key}`, query);
17
- }
18
- const value = query[key];
19
- if (isPlainObject(value)) {
20
- query[key] = (0, exports.validateQueryProperty)(value, operators);
21
- }
22
- }
23
- return Object.assign({}, query);
24
- };
25
- exports.validateQueryProperty = validateQueryProperty;