@ts-fns/stdlib 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +132 -0
  3. package/dist/array/index.cjs +551 -0
  4. package/dist/array/index.cjs.map +1 -0
  5. package/dist/array/index.d.cts +334 -0
  6. package/dist/array/index.d.cts.map +1 -0
  7. package/dist/array/index.d.mts +334 -0
  8. package/dist/array/index.d.mts.map +1 -0
  9. package/dist/array/index.mjs +498 -0
  10. package/dist/array/index.mjs.map +1 -0
  11. package/dist/errors-CJsLpYo9.d.cts +25 -0
  12. package/dist/errors-CJsLpYo9.d.cts.map +1 -0
  13. package/dist/errors-CJsLpYo9.d.mts +25 -0
  14. package/dist/errors-CJsLpYo9.d.mts.map +1 -0
  15. package/dist/errors-Dw1kitu_.mjs +39 -0
  16. package/dist/errors-Dw1kitu_.mjs.map +1 -0
  17. package/dist/errors-O-d_Vemi.cjs +74 -0
  18. package/dist/errors-O-d_Vemi.cjs.map +1 -0
  19. package/dist/function/index.cjs +15 -0
  20. package/dist/function/index.d.cts +107 -0
  21. package/dist/function/index.d.cts.map +1 -0
  22. package/dist/function/index.d.mts +107 -0
  23. package/dist/function/index.d.mts.map +1 -0
  24. package/dist/function/index.mjs +3 -0
  25. package/dist/function-CB82a2GS.cjs +186 -0
  26. package/dist/function-CB82a2GS.cjs.map +1 -0
  27. package/dist/function-DnI2v0p3.mjs +121 -0
  28. package/dist/function-DnI2v0p3.mjs.map +1 -0
  29. package/dist/get-CWL_cu6G.mjs +27 -0
  30. package/dist/get-CWL_cu6G.mjs.map +1 -0
  31. package/dist/get-yrs1Kqho.cjs +38 -0
  32. package/dist/get-yrs1Kqho.cjs.map +1 -0
  33. package/dist/guard/index.cjs +43 -0
  34. package/dist/guard/index.cjs.map +1 -0
  35. package/dist/guard/index.d.cts +52 -0
  36. package/dist/guard/index.d.cts.map +1 -0
  37. package/dist/guard/index.d.mts +52 -0
  38. package/dist/guard/index.d.mts.map +1 -0
  39. package/dist/guard/index.mjs +40 -0
  40. package/dist/guard/index.mjs.map +1 -0
  41. package/dist/index-BJlKyBJH.d.cts +18 -0
  42. package/dist/index-BJlKyBJH.d.cts.map +1 -0
  43. package/dist/index-DGrnGMDt.d.mts +18 -0
  44. package/dist/index-DGrnGMDt.d.mts.map +1 -0
  45. package/dist/isNotNil-DrF-ohem.cjs +28 -0
  46. package/dist/isNotNil-DrF-ohem.cjs.map +1 -0
  47. package/dist/isNotNil-R5f1hC53.mjs +23 -0
  48. package/dist/isNotNil-R5f1hC53.mjs.map +1 -0
  49. package/dist/iterator/index.cjs +160 -0
  50. package/dist/iterator/index.cjs.map +1 -0
  51. package/dist/iterator/index.d.cts +71 -0
  52. package/dist/iterator/index.d.cts.map +1 -0
  53. package/dist/iterator/index.d.mts +71 -0
  54. package/dist/iterator/index.d.mts.map +1 -0
  55. package/dist/iterator/index.mjs +148 -0
  56. package/dist/iterator/index.mjs.map +1 -0
  57. package/dist/lens/index.cjs +199 -0
  58. package/dist/lens/index.cjs.map +1 -0
  59. package/dist/lens/index.d.cts +109 -0
  60. package/dist/lens/index.d.cts.map +1 -0
  61. package/dist/lens/index.d.mts +109 -0
  62. package/dist/lens/index.d.mts.map +1 -0
  63. package/dist/lens/index.mjs +187 -0
  64. package/dist/lens/index.mjs.map +1 -0
  65. package/dist/map/index.cjs +86 -0
  66. package/dist/map/index.cjs.map +1 -0
  67. package/dist/map/index.d.cts +41 -0
  68. package/dist/map/index.d.cts.map +1 -0
  69. package/dist/map/index.d.mts +41 -0
  70. package/dist/map/index.d.mts.map +1 -0
  71. package/dist/map/index.mjs +75 -0
  72. package/dist/map/index.mjs.map +1 -0
  73. package/dist/number/index.cjs +179 -0
  74. package/dist/number/index.cjs.map +1 -0
  75. package/dist/number/index.d.cts +112 -0
  76. package/dist/number/index.d.cts.map +1 -0
  77. package/dist/number/index.d.mts +112 -0
  78. package/dist/number/index.d.mts.map +1 -0
  79. package/dist/number/index.mjs +159 -0
  80. package/dist/number/index.mjs.map +1 -0
  81. package/dist/object/index.cjs +190 -0
  82. package/dist/object/index.cjs.map +1 -0
  83. package/dist/object/index.d.cts +118 -0
  84. package/dist/object/index.d.cts.map +1 -0
  85. package/dist/object/index.d.mts +118 -0
  86. package/dist/object/index.d.mts.map +1 -0
  87. package/dist/object/index.mjs +169 -0
  88. package/dist/object/index.mjs.map +1 -0
  89. package/dist/orThrow-V91Jw2lF.mjs +15 -0
  90. package/dist/orThrow-V91Jw2lF.mjs.map +1 -0
  91. package/dist/orThrow-ejzcQYAI.cjs +20 -0
  92. package/dist/orThrow-ejzcQYAI.cjs.map +1 -0
  93. package/dist/order/index.cjs +50 -0
  94. package/dist/order/index.cjs.map +1 -0
  95. package/dist/order/index.d.cts +3 -0
  96. package/dist/order/index.d.mts +3 -0
  97. package/dist/order/index.mjs +42 -0
  98. package/dist/order/index.mjs.map +1 -0
  99. package/dist/order.constants-BWSCg3C7.d.cts +11 -0
  100. package/dist/order.constants-BWSCg3C7.d.cts.map +1 -0
  101. package/dist/order.constants-BWSCg3C7.d.mts +11 -0
  102. package/dist/order.constants-BWSCg3C7.d.mts.map +1 -0
  103. package/dist/purry-B2_0DGLV.cjs +28 -0
  104. package/dist/purry-B2_0DGLV.cjs.map +1 -0
  105. package/dist/purry-BOWmqwDB.mjs +23 -0
  106. package/dist/purry-BOWmqwDB.mjs.map +1 -0
  107. package/dist/set/index.cjs +131 -0
  108. package/dist/set/index.cjs.map +1 -0
  109. package/dist/set/index.d.cts +61 -0
  110. package/dist/set/index.d.cts.map +1 -0
  111. package/dist/set/index.d.mts +61 -0
  112. package/dist/set/index.d.mts.map +1 -0
  113. package/dist/set/index.mjs +115 -0
  114. package/dist/set/index.mjs.map +1 -0
  115. package/dist/string/index.cjs +288 -0
  116. package/dist/string/index.cjs.map +1 -0
  117. package/dist/string/index.d.cts +144 -0
  118. package/dist/string/index.d.cts.map +1 -0
  119. package/dist/string/index.d.mts +144 -0
  120. package/dist/string/index.d.mts.map +1 -0
  121. package/dist/string/index.mjs +254 -0
  122. package/dist/string/index.mjs.map +1 -0
  123. package/dist/tuple/index.cjs +135 -0
  124. package/dist/tuple/index.cjs.map +1 -0
  125. package/dist/tuple/index.d.cts +207 -0
  126. package/dist/tuple/index.d.cts.map +1 -0
  127. package/dist/tuple/index.d.mts +207 -0
  128. package/dist/tuple/index.d.mts.map +1 -0
  129. package/dist/tuple/index.mjs +122 -0
  130. package/dist/tuple/index.mjs.map +1 -0
  131. package/dist/types-D8f67ZCe.d.cts +54 -0
  132. package/dist/types-D8f67ZCe.d.cts.map +1 -0
  133. package/dist/types-D8f67ZCe.d.mts +54 -0
  134. package/dist/types-D8f67ZCe.d.mts.map +1 -0
  135. package/package.json +177 -0
