frontend-hamroun 1.2.79 → 1.2.80
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 +129 -1513
- package/bin/cli.js +505 -144
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.client.cjs +2 -0
- package/dist/index.client.cjs.map +1 -0
- package/dist/index.client.js +26 -0
- package/dist/index.client.js.map +1 -0
- package/dist/index.js +298 -1
- package/dist/index.js.map +1 -0
- package/dist/jsx-runtime.cjs +2 -0
- package/dist/jsx-runtime.cjs.map +1 -0
- package/dist/jsx-runtime.js +93 -1
- package/dist/jsx-runtime.js.map +1 -0
- package/dist/renderer-Bo9zkUZ_.js +52 -0
- package/dist/renderer-Bo9zkUZ_.js.map +1 -0
- package/dist/renderer-Din1y3YM.cjs +2 -0
- package/dist/renderer-Din1y3YM.cjs.map +1 -0
- package/dist/server-renderer-CqIpQ-od.cjs +2 -0
- package/dist/server-renderer-CqIpQ-od.cjs.map +1 -0
- package/dist/server-renderer-QHt45Ip2.js +255 -0
- package/dist/server-renderer-QHt45Ip2.js.map +1 -0
- package/dist/server-renderer.cjs +2 -0
- package/dist/server-renderer.cjs.map +1 -0
- package/dist/server-renderer.js +5 -1
- package/dist/server-renderer.js.map +1 -0
- package/package.json +77 -120
- package/templates/basic-app/build.js +22 -0
- package/templates/basic-app/bun.lock +196 -0
- package/templates/basic-app/dev.js +27 -0
- package/templates/basic-app/docs/rapport_pfe.aux +27 -27
- package/templates/basic-app/docs/rapport_pfe.out +10 -10
- package/templates/basic-app/docs/rapport_pfe.toc +14 -14
- package/templates/basic-app/esbuild.config.js +28 -0
- package/templates/basic-app/index.html +1 -1
- package/templates/{fullstack-app → basic-app}/package-lock.json +4185 -5094
- package/templates/basic-app/package.json +29 -28
- package/templates/basic-app/server.js +24 -0
- package/templates/basic-app/src/App.tsx +26 -0
- package/templates/basic-app/src/client.tsx +11 -0
- package/templates/basic-app/src/components/Counter.tsx +18 -0
- package/templates/basic-app/src/jsx-shim.ts +4 -0
- package/templates/basic-app/src/main.tsx +0 -1
- package/templates/basic-app/src/server.ts +52 -0
- package/templates/basic-app/tsconfig.server.json +11 -0
- package/templates/fullstack-app/build/main.css +874 -874
- package/templates/fullstack-app/build/main.css.map +7 -7
- package/templates/fullstack-app/build/main.js +967 -967
- package/templates/fullstack-app/build/main.js.map +7 -7
- package/templates/fullstack-app/public/styles.css +768 -768
- package/templates/go/example.go +99 -154
- package/templates/go-wasm-app/babel.config.js +2 -8
- package/templates/go-wasm-app/package.json +12 -21
- package/templates/go-wasm-app/public/wasm/wasm_exec.js +561 -561
- package/templates/go-wasm-app/public/wasm/wasm_exec_node.js +39 -39
- package/templates/go-wasm-app/server.js +510 -59
- package/templates/go-wasm-app/src/app.js +2 -22
- package/templates/go-wasm-app/src/wasm/example.go +75 -75
- package/templates/go-wasm-app/vite.config.js +5 -16
- package/templates/ssr-template/server.js +2 -2
- package/templates/ssr-template/vite.config.js +5 -16
- package/dist/Counter.d.ts +0 -0
- package/dist/batch/package.json +0 -16
- package/dist/client-router/package.json +0 -16
- package/dist/component/package.json +0 -16
- package/dist/context/package.json +0 -16
- package/dist/event-bus/package.json +0 -16
- package/dist/forms/package.json +0 -16
- package/dist/hooks/package.json +0 -16
- package/dist/hooks-0728361a.cjs +0 -1
- package/dist/hooks-b58f947c.js +0 -133
- package/dist/hooks.js +0 -1
- package/dist/hooks.mjs +0 -13
- package/dist/index.mjs +0 -137
- package/dist/jsx-runtime/package.json +0 -16
- package/dist/jsx-runtime.mjs +0 -64
- package/dist/lifecycle-events/package.json +0 -16
- package/dist/package.json +0 -71
- package/dist/render-component/package.json +0 -16
- package/dist/renderer/package.json +0 -16
- package/dist/renderer.js +0 -1
- package/dist/renderer.mjs +0 -27
- package/dist/router/package.json +0 -16
- package/dist/server/package.json +0 -17
- package/dist/server/src/batch.d.ts +0 -3
- package/dist/server/src/batch.js +0 -23
- package/dist/server/src/batch.js.map +0 -1
- package/dist/server/src/client-router.d.ts +0 -60
- package/dist/server/src/client-router.js +0 -210
- package/dist/server/src/client-router.js.map +0 -1
- package/dist/server/src/component.d.ts +0 -14
- package/dist/server/src/component.js +0 -106
- package/dist/server/src/component.js.map +0 -1
- package/dist/server/src/context.d.ts +0 -13
- package/dist/server/src/context.js +0 -21
- package/dist/server/src/context.js.map +0 -1
- package/dist/server/src/event-bus.d.ts +0 -23
- package/dist/server/src/event-bus.js +0 -75
- package/dist/server/src/event-bus.js.map +0 -1
- package/dist/server/src/forms.d.ts +0 -40
- package/dist/server/src/forms.js +0 -148
- package/dist/server/src/forms.js.map +0 -1
- package/dist/server/src/hooks.d.ts +0 -12
- package/dist/server/src/hooks.js +0 -170
- package/dist/server/src/hooks.js.map +0 -1
- package/dist/server/src/index.client.d.ts +0 -12
- package/dist/server/src/index.client.js +0 -14
- package/dist/server/src/index.client.js.map +0 -1
- package/dist/server/src/index.d.ts +0 -88
- package/dist/server/src/index.js +0 -79
- package/dist/server/src/index.js.map +0 -1
- package/dist/server/src/jsx-runtime/jsx-dev-runtime.d.ts +0 -1
- package/dist/server/src/jsx-runtime/jsx-dev-runtime.js +0 -2
- package/dist/server/src/jsx-runtime/jsx-dev-runtime.js.map +0 -1
- package/dist/server/src/jsx-runtime/jsx-runtime.d.ts +0 -4
- package/dist/server/src/jsx-runtime/jsx-runtime.js +0 -41
- package/dist/server/src/jsx-runtime/jsx-runtime.js.map +0 -1
- package/dist/server/src/jsx-runtime.d.ts +0 -20
- package/dist/server/src/jsx-runtime.js +0 -105
- package/dist/server/src/jsx-runtime.js.map +0 -1
- package/dist/server/src/lifecycle-events.d.ts +0 -108
- package/dist/server/src/lifecycle-events.js +0 -177
- package/dist/server/src/lifecycle-events.js.map +0 -1
- package/dist/server/src/renderComponent.d.ts +0 -13
- package/dist/server/src/renderComponent.js +0 -30
- package/dist/server/src/renderComponent.js.map +0 -1
- package/dist/server/src/renderer.d.ts +0 -2
- package/dist/server/src/renderer.js +0 -31
- package/dist/server/src/renderer.js.map +0 -1
- package/dist/server/src/router.d.ts +0 -55
- package/dist/server/src/router.js +0 -166
- package/dist/server/src/router.js.map +0 -1
- package/dist/server/src/server/api-router.d.ts +0 -15
- package/dist/server/src/server/api-router.js +0 -111
- package/dist/server/src/server/api-router.js.map +0 -1
- package/dist/server/src/server/auth.d.ts +0 -32
- package/dist/server/src/server/auth.js +0 -80
- package/dist/server/src/server/auth.js.map +0 -1
- package/dist/server/src/server/database.d.ts +0 -24
- package/dist/server/src/server/database.js +0 -135
- package/dist/server/src/server/database.js.map +0 -1
- package/dist/server/src/server/index.d.ts +0 -116
- package/dist/server/src/server/index.js +0 -508
- package/dist/server/src/server/index.js.map +0 -1
- package/dist/server/src/server/middleware.d.ts +0 -11
- package/dist/server/src/server/middleware.js +0 -46
- package/dist/server/src/server/middleware.js.map +0 -1
- package/dist/server/src/server/server.d.ts +0 -9
- package/dist/server/src/server/server.js +0 -87
- package/dist/server/src/server/server.js.map +0 -1
- package/dist/server/src/server/templates.d.ts +0 -30
- package/dist/server/src/server/templates.js +0 -208
- package/dist/server/src/server/templates.js.map +0 -1
- package/dist/server/src/server/types.d.ts +0 -38
- package/dist/server/src/server/types.js +0 -4
- package/dist/server/src/server/types.js.map +0 -1
- package/dist/server/src/server/utils.d.ts +0 -70
- package/dist/server/src/server/utils.js +0 -156
- package/dist/server/src/server/utils.js.map +0 -1
- package/dist/server/src/server/wasm.d.ts +0 -9
- package/dist/server/src/server/wasm.js +0 -117
- package/dist/server/src/server/wasm.js.map +0 -1
- package/dist/server/src/server-renderer.d.ts +0 -5
- package/dist/server/src/server-renderer.js +0 -106
- package/dist/server/src/server-renderer.js.map +0 -1
- package/dist/server/src/server-types.d.ts +0 -42
- package/dist/server/src/server-types.js +0 -6
- package/dist/server/src/server-types.js.map +0 -1
- package/dist/server/src/store.d.ts +0 -41
- package/dist/server/src/store.js +0 -99
- package/dist/server/src/store.js.map +0 -1
- package/dist/server/src/types.d.ts +0 -19
- package/dist/server/src/types.js +0 -2
- package/dist/server/src/types.js.map +0 -1
- package/dist/server/src/utils.d.ts +0 -46
- package/dist/server/src/utils.js +0 -144
- package/dist/server/src/utils.js.map +0 -1
- package/dist/server/src/vdom.d.ts +0 -8
- package/dist/server/src/vdom.js +0 -22
- package/dist/server/src/vdom.js.map +0 -1
- package/dist/server/src/wasm.d.ts +0 -36
- package/dist/server/src/wasm.js +0 -159
- package/dist/server/src/wasm.js.map +0 -1
- package/dist/server/tsconfig.server.tsbuildinfo +0 -1
- package/dist/server-renderer/package.json +0 -16
- package/dist/server-renderer.mjs +0 -64
- package/dist/store/package.json +0 -16
- package/dist/types/package.json +0 -16
- package/dist/utils/package.json +0 -16
- package/dist/vdom/package.json +0 -16
- package/dist/wasm/package.json +0 -16
- package/dist/wasm.js +0 -1
- package/dist/wasm.mjs +0 -103
- package/templates/basic-app/docs/rapport_pfe.log +0 -399
- package/templates/complete-app/client.js +0 -58
- package/templates/complete-app/package-lock.json +0 -2536
- package/templates/complete-app/package.json +0 -17
- package/templates/complete-app/pages/about.js +0 -119
- package/templates/complete-app/pages/index.js +0 -157
- package/templates/complete-app/pages/wasm-demo.js +0 -290
- package/templates/complete-app/public/client.js +0 -80
- package/templates/complete-app/public/index.html +0 -47
- package/templates/complete-app/public/styles.css +0 -579
- package/templates/complete-app/readme.md +0 -188
- package/templates/complete-app/server.js +0 -417
- package/templates/complete-app/server.ts +0 -275
- package/templates/complete-app/src/App.tsx +0 -59
- package/templates/complete-app/src/client.ts +0 -61
- package/templates/complete-app/src/client.tsx +0 -18
- package/templates/complete-app/src/pages/index.tsx +0 -51
- package/templates/complete-app/src/server.ts +0 -218
- package/templates/complete-app/tsconfig.json +0 -22
- package/templates/complete-app/tsconfig.server.json +0 -19
- package/templates/complete-app/vite.config.js +0 -57
- package/templates/complete-app/vite.config.ts +0 -30
- package/templates/go-wasm-app/build.config.js +0 -62
- package/templates/go-wasm-app/build.js +0 -218
- package/templates/go-wasm-app/package-lock.json +0 -3732
@@ -1,177 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Lifecycle events for components and application
|
3
|
-
*/
|
4
|
-
import { eventBus } from './event-bus';
|
5
|
-
export var LifecycleEvents;
|
6
|
-
(function (LifecycleEvents) {
|
7
|
-
LifecycleEvents["APP_INIT"] = "app:init";
|
8
|
-
LifecycleEvents["APP_MOUNTED"] = "app:mounted";
|
9
|
-
LifecycleEvents["APP_UPDATED"] = "app:updated";
|
10
|
-
LifecycleEvents["APP_ERROR"] = "app:error";
|
11
|
-
LifecycleEvents["APP_DESTROYED"] = "app:destroyed";
|
12
|
-
LifecycleEvents["COMPONENT_CREATED"] = "component:created";
|
13
|
-
LifecycleEvents["COMPONENT_MOUNTED"] = "component:mounted";
|
14
|
-
LifecycleEvents["COMPONENT_UPDATED"] = "component:updated";
|
15
|
-
LifecycleEvents["COMPONENT_ERROR"] = "component:error";
|
16
|
-
LifecycleEvents["COMPONENT_UNMOUNTED"] = "component:unmounted";
|
17
|
-
LifecycleEvents["ROUTER_BEFORE_CHANGE"] = "router:before-change";
|
18
|
-
LifecycleEvents["ROUTER_AFTER_CHANGE"] = "router:after-change";
|
19
|
-
LifecycleEvents["ROUTER_ERROR"] = "router:error";
|
20
|
-
LifecycleEvents["STORE_INITIALIZED"] = "store:initialized";
|
21
|
-
LifecycleEvents["STORE_BEFORE_ACTION"] = "store:before-action";
|
22
|
-
LifecycleEvents["STORE_AFTER_ACTION"] = "store:after-action";
|
23
|
-
LifecycleEvents["STORE_ERROR"] = "store:error";
|
24
|
-
})(LifecycleEvents || (LifecycleEvents = {}));
|
25
|
-
// Event emitters
|
26
|
-
export function emitAppInit(data) {
|
27
|
-
eventBus.emit(LifecycleEvents.APP_INIT, data);
|
28
|
-
}
|
29
|
-
export function emitAppMounted(rootElement) {
|
30
|
-
eventBus.emit(LifecycleEvents.APP_MOUNTED, rootElement);
|
31
|
-
}
|
32
|
-
export function emitAppUpdated() {
|
33
|
-
eventBus.emit(LifecycleEvents.APP_UPDATED);
|
34
|
-
}
|
35
|
-
export function emitAppError(error) {
|
36
|
-
eventBus.emit(LifecycleEvents.APP_ERROR, error);
|
37
|
-
}
|
38
|
-
export function emitAppDestroyed() {
|
39
|
-
eventBus.emit(LifecycleEvents.APP_DESTROYED);
|
40
|
-
}
|
41
|
-
export function emitComponentCreated(info) {
|
42
|
-
eventBus.emit(LifecycleEvents.COMPONENT_CREATED, info);
|
43
|
-
}
|
44
|
-
export function emitComponentMounted(info, element) {
|
45
|
-
eventBus.emit(LifecycleEvents.COMPONENT_MOUNTED, info, element);
|
46
|
-
}
|
47
|
-
export function emitComponentUpdated(info, prevProps, newProps) {
|
48
|
-
eventBus.emit(LifecycleEvents.COMPONENT_UPDATED, info, prevProps, newProps);
|
49
|
-
}
|
50
|
-
export function emitComponentError(info, error) {
|
51
|
-
eventBus.emit(LifecycleEvents.COMPONENT_ERROR, info, error);
|
52
|
-
}
|
53
|
-
export function emitComponentUnmounted(info) {
|
54
|
-
eventBus.emit(LifecycleEvents.COMPONENT_UNMOUNTED, info);
|
55
|
-
}
|
56
|
-
export function emitRouterBeforeChange(info) {
|
57
|
-
return new Promise(resolve => {
|
58
|
-
// Allow hooks to prevent navigation
|
59
|
-
let prevented = false;
|
60
|
-
const prevent = () => {
|
61
|
-
prevented = true;
|
62
|
-
};
|
63
|
-
eventBus.emit(LifecycleEvents.ROUTER_BEFORE_CHANGE, info, prevent);
|
64
|
-
// Resolve with whether navigation should continue
|
65
|
-
resolve(!prevented);
|
66
|
-
});
|
67
|
-
}
|
68
|
-
export function emitRouterAfterChange(info) {
|
69
|
-
eventBus.emit(LifecycleEvents.ROUTER_AFTER_CHANGE, info);
|
70
|
-
}
|
71
|
-
export function emitRouterError(error, info) {
|
72
|
-
eventBus.emit(LifecycleEvents.ROUTER_ERROR, error, info);
|
73
|
-
}
|
74
|
-
export function emitStoreInitialized(state) {
|
75
|
-
eventBus.emit(LifecycleEvents.STORE_INITIALIZED, state);
|
76
|
-
}
|
77
|
-
export function emitStoreBeforeAction(actionType, payload, state) {
|
78
|
-
eventBus.emit(LifecycleEvents.STORE_BEFORE_ACTION, actionType, payload, state);
|
79
|
-
}
|
80
|
-
export function emitStoreAfterAction(info) {
|
81
|
-
eventBus.emit(LifecycleEvents.STORE_AFTER_ACTION, info);
|
82
|
-
}
|
83
|
-
export function emitStoreError(error, actionType, payload) {
|
84
|
-
eventBus.emit(LifecycleEvents.STORE_ERROR, error, actionType, payload);
|
85
|
-
}
|
86
|
-
// Event listeners
|
87
|
-
export function onAppInit(handler) {
|
88
|
-
return eventBus.on(LifecycleEvents.APP_INIT, handler);
|
89
|
-
}
|
90
|
-
export function onAppMounted(handler) {
|
91
|
-
return eventBus.on(LifecycleEvents.APP_MOUNTED, handler);
|
92
|
-
}
|
93
|
-
export function onAppUpdated(handler) {
|
94
|
-
return eventBus.on(LifecycleEvents.APP_UPDATED, handler);
|
95
|
-
}
|
96
|
-
export function onAppError(handler) {
|
97
|
-
return eventBus.on(LifecycleEvents.APP_ERROR, handler);
|
98
|
-
}
|
99
|
-
export function onAppDestroyed(handler) {
|
100
|
-
return eventBus.on(LifecycleEvents.APP_DESTROYED, handler);
|
101
|
-
}
|
102
|
-
export function onComponentCreated(handler) {
|
103
|
-
return eventBus.on(LifecycleEvents.COMPONENT_CREATED, handler);
|
104
|
-
}
|
105
|
-
export function onComponentMounted(handler) {
|
106
|
-
return eventBus.on(LifecycleEvents.COMPONENT_MOUNTED, handler);
|
107
|
-
}
|
108
|
-
export function onComponentUpdated(handler) {
|
109
|
-
return eventBus.on(LifecycleEvents.COMPONENT_UPDATED, handler);
|
110
|
-
}
|
111
|
-
export function onComponentError(handler) {
|
112
|
-
return eventBus.on(LifecycleEvents.COMPONENT_ERROR, handler);
|
113
|
-
}
|
114
|
-
export function onComponentUnmounted(handler) {
|
115
|
-
return eventBus.on(LifecycleEvents.COMPONENT_UNMOUNTED, handler);
|
116
|
-
}
|
117
|
-
export function onRouterBeforeChange(handler) {
|
118
|
-
return eventBus.on(LifecycleEvents.ROUTER_BEFORE_CHANGE, handler);
|
119
|
-
}
|
120
|
-
export function onRouterAfterChange(handler) {
|
121
|
-
return eventBus.on(LifecycleEvents.ROUTER_AFTER_CHANGE, handler);
|
122
|
-
}
|
123
|
-
export function onRouterError(handler) {
|
124
|
-
return eventBus.on(LifecycleEvents.ROUTER_ERROR, handler);
|
125
|
-
}
|
126
|
-
export function onStoreInitialized(handler) {
|
127
|
-
return eventBus.on(LifecycleEvents.STORE_INITIALIZED, handler);
|
128
|
-
}
|
129
|
-
export function onStoreBeforeAction(handler) {
|
130
|
-
return eventBus.on(LifecycleEvents.STORE_BEFORE_ACTION, handler);
|
131
|
-
}
|
132
|
-
export function onStoreAfterAction(handler) {
|
133
|
-
return eventBus.on(LifecycleEvents.STORE_AFTER_ACTION, handler);
|
134
|
-
}
|
135
|
-
export function onStoreError(handler) {
|
136
|
-
return eventBus.on(LifecycleEvents.STORE_ERROR, handler);
|
137
|
-
}
|
138
|
-
export default {
|
139
|
-
LifecycleEvents,
|
140
|
-
// Emitters
|
141
|
-
emitAppInit,
|
142
|
-
emitAppMounted,
|
143
|
-
emitAppUpdated,
|
144
|
-
emitAppError,
|
145
|
-
emitAppDestroyed,
|
146
|
-
emitComponentCreated,
|
147
|
-
emitComponentMounted,
|
148
|
-
emitComponentUpdated,
|
149
|
-
emitComponentError,
|
150
|
-
emitComponentUnmounted,
|
151
|
-
emitRouterBeforeChange,
|
152
|
-
emitRouterAfterChange,
|
153
|
-
emitRouterError,
|
154
|
-
emitStoreInitialized,
|
155
|
-
emitStoreBeforeAction,
|
156
|
-
emitStoreAfterAction,
|
157
|
-
emitStoreError,
|
158
|
-
// Listeners
|
159
|
-
onAppInit,
|
160
|
-
onAppMounted,
|
161
|
-
onAppUpdated,
|
162
|
-
onAppError,
|
163
|
-
onAppDestroyed,
|
164
|
-
onComponentCreated,
|
165
|
-
onComponentMounted,
|
166
|
-
onComponentUpdated,
|
167
|
-
onComponentError,
|
168
|
-
onComponentUnmounted,
|
169
|
-
onRouterBeforeChange,
|
170
|
-
onRouterAfterChange,
|
171
|
-
onRouterError,
|
172
|
-
onStoreInitialized,
|
173
|
-
onStoreBeforeAction,
|
174
|
-
onStoreAfterAction,
|
175
|
-
onStoreError
|
176
|
-
};
|
177
|
-
//# sourceMappingURL=lifecycle-events.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"lifecycle-events.js","sourceRoot":"","sources":["../../../src/lifecycle-events.ts"],"names":[],"mappings":"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"}
|
@@ -1,13 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Result of component rendering
|
3
|
-
*/
|
4
|
-
export interface RenderResult {
|
5
|
-
html: string;
|
6
|
-
success: boolean;
|
7
|
-
error?: Error;
|
8
|
-
}
|
9
|
-
/**
|
10
|
-
* Renders a component to an HTML string with error handling
|
11
|
-
*/
|
12
|
-
export declare function renderComponent(Component: any, props?: any): Promise<RenderResult>;
|
13
|
-
export default renderComponent;
|
@@ -1,30 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Utility for rendering components to strings and hydrating them
|
3
|
-
*/
|
4
|
-
import { renderToString } from './server-renderer';
|
5
|
-
/**
|
6
|
-
* Renders a component to an HTML string with error handling
|
7
|
-
*/
|
8
|
-
export async function renderComponent(Component, props = {}) {
|
9
|
-
try {
|
10
|
-
// Call the component function with props
|
11
|
-
const element = Component(props);
|
12
|
-
// Convert the element to an HTML string
|
13
|
-
const html = renderToString(element);
|
14
|
-
return {
|
15
|
-
html,
|
16
|
-
success: true
|
17
|
-
};
|
18
|
-
}
|
19
|
-
catch (error) {
|
20
|
-
console.error('Error rendering component:', error);
|
21
|
-
return {
|
22
|
-
html: `<div class="error">Error rendering component</div>`,
|
23
|
-
success: false,
|
24
|
-
// Fix the type error by ensuring error is an Error object
|
25
|
-
error: error instanceof Error ? error : new Error(String(error))
|
26
|
-
};
|
27
|
-
}
|
28
|
-
}
|
29
|
-
export default renderComponent;
|
30
|
-
//# sourceMappingURL=renderComponent.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"renderComponent.js","sourceRoot":"","sources":["../../../src/renderComponent.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAWtD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,SAAc,EAAE,QAAa,EAAE;IACnE,IAAI,CAAC;QACH,yCAAyC;QACzC,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAEjC,wCAAwC;QACxC,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QAErC,OAAO;YACL,IAAI;YACJ,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QACnD,OAAO;YACL,IAAI,EAAE,oDAAoD;YAC1D,OAAO,EAAE,KAAK;YACd,0DAA0D;YAC1D,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACjE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,eAAe,eAAe,CAAC"}
|
@@ -1,31 +0,0 @@
|
|
1
|
-
import { createElement } from './jsx-runtime';
|
2
|
-
import { prepareRender, finishRender, setRenderCallback } from './hooks';
|
3
|
-
import { batchUpdates } from './batch';
|
4
|
-
let isHydrating = false;
|
5
|
-
export async function hydrate(element, container) {
|
6
|
-
isHydrating = true;
|
7
|
-
try {
|
8
|
-
await render(element, container);
|
9
|
-
}
|
10
|
-
finally {
|
11
|
-
isHydrating = false;
|
12
|
-
}
|
13
|
-
}
|
14
|
-
export async function render(element, container) {
|
15
|
-
console.log('Rendering to:', container.id);
|
16
|
-
batchUpdates(async () => {
|
17
|
-
const rendererId = prepareRender();
|
18
|
-
try {
|
19
|
-
setRenderCallback(render, element, container);
|
20
|
-
const domNode = await createElement(element);
|
21
|
-
if (!isHydrating) {
|
22
|
-
container.innerHTML = '';
|
23
|
-
}
|
24
|
-
container.appendChild(domNode);
|
25
|
-
}
|
26
|
-
finally {
|
27
|
-
finishRender();
|
28
|
-
}
|
29
|
-
});
|
30
|
-
}
|
31
|
-
//# sourceMappingURL=renderer.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../../src/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAY,EAAE,SAAsB;IAChE,WAAW,GAAG,IAAI,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACnC,CAAC;YAAS,CAAC;QACT,WAAW,GAAG,KAAK,CAAC;IACtB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAY,EAAE,SAAsB;IAC/D,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;IAE3C,YAAY,CAAC,KAAK,IAAI,EAAE;QACtB,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;YAE7C,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,SAAS,CAAC,SAAS,GAAG,EAAE,CAAC;YAC3B,CAAC;YACD,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAEjC,CAAC;gBAAS,CAAC;YACT,YAAY,EAAE,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
@@ -1,55 +0,0 @@
|
|
1
|
-
export interface Route {
|
2
|
-
path: string;
|
3
|
-
component: any;
|
4
|
-
exact?: boolean;
|
5
|
-
children?: Route[];
|
6
|
-
}
|
7
|
-
export interface RouterContextValue {
|
8
|
-
currentPath: string;
|
9
|
-
navigate: (path: string) => void;
|
10
|
-
params: Record<string, string>;
|
11
|
-
query: Record<string, string>;
|
12
|
-
}
|
13
|
-
export interface RouteParams {
|
14
|
-
[key: string]: string;
|
15
|
-
}
|
16
|
-
export declare const RouterContext: import("./context.js").Context<RouterContextValue>;
|
17
|
-
export declare function useRouter(): RouterContextValue;
|
18
|
-
export declare function useLocation(): {
|
19
|
-
pathname: string;
|
20
|
-
search: string;
|
21
|
-
hash: string;
|
22
|
-
state: {};
|
23
|
-
};
|
24
|
-
export declare function useParams<T extends RouteParams = RouteParams>(): T;
|
25
|
-
export declare function useNavigate(): (path: string) => void;
|
26
|
-
export declare function RouterProvider({ children }: {
|
27
|
-
children: any;
|
28
|
-
}): any;
|
29
|
-
export declare function Router({ routes }: {
|
30
|
-
routes: Route[];
|
31
|
-
}): any;
|
32
|
-
export declare function Link({ to, children, ...rest }: {
|
33
|
-
to: string;
|
34
|
-
children: any;
|
35
|
-
[key: string]: any;
|
36
|
-
}): any;
|
37
|
-
export declare function Route({ path, component }: {
|
38
|
-
path: string;
|
39
|
-
component: any;
|
40
|
-
}): null;
|
41
|
-
export declare function Switch({ children }: {
|
42
|
-
children: any;
|
43
|
-
}): any;
|
44
|
-
declare const _default: {
|
45
|
-
RouterProvider: typeof RouterProvider;
|
46
|
-
Router: typeof Router;
|
47
|
-
Link: typeof Link;
|
48
|
-
Route: typeof Route;
|
49
|
-
Switch: typeof Switch;
|
50
|
-
useRouter: typeof useRouter;
|
51
|
-
useParams: typeof useParams;
|
52
|
-
useNavigate: typeof useNavigate;
|
53
|
-
useLocation: typeof useLocation;
|
54
|
-
};
|
55
|
-
export default _default;
|
@@ -1,166 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Router implementation for client and server navigation
|
3
|
-
*/
|
4
|
-
import { useState, useEffect } from './hooks';
|
5
|
-
import { createContext, useContext } from './context';
|
6
|
-
import { jsx } from './jsx-runtime';
|
7
|
-
export const RouterContext = createContext({
|
8
|
-
currentPath: '/',
|
9
|
-
navigate: () => { },
|
10
|
-
params: {},
|
11
|
-
query: {}
|
12
|
-
});
|
13
|
-
export function useRouter() {
|
14
|
-
return useContext(RouterContext);
|
15
|
-
}
|
16
|
-
export function useLocation() {
|
17
|
-
const router = useContext(RouterContext);
|
18
|
-
return {
|
19
|
-
pathname: router.currentPath,
|
20
|
-
search: '', // TODO: Implement search parsing
|
21
|
-
hash: '', // TODO: Implement hash parsing
|
22
|
-
state: {} // TODO: Implement history state
|
23
|
-
};
|
24
|
-
}
|
25
|
-
export function useParams() {
|
26
|
-
const router = useContext(RouterContext);
|
27
|
-
return router.params;
|
28
|
-
}
|
29
|
-
export function useNavigate() {
|
30
|
-
const router = useContext(RouterContext);
|
31
|
-
return router.navigate;
|
32
|
-
}
|
33
|
-
export function RouterProvider({ children }) {
|
34
|
-
// Initial path should be window.location.pathname on client, or passed from server context
|
35
|
-
const [currentPath, setCurrentPath] = useState(typeof window !== 'undefined' ? window.location.pathname : '/');
|
36
|
-
const [params, setParams] = useState({});
|
37
|
-
const [query, setQuery] = useState({});
|
38
|
-
// Update path when URL changes
|
39
|
-
useEffect(() => {
|
40
|
-
if (typeof window === 'undefined')
|
41
|
-
return;
|
42
|
-
const handlePopState = () => {
|
43
|
-
setCurrentPath(window.location.pathname);
|
44
|
-
parseQuery(window.location.search);
|
45
|
-
};
|
46
|
-
window.addEventListener('popstate', handlePopState);
|
47
|
-
// Parse initial query
|
48
|
-
parseQuery(window.location.search);
|
49
|
-
return () => {
|
50
|
-
window.removeEventListener('popstate', handlePopState);
|
51
|
-
};
|
52
|
-
}, []);
|
53
|
-
// Parse query string into object
|
54
|
-
const parseQuery = (queryString) => {
|
55
|
-
const queryObj = {};
|
56
|
-
if (queryString.startsWith('?')) {
|
57
|
-
queryString = queryString.substring(1);
|
58
|
-
}
|
59
|
-
queryString.split('&').forEach(pair => {
|
60
|
-
if (!pair)
|
61
|
-
return;
|
62
|
-
const [key, value] = pair.split('=');
|
63
|
-
queryObj[decodeURIComponent(key)] = decodeURIComponent(value || '');
|
64
|
-
});
|
65
|
-
setQuery(queryObj);
|
66
|
-
};
|
67
|
-
// Navigate programmatically
|
68
|
-
const navigate = (path) => {
|
69
|
-
if (typeof window === 'undefined')
|
70
|
-
return;
|
71
|
-
window.history.pushState(null, '', path);
|
72
|
-
setCurrentPath(path);
|
73
|
-
parseQuery(window.location.search);
|
74
|
-
};
|
75
|
-
return jsx(RouterContext.Provider, {
|
76
|
-
value: { currentPath, navigate, params, query },
|
77
|
-
children
|
78
|
-
});
|
79
|
-
}
|
80
|
-
export function Router({ routes }) {
|
81
|
-
const router = useRouter();
|
82
|
-
const currentPath = router.currentPath;
|
83
|
-
// Find matching route
|
84
|
-
const matchedRoute = findMatchingRoute(routes, currentPath);
|
85
|
-
if (!matchedRoute) {
|
86
|
-
return jsx('div', { children: '404 - Page Not Found' });
|
87
|
-
}
|
88
|
-
return matchedRoute.component({ children: matchedRoute.children });
|
89
|
-
}
|
90
|
-
function findMatchingRoute(routes, path) {
|
91
|
-
for (const route of routes) {
|
92
|
-
const match = matchPath(path, route);
|
93
|
-
if (match) {
|
94
|
-
return {
|
95
|
-
...route,
|
96
|
-
params: match.params
|
97
|
-
};
|
98
|
-
}
|
99
|
-
}
|
100
|
-
return null;
|
101
|
-
}
|
102
|
-
function matchPath(pathname, route) {
|
103
|
-
const { path, exact = true } = route;
|
104
|
-
// Convert route pattern to regex
|
105
|
-
const pattern = path.replace(/:[a-zA-Z0-9_]+/g, '([^/]+)');
|
106
|
-
const regex = new RegExp(`^${pattern}${exact ? '$' : ''}`);
|
107
|
-
const match = pathname.match(regex);
|
108
|
-
if (!match) {
|
109
|
-
return null;
|
110
|
-
}
|
111
|
-
// Extract params
|
112
|
-
const params = {};
|
113
|
-
const paramNames = path.match(/:[a-zA-Z0-9_]+/g) || [];
|
114
|
-
paramNames.forEach((paramName, index) => {
|
115
|
-
params[paramName.substring(1)] = match[index + 1];
|
116
|
-
});
|
117
|
-
return { params };
|
118
|
-
}
|
119
|
-
export function Link({ to, children, ...rest }) {
|
120
|
-
const router = useRouter();
|
121
|
-
const navigate = router.navigate;
|
122
|
-
const handleClick = (e) => {
|
123
|
-
e.preventDefault();
|
124
|
-
navigate(to);
|
125
|
-
};
|
126
|
-
return jsx('a', {
|
127
|
-
href: to,
|
128
|
-
onClick: handleClick,
|
129
|
-
...rest,
|
130
|
-
children
|
131
|
-
});
|
132
|
-
}
|
133
|
-
export function Route({ path, component }) {
|
134
|
-
// This is a configuration component, not actually rendered
|
135
|
-
return null;
|
136
|
-
}
|
137
|
-
export function Switch({ children }) {
|
138
|
-
const router = useRouter();
|
139
|
-
const currentPath = router.currentPath;
|
140
|
-
// Find the first matching route
|
141
|
-
const child = Array.isArray(children)
|
142
|
-
? children.find(child => {
|
143
|
-
if (!child || !child.props)
|
144
|
-
return false;
|
145
|
-
const routeObj = {
|
146
|
-
path: child.props.path,
|
147
|
-
component: child.props.component,
|
148
|
-
exact: child.props.exact
|
149
|
-
};
|
150
|
-
return matchPath(currentPath, routeObj);
|
151
|
-
})
|
152
|
-
: children;
|
153
|
-
return child || null;
|
154
|
-
}
|
155
|
-
export default {
|
156
|
-
RouterProvider,
|
157
|
-
Router,
|
158
|
-
Link,
|
159
|
-
Route,
|
160
|
-
Switch,
|
161
|
-
useRouter,
|
162
|
-
useParams,
|
163
|
-
useNavigate,
|
164
|
-
useLocation
|
165
|
-
};
|
166
|
-
//# sourceMappingURL=router.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/router.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAoBvC,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAqB;IAC7D,WAAW,EAAE,GAAG;IAChB,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;IAClB,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,EAAE;CACV,CAAC,CAAC;AAEH,MAAM,UAAU,SAAS;IACvB,OAAO,UAAU,CAAqB,aAAa,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,MAAM,MAAM,GAAG,UAAU,CAAqB,aAAa,CAAC,CAAC;IAC7D,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,WAAW;QAC5B,MAAM,EAAE,EAAE,EAAE,iCAAiC;QAC7C,IAAI,EAAE,EAAE,EAAE,+BAA+B;QACzC,KAAK,EAAE,EAAE,CAAC,gCAAgC;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,MAAM,MAAM,GAAG,UAAU,CAAqB,aAAa,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC,MAAW,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,MAAM,MAAM,GAAG,UAAU,CAAqB,aAAa,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC,QAAQ,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAE,QAAQ,EAAqB;IAC5D,2FAA2F;IAC3F,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAC5C,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAC/D,CAAC;IAEF,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAyB,EAAE,CAAC,CAAC;IACjE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAyB,EAAE,CAAC,CAAC;IAE/D,+BAA+B;IAC/B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO;QAE1C,MAAM,cAAc,GAAG,GAAG,EAAE;YAC1B,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACzC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAEpD,sBAAsB;QACtB,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEnC,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QACzD,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,iCAAiC;IACjC,MAAM,UAAU,GAAG,CAAC,WAAmB,EAAE,EAAE;QACzC,MAAM,QAAQ,GAA2B,EAAE,CAAC;QAE5C,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC;QAED,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACpC,IAAI,CAAC,IAAI;gBAAE,OAAO;YAElB,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC,CAAC;IAEF,4BAA4B;IAC5B,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE;QAChC,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO;QAE1C,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QACzC,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC;IAEF,OAAO,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE;QACjC,KAAK,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;QAC/C,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,EAAE,MAAM,EAAuB;IACpD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IAEvC,sBAAsB;IACtB,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAE5D,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,sBAAsB,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,YAAY,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAe,EAAE,IAAY;IACtD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACrC,IAAI,KAAK,EAAE,CAAC;YACV,OAAO;gBACL,GAAG,KAAK;gBACR,MAAM,EAAE,KAAK,CAAC,MAAM;aACZ,CAAC;QACb,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB,EAAE,KAAY;IAC/C,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAErC,iCAAiC;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE3D,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iBAAiB;IACjB,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;IAEvD,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;QACtC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAqD;IAC/F,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAEjC,MAAM,WAAW,GAAG,CAAC,CAAM,EAAE,EAAE;QAC7B,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,QAAQ,CAAC,EAAE,CAAC,CAAC;IACf,CAAC,CAAC;IAEF,OAAO,GAAG,CAAC,GAAG,EAAE;QACd,IAAI,EAAE,EAAE;QACR,OAAO,EAAE,WAAW;QACpB,GAAG,IAAI;QACP,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAoC;IACzE,2DAA2D;IAC3D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,EAAE,QAAQ,EAAqB;IACpD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IAEvC,gCAAgC;IAChC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QACnC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACpB,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAC;YACzC,MAAM,QAAQ,GAAU;gBACtB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;gBACtB,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS;gBAChC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK;aACzB,CAAC;YACF,OAAO,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC,CAAC;QACJ,CAAC,CAAC,QAAQ,CAAC;IAEb,OAAO,KAAK,IAAI,IAAI,CAAC;AACvB,CAAC;AAED,eAAe;IACb,cAAc;IACd,MAAM;IACN,IAAI;IACJ,KAAK;IACL,MAAM;IACN,SAAS;IACT,SAAS;IACT,WAAW;IACX,WAAW;CACZ,CAAC"}
|
@@ -1,15 +0,0 @@
|
|
1
|
-
import { Router } from 'express';
|
2
|
-
import { AuthService } from './auth.js';
|
3
|
-
export declare class ApiRouter {
|
4
|
-
router: Router;
|
5
|
-
private apiDir;
|
6
|
-
private auth;
|
7
|
-
constructor(apiDir: string, auth?: AuthService | null);
|
8
|
-
private setupRoutes;
|
9
|
-
private scanDirectory;
|
10
|
-
private isRouteFile;
|
11
|
-
private getRoutePath;
|
12
|
-
private registerRoute;
|
13
|
-
private isValidRouteModule;
|
14
|
-
private wrapHandler;
|
15
|
-
}
|
@@ -1,111 +0,0 @@
|
|
1
|
-
import express from 'express';
|
2
|
-
import path from 'path';
|
3
|
-
import fs from 'fs';
|
4
|
-
export class ApiRouter {
|
5
|
-
constructor(apiDir, auth = null) {
|
6
|
-
Object.defineProperty(this, "router", {
|
7
|
-
enumerable: true,
|
8
|
-
configurable: true,
|
9
|
-
writable: true,
|
10
|
-
value: void 0
|
11
|
-
});
|
12
|
-
Object.defineProperty(this, "apiDir", {
|
13
|
-
enumerable: true,
|
14
|
-
configurable: true,
|
15
|
-
writable: true,
|
16
|
-
value: void 0
|
17
|
-
});
|
18
|
-
Object.defineProperty(this, "auth", {
|
19
|
-
enumerable: true,
|
20
|
-
configurable: true,
|
21
|
-
writable: true,
|
22
|
-
value: void 0
|
23
|
-
});
|
24
|
-
this.router = express.Router();
|
25
|
-
this.apiDir = path.resolve(process.cwd(), apiDir);
|
26
|
-
this.auth = auth;
|
27
|
-
this.setupRoutes();
|
28
|
-
}
|
29
|
-
setupRoutes() {
|
30
|
-
if (!fs.existsSync(this.apiDir)) {
|
31
|
-
console.log(`API directory not found: ${this.apiDir}`);
|
32
|
-
return;
|
33
|
-
}
|
34
|
-
this.scanDirectory(this.apiDir, '');
|
35
|
-
}
|
36
|
-
scanDirectory(dirPath, routePrefix) {
|
37
|
-
const entries = fs.readdirSync(dirPath, { withFileTypes: true });
|
38
|
-
for (const entry of entries) {
|
39
|
-
const fullPath = path.join(dirPath, entry.name);
|
40
|
-
if (entry.isDirectory()) {
|
41
|
-
// Recursively scan subdirectories
|
42
|
-
this.scanDirectory(fullPath, `${routePrefix}/${entry.name}`);
|
43
|
-
}
|
44
|
-
else if (this.isRouteFile(entry.name)) {
|
45
|
-
// Process route file
|
46
|
-
const routePath = this.getRoutePath(entry.name, routePrefix);
|
47
|
-
this.registerRoute(fullPath, routePath);
|
48
|
-
}
|
49
|
-
}
|
50
|
-
}
|
51
|
-
isRouteFile(filename) {
|
52
|
-
return filename.endsWith('.js') ||
|
53
|
-
filename.endsWith('.ts') ||
|
54
|
-
filename.endsWith('.mjs');
|
55
|
-
}
|
56
|
-
getRoutePath(filename, routePrefix) {
|
57
|
-
// Remove extension and handle special names
|
58
|
-
const baseName = path.basename(filename, path.extname(filename));
|
59
|
-
if (baseName === 'index') {
|
60
|
-
return routePrefix || '/';
|
61
|
-
}
|
62
|
-
// Handle dynamic routes [param]
|
63
|
-
const paramMatch = baseName.match(/^\[(.+)\]$/);
|
64
|
-
if (paramMatch) {
|
65
|
-
return `${routePrefix}/:${paramMatch[1]}`;
|
66
|
-
}
|
67
|
-
return `${routePrefix}/${baseName}`;
|
68
|
-
}
|
69
|
-
async registerRoute(filePath, routePath) {
|
70
|
-
try {
|
71
|
-
// Dynamic import the route file
|
72
|
-
const routeModule = await import(filePath);
|
73
|
-
if (!this.isValidRouteModule(routeModule)) {
|
74
|
-
console.warn(`Invalid route module: ${filePath}`);
|
75
|
-
return;
|
76
|
-
}
|
77
|
-
console.log(`Registering API route: ${routePath}`);
|
78
|
-
// Register middleware if any
|
79
|
-
const middleware = routeModule.middleware || [];
|
80
|
-
// Register HTTP methods
|
81
|
-
for (const method of ['get', 'post', 'put', 'delete', 'patch', 'options']) {
|
82
|
-
const handler = routeModule[method];
|
83
|
-
if (typeof handler === 'function') {
|
84
|
-
const routerMethod = this.router[method];
|
85
|
-
routerMethod(routePath, ...middleware, this.wrapHandler(handler));
|
86
|
-
}
|
87
|
-
}
|
88
|
-
}
|
89
|
-
catch (error) {
|
90
|
-
console.error(`Error registering route (${filePath}):`, error);
|
91
|
-
}
|
92
|
-
}
|
93
|
-
isValidRouteModule(module) {
|
94
|
-
if (!module)
|
95
|
-
return false;
|
96
|
-
// Check if at least one HTTP method handler is defined
|
97
|
-
return ['get', 'post', 'put', 'delete', 'patch', 'options']
|
98
|
-
.some(method => typeof module[method] === 'function');
|
99
|
-
}
|
100
|
-
wrapHandler(handler) {
|
101
|
-
return async (req, res, next) => {
|
102
|
-
try {
|
103
|
-
await handler(req, res, next);
|
104
|
-
}
|
105
|
-
catch (error) {
|
106
|
-
next(error);
|
107
|
-
}
|
108
|
-
};
|
109
|
-
}
|
110
|
-
}
|
111
|
-
//# sourceMappingURL=api-router.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"api-router.js","sourceRoot":"","sources":["../../../../src/server/api-router.ts"],"names":[],"mappings":"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"}
|