@stryke/helpers 0.10.6 → 0.10.7

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 (135) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/arg-identity.d.cts.map +1 -1
  3. package/dist/arg-identity.d.mts.map +1 -1
  4. package/dist/arg-identity.mjs.map +1 -1
  5. package/dist/convert/src/index.cjs +4 -0
  6. package/dist/convert/src/index.mjs +6 -0
  7. package/dist/convert/src/parse-type-definition.cjs +1 -0
  8. package/dist/convert/src/parse-type-definition.mjs +3 -0
  9. package/dist/convert/src/string-to-utf8-array.cjs +5 -0
  10. package/dist/convert/src/string-to-utf8-array.mjs +6 -0
  11. package/dist/convert/src/string-to-utf8-array.mjs.map +1 -0
  12. package/dist/convert/src/utf8-array-to-string.cjs +5 -0
  13. package/dist/convert/src/utf8-array-to-string.mjs +6 -0
  14. package/dist/convert/src/utf8-array-to-string.mjs.map +1 -0
  15. package/dist/debounce.cjs +5 -4
  16. package/dist/debounce.d.cts +4 -6
  17. package/dist/debounce.d.cts.map +1 -1
  18. package/dist/debounce.d.mts +4 -6
  19. package/dist/debounce.d.mts.map +1 -1
  20. package/dist/debounce.mjs +5 -4
  21. package/dist/debounce.mjs.map +1 -1
  22. package/dist/deep-clone.cjs +2 -1
  23. package/dist/deep-clone.d.cts.map +1 -1
  24. package/dist/deep-clone.d.mts.map +1 -1
  25. package/dist/deep-clone.mjs +2 -1
  26. package/dist/deep-clone.mjs.map +1 -1
  27. package/dist/delay.cjs +2 -1
  28. package/dist/delay.d.cts +1 -3
  29. package/dist/delay.d.cts.map +1 -1
  30. package/dist/delay.d.mts +1 -3
  31. package/dist/delay.d.mts.map +1 -1
  32. package/dist/delay.mjs +2 -1
  33. package/dist/delay.mjs.map +1 -1
  34. package/dist/filter-empty.d.cts.map +1 -1
  35. package/dist/filter-empty.d.mts.map +1 -1
  36. package/dist/filter-empty.mjs.map +1 -1
  37. package/dist/flatten-object.cjs +2 -1
  38. package/dist/flatten-object.d.cts.map +1 -1
  39. package/dist/flatten-object.d.mts.map +1 -1
  40. package/dist/flatten-object.mjs +2 -1
  41. package/dist/flatten-object.mjs.map +1 -1
  42. package/dist/get-field.cjs +14 -7
  43. package/dist/get-field.d.cts +123 -125
  44. package/dist/get-field.d.cts.map +1 -1
  45. package/dist/get-field.d.mts +123 -125
  46. package/dist/get-field.d.mts.map +1 -1
  47. package/dist/get-field.mjs +14 -7
  48. package/dist/get-field.mjs.map +1 -1
  49. package/dist/get-ordered-by.d.cts.map +1 -1
  50. package/dist/get-ordered-by.d.mts.map +1 -1
  51. package/dist/get-ordered-by.mjs.map +1 -1
  52. package/dist/identity.d.cts.map +1 -1
  53. package/dist/identity.d.mts.map +1 -1
  54. package/dist/identity.mjs.map +1 -1
  55. package/dist/is-equal.d.cts.map +1 -1
  56. package/dist/is-equal.d.mts.map +1 -1
  57. package/dist/is-equal.mjs.map +1 -1
  58. package/dist/match-sorter.cjs +2 -2
  59. package/dist/match-sorter.mjs +2 -2
  60. package/dist/match-sorter.mjs.map +1 -1
  61. package/dist/noop.d.cts.map +1 -1
  62. package/dist/noop.d.mts.map +1 -1
  63. package/dist/noop.mjs.map +1 -1
  64. package/dist/omit.mjs.map +1 -1
  65. package/dist/pick.mjs.map +1 -1
  66. package/dist/remove-accents.cjs +1 -3
  67. package/dist/remove-accents.d.cts.map +1 -1
  68. package/dist/remove-accents.d.mts.map +1 -1
  69. package/dist/remove-accents.mjs +1 -3
  70. package/dist/remove-accents.mjs.map +1 -1
  71. package/dist/remove-empty-items.d.cts.map +1 -1
  72. package/dist/remove-empty-items.d.mts.map +1 -1
  73. package/dist/remove-empty-items.mjs.map +1 -1
  74. package/dist/semaphore.cjs +10 -10
  75. package/dist/semaphore.d.cts +10 -10
  76. package/dist/semaphore.d.cts.map +1 -1
  77. package/dist/semaphore.d.mts +10 -10
  78. package/dist/semaphore.d.mts.map +1 -1
  79. package/dist/semaphore.mjs +10 -10
  80. package/dist/semaphore.mjs.map +1 -1
  81. package/dist/set-field.cjs +1 -1
  82. package/dist/set-field.d.cts.map +1 -1
  83. package/dist/set-field.d.mts.map +1 -1
  84. package/dist/set-field.mjs +1 -1
  85. package/dist/set-field.mjs.map +1 -1
  86. package/dist/throttle.d.cts.map +1 -1
  87. package/dist/throttle.d.mts.map +1 -1
  88. package/dist/throttle.mjs.map +1 -1
  89. package/dist/timeout.d.cts.map +1 -1
  90. package/dist/timeout.d.mts.map +1 -1
  91. package/dist/timeout.mjs.map +1 -1
  92. package/dist/to-deep-key.d.cts.map +1 -1
  93. package/dist/to-deep-key.d.mts.map +1 -1
  94. package/dist/to-deep-key.mjs.map +1 -1
  95. package/dist/type-checks/src/index.cjs +21 -0
  96. package/dist/type-checks/src/index.mjs +23 -0
  97. package/dist/type-checks/src/is-buffer.cjs +13 -0
  98. package/dist/type-checks/src/is-buffer.mjs +14 -0
  99. package/dist/type-checks/src/is-buffer.mjs.map +1 -0
  100. package/dist/type-checks/src/is-collection.cjs +1 -0
  101. package/dist/type-checks/src/is-collection.mjs +3 -0
  102. package/dist/type-checks/src/is-deep-key.cjs +6 -0
  103. package/dist/type-checks/src/is-deep-key.mjs +6 -0
  104. package/dist/type-checks/src/is-deep-key.mjs.map +1 -1
  105. package/dist/type-checks/src/is-function.cjs +3 -1
  106. package/dist/type-checks/src/is-function.mjs +1 -1
  107. package/dist/type-checks/src/is-object-index.cjs +6 -0
  108. package/dist/type-checks/src/is-object-index.mjs +6 -0
  109. package/dist/type-checks/src/is-object-index.mjs.map +1 -1
  110. package/dist/type-checks/src/is-plain-object.cjs +3 -2
  111. package/dist/type-checks/src/is-plain-object.mjs +3 -3
  112. package/dist/type-checks/src/is-plain-object.mjs.map +1 -1
  113. package/dist/type-checks/src/is-set-string.cjs +1 -1
  114. package/dist/type-checks/src/is-set-string.mjs +1 -1
  115. package/dist/type-checks/src/property-exists.cjs +1 -0
  116. package/dist/type-checks/src/property-exists.mjs +1 -1
  117. package/dist/type-checks/src/type-detect.cjs +15 -0
  118. package/dist/type-checks/src/type-detect.mjs +17 -0
  119. package/dist/type-checks/src/type-detect.mjs.map +1 -0
  120. package/dist/types/src/object.d.cts +1 -1
  121. package/dist/types/src/object.d.mts +1 -1
  122. package/dist/unflatten-object.cjs +1 -1
  123. package/dist/unflatten-object.d.cts +1 -1
  124. package/dist/unflatten-object.d.cts.map +1 -1
  125. package/dist/unflatten-object.d.mts +1 -1
  126. package/dist/unflatten-object.d.mts.map +1 -1
  127. package/dist/unflatten-object.mjs +1 -1
  128. package/dist/unflatten-object.mjs.map +1 -1
  129. package/dist/union.d.cts.map +1 -1
  130. package/dist/union.d.mts.map +1 -1
  131. package/dist/union.mjs.map +1 -1
  132. package/dist/with-timeout.d.cts.map +1 -1
  133. package/dist/with-timeout.d.mts.map +1 -1
  134. package/dist/with-timeout.mjs.map +1 -1
  135. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"is-equal.d.cts","names":[],"sources":["../src/is-equal.ts"],"sourcesContent":[],"mappings":";;AA8JA;;;;;;;;;;;;;;;;iBAAgB,OAAA"}
