@antelopejs/interface-core 0.2.3 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +86 -17
  2. package/dist/index.d.ts +4 -1
  3. package/dist/index.js +0 -13
  4. package/dist/index.js.map +1 -1
  5. package/dist/internal.d.ts +14 -2
  6. package/dist/internal.js +17 -1
  7. package/dist/internal.js.map +1 -1
  8. package/dist/modules.d.ts +3 -2
  9. package/dist/modules.js.map +1 -1
  10. package/dist/proxies.d.ts +25 -7
  11. package/dist/proxies.js +89 -79
  12. package/dist/proxies.js.map +1 -1
  13. package/dist/tests/module-ownership-context.test.js +3 -3
  14. package/dist/tests/module-ownership-context.test.js.map +1 -1
  15. package/dist/tests/ownership-call-chain.test.js +261 -0
  16. package/dist/tests/ownership-call-chain.test.js.map +1 -0
  17. package/docs/1.introduction.md +29 -3
  18. package/docs/2.proxies.md +101 -36
  19. package/docs/3.decorators.md +25 -1
  20. package/docs/4.metadata.md +25 -1
  21. package/docs/5.modules.md +26 -7
  22. package/docs/6.logging.md +42 -20
  23. package/docs/7.configuration.md +33 -12
  24. package/docs/8.runtime.md +15 -0
  25. package/docs/assets/proxy-lifecycles.svg +21 -0
  26. package/docs/tsconfig.json +16 -0
  27. package/package.json +11 -4
  28. package/skills/core-interface/SKILL.md +3 -4
  29. package/dist/caller-binding.d.ts +0 -12
  30. package/dist/caller-binding.js +0 -105
  31. package/dist/caller-binding.js.map +0 -1
  32. package/dist/responsible-module.d.ts +0 -23
  33. package/dist/responsible-module.js +0 -56
  34. package/dist/responsible-module.js.map +0 -1
  35. package/dist/tests/caller-context.test.js +0 -154
  36. package/dist/tests/caller-context.test.js.map +0 -1
  37. package/dist/tests/provider-context.test.d.ts +0 -1
  38. package/dist/tests/provider-context.test.js +0 -109
  39. package/dist/tests/provider-context.test.js.map +0 -1
  40. package/dist/tests/responsible-module.test.d.ts +0 -1
  41. package/dist/tests/responsible-module.test.js +0 -109
  42. package/dist/tests/responsible-module.test.js.map +0 -1
  43. /package/dist/tests/{caller-context.test.d.ts → ownership-call-chain.test.d.ts} +0 -0
