@azure-net/kit 4.1.0 → 5.0.0-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/dist/delivery/index.d.ts +3 -0
  2. package/dist/delivery/index.js +3 -0
  3. package/dist/{core/delivery/injectableDependencies → delivery/injectable-dependencies}/AsyncHelpers.d.ts +1 -1
  4. package/dist/{core/delivery/injectableDependencies → delivery/injectable-dependencies}/AsyncHelpers.js +1 -1
  5. package/dist/{core/delivery/injectableDependencies → delivery/injectable-dependencies}/ErrorHandler.d.ts +2 -2
  6. package/dist/{core/delivery/injectableDependencies → delivery/injectable-dependencies}/ErrorHandler.js +2 -2
  7. package/dist/{core/delivery → delivery}/schema/Schema.js +2 -2
  8. package/dist/{core/delivery → delivery}/schema/rules/Rules.d.ts +1 -1
  9. package/dist/{core/delivery → delivery}/schema/rules/Rules.js +1 -1
  10. package/dist/{core/delivery → delivery}/schema/rules/messages/En.d.ts +1 -1
  11. package/dist/{core/delivery → delivery}/schema/rules/messages/Ru.d.ts +1 -1
  12. package/dist/{core/delivery → delivery}/schema/rules/messages/WithI18n.d.ts +1 -1
  13. package/dist/{core/delivery → delivery}/schema/rules/messages/index.d.ts +1 -1
  14. package/dist/{core/delivery → delivery}/schema/rules/messages/index.js +1 -1
  15. package/dist/delivery.d.ts +2 -0
  16. package/dist/delivery.js +2 -0
  17. package/dist/errors.d.ts +4 -0
  18. package/dist/errors.js +4 -0
  19. package/dist/external/edges/Dev.d.ts +1 -0
  20. package/dist/external/edges/Dev.js +1 -0
  21. package/dist/external/edges/Edges.d.ts +1 -0
  22. package/dist/external/edges/Edges.js +1 -0
  23. package/dist/external/edges/ServerContext.d.ts +1 -0
  24. package/dist/index.d.ts +2 -2
  25. package/dist/index.js +2 -2
  26. package/dist/{core/infra → infra}/datasource/BaseDatasource.d.ts +1 -1
  27. package/dist/{core/infra → infra}/datasource/BaseDatasource.js +1 -1
  28. package/dist/{core/infra/httpService → infra/http-service}/HttpServiceInstance.js +2 -2
  29. package/dist/infra/index.d.ts +5 -0
  30. package/dist/infra/index.js +5 -0
  31. package/dist/{core/infra → infra}/query/QueryBuilder.js +1 -1
  32. package/dist/{core/infra → infra}/response/BaseResponse.d.ts +1 -1
  33. package/dist/{core/infra → infra}/response/BaseResponse.js +1 -1
  34. package/dist/infra.d.ts +1 -0
  35. package/dist/infra.js +1 -0
  36. package/dist/plugin/AzureNetPlugin.d.ts +7 -0
  37. package/dist/plugin/AzureNetPlugin.js +411 -0
  38. package/dist/plugin/index.d.ts +1 -0
  39. package/dist/plugin/index.js +1 -0
  40. package/dist/shared/app/App.d.ts +96 -0
  41. package/dist/shared/app/App.js +244 -0
  42. package/dist/shared/app/index.d.ts +4 -0
  43. package/dist/shared/app/index.js +1 -0
  44. package/dist/shared/app/middleware/ClientMiddleware.d.ts +8 -0
  45. package/dist/shared/app/middleware/ClientMiddleware.js +31 -0
  46. package/dist/shared/app/middleware/ServerMiddleware.d.ts +9 -0
  47. package/dist/shared/app/middleware/ServerMiddleware.js +31 -0
  48. package/dist/shared/app/middleware/Shared.d.ts +1 -0
  49. package/dist/{core/shared/appError → shared/app-error}/AppError.d.ts +1 -1
  50. package/dist/{core/shared/appError → shared/app-error}/AppError.js +2 -2
  51. package/dist/shared/app-error/index.d.ts +1 -0
  52. package/dist/shared/app-error/index.js +1 -0
  53. package/dist/{core/shared/boundaryProvider → shared/boundary-provider}/Provider.js +3 -3
  54. package/dist/{core/shared → shared}/cookie/UniversalCookie.js +2 -3
  55. package/dist/shared/event-bus/EventBus.d.ts +2 -0
  56. package/dist/shared/event-bus/EventBus.js +6 -0
  57. package/dist/shared/index.d.ts +5 -0
  58. package/dist/shared/index.js +5 -0
  59. package/dist/{core/svelte/ActiveForm → svelte/active-form}/ActiveForm.svelte.d.ts +1 -1
  60. package/dist/{core/svelte/ActiveForm → svelte/active-form}/ActiveForm.svelte.js +1 -1
  61. package/dist/{core/svelte/AsyncSignal → svelte/async-signal}/AsyncSignal.svelte.js +1 -1
  62. package/dist/svelte/index.d.ts +3 -0
  63. package/dist/svelte/index.js +3 -0
  64. package/dist/{core/svelte/Query → svelte/query}/Query.svelte.js +1 -1
  65. package/package.json +26 -33
  66. package/dist/core/delivery/index.js +0 -1
  67. package/dist/core/delivery.d.ts +0 -5
  68. package/dist/core/delivery.js +0 -5
  69. package/dist/core/errors.d.ts +0 -4
  70. package/dist/core/errors.js +0 -4
  71. package/dist/core/index.d.ts +0 -6
  72. package/dist/core/index.js +0 -6
  73. package/dist/core/infra/index.d.ts +0 -5
  74. package/dist/core/infra/index.js +0 -5
  75. package/dist/core/infra.d.ts +0 -6
  76. package/dist/core/infra.js +0 -6
  77. package/dist/core/shared/appEventBus/EventBus.d.ts +0 -2
  78. package/dist/core/shared/appEventBus/EventBus.js +0 -6
  79. package/dist/core/shared/middleware/Middleware.d.ts +0 -21
  80. package/dist/core/shared/middleware/Middleware.js +0 -76
  81. package/dist/core/shared/middleware/index.d.ts +0 -1
  82. package/dist/core/shared/middleware/index.js +0 -1
  83. package/dist/core/svelte/index.d.ts +0 -3
  84. package/dist/core/svelte/index.js +0 -3
  85. package/dist/edges/context/index.js +0 -1
  86. package/dist/edges/dev/index.d.ts +0 -1
  87. package/dist/edges/dev/index.js +0 -1
  88. package/dist/edges/index.d.ts +0 -1
  89. package/dist/edges/index.js +0 -1
  90. package/dist/edges/plugin/index.d.ts +0 -1
  91. package/dist/edges/plugin/index.js +0 -2
  92. package/dist/edges/state/index.d.ts +0 -1
  93. package/dist/edges/state/index.js +0 -1
  94. /package/dist/{core/delivery/injectableDependencies → delivery/injectable-dependencies}/index.d.ts +0 -0
  95. /package/dist/{core/delivery/injectableDependencies → delivery/injectable-dependencies}/index.js +0 -0
  96. /package/dist/{core/delivery → delivery}/schema/Schema.d.ts +0 -0
  97. /package/dist/{core/delivery → delivery}/schema/index.d.ts +0 -0
  98. /package/dist/{core/delivery → delivery}/schema/index.js +0 -0
  99. /package/dist/{core/delivery → delivery}/schema/rules/index.d.ts +0 -0
  100. /package/dist/{core/delivery → delivery}/schema/rules/index.js +0 -0
  101. /package/dist/{core/delivery → delivery}/schema/rules/messages/En.js +0 -0
  102. /package/dist/{core/delivery → delivery}/schema/rules/messages/Ru.js +0 -0
  103. /package/dist/{core/delivery/schema/rules/messages/types.d.ts → delivery/schema/rules/messages/Types.d.ts} +0 -0
  104. /package/dist/{core/delivery/index.d.ts → delivery/schema/rules/messages/Types.js} +0 -0
  105. /package/dist/{core/delivery → delivery}/schema/rules/messages/WithI18n.js +0 -0
  106. /package/dist/{edges/context/index.d.ts → external/edges/ServerContext.js} +0 -0
  107. /package/dist/{edges/server/index.d.ts → external/edges/_edges.d.ts} +0 -0
  108. /package/dist/{edges/server/index.js → external/edges/_edges.js} +0 -0
  109. /package/dist/{i18n → external/i18n}/index.d.ts +0 -0
  110. /package/dist/{i18n → external/i18n}/index.js +0 -0
  111. /package/dist/{tools → external/tools}/index.d.ts +0 -0
  112. /package/dist/{tools → external/tools}/index.js +0 -0
  113. /package/dist/{core/infra → infra}/datasource/index.d.ts +0 -0
  114. /package/dist/{core/infra → infra}/datasource/index.js +0 -0
  115. /package/dist/{core/infra/httpService → infra/http-service}/HttpServiceInstance.d.ts +0 -0
  116. /package/dist/{core/infra/httpService → infra/http-service}/Statuses.d.ts +0 -0
  117. /package/dist/{core/infra/httpService → infra/http-service}/Statuses.js +0 -0
  118. /package/dist/{core/infra/httpService → infra/http-service}/index.d.ts +0 -0
  119. /package/dist/{core/infra/httpService → infra/http-service}/index.js +0 -0
  120. /package/dist/{core/infra → infra}/query/QueryBuilder.d.ts +0 -0
  121. /package/dist/{core/infra → infra}/query/index.d.ts +0 -0
  122. /package/dist/{core/infra → infra}/query/index.js +0 -0
  123. /package/dist/{core/infra → infra}/resource/BaseResource.d.ts +0 -0
  124. /package/dist/{core/infra → infra}/resource/BaseResource.js +0 -0
  125. /package/dist/{core/infra → infra}/resource/index.d.ts +0 -0
  126. /package/dist/{core/infra → infra}/resource/index.js +0 -0
  127. /package/dist/{core/infra → infra}/response/index.d.ts +0 -0
  128. /package/dist/{core/infra → infra}/response/index.js +0 -0
  129. /package/dist/{core/delivery/schema/rules/messages/types.js → shared/app/middleware/Shared.js} +0 -0
  130. /package/dist/{core/shared/boundaryProvider → shared/boundary-provider}/Provider.d.ts +0 -0
  131. /package/dist/{core/shared/boundaryProvider → shared/boundary-provider}/index.d.ts +0 -0
  132. /package/dist/{core/shared/boundaryProvider → shared/boundary-provider}/index.js +0 -0
  133. /package/dist/{core/shared/classMirror → shared/class-mirror}/ClassMirror.d.ts +0 -0
  134. /package/dist/{core/shared/classMirror → shared/class-mirror}/ClassMirror.js +0 -0
  135. /package/dist/{core/shared/classMirror → shared/class-mirror}/index.d.ts +0 -0
  136. /package/dist/{core/shared/classMirror → shared/class-mirror}/index.js +0 -0
  137. /package/dist/{core/shared → shared}/cookie/UniversalCookie.d.ts +0 -0
  138. /package/dist/{core/shared → shared}/cookie/index.d.ts +0 -0
  139. /package/dist/{core/shared → shared}/cookie/index.js +0 -0
  140. /package/dist/{core/shared/appEventBus → shared/event-bus}/index.d.ts +0 -0
  141. /package/dist/{core/shared/appEventBus → shared/event-bus}/index.js +0 -0
  142. /package/dist/{core/svelte/ActiveForm → svelte/active-form}/index.d.ts +0 -0
  143. /package/dist/{core/svelte/ActiveForm → svelte/active-form}/index.js +0 -0
  144. /package/dist/{core/svelte/AsyncSignal → svelte/async-signal}/AsyncSignal.svelte.d.ts +0 -0
  145. /package/dist/{core/svelte/AsyncSignal → svelte/async-signal}/index.d.ts +0 -0
  146. /package/dist/{core/svelte/AsyncSignal → svelte/async-signal}/index.js +0 -0
  147. /package/dist/{core/svelte/Query → svelte/query}/Query.svelte.d.ts +0 -0
  148. /package/dist/{core/svelte/Query → svelte/query}/index.d.ts +0 -0
  149. /package/dist/{core/svelte/Query → svelte/query}/index.js +0 -0
