iocraft 0.2.4 → 0.2.5
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-FPSHR5LZ.cjs → chunk-NJJ6QKII.cjs} +98 -39
- package/dist/chunk-NJJ6QKII.cjs.map +1 -0
- package/dist/{chunk-UO5JQJD3.js → chunk-OLY3RJCX.js} +100 -41
- package/dist/chunk-OLY3RJCX.js.map +1 -0
- package/dist/core.cjs +4 -2
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +39 -19
- package/dist/core.d.ts +39 -19
- package/dist/core.js +9 -7
- package/dist/helpers.cjs +2 -2
- package/dist/helpers.d.cts +9 -10
- package/dist/helpers.d.ts +9 -10
- package/dist/helpers.js +1 -1
- package/package.json +3 -3
- package/dist/chunk-FPSHR5LZ.cjs.map +0 -1
- package/dist/chunk-UO5JQJD3.js.map +0 -1
|
@@ -128,7 +128,7 @@ function generateRouterFacade(router) {
|
|
|
128
128
|
};
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
-
// src/core/
|
|
131
|
+
// src/core/obtainers.ts
|
|
132
132
|
var _vue = require('vue');
|
|
133
133
|
|
|
134
134
|
// src/core/internals.ts
|
|
@@ -149,6 +149,7 @@ var _vue = require('vue');
|
|
|
149
149
|
|
|
150
150
|
var SERVICE_METADATA = /* @__PURE__ */ Symbol("IOCRAFT_SERVICE_METADATA");
|
|
151
151
|
var RootRegistry = /* @__PURE__ */ new Map();
|
|
152
|
+
var creationStack = /* @__PURE__ */ new Set();
|
|
152
153
|
var lifecycleHookMap = {
|
|
153
154
|
onMounted: _vue.onMounted,
|
|
154
155
|
onUpdated: _vue.onUpdated,
|
|
@@ -184,44 +185,96 @@ function getServiceMetadata(target) {
|
|
|
184
185
|
}
|
|
185
186
|
return meta;
|
|
186
187
|
}
|
|
187
|
-
function
|
|
188
|
+
function hasService(serviceClass) {
|
|
188
189
|
const meta = getServiceMetadata(serviceClass);
|
|
189
190
|
return RootRegistry.has(meta.token);
|
|
190
191
|
}
|
|
191
|
-
function
|
|
192
|
+
function unRegister(serviceInstance) {
|
|
193
|
+
const meta = getServiceMetadata(serviceInstance);
|
|
194
|
+
const exist = RootRegistry.has(meta.token);
|
|
195
|
+
if (!exist) return false;
|
|
196
|
+
if (typeof serviceInstance === "object" && serviceInstance !== null && "onUnRegister" in serviceInstance && typeof serviceInstance.onUnRegister === "function") {
|
|
197
|
+
serviceInstance.onUnRegister();
|
|
198
|
+
}
|
|
199
|
+
return RootRegistry.delete(meta.token);
|
|
200
|
+
}
|
|
201
|
+
function clearRegistry() {
|
|
202
|
+
RootRegistry.clear();
|
|
192
203
|
}
|
|
193
204
|
|
|
194
|
-
// src/core/
|
|
205
|
+
// src/core/obtainers.ts
|
|
195
206
|
function obtain(serviceClass) {
|
|
196
207
|
const serviceMeta = getServiceMetadata(serviceClass);
|
|
197
|
-
if (
|
|
198
|
-
RootRegistry.
|
|
208
|
+
if (RootRegistry.has(serviceMeta.token)) {
|
|
209
|
+
const instance = RootRegistry.get(serviceMeta.token);
|
|
210
|
+
return createFacadeObj(instance);
|
|
211
|
+
}
|
|
212
|
+
if (creationStack.has(serviceMeta.token)) {
|
|
213
|
+
throw new Error(`[IocRaft] Circular dependency detected on: ${serviceClass.name}
|
|
214
|
+
`);
|
|
215
|
+
}
|
|
216
|
+
creationStack.add(serviceMeta.token);
|
|
217
|
+
try {
|
|
218
|
+
const instance = new serviceClass();
|
|
219
|
+
RootRegistry.set(serviceMeta.token, instance);
|
|
220
|
+
return createFacadeObj(instance);
|
|
221
|
+
} finally {
|
|
222
|
+
creationStack.delete(serviceMeta.token);
|
|
199
223
|
}
|
|
200
|
-
const instance = RootRegistry.get(serviceMeta.token);
|
|
201
|
-
return createFacadeObj(instance);
|
|
202
224
|
}
|
|
203
225
|
function obtainRaw(serviceClass) {
|
|
204
226
|
const serviceMeta = getServiceMetadata(serviceClass);
|
|
205
|
-
if (
|
|
206
|
-
RootRegistry.
|
|
227
|
+
if (RootRegistry.has(serviceMeta.token)) {
|
|
228
|
+
return RootRegistry.get(serviceMeta.token);
|
|
207
229
|
}
|
|
208
|
-
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
230
|
+
if (creationStack.has(serviceMeta.token)) {
|
|
231
|
+
throw new Error(`[IocRaft] Circular dependency detected on: ${serviceClass.name}
|
|
232
|
+
`);
|
|
233
|
+
}
|
|
234
|
+
creationStack.add(serviceMeta.token);
|
|
235
|
+
try {
|
|
236
|
+
const instance = new serviceClass();
|
|
237
|
+
RootRegistry.set(serviceMeta.token, instance);
|
|
238
|
+
return instance;
|
|
239
|
+
} finally {
|
|
240
|
+
creationStack.delete(serviceMeta.token);
|
|
215
241
|
}
|
|
216
|
-
return instance;
|
|
217
242
|
}
|
|
218
243
|
function obtainInstance(serviceClass) {
|
|
219
|
-
const
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
244
|
+
const serviceMeta = getServiceMetadata(serviceClass);
|
|
245
|
+
if (creationStack.has(serviceMeta.token)) {
|
|
246
|
+
throw new Error(`[IocRaft] Circular dependency detected on: ${serviceClass.name}
|
|
247
|
+
`);
|
|
248
|
+
}
|
|
249
|
+
creationStack.add(serviceMeta.token);
|
|
250
|
+
try {
|
|
251
|
+
const componentInstance = _vue.getCurrentInstance.call(void 0, );
|
|
252
|
+
const instance = new serviceClass();
|
|
253
|
+
if (componentInstance) {
|
|
254
|
+
bindLifecycleHooks(instance);
|
|
255
|
+
}
|
|
256
|
+
return createFacadeObj(instance);
|
|
257
|
+
} finally {
|
|
258
|
+
creationStack.delete(serviceMeta.token);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
function obtainRawInstance(serviceClass) {
|
|
262
|
+
const serviceMeta = getServiceMetadata(serviceClass);
|
|
263
|
+
if (creationStack.has(serviceMeta.token)) {
|
|
264
|
+
throw new Error(`[IocRaft] Circular dependency detected on: ${serviceClass.name}
|
|
265
|
+
`);
|
|
266
|
+
}
|
|
267
|
+
creationStack.add(serviceMeta.token);
|
|
268
|
+
try {
|
|
269
|
+
const componentInstance = _vue.getCurrentInstance.call(void 0, );
|
|
270
|
+
const instance = new serviceClass();
|
|
271
|
+
if (componentInstance) {
|
|
272
|
+
bindLifecycleHooks(instance);
|
|
273
|
+
}
|
|
274
|
+
return instance;
|
|
275
|
+
} finally {
|
|
276
|
+
creationStack.delete(serviceMeta.token);
|
|
223
277
|
}
|
|
224
|
-
return createFacadeObj(instance);
|
|
225
278
|
}
|
|
226
279
|
function exposeToContext(serviceInstance) {
|
|
227
280
|
const serviceMeta = getServiceMetadata(serviceInstance);
|
|
@@ -268,29 +321,34 @@ Nav = exports.Nav = __decorateClass([
|
|
|
268
321
|
Register()
|
|
269
322
|
], Nav);
|
|
270
323
|
|
|
271
|
-
// src/helpers/
|
|
324
|
+
// src/helpers/store.ts
|
|
325
|
+
|
|
272
326
|
function Store(initialState) {
|
|
327
|
+
const state = _vue.reactive.call(void 0, initialState);
|
|
328
|
+
const initial = structuredClone(initialState);
|
|
273
329
|
return (_class = class {constructor() { _class.prototype.__init.call(this); }
|
|
274
|
-
__init() {this.state =
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
setState(_partialState) {
|
|
330
|
+
__init() {this.state = state}
|
|
331
|
+
get snapshot() {
|
|
332
|
+
return structuredClone(_vue.toRaw.call(void 0, state));
|
|
278
333
|
}
|
|
279
|
-
|
|
334
|
+
update(changes) {
|
|
335
|
+
Object.assign(state, changes);
|
|
280
336
|
}
|
|
281
|
-
|
|
337
|
+
pick(key) {
|
|
338
|
+
return state[key];
|
|
282
339
|
}
|
|
283
|
-
|
|
340
|
+
compute(fn) {
|
|
341
|
+
return _vue.computed.call(void 0, () => fn(state));
|
|
284
342
|
}
|
|
285
|
-
|
|
343
|
+
observe(source, callback) {
|
|
344
|
+
const getter = typeof source === "function" ? () => source(state) : () => state[source];
|
|
345
|
+
return _vue.watch.call(void 0, getter, callback);
|
|
286
346
|
}
|
|
287
|
-
|
|
347
|
+
effect(fn) {
|
|
348
|
+
return _vue.watchEffect.call(void 0, () => fn(state));
|
|
288
349
|
}
|
|
289
350
|
reset() {
|
|
290
|
-
|
|
291
|
-
onInit() {
|
|
292
|
-
}
|
|
293
|
-
onDispose() {
|
|
351
|
+
Object.assign(state, structuredClone(initial));
|
|
294
352
|
}
|
|
295
353
|
}, _class);
|
|
296
354
|
}
|
|
@@ -311,5 +369,6 @@ function Store(initialState) {
|
|
|
311
369
|
|
|
312
370
|
|
|
313
371
|
|
|
314
|
-
|
|
315
|
-
|
|
372
|
+
|
|
373
|
+
exports.createFacadeObj = createFacadeObj; exports.generateRouterFacade = generateRouterFacade; exports.getServiceMetadata = getServiceMetadata; exports.hasService = hasService; exports.unRegister = unRegister; exports.clearRegistry = clearRegistry; exports.obtain = obtain; exports.obtainRaw = obtainRaw; exports.obtainInstance = obtainInstance; exports.obtainRawInstance = obtainRawInstance; exports.exposeToContext = exposeToContext; exports.obtainFromContext = obtainFromContext; exports.Nav = Nav; exports.Store = Store; exports.iocraft = iocraft; exports.Register = Register;
|
|
374
|
+
//# sourceMappingURL=chunk-NJJ6QKII.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/iocraft/iocraft/packages/iocraft/dist/chunk-NJJ6QKII.cjs","../src/core/facade.ts","../src/core/obtainers.ts","../src/core/internals.ts","../src/core/utils.ts","../src/core/plugin.ts","../src/core/register.ts","../src/helpers/Nav.service.ts","../src/helpers/store.ts"],"names":[],"mappings":"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","file":"/home/runner/work/iocraft/iocraft/packages/iocraft/dist/chunk-NJJ6QKII.cjs","sourcesContent":[null,"import type { Router } from 'vue-router';\nimport 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}\n\nexport function generateRouterFacade(router: Router): Record<string, any> {\n return {\n get path() {\n return router.currentRoute.value.path;\n },\n get name() {\n return router.currentRoute.value.name;\n },\n get params() {\n return router.currentRoute.value.params;\n },\n get query() {\n return router.currentRoute.value.query;\n },\n get hash() {\n return router.currentRoute.value.hash;\n },\n get fullPath() {\n return router.currentRoute.value.fullPath;\n },\n get matched() {\n return router.currentRoute.value.matched;\n },\n get meta() {\n return router.currentRoute.value.meta;\n },\n push: router.push.bind(router),\n replace: router.replace.bind(router),\n go: router.go.bind(router),\n back: router.back.bind(router),\n forward: router.forward.bind(router),\n resolve: router.resolve.bind(router),\n getRoutes: router.getRoutes.bind(router),\n hasRoute: router.hasRoute.bind(router),\n\n // Router guards\n beforeEach: router.beforeEach.bind(router),\n beforeResolve: router.beforeResolve.bind(router),\n afterEach: router.afterEach.bind(router),\n onError: router.onError.bind(router),\n\n // Dynamic routing\n addRoute: router.addRoute.bind(router),\n removeRoute: router.removeRoute.bind(router),\n clearRoutes: router.clearRoutes.bind(router),\n\n // State\n isReady: router.isReady.bind(router),\n get currentRoute() {\n return router.currentRoute;\n },\n };\n}\n","import { getCurrentInstance, inject, provide } from 'vue';\nimport { createFacadeObj } from './facade';\nimport { bindLifecycleHooks, creationStack, RootRegistry } from './internals';\nimport type { ServiceConstructor } from './types';\nimport { getServiceMetadata } 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 * @returns {InstanceType<T>}\n */\nexport function obtain<T extends ServiceConstructor>(serviceClass: T) {\n const serviceMeta = getServiceMetadata(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 global singleton service From Root Registry\n *\n * @export\n * @template {ServiceConstructor} T\n * @param {T} serviceClass\n * @returns {InstanceType<T>}\n */\nexport function obtainRaw<T extends ServiceConstructor>(serviceClass: T) {\n const serviceMeta = getServiceMetadata(serviceClass);\n\n if (RootRegistry.has(serviceMeta.token)) {\n return RootRegistry.get(serviceMeta.token) as InstanceType<T>;\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 instance as InstanceType<T>;\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 * @returns {InstanceType<T>}\n */\nexport function obtainInstance<T extends ServiceConstructor>(serviceClass: T) {\n const serviceMeta = getServiceMetadata(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\n\n\n/**\n * obtain a new Service Instance\n *\n * @export\n * @template {ServiceConstructor} T\n * @param {T} serviceClass\n * @returns {InstanceType<T>}\n */\nexport function obtainRawInstance<T extends ServiceConstructor>(serviceClass: T) {\n const serviceMeta = getServiceMetadata(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 return instance as InstanceType<T>;\n } finally {\n creationStack.delete(serviceMeta.token);\n }\n}\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 exposeToContext<T extends ServiceConstructor>(serviceInstance: InstanceType<T>) {\n const serviceMeta = getServiceMetadata(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 * @returns {*}\n */\nexport function obtainFromContext<T extends ServiceConstructor>(serviceClass: T) {\n const serviceMeta = getServiceMetadata(serviceClass);\n return inject<InstanceType<T>>(serviceMeta.token);\n}\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 { RootRegistry, SERVICE_METADATA } from './internals';\nimport type { ServiceConstructor, ServiceMetadata } from './types';\n\n/**\n * get service metadata\n *\n * @export\n * @param {(ServiceConstructor | object)} target\n * @returns {ServiceMetadata}\n */\nexport function getServiceMetadata(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\n\n/**\n * Check if a service is present in registry\n *\n * @export\n * @param {ServiceConstructor} serviceClass \n * @returns {*} \n */\nexport function hasService(serviceClass: ServiceConstructor) {\n const meta = getServiceMetadata(serviceClass);\n return RootRegistry.has(meta.token);\n}\n\n\n/**\n * unRegister (remove) a service from registry\n *\n * @export\n * @param {ServiceConstructor} serviceClass \n * @returns {*} \n */\nexport function unRegister<T extends InstanceType<ServiceConstructor>>(serviceInstance: T) {\n const meta = getServiceMetadata(serviceInstance);\n const exist = RootRegistry.has(meta.token);\n if (!exist) return false;\n\n\n if (typeof serviceInstance === 'object' &&\n serviceInstance !== null &&\n 'onUnRegister' in serviceInstance &&\n typeof serviceInstance.onUnRegister === 'function'\n ) {\n serviceInstance.onUnRegister()\n }\n\n return RootRegistry.delete(meta.token)\n}\n\n\n\n\n\n/**\n * clear service registry\n *\n * @export\n */\nexport function clearRegistry() {\n RootRegistry.clear()\n}","import { type FunctionPlugin } from 'vue';\nimport { Nav } from '../helpers';\nimport { generateRouterFacade } from './facade';\nimport { RootRegistry } from './internals';\nimport type { PluginOptions } from './types';\nimport { getServiceMetadata } from './utils';\n\nexport const iocraft: FunctionPlugin<[Partial<PluginOptions>?]> = (_app, options?: Partial<PluginOptions>) => {\n if (options?.router) {\n RootRegistry.set(getServiceMetadata(Nav).token, generateRouterFacade(options.router));\n }\n\n // Eagerly create Service instances\n if (options?.eagerLoad) {\n options.eagerLoad.forEach(service => {\n const serviceMeta = getServiceMetadata(service);\n\n if (!RootRegistry.has(serviceMeta.token)) {\n RootRegistry.set(serviceMeta.token, new service());\n }\n });\n }\n};\n","import { SERVICE_METADATA } from './internals';\nimport type { ServiceConstructor, ServiceMetadata } from './types';\n\n/**\n * Registers A Class as Service\n *\n * @export\n * @returns {<C extends ServiceConstructor>(constructor: C) => C}\n */\nexport function Register() {\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","import type { RouteLocationNormalizedGeneric, Router } from 'vue-router';\nimport { Register } from '../core';\n\nexport interface Nav\n extends\n Omit<Router, 'install' | 'options' | 'currentRoute'>,\n Pick<\n RouteLocationNormalizedGeneric,\n 'path' | 'name' | 'params' | 'query' | 'hash' | 'fullPath' | 'matched' | 'meta'\n > {}\n\n@Register()\nexport class Nav {}\n","import { reactive, computed, watch, watchEffect, type ComputedRef, type WatchStopHandle, toRaw } from \"vue\";\n\nexport function Store<T extends Record<string, any>>(initialState: T) {\n const state = reactive(initialState) as T;\n const initial = structuredClone(initialState);\n\n return class {\n readonly state = state;\n\n get snapshot(): T {\n return structuredClone(toRaw(state));\n }\n\n update(changes: Partial<T>): void {\n Object.assign(state, changes);\n }\n\n pick<K extends keyof T>(key: K): T[K] {\n return state[key]\n }\n\n compute<R>(fn: (state: T) => R): ComputedRef<R> {\n return computed(() => fn(state));\n }\n\n observe<K extends keyof T>(\n source: K,\n callback: (newValue: T[K], oldValue: T[K]) => void\n ): WatchStopHandle;\n\n observe<R>(\n source: (state: T) => R,\n callback: (newValue: R, oldValue: R) => void\n ): WatchStopHandle;\n\n observe<K extends keyof T, R>(\n source: K | ((state: T) => R),\n callback: (newValue: any, oldValue: any) => void\n ): WatchStopHandle {\n const getter = typeof source === 'function'\n ? () => source(state)\n : () => state[source as K];\n\n return watch(getter, callback);\n }\n\n effect(fn: (state: T) => void): WatchStopHandle {\n return watchEffect(() => fn(state));\n }\n\n reset(): void {\n Object.assign(state, structuredClone(initial));\n }\n };\n}\n\n"]}
|
|
@@ -128,7 +128,7 @@ function generateRouterFacade(router) {
|
|
|
128
128
|
};
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
-
// src/core/
|
|
131
|
+
// src/core/obtainers.ts
|
|
132
132
|
import { getCurrentInstance, inject, provide } from "vue";
|
|
133
133
|
|
|
134
134
|
// src/core/internals.ts
|
|
@@ -149,6 +149,7 @@ import {
|
|
|
149
149
|
} from "vue";
|
|
150
150
|
var SERVICE_METADATA = /* @__PURE__ */ Symbol("IOCRAFT_SERVICE_METADATA");
|
|
151
151
|
var RootRegistry = /* @__PURE__ */ new Map();
|
|
152
|
+
var creationStack = /* @__PURE__ */ new Set();
|
|
152
153
|
var lifecycleHookMap = {
|
|
153
154
|
onMounted,
|
|
154
155
|
onUpdated,
|
|
@@ -184,44 +185,96 @@ function getServiceMetadata(target) {
|
|
|
184
185
|
}
|
|
185
186
|
return meta;
|
|
186
187
|
}
|
|
187
|
-
function
|
|
188
|
+
function hasService(serviceClass) {
|
|
188
189
|
const meta = getServiceMetadata(serviceClass);
|
|
189
190
|
return RootRegistry.has(meta.token);
|
|
190
191
|
}
|
|
191
|
-
function
|
|
192
|
+
function unRegister(serviceInstance) {
|
|
193
|
+
const meta = getServiceMetadata(serviceInstance);
|
|
194
|
+
const exist = RootRegistry.has(meta.token);
|
|
195
|
+
if (!exist) return false;
|
|
196
|
+
if (typeof serviceInstance === "object" && serviceInstance !== null && "onUnRegister" in serviceInstance && typeof serviceInstance.onUnRegister === "function") {
|
|
197
|
+
serviceInstance.onUnRegister();
|
|
198
|
+
}
|
|
199
|
+
return RootRegistry.delete(meta.token);
|
|
200
|
+
}
|
|
201
|
+
function clearRegistry() {
|
|
202
|
+
RootRegistry.clear();
|
|
192
203
|
}
|
|
193
204
|
|
|
194
|
-
// src/core/
|
|
205
|
+
// src/core/obtainers.ts
|
|
195
206
|
function obtain(serviceClass) {
|
|
196
207
|
const serviceMeta = getServiceMetadata(serviceClass);
|
|
197
|
-
if (
|
|
198
|
-
RootRegistry.
|
|
208
|
+
if (RootRegistry.has(serviceMeta.token)) {
|
|
209
|
+
const instance = RootRegistry.get(serviceMeta.token);
|
|
210
|
+
return createFacadeObj(instance);
|
|
211
|
+
}
|
|
212
|
+
if (creationStack.has(serviceMeta.token)) {
|
|
213
|
+
throw new Error(`[IocRaft] Circular dependency detected on: ${serviceClass.name}
|
|
214
|
+
`);
|
|
215
|
+
}
|
|
216
|
+
creationStack.add(serviceMeta.token);
|
|
217
|
+
try {
|
|
218
|
+
const instance = new serviceClass();
|
|
219
|
+
RootRegistry.set(serviceMeta.token, instance);
|
|
220
|
+
return createFacadeObj(instance);
|
|
221
|
+
} finally {
|
|
222
|
+
creationStack.delete(serviceMeta.token);
|
|
199
223
|
}
|
|
200
|
-
const instance = RootRegistry.get(serviceMeta.token);
|
|
201
|
-
return createFacadeObj(instance);
|
|
202
224
|
}
|
|
203
225
|
function obtainRaw(serviceClass) {
|
|
204
226
|
const serviceMeta = getServiceMetadata(serviceClass);
|
|
205
|
-
if (
|
|
206
|
-
RootRegistry.
|
|
227
|
+
if (RootRegistry.has(serviceMeta.token)) {
|
|
228
|
+
return RootRegistry.get(serviceMeta.token);
|
|
207
229
|
}
|
|
208
|
-
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
230
|
+
if (creationStack.has(serviceMeta.token)) {
|
|
231
|
+
throw new Error(`[IocRaft] Circular dependency detected on: ${serviceClass.name}
|
|
232
|
+
`);
|
|
233
|
+
}
|
|
234
|
+
creationStack.add(serviceMeta.token);
|
|
235
|
+
try {
|
|
236
|
+
const instance = new serviceClass();
|
|
237
|
+
RootRegistry.set(serviceMeta.token, instance);
|
|
238
|
+
return instance;
|
|
239
|
+
} finally {
|
|
240
|
+
creationStack.delete(serviceMeta.token);
|
|
215
241
|
}
|
|
216
|
-
return instance;
|
|
217
242
|
}
|
|
218
243
|
function obtainInstance(serviceClass) {
|
|
219
|
-
const
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
244
|
+
const serviceMeta = getServiceMetadata(serviceClass);
|
|
245
|
+
if (creationStack.has(serviceMeta.token)) {
|
|
246
|
+
throw new Error(`[IocRaft] Circular dependency detected on: ${serviceClass.name}
|
|
247
|
+
`);
|
|
248
|
+
}
|
|
249
|
+
creationStack.add(serviceMeta.token);
|
|
250
|
+
try {
|
|
251
|
+
const componentInstance = getCurrentInstance();
|
|
252
|
+
const instance = new serviceClass();
|
|
253
|
+
if (componentInstance) {
|
|
254
|
+
bindLifecycleHooks(instance);
|
|
255
|
+
}
|
|
256
|
+
return createFacadeObj(instance);
|
|
257
|
+
} finally {
|
|
258
|
+
creationStack.delete(serviceMeta.token);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
function obtainRawInstance(serviceClass) {
|
|
262
|
+
const serviceMeta = getServiceMetadata(serviceClass);
|
|
263
|
+
if (creationStack.has(serviceMeta.token)) {
|
|
264
|
+
throw new Error(`[IocRaft] Circular dependency detected on: ${serviceClass.name}
|
|
265
|
+
`);
|
|
266
|
+
}
|
|
267
|
+
creationStack.add(serviceMeta.token);
|
|
268
|
+
try {
|
|
269
|
+
const componentInstance = getCurrentInstance();
|
|
270
|
+
const instance = new serviceClass();
|
|
271
|
+
if (componentInstance) {
|
|
272
|
+
bindLifecycleHooks(instance);
|
|
273
|
+
}
|
|
274
|
+
return instance;
|
|
275
|
+
} finally {
|
|
276
|
+
creationStack.delete(serviceMeta.token);
|
|
223
277
|
}
|
|
224
|
-
return createFacadeObj(instance);
|
|
225
278
|
}
|
|
226
279
|
function exposeToContext(serviceInstance) {
|
|
227
280
|
const serviceMeta = getServiceMetadata(serviceInstance);
|
|
@@ -268,29 +321,34 @@ Nav = __decorateClass([
|
|
|
268
321
|
Register()
|
|
269
322
|
], Nav);
|
|
270
323
|
|
|
271
|
-
// src/helpers/
|
|
324
|
+
// src/helpers/store.ts
|
|
325
|
+
import { reactive, computed, watch, watchEffect, toRaw } from "vue";
|
|
272
326
|
function Store(initialState) {
|
|
327
|
+
const state = reactive(initialState);
|
|
328
|
+
const initial = structuredClone(initialState);
|
|
273
329
|
return class {
|
|
274
|
-
state =
|
|
275
|
-
|
|
330
|
+
state = state;
|
|
331
|
+
get snapshot() {
|
|
332
|
+
return structuredClone(toRaw(state));
|
|
276
333
|
}
|
|
277
|
-
|
|
334
|
+
update(changes) {
|
|
335
|
+
Object.assign(state, changes);
|
|
278
336
|
}
|
|
279
|
-
|
|
337
|
+
pick(key) {
|
|
338
|
+
return state[key];
|
|
280
339
|
}
|
|
281
|
-
|
|
340
|
+
compute(fn) {
|
|
341
|
+
return computed(() => fn(state));
|
|
282
342
|
}
|
|
283
|
-
|
|
343
|
+
observe(source, callback) {
|
|
344
|
+
const getter = typeof source === "function" ? () => source(state) : () => state[source];
|
|
345
|
+
return watch(getter, callback);
|
|
284
346
|
}
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
watchEffect() {
|
|
347
|
+
effect(fn) {
|
|
348
|
+
return watchEffect(() => fn(state));
|
|
288
349
|
}
|
|
289
350
|
reset() {
|
|
290
|
-
|
|
291
|
-
onInit() {
|
|
292
|
-
}
|
|
293
|
-
onDispose() {
|
|
351
|
+
Object.assign(state, structuredClone(initial));
|
|
294
352
|
}
|
|
295
353
|
};
|
|
296
354
|
}
|
|
@@ -299,12 +357,13 @@ export {
|
|
|
299
357
|
createFacadeObj,
|
|
300
358
|
generateRouterFacade,
|
|
301
359
|
getServiceMetadata,
|
|
302
|
-
|
|
303
|
-
|
|
360
|
+
hasService,
|
|
361
|
+
unRegister,
|
|
362
|
+
clearRegistry,
|
|
304
363
|
obtain,
|
|
305
364
|
obtainRaw,
|
|
306
|
-
obtainRawInstance,
|
|
307
365
|
obtainInstance,
|
|
366
|
+
obtainRawInstance,
|
|
308
367
|
exposeToContext,
|
|
309
368
|
obtainFromContext,
|
|
310
369
|
Nav,
|
|
@@ -312,4 +371,4 @@ export {
|
|
|
312
371
|
iocraft,
|
|
313
372
|
Register
|
|
314
373
|
};
|
|
315
|
-
//# sourceMappingURL=chunk-
|
|
374
|
+
//# sourceMappingURL=chunk-OLY3RJCX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/facade.ts","../src/core/obtainers.ts","../src/core/internals.ts","../src/core/utils.ts","../src/core/plugin.ts","../src/core/register.ts","../src/helpers/Nav.service.ts","../src/helpers/store.ts"],"sourcesContent":["import type { Router } from 'vue-router';\nimport 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}\n\nexport function generateRouterFacade(router: Router): Record<string, any> {\n return {\n get path() {\n return router.currentRoute.value.path;\n },\n get name() {\n return router.currentRoute.value.name;\n },\n get params() {\n return router.currentRoute.value.params;\n },\n get query() {\n return router.currentRoute.value.query;\n },\n get hash() {\n return router.currentRoute.value.hash;\n },\n get fullPath() {\n return router.currentRoute.value.fullPath;\n },\n get matched() {\n return router.currentRoute.value.matched;\n },\n get meta() {\n return router.currentRoute.value.meta;\n },\n push: router.push.bind(router),\n replace: router.replace.bind(router),\n go: router.go.bind(router),\n back: router.back.bind(router),\n forward: router.forward.bind(router),\n resolve: router.resolve.bind(router),\n getRoutes: router.getRoutes.bind(router),\n hasRoute: router.hasRoute.bind(router),\n\n // Router guards\n beforeEach: router.beforeEach.bind(router),\n beforeResolve: router.beforeResolve.bind(router),\n afterEach: router.afterEach.bind(router),\n onError: router.onError.bind(router),\n\n // Dynamic routing\n addRoute: router.addRoute.bind(router),\n removeRoute: router.removeRoute.bind(router),\n clearRoutes: router.clearRoutes.bind(router),\n\n // State\n isReady: router.isReady.bind(router),\n get currentRoute() {\n return router.currentRoute;\n },\n };\n}\n","import { getCurrentInstance, inject, provide } from 'vue';\nimport { createFacadeObj } from './facade';\nimport { bindLifecycleHooks, creationStack, RootRegistry } from './internals';\nimport type { ServiceConstructor } from './types';\nimport { getServiceMetadata } 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 * @returns {InstanceType<T>}\n */\nexport function obtain<T extends ServiceConstructor>(serviceClass: T) {\n const serviceMeta = getServiceMetadata(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 global singleton service From Root Registry\n *\n * @export\n * @template {ServiceConstructor} T\n * @param {T} serviceClass\n * @returns {InstanceType<T>}\n */\nexport function obtainRaw<T extends ServiceConstructor>(serviceClass: T) {\n const serviceMeta = getServiceMetadata(serviceClass);\n\n if (RootRegistry.has(serviceMeta.token)) {\n return RootRegistry.get(serviceMeta.token) as InstanceType<T>;\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 instance as InstanceType<T>;\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 * @returns {InstanceType<T>}\n */\nexport function obtainInstance<T extends ServiceConstructor>(serviceClass: T) {\n const serviceMeta = getServiceMetadata(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\n\n\n/**\n * obtain a new Service Instance\n *\n * @export\n * @template {ServiceConstructor} T\n * @param {T} serviceClass\n * @returns {InstanceType<T>}\n */\nexport function obtainRawInstance<T extends ServiceConstructor>(serviceClass: T) {\n const serviceMeta = getServiceMetadata(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 return instance as InstanceType<T>;\n } finally {\n creationStack.delete(serviceMeta.token);\n }\n}\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 exposeToContext<T extends ServiceConstructor>(serviceInstance: InstanceType<T>) {\n const serviceMeta = getServiceMetadata(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 * @returns {*}\n */\nexport function obtainFromContext<T extends ServiceConstructor>(serviceClass: T) {\n const serviceMeta = getServiceMetadata(serviceClass);\n return inject<InstanceType<T>>(serviceMeta.token);\n}\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 { RootRegistry, SERVICE_METADATA } from './internals';\nimport type { ServiceConstructor, ServiceMetadata } from './types';\n\n/**\n * get service metadata\n *\n * @export\n * @param {(ServiceConstructor | object)} target\n * @returns {ServiceMetadata}\n */\nexport function getServiceMetadata(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\n\n/**\n * Check if a service is present in registry\n *\n * @export\n * @param {ServiceConstructor} serviceClass \n * @returns {*} \n */\nexport function hasService(serviceClass: ServiceConstructor) {\n const meta = getServiceMetadata(serviceClass);\n return RootRegistry.has(meta.token);\n}\n\n\n/**\n * unRegister (remove) a service from registry\n *\n * @export\n * @param {ServiceConstructor} serviceClass \n * @returns {*} \n */\nexport function unRegister<T extends InstanceType<ServiceConstructor>>(serviceInstance: T) {\n const meta = getServiceMetadata(serviceInstance);\n const exist = RootRegistry.has(meta.token);\n if (!exist) return false;\n\n\n if (typeof serviceInstance === 'object' &&\n serviceInstance !== null &&\n 'onUnRegister' in serviceInstance &&\n typeof serviceInstance.onUnRegister === 'function'\n ) {\n serviceInstance.onUnRegister()\n }\n\n return RootRegistry.delete(meta.token)\n}\n\n\n\n\n\n/**\n * clear service registry\n *\n * @export\n */\nexport function clearRegistry() {\n RootRegistry.clear()\n}","import { type FunctionPlugin } from 'vue';\nimport { Nav } from '../helpers';\nimport { generateRouterFacade } from './facade';\nimport { RootRegistry } from './internals';\nimport type { PluginOptions } from './types';\nimport { getServiceMetadata } from './utils';\n\nexport const iocraft: FunctionPlugin<[Partial<PluginOptions>?]> = (_app, options?: Partial<PluginOptions>) => {\n if (options?.router) {\n RootRegistry.set(getServiceMetadata(Nav).token, generateRouterFacade(options.router));\n }\n\n // Eagerly create Service instances\n if (options?.eagerLoad) {\n options.eagerLoad.forEach(service => {\n const serviceMeta = getServiceMetadata(service);\n\n if (!RootRegistry.has(serviceMeta.token)) {\n RootRegistry.set(serviceMeta.token, new service());\n }\n });\n }\n};\n","import { SERVICE_METADATA } from './internals';\nimport type { ServiceConstructor, ServiceMetadata } from './types';\n\n/**\n * Registers A Class as Service\n *\n * @export\n * @returns {<C extends ServiceConstructor>(constructor: C) => C}\n */\nexport function Register() {\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","import type { RouteLocationNormalizedGeneric, Router } from 'vue-router';\nimport { Register } from '../core';\n\nexport interface Nav\n extends\n Omit<Router, 'install' | 'options' | 'currentRoute'>,\n Pick<\n RouteLocationNormalizedGeneric,\n 'path' | 'name' | 'params' | 'query' | 'hash' | 'fullPath' | 'matched' | 'meta'\n > {}\n\n@Register()\nexport class Nav {}\n","import { reactive, computed, watch, watchEffect, type ComputedRef, type WatchStopHandle, toRaw } from \"vue\";\n\nexport function Store<T extends Record<string, any>>(initialState: T) {\n const state = reactive(initialState) as T;\n const initial = structuredClone(initialState);\n\n return class {\n readonly state = state;\n\n get snapshot(): T {\n return structuredClone(toRaw(state));\n }\n\n update(changes: Partial<T>): void {\n Object.assign(state, changes);\n }\n\n pick<K extends keyof T>(key: K): T[K] {\n return state[key]\n }\n\n compute<R>(fn: (state: T) => R): ComputedRef<R> {\n return computed(() => fn(state));\n }\n\n observe<K extends keyof T>(\n source: K,\n callback: (newValue: T[K], oldValue: T[K]) => void\n ): WatchStopHandle;\n\n observe<R>(\n source: (state: T) => R,\n callback: (newValue: R, oldValue: R) => void\n ): WatchStopHandle;\n\n observe<K extends keyof T, R>(\n source: K | ((state: T) => R),\n callback: (newValue: any, oldValue: any) => void\n ): WatchStopHandle {\n const getter = typeof source === 'function'\n ? () => source(state)\n : () => state[source as K];\n\n return watch(getter, callback);\n }\n\n effect(fn: (state: T) => void): WatchStopHandle {\n return watchEffect(() => fn(state));\n }\n\n reset(): void {\n Object.assign(state, structuredClone(initial));\n }\n };\n}\n\n"],"mappings":";;;;;;;;;;;;;AAGA,SAAS,OAAO,KAAmC,KAA2B;AAC5E,MAAI,OAAO,QAAQ,UAAU;AAC3B,WAAO,OAAO,sBAAsB,GAAG,EAAE,SAAS,GAAG;AAAA,EACvD;AACA,SAAO,OAAO,OAAO,KAAK,GAAG;AAC/B;AAEA,IAAM,aAAa,oBAAI,IAAI;AAAA,EACzB,GAAG,OAAO,oBAAoB,OAAO,SAAS;AAAA,EAC9C,GAAG,OAAO,sBAAsB,OAAO,SAAS;AAAA,EAChD,GAAG,OAAO,oBAAoB,SAAS,SAAS;AAAA,EAChD,GAAG,OAAO,sBAAsB,SAAS,SAAS;AAAA,EAClD,GAAG,OAAO,oBAAoB,MAAM,SAAS;AAAA,EAC7C,GAAG,OAAO,sBAAsB,MAAM,SAAS;AACjD,CAAC;AAED,SAAS,sBACP,iBACA,WACA;AACA,QAAM,UAAU,CAAC,GAAG,OAAO,oBAAoB,eAAe,GAAG,GAAG,OAAO,sBAAsB,eAAe,CAAC;AAEjH,aAAW,OAAO,SAAS;AACzB,QAAI,OAAO,WAAW,GAAG,EAAG;AAE5B,UAAM,aAAa,OAAO,yBAAyB,iBAAiB,GAAG;AAEvE,QAAI,OAAO,WAAW,UAAU,YAAY;AAC1C,cAAQ,KAAK,+BAA+B,OAAO,GAAG,CAAC,wDAAwD;AAC/G;AAAA,IACF;AAEA,QAAI,WAAW,OAAO,WAAW,KAAK;AACpC;AAAA,IACF;AAEA,WAAO,eAAe,WAAW,KAAK;AAAA,MACpC,MAAM;AACJ,eAAO,gBAAgB,GAAmC;AAAA,MAC5D;AAAA,MACA,IAAI,GAAG;AACL,wBAAgB,GAAmC,IAAI;AAAA,MACzD;AAAA,MACA,YAAY;AAAA,MACZ,cAAc;AAAA,IAChB,CAAC;AAAA,EACH;AACF;AAEA,SAAS,uBACP,iBACA,WACA;AACA,MAAI,eAAe,OAAO,eAAe,eAAe;AAExD,SAAO,gBAAgB,iBAAiB,OAAO,WAAW;AACxD,UAAM,YAAY,CAAC,GAAG,OAAO,oBAAoB,YAAY,GAAG,GAAG,OAAO,sBAAsB,YAAY,CAAC;AAE7G,eAAW,OAAO,WAAW;AAC3B,UAAI,OAAO,WAAW,GAAG,EAAG;AAE5B,UAAI,WAAW,IAAI,GAAG,EAAG;AAEzB,YAAM,aAAa,OAAO,yBAAyB,cAAc,GAAG;AAEpE,UAAI,WAAW,OAAO,WAAW,KAAK;AACpC,eAAO,eAAe,WAAW,KAAK;AAAA,UACpC,KAAK,WAAW,MAAM,MAAM,WAAW,IAAK,KAAK,eAAe,IAAI;AAAA,UACpE,KAAK,WAAW,MAAM,CAAC,MAAW,WAAW,IAAK,KAAK,iBAAiB,CAAC,IAAI;AAAA,UAC7E,YAAY;AAAA,UACZ,cAAc;AAAA,QAChB,CAAC;AAAA,MACH,WAAW,OAAO,WAAW,UAAU,YAAY;AACjD,kBAAU,GAAG,IAAI,WAAW,MAAM,KAAK,eAAe;AAAA,MACxD;AAAA,IACF;AAEA,mBAAe,OAAO,eAAe,YAAY;AAAA,EACnD;AACF;AAWO,SAAS,gBAAkC,iBAAyB;AACzE,QAAM,YAAY,CAAC;AAEnB,wBAAsB,iBAAiB,SAAS;AAChD,yBAAuB,iBAAiB,SAAS;AACjD,SAAO;AACT;AAEO,SAAS,qBAAqB,QAAqC;AACxE,SAAO;AAAA,IACL,IAAI,OAAO;AACT,aAAO,OAAO,aAAa,MAAM;AAAA,IACnC;AAAA,IACA,IAAI,OAAO;AACT,aAAO,OAAO,aAAa,MAAM;AAAA,IACnC;AAAA,IACA,IAAI,SAAS;AACX,aAAO,OAAO,aAAa,MAAM;AAAA,IACnC;AAAA,IACA,IAAI,QAAQ;AACV,aAAO,OAAO,aAAa,MAAM;AAAA,IACnC;AAAA,IACA,IAAI,OAAO;AACT,aAAO,OAAO,aAAa,MAAM;AAAA,IACnC;AAAA,IACA,IAAI,WAAW;AACb,aAAO,OAAO,aAAa,MAAM;AAAA,IACnC;AAAA,IACA,IAAI,UAAU;AACZ,aAAO,OAAO,aAAa,MAAM;AAAA,IACnC;AAAA,IACA,IAAI,OAAO;AACT,aAAO,OAAO,aAAa,MAAM;AAAA,IACnC;AAAA,IACA,MAAM,OAAO,KAAK,KAAK,MAAM;AAAA,IAC7B,SAAS,OAAO,QAAQ,KAAK,MAAM;AAAA,IACnC,IAAI,OAAO,GAAG,KAAK,MAAM;AAAA,IACzB,MAAM,OAAO,KAAK,KAAK,MAAM;AAAA,IAC7B,SAAS,OAAO,QAAQ,KAAK,MAAM;AAAA,IACnC,SAAS,OAAO,QAAQ,KAAK,MAAM;AAAA,IACnC,WAAW,OAAO,UAAU,KAAK,MAAM;AAAA,IACvC,UAAU,OAAO,SAAS,KAAK,MAAM;AAAA;AAAA,IAGrC,YAAY,OAAO,WAAW,KAAK,MAAM;AAAA,IACzC,eAAe,OAAO,cAAc,KAAK,MAAM;AAAA,IAC/C,WAAW,OAAO,UAAU,KAAK,MAAM;AAAA,IACvC,SAAS,OAAO,QAAQ,KAAK,MAAM;AAAA;AAAA,IAGnC,UAAU,OAAO,SAAS,KAAK,MAAM;AAAA,IACrC,aAAa,OAAO,YAAY,KAAK,MAAM;AAAA,IAC3C,aAAa,OAAO,YAAY,KAAK,MAAM;AAAA;AAAA,IAG3C,SAAS,OAAO,QAAQ,KAAK,MAAM;AAAA,IACnC,IAAI,eAAe;AACjB,aAAO,OAAO;AAAA,IAChB;AAAA,EACF;AACF;;;ACzJA,SAAS,oBAAoB,QAAQ,eAAe;;;ACApD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEA,IAAM,mBAAmB,uBAAO,0BAA0B;AAC1D,IAAM,eAAe,oBAAI,IAAoB;AAC7C,IAAM,gBAAgB,oBAAI,IAAY;AAC7C,IAAM,mBAAmB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,SAAS,mBAAmB,UAAe;AAChD,aAAW,OAAO,kBAAkB;AAClC,UAAM,WAAW;AACjB,UAAM,UAAU,iBAAiB,QAAQ;AAEzC,UAAM,UAAU,SAAS,QAAQ;AAEjC,QAAI,OAAO,YAAY,YAAY;AACjC,cAAQ,QAAQ,KAAK,QAAQ,CAAC;AAAA,IAChC;AAAA,EACF;AACF;;;ACpCO,SAAS,mBAAmB,QAAqC;AACtE,QAAM,OAAO,OAAO,WAAW,aAAa,SAAS,OAAO;AAE5D,QAAM,OAAQ,KAAa,gBAAgB;AAC3C,MAAI,CAAC,MAAM,OAAO;AAChB,UAAM,IAAI,MAAM,cAAc,MAAM,QAAQ,SAAS,oCAAoC;AAAA,EAC3F;AACA,SAAO;AACT;AAUO,SAAS,WAAW,cAAkC;AAC3D,QAAM,OAAO,mBAAmB,YAAY;AAC5C,SAAO,aAAa,IAAI,KAAK,KAAK;AACpC;AAUO,SAAS,WAAuD,iBAAoB;AACzF,QAAM,OAAO,mBAAmB,eAAe;AAC/C,QAAM,QAAQ,aAAa,IAAI,KAAK,KAAK;AACzC,MAAI,CAAC,MAAO,QAAO;AAGnB,MAAI,OAAO,oBAAoB,YAC7B,oBAAoB,QACpB,kBAAkB,mBAClB,OAAO,gBAAgB,iBAAiB,YACxC;AACA,oBAAgB,aAAa;AAAA,EAC/B;AAEA,SAAO,aAAa,OAAO,KAAK,KAAK;AACvC;AAWO,SAAS,gBAAgB;AAC9B,eAAa,MAAM;AACrB;;;AFvDO,SAAS,OAAqC,cAAiB;AACpE,QAAM,cAAc,mBAAmB,YAAY;AAEnD,MAAI,aAAa,IAAI,YAAY,KAAK,GAAG;AACvC,UAAM,WAAW,aAAa,IAAI,YAAY,KAAK;AACnD,WAAO,gBAAiC,QAAQ;AAAA,EAClD;AAEA,MAAI,cAAc,IAAI,YAAY,KAAK,GAAG;AACxC,UAAM,IAAI,MAAM,8CAA8C,aAAa,IAAI;AAAA,CAAI;AAAA,EACrF;AAEA,gBAAc,IAAI,YAAY,KAAK;AAEnC,MAAI;AACF,UAAM,WAAW,IAAI,aAAa;AAClC,iBAAa,IAAI,YAAY,OAAO,QAAQ;AAC5C,WAAO,gBAAiC,QAAQ;AAAA,EAClD,UAAE;AACA,kBAAc,OAAO,YAAY,KAAK;AAAA,EACxC;AACF;AAUO,SAAS,UAAwC,cAAiB;AACvE,QAAM,cAAc,mBAAmB,YAAY;AAEnD,MAAI,aAAa,IAAI,YAAY,KAAK,GAAG;AACvC,WAAO,aAAa,IAAI,YAAY,KAAK;AAAA,EAC3C;AAEA,MAAI,cAAc,IAAI,YAAY,KAAK,GAAG;AACxC,UAAM,IAAI,MAAM,8CAA8C,aAAa,IAAI;AAAA,CAAI;AAAA,EACrF;AAEA,gBAAc,IAAI,YAAY,KAAK;AAEnC,MAAI;AACF,UAAM,WAAW,IAAI,aAAa;AAClC,iBAAa,IAAI,YAAY,OAAO,QAAQ;AAC5C,WAAO;AAAA,EACT,UAAE;AACA,kBAAc,OAAO,YAAY,KAAK;AAAA,EACxC;AACF;AAUO,SAAS,eAA6C,cAAiB;AAC5E,QAAM,cAAc,mBAAmB,YAAY;AAEnD,MAAI,cAAc,IAAI,YAAY,KAAK,GAAG;AACxC,UAAM,IAAI,MAAM,8CAA8C,aAAa,IAAI;AAAA,CAAI;AAAA,EACrF;AAEA,gBAAc,IAAI,YAAY,KAAK;AAEnC,MAAI;AACF,UAAM,oBAAoB,mBAAmB;AAC7C,UAAM,WAAW,IAAI,aAAa;AAElC,QAAI,mBAAmB;AACrB,yBAAmB,QAAQ;AAAA,IAC7B;AAEA,WAAO,gBAAiC,QAAQ;AAAA,EAClD,UAAE;AACA,kBAAc,OAAO,YAAY,KAAK;AAAA,EACxC;AACF;AAcO,SAAS,kBAAgD,cAAiB;AAC/E,QAAM,cAAc,mBAAmB,YAAY;AAEnD,MAAI,cAAc,IAAI,YAAY,KAAK,GAAG;AACxC,UAAM,IAAI,MAAM,8CAA8C,aAAa,IAAI;AAAA,CAAI;AAAA,EACrF;AAEA,gBAAc,IAAI,YAAY,KAAK;AAEnC,MAAI;AACF,UAAM,oBAAoB,mBAAmB;AAC7C,UAAM,WAAW,IAAI,aAAa;AAElC,QAAI,mBAAmB;AACrB,yBAAmB,QAAQ;AAAA,IAC7B;AACA,WAAO;AAAA,EACT,UAAE;AACA,kBAAc,OAAO,YAAY,KAAK;AAAA,EACxC;AACF;AAWO,SAAS,gBAA8C,iBAAkC;AAC9F,QAAM,cAAc,mBAAmB,eAAe;AACtD,UAAQ,YAAY,OAAO,eAAe;AAC5C;AAUO,SAAS,kBAAgD,cAAiB;AAC/E,QAAM,cAAc,mBAAmB,YAAY;AACnD,SAAO,OAAwB,YAAY,KAAK;AAClD;;;AG7JA,OAAoC;AAO7B,IAAM,UAAqD,CAAC,MAAM,YAAqC;AAC5G,MAAI,SAAS,QAAQ;AACnB,iBAAa,IAAI,mBAAmB,GAAG,EAAE,OAAO,qBAAqB,QAAQ,MAAM,CAAC;AAAA,EACtF;AAGA,MAAI,SAAS,WAAW;AACtB,YAAQ,UAAU,QAAQ,aAAW;AACnC,YAAM,cAAc,mBAAmB,OAAO;AAE9C,UAAI,CAAC,aAAa,IAAI,YAAY,KAAK,GAAG;AACxC,qBAAa,IAAI,YAAY,OAAO,IAAI,QAAQ,CAAC;AAAA,MACnD;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;ACbO,SAAS,WAAW;AACzB,SAAO,SAAwC,aAAgB;AAC7D,QAAK,YAAoB,gBAAgB,GAAG,OAAO;AACjD,aAAO;AAAA,IACT;AAGA,IAAC,YAAoB,gBAAgB,IAAI;AAAA,MACvC,OAAO,uBAAO,wBAAwB,YAAY,QAAQ,WAAW,EAAE;AAAA,IACzE;AAEA,WAAO;AAAA,EACT;AACF;;;ACVO,IAAM,MAAN,MAAU;AAAC;AAAL,MAAN;AAAA,EADN,SAAS;AAAA,GACG;;;ACZb,SAAS,UAAU,UAAU,OAAO,aAAqD,aAAa;AAE/F,SAAS,MAAqC,cAAiB;AACpE,QAAM,QAAQ,SAAS,YAAY;AACnC,QAAM,UAAU,gBAAgB,YAAY;AAE5C,SAAO,MAAM;AAAA,IACF,QAAQ;AAAA,IAEjB,IAAI,WAAc;AAChB,aAAO,gBAAgB,MAAM,KAAK,CAAC;AAAA,IACrC;AAAA,IAEA,OAAO,SAA2B;AAChC,aAAO,OAAO,OAAO,OAAO;AAAA,IAC9B;AAAA,IAEA,KAAwB,KAAc;AACpC,aAAO,MAAM,GAAG;AAAA,IAClB;AAAA,IAEA,QAAW,IAAqC;AAC9C,aAAO,SAAS,MAAM,GAAG,KAAK,CAAC;AAAA,IACjC;AAAA,IAYA,QACE,QACA,UACiB;AACjB,YAAM,SAAS,OAAO,WAAW,aAC7B,MAAM,OAAO,KAAK,IAClB,MAAM,MAAM,MAAW;AAE3B,aAAO,MAAM,QAAQ,QAAQ;AAAA,IAC/B;AAAA,IAEA,OAAO,IAAyC;AAC9C,aAAO,YAAY,MAAM,GAAG,KAAK,CAAC;AAAA,IACpC;AAAA,IAEA,QAAc;AACZ,aAAO,OAAO,OAAO,gBAAgB,OAAO,CAAC;AAAA,IAC/C;AAAA,EACF;AACF;","names":[]}
|
package/dist/core.cjs
CHANGED
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
var _chunkFPSHR5LZcjs = require('./chunk-FPSHR5LZ.cjs');
|
|
17
16
|
|
|
17
|
+
var _chunkNJJ6QKIIcjs = require('./chunk-NJJ6QKII.cjs');
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
|
|
@@ -28,5 +28,7 @@ var _chunkFPSHR5LZcjs = require('./chunk-FPSHR5LZ.cjs');
|
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
exports.Register = _chunkNJJ6QKIIcjs.Register; exports.clearRegistry = _chunkNJJ6QKIIcjs.clearRegistry; exports.createFacadeObj = _chunkNJJ6QKIIcjs.createFacadeObj; exports.exposeToContext = _chunkNJJ6QKIIcjs.exposeToContext; exports.generateRouterFacade = _chunkNJJ6QKIIcjs.generateRouterFacade; exports.getServiceMetadata = _chunkNJJ6QKIIcjs.getServiceMetadata; exports.hasService = _chunkNJJ6QKIIcjs.hasService; exports.iocraft = _chunkNJJ6QKIIcjs.iocraft; exports.obtain = _chunkNJJ6QKIIcjs.obtain; exports.obtainFromContext = _chunkNJJ6QKIIcjs.obtainFromContext; exports.obtainInstance = _chunkNJJ6QKIIcjs.obtainInstance; exports.obtainRaw = _chunkNJJ6QKIIcjs.obtainRaw; exports.obtainRawInstance = _chunkNJJ6QKIIcjs.obtainRawInstance; exports.unRegister = _chunkNJJ6QKIIcjs.unRegister;
|
|
32
34
|
//# sourceMappingURL=core.cjs.map
|
package/dist/core.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/iocraft/iocraft/packages/iocraft/dist/core.cjs"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/iocraft/iocraft/packages/iocraft/dist/core.cjs"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,uxBAAC","file":"/home/runner/work/iocraft/iocraft/packages/iocraft/dist/core.cjs"}
|
package/dist/core.d.cts
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import { Router } from 'vue-router';
|
|
2
2
|
import { FunctionPlugin } from 'vue';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* CREATES A FACADE OBJECT
|
|
6
|
+
*
|
|
7
|
+
* @export
|
|
8
|
+
* @template {object} T
|
|
9
|
+
* @param {ServiceConstructor<T>} serviceClass
|
|
10
|
+
* @param {InstanceType<ServiceConstructor<T>>} serviceInstance
|
|
11
|
+
* @returns {{}}
|
|
12
|
+
*/
|
|
13
|
+
declare function createFacadeObj<T extends object>(serviceInstance: object): T;
|
|
14
|
+
declare function generateRouterFacade(router: Router): Record<string, any>;
|
|
15
|
+
|
|
4
16
|
type ServiceConstructor<T extends object = object> = new () => T;
|
|
5
17
|
|
|
6
18
|
type PluginOptions = {
|
|
@@ -65,18 +77,6 @@ interface OnScopeDispose {
|
|
|
65
77
|
onScopeDispose(): void;
|
|
66
78
|
}
|
|
67
79
|
|
|
68
|
-
/**
|
|
69
|
-
* CREATES A FACADE OBJECT
|
|
70
|
-
*
|
|
71
|
-
* @export
|
|
72
|
-
* @template {object} T
|
|
73
|
-
* @param {ServiceConstructor<T>} serviceClass
|
|
74
|
-
* @param {InstanceType<ServiceConstructor<T>>} serviceInstance
|
|
75
|
-
* @returns {{}}
|
|
76
|
-
*/
|
|
77
|
-
declare function createFacadeObj<T extends object>(serviceInstance: InstanceType<ServiceConstructor<T>>): {};
|
|
78
|
-
declare function generateRouterFacade(router: Router): Record<string, any>;
|
|
79
|
-
|
|
80
80
|
/**
|
|
81
81
|
* obtain Facade of a global singleton service From Root Registry
|
|
82
82
|
*
|
|
@@ -96,23 +96,23 @@ declare function obtain<T extends ServiceConstructor>(serviceClass: T): Instance
|
|
|
96
96
|
*/
|
|
97
97
|
declare function obtainRaw<T extends ServiceConstructor>(serviceClass: T): InstanceType<T>;
|
|
98
98
|
/**
|
|
99
|
-
* obtain a new Service Instance
|
|
99
|
+
* obtain a facade of a new Service Instance
|
|
100
100
|
*
|
|
101
101
|
* @export
|
|
102
102
|
* @template {ServiceConstructor} T
|
|
103
103
|
* @param {T} serviceClass
|
|
104
104
|
* @returns {InstanceType<T>}
|
|
105
105
|
*/
|
|
106
|
-
declare function
|
|
106
|
+
declare function obtainInstance<T extends ServiceConstructor>(serviceClass: T): InstanceType<T>;
|
|
107
107
|
/**
|
|
108
|
-
* obtain a
|
|
108
|
+
* obtain a new Service Instance
|
|
109
109
|
*
|
|
110
110
|
* @export
|
|
111
111
|
* @template {ServiceConstructor} T
|
|
112
112
|
* @param {T} serviceClass
|
|
113
113
|
* @returns {InstanceType<T>}
|
|
114
114
|
*/
|
|
115
|
-
declare function
|
|
115
|
+
declare function obtainRawInstance<T extends ServiceConstructor>(serviceClass: T): InstanceType<T>;
|
|
116
116
|
/**
|
|
117
117
|
* Expose a service to context
|
|
118
118
|
*
|
|
@@ -149,7 +149,27 @@ declare function Register(): <C extends ServiceConstructor>(constructor: C) => C
|
|
|
149
149
|
* @returns {ServiceMetadata}
|
|
150
150
|
*/
|
|
151
151
|
declare function getServiceMetadata(target: ServiceConstructor | object): ServiceMetadata;
|
|
152
|
-
|
|
153
|
-
|
|
152
|
+
/**
|
|
153
|
+
* Check if a service is present in registry
|
|
154
|
+
*
|
|
155
|
+
* @export
|
|
156
|
+
* @param {ServiceConstructor} serviceClass
|
|
157
|
+
* @returns {*}
|
|
158
|
+
*/
|
|
159
|
+
declare function hasService(serviceClass: ServiceConstructor): boolean;
|
|
160
|
+
/**
|
|
161
|
+
* unRegister (remove) a service from registry
|
|
162
|
+
*
|
|
163
|
+
* @export
|
|
164
|
+
* @param {ServiceConstructor} serviceClass
|
|
165
|
+
* @returns {*}
|
|
166
|
+
*/
|
|
167
|
+
declare function unRegister<T extends InstanceType<ServiceConstructor>>(serviceInstance: T): boolean;
|
|
168
|
+
/**
|
|
169
|
+
* clear service registry
|
|
170
|
+
*
|
|
171
|
+
* @export
|
|
172
|
+
*/
|
|
173
|
+
declare function clearRegistry(): void;
|
|
154
174
|
|
|
155
|
-
export {
|
|
175
|
+
export { type OnActivated, type OnBeforeMount, type OnBeforeUnmount, type OnBeforeUpdate, type OnDeactivated, type OnErrorCaptured, type OnMounted, type OnRenderTracked, type OnRenderTriggered, type OnScopeDispose, type OnServerPrefetch, type OnUnmounted, type OnUpdated, Register, clearRegistry, createFacadeObj, exposeToContext, generateRouterFacade, getServiceMetadata, hasService, iocraft, obtain, obtainFromContext, obtainInstance, obtainRaw, obtainRawInstance, unRegister };
|
package/dist/core.d.ts
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import { Router } from 'vue-router';
|
|
2
2
|
import { FunctionPlugin } from 'vue';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* CREATES A FACADE OBJECT
|
|
6
|
+
*
|
|
7
|
+
* @export
|
|
8
|
+
* @template {object} T
|
|
9
|
+
* @param {ServiceConstructor<T>} serviceClass
|
|
10
|
+
* @param {InstanceType<ServiceConstructor<T>>} serviceInstance
|
|
11
|
+
* @returns {{}}
|
|
12
|
+
*/
|
|
13
|
+
declare function createFacadeObj<T extends object>(serviceInstance: object): T;
|
|
14
|
+
declare function generateRouterFacade(router: Router): Record<string, any>;
|
|
15
|
+
|
|
4
16
|
type ServiceConstructor<T extends object = object> = new () => T;
|
|
5
17
|
|
|
6
18
|
type PluginOptions = {
|
|
@@ -65,18 +77,6 @@ interface OnScopeDispose {
|
|
|
65
77
|
onScopeDispose(): void;
|
|
66
78
|
}
|
|
67
79
|
|
|
68
|
-
/**
|
|
69
|
-
* CREATES A FACADE OBJECT
|
|
70
|
-
*
|
|
71
|
-
* @export
|
|
72
|
-
* @template {object} T
|
|
73
|
-
* @param {ServiceConstructor<T>} serviceClass
|
|
74
|
-
* @param {InstanceType<ServiceConstructor<T>>} serviceInstance
|
|
75
|
-
* @returns {{}}
|
|
76
|
-
*/
|
|
77
|
-
declare function createFacadeObj<T extends object>(serviceInstance: InstanceType<ServiceConstructor<T>>): {};
|
|
78
|
-
declare function generateRouterFacade(router: Router): Record<string, any>;
|
|
79
|
-
|
|
80
80
|
/**
|
|
81
81
|
* obtain Facade of a global singleton service From Root Registry
|
|
82
82
|
*
|
|
@@ -96,23 +96,23 @@ declare function obtain<T extends ServiceConstructor>(serviceClass: T): Instance
|
|
|
96
96
|
*/
|
|
97
97
|
declare function obtainRaw<T extends ServiceConstructor>(serviceClass: T): InstanceType<T>;
|
|
98
98
|
/**
|
|
99
|
-
* obtain a new Service Instance
|
|
99
|
+
* obtain a facade of a new Service Instance
|
|
100
100
|
*
|
|
101
101
|
* @export
|
|
102
102
|
* @template {ServiceConstructor} T
|
|
103
103
|
* @param {T} serviceClass
|
|
104
104
|
* @returns {InstanceType<T>}
|
|
105
105
|
*/
|
|
106
|
-
declare function
|
|
106
|
+
declare function obtainInstance<T extends ServiceConstructor>(serviceClass: T): InstanceType<T>;
|
|
107
107
|
/**
|
|
108
|
-
* obtain a
|
|
108
|
+
* obtain a new Service Instance
|
|
109
109
|
*
|
|
110
110
|
* @export
|
|
111
111
|
* @template {ServiceConstructor} T
|
|
112
112
|
* @param {T} serviceClass
|
|
113
113
|
* @returns {InstanceType<T>}
|
|
114
114
|
*/
|
|
115
|
-
declare function
|
|
115
|
+
declare function obtainRawInstance<T extends ServiceConstructor>(serviceClass: T): InstanceType<T>;
|
|
116
116
|
/**
|
|
117
117
|
* Expose a service to context
|
|
118
118
|
*
|
|
@@ -149,7 +149,27 @@ declare function Register(): <C extends ServiceConstructor>(constructor: C) => C
|
|
|
149
149
|
* @returns {ServiceMetadata}
|
|
150
150
|
*/
|
|
151
151
|
declare function getServiceMetadata(target: ServiceConstructor | object): ServiceMetadata;
|
|
152
|
-
|
|
153
|
-
|
|
152
|
+
/**
|
|
153
|
+
* Check if a service is present in registry
|
|
154
|
+
*
|
|
155
|
+
* @export
|
|
156
|
+
* @param {ServiceConstructor} serviceClass
|
|
157
|
+
* @returns {*}
|
|
158
|
+
*/
|
|
159
|
+
declare function hasService(serviceClass: ServiceConstructor): boolean;
|
|
160
|
+
/**
|
|
161
|
+
* unRegister (remove) a service from registry
|
|
162
|
+
*
|
|
163
|
+
* @export
|
|
164
|
+
* @param {ServiceConstructor} serviceClass
|
|
165
|
+
* @returns {*}
|
|
166
|
+
*/
|
|
167
|
+
declare function unRegister<T extends InstanceType<ServiceConstructor>>(serviceInstance: T): boolean;
|
|
168
|
+
/**
|
|
169
|
+
* clear service registry
|
|
170
|
+
*
|
|
171
|
+
* @export
|
|
172
|
+
*/
|
|
173
|
+
declare function clearRegistry(): void;
|
|
154
174
|
|
|
155
|
-
export {
|
|
175
|
+
export { type OnActivated, type OnBeforeMount, type OnBeforeUnmount, type OnBeforeUpdate, type OnDeactivated, type OnErrorCaptured, type OnMounted, type OnRenderTracked, type OnRenderTriggered, type OnScopeDispose, type OnServerPrefetch, type OnUnmounted, type OnUpdated, Register, clearRegistry, createFacadeObj, exposeToContext, generateRouterFacade, getServiceMetadata, hasService, iocraft, obtain, obtainFromContext, obtainInstance, obtainRaw, obtainRawInstance, unRegister };
|
package/dist/core.js
CHANGED
|
@@ -1,32 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
import {
|
|
3
|
-
HasService,
|
|
4
|
-
IsFacade,
|
|
5
3
|
Register,
|
|
4
|
+
clearRegistry,
|
|
6
5
|
createFacadeObj,
|
|
7
6
|
exposeToContext,
|
|
8
7
|
generateRouterFacade,
|
|
9
8
|
getServiceMetadata,
|
|
9
|
+
hasService,
|
|
10
10
|
iocraft,
|
|
11
11
|
obtain,
|
|
12
12
|
obtainFromContext,
|
|
13
13
|
obtainInstance,
|
|
14
14
|
obtainRaw,
|
|
15
|
-
obtainRawInstance
|
|
16
|
-
|
|
15
|
+
obtainRawInstance,
|
|
16
|
+
unRegister
|
|
17
|
+
} from "./chunk-OLY3RJCX.js";
|
|
17
18
|
export {
|
|
18
|
-
HasService,
|
|
19
|
-
IsFacade,
|
|
20
19
|
Register,
|
|
20
|
+
clearRegistry,
|
|
21
21
|
createFacadeObj,
|
|
22
22
|
exposeToContext,
|
|
23
23
|
generateRouterFacade,
|
|
24
24
|
getServiceMetadata,
|
|
25
|
+
hasService,
|
|
25
26
|
iocraft,
|
|
26
27
|
obtain,
|
|
27
28
|
obtainFromContext,
|
|
28
29
|
obtainInstance,
|
|
29
30
|
obtainRaw,
|
|
30
|
-
obtainRawInstance
|
|
31
|
+
obtainRawInstance,
|
|
32
|
+
unRegister
|
|
31
33
|
};
|
|
32
34
|
//# sourceMappingURL=core.js.map
|
package/dist/helpers.cjs
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _chunkNJJ6QKIIcjs = require('./chunk-NJJ6QKII.cjs');
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
exports.Nav =
|
|
9
|
+
exports.Nav = _chunkNJJ6QKIIcjs.Nav; exports.Store = _chunkNJJ6QKIIcjs.Store;
|
|
10
10
|
//# sourceMappingURL=helpers.cjs.map
|
package/dist/helpers.d.cts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Router, RouteLocationNormalizedGeneric } from 'vue-router';
|
|
2
|
+
import { ComputedRef, WatchStopHandle } from 'vue';
|
|
2
3
|
|
|
3
4
|
interface Nav extends Omit<Router, 'install' | 'options' | 'currentRoute'>, Pick<RouteLocationNormalizedGeneric, 'path' | 'name' | 'params' | 'query' | 'hash' | 'fullPath' | 'matched' | 'meta'> {
|
|
4
5
|
}
|
|
@@ -7,17 +8,15 @@ declare class Nav {
|
|
|
7
8
|
|
|
8
9
|
declare function Store<T extends Record<string, any>>(initialState: T): {
|
|
9
10
|
new (): {
|
|
10
|
-
state: T;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
readonly state: T;
|
|
12
|
+
get snapshot(): T;
|
|
13
|
+
update(changes: Partial<T>): void;
|
|
14
|
+
pick<K extends keyof T>(key: K): T[K];
|
|
15
|
+
compute<R>(fn: (state: T) => R): ComputedRef<R>;
|
|
16
|
+
observe<K extends keyof T>(source: K, callback: (newValue: T[K], oldValue: T[K]) => void): WatchStopHandle;
|
|
17
|
+
observe<R>(source: (state: T) => R, callback: (newValue: R, oldValue: R) => void): WatchStopHandle;
|
|
18
|
+
effect(fn: (state: T) => void): WatchStopHandle;
|
|
18
19
|
reset(): void;
|
|
19
|
-
onInit(): void;
|
|
20
|
-
onDispose(): void;
|
|
21
20
|
};
|
|
22
21
|
};
|
|
23
22
|
|
package/dist/helpers.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Router, RouteLocationNormalizedGeneric } from 'vue-router';
|
|
2
|
+
import { ComputedRef, WatchStopHandle } from 'vue';
|
|
2
3
|
|
|
3
4
|
interface Nav extends Omit<Router, 'install' | 'options' | 'currentRoute'>, Pick<RouteLocationNormalizedGeneric, 'path' | 'name' | 'params' | 'query' | 'hash' | 'fullPath' | 'matched' | 'meta'> {
|
|
4
5
|
}
|
|
@@ -7,17 +8,15 @@ declare class Nav {
|
|
|
7
8
|
|
|
8
9
|
declare function Store<T extends Record<string, any>>(initialState: T): {
|
|
9
10
|
new (): {
|
|
10
|
-
state: T;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
11
|
+
readonly state: T;
|
|
12
|
+
get snapshot(): T;
|
|
13
|
+
update(changes: Partial<T>): void;
|
|
14
|
+
pick<K extends keyof T>(key: K): T[K];
|
|
15
|
+
compute<R>(fn: (state: T) => R): ComputedRef<R>;
|
|
16
|
+
observe<K extends keyof T>(source: K, callback: (newValue: T[K], oldValue: T[K]) => void): WatchStopHandle;
|
|
17
|
+
observe<R>(source: (state: T) => R, callback: (newValue: R, oldValue: R) => void): WatchStopHandle;
|
|
18
|
+
effect(fn: (state: T) => void): WatchStopHandle;
|
|
18
19
|
reset(): void;
|
|
19
|
-
onInit(): void;
|
|
20
|
-
onDispose(): void;
|
|
21
20
|
};
|
|
22
21
|
};
|
|
23
22
|
|
package/dist/helpers.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iocraft",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.5",
|
|
4
4
|
"description": "A lightweight IOC container for Vue 3 using the Composition API.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"vue",
|
|
@@ -48,7 +48,6 @@
|
|
|
48
48
|
"vue-router": "^4.0.0"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
|
-
"tinybench": "^6.0.0",
|
|
52
51
|
"tsup": "^8.5.1",
|
|
53
52
|
"typescript": "~5.9.3",
|
|
54
53
|
"vitest": "^4.0.16",
|
|
@@ -66,6 +65,7 @@
|
|
|
66
65
|
"build": "tsup",
|
|
67
66
|
"dev": "tsup --watch",
|
|
68
67
|
"typecheck": "tsc --noEmit",
|
|
69
|
-
"test": "vitest
|
|
68
|
+
"test": "vitest",
|
|
69
|
+
"bench": "vitest bench"
|
|
70
70
|
}
|
|
71
71
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/iocraft/iocraft/packages/iocraft/dist/chunk-FPSHR5LZ.cjs","../src/core/facade.ts","../src/core/injectors.ts","../src/core/internals.ts","../src/core/utils.ts","../src/core/plugin.ts","../src/core/register.ts","../src/helpers/Nav.service.ts","../src/helpers/Store.service.ts"],"names":[],"mappings":"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","file":"/home/runner/work/iocraft/iocraft/packages/iocraft/dist/chunk-FPSHR5LZ.cjs","sourcesContent":[null,"import type { Router } from 'vue-router';\nimport 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: InstanceType<ServiceConstructor<T>>) {\n const targetObj = {};\n\n addInstanceProperties(serviceInstance, targetObj);\n addPrototypeProperties(serviceInstance, targetObj);\n return targetObj;\n}\n\nexport function generateRouterFacade(router: Router): Record<string, any> {\n return {\n get path() {\n return router.currentRoute.value.path;\n },\n get name() {\n return router.currentRoute.value.name;\n },\n get params() {\n return router.currentRoute.value.params;\n },\n get query() {\n return router.currentRoute.value.query;\n },\n get hash() {\n return router.currentRoute.value.hash;\n },\n get fullPath() {\n return router.currentRoute.value.fullPath;\n },\n get matched() {\n return router.currentRoute.value.matched;\n },\n get meta() {\n return router.currentRoute.value.meta;\n },\n push: router.push.bind(router),\n replace: router.replace.bind(router),\n go: router.go.bind(router),\n back: router.back.bind(router),\n forward: router.forward.bind(router),\n resolve: router.resolve.bind(router),\n getRoutes: router.getRoutes.bind(router),\n hasRoute: router.hasRoute.bind(router),\n\n // Router guards\n beforeEach: router.beforeEach.bind(router),\n beforeResolve: router.beforeResolve.bind(router),\n afterEach: router.afterEach.bind(router),\n onError: router.onError.bind(router),\n\n // Dynamic routing\n addRoute: router.addRoute.bind(router),\n removeRoute: router.removeRoute.bind(router),\n clearRoutes: router.clearRoutes.bind(router),\n\n // State\n isReady: router.isReady.bind(router),\n get currentRoute() {\n return router.currentRoute;\n },\n };\n}\n","import { getCurrentInstance, inject, provide } from 'vue';\nimport { createFacadeObj } from './facade';\nimport { bindLifecycleHooks, RootRegistry } from './internals';\nimport type { ServiceConstructor } from './types';\nimport { getServiceMetadata } 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 * @returns {InstanceType<T>}\n */\nexport function obtain<T extends ServiceConstructor>(serviceClass: T) {\n const serviceMeta = getServiceMetadata(serviceClass);\n\n if (!RootRegistry.has(serviceMeta.token)) {\n RootRegistry.set(serviceMeta.token, new serviceClass());\n }\n\n const instance = RootRegistry.get(serviceMeta.token)!;\n return createFacadeObj(instance) as InstanceType<T>;\n}\n\n/**\n * obtain a global singleton service From Root Registry\n *\n * @export\n * @template {ServiceConstructor} T\n * @param {T} serviceClass\n * @returns {InstanceType<T>}\n */\nexport function obtainRaw<T extends ServiceConstructor>(serviceClass: T) {\n const serviceMeta = getServiceMetadata(serviceClass);\n\n if (!RootRegistry.has(serviceMeta.token)) {\n RootRegistry.set(serviceMeta.token, new serviceClass());\n }\n\n return RootRegistry.get(serviceMeta.token) as InstanceType<T>;\n}\n\n/**\n * obtain a new Service Instance\n *\n * @export\n * @template {ServiceConstructor} T\n * @param {T} serviceClass\n * @returns {InstanceType<T>}\n */\nexport function obtainRawInstance<T extends ServiceConstructor>(serviceClass: T) {\n const componentInstance = getCurrentInstance();\n let instance = new serviceClass();\n if (componentInstance) {\n bindLifecycleHooks(instance);\n }\n\n return instance as InstanceType<T>;\n}\n\n/**\n * obtain a facade of a new Service Instance\n *\n * @export\n * @template {ServiceConstructor} T\n * @param {T} serviceClass\n * @returns {InstanceType<T>}\n */\nexport function obtainInstance<T extends ServiceConstructor>(serviceClass: T) {\n const componentInstance = getCurrentInstance();\n let instance = new serviceClass();\n\n if (componentInstance) {\n bindLifecycleHooks(instance);\n }\n\n return createFacadeObj(instance) as InstanceType<T>;\n}\n\n/**\n * Expose a service to context\n *\n * @export\n * @template {ServiceConstructor} T\n * @param {InstanceType<T>} serviceInstance\n */\nexport function exposeToContext<T extends ServiceConstructor>(serviceInstance: InstanceType<T>) {\n const serviceMeta = getServiceMetadata(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 * @returns {*}\n */\nexport function obtainFromContext<T extends ServiceConstructor>(serviceClass: T) {\n const serviceMeta = getServiceMetadata(serviceClass);\n return inject<InstanceType<T>>(serviceMeta.token);\n}\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>();\n\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 { RootRegistry, SERVICE_METADATA } from './internals';\nimport type { ServiceConstructor, ServiceMetadata } from './types';\n\n/**\n * get service metadata\n *\n * @export\n * @param {(ServiceConstructor | object)} target\n * @returns {ServiceMetadata}\n */\nexport function getServiceMetadata(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\nexport function HasService(serviceClass: ServiceConstructor) {\n const meta = getServiceMetadata(serviceClass);\n return RootRegistry.has(meta.token);\n}\n\nexport function IsFacade(_serviceInstance: object) {}\n\n","import { type FunctionPlugin } from 'vue';\nimport { Nav } from '../helpers';\nimport { generateRouterFacade } from './facade';\nimport { RootRegistry } from './internals';\nimport type { PluginOptions } from './types';\nimport { getServiceMetadata } from './utils';\n\nexport const iocraft: FunctionPlugin<[Partial<PluginOptions>?]> = (_app, options?: Partial<PluginOptions>) => {\n if (options?.router) {\n RootRegistry.set(getServiceMetadata(Nav).token, generateRouterFacade(options.router));\n }\n\n // Eagerly create Service instances\n if (options?.eagerLoad) {\n options.eagerLoad.forEach(service => {\n const serviceMeta = getServiceMetadata(service);\n\n if (!RootRegistry.has(serviceMeta.token)) {\n RootRegistry.set(serviceMeta.token, new service());\n }\n });\n }\n};\n","import { SERVICE_METADATA } from './internals';\nimport type { ServiceConstructor, ServiceMetadata } from './types';\n\n/**\n * Registers A Class as Service\n *\n * @export\n * @returns {<C extends ServiceConstructor>(constructor: C) => C}\n */\nexport function Register() {\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","import type { RouteLocationNormalizedGeneric, Router } from 'vue-router';\nimport { Register } from '../core';\n\nexport interface Nav\n extends\n Omit<Router, 'install' | 'options' | 'currentRoute'>,\n Pick<\n RouteLocationNormalizedGeneric,\n 'path' | 'name' | 'params' | 'query' | 'hash' | 'fullPath' | 'matched' | 'meta'\n > {}\n\n@Register()\nexport class Nav {}\n","export function Store<T extends Record<string, any>>(initialState: T) {\n return class {\n state = initialState;\n\n getState() {}\n\n setState(_partialState: Partial<T>) {}\n\n select<K extends keyof T>(_key: K) {}\n\n selectAll(){}\n\n computed() {}\n\n watch() {}\n\n watchEffect() {}\n\n reset(): void {}\n\n onInit() {}\n\n onDispose() {}\n };\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/facade.ts","../src/core/injectors.ts","../src/core/internals.ts","../src/core/utils.ts","../src/core/plugin.ts","../src/core/register.ts","../src/helpers/Nav.service.ts","../src/helpers/Store.service.ts"],"sourcesContent":["import type { Router } from 'vue-router';\nimport 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: InstanceType<ServiceConstructor<T>>) {\n const targetObj = {};\n\n addInstanceProperties(serviceInstance, targetObj);\n addPrototypeProperties(serviceInstance, targetObj);\n return targetObj;\n}\n\nexport function generateRouterFacade(router: Router): Record<string, any> {\n return {\n get path() {\n return router.currentRoute.value.path;\n },\n get name() {\n return router.currentRoute.value.name;\n },\n get params() {\n return router.currentRoute.value.params;\n },\n get query() {\n return router.currentRoute.value.query;\n },\n get hash() {\n return router.currentRoute.value.hash;\n },\n get fullPath() {\n return router.currentRoute.value.fullPath;\n },\n get matched() {\n return router.currentRoute.value.matched;\n },\n get meta() {\n return router.currentRoute.value.meta;\n },\n push: router.push.bind(router),\n replace: router.replace.bind(router),\n go: router.go.bind(router),\n back: router.back.bind(router),\n forward: router.forward.bind(router),\n resolve: router.resolve.bind(router),\n getRoutes: router.getRoutes.bind(router),\n hasRoute: router.hasRoute.bind(router),\n\n // Router guards\n beforeEach: router.beforeEach.bind(router),\n beforeResolve: router.beforeResolve.bind(router),\n afterEach: router.afterEach.bind(router),\n onError: router.onError.bind(router),\n\n // Dynamic routing\n addRoute: router.addRoute.bind(router),\n removeRoute: router.removeRoute.bind(router),\n clearRoutes: router.clearRoutes.bind(router),\n\n // State\n isReady: router.isReady.bind(router),\n get currentRoute() {\n return router.currentRoute;\n },\n };\n}\n","import { getCurrentInstance, inject, provide } from 'vue';\nimport { createFacadeObj } from './facade';\nimport { bindLifecycleHooks, RootRegistry } from './internals';\nimport type { ServiceConstructor } from './types';\nimport { getServiceMetadata } 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 * @returns {InstanceType<T>}\n */\nexport function obtain<T extends ServiceConstructor>(serviceClass: T) {\n const serviceMeta = getServiceMetadata(serviceClass);\n\n if (!RootRegistry.has(serviceMeta.token)) {\n RootRegistry.set(serviceMeta.token, new serviceClass());\n }\n\n const instance = RootRegistry.get(serviceMeta.token)!;\n return createFacadeObj(instance) as InstanceType<T>;\n}\n\n/**\n * obtain a global singleton service From Root Registry\n *\n * @export\n * @template {ServiceConstructor} T\n * @param {T} serviceClass\n * @returns {InstanceType<T>}\n */\nexport function obtainRaw<T extends ServiceConstructor>(serviceClass: T) {\n const serviceMeta = getServiceMetadata(serviceClass);\n\n if (!RootRegistry.has(serviceMeta.token)) {\n RootRegistry.set(serviceMeta.token, new serviceClass());\n }\n\n return RootRegistry.get(serviceMeta.token) as InstanceType<T>;\n}\n\n/**\n * obtain a new Service Instance\n *\n * @export\n * @template {ServiceConstructor} T\n * @param {T} serviceClass\n * @returns {InstanceType<T>}\n */\nexport function obtainRawInstance<T extends ServiceConstructor>(serviceClass: T) {\n const componentInstance = getCurrentInstance();\n let instance = new serviceClass();\n if (componentInstance) {\n bindLifecycleHooks(instance);\n }\n\n return instance as InstanceType<T>;\n}\n\n/**\n * obtain a facade of a new Service Instance\n *\n * @export\n * @template {ServiceConstructor} T\n * @param {T} serviceClass\n * @returns {InstanceType<T>}\n */\nexport function obtainInstance<T extends ServiceConstructor>(serviceClass: T) {\n const componentInstance = getCurrentInstance();\n let instance = new serviceClass();\n\n if (componentInstance) {\n bindLifecycleHooks(instance);\n }\n\n return createFacadeObj(instance) as InstanceType<T>;\n}\n\n/**\n * Expose a service to context\n *\n * @export\n * @template {ServiceConstructor} T\n * @param {InstanceType<T>} serviceInstance\n */\nexport function exposeToContext<T extends ServiceConstructor>(serviceInstance: InstanceType<T>) {\n const serviceMeta = getServiceMetadata(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 * @returns {*}\n */\nexport function obtainFromContext<T extends ServiceConstructor>(serviceClass: T) {\n const serviceMeta = getServiceMetadata(serviceClass);\n return inject<InstanceType<T>>(serviceMeta.token);\n}\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>();\n\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 { RootRegistry, SERVICE_METADATA } from './internals';\nimport type { ServiceConstructor, ServiceMetadata } from './types';\n\n/**\n * get service metadata\n *\n * @export\n * @param {(ServiceConstructor | object)} target\n * @returns {ServiceMetadata}\n */\nexport function getServiceMetadata(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\nexport function HasService(serviceClass: ServiceConstructor) {\n const meta = getServiceMetadata(serviceClass);\n return RootRegistry.has(meta.token);\n}\n\nexport function IsFacade(_serviceInstance: object) {}\n\n","import { type FunctionPlugin } from 'vue';\nimport { Nav } from '../helpers';\nimport { generateRouterFacade } from './facade';\nimport { RootRegistry } from './internals';\nimport type { PluginOptions } from './types';\nimport { getServiceMetadata } from './utils';\n\nexport const iocraft: FunctionPlugin<[Partial<PluginOptions>?]> = (_app, options?: Partial<PluginOptions>) => {\n if (options?.router) {\n RootRegistry.set(getServiceMetadata(Nav).token, generateRouterFacade(options.router));\n }\n\n // Eagerly create Service instances\n if (options?.eagerLoad) {\n options.eagerLoad.forEach(service => {\n const serviceMeta = getServiceMetadata(service);\n\n if (!RootRegistry.has(serviceMeta.token)) {\n RootRegistry.set(serviceMeta.token, new service());\n }\n });\n }\n};\n","import { SERVICE_METADATA } from './internals';\nimport type { ServiceConstructor, ServiceMetadata } from './types';\n\n/**\n * Registers A Class as Service\n *\n * @export\n * @returns {<C extends ServiceConstructor>(constructor: C) => C}\n */\nexport function Register() {\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","import type { RouteLocationNormalizedGeneric, Router } from 'vue-router';\nimport { Register } from '../core';\n\nexport interface Nav\n extends\n Omit<Router, 'install' | 'options' | 'currentRoute'>,\n Pick<\n RouteLocationNormalizedGeneric,\n 'path' | 'name' | 'params' | 'query' | 'hash' | 'fullPath' | 'matched' | 'meta'\n > {}\n\n@Register()\nexport class Nav {}\n","export function Store<T extends Record<string, any>>(initialState: T) {\n return class {\n state = initialState;\n\n getState() {}\n\n setState(_partialState: Partial<T>) {}\n\n select<K extends keyof T>(_key: K) {}\n\n selectAll(){}\n\n computed() {}\n\n watch() {}\n\n watchEffect() {}\n\n reset(): void {}\n\n onInit() {}\n\n onDispose() {}\n };\n}\n"],"mappings":"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","names":[]}
|