@ledgerhq/live-promise 0.1.1 → 0.2.0-nightly.20260108024339

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @ledgerhq/live-promise
2
2
 
3
+ ## 0.2.0-nightly.20260108024339
4
+
5
+ ### Minor Changes
6
+
7
+ - [#13396](https://github.com/LedgerHQ/ledger-live/pull/13396) [`b9a3e43`](https://github.com/LedgerHQ/ledger-live/commit/b9a3e431be33943ab4feb4294d6a7f27b966e61b) Thanks [@gre-ledger](https://github.com/gre-ledger)! - Update Jest to v30
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [[`b9a3e43`](https://github.com/LedgerHQ/ledger-live/commit/b9a3e431be33943ab4feb4294d6a7f27b966e61b)]:
12
+ - @ledgerhq/logs@6.14.0-nightly.20260108024339
13
+
3
14
  ## 0.1.1
4
15
 
5
16
  ### Patch Changes
package/jest.config.js CHANGED
@@ -1,10 +1,19 @@
1
- /** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
2
1
  module.exports = {
3
- preset: 'ts-jest',
4
- testEnvironment: 'node',
5
- testPathIgnorePatterns: [
6
- "lib/",
7
- "lib-es/"
8
- ]
2
+ testEnvironment: "node",
3
+ testPathIgnorePatterns: ["lib/", "lib-es/"],
4
+ transform: {
5
+ "^.+\\.(t|j)sx?$": [
6
+ "@swc/jest",
7
+ {
8
+ jsc: {
9
+ target: "esnext",
10
+ },
11
+ },
12
+ ],
13
+ },
14
+ coverageReporters: ["json", ["lcov", { file: "lcov.info", projectRoot: "../../" }], "text"],
15
+ reporters: [
16
+ "default",
17
+ ["jest-sonar", { outputName: "sonar-executionTests-report.xml", reportedFilePath: "absolute" }],
18
+ ],
9
19
  };
10
-
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ledgerhq/live-promise",
3
- "version": "0.1.1",
3
+ "version": "0.2.0-nightly.20260108024339",
4
4
  "description": "Ledger Live Promise utilities",
5
5
  "keywords": [
6
6
  "Ledger"
@@ -21,12 +21,13 @@
21
21
  "types": "lib/index.d.ts",
22
22
  "license": "Apache-2.0",
23
23
  "dependencies": {
24
- "@ledgerhq/logs": "^6.13.0"
24
+ "@ledgerhq/logs": "^6.14.0-nightly.20260108024339"
25
25
  },
26
26
  "devDependencies": {
27
- "@types/jest": "^29.5.10",
28
- "jest": "^29.7.0",
29
- "ts-jest": "^29.1.1"
27
+ "@types/jest": "30.0.0",
28
+ "jest": "30.2.0",
29
+ "@swc/jest": "0.2.39",
30
+ "@swc/core": "1.15.8"
30
31
  },
31
32
  "scripts": {
32
33
  "clean": "rimraf lib lib-es",
@@ -37,6 +38,7 @@
37
38
  "lint": "eslint ./src --no-error-on-unmatched-pattern --ext .ts,.tsx --cache",
38
39
  "lint:fix": "pnpm lint --fix",
39
40
  "test": "jest",
41
+ "coverage": "jest --coverage",
40
42
  "unimported": "pnpm knip --directory ../.. -W libs/promise"
41
43
  }
42
44
  }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=promise.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"promise.test.d.ts","sourceRoot":"","sources":["../src/promise.test.ts"],"names":[],"mappings":""}
@@ -1,72 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const promise_1 = require("./promise");
4
- describe("promise", () => {
5
- test("promiseAllBatched", async () => {
6
- const promisifyIdPlusOne = (a) => Promise.resolve(a + 1);
7
- const p = (0, promise_1.promiseAllBatched)(5, [], promisifyIdPlusOne);
8
- expect(typeof p.then).toBe("function");
9
- expect(await p).toEqual([]);
10
- expect(await (0, promise_1.promiseAllBatched)(5, [1, 2, 3, 4, 5, 6, 7, 8], promisifyIdPlusOne)).toEqual([
11
- 2, 3, 4, 5, 6, 7, 8, 9,
12
- ]);
13
- expect(await (0, promise_1.promiseAllBatched)(1, [1, 2, 3, 4, 5, 6, 7, 8], promisifyIdPlusOne)).toEqual([
14
- 2, 3, 4, 5, 6, 7, 8, 9,
15
- ]);
16
- expect(await (0, promise_1.promiseAllBatched)(10, [1, 2, 3, 4, 5, 6, 7, 8], promisifyIdPlusOne)).toEqual([
17
- 2, 3, 4, 5, 6, 7, 8, 9,
18
- ]);
19
- expect(await (0, promise_1.promiseAllBatched)(2, Array(6).fill(0), (_, i) => Promise.resolve(i))).toEqual([
20
- 0, 1, 2, 3, 4, 5,
21
- ]);
22
- });
23
- describe("promise retries", () => {
24
- test("should retry by default", async () => {
25
- let numberOfExecutions = 0;
26
- const testFunction = () => Promise.reject(numberOfExecutions++);
27
- try {
28
- await (0, promise_1.retry)(() => testFunction(), {
29
- maxRetry: 5,
30
- });
31
- }
32
- catch (e) {
33
- expect(e).toBe(5);
34
- }
35
- expect(numberOfExecutions).toBe(6);
36
- });
37
- test("should retry when retryCondition is passed", async () => {
38
- let numberOfExecutions = 0;
39
- const testFunction = () => Promise.reject(numberOfExecutions++);
40
- try {
41
- await (0, promise_1.retry)(() => testFunction(), {
42
- maxRetry: 5,
43
- retryCondition: _ => {
44
- return true;
45
- },
46
- });
47
- }
48
- catch (e) {
49
- expect(e).toBe(5);
50
- }
51
- expect(numberOfExecutions).toBe(6);
52
- });
53
- test("should not retry when retryCondition returns false", async () => {
54
- let numberOfExecutions = 0;
55
- const testFunction = () => Promise.reject(numberOfExecutions++);
56
- try {
57
- await (0, promise_1.retry)(() => testFunction(), {
58
- maxRetry: 5,
59
- retryCondition: e => {
60
- expect(e).toBe(0);
61
- return false;
62
- },
63
- });
64
- }
65
- catch (e) {
66
- expect(e).toBe(0);
67
- }
68
- expect(numberOfExecutions).toBe(1);
69
- });
70
- });
71
- });
72
- //# sourceMappingURL=promise.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"promise.test.js","sourceRoot":"","sources":["../src/promise.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=promise.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"promise.test.d.ts","sourceRoot":"","sources":["../src/promise.test.ts"],"names":[],"mappings":""}
@@ -1,70 +0,0 @@
1
- import { promiseAllBatched, retry } from "./promise";
2
- describe("promise", () => {
3
- test("promiseAllBatched", async () => {
4
- const promisifyIdPlusOne = (a) => Promise.resolve(a + 1);
5
- const p = promiseAllBatched(5, [], promisifyIdPlusOne);
6
- expect(typeof p.then).toBe("function");
7
- expect(await p).toEqual([]);
8
- expect(await promiseAllBatched(5, [1, 2, 3, 4, 5, 6, 7, 8], promisifyIdPlusOne)).toEqual([
9
- 2, 3, 4, 5, 6, 7, 8, 9,
10
- ]);
11
- expect(await promiseAllBatched(1, [1, 2, 3, 4, 5, 6, 7, 8], promisifyIdPlusOne)).toEqual([
12
- 2, 3, 4, 5, 6, 7, 8, 9,
13
- ]);
14
- expect(await promiseAllBatched(10, [1, 2, 3, 4, 5, 6, 7, 8], promisifyIdPlusOne)).toEqual([
15
- 2, 3, 4, 5, 6, 7, 8, 9,
16
- ]);
17
- expect(await promiseAllBatched(2, Array(6).fill(0), (_, i) => Promise.resolve(i))).toEqual([
18
- 0, 1, 2, 3, 4, 5,
19
- ]);
20
- });
21
- describe("promise retries", () => {
22
- test("should retry by default", async () => {
23
- let numberOfExecutions = 0;
24
- const testFunction = () => Promise.reject(numberOfExecutions++);
25
- try {
26
- await retry(() => testFunction(), {
27
- maxRetry: 5,
28
- });
29
- }
30
- catch (e) {
31
- expect(e).toBe(5);
32
- }
33
- expect(numberOfExecutions).toBe(6);
34
- });
35
- test("should retry when retryCondition is passed", async () => {
36
- let numberOfExecutions = 0;
37
- const testFunction = () => Promise.reject(numberOfExecutions++);
38
- try {
39
- await retry(() => testFunction(), {
40
- maxRetry: 5,
41
- retryCondition: _ => {
42
- return true;
43
- },
44
- });
45
- }
46
- catch (e) {
47
- expect(e).toBe(5);
48
- }
49
- expect(numberOfExecutions).toBe(6);
50
- });
51
- test("should not retry when retryCondition returns false", async () => {
52
- let numberOfExecutions = 0;
53
- const testFunction = () => Promise.reject(numberOfExecutions++);
54
- try {
55
- await retry(() => testFunction(), {
56
- maxRetry: 5,
57
- retryCondition: e => {
58
- expect(e).toBe(0);
59
- return false;
60
- },
61
- });
62
- }
63
- catch (e) {
64
- expect(e).toBe(0);
65
- }
66
- expect(numberOfExecutions).toBe(1);
67
- });
68
- });
69
- });
70
- //# sourceMappingURL=promise.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"promise.test.js","sourceRoot":"","sources":["../src/promise.test.ts"],"names":[],"mappings":"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"}