@efffrida/vitest-pool 0.0.16 → 0.0.18

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@efffrida/vitest-pool",
3
- "version": "0.0.16",
3
+ "version": "0.0.18",
4
4
  "description": "effect frida vitest-pool",
5
5
  "keywords": [
6
6
  "effect-ts",
@@ -35,35 +35,35 @@
35
35
  "provenance": true
36
36
  },
37
37
  "dependencies": {
38
- "ioredis": "5.10.1",
39
- "@efffrida/frida-tools": "0.0.30"
38
+ "ioredis": "5.11.0",
39
+ "@efffrida/frida-tools": "0.0.31"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@effect/platform-node": "4.0.0-beta.69",
43
43
  "@types/frida-gum": "19.1.0",
44
- "@types/node": "25.9.0",
45
- "@vitest/runner": "4.1.6",
46
- "@vitest/utils": "4.1.6",
44
+ "@types/node": "25.9.1",
45
+ "@vitest/runner": "4.1.7",
46
+ "@vitest/utils": "4.1.7",
47
47
  "birpc": "4.0.0",
48
48
  "effect": "4.0.0-beta.69",
49
49
  "flatted": "3.4.2",
50
- "frida": "17.9.10",
50
+ "frida": "17.9.11",
51
51
  "vite": "8.0.14",
52
- "vitest": "4.1.6",
53
- "@efffrida/polyfills": "0.0.9"
52
+ "vitest": "4.1.7",
53
+ "@efffrida/polyfills": "0.0.10"
54
54
  },
55
55
  "peerDependencies": {
56
56
  "@effect/platform-node": "4.0.0-beta.69",
57
57
  "effect": "4.0.0-beta.69",
58
- "vitest": "4.1.6"
58
+ "vitest": "4.1.7"
59
59
  },
60
60
  "optionalDependencies": {
61
- "@vitest/runner": "4.1.6",
62
- "@vitest/utils": "4.1.6",
61
+ "@vitest/runner": "4.1.7",
62
+ "@vitest/utils": "4.1.7",
63
63
  "birpc": "4.0.0",
64
64
  "flatted": "3.4.2",
65
65
  "vite": "8.0.14",
66
- "@efffrida/polyfills": "0.0.9"
66
+ "@efffrida/polyfills": "0.0.10"
67
67
  },
68
68
  "tags": [
69
69
  "frida.re",
@@ -72,7 +72,8 @@
72
72
  ],
