velocious 1.0.643 → 1.0.644
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/README.md +10 -1
- package/build/src/sync/assets/cache.d.ts +288 -0
- package/build/src/sync/assets/cache.d.ts.map +1 -0
- package/build/src/sync/assets/cache.js +883 -0
- package/build/src/sync/assets/types.d.ts +199 -0
- package/build/src/sync/assets/types.d.ts.map +1 -0
- package/build/src/sync/assets/types.js +56 -0
- package/build/src/testing/test-runner.d.ts +8 -0
- package/build/src/testing/test-runner.d.ts.map +1 -1
- package/build/src/testing/test-runner.js +49 -548
- package/build/src/testing/velocious-attempt-executor.d.ts +69 -0
- package/build/src/testing/velocious-attempt-executor.d.ts.map +1 -0
- package/build/src/testing/velocious-attempt-executor.js +402 -0
- package/build/src/testing/velocious-runner-reporter.d.ts +72 -0
- package/build/src/testing/velocious-runner-reporter.d.ts.map +1 -0
- package/build/src/testing/velocious-runner-reporter.js +152 -0
- package/build/src/testing/velocious-suite-hook-executor.d.ts +37 -0
- package/build/src/testing/velocious-suite-hook-executor.d.ts.map +1 -0
- package/build/src/testing/velocious-suite-hook-executor.js +66 -0
- package/build/src/testing/velocious-test-arguments.d.ts +34 -0
- package/build/src/testing/velocious-test-arguments.d.ts.map +1 -0
- package/build/src/testing/velocious-test-arguments.js +47 -0
- package/build/src/utils/sha256-bytes-hex.d.ts +7 -0
- package/build/src/utils/sha256-bytes-hex.d.ts.map +1 -0
- package/build/src/utils/sha256-bytes-hex.js +117 -0
- package/build/src/utils/sha256-hex.d.ts +2 -4
- package/build/src/utils/sha256-hex.d.ts.map +1 -1
- package/build/src/utils/sha256-hex.js +6 -120
- package/build/sync/assets/cache.js +998 -0
- package/build/sync/assets/types.js +62 -0
- package/build/testing/test-runner.js +46 -584
- package/build/testing/velocious-attempt-executor.js +431 -0
- package/build/testing/velocious-runner-reporter.js +166 -0
- package/build/testing/velocious-suite-hook-executor.js +71 -0
- package/build/testing/velocious-test-arguments.js +55 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/utils/sha256-bytes-hex.js +132 -0
- package/build/utils/sha256-hex.js +7 -135
- package/package.json +1 -1
- package/src/sync/assets/cache.js +998 -0
- package/src/sync/assets/types.js +62 -0
- package/src/testing/test-runner.js +46 -584
- package/src/testing/velocious-attempt-executor.js +431 -0
- package/src/testing/velocious-runner-reporter.js +166 -0
- package/src/testing/velocious-suite-hook-executor.js +71 -0
- package/src/testing/velocious-test-arguments.js +55 -0
- package/src/utils/sha256-bytes-hex.js +132 -0
- package/src/utils/sha256-hex.js +7 -135
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
import { addTrackedStackToError } from "../utils/with-tracked-stack.js";
|
|
3
|
+
import BacktraceCleaner from "../utils/backtrace-cleaner-node.js";
|
|
4
|
+
import picocolors from "picocolors";
|
|
5
|
+
import restArgsError from "../utils/rest-args-error.js";
|
|
6
|
+
import { testEvents } from "./test.js";
|
|
7
|
+
export default class VelociousRunnerReporter {
|
|
8
|
+
/**
|
|
9
|
+
* Creates the legacy event and result projection adapter.
|
|
10
|
+
* @param {object} args - Constructor arguments.
|
|
11
|
+
* @param {import("./test-runner.js").default} args.testRunner - Owning Velocious runner.
|
|
12
|
+
*/
|
|
13
|
+
constructor({ testRunner, ...restArgs }) {
|
|
14
|
+
restArgsError(restArgs);
|
|
15
|
+
this.testRunner = testRunner;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Projects one completed attempt into legacy events and final result accounting.
|
|
19
|
+
* Retry eligibility is decided by the caller before this method runs.
|
|
20
|
+
* @param {object} args - Completed attempt and retry metadata.
|
|
21
|
+
* @param {import("./test-runner.js").AttemptConsoleOutput[]} args.attemptConsoleOutputs - Captured output across attempts.
|
|
22
|
+
* @param {number} args.attemptNumber - Current one-based attempt.
|
|
23
|
+
* @param {string[]} args.descriptions - Parent description stack.
|
|
24
|
+
* @param {ReturnType<typeof JSON.parse>} args.error - Raw thrown or rejected value.
|
|
25
|
+
* @param {boolean} args.failed - Whether the attempt failed, independently of error truthiness.
|
|
26
|
+
* @param {string} args.leftPadding - Console indentation.
|
|
27
|
+
* @param {number} args.retriesUsed - Retry count consumed after this attempt.
|
|
28
|
+
* @param {number} args.retryCount - Configured retry limit.
|
|
29
|
+
* @param {import("./velocious-test-arguments.js").TestArgs} args.testArgs - Stable test arguments.
|
|
30
|
+
* @param {import("./velocious-test-arguments.js").TestData} args.testData - Test registration.
|
|
31
|
+
* @param {string} args.testDescription - Test description.
|
|
32
|
+
* @param {boolean} args.willRetry - Whether the legacy loop will run another attempt.
|
|
33
|
+
* @returns {Promise<void>} - Resolves after all legacy listeners complete.
|
|
34
|
+
*/
|
|
35
|
+
async reportAttempt({ attemptConsoleOutputs, attemptNumber, descriptions, error, failed, leftPadding, retriesUsed, retryCount, testArgs, testData, testDescription, willRetry, ...restArgs }) {
|
|
36
|
+
restArgsError(restArgs);
|
|
37
|
+
const testRunner = this.testRunner;
|
|
38
|
+
if (!failed)
|
|
39
|
+
testRunner._successfulTests++;
|
|
40
|
+
if (failed) {
|
|
41
|
+
await this.emitEvent("testAttemptFailed", {
|
|
42
|
+
configuration: testRunner.getConfiguration(),
|
|
43
|
+
descriptions,
|
|
44
|
+
error,
|
|
45
|
+
attemptNumber,
|
|
46
|
+
nextAttempt: willRetry ? attemptNumber + 1 : undefined,
|
|
47
|
+
retriesUsed,
|
|
48
|
+
retryCount,
|
|
49
|
+
testArgs,
|
|
50
|
+
testData,
|
|
51
|
+
testDescription,
|
|
52
|
+
testRunner,
|
|
53
|
+
willRetry
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
if (willRetry) {
|
|
57
|
+
console.warn(picocolors.red(`${leftPadding} Retrying (${retriesUsed}/${retryCount}) after error: ${error instanceof Error ? error.message : String(error)}`));
|
|
58
|
+
await this.emitEvent("testRetrying", {
|
|
59
|
+
configuration: testRunner.getConfiguration(),
|
|
60
|
+
descriptions,
|
|
61
|
+
error,
|
|
62
|
+
nextAttempt: attemptNumber + 1,
|
|
63
|
+
retriesUsed,
|
|
64
|
+
retryCount,
|
|
65
|
+
testArgs,
|
|
66
|
+
testData,
|
|
67
|
+
testDescription,
|
|
68
|
+
testRunner
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
if (attemptNumber > 1) {
|
|
72
|
+
await this.emitEvent("testRetried", {
|
|
73
|
+
configuration: testRunner.getConfiguration(),
|
|
74
|
+
descriptions,
|
|
75
|
+
error,
|
|
76
|
+
attemptNumber,
|
|
77
|
+
retriesUsed,
|
|
78
|
+
retryCount,
|
|
79
|
+
testArgs,
|
|
80
|
+
testData,
|
|
81
|
+
testDescription,
|
|
82
|
+
testRunner
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
if (failed && !willRetry) {
|
|
86
|
+
await this.reportFailedTest({ attemptConsoleOutputs, descriptions, error, leftPadding, testArgs, testData, testDescription });
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Records and emits one final failed test result.
|
|
91
|
+
* @param {object} args - Final failure metadata.
|
|
92
|
+
* @param {import("./test-runner.js").AttemptConsoleOutput[]} args.attemptConsoleOutputs - Captured output across attempts.
|
|
93
|
+
* @param {string[]} args.descriptions - Parent description stack.
|
|
94
|
+
* @param {ReturnType<typeof JSON.parse>} args.error - Raw final failure.
|
|
95
|
+
* @param {string} args.leftPadding - Console indentation.
|
|
96
|
+
* @param {import("./velocious-test-arguments.js").TestArgs} args.testArgs - Stable test arguments.
|
|
97
|
+
* @param {import("./velocious-test-arguments.js").TestData} args.testData - Test registration.
|
|
98
|
+
* @param {string} args.testDescription - Test description.
|
|
99
|
+
* @returns {Promise<void>} - Resolves after the final-failure listener completes.
|
|
100
|
+
*/
|
|
101
|
+
async reportFailedTest({ attemptConsoleOutputs, descriptions, error, leftPadding, testArgs, testData, testDescription }) {
|
|
102
|
+
const testRunner = this.testRunner;
|
|
103
|
+
const consoleOutput = testRunner.buildConsoleOutput(attemptConsoleOutputs);
|
|
104
|
+
if (error instanceof Error) {
|
|
105
|
+
console.error(picocolors.red(`${leftPadding} Test failed: ${error.message}`));
|
|
106
|
+
addTrackedStackToError(error);
|
|
107
|
+
const backtraceCleaner = new BacktraceCleaner(error);
|
|
108
|
+
const cleanedStack = backtraceCleaner.getCleanedStack();
|
|
109
|
+
const stackLines = cleanedStack?.split("\n");
|
|
110
|
+
if (stackLines) {
|
|
111
|
+
for (const stackLine of stackLines) {
|
|
112
|
+
console.error(picocolors.red(`${leftPadding} ${stackLine}`));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
console.error(picocolors.red(`${leftPadding} Test failed with a ${typeof error}: ${String(error)}`));
|
|
118
|
+
}
|
|
119
|
+
testRunner.printFailedConsoleOutput({ consoleOutput, leftPadding });
|
|
120
|
+
testRunner._failedTests++;
|
|
121
|
+
testRunner._failedTestDetails.push({
|
|
122
|
+
fullDescription: testRunner.buildFullDescription(descriptions, testDescription),
|
|
123
|
+
filePath: testData.filePath,
|
|
124
|
+
line: testData.line,
|
|
125
|
+
error,
|
|
126
|
+
consoleOutput: consoleOutput || undefined
|
|
127
|
+
});
|
|
128
|
+
await this.emitEvent("testFailed", {
|
|
129
|
+
configuration: testRunner.getConfiguration(),
|
|
130
|
+
descriptions,
|
|
131
|
+
error,
|
|
132
|
+
testArgs,
|
|
133
|
+
testData,
|
|
134
|
+
testDescription,
|
|
135
|
+
testRunner
|
|
136
|
+
});
|
|
137
|
+
testRunner.printRerunCommand({ descriptions, testDescription, testData, leftPadding });
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Emits one legacy event and awaits listeners in registration order.
|
|
141
|
+
* @param {string} eventName - Event name.
|
|
142
|
+
* @param {object} payload - Event payload.
|
|
143
|
+
* @returns {Promise<void>} - Resolves when all listeners complete.
|
|
144
|
+
*/
|
|
145
|
+
async emitEvent(eventName, payload) {
|
|
146
|
+
const listeners = testEvents.listeners(eventName);
|
|
147
|
+
for (const listener of listeners) {
|
|
148
|
+
await listener(payload);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVsb2Npb3VzLXJ1bm5lci1yZXBvcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0aW5nL3ZlbG9jaW91cy1ydW5uZXItcmVwb3J0ZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTtBQUVaLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBQ3ZFLE9BQU8sZ0JBQWdCLE1BQU0sb0NBQW9DLENBQUE7QUFDakUsT0FBTyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ25DLE9BQU8sYUFBYSxNQUFNLDZCQUE2QixDQUFBO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFFdEMsTUFBTSxDQUFDLE9BQU8sT0FBTyx1QkFBdUI7SUFDMUM7Ozs7T0FJRztJQUNILFlBQVksRUFBQyxVQUFVLEVBQUUsR0FBRyxRQUFRLEVBQUM7UUFDbkMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO0lBQzlCLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FpQkc7SUFDSCxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQUMscUJBQXFCLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxHQUFHLFFBQVEsRUFBQztRQUN4TCxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDdkIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQTtRQUVsQyxJQUFJLENBQUMsTUFBTTtZQUFFLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO1FBRTFDLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQUU7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QUMsT0FBTyxDQUFDLENBQUE7UUFDekIsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgeyBhZGRUcmFja2VkU3RhY2tUb0Vycm9yIH0gZnJvbSBcIi4uL3V0aWxzL3dpdGgtdHJhY2tlZC1zdGFjay5qc1wiXG5pbXBvcnQgQmFja3RyYWNlQ2xlYW5lciBmcm9tIFwiLi4vdXRpbHMvYmFja3RyYWNlLWNsZWFuZXItbm9kZS5qc1wiXG5pbXBvcnQgcGljb2NvbG9ycyBmcm9tIFwicGljb2NvbG9yc1wiXG5pbXBvcnQgcmVzdEFyZ3NFcnJvciBmcm9tIFwiLi4vdXRpbHMvcmVzdC1hcmdzLWVycm9yLmpzXCJcbmltcG9ydCB7IHRlc3RFdmVudHMgfSBmcm9tIFwiLi90ZXN0LmpzXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzUnVubmVyUmVwb3J0ZXIge1xuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgbGVnYWN5IGV2ZW50IGFuZCByZXN1bHQgcHJvamVjdGlvbiBhZGFwdGVyLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIENvbnN0cnVjdG9yIGFyZ3VtZW50cy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL3Rlc3QtcnVubmVyLmpzXCIpLmRlZmF1bHR9IGFyZ3MudGVzdFJ1bm5lciAtIE93bmluZyBWZWxvY2lvdXMgcnVubmVyLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe3Rlc3RSdW5uZXIsIC4uLnJlc3RBcmdzfSkge1xuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG4gICAgdGhpcy50ZXN0UnVubmVyID0gdGVzdFJ1bm5lclxuICB9XG5cbiAgLyoqXG4gICAqIFByb2plY3RzIG9uZSBjb21wbGV0ZWQgYXR0ZW1wdCBpbnRvIGxlZ2FjeSBldmVudHMgYW5kIGZpbmFsIHJlc3VsdCBhY2NvdW50aW5nLlxuICAgKiBSZXRyeSBlbGlnaWJpbGl0eSBpcyBkZWNpZGVkIGJ5IHRoZSBjYWxsZXIgYmVmb3JlIHRoaXMgbWV0aG9kIHJ1bnMuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gQ29tcGxldGVkIGF0dGVtcHQgYW5kIHJldHJ5IG1ldGFkYXRhLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vdGVzdC1ydW5uZXIuanNcIikuQXR0ZW1wdENvbnNvbGVPdXRwdXRbXX0gYXJncy5hdHRlbXB0Q29uc29sZU91dHB1dHMgLSBDYXB0dXJlZCBvdXRwdXQgYWNyb3NzIGF0dGVtcHRzLlxuICAgKiBAcGFyYW0ge251bWJlcn0gYXJncy5hdHRlbXB0TnVtYmVyIC0gQ3VycmVudCBvbmUtYmFzZWQgYXR0ZW1wdC5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gYXJncy5kZXNjcmlwdGlvbnMgLSBQYXJlbnQgZGVzY3JpcHRpb24gc3RhY2suXG4gICAqIEBwYXJhbSB7UmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT59IGFyZ3MuZXJyb3IgLSBSYXcgdGhyb3duIG9yIHJlamVjdGVkIHZhbHVlLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGFyZ3MuZmFpbGVkIC0gV2hldGhlciB0aGUgYXR0ZW1wdCBmYWlsZWQsIGluZGVwZW5kZW50bHkgb2YgZXJyb3IgdHJ1dGhpbmVzcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubGVmdFBhZGRpbmcgLSBDb25zb2xlIGluZGVudGF0aW9uLlxuICAgKiBAcGFyYW0ge251bWJlcn0gYXJncy5yZXRyaWVzVXNlZCAtIFJldHJ5IGNvdW50IGNvbnN1bWVkIGFmdGVyIHRoaXMgYXR0ZW1wdC5cbiAgICogQHBhcmFtIHtudW1iZXJ9IGFyZ3MucmV0cnlDb3VudCAtIENvbmZpZ3VyZWQgcmV0cnkgbGltaXQuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi92ZWxvY2lvdXMtdGVzdC1hcmd1bWVudHMuanNcIikuVGVzdEFyZ3N9IGFyZ3MudGVzdEFyZ3MgLSBTdGFibGUgdGVzdCBhcmd1bWVudHMuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi92ZWxvY2lvdXMtdGVzdC1hcmd1bWVudHMuanNcIikuVGVzdERhdGF9IGFyZ3MudGVzdERhdGEgLSBUZXN0IHJlZ2lzdHJhdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MudGVzdERlc2NyaXB0aW9uIC0gVGVzdCBkZXNjcmlwdGlvbi5cbiAgICogQHBhcmFtIHtib29sZWFufSBhcmdzLndpbGxSZXRyeSAtIFdoZXRoZXIgdGhlIGxlZ2FjeSBsb29wIHdpbGwgcnVuIGFub3RoZXIgYXR0ZW1wdC5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59IC0gUmVzb2x2ZXMgYWZ0ZXIgYWxsIGxlZ2FjeSBsaXN0ZW5lcnMgY29tcGxldGUuXG4gICAqL1xuICBhc3luYyByZXBvcnRBdHRlbXB0KHthdHRlbXB0Q29uc29sZU91dHB1dHMsIGF0dGVtcHROdW1iZXIsIGRlc2NyaXB0aW9ucywgZXJyb3IsIGZhaWxlZCwgbGVmdFBhZGRpbmcsIHJldHJpZXNVc2VkLCByZXRyeUNvdW50LCB0ZXN0QXJncywgdGVzdERhdGEsIHRlc3REZXNjcmlwdGlvbiwgd2lsbFJldHJ5LCAuLi5yZXN0QXJnc30pIHtcbiAgICByZXN0QXJnc0Vycm9yKHJlc3RBcmdzKVxuICAgIGNvbnN0IHRlc3RSdW5uZXIgPSB0aGlzLnRlc3RSdW5uZXJcblxuICAgIGlmICghZmFpbGVkKSB0ZXN0UnVubmVyLl9zdWNjZXNzZnVsVGVzdHMrK1xuXG4gICAgaWYgKGZhaWxlZCkge1xuICAgICAgYXdhaXQgdGhpcy5lbWl0RXZlbnQoXCJ0ZXN0QXR0ZW1wdEZhaWxlZFwiLCB7XG4gICAgICAgIGNvbmZpZ3VyYXRpb246IHRlc3RSdW5uZXIuZ2V0Q29uZmlndXJhdGlvbigpLFxuICAgICAgICBkZXNjcmlwdGlvbnMsXG4gICAgICAgIGVycm9yLFxuICAgICAgICBhdHRlbXB0TnVtYmVyLFxuICAgICAgICBuZXh0QXR0ZW1wdDogd2lsbFJldHJ5ID8gYXR0ZW1wdE51bWJlciArIDEgOiB1bmRlZmluZWQsXG4gICAgICAgIHJldHJpZXNVc2VkLFxuICAgICAgICByZXRyeUNvdW50LFxuICAgICAgICB0ZXN0QXJncyxcbiAgICAgICAgdGVzdERhdGEsXG4gICAgICAgIHRlc3REZXNjcmlwdGlvbixcbiAgICAgICAgdGVzdFJ1bm5lcixcbiAgICAgICAgd2lsbFJldHJ5XG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmICh3aWxsUmV0cnkpIHtcbiAgICAgIGNvbnNvbGUud2FybihwaWNvY29sb3JzLnJlZChgJHtsZWZ0UGFkZGluZ30gIFJldHJ5aW5nICgke3JldHJpZXNVc2VkfS8ke3JldHJ5Q291bnR9KSBhZnRlciBlcnJvcjogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YCkpXG4gICAgICBhd2FpdCB0aGlzLmVtaXRFdmVudChcInRlc3RSZXRyeWluZ1wiLCB7XG4gICAgICAgIGNvbmZpZ3VyYXRpb246IHRlc3RSdW5uZXIuZ2V0Q29uZmlndXJhdGlvbigpLFxuICAgICAgICBkZXNjcmlwdGlvbnMsXG4gICAgICAgIGVycm9yLFxuICAgICAgICBuZXh0QXR0ZW1wdDogYXR0ZW1wdE51bWJlciArIDEsXG4gICAgICAgIHJldHJpZXNVc2VkLFxuICAgICAgICByZXRyeUNvdW50LFxuICAgICAgICB0ZXN0QXJncyxcbiAgICAgICAgdGVzdERhdGEsXG4gICAgICAgIHRlc3REZXNjcmlwdGlvbixcbiAgICAgICAgdGVzdFJ1bm5lclxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAoYXR0ZW1wdE51bWJlciA+IDEpIHtcbiAgICAgIGF3YWl0IHRoaXMuZW1pdEV2ZW50KFwidGVzdFJldHJpZWRcIiwge1xuICAgICAgICBjb25maWd1cmF0aW9uOiB0ZXN0UnVubmVyLmdldENvbmZpZ3VyYXRpb24oKSxcbiAgICAgICAgZGVzY3JpcHRpb25zLFxuICAgICAgICBlcnJvcixcbiAgICAgICAgYXR0ZW1wdE51bWJlcixcbiAgICAgICAgcmV0cmllc1VzZWQsXG4gICAgICAgIHJldHJ5Q291bnQsXG4gICAgICAgIHRlc3RBcmdzLFxuICAgICAgICB0ZXN0RGF0YSxcbiAgICAgICAgdGVzdERlc2NyaXB0aW9uLFxuICAgICAgICB0ZXN0UnVubmVyXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChmYWlsZWQgJiYgIXdpbGxSZXRyeSkge1xuICAgICAgYXdhaXQgdGhpcy5yZXBvcnRGYWlsZWRUZXN0KHthdHRlbXB0Q29uc29sZU91dHB1dHMsIGRlc2NyaXB0aW9ucywgZXJyb3IsIGxlZnRQYWRkaW5nLCB0ZXN0QXJncywgdGVzdERhdGEsIHRlc3REZXNjcmlwdGlvbn0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlY29yZHMgYW5kIGVtaXRzIG9uZSBmaW5hbCBmYWlsZWQgdGVzdCByZXN1bHQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gRmluYWwgZmFpbHVyZSBtZXRhZGF0YS5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL3Rlc3QtcnVubmVyLmpzXCIpLkF0dGVtcHRDb25zb2xlT3V0cHV0W119IGFyZ3MuYXR0ZW1wdENvbnNvbGVPdXRwdXRzIC0gQ2FwdHVyZWQgb3V0cHV0IGFjcm9zcyBhdHRlbXB0cy5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gYXJncy5kZXNjcmlwdGlvbnMgLSBQYXJlbnQgZGVzY3JpcHRpb24gc3RhY2suXG4gICAqIEBwYXJhbSB7UmV0dXJuVHlwZTx0eXBlb2YgSlNPTi5wYXJzZT59IGFyZ3MuZXJyb3IgLSBSYXcgZmluYWwgZmFpbHVyZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFyZ3MubGVmdFBhZGRpbmcgLSBDb25zb2xlIGluZGVudGF0aW9uLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vdmVsb2Npb3VzLXRlc3QtYXJndW1lbnRzLmpzXCIpLlRlc3RBcmdzfSBhcmdzLnRlc3RBcmdzIC0gU3RhYmxlIHRlc3QgYXJndW1lbnRzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vdmVsb2Npb3VzLXRlc3QtYXJndW1lbnRzLmpzXCIpLlRlc3REYXRhfSBhcmdzLnRlc3REYXRhIC0gVGVzdCByZWdpc3RyYXRpb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcmdzLnRlc3REZXNjcmlwdGlvbiAtIFRlc3QgZGVzY3JpcHRpb24uXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIGFmdGVyIHRoZSBmaW5hbC1mYWlsdXJlIGxpc3RlbmVyIGNvbXBsZXRlcy5cbiAgICovXG4gIGFzeW5jIHJlcG9ydEZhaWxlZFRlc3Qoe2F0dGVtcHRDb25zb2xlT3V0cHV0cywgZGVzY3JpcHRpb25zLCBlcnJvciwgbGVmdFBhZGRpbmcsIHRlc3RBcmdzLCB0ZXN0RGF0YSwgdGVzdERlc2NyaXB0aW9ufSkge1xuICAgIGNvbnN0IHRlc3RSdW5uZXIgPSB0aGlzLnRlc3RSdW5uZXJcbiAgICBjb25zdCBjb25zb2xlT3V0cHV0ID0gdGVzdFJ1bm5lci5idWlsZENvbnNvbGVPdXRwdXQoYXR0ZW1wdENvbnNvbGVPdXRwdXRzKVxuXG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IocGljb2NvbG9ycy5yZWQoYCR7bGVmdFBhZGRpbmd9ICBUZXN0IGZhaWxlZDogJHtlcnJvci5tZXNzYWdlfWApKVxuICAgICAgYWRkVHJhY2tlZFN0YWNrVG9FcnJvcihlcnJvcilcblxuICAgICAgY29uc3QgYmFja3RyYWNlQ2xlYW5lciA9IG5ldyBCYWNrdHJhY2VDbGVhbmVyKGVycm9yKVxuICAgICAgY29uc3QgY2xlYW5lZFN0YWNrID0gYmFja3RyYWNlQ2xlYW5lci5nZXRDbGVhbmVkU3RhY2soKVxuICAgICAgY29uc3Qgc3RhY2tMaW5lcyA9IGNsZWFuZWRTdGFjaz8uc3BsaXQoXCJcXG5cIilcblxuICAgICAgaWYgKHN0YWNrTGluZXMpIHtcbiAgICAgICAgZm9yIChjb25zdCBzdGFja0xpbmUgb2Ygc3RhY2tMaW5lcykge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IocGljb2NvbG9ycy5yZWQoYCR7bGVmdFBhZGRpbmd9ICAke3N0YWNrTGluZX1gKSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKHBpY29jb2xvcnMucmVkKGAke2xlZnRQYWRkaW5nfSAgVGVzdCBmYWlsZWQgd2l0aCBhICR7dHlwZW9mIGVycm9yfTogJHtTdHJpbmcoZXJyb3IpfWApKVxuICAgIH1cblxuICAgIHRlc3RSdW5uZXIucHJpbnRGYWlsZWRDb25zb2xlT3V0cHV0KHtjb25zb2xlT3V0cHV0LCBsZWZ0UGFkZGluZ30pXG4gICAgdGVzdFJ1bm5lci5fZmFpbGVkVGVzdHMrK1xuICAgIHRlc3RSdW5uZXIuX2ZhaWxlZFRlc3REZXRhaWxzLnB1c2goe1xuICAgICAgZnVsbERlc2NyaXB0aW9uOiB0ZXN0UnVubmVyLmJ1aWxkRnVsbERlc2NyaXB0aW9uKGRlc2NyaXB0aW9ucywgdGVzdERlc2NyaXB0aW9uKSxcbiAgICAgIGZpbGVQYXRoOiB0ZXN0RGF0YS5maWxlUGF0aCxcbiAgICAgIGxpbmU6IHRlc3REYXRhLmxpbmUsXG4gICAgICBlcnJvcixcbiAgICAgIGNvbnNvbGVPdXRwdXQ6IGNvbnNvbGVPdXRwdXQgfHwgdW5kZWZpbmVkXG4gICAgfSlcblxuICAgIGF3YWl0IHRoaXMuZW1pdEV2ZW50KFwidGVzdEZhaWxlZFwiLCB7XG4gICAgICBjb25maWd1cmF0aW9uOiB0ZXN0UnVubmVyLmdldENvbmZpZ3VyYXRpb24oKSxcbiAgICAgIGRlc2NyaXB0aW9ucyxcbiAgICAgIGVycm9yLFxuICAgICAgdGVzdEFyZ3MsXG4gICAgICB0ZXN0RGF0YSxcbiAgICAgIHRlc3REZXNjcmlwdGlvbixcbiAgICAgIHRlc3RSdW5uZXJcbiAgICB9KVxuXG4gICAgdGVzdFJ1bm5lci5wcmludFJlcnVuQ29tbWFuZCh7ZGVzY3JpcHRpb25zLCB0ZXN0RGVzY3JpcHRpb24sIHRlc3REYXRhLCBsZWZ0UGFkZGluZ30pXG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgb25lIGxlZ2FjeSBldmVudCBhbmQgYXdhaXRzIGxpc3RlbmVycyBpbiByZWdpc3RyYXRpb24gb3JkZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWUgLSBFdmVudCBuYW1lLlxuICAgKiBAcGFyYW0ge29iamVjdH0gcGF5bG9hZCAtIEV2ZW50IHBheWxvYWQuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gYWxsIGxpc3RlbmVycyBjb21wbGV0ZS5cbiAgICovXG4gIGFzeW5jIGVtaXRFdmVudChldmVudE5hbWUsIHBheWxvYWQpIHtcbiAgICBjb25zdCBsaXN0ZW5lcnMgPSB0ZXN0RXZlbnRzLmxpc3RlbmVycyhldmVudE5hbWUpXG5cbiAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIGxpc3RlbmVycykge1xuICAgICAgYXdhaXQgbGlzdGVuZXIocGF5bG9hZClcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export default class VelociousSuiteHookExecutor {
|
|
2
|
+
testRunner: import("./test-runner.js").default;
|
|
3
|
+
/**
|
|
4
|
+
* Creates an executor for Velocious suite hooks.
|
|
5
|
+
* @param {object} args - Constructor arguments.
|
|
6
|
+
* @param {import("./test-runner.js").default} args.testRunner - Owning Velocious runner.
|
|
7
|
+
*/
|
|
8
|
+
constructor({ testRunner, ...restArgs }: {
|
|
9
|
+
testRunner: import("./test-runner.js").default;
|
|
10
|
+
});
|
|
11
|
+
/**
|
|
12
|
+
* Runs suite setup hooks in declaration order.
|
|
13
|
+
* @param {object} args - Hook execution arguments.
|
|
14
|
+
* @param {import("./test-runner.js").BeforeAfterAllCallbackObjectType[]} args.hooks - Profiled setup hooks.
|
|
15
|
+
* @returns {Promise<void>} - Resolves after every setup hook completes.
|
|
16
|
+
*/
|
|
17
|
+
runBeforeAlls({ hooks, ...restArgs }: {
|
|
18
|
+
hooks: import("./test-runner.js").BeforeAfterAllCallbackObjectType[];
|
|
19
|
+
}): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Runs every suite teardown hook in reverse declaration order.
|
|
22
|
+
* @param {object} args - Hook execution arguments.
|
|
23
|
+
* @param {import("./test-runner.js").BeforeAfterAllCallbackObjectType[]} args.hooks - Profiled teardown hooks.
|
|
24
|
+
* @returns {Promise<void>} - Resolves after every teardown hook settles.
|
|
25
|
+
*/
|
|
26
|
+
runAfterAlls({ hooks, ...restArgs }: {
|
|
27
|
+
hooks: import("./test-runner.js").BeforeAfterAllCallbackObjectType[];
|
|
28
|
+
}): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Runs one suite hook with its Velocious profiler attribution.
|
|
31
|
+
* @param {import("./test-runner.js").BeforeAfterAllCallbackObjectType} hook - Hook registration.
|
|
32
|
+
* @param {"beforeAll" | "afterAll"} phase - Profiler phase.
|
|
33
|
+
* @returns {Promise<void>} - Resolves when the hook completes.
|
|
34
|
+
*/
|
|
35
|
+
runHook(hook: import("./test-runner.js").BeforeAfterAllCallbackObjectType, phase: "beforeAll" | "afterAll"): Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=velocious-suite-hook-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"velocious-suite-hook-executor.d.ts","sourceRoot":"","sources":["../../../src/testing/velocious-suite-hook-executor.js"],"names":[],"mappings":"AAIA,MAAM,CAAC,OAAO,OAAO,0BAA0B;IAQtC,UAAU;IAPjB;;;;OAIG;IACH,YAAY,EAAC,UAAU,EAAE,GAAG,QAAQ,EAAC,EAFlC;QAAiD,UAAU,EAAnD,OAAO,kBAAkB,EAAE,OAAO,CAC5C;KACoC,EAGpC;IAED;;;;;OAKG;IACG,aAAa,CAAC,EAAC,KAAK,EAAE,GAAG,QAAQ,EAAC,EAHrC;QAA4E,KAAK,EAAzE,OAAO,kBAAkB,EAAE,gCAAgC,EAAE,CACrE;KAEqC,GAF3B,OAAO,CAAC,IAAI,CAAC,CAQzB;IAED;;;;;OAKG;IACG,YAAY,CAAC,EAAC,KAAK,EAAE,GAAG,QAAQ,EAAC,EAHpC;QAA4E,KAAK,EAAzE,OAAO,kBAAkB,EAAE,gCAAgC,EAAE,CACrE;KAEoC,GAF1B,OAAO,CAAC,IAAI,CAAC,CAmBzB;IAED;;;;;OAKG;IACG,OAAO,CAAC,IAAI,EAJP,OAAO,kBAAkB,EAAE,gCAIpB,EAAE,KAAK,EAHd,WAAW,GAAG,UAGA,GAFZ,OAAO,CAAC,IAAI,CAAC,CAWzB;CACF"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
import restArgsError from "../utils/rest-args-error.js";
|
|
3
|
+
export default class VelociousSuiteHookExecutor {
|
|
4
|
+
/**
|
|
5
|
+
* Creates an executor for Velocious suite hooks.
|
|
6
|
+
* @param {object} args - Constructor arguments.
|
|
7
|
+
* @param {import("./test-runner.js").default} args.testRunner - Owning Velocious runner.
|
|
8
|
+
*/
|
|
9
|
+
constructor({ testRunner, ...restArgs }) {
|
|
10
|
+
restArgsError(restArgs);
|
|
11
|
+
this.testRunner = testRunner;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Runs suite setup hooks in declaration order.
|
|
15
|
+
* @param {object} args - Hook execution arguments.
|
|
16
|
+
* @param {import("./test-runner.js").BeforeAfterAllCallbackObjectType[]} args.hooks - Profiled setup hooks.
|
|
17
|
+
* @returns {Promise<void>} - Resolves after every setup hook completes.
|
|
18
|
+
*/
|
|
19
|
+
async runBeforeAlls({ hooks, ...restArgs }) {
|
|
20
|
+
restArgsError(restArgs);
|
|
21
|
+
for (const hook of hooks) {
|
|
22
|
+
await this.runHook(hook, "beforeAll");
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Runs every suite teardown hook in reverse declaration order.
|
|
27
|
+
* @param {object} args - Hook execution arguments.
|
|
28
|
+
* @param {import("./test-runner.js").BeforeAfterAllCallbackObjectType[]} args.hooks - Profiled teardown hooks.
|
|
29
|
+
* @returns {Promise<void>} - Resolves after every teardown hook settles.
|
|
30
|
+
*/
|
|
31
|
+
async runAfterAlls({ hooks, ...restArgs }) {
|
|
32
|
+
restArgsError(restArgs);
|
|
33
|
+
/** @type {ReturnType<typeof JSON.parse>[]} */
|
|
34
|
+
const errors = [];
|
|
35
|
+
for (const hook of [...hooks].reverse()) {
|
|
36
|
+
try {
|
|
37
|
+
await this.runHook(hook, "afterAll");
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
errors.push(error);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (errors.length == 1)
|
|
44
|
+
throw errors[0];
|
|
45
|
+
if (errors.length > 1) {
|
|
46
|
+
throw new AggregateError(errors, "Multiple afterAll hooks failed", { cause: errors[0] });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Runs one suite hook with its Velocious profiler attribution.
|
|
51
|
+
* @param {import("./test-runner.js").BeforeAfterAllCallbackObjectType} hook - Hook registration.
|
|
52
|
+
* @param {"beforeAll" | "afterAll"} phase - Profiler phase.
|
|
53
|
+
* @returns {Promise<void>} - Resolves when the hook completes.
|
|
54
|
+
*/
|
|
55
|
+
async runHook(hook, phase) {
|
|
56
|
+
await this.testRunner.runProfileSpan({
|
|
57
|
+
phase,
|
|
58
|
+
declarationIndex: hook.declarationIndex,
|
|
59
|
+
declarationScopeId: hook.declarationScopeId,
|
|
60
|
+
filePath: hook.ownerFilePath
|
|
61
|
+
}, async () => {
|
|
62
|
+
await hook.callback({ configuration: this.testRunner.getConfiguration() });
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVsb2Npb3VzLXN1aXRlLWhvb2stZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdGluZy92ZWxvY2lvdXMtc3VpdGUtaG9vay1leGVjdXRvci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxhQUFhLE1BQU0sNkJBQTZCLENBQUE7QUFFdkQsTUFBTSxDQUFDLE9BQU8sT0FBTywwQkFBMEI7SUFDN0M7Ozs7T0FJRztJQUNILFlBQVksRUFBQyxVQUFVLEVBQUUsR0FBRyxRQUFRLEVBQUM7UUFDbkMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFBO0lBQzlCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBQyxLQUFLLEVBQUUsR0FBRyxRQUFRLEVBQUM7UUFDdEMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRXZCLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQTtRQUN2QyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFDLEtBQUssRUFBRSxHQUFHLFFBQVEsRUFBQztRQUNyQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDdkIsOENBQThDO1FBQzlDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQTtRQUVqQixLQUFLLE1BQU0sSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQztnQkFDSCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFBO1lBQ3RDLENBQUM7WUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNmLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDcEIsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQztZQUFFLE1BQU0sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3ZDLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxnQ0FBZ0MsRUFBRSxFQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFBO1FBQ3hGLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLO1FBQ3ZCLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUM7WUFDbkMsS0FBSztZQUNMLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDdkMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtZQUMzQyxRQUFRLEVBQUUsSUFBSSxDQUFDLGFBQWE7U0FDN0IsRUFBRSxLQUFLLElBQUksRUFBRTtZQUNaLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixFQUFFLEVBQUMsQ0FBQyxDQUFBO1FBQzFFLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCByZXN0QXJnc0Vycm9yIGZyb20gXCIuLi91dGlscy9yZXN0LWFyZ3MtZXJyb3IuanNcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWxvY2lvdXNTdWl0ZUhvb2tFeGVjdXRvciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGV4ZWN1dG9yIGZvciBWZWxvY2lvdXMgc3VpdGUgaG9va3MuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzIC0gQ29uc3RydWN0b3IgYXJndW1lbnRzLlxuICAgKiBAcGFyYW0ge2ltcG9ydChcIi4vdGVzdC1ydW5uZXIuanNcIikuZGVmYXVsdH0gYXJncy50ZXN0UnVubmVyIC0gT3duaW5nIFZlbG9jaW91cyBydW5uZXIuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7dGVzdFJ1bm5lciwgLi4ucmVzdEFyZ3N9KSB7XG4gICAgcmVzdEFyZ3NFcnJvcihyZXN0QXJncylcbiAgICB0aGlzLnRlc3RSdW5uZXIgPSB0ZXN0UnVubmVyXG4gIH1cblxuICAvKipcbiAgICogUnVucyBzdWl0ZSBzZXR1cCBob29rcyBpbiBkZWNsYXJhdGlvbiBvcmRlci5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBIb29rIGV4ZWN1dGlvbiBhcmd1bWVudHMuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi90ZXN0LXJ1bm5lci5qc1wiKS5CZWZvcmVBZnRlckFsbENhbGxiYWNrT2JqZWN0VHlwZVtdfSBhcmdzLmhvb2tzIC0gUHJvZmlsZWQgc2V0dXAgaG9va3MuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIGFmdGVyIGV2ZXJ5IHNldHVwIGhvb2sgY29tcGxldGVzLlxuICAgKi9cbiAgYXN5bmMgcnVuQmVmb3JlQWxscyh7aG9va3MsIC4uLnJlc3RBcmdzfSkge1xuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG5cbiAgICBmb3IgKGNvbnN0IGhvb2sgb2YgaG9va3MpIHtcbiAgICAgIGF3YWl0IHRoaXMucnVuSG9vayhob29rLCBcImJlZm9yZUFsbFwiKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGV2ZXJ5IHN1aXRlIHRlYXJkb3duIGhvb2sgaW4gcmV2ZXJzZSBkZWNsYXJhdGlvbiBvcmRlci5cbiAgICogQHBhcmFtIHtvYmplY3R9IGFyZ3MgLSBIb29rIGV4ZWN1dGlvbiBhcmd1bWVudHMuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi90ZXN0LXJ1bm5lci5qc1wiKS5CZWZvcmVBZnRlckFsbENhbGxiYWNrT2JqZWN0VHlwZVtdfSBhcmdzLmhvb2tzIC0gUHJvZmlsZWQgdGVhcmRvd24gaG9va3MuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIGFmdGVyIGV2ZXJ5IHRlYXJkb3duIGhvb2sgc2V0dGxlcy5cbiAgICovXG4gIGFzeW5jIHJ1bkFmdGVyQWxscyh7aG9va3MsIC4uLnJlc3RBcmdzfSkge1xuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG4gICAgLyoqIEB0eXBlIHtSZXR1cm5UeXBlPHR5cGVvZiBKU09OLnBhcnNlPltdfSAqL1xuICAgIGNvbnN0IGVycm9ycyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IGhvb2sgb2YgWy4uLmhvb2tzXS5yZXZlcnNlKCkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMucnVuSG9vayhob29rLCBcImFmdGVyQWxsXCIpXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBlcnJvcnMucHVzaChlcnJvcilcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA9PSAxKSB0aHJvdyBlcnJvcnNbMF1cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBBZ2dyZWdhdGVFcnJvcihlcnJvcnMsIFwiTXVsdGlwbGUgYWZ0ZXJBbGwgaG9va3MgZmFpbGVkXCIsIHtjYXVzZTogZXJyb3JzWzBdfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUnVucyBvbmUgc3VpdGUgaG9vayB3aXRoIGl0cyBWZWxvY2lvdXMgcHJvZmlsZXIgYXR0cmlidXRpb24uXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi90ZXN0LXJ1bm5lci5qc1wiKS5CZWZvcmVBZnRlckFsbENhbGxiYWNrT2JqZWN0VHlwZX0gaG9vayAtIEhvb2sgcmVnaXN0cmF0aW9uLlxuICAgKiBAcGFyYW0ge1wiYmVmb3JlQWxsXCIgfCBcImFmdGVyQWxsXCJ9IHBoYXNlIC0gUHJvZmlsZXIgcGhhc2UuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIHdoZW4gdGhlIGhvb2sgY29tcGxldGVzLlxuICAgKi9cbiAgYXN5bmMgcnVuSG9vayhob29rLCBwaGFzZSkge1xuICAgIGF3YWl0IHRoaXMudGVzdFJ1bm5lci5ydW5Qcm9maWxlU3Bhbih7XG4gICAgICBwaGFzZSxcbiAgICAgIGRlY2xhcmF0aW9uSW5kZXg6IGhvb2suZGVjbGFyYXRpb25JbmRleCxcbiAgICAgIGRlY2xhcmF0aW9uU2NvcGVJZDogaG9vay5kZWNsYXJhdGlvblNjb3BlSWQsXG4gICAgICBmaWxlUGF0aDogaG9vay5vd25lckZpbGVQYXRoXG4gICAgfSwgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgaG9vay5jYWxsYmFjayh7Y29uZmlndXJhdGlvbjogdGhpcy50ZXN0UnVubmVyLmdldENvbmZpZ3VyYXRpb24oKX0pXG4gICAgfSlcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export type TestArgs = import("./test-runner.js").TestArgs;
|
|
2
|
+
export type TestData = import("./test-runner.js").TestData;
|
|
3
|
+
/** @typedef {import("./test-runner.js").TestArgs} TestArgs */
|
|
4
|
+
/** @typedef {import("./test-runner.js").TestData} TestData */
|
|
5
|
+
export default class VelociousTestArguments {
|
|
6
|
+
testRunner: import("./test-runner.js").default;
|
|
7
|
+
/**
|
|
8
|
+
* Creates the framework-owned test argument adapter.
|
|
9
|
+
* @param {object} args - Constructor arguments.
|
|
10
|
+
* @param {import("./test-runner.js").default} args.testRunner - Owning Velocious runner.
|
|
11
|
+
*/
|
|
12
|
+
constructor({ testRunner, ...restArgs }: {
|
|
13
|
+
testRunner: import("./test-runner.js").default;
|
|
14
|
+
});
|
|
15
|
+
/**
|
|
16
|
+
* Builds the stable framework-owned argument object for one selected test.
|
|
17
|
+
* @param {TestData} testData - Selected test registration.
|
|
18
|
+
* @returns {Promise<TestArgs>} - Attempt-shared callback arguments.
|
|
19
|
+
*/
|
|
20
|
+
build(testData: TestData): Promise<TestArgs>;
|
|
21
|
+
/**
|
|
22
|
+
* Copies declaration metadata before selection can inspect it.
|
|
23
|
+
* @param {TestData} testData - Test registration.
|
|
24
|
+
* @returns {TestArgs} - Independent test arguments.
|
|
25
|
+
*/
|
|
26
|
+
copy(testData: TestData): TestArgs;
|
|
27
|
+
/**
|
|
28
|
+
* Injects type-specific framework collaborators after selection.
|
|
29
|
+
* @param {TestArgs} testArgs - Selected test arguments.
|
|
30
|
+
* @returns {Promise<void>} - Resolves after required collaborators are ready.
|
|
31
|
+
*/
|
|
32
|
+
inject(testArgs: TestArgs): Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=velocious-test-arguments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"velocious-test-arguments.d.ts","sourceRoot":"","sources":["../../../src/testing/velocious-test-arguments.js"],"names":[],"mappings":"AAII,YAA+C,QAAQ,GAA7C,OAAO,kBAAkB,EAAE,QAAQ,CAAU;AACvD,YAA+C,QAAQ,GAA7C,OAAO,kBAAkB,EAAE,QAAQ,CAAU;AAD3D,8DAA8D;AAC9D,8DAA8D;AAE9D,MAAM,CAAC,OAAO,OAAO,sBAAsB;IAQlC,UAAU;IAPjB;;;;OAIG;IACH,YAAY,EAAC,UAAU,EAAE,GAAG,QAAQ,EAAC,EAFlC;QAAiD,UAAU,EAAnD,OAAO,kBAAkB,EAAE,OAAO,CAC5C;KACoC,EAGpC;IAED;;;;OAIG;IACG,KAAK,CAAC,QAAQ,EAHT,QAGS,GAFP,OAAO,CAAC,QAAQ,CAAC,CAQ7B;IAED;;;;OAIG;IACH,IAAI,CAAC,QAAQ,EAHF,QAGE,GAFA,QAAQ,CAIpB;IAED;;;;OAIG;IACG,MAAM,CAAC,QAAQ,EAHV,QAGU,GAFR,OAAO,CAAC,IAAI,CAAC,CAUzB;CACF"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
import restArgsError from "../utils/rest-args-error.js";
|
|
3
|
+
/** @typedef {import("./test-runner.js").TestArgs} TestArgs */
|
|
4
|
+
/** @typedef {import("./test-runner.js").TestData} TestData */
|
|
5
|
+
export default class VelociousTestArguments {
|
|
6
|
+
/**
|
|
7
|
+
* Creates the framework-owned test argument adapter.
|
|
8
|
+
* @param {object} args - Constructor arguments.
|
|
9
|
+
* @param {import("./test-runner.js").default} args.testRunner - Owning Velocious runner.
|
|
10
|
+
*/
|
|
11
|
+
constructor({ testRunner, ...restArgs }) {
|
|
12
|
+
restArgsError(restArgs);
|
|
13
|
+
this.testRunner = testRunner;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Builds the stable framework-owned argument object for one selected test.
|
|
17
|
+
* @param {TestData} testData - Selected test registration.
|
|
18
|
+
* @returns {Promise<TestArgs>} - Attempt-shared callback arguments.
|
|
19
|
+
*/
|
|
20
|
+
async build(testData) {
|
|
21
|
+
const testArgs = this.copy(testData);
|
|
22
|
+
await this.inject(testArgs);
|
|
23
|
+
return testArgs;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Copies declaration metadata before selection can inspect it.
|
|
27
|
+
* @param {TestData} testData - Test registration.
|
|
28
|
+
* @returns {TestArgs} - Independent test arguments.
|
|
29
|
+
*/
|
|
30
|
+
copy(testData) {
|
|
31
|
+
return /** @type {TestArgs} */ (Object.assign({}, testData.args));
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Injects type-specific framework collaborators after selection.
|
|
35
|
+
* @param {TestArgs} testArgs - Selected test arguments.
|
|
36
|
+
* @returns {Promise<void>} - Resolves after required collaborators are ready.
|
|
37
|
+
*/
|
|
38
|
+
async inject(testArgs) {
|
|
39
|
+
if (testArgs.type == "model" || testArgs.type == "request") {
|
|
40
|
+
testArgs.application = await this.testRunner.application();
|
|
41
|
+
}
|
|
42
|
+
if (testArgs.type == "request") {
|
|
43
|
+
testArgs.client = await this.testRunner.requestClient();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVsb2Npb3VzLXRlc3QtYXJndW1lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rlc3RpbmcvdmVsb2Npb3VzLXRlc3QtYXJndW1lbnRzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWixPQUFPLGFBQWEsTUFBTSw2QkFBNkIsQ0FBQTtBQUV2RCw4REFBOEQ7QUFDOUQsOERBQThEO0FBRTlELE1BQU0sQ0FBQyxPQUFPLE9BQU8sc0JBQXNCO0lBQ3pDOzs7O09BSUc7SUFDSCxZQUFZLEVBQUMsVUFBVSxFQUFFLEdBQUcsUUFBUSxFQUFDO1FBQ25DLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQTtJQUM5QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUTtRQUNsQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRXBDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUUzQixPQUFPLFFBQVEsQ0FBQTtJQUNqQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksQ0FBQyxRQUFRO1FBQ1gsT0FBTyx1QkFBdUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ25FLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRO1FBQ25CLElBQUksUUFBUSxDQUFDLElBQUksSUFBSSxPQUFPLElBQUksUUFBUSxDQUFDLElBQUksSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUMzRCxRQUFRLENBQUMsV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUM1RCxDQUFDO1FBRUQsSUFBSSxRQUFRLENBQUMsSUFBSSxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQy9CLFFBQVEsQ0FBQyxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQ3pELENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHJlc3RBcmdzRXJyb3IgZnJvbSBcIi4uL3V0aWxzL3Jlc3QtYXJncy1lcnJvci5qc1wiXG5cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi90ZXN0LXJ1bm5lci5qc1wiKS5UZXN0QXJnc30gVGVzdEFyZ3MgKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi90ZXN0LXJ1bm5lci5qc1wiKS5UZXN0RGF0YX0gVGVzdERhdGEgKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVsb2Npb3VzVGVzdEFyZ3VtZW50cyB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBmcmFtZXdvcmstb3duZWQgdGVzdCBhcmd1bWVudCBhZGFwdGVyLlxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJncyAtIENvbnN0cnVjdG9yIGFyZ3VtZW50cy5cbiAgICogQHBhcmFtIHtpbXBvcnQoXCIuL3Rlc3QtcnVubmVyLmpzXCIpLmRlZmF1bHR9IGFyZ3MudGVzdFJ1bm5lciAtIE93bmluZyBWZWxvY2lvdXMgcnVubmVyLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioe3Rlc3RSdW5uZXIsIC4uLnJlc3RBcmdzfSkge1xuICAgIHJlc3RBcmdzRXJyb3IocmVzdEFyZ3MpXG4gICAgdGhpcy50ZXN0UnVubmVyID0gdGVzdFJ1bm5lclxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgc3RhYmxlIGZyYW1ld29yay1vd25lZCBhcmd1bWVudCBvYmplY3QgZm9yIG9uZSBzZWxlY3RlZCB0ZXN0LlxuICAgKiBAcGFyYW0ge1Rlc3REYXRhfSB0ZXN0RGF0YSAtIFNlbGVjdGVkIHRlc3QgcmVnaXN0cmF0aW9uLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxUZXN0QXJncz59IC0gQXR0ZW1wdC1zaGFyZWQgY2FsbGJhY2sgYXJndW1lbnRzLlxuICAgKi9cbiAgYXN5bmMgYnVpbGQodGVzdERhdGEpIHtcbiAgICBjb25zdCB0ZXN0QXJncyA9IHRoaXMuY29weSh0ZXN0RGF0YSlcblxuICAgIGF3YWl0IHRoaXMuaW5qZWN0KHRlc3RBcmdzKVxuXG4gICAgcmV0dXJuIHRlc3RBcmdzXG4gIH1cblxuICAvKipcbiAgICogQ29waWVzIGRlY2xhcmF0aW9uIG1ldGFkYXRhIGJlZm9yZSBzZWxlY3Rpb24gY2FuIGluc3BlY3QgaXQuXG4gICAqIEBwYXJhbSB7VGVzdERhdGF9IHRlc3REYXRhIC0gVGVzdCByZWdpc3RyYXRpb24uXG4gICAqIEByZXR1cm5zIHtUZXN0QXJnc30gLSBJbmRlcGVuZGVudCB0ZXN0IGFyZ3VtZW50cy5cbiAgICovXG4gIGNvcHkodGVzdERhdGEpIHtcbiAgICByZXR1cm4gLyoqIEB0eXBlIHtUZXN0QXJnc30gKi8gKE9iamVjdC5hc3NpZ24oe30sIHRlc3REYXRhLmFyZ3MpKVxuICB9XG5cbiAgLyoqXG4gICAqIEluamVjdHMgdHlwZS1zcGVjaWZpYyBmcmFtZXdvcmsgY29sbGFib3JhdG9ycyBhZnRlciBzZWxlY3Rpb24uXG4gICAqIEBwYXJhbSB7VGVzdEFyZ3N9IHRlc3RBcmdzIC0gU2VsZWN0ZWQgdGVzdCBhcmd1bWVudHMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fSAtIFJlc29sdmVzIGFmdGVyIHJlcXVpcmVkIGNvbGxhYm9yYXRvcnMgYXJlIHJlYWR5LlxuICAgKi9cbiAgYXN5bmMgaW5qZWN0KHRlc3RBcmdzKSB7XG4gICAgaWYgKHRlc3RBcmdzLnR5cGUgPT0gXCJtb2RlbFwiIHx8IHRlc3RBcmdzLnR5cGUgPT0gXCJyZXF1ZXN0XCIpIHtcbiAgICAgIHRlc3RBcmdzLmFwcGxpY2F0aW9uID0gYXdhaXQgdGhpcy50ZXN0UnVubmVyLmFwcGxpY2F0aW9uKClcbiAgICB9XG5cbiAgICBpZiAodGVzdEFyZ3MudHlwZSA9PSBcInJlcXVlc3RcIikge1xuICAgICAgdGVzdEFyZ3MuY2xpZW50ID0gYXdhaXQgdGhpcy50ZXN0UnVubmVyLnJlcXVlc3RDbGllbnQoKVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Computes a SHA-256 hex digest for arbitrary bytes without Node-only imports.
|
|
3
|
+
* @param {Uint8Array} bytes - Bytes to digest.
|
|
4
|
+
* @returns {string} Hex digest.
|
|
5
|
+
*/
|
|
6
|
+
export default function sha256BytesHex(bytes: Uint8Array): string;
|
|
7
|
+
//# sourceMappingURL=sha256-bytes-hex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sha256-bytes-hex.d.ts","sourceRoot":"","sources":["../../../src/utils/sha256-bytes-hex.js"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,KAAK,EAHjC,UAGiC,GAF/B,MAAM,CAmFlB"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
/**
|
|
3
|
+
* Computes a SHA-256 hex digest for arbitrary bytes without Node-only imports.
|
|
4
|
+
* @param {Uint8Array} bytes - Bytes to digest.
|
|
5
|
+
* @returns {string} Hex digest.
|
|
6
|
+
*/
|
|
7
|
+
export default function sha256BytesHex(bytes) {
|
|
8
|
+
const bitLength = bytes.length * 8;
|
|
9
|
+
const blockCount = Math.ceil((bytes.length + 9) / 64);
|
|
10
|
+
const block = new Uint8Array(64);
|
|
11
|
+
const hash = SHA256_INITIAL_HASH.slice();
|
|
12
|
+
/** @type {number[]} */
|
|
13
|
+
const words = new Array(64);
|
|
14
|
+
const highLength = Math.floor(bitLength / 0x100000000);
|
|
15
|
+
const lowLength = bitLength >>> 0;
|
|
16
|
+
for (let blockIndex = 0; blockIndex < blockCount; blockIndex += 1) {
|
|
17
|
+
const offset = blockIndex * 64;
|
|
18
|
+
const chunkLength = Math.min(64, Math.max(0, bytes.length - offset));
|
|
19
|
+
block.fill(0);
|
|
20
|
+
if (chunkLength > 0)
|
|
21
|
+
block.set(bytes.subarray(offset, offset + chunkLength));
|
|
22
|
+
if (bytes.length >= offset && bytes.length < offset + 64)
|
|
23
|
+
block[bytes.length - offset] = 0x80;
|
|
24
|
+
if (blockIndex === blockCount - 1) {
|
|
25
|
+
block[56] = (highLength >>> 24) & 0xff;
|
|
26
|
+
block[57] = (highLength >>> 16) & 0xff;
|
|
27
|
+
block[58] = (highLength >>> 8) & 0xff;
|
|
28
|
+
block[59] = highLength & 0xff;
|
|
29
|
+
block[60] = (lowLength >>> 24) & 0xff;
|
|
30
|
+
block[61] = (lowLength >>> 16) & 0xff;
|
|
31
|
+
block[62] = (lowLength >>> 8) & 0xff;
|
|
32
|
+
block[63] = lowLength & 0xff;
|
|
33
|
+
}
|
|
34
|
+
for (let index = 0; index < 16; index++) {
|
|
35
|
+
const byteIndex = index * 4;
|
|
36
|
+
words[index] = ((block[byteIndex] << 24) | (block[byteIndex + 1] << 16) | (block[byteIndex + 2] << 8) | block[byteIndex + 3]) >>> 0;
|
|
37
|
+
}
|
|
38
|
+
for (let index = 16; index < 64; index++) {
|
|
39
|
+
const s0 = rotateRight(words[index - 15], 7) ^ rotateRight(words[index - 15], 18) ^ (words[index - 15] >>> 3);
|
|
40
|
+
const s1 = rotateRight(words[index - 2], 17) ^ rotateRight(words[index - 2], 19) ^ (words[index - 2] >>> 10);
|
|
41
|
+
words[index] = add32(words[index - 16], s0, words[index - 7], s1);
|
|
42
|
+
}
|
|
43
|
+
let a = hash[0];
|
|
44
|
+
let b = hash[1];
|
|
45
|
+
let c = hash[2];
|
|
46
|
+
let d = hash[3];
|
|
47
|
+
let e = hash[4];
|
|
48
|
+
let f = hash[5];
|
|
49
|
+
let g = hash[6];
|
|
50
|
+
let h = hash[7];
|
|
51
|
+
for (let index = 0; index < 64; index++) {
|
|
52
|
+
const s1 = rotateRight(e, 6) ^ rotateRight(e, 11) ^ rotateRight(e, 25);
|
|
53
|
+
const ch = (e & f) ^ ((~e) & g);
|
|
54
|
+
const temp1 = add32(h, s1, ch, SHA256_K[index], words[index]);
|
|
55
|
+
const s0 = rotateRight(a, 2) ^ rotateRight(a, 13) ^ rotateRight(a, 22);
|
|
56
|
+
const maj = (a & b) ^ (a & c) ^ (b & c);
|
|
57
|
+
const temp2 = add32(s0, maj);
|
|
58
|
+
h = g;
|
|
59
|
+
g = f;
|
|
60
|
+
f = e;
|
|
61
|
+
e = add32(d, temp1);
|
|
62
|
+
d = c;
|
|
63
|
+
c = b;
|
|
64
|
+
b = a;
|
|
65
|
+
a = add32(temp1, temp2);
|
|
66
|
+
}
|
|
67
|
+
hash[0] = add32(hash[0], a);
|
|
68
|
+
hash[1] = add32(hash[1], b);
|
|
69
|
+
hash[2] = add32(hash[2], c);
|
|
70
|
+
hash[3] = add32(hash[3], d);
|
|
71
|
+
hash[4] = add32(hash[4], e);
|
|
72
|
+
hash[5] = add32(hash[5], f);
|
|
73
|
+
hash[6] = add32(hash[6], g);
|
|
74
|
+
hash[7] = add32(hash[7], h);
|
|
75
|
+
}
|
|
76
|
+
return hash.map((value) => value.toString(16).padStart(8, "0")).join("");
|
|
77
|
+
}
|
|
78
|
+
const SHA256_INITIAL_HASH = [
|
|
79
|
+
0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,
|
|
80
|
+
0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19
|
|
81
|
+
];
|
|
82
|
+
const SHA256_K = [
|
|
83
|
+
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
|
|
84
|
+
0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
|
|
85
|
+
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
|
|
86
|
+
0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
|
|
87
|
+
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
|
|
88
|
+
0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
|
|
89
|
+
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
|
|
90
|
+
0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
|
|
91
|
+
0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
|
|
92
|
+
0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
|
|
93
|
+
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
|
|
94
|
+
0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
|
|
95
|
+
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
|
|
96
|
+
0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
|
|
97
|
+
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
|
|
98
|
+
0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
|
|
99
|
+
];
|
|
100
|
+
/**
|
|
101
|
+
* Rotates an unsigned value right.
|
|
102
|
+
* @param {number} value Unsigned value.
|
|
103
|
+
* @param {number} bits Rotation count.
|
|
104
|
+
* @returns {number} Rotated value.
|
|
105
|
+
*/
|
|
106
|
+
function rotateRight(value, bits) {
|
|
107
|
+
return (value >>> bits) | (value << (32 - bits));
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Adds numbers with unsigned 32-bit overflow.
|
|
111
|
+
* @param {...number} values Values to add.
|
|
112
|
+
* @returns {number} Unsigned sum.
|
|
113
|
+
*/
|
|
114
|
+
function add32(...values) {
|
|
115
|
+
return values.reduce((sum, value) => (sum + value) >>> 0, 0);
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhMjU2LWJ5dGVzLWhleC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9zaGEyNTYtYnl0ZXMtaGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVk7QUFFWjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sVUFBVSxjQUFjLENBQUMsS0FBSztJQUMxQyxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQTtJQUNsQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQTtJQUNyRCxNQUFNLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUNoQyxNQUFNLElBQUksR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUN4Qyx1QkFBdUI7SUFDdkIsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUE7SUFFM0IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsV0FBVyxDQUFDLENBQUE7SUFDdEQsTUFBTSxTQUFTLEdBQUcsU0FBUyxLQUFLLENBQUMsQ0FBQTtJQUVqQyxLQUFLLElBQUksVUFBVSxHQUFHLENBQUMsRUFBRSxVQUFVLEdBQUcsVUFBVSxFQUFFLFVBQVUsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNsRSxNQUFNLE1BQU0sR0FBRyxVQUFVLEdBQUcsRUFBRSxDQUFBO1FBQzlCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUVwRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2IsSUFBSSxXQUFXLEdBQUcsQ0FBQztZQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUE7UUFDNUUsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLE1BQU0sSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sR0FBRyxFQUFFO1lBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFBO1FBRTdGLElBQUksVUFBVSxLQUFLLFVBQVUsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFBO1lBQ3RDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUE7WUFDdEMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsVUFBVSxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQTtZQUNyQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxHQUFHLElBQUksQ0FBQTtZQUM3QixLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEtBQUssRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFBO1lBQ3JDLEtBQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUE7WUFDckMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQTtZQUNwQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxHQUFHLElBQUksQ0FBQTtRQUM5QixDQUFDO1FBRUQsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sU0FBUyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUE7WUFFM0IsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3JJLENBQUM7UUFFRCxLQUFLLElBQUksS0FBSyxHQUFHLEVBQUUsRUFBRSxLQUFLLEdBQUcsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDekMsTUFBTSxFQUFFLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO1lBQzdHLE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQTtZQUU1RyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDbkUsQ0FBQztRQUVELElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNmLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNmLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNmLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNmLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNmLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNmLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNmLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUVmLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN4QyxNQUFNLEVBQUUsR0FBRyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUN0RSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtZQUMvQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO1lBQzdELE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1lBQ3RFLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1lBQ3ZDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUE7WUFFNUIsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNMLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDTCxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ0wsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUE7WUFDbkIsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNMLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDTCxDQUFDLEdBQUcsQ0FBQyxDQUFBO1lBQ0wsQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7UUFDekIsQ0FBQztRQUVELElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQzNCLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQzNCLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQzNCLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQzNCLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQzNCLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQzNCLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO1FBQzNCLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzdCLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUMxRSxDQUFDO0FBRUQsTUFBTSxtQkFBbUIsR0FBRztJQUMxQixVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVO0lBQzlDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7Q0FDL0MsQ0FBQTtBQUVELE1BQU0sUUFBUSxHQUFHO0lBQ2YsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtJQUM5QyxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVO0lBQzlDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7SUFDOUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtJQUM5QyxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVO0lBQzlDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7SUFDOUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtJQUM5QyxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVO0lBQzlDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7SUFDOUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtJQUM5QyxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVO0lBQzlDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7SUFDOUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtJQUM5QyxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVO0lBQzlDLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVU7SUFDOUMsVUFBVSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVTtDQUMvQyxDQUFBO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSTtJQUM5QixPQUFPLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUE7QUFDbEQsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLEtBQUssQ0FBQyxHQUFHLE1BQU07SUFDdEIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQzlELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqXG4gKiBDb21wdXRlcyBhIFNIQS0yNTYgaGV4IGRpZ2VzdCBmb3IgYXJiaXRyYXJ5IGJ5dGVzIHdpdGhvdXQgTm9kZS1vbmx5IGltcG9ydHMuXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGJ5dGVzIC0gQnl0ZXMgdG8gZGlnZXN0LlxuICogQHJldHVybnMge3N0cmluZ30gSGV4IGRpZ2VzdC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gc2hhMjU2Qnl0ZXNIZXgoYnl0ZXMpIHtcbiAgY29uc3QgYml0TGVuZ3RoID0gYnl0ZXMubGVuZ3RoICogOFxuICBjb25zdCBibG9ja0NvdW50ID0gTWF0aC5jZWlsKChieXRlcy5sZW5ndGggKyA5KSAvIDY0KVxuICBjb25zdCBibG9jayA9IG5ldyBVaW50OEFycmF5KDY0KVxuICBjb25zdCBoYXNoID0gU0hBMjU2X0lOSVRJQUxfSEFTSC5zbGljZSgpXG4gIC8qKiBAdHlwZSB7bnVtYmVyW119ICovXG4gIGNvbnN0IHdvcmRzID0gbmV3IEFycmF5KDY0KVxuXG4gIGNvbnN0IGhpZ2hMZW5ndGggPSBNYXRoLmZsb29yKGJpdExlbmd0aCAvIDB4MTAwMDAwMDAwKVxuICBjb25zdCBsb3dMZW5ndGggPSBiaXRMZW5ndGggPj4+IDBcblxuICBmb3IgKGxldCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IGJsb2NrQ291bnQ7IGJsb2NrSW5kZXggKz0gMSkge1xuICAgIGNvbnN0IG9mZnNldCA9IGJsb2NrSW5kZXggKiA2NFxuICAgIGNvbnN0IGNodW5rTGVuZ3RoID0gTWF0aC5taW4oNjQsIE1hdGgubWF4KDAsIGJ5dGVzLmxlbmd0aCAtIG9mZnNldCkpXG5cbiAgICBibG9jay5maWxsKDApXG4gICAgaWYgKGNodW5rTGVuZ3RoID4gMCkgYmxvY2suc2V0KGJ5dGVzLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgY2h1bmtMZW5ndGgpKVxuICAgIGlmIChieXRlcy5sZW5ndGggPj0gb2Zmc2V0ICYmIGJ5dGVzLmxlbmd0aCA8IG9mZnNldCArIDY0KSBibG9ja1tieXRlcy5sZW5ndGggLSBvZmZzZXRdID0gMHg4MFxuXG4gICAgaWYgKGJsb2NrSW5kZXggPT09IGJsb2NrQ291bnQgLSAxKSB7XG4gICAgICBibG9ja1s1Nl0gPSAoaGlnaExlbmd0aCA+Pj4gMjQpICYgMHhmZlxuICAgICAgYmxvY2tbNTddID0gKGhpZ2hMZW5ndGggPj4+IDE2KSAmIDB4ZmZcbiAgICAgIGJsb2NrWzU4XSA9IChoaWdoTGVuZ3RoID4+PiA4KSAmIDB4ZmZcbiAgICAgIGJsb2NrWzU5XSA9IGhpZ2hMZW5ndGggJiAweGZmXG4gICAgICBibG9ja1s2MF0gPSAobG93TGVuZ3RoID4+PiAyNCkgJiAweGZmXG4gICAgICBibG9ja1s2MV0gPSAobG93TGVuZ3RoID4+PiAxNikgJiAweGZmXG4gICAgICBibG9ja1s2Ml0gPSAobG93TGVuZ3RoID4+PiA4KSAmIDB4ZmZcbiAgICAgIGJsb2NrWzYzXSA9IGxvd0xlbmd0aCAmIDB4ZmZcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgMTY7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IGJ5dGVJbmRleCA9IGluZGV4ICogNFxuXG4gICAgICB3b3Jkc1tpbmRleF0gPSAoKGJsb2NrW2J5dGVJbmRleF0gPDwgMjQpIHwgKGJsb2NrW2J5dGVJbmRleCArIDFdIDw8IDE2KSB8IChibG9ja1tieXRlSW5kZXggKyAyXSA8PCA4KSB8IGJsb2NrW2J5dGVJbmRleCArIDNdKSA+Pj4gMFxuICAgIH1cblxuICAgIGZvciAobGV0IGluZGV4ID0gMTY7IGluZGV4IDwgNjQ7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IHMwID0gcm90YXRlUmlnaHQod29yZHNbaW5kZXggLSAxNV0sIDcpIF4gcm90YXRlUmlnaHQod29yZHNbaW5kZXggLSAxNV0sIDE4KSBeICh3b3Jkc1tpbmRleCAtIDE1XSA+Pj4gMylcbiAgICAgIGNvbnN0IHMxID0gcm90YXRlUmlnaHQod29yZHNbaW5kZXggLSAyXSwgMTcpIF4gcm90YXRlUmlnaHQod29yZHNbaW5kZXggLSAyXSwgMTkpIF4gKHdvcmRzW2luZGV4IC0gMl0gPj4+IDEwKVxuXG4gICAgICB3b3Jkc1tpbmRleF0gPSBhZGQzMih3b3Jkc1tpbmRleCAtIDE2XSwgczAsIHdvcmRzW2luZGV4IC0gN10sIHMxKVxuICAgIH1cblxuICAgIGxldCBhID0gaGFzaFswXVxuICAgIGxldCBiID0gaGFzaFsxXVxuICAgIGxldCBjID0gaGFzaFsyXVxuICAgIGxldCBkID0gaGFzaFszXVxuICAgIGxldCBlID0gaGFzaFs0XVxuICAgIGxldCBmID0gaGFzaFs1XVxuICAgIGxldCBnID0gaGFzaFs2XVxuICAgIGxldCBoID0gaGFzaFs3XVxuXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IDY0OyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBzMSA9IHJvdGF0ZVJpZ2h0KGUsIDYpIF4gcm90YXRlUmlnaHQoZSwgMTEpIF4gcm90YXRlUmlnaHQoZSwgMjUpXG4gICAgICBjb25zdCBjaCA9IChlICYgZikgXiAoKH5lKSAmIGcpXG4gICAgICBjb25zdCB0ZW1wMSA9IGFkZDMyKGgsIHMxLCBjaCwgU0hBMjU2X0tbaW5kZXhdLCB3b3Jkc1tpbmRleF0pXG4gICAgICBjb25zdCBzMCA9IHJvdGF0ZVJpZ2h0KGEsIDIpIF4gcm90YXRlUmlnaHQoYSwgMTMpIF4gcm90YXRlUmlnaHQoYSwgMjIpXG4gICAgICBjb25zdCBtYWogPSAoYSAmIGIpIF4gKGEgJiBjKSBeIChiICYgYylcbiAgICAgIGNvbnN0IHRlbXAyID0gYWRkMzIoczAsIG1hailcblxuICAgICAgaCA9IGdcbiAgICAgIGcgPSBmXG4gICAgICBmID0gZVxuICAgICAgZSA9IGFkZDMyKGQsIHRlbXAxKVxuICAgICAgZCA9IGNcbiAgICAgIGMgPSBiXG4gICAgICBiID0gYVxuICAgICAgYSA9IGFkZDMyKHRlbXAxLCB0ZW1wMilcbiAgICB9XG5cbiAgICBoYXNoWzBdID0gYWRkMzIoaGFzaFswXSwgYSlcbiAgICBoYXNoWzFdID0gYWRkMzIoaGFzaFsxXSwgYilcbiAgICBoYXNoWzJdID0gYWRkMzIoaGFzaFsyXSwgYylcbiAgICBoYXNoWzNdID0gYWRkMzIoaGFzaFszXSwgZClcbiAgICBoYXNoWzRdID0gYWRkMzIoaGFzaFs0XSwgZSlcbiAgICBoYXNoWzVdID0gYWRkMzIoaGFzaFs1XSwgZilcbiAgICBoYXNoWzZdID0gYWRkMzIoaGFzaFs2XSwgZylcbiAgICBoYXNoWzddID0gYWRkMzIoaGFzaFs3XSwgaClcbiAgfVxuXG4gIHJldHVybiBoYXNoLm1hcCgodmFsdWUpID0+IHZhbHVlLnRvU3RyaW5nKDE2KS5wYWRTdGFydCg4LCBcIjBcIikpLmpvaW4oXCJcIilcbn1cblxuY29uc3QgU0hBMjU2X0lOSVRJQUxfSEFTSCA9IFtcbiAgMHg2YTA5ZTY2NywgMHhiYjY3YWU4NSwgMHgzYzZlZjM3MiwgMHhhNTRmZjUzYSxcbiAgMHg1MTBlNTI3ZiwgMHg5YjA1Njg4YywgMHgxZjgzZDlhYiwgMHg1YmUwY2QxOVxuXVxuXG5jb25zdCBTSEEyNTZfSyA9IFtcbiAgMHg0MjhhMmY5OCwgMHg3MTM3NDQ5MSwgMHhiNWMwZmJjZiwgMHhlOWI1ZGJhNSxcbiAgMHgzOTU2YzI1YiwgMHg1OWYxMTFmMSwgMHg5MjNmODJhNCwgMHhhYjFjNWVkNSxcbiAgMHhkODA3YWE5OCwgMHgxMjgzNWIwMSwgMHgyNDMxODViZSwgMHg1NTBjN2RjMyxcbiAgMHg3MmJlNWQ3NCwgMHg4MGRlYjFmZSwgMHg5YmRjMDZhNywgMHhjMTliZjE3NCxcbiAgMHhlNDliNjljMSwgMHhlZmJlNDc4NiwgMHgwZmMxOWRjNiwgMHgyNDBjYTFjYyxcbiAgMHgyZGU5MmM2ZiwgMHg0YTc0ODRhYSwgMHg1Y2IwYTlkYywgMHg3NmY5ODhkYSxcbiAgMHg5ODNlNTE1MiwgMHhhODMxYzY2ZCwgMHhiMDAzMjdjOCwgMHhiZjU5N2ZjNyxcbiAgMHhjNmUwMGJmMywgMHhkNWE3OTE0NywgMHgwNmNhNjM1MSwgMHgxNDI5Mjk2NyxcbiAgMHgyN2I3MGE4NSwgMHgyZTFiMjEzOCwgMHg0ZDJjNmRmYywgMHg1MzM4MGQxMyxcbiAgMHg2NTBhNzM1NCwgMHg3NjZhMGFiYiwgMHg4MWMyYzkyZSwgMHg5MjcyMmM4NSxcbiAgMHhhMmJmZThhMSwgMHhhODFhNjY0YiwgMHhjMjRiOGI3MCwgMHhjNzZjNTFhMyxcbiAgMHhkMTkyZTgxOSwgMHhkNjk5MDYyNCwgMHhmNDBlMzU4NSwgMHgxMDZhYTA3MCxcbiAgMHgxOWE0YzExNiwgMHgxZTM3NmMwOCwgMHgyNzQ4Nzc0YywgMHgzNGIwYmNiNSxcbiAgMHgzOTFjMGNiMywgMHg0ZWQ4YWE0YSwgMHg1YjljY2E0ZiwgMHg2ODJlNmZmMyxcbiAgMHg3NDhmODJlZSwgMHg3OGE1NjM2ZiwgMHg4NGM4NzgxNCwgMHg4Y2M3MDIwOCxcbiAgMHg5MGJlZmZmYSwgMHhhNDUwNmNlYiwgMHhiZWY5YTNmNywgMHhjNjcxNzhmMlxuXVxuXG4vKipcbiAqIFJvdGF0ZXMgYW4gdW5zaWduZWQgdmFsdWUgcmlnaHQuXG4gKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgVW5zaWduZWQgdmFsdWUuXG4gKiBAcGFyYW0ge251bWJlcn0gYml0cyBSb3RhdGlvbiBjb3VudC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJvdGF0ZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIHJvdGF0ZVJpZ2h0KHZhbHVlLCBiaXRzKSB7XG4gIHJldHVybiAodmFsdWUgPj4+IGJpdHMpIHwgKHZhbHVlIDw8ICgzMiAtIGJpdHMpKVxufVxuXG4vKipcbiAqIEFkZHMgbnVtYmVycyB3aXRoIHVuc2lnbmVkIDMyLWJpdCBvdmVyZmxvdy5cbiAqIEBwYXJhbSB7Li4ubnVtYmVyfSB2YWx1ZXMgVmFsdWVzIHRvIGFkZC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFVuc2lnbmVkIHN1bS5cbiAqL1xuZnVuY3Rpb24gYWRkMzIoLi4udmFsdWVzKSB7XG4gIHJldHVybiB2YWx1ZXMucmVkdWNlKChzdW0sIHZhbHVlKSA9PiAoc3VtICsgdmFsdWUpID4+PiAwLCAwKVxufVxuIl19
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Computes SHA-256 without importing Node-only crypto modules, keeping this
|
|
3
|
-
* module safe for Expo/browser bundles.
|
|
4
|
-
* pure-JavaScript SHA-256 derived from FIPS 180-4, using only 32-bit unsigned
|
|
5
|
-
* integer arithmetic.
|
|
3
|
+
* module safe for Expo/browser bundles.
|
|
6
4
|
* @param {string} message - UTF-8 message.
|
|
7
|
-
* @returns {string}
|
|
5
|
+
* @returns {string} Hex digest.
|
|
8
6
|
*/
|
|
9
7
|
export default function sha256Hex(message: string): string;
|
|
10
8
|
//# sourceMappingURL=sha256-hex.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sha256-hex.d.ts","sourceRoot":"","sources":["../../../src/utils/sha256-hex.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sha256-hex.d.ts","sourceRoot":"","sources":["../../../src/utils/sha256-hex.js"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,OAAO,EAH9B,MAG8B,GAF5B,MAAM,CAIlB"}
|