@phystack/cli 4.4.29
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.md +19 -0
- package/README.md +24 -0
- package/bin/index.js +2 -0
- package/dist/commands/app/build-apps.js +66 -0
- package/dist/commands/app/build-apps.js.map +1 -0
- package/dist/commands/app/build-container-remote.js +171 -0
- package/dist/commands/app/build-container-remote.js.map +1 -0
- package/dist/commands/app/build-container.js +322 -0
- package/dist/commands/app/build-container.js.map +1 -0
- package/dist/commands/app/build.js +375 -0
- package/dist/commands/app/build.js.map +1 -0
- package/dist/commands/app/create.js +409 -0
- package/dist/commands/app/create.js.map +1 -0
- package/dist/commands/app/deploy.js +176 -0
- package/dist/commands/app/deploy.js.map +1 -0
- package/dist/commands/app/device-picker.js +150 -0
- package/dist/commands/app/device-picker.js.map +1 -0
- package/dist/commands/app/import.js +303 -0
- package/dist/commands/app/import.js.map +1 -0
- package/dist/commands/app/list.js +26 -0
- package/dist/commands/app/list.js.map +1 -0
- package/dist/commands/app/publish.js +327 -0
- package/dist/commands/app/publish.js.map +1 -0
- package/dist/commands/app/settings.js +129 -0
- package/dist/commands/app/settings.js.map +1 -0
- package/dist/commands/app/types.js +13 -0
- package/dist/commands/app/types.js.map +1 -0
- package/dist/commands/app/upload-description.js +139 -0
- package/dist/commands/app/upload-description.js.map +1 -0
- package/dist/commands/app/upload-settings.js +29 -0
- package/dist/commands/app/upload-settings.js.map +1 -0
- package/dist/commands/app/utils.js +86 -0
- package/dist/commands/app/utils.js.map +1 -0
- package/dist/commands/auth/login.js +111 -0
- package/dist/commands/auth/login.js.map +1 -0
- package/dist/commands/auth/logout.js +19 -0
- package/dist/commands/auth/logout.js.map +1 -0
- package/dist/commands/descriptor/create.js +143 -0
- package/dist/commands/descriptor/create.js.map +1 -0
- package/dist/commands/descriptor/index.js +36 -0
- package/dist/commands/descriptor/index.js.map +1 -0
- package/dist/commands/descriptor/publish.js +163 -0
- package/dist/commands/descriptor/publish.js.map +1 -0
- package/dist/commands/descriptor/show.js +68 -0
- package/dist/commands/descriptor/show.js.map +1 -0
- package/dist/commands/dev/develop.js +175 -0
- package/dist/commands/dev/develop.js.map +1 -0
- package/dist/commands/dev/forward.js +118 -0
- package/dist/commands/dev/forward.js.map +1 -0
- package/dist/commands/dev/index.js +66 -0
- package/dist/commands/dev/index.js.map +1 -0
- package/dist/commands/dev/list.js +96 -0
- package/dist/commands/dev/list.js.map +1 -0
- package/dist/commands/dev/screen-devtools.js +156 -0
- package/dist/commands/dev/screen-devtools.js.map +1 -0
- package/dist/commands/dev/select.js +118 -0
- package/dist/commands/dev/select.js.map +1 -0
- package/dist/commands/dev/shell.js +171 -0
- package/dist/commands/dev/shell.js.map +1 -0
- package/dist/commands/dev/vnc.js +75 -0
- package/dist/commands/dev/vnc.js.map +1 -0
- package/dist/commands/device/select.js +118 -0
- package/dist/commands/device/select.js.map +1 -0
- package/dist/commands/flash.js +1120 -0
- package/dist/commands/flash.js.map +1 -0
- package/dist/commands/inst/create.js +55 -0
- package/dist/commands/inst/create.js.map +1 -0
- package/dist/commands/inst/index.js +15 -0
- package/dist/commands/inst/index.js.map +1 -0
- package/dist/commands/inst/list.js +26 -0
- package/dist/commands/inst/list.js.map +1 -0
- package/dist/commands/legacydev/debug.js +11 -0
- package/dist/commands/legacydev/debug.js.map +1 -0
- package/dist/commands/legacydev/deploy.js +15 -0
- package/dist/commands/legacydev/deploy.js.map +1 -0
- package/dist/commands/legacydev/dumpTwin.js +27 -0
- package/dist/commands/legacydev/dumpTwin.js.map +1 -0
- package/dist/commands/legacydev/forward.js +104 -0
- package/dist/commands/legacydev/forward.js.map +1 -0
- package/dist/commands/legacydev/index.js +188 -0
- package/dist/commands/legacydev/index.js.map +1 -0
- package/dist/commands/legacydev/invoke.js +29 -0
- package/dist/commands/legacydev/invoke.js.map +1 -0
- package/dist/commands/legacydev/js.js +69 -0
- package/dist/commands/legacydev/js.js.map +1 -0
- package/dist/commands/legacydev/list.js +196 -0
- package/dist/commands/legacydev/list.js.map +1 -0
- package/dist/commands/legacydev/logs.js +60 -0
- package/dist/commands/legacydev/logs.js.map +1 -0
- package/dist/commands/legacydev/modules.js +50 -0
- package/dist/commands/legacydev/modules.js.map +1 -0
- package/dist/commands/legacydev/move.js +23 -0
- package/dist/commands/legacydev/move.js.map +1 -0
- package/dist/commands/legacydev/ota.js +88 -0
- package/dist/commands/legacydev/ota.js.map +1 -0
- package/dist/commands/legacydev/patchTwin.js +21 -0
- package/dist/commands/legacydev/patchTwin.js.map +1 -0
- package/dist/commands/legacydev/pin.js +23 -0
- package/dist/commands/legacydev/pin.js.map +1 -0
- package/dist/commands/legacydev/pub.js +25 -0
- package/dist/commands/legacydev/pub.js.map +1 -0
- package/dist/commands/legacydev/rdp.js +64 -0
- package/dist/commands/legacydev/rdp.js.map +1 -0
- package/dist/commands/legacydev/screen-devtools.js +142 -0
- package/dist/commands/legacydev/screen-devtools.js.map +1 -0
- package/dist/commands/legacydev/settingsShow.js +89 -0
- package/dist/commands/legacydev/settingsShow.js.map +1 -0
- package/dist/commands/legacydev/settingsUpdate.js +114 -0
- package/dist/commands/legacydev/settingsUpdate.js.map +1 -0
- package/dist/commands/legacydev/shell.js +167 -0
- package/dist/commands/legacydev/shell.js.map +1 -0
- package/dist/commands/legacydev/showTwin.js +9 -0
- package/dist/commands/legacydev/showTwin.js.map +1 -0
- package/dist/commands/legacydev/statusLog.js +56 -0
- package/dist/commands/legacydev/statusLog.js.map +1 -0
- package/dist/commands/legacydev/sub.js +39 -0
- package/dist/commands/legacydev/sub.js.map +1 -0
- package/dist/commands/legacydev/vnc.js +61 -0
- package/dist/commands/legacydev/vnc.js.map +1 -0
- package/dist/commands/tenant/index.js +21 -0
- package/dist/commands/tenant/index.js.map +1 -0
- package/dist/commands/tenant/list.js +14 -0
- package/dist/commands/tenant/list.js.map +1 -0
- package/dist/commands/tenant/select.js +87 -0
- package/dist/commands/tenant/select.js.map +1 -0
- package/dist/commands/vm/create.js +718 -0
- package/dist/commands/vm/create.js.map +1 -0
- package/dist/commands/vm/index.js +130 -0
- package/dist/commands/vm/index.js.map +1 -0
- package/dist/commands/vm/list.js +124 -0
- package/dist/commands/vm/list.js.map +1 -0
- package/dist/commands/vm/logs.js +66 -0
- package/dist/commands/vm/logs.js.map +1 -0
- package/dist/commands/vm/remove.js +180 -0
- package/dist/commands/vm/remove.js.map +1 -0
- package/dist/commands/vm/shell.js +400 -0
- package/dist/commands/vm/shell.js.map +1 -0
- package/dist/commands/vm/start.js +861 -0
- package/dist/commands/vm/start.js.map +1 -0
- package/dist/commands/vm/stop.js +232 -0
- package/dist/commands/vm/stop.js.map +1 -0
- package/dist/index.js +158 -0
- package/dist/index.js.map +1 -0
- package/dist/services/admin-api/admin-api.types.js +3 -0
- package/dist/services/admin-api/admin-api.types.js.map +1 -0
- package/dist/services/admin-api/device-modules.admin-api.service.js +58 -0
- package/dist/services/admin-api/device-modules.admin-api.service.js.map +1 -0
- package/dist/services/admin-api/devices-admin-api.service.js +213 -0
- package/dist/services/admin-api/devices-admin-api.service.js.map +1 -0
- package/dist/services/admin-api/gridapps-admin-api.service.js +59 -0
- package/dist/services/admin-api/gridapps-admin-api.service.js.map +1 -0
- package/dist/services/admin-api/index.js +157 -0
- package/dist/services/admin-api/index.js.map +1 -0
- package/dist/services/admin-api/installations-admin-api.service.js +29 -0
- package/dist/services/admin-api/installations-admin-api.service.js.map +1 -0
- package/dist/services/admin-api/organizations-admin-api.service.js +53 -0
- package/dist/services/admin-api/organizations-admin-api.service.js.map +1 -0
- package/dist/services/auth/device-grant-auth.service.js +224 -0
- package/dist/services/auth/device-grant-auth.service.js.map +1 -0
- package/dist/services/phyhub/index.js +200 -0
- package/dist/services/phyhub/index.js.map +1 -0
- package/dist/services/phyhub/phyhub.types.js +3 -0
- package/dist/services/phyhub/phyhub.types.js.map +1 -0
- package/dist/utils/device-fetcher.js +92 -0
- package/dist/utils/device-fetcher.js.map +1 -0
- package/dist/utils/devices.js +41 -0
- package/dist/utils/devices.js.map +1 -0
- package/dist/utils/docker-credentials.js +546 -0
- package/dist/utils/docker-credentials.js.map +1 -0
- package/dist/utils/emulated-device.js +91 -0
- package/dist/utils/emulated-device.js.map +1 -0
- package/dist/utils/index.js +180 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/modules.js +36 -0
- package/dist/utils/modules.js.map +1 -0
- package/dist/utils/org-selector.js +108 -0
- package/dist/utils/org-selector.js.map +1 -0
- package/dist/utils/proxy.js +31 -0
- package/dist/utils/proxy.js.map +1 -0
- package/dist/utils/registry-credentials.js +113 -0
- package/dist/utils/registry-credentials.js.map +1 -0
- package/dist/utils/statuses.js +124 -0
- package/dist/utils/statuses.js.map +1 -0
- package/dist/utils/templates.js +189 -0
- package/dist/utils/templates.js.map +1 -0
- package/dist/utils/tenant-storage.js +88 -0
- package/dist/utils/tenant-storage.js.map +1 -0
- package/dist/utils/vm.js +434 -0
- package/dist/utils/vm.js.map +1 -0
- package/dist/utils/with-spinner.js +20 -0
- package/dist/utils/with-spinner.js.map +1 -0
- package/package.json +103 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.clearEmulatedDevice = exports.hasEmulatedDevice = exports.getEmulatedDevice = exports.saveEmulatedDevice = void 0;
|
|
7
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const os_1 = __importDefault(require("os"));
|
|
10
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
+
const CONFIG_DIR = path_1.default.join(os_1.default.homedir(), '.config', 'phygrid-cli');
|
|
12
|
+
const EMULATED_DEVICE_FILE = path_1.default.join(CONFIG_DIR, 'device.json');
|
|
13
|
+
/**
|
|
14
|
+
* Save emulated device information to the config directory
|
|
15
|
+
*
|
|
16
|
+
* @param device The device information to save
|
|
17
|
+
* @returns Promise that resolves when the save is complete
|
|
18
|
+
*/
|
|
19
|
+
const saveEmulatedDevice = async (device) => {
|
|
20
|
+
try {
|
|
21
|
+
// Ensure config directory exists
|
|
22
|
+
await fs_extra_1.default.ensureDir(CONFIG_DIR);
|
|
23
|
+
// Save the device information
|
|
24
|
+
await fs_extra_1.default.writeFile(EMULATED_DEVICE_FILE, JSON.stringify(device, null, 2));
|
|
25
|
+
console.log(chalk_1.default.dim(`Saved emulated device information to ${EMULATED_DEVICE_FILE}`));
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
console.error(chalk_1.default.red(`Failed to save emulated device information: ${error.message}`));
|
|
29
|
+
throw error;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
exports.saveEmulatedDevice = saveEmulatedDevice;
|
|
33
|
+
/**
|
|
34
|
+
* Get the saved emulated device information
|
|
35
|
+
*
|
|
36
|
+
* @returns Promise that resolves to the device information or null if none saved
|
|
37
|
+
*/
|
|
38
|
+
const getEmulatedDevice = async () => {
|
|
39
|
+
try {
|
|
40
|
+
if (await fs_extra_1.default.pathExists(EMULATED_DEVICE_FILE)) {
|
|
41
|
+
const data = await fs_extra_1.default.readFile(EMULATED_DEVICE_FILE, 'utf8');
|
|
42
|
+
const device = JSON.parse(data);
|
|
43
|
+
// Log success message with more detailed device info
|
|
44
|
+
const deviceInfo = device.displayName || device.deviceSerial
|
|
45
|
+
? `${device.name} (ID: ${device.id}${device.deviceSerial ? `, Serial: ${device.deviceSerial}` : ''})`
|
|
46
|
+
: `${device.name} (${device.id})`;
|
|
47
|
+
console.log(chalk_1.default.dim(`Loaded emulated device: ${deviceInfo}`));
|
|
48
|
+
return device;
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
console.error(chalk_1.default.red(`Failed to read emulated device information: ${error.message}`));
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
exports.getEmulatedDevice = getEmulatedDevice;
|
|
58
|
+
/**
|
|
59
|
+
* Check if an emulated device is already saved
|
|
60
|
+
*
|
|
61
|
+
* @returns Promise that resolves to true if a device is saved, false otherwise
|
|
62
|
+
*/
|
|
63
|
+
const hasEmulatedDevice = async () => {
|
|
64
|
+
try {
|
|
65
|
+
return await fs_extra_1.default.pathExists(EMULATED_DEVICE_FILE);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
console.error(chalk_1.default.red(`Failed to check for emulated device: ${error.message}`));
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
exports.hasEmulatedDevice = hasEmulatedDevice;
|
|
73
|
+
/**
|
|
74
|
+
* Clear the saved emulated device
|
|
75
|
+
*
|
|
76
|
+
* @returns Promise that resolves when the file is deleted
|
|
77
|
+
*/
|
|
78
|
+
const clearEmulatedDevice = async () => {
|
|
79
|
+
try {
|
|
80
|
+
if (await fs_extra_1.default.pathExists(EMULATED_DEVICE_FILE)) {
|
|
81
|
+
await fs_extra_1.default.remove(EMULATED_DEVICE_FILE);
|
|
82
|
+
console.log(chalk_1.default.dim(`Removed emulated device information`));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
console.error(chalk_1.default.red(`Failed to clear emulated device: ${error.message}`));
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
exports.clearEmulatedDevice = clearEmulatedDevice;
|
|
91
|
+
//# sourceMappingURL=emulated-device.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emulated-device.js","sourceRoot":"","sources":["../../src/utils/emulated-device.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.kebabCase = exports.compareVersions = exports.handleError = exports.printTable = exports.fieldLength = exports.openStream = exports.loadConfig = exports.banner = exports.getLatestVersion = exports.getPackageVersion = void 0;
|
|
40
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
41
|
+
const boxen_1 = __importStar(require("boxen"));
|
|
42
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
43
|
+
const path_1 = __importDefault(require("path"));
|
|
44
|
+
const fs_1 = __importDefault(require("fs"));
|
|
45
|
+
const os_1 = __importDefault(require("os"));
|
|
46
|
+
const websocket_stream_1 = __importDefault(require("websocket-stream"));
|
|
47
|
+
const proxy_1 = require("./proxy");
|
|
48
|
+
const axios = (0, proxy_1.getAxiosInstanceWithProxy)();
|
|
49
|
+
// Replace require with dynamic file reading
|
|
50
|
+
const pkg = JSON.parse(fs_1.default.readFileSync(path_1.default.join(__dirname, '../../package.json'), 'utf8'));
|
|
51
|
+
const CONFIG_FILE = path_1.default.join(os_1.default.homedir(), '.gridapprc');
|
|
52
|
+
let packageVersion = '1.0.0';
|
|
53
|
+
const getPackageVersion = () => packageVersion;
|
|
54
|
+
exports.getPackageVersion = getPackageVersion;
|
|
55
|
+
try {
|
|
56
|
+
packageVersion = pkg.version;
|
|
57
|
+
}
|
|
58
|
+
catch (e) {
|
|
59
|
+
console.error(chalk_1.default.dim('Cannot read package version'));
|
|
60
|
+
}
|
|
61
|
+
const getLatestVersion = async () => {
|
|
62
|
+
try {
|
|
63
|
+
const r = await axios.get('https://registry.npmjs.cf/@phystack/cli');
|
|
64
|
+
const { versions } = r.data;
|
|
65
|
+
return Object.keys(versions).pop();
|
|
66
|
+
}
|
|
67
|
+
catch (e) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
exports.getLatestVersion = getLatestVersion;
|
|
72
|
+
const banner = () => console.log((0, boxen_1.default)(`${chalk_1.default.bold(chalk_1.default.green('Phygrid CLI'))} v${packageVersion}\n${chalk_1.default.dim(`powered by ${chalk_1.default.bold('Phygrid, an Ombori Company')}`)} 🔥`, {
|
|
73
|
+
padding: 1,
|
|
74
|
+
margin: 1,
|
|
75
|
+
dimBorder: true,
|
|
76
|
+
borderStyle: "classic" /* BorderStyle.Classic */,
|
|
77
|
+
align: 'center',
|
|
78
|
+
}));
|
|
79
|
+
exports.banner = banner;
|
|
80
|
+
const loadConfig = () => {
|
|
81
|
+
try {
|
|
82
|
+
if (fs_1.default.existsSync(CONFIG_FILE)) {
|
|
83
|
+
fs_1.default.readFileSync(CONFIG_FILE)
|
|
84
|
+
.toString()
|
|
85
|
+
.trim()
|
|
86
|
+
.split('\n')
|
|
87
|
+
.filter((line) => !/^#/.test(line))
|
|
88
|
+
.map((line) => line.trim())
|
|
89
|
+
.filter((line) => line.length)
|
|
90
|
+
.forEach((line) => {
|
|
91
|
+
const [name, value] = line.split('=');
|
|
92
|
+
if (name && value) {
|
|
93
|
+
process.env[name] = value;
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch (e) {
|
|
99
|
+
console.error(chalk_1.default.red('Cannot parse config file'));
|
|
100
|
+
throw e;
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
exports.loadConfig = loadConfig;
|
|
104
|
+
const openStream = (deviceStreamSession) => {
|
|
105
|
+
console.log(chalk_1.default.dim('Opening stream'));
|
|
106
|
+
const { auth, url, isPhyos } = deviceStreamSession;
|
|
107
|
+
const httpsProxyAgent = (0, proxy_1.getHttpsProxyAgent)();
|
|
108
|
+
const options = {
|
|
109
|
+
headers: { Authorization: `Bearer ${auth}` },
|
|
110
|
+
...(httpsProxyAgent && { agent: httpsProxyAgent }),
|
|
111
|
+
};
|
|
112
|
+
return {
|
|
113
|
+
stream: (0, websocket_stream_1.default)(url, options),
|
|
114
|
+
isPhyos,
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
exports.openStream = openStream;
|
|
118
|
+
const fieldLength = (data, field) => data
|
|
119
|
+
.filter((device) => device[field])
|
|
120
|
+
.reduce((max, device) => Math.max(max, `${device[field]}`.length), 0);
|
|
121
|
+
exports.fieldLength = fieldLength;
|
|
122
|
+
const printTable = ({ data, fields, sort = 'name', search, }) => {
|
|
123
|
+
const sortedAndFiltered = data
|
|
124
|
+
.sort(({ [sort]: A = '' }, { [sort]: B = '' }) =>
|
|
125
|
+
// eslint-disable-next-line
|
|
126
|
+
A < B ? -1 : A > B ? 1 : 0)
|
|
127
|
+
.filter((entry) => {
|
|
128
|
+
if (!search)
|
|
129
|
+
return true;
|
|
130
|
+
return Object.values(entry).some((value) => String(value).indexOf(search) >= 0);
|
|
131
|
+
});
|
|
132
|
+
const lengths = fields.map((field) => (0, exports.fieldLength)(sortedAndFiltered, field) + 1);
|
|
133
|
+
sortedAndFiltered.forEach((entry) => console.log(...fields.map((field, i) => `${entry[field] || '-'}`.padEnd(lengths[i], ' '))));
|
|
134
|
+
};
|
|
135
|
+
exports.printTable = printTable;
|
|
136
|
+
const handleError = (cb) => async (...args) => {
|
|
137
|
+
try {
|
|
138
|
+
const result = (await cb(...args));
|
|
139
|
+
return result;
|
|
140
|
+
}
|
|
141
|
+
catch (e) {
|
|
142
|
+
console.error(chalk_1.default.red(e.toString()));
|
|
143
|
+
return process.exit(1);
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
exports.handleError = handleError;
|
|
147
|
+
const compareVersions = (a, b) => {
|
|
148
|
+
const va = a.split('.');
|
|
149
|
+
const vb = b.split('.');
|
|
150
|
+
while (va.length) {
|
|
151
|
+
const vera = parseInt(va.shift(), 10);
|
|
152
|
+
const verb = parseInt(vb.shift(), 10);
|
|
153
|
+
if (vera > verb)
|
|
154
|
+
return 1;
|
|
155
|
+
if (vera < verb)
|
|
156
|
+
return -1;
|
|
157
|
+
}
|
|
158
|
+
return 0;
|
|
159
|
+
};
|
|
160
|
+
exports.compareVersions = compareVersions;
|
|
161
|
+
const kebabCase = (data) => {
|
|
162
|
+
return data
|
|
163
|
+
.toLowerCase()
|
|
164
|
+
.replace(/[^a-zA-Z0-9_.-]/g, '-')
|
|
165
|
+
.replace(/[-]+/g, '-')
|
|
166
|
+
.replace(/[-]$/g, '')
|
|
167
|
+
.replace(/^[-]/g, '');
|
|
168
|
+
};
|
|
169
|
+
exports.kebabCase = kebabCase;
|
|
170
|
+
exports.default = {
|
|
171
|
+
kebabCase: exports.kebabCase,
|
|
172
|
+
fieldLength: exports.fieldLength,
|
|
173
|
+
getPackageVersion: exports.getPackageVersion,
|
|
174
|
+
getLatestVersion: exports.getLatestVersion,
|
|
175
|
+
banner: exports.banner,
|
|
176
|
+
printTable: exports.printTable,
|
|
177
|
+
handleError: exports.handleError,
|
|
178
|
+
openStream: exports.openStream,
|
|
179
|
+
};
|
|
180
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getModules = getModules;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const child_process_1 = __importDefault(require("child_process"));
|
|
9
|
+
function getModules() {
|
|
10
|
+
if (!fs_1.default.existsSync('./package.json'))
|
|
11
|
+
return false;
|
|
12
|
+
if (!fs_1.default.existsSync('./deployment.template.json'))
|
|
13
|
+
return false;
|
|
14
|
+
const text = fs_1.default.readFileSync('./package.json').toString();
|
|
15
|
+
let data;
|
|
16
|
+
try {
|
|
17
|
+
data = JSON.parse(text);
|
|
18
|
+
}
|
|
19
|
+
catch (e) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
if (!data || !data.scripts || !data.scripts.modules) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
const modulesCmd = data.scripts.modules;
|
|
26
|
+
let result;
|
|
27
|
+
try {
|
|
28
|
+
result = JSON.parse(child_process_1.default.execSync(modulesCmd).toString());
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
exports.default = { getModules };
|
|
36
|
+
//# sourceMappingURL=modules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modules.js","sourceRoot":"","sources":["../../src/utils/modules.ts"],"names":[],"mappings":";;;;;AAGA,gCAyBC;AA5BD,4CAAoB;AACpB,kEAA+B;AAE/B,SAAgB,UAAU;IACxB,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC;QAAE,OAAO,KAAK,CAAC;IACnD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,4BAA4B,CAAC;QAAE,OAAO,KAAK,CAAC;IAE/D,MAAM,IAAI,GAAG,YAAE,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC1D,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IACxC,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,kBAAe,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.selectOrganization = selectOrganization;
|
|
7
|
+
exports.getOrganizationBySlug = getOrganizationBySlug;
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
10
|
+
const inquirer_autocomplete_prompt_1 = __importDefault(require("inquirer-autocomplete-prompt"));
|
|
11
|
+
const fuzzy_1 = __importDefault(require("fuzzy"));
|
|
12
|
+
const admin_api_1 = require("../services/admin-api");
|
|
13
|
+
const with_spinner_1 = __importDefault(require("./with-spinner"));
|
|
14
|
+
const tenant_storage_1 = require("./tenant-storage");
|
|
15
|
+
// Register the autocomplete prompt
|
|
16
|
+
inquirer_1.default.registerPrompt('autocomplete', inquirer_autocomplete_prompt_1.default);
|
|
17
|
+
/**
|
|
18
|
+
* Prompt user to select an organization
|
|
19
|
+
* @param message Optional custom message for the selection prompt
|
|
20
|
+
* @param forcePicker If true, will always show the picker even if a tenant is already saved
|
|
21
|
+
* @returns Selected organization details
|
|
22
|
+
*/
|
|
23
|
+
async function selectOrganization(message = 'Select an organization:', forcePicker = false) {
|
|
24
|
+
// If not forcing the picker and we have a saved tenant, use it
|
|
25
|
+
if (!forcePicker && (await (0, tenant_storage_1.hasTenant)())) {
|
|
26
|
+
const tenant = await (0, tenant_storage_1.getTenant)();
|
|
27
|
+
if (tenant) {
|
|
28
|
+
return tenant;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const organizationList = [
|
|
32
|
+
{
|
|
33
|
+
type: 'autocomplete',
|
|
34
|
+
name: 'organizationLabel',
|
|
35
|
+
message,
|
|
36
|
+
source: undefined,
|
|
37
|
+
},
|
|
38
|
+
];
|
|
39
|
+
try {
|
|
40
|
+
const organizations = await (0, with_spinner_1.default)((0, admin_api_1.adminApi)().organizations.listOrganizations, 'Fetching organization list. Please wait...');
|
|
41
|
+
if (!organizations || organizations.length === 0) {
|
|
42
|
+
console.log(chalk_1.default.yellow('No organizations found. Please login first.'));
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
const mappedOrganizations = organizations.map((org) => ({
|
|
46
|
+
name: org.displayName,
|
|
47
|
+
value: org.organizationName,
|
|
48
|
+
id: org.id,
|
|
49
|
+
phyhubUrl: org.phyhubUrl,
|
|
50
|
+
}));
|
|
51
|
+
organizationList[0].source = (answers, input = '') => {
|
|
52
|
+
return new Promise((resolve) => {
|
|
53
|
+
const filtered = fuzzy_1.default.filter(input || '', mappedOrganizations, {
|
|
54
|
+
extract: (entry) => `${entry.name} (${entry.value})`,
|
|
55
|
+
});
|
|
56
|
+
const organizationLabels = filtered.map((entry) => `${entry.original.name} (${entry.original.value})`);
|
|
57
|
+
const updatedAnswers = answers;
|
|
58
|
+
updatedAnswers.filtered = filtered;
|
|
59
|
+
resolve(organizationLabels);
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
const { filtered, organizationLabel } = (await inquirer_1.default.prompt(organizationList));
|
|
63
|
+
const selectedOrg = filtered.find((entry) => entry.string === organizationLabel);
|
|
64
|
+
if (!selectedOrg) {
|
|
65
|
+
console.log(chalk_1.default.yellow('No organization selected'));
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
const tenant = {
|
|
69
|
+
id: selectedOrg.original.id,
|
|
70
|
+
slug: selectedOrg.original.value,
|
|
71
|
+
displayName: selectedOrg.original.name,
|
|
72
|
+
phyhubUrl: selectedOrg.original.phyhubUrl,
|
|
73
|
+
};
|
|
74
|
+
// Save the selected tenant for future use
|
|
75
|
+
await (0, tenant_storage_1.saveTenant)(tenant);
|
|
76
|
+
return tenant;
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
console.error(chalk_1.default.red(`Error selecting organization: ${error.message}`));
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Get organization by slug without prompting
|
|
85
|
+
* @param organizationSlug Organization slug to find
|
|
86
|
+
* @returns Organization details or null if not found
|
|
87
|
+
*/
|
|
88
|
+
async function getOrganizationBySlug(organizationSlug) {
|
|
89
|
+
try {
|
|
90
|
+
const organizations = await (0, admin_api_1.adminApi)().organizations.listOrganizations();
|
|
91
|
+
const foundOrg = organizations.find((org) => org.organizationName === organizationSlug);
|
|
92
|
+
if (!foundOrg) {
|
|
93
|
+
console.log(chalk_1.default.yellow(`Organization ${organizationSlug} not found`));
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
id: foundOrg.id,
|
|
98
|
+
slug: foundOrg.organizationName,
|
|
99
|
+
displayName: foundOrg.displayName,
|
|
100
|
+
phyhubUrl: foundOrg.phyhubUrl,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
console.error(chalk_1.default.red(`Error finding organization: ${error.message}`));
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=org-selector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-selector.js","sourceRoot":"","sources":["../../src/utils/org-selector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getAxiosInstanceWithProxy = exports.getHttpsProxyAgent = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const https_proxy_agent_1 = require("https-proxy-agent");
|
|
9
|
+
const proxyUrl = process.env.HTTPS_PROXY || '';
|
|
10
|
+
const getHttpsProxyAgent = () => {
|
|
11
|
+
if (proxyUrl) {
|
|
12
|
+
return new https_proxy_agent_1.HttpsProxyAgent(proxyUrl);
|
|
13
|
+
}
|
|
14
|
+
return null;
|
|
15
|
+
};
|
|
16
|
+
exports.getHttpsProxyAgent = getHttpsProxyAgent;
|
|
17
|
+
const getAxiosInstanceWithProxy = (config) => {
|
|
18
|
+
const httpsProxyAgent = (0, exports.getHttpsProxyAgent)();
|
|
19
|
+
if (httpsProxyAgent) {
|
|
20
|
+
const axiosInstance = axios_1.default.create({
|
|
21
|
+
...config,
|
|
22
|
+
proxy: false,
|
|
23
|
+
httpsAgent: httpsProxyAgent,
|
|
24
|
+
});
|
|
25
|
+
return axiosInstance;
|
|
26
|
+
}
|
|
27
|
+
return axios_1.default.create(config);
|
|
28
|
+
};
|
|
29
|
+
exports.getAxiosInstanceWithProxy = getAxiosInstanceWithProxy;
|
|
30
|
+
exports.default = exports.getAxiosInstanceWithProxy;
|
|
31
|
+
//# sourceMappingURL=proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/utils/proxy.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAkD;AAClD,yDAAoD;AAEpD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;AAExC,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,IAAI,mCAAe,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AANW,QAAA,kBAAkB,sBAM7B;AAEK,MAAM,yBAAyB,GAAG,CACvC,MAA4C,EAC5C,EAAE;IACF,MAAM,eAAe,GAAG,IAAA,0BAAkB,GAAE,CAAC;IAE7C,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,aAAa,GAAG,eAAK,CAAC,MAAM,CAAC;YACjC,GAAG,MAAM;YACT,KAAK,EAAE,KAAK;YACZ,UAAU,EAAE,eAAe;SAC5B,CAAC,CAAC;QAEH,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,OAAO,eAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC,CAAC;AAhBW,QAAA,yBAAyB,6BAgBpC;AAEF,kBAAe,iCAAyB,CAAC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.isCredentialHashValid = exports.getValidationCache = exports.saveValidationCache = exports.generateCredentialHash = exports.getRegistryCredentials = exports.saveRegistryCredentials = void 0;
|
|
7
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const os_1 = __importDefault(require("os"));
|
|
10
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
11
|
+
const CONFIG_DIR = path_1.default.join(os_1.default.homedir(), '.config', 'phygrid-cli');
|
|
12
|
+
const CREDENTIALS_FILE = path_1.default.join(CONFIG_DIR, 'registry-credentials.json');
|
|
13
|
+
const VALIDATION_CACHE_FILE = path_1.default.join(CONFIG_DIR, 'credential-validation-cache.json');
|
|
14
|
+
const VALIDATION_CACHE_TTL = 7 * 24 * 60 * 60 * 1000; // 7 days in milliseconds
|
|
15
|
+
const saveRegistryCredentials = async (registry, credentials) => {
|
|
16
|
+
try {
|
|
17
|
+
// Ensure config directory exists
|
|
18
|
+
await fs_extra_1.default.ensureDir(CONFIG_DIR);
|
|
19
|
+
// Read existing credentials or create empty object
|
|
20
|
+
let store = {};
|
|
21
|
+
if (await fs_extra_1.default.pathExists(CREDENTIALS_FILE)) {
|
|
22
|
+
const data = await fs_extra_1.default.readFile(CREDENTIALS_FILE, 'utf8');
|
|
23
|
+
store = JSON.parse(data);
|
|
24
|
+
}
|
|
25
|
+
// Update credentials for the registry
|
|
26
|
+
store[registry] = credentials;
|
|
27
|
+
// Save updated credentials
|
|
28
|
+
await fs_extra_1.default.writeFile(CREDENTIALS_FILE, JSON.stringify(store, null, 2));
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
console.error('Failed to save registry credentials:', error);
|
|
32
|
+
throw error;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
exports.saveRegistryCredentials = saveRegistryCredentials;
|
|
36
|
+
const getRegistryCredentials = async (registry) => {
|
|
37
|
+
try {
|
|
38
|
+
if (await fs_extra_1.default.pathExists(CREDENTIALS_FILE)) {
|
|
39
|
+
const data = await fs_extra_1.default.readFile(CREDENTIALS_FILE, 'utf8');
|
|
40
|
+
const store = JSON.parse(data);
|
|
41
|
+
return store[registry] || null;
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.error('Failed to read registry credentials:', error);
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
exports.getRegistryCredentials = getRegistryCredentials;
|
|
51
|
+
const generateCredentialHash = (registry, pullUsername, pullPassword, pushUsername, pushPassword) => {
|
|
52
|
+
const data = `${registry}|pull:${pullUsername}:${pullPassword}|push:${pushUsername}:${pushPassword}`;
|
|
53
|
+
return crypto_1.default.createHash('sha256').update(data).digest('hex');
|
|
54
|
+
};
|
|
55
|
+
exports.generateCredentialHash = generateCredentialHash;
|
|
56
|
+
const saveValidationCache = async (registry, hash, pullUsername, pushUsername) => {
|
|
57
|
+
try {
|
|
58
|
+
await fs_extra_1.default.ensureDir(CONFIG_DIR);
|
|
59
|
+
let store = {};
|
|
60
|
+
if (await fs_extra_1.default.pathExists(VALIDATION_CACHE_FILE)) {
|
|
61
|
+
const data = await fs_extra_1.default.readFile(VALIDATION_CACHE_FILE, 'utf8');
|
|
62
|
+
store = JSON.parse(data);
|
|
63
|
+
}
|
|
64
|
+
store[registry] = {
|
|
65
|
+
hash,
|
|
66
|
+
timestamp: Date.now(),
|
|
67
|
+
registry,
|
|
68
|
+
pullUsername,
|
|
69
|
+
pushUsername,
|
|
70
|
+
};
|
|
71
|
+
await fs_extra_1.default.writeFile(VALIDATION_CACHE_FILE, JSON.stringify(store, null, 2));
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
console.error('Failed to save validation cache:', error);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
exports.saveValidationCache = saveValidationCache;
|
|
78
|
+
const getValidationCache = async (registry) => {
|
|
79
|
+
try {
|
|
80
|
+
if (await fs_extra_1.default.pathExists(VALIDATION_CACHE_FILE)) {
|
|
81
|
+
const data = await fs_extra_1.default.readFile(VALIDATION_CACHE_FILE, 'utf8');
|
|
82
|
+
const store = JSON.parse(data);
|
|
83
|
+
const cache = store[registry];
|
|
84
|
+
if (cache) {
|
|
85
|
+
const age = Date.now() - cache.timestamp;
|
|
86
|
+
if (age > VALIDATION_CACHE_TTL) {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
return cache;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
console.error('Failed to read validation cache:', error);
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
exports.getValidationCache = getValidationCache;
|
|
100
|
+
const isCredentialHashValid = async (registry, pullUsername, pullPassword, pushUsername, pushPassword) => {
|
|
101
|
+
const envHash = process.env.PHYGRID_REGISTRY_VALIDATION_HASH;
|
|
102
|
+
const currentHash = (0, exports.generateCredentialHash)(registry, pullUsername, pullPassword, pushUsername, pushPassword);
|
|
103
|
+
if (envHash) {
|
|
104
|
+
return envHash === currentHash;
|
|
105
|
+
}
|
|
106
|
+
const cache = await (0, exports.getValidationCache)(registry);
|
|
107
|
+
if (cache && cache.hash === currentHash) {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
return false;
|
|
111
|
+
};
|
|
112
|
+
exports.isCredentialHashValid = isCredentialHashValid;
|
|
113
|
+
//# sourceMappingURL=registry-credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry-credentials.js","sourceRoot":"","sources":["../../src/utils/registry-credentials.ts"],"names":[],"mappings":"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"}
|