vxrn 0.1.28 → 0.1.30

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.
Files changed (50) hide show
  1. package/dist/cjs/create.js +643 -0
  2. package/dist/cjs/create.js.map +6 -0
  3. package/dist/cjs/create.native.js +1318 -0
  4. package/dist/cjs/create.native.js.map +6 -0
  5. package/dist/cjs/exports/dev.js +3 -5
  6. package/dist/cjs/exports/dev.js.map +1 -1
  7. package/dist/cjs/exports/dev.native.js +3 -5
  8. package/dist/cjs/exports/dev.native.js.map +1 -1
  9. package/dist/cjs/getVitePath.js +50 -0
  10. package/dist/cjs/getVitePath.js.map +6 -0
  11. package/dist/cjs/getVitePath.native.js +197 -0
  12. package/dist/cjs/getVitePath.native.js.map +6 -0
  13. package/dist/cjs/utils/getOptionsFilled.js +6 -3
  14. package/dist/cjs/utils/getOptionsFilled.js.map +1 -1
  15. package/dist/cjs/utils/getOptionsFilled.native.js +16 -5
  16. package/dist/cjs/utils/getOptionsFilled.native.js.map +2 -2
  17. package/dist/cjs/vendor/createExpoServer.js +16 -4
  18. package/dist/cjs/vendor/createExpoServer.js.map +1 -1
  19. package/dist/cjs/vendor/createExpoServer.native.js +148 -4
  20. package/dist/cjs/vendor/createExpoServer.native.js.map +2 -2
  21. package/dist/esm/create.js +655 -0
  22. package/dist/esm/create.js.map +6 -0
  23. package/dist/esm/create.mjs +622 -0
  24. package/dist/esm/create.native.js +1309 -0
  25. package/dist/esm/create.native.js.map +6 -0
  26. package/dist/esm/exports/dev.js +3 -5
  27. package/dist/esm/exports/dev.js.map +1 -1
  28. package/dist/esm/exports/dev.mjs +3 -5
  29. package/dist/esm/exports/dev.native.js +3 -5
  30. package/dist/esm/exports/dev.native.js.map +1 -1
  31. package/dist/esm/getVitePath.js +28 -0
  32. package/dist/esm/getVitePath.js.map +6 -0
  33. package/dist/esm/getVitePath.mjs +21 -0
  34. package/dist/esm/getVitePath.native.js +170 -0
  35. package/dist/esm/getVitePath.native.js.map +6 -0
  36. package/dist/esm/utils/getOptionsFilled.js +6 -2
  37. package/dist/esm/utils/getOptionsFilled.js.map +1 -1
  38. package/dist/esm/utils/getOptionsFilled.mjs +8 -3
  39. package/dist/esm/utils/getOptionsFilled.native.js +16 -4
  40. package/dist/esm/utils/getOptionsFilled.native.js.map +2 -2
  41. package/dist/esm/vendor/createExpoServer.js +16 -3
  42. package/dist/esm/vendor/createExpoServer.js.map +1 -1
  43. package/dist/esm/vendor/createExpoServer.mjs +16 -3
  44. package/dist/esm/vendor/createExpoServer.native.js +148 -3
  45. package/dist/esm/vendor/createExpoServer.native.js.map +2 -2
  46. package/package.json +8 -8
  47. package/src/exports/dev.ts +2 -7
  48. package/src/utils/getOptionsFilled.ts +10 -3
  49. package/src/vendor/createExpoServer.ts +21 -5
  50. package/types/vendor/createExpoServer.d.ts +3 -2
@@ -1,7 +1,8 @@
1
1
  import { join } from "node:path";
2
2
  import { readPackageJSON } from "pkg-types";
3
- import { createRequire } from "module";
3
+ import { createRequire } from "node:module";
4
4
  import FSExtra from "fs-extra";