1
+ {"version":3,"file":"is-equal.d.cts","names":[],"sources":["../src/is-equal.ts"],"sourcesContent":[],"mappings":";;AA+JA;;;;;;;;;;;;;;;;iBAAgB,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"is-equal.d.mts","names":[],"sources":["../src/is-equal.ts"],"sourcesContent":[],"mappings":";;AA8JA;;;;;;;;;;;;;;;;iBAAgB,OAAA"}
1
+ {"version":3,"file":"is-equal.d.mts","names":[],"sources":["../src/is-equal.ts"],"sourcesContent":[],"mappings":";;AA+JA;;;;;;;;;;;;;;;;iBAAgB,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"is-equal.mjs","names":[],"sources":["../src/is-equal.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Stryke\n\n This code was released as part of the Stryke project. Stryke\n is maintained by Storm Software under the Apache-2.0 License, and is\n free for commercial and private use. For more information, please visit\n our licensing page.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/stryke\n Documentation: https://stormsoftware.com/projects/stryke/docs\n Contact: https://stormsoftware.com/contact\n License: https://stormsoftware.com/projects/stryke/license\n\n ------------------------------------------------------------------- */\n\nimport { isSet } from \"@stryke/type-checks/is-set\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\n\nconst hasMap = typeof Map === \"function\";\nconst hasSet = typeof Set === \"function\";\nconst hasArrayBuffer =\n typeof ArrayBuffer === \"function\" && ArrayBuffer.isView !== undefined;\n\nfunction equal(a: any, b: any) {\n if (a === b) {\n return true;\n }\n\n if (a && b && typeof a === \"object\" && typeof b === \"object\") {\n if (a.constructor !== b.constructor) {\n return false;\n }\n\n let length;\n if (Array.isArray(a)) {\n length = a.length;\n\n if (length != b.length) return false;\n for (let i = length; i-- !== 0; ) if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n let it;\n if (hasMap && a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) return false;\n it = a.entries();\n let i;\n while (!(i = it.next()).done) if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done) {\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n }\n return true;\n }\n\n if (hasSet && a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) return false;\n it = a.entries();\n let i;\n while (!(i = it.next()).done) if (!b.has(i.value[0])) return false;\n return true;\n }\n\n if (\n Array.isArray(a) &&\n Array.isArray(b) &&\n hasArrayBuffer &&\n ArrayBuffer.isView(a) &&\n ArrayBuffer.isView(b)\n ) {\n length = a.length;\n\n if (length != b.length) return false;\n for (let i = length; i-- !== 0; ) if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) {\n return a.source === b.source && a.flags === b.flags;\n }\n\n if (\n a.valueOf !== Object.prototype.valueOf &&\n typeof a.valueOf === \"function\" &&\n typeof b.valueOf === \"function\"\n ) {\n // eslint-disable-next-line ts/no-unsafe-call\n return a.valueOf() === b.valueOf();\n }\n if (\n a.toString !== Object.prototype.toString &&\n typeof a.toString === \"function\" &&\n typeof b.toString === \"function\"\n ) {\n // eslint-disable-next-line ts/no-unsafe-call\n return a.toString() === b.toString();\n }\n\n const keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n\n for (let i = length; i-- !== 0; ) {\n if (\n !isSet(i) ||\n !isSetString(keys[i]) ||\n !Object.prototype.hasOwnProperty.call(b, keys[i] as any)\n ) {\n return false;\n }\n }\n\n for (let i = length; i-- !== 0; ) {\n if (\n Array.isArray(keys) &&\n (keys[i] === \"_owner\" || keys[i] === \"__v\" || keys[i] === \"__o\") &&\n a.$$typeof\n ) {\n continue;\n }\n\n if (\n !isSet(i) ||\n !isSetString(keys[i]) ||\n !equal(a[keys[i] as any], b[keys[i] as any])\n ) {\n return false;\n }\n }\n\n return true;\n }\n\n // eslint-disable-next-line no-self-compare\n return a !== a && b !== b;\n}\n\n/**\n * Checks if two values are equal, including support for `Date`, `RegExp`, and deep object comparison.\n *\n * @example\n * ```ts\n * isEqual(1, 1); // true\n * isEqual({ a: 1 }, { a: 1 }); // true\n * isEqual(/abc/g, /abc/g); // true\n * isEqual(new Date('2020-01-01'), new Date('2020-01-01')); // true\n * isEqual([1, 2, 3], [1, 2, 3]); // true\n * isEqual({ a: 1, b: { c: 2 } }, { a: 1, b: { c: 2 } }); // true\n * ```\n *\n * @param a - The first value to compare.\n * @param b - The second value to compare.\n * @returns `true` if the values are equal, otherwise `false`.\n */\nexport function isEqual(a: any, b: any): boolean {\n try {\n return equal(a, b);\n } catch (error) {\n if (/stack|recursion/i.test((error as any)?.message || \"\")) {\n // eslint-disable-next-line no-console\n console.warn(\"isEqual cannot handle circular refs\");\n\n return false;\n }\n\n throw error;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"is-equal.mjs","names":[],"sources":["../src/is-equal.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Stryke\n\n This code was released as part of the Stryke project. Stryke\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/stryke.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/stryke\n Documentation: https://docs.stormsoftware.com/projects/stryke\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { isSet } from \"@stryke/type-checks/is-set\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\n\nconst hasMap = typeof Map === \"function\";\nconst hasSet = typeof Set === \"function\";\nconst hasArrayBuffer =\n typeof ArrayBuffer === \"function\" && ArrayBuffer.isView !== undefined;\n\nfunction equal(a: any, b: any) {\n if (a === b) {\n return true;\n }\n\n if (a && b && typeof a === \"object\" && typeof b === \"object\") {\n if (a.constructor !== b.constructor) {\n return false;\n }\n\n let length;\n if (Array.isArray(a)) {\n length = a.length;\n\n if (length != b.length) return false;\n for (let i = length; i-- !== 0; ) if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n let it;\n if (hasMap && a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) return false;\n it = a.entries();\n let i;\n while (!(i = it.next()).done) if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done) {\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n }\n return true;\n }\n\n if (hasSet && a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) return false;\n it = a.entries();\n let i;\n while (!(i = it.next()).done) if (!b.has(i.value[0])) return false;\n return true;\n }\n\n if (\n Array.isArray(a) &&\n Array.isArray(b) &&\n hasArrayBuffer &&\n ArrayBuffer.isView(a) &&\n ArrayBuffer.isView(b)\n ) {\n length = a.length;\n\n if (length != b.length) return false;\n for (let i = length; i-- !== 0; ) if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) {\n return a.source === b.source && a.flags === b.flags;\n }\n\n if (\n a.valueOf !== Object.prototype.valueOf &&\n typeof a.valueOf === \"function\" &&\n typeof b.valueOf === \"function\"\n ) {\n // eslint-disable-next-line ts/no-unsafe-call\n return a.valueOf() === b.valueOf();\n }\n if (\n a.toString !== Object.prototype.toString &&\n typeof a.toString === \"function\" &&\n typeof b.toString === \"function\"\n ) {\n // eslint-disable-next-line ts/no-unsafe-call\n return a.toString() === b.toString();\n }\n\n const keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n\n for (let i = length; i-- !== 0; ) {\n if (\n !isSet(i) ||\n !isSetString(keys[i]) ||\n !Object.prototype.hasOwnProperty.call(b, keys[i] as any)\n ) {\n return false;\n }\n }\n\n for (let i = length; i-- !== 0; ) {\n if (\n Array.isArray(keys) &&\n (keys[i] === \"_owner\" || keys[i] === \"__v\" || keys[i] === \"__o\") &&\n a.$$typeof\n ) {\n continue;\n }\n\n if (\n !isSet(i) ||\n !isSetString(keys[i]) ||\n !equal(a[keys[i] as any], b[keys[i] as any])\n ) {\n return false;\n }\n }\n\n return true;\n }\n\n // eslint-disable-next-line no-self-compare\n return a !== a && b !== b;\n}\n\n/**\n * Checks if two values are equal, including support for `Date`, `RegExp`, and deep object comparison.\n *\n * @example\n * ```ts\n * isEqual(1, 1); // true\n * isEqual({ a: 1 }, { a: 1 }); // true\n * isEqual(/abc/g, /abc/g); // true\n * isEqual(new Date('2020-01-01'), new Date('2020-01-01')); // true\n * isEqual([1, 2, 3], [1, 2, 3]); // true\n * isEqual({ a: 1, b: { c: 2 } }, { a: 1, b: { c: 2 } }); // true\n * ```\n *\n * @param a - The first value to compare.\n * @param b - The second value to compare.\n * @returns `true` if the values are equal, otherwise `false`.\n */\nexport function isEqual(a: any, b: any): boolean {\n try {\n return equal(a, b);\n } catch (error) {\n if (/stack|recursion/i.test((error as any)?.message || \"\")) {\n // eslint-disable-next-line no-console\n console.warn(\"isEqual cannot handle circular refs\");\n\n return false;\n }\n\n throw error;\n }\n}\n"],"mappings":"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"}
@@ -172,9 +172,9 @@ function sortRankedValues(a, b, baseSort) {
172
172
  * @param options - options for the match (like keepDiacritics for comparison)
173
173
  * @returns the prepared value
174
174
  */
175
- function prepareValueForComparison(value, { keepDiacritics }) {
175
+ function prepareValueForComparison(value, options) {
176
176
  value = `${value}`;
177
- if (!keepDiacritics) value = require_remove_accents.removeAccents(value);
177
+ if (!options.keepDiacritics) value = require_remove_accents.removeAccents(value);
178
178
  return value;
179
179
  }
180
180
  /**
@@ -172,9 +172,9 @@ function sortRankedValues(a, b, baseSort) {
172
172
  * @param options - options for the match (like keepDiacritics for comparison)
173
173
  * @returns the prepared value
174
174
  */
175
- function prepareValueForComparison(value, { keepDiacritics }) {
175
+ function prepareValueForComparison(value, options) {
176
176
  value = `${value}`;
177
- if (!keepDiacritics) value = removeAccents(value);
177
+ if (!options.keepDiacritics) value = removeAccents(value);
178
178
  return value;
179
179
  }
180
180
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"match-sorter.mjs","names":["defaultBaseSortFn: BaseSorter<unknown>","value: string | Array<string> | null | unknown","values: ValueA","nestedValues: ValueA","allValues: Array<{ itemValue: string; attributes: KeyAttributes }>"],"sources":["../src/match-sorter.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Stryke\n\n This code was released as part of the Stryke project. Stryke\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/stryke.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/stryke\n Documentation: https://docs.stormsoftware.com/projects/stryke\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { removeAccents } from \"./remove-accents\";\n\n/**\n * Forked from match-sorter by Kent C. Dodds\n */\n\ninterface KeyAttributes {\n threshold?: Ranking;\n maxRanking: Ranking;\n minRanking: Ranking;\n}\ninterface RankingInfo {\n rankedValue: string;\n rank: Ranking;\n keyIndex: number;\n keyThreshold: Ranking | undefined;\n}\n\ninterface ValueGetterKey<ItemType> {\n (item: ItemType): string | Array<string>;\n}\ninterface IndexedItem<ItemType> {\n item: ItemType;\n index: number;\n}\ninterface RankedItem<ItemType> extends RankingInfo, IndexedItem<ItemType> {}\n\ninterface BaseSorter<ItemType> {\n (a: RankedItem<ItemType>, b: RankedItem<ItemType>): number;\n}\n\ninterface Sorter<ItemType> {\n (matchItems: Array<RankedItem<ItemType>>): Array<RankedItem<ItemType>>;\n}\n\ninterface KeyAttributesOptions<ItemType> {\n key?: string | ValueGetterKey<ItemType>;\n threshold?: Ranking;\n maxRanking?: Ranking;\n minRanking?: Ranking;\n}\n\ntype KeyOption<ItemType> =\n | KeyAttributesOptions<ItemType>\n | ValueGetterKey<ItemType>\n | string;\n\ninterface MatchSorterOptions<ItemType = unknown> {\n keys?: ReadonlyArray<KeyOption<ItemType>>;\n threshold?: Ranking;\n baseSort?: BaseSorter<ItemType>;\n keepDiacritics?: boolean;\n sorter?: Sorter<ItemType>;\n}\ntype IndexableByString = Record<string, unknown>;\n\nconst rankings = {\n CASE_SENSITIVE_EQUAL: 7,\n EQUAL: 6,\n STARTS_WITH: 5,\n WORD_STARTS_WITH: 4,\n CONTAINS: 3,\n ACRONYM: 2,\n MATCHES: 1,\n NO_MATCH: 0\n} as const;\n\ntype Ranking = (typeof rankings)[keyof typeof rankings];\n\nconst defaultBaseSortFn: BaseSorter<unknown> = (a, b) =>\n String(a.rankedValue).localeCompare(String(b.rankedValue));\n\n/**\n * Takes an array of items and a value and returns a new array with the items that match the given value\n * @param items - the items to sort\n * @param value - the value to use for ranking\n * @param options - Some options to configure the sorter\n * @returns - the new sorted array\n */\nfunction matchSorter<ItemType = string>(\n items: ReadonlyArray<ItemType>,\n value: string,\n options: MatchSorterOptions<ItemType> = {}\n): Array<ItemType> {\n const {\n keys,\n threshold = rankings.MATCHES,\n baseSort = defaultBaseSortFn,\n sorter = matchedItems =>\n matchedItems.sort((a, b) => sortRankedValues(a, b, baseSort))\n } = options;\n const matchedItems = items.reduce(\n (ret: Array<RankedItem<ItemType>>, item: ItemType, index: number) =>\n reduceItemsToRanked(ret, item, index),\n []\n );\n\n return sorter(matchedItems).map(({ item }) => item);\n\n function reduceItemsToRanked(\n matches: Array<RankedItem<ItemType>>,\n item: ItemType,\n index: number\n ): Array<RankedItem<ItemType>> {\n const rankingInfo = getHighestRanking(item, keys, value, options);\n const { rank, keyThreshold = threshold } = rankingInfo;\n if (rank >= keyThreshold) {\n matches.push({\n ...rankingInfo,\n item,\n index\n });\n }\n return matches;\n }\n}\n\nmatchSorter.rankings = rankings;\n\n/**\n * Gets the highest ranking for value for the given item based on its values for the given keys\n * @param item - the item to rank\n * @param keys - the keys to get values from the item for the ranking\n * @param value - the value to rank against\n * @param options - options to control the ranking\n * @returns The highest ranking\n */\nfunction getHighestRanking<ItemType>(\n item: ItemType,\n keys: ReadonlyArray<KeyOption<ItemType>> | undefined,\n value: string,\n options: MatchSorterOptions<ItemType>\n): RankingInfo {\n if (!keys) {\n // if keys is not specified, then we assume the item given is ready to be matched\n const stringItem = item as unknown as string;\n\n return {\n // ends up being duplicate of 'item' in matches but consistent\n rankedValue: stringItem,\n rank: getMatchRanking(stringItem, value, options),\n keyIndex: -1,\n keyThreshold: options.threshold\n };\n }\n const valuesToRank = getAllValuesToRank(item, keys);\n\n return valuesToRank.reduce(\n (\n { rank, rankedValue, keyIndex, keyThreshold },\n { itemValue, attributes },\n i\n ) => {\n let newRank = getMatchRanking(itemValue, value, options);\n let newRankedValue = rankedValue;\n const { minRanking, maxRanking, threshold } = attributes;\n if (newRank < minRanking && newRank >= rankings.MATCHES) {\n newRank = minRanking;\n } else if (newRank > maxRanking) {\n newRank = maxRanking;\n }\n if (newRank > rank) {\n rank = newRank;\n keyIndex = i;\n keyThreshold = threshold;\n newRankedValue = itemValue;\n }\n return {\n rankedValue: newRankedValue,\n rank,\n keyIndex,\n keyThreshold\n };\n },\n {\n rankedValue: item as unknown as string,\n rank: rankings.NO_MATCH as Ranking,\n keyIndex: -1,\n keyThreshold: options.threshold\n }\n );\n}\n\n/**\n * Gives a rankings score based on how well the two strings match.\n * @param testString - the string to test against\n * @param stringToRank - the string to rank\n * @param options - options for the match (like keepDiacritics for comparison)\n * @returns the ranking for how well stringToRank matches testString\n */\nfunction getMatchRanking<ItemType>(\n testString: string,\n stringToRank: string,\n options: MatchSorterOptions<ItemType>\n): Ranking {\n testString = prepareValueForComparison(testString, options);\n stringToRank = prepareValueForComparison(stringToRank, options);\n\n // too long\n if (stringToRank.length > testString.length) {\n return rankings.NO_MATCH;\n }\n\n // case sensitive equals\n if (testString === stringToRank) {\n return rankings.CASE_SENSITIVE_EQUAL;\n }\n\n // Lower casing before further comparison\n testString = testString.toLowerCase();\n stringToRank = stringToRank.toLowerCase();\n\n // case insensitive equals\n if (testString === stringToRank) {\n return rankings.EQUAL;\n }\n\n // starts with\n if (testString.startsWith(stringToRank)) {\n return rankings.STARTS_WITH;\n }\n\n // word starts with\n if (testString.includes(` ${stringToRank}`)) {\n return rankings.WORD_STARTS_WITH;\n }\n\n // contains\n if (testString.includes(stringToRank)) {\n return rankings.CONTAINS;\n } else if (stringToRank.length === 1) {\n // If the only character in the given stringToRank\n // isn't even contained in the testString, then\n // it's definitely not a match.\n return rankings.NO_MATCH;\n }\n\n // acronym\n if (getAcronym(testString).includes(stringToRank)) {\n return rankings.ACRONYM;\n }\n\n // will return a number between rankings.MATCHES and\n // rankings.MATCHES + 1 depending on how close of a match it is.\n return getClosenessRanking(testString, stringToRank);\n}\n\n/**\n * Generates an acronym for a string.\n *\n * @param value - the string for which to produce the acronym\n * @returns the acronym\n */\nfunction getAcronym(value: string): string {\n let acronym = \"\";\n const wordsInString = value.split(\" \");\n for (const wordInString of wordsInString) {\n const splitByHyphenWords = wordInString.split(\"-\");\n for (const splitByHyphenWord of splitByHyphenWords) {\n acronym += splitByHyphenWord.slice(0, 1);\n }\n }\n return acronym;\n}\n\n/**\n * Returns a score based on how spread apart the\n * characters from the stringToRank are within the testString.\n * A number close to rankings.MATCHES represents a loose match. A number close\n * to rankings.MATCHES + 1 represents a tighter match.\n * @param testString - the string to test against\n * @param stringToRank - the string to rank\n * @returns the number between rankings.MATCHES and\n * rankings.MATCHES + 1 for how well stringToRank matches testString\n */\nfunction getClosenessRanking(\n testString: string,\n stringToRank: string\n): Ranking {\n let matchingInOrderCharCount = 0;\n let charNumber = 0;\n function findMatchingCharacter(\n matchChar: string,\n string: string,\n index: number\n ) {\n for (let j = index, J = string.length; j < J; j++) {\n const stringChar = string[j];\n if (stringChar === matchChar) {\n matchingInOrderCharCount += 1;\n return j + 1;\n }\n }\n return -1;\n }\n function getRanking(spread: number) {\n const spreadPercentage = 1 / spread;\n const inOrderPercentage = matchingInOrderCharCount / stringToRank.length;\n const ranking = rankings.MATCHES + inOrderPercentage * spreadPercentage;\n\n return ranking as Ranking;\n }\n const firstIndex = findMatchingCharacter(stringToRank[0]!, testString, 0);\n if (firstIndex < 0) {\n return rankings.NO_MATCH;\n }\n charNumber = firstIndex;\n for (let i = 1, I = stringToRank.length; i < I; i++) {\n const matchChar = stringToRank[i];\n charNumber = findMatchingCharacter(matchChar!, testString, charNumber);\n const found = charNumber > -1;\n if (!found) {\n return rankings.NO_MATCH;\n }\n }\n\n const spread = charNumber - firstIndex;\n\n return getRanking(spread);\n}\n\n/**\n * Sorts items that have a rank, index, and keyIndex\n * @param a - the first item to sort\n * @param b - the second item to sort\n * @returns -1 if a should come first, 1 if b should come first, 0 if equal\n */\nfunction sortRankedValues<ItemType>(\n a: RankedItem<ItemType>,\n b: RankedItem<ItemType>,\n baseSort: BaseSorter<ItemType>\n): number {\n const aFirst = -1;\n const bFirst = 1;\n const { rank: aRank, keyIndex: aKeyIndex } = a;\n const { rank: bRank, keyIndex: bKeyIndex } = b;\n const same = aRank === bRank;\n if (same) {\n if (aKeyIndex === bKeyIndex) {\n // use the base sort function as a tie-breaker\n return baseSort(a, b);\n }\n return aKeyIndex < bKeyIndex ? aFirst : bFirst;\n }\n return aRank > bRank ? aFirst : bFirst;\n}\n\n/**\n * Prepares value for comparison by stringifying it, removing diacritics (if specified)\n * @param value - the value to clean\n * @param options - options for the match (like keepDiacritics for comparison)\n * @returns the prepared value\n */\nfunction prepareValueForComparison<ItemType>(\n value: string,\n { keepDiacritics }: MatchSorterOptions<ItemType>\n): string {\n // value might not actually be a string at this point (we don't get to choose)\n // so part of preparing the value for comparison is ensure that it is a string\n value = `${value}`; // toString\n if (!keepDiacritics) {\n value = removeAccents(value);\n }\n return value;\n}\n\n/**\n * Gets value for key in item at arbitrarily nested keypath\n * @param item - the item\n * @param key - the potentially nested keypath or property callback\n * @returns - an array containing the value(s) at the nested keypath\n */\nfunction getItemValues<ItemType>(\n item: ItemType,\n key: KeyOption<ItemType>\n): Array<string> {\n if (typeof key === \"object\") {\n key = key.key as string;\n }\n let value: string | Array<string> | null | unknown;\n if (typeof key === \"function\") {\n value = key(item);\n } else if (item === null) {\n value = null;\n } else if (Object.hasOwnProperty.call(item, key)) {\n value = (item as IndexableByString)[key];\n } else if (key.includes(\".\")) {\n return getNestedValues<ItemType>(key, item);\n } else {\n value = null;\n }\n\n // because `value` can also be undefined\n if (value === null) {\n return [];\n }\n if (Array.isArray(value)) {\n return value;\n }\n return [String(value)];\n}\n\n/**\n * Given path: \"foo.bar.baz\"\n * And item: \\{foo: \\{bar: \\{baz: 'buzz'\\}\\}\\}\n * -\\> 'buzz'\n *\n * @param path - a dot-separated set of keys\n * @param item - the item to get the value from\n */\nfunction getNestedValues<ItemType>(\n path: string,\n item: ItemType\n): Array<string> {\n const keys = path.split(\".\");\n\n type ValueA = Array<ItemType | IndexableByString | string>;\n let values: ValueA = [item];\n\n for (let i = 0, I = keys.length; i < I; i++) {\n const nestedKey = keys[i];\n let nestedValues: ValueA = [];\n\n for (let j = 0, J = values.length; j < J; j++) {\n const nestedItem = values[j];\n\n if (nestedItem === null) {\n continue;\n }\n\n if (nestedKey && Object.hasOwnProperty.call(nestedItem, nestedKey)) {\n const nestedValue = (nestedItem as IndexableByString)[nestedKey];\n if (nestedValue !== null) {\n nestedValues.push(nestedValue as IndexableByString | string);\n }\n } else if (nestedItem && nestedKey === \"*\") {\n // ensure that values is an array\n nestedValues = [...nestedValues, nestedItem];\n }\n }\n\n values = nestedValues;\n }\n\n if (Array.isArray(values[0])) {\n // keep allowing the implicit wildcard for an array of strings at the end of\n // the path; don't use `.flat()` because that's not available in node.js v10\n const result: Array<string> = [];\n\n return result.concat(...(values as Array<string>));\n }\n // Based on our logic it should be an array of strings by now...\n // assuming the user's path terminated in strings\n return values as Array<string>;\n}\n\n/**\n * Gets all the values for the given keys in the given item and returns an array of those values\n * @param item - the item from which the values will be retrieved\n * @param keys - the keys to use to retrieve the values\n * @returns objects with \\{itemValue, attributes\\}\n */\nfunction getAllValuesToRank<ItemType>(\n item: ItemType,\n keys: ReadonlyArray<KeyOption<ItemType>>\n) {\n const allValues: Array<{ itemValue: string; attributes: KeyAttributes }> = [];\n for (let j = 0, J = keys.length; j < J; j++) {\n const key = keys[j];\n const attributes = getKeyAttributes(key!);\n const itemValues = getItemValues(item, key!);\n for (let i = 0, I = itemValues.length; i < I; i++) {\n allValues.push({\n itemValue: itemValues[i]!,\n attributes\n });\n }\n }\n return allValues;\n}\n\nconst defaultKeyAttributes = {\n maxRanking: Infinity as Ranking,\n minRanking: -Infinity as Ranking\n};\n/**\n * Gets all the attributes for the given key\n * @param key - the key from which the attributes will be retrieved\n * @returns object containing the key's attributes\n */\nfunction getKeyAttributes<ItemType>(key: KeyOption<ItemType>): KeyAttributes {\n if (typeof key === \"string\") {\n return defaultKeyAttributes;\n }\n return {\n ...defaultKeyAttributes,\n ...key\n };\n}\n\nexport { defaultBaseSortFn, matchSorter, rankings };\n\nexport type {\n KeyAttributes,\n KeyAttributesOptions,\n KeyOption,\n MatchSorterOptions,\n RankingInfo,\n ValueGetterKey\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"match-sorter.mjs","names":["defaultBaseSortFn: BaseSorter<unknown>","value: string | Array<string> | null | unknown","values: ValueA","nestedValues: ValueA","allValues: Array<{ itemValue: string; attributes: KeyAttributes }>"],"sources":["../src/match-sorter.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Stryke\n\n This code was released as part of the Stryke project. Stryke\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/stryke.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/stryke\n Documentation: https://docs.stormsoftware.com/projects/stryke\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { removeAccents } from \"./remove-accents\";\n\n/**\n * Forked from match-sorter by Kent C. Dodds\n */\n\ninterface KeyAttributes {\n threshold?: Ranking;\n maxRanking: Ranking;\n minRanking: Ranking;\n}\ninterface RankingInfo {\n rankedValue: string;\n rank: Ranking;\n keyIndex: number;\n keyThreshold: Ranking | undefined;\n}\n\ninterface ValueGetterKey<ItemType> {\n (item: ItemType): string | Array<string>;\n}\ninterface IndexedItem<ItemType> {\n item: ItemType;\n index: number;\n}\ninterface RankedItem<ItemType> extends RankingInfo, IndexedItem<ItemType> {}\n\ninterface BaseSorter<ItemType> {\n (a: RankedItem<ItemType>, b: RankedItem<ItemType>): number;\n}\n\ninterface Sorter<ItemType> {\n (matchItems: Array<RankedItem<ItemType>>): Array<RankedItem<ItemType>>;\n}\n\ninterface KeyAttributesOptions<ItemType> {\n key?: string | ValueGetterKey<ItemType>;\n threshold?: Ranking;\n maxRanking?: Ranking;\n minRanking?: Ranking;\n}\n\ntype KeyOption<ItemType> =\n | KeyAttributesOptions<ItemType>\n | ValueGetterKey<ItemType>\n | string;\n\ninterface MatchSorterOptions<ItemType = unknown> {\n keys?: ReadonlyArray<KeyOption<ItemType>>;\n threshold?: Ranking;\n baseSort?: BaseSorter<ItemType>;\n keepDiacritics?: boolean;\n sorter?: Sorter<ItemType>;\n}\ntype IndexableByString = Record<string, unknown>;\n\nconst rankings = {\n CASE_SENSITIVE_EQUAL: 7,\n EQUAL: 6,\n STARTS_WITH: 5,\n WORD_STARTS_WITH: 4,\n CONTAINS: 3,\n ACRONYM: 2,\n MATCHES: 1,\n NO_MATCH: 0\n} as const;\n\ntype Ranking = (typeof rankings)[keyof typeof rankings];\n\nconst defaultBaseSortFn: BaseSorter<unknown> = (a, b) =>\n String(a.rankedValue).localeCompare(String(b.rankedValue));\n\n/**\n * Takes an array of items and a value and returns a new array with the items that match the given value\n * @param items - the items to sort\n * @param value - the value to use for ranking\n * @param options - Some options to configure the sorter\n * @returns - the new sorted array\n */\nfunction matchSorter<ItemType = string>(\n items: ReadonlyArray<ItemType>,\n value: string,\n options: MatchSorterOptions<ItemType> = {}\n): Array<ItemType> {\n const {\n keys,\n threshold = rankings.MATCHES,\n baseSort = defaultBaseSortFn,\n sorter = matchedItems =>\n matchedItems.sort((a, b) => sortRankedValues(a, b, baseSort))\n } = options;\n const matchedItems = items.reduce(\n (ret: Array<RankedItem<ItemType>>, item: ItemType, index: number) =>\n reduceItemsToRanked(ret, item, index),\n []\n );\n\n return sorter(matchedItems).map(({ item }) => item);\n\n function reduceItemsToRanked(\n matches: Array<RankedItem<ItemType>>,\n item: ItemType,\n index: number\n ): Array<RankedItem<ItemType>> {\n const rankingInfo = getHighestRanking(item, keys, value, options);\n const { rank, keyThreshold = threshold } = rankingInfo;\n if (rank >= keyThreshold) {\n matches.push({\n ...rankingInfo,\n item,\n index\n });\n }\n return matches;\n }\n}\n\nmatchSorter.rankings = rankings;\n\n/**\n * Gets the highest ranking for value for the given item based on its values for the given keys\n * @param item - the item to rank\n * @param keys - the keys to get values from the item for the ranking\n * @param value - the value to rank against\n * @param options - options to control the ranking\n * @returns The highest ranking\n */\nfunction getHighestRanking<ItemType>(\n item: ItemType,\n keys: ReadonlyArray<KeyOption<ItemType>> | undefined,\n value: string,\n options: MatchSorterOptions<ItemType>\n): RankingInfo {\n if (!keys) {\n // if keys is not specified, then we assume the item given is ready to be matched\n const stringItem = item as unknown as string;\n\n return {\n // ends up being duplicate of 'item' in matches but consistent\n rankedValue: stringItem,\n rank: getMatchRanking(stringItem, value, options),\n keyIndex: -1,\n keyThreshold: options.threshold\n };\n }\n const valuesToRank = getAllValuesToRank(item, keys);\n\n return valuesToRank.reduce(\n (\n { rank, rankedValue, keyIndex, keyThreshold },\n { itemValue, attributes },\n i\n ) => {\n let newRank = getMatchRanking(itemValue, value, options);\n let newRankedValue = rankedValue;\n const { minRanking, maxRanking, threshold } = attributes;\n if (newRank < minRanking && newRank >= rankings.MATCHES) {\n newRank = minRanking;\n } else if (newRank > maxRanking) {\n newRank = maxRanking;\n }\n if (newRank > rank) {\n rank = newRank;\n keyIndex = i;\n keyThreshold = threshold;\n newRankedValue = itemValue;\n }\n return {\n rankedValue: newRankedValue,\n rank,\n keyIndex,\n keyThreshold\n };\n },\n {\n rankedValue: item as unknown as string,\n rank: rankings.NO_MATCH as Ranking,\n keyIndex: -1,\n keyThreshold: options.threshold\n }\n );\n}\n\n/**\n * Gives a rankings score based on how well the two strings match.\n * @param testString - the string to test against\n * @param stringToRank - the string to rank\n * @param options - options for the match (like keepDiacritics for comparison)\n * @returns the ranking for how well stringToRank matches testString\n */\nfunction getMatchRanking<ItemType>(\n testString: string,\n stringToRank: string,\n options: MatchSorterOptions<ItemType>\n): Ranking {\n testString = prepareValueForComparison(testString, options);\n stringToRank = prepareValueForComparison(stringToRank, options);\n\n // too long\n if (stringToRank.length > testString.length) {\n return rankings.NO_MATCH;\n }\n\n // case sensitive equals\n if (testString === stringToRank) {\n return rankings.CASE_SENSITIVE_EQUAL;\n }\n\n // Lower casing before further comparison\n testString = testString.toLowerCase();\n stringToRank = stringToRank.toLowerCase();\n\n // case insensitive equals\n if (testString === stringToRank) {\n return rankings.EQUAL;\n }\n\n // starts with\n if (testString.startsWith(stringToRank)) {\n return rankings.STARTS_WITH;\n }\n\n // word starts with\n if (testString.includes(` ${stringToRank}`)) {\n return rankings.WORD_STARTS_WITH;\n }\n\n // contains\n if (testString.includes(stringToRank)) {\n return rankings.CONTAINS;\n } else if (stringToRank.length === 1) {\n // If the only character in the given stringToRank\n // isn't even contained in the testString, then\n // it's definitely not a match.\n return rankings.NO_MATCH;\n }\n\n // acronym\n if (getAcronym(testString).includes(stringToRank)) {\n return rankings.ACRONYM;\n }\n\n // will return a number between rankings.MATCHES and\n // rankings.MATCHES + 1 depending on how close of a match it is.\n return getClosenessRanking(testString, stringToRank);\n}\n\n/**\n * Generates an acronym for a string.\n *\n * @param value - the string for which to produce the acronym\n * @returns the acronym\n */\nfunction getAcronym(value: string): string {\n let acronym = \"\";\n const wordsInString = value.split(\" \");\n for (const wordInString of wordsInString) {\n const splitByHyphenWords = wordInString.split(\"-\");\n for (const splitByHyphenWord of splitByHyphenWords) {\n acronym += splitByHyphenWord.slice(0, 1);\n }\n }\n return acronym;\n}\n\n/**\n * Returns a score based on how spread apart the\n * characters from the stringToRank are within the testString.\n * A number close to rankings.MATCHES represents a loose match. A number close\n * to rankings.MATCHES + 1 represents a tighter match.\n * @param testString - the string to test against\n * @param stringToRank - the string to rank\n * @returns the number between rankings.MATCHES and\n * rankings.MATCHES + 1 for how well stringToRank matches testString\n */\nfunction getClosenessRanking(\n testString: string,\n stringToRank: string\n): Ranking {\n let matchingInOrderCharCount = 0;\n let charNumber = 0;\n function findMatchingCharacter(\n matchChar: string,\n string: string,\n index: number\n ) {\n for (let j = index, J = string.length; j < J; j++) {\n const stringChar = string[j];\n if (stringChar === matchChar) {\n matchingInOrderCharCount += 1;\n return j + 1;\n }\n }\n return -1;\n }\n function getRanking(spread: number) {\n const spreadPercentage = 1 / spread;\n const inOrderPercentage = matchingInOrderCharCount / stringToRank.length;\n const ranking = rankings.MATCHES + inOrderPercentage * spreadPercentage;\n\n return ranking as Ranking;\n }\n const firstIndex = findMatchingCharacter(stringToRank[0]!, testString, 0);\n if (firstIndex < 0) {\n return rankings.NO_MATCH;\n }\n charNumber = firstIndex;\n for (let i = 1, I = stringToRank.length; i < I; i++) {\n const matchChar = stringToRank[i];\n charNumber = findMatchingCharacter(matchChar!, testString, charNumber);\n const found = charNumber > -1;\n if (!found) {\n return rankings.NO_MATCH;\n }\n }\n\n const spread = charNumber - firstIndex;\n\n return getRanking(spread);\n}\n\n/**\n * Sorts items that have a rank, index, and keyIndex\n * @param a - the first item to sort\n * @param b - the second item to sort\n * @returns -1 if a should come first, 1 if b should come first, 0 if equal\n */\nfunction sortRankedValues<ItemType>(\n a: RankedItem<ItemType>,\n b: RankedItem<ItemType>,\n baseSort: BaseSorter<ItemType>\n): number {\n const aFirst = -1;\n const bFirst = 1;\n const { rank: aRank, keyIndex: aKeyIndex } = a;\n const { rank: bRank, keyIndex: bKeyIndex } = b;\n const same = aRank === bRank;\n if (same) {\n if (aKeyIndex === bKeyIndex) {\n // use the base sort function as a tie-breaker\n return baseSort(a, b);\n }\n return aKeyIndex < bKeyIndex ? aFirst : bFirst;\n }\n return aRank > bRank ? aFirst : bFirst;\n}\n\n/**\n * Prepares value for comparison by stringifying it, removing diacritics (if specified)\n * @param value - the value to clean\n * @param options - options for the match (like keepDiacritics for comparison)\n * @returns the prepared value\n */\nfunction prepareValueForComparison<ItemType>(\n value: string,\n options: MatchSorterOptions<ItemType>\n): string {\n // value might not actually be a string at this point (we don't get to choose)\n // so part of preparing the value for comparison is ensure that it is a string\n value = `${value}`; // toString\n if (!options.keepDiacritics) {\n value = removeAccents(value);\n }\n return value;\n}\n\n/**\n * Gets value for key in item at arbitrarily nested keypath\n * @param item - the item\n * @param key - the potentially nested keypath or property callback\n * @returns - an array containing the value(s) at the nested keypath\n */\nfunction getItemValues<ItemType>(\n item: ItemType,\n key: KeyOption<ItemType>\n): Array<string> {\n if (typeof key === \"object\") {\n key = key.key as string;\n }\n let value: string | Array<string> | null | unknown;\n if (typeof key === \"function\") {\n value = key(item);\n } else if (item === null) {\n value = null;\n } else if (Object.hasOwnProperty.call(item, key)) {\n value = (item as IndexableByString)[key];\n } else if (key.includes(\".\")) {\n return getNestedValues<ItemType>(key, item);\n } else {\n value = null;\n }\n\n // because `value` can also be undefined\n if (value === null) {\n return [];\n }\n if (Array.isArray(value)) {\n return value;\n }\n return [String(value)];\n}\n\n/**\n * Given path: \"foo.bar.baz\"\n * And item: \\{foo: \\{bar: \\{baz: 'buzz'\\}\\}\\}\n * -\\> 'buzz'\n *\n * @param path - a dot-separated set of keys\n * @param item - the item to get the value from\n */\nfunction getNestedValues<ItemType>(\n path: string,\n item: ItemType\n): Array<string> {\n const keys = path.split(\".\");\n\n type ValueA = Array<ItemType | IndexableByString | string>;\n let values: ValueA = [item];\n\n for (let i = 0, I = keys.length; i < I; i++) {\n const nestedKey = keys[i];\n let nestedValues: ValueA = [];\n\n for (let j = 0, J = values.length; j < J; j++) {\n const nestedItem = values[j];\n\n if (nestedItem === null) {\n continue;\n }\n\n if (nestedKey && Object.hasOwnProperty.call(nestedItem, nestedKey)) {\n const nestedValue = (nestedItem as IndexableByString)[nestedKey];\n if (nestedValue !== null) {\n nestedValues.push(nestedValue as IndexableByString | string);\n }\n } else if (nestedItem && nestedKey === \"*\") {\n // ensure that values is an array\n nestedValues = [...nestedValues, nestedItem];\n }\n }\n\n values = nestedValues;\n }\n\n if (Array.isArray(values[0])) {\n // keep allowing the implicit wildcard for an array of strings at the end of\n // the path; don't use `.flat()` because that's not available in node.js v10\n const result: Array<string> = [];\n\n return result.concat(...(values as Array<string>));\n }\n // Based on our logic it should be an array of strings by now...\n // assuming the user's path terminated in strings\n return values as Array<string>;\n}\n\n/**\n * Gets all the values for the given keys in the given item and returns an array of those values\n * @param item - the item from which the values will be retrieved\n * @param keys - the keys to use to retrieve the values\n * @returns objects with \\{itemValue, attributes\\}\n */\nfunction getAllValuesToRank<ItemType>(\n item: ItemType,\n keys: ReadonlyArray<KeyOption<ItemType>>\n) {\n const allValues: Array<{ itemValue: string; attributes: KeyAttributes }> = [];\n for (let j = 0, J = keys.length; j < J; j++) {\n const key = keys[j];\n const attributes = getKeyAttributes(key!);\n const itemValues = getItemValues(item, key!);\n for (let i = 0, I = itemValues.length; i < I; i++) {\n allValues.push({\n itemValue: itemValues[i]!,\n attributes\n });\n }\n }\n return allValues;\n}\n\nconst defaultKeyAttributes = {\n maxRanking: Infinity as Ranking,\n minRanking: -Infinity as Ranking\n};\n/**\n * Gets all the attributes for the given key\n * @param key - the key from which the attributes will be retrieved\n * @returns object containing the key's attributes\n */\nfunction getKeyAttributes<ItemType>(key: KeyOption<ItemType>): KeyAttributes {\n if (typeof key === \"string\") {\n return defaultKeyAttributes;\n }\n return {\n ...defaultKeyAttributes,\n ...key\n };\n}\n\nexport { defaultBaseSortFn, matchSorter, rankings };\n\nexport type {\n KeyAttributes,\n KeyAttributesOptions,\n KeyOption,\n MatchSorterOptions,\n RankingInfo,\n ValueGetterKey\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"noop.d.cts","names":[],"sources":["../src/noop.ts"],"sourcesContent":[],"mappings":";;AAwBA;AAWA;;;;;cAXa;;;;;;;;;;iBAWS,SAAA,qBAA8B"}
1
+ {"version":3,"file":"noop.d.cts","names":[],"sources":["../src/noop.ts"],"sourcesContent":[],"mappings":";;AAyBA;AAWA;;;;;cAXa;;;;;;;;;;iBAWS,SAAA,qBAA8B"}
@@ -1 +1 @@
1
- {"version":3,"file":"noop.d.mts","names":[],"sources":["../src/noop.ts"],"sourcesContent":[],"mappings":";;AAwBA;AAWA;;;;;cAXa;;;;;;;;;;iBAWS,SAAA,qBAA8B"}
1
+ {"version":3,"file":"noop.d.mts","names":[],"sources":["../src/noop.ts"],"sourcesContent":[],"mappings":";;AAyBA;AAWA;;;;;cAXa;;;;;;;;;;iBAWS,SAAA,qBAA8B"}
package/dist/noop.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"noop.mjs","names":[],"sources":["../src/noop.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Stryke\n\n This code was released as part of the Stryke project. Stryke\n is maintained by Storm Software under the Apache-2.0 License, and is\n free for commercial and private use. For more information, please visit\n our licensing page.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/stryke\n Documentation: https://stormsoftware.com/projects/stryke/docs\n Contact: https://stormsoftware.com/contact\n License: https://stormsoftware.com/projects/stryke/license\n\n ------------------------------------------------------------------- */\n\n/**\n * A no op, or no-op, function for no operation\n *\n * @remarks Please see {@link https://dev.to/praneshpsg239/noop-in-javascript-478h | this article} for more information.\n *\n * @param _params - An optional parameter passed to the function. It can be anything (but is not used in any way)\n */\nexport const noop = (_params?: unknown): void => {};\n\n/**\n * An asynchronous no-operation function that does nothing.\n * This can be used as a placeholder or default function.\n *\n * @example\n * asyncNoop(); // Does nothing\n *\n * @returns This function returns a Promise that resolves to undefined.\n */\nexport async function asyncNoop(_params?: unknown): Promise<void> {}\n"],"mappings":";;;;;;;;AAwBA,MAAa,QAAQ,YAA4B;;;;;;;;;;AAWjD,eAAsB,UAAU,SAAkC"}
1
+ {"version":3,"file":"noop.mjs","names":[],"sources":["../src/noop.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Stryke\n\n This code was released as part of the Stryke project. Stryke\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/stryke.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/stryke\n Documentation: https://docs.stormsoftware.com/projects/stryke\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\n/**\n * A no op, or no-op, function for no operation\n *\n * @remarks Please see {@link https://dev.to/praneshpsg239/noop-in-javascript-478h | this article} for more information.\n *\n * @param _params - An optional parameter passed to the function. It can be anything (but is not used in any way)\n */\nexport const noop = (_params?: unknown): void => {};\n\n/**\n * An asynchronous no-operation function that does nothing.\n * This can be used as a placeholder or default function.\n *\n * @example\n * asyncNoop(); // Does nothing\n *\n * @returns This function returns a Promise that resolves to undefined.\n */\nexport async function asyncNoop(_params?: unknown): Promise<void> {}\n"],"mappings":";;;;;;;;AAyBA,MAAa,QAAQ,YAA4B;;;;;;;;;;AAWjD,eAAsB,UAAU,SAAkC"}
package/dist/omit.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"omit.mjs","names":[],"sources":["../src/omit.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software \n\n This code was released as part of a Storm Software project. The project\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/license.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software\n Documentation: https://stormsoftware.com/docs\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\n/**\n * Creates a new object with specified keys omitted.\n *\n * This function takes an object and an array of keys, and returns a new object that\n * excludes the properties corresponding to the specified keys.\n *\n * @param obj - The object to omit keys from.\n * @param keys - An array of keys to be omitted from the object.\n * @returns A new object with the specified keys omitted.\n *\n * @example\n * ```typescript\n * const obj = { a: 1, b: 2, c: 3 };\n * const result = omit(obj, ['b', 'c']);\n * // result will be { a: 1 }\n * ```\n */\nexport function omit<T extends Record<string, any>, K extends keyof T>(\n obj: T,\n keys: readonly K[]\n): Omit<T, K> {\n const result = { ...obj };\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (key) {\n delete result[key];\n }\n }\n\n return result as Omit<T, K>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAmCA,SAAgB,KACd,KACA,MACY;CACZ,MAAM,SAAS,EAAE,GAAG,KAAK;AAEzB,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;EACpC,MAAM,MAAM,KAAK;AACjB,MAAI,IACF,QAAO,OAAO;;AAIlB,QAAO"}
1
+ {"version":3,"file":"omit.mjs","names":[],"sources":["../src/omit.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Stryke\n\n This code was released as part of the Stryke project. Stryke\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/stryke.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/stryke\n Documentation: https://docs.stormsoftware.com/projects/stryke\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\n/**\n * Creates a new object with specified keys omitted.\n *\n * This function takes an object and an array of keys, and returns a new object that\n * excludes the properties corresponding to the specified keys.\n *\n * @param obj - The object to omit keys from.\n * @param keys - An array of keys to be omitted from the object.\n * @returns A new object with the specified keys omitted.\n *\n * @example\n * ```typescript\n * const obj = { a: 1, b: 2, c: 3 };\n * const result = omit(obj, ['b', 'c']);\n * // result will be { a: 1 }\n * ```\n */\nexport function omit<T extends Record<string, any>, K extends keyof T>(\n obj: T,\n keys: readonly K[]\n): Omit<T, K> {\n const result = { ...obj };\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (key) {\n delete result[key];\n }\n }\n\n return result as Omit<T, K>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAmCA,SAAgB,KACd,KACA,MACY;CACZ,MAAM,SAAS,EAAE,GAAG,KAAK;AAEzB,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;EACpC,MAAM,MAAM,KAAK;AACjB,MAAI,IACF,QAAO,OAAO;;AAIlB,QAAO"}
package/dist/pick.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pick.mjs","names":[],"sources":["../src/pick.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software \n\n This code was released as part of a Storm Software project. The project\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/license.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software\n Documentation: https://stormsoftware.com/docs\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\n/**\n * Creates a new object composed of the picked object properties.\n *\n * This function takes an object and an array of keys, and returns a new object that\n * includes only the properties corresponding to the specified keys.\n *\n * @param obj - The object to pick keys from.\n * @param keys - An array of keys to be picked from the object.\n * @returns A new object with the specified keys picked.\n *\n * @example\n * ```typescript\n * const obj = { a: 1, b: 2, c: 3 };\n * const result = pick(obj, ['a', 'c']);\n * // result will be { a: 1, c: 3 }\n * ```\n */\nexport function pick<T extends Record<string, any>, K extends keyof T>(\n obj: T,\n keys: readonly K[]\n): Pick<T, K> {\n const result = {} as Pick<T, K>;\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n\n if (key && Object.hasOwn(obj, key)) {\n result[key] = obj[key];\n }\n }\n\n return result;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAmCA,SAAgB,KACd,KACA,MACY;CACZ,MAAM,SAAS,EAAE;AAEjB,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;EACpC,MAAM,MAAM,KAAK;AAEjB,MAAI,OAAO,OAAO,OAAO,KAAK,IAAI,CAChC,QAAO,OAAO,IAAI;;AAItB,QAAO"}
1
+ {"version":3,"file":"pick.mjs","names":[],"sources":["../src/pick.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Stryke\n\n This code was released as part of the Stryke project. Stryke\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/stryke.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/stryke\n Documentation: https://docs.stormsoftware.com/projects/stryke\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\n/**\n * Creates a new object composed of the picked object properties.\n *\n * This function takes an object and an array of keys, and returns a new object that\n * includes only the properties corresponding to the specified keys.\n *\n * @param obj - The object to pick keys from.\n * @param keys - An array of keys to be picked from the object.\n * @returns A new object with the specified keys picked.\n *\n * @example\n * ```typescript\n * const obj = { a: 1, b: 2, c: 3 };\n * const result = pick(obj, ['a', 'c']);\n * // result will be { a: 1, c: 3 }\n * ```\n */\nexport function pick<T extends Record<string, any>, K extends keyof T>(\n obj: T,\n keys: readonly K[]\n): Pick<T, K> {\n const result = {} as Pick<T, K>;\n\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n\n if (key && Object.hasOwn(obj, key)) {\n result[key] = obj[key];\n }\n }\n\n return result;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAmCA,SAAgB,KACd,KACA,MACY;CACZ,MAAM,SAAS,EAAE;AAEjB,MAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;EACpC,MAAM,MAAM,KAAK;AAEjB,MAAI,OAAO,OAAO,OAAO,KAAK,IAAI,CAChC,QAAO,OAAO,IAAI;;AAItB,QAAO"}
@@ -401,15 +401,13 @@ const characterMap = {
401
401
  Z̧: "Z",
402
402
  z̧: "z"
403
403
  };
404
- const chars = Object.keys(characterMap).join("|");
405
- const allAccents = new RegExp(chars, "g");
406
404
  /**
407
405
  * Removes accents from a string.
408
406
  *
409
407
  * @param str - The string to remove accents from
410
408
  * @returns The string without accents
411
409
  */
412
- const removeAccents = (str) => str.replace(allAccents, (match) => characterMap[match]);
410
+ const removeAccents = (str) => str.replace(new RegExp(Object.keys(characterMap).join("|"), "g"), (match) => characterMap[match]);
413
411
 
414
412
  //#endregion
415
413
  exports.characterMap = characterMap;
@@ -1 +1 @@
1
- {"version":3,"file":"remove-accents.d.cts","names":[],"sources":["../src/remove-accents.ts"],"sourcesContent":[],"mappings":";cAiBa,cAAc;AAA3B;AA2ZA;;;;;cAAa"}
1
+ {"version":3,"file":"remove-accents.d.cts","names":[],"sources":["../src/remove-accents.ts"],"sourcesContent":[],"mappings":";cAkBa,cAAc;AAA3B;AAwZA;;;;;cAAa"}
@@ -1 +1 @@
1
- {"version":3,"file":"remove-accents.d.mts","names":[],"sources":["../src/remove-accents.ts"],"sourcesContent":[],"mappings":";cAiBa,cAAc;AAA3B;AA2ZA;;;;;cAAa"}
1
+ {"version":3,"file":"remove-accents.d.mts","names":[],"sources":["../src/remove-accents.ts"],"sourcesContent":[],"mappings":";cAkBa,cAAc;AAA3B;AAwZA;;;;;cAAa"}
@@ -400,15 +400,13 @@ const characterMap = {
400
400
  Z̧: "Z",
401
401
  z̧: "z"
402
402
  };
403
- const chars = Object.keys(characterMap).join("|");
404
- const allAccents = new RegExp(chars, "g");
405
403
  /**
406
404
  * Removes accents from a string.
407
405
  *
408
406
  * @param str - The string to remove accents from
409
407
  * @returns The string without accents
410
408
  */
411
- const removeAccents = (str) => str.replace(allAccents, (match) => characterMap[match]);
409
+ const removeAccents = (str) => str.replace(new RegExp(Object.keys(characterMap).join("|"), "g"), (match) => characterMap[match]);
412
410
 
413
411
  //#endregion
414
412
  export { characterMap, removeAccents };
@@ -1 +1 @@
1
- {"version":3,"file":"remove-accents.mjs","names":["characterMap: Record<string, string>"],"sources":["../src/remove-accents.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Stryke\n\n This code was released as part of the Stryke project. Stryke\n is maintained by Storm Software under the Apache-2.0 License, and is\n free for commercial and private use. For more information, please visit\n our licensing page.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/stryke\n Documentation: https://stormsoftware.com/projects/stryke/docs\n Contact: https://stormsoftware.com/contact\n License: https://stormsoftware.com/projects/stryke/license\n\n ------------------------------------------------------------------- */\n\nexport const characterMap: Record<string, string> = {\n À: \"A\",\n Á: \"A\",\n Â: \"A\",\n Ã: \"A\",\n Ä: \"A\",\n Å: \"A\",\n Ấ: \"A\",\n Ắ: \"A\",\n Ẳ: \"A\",\n Ẵ: \"A\",\n Ặ: \"A\",\n Æ: \"AE\",\n Ầ: \"A\",\n Ằ: \"A\",\n Ȃ: \"A\",\n Ç: \"C\",\n Ḉ: \"C\",\n È: \"E\",\n É: \"E\",\n Ê: \"E\",\n Ë: \"E\",\n Ế: \"E\",\n Ḗ: \"E\",\n Ề: \"E\",\n Ḕ: \"E\",\n Ḝ: \"E\",\n Ȇ: \"E\",\n Ì: \"I\",\n Í: \"I\",\n Î: \"I\",\n Ï: \"I\",\n Ḯ: \"I\",\n Ȋ: \"I\",\n Ð: \"D\",\n Ñ: \"N\",\n Ò: \"O\",\n Ó: \"O\",\n Ô: \"O\",\n Õ: \"O\",\n Ö: \"O\",\n Ø: \"O\",\n Ố: \"O\",\n Ṍ: \"O\",\n Ṓ: \"O\",\n Ȏ: \"O\",\n Ù: \"U\",\n Ú: \"U\",\n Û: \"U\",\n Ü: \"U\",\n Ý: \"Y\",\n à: \"a\",\n á: \"a\",\n â: \"a\",\n ã: \"a\",\n ä: \"a\",\n å: \"a\",\n ấ: \"a\",\n ắ: \"a\",\n ẳ: \"a\",\n ẵ: \"a\",\n ặ: \"a\",\n æ: \"ae\",\n ầ: \"a\",\n ằ: \"a\",\n ȃ: \"a\",\n ç: \"c\",\n ḉ: \"c\",\n è: \"e\",\n é: \"e\",\n ê: \"e\",\n ë: \"e\",\n ế: \"e\",\n ḗ: \"e\",\n ề: \"e\",\n ḕ: \"e\",\n ḝ: \"e\",\n ȇ: \"e\",\n ì: \"i\",\n í: \"i\",\n î: \"i\",\n ï: \"i\",\n ḯ: \"i\",\n ȋ: \"i\",\n ð: \"d\",\n ñ: \"n\",\n ò: \"o\",\n ó: \"o\",\n ô: \"o\",\n õ: \"o\",\n ö: \"o\",\n ø: \"o\",\n ố: \"o\",\n ṍ: \"o\",\n ṓ: \"o\",\n ȏ: \"o\",\n ù: \"u\",\n ú: \"u\",\n û: \"u\",\n ü: \"u\",\n ý: \"y\",\n ÿ: \"y\",\n Ā: \"A\",\n ā: \"a\",\n Ă: \"A\",\n ă: \"a\",\n Ą: \"A\",\n ą: \"a\",\n Ć: \"C\",\n ć: \"c\",\n Ĉ: \"C\",\n ĉ: \"c\",\n Ċ: \"C\",\n ċ: \"c\",\n Č: \"C\",\n č: \"c\",\n C̆: \"C\",\n c̆: \"c\",\n Ď: \"D\",\n ď: \"d\",\n Đ: \"D\",\n đ: \"d\",\n Ē: \"E\",\n ē: \"e\",\n Ĕ: \"E\",\n ĕ: \"e\",\n Ė: \"E\",\n ė: \"e\",\n Ę: \"E\",\n ę: \"e\",\n Ě: \"E\",\n ě: \"e\",\n Ĝ: \"G\",\n Ǵ: \"G\",\n ĝ: \"g\",\n ǵ: \"g\",\n Ğ: \"G\",\n ğ: \"g\",\n Ġ: \"G\",\n ġ: \"g\",\n Ģ: \"G\",\n ģ: \"g\",\n Ĥ: \"H\",\n ĥ: \"h\",\n Ħ: \"H\",\n ħ: \"h\",\n Ḫ: \"H\",\n ḫ: \"h\",\n Ĩ: \"I\",\n ĩ: \"i\",\n Ī: \"I\",\n ī: \"i\",\n Ĭ: \"I\",\n ĭ: \"i\",\n Į: \"I\",\n į: \"i\",\n İ: \"I\",\n ı: \"i\",\n IJ: \"IJ\",\n ij: \"ij\",\n Ĵ: \"J\",\n ĵ: \"j\",\n Ķ: \"K\",\n ķ: \"k\",\n Ḱ: \"K\",\n ḱ: \"k\",\n K̆: \"K\",\n k̆: \"k\",\n Ĺ: \"L\",\n ĺ: \"l\",\n Ļ: \"L\",\n ļ: \"l\",\n Ľ: \"L\",\n ľ: \"l\",\n Ŀ: \"L\",\n ŀ: \"l\",\n Ł: \"l\",\n ł: \"l\",\n Ḿ: \"M\",\n ḿ: \"m\",\n M̆: \"M\",\n m̆: \"m\",\n Ń: \"N\",\n ń: \"n\",\n Ņ: \"N\",\n ņ: \"n\",\n Ň: \"N\",\n ň: \"n\",\n ʼn: \"n\",\n N̆: \"N\",\n n̆: \"n\",\n Ō: \"O\",\n ō: \"o\",\n Ŏ: \"O\",\n ŏ: \"o\",\n Ő: \"O\",\n ő: \"o\",\n Œ: \"OE\",\n œ: \"oe\",\n P̆: \"P\",\n p̆: \"p\",\n Ŕ: \"R\",\n ŕ: \"r\",\n Ŗ: \"R\",\n ŗ: \"r\",\n Ř: \"R\",\n ř: \"r\",\n R̆: \"R\",\n r̆: \"r\",\n Ȓ: \"R\",\n ȓ: \"r\",\n Ś: \"S\",\n ś: \"s\",\n Ŝ: \"S\",\n ŝ: \"s\",\n Ş: \"S\",\n Ș: \"S\",\n ș: \"s\",\n ş: \"s\",\n Š: \"S\",\n š: \"s\",\n Ţ: \"T\",\n ţ: \"t\",\n ț: \"t\",\n Ț: \"T\",\n Ť: \"T\",\n ť: \"t\",\n Ŧ: \"T\",\n ŧ: \"t\",\n T̆: \"T\",\n t̆: \"t\",\n Ũ: \"U\",\n ũ: \"u\",\n Ū: \"U\",\n ū: \"u\",\n Ŭ: \"U\",\n ŭ: \"u\",\n Ů: \"U\",\n ů: \"u\",\n Ű: \"U\",\n ű: \"u\",\n Ų: \"U\",\n ų: \"u\",\n Ȗ: \"U\",\n ȗ: \"u\",\n V̆: \"V\",\n v̆: \"v\",\n Ŵ: \"W\",\n ŵ: \"w\",\n Ẃ: \"W\",\n ẃ: \"w\",\n X̆: \"X\",\n x̆: \"x\",\n Ŷ: \"Y\",\n ŷ: \"y\",\n Ÿ: \"Y\",\n Y̆: \"Y\",\n y̆: \"y\",\n Ź: \"Z\",\n ź: \"z\",\n Ż: \"Z\",\n ż: \"z\",\n Ž: \"Z\",\n ž: \"z\",\n ſ: \"s\",\n ƒ: \"f\",\n Ơ: \"O\",\n ơ: \"o\",\n Ư: \"U\",\n ư: \"u\",\n Ǎ: \"A\",\n ǎ: \"a\",\n Ǐ: \"I\",\n ǐ: \"i\",\n Ǒ: \"O\",\n ǒ: \"o\",\n Ǔ: \"U\",\n ǔ: \"u\",\n Ǖ: \"U\",\n ǖ: \"u\",\n Ǘ: \"U\",\n ǘ: \"u\",\n Ǚ: \"U\",\n ǚ: \"u\",\n Ǜ: \"U\",\n ǜ: \"u\",\n Ứ: \"U\",\n ứ: \"u\",\n Ṹ: \"U\",\n ṹ: \"u\",\n Ǻ: \"A\",\n ǻ: \"a\",\n Ǽ: \"AE\",\n ǽ: \"ae\",\n Ǿ: \"O\",\n ǿ: \"o\",\n Þ: \"TH\",\n þ: \"th\",\n Ṕ: \"P\",\n ṕ: \"p\",\n Ṥ: \"S\",\n ṥ: \"s\",\n X́: \"X\",\n x́: \"x\",\n Ѓ: \"Г\",\n ѓ: \"г\",\n Ќ: \"К\",\n ќ: \"к\",\n A̋: \"A\",\n a̋: \"a\",\n E̋: \"E\",\n e̋: \"e\",\n I̋: \"I\",\n i̋: \"i\",\n Ǹ: \"N\",\n ǹ: \"n\",\n Ồ: \"O\",\n ồ: \"o\",\n Ṑ: \"O\",\n ṑ: \"o\",\n Ừ: \"U\",\n ừ: \"u\",\n Ẁ: \"W\",\n ẁ: \"w\",\n Ỳ: \"Y\",\n ỳ: \"y\",\n Ȁ: \"A\",\n ȁ: \"a\",\n Ȅ: \"E\",\n ȅ: \"e\",\n Ȉ: \"I\",\n ȉ: \"i\",\n Ȍ: \"O\",\n ȍ: \"o\",\n Ȑ: \"R\",\n ȑ: \"r\",\n Ȕ: \"U\",\n ȕ: \"u\",\n B̌: \"B\",\n b̌: \"b\",\n Č̣: \"C\",\n č̣: \"c\",\n Ê̌: \"E\",\n ê̌: \"e\",\n F̌: \"F\",\n f̌: \"f\",\n Ǧ: \"G\",\n ǧ: \"g\",\n Ȟ: \"H\",\n ȟ: \"h\",\n J̌: \"J\",\n ǰ: \"j\",\n Ǩ: \"K\",\n ǩ: \"k\",\n M̌: \"M\",\n m̌: \"m\",\n P̌: \"P\",\n p̌: \"p\",\n Q̌: \"Q\",\n q̌: \"q\",\n Ř̩: \"R\",\n ř̩: \"r\",\n Ṧ: \"S\",\n ṧ: \"s\",\n V̌: \"V\",\n v̌: \"v\",\n W̌: \"W\",\n w̌: \"w\",\n X̌: \"X\",\n x̌: \"x\",\n Y̌: \"Y\",\n y̌: \"y\",\n A̧: \"A\",\n a̧: \"a\",\n B̧: \"B\",\n b̧: \"b\",\n Ḑ: \"D\",\n ḑ: \"d\",\n Ȩ: \"E\",\n ȩ: \"e\",\n Ɛ̧: \"E\",\n ɛ̧: \"e\",\n Ḩ: \"H\",\n ḩ: \"h\",\n I̧: \"I\",\n i̧: \"i\",\n Ɨ̧: \"I\",\n ɨ̧: \"i\",\n M̧: \"M\",\n m̧: \"m\",\n O̧: \"O\",\n o̧: \"o\",\n Q̧: \"Q\",\n q̧: \"q\",\n U̧: \"U\",\n u̧: \"u\",\n X̧: \"X\",\n x̧: \"x\",\n Z̧: \"Z\",\n z̧: \"z\"\n};\n\nconst chars = Object.keys(characterMap).join(\"|\");\nconst allAccents = new RegExp(chars, \"g\");\n\n/**\n * Removes accents from a string.\n *\n * @param str - The string to remove accents from\n * @returns The string without accents\n */\nexport const removeAccents = (str: string) =>\n str.replace(allAccents, match => characterMap[match]!);\n"],"mappings":";AAiBA,MAAaA,eAAuC;CAClD,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACL;AAED,MAAM,QAAQ,OAAO,KAAK,aAAa,CAAC,KAAK,IAAI;AACjD,MAAM,aAAa,IAAI,OAAO,OAAO,IAAI;;;;;;;AAQzC,MAAa,iBAAiB,QAC5B,IAAI,QAAQ,aAAY,UAAS,aAAa,OAAQ"}
1
+ {"version":3,"file":"remove-accents.mjs","names":["characterMap: Record<string, string>"],"sources":["../src/remove-accents.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Stryke\n\n This code was released as part of the Stryke project. Stryke\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/stryke.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/stryke\n Documentation: https://docs.stormsoftware.com/projects/stryke\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nexport const characterMap: Record<string, string> = {\n À: \"A\",\n Á: \"A\",\n Â: \"A\",\n Ã: \"A\",\n Ä: \"A\",\n Å: \"A\",\n Ấ: \"A\",\n Ắ: \"A\",\n Ẳ: \"A\",\n Ẵ: \"A\",\n Ặ: \"A\",\n Æ: \"AE\",\n Ầ: \"A\",\n Ằ: \"A\",\n Ȃ: \"A\",\n Ç: \"C\",\n Ḉ: \"C\",\n È: \"E\",\n É: \"E\",\n Ê: \"E\",\n Ë: \"E\",\n Ế: \"E\",\n Ḗ: \"E\",\n Ề: \"E\",\n Ḕ: \"E\",\n Ḝ: \"E\",\n Ȇ: \"E\",\n Ì: \"I\",\n Í: \"I\",\n Î: \"I\",\n Ï: \"I\",\n Ḯ: \"I\",\n Ȋ: \"I\",\n Ð: \"D\",\n Ñ: \"N\",\n Ò: \"O\",\n Ó: \"O\",\n Ô: \"O\",\n Õ: \"O\",\n Ö: \"O\",\n Ø: \"O\",\n Ố: \"O\",\n Ṍ: \"O\",\n Ṓ: \"O\",\n Ȏ: \"O\",\n Ù: \"U\",\n Ú: \"U\",\n Û: \"U\",\n Ü: \"U\",\n Ý: \"Y\",\n à: \"a\",\n á: \"a\",\n â: \"a\",\n ã: \"a\",\n ä: \"a\",\n å: \"a\",\n ấ: \"a\",\n ắ: \"a\",\n ẳ: \"a\",\n ẵ: \"a\",\n ặ: \"a\",\n æ: \"ae\",\n ầ: \"a\",\n ằ: \"a\",\n ȃ: \"a\",\n ç: \"c\",\n ḉ: \"c\",\n è: \"e\",\n é: \"e\",\n ê: \"e\",\n ë: \"e\",\n ế: \"e\",\n ḗ: \"e\",\n ề: \"e\",\n ḕ: \"e\",\n ḝ: \"e\",\n ȇ: \"e\",\n ì: \"i\",\n í: \"i\",\n î: \"i\",\n ï: \"i\",\n ḯ: \"i\",\n ȋ: \"i\",\n ð: \"d\",\n ñ: \"n\",\n ò: \"o\",\n ó: \"o\",\n ô: \"o\",\n õ: \"o\",\n ö: \"o\",\n ø: \"o\",\n ố: \"o\",\n ṍ: \"o\",\n ṓ: \"o\",\n ȏ: \"o\",\n ù: \"u\",\n ú: \"u\",\n û: \"u\",\n ü: \"u\",\n ý: \"y\",\n ÿ: \"y\",\n Ā: \"A\",\n ā: \"a\",\n Ă: \"A\",\n ă: \"a\",\n Ą: \"A\",\n ą: \"a\",\n Ć: \"C\",\n ć: \"c\",\n Ĉ: \"C\",\n ĉ: \"c\",\n Ċ: \"C\",\n ċ: \"c\",\n Č: \"C\",\n č: \"c\",\n C̆: \"C\",\n c̆: \"c\",\n Ď: \"D\",\n ď: \"d\",\n Đ: \"D\",\n đ: \"d\",\n Ē: \"E\",\n ē: \"e\",\n Ĕ: \"E\",\n ĕ: \"e\",\n Ė: \"E\",\n ė: \"e\",\n Ę: \"E\",\n ę: \"e\",\n Ě: \"E\",\n ě: \"e\",\n Ĝ: \"G\",\n Ǵ: \"G\",\n ĝ: \"g\",\n ǵ: \"g\",\n Ğ: \"G\",\n ğ: \"g\",\n Ġ: \"G\",\n ġ: \"g\",\n Ģ: \"G\",\n ģ: \"g\",\n Ĥ: \"H\",\n ĥ: \"h\",\n Ħ: \"H\",\n ħ: \"h\",\n Ḫ: \"H\",\n ḫ: \"h\",\n Ĩ: \"I\",\n ĩ: \"i\",\n Ī: \"I\",\n ī: \"i\",\n Ĭ: \"I\",\n ĭ: \"i\",\n Į: \"I\",\n į: \"i\",\n İ: \"I\",\n ı: \"i\",\n IJ: \"IJ\",\n ij: \"ij\",\n Ĵ: \"J\",\n ĵ: \"j\",\n Ķ: \"K\",\n ķ: \"k\",\n Ḱ: \"K\",\n ḱ: \"k\",\n K̆: \"K\",\n k̆: \"k\",\n Ĺ: \"L\",\n ĺ: \"l\",\n Ļ: \"L\",\n ļ: \"l\",\n Ľ: \"L\",\n ľ: \"l\",\n Ŀ: \"L\",\n ŀ: \"l\",\n Ł: \"l\",\n ł: \"l\",\n Ḿ: \"M\",\n ḿ: \"m\",\n M̆: \"M\",\n m̆: \"m\",\n Ń: \"N\",\n ń: \"n\",\n Ņ: \"N\",\n ņ: \"n\",\n Ň: \"N\",\n ň: \"n\",\n ʼn: \"n\",\n N̆: \"N\",\n n̆: \"n\",\n Ō: \"O\",\n ō: \"o\",\n Ŏ: \"O\",\n ŏ: \"o\",\n Ő: \"O\",\n ő: \"o\",\n Œ: \"OE\",\n œ: \"oe\",\n P̆: \"P\",\n p̆: \"p\",\n Ŕ: \"R\",\n ŕ: \"r\",\n Ŗ: \"R\",\n ŗ: \"r\",\n Ř: \"R\",\n ř: \"r\",\n R̆: \"R\",\n r̆: \"r\",\n Ȓ: \"R\",\n ȓ: \"r\",\n Ś: \"S\",\n ś: \"s\",\n Ŝ: \"S\",\n ŝ: \"s\",\n Ş: \"S\",\n Ș: \"S\",\n ș: \"s\",\n ş: \"s\",\n Š: \"S\",\n š: \"s\",\n Ţ: \"T\",\n ţ: \"t\",\n ț: \"t\",\n Ț: \"T\",\n Ť: \"T\",\n ť: \"t\",\n Ŧ: \"T\",\n ŧ: \"t\",\n T̆: \"T\",\n t̆: \"t\",\n Ũ: \"U\",\n ũ: \"u\",\n Ū: \"U\",\n ū: \"u\",\n Ŭ: \"U\",\n ŭ: \"u\",\n Ů: \"U\",\n ů: \"u\",\n Ű: \"U\",\n ű: \"u\",\n Ų: \"U\",\n ų: \"u\",\n Ȗ: \"U\",\n ȗ: \"u\",\n V̆: \"V\",\n v̆: \"v\",\n Ŵ: \"W\",\n ŵ: \"w\",\n Ẃ: \"W\",\n ẃ: \"w\",\n X̆: \"X\",\n x̆: \"x\",\n Ŷ: \"Y\",\n ŷ: \"y\",\n Ÿ: \"Y\",\n Y̆: \"Y\",\n y̆: \"y\",\n Ź: \"Z\",\n ź: \"z\",\n Ż: \"Z\",\n ż: \"z\",\n Ž: \"Z\",\n ž: \"z\",\n ſ: \"s\",\n ƒ: \"f\",\n Ơ: \"O\",\n ơ: \"o\",\n Ư: \"U\",\n ư: \"u\",\n Ǎ: \"A\",\n ǎ: \"a\",\n Ǐ: \"I\",\n ǐ: \"i\",\n Ǒ: \"O\",\n ǒ: \"o\",\n Ǔ: \"U\",\n ǔ: \"u\",\n Ǖ: \"U\",\n ǖ: \"u\",\n Ǘ: \"U\",\n ǘ: \"u\",\n Ǚ: \"U\",\n ǚ: \"u\",\n Ǜ: \"U\",\n ǜ: \"u\",\n Ứ: \"U\",\n ứ: \"u\",\n Ṹ: \"U\",\n ṹ: \"u\",\n Ǻ: \"A\",\n ǻ: \"a\",\n Ǽ: \"AE\",\n ǽ: \"ae\",\n Ǿ: \"O\",\n ǿ: \"o\",\n Þ: \"TH\",\n þ: \"th\",\n Ṕ: \"P\",\n ṕ: \"p\",\n Ṥ: \"S\",\n ṥ: \"s\",\n X́: \"X\",\n x́: \"x\",\n Ѓ: \"Г\",\n ѓ: \"г\",\n Ќ: \"К\",\n ќ: \"к\",\n A̋: \"A\",\n a̋: \"a\",\n E̋: \"E\",\n e̋: \"e\",\n I̋: \"I\",\n i̋: \"i\",\n Ǹ: \"N\",\n ǹ: \"n\",\n Ồ: \"O\",\n ồ: \"o\",\n Ṑ: \"O\",\n ṑ: \"o\",\n Ừ: \"U\",\n ừ: \"u\",\n Ẁ: \"W\",\n ẁ: \"w\",\n Ỳ: \"Y\",\n ỳ: \"y\",\n Ȁ: \"A\",\n ȁ: \"a\",\n Ȅ: \"E\",\n ȅ: \"e\",\n Ȉ: \"I\",\n ȉ: \"i\",\n Ȍ: \"O\",\n ȍ: \"o\",\n Ȑ: \"R\",\n ȑ: \"r\",\n Ȕ: \"U\",\n ȕ: \"u\",\n B̌: \"B\",\n b̌: \"b\",\n Č̣: \"C\",\n č̣: \"c\",\n Ê̌: \"E\",\n ê̌: \"e\",\n F̌: \"F\",\n f̌: \"f\",\n Ǧ: \"G\",\n ǧ: \"g\",\n Ȟ: \"H\",\n ȟ: \"h\",\n J̌: \"J\",\n ǰ: \"j\",\n Ǩ: \"K\",\n ǩ: \"k\",\n M̌: \"M\",\n m̌: \"m\",\n P̌: \"P\",\n p̌: \"p\",\n Q̌: \"Q\",\n q̌: \"q\",\n Ř̩: \"R\",\n ř̩: \"r\",\n Ṧ: \"S\",\n ṧ: \"s\",\n V̌: \"V\",\n v̌: \"v\",\n W̌: \"W\",\n w̌: \"w\",\n X̌: \"X\",\n x̌: \"x\",\n Y̌: \"Y\",\n y̌: \"y\",\n A̧: \"A\",\n a̧: \"a\",\n B̧: \"B\",\n b̧: \"b\",\n Ḑ: \"D\",\n ḑ: \"d\",\n Ȩ: \"E\",\n ȩ: \"e\",\n Ɛ̧: \"E\",\n ɛ̧: \"e\",\n Ḩ: \"H\",\n ḩ: \"h\",\n I̧: \"I\",\n i̧: \"i\",\n Ɨ̧: \"I\",\n ɨ̧: \"i\",\n M̧: \"M\",\n m̧: \"m\",\n O̧: \"O\",\n o̧: \"o\",\n Q̧: \"Q\",\n q̧: \"q\",\n U̧: \"U\",\n u̧: \"u\",\n X̧: \"X\",\n x̧: \"x\",\n Z̧: \"Z\",\n z̧: \"z\"\n};\n\n/**\n * Removes accents from a string.\n *\n * @param str - The string to remove accents from\n * @returns The string without accents\n */\nexport const removeAccents = (str: string) =>\n str.replace(\n // eslint-disable-next-line regexp/no-dupe-disjunctions, regexp/prefer-character-class\n new RegExp(Object.keys(characterMap).join(\"|\"), \"g\"),\n match => characterMap[match]!\n );\n"],"mappings":";AAkBA,MAAaA,eAAuC;CAClD,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACL;;;;;;;AAQD,MAAa,iBAAiB,QAC5B,IAAI,QAEF,IAAI,OAAO,OAAO,KAAK,aAAa,CAAC,KAAK,IAAI,EAAE,IAAI,GACpD,UAAS,aAAa,OACvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"remove-empty-items.d.cts","names":[],"sources":["../src/remove-empty-items.ts"],"sourcesContent":[],"mappings":";;AAuBA;;;;;cAAa,kCACL,4BACL,YAAY"}
1
+ {"version":3,"file":"remove-empty-items.d.cts","names":[],"sources":["../src/remove-empty-items.ts"],"sourcesContent":[],"mappings":";;AAwBA;;;;;cAAa,kCACL,4BACL,YAAY"}
@@ -1 +1 @@
1
- {"version":3,"file":"remove-empty-items.d.mts","names":[],"sources":["../src/remove-empty-items.ts"],"sourcesContent":[],"mappings":";;AAuBA;;;;;cAAa,kCACL,4BACL,YAAY"}
1
+ {"version":3,"file":"remove-empty-items.d.mts","names":[],"sources":["../src/remove-empty-items.ts"],"sourcesContent":[],"mappings":";;AAwBA;;;;;cAAa,kCACL,4BACL,YAAY"}
@@ -1 +1 @@
1
- {"version":3,"file":"remove-empty-items.mjs","names":[],"sources":["../src/remove-empty-items.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Stryke\n\n This code was released as part of the Stryke project. Stryke\n is maintained by Storm Software under the Apache-2.0 License, and is\n free for commercial and private use. For more information, please visit\n our licensing page.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/stryke\n Documentation: https://stormsoftware.com/projects/stryke/docs\n Contact: https://stormsoftware.com/contact\n License: https://stormsoftware.com/projects/stryke/license\n\n ------------------------------------------------------------------- */\n\n/**\n * Removes empty items from an array\n *\n * @param arr - The array to remove empty items from\n * @returns The array with empty items removed\n */\nexport const removeEmptyItems = <T = any>(\n arr: (T | undefined | null)[]\n): NonNullable<T>[] => arr.filter(Boolean) as NonNullable<T>[];\n"],"mappings":";;;;;;;AAuBA,MAAa,oBACX,QACqB,IAAI,OAAO,QAAQ"}
1
+ {"version":3,"file":"remove-empty-items.mjs","names":[],"sources":["../src/remove-empty-items.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Stryke\n\n This code was released as part of the Stryke project. Stryke\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/stryke.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/stryke\n Documentation: https://docs.stormsoftware.com/projects/stryke\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\n/**\n * Removes empty items from an array\n *\n * @param arr - The array to remove empty items from\n * @returns The array with empty items removed\n */\nexport const removeEmptyItems = <T = any>(\n arr: (T | undefined | null)[]\n): NonNullable<T>[] => arr.filter(Boolean) as NonNullable<T>[];\n"],"mappings":";;;;;;;AAwBA,MAAa,oBACX,QACqB,IAAI,OAAO,QAAQ"}
@@ -12,14 +12,14 @@
12
12
  * @example
13
13
  * const sema = new Semaphore(2);
14
14
  *
15
- * async function task() {
15
+ * async function task() \{
16
16
  * await sema.acquire();
17
- * try {
17
+ * try \{
18
18
  * // This code can only be executed by two tasks at the same time
19
- * } finally {
19
+ * \} finally \{
20
20
  * sema.release();
21
- * }
22
- * }
21
+ * \}
22
+ * \}
23
23
  *
24
24
  * task();
25
25
  * task();
@@ -82,14 +82,14 @@ var Semaphore = class {
82
82
  * @example
83
83
  * const sema = new Semaphore(1);
84
84
  *
85
- * async function task() {
85
+ * async function task() \{
86
86
  * await sema.acquire();
87
- * try {
87
+ * try \{
88
88
  * // This code can only be executed by two tasks at the same time
89
- * } finally {
89
+ * \} finally \{
90
90
  * sema.release(); // Allows another waiting task to proceed.
91
- * }
92
- * }
91
+ * \}
92
+ * \}
93
93
  */
94
94
  release() {
95
95
  const deferredTask = this.deferredTasks.shift();
@@ -11,14 +11,14 @@
11
11
  * @example
12
12
  * const sema = new Semaphore(2);
13
13
  *
14
- * async function task() {
14
+ * async function task() \{
15
15
  * await sema.acquire();
16
- * try {
16
+ * try \{
17
17
  * // This code can only be executed by two tasks at the same time
18
- * } finally {
18
+ * \} finally \{
19
19
  * sema.release();
20
- * }
21
- * }
20
+ * \}
21
+ * \}
22
22
  *
23
23
  * task();
24
24
  * task();
@@ -70,14 +70,14 @@ declare class Semaphore {
70
70
  * @example
71
71
  * const sema = new Semaphore(1);
72
72
  *
73
- * async function task() {
73
+ * async function task() \{
74
74
  * await sema.acquire();
75
- * try {
75
+ * try \{
76
76
  * // This code can only be executed by two tasks at the same time
77
- * } finally {
77
+ * \} finally \{
78
78
  * sema.release(); // Allows another waiting task to proceed.
79
- * }
80
- * }
79
+ * \}
80
+ * \}
81
81
  */
82
82
  release(): void;
83
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"semaphore.d.cts","names":[],"sources":["../src/semaphore.ts"],"sourcesContent":[],"mappings":";;AA0CA;;;;;;;;;;;;;;;;;;;;;;;;cAAa,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA8CM"}
1
+ {"version":3,"file":"semaphore.d.cts","names":[],"sources":["../src/semaphore.ts"],"sourcesContent":[],"mappings":";;AA2CA;;;;;;;;;;;;;;;;;;;;;;;;cAAa,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA8CM"}
@@ -11,14 +11,14 @@
11
11
  * @example
12
12
  * const sema = new Semaphore(2);
13
13
  *
14
- * async function task() {
14
+ * async function task() \{
15
15
  * await sema.acquire();
16
- * try {
16
+ * try \{
17
17
  * // This code can only be executed by two tasks at the same time
18
- * } finally {
18
+ * \} finally \{
19
19
  * sema.release();
20
- * }
21
- * }
20
+ * \}
21
+ * \}
22
22
  *
23
23
  * task();
24
24
  * task();
@@ -70,14 +70,14 @@ declare class Semaphore {
70
70
  * @example
71
71
  * const sema = new Semaphore(1);
72
72
  *
73
- * async function task() {
73
+ * async function task() \{
74
74
  * await sema.acquire();
75
- * try {
75
+ * try \{
76
76
  * // This code can only be executed by two tasks at the same time
77
- * } finally {
77
+ * \} finally \{
78
78
  * sema.release(); // Allows another waiting task to proceed.
79
- * }
80
- * }
79
+ * \}
80
+ * \}
81
81
  */
82
82
  release(): void;
83
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"semaphore.d.mts","names":[],"sources":["../src/semaphore.ts"],"sourcesContent":[],"mappings":";;AA0CA;;;;;;;;;;;;;;;;;;;;;;;;cAAa,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA8CM"}
1
+ {"version":3,"file":"semaphore.d.mts","names":[],"sources":["../src/semaphore.ts"],"sourcesContent":[],"mappings":";;AA2CA;;;;;;;;;;;;;;;;;;;;;;;;cAAa,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA8CM"}
@@ -11,14 +11,14 @@
11
11
  * @example
12
12
  * const sema = new Semaphore(2);
13
13
  *
14
- * async function task() {
14
+ * async function task() \{
15
15
  * await sema.acquire();
16
- * try {
16
+ * try \{
17
17
  * // This code can only be executed by two tasks at the same time
18
- * } finally {
18
+ * \} finally \{
19
19
  * sema.release();
20
- * }
21
- * }
20
+ * \}
21
+ * \}
22
22
  *
23
23
  * task();
24
24
  * task();
@@ -81,14 +81,14 @@ var Semaphore = class {
81
81
  * @example
82
82
  * const sema = new Semaphore(1);
83
83
  *
84
- * async function task() {
84
+ * async function task() \{
85
85
  * await sema.acquire();
86
- * try {
86
+ * try \{
87
87
  * // This code can only be executed by two tasks at the same time
88
- * } finally {
88
+ * \} finally \{
89
89
  * sema.release(); // Allows another waiting task to proceed.
90
- * }
91
- * }
90
+ * \}
91
+ * \}
92
92
  */
93
93
  release() {
94
94
  const deferredTask = this.deferredTasks.shift();
@@ -1 +1 @@
1
- {"version":3,"file":"semaphore.mjs","names":[],"sources":["../src/semaphore.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Stryke\n\n This code was released as part of the Stryke project. Stryke\n is maintained by Storm Software under the Apache-2.0 License, and is\n free for commercial and private use. For more information, please visit\n our licensing page.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/stryke\n Documentation: https://stormsoftware.com/projects/stryke/docs\n Contact: https://stormsoftware.com/contact\n License: https://stormsoftware.com/projects/stryke/license\n\n ------------------------------------------------------------------- */\n\n/**\n * A counting semaphore for async functions that manages available permits.\n * Semaphores are mainly used to limit the number of concurrent async tasks.\n *\n * Each `acquire` operation takes a permit or waits until one is available.\n * Each `release` operation adds a permit, potentially allowing a waiting task to proceed.\n *\n * The semaphore ensures fairness by maintaining a FIFO (First In, First Out) order for acquirers.\n *\n * @example\n * const sema = new Semaphore(2);\n *\n * async function task() {\n * await sema.acquire();\n * try {\n * // This code can only be executed by two tasks at the same time\n * } finally {\n * sema.release();\n * }\n * }\n *\n * task();\n * task();\n * task(); // This task will wait until one of the previous tasks releases the semaphore.\n */\nexport class Semaphore {\n /**\n * The maximum number of concurrent operations allowed.\n */\n public capacity: number;\n\n /**\n * The number of available permits.\n */\n public available: number;\n\n private deferredTasks: Array<() => void> = [];\n\n /**\n * Creates an instance of Semaphore.\n * @param capacity - The maximum number of concurrent operations allowed.\n *\n * @example\n * ```ts\n * const sema = new Semaphore(3); // Allows up to 3 concurrent operations.\n * ```\n */\n constructor(capacity: number) {\n this.capacity = capacity;\n this.available = capacity;\n }\n\n /**\n * Acquires a semaphore, blocking if necessary until one is available.\n *\n * @example\n * ```ts\n * const sema = new Semaphore(1);\n *\n * async function criticalSection() {\n * await sema.acquire();\n * try {\n * // This code section cannot be executed simultaneously\n * } finally {\n * sema.release();\n * }\n * }\n * ```\n *\n * @returns A promise that resolves when the semaphore is acquired.\n */\n async acquire(): Promise<void> {\n if (this.available > 0) {\n this.available--;\n return;\n }\n\n return new Promise<void>(resolve => {\n this.deferredTasks.push(resolve);\n });\n }\n\n /**\n * Releases a semaphore, allowing one more operation to proceed.\n *\n * @example\n * const sema = new Semaphore(1);\n *\n * async function task() {\n * await sema.acquire();\n * try {\n * // This code can only be executed by two tasks at the same time\n * } finally {\n * sema.release(); // Allows another waiting task to proceed.\n * }\n * }\n */\n release(): void {\n const deferredTask = this.deferredTasks.shift();\n\n if (deferredTask != null) {\n deferredTask();\n return;\n }\n\n if (this.available < this.capacity) {\n this.available++;\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,IAAa,YAAb,MAAuB;;;;CAIrB,AAAO;;;;CAKP,AAAO;CAEP,AAAQ,gBAAmC,EAAE;;;;;;;;;;CAW7C,YAAY,UAAkB;AAC5B,OAAK,WAAW;AAChB,OAAK,YAAY;;;;;;;;;;;;;;;;;;;;;CAsBnB,MAAM,UAAyB;AAC7B,MAAI,KAAK,YAAY,GAAG;AACtB,QAAK;AACL;;AAGF,SAAO,IAAI,SAAc,YAAW;AAClC,QAAK,cAAc,KAAK,QAAQ;IAChC;;;;;;;;;;;;;;;;;CAkBJ,UAAgB;EACd,MAAM,eAAe,KAAK,cAAc,OAAO;AAE/C,MAAI,gBAAgB,MAAM;AACxB,iBAAc;AACd;;AAGF,MAAI,KAAK,YAAY,KAAK,SACxB,MAAK"}
1
+ {"version":3,"file":"semaphore.mjs","names":[],"sources":["../src/semaphore.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Stryke\n\n This code was released as part of the Stryke project. Stryke\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/stryke.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/stryke\n Documentation: https://docs.stormsoftware.com/projects/stryke\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\n/**\n * A counting semaphore for async functions that manages available permits.\n * Semaphores are mainly used to limit the number of concurrent async tasks.\n *\n * Each `acquire` operation takes a permit or waits until one is available.\n * Each `release` operation adds a permit, potentially allowing a waiting task to proceed.\n *\n * The semaphore ensures fairness by maintaining a FIFO (First In, First Out) order for acquirers.\n *\n * @example\n * const sema = new Semaphore(2);\n *\n * async function task() \\{\n * await sema.acquire();\n * try \\{\n * // This code can only be executed by two tasks at the same time\n * \\} finally \\{\n * sema.release();\n * \\}\n * \\}\n *\n * task();\n * task();\n * task(); // This task will wait until one of the previous tasks releases the semaphore.\n */\nexport class Semaphore {\n /**\n * The maximum number of concurrent operations allowed.\n */\n public capacity: number;\n\n /**\n * The number of available permits.\n */\n public available: number;\n\n private deferredTasks: Array<() => void> = [];\n\n /**\n * Creates an instance of Semaphore.\n * @param capacity - The maximum number of concurrent operations allowed.\n *\n * @example\n * ```ts\n * const sema = new Semaphore(3); // Allows up to 3 concurrent operations.\n * ```\n */\n constructor(capacity: number) {\n this.capacity = capacity;\n this.available = capacity;\n }\n\n /**\n * Acquires a semaphore, blocking if necessary until one is available.\n *\n * @example\n * ```ts\n * const sema = new Semaphore(1);\n *\n * async function criticalSection() {\n * await sema.acquire();\n * try {\n * // This code section cannot be executed simultaneously\n * } finally {\n * sema.release();\n * }\n * }\n * ```\n *\n * @returns A promise that resolves when the semaphore is acquired.\n */\n async acquire(): Promise<void> {\n if (this.available > 0) {\n this.available--;\n return;\n }\n\n return new Promise<void>(resolve => {\n this.deferredTasks.push(resolve);\n });\n }\n\n /**\n * Releases a semaphore, allowing one more operation to proceed.\n *\n * @example\n * const sema = new Semaphore(1);\n *\n * async function task() \\{\n * await sema.acquire();\n * try \\{\n * // This code can only be executed by two tasks at the same time\n * \\} finally \\{\n * sema.release(); // Allows another waiting task to proceed.\n * \\}\n * \\}\n */\n release(): void {\n const deferredTask = this.deferredTasks.shift();\n\n if (deferredTask != null) {\n deferredTask();\n return;\n }\n\n if (this.available < this.capacity) {\n this.available++;\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA2CA,IAAa,YAAb,MAAuB;;;;CAIrB,AAAO;;;;CAKP,AAAO;CAEP,AAAQ,gBAAmC,EAAE;;;;;;;;;;CAW7C,YAAY,UAAkB;AAC5B,OAAK,WAAW;AAChB,OAAK,YAAY;;;;;;;;;;;;;;;;;;;;;CAsBnB,MAAM,UAAyB;AAC7B,MAAI,KAAK,YAAY,GAAG;AACtB,QAAK;AACL;;AAGF,SAAO,IAAI,SAAc,YAAW;AAClC,QAAK,cAAc,KAAK,QAAQ;IAChC;;;;;;;;;;;;;;;;;CAkBJ,UAAgB;EACd,MAAM,eAAe,KAAK,cAAc,OAAO;AAE/C,MAAI,gBAAgB,MAAM;AACxB,iBAAc;AACd;;AAGF,MAAI,KAAK,YAAY,KAAK,SACxB,MAAK"}
@@ -1,6 +1,6 @@
1
- const require_to_path = require('./to-path.cjs');
2
1
  const require_is_string = require('./type-checks/src/is-string.cjs');
3
2
  const require_is_object_index = require('./type-checks/src/is-object-index.cjs');
3
+ const require_to_path = require('./to-path.cjs');
4
4
 
5
5
  //#region src/set-field.ts
6
6
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"set-field.d.cts","names":[],"sources":["../src/set-field.ts"],"sourcesContent":[],"mappings":";;;;;;AA8BA;;;;;;AAE4D,iBAF5C,QAE4C,CAAA,gBAD1C,MAC0C,CAAA,MAAA,EAAA,GAAA,CAAA,GADpB,MACoB,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,MAAA,EAAlD,OAAkD,EAAA,IAAA,EAAnC,OAAmC,CAA3B,OAA2B,CAAA,EAAA,KAAA,EAAA,OAAA,CAAA,EAAA,OAAA"}
1
+ {"version":3,"file":"set-field.d.cts","names":[],"sources":["../src/set-field.ts"],"sourcesContent":[],"mappings":";;;;;;AA+BA;;;;;;AAE4D,iBAF5C,QAE4C,CAAA,gBAD1C,MAC0C,CAAA,MAAA,EAAA,GAAA,CAAA,GADpB,MACoB,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,MAAA,EAAlD,OAAkD,EAAA,IAAA,EAAnC,OAAmC,CAA3B,OAA2B,CAAA,EAAA,KAAA,EAAA,OAAA,CAAA,EAAA,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"set-field.d.mts","names":[],"sources":["../src/set-field.ts"],"sourcesContent":[],"mappings":";;;;;;AA8BA;;;;;;AAE4D,iBAF5C,QAE4C,CAAA,gBAD1C,MAC0C,CAAA,MAAA,EAAA,GAAA,CAAA,GADpB,MACoB,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,MAAA,EAAlD,OAAkD,EAAA,IAAA,EAAnC,OAAmC,CAA3B,OAA2B,CAAA,EAAA,KAAA,EAAA,OAAA,CAAA,EAAA,OAAA"}
1
+ {"version":3,"file":"set-field.d.mts","names":[],"sources":["../src/set-field.ts"],"sourcesContent":[],"mappings":";;;;;;AA+BA;;;;;;AAE4D,iBAF5C,QAE4C,CAAA,gBAD1C,MAC0C,CAAA,MAAA,EAAA,GAAA,CAAA,GADpB,MACoB,CAAA,MAAA,EAAA,GAAA,CAAA,CAAA,CAAA,MAAA,EAAlD,OAAkD,EAAA,IAAA,EAAnC,OAAmC,CAA3B,OAA2B,CAAA,EAAA,KAAA,EAAA,OAAA,CAAA,EAAA,OAAA"}
@@ -1,6 +1,6 @@
1
- import { toPath } from "./to-path.mjs";
2
1
  import { isString } from "./type-checks/src/is-string.mjs";
3
2
  import { isObjectIndex } from "./type-checks/src/is-object-index.mjs";
3
+ import { toPath } from "./to-path.mjs";
4
4
 
5
5
  //#region src/set-field.ts
6
6
  /**