@tamagui/static-worker 2.0.0-rc.30 → 2.0.0-rc.32
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 +4 -4
- package/dist/cjs/index.js +0 -256
- package/dist/cjs/index.js.map +0 -6
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/static-worker",
|
|
3
|
-
"version": "2.0.0-rc.
|
|
3
|
+
"version": "2.0.0-rc.32",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"source": "src/index.ts",
|
|
6
6
|
"files": [
|
|
@@ -35,12 +35,12 @@
|
|
|
35
35
|
"test:watch": "vitest"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@tamagui/static": "2.0.0-rc.
|
|
39
|
-
"@tamagui/types": "2.0.0-rc.
|
|
38
|
+
"@tamagui/static": "2.0.0-rc.32",
|
|
39
|
+
"@tamagui/types": "2.0.0-rc.32",
|
|
40
40
|
"piscina": "^4.7.0"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"@tamagui/build": "2.0.0-rc.
|
|
43
|
+
"@tamagui/build": "2.0.0-rc.32",
|
|
44
44
|
"vitest": "4.0.4"
|
|
45
45
|
}
|
|
46
46
|
}
|
package/dist/cjs/index.js
DELETED
|
@@ -1,256 +0,0 @@
|
|
|
1
|
-
var __create = Object.create;
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __getProtoOf = Object.getPrototypeOf,
|
|
6
|
-
__hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all) __defProp(target, name, {
|
|
9
|
-
get: all[name],
|
|
10
|
-
enumerable: !0
|
|
11
|
-
});
|
|
12
|
-
},
|
|
13
|
-
__copyProps = (to, from, except, desc) => {
|
|
14
|
-
if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
|
|
15
|
-
get: () => from[key],
|
|
16
|
-
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
17
|
-
});
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
26
|
-
value: mod,
|
|
27
|
-
enumerable: !0
|
|
28
|
-
}) : target, mod)),
|
|
29
|
-
__toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
30
|
-
value: !0
|
|
31
|
-
}), mod);
|
|
32
|
-
var index_exports = {};
|
|
33
|
-
__export(index_exports, {
|
|
34
|
-
clearWorkerCache: () => clearWorkerCache,
|
|
35
|
-
destroyPool: () => destroyPool,
|
|
36
|
-
extractToClassNames: () => extractToClassNames,
|
|
37
|
-
extractToNative: () => extractToNative,
|
|
38
|
-
getPoolStats: () => getPoolStats,
|
|
39
|
-
getPragmaOptions: () => getPragmaOptions,
|
|
40
|
-
loadTamagui: () => loadTamagui,
|
|
41
|
-
loadTamaguiBuildConfig: () => loadTamaguiBuildConfig,
|
|
42
|
-
watchTamaguiConfig: () => watchTamaguiConfig
|
|
43
|
-
});
|
|
44
|
-
module.exports = __toCommonJS(index_exports);
|
|
45
|
-
var import_node_url = require("node:url"),
|
|
46
|
-
import_piscina = __toESM(require("piscina"), 1);
|
|
47
|
-
const import_meta = {},
|
|
48
|
-
getPragmaOptions = async props => {
|
|
49
|
-
const {
|
|
50
|
-
default: Static
|
|
51
|
-
} = await import("@tamagui/static");
|
|
52
|
-
return Static.getPragmaOptions(props);
|
|
53
|
-
},
|
|
54
|
-
getWorkerPath = () => typeof import_meta < "u" && import_meta.url ? (0, import_node_url.fileURLToPath)(import_meta.resolve("@tamagui/static/worker")).replace(/\.mjs$/, ".js") : require.resolve("@tamagui/static/worker").replace(/\.mjs$/, ".js"),
|
|
55
|
-
POOL_KEY = "__tamagui_piscina_pool__",
|
|
56
|
-
CLOSING_KEY = "__tamagui_piscina_closing__",
|
|
57
|
-
TASK_COUNT_KEY = "__tamagui_piscina_task_count__",
|
|
58
|
-
RECYCLING_KEY = "__tamagui_piscina_recycling__",
|
|
59
|
-
MAX_TASKS_BEFORE_RECYCLE = 1e3;
|
|
60
|
-
function getSharedPool() {
|
|
61
|
-
return globalThis[POOL_KEY] ?? null;
|
|
62
|
-
}
|
|
63
|
-
function setSharedPool(pool) {
|
|
64
|
-
globalThis[POOL_KEY] = pool;
|
|
65
|
-
}
|
|
66
|
-
function isClosing() {
|
|
67
|
-
return globalThis[CLOSING_KEY] === !0;
|
|
68
|
-
}
|
|
69
|
-
function setClosing(value) {
|
|
70
|
-
globalThis[CLOSING_KEY] = value;
|
|
71
|
-
}
|
|
72
|
-
function isRecycling() {
|
|
73
|
-
return globalThis[RECYCLING_KEY] === !0;
|
|
74
|
-
}
|
|
75
|
-
function setRecycling(value) {
|
|
76
|
-
globalThis[RECYCLING_KEY] = value;
|
|
77
|
-
}
|
|
78
|
-
function getTaskCount() {
|
|
79
|
-
return globalThis[TASK_COUNT_KEY] ?? 0;
|
|
80
|
-
}
|
|
81
|
-
function incrementTaskCount() {
|
|
82
|
-
const count = getTaskCount() + 1;
|
|
83
|
-
return globalThis[TASK_COUNT_KEY] = count, count;
|
|
84
|
-
}
|
|
85
|
-
function resetTaskCount() {
|
|
86
|
-
globalThis[TASK_COUNT_KEY] = 0;
|
|
87
|
-
}
|
|
88
|
-
function createPool() {
|
|
89
|
-
const pool = new import_piscina.default({
|
|
90
|
-
filename: getWorkerPath(),
|
|
91
|
-
// each worker loads and caches config independently
|
|
92
|
-
minThreads: 2,
|
|
93
|
-
maxThreads: 2,
|
|
94
|
-
// Never terminate due to idle - worker stays alive until close() or process exit
|
|
95
|
-
// This prevents "Terminating worker thread" errors from Piscina during idle
|
|
96
|
-
idleTimeout: Number.POSITIVE_INFINITY
|
|
97
|
-
// no resourceLimits - we rely on task-based recycling instead
|
|
98
|
-
// V8 resourceLimits cause "Terminating worker thread" messages when hit
|
|
99
|
-
});
|
|
100
|
-
return pool.on("error", err => {
|
|
101
|
-
isClosing() || isRecycling() || (err && typeof err == "object" && "message" in err ? String(err.message) : "").includes("Terminating worker thread") || console.error("[tamagui] Worker pool error:", err);
|
|
102
|
-
}), pool;
|
|
103
|
-
}
|
|
104
|
-
function getPool() {
|
|
105
|
-
let pool = getSharedPool();
|
|
106
|
-
return pool || (pool = createPool(), setSharedPool(pool)), pool;
|
|
107
|
-
}
|
|
108
|
-
async function loadTamagui(options) {
|
|
109
|
-
const pool = getPool(),
|
|
110
|
-
task = {
|
|
111
|
-
type: "extractToClassNames",
|
|
112
|
-
source: "// dummy",
|
|
113
|
-
sourcePath: "__dummy__.tsx",
|
|
114
|
-
options: {
|
|
115
|
-
components: ["tamagui"],
|
|
116
|
-
...options
|
|
117
|
-
},
|
|
118
|
-
shouldPrintDebug: !1
|
|
119
|
-
};
|
|
120
|
-
try {
|
|
121
|
-
return await pool.run(task, {
|
|
122
|
-
name: "runTask"
|
|
123
|
-
}), {
|
|
124
|
-
success: !0
|
|
125
|
-
};
|
|
126
|
-
} catch (error) {
|
|
127
|
-
throw console.error("[static-worker] Error loading Tamagui config:", error), error;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
async function recyclePool(options) {
|
|
131
|
-
if (isClosing() || isRecycling()) return;
|
|
132
|
-
const oldPool = getSharedPool();
|
|
133
|
-
if (!oldPool) return;
|
|
134
|
-
setRecycling(!0);
|
|
135
|
-
const start = Date.now();
|
|
136
|
-
try {
|
|
137
|
-
const originalStderr = process.stderr.write.bind(process.stderr),
|
|
138
|
-
originalStdout = process.stdout.write.bind(process.stdout),
|
|
139
|
-
filter = (chunk, ...args) => !!(typeof chunk == "string" ? chunk : chunk?.toString?.() || "").includes("Terminating worker thread");
|
|
140
|
-
process.stderr.write = (chunk, ...args) => filter(chunk) ? !0 : originalStderr(chunk, ...args), process.stdout.write = (chunk, ...args) => filter(chunk) ? !0 : originalStdout(chunk, ...args);
|
|
141
|
-
const newPool = createPool();
|
|
142
|
-
setSharedPool(newPool);
|
|
143
|
-
const warmupTask = {
|
|
144
|
-
type: "extractToClassNames",
|
|
145
|
-
source: "// warmup",
|
|
146
|
-
sourcePath: "__warmup__.tsx",
|
|
147
|
-
options: {
|
|
148
|
-
...options,
|
|
149
|
-
// skip the "built config" log on warmup since it's a recycle
|
|
150
|
-
_skipBuildLog: !0
|
|
151
|
-
},
|
|
152
|
-
shouldPrintDebug: !1
|
|
153
|
-
};
|
|
154
|
-
await newPool.run(warmupTask, {
|
|
155
|
-
name: "runTask"
|
|
156
|
-
}), oldPool.removeAllListeners(), oldPool.destroy().catch(() => {}), setTimeout(() => {
|
|
157
|
-
process.stderr.write = originalStderr, process.stdout.write = originalStdout;
|
|
158
|
-
}), console.log(` \u267B\uFE0F [tamagui] recycled worker pool (${Date.now() - start}ms)`);
|
|
159
|
-
} finally {
|
|
160
|
-
setRecycling(!1);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
async function loadTamaguiBuildConfig(tamaguiOptions) {
|
|
164
|
-
const {
|
|
165
|
-
default: Static
|
|
166
|
-
} = await import("@tamagui/static");
|
|
167
|
-
return Static.loadTamaguiBuildConfigAsync(tamaguiOptions);
|
|
168
|
-
}
|
|
169
|
-
async function extractToClassNames(params) {
|
|
170
|
-
const {
|
|
171
|
-
source,
|
|
172
|
-
sourcePath = "",
|
|
173
|
-
options,
|
|
174
|
-
shouldPrintDebug = !1
|
|
175
|
-
} = params;
|
|
176
|
-
if (typeof source != "string") throw new Error("`source` must be a string of javascript");
|
|
177
|
-
const task = {
|
|
178
|
-
type: "extractToClassNames",
|
|
179
|
-
source,
|
|
180
|
-
sourcePath,
|
|
181
|
-
options,
|
|
182
|
-
shouldPrintDebug
|
|
183
|
-
},
|
|
184
|
-
result = await getPool().run(task, {
|
|
185
|
-
name: "runTask"
|
|
186
|
-
});
|
|
187
|
-
if (!result.success) {
|
|
188
|
-
const errorMessage = [`[tamagui-extract] Error processing file: ${sourcePath || "(unknown)"}`, "", result.error, result.stack ? `
|
|
189
|
-
${result.stack}` : ""].filter(Boolean).join(`
|
|
190
|
-
`);
|
|
191
|
-
throw new Error(errorMessage);
|
|
192
|
-
}
|
|
193
|
-
return incrementTaskCount() >= MAX_TASKS_BEFORE_RECYCLE && (resetTaskCount(), recyclePool(options).catch(() => {})), result.data;
|
|
194
|
-
}
|
|
195
|
-
async function extractToNative(sourceFileName, sourceCode, options) {
|
|
196
|
-
const task = {
|
|
197
|
-
type: "extractToNative",
|
|
198
|
-
sourceFileName,
|
|
199
|
-
sourceCode,
|
|
200
|
-
options
|
|
201
|
-
},
|
|
202
|
-
result = await getPool().run(task, {
|
|
203
|
-
name: "runTask"
|
|
204
|
-
});
|
|
205
|
-
if (!result.success) {
|
|
206
|
-
const errorMessage = [`[tamagui-extract] Error processing file: ${sourceFileName || "(unknown)"}`, "", result.error, result.stack ? `
|
|
207
|
-
${result.stack}` : ""].filter(Boolean).join(`
|
|
208
|
-
`);
|
|
209
|
-
throw new Error(errorMessage);
|
|
210
|
-
}
|
|
211
|
-
return incrementTaskCount() >= MAX_TASKS_BEFORE_RECYCLE && (resetTaskCount(), recyclePool(options).catch(() => {})), result.data;
|
|
212
|
-
}
|
|
213
|
-
async function watchTamaguiConfig(options) {
|
|
214
|
-
const {
|
|
215
|
-
default: Static
|
|
216
|
-
} = await import("@tamagui/static"),
|
|
217
|
-
watcher = await Static.watchTamaguiConfig(options);
|
|
218
|
-
if (!watcher) return;
|
|
219
|
-
const originalDispose = watcher.dispose;
|
|
220
|
-
return {
|
|
221
|
-
dispose: () => {
|
|
222
|
-
originalDispose(), getSharedPool() && clearWorkerCache();
|
|
223
|
-
}
|
|
224
|
-
};
|
|
225
|
-
}
|
|
226
|
-
async function clearWorkerCache() {
|
|
227
|
-
const pool = getSharedPool();
|
|
228
|
-
if (!pool || isClosing()) return;
|
|
229
|
-
const task = {
|
|
230
|
-
type: "clearCache"
|
|
231
|
-
};
|
|
232
|
-
await pool.run(task, {
|
|
233
|
-
name: "runTask"
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
async function destroyPool() {
|
|
237
|
-
const pool = getSharedPool();
|
|
238
|
-
if (pool) {
|
|
239
|
-
setClosing(!0);
|
|
240
|
-
try {
|
|
241
|
-
await pool.close();
|
|
242
|
-
} finally {
|
|
243
|
-
setSharedPool(null), setClosing(!1);
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
function getPoolStats() {
|
|
248
|
-
const pool = getSharedPool();
|
|
249
|
-
return pool ? {
|
|
250
|
-
threads: pool.threads.length,
|
|
251
|
-
queueSize: pool.queueSize,
|
|
252
|
-
completed: pool.completed,
|
|
253
|
-
duration: pool.duration,
|
|
254
|
-
utilization: pool.utilization
|
|
255
|
-
} : null;
|
|
256
|
-
}
|
package/dist/cjs/index.js.map
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/index.ts"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": ["Piscina"]
|
|
6
|
-
}
|