@driftfence/cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/LICENSE +81 -0
  2. package/README.md +35 -0
  3. package/dist/commands/accept.d.ts +9 -0
  4. package/dist/commands/accept.d.ts.map +1 -0
  5. package/dist/commands/accept.js +99 -0
  6. package/dist/commands/accept.js.map +1 -0
  7. package/dist/commands/check.d.ts +7 -0
  8. package/dist/commands/check.d.ts.map +1 -0
  9. package/dist/commands/check.js +22 -0
  10. package/dist/commands/check.js.map +1 -0
  11. package/dist/commands/deprecate.d.ts +8 -0
  12. package/dist/commands/deprecate.d.ts.map +1 -0
  13. package/dist/commands/deprecate.js +46 -0
  14. package/dist/commands/deprecate.js.map +1 -0
  15. package/dist/commands/doctor.d.ts +4 -0
  16. package/dist/commands/doctor.d.ts.map +1 -0
  17. package/dist/commands/doctor.js +93 -0
  18. package/dist/commands/doctor.js.map +1 -0
  19. package/dist/commands/draft.d.ts +6 -0
  20. package/dist/commands/draft.d.ts.map +1 -0
  21. package/dist/commands/draft.js +70 -0
  22. package/dist/commands/draft.js.map +1 -0
  23. package/dist/commands/init.d.ts +5 -0
  24. package/dist/commands/init.d.ts.map +1 -0
  25. package/dist/commands/init.js +105 -0
  26. package/dist/commands/init.js.map +1 -0
  27. package/dist/commands/query.d.ts +8 -0
  28. package/dist/commands/query.d.ts.map +1 -0
  29. package/dist/commands/query.js +20 -0
  30. package/dist/commands/query.js.map +1 -0
  31. package/dist/commands/schema.d.ts +3 -0
  32. package/dist/commands/schema.d.ts.map +1 -0
  33. package/dist/commands/schema.js +16 -0
  34. package/dist/commands/schema.js.map +1 -0
  35. package/dist/commands/shared.d.ts +7 -0
  36. package/dist/commands/shared.d.ts.map +1 -0
  37. package/dist/commands/shared.js +37 -0
  38. package/dist/commands/shared.js.map +1 -0
  39. package/dist/index.d.ts +3 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +123 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/tsconfig.tsbuildinfo +1 -0
  44. package/package.json +42 -0