@@ -0,0 +1,169 @@
1
+ import { t as purry } from "../purry-BOWmqwDB.mjs";
2
+ import "../function-DnI2v0p3.mjs";
3
+ import { n as getAssert, t as get } from "../get-CWL_cu6G.mjs";
4
+ //#region src/object/_globalAliases.ts
5
+ const { fromEntries, hasOwn, is, keys, values } = Object;
6
+ /**
7
+ * @category Object
8
+ * @function
9
+ * @example
10
+ * ```ts
11
+ * entries({ a: 1, b: 2 }); // [['a', 1], ['b', 2]]
12
+ * ```
13
+ */
14
+ const entries = Object.entries;
15
+ //#endregion
16
+ //#region src/object/clone.ts
17
+ /**
18
+ * Alias of structuredClone without the optional second argument
19
+ */
20
+ function clone(data) {
21
+ return globalThis.structuredClone(data);
22
+ }
23
+ //#endregion
24
+ //#region src/object/evolve.ts
25
+ function evolveImplementation(obj, evolver) {
26
+ const evolved = Object.entries(evolver).reduce((acc, [k, fn]) => {
27
+ if (Object.hasOwn(obj, k)) acc[k] = fn(obj[k]);
28
+ return acc;
29
+ }, {});
30
+ return {
31
+ ...obj,
32
+ ...evolved
33
+ };
34
+ }
35
+ function evolve(...args) {
36
+ return purry(evolveImplementation, args);
37
+ }
38
+ //#endregion
39
+ //#region src/object/forEach.ts
40
+ function forEachImplementation(data, callbackfn) {
41
+ for (const [k, v] of Object.entries(data)) callbackfn(v, k);
42
+ return data;
43
+ }
44
+ function forEach(...args) {
45
+ return purry(forEachImplementation, args);
46
+ }
47
+ //#endregion
48
+ //#region src/object/groupBy.ts
49
+ function groupByImplementation(items, keySelector) {
50
+ return Object.groupBy(items, keySelector);
51
+ }
52
+ function groupBy(...args) {
53
+ return purry(groupByImplementation, args);
54
+ }
55
+ //#endregion
56
+ //#region src/object/indexBy.ts
57
+ function indexByImplementation(data, keySelector) {
58
+ const asArray = [...data];
59
+ const len = asArray.length;
60
+ const rtnObj = {};
61
+ for (let i = 0; i < len; i += 1) {
62
+ const value = asArray[i];
63
+ rtnObj[keySelector(value, i)] = value;
64
+ }
65
+ return rtnObj;
66
+ }
67
+ function indexBy(...args) {
68
+ return purry(indexByImplementation, args);
69
+ }
70
+ //#endregion
71
+ //#region src/object/map.ts
72
+ function mapImplementation(data, callbackfn) {
73
+ const entries = Object.entries(data);
74
+ const len = entries.length;
75
+ const newObj = {};
76
+ for (let i = 0; i < len; i += 1) {
77
+ const [k, v] = entries[i];
78
+ newObj[k] = callbackfn(v, k);
79
+ }
80
+ return newObj;
81
+ }
82
+ function map(...args) {
83
+ return purry(mapImplementation, args);
84
+ }
85
+ //#endregion
86
+ //#region src/object/merge.ts
87
+ function mergeImplementation(left, right) {
88
+ return {
89
+ ...left,
90
+ ...right
91
+ };
92
+ }
93
+ function merge(...args) {
94
+ return purry(mergeImplementation, args);
95
+ }
96
+ function mergeLeftImplementation(left, right) {
97
+ return {
98
+ ...right,
99
+ ...left
100
+ };
101
+ }
102
+ function mergeLeft(...args) {
103
+ return purry(mergeLeftImplementation, args);
104
+ }
105
+ merge.left = mergeLeft;
106
+ //#endregion
107
+ //#region src/object/omit.ts
108
+ function omitImplementation(data, keys) {
109
+ const keysSet = new Set(keys);
110
+ const newObj = {};
111
+ for (const [key, value] of Object.entries(data)) if (!keysSet.has(key)) newObj[key] = value;
112
+ return newObj;
113
+ }
114
+ function omit(...args) {
115
+ return purry(omitImplementation, args);
116
+ }
117
+ //#endregion
118
+ //#region src/object/pick.ts
119
+ function pickImplementation(data, keys) {
120
+ const keysSet = new Set(keys);
121
+ const newObj = {};
122
+ for (const [key, value] of Object.entries(data)) if (keysSet.has(key)) newObj[key] = value;
123
+ return newObj;
124
+ }
125
+ function pick(...args) {
126
+ return purry(pickImplementation, args);
127
+ }
128
+ //#endregion
129
+ //#region src/object/set.ts
130
+ function setImplementation(obj, key, value) {
131
+ return {
132
+ ...obj,
133
+ [key]: value
134
+ };
135
+ }
136
+ function set(...args) {
137
+ return purry(setImplementation, args);
138
+ }
139
+ //#endregion
140
+ //#region src/object/upsert.ts
141
+ function upsertImplementation(data, key, fn) {
142
+ if (!(key in data)) {
143
+ const updatedValue = fn(void 0);
144
+ return {
145
+ ...data,
146
+ [key]: updatedValue
147
+ };
148
+ }
149
+ const value = data[key];
150
+ if (value == null) {
151
+ const updatedValue = fn(null);
152
+ return {
153
+ ...data,
154
+ [key]: updatedValue
155
+ };
156
+ }
157
+ const updatedValue = fn(value);
158
+ return {
159
+ ...data,
160
+ [key]: updatedValue
161
+ };
162
+ }
163
+ function upsert(...args) {
164
+ return purry(upsertImplementation, args);
165
+ }
166
+ //#endregion
167
+ export { clone, entries, evolve, forEach, fromEntries, get, getAssert, groupBy, hasOwn, indexBy, is, keys, map, merge, mergeLeft, omit, pick, set, setImplementation, upsert, values };
168
+
169
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../src/object/_globalAliases.ts","../../src/object/clone.ts","../../src/object/evolve.ts","../../src/object/forEach.ts","../../src/object/groupBy.ts","../../src/object/indexBy.ts","../../src/object/map.ts","../../src/object/merge.ts","../../src/object/omit.ts","../../src/object/pick.ts","../../src/object/set.ts","../../src/object/upsert.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/prefer-destructuring */\nexport const { fromEntries, hasOwn, is, keys, values } = Object;\n\n/**\n * @category Object\n * @function\n * @example\n * ```ts\n * entries({ a: 1, b: 2 }); // [['a', 1], ['b', 2]]\n * ```\n */\nexport const entries = Object.entries;\n","/**\n * Alias of structuredClone without the optional second argument\n */\nexport function clone<T>(data: T): T {\n return globalThis.structuredClone(data);\n}\n","import type { Simplify } from 'type-fest';\n\nimport { purry } from '../function';\n\ntype Evolved<Obj extends object, Evolver extends { [K in keyof Partial<Obj>]: (value: Obj[K]) => unknown }> = {\n [K in keyof Obj]: Obj extends Record<K, infer T>\n ? Evolver extends Record<K, (value: Obj[K]) => infer R>\n ? R extends T\n ? T\n : unknown\n : never\n : never;\n};\n\nfunction evolveImplementation<\n Obj extends object,\n Evolver extends { [K in keyof Partial<Obj>]: (value: Obj[K]) => unknown },\n>(obj: Obj, evolver: Evolver): Simplify<Evolved<Obj, Evolver>> {\n const evolved = (Object.entries(evolver) as [keyof Obj, (value: unknown) => unknown][]).reduce<\n Partial<Record<keyof Obj, any>>\n >((acc, [k, fn]) => {\n // key must exist on obj, otherwise no value\n if (Object.hasOwn(obj, k)) {\n acc[k] = fn(obj[k]);\n }\n return acc;\n }, {});\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return { ...obj, ...evolved } as any;\n}\n\nexport function evolve<Obj extends object, Evolver extends { [K in keyof Partial<Obj>]: (value: Obj[K]) => unknown }>(\n evolver: Evolver,\n): (obj: Obj) => Simplify<Evolved<Obj, Evolver>>;\nexport function evolve<Obj extends object, Evolver extends { [K in keyof Partial<Obj>]: (value: Obj[K]) => unknown }>(\n obj: Obj,\n evolver: Evolver,\n): Simplify<Evolved<Obj, Evolver>>;\nexport function evolve(...args: unknown[]): unknown {\n return purry(evolveImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction forEachImplementation<T>(\n data: Record<string, T>,\n callbackfn: (value: T, key: string) => void,\n): Record<string, T> {\n for (const [k, v] of Object.entries(data)) {\n callbackfn(v, k);\n }\n return data;\n}\n\nexport function forEach<T>(callbackfn: (value: T, key: string) => void): (data: Record<string, T>) => Record<string, T>;\nexport function forEach<T>(data: Record<string, T>, callbackfn: (value: T, key: string) => void): Record<string, T>;\nexport function forEach(...args: readonly unknown[]): unknown {\n return purry(forEachImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction groupByImplementation<T>(\n items: Iterable<T>,\n keySelector: (item: T, index: number) => string,\n): Partial<Record<string, T[]>> {\n return Object.groupBy(items, keySelector);\n}\n\nexport function groupBy<T>(\n keySelector: (item: T, index: number) => string,\n): (items: Iterable<T>) => Partial<Record<string, T[]>>;\nexport function groupBy<T>(\n items: Iterable<T>,\n keySelector: (item: T, index: number) => string,\n): Partial<Record<string, T[]>>;\nexport function groupBy(...args: readonly unknown[]): unknown {\n return purry(groupByImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction indexByImplementation<T>(\n data: Iterable<T>,\n keySelector: (item: T, index: number) => string,\n): Record<string, T> {\n const asArray = [...data];\n const len = asArray.length;\n const rtnObj: Record<string, T> = {};\n for (let i = 0; i < len; i += 1) {\n const value = asArray[i]!;\n rtnObj[keySelector(value, i)] = value;\n }\n return rtnObj;\n}\n\nexport function indexBy<T>(keySelector: (item: T, index: number) => string): (data: Iterable<T>) => Record<string, T>;\nexport function indexBy<T>(data: Iterable<T>, keySelector: (item: T, index: number) => string): Record<string, T>;\nexport function indexBy(...args: readonly unknown[]): unknown {\n return purry(indexByImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction mapImplementation<T, U>(data: Record<string, T>, callbackfn: (value: T, key: string) => U): Record<string, U> {\n const entries = Object.entries(data);\n const len = entries.length;\n const newObj: Record<string, U> = {};\n for (let i = 0; i < len; i += 1) {\n const [k, v] = entries[i]!;\n newObj[k] = callbackfn(v, k);\n }\n return newObj;\n}\n\nexport function map<T, U>(callbackfn: (value: T, key: string) => U): (data: Record<string, T>) => Record<string, U>;\nexport function map<T, U>(data: Record<string, T>, callbackfn: (value: T, key: string) => U): Record<string, U>;\nexport function map(...args: readonly unknown[]): unknown {\n return purry(mapImplementation, args);\n}\n","import type { Merge } from 'type-fest';\n\nimport { purry } from '../function';\n\nfunction mergeImplementation<Obj extends object, Other extends object>(left: Obj, right: Other): Merge<Obj, Other> {\n return { ...left, ...right } as unknown as Merge<Obj, Other>;\n}\n\nexport function merge<Obj extends object, Other extends object>(right: Other): (left: Obj) => Merge<Obj, Other>;\nexport function merge<Obj extends object, Other extends object>(left: Obj, right: Other): Merge<Obj, Other>;\nexport function merge(...args: unknown[]): unknown {\n return purry(mergeImplementation, args);\n}\n\nfunction mergeLeftImplementation<Obj extends object, Other extends object>(left: Obj, right: Other): Merge<Other, Obj> {\n return { ...right, ...left } as unknown as Merge<Other, Obj>;\n}\n\nexport function mergeLeft<Obj extends object, Other extends object>(right: Other): (left: Obj) => Merge<Other, Obj>;\nexport function mergeLeft<Obj extends object, Other extends object>(left: Obj, right: Other): Merge<Other, Obj>;\nexport function mergeLeft(...args: unknown[]): unknown {\n return purry(mergeLeftImplementation, args);\n}\n\nmerge.left = mergeLeft;\n","import { purry } from '../function/purry';\n\nfunction omitImplementation(data: Record<string, unknown>, keys: Iterable<string>): Record<string, unknown> {\n const keysSet = new Set(keys);\n\n const newObj: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(data)) {\n if (!keysSet.has(key)) {\n newObj[key] = value;\n }\n }\n\n return newObj;\n}\n\nexport function omit<Obj extends Record<string, unknown>, Key extends keyof Obj>(\n keys: Iterable<Key>,\n): (data: Obj) => Omit<Obj, Key>;\nexport function omit<Obj extends Record<string, unknown>, Key extends keyof Obj>(\n data: Obj,\n keys: Iterable<Key>,\n): Omit<Obj, Key>;\nexport function omit(...args: readonly unknown[]): unknown {\n return purry(omitImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction pickImplementation(data: Record<string, unknown>, keys: Iterable<string>): Record<string, unknown> {\n const keysSet = new Set(keys);\n\n const newObj: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(data)) {\n if (keysSet.has(key)) {\n newObj[key] = value;\n }\n }\n\n return newObj;\n}\n\nexport function pick<Obj extends Record<string, unknown>, Key extends keyof Obj>(\n keys: Iterable<Key>,\n): (data: Obj) => Pick<Obj, Key>;\nexport function pick<Obj extends Record<string, unknown>, Key extends keyof Obj>(\n data: Obj,\n keys: Iterable<Key>,\n): Pick<Obj, Key>;\nexport function pick(...args: readonly unknown[]): unknown {\n return purry(pickImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nexport function setImplementation<Obj extends object, Key extends keyof Obj>(obj: Obj, key: Key, value: Obj[Key]): Obj {\n return { ...obj, [key]: value };\n}\n\nexport function set<Obj extends object, Key extends keyof Obj>(key: Key, value: Obj[Key]): (obj: Obj) => Obj;\nexport function set<Obj extends object, Key extends keyof Obj>(obj: Obj, key: Key, value: Obj[Key]): Obj;\nexport function set(...args: readonly unknown[]): unknown {\n return purry(setImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction upsertImplementation<T>(\n data: Record<string, T>,\n key: string,\n fn: (value: T | null | undefined) => T,\n): Record<string, T> {\n if (!(key in data)) {\n const updatedValue = fn(undefined);\n return { ...data, [key]: updatedValue };\n }\n\n const value = data[key];\n\n // this checks for both `undefined` and `null`\n if (value == null) {\n const updatedValue = fn(null);\n return { ...data, [key]: updatedValue };\n }\n\n const updatedValue = fn(value);\n return { ...data, [key]: updatedValue };\n}\n\n/**\n * Upsert is meant to be used on `Record<K, V>` types that have unknown keys that may or may not exists\n * The callback function is unique in that it will return `V | null | undefined`\n * * `V` is returned if the key is present and a value exists\n * * `null` is returned if the key is present, but is set to `null` or `undefined`\n * * `undefined` is returned if the key is not present\n */\nexport function upsert<T>(\n key: string,\n fn: (value: T | null | undefined) => T,\n): (data: Record<string, T>) => Record<string, T>;\nexport function upsert<T>(\n data: Record<string, T>,\n key: string,\n fn: (value: T | null | undefined) => T,\n): Record<string, T>;\nexport function upsert(...args: readonly unknown[]): unknown {\n return purry(upsertImplementation, args);\n}\n"],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ //#region src/function/orThrow.ts
2
+ function orThrow(fn) {
3
+ const argLength = fn.length;
4
+ const wrappedFn = (...args) => {
5
+ const result = fn(...args);
6
+ if (result instanceof Error) throw result;
7
+ return result;
8
+ };
9
+ Object.defineProperty(wrappedFn, "length", { value: argLength });
10
+ return wrappedFn;
11
+ }
12
+ //#endregion
13
+ export { orThrow as t };
14
+
15
+ //# sourceMappingURL=orThrow-V91Jw2lF.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orThrow-V91Jw2lF.mjs","names":[],"sources":["../src/function/orThrow.ts"],"sourcesContent":["export function orThrow(fn: (...args: readonly any[]) => unknown): (...args: readonly unknown[]) => unknown {\n const argLength = fn.length;\n\n const wrappedFn = (...args: readonly unknown[]): unknown => {\n const result = fn(...args);\n if (result instanceof Error) {\n throw result;\n }\n return result;\n };\n\n Object.defineProperty(wrappedFn, 'length', {\n value: argLength,\n });\n\n return wrappedFn;\n}\n"],"mappings":";AAAA,SAAgB,QAAQ,IAAoF;CAC1G,MAAM,YAAY,GAAG;CAErB,MAAM,aAAa,GAAG,SAAsC;EAC1D,MAAM,SAAS,GAAG,GAAG,IAAI;EACzB,IAAI,kBAAkB,OACpB,MAAM;EAER,OAAO;CACT;CAEA,OAAO,eAAe,WAAW,UAAU,EACzC,OAAO,UACT,CAAC;CAED,OAAO;AACT"}
@@ -0,0 +1,20 @@
1
+ //#region src/function/orThrow.ts
2
+ function orThrow(fn) {
3
+ const argLength = fn.length;
4
+ const wrappedFn = (...args) => {
5
+ const result = fn(...args);
6
+ if (result instanceof Error) throw result;
7
+ return result;
8
+ };
9
+ Object.defineProperty(wrappedFn, "length", { value: argLength });
10
+ return wrappedFn;
11
+ }
12
+ //#endregion
13
+ Object.defineProperty(exports, "orThrow", {
14
+ enumerable: true,
15
+ get: function() {
16
+ return orThrow;
17
+ }
18
+ });
19
+
20
+ //# sourceMappingURL=orThrow-ejzcQYAI.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orThrow-ejzcQYAI.cjs","names":[],"sources":["../src/function/orThrow.ts"],"sourcesContent":["export function orThrow(fn: (...args: readonly any[]) => unknown): (...args: readonly unknown[]) => unknown {\n const argLength = fn.length;\n\n const wrappedFn = (...args: readonly unknown[]): unknown => {\n const result = fn(...args);\n if (result instanceof Error) {\n throw result;\n }\n return result;\n };\n\n Object.defineProperty(wrappedFn, 'length', {\n value: argLength,\n });\n\n return wrappedFn;\n}\n"],"mappings":";AAAA,SAAgB,QAAQ,IAAoF;CAC1G,MAAM,YAAY,GAAG;CAErB,MAAM,aAAa,GAAG,SAAsC;EAC1D,MAAM,SAAS,GAAG,GAAG,IAAI;EACzB,IAAI,kBAAkB,OACpB,MAAM;EAER,OAAO;CACT;CAEA,OAAO,eAAe,WAAW,UAAU,EACzC,OAAO,UACT,CAAC;CAED,OAAO;AACT"}
@@ -0,0 +1,50 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_purry = require("../purry-B2_0DGLV.cjs");
3
+ const require_errors = require("../errors-O-d_Vemi.cjs");
4
+ //#region src/order/breakTie.ts
5
+ function breakTieImplementation(order, other) {
6
+ if (order === 0) return other;
7
+ return order;
8
+ }
9
+ function breakTie(...args) {
10
+ return require_purry.purry(breakTieImplementation, args);
11
+ }
12
+ //#endregion
13
+ //#region src/order/compare.ts
14
+ function compareImplementation(left, right) {
15
+ throw new require_errors.NotYetImplementedError("Order.compare not yet implemented");
16
+ }
17
+ function compare(...args) {
18
+ return require_purry.purry(compareImplementation, args);
19
+ }
20
+ //#endregion
21
+ //#region src/order/order.constants.ts
22
+ const lt = -1;
23
+ const eq = 0;
24
+ const gt = 1;
25
+ //#endregion
26
+ //#region src/order/negate.ts
27
+ function negate(order) {
28
+ switch (order) {
29
+ case -1: return 1;
30
+ case 0: return 0;
31
+ case 1: return -1;
32
+ default: throw new require_errors.Panic("Ord.negate() received a number that was not -1, 0, or 1");
33
+ }
34
+ }
35
+ //#endregion
36
+ //#region src/order/reverse.ts
37
+ function reverse(orderer) {
38
+ return (left, right) => negate(orderer(left, right));
39
+ }
40
+ //#endregion
41
+ exports.breakTie = breakTie;
42
+ exports.breakTieImplementation = breakTieImplementation;
43
+ exports.compare = compare;
44
+ exports.eq = eq;
45
+ exports.gt = gt;
46
+ exports.lt = lt;
47
+ exports.negate = negate;
48
+ exports.reverse = reverse;
49
+
50
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["purry","NotYetImplementedError","purry","Panic"],"sources":["../../src/order/breakTie.ts","../../src/order/compare.ts","../../src/order/order.constants.ts","../../src/order/negate.ts","../../src/order/reverse.ts"],"sourcesContent":["import { purry } from '../function/purry';\n\nimport type { Order } from './order.constants';\n\nexport function breakTieImplementation(order: Order, other: Order): Order {\n if (order === 0) return other;\n return order;\n}\n\nexport function breakTie(other: Order): (order: Order) => Order;\nexport function breakTie(order: Order, other: Order): Order;\nexport function breakTie(...args: readonly unknown[]): unknown {\n return purry(breakTieImplementation, args);\n}\n","import { NotYetImplementedError } from '../errors';\nimport { purry } from '../function/purry';\n\nimport type { Order } from './order.constants';\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction compareImplementation(left: Order, right: Order): Order {\n throw new NotYetImplementedError('Order.compare not yet implemented');\n}\n\nexport function compare(left: Order, right: Order): Order;\nexport function compare(...args: readonly unknown[]): unknown {\n return purry(compareImplementation, args);\n}\n","export type Eq = 0;\nexport type Lt = -1;\nexport type Gt = 1;\n\nexport type Order = Eq | Gt | Lt;\n\nexport const lt: Lt = -1;\nexport const eq: Eq = 0;\nexport const gt: Gt = 1;\n","import { Panic } from '../errors';\n\nimport type { Order } from './order.constants';\nimport { eq, gt, lt } from './order.constants';\n\nexport function negate(order: Order): Order {\n switch (order) {\n case lt:\n return gt;\n case eq:\n return eq;\n case gt:\n return lt;\n default:\n throw new Panic('Ord.negate() received a number that was not -1, 0, or 1');\n }\n}\n","import { negate } from './negate';\nimport type { Order } from './order.constants';\n\nexport function reverse<T>(orderer: (left: T, right: T) => Order): (left: T, right: T) => Order {\n return (left: T, right: T) => negate(orderer(left, right));\n}\n"],"mappings":";;;;AAIA,SAAgB,uBAAuB,OAAc,OAAqB;CACxE,IAAI,UAAU,GAAG,OAAO;CACxB,OAAO;AACT;AAIA,SAAgB,SAAS,GAAG,MAAmC;CAC7D,OAAOA,cAAAA,MAAM,wBAAwB,IAAI;AAC3C;;;ACPA,SAAS,sBAAsB,MAAa,OAAqB;CAC/D,MAAM,IAAIC,eAAAA,uBAAuB,mCAAmC;AACtE;AAGA,SAAgB,QAAQ,GAAG,MAAmC;CAC5D,OAAOC,cAAAA,MAAM,uBAAuB,IAAI;AAC1C;;;ACPA,MAAa,KAAS;AACtB,MAAa,KAAS;AACtB,MAAa,KAAS;;;ACHtB,SAAgB,OAAO,OAAqB;CAC1C,QAAQ,OAAR;EACE,KAAA,IACE,OAAA;EACF,KAAA,GACE,OAAA;EACF,KAAA,GACE,OAAA;EACF,SACE,MAAM,IAAIC,eAAAA,MAAM,yDAAyD;CAC7E;AACF;;;ACbA,SAAgB,QAAW,SAAqE;CAC9F,QAAQ,MAAS,UAAa,OAAO,QAAQ,MAAM,KAAK,CAAC;AAC3D"}
@@ -0,0 +1,3 @@
1
+ import { a as eq, i as Order, n as Gt, o as gt, r as Lt, s as lt, t as Eq } from "../order.constants-BWSCg3C7.cjs";
2
+ import { a as breakTieImplementation, i as breakTie, n as negate, r as compare, t as reverse } from "../index-BJlKyBJH.cjs";
3
+ export { Eq, Gt, Lt, Order, breakTie, breakTieImplementation, compare, eq, gt, lt, negate, reverse };
@@ -0,0 +1,3 @@
1
+ import { a as eq, i as Order, n as Gt, o as gt, r as Lt, s as lt, t as Eq } from "../order.constants-BWSCg3C7.mjs";
2
+ import { a as breakTieImplementation, i as breakTie, n as negate, r as compare, t as reverse } from "../index-DGrnGMDt.mjs";
3
+ export { Eq, Gt, Lt, Order, breakTie, breakTieImplementation, compare, eq, gt, lt, negate, reverse };
@@ -0,0 +1,42 @@
1
+ import { t as purry } from "../purry-BOWmqwDB.mjs";
2
+ import { a as NotYetImplementedError, o as Panic } from "../errors-Dw1kitu_.mjs";
3
+ //#region src/order/breakTie.ts
4
+ function breakTieImplementation(order, other) {
5
+ if (order === 0) return other;
6
+ return order;
7
+ }
8
+ function breakTie(...args) {
9
+ return purry(breakTieImplementation, args);
10
+ }
11
+ //#endregion
12
+ //#region src/order/compare.ts
13
+ function compareImplementation(left, right) {
14
+ throw new NotYetImplementedError("Order.compare not yet implemented");
15
+ }
16
+ function compare(...args) {
17
+ return purry(compareImplementation, args);
18
+ }
19
+ //#endregion
20
+ //#region src/order/order.constants.ts
21
+ const lt = -1;
22
+ const eq = 0;
23
+ const gt = 1;
24
+ //#endregion
25
+ //#region src/order/negate.ts
26
+ function negate(order) {
27
+ switch (order) {
28
+ case -1: return 1;
29
+ case 0: return 0;
30
+ case 1: return -1;
31
+ default: throw new Panic("Ord.negate() received a number that was not -1, 0, or 1");
32
+ }
33
+ }
34
+ //#endregion
35
+ //#region src/order/reverse.ts
36
+ function reverse(orderer) {
37
+ return (left, right) => negate(orderer(left, right));
38
+ }
39
+ //#endregion
40
+ export { breakTie, breakTieImplementation, compare, eq, gt, lt, negate, reverse };
41
+
42
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../src/order/breakTie.ts","../../src/order/compare.ts","../../src/order/order.constants.ts","../../src/order/negate.ts","../../src/order/reverse.ts"],"sourcesContent":["import { purry } from '../function/purry';\n\nimport type { Order } from './order.constants';\n\nexport function breakTieImplementation(order: Order, other: Order): Order {\n if (order === 0) return other;\n return order;\n}\n\nexport function breakTie(other: Order): (order: Order) => Order;\nexport function breakTie(order: Order, other: Order): Order;\nexport function breakTie(...args: readonly unknown[]): unknown {\n return purry(breakTieImplementation, args);\n}\n","import { NotYetImplementedError } from '../errors';\nimport { purry } from '../function/purry';\n\nimport type { Order } from './order.constants';\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction compareImplementation(left: Order, right: Order): Order {\n throw new NotYetImplementedError('Order.compare not yet implemented');\n}\n\nexport function compare(left: Order, right: Order): Order;\nexport function compare(...args: readonly unknown[]): unknown {\n return purry(compareImplementation, args);\n}\n","export type Eq = 0;\nexport type Lt = -1;\nexport type Gt = 1;\n\nexport type Order = Eq | Gt | Lt;\n\nexport const lt: Lt = -1;\nexport const eq: Eq = 0;\nexport const gt: Gt = 1;\n","import { Panic } from '../errors';\n\nimport type { Order } from './order.constants';\nimport { eq, gt, lt } from './order.constants';\n\nexport function negate(order: Order): Order {\n switch (order) {\n case lt:\n return gt;\n case eq:\n return eq;\n case gt:\n return lt;\n default:\n throw new Panic('Ord.negate() received a number that was not -1, 0, or 1');\n }\n}\n","import { negate } from './negate';\nimport type { Order } from './order.constants';\n\nexport function reverse<T>(orderer: (left: T, right: T) => Order): (left: T, right: T) => Order {\n return (left: T, right: T) => negate(orderer(left, right));\n}\n"],"mappings":";;;AAIA,SAAgB,uBAAuB,OAAc,OAAqB;CACxE,IAAI,UAAU,GAAG,OAAO;CACxB,OAAO;AACT;AAIA,SAAgB,SAAS,GAAG,MAAmC;CAC7D,OAAO,MAAM,wBAAwB,IAAI;AAC3C;;;ACPA,SAAS,sBAAsB,MAAa,OAAqB;CAC/D,MAAM,IAAI,uBAAuB,mCAAmC;AACtE;AAGA,SAAgB,QAAQ,GAAG,MAAmC;CAC5D,OAAO,MAAM,uBAAuB,IAAI;AAC1C;;;ACPA,MAAa,KAAS;AACtB,MAAa,KAAS;AACtB,MAAa,KAAS;;;ACHtB,SAAgB,OAAO,OAAqB;CAC1C,QAAQ,OAAR;EACE,KAAA,IACE,OAAA;EACF,KAAA,GACE,OAAA;EACF,KAAA,GACE,OAAA;EACF,SACE,MAAM,IAAI,MAAM,yDAAyD;CAC7E;AACF;;;ACbA,SAAgB,QAAW,SAAqE;CAC9F,QAAQ,MAAS,UAAa,OAAO,QAAQ,MAAM,KAAK,CAAC;AAC3D"}
@@ -0,0 +1,11 @@
1
+ //#region src/order/order.constants.d.ts
2
+ type Eq = 0;
3
+ type Lt = -1;
4
+ type Gt = 1;
5
+ type Order = Eq | Gt | Lt;
6
+ declare const lt: Lt;
7
+ declare const eq: Eq;
8
+ declare const gt: Gt;
9
+ //#endregion
10
+ export { eq as a, Order as i, Gt as n, gt as o, Lt as r, lt as s, Eq as t };
11
+ //# sourceMappingURL=order.constants-BWSCg3C7.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order.constants-BWSCg3C7.d.cts","names":[],"sources":["../src/order/order.constants.ts"],"mappings":";KAAY,EAAA;AAAA,KACA,EAAA;AAAA,KACA,EAAA;AAAA,KAEA,KAAA,GAAQ,EAAA,GAAK,EAAA,GAAK,EAAA;AAAA,cAEjB,EAAA,EAAI,EAAO;AAAA,cACX,EAAA,EAAI,EAAM;AAAA,cACV,EAAA,EAAI,EAAM"}
@@ -0,0 +1,11 @@
1
+ //#region src/order/order.constants.d.ts
2
+ type Eq = 0;
3
+ type Lt = -1;
4
+ type Gt = 1;
5
+ type Order = Eq | Gt | Lt;
6
+ declare const lt: Lt;
7
+ declare const eq: Eq;
8
+ declare const gt: Gt;
9
+ //#endregion
10
+ export { eq as a, Order as i, Gt as n, gt as o, Lt as r, lt as s, Eq as t };
11
+ //# sourceMappingURL=order.constants-BWSCg3C7.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order.constants-BWSCg3C7.d.mts","names":[],"sources":["../src/order/order.constants.ts"],"mappings":";KAAY,EAAA;AAAA,KACA,EAAA;AAAA,KACA,EAAA;AAAA,KAEA,KAAA,GAAQ,EAAA,GAAK,EAAA,GAAK,EAAA;AAAA,cAEjB,EAAA,EAAI,EAAO;AAAA,cACX,EAAA,EAAI,EAAM;AAAA,cACV,EAAA,EAAI,EAAM"}
@@ -0,0 +1,28 @@
1
+ //#region src/function/purry.ts
2
+ /**
3
+ * Purry = **P**ipe + C**urry*
4
+ *
5
+ * Named as such to simulate how Elixir's pipe operator expects you to omit the first argument, the "data argument".
6
+ * This function essentially takes any function of at lest 2 arguments and returns a function that:
7
+ * * If it receives `n` args, it calls the function immediately
8
+ * * If it receives `n - 1` args, it returns a function accepting the single data argument
9
+ * * Any calls with incorrect number of arguments will throw
10
+ *
11
+ * Credit to Remeda for the name
12
+ * @throws {Error}
13
+ */
14
+ function purry(fn, args) {
15
+ const diff = fn.length - args.length;
16
+ if (diff === 0) return fn(...args);
17
+ if (diff === 1) return (data) => fn(data, ...args);
18
+ throw new Error(`Attempt to call Purried function "${fn.name}" failed with wrong number of arguments. Received "${args.length}". It can accept either "${fn.length}" or "${fn.length - 1}" arguments.`);
19
+ }
20
+ //#endregion
21
+ Object.defineProperty(exports, "purry", {
22
+ enumerable: true,
23
+ get: function() {
24
+ return purry;
25
+ }
26
+ });
27
+
28
+ //# sourceMappingURL=purry-B2_0DGLV.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"purry-B2_0DGLV.cjs","names":[],"sources":["../src/function/purry.ts"],"sourcesContent":["/**\n * Purry = **P**ipe + C**urry*\n *\n * Named as such to simulate how Elixir's pipe operator expects you to omit the first argument, the \"data argument\".\n * This function essentially takes any function of at lest 2 arguments and returns a function that:\n * * If it receives `n` args, it calls the function immediately\n * * If it receives `n - 1` args, it returns a function accepting the single data argument\n * * Any calls with incorrect number of arguments will throw\n *\n * Credit to Remeda for the name\n * @throws {Error}\n */\nexport function purry(fn: (...args: any) => unknown, args: readonly unknown[]): unknown {\n const diff = fn.length - args.length;\n if (diff === 0) {\n return fn(...args);\n }\n\n if (diff === 1) {\n return (data: unknown): unknown => fn(data, ...args);\n }\n\n throw new Error(\n `Attempt to call Purried function \"${fn.name}\" failed with wrong number of arguments. Received \"${args.length}\". It can accept either \"${fn.length}\" or \"${fn.length - 1}\" arguments.`,\n );\n}\n"],"mappings":";;;;;;;;;;;;;AAYA,SAAgB,MAAM,IAA+B,MAAmC;CACtF,MAAM,OAAO,GAAG,SAAS,KAAK;CAC9B,IAAI,SAAS,GACX,OAAO,GAAG,GAAG,IAAI;CAGnB,IAAI,SAAS,GACX,QAAQ,SAA2B,GAAG,MAAM,GAAG,IAAI;CAGrD,MAAM,IAAI,MACR,qCAAqC,GAAG,KAAK,qDAAqD,KAAK,OAAO,2BAA2B,GAAG,OAAO,QAAQ,GAAG,SAAS,EAAE,aAC3K;AACF"}
@@ -0,0 +1,23 @@
1
+ //#region src/function/purry.ts
2
+ /**
3
+ * Purry = **P**ipe + C**urry*
4
+ *
5
+ * Named as such to simulate how Elixir's pipe operator expects you to omit the first argument, the "data argument".
6
+ * This function essentially takes any function of at lest 2 arguments and returns a function that:
7
+ * * If it receives `n` args, it calls the function immediately
8
+ * * If it receives `n - 1` args, it returns a function accepting the single data argument
9
+ * * Any calls with incorrect number of arguments will throw
10
+ *
11
+ * Credit to Remeda for the name
12
+ * @throws {Error}
13
+ */
14
+ function purry(fn, args) {
15
+ const diff = fn.length - args.length;
16
+ if (diff === 0) return fn(...args);
17
+ if (diff === 1) return (data) => fn(data, ...args);
18
+ throw new Error(`Attempt to call Purried function "${fn.name}" failed with wrong number of arguments. Received "${args.length}". It can accept either "${fn.length}" or "${fn.length - 1}" arguments.`);
19
+ }
20
+ //#endregion
21
+ export { purry as t };
22
+
23
+ //# sourceMappingURL=purry-BOWmqwDB.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"purry-BOWmqwDB.mjs","names":[],"sources":["../src/function/purry.ts"],"sourcesContent":["/**\n * Purry = **P**ipe + C**urry*\n *\n * Named as such to simulate how Elixir's pipe operator expects you to omit the first argument, the \"data argument\".\n * This function essentially takes any function of at lest 2 arguments and returns a function that:\n * * If it receives `n` args, it calls the function immediately\n * * If it receives `n - 1` args, it returns a function accepting the single data argument\n * * Any calls with incorrect number of arguments will throw\n *\n * Credit to Remeda for the name\n * @throws {Error}\n */\nexport function purry(fn: (...args: any) => unknown, args: readonly unknown[]): unknown {\n const diff = fn.length - args.length;\n if (diff === 0) {\n return fn(...args);\n }\n\n if (diff === 1) {\n return (data: unknown): unknown => fn(data, ...args);\n }\n\n throw new Error(\n `Attempt to call Purried function \"${fn.name}\" failed with wrong number of arguments. Received \"${args.length}\". It can accept either \"${fn.length}\" or \"${fn.length - 1}\" arguments.`,\n );\n}\n"],"mappings":";;;;;;;;;;;;;AAYA,SAAgB,MAAM,IAA+B,MAAmC;CACtF,MAAM,OAAO,GAAG,SAAS,KAAK;CAC9B,IAAI,SAAS,GACX,OAAO,GAAG,GAAG,IAAI;CAGnB,IAAI,SAAS,GACX,QAAQ,SAA2B,GAAG,MAAM,GAAG,IAAI;CAGrD,MAAM,IAAI,MACR,qCAAqC,GAAG,KAAK,qDAAqD,KAAK,OAAO,2BAA2B,GAAG,OAAO,QAAQ,GAAG,SAAS,EAAE,aAC3K;AACF"}
@@ -0,0 +1,131 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_purry = require("../purry-B2_0DGLV.cjs");
3
+ //#region src/set/add.ts
4
+ function addImplementation(data, value) {
5
+ return data.add(value);
6
+ }
7
+ function add(...args) {
8
+ return require_purry.purry(addImplementation, args);
9
+ }
10
+ //#endregion
11
+ //#region src/set/clear.ts
12
+ function clear(data) {
13
+ data.clear();
14
+ return data;
15
+ }
16
+ //#endregion
17
+ //#region src/set/difference.ts
18
+ function differenceImplementation(data, other) {
19
+ return data.difference(other);
20
+ }
21
+ function difference(...args) {
22
+ return require_purry.purry(differenceImplementation, args);
23
+ }
24
+ //#endregion
25
+ //#region src/set/entries.ts
26
+ function entries(data) {
27
+ return data.entries();
28
+ }
29
+ //#endregion
30
+ //#region src/set/forEach.ts
31
+ function forEachImplementation(data, callbackfn) {
32
+ data.forEach(callbackfn);
33
+ return data;
34
+ }
35
+ function forEach(...args) {
36
+ return require_purry.purry(forEachImplementation, args);
37
+ }
38
+ //#endregion
39
+ //#region src/set/from.ts
40
+ function from(iterable) {
41
+ return new Set(iterable);
42
+ }
43
+ function empty() {
44
+ return /* @__PURE__ */ new Set();
45
+ }
46
+ //#endregion
47
+ //#region src/set/has.ts
48
+ function hasImplementation(data, value) {
49
+ return data.has(value);
50
+ }
51
+ function has(...args) {
52
+ return require_purry.purry(hasImplementation, args);
53
+ }
54
+ //#endregion
55
+ //#region src/set/intersection.ts
56
+ function intersectionImplementation(data, other) {
57
+ return data.intersection(other);
58
+ }
59
+ function intersection(...args) {
60
+ return require_purry.purry(intersectionImplementation, args);
61
+ }
62
+ //#endregion
63
+ //#region src/set/isDisjointFrom.ts
64
+ function isDisjointFromImplementation(data, other) {
65
+ return data.isDisjointFrom(other);
66
+ }
67
+ function isDisjointFrom(...args) {
68
+ return require_purry.purry(isDisjointFromImplementation, args);
69
+ }
70
+ //#endregion
71
+ //#region src/set/isSubsetOf.ts
72
+ function isSubsetOfImplementation(data, other) {
73
+ return data.isSubsetOf(other);
74
+ }
75
+ function isSubsetOf(...args) {
76
+ return require_purry.purry(isSubsetOfImplementation, args);
77
+ }
78
+ //#endregion
79
+ //#region src/set/keys.ts
80
+ function keys(data) {
81
+ return data.keys();
82
+ }
83
+ //#endregion
84
+ //#region src/set/remove.ts
85
+ function removeImplementation(data, value) {
86
+ data.delete(value);
87
+ return data;
88
+ }
89
+ function remove(...args) {
90
+ return require_purry.purry(removeImplementation, args);
91
+ }
92
+ //#endregion
93
+ //#region src/set/symmetricDifference.ts
94
+ function symmetricDifferenceImplementation(data, other) {
95
+ return data.symmetricDifference(other);
96
+ }
97
+ function symmetricDifference(...args) {
98
+ return require_purry.purry(symmetricDifferenceImplementation, args);
99
+ }
100
+ //#endregion
101
+ //#region src/set/union.ts
102
+ function unionImplementation(data, other) {
103
+ return data.union(other);
104
+ }
105
+ function union(...args) {
106
+ return require_purry.purry(unionImplementation, args);
107
+ }
108
+ //#endregion
109
+ //#region src/set/values.ts
110
+ function values(data) {
111
+ return data.values();
112
+ }
113
+ //#endregion
114
+ exports.add = add;
115
+ exports.clear = clear;
116
+ exports.difference = difference;
117
+ exports.empty = empty;
118
+ exports.entries = entries;
119
+ exports.forEach = forEach;
120
+ exports.from = from;
121
+ exports.has = has;
122
+ exports.intersection = intersection;
123
+ exports.isDisjointFrom = isDisjointFrom;
124
+ exports.isSubsetOf = isSubsetOf;
125
+ exports.keys = keys;
126
+ exports.remove = remove;
127
+ exports.symmetricDifference = symmetricDifference;
128
+ exports.union = union;
129
+ exports.values = values;
130
+
131
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["purry","purry","purry","purry","purry","purry","purry","purry","purry","purry"],"sources":["../../src/set/add.ts","../../src/set/clear.ts","../../src/set/difference.ts","../../src/set/entries.ts","../../src/set/forEach.ts","../../src/set/from.ts","../../src/set/has.ts","../../src/set/intersection.ts","../../src/set/isDisjointFrom.ts","../../src/set/isSubsetOf.ts","../../src/set/keys.ts","../../src/set/remove.ts","../../src/set/symmetricDifference.ts","../../src/set/union.ts","../../src/set/values.ts"],"sourcesContent":["import { purry } from '../function/purry';\n\nfunction addImplementation<T>(data: Set<T>, value: T): Set<T> {\n return data.add(value);\n}\n\nexport function add<T>(value: T): (data: Set<T>) => Set<T>;\nexport function add<T>(data: Set<T>, value: T): Set<T>;\nexport function add(...args: readonly unknown[]): unknown {\n return purry(addImplementation, args);\n}\n","export function clear<T>(data: Set<T>): Set<T> {\n data.clear();\n return data;\n}\n","import { purry } from '../function/purry';\n\nfunction differenceImplementation<T, U>(data: Set<T>, other: ReadonlySetLike<U>): Set<T> {\n return data.difference(other);\n}\n\nexport function difference<U>(other: ReadonlySetLike<U>): <T>(data: Set<T>) => Set<T>;\nexport function difference<T, U>(data: Set<T>, other: ReadonlySetLike<U>): Set<T>;\nexport function difference(...args: readonly unknown[]): unknown {\n return purry(differenceImplementation, args);\n}\n","export function entries<T>(data: Set<T>): SetIterator<[T, T]> {\n return data.entries();\n}\n","import { purry } from '../function/purry';\n\nfunction forEachImplementation<T>(data: Set<T>, callbackfn: (value: T, key: T, set: Set<T>) => void): Set<T> {\n data.forEach(callbackfn);\n return data;\n}\n\nexport function forEach<T>(callbackfn: (value: T, key: T, set: Set<T>) => void): (data: Set<T>) => Set<T>;\nexport function forEach<T>(data: Set<T>, callbackfn: (value: T, key: T, set: Set<T>) => void): Set<T>;\nexport function forEach(...args: readonly unknown[]): unknown {\n return purry(forEachImplementation, args);\n}\n","export function from<T>(iterable: Iterable<T> | readonly T[]): Set<T> {\n return new Set(iterable);\n}\n\nexport function empty<T>(): Set<T> {\n return new Set();\n}\n","import { purry } from '../function/purry';\n\nfunction hasImplementation<T>(data: Set<T>, value: T): boolean {\n return data.has(value);\n}\n\nexport function has<T>(value: T): (data: Set<T>) => Set<T>;\nexport function has<T>(data: Set<T>, value: T): Set<T>;\nexport function has(...args: readonly unknown[]): unknown {\n return purry(hasImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction intersectionImplementation<T, U>(data: Set<T>, other: ReadonlySetLike<U>): Set<T & U> {\n return data.intersection(other);\n}\n\nexport function intersection<U>(other: ReadonlySetLike<U>): <T>(data: Set<T>) => Set<T & U>;\nexport function intersection<T, U>(data: Set<T>, other: ReadonlySetLike<U>): Set<T & U>;\nexport function intersection(...args: readonly unknown[]): unknown {\n return purry(intersectionImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction isDisjointFromImplementation<T, U>(data: Set<T>, other: ReadonlySetLike<U>): boolean {\n return data.isDisjointFrom(other);\n}\n\nexport function isDisjointFrom<U>(other: ReadonlySetLike<U>): <T>(data: Set<T>) => boolean;\nexport function isDisjointFrom<T, U>(data: Set<T>, other: ReadonlySetLike<U>): boolean;\nexport function isDisjointFrom(...args: readonly unknown[]): unknown {\n return purry(isDisjointFromImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction isSubsetOfImplementation<T, U>(data: Set<T>, other: ReadonlySetLike<U>): boolean {\n return data.isSubsetOf(other);\n}\n\nexport function isSubsetOf<U>(other: ReadonlySetLike<U>): <T>(data: Set<T>) => boolean;\nexport function isSubsetOf<T, U>(data: Set<T>, other: ReadonlySetLike<U>): boolean;\nexport function isSubsetOf(...args: readonly unknown[]): unknown {\n return purry(isSubsetOfImplementation, args);\n}\n","export function keys<T>(data: Set<T>): SetIterator<T> {\n return data.keys();\n}\n","import { purry } from '../function/purry';\n\nfunction removeImplementation<T>(data: Set<T>, value: T): Set<T> {\n data.delete(value);\n return data;\n}\n\n/**\n * TODO: should this return a tuple?\n */\nexport function remove<T>(value: T): (data: Set<T>) => Set<T>;\nexport function remove<T>(data: Set<T>, value: T): Set<T>;\nexport function remove(...args: readonly unknown[]): unknown {\n return purry(removeImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction symmetricDifferenceImplementation<T, U>(data: Set<T>, other: ReadonlySetLike<U>): Set<T | U> {\n return data.symmetricDifference(other);\n}\n\nexport function symmetricDifference<U>(other: ReadonlySetLike<U>): <T>(data: Set<T>) => Set<T | U>;\nexport function symmetricDifference<T, U>(data: Set<T>, other: ReadonlySetLike<U>): Set<T | U>;\nexport function symmetricDifference(...args: readonly unknown[]): unknown {\n return purry(symmetricDifferenceImplementation, args);\n}\n","import { purry } from '../function/purry';\n\nfunction unionImplementation<T, U>(data: Set<T>, other: ReadonlySetLike<U>): Set<T | U> {\n return data.union(other);\n}\n\nexport function union<U>(other: ReadonlySetLike<U>): <T>(data: Set<T>) => Set<T | U>;\nexport function union<T, U>(data: Set<T>, other: ReadonlySetLike<U>): Set<T | U>;\nexport function union(...args: readonly unknown[]): unknown {\n return purry(unionImplementation, args);\n}\n","export function values<T>(data: Set<T>): SetIterator<T> {\n return data.values();\n}\n"],"mappings":";;;AAEA,SAAS,kBAAqB,MAAc,OAAkB;CAC5D,OAAO,KAAK,IAAI,KAAK;AACvB;AAIA,SAAgB,IAAI,GAAG,MAAmC;CACxD,OAAOA,cAAAA,MAAM,mBAAmB,IAAI;AACtC;;;ACVA,SAAgB,MAAS,MAAsB;CAC7C,KAAK,MAAM;CACX,OAAO;AACT;;;ACDA,SAAS,yBAA+B,MAAc,OAAmC;CACvF,OAAO,KAAK,WAAW,KAAK;AAC9B;AAIA,SAAgB,WAAW,GAAG,MAAmC;CAC/D,OAAOC,cAAAA,MAAM,0BAA0B,IAAI;AAC7C;;;ACVA,SAAgB,QAAW,MAAmC;CAC5D,OAAO,KAAK,QAAQ;AACtB;;;ACAA,SAAS,sBAAyB,MAAc,YAA6D;CAC3G,KAAK,QAAQ,UAAU;CACvB,OAAO;AACT;AAIA,SAAgB,QAAQ,GAAG,MAAmC;CAC5D,OAAOC,cAAAA,MAAM,uBAAuB,IAAI;AAC1C;;;ACXA,SAAgB,KAAQ,UAA8C;CACpE,OAAO,IAAI,IAAI,QAAQ;AACzB;AAEA,SAAgB,QAAmB;CACjC,uBAAO,IAAI,IAAI;AACjB;;;ACJA,SAAS,kBAAqB,MAAc,OAAmB;CAC7D,OAAO,KAAK,IAAI,KAAK;AACvB;AAIA,SAAgB,IAAI,GAAG,MAAmC;CACxD,OAAOC,cAAAA,MAAM,mBAAmB,IAAI;AACtC;;;ACRA,SAAS,2BAAiC,MAAc,OAAuC;CAC7F,OAAO,KAAK,aAAa,KAAK;AAChC;AAIA,SAAgB,aAAa,GAAG,MAAmC;CACjE,OAAOC,cAAAA,MAAM,4BAA4B,IAAI;AAC/C;;;ACRA,SAAS,6BAAmC,MAAc,OAAoC;CAC5F,OAAO,KAAK,eAAe,KAAK;AAClC;AAIA,SAAgB,eAAe,GAAG,MAAmC;CACnE,OAAOC,cAAAA,MAAM,8BAA8B,IAAI;AACjD;;;ACRA,SAAS,yBAA+B,MAAc,OAAoC;CACxF,OAAO,KAAK,WAAW,KAAK;AAC9B;AAIA,SAAgB,WAAW,GAAG,MAAmC;CAC/D,OAAOC,cAAAA,MAAM,0BAA0B,IAAI;AAC7C;;;ACVA,SAAgB,KAAQ,MAA8B;CACpD,OAAO,KAAK,KAAK;AACnB;;;ACAA,SAAS,qBAAwB,MAAc,OAAkB;CAC/D,KAAK,OAAO,KAAK;CACjB,OAAO;AACT;AAOA,SAAgB,OAAO,GAAG,MAAmC;CAC3D,OAAOC,cAAAA,MAAM,sBAAsB,IAAI;AACzC;;;ACZA,SAAS,kCAAwC,MAAc,OAAuC;CACpG,OAAO,KAAK,oBAAoB,KAAK;AACvC;AAIA,SAAgB,oBAAoB,GAAG,MAAmC;CACxE,OAAOC,cAAAA,MAAM,mCAAmC,IAAI;AACtD;;;ACRA,SAAS,oBAA0B,MAAc,OAAuC;CACtF,OAAO,KAAK,MAAM,KAAK;AACzB;AAIA,SAAgB,MAAM,GAAG,MAAmC;CAC1D,OAAOC,cAAAA,MAAM,qBAAqB,IAAI;AACxC;;;ACVA,SAAgB,OAAU,MAA8B;CACtD,OAAO,KAAK,OAAO;AACrB"}