@jk2908/solas 0.1.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/LICENSE +21 -0
- package/README.md +333 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +219 -0
- package/dist/error-boundary.d.ts +1 -0
- package/dist/error-boundary.js +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +235 -0
- package/dist/internal/build.d.ts +104 -0
- package/dist/internal/build.js +633 -0
- package/dist/internal/codegen/config.d.ts +5 -0
- package/dist/internal/codegen/config.js +19 -0
- package/dist/internal/codegen/environments.d.ts +12 -0
- package/dist/internal/codegen/environments.js +42 -0
- package/dist/internal/codegen/manifest.d.ts +5 -0
- package/dist/internal/codegen/manifest.js +15 -0
- package/dist/internal/codegen/maps.d.ts +5 -0
- package/dist/internal/codegen/maps.js +75 -0
- package/dist/internal/codegen/utils.d.ts +1 -0
- package/dist/internal/codegen/utils.js +2 -0
- package/dist/internal/env/browser.d.ts +4 -0
- package/dist/internal/env/browser.js +58 -0
- package/dist/internal/env/request-context.d.ts +19 -0
- package/dist/internal/env/request-context.js +2 -0
- package/dist/internal/env/rsc.d.ts +39 -0
- package/dist/internal/env/rsc.js +368 -0
- package/dist/internal/env/ssr.d.ts +42 -0
- package/dist/internal/env/ssr.js +149 -0
- package/dist/internal/env/utils.d.ts +2 -0
- package/dist/internal/env/utils.js +28 -0
- package/dist/internal/metadata.d.ts +81 -0
- package/dist/internal/metadata.js +185 -0
- package/dist/internal/navigation/http-exception-boundary.d.ts +12 -0
- package/dist/internal/navigation/http-exception-boundary.js +48 -0
- package/dist/internal/navigation/http-exception.d.ts +33 -0
- package/dist/internal/navigation/http-exception.js +45 -0
- package/dist/internal/navigation/link.d.ts +13 -0
- package/dist/internal/navigation/link.js +63 -0
- package/dist/internal/navigation/redirect-boundary.d.ts +12 -0
- package/dist/internal/navigation/redirect-boundary.js +39 -0
- package/dist/internal/navigation/redirect.d.ts +21 -0
- package/dist/internal/navigation/redirect.js +63 -0
- package/dist/internal/navigation/use-search-params.d.ts +1 -0
- package/dist/internal/navigation/use-search-params.js +13 -0
- package/dist/internal/prerender.d.ts +151 -0
- package/dist/internal/prerender.js +422 -0
- package/dist/internal/render/head.d.ts +4 -0
- package/dist/internal/render/head.js +38 -0
- package/dist/internal/render/tree.d.ts +47 -0
- package/dist/internal/render/tree.js +108 -0
- package/dist/internal/router/create-router.d.ts +6 -0
- package/dist/internal/router/create-router.js +95 -0
- package/dist/internal/router/pattern.d.ts +8 -0
- package/dist/internal/router/pattern.js +31 -0
- package/dist/internal/router/prefetcher.d.ts +47 -0
- package/dist/internal/router/prefetcher.js +90 -0
- package/dist/internal/router/resolver.d.ts +174 -0
- package/dist/internal/router/resolver.js +356 -0
- package/dist/internal/router/router-context.d.ts +11 -0
- package/dist/internal/router/router-context.js +7 -0
- package/dist/internal/router/router-provider.d.ts +6 -0
- package/dist/internal/router/router-provider.js +131 -0
- package/dist/internal/router/router.d.ts +79 -0
- package/dist/internal/router/router.js +417 -0
- package/dist/internal/router/use-router.d.ts +5 -0
- package/dist/internal/router/use-router.js +5 -0
- package/dist/internal/server/cookies.d.ts +6 -0
- package/dist/internal/server/cookies.js +17 -0
- package/dist/internal/server/dynamic.d.ts +9 -0
- package/dist/internal/server/dynamic.js +22 -0
- package/dist/internal/server/headers.d.ts +5 -0
- package/dist/internal/server/headers.js +19 -0
- package/dist/internal/server/url.d.ts +5 -0
- package/dist/internal/server/url.js +16 -0
- package/dist/internal/ui/defaults/error.d.ts +4 -0
- package/dist/internal/ui/defaults/error.js +6 -0
- package/dist/internal/ui/error-boundary.d.ts +26 -0
- package/dist/internal/ui/error-boundary.js +41 -0
- package/dist/navigation.d.ts +6 -0
- package/dist/navigation.js +6 -0
- package/dist/prerender.d.ts +1 -0
- package/dist/prerender.js +1 -0
- package/dist/router.d.ts +4 -0
- package/dist/router.js +4 -0
- package/dist/server.d.ts +4 -0
- package/dist/server.js +4 -0
- package/dist/solas.d.ts +32 -0
- package/dist/solas.js +125 -0
- package/dist/types.d.ts +93 -0
- package/dist/types.js +1 -0
- package/dist/utils/compress.d.ts +11 -0
- package/dist/utils/compress.js +76 -0
- package/dist/utils/context.d.ts +6 -0
- package/dist/utils/context.js +25 -0
- package/dist/utils/cookies.d.ts +3 -0
- package/dist/utils/cookies.js +35 -0
- package/dist/utils/export-reader.d.ts +29 -0
- package/dist/utils/export-reader.js +117 -0
- package/dist/utils/format.d.ts +6 -0
- package/dist/utils/format.js +72 -0
- package/dist/utils/logger.d.ts +52 -0
- package/dist/utils/logger.js +105 -0
- package/dist/utils/time.d.ts +4 -0
- package/dist/utils/time.js +29 -0
- package/package.json +111 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
declare const LEVELS: {
|
|
2
|
+
readonly debug: 0;
|
|
3
|
+
readonly info: 1;
|
|
4
|
+
readonly warn: 2;
|
|
5
|
+
readonly error: 3;
|
|
6
|
+
readonly fatal: 4;
|
|
7
|
+
};
|
|
8
|
+
export type LogLevel = keyof typeof LEVELS;
|
|
9
|
+
/**
|
|
10
|
+
* Log messages with different severity levels
|
|
11
|
+
*/
|
|
12
|
+
export declare class Logger {
|
|
13
|
+
#private;
|
|
14
|
+
constructor(level?: LogLevel);
|
|
15
|
+
static set defaultLevel(level: LogLevel);
|
|
16
|
+
static get defaultLevel(): "debug" | "error" | "fatal" | "info" | "warn";
|
|
17
|
+
/**
|
|
18
|
+
* Convert a value to an Error instance
|
|
19
|
+
*/
|
|
20
|
+
static toError(err: unknown): Error;
|
|
21
|
+
/**
|
|
22
|
+
* Stringify the error for logging
|
|
23
|
+
*/
|
|
24
|
+
static print(err: unknown): string;
|
|
25
|
+
set level(level: LogLevel);
|
|
26
|
+
get level(): "debug" | "error" | "fatal" | "info" | "warn";
|
|
27
|
+
/**
|
|
28
|
+
* Log a message with a specific level
|
|
29
|
+
*/
|
|
30
|
+
log(level: LogLevel, message: string, error?: Error): void;
|
|
31
|
+
/**
|
|
32
|
+
* Log a debug message
|
|
33
|
+
*/
|
|
34
|
+
debug(...messages: string[]): void;
|
|
35
|
+
/**
|
|
36
|
+
* Log an info message
|
|
37
|
+
*/
|
|
38
|
+
info(...messages: string[]): void;
|
|
39
|
+
/**
|
|
40
|
+
* Log a warning message
|
|
41
|
+
*/
|
|
42
|
+
warn(...messages: string[]): void;
|
|
43
|
+
/**
|
|
44
|
+
* Log an error message
|
|
45
|
+
*/
|
|
46
|
+
error(message: string, error?: unknown): void;
|
|
47
|
+
/**
|
|
48
|
+
* Log a fatal error message
|
|
49
|
+
*/
|
|
50
|
+
fatal(message: string, error?: unknown): void;
|
|
51
|
+
}
|
|
52
|
+
export {};
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { Solas } from '../solas';
|
|
2
|
+
import { HttpException } from '../internal/navigation/http-exception';
|
|
3
|
+
const LEVELS = {
|
|
4
|
+
debug: 0,
|
|
5
|
+
info: 1,
|
|
6
|
+
warn: 2,
|
|
7
|
+
error: 3,
|
|
8
|
+
fatal: 4,
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Log messages with different severity levels
|
|
12
|
+
*/
|
|
13
|
+
export class Logger {
|
|
14
|
+
static #defaultLevel = 'info';
|
|
15
|
+
#level;
|
|
16
|
+
constructor(level) {
|
|
17
|
+
this.#level = level;
|
|
18
|
+
}
|
|
19
|
+
static set defaultLevel(level) {
|
|
20
|
+
Logger.#defaultLevel = level;
|
|
21
|
+
}
|
|
22
|
+
static get defaultLevel() {
|
|
23
|
+
return Logger.#defaultLevel;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Convert a value to an Error instance
|
|
27
|
+
*/
|
|
28
|
+
static toError(err) {
|
|
29
|
+
return err instanceof Error ? err : new Error(String(err), { cause: err });
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Stringify the error for logging
|
|
33
|
+
*/
|
|
34
|
+
static print(err) {
|
|
35
|
+
if (err instanceof Error || err instanceof HttpException) {
|
|
36
|
+
return err.message + (err.stack ? `\n${err.stack}` : '');
|
|
37
|
+
}
|
|
38
|
+
if (typeof err === 'object' && err !== null) {
|
|
39
|
+
return JSON.stringify(err, null, 2);
|
|
40
|
+
}
|
|
41
|
+
return String(err);
|
|
42
|
+
}
|
|
43
|
+
set level(level) {
|
|
44
|
+
this.#level = level;
|
|
45
|
+
}
|
|
46
|
+
get level() {
|
|
47
|
+
return this.#level ?? Logger.#defaultLevel;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Log a message with a specific level
|
|
51
|
+
*/
|
|
52
|
+
log(level, message, error) {
|
|
53
|
+
if (LEVELS[level] < LEVELS[this.level])
|
|
54
|
+
return;
|
|
55
|
+
const entry = {
|
|
56
|
+
ts: Date.now(),
|
|
57
|
+
level,
|
|
58
|
+
message,
|
|
59
|
+
};
|
|
60
|
+
if (level === 'error' || level === 'fatal') {
|
|
61
|
+
entry.error = error ? Logger.toError(error) : new Error(message);
|
|
62
|
+
}
|
|
63
|
+
const line = `[${Solas.Config.NAME}] [${entry.ts}] [${level.toUpperCase()}] ${message}`;
|
|
64
|
+
const extra = entry.error ? `\n${Logger.print(entry.error)}` : '';
|
|
65
|
+
if (level === 'warn') {
|
|
66
|
+
console.warn(line, extra);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (level === 'error' || level === 'fatal') {
|
|
70
|
+
console.error(line, extra);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
console.log(line, extra);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Log a debug message
|
|
77
|
+
*/
|
|
78
|
+
debug(...messages) {
|
|
79
|
+
this.log('debug', messages.join(' '));
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Log an info message
|
|
83
|
+
*/
|
|
84
|
+
info(...messages) {
|
|
85
|
+
this.log('info', messages.join(' '));
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Log a warning message
|
|
89
|
+
*/
|
|
90
|
+
warn(...messages) {
|
|
91
|
+
this.log('warn', messages.join(' '));
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Log an error message
|
|
95
|
+
*/
|
|
96
|
+
error(message, error) {
|
|
97
|
+
this.log('error', message, error === undefined ? undefined : Logger.toError(error));
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Log a fatal error message
|
|
101
|
+
*/
|
|
102
|
+
fatal(message, error) {
|
|
103
|
+
this.log('fatal', message, error === undefined ? undefined : Logger.toError(error));
|
|
104
|
+
}
|
|
105
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export { Time };
|
|
2
|
+
var Time;
|
|
3
|
+
(function (Time) {
|
|
4
|
+
function debounce(fn, wait) {
|
|
5
|
+
let timeoutId = null;
|
|
6
|
+
return (...args) => {
|
|
7
|
+
if (timeoutId) {
|
|
8
|
+
clearTimeout(timeoutId);
|
|
9
|
+
}
|
|
10
|
+
timeoutId = setTimeout(() => {
|
|
11
|
+
fn.apply(null, args);
|
|
12
|
+
}, wait);
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
Time.debounce = debounce;
|
|
16
|
+
function timeout(task, timeoutMs, label) {
|
|
17
|
+
let timer;
|
|
18
|
+
const timeout = new Promise((_, reject) => {
|
|
19
|
+
timer = setTimeout(() => {
|
|
20
|
+
reject(new Error(`Timed out after ${timeoutMs}ms (${label})`));
|
|
21
|
+
}, timeoutMs);
|
|
22
|
+
});
|
|
23
|
+
return Promise.race([task, timeout]).finally(() => {
|
|
24
|
+
if (timer)
|
|
25
|
+
clearTimeout(timer);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
Time.timeout = timeout;
|
|
29
|
+
})(Time || (Time = {}));
|
package/package.json
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@jk2908/solas",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "A React Server Components meta-framework powered by Vite",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"framework",
|
|
7
|
+
"ppr",
|
|
8
|
+
"react",
|
|
9
|
+
"rsc",
|
|
10
|
+
"ssr",
|
|
11
|
+
"vite"
|
|
12
|
+
],
|
|
13
|
+
"homepage": "https://github.com/jk2908/solas/tree/main/packages/solas#readme",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/jk2908/solas/issues"
|
|
16
|
+
},
|
|
17
|
+
"license": "MIT",
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "https://github.com/jk2908/solas.git"
|
|
21
|
+
},
|
|
22
|
+
"bin": {
|
|
23
|
+
"solas": "./dist/cli.js"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"dist"
|
|
27
|
+
],
|
|
28
|
+
"type": "module",
|
|
29
|
+
"main": "./dist/index.js",
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
31
|
+
"exports": {
|
|
32
|
+
".": {
|
|
33
|
+
"types": "./dist/index.d.ts",
|
|
34
|
+
"import": "./dist/index.js"
|
|
35
|
+
},
|
|
36
|
+
"./env/rsc": {
|
|
37
|
+
"types": "./dist/internal/env/rsc.d.ts",
|
|
38
|
+
"import": "./dist/internal/env/rsc.js"
|
|
39
|
+
},
|
|
40
|
+
"./env/ssr": {
|
|
41
|
+
"types": "./dist/internal/env/ssr.d.ts",
|
|
42
|
+
"import": "./dist/internal/env/ssr.js"
|
|
43
|
+
},
|
|
44
|
+
"./env/browser": {
|
|
45
|
+
"types": "./dist/internal/env/browser.d.ts",
|
|
46
|
+
"import": "./dist/internal/env/browser.js"
|
|
47
|
+
},
|
|
48
|
+
"./router": {
|
|
49
|
+
"types": "./dist/router.d.ts",
|
|
50
|
+
"import": "./dist/router.js"
|
|
51
|
+
},
|
|
52
|
+
"./navigation": {
|
|
53
|
+
"types": "./dist/navigation.d.ts",
|
|
54
|
+
"import": "./dist/navigation.js"
|
|
55
|
+
},
|
|
56
|
+
"./prerender": {
|
|
57
|
+
"types": "./dist/prerender.d.ts",
|
|
58
|
+
"import": "./dist/prerender.js"
|
|
59
|
+
},
|
|
60
|
+
"./server": {
|
|
61
|
+
"types": "./dist/server.d.ts",
|
|
62
|
+
"import": "./dist/server.js"
|
|
63
|
+
},
|
|
64
|
+
"./error-boundary": {
|
|
65
|
+
"types": "./dist/error-boundary.d.ts",
|
|
66
|
+
"import": "./dist/error-boundary.js"
|
|
67
|
+
},
|
|
68
|
+
"./solas": {
|
|
69
|
+
"types": "./dist/solas.d.ts",
|
|
70
|
+
"import": "./dist/solas.js"
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"scripts": {
|
|
74
|
+
"build": "rm -rf dist && tsgo && chmod +x dist/cli.js",
|
|
75
|
+
"lint": "bunx oxlint .",
|
|
76
|
+
"lint:fix": "bunx oxlint --fix .",
|
|
77
|
+
"format": "bunx oxfmt --write .",
|
|
78
|
+
"format:check": "bunx oxfmt --check .",
|
|
79
|
+
"pack:dry": "npm pack --dry-run",
|
|
80
|
+
"release:check": "npm run prepublishOnly",
|
|
81
|
+
"prepublishOnly": "npm run build && npm run pack:dry"
|
|
82
|
+
},
|
|
83
|
+
"dependencies": {
|
|
84
|
+
"@vitejs/plugin-rsc": "^0.5.20",
|
|
85
|
+
"path-to-regexp": "^8.3.0",
|
|
86
|
+
"rsc-html-stream": "^0.0.7"
|
|
87
|
+
},
|
|
88
|
+
"devDependencies": {
|
|
89
|
+
"@prettier/plugin-oxc": "^0.1.3",
|
|
90
|
+
"@types/bun": "^1.2.22",
|
|
91
|
+
"@typescript/native-preview": "^7.0.0-dev.20260224.1",
|
|
92
|
+
"network-information-types": "^0.1.1",
|
|
93
|
+
"typescript": "^5.9.3"
|
|
94
|
+
},
|
|
95
|
+
"peerDependencies": {
|
|
96
|
+
"@types/react": "^19.2.14",
|
|
97
|
+
"@types/react-dom": "^19.2.3",
|
|
98
|
+
"react": "^19.2.4",
|
|
99
|
+
"react-dom": "^19.2.4",
|
|
100
|
+
"react-server-dom-webpack": "^19.2.4",
|
|
101
|
+
"vite": "^7.3.1 || ^8.0.0"
|
|
102
|
+
},
|
|
103
|
+
"peerDependenciesMeta": {
|
|
104
|
+
"react-server-dom-webpack": {
|
|
105
|
+
"optional": true
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
"engines": {
|
|
109
|
+
"bun": ">=1.2.0"
|
|
110
|
+
}
|
|
111
|
+
}
|