@@ -0,0 +1,96 @@
1
+ import { type ContextData } from '../../external/edges/ServerContext.js';
2
+ import { type IServerMiddleware } from './middleware/ServerMiddleware.js';
3
+ import type { Handle, HandleClientError, HandleServerError, RequestEvent, ServerInit } from '@sveltejs/kit';
4
+ import { type IClientMiddleware } from './middleware/ClientMiddleware.js';
5
+ type MaybePromise<T> = T | Promise<T>;
6
+ type HandleInput = Parameters<Handle>[0];
7
+ type Resolve = HandleInput['resolve'];
8
+ type AppDependencyFactory<TApp, TReturn = unknown> = (app: TApp) => TReturn;
9
+ type AppDependencyFactories<TApp> = Record<string, AppDependencyFactory<TApp>>;
10
+ type ResolvedDependencies<T> = {
11
+ [K in keyof T]: T[K] extends (...args: never[]) => infer TReturn ? TReturn : never;
12
+ };
13
+ type BuilderFlags = Partial<Record<'use' | 'useClient' | 'useClientInit' | 'useClientError' | 'useServerInit' | 'useServer' | 'useServerError', true>>;
14
+ type WithFlag<TFlags extends BuilderFlags, TKey extends keyof BuilderFlags> = TFlags & Record<TKey, true>;
15
+ type BuilderDependencies<TBuilder> = TBuilder extends {
16
+ readonly __types__?: infer TDependencies;
17
+ } ? TDependencies : never;
18
+ type OnceMethod<TFlags extends BuilderFlags, TKey extends keyof BuilderFlags, TMethod> = TFlags[TKey] extends true ? object : TMethod;
19
+ export type AppContainer<TDependencies extends Record<string, unknown>> = Readonly<TDependencies>;
20
+ export interface AppUniversalLifecycleContext<TDependencies extends Record<string, unknown>> {
21
+ Container: AppContainer<TDependencies>;
22
+ isClient: boolean;
23
+ isServer: boolean;
24
+ requestContext?: ContextData;
25
+ event?: RequestEvent;
26
+ }
27
+ export interface AppClientLifecycleContext<TDependencies extends Record<string, unknown>> {
28
+ Container: AppContainer<TDependencies>;
29
+ useMiddlewares: (middlewares: IClientMiddleware[]) => void;
30
+ }
31
+ export interface AppClientInitLifecycleContext<TDependencies extends Record<string, unknown>> {
32
+ Container: AppContainer<TDependencies>;
33
+ }
34
+ export interface AppClientErrorContext<TDependencies extends Record<string, unknown>> extends Omit<AppClientLifecycleContext<TDependencies>, 'useMiddlewares'> {
35
+ error: unknown;
36
+ event: Parameters<HandleClientError>[0]['event'];
37
+ status: number;
38
+ message: string;
39
+ }
40
+ export interface AppServerInitLifecycleContext<TDependencies extends Record<string, unknown>> {
41
+ Container: AppContainer<TDependencies>;
42
+ }
43
+ export interface AppServerLifecycleContext<TDependencies extends Record<string, unknown>> {
44
+ Container: AppContainer<TDependencies>;
45
+ requestContext: ContextData;
46
+ event: RequestEvent;
47
+ resolve: Resolve;
48
+ useMiddlewares: (middlewares: IServerMiddleware[]) => Promise<void>;
49
+ }
50
+ export interface AppServerErrorContext<TDependencies extends Record<string, unknown>> {
51
+ Container: AppContainer<TDependencies>;
52
+ requestContext: ContextData;
53
+ error: unknown;
54
+ event: RequestEvent;
55
+ status: number;
56
+ message: string;
57
+ }
58
+ export type AppUniversalLifecycleCallback<TDependencies extends Record<string, unknown>> = (context: AppUniversalLifecycleContext<TDependencies>) => MaybePromise<void>;
59
+ export type AppClientLifecycleCallback<TDependencies extends Record<string, unknown>> = (context: AppClientLifecycleContext<TDependencies>) => MaybePromise<void>;
60
+ export type AppClientInitLifecycleCallback<TDependencies extends Record<string, unknown>> = (context: AppClientInitLifecycleContext<TDependencies>) => MaybePromise<void>;
61
+ export type AppClientErrorCallback<TDependencies extends Record<string, unknown>> = (context: AppClientErrorContext<TDependencies>) => ReturnType<HandleClientError>;
62
+ export type AppServerInitLifecycleCallback<TDependencies extends Record<string, unknown>> = (context: AppServerInitLifecycleContext<TDependencies>) => ReturnType<ServerInit>;
63
+ export type AppServerLifecycleCallback<TDependencies extends Record<string, unknown>> = (context: AppServerLifecycleContext<TDependencies>) => MaybePromise<Response | void>;
64
+ export type AppServerErrorCallback<TDependencies extends Record<string, unknown>> = (context: AppServerErrorContext<TDependencies>) => ReturnType<HandleServerError>;
65
+ export type CreateAppBuilder<TDependencies extends Record<string, unknown>, TFlags extends BuilderFlags = object> = {
66
+ readonly __types__?: TDependencies;
67
+ dependencies<TNext extends AppDependencyFactories<AppContainer<TDependencies>>>(dependencies: TNext): CreateAppBuilder<TDependencies & ResolvedDependencies<TNext>, TFlags>;
68
+ } & OnceMethod<TFlags, 'use', {
69
+ use(callback: AppUniversalLifecycleCallback<TDependencies>): CreateAppBuilder<TDependencies, WithFlag<TFlags, 'use'>>;
70
+ }> & OnceMethod<TFlags, 'useClient', {
71
+ useClient(callback: AppClientLifecycleCallback<TDependencies>): CreateAppBuilder<TDependencies, WithFlag<TFlags, 'useClient'>>;
72
+ }> & OnceMethod<TFlags, 'useClientInit', {
73
+ useClientInit(callback: AppClientInitLifecycleCallback<TDependencies>): CreateAppBuilder<TDependencies, WithFlag<TFlags, 'useClientInit'>>;
74
+ }> & OnceMethod<TFlags, 'useClientError', {
75
+ useClientError(callback: AppClientErrorCallback<TDependencies>): CreateAppBuilder<TDependencies, WithFlag<TFlags, 'useClientError'>>;
76
+ }> & OnceMethod<TFlags, 'useServerInit', {
77
+ useServerInit(callback: AppServerInitLifecycleCallback<TDependencies>): CreateAppBuilder<TDependencies, WithFlag<TFlags, 'useServerInit'>>;
78
+ }> & OnceMethod<TFlags, 'useServer', {
79
+ useServer(callback: AppServerLifecycleCallback<TDependencies>): CreateAppBuilder<TDependencies, WithFlag<TFlags, 'useServer'>>;
80
+ }> & OnceMethod<TFlags, 'useServerError', {
81
+ useServerError(callback: AppServerErrorCallback<TDependencies>): CreateAppBuilder<TDependencies, WithFlag<TFlags, 'useServerError'>>;
82
+ }>;
83
+ export interface AppRegistrar {
84
+ (): MaybePromise<void>;
85
+ clientInit(): MaybePromise<void>;
86
+ clientError: HandleClientError;
87
+ serverInit: ServerInit;
88
+ serverError: HandleServerError;
89
+ handle: Handle;
90
+ }
91
+ export interface CreateAppInstance<TDependencies extends Record<string, unknown>> {
92
+ Container: AppContainer<TDependencies>;
93
+ register: AppRegistrar;
94
+ }
95
+ export declare const createApp: <TBuilder>(callback: (app: CreateAppBuilder<Record<string, never>>) => TBuilder, name?: string) => CreateAppInstance<BuilderDependencies<TBuilder> & Record<string, unknown>>;
96
+ export {};
@@ -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/httpService/HttpServiceInstance.js';
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/httpService/HttpServiceInstance.js';
1
+ import { HttpErrorTypes, HttpServiceError } from '../../infra/http-service/HttpServiceInstance.js';
2
2
  import { SchemaFail } from '../../delivery/schema/Schema.js';
