@raytio/core 10.0.1 → 11.0.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 (65) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +129 -55
  3. package/dist/__tests__/docs.test.d.ts +1 -0
  4. package/dist/__tests__/docs.test.js +24 -0
  5. package/dist/crypto/getAADecryptor.d.ts +8 -3
  6. package/dist/crypto/helpers.d.ts +2 -2
  7. package/dist/general/conditional.d.ts +12 -2
  8. package/dist/general/conditional.js +11 -1
  9. package/dist/general/date.d.ts +2 -0
  10. package/dist/general/date.js +18 -0
  11. package/dist/general/index.d.ts +1 -0
  12. package/dist/general/index.js +1 -0
  13. package/dist/rules/calculateScore.d.ts +7 -2
  14. package/dist/rules/calculateScore.js +8 -2
  15. package/dist/rules/convertInstanceToRuleInput.d.ts +2 -2
  16. package/dist/rules/convertInstanceToRuleInput.js +2 -3
  17. package/dist/rules/evaluateScoreCondition.js +0 -1
  18. package/dist/rules/helpers/__tests__/addInfiniteThresholdBoundaries.test.d.ts +1 -0
  19. package/dist/rules/helpers/__tests__/addInfiniteThresholdBoundaries.test.js +27 -0
  20. package/dist/rules/helpers/__tests__/checkTypeofValue.test.d.ts +1 -0
  21. package/dist/rules/helpers/__tests__/checkTypeofValue.test.js +49 -0
  22. package/dist/rules/helpers/__tests__/getValuesFromPath.test.d.ts +1 -0
  23. package/dist/rules/helpers/__tests__/getValuesFromPath.test.js +67 -0
  24. package/dist/rules/helpers/__tests__/thresholds.test.d.ts +1 -0
  25. package/dist/rules/helpers/__tests__/thresholds.test.js +32 -0
  26. package/dist/rules/helpers/checkTypeofValue.js +11 -6
  27. package/dist/rules/helpers/thresholds.js +1 -2
  28. package/dist/rules/operators/__tests__/bool.test.d.ts +1 -0
  29. package/dist/rules/operators/__tests__/bool.test.js +21 -0
  30. package/dist/rules/operators/__tests__/date.test.d.ts +1 -0
  31. package/dist/rules/operators/__tests__/date.test.js +81 -0
  32. package/dist/rules/operators/__tests__/hfield.test.d.ts +1 -0
  33. package/dist/rules/operators/__tests__/hfield.test.js +38 -0
  34. package/dist/rules/operators/__tests__/hschema.test.d.ts +1 -0
  35. package/dist/rules/operators/__tests__/hschema.test.js +24 -0
  36. package/dist/rules/operators/__tests__/number.test.d.ts +1 -0
  37. package/dist/rules/operators/__tests__/number.test.js +53 -0
  38. package/dist/rules/operators/__tests__/string.test.d.ts +1 -0
  39. package/dist/rules/operators/__tests__/string.test.js +74 -0
  40. package/dist/rules/types/config.d.ts +21 -17
  41. package/dist/rules/types/dataValueTypes.d.ts +4 -4
  42. package/dist/rules/types/internal.d.ts +3 -3
  43. package/dist/rules/version.d.ts +1 -1
  44. package/dist/rules/version.js +1 -1
  45. package/dist/schema/labels.js +1 -1
  46. package/dist/util/canonicalJsonify.js +1 -1
  47. package/dist/util/handleResponse.js +1 -1
  48. package/dist/verifications/getPOVerification.d.ts +7 -4
  49. package/dist/verifications/getPOVerification.js +15 -4
  50. package/dist/verifications/safeHarbour.d.ts +2 -2
  51. package/dist/verifications/verifyCheck/__tests__/getOwnRealVerifications.test.d.ts +1 -0
  52. package/dist/verifications/verifyCheck/__tests__/getOwnRealVerifications.test.js +152 -0
  53. package/dist/verifications/verifyCheck/__tests__/getSomeoneElsesRealVerifications.test.d.ts +1 -0
  54. package/dist/verifications/verifyCheck/__tests__/getSomeoneElsesRealVerifications.test.js +205 -0
  55. package/dist/verifications/verifyCheck/getOwnRealVerifications.js +5 -2
  56. package/dist/verifications/verifyCheck/getSomeoneElsesRealVerifications.d.ts +1 -1
  57. package/dist/verifications/verifyCheck/getSomeoneElsesRealVerifications.js +3 -2
  58. package/dist/verifications/verifyCheck/operations/__tests__/checkOwnVerification.test.d.ts +1 -0
  59. package/dist/verifications/verifyCheck/operations/__tests__/checkOwnVerification.test.js +91 -0
  60. package/dist/verifications/verifyCheck/operations/__tests__/checkSomeoneElsesVerifications.test.d.ts +1 -0
  61. package/dist/verifications/verifyCheck/operations/__tests__/checkSomeoneElsesVerifications.test.js +49 -0
  62. package/dist/verifications/verifyCheck/operations/__tests__/sampleBundle.json +43 -0
  63. package/dist/verifications/verifyCheck/operations/checkOwnVerification.d.ts +1 -1
  64. package/dist/verifications/verifyCheck/operations/checkOwnVerification.js +1 -1
  65. package/package.json +13 -10
