iocraft 0.2.6 → 0.2.8

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.
@@ -24,9 +24,9 @@ var NativeKeys = /* @__PURE__ */ new Set([
24
24
  ...Object.getOwnPropertyNames(Object.prototype),
25
25
  ...Object.getOwnPropertySymbols(Object.prototype),
26
26
  ...Object.getOwnPropertyNames(Function.prototype),
27
- ...Object.getOwnPropertySymbols(Function.prototype),
28
- ...Object.getOwnPropertyNames(Array.prototype),
29
- ...Object.getOwnPropertySymbols(Array.prototype)
27
+ ...Object.getOwnPropertySymbols(Function.prototype)
28
+ // ...Object.getOwnPropertyNames(Array.prototype),
29
+ // ...Object.getOwnPropertySymbols(Array.prototype),
30
30
  ]);
31
31
  function addInstanceProperties(serviceInstance, targetObj) {
32
32
  const ownKeys = [...Object.getOwnPropertyNames(serviceInstance), ...Object.getOwnPropertySymbols(serviceInstance)];
@@ -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);
@@ -274,6 +188,103 @@ function obtainCtx(serviceClass) {
274
188
 
275
189
  // src/common/nav.ts
276
190
  var Nav = class {
191
+ constructor(router) {
192
+ this.router = router;
193
+ }
194
+ // ─── Flattened current route getters
195
+ get path() {
196
+ return this.router.currentRoute.value.path;
197
+ }
198
+ get name() {
199
+ return this.router.currentRoute.value.name;
200
+ }
201
+ get params() {
202
+ return this.router.currentRoute.value.params;
203
+ }
204
+ get query() {
205
+ return this.router.currentRoute.value.query;
206
+ }
207
+ get hash() {
208
+ return this.router.currentRoute.value.hash;
209
+ }
210
+ get fullPath() {
211
+ return this.router.currentRoute.value.fullPath;
212
+ }
213
+ get matched() {
214
+ return this.router.currentRoute.value.matched;
215
+ }
216
+ get meta() {
217
+ return this.router.currentRoute.value.meta;
218
+ }
219
+ get redirectedFrom() {
220
+ return this.router.currentRoute.value.redirectedFrom;
221
+ }
222
+ // ─── Router state
223
+ get currentRoute() {
224
+ return this.router.currentRoute;
225
+ }
226
+ get options() {
227
+ return this.router.options;
228
+ }
229
+ get listening() {
230
+ return this.router.listening;
231
+ }
232
+ set listening(value) {
233
+ this.router.listening = value;
234
+ }
235
+ // ─── Navigation
236
+ push(...args) {
237
+ return this.router.push(...args);
238
+ }
239
+ replace(...args) {
240
+ return this.router.replace(...args);
241
+ }
242
+ go(delta) {
243
+ return this.router.go(delta);
244
+ }
245
+ back() {
246
+ return this.router.back();
247
+ }
248
+ forward() {
249
+ return this.router.forward();
250
+ }
251
+ // ─── Route resolution
252
+ resolve(...args) {
253
+ return this.router.resolve(...args);
254
+ }
255
+ // ─── Route registry
256
+ getRoutes() {
257
+ return this.router.getRoutes();
258
+ }
259
+ hasRoute(...args) {
260
+ return this.router.hasRoute(...args);
261
+ }
262
+ addRoute(...args) {
263
+ return this.router.addRoute(...args);
264
+ }
265
+ removeRoute(...args) {
266
+ return this.router.removeRoute(...args);
267
+ }
268
+ clearRoutes() {
269
+ return this.router.clearRoutes();
270
+ }
271
+ // ─── Navigation guards
272
+ beforeEach(...args) {
273
+ return this.router.beforeEach(...args);
274
+ }
275
+ beforeResolve(...args) {
276
+ return this.router.beforeResolve(...args);
277
+ }
278
+ afterEach(...args) {
279
+ return this.router.afterEach(...args);
280
+ }
281
+ onError(...args) {
282
+ return this.router.onError(...args);
283
+ }
284
+ // ─── Lifecycle
285
+ isReady() {
286
+ return this.router.isReady();
287
+ }
277
288
  };
278
289
  Nav = exports.Nav = __decorateClass([
279
290
  attach()
@@ -282,7 +293,7 @@ Nav = exports.Nav = __decorateClass([
282
293
  // src/core/plugin.ts
283
294
  var iocraft = (_app, options) => {
284
295
  if (_optionalChain([options, 'optionalAccess', _3 => _3.router])) {
285
- RootRegistry.set(getServiceMeta(Nav).token, generateRouterFacade(options.router));
296
+ RootRegistry.set(getServiceMeta(Nav).token, new Nav(options.router));
286
297
  }
287
298
  if (_optionalChain([options, 'optionalAccess', _4 => _4.eagerLoad])) {
288
299
  options.eagerLoad.forEach((service) => {
@@ -316,7 +327,5 @@ function attach() {
316
327
 
317
328
 
318
329
 
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
330
+ exports.getServiceMeta = getServiceMeta; exports.obtain = obtain; exports.obtainNew = obtainNew; exports.exposeCtx = exposeCtx; exports.obtainCtx = obtainCtx; exports.Nav = Nav; exports.iocraft = iocraft; exports.attach = attach;
331
+ //# sourceMappingURL=chunk-5SJR27OE.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/iocraft/iocraft/packages/iocraft/dist/chunk-5SJR27OE.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-5SJR27OE.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 } 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 Nav(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 { Router } from \"vue-router\";\nimport { attach } from \"../core\";\n\n@attach()\nexport class Nav {\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"]}
@@ -24,9 +24,9 @@ var NativeKeys = /* @__PURE__ */ new Set([
24
24
  ...Object.getOwnPropertyNames(Object.prototype),
25
25
  ...Object.getOwnPropertySymbols(Object.prototype),
26
26
  ...Object.getOwnPropertyNames(Function.prototype),
27
- ...Object.getOwnPropertySymbols(Function.prototype),
28
- ...Object.getOwnPropertyNames(Array.prototype),
29
- ...Object.getOwnPropertySymbols(Array.prototype)
27
+ ...Object.getOwnPropertySymbols(Function.prototype)
28
+ // ...Object.getOwnPropertyNames(Array.prototype),
29
+ // ...Object.getOwnPropertySymbols(Array.prototype),
30
30
  ]);
31
31
  function addInstanceProperties(serviceInstance, targetObj) {
32
32
  const ownKeys = [...Object.getOwnPropertyNames(serviceInstance), ...Object.getOwnPropertySymbols(serviceInstance)];
@@ -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);
@@ -274,6 +188,103 @@ import "vue";
274
188
 
275
189
  // src/common/nav.ts
276
190
  var Nav = class {
191
+ constructor(router) {
192
+ this.router = router;
193
+ }
194
+ // ─── Flattened current route getters
195
+ get path() {
196
+ return this.router.currentRoute.value.path;
197
+ }
198
+ get name() {
199
+ return this.router.currentRoute.value.name;
200
+ }
201
+ get params() {
202
+ return this.router.currentRoute.value.params;
203
+ }
204
+ get query() {
205
+ return this.router.currentRoute.value.query;
206
+ }
207
+ get hash() {
208
+ return this.router.currentRoute.value.hash;
209
+ }
210
+ get fullPath() {
211
+ return this.router.currentRoute.value.fullPath;
212
+ }
213
+ get matched() {
214
+ return this.router.currentRoute.value.matched;
215
+ }
216
+ get meta() {
217
+ return this.router.currentRoute.value.meta;
218
+ }
219
+ get redirectedFrom() {
220
+ return this.router.currentRoute.value.redirectedFrom;
221
+ }
222
+ // ─── Router state
223
+ get currentRoute() {
224
+ return this.router.currentRoute;
225
+ }
226
+ get options() {
227
+ return this.router.options;
228
+ }
229
+ get listening() {
230
+ return this.router.listening;
231
+ }
232
+ set listening(value) {
233
+ this.router.listening = value;
234
+ }
235
+ // ─── Navigation
236
+ push(...args) {
237
+ return this.router.push(...args);
238
+ }
239
+ replace(...args) {
240
+ return this.router.replace(...args);
241
+ }
242
+ go(delta) {
243
+ return this.router.go(delta);
244
+ }
245
+ back() {
246
+ return this.router.back();
247
+ }
248
+ forward() {
249
+ return this.router.forward();
250
+ }
251
+ // ─── Route resolution
252
+ resolve(...args) {
253
+ return this.router.resolve(...args);
254
+ }
255
+ // ─── Route registry
256
+ getRoutes() {
257
+ return this.router.getRoutes();
258
+ }
259
+ hasRoute(...args) {
260
+ return this.router.hasRoute(...args);
261
+ }
262
+ addRoute(...args) {
263
+ return this.router.addRoute(...args);
264
+ }
265
+ removeRoute(...args) {
266
+ return this.router.removeRoute(...args);
267
+ }
268
+ clearRoutes() {
269
+ return this.router.clearRoutes();
270
+ }
271
+ // ─── Navigation guards
272
+ beforeEach(...args) {
273
+ return this.router.beforeEach(...args);
274
+ }
275
+ beforeResolve(...args) {
276
+ return this.router.beforeResolve(...args);
277
+ }
278
+ afterEach(...args) {
279
+ return this.router.afterEach(...args);
280
+ }
281
+ onError(...args) {
282
+ return this.router.onError(...args);
283
+ }
284
+ // ─── Lifecycle
285
+ isReady() {
286
+ return this.router.isReady();
287
+ }
277
288
  };
278
289
  Nav = __decorateClass([
279
290
  attach()
@@ -282,7 +293,7 @@ Nav = __decorateClass([
282
293
  // src/core/plugin.ts
283
294
  var iocraft = (_app, options) => {
284
295
  if (options?.router) {
285
- RootRegistry.set(getServiceMeta(Nav).token, generateRouterFacade(options.router));
296
+ RootRegistry.set(getServiceMeta(Nav).token, new Nav(options.router));
286
297
  }
287
298
  if (options?.eagerLoad) {
288
299
  options.eagerLoad.forEach((service) => {
@@ -310,13 +321,11 @@ function attach() {
310
321
  export {
311
322
  getServiceMeta,
312
323
  obtain,
313
- obtainRaw,
314
324
  obtainNew,
315
- obtainNewRaw,
316
325
  exposeCtx,
317
326
  obtainCtx,
318
327
  Nav,
319
328
  iocraft,
320
329
  attach
321
330
  };
322
- //# sourceMappingURL=chunk-NNROA5P7.js.map
331
+ //# sourceMappingURL=chunk-ZSI3DYYX.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 } 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 Nav(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 { Router } from \"vue-router\";\nimport { attach } from \"../core\";\n\n@attach()\nexport class Nav {\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 _chunkQQPHKYMRcjs = require('./chunk-QQPHKYMR.cjs');
4
+ var _chunk5SJR27OEcjs = require('./chunk-5SJR27OE.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("[IOCRAFT::TASK] \u27F6 timeout triggered but request won't be cancelled \u2014 add a key and use abortable() to enable cancellation");
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 stopWatch;
176
- let tracker;
172
+ let trackRef;
177
173
  if (options.track) {
178
174
  const { deps, immediate } = options.track;
179
- stopWatch = _vue.watch.call(void 0, deps, (newArgs) => execute(...newArgs), { immediate });
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
- tracker,
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 = _chunkQQPHKYMRcjs.Nav; exports.abortable = abortable; exports.store = store; exports.task = task;
228
+ exports.Nav = _chunk5SJR27OEcjs.Nav; exports.abortable = abortable; exports.store = store; exports.task = task;
248
229
  //# sourceMappingURL=common.cjs.map