ovsx 0.9.5 → 0.10.1
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/CHANGELOG.md +22 -0
- package/README.md +14 -0
- package/lib/check-license.js +2 -3
- package/lib/check-license.js.map +1 -1
- package/lib/create-namespace.d.ts.map +1 -1
- package/lib/create-namespace.js +2 -5
- package/lib/create-namespace.js.map +1 -1
- package/lib/get.js +1 -2
- package/lib/get.js.map +1 -1
- package/lib/login.d.ts +8 -1
- package/lib/login.d.ts.map +1 -1
- package/lib/login.js +19 -2
- package/lib/login.js.map +1 -1
- package/lib/logout.d.ts +2 -0
- package/lib/logout.d.ts.map +1 -0
- package/lib/logout.js +16 -0
- package/lib/logout.js.map +1 -0
- package/lib/main.js +20 -5
- package/lib/main.js.map +1 -1
- package/lib/ovsx +2 -2
- package/lib/publish.d.ts +4 -0
- package/lib/publish.d.ts.map +1 -1
- package/lib/publish.js +8 -6
- package/lib/publish.js.map +1 -1
- package/lib/registry.d.ts +0 -2
- package/lib/registry.d.ts.map +1 -1
- package/lib/registry.js +1 -4
- package/lib/registry.js.map +1 -1
- package/lib/store.d.ts +39 -0
- package/lib/store.d.ts.map +1 -0
- package/lib/store.js +115 -0
- package/lib/store.js.map +1 -0
- package/lib/util.d.ts +5 -3
- package/lib/util.d.ts.map +1 -1
- package/lib/util.js +39 -15
- package/lib/util.js.map +1 -1
- package/lib/verify-pat.d.ts +1 -0
- package/lib/verify-pat.d.ts.map +1 -1
- package/lib/verify-pat.js +10 -7
- package/lib/verify-pat.js.map +1 -1
- package/lib/version.d.ts +2 -0
- package/lib/version.d.ts.map +1 -0
- package/lib/version.js +5 -0
- package/lib/version.js.map +1 -0
- package/lib/zip.d.ts +4 -0
- package/lib/zip.d.ts.map +1 -0
- package/lib/zip.js +48 -0
- package/lib/zip.js.map +1 -0
- package/package.json +18 -11
- package/src/create-namespace.ts +3 -4
- package/src/login.ts +28 -1
- package/src/logout.ts +15 -0
- package/src/main.ts +23 -7
- package/src/ovsx +2 -2
- package/src/publish.ts +23 -16
- package/src/registry.ts +1 -5
- package/src/store.ts +142 -0
- package/src/util.ts +30 -0
- package/src/verify-pat.ts +22 -19
- package/src/version.ts +1 -0
- package/src/zip.ts +55 -0
package/lib/store.js
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KeytarStore = exports.FileStore = void 0;
|
|
4
|
+
exports.openDefaultStore = openDefaultStore;
|
|
5
|
+
const fs = require("fs");
|
|
6
|
+
const path = require("path");
|
|
7
|
+
const os_1 = require("os");
|
|
8
|
+
class FileStore {
|
|
9
|
+
static async open(path = FileStore.DefaultPath) {
|
|
10
|
+
try {
|
|
11
|
+
const rawStore = await fs.promises.readFile(path, 'utf8');
|
|
12
|
+
return new FileStore(path, JSON.parse(rawStore).entries);
|
|
13
|
+
}
|
|
14
|
+
catch (err) {
|
|
15
|
+
if (err.code === 'ENOENT') {
|
|
16
|
+
return new FileStore(path, []);
|
|
17
|
+
}
|
|
18
|
+
else if (/SyntaxError/.test(err)) {
|
|
19
|
+
throw new Error(`Error parsing file store: ${path}.`);
|
|
20
|
+
}
|
|
21
|
+
throw err;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
get size() {
|
|
25
|
+
return this.entries.length;
|
|
26
|
+
}
|
|
27
|
+
constructor(path, entries) {
|
|
28
|
+
this.path = path;
|
|
29
|
+
this.entries = entries;
|
|
30
|
+
}
|
|
31
|
+
async save() {
|
|
32
|
+
await fs.promises.writeFile(this.path, JSON.stringify({ entries: this.entries }), { mode: '0600' });
|
|
33
|
+
}
|
|
34
|
+
async deleteStore() {
|
|
35
|
+
try {
|
|
36
|
+
await fs.promises.unlink(this.path);
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
// noop
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
get(name) {
|
|
43
|
+
return this.entries.find(p => p.name === name)?.value;
|
|
44
|
+
}
|
|
45
|
+
async add(name, value) {
|
|
46
|
+
const newEntry = { name, value };
|
|
47
|
+
this.entries = [...this.entries.filter(p => p.name !== name), newEntry];
|
|
48
|
+
await this.save();
|
|
49
|
+
}
|
|
50
|
+
async delete(name) {
|
|
51
|
+
this.entries = this.entries.filter(p => p.name !== name);
|
|
52
|
+
await this.save();
|
|
53
|
+
}
|
|
54
|
+
[Symbol.iterator]() {
|
|
55
|
+
return this.entries[Symbol.iterator]();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.FileStore = FileStore;
|
|
59
|
+
FileStore.DefaultPath = path.join((0, os_1.homedir)(), '.ovsx');
|
|
60
|
+
class KeytarStore {
|
|
61
|
+
static async open(serviceName = 'ovsx') {
|
|
62
|
+
const keytar = await Promise.resolve().then(() => require('keytar'));
|
|
63
|
+
const creds = await keytar.findCredentials(serviceName);
|
|
64
|
+
return new KeytarStore(keytar, serviceName, creds.map(({ account, password }) => ({ name: account, value: password })));
|
|
65
|
+
}
|
|
66
|
+
get size() {
|
|
67
|
+
return this.entries.length;
|
|
68
|
+
}
|
|
69
|
+
constructor(keytar, serviceName, entries) {
|
|
70
|
+
this.keytar = keytar;
|
|
71
|
+
this.serviceName = serviceName;
|
|
72
|
+
this.entries = entries;
|
|
73
|
+
}
|
|
74
|
+
get(name) {
|
|
75
|
+
return this.entries.find(p => p.name === name)?.value;
|
|
76
|
+
}
|
|
77
|
+
async add(name, value) {
|
|
78
|
+
const newEntry = { name, value };
|
|
79
|
+
this.entries = [...this.entries.filter(p => p.name !== name), newEntry];
|
|
80
|
+
await this.keytar.setPassword(this.serviceName, name, value);
|
|
81
|
+
}
|
|
82
|
+
async delete(name) {
|
|
83
|
+
this.entries = this.entries.filter(p => p.name !== name);
|
|
84
|
+
await this.keytar.deletePassword(this.serviceName, name);
|
|
85
|
+
}
|
|
86
|
+
[Symbol.iterator]() {
|
|
87
|
+
return this.entries[Symbol.iterator]();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.KeytarStore = KeytarStore;
|
|
91
|
+
async function openDefaultStore() {
|
|
92
|
+
if (/^file$/i.test(process.env['OVSX_STORE'] ?? '')) {
|
|
93
|
+
return await FileStore.open();
|
|
94
|
+
}
|
|
95
|
+
let keytarStore;
|
|
96
|
+
try {
|
|
97
|
+
keytarStore = await KeytarStore.open();
|
|
98
|
+
}
|
|
99
|
+
catch (err) {
|
|
100
|
+
const store = await FileStore.open();
|
|
101
|
+
console.warn(`Failed to open credential store. Falling back to storing secrets clear-text in: ${store.path}.`);
|
|
102
|
+
return store;
|
|
103
|
+
}
|
|
104
|
+
const fileStore = await FileStore.open();
|
|
105
|
+
// migrate from file store
|
|
106
|
+
if (fileStore.size) {
|
|
107
|
+
for (const { name, value } of fileStore) {
|
|
108
|
+
await keytarStore.add(name, value);
|
|
109
|
+
}
|
|
110
|
+
await fileStore.deleteStore();
|
|
111
|
+
console.info(`Migrated ${fileStore.size} publishers to system credential manager. Deleted local store '${fileStore.path}'.`);
|
|
112
|
+
}
|
|
113
|
+
return keytarStore;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=store.js.map
|
package/lib/store.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
package/lib/util.d.ts
CHANGED
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
*
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
********************************************************************************/
|
|
10
|
-
/// <reference types="node" />
|
|
11
|
-
/// <reference types="node" />
|
|
12
|
-
/// <reference types="node" />
|
|
13
10
|
import * as fs from 'fs';
|
|
14
11
|
import * as tmp from 'tmp';
|
|
15
12
|
import * as http from 'http';
|
|
16
13
|
import { RegistryOptions } from './registry';
|
|
14
|
+
import { VerifyPatOptions } from './verify-pat';
|
|
15
|
+
import { PublishOptions } from './publish';
|
|
16
|
+
import { CreateNamespaceOptions } from './create-namespace';
|
|
17
17
|
export { promisify } from 'util';
|
|
18
18
|
export declare function addEnvOptions(options: RegistryOptions): void;
|
|
19
19
|
export declare function matchExtensionId(id: string): RegExpExecArray | null;
|
|
@@ -35,4 +35,6 @@ export interface Manifest {
|
|
|
35
35
|
}
|
|
36
36
|
export declare function getUserInput(text: string): Promise<string>;
|
|
37
37
|
export declare function getUserChoice<R extends string>(text: string, values: R[], defaultValue: R, lowerCase?: boolean): Promise<R>;
|
|
38
|
+
export declare function requestPAT(namespace: string, options: CreateNamespaceOptions | PublishOptions | VerifyPatOptions, verify?: boolean): Promise<string>;
|
|
39
|
+
export declare function getPAT(namespace: string, options: CreateNamespaceOptions | PublishOptions | VerifyPatOptions, verify?: boolean): Promise<string>;
|
|
38
40
|
//# sourceMappingURL=util.d.ts.map
|
package/lib/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;AAElF,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAe,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAa5D;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAEnE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC,KAAK,GAAG,SAAS,CAAC,CAI7E;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAazD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAS3E;AAED,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,OAAc,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAmBpH;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,GAAG,KAAK,CAKjE;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAE,cAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CAchH;AAED,wBAAsB,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAG1E;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAUzD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAE,cAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAehI;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrF;AAED,MAAM,WAAW,QAAQ;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ1D;AAED,wBAAsB,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,EACvE,YAAY,EAAE,CAAC,EAAE,SAAS,UAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAarD;AAED,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,cAAc,GAAG,gBAAgB,EAAE,MAAM,GAAE,OAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAOhK;AAED,wBAAsB,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,cAAc,GAAG,gBAAgB,EAAE,MAAM,GAAE,OAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAe5J"}
|
package/lib/util.js
CHANGED
|
@@ -9,11 +9,29 @@
|
|
|
9
9
|
* SPDX-License-Identifier: EPL-2.0
|
|
10
10
|
********************************************************************************/
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
12
|
+
exports.promisify = void 0;
|
|
13
|
+
exports.addEnvOptions = addEnvOptions;
|
|
14
|
+
exports.matchExtensionId = matchExtensionId;
|
|
15
|
+
exports.optionalStat = optionalStat;
|
|
16
|
+
exports.makeDirs = makeDirs;
|
|
17
|
+
exports.createTempFile = createTempFile;
|
|
18
|
+
exports.handleError = handleError;
|
|
19
|
+
exports.statusError = statusError;
|
|
20
|
+
exports.readFile = readFile;
|
|
21
|
+
exports.readManifest = readManifest;
|
|
22
|
+
exports.validateManifest = validateManifest;
|
|
23
|
+
exports.writeFile = writeFile;
|
|
24
|
+
exports.writeManifest = writeManifest;
|
|
25
|
+
exports.getUserInput = getUserInput;
|
|
26
|
+
exports.getUserChoice = getUserChoice;
|
|
27
|
+
exports.requestPAT = requestPAT;
|
|
28
|
+
exports.getPAT = getPAT;
|
|
13
29
|
const fs = require("fs");
|
|
14
30
|
const path = require("path");
|
|
15
31
|
const tmp = require("tmp");
|
|
16
32
|
const readline = require("readline");
|
|
33
|
+
const verify_pat_1 = require("./verify-pat");
|
|
34
|
+
const store_1 = require("./store");
|
|
17
35
|
var util_1 = require("util");
|
|
18
36
|
Object.defineProperty(exports, "promisify", { enumerable: true, get: function () { return util_1.promisify; } });
|
|
19
37
|
function addEnvOptions(options) {
|
|
@@ -30,17 +48,14 @@ function addEnvOptions(options) {
|
|
|
30
48
|
options.password = process.env.OVSX_PASSWORD;
|
|
31
49
|
}
|
|
32
50
|
}
|
|
33
|
-
exports.addEnvOptions = addEnvOptions;
|
|
34
51
|
function matchExtensionId(id) {
|
|
35
52
|
return /^([\w-]+)(?:\.|\/)([\w-]+)$/.exec(id);
|
|
36
53
|
}
|
|
37
|
-
exports.matchExtensionId = matchExtensionId;
|
|
38
54
|
function optionalStat(path) {
|
|
39
55
|
return new Promise((resolve, reject) => {
|
|
40
56
|
fs.stat(path, (err, stats) => resolve(stats));
|
|
41
57
|
});
|
|
42
58
|
}
|
|
43
|
-
exports.optionalStat = optionalStat;
|
|
44
59
|
function makeDirs(path) {
|
|
45
60
|
return new Promise((resolve, reject) => {
|
|
46
61
|
if (fs.existsSync(path)) {
|
|
@@ -56,7 +71,6 @@ function makeDirs(path) {
|
|
|
56
71
|
}
|
|
57
72
|
});
|
|
58
73
|
}
|
|
59
|
-
exports.makeDirs = makeDirs;
|
|
60
74
|
function createTempFile(options) {
|
|
61
75
|
return new Promise((resolve, reject) => {
|
|
62
76
|
tmp.tmpName(options, (err, name) => {
|
|
@@ -67,7 +81,6 @@ function createTempFile(options) {
|
|
|
67
81
|
});
|
|
68
82
|
});
|
|
69
83
|
}
|
|
70
|
-
exports.createTempFile = createTempFile;
|
|
71
84
|
function handleError(debug, additionalMessage, exit = true) {
|
|
72
85
|
return reason => {
|
|
73
86
|
if (reason instanceof Error && !debug) {
|
|
@@ -90,14 +103,12 @@ function handleError(debug, additionalMessage, exit = true) {
|
|
|
90
103
|
}
|
|
91
104
|
};
|
|
92
105
|
}
|
|
93
|
-
exports.handleError = handleError;
|
|
94
106
|
function statusError(response) {
|
|
95
107
|
if (response.statusMessage)
|
|
96
108
|
return new Error(`The server responded with status ${response.statusCode}: ${response.statusMessage}`);
|
|
97
109
|
else
|
|
98
110
|
return new Error(`The server responded with status ${response.statusCode}.`);
|
|
99
111
|
}
|
|
100
|
-
exports.statusError = statusError;
|
|
101
112
|
function readFile(name, packagePath, encoding = 'utf-8') {
|
|
102
113
|
return new Promise((resolve, reject) => {
|
|
103
114
|
fs.readFile(path.join(packagePath ?? process.cwd(), name), { encoding }, (err, content) => {
|
|
@@ -110,12 +121,10 @@ function readFile(name, packagePath, encoding = 'utf-8') {
|
|
|
110
121
|
});
|
|
111
122
|
});
|
|
112
123
|
}
|
|
113
|
-
exports.readFile = readFile;
|
|
114
124
|
async function readManifest(packagePath) {
|
|
115
125
|
const content = await readFile('package.json', packagePath);
|
|
116
126
|
return JSON.parse(content);
|
|
117
127
|
}
|
|
118
|
-
exports.readManifest = readManifest;
|
|
119
128
|
function validateManifest(manifest) {
|
|
120
129
|
if (!manifest.publisher) {
|
|
121
130
|
throw new Error("Missing required field 'publisher'.");
|
|
@@ -127,7 +136,6 @@ function validateManifest(manifest) {
|
|
|
127
136
|
throw new Error("Missing required field 'version'.");
|
|
128
137
|
}
|
|
129
138
|
}
|
|
130
|
-
exports.validateManifest = validateManifest;
|
|
131
139
|
function writeFile(name, content, packagePath, encoding = 'utf-8') {
|
|
132
140
|
return new Promise((resolve, reject) => {
|
|
133
141
|
fs.writeFile(path.join(packagePath ?? process.cwd(), name), content, { encoding }, err => {
|
|
@@ -140,12 +148,10 @@ function writeFile(name, content, packagePath, encoding = 'utf-8') {
|
|
|
140
148
|
});
|
|
141
149
|
});
|
|
142
150
|
}
|
|
143
|
-
exports.writeFile = writeFile;
|
|
144
151
|
function writeManifest(manifest, packagePath) {
|
|
145
152
|
const content = JSON.stringify(manifest, null, 4);
|
|
146
153
|
return writeFile('package.json', content, packagePath);
|
|
147
154
|
}
|
|
148
|
-
exports.writeManifest = writeManifest;
|
|
149
155
|
function getUserInput(text) {
|
|
150
156
|
return new Promise(resolve => {
|
|
151
157
|
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
@@ -155,7 +161,6 @@ function getUserInput(text) {
|
|
|
155
161
|
});
|
|
156
162
|
});
|
|
157
163
|
}
|
|
158
|
-
exports.getUserInput = getUserInput;
|
|
159
164
|
async function getUserChoice(text, values, defaultValue, lowerCase = true) {
|
|
160
165
|
const prompt = text + '\n' + values.map(v => v === defaultValue ? `[${v}]` : v).join('/') + ': ';
|
|
161
166
|
const answer = await getUserInput(prompt);
|
|
@@ -170,5 +175,24 @@ async function getUserChoice(text, values, defaultValue, lowerCase = true) {
|
|
|
170
175
|
}
|
|
171
176
|
return defaultValue;
|
|
172
177
|
}
|
|
173
|
-
|
|
178
|
+
async function requestPAT(namespace, options, verify = true) {
|
|
179
|
+
const pat = await getUserInput(`Personal Access Token for namespace '${namespace}':`);
|
|
180
|
+
if (verify) {
|
|
181
|
+
await (0, verify_pat_1.doVerifyPat)({ ...options, namespace, pat });
|
|
182
|
+
}
|
|
183
|
+
return pat;
|
|
184
|
+
}
|
|
185
|
+
async function getPAT(namespace, options, verify = true) {
|
|
186
|
+
if (options?.pat) {
|
|
187
|
+
return options.pat;
|
|
188
|
+
}
|
|
189
|
+
const store = await (0, store_1.openDefaultStore)();
|
|
190
|
+
let pat = store.get(namespace);
|
|
191
|
+
if (pat) {
|
|
192
|
+
return pat;
|
|
193
|
+
}
|
|
194
|
+
pat = await requestPAT(namespace, options, verify);
|
|
195
|
+
await store.add(namespace, pat);
|
|
196
|
+
return pat;
|
|
197
|
+
}
|
|
174
198
|
//# sourceMappingURL=util.js.map
|
package/lib/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";AAAA;;;;;;;;kFAQkF;;;
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
package/lib/verify-pat.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ import { RegistryOptions } from './registry';
|
|
|
12
12
|
* Validates that a Personal Access Token can publish to a namespace.
|
|
13
13
|
*/
|
|
14
14
|
export declare function verifyPat(options: VerifyPatOptions): Promise<void>;
|
|
15
|
+
export declare function doVerifyPat(options: VerifyPatOptions): Promise<void>;
|
|
15
16
|
export interface VerifyPatOptions extends RegistryOptions {
|
|
16
17
|
/**
|
|
17
18
|
* Name of the namespace.
|
package/lib/verify-pat.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-pat.d.ts","sourceRoot":"","sources":["../src/verify-pat.ts"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;AAElF,OAAO,EAAY,eAAe,EAAE,MAAM,YAAY,CAAC;AAGvD;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"verify-pat.d.ts","sourceRoot":"","sources":["../src/verify-pat.ts"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;AAElF,OAAO,EAAY,eAAe,EAAE,MAAM,YAAY,CAAC;AAGvD;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBxE;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,gBAAgB,iBAS1D;AAED,MAAM,WAAW,gBAAiB,SAAQ,eAAe;IACrD;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB"}
|
package/lib/verify-pat.js
CHANGED
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
* SPDX-License-Identifier: EPL-2.0
|
|
10
10
|
********************************************************************************/
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.verifyPat =
|
|
12
|
+
exports.verifyPat = verifyPat;
|
|
13
|
+
exports.doVerifyPat = doVerifyPat;
|
|
13
14
|
const registry_1 = require("./registry");
|
|
14
15
|
const util_1 = require("./util");
|
|
15
16
|
/**
|
|
@@ -17,9 +18,6 @@ const util_1 = require("./util");
|
|
|
17
18
|
*/
|
|
18
19
|
async function verifyPat(options) {
|
|
19
20
|
(0, util_1.addEnvOptions)(options);
|
|
20
|
-
if (!options.pat) {
|
|
21
|
-
throw new Error("A personal access token must be given with the option '--pat'.");
|
|
22
|
-
}
|
|
23
21
|
if (!options.namespace) {
|
|
24
22
|
let error;
|
|
25
23
|
try {
|
|
@@ -33,12 +31,17 @@ async function verifyPat(options) {
|
|
|
33
31
|
(error ? `\n\n${error}` : ''));
|
|
34
32
|
}
|
|
35
33
|
}
|
|
34
|
+
options.pat = await (0, util_1.getPAT)(options.namespace, options, false);
|
|
35
|
+
await doVerifyPat(options);
|
|
36
|
+
}
|
|
37
|
+
async function doVerifyPat(options) {
|
|
36
38
|
const registry = new registry_1.Registry(options);
|
|
37
|
-
const
|
|
39
|
+
const namespace = options.namespace;
|
|
40
|
+
const pat = options.pat;
|
|
41
|
+
const result = await registry.verifyPat(namespace, pat);
|
|
38
42
|
if (result.error) {
|
|
39
43
|
throw new Error(result.error);
|
|
40
44
|
}
|
|
41
|
-
console.log(`\ud83d\ude80 PAT valid to publish at ${
|
|
45
|
+
console.log(`\ud83d\ude80 PAT valid to publish at ${namespace}`);
|
|
42
46
|
}
|
|
43
|
-
exports.verifyPat = verifyPat;
|
|
44
47
|
//# sourceMappingURL=verify-pat.js.map
|
package/lib/verify-pat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-pat.js","sourceRoot":"","sources":["../src/verify-pat.ts"],"names":[],"mappings":";AAAA;;;;;;;;kFAQkF
|
|
1
|
+
{"version":3,"file":"verify-pat.js","sourceRoot":"","sources":["../src/verify-pat.ts"],"names":[],"mappings":";AAAA;;;;;;;;kFAQkF;;AAQlF,8BAoBC;AAED,kCASC;AArCD,yCAAuD;AACvD,iCAA6D;AAE7D;;GAEG;AACI,KAAK,UAAU,SAAS,CAAC,OAAyB;IACrD,IAAA,oBAAa,EAAC,OAAO,CAAC,CAAC;IACvB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACrB,IAAI,KAAK,CAAC;QACV,IAAI,CAAC;YACD,OAAO,CAAC,SAAS,GAAG,CAAC,MAAM,IAAA,mBAAY,GAAE,CAAC,CAAC,SAAS,CAAC;QACzD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,KAAK,GAAG,CAAC,CAAC;QACd,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACX,6GAA6G;gBAC7G,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAChC,CAAC;QACN,CAAC;IACL,CAAC;IAED,OAAO,CAAC,GAAG,GAAG,MAAM,IAAA,aAAM,EAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9D,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC;AAEM,KAAK,UAAU,WAAW,CAAC,OAAyB;IACvD,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAmB,CAAC;IAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAa,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACxD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,yCAAyC,SAAS,EAAE,CAAC,CAAC;AACtE,CAAC"}
|
package/lib/version.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,WAAW,CAAC"}
|
package/lib/version.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG,QAAQ,CAAC"}
|
package/lib/zip.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Manifest } from './util';
|
|
2
|
+
export declare function readZip(packagePath: string, filter: (name: string) => boolean): Promise<Map<string, Buffer>>;
|
|
3
|
+
export declare function readVSIXPackage(packagePath: string): Promise<Manifest>;
|
|
4
|
+
//# sourceMappingURL=zip.d.ts.map
|
package/lib/zip.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zip.d.ts","sourceRoot":"","sources":["../src/zip.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAWlC,wBAAsB,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA+BlH;AAED,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAQ5E"}
|
package/lib/zip.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readZip = readZip;
|
|
4
|
+
exports.readVSIXPackage = readVSIXPackage;
|
|
5
|
+
const yauzl_1 = require("yauzl");
|
|
6
|
+
async function bufferStream(stream) {
|
|
7
|
+
return await new Promise((resolve, reject) => {
|
|
8
|
+
const buffers = [];
|
|
9
|
+
stream.on('data', buffer => buffers.push(buffer));
|
|
10
|
+
stream.once('error', reject);
|
|
11
|
+
stream.once('end', () => resolve(Buffer.concat(buffers)));
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
async function readZip(packagePath, filter) {
|
|
15
|
+
const zipfile = await new Promise((resolve, reject) => (0, yauzl_1.open)(packagePath, { lazyEntries: true }, (err, zipfile) => (err ? reject(err) : resolve(zipfile))));
|
|
16
|
+
return await new Promise((resolve, reject) => {
|
|
17
|
+
const result = new Map();
|
|
18
|
+
zipfile.once('close', () => resolve(result));
|
|
19
|
+
zipfile.readEntry();
|
|
20
|
+
zipfile.on('entry', (entry) => {
|
|
21
|
+
const name = entry.fileName.toLowerCase();
|
|
22
|
+
if (filter(name)) {
|
|
23
|
+
zipfile.openReadStream(entry, (err, stream) => {
|
|
24
|
+
if (err) {
|
|
25
|
+
zipfile.close();
|
|
26
|
+
return reject(err);
|
|
27
|
+
}
|
|
28
|
+
bufferStream(stream).then(buffer => {
|
|
29
|
+
result.set(name, buffer);
|
|
30
|
+
zipfile.readEntry();
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
zipfile.readEntry();
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
async function readVSIXPackage(packagePath) {
|
|
41
|
+
const map = await readZip(packagePath, name => /^extension\/package\.json$/i.test(name));
|
|
42
|
+
const rawManifest = map.get('extension/package.json');
|
|
43
|
+
if (!rawManifest) {
|
|
44
|
+
throw new Error('Manifest not found.');
|
|
45
|
+
}
|
|
46
|
+
return JSON.parse(rawManifest.toString('utf8'));
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=zip.js.map
|
package/lib/zip.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zip.js","sourceRoot":"","sources":["../src/zip.ts"],"names":[],"mappings":";;AAaA,0BA+BC;AAED,0CAQC;AAtDD,iCAA6C;AAI7C,KAAK,UAAU,YAAY,CAAC,MAAgB;IAC3C,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC5C,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,OAAO,CAAC,WAAmB,EAAE,MAAiC;IACnF,MAAM,OAAO,GAAG,MAAM,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAC9D,IAAA,YAAI,EAAC,WAAW,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAClG,CAAC;IAEF,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC5C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QAEzC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAE7C,OAAO,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;YACpC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YAE1C,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClB,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;oBAC7C,IAAI,GAAG,EAAE,CAAC;wBACT,OAAO,CAAC,KAAK,EAAE,CAAC;wBAChB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;oBACpB,CAAC;oBAED,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;wBAClC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;wBACzB,OAAO,CAAC,SAAS,EAAE,CAAC;oBACrB,CAAC,CAAC,CAAC;gBACJ,CAAC,CAAC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,SAAS,EAAE,CAAC;YACrB,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,WAAmB;IACxD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACzF,MAAM,WAAW,GAAG,GAAG,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACtD,IAAI,CAAC,WAAW,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACxC,CAAC;IAEE,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAa,CAAC;AAChE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ovsx",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.1",
|
|
4
4
|
"description": "Command line interface for Eclipse Open VSX",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -34,35 +34,42 @@
|
|
|
34
34
|
"node": ">= 20"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@vscode/vsce": "^3.1
|
|
37
|
+
"@vscode/vsce": "^3.2.1",
|
|
38
38
|
"commander": "^6.2.1",
|
|
39
39
|
"follow-redirects": "^1.14.6",
|
|
40
40
|
"is-ci": "^2.0.0",
|
|
41
41
|
"leven": "^3.1.0",
|
|
42
42
|
"semver": "^7.6.0",
|
|
43
|
-
"tmp": "^0.2.3"
|
|
43
|
+
"tmp": "^0.2.3",
|
|
44
|
+
"yauzl": "^3.1.3"
|
|
44
45
|
},
|
|
45
46
|
"devDependencies": {
|
|
47
|
+
"@eslint/eslintrc": "^3.2.0",
|
|
48
|
+
"@eslint/js": "^9.15.0",
|
|
49
|
+
"@stylistic/eslint-plugin": "^2.11.0",
|
|
46
50
|
"@types/follow-redirects": "^1.13.1",
|
|
47
51
|
"@types/is-ci": "^2.0.0",
|
|
48
52
|
"@types/node": "^20.14.8",
|
|
49
53
|
"@types/semver": "^7.5.8",
|
|
50
54
|
"@types/tmp": "^0.2.2",
|
|
51
|
-
"@
|
|
52
|
-
"@typescript-eslint/
|
|
53
|
-
"eslint": "^8.
|
|
54
|
-
"
|
|
55
|
-
"
|
|
55
|
+
"@types/yauzl": "^2.10.3",
|
|
56
|
+
"@typescript-eslint/eslint-plugin": "^8.15.0",
|
|
57
|
+
"@typescript-eslint/parser": "^8.15.0",
|
|
58
|
+
"eslint": "^9.15.0",
|
|
59
|
+
"limiter": "^2.1.0",
|
|
60
|
+
"rimraf": "^6.0.1",
|
|
61
|
+
"typescript": "^5.6.3"
|
|
56
62
|
},
|
|
57
63
|
"scripts": {
|
|
58
64
|
"clean": "rimraf lib",
|
|
65
|
+
"prebuild": "node -p \"'export const LIB_VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\" > src/version.ts",
|
|
59
66
|
"build": "tsc -p ./tsconfig.json && yarn run lint && cp src/ovsx lib/ovsx",
|
|
60
67
|
"watch": "tsc -w -p ./tsconfig.json",
|
|
61
|
-
"lint": "eslint -c ./configs/eslintrc.
|
|
62
|
-
"prepare": "yarn run clean && yarn run build",
|
|
68
|
+
"lint": "eslint -c ./configs/eslintrc.mjs src",
|
|
69
|
+
"prepare": "yarn run clean && yarn run prebuild && yarn run build",
|
|
63
70
|
"publish:next": "yarn npm publish --tag next",
|
|
64
71
|
"publish:latest": "yarn npm publish --tag latest",
|
|
65
72
|
"load-extensions": "node scripts/load-test-extensions.js"
|
|
66
73
|
},
|
|
67
|
-
"packageManager": "yarn@4.
|
|
74
|
+
"packageManager": "yarn@4.5.1"
|
|
68
75
|
}
|
package/src/create-namespace.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
********************************************************************************/
|
|
10
10
|
|
|
11
11
|
import { Registry, RegistryOptions } from './registry';
|
|
12
|
-
import { addEnvOptions } from './util';
|
|
12
|
+
import { addEnvOptions, getPAT } from './util';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Creates a namespace (corresponds to `publisher` in package.json).
|
|
@@ -19,9 +19,8 @@ export async function createNamespace(options: CreateNamespaceOptions = {}): Pro
|
|
|
19
19
|
if (!options.name) {
|
|
20
20
|
throw new Error('The namespace name is mandatory.');
|
|
21
21
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
22
|
+
|
|
23
|
+
options.pat = await getPAT(options.name, options, false);
|
|
25
24
|
|
|
26
25
|
const registry = new Registry(options);
|
|
27
26
|
const result = await registry.createNamespace(options.name, options.pat);
|
package/src/login.ts
CHANGED
|
@@ -8,7 +8,34 @@
|
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
********************************************************************************/
|
|
10
10
|
import { } from '@vscode/vsce';
|
|
11
|
+
import { addEnvOptions, getUserInput, requestPAT } from './util';
|
|
12
|
+
import { openDefaultStore } from './store';
|
|
13
|
+
import { RegistryOptions } from './registry';
|
|
11
14
|
|
|
12
|
-
export default function
|
|
15
|
+
export default async function login(options: LoginOptions) {
|
|
16
|
+
addEnvOptions(options);
|
|
17
|
+
if (!options.namespace) {
|
|
18
|
+
throw new Error('Missing namespace name.');
|
|
19
|
+
}
|
|
13
20
|
|
|
21
|
+
const store = await openDefaultStore();
|
|
22
|
+
let pat = store.get(options.namespace);
|
|
23
|
+
if (pat) {
|
|
24
|
+
console.log(`Namespace '${options.namespace}' is already known.`);
|
|
25
|
+
const answer = await getUserInput('Do you want to overwrite its PAT? [y/N] ');
|
|
26
|
+
|
|
27
|
+
if (!/^y$/i.test(answer)) {
|
|
28
|
+
throw new Error('Aborted.');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
pat = await requestPAT(options.namespace, options);
|
|
33
|
+
await store.add(options.namespace, pat);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface LoginOptions extends RegistryOptions {
|
|
37
|
+
/**
|
|
38
|
+
* Name of the namespace.
|
|
39
|
+
*/
|
|
40
|
+
namespace?: string
|
|
14
41
|
}
|
package/src/logout.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { openDefaultStore } from "./store";
|
|
2
|
+
|
|
3
|
+
export default async function logout(namespaceName: string) {
|
|
4
|
+
if (!namespaceName) {
|
|
5
|
+
throw new Error('Missing namespace name.');
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
const store = await openDefaultStore();
|
|
9
|
+
if (!store.get(namespaceName)) {
|
|
10
|
+
throw new Error(`Unknown namespace '${namespaceName}'.`);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
await store.delete(namespaceName);
|
|
14
|
+
console.log(`\ud83d\ude80 ${namespaceName} removed from the list of known namespaces`);
|
|
15
|
+
}
|