@@ -5,6 +5,7 @@ const ramda_1 = require("ramda");
5
5
  const operations_1 = require("./operations");
6
6
  const maybeRereference_1 = require("../maybeRereference");
7
7
  const crypto_1 = require("../../crypto");
8
+ const general_1 = require("../../general");
8
9
  const getValuesForAField = (fieldName, POs) => (0, ramda_1.uniq)(
9
10
  // truthy only, and ignore encrypted properties. this function will be called again once they're decrypted
10
11
  POs.map(x => { var _a; return (_a = x.properties) === null || _a === void 0 ? void 0 : _a[fieldName]; }).filter(x => !!x && !(0, crypto_1.isEncrypted)(x)));
@@ -54,9 +55,9 @@ const getSomeoneElsesRealVerifications = async ({ aId, apiUrl, verifications, pr
54
55
  dataSourceNId: data.verifier_source_id,
55
56
  serviceProviderNId: data.verifier_service_id,
56
57
  verifierNId: data.verifier_id,
57
- date: new Date(`${data.verification_date}Z`), // the api returns invalid dates (missing the `Z`)
58
+ date: (0, general_1.repairDate)(data.verification_date),
58
59
  },
59
- expired: valid_until ? new Date(valid_until) : false,
60
+ expired: valid_until ? (0, general_1.repairDate)(valid_until) : false,
60
61
  metadata: data.metadata,
61
62
  xId: data.request_div,
62
63
  signature,
@@ -0,0 +1,91 @@
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
+ const __1 = require("..");
7
+ const util_1 = require("../../../../util");
8
+ const checkOwnVerification_1 = require("../checkOwnVerification");
9
+ const sampleBundle_json_1 = __importDefault(require("./sampleBundle.json"));
10
+ Reflect.set(global, "fetch", jest.fn().mockResolvedValue({
11
+ text: async () => `-----BEGIN PUBLIC KEY-----
12
+ MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAn9QtCqYa3H3ipFFU0xP3
13
+ n6r7KHS3GMbh0h/xzel57HhCIaXDYjUeUtgUNtzm+uElb/qzGn50xQRzVqO32vKB
14
+ ZAW2kYyZ2+R5ruk9CSxr7K4Vk1FtDMcUCzqxm0eycFD2xbLsN3feRc3BMjfdaQ7P
15
+ OMAquVHxDqSHlL8hv3VEoPHyRz04ipGAlRzVCEQPQ8sZDNsgXo76OzLGlT4bEUGn
16
+ mzH+FhS6DGts+X5b5ZW1iCzQTNZM3yzk947dyMsJVHwx+VyTT/o8D6/zWrZnmjK+
17
+ lGOihted4AmvJePcF0kWP5XXpXiX12dRsluhXkIXkgmj9MuoxkdeqGuAxiZUVc5a
18
+ zWfZao3Y3O5UwtRIEJOeZmr6EkYfdhg+JuDjacZ53Dg6WduX+5nG7/UqpepqtmHe
19
+ R0Wsi2K8nXxkFkZmPy+s7e4+ABjN+IRrQYUJALziMjskqjxll8zKn+4Phmk8dIJw
20
+ Gut0BoM+DIwDu0uZaUprz7fSgNmYHHEiIFbOMVHiOn8oZAZbJXXbUbFIUYXA8u9+
21
+ J1Z+QEpgw+rhGzOf/TSeHfMC9nNbWgYglluAJusWf2XwG/t/VlhtzviHCVGEL7HQ
22
+ jQE5DrM7vaTg6Gu9bjKuoeLIRzbOYK6qAWFoa0CLcN84PLjhDSRw2duatP08hcWg
23
+ jTgOkLWnBFE7NyRU93uPp68CAwEAAQ==
24
+ -----END PUBLIC KEY-----`,
25
+ }));
26
+ describe("checkOwnVerification", () => {
27
+ it("works for a real PO", async () => {
28
+ //
29
+ // This is an important integration test from ca. 2021-12-02.
30
+ // If it is failing, it means our code no longer matches the
31
+ // backend, and all existing verifications will be erroneously
32
+ // considered invalid
33
+ //
34
+ const signature = "e3ra4x0iwAvcLURf2Je8IpibByd6dvdIMUxsh5ZVOUvnQYsY99U2RkZWk63nBePy6bVWqnYnhrAR\n7bGbPpf2GYWq1WymKro9SGB552xWU1BIyJ5+78agWXDOqIthsnuRNoos52u46Mh6bq6taIj0vip6\nwIbnN8A0eS/Ulh2PpzrXKbjM6ITKDUOjEMSgbO7sDbRzZ1GbOm3Bh0WMvtniEk9dsN6wwAYI2XXb\nhaHjKfKGxv73DpFlv04+371VfP24NN8R6RGgD5YUqn9iFiHN17GlPmDGjzId/cSwz9tMshUgV2ZA\nylkAcRIyao6mYDQk75BQs6eK/dOlvUeWjEWgRpeYSJ3/5GkqiJn906+7Rj7iJ6P9+zSGN+OlhW3p\n7D0gS70ZqwLG5AVNB+N9PCUZYdaHHulQc5W8devQB3GImKhjHhH6sKLd2JdwTWeEW/SAnnqzTLTJ\nRrg7/XDoYIH20x+FVYVom5QYbjHvxdbHML19+zw0jJuhiPgKmm1bKt8fFv7T1nOeDEQa4hRZfdNu\nmdxZPt0ilBsIN7cXYn+X3nKZuEo3udCvNQx+zjSiJfKqBEw2grqBCDrF1u2HWyL77pXPJNMfxlRN\nkedWDSFSG5rXKDC0ffVRXs3Q2our6DCT2RgdDoZejBm3jKckUwOxnqzG5yTbjWsmGdduo/ePh/g=\n";
35
+ // nId of this ver is "44371109-1a5c-41e7-b213-ff3befe194fc"
36
+ const verObject = {
37
+ passed: true,
38
+ schema: "ss_NZ_Company",
39
+ verifier_div: "ff341897-b847-4a56-8669-a7bef019758a",
40
+ source_n_id: "f73e33bd-6673-4069-9ed4-76b57c8da2de",
41
+ type: null,
42
+ verifier_service_id: "",
43
+ verification_date: "2021-11-16T20:35:59.147817",
44
+ request_div: "95cc6670-f704-4221-beb9-3559ac47bce9",
45
+ source: "NZ_COMPANY",
46
+ field: "entity_type_description",
47
+ v_id: "aec1c37d-f9d7-461a-b15d-1a83e41e981a",
48
+ verifier_source_id: "185e9cdc-e8fb-4147-b996-3c2dd60fab59",
49
+ verifier_id: "185e9cdc-e8fb-4147-b996-3c2dd60fab59",
50
+ metadata: {
51
+ date_retrieved: "2021-11-16T20:36:00.732608",
52
+ url: "https://api-dev.rayt.io/w-nz-mbie/v1/entities/9429033226651",
53
+ },
54
+ };
55
+ const value = "NZ Limited Company";
56
+ const userId = "fd9c4903-65c2-4b75-b454-4fda6b682f3e"; // for 27july21 🦈
57
+ expect(await (0, checkOwnVerification_1.checkOwnVerification)({ value, signature, userId, verObject })).toBe(true);
58
+ });
59
+ it("errors if you forget to supply the uId", async () => {
60
+ await expect(() => (0, checkOwnVerification_1.checkOwnVerification)({
61
+ value: "",
62
+ signature: "",
63
+ userId: "",
64
+ verObject: {},
65
+ })).rejects.toThrow(new Error("No userId supplied"));
66
+ });
67
+ });
68
+ describe("checkSignature", () => {
69
+ it("works", async () => {
70
+ // same test as the backend
71
+ // see https://gitlab.com/raytio/mono/-/blob/devo/common/signing/tests/test_sign.py#L104
72
+ const jwk = {
73
+ kty: "RSA",
74
+ alg: "PS512",
75
+ key_ops: ["verify"],
76
+ ext: true,
77
+ n: "wD6Oy9Wts0BAI7ObvxD73MNppefO3XMEMSZSxi1JTyfmavzV59rXMleRK5IBoY7ghOyy33-6131qQyh6cfbz5q67mHmTBEJmOccmw1hbl7SVSUHXOuUGUq5C7p3qnxeUhOFtxBlhMdIj0vkZ923lPHZpw9Yhit-RlLwW01Qnh-mGNmWMuUqrcj-WDb0WbIxjkaUR_DEIELkFiD9nF56mv3A6bMX_-ZJaF21ChD_b8qy_unQhNWrrUUwGzUaEMyw1dbPnvQ1iouMADlRlDBojZB0rWveK0PswqnUy3bB9dqVjpn50lN3CgdGeOPVVOcaLHhX0OLOCERpZY0hbuajfGIORMqnvF1dZJ_0OPrm-etpHK3ngK2qJ-mSjobd9DP_KISe2hAWs0FU4wbgG8U4VgcjYCkuABSh9c3xMEA5xyXV8iwGjTdmsOf4AvbBj1vY1dJVBYeGHuVRm-SxWepoVbYYDPg0366sYiim9IcQG0olxqAfkglB4yAmqYfp_kxqL2Cb8ysgyioHe9vmZDTbfTTm00qVAVKr2bctAgI787VEpS7Ou_2QTPIxYlsQCa-MbdgtUoXQ6__VdRklEaiQ_IFLBZzg5lFNBbF1Qytgav-BLfjZR31T5fhhougzrjBrtDGsSiV8qIvr5ZBfeJCatm1N_atbdjfWG7njoQMRwV5c",
78
+ e: "AQAB",
79
+ };
80
+ const cryptoKey = await crypto.subtle.importKey("jwk", jwk, { name: "RSA-PSS", hash: "SHA-512" }, false, ["verify"]);
81
+ const data = "This is definitely true";
82
+ const signature = "V0r2KI4TBTwyzV8fCmGIL6x3t11ROhG9UJts1VZiap94wXEnEP+TNQ6qVV1v8bWY9uoubYLNzzuVfbn4q1J1ERNJWEM469/A8zNRiptDEmrlfSMBHE2Ahrwn5h0nSjxttOGazqitX+Ir0Qo0itNINpIa5cRC4ttyumauSKFcaGhFHGCuOpQz4xPoCR6ww2UtEvfvomTI5PYedG2XzhOJioZ8P9QtgKDnt+mp5Baq5avRtDpK+gZ8zOHXW8YL5d/oO16K6HDdYe4nGjr4MQU93HJjzQVEtsZqtvwf2BznVSuChGd0kedlal2uIrDQ4H4l6Td1TqW+FJp+EHVdbdrbk+Gql2GwiDAVsIPHDDGfaeIZQSStbr9VgQSm0feqtRlI627VCQ5ewAd1+tEgRiVTz74ya8tmc62WzTF5dbSYkQtllc/SJNWxaMQ+MEBrDyatfRrurTeTXwnRROJ/idJFKGKdxQichNdiuqL/CnBQJc3oYzQNoQXAmIUGDelISY5+XgHKXDs9YX4AVbru/Ina3E86TIekLVOUqg7TJi1hLAdF3RANp48uXk7LuIffzcff5sBUQ0vtHVtyTFwd2Jmt1CiEd9DitMNQT5cjM21IC6uJ4HZ6Ni/fd0N9frZ6Svknd/MMsbM7aqt8z6IgREqYdGY2XLYZCeZ0qmCGW243v3A=";
83
+ const stringifiedData = (0, util_1.canonicalJsonify)(data);
84
+ expect(await (0, checkOwnVerification_1.checkSignature)(cryptoKey, signature, stringifiedData)).toBe(true);
85
+ });
86
+ });
87
+ describe("checkJsonSignature", () => {
88
+ it("can verify a bundled verification", async () => {
89
+ expect(await (0, __1.checkJsonSignature)(sampleBundle_json_1.default.data, sampleBundle_json_1.default.signature)).toBe(true);
90
+ });
91
+ });
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const checkSomeoneElsesVerifications_1 = require("../checkSomeoneElsesVerifications");
4
+ const toVerify = [
5
+ {
6
+ verifications: [{ signature: "sig1", n_id: "nid1" }],
7
+ data_to_verify: [{ value: "val1" }],
8
+ },
9
+ {
10
+ verifications: [{ signature: "sig2", n_id: "nid2" }],
11
+ data_to_verify: [{ value: "val2" }],
12
+ },
13
+ ];
14
+ describe("checkSomeoneElsesVerifications", () => {
15
+ it("calls the API and filters out garbage", async () => {
16
+ global.fetch = jest
17
+ .fn()
18
+ .mockImplementation()
19
+ // first fetch request
20
+ .mockImplementationOnce(async () => ({
21
+ json: async () => [{ verified: true }, { verified: false }, {}, {}],
22
+ }));
23
+ const result = await (0, checkSomeoneElsesVerifications_1.checkSomeoneElsesVerifications)({
24
+ apiUrl: "https://example.com",
25
+ toVerify,
26
+ });
27
+ expect(fetch).toHaveBeenCalledTimes(1);
28
+ expect(fetch).toHaveBeenCalledWith("https://example.com/extract_verify/v2/verify_check", {
29
+ body: JSON.stringify(toVerify),
30
+ method: "POST",
31
+ signal: undefined,
32
+ });
33
+ // note how empty objects were filtered out
34
+ expect(result).toStrictEqual([{ verified: true }, { verified: false }]);
35
+ });
36
+ it("throws an error if the API rejects", async () => {
37
+ global.fetch = jest
38
+ .fn()
39
+ .mockImplementation()
40
+ // first fetch request
41
+ .mockImplementationOnce(async () => ({
42
+ json: async () => ({ message: "An API error" }),
43
+ }));
44
+ await expect(() => (0, checkSomeoneElsesVerifications_1.checkSomeoneElsesVerifications)({
45
+ apiUrl: "https://example.com",
46
+ toVerify,
47
+ })).rejects.toThrow(new Error("An API error"));
48
+ });
49
+ });
@@ -0,0 +1,43 @@
1
+ {
2
+ "__comment": "This belongs to 10feb22 🦈",
3
+ "bundle_version": 1,
4
+ "data": {
5
+ "n_id": "f4220899-4af7-4f66-8a00-1bc13936096b",
6
+ "schema": "ss_NZ_Company",
7
+ "fields": {
8
+ "nzbn": {
9
+ "verifiers": [
10
+ { "verifier_id": "185e9cdc-e8fb-4147-b996-3c2dd60fab59" },
11
+ { "verifier_id": "185e9cdc-e8fb-4147-b996-3c2dd60fab59" }
12
+ ],
13
+ "derivations": []
14
+ },
15
+ "entity_type_description": {
16
+ "verifiers": [
17
+ { "verifier_id": "185e9cdc-e8fb-4147-b996-3c2dd60fab59" },
18
+ { "verifier_id": "185e9cdc-e8fb-4147-b996-3c2dd60fab59" }
19
+ ],
20
+ "derivations": [],
21
+ "value": "NZ Limited Company"
22
+ },
23
+ "entity_status_description": {
24
+ "verifiers": [
25
+ { "verifier_id": "185e9cdc-e8fb-4147-b996-3c2dd60fab59" },
26
+ { "verifier_id": "185e9cdc-e8fb-4147-b996-3c2dd60fab59" }
27
+ ],
28
+ "derivations": [],
29
+ "value": "Registered"
30
+ },
31
+ "nz_legal_entity_name": {
32
+ "verifiers": [
33
+ { "verifier_id": "185e9cdc-e8fb-4147-b996-3c2dd60fab59" },
34
+ { "verifier_id": "185e9cdc-e8fb-4147-b996-3c2dd60fab59" }
35
+ ],
36
+ "derivations": [],
37
+ "value": "DEPARTMENT OF CONVERSATION LIMITED"
38
+ }
39
+ },
40
+ "valid_until": "2022-03-13T02:26:20.468171"
41
+ },
42
+ "signature": "AiWWrL+S1paYOqJiOtU3qwLTCkkZjwDq3FuHl7oy14IATYOhCeHLf+ca44X1Wc6pYpTQckjKnJZL\nkfgiwNE97aymWIOc+ZZGEb5YhXRNO+inTV4k5zppaDN3n3YAGzn7zMxleh3+opzJqncNaJtpZ0Wv\na9Pu/m4WjyT5ee3Myz6VOOMuVkcaTL4FD8XT7NdCh0ybRevAZ5R9xl0YuWMhvNpf3P6ieTikHXYN\nkKbPTnAhNdBmqV4njSIR66M82Ek0d9VcsX4zhmlhpdCmGRlXLgHEyMCF4iHlCIxSeKtGaOm2QK2R\nOV/lN3VScDNWyD8lPBipcj++5ZGII6BnFFG8LlT3gY/Y/wt8KeH/xgdu0a7Lt6J/BOiGLFfscUmb\nH5K5t48gnQ5BQS+Cf/yhayMV49LlGiK9m1iPlbmuJH1L2/ZM+iLsIrSTGCU0Rpbkw7qvm0dkUNYf\nhvlj/RnUxcy0Lr/84CzLvBhFMmBX+RHlcPrCWpIiibsdaD81kRyvLY2TASLFTeHajfr+UvtP3LVs\n8NGwRQHd6c2/ptxv3ERRUnDtNASatsLe67ZHg9SeF3BDhMHZwU1neYyrBI1TMECasFli5rP5gviq\nC8ZwFQ9lnDDTidWBF8GjRl6ope4wIuNBBkOsIIeyqIJE5BRUH4LhVUnN1be696uCKnWOyOo7fkc=\n"
43
+ }
@@ -1,5 +1,5 @@
1
1
  import { UId, VerificationPayload } from "@raytio/types";
2
- declare type SingleVerToCheck = {
2
+ type SingleVerToCheck = {
3
3
  verObject: VerificationPayload<false>;
4
4
  signature: string;
5
5
  userId: UId;
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.checkOwnVerification = exports.checkJsonSignature = exports.checkSignature = void 0;
4
4
  const util_1 = require("../../../util");
5
- let cache; // eslint-disable-line fp/no-let
5
+ let cache;
6
6
  const base64ToArrayBuffer = (str) => Uint8Array.from(atob(str), c => c.charCodeAt(0));
7
7
  async function getJwk() {
8
8
  // eslint-disable-next-line fp/no-mutation
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@raytio/core",
3
- "version": "10.0.1",
3
+ "version": "11.0.0",
4
4
  "license": "MIT",
5
5
  "main": "index",
6
6
  "types": "index",
@@ -12,19 +12,18 @@
12
12
  ],
13
13
  "scripts": {
14
14
  "docs": "sh ../../scripts/generate-docs.sh",
15
- "build": "tsc && find dist -path \"*/__tests__*\" -delete && rm -rf dist/setupTests*",
16
- "test": "jest"
15
+ "build": "tsc && rimraf dist/jest.setup.* dist/**/__tests__",
16
+ "test": "jest && yarn docs"
17
17
  },
18
18
  "dependencies": {
19
19
  "@raytio/maxcryptor": "3.1.0",
20
- "@raytio/types": "6.0.2",
21
- "ramda": "0.28.0"
20
+ "@raytio/types": "7.1.0",
21
+ "ramda": "0.29.0"
22
22
  },
23
23
  "devDependencies": {
24
- "@types/ramda": "0.28.14",
25
- "jest": "28.1.2",
26
- "localstorage-polyfill": "1.0.1",
27
- "ts-jest": "28.0.5"
24
+ "@types/ramda": "0.28.24",
25
+ "jest": "29.5.0",
26
+ "ts-jest": "29.1.0"
28
27
  },
29
28
  "jest": {
30
29
  "transform": {
@@ -54,10 +53,14 @@
54
53
  "jest-junit"
55
54
  ],
56
55
  "setupFilesAfterEnv": [
57
- "./src/setupTests.js"
56
+ "./src/jest.setup.ts"
58
57
  ]
59
58
  },
60
59
  "jest-junit": {
61
60
  "outputDirectory": "../../tmp"
61
+ },
62
+ "engineStrict": true,
63
+ "engines": {
64
+ "node": ">=18"
62
65
  }
63
66
  }