xplorajs 0.0.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.
@@ -0,0 +1,400 @@
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 { readFileSync } from "node:fs";
122
+ import { join } from "node:path";
123
+ import { serve } from "bun";
124
+ import { watch } from "chokidar";
125
+ import React from "react";
126
+ import { WebSocketServer } from "ws";
127
+ import { renderToStream } from "xplora-react";
128
+ import { build } from "./build";
129
+ // biome-ignore lint/suspicious/noExplicitAny: <intended>
130
+ var pages = new Map();
131
+ function loadPages() {
132
+ return _async_to_generator(function() {
133
+ var routes, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, route, _require_cache, _require, abs, _, _tmp, err;
134
+ return _ts_generator(this, function(_state) {
135
+ switch(_state.label){
136
+ case 0:
137
+ pages.clear();
138
+ return [
139
+ 4,
140
+ loadRoutes()
141
+ ];
142
+ case 1:
143
+ routes = _state.sent();
144
+ _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
145
+ _state.label = 2;
146
+ case 2:
147
+ _state.trys.push([
148
+ 2,
149
+ 7,
150
+ 8,
151
+ 9
152
+ ]);
153
+ _iterator = routes[Symbol.iterator]();
154
+ _state.label = 3;
155
+ case 3:
156
+ if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done)) return [
157
+ 3,
158
+ 6
159
+ ];
160
+ route = _step.value;
161
+ abs = join(process.cwd(), route.file);
162
+ (_require = import.meta.require) === null || _require === void 0 ? true : (_require_cache = _require.cache) === null || _require_cache === void 0 ? true : delete _require_cache[abs];
163
+ // biome-ignore lint/suspicious/noExplicitAny: <intended>
164
+ _ = pages.set;
165
+ _tmp = [
166
+ route.path
167
+ ];
168
+ return [
169
+ 4,
170
+ import(abs)
171
+ ];
172
+ case 4:
173
+ _.apply(pages, _tmp.concat([
174
+ _state.sent().default
175
+ ]));
176
+ _state.label = 5;
177
+ case 5:
178
+ _iteratorNormalCompletion = true;
179
+ return [
180
+ 3,
181
+ 3
182
+ ];
183
+ case 6:
184
+ return [
185
+ 3,
186
+ 9
187
+ ];
188
+ case 7:
189
+ err = _state.sent();
190
+ _didIteratorError = true;
191
+ _iteratorError = err;
192
+ return [
193
+ 3,
194
+ 9
195
+ ];
196
+ case 8:
197
+ try {
198
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
199
+ _iterator.return();
200
+ }
201
+ } finally{
202
+ if (_didIteratorError) {
203
+ throw _iteratorError;
204
+ }
205
+ }
206
+ return [
207
+ 7
208
+ ];
209
+ case 9:
210
+ return [
211
+ 2
212
+ ];
213
+ }
214
+ });
215
+ })();
216
+ }
217
+ function loadRoutes() {
218
+ return _async_to_generator(function() {
219
+ var routesPath, routesContent;
220
+ return _ts_generator(this, function(_state) {
221
+ try {
222
+ routesPath = join(process.cwd(), ".xplora", "routes.json");
223
+ routesContent = readFileSync(routesPath, "utf-8");
224
+ return [
225
+ 2,
226
+ JSON.parse(routesContent).routes
227
+ ];
228
+ } catch (e) {
229
+ return [
230
+ 2,
231
+ []
232
+ ];
233
+ }
234
+ return [
235
+ 2
236
+ ];
237
+ });
238
+ })();
239
+ }
240
+ export function dev() {
241
+ return _async_to_generator(function() {
242
+ var wss, watcher;
243
+ return _ts_generator(this, function(_state) {
244
+ switch(_state.label){
245
+ case 0:
246
+ console.log("Starting development server...");
247
+ // Start WebSocket server for HMR
248
+ wss = new WebSocketServer({
249
+ port: 3001
250
+ });
251
+ // Watch for file changes
252
+ watcher = watch([
253
+ "src/**/*"
254
+ ], {
255
+ ignored: /(^|[\/\\])\../,
256
+ persistent: true
257
+ });
258
+ watcher.on("change", function(path) {
259
+ return _async_to_generator(function() {
260
+ var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, client;
261
+ return _ts_generator(this, function(_state) {
262
+ switch(_state.label){
263
+ case 0:
264
+ console.log("File ".concat(path, " has been changed"));
265
+ return [
266
+ 4,
267
+ build()
268
+ ];
269
+ case 1:
270
+ _state.sent();
271
+ return [
272
+ 4,
273
+ loadPages()
274
+ ];
275
+ case 2:
276
+ _state.sent();
277
+ _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
278
+ try {
279
+ // Notify clients about the change
280
+ for(_iterator = wss.clients[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
281
+ client = _step.value;
282
+ if (client.readyState === WebSocket.OPEN) {
283
+ client.send(JSON.stringify({
284
+ type: "reload"
285
+ }));
286
+ }
287
+ }
288
+ } catch (err) {
289
+ _didIteratorError = true;
290
+ _iteratorError = err;
291
+ } finally{
292
+ try {
293
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
294
+ _iterator.return();
295
+ }
296
+ } finally{
297
+ if (_didIteratorError) {
298
+ throw _iteratorError;
299
+ }
300
+ }
301
+ }
302
+ return [
303
+ 2
304
+ ];
305
+ }
306
+ });
307
+ })();
308
+ });
309
+ // Initial build and page load
310
+ return [
311
+ 4,
312
+ build()
313
+ ];
314
+ case 1:
315
+ _state.sent();
316
+ return [
317
+ 4,
318
+ loadPages()
319
+ ];
320
+ case 2:
321
+ _state.sent();
322
+ // Start development server
323
+ serve({
324
+ port: 3000,
325
+ fetch: function fetch(req) {
326
+ return _async_to_generator(function() {
327
+ var url, f, Page, stream, head, foot;
328
+ return _ts_generator(this, function(_state) {
329
+ switch(_state.label){
330
+ case 0:
331
+ url = new URL(req.url).pathname;
332
+ if (!url.startsWith("/assets/")) return [
333
+ 3,
334
+ 2
335
+ ];
336
+ f = Bun.file(join(process.cwd(), "dist", url));
337
+ return [
338
+ 4,
339
+ f.exists()
340
+ ];
341
+ case 1:
342
+ if (_state.sent()) return [
343
+ 2,
344
+ new Response(f)
345
+ ];
346
+ _state.label = 2;
347
+ case 2:
348
+ Page = pages.get(url);
349
+ if (!Page) return [
350
+ 2,
351
+ new Response("Not Found", {
352
+ status: 404
353
+ })
354
+ ];
355
+ return [
356
+ 4,
357
+ renderToStream(React.createElement(Page))
358
+ ];
359
+ case 3:
360
+ stream = _state.sent();
361
+ head = '<!DOCTYPE html><html><head>\n <meta charset="utf-8"/>\n <link rel="stylesheet" href="/assets/style.css"/>\n <script>window.process={env:{NODE_ENV:"development"}};</script>\n </head><body><div id="root">';
362
+ foot = '</div>\n <script type="module">\n import * as RefreshRuntime from "https://esm.sh/react-refresh@0.17.0/runtime";\n if (window.process?.env?.NODE_ENV === "development") {\n console.log("Fast refresh runtime loaded in development mode");\n }\n RefreshRuntime.injectIntoGlobalHook(window);\n window.$RefreshReg$=()=>{};\n window.$RefreshSig$=()=>t=>t;\n </script>\n <script>\n const ws=new WebSocket("ws://localhost:3001");\n ws.onmessage=async e=>{\n if(e.data==="css"){\n document.querySelectorAll(\'link[rel="stylesheet"]\').forEach(l=>l.href="/assets/style.css?v="+Date.now());\n }\n if(e.data==="reload"){\n console.log("Reloading...");\n location.reload();\n }\n };\n </script>\n </body></html>';
363
+ return [
364
+ 2,
365
+ new Response(new ReadableStream({
366
+ start: function start(ctrl) {
367
+ ctrl.enqueue(new TextEncoder().encode(head));
368
+ if (typeof stream === "string") {
369
+ ctrl.enqueue(new TextEncoder().encode(stream));
370
+ } else {
371
+ stream.pipeTo(new WritableStream({
372
+ write: function write(c) {
373
+ ctrl.enqueue(c);
374
+ },
375
+ close: function close() {
376
+ ctrl.enqueue(new TextEncoder().encode(foot));
377
+ ctrl.close();
378
+ }
379
+ }));
380
+ }
381
+ }
382
+ }), {
383
+ headers: {
384
+ "Content-Type": "text/html; charset=utf-8"
385
+ }
386
+ })
387
+ ];
388
+ }
389
+ });
390
+ })();
391
+ }
392
+ });
393
+ console.log("Development server running at http://localhost:3000");
394
+ return [
395
+ 2
396
+ ];
397
+ }
398
+ });
399
+ })();
400
+ }
@@ -0,0 +1,139 @@
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
+ export function start() {
122
+ return _async_to_generator(function() {
123
+ var server;
124
+ return _ts_generator(this, function(_state) {
125
+ console.log("Starting production server...");
126
+ server = Bun.serve({
127
+ port: 3000,
128
+ fetch: function fetch(req) {
129
+ // TODO: Implement production server logic
130
+ return new Response("Production server running...");
131
+ }
132
+ });
133
+ console.log("Production server running at http://localhost:".concat(server.port));
134
+ return [
135
+ 2
136
+ ];
137
+ });
138
+ })();
139
+ }
package/dist/dev.js ADDED
@@ -0,0 +1,21 @@
1
+ import { spawn } from "bun";
2
+ var bunBin = Bun.argv[0];
3
+ var cwd = import.meta.dir;
4
+ spawn([
5
+ bunBin,
6
+ "run",
7
+ "watch:css"
8
+ ], {
9
+ cwd: cwd,
10
+ stdout: "inherit",
11
+ stderr: "inherit"
12
+ });
13
+ spawn([
14
+ bunBin,
15
+ "run",
16
+ "serve"
17
+ ], {
18
+ cwd: cwd,
19
+ stdout: "inherit",
20
+ stderr: "inherit"
21
+ });
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ if (process.env.NODE_ENV === 'production') {
4
+ module.exports = require('./cjs/react-refresh-runtime.production.js');
5
+ } else {
6
+ module.exports = require('./cjs/react-refresh-runtime.development.js');
7
+ }
@@ -0,0 +1,7 @@
1
+ export default function Home() {
2
+ return /*#__PURE__*/ React.createElement("section", {
3
+ className: "flex h-screen items-center justify-center bg-gray-100"
4
+ }, /*#__PURE__*/ React.createElement("h1", {
5
+ className: "text-4xl font-bold text-teal-600"
6
+ }, "Halo Xplora \uD83D\uDE80"));
7
+ }