@eggjs/tegg-common-util 3.21.0 → 3.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/dist/test/MapUtil.test.d.ts +0 -1
- package/dist/test/MapUtil.test.js +0 -28
- package/dist/test/ModuleConfig.test.d.ts +0 -1
- package/dist/test/ModuleConfig.test.js +0 -93
- package/dist/test/NameUtil.test.d.ts +0 -1
- package/dist/test/NameUtil.test.js +0 -16
- package/dist/test/ObjectUtil.test.d.ts +0 -1
- package/dist/test/ObjectUtil.test.js +0 -18
- package/dist/test/ProtoGraph.test.d.ts +0 -1
- package/dist/test/ProtoGraph.test.js +0 -97
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eggjs/tegg-common-util",
|
|
3
3
|
"description": "common util for tegg",
|
|
4
|
-
"version": "3.
|
|
4
|
+
"version": "3.22.0",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"egg",
|
|
7
7
|
"typescript",
|
|
@@ -51,5 +51,5 @@
|
|
|
51
51
|
"ts-node": "^10.9.1",
|
|
52
52
|
"typescript": "^5.0.4"
|
|
53
53
|
},
|
|
54
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "648b5fcd73981eaa702462699f40835c0dff912d"
|
|
55
55
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,28 +0,0 @@
|
|
|
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 __1 = require("..");
|
|
7
|
-
const assert_1 = __importDefault(require("assert"));
|
|
8
|
-
describe('test/MapUtil.test.ts', () => {
|
|
9
|
-
it('should set value if key not exists', () => {
|
|
10
|
-
const map = new Map();
|
|
11
|
-
const key = 'test_key';
|
|
12
|
-
const val = 'test_val';
|
|
13
|
-
const getVal = __1.MapUtil.getOrStore(map, key, val);
|
|
14
|
-
(0, assert_1.default)(getVal === val);
|
|
15
|
-
(0, assert_1.default)(map.has(key));
|
|
16
|
-
});
|
|
17
|
-
it('should not set value if key exits', () => {
|
|
18
|
-
const map = new Map();
|
|
19
|
-
const key = 'test_key';
|
|
20
|
-
const val = 'test_val';
|
|
21
|
-
map.set(key, val);
|
|
22
|
-
const initVal = 'test_val2333';
|
|
23
|
-
const getVal = __1.MapUtil.getOrStore(map, key, initVal);
|
|
24
|
-
(0, assert_1.default)(initVal !== getVal);
|
|
25
|
-
(0, assert_1.default)(getVal === val);
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFwVXRpbC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdGVzdC9NYXBVdGlsLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwwQkFBNkI7QUFDN0Isb0RBQTRCO0FBRTVCLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxHQUFHLEVBQUU7SUFDcEMsRUFBRSxDQUFDLG9DQUFvQyxFQUFFLEdBQUcsRUFBRTtRQUM1QyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQztRQUN2QixNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUM7UUFDdkIsTUFBTSxNQUFNLEdBQUcsV0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2pELElBQUEsZ0JBQU0sRUFBQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDdkIsSUFBQSxnQkFBTSxFQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2QixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxtQ0FBbUMsRUFBRSxHQUFHLEVBQUU7UUFDM0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN0QixNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUM7UUFDdkIsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDO1FBQ3ZCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLE1BQU0sT0FBTyxHQUFHLGNBQWMsQ0FBQztRQUMvQixNQUFNLE1BQU0sR0FBRyxXQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDckQsSUFBQSxnQkFBTSxFQUFDLE9BQU8sS0FBSyxNQUFNLENBQUMsQ0FBQztRQUMzQixJQUFBLGdCQUFNLEVBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMifQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,93 +0,0 @@
|
|
|
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 assert_1 = __importDefault(require("assert"));
|
|
7
|
-
const path_1 = __importDefault(require("path"));
|
|
8
|
-
const ModuleConfig_1 = require("../src/ModuleConfig");
|
|
9
|
-
describe('test/ModuleConfig.test.ts', () => {
|
|
10
|
-
describe('load yaml config', () => {
|
|
11
|
-
it('should work', () => {
|
|
12
|
-
const config = ModuleConfig_1.ModuleConfigUtil.loadModuleConfigSync(path_1.default.join(__dirname, './fixtures/modules/foo-yaml'));
|
|
13
|
-
assert_1.default.deepStrictEqual(config, { mysql: { host: '127.0.0.1' } });
|
|
14
|
-
});
|
|
15
|
-
});
|
|
16
|
-
describe('load module reference', () => {
|
|
17
|
-
describe('module.json not exits', () => {
|
|
18
|
-
it('should work', () => {
|
|
19
|
-
const fixturesPath = path_1.default.join(__dirname, './fixtures/apps/app-with-no-module-json');
|
|
20
|
-
const ref = ModuleConfig_1.ModuleConfigUtil.readModuleReference(fixturesPath);
|
|
21
|
-
assert_1.default.deepStrictEqual(ref, [
|
|
22
|
-
{ path: path_1.default.join(fixturesPath, 'app/module-a') },
|
|
23
|
-
{ path: path_1.default.join(fixturesPath, 'app/module-b') },
|
|
24
|
-
{ path: path_1.default.join(fixturesPath, 'app/module-b/test/fixtures/module-e') },
|
|
25
|
-
{ path: path_1.default.join(fixturesPath, 'node_modules/module-c') },
|
|
26
|
-
]);
|
|
27
|
-
});
|
|
28
|
-
it('duplicated module', () => {
|
|
29
|
-
const fixturesPath = path_1.default.join(__dirname, './fixtures/apps/app-with-no-module-json-duplicated');
|
|
30
|
-
assert_1.default.throws(() => { ModuleConfig_1.ModuleConfigUtil.readModuleReference(fixturesPath); }, /duplicate import of module reference/, 'did not throw with expected message');
|
|
31
|
-
});
|
|
32
|
-
describe('has symlink', () => {
|
|
33
|
-
it('should work', () => {
|
|
34
|
-
const fixturesPath = path_1.default.join(__dirname, './fixtures/apps/app-with-symlink');
|
|
35
|
-
const ref = ModuleConfig_1.ModuleConfigUtil.readModuleReference(fixturesPath);
|
|
36
|
-
assert_1.default.deepStrictEqual(ref, [
|
|
37
|
-
{ path: path_1.default.join(fixturesPath, 'app/module-a') },
|
|
38
|
-
]);
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
describe('module.json exits', () => {
|
|
43
|
-
it('should work', () => {
|
|
44
|
-
const fixturesPath = path_1.default.join(__dirname, './fixtures/apps/app-with-module-json');
|
|
45
|
-
const ref = ModuleConfig_1.ModuleConfigUtil.readModuleReference(fixturesPath);
|
|
46
|
-
assert_1.default.deepStrictEqual(ref, [
|
|
47
|
-
{ path: path_1.default.join(fixturesPath, 'app/module-a') },
|
|
48
|
-
{ path: path_1.default.join(fixturesPath, 'app/module-b') },
|
|
49
|
-
]);
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
describe('module.json has pkg', () => {
|
|
53
|
-
it('should work', () => {
|
|
54
|
-
const fixturesPath = path_1.default.join(__dirname, './fixtures/apps/app-with-module-pkg-json');
|
|
55
|
-
const ref = ModuleConfig_1.ModuleConfigUtil.readModuleReference(fixturesPath, {
|
|
56
|
-
cwd: fixturesPath,
|
|
57
|
-
});
|
|
58
|
-
assert_1.default.deepStrictEqual(ref, [
|
|
59
|
-
{ path: path_1.default.join(fixturesPath, 'node_modules/module-a') },
|
|
60
|
-
]);
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
describe('read package dependencies', () => {
|
|
65
|
-
it('should success if package.json not exist', async () => {
|
|
66
|
-
const dir = path_1.default.resolve(__dirname, './fixtures/monorepo/foo');
|
|
67
|
-
const ret = ModuleConfig_1.ModuleConfigUtil.readModuleFromNodeModules(dir);
|
|
68
|
-
assert_1.default.deepStrictEqual(ret, []);
|
|
69
|
-
});
|
|
70
|
-
it('should success whether dependencies entry has exported package.json', async () => {
|
|
71
|
-
const dir = path_1.default.resolve(__dirname, './fixtures/monorepo/packages/d');
|
|
72
|
-
const ret = ModuleConfig_1.ModuleConfigUtil.readModuleFromNodeModules(dir);
|
|
73
|
-
assert_1.default.deepStrictEqual(ret, [{
|
|
74
|
-
path: path_1.default.resolve(__dirname, './fixtures/monorepo/packages/d/node_modules/e'),
|
|
75
|
-
}]);
|
|
76
|
-
});
|
|
77
|
-
it('should read dependencies from self node_modules', async () => {
|
|
78
|
-
const dir = path_1.default.resolve(__dirname, './fixtures/monorepo/packages/a');
|
|
79
|
-
const ret = ModuleConfig_1.ModuleConfigUtil.readModuleFromNodeModules(dir);
|
|
80
|
-
assert_1.default.deepStrictEqual(ret, [{
|
|
81
|
-
path: path_1.default.resolve(__dirname, './fixtures/monorepo/packages/a/node_modules/c'),
|
|
82
|
-
}]);
|
|
83
|
-
});
|
|
84
|
-
it('should read dependencies from parent node_modules', async () => {
|
|
85
|
-
const dir = path_1.default.resolve(__dirname, './fixtures/monorepo/packages/b');
|
|
86
|
-
const ret = ModuleConfig_1.ModuleConfigUtil.readModuleFromNodeModules(dir);
|
|
87
|
-
assert_1.default.deepStrictEqual(ret, [{
|
|
88
|
-
path: path_1.default.resolve(__dirname, './fixtures/monorepo/packages/a'),
|
|
89
|
-
}]);
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kdWxlQ29uZmlnLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90ZXN0L01vZHVsZUNvbmZpZy50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0RBQTRCO0FBQzVCLGdEQUF3QjtBQUN4QixzREFBdUQ7QUFFdkQsUUFBUSxDQUFDLDJCQUEyQixFQUFFLEdBQUcsRUFBRTtJQUN6QyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFO1FBQ2hDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO1lBQ3JCLE1BQU0sTUFBTSxHQUFHLCtCQUFnQixDQUFDLG9CQUFvQixDQUFDLGNBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLDZCQUE2QixDQUFDLENBQUMsQ0FBQztZQUMxRyxnQkFBTSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxFQUFFO1FBQ3JDLFFBQVEsQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLEVBQUU7WUFDckMsRUFBRSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7Z0JBQ3JCLE1BQU0sWUFBWSxHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLHlDQUF5QyxDQUFDLENBQUM7Z0JBQ3JGLE1BQU0sR0FBRyxHQUFHLCtCQUFnQixDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUMvRCxnQkFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUU7b0JBQzFCLEVBQUUsSUFBSSxFQUFFLGNBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQyxFQUFFO29CQUNqRCxFQUFFLElBQUksRUFBRSxjQUFJLENBQUMsSUFBSSxDQUFD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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,16 +0,0 @@
|
|
|
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 __1 = require("..");
|
|
7
|
-
const assert_1 = __importDefault(require("assert"));
|
|
8
|
-
describe('test/NameUtil.test.ts', () => {
|
|
9
|
-
it('should work', () => {
|
|
10
|
-
class Hello {
|
|
11
|
-
}
|
|
12
|
-
const name = __1.NameUtil.getClassName(Hello);
|
|
13
|
-
(0, assert_1.default)(name === 'hello');
|
|
14
|
-
});
|
|
15
|
-
});
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmFtZVV0aWwudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3Rlc3QvTmFtZVV0aWwudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDBCQUE4QjtBQUM5QixvREFBNEI7QUFFNUIsUUFBUSxDQUFDLHVCQUF1QixFQUFFLEdBQUcsRUFBRTtJQUNyQyxFQUFFLENBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRTtRQUNyQixNQUFNLEtBQUs7U0FBRztRQUNkLE1BQU0sSUFBSSxHQUFHLFlBQVEsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsSUFBQSxnQkFBTSxFQUFDLElBQUksS0FBSyxPQUFPLENBQUMsQ0FBQztJQUMzQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIn0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,18 +0,0 @@
|
|
|
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 assert_1 = __importDefault(require("assert"));
|
|
7
|
-
const __1 = require("..");
|
|
8
|
-
describe('test/ObjectUtil.test.ts', () => {
|
|
9
|
-
it('should work', () => {
|
|
10
|
-
function mockFunction(/* test */ ctx, foo, bar = '233') {
|
|
11
|
-
// test
|
|
12
|
-
console.log(ctx, foo, bar);
|
|
13
|
-
}
|
|
14
|
-
const argNames = __1.ObjectUtils.getFunctionArgNameList(mockFunction);
|
|
15
|
-
assert_1.default.deepStrictEqual(argNames, ['ctx', 'foo', 'bar']);
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT2JqZWN0VXRpbC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdGVzdC9PYmplY3RVdGlsLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsMEJBQWlDO0FBRWpDLFFBQVEsQ0FBQyx5QkFBeUIsRUFBRSxHQUFHLEVBQUU7SUFDdkMsRUFBRSxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUU7UUFDckIsU0FBUyxZQUFZLENBQUMsVUFBVSxDQUFBLEdBQVcsRUFBRSxHQUFXLEVBQUUsR0FBRyxHQUFHLEtBQUs7WUFDbkUsT0FBTztZQUNQLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsZUFBVyxDQUFDLHNCQUFzQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2xFLGdCQUFNLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFFLENBQUMsQ0FBQztJQUM1RCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIn0=
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,97 +0,0 @@
|
|
|
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 assert_1 = __importDefault(require("assert"));
|
|
7
|
-
const Graph_1 = require("../src/Graph");
|
|
8
|
-
describe('test/LoadUnit/Graph.test.ts', () => {
|
|
9
|
-
class GraphNodeVal {
|
|
10
|
-
constructor(id) {
|
|
11
|
-
this.id = id;
|
|
12
|
-
}
|
|
13
|
-
toString() {
|
|
14
|
-
return `id:${this.id}`;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
describe('hasLoop', () => {
|
|
18
|
-
it('if has loop, should return path', () => {
|
|
19
|
-
const graph = new Graph_1.Graph();
|
|
20
|
-
const node1 = new Graph_1.GraphNode(new GraphNodeVal('1'));
|
|
21
|
-
const node2 = new Graph_1.GraphNode(new GraphNodeVal('2'));
|
|
22
|
-
const node3 = new Graph_1.GraphNode(new GraphNodeVal('3'));
|
|
23
|
-
const node4 = new Graph_1.GraphNode(new GraphNodeVal('4'));
|
|
24
|
-
const node5 = new Graph_1.GraphNode(new GraphNodeVal('5'));
|
|
25
|
-
graph.addVertex(node2);
|
|
26
|
-
graph.addVertex(node3);
|
|
27
|
-
graph.addVertex(node1);
|
|
28
|
-
graph.addVertex(node4);
|
|
29
|
-
graph.addVertex(node5);
|
|
30
|
-
graph.addEdge(node1, node5);
|
|
31
|
-
graph.addEdge(node1, node2);
|
|
32
|
-
graph.addEdge(node2, node3);
|
|
33
|
-
graph.addEdge(node3, node1);
|
|
34
|
-
const loopPath = graph.loopPath();
|
|
35
|
-
(0, assert_1.default)(loopPath.toString() === 'id:2 -> id:3 -> id:1 -> id:2');
|
|
36
|
-
});
|
|
37
|
-
it('if do not has loop, should return undefined', () => {
|
|
38
|
-
const graph = new Graph_1.Graph();
|
|
39
|
-
const node1 = new Graph_1.GraphNode({ id: '1' });
|
|
40
|
-
const node2 = new Graph_1.GraphNode({ id: '2' });
|
|
41
|
-
const node3 = new Graph_1.GraphNode({ id: '3' });
|
|
42
|
-
const node4 = new Graph_1.GraphNode({ id: '4' });
|
|
43
|
-
const node5 = new Graph_1.GraphNode({ id: '5' });
|
|
44
|
-
graph.addVertex(node2);
|
|
45
|
-
graph.addVertex(node3);
|
|
46
|
-
graph.addVertex(node1);
|
|
47
|
-
graph.addVertex(node4);
|
|
48
|
-
graph.addVertex(node5);
|
|
49
|
-
graph.addEdge(node1, node5);
|
|
50
|
-
graph.addEdge(node1, node2);
|
|
51
|
-
graph.addEdge(node2, node3);
|
|
52
|
-
graph.addEdge(node3, node4);
|
|
53
|
-
const loopPath = graph.loopPath();
|
|
54
|
-
(0, assert_1.default)(!loopPath);
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
describe('sort', () => {
|
|
58
|
-
it('can not access vertex should at first', () => {
|
|
59
|
-
const graph = new Graph_1.Graph();
|
|
60
|
-
const node1 = new Graph_1.GraphNode({ id: '1' });
|
|
61
|
-
const node2 = new Graph_1.GraphNode({ id: '2' });
|
|
62
|
-
const node3 = new Graph_1.GraphNode({ id: '3' });
|
|
63
|
-
graph.addVertex(node1);
|
|
64
|
-
graph.addVertex(node2);
|
|
65
|
-
graph.addVertex(node3);
|
|
66
|
-
graph.addEdge(node2, node3);
|
|
67
|
-
const sortRes = graph.sort();
|
|
68
|
-
(0, assert_1.default)(sortRes[0] === node1);
|
|
69
|
-
});
|
|
70
|
-
it('should have reverse order with access direct', () => {
|
|
71
|
-
const graph = new Graph_1.Graph();
|
|
72
|
-
const node1 = new Graph_1.GraphNode({ id: '1' });
|
|
73
|
-
const node2 = new Graph_1.GraphNode({ id: '2' });
|
|
74
|
-
const node3 = new Graph_1.GraphNode({ id: '3' });
|
|
75
|
-
const node4 = new Graph_1.GraphNode({ id: '4' });
|
|
76
|
-
const node5 = new Graph_1.GraphNode({ id: '5' });
|
|
77
|
-
graph.addVertex(node1);
|
|
78
|
-
graph.addVertex(node2);
|
|
79
|
-
graph.addVertex(node3);
|
|
80
|
-
graph.addVertex(node4);
|
|
81
|
-
graph.addVertex(node5);
|
|
82
|
-
graph.addEdge(node1, node2);
|
|
83
|
-
graph.addEdge(node2, node5);
|
|
84
|
-
graph.addEdge(node3, node4);
|
|
85
|
-
graph.addEdge(node4, node5);
|
|
86
|
-
const sortRes = graph.sort();
|
|
87
|
-
assert_1.default.deepStrictEqual(sortRes, [
|
|
88
|
-
node5,
|
|
89
|
-
node2,
|
|
90
|
-
node1,
|
|
91
|
-
node4,
|
|
92
|
-
node3,
|
|
93
|
-
]);
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvdG9HcmFwaC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdGVzdC9Qcm90b0dyYXBoLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsd0NBQThEO0FBRTlELFFBQVEsQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLEVBQUU7SUFDM0MsTUFBTSxZQUFZO1FBR2hCLFlBQVksRUFBVTtZQUNwQixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNmLENBQUM7UUFFRCxRQUFRO1lBQ04sT0FBTyxNQUFNLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN6QixDQUFDO0tBQ0Y7SUFFRCxRQUFRLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtRQUN2QixFQUFFLENBQUMsaUNBQWlDLEVBQUUsR0FBRyxFQUFFO1lBQ3pDLE1BQU0sS0FBSyxHQUFHLElBQUksYUFBSyxFQUFFLENBQUM7WUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxpQkFBUyxDQUFDLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxpQkFBUyxDQUFDLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxpQkFBUyxDQUFDLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxpQkFBUyxDQUFDLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxpQkFBUyxDQUFDLElBQUksWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbkQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QixLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QixLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRXZCLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVCLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVCLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVCLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRTVCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxJQUFBLGdCQUFNLEVBQUMsUUFBUyxDQUFDLFFBQVEsRUFBRSxLQUFLLDhCQUE4QixDQUFDLENBQUM7UUFDbEUsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsNkNBQTZDLEVBQUUsR0FBRyxFQUFFO1lBQ3JELE1BQU0sS0FBSyxHQUFHLElBQUksYUFBSyxFQUFFLENBQUM7WUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSxpQkFBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDekMsTUFBTSxLQUFLLEdBQUcsSUFBSSxpQkFBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDekMsTUFBTSxLQUFLLEdBQUcsSUFBSSxpQkFBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDekMsTUFBTSxLQUFLLEdBQUcsSUFBSSxpQkFBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDekMsTUFBTSxLQUFLLEdBQUcsSUFBSSxpQkFBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDekMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QixLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QixLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRXZCLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVCLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVCLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVCLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRTVCLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxJQUFBLGdCQUFNLEVBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7UUFDcEIsRUFBRSxDQUFDLHVDQUF1QyxFQUFFLEdBQUcsRUFBRTtZQUMvQyxNQUFNLEtBQUssR0FBRyxJQUFJLGFBQUssRUFBRSxDQUFDO1lBQzFCLE1BQU0sS0FBSyxHQUFHLElBQUksaUJBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sS0FBSyxHQUFHLElBQUksaUJBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sS0FBSyxHQUFHLElBQUksaUJBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QixLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM3QixJQUFBLGdCQUFNLEVBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEdBQUcsRUFBRTtZQUN0RCxNQUFNLEtBQUssR0FBRyxJQUFJLGFBQUssRUFBRSxDQUFDO1lBQzFCLE1BQU0sS0FBSyxHQUFHLElBQUksaUJBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sS0FBSyxHQUFHLElBQUksaUJBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sS0FBSyxHQUFHLElBQUksaUJBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sS0FBSyxHQUFHLElBQUksaUJBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sS0FBSyxHQUFHLElBQUksaUJBQVMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QixLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZCLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN2QixLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM1QixLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM1QixLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM1QixLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM1QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDN0IsZ0JBQU0sQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFO2dCQUM5QixLQUFLO2dCQUNMLEtBQUs7Z0JBQ0wsS0FBSztnQkFDTCxLQUFLO2dCQUNMLEtBQUs7YUFDTixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMifQ==
|