xplorajs 0.1.9 → 0.3.1

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/server.js DELETED
@@ -1,391 +0,0 @@
1
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
- try {
3
- var info = gen[key](arg);
4
- var value = info.value;
5
- } catch (error) {
6
- reject(error);
7
- return;
8
- }
9
- if (info.done) {
10
- resolve(value);
11
- } else {
12
- Promise.resolve(value).then(_next, _throw);
13
- }
14
- }
15
- function _async_to_generator(fn) {
16
- return function() {
17
- var self = this, args = arguments;
18
- return new Promise(function(resolve, reject) {
19
- var gen = fn.apply(self, args);
20
- function _next(value) {
21
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
22
- }
23
- function _throw(err) {
24
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
25
- }
26
- _next(undefined);
27
- });
28
- };
29
- }
30
- function _ts_generator(thisArg, body) {
31
- var f, y, t, _ = {
32
- label: 0,
33
- sent: function() {
34
- if (t[0] & 1) throw t[1];
35
- return t[1];
36
- },
37
- trys: [],
38
- ops: []
39
- }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
40
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() {
41
- return this;
42
- }), g;
43
- function verb(n) {
44
- return function(v) {
45
- return step([
46
- n,
47
- v
48
- ]);
49
- };
50
- }
51
- function step(op) {
52
- if (f) throw new TypeError("Generator is already executing.");
53
- while(g && (g = 0, op[0] && (_ = 0)), _)try {
54
- 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) return t;
55
- if (y = 0, t) op = [
56
- op[0] & 2,
57
- t.value
58
- ];
59
- switch(op[0]){
60
- case 0:
61
- case 1:
62
- t = op;
63
- break;
64
- case 4:
65
- _.label++;
66
- return {
67
- value: op[1],
68
- done: false
69
- };
70
- case 5:
71
- _.label++;
72
- y = op[1];
73
- op = [
74
- 0
75
- ];
76
- continue;
77
- case 7:
78
- op = _.ops.pop();
79
- _.trys.pop();
80
- continue;
81
- default:
82
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
83
- _ = 0;
84
- continue;
85
- }
86
- if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
87
- _.label = op[1];
88
- break;
89
- }
90
- if (op[0] === 6 && _.label < t[1]) {
91
- _.label = t[1];
92
- t = op;
93
- break;
94
- }
95
- if (t && _.label < t[2]) {
96
- _.label = t[2];
97
- _.ops.push(op);
98
- break;
99
- }
100
- if (t[2]) _.ops.pop();
101
- _.trys.pop();
102
- continue;
103
- }
104
- op = body.call(thisArg, _);
105
- } catch (e) {
106
- op = [
107
- 6,
108
- e
109
- ];
110
- y = 0;
111
- } finally{
112
- f = t = 0;
113
- }
114
- if (op[0] & 5) throw op[1];
115
- return {
116
- value: op[0] ? op[1] : void 0,
117
- done: true
118
- };
119
- }
120
- }
121
- import { copyFileSync, existsSync, mkdirSync } from "node:fs";
122
- import { createRequire } from "node:module";
123
- import path from "node:path";
124
- import { serve } from "bun";
125
- import { watch } from "chokidar";
126
- import fg from "fast-glob";
127
- import React from "react";
128
- import { WebSocketServer } from "ws";
129
- import { renderToStream } from "xplorajs-react";
130
- var require = createRequire(import.meta.url);
131
- var isDev = Bun.env.NODE_ENV !== "production";
132
- var __dirname = path.dirname(new URL(import.meta.url).pathname);
133
- // Preload React-Refresh Runtime (dev only)
134
- if (isDev) {
135
- var runtimeSrc = require.resolve("react-refresh/cjs/react-refresh-runtime.development.js");
136
- var runtimeDst = path.join(__dirname, "../dist/assets/react-refresh.js");
137
- if (!existsSync(runtimeDst)) {
138
- mkdirSync(path.dirname(runtimeDst), {
139
- recursive: true
140
- });
141
- copyFileSync(runtimeSrc, runtimeDst);
142
- console.log("✓ copied react-refresh runtime");
143
- }
144
- }
145
- // HMR & CSS-watch (dev only)
146
- // biome-ignore lint/suspicious/noExplicitAny: <intended>
147
- var pages = new Map();
148
- function loadPages() {
149
- return _async_to_generator(function() {
150
- var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, f, _require_cache, _require, route, abs, _, _tmp, err;
151
- return _ts_generator(this, function(_state) {
152
- switch(_state.label){
153
- case 0:
154
- pages.clear();
155
- _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
156
- _state.label = 1;
157
- case 1:
158
- _state.trys.push([
159
- 1,
160
- 7,
161
- 8,
162
- 9
163
- ]);
164
- return [
165
- 4,
166
- fg("src/pages/**/*.{ts,tsx}")
167
- ];
168
- case 2:
169
- _iterator = _state.sent()[Symbol.iterator]();
170
- _state.label = 3;
171
- case 3:
172
- if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done)) return [
173
- 3,
174
- 6
175
- ];
176
- f = _step.value;
177
- route = "/".concat(f.replace(/^src\/pages/, "").replace(/\/index\.(tsx|ts)$/, "").replace(/\.(tsx|ts)$/, ""));
178
- route = route === "/" ? "/" : route.replace(/\/+/g, "/");
179
- abs = path.join(__dirname, f);
180
- (_require = import.meta.require) === null || _require === void 0 ? true : (_require_cache = _require.cache) === null || _require_cache === void 0 ? true : delete _require_cache[abs];
181
- // biome-ignore lint/suspicious/noExplicitAny: <inteded>
182
- _ = pages.set;
183
- _tmp = [
184
- route
185
- ];
186
- return [
187
- 4,
188
- import(abs)
189
- ];
190
- case 4:
191
- _.apply(pages, _tmp.concat([
192
- _state.sent().default
193
- ]));
194
- _state.label = 5;
195
- case 5:
196
- _iteratorNormalCompletion = true;
197
- return [
198
- 3,
199
- 3
200
- ];
201
- case 6:
202
- return [
203
- 3,
204
- 9
205
- ];
206
- case 7:
207
- err = _state.sent();
208
- _didIteratorError = true;
209
- _iteratorError = err;
210
- return [
211
- 3,
212
- 9
213
- ];
214
- case 8:
215
- try {
216
- if (!_iteratorNormalCompletion && _iterator.return != null) {
217
- _iterator.return();
218
- }
219
- } finally{
220
- if (_didIteratorError) {
221
- throw _iteratorError;
222
- }
223
- }
224
- return [
225
- 7
226
- ];
227
- case 9:
228
- return [
229
- 2
230
- ];
231
- }
232
- });
233
- })();
234
- }
235
- await loadPages();
236
- var wss;
237
- if (isDev) {
238
- wss = new WebSocketServer({
239
- port: 4000
240
- });
241
- var broadcast = function(m) {
242
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
243
- try {
244
- for(var _iterator = wss.clients[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
245
- var client = _step.value;
246
- client.send(m);
247
- }
248
- } catch (err) {
249
- _didIteratorError = true;
250
- _iteratorError = err;
251
- } finally{
252
- try {
253
- if (!_iteratorNormalCompletion && _iterator.return != null) {
254
- _iterator.return();
255
- }
256
- } finally{
257
- if (_didIteratorError) {
258
- throw _iteratorError;
259
- }
260
- }
261
- }
262
- };
263
- watch("src/pages").on("change", function(p) {
264
- return _async_to_generator(function() {
265
- return _ts_generator(this, function(_state) {
266
- switch(_state.label){
267
- case 0:
268
- return [
269
- 4,
270
- loadPages()
271
- ];
272
- case 1:
273
- _state.sent();
274
- broadcast("refresh");
275
- console.log("🔄 Page", p);
276
- return [
277
- 2
278
- ];
279
- }
280
- });
281
- })();
282
- });
283
- watch("dist/assets/style.css").on("change", function() {
284
- broadcast("css");
285
- console.log("🔄 CSS");
286
- });
287
- }
288
- // HTTP server
289
- serve({
290
- port: Number(Bun.env.PORT || 3000),
291
- fetch: function fetch(req) {
292
- return _async_to_generator(function() {
293
- var url, f, Page, stream, head, foot;
294
- return _ts_generator(this, function(_state) {
295
- switch(_state.label){
296
- case 0:
297
- url = new URL(req.url).pathname;
298
- if (!url.startsWith("/assets/")) return [
299
- 3,
300
- 2
301
- ];
302
- f = Bun.file(path.join(__dirname, "../dist", url));
303
- return [
304
- 4,
305
- f.exists()
306
- ];
307
- case 1:
308
- if (_state.sent()) return [
309
- 2,
310
- new Response(f)
311
- ];
312
- _state.label = 2;
313
- case 2:
314
- if (isDev && url === "/react-refresh.js") {
315
- return [
316
- 2,
317
- new Response(Bun.file(path.join(__dirname, "../dist/assets/react-refresh.js")))
318
- ];
319
- }
320
- Page = pages.get(url);
321
- if (!Page) return [
322
- 2,
323
- new Response("Not Found", {
324
- status: 404
325
- })
326
- ];
327
- return [
328
- 4,
329
- renderToStream(React.createElement(Page))
330
- ];
331
- case 3:
332
- stream = _state.sent();
333
- head = '<!DOCTYPE html><html><head><meta charset="utf-8"/><link rel="stylesheet" href="/assets/style.css"/>'.concat(isDev ? '<script>/* shim for process.env */window.process={env:{NODE_ENV:"development"}};</script>' : "", '</head><body><div id="root">');
334
- foot = "</div>";
335
- if (isDev) {
336
- foot += '\n<script type="module">\n import * as RefreshRuntime from "/react-refresh.js";\n RefreshRuntime.injectIntoGlobalHook(window);\n window.$RefreshReg$ = ()=>{};\n window.$RefreshSig$ = ()=>t=>t;\n</script>\n<script>\n const ws=new WebSocket("ws://localhost:4000");\n ws.onmessage=async e=>{\n if(e.data==="css"){\n document.querySelectorAll(\'link[rel="stylesheet"]\').forEach(l=>{\n l.href="/assets/style.css?v="+Date.now();\n });\n }\n if(e.data==="refresh"){\n const m=await import(window.__root.update(m.default);\n }\n };\n</script>';
337
- }
338
- foot += "</body></html>";
339
- return [
340
- 2,
341
- new Response(new ReadableStream({
342
- start: function start(ctrl) {
343
- return _async_to_generator(function() {
344
- return _ts_generator(this, function(_state) {
345
- switch(_state.label){
346
- case 0:
347
- ctrl.enqueue(new TextEncoder().encode(head));
348
- if (!(typeof stream === "string")) return [
349
- 3,
350
- 1
351
- ];
352
- ctrl.enqueue(new TextEncoder().encode(stream));
353
- return [
354
- 3,
355
- 3
356
- ];
357
- case 1:
358
- return [
359
- 4,
360
- stream.pipeTo(new WritableStream({
361
- write: function write(c) {
362
- ctrl.enqueue(c);
363
- },
364
- close: function close() {
365
- ctrl.enqueue(new TextEncoder().encode(foot));
366
- ctrl.close();
367
- }
368
- }))
369
- ];
370
- case 2:
371
- _state.sent();
372
- _state.label = 3;
373
- case 3:
374
- return [
375
- 2
376
- ];
377
- }
378
- });
379
- })();
380
- }
381
- }), {
382
- headers: {
383
- "Content-Type": "text/html; charset=utf-8"
384
- }
385
- })
386
- ];
387
- }
388
- });
389
- })();
390
- }
391
- });