@guanjinke/artifact-client 1.18.0 → 1.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/artifact-client.d.ts +3 -1
- package/dist/artifact-client.d.ts.map +1 -1
- package/dist/artifact-client.js +6 -1
- package/dist/artifact-client.js.map +1 -1
- package/dist/cli/config-manager.d.ts +3 -0
- package/dist/cli/config-manager.d.ts.map +1 -1
- package/dist/cli/config-manager.js +44 -0
- package/dist/cli/config-manager.js.map +1 -1
- package/dist/cli/environment.d.ts.map +1 -1
- package/dist/cli/environment.js +116 -0
- package/dist/cli/environment.js.map +1 -1
- package/dist/cli/jdbc-service-client.d.ts +9 -0
- package/dist/cli/jdbc-service-client.d.ts.map +1 -0
- package/dist/cli/jdbc-service-client.js +19 -0
- package/dist/cli/jdbc-service-client.js.map +1 -0
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +43 -0
- package/dist/cli/setup.js.map +1 -1
- package/dist/environment/driver-discovery.d.ts +3 -0
- package/dist/environment/driver-discovery.d.ts.map +1 -0
- package/dist/environment/driver-discovery.js +163 -0
- package/dist/environment/driver-discovery.js.map +1 -0
- package/dist/environment/driver-oss.d.ts +14 -0
- package/dist/environment/driver-oss.d.ts.map +1 -0
- package/dist/environment/driver-oss.js +144 -0
- package/dist/environment/driver-oss.js.map +1 -0
- package/dist/environment/drivers.d.ts +33 -0
- package/dist/environment/drivers.d.ts.map +1 -0
- package/dist/environment/drivers.js +274 -0
- package/dist/environment/drivers.js.map +1 -0
- package/dist/environment/hana-archive.d.ts +9 -0
- package/dist/environment/hana-archive.d.ts.map +1 -0
- package/dist/environment/hana-archive.js +181 -0
- package/dist/environment/hana-archive.js.map +1 -0
- package/dist/environment/hana.d.ts +58 -0
- package/dist/environment/hana.d.ts.map +1 -0
- package/dist/environment/hana.js +238 -0
- package/dist/environment/hana.js.map +1 -0
- package/dist/environment/jdbc-connection-test.d.ts +25 -0
- package/dist/environment/jdbc-connection-test.d.ts.map +1 -0
- package/dist/environment/jdbc-connection-test.js +146 -0
- package/dist/environment/jdbc-connection-test.js.map +1 -0
- package/dist/environment/jdbc-diagnostics.d.ts +13 -0
- package/dist/environment/jdbc-diagnostics.d.ts.map +1 -0
- package/dist/environment/jdbc-diagnostics.js +108 -0
- package/dist/environment/jdbc-diagnostics.js.map +1 -0
- package/dist/environment/jdbc-service.d.ts +91 -0
- package/dist/environment/jdbc-service.d.ts.map +1 -0
- package/dist/environment/jdbc-service.js +375 -0
- package/dist/environment/jdbc-service.js.map +1 -0
- package/dist/environment/jdbc.d.ts +28 -0
- package/dist/environment/jdbc.d.ts.map +1 -0
- package/dist/environment/jdbc.js +164 -0
- package/dist/environment/jdbc.js.map +1 -0
- package/dist/environment/manager.d.ts +10 -0
- package/dist/environment/manager.d.ts.map +1 -1
- package/dist/environment/manager.js +32 -0
- package/dist/environment/manager.js.map +1 -1
- package/dist/environment/registry.d.ts +14 -0
- package/dist/environment/registry.d.ts.map +1 -1
- package/dist/environment/registry.js +7 -0
- package/dist/environment/registry.js.map +1 -1
- package/dist/environment/site-init.d.ts +16 -0
- package/dist/environment/site-init.d.ts.map +1 -0
- package/dist/environment/site-init.js +108 -0
- package/dist/environment/site-init.js.map +1 -0
- package/dist/environment/update.d.ts.map +1 -1
- package/dist/environment/update.js +607 -602
- package/dist/environment/update.js.map +1 -1
- package/dist/providers/oss-provider.d.ts +6 -2
- package/dist/providers/oss-provider.d.ts.map +1 -1
- package/dist/providers/oss-provider.js +37 -7
- package/dist/providers/oss-provider.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,163 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.discoverDriverSources = discoverDriverSources;
|
|
37
|
+
const fs = __importStar(require("fs/promises"));
|
|
38
|
+
const os = __importStar(require("os"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
const safeName = (name) => /^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/.test(name) && !/[. ]$/.test(name) && !/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\.|$)/i.test(name);
|
|
41
|
+
async function checkPath(directory) {
|
|
42
|
+
const absolute = path.resolve(directory);
|
|
43
|
+
const root = path.parse(absolute).root;
|
|
44
|
+
let current = root;
|
|
45
|
+
for (const component of absolute.slice(root.length).split(path.sep).filter(Boolean)) {
|
|
46
|
+
current = path.join(current, component);
|
|
47
|
+
const stat = await fs.lstat(current);
|
|
48
|
+
if (stat.isSymbolicLink())
|
|
49
|
+
throw new Error('Driver library path contains a link.');
|
|
50
|
+
if (!stat.isDirectory())
|
|
51
|
+
throw new Error('Driver library path is not a directory.');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/** Discover an unambiguous local driver package without changing its contents or configuration. */
|
|
55
|
+
async function discoverDriverSources(library, driverId, version) {
|
|
56
|
+
if (typeof library !== 'string' || library.includes('\0') || typeof driverId !== 'string' || !safeName(driverId))
|
|
57
|
+
throw new Error('Invalid driver library or id.');
|
|
58
|
+
if (version !== undefined && (typeof version !== 'string' || !/^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$/.test(version) || /[. ]$/.test(version)))
|
|
59
|
+
throw new Error('Invalid driver version.');
|
|
60
|
+
const base = path.resolve(library || path.join(os.homedir(), 'Downloads', 'JDBC Driver'));
|
|
61
|
+
await checkPath(base);
|
|
62
|
+
const expected = driverId.toLowerCase() === 'dm' ? 'dm(达梦)' : driverId.toLowerCase();
|
|
63
|
+
const matches = (await fs.readdir(base)).filter(name => name.toLowerCase() === expected);
|
|
64
|
+
if (matches.length !== 1)
|
|
65
|
+
throw new Error('Driver directory missing or ambiguous.');
|
|
66
|
+
const selected = path.join(base, matches[0]);
|
|
67
|
+
await checkPath(selected);
|
|
68
|
+
const entries = await fs.readdir(selected);
|
|
69
|
+
const files = [];
|
|
70
|
+
const directories = [];
|
|
71
|
+
let ignoredFiles = 0;
|
|
72
|
+
for (const name of entries) {
|
|
73
|
+
const item = path.join(selected, name);
|
|
74
|
+
const stat = await fs.lstat(item);
|
|
75
|
+
if (stat.isSymbolicLink())
|
|
76
|
+
throw new Error('Driver package contains a link.');
|
|
77
|
+
if (stat.isDirectory()) {
|
|
78
|
+
if (!safeName(name))
|
|
79
|
+
throw new Error('Driver package contains an invalid directory name.');
|
|
80
|
+
directories.push(name);
|
|
81
|
+
}
|
|
82
|
+
else if (stat.isFile()) {
|
|
83
|
+
if (/\.jar$/i.test(name)) {
|
|
84
|
+
if (!safeName(name))
|
|
85
|
+
throw new Error('Driver package contains an invalid JAR name.');
|
|
86
|
+
files.push(name);
|
|
87
|
+
}
|
|
88
|
+
else
|
|
89
|
+
ignoredFiles++;
|
|
90
|
+
}
|
|
91
|
+
else
|
|
92
|
+
throw new Error('Driver package contains a special file.');
|
|
93
|
+
}
|
|
94
|
+
if (directories.length && files.length)
|
|
95
|
+
throw new Error('Driver versions or packages are ambiguous; select a specific package explicitly.');
|
|
96
|
+
if (directories.length && version !== undefined) {
|
|
97
|
+
const wanted = version.toLowerCase();
|
|
98
|
+
const matched = directories.filter(name => name.toLowerCase() === wanted || name.toLowerCase() === `${driverId.toLowerCase()}-${wanted}`);
|
|
99
|
+
if (matched.length !== 1)
|
|
100
|
+
throw new Error('Driver version missing or ambiguous.');
|
|
101
|
+
directories.splice(0, directories.length, matched[0]);
|
|
102
|
+
}
|
|
103
|
+
else if (directories.length > 1)
|
|
104
|
+
throw new Error('Driver versions or packages are ambiguous; select a specific package explicitly.');
|
|
105
|
+
if (!directories.length && version !== undefined) {
|
|
106
|
+
const wanted = version.toLowerCase();
|
|
107
|
+
const matched = files.filter(name => {
|
|
108
|
+
const match = /[-_]v?(\d+(?:[._-]\d+)+)\.jar$/i.exec(name);
|
|
109
|
+
return match?.[1].toLowerCase() === wanted;
|
|
110
|
+
});
|
|
111
|
+
if (matched.length !== 1)
|
|
112
|
+
throw new Error('Driver version missing or ambiguous.');
|
|
113
|
+
return [path.join(selected, matched[0])];
|
|
114
|
+
}
|
|
115
|
+
const versions = new Set();
|
|
116
|
+
for (const name of files) {
|
|
117
|
+
const match = /^(.*?)[-_]v?\d+(?:[._-]\d+)+(?:[^/]*)\.jar$/i.exec(name);
|
|
118
|
+
if (match) {
|
|
119
|
+
const key = match[1].toLowerCase();
|
|
120
|
+
if (versions.has(key))
|
|
121
|
+
throw new Error('Driver versions are ambiguous; select a specific package explicitly.');
|
|
122
|
+
versions.add(key);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (directories.length) {
|
|
126
|
+
if (ignoredFiles && version === undefined)
|
|
127
|
+
throw new Error('Nested driver package contains non-JAR files; select sources explicitly.');
|
|
128
|
+
let count = 0;
|
|
129
|
+
let jarCount = 0;
|
|
130
|
+
let bytes = 0;
|
|
131
|
+
const inspect = async (dir, depth) => {
|
|
132
|
+
if (depth > 32)
|
|
133
|
+
throw new Error('Driver package depth limit exceeded.');
|
|
134
|
+
for (const name of await fs.readdir(dir)) {
|
|
135
|
+
if (++count > 8192 || !safeName(name))
|
|
136
|
+
throw new Error('Driver package contains invalid or too many entries.');
|
|
137
|
+
const item = path.join(dir, name);
|
|
138
|
+
const stat = await fs.lstat(item);
|
|
139
|
+
if (stat.isSymbolicLink())
|
|
140
|
+
throw new Error('Driver package contains a link.');
|
|
141
|
+
if (stat.isDirectory())
|
|
142
|
+
await inspect(item, depth + 1);
|
|
143
|
+
else if (stat.isFile() && /\.jar$/i.test(name)) {
|
|
144
|
+
jarCount++;
|
|
145
|
+
bytes += stat.size;
|
|
146
|
+
if (bytes > 512 * 1024 * 1024)
|
|
147
|
+
throw new Error('Driver package size limit exceeded.');
|
|
148
|
+
}
|
|
149
|
+
else
|
|
150
|
+
throw new Error('Nested driver package contains non-JAR or special files; select sources explicitly.');
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
const item = path.join(selected, directories[0]);
|
|
154
|
+
await inspect(item, 1);
|
|
155
|
+
if (!jarCount)
|
|
156
|
+
throw new Error('Driver package is empty.');
|
|
157
|
+
return [item];
|
|
158
|
+
}
|
|
159
|
+
if (!files.length)
|
|
160
|
+
throw new Error('Driver package contains no JAR files.');
|
|
161
|
+
return files.sort().map(name => path.join(selected, name));
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=driver-discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"driver-discovery.js","sourceRoot":"","sources":["../../src/environment/driver-discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ArtifactClient } from '../artifact-client';
|
|
2
|
+
import { DriverDeployDependencies, DriverDeployReport } from './drivers';
|
|
3
|
+
type DriverClient = Pick<ArtifactClient, 'listArtifacts' | 'downloadArtifact'>;
|
|
4
|
+
export interface OssDriverOptions {
|
|
5
|
+
name: string;
|
|
6
|
+
driverId: string;
|
|
7
|
+
version: string;
|
|
8
|
+
archive?: string;
|
|
9
|
+
dryRun?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/** OSS repository access is the trust root; co-located hashes establish consistency, not authenticity. */
|
|
12
|
+
export declare function deployOssDrivers(options: OssDriverOptions, clientFactory: () => DriverClient, dependencies?: DriverDeployDependencies): Promise<DriverDeployReport>;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=driver-oss.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"driver-oss.d.ts","sourceRoot":"","sources":["../../src/environment/driver-oss.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAA2B,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAGlG,KAAK,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE,eAAe,GAAG,kBAAkB,CAAC,CAAC;AAC/E,MAAM,WAAW,gBAAgB;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAAE;AAU1H,0GAA0G;AAC1G,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,EAAE,YAAY,GAAE,wBAA6B,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA6D7K"}
|
|
@@ -0,0 +1,144 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.deployOssDrivers = deployOssDrivers;
|
|
37
|
+
const fs = __importStar(require("fs/promises"));
|
|
38
|
+
const fs_1 = require("fs");
|
|
39
|
+
const os = __importStar(require("os"));
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const crypto_1 = require("crypto");
|
|
42
|
+
const archive_1 = require("./archive");
|
|
43
|
+
const drivers_1 = require("./drivers");
|
|
44
|
+
const registry_1 = require("./registry");
|
|
45
|
+
const maxBytes = 512 * 1024 * 1024;
|
|
46
|
+
const safeSegment = (value) => typeof value === 'string' && /^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/.test(value) && !/[.]$/.test(value) && !/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\.|$)/i.test(value);
|
|
47
|
+
async function digest(file) {
|
|
48
|
+
const hash = (0, crypto_1.createHash)('sha256');
|
|
49
|
+
for await (const chunk of (0, fs_1.createReadStream)(file))
|
|
50
|
+
hash.update(chunk);
|
|
51
|
+
return hash.digest('hex');
|
|
52
|
+
}
|
|
53
|
+
/** OSS repository access is the trust root; co-located hashes establish consistency, not authenticity. */
|
|
54
|
+
async function deployOssDrivers(options, clientFactory, dependencies = {}) {
|
|
55
|
+
(0, registry_1.validateName)(options.name);
|
|
56
|
+
if (!safeSegment(options.driverId) || !safeSegment(options.version))
|
|
57
|
+
throw new Error('Invalid driver id or version.');
|
|
58
|
+
if (options.archive !== undefined && (!safeSegment(options.archive) || !options.archive.endsWith('.zip')))
|
|
59
|
+
throw new Error('Invalid driver archive selection.');
|
|
60
|
+
const client = clientFactory();
|
|
61
|
+
const driverId = options.driverId.toLowerCase();
|
|
62
|
+
const plugin = `wyn-jdbc-drivers/${driverId}`;
|
|
63
|
+
const artifacts = await client.listArtifacts(plugin, options.version);
|
|
64
|
+
const archives = artifacts.filter(item => typeof item.name === 'string' && safeSegment(item.name) && item.name.endsWith('.zip') && (options.archive === undefined || item.name === options.archive));
|
|
65
|
+
if (archives.length !== 1)
|
|
66
|
+
throw new Error(`Expected exactly one driver archive; found ${archives.length} (missing or ambiguous).`);
|
|
67
|
+
const archive = archives[0].name;
|
|
68
|
+
const manifestName = archive.slice(0, -4) + '.manifest.json';
|
|
69
|
+
if (artifacts.filter(item => item.name === manifestName).length !== 1)
|
|
70
|
+
throw new Error('Expected exactly one matching driver manifest.');
|
|
71
|
+
const workspace = await fs.mkdtemp(path.join(os.tmpdir(), 'afm-driver-oss-'));
|
|
72
|
+
try {
|
|
73
|
+
await client.downloadArtifact(plugin, options.version, manifestName, workspace, { maxBytes: 4 * 1024 * 1024 });
|
|
74
|
+
const manifestFile = path.join(workspace, manifestName);
|
|
75
|
+
const manifestStat = await fs.lstat(manifestFile);
|
|
76
|
+
if (!manifestStat.isFile() || manifestStat.isSymbolicLink() || manifestStat.size > 4 * 1024 * 1024)
|
|
77
|
+
throw new Error('Invalid driver manifest.');
|
|
78
|
+
let manifest;
|
|
79
|
+
try {
|
|
80
|
+
manifest = JSON.parse(await fs.readFile(manifestFile, 'utf8'));
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
throw new Error('Invalid driver manifest.');
|
|
84
|
+
}
|
|
85
|
+
if (!manifest || manifest.provider !== driverId || manifest.version !== options.version || manifest.archive !== archive || !/^[a-f0-9]{64}$/i.test(manifest.archive_sha256) || !Array.isArray(manifest.files) || !manifest.files.length || manifest.files.length > 4096)
|
|
86
|
+
throw new Error('Invalid driver manifest.');
|
|
87
|
+
const expected = new Map();
|
|
88
|
+
let total = 0;
|
|
89
|
+
for (const item of manifest.files) {
|
|
90
|
+
if (!item || typeof item.path !== 'string' || (0, archive_1.validateArchivePath)(item.path) !== item.path || item.path.endsWith('/') || !Number.isSafeInteger(item.size) || item.size < 0 || !/^[a-f0-9]{64}$/i.test(item.sha256))
|
|
91
|
+
throw new Error('Invalid driver manifest file.');
|
|
92
|
+
const key = item.path.toLowerCase();
|
|
93
|
+
if (expected.has(key) || (total += item.size) > maxBytes)
|
|
94
|
+
throw new Error('Duplicate or oversized driver manifest.');
|
|
95
|
+
expected.set(key, item);
|
|
96
|
+
}
|
|
97
|
+
await client.downloadArtifact(plugin, options.version, archive, workspace, { maxBytes });
|
|
98
|
+
const archiveFile = path.join(workspace, archive);
|
|
99
|
+
const archiveStat = await fs.lstat(archiveFile);
|
|
100
|
+
if (!archiveStat.isFile() || archiveStat.isSymbolicLink() || archiveStat.size > maxBytes)
|
|
101
|
+
throw new Error('Invalid driver archive.');
|
|
102
|
+
if (await digest(archiveFile) !== manifest.archive_sha256.toLowerCase())
|
|
103
|
+
throw new Error('Driver archive checksum mismatch.');
|
|
104
|
+
const extracted = path.join(workspace, 'extracted');
|
|
105
|
+
await (0, archive_1.extractArchive)(archiveFile, extracted, { maxEntries: 8192, maxBytes });
|
|
106
|
+
const found = new Set();
|
|
107
|
+
const jars = [];
|
|
108
|
+
async function visit(directory, prefix = '') {
|
|
109
|
+
for (const name of await fs.readdir(directory)) {
|
|
110
|
+
const relative = prefix ? `${prefix}/${name}` : name;
|
|
111
|
+
const file = path.join(directory, name);
|
|
112
|
+
const stat = await fs.lstat(file);
|
|
113
|
+
if (stat.isSymbolicLink())
|
|
114
|
+
throw new Error('Unexpected link in driver archive.');
|
|
115
|
+
if (stat.isDirectory()) {
|
|
116
|
+
await visit(file, relative);
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
const item = expected.get(relative.toLowerCase());
|
|
120
|
+
if (!stat.isFile() || !item || item.path !== relative || stat.size !== item.size || await digest(file) !== item.sha256.toLowerCase())
|
|
121
|
+
throw new Error('Driver manifest file mismatch.');
|
|
122
|
+
found.add(relative.toLowerCase());
|
|
123
|
+
if (/\.jar$/i.test(name))
|
|
124
|
+
jars.push(file);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
await visit(extracted);
|
|
128
|
+
if (found.size !== expected.size || !jars.length)
|
|
129
|
+
throw new Error('Driver manifest files missing or no JAR files.');
|
|
130
|
+
const jarNames = new Set();
|
|
131
|
+
for (const jar of jars) {
|
|
132
|
+
const name = path.basename(jar).toLowerCase();
|
|
133
|
+
if (jarNames.has(name))
|
|
134
|
+
throw new Error('Driver JAR names conflict after flattening.');
|
|
135
|
+
jarNames.add(name);
|
|
136
|
+
}
|
|
137
|
+
jars.sort();
|
|
138
|
+
return await (0, drivers_1.deployThirdPartyDrivers)({ name: options.name, driverId, files: jars, dryRun: options.dryRun, exclusiveJarSet: true }, dependencies);
|
|
139
|
+
}
|
|
140
|
+
finally {
|
|
141
|
+
await fs.rm(workspace, { recursive: true, force: true });
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=driver-oss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"driver-oss.js","sourceRoot":"","sources":["../../src/environment/driver-oss.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { EnvironmentRegistry } from './registry';
|
|
2
|
+
import { ProcessBackend } from './process';
|
|
3
|
+
/** Directory inputs contribute their contents relative to the directory. */
|
|
4
|
+
export interface DriverDeployOptions {
|
|
5
|
+
name: string;
|
|
6
|
+
driverId: string;
|
|
7
|
+
files: string[];
|
|
8
|
+
dryRun?: boolean;
|
|
9
|
+
preserveSourceDir?: boolean;
|
|
10
|
+
exclusiveJarSet?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface DriverDeployDependencies {
|
|
13
|
+
registry?: EnvironmentRegistry;
|
|
14
|
+
processes?: ProcessBackend;
|
|
15
|
+
}
|
|
16
|
+
export interface DriverDeployReport {
|
|
17
|
+
name: string;
|
|
18
|
+
driverId: string;
|
|
19
|
+
directory: string;
|
|
20
|
+
dryRun: boolean;
|
|
21
|
+
files: {
|
|
22
|
+
name: string;
|
|
23
|
+
status: 'installed' | 'unchanged' | 'would-install';
|
|
24
|
+
}[];
|
|
25
|
+
}
|
|
26
|
+
export declare class DriverDeployWriteError extends Error {
|
|
27
|
+
readonly installed: string[];
|
|
28
|
+
readonly failed: string;
|
|
29
|
+
constructor(installed: string[], failed: string);
|
|
30
|
+
}
|
|
31
|
+
/** Install files without replacing existing files. A write failure can leave partial results. */
|
|
32
|
+
export declare function deployThirdPartyDrivers(options: DriverDeployOptions, dependencies?: DriverDeployDependencies): Promise<DriverDeployReport>;
|
|
33
|
+
//# sourceMappingURL=drivers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drivers.d.ts","sourceRoot":"","sources":["../../src/environment/drivers.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,cAAc,EAAyB,MAAM,WAAW,CAAC;AAIlE,4EAA4E;AAC5E,MAAM,WAAW,mBAAmB;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CAAE;AACnK,MAAM,WAAW,wBAAwB;IAAG,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAAC,SAAS,CAAC,EAAE,cAAc,CAAC;CAAE;AACzG,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IACnE,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,eAAe,CAAA;KAAE,EAAE,CAAC;CAChF;AACD,qBAAa,sBAAuB,SAAQ,KAAK;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAA5C,SAAS,EAAE,MAAM,EAAE,EAAW,MAAM,EAAE,MAAM;CAIlE;AAoCD,iGAAiG;AACjG,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,mBAAmB,EAAE,YAAY,GAAE,wBAA6B,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAuHpJ"}
|