@@ -1,56 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.findResponsibleFile = findResponsibleFile;
4
- const internal_1 = require("./internal");
5
- function findMatchingEntry(fileName, entries) {
6
- let best;
7
- let bestLen = 0;
8
- for (const entry of entries) {
9
- if (fileName.startsWith(entry.dir) && entry.dir.length > bestLen) {
10
- best = entry;
11
- bestLen = entry.dir.length;
12
- }
13
- }
14
- return best;
15
- }
16
- /**
17
- * Walk the trace to decide which module is responsible for the current call.
18
- *
19
- * Rules:
20
- * 1. `node_modules` and generic `node:internal/` frames are skipped.
21
- * 2. `node:internal/modules/...` (the require loader) is a hard boundary:
22
- * frames above it belong to the module currently being loaded (owning
23
- * the side effect); frames below it belong to whoever triggered the
24
- * require and must not be credited.
25
- * 3. The first non-implementor match wins — that is user code. If only
26
- * implementor modules match, the first implementor is used as a
27
- * fallback so framework-level registrations still have an owner.
28
- */
29
- function findResponsibleFile(trace, entries = internal_1.internal.moduleByFolder) {
30
- const lastInterface = "";
31
- let implementorMatch;
32
- for (const site of trace) {
33
- const fileName = site.getFileName();
34
- if (fileName?.startsWith("node:internal/modules/")) {
35
- break;
36
- }
37
- if (!fileName ||
38
- fileName.startsWith("node:internal/") ||
39
- fileName.match(/[/\\]node_modules[/\\]/)) {
40
- continue;
41
- }
42
- const match = findMatchingEntry(fileName, entries);
43
- if (!match) {
44
- continue;
45
- }
46
- if (!match.isImplementor) {
47
- return { module: match.id, lastInterface };
48
- }
49
- implementorMatch = match.id;
50
- }
51
- if (implementorMatch) {
52
- return { module: implementorMatch, lastInterface };
53
- }
54
- return { lastInterface };
55
- }
56
- //# sourceMappingURL=responsible-module.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"responsible-module.js","sourceRoot":"","sources":["../src/responsible-module.ts"],"names":[],"mappings":";;AAyCA,kDAiCC;AA1ED,yCAAsC;AAatC,SAAS,iBAAiB,CACxB,QAAgB,EAChB,OAA4B;IAE5B,IAAI,IAAmC,CAAC;IACxC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;YACjE,IAAI,GAAG,KAAK,CAAC;YACb,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,mBAAmB,CACjC,KAAwB,EACxB,UAA+B,mBAAQ,CAAC,cAAc;IAEtD,MAAM,aAAa,GAAG,EAAE,CAAC;IACzB,IAAI,gBAAoC,CAAC;IAEzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,QAAQ,EAAE,UAAU,CAAC,wBAAwB,CAAC,EAAE,CAAC;YACnD,MAAM;QACR,CAAC;QACD,IACE,CAAC,QAAQ;YACT,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC;YACrC,QAAQ,CAAC,KAAK,CAAC,wBAAwB,CAAC,EACxC,CAAC;YACD,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YACzB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,aAAa,EAAE,CAAC;QAC7C,CAAC;QACD,gBAAgB,GAAG,KAAK,CAAC,EAAE,CAAC;IAC9B,CAAC;IAED,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAC;IACrD,CAAC;IACD,OAAO,EAAE,aAAa,EAAE,CAAC;AAC3B,CAAC"}
@@ -1,154 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const chai_1 = require("chai");
4
- const modules_1 = require("../modules");
5
- const __1 = require("..");
6
- function currentModule() {
7
- return (0, modules_1.GetModuleContext)()?.module;
8
- }
9
- describe("caller functions keep their caller's context", () => {
10
- it("runs an event handler in the context of the module that registered it", () => {
11
- const event = new __1.EventProxy();
12
- const seen = [];
13
- (0, modules_1.RunWithModuleContext)({ module: "consumer" }, () => {
14
- event.register(() => seen.push(currentModule()));
15
- });
16
- (0, modules_1.RunWithModuleContext)({ module: "provider" }, () => event.emit());
17
- (0, chai_1.expect)(seen).to.deep.equal(["consumer"]);
18
- });
19
- it("unregisters an event handler by the function that was registered", () => {
20
- const event = new __1.EventProxy();
21
- let calls = 0;
22
- const handler = () => {
23
- calls += 1;
24
- };
25
- (0, modules_1.RunWithModuleContext)({ module: "consumer" }, () => {
26
- event.register(handler);
27
- event.unregister(handler);
28
- });
29
- event.emit();
30
- (0, chai_1.expect)(calls).to.equal(0);
31
- });
32
- it("runs a function passed to an interface call in the caller's context", async () => {
33
- const proxy = new __1.AsyncProxy();
34
- (0, modules_1.RunWithModuleContext)({ module: "provider" }, () => {
35
- proxy.onCall((callback) => callback());
36
- });
37
- const result = await (0, modules_1.RunWithModuleContext)({ module: "consumer" }, () => proxy.call(currentModule));
38
- (0, chai_1.expect)(result).to.equal("consumer");
39
- });
40
- it("runs a function held in a plain object passed to register in the registrant's context", () => {
41
- const proxy = new __1.RegisteringProxy();
42
- const seen = [];
43
- (0, modules_1.RunWithModuleContext)({ module: "provider" }, () => {
44
- proxy.onHandlers((_id, options) => seen.push(options.handler()), () => undefined);
45
- });
46
- (0, modules_1.RunWithModuleContext)({ module: "consumer" }, () => {
47
- proxy.register("route", { handler: currentModule });
48
- });
49
- (0, chai_1.expect)(seen).to.deep.equal(["consumer"]);
50
- });
51
- });
52
- describe("values crossing a proxy call", () => {
53
- it("passes plain data, cyclic data and class instances through unchanged", async () => {
54
- class Instance {
55
- callback = currentModule;
56
- }
57
- const cyclic = { value: 1 };
58
- cyclic.self = cyclic;
59
- const data = { list: [1, 2], nested: { value: "x" } };
60
- const instance = new Instance();
61
- const received = [];
62
- const proxy = new __1.AsyncProxy();
63
- (0, modules_1.RunWithModuleContext)({ module: "provider" }, () => {
64
- proxy.onCall((...values) => {
65
- received.push(...values);
66
- });
67
- });
68
- await (0, modules_1.RunWithModuleContext)({ module: "consumer" }, () => proxy.call(data, cyclic, instance));
69
- (0, chai_1.expect)(received[0]).to.equal(data);
70
- (0, chai_1.expect)(received[1]).to.equal(cyclic);
71
- (0, chai_1.expect)(received[2]).to.equal(instance);
72
- });
73
- it("passes a class, and a plain object holding only classes, through unchanged", async () => {
74
- class Target {
75
- }
76
- const holder = { target: Target };
77
- const received = [];
78
- const proxy = new __1.AsyncProxy();
79
- (0, modules_1.RunWithModuleContext)({ module: "provider" }, () => {
80
- proxy.onCall((...values) => {
81
- received.push(...values);
82
- });
83
- });
84
- await (0, modules_1.RunWithModuleContext)({ module: "consumer" }, () => proxy.call(Target, holder));
85
- (0, chai_1.expect)(received[0]).to.equal(Target);
86
- (0, chai_1.expect)(received[1]).to.equal(holder);
87
- });
88
- it("hands the provider one binding for a function passed twice, so later calls can pair it", () => {
89
- const proxy = new __1.RegisteringProxy();
90
- const received = [];
91
- (0, modules_1.RunWithModuleContext)({ module: "provider" }, () => {
92
- proxy.onHandlers((_id, callback) => received.push(callback), () => undefined);
93
- });
94
- (0, modules_1.RunWithModuleContext)({ module: "consumer" }, () => {
95
- proxy.register("first", currentModule);
96
- proxy.register("second", currentModule);
97
- });
98
- (0, chai_1.expect)(received[0]).to.equal(received[1]);
99
- });
100
- it("keeps a function's first caller context when another module passes it on", async () => {
101
- const outer = new __1.AsyncProxy();
102
- const inner = new __1.AsyncProxy();
103
- (0, modules_1.RunWithModuleContext)({ module: "inner-provider" }, () => {
104
- inner.onCall((callback) => callback());
105
- });
106
- (0, modules_1.RunWithModuleContext)({ module: "outer-provider" }, () => {
107
- outer.onCall((callback) => inner.call(callback));
108
- });
109
- const result = await (0, modules_1.RunWithModuleContext)({ module: "consumer" }, () => outer.call(currentModule));
110
- (0, chai_1.expect)(result).to.equal("consumer");
111
- });
112
- it("refuses to run a caller function once its module generation is destroyed", async () => {
113
- const proxy = new __1.AsyncProxy();
114
- let kept;
115
- (0, modules_1.RunWithModuleContext)({ module: "provider" }, () => {
116
- proxy.onCall((callback) => {
117
- kept = callback;
118
- });
119
- });
120
- await (0, modules_1.RunWithModuleContext)({ module: "consumer", owner: "consumer#1" }, () => proxy.call(currentModule));
121
- (0, modules_1.RunWithModuleContext)({ module: "consumer", owner: "consumer#1" }, () => {
122
- modules_1.Events.ModuleDestroyed.emit("consumer");
123
- });
124
- (0, chai_1.expect)(() => kept?.()).to.throw(__1.ModuleContextInvalidatedError);
125
- });
126
- });
127
- describe("calls from a destroyed generation", () => {
128
- it("reject instead of throwing synchronously", async () => {
129
- const proxy = new __1.AsyncProxy();
130
- let thrown;
131
- let result;
132
- const fired = new Promise((resolve) => {
133
- (0, modules_1.RunWithModuleContext)({ module: "late", owner: "late#1" }, () => {
134
- setTimeout(() => {
135
- try {
136
- result = proxy.call(currentModule);
137
- }
138
- catch (error) {
139
- thrown = error;
140
- }
141
- resolve();
142
- }, 5);
143
- });
144
- });
145
- (0, modules_1.RunWithModuleContext)({ module: "late", owner: "late#1" }, () => {
146
- modules_1.Events.ModuleDestroyed.emit("late");
147
- });
148
- await fired;
149
- (0, chai_1.expect)(thrown).to.equal(undefined);
150
- const error = await result?.then(() => undefined, (reason) => reason);
151
- (0, chai_1.expect)(error).to.be.instanceOf(__1.ModuleContextInvalidatedError);
152
- });
153
- });
154
- //# sourceMappingURL=caller-context.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"caller-context.test.js","sourceRoot":"","sources":["../../src/tests/caller-context.test.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAE9B,wCAA4E;AAC5E,0BAKY;AAIZ,SAAS,aAAa;IACpB,OAAO,IAAA,0BAAgB,GAAE,EAAE,MAAM,CAAC;AACpC,CAAC;AAED,QAAQ,CAAC,8CAA8C,EAAE,GAAG,EAAE;IAC5D,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,MAAM,KAAK,GAAG,IAAI,cAAU,EAAc,CAAC;QAC3C,MAAM,IAAI,GAA8B,EAAE,CAAC;QAC3C,IAAA,8BAAoB,EAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE;YAChD,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,IAAA,8BAAoB,EAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAEjE,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,KAAK,GAAG,IAAI,cAAU,EAAc,CAAC;QAC3C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,KAAK,IAAI,CAAC,CAAC;QACb,CAAC,CAAC;QACF,IAAA,8BAAoB,EAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE;YAChD,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACxB,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,IAAI,EAAE,CAAC;QAEb,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,KAAK,GAAG,IAAI,cAAU,EAA8C,CAAC;QAC3E,IAAA,8BAAoB,EAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE;YAChD,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAoB,EAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,CACrE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAC1B,CAAC;QAEF,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uFAAuF,EAAE,GAAG,EAAE;QAC/F,MAAM,KAAK,GAAG,IAAI,oBAAgB,EAE/B,CAAC;QACJ,MAAM,IAAI,GAA8B,EAAE,CAAC;QAC3C,IAAA,8BAAoB,EAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE;YAChD,KAAK,CAAC,UAAU,CACd,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAC9C,GAAG,EAAE,CAAC,SAAS,CAChB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAA,8BAAoB,EAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE;YAChD,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,IAAA,aAAM,EAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,sEAAsE,EAAE,KAAK,IAAI,EAAE;QACpF,MAAM,QAAQ;YACI,QAAQ,GAAG,aAAa,CAAC;SAC1C;QACD,MAAM,MAAM,GAA4B,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACrD,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC;QACrB,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAc,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,cAAU,EAAkC,CAAC;QAC/D,IAAA,8BAAoB,EAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE;YAChD,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,EAAE;gBACzB,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,IAAA,8BAAoB,EAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,CACtD,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CACnC,CAAC;QAEF,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;QAC1F,MAAM,MAAM;SAAG;QACf,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAc,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,cAAU,EAAkC,CAAC;QAC/D,IAAA,8BAAoB,EAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE;YAChD,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,EAAE,EAAE;gBACzB,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,IAAA,8BAAoB,EAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,CACtD,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAC3B,CAAC;QAEF,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wFAAwF,EAAE,GAAG,EAAE;QAChG,MAAM,KAAK,GAAG,IAAI,oBAAgB,EAE/B,CAAC;QACJ,MAAM,QAAQ,GAAe,EAAE,CAAC;QAChC,IAAA,8BAAoB,EAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE;YAChD,KAAK,CAAC,UAAU,CACd,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC1C,GAAG,EAAE,CAAC,SAAS,CAChB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,IAAA,8BAAoB,EAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE;YAChD,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACvC,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,KAAK,GAAG,IAAI,cAAU,EAEzB,CAAC;QACJ,MAAM,KAAK,GAAG,IAAI,cAAU,EAA8C,CAAC;QAC3E,IAAA,8BAAoB,EAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,GAAG,EAAE;YACtD,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,IAAA,8BAAoB,EAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,GAAG,EAAE;YACtD,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,IAAA,8BAAoB,EAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,CACrE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAC1B,CAAC;QAEF,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,KAAK,GAAG,IAAI,cAAU,EAAgC,CAAC;QAC7D,IAAI,IAA0B,CAAC;QAC/B,IAAA,8BAAoB,EAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE;YAChD,KAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACxB,IAAI,GAAG,QAAQ,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,MAAM,IAAA,8BAAoB,EACxB,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,EAC3C,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAChC,CAAC;QAEF,IAAA,8BAAoB,EAAC,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE;YACrE,gBAAM,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,IAAA,aAAM,EAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,iCAA6B,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IACjD,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,KAAK,GAAG,IAAI,cAAU,EAAgC,CAAC;QAC7D,IAAI,MAAe,CAAC;QACpB,IAAI,MAAiC,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAC1C,IAAA,8BAAoB,EAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE;gBAC7D,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,CAAC;wBACH,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACrC,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,MAAM,GAAG,KAAK,CAAC;oBACjB,CAAC;oBACD,OAAO,EAAE,CAAC;gBACZ,CAAC,EAAE,CAAC,CAAC,CAAC;YACR,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAA,8BAAoB,EAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE;YAC7D,gBAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,MAAM,KAAK,CAAC;QACZ,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,MAAM,EAAE,IAAI,CAC9B,GAAG,EAAE,CAAC,SAAS,EACf,CAAC,MAAe,EAAE,EAAE,CAAC,MAAM,CAC5B,CAAC;QACF,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,iCAA6B,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,109 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const chai_1 = require("chai");
4
- const modules_1 = require("../modules");
5
- const __1 = require("..");
6
- function observeContext() {
7
- const context = (0, modules_1.GetModuleContext)();
8
- return {
9
- module: context?.module,
10
- owner: context?.owner,
11
- provider: context?.provider,
12
- };
13
- }
14
- describe("provider callback context", () => {
15
- it("restores async provider context across awaits and nested calls", async () => {
16
- const nested = new __1.AsyncProxy("context.nested");
17
- const outer = new __1.AsyncProxy("context.outer");
18
- (0, modules_1.RunWithModuleContext)({ module: "nested-owner", owner: "nested#1", provider: "nested" }, () => nested.onCall(() => `${observeContext().owner}:value`));
19
- (0, modules_1.RunWithModuleContext)({
20
- module: "provider-owner",
21
- owner: "provider-owner#1",
22
- provider: "provider-a",
23
- }, () => outer.onCall(async () => {
24
- const beforeAwait = observeContext();
25
- await Promise.resolve();
26
- const afterAwait = observeContext();
27
- (0, chai_1.expect)(await nested.call()).to.equal("nested#1:value");
28
- return [beforeAwait, afterAwait, observeContext()];
29
- }));
30
- const observations = await (0, modules_1.RunWithModuleContext)({
31
- module: "consumer",
32
- owner: "consumer#1",
33
- }, () => outer.call());
34
- (0, chai_1.expect)(observations).to.deep.equal(Array.from({ length: 3 }, () => ({
35
- module: "provider-owner",
36
- owner: "provider-owner#1",
37
- provider: "provider-a",
38
- })));
39
- });
40
- it("restores registering context for replay, register and unregister", () => {
41
- const proxy = new __1.RegisteringProxy("context.registering");
42
- const observations = [];
43
- (0, modules_1.RunWithModuleContext)({ module: "consumer", owner: "consumer#1" }, () => {
44
- proxy.register("queued");
45
- });
46
- (0, modules_1.RunWithModuleContext)({ module: "provider-owner", owner: "provider#1", provider: "provider" }, () => {
47
- proxy.onHandlers((id) => observations.push({
48
- operation: `register:${id}`,
49
- context: observeContext(),
50
- }), (id) => observations.push({
51
- operation: `unregister:${id}`,
52
- context: observeContext(),
53
- }));
54
- });
55
- (0, modules_1.RunWithModuleContext)({
56
- module: "consumer",
57
- owner: "consumer#1",
58
- }, () => {
59
- proxy.register("direct");
60
- proxy.unregister("queued");
61
- proxy.unregister("direct");
62
- });
63
- (0, chai_1.expect)(observations.map(({ operation }) => operation)).to.deep.equal([
64
- "register:queued",
65
- "register:direct",
66
- "unregister:queued",
67
- "unregister:direct",
68
- ]);
69
- (0, chai_1.expect)(observations.map(({ context }) => context)).to.deep.equal(Array.from({ length: 4 }, () => ({
70
- module: "provider-owner",
71
- owner: "provider#1",
72
- provider: "provider",
73
- })));
74
- });
75
- it("preserves synchronous registering callback throws", () => {
76
- const proxy = new __1.RegisteringProxy("context.registering-throw");
77
- const failure = new Error("register failed");
78
- (0, modules_1.RunWithModuleContext)({ module: "provider", owner: "provider-throw#1", provider: "provider" }, () => proxy.onHandlers(() => {
79
- (0, chai_1.expect)(observeContext().owner).to.equal("provider-throw#1");
80
- throw failure;
81
- }, () => undefined));
82
- (0, chai_1.expect)(() => proxy.register("item")).to.throw(failure);
83
- });
84
- it("rejects callbacks captured from an invalidated owner", async () => {
85
- const proxy = new __1.AsyncProxy("context.invalidated");
86
- (0, modules_1.RunWithModuleContext)({ module: "provider", owner: "provider-old#1", provider: "provider" }, () => {
87
- proxy.onCall(() => "stale", true);
88
- modules_1.Events.ModuleDestroyed.emit("provider");
89
- });
90
- const error = await (0, modules_1.RunWithModuleContext)({
91
- module: "consumer",
92
- owner: "consumer#1",
93
- }, () => proxy.call().then(() => undefined, (reason) => reason));
94
- (0, chai_1.expect)(error).to.be.instanceOf(__1.ModuleContextInvalidatedError);
95
- });
96
- it("rejects registering handlers captured from an invalidated owner", () => {
97
- const proxy = new __1.RegisteringProxy("context.invalidated-registering");
98
- (0, modules_1.RunWithModuleContext)({
99
- module: "provider",
100
- owner: "provider-register#old",
101
- provider: "provider",
102
- }, () => {
103
- proxy.onHandlers(() => undefined, () => undefined, true);
104
- modules_1.Events.ModuleDestroyed.emit("provider");
105
- });
106
- (0, chai_1.expect)(() => proxy.register("item")).to.throw(__1.ModuleContextInvalidatedError);
107
- });
108
- });
109
- //# sourceMappingURL=provider-context.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider-context.test.js","sourceRoot":"","sources":["../../src/tests/provider-context.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,109 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const chai_1 = require("chai");
4
- const responsible_module_1 = require("../responsible-module");
5
- function frame(fileName, opts = {}) {
6
- return {
7
- getFileName: () => fileName,
8
- getFunctionName: () => "functionName" in opts ? (opts.functionName ?? null) : "fn",
9
- getTypeName: () => opts.typeName ?? null,
10
- };
11
- }
12
- describe("findResponsibleFile", () => {
13
- it("skips node_modules frames and walks to the user module", () => {
14
- const entries = [{ id: "local", dir: "/app" }];
15
- const trace = [
16
- frame("/app/node_modules/@antelopejs/interface-core/dist/proxies.js"),
17
- frame("/app/dist/pages/skins.js"),
18
- ];
19
- (0, chai_1.expect)((0, responsible_module_1.findResponsibleFile)(trace, entries).module).to.equal("local");
20
- });
21
- it("skips non-loader node:internal frames", () => {
22
- const entries = [{ id: "local", dir: "/app" }];
23
- const trace = [
24
- frame("node:internal/timers"),
25
- frame("node:internal/process/task_queues"),
26
- frame("/app/dist/index.js"),
27
- ];
28
- (0, chai_1.expect)((0, responsible_module_1.findResponsibleFile)(trace, entries).module).to.equal("local");
29
- });
30
- it("returns the first non-implementor match even when an implementor appears earlier", () => {
31
- const entries = [
32
- { id: "dms", dir: "/project/dms", isImplementor: true },
33
- { id: "playground", dir: "/project/dms/playground" },
34
- ];
35
- const trace = [
36
- frame("/project/dms/dist/interfaces/dms/page.js"),
37
- frame("/project/dms/dist/interfaces/dms/page.js"),
38
- frame("/project/dms/playground/dist/table-view/drawer/page.js"),
39
- ];
40
- (0, chai_1.expect)((0, responsible_module_1.findResponsibleFile)(trace, entries).module).to.equal("playground");
41
- });
42
- it("falls back to the first implementor match when no consumer frame matches", () => {
43
- const entries = [
44
- { id: "dms", dir: "/project/dms", isImplementor: true },
45
- ];
46
- const trace = [
47
- frame("/project/dms/dist/interfaces/dms/page.js"),
48
- frame("/project/dms/dist/implementations/dms/hooks.js"),
49
- ];
50
- (0, chai_1.expect)((0, responsible_module_1.findResponsibleFile)(trace, entries).module).to.equal("dms");
51
- });
52
- it("returns undefined when no frame matches any module", () => {
53
- const entries = [{ id: "local", dir: "/app" }];
54
- const trace = [frame("/some/unrelated/file.js"), frame("/other/path.js")];
55
- (0, chai_1.expect)((0, responsible_module_1.findResponsibleFile)(trace, entries).module).to.equal(undefined);
56
- });
57
- it("picks the longest matching folder on a single frame", () => {
58
- const entries = [
59
- { id: "dms", dir: "/project/dms", isImplementor: true },
60
- { id: "playground", dir: "/project/dms/playground" },
61
- ];
62
- const trace = [
63
- frame("/project/dms/playground/dist/table-view/drawer/page.js"),
64
- ];
65
- (0, chai_1.expect)((0, responsible_module_1.findResponsibleFile)(trace, entries).module).to.equal("playground");
66
- });
67
- it("returns the consumer when the implementor lives inside its cache folder", () => {
68
- const entries = [
69
- { id: "local", dir: "/home/user/app" },
70
- {
71
- id: "dms",
72
- dir: "/home/user/app/.antelope/cache/@antelopejs/dms",
73
- isImplementor: true,
74
- },
75
- ];
76
- const trace = [
77
- frame("/home/user/app/.antelope/cache/@antelopejs/dms/dist/interfaces/dms/page.js"),
78
- frame("/home/user/app/dist/pages/skins.js"),
79
- ];
80
- (0, chai_1.expect)((0, responsible_module_1.findResponsibleFile)(trace, entries).module).to.equal("local");
81
- });
82
- it("walks past unregistered intermediate frames between implementor and consumer", () => {
83
- const entries = [
84
- { id: "dms", dir: "/project/dms", isImplementor: true },
85
- { id: "playground", dir: "/project/dms/playground" },
86
- ];
87
- const trace = [
88
- frame("/project/dms/dist/interfaces/dms/page.js"),
89
- frame("/third-party/anon.js", { functionName: null, typeName: "Proxy" }),
90
- frame("/project/dms/playground/dist/page.js"),
91
- ];
92
- (0, chai_1.expect)((0, responsible_module_1.findResponsibleFile)(trace, entries).module).to.equal("playground");
93
- });
94
- it("stops at the module-loader boundary so top-level side effects are attributed to the loading module, not the requirer", () => {
95
- const entries = [
96
- { id: "dms", dir: "/project/dms", isImplementor: true },
97
- { id: "playground", dir: "/project/dms/playground" },
98
- ];
99
- const trace = [
100
- frame("/project/dms/dist/interfaces/dms/page.js"),
101
- frame("/project/dms/dist/interfaces/dms/page.js"),
102
- frame("node:internal/modules/cjs/loader"),
103
- frame("node:internal/modules/helpers"),
104
- frame("/project/dms/playground/dist/table-view/category.js"),
105
- ];
106
- (0, chai_1.expect)((0, responsible_module_1.findResponsibleFile)(trace, entries).module).to.equal("dms");
107
- });
108
- });
109
- //# sourceMappingURL=responsible-module.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"responsible-module.test.js","sourceRoot":"","sources":["../../src/tests/responsible-module.test.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAE9B,8DAG+B;AAI/B,SAAS,KAAK,CACZ,QAAuB,EACvB,OAAmE,EAAE;IAErE,OAAO;QACL,WAAW,EAAE,GAAG,EAAE,CAAC,QAAQ;QAC3B,eAAe,EAAE,GAAG,EAAE,CACpB,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;QAC7D,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI;KAClB,CAAC;AAC3B,CAAC;AAED,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,OAAO,GAAwB,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG;YACZ,KAAK,CAAC,8DAA8D,CAAC;YACrE,KAAK,CAAC,0BAA0B,CAAC;SAClC,CAAC;QAEF,IAAA,aAAM,EAAC,IAAA,wCAAmB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,OAAO,GAAwB,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG;YACZ,KAAK,CAAC,sBAAsB,CAAC;YAC7B,KAAK,CAAC,mCAAmC,CAAC;YAC1C,KAAK,CAAC,oBAAoB,CAAC;SAC5B,CAAC;QAEF,IAAA,aAAM,EAAC,IAAA,wCAAmB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kFAAkF,EAAE,GAAG,EAAE;QAC1F,MAAM,OAAO,GAAwB;YACnC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,aAAa,EAAE,IAAI,EAAE;YACvD,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,yBAAyB,EAAE;SACrD,CAAC;QACF,MAAM,KAAK,GAAG;YACZ,KAAK,CAAC,0CAA0C,CAAC;YACjD,KAAK,CAAC,0CAA0C,CAAC;YACjD,KAAK,CAAC,wDAAwD,CAAC;SAChE,CAAC;QAEF,IAAA,aAAM,EAAC,IAAA,wCAAmB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,MAAM,OAAO,GAAwB;YACnC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,aAAa,EAAE,IAAI,EAAE;SACxD,CAAC;QACF,MAAM,KAAK,GAAG;YACZ,KAAK,CAAC,0CAA0C,CAAC;YACjD,KAAK,CAAC,gDAAgD,CAAC;SACxD,CAAC;QAEF,IAAA,aAAM,EAAC,IAAA,wCAAmB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,OAAO,GAAwB,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,yBAAyB,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAE1E,IAAA,aAAM,EAAC,IAAA,wCAAmB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,OAAO,GAAwB;YACnC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,aAAa,EAAE,IAAI,EAAE;YACvD,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,yBAAyB,EAAE;SACrD,CAAC;QACF,MAAM,KAAK,GAAG;YACZ,KAAK,CAAC,wDAAwD,CAAC;SAChE,CAAC;QAEF,IAAA,aAAM,EAAC,IAAA,wCAAmB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,OAAO,GAAwB;YACnC,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE;YACtC;gBACE,EAAE,EAAE,KAAK;gBACT,GAAG,EAAE,gDAAgD;gBACrD,aAAa,EAAE,IAAI;aACpB;SACF,CAAC;QACF,MAAM,KAAK,GAAG;YACZ,KAAK,CACH,4EAA4E,CAC7E;YACD,KAAK,CAAC,oCAAoC,CAAC;SAC5C,CAAC;QAEF,IAAA,aAAM,EAAC,IAAA,wCAAmB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8EAA8E,EAAE,GAAG,EAAE;QACtF,MAAM,OAAO,GAAwB;YACnC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,aAAa,EAAE,IAAI,EAAE;YACvD,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,yBAAyB,EAAE;SACrD,CAAC;QACF,MAAM,KAAK,GAAG;YACZ,KAAK,CAAC,0CAA0C,CAAC;YACjD,KAAK,CAAC,sBAAsB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;YACxE,KAAK,CAAC,sCAAsC,CAAC;SAC9C,CAAC;QAEF,IAAA,aAAM,EAAC,IAAA,wCAAmB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sHAAsH,EAAE,GAAG,EAAE;QAC9H,MAAM,OAAO,GAAwB;YACnC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,aAAa,EAAE,IAAI,EAAE;YACvD,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,yBAAyB,EAAE;SACrD,CAAC;QACF,MAAM,KAAK,GAAG;YACZ,KAAK,CAAC,0CAA0C,CAAC;YACjD,KAAK,CAAC,0CAA0C,CAAC;YACjD,KAAK,CAAC,kCAAkC,CAAC;YACzC,KAAK,CAAC,+BAA+B,CAAC;YACtC,KAAK,CAAC,qDAAqD,CAAC;SAC7D,CAAC;QAEF,IAAA,aAAM,EAAC,IAAA,wCAAmB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}