@croct/plug-react 0.5.0-next.1 → 0.5.0-next.3

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 (41) hide show
  1. package/CroctProvider.js.map +1 -1
  2. package/api/evaluate.js.map +1 -1
  3. package/api/fetchContent.js +4 -1
  4. package/api/fetchContent.js.map +1 -1
  5. package/api/index.js.map +1 -1
  6. package/components/Personalization/index.js.map +1 -1
  7. package/components/Slot/index.js.map +1 -1
  8. package/components/index.js.map +1 -1
  9. package/hooks/Cache.js.map +1 -1
  10. package/hooks/index.js.map +1 -1
  11. package/hooks/useContent.js.map +1 -1
  12. package/hooks/useCroct.js.map +1 -1
  13. package/hooks/useEvaluation.js.map +1 -1
  14. package/hooks/useLoader.js.map +1 -1
  15. package/index.js.map +1 -1
  16. package/package.json +5 -5
  17. package/src/api/evaluate.test.ts +59 -0
  18. package/src/api/evaluate.ts +19 -0
  19. package/src/api/fetchContent.test.ts +134 -0
  20. package/src/api/fetchContent.ts +47 -0
  21. package/src/api/index.ts +2 -0
  22. package/src/components/index.ts +2 -0
  23. package/src/global.d.ts +7 -0
  24. package/src/hooks/Cache.test.ts +280 -0
  25. package/src/hooks/Cache.ts +97 -0
  26. package/src/hooks/index.ts +3 -0
  27. package/src/hooks/useContent.ssr.test.ts +23 -0
  28. package/src/hooks/useContent.test.ts +66 -0
  29. package/src/hooks/useContent.ts +69 -0
  30. package/src/hooks/useCroct.ts +13 -0
  31. package/src/hooks/useEvaluation.ssr.test.ts +23 -0
  32. package/src/hooks/useEvaluation.test.ts +92 -0
  33. package/src/hooks/useEvaluation.ts +58 -0
  34. package/src/hooks/useLoader.test.ts +320 -0
  35. package/src/hooks/useLoader.ts +50 -0
  36. package/src/index.ts +5 -0
  37. package/src/react-app-env.d.ts +1 -0
  38. package/src/ssr-polyfills.ssr.test.ts +46 -0
  39. package/src/ssr-polyfills.test.ts +65 -0
  40. package/src/ssr-polyfills.ts +68 -0
  41. package/ssr-polyfills.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CroctProvider.js","sourceRoot":"","sources":["../src/CroctProvider.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;AAEb,iCASe;AAEf,mDAAsC;AAIzB,QAAA,YAAY,GAAG,IAAA,qBAAa,EAAoB,IAAI,CAAC,CAAC;AACnE,oBAAY,CAAC,WAAW,GAAG,cAAc,CAAC;AAEnC,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,oBAAoB,GAAG,IAAA,cAAM,EAAC,aAAa,CAAC,CAAC;IAEnD,IAAI,MAAM,KAAK,IAAI,EAAE;QACjB,MAAM,IAAI,KAAK,CACX,oEAAoE;cAClE,2DAA2D,CAChE,CAAC;KACL;IAED,MAAM,OAAO,GAAG,IAAA,eAAO,EACnB,GAAG,EAAE,CAAC,CAAC;QACH,IAAI,IAAI;YACJ,IAAI,CAAC,qBAAK,CAAC,WAAW,EAAE;gBACpB,qBAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;aAC5C;YAED,OAAO,qBAAK,CAAC;QACjB,CAAC;KACJ,CAAC,EACF,EAAE,CACL,CAAC;IAEF,IAAA,iBAAS,EACL,GAAG,EAAE;QACD,qBAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAEzC,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,EAAE,CACL,CAAC;IAEF,OAAO,CACH,uBAAC,oBAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,YAChC,QAAQ,GACW,CAC3B,CAAC;AACN,CAAC,CAAC;AA3CW,QAAA,aAAa,iBA2CxB"}
