@terascope/scripts 2.20.0 → 2.20.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/dist/src/helpers/bump/index.js +1 -1
- package/dist/src/helpers/bump/index.js.map +1 -1
- package/dist/src/helpers/certs.d.ts +28 -0
- package/dist/src/helpers/certs.d.ts.map +1 -0
- package/dist/src/helpers/certs.js +267 -0
- package/dist/src/helpers/certs.js.map +1 -0
- package/dist/src/helpers/doc-builder/index.js +1 -1
- package/dist/src/helpers/doc-builder/index.js.map +1 -1
- package/dist/src/helpers/docker.d.ts +78 -0
- package/dist/src/helpers/docker.d.ts.map +1 -0
- package/dist/src/helpers/docker.js +395 -0
- package/dist/src/helpers/docker.js.map +1 -0
- package/dist/src/helpers/exec.d.ts +19 -0
- package/dist/src/helpers/exec.d.ts.map +1 -0
- package/dist/src/helpers/exec.js +81 -0
- package/dist/src/helpers/exec.js.map +1 -0
- package/dist/src/helpers/git.d.ts +4 -0
- package/dist/src/helpers/git.d.ts.map +1 -0
- package/dist/src/helpers/git.js +47 -0
- package/dist/src/helpers/git.js.map +1 -0
- package/dist/src/helpers/helm.d.ts +25 -0
- package/dist/src/helpers/helm.d.ts.map +1 -0
- package/dist/src/helpers/helm.js +297 -0
- package/dist/src/helpers/helm.js.map +1 -0
- package/dist/src/helpers/images/index.js +1 -1
- package/dist/src/helpers/images/index.js.map +1 -1
- package/dist/src/helpers/k8s-env/index.d.ts.map +1 -1
- package/dist/src/helpers/k8s-env/index.js +5 -2
- package/dist/src/helpers/k8s-env/index.js.map +1 -1
- package/dist/src/helpers/kubernetes.d.ts +10 -0
- package/dist/src/helpers/kubernetes.d.ts.map +1 -0
- package/dist/src/helpers/kubernetes.js +160 -0
- package/dist/src/helpers/kubernetes.js.map +1 -0
- package/dist/src/helpers/misc.d.ts +9 -5
- package/dist/src/helpers/misc.d.ts.map +1 -1
- package/dist/src/helpers/misc.js +66 -9
- package/dist/src/helpers/misc.js.map +1 -1
- package/dist/src/helpers/package-manager.d.ts +18 -0
- package/dist/src/helpers/package-manager.d.ts.map +1 -0
- package/dist/src/helpers/package-manager.js +152 -0
- package/dist/src/helpers/package-manager.js.map +1 -0
- package/dist/src/helpers/packages.js +1 -1
- package/dist/src/helpers/packages.js.map +1 -1
- package/dist/src/helpers/publish/index.d.ts.map +1 -1
- package/dist/src/helpers/publish/index.js +2 -1
- package/dist/src/helpers/publish/index.js.map +1 -1
- package/dist/src/helpers/publish/utils.d.ts.map +1 -1
- package/dist/src/helpers/publish/utils.js +2 -1
- package/dist/src/helpers/publish/utils.js.map +1 -1
- package/dist/src/helpers/sync/utils.js +1 -1
- package/dist/src/helpers/sync/utils.js.map +1 -1
- package/dist/src/helpers/test-runner/index.d.ts.map +1 -1
- package/dist/src/helpers/test-runner/index.js +5 -1
- package/dist/src/helpers/test-runner/index.js.map +1 -1
- package/dist/src/helpers/test-runner/services.d.ts.map +1 -1
- package/dist/src/helpers/test-runner/services.js +11 -5
- package/dist/src/helpers/test-runner/services.js.map +1 -1
- package/dist/src/helpers/test-runner/utils.d.ts +1 -1
- package/dist/src/helpers/test-runner/utils.d.ts.map +1 -1
- package/dist/src/helpers/test-runner/utils.js +3 -2
- package/dist/src/helpers/test-runner/utils.js.map +1 -1
- package/dist/src/index.d.ts +7 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +7 -1
- package/dist/src/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/src/helpers/scripts.d.ts +0 -174
- package/dist/src/helpers/scripts.d.ts.map +0 -1
- package/dist/src/helpers/scripts.js +0 -1404
- package/dist/src/helpers/scripts.js.map +0 -1
|
@@ -4,7 +4,7 @@ import { listPackages, isMainPackage, updatePkgJSON, bumpHelmChart } from '../pa
|
|
|
4
4
|
import { getRootInfo, writeIfChanged } from '../misc.js';
|
|
5
5
|
import { bumpPackagesList, getPackagesToBump, getBumpCommitMessages, bumpVersion } from './utils.js';
|
|
6
6
|
import signale from '../signale.js';
|
|
7
|
-
import { setup } from '../
|
|
7
|
+
import { setup } from '../package-manager.js';
|
|
8
8
|
export async function bumpPackages(options, isAsset) {
|
|
9
9
|
const rootInfo = getRootInfo();
|
|
10
10
|
const _packages = listPackages();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/helpers/bump/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAK7B,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE3F,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EACH,gBAAgB,EAAE,iBAAiB,EAAE,qBAAqB,EAC1D,WAAW,EACd,MAAM,YAAY,CAAC;AACpB,OAAO,OAAO,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/helpers/bump/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export declare function readCertFromPath(certPath: string): string;
|
|
2
|
+
/**
|
|
3
|
+
* Extracts the admin distinguished name (DN) from a certificate.
|
|
4
|
+
*
|
|
5
|
+
* This function is designed specifically for mkcert generated certificates.
|
|
6
|
+
* It reads the certificate file (`opensearch-cert.pem`), extracts the `O`
|
|
7
|
+
* and `OU` fields from the subject, and formats them
|
|
8
|
+
* in the required order (`OU` first, `O` second) for OpenSearch authentication.
|
|
9
|
+
*
|
|
10
|
+
* @returns {string} The formatted (DN) string in the format:
|
|
11
|
+
* `"OU=example, O=example"`
|
|
12
|
+
* @throws {Error} If the certificate file is missing or invalid.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* const adminDn = getAdminDnFromCert();
|
|
17
|
+
* console.log(adminDn);
|
|
18
|
+
* // Output: "OU=anon@anon-MBP (Anon User),O=mkcert development certificate"
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare function getAdminDnFromCert(): string;
|
|
22
|
+
/**
|
|
23
|
+
* Generates CA certificates for encrypted services in the test environment if needed
|
|
24
|
+
*
|
|
25
|
+
* @throws {Error} If certificate generation fails.
|
|
26
|
+
*/
|
|
27
|
+
export declare function generateTestCaCerts(): Promise<void>;
|
|
28
|
+
//# sourceMappingURL=certs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"certs.d.ts","sourceRoot":"","sources":["../../../src/helpers/certs.ts"],"names":[],"mappings":"AAUA,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMzD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAiC3C;AAsLD;;;;GAIG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAmDzD"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { X509Certificate } from 'node:crypto';
|
|
4
|
+
import { execa } from 'execa';
|
|
5
|
+
import fse from 'fs-extra';
|
|
6
|
+
import { TSError } from '@terascope/core-utils';
|
|
7
|
+
import config from './config.js';
|
|
8
|
+
import signale from './signale.js';
|
|
9
|
+
// Helper function for reading the contents of a certificate by providing its path
|
|
10
|
+
export function readCertFromPath(certPath) {
|
|
11
|
+
if (!fs.existsSync(certPath)) {
|
|
12
|
+
throw new TSError(`Unable to find cert at: ${certPath}`);
|
|
13
|
+
}
|
|
14
|
+
return fs.readFileSync(certPath, 'utf8');
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Extracts the admin distinguished name (DN) from a certificate.
|
|
18
|
+
*
|
|
19
|
+
* This function is designed specifically for mkcert generated certificates.
|
|
20
|
+
* It reads the certificate file (`opensearch-cert.pem`), extracts the `O`
|
|
21
|
+
* and `OU` fields from the subject, and formats them
|
|
22
|
+
* in the required order (`OU` first, `O` second) for OpenSearch authentication.
|
|
23
|
+
*
|
|
24
|
+
* @returns {string} The formatted (DN) string in the format:
|
|
25
|
+
* `"OU=example, O=example"`
|
|
26
|
+
* @throws {Error} If the certificate file is missing or invalid.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* const adminDn = getAdminDnFromCert();
|
|
31
|
+
* console.log(adminDn);
|
|
32
|
+
* // Output: "OU=anon@anon-MBP (Anon User),O=mkcert development certificate"
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export function getAdminDnFromCert() {
|
|
36
|
+
let ca;
|
|
37
|
+
let organization;
|
|
38
|
+
let organizationalUnit;
|
|
39
|
+
try {
|
|
40
|
+
ca = readCertFromPath(path.join(config.CERT_PATH, 'opensearch-cert.pem'));
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
throw new TSError(`Failed to read certificate file (opensearch-cert.pem).\n${err}`);
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
const rootCA = new X509Certificate(ca);
|
|
47
|
+
// This splits the OU and O in two separate parts
|
|
48
|
+
const subjectParts = rootCA.subject.split('\n');
|
|
49
|
+
// Loop through the parts and assign based on prefix
|
|
50
|
+
// We don't want to assume the order that these are returned
|
|
51
|
+
for (const part of subjectParts) {
|
|
52
|
+
if (part.startsWith('OU=')) {
|
|
53
|
+
organizationalUnit = part;
|
|
54
|
+
}
|
|
55
|
+
else if (part.startsWith('O=')) {
|
|
56
|
+
organization = part;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
throw new TSError(`Failed to parse openSearch certificate. Make sure it's a valid X.509 certificate.\n${err}`);
|
|
62
|
+
}
|
|
63
|
+
if (!organizationalUnit || !organization) {
|
|
64
|
+
throw new TSError(`Certificate is missing required fields. Expected both 'OU' and 'O' fields.`);
|
|
65
|
+
}
|
|
66
|
+
// Return with specific format that opensearch expects
|
|
67
|
+
return `${organizationalUnit},${organization}`;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Writes the Opensearch internal_users.yml file with demo user credentials
|
|
71
|
+
* to the specified certificate directory. This file is required by Opensearch
|
|
72
|
+
* security configuration to define local user accounts.
|
|
73
|
+
*
|
|
74
|
+
* @param certDir - Absolute path to the directory where the file will be written
|
|
75
|
+
*/
|
|
76
|
+
function createInternalUsersFile(certDir) {
|
|
77
|
+
const content = `# This is the internal user database
|
|
78
|
+
# The hash value is a bcrypt hash and can be generated with plugin/tools/hash.sh
|
|
79
|
+
|
|
80
|
+
_meta:
|
|
81
|
+
type: "internalusers"
|
|
82
|
+
config_version: 2
|
|
83
|
+
|
|
84
|
+
# Define your internal users here
|
|
85
|
+
|
|
86
|
+
## Demo users
|
|
87
|
+
# This hash password is passwordsufhbivbU123%$
|
|
88
|
+
admin:
|
|
89
|
+
hash: "$2y$12$Z234bambHnVJMAXiccuMluNgGhNNdOFIY6pFT2/lk3ZC.RDoDIFme"
|
|
90
|
+
reserved: true
|
|
91
|
+
backend_roles:
|
|
92
|
+
- "admin"
|
|
93
|
+
description: "Demo admin user"
|
|
94
|
+
anomalyadmin:
|
|
95
|
+
hash: "$2y$12$TRwAAJgnNo67w3rVUz4FIeLx9Dy/llB79zf9I15CKJ9vkM4ZzAd3."
|
|
96
|
+
reserved: false
|
|
97
|
+
opendistro_security_roles:
|
|
98
|
+
- "anomaly_full_access"
|
|
99
|
+
description: "Demo anomaly admin user, using internal role"
|
|
100
|
+
kibanaserver:
|
|
101
|
+
hash: "$2a$12$4AcgAt3xwOWadA5s5blL6ev39OXDNhmOesEoo33eZtrq2N0YrU3H."
|
|
102
|
+
reserved: true
|
|
103
|
+
description: "Demo OpenSearch Dashboards user"
|
|
104
|
+
kibanaro:
|
|
105
|
+
hash: "$2a$12$JJSXNfTowz7Uu5ttXfeYpeYE0arACvcwlPBStB1F.MI7f0U9Z4DGC"
|
|
106
|
+
reserved: false
|
|
107
|
+
backend_roles:
|
|
108
|
+
- "kibanauser"
|
|
109
|
+
- "readall"
|
|
110
|
+
attributes:
|
|
111
|
+
attribute1: "value1"
|
|
112
|
+
attribute2: "value2"
|
|
113
|
+
attribute3: "value3"
|
|
114
|
+
description: "Demo OpenSearch Dashboards read only user, using external role mapping"
|
|
115
|
+
logstash:
|
|
116
|
+
hash: "$2a$12$u1ShR4l4uBS3Uv59Pa2y5.1uQuZBrZtmNfqB3iM/.jL0XoV9sghS2"
|
|
117
|
+
reserved: false
|
|
118
|
+
backend_roles:
|
|
119
|
+
- "logstash"
|
|
120
|
+
description: "Demo logstash user, using external role mapping"
|
|
121
|
+
readall:
|
|
122
|
+
hash: "$2a$12$ae4ycwzwvLtZxwZ82RmiEunBbIPiAmGZduBAjKN0TXdwQFtCwARz2"
|
|
123
|
+
reserved: false
|
|
124
|
+
backend_roles:
|
|
125
|
+
- "readall"
|
|
126
|
+
description: "Demo readall user, using external role mapping"
|
|
127
|
+
snapshotrestore:
|
|
128
|
+
hash: "$2y$12$DpwmetHKwgYnorbgdvORCenv4NAK8cPUg8AI6pxLCuWf/ALc0.v7W"
|
|
129
|
+
reserved: false
|
|
130
|
+
backend_roles:
|
|
131
|
+
- "snapshotrestore"
|
|
132
|
+
description: "Demo snapshotrestore user, using external role mapping"
|
|
133
|
+
`;
|
|
134
|
+
fs.writeFileSync(path.join(certDir, 'internal_users.yml'), content, 'utf8');
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Generates TLS certs using mkcert and organizes the output files
|
|
138
|
+
* into the layout expected by each service format.
|
|
139
|
+
*
|
|
140
|
+
* mkcert creates a locally-trusted CA and issues certificates signed by it.
|
|
141
|
+
* This function handles the full lifecycle:
|
|
142
|
+
* 1. Runs mkcert to produce a key + certificate for the given DNS names
|
|
143
|
+
* 2. Copies the root CA certificate into a CAs/ subdirectory
|
|
144
|
+
* 3. Renames/copies files into the structure each service expects
|
|
145
|
+
* 4. Cleans up the raw mkcert output files
|
|
146
|
+
*
|
|
147
|
+
* Supported formats:
|
|
148
|
+
* - `minio` → private.key, public.crt
|
|
149
|
+
* - `opensearch` → opensearch-key.pem, opensearch-cert.pem, internal_users.yml
|
|
150
|
+
* - `kafka` → kafka-keypair.pem (key + cert concatenated)
|
|
151
|
+
*
|
|
152
|
+
* @param formats - List of service formats to produce (e.g. ['minio', 'opensearch'])
|
|
153
|
+
* @param dirPath - Absolute path to the output directory (recreated if it already exists)
|
|
154
|
+
* @param dnsNames - DNS names / IPs the certificate should be valid for
|
|
155
|
+
* @throws {Error} If mkcert is not installed, dirPath is relative, or cert files cannot be found
|
|
156
|
+
*/
|
|
157
|
+
async function generateCerts(formats, dirPath, dnsNames) {
|
|
158
|
+
// mkcert must be installed
|
|
159
|
+
try {
|
|
160
|
+
await execa('mkcert', ['--version']);
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
throw new Error('mkcert is not installed. Please install mkcert and try again.');
|
|
164
|
+
}
|
|
165
|
+
if (!path.isAbsolute(dirPath)) {
|
|
166
|
+
throw new Error('dirPath must be an absolute path');
|
|
167
|
+
}
|
|
168
|
+
if (dnsNames.length === 0) {
|
|
169
|
+
throw new Error('At least one DNS name is required');
|
|
170
|
+
}
|
|
171
|
+
// Always start with a clean dir in the case there is stuff here
|
|
172
|
+
if (fse.existsSync(dirPath)) {
|
|
173
|
+
await fse.remove(dirPath);
|
|
174
|
+
}
|
|
175
|
+
await fse.mkdirp(dirPath);
|
|
176
|
+
// Run mkcert in the output directory — it writes the key and cert files there
|
|
177
|
+
await execa('mkcert', ['--client', ...dnsNames], { cwd: dirPath });
|
|
178
|
+
// mkcert stores its root CA in a system dir. copy it into our cert dir
|
|
179
|
+
const { stdout: caRoot } = await execa('mkcert', ['-CAROOT']);
|
|
180
|
+
fse.copySync(path.join(caRoot.trim(), 'rootCA.pem'), path.join(dirPath, 'rootCA.pem'));
|
|
181
|
+
// Move the root CA into a CAs/ subdirectory. Keeps it organized
|
|
182
|
+
await fse.mkdirp(path.join(dirPath, 'CAs'));
|
|
183
|
+
fse.moveSync(path.join(dirPath, 'rootCA.pem'), path.join(dirPath, 'CAs', 'rootCA.pem'));
|
|
184
|
+
// mkcert names its output files based on the DNS names, so we locate them by pattern
|
|
185
|
+
const files = fs.readdirSync(dirPath);
|
|
186
|
+
const privateKeyName = files.find((f) => f.toLowerCase().includes('key.pem'));
|
|
187
|
+
const publicCertName = files.find((f) => f.toLowerCase().endsWith('.pem') && !f.toLowerCase().includes('key.pem'));
|
|
188
|
+
if (!privateKeyName || !publicCertName) {
|
|
189
|
+
throw new Error(`Could not locate key.pem or public cert in ${dirPath}`);
|
|
190
|
+
}
|
|
191
|
+
const privateKeyPath = path.join(dirPath, privateKeyName);
|
|
192
|
+
const publicCertPath = path.join(dirPath, publicCertName);
|
|
193
|
+
// Copy/rename files into the layout each service expects. Each service like it in
|
|
194
|
+
// a specific format.
|
|
195
|
+
for (const format of formats) {
|
|
196
|
+
switch (format) {
|
|
197
|
+
case 'minio':
|
|
198
|
+
// https://min.io/docs/minio/linux/operations/network-encryption.html
|
|
199
|
+
fse.copySync(privateKeyPath, path.join(dirPath, 'private.key'));
|
|
200
|
+
fse.copySync(publicCertPath, path.join(dirPath, 'public.crt'));
|
|
201
|
+
break;
|
|
202
|
+
case 'opensearch':
|
|
203
|
+
// https://opensearch.org/docs/latest/security/configuration/tls/#x509-pem-certificates-and-pkcs-8-keys
|
|
204
|
+
fse.copySync(privateKeyPath, path.join(dirPath, 'opensearch-key.pem'));
|
|
205
|
+
fse.copySync(publicCertPath, path.join(dirPath, 'opensearch-cert.pem'));
|
|
206
|
+
// Opensearch also needs a user database file alongside the certs
|
|
207
|
+
createInternalUsersFile(dirPath);
|
|
208
|
+
break;
|
|
209
|
+
case 'kafka': {
|
|
210
|
+
// https://kafka.apache.org/42/security/encryption-and-authentication-using-ssl/
|
|
211
|
+
// Kafka expects key and cert in a single PEM file
|
|
212
|
+
const keyContent = fs.readFileSync(privateKeyPath, 'utf8');
|
|
213
|
+
const certContent = fs.readFileSync(publicCertPath, 'utf8');
|
|
214
|
+
fs.writeFileSync(path.join(dirPath, 'kafka-keypair.pem'), keyContent + certContent, 'utf8');
|
|
215
|
+
break;
|
|
216
|
+
}
|
|
217
|
+
default:
|
|
218
|
+
signale.warn(`Unknown format '${format}' ignored.`);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
// Remove the original mkcert files now that we've copied and renamed them
|
|
222
|
+
if (formats.length > 0) {
|
|
223
|
+
fs.unlinkSync(privateKeyPath);
|
|
224
|
+
fs.unlinkSync(publicCertPath);
|
|
225
|
+
}
|
|
226
|
+
// Make sure all cert files are readable
|
|
227
|
+
await execa('chmod', ['-R', 'a+rX', dirPath]);
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Generates CA certificates for encrypted services in the test environment if needed
|
|
231
|
+
*
|
|
232
|
+
* @throws {Error} If certificate generation fails.
|
|
233
|
+
*/
|
|
234
|
+
export async function generateTestCaCerts() {
|
|
235
|
+
const encryptedServices = [];
|
|
236
|
+
const hostNames = ['localhost'];
|
|
237
|
+
if (config.ENCRYPT_OPENSEARCH) {
|
|
238
|
+
encryptedServices.push('opensearch');
|
|
239
|
+
hostNames.push('opensearch2.services-dev1', 'opensearch3.services-dev1', 'opensearch', config.OPENSEARCH_HOSTNAME);
|
|
240
|
+
}
|
|
241
|
+
if (config.ENCRYPT_MINIO) {
|
|
242
|
+
encryptedServices.push('minio');
|
|
243
|
+
hostNames.push('minio.services-dev1', 'minio', config.MINIO_HOSTNAME);
|
|
244
|
+
}
|
|
245
|
+
if (config.ENCRYPT_KAFKA) {
|
|
246
|
+
encryptedServices.push('kafka');
|
|
247
|
+
hostNames.push('kafka-headless.services-dev1.svc.cluster.local', 'kafka-headless.services-dev1', 'kafka-headless', 'kafka', config.KAFKA_HOSTNAME);
|
|
248
|
+
}
|
|
249
|
+
if (encryptedServices.length > 0) {
|
|
250
|
+
// Formats the encrypted service list to print with the user feedback
|
|
251
|
+
const serviceList = encryptedServices.length === 1
|
|
252
|
+
? encryptedServices[0]
|
|
253
|
+
: encryptedServices.length === 2
|
|
254
|
+
? encryptedServices.join(' and ')
|
|
255
|
+
: `${encryptedServices.slice(0, -1).join(', ')} and ${encryptedServices[encryptedServices.length - 1]}`;
|
|
256
|
+
try {
|
|
257
|
+
signale.pending(`Generating new ca-certificates for ${serviceList}...`);
|
|
258
|
+
signale.debug('Generating certs: ', { formats: encryptedServices, dirPath: config.CERT_PATH, dnsNames: hostNames });
|
|
259
|
+
await generateCerts(encryptedServices, config.CERT_PATH, hostNames);
|
|
260
|
+
signale.success(`Created certs in ${config.CERT_PATH}`);
|
|
261
|
+
}
|
|
262
|
+
catch (err) {
|
|
263
|
+
throw new Error(`Error generating ca-certificates for ${serviceList}: ${err.message}`);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=certs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"certs.js","sourceRoot":"","sources":["../../../src/helpers/certs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
2
|
import { updateReadme, ensureOverview } from './overview.js';
|
|
3
|
-
import { build } from '../
|
|
3
|
+
import { build } from '../package-manager.js';
|
|
4
4
|
import { updateSidebarJSON } from './sidebar.js';
|
|
5
5
|
import { generateTSDocs } from './typedoc.js';
|
|
6
6
|
import { getRootDir, writePkgHeader } from '../misc.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/helpers/doc-builder/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/helpers/doc-builder/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAuB;IACvD,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,cAAc,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QAEpD,IAAI,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAC9E,MAAM,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACzC,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QAED,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { type ExecEnv } from './exec.js';
|
|
2
|
+
export declare function dockerPull(image: string, timeout?: number): Promise<void>;
|
|
3
|
+
export declare function dockerStop(name: string): Promise<void>;
|
|
4
|
+
export declare function dockerTag(from: string, to: string): Promise<void>;
|
|
5
|
+
export declare function getNodeVersionFromImage(image: string): Promise<string>;
|
|
6
|
+
export declare function getContainerInfo(name: string): Promise<any>;
|
|
7
|
+
export declare function dockerNetworkExists(name: string): Promise<boolean>;
|
|
8
|
+
export declare function remoteDockerImageExists(image: string): Promise<boolean>;
|
|
9
|
+
export type DockerRunOptions = {
|
|
10
|
+
name: string;
|
|
11
|
+
image: string;
|
|
12
|
+
ports?: (number | string)[];
|
|
13
|
+
tmpfs?: string[];
|
|
14
|
+
env?: ExecEnv;
|
|
15
|
+
network?: string;
|
|
16
|
+
args?: string[];
|
|
17
|
+
mount?: string[];
|
|
18
|
+
};
|
|
19
|
+
export declare function dockerRun(opt: DockerRunOptions, tag?: string, ignoreMount?: boolean, debug?: boolean): Promise<() => void>;
|
|
20
|
+
export declare function dockerContainerReady(name: string, upFor: number, error: any): Promise<boolean>;
|
|
21
|
+
export declare function dockerBuild(tag: string, cacheFrom?: string[], target?: string, buildArgs?: string[], dockerFileName?: string, dockerFilePath?: string): Promise<void>;
|
|
22
|
+
export declare function dockerPush(image: string): Promise<void>;
|
|
23
|
+
export declare function dockerExec(containerName: string, command: string[]): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Unzips and loads a Docker image from a Docker cache
|
|
26
|
+
* If successful and skipDelete is false the image will be deleted from the cache
|
|
27
|
+
* @param {string} imageName Name of the image to load
|
|
28
|
+
* @param {boolean} skipDelete Skip removal of docker image from cache
|
|
29
|
+
* @returns {Promise<boolean>} Whether or not the image loaded successfully
|
|
30
|
+
*/
|
|
31
|
+
export declare function loadThenDeleteImageFromCache(imageName: string, skipDelete?: boolean): Promise<boolean>;
|
|
32
|
+
export declare function deleteDockerImageCache(): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Save a docker image as a tar.gz to a local directory.
|
|
35
|
+
* Then remove the image from docker
|
|
36
|
+
* @param {string} imageName Name of image to pull and save
|
|
37
|
+
* @param {string} imageSavePath Location where image will be saved and compressed.
|
|
38
|
+
* @returns void
|
|
39
|
+
*/
|
|
40
|
+
export declare function saveAndZip(imageName: string, imageSavePath: string): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Extracts the base Docker image information from the top-level Dockerfile
|
|
43
|
+
*
|
|
44
|
+
* This function parses the Dockerfile to determine the base image name,
|
|
45
|
+
* node version, registry, and repository.
|
|
46
|
+
*
|
|
47
|
+
* @throws {TSError} If the Dockerfile cannot be read or the base image format is unexpected.
|
|
48
|
+
* @returns {{
|
|
49
|
+
* name: string;
|
|
50
|
+
* tag: string;
|
|
51
|
+
* registry: string;
|
|
52
|
+
* repo: string;
|
|
53
|
+
* }} An object containing:
|
|
54
|
+
* - `name: Full base image name
|
|
55
|
+
* - `tag`: Node version used in the image
|
|
56
|
+
* - `registry`: Docker registry (defaults to `docker.io` if not specified)
|
|
57
|
+
* - `repo`: Repository name including organization
|
|
58
|
+
*/
|
|
59
|
+
export declare function getDockerBaseImageInfo(): {
|
|
60
|
+
name: string;
|
|
61
|
+
tag: string;
|
|
62
|
+
registry: string;
|
|
63
|
+
repo: string;
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Retrieves the Node.js version from the base Docker image specified in the Teraslice `Dockerfile`.
|
|
67
|
+
*
|
|
68
|
+
* This function:
|
|
69
|
+
* - Extracts the base image details from the `Dockerfile`
|
|
70
|
+
* - Authenticates with the container registry to retrieve a token
|
|
71
|
+
* - Fetches the image manifest and configuration
|
|
72
|
+
* - Extracts the `node_version` label from the image config
|
|
73
|
+
*
|
|
74
|
+
* @throws {TSError} If any request to the registry fails or expected data is missing.
|
|
75
|
+
* @returns {Promise<string>} Resolves with the Node.js version string.
|
|
76
|
+
*/
|
|
77
|
+
export declare function grabCurrentTSNodeVersion(): Promise<string>;
|
|
78
|
+
//# sourceMappingURL=docker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../../src/helpers/docker.ts"],"names":[],"mappings":"AASA,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAKrD,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAW1E;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK5D;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOvE;AAED,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAU5E;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAQjE;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAMxE;AAED,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO7E;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,wBAAsB,SAAS,CAC3B,GAAG,EAAE,gBAAgB,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,GAC5E,OAAO,CAAC,MAAM,IAAI,CAAC,CAmHrB;AAED,wBAAsB,oBAAoB,CACtC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,GAAG,GACX,OAAO,CAAC,OAAO,CAAC,CAoBlB;AAED,wBAAsB,WAAW,CAC7B,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,EAAE,EACpB,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAAE,EACpB,cAAc,CAAC,EAAE,MAAM,EACvB,cAAc,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS7D;AAED,wBAAsB,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CASxF;AAaD;;;;;;GAMG;AACH,wBAAsB,4BAA4B,CAC9C,SAAS,EAAE,MAAM,EACjB,UAAU,UAAQ,GACnB,OAAO,CAAC,OAAO,CAAC,CA0BlB;AAED,wBAAsB,sBAAsB,kBAG3C;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,iBAOxE;AAED;;;;;;;;;;;;;;;;;EAiBE;AACF,wBAAgB,sBAAsB;;;;;EAoBrC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,MAAM,CAAC,CAiFhE"}
|