package/LICENSE ADDED
@@ -0,0 +1,81 @@
1
+ Business Source License 1.1
2
+
3
+ Licensor: Austin Young
4
+
5
+ Licensed Work: DriftFence
6
+
7
+ Additional Use Grant: None
8
+
9
+ Change Date: 2030-03-16
10
+
11
+ Change License: GPL Version 2.0 or later
12
+
13
+ For each version of the Licensed Work released under this License, the Change
14
+ Date is the earlier of the date above or the fourth anniversary of the first
15
+ publicly available distribution of that version.
16
+
17
+ License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved.
18
+ "Business Source License" is a trademark of MariaDB Corporation Ab.
19
+
20
+ Terms
21
+
22
+ The Licensor hereby grants you the right to copy, modify, create derivative
23
+ works, redistribute, and make non-production use of the Licensed Work. The
24
+ Licensor may make an Additional Use Grant, above, permitting limited production
25
+ use.
26
+
27
+ Effective on the Change Date, or the fourth anniversary of the first publicly
28
+ available distribution of a specific version of the Licensed Work under this
29
+ License, whichever comes first, the Licensor hereby grants you rights under the
30
+ terms of the Change License, and the rights granted in the paragraph above
31
+ terminate.
32
+
33
+ If your use of the Licensed Work does not comply with the requirements
34
+ currently in effect as described in this License, you must purchase a
35
+ commercial license from the Licensor, its affiliated entities, or authorized
36
+ resellers, or you must refrain from using the Licensed Work.
37
+
38
+ All copies of the original and modified Licensed Work, and derivative works of
39
+ the Licensed Work, are subject to this License. This License applies separately
40
+ for each version of the Licensed Work and the Change Date may vary for each
41
+ version of the Licensed Work released by Licensor.
42
+
43
+ You must conspicuously display this License on each original or modified copy
44
+ of the Licensed Work. If you receive the Licensed Work in original or modified
45
+ form from a third party, the terms and conditions set forth in this License
46
+ apply to your use of that work.
47
+
48
+ Any use of the Licensed Work in violation of this License will automatically
49
+ terminate your rights under this License for the current and all other versions
50
+ of the Licensed Work.
51
+
52
+ This License does not grant you any right in any trademark or logo of Licensor
53
+ or its affiliates (provided that you may use a trademark or logo of Licensor as
54
+ expressly required by this License).
55
+
56
+ TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON AN
57
+ "AS IS" BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS
58
+ OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF MERCHANTABILITY,
59
+ FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND TITLE.
60
+
61
+ MariaDB hereby grants you permission to use this License's text to license your
62
+ works, and to refer to it using the trademark "Business Source License", as
63
+ long as you comply with the Covenants of Licensor below.
64
+
65
+ Covenants of Licensor
66
+
67
+ In consideration of the right to use this License's text and the "Business
68
+ Source License" name and trademark, Licensor covenants to MariaDB, and to all
69
+ other recipients of the licensed work to be provided by Licensor:
70
+
71
+ 1. To specify as the Change License the GPL Version 2.0 or any later version,
72
+ or a license that is compatible with GPL Version 2.0 or a later version,
73
+ where "compatible" means that software provided under the Change License can
74
+ be included in a program with software provided under GPL Version 2.0 or a
75
+ later version. Licensor may specify additional Change Licenses without
76
+ limitation.
77
+ 2. To either: (a) specify an additional grant of rights to use that does not
78
+ impose any additional restriction on the right granted in this License, as
79
+ the Additional Use Grant; or (b) insert the text "None".
80
+ 3. To specify a Change Date.
81
+ 4. Not to modify this License in any other way.
package/README.md ADDED
@@ -0,0 +1,35 @@
1
+ # @driftfence/cli
2
+
3
+ CLI for initializing, drafting, accepting, checking, querying, and operating DriftFence contracts.
4
+
5
+ Install:
6
+
7
+ ```bash
8
+ npm install -D @driftfence/cli
9
+ ```
10
+
11
+ Minimum Node version:
12
+
13
+ - `>=20.19.0`
14
+
15
+ Usage:
16
+
17
+ ```bash
18
+ npx driftfence init --owners @payments-team
19
+ npx driftfence check --mode enforce
20
+ ```
21
+
22
+ See the root docs and adoption guide:
23
+
24
+ - [DriftFence README](https://github.com/austindyoung/DriftFenceV2#readme)
25
+
26
+ Licensing:
27
+
28
+ - published for public installation and evaluation under `BUSL-1.1`
29
+ - production use before the change date requires a commercial license
30
+ - see [LICENSE](https://github.com/austindyoung/DriftFenceV2/blob/main/LICENSE), [Terms](https://www.driftfence.dev/terms.html), and [Pricing](https://www.driftfence.dev/pricing.html)
31
+
32
+ Repository and issues:
33
+
34
+ - [Repository](https://github.com/austindyoung/DriftFenceV2)
35
+ - [Issues](https://github.com/austindyoung/DriftFenceV2/issues)
@@ -0,0 +1,9 @@
1
+ export declare function runAcceptCommand(options: {
2
+ config?: string;
3
+ contractIds: string[];
4
+ scenarioIds: string[];
5
+ precision?: "summary" | "sequence";
6
+ recordedBy?: string;
7
+ deleteProposals?: boolean;
8
+ }): Promise<void>;
9
+ //# sourceMappingURL=accept.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accept.d.ts","sourceRoot":"","sources":["../../src/commands/accept.ts"],"names":[],"mappings":"AA6BA,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GAAG,OAAO,CAAC,IAAI,CAAC,CA+GhB"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.runAcceptCommand = runAcceptCommand;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const node_fs_1 = require("node:fs");
9
+ const core_1 = require("@driftfence/core");
10
+ const shared_1 = require("./shared");
11
+ function approvedScenario(scenario, recordedBy) {
12
+ return {
13
+ ...scenario,
14
+ lifecycle: {
15
+ state: "approved",
16
+ approval: {
17
+ recordedBy,
18
+ recordedAt: new Date().toISOString()
19
+ }
20
+ }
21
+ };
22
+ }
23
+ async function runAcceptCommand(options) {
24
+ const config = await (0, shared_1.loadResolvedConfig)(options.config);
25
+ const proposals = await (0, core_1.loadContracts)(config.paths.proposals, "proposal");
26
+ const approvedContracts = await (0, core_1.loadContracts)(config.paths.contracts, "approved");
27
+ const approvedById = new Map(approvedContracts.map((contract) => [contract.contractId, contract]));
28
+ const recordedBy = (0, shared_1.resolveRecordedBy)(options.recordedBy);
29
+ for (const proposal of proposals) {
30
+ if (options.contractIds.length > 0 &&
31
+ !options.contractIds.includes(proposal.contractId)) {
32
+ continue;
33
+ }
34
+ const selected = proposal.scenarios.filter((scenario) => {
35
+ if (options.scenarioIds.length > 0 &&
36
+ !options.scenarioIds.includes(scenario.id)) {
37
+ return false;
38
+ }
39
+ if (options.precision && scenario.precision !== options.precision) {
40
+ return false;
41
+ }
42
+ return true;
43
+ });
44
+ if (selected.length === 0) {
45
+ continue;
46
+ }
47
+ const existing = approvedById.get(proposal.contractId);
48
+ const scenarioMap = new Map((existing?.scenarios ?? []).map((scenario) => [scenario.id, scenario]));
49
+ for (const scenario of selected) {
50
+ scenarioMap.set(scenario.id, approvedScenario(scenario, recordedBy));
51
+ }
52
+ const merged = {
53
+ schemaVersion: "driftfence/v2",
54
+ contractId: proposal.contractId,
55
+ ...(proposal.displayName
56
+ ? { displayName: proposal.displayName }
57
+ : existing?.displayName
58
+ ? { displayName: existing.displayName }
59
+ : {}),
60
+ owners: proposal.owners.length > 0 ? proposal.owners : (existing?.owners ?? []),
61
+ ...(proposal.boundaries
62
+ ? { boundaries: proposal.boundaries }
63
+ : existing?.boundaries
64
+ ? { boundaries: existing.boundaries }
65
+ : {}),
66
+ ...(proposal.source
67
+ ? { source: proposal.source }
68
+ : existing?.source
69
+ ? { source: existing.source }
70
+ : {}),
71
+ ...(proposal.defaults
72
+ ? { defaults: proposal.defaults }
73
+ : existing?.defaults
74
+ ? { defaults: existing.defaults }
75
+ : {}),
76
+ scenarios: [...scenarioMap.values()]
77
+ };
78
+ if (merged.owners.length === 0) {
79
+ throw new core_1.DriftFenceError(`Cannot accept ${proposal.contractId}: approved contract owners would be empty.`, core_1.EXIT_CODES.CONTRACT_ERROR);
80
+ }
81
+ const approvedPath = await (0, core_1.writeContractFile)(config.paths.contracts, merged);
82
+ console.log(`Wrote approved contract: ${approvedPath}`);
83
+ if (options.deleteProposals) {
84
+ const remaining = proposal.scenarios.filter((scenario) => !selected.some((accepted) => accepted.id === scenario.id));
85
+ if (remaining.length === 0) {
86
+ await node_fs_1.promises
87
+ .unlink(node_path_1.default.join(config.paths.proposals, `${proposal.contractId.replace(/[^A-Za-z0-9._-]/g, "_")}.yaml`))
88
+ .catch(() => undefined);
89
+ }
90
+ else {
91
+ await (0, core_1.writeContractFile)(config.paths.proposals, {
92
+ ...proposal,
93
+ scenarios: remaining
94
+ });
95
+ }
96
+ }
97
+ }
98
+ }
99
+ //# sourceMappingURL=accept.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accept.js","sourceRoot":"","sources":["../../src/commands/accept.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function runCheckCommand(options: {
2
+ config?: string;
3
+ mode?: "observe" | "enforce";
4
+ reportJson?: string;
5
+ reportMd?: string;
6
+ }): Promise<number>;
7
+ //# sourceMappingURL=check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAIA,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBlB"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runCheckCommand = runCheckCommand;
4
+ const core_1 = require("@driftfence/core");
5
+ const shared_1 = require("./shared");
6
+ async function runCheckCommand(options) {
7
+ const config = await (0, shared_1.loadResolvedConfig)(options.config);
8
+ const execution = await (0, core_1.runCheck)(config, {
9
+ mode: options.mode,
10
+ reportJsonPath: options.reportJson,
11
+ reportMarkdownPath: options.reportMd
12
+ });
13
+ console.log((0, core_1.renderCheckText)(execution.report, {
14
+ overallStatus: execution.exitCode === 0 ? "passing" : "failing"
15
+ }));
16
+ console.log(`JSON report: ${execution.reportPath}`);
17
+ if (execution.markdownPath) {
18
+ console.log(`Markdown report: ${execution.markdownPath}`);
19
+ }
20
+ return execution.exitCode;
21
+ }
22
+ //# sourceMappingURL=check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":";;AAIA,0CAwBC;AA5BD,2CAA6D;AAE7D,qCAA8C;AAEvC,KAAK,UAAU,eAAe,CAAC,OAKrC;IACC,MAAM,MAAM,GAAG,MAAM,IAAA,2BAAkB,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,MAAM,IAAA,eAAQ,EAAC,MAAM,EAAE;QACvC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,cAAc,EAAE,OAAO,CAAC,UAAU;QAClC,kBAAkB,EAAE,OAAO,CAAC,QAAQ;KACrC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CACT,IAAA,sBAAe,EAAC,SAAS,CAAC,MAAM,EAAE;QAChC,aAAa,EAAE,SAAS,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;KAChE,CAAC,CACH,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,gBAAgB,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;IACpD,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,oBAAoB,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,SAAS,CAAC,QAAQ,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare function runDeprecateCommand(options: {
2
+ config?: string;
3
+ contractId: string;
4
+ scenarioId: string;
5
+ reason: string;
6
+ recordedBy?: string;
7
+ }): Promise<void>;
8
+ //# sourceMappingURL=deprecate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deprecate.d.ts","sourceRoot":"","sources":["../../src/commands/deprecate.ts"],"names":[],"mappings":"AAUA,wBAAsB,mBAAmB,CAAC,OAAO,EAAE;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDhB"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runDeprecateCommand = runDeprecateCommand;
4
+ const core_1 = require("@driftfence/core");
5
+ const shared_1 = require("./shared");
6
+ async function runDeprecateCommand(options) {
7
+ (0, shared_1.ensureUsage)(options.contractId.length > 0, "--contract is required");
8
+ (0, shared_1.ensureUsage)(options.scenarioId.length > 0, "--scenario is required");
9
+ (0, shared_1.ensureUsage)(options.reason.length > 0, "--reason is required");
10
+ const config = await (0, shared_1.loadResolvedConfig)(options.config);
11
+ const contracts = await (0, core_1.loadContracts)(config.paths.contracts, "approved");
12
+ const contract = contracts.find((entry) => entry.contractId === options.contractId);
13
+ if (!contract) {
14
+ throw new core_1.DriftFenceError(`Approved contract not found: ${options.contractId}`, core_1.EXIT_CODES.INVALID_USAGE);
15
+ }
16
+ const scenario = contract.scenarios.find((entry) => entry.id === options.scenarioId);
17
+ if (!scenario) {
18
+ throw new core_1.DriftFenceError(`Scenario not found: ${options.contractId} / ${options.scenarioId}`, core_1.EXIT_CODES.INVALID_USAGE);
19
+ }
20
+ const recordedBy = (0, shared_1.resolveRecordedBy)(options.recordedBy);
21
+ const updated = {
22
+ schemaVersion: "driftfence/v2",
23
+ contractId: contract.contractId,
24
+ ...(contract.displayName ? { displayName: contract.displayName } : {}),
25
+ owners: contract.owners,
26
+ ...(contract.boundaries ? { boundaries: contract.boundaries } : {}),
27
+ ...(contract.source ? { source: contract.source } : {}),
28
+ ...(contract.defaults ? { defaults: contract.defaults } : {}),
29
+ scenarios: contract.scenarios.map((entry) => entry.id !== options.scenarioId
30
+ ? entry
31
+ : {
32
+ ...entry,
33
+ lifecycle: {
34
+ state: "deprecated",
35
+ deprecation: {
36
+ recordedBy,
37
+ recordedAt: new Date().toISOString(),
38
+ reason: options.reason
39
+ }
40
+ }
41
+ })
42
+ };
43
+ const filePath = await (0, core_1.writeContractFile)(config.paths.contracts, updated);
44
+ console.log(`Updated approved contract: ${filePath}`);
45
+ }
46
+ //# sourceMappingURL=deprecate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deprecate.js","sourceRoot":"","sources":["../../src/commands/deprecate.ts"],"names":[],"mappings":";;AAUA,kDA6DC;AAtED,2CAK0B;AAE1B,qCAA8E;AAEvE,KAAK,UAAU,mBAAmB,CAAC,OAMzC;IACC,IAAA,oBAAW,EAAC,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,wBAAwB,CAAC,CAAC;IACrE,IAAA,oBAAW,EAAC,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,wBAAwB,CAAC,CAAC;IACrE,IAAA,oBAAW,EAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,sBAAsB,CAAC,CAAC;IAE/D,MAAM,MAAM,GAAG,MAAM,IAAA,2BAAkB,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,MAAM,IAAA,oBAAa,EAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAC7B,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,CACnD,CAAC;IACF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,sBAAe,CACvB,gCAAgC,OAAO,CAAC,UAAU,EAAE,EACpD,iBAAU,CAAC,aAAa,CACzB,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CACtC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,UAAU,CAC3C,CAAC;IACF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,sBAAe,CACvB,uBAAuB,OAAO,CAAC,UAAU,MAAM,OAAO,CAAC,UAAU,EAAE,EACnE,iBAAU,CAAC,aAAa,CACzB,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,0BAAiB,EAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACzD,MAAM,OAAO,GAAyB;QACpC,aAAa,EAAE,eAAe;QAC9B,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC1C,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,UAAU;YAC7B,CAAC,CAAC,KAAK;YACP,CAAC,CAAC;gBACE,GAAG,KAAK;gBACR,SAAS,EAAE;oBACT,KAAK,EAAE,YAAY;oBACnB,WAAW,EAAE;wBACX,UAAU;wBACV,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACpC,MAAM,EAAE,OAAO,CAAC,MAAM;qBACvB;iBACF;aACF,CACN;KACF,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,IAAA,wBAAiB,EAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,8BAA8B,QAAQ,EAAE,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function runDoctorCommand(options: {
2
+ config?: string;
3
+ }): Promise<number>;
4
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAyBA,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,MAAM,CAAC,CAwFlB"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.runDoctorCommand = runDoctorCommand;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const node_fs_1 = require("node:fs");
9
+ const core_1 = require("@driftfence/core");
10
+ const shared_1 = require("./shared");
11
+ const REQUIRED_GITIGNORE = [
12
+ ".driftfence/proposals/",
13
+ ".driftfence/traces/",
14
+ ".driftfence/reports/"
15
+ ];
16
+ function nodeSupported() {
17
+ const major = Number.parseInt(process.versions.node.split(".")[0] ?? "0", 10);
18
+ return major >= 20;
19
+ }
20
+ function codeownersWarning(contents) {
21
+ return (!contents.includes(".driftfence/contracts/**") &&
22
+ !contents.includes(".driftfence/contracts/"));
23
+ }
24
+ async function runDoctorCommand(options) {
25
+ const messages = [];
26
+ const warnings = [];
27
+ let failures = 0;
28
+ const config = await (0, shared_1.loadResolvedConfig)(options.config);
29
+ messages.push(`Config: OK (${config.configPath})`);
30
+ if (await (0, core_1.pathExists)(config.paths.contracts)) {
31
+ messages.push(`Contracts path: OK (${config.paths.contracts})`);
32
+ }
33
+ else {
34
+ failures += 1;
35
+ messages.push(`Contracts path: FAIL (${config.paths.contracts} does not exist)`);
36
+ }
37
+ await (0, core_1.loadSuppressions)(config.paths.suppressions);
38
+ messages.push(`Suppressions: OK (${config.paths.suppressions})`);
39
+ try {
40
+ await node_fs_1.promises.mkdir(config.paths.traces, { recursive: true });
41
+ messages.push(`Traces path: OK (${config.paths.traces})`);
42
+ }
43
+ catch (error) {
44
+ failures += 1;
45
+ messages.push(`Traces path: FAIL (${error instanceof Error ? error.message : String(error)})`);
46
+ }
47
+ if (nodeSupported()) {
48
+ messages.push(`Node version: OK (${process.versions.node})`);
49
+ }
50
+ else {
51
+ failures += 1;
52
+ messages.push(`Node version: FAIL (${process.versions.node})`);
53
+ }
54
+ const gitignorePath = node_path_1.default.join(process.cwd(), ".gitignore");
55
+ const gitignore = (await (0, core_1.pathExists)(gitignorePath))
56
+ ? await node_fs_1.promises.readFile(gitignorePath, "utf8")
57
+ : "";
58
+ const missingIgnore = REQUIRED_GITIGNORE.filter((entry) => !gitignore.includes(entry));
59
+ if (missingIgnore.length === 0) {
60
+ messages.push(".gitignore entries: OK");
61
+ }
62
+ else {
63
+ failures += 1;
64
+ messages.push(`.gitignore entries: FAIL (missing ${missingIgnore.join(", ")})`);
65
+ }
66
+ const codeownersPath = node_path_1.default.join(process.cwd(), ".github", "CODEOWNERS");
67
+ if (await (0, core_1.pathExists)(codeownersPath)) {
68
+ const codeowners = await node_fs_1.promises.readFile(codeownersPath, "utf8");
69
+ if (codeownersWarning(codeowners)) {
70
+ warnings.push("CODEOWNERS does not explicitly cover `.driftfence/contracts/**`.");
71
+ }
72
+ else {
73
+ messages.push("CODEOWNERS coverage: OK");
74
+ }
75
+ }
76
+ else {
77
+ warnings.push("CODEOWNERS file not found. Protect `.driftfence/contracts/**` with CODEOWNERS or branch rules.");
78
+ }
79
+ const suppressions = await (0, core_1.loadSuppressions)(config.paths.suppressions);
80
+ const expired = suppressions.suppressions.filter((suppression) => new Date(suppression.expiresAt).getTime() <= Date.now());
81
+ if (expired.length > 0) {
82
+ warnings.push(`Expired suppressions: ${expired.map((entry) => entry.id).join(", ")}`);
83
+ }
84
+ console.log(messages.join("\n"));
85
+ if (warnings.length > 0) {
86
+ console.log("\nWarnings:");
87
+ for (const warning of warnings) {
88
+ console.log(`- ${warning}`);
89
+ }
90
+ }
91
+ return failures > 0 ? 1 : 0;
92
+ }
93
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function runDraftCommand(options: {
2
+ config?: string;
3
+ precision: "summary" | "sequence";
4
+ contractIds: string[];
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=draft.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft.d.ts","sourceRoot":"","sources":["../../src/commands/draft.ts"],"names":[],"mappings":"AAiDA,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC;IAClC,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsEhB"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runDraftCommand = runDraftCommand;
4
+ const core_1 = require("@driftfence/core");
5
+ const shared_1 = require("./shared");
6
+ function contractBase(contractId, approvedContract, proposalContract, owners) {
7
+ return {
8
+ schemaVersion: "driftfence/v2",
9
+ contractId,
10
+ ...(proposalContract?.displayName
11
+ ? { displayName: proposalContract.displayName }
12
+ : approvedContract?.displayName
13
+ ? { displayName: approvedContract.displayName }
14
+ : {}),
15
+ owners: proposalContract?.owners ?? approvedContract?.owners ?? owners,
16
+ ...(proposalContract?.boundaries
17
+ ? { boundaries: proposalContract.boundaries }
18
+ : approvedContract?.boundaries
19
+ ? { boundaries: approvedContract.boundaries }
20
+ : {}),
21
+ ...(proposalContract?.source
22
+ ? { source: proposalContract.source }
23
+ : approvedContract?.source
24
+ ? { source: approvedContract.source }
25
+ : {}),
26
+ ...(proposalContract?.defaults
27
+ ? { defaults: proposalContract.defaults }
28
+ : approvedContract?.defaults
29
+ ? { defaults: approvedContract.defaults }
30
+ : {}),
31
+ scenarios: []
32
+ };
33
+ }
34
+ async function runDraftCommand(options) {
35
+ const config = await (0, shared_1.loadResolvedConfig)(options.config);
36
+ const traces = (await (0, core_1.loadTraces)(config.paths.traces))
37
+ .filter((trace) => options.contractIds.length === 0 ||
38
+ options.contractIds.includes(trace.contractId))
39
+ .map((trace) => (0, core_1.normalizeTrace)(trace, config));
40
+ const approvedContracts = await (0, core_1.loadContracts)(config.paths.contracts, "approved");
41
+ const proposalContracts = await (0, core_1.loadContracts)(config.paths.proposals, "proposal");
42
+ const approvedById = new Map(approvedContracts.map((contract) => [contract.contractId, contract]));
43
+ const proposalById = new Map(proposalContracts.map((contract) => [contract.contractId, contract]));
44
+ const tracesByContract = new Map();
45
+ for (const trace of traces) {
46
+ const entries = tracesByContract.get(trace.contractId) ?? [];
47
+ entries.push(trace);
48
+ tracesByContract.set(trace.contractId, entries);
49
+ }
50
+ for (const [contractId, contractTraces] of [
51
+ ...tracesByContract.entries()
52
+ ].sort(([left], [right]) => left.localeCompare(right))) {
53
+ const approvedContract = approvedById.get(contractId);
54
+ const proposalContract = proposalById.get(contractId);
55
+ const base = contractBase(contractId, approvedContract, proposalContract, config.defaults.owners);
56
+ const existingScenarios = new Map((proposalContract?.scenarios ?? [])
57
+ .filter((scenario) => scenario.lifecycle.state === "inferred")
58
+ .map((scenario) => [scenario.id, scenario]));
59
+ for (const trace of contractTraces.sort((left, right) => left.scenarioId.localeCompare(right.scenarioId))) {
60
+ existingScenarios.set(trace.scenarioId, (0, core_1.draftScenarioFromTrace)(trace, options.precision));
61
+ }
62
+ base.scenarios = [...existingScenarios.values()];
63
+ const filePath = await (0, core_1.writeContractFile)(config.paths.proposals, base);
64
+ console.log(`Wrote proposal: ${filePath}`);
65
+ }
66
+ if (tracesByContract.size === 0) {
67
+ console.log("No traces matched the draft request.");
68
+ }
69
+ }
70
+ //# sourceMappingURL=draft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft.js","sourceRoot":"","sources":["../../src/commands/draft.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function runInit(options: {
2
+ owners: string[];
3
+ force?: boolean;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAkFA,wBAAsB,OAAO,CAAC,OAAO,EAAE;IACrC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDhB"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.runInit = runInit;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const node_fs_1 = require("node:fs");
9
+ const core_1 = require("@driftfence/core");
10
+ const REQUIRED_GITIGNORE = [
11
+ ".driftfence/proposals/",
12
+ ".driftfence/traces/",
13
+ ".driftfence/reports/"
14
+ ];
15
+ const DEFAULT_WORKFLOW = `name: DriftFence
16
+
17
+ on:
18
+ pull_request:
19
+ push:
20
+ branches:
21
+ - main
22
+
23
+ jobs:
24
+ driftfence:
25
+ runs-on: ubuntu-latest
26
+ permissions:
27
+ contents: read
28
+ pull-requests: write
29
+
30
+ steps:
31
+ - name: Checkout
32
+ uses: actions/checkout@v4
33
+ with:
34
+ fetch-depth: 0
35
+
36
+ - name: Setup Node
37
+ uses: actions/setup-node@v4
38
+ with:
39
+ node-version: 22
40
+ cache: npm
41
+
42
+ - name: Install dependencies
43
+ run: npm ci
44
+
45
+ - name: Clean old traces
46
+ run: rm -rf .driftfence/traces/* .driftfence/reports/* || true
47
+
48
+ - name: Run tests and generate traces
49
+ run: npm test
50
+
51
+ - name: Run DriftFence
52
+ uses: austindyoung/DriftFenceV2@v1
53
+ with:
54
+ config: .driftfence/config.yaml
55
+ post_comment: \${{ github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository }}
56
+ env:
57
+ GITHUB_TOKEN: \${{ github.token }}
58
+ `;
59
+ async function appendGitignore() {
60
+ const gitignorePath = node_path_1.default.join(process.cwd(), ".gitignore");
61
+ const existing = (await (0, core_1.pathExists)(gitignorePath))
62
+ ? await node_fs_1.promises.readFile(gitignorePath, "utf8")
63
+ : "";
64
+ const missing = REQUIRED_GITIGNORE.filter((entry) => !existing.includes(entry));
65
+ if (missing.length === 0) {
66
+ return;
67
+ }
68
+ const next = [existing.trimEnd(), ...missing]
69
+ .filter((entry) => entry.length > 0)
70
+ .join("\n");
71
+ await (0, core_1.writeFileAtomic)(gitignorePath, `${next}\n`);
72
+ }
73
+ async function runInit(options) {
74
+ const driftfenceRoot = node_path_1.default.join(process.cwd(), ".driftfence");
75
+ await (0, core_1.ensureDirectory)(driftfenceRoot);
76
+ await (0, core_1.ensureDirectory)(node_path_1.default.join(driftfenceRoot, "contracts"));
77
+ await (0, core_1.ensureDirectory)(node_path_1.default.join(driftfenceRoot, "proposals"));
78
+ await (0, core_1.ensureDirectory)(node_path_1.default.join(driftfenceRoot, "traces"));
79
+ await (0, core_1.ensureDirectory)(node_path_1.default.join(driftfenceRoot, "reports"));
80
+ const configPath = node_path_1.default.join(driftfenceRoot, "config.yaml");
81
+ if (!(await (0, core_1.pathExists)(configPath)) || options.force) {
82
+ await (0, core_1.writeFileAtomic)(configPath, (0, core_1.renderConfigYaml)((0, core_1.createDefaultConfig)(options.owners)));
83
+ }
84
+ const suppressionsPath = node_path_1.default.join(driftfenceRoot, "suppressions.yaml");
85
+ if (!(await (0, core_1.pathExists)(suppressionsPath)) || options.force) {
86
+ await (0, core_1.writeFileAtomic)(suppressionsPath, (0, core_1.renderSuppressionsYaml)(core_1.DEFAULT_SUPPRESSIONS));
87
+ }
88
+ await appendGitignore();
89
+ const workflowPath = node_path_1.default.join(process.cwd(), ".github", "workflows", "driftfence.yml");
90
+ if (!(await (0, core_1.pathExists)(workflowPath)) || options.force) {
91
+ await (0, core_1.ensureDirectory)(node_path_1.default.dirname(workflowPath));
92
+ await (0, core_1.writeFileAtomic)(workflowPath, DEFAULT_WORKFLOW);
93
+ }
94
+ console.log([
95
+ "Initialized DriftFence.",
96
+ `Config: ${configPath}`,
97
+ `Suppressions: ${suppressionsPath}`,
98
+ "Next steps:",
99
+ "1. Instrument one integration test with @driftfence/sdk.",
100
+ "2. Run the test to generate traces under .driftfence/traces.",
101
+ "3. Run `driftfence draft` and `driftfence accept` to create the first approved contract.",
102
+ "4. Protect `.driftfence/contracts/**` with CODEOWNERS or branch rules."
103
+ ].join("\n"));
104
+ }
105
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare function runQueryCommand(options: {
2
+ config?: string;
3
+ files: string[];
4
+ contractIds: string[];
5
+ includeDeprecated?: boolean;
6
+ format?: "json" | "text";
7
+ }): Promise<void>;
8
+ //# sourceMappingURL=query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":"AAQA,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhB"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runQueryCommand = runQueryCommand;
4
+ const core_1 = require("@driftfence/core");
5
+ const shared_1 = require("./shared");
6
+ async function runQueryCommand(options) {
7
+ const config = await (0, shared_1.loadResolvedConfig)(options.config);
8
+ const contracts = await (0, core_1.loadContracts)(config.paths.contracts, "approved");
9
+ const response = (0, core_1.queryContracts)(contracts, {
10
+ files: options.files,
11
+ contractIds: options.contractIds.length > 0 ? options.contractIds : undefined,
12
+ includeDeprecated: options.includeDeprecated
13
+ });
14
+ if (options.format === "json") {
15
+ process.stdout.write((0, shared_1.renderJson)(response));
16
+ return;
17
+ }
18
+ console.log((0, core_1.renderQueryText)(response));
19
+ }
20
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":";;AAQA,0CAsBC;AA9BD,2CAI0B;AAE1B,qCAA0D;AAEnD,KAAK,UAAU,eAAe,CAAC,OAMrC;IACC,MAAM,MAAM,GAAG,MAAM,IAAA,2BAAkB,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,MAAM,IAAA,oBAAa,EAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,IAAA,qBAAc,EAAC,SAAS,EAAE;QACzC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EACT,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;QAClE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;KAC7C,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,IAAA,sBAAe,EAAC,QAAQ,CAAC,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { schemaRegistry } from "@driftfence/core";
2
+ export declare function runSchemaCommand(name?: keyof typeof schemaRegistry): void;
3
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIjE,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,OAAO,cAAc,GAAG,IAAI,CAgBzE"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runSchemaCommand = runSchemaCommand;
4
+ const core_1 = require("@driftfence/core");
5
+ const shared_1 = require("./shared");
6
+ function runSchemaCommand(name) {
7
+ if (name) {
8
+ process.stdout.write((0, shared_1.renderJson)((0, core_1.getSchemaJson)(name)));
9
+ return;
10
+ }
11
+ process.stdout.write((0, shared_1.renderJson)(Object.fromEntries(Object.keys(core_1.schemaRegistry).map((schemaName) => [
12
+ schemaName,
13
+ (0, core_1.getSchemaJson)(schemaName)
14
+ ]))));
15
+ }
16
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/commands/schema.ts"],"names":[],"mappings":";;AAIA,4CAgBC;AApBD,2CAAiE;AAEjE,qCAAsC;AAEtC,SAAgB,gBAAgB,CAAC,IAAkC;IACjE,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,mBAAU,EAAC,IAAA,oBAAa,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,IAAA,mBAAU,EACR,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,IAAI,CAAC,qBAAc,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC;QAC9C,UAAU;QACV,IAAA,oBAAa,EAAC,UAAyC,CAAC;KACzD,CAAC,CACH,CACF,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare function collectList(value: string, previous: string[]): string[];
2
+ export declare function loadResolvedConfig(configPath?: string): Promise<import("@driftfence/core").ResolvedDriftFenceConfig>;
3
+ export declare function renderJson(value: unknown): string;
4
+ export declare function resolveRecordedBy(explicit?: string): string;
5
+ export declare function handleCommandError(error: unknown): never;
6
+ export declare function ensureUsage(condition: boolean, message: string): void;
7
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":"AAWA,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAEvE;AAED,wBAAsB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,gEAE3D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEjD;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,CAIxD;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAIrE"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.collectList = collectList;
7
+ exports.loadResolvedConfig = loadResolvedConfig;
8
+ exports.renderJson = renderJson;
9
+ exports.resolveRecordedBy = resolveRecordedBy;
10
+ exports.handleCommandError = handleCommandError;
11
+ exports.ensureUsage = ensureUsage;
12
+ const node_os_1 = __importDefault(require("node:os"));
13
+ const node_path_1 = __importDefault(require("node:path"));
14
+ const core_1 = require("@driftfence/core");
15
+ function collectList(value, previous) {
16
+ return [...previous, value];
17
+ }
18
+ async function loadResolvedConfig(configPath) {
19
+ return (0, core_1.loadConfig)(configPath ? node_path_1.default.resolve(configPath) : undefined);
20
+ }
21
+ function renderJson(value) {
22
+ return `${(0, core_1.stableStringify)(value)}\n`;
23
+ }
24
+ function resolveRecordedBy(explicit) {
25
+ return explicit ?? process.env.GITHUB_ACTOR ?? node_os_1.default.userInfo().username;
26
+ }
27
+ function handleCommandError(error) {
28
+ const normalized = (0, core_1.asDriftFenceError)(error);
29
+ console.error(normalized.message);
30
+ process.exit(normalized.exitCode);
31
+ }
32
+ function ensureUsage(condition, message) {
33
+ if (!condition) {
34
+ throw new core_1.DriftFenceError(message, core_1.EXIT_CODES.INVALID_USAGE);
35
+ }
36
+ }
37
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/commands/shared.ts"],"names":[],"mappings":";;;;;AAWA,kCAEC;AAED,gDAEC;AAED,gCAEC;AAED,8CAEC;AAED,gDAIC;AAED,kCAIC;AArCD,sDAAyB;AACzB,0DAA6B;AAE7B,2CAM0B;AAE1B,SAAgB,WAAW,CAAC,KAAa,EAAE,QAAkB;IAC3D,OAAO,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC9B,CAAC;AAEM,KAAK,UAAU,kBAAkB,CAAC,UAAmB;IAC1D,OAAO,IAAA,iBAAU,EAAC,UAAU,CAAC,CAAC,CAAC,mBAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACvE,CAAC;AAED,SAAgB,UAAU,CAAC,KAAc;IACvC,OAAO,GAAG,IAAA,sBAAe,EAAC,KAAK,CAAC,IAAI,CAAC;AACvC,CAAC;AAED,SAAgB,iBAAiB,CAAC,QAAiB;IACjD,OAAO,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,iBAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC;AACxE,CAAC;AAED,SAAgB,kBAAkB,CAAC,KAAc;IAC/C,MAAM,UAAU,GAAG,IAAA,wBAAiB,EAAC,KAAK,CAAC,CAAC;IAC5C,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACpC,CAAC;AAED,SAAgB,WAAW,CAAC,SAAkB,EAAE,OAAe;IAC7D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,sBAAe,CAAC,OAAO,EAAE,iBAAU,CAAC,aAAa,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,123 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const commander_1 = require("commander");
5
+ const core_1 = require("@driftfence/core");
6
+ const accept_1 = require("./commands/accept");
7
+ const check_1 = require("./commands/check");
8
+ const deprecate_1 = require("./commands/deprecate");
9
+ const doctor_1 = require("./commands/doctor");
10
+ const draft_1 = require("./commands/draft");
11
+ const init_1 = require("./commands/init");
12
+ const query_1 = require("./commands/query");
13
+ const schema_1 = require("./commands/schema");
14
+ const shared_1 = require("./commands/shared");
15
+ async function main() {
16
+ const program = new commander_1.Command();
17
+ program
18
+ .name("driftfence")
19
+ .description("Deterministic merge gating for critical workflows.");
20
+ program
21
+ .command("init")
22
+ .description("Initialize DriftFence config, directories, and workflow files.")
23
+ .option("--owners <owner>", "Default owner for new contracts.", shared_1.collectList, [])
24
+ .option("--force", "Overwrite generated files if they already exist.")
25
+ .action(async (options) => {
26
+ await (0, init_1.runInit)(options);
27
+ });
28
+ program
29
+ .command("draft")
30
+ .description("Draft inferred workflow contracts from traces.")
31
+ .option("--config <path>", "Path to the DriftFence config file.")
32
+ .option("--precision <precision>", "summary or sequence.", "summary")
33
+ .option("--contract <contractId>", "Limit drafting to one or more contract IDs.", shared_1.collectList, [])
34
+ .action(async (options) => {
35
+ await (0, draft_1.runDraftCommand)({
36
+ config: options.config,
37
+ precision: options.precision,
38
+ contractIds: options.contract
39
+ });
40
+ });
41
+ program
42
+ .command("accept")
43
+ .description("Promote inferred proposals into approved workflow contracts.")
44
+ .option("--config <path>", "Path to the DriftFence config file.")
45
+ .option("--contract <contractId>", "Limit acceptance to one or more contract IDs.", shared_1.collectList, [])
46
+ .option("--scenario <scenarioId>", "Limit acceptance to one or more scenario IDs.", shared_1.collectList, [])
47
+ .option("--precision <precision>", "Only accept scenarios with this precision.")
48
+ .option("--recorded-by <value>", "Override recorded approval identity.")
49
+ .option("--delete-proposals", "Delete accepted proposal scenarios after promotion.")
50
+ .action(async (options) => {
51
+ await (0, accept_1.runAcceptCommand)({
52
+ config: options.config,
53
+ contractIds: options.contract,
54
+ scenarioIds: options.scenario,
55
+ precision: options.precision,
56
+ recordedBy: options.recordedBy,
57
+ deleteProposals: options.deleteProposals
58
+ });
59
+ });
60
+ program
61
+ .command("deprecate")
62
+ .description("Mark an approved scenario as deprecated.")
63
+ .requiredOption("--contract <contractId>", "Approved contract ID.")
64
+ .requiredOption("--scenario <scenarioId>", "Approved scenario ID.")
65
+ .requiredOption("--reason <text>", "Deprecation reason.")
66
+ .option("--config <path>", "Path to the DriftFence config file.")
67
+ .option("--recorded-by <value>", "Override recorded deprecation identity.")
68
+ .action(async (options) => {
69
+ await (0, deprecate_1.runDeprecateCommand)({
70
+ config: options.config,
71
+ contractId: options.contract,
72
+ scenarioId: options.scenario,
73
+ reason: options.reason,
74
+ recordedBy: options.recordedBy
75
+ });
76
+ });
77
+ program
78
+ .command("check")
79
+ .description("Compare traces to approved workflow contracts.")
80
+ .option("--config <path>", "Path to the DriftFence config file.")
81
+ .option("--mode <mode>", "observe or enforce.")
82
+ .option("--report-json <path>", "Path for the JSON report.")
83
+ .option("--report-md <path>", "Path for the markdown report.")
84
+ .action(async (options) => {
85
+ process.exitCode = await (0, check_1.runCheckCommand)(options);
86
+ });
87
+ program
88
+ .command("query")
89
+ .description("Query approved contracts by file path.")
90
+ .requiredOption("--files <file>", "Repo-relative file path to query.", shared_1.collectList, [])
91
+ .option("--contract <contractId>", "Limit query to one or more contract IDs.", shared_1.collectList, [])
92
+ .option("--include-deprecated", "Include deprecated scenarios.")
93
+ .option("--format <format>", "json or text.", "text")
94
+ .option("--config <path>", "Path to the DriftFence config file.")
95
+ .action(async (options) => {
96
+ await (0, query_1.runQueryCommand)({
97
+ config: options.config,
98
+ files: options.files,
99
+ contractIds: options.contract,
100
+ includeDeprecated: options.includeDeprecated,
101
+ format: options.format
102
+ });
103
+ });
104
+ program
105
+ .command("schema")
106
+ .description("Print the DriftFence JSON schemas.")
107
+ .argument("[name]", `Optional schema name: ${Object.keys(core_1.schemaRegistry).join(", ")}`)
108
+ .action((name) => {
109
+ (0, schema_1.runSchemaCommand)(name);
110
+ });
111
+ program
112
+ .command("doctor")
113
+ .description("Validate local DriftFence setup and governance prerequisites.")
114
+ .option("--config <path>", "Path to the DriftFence config file.")
115
+ .action(async (options) => {
116
+ process.exitCode = await (0, doctor_1.runDoctorCommand)(options);
117
+ });
118
+ await program.parseAsync(process.argv);
119
+ }
120
+ main().catch((error) => {
121
+ (0, shared_1.handleCommandError)(error);
122
+ });
123
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../node_modules/typescript/lib/lib.esnext.float16.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/commander/typings/index.d.ts","../../core/dist/types.d.ts","../../core/dist/draft/scenario.d.ts","../../core/dist/io/config.d.ts","../../core/dist/io/contracts.d.ts","../../core/dist/io/files.d.ts","../../core/dist/io/suppressions.d.ts","../../core/dist/io/traces.d.ts","../../core/dist/match/expr.d.ts","../../core/dist/match/value.d.ts","../../core/dist/normalize/trace.d.ts","../../core/dist/query/index.d.ts","../../core/dist/report/check.d.ts","../../core/dist/report/render.d.ts","../../../node_modules/zod/v4/core/json-schema.d.cts","../../../node_modules/zod/v4/core/standard-schema.d.cts","../../../node_modules/zod/v4/core/registries.d.cts","../../../node_modules/zod/v4/core/to-json-schema.d.cts","../../../node_modules/zod/v4/core/util.d.cts","../../../node_modules/zod/v4/core/versions.d.cts","../../../node_modules/zod/v4/core/schemas.d.cts","../../../node_modules/zod/v4/core/checks.d.cts","../../../node_modules/zod/v4/core/errors.d.cts","../../../node_modules/zod/v4/core/core.d.cts","../../../node_modules/zod/v4/core/parse.d.cts","../../../node_modules/zod/v4/core/regexes.d.cts","../../../node_modules/zod/v4/locales/ar.d.cts","../../../node_modules/zod/v4/locales/az.d.cts","../../../node_modules/zod/v4/locales/be.d.cts","../../../node_modules/zod/v4/locales/bg.d.cts","../../../node_modules/zod/v4/locales/ca.d.cts","../../../node_modules/zod/v4/locales/cs.d.cts","../../../node_modules/zod/v4/locales/da.d.cts","../../../node_modules/zod/v4/locales/de.d.cts","../../../node_modules/zod/v4/locales/en.d.cts","../../../node_modules/zod/v4/locales/eo.d.cts","../../../node_modules/zod/v4/locales/es.d.cts","../../../node_modules/zod/v4/locales/fa.d.cts","../../../node_modules/zod/v4/locales/fi.d.cts","../../../node_modules/zod/v4/locales/fr.d.cts","../../../node_modules/zod/v4/locales/fr-ca.d.cts","../../../node_modules/zod/v4/locales/he.d.cts","../../../node_modules/zod/v4/locales/hu.d.cts","../../../node_modules/zod/v4/locales/hy.d.cts","../../../node_modules/zod/v4/locales/id.d.cts","../../../node_modules/zod/v4/locales/is.d.cts","../../../node_modules/zod/v4/locales/it.d.cts","../../../node_modules/zod/v4/locales/ja.d.cts","../../../node_modules/zod/v4/locales/ka.d.cts","../../../node_modules/zod/v4/locales/kh.d.cts","../../../node_modules/zod/v4/locales/km.d.cts","../../../node_modules/zod/v4/locales/ko.d.cts","../../../node_modules/zod/v4/locales/lt.d.cts","../../../node_modules/zod/v4/locales/mk.d.cts","../../../node_modules/zod/v4/locales/ms.d.cts","../../../node_modules/zod/v4/locales/nl.d.cts","../../../node_modules/zod/v4/locales/no.d.cts","../../../node_modules/zod/v4/locales/ota.d.cts","../../../node_modules/zod/v4/locales/ps.d.cts","../../../node_modules/zod/v4/locales/pl.d.cts","../../../node_modules/zod/v4/locales/pt.d.cts","../../../node_modules/zod/v4/locales/ru.d.cts","../../../node_modules/zod/v4/locales/sl.d.cts","../../../node_modules/zod/v4/locales/sv.d.cts","../../../node_modules/zod/v4/locales/ta.d.cts","../../../node_modules/zod/v4/locales/th.d.cts","../../../node_modules/zod/v4/locales/tr.d.cts","../../../node_modules/zod/v4/locales/ua.d.cts","../../../node_modules/zod/v4/locales/uk.d.cts","../../../node_modules/zod/v4/locales/ur.d.cts","../../../node_modules/zod/v4/locales/uz.d.cts","../../../node_modules/zod/v4/locales/vi.d.cts","../../../node_modules/zod/v4/locales/zh-cn.d.cts","../../../node_modules/zod/v4/locales/zh-tw.d.cts","../../../node_modules/zod/v4/locales/yo.d.cts","../../../node_modules/zod/v4/locales/index.d.cts","../../../node_modules/zod/v4/core/doc.d.cts","../../../node_modules/zod/v4/core/api.d.cts","../../../node_modules/zod/v4/core/json-schema-processors.d.cts","../../../node_modules/zod/v4/core/json-schema-generator.d.cts","../../../node_modules/zod/v4/core/index.d.cts","../../../node_modules/zod/v4/classic/errors.d.cts","../../../node_modules/zod/v4/classic/parse.d.cts","../../../node_modules/zod/v4/classic/schemas.d.cts","../../../node_modules/zod/v4/classic/checks.d.cts","../../../node_modules/zod/v4/classic/compat.d.cts","../../../node_modules/zod/v4/classic/from-json-schema.d.cts","../../../node_modules/zod/v4/classic/iso.d.cts","../../../node_modules/zod/v4/classic/coerce.d.cts","../../../node_modules/zod/v4/classic/external.d.cts","../../../node_modules/zod/index.d.cts","../../core/dist/schemas/index.d.ts","../../core/dist/utils/errors.d.ts","../../core/dist/utils/json.d.ts","../../core/dist/utils/order.d.ts","../../core/dist/utils/path.d.ts","../../core/dist/verify/invariants.d.ts","../../core/dist/verify/sequence.d.ts","../../core/dist/verify/summary.d.ts","../../core/dist/index.d.ts","../src/commands/shared.ts","../src/commands/accept.ts","../src/commands/check.ts","../src/commands/deprecate.ts","../src/commands/doctor.ts","../src/commands/draft.ts","../src/commands/init.ts","../src/commands/query.ts","../src/commands/schema.ts","../src/index.ts","../../../node_modules/@types/deep-eql/index.d.ts","../../../node_modules/assertion-error/index.d.ts","../../../node_modules/@types/chai/index.d.ts","../../../node_modules/@types/esrecurse/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/crypto.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/buffer/index.d.ts","../../../node_modules/undici-types/utility.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client-stats.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/h2c-client.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-call-history.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/snapshot-agent.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/cache-interceptor.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/sqlite.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/index.d.ts"],"fileIdsList":[[170,171,178,233,250,251],[178,233,250,251],[178,230,231,233,250,251],[178,232,233,250,251],[233,250,251],[178,233,238,250,251,268],[178,233,234,239,244,250,251,253,265,276],[178,233,234,235,244,250,251,253],[178,233,236,250,251,277],[178,233,237,238,245,250,251,254],[178,233,238,250,251,265,273],[178,233,239,241,244,250,251,253],[178,232,233,240,250,251],[178,233,241,242,250,251],[178,233,243,244,250,251],[178,232,233,244,250,251],[178,233,244,245,246,250,251,265,276],[178,233,244,245,246,250,251,260,265,268],[178,225,233,241,244,247,250,251,253,265,276],[178,233,244,245,247,248,250,251,253,265,273,276],[178,233,247,249,250,251,265,273,276],[176,177,178,179,180,181,182,183,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282],[178,233,244,250,251],[178,233,250,251,252,276],[178,233,241,244,250,251,253,265],[178,233,250,251,254],[178,233,250,251,255],[178,232,233,250,251,256],[178,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282],[178,233,250,251,258],[178,233,250,251,259],[178,233,244,250,251,260,261],[178,233,250,251,260,262,277,279],[178,233,245,250,251],[178,233,244,250,251,265,266,268],[178,233,250,251,267,268],[178,233,250,251,265,266],[178,233,250,251,268],[178,233,250,251,269],[178,230,233,250,251,265,270,276],[178,233,244,250,251,271,272],[178,233,250,251,271,272],[178,233,238,250,251,253,265,273],[178,233,250,251,274],[178,233,250,251,253,275],[178,233,247,250,251,259,276],[178,233,238,250,251,277],[178,233,250,251,265,278],[178,233,250,251,252,279],[178,233,250,251,280],[178,233,238,250,251],[178,225,233,250,251],[178,233,250,251,281],[178,225,233,244,246,250,251,256,265,268,276,278,279,281],[178,233,250,251,265,282],[178,191,194,197,198,233,250,251,276],[178,194,233,250,251,265,276],[178,194,198,233,250,251,276],[178,233,250,251,265],[178,188,233,250,251],[178,192,233,250,251],[178,190,191,194,233,250,251,276],[178,233,250,251,253,273],[178,233,250,251,283],[178,188,233,250,251,283],[178,190,194,233,250,251,253,276],[178,185,186,187,189,193,233,244,250,251,265,276],[178,194,202,210,233,250,251],[178,186,192,233,250,251],[178,194,219,220,233,250,251],[178,186,189,194,233,250,251,268,276,283],[178,194,233,250,251],[178,190,194,233,250,251,276],[178,185,233,250,251],[178,188,189,190,192,193,194,195,196,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,220,221,222,223,224,233,250,251],[178,194,212,215,233,241,250,251],[178,194,202,203,204,233,250,251],[178,192,194,203,205,233,250,251],[178,193,233,250,251],[178,186,188,194,233,250,251],[178,194,198,203,205,233,250,251],[178,198,233,250,251],[178,192,194,197,233,250,251,276],[178,186,190,194,202,233,250,251],[178,194,212,233,250,251],[178,205,233,250,251],[178,188,194,219,233,250,251,268,281,283],[149,178,233,250,251],[140,178,233,250,251],[140,143,178,233,250,251],[135,138,140,141,142,143,144,145,146,147,148,178,233,250,251],[74,76,143,178,233,250,251],[140,141,178,233,250,251],[75,140,142,178,233,250,251],[76,78,80,81,82,83,178,233,250,251],[78,80,82,83,178,233,250,251],[78,80,82,178,233,250,251],[75,78,80,81,83,178,233,250,251],[74,76,77,78,79,80,81,82,83,84,85,135,136,137,138,139,178,233,250,251],[74,76,77,80,178,233,250,251],[76,77,80,178,233,250,251],[80,83,178,233,250,251],[74,75,77,78,79,81,82,83,178,233,250,251],[74,75,76,80,140,178,233,250,251],[80,81,82,83,178,233,250,251],[82,178,233,250,251],[86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,178,233,250,251],[159,160,178,233,245,250,251,255],[159,160,178,233,250,251],[159,178,233,245,250,251,255],[159,178,233,250,251,254,255],[60,159,160,161,162,163,164,165,166,167,168,178,233,250,251],[61,178,233,250,251],[61,62,63,64,65,66,67,68,69,70,71,72,73,151,152,153,154,155,156,157,158,178,233,250,251],[150,178,233,250,251]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"0237580177f1a858ab125992af8a6dfc29268fe7d4bac5308b9f462f88b0cd31","impliedFormat":1},{"version":"82368def3900226451f165d7d56662374a09831dbe14f828657682cb5f096cb4","impliedFormat":1},{"version":"c3f95b0744af472e00c9be470b057ef089d594924a3b29d238620653197ef244","impliedFormat":1},{"version":"54191d693197499d51b72cc2b78c79eb64b656210ecd3e9d822246d0860b4318","impliedFormat":1},{"version":"95005d9dfb13a9e15fec0b3ecf0a9aecba460c0d9742a83c74b0af431ef83b88","impliedFormat":1},{"version":"19619fcaac9ebae84574904dfba699b62dfacf8c77453ca591fb02156e3bc21f","impliedFormat":1},{"version":"cdeb077c2687d1e294678b06367a7143cacf8f8f9e19a7cb0db73cfb538aa34b","impliedFormat":1},{"version":"d85ce9ff8b66ba7cd9984387324d8935a617ec39ff5473d1e25cbe3c0ea8a725","impliedFormat":1},{"version":"aacf95b12169d14d9b936fd0229dbb4ab36df50e909432933f3bcfd604964fc1","impliedFormat":1},{"version":"f613343dd11e1ae22524c071945b7d0c717b1aae0d48c28442bc39bed6503945","impliedFormat":1},{"version":"0c79dc92c574c6f0bf2097ce1245053cab1134491b1ba5b9d08f5e3b8e2f320d","impliedFormat":1},{"version":"cfadf0fd2ef6d11d40503c5f52b88e0a57de5f7b765cb9e46e843e0d528cf4a6","impliedFormat":1},{"version":"15e4d457064be6f5aedce2522a81aa8caecfd40ad25e9e87d14b843dc61f4776","impliedFormat":1},{"version":"0bb2b7adb9b2898498a98ae0caacd2c88e64b5eaf30328020c1be8a48add4830","impliedFormat":1},{"version":"c1a2e05eb6d7ca8d7e4a7f4c93ccf0c2857e842a64c98eaee4d85841ee9855e6","impliedFormat":1},{"version":"835fb2909ce458740fb4a49fc61709896c6864f5ce3db7f0a88f06c720d74d02","impliedFormat":1},{"version":"6e5857f38aa297a859cab4ec891408659218a5a2610cd317b6dcbef9979459cc","impliedFormat":1},{"version":"ead8e39c2e11891f286b06ae2aa71f208b1802661fcdb2425cffa4f494a68854","impliedFormat":1},{"version":"82919acbb38870fcf5786ec1292f0f5afe490f9b3060123e48675831bd947192","impliedFormat":1},{"version":"e222701788ec77bd57c28facbbd142eadf5c749a74d586bc2f317db7e33544b1","impliedFormat":1},{"version":"09154713fae0ed7befacdad783e5bd1970c06fc41a5f866f7f933b96312ce764","impliedFormat":1},{"version":"8d67b13da77316a8a2fabc21d340866ddf8a4b99e76a6c951cc45189142df652","impliedFormat":1},{"version":"a91c8d28d10fee7fe717ddf3743f287b68770c813c98f796b6e38d5d164bd459","impliedFormat":1},{"version":"68add36d9632bc096d7245d24d6b0b8ad5f125183016102a3dad4c9c2438ccb0","impliedFormat":1},{"version":"3a819c2928ee06bbcc84e2797fd3558ae2ebb7e0ed8d87f71732fb2e2acc87b4","impliedFormat":1},{"version":"f6f827cd43e92685f194002d6b52a9408309cda1cec46fb7ca8489a95cbd2fd4","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"a270a1a893d1aee5a3c1c8c276cd2778aa970a2741ee2ccf29cc3210d7da80f5","impliedFormat":1},{"version":"add0ce7b77ba5b308492fa68f77f24d1ed1d9148534bdf05ac17c30763fc1a79","impliedFormat":1},{"version":"8926594ee895917e90701d8cbb5fdf77fc238b266ac540f929c7253f8ad6233d","impliedFormat":1},{"version":"2f67911e4bf4e0717dc2ded248ce2d5e4398d945ee13889a6852c1233ea41508","impliedFormat":1},{"version":"d8430c275b0f59417ea8e173cfb888a4477b430ec35b595bf734f3ec7a7d729f","impliedFormat":1},{"version":"69364df1c776372d7df1fb46a6cb3a6bf7f55e700f533a104e3f9d70a32bec18","impliedFormat":1},{"version":"6042774c61ece4ba77b3bf375f15942eb054675b7957882a00c22c0e4fe5865c","impliedFormat":1},{"version":"5a3bd57ed7a9d9afef74c75f77fce79ba3c786401af9810cdf45907c4e93f30e","impliedFormat":1},{"version":"ed8763205f02fb65e84eff7432155258df7f93b7d938f01785cb447d043d53f3","impliedFormat":1},{"version":"30db853bb2e60170ba11e39ab48bacecb32d06d4def89eedf17e58ebab762a65","impliedFormat":1},{"version":"e27451b24234dfed45f6cf22112a04955183a99c42a2691fb4936d63cfe42761","impliedFormat":1},{"version":"2316301dd223d31962d917999acf8e543e0119c5d24ec984c9f22cb23247160c","impliedFormat":1},{"version":"58d65a2803c3b6629b0e18c8bf1bc883a686fcf0333230dd0151ab6e85b74307","impliedFormat":1},{"version":"e818471014c77c103330aee11f00a7a00b37b35500b53ea6f337aefacd6174c9","impliedFormat":1},{"version":"d4a5b1d2ff02c37643e18db302488cd64c342b00e2786e65caac4e12bda9219b","impliedFormat":1},{"version":"29f823cbe0166e10e7176a94afe609a24b9e5af3858628c541ff8ce1727023cd","impliedFormat":1},{"version":"1d8635ab5c1ece6e1a9285bf4cc7618c684bd1d5e36e1f06405fd1525ba97a11","impliedFormat":1},{"version":"24c1b3e07ddbddb9b298da7ecda7f333ff40318822f9be7e5ab08bf4de879ae2","impliedFormat":1},{"version":"4cac5d146ae79424133908bc0adb17e13bb5adff80afac14fe260a159b8bc061","impliedFormat":1},{"version":"8a485d4768479d2b1e6fc3126cbfc51c2bfddf7435ae87895575736c0d848130","impliedFormat":1},{"version":"62299a71f44c92b74f2f9b60e1c9c2ff72725e6e8f9ebec2aa73e36e44947f5f","impliedFormat":1},{"version":"9c65fdf0099abf8a6424719828bff70e001b034fb6b4211558c68e433046062a","impliedFormat":1},{"version":"03bd228b1e9894d9cc29c7e3a94d31859baa61f546b467ed6a43a438e3fc1646","impliedFormat":1},{"version":"de3f622e3c444051e28fe3da3fbd864ce253e1b2a99f5a4bec16a52174558fec","impliedFormat":1},{"version":"0456666f799a80b7278202aa9f6c79379662ad5c0570b21bfd070245d9d81662","impliedFormat":1},{"version":"22eada6b21a259cd8f3996a592f5fe39b7e418bf89bd91c86d6a752de3facff3","signature":"7ff048cece439534de52e585a36004fdb2accdd2048cea2c1429dff8b2d812a8","impliedFormat":1},{"version":"6b37657298cb9777d109198ec7cc799f458219512e627ba087bd7f482e2584e6","signature":"809516f39a6a21d32f5647279e0f9b516618b789774440b432871dd063cd1b5e","impliedFormat":1},{"version":"264f607fe9a8fdce5c1a12e2cfa267b10000614c774e3c243498804d6effcc3b","signature":"d4cc841412ea347ec36a15af9e604353523c8d2500cb5596218e8cfe86a3d384","impliedFormat":1},{"version":"0c9338ee9e5cdfcfafaae7d3c85a9655db22273cbc526f74fa4e742c4d9dd3db","signature":"7d38f6c14c84d60448a09e36fbe9214eab58182225e3fc4227e2123ad073efa8","impliedFormat":1},{"version":"beb4f74c18b1e104bf09e1953a23a9a9e0819fe632a861a07f5f9bd712d9baa3","signature":"00da1aa00fa9d2c80f2d0bc2f659445235c74ab51c2e8f7d11b8c157c45056eb","impliedFormat":1},{"version":"aca5237e743e780d8123c75b4e99c96f71f3bcf332e4d128b68b340cbe1a6893","signature":"ed2e552a5e9fbc3ee72216fa61dd73d5a3c6665913e8d1a62272269f45d22d7a","impliedFormat":1},{"version":"b9e8d9e2da4910b4587c593b7da99e2be9ea302b486dc87b1d4322ff77e11480","signature":"11a4dbd2e2e278db4e846ad40a98e33e64fd1d702428ad283ba945445fd0ce62","impliedFormat":1},{"version":"bde21e066c40312efda627c5b0bc69f6a9537ae63518b9b22afca9a10399419f","signature":"a4a2857c0d1316af4ba655d6897bcbb8011c164b7c84a1ddb512bc8685ce1269","impliedFormat":1},{"version":"463311fa0e5c906450dcd229063830700338cfe7b8ad75bf4fadd5c3d8cc2be8","signature":"67c60504f3a8c293900e72c0520e1c3f09bf71af0ad96b50e5c901a651b126b9","impliedFormat":1},{"version":"2ddac7f7f937bf3c2e42b4a6589f3e8a3976ab13e71052dedc51449588d7d7bc","signature":"43e818adf60173644896298637f47b01d5819b17eda46eaa32d0c7d64724d012","impliedFormat":1},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"d5799bcf7fe4e6de3063abf4e321c14b051706f03cf5716d8a19f22fe1f69519","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"378281aa35786c27d5811af7e6bcaa492eebd0c7013d48137c35bbc69a2b9751","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"1b2dd1cbeb0cc6ae20795958ba5950395ebb2849b7c8326853dd15530c77ab0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"387a023d363f755eb63450a66c28b14cdd7bc30a104565e2dbf0a8988bb4a56c","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"4967529644e391115ca5592184d4b63980569adf60ee685f968fd59ab1557188","impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"f724236417941ea77ec8d38c6b7021f5fb7f8521c7f8c1538e87661f2c6a0774","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ea15fd99b2e34cb25fe8346c955000bb70c8b423ae4377a972ef46bfb37f595","impliedFormat":1},{"version":"7cf69dd5502c41644c9e5106210b5da7144800670cbe861f66726fa209e231c4","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"f9b4137a0d285bd77dba2e6e895530112264310ae47e07bf311feae428fb8b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"c06b2652ffeb89afd0f1c52c165ced77032f9cd09bc481153fbd6b5504c69494","impliedFormat":1},{"version":"51aecd2df90a3cffea1eb4696b33b2d78594ea2aa2138e6b9471ec4841c6c2ee","impliedFormat":1},{"version":"9d8f9e63e29a3396285620908e7f14d874d066caea747dc4b2c378f0599166b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"612422d5ba6b4a5c4537f423e9199645468ad80a689801da63ab7edb43f7b835","impliedFormat":1},{"version":"db9ada976f9e52e13f7ae8b9a320f4b67b87685938c5879187d8864b2fbe97f3","impliedFormat":1},{"version":"9f39e70a354d0fba29ac3cdf6eca00b7f9e96f64b2b2780c432e8ea27f133743","impliedFormat":1},{"version":"0dace96cc0f7bc6d0ee2044921bdf19fe42d16284dbcc8ae200800d1c9579335","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"c64e1888baaa3253ca4405b455e4bf44f76357868a1bd0a52998ade9a092ad78","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc8c6f5322961b56d9906601b20798725df60baeab45ec014fba9f795d5596fd","impliedFormat":1},{"version":"0904660ae854e6d41f6ff25356db1d654436c6305b0f0aa89d1532df0253486e","impliedFormat":1},{"version":"060d305fe4494d8cb2b99d620928d369d1ee55c1645f5e729a2aca07d0f108cb","impliedFormat":1},{"version":"230bdc111d7578276e4a3bb9d075d85c78c6b68f428c3a9935e2eaa10f4ae1f5","impliedFormat":1},{"version":"0c50296ee73dae94efc3f0da4936b1146ca6ce2217acfabb44c19c9a33fa30e5","impliedFormat":1},{"version":"bbf42f98a5819f4f06e18c8b669a994afe9a17fe520ae3454a195e6eabf7700d","impliedFormat":1},{"version":"0e5974dfff7a97181c7c376545f126b20acf2f1341db7d3fccea4977bf3ce19c","impliedFormat":1},{"version":"c7f977ea78a1b060a30554c1c4ec0e2269c6e305a349ca2ada14931ac27ecc0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"145dcf25fd4967c610c53d93d7bc4dce8fbb1b6dd7935362472d4ae49363c7ba","impliedFormat":1},{"version":"ff65b8a8bd380c6d129becc35de02f7c29ad7ce03300331ca91311fb4044d1a9","impliedFormat":1},{"version":"04bf1aa481d1adfb16d93d76e44ce71c51c8ef68039d849926551199489637f6","impliedFormat":1},{"version":"2c9adcc85574b002c9a6311ff2141055769e0071856ec979d92ff989042b1f1b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bf3fe89ec8baa335f6370b9fa36308e1bc7a72e2eb2dad1e94f31e27fa28b5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"8c81fd4a110490c43d7c578e8c6f69b3af01717189196899a6a44f93daa57a3a","impliedFormat":1},{"version":"5fb39858b2459864b139950a09adae4f38dad87c25bf572ce414f10e4bd7baab","impliedFormat":1},{"version":"35390d6fa94bdb432c5d0bcb6547bdd11406c2692a6b90b9e47be2105ea19bd6","impliedFormat":1},{"version":"b33b74b97952d9bf4fbd2951dcfbb5136656ddb310ce1c84518aaa77dbca9992","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"8d117798e5228c7fdff887f44851d07320739c5cc0d511afae8f250c51809a36","affectsGlobalScope":true,"impliedFormat":1},{"version":"c119835edf36415081dfd9ed15fc0cd37aaa28d232be029ad073f15f3d88c323","impliedFormat":1},{"version":"8e7c3bed5f19ade8f911677ddc83052e2283e25b0a8654cd89db9079d4b323c7","impliedFormat":1},{"version":"9705cd157ffbb91c5cab48bdd2de5a437a372e63f870f8a8472e72ff634d47c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"ccf3afaeebbeee4ca9092101e99fd6abd681116b6e5ec23e381bbb1e1f32262c","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"ab7818a9d57a9297b90e456fc68b77f84d74395a9210a3cfa9d87db33aff8b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb08062718a5470cd864c1fae0eb5b3a3adc5bcd05dcf87608d6f60b65eca3f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"3a815b7d1aebc0646b91548eab2fc19dada09ff255d04c71ced00bbd3058c8eb","impliedFormat":1},{"version":"255d948f87f24ffd57bcb2fdf95792fd418a2e1f712a98cf2cce88744d75085c","impliedFormat":1},{"version":"0d5b085f36e6dc55bc6332ecb9c733be3a534958c238fb8d8d18d4a2b6f2a15a","impliedFormat":1},{"version":"836b36913830645ac3b28fe33731aac3fdb3524ee8adbb4cdab9a5c189f41943","affectsGlobalScope":true,"impliedFormat":1},{"version":"bfd3b3c21a56104693183942e221c1896ee23bcb8f8d91ab0b941f7b32985411","impliedFormat":1},{"version":"d7e9ab1b0996639047c61c1e62f85c620e4382206b3abb430d9a21fb7bc23c77","impliedFormat":1}],"root":[[160,169]],"options":{"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"module":100,"noImplicitOverride":true,"noUncheckedIndexedAccess":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9,"tsBuildInfoFile":"./tsconfig.tsbuildinfo"},"referencedMap":[[172,1],[170,2],[173,2],[174,2],[175,2],[230,3],[231,3],[232,4],[178,5],[233,6],[234,7],[235,8],[176,2],[236,9],[237,10],[238,11],[239,12],[240,13],[241,14],[242,14],[243,15],[244,16],[245,17],[246,18],[179,2],[177,2],[247,19],[248,20],[249,21],[283,22],[250,23],[251,2],[252,24],[253,25],[254,26],[255,27],[256,28],[257,29],[258,30],[259,31],[260,32],[261,32],[262,33],[263,2],[264,34],[265,35],[267,36],[266,37],[268,38],[269,39],[270,40],[271,41],[272,42],[273,43],[274,44],[275,45],[276,46],[277,47],[278,48],[279,49],[280,50],[180,2],[181,51],[182,2],[183,2],[226,52],[227,53],[228,2],[229,38],[281,54],[282,55],[171,2],[184,2],[60,2],[58,2],[59,2],[11,2],[10,2],[2,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[3,2],[20,2],[21,2],[4,2],[22,2],[26,2],[23,2],[24,2],[25,2],[27,2],[28,2],[29,2],[5,2],[30,2],[31,2],[32,2],[33,2],[6,2],[37,2],[34,2],[35,2],[36,2],[38,2],[7,2],[39,2],[44,2],[45,2],[40,2],[41,2],[42,2],[43,2],[8,2],[49,2],[46,2],[47,2],[48,2],[50,2],[9,2],[51,2],[52,2],[53,2],[55,2],[54,2],[1,2],[56,2],[57,2],[202,56],[214,57],[200,58],[215,59],[224,60],[191,61],[192,62],[190,63],[223,64],[218,65],[222,66],[194,67],[211,68],[193,69],[221,70],[188,71],[189,65],[195,72],[196,2],[201,73],[199,72],[186,74],[225,75],[216,76],[205,77],[204,72],[206,78],[209,79],[203,80],[207,81],[219,64],[197,82],[198,83],[210,84],[187,59],[213,85],[212,72],[208,86],[217,2],[185,2],[220,87],[150,88],[144,89],[148,90],[145,90],[141,89],[149,91],[146,92],[147,90],[142,93],[143,94],[137,95],[81,96],[83,97],[136,2],[82,98],[140,99],[139,100],[138,101],[74,2],[84,96],[85,2],[76,102],[80,103],[75,2],[77,104],[78,105],[79,2],[86,106],[87,106],[88,106],[89,106],[90,106],[91,106],[92,106],[93,106],[94,106],[95,106],[96,106],[97,106],[98,106],[100,106],[99,106],[101,106],[102,106],[103,106],[104,106],[135,107],[105,106],[106,106],[107,106],[108,106],[109,106],[110,106],[111,106],[112,106],[113,106],[114,106],[115,106],[116,106],[117,106],[119,106],[118,106],[120,106],[121,106],[122,106],[123,106],[124,106],[125,106],[126,106],[127,106],[128,106],[129,106],[130,106],[131,106],[134,106],[132,106],[133,106],[161,108],[162,109],[163,109],[164,108],[165,109],[166,110],[167,109],[168,109],[160,111],[169,112],[62,113],[159,114],[63,113],[64,113],[65,2],[66,113],[67,113],[68,113],[69,113],[70,113],[71,113],[72,113],[73,113],[151,115],[61,2],[152,2],[153,113],[154,113],[155,2],[156,113],[157,113],[158,113]],"latestChangedDtsFile":"./commands/draft.d.ts","version":"5.9.3"}
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "@driftfence/cli",
3
+ "version": "0.1.0",
4
+ "license": "BUSL-1.1",
5
+ "description": "Command-line interface for DriftFence.",
6
+ "type": "commonjs",
7
+ "main": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "homepage": "https://github.com/austindyoung/DriftFenceV2#readme",
10
+ "bugs": {
11
+ "url": "https://github.com/austindyoung/DriftFenceV2/issues"
12
+ },
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+https://github.com/austindyoung/DriftFenceV2.git",
16
+ "directory": "packages/cli"
17
+ },
18
+ "engines": {
19
+ "node": ">=20.19.0"
20
+ },
21
+ "keywords": [
22
+ "driftfence",
23
+ "cli",
24
+ "contracts",
25
+ "testing",
26
+ "governance"
27
+ ],
28
+ "bin": {
29
+ "driftfence": "dist/index.js"
30
+ },
31
+ "files": [
32
+ "dist",
33
+ "README.md"
34
+ ],
35
+ "publishConfig": {
36
+ "access": "public"
37
+ },
38
+ "dependencies": {
39
+ "@driftfence/core": "0.1.0",
40
+ "commander": "^14.0.3"
41
+ }
42
+ }