@noodleseed/one 0.153.0 → 0.154.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/dist/commands/app-purge-reconciliation-args.d.ts +28 -0
- package/dist/commands/app-purge-reconciliation-args.d.ts.map +1 -0
- package/dist/commands/app-purge-reconciliation-args.js +124 -0
- package/dist/commands/app-purge-reconciliation-args.js.map +1 -0
- package/dist/commands/app-purge-reconciliation-files.d.ts +8 -0
- package/dist/commands/app-purge-reconciliation-files.d.ts.map +1 -0
- package/dist/commands/app-purge-reconciliation-files.js +109 -0
- package/dist/commands/app-purge-reconciliation-files.js.map +1 -0
- package/dist/commands/app-purge-reconciliation-ops.d.ts +3 -0
- package/dist/commands/app-purge-reconciliation-ops.d.ts.map +1 -0
- package/dist/commands/app-purge-reconciliation-ops.js +190 -0
- package/dist/commands/app-purge-reconciliation-ops.js.map +1 -0
- package/dist/commands/billing-ops.d.ts.map +1 -1
- package/dist/commands/billing-ops.js +7 -0
- package/dist/commands/billing-ops.js.map +1 -1
- package/dist/commands/billing-org-transfer-files.d.ts +12 -0
- package/dist/commands/billing-org-transfer-files.d.ts.map +1 -0
- package/dist/commands/billing-org-transfer-files.js +112 -0
- package/dist/commands/billing-org-transfer-files.js.map +1 -0
- package/dist/commands/billing-org-transfer-ops.d.ts +4 -0
- package/dist/commands/billing-org-transfer-ops.d.ts.map +1 -0
- package/dist/commands/billing-org-transfer-ops.js +534 -0
- package/dist/commands/billing-org-transfer-ops.js.map +1 -0
- package/dist/commands/service-ops.d.ts.map +1 -1
- package/dist/commands/service-ops.js +4 -1
- package/dist/commands/service-ops.js.map +1 -1
- package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
- package/node_modules/@noodle-borg/assistant-gateway/package.json +1 -1
- package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-account.js +96 -0
- package/node_modules/@noodle-borg/cli-catalog/dist/catalog-data-billing.js +116 -1
- package/node_modules/@noodle-borg/control-plane/dist/app-purge-reconciliation-port.d.ts +25 -0
- package/node_modules/@noodle-borg/control-plane/dist/app-purge-reconciliation-port.js +10 -0
- package/node_modules/@noodle-borg/control-plane/dist/portable.d.ts +1 -0
- package/node_modules/@noodle-borg/control-plane/dist/portable.js +1 -0
- package/node_modules/@noodle-borg/control-plane/package.json +3 -1
- package/node_modules/@noodle-borg/service/dist/routes/app-purge-reconciliation.js +72 -0
- package/node_modules/@noodle-borg/service/dist/routes/control-plane.js +15 -2
- package/node_modules/@noodle-borg/service/dist/service.js +27 -1
- package/node_modules/@noodle-borg/service/dist/store/in-memory.js +4 -8
- package/node_modules/@noodle-borg/service/dist/store/json-file.js +6 -3
- package/node_modules/@noodle-borg/service/dist/store/records.js +20 -0
- package/node_modules/@noodle-borg/service/dist/store.d.ts +3 -2
- package/node_modules/@noodle-borg/service/package.json +1 -1
- package/node_modules/@noodle-borg/wire-contracts/dist/app-purge-reconciliation.d.ts +177 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/app-purge-reconciliation.js +189 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/assistant.d.ts +1 -1
- package/node_modules/@noodle-borg/wire-contracts/dist/billing-org-transfer.d.ts +629 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/billing-org-transfer.js +259 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/control-plane.d.ts +21 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/control-plane.js +23 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/index.d.ts +2 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/index.js +2 -0
- package/node_modules/@noodle-borg/wire-contracts/dist/platform-account-reset.d.ts +4 -4
- package/node_modules/@noodleseed/assistant/package.json +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { CliFailure } from './shared.js';
|
|
2
|
+
export type AppPurgeReconciliationArgs = {
|
|
3
|
+
readonly action: 'preview';
|
|
4
|
+
readonly output: string;
|
|
5
|
+
readonly service?: string;
|
|
6
|
+
readonly authToken?: string;
|
|
7
|
+
readonly json: boolean;
|
|
8
|
+
} | {
|
|
9
|
+
readonly action: 'apply';
|
|
10
|
+
readonly approvedPreview: string;
|
|
11
|
+
readonly releaseSha: string;
|
|
12
|
+
readonly approvalReference: string;
|
|
13
|
+
readonly recoveryCheckpoint: string;
|
|
14
|
+
readonly reason: string;
|
|
15
|
+
readonly idempotencyKey: string;
|
|
16
|
+
readonly yes: true;
|
|
17
|
+
readonly service?: string;
|
|
18
|
+
readonly authToken?: string;
|
|
19
|
+
readonly json: boolean;
|
|
20
|
+
};
|
|
21
|
+
export declare function parseAppPurgeReconciliationArgs(rest: readonly string[]): {
|
|
22
|
+
readonly ok: true;
|
|
23
|
+
readonly args: AppPurgeReconciliationArgs;
|
|
24
|
+
} | {
|
|
25
|
+
readonly ok: false;
|
|
26
|
+
readonly error: CliFailure;
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=app-purge-reconciliation-args.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-purge-reconciliation-args.d.ts","sourceRoot":"","sources":["../../src/commands/app-purge-reconciliation-args.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,MAAM,0BAA0B,GAClC;IACE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB,GACD;IACE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IACnB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB,CAAC;AAiBN,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,SAAS,MAAM,EAAE,GAErB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAA;CAAE,GAChE;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;CAAE,CAmDrD"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { isAbsolute } from 'node:path';
|
|
2
|
+
import { AppPurgeReconciliationApplyRequestSchema } from '@noodle-borg/wire-contracts';
|
|
3
|
+
import { EXIT } from './output.js';
|
|
4
|
+
const APPLY_EVIDENCE_SCHEMA = AppPurgeReconciliationApplyRequestSchema.pick({
|
|
5
|
+
releaseSha: true,
|
|
6
|
+
approvalReference: true,
|
|
7
|
+
recoveryCheckpoint: true,
|
|
8
|
+
reason: true,
|
|
9
|
+
idempotencyKey: true,
|
|
10
|
+
confirmed: true,
|
|
11
|
+
});
|
|
12
|
+
export function parseAppPurgeReconciliationArgs(rest) {
|
|
13
|
+
const action = rest[0];
|
|
14
|
+
if (action !== 'preview' && action !== 'apply') {
|
|
15
|
+
return failure('app-purge requires preview or apply');
|
|
16
|
+
}
|
|
17
|
+
const parsed = parseFlags(rest.slice(1), action);
|
|
18
|
+
if (!parsed.ok)
|
|
19
|
+
return parsed;
|
|
20
|
+
const common = {
|
|
21
|
+
...(parsed.flags.values.has('--service')
|
|
22
|
+
? { service: parsed.flags.values.get('--service') }
|
|
23
|
+
: {}),
|
|
24
|
+
...(parsed.flags.values.has('--auth-token')
|
|
25
|
+
? { authToken: parsed.flags.values.get('--auth-token') }
|
|
26
|
+
: {}),
|
|
27
|
+
json: parsed.flags.json,
|
|
28
|
+
};
|
|
29
|
+
if (action === 'preview') {
|
|
30
|
+
const output = parsed.flags.values.get('--output');
|
|
31
|
+
if (output === undefined || !isAbsolute(output)) {
|
|
32
|
+
return failure('--output must be an absolute path');
|
|
33
|
+
}
|
|
34
|
+
return { ok: true, args: { action, output, ...common } };
|
|
35
|
+
}
|
|
36
|
+
if (!parsed.flags.yes)
|
|
37
|
+
return failure('--yes is required for apply');
|
|
38
|
+
const approvedPreview = parsed.flags.values.get('--approved-preview');
|
|
39
|
+
if (approvedPreview === undefined || !isAbsolute(approvedPreview)) {
|
|
40
|
+
return failure('--approved-preview must be an absolute path');
|
|
41
|
+
}
|
|
42
|
+
const evidence = APPLY_EVIDENCE_SCHEMA.safeParse({
|
|
43
|
+
releaseSha: parsed.flags.values.get('--release-sha'),
|
|
44
|
+
approvalReference: parsed.flags.values.get('--approval-reference'),
|
|
45
|
+
recoveryCheckpoint: parsed.flags.values.get('--recovery-checkpoint'),
|
|
46
|
+
reason: parsed.flags.values.get('--reason'),
|
|
47
|
+
idempotencyKey: parsed.flags.values.get('--idempotency-key'),
|
|
48
|
+
confirmed: true,
|
|
49
|
+
});
|
|
50
|
+
if (!evidence.success)
|
|
51
|
+
return failure('apply evidence is missing or invalid');
|
|
52
|
+
return {
|
|
53
|
+
ok: true,
|
|
54
|
+
args: {
|
|
55
|
+
action,
|
|
56
|
+
approvedPreview,
|
|
57
|
+
releaseSha: evidence.data.releaseSha,
|
|
58
|
+
approvalReference: evidence.data.approvalReference,
|
|
59
|
+
recoveryCheckpoint: evidence.data.recoveryCheckpoint,
|
|
60
|
+
reason: evidence.data.reason,
|
|
61
|
+
idempotencyKey: evidence.data.idempotencyKey,
|
|
62
|
+
yes: true,
|
|
63
|
+
...common,
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function parseFlags(rest, action) {
|
|
68
|
+
const allowed = action === 'preview'
|
|
69
|
+
? new Set(['--output', '--service', '--auth-token'])
|
|
70
|
+
: new Set([
|
|
71
|
+
'--approved-preview',
|
|
72
|
+
'--release-sha',
|
|
73
|
+
'--approval-reference',
|
|
74
|
+
'--recovery-checkpoint',
|
|
75
|
+
'--reason',
|
|
76
|
+
'--idempotency-key',
|
|
77
|
+
'--service',
|
|
78
|
+
'--auth-token',
|
|
79
|
+
]);
|
|
80
|
+
const values = new Map();
|
|
81
|
+
let json = false;
|
|
82
|
+
let yes = false;
|
|
83
|
+
for (let index = 0; index < rest.length; index++) {
|
|
84
|
+
const flag = rest[index];
|
|
85
|
+
if (flag === '--json') {
|
|
86
|
+
if (json)
|
|
87
|
+
return failure('--json may be supplied once');
|
|
88
|
+
json = true;
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
if (flag === '--yes' && action === 'apply') {
|
|
92
|
+
if (yes)
|
|
93
|
+
return failure('--yes may be supplied once');
|
|
94
|
+
yes = true;
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
if (flag === undefined || !allowed.has(flag)) {
|
|
98
|
+
return failure('unknown or inapplicable argument');
|
|
99
|
+
}
|
|
100
|
+
const value = rest[index + 1];
|
|
101
|
+
if (value === undefined || value.length === 0 || value.startsWith('--')) {
|
|
102
|
+
return failure(`a value for ${flag} is required`);
|
|
103
|
+
}
|
|
104
|
+
if (values.has(flag))
|
|
105
|
+
return failure(`${flag} may be supplied once`);
|
|
106
|
+
values.set(flag, value);
|
|
107
|
+
index++;
|
|
108
|
+
}
|
|
109
|
+
return { ok: true, flags: { values, json, yes } };
|
|
110
|
+
}
|
|
111
|
+
function failure(message) {
|
|
112
|
+
return {
|
|
113
|
+
ok: false,
|
|
114
|
+
error: {
|
|
115
|
+
code: 'usage',
|
|
116
|
+
message,
|
|
117
|
+
cause: 'The service app-purge command or one of its arguments is invalid.',
|
|
118
|
+
fix: 'Use a fresh preview artifact and provide every required apply evidence flag.',
|
|
119
|
+
next: 'noodle service app-purge preview --output <absolute-path>',
|
|
120
|
+
exitCode: EXIT.USAGE,
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=app-purge-reconciliation-args.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-purge-reconciliation-args.js","sourceRoot":"","sources":["../../src/commands/app-purge-reconciliation-args.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type AppPurgeReconciliationPreviewArtifactV1 } from '@noodle-borg/wire-contracts';
|
|
2
|
+
/** Create a new approved-preview artifact without overwriting or following caller-controlled links. */
|
|
3
|
+
export declare function writeAppPurgeReconciliationPreview(path: string, value: unknown): Promise<void>;
|
|
4
|
+
/** Read one bounded approved artifact from its opened descriptor and reproduce its checksum. */
|
|
5
|
+
export declare function readAppPurgeReconciliationPreview(path: string): Promise<AppPurgeReconciliationPreviewArtifactV1>;
|
|
6
|
+
/** Strict schema plus canonical SHA-256 verification shared by service and file boundaries. */
|
|
7
|
+
export declare function validateAppPurgeReconciliationPreview(value: unknown): AppPurgeReconciliationPreviewArtifactV1;
|
|
8
|
+
//# sourceMappingURL=app-purge-reconciliation-files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-purge-reconciliation-files.d.ts","sourceRoot":"","sources":["../../src/commands/app-purge-reconciliation-files.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,uCAAuC,EAE7C,MAAM,6BAA6B,CAAC;AAIrC,uGAAuG;AACvG,wBAAsB,kCAAkC,CACtD,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,IAAI,CAAC,CAiCf;AAED,gGAAgG;AAChG,wBAAsB,iCAAiC,CACrD,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,uCAAuC,CAAC,CA6BlD;AAED,+FAA+F;AAC/F,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,OAAO,GACb,uCAAuC,CAQzC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { constants, link, lstat, mkdtemp, open, rmdir, unlink } from 'node:fs/promises';
|
|
3
|
+
import { dirname, isAbsolute, join } from 'node:path';
|
|
4
|
+
import { AppPurgeReconciliationPreviewArtifactSchema, appPurgeReconciliationChecksumPayload, } from '@noodle-borg/wire-contracts';
|
|
5
|
+
const MAX_PREVIEW_BYTES = 256 * 1024;
|
|
6
|
+
/** Create a new approved-preview artifact without overwriting or following caller-controlled links. */
|
|
7
|
+
export async function writeAppPurgeReconciliationPreview(path, value) {
|
|
8
|
+
const artifact = validateAppPurgeReconciliationPreview(value);
|
|
9
|
+
if (!isAbsolute(path))
|
|
10
|
+
throw previewWriteFailure();
|
|
11
|
+
const bytes = Buffer.from(`${JSON.stringify(artifact)}\n`, 'utf8');
|
|
12
|
+
if (bytes.byteLength > MAX_PREVIEW_BYTES)
|
|
13
|
+
throw previewWriteFailure();
|
|
14
|
+
let stagingDirectory;
|
|
15
|
+
let stagingPath;
|
|
16
|
+
let handle;
|
|
17
|
+
try {
|
|
18
|
+
stagingDirectory = await mkdtemp(join(dirname(path), '.noodle-app-purge-preview-'));
|
|
19
|
+
const stagingDirectoryStat = await lstat(stagingDirectory);
|
|
20
|
+
if (!stagingDirectoryStat.isDirectory() || (stagingDirectoryStat.mode & 0o077) !== 0) {
|
|
21
|
+
throw previewWriteFailure();
|
|
22
|
+
}
|
|
23
|
+
stagingPath = join(stagingDirectory, 'artifact.json');
|
|
24
|
+
handle = await open(stagingPath, constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL | constants.O_NOFOLLOW, 0o600);
|
|
25
|
+
const stat = await handle.stat();
|
|
26
|
+
if (!stat.isFile() || !isExactMode(Number(stat.mode)))
|
|
27
|
+
throw previewWriteFailure();
|
|
28
|
+
await handle.writeFile(bytes);
|
|
29
|
+
await handle.sync();
|
|
30
|
+
await handle.close();
|
|
31
|
+
handle = undefined;
|
|
32
|
+
await link(stagingPath, path);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
await handle?.close().catch(() => undefined);
|
|
36
|
+
throw previewWriteFailure();
|
|
37
|
+
}
|
|
38
|
+
finally {
|
|
39
|
+
await cleanPrivateStagingPath(stagingPath, stagingDirectory);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/** Read one bounded approved artifact from its opened descriptor and reproduce its checksum. */
|
|
43
|
+
export async function readAppPurgeReconciliationPreview(path) {
|
|
44
|
+
if (!isAbsolute(path))
|
|
45
|
+
throw previewReadFailure();
|
|
46
|
+
let handle;
|
|
47
|
+
try {
|
|
48
|
+
handle = await open(path, constants.O_RDONLY | constants.O_NOFOLLOW);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
throw previewReadFailure();
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
const stat = await handle.stat();
|
|
55
|
+
if (!stat.isFile() || !isExactMode(stat.mode) || stat.size > MAX_PREVIEW_BYTES) {
|
|
56
|
+
throw previewReadFailure();
|
|
57
|
+
}
|
|
58
|
+
const buffer = Buffer.alloc(MAX_PREVIEW_BYTES + 1);
|
|
59
|
+
let bytesRead = 0;
|
|
60
|
+
while (bytesRead < buffer.byteLength) {
|
|
61
|
+
const read = await handle.read(buffer, bytesRead, buffer.byteLength - bytesRead, bytesRead);
|
|
62
|
+
if (read.bytesRead === 0)
|
|
63
|
+
break;
|
|
64
|
+
bytesRead += read.bytesRead;
|
|
65
|
+
}
|
|
66
|
+
if (bytesRead > MAX_PREVIEW_BYTES)
|
|
67
|
+
throw previewReadFailure();
|
|
68
|
+
return validateAppPurgeReconciliationPreview(JSON.parse(buffer.subarray(0, bytesRead).toString('utf8')));
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
throw previewReadFailure();
|
|
72
|
+
}
|
|
73
|
+
finally {
|
|
74
|
+
await handle.close();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/** Strict schema plus canonical SHA-256 verification shared by service and file boundaries. */
|
|
78
|
+
export function validateAppPurgeReconciliationPreview(value) {
|
|
79
|
+
const artifact = AppPurgeReconciliationPreviewArtifactSchema.parse(value);
|
|
80
|
+
const { checksum, ...unsigned } = artifact;
|
|
81
|
+
const actual = `sha256:${createHash('sha256')
|
|
82
|
+
.update(appPurgeReconciliationChecksumPayload(unsigned))
|
|
83
|
+
.digest('hex')}`;
|
|
84
|
+
if (checksum !== actual)
|
|
85
|
+
throw previewReadFailure();
|
|
86
|
+
return artifact;
|
|
87
|
+
}
|
|
88
|
+
function isExactMode(mode) {
|
|
89
|
+
return (mode & 0o7777) === 0o600;
|
|
90
|
+
}
|
|
91
|
+
async function cleanPrivateStagingPath(stagingPath, stagingDirectory) {
|
|
92
|
+
if (stagingPath !== undefined)
|
|
93
|
+
await unlink(stagingPath).catch(() => undefined);
|
|
94
|
+
if (stagingDirectory !== undefined)
|
|
95
|
+
await rmdir(stagingDirectory).catch(() => undefined);
|
|
96
|
+
}
|
|
97
|
+
class AppPurgePreviewFileError extends Error {
|
|
98
|
+
constructor(message) {
|
|
99
|
+
super(message);
|
|
100
|
+
this.name = 'AppPurgePreviewFileError';
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
function previewWriteFailure() {
|
|
104
|
+
return new AppPurgePreviewFileError('The preview artifact could not be written safely.');
|
|
105
|
+
}
|
|
106
|
+
function previewReadFailure() {
|
|
107
|
+
return new AppPurgePreviewFileError('The approved preview artifact is invalid.');
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=app-purge-reconciliation-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-purge-reconciliation-files.js","sourceRoot":"","sources":["../../src/commands/app-purge-reconciliation-files.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-purge-reconciliation-ops.d.ts","sourceRoot":"","sources":["../../src/commands/app-purge-reconciliation-ops.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAiBnD,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,MAAM,CAAC,CAoBjB"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { AppPurgeReconciliationApplyRequestSchema, AppPurgeReconciliationClientResponseSchema, AppPurgeReconciliationErrorCodeSchema, AppPurgeReconciliationPreviewRequestSchema, } from '@noodle-borg/wire-contracts';
|
|
2
|
+
import { resolveControlPlaneToken, ServiceRequestError, serviceJson } from '../control-plane.js';
|
|
3
|
+
import { parseAppPurgeReconciliationArgs, } from './app-purge-reconciliation-args.js';
|
|
4
|
+
import { readAppPurgeReconciliationPreview, validateAppPurgeReconciliationPreview, writeAppPurgeReconciliationPreview, } from './app-purge-reconciliation-files.js';
|
|
5
|
+
import { EXIT, printJsonOk } from './output.js';
|
|
6
|
+
import { authRequired, printCliFailure } from './shared.js';
|
|
7
|
+
const COMMAND = 'service app-purge';
|
|
8
|
+
const DEFINITE_APPLY_REJECTION_STATUSES = new Set([400, 401, 403, 404, 409, 415]);
|
|
9
|
+
export async function runAppPurgeReconciliation(rest, env, home) {
|
|
10
|
+
const parsed = parseAppPurgeReconciliationArgs(rest);
|
|
11
|
+
const json = rest.includes('--json');
|
|
12
|
+
if (!parsed.ok)
|
|
13
|
+
return printCliFailure(COMMAND, parsed.error, json);
|
|
14
|
+
const args = parsed.args;
|
|
15
|
+
try {
|
|
16
|
+
const resolved = await resolveControlPlaneToken({
|
|
17
|
+
serviceFlag: args.service,
|
|
18
|
+
authFlag: args.authToken,
|
|
19
|
+
env,
|
|
20
|
+
home,
|
|
21
|
+
});
|
|
22
|
+
if (resolved.token === undefined)
|
|
23
|
+
return printCliFailure(COMMAND, authRequired(), args.json);
|
|
24
|
+
const root = `${resolved.serviceUrl}/v1/service/app-purge-reconciliation`;
|
|
25
|
+
return args.action === 'preview'
|
|
26
|
+
? await runPreview(args, root, resolved.token)
|
|
27
|
+
: await runApply(args, root, resolved.token);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
return printCliFailure(COMMAND, appPurgeFailure(error), args.json);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
async function runPreview(args, root, token) {
|
|
34
|
+
const request = AppPurgeReconciliationPreviewRequestSchema.parse({ schemaVersion: 1 });
|
|
35
|
+
const response = AppPurgeReconciliationClientResponseSchema.parse(await serviceJson(`${root}/preview`, token, {
|
|
36
|
+
method: 'POST',
|
|
37
|
+
redirect: 'manual',
|
|
38
|
+
headers: { 'content-type': 'application/json' },
|
|
39
|
+
body: JSON.stringify(request),
|
|
40
|
+
}));
|
|
41
|
+
if (!('artifact' in response))
|
|
42
|
+
throw new Error('unexpected app purge response');
|
|
43
|
+
const artifact = validateAppPurgeReconciliationPreview(response.artifact);
|
|
44
|
+
await writeAppPurgeReconciliationPreview(args.output, artifact);
|
|
45
|
+
const safe = {
|
|
46
|
+
artifactPath: args.output,
|
|
47
|
+
candidateCount: artifact.candidateCount,
|
|
48
|
+
checksum: artifact.checksum,
|
|
49
|
+
releaseSha: artifact.releaseSha,
|
|
50
|
+
expiresAt: artifact.expiresAt,
|
|
51
|
+
truncated: artifact.truncated,
|
|
52
|
+
};
|
|
53
|
+
if (args.json)
|
|
54
|
+
printJsonOk({ appPurge: safe });
|
|
55
|
+
else {
|
|
56
|
+
console.log(`Preview artifact: ${safe.artifactPath}`);
|
|
57
|
+
console.log(`Candidates: ${safe.candidateCount}`);
|
|
58
|
+
console.log(`Checksum: ${safe.checksum}`);
|
|
59
|
+
console.log(`Release SHA: ${safe.releaseSha}`);
|
|
60
|
+
console.log(`Expires at: ${safe.expiresAt}`);
|
|
61
|
+
console.log(`Truncated: ${safe.truncated}`);
|
|
62
|
+
}
|
|
63
|
+
return EXIT.OK;
|
|
64
|
+
}
|
|
65
|
+
async function runApply(args, root, token) {
|
|
66
|
+
const preview = await readAppPurgeReconciliationPreview(args.approvedPreview);
|
|
67
|
+
if (preview.releaseSha !== args.releaseSha) {
|
|
68
|
+
throw new Error('approved preview release does not match apply evidence');
|
|
69
|
+
}
|
|
70
|
+
const request = AppPurgeReconciliationApplyRequestSchema.parse({
|
|
71
|
+
schemaVersion: 1,
|
|
72
|
+
preview,
|
|
73
|
+
releaseSha: args.releaseSha,
|
|
74
|
+
approvalReference: args.approvalReference,
|
|
75
|
+
recoveryCheckpoint: args.recoveryCheckpoint,
|
|
76
|
+
reason: args.reason,
|
|
77
|
+
idempotencyKey: args.idempotencyKey,
|
|
78
|
+
confirmed: true,
|
|
79
|
+
});
|
|
80
|
+
let rawResponse;
|
|
81
|
+
try {
|
|
82
|
+
rawResponse = await serviceJson(`${root}/apply`, token, {
|
|
83
|
+
method: 'POST',
|
|
84
|
+
redirect: 'manual',
|
|
85
|
+
headers: { 'content-type': 'application/json' },
|
|
86
|
+
body: JSON.stringify(request),
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
if (error instanceof ServiceRequestError &&
|
|
91
|
+
DEFINITE_APPLY_REJECTION_STATUSES.has(error.status)) {
|
|
92
|
+
throw error;
|
|
93
|
+
}
|
|
94
|
+
throw new AppPurgeApplyOutcomeUnknownError(!(error instanceof ServiceRequestError) || error.status === 0);
|
|
95
|
+
}
|
|
96
|
+
let response;
|
|
97
|
+
try {
|
|
98
|
+
response = AppPurgeReconciliationClientResponseSchema.parse(rawResponse);
|
|
99
|
+
if (!('result' in response))
|
|
100
|
+
throw new Error('unexpected app purge response');
|
|
101
|
+
if (response.result.previewChecksum !== preview.checksum ||
|
|
102
|
+
response.result.releaseSha !== args.releaseSha ||
|
|
103
|
+
response.result.candidateCount !== preview.candidateCount ||
|
|
104
|
+
response.result.deletedCount !== preview.candidateCount) {
|
|
105
|
+
throw new Error('app purge result does not match the approved preview');
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
throw new AppPurgeApplyOutcomeUnknownError(false);
|
|
110
|
+
}
|
|
111
|
+
const safe = {
|
|
112
|
+
operationId: response.result.operationId,
|
|
113
|
+
previewChecksum: response.result.previewChecksum,
|
|
114
|
+
releaseSha: response.result.releaseSha,
|
|
115
|
+
candidateCount: response.result.candidateCount,
|
|
116
|
+
deletedCount: response.result.deletedCount,
|
|
117
|
+
appliedAt: response.result.appliedAt,
|
|
118
|
+
replayed: response.replayed,
|
|
119
|
+
};
|
|
120
|
+
if (args.json)
|
|
121
|
+
printJsonOk({ appPurge: safe });
|
|
122
|
+
else {
|
|
123
|
+
console.log(`Operation ID: ${safe.operationId}`);
|
|
124
|
+
console.log(`Preview checksum: ${safe.previewChecksum}`);
|
|
125
|
+
console.log(`Release SHA: ${safe.releaseSha}`);
|
|
126
|
+
console.log(`Candidates: ${safe.candidateCount}`);
|
|
127
|
+
console.log(`Deleted: ${safe.deletedCount}`);
|
|
128
|
+
console.log(`Applied at: ${safe.appliedAt}`);
|
|
129
|
+
console.log(`Replayed: ${safe.replayed}`);
|
|
130
|
+
}
|
|
131
|
+
return EXIT.OK;
|
|
132
|
+
}
|
|
133
|
+
function appPurgeFailure(error) {
|
|
134
|
+
if (error instanceof AppPurgeApplyOutcomeUnknownError) {
|
|
135
|
+
return {
|
|
136
|
+
code: 'app_purge_apply_outcome_unknown',
|
|
137
|
+
message: 'The app purge apply outcome could not be confirmed.',
|
|
138
|
+
cause: 'The apply request was sent, but no valid result was received; it may have committed.',
|
|
139
|
+
fix: 'Replay the exact apply command with the same approved artifact, evidence, and idempotency key. Do not create a new preview or change any input.',
|
|
140
|
+
next: 'Replay the exact original command unchanged with the same approved artifact, evidence, and idempotency key.',
|
|
141
|
+
exitCode: error.unreachable ? EXIT.UNREACHABLE : EXIT.FAILURE,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
if (error instanceof ServiceRequestError) {
|
|
145
|
+
const auth = error.status === 401 || error.status === 403;
|
|
146
|
+
const unavailable = error.status === 0;
|
|
147
|
+
const code = AppPurgeReconciliationErrorCodeSchema.safeParse(error.code);
|
|
148
|
+
return {
|
|
149
|
+
code: auth
|
|
150
|
+
? 'auth_failed'
|
|
151
|
+
: unavailable
|
|
152
|
+
? 'service_unreachable'
|
|
153
|
+
: code.success
|
|
154
|
+
? code.data
|
|
155
|
+
: 'app_purge_service_error',
|
|
156
|
+
message: auth
|
|
157
|
+
? 'The app purge reconciliation request was not authorized.'
|
|
158
|
+
: unavailable
|
|
159
|
+
? 'The app purge reconciliation service could not be reached.'
|
|
160
|
+
: 'The app purge reconciliation request failed.',
|
|
161
|
+
cause: auth
|
|
162
|
+
? 'The authenticated operator is not authorized for this private operation.'
|
|
163
|
+
: unavailable
|
|
164
|
+
? 'The control-plane service could not be reached.'
|
|
165
|
+
: 'The service rejected the request or its current state no longer matches the preview.',
|
|
166
|
+
fix: auth
|
|
167
|
+
? 'Sign in again and confirm the required super-admin authorization.'
|
|
168
|
+
: 'Stop, inspect the service state, and create a fresh preview before retrying changed input.',
|
|
169
|
+
next: auth ? 'noodle login' : 'noodle service app-purge preview --output <absolute-path>',
|
|
170
|
+
exitCode: auth ? EXIT.AUTH : unavailable ? EXIT.UNREACHABLE : EXIT.FAILURE,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
return {
|
|
174
|
+
code: 'app_purge_artifact_invalid',
|
|
175
|
+
message: 'The app purge reconciliation artifact or response is invalid.',
|
|
176
|
+
cause: 'The bounded reconciliation contract could not be validated or stored safely.',
|
|
177
|
+
fix: 'Stop and create a new preview artifact at a new absolute path.',
|
|
178
|
+
next: 'noodle service app-purge preview --output <absolute-path>',
|
|
179
|
+
exitCode: EXIT.FAILURE,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
class AppPurgeApplyOutcomeUnknownError extends Error {
|
|
183
|
+
unreachable;
|
|
184
|
+
constructor(unreachable) {
|
|
185
|
+
super('The app purge apply outcome is unknown.');
|
|
186
|
+
this.unreachable = unreachable;
|
|
187
|
+
this.name = 'AppPurgeApplyOutcomeUnknownError';
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=app-purge-reconciliation-ops.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-purge-reconciliation-ops.js","sourceRoot":"","sources":["../../src/commands/app-purge-reconciliation-ops.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing-ops.d.ts","sourceRoot":"","sources":["../../src/commands/billing-ops.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"billing-ops.d.ts","sourceRoot":"","sources":["../../src/commands/billing-ops.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAkBnD,gDAAgD;AAChD,wBAAsB,UAAU,CAC9B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,MAAM,CAAC,CAqEjB"}
|
|
@@ -4,6 +4,7 @@ import { runBillingMigrationApply } from './billing-apply-ops.js';
|
|
|
4
4
|
import { runBillingEnforcement } from './billing-enforcement-ops.js';
|
|
5
5
|
import { runBillingMetering } from './billing-metering-ops.js';
|
|
6
6
|
import { mappingFileFailure, readMappingRequest } from './billing-migration-files.js';
|
|
7
|
+
import { runBillingOrganizationTransfer } from './billing-org-transfer-ops.js';
|
|
7
8
|
import { runBillingAccounts, runBillingOrg } from './billing-read-ops.js';
|
|
8
9
|
import { EXIT, printJsonOk } from './output.js';
|
|
9
10
|
import { printCliFailure, serviceFailure } from './shared.js';
|
|
@@ -12,8 +13,14 @@ export async function runBilling(rest, env, home) {
|
|
|
12
13
|
const json = rest.includes('--json');
|
|
13
14
|
if (rest[0] === 'accounts')
|
|
14
15
|
return runBillingAccounts(rest.slice(1), env, home);
|
|
16
|
+
if (rest[0] === 'org' && rest[1] === 'transfer') {
|
|
17
|
+
return runBillingOrganizationTransfer('customer', rest.slice(2), env, home);
|
|
18
|
+
}
|
|
15
19
|
if (rest[0] === 'org')
|
|
16
20
|
return runBillingOrg(rest.slice(1), env, home);
|
|
21
|
+
if (rest[0] === 'administration' && rest[1] === 'transfer') {
|
|
22
|
+
return runBillingOrganizationTransfer('super_admin', rest.slice(2), env, home);
|
|
23
|
+
}
|
|
17
24
|
if (rest[0] === 'enforcement')
|
|
18
25
|
return runBillingEnforcement(rest.slice(1), env, home);
|
|
19
26
|
if (rest[0] === 'metering')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing-ops.js","sourceRoot":"","sources":["../../src/commands/billing-ops.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iDAAiD,EAAE,MAAM,6BAA6B,CAAC;AAEhG,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAmB,eAAe,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAS/E,gDAAgD;AAChD,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAuB,EACvB,GAAsB,EACtB,IAAoB;IAEpB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU;QAAE,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAChF,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK;QAAE,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACtE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,aAAa;QAAE,OAAO,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACtF,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU;QAAE,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAChF,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;QACnD,OAAO,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QACrD,OAAO,eAAe,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,eAAe,CAAC,2BAA2B,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACxF,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC;QAC9C,WAAW,EAAE,IAAI,CAAC,OAAO;QACzB,QAAQ,EAAE,IAAI,CAAC,SAAS;QACxB,GAAG;QACH,IAAI;KACL,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,eAAe,CAAC,2BAA2B,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,OAAsC,CAAC;IAC3C,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,eAAe,CACpB,2BAA2B,EAC3B,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,EACpC,IAAI,CAAC,IAAI,CACV,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,iDAAiD,CAAC,KAAK,CAClE,MAAM,WAAW,CACf,GAAG,QAAQ,CAAC,UAAU,gDAAgD,EACtE,QAAQ,CAAC,KAAK,EACd;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAC9B,CACF,CACF,CAAC;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAqC,CAAC;QAC3D,IAAI,IAAI,CAAC,IAAI;YAAE,WAAW,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;;YACjE,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,eAAe,CACpB,2BAA2B,EAC3B,cAAc,CACZ,2BAA2B,EAC3B,KAAK,EACL,wDAAwD,CACzD,EACD,IAAI,CAAC,IAAI,CACV,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAsC,EAAE,IAAwB;IACzF,OAAO,CAAC,GAAG,CAAC,8BAA8B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,oCAAoC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,iBAAiB,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CACT,+BAA+B,OAAO,CAAC,WAAW,CAAC,YAAY,wDAAwD,CACxH,CAAC;IACF,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzB,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,iDAAiD,IAAI,IAAI,gBAAgB,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,gBAAgB,CACvB,IAAuB;IAIvB,IAAI,IAAwB,CAAC;IAC7B,IAAI,OAA2B,CAAC;IAChC,IAAI,SAA6B,CAAC;IAClC,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,GAAG,KAAK,QAAQ;YAAE,IAAI,GAAG,IAAI,CAAC;aAC7B,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;YAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAC9B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,yBAAyB,CAAC,EAAE,CAAC;YACvE,CAAC;YACD,IAAI,GAAG,KAAK,QAAQ;gBAAE,IAAI,GAAG,KAAK,CAAC;iBAC9B,IAAI,GAAG,KAAK,WAAW;gBAAE,OAAO,GAAG,KAAK,CAAC;;gBACzC,SAAS,GAAG,KAAK,CAAC;YACvB,KAAK,EAAE,CAAC;QACV,CAAC;;YAAM,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,qBAAqB,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;IACrF,CAAC;IACD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,IAAI,EAAE;YACJ,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,IAAI;SACL;KACF,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,OAAO,GAAG,6CAA6C;IAC3E,OAAO;QACL,IAAI,EAAE,OAAO;QACb,OAAO;QACP,KAAK,EAAE,yDAAyD;QAChE,GAAG,EAAE,mEAAmE;QACxE,IAAI,EAAE,mEAAmE;QACzE,QAAQ,EAAE,IAAI,CAAC,KAAK;KACrB,CAAC;AACJ,CAAC;AAED,SAAS,YAAY;IACnB,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,0CAA0C;QACnD,KAAK,EAAE,4CAA4C;QACnD,GAAG,EAAE,yCAAyC;QAC9C,IAAI,EAAE,cAAc;QACpB,QAAQ,EAAE,IAAI,CAAC,IAAI;KACpB,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"billing-ops.js","sourceRoot":"","sources":["../../src/commands/billing-ops.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type BillingOrganizationTransferArtifact, type BillingOrganizationTransferAuthorityPath } from '@noodle-borg/wire-contracts';
|
|
2
|
+
/** Refuse caller-controlled links and special files before a preview request is made. */
|
|
3
|
+
export declare function assertBillingTransferArtifactDestination(path: string): Promise<void>;
|
|
4
|
+
/** Install an already-synced private artifact without replacing a raced directory entry. */
|
|
5
|
+
export declare function installBillingTransferArtifactNoReplace(temporaryPath: string, destinationPath: string): Promise<void>;
|
|
6
|
+
/** Write private reviewed evidence through a same-directory, exclusive temporary file. */
|
|
7
|
+
export declare function writeBillingTransferArtifact(path: string, artifact: BillingOrganizationTransferArtifact): Promise<void>;
|
|
8
|
+
/** Read strict private evidence from an opened descriptor without following a symlink. */
|
|
9
|
+
export declare function readBillingTransferArtifact<TAuthority extends BillingOrganizationTransferAuthorityPath>(path: string, authorityPath: TAuthority): Promise<Extract<BillingOrganizationTransferArtifact, {
|
|
10
|
+
readonly authorityPath: TAuthority;
|
|
11
|
+
}>>;
|
|
12
|
+
//# sourceMappingURL=billing-org-transfer-files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing-org-transfer-files.d.ts","sourceRoot":"","sources":["../../src/commands/billing-org-transfer-files.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,mCAAmC,EAExC,KAAK,wCAAwC,EAC9C,MAAM,6BAA6B,CAAC;AAIrC,yFAAyF;AACzF,wBAAsB,wCAAwC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ1F;AAED,4FAA4F;AAC5F,wBAAsB,uCAAuC,CAC3D,aAAa,EAAE,MAAM,EACrB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC,CAmBf;AAED,0FAA0F;AAC1F,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,mCAAmC,GAC5C,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED,0FAA0F;AAC1F,wBAAsB,2BAA2B,CAC/C,UAAU,SAAS,wCAAwC,EAE3D,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,UAAU,GACxB,OAAO,CACR,OAAO,CACL,mCAAmC,EACnC;IACE,QAAQ,CAAC,aAAa,EAAE,UAAU,CAAC;CACpC,CACF,CACF,CAyBA"}
|