@zudojs/runtime 0.0.1
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/README.md +37 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/dependencyGraph/dependencyGraph.core.d.ts +18 -0
- package/dist/dependencyGraph/dependencyGraph.core.d.ts.map +1 -0
- package/dist/dependencyGraph/dependencyGraph.core.js +124 -0
- package/dist/dependencyGraph/dependencyGraph.core.js.map +1 -0
- package/dist/dependencyGraph/dependencyGraph.type.d.ts +43 -0
- package/dist/dependencyGraph/dependencyGraph.type.d.ts.map +1 -0
- package/dist/dependencyGraph/dependencyGraph.type.js +2 -0
- package/dist/dependencyGraph/dependencyGraph.type.js.map +1 -0
- package/dist/dependencyGraph/index.d.ts +6 -0
- package/dist/dependencyGraph/index.d.ts.map +1 -0
- package/dist/dependencyGraph/index.js +5 -0
- package/dist/dependencyGraph/index.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/lifecycle/index.d.ts +6 -0
- package/dist/lifecycle/index.d.ts.map +1 -0
- package/dist/lifecycle/index.js +5 -0
- package/dist/lifecycle/index.js.map +1 -0
- package/dist/lifecycle/lifecycle.core.d.ts +47 -0
- package/dist/lifecycle/lifecycle.core.d.ts.map +1 -0
- package/dist/lifecycle/lifecycle.core.js +267 -0
- package/dist/lifecycle/lifecycle.core.js.map +1 -0
- package/dist/lifecycle/lifecycle.type.d.ts +51 -0
- package/dist/lifecycle/lifecycle.type.d.ts.map +1 -0
- package/dist/lifecycle/lifecycle.type.js +2 -0
- package/dist/lifecycle/lifecycle.type.js.map +1 -0
- package/dist/readiness/index.d.ts +6 -0
- package/dist/readiness/index.d.ts.map +1 -0
- package/dist/readiness/index.js +5 -0
- package/dist/readiness/index.js.map +1 -0
- package/dist/readiness/readiness.core.d.ts +45 -0
- package/dist/readiness/readiness.core.d.ts.map +1 -0
- package/dist/readiness/readiness.core.js +115 -0
- package/dist/readiness/readiness.core.js.map +1 -0
- package/dist/readiness/readiness.type.d.ts +40 -0
- package/dist/readiness/readiness.type.d.ts.map +1 -0
- package/dist/readiness/readiness.type.js +2 -0
- package/dist/readiness/readiness.type.js.map +1 -0
- package/dist/registry/index.d.ts +5 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +5 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/registry.core.d.ts +74 -0
- package/dist/registry/registry.core.d.ts.map +1 -0
- package/dist/registry/registry.core.js +126 -0
- package/dist/registry/registry.core.js.map +1 -0
- package/dist/runtime/runtime.core.d.ts +97 -0
- package/dist/runtime/runtime.core.d.ts.map +1 -0
- package/dist/runtime/runtime.core.js +253 -0
- package/dist/runtime/runtime.core.js.map +1 -0
- package/dist/runtimeContext/index.d.ts +7 -0
- package/dist/runtimeContext/index.d.ts.map +1 -0
- package/dist/runtimeContext/index.js +6 -0
- package/dist/runtimeContext/index.js.map +1 -0
- package/dist/runtimeContext/runtimeContext.core.d.ts +11 -0
- package/dist/runtimeContext/runtimeContext.core.d.ts.map +1 -0
- package/dist/runtimeContext/runtimeContext.core.js +41 -0
- package/dist/runtimeContext/runtimeContext.core.js.map +1 -0
- package/dist/runtimeContext/runtimeContext.factory.d.ts +14 -0
- package/dist/runtimeContext/runtimeContext.factory.d.ts.map +1 -0
- package/dist/runtimeContext/runtimeContext.factory.js +20 -0
- package/dist/runtimeContext/runtimeContext.factory.js.map +1 -0
- package/dist/runtimeContext/runtimeContext.type.d.ts +59 -0
- package/dist/runtimeContext/runtimeContext.type.d.ts.map +1 -0
- package/dist/runtimeContext/runtimeContext.type.js +2 -0
- package/dist/runtimeContext/runtimeContext.type.js.map +1 -0
- package/dist/runtimeError/index.d.ts +5 -0
- package/dist/runtimeError/index.d.ts.map +1 -0
- package/dist/runtimeError/index.js +5 -0
- package/dist/runtimeError/index.js.map +1 -0
- package/dist/runtimeError/runtimeError.base.d.ts +80 -0
- package/dist/runtimeError/runtimeError.base.d.ts.map +1 -0
- package/dist/runtimeError/runtimeError.base.js +149 -0
- package/dist/runtimeError/runtimeError.base.js.map +1 -0
- package/dist/runtimeEvents/index.d.ts +6 -0
- package/dist/runtimeEvents/index.d.ts.map +1 -0
- package/dist/runtimeEvents/index.js +5 -0
- package/dist/runtimeEvents/index.js.map +1 -0
- package/dist/runtimeEvents/runtimeEvents.core.d.ts +28 -0
- package/dist/runtimeEvents/runtimeEvents.core.d.ts.map +1 -0
- package/dist/runtimeEvents/runtimeEvents.core.js +63 -0
- package/dist/runtimeEvents/runtimeEvents.core.js.map +1 -0
- package/dist/runtimeEvents/runtimeEvents.type.d.ts +75 -0
- package/dist/runtimeEvents/runtimeEvents.type.d.ts.map +1 -0
- package/dist/runtimeEvents/runtimeEvents.type.js +2 -0
- package/dist/runtimeEvents/runtimeEvents.type.js.map +1 -0
- package/dist/runtimeOptions/index.d.ts +7 -0
- package/dist/runtimeOptions/index.d.ts.map +1 -0
- package/dist/runtimeOptions/index.js +6 -0
- package/dist/runtimeOptions/index.js.map +1 -0
- package/dist/runtimeOptions/runtimeOptions.core.d.ts +14 -0
- package/dist/runtimeOptions/runtimeOptions.core.d.ts.map +1 -0
- package/dist/runtimeOptions/runtimeOptions.core.js +37 -0
- package/dist/runtimeOptions/runtimeOptions.core.js.map +1 -0
- package/dist/runtimeOptions/runtimeOptions.type.d.ts +94 -0
- package/dist/runtimeOptions/runtimeOptions.type.d.ts.map +1 -0
- package/dist/runtimeOptions/runtimeOptions.type.js +14 -0
- package/dist/runtimeOptions/runtimeOptions.type.js.map +1 -0
- package/dist/runtimeState/index.d.ts +6 -0
- package/dist/runtimeState/index.d.ts.map +1 -0
- package/dist/runtimeState/index.js +5 -0
- package/dist/runtimeState/index.js.map +1 -0
- package/dist/runtimeState/runtimeState.core.d.ts +50 -0
- package/dist/runtimeState/runtimeState.core.d.ts.map +1 -0
- package/dist/runtimeState/runtimeState.core.js +88 -0
- package/dist/runtimeState/runtimeState.core.js.map +1 -0
- package/dist/runtimeState/runtimeState.type.d.ts +71 -0
- package/dist/runtimeState/runtimeState.type.d.ts.map +1 -0
- package/dist/runtimeState/runtimeState.type.js +2 -0
- package/dist/runtimeState/runtimeState.type.js.map +1 -0
- package/dist/shutdown/index.d.ts +5 -0
- package/dist/shutdown/index.d.ts.map +1 -0
- package/dist/shutdown/index.js +5 -0
- package/dist/shutdown/index.js.map +1 -0
- package/dist/shutdown/shutdown.core.d.ts +8 -0
- package/dist/shutdown/shutdown.core.d.ts.map +1 -0
- package/dist/shutdown/shutdown.core.js +87 -0
- package/dist/shutdown/shutdown.core.js.map +1 -0
- package/dist/signalHandler/index.d.ts +5 -0
- package/dist/signalHandler/index.d.ts.map +1 -0
- package/dist/signalHandler/index.js +5 -0
- package/dist/signalHandler/index.js.map +1 -0
- package/dist/signalHandler/signalHandler.core.d.ts +44 -0
- package/dist/signalHandler/signalHandler.core.d.ts.map +1 -0
- package/dist/signalHandler/signalHandler.core.js +90 -0
- package/dist/signalHandler/signalHandler.core.js.map +1 -0
- package/dist/startup/index.d.ts +5 -0
- package/dist/startup/index.d.ts.map +1 -0
- package/dist/startup/index.js +5 -0
- package/dist/startup/index.js.map +1 -0
- package/dist/startup/startup.core.d.ts +12 -0
- package/dist/startup/startup.core.d.ts.map +1 -0
- package/dist/startup/startup.core.js +91 -0
- package/dist/startup/startup.core.js.map +1 -0
- package/dist/testRuntime/index.d.ts +5 -0
- package/dist/testRuntime/index.d.ts.map +1 -0
- package/dist/testRuntime/index.js +5 -0
- package/dist/testRuntime/index.js.map +1 -0
- package/dist/testRuntime/testRuntime.core.d.ts +34 -0
- package/dist/testRuntime/testRuntime.core.d.ts.map +1 -0
- package/dist/testRuntime/testRuntime.core.js +81 -0
- package/dist/testRuntime/testRuntime.core.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/runtime — Test Runtime
|
|
3
|
+
*
|
|
4
|
+
* Provides a lightweight runtime for testing purposes with
|
|
5
|
+
* mock infrastructure and easy lifecycle management.
|
|
6
|
+
*/
|
|
7
|
+
import type { Module } from "@zudojs/core";
|
|
8
|
+
import { DefaultRuntime } from "../runtime/runtime.core.js";
|
|
9
|
+
import type { RuntimeOptions } from "../runtimeOptions/runtimeOptions.type.js";
|
|
10
|
+
/**
|
|
11
|
+
* Creates a test runtime with mock infrastructure.
|
|
12
|
+
*
|
|
13
|
+
* @param modules - Optional modules to register.
|
|
14
|
+
* @param options - Optional runtime options overrides.
|
|
15
|
+
* @returns A runtime instance ready for testing.
|
|
16
|
+
*/
|
|
17
|
+
export declare function createTestRuntime(modules?: Module[], options?: Partial<RuntimeOptions>): DefaultRuntime;
|
|
18
|
+
/**
|
|
19
|
+
* Creates a mock module for testing.
|
|
20
|
+
*
|
|
21
|
+
* @param id - Module identifier.
|
|
22
|
+
* @param dependencies - Module dependencies.
|
|
23
|
+
* @returns A mock module with vi.fn() hooks.
|
|
24
|
+
*/
|
|
25
|
+
export declare function createMockModule(id: string, dependencies?: string[]): Module;
|
|
26
|
+
/**
|
|
27
|
+
* Starts a test runtime, runs a callback, and stops it.
|
|
28
|
+
*
|
|
29
|
+
* @param fn - Async function to run with the started runtime.
|
|
30
|
+
* @param modules - Optional modules to register.
|
|
31
|
+
* @param options - Optional runtime options.
|
|
32
|
+
*/
|
|
33
|
+
export declare function withTestRuntime<T>(fn: (runtime: DefaultRuntime) => Promise<T>, modules?: Module[], options?: Partial<RuntimeOptions>): Promise<T>;
|
|
34
|
+
//# sourceMappingURL=testRuntime.core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testRuntime.core.d.ts","sourceRoot":"","sources":["../../src/testRuntime/testRuntime.core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAE/E;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,MAAM,EAAO,EACtB,OAAO,GAAE,OAAO,CAAC,cAAc,CAAM,GACpC,cAAc,CA8BhB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,MAAM,EACV,YAAY,GAAE,MAAM,EAAO,GAC1B,MAAM,CAWR;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,CAAC,EACrC,EAAE,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,EAC3C,OAAO,GAAE,MAAM,EAAO,EACtB,OAAO,GAAE,OAAO,CAAC,cAAc,CAAM,GACpC,OAAO,CAAC,CAAC,CAAC,CAQZ"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zudojs/runtime — Test Runtime
|
|
3
|
+
*
|
|
4
|
+
* Provides a lightweight runtime for testing purposes with
|
|
5
|
+
* mock infrastructure and easy lifecycle management.
|
|
6
|
+
*/
|
|
7
|
+
import { createLogger } from "@zudojs/logger";
|
|
8
|
+
import { createContainer } from "@zudojs/container";
|
|
9
|
+
import { createEventBus } from "@zudojs/events";
|
|
10
|
+
import { DefaultRuntime } from "../runtime/runtime.core.js";
|
|
11
|
+
/**
|
|
12
|
+
* Creates a test runtime with mock infrastructure.
|
|
13
|
+
*
|
|
14
|
+
* @param modules - Optional modules to register.
|
|
15
|
+
* @param options - Optional runtime options overrides.
|
|
16
|
+
* @returns A runtime instance ready for testing.
|
|
17
|
+
*/
|
|
18
|
+
export function createTestRuntime(modules = [], options = {}) {
|
|
19
|
+
const logger = createLogger({ name: "test-runtime" });
|
|
20
|
+
const container = createContainer();
|
|
21
|
+
const eventBus = createEventBus();
|
|
22
|
+
const moduleMap = new Map();
|
|
23
|
+
for (const module of modules) {
|
|
24
|
+
moduleMap.set(module.id, module);
|
|
25
|
+
}
|
|
26
|
+
const dependencies = {
|
|
27
|
+
modules: moduleMap,
|
|
28
|
+
logger,
|
|
29
|
+
container,
|
|
30
|
+
eventBus,
|
|
31
|
+
};
|
|
32
|
+
const runtimeOptions = {
|
|
33
|
+
environment: "test",
|
|
34
|
+
applicationName: "test-app",
|
|
35
|
+
applicationVersion: "0.0.0-test",
|
|
36
|
+
handleSignals: false,
|
|
37
|
+
handleFatalErrors: false,
|
|
38
|
+
shutdownTimeout: 5000,
|
|
39
|
+
startupTimeout: 10000,
|
|
40
|
+
emitEvents: false,
|
|
41
|
+
...options,
|
|
42
|
+
};
|
|
43
|
+
return new DefaultRuntime(dependencies, runtimeOptions);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Creates a mock module for testing.
|
|
47
|
+
*
|
|
48
|
+
* @param id - Module identifier.
|
|
49
|
+
* @param dependencies - Module dependencies.
|
|
50
|
+
* @returns A mock module with vi.fn() hooks.
|
|
51
|
+
*/
|
|
52
|
+
export function createMockModule(id, dependencies = []) {
|
|
53
|
+
const { vi } = require("vitest");
|
|
54
|
+
return {
|
|
55
|
+
id,
|
|
56
|
+
name: `Module ${id}`,
|
|
57
|
+
dependencies,
|
|
58
|
+
onInitialize: vi.fn().mockResolvedValue(undefined),
|
|
59
|
+
onReady: vi.fn().mockResolvedValue(undefined),
|
|
60
|
+
onShutdown: vi.fn().mockResolvedValue(undefined),
|
|
61
|
+
onDestroy: vi.fn().mockResolvedValue(undefined),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Starts a test runtime, runs a callback, and stops it.
|
|
66
|
+
*
|
|
67
|
+
* @param fn - Async function to run with the started runtime.
|
|
68
|
+
* @param modules - Optional modules to register.
|
|
69
|
+
* @param options - Optional runtime options.
|
|
70
|
+
*/
|
|
71
|
+
export async function withTestRuntime(fn, modules = [], options = {}) {
|
|
72
|
+
const runtime = createTestRuntime(modules, options);
|
|
73
|
+
await runtime.start();
|
|
74
|
+
try {
|
|
75
|
+
return await fn(runtime);
|
|
76
|
+
}
|
|
77
|
+
finally {
|
|
78
|
+
await runtime.stop();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=testRuntime.core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testRuntime.core.js","sourceRoot":"","sources":["../../src/testRuntime/testRuntime.core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAI5D;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAO,GAAa,EAAE,EACtB,OAAO,GAA4B,EAAE;IAErC,MAAM,MAAM,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;IAElC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,YAAY,GAAwB;QACxC,OAAO,EAAE,SAAS;QAClB,MAAM;QACN,SAAS;QACT,QAAQ;KACT,CAAC;IAEF,MAAM,cAAc,GAAmB;QACrC,WAAW,EAAE,MAAM;QACnB,eAAe,EAAE,UAAU;QAC3B,kBAAkB,EAAE,YAAY;QAChC,aAAa,EAAE,KAAK;QACpB,iBAAiB,EAAE,KAAK;QACxB,eAAe,EAAE,IAAI;QACrB,cAAc,EAAE,KAAK;QACrB,UAAU,EAAE,KAAK;QACjB,GAAG,OAAO;KACX,CAAC;IAEF,OAAO,IAAI,cAAc,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,EAAU,EACV,YAAY,GAAa,EAAE;IAE3B,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,OAAO;QACL,EAAE;QACF,IAAI,EAAE,UAAU,EAAE,EAAE;QACpB,YAAY;QACZ,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QAClD,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QAC7C,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QAChD,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;KAChD,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,EAA2C,EAC3C,OAAO,GAAa,EAAE,EACtB,OAAO,GAA4B,EAAE;IAErC,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;AACH,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@zudojs/runtime",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Application lifecycle orchestrator with dependency ordering, rollback, signals, and readiness checks.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./types": {
|
|
14
|
+
"types": "./dist/types/index.d.ts",
|
|
15
|
+
"import": "./dist/types/index.js"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist"
|
|
20
|
+
],
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tsc -p tsconfig.json",
|
|
23
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
24
|
+
"test": "vitest run",
|
|
25
|
+
"test:watch": "vitest",
|
|
26
|
+
"clean": "tsc -p tsconfig.json --clean"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@types/node": "^26.4.1",
|
|
30
|
+
"typescript": "^7.0.2",
|
|
31
|
+
"vitest": "^4.1.11"
|
|
32
|
+
},
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@zudojs/errors": "workspace:*",
|
|
35
|
+
"@zudojs/constants": "workspace:*",
|
|
36
|
+
"@zudojs/container": "workspace:*",
|
|
37
|
+
"@zudojs/config": "workspace:*",
|
|
38
|
+
"@zudojs/logger": "workspace:*",
|
|
39
|
+
"@zudojs/events": "workspace:*",
|
|
40
|
+
"@zudojs/core": "workspace:*"
|
|
41
|
+
},
|
|
42
|
+
"license": "MIT",
|
|
43
|
+
"publishConfig": {
|
|
44
|
+
"access": "public"
|
|
45
|
+
},
|
|
46
|
+
"engines": {
|
|
47
|
+
"node": ">=24.0.0"
|
|
48
|
+
},
|
|
49
|
+
"module": "./dist/index.js",
|
|
50
|
+
"keywords": [
|
|
51
|
+
"zudojs",
|
|
52
|
+
"runtime",
|
|
53
|
+
"orchestrator",
|
|
54
|
+
"services"
|
|
55
|
+
],
|
|
56
|
+
"homepage": "https://github.com/oyinlola-tech/zudo#readme",
|
|
57
|
+
"repository": {
|
|
58
|
+
"type": "git",
|
|
59
|
+
"url": "https://github.com/oyinlola-tech/zudo"
|
|
60
|
+
}
|
|
61
|
+
}
|