From 5a4b9a3f3a9114820b74da5f72d69ad9666281ff Mon Sep 17 00:00:00 2001 From: Leonardo Cunha Date: Tue, 2 Dec 2025 09:58:10 -0300 Subject: [PATCH 01/22] feat [wip]: creat find deps msg --- src/Traverse.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Traverse.ts b/src/Traverse.ts index f7943a1..5e21a77 100644 --- a/src/Traverse.ts +++ b/src/Traverse.ts @@ -25,7 +25,11 @@ function Traverse(this: any, options: TraverseOptionsFull) { ('string' === typeof options.canon.name ? options.canon.name : '-') seneca.fix('sys:traverse') - // .message('find:deps', msgFindDeps) + .message('find:deps', msgFindDeps) + + async function msgFindDeps(this: any, msg: any) { + const seneca = this + } } // Default options. From 907f7d81fb24f9595a3cb5c7752038634989a82f Mon Sep 17 00:00:00 2001 From: Leonardo Cunha Date: Tue, 2 Dec 2025 20:19:11 -0300 Subject: [PATCH 02/22] test: create init test for find deps --- dist-test/Traverse.test.js | 51 +++++++++++++++++++++++++++++++ dist-test/Traverse.test.js.map | 2 +- dist/Traverse.d.ts | 6 ++++ dist/Traverse.d.ts.map | 2 +- dist/Traverse.js | 19 ++++++++++-- dist/Traverse.js.map | 2 +- src/Traverse.ts | 25 ++++++++++++++++ test/Traverse.test.ts | 55 ++++++++++++++++++++++++++++++++++ 8 files changed, 157 insertions(+), 5 deletions(-) diff --git a/dist-test/Traverse.test.js b/dist-test/Traverse.test.js index f7720c3..f25a017 100644 --- a/dist-test/Traverse.test.js +++ b/dist-test/Traverse.test.js @@ -22,5 +22,56 @@ const __2 = __importDefault(require("..")); await seneca.ready(); (0, code_1.expect)(seneca.find_plugin('Traverse')).exist(); }); + (0, node_test_1.test)('find-deps', async () => { + const seneca = (0, seneca_1.default)({ legacy: false }) + .test() + .use('promisify') + .use('entity') + .use(__2.default, { + relations: { + parental: [ + ['foo/bar2', 'foo/bar3'], + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + ['foo/bar3', 'foo/bar6'], + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + ['foo/bar0', 'foo/zed0'], + ['foo/zed0', 'foo/zed1'], + ['foo/zed1', 'foo/zed2'], + ['bar/baz0', 'bar/baz1'], + ['qux/test', 'qux/prod'], + ['foo/bar2', 'foo/bar9'], + ['foo/bar6', 'foo/bar10'], + ['foo/bar7', 'foo/bar11'], + ] + } + }); + await seneca.ready(); + const result = await seneca.post('sys:traverse,find:deps'); + // console.log('find deps result ', sortedDepsList) + (0, code_1.expect)(result.deps).equal([ + // Level 0 + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar0', 'foo/zed0'], + // Level 1 + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + ['foo/bar2', 'foo/bar3'], + ['foo/bar2', 'foo/bar9'], + ['foo/zed0', 'foo/zed1'], + // Level 2 + ['foo/bar3', 'foo/bar6'], + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + ['foo/zed1', 'foo/zed2'], + // Level 3 + ['foo/bar6', 'foo/bar10'], + ['foo/bar7', 'foo/bar11'], + ]); + }); }); //# sourceMappingURL=Traverse.test.js.map \ No newline at end of file diff --git a/dist-test/Traverse.test.js.map b/dist-test/Traverse.test.js.map index d8ff3bc..b3cccbd 100644 --- a/dist-test/Traverse.test.js.map +++ b/dist-test/Traverse.test.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":";AAAA,gEAAgE;;;;;AAEhE,yCAA0C;AAC1C,qCAAmC;AAEnC,oDAA2B;AAC3B,8CAA8C;AAC9C,8CAA8C;AAE9C,2CAA4B;AAC5B,2CAAyB;AAEzB,IAAA,oBAAQ,EAAC,UAAU,EAAE,GAAG,EAAE;IACxB,IAAA,gBAAI,EAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC7B,IAAA,aAAM,EAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAA;QAE3B,MAAM,MAAM,GAAG,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;aACrC,IAAI,EAAE;aACN,GAAG,CAAC,WAAW,CAAC;aAChB,GAAG,CAAC,QAAQ,CAAC;aACb,GAAG,CAAC,WAAQ,CAAC,CAAA;QAEhB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,IAAA,aAAM,EAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;IAChD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"} \ No newline at end of file +{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/Traverse.d.ts b/dist/Traverse.d.ts index 0a5227a..291b6fd 100644 --- a/dist/Traverse.d.ts +++ b/dist/Traverse.d.ts @@ -1,5 +1,11 @@ +type Entity = string; +type Relation = [Entity, Entity]; +type Parental = Relation[]; type TraverseOptionsFull = { debug: boolean; + relations: { + parental: Parental; + }; }; export type TraverseOptions = Partial; declare function Traverse(this: any, options: TraverseOptionsFull): void; diff --git a/dist/Traverse.d.ts.map b/dist/Traverse.d.ts.map index 348a22b..3f953c7 100644 --- a/dist/Traverse.d.ts.map +++ b/dist/Traverse.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAEA,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAOxD;AAUD,eAAe,QAAQ,CAAA"} \ No newline at end of file +{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAEA,KAAK,MAAM,GAAG,MAAM,CAAA;AAEpB,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEhC,KAAK,QAAQ,GAAG,QAAQ,EAAE,CAAA;AAE1B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAmBxD;AAkBD,eAAe,QAAQ,CAAA"} \ No newline at end of file diff --git a/dist/Traverse.js b/dist/Traverse.js index 092ba7a..4648ac3 100644 --- a/dist/Traverse.js +++ b/dist/Traverse.js @@ -4,13 +4,28 @@ Object.defineProperty(exports, "__esModule", { value: true }); function Traverse(options) { const seneca = this; const { Default } = seneca.valid; - seneca.fix('sys:traverse'); - // .message('find:deps', msgFindDeps) + seneca.fix('sys:traverse') + .message('find:deps', msgFindDeps); + async function msgFindDeps(msg) { + const seneca = this; + // console.log('nodes ', options.relations.parental) + return { + ok: true, deps: [] + }; + } } // Default options. const defaults = { // TODO: Enable debug logging debug: false, + relations: { + parental: [ + // TODO: define standard relations + // ['sys/user', 'sys/login'], + // ['ledger/book', 'ledger/credit'], + // ['ledger/book', 'ledger/debit'] + ] + } }; Object.assign(Traverse, { defaults }); exports.default = Traverse; diff --git a/dist/Traverse.js.map b/dist/Traverse.js.map index 3d3101d..7b15474 100644 --- a/dist/Traverse.js.map +++ b/dist/Traverse.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":";AAAA,gEAAgE;;AAQhE,SAAS,QAAQ,CAAY,OAA4B;IACvD,MAAM,MAAM,GAAQ,IAAI,CAAA;IAExB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,CAAA;IAEhC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IAC1B,qCAAqC;AACvC,CAAC;AAED,mBAAmB;AACnB,MAAM,QAAQ,GAAwB;IACpC,6BAA6B;IAC7B,KAAK,EAAE,KAAK;CACb,CAAA;AAED,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;AAErC,kBAAe,QAAQ,CAAA;AAEvB,IAAI,WAAW,KAAK,OAAO,MAAM,EAAE,CAAC;IAClC,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAA;AAC3B,CAAC"} \ No newline at end of file +{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":";AAAA,gEAAgE;;AAiBhE,SAAS,QAAQ,CAAY,OAA4B;IACvD,MAAM,MAAM,GAAQ,IAAI,CAAA;IAExB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,CAAA;IAEhC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;SACvB,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;IAEpC,KAAK,UAAU,WAAW,CAAY,GAAQ;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAA;QAEnB,oDAAoD;QAGpD,OAAO;YACL,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;SACnB,CAAA;IAEH,CAAC;AACH,CAAC;AAED,mBAAmB;AACnB,MAAM,QAAQ,GAAwB;IACpC,6BAA6B;IAC7B,KAAK,EAAE,KAAK;IACZ,SAAS,EAAE;QACT,QAAQ,EAAE;QACR,kCAAkC;QAClC,6BAA6B;QAC7B,oCAAoC;QACpC,kCAAkC;SACnC;KACF;CACF,CAAA;AAED,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;AAErC,kBAAe,QAAQ,CAAA;AAEvB,IAAI,WAAW,KAAK,OAAO,MAAM,EAAE,CAAC;IAClC,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAA;AAC3B,CAAC"} \ No newline at end of file diff --git a/src/Traverse.ts b/src/Traverse.ts index 714ed2e..5aa2639 100644 --- a/src/Traverse.ts +++ b/src/Traverse.ts @@ -1,7 +1,16 @@ /* Copyright © 2025 Seneca Project Contributors, MIT License. */ +type Entity = string + +type Relation = [Entity, Entity] + +type Parental = Relation[] + type TraverseOptionsFull = { debug: boolean + relations: { + parental: Parental + } } export type TraverseOptions = Partial @@ -16,6 +25,14 @@ function Traverse(this: any, options: TraverseOptionsFull) { async function msgFindDeps(this: any, msg: any) { const seneca = this + + // console.log('nodes ', options.relations.parental) + + + return { + ok: true, deps: [] + } + } } @@ -23,6 +40,14 @@ function Traverse(this: any, options: TraverseOptionsFull) { const defaults: TraverseOptionsFull = { // TODO: Enable debug logging debug: false, + relations: { + parental: [ + // TODO: define standard relations + // ['sys/user', 'sys/login'], + // ['ledger/book', 'ledger/credit'], + // ['ledger/book', 'ledger/debit'] + ] + } } Object.assign(Traverse, { defaults }) diff --git a/test/Traverse.test.ts b/test/Traverse.test.ts index 1fc2f5d..9259c1d 100644 --- a/test/Traverse.test.ts +++ b/test/Traverse.test.ts @@ -24,4 +24,59 @@ describe('Traverse', () => { expect(seneca.find_plugin('Traverse')).exist() }) + + test('find-deps', async () => { + const seneca = Seneca({ legacy: false }) + .test() + .use('promisify') + .use('entity') + .use(Traverse, { + relations: { + parental: [ + ['foo/bar2', 'foo/bar3'], + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + ['foo/bar3', 'foo/bar6'], + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + ['foo/bar0', 'foo/zed0'], + ['foo/zed0', 'foo/zed1'], + ['foo/zed1', 'foo/zed2'], + ['bar/baz0', 'bar/baz1'], + ['qux/test', 'qux/prod'], + ['foo/bar2', 'foo/bar9'], + ['foo/bar6', 'foo/bar10'], + ['foo/bar7', 'foo/bar11'], + ] + } + }) + + await seneca.ready() + + const result = await seneca.post('sys:traverse,find:deps') + // console.log('find deps result ', sortedDepsList) + + expect(result.deps).equal([ + // Level 0 + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar0', 'foo/zed0'], + // Level 1 + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + ['foo/bar2', 'foo/bar3'], + ['foo/bar2', 'foo/bar9'], + ['foo/zed0', 'foo/zed1'], + // Level 2 + ['foo/bar3', 'foo/bar6'], + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + ['foo/zed1', 'foo/zed2'], + // Level 3 + ['foo/bar6', 'foo/bar10'], + ['foo/bar7', 'foo/bar11'], + ]) + }) }) From f14d1917728165ef18a94873d654765eecc0c331 Mon Sep 17 00:00:00 2001 From: Leonardo Cunha Date: Wed, 3 Dec 2025 11:12:04 -0300 Subject: [PATCH 03/22] feat [wip]: update find deps to use classical bfs algorithm --- dist-test/Traverse.test.js | 1 + dist-test/Traverse.test.js.map | 2 +- dist/Traverse.d.ts | 1 + dist/Traverse.d.ts.map | 2 +- dist/Traverse.js | 40 ++++++++++++++++++++-- dist/Traverse.js.map | 2 +- src/Traverse.ts | 61 +++++++++++++++++++++++++++++----- test/Traverse.test.ts | 5 +-- 8 files changed, 97 insertions(+), 17 deletions(-) diff --git a/dist-test/Traverse.test.js b/dist-test/Traverse.test.js index f25a017..0000d43 100644 --- a/dist-test/Traverse.test.js +++ b/dist-test/Traverse.test.js @@ -28,6 +28,7 @@ const __2 = __importDefault(require("..")); .use('promisify') .use('entity') .use(__2.default, { + rootEntity: 'foo/bar0', relations: { parental: [ ['foo/bar2', 'foo/bar3'], diff --git a/dist-test/Traverse.test.js.map b/dist-test/Traverse.test.js.map index b3cccbd..caf11b1 100644 --- a/dist-test/Traverse.test.js.map +++ b/dist-test/Traverse.test.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/Traverse.d.ts b/dist/Traverse.d.ts index 291b6fd..9d8d182 100644 --- a/dist/Traverse.d.ts +++ b/dist/Traverse.d.ts @@ -3,6 +3,7 @@ type Relation = [Entity, Entity]; type Parental = Relation[]; type TraverseOptionsFull = { debug: boolean; + rootEntity: Entity; relations: { parental: Parental; }; diff --git a/dist/Traverse.d.ts.map b/dist/Traverse.d.ts.map index 3f953c7..67770af 100644 --- a/dist/Traverse.d.ts.map +++ b/dist/Traverse.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAEA,KAAK,MAAM,GAAG,MAAM,CAAA;AAEpB,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEhC,KAAK,QAAQ,GAAG,QAAQ,EAAE,CAAA;AAE1B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAmBxD;AAkBD,eAAe,QAAQ,CAAA"} \ No newline at end of file +{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAEA,KAAK,MAAM,GAAG,MAAM,CAAA;AAEpB,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEhC,KAAK,QAAQ,GAAG,QAAQ,EAAE,CAAA;AAE1B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAyDxD;AAoBD,eAAe,QAAQ,CAAA"} \ No newline at end of file diff --git a/dist/Traverse.js b/dist/Traverse.js index 4648ac3..aa0bd8f 100644 --- a/dist/Traverse.js +++ b/dist/Traverse.js @@ -6,11 +6,43 @@ function Traverse(options) { const { Default } = seneca.valid; seneca.fix('sys:traverse') .message('find:deps', msgFindDeps); + // Returns the sorted entity pairs, starting from a given entity. + // In breadth-first order, sorting first by level, then alphabetically in each level. async function msgFindDeps(msg) { - const seneca = this; - // console.log('nodes ', options.relations.parental) + // const seneca = this + const allRealtions = options.relations.parental; + const rootEntity = options.rootEntity; + const parentChildrenMap = new Map(); + const deps = []; + for (let [parent, child] of allRealtions) { + if (!parentChildrenMap.has(parent)) { + parentChildrenMap.set(parent, []); + } + const childrenList = parentChildrenMap.get(parent) || []; + childrenList.push(child); + parentChildrenMap.set(parent, childrenList); + } + const visitedEntitiesSet = new Set(); + const entitiesToProcess = []; + visitedEntitiesSet.add(rootEntity); + entitiesToProcess.push(rootEntity); + while (entitiesToProcess.length > 0) { + const entity = entitiesToProcess.shift(); + const entityChildren = parentChildrenMap.get(entity) || []; + entityChildren.sort(); + if (entityChildren.length === 0) { + continue; + } + entityChildren.forEach((child) => { + if (!visitedEntitiesSet.has(child)) { + deps.push([entity, child]); + visitedEntitiesSet.add(child); + entitiesToProcess.push(child); + } + }); + } return { - ok: true, deps: [] + ok: true, deps }; } } @@ -18,6 +50,8 @@ function Traverse(options) { const defaults = { // TODO: Enable debug logging debug: false, + // TODO: define root entity + rootEntity: '', relations: { parental: [ // TODO: define standard relations diff --git a/dist/Traverse.js.map b/dist/Traverse.js.map index 7b15474..f1c743b 100644 --- a/dist/Traverse.js.map +++ b/dist/Traverse.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":";AAAA,gEAAgE;;AAiBhE,SAAS,QAAQ,CAAY,OAA4B;IACvD,MAAM,MAAM,GAAQ,IAAI,CAAA;IAExB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,CAAA;IAEhC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;SACvB,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;IAEpC,KAAK,UAAU,WAAW,CAAY,GAAQ;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAA;QAEnB,oDAAoD;QAGpD,OAAO;YACL,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;SACnB,CAAA;IAEH,CAAC;AACH,CAAC;AAED,mBAAmB;AACnB,MAAM,QAAQ,GAAwB;IACpC,6BAA6B;IAC7B,KAAK,EAAE,KAAK;IACZ,SAAS,EAAE;QACT,QAAQ,EAAE;QACR,kCAAkC;QAClC,6BAA6B;QAC7B,oCAAoC;QACpC,kCAAkC;SACnC;KACF;CACF,CAAA;AAED,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;AAErC,kBAAe,QAAQ,CAAA;AAEvB,IAAI,WAAW,KAAK,OAAO,MAAM,EAAE,CAAC;IAClC,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAA;AAC3B,CAAC"} \ No newline at end of file +{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":";AAAA,gEAAgE;;AAkBhE,SAAS,QAAQ,CAAY,OAA4B;IACvD,MAAM,MAAM,GAAQ,IAAI,CAAA;IAExB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,CAAA;IAEhC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;SACvB,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;IAEpC,iEAAiE;IACjE,qFAAqF;IACrF,KAAK,UAAU,WAAW,CAAY,GAAQ;QAC5C,sBAAsB;QAEtB,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAA;QAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;QACrC,MAAM,iBAAiB,GAA0B,IAAI,GAAG,EAAE,CAAA;QAC1D,MAAM,IAAI,GAAe,EAAE,CAAA;QAE3B,KAAK,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,YAAY,EAAE,CAAC;YACzC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnC,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YACnC,CAAC;YACD,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YACxD,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACxB,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QAC7C,CAAC;QAED,MAAM,kBAAkB,GAAgB,IAAI,GAAG,EAAE,CAAA;QACjD,MAAM,iBAAiB,GAAa,EAAE,CAAA;QAEtC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAClC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAElC,OAAO,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,EAAG,CAAA;YACzC,MAAM,cAAc,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YAE1D,cAAc,CAAC,IAAI,EAAE,CAAA;YAErB,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChC,SAAQ;YACV,CAAC;YAED,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC/B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBACnC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;oBAC1B,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;oBAC7B,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC/B,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO;YACL,EAAE,EAAE,IAAI,EAAE,IAAI;SACf,CAAA;IAEH,CAAC;AACH,CAAC;AAED,mBAAmB;AACnB,MAAM,QAAQ,GAAwB;IACpC,6BAA6B;IAC7B,KAAK,EAAE,KAAK;IACZ,2BAA2B;IAC3B,UAAU,EAAE,EAAE;IACd,SAAS,EAAE;QACT,QAAQ,EAAE;QACR,kCAAkC;QAClC,6BAA6B;QAC7B,oCAAoC;QACpC,kCAAkC;SACnC;KACF;CACF,CAAA;AAED,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;AAErC,kBAAe,QAAQ,CAAA;AAEvB,IAAI,WAAW,KAAK,OAAO,MAAM,EAAE,CAAC;IAClC,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAA;AAC3B,CAAC"} \ No newline at end of file diff --git a/src/Traverse.ts b/src/Traverse.ts index 5aa2639..38128de 100644 --- a/src/Traverse.ts +++ b/src/Traverse.ts @@ -8,6 +8,7 @@ type Parental = Relation[] type TraverseOptionsFull = { debug: boolean + rootEntity: Entity relations: { parental: Parental } @@ -20,19 +21,59 @@ function Traverse(this: any, options: TraverseOptionsFull) { const { Default } = seneca.valid - seneca.fix('sys:traverse') - .message('find:deps', msgFindDeps) + seneca.fix('sys:traverse').message('find:deps', msgFindDeps) + + // Returns the sorted entity pairs, starting from a given entity. + // In breadth-first order, sorting first by level, then alphabetically in each level. + async function msgFindDeps( + this: any, + msg: any, + ): Promise<{ ok: boolean; deps: Relation[] }> { + // const seneca = this + + const allRealtions = options.relations.parental + const rootEntity = options.rootEntity + const parentChildrenMap: Map = new Map() + const deps: Relation[] = [] + + for (let [parent, child] of allRealtions) { + if (!parentChildrenMap.has(parent)) { + parentChildrenMap.set(parent, []) + } + const childrenList = parentChildrenMap.get(parent) || [] + childrenList.push(child) + parentChildrenMap.set(parent, childrenList) + } - async function msgFindDeps(this: any, msg: any) { - const seneca = this + const visitedEntitiesSet: Set = new Set() + const entitiesToProcess: Entity[] = [] - // console.log('nodes ', options.relations.parental) + visitedEntitiesSet.add(rootEntity) + entitiesToProcess.push(rootEntity) + while (entitiesToProcess.length > 0) { + const entity = entitiesToProcess.shift()! + const entityChildren = parentChildrenMap.get(entity) || [] - return { - ok: true, deps: [] + entityChildren.sort() + + if (entityChildren.length === 0) { + continue + } + + entityChildren.forEach((child) => { + if (!visitedEntitiesSet.has(child)) { + deps.push([entity, child]) + visitedEntitiesSet.add(child) + entitiesToProcess.push(child) + } + }) } + return { + ok: true, + deps, + } } } @@ -40,14 +81,16 @@ function Traverse(this: any, options: TraverseOptionsFull) { const defaults: TraverseOptionsFull = { // TODO: Enable debug logging debug: false, + // TODO: define root entity + rootEntity: '', relations: { parental: [ // TODO: define standard relations // ['sys/user', 'sys/login'], // ['ledger/book', 'ledger/credit'], // ['ledger/book', 'ledger/debit'] - ] - } + ], + }, } Object.assign(Traverse, { defaults }) diff --git a/test/Traverse.test.ts b/test/Traverse.test.ts index 9259c1d..9b8cdb5 100644 --- a/test/Traverse.test.ts +++ b/test/Traverse.test.ts @@ -31,6 +31,7 @@ describe('Traverse', () => { .use('promisify') .use('entity') .use(Traverse, { + rootEntity: 'foo/bar0', relations: { parental: [ ['foo/bar2', 'foo/bar3'], @@ -49,8 +50,8 @@ describe('Traverse', () => { ['foo/bar2', 'foo/bar9'], ['foo/bar6', 'foo/bar10'], ['foo/bar7', 'foo/bar11'], - ] - } + ], + }, }) await seneca.ready() From f33363798697e4633af5bb74763bba581be1edbf Mon Sep 17 00:00:00 2001 From: Leonardo Cunha Date: Wed, 3 Dec 2025 12:28:01 -0300 Subject: [PATCH 04/22] feat: update find deps to sort by level then alphabetically --- dist-test/Traverse.test.js | 4 ++-- dist/Traverse.d.ts.map | 2 +- dist/Traverse.js | 43 ++++++++++++++++++++------------------ dist/Traverse.js.map | 2 +- src/Traverse.ts | 36 ++++++++++++++++++------------- 5 files changed, 48 insertions(+), 39 deletions(-) diff --git a/dist-test/Traverse.test.js b/dist-test/Traverse.test.js index 0000d43..ec870c7 100644 --- a/dist-test/Traverse.test.js +++ b/dist-test/Traverse.test.js @@ -47,8 +47,8 @@ const __2 = __importDefault(require("..")); ['foo/bar2', 'foo/bar9'], ['foo/bar6', 'foo/bar10'], ['foo/bar7', 'foo/bar11'], - ] - } + ], + }, }); await seneca.ready(); const result = await seneca.post('sys:traverse,find:deps'); diff --git a/dist/Traverse.d.ts.map b/dist/Traverse.d.ts.map index 67770af..044828f 100644 --- a/dist/Traverse.d.ts.map +++ b/dist/Traverse.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAEA,KAAK,MAAM,GAAG,MAAM,CAAA;AAEpB,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEhC,KAAK,QAAQ,GAAG,QAAQ,EAAE,CAAA;AAE1B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAyDxD;AAoBD,eAAe,QAAQ,CAAA"} \ No newline at end of file +{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAEA,KAAK,MAAM,GAAG,MAAM,CAAA;AAEpB,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEhC,KAAK,QAAQ,GAAG,QAAQ,EAAE,CAAA;AAE1B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAiExD;AAoBD,eAAe,QAAQ,CAAA"} \ No newline at end of file diff --git a/dist/Traverse.js b/dist/Traverse.js index aa0bd8f..44fb84f 100644 --- a/dist/Traverse.js +++ b/dist/Traverse.js @@ -4,8 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); function Traverse(options) { const seneca = this; const { Default } = seneca.valid; - seneca.fix('sys:traverse') - .message('find:deps', msgFindDeps); + seneca.fix('sys:traverse').message('find:deps', msgFindDeps); // Returns the sorted entity pairs, starting from a given entity. // In breadth-first order, sorting first by level, then alphabetically in each level. async function msgFindDeps(msg) { @@ -23,26 +22,30 @@ function Traverse(options) { parentChildrenMap.set(parent, childrenList); } const visitedEntitiesSet = new Set(); - const entitiesToProcess = []; + let levelEntToProcess = []; visitedEntitiesSet.add(rootEntity); - entitiesToProcess.push(rootEntity); - while (entitiesToProcess.length > 0) { - const entity = entitiesToProcess.shift(); - const entityChildren = parentChildrenMap.get(entity) || []; - entityChildren.sort(); - if (entityChildren.length === 0) { - continue; - } - entityChildren.forEach((child) => { - if (!visitedEntitiesSet.has(child)) { - deps.push([entity, child]); - visitedEntitiesSet.add(child); - entitiesToProcess.push(child); + levelEntToProcess.push(rootEntity); + while (levelEntToProcess.length > 0) { + const nextLevel = []; + levelEntToProcess.sort(); + for (const parent of levelEntToProcess) { + const entityChildren = parentChildrenMap.get(parent)?.sort() || []; + if (entityChildren.length === 0) { + continue; + } + for (const child of entityChildren) { + if (!visitedEntitiesSet.has(child)) { + deps.push([parent, child]); + visitedEntitiesSet.add(child); + nextLevel.push(child); + } } - }); + } + levelEntToProcess = nextLevel; } return { - ok: true, deps + ok: true, + deps, }; } } @@ -58,8 +61,8 @@ const defaults = { // ['sys/user', 'sys/login'], // ['ledger/book', 'ledger/credit'], // ['ledger/book', 'ledger/debit'] - ] - } + ], + }, }; Object.assign(Traverse, { defaults }); exports.default = Traverse; diff --git a/dist/Traverse.js.map b/dist/Traverse.js.map index f1c743b..8c47b75 100644 --- a/dist/Traverse.js.map +++ b/dist/Traverse.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":";AAAA,gEAAgE;;AAkBhE,SAAS,QAAQ,CAAY,OAA4B;IACvD,MAAM,MAAM,GAAQ,IAAI,CAAA;IAExB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,CAAA;IAEhC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;SACvB,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;IAEpC,iEAAiE;IACjE,qFAAqF;IACrF,KAAK,UAAU,WAAW,CAAY,GAAQ;QAC5C,sBAAsB;QAEtB,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAA;QAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;QACrC,MAAM,iBAAiB,GAA0B,IAAI,GAAG,EAAE,CAAA;QAC1D,MAAM,IAAI,GAAe,EAAE,CAAA;QAE3B,KAAK,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,YAAY,EAAE,CAAC;YACzC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnC,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YACnC,CAAC;YACD,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YACxD,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACxB,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QAC7C,CAAC;QAED,MAAM,kBAAkB,GAAgB,IAAI,GAAG,EAAE,CAAA;QACjD,MAAM,iBAAiB,GAAa,EAAE,CAAA;QAEtC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAClC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAElC,OAAO,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,EAAG,CAAA;YACzC,MAAM,cAAc,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YAE1D,cAAc,CAAC,IAAI,EAAE,CAAA;YAErB,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChC,SAAQ;YACV,CAAC;YAED,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC/B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBACnC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;oBAC1B,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;oBAC7B,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC/B,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO;YACL,EAAE,EAAE,IAAI,EAAE,IAAI;SACf,CAAA;IAEH,CAAC;AACH,CAAC;AAED,mBAAmB;AACnB,MAAM,QAAQ,GAAwB;IACpC,6BAA6B;IAC7B,KAAK,EAAE,KAAK;IACZ,2BAA2B;IAC3B,UAAU,EAAE,EAAE;IACd,SAAS,EAAE;QACT,QAAQ,EAAE;QACR,kCAAkC;QAClC,6BAA6B;QAC7B,oCAAoC;QACpC,kCAAkC;SACnC;KACF;CACF,CAAA;AAED,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;AAErC,kBAAe,QAAQ,CAAA;AAEvB,IAAI,WAAW,KAAK,OAAO,MAAM,EAAE,CAAC;IAClC,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAA;AAC3B,CAAC"} \ No newline at end of file +{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/Traverse.ts b/src/Traverse.ts index 38128de..848cb29 100644 --- a/src/Traverse.ts +++ b/src/Traverse.ts @@ -40,34 +40,40 @@ function Traverse(this: any, options: TraverseOptionsFull) { if (!parentChildrenMap.has(parent)) { parentChildrenMap.set(parent, []) } + const childrenList = parentChildrenMap.get(parent) || [] childrenList.push(child) parentChildrenMap.set(parent, childrenList) } const visitedEntitiesSet: Set = new Set() - const entitiesToProcess: Entity[] = [] + let levelEntToProcess: Entity[] = [] visitedEntitiesSet.add(rootEntity) - entitiesToProcess.push(rootEntity) + levelEntToProcess.push(rootEntity) - while (entitiesToProcess.length > 0) { - const entity = entitiesToProcess.shift()! - const entityChildren = parentChildrenMap.get(entity) || [] + while (levelEntToProcess.length > 0) { + const nextLevel: Entity[] = [] - entityChildren.sort() + levelEntToProcess.sort() - if (entityChildren.length === 0) { - continue - } + for (const parent of levelEntToProcess) { + const entityChildren = parentChildrenMap.get(parent)?.sort() || [] + + if (entityChildren.length === 0) { + continue + } - entityChildren.forEach((child) => { - if (!visitedEntitiesSet.has(child)) { - deps.push([entity, child]) - visitedEntitiesSet.add(child) - entitiesToProcess.push(child) + for (const child of entityChildren) { + if (!visitedEntitiesSet.has(child)) { + deps.push([parent, child]) + visitedEntitiesSet.add(child) + nextLevel.push(child) + } } - }) + } + + levelEntToProcess = nextLevel } return { From 2542640920b4f5d4eebe58eea3403d4173c338fa Mon Sep 17 00:00:00 2001 From: Leonardo Cunha Date: Wed, 3 Dec 2025 21:45:11 -0300 Subject: [PATCH 05/22] test: refactor find-deps --- dist-test/Traverse.test.js | 1 - dist-test/Traverse.test.js.map | 2 +- test/Traverse.test.ts | 4 +++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/dist-test/Traverse.test.js b/dist-test/Traverse.test.js index ec870c7..819bcdd 100644 --- a/dist-test/Traverse.test.js +++ b/dist-test/Traverse.test.js @@ -52,7 +52,6 @@ const __2 = __importDefault(require("..")); }); await seneca.ready(); const result = await seneca.post('sys:traverse,find:deps'); - // console.log('find deps result ', sortedDepsList) (0, code_1.expect)(result.deps).equal([ // Level 0 ['foo/bar0', 'foo/bar1'], diff --git a/dist-test/Traverse.test.js.map b/dist-test/Traverse.test.js.map index caf11b1..ad6910c 100644 --- a/dist-test/Traverse.test.js.map +++ b/dist-test/Traverse.test.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/test/Traverse.test.ts b/test/Traverse.test.ts index 9b8cdb5..5aaf813 100644 --- a/test/Traverse.test.ts +++ b/test/Traverse.test.ts @@ -57,24 +57,26 @@ describe('Traverse', () => { await seneca.ready() const result = await seneca.post('sys:traverse,find:deps') - // console.log('find deps result ', sortedDepsList) expect(result.deps).equal([ // Level 0 ['foo/bar0', 'foo/bar1'], ['foo/bar0', 'foo/bar2'], ['foo/bar0', 'foo/zed0'], + // Level 1 ['foo/bar1', 'foo/bar4'], ['foo/bar1', 'foo/bar5'], ['foo/bar2', 'foo/bar3'], ['foo/bar2', 'foo/bar9'], ['foo/zed0', 'foo/zed1'], + // Level 2 ['foo/bar3', 'foo/bar6'], ['foo/bar4', 'foo/bar7'], ['foo/bar5', 'foo/bar8'], ['foo/zed1', 'foo/zed2'], + // Level 3 ['foo/bar6', 'foo/bar10'], ['foo/bar7', 'foo/bar11'], From 2218884464ba5ad42df4f285384e2662f59f9848 Mon Sep 17 00:00:00 2001 From: Leonardo Cunha Date: Thu, 4 Dec 2025 06:56:34 -0300 Subject: [PATCH 06/22] test: add more for find:deps msg --- dist-test/Traverse.test.js | 161 +++++++++++++++++++++++- dist-test/Traverse.test.js.map | 2 +- test/Traverse.test.ts | 220 ++++++++++++++++++++++++++++----- 3 files changed, 345 insertions(+), 38 deletions(-) diff --git a/dist-test/Traverse.test.js b/dist-test/Traverse.test.js index 819bcdd..cc72c0f 100644 --- a/dist-test/Traverse.test.js +++ b/dist-test/Traverse.test.js @@ -23,10 +23,7 @@ const __2 = __importDefault(require("..")); (0, code_1.expect)(seneca.find_plugin('Traverse')).exist(); }); (0, node_test_1.test)('find-deps', async () => { - const seneca = (0, seneca_1.default)({ legacy: false }) - .test() - .use('promisify') - .use('entity') + const seneca = makeSeneca() .use(__2.default, { rootEntity: 'foo/bar0', relations: { @@ -51,8 +48,8 @@ const __2 = __importDefault(require("..")); }, }); await seneca.ready(); - const result = await seneca.post('sys:traverse,find:deps'); - (0, code_1.expect)(result.deps).equal([ + const res = await seneca.post('sys:traverse,find:deps'); + (0, code_1.expect)(res.deps).equal([ // Level 0 ['foo/bar0', 'foo/bar1'], ['foo/bar0', 'foo/bar2'], @@ -64,6 +61,9 @@ const __2 = __importDefault(require("..")); ['foo/bar2', 'foo/bar9'], ['foo/zed0', 'foo/zed1'], // Level 2 + // Sort each level alphabetically. + // Thus, foo/bar3 should be listed first, + // although its parent is foo/bar2 ['foo/bar3', 'foo/bar6'], ['foo/bar4', 'foo/bar7'], ['foo/bar5', 'foo/bar8'], @@ -73,5 +73,154 @@ const __2 = __importDefault(require("..")); ['foo/bar7', 'foo/bar11'], ]); }); + (0, node_test_1.test)('find-deps-empty-list', async () => { + const seneca = makeSeneca() + .use(__2.default, { + rootEntity: 'foo/bar0', + relations: { + parental: [], + }, + }); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps'); + (0, code_1.expect)(res.deps).equal([]); + }); + (0, node_test_1.test)('find-deps-no-children', async () => { + const seneca = makeSeneca() + .use(__2.default, { + rootEntity: 'foo/bar0', + relations: { + parental: [ + ['foo/bar1', 'foo/bar2'], + ['foo/bar2', 'foo/bar3'], + ], + }, + }); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps'); + (0, code_1.expect)(res.deps).equal([]); + }); + (0, node_test_1.test)('find-deps-cycle', async () => { + const seneca = makeSeneca() + .use(__2.default, { + rootEntity: 'foo/bar0', + relations: { + parental: [ + ['foo/bar0', 'foo/bar1'], + ['foo/bar1', 'foo/bar2'], + // Cycle back to root + ['foo/bar2', 'foo/bar0'], + ], + }, + }); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps'); + // Should only traverse once, ignoring the cycle + (0, code_1.expect)(res.deps).equal([ + ['foo/bar0', 'foo/bar1'], + ['foo/bar1', 'foo/bar2'], + ]); + }); + (0, node_test_1.test)('find-deps-cycle-middle', async () => { + const seneca = makeSeneca() + .use(__2.default, { + rootEntity: 'foo/bar0', + relations: { + parental: [ + ['foo/bar0', 'foo/bar1'], + ['foo/bar1', 'foo/bar2'], + ['foo/bar2', 'foo/bar3'], + // Cycle bar1 -> bar2 -> bar3 -> bar1 + ['foo/bar3', 'foo/bar1'], + ['foo/bar2', 'foo/bar4'], + ], + }, + }); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps'); + // Each node visited only once despite cycle + (0, code_1.expect)(res.deps).equal([ + ['foo/bar0', 'foo/bar1'], + ['foo/bar1', 'foo/bar2'], + ['foo/bar2', 'foo/bar3'], + ['foo/bar2', 'foo/bar4'], + ]); + }); + (0, node_test_1.test)('find-deps-linear', async () => { + const seneca = makeSeneca() + .use(__2.default, { + rootEntity: 'foo/bar0', + relations: { + parental: [ + ['foo/bar0', 'foo/bar1'], + ['foo/bar1', 'foo/bar2'], + ['foo/bar2', 'foo/bar3'], + ['foo/bar3', 'foo/bar4'], + ], + }, + }); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps'); + (0, code_1.expect)(res.deps).equal([ + ['foo/bar0', 'foo/bar1'], + ['foo/bar1', 'foo/bar2'], + ['foo/bar2', 'foo/bar3'], + ['foo/bar3', 'foo/bar4'], + ]); + }); + (0, node_test_1.test)('find-deps-duplicate', async () => { + const seneca = makeSeneca() + .use(__2.default, { + rootEntity: 'foo/bar0', + relations: { + parental: [ + ['foo/bar0', 'foo/bar1'], + // Duplicate + ['foo/bar0', 'foo/bar1'], + ['foo/bar1', 'foo/bar2'], + // Duplicate + ['foo/bar1', 'foo/bar2'], + ], + }, + }); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps'); + (0, code_1.expect)(res.deps).equal([ + ['foo/bar0', 'foo/bar1'], + ['foo/bar1', 'foo/bar2'], + ]); + }); + (0, node_test_1.test)('find-deps-convergent', async () => { + const seneca = makeSeneca() + .use(__2.default, { + rootEntity: 'foo/bar0', + relations: { + parental: [ + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar1', 'foo/bar3'], + // bar3 reachable from two paths + ['foo/bar2', 'foo/bar3'], + ['foo/bar3', 'foo/bar4'], + ], + }, + }); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps'); + // bar3 should only appear once (first path wins) + (0, code_1.expect)(res.deps).equal([ + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar1', 'foo/bar3'], + ['foo/bar3', 'foo/bar4'], + ]); + }); }); +function makeSeneca(opts = {}) { + const seneca = (0, seneca_1.default)({ legacy: false }) + .test() + .use('promisify') + .use('entity'); + return seneca; +} //# sourceMappingURL=Traverse.test.js.map \ No newline at end of file diff --git a/dist-test/Traverse.test.js.map b/dist-test/Traverse.test.js.map index ad6910c..abed611 100644 --- a/dist-test/Traverse.test.js.map +++ b/dist-test/Traverse.test.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/test/Traverse.test.ts b/test/Traverse.test.ts index 5aaf813..1587b24 100644 --- a/test/Traverse.test.ts +++ b/test/Traverse.test.ts @@ -19,46 +19,40 @@ describe('Traverse', () => { .use('promisify') .use('entity') .use(Traverse) - await seneca.ready() expect(seneca.find_plugin('Traverse')).exist() }) test('find-deps', async () => { - const seneca = Seneca({ legacy: false }) - .test() - .use('promisify') - .use('entity') - .use(Traverse, { - rootEntity: 'foo/bar0', - relations: { - parental: [ - ['foo/bar2', 'foo/bar3'], - ['foo/bar0', 'foo/bar1'], - ['foo/bar0', 'foo/bar2'], - ['foo/bar1', 'foo/bar4'], - ['foo/bar1', 'foo/bar5'], - ['foo/bar3', 'foo/bar6'], - ['foo/bar4', 'foo/bar7'], - ['foo/bar5', 'foo/bar8'], - ['foo/bar0', 'foo/zed0'], - ['foo/zed0', 'foo/zed1'], - ['foo/zed1', 'foo/zed2'], - ['bar/baz0', 'bar/baz1'], - ['qux/test', 'qux/prod'], - ['foo/bar2', 'foo/bar9'], - ['foo/bar6', 'foo/bar10'], - ['foo/bar7', 'foo/bar11'], - ], - }, - }) - + const seneca = makeSeneca().use(Traverse, { + rootEntity: 'foo/bar0', + relations: { + parental: [ + ['foo/bar2', 'foo/bar3'], + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + ['foo/bar3', 'foo/bar6'], + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + ['foo/bar0', 'foo/zed0'], + ['foo/zed0', 'foo/zed1'], + ['foo/zed1', 'foo/zed2'], + ['bar/baz0', 'bar/baz1'], + ['qux/test', 'qux/prod'], + ['foo/bar2', 'foo/bar9'], + ['foo/bar6', 'foo/bar10'], + ['foo/bar7', 'foo/bar11'], + ], + }, + }) await seneca.ready() - const result = await seneca.post('sys:traverse,find:deps') + const res = await seneca.post('sys:traverse,find:deps') - expect(result.deps).equal([ + expect(res.deps).equal([ // Level 0 ['foo/bar0', 'foo/bar1'], ['foo/bar0', 'foo/bar2'], @@ -72,6 +66,9 @@ describe('Traverse', () => { ['foo/zed0', 'foo/zed1'], // Level 2 + // Sort each level alphabetically. + // Thus, foo/bar3 should be listed first, + // although its parent is foo/bar2 ['foo/bar3', 'foo/bar6'], ['foo/bar4', 'foo/bar7'], ['foo/bar5', 'foo/bar8'], @@ -82,4 +79,165 @@ describe('Traverse', () => { ['foo/bar7', 'foo/bar11'], ]) }) + + test('find-deps-empty-list', async () => { + const seneca = makeSeneca().use(Traverse, { + rootEntity: 'foo/bar0', + relations: { + parental: [], + }, + }) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps') + + expect(res.deps).equal([]) + }) + + test('find-deps-no-children', async () => { + const seneca = makeSeneca().use(Traverse, { + rootEntity: 'foo/bar0', + relations: { + parental: [ + ['foo/bar1', 'foo/bar2'], + ['foo/bar2', 'foo/bar3'], + ], + }, + }) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps') + + expect(res.deps).equal([]) + }) + + test('find-deps-cycle', async () => { + const seneca = makeSeneca().use(Traverse, { + rootEntity: 'foo/bar0', + relations: { + parental: [ + ['foo/bar0', 'foo/bar1'], + ['foo/bar1', 'foo/bar2'], + // Cycle back to root + ['foo/bar2', 'foo/bar0'], + ], + }, + }) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps') + + // Should only traverse once, ignoring the cycle + expect(res.deps).equal([ + ['foo/bar0', 'foo/bar1'], + ['foo/bar1', 'foo/bar2'], + ]) + }) + + test('find-deps-cycle-middle', async () => { + const seneca = makeSeneca().use(Traverse, { + rootEntity: 'foo/bar0', + relations: { + parental: [ + ['foo/bar0', 'foo/bar1'], + ['foo/bar1', 'foo/bar2'], + ['foo/bar2', 'foo/bar3'], + // Cycle bar1 -> bar2 -> bar3 -> bar1 + ['foo/bar3', 'foo/bar1'], + ['foo/bar2', 'foo/bar4'], + ], + }, + }) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps') + + // Each node visited only once despite cycle + expect(res.deps).equal([ + ['foo/bar0', 'foo/bar1'], + ['foo/bar1', 'foo/bar2'], + ['foo/bar2', 'foo/bar3'], + ['foo/bar2', 'foo/bar4'], + ]) + }) + + test('find-deps-linear', async () => { + const seneca = makeSeneca().use(Traverse, { + rootEntity: 'foo/bar0', + relations: { + parental: [ + ['foo/bar0', 'foo/bar1'], + ['foo/bar1', 'foo/bar2'], + ['foo/bar2', 'foo/bar3'], + ['foo/bar3', 'foo/bar4'], + ], + }, + }) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps') + + expect(res.deps).equal([ + ['foo/bar0', 'foo/bar1'], + ['foo/bar1', 'foo/bar2'], + ['foo/bar2', 'foo/bar3'], + ['foo/bar3', 'foo/bar4'], + ]) + }) + + test('find-deps-duplicate', async () => { + const seneca = makeSeneca().use(Traverse, { + rootEntity: 'foo/bar0', + relations: { + parental: [ + ['foo/bar0', 'foo/bar1'], + // Duplicate + ['foo/bar0', 'foo/bar1'], + ['foo/bar1', 'foo/bar2'], + // Duplicate + ['foo/bar1', 'foo/bar2'], + ], + }, + }) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps') + + expect(res.deps).equal([ + ['foo/bar0', 'foo/bar1'], + ['foo/bar1', 'foo/bar2'], + ]) + }) + + test('find-deps-convergent', async () => { + const seneca = makeSeneca().use(Traverse, { + rootEntity: 'foo/bar0', + relations: { + parental: [ + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar1', 'foo/bar3'], + // bar3 reachable from two paths + ['foo/bar2', 'foo/bar3'], + ['foo/bar3', 'foo/bar4'], + ], + }, + }) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps') + + // bar3 should only appear once (first path wins) + expect(res.deps).equal([ + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar1', 'foo/bar3'], + ['foo/bar3', 'foo/bar4'], + ]) + }) }) + +function makeSeneca(opts: any = {}) { + const seneca = Seneca({ legacy: false }).test().use('promisify').use('entity') + return seneca +} From 4fe7a30f8899faf4d995a42a886e448bb2162045 Mon Sep 17 00:00:00 2001 From: Leonardo Cunha Date: Thu, 4 Dec 2025 07:14:08 -0300 Subject: [PATCH 07/22] feat: allow client to define rootEntity --- dist-test/Traverse.test.js | 141 ++++++++++++++++++++++++--------- dist-test/Traverse.test.js.map | 2 +- dist/Traverse.d.ts.map | 2 +- dist/Traverse.js | 14 +--- dist/Traverse.js.map | 2 +- src/Traverse.ts | 21 +++-- test/Traverse.test.ts | 121 ++++++++++++++++++++++++---- 7 files changed, 227 insertions(+), 76 deletions(-) diff --git a/dist-test/Traverse.test.js b/dist-test/Traverse.test.js index cc72c0f..1e0676a 100644 --- a/dist-test/Traverse.test.js +++ b/dist-test/Traverse.test.js @@ -23,9 +23,7 @@ const __2 = __importDefault(require("..")); (0, code_1.expect)(seneca.find_plugin('Traverse')).exist(); }); (0, node_test_1.test)('find-deps', async () => { - const seneca = makeSeneca() - .use(__2.default, { - rootEntity: 'foo/bar0', + const seneca = makeSeneca().use(__2.default, { relations: { parental: [ ['foo/bar2', 'foo/bar3'], @@ -48,7 +46,9 @@ const __2 = __importDefault(require("..")); }, }); await seneca.ready(); - const res = await seneca.post('sys:traverse,find:deps'); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar0', + }); (0, code_1.expect)(res.deps).equal([ // Level 0 ['foo/bar0', 'foo/bar1'], @@ -74,21 +74,19 @@ const __2 = __importDefault(require("..")); ]); }); (0, node_test_1.test)('find-deps-empty-list', async () => { - const seneca = makeSeneca() - .use(__2.default, { - rootEntity: 'foo/bar0', + const seneca = makeSeneca().use(__2.default, { relations: { parental: [], }, }); await seneca.ready(); - const res = await seneca.post('sys:traverse,find:deps'); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar0', + }); (0, code_1.expect)(res.deps).equal([]); }); (0, node_test_1.test)('find-deps-no-children', async () => { - const seneca = makeSeneca() - .use(__2.default, { - rootEntity: 'foo/bar0', + const seneca = makeSeneca().use(__2.default, { relations: { parental: [ ['foo/bar1', 'foo/bar2'], @@ -97,13 +95,13 @@ const __2 = __importDefault(require("..")); }, }); await seneca.ready(); - const res = await seneca.post('sys:traverse,find:deps'); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar0', + }); (0, code_1.expect)(res.deps).equal([]); }); (0, node_test_1.test)('find-deps-cycle', async () => { - const seneca = makeSeneca() - .use(__2.default, { - rootEntity: 'foo/bar0', + const seneca = makeSeneca().use(__2.default, { relations: { parental: [ ['foo/bar0', 'foo/bar1'], @@ -114,7 +112,9 @@ const __2 = __importDefault(require("..")); }, }); await seneca.ready(); - const res = await seneca.post('sys:traverse,find:deps'); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar0', + }); // Should only traverse once, ignoring the cycle (0, code_1.expect)(res.deps).equal([ ['foo/bar0', 'foo/bar1'], @@ -122,9 +122,7 @@ const __2 = __importDefault(require("..")); ]); }); (0, node_test_1.test)('find-deps-cycle-middle', async () => { - const seneca = makeSeneca() - .use(__2.default, { - rootEntity: 'foo/bar0', + const seneca = makeSeneca().use(__2.default, { relations: { parental: [ ['foo/bar0', 'foo/bar1'], @@ -137,7 +135,9 @@ const __2 = __importDefault(require("..")); }, }); await seneca.ready(); - const res = await seneca.post('sys:traverse,find:deps'); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar0', + }); // Each node visited only once despite cycle (0, code_1.expect)(res.deps).equal([ ['foo/bar0', 'foo/bar1'], @@ -147,9 +147,7 @@ const __2 = __importDefault(require("..")); ]); }); (0, node_test_1.test)('find-deps-linear', async () => { - const seneca = makeSeneca() - .use(__2.default, { - rootEntity: 'foo/bar0', + const seneca = makeSeneca().use(__2.default, { relations: { parental: [ ['foo/bar0', 'foo/bar1'], @@ -160,7 +158,9 @@ const __2 = __importDefault(require("..")); }, }); await seneca.ready(); - const res = await seneca.post('sys:traverse,find:deps'); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar0', + }); (0, code_1.expect)(res.deps).equal([ ['foo/bar0', 'foo/bar1'], ['foo/bar1', 'foo/bar2'], @@ -169,9 +169,7 @@ const __2 = __importDefault(require("..")); ]); }); (0, node_test_1.test)('find-deps-duplicate', async () => { - const seneca = makeSeneca() - .use(__2.default, { - rootEntity: 'foo/bar0', + const seneca = makeSeneca().use(__2.default, { relations: { parental: [ ['foo/bar0', 'foo/bar1'], @@ -184,16 +182,16 @@ const __2 = __importDefault(require("..")); }, }); await seneca.ready(); - const res = await seneca.post('sys:traverse,find:deps'); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar0', + }); (0, code_1.expect)(res.deps).equal([ ['foo/bar0', 'foo/bar1'], ['foo/bar1', 'foo/bar2'], ]); }); (0, node_test_1.test)('find-deps-convergent', async () => { - const seneca = makeSeneca() - .use(__2.default, { - rootEntity: 'foo/bar0', + const seneca = makeSeneca().use(__2.default, { relations: { parental: [ ['foo/bar0', 'foo/bar1'], @@ -206,7 +204,9 @@ const __2 = __importDefault(require("..")); }, }); await seneca.ready(); - const res = await seneca.post('sys:traverse,find:deps'); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar0', + }); // bar3 should only appear once (first path wins) (0, code_1.expect)(res.deps).equal([ ['foo/bar0', 'foo/bar1'], @@ -215,12 +215,81 @@ const __2 = __importDefault(require("..")); ['foo/bar3', 'foo/bar4'], ]); }); + (0, node_test_1.test)('find-deps-l1', async () => { + const seneca = makeSeneca().use(__2.default, { + relations: { + parental: [ + ['foo/bar2', 'foo/bar3'], + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + ['foo/bar3', 'foo/bar6'], + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + ['foo/bar0', 'foo/zed0'], + ['foo/zed0', 'foo/zed1'], + ['foo/zed1', 'foo/zed2'], + ['bar/baz0', 'bar/baz1'], + ['qux/test', 'qux/prod'], + ['foo/bar2', 'foo/bar9'], + ['foo/bar6', 'foo/bar10'], + ['foo/bar7', 'foo/bar11'], + ], + }, + }); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar1', + }); + (0, code_1.expect)(res.deps).equal([ + // Level 0 + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + // Level 1 + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + // Level 2 + ['foo/bar7', 'foo/bar11'], + ]); + }); + (0, node_test_1.test)('find-deps-l2', async () => { + const seneca = makeSeneca().use(__2.default, { + relations: { + parental: [ + ['foo/bar2', 'foo/bar3'], + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + ['foo/bar3', 'foo/bar6'], + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + ['foo/bar0', 'foo/zed0'], + ['foo/zed0', 'foo/zed1'], + ['foo/zed1', 'foo/zed2'], + ['bar/baz0', 'bar/baz1'], + ['qux/test', 'qux/prod'], + ['foo/bar2', 'foo/bar9'], + ['foo/bar6', 'foo/bar10'], + ['foo/bar7', 'foo/bar11'], + ], + }, + }); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar3', + }); + (0, code_1.expect)(res.deps).equal([ + // Level 0 + ['foo/bar3', 'foo/bar6'], + // Level 1 + ['foo/bar6', 'foo/bar10'], + ]); + }); }); function makeSeneca(opts = {}) { - const seneca = (0, seneca_1.default)({ legacy: false }) - .test() - .use('promisify') - .use('entity'); + const seneca = (0, seneca_1.default)({ legacy: false }).test().use('promisify').use('entity'); return seneca; } //# sourceMappingURL=Traverse.test.js.map \ No newline at end of file diff --git a/dist-test/Traverse.test.js.map b/dist-test/Traverse.test.js.map index abed611..20c3b03 100644 --- a/dist-test/Traverse.test.js.map +++ b/dist-test/Traverse.test.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/Traverse.d.ts.map b/dist/Traverse.d.ts.map index 044828f..7418992 100644 --- a/dist/Traverse.d.ts.map +++ b/dist/Traverse.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAEA,KAAK,MAAM,GAAG,MAAM,CAAA;AAEpB,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEhC,KAAK,QAAQ,GAAG,QAAQ,EAAE,CAAA;AAE1B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAiExD;AAoBD,eAAe,QAAQ,CAAA"} \ No newline at end of file +{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAEA,KAAK,MAAM,GAAG,MAAM,CAAA;AAEpB,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEhC,KAAK,QAAQ,GAAG,QAAQ,EAAE,CAAA;AAE1B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAoExD;AAcD,eAAe,QAAQ,CAAA"} \ No newline at end of file diff --git a/dist/Traverse.js b/dist/Traverse.js index 44fb84f..d17026d 100644 --- a/dist/Traverse.js +++ b/dist/Traverse.js @@ -4,13 +4,13 @@ Object.defineProperty(exports, "__esModule", { value: true }); function Traverse(options) { const seneca = this; const { Default } = seneca.valid; - seneca.fix('sys:traverse').message('find:deps', msgFindDeps); + seneca.fix('sys:traverse').message('find:deps', { rootEntity: String }, msgFindDeps); // Returns the sorted entity pairs, starting from a given entity. // In breadth-first order, sorting first by level, then alphabetically in each level. async function msgFindDeps(msg) { // const seneca = this const allRealtions = options.relations.parental; - const rootEntity = options.rootEntity; + const rootEntity = msg.rootEntity || options.rootEntity; const parentChildrenMap = new Map(); const deps = []; for (let [parent, child] of allRealtions) { @@ -53,15 +53,9 @@ function Traverse(options) { const defaults = { // TODO: Enable debug logging debug: false, - // TODO: define root entity - rootEntity: '', + rootEntity: 'sys/user', relations: { - parental: [ - // TODO: define standard relations - // ['sys/user', 'sys/login'], - // ['ledger/book', 'ledger/credit'], - // ['ledger/book', 'ledger/debit'] - ], + parental: [], }, }; Object.assign(Traverse, { defaults }); diff --git a/dist/Traverse.js.map b/dist/Traverse.js.map index 8c47b75..04a8023 100644 --- a/dist/Traverse.js.map +++ b/dist/Traverse.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":";AAAA,gEAAgE;;AAkBhE,SAAS,QAAQ,CAAY,OAA4B;IACvD,MAAM,MAAM,GAAQ,IAAI,CAAA;IAExB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,CAAA;IAEhC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,WAAW,CAAC,CAAA;IAEpF,iEAAiE;IACjE,qFAAqF;IACrF,KAAK,UAAU,WAAW,CAExB,GAEC;QAED,sBAAsB;QAEtB,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAA;QAC/C,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAA;QAEvD,MAAM,iBAAiB,GAA0B,IAAI,GAAG,EAAE,CAAA;QAC1D,MAAM,IAAI,GAAe,EAAE,CAAA;QAE3B,KAAK,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,YAAY,EAAE,CAAC;YACzC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnC,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YACnC,CAAC;YAED,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YACxD,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACxB,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QAC7C,CAAC;QAED,MAAM,kBAAkB,GAAgB,IAAI,GAAG,EAAE,CAAA;QACjD,IAAI,iBAAiB,GAAa,EAAE,CAAA;QAEpC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAClC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAElC,OAAO,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,SAAS,GAAa,EAAE,CAAA;YAE9B,iBAAiB,CAAC,IAAI,EAAE,CAAA;YAExB,KAAK,MAAM,MAAM,IAAI,iBAAiB,EAAE,CAAC;gBACvC,MAAM,cAAc,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;gBAElE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAChC,SAAQ;gBACV,CAAC;gBAED,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;oBACnC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;wBACnC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;wBAC1B,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;wBAC7B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;oBACvB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,iBAAiB,GAAG,SAAS,CAAA;QAC/B,CAAC;QAED,OAAO;YACL,EAAE,EAAE,IAAI;YACR,IAAI;SACL,CAAA;IACH,CAAC;AACH,CAAC;AAED,mBAAmB;AACnB,MAAM,QAAQ,GAAwB;IACpC,6BAA6B;IAC7B,KAAK,EAAE,KAAK;IACZ,UAAU,EAAE,UAAU;IACtB,SAAS,EAAE;QACT,QAAQ,EAAE,EAAE;KACb;CACF,CAAA;AAED,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;AAErC,kBAAe,QAAQ,CAAA;AAEvB,IAAI,WAAW,KAAK,OAAO,MAAM,EAAE,CAAC;IAClC,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAA;AAC3B,CAAC"} \ No newline at end of file diff --git a/src/Traverse.ts b/src/Traverse.ts index 848cb29..84e1c0a 100644 --- a/src/Traverse.ts +++ b/src/Traverse.ts @@ -21,18 +21,23 @@ function Traverse(this: any, options: TraverseOptionsFull) { const { Default } = seneca.valid - seneca.fix('sys:traverse').message('find:deps', msgFindDeps) + seneca + .fix('sys:traverse') + .message('find:deps', { rootEntity: String }, msgFindDeps) // Returns the sorted entity pairs, starting from a given entity. // In breadth-first order, sorting first by level, then alphabetically in each level. async function msgFindDeps( this: any, - msg: any, + msg: { + rootEntity: Entity + }, ): Promise<{ ok: boolean; deps: Relation[] }> { // const seneca = this const allRealtions = options.relations.parental - const rootEntity = options.rootEntity + const rootEntity = msg.rootEntity || options.rootEntity + const parentChildrenMap: Map = new Map() const deps: Relation[] = [] @@ -87,15 +92,9 @@ function Traverse(this: any, options: TraverseOptionsFull) { const defaults: TraverseOptionsFull = { // TODO: Enable debug logging debug: false, - // TODO: define root entity - rootEntity: '', + rootEntity: 'sys/user', relations: { - parental: [ - // TODO: define standard relations - // ['sys/user', 'sys/login'], - // ['ledger/book', 'ledger/credit'], - // ['ledger/book', 'ledger/debit'] - ], + parental: [], }, } diff --git a/test/Traverse.test.ts b/test/Traverse.test.ts index 1587b24..9726316 100644 --- a/test/Traverse.test.ts +++ b/test/Traverse.test.ts @@ -26,7 +26,6 @@ describe('Traverse', () => { test('find-deps', async () => { const seneca = makeSeneca().use(Traverse, { - rootEntity: 'foo/bar0', relations: { parental: [ ['foo/bar2', 'foo/bar3'], @@ -50,7 +49,9 @@ describe('Traverse', () => { }) await seneca.ready() - const res = await seneca.post('sys:traverse,find:deps') + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar0', + }) expect(res.deps).equal([ // Level 0 @@ -82,21 +83,21 @@ describe('Traverse', () => { test('find-deps-empty-list', async () => { const seneca = makeSeneca().use(Traverse, { - rootEntity: 'foo/bar0', relations: { parental: [], }, }) await seneca.ready() - const res = await seneca.post('sys:traverse,find:deps') + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar0', + }) expect(res.deps).equal([]) }) test('find-deps-no-children', async () => { const seneca = makeSeneca().use(Traverse, { - rootEntity: 'foo/bar0', relations: { parental: [ ['foo/bar1', 'foo/bar2'], @@ -106,14 +107,15 @@ describe('Traverse', () => { }) await seneca.ready() - const res = await seneca.post('sys:traverse,find:deps') + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar0', + }) expect(res.deps).equal([]) }) test('find-deps-cycle', async () => { const seneca = makeSeneca().use(Traverse, { - rootEntity: 'foo/bar0', relations: { parental: [ ['foo/bar0', 'foo/bar1'], @@ -125,7 +127,9 @@ describe('Traverse', () => { }) await seneca.ready() - const res = await seneca.post('sys:traverse,find:deps') + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar0', + }) // Should only traverse once, ignoring the cycle expect(res.deps).equal([ @@ -136,7 +140,6 @@ describe('Traverse', () => { test('find-deps-cycle-middle', async () => { const seneca = makeSeneca().use(Traverse, { - rootEntity: 'foo/bar0', relations: { parental: [ ['foo/bar0', 'foo/bar1'], @@ -150,7 +153,9 @@ describe('Traverse', () => { }) await seneca.ready() - const res = await seneca.post('sys:traverse,find:deps') + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar0', + }) // Each node visited only once despite cycle expect(res.deps).equal([ @@ -163,7 +168,6 @@ describe('Traverse', () => { test('find-deps-linear', async () => { const seneca = makeSeneca().use(Traverse, { - rootEntity: 'foo/bar0', relations: { parental: [ ['foo/bar0', 'foo/bar1'], @@ -175,7 +179,9 @@ describe('Traverse', () => { }) await seneca.ready() - const res = await seneca.post('sys:traverse,find:deps') + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar0', + }) expect(res.deps).equal([ ['foo/bar0', 'foo/bar1'], @@ -187,7 +193,6 @@ describe('Traverse', () => { test('find-deps-duplicate', async () => { const seneca = makeSeneca().use(Traverse, { - rootEntity: 'foo/bar0', relations: { parental: [ ['foo/bar0', 'foo/bar1'], @@ -201,7 +206,9 @@ describe('Traverse', () => { }) await seneca.ready() - const res = await seneca.post('sys:traverse,find:deps') + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar0', + }) expect(res.deps).equal([ ['foo/bar0', 'foo/bar1'], @@ -211,7 +218,6 @@ describe('Traverse', () => { test('find-deps-convergent', async () => { const seneca = makeSeneca().use(Traverse, { - rootEntity: 'foo/bar0', relations: { parental: [ ['foo/bar0', 'foo/bar1'], @@ -225,7 +231,9 @@ describe('Traverse', () => { }) await seneca.ready() - const res = await seneca.post('sys:traverse,find:deps') + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar0', + }) // bar3 should only appear once (first path wins) expect(res.deps).equal([ @@ -235,6 +243,87 @@ describe('Traverse', () => { ['foo/bar3', 'foo/bar4'], ]) }) + + test('find-deps-l1', async () => { + const seneca = makeSeneca().use(Traverse, { + relations: { + parental: [ + ['foo/bar2', 'foo/bar3'], + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + ['foo/bar3', 'foo/bar6'], + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + ['foo/bar0', 'foo/zed0'], + ['foo/zed0', 'foo/zed1'], + ['foo/zed1', 'foo/zed2'], + ['bar/baz0', 'bar/baz1'], + ['qux/test', 'qux/prod'], + ['foo/bar2', 'foo/bar9'], + ['foo/bar6', 'foo/bar10'], + ['foo/bar7', 'foo/bar11'], + ], + }, + }) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar1', + }) + + expect(res.deps).equal([ + // Level 0 + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + + // Level 1 + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + + // Level 2 + ['foo/bar7', 'foo/bar11'], + ]) + }) + + test('find-deps-l2', async () => { + const seneca = makeSeneca().use(Traverse, { + relations: { + parental: [ + ['foo/bar2', 'foo/bar3'], + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + ['foo/bar3', 'foo/bar6'], + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + ['foo/bar0', 'foo/zed0'], + ['foo/zed0', 'foo/zed1'], + ['foo/zed1', 'foo/zed2'], + ['bar/baz0', 'bar/baz1'], + ['qux/test', 'qux/prod'], + ['foo/bar2', 'foo/bar9'], + ['foo/bar6', 'foo/bar10'], + ['foo/bar7', 'foo/bar11'], + ], + }, + }) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar3', + }) + + expect(res.deps).equal([ + // Level 0 + ['foo/bar3', 'foo/bar6'], + + // Level 1 + ['foo/bar6', 'foo/bar10'], + ]) + }) }) function makeSeneca(opts: any = {}) { From b2c6d4fe5cca20961eaa848f4519bdb229285ed1 Mon Sep 17 00:00:00 2001 From: Leonardo Cunha Date: Thu, 4 Dec 2025 07:22:07 -0300 Subject: [PATCH 08/22] test: add two-convergent and self-ref cases --- dist-test/Traverse.test.js | 50 ++++++++++++++++++++++++++++++ dist-test/Traverse.test.js.map | 2 +- dist/Traverse.d.ts.map | 2 +- dist/Traverse.js | 4 ++- dist/Traverse.js.map | 2 +- test/Traverse.test.ts | 56 ++++++++++++++++++++++++++++++++++ 6 files changed, 112 insertions(+), 4 deletions(-) diff --git a/dist-test/Traverse.test.js b/dist-test/Traverse.test.js index 1e0676a..1ebbffe 100644 --- a/dist-test/Traverse.test.js +++ b/dist-test/Traverse.test.js @@ -215,6 +215,56 @@ const __2 = __importDefault(require("..")); ['foo/bar3', 'foo/bar4'], ]); }); + (0, node_test_1.test)('find-deps-two-convergent', async () => { + const seneca = makeSeneca().use(__2.default, { + relations: { + parental: [ + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar0', 'foo/bar3'], + ['foo/bar1', 'foo/bar4'], + // bar4 from two parents + ['foo/bar2', 'foo/bar4'], + ['foo/bar3', 'foo/bar5'], + ['foo/bar4', 'foo/bar6'], + // bar6 from two parents at different levels + ['foo/bar5', 'foo/bar6'], + ], + }, + }); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar0', + }); + (0, code_1.expect)(res.deps).equal([ + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar0', 'foo/bar3'], + ['foo/bar1', 'foo/bar4'], + ['foo/bar3', 'foo/bar5'], + ['foo/bar4', 'foo/bar6'], + ]); + }); + (0, node_test_1.test)('find-deps-self-ref', async () => { + const seneca = makeSeneca().use(__2.default, { + relations: { + parental: [ + ['foo/bar0', 'foo/bar1'], + // Self loop + ['foo/bar1', 'foo/bar1'], + ['foo/bar1', 'foo/bar2'], + ], + }, + }); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar0', + }); + (0, code_1.expect)(res.deps).equal([ + ['foo/bar0', 'foo/bar1'], + ['foo/bar1', 'foo/bar2'], + ]); + }); (0, node_test_1.test)('find-deps-l1', async () => { const seneca = makeSeneca().use(__2.default, { relations: { diff --git a/dist-test/Traverse.test.js.map b/dist-test/Traverse.test.js.map index 20c3b03..4630dcc 100644 --- a/dist-test/Traverse.test.js.map +++ b/dist-test/Traverse.test.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/Traverse.d.ts.map b/dist/Traverse.d.ts.map index 7418992..6524b07 100644 --- a/dist/Traverse.d.ts.map +++ b/dist/Traverse.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAEA,KAAK,MAAM,GAAG,MAAM,CAAA;AAEpB,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEhC,KAAK,QAAQ,GAAG,QAAQ,EAAE,CAAA;AAE1B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAoExD;AAcD,eAAe,QAAQ,CAAA"} \ No newline at end of file +{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAEA,KAAK,MAAM,GAAG,MAAM,CAAA;AAEpB,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEhC,KAAK,QAAQ,GAAG,QAAQ,EAAE,CAAA;AAE1B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAsExD;AAcD,eAAe,QAAQ,CAAA"} \ No newline at end of file diff --git a/dist/Traverse.js b/dist/Traverse.js index d17026d..fd10222 100644 --- a/dist/Traverse.js +++ b/dist/Traverse.js @@ -4,7 +4,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); function Traverse(options) { const seneca = this; const { Default } = seneca.valid; - seneca.fix('sys:traverse').message('find:deps', { rootEntity: String }, msgFindDeps); + seneca + .fix('sys:traverse') + .message('find:deps', { rootEntity: String }, msgFindDeps); // Returns the sorted entity pairs, starting from a given entity. // In breadth-first order, sorting first by level, then alphabetically in each level. async function msgFindDeps(msg) { diff --git a/dist/Traverse.js.map b/dist/Traverse.js.map index 04a8023..56ff59f 100644 --- a/dist/Traverse.js.map +++ b/dist/Traverse.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/test/Traverse.test.ts b/test/Traverse.test.ts index 9726316..9f354f0 100644 --- a/test/Traverse.test.ts +++ b/test/Traverse.test.ts @@ -244,6 +244,62 @@ describe('Traverse', () => { ]) }) + test('find-deps-two-convergent', async () => { + const seneca = makeSeneca().use(Traverse, { + relations: { + parental: [ + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar0', 'foo/bar3'], + ['foo/bar1', 'foo/bar4'], + // bar4 from two parents + ['foo/bar2', 'foo/bar4'], + ['foo/bar3', 'foo/bar5'], + ['foo/bar4', 'foo/bar6'], + // bar6 from two parents at different levels + ['foo/bar5', 'foo/bar6'], + ], + }, + }) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar0', + }) + + expect(res.deps).equal([ + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar0', 'foo/bar3'], + ['foo/bar1', 'foo/bar4'], + ['foo/bar3', 'foo/bar5'], + ['foo/bar4', 'foo/bar6'], + ]) + }) + + test('find-deps-self-ref', async () => { + const seneca = makeSeneca().use(Traverse, { + relations: { + parental: [ + ['foo/bar0', 'foo/bar1'], + // Self loop + ['foo/bar1', 'foo/bar1'], + ['foo/bar1', 'foo/bar2'], + ], + }, + }) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar0', + }) + + expect(res.deps).equal([ + ['foo/bar0', 'foo/bar1'], + ['foo/bar1', 'foo/bar2'], + ]) + }) + test('find-deps-l1', async () => { const seneca = makeSeneca().use(Traverse, { relations: { From e591c1a0bb85b2fe339a5dfca830590d345ee0b2 Mon Sep 17 00:00:00 2001 From: Leonardo Cunha Date: Thu, 4 Dec 2025 09:33:36 -0300 Subject: [PATCH 09/22] feat: add gubu validation to find:deps --- dist-test/Traverse.test.js | 256 ++++++++++++++++++++++++++++++++ dist-test/Traverse.test.js.map | 2 +- dist/Traverse.d.ts.map | 2 +- dist/Traverse.js | 5 +- dist/Traverse.js.map | 2 +- package.json | 2 + src/Traverse.ts | 17 ++- test/Traverse.test.ts | 258 +++++++++++++++++++++++++++++++++ 8 files changed, 537 insertions(+), 7 deletions(-) diff --git a/dist-test/Traverse.test.js b/dist-test/Traverse.test.js index 1ebbffe..8409b72 100644 --- a/dist-test/Traverse.test.js +++ b/dist-test/Traverse.test.js @@ -49,6 +49,7 @@ const __2 = __importDefault(require("..")); const res = await seneca.post('sys:traverse,find:deps', { rootEntity: 'foo/bar0', }); + // console.log('RES', res) (0, code_1.expect)(res.deps).equal([ // Level 0 ['foo/bar0', 'foo/bar1'], @@ -83,6 +84,7 @@ const __2 = __importDefault(require("..")); const res = await seneca.post('sys:traverse,find:deps', { rootEntity: 'foo/bar0', }); + // console.log('RES', res) (0, code_1.expect)(res.deps).equal([]); }); (0, node_test_1.test)('find-deps-no-children', async () => { @@ -98,6 +100,7 @@ const __2 = __importDefault(require("..")); const res = await seneca.post('sys:traverse,find:deps', { rootEntity: 'foo/bar0', }); + // console.log('RES', res) (0, code_1.expect)(res.deps).equal([]); }); (0, node_test_1.test)('find-deps-cycle', async () => { @@ -115,6 +118,7 @@ const __2 = __importDefault(require("..")); const res = await seneca.post('sys:traverse,find:deps', { rootEntity: 'foo/bar0', }); + // console.log('RES', res) // Should only traverse once, ignoring the cycle (0, code_1.expect)(res.deps).equal([ ['foo/bar0', 'foo/bar1'], @@ -161,6 +165,7 @@ const __2 = __importDefault(require("..")); const res = await seneca.post('sys:traverse,find:deps', { rootEntity: 'foo/bar0', }); + // console.log('RES', res) (0, code_1.expect)(res.deps).equal([ ['foo/bar0', 'foo/bar1'], ['foo/bar1', 'foo/bar2'], @@ -207,6 +212,7 @@ const __2 = __importDefault(require("..")); const res = await seneca.post('sys:traverse,find:deps', { rootEntity: 'foo/bar0', }); + // console.log('RES', res) // bar3 should only appear once (first path wins) (0, code_1.expect)(res.deps).equal([ ['foo/bar0', 'foo/bar1'], @@ -260,6 +266,7 @@ const __2 = __importDefault(require("..")); const res = await seneca.post('sys:traverse,find:deps', { rootEntity: 'foo/bar0', }); + // console.log('RES', res) (0, code_1.expect)(res.deps).equal([ ['foo/bar0', 'foo/bar1'], ['foo/bar1', 'foo/bar2'], @@ -303,6 +310,103 @@ const __2 = __importDefault(require("..")); ['foo/bar7', 'foo/bar11'], ]); }); + // test('find-deps-l1-convergent', async () => { + // const seneca = makeSeneca().use(Traverse, { + // relations: { + // parental: [ + // ['foo/bar2', 'foo/bar3'], + // ['foo/bar0', 'foo/bar1'], + // ['foo/bar0', 'foo/bar2'], + // ['foo/bar1', 'foo/bar4'], + // ['foo/bar1', 'foo/bar5'], + // ['foo/bar3', 'foo/bar6'], + // ['foo/bar4', 'foo/bar7'], + // ['foo/bar5', 'foo/bar8'], + // ['foo/bar0', 'foo/zed0'], + // ['foo/zed0', 'foo/zed1'], + // ['foo/zed1', 'foo/zed2'], + // ['bar/baz0', 'bar/baz1'], + // ['qux/test', 'qux/prod'], + // ['foo/bar2', 'foo/bar9'], + // ['foo/bar6', 'foo/bar10'], + // ['foo/bar7', 'foo/bar11'], + // // Add convergent paths from bar1 + // ['foo/bar4', 'foo/bar12'], + // ['foo/bar5', 'foo/bar12'], // bar12 converges from bar4 and bar5 + // ['foo/bar12', 'foo/bar13'], + // ], + // }, + // }) + // await seneca.ready() + // + // const res = await seneca.post('sys:traverse,find:deps', { + // rootEntity: 'foo/bar1', + // }) + // + // expect(res.deps).equal([ + // // Level 0 + // ['foo/bar1', 'foo/bar4'], + // ['foo/bar1', 'foo/bar5'], + // + // // Level 1 + // ['foo/bar4', 'foo/bar7'], + // ['foo/bar4', 'foo/bar12'], + // ['foo/bar5', 'foo/bar8'], + // + // // Level 2 + // ['foo/bar7', 'foo/bar11'], + // ['foo/bar12', 'foo/bar13'], + // ]) + // }) + // + // test('find-deps-l1-cycle', async () => { + // const seneca = makeSeneca().use(Traverse, { + // relations: { + // parental: [ + // ['foo/bar2', 'foo/bar3'], + // ['foo/bar0', 'foo/bar1'], + // ['foo/bar0', 'foo/bar2'], + // ['foo/bar1', 'foo/bar4'], + // ['foo/bar1', 'foo/bar5'], + // ['foo/bar3', 'foo/bar6'], + // ['foo/bar4', 'foo/bar7'], + // ['foo/bar5', 'foo/bar8'], + // ['foo/bar0', 'foo/zed0'], + // ['foo/zed0', 'foo/zed1'], + // ['foo/zed1', 'foo/zed2'], + // ['bar/baz0', 'bar/baz1'], + // ['qux/test', 'qux/prod'], + // ['foo/bar2', 'foo/bar9'], + // ['foo/bar6', 'foo/bar10'], + // ['foo/bar7', 'foo/bar11'], + // // Add cycle back to bar1 + // ['foo/bar7', 'foo/bar1'], // Cycle: bar1 -> bar4 -> bar7 -> bar1 + // ['foo/bar8', 'foo/bar12'], + // ], + // }, + // }) + // await seneca.ready() + // + // const res = await seneca.post('sys:traverse,find:deps', { + // rootEntity: 'foo/bar1', + // }) + // + // // bar1 already visited, so cycle is ignored + // expect(res.deps).equal([ + // // Level 0 + // ['foo/bar1', 'foo/bar4'], + // ['foo/bar1', 'foo/bar5'], + // + // // Level 1 + // ['foo/bar4', 'foo/bar7'], + // ['foo/bar5', 'foo/bar8'], + // + // // Level 2 + // ['foo/bar7', 'foo/bar11'], + // ['foo/bar8', 'foo/bar12'], + // ]) + // }) + // (0, node_test_1.test)('find-deps-l2', async () => { const seneca = makeSeneca().use(__2.default, { relations: { @@ -330,6 +434,7 @@ const __2 = __importDefault(require("..")); const res = await seneca.post('sys:traverse,find:deps', { rootEntity: 'foo/bar3', }); + // console.log('RES', res) (0, code_1.expect)(res.deps).equal([ // Level 0 ['foo/bar3', 'foo/bar6'], @@ -337,6 +442,157 @@ const __2 = __importDefault(require("..")); ['foo/bar6', 'foo/bar10'], ]); }); + // test('find-deps-l2-convergent', async () => { + // const seneca = makeSeneca().use(Traverse, { + // relations: { + // parental: [ + // ['foo/bar2', 'foo/bar3'], + // ['foo/bar0', 'foo/bar1'], + // ['foo/bar0', 'foo/bar2'], + // ['foo/bar1', 'foo/bar4'], + // ['foo/bar1', 'foo/bar5'], + // ['foo/bar3', 'foo/bar6'], + // ['foo/bar4', 'foo/bar7'], + // ['foo/bar5', 'foo/bar8'], + // ['foo/bar0', 'foo/zed0'], + // ['foo/zed0', 'foo/zed1'], + // ['foo/zed1', 'foo/zed2'], + // ['bar/baz0', 'bar/baz1'], + // ['qux/test', 'qux/prod'], + // ['foo/bar2', 'foo/bar9'], + // ['foo/bar6', 'foo/bar10'], + // ['foo/bar7', 'foo/bar11'], + // // Add convergent paths from bar3 + // ['foo/bar3', 'foo/bar12'], + // ['foo/bar6', 'foo/bar13'], + // ['foo/bar10', 'foo/bar14'], + // ['foo/bar12', 'foo/bar14'], // bar14 converges from bar10 and bar12 + // ['foo/bar14', 'foo/bar15'], + // ], + // }, + // }) + // await seneca.ready() + // + // const res = await seneca.post('sys:traverse,find:deps', { + // rootEntity: 'foo/bar3', + // }) + // + // expect(res.deps).equal([ + // // Level 0 + // ['foo/bar3', 'foo/bar6'], + // ['foo/bar3', 'foo/bar12'], + // + // // Level 1 + // ['foo/bar6', 'foo/bar10'], + // ['foo/bar6', 'foo/bar13'], + // ['foo/bar12', 'foo/bar14'], + // + // // Level 2 + // ['foo/bar10', 'foo/bar14'], + // + // // Level 3 + // ['foo/bar14', 'foo/bar15'], + // ]) + // }) + // + // test('find-deps-l2-cycle', async () => { + // const seneca = makeSeneca().use(Traverse, { + // relations: { + // parental: [ + // ['foo/bar2', 'foo/bar3'], + // ['foo/bar0', 'foo/bar1'], + // ['foo/bar0', 'foo/bar2'], + // ['foo/bar1', 'foo/bar4'], + // ['foo/bar1', 'foo/bar5'], + // ['foo/bar3', 'foo/bar6'], + // ['foo/bar4', 'foo/bar7'], + // ['foo/bar5', 'foo/bar8'], + // ['foo/bar0', 'foo/zed0'], + // ['foo/zed0', 'foo/zed1'], + // ['foo/zed1', 'foo/zed2'], + // ['bar/baz0', 'bar/baz1'], + // ['qux/test', 'qux/prod'], + // ['foo/bar2', 'foo/bar9'], + // ['foo/bar6', 'foo/bar10'], + // ['foo/bar7', 'foo/bar11'], + // // Add cycle back to bar3 + // ['foo/bar10', 'foo/bar12'], + // ['foo/bar12', 'foo/bar3'], // Cycle: bar3 -> bar6 -> bar10 -> bar12 -> bar3 + // ['foo/bar10', 'foo/bar13'], + // ], + // }, + // }) + // await seneca.ready() + // + // const res = await seneca.post('sys:traverse,find:deps', { + // rootEntity: 'foo/bar3', + // }) + // + // // bar3 already visited, so cycle is ignored + // expect(res.deps).equal([ + // // Level 0 + // ['foo/bar3', 'foo/bar6'], + // + // // Level 1 + // ['foo/bar6', 'foo/bar10'], + // + // // Level 2 + // ['foo/bar10', 'foo/bar12'], + // ['foo/bar10', 'foo/bar13'], + // ]) + // }) + // + // test('find-deps-l2-multi-level-convergent', async () => { + // const seneca = makeSeneca().use(Traverse, { + // relations: { + // parental: [ + // ['foo/bar2', 'foo/bar3'], + // ['foo/bar0', 'foo/bar1'], + // ['foo/bar0', 'foo/bar2'], + // ['foo/bar1', 'foo/bar4'], + // ['foo/bar1', 'foo/bar5'], + // ['foo/bar3', 'foo/bar6'], + // ['foo/bar4', 'foo/bar7'], + // ['foo/bar5', 'foo/bar8'], + // ['foo/bar0', 'foo/zed0'], + // ['foo/zed0', 'foo/zed1'], + // ['foo/zed1', 'foo/zed2'], + // ['bar/baz0', 'bar/baz1'], + // ['qux/test', 'qux/prod'], + // ['foo/bar2', 'foo/bar9'], + // ['foo/bar6', 'foo/bar10'], + // ['foo/bar7', 'foo/bar11'], + // // Create diamond pattern from bar3 + // ['foo/bar3', 'foo/bar12'], + // ['foo/bar3', 'foo/bar13'], + // ['foo/bar12', 'foo/bar14'], + // ['foo/bar13', 'foo/bar14'], // Diamond converges at bar14 + // ['foo/bar6', 'foo/bar14'], // Third path to bar14 + // ['foo/bar14', 'foo/bar15'], + // ], + // }, + // }) + // await seneca.ready() + // + // const res = await seneca.post('sys:traverse,find:deps', { + // rootEntity: 'foo/bar3', + // }) + // + // // bar14 should appear via bar12 (first alphabetically among bar12, bar13) + // expect(res.deps).equal([ + // // Level 0 + // ['foo/bar3', 'foo/bar6'], + // ['foo/bar3', 'foo/bar12'], + // ['foo/bar3', 'foo/bar13'], + // + // // Level 1 + // ['foo/bar6', 'foo/bar10'], + // ['foo/bar12', 'foo/bar14'], + // + // // Level 2 + // ['foo/bar14', 'foo/bar15'], + // ]) + // }) }); function makeSeneca(opts = {}) { const seneca = (0, seneca_1.default)({ legacy: false }).test().use('promisify').use('entity'); diff --git a/dist-test/Traverse.test.js.map b/dist-test/Traverse.test.js.map index 4630dcc..34e582d 100644 --- a/dist-test/Traverse.test.js.map +++ b/dist-test/Traverse.test.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/Traverse.d.ts.map b/dist/Traverse.d.ts.map index 6524b07..0ec80c8 100644 --- a/dist/Traverse.d.ts.map +++ b/dist/Traverse.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAEA,KAAK,MAAM,GAAG,MAAM,CAAA;AAEpB,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEhC,KAAK,QAAQ,GAAG,QAAQ,EAAE,CAAA;AAE1B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAsExD;AAcD,eAAe,QAAQ,CAAA"} \ No newline at end of file +{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAIA,KAAK,MAAM,GAAG,MAAM,CAAA;AAEpB,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEhC,KAAK,QAAQ,GAAG,QAAQ,EAAE,CAAA;AAE1B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAyExD;AAcD,eAAe,QAAQ,CAAA"} \ No newline at end of file diff --git a/dist/Traverse.js b/dist/Traverse.js index fd10222..f60d428 100644 --- a/dist/Traverse.js +++ b/dist/Traverse.js @@ -1,17 +1,18 @@ "use strict"; /* Copyright © 2025 Seneca Project Contributors, MIT License. */ Object.defineProperty(exports, "__esModule", { value: true }); +const gubu_1 = require("gubu"); function Traverse(options) { const seneca = this; const { Default } = seneca.valid; seneca .fix('sys:traverse') - .message('find:deps', { rootEntity: String }, msgFindDeps); + .message('find:deps', { rootEntity: (0, gubu_1.Optional)(String), relations: (0, gubu_1.Skip)({ parental: [[String, String]] }) }, msgFindDeps); // Returns the sorted entity pairs, starting from a given entity. // In breadth-first order, sorting first by level, then alphabetically in each level. async function msgFindDeps(msg) { // const seneca = this - const allRealtions = options.relations.parental; + const allRealtions = msg.relations?.parental || options.relations.parental; const rootEntity = msg.rootEntity || options.rootEntity; const parentChildrenMap = new Map(); const deps = []; diff --git a/dist/Traverse.js.map b/dist/Traverse.js.map index 56ff59f..66bc76c 100644 --- a/dist/Traverse.js.map +++ b/dist/Traverse.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index f38e094..98507e0 100644 --- a/package.json +++ b/package.json @@ -42,12 +42,14 @@ "@seneca/doc": "^8.0.0", "@seneca/maintain": "^0.1.0", "@types/node": "^24.10.1", + "gubu": "^9.0.0", "prettier": "3.7.3", "seneca-msg-test": "^4.1.0", "typescript": "^5.9.3" }, "peerDependencies": { "@seneca/entity-util": ">=3", + "gubu": ">=9", "seneca": ">=3||>=4.0.0-rc2", "seneca-entity": ">=26", "seneca-promisify": ">=3" diff --git a/src/Traverse.ts b/src/Traverse.ts index 84e1c0a..41eca45 100644 --- a/src/Traverse.ts +++ b/src/Traverse.ts @@ -1,5 +1,7 @@ /* Copyright © 2025 Seneca Project Contributors, MIT License. */ +import { Optional, Skip } from 'gubu' + type Entity = string type Relation = [Entity, Entity] @@ -23,7 +25,14 @@ function Traverse(this: any, options: TraverseOptionsFull) { seneca .fix('sys:traverse') - .message('find:deps', { rootEntity: String }, msgFindDeps) + .message( + 'find:deps', + { + rootEntity: Optional(String), + relations: Skip({ parental: [[String, String]] }), + }, + msgFindDeps, + ) // Returns the sorted entity pairs, starting from a given entity. // In breadth-first order, sorting first by level, then alphabetically in each level. @@ -31,11 +40,15 @@ function Traverse(this: any, options: TraverseOptionsFull) { this: any, msg: { rootEntity: Entity + relations: { + parental: Parental + } }, ): Promise<{ ok: boolean; deps: Relation[] }> { // const seneca = this - const allRealtions = options.relations.parental + const allRealtions: Parental = + msg.relations?.parental || options.relations.parental const rootEntity = msg.rootEntity || options.rootEntity const parentChildrenMap: Map = new Map() diff --git a/test/Traverse.test.ts b/test/Traverse.test.ts index 9f354f0..a5e013e 100644 --- a/test/Traverse.test.ts +++ b/test/Traverse.test.ts @@ -52,6 +52,7 @@ describe('Traverse', () => { const res = await seneca.post('sys:traverse,find:deps', { rootEntity: 'foo/bar0', }) + // console.log('RES', res) expect(res.deps).equal([ // Level 0 @@ -92,6 +93,7 @@ describe('Traverse', () => { const res = await seneca.post('sys:traverse,find:deps', { rootEntity: 'foo/bar0', }) + // console.log('RES', res) expect(res.deps).equal([]) }) @@ -110,6 +112,7 @@ describe('Traverse', () => { const res = await seneca.post('sys:traverse,find:deps', { rootEntity: 'foo/bar0', }) + // console.log('RES', res) expect(res.deps).equal([]) }) @@ -130,6 +133,7 @@ describe('Traverse', () => { const res = await seneca.post('sys:traverse,find:deps', { rootEntity: 'foo/bar0', }) + // console.log('RES', res) // Should only traverse once, ignoring the cycle expect(res.deps).equal([ @@ -182,6 +186,7 @@ describe('Traverse', () => { const res = await seneca.post('sys:traverse,find:deps', { rootEntity: 'foo/bar0', }) + // console.log('RES', res) expect(res.deps).equal([ ['foo/bar0', 'foo/bar1'], @@ -234,6 +239,7 @@ describe('Traverse', () => { const res = await seneca.post('sys:traverse,find:deps', { rootEntity: 'foo/bar0', }) + // console.log('RES', res) // bar3 should only appear once (first path wins) expect(res.deps).equal([ @@ -293,6 +299,7 @@ describe('Traverse', () => { const res = await seneca.post('sys:traverse,find:deps', { rootEntity: 'foo/bar0', }) + // console.log('RES', res) expect(res.deps).equal([ ['foo/bar0', 'foo/bar1'], @@ -343,6 +350,104 @@ describe('Traverse', () => { ]) }) + // test('find-deps-l1-convergent', async () => { + // const seneca = makeSeneca().use(Traverse, { + // relations: { + // parental: [ + // ['foo/bar2', 'foo/bar3'], + // ['foo/bar0', 'foo/bar1'], + // ['foo/bar0', 'foo/bar2'], + // ['foo/bar1', 'foo/bar4'], + // ['foo/bar1', 'foo/bar5'], + // ['foo/bar3', 'foo/bar6'], + // ['foo/bar4', 'foo/bar7'], + // ['foo/bar5', 'foo/bar8'], + // ['foo/bar0', 'foo/zed0'], + // ['foo/zed0', 'foo/zed1'], + // ['foo/zed1', 'foo/zed2'], + // ['bar/baz0', 'bar/baz1'], + // ['qux/test', 'qux/prod'], + // ['foo/bar2', 'foo/bar9'], + // ['foo/bar6', 'foo/bar10'], + // ['foo/bar7', 'foo/bar11'], + // // Add convergent paths from bar1 + // ['foo/bar4', 'foo/bar12'], + // ['foo/bar5', 'foo/bar12'], // bar12 converges from bar4 and bar5 + // ['foo/bar12', 'foo/bar13'], + // ], + // }, + // }) + // await seneca.ready() + // + // const res = await seneca.post('sys:traverse,find:deps', { + // rootEntity: 'foo/bar1', + // }) + // + // expect(res.deps).equal([ + // // Level 0 + // ['foo/bar1', 'foo/bar4'], + // ['foo/bar1', 'foo/bar5'], + // + // // Level 1 + // ['foo/bar4', 'foo/bar7'], + // ['foo/bar4', 'foo/bar12'], + // ['foo/bar5', 'foo/bar8'], + // + // // Level 2 + // ['foo/bar7', 'foo/bar11'], + // ['foo/bar12', 'foo/bar13'], + // ]) + // }) + // + // test('find-deps-l1-cycle', async () => { + // const seneca = makeSeneca().use(Traverse, { + // relations: { + // parental: [ + // ['foo/bar2', 'foo/bar3'], + // ['foo/bar0', 'foo/bar1'], + // ['foo/bar0', 'foo/bar2'], + // ['foo/bar1', 'foo/bar4'], + // ['foo/bar1', 'foo/bar5'], + // ['foo/bar3', 'foo/bar6'], + // ['foo/bar4', 'foo/bar7'], + // ['foo/bar5', 'foo/bar8'], + // ['foo/bar0', 'foo/zed0'], + // ['foo/zed0', 'foo/zed1'], + // ['foo/zed1', 'foo/zed2'], + // ['bar/baz0', 'bar/baz1'], + // ['qux/test', 'qux/prod'], + // ['foo/bar2', 'foo/bar9'], + // ['foo/bar6', 'foo/bar10'], + // ['foo/bar7', 'foo/bar11'], + // // Add cycle back to bar1 + // ['foo/bar7', 'foo/bar1'], // Cycle: bar1 -> bar4 -> bar7 -> bar1 + // ['foo/bar8', 'foo/bar12'], + // ], + // }, + // }) + // await seneca.ready() + // + // const res = await seneca.post('sys:traverse,find:deps', { + // rootEntity: 'foo/bar1', + // }) + // + // // bar1 already visited, so cycle is ignored + // expect(res.deps).equal([ + // // Level 0 + // ['foo/bar1', 'foo/bar4'], + // ['foo/bar1', 'foo/bar5'], + // + // // Level 1 + // ['foo/bar4', 'foo/bar7'], + // ['foo/bar5', 'foo/bar8'], + // + // // Level 2 + // ['foo/bar7', 'foo/bar11'], + // ['foo/bar8', 'foo/bar12'], + // ]) + // }) + // + test('find-deps-l2', async () => { const seneca = makeSeneca().use(Traverse, { relations: { @@ -371,6 +476,7 @@ describe('Traverse', () => { const res = await seneca.post('sys:traverse,find:deps', { rootEntity: 'foo/bar3', }) + // console.log('RES', res) expect(res.deps).equal([ // Level 0 @@ -380,6 +486,158 @@ describe('Traverse', () => { ['foo/bar6', 'foo/bar10'], ]) }) + + // test('find-deps-l2-convergent', async () => { + // const seneca = makeSeneca().use(Traverse, { + // relations: { + // parental: [ + // ['foo/bar2', 'foo/bar3'], + // ['foo/bar0', 'foo/bar1'], + // ['foo/bar0', 'foo/bar2'], + // ['foo/bar1', 'foo/bar4'], + // ['foo/bar1', 'foo/bar5'], + // ['foo/bar3', 'foo/bar6'], + // ['foo/bar4', 'foo/bar7'], + // ['foo/bar5', 'foo/bar8'], + // ['foo/bar0', 'foo/zed0'], + // ['foo/zed0', 'foo/zed1'], + // ['foo/zed1', 'foo/zed2'], + // ['bar/baz0', 'bar/baz1'], + // ['qux/test', 'qux/prod'], + // ['foo/bar2', 'foo/bar9'], + // ['foo/bar6', 'foo/bar10'], + // ['foo/bar7', 'foo/bar11'], + // // Add convergent paths from bar3 + // ['foo/bar3', 'foo/bar12'], + // ['foo/bar6', 'foo/bar13'], + // ['foo/bar10', 'foo/bar14'], + // ['foo/bar12', 'foo/bar14'], // bar14 converges from bar10 and bar12 + // ['foo/bar14', 'foo/bar15'], + // ], + // }, + // }) + // await seneca.ready() + // + // const res = await seneca.post('sys:traverse,find:deps', { + // rootEntity: 'foo/bar3', + // }) + // + // expect(res.deps).equal([ + // // Level 0 + // ['foo/bar3', 'foo/bar6'], + // ['foo/bar3', 'foo/bar12'], + // + // // Level 1 + // ['foo/bar6', 'foo/bar10'], + // ['foo/bar6', 'foo/bar13'], + // ['foo/bar12', 'foo/bar14'], + // + // // Level 2 + // ['foo/bar10', 'foo/bar14'], + // + // // Level 3 + // ['foo/bar14', 'foo/bar15'], + // ]) + // }) + // + // test('find-deps-l2-cycle', async () => { + // const seneca = makeSeneca().use(Traverse, { + // relations: { + // parental: [ + // ['foo/bar2', 'foo/bar3'], + // ['foo/bar0', 'foo/bar1'], + // ['foo/bar0', 'foo/bar2'], + // ['foo/bar1', 'foo/bar4'], + // ['foo/bar1', 'foo/bar5'], + // ['foo/bar3', 'foo/bar6'], + // ['foo/bar4', 'foo/bar7'], + // ['foo/bar5', 'foo/bar8'], + // ['foo/bar0', 'foo/zed0'], + // ['foo/zed0', 'foo/zed1'], + // ['foo/zed1', 'foo/zed2'], + // ['bar/baz0', 'bar/baz1'], + // ['qux/test', 'qux/prod'], + // ['foo/bar2', 'foo/bar9'], + // ['foo/bar6', 'foo/bar10'], + // ['foo/bar7', 'foo/bar11'], + // // Add cycle back to bar3 + // ['foo/bar10', 'foo/bar12'], + // ['foo/bar12', 'foo/bar3'], // Cycle: bar3 -> bar6 -> bar10 -> bar12 -> bar3 + // ['foo/bar10', 'foo/bar13'], + // ], + // }, + // }) + // await seneca.ready() + // + // const res = await seneca.post('sys:traverse,find:deps', { + // rootEntity: 'foo/bar3', + // }) + // + // // bar3 already visited, so cycle is ignored + // expect(res.deps).equal([ + // // Level 0 + // ['foo/bar3', 'foo/bar6'], + // + // // Level 1 + // ['foo/bar6', 'foo/bar10'], + // + // // Level 2 + // ['foo/bar10', 'foo/bar12'], + // ['foo/bar10', 'foo/bar13'], + // ]) + // }) + // + // test('find-deps-l2-multi-level-convergent', async () => { + // const seneca = makeSeneca().use(Traverse, { + // relations: { + // parental: [ + // ['foo/bar2', 'foo/bar3'], + // ['foo/bar0', 'foo/bar1'], + // ['foo/bar0', 'foo/bar2'], + // ['foo/bar1', 'foo/bar4'], + // ['foo/bar1', 'foo/bar5'], + // ['foo/bar3', 'foo/bar6'], + // ['foo/bar4', 'foo/bar7'], + // ['foo/bar5', 'foo/bar8'], + // ['foo/bar0', 'foo/zed0'], + // ['foo/zed0', 'foo/zed1'], + // ['foo/zed1', 'foo/zed2'], + // ['bar/baz0', 'bar/baz1'], + // ['qux/test', 'qux/prod'], + // ['foo/bar2', 'foo/bar9'], + // ['foo/bar6', 'foo/bar10'], + // ['foo/bar7', 'foo/bar11'], + // // Create diamond pattern from bar3 + // ['foo/bar3', 'foo/bar12'], + // ['foo/bar3', 'foo/bar13'], + // ['foo/bar12', 'foo/bar14'], + // ['foo/bar13', 'foo/bar14'], // Diamond converges at bar14 + // ['foo/bar6', 'foo/bar14'], // Third path to bar14 + // ['foo/bar14', 'foo/bar15'], + // ], + // }, + // }) + // await seneca.ready() + // + // const res = await seneca.post('sys:traverse,find:deps', { + // rootEntity: 'foo/bar3', + // }) + // + // // bar14 should appear via bar12 (first alphabetically among bar12, bar13) + // expect(res.deps).equal([ + // // Level 0 + // ['foo/bar3', 'foo/bar6'], + // ['foo/bar3', 'foo/bar12'], + // ['foo/bar3', 'foo/bar13'], + // + // // Level 1 + // ['foo/bar6', 'foo/bar10'], + // ['foo/bar12', 'foo/bar14'], + // + // // Level 2 + // ['foo/bar14', 'foo/bar15'], + // ]) + // }) }) function makeSeneca(opts: any = {}) { From d2e4e8dd3a8e26ddf9c68453806d8f5dbf6338ce Mon Sep 17 00:00:00 2001 From: Leonardo Cunha Date: Thu, 4 Dec 2025 09:58:46 -0300 Subject: [PATCH 10/22] test: extend edgcases for find:deps --- dist-test/Traverse.test.js | 107 ++++++++++++++++++++++++++++ dist-test/Traverse.test.js.map | 2 +- dist/Traverse.d.ts.map | 2 +- dist/Traverse.js | 7 +- dist/Traverse.js.map | 2 +- src/Traverse.ts | 18 +++-- test/Traverse.test.ts | 125 +++++++++++++++++++++++++++++++++ 7 files changed, 247 insertions(+), 16 deletions(-) diff --git a/dist-test/Traverse.test.js b/dist-test/Traverse.test.js index 8409b72..a7d5334 100644 --- a/dist-test/Traverse.test.js +++ b/dist-test/Traverse.test.js @@ -272,6 +272,113 @@ const __2 = __importDefault(require("..")); ['foo/bar1', 'foo/bar2'], ]); }); + (0, node_test_1.test)('find-deps-default-root', async () => { + const seneca = makeSeneca().use(__2.default); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps', { + relations: { + parental: [ + ['foo/bar0', 'foo/bar3'], + ['sys/user', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + ['foo/bar3', 'foo/bar6'], + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + ['foo/bar0', 'foo/zed0'], + ['foo/zed0', 'foo/zed1'], + ['foo/zed1', 'foo/zed2'], + ['bar/baz0', 'bar/baz1'], + ['qux/test', 'qux/prod'], + ['foo/bar2', 'foo/bar9'], + ['foo/bar6', 'foo/bar10'], + ['foo/bar7', 'foo/bar11'], + ], + }, + }); + // console.log('RES', res) + (0, code_1.expect)(res.deps).equal([ + // Level 0 + ['sys/user', 'foo/bar1'], + // Level 1 + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + // Level 2 + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + // Level 3 + ['foo/bar7', 'foo/bar11'], + ]); + }); + (0, node_test_1.test)('find-deps-all-custom', async () => { + const seneca = makeSeneca().use(__2.default); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar0', + relations: { + parental: [ + ['foo/bar2', 'foo/bar3'], + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + ['foo/bar3', 'foo/bar6'], + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + ['foo/bar0', 'foo/zed0'], + ['foo/zed0', 'foo/zed1'], + ['foo/zed1', 'foo/zed2'], + ['bar/baz0', 'bar/baz1'], + ['qux/test', 'qux/prod'], + ['foo/bar2', 'foo/bar9'], + ['foo/bar6', 'foo/bar10'], + ['foo/bar7', 'foo/bar11'], + ], + }, + }); + // console.log('RES', res) + (0, code_1.expect)(res.deps).equal([ + // Level 0 + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar0', 'foo/zed0'], + // Level 1 + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + ['foo/bar2', 'foo/bar3'], + ['foo/bar2', 'foo/bar9'], + ['foo/zed0', 'foo/zed1'], + // Level 2 + ['foo/bar3', 'foo/bar6'], + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + ['foo/zed1', 'foo/zed2'], + // Level 3 + ['foo/bar6', 'foo/bar10'], + ['foo/bar7', 'foo/bar11'], + ]); + }); + (0, node_test_1.test)('find-deps-all-default', async () => { + const seneca = makeSeneca().use(__2.default); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps'); + // console.log('RES', res) + (0, code_1.expect)(res.deps).equal([]); + }); + (0, node_test_1.test)('find-deps-empty-list', async () => { + const seneca = makeSeneca().use(__2.default, { + relations: { + parental: [], + }, + }); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar0', + }); + // console.log('RES', res) + (0, code_1.expect)(res.deps).equal([]); + }); (0, node_test_1.test)('find-deps-l1', async () => { const seneca = makeSeneca().use(__2.default, { relations: { diff --git a/dist-test/Traverse.test.js.map b/dist-test/Traverse.test.js.map index 34e582d..8d9f763 100644 --- a/dist-test/Traverse.test.js.map +++ b/dist-test/Traverse.test.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/Traverse.d.ts.map b/dist/Traverse.d.ts.map index 0ec80c8..02bc43d 100644 --- a/dist/Traverse.d.ts.map +++ b/dist/Traverse.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAIA,KAAK,MAAM,GAAG,MAAM,CAAA;AAEpB,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEhC,KAAK,QAAQ,GAAG,QAAQ,EAAE,CAAA;AAE1B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAyExD;AAcD,eAAe,QAAQ,CAAA"} \ No newline at end of file +{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAIA,KAAK,MAAM,GAAG,MAAM,CAAA;AAEpB,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEhC,KAAK,QAAQ,GAAG,QAAQ,EAAE,CAAA;AAE1B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QA+ExD;AAcD,eAAe,QAAQ,CAAA"} \ No newline at end of file diff --git a/dist/Traverse.js b/dist/Traverse.js index f60d428..bfb8db5 100644 --- a/dist/Traverse.js +++ b/dist/Traverse.js @@ -5,9 +5,10 @@ const gubu_1 = require("gubu"); function Traverse(options) { const seneca = this; const { Default } = seneca.valid; - seneca - .fix('sys:traverse') - .message('find:deps', { rootEntity: (0, gubu_1.Optional)(String), relations: (0, gubu_1.Skip)({ parental: [[String, String]] }) }, msgFindDeps); + seneca.fix('sys:traverse').message('find:deps', { + rootEntity: (0, gubu_1.Optional)(String), + relations: (0, gubu_1.Skip)({ parental: [[String, String]] }), + }, msgFindDeps); // Returns the sorted entity pairs, starting from a given entity. // In breadth-first order, sorting first by level, then alphabetically in each level. async function msgFindDeps(msg) { diff --git a/dist/Traverse.js.map b/dist/Traverse.js.map index 66bc76c..b491420 100644 --- a/dist/Traverse.js.map +++ b/dist/Traverse.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/Traverse.ts b/src/Traverse.ts index 41eca45..d8421b0 100644 --- a/src/Traverse.ts +++ b/src/Traverse.ts @@ -23,16 +23,14 @@ function Traverse(this: any, options: TraverseOptionsFull) { const { Default } = seneca.valid - seneca - .fix('sys:traverse') - .message( - 'find:deps', - { - rootEntity: Optional(String), - relations: Skip({ parental: [[String, String]] }), - }, - msgFindDeps, - ) + seneca.fix('sys:traverse').message( + 'find:deps', + { + rootEntity: Optional(String), + relations: Skip({ parental: [[String, String]] }), + }, + msgFindDeps, + ) // Returns the sorted entity pairs, starting from a given entity. // In breadth-first order, sorting first by level, then alphabetically in each level. diff --git a/test/Traverse.test.ts b/test/Traverse.test.ts index a5e013e..b099a68 100644 --- a/test/Traverse.test.ts +++ b/test/Traverse.test.ts @@ -307,6 +307,131 @@ describe('Traverse', () => { ]) }) + test('find-deps-default-root', async () => { + const seneca = makeSeneca().use(Traverse) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps', { + relations: { + parental: [ + ['foo/bar0', 'foo/bar3'], + ['sys/user', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + ['foo/bar3', 'foo/bar6'], + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + ['foo/bar0', 'foo/zed0'], + ['foo/zed0', 'foo/zed1'], + ['foo/zed1', 'foo/zed2'], + ['bar/baz0', 'bar/baz1'], + ['qux/test', 'qux/prod'], + ['foo/bar2', 'foo/bar9'], + ['foo/bar6', 'foo/bar10'], + ['foo/bar7', 'foo/bar11'], + ], + }, + }) + // console.log('RES', res) + + expect(res.deps).equal([ + // Level 0 + ['sys/user', 'foo/bar1'], + + // Level 1 + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + + // Level 2 + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + + // Level 3 + ['foo/bar7', 'foo/bar11'], + ]) + }) + + test('find-deps-all-custom', async () => { + const seneca = makeSeneca().use(Traverse) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar0', + relations: { + parental: [ + ['foo/bar2', 'foo/bar3'], + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + ['foo/bar3', 'foo/bar6'], + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + ['foo/bar0', 'foo/zed0'], + ['foo/zed0', 'foo/zed1'], + ['foo/zed1', 'foo/zed2'], + ['bar/baz0', 'bar/baz1'], + ['qux/test', 'qux/prod'], + ['foo/bar2', 'foo/bar9'], + ['foo/bar6', 'foo/bar10'], + ['foo/bar7', 'foo/bar11'], + ], + }, + }) + // console.log('RES', res) + + expect(res.deps).equal([ + // Level 0 + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar0', 'foo/zed0'], + + // Level 1 + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + ['foo/bar2', 'foo/bar3'], + ['foo/bar2', 'foo/bar9'], + ['foo/zed0', 'foo/zed1'], + + // Level 2 + ['foo/bar3', 'foo/bar6'], + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + ['foo/zed1', 'foo/zed2'], + + // Level 3 + ['foo/bar6', 'foo/bar10'], + ['foo/bar7', 'foo/bar11'], + ]) + }) + + test('find-deps-all-default', async () => { + const seneca = makeSeneca().use(Traverse) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps') + // console.log('RES', res) + + expect(res.deps).equal([]) + }) + + test('find-deps-empty-list', async () => { + const seneca = makeSeneca().use(Traverse, { + relations: { + parental: [], + }, + }) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar0', + }) + // console.log('RES', res) + + expect(res.deps).equal([]) + }) + test('find-deps-l1', async () => { const seneca = makeSeneca().use(Traverse, { relations: { From c36b31b219910d91f8948ad2256053f4d2e1ab66 Mon Sep 17 00:00:00 2001 From: Leonardo Cunha Date: Thu, 4 Dec 2025 11:08:26 -0300 Subject: [PATCH 11/22] fix: ensure children are also sorted alphabetically --- dist-test/Traverse.test.js | 93 +++++++++++++++----------------- dist-test/Traverse.test.js.map | 2 +- dist/Traverse.d.ts.map | 2 +- dist/Traverse.js | 8 ++- dist/Traverse.js.map | 2 +- src/Traverse.ts | 11 ++-- test/Traverse.test.ts | 98 +++++++++++++++++----------------- 7 files changed, 110 insertions(+), 106 deletions(-) diff --git a/dist-test/Traverse.test.js b/dist-test/Traverse.test.js index a7d5334..b852213 100644 --- a/dist-test/Traverse.test.js +++ b/dist-test/Traverse.test.js @@ -417,55 +417,50 @@ const __2 = __importDefault(require("..")); ['foo/bar7', 'foo/bar11'], ]); }); - // test('find-deps-l1-convergent', async () => { - // const seneca = makeSeneca().use(Traverse, { - // relations: { - // parental: [ - // ['foo/bar2', 'foo/bar3'], - // ['foo/bar0', 'foo/bar1'], - // ['foo/bar0', 'foo/bar2'], - // ['foo/bar1', 'foo/bar4'], - // ['foo/bar1', 'foo/bar5'], - // ['foo/bar3', 'foo/bar6'], - // ['foo/bar4', 'foo/bar7'], - // ['foo/bar5', 'foo/bar8'], - // ['foo/bar0', 'foo/zed0'], - // ['foo/zed0', 'foo/zed1'], - // ['foo/zed1', 'foo/zed2'], - // ['bar/baz0', 'bar/baz1'], - // ['qux/test', 'qux/prod'], - // ['foo/bar2', 'foo/bar9'], - // ['foo/bar6', 'foo/bar10'], - // ['foo/bar7', 'foo/bar11'], - // // Add convergent paths from bar1 - // ['foo/bar4', 'foo/bar12'], - // ['foo/bar5', 'foo/bar12'], // bar12 converges from bar4 and bar5 - // ['foo/bar12', 'foo/bar13'], - // ], - // }, - // }) - // await seneca.ready() - // - // const res = await seneca.post('sys:traverse,find:deps', { - // rootEntity: 'foo/bar1', - // }) - // - // expect(res.deps).equal([ - // // Level 0 - // ['foo/bar1', 'foo/bar4'], - // ['foo/bar1', 'foo/bar5'], - // - // // Level 1 - // ['foo/bar4', 'foo/bar7'], - // ['foo/bar4', 'foo/bar12'], - // ['foo/bar5', 'foo/bar8'], - // - // // Level 2 - // ['foo/bar7', 'foo/bar11'], - // ['foo/bar12', 'foo/bar13'], - // ]) - // }) - // + (0, node_test_1.test)('find-deps-l1-convergent', async () => { + const seneca = makeSeneca().use(__2.default, { + relations: { + parental: [ + ['foo/bar2', 'foo/bar3'], + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + ['foo/bar3', 'foo/bar6'], + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + ['foo/bar0', 'foo/zed0'], + ['foo/zed0', 'foo/zed1'], + ['foo/zed1', 'foo/zed2'], + ['bar/baz0', 'bar/baz1'], + ['qux/test', 'qux/prod'], + ['foo/bar2', 'foo/bar9'], + ['foo/bar6', 'foo/bar10'], + ['foo/bar7', 'foo/bar11'], + ['foo/bar4', 'foo/bar12'], + // bar12 converges from bar4 and bar5 + ['foo/bar5', 'foo/bar12'], + ['foo/bar12', 'foo/bar13'], + ], + }, + }); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar1', + }); + (0, code_1.expect)(res.deps).equal([ + // Level 0 + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + // Level 1 + ['foo/bar4', 'foo/bar7'], + ['foo/bar4', 'foo/bar12'], + ['foo/bar5', 'foo/bar8'], + // Level 2 + ['foo/bar7', 'foo/bar11'], + ['foo/bar12', 'foo/bar13'], + ]); + }); // test('find-deps-l1-cycle', async () => { // const seneca = makeSeneca().use(Traverse, { // relations: { diff --git a/dist-test/Traverse.test.js.map b/dist-test/Traverse.test.js.map index 8d9f763..3f0c6ce 100644 --- a/dist-test/Traverse.test.js.map +++ b/dist-test/Traverse.test.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/Traverse.d.ts.map b/dist/Traverse.d.ts.map index 02bc43d..56e8e29 100644 --- a/dist/Traverse.d.ts.map +++ b/dist/Traverse.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAIA,KAAK,MAAM,GAAG,MAAM,CAAA;AAEpB,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEhC,KAAK,QAAQ,GAAG,QAAQ,EAAE,CAAA;AAE1B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QA+ExD;AAcD,eAAe,QAAQ,CAAA"} \ No newline at end of file +{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAIA,KAAK,MAAM,GAAG,MAAM,CAAA;AAEpB,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEhC,KAAK,QAAQ,GAAG,QAAQ,EAAE,CAAA;AAE1B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAsFxD;AAcD,eAAe,QAAQ,CAAA"} \ No newline at end of file diff --git a/dist/Traverse.js b/dist/Traverse.js index bfb8db5..d2a2d8c 100644 --- a/dist/Traverse.js +++ b/dist/Traverse.js @@ -31,7 +31,8 @@ function Traverse(options) { levelEntToProcess.push(rootEntity); while (levelEntToProcess.length > 0) { const nextLevel = []; - levelEntToProcess.sort(); + const levelDeps = []; + // levelEntToProcess.sort() for (const parent of levelEntToProcess) { const entityChildren = parentChildrenMap.get(parent)?.sort() || []; if (entityChildren.length === 0) { @@ -39,12 +40,15 @@ function Traverse(options) { } for (const child of entityChildren) { if (!visitedEntitiesSet.has(child)) { - deps.push([parent, child]); + levelDeps.push([parent, child]); visitedEntitiesSet.add(child); nextLevel.push(child); } } } + levelDeps.sort((a, b) => a[0].localeCompare(b[0], undefined, { numeric: true }) || + a[1].localeCompare(b[1], undefined, { numeric: true })); + deps.push(...levelDeps); levelEntToProcess = nextLevel; } return { diff --git a/dist/Traverse.js.map b/dist/Traverse.js.map index b491420..dc9eee6 100644 --- a/dist/Traverse.js.map +++ b/dist/Traverse.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":";AAAA,gEAAgE;;AAEhE,+BAAqC;AAkBrC,SAAS,QAAQ,CAAY,OAA4B;IACvD,MAAM,MAAM,GAAQ,IAAI,CAAA;IAExB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,CAAA;IAEhC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,OAAO,CAChC,WAAW,EACX;QACE,UAAU,EAAE,IAAA,eAAQ,EAAC,MAAM,CAAC;QAC5B,SAAS,EAAE,IAAA,WAAI,EAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;KAClD,EACD,WAAW,CACZ,CAAA;IAED,iEAAiE;IACjE,qFAAqF;IACrF,KAAK,UAAU,WAAW,CAExB,GAKC;QAED,sBAAsB;QAEtB,MAAM,YAAY,GAChB,GAAG,CAAC,SAAS,EAAE,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAA;QACvD,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAA;QAEvD,MAAM,iBAAiB,GAA0B,IAAI,GAAG,EAAE,CAAA;QAC1D,MAAM,IAAI,GAAe,EAAE,CAAA;QAE3B,KAAK,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,YAAY,EAAE,CAAC;YACzC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnC,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YACnC,CAAC;YAED,MAAM,YAAY,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YACxD,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACxB,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QAC7C,CAAC;QAED,MAAM,kBAAkB,GAAgB,IAAI,GAAG,EAAE,CAAA;QACjD,IAAI,iBAAiB,GAAa,EAAE,CAAA;QAEpC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAClC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAElC,OAAO,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,SAAS,GAAa,EAAE,CAAA;YAE9B,iBAAiB,CAAC,IAAI,EAAE,CAAA;YAExB,KAAK,MAAM,MAAM,IAAI,iBAAiB,EAAE,CAAC;gBACvC,MAAM,cAAc,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;gBAElE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAChC,SAAQ;gBACV,CAAC;gBAED,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;oBACnC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;wBACnC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;wBAC1B,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;wBAC7B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;oBACvB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,iBAAiB,GAAG,SAAS,CAAA;QAC/B,CAAC;QAED,OAAO;YACL,EAAE,EAAE,IAAI;YACR,IAAI;SACL,CAAA;IACH,CAAC;AACH,CAAC;AAED,mBAAmB;AACnB,MAAM,QAAQ,GAAwB;IACpC,6BAA6B;IAC7B,KAAK,EAAE,KAAK;IACZ,UAAU,EAAE,UAAU;IACtB,SAAS,EAAE;QACT,QAAQ,EAAE,EAAE;KACb;CACF,CAAA;AAED,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;AAErC,kBAAe,QAAQ,CAAA;AAEvB,IAAI,WAAW,KAAK,OAAO,MAAM,EAAE,CAAC;IAClC,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAA;AAC3B,CAAC"} \ No newline at end of file +{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/Traverse.ts b/src/Traverse.ts index d8421b0..09622dc 100644 --- a/src/Traverse.ts +++ b/src/Traverse.ts @@ -70,8 +70,7 @@ function Traverse(this: any, options: TraverseOptionsFull) { while (levelEntToProcess.length > 0) { const nextLevel: Entity[] = [] - - levelEntToProcess.sort() + const levelDeps: Relation[] = [] for (const parent of levelEntToProcess) { const entityChildren = parentChildrenMap.get(parent)?.sort() || [] @@ -82,13 +81,19 @@ function Traverse(this: any, options: TraverseOptionsFull) { for (const child of entityChildren) { if (!visitedEntitiesSet.has(child)) { - deps.push([parent, child]) + levelDeps.push([parent, child]) visitedEntitiesSet.add(child) nextLevel.push(child) } } } + levelDeps.sort((a, b) => + a[0].localeCompare(b[0], undefined, { numeric: true }) || + a[1].localeCompare(b[1], undefined, { numeric: true }) + ) + + deps.push(...levelDeps) levelEntToProcess = nextLevel } diff --git a/test/Traverse.test.ts b/test/Traverse.test.ts index b099a68..18f3b78 100644 --- a/test/Traverse.test.ts +++ b/test/Traverse.test.ts @@ -475,55 +475,55 @@ describe('Traverse', () => { ]) }) - // test('find-deps-l1-convergent', async () => { - // const seneca = makeSeneca().use(Traverse, { - // relations: { - // parental: [ - // ['foo/bar2', 'foo/bar3'], - // ['foo/bar0', 'foo/bar1'], - // ['foo/bar0', 'foo/bar2'], - // ['foo/bar1', 'foo/bar4'], - // ['foo/bar1', 'foo/bar5'], - // ['foo/bar3', 'foo/bar6'], - // ['foo/bar4', 'foo/bar7'], - // ['foo/bar5', 'foo/bar8'], - // ['foo/bar0', 'foo/zed0'], - // ['foo/zed0', 'foo/zed1'], - // ['foo/zed1', 'foo/zed2'], - // ['bar/baz0', 'bar/baz1'], - // ['qux/test', 'qux/prod'], - // ['foo/bar2', 'foo/bar9'], - // ['foo/bar6', 'foo/bar10'], - // ['foo/bar7', 'foo/bar11'], - // // Add convergent paths from bar1 - // ['foo/bar4', 'foo/bar12'], - // ['foo/bar5', 'foo/bar12'], // bar12 converges from bar4 and bar5 - // ['foo/bar12', 'foo/bar13'], - // ], - // }, - // }) - // await seneca.ready() - // - // const res = await seneca.post('sys:traverse,find:deps', { - // rootEntity: 'foo/bar1', - // }) - // - // expect(res.deps).equal([ - // // Level 0 - // ['foo/bar1', 'foo/bar4'], - // ['foo/bar1', 'foo/bar5'], - // - // // Level 1 - // ['foo/bar4', 'foo/bar7'], - // ['foo/bar4', 'foo/bar12'], - // ['foo/bar5', 'foo/bar8'], - // - // // Level 2 - // ['foo/bar7', 'foo/bar11'], - // ['foo/bar12', 'foo/bar13'], - // ]) - // }) - // + test('find-deps-l1-convergent', async () => { + const seneca = makeSeneca().use(Traverse, { + relations: { + parental: [ + ['foo/bar2', 'foo/bar3'], + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + ['foo/bar3', 'foo/bar6'], + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + ['foo/bar0', 'foo/zed0'], + ['foo/zed0', 'foo/zed1'], + ['foo/zed1', 'foo/zed2'], + ['bar/baz0', 'bar/baz1'], + ['qux/test', 'qux/prod'], + ['foo/bar2', 'foo/bar9'], + ['foo/bar6', 'foo/bar10'], + ['foo/bar7', 'foo/bar11'], + ['foo/bar4', 'foo/bar12'], + // bar12 converges from bar4 and bar5 + ['foo/bar5', 'foo/bar12'], + ['foo/bar12', 'foo/bar13'], + ], + }, + }) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar1', + }) + + expect(res.deps).equal([ + // Level 0 + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + + // Level 1 + ['foo/bar4', 'foo/bar7'], + ['foo/bar4', 'foo/bar12'], + ['foo/bar5', 'foo/bar8'], + + // Level 2 + ['foo/bar7', 'foo/bar11'], + ['foo/bar12', 'foo/bar13'], + ]) + }) + // test('find-deps-l1-cycle', async () => { // const seneca = makeSeneca().use(Traverse, { // relations: { From e1bca452ef109336543332d6209ac5c69f192ac3 Mon Sep 17 00:00:00 2001 From: Leonardo Cunha Date: Thu, 4 Dec 2025 11:46:57 -0300 Subject: [PATCH 12/22] test: add more subchild checks --- dist-test/Traverse.test.js | 374 +++++++++++++++---------------- dist-test/Traverse.test.js.map | 2 +- dist/Traverse.d.ts.map | 2 +- dist/Traverse.js | 2 +- dist/Traverse.js.map | 2 +- src/Traverse.ts | 9 +- test/Traverse.test.ts | 392 ++++++++++++++++----------------- 7 files changed, 378 insertions(+), 405 deletions(-) diff --git a/dist-test/Traverse.test.js b/dist-test/Traverse.test.js index b852213..9551851 100644 --- a/dist-test/Traverse.test.js +++ b/dist-test/Traverse.test.js @@ -461,54 +461,48 @@ const __2 = __importDefault(require("..")); ['foo/bar12', 'foo/bar13'], ]); }); - // test('find-deps-l1-cycle', async () => { - // const seneca = makeSeneca().use(Traverse, { - // relations: { - // parental: [ - // ['foo/bar2', 'foo/bar3'], - // ['foo/bar0', 'foo/bar1'], - // ['foo/bar0', 'foo/bar2'], - // ['foo/bar1', 'foo/bar4'], - // ['foo/bar1', 'foo/bar5'], - // ['foo/bar3', 'foo/bar6'], - // ['foo/bar4', 'foo/bar7'], - // ['foo/bar5', 'foo/bar8'], - // ['foo/bar0', 'foo/zed0'], - // ['foo/zed0', 'foo/zed1'], - // ['foo/zed1', 'foo/zed2'], - // ['bar/baz0', 'bar/baz1'], - // ['qux/test', 'qux/prod'], - // ['foo/bar2', 'foo/bar9'], - // ['foo/bar6', 'foo/bar10'], - // ['foo/bar7', 'foo/bar11'], - // // Add cycle back to bar1 - // ['foo/bar7', 'foo/bar1'], // Cycle: bar1 -> bar4 -> bar7 -> bar1 - // ['foo/bar8', 'foo/bar12'], - // ], - // }, - // }) - // await seneca.ready() - // - // const res = await seneca.post('sys:traverse,find:deps', { - // rootEntity: 'foo/bar1', - // }) - // - // // bar1 already visited, so cycle is ignored - // expect(res.deps).equal([ - // // Level 0 - // ['foo/bar1', 'foo/bar4'], - // ['foo/bar1', 'foo/bar5'], - // - // // Level 1 - // ['foo/bar4', 'foo/bar7'], - // ['foo/bar5', 'foo/bar8'], - // - // // Level 2 - // ['foo/bar7', 'foo/bar11'], - // ['foo/bar8', 'foo/bar12'], - // ]) - // }) - // + (0, node_test_1.test)('find-deps-l1-cycle', async () => { + const seneca = makeSeneca().use(__2.default, { + relations: { + parental: [ + ['foo/bar2', 'foo/bar3'], + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + ['foo/bar3', 'foo/bar6'], + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + ['foo/bar0', 'foo/zed0'], + ['foo/zed0', 'foo/zed1'], + ['foo/zed1', 'foo/zed2'], + ['bar/baz0', 'bar/baz1'], + ['qux/test', 'qux/prod'], + ['foo/bar2', 'foo/bar9'], + ['foo/bar6', 'foo/bar10'], + ['foo/bar7', 'foo/bar11'], + // Cycle: bar1 -> bar4 -> bar7 -> bar1 + ['foo/bar7', 'foo/bar1'], + ['foo/bar8', 'foo/bar12'], + ], + }, + }); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar1', + }); + (0, code_1.expect)(res.deps).equal([ + // Level 0 + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + // Level 1 + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + // Level 2 + ['foo/bar7', 'foo/bar11'], + ['foo/bar8', 'foo/bar12'], + ]); + }); (0, node_test_1.test)('find-deps-l2', async () => { const seneca = makeSeneca().use(__2.default, { relations: { @@ -544,157 +538,139 @@ const __2 = __importDefault(require("..")); ['foo/bar6', 'foo/bar10'], ]); }); - // test('find-deps-l2-convergent', async () => { - // const seneca = makeSeneca().use(Traverse, { - // relations: { - // parental: [ - // ['foo/bar2', 'foo/bar3'], - // ['foo/bar0', 'foo/bar1'], - // ['foo/bar0', 'foo/bar2'], - // ['foo/bar1', 'foo/bar4'], - // ['foo/bar1', 'foo/bar5'], - // ['foo/bar3', 'foo/bar6'], - // ['foo/bar4', 'foo/bar7'], - // ['foo/bar5', 'foo/bar8'], - // ['foo/bar0', 'foo/zed0'], - // ['foo/zed0', 'foo/zed1'], - // ['foo/zed1', 'foo/zed2'], - // ['bar/baz0', 'bar/baz1'], - // ['qux/test', 'qux/prod'], - // ['foo/bar2', 'foo/bar9'], - // ['foo/bar6', 'foo/bar10'], - // ['foo/bar7', 'foo/bar11'], - // // Add convergent paths from bar3 - // ['foo/bar3', 'foo/bar12'], - // ['foo/bar6', 'foo/bar13'], - // ['foo/bar10', 'foo/bar14'], - // ['foo/bar12', 'foo/bar14'], // bar14 converges from bar10 and bar12 - // ['foo/bar14', 'foo/bar15'], - // ], - // }, - // }) - // await seneca.ready() - // - // const res = await seneca.post('sys:traverse,find:deps', { - // rootEntity: 'foo/bar3', - // }) - // - // expect(res.deps).equal([ - // // Level 0 - // ['foo/bar3', 'foo/bar6'], - // ['foo/bar3', 'foo/bar12'], - // - // // Level 1 - // ['foo/bar6', 'foo/bar10'], - // ['foo/bar6', 'foo/bar13'], - // ['foo/bar12', 'foo/bar14'], - // - // // Level 2 - // ['foo/bar10', 'foo/bar14'], - // - // // Level 3 - // ['foo/bar14', 'foo/bar15'], - // ]) - // }) - // - // test('find-deps-l2-cycle', async () => { - // const seneca = makeSeneca().use(Traverse, { - // relations: { - // parental: [ - // ['foo/bar2', 'foo/bar3'], - // ['foo/bar0', 'foo/bar1'], - // ['foo/bar0', 'foo/bar2'], - // ['foo/bar1', 'foo/bar4'], - // ['foo/bar1', 'foo/bar5'], - // ['foo/bar3', 'foo/bar6'], - // ['foo/bar4', 'foo/bar7'], - // ['foo/bar5', 'foo/bar8'], - // ['foo/bar0', 'foo/zed0'], - // ['foo/zed0', 'foo/zed1'], - // ['foo/zed1', 'foo/zed2'], - // ['bar/baz0', 'bar/baz1'], - // ['qux/test', 'qux/prod'], - // ['foo/bar2', 'foo/bar9'], - // ['foo/bar6', 'foo/bar10'], - // ['foo/bar7', 'foo/bar11'], - // // Add cycle back to bar3 - // ['foo/bar10', 'foo/bar12'], - // ['foo/bar12', 'foo/bar3'], // Cycle: bar3 -> bar6 -> bar10 -> bar12 -> bar3 - // ['foo/bar10', 'foo/bar13'], - // ], - // }, - // }) - // await seneca.ready() - // - // const res = await seneca.post('sys:traverse,find:deps', { - // rootEntity: 'foo/bar3', - // }) - // - // // bar3 already visited, so cycle is ignored - // expect(res.deps).equal([ - // // Level 0 - // ['foo/bar3', 'foo/bar6'], - // - // // Level 1 - // ['foo/bar6', 'foo/bar10'], - // - // // Level 2 - // ['foo/bar10', 'foo/bar12'], - // ['foo/bar10', 'foo/bar13'], - // ]) - // }) - // - // test('find-deps-l2-multi-level-convergent', async () => { - // const seneca = makeSeneca().use(Traverse, { - // relations: { - // parental: [ - // ['foo/bar2', 'foo/bar3'], - // ['foo/bar0', 'foo/bar1'], - // ['foo/bar0', 'foo/bar2'], - // ['foo/bar1', 'foo/bar4'], - // ['foo/bar1', 'foo/bar5'], - // ['foo/bar3', 'foo/bar6'], - // ['foo/bar4', 'foo/bar7'], - // ['foo/bar5', 'foo/bar8'], - // ['foo/bar0', 'foo/zed0'], - // ['foo/zed0', 'foo/zed1'], - // ['foo/zed1', 'foo/zed2'], - // ['bar/baz0', 'bar/baz1'], - // ['qux/test', 'qux/prod'], - // ['foo/bar2', 'foo/bar9'], - // ['foo/bar6', 'foo/bar10'], - // ['foo/bar7', 'foo/bar11'], - // // Create diamond pattern from bar3 - // ['foo/bar3', 'foo/bar12'], - // ['foo/bar3', 'foo/bar13'], - // ['foo/bar12', 'foo/bar14'], - // ['foo/bar13', 'foo/bar14'], // Diamond converges at bar14 - // ['foo/bar6', 'foo/bar14'], // Third path to bar14 - // ['foo/bar14', 'foo/bar15'], - // ], - // }, - // }) - // await seneca.ready() - // - // const res = await seneca.post('sys:traverse,find:deps', { - // rootEntity: 'foo/bar3', - // }) - // - // // bar14 should appear via bar12 (first alphabetically among bar12, bar13) - // expect(res.deps).equal([ - // // Level 0 - // ['foo/bar3', 'foo/bar6'], - // ['foo/bar3', 'foo/bar12'], - // ['foo/bar3', 'foo/bar13'], - // - // // Level 1 - // ['foo/bar6', 'foo/bar10'], - // ['foo/bar12', 'foo/bar14'], - // - // // Level 2 - // ['foo/bar14', 'foo/bar15'], - // ]) - // }) + (0, node_test_1.test)('find-deps-l2-convergent', async () => { + const seneca = makeSeneca().use(__2.default, { + relations: { + parental: [ + ['foo/bar2', 'foo/bar3'], + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + ['foo/bar3', 'foo/bar6'], + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + ['foo/bar0', 'foo/zed0'], + ['foo/zed0', 'foo/zed1'], + ['foo/zed1', 'foo/zed2'], + ['bar/baz0', 'bar/baz1'], + ['qux/test', 'qux/prod'], + ['foo/bar2', 'foo/bar9'], + ['foo/bar6', 'foo/bar10'], + ['foo/bar7', 'foo/bar11'], + ['foo/bar3', 'foo/bar12'], + ['foo/bar6', 'foo/bar13'], + ['foo/bar10', 'foo/bar14'], + // bar14 converges from bar10 and bar12 + ['foo/bar12', 'foo/bar14'], + ['foo/bar14', 'foo/bar15'], + ], + }, + }); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar3', + }); + (0, code_1.expect)(res.deps).equal([ + // Level 0 + ['foo/bar3', 'foo/bar6'], + ['foo/bar3', 'foo/bar12'], + // Level 1 + ['foo/bar6', 'foo/bar10'], + ['foo/bar6', 'foo/bar13'], + ['foo/bar12', 'foo/bar14'], + // Level 2 + ['foo/bar14', 'foo/bar15'], + ]); + }); + (0, node_test_1.test)('find-deps-l2-cycle', async () => { + const seneca = makeSeneca().use(__2.default, { + relations: { + parental: [ + ['foo/bar2', 'foo/bar3'], + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + ['foo/bar3', 'foo/bar6'], + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + ['foo/bar0', 'foo/zed0'], + ['foo/zed0', 'foo/zed1'], + ['foo/zed1', 'foo/zed2'], + ['bar/baz0', 'bar/baz1'], + ['qux/test', 'qux/prod'], + ['foo/bar2', 'foo/bar9'], + ['foo/bar6', 'foo/bar10'], + ['foo/bar7', 'foo/bar11'], + ['foo/bar10', 'foo/bar12'], + // Cycle: bar3 -> bar6 -> bar10 -> bar12 -> bar3 + ['foo/bar12', 'foo/bar3'], + ['foo/bar10', 'foo/bar13'], + ], + }, + }); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar3', + }); + (0, code_1.expect)(res.deps).equal([ + // Level 0 + ['foo/bar3', 'foo/bar6'], + // Level 1 + ['foo/bar6', 'foo/bar10'], + // Level 2 + ['foo/bar10', 'foo/bar12'], + ['foo/bar10', 'foo/bar13'], + ]); + }); + (0, node_test_1.test)('find-deps-l2-multi-level-convergent', async () => { + const seneca = makeSeneca().use(__2.default, { + relations: { + parental: [ + ['foo/bar2', 'foo/bar3'], + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + ['foo/bar3', 'foo/bar6'], + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + ['foo/bar0', 'foo/zed0'], + ['foo/zed0', 'foo/zed1'], + ['foo/zed1', 'foo/zed2'], + ['bar/baz0', 'bar/baz1'], + ['qux/test', 'qux/prod'], + ['foo/bar2', 'foo/bar9'], + ['foo/bar6', 'foo/bar10'], + ['foo/bar7', 'foo/bar11'], + ['foo/bar3', 'foo/bar12'], + ['foo/bar3', 'foo/bar13'], + ['foo/bar12', 'foo/bar14'], + // Second path to bar14 + ['foo/bar13', 'foo/bar14'], + // Third path to bar14 + ['foo/bar6', 'foo/bar14'], + ['foo/bar14', 'foo/bar15'], + ], + }, + }); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar3', + }); + (0, code_1.expect)(res.deps).equal([ + // Level 0 + ['foo/bar3', 'foo/bar6'], + ['foo/bar3', 'foo/bar12'], + ['foo/bar3', 'foo/bar13'], + // Level 1 + ['foo/bar6', 'foo/bar10'], + ['foo/bar12', 'foo/bar14'], + // Level 2 + ['foo/bar14', 'foo/bar15'], + ]); + }); }); function makeSeneca(opts = {}) { const seneca = (0, seneca_1.default)({ legacy: false }).test().use('promisify').use('entity'); diff --git a/dist-test/Traverse.test.js.map b/dist-test/Traverse.test.js.map index 3f0c6ce..4532e10 100644 --- a/dist-test/Traverse.test.js.map +++ b/dist-test/Traverse.test.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":";AAAA,gEAAgE;;;;;AAEhE,yCAA0C;AAC1C,qCAAmC;AAEnC,oDAA2B;AAC3B,8CAA8C;AAC9C,8CAA8C;AAE9C,2CAA4B;AAC5B,2CAAyB;AAEzB,IAAA,oBAAQ,EAAC,UAAU,EAAE,GAAG,EAAE;IACxB,IAAA,gBAAI,EAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC7B,IAAA,aAAM,EAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAA;QAE3B,MAAM,MAAM,GAAG,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;aACrC,IAAI,EAAE;aACN,GAAG,CAAC,WAAW,CAAC;aAChB,GAAG,CAAC,QAAQ,CAAC;aACb,GAAG,CAAC,WAAQ,CAAC,CAAA;QAChB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,IAAA,aAAM,EAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,WAAW,EAAE,KAAK,IAAI,EAAE;QAC3B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;iBAC1B;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,kCAAkC;YAClC,yCAAyC;YACzC,kCAAkC;YAClC,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,UAAU,EAAE,WAAW,CAAC;SAC1B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE,EAAE;aACb;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,qBAAqB;oBACrB,CAAC,UAAU,EAAE,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,gDAAgD;QAChD,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;SACzB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,qCAAqC;oBACrC,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QAEF,4CAA4C;QAC5C,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;SACzB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAClC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;SACzB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,YAAY;oBACZ,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,YAAY;oBACZ,CAAC,UAAU,EAAE,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;SACzB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,gCAAgC;oBAChC,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,iDAAiD;QACjD,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;SACzB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,wBAAwB;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,4CAA4C;oBAC5C,CAAC,UAAU,EAAE,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;SACzB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,YAAY;oBACZ,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;SACzB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,CAAC,CAAA;QACzC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;iBAC1B;aACF;SACF,CAAC,CAAA;QACF,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,WAAW,CAAC;SAC1B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,CAAC,CAAA;QACzC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;YACtB,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;iBAC1B;aACF;SACF,CAAC,CAAA;QACF,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,UAAU,EAAE,WAAW,CAAC;SAC1B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,CAAC,CAAA;QACzC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;QACvD,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE,EAAE;aACb;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;iBAC1B;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,WAAW,CAAC;SAC1B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,qCAAqC;oBACrC,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,WAAW,EAAE,WAAW,CAAC;iBAC3B;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,WAAW,EAAE,WAAW,CAAC;SAC3B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,2CAA2C;IAC3C,gDAAgD;IAChD,mBAAmB;IACnB,oBAAoB;IACpB,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,qCAAqC;IACrC,qCAAqC;IACrC,oCAAoC;IACpC,2EAA2E;IAC3E,qCAAqC;IACrC,WAAW;IACX,SAAS;IACT,OAAO;IACP,yBAAyB;IACzB,EAAE;IACF,8DAA8D;IAC9D,8BAA8B;IAC9B,OAAO;IACP,EAAE;IACF,iDAAiD;IACjD,6BAA6B;IAC7B,iBAAiB;IACjB,gCAAgC;IAChC,gCAAgC;IAChC,EAAE;IACF,iBAAiB;IACjB,gCAAgC;IAChC,gCAAgC;IAChC,EAAE;IACF,iBAAiB;IACjB,iCAAiC;IACjC,iCAAiC;IACjC,OAAO;IACP,KAAK;IACL,EAAE;IAEF,IAAA,gBAAI,EAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;iBAC1B;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,WAAW,CAAC;SAC1B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,gDAAgD;IAChD,gDAAgD;IAChD,mBAAmB;IACnB,oBAAoB;IACpB,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,qCAAqC;IACrC,qCAAqC;IACrC,4CAA4C;IAC5C,qCAAqC;IACrC,qCAAqC;IACrC,sCAAsC;IACtC,8EAA8E;IAC9E,sCAAsC;IACtC,WAAW;IACX,SAAS;IACT,OAAO;IACP,yBAAyB;IACzB,EAAE;IACF,8DAA8D;IAC9D,8BAA8B;IAC9B,OAAO;IACP,EAAE;IACF,6BAA6B;IAC7B,iBAAiB;IACjB,gCAAgC;IAChC,iCAAiC;IACjC,EAAE;IACF,iBAAiB;IACjB,iCAAiC;IACjC,iCAAiC;IACjC,kCAAkC;IAClC,EAAE;IACF,iBAAiB;IACjB,kCAAkC;IAClC,EAAE;IACF,iBAAiB;IACjB,kCAAkC;IAClC,OAAO;IACP,KAAK;IACL,EAAE;IACF,2CAA2C;IAC3C,gDAAgD;IAChD,mBAAmB;IACnB,oBAAoB;IACpB,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,qCAAqC;IACrC,qCAAqC;IACrC,oCAAoC;IACpC,sCAAsC;IACtC,sFAAsF;IACtF,sCAAsC;IACtC,WAAW;IACX,SAAS;IACT,OAAO;IACP,yBAAyB;IACzB,EAAE;IACF,8DAA8D;IAC9D,8BAA8B;IAC9B,OAAO;IACP,EAAE;IACF,iDAAiD;IACjD,6BAA6B;IAC7B,iBAAiB;IACjB,gCAAgC;IAChC,EAAE;IACF,iBAAiB;IACjB,iCAAiC;IACjC,EAAE;IACF,iBAAiB;IACjB,kCAAkC;IAClC,kCAAkC;IAClC,OAAO;IACP,KAAK;IACL,EAAE;IACF,4DAA4D;IAC5D,gDAAgD;IAChD,mBAAmB;IACnB,oBAAoB;IACpB,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,oCAAoC;IACpC,qCAAqC;IACrC,qCAAqC;IACrC,8CAA8C;IAC9C,qCAAqC;IACrC,qCAAqC;IACrC,sCAAsC;IACtC,oEAAoE;IACpE,4DAA4D;IAC5D,sCAAsC;IACtC,WAAW;IACX,SAAS;IACT,OAAO;IACP,yBAAyB;IACzB,EAAE;IACF,8DAA8D;IAC9D,8BAA8B;IAC9B,OAAO;IACP,EAAE;IACF,+EAA+E;IAC/E,6BAA6B;IAC7B,iBAAiB;IACjB,gCAAgC;IAChC,iCAAiC;IACjC,iCAAiC;IACjC,EAAE;IACF,iBAAiB;IACjB,iCAAiC;IACjC,kCAAkC;IAClC,EAAE;IACF,iBAAiB;IACjB,kCAAkC;IAClC,OAAO;IACP,KAAK;AACP,CAAC,CAAC,CAAA;AAEF,SAAS,UAAU,CAAC,OAAY,EAAE;IAChC,MAAM,MAAM,GAAG,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC9E,OAAO,MAAM,CAAA;AACf,CAAC"} \ No newline at end of file +{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/Traverse.d.ts.map b/dist/Traverse.d.ts.map index 56e8e29..2a37c85 100644 --- a/dist/Traverse.d.ts.map +++ b/dist/Traverse.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAIA,KAAK,MAAM,GAAG,MAAM,CAAA;AAEpB,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEhC,KAAK,QAAQ,GAAG,QAAQ,EAAE,CAAA;AAE1B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAsFxD;AAcD,eAAe,QAAQ,CAAA"} \ No newline at end of file +{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAIA,KAAK,MAAM,GAAG,MAAM,CAAA;AAEpB,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEhC,KAAK,QAAQ,GAAG,QAAQ,EAAE,CAAA;AAE1B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAuFxD;AAcD,eAAe,QAAQ,CAAA"} \ No newline at end of file diff --git a/dist/Traverse.js b/dist/Traverse.js index d2a2d8c..3f37cc7 100644 --- a/dist/Traverse.js +++ b/dist/Traverse.js @@ -32,7 +32,7 @@ function Traverse(options) { while (levelEntToProcess.length > 0) { const nextLevel = []; const levelDeps = []; - // levelEntToProcess.sort() + levelEntToProcess.sort(); for (const parent of levelEntToProcess) { const entityChildren = parentChildrenMap.get(parent)?.sort() || []; if (entityChildren.length === 0) { diff --git a/dist/Traverse.js.map b/dist/Traverse.js.map index dc9eee6..9ad1117 100644 --- a/dist/Traverse.js.map +++ b/dist/Traverse.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/Traverse.ts b/src/Traverse.ts index 09622dc..5af656a 100644 --- a/src/Traverse.ts +++ b/src/Traverse.ts @@ -72,6 +72,8 @@ function Traverse(this: any, options: TraverseOptionsFull) { const nextLevel: Entity[] = [] const levelDeps: Relation[] = [] + levelEntToProcess.sort() + for (const parent of levelEntToProcess) { const entityChildren = parentChildrenMap.get(parent)?.sort() || [] @@ -88,9 +90,10 @@ function Traverse(this: any, options: TraverseOptionsFull) { } } - levelDeps.sort((a, b) => - a[0].localeCompare(b[0], undefined, { numeric: true }) || - a[1].localeCompare(b[1], undefined, { numeric: true }) + levelDeps.sort( + (a, b) => + a[0].localeCompare(b[0], undefined, { numeric: true }) || + a[1].localeCompare(b[1], undefined, { numeric: true }), ) deps.push(...levelDeps) diff --git a/test/Traverse.test.ts b/test/Traverse.test.ts index 18f3b78..de63360 100644 --- a/test/Traverse.test.ts +++ b/test/Traverse.test.ts @@ -524,54 +524,52 @@ describe('Traverse', () => { ]) }) - // test('find-deps-l1-cycle', async () => { - // const seneca = makeSeneca().use(Traverse, { - // relations: { - // parental: [ - // ['foo/bar2', 'foo/bar3'], - // ['foo/bar0', 'foo/bar1'], - // ['foo/bar0', 'foo/bar2'], - // ['foo/bar1', 'foo/bar4'], - // ['foo/bar1', 'foo/bar5'], - // ['foo/bar3', 'foo/bar6'], - // ['foo/bar4', 'foo/bar7'], - // ['foo/bar5', 'foo/bar8'], - // ['foo/bar0', 'foo/zed0'], - // ['foo/zed0', 'foo/zed1'], - // ['foo/zed1', 'foo/zed2'], - // ['bar/baz0', 'bar/baz1'], - // ['qux/test', 'qux/prod'], - // ['foo/bar2', 'foo/bar9'], - // ['foo/bar6', 'foo/bar10'], - // ['foo/bar7', 'foo/bar11'], - // // Add cycle back to bar1 - // ['foo/bar7', 'foo/bar1'], // Cycle: bar1 -> bar4 -> bar7 -> bar1 - // ['foo/bar8', 'foo/bar12'], - // ], - // }, - // }) - // await seneca.ready() - // - // const res = await seneca.post('sys:traverse,find:deps', { - // rootEntity: 'foo/bar1', - // }) - // - // // bar1 already visited, so cycle is ignored - // expect(res.deps).equal([ - // // Level 0 - // ['foo/bar1', 'foo/bar4'], - // ['foo/bar1', 'foo/bar5'], - // - // // Level 1 - // ['foo/bar4', 'foo/bar7'], - // ['foo/bar5', 'foo/bar8'], - // - // // Level 2 - // ['foo/bar7', 'foo/bar11'], - // ['foo/bar8', 'foo/bar12'], - // ]) - // }) - // + test('find-deps-l1-cycle', async () => { + const seneca = makeSeneca().use(Traverse, { + relations: { + parental: [ + ['foo/bar2', 'foo/bar3'], + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + ['foo/bar3', 'foo/bar6'], + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + ['foo/bar0', 'foo/zed0'], + ['foo/zed0', 'foo/zed1'], + ['foo/zed1', 'foo/zed2'], + ['bar/baz0', 'bar/baz1'], + ['qux/test', 'qux/prod'], + ['foo/bar2', 'foo/bar9'], + ['foo/bar6', 'foo/bar10'], + ['foo/bar7', 'foo/bar11'], + // Cycle: bar1 -> bar4 -> bar7 -> bar1 + ['foo/bar7', 'foo/bar1'], + ['foo/bar8', 'foo/bar12'], + ], + }, + }) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar1', + }) + + expect(res.deps).equal([ + // Level 0 + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + + // Level 1 + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + + // Level 2 + ['foo/bar7', 'foo/bar11'], + ['foo/bar8', 'foo/bar12'], + ]) + }) test('find-deps-l2', async () => { const seneca = makeSeneca().use(Traverse, { @@ -612,157 +610,153 @@ describe('Traverse', () => { ]) }) - // test('find-deps-l2-convergent', async () => { - // const seneca = makeSeneca().use(Traverse, { - // relations: { - // parental: [ - // ['foo/bar2', 'foo/bar3'], - // ['foo/bar0', 'foo/bar1'], - // ['foo/bar0', 'foo/bar2'], - // ['foo/bar1', 'foo/bar4'], - // ['foo/bar1', 'foo/bar5'], - // ['foo/bar3', 'foo/bar6'], - // ['foo/bar4', 'foo/bar7'], - // ['foo/bar5', 'foo/bar8'], - // ['foo/bar0', 'foo/zed0'], - // ['foo/zed0', 'foo/zed1'], - // ['foo/zed1', 'foo/zed2'], - // ['bar/baz0', 'bar/baz1'], - // ['qux/test', 'qux/prod'], - // ['foo/bar2', 'foo/bar9'], - // ['foo/bar6', 'foo/bar10'], - // ['foo/bar7', 'foo/bar11'], - // // Add convergent paths from bar3 - // ['foo/bar3', 'foo/bar12'], - // ['foo/bar6', 'foo/bar13'], - // ['foo/bar10', 'foo/bar14'], - // ['foo/bar12', 'foo/bar14'], // bar14 converges from bar10 and bar12 - // ['foo/bar14', 'foo/bar15'], - // ], - // }, - // }) - // await seneca.ready() - // - // const res = await seneca.post('sys:traverse,find:deps', { - // rootEntity: 'foo/bar3', - // }) - // - // expect(res.deps).equal([ - // // Level 0 - // ['foo/bar3', 'foo/bar6'], - // ['foo/bar3', 'foo/bar12'], - // - // // Level 1 - // ['foo/bar6', 'foo/bar10'], - // ['foo/bar6', 'foo/bar13'], - // ['foo/bar12', 'foo/bar14'], - // - // // Level 2 - // ['foo/bar10', 'foo/bar14'], - // - // // Level 3 - // ['foo/bar14', 'foo/bar15'], - // ]) - // }) - // - // test('find-deps-l2-cycle', async () => { - // const seneca = makeSeneca().use(Traverse, { - // relations: { - // parental: [ - // ['foo/bar2', 'foo/bar3'], - // ['foo/bar0', 'foo/bar1'], - // ['foo/bar0', 'foo/bar2'], - // ['foo/bar1', 'foo/bar4'], - // ['foo/bar1', 'foo/bar5'], - // ['foo/bar3', 'foo/bar6'], - // ['foo/bar4', 'foo/bar7'], - // ['foo/bar5', 'foo/bar8'], - // ['foo/bar0', 'foo/zed0'], - // ['foo/zed0', 'foo/zed1'], - // ['foo/zed1', 'foo/zed2'], - // ['bar/baz0', 'bar/baz1'], - // ['qux/test', 'qux/prod'], - // ['foo/bar2', 'foo/bar9'], - // ['foo/bar6', 'foo/bar10'], - // ['foo/bar7', 'foo/bar11'], - // // Add cycle back to bar3 - // ['foo/bar10', 'foo/bar12'], - // ['foo/bar12', 'foo/bar3'], // Cycle: bar3 -> bar6 -> bar10 -> bar12 -> bar3 - // ['foo/bar10', 'foo/bar13'], - // ], - // }, - // }) - // await seneca.ready() - // - // const res = await seneca.post('sys:traverse,find:deps', { - // rootEntity: 'foo/bar3', - // }) - // - // // bar3 already visited, so cycle is ignored - // expect(res.deps).equal([ - // // Level 0 - // ['foo/bar3', 'foo/bar6'], - // - // // Level 1 - // ['foo/bar6', 'foo/bar10'], - // - // // Level 2 - // ['foo/bar10', 'foo/bar12'], - // ['foo/bar10', 'foo/bar13'], - // ]) - // }) - // - // test('find-deps-l2-multi-level-convergent', async () => { - // const seneca = makeSeneca().use(Traverse, { - // relations: { - // parental: [ - // ['foo/bar2', 'foo/bar3'], - // ['foo/bar0', 'foo/bar1'], - // ['foo/bar0', 'foo/bar2'], - // ['foo/bar1', 'foo/bar4'], - // ['foo/bar1', 'foo/bar5'], - // ['foo/bar3', 'foo/bar6'], - // ['foo/bar4', 'foo/bar7'], - // ['foo/bar5', 'foo/bar8'], - // ['foo/bar0', 'foo/zed0'], - // ['foo/zed0', 'foo/zed1'], - // ['foo/zed1', 'foo/zed2'], - // ['bar/baz0', 'bar/baz1'], - // ['qux/test', 'qux/prod'], - // ['foo/bar2', 'foo/bar9'], - // ['foo/bar6', 'foo/bar10'], - // ['foo/bar7', 'foo/bar11'], - // // Create diamond pattern from bar3 - // ['foo/bar3', 'foo/bar12'], - // ['foo/bar3', 'foo/bar13'], - // ['foo/bar12', 'foo/bar14'], - // ['foo/bar13', 'foo/bar14'], // Diamond converges at bar14 - // ['foo/bar6', 'foo/bar14'], // Third path to bar14 - // ['foo/bar14', 'foo/bar15'], - // ], - // }, - // }) - // await seneca.ready() - // - // const res = await seneca.post('sys:traverse,find:deps', { - // rootEntity: 'foo/bar3', - // }) - // - // // bar14 should appear via bar12 (first alphabetically among bar12, bar13) - // expect(res.deps).equal([ - // // Level 0 - // ['foo/bar3', 'foo/bar6'], - // ['foo/bar3', 'foo/bar12'], - // ['foo/bar3', 'foo/bar13'], - // - // // Level 1 - // ['foo/bar6', 'foo/bar10'], - // ['foo/bar12', 'foo/bar14'], - // - // // Level 2 - // ['foo/bar14', 'foo/bar15'], - // ]) - // }) + test('find-deps-l2-convergent', async () => { + const seneca = makeSeneca().use(Traverse, { + relations: { + parental: [ + ['foo/bar2', 'foo/bar3'], + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + ['foo/bar3', 'foo/bar6'], + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + ['foo/bar0', 'foo/zed0'], + ['foo/zed0', 'foo/zed1'], + ['foo/zed1', 'foo/zed2'], + ['bar/baz0', 'bar/baz1'], + ['qux/test', 'qux/prod'], + ['foo/bar2', 'foo/bar9'], + ['foo/bar6', 'foo/bar10'], + ['foo/bar7', 'foo/bar11'], + ['foo/bar3', 'foo/bar12'], + ['foo/bar6', 'foo/bar13'], + ['foo/bar10', 'foo/bar14'], + // bar14 converges from bar10 and bar12 + ['foo/bar12', 'foo/bar14'], + ['foo/bar14', 'foo/bar15'], + ], + }, + }) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar3', + }) + + expect(res.deps).equal([ + // Level 0 + ['foo/bar3', 'foo/bar6'], + ['foo/bar3', 'foo/bar12'], + + // Level 1 + ['foo/bar6', 'foo/bar10'], + ['foo/bar6', 'foo/bar13'], + ['foo/bar12', 'foo/bar14'], + + // Level 2 + ['foo/bar14', 'foo/bar15'], + ]) + }) + + test('find-deps-l2-cycle', async () => { + const seneca = makeSeneca().use(Traverse, { + relations: { + parental: [ + ['foo/bar2', 'foo/bar3'], + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + ['foo/bar3', 'foo/bar6'], + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + ['foo/bar0', 'foo/zed0'], + ['foo/zed0', 'foo/zed1'], + ['foo/zed1', 'foo/zed2'], + ['bar/baz0', 'bar/baz1'], + ['qux/test', 'qux/prod'], + ['foo/bar2', 'foo/bar9'], + ['foo/bar6', 'foo/bar10'], + ['foo/bar7', 'foo/bar11'], + ['foo/bar10', 'foo/bar12'], + // Cycle: bar3 -> bar6 -> bar10 -> bar12 -> bar3 + ['foo/bar12', 'foo/bar3'], + ['foo/bar10', 'foo/bar13'], + ], + }, + }) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar3', + }) + + expect(res.deps).equal([ + // Level 0 + ['foo/bar3', 'foo/bar6'], + + // Level 1 + ['foo/bar6', 'foo/bar10'], + + // Level 2 + ['foo/bar10', 'foo/bar12'], + ['foo/bar10', 'foo/bar13'], + ]) + }) + + test('find-deps-l2-multi-level-convergent', async () => { + const seneca = makeSeneca().use(Traverse, { + relations: { + parental: [ + ['foo/bar2', 'foo/bar3'], + ['foo/bar0', 'foo/bar1'], + ['foo/bar0', 'foo/bar2'], + ['foo/bar1', 'foo/bar4'], + ['foo/bar1', 'foo/bar5'], + ['foo/bar3', 'foo/bar6'], + ['foo/bar4', 'foo/bar7'], + ['foo/bar5', 'foo/bar8'], + ['foo/bar0', 'foo/zed0'], + ['foo/zed0', 'foo/zed1'], + ['foo/zed1', 'foo/zed2'], + ['bar/baz0', 'bar/baz1'], + ['qux/test', 'qux/prod'], + ['foo/bar2', 'foo/bar9'], + ['foo/bar6', 'foo/bar10'], + ['foo/bar7', 'foo/bar11'], + ['foo/bar3', 'foo/bar12'], + ['foo/bar3', 'foo/bar13'], + ['foo/bar12', 'foo/bar14'], + // Second path to bar14 + ['foo/bar13', 'foo/bar14'], + // Third path to bar14 + ['foo/bar6', 'foo/bar14'], + ['foo/bar14', 'foo/bar15'], + ], + }, + }) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'foo/bar3', + }) + + expect(res.deps).equal([ + // Level 0 + ['foo/bar3', 'foo/bar6'], + ['foo/bar3', 'foo/bar12'], + ['foo/bar3', 'foo/bar13'], + + // Level 1 + ['foo/bar6', 'foo/bar10'], + ['foo/bar12', 'foo/bar14'], + + // Level 2 + ['foo/bar14', 'foo/bar15'], + ]) + }) }) function makeSeneca(opts: any = {}) { From 19b0860053c027f260e60b47016db33edb334265 Mon Sep 17 00:00:00 2001 From: Leonardo Cunha Date: Thu, 4 Dec 2025 12:48:23 -0300 Subject: [PATCH 13/22] refactor: update find:deps --- dist/Traverse.d.ts.map | 2 +- dist/Traverse.js | 49 +++++++++++++++++----------------- dist/Traverse.js.map | 2 +- src/Traverse.ts | 60 ++++++++++++++++++++---------------------- 4 files changed, 55 insertions(+), 58 deletions(-) diff --git a/dist/Traverse.d.ts.map b/dist/Traverse.d.ts.map index 2a37c85..a9bd99d 100644 --- a/dist/Traverse.d.ts.map +++ b/dist/Traverse.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAIA,KAAK,MAAM,GAAG,MAAM,CAAA;AAEpB,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEhC,KAAK,QAAQ,GAAG,QAAQ,EAAE,CAAA;AAE1B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAuFxD;AAcD,eAAe,QAAQ,CAAA"} \ No newline at end of file +{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAIA,KAAK,MAAM,GAAG,MAAM,CAAA;AAEpB,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEhC,KAAK,QAAQ,GAAG,QAAQ,EAAE,CAAA;AAE1B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAqFxD;AAcD,eAAe,QAAQ,CAAA"} \ No newline at end of file diff --git a/dist/Traverse.js b/dist/Traverse.js index 3f37cc7..f80258e 100644 --- a/dist/Traverse.js +++ b/dist/Traverse.js @@ -13,49 +13,48 @@ function Traverse(options) { // In breadth-first order, sorting first by level, then alphabetically in each level. async function msgFindDeps(msg) { // const seneca = this - const allRealtions = msg.relations?.parental || options.relations.parental; + const allRelations = msg.relations?.parental || options.relations.parental; const rootEntity = msg.rootEntity || options.rootEntity; const parentChildrenMap = new Map(); const deps = []; - for (let [parent, child] of allRealtions) { + for (const [parent, child] of allRelations) { if (!parentChildrenMap.has(parent)) { parentChildrenMap.set(parent, []); } - const childrenList = parentChildrenMap.get(parent) || []; - childrenList.push(child); - parentChildrenMap.set(parent, childrenList); + parentChildrenMap.get(parent).push(child); } - const visitedEntitiesSet = new Set(); - let levelEntToProcess = []; - visitedEntitiesSet.add(rootEntity); - levelEntToProcess.push(rootEntity); - while (levelEntToProcess.length > 0) { + for (const children of parentChildrenMap.values()) { + children.sort(); + } + const visitedEntitiesSet = new Set([rootEntity]); + let currentLevel = [rootEntity]; + while (currentLevel.length > 0) { const nextLevel = []; - const levelDeps = []; - levelEntToProcess.sort(); - for (const parent of levelEntToProcess) { - const entityChildren = parentChildrenMap.get(parent)?.sort() || []; - if (entityChildren.length === 0) { - continue; - } - for (const child of entityChildren) { - if (!visitedEntitiesSet.has(child)) { - levelDeps.push([parent, child]); - visitedEntitiesSet.add(child); - nextLevel.push(child); + let levelDeps = []; + for (const parent of currentLevel) { + const children = parentChildrenMap.get(parent) || []; + for (const child of children) { + if (visitedEntitiesSet.has(child)) { + continue; } + levelDeps.push([parent, child]); + visitedEntitiesSet.add(child); + nextLevel.push(child); } } - levelDeps.sort((a, b) => a[0].localeCompare(b[0], undefined, { numeric: true }) || - a[1].localeCompare(b[1], undefined, { numeric: true })); + levelDeps = compareRelations(levelDeps); deps.push(...levelDeps); - levelEntToProcess = nextLevel; + currentLevel = nextLevel; } return { ok: true, deps, }; } + function compareRelations(relations) { + return [...relations].sort((a, b) => a[0].localeCompare(b[0], undefined, { numeric: true }) || + a[1].localeCompare(b[1], undefined, { numeric: true })); + } } // Default options. const defaults = { diff --git a/dist/Traverse.js.map b/dist/Traverse.js.map index 9ad1117..423a3e9 100644 --- a/dist/Traverse.js.map +++ b/dist/Traverse.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/Traverse.ts b/src/Traverse.ts index 5af656a..60e8e4c 100644 --- a/src/Traverse.ts +++ b/src/Traverse.ts @@ -45,59 +45,49 @@ function Traverse(this: any, options: TraverseOptionsFull) { ): Promise<{ ok: boolean; deps: Relation[] }> { // const seneca = this - const allRealtions: Parental = + const allRelations: Parental = msg.relations?.parental || options.relations.parental const rootEntity = msg.rootEntity || options.rootEntity const parentChildrenMap: Map = new Map() const deps: Relation[] = [] - for (let [parent, child] of allRealtions) { + for (const [parent, child] of allRelations) { if (!parentChildrenMap.has(parent)) { parentChildrenMap.set(parent, []) } - const childrenList = parentChildrenMap.get(parent) || [] - childrenList.push(child) - parentChildrenMap.set(parent, childrenList) + parentChildrenMap.get(parent)!.push(child) } - const visitedEntitiesSet: Set = new Set() - let levelEntToProcess: Entity[] = [] + for (const children of parentChildrenMap.values()) { + children.sort() + } - visitedEntitiesSet.add(rootEntity) - levelEntToProcess.push(rootEntity) + const visitedEntitiesSet: Set = new Set([rootEntity]) + let currentLevel: Entity[] = [rootEntity] - while (levelEntToProcess.length > 0) { + while (currentLevel.length > 0) { const nextLevel: Entity[] = [] - const levelDeps: Relation[] = [] - - levelEntToProcess.sort() + let levelDeps: Relation[] = [] - for (const parent of levelEntToProcess) { - const entityChildren = parentChildrenMap.get(parent)?.sort() || [] - - if (entityChildren.length === 0) { - continue - } + for (const parent of currentLevel) { + const children = parentChildrenMap.get(parent) || [] - for (const child of entityChildren) { - if (!visitedEntitiesSet.has(child)) { - levelDeps.push([parent, child]) - visitedEntitiesSet.add(child) - nextLevel.push(child) + for (const child of children) { + if (visitedEntitiesSet.has(child)) { + continue } + + levelDeps.push([parent, child]) + visitedEntitiesSet.add(child) + nextLevel.push(child) } } - levelDeps.sort( - (a, b) => - a[0].localeCompare(b[0], undefined, { numeric: true }) || - a[1].localeCompare(b[1], undefined, { numeric: true }), - ) - + levelDeps = compareRelations(levelDeps) deps.push(...levelDeps) - levelEntToProcess = nextLevel + currentLevel = nextLevel } return { @@ -105,6 +95,14 @@ function Traverse(this: any, options: TraverseOptionsFull) { deps, } } + + function compareRelations(relations: Relation[]): Relation[] { + return [...relations].sort( + (a, b) => + a[0].localeCompare(b[0], undefined, { numeric: true }) || + a[1].localeCompare(b[1], undefined, { numeric: true }), + ) + } } // Default options. From 84ce80d4133db19b3d070b326aa6ea59a04c658c Mon Sep 17 00:00:00 2001 From: Leonardo Cunha Date: Thu, 4 Dec 2025 12:56:56 -0300 Subject: [PATCH 14/22] refactor: update find:deps --- dist/Traverse.d.ts.map | 2 +- dist/Traverse.js | 4 ++-- dist/Traverse.js.map | 2 +- src/Traverse.ts | 9 ++++----- 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/dist/Traverse.d.ts.map b/dist/Traverse.d.ts.map index a9bd99d..841f863 100644 --- a/dist/Traverse.d.ts.map +++ b/dist/Traverse.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAIA,KAAK,MAAM,GAAG,MAAM,CAAA;AAEpB,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEhC,KAAK,QAAQ,GAAG,QAAQ,EAAE,CAAA;AAE1B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAqFxD;AAcD,eAAe,QAAQ,CAAA"} \ No newline at end of file +{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAIA,KAAK,MAAM,GAAG,MAAM,CAAA;AAEpB,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEhC,KAAK,QAAQ,GAAG,QAAQ,EAAE,CAAA;AAE1B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAoFxD;AAcD,eAAe,QAAQ,CAAA"} \ No newline at end of file diff --git a/dist/Traverse.js b/dist/Traverse.js index f80258e..ef8cb34 100644 --- a/dist/Traverse.js +++ b/dist/Traverse.js @@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); const gubu_1 = require("gubu"); function Traverse(options) { const seneca = this; - const { Default } = seneca.valid; + // const { Default } = seneca.valid seneca.fix('sys:traverse').message('find:deps', { rootEntity: (0, gubu_1.Optional)(String), relations: (0, gubu_1.Skip)({ parental: [[String, String]] }), @@ -15,8 +15,8 @@ function Traverse(options) { // const seneca = this const allRelations = msg.relations?.parental || options.relations.parental; const rootEntity = msg.rootEntity || options.rootEntity; - const parentChildrenMap = new Map(); const deps = []; + const parentChildrenMap = new Map(); for (const [parent, child] of allRelations) { if (!parentChildrenMap.has(parent)) { parentChildrenMap.set(parent, []); diff --git a/dist/Traverse.js.map b/dist/Traverse.js.map index 423a3e9..72975cb 100644 --- a/dist/Traverse.js.map +++ b/dist/Traverse.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/Traverse.ts b/src/Traverse.ts index 60e8e4c..caf4538 100644 --- a/src/Traverse.ts +++ b/src/Traverse.ts @@ -21,7 +21,7 @@ export type TraverseOptions = Partial function Traverse(this: any, options: TraverseOptionsFull) { const seneca: any = this - const { Default } = seneca.valid + // const { Default } = seneca.valid seneca.fix('sys:traverse').message( 'find:deps', @@ -37,20 +37,19 @@ function Traverse(this: any, options: TraverseOptionsFull) { async function msgFindDeps( this: any, msg: { - rootEntity: Entity - relations: { + rootEntity?: Entity + relations?: { parental: Parental } }, ): Promise<{ ok: boolean; deps: Relation[] }> { // const seneca = this - const allRelations: Parental = msg.relations?.parental || options.relations.parental const rootEntity = msg.rootEntity || options.rootEntity + const deps: Relation[] = [] const parentChildrenMap: Map = new Map() - const deps: Relation[] = [] for (const [parent, child] of allRelations) { if (!parentChildrenMap.has(parent)) { From cadcdb6dfe7f5987a7e9259ae97102756e840f70 Mon Sep 17 00:00:00 2001 From: Leonardo Cunha Date: Sat, 6 Dec 2025 10:27:26 -0300 Subject: [PATCH 15/22] doc: update TraverseDoc with msgFindDeps description --- dist/TraverseDoc.d.ts | 6 +++++- dist/TraverseDoc.d.ts.map | 2 +- dist/TraverseDoc.js | 6 +++--- dist/TraverseDoc.js.map | 2 +- src/TraverseDoc.ts | 6 +++--- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/dist/TraverseDoc.d.ts b/dist/TraverseDoc.d.ts index 8cf5a2b..82539bc 100644 --- a/dist/TraverseDoc.d.ts +++ b/dist/TraverseDoc.d.ts @@ -1,5 +1,9 @@ declare const docs: { - messages: {}; + messages: { + msgFindDeps: { + desc: string; + }; + }; }; export default docs; //# sourceMappingURL=TraverseDoc.d.ts.map \ No newline at end of file diff --git a/dist/TraverseDoc.d.ts.map b/dist/TraverseDoc.d.ts.map index 8953d88..02335d8 100644 --- a/dist/TraverseDoc.d.ts.map +++ b/dist/TraverseDoc.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"TraverseDoc.d.ts","sourceRoot":"","sources":["../src/TraverseDoc.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,IAAI;;CAMT,CAAA;AAED,eAAe,IAAI,CAAA"} \ No newline at end of file +{"version":3,"file":"TraverseDoc.d.ts","sourceRoot":"","sources":["../src/TraverseDoc.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,IAAI;;;;;;CAMT,CAAA;AAED,eAAe,IAAI,CAAA"} \ No newline at end of file diff --git a/dist/TraverseDoc.js b/dist/TraverseDoc.js index 9f90a6b..f8af759 100644 --- a/dist/TraverseDoc.js +++ b/dist/TraverseDoc.js @@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); const docs = { messages: { - // msgFindDeps: { - // desc: 'Return a sorted list of dependencies.', - // } + msgFindDeps: { + desc: 'Returns a sorted list of entity pairs starting from a given entity.', + }, }, }; exports.default = docs; diff --git a/dist/TraverseDoc.js.map b/dist/TraverseDoc.js.map index 46917e6..6eac21b 100644 --- a/dist/TraverseDoc.js.map +++ b/dist/TraverseDoc.js.map @@ -1 +1 @@ -{"version":3,"file":"TraverseDoc.js","sourceRoot":"","sources":["../src/TraverseDoc.ts"],"names":[],"mappings":";AAAA,gEAAgE;;AAEhE,MAAM,IAAI,GAAG;IACX,QAAQ,EAAE;IACR,iBAAiB;IACjB,mDAAmD;IACnD,IAAI;KACL;CACF,CAAA;AAED,kBAAe,IAAI,CAAA;AAEnB,IAAI,WAAW,KAAK,OAAO,MAAM,EAAE,CAAC;IAClC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;AACvB,CAAC"} \ No newline at end of file +{"version":3,"file":"TraverseDoc.js","sourceRoot":"","sources":["../src/TraverseDoc.ts"],"names":[],"mappings":";AAAA,gEAAgE;;AAEhE,MAAM,IAAI,GAAG;IACX,QAAQ,EAAE;QACR,WAAW,EAAE;YACX,IAAI,EAAE,qEAAqE;SAC5E;KACF;CACF,CAAA;AAED,kBAAe,IAAI,CAAA;AAEnB,IAAI,WAAW,KAAK,OAAO,MAAM,EAAE,CAAC;IAClC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;AACvB,CAAC"} \ No newline at end of file diff --git a/src/TraverseDoc.ts b/src/TraverseDoc.ts index 500beda..9642bcb 100644 --- a/src/TraverseDoc.ts +++ b/src/TraverseDoc.ts @@ -2,9 +2,9 @@ const docs = { messages: { - // msgFindDeps: { - // desc: 'Return a sorted list of dependencies.', - // } + msgFindDeps: { + desc: 'Returns a sorted list of entity pairs starting from a given entity.', + }, }, } From 60eb0e03bfd9dafddc8d2e4bd1fa8b2b871e6054 Mon Sep 17 00:00:00 2001 From: Leonardo Cunha Date: Sat, 6 Dec 2025 10:30:30 -0300 Subject: [PATCH 16/22] refactor: update msgFindDeps comment --- dist/Traverse.js | 2 +- dist/Traverse.js.map | 2 +- src/Traverse.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/Traverse.js b/dist/Traverse.js index ef8cb34..5452932 100644 --- a/dist/Traverse.js +++ b/dist/Traverse.js @@ -9,7 +9,7 @@ function Traverse(options) { rootEntity: (0, gubu_1.Optional)(String), relations: (0, gubu_1.Skip)({ parental: [[String, String]] }), }, msgFindDeps); - // Returns the sorted entity pairs, starting from a given entity. + // Returns a sorted list of entity pairs starting from a given entity. // In breadth-first order, sorting first by level, then alphabetically in each level. async function msgFindDeps(msg) { // const seneca = this diff --git a/dist/Traverse.js.map b/dist/Traverse.js.map index 72975cb..9c75ad6 100644 --- a/dist/Traverse.js.map +++ b/dist/Traverse.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/Traverse.ts b/src/Traverse.ts index caf4538..6164825 100644 --- a/src/Traverse.ts +++ b/src/Traverse.ts @@ -32,7 +32,7 @@ function Traverse(this: any, options: TraverseOptionsFull) { msgFindDeps, ) - // Returns the sorted entity pairs, starting from a given entity. + // Returns a sorted list of entity pairs starting from a given entity. // In breadth-first order, sorting first by level, then alphabetically in each level. async function msgFindDeps( this: any, From d0a85f35b2eff00867acf49d65b3f4c217549fd2 Mon Sep 17 00:00:00 2001 From: Leonardo Cunha Date: Sat, 6 Dec 2025 10:47:36 -0300 Subject: [PATCH 17/22] doc: udpate Readme --- README.md | 121 ++++++++++-------------------------------------------- 1 file changed, 22 insertions(+), 99 deletions(-) diff --git a/README.md b/README.md index 20d4ee6..211cabb 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,15 @@ -# @seneca/config +# @seneca/traverse -> _Seneca Config_ is a plugin for [Seneca](http://senecajs.org) +> _Seneca Traverse_ is a plugin for [Seneca](http://senecajs.org) -Live configuration plugin for the Seneca framework. +Data Traverse plugin for the Seneca framework. -Unlike static configuration, this plugin lets you store keyed -configuration in your deployed persistent storage so that you can -change it on the live system. This is useful for things like currency -exchange rates, feature flags, A/B testing etc. - - -[![npm version](https://img.shields.io/npm/v/@seneca/config.svg)](https://npmjs.com/package/@seneca/config) -[![build](https://github.com/senecajs/SenecaConfig/actions/workflows/build.yml/badge.svg)](https://github.com/senecajs/SenecaConfig/actions/workflows/build.yml) -[![Coverage Status](https://coveralls.io/repos/github/senecajs/SenecaConfig/badge.svg?branch=main)](https://coveralls.io/github/senecajs/SenecaConfig?branch=main) -[![Known Vulnerabilities](https://snyk.io/test/github/senecajs/SenecaConfig/badge.svg)](https://snyk.io/test/github/senecajs/SenecaConfig) +[![npm version](https://img.shields.io/npm/v/@seneca/traverse.svg)](https://npmjs.com/package/@seneca/traverse) +[![build](https://github.com/senecajs/SenecaTraverse/actions/workflows/build.yml/badge.svg)](https://github.com/senecajs/SenecaTraverse/actions/workflows/build.yml) +[![Coverage Status](https://coveralls.io/repos/github/senecajs/SenecaTraverse/badge.svg?branch=main)](https://coveralls.io/github/senecajs/SenecaTraverse?branch=main) +[![Known Vulnerabilities](https://snyk.io/test/github/senecajs/SenecaTraverse/badge.svg)](https://snyk.io/test/github/senecajs/SenecaTraverse) [![DeepScan grade](https://deepscan.io/api/teams/5016/projects/26547/branches/846930/badge/grade.svg)](https://deepscan.io/dashboard#view=project&tid=5016&pid=26547&bid=846930) -[![Maintainability](https://api.codeclimate.com/v1/badges/3e5e5c11a17dbfbdd894/maintainability)](https://codeclimate.com/github/senecajs/SenecaConfig/maintainability) +[![Maintainability](https://api.codeclimate.com/v1/badges/3e5e5c11a17dbfbdd894/maintainability)](https://codeclimate.com/github/senecajs/SenecaTraverse/maintainability) | ![Voxgig](https://www.voxgig.com/res/img/vgt01r.png) | This open source module is sponsored and supported by [Voxgig](https://www.voxgig.com). | | ---------------------------------------------------- | --------------------------------------------------------------------------------------- | @@ -23,125 +17,54 @@ exchange rates, feature flags, A/B testing etc. ## Install ```sh -$ npm install @seneca/Config +$ npm install @seneca/traverse ``` ## Quick Example ```js -seneca.use('Config', {}) - -const initRes = await seneca.post('sys:config,init:val,key:a,val:1') -// === { ok: true, key: 'a', val: 1, entry: { key: 'a', val: 1 } } - -const getRes = await seneca.post('sys:config,get:val,key:a') -// === { ok: true, key: 'a', val: 1, entry: { key: 'a', val: 1 } } - -const setRes = await seneca.post('sys:config,set:val,key:a,val:2') -// === { ok: true, key: 'a', val: 1, entry: { key: 'a', val: 2 } } +seneca.use('Traverse', {}) +const depsRes = await seneca.post('sys:traverse,find:deps') +// === { ok: true, deps: [['foo/bar0,foo/bar1'],...] } ``` ## More Examples -Review the [unit tests](test/Config.test.ts) for more examples. - - +Review the [unit tests](test/Traverse.test.ts) for more examples. - ## Options -* `debug` : boolean -* `numparts` : number -* `canon` : object -* `init$` : boolean - +- `debug` : boolean +- `rootEntity` : string +- `relations` : { parental: array } - ## Action Patterns -* [sys:config,get:val](#-sysconfiggetval-) -* [sys:config,init:val](#-sysconfiginitval-) -* [sys:config,list:val](#-sysconfiglistval-) -* [sys:config,map:val](#-sysconfigmapval-) -* [sys:config,set:val](#-sysconfigsetval-) - +- [sys:traverse,find:deps](#-systraversefinddeps-) - ## Action Descriptions -### « `sys:config,get:val` » - -Get a config value by key. - - -#### Parameters - - -* __key__ : _string_ - - ----------- -### « `sys:config,init:val` » - -Initialise a config value by key (must not exist). - - -#### Parameters - - -* __key__ : _string_ -* __existing__ : _boolean_ (optional, default: `false`) - - ----------- -### « `sys:config,list:val` » - -List config values by query. - - -#### Parameters - - -* __q__ : _object_ (optional, default: `{}`) - - ----------- -### « `sys:config,map:val` » - -Get a map of config values by key prefix (dot separated). - - -#### Parameters - - -* __prefix__ : _string_ - - ----------- -### « `sys:config,set:val` » - -Set a config value by key (must exist). +### « `sys:traverse,find:deps` » +Returns a sorted list of entity pairs starting from a given entity. #### Parameters +- **rootEntity** : _string_ (optional, default: 'sys/user') +- **relations** : _object_ (optional, default : { parental: [] }) -* __key__ : _string_ - - ----------- - +--- From 4969a6ed023203679d58cbddbed0af832ecf5837 Mon Sep 17 00:00:00 2001 From: Leonardo Cunha Date: Tue, 9 Dec 2025 10:04:39 -0300 Subject: [PATCH 18/22] refactor: update type declartion Entity -> EntityID --- dist/Traverse.d.ts | 6 +++--- dist/Traverse.d.ts.map | 2 +- dist/Traverse.js.map | 2 +- src/Traverse.ts | 16 ++++++++-------- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/dist/Traverse.d.ts b/dist/Traverse.d.ts index 9d8d182..3172273 100644 --- a/dist/Traverse.d.ts +++ b/dist/Traverse.d.ts @@ -1,9 +1,9 @@ -type Entity = string; -type Relation = [Entity, Entity]; +type EntityID = string; +type Relation = [EntityID, EntityID]; type Parental = Relation[]; type TraverseOptionsFull = { debug: boolean; - rootEntity: Entity; + rootEntity: EntityID; relations: { parental: Parental; }; diff --git a/dist/Traverse.d.ts.map b/dist/Traverse.d.ts.map index 841f863..19d9aad 100644 --- a/dist/Traverse.d.ts.map +++ b/dist/Traverse.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAIA,KAAK,MAAM,GAAG,MAAM,CAAA;AAEpB,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEhC,KAAK,QAAQ,GAAG,QAAQ,EAAE,CAAA;AAE1B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAoFxD;AAcD,eAAe,QAAQ,CAAA"} \ No newline at end of file +{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAIA,KAAK,QAAQ,GAAG,MAAM,CAAA;AAEtB,KAAK,QAAQ,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AAEpC,KAAK,QAAQ,GAAG,QAAQ,EAAE,CAAA;AAE1B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,QAAQ,CAAA;IACpB,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAoFxD;AAcD,eAAe,QAAQ,CAAA"} \ No newline at end of file diff --git a/dist/Traverse.js.map b/dist/Traverse.js.map index 9c75ad6..b3bf6d6 100644 --- a/dist/Traverse.js.map +++ b/dist/Traverse.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":";AAAA,gEAAgE;;AAEhE,+BAAqC;AAkBrC,SAAS,QAAQ,CAAY,OAA4B;IACvD,MAAM,MAAM,GAAQ,IAAI,CAAA;IAExB,mCAAmC;IAEnC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,OAAO,CAChC,WAAW,EACX;QACE,UAAU,EAAE,IAAA,eAAQ,EAAC,MAAM,CAAC;QAC5B,SAAS,EAAE,IAAA,WAAI,EAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;KAClD,EACD,WAAW,CACZ,CAAA;IAED,sEAAsE;IACtE,qFAAqF;IACrF,KAAK,UAAU,WAAW,CAExB,GAKC;QAED,sBAAsB;QACtB,MAAM,YAAY,GAChB,GAAG,CAAC,SAAS,EAAE,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAA;QACvD,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAA;QACvD,MAAM,IAAI,GAAe,EAAE,CAAA;QAE3B,MAAM,iBAAiB,GAA0B,IAAI,GAAG,EAAE,CAAA;QAE1D,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,YAAY,EAAE,CAAC;YAC3C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnC,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YACnC,CAAC;YAED,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC5C,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC;YAClD,QAAQ,CAAC,IAAI,EAAE,CAAA;QACjB,CAAC;QAED,MAAM,kBAAkB,GAAgB,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;QAC7D,IAAI,YAAY,GAAa,CAAC,UAAU,CAAC,CAAA;QAEzC,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAa,EAAE,CAAA;YAC9B,IAAI,SAAS,GAAe,EAAE,CAAA;YAE9B,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;gBAClC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;gBAEpD,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;oBAC7B,IAAI,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;wBAClC,SAAQ;oBACV,CAAC;oBAED,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;oBAC/B,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;oBAC7B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACvB,CAAC;YACH,CAAC;YAED,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAA;YACvC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAA;YACvB,YAAY,GAAG,SAAS,CAAA;QAC1B,CAAC;QAED,OAAO;YACL,EAAE,EAAE,IAAI;YACR,IAAI;SACL,CAAA;IACH,CAAC;IAED,SAAS,gBAAgB,CAAC,SAAqB;QAC7C,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CACxB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACtD,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CACzD,CAAA;IACH,CAAC;AACH,CAAC;AAED,mBAAmB;AACnB,MAAM,QAAQ,GAAwB;IACpC,6BAA6B;IAC7B,KAAK,EAAE,KAAK;IACZ,UAAU,EAAE,UAAU;IACtB,SAAS,EAAE;QACT,QAAQ,EAAE,EAAE;KACb;CACF,CAAA;AAED,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;AAErC,kBAAe,QAAQ,CAAA;AAEvB,IAAI,WAAW,KAAK,OAAO,MAAM,EAAE,CAAC;IAClC,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAA;AAC3B,CAAC"} \ No newline at end of file +{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/Traverse.ts b/src/Traverse.ts index 6164825..18ee65f 100644 --- a/src/Traverse.ts +++ b/src/Traverse.ts @@ -2,15 +2,15 @@ import { Optional, Skip } from 'gubu' -type Entity = string +type EntityID = string -type Relation = [Entity, Entity] +type Relation = [EntityID, EntityID] type Parental = Relation[] type TraverseOptionsFull = { debug: boolean - rootEntity: Entity + rootEntity: EntityID relations: { parental: Parental } @@ -37,7 +37,7 @@ function Traverse(this: any, options: TraverseOptionsFull) { async function msgFindDeps( this: any, msg: { - rootEntity?: Entity + rootEntity?: EntityID relations?: { parental: Parental } @@ -49,7 +49,7 @@ function Traverse(this: any, options: TraverseOptionsFull) { const rootEntity = msg.rootEntity || options.rootEntity const deps: Relation[] = [] - const parentChildrenMap: Map = new Map() + const parentChildrenMap: Map = new Map() for (const [parent, child] of allRelations) { if (!parentChildrenMap.has(parent)) { @@ -63,11 +63,11 @@ function Traverse(this: any, options: TraverseOptionsFull) { children.sort() } - const visitedEntitiesSet: Set = new Set([rootEntity]) - let currentLevel: Entity[] = [rootEntity] + const visitedEntitiesSet: Set = new Set([rootEntity]) + let currentLevel: EntityID[] = [rootEntity] while (currentLevel.length > 0) { - const nextLevel: Entity[] = [] + const nextLevel: EntityID[] = [] let levelDeps: Relation[] = [] for (const parent of currentLevel) { From 8ef5f9f0fc9a01404dde8e959e10b702072d48e9 Mon Sep 17 00:00:00 2001 From: Leonardo Cunha Date: Tue, 9 Dec 2025 10:11:34 -0300 Subject: [PATCH 19/22] refactor: update type declartion Relation -> ParentChildRelation --- dist/Traverse.d.ts | 4 ++-- dist/Traverse.d.ts.map | 2 +- dist/Traverse.js.map | 2 +- src/Traverse.ts | 14 ++++++++------ 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/dist/Traverse.d.ts b/dist/Traverse.d.ts index 3172273..5ceb34f 100644 --- a/dist/Traverse.d.ts +++ b/dist/Traverse.d.ts @@ -1,6 +1,6 @@ type EntityID = string; -type Relation = [EntityID, EntityID]; -type Parental = Relation[]; +type ParentChildRelation = [EntityID, EntityID]; +type Parental = ParentChildRelation[]; type TraverseOptionsFull = { debug: boolean; rootEntity: EntityID; diff --git a/dist/Traverse.d.ts.map b/dist/Traverse.d.ts.map index 19d9aad..7ac4047 100644 --- a/dist/Traverse.d.ts.map +++ b/dist/Traverse.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAIA,KAAK,QAAQ,GAAG,MAAM,CAAA;AAEtB,KAAK,QAAQ,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AAEpC,KAAK,QAAQ,GAAG,QAAQ,EAAE,CAAA;AAE1B,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,QAAQ,CAAA;IACpB,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAoFxD;AAcD,eAAe,QAAQ,CAAA"} \ No newline at end of file +{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAIA,KAAK,QAAQ,GAAG,MAAM,CAAA;AAEtB,KAAK,mBAAmB,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AAE/C,KAAK,QAAQ,GAAG,mBAAmB,EAAE,CAAA;AAErC,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,QAAQ,CAAA;IACpB,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAsFxD;AAcD,eAAe,QAAQ,CAAA"} \ No newline at end of file diff --git a/dist/Traverse.js.map b/dist/Traverse.js.map index b3bf6d6..c4a0bc6 100644 --- a/dist/Traverse.js.map +++ b/dist/Traverse.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/Traverse.ts b/src/Traverse.ts index 18ee65f..91ee993 100644 --- a/src/Traverse.ts +++ b/src/Traverse.ts @@ -4,9 +4,9 @@ import { Optional, Skip } from 'gubu' type EntityID = string -type Relation = [EntityID, EntityID] +type ParentChildRelation = [EntityID, EntityID] -type Parental = Relation[] +type Parental = ParentChildRelation[] type TraverseOptionsFull = { debug: boolean @@ -42,12 +42,12 @@ function Traverse(this: any, options: TraverseOptionsFull) { parental: Parental } }, - ): Promise<{ ok: boolean; deps: Relation[] }> { + ): Promise<{ ok: boolean; deps: ParentChildRelation[] }> { // const seneca = this const allRelations: Parental = msg.relations?.parental || options.relations.parental const rootEntity = msg.rootEntity || options.rootEntity - const deps: Relation[] = [] + const deps: ParentChildRelation[] = [] const parentChildrenMap: Map = new Map() @@ -68,7 +68,7 @@ function Traverse(this: any, options: TraverseOptionsFull) { while (currentLevel.length > 0) { const nextLevel: EntityID[] = [] - let levelDeps: Relation[] = [] + let levelDeps: ParentChildRelation[] = [] for (const parent of currentLevel) { const children = parentChildrenMap.get(parent) || [] @@ -95,7 +95,9 @@ function Traverse(this: any, options: TraverseOptionsFull) { } } - function compareRelations(relations: Relation[]): Relation[] { + function compareRelations( + relations: ParentChildRelation[], + ): ParentChildRelation[] { return [...relations].sort( (a, b) => a[0].localeCompare(b[0], undefined, { numeric: true }) || From fff4736e34b15174a2435e45b5f5af96e4fc09ff Mon Sep 17 00:00:00 2001 From: Leonardo Cunha Date: Tue, 9 Dec 2025 11:27:02 -0300 Subject: [PATCH 20/22] test: add more checks for find:deps --- dist-test/Traverse.test.js | 456 +++++++++++++++++++++++++++++ dist-test/Traverse.test.js.map | 2 +- test/Traverse.test.ts | 509 +++++++++++++++++++++++++++++++++ 3 files changed, 966 insertions(+), 1 deletion(-) diff --git a/dist-test/Traverse.test.js b/dist-test/Traverse.test.js index 9551851..14169a0 100644 --- a/dist-test/Traverse.test.js +++ b/dist-test/Traverse.test.js @@ -671,6 +671,462 @@ const __2 = __importDefault(require("..")); ['foo/bar14', 'foo/bar15'], ]); }); + (0, node_test_1.test)('find-deps-single-cycle', async () => { + const seneca = makeSeneca().use(__2.default, { + relations: { + parental: [ + ['A', 'B'], + ['A', 'C'], + ['C', 'E'], + ['C', 'D'], + ['E', 'G'], + ['E', 'F'], + ['F', 'H'], + ['C', 'A'], + ['N', 'M'], + ], + }, + }); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'C', + }); + (0, code_1.expect)(res.deps).equal([ + // Level 0 + ['C', 'A'], + ['C', 'D'], + ['C', 'E'], + // Level 1 + ['A', 'B'], + ['E', 'F'], + ['E', 'G'], + // Level 2 + ['F', 'H'], + ]); + }); + (0, node_test_1.test)('find-deps-single-missing-node', async () => { + const seneca = makeSeneca().use(__2.default, { + relations: { + parental: [ + ['A', 'B'], + ['B', 'C'], + ['D', 'E'], + ], + }, + }); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'X', + }); + // X has no children + (0, code_1.expect)(res.deps).equal([]); + }); + (0, node_test_1.test)('find-deps-deep-linear-chain', async () => { + const seneca = makeSeneca().use(__2.default, { + relations: { + parental: [ + ['node0', 'node1'], + ['node1', 'node2'], + ['node2', 'node3'], + ['node3', 'node4'], + ['node4', 'node5'], + ['node5', 'node6'], + ['node6', 'node7'], + ['node7', 'node8'], + ['node8', 'node9'], + ['node9', 'node10'], + ], + }, + }); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'node0', + }); + (0, code_1.expect)(res.deps).equal([ + ['node0', 'node1'], + ['node1', 'node2'], + ['node2', 'node3'], + ['node3', 'node4'], + ['node4', 'node5'], + ['node5', 'node6'], + ['node6', 'node7'], + ['node7', 'node8'], + ['node8', 'node9'], + ['node9', 'node10'], + ]); + }); + (0, node_test_1.test)('find-deps-binary-tree', async () => { + const seneca = makeSeneca().use(__2.default, { + relations: { + parental: [ + ['A', 'B'], + ['A', 'C'], + ['B', 'D'], + ['B', 'E'], + ['C', 'F'], + ['C', 'G'], + ['D', 'H'], + ['D', 'I'], + ['E', 'J'], + ['E', 'K'], + ], + }, + }); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'A', + }); + (0, code_1.expect)(res.deps).equal([ + // Level 0 + ['A', 'B'], + ['A', 'C'], + // Level 1 + ['B', 'D'], + ['B', 'E'], + ['C', 'F'], + ['C', 'G'], + // Level 2 + ['D', 'H'], + ['D', 'I'], + ['E', 'J'], + ['E', 'K'], + ]); + }); + (0, node_test_1.test)('find-deps-diamond-pattern', async () => { + const seneca = makeSeneca().use(__2.default, { + relations: { + parental: [ + ['A', 'B'], + ['A', 'C'], + ['B', 'D'], + ['C', 'D'], + ['D', 'E'], + ], + }, + }); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'A', + }); + // D is reached first from B (alphabetically first) + (0, code_1.expect)(res.deps).equal([ + // Level 0 + ['A', 'B'], + ['A', 'C'], + // Level 1 - D reached via B + ['B', 'D'], + // Level 2 + ['D', 'E'], + ]); + }); + (0, node_test_1.test)('find-deps-mixed-alph-sort', async () => { + const seneca = makeSeneca().use(__2.default, { + relations: { + parental: [ + ['root', 'node10'], + ['root', 'node2'], + ['root', 'node1'], + ['root', 'node20'], + ['node1', 'child2'], + ['node2', 'child1'], + ['node10', 'child10'], + ['node20', 'child20'], + ], + }, + }); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'root', + }); + // Natural sorting: node1, node2, node10, node20 + (0, code_1.expect)(res.deps).equal([ + // Level 0 + ['root', 'node1'], + ['root', 'node2'], + ['root', 'node10'], + ['root', 'node20'], + // Level 1 + ['node1', 'child2'], + ['node2', 'child1'], + ['node10', 'child10'], + ['node20', 'child20'], + ]); + }); + (0, node_test_1.test)('find-deps-all-nodes-converge-to-one', async () => { + const seneca = makeSeneca().use(__2.default, { + relations: { + parental: [ + ['root', 'A'], + ['root', 'B'], + ['root', 'C'], + ['A', 'target'], + ['B', 'target'], + ['C', 'target'], + ['target', 'end'], + ], + }, + }); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'root', + }); + // target reached first via A (alphabetically first) + (0, code_1.expect)(res.deps).equal([ + // Level 0 + ['root', 'A'], + ['root', 'B'], + ['root', 'C'], + // Level 1 - target via A + ['A', 'target'], + // Level 2 + ['target', 'end'], + ]); + }); + (0, node_test_1.test)('find-deps-deep-10-levels-complex', async () => { + const seneca = makeSeneca().use(__2.default, { + relations: { + parental: [ + // Level 0: root → simple names + ['root', 'alpha'], + ['root', 'beta'], + ['root', 'gamma'], + // Level 1: simple → mixed format + ['alpha', 'sys/config'], + ['alpha', 'A'], + ['beta', 'sys/auth'], + ['beta', 'lib/utils'], + ['gamma', 'B'], + // Level 2: mixed → namespaced with numbers + ['sys/config', 'app/module1'], + ['sys/config', 'app/module2'], + ['A', 'foo/bar1'], + ['sys/auth', 'auth/provider10'], + ['sys/auth', 'auth/provider2'], + ['lib/utils', 'C'], + ['B', 'foo/baz5'], + // Level 3: deeper nesting + ['app/module1', 'core/service10'], + ['app/module1', 'core/service2'], + ['app/module2', 'data/processor1'], + ['foo/bar1', 'foo/bar10'], + ['foo/bar1', 'foo/bar2'], + ['auth/provider2', 'auth/token/handler'], + ['auth/provider10', 'D'], + ['C', 'lib/helper3'], + ['foo/baz5', 'dead/end1'], // Dead end branch + // Level 4 + ['core/service2', 'db/connection5'], + ['core/service2', 'db/connection50'], + ['core/service10', 'cache/redis'], + ['data/processor1', 'queue/worker1'], + ['data/processor1', 'queue/worker10'], + ['foo/bar2', 'E'], + ['foo/bar10', 'foo/bar100'], + ['auth/token/handler', 'security/validator'], + ['D', 'monitor/logger'], + ['lib/helper3', 'lib/helper30'], + // Dead end: dead/end1 has no children + // Level 5 + ['db/connection5', 'pool/manager1'], + ['db/connection50', 'F'], + ['cache/redis', 'cache/redis/cluster'], + ['queue/worker1', 'task/executor2'], + ['queue/worker10', 'task/executor20'], + ['E', 'report/generator'], + ['foo/bar100', 'foo/bar1000'], + ['security/validator', 'G'], + ['monitor/logger', 'log/stream5'], + ['lib/helper30', 'lib/helper300'], + // Level 6 + ['pool/manager1', 'resource/allocator'], + ['F', 'backup/service'], + ['cache/redis/cluster', 'node/shard1'], + ['cache/redis/cluster', 'node/shard10'], + ['task/executor2', 'H'], + ['task/executor20', 'event/handler'], + ['report/generator', 'pdf/renderer'], + ['foo/bar1000', 'final/component1'], + ['G', 'audit/trail'], + ['log/stream5', 'storage/bucket10'], + ['log/stream5', 'storage/bucket2'], + // Cycle: lib/helper300 → sys/config (already visited at level 1) + ['lib/helper300', 'sys/config'], + ['lib/helper300', 'metrics/collector'], + // Level 7 + ['resource/allocator', 'I'], + ['backup/service', 'snapshot/manager'], + ['node/shard1', 'replica/node1'], + ['node/shard10', 'replica/node10'], + ['H', 'notification/service'], + ['event/handler', 'webhook/dispatcher'], + ['pdf/renderer', 'template/engine'], + ['final/component1', 'J'], + ['audit/trail', 'compliance/checker'], + ['storage/bucket2', 'archive/tier1'], + ['storage/bucket10', 'archive/tier10'], + ['metrics/collector', 'stats/aggregator'], + // Level 8 + ['I', 'health/check'], + ['snapshot/manager', 'K'], + ['replica/node1', 'sync/protocol'], + ['replica/node10', 'sync/protocol'], // Convergent path + ['notification/service', 'email/sender'], + ['webhook/dispatcher', 'http/client'], + ['template/engine', 'render/pipeline'], + ['J', 'output/formatter'], + ['compliance/checker', 'policy/enforcer'], + ['archive/tier1', 'L'], + ['archive/tier10', 'cold/storage'], + ['stats/aggregator', 'dashboard/api'], + // Level 9 + ['health/check', 'ping/service'], + ['K', 'recovery/manager'], + ['sync/protocol', 'consensus/algorithm'], // From convergent paths + ['email/sender', 'smtp/gateway'], + ['http/client', 'retry/logic'], + ['render/pipeline', 'M'], + ['output/formatter', 'serializer/json'], + ['policy/enforcer', 'rule/engine'], + ['L', 'tape/backup'], + ['cold/storage', 'glacier/vault'], + ['dashboard/api', 'visualization/service'], + // Level 10 (final level) + ['ping/service', 'endpoint/monitor'], + ['recovery/manager', 'failover/system'], + ['consensus/algorithm', 'raft/implementation'], + ['smtp/gateway', 'mail/queue'], + ['retry/logic', 'exponential/backoff'], + ['M', 'final/output'], + ['serializer/json', 'schema/validator'], + ['rule/engine', 'decision/tree'], + ['tape/backup', 'offsite/storage'], + ['glacier/vault', 'deep/archive'], + ['visualization/service', 'chart/renderer'], + ], + }, + }); + await seneca.ready(); + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'root', + }); + (0, code_1.expect)(res.deps).equal([ + // ========== LEVEL 0 ========== + ['root', 'alpha'], + ['root', 'beta'], + ['root', 'gamma'], + // ========== LEVEL 1 ========== + ['alpha', 'A'], + ['alpha', 'sys/config'], + ['beta', 'lib/utils'], + ['beta', 'sys/auth'], + ['gamma', 'B'], + // ========== LEVEL 2 ========== + ['A', 'foo/bar1'], + ['B', 'foo/baz5'], + ['lib/utils', 'C'], + ['sys/auth', 'auth/provider2'], + ['sys/auth', 'auth/provider10'], + ['sys/config', 'app/module1'], + ['sys/config', 'app/module2'], + // ========== LEVEL 3 ========== + ['app/module1', 'core/service2'], + ['app/module1', 'core/service10'], + ['app/module2', 'data/processor1'], + ['auth/provider2', 'auth/token/handler'], + ['auth/provider10', 'D'], + ['C', 'lib/helper3'], + ['foo/bar1', 'foo/bar2'], + ['foo/bar1', 'foo/bar10'], + ['foo/baz5', 'dead/end1'], + // ========== LEVEL 4 ========== + ['auth/token/handler', 'security/validator'], + ['core/service2', 'db/connection5'], + ['core/service2', 'db/connection50'], + ['core/service10', 'cache/redis'], + ['D', 'monitor/logger'], + ['data/processor1', 'queue/worker1'], + ['data/processor1', 'queue/worker10'], + ['foo/bar2', 'E'], + ['foo/bar10', 'foo/bar100'], + ['lib/helper3', 'lib/helper30'], + // Note: dead/end1 has no children (dead end) + // ========== LEVEL 5 ========== + ['cache/redis', 'cache/redis/cluster'], + ['db/connection5', 'pool/manager1'], + ['db/connection50', 'F'], + ['E', 'report/generator'], + ['foo/bar100', 'foo/bar1000'], + ['lib/helper30', 'lib/helper300'], + ['monitor/logger', 'log/stream5'], + ['queue/worker1', 'task/executor2'], + ['queue/worker10', 'task/executor20'], + ['security/validator', 'G'], + // ========== LEVEL 6 ========== + ['cache/redis/cluster', 'node/shard1'], + ['cache/redis/cluster', 'node/shard10'], + ['F', 'backup/service'], + ['foo/bar1000', 'final/component1'], + ['G', 'audit/trail'], + // Note: lib/helper300 → sys/config creates cycle (sys/config visited at level 1) + ['lib/helper300', 'metrics/collector'], + ['log/stream5', 'storage/bucket2'], + ['log/stream5', 'storage/bucket10'], + ['pool/manager1', 'resource/allocator'], + ['report/generator', 'pdf/renderer'], + ['task/executor2', 'H'], + ['task/executor20', 'event/handler'], + // ========== LEVEL 7 ========== + ['audit/trail', 'compliance/checker'], + ['backup/service', 'snapshot/manager'], + ['event/handler', 'webhook/dispatcher'], + ['final/component1', 'J'], + ['H', 'notification/service'], + ['metrics/collector', 'stats/aggregator'], + ['node/shard1', 'replica/node1'], + ['node/shard10', 'replica/node10'], + ['pdf/renderer', 'template/engine'], + ['resource/allocator', 'I'], + ['storage/bucket2', 'archive/tier1'], + ['storage/bucket10', 'archive/tier10'], + // ========== LEVEL 8 ========== + ['archive/tier1', 'L'], + ['archive/tier10', 'cold/storage'], + ['compliance/checker', 'policy/enforcer'], + ['I', 'health/check'], + ['J', 'output/formatter'], + ['notification/service', 'email/sender'], + ['replica/node1', 'sync/protocol'], + // Note: replica/node10 → sync/protocol (convergent - sync/protocol already visited) + ['snapshot/manager', 'K'], + ['stats/aggregator', 'dashboard/api'], + ['template/engine', 'render/pipeline'], + ['webhook/dispatcher', 'http/client'], + // ========== LEVEL 9 ========== + ['cold/storage', 'glacier/vault'], + ['dashboard/api', 'visualization/service'], + ['email/sender', 'smtp/gateway'], + ['health/check', 'ping/service'], + ['http/client', 'retry/logic'], + ['K', 'recovery/manager'], + ['L', 'tape/backup'], + ['output/formatter', 'serializer/json'], + ['policy/enforcer', 'rule/engine'], + ['render/pipeline', 'M'], + ['sync/protocol', 'consensus/algorithm'], + // ========== LEVEL 10 ========== + ['consensus/algorithm', 'raft/implementation'], + ['glacier/vault', 'deep/archive'], + ['M', 'final/output'], + ['ping/service', 'endpoint/monitor'], + ['recovery/manager', 'failover/system'], + ['retry/logic', 'exponential/backoff'], + ['rule/engine', 'decision/tree'], + ['serializer/json', 'schema/validator'], + ['smtp/gateway', 'mail/queue'], + ['tape/backup', 'offsite/storage'], + ['visualization/service', 'chart/renderer'], + ]); + }); }); function makeSeneca(opts = {}) { const seneca = (0, seneca_1.default)({ legacy: false }).test().use('promisify').use('entity'); diff --git a/dist-test/Traverse.test.js.map b/dist-test/Traverse.test.js.map index 4532e10..0b5405c 100644 --- a/dist-test/Traverse.test.js.map +++ b/dist-test/Traverse.test.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":";AAAA,gEAAgE;;;;;AAEhE,yCAA0C;AAC1C,qCAAmC;AAEnC,oDAA2B;AAC3B,8CAA8C;AAC9C,8CAA8C;AAE9C,2CAA4B;AAC5B,2CAAyB;AAEzB,IAAA,oBAAQ,EAAC,UAAU,EAAE,GAAG,EAAE;IACxB,IAAA,gBAAI,EAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC7B,IAAA,aAAM,EAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAA;QAE3B,MAAM,MAAM,GAAG,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;aACrC,IAAI,EAAE;aACN,GAAG,CAAC,WAAW,CAAC;aAChB,GAAG,CAAC,QAAQ,CAAC;aACb,GAAG,CAAC,WAAQ,CAAC,CAAA;QAChB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,IAAA,aAAM,EAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,WAAW,EAAE,KAAK,IAAI,EAAE;QAC3B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;iBAC1B;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,kCAAkC;YAClC,yCAAyC;YACzC,kCAAkC;YAClC,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,UAAU,EAAE,WAAW,CAAC;SAC1B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE,EAAE;aACb;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,qBAAqB;oBACrB,CAAC,UAAU,EAAE,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,gDAAgD;QAChD,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;SACzB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,qCAAqC;oBACrC,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QAEF,4CAA4C;QAC5C,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;SACzB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAClC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;SACzB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,YAAY;oBACZ,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,YAAY;oBACZ,CAAC,UAAU,EAAE,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;SACzB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,gCAAgC;oBAChC,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,iDAAiD;QACjD,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;SACzB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,wBAAwB;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,4CAA4C;oBAC5C,CAAC,UAAU,EAAE,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;SACzB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,YAAY;oBACZ,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;SACzB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,CAAC,CAAA;QACzC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;iBAC1B;aACF;SACF,CAAC,CAAA;QACF,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,WAAW,CAAC;SAC1B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,CAAC,CAAA;QACzC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;YACtB,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;iBAC1B;aACF;SACF,CAAC,CAAA;QACF,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,UAAU,EAAE,WAAW,CAAC;SAC1B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,CAAC,CAAA;QACzC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;QACvD,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE,EAAE;aACb;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;iBAC1B;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,WAAW,CAAC;SAC1B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,qCAAqC;oBACrC,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,WAAW,EAAE,WAAW,CAAC;iBAC3B;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,WAAW,EAAE,WAAW,CAAC;SAC3B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,sCAAsC;oBACtC,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;iBAC1B;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,UAAU,EAAE,WAAW,CAAC;SAC1B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;iBAC1B;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,WAAW,CAAC;SAC1B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,WAAW,EAAE,WAAW,CAAC;oBAC1B,uCAAuC;oBACvC,CAAC,WAAW,EAAE,WAAW,CAAC;oBAC1B,CAAC,WAAW,EAAE,WAAW,CAAC;iBAC3B;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,WAAW,CAAC;YAEzB,UAAU;YACV,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,WAAW,EAAE,WAAW,CAAC;YAE1B,UAAU;YACV,CAAC,WAAW,EAAE,WAAW,CAAC;SAC3B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,WAAW,EAAE,WAAW,CAAC;oBAC1B,gDAAgD;oBAChD,CAAC,WAAW,EAAE,UAAU,CAAC;oBACzB,CAAC,WAAW,EAAE,WAAW,CAAC;iBAC3B;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,WAAW,CAAC;YAEzB,UAAU;YACV,CAAC,WAAW,EAAE,WAAW,CAAC;YAC1B,CAAC,WAAW,EAAE,WAAW,CAAC;SAC3B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,WAAW,EAAE,WAAW,CAAC;oBAC1B,uBAAuB;oBACvB,CAAC,WAAW,EAAE,WAAW,CAAC;oBAC1B,sBAAsB;oBACtB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,WAAW,EAAE,WAAW,CAAC;iBAC3B;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,UAAU,EAAE,WAAW,CAAC;YAEzB,UAAU;YACV,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,WAAW,EAAE,WAAW,CAAC;YAE1B,UAAU;YACV,CAAC,WAAW,EAAE,WAAW,CAAC;SAC3B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;iBACX;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,GAAG;SAChB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YAEV,UAAU;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YAEV,UAAU;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;SACX,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;iBACX;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,GAAG;SAChB,CAAC,CAAA;QAEF,oBAAoB;QACpB,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,OAAO,EAAE,OAAO,CAAC;oBAClB,CAAC,OAAO,EAAE,OAAO,CAAC;oBAClB,CAAC,OAAO,EAAE,OAAO,CAAC;oBAClB,CAAC,OAAO,EAAE,OAAO,CAAC;oBAClB,CAAC,OAAO,EAAE,OAAO,CAAC;oBAClB,CAAC,OAAO,EAAE,OAAO,CAAC;oBAClB,CAAC,OAAO,EAAE,OAAO,CAAC;oBAClB,CAAC,OAAO,EAAE,OAAO,CAAC;oBAClB,CAAC,OAAO,EAAE,OAAO,CAAC;oBAClB,CAAC,OAAO,EAAE,QAAQ,CAAC;iBACpB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,OAAO;SACpB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,CAAC,OAAO,EAAE,OAAO,CAAC;YAClB,CAAC,OAAO,EAAE,OAAO,CAAC;YAClB,CAAC,OAAO,EAAE,OAAO,CAAC;YAClB,CAAC,OAAO,EAAE,OAAO,CAAC;YAClB,CAAC,OAAO,EAAE,OAAO,CAAC;YAClB,CAAC,OAAO,EAAE,OAAO,CAAC;YAClB,CAAC,OAAO,EAAE,OAAO,CAAC;YAClB,CAAC,OAAO,EAAE,OAAO,CAAC;YAClB,CAAC,OAAO,EAAE,OAAO,CAAC;YAClB,CAAC,OAAO,EAAE,QAAQ,CAAC;SACpB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;iBACX;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,GAAG;SAChB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YAEV,UAAU;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YAEV,UAAU;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;SACX,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;iBACX;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,GAAG;SAChB,CAAC,CAAA;QAEF,mDAAmD;QACnD,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YAEV,4BAA4B;YAC5B,CAAC,GAAG,EAAE,GAAG,CAAC;YAEV,UAAU;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;SACX,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,MAAM,EAAE,QAAQ,CAAC;oBAClB,CAAC,MAAM,EAAE,OAAO,CAAC;oBACjB,CAAC,MAAM,EAAE,OAAO,CAAC;oBACjB,CAAC,MAAM,EAAE,QAAQ,CAAC;oBAClB,CAAC,OAAO,EAAE,QAAQ,CAAC;oBACnB,CAAC,OAAO,EAAE,QAAQ,CAAC;oBACnB,CAAC,QAAQ,EAAE,SAAS,CAAC;oBACrB,CAAC,QAAQ,EAAE,SAAS,CAAC;iBACtB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,MAAM;SACnB,CAAC,CAAA;QAEF,gDAAgD;QAChD,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,MAAM,EAAE,OAAO,CAAC;YACjB,CAAC,MAAM,EAAE,OAAO,CAAC;YACjB,CAAC,MAAM,EAAE,QAAQ,CAAC;YAClB,CAAC,MAAM,EAAE,QAAQ,CAAC;YAElB,UAAU;YACV,CAAC,OAAO,EAAE,QAAQ,CAAC;YACnB,CAAC,OAAO,EAAE,QAAQ,CAAC;YACnB,CAAC,QAAQ,EAAE,SAAS,CAAC;YACrB,CAAC,QAAQ,EAAE,SAAS,CAAC;SACtB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,MAAM,EAAE,GAAG,CAAC;oBACb,CAAC,MAAM,EAAE,GAAG,CAAC;oBACb,CAAC,MAAM,EAAE,GAAG,CAAC;oBACb,CAAC,GAAG,EAAE,QAAQ,CAAC;oBACf,CAAC,GAAG,EAAE,QAAQ,CAAC;oBACf,CAAC,GAAG,EAAE,QAAQ,CAAC;oBACf,CAAC,QAAQ,EAAE,KAAK,CAAC;iBAClB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,MAAM;SACnB,CAAC,CAAA;QAEF,oDAAoD;QACpD,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,MAAM,EAAE,GAAG,CAAC;YACb,CAAC,MAAM,EAAE,GAAG,CAAC;YACb,CAAC,MAAM,EAAE,GAAG,CAAC;YAEb,yBAAyB;YACzB,CAAC,GAAG,EAAE,QAAQ,CAAC;YAEf,UAAU;YACV,CAAC,QAAQ,EAAE,KAAK,CAAC;SAClB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,+BAA+B;oBAC/B,CAAC,MAAM,EAAE,OAAO,CAAC;oBACjB,CAAC,MAAM,EAAE,MAAM,CAAC;oBAChB,CAAC,MAAM,EAAE,OAAO,CAAC;oBAEjB,iCAAiC;oBACjC,CAAC,OAAO,EAAE,YAAY,CAAC;oBACvB,CAAC,OAAO,EAAE,GAAG,CAAC;oBACd,CAAC,MAAM,EAAE,UAAU,CAAC;oBACpB,CAAC,MAAM,EAAE,WAAW,CAAC;oBACrB,CAAC,OAAO,EAAE,GAAG,CAAC;oBAEd,2CAA2C;oBAC3C,CAAC,YAAY,EAAE,aAAa,CAAC;oBAC7B,CAAC,YAAY,EAAE,aAAa,CAAC;oBAC7B,CAAC,GAAG,EAAE,UAAU,CAAC;oBACjB,CAAC,UAAU,EAAE,iBAAiB,CAAC;oBAC/B,CAAC,UAAU,EAAE,gBAAgB,CAAC;oBAC9B,CAAC,WAAW,EAAE,GAAG,CAAC;oBAClB,CAAC,GAAG,EAAE,UAAU,CAAC;oBAEjB,0BAA0B;oBAC1B,CAAC,aAAa,EAAE,gBAAgB,CAAC;oBACjC,CAAC,aAAa,EAAE,eAAe,CAAC;oBAChC,CAAC,aAAa,EAAE,iBAAiB,CAAC;oBAClC,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;oBACxC,CAAC,iBAAiB,EAAE,GAAG,CAAC;oBACxB,CAAC,GAAG,EAAE,aAAa,CAAC;oBACpB,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,kBAAkB;oBAE7C,UAAU;oBACV,CAAC,eAAe,EAAE,gBAAgB,CAAC;oBACnC,CAAC,eAAe,EAAE,iBAAiB,CAAC;oBACpC,CAAC,gBAAgB,EAAE,aAAa,CAAC;oBACjC,CAAC,iBAAiB,EAAE,eAAe,CAAC;oBACpC,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;oBACrC,CAAC,UAAU,EAAE,GAAG,CAAC;oBACjB,CAAC,WAAW,EAAE,YAAY,CAAC;oBAC3B,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;oBAC5C,CAAC,GAAG,EAAE,gBAAgB,CAAC;oBACvB,CAAC,aAAa,EAAE,cAAc,CAAC;oBAC/B,sCAAsC;oBAEtC,UAAU;oBACV,CAAC,gBAAgB,EAAE,eAAe,CAAC;oBACnC,CAAC,iBAAiB,EAAE,GAAG,CAAC;oBACxB,CAAC,aAAa,EAAE,qBAAqB,CAAC;oBACtC,CAAC,eAAe,EAAE,gBAAgB,CAAC;oBACnC,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;oBACrC,CAAC,GAAG,EAAE,kBAAkB,CAAC;oBACzB,CAAC,YAAY,EAAE,aAAa,CAAC;oBAC7B,CAAC,oBAAoB,EAAE,GAAG,CAAC;oBAC3B,CAAC,gBAAgB,EAAE,aAAa,CAAC;oBACjC,CAAC,cAAc,EAAE,eAAe,CAAC;oBAEjC,UAAU;oBACV,CAAC,eAAe,EAAE,oBAAoB,CAAC;oBACvC,CAAC,GAAG,EAAE,gBAAgB,CAAC;oBACvB,CAAC,qBAAqB,EAAE,aAAa,CAAC;oBACtC,CAAC,qBAAqB,EAAE,cAAc,CAAC;oBACvC,CAAC,gBAAgB,EAAE,GAAG,CAAC;oBACvB,CAAC,iBAAiB,EAAE,eAAe,CAAC;oBACpC,CAAC,kBAAkB,EAAE,cAAc,CAAC;oBACpC,CAAC,aAAa,EAAE,kBAAkB,CAAC;oBACnC,CAAC,GAAG,EAAE,aAAa,CAAC;oBACpB,CAAC,aAAa,EAAE,kBAAkB,CAAC;oBACnC,CAAC,aAAa,EAAE,iBAAiB,CAAC;oBAClC,iEAAiE;oBACjE,CAAC,eAAe,EAAE,YAAY,CAAC;oBAC/B,CAAC,eAAe,EAAE,mBAAmB,CAAC;oBAEtC,UAAU;oBACV,CAAC,oBAAoB,EAAE,GAAG,CAAC;oBAC3B,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;oBACtC,CAAC,aAAa,EAAE,eAAe,CAAC;oBAChC,CAAC,cAAc,EAAE,gBAAgB,CAAC;oBAClC,CAAC,GAAG,EAAE,sBAAsB,CAAC;oBAC7B,CAAC,eAAe,EAAE,oBAAoB,CAAC;oBACvC,CAAC,cAAc,EAAE,iBAAiB,CAAC;oBACnC,CAAC,kBAAkB,EAAE,GAAG,CAAC;oBACzB,CAAC,aAAa,EAAE,oBAAoB,CAAC;oBACrC,CAAC,iBAAiB,EAAE,eAAe,CAAC;oBACpC,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;oBACtC,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;oBAEzC,UAAU;oBACV,CAAC,GAAG,EAAE,cAAc,CAAC;oBACrB,CAAC,kBAAkB,EAAE,GAAG,CAAC;oBACzB,CAAC,eAAe,EAAE,eAAe,CAAC;oBAClC,CAAC,gBAAgB,EAAE,eAAe,CAAC,EAAE,kBAAkB;oBACvD,CAAC,sBAAsB,EAAE,cAAc,CAAC;oBACxC,CAAC,oBAAoB,EAAE,aAAa,CAAC;oBACrC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;oBACtC,CAAC,GAAG,EAAE,kBAAkB,CAAC;oBACzB,CAAC,oBAAoB,EAAE,iBAAiB,CAAC;oBACzC,CAAC,eAAe,EAAE,GAAG,CAAC;oBACtB,CAAC,gBAAgB,EAAE,cAAc,CAAC;oBAClC,CAAC,kBAAkB,EAAE,eAAe,CAAC;oBAErC,UAAU;oBACV,CAAC,cAAc,EAAE,cAAc,CAAC;oBAChC,CAAC,GAAG,EAAE,kBAAkB,CAAC;oBACzB,CAAC,eAAe,EAAE,qBAAqB,CAAC,EAAE,wBAAwB;oBAClE,CAAC,cAAc,EAAE,cAAc,CAAC;oBAChC,CAAC,aAAa,EAAE,aAAa,CAAC;oBAC9B,CAAC,iBAAiB,EAAE,GAAG,CAAC;oBACxB,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;oBACvC,CAAC,iBAAiB,EAAE,aAAa,CAAC;oBAClC,CAAC,GAAG,EAAE,aAAa,CAAC;oBACpB,CAAC,cAAc,EAAE,eAAe,CAAC;oBACjC,CAAC,eAAe,EAAE,uBAAuB,CAAC;oBAE1C,yBAAyB;oBACzB,CAAC,cAAc,EAAE,kBAAkB,CAAC;oBACpC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;oBACvC,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;oBAC9C,CAAC,cAAc,EAAE,YAAY,CAAC;oBAC9B,CAAC,aAAa,EAAE,qBAAqB,CAAC;oBACtC,CAAC,GAAG,EAAE,cAAc,CAAC;oBACrB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;oBACvC,CAAC,aAAa,EAAE,eAAe,CAAC;oBAChC,CAAC,aAAa,EAAE,iBAAiB,CAAC;oBAClC,CAAC,eAAe,EAAE,cAAc,CAAC;oBACjC,CAAC,uBAAuB,EAAE,gBAAgB,CAAC;iBAC5C;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,MAAM;SACnB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,gCAAgC;YAChC,CAAC,MAAM,EAAE,OAAO,CAAC;YACjB,CAAC,MAAM,EAAE,MAAM,CAAC;YAChB,CAAC,MAAM,EAAE,OAAO,CAAC;YAEjB,gCAAgC;YAChC,CAAC,OAAO,EAAE,GAAG,CAAC;YACd,CAAC,OAAO,EAAE,YAAY,CAAC;YACvB,CAAC,MAAM,EAAE,WAAW,CAAC;YACrB,CAAC,MAAM,EAAE,UAAU,CAAC;YACpB,CAAC,OAAO,EAAE,GAAG,CAAC;YAEd,gCAAgC;YAChC,CAAC,GAAG,EAAE,UAAU,CAAC;YACjB,CAAC,GAAG,EAAE,UAAU,CAAC;YACjB,CAAC,WAAW,EAAE,GAAG,CAAC;YAClB,CAAC,UAAU,EAAE,gBAAgB,CAAC;YAC9B,CAAC,UAAU,EAAE,iBAAiB,CAAC;YAC/B,CAAC,YAAY,EAAE,aAAa,CAAC;YAC7B,CAAC,YAAY,EAAE,aAAa,CAAC;YAE7B,gCAAgC;YAChC,CAAC,aAAa,EAAE,eAAe,CAAC;YAChC,CAAC,aAAa,EAAE,gBAAgB,CAAC;YACjC,CAAC,aAAa,EAAE,iBAAiB,CAAC;YAClC,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;YACxC,CAAC,iBAAiB,EAAE,GAAG,CAAC;YACxB,CAAC,GAAG,EAAE,aAAa,CAAC;YACpB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,UAAU,EAAE,WAAW,CAAC;YAEzB,gCAAgC;YAChC,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;YAC5C,CAAC,eAAe,EAAE,gBAAgB,CAAC;YACnC,CAAC,eAAe,EAAE,iBAAiB,CAAC;YACpC,CAAC,gBAAgB,EAAE,aAAa,CAAC;YACjC,CAAC,GAAG,EAAE,gBAAgB,CAAC;YACvB,CAAC,iBAAiB,EAAE,eAAe,CAAC;YACpC,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;YACrC,CAAC,UAAU,EAAE,GAAG,CAAC;YACjB,CAAC,WAAW,EAAE,YAAY,CAAC;YAC3B,CAAC,aAAa,EAAE,cAAc,CAAC;YAC/B,6CAA6C;YAE7C,gCAAgC;YAChC,CAAC,aAAa,EAAE,qBAAqB,CAAC;YACtC,CAAC,gBAAgB,EAAE,eAAe,CAAC;YACnC,CAAC,iBAAiB,EAAE,GAAG,CAAC;YACxB,CAAC,GAAG,EAAE,kBAAkB,CAAC;YACzB,CAAC,YAAY,EAAE,aAAa,CAAC;YAC7B,CAAC,cAAc,EAAE,eAAe,CAAC;YACjC,CAAC,gBAAgB,EAAE,aAAa,CAAC;YACjC,CAAC,eAAe,EAAE,gBAAgB,CAAC;YACnC,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;YACrC,CAAC,oBAAoB,EAAE,GAAG,CAAC;YAE3B,gCAAgC;YAChC,CAAC,qBAAqB,EAAE,aAAa,CAAC;YACtC,CAAC,qBAAqB,EAAE,cAAc,CAAC;YACvC,CAAC,GAAG,EAAE,gBAAgB,CAAC;YACvB,CAAC,aAAa,EAAE,kBAAkB,CAAC;YACnC,CAAC,GAAG,EAAE,aAAa,CAAC;YACpB,iFAAiF;YACjF,CAAC,eAAe,EAAE,mBAAmB,CAAC;YACtC,CAAC,aAAa,EAAE,iBAAiB,CAAC;YAClC,CAAC,aAAa,EAAE,kBAAkB,CAAC;YACnC,CAAC,eAAe,EAAE,oBAAoB,CAAC;YACvC,CAAC,kBAAkB,EAAE,cAAc,CAAC;YACpC,CAAC,gBAAgB,EAAE,GAAG,CAAC;YACvB,CAAC,iBAAiB,EAAE,eAAe,CAAC;YAEpC,gCAAgC;YAChC,CAAC,aAAa,EAAE,oBAAoB,CAAC;YACrC,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;YACtC,CAAC,eAAe,EAAE,oBAAoB,CAAC;YACvC,CAAC,kBAAkB,EAAE,GAAG,CAAC;YACzB,CAAC,GAAG,EAAE,sBAAsB,CAAC;YAC7B,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;YACzC,CAAC,aAAa,EAAE,eAAe,CAAC;YAChC,CAAC,cAAc,EAAE,gBAAgB,CAAC;YAClC,CAAC,cAAc,EAAE,iBAAiB,CAAC;YACnC,CAAC,oBAAoB,EAAE,GAAG,CAAC;YAC3B,CAAC,iBAAiB,EAAE,eAAe,CAAC;YACpC,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;YAEtC,gCAAgC;YAChC,CAAC,eAAe,EAAE,GAAG,CAAC;YACtB,CAAC,gBAAgB,EAAE,cAAc,CAAC;YAClC,CAAC,oBAAoB,EAAE,iBAAiB,CAAC;YACzC,CAAC,GAAG,EAAE,cAAc,CAAC;YACrB,CAAC,GAAG,EAAE,kBAAkB,CAAC;YACzB,CAAC,sBAAsB,EAAE,cAAc,CAAC;YACxC,CAAC,eAAe,EAAE,eAAe,CAAC;YAClC,oFAAoF;YACpF,CAAC,kBAAkB,EAAE,GAAG,CAAC;YACzB,CAAC,kBAAkB,EAAE,eAAe,CAAC;YACrC,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;YACtC,CAAC,oBAAoB,EAAE,aAAa,CAAC;YAErC,gCAAgC;YAChC,CAAC,cAAc,EAAE,eAAe,CAAC;YACjC,CAAC,eAAe,EAAE,uBAAuB,CAAC;YAC1C,CAAC,cAAc,EAAE,cAAc,CAAC;YAChC,CAAC,cAAc,EAAE,cAAc,CAAC;YAChC,CAAC,aAAa,EAAE,aAAa,CAAC;YAC9B,CAAC,GAAG,EAAE,kBAAkB,CAAC;YACzB,CAAC,GAAG,EAAE,aAAa,CAAC;YACpB,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,iBAAiB,EAAE,aAAa,CAAC;YAClC,CAAC,iBAAiB,EAAE,GAAG,CAAC;YACxB,CAAC,eAAe,EAAE,qBAAqB,CAAC;YAExC,iCAAiC;YACjC,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;YAC9C,CAAC,eAAe,EAAE,cAAc,CAAC;YACjC,CAAC,GAAG,EAAE,cAAc,CAAC;YACrB,CAAC,cAAc,EAAE,kBAAkB,CAAC;YACpC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;YACvC,CAAC,aAAa,EAAE,qBAAqB,CAAC;YACtC,CAAC,aAAa,EAAE,eAAe,CAAC;YAChC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;YACvC,CAAC,cAAc,EAAE,YAAY,CAAC;YAC9B,CAAC,aAAa,EAAE,iBAAiB,CAAC;YAClC,CAAC,uBAAuB,EAAE,gBAAgB,CAAC;SAC5C,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,SAAS,UAAU,CAAC,OAAY,EAAE;IAChC,MAAM,MAAM,GAAG,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC9E,OAAO,MAAM,CAAA;AACf,CAAC"} \ No newline at end of file diff --git a/test/Traverse.test.ts b/test/Traverse.test.ts index de63360..0633a9f 100644 --- a/test/Traverse.test.ts +++ b/test/Traverse.test.ts @@ -757,6 +757,515 @@ describe('Traverse', () => { ['foo/bar14', 'foo/bar15'], ]) }) + + test('find-deps-single-cycle', async () => { + const seneca = makeSeneca().use(Traverse, { + relations: { + parental: [ + ['A', 'B'], + ['A', 'C'], + ['C', 'E'], + ['C', 'D'], + ['E', 'G'], + ['E', 'F'], + ['F', 'H'], + ['C', 'A'], + ['N', 'M'], + ], + }, + }) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'C', + }) + + expect(res.deps).equal([ + // Level 0 + ['C', 'A'], + ['C', 'D'], + ['C', 'E'], + + // Level 1 + ['A', 'B'], + ['E', 'F'], + ['E', 'G'], + + // Level 2 + ['F', 'H'], + ]) + }) + + test('find-deps-single-missing-node', async () => { + const seneca = makeSeneca().use(Traverse, { + relations: { + parental: [ + ['A', 'B'], + ['B', 'C'], + ['D', 'E'], + ], + }, + }) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'X', + }) + + // X has no children + expect(res.deps).equal([]) + }) + + test('find-deps-deep-linear-chain', async () => { + const seneca = makeSeneca().use(Traverse, { + relations: { + parental: [ + ['node0', 'node1'], + ['node1', 'node2'], + ['node2', 'node3'], + ['node3', 'node4'], + ['node4', 'node5'], + ['node5', 'node6'], + ['node6', 'node7'], + ['node7', 'node8'], + ['node8', 'node9'], + ['node9', 'node10'], + ], + }, + }) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'node0', + }) + + expect(res.deps).equal([ + ['node0', 'node1'], + ['node1', 'node2'], + ['node2', 'node3'], + ['node3', 'node4'], + ['node4', 'node5'], + ['node5', 'node6'], + ['node6', 'node7'], + ['node7', 'node8'], + ['node8', 'node9'], + ['node9', 'node10'], + ]) + }) + + test('find-deps-binary-tree', async () => { + const seneca = makeSeneca().use(Traverse, { + relations: { + parental: [ + ['A', 'B'], + ['A', 'C'], + ['B', 'D'], + ['B', 'E'], + ['C', 'F'], + ['C', 'G'], + ['D', 'H'], + ['D', 'I'], + ['E', 'J'], + ['E', 'K'], + ], + }, + }) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'A', + }) + + expect(res.deps).equal([ + // Level 0 + ['A', 'B'], + ['A', 'C'], + + // Level 1 + ['B', 'D'], + ['B', 'E'], + ['C', 'F'], + ['C', 'G'], + + // Level 2 + ['D', 'H'], + ['D', 'I'], + ['E', 'J'], + ['E', 'K'], + ]) + }) + + test('find-deps-diamond-pattern', async () => { + const seneca = makeSeneca().use(Traverse, { + relations: { + parental: [ + ['A', 'B'], + ['A', 'C'], + ['B', 'D'], + ['C', 'D'], + ['D', 'E'], + ], + }, + }) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'A', + }) + + // D is reached first from B (alphabetically first) + expect(res.deps).equal([ + // Level 0 + ['A', 'B'], + ['A', 'C'], + + // Level 1 - D reached via B + ['B', 'D'], + + // Level 2 + ['D', 'E'], + ]) + }) + + test('find-deps-mixed-alph-sort', async () => { + const seneca = makeSeneca().use(Traverse, { + relations: { + parental: [ + ['root', 'node10'], + ['root', 'node2'], + ['root', 'node1'], + ['root', 'node20'], + ['node1', 'child2'], + ['node2', 'child1'], + ['node10', 'child10'], + ['node20', 'child20'], + ], + }, + }) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'root', + }) + + // Natural sorting: node1, node2, node10, node20 + expect(res.deps).equal([ + // Level 0 + ['root', 'node1'], + ['root', 'node2'], + ['root', 'node10'], + ['root', 'node20'], + + // Level 1 + ['node1', 'child2'], + ['node2', 'child1'], + ['node10', 'child10'], + ['node20', 'child20'], + ]) + }) + + test('find-deps-all-nodes-converge-to-one', async () => { + const seneca = makeSeneca().use(Traverse, { + relations: { + parental: [ + ['root', 'A'], + ['root', 'B'], + ['root', 'C'], + ['A', 'target'], + ['B', 'target'], + ['C', 'target'], + ['target', 'end'], + ], + }, + }) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'root', + }) + + // target reached first via A (alphabetically first) + expect(res.deps).equal([ + // Level 0 + ['root', 'A'], + ['root', 'B'], + ['root', 'C'], + + // Level 1 - target via A + ['A', 'target'], + + // Level 2 + ['target', 'end'], + ]) + }) + + test('find-deps-deep-10-levels-complex', async () => { + const seneca = makeSeneca().use(Traverse, { + relations: { + parental: [ + // Level 0: root → simple names + ['root', 'alpha'], + ['root', 'beta'], + ['root', 'gamma'], + + // Level 1: simple → mixed format + ['alpha', 'sys/config'], + ['alpha', 'A'], + ['beta', 'sys/auth'], + ['beta', 'lib/utils'], + ['gamma', 'B'], + + // Level 2: mixed → namespaced with numbers + ['sys/config', 'app/module1'], + ['sys/config', 'app/module2'], + ['A', 'foo/bar1'], + ['sys/auth', 'auth/provider10'], + ['sys/auth', 'auth/provider2'], + ['lib/utils', 'C'], + ['B', 'foo/baz5'], + + // Level 3: deeper nesting + ['app/module1', 'core/service10'], + ['app/module1', 'core/service2'], + ['app/module2', 'data/processor1'], + ['foo/bar1', 'foo/bar10'], + ['foo/bar1', 'foo/bar2'], + ['auth/provider2', 'auth/token/handler'], + ['auth/provider10', 'D'], + ['C', 'lib/helper3'], + ['foo/baz5', 'dead/end1'], // Dead end branch + + // Level 4 + ['core/service2', 'db/connection5'], + ['core/service2', 'db/connection50'], + ['core/service10', 'cache/redis'], + ['data/processor1', 'queue/worker1'], + ['data/processor1', 'queue/worker10'], + ['foo/bar2', 'E'], + ['foo/bar10', 'foo/bar100'], + ['auth/token/handler', 'security/validator'], + ['D', 'monitor/logger'], + ['lib/helper3', 'lib/helper30'], + // Dead end: dead/end1 has no children + + // Level 5 + ['db/connection5', 'pool/manager1'], + ['db/connection50', 'F'], + ['cache/redis', 'cache/redis/cluster'], + ['queue/worker1', 'task/executor2'], + ['queue/worker10', 'task/executor20'], + ['E', 'report/generator'], + ['foo/bar100', 'foo/bar1000'], + ['security/validator', 'G'], + ['monitor/logger', 'log/stream5'], + ['lib/helper30', 'lib/helper300'], + + // Level 6 + ['pool/manager1', 'resource/allocator'], + ['F', 'backup/service'], + ['cache/redis/cluster', 'node/shard1'], + ['cache/redis/cluster', 'node/shard10'], + ['task/executor2', 'H'], + ['task/executor20', 'event/handler'], + ['report/generator', 'pdf/renderer'], + ['foo/bar1000', 'final/component1'], + ['G', 'audit/trail'], + ['log/stream5', 'storage/bucket10'], + ['log/stream5', 'storage/bucket2'], + // Cycle: lib/helper300 → sys/config (already visited at level 1) + ['lib/helper300', 'sys/config'], + ['lib/helper300', 'metrics/collector'], + + // Level 7 + ['resource/allocator', 'I'], + ['backup/service', 'snapshot/manager'], + ['node/shard1', 'replica/node1'], + ['node/shard10', 'replica/node10'], + ['H', 'notification/service'], + ['event/handler', 'webhook/dispatcher'], + ['pdf/renderer', 'template/engine'], + ['final/component1', 'J'], + ['audit/trail', 'compliance/checker'], + ['storage/bucket2', 'archive/tier1'], + ['storage/bucket10', 'archive/tier10'], + ['metrics/collector', 'stats/aggregator'], + + // Level 8 + ['I', 'health/check'], + ['snapshot/manager', 'K'], + ['replica/node1', 'sync/protocol'], + ['replica/node10', 'sync/protocol'], // Convergent path + ['notification/service', 'email/sender'], + ['webhook/dispatcher', 'http/client'], + ['template/engine', 'render/pipeline'], + ['J', 'output/formatter'], + ['compliance/checker', 'policy/enforcer'], + ['archive/tier1', 'L'], + ['archive/tier10', 'cold/storage'], + ['stats/aggregator', 'dashboard/api'], + + // Level 9 + ['health/check', 'ping/service'], + ['K', 'recovery/manager'], + ['sync/protocol', 'consensus/algorithm'], // From convergent paths + ['email/sender', 'smtp/gateway'], + ['http/client', 'retry/logic'], + ['render/pipeline', 'M'], + ['output/formatter', 'serializer/json'], + ['policy/enforcer', 'rule/engine'], + ['L', 'tape/backup'], + ['cold/storage', 'glacier/vault'], + ['dashboard/api', 'visualization/service'], + + // Level 10 (final level) + ['ping/service', 'endpoint/monitor'], + ['recovery/manager', 'failover/system'], + ['consensus/algorithm', 'raft/implementation'], + ['smtp/gateway', 'mail/queue'], + ['retry/logic', 'exponential/backoff'], + ['M', 'final/output'], + ['serializer/json', 'schema/validator'], + ['rule/engine', 'decision/tree'], + ['tape/backup', 'offsite/storage'], + ['glacier/vault', 'deep/archive'], + ['visualization/service', 'chart/renderer'], + ], + }, + }) + await seneca.ready() + + const res = await seneca.post('sys:traverse,find:deps', { + rootEntity: 'root', + }) + + expect(res.deps).equal([ + // ========== LEVEL 0 ========== + ['root', 'alpha'], + ['root', 'beta'], + ['root', 'gamma'], + + // ========== LEVEL 1 ========== + ['alpha', 'A'], + ['alpha', 'sys/config'], + ['beta', 'lib/utils'], + ['beta', 'sys/auth'], + ['gamma', 'B'], + + // ========== LEVEL 2 ========== + ['A', 'foo/bar1'], + ['B', 'foo/baz5'], + ['lib/utils', 'C'], + ['sys/auth', 'auth/provider2'], + ['sys/auth', 'auth/provider10'], + ['sys/config', 'app/module1'], + ['sys/config', 'app/module2'], + + // ========== LEVEL 3 ========== + ['app/module1', 'core/service2'], + ['app/module1', 'core/service10'], + ['app/module2', 'data/processor1'], + ['auth/provider2', 'auth/token/handler'], + ['auth/provider10', 'D'], + ['C', 'lib/helper3'], + ['foo/bar1', 'foo/bar2'], + ['foo/bar1', 'foo/bar10'], + ['foo/baz5', 'dead/end1'], + + // ========== LEVEL 4 ========== + ['auth/token/handler', 'security/validator'], + ['core/service2', 'db/connection5'], + ['core/service2', 'db/connection50'], + ['core/service10', 'cache/redis'], + ['D', 'monitor/logger'], + ['data/processor1', 'queue/worker1'], + ['data/processor1', 'queue/worker10'], + ['foo/bar2', 'E'], + ['foo/bar10', 'foo/bar100'], + ['lib/helper3', 'lib/helper30'], + // Note: dead/end1 has no children (dead end) + + // ========== LEVEL 5 ========== + ['cache/redis', 'cache/redis/cluster'], + ['db/connection5', 'pool/manager1'], + ['db/connection50', 'F'], + ['E', 'report/generator'], + ['foo/bar100', 'foo/bar1000'], + ['lib/helper30', 'lib/helper300'], + ['monitor/logger', 'log/stream5'], + ['queue/worker1', 'task/executor2'], + ['queue/worker10', 'task/executor20'], + ['security/validator', 'G'], + + // ========== LEVEL 6 ========== + ['cache/redis/cluster', 'node/shard1'], + ['cache/redis/cluster', 'node/shard10'], + ['F', 'backup/service'], + ['foo/bar1000', 'final/component1'], + ['G', 'audit/trail'], + // Note: lib/helper300 → sys/config creates cycle (sys/config visited at level 1) + ['lib/helper300', 'metrics/collector'], + ['log/stream5', 'storage/bucket2'], + ['log/stream5', 'storage/bucket10'], + ['pool/manager1', 'resource/allocator'], + ['report/generator', 'pdf/renderer'], + ['task/executor2', 'H'], + ['task/executor20', 'event/handler'], + + // ========== LEVEL 7 ========== + ['audit/trail', 'compliance/checker'], + ['backup/service', 'snapshot/manager'], + ['event/handler', 'webhook/dispatcher'], + ['final/component1', 'J'], + ['H', 'notification/service'], + ['metrics/collector', 'stats/aggregator'], + ['node/shard1', 'replica/node1'], + ['node/shard10', 'replica/node10'], + ['pdf/renderer', 'template/engine'], + ['resource/allocator', 'I'], + ['storage/bucket2', 'archive/tier1'], + ['storage/bucket10', 'archive/tier10'], + + // ========== LEVEL 8 ========== + ['archive/tier1', 'L'], + ['archive/tier10', 'cold/storage'], + ['compliance/checker', 'policy/enforcer'], + ['I', 'health/check'], + ['J', 'output/formatter'], + ['notification/service', 'email/sender'], + ['replica/node1', 'sync/protocol'], + // Note: replica/node10 → sync/protocol (convergent - sync/protocol already visited) + ['snapshot/manager', 'K'], + ['stats/aggregator', 'dashboard/api'], + ['template/engine', 'render/pipeline'], + ['webhook/dispatcher', 'http/client'], + + // ========== LEVEL 9 ========== + ['cold/storage', 'glacier/vault'], + ['dashboard/api', 'visualization/service'], + ['email/sender', 'smtp/gateway'], + ['health/check', 'ping/service'], + ['http/client', 'retry/logic'], + ['K', 'recovery/manager'], + ['L', 'tape/backup'], + ['output/formatter', 'serializer/json'], + ['policy/enforcer', 'rule/engine'], + ['render/pipeline', 'M'], + ['sync/protocol', 'consensus/algorithm'], + + // ========== LEVEL 10 ========== + ['consensus/algorithm', 'raft/implementation'], + ['glacier/vault', 'deep/archive'], + ['M', 'final/output'], + ['ping/service', 'endpoint/monitor'], + ['recovery/manager', 'failover/system'], + ['retry/logic', 'exponential/backoff'], + ['rule/engine', 'decision/tree'], + ['serializer/json', 'schema/validator'], + ['smtp/gateway', 'mail/queue'], + ['tape/backup', 'offsite/storage'], + ['visualization/service', 'chart/renderer'], + ]) + }) }) function makeSeneca(opts: any = {}) { From 0b7b0f31b215d6ed915473bb4ddbb1d4d1877bcd Mon Sep 17 00:00:00 2001 From: Leonardo Cunha Date: Tue, 9 Dec 2025 12:25:18 -0300 Subject: [PATCH 21/22] refactor: only get relations from options --- dist-test/Traverse.test.js | 87 ------------------------------ dist-test/Traverse.test.js.map | 2 +- dist/Traverse.d.ts.map | 2 +- dist/Traverse.js | 3 +- dist/Traverse.js.map | 2 +- src/Traverse.ts | 7 +-- test/Traverse.test.ts | 99 ---------------------------------- 7 files changed, 5 insertions(+), 197 deletions(-) diff --git a/dist-test/Traverse.test.js b/dist-test/Traverse.test.js index 14169a0..3940e4d 100644 --- a/dist-test/Traverse.test.js +++ b/dist-test/Traverse.test.js @@ -272,93 +272,6 @@ const __2 = __importDefault(require("..")); ['foo/bar1', 'foo/bar2'], ]); }); - (0, node_test_1.test)('find-deps-default-root', async () => { - const seneca = makeSeneca().use(__2.default); - await seneca.ready(); - const res = await seneca.post('sys:traverse,find:deps', { - relations: { - parental: [ - ['foo/bar0', 'foo/bar3'], - ['sys/user', 'foo/bar1'], - ['foo/bar0', 'foo/bar2'], - ['foo/bar1', 'foo/bar4'], - ['foo/bar1', 'foo/bar5'], - ['foo/bar3', 'foo/bar6'], - ['foo/bar4', 'foo/bar7'], - ['foo/bar5', 'foo/bar8'], - ['foo/bar0', 'foo/zed0'], - ['foo/zed0', 'foo/zed1'], - ['foo/zed1', 'foo/zed2'], - ['bar/baz0', 'bar/baz1'], - ['qux/test', 'qux/prod'], - ['foo/bar2', 'foo/bar9'], - ['foo/bar6', 'foo/bar10'], - ['foo/bar7', 'foo/bar11'], - ], - }, - }); - // console.log('RES', res) - (0, code_1.expect)(res.deps).equal([ - // Level 0 - ['sys/user', 'foo/bar1'], - // Level 1 - ['foo/bar1', 'foo/bar4'], - ['foo/bar1', 'foo/bar5'], - // Level 2 - ['foo/bar4', 'foo/bar7'], - ['foo/bar5', 'foo/bar8'], - // Level 3 - ['foo/bar7', 'foo/bar11'], - ]); - }); - (0, node_test_1.test)('find-deps-all-custom', async () => { - const seneca = makeSeneca().use(__2.default); - await seneca.ready(); - const res = await seneca.post('sys:traverse,find:deps', { - rootEntity: 'foo/bar0', - relations: { - parental: [ - ['foo/bar2', 'foo/bar3'], - ['foo/bar0', 'foo/bar1'], - ['foo/bar0', 'foo/bar2'], - ['foo/bar1', 'foo/bar4'], - ['foo/bar1', 'foo/bar5'], - ['foo/bar3', 'foo/bar6'], - ['foo/bar4', 'foo/bar7'], - ['foo/bar5', 'foo/bar8'], - ['foo/bar0', 'foo/zed0'], - ['foo/zed0', 'foo/zed1'], - ['foo/zed1', 'foo/zed2'], - ['bar/baz0', 'bar/baz1'], - ['qux/test', 'qux/prod'], - ['foo/bar2', 'foo/bar9'], - ['foo/bar6', 'foo/bar10'], - ['foo/bar7', 'foo/bar11'], - ], - }, - }); - // console.log('RES', res) - (0, code_1.expect)(res.deps).equal([ - // Level 0 - ['foo/bar0', 'foo/bar1'], - ['foo/bar0', 'foo/bar2'], - ['foo/bar0', 'foo/zed0'], - // Level 1 - ['foo/bar1', 'foo/bar4'], - ['foo/bar1', 'foo/bar5'], - ['foo/bar2', 'foo/bar3'], - ['foo/bar2', 'foo/bar9'], - ['foo/zed0', 'foo/zed1'], - // Level 2 - ['foo/bar3', 'foo/bar6'], - ['foo/bar4', 'foo/bar7'], - ['foo/bar5', 'foo/bar8'], - ['foo/zed1', 'foo/zed2'], - // Level 3 - ['foo/bar6', 'foo/bar10'], - ['foo/bar7', 'foo/bar11'], - ]); - }); (0, node_test_1.test)('find-deps-all-default', async () => { const seneca = makeSeneca().use(__2.default); await seneca.ready(); diff --git a/dist-test/Traverse.test.js.map b/dist-test/Traverse.test.js.map index 0b5405c..50bbf9e 100644 --- a/dist-test/Traverse.test.js.map +++ b/dist-test/Traverse.test.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/Traverse.d.ts.map b/dist/Traverse.d.ts.map index 7ac4047..0e693ee 100644 --- a/dist/Traverse.d.ts.map +++ b/dist/Traverse.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAIA,KAAK,QAAQ,GAAG,MAAM,CAAA;AAEtB,KAAK,mBAAmB,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AAE/C,KAAK,QAAQ,GAAG,mBAAmB,EAAE,CAAA;AAErC,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,QAAQ,CAAA;IACpB,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAsFxD;AAcD,eAAe,QAAQ,CAAA"} \ No newline at end of file +{"version":3,"file":"Traverse.d.ts","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"AAIA,KAAK,QAAQ,GAAG,MAAM,CAAA;AAEtB,KAAK,mBAAmB,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AAE/C,KAAK,QAAQ,GAAG,mBAAmB,EAAE,CAAA;AAErC,KAAK,mBAAmB,GAAG;IACzB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,EAAE,QAAQ,CAAA;IACpB,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ,CAAA;KACnB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE1D,iBAAS,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,QAiFxD;AAcD,eAAe,QAAQ,CAAA"} \ No newline at end of file diff --git a/dist/Traverse.js b/dist/Traverse.js index 5452932..0342d97 100644 --- a/dist/Traverse.js +++ b/dist/Traverse.js @@ -7,13 +7,12 @@ function Traverse(options) { // const { Default } = seneca.valid seneca.fix('sys:traverse').message('find:deps', { rootEntity: (0, gubu_1.Optional)(String), - relations: (0, gubu_1.Skip)({ parental: [[String, String]] }), }, msgFindDeps); // Returns a sorted list of entity pairs starting from a given entity. // In breadth-first order, sorting first by level, then alphabetically in each level. async function msgFindDeps(msg) { // const seneca = this - const allRelations = msg.relations?.parental || options.relations.parental; + const allRelations = options.relations.parental; const rootEntity = msg.rootEntity || options.rootEntity; const deps = []; const parentChildrenMap = new Map(); diff --git a/dist/Traverse.js.map b/dist/Traverse.js.map index c4a0bc6..80ed23a 100644 --- a/dist/Traverse.js.map +++ b/dist/Traverse.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Traverse.js","sourceRoot":"","sources":["../src/Traverse.ts"],"names":[],"mappings":";AAAA,gEAAgE;;AAEhE,+BAAqC;AAkBrC,SAAS,QAAQ,CAAY,OAA4B;IACvD,MAAM,MAAM,GAAQ,IAAI,CAAA;IAExB,mCAAmC;IAEnC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,OAAO,CAChC,WAAW,EACX;QACE,UAAU,EAAE,IAAA,eAAQ,EAAC,MAAM,CAAC;KAC7B,EACD,WAAW,CACZ,CAAA;IAED,sEAAsE;IACtE,qFAAqF;IACrF,KAAK,UAAU,WAAW,CAExB,GAEC;QAED,sBAAsB;QACtB,MAAM,YAAY,GAAa,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAA;QACzD,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAA;QACvD,MAAM,IAAI,GAA0B,EAAE,CAAA;QAEtC,MAAM,iBAAiB,GAA8B,IAAI,GAAG,EAAE,CAAA;QAE9D,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,YAAY,EAAE,CAAC;YAC3C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnC,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YACnC,CAAC;YAED,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC5C,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC;YAClD,QAAQ,CAAC,IAAI,EAAE,CAAA;QACjB,CAAC;QAED,MAAM,kBAAkB,GAAkB,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;QAC/D,IAAI,YAAY,GAAe,CAAC,UAAU,CAAC,CAAA;QAE3C,OAAO,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,SAAS,GAAe,EAAE,CAAA;YAChC,IAAI,SAAS,GAA0B,EAAE,CAAA;YAEzC,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;gBAClC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;gBAEpD,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;oBAC7B,IAAI,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;wBAClC,SAAQ;oBACV,CAAC;oBAED,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;oBAC/B,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;oBAC7B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACvB,CAAC;YACH,CAAC;YAED,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAA;YACvC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAA;YACvB,YAAY,GAAG,SAAS,CAAA;QAC1B,CAAC;QAED,OAAO;YACL,EAAE,EAAE,IAAI;YACR,IAAI;SACL,CAAA;IACH,CAAC;IAED,SAAS,gBAAgB,CACvB,SAAgC;QAEhC,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CACxB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACtD,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CACzD,CAAA;IACH,CAAC;AACH,CAAC;AAED,mBAAmB;AACnB,MAAM,QAAQ,GAAwB;IACpC,6BAA6B;IAC7B,KAAK,EAAE,KAAK;IACZ,UAAU,EAAE,UAAU;IACtB,SAAS,EAAE;QACT,QAAQ,EAAE,EAAE;KACb;CACF,CAAA;AAED,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;AAErC,kBAAe,QAAQ,CAAA;AAEvB,IAAI,WAAW,KAAK,OAAO,MAAM,EAAE,CAAC;IAClC,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAA;AAC3B,CAAC"} \ No newline at end of file diff --git a/src/Traverse.ts b/src/Traverse.ts index 91ee993..c533ed8 100644 --- a/src/Traverse.ts +++ b/src/Traverse.ts @@ -27,7 +27,6 @@ function Traverse(this: any, options: TraverseOptionsFull) { 'find:deps', { rootEntity: Optional(String), - relations: Skip({ parental: [[String, String]] }), }, msgFindDeps, ) @@ -38,14 +37,10 @@ function Traverse(this: any, options: TraverseOptionsFull) { this: any, msg: { rootEntity?: EntityID - relations?: { - parental: Parental - } }, ): Promise<{ ok: boolean; deps: ParentChildRelation[] }> { // const seneca = this - const allRelations: Parental = - msg.relations?.parental || options.relations.parental + const allRelations: Parental = options.relations.parental const rootEntity = msg.rootEntity || options.rootEntity const deps: ParentChildRelation[] = [] diff --git a/test/Traverse.test.ts b/test/Traverse.test.ts index 0633a9f..ecb45a4 100644 --- a/test/Traverse.test.ts +++ b/test/Traverse.test.ts @@ -307,105 +307,6 @@ describe('Traverse', () => { ]) }) - test('find-deps-default-root', async () => { - const seneca = makeSeneca().use(Traverse) - await seneca.ready() - - const res = await seneca.post('sys:traverse,find:deps', { - relations: { - parental: [ - ['foo/bar0', 'foo/bar3'], - ['sys/user', 'foo/bar1'], - ['foo/bar0', 'foo/bar2'], - ['foo/bar1', 'foo/bar4'], - ['foo/bar1', 'foo/bar5'], - ['foo/bar3', 'foo/bar6'], - ['foo/bar4', 'foo/bar7'], - ['foo/bar5', 'foo/bar8'], - ['foo/bar0', 'foo/zed0'], - ['foo/zed0', 'foo/zed1'], - ['foo/zed1', 'foo/zed2'], - ['bar/baz0', 'bar/baz1'], - ['qux/test', 'qux/prod'], - ['foo/bar2', 'foo/bar9'], - ['foo/bar6', 'foo/bar10'], - ['foo/bar7', 'foo/bar11'], - ], - }, - }) - // console.log('RES', res) - - expect(res.deps).equal([ - // Level 0 - ['sys/user', 'foo/bar1'], - - // Level 1 - ['foo/bar1', 'foo/bar4'], - ['foo/bar1', 'foo/bar5'], - - // Level 2 - ['foo/bar4', 'foo/bar7'], - ['foo/bar5', 'foo/bar8'], - - // Level 3 - ['foo/bar7', 'foo/bar11'], - ]) - }) - - test('find-deps-all-custom', async () => { - const seneca = makeSeneca().use(Traverse) - await seneca.ready() - - const res = await seneca.post('sys:traverse,find:deps', { - rootEntity: 'foo/bar0', - relations: { - parental: [ - ['foo/bar2', 'foo/bar3'], - ['foo/bar0', 'foo/bar1'], - ['foo/bar0', 'foo/bar2'], - ['foo/bar1', 'foo/bar4'], - ['foo/bar1', 'foo/bar5'], - ['foo/bar3', 'foo/bar6'], - ['foo/bar4', 'foo/bar7'], - ['foo/bar5', 'foo/bar8'], - ['foo/bar0', 'foo/zed0'], - ['foo/zed0', 'foo/zed1'], - ['foo/zed1', 'foo/zed2'], - ['bar/baz0', 'bar/baz1'], - ['qux/test', 'qux/prod'], - ['foo/bar2', 'foo/bar9'], - ['foo/bar6', 'foo/bar10'], - ['foo/bar7', 'foo/bar11'], - ], - }, - }) - // console.log('RES', res) - - expect(res.deps).equal([ - // Level 0 - ['foo/bar0', 'foo/bar1'], - ['foo/bar0', 'foo/bar2'], - ['foo/bar0', 'foo/zed0'], - - // Level 1 - ['foo/bar1', 'foo/bar4'], - ['foo/bar1', 'foo/bar5'], - ['foo/bar2', 'foo/bar3'], - ['foo/bar2', 'foo/bar9'], - ['foo/zed0', 'foo/zed1'], - - // Level 2 - ['foo/bar3', 'foo/bar6'], - ['foo/bar4', 'foo/bar7'], - ['foo/bar5', 'foo/bar8'], - ['foo/zed1', 'foo/zed2'], - - // Level 3 - ['foo/bar6', 'foo/bar10'], - ['foo/bar7', 'foo/bar11'], - ]) - }) - test('find-deps-all-default', async () => { const seneca = makeSeneca().use(Traverse) await seneca.ready() From d8bad5f830955079b06e99395022013f08316513 Mon Sep 17 00:00:00 2001 From: Leonardo Cunha Date: Wed, 10 Dec 2025 10:18:34 -0300 Subject: [PATCH 22/22] test: make 10 level use coherent entity ids names --- dist-test/Traverse.test.js | 411 +++++++++++++++---------------- dist-test/Traverse.test.js.map | 2 +- test/Traverse.test.ts | 431 +++++++++++++++------------------ 3 files changed, 391 insertions(+), 453 deletions(-) diff --git a/dist-test/Traverse.test.js b/dist-test/Traverse.test.js index 3940e4d..b08f397 100644 --- a/dist-test/Traverse.test.js +++ b/dist-test/Traverse.test.js @@ -799,245 +799,214 @@ const __2 = __importDefault(require("..")); const seneca = makeSeneca().use(__2.default, { relations: { parental: [ - // Level 0: root → simple names - ['root', 'alpha'], - ['root', 'beta'], - ['root', 'gamma'], - // Level 1: simple → mixed format - ['alpha', 'sys/config'], - ['alpha', 'A'], - ['beta', 'sys/auth'], - ['beta', 'lib/utils'], - ['gamma', 'B'], - // Level 2: mixed → namespaced with numbers - ['sys/config', 'app/module1'], - ['sys/config', 'app/module2'], - ['A', 'foo/bar1'], - ['sys/auth', 'auth/provider10'], - ['sys/auth', 'auth/provider2'], - ['lib/utils', 'C'], - ['B', 'foo/baz5'], - // Level 3: deeper nesting - ['app/module1', 'core/service10'], - ['app/module1', 'core/service2'], - ['app/module2', 'data/processor1'], - ['foo/bar1', 'foo/bar10'], - ['foo/bar1', 'foo/bar2'], - ['auth/provider2', 'auth/token/handler'], - ['auth/provider10', 'D'], - ['C', 'lib/helper3'], - ['foo/baz5', 'dead/end1'], // Dead end branch - // Level 4 - ['core/service2', 'db/connection5'], - ['core/service2', 'db/connection50'], - ['core/service10', 'cache/redis'], - ['data/processor1', 'queue/worker1'], - ['data/processor1', 'queue/worker10'], - ['foo/bar2', 'E'], - ['foo/bar10', 'foo/bar100'], - ['auth/token/handler', 'security/validator'], - ['D', 'monitor/logger'], - ['lib/helper3', 'lib/helper30'], - // Dead end: dead/end1 has no children - // Level 5 - ['db/connection5', 'pool/manager1'], - ['db/connection50', 'F'], - ['cache/redis', 'cache/redis/cluster'], - ['queue/worker1', 'task/executor2'], - ['queue/worker10', 'task/executor20'], - ['E', 'report/generator'], - ['foo/bar100', 'foo/bar1000'], - ['security/validator', 'G'], - ['monitor/logger', 'log/stream5'], - ['lib/helper30', 'lib/helper300'], - // Level 6 - ['pool/manager1', 'resource/allocator'], - ['F', 'backup/service'], - ['cache/redis/cluster', 'node/shard1'], - ['cache/redis/cluster', 'node/shard10'], - ['task/executor2', 'H'], - ['task/executor20', 'event/handler'], - ['report/generator', 'pdf/renderer'], - ['foo/bar1000', 'final/component1'], - ['G', 'audit/trail'], - ['log/stream5', 'storage/bucket10'], - ['log/stream5', 'storage/bucket2'], - // Cycle: lib/helper300 → sys/config (already visited at level 1) - ['lib/helper300', 'sys/config'], - ['lib/helper300', 'metrics/collector'], - // Level 7 - ['resource/allocator', 'I'], - ['backup/service', 'snapshot/manager'], - ['node/shard1', 'replica/node1'], - ['node/shard10', 'replica/node10'], - ['H', 'notification/service'], - ['event/handler', 'webhook/dispatcher'], - ['pdf/renderer', 'template/engine'], - ['final/component1', 'J'], - ['audit/trail', 'compliance/checker'], - ['storage/bucket2', 'archive/tier1'], - ['storage/bucket10', 'archive/tier10'], - ['metrics/collector', 'stats/aggregator'], - // Level 8 - ['I', 'health/check'], - ['snapshot/manager', 'K'], - ['replica/node1', 'sync/protocol'], - ['replica/node10', 'sync/protocol'], // Convergent path - ['notification/service', 'email/sender'], - ['webhook/dispatcher', 'http/client'], - ['template/engine', 'render/pipeline'], - ['J', 'output/formatter'], - ['compliance/checker', 'policy/enforcer'], - ['archive/tier1', 'L'], - ['archive/tier10', 'cold/storage'], - ['stats/aggregator', 'dashboard/api'], - // Level 9 - ['health/check', 'ping/service'], - ['K', 'recovery/manager'], - ['sync/protocol', 'consensus/algorithm'], // From convergent paths - ['email/sender', 'smtp/gateway'], - ['http/client', 'retry/logic'], - ['render/pipeline', 'M'], - ['output/formatter', 'serializer/json'], - ['policy/enforcer', 'rule/engine'], - ['L', 'tape/backup'], - ['cold/storage', 'glacier/vault'], - ['dashboard/api', 'visualization/service'], - // Level 10 (final level) - ['ping/service', 'endpoint/monitor'], - ['recovery/manager', 'failover/system'], - ['consensus/algorithm', 'raft/implementation'], - ['smtp/gateway', 'mail/queue'], - ['retry/logic', 'exponential/backoff'], - ['M', 'final/output'], - ['serializer/json', 'schema/validator'], - ['rule/engine', 'decision/tree'], - ['tape/backup', 'offsite/storage'], - ['glacier/vault', 'deep/archive'], - ['visualization/service', 'chart/renderer'], + // ========== LEVEL 0 → LEVEL 1 ========== + ['foo', 'bar'], + ['foo', 'zed'], + ['foo', 'qux'], + // ========== LEVEL 1 → LEVEL 2 ========== + ['bar', 'bar1'], + ['bar', 'bar2'], + ['zed', 'zed1'], + ['zed', 'zed2'], + ['qux', 'qux1'], + // ========== LEVEL 2 → LEVEL 3 ========== + ['bar1', 'bar3'], + ['bar1', 'bar4'], + ['bar2', 'bar5'], + ['zed1', 'zed3'], + ['zed1', 'zed4'], + ['zed2', 'zed5'], + ['qux1', 'qux2'], + // ========== LEVEL 3 → LEVEL 4 ========== + ['bar3', 'bar6'], + ['bar3', 'bar7'], + ['bar4', 'bar8'], + ['bar5', 'bar9'], + ['zed3', 'zed6'], + ['zed4', 'zed7'], + ['zed5', 'zed8'], + ['qux2', 'qux3'], + // ========== LEVEL 4 → LEVEL 5 ========== + ['bar6', 'bar10'], + ['bar7', 'bar11'], + ['bar8', 'bar12'], + ['bar9', 'bar13'], + ['zed6', 'zed9'], + ['zed7', 'zed10'], + ['zed8', 'zed11'], + ['qux3', 'qux4'], + // ========== LEVEL 5 → LEVEL 6 (switch to composed names) ========== + ['bar10', 'foo/bar1'], + ['bar10', 'foo/bar2'], + ['bar11', 'foo/bar3'], + ['bar12', 'foo/bar4'], + ['bar13', 'foo/bar5'], + ['zed9', 'foo/zed1'], + ['zed10', 'foo/zed2'], + ['zed11', 'foo/zed3'], + // Cycle: qux4 → foo (already visited at level 0) + ['qux4', 'foo'], + ['qux4', 'foo/qux1'], + // ========== LEVEL 6 → LEVEL 7 ========== + ['foo/bar1', 'foo/bar6'], + ['foo/bar1', 'foo/bar7'], + ['foo/bar2', 'foo/bar8'], + ['foo/bar3', 'foo/bar9'], + ['foo/bar4', 'foo/bar10'], + ['foo/bar5', 'foo/bar11'], + ['foo/zed1', 'foo/zed4'], + ['foo/zed2', 'foo/zed5'], + ['foo/zed3', 'foo/zed6'], + ['foo/qux1', 'foo/qux2'], + // ========== LEVEL 7 → LEVEL 8 ========== + ['foo/bar6', 'bar/foo1'], + ['foo/bar7', 'bar/foo2'], + ['foo/bar8', 'bar/foo3'], + ['foo/bar9', 'bar/foo4'], + ['foo/bar10', 'bar/foo5'], + ['foo/bar11', 'bar/foo6'], + ['foo/zed4', 'zed/foo1'], + ['foo/zed5', 'zed/foo2'], + // Convergent: foo/zed6 and foo/qux2 both point to zed/foo3 + ['foo/zed6', 'zed/foo3'], + ['foo/qux2', 'zed/foo3'], + // ========== LEVEL 8 → LEVEL 9 ========== + ['bar/foo1', 'bar/foo7'], + ['bar/foo2', 'bar/foo8'], + ['bar/foo3', 'bar/foo9'], + ['bar/foo4', 'bar/foo10'], + ['bar/foo5', 'bar/foo11'], + ['bar/foo6', 'bar/foo12'], + ['zed/foo1', 'zed/foo4'], + ['zed/foo2', 'zed/foo5'], + ['zed/foo3', 'zed/foo6'], + // ========== LEVEL 9 → LEVEL 10 ========== + ['bar/foo7', 'qux/bar1'], + ['bar/foo8', 'qux/bar2'], + ['bar/foo9', 'qux/bar3'], + ['bar/foo10', 'qux/bar4'], + ['bar/foo11', 'qux/bar5'], + ['bar/foo12', 'qux/bar6'], + ['zed/foo4', 'qux/zed1'], + ['zed/foo5', 'qux/zed2'], + ['zed/foo6', 'qux/zed3'], + // ========== LEVEL 10 → LEVEL 11 ========== + ['qux/bar1', 'qux/bar7'], + ['qux/bar2', 'qux/bar8'], + ['qux/bar3', 'qux/bar9'], + ['qux/bar4', 'qux/bar10'], + ['qux/bar5', 'qux/bar11'], + ['qux/bar6', 'qux/bar12'], + ['qux/zed1', 'qux/zed4'], + ['qux/zed2', 'qux/zed5'], + ['qux/zed3', 'qux/zed6'], ], }, }); await seneca.ready(); const res = await seneca.post('sys:traverse,find:deps', { - rootEntity: 'root', + rootEntity: 'foo', }); (0, code_1.expect)(res.deps).equal([ // ========== LEVEL 0 ========== - ['root', 'alpha'], - ['root', 'beta'], - ['root', 'gamma'], + ['foo', 'bar'], + ['foo', 'qux'], + ['foo', 'zed'], // ========== LEVEL 1 ========== - ['alpha', 'A'], - ['alpha', 'sys/config'], - ['beta', 'lib/utils'], - ['beta', 'sys/auth'], - ['gamma', 'B'], + ['bar', 'bar1'], + ['bar', 'bar2'], + ['qux', 'qux1'], + ['zed', 'zed1'], + ['zed', 'zed2'], // ========== LEVEL 2 ========== - ['A', 'foo/bar1'], - ['B', 'foo/baz5'], - ['lib/utils', 'C'], - ['sys/auth', 'auth/provider2'], - ['sys/auth', 'auth/provider10'], - ['sys/config', 'app/module1'], - ['sys/config', 'app/module2'], + ['bar1', 'bar3'], + ['bar1', 'bar4'], + ['bar2', 'bar5'], + ['qux1', 'qux2'], + ['zed1', 'zed3'], + ['zed1', 'zed4'], + ['zed2', 'zed5'], // ========== LEVEL 3 ========== - ['app/module1', 'core/service2'], - ['app/module1', 'core/service10'], - ['app/module2', 'data/processor1'], - ['auth/provider2', 'auth/token/handler'], - ['auth/provider10', 'D'], - ['C', 'lib/helper3'], - ['foo/bar1', 'foo/bar2'], - ['foo/bar1', 'foo/bar10'], - ['foo/baz5', 'dead/end1'], + ['bar3', 'bar6'], + ['bar3', 'bar7'], + ['bar4', 'bar8'], + ['bar5', 'bar9'], + ['qux2', 'qux3'], + ['zed3', 'zed6'], + ['zed4', 'zed7'], + ['zed5', 'zed8'], // ========== LEVEL 4 ========== - ['auth/token/handler', 'security/validator'], - ['core/service2', 'db/connection5'], - ['core/service2', 'db/connection50'], - ['core/service10', 'cache/redis'], - ['D', 'monitor/logger'], - ['data/processor1', 'queue/worker1'], - ['data/processor1', 'queue/worker10'], - ['foo/bar2', 'E'], - ['foo/bar10', 'foo/bar100'], - ['lib/helper3', 'lib/helper30'], - // Note: dead/end1 has no children (dead end) + ['bar6', 'bar10'], + ['bar7', 'bar11'], + ['bar8', 'bar12'], + ['bar9', 'bar13'], + ['qux3', 'qux4'], + ['zed6', 'zed9'], + ['zed7', 'zed10'], + ['zed8', 'zed11'], // ========== LEVEL 5 ========== - ['cache/redis', 'cache/redis/cluster'], - ['db/connection5', 'pool/manager1'], - ['db/connection50', 'F'], - ['E', 'report/generator'], - ['foo/bar100', 'foo/bar1000'], - ['lib/helper30', 'lib/helper300'], - ['monitor/logger', 'log/stream5'], - ['queue/worker1', 'task/executor2'], - ['queue/worker10', 'task/executor20'], - ['security/validator', 'G'], + ['bar10', 'foo/bar1'], + ['bar10', 'foo/bar2'], + ['bar11', 'foo/bar3'], + ['bar12', 'foo/bar4'], + ['bar13', 'foo/bar5'], + // Note: qux4 → foo creates cycle (foo visited at level 0) + ['qux4', 'foo/qux1'], + ['zed9', 'foo/zed1'], + ['zed10', 'foo/zed2'], + ['zed11', 'foo/zed3'], // ========== LEVEL 6 ========== - ['cache/redis/cluster', 'node/shard1'], - ['cache/redis/cluster', 'node/shard10'], - ['F', 'backup/service'], - ['foo/bar1000', 'final/component1'], - ['G', 'audit/trail'], - // Note: lib/helper300 → sys/config creates cycle (sys/config visited at level 1) - ['lib/helper300', 'metrics/collector'], - ['log/stream5', 'storage/bucket2'], - ['log/stream5', 'storage/bucket10'], - ['pool/manager1', 'resource/allocator'], - ['report/generator', 'pdf/renderer'], - ['task/executor2', 'H'], - ['task/executor20', 'event/handler'], + ['foo/bar1', 'foo/bar6'], + ['foo/bar1', 'foo/bar7'], + ['foo/bar2', 'foo/bar8'], + ['foo/bar3', 'foo/bar9'], + ['foo/bar4', 'foo/bar10'], + ['foo/bar5', 'foo/bar11'], + ['foo/qux1', 'foo/qux2'], + ['foo/zed1', 'foo/zed4'], + ['foo/zed2', 'foo/zed5'], + ['foo/zed3', 'foo/zed6'], // ========== LEVEL 7 ========== - ['audit/trail', 'compliance/checker'], - ['backup/service', 'snapshot/manager'], - ['event/handler', 'webhook/dispatcher'], - ['final/component1', 'J'], - ['H', 'notification/service'], - ['metrics/collector', 'stats/aggregator'], - ['node/shard1', 'replica/node1'], - ['node/shard10', 'replica/node10'], - ['pdf/renderer', 'template/engine'], - ['resource/allocator', 'I'], - ['storage/bucket2', 'archive/tier1'], - ['storage/bucket10', 'archive/tier10'], + ['foo/bar6', 'bar/foo1'], + ['foo/bar7', 'bar/foo2'], + ['foo/bar8', 'bar/foo3'], + ['foo/bar9', 'bar/foo4'], + ['foo/bar10', 'bar/foo5'], + ['foo/bar11', 'bar/foo6'], + ['foo/qux2', 'zed/foo3'], + ['foo/zed4', 'zed/foo1'], + ['foo/zed5', 'zed/foo2'], + // Note: foo/zed6 → zed/foo3 is skipped because zed/foo3 was already visited via foo/qux2 // ========== LEVEL 8 ========== - ['archive/tier1', 'L'], - ['archive/tier10', 'cold/storage'], - ['compliance/checker', 'policy/enforcer'], - ['I', 'health/check'], - ['J', 'output/formatter'], - ['notification/service', 'email/sender'], - ['replica/node1', 'sync/protocol'], - // Note: replica/node10 → sync/protocol (convergent - sync/protocol already visited) - ['snapshot/manager', 'K'], - ['stats/aggregator', 'dashboard/api'], - ['template/engine', 'render/pipeline'], - ['webhook/dispatcher', 'http/client'], + ['bar/foo1', 'bar/foo7'], + ['bar/foo2', 'bar/foo8'], + ['bar/foo3', 'bar/foo9'], + ['bar/foo4', 'bar/foo10'], + ['bar/foo5', 'bar/foo11'], + ['bar/foo6', 'bar/foo12'], + ['zed/foo1', 'zed/foo4'], + ['zed/foo2', 'zed/foo5'], + ['zed/foo3', 'zed/foo6'], // ========== LEVEL 9 ========== - ['cold/storage', 'glacier/vault'], - ['dashboard/api', 'visualization/service'], - ['email/sender', 'smtp/gateway'], - ['health/check', 'ping/service'], - ['http/client', 'retry/logic'], - ['K', 'recovery/manager'], - ['L', 'tape/backup'], - ['output/formatter', 'serializer/json'], - ['policy/enforcer', 'rule/engine'], - ['render/pipeline', 'M'], - ['sync/protocol', 'consensus/algorithm'], + ['bar/foo7', 'qux/bar1'], + ['bar/foo8', 'qux/bar2'], + ['bar/foo9', 'qux/bar3'], + ['bar/foo10', 'qux/bar4'], + ['bar/foo11', 'qux/bar5'], + ['bar/foo12', 'qux/bar6'], + ['zed/foo4', 'qux/zed1'], + ['zed/foo5', 'qux/zed2'], + ['zed/foo6', 'qux/zed3'], // ========== LEVEL 10 ========== - ['consensus/algorithm', 'raft/implementation'], - ['glacier/vault', 'deep/archive'], - ['M', 'final/output'], - ['ping/service', 'endpoint/monitor'], - ['recovery/manager', 'failover/system'], - ['retry/logic', 'exponential/backoff'], - ['rule/engine', 'decision/tree'], - ['serializer/json', 'schema/validator'], - ['smtp/gateway', 'mail/queue'], - ['tape/backup', 'offsite/storage'], - ['visualization/service', 'chart/renderer'], + ['qux/bar1', 'qux/bar7'], + ['qux/bar2', 'qux/bar8'], + ['qux/bar3', 'qux/bar9'], + ['qux/bar4', 'qux/bar10'], + ['qux/bar5', 'qux/bar11'], + ['qux/bar6', 'qux/bar12'], + ['qux/zed1', 'qux/zed4'], + ['qux/zed2', 'qux/zed5'], + ['qux/zed3', 'qux/zed6'], ]); }); }); diff --git a/dist-test/Traverse.test.js.map b/dist-test/Traverse.test.js.map index 50bbf9e..a7f9b21 100644 --- a/dist-test/Traverse.test.js.map +++ b/dist-test/Traverse.test.js.map @@ -1 +1 @@ -{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Traverse.test.js","sourceRoot":"","sources":["../test/Traverse.test.ts"],"names":[],"mappings":";AAAA,gEAAgE;;;;;AAEhE,yCAA0C;AAC1C,qCAAmC;AAEnC,oDAA2B;AAC3B,8CAA8C;AAC9C,8CAA8C;AAE9C,2CAA4B;AAC5B,2CAAyB;AAEzB,IAAA,oBAAQ,EAAC,UAAU,EAAE,GAAG,EAAE;IACxB,IAAA,gBAAI,EAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC7B,IAAA,aAAM,EAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAA;QAE3B,MAAM,MAAM,GAAG,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;aACrC,IAAI,EAAE;aACN,GAAG,CAAC,WAAW,CAAC;aAChB,GAAG,CAAC,QAAQ,CAAC;aACb,GAAG,CAAC,WAAQ,CAAC,CAAA;QAChB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,IAAA,aAAM,EAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,WAAW,EAAE,KAAK,IAAI,EAAE;QAC3B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;iBAC1B;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,kCAAkC;YAClC,yCAAyC;YACzC,kCAAkC;YAClC,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,UAAU,EAAE,WAAW,CAAC;SAC1B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE,EAAE;aACb;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,qBAAqB;oBACrB,CAAC,UAAU,EAAE,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,gDAAgD;QAChD,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;SACzB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,qCAAqC;oBACrC,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QAEF,4CAA4C;QAC5C,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;SACzB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAClC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;SACzB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,YAAY;oBACZ,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,YAAY;oBACZ,CAAC,UAAU,EAAE,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;SACzB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,gCAAgC;oBAChC,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,iDAAiD;QACjD,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;SACzB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,wBAAwB;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,4CAA4C;oBAC5C,CAAC,UAAU,EAAE,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;SACzB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,YAAY;oBACZ,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;SACzB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,CAAC,CAAA;QACzC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAA;QACvD,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE,EAAE;aACb;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;iBAC1B;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,WAAW,CAAC;SAC1B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,qCAAqC;oBACrC,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,WAAW,EAAE,WAAW,CAAC;iBAC3B;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,WAAW,EAAE,WAAW,CAAC;SAC3B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,sCAAsC;oBACtC,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;iBAC1B;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,UAAU,EAAE,WAAW,CAAC;SAC1B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;iBAC1B;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QACF,0BAA0B;QAE1B,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,WAAW,CAAC;SAC1B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,WAAW,EAAE,WAAW,CAAC;oBAC1B,uCAAuC;oBACvC,CAAC,WAAW,EAAE,WAAW,CAAC;oBAC1B,CAAC,WAAW,EAAE,WAAW,CAAC;iBAC3B;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,WAAW,CAAC;YAEzB,UAAU;YACV,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,WAAW,EAAE,WAAW,CAAC;YAE1B,UAAU;YACV,CAAC,WAAW,EAAE,WAAW,CAAC;SAC3B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QACpC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,WAAW,EAAE,WAAW,CAAC;oBAC1B,gDAAgD;oBAChD,CAAC,WAAW,EAAE,UAAU,CAAC;oBACzB,CAAC,WAAW,EAAE,WAAW,CAAC;iBAC3B;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,UAAU;YACV,CAAC,UAAU,EAAE,WAAW,CAAC;YAEzB,UAAU;YACV,CAAC,WAAW,EAAE,WAAW,CAAC;YAC1B,CAAC,WAAW,EAAE,WAAW,CAAC;SAC3B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,WAAW,EAAE,WAAW,CAAC;oBAC1B,uBAAuB;oBACvB,CAAC,WAAW,EAAE,WAAW,CAAC;oBAC1B,sBAAsB;oBACtB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,WAAW,EAAE,WAAW,CAAC;iBAC3B;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,UAAU;SACvB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,UAAU,EAAE,WAAW,CAAC;YAEzB,UAAU;YACV,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,WAAW,EAAE,WAAW,CAAC;YAE1B,UAAU;YACV,CAAC,WAAW,EAAE,WAAW,CAAC;SAC3B,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;iBACX;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,GAAG;SAChB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YAEV,UAAU;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YAEV,UAAU;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;SACX,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;iBACX;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,GAAG;SAChB,CAAC,CAAA;QAEF,oBAAoB;QACpB,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC5B,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,OAAO,EAAE,OAAO,CAAC;oBAClB,CAAC,OAAO,EAAE,OAAO,CAAC;oBAClB,CAAC,OAAO,EAAE,OAAO,CAAC;oBAClB,CAAC,OAAO,EAAE,OAAO,CAAC;oBAClB,CAAC,OAAO,EAAE,OAAO,CAAC;oBAClB,CAAC,OAAO,EAAE,OAAO,CAAC;oBAClB,CAAC,OAAO,EAAE,OAAO,CAAC;oBAClB,CAAC,OAAO,EAAE,OAAO,CAAC;oBAClB,CAAC,OAAO,EAAE,OAAO,CAAC;oBAClB,CAAC,OAAO,EAAE,QAAQ,CAAC;iBACpB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,OAAO;SACpB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,CAAC,OAAO,EAAE,OAAO,CAAC;YAClB,CAAC,OAAO,EAAE,OAAO,CAAC;YAClB,CAAC,OAAO,EAAE,OAAO,CAAC;YAClB,CAAC,OAAO,EAAE,OAAO,CAAC;YAClB,CAAC,OAAO,EAAE,OAAO,CAAC;YAClB,CAAC,OAAO,EAAE,OAAO,CAAC;YAClB,CAAC,OAAO,EAAE,OAAO,CAAC;YAClB,CAAC,OAAO,EAAE,OAAO,CAAC;YAClB,CAAC,OAAO,EAAE,OAAO,CAAC;YAClB,CAAC,OAAO,EAAE,QAAQ,CAAC;SACpB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;iBACX;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,GAAG;SAChB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YAEV,UAAU;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YAEV,UAAU;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;SACX,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;oBACV,CAAC,GAAG,EAAE,GAAG,CAAC;iBACX;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,GAAG;SAChB,CAAC,CAAA;QAEF,mDAAmD;QACnD,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;YAEV,4BAA4B;YAC5B,CAAC,GAAG,EAAE,GAAG,CAAC;YAEV,UAAU;YACV,CAAC,GAAG,EAAE,GAAG,CAAC;SACX,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,MAAM,EAAE,QAAQ,CAAC;oBAClB,CAAC,MAAM,EAAE,OAAO,CAAC;oBACjB,CAAC,MAAM,EAAE,OAAO,CAAC;oBACjB,CAAC,MAAM,EAAE,QAAQ,CAAC;oBAClB,CAAC,OAAO,EAAE,QAAQ,CAAC;oBACnB,CAAC,OAAO,EAAE,QAAQ,CAAC;oBACnB,CAAC,QAAQ,EAAE,SAAS,CAAC;oBACrB,CAAC,QAAQ,EAAE,SAAS,CAAC;iBACtB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,MAAM;SACnB,CAAC,CAAA;QAEF,gDAAgD;QAChD,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,MAAM,EAAE,OAAO,CAAC;YACjB,CAAC,MAAM,EAAE,OAAO,CAAC;YACjB,CAAC,MAAM,EAAE,QAAQ,CAAC;YAClB,CAAC,MAAM,EAAE,QAAQ,CAAC;YAElB,UAAU;YACV,CAAC,OAAO,EAAE,QAAQ,CAAC;YACnB,CAAC,OAAO,EAAE,QAAQ,CAAC;YACnB,CAAC,QAAQ,EAAE,SAAS,CAAC;YACrB,CAAC,QAAQ,EAAE,SAAS,CAAC;SACtB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,CAAC,MAAM,EAAE,GAAG,CAAC;oBACb,CAAC,MAAM,EAAE,GAAG,CAAC;oBACb,CAAC,MAAM,EAAE,GAAG,CAAC;oBACb,CAAC,GAAG,EAAE,QAAQ,CAAC;oBACf,CAAC,GAAG,EAAE,QAAQ,CAAC;oBACf,CAAC,GAAG,EAAE,QAAQ,CAAC;oBACf,CAAC,QAAQ,EAAE,KAAK,CAAC;iBAClB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,MAAM;SACnB,CAAC,CAAA;QAEF,oDAAoD;QACpD,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,UAAU;YACV,CAAC,MAAM,EAAE,GAAG,CAAC;YACb,CAAC,MAAM,EAAE,GAAG,CAAC;YACb,CAAC,MAAM,EAAE,GAAG,CAAC;YAEb,yBAAyB;YACzB,CAAC,GAAG,EAAE,QAAQ,CAAC;YAEf,UAAU;YACV,CAAC,QAAQ,EAAE,KAAK,CAAC;SAClB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,gBAAI,EAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,CAAC,WAAQ,EAAE;YACxC,SAAS,EAAE;gBACT,QAAQ,EAAE;oBACR,0CAA0C;oBAC1C,CAAC,KAAK,EAAE,KAAK,CAAC;oBACd,CAAC,KAAK,EAAE,KAAK,CAAC;oBACd,CAAC,KAAK,EAAE,KAAK,CAAC;oBAEd,0CAA0C;oBAC1C,CAAC,KAAK,EAAE,MAAM,CAAC;oBACf,CAAC,KAAK,EAAE,MAAM,CAAC;oBACf,CAAC,KAAK,EAAE,MAAM,CAAC;oBACf,CAAC,KAAK,EAAE,MAAM,CAAC;oBACf,CAAC,KAAK,EAAE,MAAM,CAAC;oBAEf,0CAA0C;oBAC1C,CAAC,MAAM,EAAE,MAAM,CAAC;oBAChB,CAAC,MAAM,EAAE,MAAM,CAAC;oBAChB,CAAC,MAAM,EAAE,MAAM,CAAC;oBAChB,CAAC,MAAM,EAAE,MAAM,CAAC;oBAChB,CAAC,MAAM,EAAE,MAAM,CAAC;oBAChB,CAAC,MAAM,EAAE,MAAM,CAAC;oBAChB,CAAC,MAAM,EAAE,MAAM,CAAC;oBAEhB,0CAA0C;oBAC1C,CAAC,MAAM,EAAE,MAAM,CAAC;oBAChB,CAAC,MAAM,EAAE,MAAM,CAAC;oBAChB,CAAC,MAAM,EAAE,MAAM,CAAC;oBAChB,CAAC,MAAM,EAAE,MAAM,CAAC;oBAChB,CAAC,MAAM,EAAE,MAAM,CAAC;oBAChB,CAAC,MAAM,EAAE,MAAM,CAAC;oBAChB,CAAC,MAAM,EAAE,MAAM,CAAC;oBAChB,CAAC,MAAM,EAAE,MAAM,CAAC;oBAEhB,0CAA0C;oBAC1C,CAAC,MAAM,EAAE,OAAO,CAAC;oBACjB,CAAC,MAAM,EAAE,OAAO,CAAC;oBACjB,CAAC,MAAM,EAAE,OAAO,CAAC;oBACjB,CAAC,MAAM,EAAE,OAAO,CAAC;oBACjB,CAAC,MAAM,EAAE,MAAM,CAAC;oBAChB,CAAC,MAAM,EAAE,OAAO,CAAC;oBACjB,CAAC,MAAM,EAAE,OAAO,CAAC;oBACjB,CAAC,MAAM,EAAE,MAAM,CAAC;oBAEhB,qEAAqE;oBACrE,CAAC,OAAO,EAAE,UAAU,CAAC;oBACrB,CAAC,OAAO,EAAE,UAAU,CAAC;oBACrB,CAAC,OAAO,EAAE,UAAU,CAAC;oBACrB,CAAC,OAAO,EAAE,UAAU,CAAC;oBACrB,CAAC,OAAO,EAAE,UAAU,CAAC;oBACrB,CAAC,MAAM,EAAE,UAAU,CAAC;oBACpB,CAAC,OAAO,EAAE,UAAU,CAAC;oBACrB,CAAC,OAAO,EAAE,UAAU,CAAC;oBACrB,iDAAiD;oBACjD,CAAC,MAAM,EAAE,KAAK,CAAC;oBACf,CAAC,MAAM,EAAE,UAAU,CAAC;oBAEpB,0CAA0C;oBAC1C,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBAExB,0CAA0C;oBAC1C,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,WAAW,EAAE,UAAU,CAAC;oBACzB,CAAC,WAAW,EAAE,UAAU,CAAC;oBACzB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,2DAA2D;oBAC3D,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBAExB,0CAA0C;oBAC1C,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBAExB,2CAA2C;oBAC3C,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,WAAW,EAAE,UAAU,CAAC;oBACzB,CAAC,WAAW,EAAE,UAAU,CAAC;oBACzB,CAAC,WAAW,EAAE,UAAU,CAAC;oBACzB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBAExB,4CAA4C;oBAC5C,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,WAAW,CAAC;oBACzB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;oBACxB,CAAC,UAAU,EAAE,UAAU,CAAC;iBACzB;aACF;SACF,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEpB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE;YACtD,UAAU,EAAE,KAAK;SAClB,CAAC,CAAA;QAEF,IAAA,aAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;YACrB,gCAAgC;YAChC,CAAC,KAAK,EAAE,KAAK,CAAC;YACd,CAAC,KAAK,EAAE,KAAK,CAAC;YACd,CAAC,KAAK,EAAE,KAAK,CAAC;YAEd,gCAAgC;YAChC,CAAC,KAAK,EAAE,MAAM,CAAC;YACf,CAAC,KAAK,EAAE,MAAM,CAAC;YACf,CAAC,KAAK,EAAE,MAAM,CAAC;YACf,CAAC,KAAK,EAAE,MAAM,CAAC;YACf,CAAC,KAAK,EAAE,MAAM,CAAC;YAEf,gCAAgC;YAChC,CAAC,MAAM,EAAE,MAAM,CAAC;YAChB,CAAC,MAAM,EAAE,MAAM,CAAC;YAChB,CAAC,MAAM,EAAE,MAAM,CAAC;YAChB,CAAC,MAAM,EAAE,MAAM,CAAC;YAChB,CAAC,MAAM,EAAE,MAAM,CAAC;YAChB,CAAC,MAAM,EAAE,MAAM,CAAC;YAChB,CAAC,MAAM,EAAE,MAAM,CAAC;YAEhB,gCAAgC;YAChC,CAAC,MAAM,EAAE,MAAM,CAAC;YAChB,CAAC,MAAM,EAAE,MAAM,CAAC;YAChB,CAAC,MAAM,EAAE,MAAM,CAAC;YAChB,CAAC,MAAM,EAAE,MAAM,CAAC;YAChB,CAAC,MAAM,EAAE,MAAM,CAAC;YAChB,CAAC,MAAM,EAAE,MAAM,CAAC;YAChB,CAAC,MAAM,EAAE,MAAM,CAAC;YAChB,CAAC,MAAM,EAAE,MAAM,CAAC;YAEhB,gCAAgC;YAChC,CAAC,MAAM,EAAE,OAAO,CAAC;YACjB,CAAC,MAAM,EAAE,OAAO,CAAC;YACjB,CAAC,MAAM,EAAE,OAAO,CAAC;YACjB,CAAC,MAAM,EAAE,OAAO,CAAC;YACjB,CAAC,MAAM,EAAE,MAAM,CAAC;YAChB,CAAC,MAAM,EAAE,MAAM,CAAC;YAChB,CAAC,MAAM,EAAE,OAAO,CAAC;YACjB,CAAC,MAAM,EAAE,OAAO,CAAC;YAEjB,gCAAgC;YAChC,CAAC,OAAO,EAAE,UAAU,CAAC;YACrB,CAAC,OAAO,EAAE,UAAU,CAAC;YACrB,CAAC,OAAO,EAAE,UAAU,CAAC;YACrB,CAAC,OAAO,EAAE,UAAU,CAAC;YACrB,CAAC,OAAO,EAAE,UAAU,CAAC;YACrB,0DAA0D;YAC1D,CAAC,MAAM,EAAE,UAAU,CAAC;YACpB,CAAC,MAAM,EAAE,UAAU,CAAC;YACpB,CAAC,OAAO,EAAE,UAAU,CAAC;YACrB,CAAC,OAAO,EAAE,UAAU,CAAC;YAErB,gCAAgC;YAChC,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,gCAAgC;YAChC,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,WAAW,EAAE,UAAU,CAAC;YACzB,CAAC,WAAW,EAAE,UAAU,CAAC;YACzB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,yFAAyF;YAEzF,gCAAgC;YAChC,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,gCAAgC;YAChC,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,WAAW,EAAE,UAAU,CAAC;YACzB,CAAC,WAAW,EAAE,UAAU,CAAC;YACzB,CAAC,WAAW,EAAE,UAAU,CAAC;YACzB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YAExB,iCAAiC;YACjC,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,UAAU,EAAE,WAAW,CAAC;YACzB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;YACxB,CAAC,UAAU,EAAE,UAAU,CAAC;SACzB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,SAAS,UAAU,CAAC,OAAY,EAAE;IAChC,MAAM,MAAM,GAAG,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC9E,OAAO,MAAM,CAAA;AACf,CAAC"} \ No newline at end of file diff --git a/test/Traverse.test.ts b/test/Traverse.test.ts index ecb45a4..e237d3b 100644 --- a/test/Traverse.test.ts +++ b/test/Traverse.test.ts @@ -904,267 +904,236 @@ describe('Traverse', () => { const seneca = makeSeneca().use(Traverse, { relations: { parental: [ - // Level 0: root → simple names - ['root', 'alpha'], - ['root', 'beta'], - ['root', 'gamma'], - - // Level 1: simple → mixed format - ['alpha', 'sys/config'], - ['alpha', 'A'], - ['beta', 'sys/auth'], - ['beta', 'lib/utils'], - ['gamma', 'B'], - - // Level 2: mixed → namespaced with numbers - ['sys/config', 'app/module1'], - ['sys/config', 'app/module2'], - ['A', 'foo/bar1'], - ['sys/auth', 'auth/provider10'], - ['sys/auth', 'auth/provider2'], - ['lib/utils', 'C'], - ['B', 'foo/baz5'], - - // Level 3: deeper nesting - ['app/module1', 'core/service10'], - ['app/module1', 'core/service2'], - ['app/module2', 'data/processor1'], - ['foo/bar1', 'foo/bar10'], - ['foo/bar1', 'foo/bar2'], - ['auth/provider2', 'auth/token/handler'], - ['auth/provider10', 'D'], - ['C', 'lib/helper3'], - ['foo/baz5', 'dead/end1'], // Dead end branch - - // Level 4 - ['core/service2', 'db/connection5'], - ['core/service2', 'db/connection50'], - ['core/service10', 'cache/redis'], - ['data/processor1', 'queue/worker1'], - ['data/processor1', 'queue/worker10'], - ['foo/bar2', 'E'], - ['foo/bar10', 'foo/bar100'], - ['auth/token/handler', 'security/validator'], - ['D', 'monitor/logger'], - ['lib/helper3', 'lib/helper30'], - // Dead end: dead/end1 has no children - - // Level 5 - ['db/connection5', 'pool/manager1'], - ['db/connection50', 'F'], - ['cache/redis', 'cache/redis/cluster'], - ['queue/worker1', 'task/executor2'], - ['queue/worker10', 'task/executor20'], - ['E', 'report/generator'], - ['foo/bar100', 'foo/bar1000'], - ['security/validator', 'G'], - ['monitor/logger', 'log/stream5'], - ['lib/helper30', 'lib/helper300'], - - // Level 6 - ['pool/manager1', 'resource/allocator'], - ['F', 'backup/service'], - ['cache/redis/cluster', 'node/shard1'], - ['cache/redis/cluster', 'node/shard10'], - ['task/executor2', 'H'], - ['task/executor20', 'event/handler'], - ['report/generator', 'pdf/renderer'], - ['foo/bar1000', 'final/component1'], - ['G', 'audit/trail'], - ['log/stream5', 'storage/bucket10'], - ['log/stream5', 'storage/bucket2'], - // Cycle: lib/helper300 → sys/config (already visited at level 1) - ['lib/helper300', 'sys/config'], - ['lib/helper300', 'metrics/collector'], - - // Level 7 - ['resource/allocator', 'I'], - ['backup/service', 'snapshot/manager'], - ['node/shard1', 'replica/node1'], - ['node/shard10', 'replica/node10'], - ['H', 'notification/service'], - ['event/handler', 'webhook/dispatcher'], - ['pdf/renderer', 'template/engine'], - ['final/component1', 'J'], - ['audit/trail', 'compliance/checker'], - ['storage/bucket2', 'archive/tier1'], - ['storage/bucket10', 'archive/tier10'], - ['metrics/collector', 'stats/aggregator'], - - // Level 8 - ['I', 'health/check'], - ['snapshot/manager', 'K'], - ['replica/node1', 'sync/protocol'], - ['replica/node10', 'sync/protocol'], // Convergent path - ['notification/service', 'email/sender'], - ['webhook/dispatcher', 'http/client'], - ['template/engine', 'render/pipeline'], - ['J', 'output/formatter'], - ['compliance/checker', 'policy/enforcer'], - ['archive/tier1', 'L'], - ['archive/tier10', 'cold/storage'], - ['stats/aggregator', 'dashboard/api'], - - // Level 9 - ['health/check', 'ping/service'], - ['K', 'recovery/manager'], - ['sync/protocol', 'consensus/algorithm'], // From convergent paths - ['email/sender', 'smtp/gateway'], - ['http/client', 'retry/logic'], - ['render/pipeline', 'M'], - ['output/formatter', 'serializer/json'], - ['policy/enforcer', 'rule/engine'], - ['L', 'tape/backup'], - ['cold/storage', 'glacier/vault'], - ['dashboard/api', 'visualization/service'], - - // Level 10 (final level) - ['ping/service', 'endpoint/monitor'], - ['recovery/manager', 'failover/system'], - ['consensus/algorithm', 'raft/implementation'], - ['smtp/gateway', 'mail/queue'], - ['retry/logic', 'exponential/backoff'], - ['M', 'final/output'], - ['serializer/json', 'schema/validator'], - ['rule/engine', 'decision/tree'], - ['tape/backup', 'offsite/storage'], - ['glacier/vault', 'deep/archive'], - ['visualization/service', 'chart/renderer'], + // ========== LEVEL 0 → LEVEL 1 ========== + ['foo', 'bar'], + ['foo', 'zed'], + ['foo', 'qux'], + + // ========== LEVEL 1 → LEVEL 2 ========== + ['bar', 'bar1'], + ['bar', 'bar2'], + ['zed', 'zed1'], + ['zed', 'zed2'], + ['qux', 'qux1'], + + // ========== LEVEL 2 → LEVEL 3 ========== + ['bar1', 'bar3'], + ['bar1', 'bar4'], + ['bar2', 'bar5'], + ['zed1', 'zed3'], + ['zed1', 'zed4'], + ['zed2', 'zed5'], + ['qux1', 'qux2'], + + // ========== LEVEL 3 → LEVEL 4 ========== + ['bar3', 'bar6'], + ['bar3', 'bar7'], + ['bar4', 'bar8'], + ['bar5', 'bar9'], + ['zed3', 'zed6'], + ['zed4', 'zed7'], + ['zed5', 'zed8'], + ['qux2', 'qux3'], + + // ========== LEVEL 4 → LEVEL 5 ========== + ['bar6', 'bar10'], + ['bar7', 'bar11'], + ['bar8', 'bar12'], + ['bar9', 'bar13'], + ['zed6', 'zed9'], + ['zed7', 'zed10'], + ['zed8', 'zed11'], + ['qux3', 'qux4'], + + // ========== LEVEL 5 → LEVEL 6 (switch to composed names) ========== + ['bar10', 'foo/bar1'], + ['bar10', 'foo/bar2'], + ['bar11', 'foo/bar3'], + ['bar12', 'foo/bar4'], + ['bar13', 'foo/bar5'], + ['zed9', 'foo/zed1'], + ['zed10', 'foo/zed2'], + ['zed11', 'foo/zed3'], + // Cycle: qux4 → foo (already visited at level 0) + ['qux4', 'foo'], + ['qux4', 'foo/qux1'], + + // ========== LEVEL 6 → LEVEL 7 ========== + ['foo/bar1', 'foo/bar6'], + ['foo/bar1', 'foo/bar7'], + ['foo/bar2', 'foo/bar8'], + ['foo/bar3', 'foo/bar9'], + ['foo/bar4', 'foo/bar10'], + ['foo/bar5', 'foo/bar11'], + ['foo/zed1', 'foo/zed4'], + ['foo/zed2', 'foo/zed5'], + ['foo/zed3', 'foo/zed6'], + ['foo/qux1', 'foo/qux2'], + + // ========== LEVEL 7 → LEVEL 8 ========== + ['foo/bar6', 'bar/foo1'], + ['foo/bar7', 'bar/foo2'], + ['foo/bar8', 'bar/foo3'], + ['foo/bar9', 'bar/foo4'], + ['foo/bar10', 'bar/foo5'], + ['foo/bar11', 'bar/foo6'], + ['foo/zed4', 'zed/foo1'], + ['foo/zed5', 'zed/foo2'], + // Convergent: foo/zed6 and foo/qux2 both point to zed/foo3 + ['foo/zed6', 'zed/foo3'], + ['foo/qux2', 'zed/foo3'], + + // ========== LEVEL 8 → LEVEL 9 ========== + ['bar/foo1', 'bar/foo7'], + ['bar/foo2', 'bar/foo8'], + ['bar/foo3', 'bar/foo9'], + ['bar/foo4', 'bar/foo10'], + ['bar/foo5', 'bar/foo11'], + ['bar/foo6', 'bar/foo12'], + ['zed/foo1', 'zed/foo4'], + ['zed/foo2', 'zed/foo5'], + ['zed/foo3', 'zed/foo6'], + + // ========== LEVEL 9 → LEVEL 10 ========== + ['bar/foo7', 'qux/bar1'], + ['bar/foo8', 'qux/bar2'], + ['bar/foo9', 'qux/bar3'], + ['bar/foo10', 'qux/bar4'], + ['bar/foo11', 'qux/bar5'], + ['bar/foo12', 'qux/bar6'], + ['zed/foo4', 'qux/zed1'], + ['zed/foo5', 'qux/zed2'], + ['zed/foo6', 'qux/zed3'], + + // ========== LEVEL 10 → LEVEL 11 ========== + ['qux/bar1', 'qux/bar7'], + ['qux/bar2', 'qux/bar8'], + ['qux/bar3', 'qux/bar9'], + ['qux/bar4', 'qux/bar10'], + ['qux/bar5', 'qux/bar11'], + ['qux/bar6', 'qux/bar12'], + ['qux/zed1', 'qux/zed4'], + ['qux/zed2', 'qux/zed5'], + ['qux/zed3', 'qux/zed6'], ], }, }) await seneca.ready() const res = await seneca.post('sys:traverse,find:deps', { - rootEntity: 'root', + rootEntity: 'foo', }) expect(res.deps).equal([ // ========== LEVEL 0 ========== - ['root', 'alpha'], - ['root', 'beta'], - ['root', 'gamma'], + ['foo', 'bar'], + ['foo', 'qux'], + ['foo', 'zed'], // ========== LEVEL 1 ========== - ['alpha', 'A'], - ['alpha', 'sys/config'], - ['beta', 'lib/utils'], - ['beta', 'sys/auth'], - ['gamma', 'B'], + ['bar', 'bar1'], + ['bar', 'bar2'], + ['qux', 'qux1'], + ['zed', 'zed1'], + ['zed', 'zed2'], // ========== LEVEL 2 ========== - ['A', 'foo/bar1'], - ['B', 'foo/baz5'], - ['lib/utils', 'C'], - ['sys/auth', 'auth/provider2'], - ['sys/auth', 'auth/provider10'], - ['sys/config', 'app/module1'], - ['sys/config', 'app/module2'], + ['bar1', 'bar3'], + ['bar1', 'bar4'], + ['bar2', 'bar5'], + ['qux1', 'qux2'], + ['zed1', 'zed3'], + ['zed1', 'zed4'], + ['zed2', 'zed5'], // ========== LEVEL 3 ========== - ['app/module1', 'core/service2'], - ['app/module1', 'core/service10'], - ['app/module2', 'data/processor1'], - ['auth/provider2', 'auth/token/handler'], - ['auth/provider10', 'D'], - ['C', 'lib/helper3'], - ['foo/bar1', 'foo/bar2'], - ['foo/bar1', 'foo/bar10'], - ['foo/baz5', 'dead/end1'], + ['bar3', 'bar6'], + ['bar3', 'bar7'], + ['bar4', 'bar8'], + ['bar5', 'bar9'], + ['qux2', 'qux3'], + ['zed3', 'zed6'], + ['zed4', 'zed7'], + ['zed5', 'zed8'], // ========== LEVEL 4 ========== - ['auth/token/handler', 'security/validator'], - ['core/service2', 'db/connection5'], - ['core/service2', 'db/connection50'], - ['core/service10', 'cache/redis'], - ['D', 'monitor/logger'], - ['data/processor1', 'queue/worker1'], - ['data/processor1', 'queue/worker10'], - ['foo/bar2', 'E'], - ['foo/bar10', 'foo/bar100'], - ['lib/helper3', 'lib/helper30'], - // Note: dead/end1 has no children (dead end) + ['bar6', 'bar10'], + ['bar7', 'bar11'], + ['bar8', 'bar12'], + ['bar9', 'bar13'], + ['qux3', 'qux4'], + ['zed6', 'zed9'], + ['zed7', 'zed10'], + ['zed8', 'zed11'], // ========== LEVEL 5 ========== - ['cache/redis', 'cache/redis/cluster'], - ['db/connection5', 'pool/manager1'], - ['db/connection50', 'F'], - ['E', 'report/generator'], - ['foo/bar100', 'foo/bar1000'], - ['lib/helper30', 'lib/helper300'], - ['monitor/logger', 'log/stream5'], - ['queue/worker1', 'task/executor2'], - ['queue/worker10', 'task/executor20'], - ['security/validator', 'G'], + ['bar10', 'foo/bar1'], + ['bar10', 'foo/bar2'], + ['bar11', 'foo/bar3'], + ['bar12', 'foo/bar4'], + ['bar13', 'foo/bar5'], + // Note: qux4 → foo creates cycle (foo visited at level 0) + ['qux4', 'foo/qux1'], + ['zed9', 'foo/zed1'], + ['zed10', 'foo/zed2'], + ['zed11', 'foo/zed3'], // ========== LEVEL 6 ========== - ['cache/redis/cluster', 'node/shard1'], - ['cache/redis/cluster', 'node/shard10'], - ['F', 'backup/service'], - ['foo/bar1000', 'final/component1'], - ['G', 'audit/trail'], - // Note: lib/helper300 → sys/config creates cycle (sys/config visited at level 1) - ['lib/helper300', 'metrics/collector'], - ['log/stream5', 'storage/bucket2'], - ['log/stream5', 'storage/bucket10'], - ['pool/manager1', 'resource/allocator'], - ['report/generator', 'pdf/renderer'], - ['task/executor2', 'H'], - ['task/executor20', 'event/handler'], + ['foo/bar1', 'foo/bar6'], + ['foo/bar1', 'foo/bar7'], + ['foo/bar2', 'foo/bar8'], + ['foo/bar3', 'foo/bar9'], + ['foo/bar4', 'foo/bar10'], + ['foo/bar5', 'foo/bar11'], + ['foo/qux1', 'foo/qux2'], + ['foo/zed1', 'foo/zed4'], + ['foo/zed2', 'foo/zed5'], + ['foo/zed3', 'foo/zed6'], // ========== LEVEL 7 ========== - ['audit/trail', 'compliance/checker'], - ['backup/service', 'snapshot/manager'], - ['event/handler', 'webhook/dispatcher'], - ['final/component1', 'J'], - ['H', 'notification/service'], - ['metrics/collector', 'stats/aggregator'], - ['node/shard1', 'replica/node1'], - ['node/shard10', 'replica/node10'], - ['pdf/renderer', 'template/engine'], - ['resource/allocator', 'I'], - ['storage/bucket2', 'archive/tier1'], - ['storage/bucket10', 'archive/tier10'], + ['foo/bar6', 'bar/foo1'], + ['foo/bar7', 'bar/foo2'], + ['foo/bar8', 'bar/foo3'], + ['foo/bar9', 'bar/foo4'], + ['foo/bar10', 'bar/foo5'], + ['foo/bar11', 'bar/foo6'], + ['foo/qux2', 'zed/foo3'], + ['foo/zed4', 'zed/foo1'], + ['foo/zed5', 'zed/foo2'], + // Note: foo/zed6 → zed/foo3 is skipped because zed/foo3 was already visited via foo/qux2 // ========== LEVEL 8 ========== - ['archive/tier1', 'L'], - ['archive/tier10', 'cold/storage'], - ['compliance/checker', 'policy/enforcer'], - ['I', 'health/check'], - ['J', 'output/formatter'], - ['notification/service', 'email/sender'], - ['replica/node1', 'sync/protocol'], - // Note: replica/node10 → sync/protocol (convergent - sync/protocol already visited) - ['snapshot/manager', 'K'], - ['stats/aggregator', 'dashboard/api'], - ['template/engine', 'render/pipeline'], - ['webhook/dispatcher', 'http/client'], + ['bar/foo1', 'bar/foo7'], + ['bar/foo2', 'bar/foo8'], + ['bar/foo3', 'bar/foo9'], + ['bar/foo4', 'bar/foo10'], + ['bar/foo5', 'bar/foo11'], + ['bar/foo6', 'bar/foo12'], + ['zed/foo1', 'zed/foo4'], + ['zed/foo2', 'zed/foo5'], + ['zed/foo3', 'zed/foo6'], // ========== LEVEL 9 ========== - ['cold/storage', 'glacier/vault'], - ['dashboard/api', 'visualization/service'], - ['email/sender', 'smtp/gateway'], - ['health/check', 'ping/service'], - ['http/client', 'retry/logic'], - ['K', 'recovery/manager'], - ['L', 'tape/backup'], - ['output/formatter', 'serializer/json'], - ['policy/enforcer', 'rule/engine'], - ['render/pipeline', 'M'], - ['sync/protocol', 'consensus/algorithm'], + ['bar/foo7', 'qux/bar1'], + ['bar/foo8', 'qux/bar2'], + ['bar/foo9', 'qux/bar3'], + ['bar/foo10', 'qux/bar4'], + ['bar/foo11', 'qux/bar5'], + ['bar/foo12', 'qux/bar6'], + ['zed/foo4', 'qux/zed1'], + ['zed/foo5', 'qux/zed2'], + ['zed/foo6', 'qux/zed3'], // ========== LEVEL 10 ========== - ['consensus/algorithm', 'raft/implementation'], - ['glacier/vault', 'deep/archive'], - ['M', 'final/output'], - ['ping/service', 'endpoint/monitor'], - ['recovery/manager', 'failover/system'], - ['retry/logic', 'exponential/backoff'], - ['rule/engine', 'decision/tree'], - ['serializer/json', 'schema/validator'], - ['smtp/gateway', 'mail/queue'], - ['tape/backup', 'offsite/storage'], - ['visualization/service', 'chart/renderer'], + ['qux/bar1', 'qux/bar7'], + ['qux/bar2', 'qux/bar8'], + ['qux/bar3', 'qux/bar9'], + ['qux/bar4', 'qux/bar10'], + ['qux/bar5', 'qux/bar11'], + ['qux/bar6', 'qux/bar12'], + ['qux/zed1', 'qux/zed4'], + ['qux/zed2', 'qux/zed5'], + ['qux/zed3', 'qux/zed6'], ]) }) })