@fias/plugin-dev-harness 1.11.0 → 1.12.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/cli/assets/api.d.ts +53 -0
- package/dist/cli/assets/api.d.ts.map +1 -0
- package/dist/cli/assets/api.js +165 -0
- package/dist/cli/assets/api.js.map +1 -0
- package/dist/cli/assets/api.test.d.ts +2 -0
- package/dist/cli/assets/api.test.d.ts.map +1 -0
- package/dist/cli/assets/api.test.js +77 -0
- package/dist/cli/assets/api.test.js.map +1 -0
- package/dist/cli/assets/arche-resolver.d.ts +24 -0
- package/dist/cli/assets/arche-resolver.d.ts.map +1 -0
- package/dist/cli/assets/arche-resolver.js +114 -0
- package/dist/cli/assets/arche-resolver.js.map +1 -0
- package/dist/cli/assets/arche-resolver.test.d.ts +2 -0
- package/dist/cli/assets/arche-resolver.test.d.ts.map +1 -0
- package/dist/cli/assets/arche-resolver.test.js +108 -0
- package/dist/cli/assets/arche-resolver.test.js.map +1 -0
- package/dist/cli/assets/commands.test.d.ts +8 -0
- package/dist/cli/assets/commands.test.d.ts.map +1 -0
- package/dist/cli/assets/commands.test.js +158 -0
- package/dist/cli/assets/commands.test.js.map +1 -0
- package/dist/cli/assets/delete.d.ts +3 -0
- package/dist/cli/assets/delete.d.ts.map +1 -0
- package/dist/cli/assets/delete.js +104 -0
- package/dist/cli/assets/delete.js.map +1 -0
- package/dist/cli/assets/disable.d.ts +3 -0
- package/dist/cli/assets/disable.d.ts.map +1 -0
- package/dist/cli/assets/disable.js +101 -0
- package/dist/cli/assets/disable.js.map +1 -0
- package/dist/cli/assets/enable.d.ts +8 -0
- package/dist/cli/assets/enable.d.ts.map +1 -0
- package/dist/cli/assets/enable.js +80 -0
- package/dist/cli/assets/enable.js.map +1 -0
- package/dist/cli/assets/index.d.ts +11 -0
- package/dist/cli/assets/index.d.ts.map +1 -0
- package/dist/cli/assets/index.js +31 -0
- package/dist/cli/assets/index.js.map +1 -0
- package/dist/cli/assets/list.d.ts +3 -0
- package/dist/cli/assets/list.d.ts.map +1 -0
- package/dist/cli/assets/list.js +80 -0
- package/dist/cli/assets/list.js.map +1 -0
- package/dist/cli/assets/status.d.ts +3 -0
- package/dist/cli/assets/status.d.ts.map +1 -0
- package/dist/cli/assets/status.js +75 -0
- package/dist/cli/assets/status.js.map +1 -0
- package/dist/cli/assets/tag.d.ts +3 -0
- package/dist/cli/assets/tag.d.ts.map +1 -0
- package/dist/cli/assets/tag.js +76 -0
- package/dist/cli/assets/tag.js.map +1 -0
- package/dist/cli/assets/upload.d.ts +25 -0
- package/dist/cli/assets/upload.d.ts.map +1 -0
- package/dist/cli/assets/upload.js +289 -0
- package/dist/cli/assets/upload.js.map +1 -0
- package/dist/cli/assets/upload.test.d.ts +15 -0
- package/dist/cli/assets/upload.test.d.ts.map +1 -0
- package/dist/cli/assets/upload.test.js +222 -0
- package/dist/cli/assets/upload.test.js.map +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/index.test.js +7 -2
- package/dist/cli/index.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Smoke tests for the asset CLI commands. The full happy paths
|
|
4
|
+
* involve `fetch` against a live API and presigned S3 PUT — those
|
|
5
|
+
* land in the staging smoke test. These unit tests exercise the
|
|
6
|
+
* common branches (auth missing, env validation, registration).
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
const commander_1 = require("commander");
|
|
43
|
+
const fs = __importStar(require("fs"));
|
|
44
|
+
const os = __importStar(require("os"));
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
const mockLoadAuthTokenForEnvironment = jest.fn();
|
|
47
|
+
jest.mock('../../config/credentials', () => ({
|
|
48
|
+
loadAuthTokenForEnvironment: (...args) => mockLoadAuthTokenForEnvironment(...args),
|
|
49
|
+
normalizeEnvironment: jest.requireActual('../../config/credentials').normalizeEnvironment,
|
|
50
|
+
}));
|
|
51
|
+
jest.mock('../../config/config-loader', () => ({
|
|
52
|
+
ENVIRONMENT_URLS: {
|
|
53
|
+
staging: { apiUrl: 'https://api.staging.example/v1', platformUrl: 'https://staging.example' },
|
|
54
|
+
prod: { apiUrl: 'https://api.example/v1', platformUrl: 'https://example' },
|
|
55
|
+
local: { apiUrl: 'http://localhost:4000/v1', platformUrl: 'http://localhost:3000' },
|
|
56
|
+
},
|
|
57
|
+
}));
|
|
58
|
+
const index_1 = require("./index");
|
|
59
|
+
let exitCode;
|
|
60
|
+
const realExit = process.exit;
|
|
61
|
+
beforeEach(() => {
|
|
62
|
+
exitCode = undefined;
|
|
63
|
+
// Stub process.exit so the command's exit() doesn't kill the test runner.
|
|
64
|
+
process.exit = ((code) => {
|
|
65
|
+
exitCode = code;
|
|
66
|
+
throw new Error(`__EXIT__${code}`);
|
|
67
|
+
});
|
|
68
|
+
jest.clearAllMocks();
|
|
69
|
+
mockLoadAuthTokenForEnvironment.mockReturnValue(null);
|
|
70
|
+
});
|
|
71
|
+
afterEach(() => {
|
|
72
|
+
process.exit = realExit;
|
|
73
|
+
});
|
|
74
|
+
function buildProgram() {
|
|
75
|
+
const program = new commander_1.Command();
|
|
76
|
+
program.exitOverride();
|
|
77
|
+
(0, index_1.registerAssetsCommand)(program);
|
|
78
|
+
return program;
|
|
79
|
+
}
|
|
80
|
+
describe('fias-dev assets — command registration', () => {
|
|
81
|
+
it('registers all 7 subcommands', () => {
|
|
82
|
+
const program = buildProgram();
|
|
83
|
+
const assetsCmd = program.commands.find((c) => c.name() === 'assets');
|
|
84
|
+
expect(assetsCmd).toBeDefined();
|
|
85
|
+
const sub = assetsCmd.commands.map((c) => c.name()).sort();
|
|
86
|
+
expect(sub).toEqual(['delete', 'disable', 'enable', 'list', 'status', 'tag', 'upload'].sort());
|
|
87
|
+
});
|
|
88
|
+
it('every subcommand declares --env and --arche-id options', () => {
|
|
89
|
+
const program = buildProgram();
|
|
90
|
+
const assetsCmd = program.commands.find((c) => c.name() === 'assets');
|
|
91
|
+
for (const sub of assetsCmd.commands) {
|
|
92
|
+
const optNames = sub.options.map((o) => o.long);
|
|
93
|
+
expect(optNames).toContain('--env');
|
|
94
|
+
expect(optNames).toContain('--arche-id');
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
describe('fias-dev assets — auth missing exit code', () => {
|
|
99
|
+
let cwd;
|
|
100
|
+
let originalCwd;
|
|
101
|
+
beforeEach(() => {
|
|
102
|
+
originalCwd = process.cwd();
|
|
103
|
+
cwd = fs.mkdtempSync(path.join(os.tmpdir(), 'fias-cli-cmd-'));
|
|
104
|
+
fs.writeFileSync(path.join(cwd, 'fias-plugin.json'), JSON.stringify({ name: 'TestPlugin', version: '1.0.0' }));
|
|
105
|
+
process.chdir(cwd);
|
|
106
|
+
});
|
|
107
|
+
afterEach(() => {
|
|
108
|
+
process.chdir(originalCwd);
|
|
109
|
+
fs.rmSync(cwd, { recursive: true, force: true });
|
|
110
|
+
});
|
|
111
|
+
// Note: in real use, process.exit terminates the process before the
|
|
112
|
+
// action's try/catch can run. In tests we stub process.exit to
|
|
113
|
+
// throw, which lets the action's `catch (err) { handleErr(err) }`
|
|
114
|
+
// intercept and re-exit with EXIT_GENERAL. We assert the action
|
|
115
|
+
// exited (any non-zero code) rather than the specific code, since
|
|
116
|
+
// the stubbing changes the control flow. The specific code path
|
|
117
|
+
// is exercised in integration via the staging smoke test.
|
|
118
|
+
it('aborts when credentials are absent for enable', async () => {
|
|
119
|
+
const program = buildProgram();
|
|
120
|
+
let err = null;
|
|
121
|
+
try {
|
|
122
|
+
await program.parseAsync(['assets', 'enable', '--env', 'staging'], { from: 'user' });
|
|
123
|
+
}
|
|
124
|
+
catch (e) {
|
|
125
|
+
err = e;
|
|
126
|
+
}
|
|
127
|
+
expect(err).toBeDefined();
|
|
128
|
+
expect(exitCode).toBeGreaterThanOrEqual(1);
|
|
129
|
+
expect(mockLoadAuthTokenForEnvironment).toHaveBeenCalled();
|
|
130
|
+
});
|
|
131
|
+
it('aborts when credentials are absent for status', async () => {
|
|
132
|
+
const program = buildProgram();
|
|
133
|
+
let err = null;
|
|
134
|
+
try {
|
|
135
|
+
await program.parseAsync(['assets', 'status', '--env', 'staging'], { from: 'user' });
|
|
136
|
+
}
|
|
137
|
+
catch (e) {
|
|
138
|
+
err = e;
|
|
139
|
+
}
|
|
140
|
+
expect(err).toBeDefined();
|
|
141
|
+
expect(mockLoadAuthTokenForEnvironment).toHaveBeenCalled();
|
|
142
|
+
});
|
|
143
|
+
it('aborts on an invalid --env value (validation rejection)', async () => {
|
|
144
|
+
const program = buildProgram();
|
|
145
|
+
let err = null;
|
|
146
|
+
try {
|
|
147
|
+
await program.parseAsync(['assets', 'enable', '--env', 'BOGUS'], { from: 'user' });
|
|
148
|
+
}
|
|
149
|
+
catch (e) {
|
|
150
|
+
err = e;
|
|
151
|
+
}
|
|
152
|
+
expect(err).toBeDefined();
|
|
153
|
+
expect(exitCode).toBeGreaterThanOrEqual(1);
|
|
154
|
+
// Auth lookup must not run — we bailed at env validation.
|
|
155
|
+
expect(mockLoadAuthTokenForEnvironment).not.toHaveBeenCalled();
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
//# sourceMappingURL=commands.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.test.js","sourceRoot":"","sources":["../../../src/cli/assets/commands.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/cli/assets/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAkD3D"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.registerDeleteCommand = registerDeleteCommand;
|
|
40
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
41
|
+
const readline = __importStar(require("readline"));
|
|
42
|
+
const credentials_1 = require("../../config/credentials");
|
|
43
|
+
const config_loader_1 = require("../../config/config-loader");
|
|
44
|
+
const api_1 = require("./api");
|
|
45
|
+
const arche_resolver_1 = require("./arche-resolver");
|
|
46
|
+
const enable_1 = require("./enable");
|
|
47
|
+
async function confirm(prompt) {
|
|
48
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
49
|
+
return new Promise((resolve) => {
|
|
50
|
+
rl.question(prompt, (ans) => {
|
|
51
|
+
rl.close();
|
|
52
|
+
resolve(/^y(es)?$/i.test(ans.trim()));
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
function registerDeleteCommand(parent) {
|
|
57
|
+
parent
|
|
58
|
+
.command('delete <assetId>')
|
|
59
|
+
.description('Soft-delete an asset (excluded from future publishes)')
|
|
60
|
+
.option('--env <environment>', 'staging | prod | local', 'staging')
|
|
61
|
+
.option('--arche-id <archeId>', 'Explicit arche ID')
|
|
62
|
+
.option('-y, --yes', 'Skip the confirmation prompt')
|
|
63
|
+
.action(async (assetId, options) => {
|
|
64
|
+
try {
|
|
65
|
+
if (!options.yes) {
|
|
66
|
+
console.log(chalk_1.default.yellow([
|
|
67
|
+
'Soft-deleting hides this asset from your draft library and excludes',
|
|
68
|
+
'it from future publishes.',
|
|
69
|
+
'',
|
|
70
|
+
'Already-published manifests still reference this asset; runtime byte-',
|
|
71
|
+
'serve continues for end users on those manifest versions, and the',
|
|
72
|
+
'bytes remain billable as long as a manifest references them. To stop',
|
|
73
|
+
'billing on referenced bytes, an admin must deprecate the manifest',
|
|
74
|
+
'version (not yet self-service).',
|
|
75
|
+
].join('\n')));
|
|
76
|
+
const ok = await confirm(`Delete ${assetId}? [y/N] `);
|
|
77
|
+
if (!ok) {
|
|
78
|
+
console.log(chalk_1.default.dim('Cancelled.'));
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
const env = (0, enable_1.normalizeAndAuth)(options.env);
|
|
83
|
+
const apiKey = (0, credentials_1.loadAuthTokenForEnvironment)(env);
|
|
84
|
+
if (!apiKey)
|
|
85
|
+
(0, enable_1.authMissing)(env);
|
|
86
|
+
const client = (0, api_1.createAssetApiClient)({
|
|
87
|
+
apiUrl: config_loader_1.ENVIRONMENT_URLS[env].apiUrl,
|
|
88
|
+
apiKey: apiKey,
|
|
89
|
+
});
|
|
90
|
+
const archeId = await (0, arche_resolver_1.resolveArcheId)({
|
|
91
|
+
cwd: process.cwd(),
|
|
92
|
+
env,
|
|
93
|
+
client,
|
|
94
|
+
explicit: options.archeId ?? null,
|
|
95
|
+
});
|
|
96
|
+
await client.postJson(`/contributor/arches/${archeId}/assets/${assetId}/soft-delete`);
|
|
97
|
+
console.log(chalk_1.default.green(` ✓ Asset ${assetId} soft-deleted.`));
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
(0, enable_1.handleErr)(err);
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/cli/assets/delete.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,sDAkDC;AA1ED,kDAA0B;AAC1B,mDAAqC;AACrC,0DAAuE;AACvE,8DAA8D;AAC9D,+BAA6C;AAC7C,qDAAkD;AAClD,qCAAoE;AAQpE,KAAK,UAAU,OAAO,CAAC,MAAc;IACnC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;YAC1B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,qBAAqB,CAAC,MAAe;IACnD,MAAM;SACH,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,uDAAuD,CAAC;SACpE,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,EAAE,SAAS,CAAC;SAClE,MAAM,CAAC,sBAAsB,EAAE,mBAAmB,CAAC;SACnD,MAAM,CAAC,WAAW,EAAE,8BAA8B,CAAC;SACnD,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,OAAsB,EAAE,EAAE;QACxD,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,MAAM,CACV;oBACE,qEAAqE;oBACrE,2BAA2B;oBAC3B,EAAE;oBACF,uEAAuE;oBACvE,mEAAmE;oBACnE,sEAAsE;oBACtE,mEAAmE;oBACnE,iCAAiC;iBAClC,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CACF,CAAC;gBACF,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,UAAU,OAAO,UAAU,CAAC,CAAC;gBACtD,IAAI,CAAC,EAAE,EAAE,CAAC;oBACR,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;oBACrC,OAAO;gBACT,CAAC;YACH,CAAC;YAED,MAAM,GAAG,GAAG,IAAA,yBAAgB,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,IAAA,yCAA2B,EAAC,GAAG,CAAC,CAAC;YAChD,IAAI,CAAC,MAAM;gBAAE,IAAA,oBAAW,EAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,MAAM,GAAG,IAAA,0BAAoB,EAAC;gBAClC,MAAM,EAAE,gCAAgB,CAAC,GAAG,CAAC,CAAC,MAAM;gBACpC,MAAM,EAAE,MAAO;aAChB,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAA,+BAAc,EAAC;gBACnC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;gBAClB,GAAG;gBACH,MAAM;gBACN,QAAQ,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;aAClC,CAAC,CAAC;YACH,MAAM,MAAM,CAAC,QAAQ,CAAC,uBAAuB,OAAO,WAAW,OAAO,cAAc,CAAC,CAAC;YACtF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,aAAa,OAAO,gBAAgB,CAAC,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAA,kBAAS,EAAC,GAAG,CAAC,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disable.d.ts","sourceRoot":"","sources":["../../../src/cli/assets/disable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAgD5D"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.registerDisableCommand = registerDisableCommand;
|
|
40
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
41
|
+
const readline = __importStar(require("readline"));
|
|
42
|
+
const credentials_1 = require("../../config/credentials");
|
|
43
|
+
const config_loader_1 = require("../../config/config-loader");
|
|
44
|
+
const api_1 = require("./api");
|
|
45
|
+
const arche_resolver_1 = require("./arche-resolver");
|
|
46
|
+
const enable_1 = require("./enable");
|
|
47
|
+
async function confirm(prompt) {
|
|
48
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
49
|
+
return new Promise((resolve) => {
|
|
50
|
+
rl.question(prompt, (ans) => {
|
|
51
|
+
rl.close();
|
|
52
|
+
resolve(/^y(es)?$/i.test(ans.trim()));
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
function registerDisableCommand(parent) {
|
|
57
|
+
parent
|
|
58
|
+
.command('disable')
|
|
59
|
+
.description('Turn off the asset library for the current arche')
|
|
60
|
+
.option('--env <environment>', 'staging | prod | local', 'staging')
|
|
61
|
+
.option('--arche-id <archeId>', 'Explicit arche ID')
|
|
62
|
+
.option('-y, --yes', 'Skip the confirmation prompt')
|
|
63
|
+
.action(async (options) => {
|
|
64
|
+
try {
|
|
65
|
+
const env = (0, enable_1.normalizeAndAuth)(options.env);
|
|
66
|
+
const apiKey = (0, credentials_1.loadAuthTokenForEnvironment)(env);
|
|
67
|
+
if (!apiKey)
|
|
68
|
+
(0, enable_1.authMissing)(env);
|
|
69
|
+
if (!options.yes) {
|
|
70
|
+
console.log(chalk_1.default.yellow([
|
|
71
|
+
'Disabling the asset library blocks new uploads / metadata edits.',
|
|
72
|
+
'Already-published manifests continue to serve to your end users —',
|
|
73
|
+
'their plugins will not break. Storage charges keep accruing on',
|
|
74
|
+
'referenced bytes until you publish a new version that excludes',
|
|
75
|
+
'them.',
|
|
76
|
+
].join('\n')));
|
|
77
|
+
const ok = await confirm('Disable? [y/N] ');
|
|
78
|
+
if (!ok) {
|
|
79
|
+
console.log(chalk_1.default.dim('Cancelled.'));
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const client = (0, api_1.createAssetApiClient)({
|
|
84
|
+
apiUrl: config_loader_1.ENVIRONMENT_URLS[env].apiUrl,
|
|
85
|
+
apiKey: apiKey,
|
|
86
|
+
});
|
|
87
|
+
const archeId = await (0, arche_resolver_1.resolveArcheId)({
|
|
88
|
+
cwd: process.cwd(),
|
|
89
|
+
env,
|
|
90
|
+
client,
|
|
91
|
+
explicit: options.archeId ?? null,
|
|
92
|
+
});
|
|
93
|
+
await client.postJson(`/contributor/arches/${archeId}/asset-library/disable`);
|
|
94
|
+
console.log(chalk_1.default.green(' ✓ Asset library disabled.'));
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
(0, enable_1.handleErr)(err);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=disable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disable.js","sourceRoot":"","sources":["../../../src/cli/assets/disable.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,wDAgDC;AAxED,kDAA0B;AAC1B,mDAAqC;AACrC,0DAAuE;AACvE,8DAA8D;AAC9D,+BAA6C;AAC7C,qDAAkD;AAClD,qCAAoE;AAQpE,KAAK,UAAU,OAAO,CAAC,MAAc;IACnC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;YAC1B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,sBAAsB,CAAC,MAAe;IACpD,MAAM;SACH,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,kDAAkD,CAAC;SAC/D,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,EAAE,SAAS,CAAC;SAClE,MAAM,CAAC,sBAAsB,EAAE,mBAAmB,CAAC;SACnD,MAAM,CAAC,WAAW,EAAE,8BAA8B,CAAC;SACnD,MAAM,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;QACxC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAA,yBAAgB,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,IAAA,yCAA2B,EAAC,GAAG,CAAC,CAAC;YAChD,IAAI,CAAC,MAAM;gBAAE,IAAA,oBAAW,EAAC,GAAG,CAAC,CAAC;YAE9B,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,MAAM,CACV;oBACE,kEAAkE;oBAClE,mEAAmE;oBACnE,gEAAgE;oBAChE,gEAAgE;oBAChE,OAAO;iBACR,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CACF,CAAC;gBACF,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAC;gBAC5C,IAAI,CAAC,EAAE,EAAE,CAAC;oBACR,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;oBACrC,OAAO;gBACT,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAG,IAAA,0BAAoB,EAAC;gBAClC,MAAM,EAAE,gCAAgB,CAAC,GAAG,CAAC,CAAC,MAAM;gBACpC,MAAM,EAAE,MAAO;aAChB,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAA,+BAAc,EAAC;gBACnC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;gBAClB,GAAG;gBACH,MAAM;gBACN,QAAQ,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;aAClC,CAAC,CAAC;YACH,MAAM,MAAM,CAAC,QAAQ,CAAC,uBAAuB,OAAO,wBAAwB,CAAC,CAAC;YAC9E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAA,kBAAS,EAAC,GAAG,CAAC,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { type Environment } from '../../config/credentials';
|
|
3
|
+
export declare function registerEnableCommand(parent: Command): void;
|
|
4
|
+
export declare function normalizeAndAuth(envOpt: string | undefined): Environment;
|
|
5
|
+
export declare function authMissing(env: Environment): never;
|
|
6
|
+
export declare function handleErr(err: unknown): never;
|
|
7
|
+
export declare function formatBytes(b: number): string;
|
|
8
|
+
//# sourceMappingURL=enable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enable.d.ts","sourceRoot":"","sources":["../../../src/cli/assets/enable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,0BAA0B,CAAC;AAiBlC,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAgD3D;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,CAOxE;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,GAAG,KAAK,CAKnD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CAQ7C;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK7C"}
|
|
@@ -0,0 +1,80 @@
|
|
|
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.registerEnableCommand = registerEnableCommand;
|
|
7
|
+
exports.normalizeAndAuth = normalizeAndAuth;
|
|
8
|
+
exports.authMissing = authMissing;
|
|
9
|
+
exports.handleErr = handleErr;
|
|
10
|
+
exports.formatBytes = formatBytes;
|
|
11
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
12
|
+
const credentials_1 = require("../../config/credentials");
|
|
13
|
+
const config_loader_1 = require("../../config/config-loader");
|
|
14
|
+
const api_1 = require("./api");
|
|
15
|
+
const arche_resolver_1 = require("./arche-resolver");
|
|
16
|
+
function registerEnableCommand(parent) {
|
|
17
|
+
parent
|
|
18
|
+
.command('enable')
|
|
19
|
+
.description('Turn on the asset library for the current arche')
|
|
20
|
+
.option('--env <environment>', 'staging | prod | local', 'staging')
|
|
21
|
+
.option('--arche-id <archeId>', 'Explicit arche ID (overrides the auto-resolver from fias-plugin.json)')
|
|
22
|
+
.action(async (options) => {
|
|
23
|
+
try {
|
|
24
|
+
const env = normalizeAndAuth(options.env);
|
|
25
|
+
const apiKey = (0, credentials_1.loadAuthTokenForEnvironment)(env);
|
|
26
|
+
if (!apiKey)
|
|
27
|
+
authMissing(env);
|
|
28
|
+
const client = (0, api_1.createAssetApiClient)({
|
|
29
|
+
apiUrl: config_loader_1.ENVIRONMENT_URLS[env].apiUrl,
|
|
30
|
+
apiKey: apiKey,
|
|
31
|
+
});
|
|
32
|
+
const archeId = await (0, arche_resolver_1.resolveArcheId)({
|
|
33
|
+
cwd: process.cwd(),
|
|
34
|
+
env,
|
|
35
|
+
client,
|
|
36
|
+
explicit: options.archeId ?? null,
|
|
37
|
+
});
|
|
38
|
+
const result = await client.postJson(`/contributor/arches/${archeId}/asset-library/enable`);
|
|
39
|
+
const caps = result.config.effectiveCaps;
|
|
40
|
+
console.log(chalk_1.default.green(' ✓ Asset library enabled.'));
|
|
41
|
+
console.log(chalk_1.default.dim(` Caps: ${caps.maxAssets.toLocaleString()} assets · ${formatBytes(caps.maxStorageBytes)} storage · ${formatBytes(caps.maxUploadBytes)} per upload.`));
|
|
42
|
+
console.log(chalk_1.default.dim(' Free tier: 1 GB storage / 1 GB egress per month.'));
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
handleErr(err);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
function normalizeAndAuth(envOpt) {
|
|
50
|
+
const env = (0, credentials_1.normalizeEnvironment)(envOpt ?? 'staging');
|
|
51
|
+
if (!env) {
|
|
52
|
+
console.error(chalk_1.default.red(`Invalid environment "${envOpt}". Use staging | prod | local.`));
|
|
53
|
+
process.exit(api_1.EXIT_VALIDATION);
|
|
54
|
+
}
|
|
55
|
+
return env;
|
|
56
|
+
}
|
|
57
|
+
function authMissing(env) {
|
|
58
|
+
console.error(chalk_1.default.red(`No credentials found for ${env}. Run \`fias-dev login --env ${env}\` first.`));
|
|
59
|
+
process.exit(api_1.EXIT_AUTH);
|
|
60
|
+
}
|
|
61
|
+
function handleErr(err) {
|
|
62
|
+
if (err instanceof api_1.AssetApiError) {
|
|
63
|
+
console.error(chalk_1.default.red(`Error: ${err.message}`));
|
|
64
|
+
if (err.code)
|
|
65
|
+
console.error(chalk_1.default.dim(`Code: ${err.code}`));
|
|
66
|
+
process.exit((0, api_1.exitCodeForApiError)(err));
|
|
67
|
+
}
|
|
68
|
+
console.error(chalk_1.default.red(err instanceof Error ? err.message : String(err)));
|
|
69
|
+
process.exit(api_1.EXIT_GENERAL);
|
|
70
|
+
}
|
|
71
|
+
function formatBytes(b) {
|
|
72
|
+
if (b >= 1024 ** 3)
|
|
73
|
+
return `${(b / 1024 ** 3).toFixed(2)} GB`;
|
|
74
|
+
if (b >= 1024 ** 2)
|
|
75
|
+
return `${(b / 1024 ** 2).toFixed(2)} MB`;
|
|
76
|
+
if (b >= 1024)
|
|
77
|
+
return `${(b / 1024).toFixed(2)} KB`;
|
|
78
|
+
return `${b} B`;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=enable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enable.js","sourceRoot":"","sources":["../../../src/cli/assets/enable.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `fias-dev assets ...` — Asset library management commands.
|
|
3
|
+
*
|
|
4
|
+
* Exposed via the CLI's main router. Subcommands implement the
|
|
5
|
+
* 3-step upload flow + status / list / tag / delete / enable /
|
|
6
|
+
* disable. All commands accept `--env` and `--arche-id`; auth-
|
|
7
|
+
* missing exits with stable code 2 pointing at `fias-dev login`.
|
|
8
|
+
*/
|
|
9
|
+
import { Command } from 'commander';
|
|
10
|
+
export declare function registerAssetsCommand(parent: Command): void;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/assets/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAY3D"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `fias-dev assets ...` — Asset library management commands.
|
|
4
|
+
*
|
|
5
|
+
* Exposed via the CLI's main router. Subcommands implement the
|
|
6
|
+
* 3-step upload flow + status / list / tag / delete / enable /
|
|
7
|
+
* disable. All commands accept `--env` and `--arche-id`; auth-
|
|
8
|
+
* missing exits with stable code 2 pointing at `fias-dev login`.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.registerAssetsCommand = registerAssetsCommand;
|
|
12
|
+
const enable_1 = require("./enable");
|
|
13
|
+
const disable_1 = require("./disable");
|
|
14
|
+
const status_1 = require("./status");
|
|
15
|
+
const list_1 = require("./list");
|
|
16
|
+
const tag_1 = require("./tag");
|
|
17
|
+
const delete_1 = require("./delete");
|
|
18
|
+
const upload_1 = require("./upload");
|
|
19
|
+
function registerAssetsCommand(parent) {
|
|
20
|
+
const assets = parent
|
|
21
|
+
.command('assets')
|
|
22
|
+
.description('Manage the asset library for the current plugin arche');
|
|
23
|
+
(0, enable_1.registerEnableCommand)(assets);
|
|
24
|
+
(0, disable_1.registerDisableCommand)(assets);
|
|
25
|
+
(0, status_1.registerStatusCommand)(assets);
|
|
26
|
+
(0, upload_1.registerUploadCommand)(assets);
|
|
27
|
+
(0, list_1.registerListCommand)(assets);
|
|
28
|
+
(0, tag_1.registerTagCommand)(assets);
|
|
29
|
+
(0, delete_1.registerDeleteCommand)(assets);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/assets/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAWH,sDAYC;AApBD,qCAAiD;AACjD,uCAAmD;AACnD,qCAAiD;AACjD,iCAA6C;AAC7C,+BAA2C;AAC3C,qCAAiD;AACjD,qCAAiD;AAEjD,SAAgB,qBAAqB,CAAC,MAAe;IACnD,MAAM,MAAM,GAAG,MAAM;SAClB,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,uDAAuD,CAAC,CAAC;IAExE,IAAA,8BAAqB,EAAC,MAAM,CAAC,CAAC;IAC9B,IAAA,gCAAsB,EAAC,MAAM,CAAC,CAAC;IAC/B,IAAA,8BAAqB,EAAC,MAAM,CAAC,CAAC;IAC9B,IAAA,8BAAqB,EAAC,MAAM,CAAC,CAAC;IAC9B,IAAA,0BAAmB,EAAC,MAAM,CAAC,CAAC;IAC5B,IAAA,wBAAkB,EAAC,MAAM,CAAC,CAAC;IAC3B,IAAA,8BAAqB,EAAC,MAAM,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/cli/assets/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiCpC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAwEzD"}
|
|
@@ -0,0 +1,80 @@
|
|
|
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.registerListCommand = registerListCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const credentials_1 = require("../../config/credentials");
|
|
9
|
+
const config_loader_1 = require("../../config/config-loader");
|
|
10
|
+
const api_1 = require("./api");
|
|
11
|
+
const arche_resolver_1 = require("./arche-resolver");
|
|
12
|
+
const enable_1 = require("./enable");
|
|
13
|
+
function registerListCommand(parent) {
|
|
14
|
+
parent
|
|
15
|
+
.command('list')
|
|
16
|
+
.description('List assets in the current arche library')
|
|
17
|
+
.option('--env <environment>', 'staging | prod | local', 'staging')
|
|
18
|
+
.option('--arche-id <archeId>', 'Explicit arche ID')
|
|
19
|
+
.option('--status <status>', 'Filter by status (active | pending_validation | validation_failed | soft_deleted | admin_suspended | all_visible)')
|
|
20
|
+
.option('--tag <tag>', 'Filter by tag')
|
|
21
|
+
.option('--limit <limit>', 'Page size (1..100, default 50)')
|
|
22
|
+
.action(async (options) => {
|
|
23
|
+
try {
|
|
24
|
+
const env = (0, enable_1.normalizeAndAuth)(options.env);
|
|
25
|
+
const apiKey = (0, credentials_1.loadAuthTokenForEnvironment)(env);
|
|
26
|
+
if (!apiKey)
|
|
27
|
+
(0, enable_1.authMissing)(env);
|
|
28
|
+
const client = (0, api_1.createAssetApiClient)({
|
|
29
|
+
apiUrl: config_loader_1.ENVIRONMENT_URLS[env].apiUrl,
|
|
30
|
+
apiKey: apiKey,
|
|
31
|
+
});
|
|
32
|
+
const archeId = await (0, arche_resolver_1.resolveArcheId)({
|
|
33
|
+
cwd: process.cwd(),
|
|
34
|
+
env,
|
|
35
|
+
client,
|
|
36
|
+
explicit: options.archeId ?? null,
|
|
37
|
+
});
|
|
38
|
+
const params = new URLSearchParams();
|
|
39
|
+
if (options.status)
|
|
40
|
+
params.set('status', options.status);
|
|
41
|
+
if (options.tag)
|
|
42
|
+
params.set('tag', options.tag);
|
|
43
|
+
if (options.limit)
|
|
44
|
+
params.set('limit', options.limit);
|
|
45
|
+
const qs = params.toString();
|
|
46
|
+
const path = `/contributor/arches/${archeId}/assets${qs ? `?${qs}` : ''}`;
|
|
47
|
+
const result = await client.getJson(path);
|
|
48
|
+
if (result.assets.length === 0) {
|
|
49
|
+
console.log(chalk_1.default.dim('No assets match.'));
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
// Header.
|
|
53
|
+
console.log([
|
|
54
|
+
'ID'.padEnd(40),
|
|
55
|
+
'Name'.padEnd(28),
|
|
56
|
+
'Size'.padEnd(10),
|
|
57
|
+
'Dims'.padEnd(12),
|
|
58
|
+
'Status'.padEnd(20),
|
|
59
|
+
'Tags',
|
|
60
|
+
].join(''));
|
|
61
|
+
for (const a of result.assets) {
|
|
62
|
+
console.log([
|
|
63
|
+
a.assetId.padEnd(40),
|
|
64
|
+
(a.name ?? '').slice(0, 27).padEnd(28),
|
|
65
|
+
(0, enable_1.formatBytes)(a.sizeBytes).padEnd(10),
|
|
66
|
+
`${a.widthPx}×${a.heightPx}`.padEnd(12),
|
|
67
|
+
a.status.padEnd(20),
|
|
68
|
+
a.tags.join(', '),
|
|
69
|
+
].join(''));
|
|
70
|
+
}
|
|
71
|
+
if (result.nextCursor) {
|
|
72
|
+
console.log(chalk_1.default.dim(`\nMore — pass --cursor=${result.nextCursor} to continue`));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
(0, enable_1.handleErr)(err);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=list.js.map
|