@croct/plug-react 0.10.0 → 0.11.1

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 (99) hide show
  1. package/CroctProvider.cjs +81 -0
  2. package/CroctProvider.d.cts +11 -0
  3. package/CroctProvider.d.ts +8 -4
  4. package/CroctProvider.js +57 -46
  5. package/api.cjs +22 -0
  6. package/{src/react-app-env.d.ts → api.d.cts} +1 -0
  7. package/api.d.ts +1 -0
  8. package/api.js +1 -18
  9. package/components/Personalization/index.cjs +36 -0
  10. package/components/Personalization/index.d.cts +13 -0
  11. package/components/Personalization/index.d.ts +7 -4
  12. package/components/Personalization/index.js +10 -11
  13. package/components/Slot/index.cjs +36 -0
  14. package/components/Slot/index.d.cts +22 -0
  15. package/components/Slot/index.d.ts +9 -6
  16. package/components/Slot/index.js +10 -12
  17. package/components/index.cjs +24 -0
  18. package/components/index.d.cts +9 -0
  19. package/components/index.d.ts +9 -2
  20. package/components/index.js +2 -19
  21. package/global.d.cjs +1 -0
  22. package/{src/global.d.ts → global.d.d.cts} +1 -1
  23. package/global.d.d.ts +7 -0
  24. package/global.d.js +0 -0
  25. package/hash.cjs +36 -0
  26. package/hash.d.cts +2 -0
  27. package/hash.d.ts +2 -1
  28. package/hash.js +10 -11
  29. package/hooks/Cache.cjs +88 -0
  30. package/hooks/Cache.d.cts +9 -0
  31. package/hooks/Cache.d.ts +4 -17
  32. package/hooks/Cache.js +58 -56
  33. package/hooks/index.cjs +26 -0
  34. package/hooks/index.d.cts +8 -0
  35. package/hooks/index.d.ts +8 -3
  36. package/hooks/index.js +3 -20
  37. package/hooks/useContent.cjs +93 -0
  38. package/hooks/useContent.d.cts +20 -0
  39. package/hooks/useContent.d.ts +6 -5
  40. package/hooks/useContent.js +66 -42
  41. package/hooks/useCroct.cjs +38 -0
  42. package/hooks/useCroct.d.cts +5 -0
  43. package/hooks/useCroct.d.ts +4 -1
  44. package/hooks/useCroct.js +12 -12
  45. package/hooks/useEvaluation.cjs +85 -0
  46. package/hooks/useEvaluation.d.cts +14 -0
  47. package/hooks/useEvaluation.d.ts +5 -3
  48. package/hooks/useEvaluation.js +54 -45
  49. package/hooks/useLoader.cjs +82 -0
  50. package/hooks/useLoader.d.cts +7 -0
  51. package/hooks/useLoader.d.ts +5 -3
  52. package/hooks/useLoader.js +54 -59
  53. package/index.cjs +32 -0
  54. package/index.d.cts +13 -0
  55. package/index.d.ts +10 -3
  56. package/index.js +6 -23
  57. package/package.json +42 -11
  58. package/react-app-env.d.cjs +1 -0
  59. package/react-app-env.d.d.cts +2 -0
  60. package/react-app-env.d.d.ts +2 -0
  61. package/react-app-env.d.js +0 -0
  62. package/ssr-polyfills.cjs +86 -0
  63. package/ssr-polyfills.d.cts +2 -0
  64. package/ssr-polyfills.d.ts +2 -3
  65. package/ssr-polyfills.js +49 -64
  66. package/CroctProvider.js.map +0 -1
  67. package/api.js.map +0 -1
  68. package/components/Personalization/index.js.map +0 -1
  69. package/components/Slot/index.js.map +0 -1
  70. package/components/index.js.map +0 -1
  71. package/hash.js.map +0 -1
  72. package/hooks/Cache.js.map +0 -1
  73. package/hooks/index.js.map +0 -1
  74. package/hooks/useContent.js.map +0 -1
  75. package/hooks/useCroct.js.map +0 -1
  76. package/hooks/useEvaluation.js.map +0 -1
  77. package/hooks/useLoader.js.map +0 -1
  78. package/index.js.map +0 -1
  79. package/src/api.ts +0 -1
  80. package/src/components/index.ts +0 -2
  81. package/src/hash.test.ts +0 -22
  82. package/src/hash.ts +0 -12
  83. package/src/hooks/Cache.test.ts +0 -280
  84. package/src/hooks/Cache.ts +0 -97
  85. package/src/hooks/index.ts +0 -3
  86. package/src/hooks/useContent.ssr.test.ts +0 -23
  87. package/src/hooks/useContent.test.ts +0 -183
  88. package/src/hooks/useContent.ts +0 -107
  89. package/src/hooks/useCroct.ts +0 -16
  90. package/src/hooks/useEvaluation.ssr.test.ts +0 -23
  91. package/src/hooks/useEvaluation.test.ts +0 -180
  92. package/src/hooks/useEvaluation.ts +0 -94
  93. package/src/hooks/useLoader.test.ts +0 -407
  94. package/src/hooks/useLoader.ts +0 -84
  95. package/src/index.ts +0 -6
  96. package/src/ssr-polyfills.ssr.test.ts +0 -46
  97. package/src/ssr-polyfills.test.ts +0 -65
  98. package/src/ssr-polyfills.ts +0 -70
  99. package/ssr-polyfills.js.map +0 -1
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var ssr_polyfills_exports = {};
30
+ __export(ssr_polyfills_exports, {
31
+ croct: () => croct,
32
+ isSsr: () => isSsr
33
+ });
34
+ module.exports = __toCommonJS(ssr_polyfills_exports);
35
+ var import_plug = __toESM(require("@croct/plug"), 1);
36
+ function isSsr() {
37
+ return globalThis.window?.document?.createElement === void 0;
38
+ }
39
+ const croct = !isSsr() ? function factory() {
40
+ let timeoutId = null;
41
+ let resolveCallback;
42
+ let rejectCallback;
43
+ return new Proxy(import_plug.default, {
44
+ get: function getProperty2(target, property) {
45
+ switch (property) {
46
+ case "plug":
47
+ if (timeoutId !== null) {
48
+ clearTimeout(timeoutId);
49
+ timeoutId = null;
50
+ rejectCallback?.(new Error("Unplug cancelled."));
51
+ }
52
+ break;
53
+ case "unplug":
54
+ return () => {
55
+ timeoutId = setTimeout(() => target.unplug().then(resolveCallback, rejectCallback), 100);
56
+ return new Promise((resolve, reject) => {
57
+ resolveCallback = resolve;
58
+ rejectCallback = reject;
59
+ });
60
+ };
61
+ }
62
+ return target[property];
63
+ }
64
+ });
65
+ }() : new Proxy(import_plug.default, {
66
+ get: function getProperty(_, property) {
67
+ switch (property) {
68
+ case "initialized":
69
+ return false;
70
+ case "plug":
71
+ return () => {
72
+ };
73
+ case "unplug":
74
+ return () => Promise.resolve();
75
+ default:
76
+ throw new Error(
77
+ `Property croct.${String(property)} is not supported on server-side (SSR). Consider refactoring the logic as a side-effect (useEffect) or a client-side callback (onClick, onChange, etc). For help, see https://croct.help/sdk/react/client-logic-ssr`
78
+ );
79
+ }
80
+ }
81
+ });
82
+ // Annotate the CommonJS export names for ESM import in node:
83
+ 0 && (module.exports = {
84
+ croct,
85
+ isSsr
86
+ });
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -1,3 +1,2 @@
1
- import { Plug } from '@croct/plug';
2
- export declare function isSsr(): boolean;
3
- export declare const croct: Plug;
1
+
2
+ export { }
package/ssr-polyfills.js CHANGED
@@ -1,66 +1,51 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.croct = void 0;
7
- exports.isSsr = isSsr;
8
- const plug_1 = __importDefault(require("@croct/plug"));
1
+ import csrPlug from "@croct/plug";
9
2
  function isSsr() {
10
- // eslint-disable-next-line @typescript-eslint/prefer-optional-chain -- The window can be undefined.
11
- return typeof window === 'undefined'
12
- || typeof window.document === 'undefined'
13
- || typeof window.document.createElement === 'undefined';
3
+ return globalThis.window?.document?.createElement === void 0;
14
4
  }
