ovsx 1.0.2 → 1.1.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/LICENSE +3 -3
- package/README.md +1 -1
- package/lib/check-license.d.ts.map +1 -1
- package/lib/check-license.js +16 -8
- package/lib/check-license.js.map +1 -1
- package/lib/login.d.ts.map +1 -1
- package/lib/login.js +16 -3
- package/lib/login.js.map +1 -1
- package/lib/logout.js +1 -1
- package/lib/logout.js.map +1 -1
- package/lib/main.js +5 -2
- package/lib/main.js.map +1 -1
- package/lib/pat.d.ts +0 -9
- package/lib/pat.d.ts.map +1 -1
- package/lib/pat.js +16 -3
- package/lib/pat.js.map +1 -1
- package/lib/publish-options.d.ts +5 -0
- package/lib/publish-options.d.ts.map +1 -1
- package/lib/publish.js +1 -0
- package/lib/publish.js.map +1 -1
- package/lib/store.d.ts +25 -14
- package/lib/store.d.ts.map +1 -1
- package/lib/store.js +83 -38
- package/lib/store.js.map +1 -1
- package/lib/util.d.ts +0 -2
- package/lib/util.d.ts.map +1 -1
- package/lib/util.js +0 -26
- package/lib/util.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +3 -1
- package/src/check-license.ts +17 -10
- package/src/login-options.ts +1 -1
- package/src/login.ts +9 -6
- package/src/logout.ts +2 -2
- package/src/main.ts +5 -2
- package/src/pat.ts +8 -4
- package/src/publish-options.ts +6 -1
- package/src/publish.ts +2 -1
- package/src/registry-options.ts +1 -1
- package/src/store.ts +94 -51
- package/src/util.ts +0 -27
- package/src/version.ts +1 -1
package/LICENSE
CHANGED
|
@@ -261,8 +261,8 @@ No third-party beneficiary rights are created under this Agreement.
|
|
|
261
261
|
|
|
262
262
|
Exhibit A - Form of Secondary Licenses Notice
|
|
263
263
|
|
|
264
|
-
"This Source Code may also be made available under the following
|
|
265
|
-
Secondary Licenses when the conditions for such availability set forth
|
|
264
|
+
"This Source Code may also be made available under the following
|
|
265
|
+
Secondary Licenses when the conditions for such availability set forth
|
|
266
266
|
in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
|
|
267
267
|
version(s), and exceptions or additional permissions here}."
|
|
268
268
|
|
|
@@ -274,4 +274,4 @@ version(s), and exceptions or additional permissions here}."
|
|
|
274
274
|
file in a relevant directory) where a recipient would be likely to
|
|
275
275
|
look for such a notice.
|
|
276
276
|
|
|
277
|
-
You may add additional accurate notices of copyright ownership.
|
|
277
|
+
You may add additional accurate notices of copyright ownership.
|
package/README.md
CHANGED
|
@@ -59,4 +59,4 @@ The `logout` command lets you remove a stored access token.
|
|
|
59
59
|
* `ovsx logout <name>`
|
|
60
60
|
the name must correspond to the `publisher` of your extension.
|
|
61
61
|
|
|
62
|
-
By default `ovsx`
|
|
62
|
+
By default `ovsx` stores access tokens in the operating system's credential manager (via [`cross-keychain`](https://www.npmjs.com/package/cross-keychain)), falling back to storing them as plaintext in the `~/.ovsx` file if the credential manager can't be used. You can also set the environment variable `OVSX_STORE=file` to force plaintext storage; this is strongly discouraged, as it leaves your tokens readable by anyone with access to your home directory.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-license.d.ts","sourceRoot":"","sources":["../src/check-license.ts"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;
|
|
1
|
+
{"version":3,"file":"check-license.d.ts","sourceRoot":"","sources":["../src/check-license.ts"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;AAKlF,OAAO,EAC0B,QAAQ,EACxC,MAAM,QAAQ,CAAC;AAsChB,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAiB5F;AAED,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKrE"}
|
package/lib/check-license.js
CHANGED
|
@@ -13,6 +13,7 @@ exports.isLicenseOk = isLicenseOk;
|
|
|
13
13
|
exports.checkLicense = checkLicense;
|
|
14
14
|
const fs = require("fs");
|
|
15
15
|
const isCI = require("is-ci");
|
|
16
|
+
const prompts_1 = require("@inquirer/prompts");
|
|
16
17
|
const util_1 = require("./util");
|
|
17
18
|
async function addLicense(packagePath, manifest) {
|
|
18
19
|
console.log('Extension ' + manifest.publisher + '.' + manifest.name + ' has no license. All Open VSX '
|
|
@@ -22,10 +23,17 @@ async function addLicense(packagePath, manifest) {
|
|
|
22
23
|
+ 'the MIT license and for compliance with that license.');
|
|
23
24
|
let answer;
|
|
24
25
|
do {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
answer = await (0, prompts_1.select)({
|
|
27
|
+
message: 'Would you like to publish your extension '
|
|
28
|
+
+ manifest.publisher + '.' + manifest.name
|
|
29
|
+
+ ' under the MIT license?',
|
|
30
|
+
choices: [
|
|
31
|
+
{ name: 'Yes', value: 'yes' },
|
|
32
|
+
{ name: 'Help', value: 'help' },
|
|
33
|
+
{ name: 'No', value: 'no' }
|
|
34
|
+
],
|
|
35
|
+
default: 'no'
|
|
36
|
+
});
|
|
29
37
|
switch (answer) {
|
|
30
38
|
case 'yes':
|
|
31
39
|
await useMITLicense(manifest, packagePath);
|
|
@@ -66,10 +74,10 @@ async function checkLicense(packagePath) {
|
|
|
66
74
|
async function useMITLicense(manifest, packagePath) {
|
|
67
75
|
console.log('Please enter a value for Copyright Year and Copyright Holder.\n'
|
|
68
76
|
+ 'Example: "Copyright 2020 John Doe"\n');
|
|
69
|
-
const copyright = await (0,
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
77
|
+
const copyright = await (0, prompts_1.input)({
|
|
78
|
+
message: 'Copyright',
|
|
79
|
+
validate: value => value.trim().length > 0 || 'A copyright declaration is necessary for the MIT license.'
|
|
80
|
+
});
|
|
73
81
|
manifest.license = 'MIT';
|
|
74
82
|
await (0, util_1.writeManifest)(manifest, packagePath);
|
|
75
83
|
const license = MIT_LICENSE_TEXT.replace('<YEAR> <COPYRIGHT HOLDER>', copyright);
|
package/lib/check-license.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-license.js","sourceRoot":"","sources":["../src/check-license.ts"],"names":[],"mappings":";AAAA;;;;;;;;kFAQkF;;
|
|
1
|
+
{"version":3,"file":"check-license.js","sourceRoot":"","sources":["../src/check-license.ts"],"names":[],"mappings":"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"}
|
package/lib/login.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,wBAA8B,KAAK,CAAC,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,wBAA8B,KAAK,CAAC,OAAO,EAAE,YAAY,iBAsBxD"}
|
package/lib/login.js
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.default = login;
|
|
4
|
+
/********************************************************************************
|
|
5
|
+
* Copyright (c) 2024 Precies. Software and others
|
|
6
|
+
*
|
|
7
|
+
* This program and the accompanying materials are made available under the
|
|
8
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
9
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
10
|
+
*
|
|
11
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
12
|
+
********************************************************************************/
|
|
13
|
+
const prompts_1 = require("@inquirer/prompts");
|
|
4
14
|
const util_1 = require("./util");
|
|
5
15
|
const store_1 = require("./store");
|
|
6
16
|
const pat_1 = require("./pat");
|
|
@@ -10,11 +20,14 @@ async function login(options) {
|
|
|
10
20
|
throw new Error('Missing namespace name.');
|
|
11
21
|
}
|
|
12
22
|
const store = await (0, store_1.openDefaultStore)();
|
|
13
|
-
let pat = store.get(options.namespace);
|
|
23
|
+
let pat = await store.get(options.namespace);
|
|
14
24
|
if (pat) {
|
|
15
25
|
console.log(`Namespace '${options.namespace}' is already known.`);
|
|
16
|
-
const
|
|
17
|
-
|
|
26
|
+
const overwrite = await (0, prompts_1.confirm)({
|
|
27
|
+
message: 'Do you want to overwrite its PAT?',
|
|
28
|
+
default: false
|
|
29
|
+
});
|
|
30
|
+
if (!overwrite) {
|
|
18
31
|
throw new Error('Aborted.');
|
|
19
32
|
}
|
|
20
33
|
}
|
package/lib/login.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":";;AAeA,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":";;AAeA,wBAsBC;AArCD;;;;;;;;kFAQkF;AAClF,+CAA4C;AAC5C,iCAAuC;AACvC,mCAA2C;AAE3C,+BAAmC;AAEpB,KAAK,UAAU,KAAK,CAAC,OAAqB;IACxD,IAAA,oBAAa,EAAC,OAAO,CAAC,CAAC;IACvB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAEJ,MAAM,KAAK,GAAG,MAAM,IAAA,wBAAgB,GAAE,CAAC;IACvC,IAAI,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,SAAS,qBAAqB,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,MAAM,IAAA,iBAAO,EAAC;YAC/B,OAAO,EAAE,mCAAmC;YAC5C,OAAO,EAAE,KAAK;SACd,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;IACF,CAAC;IAED,GAAG,GAAG,MAAM,IAAA,gBAAU,EAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC"}
|
package/lib/logout.js
CHANGED
|
@@ -16,7 +16,7 @@ async function logout(namespaceName) {
|
|
|
16
16
|
throw new Error('Missing namespace name.');
|
|
17
17
|
}
|
|
18
18
|
const store = await (0, store_1.openDefaultStore)();
|
|
19
|
-
if (!store.get(namespaceName)) {
|
|
19
|
+
if (!await store.get(namespaceName)) {
|
|
20
20
|
throw new Error(`Unknown namespace '${namespaceName}'.`);
|
|
21
21
|
}
|
|
22
22
|
await store.delete(namespaceName);
|
package/lib/logout.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../src/logout.ts"],"names":[],"mappings":";;AAWA,yBAYC;AAvBD;;;;;;;;kFAQkF;AAClF,mCAA2C;AAE5B,KAAK,UAAU,MAAM,CAAC,aAAqB;IACzD,IAAI,CAAC,aAAa,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAEJ,MAAM,KAAK,GAAG,MAAM,IAAA,wBAAgB,GAAE,CAAC;IACvC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../src/logout.ts"],"names":[],"mappings":";;AAWA,yBAYC;AAvBD;;;;;;;;kFAQkF;AAClF,mCAA2C;AAE5B,KAAK,UAAU,MAAM,CAAC,aAAqB;IACzD,IAAI,CAAC,aAAa,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAEJ,MAAM,KAAK,GAAG,MAAM,IAAA,wBAAgB,GAAE,CAAC;IACvC,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,sBAAsB,aAAa,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,iBAAiB,aAAa,4CAA4C,CAAC,CAAC;AAC5F,CAAC"}
|
package/lib/main.js
CHANGED
|
@@ -48,10 +48,11 @@ module.exports = function (argv) {
|
|
|
48
48
|
.option('--baseImagesUrl <url>', 'Prepend all relative image links in README.md with this URL.')
|
|
49
49
|
.option('--yarn', 'Use yarn instead of npm while packing extension files.')
|
|
50
50
|
.option('--pre-release', 'Mark this package as a pre-release')
|
|
51
|
+
.option('--allow-missing-repository', 'Allow packaging an extension whose package.json has no repository field')
|
|
51
52
|
.option('--no-dependencies', 'Disable dependency detection via npm or yarn')
|
|
52
53
|
.option('--skip-duplicate', 'Fail silently if version already exists on the marketplace')
|
|
53
54
|
.option('--packageVersion <version>', 'Version of the provided VSIX packages.')
|
|
54
|
-
.action((extensionFile, { target, packagePath, baseContentUrl, baseImagesUrl, yarn, preRelease, dependencies, skipDuplicate, packageVersion }) => {
|
|
55
|
+
.action((extensionFile, { target, packagePath, baseContentUrl, baseImagesUrl, yarn, preRelease, allowMissingRepository, dependencies, skipDuplicate, packageVersion }) => {
|
|
55
56
|
if (extensionFile !== undefined && packagePath !== undefined) {
|
|
56
57
|
console.error('\u274c Please specify either a package file or a package path, but not both.\n');
|
|
57
58
|
publishCmd.help();
|
|
@@ -68,8 +69,10 @@ module.exports = function (argv) {
|
|
|
68
69
|
console.warn("Ignoring option '--yarn' for prepackaged extension.");
|
|
69
70
|
if (extensionFile !== undefined && packageVersion !== undefined)
|
|
70
71
|
console.warn("Ignoring option '--packageVersion' for prepackaged extension.");
|
|
72
|
+
if (extensionFile !== undefined && allowMissingRepository !== undefined)
|
|
73
|
+
console.warn("Ignoring option '--allow-missing-repository' for prepackaged extension.");
|
|
71
74
|
const { registryUrl, pat } = program.opts();
|
|
72
|
-
(0, publish_1.publish)({ extensionFile, registryUrl, pat, targets: typeof target === 'string' ? [target] : target, packagePath: typeof packagePath === 'string' ? [packagePath] : packagePath, baseContentUrl, baseImagesUrl, yarn, preRelease, dependencies, skipDuplicate, packageVersion })
|
|
75
|
+
(0, publish_1.publish)({ extensionFile, registryUrl, pat, targets: typeof target === 'string' ? [target] : target, packagePath: typeof packagePath === 'string' ? [packagePath] : packagePath, baseContentUrl, baseImagesUrl, yarn, preRelease, allowMissingRepository, dependencies, skipDuplicate, packageVersion })
|
|
73
76
|
.then(results => {
|
|
74
77
|
const reasons = results.filter(result => result.status === 'rejected')
|
|
75
78
|
.map(rejectedResult => rejectedResult.reason);
|
package/lib/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AAAA;;;;;;;;kFAQkF;;AAElF,uCAAuC;AACvC,+BAA+B;AAC/B,yDAAqD;AACrD,6CAAyC;AACzC,uCAAoC;AACpC,iCAAqC;AACrC,+BAAqC;AACrC,mCAA4B;AAC5B,qCAA8B;AAC9B,uCAAwC;AAExC,MAAM,CAAC,OAAO,GAAG,UAAU,IAAc;IACrC,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;IACxC,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC;SAC/B,MAAM,CAAC,yBAAyB,EAAE,wCAAwC,CAAC;SAC3E,MAAM,CAAC,mBAAmB,EAAE,wBAAwB,CAAC;SACrD,MAAM,CAAC,SAAS,EAAE,oCAAoC,CAAC;SACvD,OAAO,CAAC,qBAAW,EAAE,eAAe,EAAE,wCAAwC,CAAC,CAAC;IAErF,MAAM,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACtE,kBAAkB,CAAC,WAAW,CAAC,wBAAwB,CAAC;SACnD,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE;QACrB,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAA,kCAAe,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;aACtC,KAAK,CAAC,IAAA,kBAAW,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEP,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACjE,cAAc,CAAC,WAAW,CAAC,gEAAgE,CAAC;SACvF,MAAM,CAAC,CAAC,SAAkB,EAAE,EAAE;QAC3B,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAA,sBAAS,EAAC,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC;aACrC,KAAK,CAAC,IAAA,kBAAW,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEP,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAC/D,UAAU,CAAC,WAAW,CAAC,wDAAwD,CAAC;SAC3E,MAAM,CAAC,2BAA2B,EAAE,sBAAsB,CAAC;SAC3D,MAAM,CAAC,8BAA8B,EAAE,qCAAqC,CAAC;SAC7E,MAAM,CAAC,wBAAwB,EAAE,wDAAwD,CAAC;SAC1F,MAAM,CAAC,uBAAuB,EAAE,8DAA8D,CAAC;SAC/F,MAAM,CAAC,QAAQ,EAAE,wDAAwD,CAAC;SAC1E,MAAM,CAAC,eAAe,EAAE,oCAAoC,CAAC;SAC7D,MAAM,CAAC,mBAAmB,EAAE,8CAA8C,CAAC;SAC3E,MAAM,CAAC,kBAAkB,EAAE,4DAA4D,CAAC;SACxF,MAAM,CAAC,4BAA4B,EAAE,wCAAwC,CAAC;SAC9E,MAAM,CAAC,CAAC,aAAqB,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
package/lib/pat.d.ts
CHANGED
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
/** ******************************************************************************
|
|
2
|
-
* Copyright (c) 2025 Precies. Software OU and others
|
|
3
|
-
*
|
|
4
|
-
* This program and the accompanying materials are made available under the
|
|
5
|
-
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
-
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
-
*
|
|
8
|
-
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
-
* ****************************************************************************** */
|
|
10
1
|
import { CreateNamespaceOptions } from './create-namespace-options';
|
|
11
2
|
import { PublishOptions } from './publish-options';
|
|
12
3
|
import { VerifyPatOptions } from './verify-pat-options';
|
package/lib/pat.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pat.d.ts","sourceRoot":"","sources":["../src/pat.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pat.d.ts","sourceRoot":"","sources":["../src/pat.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIxD,wBAAsB,WAAW,CAAC,OAAO,EAAE,gBAAgB,iBAS1D;AAED,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,GAAG,cAAc,GAAG,gBAAgB,EAAE,MAAM,GAAE,OAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAWhK;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/pat.js
CHANGED
|
@@ -3,8 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.doVerifyPat = doVerifyPat;
|
|
4
4
|
exports.requestPAT = requestPAT;
|
|
5
5
|
exports.getPAT = getPAT;
|
|
6
|
+
/** ******************************************************************************
|
|
7
|
+
* Copyright (c) 2025 Precies. Software OU and others
|
|
8
|
+
*
|
|
9
|
+
* This program and the accompanying materials are made available under the
|
|
10
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
11
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
12
|
+
*
|
|
13
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
14
|
+
* ****************************************************************************** */
|
|
15
|
+
const prompts_1 = require("@inquirer/prompts");
|
|
6
16
|
const registry_1 = require("./registry");
|
|
7
|
-
const util_1 = require("./util");
|
|
8
17
|
const store_1 = require("./store");
|
|
9
18
|
async function doVerifyPat(options) {
|
|
10
19
|
const registry = new registry_1.Registry(options);
|
|
@@ -17,7 +26,11 @@ async function doVerifyPat(options) {
|
|
|
17
26
|
console.log(`\ud83d\ude80 PAT valid to publish at ${namespace}`);
|
|
18
27
|
}
|
|
19
28
|
async function requestPAT(namespace, options, verify = true) {
|
|
20
|
-
const pat = await (0,
|
|
29
|
+
const pat = await (0, prompts_1.password)({
|
|
30
|
+
message: `Personal Access Token for namespace '${namespace}':`,
|
|
31
|
+
mask: true,
|
|
32
|
+
validate: value => value.trim().length > 0 || 'A personal access token is required.'
|
|
33
|
+
});
|
|
21
34
|
if (verify) {
|
|
22
35
|
await doVerifyPat({ ...options, namespace, pat });
|
|
23
36
|
}
|
|
@@ -28,7 +41,7 @@ async function getPAT(namespace, options, verify = true) {
|
|
|
28
41
|
return options.pat;
|
|
29
42
|
}
|
|
30
43
|
const store = await (0, store_1.openDefaultStore)();
|
|
31
|
-
let pat = store.get(namespace);
|
|
44
|
+
let pat = await store.get(namespace);
|
|
32
45
|
if (pat) {
|
|
33
46
|
return pat;
|
|
34
47
|
}
|
package/lib/pat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pat.js","sourceRoot":"","sources":["../src/pat.ts"],"names":[],"mappings":";;AAgBA,kCASC;AAED,
|
|
1
|
+
{"version":3,"file":"pat.js","sourceRoot":"","sources":["../src/pat.ts"],"names":[],"mappings":";;AAgBA,kCASC;AAED,gCAWC;AAED,wBAeC;AAvDD;;;;;;;;oFAQoF;AACpF,+CAA6C;AAI7C,yCAAsC;AACtC,mCAA2C;AAEpC,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;AAEM,KAAK,UAAU,UAAU,CAAC,SAAiB,EAAE,OAAmE,EAAE,SAAkB,IAAI;IAC3I,MAAM,GAAG,GAAG,MAAM,IAAA,kBAAQ,EAAC;QACvB,OAAO,EAAE,wCAAwC,SAAS,IAAI;QAC9D,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,sCAAsC;KACvF,CAAC,CAAC;IACH,IAAI,MAAM,EAAE,CAAC;QACT,MAAM,WAAW,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AAEM,KAAK,UAAU,MAAM,CAAC,SAAiB,EAAE,OAAmE,EAAE,SAAkB,IAAI;IACvI,IAAI,OAAO,EAAE,GAAG,EAAE,CAAC;QACf,OAAO,OAAO,CAAC,GAAG,CAAC;IACvB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,IAAA,wBAAgB,GAAE,CAAC;IACvC,IAAI,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACrC,IAAI,GAAG,EAAE,CAAC;QACN,OAAO,GAAG,CAAC;IACf,CAAC;IAED,GAAG,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAEhC,OAAO,GAAG,CAAC;AACf,CAAC"}
|
package/lib/publish-options.d.ts
CHANGED
|
@@ -29,6 +29,11 @@ export interface PublishCommonOptions extends RegistryOptions {
|
|
|
29
29
|
* Mark this package as a pre-release. Only valid with `packagePath`.
|
|
30
30
|
*/
|
|
31
31
|
preRelease?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Package the extension even though its manifest has no `repository` field, instead of asking for
|
|
34
|
+
* confirmation. Only valid with `packagePath`.
|
|
35
|
+
*/
|
|
36
|
+
allowMissingRepository?: boolean;
|
|
32
37
|
/**
|
|
33
38
|
* Whether to fail silently if version already exists on the marketplace
|
|
34
39
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish-options.d.ts","sourceRoot":"","sources":["../src/publish-options.ts"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IACzD;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAGD,MAAM,WAAW,cAAe,SAAQ,oBAAoB;IAExD;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B"}
|
|
1
|
+
{"version":3,"file":"publish-options.d.ts","sourceRoot":"","sources":["../src/publish-options.ts"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IACzD;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAGD,MAAM,WAAW,cAAe,SAAQ,oBAAoB;IAExD;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B"}
|
package/lib/publish.js
CHANGED
|
@@ -90,6 +90,7 @@ async function packageExtension(options, registry) {
|
|
|
90
90
|
useYarn: options.yarn,
|
|
91
91
|
dependencies: options.dependencies,
|
|
92
92
|
preRelease: options.preRelease,
|
|
93
|
+
allowMissingRepository: options.allowMissingRepository,
|
|
93
94
|
version: options.packageVersion
|
|
94
95
|
};
|
|
95
96
|
await (0, vsce_1.createVSIX)(packageOptions);
|
package/lib/publish.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../src/publish.ts"],"names":[],"mappings":"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"}
|
package/lib/store.d.ts
CHANGED
|
@@ -1,38 +1,49 @@
|
|
|
1
|
+
/********************************************************************************
|
|
2
|
+
* Copyright (c) 2024 Precies. Software and others
|
|
3
|
+
*
|
|
4
|
+
* This program and the accompanying materials are made available under the
|
|
5
|
+
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
*
|
|
8
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
+
********************************************************************************/
|
|
1
10
|
interface StoreEntry {
|
|
2
11
|
name: string;
|
|
3
12
|
value: string;
|
|
4
13
|
}
|
|
5
|
-
export interface Store
|
|
6
|
-
|
|
7
|
-
get(name: string): string | undefined;
|
|
14
|
+
export interface Store {
|
|
15
|
+
get(name: string): Promise<string | undefined>;
|
|
8
16
|
add(name: string, value: string): Promise<void>;
|
|
9
17
|
delete(name: string): Promise<void>;
|
|
10
18
|
}
|
|
11
19
|
export declare class FileStore implements Store {
|
|
12
20
|
readonly path: string;
|
|
13
21
|
private entries;
|
|
14
|
-
|
|
22
|
+
static readonly DefaultPath: string;
|
|
15
23
|
static open(path?: string): Promise<FileStore>;
|
|
16
24
|
get size(): number;
|
|
17
25
|
private constructor();
|
|
18
26
|
private save;
|
|
19
27
|
deleteStore(): Promise<void>;
|
|
20
|
-
get(name: string): string | undefined
|
|
28
|
+
get(name: string): Promise<string | undefined>;
|
|
21
29
|
add(name: string, value: string): Promise<void>;
|
|
22
30
|
delete(name: string): Promise<void>;
|
|
23
31
|
[Symbol.iterator](): ArrayIterator<StoreEntry>;
|
|
24
32
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
get
|
|
31
|
-
private constructor();
|
|
32
|
-
get(name: string): string | undefined;
|
|
33
|
+
/** Shared behavior for stores backed by the cross-keychain library. */
|
|
34
|
+
declare abstract class CrossKeychainStore implements Store {
|
|
35
|
+
protected readonly keychain: typeof import('cross-keychain');
|
|
36
|
+
protected readonly serviceName: string;
|
|
37
|
+
protected constructor(keychain: typeof import('cross-keychain'), serviceName: string);
|
|
38
|
+
get(name: string): Promise<string | undefined>;
|
|
33
39
|
add(name: string, value: string): Promise<void>;
|
|
34
40
|
delete(name: string): Promise<void>;
|
|
35
|
-
|
|
41
|
+
}
|
|
42
|
+
export declare class KeychainStore extends CrossKeychainStore {
|
|
43
|
+
static open(serviceName?: string): Promise<KeychainStore>;
|
|
44
|
+
}
|
|
45
|
+
export declare class EncryptedFileStore extends CrossKeychainStore {
|
|
46
|
+
static open(serviceName?: string): Promise<EncryptedFileStore>;
|
|
36
47
|
}
|
|
37
48
|
export declare function openDefaultStore(): Promise<Store>;
|
|
38
49
|
export {};
|
package/lib/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;AAMlF,UAAU,UAAU;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,KAAK;IACrB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC/C,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAED,qBAAa,SAAU,YAAW,KAAK;IAsBlB,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAE,OAAO,CAAC,OAAO;IArB1D,MAAM,CAAC,QAAQ,CAAC,WAAW,SAAiC;WAE/C,IAAI,CAAC,IAAI,GAAE,MAA8B,GAAG,OAAO,CAAC,SAAS,CAAC;IAe3E,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,OAAO;YAEO,IAAI;IAIZ,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI9C,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzC,CAAC,MAAM,CAAC,QAAQ,CAAC;CAGjB;AAYD,uEAAuE;AACvE,uBAAe,kBAAmB,YAAW,KAAK;IAEhD,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,cAAc,gBAAgB,CAAC;IAC5D,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM;IAFvC,SAAS,aACW,QAAQ,EAAE,cAAc,gBAAgB,CAAC,EACzC,WAAW,EAAE,MAAM;IAGjC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI9C,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGzC;AAED,qBAAa,aAAc,SAAQ,kBAAkB;WACvC,IAAI,CAAC,WAAW,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC;CAY/D;AAED,qBAAa,kBAAmB,SAAQ,kBAAkB;WACzC,IAAI,CAAC,WAAW,SAAS,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAOvE;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,KAAK,CAAC,CAyCvD"}
|
package/lib/store.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.KeytarStore = exports.FileStore = void 0;
|
|
4
|
-
exports.openDefaultStore = openDefaultStore;
|
|
5
2
|
/********************************************************************************
|
|
6
3
|
* Copyright (c) 2024 Precies. Software and others
|
|
7
4
|
*
|
|
@@ -11,6 +8,9 @@ exports.openDefaultStore = openDefaultStore;
|
|
|
11
8
|
*
|
|
12
9
|
* SPDX-License-Identifier: EPL-2.0
|
|
13
10
|
********************************************************************************/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.EncryptedFileStore = exports.KeychainStore = exports.FileStore = void 0;
|
|
13
|
+
exports.openDefaultStore = openDefaultStore;
|
|
14
14
|
const fs = require("fs");
|
|
15
15
|
const path = require("path");
|
|
16
16
|
const os_1 = require("os");
|
|
@@ -48,7 +48,7 @@ class FileStore {
|
|
|
48
48
|
// noop
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
-
get(name) {
|
|
51
|
+
async get(name) {
|
|
52
52
|
return this.entries.find(p => p.name === name)?.value;
|
|
53
53
|
}
|
|
54
54
|
async add(name, value) {
|
|
@@ -66,59 +66,104 @@ class FileStore {
|
|
|
66
66
|
}
|
|
67
67
|
exports.FileStore = FileStore;
|
|
68
68
|
FileStore.DefaultPath = path.join((0, os_1.homedir)(), '.ovsx');
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
69
|
+
async function verifyBackend(keychain, serviceName, description) {
|
|
70
|
+
// Probe the active backend so we fail fast when it's present but unusable (e.g.
|
|
71
|
+
// `security`/`secret-tool` exists but the keychain is locked or the daemon is down).
|
|
72
|
+
try {
|
|
73
|
+
await keychain.getPassword(serviceName, serviceName);
|
|
74
74
|
}
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
catch (err) {
|
|
76
|
+
throw new Error(`${description} is unavailable: ${err.message}`);
|
|
77
77
|
}
|
|
78
|
-
|
|
79
|
-
|
|
78
|
+
}
|
|
79
|
+
/** Shared behavior for stores backed by the cross-keychain library. */
|
|
80
|
+
class CrossKeychainStore {
|
|
81
|
+
constructor(keychain, serviceName) {
|
|
82
|
+
this.keychain = keychain;
|
|
80
83
|
this.serviceName = serviceName;
|
|
81
|
-
this.entries = entries;
|
|
82
84
|
}
|
|
83
|
-
get(name) {
|
|
84
|
-
return this.
|
|
85
|
+
async get(name) {
|
|
86
|
+
return await this.keychain.getPassword(this.serviceName, name) ?? undefined;
|
|
85
87
|
}
|
|
86
88
|
async add(name, value) {
|
|
87
|
-
|
|
88
|
-
this.entries = [...this.entries.filter(p => p.name !== name), newEntry];
|
|
89
|
-
await this.keytar.setPassword(this.serviceName, name, value);
|
|
89
|
+
await this.keychain.setPassword(this.serviceName, name, value);
|
|
90
90
|
}
|
|
91
91
|
async delete(name) {
|
|
92
|
-
|
|
93
|
-
await this.keytar.deletePassword(this.serviceName, name);
|
|
92
|
+
await this.keychain.deletePassword(this.serviceName, name);
|
|
94
93
|
}
|
|
95
|
-
|
|
96
|
-
|
|
94
|
+
}
|
|
95
|
+
class KeychainStore extends CrossKeychainStore {
|
|
96
|
+
static async open(serviceName = 'ovsx') {
|
|
97
|
+
const keychain = await Promise.resolve().then(() => require('cross-keychain'));
|
|
98
|
+
// cross-keychain auto-detects the highest-priority backend for this platform.
|
|
99
|
+
const { id, name } = await keychain.diagnose();
|
|
100
|
+
if (id === 'file' || id === 'null') {
|
|
101
|
+
throw new Error('No OS credential store detected on this platform.');
|
|
102
|
+
}
|
|
103
|
+
await verifyBackend(keychain, serviceName, `System credential store '${name}'`);
|
|
104
|
+
return new KeychainStore(keychain, serviceName);
|
|
97
105
|
}
|
|
98
106
|
}
|
|
99
|
-
exports.
|
|
107
|
+
exports.KeychainStore = KeychainStore;
|
|
108
|
+
class EncryptedFileStore extends CrossKeychainStore {
|
|
109
|
+
static async open(serviceName = 'ovsx') {
|
|
110
|
+
const keychain = await Promise.resolve().then(() => require('cross-keychain'));
|
|
111
|
+
await keychain.useBackend('file');
|
|
112
|
+
await verifyBackend(keychain, serviceName, 'Encrypted file store');
|
|
113
|
+
return new EncryptedFileStore(keychain, serviceName);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
exports.EncryptedFileStore = EncryptedFileStore;
|
|
100
117
|
async function openDefaultStore() {
|
|
101
|
-
|
|
118
|
+
// OVSX_STORE=file forces the encrypted file store and skips the OS credential store.
|
|
119
|
+
const forceFile = /^file$/i.test(process.env['OVSX_STORE'] ?? '');
|
|
120
|
+
let store;
|
|
121
|
+
// Prefer the operating system's credential store.
|
|
122
|
+
if (!forceFile) {
|
|
123
|
+
try {
|
|
124
|
+
store = await KeychainStore.open();
|
|
125
|
+
}
|
|
126
|
+
catch (err) {
|
|
127
|
+
console.warn(`WARN: ${err.message}`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// Otherwise fall back to cross-keychain's encrypted file store.
|
|
131
|
+
if (!store) {
|
|
132
|
+
try {
|
|
133
|
+
store = await EncryptedFileStore.open();
|
|
134
|
+
if (!forceFile) {
|
|
135
|
+
console.warn(`WARN: Storing secrets in cross-keychain's encrypted file store as system keychain is not available..`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
console.warn(`WARN: ${err.message}`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// Last resort: if no cross-keychain store works, keep publishing usable by storing secrets clear-text.
|
|
143
|
+
if (!store) {
|
|
144
|
+
console.warn(`WARN: Falling back to storing secrets clear-text at '${FileStore.DefaultPath}' (not recommended).`);
|
|
102
145
|
return await FileStore.open();
|
|
103
146
|
}
|
|
104
|
-
let keytarStore;
|
|
105
147
|
try {
|
|
106
|
-
|
|
148
|
+
await migrateLegacyStore(store);
|
|
107
149
|
}
|
|
108
150
|
catch (err) {
|
|
109
|
-
|
|
110
|
-
console.warn(`
|
|
111
|
-
return store;
|
|
151
|
+
console.warn(`WARN: Failed to read legacy file store at '${FileStore.DefaultPath}': ${err.message}`);
|
|
152
|
+
console.warn(`WARN: Skipping migration of Legacy file store.`);
|
|
112
153
|
}
|
|
154
|
+
return store;
|
|
155
|
+
}
|
|
156
|
+
// Migrate secrets from the legacy clear-text file store into the given store, then delete it.
|
|
157
|
+
async function migrateLegacyStore(target) {
|
|
113
158
|
const fileStore = await FileStore.open();
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
await
|
|
120
|
-
console.info(`Migrated ${fileStore.size} publishers to system credential manager. Deleted local store '${fileStore.path}'.`);
|
|
159
|
+
if (!fileStore.size) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
const migrated = fileStore.size;
|
|
163
|
+
for (const { name, value } of fileStore) {
|
|
164
|
+
await target.add(name, value);
|
|
121
165
|
}
|
|
122
|
-
|
|
166
|
+
await fileStore.deleteStore();
|
|
167
|
+
console.info(`INFO: Migrated ${migrated} publishers to the credential store. Deleted local store '${fileStore.path}'.`);
|
|
123
168
|
}
|
|
124
169
|
//# sourceMappingURL=store.js.map
|
package/lib/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
package/lib/util.d.ts
CHANGED
|
@@ -31,6 +31,4 @@ export interface Manifest {
|
|
|
31
31
|
version: string;
|
|
32
32
|
license?: string;
|
|
33
33
|
}
|
|
34
|
-
export declare function getUserInput(text: string): Promise<string>;
|
|
35
|
-
export declare function getUserChoice<R extends string>(text: string, values: R[], defaultValue: R, lowerCase?: boolean): Promise<R>;
|
|
36
34
|
//# 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;AAElF,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;
|
|
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;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAK5D;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,GAAG,EAAE,GAAG,kBAGnC;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"}
|
package/lib/util.js
CHANGED
|
@@ -23,12 +23,9 @@ exports.readManifest = readManifest;
|
|
|
23
23
|
exports.validateManifest = validateManifest;
|
|
24
24
|
exports.writeFile = writeFile;
|
|
25
25
|
exports.writeManifest = writeManifest;
|
|
26
|
-
exports.getUserInput = getUserInput;
|
|
27
|
-
exports.getUserChoice = getUserChoice;
|
|
28
26
|
const fs = require("fs");
|
|
29
27
|
const path = require("path");
|
|
30
28
|
const tmp = require("tmp");
|
|
31
|
-
const readline = require("readline");
|
|
32
29
|
var util_1 = require("util");
|
|
33
30
|
Object.defineProperty(exports, "promisify", { enumerable: true, get: function () { return util_1.promisify; } });
|
|
34
31
|
function addEnvOptions(options) {
|
|
@@ -145,27 +142,4 @@ function writeManifest(manifest, packagePath) {
|
|
|
145
142
|
const content = JSON.stringify(manifest, null, 4);
|
|
146
143
|
return writeFile('package.json', content, packagePath);
|
|
147
144
|
}
|
|
148
|
-
function getUserInput(text) {
|
|
149
|
-
return new Promise(resolve => {
|
|
150
|
-
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
151
|
-
rl.question(text, answer => {
|
|
152
|
-
resolve(answer);
|
|
153
|
-
rl.close();
|
|
154
|
-
});
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
async function getUserChoice(text, values, defaultValue, lowerCase = true) {
|
|
158
|
-
const prompt = text + '\n' + values.map(v => v === defaultValue ? `[${v}]` : v).join('/') + ': ';
|
|
159
|
-
const answer = await getUserInput(prompt);
|
|
160
|
-
if (!answer) {
|
|
161
|
-
return defaultValue;
|
|
162
|
-
}
|
|
163
|
-
const lcAnswer = lowerCase ? answer.toLowerCase() : answer;
|
|
164
|
-
for (const value of values) {
|
|
165
|
-
if (value.startsWith(lcAnswer)) {
|
|
166
|
-
return value;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
return defaultValue;
|
|
170
|
-
}
|
|
171
145
|
//# 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/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const LIB_VERSION = "1.
|
|
1
|
+
export declare const LIB_VERSION = "1.1.1";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/lib/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ovsx",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "Command line interface for Eclipse Open VSX",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -34,8 +34,10 @@
|
|
|
34
34
|
"node": ">= 20"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
+
"@inquirer/prompts": "^7.10.1",
|
|
37
38
|
"@vscode/vsce": "^3.7.1",
|
|
38
39
|
"commander": "^6.2.1",
|
|
40
|
+
"cross-keychain": "^1.1.0",
|
|
39
41
|
"follow-redirects": "^1.16.0",
|
|
40
42
|
"is-ci": "^2.0.0",
|
|
41
43
|
"leven": "^3.1.0",
|
package/src/check-license.ts
CHANGED
|
@@ -10,8 +10,9 @@
|
|
|
10
10
|
|
|
11
11
|
import * as fs from 'fs';
|
|
12
12
|
import * as isCI from 'is-ci';
|
|
13
|
+
import { input, select } from '@inquirer/prompts';
|
|
13
14
|
import {
|
|
14
|
-
readManifest, writeManifest, Manifest,
|
|
15
|
+
readManifest, writeManifest, Manifest, writeFile, validateManifest, promisify
|
|
15
16
|
} from './util';
|
|
16
17
|
|
|
17
18
|
async function addLicense(packagePath: string, manifest: Manifest): Promise<void> {
|
|
@@ -22,11 +23,17 @@ async function addLicense(packagePath: string, manifest: Manifest): Promise<void
|
|
|
22
23
|
+ 'the MIT license and for compliance with that license.');
|
|
23
24
|
let answer: 'yes' | 'help' | 'no';
|
|
24
25
|
do {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
[
|
|
26
|
+
answer = await select({
|
|
27
|
+
message: 'Would you like to publish your extension '
|
|
28
|
+
+ manifest.publisher + '.' + manifest.name
|
|
29
|
+
+ ' under the MIT license?',
|
|
30
|
+
choices: [
|
|
31
|
+
{ name: 'Yes', value: 'yes' },
|
|
32
|
+
{ name: 'Help', value: 'help' },
|
|
33
|
+
{ name: 'No', value: 'no' }
|
|
34
|
+
],
|
|
35
|
+
default: 'no'
|
|
36
|
+
});
|
|
30
37
|
switch (answer) {
|
|
31
38
|
case 'yes':
|
|
32
39
|
await useMITLicense(manifest, packagePath);
|
|
@@ -73,10 +80,10 @@ export async function checkLicense(packagePath: string): Promise<void> {
|
|
|
73
80
|
async function useMITLicense(manifest: Manifest, packagePath?: string) {
|
|
74
81
|
console.log('Please enter a value for Copyright Year and Copyright Holder.\n'
|
|
75
82
|
+ 'Example: "Copyright 2020 John Doe"\n');
|
|
76
|
-
const copyright = await
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
83
|
+
const copyright = await input({
|
|
84
|
+
message: 'Copyright',
|
|
85
|
+
validate: value => value.trim().length > 0 || 'A copyright declaration is necessary for the MIT license.'
|
|
86
|
+
});
|
|
80
87
|
manifest.license = 'MIT';
|
|
81
88
|
await writeManifest(manifest, packagePath);
|
|
82
89
|
const license = MIT_LICENSE_TEXT.replace('<YEAR> <COPYRIGHT HOLDER>', copyright);
|
package/src/login-options.ts
CHANGED
package/src/login.ts
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
*
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
********************************************************************************/
|
|
10
|
-
import {
|
|
11
|
-
import { addEnvOptions
|
|
10
|
+
import { confirm } from '@inquirer/prompts';
|
|
11
|
+
import { addEnvOptions } from './util';
|
|
12
12
|
import { openDefaultStore } from './store';
|
|
13
13
|
import { LoginOptions } from './login-options';
|
|
14
14
|
import { requestPAT } from './pat';
|
|
@@ -20,16 +20,19 @@ export default async function login(options: LoginOptions) {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
const store = await openDefaultStore();
|
|
23
|
-
let pat = store.get(options.namespace);
|
|
23
|
+
let pat = await store.get(options.namespace);
|
|
24
24
|
if (pat) {
|
|
25
25
|
console.log(`Namespace '${options.namespace}' is already known.`);
|
|
26
|
-
const
|
|
26
|
+
const overwrite = await confirm({
|
|
27
|
+
message: 'Do you want to overwrite its PAT?',
|
|
28
|
+
default: false
|
|
29
|
+
});
|
|
27
30
|
|
|
28
|
-
if (
|
|
31
|
+
if (!overwrite) {
|
|
29
32
|
throw new Error('Aborted.');
|
|
30
33
|
}
|
|
31
34
|
}
|
|
32
35
|
|
|
33
36
|
pat = await requestPAT(options.namespace, options);
|
|
34
37
|
await store.add(options.namespace, pat);
|
|
35
|
-
}
|
|
38
|
+
}
|
package/src/logout.ts
CHANGED
|
@@ -15,10 +15,10 @@ export default async function logout(namespaceName: string) {
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
const store = await openDefaultStore();
|
|
18
|
-
if (!store.get(namespaceName)) {
|
|
18
|
+
if (!await store.get(namespaceName)) {
|
|
19
19
|
throw new Error(`Unknown namespace '${namespaceName}'.`);
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
await store.delete(namespaceName);
|
|
23
23
|
console.log(`\ud83d\ude80 ${namespaceName} removed from the list of known namespaces`);
|
|
24
|
-
}
|
|
24
|
+
}
|
package/src/main.ts
CHANGED
|
@@ -51,10 +51,11 @@ module.exports = function (argv: string[]): void {
|
|
|
51
51
|
.option('--baseImagesUrl <url>', 'Prepend all relative image links in README.md with this URL.')
|
|
52
52
|
.option('--yarn', 'Use yarn instead of npm while packing extension files.')
|
|
53
53
|
.option('--pre-release', 'Mark this package as a pre-release')
|
|
54
|
+
.option('--allow-missing-repository', 'Allow packaging an extension whose package.json has no repository field')
|
|
54
55
|
.option('--no-dependencies', 'Disable dependency detection via npm or yarn')
|
|
55
56
|
.option('--skip-duplicate', 'Fail silently if version already exists on the marketplace')
|
|
56
57
|
.option('--packageVersion <version>', 'Version of the provided VSIX packages.')
|
|
57
|
-
.action((extensionFile: string, { target, packagePath, baseContentUrl, baseImagesUrl, yarn, preRelease, dependencies, skipDuplicate, packageVersion }) => {
|
|
58
|
+
.action((extensionFile: string, { target, packagePath, baseContentUrl, baseImagesUrl, yarn, preRelease, allowMissingRepository, dependencies, skipDuplicate, packageVersion }) => {
|
|
58
59
|
if (extensionFile !== undefined && packagePath !== undefined) {
|
|
59
60
|
console.error('\u274c Please specify either a package file or a package path, but not both.\n');
|
|
60
61
|
publishCmd.help();
|
|
@@ -71,8 +72,10 @@ module.exports = function (argv: string[]): void {
|
|
|
71
72
|
console.warn("Ignoring option '--yarn' for prepackaged extension.");
|
|
72
73
|
if (extensionFile !== undefined && packageVersion !== undefined)
|
|
73
74
|
console.warn("Ignoring option '--packageVersion' for prepackaged extension.");
|
|
75
|
+
if (extensionFile !== undefined && allowMissingRepository !== undefined)
|
|
76
|
+
console.warn("Ignoring option '--allow-missing-repository' for prepackaged extension.");
|
|
74
77
|
const { registryUrl, pat } = program.opts();
|
|
75
|
-
publish({ extensionFile, registryUrl, pat, targets: typeof target === 'string' ? [target] : target, packagePath: typeof packagePath === 'string' ? [packagePath] : packagePath, baseContentUrl, baseImagesUrl, yarn, preRelease, dependencies, skipDuplicate, packageVersion })
|
|
78
|
+
publish({ extensionFile, registryUrl, pat, targets: typeof target === 'string' ? [target] : target, packagePath: typeof packagePath === 'string' ? [packagePath] : packagePath, baseContentUrl, baseImagesUrl, yarn, preRelease, allowMissingRepository, dependencies, skipDuplicate, packageVersion })
|
|
76
79
|
.then(results => {
|
|
77
80
|
const reasons = results.filter(result => result.status === 'rejected')
|
|
78
81
|
.map(rejectedResult => rejectedResult.reason);
|
package/src/pat.ts
CHANGED
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
*
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
* ****************************************************************************** */
|
|
10
|
+
import { password } from '@inquirer/prompts';
|
|
10
11
|
import { CreateNamespaceOptions } from './create-namespace-options';
|
|
11
12
|
import { PublishOptions } from './publish-options';
|
|
12
13
|
import { VerifyPatOptions } from './verify-pat-options';
|
|
13
14
|
import { Registry } from './registry';
|
|
14
|
-
import { getUserInput } from './util';
|
|
15
15
|
import { openDefaultStore } from './store';
|
|
16
16
|
|
|
17
17
|
export async function doVerifyPat(options: VerifyPatOptions) {
|
|
@@ -26,7 +26,11 @@ export async function doVerifyPat(options: VerifyPatOptions) {
|
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
export async function requestPAT(namespace: string, options: CreateNamespaceOptions | PublishOptions | VerifyPatOptions, verify: boolean = true): Promise<string> {
|
|
29
|
-
const pat = await
|
|
29
|
+
const pat = await password({
|
|
30
|
+
message: `Personal Access Token for namespace '${namespace}':`,
|
|
31
|
+
mask: true,
|
|
32
|
+
validate: value => value.trim().length > 0 || 'A personal access token is required.'
|
|
33
|
+
});
|
|
30
34
|
if (verify) {
|
|
31
35
|
await doVerifyPat({ ...options, namespace, pat });
|
|
32
36
|
}
|
|
@@ -40,7 +44,7 @@ export async function getPAT(namespace: string, options: CreateNamespaceOptions
|
|
|
40
44
|
}
|
|
41
45
|
|
|
42
46
|
const store = await openDefaultStore();
|
|
43
|
-
let pat = store.get(namespace);
|
|
47
|
+
let pat = await store.get(namespace);
|
|
44
48
|
if (pat) {
|
|
45
49
|
return pat;
|
|
46
50
|
}
|
|
@@ -49,4 +53,4 @@ export async function getPAT(namespace: string, options: CreateNamespaceOptions
|
|
|
49
53
|
await store.add(namespace, pat);
|
|
50
54
|
|
|
51
55
|
return pat;
|
|
52
|
-
}
|
|
56
|
+
}
|
package/src/publish-options.ts
CHANGED
|
@@ -30,6 +30,11 @@ export interface PublishCommonOptions extends RegistryOptions {
|
|
|
30
30
|
* Mark this package as a pre-release. Only valid with `packagePath`.
|
|
31
31
|
*/
|
|
32
32
|
preRelease?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Package the extension even though its manifest has no `repository` field, instead of asking for
|
|
35
|
+
* confirmation. Only valid with `packagePath`.
|
|
36
|
+
*/
|
|
37
|
+
allowMissingRepository?: boolean;
|
|
33
38
|
/**
|
|
34
39
|
* Whether to fail silently if version already exists on the marketplace
|
|
35
40
|
*/
|
|
@@ -58,4 +63,4 @@ export interface PublishOptions extends PublishCommonOptions {
|
|
|
58
63
|
* Whether to do dependency detection via npm or yarn
|
|
59
64
|
*/
|
|
60
65
|
dependencies?: boolean;
|
|
61
|
-
}
|
|
66
|
+
}
|
package/src/publish.ts
CHANGED
|
@@ -94,6 +94,7 @@ async function packageExtension(options: InternalPublishOptions, registry: Regis
|
|
|
94
94
|
useYarn: options.yarn,
|
|
95
95
|
dependencies: options.dependencies,
|
|
96
96
|
preRelease: options.preRelease,
|
|
97
|
+
allowMissingRepository: options.allowMissingRepository,
|
|
97
98
|
version: options.packageVersion
|
|
98
99
|
};
|
|
99
100
|
await createVSIX(packageOptions);
|
|
@@ -119,4 +120,4 @@ interface InternalPublishOptions extends PublishCommonOptions {
|
|
|
119
120
|
* Whether to do dependency detection via npm or yarn
|
|
120
121
|
*/
|
|
121
122
|
dependencies?: boolean;
|
|
122
|
-
}
|
|
123
|
+
}
|
package/src/registry-options.ts
CHANGED
package/src/store.ts
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* SPDX-License-Identifier: EPL-2.0
|
|
9
9
|
********************************************************************************/
|
|
10
|
+
|
|
10
11
|
import * as fs from 'fs';
|
|
11
12
|
import * as path from 'path';
|
|
12
13
|
import { homedir } from 'os';
|
|
@@ -16,15 +17,14 @@ interface StoreEntry {
|
|
|
16
17
|
value: string
|
|
17
18
|
}
|
|
18
19
|
|
|
19
|
-
export interface Store
|
|
20
|
-
|
|
21
|
-
get(name: string): string | undefined;
|
|
20
|
+
export interface Store {
|
|
21
|
+
get(name: string): Promise<string | undefined>;
|
|
22
22
|
add(name: string, value: string): Promise<void>;
|
|
23
23
|
delete(name: string): Promise<void>;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
export class FileStore implements Store {
|
|
27
|
-
|
|
27
|
+
static readonly DefaultPath = path.join(homedir(), '.ovsx');
|
|
28
28
|
|
|
29
29
|
static async open(path: string = FileStore.DefaultPath): Promise<FileStore> {
|
|
30
30
|
try {
|
|
@@ -59,7 +59,7 @@ export class FileStore implements Store {
|
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
get(name: string): string | undefined {
|
|
62
|
+
async get(name: string): Promise<string | undefined> {
|
|
63
63
|
return this.entries.find(p => p.name === name)?.value;
|
|
64
64
|
}
|
|
65
65
|
|
|
@@ -79,73 +79,116 @@ export class FileStore implements Store {
|
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
serviceName,
|
|
90
|
-
creds.map(({ account, password }) => ({ name: account, value: password }))
|
|
91
|
-
);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
get size(): number {
|
|
95
|
-
return this.entries.length;
|
|
82
|
+
async function verifyBackend(keychain: typeof import('cross-keychain'), serviceName: string, description: string): Promise<void> {
|
|
83
|
+
// Probe the active backend so we fail fast when it's present but unusable (e.g.
|
|
84
|
+
// `security`/`secret-tool` exists but the keychain is locked or the daemon is down).
|
|
85
|
+
try {
|
|
86
|
+
await keychain.getPassword(serviceName, serviceName);
|
|
87
|
+
} catch (err) {
|
|
88
|
+
throw new Error(`${description} is unavailable: ${err.message}`);
|
|
96
89
|
}
|
|
90
|
+
}
|
|
97
91
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
92
|
+
/** Shared behavior for stores backed by the cross-keychain library. */
|
|
93
|
+
abstract class CrossKeychainStore implements Store {
|
|
94
|
+
protected constructor(
|
|
95
|
+
protected readonly keychain: typeof import('cross-keychain'),
|
|
96
|
+
protected readonly serviceName: string
|
|
102
97
|
) { }
|
|
103
98
|
|
|
104
|
-
get(name: string): string | undefined {
|
|
105
|
-
|
|
99
|
+
async get(name: string): Promise<string | undefined> {
|
|
100
|
+
return await this.keychain.getPassword(this.serviceName, name) ?? undefined;
|
|
106
101
|
}
|
|
107
102
|
|
|
108
103
|
async add(name: string, value: string): Promise<void> {
|
|
109
|
-
|
|
110
|
-
this.entries = [...this.entries.filter(p => p.name !== name), newEntry];
|
|
111
|
-
await this.keytar.setPassword(this.serviceName, name, value);
|
|
104
|
+
await this.keychain.setPassword(this.serviceName, name, value);
|
|
112
105
|
}
|
|
113
106
|
|
|
114
107
|
async delete(name: string): Promise<void> {
|
|
115
|
-
|
|
116
|
-
await this.keytar.deletePassword(this.serviceName, name);
|
|
108
|
+
await this.keychain.deletePassword(this.serviceName, name);
|
|
117
109
|
}
|
|
110
|
+
}
|
|
118
111
|
|
|
119
|
-
|
|
120
|
-
|
|
112
|
+
export class KeychainStore extends CrossKeychainStore {
|
|
113
|
+
static async open(serviceName = 'ovsx'): Promise<KeychainStore> {
|
|
114
|
+
const keychain = await import('cross-keychain');
|
|
115
|
+
|
|
116
|
+
// cross-keychain auto-detects the highest-priority backend for this platform.
|
|
117
|
+
const { id, name } = await keychain.diagnose();
|
|
118
|
+
if (id === 'file' || id === 'null') {
|
|
119
|
+
throw new Error('No OS credential store detected on this platform.');
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
await verifyBackend(keychain, serviceName, `System credential store '${name}'`);
|
|
123
|
+
return new KeychainStore(keychain, serviceName);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export class EncryptedFileStore extends CrossKeychainStore {
|
|
128
|
+
static async open(serviceName = 'ovsx'): Promise<EncryptedFileStore> {
|
|
129
|
+
const keychain = await import('cross-keychain');
|
|
130
|
+
|
|
131
|
+
await keychain.useBackend('file');
|
|
132
|
+
await verifyBackend(keychain, serviceName, 'Encrypted file store');
|
|
133
|
+
return new EncryptedFileStore(keychain, serviceName);
|
|
121
134
|
}
|
|
122
135
|
}
|
|
123
136
|
|
|
124
137
|
export async function openDefaultStore(): Promise<Store> {
|
|
125
|
-
|
|
126
|
-
|
|
138
|
+
// OVSX_STORE=file forces the encrypted file store and skips the OS credential store.
|
|
139
|
+
const forceFile = /^file$/i.test(process.env['OVSX_STORE'] ?? '');
|
|
140
|
+
|
|
141
|
+
let store: KeychainStore | EncryptedFileStore | undefined;
|
|
142
|
+
|
|
143
|
+
// Prefer the operating system's credential store.
|
|
144
|
+
if (!forceFile) {
|
|
145
|
+
try {
|
|
146
|
+
store = await KeychainStore.open();
|
|
147
|
+
} catch (err) {
|
|
148
|
+
console.warn(`WARN: ${err.message}`);
|
|
149
|
+
}
|
|
127
150
|
}
|
|
128
151
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
152
|
+
// Otherwise fall back to cross-keychain's encrypted file store.
|
|
153
|
+
if (!store) {
|
|
154
|
+
try {
|
|
155
|
+
store = await EncryptedFileStore.open();
|
|
156
|
+
if (!forceFile) {
|
|
157
|
+
console.warn(`WARN: Storing secrets in cross-keychain's encrypted file store as system keychain is not available..`);
|
|
158
|
+
}
|
|
159
|
+
} catch (err) {
|
|
160
|
+
console.warn(`WARN: ${err.message}`);
|
|
161
|
+
}
|
|
136
162
|
}
|
|
137
163
|
|
|
138
|
-
|
|
164
|
+
// Last resort: if no cross-keychain store works, keep publishing usable by storing secrets clear-text.
|
|
165
|
+
if (!store) {
|
|
166
|
+
console.warn(`WARN: Falling back to storing secrets clear-text at '${FileStore.DefaultPath}' (not recommended).`);
|
|
167
|
+
return await FileStore.open();
|
|
168
|
+
}
|
|
139
169
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
170
|
+
try {
|
|
171
|
+
await migrateLegacyStore(store);
|
|
172
|
+
} catch (err) {
|
|
173
|
+
console.warn(`WARN: Failed to read legacy file store at '${FileStore.DefaultPath}': ${err.message}`);
|
|
174
|
+
console.warn(`WARN: Skipping migration of Legacy file store.`);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
return store;
|
|
178
|
+
}
|
|
145
179
|
|
|
146
|
-
|
|
147
|
-
|
|
180
|
+
// Migrate secrets from the legacy clear-text file store into the given store, then delete it.
|
|
181
|
+
async function migrateLegacyStore(target: Store): Promise<void> {
|
|
182
|
+
const fileStore = await FileStore.open();
|
|
183
|
+
if (!fileStore.size) {
|
|
184
|
+
return;
|
|
148
185
|
}
|
|
149
186
|
|
|
150
|
-
|
|
151
|
-
}
|
|
187
|
+
const migrated = fileStore.size;
|
|
188
|
+
for (const { name, value } of fileStore) {
|
|
189
|
+
await target.add(name, value);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
await fileStore.deleteStore();
|
|
193
|
+
console.info(`INFO: Migrated ${migrated} publishers to the credential store. Deleted local store '${fileStore.path}'.`);
|
|
194
|
+
}
|
package/src/util.ts
CHANGED
|
@@ -12,7 +12,6 @@ import * as fs from 'fs';
|
|
|
12
12
|
import * as path from 'path';
|
|
13
13
|
import * as tmp from 'tmp';
|
|
14
14
|
import * as http from 'http';
|
|
15
|
-
import * as readline from 'readline';
|
|
16
15
|
import { RegistryOptions } from './registry-options';
|
|
17
16
|
|
|
18
17
|
export { promisify } from 'util';
|
|
@@ -154,29 +153,3 @@ export interface Manifest {
|
|
|
154
153
|
version: string;
|
|
155
154
|
license?: string;
|
|
156
155
|
}
|
|
157
|
-
|
|
158
|
-
export function getUserInput(text: string): Promise<string> {
|
|
159
|
-
return new Promise(resolve => {
|
|
160
|
-
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
161
|
-
rl.question(text, answer => {
|
|
162
|
-
resolve(answer);
|
|
163
|
-
rl.close();
|
|
164
|
-
});
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
export async function getUserChoice<R extends string>(text: string, values: R[],
|
|
169
|
-
defaultValue: R, lowerCase = true): Promise<R> {
|
|
170
|
-
const prompt = text + '\n' + values.map(v => v === defaultValue ? `[${v}]` : v).join('/') + ': ';
|
|
171
|
-
const answer = await getUserInput(prompt);
|
|
172
|
-
if (!answer) {
|
|
173
|
-
return defaultValue;
|
|
174
|
-
}
|
|
175
|
-
const lcAnswer = lowerCase ? answer.toLowerCase() : answer;
|
|
176
|
-
for (const value of values) {
|
|
177
|
-
if (value.startsWith(lcAnswer)) {
|
|
178
|
-
return value;
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
return defaultValue;
|
|
182
|
-
}
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const LIB_VERSION = "1.
|
|
1
|
+
export const LIB_VERSION = "1.1.1";
|