@cargo-ai/utils 1.0.4

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 (251) hide show
  1. package/build/array.js +52 -0
  2. package/build/collection.js +155 -0
  3. package/build/components.js +56 -0
  4. package/build/cron.js +19 -0
  5. package/build/delay.js +52 -0
  6. package/build/hooks/index.js +35 -0
  7. package/build/hooks/useClickOutside.js +46 -0
  8. package/build/hooks/useCountAnimation.js +34 -0
  9. package/build/hooks/useDeviceType.js +54 -0
  10. package/build/hooks/useEventListener.js +27 -0
  11. package/build/hooks/useHeight.js +26 -0
  12. package/build/hooks/usePictureInPicture.js +126 -0
  13. package/build/hooks/useResizeObserver.js +35 -0
  14. package/build/hooks/useScrollPosition.js +22 -0
  15. package/build/hooks/useStepper.js +138 -0
  16. package/build/hooks/useStorageState.js +110 -0
  17. package/build/hooks/useVideoPlayer/VideoManager.js +78 -0
  18. package/build/hooks/useVideoPlayer/index.js +5 -0
  19. package/build/hooks/useVideoPlayer/useVideoPlayer.js +100 -0
  20. package/build/hooks/useWillUnmountEffect.js +13 -0
  21. package/build/index.js +28 -0
  22. package/build/json.js +81 -0
  23. package/build/random.js +7 -0
  24. package/build/src/array.d.ts +16 -0
  25. package/build/src/array.d.ts.map +1 -0
  26. package/build/src/array.js +81 -0
  27. package/build/src/base64.d.ts +3 -0
  28. package/build/src/base64.d.ts.map +1 -0
  29. package/build/src/base64.js +6 -0
  30. package/build/src/bytes.d.ts +7 -0
  31. package/build/src/bytes.d.ts.map +1 -0
  32. package/build/src/bytes.js +71 -0
  33. package/build/src/collection/deepMergeObjects.d.ts +2 -0
  34. package/build/src/collection/deepMergeObjects.d.ts.map +1 -0
  35. package/build/src/collection/deepMergeObjects.js +30 -0
  36. package/build/src/collection/index.d.ts +2 -0
  37. package/build/src/collection/index.d.ts.map +1 -0
  38. package/build/src/collection/index.js +1 -0
  39. package/build/src/collection.d.ts +22 -0
  40. package/build/src/collection.d.ts.map +1 -0
  41. package/build/src/collection.js +210 -0
  42. package/build/src/colors.d.ts +2 -0
  43. package/build/src/colors.d.ts.map +1 -0
  44. package/build/src/colors.js +14 -0
  45. package/build/src/components.d.ts +4 -0
  46. package/build/src/components.js +45 -0
  47. package/build/src/credits.d.ts +7 -0
  48. package/build/src/credits.d.ts.map +1 -0
  49. package/build/src/credits.js +88 -0
  50. package/build/src/cron.d.ts +3 -0
  51. package/build/src/cron.d.ts.map +1 -0
  52. package/build/src/cron.js +16 -0
  53. package/build/src/date/getContextTimezone.d.ts +2 -0
  54. package/build/src/date/getContextTimezone.d.ts.map +1 -0
  55. package/build/src/date/getContextTimezone.js +3 -0
  56. package/build/src/date/getDate.d.ts +8 -0
  57. package/build/src/date/getDate.d.ts.map +1 -0
  58. package/build/src/date/getDate.js +25 -0
  59. package/build/src/date/getDateString.d.ts +8 -0
  60. package/build/src/date/getDateString.d.ts.map +1 -0
  61. package/build/src/date/getDateString.js +13 -0
  62. package/build/src/date/getDatesDifferenceString.d.ts +2 -0
  63. package/build/src/date/getDatesDifferenceString.d.ts.map +1 -0
  64. package/build/src/date/getDatesDifferenceString.js +17 -0
  65. package/build/src/date/getTimeFromNowString.d.ts +2 -0
  66. package/build/src/date/getTimeFromNowString.d.ts.map +1 -0
  67. package/build/src/date/getTimeFromNowString.js +8 -0
  68. package/build/src/date/getTimezoneHoursOffset.d.ts +2 -0
  69. package/build/src/date/getTimezoneHoursOffset.d.ts.map +1 -0
  70. package/build/src/date/getTimezoneHoursOffset.js +7 -0
  71. package/build/src/date/getTimezoneOffsetString.d.ts +2 -0
  72. package/build/src/date/getTimezoneOffsetString.d.ts.map +1 -0
  73. package/build/src/date/getTimezoneOffsetString.js +8 -0
  74. package/build/src/date/index.d.ts +8 -0
  75. package/build/src/date/index.d.ts.map +1 -0
  76. package/build/src/date/index.js +7 -0
  77. package/build/src/date.d.ts +13 -0
  78. package/build/src/date.d.ts.map +1 -0
  79. package/build/src/date.js +14 -0
  80. package/build/src/delay.d.ts +7 -0
  81. package/build/src/delay.d.ts.map +1 -0
  82. package/build/src/delay.js +19 -0
  83. package/build/src/expression/getExpressionNodesReferences.d.ts +17 -0
  84. package/build/src/expression/getExpressionNodesReferences.d.ts.map +1 -0
  85. package/build/src/expression/getExpressionNodesReferences.js +71 -0
  86. package/build/src/expression/getObjectAccessKeysBeforeCursor.d.ts +17 -0
  87. package/build/src/expression/getObjectAccessKeysBeforeCursor.d.ts.map +1 -0
  88. package/build/src/expression/getObjectAccessKeysBeforeCursor.js +97 -0
  89. package/build/src/expression/index.d.ts +3 -0
  90. package/build/src/expression/index.d.ts.map +1 -0
  91. package/build/src/expression/index.js +2 -0
  92. package/build/src/expression/jsonSchema.d.ts +4 -0
  93. package/build/src/expression/jsonSchema.d.ts.map +1 -0
  94. package/build/src/expression/jsonSchema.js +85 -0
  95. package/build/src/expression/matchIsExpression.d.ts +2 -0
  96. package/build/src/expression/matchIsExpression.d.ts.map +1 -0
  97. package/build/src/expression/matchIsExpression.js +10 -0
  98. package/build/src/expression/matchIsExpressionObject.d.ts +2 -0
  99. package/build/src/expression/matchIsExpressionObject.d.ts.map +1 -0
  100. package/build/src/expression/matchIsExpressionObject.js +10 -0
  101. package/build/src/expression/matchIsExpressionString.d.ts +2 -0
  102. package/build/src/expression/matchIsExpressionString.d.ts.map +1 -0
  103. package/build/src/expression/matchIsExpressionString.js +4 -0
  104. package/build/src/gclid.d.ts +4 -0
  105. package/build/src/gclid.d.ts.map +1 -0
  106. package/build/src/gclid.js +30 -0
  107. package/build/src/hooks/index.d.ts +12 -0
  108. package/build/src/hooks/index.js +12 -0
  109. package/build/src/hooks/useClickOutside.d.ts +4 -0
  110. package/build/src/hooks/useClickOutside.js +42 -0
  111. package/build/src/hooks/useCountAnimation.d.ts +1 -0
  112. package/build/src/hooks/useCountAnimation.js +30 -0
  113. package/build/src/hooks/useDeviceType.d.ts +2 -0
  114. package/build/src/hooks/useDeviceType.js +50 -0
  115. package/build/src/hooks/useEventListener.d.ts +6 -0
  116. package/build/src/hooks/useEventListener.js +23 -0
  117. package/build/src/hooks/useHeight.d.ts +2 -0
  118. package/build/src/hooks/useHeight.js +20 -0
  119. package/build/src/hooks/usePictureInPicture.d.ts +9 -0
  120. package/build/src/hooks/usePictureInPicture.js +60 -0
  121. package/build/src/hooks/useResizeObserver.d.ts +4 -0
  122. package/build/src/hooks/useResizeObserver.js +31 -0
  123. package/build/src/hooks/useScrollPosition.d.ts +5 -0
  124. package/build/src/hooks/useScrollPosition.js +18 -0
  125. package/build/src/hooks/useStepper.d.ts +26 -0
  126. package/build/src/hooks/useStepper.js +136 -0
  127. package/build/src/hooks/useStorageState.d.ts +12 -0
  128. package/build/src/hooks/useStorageState.js +53 -0
  129. package/build/src/hooks/useVideoPlayer/VideoManager.d.ts +18 -0
  130. package/build/src/hooks/useVideoPlayer/VideoManager.js +72 -0
  131. package/build/src/hooks/useVideoPlayer/index.d.ts +1 -0
  132. package/build/src/hooks/useVideoPlayer/index.js +1 -0
  133. package/build/src/hooks/useVideoPlayer/useVideoPlayer.d.ts +15 -0
  134. package/build/src/hooks/useVideoPlayer/useVideoPlayer.js +96 -0
  135. package/build/src/hooks/useWillUnmountEffect.d.ts +1 -0
  136. package/build/src/hooks/useWillUnmountEffect.js +8 -0
  137. package/build/src/index.d.ts +27 -0
  138. package/build/src/index.d.ts.map +1 -0
  139. package/build/src/index.js +26 -0
  140. package/build/src/integration.d.ts +14 -0
  141. package/build/src/integration.d.ts.map +1 -0
  142. package/build/src/integration.js +72 -0
  143. package/build/src/json/castToJsonType.d.ts +5 -0
  144. package/build/src/json/castToJsonType.d.ts.map +1 -0
  145. package/build/src/json/castToJsonType.js +58 -0
  146. package/build/src/json/cleanJson.d.ts +3 -0
  147. package/build/src/json/cleanJson.d.ts.map +1 -0
  148. package/build/src/json/cleanJson.js +18 -0
  149. package/build/src/json/constants.d.ts +3 -0
  150. package/build/src/json/constants.d.ts.map +1 -0
  151. package/build/src/json/constants.js +9 -0
  152. package/build/src/json/getJsonType.d.ts +3 -0
  153. package/build/src/json/getJsonType.d.ts.map +1 -0
  154. package/build/src/json/getJsonType.js +24 -0
  155. package/build/src/json/index.d.ts +8 -0
  156. package/build/src/json/index.d.ts.map +1 -0
  157. package/build/src/json/index.js +7 -0
  158. package/build/src/json/isJson.d.ts +2 -0
  159. package/build/src/json/isJson.d.ts.map +1 -0
  160. package/build/src/json/isJson.js +9 -0
  161. package/build/src/json/isJsonSchemaEmpty.d.ts +3 -0
  162. package/build/src/json/isJsonSchemaEmpty.d.ts.map +1 -0
  163. package/build/src/json/isJsonSchemaEmpty.js +7 -0
  164. package/build/src/json/stringifyJson.d.ts +2 -0
  165. package/build/src/json/stringifyJson.d.ts.map +1 -0
  166. package/build/src/json/stringifyJson.js +6 -0
  167. package/build/src/json/types.d.ts +2 -0
  168. package/build/src/json/types.d.ts.map +1 -0
  169. package/build/src/json/types.js +1 -0
  170. package/build/src/json.d.ts +13 -0
  171. package/build/src/json.d.ts.map +1 -0
  172. package/build/src/json.js +107 -0
  173. package/build/src/jsonSchema/index.d.ts +10 -0
  174. package/build/src/jsonSchema/index.d.ts.map +1 -0
  175. package/build/src/jsonSchema/index.js +198 -0
  176. package/build/src/jsonSchema.d.ts +5 -0
  177. package/build/src/jsonSchema.d.ts.map +1 -0
  178. package/build/src/jsonSchema.js +73 -0
  179. package/build/src/number/formatCredits.d.ts +2 -0
  180. package/build/src/number/formatCredits.d.ts.map +1 -0
  181. package/build/src/number/formatCredits.js +7 -0
  182. package/build/src/number/formatPrice.d.ts +2 -0
  183. package/build/src/number/formatPrice.d.ts.map +1 -0
  184. package/build/src/number/formatPrice.js +8 -0
  185. package/build/src/number/getNumberWithMaxDecimals.d.ts +2 -0
  186. package/build/src/number/getNumberWithMaxDecimals.d.ts.map +1 -0
  187. package/build/src/number/getNumberWithMaxDecimals.js +3 -0
  188. package/build/src/number/index.d.ts +4 -0
  189. package/build/src/number/index.d.ts.map +1 -0
  190. package/build/src/number/index.js +3 -0
  191. package/build/src/poll.d.ts +5 -0
  192. package/build/src/poll.d.ts.map +1 -0
  193. package/build/src/poll.js +30 -0
  194. package/build/src/random.d.ts +2 -0
  195. package/build/src/random.d.ts.map +1 -0
  196. package/build/src/random.js +3 -0
  197. package/build/src/schema.d.ts +24 -0
  198. package/build/src/schema.d.ts.map +1 -0
  199. package/build/src/schema.js +315 -0
  200. package/build/src/searchInTree.d.ts +46 -0
  201. package/build/src/searchInTree.d.ts.map +1 -0
  202. package/build/src/searchInTree.js +67 -0
  203. package/build/src/storage.d.ts +13 -0
  204. package/build/src/storage.d.ts.map +1 -0
  205. package/build/src/storage.js +169 -0
  206. package/build/src/string/capitalizeFirstLetter.d.ts +2 -0
  207. package/build/src/string/capitalizeFirstLetter.d.ts.map +1 -0
  208. package/build/src/string/capitalizeFirstLetter.js +3 -0
  209. package/build/src/string/findAllIndexOf.d.ts +2 -0
  210. package/build/src/string/findAllIndexOf.d.ts.map +1 -0
  211. package/build/src/string/findAllIndexOf.js +13 -0
  212. package/build/src/string/getHash.d.ts +2 -0
  213. package/build/src/string/getHash.d.ts.map +1 -0
  214. package/build/src/string/getHash.js +9 -0
  215. package/build/src/string/index.d.ts +5 -0
  216. package/build/src/string/index.d.ts.map +1 -0
  217. package/build/src/string/index.js +4 -0
  218. package/build/src/string/sentenceCase.d.ts +2 -0
  219. package/build/src/string/sentenceCase.d.ts.map +1 -0
  220. package/build/src/string/sentenceCase.js +38 -0
  221. package/build/src/string.d.ts +2 -0
  222. package/build/src/string.d.ts.map +1 -0
  223. package/build/src/string.js +3 -0
  224. package/build/src/type.d.ts +10 -0
  225. package/build/src/type.js +1 -0
  226. package/build/src/types.d.ts +22 -0
  227. package/build/src/types.d.ts.map +1 -0
  228. package/build/src/types.js +1 -0
  229. package/build/src/user.d.ts +3 -0
  230. package/build/src/user.d.ts.map +1 -0
  231. package/build/src/user.js +7 -0
  232. package/build/src/validation/index.d.ts +2 -0
  233. package/build/src/validation/index.d.ts.map +1 -0
  234. package/build/src/validation/index.js +1 -0
  235. package/build/src/validation/matchIsObjectLike.d.ts +2 -0
  236. package/build/src/validation/matchIsObjectLike.d.ts.map +1 -0
  237. package/build/src/validation/matchIsObjectLike.js +4 -0
  238. package/build/src/vm.d.ts +1 -0
  239. package/build/src/vm.js +32 -0
  240. package/build/src/zod/index.d.ts +14 -0
  241. package/build/src/zod/index.d.ts.map +1 -0
  242. package/build/src/zod/index.js +210 -0
  243. package/build/src/zod.d.ts +8 -0
  244. package/build/src/zod.d.ts.map +1 -0
  245. package/build/src/zod.js +89 -0
  246. package/build/storage.js +285 -0
  247. package/build/string.js +17 -0
  248. package/build/tsconfig.tsbuildinfo +1 -0
  249. package/build/type.js +2 -0
  250. package/build/user.js +12 -0
  251. package/package.json +50 -0