15
- exports.croct = !isSsr()
16
- ? (function factory() {
17
- let timeoutId = null;
18
- let resolveCallback;
19
- let rejectCallback;
20
- return new Proxy(plug_1.default, {
21
- get: function getProperty(target, property) {
22
- switch (property) {
23
- case 'plug':
24
- if (timeoutId !== null) {
25
- clearTimeout(timeoutId);
26
- timeoutId = null;
27
- rejectCallback === null || rejectCallback === void 0 ? void 0 : rejectCallback(new Error('Unplug cancelled.'));
28
- }
29
- break;
30
- case 'unplug':
31
- return () => {
32
- // Delay unplugging to avoid reconnections between remounts (e.g. strict mode).
33
- // It can be problematic when aiming to replug the SDK with a different configuration.
34
- // However, since it is an unusual use case and there is a log message to warn about
35
- // the plugin being already plugged, the trade-off is worth it.
36
- timeoutId = setTimeout(() => target.unplug().then(resolveCallback, rejectCallback), 100);
37
- return new Promise((resolve, reject) => {
38
- resolveCallback = resolve;
39
- rejectCallback = reject;
40
- });
41
- };
42
- }
43
- return target[property];
44
- },
45
- });
46
- }())
47
- : new Proxy(plug_1.default, {
48
- get: function getProperty(_, property) {
49
- switch (property) {
50
- case 'initialized':
51
- return false;
52
- case 'plug':
53
- return () => {
54
- // no-op
55
- };
56
- case 'unplug':
57
- return () => Promise.resolve();
58
- default:
59
- throw new Error(`Property croct.${String(property)} is not supported on server-side (SSR). `
60
- + 'Consider refactoring the logic as a side-effect (useEffect) or a client-side callback '
61
- + '(onClick, onChange, etc). '
62
- + 'For help, see https://croct.help/sdk/react/client-logic-ssr');
63
- }
64
- },
65
- });
66
- //# sourceMappingURL=ssr-polyfills.js.map
5
+ const croct = !isSsr() ? function factory() {
6
+ let timeoutId = null;
7
+ let resolveCallback;
8
+ let rejectCallback;
9
+ return new Proxy(csrPlug, {
10
+ get: function getProperty2(target, property) {
11
+ switch (property) {
12
+ case "plug":
13
+ if (timeoutId !== null) {
14
+ clearTimeout(timeoutId);
15
+ timeoutId = null;
16
+ rejectCallback?.(new Error("Unplug cancelled."));
17
+ }
18
+ break;
19
+ case "unplug":
20
+ return () => {
21
+ timeoutId = setTimeout(() => target.unplug().then(resolveCallback, rejectCallback), 100);
22
+ return new Promise((resolve, reject) => {
23
+ resolveCallback = resolve;
24
+ rejectCallback = reject;
25
+ });
26
+ };
27
+ }
28
+ return target[property];
29
+ }
30
+ });
31
+ }() : new Proxy(csrPlug, {
32
+ get: function getProperty(_, property) {
33
+ switch (property) {
34
+ case "initialized":
35
+ return false;
36
+ case "plug":
37
+ return () => {
38
+ };
39
+ case "unplug":
40
+ return () => Promise.resolve();
41
+ default:
42
+ throw new Error(
43
+ `Property croct.${String(property)} is not supported on server-side (SSR). Consider refactoring the logic as a side-effect (useEffect) or a client-side callback (onClick, onChange, etc). For help, see https://croct.help/sdk/react/client-logic-ssr`
44
+ );
45
+ }
46
+ }
47
+ });
48
+ export {
49
+ croct,
50
+ isSsr
51
+ };
@@ -1 +0,0 @@
1
- {"version":3,"file":"CroctProvider.js","sourceRoot":"","sources":["src/CroctProvider.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;AAEb,iCAUe;AAEf,mDAAsC;AAIzB,QAAA,YAAY,GAAG,IAAA,qBAAa,EAAoB,IAAI,CAAC,CAAC;AACnE,oBAAY,CAAC,WAAW,GAAG,cAAc,CAAC;AAE1C,SAAS,UAAU,CAAI,KAAQ;IAC3B,MAAM,GAAG,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IAE1B,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;IAEpB,OAAO,GAAG,CAAC;AACf,CAAC;AAEM,MAAM,aAAa,GAA0C,CAAC,KAAK,EAAgB,EAAE;IACxF,MAAM,EAAC,QAAQ,EAAE,GAAG,aAAa,EAAC,GAAG,KAAK,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAA,kBAAU,EAAC,oBAAY,CAAC,CAAC;IACxC,MAAM,iBAAiB,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAEpD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACX,oEAAoE;cAClE,2DAA2D,CAChE,CAAC;IACN,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,eAAO,EACnB,GAAG,EAAE,CAAC,CAAC;QACH,IAAI,IAAI;YACJ,IAAI,CAAC,qBAAK,CAAC,WAAW,EAAE,CAAC;gBACrB,qBAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC;YAED,OAAO,IAAI,KAAK,CAAC,qBAAK,EAAE;gBACpB,GAAG,EAAE,SAAS,WAAW,CAAC,MAAM,EAAE,QAAoB;oBAClD,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;wBACtB,OAAO,CAAC,OAAsB,EAAQ,EAAE;4BACpC,MAAM,CAAC,IAAI,CAAC,EAAC,GAAG,iBAAiB,CAAC,OAAO,EAAE,GAAG,OAAO,EAAC,CAAC,CAAC;wBAC5D,CAAC,CAAC;oBACN,CAAC;oBAED,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC5B,CAAC;aACJ,CAAC,CAAC;QACP,CAAC;KACJ,CAAC,EACF,CAAC,iBAAiB,CAAC,CACtB,CAAC;IAEF,IAAA,iBAAS,EACL,GAAG,EAAE;QACD,qBAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAEtC,OAAO,GAAG,EAAE;YACR,qBAAK,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;gBACtB,mBAAmB;YACvB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;IACN,CAAC,EACD,CAAC,iBAAiB,CAAC,CACtB,CAAC;IAEF,OAAO,CACH,uBAAC,oBAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,YAChC,QAAQ,GACW,CAC3B,CAAC;AACN,CAAC,CAAC;AArDW,QAAA,aAAa,iBAqDxB"}
package/api.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["src/api.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/Personalization/index.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;AAoBb,0CAKC;;AAvBD,iCAA6C;AAE7C,uCAAgE;AAgBhE,SAAgB,eAAe,CAAO,KAA4C;IAC9E,MAAM,EAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAC,GAAG,KAAK,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAA,qBAAa,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAE7C,OAAO,CAAC,uBAAC,gBAAQ,cAAE,QAAQ,CAAC,MAAM,CAAC,GAAY,CAAC,CAAC;AACrD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/Slot/index.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;AAEb,iCAAwD;AAGxD,uCAA0D;AA4BnD,MAAM,IAAI,GAAkB,CAAO,KAAkC,EAAgB,EAAE;IAC1F,MAAM,EAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,OAAO,EAAC,GAAG,KAAK,CAAC;IACzC,MAAM,IAAI,GAAG,IAAA,kBAAU,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAErC,OAAO,uBAAC,gBAAQ,cAAE,QAAQ,CAAC,IAAI,CAAC,GAAY,CAAC;AACjD,CAAC,CAAC;AALW,QAAA,IAAI,QAKf"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/components/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,yCAAuB"}
package/hash.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"hash.js","sourceRoot":"","sources":["src/hash.ts"],"names":[],"mappings":";;AAAA,oBAWC;AAXD,SAAgB,IAAI,CAAC,KAAa;IAC9B,IAAI,IAAI,GAAG,CAAC,CAAC;IAEb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAEpC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,QAAQ,CAAC;QACrC,IAAI,IAAI,CAAC,CAAC,CAAC,2BAA2B;IAC1C,CAAC;IAED,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC7B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Cache.js","sourceRoot":"","sources":["../src/hooks/Cache.ts"],"names":[],"mappings":";;;AAiBA,MAAa,KAAK;IAKd,YAAmB,iBAAyB;QAJ3B,UAAK,GAA0B,EAAE,CAAC;QAK/C,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC/C,CAAC;IAEM,IAAI,CAAI,aAA8B;QACzC,MAAM,EAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAC,GAAG,aAAa,CAAC;QAExF,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAI,QAAQ,CAAC,CAAC;QAE1C,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,WAAW,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAClC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBACzB,OAAO,QAAQ,CAAC;gBACpB,CAAC;gBAED,MAAM,WAAW,CAAC,KAAK,CAAC;YAC5B,CAAC;YAED,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACnC,OAAO,WAAW,CAAC,MAAM,CAAC;YAC9B,CAAC;YAED,MAAM,WAAW,CAAC,OAAO,CAAC;QAC9B,CAAC;QAED,MAAM,KAAK,GAAa;YACpB,OAAO,EAAE,GAAG,EAAE;gBACV,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;oBAChD,OAAO;gBACX,CAAC;gBAED,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAC7B,GAAS,EAAE;oBACP,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAChC,CAAC,EACD,UAAU,CACb,CAAC;YACN,CAAC;YACD,OAAO,EAAE,MAAM,EAAE;iBACZ,IAAI,CAAC,CAAC,MAAM,EAAK,EAAE;gBAChB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;gBAEtB,OAAO,MAAM,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,KAAK,CAAC,EAAE;gBACX,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YACxB,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE;gBACV,KAAK,CAAC,OAAO,EAAE,CAAC;YACpB,CAAC,CAAC;SACT,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QAE7B,MAAM,KAAK,CAAC,OAAO,CAAC;IACxB,CAAC;IAEM,GAAG,CAAI,QAAgB;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEnC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC9B,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAE5B,OAAO,KAAK,CAAC,OAAO,CAAC;YAErB,KAAK,CAAC,OAAO,EAAE,CAAC;QACpB,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;AA/ED,sBA+EC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,+CAA6B;AAC7B,6CAA2B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useContent.js","sourceRoot":"","sources":["../src/hooks/useContent.ts"],"names":[],"mappings":";;;AAGA,iCAA0C;AAC1C,2CAAsC;AACtC,yCAAoC;AACpC,oDAAuC;AACvC,kCAA6B;AAU7B,SAAS,aAAa,CAClB,EAAmB,EACnB,UAAmC,EAAE;;IAErC,MAAM,EACF,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,OAAO,EAAE,cAAc,EACvB,iBAAiB,GAAG,KAAK,EACzB,GAAG,YAAY,EAClB,GAAG,OAAO,CAAC;IAEZ,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAkC,cAAc,CAAC,CAAC;IACxF,MAAM,EAAC,eAAe,EAAC,GAAG,YAAY,CAAC;IACvC,MAAM,KAAK,GAAG,IAAA,mBAAQ,GAAE,CAAC;IAEzB,MAAM,MAAM,GAAwB,IAAA,qBAAS,EAAC;QAC1C,QAAQ,EAAE,IAAA,WAAI,EACV,cAAc,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,EAAE;cAC5B,IAAI,EAAE,EAAE;cACR,IAAI,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,EAAE,EAAE;cAC3B,IAAI,IAAI,CAAC,SAAS,CAAC,MAAA,YAAY,CAAC,UAAU,mCAAI,EAAE,CAAC,EAAE,CACxD;QACD,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,OAAO,EAAC,EAAE,EAAE,CAAC,OAAO,CAAC;QACxE,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,QAAQ;QAClB,UAAU,EAAE,UAAU;KACzB,CAAC,CAAC;IAEH,IAAA,iBAAS,EACL,GAAG,EAAE;QACD,IAAI,iBAAiB,EAAE,CAAC;YACpB,UAAU,CAAC,OAAO,CAAC,EAAE;gBACjB,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;oBACrB,OAAO,MAAM,CAAC;gBAClB,CAAC;gBAED,OAAO,OAAO,CAAC;YACnB,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC,EACD,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAC9B,CAAC;IAEF,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,aAAa,CAClB,CAAkB,EAClB,EAAC,OAAO,KAA6B,EAAE;IAEvC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACX,mEAAmE;cACjE,iEAAiE,CACtE,CAAC;IACN,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AA6BY,QAAA,UAAU,GAAmB,IAAA,qBAAK,GAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useCroct.js","sourceRoot":"","sources":["../src/hooks/useCroct.ts"],"names":[],"mappings":";;AAIA,4BAWC;AAdD,iCAAiC;AACjC,oDAA8C;AAE9C,SAAgB,QAAQ;IACpB,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,4BAAY,CAAC,CAAC;IAEzC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACX,6EAA6E;cAC3E,6DAA6D,CAClE,CAAC;IACN,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC;AACxB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useEvaluation.js","sourceRoot":"","sources":["../src/hooks/useEvaluation.ts"],"names":[],"mappings":";;;AAEA,iCAA0C;AAC1C,2CAAsC;AACtC,yCAAoC;AACpC,oDAAuC;AACvC,kCAA6B;AAe7B,SAAS,gBAAgB,CACrB,KAAa,EACb,UAAsC,EAAE;;IAExC,MAAM,EACF,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,iBAAiB,GAAG,KAAK,EACzB,OAAO,EAAE,YAAY,EACrB,GAAG,iBAAiB,EACvB,GAAG,OAAO,CAAC;IAEZ,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAwB,YAAY,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAG,IAAA,mBAAQ,GAAE,CAAC;IAEzB,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAY;QAChC,QAAQ,EAAE,IAAA,WAAI,EACV,iBAAiB,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,EAAE;cAC/B,IAAI,KAAK,EAAE;cACX,IAAI,IAAI,CAAC,SAAS,CAAC,MAAA,OAAO,CAAC,UAAU,mCAAI,EAAE,CAAC,EAAE,CACnD;QACD,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAgB,KAAK,EAAE,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;QAC7F,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,QAAQ;QAClB,UAAU,EAAE,UAAU;KACzB,CAAC,CAAC;IAEH,IAAA,iBAAS,EACL,GAAG,EAAE;QACD,IAAI,iBAAiB,EAAE,CAAC;YACpB,UAAU,CAAC,OAAO,CAAC,EAAE;gBACjB,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;oBACrB,OAAO,MAAM,CAAC;gBAClB,CAAC;gBAED,OAAO,OAAO,CAAC;YACnB,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC,EACD,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAC9B,CAAC;IAEF,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,sBAAsB,CAAC,OAA0B;IACtD,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAA0C,EAAE,CAAC;QAC1F,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACxB,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,gBAAgB,CACrB,CAAS,EACT,EAAC,OAAO,KAAgC,EAAE;IAE1C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACX,iEAAiE;cAC/D,sEAAsE,CAC3E,CAAC;IACN,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAEY,QAAA,aAAa,GAAsB,IAAA,qBAAK,GAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useLoader.js","sourceRoot":"","sources":["../src/hooks/useLoader.ts"],"names":[],"mappings":"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"}
package/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,mDAAiC;AACjC,wDAAsC;AACtC,kDAAgC;AAChC,0CAAwB;AACxB,+CAA6B"}
package/src/api.ts DELETED
@@ -1 +0,0 @@
1
- export * from '@croct/plug/api';
@@ -1,2 +0,0 @@
1
- export * from './Personalization';
2
- export * from './Slot';
package/src/hash.test.ts DELETED
@@ -1,22 +0,0 @@
1
- import {hash} from './hash';
2
-
3
- describe('hash', () => {
4
- it('should generate a hash from a string', () => {
5
- const result = hash('foo');
6
-
7
- expect(result).toEqual('18cc6');
8
- expect(result).toEqual(hash('foo'));
9
- });
10
-
11
- it('should handle special characters', () => {
12
- expect(hash('✨')).toEqual('2728');
13
- expect(hash('💥')).toEqual('d83d');
14
- expect(hash('✨💥')).toEqual('59615');
15
- });
16
-
17
- it('should generate a hash from an empty string', () => {
18
- const result = hash('');
19
-
20
- expect(result).toEqual('0');
21
- });
22
- });
package/src/hash.ts DELETED
@@ -1,12 +0,0 @@
1
- export function hash(value: string): string {
2
- let code = 0;
3
-
4
- for (const char of value) {
5
- const charCode = char.charCodeAt(0);
6
-
7
- code = (code << 5) - code + charCode;
8
- code |= 0; // Convert to 32bit integer
9
- }
10
-
11
- return code.toString(16);
12
- }
@@ -1,280 +0,0 @@
1
- import {Cache, EntryOptions} from './Cache';
2
-
3
- describe('Cache', () => {
4
- afterEach(() => {
5
- jest.clearAllTimers();
6
- jest.resetAllMocks();
7
- });
8
-
9
- it('should load and cache the value for the default cache time', async () => {
10
- jest.useFakeTimers();
11
-
12
- const cache = new Cache(10);
13
-
14
- const loader = jest.fn()
15
- .mockResolvedValueOnce('result1')
16
- .mockResolvedValueOnce('result2');
17
-
18
- const options: EntryOptions<string> = {
19
- cacheKey: 'key',
20
- loader: loader,
21
- };
22
-
23
- let promise: Promise<any>|undefined;
24
-
25
- try {
26
- cache.load(options);
27
- } catch (result: any|undefined) {
28
- promise = result;
29
- }
30
-
31
- await expect(promise).resolves.toEqual('result1');
32
-
33
- expect(cache.load(options)).toEqual('result1');
34
-
35
- expect(loader).toHaveBeenCalledTimes(1);
36
-
37
- jest.advanceTimersByTime(10);
38
-
39
- try {
40
- cache.load(options);
41
- } catch (result: any|undefined) {
42
- promise = result;
43
- }
44
-
45
- await expect(promise).resolves.toEqual('result2');
46
-
47
- expect(loader).toHaveBeenCalledTimes(2);
48
- });
49
-
50
- it('should load the value once before expiration', async () => {
51
- jest.useFakeTimers();
52
-
53
- const cache = new Cache(10);
54
-
55
- const loader = jest.fn(
56
- () => new Promise<string>(resolve => {
57
- setTimeout(() => resolve('done'), 10);
58
- }),
59
- );
60
-
61
- const options: EntryOptions<string> = {
62
- cacheKey: 'key',
63
- loader: loader,
64
- };
65
-
66
- let promise1: Promise<any>|undefined;
67
-
68
- try {
69
- cache.load(options);
70
- } catch (result: any|undefined) {
71
- promise1 = result;
72
- }
73
-
74
- let promise2: Promise<any>|undefined;
75
-
76
- try {
77
- cache.load(options);
78
- } catch (result: any|undefined) {
79
- promise2 = result;
80
- }
81
-
82
- expect(promise1).toBe(promise2);
83
-
84
- jest.advanceTimersByTime(10);
85
-
86
- await expect(promise1).resolves.toEqual('done');
87
- await expect(promise2).resolves.toEqual('done');
88
-
89
- expect(loader).toHaveBeenCalledTimes(1);
90
- });
91
-
92
- it('should load and cache the value for the specified time', async () => {
93
- jest.useFakeTimers();
94
-
95
- const cache = new Cache(10);
96
-
97
- const loader = jest.fn()
98
- .mockResolvedValueOnce('result1')
99
- .mockResolvedValueOnce('result2');
100
-
101
- const options: EntryOptions<string> = {
102
- cacheKey: 'key',
103
- loader: loader,
104
- expiration: 15,
105
- };
106
-
107
- let promise: Promise<any>|undefined;
108
-
109
- try {
110
- cache.load(options);
111
- } catch (result: any|undefined) {
112
- promise = result;
113
- }
114
-
115
- await expect(promise).resolves.toEqual('result1');
116
-
117
- expect(cache.load(options)).toEqual('result1');
118
-
119
- expect(loader).toHaveBeenCalledTimes(1);
120
-
121
- jest.advanceTimersByTime(15);
122
-
123
- try {
124
- cache.load(options);
125
- } catch (result: any|undefined) {
126
- promise = result;
127
- }
128
-
129
- await expect(promise).resolves.toEqual('result2');
130
-
131
- expect(loader).toHaveBeenCalledTimes(2);
132
- });
133
-
134
- it('should load and cache the value for undetermined time', async () => {
135
- jest.useFakeTimers();
136
-
137
- const cache = new Cache(10);
138
-
139
- const loader = jest.fn()
140
- .mockResolvedValueOnce('result1')
141
- .mockResolvedValueOnce('result2');
142
-
143
- const options: EntryOptions<string> = {
144
- cacheKey: 'key',
145
- loader: loader,
146
- expiration: -1,
147
- };
148
-
149
- let promise: Promise<any>|undefined;
150
-
151
- try {
152
- cache.load(options);
153
- } catch (result: any|undefined) {
154
- promise = result;
155
- }
156
-
157
- await expect(promise).resolves.toEqual('result1');
158
-
159
- jest.advanceTimersByTime(60_000);
160
-
161
- expect(cache.load(options)).toEqual('result1');
162
-
163
- expect(loader).toHaveBeenCalledTimes(1);
164
- });
165
-
166
- it('should return the fallback value on error', async () => {
167
- const cache = new Cache(10);
168
-
169
- const loader = jest.fn().mockRejectedValue(new Error('failed'));
170
- const options: EntryOptions<string> = {
171
- cacheKey: 'key',
172
- loader: loader,
173
- fallback: 'fallback',
174
- };
175
-
176
- let promise: Promise<any>|undefined;
177
-
178
- try {
179
- cache.load(options);
180
- } catch (result: any|undefined) {
181
- promise = result;
182
- }
183
-
184
- await expect(promise).resolves.toBeUndefined();
185
-
186
- expect(cache.load(options)).toEqual('fallback');
187
-
188
- // Should cache the result but not the fallback value
189
- expect(cache.load({...options, fallback: 'error'})).toEqual('error');
190
-
191
- expect(loader).toHaveBeenCalledTimes(1);
192
- });
193
-
194
- it('should throw the error if no fallback is specified', async () => {
195
- const cache = new Cache(10);
196
-
197
- const error = new Error('failed');
198
-
199
- const loader = jest.fn().mockRejectedValue(error);
200
- const options: EntryOptions<string> = {
201
- cacheKey: 'key',
202
- loader: loader,
203
- };
204
-
205
- let promise: Promise<any>|undefined;
206
-
207
- try {
208
- cache.load(options);
209
- } catch (result: any|undefined) {
210
- promise = result;
211
- }
212
-
213
- await expect(promise).resolves.toBeUndefined();
214
-
215
- await expect(() => cache.load(options)).toThrow(error);
216
- });
217
-
218
- it('should cache the error', async () => {
219
- const cache = new Cache(10);
220
-
221
- const error = new Error('error');
222
- const loader = jest.fn().mockRejectedValue(error);
223
- const options: EntryOptions<string> = {
224
- cacheKey: 'key',
225
- loader: loader,
226
- };
227
-
228
- let promise: Promise<any>|undefined;
229
-
230
- try {
231
- cache.load(options);
232
- } catch (result: any|undefined) {
233
- promise = result;
234
- }
235
-
236
- await expect(promise).resolves.toBeUndefined();
237
-
238
- expect(() => cache.load(options)).toThrow(error);
239
- expect(cache.get(options.cacheKey)?.error).toBe(error);
240
- });
241
-
242
- it('should provide the cached values', async () => {
243
- jest.useFakeTimers();
244
-
245
- const cache = new Cache(10);
246
-
247
- const loader = jest.fn().mockResolvedValue('loaded');
248
- const options: EntryOptions<string> = {
249
- cacheKey: 'key',
250
- loader: loader,
251
- };
252
-
253
- let promise: Promise<any>|undefined;
254
-
255
- try {
256
- cache.load(options);
257
- } catch (result: any|undefined) {
258
- promise = result;
259
- }
260
-
261
- await promise;
262
-
263
- jest.advanceTimersByTime(9);
264
-
265
- const entry = cache.get(options.cacheKey);
266
-
267
- expect(entry?.result).toBe('loaded');
268
- expect(entry?.promise).toBe(promise);
269
- expect(entry?.timeout).not.toBeUndefined();
270
- expect(entry?.error).toBeUndefined();
271
-
272
- entry?.dispose();
273
-
274
- jest.advanceTimersByTime(9);
275
-
276
- expect(cache.get(options.cacheKey)).toBe(entry);
277
-
278
- expect(loader).toHaveBeenCalledTimes(1);
279
- });
280
- });