satset-react 0.0.1-beta.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.
Files changed (141) hide show
  1. package/dist/adapter/index.d.ts +4 -0
  2. package/dist/adapter/index.d.ts.map +1 -0
  3. package/dist/adapter/index.js +8 -0
  4. package/dist/adapter/index.js.map +1 -0
  5. package/dist/adapter/node.d.ts +3 -0
  6. package/dist/adapter/node.d.ts.map +1 -0
  7. package/dist/adapter/node.js +244 -0
  8. package/dist/adapter/node.js.map +1 -0
  9. package/dist/adapter/types.d.ts +24 -0
  10. package/dist/adapter/types.d.ts.map +1 -0
  11. package/dist/adapter/types.js +3 -0
  12. package/dist/adapter/types.js.map +1 -0
  13. package/dist/adapter/vercel.d.ts +3 -0
  14. package/dist/adapter/vercel.d.ts.map +1 -0
  15. package/dist/adapter/vercel.js +173 -0
  16. package/dist/adapter/vercel.js.map +1 -0
  17. package/dist/assets/favicon.d.ts +2 -0
  18. package/dist/assets/favicon.d.ts.map +1 -0
  19. package/dist/assets/favicon.js +67 -0
  20. package/dist/assets/favicon.js.map +1 -0
  21. package/dist/assets/index.d.ts +6 -0
  22. package/dist/assets/index.d.ts.map +1 -0
  23. package/dist/assets/index.js +14 -0
  24. package/dist/assets/index.js.map +1 -0
  25. package/dist/assets/metadata.d.ts +23 -0
  26. package/dist/assets/metadata.d.ts.map +1 -0
  27. package/dist/assets/metadata.js +55 -0
  28. package/dist/assets/metadata.js.map +1 -0
  29. package/dist/assets/robots.d.ts +11 -0
  30. package/dist/assets/robots.d.ts.map +1 -0
  31. package/dist/assets/robots.js +70 -0
  32. package/dist/assets/robots.js.map +1 -0
  33. package/dist/assets/sitemap.d.ts +12 -0
  34. package/dist/assets/sitemap.d.ts.map +1 -0
  35. package/dist/assets/sitemap.js +71 -0
  36. package/dist/assets/sitemap.js.map +1 -0
  37. package/dist/cli/commands.d.ts +4 -0
  38. package/dist/cli/commands.d.ts.map +1 -0
  39. package/dist/cli/commands.js +74 -0
  40. package/dist/cli/commands.js.map +1 -0
  41. package/dist/cli/index.d.ts +3 -0
  42. package/dist/cli/index.d.ts.map +1 -0
  43. package/dist/cli/index.js +32 -0
  44. package/dist/cli/index.js.map +1 -0
  45. package/dist/components/ErrorBoundary.d.ts +22 -0
  46. package/dist/components/ErrorBoundary.d.ts.map +1 -0
  47. package/dist/components/ErrorBoundary.js +56 -0
  48. package/dist/components/ErrorBoundary.js.map +1 -0
  49. package/dist/components/Image.d.ts +15 -0
  50. package/dist/components/Image.d.ts.map +1 -0
  51. package/dist/components/Image.js +65 -0
  52. package/dist/components/Image.js.map +1 -0
  53. package/dist/components/Link.d.ts +14 -0
  54. package/dist/components/Link.d.ts.map +1 -0
  55. package/dist/components/Link.js +67 -0
  56. package/dist/components/Link.js.map +1 -0
  57. package/dist/components/Script.d.ts +10 -0
  58. package/dist/components/Script.d.ts.map +1 -0
  59. package/dist/components/Script.js +60 -0
  60. package/dist/components/Script.js.map +1 -0
  61. package/dist/components/index.d.ts +5 -0
  62. package/dist/components/index.d.ts.map +1 -0
  63. package/dist/components/index.js +15 -0
  64. package/dist/components/index.js.map +1 -0
  65. package/dist/core/hydrate.d.ts +8 -0
  66. package/dist/core/hydrate.d.ts.map +1 -0
  67. package/dist/core/hydrate.js +73 -0
  68. package/dist/core/hydrate.js.map +1 -0
  69. package/dist/core/index.d.ts +8 -0
  70. package/dist/core/index.d.ts.map +1 -0
  71. package/dist/core/index.js +19 -0
  72. package/dist/core/index.js.map +1 -0
  73. package/dist/core/ssr.d.ts +28 -0
  74. package/dist/core/ssr.d.ts.map +1 -0
  75. package/dist/core/ssr.js +91 -0
  76. package/dist/core/ssr.js.map +1 -0
  77. package/dist/core/types.d.ts +24 -0
  78. package/dist/core/types.d.ts.map +1 -0
  79. package/dist/core/types.js +3 -0
  80. package/dist/core/types.js.map +1 -0
  81. package/dist/index.d.ts +8 -0
  82. package/dist/index.d.ts.map +1 -0
  83. package/dist/index.js +27 -0
  84. package/dist/index.js.map +1 -0
  85. package/dist/navigation/notFound.d.ts +2 -0
  86. package/dist/navigation/notFound.d.ts.map +1 -0
  87. package/dist/navigation/notFound.js +9 -0
  88. package/dist/navigation/notFound.js.map +1 -0
  89. package/dist/router/file-system.d.ts +19 -0
  90. package/dist/router/file-system.d.ts.map +1 -0
  91. package/dist/router/file-system.js +332 -0
  92. package/dist/router/file-system.js.map +1 -0
  93. package/dist/router/index.d.ts +4 -0
  94. package/dist/router/index.d.ts.map +1 -0
  95. package/dist/router/index.js +12 -0
  96. package/dist/router/index.js.map +1 -0
  97. package/dist/router/router.d.ts +17 -0
  98. package/dist/router/router.d.ts.map +1 -0
  99. package/dist/router/router.js +138 -0
  100. package/dist/router/router.js.map +1 -0
  101. package/dist/router/types.d.ts +11 -0
  102. package/dist/router/types.d.ts.map +1 -0
  103. package/dist/router/types.js +3 -0
  104. package/dist/router/types.js.map +1 -0
  105. package/dist/server/build.d.ts +5 -0
  106. package/dist/server/build.d.ts.map +1 -0
  107. package/dist/server/build.js +449 -0
  108. package/dist/server/build.js.map +1 -0
  109. package/dist/server/bundler.d.ts +27 -0
  110. package/dist/server/bundler.d.ts.map +1 -0
  111. package/dist/server/bundler.js +213 -0
  112. package/dist/server/bundler.js.map +1 -0
  113. package/dist/server/dev.d.ts +11 -0
  114. package/dist/server/dev.d.ts.map +1 -0
  115. package/dist/server/dev.js +1052 -0
  116. package/dist/server/dev.js.map +1 -0
  117. package/dist/server/env.d.ts +10 -0
  118. package/dist/server/env.d.ts.map +1 -0
  119. package/dist/server/env.js +102 -0
  120. package/dist/server/env.js.map +1 -0
  121. package/dist/server/error-overlay.d.ts +11 -0
  122. package/dist/server/error-overlay.d.ts.map +1 -0
  123. package/dist/server/error-overlay.js +395 -0
  124. package/dist/server/error-overlay.js.map +1 -0
  125. package/dist/server/hmr.d.ts +8 -0
  126. package/dist/server/hmr.d.ts.map +1 -0
  127. package/dist/server/hmr.js +166 -0
  128. package/dist/server/hmr.js.map +1 -0
  129. package/dist/server/index.d.ts +5 -0
  130. package/dist/server/index.d.ts.map +1 -0
  131. package/dist/server/index.js +10 -0
  132. package/dist/server/index.js.map +1 -0
  133. package/dist/server/response.d.ts +38 -0
  134. package/dist/server/response.d.ts.map +1 -0
  135. package/dist/server/response.js +142 -0
  136. package/dist/server/response.js.map +1 -0
  137. package/dist/server/types.d.ts +13 -0
  138. package/dist/server/types.d.ts.map +1 -0
  139. package/dist/server/types.js +3 -0
  140. package/dist/server/types.js.map +1 -0
  141. package/package.json +70 -0
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.startHMR = startHMR;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const ws_1 = require("ws");
10
+ const chokidar_1 = __importDefault(require("chokidar"));
11
+ function startHMR(server, root, onFileChange) {
12
+ const clients = new Set();
13
+ console.log('🔥 HMR server starting...');
14
+ // WebSocket server for HMR
15
+ const wss = new ws_1.WebSocketServer({ noServer: true });
16
+ wss.on('connection', (ws) => {
17
+ clients.add(ws);
18
+ ws.send(JSON.stringify({ type: 'connected' }));
19
+ ws.on('close', () => {
20
+ clients.delete(ws);
21
+ });
22
+ });
23
+ // Upgrade HTTP to WebSocket
24
+ server.on('upgrade', (request, socket, head) => {
25
+ if (request.url === '/__hmr_ws') {
26
+ wss.handleUpgrade(request, socket, head, (ws) => {
27
+ wss.emit('connection', ws, request);
28
+ });
29
+ }
30
+ });
31
+ // Watch src directory for changes
32
+ const srcPath = path_1.default.join(root, 'src');
33
+ if (fs_1.default.existsSync(srcPath)) {
34
+ const watcher = chokidar_1.default.watch(srcPath, {
35
+ ignored: /(^|[\/\\])\../, // ignore dotfiles
36
+ persistent: true,
37
+ ignoreInitial: true,
38
+ });
39
+ watcher.on('change', async (filePath) => {
40
+ const relativePath = path_1.default.relative(root, filePath);
41
+ console.log(`🔄 File changed: ${relativePath}`);
42
+ // Trigger rebuild
43
+ if (onFileChange) {
44
+ await onFileChange(filePath);
45
+ }
46
+ // Notify all clients
47
+ notifyClients({
48
+ type: 'update',
49
+ file: relativePath,
50
+ timestamp: Date.now(),
51
+ });
52
+ });
53
+ watcher.on('add', async (filePath) => {
54
+ const relativePath = path_1.default.relative(root, filePath);
55
+ console.log(`➕ File added: ${relativePath}`);
56
+ if (onFileChange) {
57
+ await onFileChange(filePath);
58
+ }
59
+ notifyClients({
60
+ type: 'add',
61
+ file: relativePath,
62
+ timestamp: Date.now(),
63
+ });
64
+ });
65
+ watcher.on('unlink', (filePath) => {
66
+ const relativePath = path_1.default.relative(root, filePath);
67
+ console.log(`➖ File removed: ${relativePath}`);
68
+ notifyClients({
69
+ type: 'remove',
70
+ file: relativePath,
71
+ timestamp: Date.now(),
72
+ });
73
+ });
74
+ console.log('👀 Watching for file changes...');
75
+ }
76
+ // Handle legacy SSE endpoint (fallback)
77
+ const originalEmit = server.emit.bind(server);
78
+ server.emit = function (event, ...args) {
79
+ // args may be [req, res] for 'request' or [req, socket, head] for 'upgrade'
80
+ const req = args[0];
81
+ const res = args[1];
82
+ if (event === 'request' && req && req.url === '/__hmr') {
83
+ handleLegacyHMR(req, res);
84
+ return true;
85
+ }
86
+ return originalEmit(event, ...args);
87
+ };
88
+ function handleLegacyHMR(req, res) {
89
+ res.writeHead(200, {
90
+ 'Content-Type': 'text/javascript',
91
+ 'Cache-Control': 'no-cache',
92
+ });
93
+ // Inject WebSocket client
94
+ const hmrClient = `
95
+ (function() {
96
+ const ws = new WebSocket('ws://' + location.host + '/__hmr_ws');
97
+
98
+ ws.onopen = () => {
99
+ console.log('🔥 HMR Connected');
100
+ };
101
+
102
+ ws.onmessage = (event) => {
103
+ const data = JSON.parse(event.data);
104
+
105
+ if (data.type === 'update') {
106
+ console.log('🔄 Reloading:', data.file);
107
+
108
+ // Check if CSS file
109
+ if (data.file.endsWith('.css')) {
110
+ reloadCSS();
111
+ } else {
112
+ // Full page reload for JS/JSX/TSX changes
113
+ location.reload();
114
+ }
115
+ }
116
+
117
+ if (data.type === 'add' || data.type === 'remove') {
118
+ console.log('🔄 File structure changed, reloading...');
119
+ location.reload();
120
+ }
121
+ };
122
+
123
+ ws.onerror = (error) => {
124
+ console.error('❌ HMR Error:', error);
125
+ };
126
+
127
+ ws.onclose = () => {
128
+ console.log('🔌 HMR Disconnected, retrying...');
129
+ setTimeout(() => location.reload(), 1000);
130
+ };
131
+
132
+ function reloadCSS() {
133
+ const links = document.querySelectorAll('link[rel="stylesheet"]');
134
+ links.forEach(link => {
135
+ const href = link.getAttribute('href');
136
+ if (href) {
137
+ link.setAttribute('href', href.split('?')[0] + '?t=' + Date.now());
138
+ }
139
+ });
140
+ }
141
+ })();
142
+ `;
143
+ res.end(hmrClient);
144
+ }
145
+ function notifyClients(data) {
146
+ const message = JSON.stringify(data);
147
+ clients.forEach(client => {
148
+ if (client.readyState === ws_1.WebSocket.OPEN) {
149
+ try {
150
+ client.send(message);
151
+ }
152
+ catch (e) {
153
+ clients.delete(client);
154
+ }
155
+ }
156
+ });
157
+ }
158
+ return {
159
+ clients,
160
+ notify: notifyClients,
161
+ close: () => {
162
+ wss.close();
163
+ },
164
+ };
165
+ }
166
+ //# sourceMappingURL=hmr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hmr.js","sourceRoot":"","sources":["../../src/server/hmr.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { startDevServer } from './dev';
2
+ export { build } from './build';
3
+ export { startHMR } from './hmr';
4
+ export type { ServerConfig, BuildOptions } from './types';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.startHMR = exports.build = exports.startDevServer = void 0;
4
+ var dev_1 = require("./dev");
5
+ Object.defineProperty(exports, "startDevServer", { enumerable: true, get: function () { return dev_1.startDevServer; } });
6
+ var build_1 = require("./build");
7
+ Object.defineProperty(exports, "build", { enumerable: true, get: function () { return build_1.build; } });
8
+ var hmr_1 = require("./hmr");
9
+ Object.defineProperty(exports, "startHMR", { enumerable: true, get: function () { return hmr_1.startHMR; } });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":";;;AAAA,6BAAuC;AAA9B,qGAAA,cAAc,OAAA;AACvB,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,6BAAiC;AAAxB,+FAAA,QAAQ,OAAA"}
@@ -0,0 +1,38 @@
1
+ import http from 'http';
2
+ export interface SatsetResponseInit {
3
+ status?: number;
4
+ headers?: Record<string, string>;
5
+ }
6
+ export declare class SatsetResponse {
7
+ body: any;
8
+ status: number;
9
+ headers: Record<string, string>;
10
+ constructor(body?: any, init?: SatsetResponseInit);
11
+ static json(data: any, init?: SatsetResponseInit): SatsetResponse;
12
+ static redirect(url: string, status?: number): SatsetResponse;
13
+ static rewrite(url: string): SatsetResponse;
14
+ static next(): SatsetResponse;
15
+ static isSatsetResponse(obj: any): obj is SatsetResponse;
16
+ }
17
+ export declare function readRequestBody(req: http.IncomingMessage): Promise<Buffer>;
18
+ export declare function buildSatsetRequest(req: http.IncomingMessage, baseUrl?: string): Promise<{
19
+ readonly url: string;
20
+ readonly method: string;
21
+ readonly headers: Record<string, string>;
22
+ readonly json: () => Promise<any>;
23
+ readonly text: () => Promise<string>;
24
+ readonly nodeRequest: http.IncomingMessage;
25
+ }>;
26
+ /** Cookie helper for Server Actions and other server-side code.
27
+ * Returns an object with `set(name, value, opts?)` for convenience.
28
+ * Under dev server this will attach Set-Cookie headers to the current action response
29
+ * via global.__SATSET_ACTION_RES__ which is temporarily set while invoking an action.
30
+ */
31
+ export declare function cookies(): {
32
+ set(name: string, value: string, opts?: {
33
+ path?: string;
34
+ maxAge?: number;
35
+ }): void;
36
+ };
37
+ export declare function sendSatsetResponse(nodeRes: http.ServerResponse, satRes: SatsetResponse): void;
38
+ //# sourceMappingURL=response.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/server/response.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,qBAAa,cAAc;IAClB,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAE3B,IAAI,GAAE,GAAU,EAAE,IAAI,GAAE,kBAAuB;IAM3D,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,GAAE,kBAAuB;IAKpD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAM;IAIzC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM;IAK1B,MAAM,CAAC,IAAI;IAIX,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,cAAc;CAGzD;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAOhF;AAED,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,SAAqB;;;;;;;GAkC/F;AAED;;;;GAIG;AACH,wBAAgB,OAAO;cAET,MAAM,SAAS,MAAM,SAAQ;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;EAqB5E;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,QA+BtF"}
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SatsetResponse = void 0;
4
+ exports.readRequestBody = readRequestBody;
5
+ exports.buildSatsetRequest = buildSatsetRequest;
6
+ exports.cookies = cookies;
7
+ exports.sendSatsetResponse = sendSatsetResponse;
8
+ class SatsetResponse {
9
+ constructor(body = null, init = {}) {
10
+ this.body = body;
11
+ this.status = init.status ?? (body == null ? 204 : 200);
12
+ this.headers = init.headers || {};
13
+ }
14
+ static json(data, init = {}) {
15
+ const headers = { 'Content-Type': 'application/json', ...(init.headers || {}) };
16
+ return new SatsetResponse(JSON.stringify(data), { status: init.status ?? 200, headers });
17
+ }
18
+ static redirect(url, status = 307) {
19
+ return new SatsetResponse(null, { status, headers: { Location: url } });
20
+ }
21
+ static rewrite(url) {
22
+ // Simple hint header for rewrite; server will interpret and serve the rewrite target
23
+ return new SatsetResponse(null, { status: 200, headers: { 'X-Satset-Rewrite': url } });
24
+ }
25
+ static next() {
26
+ return new SatsetResponse(null, { status: 204 });
27
+ }
28
+ static isSatsetResponse(obj) {
29
+ return obj instanceof SatsetResponse;
30
+ }
31
+ }
32
+ exports.SatsetResponse = SatsetResponse;
33
+ async function readRequestBody(req) {
34
+ return new Promise((resolve, reject) => {
35
+ const chunks = [];
36
+ req.on('data', (c) => chunks.push(c));
37
+ req.on('end', () => resolve(Buffer.concat(chunks)));
38
+ req.on('error', reject);
39
+ });
40
+ }
41
+ async function buildSatsetRequest(req, baseUrl = 'http://localhost') {
42
+ const url = (req.url && req.url.startsWith('http')) ? req.url : baseUrl + (req.url || '/');
43
+ const headers = {};
44
+ for (const k of Object.keys(req.headers)) {
45
+ const val = req.headers[k];
46
+ if (Array.isArray(val))
47
+ headers[k] = val.join(', ');
48
+ else if (val !== undefined)
49
+ headers[k] = String(val);
50
+ }
51
+ let bodyBuffer = null;
52
+ if (req.method && ['POST', 'PUT', 'PATCH', 'DELETE'].includes(req.method.toUpperCase())) {
53
+ try {
54
+ bodyBuffer = await readRequestBody(req);
55
+ }
56
+ catch (e) {
57
+ // ignore reading errors; body will be null
58
+ bodyBuffer = null;
59
+ }
60
+ }
61
+ const text = bodyBuffer ? bodyBuffer.toString('utf-8') : '';
62
+ return {
63
+ url,
64
+ method: req.method || 'GET',
65
+ headers,
66
+ async json() {
67
+ return text ? JSON.parse(text) : undefined;
68
+ },
69
+ async text() {
70
+ return text;
71
+ },
72
+ // expose original Node req if someone needs low-level access
73
+ nodeRequest: req,
74
+ };
75
+ }
76
+ /** Cookie helper for Server Actions and other server-side code.
77
+ * Returns an object with `set(name, value, opts?)` for convenience.
78
+ * Under dev server this will attach Set-Cookie headers to the current action response
79
+ * via global.__SATSET_ACTION_RES__ which is temporarily set while invoking an action.
80
+ */
81
+ function cookies() {
82
+ return {
83
+ set(name, value, opts = {}) {
84
+ try {
85
+ const res = global.__SATSET_ACTION_RES__;
86
+ if (!res)
87
+ return;
88
+ const parts = [`${name}=${encodeURIComponent(value)}`];
89
+ if (opts.path)
90
+ parts.push(`Path=${opts.path}`);
91
+ else
92
+ parts.push('Path=/');
93
+ if (typeof opts.maxAge === 'number')
94
+ parts.push(`Max-Age=${opts.maxAge}`);
95
+ const cookieStr = parts.join('; ');
96
+ const prev = res.getHeader('Set-Cookie');
97
+ if (prev) {
98
+ if (Array.isArray(prev))
99
+ res.setHeader('Set-Cookie', [...prev, cookieStr]);
100
+ else
101
+ res.setHeader('Set-Cookie', [String(prev), cookieStr]);
102
+ }
103
+ else {
104
+ res.setHeader('Set-Cookie', cookieStr);
105
+ }
106
+ }
107
+ catch (e) {
108
+ // ignore
109
+ }
110
+ }
111
+ };
112
+ }
113
+ function sendSatsetResponse(nodeRes, satRes) {
114
+ const headers = satRes.headers || {};
115
+ const status = satRes.status || 200;
116
+ // If it's a Location redirect, just set Location header and no body
117
+ if (headers.Location) {
118
+ nodeRes.writeHead(status, headers);
119
+ nodeRes.end();
120
+ return;
121
+ }
122
+ // For rewrite we expect the dev server to treat header specially; in many cases send back 200 and body
123
+ // If body is a string or buffer, send it directly
124
+ if (typeof satRes.body === 'string' || Buffer.isBuffer(satRes.body)) {
125
+ nodeRes.writeHead(status, headers);
126
+ nodeRes.end(satRes.body);
127
+ return;
128
+ }
129
+ // If body is null/undefined, send empty response
130
+ if (satRes.body == null) {
131
+ nodeRes.writeHead(status, headers);
132
+ nodeRes.end();
133
+ return;
134
+ }
135
+ // Default: treat body as JSON
136
+ const body = typeof satRes.body === 'object' ? JSON.stringify(satRes.body) : String(satRes.body);
137
+ if (!headers['Content-Type'])
138
+ headers['Content-Type'] = 'application/json';
139
+ nodeRes.writeHead(status, headers);
140
+ nodeRes.end(body);
141
+ }
142
+ //# sourceMappingURL=response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/server/response.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export interface ServerConfig {
2
+ port?: number;
3
+ host?: string | boolean;
4
+ root?: string;
5
+ publicDir?: string;
6
+ favicon?: string;
7
+ }
8
+ export interface BuildOptions {
9
+ root: string;
10
+ outDir?: string;
11
+ minify?: boolean;
12
+ }
13
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IAKnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,70 @@
1
+ {
2
+ "name": "satset-react",
3
+ "version": "0.0.1-beta.0",
4
+ "description": "Fast fullstack React framework",
5
+ "private": false,
6
+ "author": "IndokuDev",
7
+ "license": "Apache-2.0",
8
+ "main": "./dist/index.js",
9
+ "module": "./dist/index.js",
10
+ "types": "./dist/index.d.ts",
11
+ "bin": {
12
+ "satset": "./dist/cli/index.js"
13
+ },
14
+ "exports": {
15
+ ".": {
16
+ "types": "./dist/index.d.ts",
17
+ "import": "./dist/index.js",
18
+ "require": "./dist/index.js"
19
+ },
20
+ "./router": {
21
+ "types": "./dist/router/index.d.ts",
22
+ "import": "./dist/router/index.js",
23
+ "require": "./dist/router/index.js"
24
+ },
25
+ "./client": {
26
+ "types": "./dist/client/index.d.ts",
27
+ "import": "./dist/client/index.js",
28
+ "require": "./dist/client/index.js"
29
+ },
30
+ "./server": {
31
+ "types": "./dist/server/index.d.ts",
32
+ "import": "./dist/server/index.js",
33
+ "require": "./dist/server/index.js"
34
+ }
35
+ },
36
+ "files": [
37
+ "dist",
38
+ "README.md",
39
+ "LICENSE"
40
+ ],
41
+ "scripts": {
42
+ "build": "rimraf dist && tsc",
43
+ "dev": "tsc --watch",
44
+ "prepublishOnly": "npm run build"
45
+ },
46
+ "keywords": [
47
+ "react",
48
+ "ssr",
49
+ "framework",
50
+ "satset",
51
+ "fullstack"
52
+ ],
53
+ "dependencies": {
54
+ "chokidar": "^3.5.3",
55
+ "esbuild": "^0.19.0",
56
+ "rimraf": "^6.1.2",
57
+ "ws": "^8.14.0"
58
+ },
59
+ "peerDependencies": {
60
+ "react": ">=18.0.0",
61
+ "react-dom": ">=18.0.0"
62
+ },
63
+ "devDependencies": {
64
+ "@types/node": "^20.0.0",
65
+ "@types/react": "^18.0.0",
66
+ "@types/react-dom": "^18.0.0",
67
+ "@types/ws": "^8.5.0",
68
+ "typescript": "^5.3.0"
69
+ }
70
+ }