1
+ {"version":3,"file":"CroctProvider.js","sourceRoot":"","sources":["src/CroctProvider.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;AAEb,iCASe;AAEf,mDAAsC;AAIzB,QAAA,YAAY,GAAG,IAAA,qBAAa,EAAoB,IAAI,CAAC,CAAC;AACnE,oBAAY,CAAC,WAAW,GAAG,cAAc,CAAC;AAEnC,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,oBAAoB,GAAG,IAAA,cAAM,EAAC,aAAa,CAAC,CAAC;IAEnD,IAAI,MAAM,KAAK,IAAI,EAAE;QACjB,MAAM,IAAI,KAAK,CACX,oEAAoE;cAClE,2DAA2D,CAChE,CAAC;KACL;IAED,MAAM,OAAO,GAAG,IAAA,eAAO,EACnB,GAAG,EAAE,CAAC,CAAC;QACH,IAAI,IAAI;YACJ,IAAI,CAAC,qBAAK,CAAC,WAAW,EAAE;gBACpB,qBAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;aAC5C;YAED,OAAO,qBAAK,CAAC;QACjB,CAAC;KACJ,CAAC,EACF,EAAE,CACL,CAAC;IAEF,IAAA,iBAAS,EACL,GAAG,EAAE;QACD,qBAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAEzC,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,EAAE,CACL,CAAC;IAEF,OAAO,CACH,uBAAC,oBAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,YAChC,QAAQ,GACW,CAC3B,CAAC;AACN,CAAC,CAAC;AA3CW,QAAA,aAAa,iBA2CxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../src/api/evaluate.ts"],"names":[],"mappings":";;;AAAA,oDAAiF;AAQjF,SAAgB,QAAQ,CAAsB,KAAa,EAAE,OAA6B;IACtF,MAAM,EAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAC,GAAG,OAAO,CAAC;IAC5C,MAAM,OAAO,GAAG,CAAC,IAAI,qBAAS,CAAC,EAAC,MAAM,EAAE,MAAM,EAAC,CAAC,CAAC;SAC5C,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAe,CAAC;IAEzC,IAAI,QAAQ,KAAK,SAAS,EAAE;QACxB,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;KACxC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAVD,4BAUC"}
1
+ {"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../src/api/evaluate.ts"],"names":[],"mappings":";;;AAAA,oDAAiF;AAQjF,SAAgB,QAAQ,CAAsB,KAAa,EAAE,OAA6B;IACtF,MAAM,EAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAC,GAAG,OAAO,CAAC;IAC5C,MAAM,OAAO,GAAG,CAAC,IAAI,qBAAS,CAAC,EAAC,MAAM,EAAE,MAAM,EAAC,CAAC,CAAC;SAC5C,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAe,CAAC;IAEzC,IAAI,QAAQ,KAAK,SAAS,EAAE;QACxB,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;KACxC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAVD,4BAUC"}
@@ -4,8 +4,11 @@ exports.fetchContent = void 0;
4
4
  const contentFetcher_1 = require("@croct/sdk/contentFetcher");
