@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.
- package/LICENSE +81 -0
- package/README.md +35 -0
- package/dist/commands/accept.d.ts +9 -0
- package/dist/commands/accept.d.ts.map +1 -0
- package/dist/commands/accept.js +99 -0
- package/dist/commands/accept.js.map +1 -0
- package/dist/commands/check.d.ts +7 -0
- package/dist/commands/check.d.ts.map +1 -0
- package/dist/commands/check.js +22 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/deprecate.d.ts +8 -0
- package/dist/commands/deprecate.d.ts.map +1 -0
- package/dist/commands/deprecate.js +46 -0
- package/dist/commands/deprecate.js.map +1 -0
- package/dist/commands/doctor.d.ts +4 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +93 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/draft.d.ts +6 -0
- package/dist/commands/draft.d.ts.map +1 -0
- package/dist/commands/draft.js +70 -0
- package/dist/commands/draft.js.map +1 -0
- package/dist/commands/init.d.ts +5 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +105 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/query.d.ts +8 -0
- package/dist/commands/query.d.ts.map +1 -0
- package/dist/commands/query.js +20 -0
- package/dist/commands/query.js.map +1 -0
- package/dist/commands/schema.d.ts +3 -0
- package/dist/commands/schema.d.ts.map +1 -0
- package/dist/commands/schema.js +16 -0
- package/dist/commands/schema.js.map +1 -0
- package/dist/commands/shared.d.ts +7 -0
- package/dist/commands/shared.d.ts.map +1 -0
- package/dist/commands/shared.js +37 -0
- package/dist/commands/shared.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +123 -0
- package/dist/index.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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":"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"}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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
|
+
}
|