@tamagui/cli 1.52.8 → 1.53.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dev/getVitePath.js +58 -0
- package/dist/dev/getVitePath.js.map +6 -0
- package/dist/dev.js +163 -66
- package/dist/dev.js.map +2 -2
- package/dist/getVitePath.js +58 -0
- package/dist/getVitePath.js.map +6 -0
- package/package.json +14 -9
- package/src/dev.ts +232 -99
- package/types/dev/getVitePath.d.ts +2 -0
- package/types/dev/getVitePath.d.ts.map +1 -0
- package/types/dev.d.ts.map +1 -1
- package/types/getVitePath.d.ts +2 -0
- package/types/getVitePath.d.ts.map +1 -0
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], 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", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var getVitePath_exports = {};
|
|
30
|
+
__export(getVitePath_exports, {
|
|
31
|
+
getVitePath: () => getVitePath
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(getVitePath_exports);
|
|
34
|
+
var import_path = require("path");
|
|
35
|
+
var import_esm_resolve = __toESM(require("esm-resolve"));
|
|
36
|
+
var import_fs_extra = require("fs-extra");
|
|
37
|
+
async function getVitePath(moduleName) {
|
|
38
|
+
if (moduleName[0] === ".") {
|
|
39
|
+
return (0, import_path.join)(`apps/tamastack/src`, moduleName) + ".js";
|
|
40
|
+
} else {
|
|
41
|
+
let id = "";
|
|
42
|
+
const resolved = (0, import_esm_resolve.default)((0, import_path.join)(process.cwd(), "index.js"))(id);
|
|
43
|
+
if (!resolved) {
|
|
44
|
+
throw new Error(`\u274C cant find`);
|
|
45
|
+
}
|
|
46
|
+
const real = await (0, import_fs_extra.realpath)(resolved);
|
|
47
|
+
id = (0, import_path.relative)(file, real);
|
|
48
|
+
if (id.endsWith(`/react/jsx-dev-runtime.js`)) {
|
|
49
|
+
id = "react/jsx-runtime";
|
|
50
|
+
}
|
|
51
|
+
return id;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
55
|
+
0 && (module.exports = {
|
|
56
|
+
getVitePath
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=getVitePath.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/dev/getVitePath.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA+B;AAE/B,yBAAoB;AACpB,sBAAyB;AAEzB,eAAsB,YAAY,YAAoB;AACpD,MAAI,WAAW,CAAC,MAAM,KAAK;AAEzB,eAAO,kBAAK,sBAAsB,UAAU,IAAI;AAAA,EAClD,OAAO;AACL,QAAI,KAAK;AACT,UAAM,eAAW,mBAAAA,aAAQ,kBAAK,QAAQ,IAAI,GAAG,UAAU,CAAC,EAAE,EAAE;AAE5D,QAAI,CAAC,UAAU;AACb,YAAM,IAAI,MAAM,kBAAa;AAAA,IAC/B;AACA,UAAM,OAAO,UAAM,0BAAS,QAAQ;AACpC,aAAK,sBAAS,MAAM,IAAI;AACxB,QAAI,GAAG,SAAS,2BAA2B,GAAG;AAC5C,WAAK;AAAA,IACP;AACA,WAAO;AAAA,EACT;AACF;",
|
|
5
|
+
"names": ["resolve"]
|
|
6
|
+
}
|
package/dist/dev.js
CHANGED
|
@@ -36,32 +36,38 @@ var import_path = require("path");
|
|
|
36
36
|
var import_vite_native_swc = __toESM(require("@tamagui/vite-native-swc"));
|
|
37
37
|
var import_vite_plugin = require("@tamagui/vite-plugin");
|
|
38
38
|
var import_chalk = __toESM(require("chalk"));
|
|
39
|
+
var import_es_module_lexer = require("es-module-lexer");
|
|
39
40
|
var import_fs_extra = require("fs-extra");
|
|
40
41
|
var import_vite = require("vite");
|
|
41
42
|
var import_clientInjectPlugin = require("./dev/clientInjectPlugin");
|
|
42
43
|
var import_createDevServer = require("./dev/createDevServer");
|
|
43
44
|
var import_utils = require("./utils");
|
|
44
45
|
const dev = async (options) => {
|
|
45
|
-
const { root
|
|
46
|
-
|
|
46
|
+
const { root } = options;
|
|
47
|
+
process.on("uncaughtException", (err) => {
|
|
48
|
+
console.log((err == null ? void 0 : err.message) || err);
|
|
49
|
+
});
|
|
47
50
|
const packageRootDir = (0, import_path.join)(__dirname, "..");
|
|
48
51
|
await (0, import_vite_plugin.nativePrebuild)();
|
|
49
52
|
const port = options.port || 8081;
|
|
50
53
|
const plugins = [
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}),
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
54
|
+
// tamaguiPlugin({
|
|
55
|
+
// ...options.tamaguiOptions,
|
|
56
|
+
// target: 'native',
|
|
57
|
+
// }),
|
|
58
|
+
{
|
|
59
|
+
name: "tamagui",
|
|
60
|
+
config() {
|
|
61
|
+
return {
|
|
62
|
+
define: {
|
|
63
|
+
"process.env.TAMAGUI_TARGET": JSON.stringify("native")
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
61
68
|
];
|
|
62
69
|
if (process.env.IS_TAMAGUI_DEV) {
|
|
63
70
|
const inspect = require("vite-plugin-inspect");
|
|
64
|
-
console.log("\u{1F41E} enabling inspect plugin");
|
|
65
71
|
plugins.push(inspect());
|
|
66
72
|
}
|
|
67
73
|
const hmrListeners = [];
|
|
@@ -69,9 +75,74 @@ const dev = async (options) => {
|
|
|
69
75
|
let serverConfig = {
|
|
70
76
|
root,
|
|
71
77
|
mode: "development",
|
|
78
|
+
esbuild: false,
|
|
72
79
|
clearScreen: false,
|
|
73
80
|
appType: "custom",
|
|
74
|
-
plugins
|
|
81
|
+
plugins: [
|
|
82
|
+
...plugins,
|
|
83
|
+
(0, import_vite_native_swc.default)({
|
|
84
|
+
tsDecorators: true,
|
|
85
|
+
mode: "serve"
|
|
86
|
+
}),
|
|
87
|
+
(0, import_vite_plugin.nativePlugin)({
|
|
88
|
+
port,
|
|
89
|
+
mode: "serve"
|
|
90
|
+
}),
|
|
91
|
+
{
|
|
92
|
+
name: "tamagui-client-transform",
|
|
93
|
+
async handleHotUpdate({ read, modules, file }) {
|
|
94
|
+
var _a, _b;
|
|
95
|
+
try {
|
|
96
|
+
if (!file.includes("/src/")) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const [module2] = modules;
|
|
100
|
+
if (!module2)
|
|
101
|
+
return;
|
|
102
|
+
const id = (module2 == null ? void 0 : module2.url) || file.replace(root, "");
|
|
103
|
+
const code = await read();
|
|
104
|
+
if (code.startsWith(`'use strict';`))
|
|
105
|
+
return;
|
|
106
|
+
if (!code) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
let source = code;
|
|
110
|
+
source = ((_a = await (0, import_vite_native_swc.transformForBuild)(id, source)) == null ? void 0 : _a.code) || "";
|
|
111
|
+
const importsMap = {};
|
|
112
|
+
const [imports] = (0, import_es_module_lexer.parse)(source);
|
|
113
|
+
let accumulatedSliceOffset = 0;
|
|
114
|
+
for (const specifier of imports) {
|
|
115
|
+
const { n: importName, s: start } = specifier;
|
|
116
|
+
if (importName) {
|
|
117
|
+
const id2 = await (0, import_vite_plugin.getVitePath)(file, importName);
|
|
118
|
+
if (!id2) {
|
|
119
|
+
console.warn("???");
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
importsMap[id2] = id2.replace(/^(\.\.\/)+/, "");
|
|
123
|
+
const len = importName.length;
|
|
124
|
+
const extraLen = id2.length - len;
|
|
125
|
+
source = source.slice(0, start + accumulatedSliceOffset) + id2 + source.slice(start + accumulatedSliceOffset + len);
|
|
126
|
+
accumulatedSliceOffset += extraLen;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
source = ((_b = await (0, import_vite_native_swc.swcTransform)(id, source, {
|
|
130
|
+
mode: "serve-cjs"
|
|
131
|
+
})) == null ? void 0 : _b.code) || "";
|
|
132
|
+
if (!source) {
|
|
133
|
+
throw "\u274C no source";
|
|
134
|
+
}
|
|
135
|
+
const hotUpdateSource = `exports = ((exports) => {
|
|
136
|
+
const require = createRequire(${JSON.stringify(importsMap, null, 2)})
|
|
137
|
+
${source.replace(`import.meta.hot.accept(() => {})`, ``)};
|
|
138
|
+
return exports })({})`;
|
|
139
|
+
hotUpdatedCJSFiles.set(id, hotUpdateSource);
|
|
140
|
+
} catch (err) {
|
|
141
|
+
console.log(`Error processing hmr update:`, err);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
],
|
|
75
146
|
server: {
|
|
76
147
|
cors: true,
|
|
77
148
|
port: options.port,
|
|
@@ -86,37 +157,28 @@ const dev = async (options) => {
|
|
|
86
157
|
plugins: [...serverConfig.plugins]
|
|
87
158
|
};
|
|
88
159
|
const server = await (0, import_vite.createServer)(serverConfig);
|
|
89
|
-
resolvedConfig.plugins = resolvedConfig.plugins.filter((x) => {
|
|
90
|
-
if (x.name === "vite:import-analysis") {
|
|
91
|
-
return false;
|
|
92
|
-
}
|
|
93
|
-
return true;
|
|
94
|
-
});
|
|
95
160
|
server.watcher.addListener("change", async (path) => {
|
|
96
161
|
const id = path.replace(process.cwd(), "");
|
|
97
162
|
if (!id.endsWith("tsx") && !id.endsWith("jsx")) {
|
|
98
163
|
return;
|
|
99
164
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
contents = `exports = ((exports) => { ${contents}; return exports })({})`;
|
|
106
|
-
hotUpdatedCJSFiles.set(id, contents);
|
|
165
|
+
try {
|
|
166
|
+
void server.transformRequest(id);
|
|
167
|
+
} catch (err) {
|
|
168
|
+
console.log("err", err);
|
|
169
|
+
}
|
|
107
170
|
});
|
|
108
171
|
await server.listen();
|
|
172
|
+
let isBuilding = null;
|
|
109
173
|
const dispose = await (0, import_createDevServer.createDevServer)(options, {
|
|
110
174
|
hotUpdatedCJSFiles,
|
|
111
175
|
listenForHMR(cb) {
|
|
112
176
|
hmrListeners.push(cb);
|
|
113
177
|
},
|
|
114
|
-
getIndexBundle:
|
|
115
|
-
const outputCode = await getBundleCode();
|
|
116
|
-
return outputCode;
|
|
117
|
-
},
|
|
178
|
+
getIndexBundle: getBundleCode,
|
|
118
179
|
indexJson: getIndexJsonReponse({ port, root })
|
|
119
180
|
});
|
|
181
|
+
getBundleCode();
|
|
120
182
|
console.log(`Listening on:`, import_chalk.default.green(`http://localhost:${port}`));
|
|
121
183
|
server.printUrls();
|
|
122
184
|
(0, import_utils.registerDispose)(() => {
|
|
@@ -128,6 +190,14 @@ const dev = async (options) => {
|
|
|
128
190
|
return (_a = server.httpServer) == null ? void 0 : _a.on("close", res);
|
|
129
191
|
});
|
|
130
192
|
async function getBundleCode() {
|
|
193
|
+
if (isBuilding) {
|
|
194
|
+
const res = await isBuilding;
|
|
195
|
+
return res;
|
|
196
|
+
}
|
|
197
|
+
let done;
|
|
198
|
+
isBuilding = new Promise((res) => {
|
|
199
|
+
done = res;
|
|
200
|
+
});
|
|
131
201
|
const tmpBundle = (0, import_path.join)(process.cwd(), "bundle.tmp.js");
|
|
132
202
|
if (await (0, import_fs_extra.pathExists)(tmpBundle)) {
|
|
133
203
|
console.log(
|
|
@@ -137,12 +207,30 @@ const dev = async (options) => {
|
|
|
137
207
|
return await (0, import_promises.readFile)(tmpBundle, "utf-8");
|
|
138
208
|
}
|
|
139
209
|
const buildOutput = await (0, import_vite.build)({
|
|
140
|
-
plugins
|
|
210
|
+
plugins: [
|
|
211
|
+
...plugins,
|
|
212
|
+
(0, import_vite_plugin.nativePlugin)({
|
|
213
|
+
port,
|
|
214
|
+
mode: "build"
|
|
215
|
+
}),
|
|
216
|
+
(0, import_vite_native_swc.default)({
|
|
217
|
+
tsDecorators: true,
|
|
218
|
+
mode: "build"
|
|
219
|
+
})
|
|
220
|
+
],
|
|
141
221
|
appType: "custom",
|
|
142
222
|
root,
|
|
143
223
|
clearScreen: false,
|
|
144
224
|
build: {
|
|
145
|
-
ssr: false
|
|
225
|
+
ssr: false,
|
|
226
|
+
minify: false,
|
|
227
|
+
rollupOptions: {
|
|
228
|
+
treeshake: false,
|
|
229
|
+
preserveEntrySignatures: "strict",
|
|
230
|
+
output: {
|
|
231
|
+
format: "cjs"
|
|
232
|
+
}
|
|
233
|
+
}
|
|
146
234
|
},
|
|
147
235
|
mode: "development",
|
|
148
236
|
define: {
|
|
@@ -150,44 +238,53 @@ const dev = async (options) => {
|
|
|
150
238
|
"process.env.NODE_ENV": `"development"`
|
|
151
239
|
}
|
|
152
240
|
});
|
|
153
|
-
|
|
154
|
-
if (!appCodeIn) {
|
|
241
|
+
if (!("output" in buildOutput)) {
|
|
155
242
|
throw `\u274C`;
|
|
156
243
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
244
|
+
let appCode = buildOutput.output.sort((a, b) => a["isEntry"] ? 1 : -1).map((module2) => {
|
|
245
|
+
if (module2.type == "chunk") {
|
|
246
|
+
const importsMap = {};
|
|
247
|
+
for (const imp of module2.imports) {
|
|
248
|
+
const relativePath = (0, import_path.relative)((0, import_path.dirname)(module2.fileName), imp);
|
|
249
|
+
importsMap[relativePath[0] === "." ? relativePath : "./" + relativePath] = imp;
|
|
250
|
+
}
|
|
251
|
+
return `
|
|
252
|
+
___modules___["${module2.fileName}"] = ((exports, module2) => {
|
|
253
|
+
const require = createRequire(${JSON.stringify(importsMap, null, 2)})
|
|
254
|
+
|
|
255
|
+
${module2.code.replace(`'use strict';`, "").replace("module.exports = ", "module2.exports = ")}
|
|
256
|
+
})
|
|
257
|
+
|
|
258
|
+
${module2.isEntry ? `
|
|
259
|
+
// run entry
|
|
260
|
+
__specialRequire("node_modules/react-native/index.js")
|
|
261
|
+
__specialRequire("${module2.fileName}")
|
|
262
|
+
` : ""}
|
|
263
|
+
`;
|
|
264
|
+
}
|
|
265
|
+
}).join("\n");
|
|
266
|
+
if (!appCode) {
|
|
267
|
+
throw `\u274C`;
|
|
268
|
+
}
|
|
269
|
+
appCode = appCode.replace("undefined.accept(() => {})", "").replace("undefined.accept(function() {});", "").replace(
|
|
270
|
+
`var require_react_refresh_runtime_development =`,
|
|
271
|
+
`var require_react_refresh_runtime_development = globalThis['__RequireReactRefreshRuntime__'] = `
|
|
272
|
+
).replace(
|
|
273
|
+
`var require_Pressability = `,
|
|
274
|
+
`var require_Pressability = globalThis['__ReactPressability__'] =`
|
|
182
275
|
).replace(
|
|
183
|
-
`
|
|
184
|
-
`globalThis['
|
|
276
|
+
`var require_Pressability = `,
|
|
277
|
+
`var require_Pressability = globalThis['__ReactPressability__'] =`
|
|
278
|
+
).replace(
|
|
279
|
+
`var require_usePressability = `,
|
|
280
|
+
`var require_usePressability = globalThis['__ReactUsePressability__'] =`
|
|
185
281
|
);
|
|
186
282
|
const templateFile = (0, import_path.join)(packageRootDir, "react-native-template.js");
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
283
|
+
const out = await (0, import_promises.readFile)(templateFile, "utf-8") + appCode;
|
|
284
|
+
await (0, import_promises.writeFile)((0, import_path.join)(process.cwd(), ".tamagui", "bundle.js"), out, "utf-8");
|
|
285
|
+
done(out);
|
|
286
|
+
isBuilding = null;
|
|
287
|
+
return out;
|
|
191
288
|
}
|
|
192
289
|
};
|
|
193
290
|
function getIndexJsonReponse({ port, root }) {
|
package/dist/dev.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/dev.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,
|
|
5
|
-
"names": ["viteReactPlugin", "
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["viteReactPlugin", "module", "id", "chalk"]
|
|
6
6
|
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], 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", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var getVitePath_exports = {};
|
|
30
|
+
__export(getVitePath_exports, {
|
|
31
|
+
getVitePath: () => getVitePath
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(getVitePath_exports);
|
|
34
|
+
var import_path = require("path");
|
|
35
|
+
var import_esm_resolve = __toESM(require("esm-resolve"));
|
|
36
|
+
var import_fs_extra = require("fs-extra");
|
|
37
|
+
async function getVitePath(moduleName) {
|
|
38
|
+
if (moduleName[0] === ".") {
|
|
39
|
+
return (0, import_path.join)(`apps/tamastack/src`, moduleName) + ".js";
|
|
40
|
+
} else {
|
|
41
|
+
let id = "";
|
|
42
|
+
const resolved = (0, import_esm_resolve.default)((0, import_path.join)(process.cwd(), "index.js"))(id);
|
|
43
|
+
if (!resolved) {
|
|
44
|
+
throw new Error(`\u274C cant find`);
|
|
45
|
+
}
|
|
46
|
+
const real = await (0, import_fs_extra.realpath)(resolved);
|
|
47
|
+
id = (0, import_path.relative)(file, real);
|
|
48
|
+
if (id.endsWith(`/react/jsx-dev-runtime.js`)) {
|
|
49
|
+
id = "react/jsx-runtime";
|
|
50
|
+
}
|
|
51
|
+
return id;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
55
|
+
0 && (module.exports = {
|
|
56
|
+
getVitePath
|
|
57
|
+
});
|
|
58
|
+
//# sourceMappingURL=getVitePath.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/getVitePath.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA+B;AAE/B,yBAAoB;AACpB,sBAAyB;AAEzB,eAAsB,YAAY,YAAoB;AACpD,MAAI,WAAW,CAAC,MAAM,KAAK;AAEzB,eAAO,kBAAK,sBAAsB,UAAU,IAAI;AAAA,EAClD,OAAO;AACL,QAAI,KAAK;AACT,UAAM,eAAW,mBAAAA,aAAQ,kBAAK,QAAQ,IAAI,GAAG,UAAU,CAAC,EAAE,EAAE;AAE5D,QAAI,CAAC,UAAU;AACb,YAAM,IAAI,MAAM,kBAAa;AAAA,IAC/B;AACA,UAAM,OAAO,UAAM,0BAAS,QAAQ;AACpC,aAAK,sBAAS,MAAM,IAAI;AACxB,QAAI,GAAG,SAAS,2BAA2B,GAAG;AAC5C,WAAK;AAAA,IACP;AACA,WAAO;AAAA,EACT;AACF;",
|
|
5
|
+
"names": ["resolve"]
|
|
6
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.53.0",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
5
|
"types": "./types/index.d.ts",
|
|
6
6
|
"main": "dist",
|
|
@@ -24,17 +24,18 @@
|
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@babel/code-frame": "^7.21.4",
|
|
27
|
+
"@babel/plugin-transform-react-jsx": "^7.22.5",
|
|
27
28
|
"@callstack/repack-debugger-app": "^1.0.0",
|
|
28
29
|
"@fastify/sensible": "^4.1.0",
|
|
29
30
|
"@fastify/static": "^5.0.2",
|
|
30
|
-
"@tamagui/build": "1.
|
|
31
|
-
"@tamagui/create-theme": "1.
|
|
32
|
-
"@tamagui/generate-themes": "1.
|
|
33
|
-
"@tamagui/static": "1.
|
|
34
|
-
"@tamagui/types": "1.
|
|
35
|
-
"@tamagui/vite-native-hmr": "1.
|
|
36
|
-
"@tamagui/vite-native-swc": "1.
|
|
37
|
-
"@tamagui/vite-plugin": "1.
|
|
31
|
+
"@tamagui/build": "1.53.0",
|
|
32
|
+
"@tamagui/create-theme": "1.53.0",
|
|
33
|
+
"@tamagui/generate-themes": "1.53.0",
|
|
34
|
+
"@tamagui/static": "1.53.0",
|
|
35
|
+
"@tamagui/types": "1.53.0",
|
|
36
|
+
"@tamagui/vite-native-hmr": "1.53.0",
|
|
37
|
+
"@tamagui/vite-native-swc": "1.53.0",
|
|
38
|
+
"@tamagui/vite-plugin": "1.53.0",
|
|
38
39
|
"@types/compression": "^1.7.2",
|
|
39
40
|
"@types/morgan": "^1.9.3",
|
|
40
41
|
"@vitejs/plugin-react": "^4.0.4",
|
|
@@ -44,13 +45,16 @@
|
|
|
44
45
|
"change-case": "^4.1.2",
|
|
45
46
|
"chokidar": "^3.5.2",
|
|
46
47
|
"compression": "^1.7.4",
|
|
48
|
+
"es-module-lexer": "^1.3.0",
|
|
47
49
|
"esbuild": "^0.19.0",
|
|
50
|
+
"esm-resolve": "^1.0.8",
|
|
48
51
|
"execa": "^5.0.0",
|
|
49
52
|
"express": "^4.18.1",
|
|
50
53
|
"fast-glob": "^3.2.11",
|
|
51
54
|
"fastify": "^3.29.0",
|
|
52
55
|
"fastify-favicon": "^3.2.0",
|
|
53
56
|
"fastify-plugin": "^3.0.1",
|
|
57
|
+
"flow-remove-types": "^2.214.0",
|
|
54
58
|
"fs-extra": "^11.1.0",
|
|
55
59
|
"get-port": "^6.1.2",
|
|
56
60
|
"graphology": "^0.24.1",
|
|
@@ -72,6 +76,7 @@
|
|
|
72
76
|
"url": "^0.11.0",
|
|
73
77
|
"vite": "^4.4.9",
|
|
74
78
|
"vite-plugin-entry-shaking": "^0.3.2",
|
|
79
|
+
"vite-plugin-externals": "^0.6.2",
|
|
75
80
|
"vite-tsconfig-paths": "^4.2.0",
|
|
76
81
|
"ws": "^8.7.0",
|
|
77
82
|
"zx": "^7.1.1"
|
package/src/dev.ts
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import { readFile } from 'fs/promises'
|
|
2
|
-
import { join } from 'path'
|
|
1
|
+
import { readFile, writeFile } from 'fs/promises'
|
|
2
|
+
import { dirname, join, relative } from 'path'
|
|
3
3
|
|
|
4
4
|
import { CLIResolvedOptions } from '@tamagui/types'
|
|
5
|
-
import viteReactPlugin, {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
tamaguiPlugin,
|
|
11
|
-
} from '@tamagui/vite-plugin'
|
|
5
|
+
import viteReactPlugin, {
|
|
6
|
+
swcTransform,
|
|
7
|
+
transformForBuild,
|
|
8
|
+
} from '@tamagui/vite-native-swc'
|
|
9
|
+
import { getVitePath, nativePlugin, nativePrebuild } from '@tamagui/vite-plugin'
|
|
12
10
|
import chalk from 'chalk'
|
|
13
|
-
import
|
|
11
|
+
import { parse } from 'es-module-lexer'
|
|
12
|
+
import { pathExists } from 'fs-extra'
|
|
14
13
|
import { InlineConfig, build, createServer, resolveConfig } from 'vite'
|
|
15
14
|
|
|
16
15
|
import { clientInjectionsPlugin } from './dev/clientInjectPlugin'
|
|
@@ -19,8 +18,11 @@ import { HMRListener } from './dev/types'
|
|
|
19
18
|
import { registerDispose } from './utils'
|
|
20
19
|
|
|
21
20
|
export const dev = async (options: CLIResolvedOptions) => {
|
|
22
|
-
const { root
|
|
23
|
-
|
|
21
|
+
const { root } = options
|
|
22
|
+
|
|
23
|
+
process.on('uncaughtException', (err) => {
|
|
24
|
+
console.log(err?.message || err)
|
|
25
|
+
})
|
|
24
26
|
|
|
25
27
|
const packageRootDir = join(__dirname, '..')
|
|
26
28
|
|
|
@@ -31,21 +33,25 @@ export const dev = async (options: CLIResolvedOptions) => {
|
|
|
31
33
|
const port = options.port || 8081
|
|
32
34
|
|
|
33
35
|
const plugins = [
|
|
34
|
-
tamaguiPlugin({
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}),
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
36
|
+
// tamaguiPlugin({
|
|
37
|
+
// ...options.tamaguiOptions,
|
|
38
|
+
// target: 'native',
|
|
39
|
+
// }),
|
|
40
|
+
{
|
|
41
|
+
name: 'tamagui',
|
|
42
|
+
config() {
|
|
43
|
+
return {
|
|
44
|
+
define: {
|
|
45
|
+
'process.env.TAMAGUI_TARGET': JSON.stringify('native'),
|
|
46
|
+
},
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
] satisfies InlineConfig['plugins']
|
|
45
51
|
|
|
46
52
|
if (process.env.IS_TAMAGUI_DEV) {
|
|
47
53
|
const inspect = require('vite-plugin-inspect')
|
|
48
|
-
|
|
54
|
+
// @ts-ignore
|
|
49
55
|
plugins.push(inspect())
|
|
50
56
|
}
|
|
51
57
|
|
|
@@ -55,9 +61,106 @@ export const dev = async (options: CLIResolvedOptions) => {
|
|
|
55
61
|
let serverConfig = {
|
|
56
62
|
root,
|
|
57
63
|
mode: 'development',
|
|
64
|
+
esbuild: false,
|
|
58
65
|
clearScreen: false,
|
|
59
66
|
appType: 'custom',
|
|
60
|
-
|
|
67
|
+
|
|
68
|
+
plugins: [
|
|
69
|
+
...plugins,
|
|
70
|
+
|
|
71
|
+
viteReactPlugin({
|
|
72
|
+
tsDecorators: true,
|
|
73
|
+
mode: 'serve',
|
|
74
|
+
}),
|
|
75
|
+
|
|
76
|
+
nativePlugin({
|
|
77
|
+
port,
|
|
78
|
+
mode: 'serve',
|
|
79
|
+
}),
|
|
80
|
+
|
|
81
|
+
{
|
|
82
|
+
name: 'tamagui-client-transform',
|
|
83
|
+
|
|
84
|
+
async handleHotUpdate({ read, modules, file }) {
|
|
85
|
+
try {
|
|
86
|
+
if (!file.includes('/src/')) {
|
|
87
|
+
return
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const [module] = modules
|
|
91
|
+
if (!module) return
|
|
92
|
+
|
|
93
|
+
const id = module?.url || file.replace(root, '')
|
|
94
|
+
|
|
95
|
+
const code = await read()
|
|
96
|
+
|
|
97
|
+
// got a weird pre compiled file on startup
|
|
98
|
+
if (code.startsWith(`'use strict';`)) return
|
|
99
|
+
|
|
100
|
+
if (!code) {
|
|
101
|
+
return
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
let source = code
|
|
105
|
+
|
|
106
|
+
// we have to remove jsx before we can parse imports...
|
|
107
|
+
source = (await transformForBuild(id, source))?.code || ''
|
|
108
|
+
|
|
109
|
+
const importsMap = {}
|
|
110
|
+
|
|
111
|
+
// parse imports of modules into ids:
|
|
112
|
+
// eg `import x from '@tamagui/core'` => `import x from '/me/node_modules/@tamagui/core/index.js'`
|
|
113
|
+
const [imports] = parse(source)
|
|
114
|
+
|
|
115
|
+
let accumulatedSliceOffset = 0
|
|
116
|
+
|
|
117
|
+
for (const specifier of imports) {
|
|
118
|
+
const { n: importName, s: start } = specifier
|
|
119
|
+
|
|
120
|
+
if (importName) {
|
|
121
|
+
const id = await getVitePath(file, importName)
|
|
122
|
+
if (!id) {
|
|
123
|
+
console.warn('???')
|
|
124
|
+
continue
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
importsMap[id] = id.replace(/^(\.\.\/)+/, '')
|
|
128
|
+
|
|
129
|
+
// replace module name with id for hmr
|
|
130
|
+
const len = importName.length
|
|
131
|
+
const extraLen = id.length - len
|
|
132
|
+
source =
|
|
133
|
+
source.slice(0, start + accumulatedSliceOffset) +
|
|
134
|
+
id +
|
|
135
|
+
source.slice(start + accumulatedSliceOffset + len)
|
|
136
|
+
accumulatedSliceOffset += extraLen
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// then we have to convert to commonjs..
|
|
141
|
+
source =
|
|
142
|
+
(
|
|
143
|
+
await swcTransform(id, source, {
|
|
144
|
+
mode: 'serve-cjs',
|
|
145
|
+
})
|
|
146
|
+
)?.code || ''
|
|
147
|
+
|
|
148
|
+
if (!source) {
|
|
149
|
+
throw '❌ no source'
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
const hotUpdateSource = `exports = ((exports) => {
|
|
153
|
+
const require = createRequire(${JSON.stringify(importsMap, null, 2)})
|
|
154
|
+
${source.replace(`import.meta.hot.accept(() => {})`, ``)};
|
|
155
|
+
return exports })({})`
|
|
156
|
+
|
|
157
|
+
hotUpdatedCJSFiles.set(id, hotUpdateSource)
|
|
158
|
+
} catch (err) {
|
|
159
|
+
console.log(`Error processing hmr update:`, err)
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
],
|
|
61
164
|
server: {
|
|
62
165
|
cors: true,
|
|
63
166
|
port: options.port,
|
|
@@ -67,8 +170,10 @@ export const dev = async (options: CLIResolvedOptions) => {
|
|
|
67
170
|
|
|
68
171
|
// first resolve config so we can pass into client plugin, then add client plugin:
|
|
69
172
|
const resolvedConfig = await resolveConfig(serverConfig, 'serve')
|
|
173
|
+
|
|
70
174
|
const viteRNClient = clientInjectionsPlugin(resolvedConfig)
|
|
71
175
|
|
|
176
|
+
// @ts-ignore
|
|
72
177
|
plugins.push(viteRNClient)
|
|
73
178
|
|
|
74
179
|
serverConfig = {
|
|
@@ -78,54 +183,35 @@ export const dev = async (options: CLIResolvedOptions) => {
|
|
|
78
183
|
|
|
79
184
|
const server = await createServer(serverConfig)
|
|
80
185
|
|
|
81
|
-
// @ts-ignore
|
|
82
|
-
resolvedConfig.plugins = resolvedConfig.plugins.filter((x) => {
|
|
83
|
-
if (x.name === 'vite:import-analysis') {
|
|
84
|
-
return false
|
|
85
|
-
}
|
|
86
|
-
return true
|
|
87
|
-
})
|
|
88
|
-
|
|
89
186
|
server.watcher.addListener('change', async (path) => {
|
|
90
187
|
const id = path.replace(process.cwd(), '')
|
|
91
|
-
|
|
92
188
|
if (!id.endsWith('tsx') && !id.endsWith('jsx')) {
|
|
93
189
|
return
|
|
94
190
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
.replace('import.meta.hot.accept(() => {})', '')
|
|
103
|
-
.replace('react_jsx-dev-runtime', 'react/jsx-dev-runtime')
|
|
104
|
-
.replace(/\.js\?v=[0-9a-z]+"/gi, '"')
|
|
105
|
-
.replaceAll('/node_modules/.vite/deps/', '')
|
|
106
|
-
.replace(`import.meta.hot = (0, _client.createHotContext)("/src/App.tsx");`, '')
|
|
107
|
-
.replace('var _client = require("/@vite/client");', '')
|
|
108
|
-
|
|
109
|
-
contents = `exports = ((exports) => { ${contents}; return exports })({})`
|
|
110
|
-
|
|
111
|
-
hotUpdatedCJSFiles.set(id, contents)
|
|
191
|
+
// just so it thinks its loaded
|
|
192
|
+
try {
|
|
193
|
+
void server.transformRequest(id)
|
|
194
|
+
} catch(err) {
|
|
195
|
+
// ok
|
|
196
|
+
console.log('err', err)
|
|
197
|
+
}
|
|
112
198
|
})
|
|
113
199
|
|
|
114
200
|
await server.listen()
|
|
115
201
|
|
|
202
|
+
let isBuilding: Promise<string> | null = null
|
|
203
|
+
|
|
116
204
|
const dispose = await createDevServer(options, {
|
|
117
205
|
hotUpdatedCJSFiles,
|
|
118
206
|
listenForHMR(cb) {
|
|
119
207
|
hmrListeners.push(cb)
|
|
120
208
|
},
|
|
121
|
-
getIndexBundle:
|
|
122
|
-
const outputCode = await getBundleCode()
|
|
123
|
-
|
|
124
|
-
return outputCode
|
|
125
|
-
},
|
|
209
|
+
getIndexBundle: getBundleCode,
|
|
126
210
|
indexJson: getIndexJsonReponse({ port, root }),
|
|
127
211
|
})
|
|
128
212
|
|
|
213
|
+
getBundleCode()
|
|
214
|
+
|
|
129
215
|
// rome-ignore lint/nursery/noConsoleLog: ok
|
|
130
216
|
console.log(`Listening on:`, chalk.green(`http://localhost:${port}`))
|
|
131
217
|
server.printUrls()
|
|
@@ -138,6 +224,16 @@ export const dev = async (options: CLIResolvedOptions) => {
|
|
|
138
224
|
await new Promise((res) => server.httpServer?.on('close', res))
|
|
139
225
|
|
|
140
226
|
async function getBundleCode() {
|
|
227
|
+
if (isBuilding) {
|
|
228
|
+
const res = await isBuilding
|
|
229
|
+
return res
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
let done
|
|
233
|
+
isBuilding = new Promise((res) => {
|
|
234
|
+
done = res
|
|
235
|
+
})
|
|
236
|
+
|
|
141
237
|
// for easier quick testing things:
|
|
142
238
|
const tmpBundle = join(process.cwd(), 'bundle.tmp.js')
|
|
143
239
|
if (await pathExists(tmpBundle)) {
|
|
@@ -151,12 +247,30 @@ export const dev = async (options: CLIResolvedOptions) => {
|
|
|
151
247
|
|
|
152
248
|
// build app
|
|
153
249
|
const buildOutput = await build({
|
|
154
|
-
plugins
|
|
250
|
+
plugins: [
|
|
251
|
+
...plugins,
|
|
252
|
+
nativePlugin({
|
|
253
|
+
port,
|
|
254
|
+
mode: 'build',
|
|
255
|
+
}),
|
|
256
|
+
viteReactPlugin({
|
|
257
|
+
tsDecorators: true,
|
|
258
|
+
mode: 'build',
|
|
259
|
+
}),
|
|
260
|
+
],
|
|
155
261
|
appType: 'custom',
|
|
156
262
|
root,
|
|
157
263
|
clearScreen: false,
|
|
158
264
|
build: {
|
|
159
265
|
ssr: false,
|
|
266
|
+
minify: false,
|
|
267
|
+
rollupOptions: {
|
|
268
|
+
treeshake: false,
|
|
269
|
+
preserveEntrySignatures: 'strict',
|
|
270
|
+
output: {
|
|
271
|
+
format: 'cjs',
|
|
272
|
+
},
|
|
273
|
+
},
|
|
160
274
|
},
|
|
161
275
|
mode: 'development',
|
|
162
276
|
define: {
|
|
@@ -165,60 +279,79 @@ export const dev = async (options: CLIResolvedOptions) => {
|
|
|
165
279
|
},
|
|
166
280
|
})
|
|
167
281
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
if (!appCodeIn) {
|
|
282
|
+
if (!('output' in buildOutput)) {
|
|
171
283
|
throw `❌`
|
|
172
284
|
}
|
|
173
285
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
286
|
+
let appCode = buildOutput.output
|
|
287
|
+
// entry last
|
|
288
|
+
.sort((a, b) => (a['isEntry'] ? 1 : -1))
|
|
289
|
+
.map((module) => {
|
|
290
|
+
if (module.type == 'chunk') {
|
|
291
|
+
const importsMap = {}
|
|
292
|
+
for (const imp of module.imports) {
|
|
293
|
+
const relativePath = relative(dirname(module.fileName), imp)
|
|
294
|
+
importsMap[relativePath[0] === '.' ? relativePath : './' + relativePath] = imp
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
return `
|
|
298
|
+
___modules___["${module.fileName}"] = ((exports, module2) => {
|
|
299
|
+
const require = createRequire(${JSON.stringify(importsMap, null, 2)})
|
|
300
|
+
|
|
301
|
+
${module.code
|
|
302
|
+
.replace(`'use strict';`, '')
|
|
303
|
+
.replace('module.exports = ', 'module2.exports = ')}
|
|
304
|
+
})
|
|
305
|
+
|
|
306
|
+
${
|
|
307
|
+
module.isEntry
|
|
308
|
+
? `
|
|
309
|
+
// run entry
|
|
310
|
+
__specialRequire("node_modules/react-native/index.js")
|
|
311
|
+
__specialRequire("${module.fileName}")
|
|
312
|
+
`
|
|
313
|
+
: ''
|
|
314
|
+
}
|
|
315
|
+
`
|
|
316
|
+
}
|
|
317
|
+
})
|
|
318
|
+
.join('\n')
|
|
190
319
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
// `module.exports = require_react_jsx_dev_runtime_development();`,
|
|
195
|
-
// `return require_react_jsx_dev_runtime_development();`
|
|
196
|
-
)
|
|
320
|
+
if (!appCode) {
|
|
321
|
+
throw `❌`
|
|
322
|
+
}
|
|
197
323
|
|
|
198
|
-
|
|
324
|
+
appCode = appCode
|
|
325
|
+
// this can be done in the individual file transform
|
|
326
|
+
.replace('undefined.accept(() => {})', '')
|
|
327
|
+
.replace('undefined.accept(function() {});', '') // swc
|
|
328
|
+
.replace(
|
|
329
|
+
`var require_react_refresh_runtime_development =`,
|
|
330
|
+
`var require_react_refresh_runtime_development = globalThis['__RequireReactRefreshRuntime__'] = `
|
|
331
|
+
)
|
|
332
|
+
.replace(
|
|
333
|
+
`var require_Pressability = `,
|
|
334
|
+
`var require_Pressability = globalThis['__ReactPressability__'] =`
|
|
335
|
+
)
|
|
199
336
|
.replace(
|
|
200
|
-
`
|
|
201
|
-
`
|
|
202
|
-
globalThis["ReactPressability"] = require_Pressability;
|
|
203
|
-
globalThis["ReactUsePressability"] = require_usePressability;
|
|
204
|
-
return require_react_native()`
|
|
337
|
+
`var require_Pressability = `,
|
|
338
|
+
`var require_Pressability = globalThis['__ReactPressability__'] =`
|
|
205
339
|
)
|
|
206
|
-
// forcing onto global so i can re-thread it into require
|
|
207
340
|
.replace(
|
|
208
|
-
`
|
|
209
|
-
`globalThis['
|
|
341
|
+
`var require_usePressability = `,
|
|
342
|
+
`var require_usePressability = globalThis['__ReactUsePressability__'] =`
|
|
210
343
|
)
|
|
211
344
|
|
|
212
345
|
const templateFile = join(packageRootDir, 'react-native-template.js')
|
|
213
346
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
347
|
+
const out = (await readFile(templateFile, 'utf-8')) + appCode
|
|
348
|
+
|
|
349
|
+
await writeFile(join(process.cwd(), '.tamagui', 'bundle.js'), out, 'utf-8')
|
|
350
|
+
|
|
351
|
+
done(out)
|
|
352
|
+
isBuilding = null
|
|
353
|
+
|
|
354
|
+
return out
|
|
222
355
|
}
|
|
223
356
|
}
|
|
224
357
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getVitePath.d.ts","sourceRoot":"","sources":["../../src/dev/getVitePath.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,mBAkBnD"}
|
package/types/dev.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../src/dev.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../src/dev.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAgBnD,eAAO,MAAM,GAAG,YAAmB,kBAAkB,kBAgVpD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getVitePath.d.ts","sourceRoot":"","sources":["../src/getVitePath.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,mBAkBnD"}
|