5
5
  function fetchContent(slotId, options) {
6
6
  const { apiKey, fallback, ...fetchOptions } = options !== null && options !== void 0 ? options : {};
7
+ const [id, version = 'latest'] = slotId.split('@');
7
8
  const promise = (new contentFetcher_1.ContentFetcher({ apiKey: apiKey }))
8
- .fetch(slotId, fetchOptions);
9
+ .fetch(id, version === 'latest'
10
+ ? fetchOptions
11
+ : { ...fetchOptions, version: version });
9
12
  if (fallback !== undefined) {
10
13
  return promise.catch(() => ({
11
14
  content: fallback,
@@ -1 +1 @@
1
- {"version":3,"file":"fetchContent.js","sourceRoot":"","sources":["../../src/api/fetchContent.ts"],"names":[],"mappings":";;;AAAA,8DAImC;AAkBnC,SAAgB,YAAY,CACxB,MAAS,EACT,OAAyC;IAEzC,MAAM,EAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,YAAY,EAAC,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;IAC1D,MAAM,OAAO,GAAG,CAAC,IAAI,+BAAc,CAAC,EAAC,MAAM,EAAE,MAAM,EAAC,CAAC,CAAC;SACjD,KAAK,CAAoB,MAAM,EAAE,YAAY,CAAC,CAAC;IAEpD,IAAI,QAAQ,KAAK,SAAS,EAAE;QACxB,OAAO,OAAO,CAAC,KAAK,CAChB,GAAG,EAAE,CAAC,CAAC;YACH,OAAO,EAAE,QAAQ;SACpB,CAAC,CACL,CAAC;KACL;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAjBD,oCAiBC"}
1
+ {"version":3,"file":"fetchContent.js","sourceRoot":"","sources":["../src/api/fetchContent.ts"],"names":[],"mappings":";;;AAAA,8DAImC;AAkBnC,SAAgB,YAAY,CACxB,MAAS,EACT,OAAyC;IAEzC,MAAM,EAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,YAAY,EAAC,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,EAAE,CAAC;IAC1D,MAAM,CAAC,EAAE,EAAE,OAAO,GAAG,QAAQ,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAA4C,CAAC;IAE9F,MAAM,OAAO,GAAG,CAAC,IAAI,+BAAc,CAAC,EAAC,MAAM,EAAE,MAAM,EAAC,CAAC,CAAC;SACjD,KAAK,CACF,EAAE,EACF,OAAO,KAAK,QAAQ;QAChB,CAAC,CAAC,YAAY;QACd,CAAC,CAAC,EAAC,GAAG,YAAY,EAAE,OAAO,EAAE,OAAO,EAAC,CAC5C,CAAC;IAEN,IAAI,QAAQ,KAAK,SAAS,EAAE;QACxB,OAAO,OAAO,CAAC,KAAK,CAChB,GAAG,EAAE,CAAC,CAAC;YACH,OAAO,EAAE,QAAQ;SACpB,CAAC,CACL,CAAC;KACL;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAxBD,oCAwBC"}
package/api/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,iDAA+B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/api/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,iDAA+B"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Personalization/index.tsx"],"names":[],"mappings":";;;;AAAA,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;AALD,0CAKC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/Personalization/index.tsx"],"names":[],"mappings":";;;;AAAA,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;AALD,0CAKC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Slot/index.tsx"],"names":[],"mappings":";;;;AAAA,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,GAAgC,IAAA,kBAAU,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAElE,OAAO,uBAAC,gBAAQ,cAAE,QAAQ,CAAC,IAAI,CAAC,GAAY,CAAC;AACjD,CAAC,CAAC;AALW,QAAA,IAAI,QAKf"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/Slot/index.tsx"],"names":[],"mappings":";;;;AAAA,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,GAAgC,IAAA,kBAAU,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAElE,OAAO,uBAAC,gBAAQ,cAAE,QAAQ,CAAC,IAAI,CAAC,GAAY,CAAC;AACjD,CAAC,CAAC;AALW,QAAA,IAAI,QAKf"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,yCAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/components/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,yCAAuB"}
@@ -1 +1 @@
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;YAC3B,IAAI,WAAW,CAAC,KAAK,KAAK,SAAS,EAAE;gBACjC,IAAI,QAAQ,KAAK,SAAS,EAAE;oBACxB,OAAO,QAAQ,CAAC;iBACnB;gBAED,MAAM,WAAW,CAAC,KAAK,CAAC;aAC3B;YAED,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE;gBAClC,OAAO,WAAW,CAAC,MAAM,CAAC;aAC7B;YAED,MAAM,WAAW,CAAC,OAAO,CAAC;SAC7B;QAED,MAAM,KAAK,GAAa;YACpB,OAAO,EAAE,GAAG,EAAE;gBACV,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,UAAU,GAAG,CAAC,EAAE;oBAC/C,OAAO;iBACV;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;YACrB,OAAO,SAAS,CAAC;SACpB;QAED,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE;YAC7B,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAE5B,OAAO,KAAK,CAAC,OAAO,CAAC;YAErB,KAAK,CAAC,OAAO,EAAE,CAAC;SACnB;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;AA/ED,sBA+EC"}
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;YAC3B,IAAI,WAAW,CAAC,KAAK,KAAK,SAAS,EAAE;gBACjC,IAAI,QAAQ,KAAK,SAAS,EAAE;oBACxB,OAAO,QAAQ,CAAC;iBACnB;gBAED,MAAM,WAAW,CAAC,KAAK,CAAC;aAC3B;YAED,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE;gBAClC,OAAO,WAAW,CAAC,MAAM,CAAC;aAC7B;YAED,MAAM,WAAW,CAAC,OAAO,CAAC;SAC7B;QAED,MAAM,KAAK,GAAa;YACpB,OAAO,EAAE,GAAG,EAAE;gBACV,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,UAAU,GAAG,CAAC,EAAE;oBAC/C,OAAO;iBACV;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;YACrB,OAAO,SAAS,CAAC;SACpB;QAED,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE;YAC7B,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAE5B,OAAO,KAAK,CAAC,OAAO,CAAC;YAErB,KAAK,CAAC,OAAO,EAAE,CAAC;SACnB;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;AA/ED,sBA+EC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,+CAA6B;AAC7B,6CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,+CAA6B;AAC7B,6CAA2B"}
@@ -1 +1 @@
1
- {"version":3,"file":"useContent.js","sourceRoot":"","sources":["../../src/hooks/useContent.ts"],"names":[],"mappings":";;;AAGA,2CAAsC;AACtC,yCAAoC;AACpC,oDAAuC;AASvC,SAAS,aAAa,CAClB,EAAmB,EACnB,UAAmC,EAAE;IAErC,MAAM,EAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,YAAY,EAAC,GAAG,OAAO,CAAC;IAC3E,MAAM,KAAK,GAAG,IAAA,mBAAQ,GAAE,CAAC;IAEzB,OAAO,IAAA,qBAAS,EAAC;QACb,QAAQ,EAAE,cAAc,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,IAAI,EAAE,EAAE;QAC9C,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;AACP,CAAC;AAED,SAAS,aAAa,CAClB,CAAkB,EAClB,EAAC,OAAO,KAA6B,EAAE;IAEvC,IAAI,OAAO,KAAK,SAAS,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;KACrF;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AA6BY,QAAA,UAAU,GAAmB,IAAA,qBAAK,GAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC"}
1
+ {"version":3,"file":"useContent.js","sourceRoot":"","sources":["../src/hooks/useContent.ts"],"names":[],"mappings":";;;AAGA,2CAAsC;AACtC,yCAAoC;AACpC,oDAAuC;AASvC,SAAS,aAAa,CAClB,EAAmB,EACnB,UAAmC,EAAE;IAErC,MAAM,EAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,YAAY,EAAC,GAAG,OAAO,CAAC;IAC3E,MAAM,KAAK,GAAG,IAAA,mBAAQ,GAAE,CAAC;IAEzB,OAAO,IAAA,qBAAS,EAAC;QACb,QAAQ,EAAE,cAAc,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,IAAI,EAAE,EAAE;QAC9C,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;AACP,CAAC;AAED,SAAS,aAAa,CAClB,CAAkB,EAClB,EAAC,OAAO,KAA6B,EAAE;IAEvC,IAAI,OAAO,KAAK,SAAS,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;KACrF;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AA6BY,QAAA,UAAU,GAAmB,IAAA,qBAAK,GAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useCroct.js","sourceRoot":"","sources":["../../src/hooks/useCroct.ts"],"names":[],"mappings":";;;AACA,iCAAiC;AACjC,oDAA8C;AAE9C,SAAgB,QAAQ;IACpB,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,4BAAY,CAAC,CAAC;IAEzC,IAAI,OAAO,KAAK,IAAI,EAAE;QAClB,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;KACjG;IAED,OAAO,OAAO,CAAC,IAAI,CAAC;AACxB,CAAC;AARD,4BAQC"}
1
+ {"version":3,"file":"useCroct.js","sourceRoot":"","sources":["../src/hooks/useCroct.ts"],"names":[],"mappings":";;;AACA,iCAAiC;AACjC,oDAA8C;AAE9C,SAAgB,QAAQ;IACpB,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,4BAAY,CAAC,CAAC;IAEzC,IAAI,OAAO,KAAK,IAAI,EAAE;QAClB,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;KACjG;IAED,OAAO,OAAO,CAAC,IAAI,CAAC;AACxB,CAAC;AARD,4BAQC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useEvaluation.js","sourceRoot":"","sources":["../../src/hooks/useEvaluation.ts"],"names":[],"mappings":";;;AAEA,2CAAsC;AACtC,yCAAoC;AACpC,oDAAuC;AAEvC,SAAS,sBAAsB,CAAC,OAA0B;IACtD,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAChD,IAAI,KAAK,KAAK,SAAS,EAAE;YACrB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SACvB;KACJ;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAcD,SAAS,gBAAgB,CACrB,KAAa,EACb,UAAsC,EAAE;;IAExC,MAAM,EAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,iBAAiB,EAAC,GAAG,OAAO,CAAC;IAChF,MAAM,KAAK,GAAG,IAAA,mBAAQ,GAAE,CAAC;IAEzB,OAAO,IAAA,qBAAS,EAAY;QACxB,QAAQ,EAAE,iBAAiB,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAA,OAAO,CAAC,UAAU,mCAAI,EAAE,CAAC,EAAE;QAChG,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;AACP,CAAC;AAED,SAAS,gBAAgB,CACrB,CAAS,EACT,EAAC,OAAO,KAAgC,EAAE;IAE1C,IAAI,OAAO,KAAK,SAAS,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;KACrF;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAEY,QAAA,aAAa,GAAsB,IAAA,qBAAK,GAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC"}
1
+ {"version":3,"file":"useEvaluation.js","sourceRoot":"","sources":["../src/hooks/useEvaluation.ts"],"names":[],"mappings":";;;AAEA,2CAAsC;AACtC,yCAAoC;AACpC,oDAAuC;AAEvC,SAAS,sBAAsB,CAAC,OAA0B;IACtD,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAChD,IAAI,KAAK,KAAK,SAAS,EAAE;YACrB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SACvB;KACJ;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAcD,SAAS,gBAAgB,CACrB,KAAa,EACb,UAAsC,EAAE;;IAExC,MAAM,EAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,iBAAiB,EAAC,GAAG,OAAO,CAAC;IAChF,MAAM,KAAK,GAAG,IAAA,mBAAQ,GAAE,CAAC;IAEzB,OAAO,IAAA,qBAAS,EAAY;QACxB,QAAQ,EAAE,iBAAiB,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,EAAE,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAA,OAAO,CAAC,UAAU,mCAAI,EAAE,CAAC,EAAE;QAChG,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;AACP,CAAC;AAED,SAAS,gBAAgB,CACrB,CAAS,EACT,EAAC,OAAO,KAAgC,EAAE;IAE1C,IAAI,OAAO,KAAK,SAAS,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;KACrF;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAEY,QAAA,aAAa,GAAsB,IAAA,qBAAK,GAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useLoader.js","sourceRoot":"","sources":["../../src/hooks/useLoader.ts"],"names":[],"mappings":";;;AAAA,iCAAkD;AAClD,mCAA4C;AAE5C,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;AAMnC,SAAgB,SAAS,CAAI,EAAC,OAAO,EAAE,GAAG,OAAO,EAAkB;;IAC/D,MAAM,WAAW,GAAgB,MAAA,KAAK,CAAC,GAAG,CAAI,OAAO,CAAC,QAAQ,CAAC,0CAAE,MAAM,CAAC;IACxE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACtF,MAAM,UAAU,GAAG,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,IAAA,cAAM,EAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEvE,IAAA,iBAAS,EACL,GAAG,EAAE;QACD,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS,EAAE;YAClC,IAAI;gBACA,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;aAC5C;YAAC,OAAO,MAAe,EAAE;gBACtB,IAAI,MAAM,YAAY,OAAO,EAAE;oBAC3B,MAAM,CAAC,IAAI,CAAC,CAAC,aAAgB,EAAE,EAAE;wBAC7B,IAAI,UAAU,CAAC,OAAO,EAAE;4BACpB,QAAQ,CAAC,aAAa,CAAC,CAAC;yBAC3B;oBACL,CAAC,CAAC,CAAC;oBAEH,OAAO;iBACV;gBAED,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAEpB,OAAO;aACV;SACJ;QAED,OAAO,GAAG,EAAE;YACR,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;QAC/B,CAAC,CAAC;IACN,CAAC,EACD,EAAE,CACL,CAAC;IAEF,IAAI,KAAK,KAAK,SAAS,EAAE;QACrB,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC9B;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAxCD,8BAwCC"}
1
+ {"version":3,"file":"useLoader.js","sourceRoot":"","sources":["../src/hooks/useLoader.ts"],"names":[],"mappings":";;;AAAA,iCAAkD;AAClD,mCAA4C;AAE5C,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;AAMnC,SAAgB,SAAS,CAAI,EAAC,OAAO,EAAE,GAAG,OAAO,EAAkB;;IAC/D,MAAM,WAAW,GAAgB,MAAA,KAAK,CAAC,GAAG,CAAI,OAAO,CAAC,QAAQ,CAAC,0CAAE,MAAM,CAAC;IACxE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACtF,MAAM,UAAU,GAAG,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,IAAA,cAAM,EAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEvE,IAAA,iBAAS,EACL,GAAG,EAAE;QACD,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS,EAAE;YAClC,IAAI;gBACA,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;aAC5C;YAAC,OAAO,MAAe,EAAE;gBACtB,IAAI,MAAM,YAAY,OAAO,EAAE;oBAC3B,MAAM,CAAC,IAAI,CAAC,CAAC,aAAgB,EAAE,EAAE;wBAC7B,IAAI,UAAU,CAAC,OAAO,EAAE;4BACpB,QAAQ,CAAC,aAAa,CAAC,CAAC;yBAC3B;oBACL,CAAC,CAAC,CAAC;oBAEH,OAAO;iBACV;gBAED,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAEpB,OAAO;aACV;SACJ;QAED,OAAO,GAAG,EAAE;YACR,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;QAC/B,CAAC,CAAC;IACN,CAAC,EACD,EAAE,CACL,CAAC;IAEF,IAAI,KAAK,KAAK,SAAS,EAAE;QACrB,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC9B;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAxCD,8BAwCC"}
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,mDAAiC;AACjC,kDAAgC;AAChC,0CAAwB;AACxB,+CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,mDAAiC;AACjC,kDAAgC;AAChC,0CAAwB;AACxB,+CAA6B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@croct/plug-react",
3
- "version": "0.5.0-next.1",
3
+ "version": "0.5.0-next.3",
4
4
  "description": "React components and hooks to plug your React applications into Croct.",
5
5
  "author": {
6
6
  "name": "Croct",
@@ -37,8 +37,8 @@
37
37
  "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
38
38
  },
39
39
  "dependencies": {
40
- "@croct/plug": "^0.11.0-alpha.2",
41
- "@croct/sdk": "^0.11.0-alpha"
40
+ "@croct/plug": "^0.11.0-alpha.5",
41
+ "@croct/sdk": "^0.11.0-alpha.4"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@babel/core": "^7.20.2",
@@ -73,7 +73,7 @@
73
73
  },
74
74
  "files": [
75
75
  "**/*.js",
76
- "**/*.js.map",
77
- "**/*.ts"
76
+ "**/*.ts",
77
+ "**/*.map"
78
78
  ]
79
79
  }
