@arikajs/foundation 0.0.4 → 0.0.6
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 +25 -23
- package/dist/ObjectPool.d.ts +9 -0
- package/dist/ObjectPool.d.ts.map +1 -0
- package/dist/ObjectPool.js +25 -0
- package/dist/ObjectPool.js.map +1 -0
- package/dist/application/Application.d.ts +47 -15
- package/dist/application/Application.d.ts.map +1 -1
- package/dist/application/Application.js +121 -50
- package/dist/application/Application.js.map +1 -1
- package/dist/container/Container.d.ts +22 -0
- package/dist/container/Container.d.ts.map +1 -1
- package/dist/container/Container.js +60 -7
- package/dist/container/Container.js.map +1 -1
- package/dist/contracts/Application.d.ts +5 -0
- package/dist/contracts/Application.d.ts.map +1 -1
- package/dist/examples/basic.d.ts +3 -0
- package/dist/examples/basic.d.ts.map +1 -0
- package/dist/examples/basic.js +110 -0
- package/dist/examples/basic.js.map +1 -0
- package/dist/index.d.ts +2 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -6
- package/dist/index.js.map +1 -1
- package/dist/src/ObjectPool.d.ts +9 -0
- package/dist/src/ObjectPool.d.ts.map +1 -0
- package/dist/src/ObjectPool.js +25 -0
- package/dist/src/ObjectPool.js.map +1 -0
- package/dist/src/application/Application.d.ts +105 -0
- package/dist/src/application/Application.d.ts.map +1 -0
- package/dist/src/application/Application.js +267 -0
- package/dist/src/application/Application.js.map +1 -0
- package/dist/src/container/Container.d.ts +61 -0
- package/dist/src/container/Container.d.ts.map +1 -0
- package/dist/src/container/Container.js +126 -0
- package/dist/src/container/Container.js.map +1 -0
- package/dist/src/contracts/Application.d.ts +20 -0
- package/dist/src/contracts/Application.d.ts.map +1 -0
- package/dist/src/contracts/Application.js +3 -0
- package/dist/src/contracts/Application.js.map +1 -0
- package/dist/src/contracts/Kernel.d.ts +24 -0
- package/dist/src/contracts/Kernel.d.ts.map +1 -0
- package/dist/src/contracts/Kernel.js +3 -0
- package/dist/src/contracts/Kernel.js.map +1 -0
- package/dist/src/index.d.ts +8 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +28 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/providers/ServiceProvider.d.ts +25 -0
- package/dist/src/providers/ServiceProvider.d.ts.map +1 -0
- package/dist/src/providers/ServiceProvider.js +26 -0
- package/dist/src/providers/ServiceProvider.js.map +1 -0
- package/dist/tests/application.test.d.ts +2 -0
- package/dist/tests/application.test.d.ts.map +1 -0
- package/dist/tests/application.test.js +213 -0
- package/dist/tests/application.test.js.map +1 -0
- package/dist/tests/config.test.d.ts +2 -0
- package/dist/tests/config.test.d.ts.map +1 -0
- package/dist/tests/config.test.js +120 -0
- package/dist/tests/config.test.js.map +1 -0
- package/dist/tests/config_helper.test.d.ts +2 -0
- package/dist/tests/config_helper.test.d.ts.map +1 -0
- package/dist/tests/config_helper.test.js +46 -0
- package/dist/tests/config_helper.test.js.map +1 -0
- package/dist/tests/container.test.d.ts +2 -0
- package/dist/tests/container.test.d.ts.map +1 -0
- package/dist/tests/container.test.js +94 -0
- package/dist/tests/container.test.js.map +1 -0
- package/dist/tests/env.test.d.ts +2 -0
- package/dist/tests/env.test.d.ts.map +1 -0
- package/dist/tests/env.test.js +101 -0
- package/dist/tests/env.test.js.map +1 -0
- package/dist/tests/provider.test.d.ts +2 -0
- package/dist/tests/provider.test.d.ts.map +1 -0
- package/dist/tests/provider.test.js +87 -0
- package/dist/tests/provider.test.js.map +1 -0
- package/dist/tests/timezone.test.d.ts +2 -0
- package/dist/tests/timezone.test.d.ts.map +1 -0
- package/dist/tests/timezone.test.js +47 -0
- package/dist/tests/timezone.test.js.map +1 -0
- package/package.json +13 -11
- package/dist/config/Repository.d.ts +0 -41
- package/dist/config/Repository.d.ts.map +0 -1
- package/dist/config/Repository.js +0 -140
- package/dist/config/Repository.js.map +0 -1
- package/dist/support/EnvLoader.d.ts +0 -15
- package/dist/support/EnvLoader.d.ts.map +0 -1
- package/dist/support/EnvLoader.js +0 -58
- package/dist/support/EnvLoader.js.map +0 -1
- package/dist/support/config.d.ts +0 -18
- package/dist/support/config.d.ts.map +0 -1
- package/dist/support/config.js +0 -29
- package/dist/support/config.js.map +0 -1
- package/dist/support/env.d.ts +0 -9
- package/dist/support/env.d.ts.map +0 -1
- package/dist/support/env.js +0 -32
- package/dist/support/env.js.map +0 -1
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const node_test_1 = require("node:test");
|
|
40
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const os = __importStar(require("os"));
|
|
44
|
+
const config_1 = require("@arikajs/config");
|
|
45
|
+
(0, node_test_1.test)('Repository: get() returns undefined for missing key', () => {
|
|
46
|
+
const repo = new config_1.Repository();
|
|
47
|
+
node_assert_1.default.strictEqual(repo.get('missing'), undefined);
|
|
48
|
+
});
|
|
49
|
+
(0, node_test_1.test)('Repository: get() returns defaultValue for missing key', () => {
|
|
50
|
+
const repo = new config_1.Repository();
|
|
51
|
+
const value = repo.get('missing', 'default');
|
|
52
|
+
node_assert_1.default.strictEqual(value, 'default');
|
|
53
|
+
});
|
|
54
|
+
(0, node_test_1.test)('Repository: get() supports dot notation', () => {
|
|
55
|
+
const repo = new config_1.Repository();
|
|
56
|
+
repo.config = {
|
|
57
|
+
app: {
|
|
58
|
+
name: 'Test App',
|
|
59
|
+
version: '1.0.0',
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
node_assert_1.default.strictEqual(repo.get('app.name'), 'Test App');
|
|
63
|
+
node_assert_1.default.strictEqual(repo.get('app.version'), '1.0.0');
|
|
64
|
+
});
|
|
65
|
+
(0, node_test_1.test)('Repository: has() checks if key exists', () => {
|
|
66
|
+
const repo = new config_1.Repository();
|
|
67
|
+
repo.config = {
|
|
68
|
+
app: {
|
|
69
|
+
name: 'Test',
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
node_assert_1.default.strictEqual(repo.has('app.name'), true);
|
|
73
|
+
node_assert_1.default.strictEqual(repo.has('app.missing'), false);
|
|
74
|
+
});
|
|
75
|
+
(0, node_test_1.test)('Repository: all() returns all config', () => {
|
|
76
|
+
const repo = new config_1.Repository();
|
|
77
|
+
const config = {
|
|
78
|
+
app: { name: 'Test' },
|
|
79
|
+
db: { host: 'localhost' },
|
|
80
|
+
};
|
|
81
|
+
repo.config = config;
|
|
82
|
+
const all = repo.all();
|
|
83
|
+
node_assert_1.default.deepStrictEqual(all, config);
|
|
84
|
+
// Should be a copy, not the same reference
|
|
85
|
+
node_assert_1.default.notStrictEqual(all, config);
|
|
86
|
+
});
|
|
87
|
+
(0, node_test_1.test)('Repository: loadConfigDirectory() loads JS files', () => {
|
|
88
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'arika-config-test-'));
|
|
89
|
+
const configDir = path.join(tmpDir, 'config');
|
|
90
|
+
fs.mkdirSync(configDir, { recursive: true });
|
|
91
|
+
// Create test config files
|
|
92
|
+
fs.writeFileSync(path.join(configDir, 'app.js'), `module.exports = { default: { name: 'Test App' } };`);
|
|
93
|
+
fs.writeFileSync(path.join(configDir, 'database.js'), `module.exports = { default: { host: 'localhost' } };`);
|
|
94
|
+
const repo = new config_1.Repository();
|
|
95
|
+
repo.loadConfigDirectory(configDir);
|
|
96
|
+
node_assert_1.default.strictEqual(repo.get('app.name'), 'Test App');
|
|
97
|
+
node_assert_1.default.strictEqual(repo.get('database.host'), 'localhost');
|
|
98
|
+
// Cleanup
|
|
99
|
+
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
100
|
+
});
|
|
101
|
+
(0, node_test_1.test)('Repository: loadConfigDirectory() handles missing directory', () => {
|
|
102
|
+
const repo = new config_1.Repository();
|
|
103
|
+
const missingDir = path.join(os.tmpdir(), 'non-existent-config');
|
|
104
|
+
// Should not throw
|
|
105
|
+
repo.loadConfigDirectory(missingDir);
|
|
106
|
+
});
|
|
107
|
+
(0, node_test_1.test)('Repository: markAsBooted() prevents further modifications', () => {
|
|
108
|
+
const repo = new config_1.Repository();
|
|
109
|
+
repo.markAsBooted();
|
|
110
|
+
node_assert_1.default.throws(() => {
|
|
111
|
+
repo.loadConfigDirectory(__dirname);
|
|
112
|
+
}, /Configuration cannot be modified after boot/);
|
|
113
|
+
});
|
|
114
|
+
(0, node_test_1.test)('Repository: isBooted() returns boot status', () => {
|
|
115
|
+
const repo = new config_1.Repository();
|
|
116
|
+
node_assert_1.default.strictEqual(repo.isBooted(), false);
|
|
117
|
+
repo.markAsBooted();
|
|
118
|
+
node_assert_1.default.strictEqual(repo.isBooted(), true);
|
|
119
|
+
});
|
|
120
|
+
//# sourceMappingURL=config.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../tests/config.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config_helper.test.d.ts","sourceRoot":"","sources":["../../tests/config_helper.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const node_test_1 = require("node:test");
|
|
7
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
8
|
+
const Application_1 = require("../src/application/Application");
|
|
9
|
+
const config_1 = require("@arikajs/config");
|
|
10
|
+
(0, node_test_1.test)('config(): returns value from repository', () => {
|
|
11
|
+
const app = new Application_1.Application(__dirname);
|
|
12
|
+
// Manually inject some config for testing
|
|
13
|
+
app.config().config = {
|
|
14
|
+
app: { name: 'Test App' }
|
|
15
|
+
};
|
|
16
|
+
node_assert_1.default.strictEqual((0, config_1.config)('app.name'), 'Test App');
|
|
17
|
+
});
|
|
18
|
+
(0, node_test_1.test)('config(): returns default value if not found', () => {
|
|
19
|
+
new Application_1.Application(__dirname); // Ensure repo is set
|
|
20
|
+
node_assert_1.default.strictEqual((0, config_1.config)('missing', 'default'), 'default');
|
|
21
|
+
});
|
|
22
|
+
(0, node_test_1.test)('Application: make() falls back to config repository', () => {
|
|
23
|
+
const app = new Application_1.Application(__dirname);
|
|
24
|
+
app.config().config = {
|
|
25
|
+
services: {
|
|
26
|
+
api: { key: 'secret' }
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
// Should resolve via make() using 'config.' prefix
|
|
30
|
+
node_assert_1.default.strictEqual(app.make('config.services.api.key'), 'secret');
|
|
31
|
+
});
|
|
32
|
+
(0, node_test_1.test)('Application: make() prefers container bindings over config fallback', () => {
|
|
33
|
+
const app = new Application_1.Application(__dirname);
|
|
34
|
+
app.config().config = {
|
|
35
|
+
app: { name: 'From Config' }
|
|
36
|
+
};
|
|
37
|
+
app.instance('config.app.name', 'From Container');
|
|
38
|
+
node_assert_1.default.strictEqual(app.make('config.app.name'), 'From Container');
|
|
39
|
+
});
|
|
40
|
+
(0, node_test_1.test)('Application: make() throws if token not in container and not in config', () => {
|
|
41
|
+
const app = new Application_1.Application(__dirname);
|
|
42
|
+
node_assert_1.default.throws(() => {
|
|
43
|
+
app.make('config.missing.key');
|
|
44
|
+
}, /Container: no binding found for token "config.missing.key"/);
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=config_helper.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config_helper.test.js","sourceRoot":"","sources":["../../tests/config_helper.test.ts"],"names":[],"mappings":";;;;;AAAA,yCAAiC;AACjC,8DAAiC;AACjC,gEAA6D;AAC7D,4CAAyC;AAEzC,IAAA,gBAAI,EAAC,yCAAyC,EAAE,GAAG,EAAE;IACjD,MAAM,GAAG,GAAG,IAAI,yBAAW,CAAC,SAAS,CAAC,CAAC;IACvC,0CAA0C;IACzC,GAAG,CAAC,MAAM,EAAU,CAAC,MAAM,GAAG;QAC3B,GAAG,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;KAC5B,CAAC;IAEF,qBAAM,CAAC,WAAW,CAAC,IAAA,eAAM,EAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,8CAA8C,EAAE,GAAG,EAAE;IACtD,IAAI,yBAAW,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB;IACjD,qBAAM,CAAC,WAAW,CAAC,IAAA,eAAM,EAAC,SAAS,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,qDAAqD,EAAE,GAAG,EAAE;IAC7D,MAAM,GAAG,GAAG,IAAI,yBAAW,CAAC,SAAS,CAAC,CAAC;IACtC,GAAG,CAAC,MAAM,EAAU,CAAC,MAAM,GAAG;QAC3B,QAAQ,EAAE;YACN,GAAG,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE;SACzB;KACJ,CAAC;IAEF,mDAAmD;IACnD,qBAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE,QAAQ,CAAC,CAAC;AACtE,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,qEAAqE,EAAE,GAAG,EAAE;IAC7E,MAAM,GAAG,GAAG,IAAI,yBAAW,CAAC,SAAS,CAAC,CAAC;IACtC,GAAG,CAAC,MAAM,EAAU,CAAC,MAAM,GAAG;QAC3B,GAAG,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;KAC/B,CAAC;IAEF,GAAG,CAAC,QAAQ,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;IAElD,qBAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,gBAAgB,CAAC,CAAC;AACtE,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,wEAAwE,EAAE,GAAG,EAAE;IAChF,MAAM,GAAG,GAAG,IAAI,yBAAW,CAAC,SAAS,CAAC,CAAC;IAEvC,qBAAM,CAAC,MAAM,CAAC,GAAG,EAAE;QACf,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACnC,CAAC,EAAE,4DAA4D,CAAC,CAAC;AACrE,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.test.d.ts","sourceRoot":"","sources":["../../tests/container.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const node_test_1 = require("node:test");
|
|
7
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
8
|
+
const Container_1 = require("../src/container/Container");
|
|
9
|
+
(0, node_test_1.test)('Container: bind and resolve transient service', () => {
|
|
10
|
+
const container = new Container_1.Container();
|
|
11
|
+
let callCount = 0;
|
|
12
|
+
class Logger {
|
|
13
|
+
constructor() {
|
|
14
|
+
callCount++;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
container.bind(Logger, () => new Logger());
|
|
18
|
+
const logger1 = container.resolve(Logger);
|
|
19
|
+
const logger2 = container.resolve(Logger);
|
|
20
|
+
node_assert_1.default.ok(logger1 instanceof Logger);
|
|
21
|
+
node_assert_1.default.ok(logger2 instanceof Logger);
|
|
22
|
+
node_assert_1.default.notStrictEqual(logger1, logger2);
|
|
23
|
+
node_assert_1.default.strictEqual(callCount, 2);
|
|
24
|
+
});
|
|
25
|
+
(0, node_test_1.test)('Container: bind and resolve singleton', () => {
|
|
26
|
+
const container = new Container_1.Container();
|
|
27
|
+
let callCount = 0;
|
|
28
|
+
class Config {
|
|
29
|
+
constructor() {
|
|
30
|
+
callCount++;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
container.singleton(Config, () => new Config());
|
|
34
|
+
const config1 = container.resolve(Config);
|
|
35
|
+
const config2 = container.resolve(Config);
|
|
36
|
+
node_assert_1.default.ok(config1 instanceof Config);
|
|
37
|
+
node_assert_1.default.strictEqual(config1, config2);
|
|
38
|
+
node_assert_1.default.strictEqual(callCount, 1);
|
|
39
|
+
});
|
|
40
|
+
(0, node_test_1.test)('Container: register instance', () => {
|
|
41
|
+
const container = new Container_1.Container();
|
|
42
|
+
const instance = { name: 'test' };
|
|
43
|
+
container.instance('test', instance);
|
|
44
|
+
const resolved = container.resolve('test');
|
|
45
|
+
node_assert_1.default.strictEqual(resolved, instance);
|
|
46
|
+
});
|
|
47
|
+
(0, node_test_1.test)('Container: resolve with string token', () => {
|
|
48
|
+
const container = new Container_1.Container();
|
|
49
|
+
container.instance('app.name', 'My App');
|
|
50
|
+
const name = container.resolve('app.name');
|
|
51
|
+
node_assert_1.default.strictEqual(name, 'My App');
|
|
52
|
+
});
|
|
53
|
+
(0, node_test_1.test)('Container: resolve with symbol token', () => {
|
|
54
|
+
const container = new Container_1.Container();
|
|
55
|
+
const token = Symbol('logger');
|
|
56
|
+
container.instance(token, { log: () => { } });
|
|
57
|
+
const logger = container.resolve(token);
|
|
58
|
+
node_assert_1.default.ok(logger);
|
|
59
|
+
});
|
|
60
|
+
(0, node_test_1.test)('Container: has() checks if token is registered', () => {
|
|
61
|
+
const container = new Container_1.Container();
|
|
62
|
+
node_assert_1.default.strictEqual(container.has('missing'), false);
|
|
63
|
+
container.instance('exists', 'value');
|
|
64
|
+
node_assert_1.default.strictEqual(container.has('exists'), true);
|
|
65
|
+
});
|
|
66
|
+
(0, node_test_1.test)('Container: throws error when resolving unregistered token', () => {
|
|
67
|
+
const container = new Container_1.Container();
|
|
68
|
+
node_assert_1.default.throws(() => {
|
|
69
|
+
container.resolve('not.registered');
|
|
70
|
+
}, /no binding found/);
|
|
71
|
+
});
|
|
72
|
+
(0, node_test_1.test)('Container: factory receives container for dependency resolution', () => {
|
|
73
|
+
const container = new Container_1.Container();
|
|
74
|
+
container.instance('name', 'ArikaJS');
|
|
75
|
+
class Service {
|
|
76
|
+
constructor(name) {
|
|
77
|
+
this.name = name;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
container.bind(Service, (c) => {
|
|
81
|
+
const name = c.resolve('name');
|
|
82
|
+
return new Service(name);
|
|
83
|
+
});
|
|
84
|
+
const service = container.resolve(Service);
|
|
85
|
+
node_assert_1.default.strictEqual(service.name, 'ArikaJS');
|
|
86
|
+
});
|
|
87
|
+
(0, node_test_1.test)('Container: make() and resolve() are aliases', () => {
|
|
88
|
+
const container = new Container_1.Container();
|
|
89
|
+
container.instance('test', 'value');
|
|
90
|
+
const viaMake = container.make('test');
|
|
91
|
+
const viaResolve = container.resolve('test');
|
|
92
|
+
node_assert_1.default.strictEqual(viaMake, viaResolve);
|
|
93
|
+
});
|
|
94
|
+
//# sourceMappingURL=container.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.test.js","sourceRoot":"","sources":["../../tests/container.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.test.d.ts","sourceRoot":"","sources":["../../tests/env.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const node_test_1 = require("node:test");
|
|
40
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const fs = __importStar(require("fs"));
|
|
43
|
+
const os = __importStar(require("os"));
|
|
44
|
+
const config_1 = require("@arikajs/config");
|
|
45
|
+
const Application_1 = require("../src/application/Application");
|
|
46
|
+
(0, node_test_1.test)('env(): returns value from process.env', () => {
|
|
47
|
+
process.env.TEST_VAR = 'hello';
|
|
48
|
+
node_assert_1.default.strictEqual((0, config_1.env)('TEST_VAR'), 'hello');
|
|
49
|
+
delete process.env.TEST_VAR;
|
|
50
|
+
});
|
|
51
|
+
(0, node_test_1.test)('env(): returns default value if not set', () => {
|
|
52
|
+
node_assert_1.default.strictEqual((0, config_1.env)('NON_EXISTENT', 'default'), 'default');
|
|
53
|
+
});
|
|
54
|
+
(0, node_test_1.test)('env(): casts boolean strings', () => {
|
|
55
|
+
process.env.TEST_TRUE = 'true';
|
|
56
|
+
process.env.TEST_FALSE = 'false';
|
|
57
|
+
node_assert_1.default.strictEqual((0, config_1.env)('TEST_TRUE'), true);
|
|
58
|
+
node_assert_1.default.strictEqual((0, config_1.env)('TEST_FALSE'), false);
|
|
59
|
+
delete process.env.TEST_TRUE;
|
|
60
|
+
delete process.env.TEST_FALSE;
|
|
61
|
+
});
|
|
62
|
+
(0, node_test_1.test)('env(): casts null and empty strings', () => {
|
|
63
|
+
process.env.TEST_NULL = 'null';
|
|
64
|
+
process.env.TEST_EMPTY = '(empty)';
|
|
65
|
+
node_assert_1.default.strictEqual((0, config_1.env)('TEST_NULL'), null);
|
|
66
|
+
node_assert_1.default.strictEqual((0, config_1.env)('TEST_EMPTY'), '');
|
|
67
|
+
delete process.env.TEST_NULL;
|
|
68
|
+
delete process.env.TEST_EMPTY;
|
|
69
|
+
});
|
|
70
|
+
(0, node_test_1.test)('EnvLoader: loads .env file into process.env', () => {
|
|
71
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'arika-env-test-'));
|
|
72
|
+
const envContent = `
|
|
73
|
+
APP_NAME="Arika Test"
|
|
74
|
+
APP_ENV=testing
|
|
75
|
+
# Comment line
|
|
76
|
+
APP_DEBUG=true
|
|
77
|
+
QUOTED_VAL='single-quoted'
|
|
78
|
+
`;
|
|
79
|
+
fs.writeFileSync(path.join(tmpDir, '.env'), envContent);
|
|
80
|
+
config_1.EnvLoader.load(tmpDir);
|
|
81
|
+
node_assert_1.default.strictEqual(process.env.APP_NAME, 'Arika Test');
|
|
82
|
+
node_assert_1.default.strictEqual(process.env.APP_ENV, 'testing');
|
|
83
|
+
node_assert_1.default.strictEqual(process.env.APP_DEBUG, 'true');
|
|
84
|
+
node_assert_1.default.strictEqual(process.env.QUOTED_VAL, 'single-quoted');
|
|
85
|
+
// Cleanup
|
|
86
|
+
delete process.env.APP_NAME;
|
|
87
|
+
delete process.env.APP_ENV;
|
|
88
|
+
delete process.env.APP_DEBUG;
|
|
89
|
+
delete process.env.QUOTED_VAL;
|
|
90
|
+
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
91
|
+
});
|
|
92
|
+
(0, node_test_1.test)('Application: automatically loads .env from base path', () => {
|
|
93
|
+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'arika-app-env-test-'));
|
|
94
|
+
fs.writeFileSync(path.join(tmpDir, '.env'), 'APP_ENV=auto-loaded');
|
|
95
|
+
new Application_1.Application(tmpDir);
|
|
96
|
+
node_assert_1.default.strictEqual((0, config_1.env)('APP_ENV'), 'auto-loaded');
|
|
97
|
+
// Cleanup
|
|
98
|
+
delete process.env.APP_ENV;
|
|
99
|
+
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
100
|
+
});
|
|
101
|
+
//# sourceMappingURL=env.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.test.js","sourceRoot":"","sources":["../../tests/env.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.test.d.ts","sourceRoot":"","sources":["../../tests/provider.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const node_test_1 = require("node:test");
|
|
7
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
8
|
+
const Application_1 = require("../src/application/Application");
|
|
9
|
+
const ServiceProvider_1 = require("../src/providers/ServiceProvider");
|
|
10
|
+
(0, node_test_1.test)('ServiceProvider: register() is called during boot', async () => {
|
|
11
|
+
const app = new Application_1.Application(__dirname);
|
|
12
|
+
let registered = false;
|
|
13
|
+
class TestProvider extends ServiceProvider_1.ServiceProvider {
|
|
14
|
+
register() {
|
|
15
|
+
registered = true;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
app.register(TestProvider);
|
|
19
|
+
app.config().set('app.key', 'base64:sm957Y1wUYo8Uj8yL1fD7vX+X6y8gG+E6XpXnJz+I=');
|
|
20
|
+
await app.boot();
|
|
21
|
+
node_assert_1.default.strictEqual(registered, true);
|
|
22
|
+
});
|
|
23
|
+
(0, node_test_1.test)('ServiceProvider: boot() is optional', async () => {
|
|
24
|
+
const app = new Application_1.Application(__dirname);
|
|
25
|
+
class TestProvider extends ServiceProvider_1.ServiceProvider {
|
|
26
|
+
register() {
|
|
27
|
+
// No boot() override
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
app.register(TestProvider);
|
|
31
|
+
// Should not throw
|
|
32
|
+
app.config().set('app.key', 'base64:sm957Y1wUYo8Uj8yL1fD7vX+X6y8gG+E6XpXnJz+I=');
|
|
33
|
+
await app.boot();
|
|
34
|
+
});
|
|
35
|
+
(0, node_test_1.test)('ServiceProvider: boot() can access other services', async () => {
|
|
36
|
+
const app = new Application_1.Application(__dirname);
|
|
37
|
+
let serviceResolved = false;
|
|
38
|
+
class ServiceProvider1 extends ServiceProvider_1.ServiceProvider {
|
|
39
|
+
register() {
|
|
40
|
+
this.app.instance('service', { name: 'test' });
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
class ServiceProvider2 extends ServiceProvider_1.ServiceProvider {
|
|
44
|
+
register() {
|
|
45
|
+
// Register after Provider1
|
|
46
|
+
}
|
|
47
|
+
async boot() {
|
|
48
|
+
const service = this.app.resolve('service');
|
|
49
|
+
serviceResolved = !!service;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
app.register(ServiceProvider1);
|
|
53
|
+
app.register(ServiceProvider2);
|
|
54
|
+
app.config().set('app.key', 'base64:sm957Y1wUYo8Uj8yL1fD7vX+X6y8gG+E6XpXnJz+I=');
|
|
55
|
+
await app.boot();
|
|
56
|
+
node_assert_1.default.strictEqual(serviceResolved, true);
|
|
57
|
+
});
|
|
58
|
+
(0, node_test_1.test)('ServiceProvider: register() can be async', async () => {
|
|
59
|
+
const app = new Application_1.Application(__dirname);
|
|
60
|
+
let registered = false;
|
|
61
|
+
class TestProvider extends ServiceProvider_1.ServiceProvider {
|
|
62
|
+
async register() {
|
|
63
|
+
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
64
|
+
registered = true;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
app.register(TestProvider);
|
|
68
|
+
app.config().set('app.key', 'base64:sm957Y1wUYo8Uj8yL1fD7vX+X6y8gG+E6XpXnJz+I=');
|
|
69
|
+
await app.boot();
|
|
70
|
+
node_assert_1.default.strictEqual(registered, true);
|
|
71
|
+
});
|
|
72
|
+
(0, node_test_1.test)('ServiceProvider: boot() can be async', async () => {
|
|
73
|
+
const app = new Application_1.Application(__dirname);
|
|
74
|
+
let booted = false;
|
|
75
|
+
class TestProvider extends ServiceProvider_1.ServiceProvider {
|
|
76
|
+
register() { }
|
|
77
|
+
async boot() {
|
|
78
|
+
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
79
|
+
booted = true;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
app.register(TestProvider);
|
|
83
|
+
app.config().set('app.key', 'base64:sm957Y1wUYo8Uj8yL1fD7vX+X6y8gG+E6XpXnJz+I=');
|
|
84
|
+
await app.boot();
|
|
85
|
+
node_assert_1.default.strictEqual(booted, true);
|
|
86
|
+
});
|
|
87
|
+
//# sourceMappingURL=provider.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.test.js","sourceRoot":"","sources":["../../tests/provider.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timezone.test.d.ts","sourceRoot":"","sources":["../../tests/timezone.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const node_test_1 = require("node:test");
|
|
7
|
+
const node_assert_1 = __importDefault(require("node:assert"));
|
|
8
|
+
const Application_1 = require("../src/application/Application");
|
|
9
|
+
(0, node_test_1.test)('Application: applies timezone from config during boot', async (t) => {
|
|
10
|
+
// Save original TZ
|
|
11
|
+
const originalTZ = process.env.TZ;
|
|
12
|
+
// Ensure we start clean for this test
|
|
13
|
+
delete process.env.TZ;
|
|
14
|
+
const app = new Application_1.Application(__dirname);
|
|
15
|
+
app.config().set('app.key', 'base64:sm957Y1wUYo8Uj8yL1fD7vX+X6y8gG+E6XpXnJz+I=');
|
|
16
|
+
app.config().set('app.timezone', 'Asia/Kolkata');
|
|
17
|
+
await app.boot();
|
|
18
|
+
node_assert_1.default.strictEqual(process.env.TZ, 'Asia/Kolkata');
|
|
19
|
+
// Verify Date behavior (optional, but good sanity check)
|
|
20
|
+
// Note: This depends on the system having the timezone data, which most Node environments do
|
|
21
|
+
try {
|
|
22
|
+
const date = new Date('2023-01-01T12:00:00Z');
|
|
23
|
+
// checking the string representation might be flaky across systems if full ICU data isn't present
|
|
24
|
+
// but verifying process.env.TZ is sufficient for the requirement "process.env.TZ = config('app.timezone')"
|
|
25
|
+
node_assert_1.default.ok(process.env.TZ);
|
|
26
|
+
}
|
|
27
|
+
catch (e) {
|
|
28
|
+
// ignore
|
|
29
|
+
}
|
|
30
|
+
// Cleanup
|
|
31
|
+
if (originalTZ) {
|
|
32
|
+
process.env.TZ = originalTZ;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
delete process.env.TZ;
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
(0, node_test_1.test)('Application: does not change TZ if not configured', async () => {
|
|
39
|
+
// Save original TZ
|
|
40
|
+
const originalTZ = process.env.TZ;
|
|
41
|
+
const app = new Application_1.Application(__dirname);
|
|
42
|
+
// No config injected
|
|
43
|
+
app.config().set('app.key', 'base64:sm957Y1wUYo8Uj8yL1fD7vX+X6y8gG+E6XpXnJz+I=');
|
|
44
|
+
await app.boot();
|
|
45
|
+
node_assert_1.default.strictEqual(process.env.TZ, originalTZ); // Should remain unchanged
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=timezone.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timezone.test.js","sourceRoot":"","sources":["../../tests/timezone.test.ts"],"names":[],"mappings":";;;;;AAAA,yCAAiC;AACjC,8DAAiC;AACjC,gEAA6D;AAE7D,IAAA,gBAAI,EAAC,uDAAuD,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;IACtE,mBAAmB;IACnB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;IAElC,sCAAsC;IACtC,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;IAEtB,MAAM,GAAG,GAAG,IAAI,yBAAW,CAAC,SAAS,CAAC,CAAC;IAEvC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,mDAAmD,CAAC,CAAC;IACjF,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;IAEjD,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAEjB,qBAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;IAEnD,yDAAyD;IACzD,6FAA6F;IAC7F,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC9C,kGAAkG;QAClG,2GAA2G;QAC3G,qBAAM,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,SAAS;IACb,CAAC;IAED,UAAU;IACV,IAAI,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,UAAU,CAAC;IAChC,CAAC;SAAM,CAAC;QACJ,OAAO,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;IAC1B,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,gBAAI,EAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;IACjE,mBAAmB;IACnB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;IAElC,MAAM,GAAG,GAAG,IAAI,yBAAW,CAAC,SAAS,CAAC,CAAC;IACvC,qBAAqB;IAErB,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,mDAAmD,CAAC,CAAC;IACjF,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAEjB,qBAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,0BAA0B;AAC9E,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@arikajs/foundation",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.6",
|
|
4
4
|
"description": "Core application and service container layer for the ArikaJS framework.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -11,9 +11,10 @@
|
|
|
11
11
|
"clean": "rm -rf dist",
|
|
12
12
|
"prepare": "echo skip",
|
|
13
13
|
"lint": "eslint src --ext .ts",
|
|
14
|
-
"test": "npm run build && npm run build:tests && node
|
|
14
|
+
"test": "npm run build && npm run build:tests && node --test 'dist/tests/**/*.test.js'",
|
|
15
15
|
"test:watch": "npm run build && npm run build:tests && node --test --watch 'dist/tests/**/*.test.js'",
|
|
16
|
-
"example": "npm run build && node dist/examples/basic.js"
|
|
16
|
+
"example": "npm run build && node dist/examples/basic.js",
|
|
17
|
+
"dev": "tsc -p tsconfig.json --watch"
|
|
17
18
|
},
|
|
18
19
|
"files": [
|
|
19
20
|
"dist"
|
|
@@ -32,20 +33,21 @@
|
|
|
32
33
|
},
|
|
33
34
|
"repository": {
|
|
34
35
|
"type": "git",
|
|
35
|
-
"url": "git+https://github.com/arikajs
|
|
36
|
+
"url": "git+https://github.com/ArikaJs/arikajs.git",
|
|
37
|
+
"directory": "packages/foundation"
|
|
36
38
|
},
|
|
37
39
|
"bugs": {
|
|
38
|
-
"url": "https://github.com/arikajs/
|
|
40
|
+
"url": "https://github.com/ArikaJs/arikajs/issues"
|
|
39
41
|
},
|
|
40
|
-
"homepage": "https://github.com/arikajs/foundation#readme",
|
|
42
|
+
"homepage": "https://github.com/ArikaJs/arikajs/tree/main/packages/foundation#readme",
|
|
41
43
|
"dependencies": {
|
|
42
|
-
"
|
|
44
|
+
"@arikajs/config": "*"
|
|
43
45
|
},
|
|
44
46
|
"devDependencies": {
|
|
45
|
-
"@arikajs/logging": "
|
|
46
|
-
"@arikajs/http": "
|
|
47
|
-
"@arikajs/database": "
|
|
48
|
-
"@arikajs/cache": "
|
|
47
|
+
"@arikajs/logging": "*",
|
|
48
|
+
"@arikajs/http": "*",
|
|
49
|
+
"@arikajs/database": "*",
|
|
50
|
+
"@arikajs/cache": "*",
|
|
49
51
|
"@types/node": "^20.19.31",
|
|
50
52
|
"typescript": "^5.7.0"
|
|
51
53
|
},
|