5
+ import { getPort } from "get-port-please";
5
6
  function _array_like_to_array(arr, len) {
6
7
  (len == null || len > arr.length) && (len = arr.length);
7
8
  for (var i = 0, arr2 = new Array(len); i < len; i++)
@@ -204,11 +205,22 @@ function getOptionsFilled(options) {
204
205
  }
205
206
  function _getOptionsFilled() {
206
207
  return _getOptionsFilled = _async_to_generator(function(options) {
207
- var _options_host, host, _options_root, root, _options_port, port, packageRootDir, cacheDir, internalPatchesDir, userPatchesDir, _ref, state, packageJSON;
208
+ var _options_host, host, _options_root, root, defaultPort, port, packageRootDir, cacheDir, internalPatchesDir, userPatchesDir, _ref, state, packageJSON;
208
209
  return _ts_generator(this, function(_state) {
209
210
  switch (_state.label) {
210
211
  case 0:
211
- return _options_host = options.host, host = _options_host === void 0 ? "127.0.0.1" : _options_host, _options_root = options.root, root = _options_root === void 0 ? process.cwd() : _options_root, _options_port = options.port, port = _options_port === void 0 ? 8081 : _options_port, packageRootDir = join(require2.resolve("vxrn"), "../../.."), cacheDir = join(root, "node_modules", ".cache", "vxrn"), internalPatchesDir = join(packageRootDir, "patches"), userPatchesDir = join(root, "patches"), [
212
+ return _options_host = options.host, host = _options_host === void 0 ? "127.0.0.1" : _options_host, _options_root = options.root, root = _options_root === void 0 ? process.cwd() : _options_root, defaultPort = options.port || 8081, [
213
+ 4,
214
+ getPort({
215
+ port: defaultPort,
216
+ portRange: [
217
+ defaultPort,
218
+ defaultPort + 1e3
219
+ ]
220
+ })
221
+ ];
222
+ case 1:
223
+ return port = _state.sent(), packageRootDir = join(require2.resolve("vxrn"), "../../.."), cacheDir = join(root, "node_modules", ".cache", "vxrn"), internalPatchesDir = join(packageRootDir, "patches"), userPatchesDir = join(root, "patches"), [
212
224
  4,
213
225
  Promise.all([
214
226
  //
@@ -216,7 +228,7 @@ function _getOptionsFilled() {
216
228
  readPackageJSON()
217
229
  ])
218
230
  ];
219
- case 1:
231
+ case 2:
220
232
  return _ref = _sliced_to_array.apply(void 0, [
221
233
  _state.sent(),
222
234
  2
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/utils/Users/n8/vxrn/packages/vxrn/src/utils/getOptionsFilled.ts"],
4
- "mappings": "AAAA,SAASA,YAAY;AACrB,SAASC,uBAAuB;AAChC,SAASC,qBAAqB;AAC9B,OAAOC,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGpB,IAAMC,WAAUF,cAAc,YAAYG,GAAG;AAI7C,SAAsBC,iBAAiBC,SAAmB;SAApCD,kBAAAA,MAAAA,MAAAA,SAAAA;;SAAAA,oBAAAA;AAAAA,6BAAf,oBAAA,SAAgCC,SAAmB;uBAChDC,MAAAA,eAAoBC,MAAAA,eAAsBC,MAE5CC,gBAEAC,UACAC,oBACAC,gBACuB,MAAtBC,OAAOC;;;;iCAPoDT,QAA1DC,MAAAA,OAAAA,kBAAAA,SAAO,cAAA,eAAA,gBAAmDD,QAAtCE,MAAAA,OAAAA,kBAAAA,SAAOQ,QAAQC,IAAG,IAAA,eAAA,gBAAoBX,QAAhBG,MAAAA,OAAAA,kBAAAA,SAAO,OAAA,eAEnDC,iBAAiBX,KAAKI,SAAQe,QAAQ,MAAA,GAAS,UAAA,GAE/CP,WAAWZ,KAAKS,MAAM,gBAAgB,UAAU,MAAA,GAChDI,qBAAqBb,KAAKW,gBAAgB,SAAA,GAC1CG,iBAAiBd,KAAKS,MAAM,SAAA,GACL;;YAAMW,QAAQC,IAAG;;cAE5CC,UAAUV,QAAAA;cACVX,gBAAAA;;;;AAH2B,wBAAA,iBAAA,MAAA,QAAA;YAAA,OAAA,KAAA;;cAAtBc,QAAsB,KAAA,CAAA,GAAfC,cAAe,KAAA,CAAA,GAK7B;;YAAO,qBAAA,eAAA,CAAA,GACFT,OAAAA,GAAAA;cACHS;cACAD;cACAJ;cACAC;cACAE;cACAD;cACAL;cACAC;cACAC;;;;;EAEJ,CAAA,GAzBsBJ,kBAAAA,MAAAA,MAAAA,SAAAA;;SA+BPgB,UAAUV,UAAgB;SAA1BU,WAAAA,MAAAA,MAAAA,SAAAA;;SAAAA,aAAAA;AAAAA,sBAAf,oBAAA,SAAyBV,UAAgB;QACjCW,WACAR,OAAAA;;;;AADAQ,6BAAYvB,KAAKY,UAAU,YAAA,GACX;;YAAMT,QAAQqB,WAAWD,SAAAA;;;iBAAzB,OAAA,KAAA,IAClB;;YAAMpB,QAAQsB,SAASF,SAAAA;cADL;;;;;wBAClB,OAAA,KAAA;;;;;iBACA,CAAC;;AAFCR,yBAAAA,MAGN;;YAAOA;;;;EACT,CAAA,GANeO,WAAAA,MAAAA,MAAAA,SAAAA;;",
5
- "names": ["join", "readPackageJSON", "createRequire", "FSExtra", "require", "url", "getOptionsFilled", "options", "host", "root", "port", "packageRootDir", "cacheDir", "internalPatchesDir", "userPatchesDir", "state", "packageJSON", "process", "cwd", "resolve", "Promise", "all", "readState", "statePath", "pathExists", "readJSON"]
4
+ "mappings": "AAAA,SAASA,YAAY;AACrB,SAASC,uBAAuB;AAChC,SAASC,qBAAqB;AAC9B,OAAOC,aAAa;AAEpB,SAASC,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAExB,IAAMC,WAAUH,cAAc,YAAYI,GAAG;AAI7C,SAAsBC,iBAAiBC,SAAmB;SAApCD,kBAAAA,MAAAA,MAAAA,SAAAA;;SAAAA,oBAAAA;AAAAA,6BAAf,oBAAA,SAAgCC,SAAmB;uBAChDC,MAAAA,eAAoBC,MAEtBC,aACAC,MAKAC,gBAEAC,UACAC,oBACAC,gBACuB,MAAtBC,OAAOC;;;;iCAbuCV,QAA7CC,MAAAA,OAAAA,kBAAAA,SAAO,cAAA,eAAA,gBAAsCD,QAAzBE,MAAAA,OAAAA,kBAAAA,SAAOS,QAAQC,IAAG,IAAA,eAExCT,cAAcH,QAAQI,QAAQ,MACvB;;YAAMR,QAAQ;cACzBQ,MAAMD;cACNU,WAAS;gBAAGV;gBAAaA,cAAc;;YACzC,CAAA;;;AAHMC,wBAAO,OAAA,KAAA,GAKPC,iBAAiBb,KAAKK,SAAQiB,QAAQ,MAAA,GAAS,UAAA,GAE/CR,WAAWd,KAAKU,MAAM,gBAAgB,UAAU,MAAA,GAChDK,qBAAqBf,KAAKa,gBAAgB,SAAA,GAC1CG,iBAAiBhB,KAAKU,MAAM,SAAA,GACL;;YAAMa,QAAQC,IAAG;;cAE5CC,UAAUX,QAAAA;cACVb,gBAAAA;;;;AAH2B,wBAAA,iBAAA,MAAA,QAAA;YAAA,OAAA,KAAA;;cAAtBgB,QAAsB,KAAA,CAAA,GAAfC,cAAe,KAAA,CAAA,GAK7B;;YAAO,qBAAA,eAAA,CAAA,GACFV,OAAAA,GAAAA;cACHU;cACAD;cACAJ;cACAC;cACAE;cACAD;cACAN;cACAC;cACAE;;;;;EAEJ,CAAA,GA/BsBL,kBAAAA,MAAAA,MAAAA,SAAAA;;SAqCPkB,UAAUX,UAAgB;SAA1BW,WAAAA,MAAAA,MAAAA,SAAAA;;SAAAA,aAAAA;AAAAA,sBAAf,oBAAA,SAAyBX,UAAgB;QACjCY,WACAT,OAAAA;;;;AADAS,6BAAY1B,KAAKc,UAAU,YAAA,GACX;;YAAMX,QAAQwB,WAAWD,SAAAA;;;iBAAzB,OAAA,KAAA,IAClB;;YAAMvB,QAAQyB,SAASF,SAAAA;cADL;;;;;wBAClB,OAAA,KAAA;;;;;iBACA,CAAC;;AAFCT,yBAAAA,MAGN;;YAAOA;;;;EACT,CAAA,GANeQ,WAAAA,MAAAA,MAAAA,SAAAA;;",
5
+ "names": ["join", "readPackageJSON", "createRequire", "FSExtra", "getPort", "require", "url", "getOptionsFilled", "options", "host", "root", "defaultPort", "port", "packageRootDir", "cacheDir", "internalPatchesDir", "userPatchesDir", "state", "packageJSON", "process", "cwd", "portRange", "resolve", "Promise", "all", "readState", "statePath", "pathExists", "readJSON"]
6
6
  }
@@ -1,9 +1,22 @@
1
1
  import { sync as globSync } from "glob";
2
+ import { defineEventHandler } from "h3";
2
3
  import { join } from "node:path";
3
4
  import { createRoutesManifest } from "@vxrn/expo-router/routes-manifest";
4
- function createExpoServer(root, app) {
5
- const routePaths = getRoutePaths(join(root, "app")), manifest = createRoutesManifest(routePaths);
6
- console.info("manifest", manifest);
5
+ function createExpoServer(root, app, vite) {
6
+ const routePaths = getRoutePaths(join(root, "app")), apiRoutesMap = createRoutesManifest(routePaths).apiRoutes.reduce((acc, cur) => (acc[cur.page] = cur, acc), {});
7
+ app.use(
8
+ defineEventHandler(async ({ node: { req } }) => {
9
+ const matched = apiRoutesMap[req.url];
10
+ if (!matched)
11
+ return;
12
+ const loaded = await vite.ssrLoadModule(join(root, "app", matched.file));
13
+ if (!loaded)
14
+ return;
15
+ const requestType = req.method || "GET", method = loaded[requestType];
16
+ if (method)
17
+ return method(req);
18
+ })
19
+ );
7
20
  }
8
21
  function getRoutePaths(cwd) {
9
22
  return globSync("**/*.@(ts|tsx|js|jsx)", {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/vendor/createExpoServer.ts"],
4
- "mappings": "AAAA,SAAS,QAAQ,gBAAgB;AAEjC,SAAS,YAAY;AAErB,SAAS,4BAA4B;AAI9B,SAAS,iBAAiB,MAAc,KAAU;AACvD,QAAM,aAAa,cAAc,KAAK,MAAM,KAAK,CAAC,GAC5C,WAAW,qBAAqB,UAAU;AAChD,UAAQ,KAAK,YAAY,QAAQ;AAInC;AAGO,SAAS,cAAc,KAAa;AACzC,SAAO,SAAS,yBAAyB;AAAA,IACvC;AAAA,EACF,CAAC,EAAE,IAAI,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AACxC;AAEA,SAAS,eAAe,GAAW;AACjC,SAAO,EAAE,QAAQ,OAAO,GAAG;AAC7B;",
4
+ "mappings": "AAAA,SAAS,QAAQ,gBAAgB;AACjC,SAAS,0BAAoC;AAC7C,SAAS,YAAY;AAGrB,SAAS,4BAA4B;AAK9B,SAAS,iBAAiB,MAAc,KAAU,MAAqB;AAC5E,QAAM,aAAa,cAAc,KAAK,MAAM,KAAK,CAAC,GAG5C,eAFW,qBAAqB,UAAU,EAElB,UAAU,OAAO,CAAC,KAAK,SACnD,IAAI,IAAI,IAAI,IAAI,KACT,MACN,CAAC,CAAC;AAEL,MAAI;AAAA,IACF,mBAAmB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;AAC9C,YAAM,UAAU,aAAa,IAAI,GAAG;AACpC,UAAI,CAAC;AAAS;AACd,YAAM,SAAS,MAAM,KAAK,cAAc,KAAK,MAAM,OAAO,QAAQ,IAAI,CAAC;AACvE,UAAI,CAAC;AAAQ;AACb,YAAM,cAAc,IAAI,UAAU,OAC5B,SAAS,OAAO,WAAW;AACjC,UAAK;AACL,eAAO,OAAO,GAAG;AAAA,IACnB,CAAC;AAAA,EACH;AACF;AAGO,SAAS,cAAc,KAAa;AACzC,SAAO,SAAS,yBAAyB;AAAA,IACvC;AAAA,EACF,CAAC,EAAE,IAAI,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AACxC;AAEA,SAAS,eAAe,GAAW;AACjC,SAAO,EAAE,QAAQ,OAAO,GAAG;AAC7B;",
5
5
  "names": []
6
6
  }
@@ -1,10 +1,23 @@
1
1
  import { sync as globSync } from "glob";
2
+ import { defineEventHandler } from "h3";
2
3
  import { join } from "node:path";
3
4
  import { createRoutesManifest } from "@vxrn/expo-router/routes-manifest";
4
- function createExpoServer(root, app) {
5
+ function createExpoServer(root, app, vite) {
5
6
  const routePaths = getRoutePaths(join(root, "app")),
6
- manifest = createRoutesManifest(routePaths);
7
- console.info("manifest", manifest);
7
+ apiRoutesMap = createRoutesManifest(routePaths).apiRoutes.reduce((acc, cur) => (acc[cur.page] = cur, acc), {});
8
+ app.use(defineEventHandler(async ({
9
+ node: {
10
+ req
11
+ }
12
+ }) => {
13
+ const matched = apiRoutesMap[req.url];
14
+ if (!matched) return;
15
+ const loaded = await vite.ssrLoadModule(join(root, "app", matched.file));
16
+ if (!loaded) return;
17
+ const requestType = req.method || "GET",
18
+ method = loaded[requestType];
19
+ if (method) return method(req);
20
+ }));
8
21
  }
9
22
  function getRoutePaths(cwd) {
10
23
  return globSync("**/*.@(ts|tsx|js|jsx)", {
@@ -1,9 +1,154 @@
1
1
  import { sync as globSync } from "glob";
2
+ import { defineEventHandler } from "h3";
2
3
  import { join } from "node:path";
3
4
  import { createRoutesManifest } from "@vxrn/expo-router/routes-manifest";
4
- function createExpoServer(root, app) {
5
- var routePaths = getRoutePaths(join(root, "app")), manifest = createRoutesManifest(routePaths);
6
- console.info("manifest", manifest);
5
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
6
+ try {
7
+ var info = gen[key](arg), value = info.value;
8
+ } catch (error) {
9
+ reject(error);
10
+ return;
11
+ }
12
+ info.done ? resolve(value) : Promise.resolve(value).then(_next, _throw);
13
+ }
14
+ function _async_to_generator(fn) {
15
+ return function() {
16
+ var self = this, args = arguments;
17
+ return new Promise(function(resolve, reject) {
18
+ var gen = fn.apply(self, args);
19
+ function _next(value) {
20
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
21
+ }
22
+ function _throw(err) {
23
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
24
+ }
25
+ _next(void 0);
26
+ });
27
+ };
28
+ }
29
+ function _ts_generator(thisArg, body) {
30
+ var f, y, t, g, _ = {
31
+ label: 0,
32
+ sent: function() {
33
+ if (t[0] & 1)
34
+ throw t[1];
35
+ return t[1];
36
+ },
37
+ trys: [],
38
+ ops: []
39
+ };
40
+ return g = {
41
+ next: verb(0),
42
+ throw: verb(1),
43
+ return: verb(2)
44
+ }, typeof Symbol == "function" && (g[Symbol.iterator] = function() {
45
+ return this;
46
+ }), g;
47
+ function verb(n) {
48
+ return function(v) {
49
+ return step([
50
+ n,
51
+ v
52
+ ]);
53
+ };
54
+ }
55
+ function step(op) {
56
+ if (f)
57
+ throw new TypeError("Generator is already executing.");
58
+ for (; _; )
59
+ try {
60
+ if (f = 1, y && (t = op[0] & 2 ? y.return : op[0] ? y.throw || ((t = y.return) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
61
+ return t;
62
+ switch (y = 0, t && (op = [
63
+ op[0] & 2,
64
+ t.value
65
+ ]), op[0]) {
66
+ case 0:
67
+ case 1:
68
+ t = op;
69
+ break;
70
+ case 4:
71
+ return _.label++, {
72
+ value: op[1],
73
+ done: !1
74
+ };
75
+ case 5:
76
+ _.label++, y = op[1], op = [
77
+ 0
78
+ ];
79
+ continue;
80
+ case 7:
81
+ op = _.ops.pop(), _.trys.pop();
82
+ continue;
83
+ default:
84
+ if (t = _.trys, !(t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
85
+ _ = 0;
86
+ continue;
87
+ }
88
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
89
+ _.label = op[1];
90
+ break;
91
+ }
92
+ if (op[0] === 6 && _.label < t[1]) {
93
+ _.label = t[1], t = op;
94
+ break;
95
+ }
96
+ if (t && _.label < t[2]) {
97
+ _.label = t[2], _.ops.push(op);
98
+ break;
99
+ }
100
+ t[2] && _.ops.pop(), _.trys.pop();
101
+ continue;
102
+ }
103
+ op = body.call(thisArg, _);
104
+ } catch (e) {
105
+ op = [
106
+ 6,
107
+ e
108
+ ], y = 0;
109
+ } finally {
110
+ f = t = 0;
111
+ }
112
+ if (op[0] & 5)
113
+ throw op[1];
114
+ return {
115
+ value: op[0] ? op[1] : void 0,
116
+ done: !0
117
+ };
118
+ }
119
+ }
120
+ function createExpoServer(root, app, vite) {
121
+ var routePaths = getRoutePaths(join(root, "app")), manifest = createRoutesManifest(routePaths), apiRoutesMap = manifest.apiRoutes.reduce(function(acc, cur) {
122
+ return acc[cur.page] = cur, acc;
123
+ }, {});
124
+ app.use(defineEventHandler(function() {
125
+ var _ref = _async_to_generator(function(param) {
126
+ var req, matched, loaded, requestType, method;
127
+ return _ts_generator(this, function(_state) {
128
+ switch (_state.label) {
129
+ case 0:
130
+ return req = param.node.req, matched = apiRoutesMap[req.url], matched ? [
131
+ 4,
132
+ vite.ssrLoadModule(join(root, "app", matched.file))
133
+ ] : [
134
+ 2
135
+ ];
136
+ case 1:
137
+ return loaded = _state.sent(), loaded ? (requestType = req.method || "GET", method = loaded[requestType], method ? [
138
+ 2,
139
+ method(req)
140
+ ] : [
141
+ 2
142
+ ]) : [
143
+ 2
144
+ ];
145
+ }
146
+ });
147
+ });
148
+ return function(_) {
149
+ return _ref.apply(this, arguments);
150
+ };
151
+ }()));
7
152
  }
8
153
  function getRoutePaths(cwd) {
9
154
  return globSync("**/*.@(ts|tsx|js|jsx)", {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/vendor/Users/n8/vxrn/packages/vxrn/src/vendor/createExpoServer.ts"],
4
- "mappings": "AAAA,SAASA,QAAQC,gBAAgB;AAEjC,SAASC,YAAY;AAErB,SAASC,4BAA4B;AAI9B,SAASC,iBAAiBC,MAAcC,KAAQ;AACrD,MAAMC,aAAaC,cAAcN,KAAKG,MAAM,KAAA,CAAA,GACtCI,WAAWN,qBAAqBI,UAAAA;AACtCG,UAAQC,KAAK,YAAYF,QAAAA;AAI3B;AAGO,SAASD,cAAcI,KAAW;AACvC,SAAOX,SAAS,yBAAyB;IACvCW;EACF,CAAA,EAAGC,IAAI,SAACC,GAAAA;WAAM,OAAOC,eAAeD,CAAAA;;AACtC;AAEA,SAASC,eAAeD,GAAS;AAC/B,SAAOA,EAAEE,QAAQ,OAAO,GAAA;AAC1B;",
5
- "names": ["sync", "globSync", "join", "createRoutesManifest", "createExpoServer", "root", "app", "routePaths", "getRoutePaths", "manifest", "console", "info", "cwd", "map", "p", "normalizePaths", "replace"]
4
+ "mappings": "AAAA,SAASA,QAAQC,gBAAgB;AACjC,SAASC,0BAAoC;AAC7C,SAASC,YAAY;AAGrB,SAASC,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAK9B,SAASC,iBAAiBC,MAAcC,KAAUC,MAAmB;AAC1E,MAAMC,aAAaC,cAAcP,KAAKG,MAAM,KAAA,CAAA,GACtCK,WAAWP,qBAAqBK,UAAAA,GAEhCG,eAAeD,SAASE,UAAUC,OAAO,SAACC,KAAKC,KAAAA;AACnDD,eAAIC,IAAIC,IAAI,IAAID,KACTD;EACT,GAAG,CAAC,CAAA;AAEJR,MAAIW,IACFhB,mBAAAA,WAAAA;eAAmB,oBAAA,SAAA,OAAA;UAAiBiB,KAC5BC,SAEAC,QAEAC,aACAC;;;;AAJN,mBAFkCJ,MAAAA,MAARK,KAAQL,KAC5BC,UAAUR,aAAaO,IAAIM,GAAG,GAC/BL,UACU;;cAAMZ,KAAKkB,cAAcvB,KAAKG,MAAM,OAAOc,QAAQO,IAAI,CAAA;gBADxD;;;;AAEd,mBADMN,SAAS,OAAA,KAAA,GACVA,UACCC,cAAcH,IAAII,UAAU,OAC5BA,SAASF,OAAOC,WAAAA,GACjBC,SACL;;cAAOA,OAAOJ,GAAAA;gBADD;;iBAHA;;;;;IAKf,CAAA;;;;;AAEJ;AAGO,SAAST,cAAckB,KAAW;AACvC,SAAO3B,SAAS,yBAAyB;IACvC2B;EACF,CAAA,EAAGC,IAAI,SAACC,GAAAA;WAAM,OAAOC,eAAeD,CAAAA;;AACtC;AAEA,SAASC,eAAeD,GAAS;AAC/B,SAAOA,EAAEE,QAAQ,OAAO,GAAA;AAC1B;",
5
+ "names": ["sync", "globSync", "defineEventHandler", "join", "createRoutesManifest", "createExpoServer", "root", "app", "vite", "routePaths", "getRoutePaths", "manifest", "apiRoutesMap", "apiRoutes", "reduce", "acc", "cur", "page", "use", "req", "matched", "loaded", "requestType", "method", "node", "url", "ssrLoadModule", "file", "cwd", "map", "p", "normalizePaths", "replace"]
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vxrn",
3
- "version": "0.1.28",
3
+ "version": "0.1.30",
4
4
  "source": "src/index.ts",
5
5
  "types": "./types/index.d.ts",
6
6
  "type": "module",
@@ -29,12 +29,12 @@
29
29
  "@babel/code-frame": "^7.21.4",
30
30
  "@vitejs/plugin-react": "^4.2.1",
31
31
  "@vitejs/plugin-react-swc": "^3.6.0",
32
- "@vxrn/expo-router": "0.1.28",
33
- "@vxrn/react-native-prebuilt": "0.1.28",
34
- "@vxrn/vite-flow": "0.1.28",
35
- "@vxrn/vite-native-client": "0.1.28",
36
- "@vxrn/vite-native-hmr": "0.1.28",
37
- "@vxrn/vite-native-swc": "0.1.28",
32
+ "@vxrn/expo-router": "0.1.30",
33
+ "@vxrn/react-native-prebuilt": "0.1.30",
34
+ "@vxrn/vite-flow": "0.1.30",
35
+ "@vxrn/vite-native-client": "0.1.30",
36
+ "@vxrn/vite-native-hmr": "0.1.30",
37
+ "@vxrn/vite-native-swc": "0.1.30",
38
38
  "chalk": "^5.3.0",
39
39
  "citty": "^0.1.6",
40
40
  "crossws": "^0.2.4",
@@ -45,7 +45,7 @@
45
45
  "fast-glob": "^3.2.11",
46
46
  "find-node-modules": "^2.1.3",
47
47
  "fs-extra": "^11.2.0",
48
- "get-port": "^7.1.0",
48
+ "get-port-please": "^3.1.2",
49
49
  "glob": "^10.3.12",
50
50
  "h3": "^1.11.1",
51
51
  "h3-proxy": "^1.12.0",
@@ -249,7 +249,7 @@ export const dev = async (optionsIn: VXRNConfig) => {
249
249
  },
250
250
  })
251
251
 
252
- createExpoServer(root, app)
252
+ createExpoServer(root, app, viteServer)
253
253
 
254
254
  router.get(
255
255
  '/file',
@@ -304,11 +304,6 @@ export const dev = async (optionsIn: VXRNConfig) => {
304
304
  const clients = new Set<Peer>()
305
305
  const socket = new WebSocket(`ws://localhost:${vitePort}/__vxrnhmr`, 'vite-hmr')
306
306
 
307
- console.info(`connecting to vite...`)
308
- socket.on('open', () => {
309
- console.info('...connected to vite!')
310
- })
311
-
312
307
  socket.on('message', (msg) => {
313
308
  const message = msg.toString()
314
309
  console.info(clients.size, 'message', message)
@@ -319,7 +314,7 @@ export const dev = async (optionsIn: VXRNConfig) => {
319
314
  })
320
315
 
321
316
  socket.on('error', (err) => {
322
- console.info('err', err)
317
+ console.info('error bridging socket to vite', err)
323
318
  })
324
319
 
325
320
  // vite hmr:
@@ -1,16 +1,23 @@
1
1
  import { join } from 'node:path'
2
2
  import { readPackageJSON } from 'pkg-types'
3
- import { createRequire } from 'module'
3
+ import { createRequire } from 'node:module'
4
4
  import FSExtra from 'fs-extra'
5
5
  import type { VXRNConfig } from '../types'
6
+ import { getPort } from 'get-port-please'
6
7
 
7
8
  const require = createRequire(import.meta.url)
8
9
 
9
10
  export type VXRNConfigFilled = Awaited<ReturnType<typeof getOptionsFilled>>
10
11
 
11
12
  export async function getOptionsFilled(options: VXRNConfig) {
12
- const { host = '127.0.0.1', root = process.cwd(), port = 8081 } = options
13
-
13
+ const { host = '127.0.0.1', root = process.cwd() } = options
14
+
15
+ const defaultPort = options.port || 8081
16
+ const port = await getPort({
17
+ port: defaultPort,
18
+ portRange: [defaultPort, defaultPort + 1000],
19
+ })
20
+
14
21
  const packageRootDir = join(require.resolve('vxrn'), '../../..')
15
22
 
16
23
  const cacheDir = join(root, 'node_modules', '.cache', 'vxrn')
@@ -1,18 +1,34 @@
1
1
  import { sync as globSync } from 'glob'
2
- import type { App } from 'h3'
2
+ import { defineEventHandler, type App } from 'h3'
3
3
  import { join } from 'node:path'
4
+
4
5
  // @ts-ignore
5
6
  import { createRoutesManifest } from '@vxrn/expo-router/routes-manifest'
7
+ import type { ViteDevServer } from 'vite'
6
8
 
7
9
  // TODO move out
8
10
 
9
- export function createExpoServer(root: string, app: App) {
11
+ export function createExpoServer(root: string, app: App, vite: ViteDevServer) {
10
12
  const routePaths = getRoutePaths(join(root, 'app'))
11
13
  const manifest = createRoutesManifest(routePaths)
12
- console.info('manifest', manifest)
13
14
 
14
- // TODO create serve the api routes
15
- // see github/expo/packages/@expo/cli/src/start/server/metro/MetroBundlerDevServer.ts
15
+ const apiRoutesMap = manifest.apiRoutes.reduce((acc, cur) => {
16
+ acc[cur.page] = cur
17
+ return acc
18
+ }, {})
19
+
20
+ app.use(
21
+ defineEventHandler(async ({ node: { req } }) => {
22
+ const matched = apiRoutesMap[req.url]
23
+ if (!matched) return
24
+ const loaded = await vite.ssrLoadModule(join(root, 'app', matched.file))
25
+ if (!loaded) return
26
+ const requestType = req.method || 'GET'
27
+ const method = loaded[requestType]
28
+ if (!method) return
29
+ return method(req)
30
+ })
31
+ )
16
32
  }
17
33
 
18
34
  // Used to emulate a context module, but way faster. TODO: May need to adjust the extensions to stay in sync with Metro.
@@ -1,4 +1,5 @@
1
- import type { App } from 'h3';
2
- export declare function createExpoServer(root: string, app: App): void;
1
+ import { type App } from 'h3';
2
+ import type { ViteDevServer } from 'vite';
3
+ export declare function createExpoServer(root: string, app: App, vite: ViteDevServer): void;
3
4
  export declare function getRoutePaths(cwd: string): string[];
4
5
  //# sourceMappingURL=createExpoServer.d.ts.map