@@ -0,0 +1,8 @@
1
+ import type Zod from "zod/v4";
2
+ import { z } from "zod/v4";
3
+ export declare const zodEnum: <T extends string>(values: T[]) => Zod.ZodEnum<{ [k_1 in T]: k_1; } extends infer T_1 ? { [k in keyof T_1]: { [k_1 in T]: k_1; }[k]; } : never>;
4
+ export declare const unwrapZod: (schema: z.ZodType) => z.ZodType;
5
+ export declare const getZodType: (schema: z.ZodType) => string;
6
+ export declare const getZodFromPath: (schema: z.ZodType, path: string[]) => z.ZodType | undefined;
7
+ export declare const derivePartialZod: (schema: z.ZodType, paths: string[][]) => z.ZodType;
8
+ //# sourceMappingURL=zod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zod.d.ts","sourceRoot":"","sources":["../../src/zod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAI3B,eAAO,MAAM,OAAO,iJAEnB,CAAC;AAEF,eAAO,MAAM,SAAS,WAAY,EAAE,OAAO,KAAG,EAAE,OAe/C,CAAC;AAEF,eAAO,MAAM,UAAU,WAAY,EAAE,OAAO,KAAG,MAE9C,CAAC;AAUF,eAAO,MAAM,cAAc,WACjB,EAAE,OAAO,QACX,MAAM,EAAE,KACb,EAAE,OAAO,GAAG,SAyBd,CAAC;AAEF,eAAO,MAAM,gBAAgB,WACnB,EAAE,OAAO,SACV,MAAM,EAAE,EAAE,KAChB,EAAE,OAmEJ,CAAC"}
@@ -0,0 +1,89 @@
1
+ import { z } from "zod/v4";
2
+ import { getEntries, getValues } from "./collection.js";
3
+ export const zodEnum = (values) => {
4
+ return z.enum(values);
5
+ };
6
+ export const unwrapZod = (schema) => {
7
+ const typeName = schema.def.type;
8
+ if (typeName === "optional" ||
9
+ typeName === "nullable" ||
10
+ typeName === "default") {
11
+ const innerSchema = schema.def
12
+ .innerType;
13
+ return unwrapZod(innerSchema);
14
+ }
15
+ return schema;
16
+ };
17
+ export const getZodType = (schema) => {
18
+ return schema.def.type; // @aureeaubert - to support multiple types, we need to return an array of strings
19
+ };
20
+ const getZodArrayElement = (schema) => {
21
+ return schema.def.element;
22
+ };
23
+ const getZodObjectShape = (schema) => {
24
+ return schema.def.shape;
25
+ };
26
+ export const getZodFromPath = (schema, path) => {
27
+ const [head, ...nested] = path;
28
+ if (head === undefined) {
29
+ return schema;
30
+ }
31
+ const unwrappedSchemaSchema = unwrapZod(schema);
32
+ const typeName = getZodType(unwrappedSchemaSchema);
33
+ if (typeName === "array") {
34
+ return getZodFromPath(getZodArrayElement(unwrappedSchemaSchema), nested);
35
+ }
36
+ if (typeName === "object") {
37
+ const shape = getZodObjectShape(unwrappedSchemaSchema)[head];
38
+ if (shape === undefined) {
39
+ return undefined;
40
+ }
41
+ return getZodFromPath(shape, nested);
42
+ }
43
+ return undefined;
44
+ };
45
+ export const derivePartialZod = (schema, paths) => {
46
+ if (paths.length === 0) {
47
+ return z.object({});
48
+ }
49
+ const unwrappedSchema = unwrapZod(schema);
50
+ const typeName = getZodType(unwrappedSchema);
51
+ const groupedPaths = paths.reduce((acc, [head, ...nested]) => {
52
+ if (head === undefined) {
53
+ return acc;
54
+ }
55
+ const currentPaths = acc[head];
56
+ if (currentPaths === undefined) {
57
+ return { ...acc, [head]: [nested] };
58
+ }
59
+ return {
60
+ ...acc,
61
+ [head]: [...currentPaths, nested],
62
+ };
63
+ }, {});
64
+ if (typeName === "object") {
65
+ const shape = getZodObjectShape(unwrappedSchema);
66
+ const newShape = getEntries(groupedPaths).reduce((acc, [head, nestedPaths]) => {
67
+ const subSchema = shape[head];
68
+ if (subSchema === undefined) {
69
+ return acc;
70
+ }
71
+ const hasEmptyPath = nestedPaths.some((path) => path.length === 0);
72
+ if (hasEmptyPath === true) {
73
+ return { ...acc, [head]: subSchema };
74
+ }
75
+ return { ...acc, [head]: derivePartialZod(subSchema, nestedPaths) };
76
+ }, {});
77
+ return z.object(newShape);
78
+ }
79
+ if (typeName === "array") {
80
+ const element = getZodArrayElement(unwrappedSchema);
81
+ const allNestedPaths = getValues(groupedPaths).flat();
82
+ const hasEmptyPath = allNestedPaths.some((path) => path.length === 0);
83
+ if (hasEmptyPath === true) {
84
+ return unwrappedSchema;
85
+ }
86
+ return z.array(derivePartialZod(element, allNestedPaths));
87
+ }
88
+ return unwrappedSchema;
89
+ };
@@ -0,0 +1,285 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.removeItemFromStorage = exports.setItemInStorage = exports.getItemFromStorage = exports.matchIsIndexedDBSupported = exports.matchIsLocalStorageSupported = void 0;
40
+ var idb_keyval_1 = require("idb-keyval");
41
+ var cachedIsLocalStorageSupported = undefined;
42
+ var cachedIsIndexedDBSupportedPromise = undefined;
43
+ // https://github.com/Modernizr/Modernizr/blob/master/feature-detects/storage/localstorage.js
44
+ var matchIsLocalStorageSupported = function () {
45
+ if (cachedIsLocalStorageSupported !== undefined) {
46
+ return cachedIsLocalStorageSupported;
47
+ }
48
+ var mod = "modernizr";
49
+ try {
50
+ window.localStorage.setItem(mod, mod);
51
+ window.localStorage.removeItem(mod);
52
+ cachedIsLocalStorageSupported = true;
53
+ return true;
54
+ }
55
+ catch (_a) {
56
+ cachedIsLocalStorageSupported = false;
57
+ return false;
58
+ }
59
+ };
60
+ exports.matchIsLocalStorageSupported = matchIsLocalStorageSupported;
61
+ // https://github.com/Modernizr/Modernizr/blob/master/feature-detects/storage/indexeddb.js
62
+ var matchIsIndexedDBSupported = function () { return __awaiter(void 0, void 0, void 0, function () {
63
+ var matchIsCreateDatabaseSupported, matchIsDeleteDatabaseSupported, indexeddb, testDBName_1, isSupportedPromise, isSupported, _a;
64
+ return __generator(this, function (_b) {
65
+ switch (_b.label) {
66
+ case 0:
67
+ if (cachedIsIndexedDBSupportedPromise !== undefined) {
68
+ return [2 /*return*/, cachedIsIndexedDBSupportedPromise];
69
+ }
70
+ matchIsCreateDatabaseSupported = function (indexeddb, testDBName) { return __awaiter(void 0, void 0, void 0, function () {
71
+ var isSupported, _a;
72
+ return __generator(this, function (_b) {
73
+ switch (_b.label) {
74
+ case 0:
75
+ _b.trys.push([0, 2, , 3]);
76
+ return [4 /*yield*/, new Promise(function (resolve) {
77
+ var req = indexeddb.open(testDBName);
78
+ req.onsuccess = function () {
79
+ resolve(true);
80
+ };
81
+ req.onerror = function (event) {
82
+ if (req.error &&
83
+ (req.error.name === "InvalidStateError" ||
84
+ req.error.name === "UnknownError")) {
85
+ event.preventDefault();
86
+ resolve(false);
87
+ return;
88
+ }
89
+ resolve(true);
90
+ };
91
+ })];
92
+ case 1:
93
+ isSupported = _b.sent();
94
+ return [2 /*return*/, isSupported];
95
+ case 2:
96
+ _a = _b.sent();
97
+ return [2 /*return*/, false];
98
+ case 3: return [2 /*return*/];
99
+ }
100
+ });
101
+ }); };
102
+ matchIsDeleteDatabaseSupported = function (indexeddb, testDBName) { return __awaiter(void 0, void 0, void 0, function () {
103
+ var isSupported, _a;
104
+ return __generator(this, function (_b) {
105
+ switch (_b.label) {
106
+ case 0:
107
+ _b.trys.push([0, 2, , 3]);
108
+ return [4 /*yield*/, new Promise(function (resolve) {
109
+ var deleteReq = indexeddb.deleteDatabase(testDBName);
110
+ deleteReq.onsuccess = function () {
111
+ resolve(true);
112
+ };
113
+ deleteReq.onerror = function () {
114
+ resolve(false);
115
+ };
116
+ })];
117
+ case 1:
118
+ isSupported = _b.sent();
119
+ return [2 /*return*/, isSupported];
120
+ case 2:
121
+ _a = _b.sent();
122
+ return [2 /*return*/, false];
123
+ case 3: return [2 /*return*/];
124
+ }
125
+ });
126
+ }); };
127
+ indexeddb = null;
128
+ try {
129
+ // Firefox throws a Security Error when cookies are disabled
130
+ indexeddb = window.indexedDB;
131
+ }
132
+ catch (_c) {
133
+ cachedIsIndexedDBSupportedPromise = false;
134
+ return [2 /*return*/, false];
135
+ }
136
+ if (indexeddb === null) {
137
+ cachedIsIndexedDBSupportedPromise = false;
138
+ return [2 /*return*/, false];
139
+ }
140
+ _b.label = 1;
141
+ case 1:
142
+ _b.trys.push([1, 3, , 4]);
143
+ testDBName_1 = "modernizr-".concat(Math.random());
144
+ isSupportedPromise = matchIsCreateDatabaseSupported(indexeddb, testDBName_1).then(function (isCreateDatabaseSupported) {
145
+ if (isCreateDatabaseSupported === false) {
146
+ return false;
147
+ }
148
+ return matchIsDeleteDatabaseSupported(indexeddb, testDBName_1);
149
+ });
150
+ cachedIsIndexedDBSupportedPromise = isSupportedPromise;
151
+ return [4 /*yield*/, isSupportedPromise];
152
+ case 2:
153
+ isSupported = _b.sent();
154
+ cachedIsIndexedDBSupportedPromise = isSupported;
155
+ return [2 /*return*/, isSupported];
156
+ case 3:
157
+ _a = _b.sent();
158
+ cachedIsIndexedDBSupportedPromise = false;
159
+ return [2 /*return*/, false];
160
+ case 4: return [2 /*return*/];
161
+ }
162
+ });
163
+ }); };
164
+ exports.matchIsIndexedDBSupported = matchIsIndexedDBSupported;
165
+ var getItemFromStorage = function (key, options) {
166
+ if (options === void 0) { options = {}; }
167
+ return __awaiter(void 0, void 0, void 0, function () {
168
+ var _a, storage, getOnLocalStorage, getOnIndexedDB, isIndexedDBSupported, isLocalStorageSupported;
169
+ return __generator(this, function (_b) {
170
+ switch (_b.label) {
171
+ case 0:
172
+ _a = options.storage, storage = _a === void 0 ? "localStorage" : _a;
173
+ getOnLocalStorage = function () {
174
+ var stringifiedValue = window.localStorage.getItem(key);
175
+ if (!stringifiedValue) {
176
+ return undefined;
177
+ }
178
+ return JSON.parse(stringifiedValue);
179
+ };
180
+ getOnIndexedDB = function () {
181
+ return (0, idb_keyval_1.get)(key);
182
+ };
183
+ if (!(storage === "indexedDB")) return [3 /*break*/, 2];
184
+ return [4 /*yield*/, (0, exports.matchIsIndexedDBSupported)()];
185
+ case 1:
186
+ isIndexedDBSupported = _b.sent();
187
+ if (isIndexedDBSupported === true) {
188
+ return [2 /*return*/, getOnIndexedDB()];
189
+ }
190
+ _b.label = 2;
191
+ case 2:
192
+ isLocalStorageSupported = (0, exports.matchIsLocalStorageSupported)();
193
+ if (isLocalStorageSupported === false) {
194
+ return [2 /*return*/, undefined];
195
+ }
196
+ return [2 /*return*/, getOnLocalStorage()];
197
+ }
198
+ });
199
+ });
200
+ };
201
+ exports.getItemFromStorage = getItemFromStorage;
202
+ var setItemInStorage = function (key, value, options) {
203
+ if (options === void 0) { options = {}; }
204
+ return __awaiter(void 0, void 0, void 0, function () {
205
+ var _a, storage, setOnLocalStorage, setOnIndexedDB, isIndexedDBSupported, isLocalStorageSupported;
206
+ return __generator(this, function (_b) {
207
+ switch (_b.label) {
208
+ case 0:
209
+ _a = options.storage, storage = _a === void 0 ? "localStorage" : _a;
210
+ setOnLocalStorage = function () {
211
+ var stringifiedValue = JSON.stringify(value);
212
+ window.localStorage.setItem(key, stringifiedValue);
213
+ return value;
214
+ };
215
+ setOnIndexedDB = function () { return __awaiter(void 0, void 0, void 0, function () {
216
+ return __generator(this, function (_a) {
217
+ switch (_a.label) {
218
+ case 0: return [4 /*yield*/, (0, idb_keyval_1.set)(key, value)];
219
+ case 1:
220
+ _a.sent();
221
+ return [2 /*return*/, value];
222
+ }
223
+ });
224
+ }); };
225
+ if (!(storage === "indexedDB")) return [3 /*break*/, 2];
226
+ return [4 /*yield*/, (0, exports.matchIsIndexedDBSupported)()];
227
+ case 1:
228
+ isIndexedDBSupported = _b.sent();
229
+ if (isIndexedDBSupported === true) {
230
+ return [2 /*return*/, setOnIndexedDB()];
231
+ }
232
+ _b.label = 2;
233
+ case 2:
234
+ isLocalStorageSupported = (0, exports.matchIsLocalStorageSupported)();
235
+ if (isLocalStorageSupported === false) {
236
+ return [2 /*return*/, value];
237
+ }
238
+ return [2 /*return*/, setOnLocalStorage()];
239
+ }
240
+ });
241
+ });
242
+ };
243
+ exports.setItemInStorage = setItemInStorage;
244
+ var removeItemFromStorage = function (key, options) {
245
+ if (options === void 0) { options = {}; }
246
+ return __awaiter(void 0, void 0, void 0, function () {
247
+ var _a, storage, removeOnLocalStorage, removeOnIndexedDB, isIndexedDBSupported, isLocalStorageSupported;
248
+ return __generator(this, function (_b) {
249
+ switch (_b.label) {
250
+ case 0:
251
+ _a = options.storage, storage = _a === void 0 ? "localStorage" : _a;
252
+ removeOnLocalStorage = function () {
253
+ window.localStorage.removeItem(key);
254
+ };
255
+ removeOnIndexedDB = function () { return __awaiter(void 0, void 0, void 0, function () {
256
+ return __generator(this, function (_a) {
257
+ switch (_a.label) {
258
+ case 0: return [4 /*yield*/, (0, idb_keyval_1.del)(key)];
259
+ case 1:
260
+ _a.sent();
261
+ return [2 /*return*/];
262
+ }
263
+ });
264
+ }); };
265
+ if (!(storage === "indexedDB")) return [3 /*break*/, 3];
266
+ return [4 /*yield*/, (0, exports.matchIsIndexedDBSupported)()];
267
+ case 1:
268
+ isIndexedDBSupported = _b.sent();
269
+ if (!(isIndexedDBSupported === true)) return [3 /*break*/, 3];
270
+ return [4 /*yield*/, removeOnIndexedDB()];
271
+ case 2:
272
+ _b.sent();
273
+ return [2 /*return*/];
274
+ case 3:
275
+ isLocalStorageSupported = (0, exports.matchIsLocalStorageSupported)();
276
+ if (isLocalStorageSupported === false) {
277
+ return [2 /*return*/];
278
+ }
279
+ removeOnLocalStorage();
280
+ return [2 /*return*/];
281
+ }
282
+ });
283
+ });
284
+ };
285
+ exports.removeItemFromStorage = removeItemFromStorage;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getHash = exports.capitalizeFirstLetter = void 0;
4
+ var capitalizeFirstLetter = function (string) {
5
+ return "".concat(string.charAt(0).toUpperCase()).concat(string.slice(1));
6
+ };
7
+ exports.capitalizeFirstLetter = capitalizeFirstLetter;
8
+ var getHash = function (str) {
9
+ var hash = 0;
10
+ for (var i = 0; i < str.length; i++) {
11
+ var char = str.charCodeAt(i);
12
+ hash = (hash << 5) - hash + char;
13
+ hash |= 0; // Convert to 32bit integer
14
+ }
15
+ return hash;
16
+ };
17
+ exports.getHash = getHash;