73
73
  "scripts": {
74
74
  "codegen": "build-utils prepare-v4",
75
- "build": "tsc -b tsconfig.build.json && pnpm babel",
75
+ "build": "tsc -b tsconfig.build.json && pnpm copy-frida && pnpm babel",
76
+ "copy-frida": "node -e \"const {cpSync}=require('fs');cpSync('frida','dist/frida',{recursive:true,force:true})\"",
76
77
  "babel": "babel dist --plugins annotate-pure-calls --out-dir dist --source-maps",
77
78
  "check": "tsc -b tsconfig.json",
78
79
  "test": "vitest",
@@ -1,2 +0,0 @@
1
- import "@efffrida/polyfills";
2
- //# sourceMappingURL=agent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../frida/agent.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC"}
@@ -1,185 +0,0 @@
1
- import "@efffrida/polyfills";
2
- // QuickJS returns Error.stack as a boxed String object, not a primitive. This
3
- // causes @vitest/utils serializeValue to walk it as a char-indexed object
4
- // {"0":"A","1":"s",...}. Adding toJSON makes serializeValue call valueOf()
5
- // instead, returning the primitive string.
6
- if (!("toJSON" in String.prototype)) {
7
- String.prototype.toJSON = String.prototype.valueOf;
8
- }
9
- import { collectTests, startTests } from "@vitest/runner";
10
- import { serializeError } from "@vitest/utils/error";
11
- import { createStackString, parseStacktrace } from "@vitest/utils/source-map";
12
- import { createBirpc } from "birpc";
13
- import { stringify as flattedStringify } from "flatted";
14
- import { EvaluatedModules } from "vitest";
15
- // There should only ever be one test running at a time in a worker and these
16
- // need to be shared across multiple rpc calls anyways so they will live up here
17
- // in the module scope.
18
- let runPromise;
19
- let setupContext;
20
- // Collections of listeners
21
- const cleanupListeners = /*#__PURE__*/new Set();
22
- const cancelListeners = /*#__PURE__*/new Set();
23
- const messageListeners = /*#__PURE__*/new Set();
24
- // Bidirectional rpc
25
- const birpc = /*#__PURE__*/createBirpc({
26
- async onCancel(reason) {
27
- await Promise.allSettled([...cancelListeners.values()].map(listener => listener(reason)));
28
- }
29
- }, {
30
- // How to send and receive messages.
31
- on: rpcListener => messageListeners.add(rpcListener),
32
- off: rpcListener => messageListeners.delete(rpcListener),
33
- post: message => typeof message === "string" ? send(message) : send(flattedStringify(message)),
34
- // Names of remote functions that do not need response.
35
- // These are fire-and-forget messages to the vitest pool coordinator.
36
- eventNames: ["onUserConsoleLog", "onCollected", "onCancel"],
37
- // Maximum timeout for waiting for response, in milliseconds.
38
- timeout: -1
39
- });
40
- /** @see https://github.com/vitest-dev/vitest/blob/8508296e9adcd2d9859e8073ac76c0bcb7d78f50/packages/vitest/src/runtime/utils.ts#L23-L32 */
41
- function provideWorkerState(context, state) {
42
- const NAME_WORKER_STATE = "__vitest_worker__";
43
- Object.defineProperty(context, NAME_WORKER_STATE, {
44
- value: state,
45
- configurable: true,
46
- writable: true,
47
- enumerable: false
48
- });
49
- return state;
50
- }
51
- /** @see https://github.com/vitest-dev/vitest/blob/9ca74cfb2060d8bc1c7a319ba3cba1578517adb0/packages/vitest/src/runtime/runners/index.ts#L65-L139 */
52
- function patchTestRunner(testRunner) {
53
- const originalOnTaskUpdate = testRunner.onTaskUpdate;
54
- testRunner.onTaskUpdate = async (task, events) => {
55
- await birpc.onTaskUpdate(task, events);
56
- await originalOnTaskUpdate?.call(testRunner, task, events);
57
- };
58
- const originalOnCollectStart = testRunner.onCollectStart;
59
- testRunner.onCollectStart = async file => {
60
- await birpc.onQueued(file);
61
- await originalOnCollectStart?.call(testRunner, file);
62
- };
63
- const originalOnCollected = testRunner.onCollected;
64
- testRunner.onCollected = async files => {
65
- await birpc.onCollected(files);
66
- await originalOnCollected?.call(testRunner, files);
67
- };
68
- return testRunner;
69
- }
70
- /** @see https://github.com/vitest-dev/vitest/blob/4f58c77147796d48bf70579222a577df977300f8/packages/vitest/src/runtime/workers/init.ts#L20-L235 */
71
- rpc.exports["onMessage"] = async message => {
72
- // Predicate to check if a message is a worker request
73
- const isWorkerRequest = u => typeof u === "object" && u !== null && "__vitest_worker_request__" in u && u.__vitest_worker_request__ === true;
74
- // Handle non-worker messages
75
- if (!isWorkerRequest(message)) {
76
- return messageListeners.forEach(listener => {
77
- listener(message);
78
- });
79
- }
80
- // Handle worker messages
81
- switch (message.type) {
82
- case "start":
83
- {
84
- process.env.VITEST_POOL_ID = String(message.poolId);
85
- process.env.VITEST_WORKER_ID = String(message.workerId);
86
- const {
87
- config,
88
- environment,
89
- pool
90
- } = message.context;
91
- setupContext = {
92
- environment,
93
- config,
94
- pool,
95
- rpc: birpc,
96
- projectName: config.name ?? ""
97
- };
98
- return send({
99
- type: "started",
100
- __vitest_worker_response__: true
101
- });
102
- }
103
- case "stop":
104
- {
105
- if (runPromise !== undefined) await runPromise;
106
- await Promise.allSettled(setupContext.rpc.$rejectPendingCalls(({
107
- method,
108
- reject
109
- }) => {
110
- reject(`Closing rpc while ${method} was pending`);
111
- }));
112
- await Promise.allSettled([...cleanupListeners.values()].map(listener => listener()));
113
- cancelListeners.clear();
114
- cleanupListeners.clear();
115
- return send({
116
- type: "stopped",
117
- __vitest_worker_response__: true
118
- });
119
- }
120
- case "run":
121
- case "collect":
122
- {
123
- if (runPromise !== undefined) {
124
- return send({
125
- type: "testfileFinished",
126
- __vitest_worker_response__: true,
127
- error: serializeError("Worker is already running tests")
128
- });
129
- }
130
- /** @see https://github.com/vitest-dev/vitest/blob/4f58c77147796d48bf70579222a577df977300f8/packages/vitest/src/runtime/worker.ts#L28-L49 */
131
- provideWorkerState(globalThis, {
132
- rpc: birpc,
133
- environment: null,
134
- config: setupContext.config,
135
- durations: {
136
- environment: 0,
137
- prepare: 0
138
- },
139
- ctx: {
140
- ...setupContext,
141
- ...message.context
142
- },
143
- providedContext: message.context.providedContext,
144
- metaEnv: process.env,
145
- resolvingModules: new Set(),
146
- // TODO: share this between runs? https://github.com/vitest-dev/vitest/blob/8508296e9adcd2d9859e8073ac76c0bcb7d78f50/packages/vitest/src/runtime/worker.ts#L9
147
- moduleExecutionInfo: new Map(),
148
- // TODO: share this between runs? https://github.com/vitest-dev/vitest/blob/4f58c77147796d48bf70579222a577df977300f8/packages/vitest/src/runtime/workers/base.ts#L18-L19
149
- evaluatedModules: new EvaluatedModules(),
150
- // TODO: share this between runs? https://github.com/vitest-dev/vitest/blob/4f58c77147796d48bf70579222a577df977300f8/packages/vitest/src/runtime/workers/base.ts#L18-L19
151
- onCancel: listener => cancelListeners.add(listener),
152
- onCleanup: listener => cleanupListeners.add(listener),
153
- onFilterStackTrace: stack => createStackString(parseStacktrace(stack))
154
- });
155
- // Create a minimal runner without snapshot support
156
- const entrypoint = message.type === "run" ? startTests : collectTests;
157
- const testRunner = {
158
- config: setupContext.config,
159
- importFile: async _file => {
160
- // @efffrida/vitest-pool/agent/file-map
161
- return Promise.reject("importFile is not supported in the frida pool agent");
162
- }
163
- };
164
- try {
165
- for (const file of message.context.files) {
166
- runPromise = entrypoint([file], patchTestRunner(testRunner));
167
- await runPromise;
168
- }
169
- return send({
170
- type: "testfileFinished",
171
- __vitest_worker_response__: true
172
- });
173
- } catch (error) {
174
- return send({
175
- type: "testfileFinished",
176
- __vitest_worker_response__: true,
177
- error: serializeError(error)
178
- });
179
- } finally {
180
- runPromise = undefined;
181
- }
182
- }
183
- }
184
- };
185
- //# sourceMappingURL=agent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent.js","names":["String","prototype","toJSON","valueOf","collectTests","startTests","serializeError","createStackString","parseStacktrace","createBirpc","stringify","flattedStringify","EvaluatedModules","runPromise","setupContext","cleanupListeners","Set","cancelListeners","messageListeners","birpc","onCancel","reason","Promise","allSettled","values","map","listener","on","rpcListener","add","off","delete","post","message","send","eventNames","timeout","provideWorkerState","context","state","NAME_WORKER_STATE","Object","defineProperty","value","configurable","writable","enumerable","patchTestRunner","testRunner","originalOnTaskUpdate","onTaskUpdate","task","events","call","originalOnCollectStart","onCollectStart","file","onQueued","originalOnCollected","onCollected","files","rpc","exports","isWorkerRequest","u","__vitest_worker_request__","forEach","type","process","env","VITEST_POOL_ID","poolId","VITEST_WORKER_ID","workerId","config","environment","pool","projectName","name","__vitest_worker_response__","undefined","$rejectPendingCalls","method","reject","clear","error","globalThis","durations","prepare","ctx","providedContext","metaEnv","resolvingModules","moduleExecutionInfo","Map","evaluatedModules","onCleanup","onFilterStackTrace","stack","entrypoint","importFile","_file"],"sources":["../../frida/agent.ts"],"sourcesContent":[null],"mappings":"AAAA,OAAO,qBAAqB;AAE5B;AACA;AACA;AACA;AACA,IAAI,EAAE,QAAQ,IAAIA,MAAM,CAACC,SAAS,CAAC,EAAE;EAChCD,MAAM,CAACC,SAAiB,CAACC,MAAM,GAAGF,MAAM,CAACC,SAAS,CAACE,OAAO;AAC/D;AAMA,SAASC,YAAY,EAAEC,UAAU,QAAQ,gBAAgB;AACzD,SAASC,cAAc,QAAQ,qBAAqB;AACpD,SAASC,iBAAiB,EAAEC,eAAe,QAAQ,0BAA0B;AAC7E,SAASC,WAAW,QAAQ,OAAO;AACnC,SAASC,SAAS,IAAIC,gBAAgB,QAAQ,SAAS;AACvD,SAASC,gBAAgB,QAAQ,QAAQ;AAEzC;AACA;AACA;AACA,IAAIC,UAAwC;AAC5C,IAAIC,YAAyF;AAE7F;AACA,MAAMC,gBAAgB,gBAAG,IAAIC,GAAG,EAAiB;AACjD,MAAMC,eAAe,gBAAG,IAAID,GAAG,EAAqC;AACpE,MAAME,gBAAgB,gBAAG,IAAIF,GAAG,EAA8C;AAE9E;AACA,MAAMG,KAAK,gBAAGV,WAAW,CACrB;EACI,MAAMW,QAAQA,CAACC,MAAoB;IAC/B,MAAMC,OAAO,CAACC,UAAU,CAAC,CAAC,GAAGN,eAAe,CAACO,MAAM,EAAE,CAAC,CAACC,GAAG,CAAEC,QAAQ,IAAKA,QAAQ,CAACL,MAAM,CAAC,CAAC,CAAC;EAC/F;CACH,EACD;EACI;EACAM,EAAE,EAAGC,WAAW,IAAKV,gBAAgB,CAACW,GAAG,CAACD,WAAW,CAAC;EACtDE,GAAG,EAAGF,WAAW,IAAKV,gBAAgB,CAACa,MAAM,CAACH,WAAW,CAAC;EAC1DI,IAAI,EAAGC,OAAO,IAAM,OAAOA,OAAO,KAAK,QAAQ,GAAGC,IAAI,CAACD,OAAO,CAAC,GAAGC,IAAI,CAACvB,gBAAgB,CAACsB,OAAO,CAAC,CAAE;EAElG;EACA;EACAE,UAAU,EAAE,CAAC,kBAAkB,EAAE,aAAa,EAAE,UAAU,CAAC;EAE3D;EACAC,OAAO,EAAE,CAAC;CACb,CACJ;AAED;AACA,SAASC,kBAAkBA,CAACC,OAAgB,EAAEC,KAAwB;EAClE,MAAMC,iBAAiB,GAAG,mBAAmB;EAC7CC,MAAM,CAACC,cAAc,CAACJ,OAAO,EAAEE,iBAAiB,EAAE;IAC9CG,KAAK,EAAEJ,KAAK;IACZK,YAAY,EAAE,IAAI;IAClBC,QAAQ,EAAE,IAAI;IACdC,UAAU,EAAE;GACf,CAAC;EACF,OAAOP,KAAK;AAChB;AAEA;AACA,SAASQ,eAAeA,CAACC,UAAwB;EAC7C,MAAMC,oBAAoB,GAAGD,UAAU,CAACE,YAAY;EACpDF,UAAU,CAACE,YAAY,GAAG,OAAOC,IAAI,EAAEC,MAAM,KAAI;IAC7C,MAAMjC,KAAK,CAAC+B,YAAY,CAACC,IAAI,EAAEC,MAAM,CAAC;IACtC,MAAMH,oBAAoB,EAAEI,IAAI,CAACL,UAAU,EAAEG,IAAI,EAAEC,MAAM,CAAC;EAC9D,CAAC;EAED,MAAME,sBAAsB,GAAGN,UAAU,CAACO,cAAc;EACxDP,UAAU,CAACO,cAAc,GAAG,MAAOC,IAAI,IAAI;IACvC,MAAMrC,KAAK,CAACsC,QAAQ,CAACD,IAAI,CAAC;IAC1B,MAAMF,sBAAsB,EAAED,IAAI,CAACL,UAAU,EAAEQ,IAAI,CAAC;EACxD,CAAC;EAED,MAAME,mBAAmB,GAAGV,UAAU,CAACW,WAAW;EAClDX,UAAU,CAACW,WAAW,GAAG,MAAOC,KAAK,IAAI;IACrC,MAAMzC,KAAK,CAACwC,WAAW,CAACC,KAAK,CAAC;IAC9B,MAAMF,mBAAmB,EAAEL,IAAI,CAACL,UAAU,EAAEY,KAAK,CAAC;EACtD,CAAC;EAED,OAAOZ,UAAU;AACrB;AAEA;AACAa,GAAG,CAACC,OAAO,CAAC,WAAW,CAAC,GAAG,MAAO7B,OAAgB,IAAoC;EAClF;EACA,MAAM8B,eAAe,GAAIC,CAAU,IAC/B,OAAOA,CAAC,KAAK,QAAQ,IAAIA,CAAC,KAAK,IAAI,IAAI,2BAA2B,IAAIA,CAAC,IAAIA,CAAC,CAACC,yBAAyB,KAAK,IAAI;EAEnH;EACA,IAAI,CAACF,eAAe,CAAC9B,OAAO,CAAC,EAAE;IAC3B,OAAOf,gBAAgB,CAACgD,OAAO,CAAExC,QAAQ,IAAI;MACzCA,QAAQ,CAACO,OAAO,CAAC;IACrB,CAAC,CAAC;EACN;EAEA;EACA,QAAQA,OAAO,CAACkC,IAAI;IAChB,KAAK,OAAO;MAAE;QACVC,OAAO,CAACC,GAAG,CAACC,cAAc,GAAGtE,MAAM,CAACiC,OAAO,CAACsC,MAAM,CAAC;QACnDH,OAAO,CAACC,GAAG,CAACG,gBAAgB,GAAGxE,MAAM,CAACiC,OAAO,CAACwC,QAAQ,CAAC;QACvD,MAAM;UAAEC,MAAM;UAAEC,WAAW;UAAEC;QAAI,CAAE,GAAG3C,OAAO,CAACK,OAAO;QACrDxB,YAAY,GAAG;UAAE6D,WAAW;UAAED,MAAM;UAAEE,IAAI;UAAEf,GAAG,EAAE1C,KAAK;UAAE0D,WAAW,EAAEH,MAAM,CAACI,IAAI,IAAI;QAAE,CAAE;QACxF,OAAO5C,IAAI,CAAC;UAAEiC,IAAI,EAAE,SAAS;UAAEY,0BAA0B,EAAE;QAAI,CAAE,CAAC;MACtE;IAEA,KAAK,MAAM;MAAE;QACT,IAAIlE,UAAU,KAAKmE,SAAS,EAAE,MAAMnE,UAAU;QAC9C,MAAMS,OAAO,CAACC,UAAU,CACpBT,YAAY,CAAC+C,GAAG,CAACoB,mBAAmB,CAAC,CAAC;UAAEC,MAAM;UAAEC;QAAM,CAAE,KAAI;UACxDA,MAAM,CAAC,qBAAqBD,MAAM,cAAc,CAAC;QACrD,CAAC,CAAC,CACL;QAED,MAAM5D,OAAO,CAACC,UAAU,CAAC,CAAC,GAAGR,gBAAgB,CAACS,MAAM,EAAE,CAAC,CAACC,GAAG,CAAEC,QAAQ,IAAKA,QAAQ,EAAE,CAAC,CAAC;QACtFT,eAAe,CAACmE,KAAK,EAAE;QACvBrE,gBAAgB,CAACqE,KAAK,EAAE;QAExB,OAAOlD,IAAI,CAAC;UACRiC,IAAI,EAAE,SAAS;UACfY,0BAA0B,EAAE;SAC/B,CAAC;MACN;IAEA,KAAK,KAAK;IACV,KAAK,SAAS;MAAE;QACZ,IAAIlE,UAAU,KAAKmE,SAAS,EAAE;UAC1B,OAAO9C,IAAI,CAAC;YACRiC,IAAI,EAAE,kBAAkB;YACxBY,0BAA0B,EAAE,IAAI;YAChCM,KAAK,EAAE/E,cAAc,CAAC,iCAAiC;WAC1D,CAAC;QACN;QAEA;QACA+B,kBAAkB,CAACiD,UAAU,EAAE;UAC3BzB,GAAG,EAAE1C,KAAK;UACVwD,WAAW,EAAE,IAAK;UAClBD,MAAM,EAAE5D,YAAY,CAAC4D,MAAM;UAC3Ba,SAAS,EAAE;YAAEZ,WAAW,EAAE,CAAC;YAAEa,OAAO,EAAE;UAAC,CAAE;UACzCC,GAAG,EAAE;YAAE,GAAG3E,YAAY;YAAE,GAAGmB,OAAO,CAACK;UAAO,CAAE;UAC5CoD,eAAe,EAAEzD,OAAO,CAACK,OAAO,CAACoD,eAAe;UAChDC,OAAO,EAAEvB,OAAO,CAACC,GAAmC;UAEpDuB,gBAAgB,EAAE,IAAI5E,GAAG,EAAE;UAAE;UAC7B6E,mBAAmB,EAAE,IAAIC,GAAG,EAAE;UAAE;UAChCC,gBAAgB,EAAE,IAAInF,gBAAgB,EAAE;UAAE;UAE1CQ,QAAQ,EAAGM,QAAQ,IAAKT,eAAe,CAACY,GAAG,CAACH,QAAQ,CAAC;UACrDsE,SAAS,EAAGtE,QAAQ,IAAKX,gBAAgB,CAACc,GAAG,CAACH,QAAQ,CAAC;UACvDuE,kBAAkB,EAAGC,KAAK,IAAK3F,iBAAiB,CAACC,eAAe,CAAC0F,KAAK,CAAC;SAC9C,CAAC;QAE9B;QACA,MAAMC,UAAU,GAAGlE,OAAO,CAACkC,IAAI,KAAK,KAAK,GAAG9D,UAAU,GAAGD,YAAY;QACrE,MAAM4C,UAAU,GAAiB;UAC7B0B,MAAM,EAAE5D,YAAY,CAAC4D,MAAgC;UACrD0B,UAAU,EAAE,MAAOC,KAAa,IAAmB;YAC/C;YAEA,OAAO/E,OAAO,CAAC6D,MAAM,CAAC,qDAAqD,CAAC;UAChF;SACH;QAED,IAAI;UACA,KAAK,MAAM3B,IAAI,IAAIvB,OAAO,CAACK,OAAO,CAACsB,KAAK,EAAE;YACtC/C,UAAU,GAAGsF,UAAU,CAAC,CAAC3C,IAAI,CAAC,EAAET,eAAe,CAACC,UAAU,CAAC,CAAC;YAC5D,MAAMnC,UAAU;UACpB;UAEA,OAAOqB,IAAI,CAAC;YACRiC,IAAI,EAAE,kBAAkB;YACxBY,0BAA0B,EAAE;WAC/B,CAAC;QACN,CAAC,CAAC,OAAOM,KAAc,EAAE;UACrB,OAAOnD,IAAI,CAAC;YACRiC,IAAI,EAAE,kBAAkB;YACxBY,0BAA0B,EAAE,IAAI;YAChCM,KAAK,EAAE/E,cAAc,CAAC+E,KAAK;WAC9B,CAAC;QACN,CAAC,SAAS;UACNxE,UAAU,GAAGmE,SAAS;QAC1B;MACJ;EACJ;AACJ,CAAC","ignoreList":[]}