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.
- package/dist/adapter/index.d.ts +4 -0
- package/dist/adapter/index.d.ts.map +1 -0
- package/dist/adapter/index.js +8 -0
- package/dist/adapter/index.js.map +1 -0
- package/dist/adapter/node.d.ts +3 -0
- package/dist/adapter/node.d.ts.map +1 -0
- package/dist/adapter/node.js +244 -0
- package/dist/adapter/node.js.map +1 -0
- package/dist/adapter/types.d.ts +24 -0
- package/dist/adapter/types.d.ts.map +1 -0
- package/dist/adapter/types.js +3 -0
- package/dist/adapter/types.js.map +1 -0
- package/dist/adapter/vercel.d.ts +3 -0
- package/dist/adapter/vercel.d.ts.map +1 -0
- package/dist/adapter/vercel.js +173 -0
- package/dist/adapter/vercel.js.map +1 -0
- package/dist/assets/favicon.d.ts +2 -0
- package/dist/assets/favicon.d.ts.map +1 -0
- package/dist/assets/favicon.js +67 -0
- package/dist/assets/favicon.js.map +1 -0
- package/dist/assets/index.d.ts +6 -0
- package/dist/assets/index.d.ts.map +1 -0
- package/dist/assets/index.js +14 -0
- package/dist/assets/index.js.map +1 -0
- package/dist/assets/metadata.d.ts +23 -0
- package/dist/assets/metadata.d.ts.map +1 -0
- package/dist/assets/metadata.js +55 -0
- package/dist/assets/metadata.js.map +1 -0
- package/dist/assets/robots.d.ts +11 -0
- package/dist/assets/robots.d.ts.map +1 -0
- package/dist/assets/robots.js +70 -0
- package/dist/assets/robots.js.map +1 -0
- package/dist/assets/sitemap.d.ts +12 -0
- package/dist/assets/sitemap.d.ts.map +1 -0
- package/dist/assets/sitemap.js +71 -0
- package/dist/assets/sitemap.js.map +1 -0
- package/dist/cli/commands.d.ts +4 -0
- package/dist/cli/commands.d.ts.map +1 -0
- package/dist/cli/commands.js +74 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +32 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/components/ErrorBoundary.d.ts +22 -0
- package/dist/components/ErrorBoundary.d.ts.map +1 -0
- package/dist/components/ErrorBoundary.js +56 -0
- package/dist/components/ErrorBoundary.js.map +1 -0
- package/dist/components/Image.d.ts +15 -0
- package/dist/components/Image.d.ts.map +1 -0
- package/dist/components/Image.js +65 -0
- package/dist/components/Image.js.map +1 -0
- package/dist/components/Link.d.ts +14 -0
- package/dist/components/Link.d.ts.map +1 -0
- package/dist/components/Link.js +67 -0
- package/dist/components/Link.js.map +1 -0
- package/dist/components/Script.d.ts +10 -0
- package/dist/components/Script.d.ts.map +1 -0
- package/dist/components/Script.js +60 -0
- package/dist/components/Script.js.map +1 -0
- package/dist/components/index.d.ts +5 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +15 -0
- package/dist/components/index.js.map +1 -0
- package/dist/core/hydrate.d.ts +8 -0
- package/dist/core/hydrate.d.ts.map +1 -0
- package/dist/core/hydrate.js +73 -0
- package/dist/core/hydrate.js.map +1 -0
- package/dist/core/index.d.ts +8 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +19 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/ssr.d.ts +28 -0
- package/dist/core/ssr.d.ts.map +1 -0
- package/dist/core/ssr.js +91 -0
- package/dist/core/ssr.js.map +1 -0
- package/dist/core/types.d.ts +24 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +3 -0
- package/dist/core/types.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/navigation/notFound.d.ts +2 -0
- package/dist/navigation/notFound.d.ts.map +1 -0
- package/dist/navigation/notFound.js +9 -0
- package/dist/navigation/notFound.js.map +1 -0
- package/dist/router/file-system.d.ts +19 -0
- package/dist/router/file-system.d.ts.map +1 -0
- package/dist/router/file-system.js +332 -0
- package/dist/router/file-system.js.map +1 -0
- package/dist/router/index.d.ts +4 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +12 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/router.d.ts +17 -0
- package/dist/router/router.d.ts.map +1 -0
- package/dist/router/router.js +138 -0
- package/dist/router/router.js.map +1 -0
- package/dist/router/types.d.ts +11 -0
- package/dist/router/types.d.ts.map +1 -0
- package/dist/router/types.js +3 -0
- package/dist/router/types.js.map +1 -0
- package/dist/server/build.d.ts +5 -0
- package/dist/server/build.d.ts.map +1 -0
- package/dist/server/build.js +449 -0
- package/dist/server/build.js.map +1 -0
- package/dist/server/bundler.d.ts +27 -0
- package/dist/server/bundler.d.ts.map +1 -0
- package/dist/server/bundler.js +213 -0
- package/dist/server/bundler.js.map +1 -0
- package/dist/server/dev.d.ts +11 -0
- package/dist/server/dev.d.ts.map +1 -0
- package/dist/server/dev.js +1052 -0
- package/dist/server/dev.js.map +1 -0
- package/dist/server/env.d.ts +10 -0
- package/dist/server/env.d.ts.map +1 -0
- package/dist/server/env.js +102 -0
- package/dist/server/env.js.map +1 -0
- package/dist/server/error-overlay.d.ts +11 -0
- package/dist/server/error-overlay.d.ts.map +1 -0
- package/dist/server/error-overlay.js +395 -0
- package/dist/server/error-overlay.js.map +1 -0
- package/dist/server/hmr.d.ts +8 -0
- package/dist/server/hmr.d.ts.map +1 -0
- package/dist/server/hmr.js +166 -0
- package/dist/server/hmr.js.map +1 -0
- package/dist/server/index.d.ts +5 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +10 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/response.d.ts +38 -0
- package/dist/server/response.d.ts.map +1 -0
- package/dist/server/response.js +142 -0
- package/dist/server/response.js.map +1 -0
- package/dist/server/types.d.ts +13 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/types.js +3 -0
- package/dist/server/types.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,67 @@
|
|
|
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.default = Link;
|
|
7
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
+
const react_1 = __importDefault(require("react"));
|
|
9
|
+
function Link({ href, children, className, prefetch = true, replace = false, scroll = true, target, rel, }) {
|
|
10
|
+
const linkRef = react_1.default.useRef(null);
|
|
11
|
+
react_1.default.useEffect(() => {
|
|
12
|
+
// Prefetch on hover/focus
|
|
13
|
+
if (prefetch && linkRef.current) {
|
|
14
|
+
const handleMouseEnter = () => {
|
|
15
|
+
prefetchRoute(href);
|
|
16
|
+
};
|
|
17
|
+
const handleFocus = () => {
|
|
18
|
+
prefetchRoute(href);
|
|
19
|
+
};
|
|
20
|
+
const link = linkRef.current;
|
|
21
|
+
link.addEventListener('mouseenter', handleMouseEnter);
|
|
22
|
+
link.addEventListener('focus', handleFocus);
|
|
23
|
+
return () => {
|
|
24
|
+
link.removeEventListener('mouseenter', handleMouseEnter);
|
|
25
|
+
link.removeEventListener('focus', handleFocus);
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
}, [href, prefetch]);
|
|
29
|
+
const handleClick = (e) => {
|
|
30
|
+
// Allow default behavior for external links or special keys
|
|
31
|
+
if (target === '_blank' ||
|
|
32
|
+
e.ctrlKey ||
|
|
33
|
+
e.metaKey ||
|
|
34
|
+
e.shiftKey ||
|
|
35
|
+
e.altKey ||
|
|
36
|
+
href.startsWith('http://') ||
|
|
37
|
+
href.startsWith('https://') ||
|
|
38
|
+
href.startsWith('mailto:') ||
|
|
39
|
+
href.startsWith('tel:')) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
e.preventDefault();
|
|
43
|
+
// Navigate
|
|
44
|
+
if (replace) {
|
|
45
|
+
window.history.replaceState({}, '', href);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
window.history.pushState({}, '', href);
|
|
49
|
+
}
|
|
50
|
+
// Scroll to top if needed
|
|
51
|
+
if (scroll) {
|
|
52
|
+
window.scrollTo(0, 0);
|
|
53
|
+
}
|
|
54
|
+
// Dispatch popstate event
|
|
55
|
+
window.dispatchEvent(new PopStateEvent('popstate'));
|
|
56
|
+
};
|
|
57
|
+
return ((0, jsx_runtime_1.jsx)("a", { ref: linkRef, href: href, onClick: handleClick, className: className, target: target, rel: rel, children: children }));
|
|
58
|
+
}
|
|
59
|
+
// Prefetch route data
|
|
60
|
+
function prefetchRoute(href) {
|
|
61
|
+
// Create link element for prefetch
|
|
62
|
+
const link = document.createElement('link');
|
|
63
|
+
link.rel = 'prefetch';
|
|
64
|
+
link.href = href;
|
|
65
|
+
document.head.appendChild(link);
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=Link.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Link.js","sourceRoot":"","sources":["../../src/components/Link.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface ScriptProps {
|
|
2
|
+
src: string;
|
|
3
|
+
strategy?: 'beforeInteractive' | 'afterInteractive' | 'lazyOnload';
|
|
4
|
+
onLoad?: () => void;
|
|
5
|
+
onError?: (error: Error) => void;
|
|
6
|
+
onReady?: () => void;
|
|
7
|
+
}
|
|
8
|
+
export default function Script({ src, strategy, onLoad, onError, onReady, }: ScriptProps): null;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=Script.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Script.d.ts","sourceRoot":"","sources":["../../src/components/Script.tsx"],"names":[],"mappings":"AAEA,UAAU,WAAW;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,mBAAmB,GAAG,kBAAkB,GAAG,YAAY,CAAC;IACnE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC7B,GAAG,EACH,QAA6B,EAC7B,MAAM,EACN,OAAO,EACP,OAAO,GACR,EAAE,WAAW,QAsDb"}
|
|
@@ -0,0 +1,60 @@
|
|
|
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.default = Script;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
function Script({ src, strategy = 'afterInteractive', onLoad, onError, onReady, }) {
|
|
9
|
+
const [loaded, setLoaded] = react_1.default.useState(false);
|
|
10
|
+
react_1.default.useEffect(() => {
|
|
11
|
+
// Check if script already exists
|
|
12
|
+
const existingScript = document.querySelector(`script[src="${src}"]`);
|
|
13
|
+
if (existingScript) {
|
|
14
|
+
setLoaded(true);
|
|
15
|
+
onReady?.();
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const loadScript = () => {
|
|
19
|
+
const script = document.createElement('script');
|
|
20
|
+
script.src = src;
|
|
21
|
+
script.async = true;
|
|
22
|
+
script.onload = () => {
|
|
23
|
+
setLoaded(true);
|
|
24
|
+
onLoad?.();
|
|
25
|
+
onReady?.();
|
|
26
|
+
};
|
|
27
|
+
script.onerror = () => {
|
|
28
|
+
const error = new Error(`Failed to load script: ${src}`);
|
|
29
|
+
console.error('[Satset Script]', error);
|
|
30
|
+
onError?.(error);
|
|
31
|
+
};
|
|
32
|
+
document.body.appendChild(script);
|
|
33
|
+
};
|
|
34
|
+
if (strategy === 'beforeInteractive') {
|
|
35
|
+
// Load immediately
|
|
36
|
+
loadScript();
|
|
37
|
+
}
|
|
38
|
+
else if (strategy === 'afterInteractive') {
|
|
39
|
+
// Load after page is interactive
|
|
40
|
+
if (document.readyState === 'complete') {
|
|
41
|
+
loadScript();
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
window.addEventListener('load', loadScript);
|
|
45
|
+
return () => window.removeEventListener('load', loadScript);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else if (strategy === 'lazyOnload') {
|
|
49
|
+
// Load when idle
|
|
50
|
+
if ('requestIdleCallback' in window) {
|
|
51
|
+
requestIdleCallback(() => loadScript());
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
setTimeout(loadScript, 1000);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}, [src, strategy, onLoad, onError, onReady]);
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=Script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Script.js","sourceRoot":"","sources":["../../src/components/Script.tsx"],"names":[],"mappings":";;;;;AAUA,yBA4DC;AAtED,kDAA0B;AAU1B,SAAwB,MAAM,CAAC,EAC7B,GAAG,EACH,QAAQ,GAAG,kBAAkB,EAC7B,MAAM,EACN,OAAO,EACP,OAAO,GACK;IACZ,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElD,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,iCAAiC;QACjC,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;QACtE,IAAI,cAAc,EAAE,CAAC;YACnB,SAAS,CAAC,IAAI,CAAC,CAAC;YAChB,OAAO,EAAE,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,GAAG,EAAE;YACtB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAChD,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;YACjB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;YAEpB,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE;gBACnB,SAAS,CAAC,IAAI,CAAC,CAAC;gBAChB,MAAM,EAAE,EAAE,CAAC;gBACX,OAAO,EAAE,EAAE,CAAC;YACd,CAAC,CAAC;YAEF,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE;gBACpB,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC;gBACzD,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;gBACxC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC,CAAC;YAEF,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC,CAAC;QAEF,IAAI,QAAQ,KAAK,mBAAmB,EAAE,CAAC;YACrC,mBAAmB;YACnB,UAAU,EAAE,CAAC;QACf,CAAC;aAAM,IAAI,QAAQ,KAAK,kBAAkB,EAAE,CAAC;YAC3C,iCAAiC;YACjC,IAAI,QAAQ,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;gBACvC,UAAU,EAAE,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;gBAC5C,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;aAAM,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;YACrC,iBAAiB;YACjB,IAAI,qBAAqB,IAAI,MAAM,EAAE,CAAC;gBACpC,mBAAmB,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC;YAC1C,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAE9C,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
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.ErrorBoundary = exports.Script = exports.Image = exports.Link = void 0;
|
|
7
|
+
var Link_1 = require("./Link");
|
|
8
|
+
Object.defineProperty(exports, "Link", { enumerable: true, get: function () { return __importDefault(Link_1).default; } });
|
|
9
|
+
var Image_1 = require("./Image");
|
|
10
|
+
Object.defineProperty(exports, "Image", { enumerable: true, get: function () { return __importDefault(Image_1).default; } });
|
|
11
|
+
var Script_1 = require("./Script");
|
|
12
|
+
Object.defineProperty(exports, "Script", { enumerable: true, get: function () { return __importDefault(Script_1).default; } });
|
|
13
|
+
var ErrorBoundary_1 = require("./ErrorBoundary");
|
|
14
|
+
Object.defineProperty(exports, "ErrorBoundary", { enumerable: true, get: function () { return __importDefault(ErrorBoundary_1).default; } });
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":";;;;;;AAAA,+BAAyC;AAAhC,6GAAA,OAAO,OAAQ;AACxB,iCAA2C;AAAlC,+GAAA,OAAO,OAAS;AACzB,mCAA6C;AAApC,iHAAA,OAAO,OAAU;AAC1B,iDAA2D;AAAlD,+HAAA,OAAO,OAAiB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface HydrateOptions {
|
|
3
|
+
onRecoverableError?: (error: unknown, errorInfo?: any) => void;
|
|
4
|
+
}
|
|
5
|
+
export declare function hydrate(App: React.ComponentType<any>, options?: HydrateOptions): void;
|
|
6
|
+
export declare function hydrateProgressively(App: React.ComponentType<any>, options?: HydrateOptions): void;
|
|
7
|
+
export declare function hydrateComponent(Component: React.ComponentType<any>, elementId: string, props?: any): void;
|
|
8
|
+
//# sourceMappingURL=hydrate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hydrate.d.ts","sourceRoot":"","sources":["../../src/core/hydrate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,cAAc;IAC7B,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;CAChE;AAED,wBAAgB,OAAO,CACrB,GAAG,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAC7B,OAAO,GAAE,cAAmB,QA+B7B;AAGD,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAC7B,OAAO,GAAE,cAAmB,QAa7B;AAGD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EACnC,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,GAAQ,QAmBhB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
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.hydrate = hydrate;
|
|
7
|
+
exports.hydrateProgressively = hydrateProgressively;
|
|
8
|
+
exports.hydrateComponent = hydrateComponent;
|
|
9
|
+
const react_1 = __importDefault(require("react"));
|
|
10
|
+
const client_1 = require("react-dom/client");
|
|
11
|
+
function hydrate(App, options = {}) {
|
|
12
|
+
const root = document.getElementById('root');
|
|
13
|
+
if (!root) {
|
|
14
|
+
throw new Error('[Satset] Root element #root not found');
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
// Hydrate if server-rendered content exists
|
|
18
|
+
if (root.innerHTML.trim()) {
|
|
19
|
+
(0, client_1.hydrateRoot)(root, react_1.default.createElement(App), {
|
|
20
|
+
onRecoverableError: options.onRecoverableError || ((error) => {
|
|
21
|
+
console.error('[Satset] Hydration error:', error);
|
|
22
|
+
}),
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
// Client-side render if no SSR content
|
|
27
|
+
const clientRoot = (0, client_1.createRoot)(root);
|
|
28
|
+
clientRoot.render(react_1.default.createElement(App));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
console.error('[Satset] Failed to hydrate:', error);
|
|
33
|
+
// Fallback to client-side render
|
|
34
|
+
const clientRoot = (0, client_1.createRoot)(root);
|
|
35
|
+
clientRoot.render(react_1.default.createElement(App));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// Progressive hydration (for large apps)
|
|
39
|
+
function hydrateProgressively(App, options = {}) {
|
|
40
|
+
// Use requestIdleCallback for non-critical hydration
|
|
41
|
+
if ('requestIdleCallback' in window) {
|
|
42
|
+
requestIdleCallback(() => {
|
|
43
|
+
hydrate(App, options);
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
// Fallback to setTimeout
|
|
48
|
+
setTimeout(() => {
|
|
49
|
+
hydrate(App, options);
|
|
50
|
+
}, 0);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// Selective hydration (hydrate specific components)
|
|
54
|
+
function hydrateComponent(Component, elementId, props = {}) {
|
|
55
|
+
const element = document.getElementById(elementId);
|
|
56
|
+
if (!element) {
|
|
57
|
+
console.warn(`[Satset] Element #${elementId} not found for hydration`);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
try {
|
|
61
|
+
if (element.innerHTML.trim()) {
|
|
62
|
+
(0, client_1.hydrateRoot)(element, react_1.default.createElement(Component, props));
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
const root = (0, client_1.createRoot)(element);
|
|
66
|
+
root.render(react_1.default.createElement(Component, props));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
console.error(`[Satset] Failed to hydrate component at #${elementId}:`, error);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=hydrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hydrate.js","sourceRoot":"","sources":["../../src/core/hydrate.ts"],"names":[],"mappings":";;;;;AAOA,0BAiCC;AAGD,oDAeC;AAGD,4CAsBC;AAnFD,kDAA0B;AAC1B,6CAA2D;AAM3D,SAAgB,OAAO,CACrB,GAA6B,EAC7B,UAA0B,EAAE;IAE5B,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAE7C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,CAAC;QACH,4CAA4C;QAC5C,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1B,IAAA,oBAAW,EACT,IAAI,EACJ,eAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EACxB;gBACE,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;oBAC3D,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;gBACpD,CAAC,CAAC;aACH,CACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,uCAAuC;YACvC,MAAM,UAAU,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,CAAC;YACpC,UAAU,CAAC,MAAM,CAAC,eAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACpD,iCAAiC;QACjC,MAAM,UAAU,GAAG,IAAA,mBAAU,EAAC,IAAI,CAAC,CAAC;QACpC,UAAU,CAAC,MAAM,CAAC,eAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,yCAAyC;AACzC,SAAgB,oBAAoB,CAClC,GAA6B,EAC7B,UAA0B,EAAE;IAE5B,qDAAqD;IACrD,IAAI,qBAAqB,IAAI,MAAM,EAAE,CAAC;QACpC,mBAAmB,CAAC,GAAG,EAAE;YACvB,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,yBAAyB;QACzB,UAAU,CAAC,GAAG,EAAE;YACd,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACxB,CAAC,EAAE,CAAC,CAAC,CAAC;IACR,CAAC;AACH,CAAC;AAED,oDAAoD;AACpD,SAAgB,gBAAgB,CAC9B,SAAmC,EACnC,SAAiB,EACjB,QAAa,EAAE;IAEf,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IAEnD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,qBAAqB,SAAS,0BAA0B,CAAC,CAAC;QACvE,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7B,IAAA,oBAAW,EAAC,OAAO,EAAE,eAAK,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QAC9D,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,OAAO,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,eAAK,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4CAA4C,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;IACjF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { renderToString, renderToStaticMarkup, renderToStream, escapeHtml } from './ssr';
|
|
2
|
+
export type { RenderOptions, SSRResult } from './ssr';
|
|
3
|
+
export { hydrate, hydrateProgressively, hydrateComponent } from './hydrate';
|
|
4
|
+
export type { HydrateOptions } from './hydrate';
|
|
5
|
+
export { notFound } from '../navigation/notFound';
|
|
6
|
+
export { SatsetResponse, buildSatsetRequest, sendSatsetResponse } from '../server/response';
|
|
7
|
+
export type { SatsetApp } from './types';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACzF,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC5E,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE5F,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sendSatsetResponse = exports.buildSatsetRequest = exports.SatsetResponse = exports.notFound = exports.hydrateComponent = exports.hydrateProgressively = exports.hydrate = exports.escapeHtml = exports.renderToStream = exports.renderToStaticMarkup = exports.renderToString = void 0;
|
|
4
|
+
var ssr_1 = require("./ssr");
|
|
5
|
+
Object.defineProperty(exports, "renderToString", { enumerable: true, get: function () { return ssr_1.renderToString; } });
|
|
6
|
+
Object.defineProperty(exports, "renderToStaticMarkup", { enumerable: true, get: function () { return ssr_1.renderToStaticMarkup; } });
|
|
7
|
+
Object.defineProperty(exports, "renderToStream", { enumerable: true, get: function () { return ssr_1.renderToStream; } });
|
|
8
|
+
Object.defineProperty(exports, "escapeHtml", { enumerable: true, get: function () { return ssr_1.escapeHtml; } });
|
|
9
|
+
var hydrate_1 = require("./hydrate");
|
|
10
|
+
Object.defineProperty(exports, "hydrate", { enumerable: true, get: function () { return hydrate_1.hydrate; } });
|
|
11
|
+
Object.defineProperty(exports, "hydrateProgressively", { enumerable: true, get: function () { return hydrate_1.hydrateProgressively; } });
|
|
12
|
+
Object.defineProperty(exports, "hydrateComponent", { enumerable: true, get: function () { return hydrate_1.hydrateComponent; } });
|
|
13
|
+
var notFound_1 = require("../navigation/notFound");
|
|
14
|
+
Object.defineProperty(exports, "notFound", { enumerable: true, get: function () { return notFound_1.notFound; } });
|
|
15
|
+
var response_1 = require("../server/response");
|
|
16
|
+
Object.defineProperty(exports, "SatsetResponse", { enumerable: true, get: function () { return response_1.SatsetResponse; } });
|
|
17
|
+
Object.defineProperty(exports, "buildSatsetRequest", { enumerable: true, get: function () { return response_1.buildSatsetRequest; } });
|
|
18
|
+
Object.defineProperty(exports, "sendSatsetResponse", { enumerable: true, get: function () { return response_1.sendSatsetResponse; } });
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";;;AAAA,6BAAyF;AAAhF,qGAAA,cAAc,OAAA;AAAE,2GAAA,oBAAoB,OAAA;AAAE,qGAAA,cAAc,OAAA;AAAE,iGAAA,UAAU,OAAA;AAGzE,qCAA4E;AAAnE,kGAAA,OAAO,OAAA;AAAE,+GAAA,oBAAoB,OAAA;AAAE,2GAAA,gBAAgB,OAAA;AAGxD,mDAAkD;AAAzC,oGAAA,QAAQ,OAAA;AAEjB,+CAA4F;AAAnF,0GAAA,cAAc,OAAA;AAAE,8GAAA,kBAAkB,OAAA;AAAE,8GAAA,kBAAkB,OAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface RenderOptions {
|
|
3
|
+
url: string;
|
|
4
|
+
head?: {
|
|
5
|
+
title?: string;
|
|
6
|
+
meta?: Array<{
|
|
7
|
+
name?: string;
|
|
8
|
+
property?: string;
|
|
9
|
+
content: string;
|
|
10
|
+
}>;
|
|
11
|
+
links?: Array<{
|
|
12
|
+
rel: string;
|
|
13
|
+
href: string;
|
|
14
|
+
}>;
|
|
15
|
+
};
|
|
16
|
+
scripts?: string[];
|
|
17
|
+
styles?: string[];
|
|
18
|
+
}
|
|
19
|
+
export interface SSRResult {
|
|
20
|
+
html: string;
|
|
21
|
+
head: string;
|
|
22
|
+
body: string;
|
|
23
|
+
}
|
|
24
|
+
export declare function renderToString(App: React.ComponentType<any>, options: RenderOptions): SSRResult;
|
|
25
|
+
export declare function renderToStaticMarkup(App: React.ComponentType<any>): string;
|
|
26
|
+
export declare function escapeHtml(text: string): string;
|
|
27
|
+
export declare function renderToStream(App: React.ComponentType<any>, options: RenderOptions): Promise<ReadableStream>;
|
|
28
|
+
//# sourceMappingURL=ssr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssr.d.ts","sourceRoot":"","sources":["../../src/core/ssr.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,KAAK,CAAC;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QACpE,KAAK,CAAC,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC9C,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAC7B,OAAO,EAAE,aAAa,GACrB,SAAS,CA4DX;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,MAAM,CAG1E;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO/C;AAGD,wBAAsB,cAAc,CAClC,GAAG,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,EAC7B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,cAAc,CAAC,CAazB"}
|
package/dist/core/ssr.js
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
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.renderToString = renderToString;
|
|
7
|
+
exports.renderToStaticMarkup = renderToStaticMarkup;
|
|
8
|
+
exports.escapeHtml = escapeHtml;
|
|
9
|
+
exports.renderToStream = renderToStream;
|
|
10
|
+
const react_1 = __importDefault(require("react"));
|
|
11
|
+
const server_1 = require("react-dom/server");
|
|
12
|
+
function renderToString(App, options) {
|
|
13
|
+
const appHtml = (0, server_1.renderToString)(react_1.default.createElement(App));
|
|
14
|
+
const { title = 'Satset App', meta = [], links = [] } = options.head || {};
|
|
15
|
+
const { scripts = [], styles = [] } = options;
|
|
16
|
+
// Generate meta tags
|
|
17
|
+
const metaTags = meta
|
|
18
|
+
.map(m => {
|
|
19
|
+
if (m.name) {
|
|
20
|
+
return `<meta name="${m.name}" content="${m.content}" />`;
|
|
21
|
+
}
|
|
22
|
+
else if (m.property) {
|
|
23
|
+
return `<meta property="${m.property}" content="${m.content}" />`;
|
|
24
|
+
}
|
|
25
|
+
return '';
|
|
26
|
+
})
|
|
27
|
+
.join('\n ');
|
|
28
|
+
// Generate link tags
|
|
29
|
+
const linkTags = links
|
|
30
|
+
.map(l => `<link rel="${l.rel}" href="${l.href}" />`)
|
|
31
|
+
.join('\n ');
|
|
32
|
+
// Generate style tags
|
|
33
|
+
const styleTags = styles
|
|
34
|
+
.map(s => `<link rel="stylesheet" href="${s}" />`)
|
|
35
|
+
.join('\n ');
|
|
36
|
+
// Generate script tags
|
|
37
|
+
const scriptTags = scripts
|
|
38
|
+
.map(s => `<script type="module" src="${s}"></script>`)
|
|
39
|
+
.join('\n ');
|
|
40
|
+
const head = `
|
|
41
|
+
<meta charset="UTF-8" />
|
|
42
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
43
|
+
<title>${escapeHtml(title)}</title>
|
|
44
|
+
${metaTags}
|
|
45
|
+
${linkTags}
|
|
46
|
+
${styleTags}
|
|
47
|
+
`.trim();
|
|
48
|
+
const body = `
|
|
49
|
+
<div id="root">${appHtml}</div>
|
|
50
|
+
${scriptTags}
|
|
51
|
+
`.trim();
|
|
52
|
+
const html = `
|
|
53
|
+
<!DOCTYPE html>
|
|
54
|
+
<html lang="en">
|
|
55
|
+
<head>
|
|
56
|
+
${head}
|
|
57
|
+
</head>
|
|
58
|
+
<body>
|
|
59
|
+
${body}
|
|
60
|
+
</body>
|
|
61
|
+
</html>
|
|
62
|
+
`.trim();
|
|
63
|
+
return { html, head, body };
|
|
64
|
+
}
|
|
65
|
+
function renderToStaticMarkup(App) {
|
|
66
|
+
const { renderToStaticMarkup: reactRenderToStaticMarkup } = require('react-dom/server');
|
|
67
|
+
return reactRenderToStaticMarkup(react_1.default.createElement(App));
|
|
68
|
+
}
|
|
69
|
+
function escapeHtml(text) {
|
|
70
|
+
return text
|
|
71
|
+
.replace(/&/g, '&')
|
|
72
|
+
.replace(/</g, '<')
|
|
73
|
+
.replace(/>/g, '>')
|
|
74
|
+
.replace(/"/g, '"')
|
|
75
|
+
.replace(/'/g, ''');
|
|
76
|
+
}
|
|
77
|
+
// Stream SSR (for large pages)
|
|
78
|
+
async function renderToStream(App, options) {
|
|
79
|
+
const { renderToPipeableStream } = require('react-dom/server');
|
|
80
|
+
return new Promise((resolve, reject) => {
|
|
81
|
+
const stream = renderToPipeableStream(react_1.default.createElement(App), {
|
|
82
|
+
onShellReady() {
|
|
83
|
+
resolve(stream);
|
|
84
|
+
},
|
|
85
|
+
onError(error) {
|
|
86
|
+
reject(error);
|
|
87
|
+
},
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=ssr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssr.js","sourceRoot":"","sources":["../../src/core/ssr.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export interface SatsetApp {
|
|
3
|
+
default: React.ComponentType<any>;
|
|
4
|
+
getServerSideProps?: (context: ServerContext) => Promise<any>;
|
|
5
|
+
getStaticProps?: () => Promise<any>;
|
|
6
|
+
}
|
|
7
|
+
export interface ServerContext {
|
|
8
|
+
req: any;
|
|
9
|
+
res: any;
|
|
10
|
+
params: Record<string, string>;
|
|
11
|
+
query: Record<string, string>;
|
|
12
|
+
}
|
|
13
|
+
export interface PageProps {
|
|
14
|
+
[key: string]: any;
|
|
15
|
+
}
|
|
16
|
+
export interface LayoutProps {
|
|
17
|
+
children: React.ReactNode;
|
|
18
|
+
params?: Record<string, string>;
|
|
19
|
+
}
|
|
20
|
+
export interface ErrorPageProps {
|
|
21
|
+
error: Error;
|
|
22
|
+
reset: () => void;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAClC,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9D,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,GAAG,CAAC;IACT,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,SAAS;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AAEzB,eAAO,MAAM,OAAO,UAAU,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.version = void 0;
|
|
18
|
+
// Main entry point untuk @satset
|
|
19
|
+
__exportStar(require("./core"), exports);
|
|
20
|
+
__exportStar(require("./router"), exports);
|
|
21
|
+
__exportStar(require("./components"), exports);
|
|
22
|
+
__exportStar(require("./server"), exports);
|
|
23
|
+
__exportStar(require("./adapter"), exports);
|
|
24
|
+
__exportStar(require("./assets"), exports);
|
|
25
|
+
// Version info
|
|
26
|
+
exports.version = '0.0.1';
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iCAAiC;AACjC,yCAAuB;AACvB,2CAAyB;AACzB,+CAA6B;AAC7B,2CAAyB;AACzB,4CAA0B;AAC1B,2CAAyB;AACzB,eAAe;AACF,QAAA,OAAO,GAAG,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notFound.d.ts","sourceRoot":"","sources":["../../src/navigation/notFound.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,IAAI,KAAK,CAIhC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notFound.js","sourceRoot":"","sources":["../../src/navigation/notFound.ts"],"names":[],"mappings":";;AAAA,4BAIC;AAJD,SAAgB,QAAQ;IACtB,MAAM,CAAC,GAAQ,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAC5B,MAAM,CAAC,CAAC;AACV,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface Route {
|
|
2
|
+
path: string;
|
|
3
|
+
component: string;
|
|
4
|
+
exact?: boolean;
|
|
5
|
+
dynamic?: boolean;
|
|
6
|
+
params?: string[];
|
|
7
|
+
catchAllOptional?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface RouteTree {
|
|
10
|
+
routes: Route[];
|
|
11
|
+
apiRoutes: Route[];
|
|
12
|
+
}
|
|
13
|
+
export declare function getRoutes(appDir: string): RouteTree;
|
|
14
|
+
export declare function matchRoute(pathname: string, routes: Route[]): {
|
|
15
|
+
route: Route;
|
|
16
|
+
params: Record<string, string>;
|
|
17
|
+
} | null;
|
|
18
|
+
export declare function generateRouteManifest(routes: Route[]): string;
|
|
19
|
+
//# sourceMappingURL=file-system.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-system.d.ts","sourceRoot":"","sources":["../../src/router/file-system.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,SAAS,EAAE,KAAK,EAAE,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAsDnD;AAyND,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,IAAI,CAqBrH;AAwDD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAS7D"}
|