iocraft 0.2.6 → 0.2.7
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/{chunk-QQPHKYMR.cjs → chunk-4PDVPTG3.cjs} +102 -91
- package/dist/chunk-4PDVPTG3.cjs.map +1 -0
- package/dist/{chunk-NNROA5P7.js → chunk-FIK2HLL7.js} +101 -90
- package/dist/chunk-FIK2HLL7.js.map +1 -0
- package/dist/common.cjs +8 -27
- package/dist/common.cjs.map +1 -1
- package/dist/common.d.cts +37 -39
- package/dist/common.d.ts +37 -39
- package/dist/common.js +7 -26
- package/dist/common.js.map +1 -1
- package/dist/core.cjs +2 -6
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +1 -21
- package/dist/core.d.ts +1 -21
- package/dist/core.js +3 -7
- package/package.json +1 -1
- package/dist/chunk-NNROA5P7.js.map +0 -1
- package/dist/chunk-QQPHKYMR.cjs.map +0 -1
|
@@ -80,56 +80,6 @@ function createFacadeObj(serviceInstance) {
|
|
|
80
80
|
addPrototypeProperties(serviceInstance, targetObj);
|
|
81
81
|
return targetObj;
|
|
82
82
|
}
|
|
83
|
-
function generateRouterFacade(router) {
|
|
84
|
-
return {
|
|
85
|
-
get path() {
|
|
86
|
-
return router.currentRoute.value.path;
|
|
87
|
-
},
|
|
88
|
-
get name() {
|
|
89
|
-
return router.currentRoute.value.name;
|
|
90
|
-
},
|
|
91
|
-
get params() {
|
|
92
|
-
return router.currentRoute.value.params;
|
|
93
|
-
},
|
|
94
|
-
get query() {
|
|
95
|
-
return router.currentRoute.value.query;
|
|
96
|
-
},
|
|
97
|
-
get hash() {
|
|
98
|
-
return router.currentRoute.value.hash;
|
|
99
|
-
},
|
|
100
|
-
get fullPath() {
|
|
101
|
-
return router.currentRoute.value.fullPath;
|
|
102
|
-
},
|
|
103
|
-
get matched() {
|
|
104
|
-
return router.currentRoute.value.matched;
|
|
105
|
-
},
|
|
106
|
-
get meta() {
|
|
107
|
-
return router.currentRoute.value.meta;
|
|
108
|
-
},
|
|
109
|
-
push: router.push.bind(router),
|
|
110
|
-
replace: router.replace.bind(router),
|
|
111
|
-
go: router.go.bind(router),
|
|
112
|
-
back: router.back.bind(router),
|
|
113
|
-
forward: router.forward.bind(router),
|
|
114
|
-
resolve: router.resolve.bind(router),
|
|
115
|
-
getRoutes: router.getRoutes.bind(router),
|
|
116
|
-
hasRoute: router.hasRoute.bind(router),
|
|
117
|
-
// Router guards
|
|
118
|
-
beforeEach: router.beforeEach.bind(router),
|
|
119
|
-
beforeResolve: router.beforeResolve.bind(router),
|
|
120
|
-
afterEach: router.afterEach.bind(router),
|
|
121
|
-
onError: router.onError.bind(router),
|
|
122
|
-
// Dynamic routing
|
|
123
|
-
addRoute: router.addRoute.bind(router),
|
|
124
|
-
removeRoute: router.removeRoute.bind(router),
|
|
125
|
-
clearRoutes: router.clearRoutes.bind(router),
|
|
126
|
-
// State
|
|
127
|
-
isReady: router.isReady.bind(router),
|
|
128
|
-
get currentRoute() {
|
|
129
|
-
return router.currentRoute;
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
83
|
|
|
134
84
|
// src/core/internals.ts
|
|
135
85
|
|
|
@@ -206,24 +156,6 @@ function obtain(serviceClass) {
|
|
|
206
156
|
creationStack.delete(serviceMeta.token);
|
|
207
157
|
}
|
|
208
158
|
}
|
|
209
|
-
function obtainRaw(serviceClass) {
|
|
210
|
-
const serviceMeta = getServiceMeta(serviceClass);
|
|
211
|
-
if (RootRegistry.has(serviceMeta.token)) {
|
|
212
|
-
return RootRegistry.get(serviceMeta.token);
|
|
213
|
-
}
|
|
214
|
-
if (creationStack.has(serviceMeta.token)) {
|
|
215
|
-
throw new Error(`[IocRaft] Circular dependency detected on: ${serviceClass.name}
|
|
216
|
-
`);
|
|
217
|
-
}
|
|
218
|
-
creationStack.add(serviceMeta.token);
|
|
219
|
-
try {
|
|
220
|
-
const instance = new serviceClass();
|
|
221
|
-
RootRegistry.set(serviceMeta.token, instance);
|
|
222
|
-
return instance;
|
|
223
|
-
} finally {
|
|
224
|
-
creationStack.delete(serviceMeta.token);
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
159
|
function obtainNew(serviceClass) {
|
|
228
160
|
const serviceMeta = getServiceMeta(serviceClass);
|
|
229
161
|
if (creationStack.has(serviceMeta.token)) {
|
|
@@ -242,24 +174,6 @@ function obtainNew(serviceClass) {
|
|
|
242
174
|
creationStack.delete(serviceMeta.token);
|
|
243
175
|
}
|
|
244
176
|
}
|
|
245
|
-
function obtainNewRaw(serviceClass) {
|
|
246
|
-
const serviceMeta = getServiceMeta(serviceClass);
|
|
247
|
-
if (creationStack.has(serviceMeta.token)) {
|
|
248
|
-
throw new Error(`[IocRaft] Circular dependency detected on: ${serviceClass.name}
|
|
249
|
-
`);
|
|
250
|
-
}
|
|
251
|
-
creationStack.add(serviceMeta.token);
|
|
252
|
-
try {
|
|
253
|
-
const componentInstance = _vue.getCurrentInstance.call(void 0, );
|
|
254
|
-
const instance = new serviceClass();
|
|
255
|
-
if (componentInstance) {
|
|
256
|
-
bindLifecycleHooks(instance);
|
|
257
|
-
}
|
|
258
|
-
return instance;
|
|
259
|
-
} finally {
|
|
260
|
-
creationStack.delete(serviceMeta.token);
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
177
|
function exposeCtx(serviceInstance) {
|
|
264
178
|
const serviceMeta = getServiceMeta(serviceInstance);
|
|
265
179
|
_vue.provide.call(void 0, serviceMeta.token, serviceInstance);
|
|
@@ -278,11 +192,110 @@ var Nav = class {
|
|
|
278
192
|
Nav = exports.Nav = __decorateClass([
|
|
279
193
|
attach()
|
|
280
194
|
], Nav);
|
|
195
|
+
var RouterFacade = class {
|
|
196
|
+
constructor(router) {
|
|
197
|
+
this.router = router;
|
|
198
|
+
}
|
|
199
|
+
// ─── Flattened current route getters
|
|
200
|
+
get path() {
|
|
201
|
+
return this.router.currentRoute.value.path;
|
|
202
|
+
}
|
|
203
|
+
get name() {
|
|
204
|
+
return this.router.currentRoute.value.name;
|
|
205
|
+
}
|
|
206
|
+
get params() {
|
|
207
|
+
return this.router.currentRoute.value.params;
|
|
208
|
+
}
|
|
209
|
+
get query() {
|
|
210
|
+
return this.router.currentRoute.value.query;
|
|
211
|
+
}
|
|
212
|
+
get hash() {
|
|
213
|
+
return this.router.currentRoute.value.hash;
|
|
214
|
+
}
|
|
215
|
+
get fullPath() {
|
|
216
|
+
return this.router.currentRoute.value.fullPath;
|
|
217
|
+
}
|
|
218
|
+
get matched() {
|
|
219
|
+
return this.router.currentRoute.value.matched;
|
|
220
|
+
}
|
|
221
|
+
get meta() {
|
|
222
|
+
return this.router.currentRoute.value.meta;
|
|
223
|
+
}
|
|
224
|
+
get redirectedFrom() {
|
|
225
|
+
return this.router.currentRoute.value.redirectedFrom;
|
|
226
|
+
}
|
|
227
|
+
// ─── Router state
|
|
228
|
+
get currentRoute() {
|
|
229
|
+
return this.router.currentRoute;
|
|
230
|
+
}
|
|
231
|
+
get options() {
|
|
232
|
+
return this.router.options;
|
|
233
|
+
}
|
|
234
|
+
get listening() {
|
|
235
|
+
return this.router.listening;
|
|
236
|
+
}
|
|
237
|
+
set listening(value) {
|
|
238
|
+
this.router.listening = value;
|
|
239
|
+
}
|
|
240
|
+
// ─── Navigation
|
|
241
|
+
push(...args) {
|
|
242
|
+
return this.router.push(...args);
|
|
243
|
+
}
|
|
244
|
+
replace(...args) {
|
|
245
|
+
return this.router.replace(...args);
|
|
246
|
+
}
|
|
247
|
+
go(delta) {
|
|
248
|
+
return this.router.go(delta);
|
|
249
|
+
}
|
|
250
|
+
back() {
|
|
251
|
+
return this.router.back();
|
|
252
|
+
}
|
|
253
|
+
forward() {
|
|
254
|
+
return this.router.forward();
|
|
255
|
+
}
|
|
256
|
+
// ─── Route resolution
|
|
257
|
+
resolve(...args) {
|
|
258
|
+
return this.router.resolve(...args);
|
|
259
|
+
}
|
|
260
|
+
// ─── Route registry
|
|
261
|
+
getRoutes() {
|
|
262
|
+
return this.router.getRoutes();
|
|
263
|
+
}
|
|
264
|
+
hasRoute(...args) {
|
|
265
|
+
return this.router.hasRoute(...args);
|
|
266
|
+
}
|
|
267
|
+
addRoute(...args) {
|
|
268
|
+
return this.router.addRoute(...args);
|
|
269
|
+
}
|
|
270
|
+
removeRoute(...args) {
|
|
271
|
+
return this.router.removeRoute(...args);
|
|
272
|
+
}
|
|
273
|
+
clearRoutes() {
|
|
274
|
+
return this.router.clearRoutes();
|
|
275
|
+
}
|
|
276
|
+
// ─── Navigation guards
|
|
277
|
+
beforeEach(...args) {
|
|
278
|
+
return this.router.beforeEach(...args);
|
|
279
|
+
}
|
|
280
|
+
beforeResolve(...args) {
|
|
281
|
+
return this.router.beforeResolve(...args);
|
|
282
|
+
}
|
|
283
|
+
afterEach(...args) {
|
|
284
|
+
return this.router.afterEach(...args);
|
|
285
|
+
}
|
|
286
|
+
onError(...args) {
|
|
287
|
+
return this.router.onError(...args);
|
|
288
|
+
}
|
|
289
|
+
// ─── Lifecycle
|
|
290
|
+
isReady() {
|
|
291
|
+
return this.router.isReady();
|
|
292
|
+
}
|
|
293
|
+
};
|
|
281
294
|
|
|
282
295
|
// src/core/plugin.ts
|
|
283
296
|
var iocraft = (_app, options) => {
|
|
284
297
|
if (_optionalChain([options, 'optionalAccess', _3 => _3.router])) {
|
|
285
|
-
RootRegistry.set(getServiceMeta(Nav).token,
|
|
298
|
+
RootRegistry.set(getServiceMeta(Nav).token, new RouterFacade(options.router));
|
|
286
299
|
}
|
|
287
300
|
if (_optionalChain([options, 'optionalAccess', _4 => _4.eagerLoad])) {
|
|
288
301
|
options.eagerLoad.forEach((service) => {
|
|
@@ -316,7 +329,5 @@ function attach() {
|
|
|
316
329
|
|
|
317
330
|
|
|
318
331
|
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
exports.getServiceMeta = getServiceMeta; exports.obtain = obtain; exports.obtainRaw = obtainRaw; exports.obtainNew = obtainNew; exports.obtainNewRaw = obtainNewRaw; exports.exposeCtx = exposeCtx; exports.obtainCtx = obtainCtx; exports.Nav = Nav; exports.iocraft = iocraft; exports.attach = attach;
|
|
322
|
-
//# sourceMappingURL=chunk-QQPHKYMR.cjs.map
|
|
332
|
+
exports.getServiceMeta = getServiceMeta; exports.obtain = obtain; exports.obtainNew = obtainNew; exports.exposeCtx = exposeCtx; exports.obtainCtx = obtainCtx; exports.Nav = Nav; exports.iocraft = iocraft; exports.attach = attach;
|
|
333
|
+
//# sourceMappingURL=chunk-4PDVPTG3.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/iocraft/iocraft/packages/iocraft/dist/chunk-4PDVPTG3.cjs","../src/core/obtainers.ts","../src/core/facade.ts","../src/core/internals.ts","../src/core/utils.ts","../src/core/plugin.ts","../src/common/nav.ts","../src/core/attach.ts"],"names":[],"mappings":"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","file":"/home/runner/work/iocraft/iocraft/packages/iocraft/dist/chunk-4PDVPTG3.cjs","sourcesContent":[null,"import { getCurrentInstance, inject, provide } from \"vue\";\nimport { createFacadeObj } from \"./facade\";\nimport { bindLifecycleHooks, creationStack, RootRegistry } from \"./internals\";\nimport type { ServiceConstructor } from \"./types\";\nimport { getServiceMeta } from \"./utils\";\n\n/**\n * obtain Facade of a global singleton service From Root Registry\n *\n * @export\n * @template {ServiceConstructor} T\n * @param {T} serviceClass\n */\nexport function obtain<T extends ServiceConstructor>(serviceClass: T) {\n const serviceMeta = getServiceMeta(serviceClass);\n\n if (RootRegistry.has(serviceMeta.token)) {\n const instance = RootRegistry.get(serviceMeta.token)!;\n return createFacadeObj<InstanceType<T>>(instance);\n }\n\n if (creationStack.has(serviceMeta.token)) {\n throw new Error(`[IocRaft] Circular dependency detected on: ${serviceClass.name}\\n`);\n }\n\n creationStack.add(serviceMeta.token);\n\n try {\n const instance = new serviceClass();\n RootRegistry.set(serviceMeta.token, instance);\n return createFacadeObj<InstanceType<T>>(instance);\n } finally {\n creationStack.delete(serviceMeta.token);\n }\n}\n\n/**\n * obtain a facade of a new Service Instance\n *\n * @export\n * @template {ServiceConstructor} T\n * @param {T} serviceClass\n */\nexport function obtainNew<T extends ServiceConstructor>(serviceClass: T) {\n const serviceMeta = getServiceMeta(serviceClass);\n\n if (creationStack.has(serviceMeta.token)) {\n throw new Error(`[IocRaft] Circular dependency detected on: ${serviceClass.name}\\n`);\n }\n\n creationStack.add(serviceMeta.token);\n\n try {\n const componentInstance = getCurrentInstance();\n const instance = new serviceClass();\n\n if (componentInstance) {\n bindLifecycleHooks(instance);\n }\n\n return createFacadeObj<InstanceType<T>>(instance);\n } finally {\n creationStack.delete(serviceMeta.token);\n }\n}\n\n/**\n * Expose a service to context\n *\n * @export\n * @template {ServiceConstructor} T\n * @param {InstanceType<T>} serviceInstance\n */\nexport function exposeCtx<T extends ServiceConstructor>(serviceInstance: InstanceType<T>) {\n const serviceMeta = getServiceMeta(serviceInstance);\n provide(serviceMeta.token, serviceInstance);\n}\n\n/**\n * obtain A Service From Context\n *\n * @export\n * @template {ServiceConstructor} T\n * @param {T} serviceClass\n */\nexport function obtainCtx<T extends ServiceConstructor>(serviceClass: T) {\n const serviceMeta = getServiceMeta(serviceClass);\n return inject<InstanceType<T>>(serviceMeta.token);\n}\n","import type { ServiceConstructor } from './types';\n\nfunction hasKey(obj: Record<PropertyKey, unknown>, key: PropertyKey): boolean {\n if (typeof key === 'symbol') {\n return Object.getOwnPropertySymbols(obj).includes(key);\n }\n return Object.hasOwn(obj, key);\n}\n\nconst NativeKeys = new Set([\n ...Object.getOwnPropertyNames(Object.prototype),\n ...Object.getOwnPropertySymbols(Object.prototype),\n ...Object.getOwnPropertyNames(Function.prototype),\n ...Object.getOwnPropertySymbols(Function.prototype),\n ...Object.getOwnPropertyNames(Array.prototype),\n ...Object.getOwnPropertySymbols(Array.prototype),\n]);\n\nfunction addInstanceProperties<T extends object>(\n serviceInstance: InstanceType<ServiceConstructor<T>>,\n targetObj: Record<PropertyKey, unknown>\n) {\n const ownKeys = [...Object.getOwnPropertyNames(serviceInstance), ...Object.getOwnPropertySymbols(serviceInstance)];\n\n for (const key of ownKeys) {\n if (hasKey(targetObj, key)) continue;\n\n const descriptor = Object.getOwnPropertyDescriptor(serviceInstance, key)!;\n\n if (typeof descriptor.value === 'function') {\n console.warn(`[IOCRAFT]: Instance method \"${String(key)}\" found as own property. Consider moving to prototype.`);\n continue;\n }\n\n if (descriptor.get || descriptor.set) {\n continue;\n }\n\n Object.defineProperty(targetObj, key, {\n get() {\n return serviceInstance[key as keyof typeof serviceInstance];\n },\n set(v) {\n serviceInstance[key as keyof typeof serviceInstance] = v;\n },\n enumerable: true,\n configurable: true,\n });\n }\n}\n\nfunction addPrototypeProperties<T extends object>(\n serviceInstance: InstanceType<ServiceConstructor<T>>,\n targetObj: Record<PropertyKey, unknown>\n) {\n let currentProto = Object.getPrototypeOf(serviceInstance);\n\n while (currentProto && currentProto !== Object.prototype) {\n const protoKeys = [...Object.getOwnPropertyNames(currentProto), ...Object.getOwnPropertySymbols(currentProto)];\n\n for (const key of protoKeys) {\n if (hasKey(targetObj, key)) continue;\n\n if (NativeKeys.has(key)) continue;\n\n const descriptor = Object.getOwnPropertyDescriptor(currentProto, key)!;\n\n if (descriptor.get || descriptor.set) {\n Object.defineProperty(targetObj, key, {\n get: descriptor.get ? () => descriptor.get!.call(serviceInstance) : undefined,\n set: descriptor.set ? (v: any) => descriptor.set!.call(serviceInstance, v) : undefined,\n enumerable: true,\n configurable: true,\n });\n } else if (typeof descriptor.value === 'function') {\n targetObj[key] = descriptor.value.bind(serviceInstance);\n }\n }\n\n currentProto = Object.getPrototypeOf(currentProto);\n }\n}\n\n/**\n * CREATES A FACADE OBJECT\n *\n * @export\n * @template {object} T\n * @param {ServiceConstructor<T>} serviceClass\n * @param {InstanceType<ServiceConstructor<T>>} serviceInstance\n * @returns {{}}\n */\nexport function createFacadeObj<T extends object>(serviceInstance: object) {\n const targetObj = {};\n\n addInstanceProperties(serviceInstance, targetObj);\n addPrototypeProperties(serviceInstance, targetObj);\n return targetObj as T;\n}","import {\n onMounted,\n onUpdated,\n onUnmounted,\n onBeforeMount,\n onBeforeUpdate,\n onBeforeUnmount,\n onErrorCaptured,\n onRenderTracked,\n onRenderTriggered,\n onActivated,\n onDeactivated,\n onServerPrefetch,\n onScopeDispose,\n} from 'vue';\n\nexport const SERVICE_METADATA = Symbol('IOCRAFT_SERVICE_METADATA');\nexport const RootRegistry = new Map<symbol, object>();\nexport const creationStack = new Set<symbol>();\nconst lifecycleHookMap = {\n onMounted,\n onUpdated,\n onUnmounted,\n onBeforeMount,\n onBeforeUpdate,\n onBeforeUnmount,\n onErrorCaptured,\n onRenderTracked,\n onRenderTriggered,\n onActivated,\n onDeactivated,\n onServerPrefetch,\n onScopeDispose,\n} as const;\n\nexport function bindLifecycleHooks(instance: any) {\n for (const key in lifecycleHookMap) {\n const hookName = key as keyof typeof lifecycleHookMap;\n const vueHook = lifecycleHookMap[hookName];\n\n const handler = instance[hookName];\n\n if (typeof handler === 'function') {\n vueHook(handler.bind(instance));\n }\n }\n}\n","import { SERVICE_METADATA } from \"./internals\";\nimport type { ServiceConstructor, ServiceMetadata } from \"./types\";\n\nexport function getServiceMeta(target: ServiceConstructor | object) {\n const ctor = typeof target === \"function\" ? target : target.constructor;\n\n const meta = (ctor as any)[SERVICE_METADATA] as ServiceMetadata;\n if (!meta?.token) {\n throw new Error(`[IOCRAFT]: ${ctor?.name || \"Unknown\"} is not decorated with @Register()`);\n }\n return meta;\n}\n","import { type FunctionPlugin } from \"vue\";\nimport { Nav, RouterFacade } from \"../common/nav\";\nimport { RootRegistry } from \"./internals\";\nimport type { PluginOptions } from \"./types\";\nimport { getServiceMeta } from \"./utils\";\n\nexport const iocraft: FunctionPlugin<[Partial<PluginOptions>?]> = (_app, options?: Partial<PluginOptions>) => {\n if (options?.router) {\n RootRegistry.set(getServiceMeta(Nav).token, new RouterFacade(options.router));\n }\n\n // Eagerly create Service instances\n if (options?.eagerLoad) {\n options.eagerLoad.forEach((service) => {\n const serviceMeta = getServiceMeta(service);\n\n if (!RootRegistry.has(serviceMeta.token)) {\n RootRegistry.set(serviceMeta.token, new service());\n }\n });\n }\n};\n","import type { RouteLocationNormalizedGeneric, Router } from \"vue-router\";\nimport { attach } from \"../core\";\n\nexport interface Nav\n extends\n Omit<Router, \"install\" | \"options\" | \"currentRoute\">,\n Pick<RouteLocationNormalizedGeneric, \"path\" | \"name\" | \"params\" | \"query\" | \"hash\" | \"fullPath\" | \"matched\" | \"meta\"> {}\n\n@attach()\nexport class Nav {}\n\nexport class RouterFacade {\n constructor(private router: Router) {}\n\n // ─── Flattened current route getters\n get path() {\n return this.router.currentRoute.value.path;\n }\n get name() {\n return this.router.currentRoute.value.name;\n }\n get params() {\n return this.router.currentRoute.value.params;\n }\n get query() {\n return this.router.currentRoute.value.query;\n }\n get hash() {\n return this.router.currentRoute.value.hash;\n }\n get fullPath() {\n return this.router.currentRoute.value.fullPath;\n }\n get matched() {\n return this.router.currentRoute.value.matched;\n }\n get meta() {\n return this.router.currentRoute.value.meta;\n }\n get redirectedFrom() {\n return this.router.currentRoute.value.redirectedFrom;\n }\n\n // ─── Router state\n get currentRoute() {\n return this.router.currentRoute;\n }\n get options() {\n return this.router.options;\n }\n\n get listening() {\n return this.router.listening;\n }\n set listening(value: boolean) {\n this.router.listening = value;\n }\n\n // ─── Navigation\n push(...args: Parameters<Router[\"push\"]>) {\n return this.router.push(...args);\n }\n replace(...args: Parameters<Router[\"replace\"]>) {\n return this.router.replace(...args);\n }\n go(delta: number) {\n return this.router.go(delta);\n }\n back() {\n return this.router.back();\n }\n forward() {\n return this.router.forward();\n }\n\n // ─── Route resolution\n resolve(...args: Parameters<Router[\"resolve\"]>) {\n return this.router.resolve(...args);\n }\n\n // ─── Route registry\n getRoutes() {\n return this.router.getRoutes();\n }\n hasRoute(...args: Parameters<Router[\"hasRoute\"]>) {\n return this.router.hasRoute(...args);\n }\n addRoute(...args: Parameters<Router[\"addRoute\"]>) {\n return this.router.addRoute(...args);\n }\n removeRoute(...args: Parameters<Router[\"removeRoute\"]>) {\n return this.router.removeRoute(...args);\n }\n clearRoutes() {\n return this.router.clearRoutes();\n }\n\n // ─── Navigation guards\n beforeEach(...args: Parameters<Router[\"beforeEach\"]>) {\n return this.router.beforeEach(...args);\n }\n beforeResolve(...args: Parameters<Router[\"beforeResolve\"]>) {\n return this.router.beforeResolve(...args);\n }\n afterEach(...args: Parameters<Router[\"afterEach\"]>) {\n return this.router.afterEach(...args);\n }\n onError(...args: Parameters<Router[\"onError\"]>) {\n return this.router.onError(...args);\n }\n\n // ─── Lifecycle\n isReady() {\n return this.router.isReady();\n }\n}\n","import { SERVICE_METADATA } from \"./internals\";\nimport type { ServiceConstructor, ServiceMetadata } from \"./types\";\n\n/**\n * Attaches some internal meta data to a class that is needed for di system\n *\n */\nexport function attach(){\n return function <C extends ServiceConstructor>(constructor: C) {\n if ((constructor as any)[SERVICE_METADATA]?.token) {\n return constructor;\n }\n\n // Add more metadata here if needed\n (constructor as any)[SERVICE_METADATA] = {\n token: Symbol(`[IOCRAFT]: Service - ${constructor.name || \"Anonymous\"}`),\n } satisfies ServiceMetadata;\n\n return constructor;\n };\n}\n"]}
|
|
@@ -80,56 +80,6 @@ function createFacadeObj(serviceInstance) {
|
|
|
80
80
|
addPrototypeProperties(serviceInstance, targetObj);
|
|
81
81
|
return targetObj;
|
|
82
82
|
}
|
|
83
|
-
function generateRouterFacade(router) {
|
|
84
|
-
return {
|
|
85
|
-
get path() {
|
|
86
|
-
return router.currentRoute.value.path;
|
|
87
|
-
},
|
|
88
|
-
get name() {
|
|
89
|
-
return router.currentRoute.value.name;
|
|
90
|
-
},
|
|
91
|
-
get params() {
|
|
92
|
-
return router.currentRoute.value.params;
|
|
93
|
-
},
|
|
94
|
-
get query() {
|
|
95
|
-
return router.currentRoute.value.query;
|
|
96
|
-
},
|
|
97
|
-
get hash() {
|
|
98
|
-
return router.currentRoute.value.hash;
|
|
99
|
-
},
|
|
100
|
-
get fullPath() {
|
|
101
|
-
return router.currentRoute.value.fullPath;
|
|
102
|
-
},
|
|
103
|
-
get matched() {
|
|
104
|
-
return router.currentRoute.value.matched;
|
|
105
|
-
},
|
|
106
|
-
get meta() {
|
|
107
|
-
return router.currentRoute.value.meta;
|
|
108
|
-
},
|
|
109
|
-
push: router.push.bind(router),
|
|
110
|
-
replace: router.replace.bind(router),
|
|
111
|
-
go: router.go.bind(router),
|
|
112
|
-
back: router.back.bind(router),
|
|
113
|
-
forward: router.forward.bind(router),
|
|
114
|
-
resolve: router.resolve.bind(router),
|
|
115
|
-
getRoutes: router.getRoutes.bind(router),
|
|
116
|
-
hasRoute: router.hasRoute.bind(router),
|
|
117
|
-
// Router guards
|
|
118
|
-
beforeEach: router.beforeEach.bind(router),
|
|
119
|
-
beforeResolve: router.beforeResolve.bind(router),
|
|
120
|
-
afterEach: router.afterEach.bind(router),
|
|
121
|
-
onError: router.onError.bind(router),
|
|
122
|
-
// Dynamic routing
|
|
123
|
-
addRoute: router.addRoute.bind(router),
|
|
124
|
-
removeRoute: router.removeRoute.bind(router),
|
|
125
|
-
clearRoutes: router.clearRoutes.bind(router),
|
|
126
|
-
// State
|
|
127
|
-
isReady: router.isReady.bind(router),
|
|
128
|
-
get currentRoute() {
|
|
129
|
-
return router.currentRoute;
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
83
|
|
|
134
84
|
// src/core/internals.ts
|
|
135
85
|
import {
|
|
@@ -206,24 +156,6 @@ function obtain(serviceClass) {
|
|
|
206
156
|
creationStack.delete(serviceMeta.token);
|
|
207
157
|
}
|
|
208
158
|
}
|
|
209
|
-
function obtainRaw(serviceClass) {
|
|
210
|
-
const serviceMeta = getServiceMeta(serviceClass);
|
|
211
|
-
if (RootRegistry.has(serviceMeta.token)) {
|
|
212
|
-
return RootRegistry.get(serviceMeta.token);
|
|
213
|
-
}
|
|
214
|
-
if (creationStack.has(serviceMeta.token)) {
|
|
215
|
-
throw new Error(`[IocRaft] Circular dependency detected on: ${serviceClass.name}
|
|
216
|
-
`);
|
|
217
|
-
}
|
|
218
|
-
creationStack.add(serviceMeta.token);
|
|
219
|
-
try {
|
|
220
|
-
const instance = new serviceClass();
|
|
221
|
-
RootRegistry.set(serviceMeta.token, instance);
|
|
222
|
-
return instance;
|
|
223
|
-
} finally {
|
|
224
|
-
creationStack.delete(serviceMeta.token);
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
159
|
function obtainNew(serviceClass) {
|
|
228
160
|
const serviceMeta = getServiceMeta(serviceClass);
|
|
229
161
|
if (creationStack.has(serviceMeta.token)) {
|
|
@@ -242,24 +174,6 @@ function obtainNew(serviceClass) {
|
|
|
242
174
|
creationStack.delete(serviceMeta.token);
|
|
243
175
|
}
|
|
244
176
|
}
|
|
245
|
-
function obtainNewRaw(serviceClass) {
|
|
246
|
-
const serviceMeta = getServiceMeta(serviceClass);
|
|
247
|
-
if (creationStack.has(serviceMeta.token)) {
|
|
248
|
-
throw new Error(`[IocRaft] Circular dependency detected on: ${serviceClass.name}
|
|
249
|
-
`);
|
|
250
|
-
}
|
|
251
|
-
creationStack.add(serviceMeta.token);
|
|
252
|
-
try {
|
|
253
|
-
const componentInstance = getCurrentInstance();
|
|
254
|
-
const instance = new serviceClass();
|
|
255
|
-
if (componentInstance) {
|
|
256
|
-
bindLifecycleHooks(instance);
|
|
257
|
-
}
|
|
258
|
-
return instance;
|
|
259
|
-
} finally {
|
|
260
|
-
creationStack.delete(serviceMeta.token);
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
177
|
function exposeCtx(serviceInstance) {
|
|
264
178
|
const serviceMeta = getServiceMeta(serviceInstance);
|
|
265
179
|
provide(serviceMeta.token, serviceInstance);
|
|
@@ -278,11 +192,110 @@ var Nav = class {
|
|
|
278
192
|
Nav = __decorateClass([
|
|
279
193
|
attach()
|
|
280
194
|
], Nav);
|
|
195
|
+
var RouterFacade = class {
|
|
196
|
+
constructor(router) {
|
|
197
|
+
this.router = router;
|
|
198
|
+
}
|
|
199
|
+
// ─── Flattened current route getters
|
|
200
|
+
get path() {
|
|
201
|
+
return this.router.currentRoute.value.path;
|
|
202
|
+
}
|
|
203
|
+
get name() {
|
|
204
|
+
return this.router.currentRoute.value.name;
|
|
205
|
+
}
|
|
206
|
+
get params() {
|
|
207
|
+
return this.router.currentRoute.value.params;
|
|
208
|
+
}
|
|
209
|
+
get query() {
|
|
210
|
+
return this.router.currentRoute.value.query;
|
|
211
|
+
}
|
|
212
|
+
get hash() {
|
|
213
|
+
return this.router.currentRoute.value.hash;
|
|
214
|
+
}
|
|
215
|
+
get fullPath() {
|
|
216
|
+
return this.router.currentRoute.value.fullPath;
|
|
217
|
+
}
|
|
218
|
+
get matched() {
|
|
219
|
+
return this.router.currentRoute.value.matched;
|
|
220
|
+
}
|
|
221
|
+
get meta() {
|
|
222
|
+
return this.router.currentRoute.value.meta;
|
|
223
|
+
}
|
|
224
|
+
get redirectedFrom() {
|
|
225
|
+
return this.router.currentRoute.value.redirectedFrom;
|
|
226
|
+
}
|
|
227
|
+
// ─── Router state
|
|
228
|
+
get currentRoute() {
|
|
229
|
+
return this.router.currentRoute;
|
|
230
|
+
}
|
|
231
|
+
get options() {
|
|
232
|
+
return this.router.options;
|
|
233
|
+
}
|
|
234
|
+
get listening() {
|
|
235
|
+
return this.router.listening;
|
|
236
|
+
}
|
|
237
|
+
set listening(value) {
|
|
238
|
+
this.router.listening = value;
|
|
239
|
+
}
|
|
240
|
+
// ─── Navigation
|
|
241
|
+
push(...args) {
|
|
242
|
+
return this.router.push(...args);
|
|
243
|
+
}
|
|
244
|
+
replace(...args) {
|
|
245
|
+
return this.router.replace(...args);
|
|
246
|
+
}
|
|
247
|
+
go(delta) {
|
|
248
|
+
return this.router.go(delta);
|
|
249
|
+
}
|
|
250
|
+
back() {
|
|
251
|
+
return this.router.back();
|
|
252
|
+
}
|
|
253
|
+
forward() {
|
|
254
|
+
return this.router.forward();
|
|
255
|
+
}
|
|
256
|
+
// ─── Route resolution
|
|
257
|
+
resolve(...args) {
|
|
258
|
+
return this.router.resolve(...args);
|
|
259
|
+
}
|
|
260
|
+
// ─── Route registry
|
|
261
|
+
getRoutes() {
|
|
262
|
+
return this.router.getRoutes();
|
|
263
|
+
}
|
|
264
|
+
hasRoute(...args) {
|
|
265
|
+
return this.router.hasRoute(...args);
|
|
266
|
+
}
|
|
267
|
+
addRoute(...args) {
|
|
268
|
+
return this.router.addRoute(...args);
|
|
269
|
+
}
|
|
270
|
+
removeRoute(...args) {
|
|
271
|
+
return this.router.removeRoute(...args);
|
|
272
|
+
}
|
|
273
|
+
clearRoutes() {
|
|
274
|
+
return this.router.clearRoutes();
|
|
275
|
+
}
|
|
276
|
+
// ─── Navigation guards
|
|
277
|
+
beforeEach(...args) {
|
|
278
|
+
return this.router.beforeEach(...args);
|
|
279
|
+
}
|
|
280
|
+
beforeResolve(...args) {
|
|
281
|
+
return this.router.beforeResolve(...args);
|
|
282
|
+
}
|
|
283
|
+
afterEach(...args) {
|
|
284
|
+
return this.router.afterEach(...args);
|
|
285
|
+
}
|
|
286
|
+
onError(...args) {
|
|
287
|
+
return this.router.onError(...args);
|
|
288
|
+
}
|
|
289
|
+
// ─── Lifecycle
|
|
290
|
+
isReady() {
|
|
291
|
+
return this.router.isReady();
|
|
292
|
+
}
|
|
293
|
+
};
|
|
281
294
|
|
|
282
295
|
// src/core/plugin.ts
|
|
283
296
|
var iocraft = (_app, options) => {
|
|
284
297
|
if (options?.router) {
|
|
285
|
-
RootRegistry.set(getServiceMeta(Nav).token,
|
|
298
|
+
RootRegistry.set(getServiceMeta(Nav).token, new RouterFacade(options.router));
|
|
286
299
|
}
|
|
287
300
|
if (options?.eagerLoad) {
|
|
288
301
|
options.eagerLoad.forEach((service) => {
|
|
@@ -310,13 +323,11 @@ function attach() {
|
|
|
310
323
|
export {
|
|
311
324
|
getServiceMeta,
|
|
312
325
|
obtain,
|
|
313
|
-
obtainRaw,
|
|
314
326
|
obtainNew,
|
|
315
|
-
obtainNewRaw,
|
|
316
327
|
exposeCtx,
|
|
317
328
|
obtainCtx,
|
|
318
329
|
Nav,
|
|
319
330
|
iocraft,
|
|
320
331
|
attach
|
|
321
332
|
};
|
|
322
|
-
//# sourceMappingURL=chunk-
|
|
333
|
+
//# sourceMappingURL=chunk-FIK2HLL7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/obtainers.ts","../src/core/facade.ts","../src/core/internals.ts","../src/core/utils.ts","../src/core/plugin.ts","../src/common/nav.ts","../src/core/attach.ts"],"sourcesContent":["import { getCurrentInstance, inject, provide } from \"vue\";\nimport { createFacadeObj } from \"./facade\";\nimport { bindLifecycleHooks, creationStack, RootRegistry } from \"./internals\";\nimport type { ServiceConstructor } from \"./types\";\nimport { getServiceMeta } from \"./utils\";\n\n/**\n * obtain Facade of a global singleton service From Root Registry\n *\n * @export\n * @template {ServiceConstructor} T\n * @param {T} serviceClass\n */\nexport function obtain<T extends ServiceConstructor>(serviceClass: T) {\n const serviceMeta = getServiceMeta(serviceClass);\n\n if (RootRegistry.has(serviceMeta.token)) {\n const instance = RootRegistry.get(serviceMeta.token)!;\n return createFacadeObj<InstanceType<T>>(instance);\n }\n\n if (creationStack.has(serviceMeta.token)) {\n throw new Error(`[IocRaft] Circular dependency detected on: ${serviceClass.name}\\n`);\n }\n\n creationStack.add(serviceMeta.token);\n\n try {\n const instance = new serviceClass();\n RootRegistry.set(serviceMeta.token, instance);\n return createFacadeObj<InstanceType<T>>(instance);\n } finally {\n creationStack.delete(serviceMeta.token);\n }\n}\n\n/**\n * obtain a facade of a new Service Instance\n *\n * @export\n * @template {ServiceConstructor} T\n * @param {T} serviceClass\n */\nexport function obtainNew<T extends ServiceConstructor>(serviceClass: T) {\n const serviceMeta = getServiceMeta(serviceClass);\n\n if (creationStack.has(serviceMeta.token)) {\n throw new Error(`[IocRaft] Circular dependency detected on: ${serviceClass.name}\\n`);\n }\n\n creationStack.add(serviceMeta.token);\n\n try {\n const componentInstance = getCurrentInstance();\n const instance = new serviceClass();\n\n if (componentInstance) {\n bindLifecycleHooks(instance);\n }\n\n return createFacadeObj<InstanceType<T>>(instance);\n } finally {\n creationStack.delete(serviceMeta.token);\n }\n}\n\n/**\n * Expose a service to context\n *\n * @export\n * @template {ServiceConstructor} T\n * @param {InstanceType<T>} serviceInstance\n */\nexport function exposeCtx<T extends ServiceConstructor>(serviceInstance: InstanceType<T>) {\n const serviceMeta = getServiceMeta(serviceInstance);\n provide(serviceMeta.token, serviceInstance);\n}\n\n/**\n * obtain A Service From Context\n *\n * @export\n * @template {ServiceConstructor} T\n * @param {T} serviceClass\n */\nexport function obtainCtx<T extends ServiceConstructor>(serviceClass: T) {\n const serviceMeta = getServiceMeta(serviceClass);\n return inject<InstanceType<T>>(serviceMeta.token);\n}\n","import type { ServiceConstructor } from './types';\n\nfunction hasKey(obj: Record<PropertyKey, unknown>, key: PropertyKey): boolean {\n if (typeof key === 'symbol') {\n return Object.getOwnPropertySymbols(obj).includes(key);\n }\n return Object.hasOwn(obj, key);\n}\n\nconst NativeKeys = new Set([\n ...Object.getOwnPropertyNames(Object.prototype),\n ...Object.getOwnPropertySymbols(Object.prototype),\n ...Object.getOwnPropertyNames(Function.prototype),\n ...Object.getOwnPropertySymbols(Function.prototype),\n ...Object.getOwnPropertyNames(Array.prototype),\n ...Object.getOwnPropertySymbols(Array.prototype),\n]);\n\nfunction addInstanceProperties<T extends object>(\n serviceInstance: InstanceType<ServiceConstructor<T>>,\n targetObj: Record<PropertyKey, unknown>\n) {\n const ownKeys = [...Object.getOwnPropertyNames(serviceInstance), ...Object.getOwnPropertySymbols(serviceInstance)];\n\n for (const key of ownKeys) {\n if (hasKey(targetObj, key)) continue;\n\n const descriptor = Object.getOwnPropertyDescriptor(serviceInstance, key)!;\n\n if (typeof descriptor.value === 'function') {\n console.warn(`[IOCRAFT]: Instance method \"${String(key)}\" found as own property. Consider moving to prototype.`);\n continue;\n }\n\n if (descriptor.get || descriptor.set) {\n continue;\n }\n\n Object.defineProperty(targetObj, key, {\n get() {\n return serviceInstance[key as keyof typeof serviceInstance];\n },\n set(v) {\n serviceInstance[key as keyof typeof serviceInstance] = v;\n },\n enumerable: true,\n configurable: true,\n });\n }\n}\n\nfunction addPrototypeProperties<T extends object>(\n serviceInstance: InstanceType<ServiceConstructor<T>>,\n targetObj: Record<PropertyKey, unknown>\n) {\n let currentProto = Object.getPrototypeOf(serviceInstance);\n\n while (currentProto && currentProto !== Object.prototype) {\n const protoKeys = [...Object.getOwnPropertyNames(currentProto), ...Object.getOwnPropertySymbols(currentProto)];\n\n for (const key of protoKeys) {\n if (hasKey(targetObj, key)) continue;\n\n if (NativeKeys.has(key)) continue;\n\n const descriptor = Object.getOwnPropertyDescriptor(currentProto, key)!;\n\n if (descriptor.get || descriptor.set) {\n Object.defineProperty(targetObj, key, {\n get: descriptor.get ? () => descriptor.get!.call(serviceInstance) : undefined,\n set: descriptor.set ? (v: any) => descriptor.set!.call(serviceInstance, v) : undefined,\n enumerable: true,\n configurable: true,\n });\n } else if (typeof descriptor.value === 'function') {\n targetObj[key] = descriptor.value.bind(serviceInstance);\n }\n }\n\n currentProto = Object.getPrototypeOf(currentProto);\n }\n}\n\n/**\n * CREATES A FACADE OBJECT\n *\n * @export\n * @template {object} T\n * @param {ServiceConstructor<T>} serviceClass\n * @param {InstanceType<ServiceConstructor<T>>} serviceInstance\n * @returns {{}}\n */\nexport function createFacadeObj<T extends object>(serviceInstance: object) {\n const targetObj = {};\n\n addInstanceProperties(serviceInstance, targetObj);\n addPrototypeProperties(serviceInstance, targetObj);\n return targetObj as T;\n}","import {\n onMounted,\n onUpdated,\n onUnmounted,\n onBeforeMount,\n onBeforeUpdate,\n onBeforeUnmount,\n onErrorCaptured,\n onRenderTracked,\n onRenderTriggered,\n onActivated,\n onDeactivated,\n onServerPrefetch,\n onScopeDispose,\n} from 'vue';\n\nexport const SERVICE_METADATA = Symbol('IOCRAFT_SERVICE_METADATA');\nexport const RootRegistry = new Map<symbol, object>();\nexport const creationStack = new Set<symbol>();\nconst lifecycleHookMap = {\n onMounted,\n onUpdated,\n onUnmounted,\n onBeforeMount,\n onBeforeUpdate,\n onBeforeUnmount,\n onErrorCaptured,\n onRenderTracked,\n onRenderTriggered,\n onActivated,\n onDeactivated,\n onServerPrefetch,\n onScopeDispose,\n} as const;\n\nexport function bindLifecycleHooks(instance: any) {\n for (const key in lifecycleHookMap) {\n const hookName = key as keyof typeof lifecycleHookMap;\n const vueHook = lifecycleHookMap[hookName];\n\n const handler = instance[hookName];\n\n if (typeof handler === 'function') {\n vueHook(handler.bind(instance));\n }\n }\n}\n","import { SERVICE_METADATA } from \"./internals\";\nimport type { ServiceConstructor, ServiceMetadata } from \"./types\";\n\nexport function getServiceMeta(target: ServiceConstructor | object) {\n const ctor = typeof target === \"function\" ? target : target.constructor;\n\n const meta = (ctor as any)[SERVICE_METADATA] as ServiceMetadata;\n if (!meta?.token) {\n throw new Error(`[IOCRAFT]: ${ctor?.name || \"Unknown\"} is not decorated with @Register()`);\n }\n return meta;\n}\n","import { type FunctionPlugin } from \"vue\";\nimport { Nav, RouterFacade } from \"../common/nav\";\nimport { RootRegistry } from \"./internals\";\nimport type { PluginOptions } from \"./types\";\nimport { getServiceMeta } from \"./utils\";\n\nexport const iocraft: FunctionPlugin<[Partial<PluginOptions>?]> = (_app, options?: Partial<PluginOptions>) => {\n if (options?.router) {\n RootRegistry.set(getServiceMeta(Nav).token, new RouterFacade(options.router));\n }\n\n // Eagerly create Service instances\n if (options?.eagerLoad) {\n options.eagerLoad.forEach((service) => {\n const serviceMeta = getServiceMeta(service);\n\n if (!RootRegistry.has(serviceMeta.token)) {\n RootRegistry.set(serviceMeta.token, new service());\n }\n });\n }\n};\n","import type { RouteLocationNormalizedGeneric, Router } from \"vue-router\";\nimport { attach } from \"../core\";\n\nexport interface Nav\n extends\n Omit<Router, \"install\" | \"options\" | \"currentRoute\">,\n Pick<RouteLocationNormalizedGeneric, \"path\" | \"name\" | \"params\" | \"query\" | \"hash\" | \"fullPath\" | \"matched\" | \"meta\"> {}\n\n@attach()\nexport class Nav {}\n\nexport class RouterFacade {\n constructor(private router: Router) {}\n\n // ─── Flattened current route getters\n get path() {\n return this.router.currentRoute.value.path;\n }\n get name() {\n return this.router.currentRoute.value.name;\n }\n get params() {\n return this.router.currentRoute.value.params;\n }\n get query() {\n return this.router.currentRoute.value.query;\n }\n get hash() {\n return this.router.currentRoute.value.hash;\n }\n get fullPath() {\n return this.router.currentRoute.value.fullPath;\n }\n get matched() {\n return this.router.currentRoute.value.matched;\n }\n get meta() {\n return this.router.currentRoute.value.meta;\n }\n get redirectedFrom() {\n return this.router.currentRoute.value.redirectedFrom;\n }\n\n // ─── Router state\n get currentRoute() {\n return this.router.currentRoute;\n }\n get options() {\n return this.router.options;\n }\n\n get listening() {\n return this.router.listening;\n }\n set listening(value: boolean) {\n this.router.listening = value;\n }\n\n // ─── Navigation\n push(...args: Parameters<Router[\"push\"]>) {\n return this.router.push(...args);\n }\n replace(...args: Parameters<Router[\"replace\"]>) {\n return this.router.replace(...args);\n }\n go(delta: number) {\n return this.router.go(delta);\n }\n back() {\n return this.router.back();\n }\n forward() {\n return this.router.forward();\n }\n\n // ─── Route resolution\n resolve(...args: Parameters<Router[\"resolve\"]>) {\n return this.router.resolve(...args);\n }\n\n // ─── Route registry\n getRoutes() {\n return this.router.getRoutes();\n }\n hasRoute(...args: Parameters<Router[\"hasRoute\"]>) {\n return this.router.hasRoute(...args);\n }\n addRoute(...args: Parameters<Router[\"addRoute\"]>) {\n return this.router.addRoute(...args);\n }\n removeRoute(...args: Parameters<Router[\"removeRoute\"]>) {\n return this.router.removeRoute(...args);\n }\n clearRoutes() {\n return this.router.clearRoutes();\n }\n\n // ─── Navigation guards\n beforeEach(...args: Parameters<Router[\"beforeEach\"]>) {\n return this.router.beforeEach(...args);\n }\n beforeResolve(...args: Parameters<Router[\"beforeResolve\"]>) {\n return this.router.beforeResolve(...args);\n }\n afterEach(...args: Parameters<Router[\"afterEach\"]>) {\n return this.router.afterEach(...args);\n }\n onError(...args: Parameters<Router[\"onError\"]>) {\n return this.router.onError(...args);\n }\n\n // ─── Lifecycle\n isReady() {\n return this.router.isReady();\n }\n}\n","import { SERVICE_METADATA } from \"./internals\";\nimport type { ServiceConstructor, ServiceMetadata } from \"./types\";\n\n/**\n * Attaches some internal meta data to a class that is needed for di system\n *\n */\nexport function attach(){\n return function <C extends ServiceConstructor>(constructor: C) {\n if ((constructor as any)[SERVICE_METADATA]?.token) {\n return constructor;\n }\n\n // Add more metadata here if needed\n (constructor as any)[SERVICE_METADATA] = {\n token: Symbol(`[IOCRAFT]: Service - ${constructor.name || \"Anonymous\"}`),\n } satisfies ServiceMetadata;\n\n return constructor;\n };\n}\n"],"mappings":"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","names":[]}
|
package/dist/common.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class;"use strict";
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunk4PDVPTG3cjs = require('./chunk-4PDVPTG3.cjs');
|
|
5
5
|
|
|
6
6
|
// src/common/store.ts
|
|
7
7
|
var _vue = require('vue');
|
|
@@ -113,7 +113,9 @@ function createExecution(options, state) {
|
|
|
113
113
|
if (options.timeout) {
|
|
114
114
|
timeout = createTimeout(() => {
|
|
115
115
|
if (!options.key) {
|
|
116
|
-
console.warn(
|
|
116
|
+
console.warn(
|
|
117
|
+
"[IOCRAFT::TASK] \u27F6 timeout triggered but request won't be cancelled \u2014 add a key and use abortable() to enable cancellation"
|
|
118
|
+
);
|
|
117
119
|
}
|
|
118
120
|
abortTask(options.key);
|
|
119
121
|
state.executionId.value++;
|
|
@@ -155,11 +157,6 @@ function createDebounce() {
|
|
|
155
157
|
});
|
|
156
158
|
};
|
|
157
159
|
}
|
|
158
|
-
function releaseKey(key) {
|
|
159
|
-
if (key == null) return;
|
|
160
|
-
_optionalChain([AbortRegistry, 'access', _15 => _15.get, 'call', _16 => _16(key), 'optionalAccess', _17 => _17.abort, 'call', _18 => _18()]);
|
|
161
|
-
AbortRegistry.delete(key);
|
|
162
|
-
}
|
|
163
160
|
|
|
164
161
|
// src/common/task/task.ts
|
|
165
162
|
function task(options) {
|
|
@@ -172,15 +169,10 @@ function task(options) {
|
|
|
172
169
|
const state = createTaskState();
|
|
173
170
|
const { execute } = createExecution(options, state);
|
|
174
171
|
const debounce = createDebounce();
|
|
175
|
-
let
|
|
176
|
-
let tracker;
|
|
172
|
+
let trackRef;
|
|
177
173
|
if (options.track) {
|
|
178
174
|
const { deps, immediate } = options.track;
|
|
179
|
-
|
|
180
|
-
tracker = {
|
|
181
|
-
pause: () => stopWatch.pause(),
|
|
182
|
-
resume: () => stopWatch.resume()
|
|
183
|
-
};
|
|
175
|
+
trackRef = _vue.watch.call(void 0, deps, (newArgs) => execute(...newArgs), { immediate });
|
|
184
176
|
}
|
|
185
177
|
return {
|
|
186
178
|
data: state.data,
|
|
@@ -190,7 +182,7 @@ function task(options) {
|
|
|
190
182
|
isIdle: state.isIdle,
|
|
191
183
|
isError: state.isError,
|
|
192
184
|
isSuccess: state.isSuccess,
|
|
193
|
-
|
|
185
|
+
trackRef,
|
|
194
186
|
run(...args) {
|
|
195
187
|
return options.debounce ? debounce(() => execute(...args), options.debounce) : execute(...args);
|
|
196
188
|
},
|
|
@@ -205,7 +197,6 @@ function task(options) {
|
|
|
205
197
|
return;
|
|
206
198
|
}
|
|
207
199
|
abortTask(options.key);
|
|
208
|
-
AbortRegistry.delete(options.key);
|
|
209
200
|
state.executionId.value++;
|
|
210
201
|
state.status.value = "idle";
|
|
211
202
|
state.error.value = void 0;
|
|
@@ -217,16 +208,6 @@ function task(options) {
|
|
|
217
208
|
state.data.value = void 0;
|
|
218
209
|
state.error.value = void 0;
|
|
219
210
|
state.initialized.value = false;
|
|
220
|
-
},
|
|
221
|
-
dispose() {
|
|
222
|
-
state.executionId.value++;
|
|
223
|
-
_optionalChain([stopWatch, 'optionalAccess', _19 => _19.stop, 'call', _20 => _20()]);
|
|
224
|
-
releaseKey(options.key);
|
|
225
|
-
if (options.key) keyRegistry.delete(options.key);
|
|
226
|
-
state.status.value = "idle";
|
|
227
|
-
state.data.value = void 0;
|
|
228
|
-
state.error.value = void 0;
|
|
229
|
-
state.initialized.value = false;
|
|
230
211
|
}
|
|
231
212
|
};
|
|
232
213
|
}
|
|
@@ -244,5 +225,5 @@ function abortable(key) {
|
|
|
244
225
|
|
|
245
226
|
|
|
246
227
|
|
|
247
|
-
exports.Nav =
|
|
228
|
+
exports.Nav = _chunk4PDVPTG3cjs.Nav; exports.abortable = abortable; exports.store = store; exports.task = task;
|
|
248
229
|
//# sourceMappingURL=common.cjs.map
|