@@ -0,0 +1,59 @@
1
+ import {Evaluator} from '@croct/sdk/evaluator';
2
+ import {evaluate, EvaluationOptions} from './evaluate';
3
+
4
+ const mockEvaluate: Evaluator['evaluate'] = jest.fn();
5
+
6
+ jest.mock(
7
+ '@croct/sdk/evaluator',
8
+ () => ({
9
+ __esModule: true,
10
+ /*
11
+ * eslint-disable-next-line prefer-arrow-callback --
12
+ * The mock can't be an arrow function because calling new on
13
+ * an arrow function is not allowed in JavaScript.
14
+ */
15
+ Evaluator: jest.fn(function constructor(this: Evaluator) {
16
+ this.evaluate = mockEvaluate;
17
+ }),
18
+ }),
19
+ );
20
+
21
+ describe('evaluate', () => {
22
+ const apiKey = '00000000-0000-0000-0000-000000000000';
23
+
24
+ afterEach(() => {
25
+ jest.clearAllMocks();
26
+ });
27
+
28
+ it('should forward the call to the evaluator', async () => {
29
+ const options: EvaluationOptions = {
30
+ apiKey: apiKey,
31
+ timeout: 100,
32
+ };
33
+
34
+ const query = 'true';
35
+
36
+ jest.mocked(mockEvaluate).mockResolvedValue(true);
37
+
38
+ await expect(evaluate(query, options)).resolves.toBe(true);
39
+
40
+ expect(Evaluator).toHaveBeenCalledWith({
41
+ apiKey: options.apiKey,
42
+ });
43
+
44
+ expect(mockEvaluate).toHaveBeenCalledWith(query, {
45
+ timeout: options.timeout,
46
+ });
47
+ });
48
+
49
+ it('should return the fallback value on error', async () => {
50
+ const options: EvaluationOptions = {
51
+ apiKey: apiKey,
52
+ fallback: false,
53
+ };
54
+
55
+ jest.mocked(mockEvaluate).mockRejectedValue(new Error('error'));
56
+
57
+ await expect(evaluate('true', options)).resolves.toBe(false);
58
+ });
59
+ });
@@ -0,0 +1,19 @@
1
+ import {Evaluator, EvaluationOptions as BaseOptions} from '@croct/sdk/evaluator';
2
+ import {JsonValue} from '@croct/plug/sdk/json';
3
+
4
+ export type EvaluationOptions<T extends JsonValue = JsonValue> = BaseOptions & {
5
+ apiKey: string,
6
+ fallback?: T,
7
+ };
8
+
9
+ export function evaluate<T extends JsonValue>(query: string, options: EvaluationOptions<T>): Promise<T> {
10
+ const {apiKey, fallback, ...rest} = options;
11
+ const promise = (new Evaluator({apiKey: apiKey}))
12
+ .evaluate(query, rest) as Promise<T>;
13
+
14
+ if (fallback !== undefined) {
15
+ return promise.catch(() => fallback);
16
+ }
17
+
18
+ return promise;
19
+ }
@@ -0,0 +1,134 @@
1
+ import {ContentFetcher} from '@croct/sdk/contentFetcher';
2
+ import {FetchResponse} from '@croct/plug/plug';
3
+ import {fetchContent, FetchOptions} from './fetchContent';
4
+
5
+ const mockFetch: ContentFetcher['fetch'] = jest.fn();
6
+
7
+ jest.mock(
8
+ '@croct/sdk/contentFetcher',
9
+ () => ({
10
+ __esModule: true,
11
+ /*
12
+ * eslint-disable-next-line prefer-arrow-callback --
13
+ * The mock can't be an arrow function because calling new on
14
+ * an arrow function is not allowed in JavaScript.
15
+ */
16
+ ContentFetcher: jest.fn(function constructor(this: ContentFetcher) {
17
+ this.fetch = mockFetch;
18
+ }),
19
+ }),
20
+ );
21
+
22
+ describe('fetchContent', () => {
23
+ const apiKey = '00000000-0000-0000-0000-000000000000';
24
+
25
+ afterEach(() => {
26
+ jest.clearAllMocks();
27
+ });
28
+
29
+ it('should forward the call to the content fetcher', async () => {
30
+ const slotId = 'slot-id';
31
+
32
+ const options: FetchOptions = {
33
+ apiKey: apiKey,
34
+ timeout: 100,
35
+ };
36
+
37
+ const result: FetchResponse<typeof slotId> = {
38
+ content: {
39
+ id: 'test',
40
+ },
41
+ };
42
+
43
+ jest.mocked(mockFetch).mockResolvedValue(result);
44
+
45
+ await expect(fetchContent(slotId, options)).resolves.toEqual(result);
46
+
47
+ expect(ContentFetcher).toHaveBeenCalledWith({
48
+ apiKey: options.apiKey,
49
+ });
50
+
51
+ expect(mockFetch).toHaveBeenCalledWith(slotId, {
52
+ timeout: options.timeout,
53
+ });
54
+ });
55
+
56
+ it('should extract the slot ID and version', async () => {
57
+ const slotId = 'slot-id';
58
+ const version = '1';
59
+ const versionedSlotId = `${slotId}@${version}`;
60
+
61
+ const options: FetchOptions = {
62
+ apiKey: apiKey,
63
+ timeout: 100,
64
+ };
65
+
66
+ const result: FetchResponse<typeof slotId> = {
67
+ content: {
68
+ id: 'test',
69
+ },
70
+ };
71
+
72
+ jest.mocked(mockFetch).mockResolvedValue(result);
73
+
74
+ await expect(fetchContent(versionedSlotId, options)).resolves.toEqual(result);
75
+
76
+ expect(ContentFetcher).toHaveBeenCalledWith({
77
+ apiKey: options.apiKey,
78
+ });
79
+
80
+ expect(mockFetch).toHaveBeenCalledWith(slotId, {
81
+ timeout: options.timeout,
82
+ version: version,
83
+ });
84
+ });
85
+
86
+ it('should fetch content omitting the latest alias', async () => {
87
+ const slotId = 'slot-id';
88
+ const version = 'latest';
89
+ const versionedSlotId = `${slotId}@${version}`;
90
+
91
+ const options: FetchOptions = {
92
+ apiKey: apiKey,
93
+ timeout: 100,
94
+ };
95
+
96
+ const result: FetchResponse<typeof slotId> = {
97
+ content: {
98
+ id: 'test',
99
+ },
100
+ };
101
+
102
+ jest.mocked(mockFetch).mockResolvedValue(result);
103
+
104
+ await expect(fetchContent(versionedSlotId, options)).resolves.toEqual(result);
105
+
106
+ expect(ContentFetcher).toHaveBeenCalledWith({
107
+ apiKey: options.apiKey,
108
+ });
109
+
110
+ expect(mockFetch).toHaveBeenCalledWith(slotId, {
111
+ timeout: options.timeout,
112
+ });
113
+ });
114
+
115
+ it('should return the fallback value on error', async () => {
116
+ const slotId = 'slot-id';
117
+
118
+ const fallback = {
119
+ id: 'fallback',
120
+ };
121
+
122
+ const options: FetchOptions = {
123
+ apiKey: apiKey,
124
+ timeout: 100,
125
+ fallback: fallback,
126
+ };
127
+
128
+ jest.mocked(mockFetch).mockRejectedValue(new Error('error'));
129
+
130
+ await expect(fetchContent(slotId, options)).resolves.toEqual({
131
+ content: fallback,
132
+ });
133
+ });
134
+ });
@@ -0,0 +1,47 @@
1
+ import {
2
+ ContentFetcher,
3
+ DynamicContentOptions as BaseDynamicOptions,
4
+ StaticContentOptions as BaseStaticOptions,
5
+ } from '@croct/sdk/contentFetcher';
6
+ import {JsonObject} from '@croct/plug/sdk/json';
7
+ import {FetchResponse} from '@croct/plug/plug';
8
+ import {SlotContent, VersionedSlotId} from '@croct/plug/slot';
9
+
10
+ type ServerSideOptions<T extends JsonObject> = {
11
+ apiKey: string,
12
+ fallback?: T,
13
+ };
14
+
15
+ export type DynamicContentOptions<T extends JsonObject = JsonObject> =
16
+ Omit<BaseDynamicOptions, 'version'> & ServerSideOptions<T>;
17
+
18
+ export type StaticContentOptions<T extends JsonObject = JsonObject> =
19
+ Omit<BaseStaticOptions, 'version'> & ServerSideOptions<T>;
20
+
21
+ export type FetchOptions<T extends JsonObject = JsonObject> = DynamicContentOptions<T> | StaticContentOptions<T>;
22
+
23
+ export function fetchContent<I extends VersionedSlotId, C extends JsonObject>(
24
+ slotId: I,
25
+ options?: FetchOptions<SlotContent<I, C>>,
26
+ ): Promise<Omit<FetchResponse<I, C>, 'payload'>> {
27
+ const {apiKey, fallback, ...fetchOptions} = options ?? {};
28
+ const [id, version = 'latest'] = slotId.split('@') as [I, `${number}` | 'latest' | undefined];
29
+
30
+ const promise = (new ContentFetcher({apiKey: apiKey}))
31
+ .fetch<SlotContent<I, C>>(
32
+ id,
33
+ version === 'latest'
34
+ ? fetchOptions
35
+ : {...fetchOptions, version: version},
36
+ );
37
+
38
+ if (fallback !== undefined) {
39
+ return promise.catch(
40
+ () => ({
41
+ content: fallback,
42
+ }),
43
+ );
44
+ }
45
+
46
+ return promise;
47
+ }
@@ -0,0 +1,2 @@
1
+ export * from './evaluate';
2
+ export * from './fetchContent';
@@ -0,0 +1,2 @@
1
+ export * from './Personalization';
2
+ export * from './Slot';
@@ -0,0 +1,7 @@
1
+ import {EapFeatures} from '@croct/plug/eap';
2
+
3
+ declare global {
4
+ interface Window {
5
+ croctEap?: Partial<EapFeatures>;
6
+ }
7
+ }