iocraft 0.2.0

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.
@@ -0,0 +1,288 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __decorateClass = (decorators, target, key, kind) => {
5
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
6
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
7
+ if (decorator = decorators[i])
8
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
9
+ if (kind && result) __defProp(target, key, result);
10
+ return result;
11
+ };
12
+
13
+ // src/core/facade.ts
14
+ function hasKey(obj, key) {
15
+ if (typeof key === "symbol") {
16
+ return Object.getOwnPropertySymbols(obj).includes(key);
17
+ }
18
+ return Object.hasOwn(obj, key);
19
+ }
20
+ var NativeKeys = /* @__PURE__ */ new Set([
21
+ ...Object.getOwnPropertyNames(Object.prototype),
22
+ ...Object.getOwnPropertySymbols(Object.prototype),
23
+ ...Object.getOwnPropertyNames(Function.prototype),
24
+ ...Object.getOwnPropertySymbols(Function.prototype),
25
+ ...Object.getOwnPropertyNames(Array.prototype),
26
+ ...Object.getOwnPropertySymbols(Array.prototype)
27
+ ]);
28
+ function addInstanceProperties(serviceInstance, targetObj) {
29
+ const ownKeys = [...Object.getOwnPropertyNames(serviceInstance), ...Object.getOwnPropertySymbols(serviceInstance)];
30
+ for (const key of ownKeys) {
31
+ if (hasKey(targetObj, key)) continue;
32
+ const descriptor = Object.getOwnPropertyDescriptor(serviceInstance, key);
33
+ if (typeof descriptor.value === "function") {
34
+ console.warn(`[VUE DI]: Instance method "${String(key)}" found as own property. Consider moving to prototype.`);
35
+ continue;
36
+ }
37
+ if (descriptor.get || descriptor.set) {
38
+ continue;
39
+ }
40
+ Object.defineProperty(targetObj, key, {
41
+ get() {
42
+ return serviceInstance[key];
43
+ },
44
+ set(v) {
45
+ serviceInstance[key] = v;
46
+ },
47
+ enumerable: true,
48
+ configurable: true
49
+ });
50
+ }
51
+ }
52
+ function addStaticProperties(serviceClass, targetObj) {
53
+ const staticKeys = [...Object.getOwnPropertyNames(serviceClass), ...Object.getOwnPropertySymbols(serviceClass)];
54
+ for (const key of staticKeys) {
55
+ if (hasKey(targetObj, key)) {
56
+ continue;
57
+ }
58
+ if (typeof key === "string" && NativeKeys.has(key)) {
59
+ continue;
60
+ }
61
+ const descriptor = Object.getOwnPropertyDescriptor(serviceClass, key);
62
+ if (typeof descriptor.value === "function") {
63
+ targetObj[key] = descriptor.value.bind(serviceClass);
64
+ } else if (descriptor.get || descriptor.set) {
65
+ Object.defineProperty(targetObj, key, {
66
+ get: descriptor.get ? () => descriptor.get.call(serviceClass) : void 0,
67
+ set: descriptor.set ? (v) => descriptor.set.call(serviceClass, v) : void 0,
68
+ enumerable: true,
69
+ configurable: true
70
+ });
71
+ } else {
72
+ Object.defineProperty(targetObj, key, {
73
+ get() {
74
+ return serviceClass[key];
75
+ },
76
+ set(v) {
77
+ serviceClass[key] = v;
78
+ },
79
+ enumerable: true,
80
+ configurable: true
81
+ });
82
+ }
83
+ }
84
+ }
85
+ function addPrototypeProperties(serviceInstance, targetObj) {
86
+ let currentProto = Object.getPrototypeOf(serviceInstance);
87
+ while (currentProto && currentProto !== Object.prototype) {
88
+ const protoKeys = [...Object.getOwnPropertyNames(currentProto), ...Object.getOwnPropertySymbols(currentProto)];
89
+ for (const key of protoKeys) {
90
+ if (hasKey(targetObj, key)) continue;
91
+ if (NativeKeys.has(key)) continue;
92
+ const descriptor = Object.getOwnPropertyDescriptor(currentProto, key);
93
+ if (descriptor.get || descriptor.set) {
94
+ Object.defineProperty(targetObj, key, {
95
+ get: descriptor.get ? () => descriptor.get.call(serviceInstance) : void 0,
96
+ set: descriptor.set ? (v) => descriptor.set.call(serviceInstance, v) : void 0,
97
+ enumerable: true,
98
+ configurable: true
99
+ });
100
+ } else if (typeof descriptor.value === "function") {
101
+ targetObj[key] = descriptor.value.bind(serviceInstance);
102
+ }
103
+ }
104
+ currentProto = Object.getPrototypeOf(currentProto);
105
+ }
106
+ }
107
+ function createFacadeObj(serviceClass, serviceInstance) {
108
+ const targetObj = {};
109
+ addStaticProperties(serviceClass, targetObj);
110
+ addInstanceProperties(serviceInstance, targetObj);
111
+ addPrototypeProperties(serviceInstance, targetObj);
112
+ return targetObj;
113
+ }
114
+ function generateRouterFacade(router) {
115
+ return {
116
+ get path() {
117
+ return router.currentRoute.value.path;
118
+ },
119
+ get name() {
120
+ return router.currentRoute.value.name;
121
+ },
122
+ get params() {
123
+ return router.currentRoute.value.params;
124
+ },
125
+ get query() {
126
+ return router.currentRoute.value.query;
127
+ },
128
+ get hash() {
129
+ return router.currentRoute.value.hash;
130
+ },
131
+ get fullPath() {
132
+ return router.currentRoute.value.fullPath;
133
+ },
134
+ get matched() {
135
+ return router.currentRoute.value.matched;
136
+ },
137
+ get meta() {
138
+ return router.currentRoute.value.meta;
139
+ },
140
+ push: router.push.bind(router),
141
+ replace: router.replace.bind(router),
142
+ go: router.go.bind(router),
143
+ back: router.back.bind(router),
144
+ forward: router.forward.bind(router),
145
+ resolve: router.resolve.bind(router),
146
+ getRoutes: router.getRoutes.bind(router),
147
+ hasRoute: router.hasRoute.bind(router),
148
+ // Router guards
149
+ beforeEach: router.beforeEach.bind(router),
150
+ beforeResolve: router.beforeResolve.bind(router),
151
+ afterEach: router.afterEach.bind(router),
152
+ onError: router.onError.bind(router),
153
+ // Dynamic routing
154
+ addRoute: router.addRoute.bind(router),
155
+ removeRoute: router.removeRoute.bind(router),
156
+ clearRoutes: router.clearRoutes.bind(router),
157
+ // State
158
+ isReady: router.isReady.bind(router),
159
+ get currentRoute() {
160
+ return router.currentRoute;
161
+ }
162
+ };
163
+ }
164
+
165
+ // src/utils/core.utils.ts
166
+ var SERVICE_METADATA = /* @__PURE__ */ Symbol("VUEDI_SERVICE_METADATA");
167
+ var RootRegistry = /* @__PURE__ */ new Map();
168
+ var TempRegistry = /* @__PURE__ */ new Map();
169
+ function getServiceMeta(target) {
170
+ const ctor = typeof target === "function" ? target : target.constructor;
171
+ const meta = ctor[SERVICE_METADATA];
172
+ if (!meta?.token) {
173
+ throw new Error(`[VUE DI]: ${ctor?.name || "Unknown"} is not decorated with @Service()`);
174
+ }
175
+ return meta;
176
+ }
177
+
178
+ // src/core/injectors.ts
179
+ function Inject(serviceClass) {
180
+ const serviceMeta = getServiceMeta(serviceClass);
181
+ if (!RootRegistry.has(serviceMeta.token)) {
182
+ RootRegistry.set(serviceMeta.token, new serviceClass());
183
+ }
184
+ let instance = RootRegistry.get(serviceMeta.token);
185
+ if (serviceMeta.facade) {
186
+ if (!TempRegistry.has(serviceMeta.token)) {
187
+ TempRegistry.set(serviceMeta.token, createFacadeObj(serviceClass, instance));
188
+ }
189
+ instance = TempRegistry.get(serviceMeta.token);
190
+ }
191
+ return instance;
192
+ }
193
+
194
+ // src/core/plugin.ts
195
+ import "vue";
196
+ var VuediPlugin = (_app, options) => {
197
+ if (options?.router) {
198
+ RootRegistry.set(getServiceMeta(Nav).token, generateRouterFacade(options.router));
199
+ }
200
+ if (options?.EagerLoad) {
201
+ options.EagerLoad.forEach((service) => {
202
+ const serviceMeta = getServiceMeta(service);
203
+ if (!RootRegistry.has(serviceMeta.token)) {
204
+ RootRegistry.set(serviceMeta.token, new service());
205
+ }
206
+ const instance = RootRegistry.get(serviceMeta.token);
207
+ if (serviceMeta.facade) {
208
+ if (!TempRegistry.has(serviceMeta.token)) {
209
+ TempRegistry.set(serviceMeta.token, createFacadeObj(service, instance));
210
+ }
211
+ }
212
+ });
213
+ }
214
+ };
215
+
216
+ // src/core/providers.ts
217
+ function Provide(options) {
218
+ return function(constructor) {
219
+ if (constructor[SERVICE_METADATA]?.token) {
220
+ return constructor;
221
+ }
222
+ constructor[SERVICE_METADATA] = {
223
+ token: /* @__PURE__ */ Symbol(`[VUE DI]: Service - ${constructor.name || "Anonymous"}`),
224
+ facade: options?.facade ?? true
225
+ };
226
+ return constructor;
227
+ };
228
+ }
229
+
230
+ // src/helpers/Nav.service.ts
231
+ var Nav = class {
232
+ };
233
+ Nav = __decorateClass([
234
+ Provide({
235
+ facade: false
236
+ })
237
+ ], Nav);
238
+
239
+ // src/helpers/Store.service.ts
240
+ import { computed } from "vue";
241
+ function Store(initialState) {
242
+ return class {
243
+ state = initialState;
244
+ getState() {
245
+ return this.state;
246
+ }
247
+ setState(partialState) {
248
+ for (const key in partialState) {
249
+ if (Object.hasOwn(partialState, key) && partialState[key] !== void 0) {
250
+ this.state[key] = partialState[key];
251
+ }
252
+ }
253
+ }
254
+ select(key) {
255
+ return computed(() => this.state[key]);
256
+ }
257
+ computed() {
258
+ }
259
+ watch() {
260
+ }
261
+ watchEffect() {
262
+ }
263
+ reset() {
264
+ const fresh = initialState;
265
+ for (const key in this.state) {
266
+ if (Object.hasOwn(this.state, key)) delete this.state[key];
267
+ }
268
+ for (const key in fresh) {
269
+ if (Object.hasOwn(fresh, key)) this.state[key] = fresh[key];
270
+ }
271
+ }
272
+ onInit() {
273
+ }
274
+ onDispose() {
275
+ }
276
+ };
277
+ }
278
+
279
+ export {
280
+ createFacadeObj,
281
+ generateRouterFacade,
282
+ Inject,
283
+ Nav,
284
+ Store,
285
+ VuediPlugin,
286
+ Provide
287
+ };
288
+ //# sourceMappingURL=chunk-K2RIRVYY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/facade.ts","../src/utils/core.utils.ts","../src/core/injectors.ts","../src/core/plugin.ts","../src/core/providers.ts","../src/helpers/Nav.service.ts","../src/helpers/Store.service.ts"],"sourcesContent":["import type { Router } from 'vue-router';\r\nimport type { ServiceConstructor } from '../utils/core.types';\r\n\r\nfunction hasKey(obj: Record<PropertyKey, unknown>, key: PropertyKey): boolean {\r\n if (typeof key === 'symbol') {\r\n return Object.getOwnPropertySymbols(obj).includes(key);\r\n }\r\n return Object.hasOwn(obj, key);\r\n}\r\n\r\nconst NativeKeys = new Set([\r\n ...Object.getOwnPropertyNames(Object.prototype),\r\n ...Object.getOwnPropertySymbols(Object.prototype),\r\n ...Object.getOwnPropertyNames(Function.prototype),\r\n ...Object.getOwnPropertySymbols(Function.prototype),\r\n ...Object.getOwnPropertyNames(Array.prototype),\r\n ...Object.getOwnPropertySymbols(Array.prototype),\r\n]);\r\n\r\nfunction addInstanceProperties<T extends object>(\r\n serviceInstance: InstanceType<ServiceConstructor<T>>,\r\n targetObj: Record<PropertyKey, unknown>\r\n) {\r\n const ownKeys = [...Object.getOwnPropertyNames(serviceInstance), ...Object.getOwnPropertySymbols(serviceInstance)];\r\n\r\n for (const key of ownKeys) {\r\n if (hasKey(targetObj, key)) continue;\r\n\r\n const descriptor = Object.getOwnPropertyDescriptor(serviceInstance, key)!;\r\n\r\n if (typeof descriptor.value === 'function') {\r\n console.warn(`[VUE DI]: Instance method \"${String(key)}\" found as own property. Consider moving to prototype.`);\r\n continue;\r\n }\r\n\r\n if (descriptor.get || descriptor.set) {\r\n continue;\r\n }\r\n\r\n Object.defineProperty(targetObj, key, {\r\n get() {\r\n return serviceInstance[key as keyof typeof serviceInstance];\r\n },\r\n set(v) {\r\n serviceInstance[key as keyof typeof serviceInstance] = v;\r\n },\r\n enumerable: true,\r\n configurable: true,\r\n });\r\n }\r\n}\r\n\r\nfunction addStaticProperties<T extends object>(\r\n serviceClass: ServiceConstructor<T>,\r\n targetObj: Record<PropertyKey, unknown>\r\n) {\r\n const staticKeys = [...Object.getOwnPropertyNames(serviceClass), ...Object.getOwnPropertySymbols(serviceClass)];\r\n\r\n for (const key of staticKeys) {\r\n if (hasKey(targetObj, key)) {\r\n continue;\r\n }\r\n\r\n if (typeof key === 'string' && NativeKeys.has(key)) {\r\n continue;\r\n }\r\n\r\n const descriptor = Object.getOwnPropertyDescriptor(serviceClass, key)!;\r\n\r\n if (typeof descriptor.value === 'function') {\r\n targetObj[key] = descriptor.value.bind(serviceClass);\r\n } else if (descriptor.get || descriptor.set) {\r\n Object.defineProperty(targetObj, key, {\r\n get: descriptor.get ? () => descriptor.get!.call(serviceClass) : undefined,\r\n set: descriptor.set ? (v: any) => descriptor.set!.call(serviceClass, v) : undefined,\r\n enumerable: true,\r\n configurable: true,\r\n });\r\n } else {\r\n Object.defineProperty(targetObj, key, {\r\n get() {\r\n return serviceClass[key as keyof typeof serviceClass];\r\n },\r\n set(v) {\r\n (serviceClass[key as keyof typeof serviceClass] as unknown) = v;\r\n },\r\n enumerable: true,\r\n configurable: true,\r\n });\r\n }\r\n }\r\n}\r\n\r\nfunction addPrototypeProperties<T extends object>(\r\n serviceInstance: InstanceType<ServiceConstructor<T>>,\r\n targetObj: Record<PropertyKey, unknown>\r\n) {\r\n let currentProto = Object.getPrototypeOf(serviceInstance);\r\n\r\n while (currentProto && currentProto !== Object.prototype) {\r\n const protoKeys = [...Object.getOwnPropertyNames(currentProto), ...Object.getOwnPropertySymbols(currentProto)];\r\n\r\n for (const key of protoKeys) {\r\n if (hasKey(targetObj, key)) continue;\r\n\r\n if (NativeKeys.has(key)) continue;\r\n\r\n const descriptor = Object.getOwnPropertyDescriptor(currentProto, key)!;\r\n\r\n if (descriptor.get || descriptor.set) {\r\n Object.defineProperty(targetObj, key, {\r\n get: descriptor.get ? () => descriptor.get!.call(serviceInstance) : undefined,\r\n set: descriptor.set ? (v: any) => descriptor.set!.call(serviceInstance, v) : undefined,\r\n enumerable: true,\r\n configurable: true,\r\n });\r\n } else if (typeof descriptor.value === 'function') {\r\n targetObj[key] = descriptor.value.bind(serviceInstance);\r\n }\r\n }\r\n\r\n currentProto = Object.getPrototypeOf(currentProto);\r\n }\r\n}\r\n\r\n/**\r\n * CREATES A FACADE OBJECT\r\n *\r\n * @export\r\n * @template {object} T\r\n * @param {ServiceConstructor<T>} serviceClass\r\n * @param {InstanceType<ServiceConstructor<T>>} serviceInstance\r\n * @returns {{}}\r\n */\r\nexport function createFacadeObj<T extends object>(\r\n serviceClass: ServiceConstructor<T>,\r\n serviceInstance: InstanceType<ServiceConstructor<T>>\r\n) {\r\n const targetObj = {};\r\n\r\n addStaticProperties(serviceClass, targetObj);\r\n addInstanceProperties(serviceInstance, targetObj);\r\n addPrototypeProperties(serviceInstance, targetObj);\r\n return targetObj;\r\n}\r\n\r\nexport function generateRouterFacade(router: Router): Record<string, any> {\r\n return {\r\n get path() {\r\n return router.currentRoute.value.path;\r\n },\r\n get name() {\r\n return router.currentRoute.value.name;\r\n },\r\n get params() {\r\n return router.currentRoute.value.params;\r\n },\r\n get query() {\r\n return router.currentRoute.value.query;\r\n },\r\n get hash() {\r\n return router.currentRoute.value.hash;\r\n },\r\n get fullPath() {\r\n return router.currentRoute.value.fullPath;\r\n },\r\n get matched() {\r\n return router.currentRoute.value.matched;\r\n },\r\n get meta() {\r\n return router.currentRoute.value.meta;\r\n },\r\n push: router.push.bind(router),\r\n replace: router.replace.bind(router),\r\n go: router.go.bind(router),\r\n back: router.back.bind(router),\r\n forward: router.forward.bind(router),\r\n resolve: router.resolve.bind(router),\r\n getRoutes: router.getRoutes.bind(router),\r\n hasRoute: router.hasRoute.bind(router),\r\n\r\n // Router guards\r\n beforeEach: router.beforeEach.bind(router),\r\n beforeResolve: router.beforeResolve.bind(router),\r\n afterEach: router.afterEach.bind(router),\r\n onError: router.onError.bind(router),\r\n\r\n // Dynamic routing\r\n addRoute: router.addRoute.bind(router),\r\n removeRoute: router.removeRoute.bind(router),\r\n clearRoutes: router.clearRoutes.bind(router),\r\n\r\n // State\r\n isReady: router.isReady.bind(router),\r\n get currentRoute() {\r\n return router.currentRoute;\r\n },\r\n };\r\n}\r\n","import type { ServiceConstructor, ServiceMetadata } from './core.types';\r\n\r\nexport const SERVICE_METADATA = Symbol('VUEDI_SERVICE_METADATA');\r\nexport const RootRegistry = new Map<symbol, object>();\r\nexport const TempRegistry = new Map<symbol, object>();\r\n\r\nexport function getServiceMeta(target: ServiceConstructor | object) {\r\n const ctor = typeof target === 'function' ? target : target.constructor;\r\n\r\n const meta = (ctor as any)[SERVICE_METADATA] as ServiceMetadata;\r\n if (!meta?.token) {\r\n throw new Error(`[VUE DI]: ${ctor?.name || 'Unknown'} is not decorated with @Service()`);\r\n }\r\n return meta;\r\n}\r\n\r\nexport function ImplementsDispose(instance: unknown) {\r\n return typeof (instance as any).dispose === 'function';\r\n}\r\n","import type { ServiceConstructor, ServiceView } from '../utils/core.types';\r\nimport { getServiceMeta, RootRegistry, TempRegistry } from '../utils/core.utils';\r\nimport { createFacadeObj } from './facade';\r\n\r\n/**\r\n * Injects a global singleton service From Root Registry;\r\n *\r\n * @export\r\n * @template {ServiceConstructor} T\r\n * @param {T} serviceClass\r\n * @param {*} [facade=new ReactiveFacade()]\r\n * @returns {ServiceView<T>}\r\n */\r\nexport function Inject<T extends ServiceConstructor>(\r\n serviceClass: T,\r\n): ServiceView<T> {\r\n const serviceMeta = getServiceMeta(serviceClass);\r\n\r\n // Ensure singleton\r\n if (!RootRegistry.has(serviceMeta.token)) {\r\n RootRegistry.set(serviceMeta.token, new serviceClass());\r\n }\r\n\r\n let instance = RootRegistry.get(serviceMeta.token)!;\r\n\r\n if (serviceMeta.facade) {\r\n if (!TempRegistry.has(serviceMeta.token)) {\r\n TempRegistry.set(serviceMeta.token, createFacadeObj(serviceClass, instance));\r\n }\r\n\r\n instance = TempRegistry.get(serviceMeta.token)!;\r\n }\r\n\r\n return instance as ServiceView<T>;\r\n}\r\n\r\n\r\n\r\n\r\n// export function InjectInstance<T extends ServiceConstructor>(serviceClass: T): InstanceType<T> {\r\n// let instance = new serviceClass();\r\n// // const componentInstance = getCurrentInstance();\r\n\r\n// // if (componentInstance) {\r\n// // onScopeDispose(() => {\r\n// // if (ImplementsDispose(instance)) {\r\n// // try {\r\n// // (instance as ServiceWithDispose<typeof instance>).dispose();\r\n// // } catch (error) {\r\n// // console.error('[VUE DI]: Error in scope dispose:', error);\r\n// // }\r\n// // }\r\n// // });\r\n// // }\r\n// return instance as InstanceType<T>;\r\n// }\r\n\r\n// export function InjectFromContext<T extends ServiceConstructor>(serviceClass: T) {\r\n// const serviceMeta = getServiceMeta(serviceClass);\r\n// return inject<InstanceType<T>>(serviceMeta.token);\r\n// }\r\n\r\n// export function ExposeToContext<T extends ServiceConstructor>(_classOrInstance: T | InstanceType<T>): void {\r\n// // let instance: InstanceType<T>;\r\n// // let ownsInstance = false;\r\n// // if (typeof classOrInstance === 'function') {\r\n// // instance = new classOrInstance() as InstanceType<T>;\r\n// // ownsInstance = true;\r\n// // } else {\r\n// // instance = classOrInstance;\r\n// // }\r\n// // const refView = getServiceRef(instance) as InstanceType<T>;\r\n// // const serviceToken = getServiceToken(instance);\r\n// // provide(serviceToken, refView);\r\n// // if (ownsInstance) {\r\n// // const componentInstance = getCurrentInstance();\r\n// // if (componentInstance) {\r\n// // onScopeDispose(() => {\r\n// // if (ImplementsDispose(instance)) {\r\n// // try {\r\n// // (instance as ServiceWithDispose<T>).dispose();\r\n// // } catch (error) {\r\n// // console.error('[VUE DI]: Error in scope dispose:', error);\r\n// // }\r\n// // }\r\n// // if (serviceRefView.has(instance)) {\r\n// // serviceRefView.delete(instance);\r\n// // }\r\n// // });\r\n// // }\r\n// // }\r\n// }\r\n","import { type FunctionPlugin } from 'vue';\r\nimport type { PluginOptions } from '../utils/core.types';\r\nimport { getServiceMeta, RootRegistry, TempRegistry } from '../utils/core.utils';\r\nimport { createFacadeObj, generateRouterFacade } from './facade';\r\nimport { Nav } from '../helpers';\r\n\r\nexport const VuediPlugin: FunctionPlugin<[Partial<PluginOptions>?]> = (_app, options?: Partial<PluginOptions>) => {\r\n if (options?.router) {\r\n RootRegistry.set(getServiceMeta(Nav).token, generateRouterFacade(options.router));\r\n }\r\n\r\n ///Eagerly create Service instances\r\n if (options?.EagerLoad) {\r\n options.EagerLoad.forEach(service => {\r\n const serviceMeta = getServiceMeta(service);\r\n\r\n if (!RootRegistry.has(serviceMeta.token)) {\r\n RootRegistry.set(serviceMeta.token, new service());\r\n }\r\n\r\n const instance = RootRegistry.get(serviceMeta.token)!;\r\n\r\n if (serviceMeta.facade) {\r\n if (!TempRegistry.has(serviceMeta.token)) {\r\n TempRegistry.set(serviceMeta.token, createFacadeObj(service, instance));\r\n }\r\n }\r\n });\r\n }\r\n};\r\n","import type { ServiceConstructor, ServiceMetadata, ServiceOptions } from '../utils/core.types';\r\nimport { SERVICE_METADATA } from '../utils/core.utils';\r\n\r\n/**\r\n * Registers A Class as Service\r\n *\r\n * @export\r\n * @param {?ServiceOptions} [options]\r\n * @returns {<C extends ServiceConstructor>(constructor: C) => C}\r\n */\r\nexport function Provide(options?: ServiceOptions): <C extends ServiceConstructor>(constructor: C) => C {\r\n return function <C extends ServiceConstructor>(constructor: C) {\r\n if ((constructor as any)[SERVICE_METADATA]?.token) {\r\n return constructor;\r\n }\r\n\r\n (constructor as any)[SERVICE_METADATA] = {\r\n token: Symbol(`[VUE DI]: Service - ${constructor.name || 'Anonymous'}`),\r\n facade: options?.facade ?? true,\r\n } satisfies ServiceMetadata;\r\n\r\n return constructor;\r\n };\r\n}\r\n","import type { RouteLocationNormalizedGeneric, Router } from 'vue-router';\r\nimport { Provide } from '../core';\r\n\r\nexport interface Nav\r\n extends\r\n Omit<Router, 'install' | 'options' | 'currentRoute'>,\r\n Pick<\r\n RouteLocationNormalizedGeneric,\r\n 'path' | 'name' | 'params' | 'query' | 'hash' | 'fullPath' | 'matched' | 'meta'\r\n > {}\r\n\r\n@Provide({\r\n facade: false,\r\n})\r\nexport class Nav {}\r\n","import { computed, type ComputedRef } from 'vue';\r\n\r\nexport function Store<T extends Record<string, any>>(initialState: T) {\r\n return class {\r\n state = initialState;\r\n\r\n getState(): T {\r\n return this.state;\r\n }\r\n\r\n setState(partialState: Partial<T>): void {\r\n for (const key in partialState) {\r\n if (Object.hasOwn(partialState, key) && partialState[key] !== undefined) {\r\n (this.state as any)[key] = partialState[key];\r\n }\r\n }\r\n }\r\n\r\n select<K extends keyof T>(key: K): ComputedRef<T[K]> {\r\n return computed(() => this.state[key]);\r\n }\r\n\r\n computed() {}\r\n\r\n watch() {}\r\n\r\n watchEffect() {}\r\n\r\n reset(): void {\r\n const fresh = initialState;\r\n\r\n for (const key in this.state) {\r\n if (Object.hasOwn(this.state, key)) delete (this.state as any)[key];\r\n }\r\n\r\n for (const key in fresh) {\r\n if (Object.hasOwn(fresh, key)) (this.state as any)[key] = fresh[key];\r\n }\r\n }\r\n\r\n onInit() {}\r\n\r\n onDispose() {}\r\n };\r\n}\r\n"],"mappings":"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","names":[]}
@@ -0,0 +1,288 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } 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
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __decorateClass = (decorators, target, key, kind) => {
5
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
6
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
7
+ if (decorator = decorators[i])
8
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
9
+ if (kind && result) __defProp(target, key, result);
10
+ return result;
11
+ };
12
+
13
+ // src/core/facade.ts
14
+ function hasKey(obj, key) {
15
+ if (typeof key === "symbol") {
16
+ return Object.getOwnPropertySymbols(obj).includes(key);
17
+ }
18
+ return Object.hasOwn(obj, key);
19
+ }
20
+ var NativeKeys = /* @__PURE__ */ new Set([
21
+ ...Object.getOwnPropertyNames(Object.prototype),
22
+ ...Object.getOwnPropertySymbols(Object.prototype),
23
+ ...Object.getOwnPropertyNames(Function.prototype),
24
+ ...Object.getOwnPropertySymbols(Function.prototype),
25
+ ...Object.getOwnPropertyNames(Array.prototype),
26
+ ...Object.getOwnPropertySymbols(Array.prototype)
27
+ ]);
28
+ function addInstanceProperties(serviceInstance, targetObj) {
29
+ const ownKeys = [...Object.getOwnPropertyNames(serviceInstance), ...Object.getOwnPropertySymbols(serviceInstance)];
30
+ for (const key of ownKeys) {
31
+ if (hasKey(targetObj, key)) continue;
32
+ const descriptor = Object.getOwnPropertyDescriptor(serviceInstance, key);
33
+ if (typeof descriptor.value === "function") {
34
+ console.warn(`[VUE DI]: Instance method "${String(key)}" found as own property. Consider moving to prototype.`);
35
+ continue;
36
+ }
37
+ if (descriptor.get || descriptor.set) {
38
+ continue;
39
+ }
40
+ Object.defineProperty(targetObj, key, {
41
+ get() {
42
+ return serviceInstance[key];
43
+ },
44
+ set(v) {
45
+ serviceInstance[key] = v;
46
+ },
47
+ enumerable: true,
48
+ configurable: true
49
+ });
50
+ }
51
+ }
52
+ function addStaticProperties(serviceClass, targetObj) {
53
+ const staticKeys = [...Object.getOwnPropertyNames(serviceClass), ...Object.getOwnPropertySymbols(serviceClass)];
54
+ for (const key of staticKeys) {
55
+ if (hasKey(targetObj, key)) {
56
+ continue;
57
+ }
58
+ if (typeof key === "string" && NativeKeys.has(key)) {
59
+ continue;
60
+ }
61
+ const descriptor = Object.getOwnPropertyDescriptor(serviceClass, key);
62
+ if (typeof descriptor.value === "function") {
63
+ targetObj[key] = descriptor.value.bind(serviceClass);
64
+ } else if (descriptor.get || descriptor.set) {
65
+ Object.defineProperty(targetObj, key, {
66
+ get: descriptor.get ? () => descriptor.get.call(serviceClass) : void 0,
67
+ set: descriptor.set ? (v) => descriptor.set.call(serviceClass, v) : void 0,
68
+ enumerable: true,
69
+ configurable: true
70
+ });
71
+ } else {
72
+ Object.defineProperty(targetObj, key, {
73
+ get() {
74
+ return serviceClass[key];
75
+ },
76
+ set(v) {
77
+ serviceClass[key] = v;
78
+ },
79
+ enumerable: true,
80
+ configurable: true
81
+ });
82
+ }
83
+ }
84
+ }
85
+ function addPrototypeProperties(serviceInstance, targetObj) {
86
+ let currentProto = Object.getPrototypeOf(serviceInstance);
87
+ while (currentProto && currentProto !== Object.prototype) {
88
+ const protoKeys = [...Object.getOwnPropertyNames(currentProto), ...Object.getOwnPropertySymbols(currentProto)];
89
+ for (const key of protoKeys) {
90
+ if (hasKey(targetObj, key)) continue;
91
+ if (NativeKeys.has(key)) continue;
92
+ const descriptor = Object.getOwnPropertyDescriptor(currentProto, key);
93
+ if (descriptor.get || descriptor.set) {
94
+ Object.defineProperty(targetObj, key, {
95
+ get: descriptor.get ? () => descriptor.get.call(serviceInstance) : void 0,
96
+ set: descriptor.set ? (v) => descriptor.set.call(serviceInstance, v) : void 0,
97
+ enumerable: true,
98
+ configurable: true
99
+ });
100
+ } else if (typeof descriptor.value === "function") {
101
+ targetObj[key] = descriptor.value.bind(serviceInstance);
102
+ }
103
+ }
104
+ currentProto = Object.getPrototypeOf(currentProto);
105
+ }
106
+ }
107
+ function createFacadeObj(serviceClass, serviceInstance) {
108
+ const targetObj = {};
109
+ addStaticProperties(serviceClass, targetObj);
110
+ addInstanceProperties(serviceInstance, targetObj);
111
+ addPrototypeProperties(serviceInstance, targetObj);
112
+ return targetObj;
113
+ }
114
+ function generateRouterFacade(router) {
115
+ return {
116
+ get path() {
117
+ return router.currentRoute.value.path;
118
+ },
119
+ get name() {
120
+ return router.currentRoute.value.name;
121
+ },
122
+ get params() {
123
+ return router.currentRoute.value.params;
124
+ },
125
+ get query() {
126
+ return router.currentRoute.value.query;
127
+ },
128
+ get hash() {
129
+ return router.currentRoute.value.hash;
130
+ },
131
+ get fullPath() {
132
+ return router.currentRoute.value.fullPath;
133
+ },
134
+ get matched() {
135
+ return router.currentRoute.value.matched;
136
+ },
137
+ get meta() {
138
+ return router.currentRoute.value.meta;
139
+ },
140
+ push: router.push.bind(router),
141
+ replace: router.replace.bind(router),
142
+ go: router.go.bind(router),
143
+ back: router.back.bind(router),
144
+ forward: router.forward.bind(router),
145
+ resolve: router.resolve.bind(router),
146
+ getRoutes: router.getRoutes.bind(router),
147
+ hasRoute: router.hasRoute.bind(router),
148
+ // Router guards
149
+ beforeEach: router.beforeEach.bind(router),
150
+ beforeResolve: router.beforeResolve.bind(router),
151
+ afterEach: router.afterEach.bind(router),
152
+ onError: router.onError.bind(router),
153
+ // Dynamic routing
154
+ addRoute: router.addRoute.bind(router),
155
+ removeRoute: router.removeRoute.bind(router),
156
+ clearRoutes: router.clearRoutes.bind(router),
157
+ // State
158
+ isReady: router.isReady.bind(router),
159
+ get currentRoute() {
160
+ return router.currentRoute;
161
+ }
162
+ };
163
+ }
164
+
165
+ // src/utils/core.utils.ts
166
+ var SERVICE_METADATA = /* @__PURE__ */ Symbol("VUEDI_SERVICE_METADATA");
167
+ var RootRegistry = /* @__PURE__ */ new Map();
168
+ var TempRegistry = /* @__PURE__ */ new Map();
169
+ function getServiceMeta(target) {
170
+ const ctor = typeof target === "function" ? target : target.constructor;
171
+ const meta = ctor[SERVICE_METADATA];
172
+ if (!_optionalChain([meta, 'optionalAccess', _ => _.token])) {
173
+ throw new Error(`[VUE DI]: ${_optionalChain([ctor, 'optionalAccess', _2 => _2.name]) || "Unknown"} is not decorated with @Service()`);
174
+ }
175
+ return meta;
176
+ }
177
+
178
+ // src/core/injectors.ts
179
+ function Inject(serviceClass) {
180
+ const serviceMeta = getServiceMeta(serviceClass);
181
+ if (!RootRegistry.has(serviceMeta.token)) {
182
+ RootRegistry.set(serviceMeta.token, new serviceClass());
183
+ }
184
+ let instance = RootRegistry.get(serviceMeta.token);
185
+ if (serviceMeta.facade) {
186
+ if (!TempRegistry.has(serviceMeta.token)) {
187
+ TempRegistry.set(serviceMeta.token, createFacadeObj(serviceClass, instance));
188
+ }
189
+ instance = TempRegistry.get(serviceMeta.token);
190
+ }
191
+ return instance;
192
+ }
193
+
194
+ // src/core/plugin.ts
195
+ var _vue = require('vue');
196
+ var VuediPlugin = (_app, options) => {
197
+ if (_optionalChain([options, 'optionalAccess', _3 => _3.router])) {
198
+ RootRegistry.set(getServiceMeta(Nav).token, generateRouterFacade(options.router));
199
+ }
200
+ if (_optionalChain([options, 'optionalAccess', _4 => _4.EagerLoad])) {
201
+ options.EagerLoad.forEach((service) => {
202
+ const serviceMeta = getServiceMeta(service);
203
+ if (!RootRegistry.has(serviceMeta.token)) {
204
+ RootRegistry.set(serviceMeta.token, new service());
205
+ }
206
+ const instance = RootRegistry.get(serviceMeta.token);
207
+ if (serviceMeta.facade) {
208
+ if (!TempRegistry.has(serviceMeta.token)) {
209
+ TempRegistry.set(serviceMeta.token, createFacadeObj(service, instance));
210
+ }
211
+ }
212
+ });
213
+ }
214
+ };
215
+
216
+ // src/core/providers.ts
217
+ function Provide(options) {
218
+ return function(constructor) {
219
+ if (_optionalChain([constructor, 'access', _5 => _5[SERVICE_METADATA], 'optionalAccess', _6 => _6.token])) {
220
+ return constructor;
221
+ }
222
+ constructor[SERVICE_METADATA] = {
223
+ token: /* @__PURE__ */ Symbol(`[VUE DI]: Service - ${constructor.name || "Anonymous"}`),
224
+ facade: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _7 => _7.facade]), () => ( true))
225
+ };
226
+ return constructor;
227
+ };
228
+ }
229
+
230
+ // src/helpers/Nav.service.ts
231
+ var Nav = class {
232
+ };
233
+ Nav = exports.Nav = __decorateClass([
234
+ Provide({
235
+ facade: false
236
+ })
237
+ ], Nav);
238
+
239
+ // src/helpers/Store.service.ts
240
+
241
+ function Store(initialState) {
242
+ return (_class = class {constructor() { _class.prototype.__init.call(this); }
243
+ __init() {this.state = initialState}
244
+ getState() {
245
+ return this.state;
246
+ }
247
+ setState(partialState) {
248
+ for (const key in partialState) {
249
+ if (Object.hasOwn(partialState, key) && partialState[key] !== void 0) {
250
+ this.state[key] = partialState[key];
251
+ }
252
+ }
253
+ }
254
+ select(key) {
255
+ return _vue.computed.call(void 0, () => this.state[key]);
256
+ }
257
+ computed() {
258
+ }
259
+ watch() {
260
+ }
261
+ watchEffect() {
262
+ }
263
+ reset() {
264
+ const fresh = initialState;
265
+ for (const key in this.state) {
266
+ if (Object.hasOwn(this.state, key)) delete this.state[key];
267
+ }
268
+ for (const key in fresh) {
269
+ if (Object.hasOwn(fresh, key)) this.state[key] = fresh[key];
270
+ }
271
+ }
272
+ onInit() {
273
+ }
274
+ onDispose() {
275
+ }
276
+ }, _class);
277
+ }
278
+
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
+
287
+ exports.createFacadeObj = createFacadeObj; exports.generateRouterFacade = generateRouterFacade; exports.Inject = Inject; exports.Nav = Nav; exports.Store = Store; exports.VuediPlugin = VuediPlugin; exports.Provide = Provide;
288
+ //# sourceMappingURL=chunk-NIDCU5WQ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["e:\\SPI\\vuedi\\packages\\vuedi\\dist\\chunk-NIDCU5WQ.cjs"],"names":[],"mappings":"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","file":"E:\\SPI\\vuedi\\packages\\vuedi\\dist\\chunk-NIDCU5WQ.cjs","sourcesContent":[null]}
package/dist/core.cjs ADDED
@@ -0,0 +1,16 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use strict";
2
+
3
+
4
+
5
+
6
+
7
+
8
+ var _chunkNIDCU5WQcjs = require('./chunk-NIDCU5WQ.cjs');
9
+
10
+
11
+
12
+
13
+
14
+
15
+ exports.Inject = _chunkNIDCU5WQcjs.Inject; exports.Provide = _chunkNIDCU5WQcjs.Provide; exports.VuediPlugin = _chunkNIDCU5WQcjs.VuediPlugin; exports.createFacadeObj = _chunkNIDCU5WQcjs.createFacadeObj; exports.generateRouterFacade = _chunkNIDCU5WQcjs.generateRouterFacade;
16
+ //# sourceMappingURL=core.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["e:\\SPI\\vuedi\\packages\\vuedi\\dist\\core.cjs"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACF,gRAAC","file":"E:\\SPI\\vuedi\\packages\\vuedi\\dist\\core.cjs"}
@@ -0,0 +1,50 @@
1
+ import { Router } from 'vue-router';
2
+ import { FunctionPlugin } from 'vue';
3
+
4
+ type ServiceConstructor<T extends object = object> = new (...args: any[]) => T;
5
+ type ServiceView<T extends ServiceConstructor> = InstanceType<T> & T;
6
+
7
+ type PluginOptions = {
8
+ EagerLoad: ServiceConstructor[];
9
+ router: Router;
10
+ };
11
+
12
+ interface ServiceOptions {
13
+ facade?: boolean;
14
+ }
15
+
16
+ /**
17
+ * CREATES A FACADE OBJECT
18
+ *
19
+ * @export
20
+ * @template {object} T
21
+ * @param {ServiceConstructor<T>} serviceClass
22
+ * @param {InstanceType<ServiceConstructor<T>>} serviceInstance
23
+ * @returns {{}}
24
+ */
25
+ declare function createFacadeObj<T extends object>(serviceClass: ServiceConstructor<T>, serviceInstance: InstanceType<ServiceConstructor<T>>): {};
26
+ declare function generateRouterFacade(router: Router): Record<string, any>;
27
+
28
+ /**
29
+ * Injects a global singleton service From Root Registry;
30
+ *
31
+ * @export
32
+ * @template {ServiceConstructor} T
33
+ * @param {T} serviceClass
34
+ * @param {*} [facade=new ReactiveFacade()]
35
+ * @returns {ServiceView<T>}
36
+ */
37
+ declare function Inject<T extends ServiceConstructor>(serviceClass: T): ServiceView<T>;
38
+
39
+ declare const VuediPlugin: FunctionPlugin<[Partial<PluginOptions>?]>;
40
+
41
+ /**
42
+ * Registers A Class as Service
43
+ *
44
+ * @export
45
+ * @param {?ServiceOptions} [options]
46
+ * @returns {<C extends ServiceConstructor>(constructor: C) => C}
47
+ */
48
+ declare function Provide(options?: ServiceOptions): <C extends ServiceConstructor>(constructor: C) => C;
49
+
50
+ export { Inject, Provide, VuediPlugin, createFacadeObj, generateRouterFacade };
package/dist/core.d.ts ADDED
@@ -0,0 +1,50 @@
1
+ import { Router } from 'vue-router';
2
+ import { FunctionPlugin } from 'vue';
3
+
4
+ type ServiceConstructor<T extends object = object> = new (...args: any[]) => T;
5
+ type ServiceView<T extends ServiceConstructor> = InstanceType<T> & T;
6
+
7
+ type PluginOptions = {
8
+ EagerLoad: ServiceConstructor[];
9
+ router: Router;
10
+ };
11
+
12
+ interface ServiceOptions {
13
+ facade?: boolean;
14
+ }
15
+
16
+ /**
17
+ * CREATES A FACADE OBJECT
18
+ *
19
+ * @export
20
+ * @template {object} T
21
+ * @param {ServiceConstructor<T>} serviceClass
22
+ * @param {InstanceType<ServiceConstructor<T>>} serviceInstance
23
+ * @returns {{}}
24
+ */
25
+ declare function createFacadeObj<T extends object>(serviceClass: ServiceConstructor<T>, serviceInstance: InstanceType<ServiceConstructor<T>>): {};
26
+ declare function generateRouterFacade(router: Router): Record<string, any>;
27
+
28
+ /**
29
+ * Injects a global singleton service From Root Registry;
30
+ *
31
+ * @export
32
+ * @template {ServiceConstructor} T
33
+ * @param {T} serviceClass
34
+ * @param {*} [facade=new ReactiveFacade()]
35
+ * @returns {ServiceView<T>}
36
+ */
37
+ declare function Inject<T extends ServiceConstructor>(serviceClass: T): ServiceView<T>;
38
+
39
+ declare const VuediPlugin: FunctionPlugin<[Partial<PluginOptions>?]>;
40
+
41
+ /**
42
+ * Registers A Class as Service
43
+ *
44
+ * @export
45
+ * @param {?ServiceOptions} [options]
46
+ * @returns {<C extends ServiceConstructor>(constructor: C) => C}
47
+ */
48
+ declare function Provide(options?: ServiceOptions): <C extends ServiceConstructor>(constructor: C) => C;
49
+
50
+ export { Inject, Provide, VuediPlugin, createFacadeObj, generateRouterFacade };
package/dist/core.js ADDED
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ import {
3
+ Inject,
4
+ Provide,
5
+ VuediPlugin,
6
+ createFacadeObj,
7
+ generateRouterFacade
8
+ } from "./chunk-K2RIRVYY.js";
9
+ export {
10
+ Inject,
11
+ Provide,
12
+ VuediPlugin,
13
+ createFacadeObj,
14
+ generateRouterFacade
15
+ };
16
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,10 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use strict";
2
+
3
+
4
+
5
+ var _chunkNIDCU5WQcjs = require('./chunk-NIDCU5WQ.cjs');
6
+
7
+
8
+
9
+ exports.Nav = _chunkNIDCU5WQcjs.Nav; exports.Store = _chunkNIDCU5WQcjs.Store;
10
+ //# sourceMappingURL=helpers.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["e:\\SPI\\vuedi\\packages\\vuedi\\dist\\helpers.cjs"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,6EAAC","file":"E:\\SPI\\vuedi\\packages\\vuedi\\dist\\helpers.cjs"}
@@ -0,0 +1,24 @@
1
+ import { Router, RouteLocationNormalizedGeneric } from 'vue-router';
2
+ import { ComputedRef } from 'vue';
3
+
4
+ interface Nav extends Omit<Router, 'install' | 'options' | 'currentRoute'>, Pick<RouteLocationNormalizedGeneric, 'path' | 'name' | 'params' | 'query' | 'hash' | 'fullPath' | 'matched' | 'meta'> {
5
+ }
6
+ declare class Nav {
7
+ }
8
+
9
+ declare function Store<T extends Record<string, any>>(initialState: T): {
10
+ new (): {
11
+ state: T;
12
+ getState(): T;
13
+ setState(partialState: Partial<T>): void;
14
+ select<K extends keyof T>(key: K): ComputedRef<T[K]>;
15
+ computed(): void;
16
+ watch(): void;
17
+ watchEffect(): void;
18
+ reset(): void;
19
+ onInit(): void;
20
+ onDispose(): void;
21
+ };
22
+ };
23
+
24
+ export { Nav, Store };
@@ -0,0 +1,24 @@
1
+ import { Router, RouteLocationNormalizedGeneric } from 'vue-router';
2
+ import { ComputedRef } from 'vue';
3
+
4
+ interface Nav extends Omit<Router, 'install' | 'options' | 'currentRoute'>, Pick<RouteLocationNormalizedGeneric, 'path' | 'name' | 'params' | 'query' | 'hash' | 'fullPath' | 'matched' | 'meta'> {
5
+ }
6
+ declare class Nav {
7
+ }
8
+
9
+ declare function Store<T extends Record<string, any>>(initialState: T): {
10
+ new (): {
11
+ state: T;
12
+ getState(): T;
13
+ setState(partialState: Partial<T>): void;
14
+ select<K extends keyof T>(key: K): ComputedRef<T[K]>;
15
+ computed(): void;
16
+ watch(): void;
17
+ watchEffect(): void;
18
+ reset(): void;
19
+ onInit(): void;
20
+ onDispose(): void;
21
+ };
22
+ };
23
+
24
+ export { Nav, Store };
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ import {
3
+ Nav,
4
+ Store
5
+ } from "./chunk-K2RIRVYY.js";
6
+ export {
7
+ Nav,
8
+ Store
9
+ };
10
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/package.json ADDED
@@ -0,0 +1,70 @@
1
+ {
2
+ "name": "iocraft",
3
+ "version": "0.2.0",
4
+ "description": "A lightweight, type-safe Dependency Injection (DI) container for Vue 3 using the Composition API.",
5
+ "keywords": [
6
+ "vue",
7
+ "vue3",
8
+ "dependency-injection",
9
+ "di",
10
+ "ioc",
11
+ "composition-api",
12
+ "typescript",
13
+ "vue-plugin"
14
+ ],
15
+ "homepage": "https://github.com/istiuak-0/vuedi#readme",
16
+ "bugs": {
17
+ "url": "https://github.com/istiuak-0/vuedi/issues"
18
+ },
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "git+https://github.com/istiuak-0/vuedi.git",
22
+ "directory": "packages/vuedi"
23
+ },
24
+ "license": "MIT",
25
+ "author": {
26
+ "name": "Istiuak",
27
+ "url": "https://github.com/istiuak-0"
28
+ },
29
+ "type": "module",
30
+ "exports": {
31
+ ".": {
32
+ "types": "./dist/core.d.ts",
33
+ "import": "./dist/core.js",
34
+ "require": "./dist/core.cjs"
35
+ },
36
+ "./helpers": {
37
+ "types": "./dist/helpers.d.ts",
38
+ "import": "./dist/helpers.js",
39
+ "require": "./dist/helpers.cjs"
40
+ }
41
+ },
42
+ "files": [
43
+ "dist"
44
+ ],
45
+ "peerDependencies": {
46
+ "vue": "^3.0.0",
47
+ "vue-router": "^4.0.0"
48
+ },
49
+ "devDependencies": {
50
+ "@types/node": "^22.0.0",
51
+ "tsup": "^8.5.1",
52
+ "typescript": "~5.9.3",
53
+ "vitest": "^4.0.16",
54
+ "vue": "^3.5.26",
55
+ "vue-router": "^4.6.4"
56
+ },
57
+ "engines": {
58
+ "node": ">=18.0.0"
59
+ },
60
+ "publishConfig": {
61
+ "access": "public"
62
+ },
63
+ "scripts": {
64
+ "build": "tsup",
65
+ "dev": "tsup --watch",
66
+ "typecheck": "tsc --noEmit",
67
+ "test": "vitest",
68
+ "lint": "eslint ."
69
+ }
70
+ }