@azure-net/kit 4.0.0 → 5.0.0-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/delivery/index.d.ts +3 -0
- package/dist/delivery/index.js +3 -0
- package/dist/{core/delivery/injectableDependencies → delivery/injectable-dependencies}/AsyncHelpers.d.ts +1 -1
- package/dist/{core/delivery/injectableDependencies → delivery/injectable-dependencies}/AsyncHelpers.js +1 -1
- package/dist/delivery/injectable-dependencies/ErrorHandler.d.ts +7 -0
- package/dist/{core/delivery/injectableDependencies → delivery/injectable-dependencies}/ErrorHandler.js +3 -2
- package/dist/{core/delivery → delivery}/schema/Schema.js +2 -2
- package/dist/{core/delivery → delivery}/schema/rules/Rules.d.ts +4 -3
- package/dist/{core/delivery → delivery}/schema/rules/Rules.js +17 -1
- package/dist/{core/delivery → delivery}/schema/rules/messages/En.d.ts +1 -1
- package/dist/{core/delivery → delivery}/schema/rules/messages/En.js +1 -0
- package/dist/{core/delivery → delivery}/schema/rules/messages/Ru.d.ts +1 -1
- package/dist/{core/delivery → delivery}/schema/rules/messages/Ru.js +1 -0
- package/dist/{core/delivery/schema/rules/messages/types.d.ts → delivery/schema/rules/messages/Types.d.ts} +1 -0
- package/dist/{core/delivery → delivery}/schema/rules/messages/WithI18n.d.ts +1 -1
- package/dist/{core/delivery → delivery}/schema/rules/messages/WithI18n.js +1 -0
- package/dist/{core/delivery → delivery}/schema/rules/messages/index.d.ts +1 -1
- package/dist/{core/delivery → delivery}/schema/rules/messages/index.js +1 -1
- package/dist/delivery.d.ts +2 -0
- package/dist/delivery.js +2 -0
- package/dist/errors.d.ts +4 -0
- package/dist/errors.js +4 -0
- package/dist/external/edges/Dev.d.ts +1 -0
- package/dist/external/edges/Dev.js +1 -0
- package/dist/external/edges/Edges.d.ts +1 -0
- package/dist/external/edges/Edges.js +1 -0
- package/dist/external/edges/ServerContext.d.ts +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/{core/infra → infra}/datasource/BaseDatasource.d.ts +1 -1
- package/dist/{core/infra → infra}/datasource/BaseDatasource.js +1 -1
- package/dist/{core/infra/httpService → infra/http-service}/HttpServiceInstance.js +2 -2
- package/dist/infra/index.d.ts +5 -0
- package/dist/infra/index.js +5 -0
- package/dist/{core/infra → infra}/query/QueryBuilder.js +1 -1
- package/dist/{core/infra → infra}/response/BaseResponse.d.ts +1 -1
- package/dist/{core/infra → infra}/response/BaseResponse.js +1 -1
- package/dist/infra.d.ts +1 -0
- package/dist/infra.js +1 -0
- package/dist/plugin/AzureNetPlugin.d.ts +7 -0
- package/dist/plugin/AzureNetPlugin.js +402 -0
- package/dist/plugin/index.d.ts +1 -0
- package/dist/plugin/index.js +1 -0
- package/dist/shared/app/App.d.ts +96 -0
- package/dist/shared/app/App.js +244 -0
- package/dist/shared/app/index.d.ts +4 -0
- package/dist/shared/app/index.js +1 -0
- package/dist/shared/app/middleware/ClientMiddleware.d.ts +8 -0
- package/dist/shared/app/middleware/ClientMiddleware.js +31 -0
- package/dist/shared/app/middleware/ServerMiddleware.d.ts +9 -0
- package/dist/shared/app/middleware/ServerMiddleware.js +31 -0
- package/dist/shared/app/middleware/Shared.d.ts +1 -0
- package/dist/{core/shared/appError → shared/app-error}/AppError.d.ts +1 -1
- package/dist/{core/shared/appError → shared/app-error}/AppError.js +2 -2
- package/dist/shared/app-error/index.d.ts +1 -0
- package/dist/shared/app-error/index.js +1 -0
- package/dist/{core/shared/boundaryProvider → shared/boundary-provider}/Provider.js +28 -4
- package/dist/{core/shared → shared}/cookie/UniversalCookie.js +2 -3
- package/dist/shared/event-bus/EventBus.d.ts +2 -0
- package/dist/shared/event-bus/EventBus.js +6 -0
- package/dist/shared/index.d.ts +5 -0
- package/dist/shared/index.js +5 -0
- package/dist/{core/svelte/ActiveForm → svelte/active-form}/ActiveForm.svelte.d.ts +1 -1
- package/dist/{core/svelte/ActiveForm → svelte/active-form}/ActiveForm.svelte.js +1 -1
- package/dist/{core/svelte/AsyncSignal → svelte/async-signal}/AsyncSignal.svelte.js +1 -1
- package/dist/svelte/index.d.ts +3 -0
- package/dist/svelte/index.js +3 -0
- package/dist/{core/svelte/Query → svelte/query}/Query.svelte.js +1 -1
- package/package.json +29 -36
- package/dist/core/delivery/index.js +0 -1
- package/dist/core/delivery/injectableDependencies/ErrorHandler.d.ts +0 -3
- package/dist/core/delivery.d.ts +0 -5
- package/dist/core/delivery.js +0 -5
- package/dist/core/errors.d.ts +0 -4
- package/dist/core/errors.js +0 -4
- package/dist/core/index.d.ts +0 -6
- package/dist/core/index.js +0 -6
- package/dist/core/infra/index.d.ts +0 -5
- package/dist/core/infra/index.js +0 -5
- package/dist/core/infra.d.ts +0 -6
- package/dist/core/infra.js +0 -6
- package/dist/core/shared/appEventBus/EventBus.d.ts +0 -4
- package/dist/core/shared/appEventBus/EventBus.js +0 -8
- package/dist/core/shared/middleware/Middleware.d.ts +0 -19
- package/dist/core/shared/middleware/Middleware.js +0 -74
- package/dist/core/shared/middleware/index.d.ts +0 -1
- package/dist/core/shared/middleware/index.js +0 -1
- package/dist/core/svelte/index.d.ts +0 -3
- package/dist/core/svelte/index.js +0 -3
- package/dist/edges/context/index.js +0 -1
- package/dist/edges/dev/index.d.ts +0 -1
- package/dist/edges/dev/index.js +0 -1
- package/dist/edges/index.d.ts +0 -1
- package/dist/edges/index.js +0 -1
- package/dist/edges/plugin/index.d.ts +0 -1
- package/dist/edges/plugin/index.js +0 -2
- package/dist/edges/state/index.d.ts +0 -1
- package/dist/edges/state/index.js +0 -1
- /package/dist/{core/delivery/injectableDependencies → delivery/injectable-dependencies}/index.d.ts +0 -0
- /package/dist/{core/delivery/injectableDependencies → delivery/injectable-dependencies}/index.js +0 -0
- /package/dist/{core/delivery → delivery}/schema/Schema.d.ts +0 -0
- /package/dist/{core/delivery → delivery}/schema/index.d.ts +0 -0
- /package/dist/{core/delivery → delivery}/schema/index.js +0 -0
- /package/dist/{core/delivery → delivery}/schema/rules/index.d.ts +0 -0
- /package/dist/{core/delivery → delivery}/schema/rules/index.js +0 -0
- /package/dist/{core/delivery/index.d.ts → delivery/schema/rules/messages/Types.js} +0 -0
- /package/dist/{edges/context/index.d.ts → external/edges/ServerContext.js} +0 -0
- /package/dist/{edges/server/index.d.ts → external/edges/_edges.d.ts} +0 -0
- /package/dist/{edges/server/index.js → external/edges/_edges.js} +0 -0
- /package/dist/{i18n → external/i18n}/index.d.ts +0 -0
- /package/dist/{i18n → external/i18n}/index.js +0 -0
- /package/dist/{tools → external/tools}/index.d.ts +0 -0
- /package/dist/{tools → external/tools}/index.js +0 -0
- /package/dist/{core/infra → infra}/datasource/index.d.ts +0 -0
- /package/dist/{core/infra → infra}/datasource/index.js +0 -0
- /package/dist/{core/infra/httpService → infra/http-service}/HttpServiceInstance.d.ts +0 -0
- /package/dist/{core/infra/httpService → infra/http-service}/Statuses.d.ts +0 -0
- /package/dist/{core/infra/httpService → infra/http-service}/Statuses.js +0 -0
- /package/dist/{core/infra/httpService → infra/http-service}/index.d.ts +0 -0
- /package/dist/{core/infra/httpService → infra/http-service}/index.js +0 -0
- /package/dist/{core/infra → infra}/query/QueryBuilder.d.ts +0 -0
- /package/dist/{core/infra → infra}/query/index.d.ts +0 -0
- /package/dist/{core/infra → infra}/query/index.js +0 -0
- /package/dist/{core/infra → infra}/resource/BaseResource.d.ts +0 -0
- /package/dist/{core/infra → infra}/resource/BaseResource.js +0 -0
- /package/dist/{core/infra → infra}/resource/index.d.ts +0 -0
- /package/dist/{core/infra → infra}/resource/index.js +0 -0
- /package/dist/{core/infra → infra}/response/index.d.ts +0 -0
- /package/dist/{core/infra → infra}/response/index.js +0 -0
- /package/dist/{core/delivery/schema/rules/messages/types.js → shared/app/middleware/Shared.js} +0 -0
- /package/dist/{core/shared/boundaryProvider → shared/boundary-provider}/Provider.d.ts +0 -0
- /package/dist/{core/shared/boundaryProvider → shared/boundary-provider}/index.d.ts +0 -0
- /package/dist/{core/shared/boundaryProvider → shared/boundary-provider}/index.js +0 -0
- /package/dist/{core/shared/classMirror → shared/class-mirror}/ClassMirror.d.ts +0 -0
- /package/dist/{core/shared/classMirror → shared/class-mirror}/ClassMirror.js +0 -0
- /package/dist/{core/shared/classMirror → shared/class-mirror}/index.d.ts +0 -0
- /package/dist/{core/shared/classMirror → shared/class-mirror}/index.js +0 -0
- /package/dist/{core/shared → shared}/cookie/UniversalCookie.d.ts +0 -0
- /package/dist/{core/shared → shared}/cookie/index.d.ts +0 -0
- /package/dist/{core/shared → shared}/cookie/index.js +0 -0
- /package/dist/{core/shared/appEventBus → shared/event-bus}/index.d.ts +0 -0
- /package/dist/{core/shared/appEventBus → shared/event-bus}/index.js +0 -0
- /package/dist/{core/svelte/ActiveForm → svelte/active-form}/index.d.ts +0 -0
- /package/dist/{core/svelte/ActiveForm → svelte/active-form}/index.js +0 -0
- /package/dist/{core/svelte/AsyncSignal → svelte/async-signal}/AsyncSignal.svelte.d.ts +0 -0
- /package/dist/{core/svelte/AsyncSignal → svelte/async-signal}/index.d.ts +0 -0
- /package/dist/{core/svelte/AsyncSignal → svelte/async-signal}/index.js +0 -0
- /package/dist/{core/svelte/Query → svelte/query}/Query.svelte.d.ts +0 -0
- /package/dist/{core/svelte/Query → svelte/query}/index.d.ts +0 -0
- /package/dist/{core/svelte/Query → svelte/query}/index.js +0 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import { BROWSER } from '../../external/tools/index.js';
|
|
2
|
+
import { RequestContext } from '../../external/edges/ServerContext.js';
|
|
3
|
+
import { createBoundaryProvider } from '../boundary-provider/Provider.js';
|
|
4
|
+
import { AzureNetKitInternalError } from '../app-error/AppError.js';
|
|
5
|
+
import { executeServerMiddlewares } from './middleware/ServerMiddleware.js';
|
|
6
|
+
import { beforeNavigate } from '$app/navigation';
|
|
7
|
+
import { executeClientMiddlewares } from './middleware/ClientMiddleware.js';
|
|
8
|
+
const DEFAULT_APP_NAME = '__AzureNetKitGlobalAppContainer__';
|
|
9
|
+
const clientLifecycleFlags = new WeakMap();
|
|
10
|
+
const serverInitLifecycleFlags = new WeakMap();
|
|
11
|
+
const getRequestContext = () => {
|
|
12
|
+
try {
|
|
13
|
+
return RequestContext.current();
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const getServerRequestContext = (event) => {
|
|
20
|
+
const requestContext = getRequestContext();
|
|
21
|
+
if (requestContext)
|
|
22
|
+
return requestContext;
|
|
23
|
+
if (event) {
|
|
24
|
+
return { data: {}, event };
|
|
25
|
+
}
|
|
26
|
+
throw new AzureNetKitInternalError('[createApp] RequestContext is not initialized on server.');
|
|
27
|
+
};
|
|
28
|
+
const getLifecycleFlags = (appKey, requestContext) => {
|
|
29
|
+
if (BROWSER) {
|
|
30
|
+
let flags = clientLifecycleFlags.get(appKey);
|
|
31
|
+
if (!flags) {
|
|
32
|
+
flags = {};
|
|
33
|
+
clientLifecycleFlags.set(appKey, flags);
|
|
34
|
+
}
|
|
35
|
+
return flags;
|
|
36
|
+
}
|
|
37
|
+
const context = requestContext ?? getRequestContext();
|
|
38
|
+
if (!context) {
|
|
39
|
+
throw new AzureNetKitInternalError('[createApp] RequestContext is not initialized on server.');
|
|
40
|
+
}
|
|
41
|
+
const flagsMap = (context.data.appLifecycleFlags ??= new WeakMap());
|
|
42
|
+
let flags = flagsMap.get(appKey);
|
|
43
|
+
if (!flags) {
|
|
44
|
+
flags = {};
|
|
45
|
+
flagsMap.set(appKey, flags);
|
|
46
|
+
}
|
|
47
|
+
return flags;
|
|
48
|
+
};
|
|
49
|
+
const setCallback = (callbacks, key, callback) => {
|
|
50
|
+
if (callbacks[key]) {
|
|
51
|
+
throw new AzureNetKitInternalError(`[createApp] '${key}' can be registered only once.`);
|
|
52
|
+
}
|
|
53
|
+
callbacks[key] = callback;
|
|
54
|
+
};
|
|
55
|
+
const createBuilder = (dependencies, callbacks) => {
|
|
56
|
+
const builder = {
|
|
57
|
+
use(callback) {
|
|
58
|
+
setCallback(callbacks, 'use', callback);
|
|
59
|
+
return builder;
|
|
60
|
+
},
|
|
61
|
+
useClient(callback) {
|
|
62
|
+
setCallback(callbacks, 'useClient', callback);
|
|
63
|
+
return builder;
|
|
64
|
+
},
|
|
65
|
+
useClientInit(callback) {
|
|
66
|
+
setCallback(callbacks, 'useClientInit', callback);
|
|
67
|
+
return builder;
|
|
68
|
+
},
|
|
69
|
+
useClientError(callback) {
|
|
70
|
+
setCallback(callbacks, 'useClientError', callback);
|
|
71
|
+
return builder;
|
|
72
|
+
},
|
|
73
|
+
useServerInit(callback) {
|
|
74
|
+
setCallback(callbacks, 'useServerInit', callback);
|
|
75
|
+
return builder;
|
|
76
|
+
},
|
|
77
|
+
useServer(callback) {
|
|
78
|
+
setCallback(callbacks, 'useServer', callback);
|
|
79
|
+
return builder;
|
|
80
|
+
},
|
|
81
|
+
useServerError(callback) {
|
|
82
|
+
setCallback(callbacks, 'useServerError', callback);
|
|
83
|
+
return builder;
|
|
84
|
+
},
|
|
85
|
+
dependencies(nextDependencies) {
|
|
86
|
+
for (const [key, factory] of Object.entries(nextDependencies)) {
|
|
87
|
+
dependencies.set(key, factory);
|
|
88
|
+
}
|
|
89
|
+
return builder;
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
return builder;
|
|
93
|
+
};
|
|
94
|
+
export const createApp = (callback, name = DEFAULT_APP_NAME) => {
|
|
95
|
+
const appKey = {};
|
|
96
|
+
const dependencies = new Map();
|
|
97
|
+
const callbacks = {};
|
|
98
|
+
let clientInitialized = false;
|
|
99
|
+
callback(createBuilder(dependencies, callbacks));
|
|
100
|
+
const AppProvider = createBoundaryProvider(name, {
|
|
101
|
+
register: () => {
|
|
102
|
+
const factories = {};
|
|
103
|
+
for (const [key, factory] of dependencies.entries()) {
|
|
104
|
+
factories[key] = () => factory(Container);
|
|
105
|
+
}
|
|
106
|
+
return factories;
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
const Container = new Proxy({}, {
|
|
110
|
+
get(_, key) {
|
|
111
|
+
if (typeof key === 'symbol')
|
|
112
|
+
return undefined;
|
|
113
|
+
return AppProvider()[key];
|
|
114
|
+
},
|
|
115
|
+
has(_, key) {
|
|
116
|
+
return typeof key === 'string' && key in AppProvider();
|
|
117
|
+
},
|
|
118
|
+
ownKeys() {
|
|
119
|
+
return Reflect.ownKeys(AppProvider());
|
|
120
|
+
},
|
|
121
|
+
getOwnPropertyDescriptor(_, key) {
|
|
122
|
+
if (typeof key !== 'string' || !(key in AppProvider()))
|
|
123
|
+
return undefined;
|
|
124
|
+
return {
|
|
125
|
+
configurable: true,
|
|
126
|
+
enumerable: true,
|
|
127
|
+
value: AppProvider()[key]
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
const runClient = (kind) => {
|
|
132
|
+
if (!BROWSER)
|
|
133
|
+
return undefined;
|
|
134
|
+
const flags = getLifecycleFlags(appKey);
|
|
135
|
+
if (flags[kind])
|
|
136
|
+
return undefined;
|
|
137
|
+
flags[kind] = true;
|
|
138
|
+
if (kind === 'clientInit') {
|
|
139
|
+
const universalContext = {
|
|
140
|
+
Container,
|
|
141
|
+
isClient: true,
|
|
142
|
+
isServer: false
|
|
143
|
+
};
|
|
144
|
+
const universalResult = callbacks.use?.(universalContext);
|
|
145
|
+
if (universalResult && typeof universalResult.then === 'function') {
|
|
146
|
+
return universalResult.then(() => callbacks.useClientInit?.({ Container }));
|
|
147
|
+
}
|
|
148
|
+
return callbacks.useClientInit?.({ Container });
|
|
149
|
+
}
|
|
150
|
+
let internalMiddlewares = [];
|
|
151
|
+
const clientResult = callbacks.useClient?.({
|
|
152
|
+
Container,
|
|
153
|
+
useMiddlewares: (middlewares) => {
|
|
154
|
+
internalMiddlewares = middlewares;
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
const registerNavigation = () => {
|
|
158
|
+
if (clientInitialized)
|
|
159
|
+
return;
|
|
160
|
+
clientInitialized = true;
|
|
161
|
+
beforeNavigate(async (navigation) => {
|
|
162
|
+
await executeClientMiddlewares(internalMiddlewares, navigation);
|
|
163
|
+
});
|
|
164
|
+
};
|
|
165
|
+
if (clientResult && typeof clientResult.then === 'function') {
|
|
166
|
+
return clientResult.then(registerNavigation);
|
|
167
|
+
}
|
|
168
|
+
registerNavigation();
|
|
169
|
+
};
|
|
170
|
+
const runServerInit = () => {
|
|
171
|
+
if (BROWSER)
|
|
172
|
+
return undefined;
|
|
173
|
+
let flags = serverInitLifecycleFlags.get(appKey);
|
|
174
|
+
if (!flags) {
|
|
175
|
+
flags = {};
|
|
176
|
+
serverInitLifecycleFlags.set(appKey, flags);
|
|
177
|
+
}
|
|
178
|
+
if (flags.serverInit)
|
|
179
|
+
return undefined;
|
|
180
|
+
flags.serverInit = true;
|
|
181
|
+
return callbacks.useServerInit?.({ Container });
|
|
182
|
+
};
|
|
183
|
+
const runServerError = ({ error, event, status, message }) => {
|
|
184
|
+
if (BROWSER)
|
|
185
|
+
return undefined;
|
|
186
|
+
return callbacks.useServerError?.({
|
|
187
|
+
Container,
|
|
188
|
+
requestContext: getServerRequestContext(event),
|
|
189
|
+
error,
|
|
190
|
+
event,
|
|
191
|
+
status,
|
|
192
|
+
message
|
|
193
|
+
});
|
|
194
|
+
};
|
|
195
|
+
const runClientError = ({ error, event, status, message }) => {
|
|
196
|
+
if (!BROWSER)
|
|
197
|
+
return undefined;
|
|
198
|
+
return callbacks.useClientError?.({
|
|
199
|
+
Container,
|
|
200
|
+
error,
|
|
201
|
+
event,
|
|
202
|
+
status,
|
|
203
|
+
message
|
|
204
|
+
});
|
|
205
|
+
};
|
|
206
|
+
const handle = async ({ event, resolve }) => {
|
|
207
|
+
const requestContext = getServerRequestContext(event);
|
|
208
|
+
const flags = getLifecycleFlags(appKey, requestContext);
|
|
209
|
+
if (!flags.server) {
|
|
210
|
+
flags.server = true;
|
|
211
|
+
const universalResult = callbacks.use?.({
|
|
212
|
+
Container,
|
|
213
|
+
isClient: false,
|
|
214
|
+
isServer: true,
|
|
215
|
+
requestContext,
|
|
216
|
+
event
|
|
217
|
+
});
|
|
218
|
+
if (universalResult && typeof universalResult.then === 'function') {
|
|
219
|
+
await universalResult;
|
|
220
|
+
}
|
|
221
|
+
const serverResult = await callbacks.useServer?.({
|
|
222
|
+
Container,
|
|
223
|
+
requestContext,
|
|
224
|
+
event,
|
|
225
|
+
resolve,
|
|
226
|
+
useMiddlewares: executeServerMiddlewares
|
|
227
|
+
});
|
|
228
|
+
if (serverResult)
|
|
229
|
+
return serverResult;
|
|
230
|
+
}
|
|
231
|
+
return resolve(event);
|
|
232
|
+
};
|
|
233
|
+
const register = Object.assign(() => runClient('client'), {
|
|
234
|
+
clientInit: () => runClient('clientInit'),
|
|
235
|
+
clientError: runClientError,
|
|
236
|
+
serverInit: runServerInit,
|
|
237
|
+
serverError: runServerError,
|
|
238
|
+
handle
|
|
239
|
+
});
|
|
240
|
+
return {
|
|
241
|
+
Container,
|
|
242
|
+
register
|
|
243
|
+
};
|
|
244
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { createApp, type AppClientErrorCallback, type AppClientErrorContext, type AppClientInitLifecycleCallback, type AppClientInitLifecycleContext, type AppClientLifecycleCallback, type AppClientLifecycleContext, type AppContainer, type AppRegistrar, type AppServerErrorCallback, type AppServerErrorContext, type AppServerInitLifecycleCallback, type AppServerInitLifecycleContext, type AppServerLifecycleCallback, type AppServerLifecycleContext, type AppUniversalLifecycleCallback, type AppUniversalLifecycleContext, type CreateAppInstance } from './App.js';
|
|
2
|
+
export type { IClientMiddleware } from './middleware/ClientMiddleware.js';
|
|
3
|
+
export type { IServerMiddleware } from './middleware/ServerMiddleware.js';
|
|
4
|
+
export type { RedirectStatus } from './middleware/Shared.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { createApp } from './App.js';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type BeforeNavigate } from '@sveltejs/kit';
|
|
2
|
+
import type { RedirectStatus } from './Shared.js';
|
|
3
|
+
export type IClientMiddleware = (middlewareData: {
|
|
4
|
+
to: URL;
|
|
5
|
+
from?: URL;
|
|
6
|
+
next: (location?: string | URL, status?: RedirectStatus) => void;
|
|
7
|
+
}) => Promise<void> | void;
|
|
8
|
+
export declare const executeClientMiddlewares: (middlewares: IClientMiddleware[], navigation?: BeforeNavigate) => Promise<void>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import {} from '@sveltejs/kit';
|
|
2
|
+
import { page } from '$app/state';
|
|
3
|
+
import { goto } from '$app/navigation';
|
|
4
|
+
export const executeClientMiddlewares = async (middlewares, navigation) => {
|
|
5
|
+
const from = navigation?.from?.url ?? undefined;
|
|
6
|
+
const to = navigation?.to?.url ?? page?.url;
|
|
7
|
+
for (const middleware of middlewares) {
|
|
8
|
+
let shouldContinue = false;
|
|
9
|
+
const next = (location) => {
|
|
10
|
+
shouldContinue = true;
|
|
11
|
+
if (location) {
|
|
12
|
+
if (navigation) {
|
|
13
|
+
navigation?.cancel();
|
|
14
|
+
}
|
|
15
|
+
return goto(location);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
await middleware({
|
|
19
|
+
to,
|
|
20
|
+
from,
|
|
21
|
+
next
|
|
22
|
+
});
|
|
23
|
+
if (!shouldContinue) {
|
|
24
|
+
navigation?.cancel();
|
|
25
|
+
if (from) {
|
|
26
|
+
void goto(from.pathname);
|
|
27
|
+
console.warn('Navigation blocked: middleware chain stopped (next() not called).');
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type RequestEvent } from '@sveltejs/kit';
|
|
2
|
+
import type { RedirectStatus } from './Shared.js';
|
|
3
|
+
export type IServerMiddleware = (middlewareData: {
|
|
4
|
+
to: RequestEvent['url'];
|
|
5
|
+
from?: RequestEvent['url'];
|
|
6
|
+
next: (location?: string | URL, status?: RedirectStatus) => void;
|
|
7
|
+
event?: RequestEvent;
|
|
8
|
+
}) => Promise<void> | void;
|
|
9
|
+
export declare const executeServerMiddlewares: (middlewares: IServerMiddleware[]) => Promise<void>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { error, redirect } from '@sveltejs/kit';
|
|
2
|
+
import { BROWSER } from '../../../external/tools/index.js';
|
|
3
|
+
import { RequestContext } from '../../../external/edges/ServerContext.js';
|
|
4
|
+
export const executeServerMiddlewares = async (middlewares) => {
|
|
5
|
+
if (!BROWSER && middlewares.length) {
|
|
6
|
+
const event = RequestContext.current().event;
|
|
7
|
+
if (event) {
|
|
8
|
+
const referer = event?.request.headers.get('referer');
|
|
9
|
+
const from = referer ? new URL(referer) : undefined;
|
|
10
|
+
const to = event?.url;
|
|
11
|
+
for (const middleware of middlewares) {
|
|
12
|
+
let shouldContinue = false;
|
|
13
|
+
const next = (location, status = 301) => {
|
|
14
|
+
shouldContinue = true;
|
|
15
|
+
if (location) {
|
|
16
|
+
return redirect(status, location);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
await middleware({
|
|
20
|
+
event,
|
|
21
|
+
to,
|
|
22
|
+
from,
|
|
23
|
+
next
|
|
24
|
+
});
|
|
25
|
+
if (!shouldContinue) {
|
|
26
|
+
error(403, 'Navigation blocked: middleware chain stopped (next() not called).');
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type RedirectStatus = 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { HttpServiceError } from '../../infra/
|
|
1
|
+
import { HttpServiceError } from '../../infra/http-service/HttpServiceInstance.js';
|
|
2
2
|
import { type RequestErrors } from '../../delivery/schema/Schema.js';
|
|
3
3
|
export declare enum ErrorTypes {
|
|
4
4
|
Http = "Http",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { HttpErrorTypes, HttpServiceError } from '../../infra/
|
|
1
|
+
import { HttpErrorTypes, HttpServiceError } from '../../infra/http-service/HttpServiceInstance.js';
|
|
2
2
|
import { SchemaFail } from '../../delivery/schema/Schema.js';
|
|
3
|
-
import { AsyncHelperError } from '../../delivery/
|
|
3
|
+
import { AsyncHelperError } from '../../delivery/injectable-dependencies/AsyncHelpers.js';
|
|
4
4
|
export var ErrorTypes;
|
|
5
5
|
(function (ErrorTypes) {
|
|
6
6
|
ErrorTypes["Http"] = "Http";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './AppError.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './AppError.js';
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { RequestContext } from '
|
|
2
|
-
import { BROWSER } from '
|
|
3
|
-
import { AzureNetKitInternalError } from '../
|
|
1
|
+
import { RequestContext } from '../../external/edges/ServerContext.js';
|
|
2
|
+
import { BROWSER } from '../../external/tools/index.js';
|
|
3
|
+
import { AzureNetKitInternalError } from '../app-error/AppError.js';
|
|
4
4
|
const clientCache = new Map();
|
|
5
5
|
const factoriesCache = new WeakMap();
|
|
6
6
|
const providerProxyCache = new Map();
|
|
7
|
+
const clientConstructionStack = [];
|
|
7
8
|
const clientBootFlags = new Map();
|
|
8
9
|
const getProviderCache = (providerName) => {
|
|
9
10
|
if (BROWSER) {
|
|
@@ -54,6 +55,29 @@ const setBootFlag = (providerName, value) => {
|
|
|
54
55
|
bootFlags.set(providerName, value);
|
|
55
56
|
}
|
|
56
57
|
};
|
|
58
|
+
const getConstructionStack = () => {
|
|
59
|
+
if (BROWSER)
|
|
60
|
+
return clientConstructionStack;
|
|
61
|
+
const context = RequestContext.current();
|
|
62
|
+
return (context.data.boundaryProviderConstructionStack ??= []);
|
|
63
|
+
};
|
|
64
|
+
const runWithCycleGuard = (key, callback) => {
|
|
65
|
+
const stack = getConstructionStack();
|
|
66
|
+
if (stack.includes(key)) {
|
|
67
|
+
const cycleStart = stack.indexOf(key);
|
|
68
|
+
const cyclePath = [...stack.slice(cycleStart), key].join(' -> ');
|
|
69
|
+
throw new AzureNetKitInternalError(`[BoundaryProvider] Circular provider dependency detected: ${cyclePath}`);
|
|
70
|
+
}
|
|
71
|
+
stack.push(key);
|
|
72
|
+
try {
|
|
73
|
+
return callback();
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
const idx = stack.lastIndexOf(key);
|
|
77
|
+
if (idx !== -1)
|
|
78
|
+
stack.splice(idx, 1);
|
|
79
|
+
}
|
|
80
|
+
};
|
|
57
81
|
export const createBoundaryProvider = (name, settings) => {
|
|
58
82
|
const { dependsOn = {}, boot, register } = settings;
|
|
59
83
|
const providerFn = () => {
|
|
@@ -101,7 +125,7 @@ export const createBoundaryProvider = (name, settings) => {
|
|
|
101
125
|
if (typeof factory !== 'function') {
|
|
102
126
|
throw new AzureNetKitInternalError('[BoundaryProvider] Factory must be a function');
|
|
103
127
|
}
|
|
104
|
-
const instance = factory();
|
|
128
|
+
const instance = runWithCycleGuard(`${name}.${key}`, () => factory());
|
|
105
129
|
if (instance && typeof instance?.then === 'function') {
|
|
106
130
|
throw new AzureNetKitInternalError(`[BoundaryProvider] Service '${key}' in provider '${name}' returned Promise.`);
|
|
107
131
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { Cookies } from '
|
|
2
|
-
import {
|
|
3
|
-
import { RequestContext } from '@azure-net/edges/context';
|
|
1
|
+
import { BROWSER, Cookies } from '../../external/tools/index.js';
|
|
2
|
+
import { RequestContext } from '../../external/edges/ServerContext.js';
|
|
4
3
|
/**
|
|
5
4
|
* Utility class for managing cookies in svelte ssr (browser and server).
|
|
6
5
|
* Supports setting, getting, deleting, checking, and clearing cookies.
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { UniversalCookie, type CookieOptions } from './cookie/index.js';
|
|
2
|
+
export { AppEvents } from './event-bus/index.js';
|
|
3
|
+
export { ClassMirror } from './class-mirror/index.js';
|
|
4
|
+
export { createBoundaryProvider, cleanupProvider, type ProviderSettings } from './boundary-provider/index.js';
|
|
5
|
+
export { createApp, type AppContainer, type CreateAppInstance } from './app/index.js';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { UniversalCookie } from './cookie/index.js';
|
|
2
|
+
export { AppEvents } from './event-bus/index.js';
|
|
3
|
+
export { ClassMirror } from './class-mirror/index.js';
|
|
4
|
+
export { createBoundaryProvider, cleanupProvider } from './boundary-provider/index.js';
|
|
5
|
+
export { createApp } from './app/index.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { RequestErrors } from '../../delivery/schema/index.js';
|
|
2
|
-
import type { AsyncActionResponse } from '../../delivery/
|
|
2
|
+
import type { AsyncActionResponse } from '../../delivery/injectable-dependencies/AsyncHelpers.js';
|
|
3
3
|
type InitialData<FormData, Initial extends Partial<FormData>> = () => Initial | Promise<Initial>;
|
|
4
4
|
type PathRequiredShape<T, P extends string> = P extends `${infer Head}.${infer Tail}` ? Head extends keyof T ? {
|
|
5
5
|
[K in Head]-?: PathRequiredShape<NonNullable<T[K]>, Tail>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { untrack } from 'svelte';
|
|
2
|
-
import { BROWSER } from '
|
|
2
|
+
import { BROWSER } from '../../external/tools/index.js';
|
|
3
3
|
const createAsyncSignalManager = () => {
|
|
4
4
|
const instances = BROWSER ? new Map() : undefined;
|
|
5
5
|
const generateUid = () => {
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { createAsyncSignal, refreshAsyncSignal, refreshAllAsyncSignals, type AsyncSignalOptions, type AsyncSignalSvelte, type AsyncStatus, type AsyncSignalSource } from './async-signal/AsyncSignal.svelte.js';
|
|
2
|
+
export { createActiveForm } from './active-form/ActiveForm.svelte.js';
|
|
3
|
+
export { createQuery, type QueryController, type CreateQueryOptions } from './query/Query.svelte.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@azure-net/kit",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0-1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Pixel1917",
|
|
6
6
|
"description": "Universal toolkit and library collection, developed as part of the Azure-net ecosystem",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
},
|
|
12
12
|
"repository": {
|
|
13
13
|
"type": "git",
|
|
14
|
-
"url": "https://github.com/Pixel1917/azure-net-kit.git"
|
|
14
|
+
"url": "git+https://github.com/Pixel1917/azure-net-kit.git"
|
|
15
15
|
},
|
|
16
16
|
"publishConfig": {
|
|
17
17
|
"access": "public",
|
|
@@ -34,49 +34,42 @@
|
|
|
34
34
|
"svelte": "./dist/index.js"
|
|
35
35
|
},
|
|
36
36
|
"./infra": {
|
|
37
|
-
"types": "./dist/
|
|
38
|
-
"svelte": "./dist/
|
|
37
|
+
"types": "./dist/infra.d.ts",
|
|
38
|
+
"svelte": "./dist/infra.js"
|
|
39
39
|
},
|
|
40
40
|
"./delivery": {
|
|
41
|
-
"types": "./dist/
|
|
42
|
-
"svelte": "./dist/
|
|
41
|
+
"types": "./dist/delivery.d.ts",
|
|
42
|
+
"svelte": "./dist/delivery.js"
|
|
43
43
|
},
|
|
44
44
|
"./errors": {
|
|
45
|
-
"types": "./dist/
|
|
46
|
-
"svelte": "./dist/
|
|
45
|
+
"types": "./dist/errors.d.ts",
|
|
46
|
+
"svelte": "./dist/errors.js"
|
|
47
47
|
},
|
|
48
|
-
"./
|
|
49
|
-
"types": "./dist/
|
|
50
|
-
"svelte": "./dist/
|
|
48
|
+
"./plugin": {
|
|
49
|
+
"types": "./dist/plugin/index.d.ts",
|
|
50
|
+
"svelte": "./dist/plugin/index.js",
|
|
51
|
+
"import": "./dist/plugin/index.js"
|
|
51
52
|
},
|
|
52
|
-
"./
|
|
53
|
-
"types": "./dist/edges/
|
|
54
|
-
"svelte": "./dist/edges/
|
|
55
|
-
},
|
|
56
|
-
"./edges/state": {
|
|
57
|
-
"types": "./dist/edges/state/index.d.ts",
|
|
58
|
-
"svelte": "./dist/edges/state/index.js"
|
|
59
|
-
},
|
|
60
|
-
"./edges/context": {
|
|
61
|
-
"types": "./dist/edges/context/index.d.ts",
|
|
62
|
-
"svelte": "./dist/edges/context/index.js"
|
|
53
|
+
"./server-context": {
|
|
54
|
+
"types": "./dist/external/edges/ServerContext.d.ts",
|
|
55
|
+
"svelte": "./dist/external/edges/ServerContext.js"
|
|
63
56
|
},
|
|
64
57
|
"./edges/dev": {
|
|
65
|
-
"types": "./dist/edges/
|
|
66
|
-
"svelte": "./dist/edges/
|
|
67
|
-
},
|
|
68
|
-
"./edges/plugin": {
|
|
69
|
-
"types": "./dist/edges/plugin/index.d.ts",
|
|
70
|
-
"svelte": "./dist/edges/plugin/index.js",
|
|
71
|
-
"import": "./dist/edges/plugin/index.js"
|
|
58
|
+
"types": "./dist/external/edges/Dev.d.ts",
|
|
59
|
+
"svelte": "./dist/external/edges/Dev.js"
|
|
72
60
|
},
|
|
73
61
|
"./tools": {
|
|
74
|
-
"types": "./dist/tools/index.d.ts",
|
|
75
|
-
"svelte": "./dist/tools/index.js"
|
|
62
|
+
"types": "./dist/external/tools/index.d.ts",
|
|
63
|
+
"svelte": "./dist/external/tools/index.js"
|
|
76
64
|
},
|
|
77
65
|
"./i18n": {
|
|
78
|
-
"types": "./dist/i18n/index.d.ts",
|
|
79
|
-
"svelte": "./dist/i18n/index.js"
|
|
66
|
+
"types": "./dist/external/i18n/index.d.ts",
|
|
67
|
+
"svelte": "./dist/external/i18n/index.js"
|
|
68
|
+
},
|
|
69
|
+
"./edges/internal-package/utils": {
|
|
70
|
+
"types": "./dist/external/edges/_edges.d.ts",
|
|
71
|
+
"svelte": "./dist/external/edges/_edges.js",
|
|
72
|
+
"import": "./dist/external/edges/_edges.js"
|
|
80
73
|
}
|
|
81
74
|
},
|
|
82
75
|
"peerDependencies": {
|
|
@@ -128,9 +121,9 @@
|
|
|
128
121
|
"utils"
|
|
129
122
|
],
|
|
130
123
|
"dependencies": {
|
|
131
|
-
"@azure-net/edges": "^1.2.
|
|
132
|
-
"@azure-net/edges-translations": "^1.2.
|
|
133
|
-
"@azure-net/tools": "^1.2.
|
|
124
|
+
"@azure-net/edges": "^1.2.7",
|
|
125
|
+
"@azure-net/edges-translations": "^1.2.7",
|
|
126
|
+
"@azure-net/tools": "^1.2.7"
|
|
134
127
|
},
|
|
135
128
|
"scripts": {
|
|
136
129
|
"dev": "vite dev",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { AppError, type IAppError } from '../../shared/appError/AppError.js';
|
|
2
|
-
import type { AsyncHelperRetry } from './AsyncHelpers.js';
|
|
3
|
-
export declare const createErrorHandler: <CustomData extends object>(handle?: <T = unknown>(error: AppError<T>, asyncHelperRetry: AsyncHelperRetry) => Promise<IAppError<T> & CustomData>) => <T = unknown>(error: Error, asyncHelperRetry?: AsyncHelperRetry) => Promise<IAppError<T> & CustomData>;
|
package/dist/core/delivery.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export { createPresenter, createStore, createPresenterFactory, createStoreFactory, clearCache } from '../edges/index.js';
|
|
2
|
-
export { createAsyncHelpers, type AsyncHelperRetry, type AsyncResourceSettings, type AsyncActionResponse } from './delivery/injectableDependencies/AsyncHelpers.js';
|
|
3
|
-
export { createErrorHandler } from './delivery/injectableDependencies/ErrorHandler.js';
|
|
4
|
-
export { createSchemaFactory, schema, type Schema, type RequestErrors, type ISchemaError, type ValidationResult, type ValidationRuleResult, type ValidationParams, type ValidationMessage, type ValidationErrorsMap } from './delivery/schema/Schema.js';
|
|
5
|
-
export { createRules, validationMessagesRu, validationMessagesI18n, validationMessagesEn, type ValidationRuleParams, type BaseValidationMessages } from './delivery/schema/rules/index.js';
|
package/dist/core/delivery.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export { createPresenter, createStore, createPresenterFactory, createStoreFactory, clearCache } from '../edges/index.js';
|
|
2
|
-
export { createAsyncHelpers } from './delivery/injectableDependencies/AsyncHelpers.js';
|
|
3
|
-
export { createErrorHandler } from './delivery/injectableDependencies/ErrorHandler.js';
|
|
4
|
-
export { createSchemaFactory, schema } from './delivery/schema/Schema.js';
|
|
5
|
-
export { createRules, validationMessagesRu, validationMessagesI18n, validationMessagesEn } from './delivery/schema/rules/index.js';
|
package/dist/core/errors.d.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export { AppError, ErrorTypes, AzureNetKitInternalError, type IAppError } from './shared/appError/AppError.js';
|
|
2
|
-
export { HttpServiceError } from './infra/httpService/HttpServiceInstance.js';
|
|
3
|
-
export { AsyncHelperError } from './delivery/injectableDependencies/AsyncHelpers.js';
|
|
4
|
-
export { SchemaFail } from './delivery/schema/Schema.js';
|
package/dist/core/errors.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export { AppError, ErrorTypes, AzureNetKitInternalError } from './shared/appError/AppError.js';
|
|
2
|
-
export { HttpServiceError } from './infra/httpService/HttpServiceInstance.js';
|
|
3
|
-
export { AsyncHelperError } from './delivery/injectableDependencies/AsyncHelpers.js';
|
|
4
|
-
export { SchemaFail } from './delivery/schema/Schema.js';
|
package/dist/core/index.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export { createQuery, createAsyncSignal, createActiveForm, refreshAsyncSignal, refreshAllAsyncSignals, type AsyncSignalOptions, type AsyncSignalSvelte, type QueryController, type CreateQueryOptions, type AsyncSignalSource, type AsyncStatus } from './svelte/index.js';
|
|
2
|
-
export { createMiddlewareManager, type IMiddleware } from './shared/middleware/index.js';
|
|
3
|
-
export { ClassMirror } from './shared/classMirror/index.js';
|
|
4
|
-
export { UniversalCookie, type CookieOptions } from './shared/cookie/index.js';
|
|
5
|
-
export { createBoundaryProvider, cleanupProvider, type ProviderSettings } from './shared/boundaryProvider/index.js';
|
|
6
|
-
export { AppEvents } from './shared/appEventBus/index.js';
|