3
- import { AsyncHelperError } from '../../delivery/injectableDependencies/AsyncHelpers.js';
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,6 +1,6 @@
1
- import { RequestContext } from '../../../edges/context/index.js';
2
- import { BROWSER } from '@azure-net/tools/environment';
3
- import { AzureNetKitInternalError } from '../appError/AppError.js';
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();
@@ -1,6 +1,5 @@
1
- import { Cookies } from '@azure-net/tools';
2
- import { BROWSER } from '@azure-net/tools/environment';
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,2 @@
1
+ import { EventBus } from '../../external/tools/index.js';
2
+ export declare const AppEvents: () => EventBus<any>;
@@ -0,0 +1,6 @@
1
+ import { EventBus } from '../../external/tools/index.js';
2
+ import { createPresenter } from '../../external/edges/Edges.js';
3
+ export const AppEvents = createPresenter(() => {
4
+ const appEventBus = new EventBus({});
5
+ return appEventBus;
6
+ });
@@ -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/injectableDependencies/AsyncHelpers.js';
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,4 +1,4 @@
1
- import { ObjectUtil } from '@azure-net/tools';
1
+ import { ObjectUtil } from '../../external/tools/index.js';
2
2
  export const createActiveForm = (onSubmit, config) => {
3
3
  const isPromise = (value) => {
4
4
  return typeof value?.then === 'function';
@@ -1,5 +1,5 @@
1
1
  import { untrack } from 'svelte';
2
- import { BROWSER } from '@azure-net/tools/environment';
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';
@@ -0,0 +1,3 @@
1
+ export { createAsyncSignal, refreshAsyncSignal, refreshAllAsyncSignals } from './async-signal/AsyncSignal.svelte.js';
2
+ export { createActiveForm } from './active-form/ActiveForm.svelte.js';
3
+ export { createQuery } from './query/Query.svelte.js';
@@ -1,4 +1,4 @@
1
- import { ObjectUtil } from '@azure-net/tools';
1
+ import { ObjectUtil } from '../../external/tools/index.js';
2
2
  import { untrack } from 'svelte';
3
3
  export const createQuery = (initialValue, options) => {
4
4
  const baseInitial = ObjectUtil.deepClone(initialValue);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@azure-net/kit",
3
- "version": "4.1.0",
3
+ "version": "5.0.0-2",
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/core/infra.d.ts",
38
- "svelte": "./dist/core/infra.js"
37
+ "types": "./dist/infra.d.ts",
38
+ "svelte": "./dist/infra.js"
39
39
  },
40
40
  "./delivery": {
41
- "types": "./dist/core/delivery.d.ts",
42
- "svelte": "./dist/core/delivery.js"
41
+ "types": "./dist/delivery.d.ts",
42
+ "svelte": "./dist/delivery.js"
43
43
  },
44
44
  "./errors": {
45
- "types": "./dist/core/errors.d.ts",
46
- "svelte": "./dist/core/errors.js"
45
+ "types": "./dist/errors.d.ts",
46
+ "svelte": "./dist/errors.js"
47
47
  },
48
- "./edges": {
49
- "types": "./dist/edges/index.d.ts",
50
- "svelte": "./dist/edges/index.js"
48
+ "./plugin": {
49
+ "types": "./dist/plugin/index.d.ts",
50
+ "svelte": "./dist/plugin/index.js",
51
+ "import": "./dist/plugin/index.js"
51
52
  },
52
- "./edges/server": {
53
- "types": "./dist/edges/server/index.d.ts",
54
- "svelte": "./dist/edges/server/index.js"
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/dev/index.d.ts",
66
- "svelte": "./dist/edges/dev/index.js"
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": {
@@ -1 +0,0 @@
1
- "use strict";