@pulumix/core 0.1.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/dev/env-builder.d.ts +9 -0
- package/dist/dev/env-builder.d.ts.map +1 -0
- package/dist/dev/env-builder.js +67 -0
- package/dist/dev/env-builder.js.map +1 -0
- package/dist/dev/index.d.ts +20 -0
- package/dist/dev/index.d.ts.map +1 -0
- package/dist/dev/index.js +272 -0
- package/dist/dev/index.js.map +1 -0
- package/dist/dev/local-runner.d.ts +13 -0
- package/dist/dev/local-runner.d.ts.map +1 -0
- package/dist/dev/local-runner.js +100 -0
- package/dist/dev/local-runner.js.map +1 -0
- package/dist/dev/port-forward.d.ts +10 -0
- package/dist/dev/port-forward.d.ts.map +1 -0
- package/dist/dev/port-forward.js +146 -0
- package/dist/dev/port-forward.js.map +1 -0
- package/dist/dev/service-swap.d.ts +27 -0
- package/dist/dev/service-swap.d.ts.map +1 -0
- package/dist/dev/service-swap.js +272 -0
- package/dist/dev/service-swap.js.map +1 -0
- package/dist/dev/types.d.ts +60 -0
- package/dist/dev/types.d.ts.map +1 -0
- package/dist/dev/types.js +28 -0
- package/dist/dev/types.js.map +1 -0
- package/dist/docker.d.ts +55 -0
- package/dist/docker.d.ts.map +1 -0
- package/dist/docker.js +331 -0
- package/dist/docker.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/orchestrator/events.d.ts +28 -0
- package/dist/orchestrator/events.d.ts.map +1 -0
- package/dist/orchestrator/events.js +142 -0
- package/dist/orchestrator/events.js.map +1 -0
- package/dist/orchestrator/index.d.ts +32 -0
- package/dist/orchestrator/index.d.ts.map +1 -0
- package/dist/orchestrator/index.js +722 -0
- package/dist/orchestrator/index.js.map +1 -0
- package/dist/types/errors.d.ts +76 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +271 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/events.d.ts +100 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +40 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/manifest.d.ts +121 -0
- package/dist/types/manifest.d.ts.map +1 -0
- package/dist/types/manifest.js +3 -0
- package/dist/types/manifest.js.map +1 -0
- package/dist/types/service.d.ts +35 -0
- package/dist/types/service.d.ts.map +1 -0
- package/dist/types/service.js +3 -0
- package/dist/types/service.js.map +1 -0
- package/dist/utils/kubernetes.d.ts +10 -0
- package/dist/utils/kubernetes.d.ts.map +1 -0
- package/dist/utils/kubernetes.js +38 -0
- package/dist/utils/kubernetes.js.map +1 -0
- package/dist/validation/manifest.d.ts +5 -0
- package/dist/validation/manifest.d.ts.map +1 -0
- package/dist/validation/manifest.js +114 -0
- package/dist/validation/manifest.js.map +1 -0
- package/package.json +49 -0
- package/src/schemas/service-manifest.schema.json +267 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkKubectl = checkKubectl;
|
|
4
|
+
exports.checkPortAvailable = checkPortAvailable;
|
|
5
|
+
exports.waitForPort = waitForPort;
|
|
6
|
+
exports.startPortForward = startPortForward;
|
|
7
|
+
exports.startPortForwards = startPortForwards;
|
|
8
|
+
exports.stopPortForwards = stopPortForwards;
|
|
9
|
+
const child_process_1 = require("child_process");
|
|
10
|
+
const errors_1 = require("../types/errors");
|
|
11
|
+
const Either_1 = require("purify-ts/Either");
|
|
12
|
+
async function checkKubectl() {
|
|
13
|
+
return new Promise((resolve) => {
|
|
14
|
+
const proc = (0, child_process_1.spawn)('kubectl', ['version', '--client'], {
|
|
15
|
+
stdio: ['ignore', 'pipe', 'pipe']
|
|
16
|
+
});
|
|
17
|
+
proc.on('error', () => {
|
|
18
|
+
resolve((0, Either_1.Left)((0, errors_1.createDeploymentError)('PulumiFailed', 'kubectl not found. Install kubectl to use dev mode.', undefined, { docs: 'https://kubernetes.io/docs/tasks/tools/' })));
|
|
19
|
+
});
|
|
20
|
+
proc.on('close', (code) => {
|
|
21
|
+
if (code === 0) {
|
|
22
|
+
resolve((0, Either_1.Right)(true));
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
resolve((0, Either_1.Left)((0, errors_1.createDeploymentError)('PulumiFailed', 'kubectl not working correctly', undefined, { exitCode: code })));
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
function checkPortAvailable(port) {
|
|
31
|
+
return new Promise((resolve) => {
|
|
32
|
+
const net = require('net');
|
|
33
|
+
const server = net.createServer();
|
|
34
|
+
server.once('error', () => {
|
|
35
|
+
resolve(false);
|
|
36
|
+
});
|
|
37
|
+
server.once('listening', () => {
|
|
38
|
+
server.close();
|
|
39
|
+
resolve(true);
|
|
40
|
+
});
|
|
41
|
+
server.listen(port, '127.0.0.1');
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
async function waitForPort(port, timeoutMs = 10000) {
|
|
45
|
+
const startTime = Date.now();
|
|
46
|
+
const checkInterval = 100;
|
|
47
|
+
while (Date.now() - startTime < timeoutMs) {
|
|
48
|
+
const net = require('net');
|
|
49
|
+
const available = await new Promise((resolve) => {
|
|
50
|
+
const socket = new net.Socket();
|
|
51
|
+
socket.setTimeout(500);
|
|
52
|
+
socket.on('connect', () => {
|
|
53
|
+
socket.destroy();
|
|
54
|
+
resolve(true);
|
|
55
|
+
});
|
|
56
|
+
socket.on('error', () => {
|
|
57
|
+
socket.destroy();
|
|
58
|
+
resolve(false);
|
|
59
|
+
});
|
|
60
|
+
socket.on('timeout', () => {
|
|
61
|
+
socket.destroy();
|
|
62
|
+
resolve(false);
|
|
63
|
+
});
|
|
64
|
+
socket.connect(port, '127.0.0.1');
|
|
65
|
+
});
|
|
66
|
+
if (available) {
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
await new Promise((resolve) => setTimeout(resolve, checkInterval));
|
|
70
|
+
}
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
async function startPortForward(mapping, kubeContext) {
|
|
74
|
+
const portAvailable = await checkPortAvailable(mapping.localPort);
|
|
75
|
+
if (!portAvailable) {
|
|
76
|
+
return (0, Either_1.Left)((0, errors_1.createDeploymentError)('ResourceFailed', `Port ${mapping.localPort} is already in use`, undefined, { port: mapping.localPort, service: mapping.serviceName }));
|
|
77
|
+
}
|
|
78
|
+
const args = [
|
|
79
|
+
'port-forward',
|
|
80
|
+
'-n', mapping.namespace,
|
|
81
|
+
`svc/${mapping.serviceName}`,
|
|
82
|
+
`${mapping.localPort}:${mapping.remotePort}`
|
|
83
|
+
];
|
|
84
|
+
if (kubeContext) {
|
|
85
|
+
args.unshift('--context', kubeContext);
|
|
86
|
+
}
|
|
87
|
+
return new Promise((resolve) => {
|
|
88
|
+
const proc = (0, child_process_1.spawn)('kubectl', args, {
|
|
89
|
+
stdio: ['ignore', 'pipe', 'pipe']
|
|
90
|
+
});
|
|
91
|
+
let started = false;
|
|
92
|
+
let stderr = '';
|
|
93
|
+
const exited = new Promise((resolveExit) => {
|
|
94
|
+
proc.on('close', (code) => {
|
|
95
|
+
resolveExit(code ?? 1);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
proc.on('error', (err) => {
|
|
99
|
+
if (!started) {
|
|
100
|
+
resolve((0, Either_1.Left)((0, errors_1.createDeploymentError)('PulumiFailed', `Failed to start port-forward for ${mapping.serviceName}: ${err.message}`, undefined, { service: mapping.serviceName, port: mapping.localPort })));
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
proc.stderr?.on('data', (data) => {
|
|
104
|
+
stderr += data.toString();
|
|
105
|
+
});
|
|
106
|
+
proc.stdout?.on('data', (data) => {
|
|
107
|
+
const output = data.toString();
|
|
108
|
+
if (output.includes('Forwarding from') && !started) {
|
|
109
|
+
started = true;
|
|
110
|
+
resolve((0, Either_1.Right)({
|
|
111
|
+
kill: () => proc.kill('SIGTERM'),
|
|
112
|
+
exited,
|
|
113
|
+
mapping
|
|
114
|
+
}));
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
setTimeout(() => {
|
|
118
|
+
if (!started) {
|
|
119
|
+
proc.kill('SIGTERM');
|
|
120
|
+
resolve((0, Either_1.Left)((0, errors_1.createDeploymentError)('PulumiFailed', `Timeout starting port-forward for ${mapping.serviceName}`, undefined, { service: mapping.serviceName, stderr })));
|
|
121
|
+
}
|
|
122
|
+
}, 10000);
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
async function startPortForwards(mappings, kubeContext) {
|
|
126
|
+
const handles = [];
|
|
127
|
+
for (const mapping of mappings) {
|
|
128
|
+
const result = await startPortForward(mapping, kubeContext);
|
|
129
|
+
if (result.isLeft()) {
|
|
130
|
+
stopPortForwards(handles);
|
|
131
|
+
return (0, Either_1.Left)(result.extract());
|
|
132
|
+
}
|
|
133
|
+
handles.push(result.extract());
|
|
134
|
+
}
|
|
135
|
+
return (0, Either_1.Right)(handles);
|
|
136
|
+
}
|
|
137
|
+
function stopPortForwards(handles) {
|
|
138
|
+
for (const handle of handles) {
|
|
139
|
+
try {
|
|
140
|
+
handle.kill();
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=port-forward.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"port-forward.js","sourceRoot":"","sources":["../../src/dev/port-forward.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Either } from 'purify-ts/Either';
|
|
2
|
+
import { DeployError } from '../types/errors';
|
|
3
|
+
import { ServiceSwapHandle } from './types';
|
|
4
|
+
export interface DevSwapState {
|
|
5
|
+
readonly namespace: string;
|
|
6
|
+
readonly services: ServiceSwapState[];
|
|
7
|
+
readonly timestamp: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ServiceSwapState {
|
|
10
|
+
readonly serviceName: string;
|
|
11
|
+
readonly originalReplicas: number;
|
|
12
|
+
readonly originalSelector: Record<string, string> | null;
|
|
13
|
+
}
|
|
14
|
+
export declare function saveDevState(rootPath: string, state: DevSwapState): void;
|
|
15
|
+
export declare function loadDevState(rootPath: string): DevSwapState | null;
|
|
16
|
+
export declare function clearDevState(rootPath: string): void;
|
|
17
|
+
export declare function getHostIP(): string;
|
|
18
|
+
export declare function getDeploymentReplicas(serviceName: string, namespace: string): number;
|
|
19
|
+
export declare function getServiceSelector(serviceName: string, namespace: string): Record<string, string> | null;
|
|
20
|
+
export declare function scaleDeployment(serviceName: string, namespace: string, replicas: number): Either<DeployError, true>;
|
|
21
|
+
export declare function removeServiceSelector(serviceName: string, namespace: string): Either<DeployError, true>;
|
|
22
|
+
export declare function restoreServiceSelector(serviceName: string, namespace: string, selector: Record<string, string>): Either<DeployError, true>;
|
|
23
|
+
export declare function createHostEndpoints(serviceName: string, namespace: string, hostIP: string, port: number): Either<DeployError, true>;
|
|
24
|
+
export declare function deleteEndpoints(serviceName: string, namespace: string): Either<DeployError, true>;
|
|
25
|
+
export declare function swapServiceToLocal(serviceName: string, namespace: string, localPort: number, rootPath: string): Promise<Either<DeployError, ServiceSwapHandle>>;
|
|
26
|
+
export declare function restoreFromStaleState(rootPath: string): Promise<void>;
|
|
27
|
+
//# sourceMappingURL=service-swap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-swap.d.ts","sourceRoot":"","sources":["../../src/dev/service-swap.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,MAAM,EAAe,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAyB,WAAW,EAAE,MAAM,iBAAiB,CAAA;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAK3C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAA;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAA;CACzD;AAgBD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAGxE;AAKD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAUlE;AAKD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAKpD;AAMD,wBAAgB,SAAS,IAAI,MAAM,CAkDlC;AAKD,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,MAAM,CAUR;AAKD,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAgB/B;AAKD,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAe3B;AAKD,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAe3B;AAKD,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAgB3B;AAKD,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CA6B3B;AAKD,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAgB3B;AAKD,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAsFjD;AAKD,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B3E"}
|
|
@@ -0,0 +1,272 @@
|
|
|
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.saveDevState = saveDevState;
|
|
37
|
+
exports.loadDevState = loadDevState;
|
|
38
|
+
exports.clearDevState = clearDevState;
|
|
39
|
+
exports.getHostIP = getHostIP;
|
|
40
|
+
exports.getDeploymentReplicas = getDeploymentReplicas;
|
|
41
|
+
exports.getServiceSelector = getServiceSelector;
|
|
42
|
+
exports.scaleDeployment = scaleDeployment;
|
|
43
|
+
exports.removeServiceSelector = removeServiceSelector;
|
|
44
|
+
exports.restoreServiceSelector = restoreServiceSelector;
|
|
45
|
+
exports.createHostEndpoints = createHostEndpoints;
|
|
46
|
+
exports.deleteEndpoints = deleteEndpoints;
|
|
47
|
+
exports.swapServiceToLocal = swapServiceToLocal;
|
|
48
|
+
exports.restoreFromStaleState = restoreFromStaleState;
|
|
49
|
+
const child_process_1 = require("child_process");
|
|
50
|
+
const fs = __importStar(require("fs"));
|
|
51
|
+
const path = __importStar(require("path"));
|
|
52
|
+
const Either_1 = require("purify-ts/Either");
|
|
53
|
+
const errors_1 = require("../types/errors");
|
|
54
|
+
function getStateFilePath(rootPath) {
|
|
55
|
+
const devStateDir = path.join(rootPath, 'dist', '.pulumix');
|
|
56
|
+
if (!fs.existsSync(devStateDir)) {
|
|
57
|
+
fs.mkdirSync(devStateDir, { recursive: true });
|
|
58
|
+
}
|
|
59
|
+
return path.join(devStateDir, 'dev-state.json');
|
|
60
|
+
}
|
|
61
|
+
function saveDevState(rootPath, state) {
|
|
62
|
+
const stateFile = getStateFilePath(rootPath);
|
|
63
|
+
fs.writeFileSync(stateFile, JSON.stringify(state, null, 2));
|
|
64
|
+
}
|
|
65
|
+
function loadDevState(rootPath) {
|
|
66
|
+
const stateFile = getStateFilePath(rootPath);
|
|
67
|
+
if (!fs.existsSync(stateFile)) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
return JSON.parse(fs.readFileSync(stateFile, 'utf-8'));
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function clearDevState(rootPath) {
|
|
78
|
+
const stateFile = getStateFilePath(rootPath);
|
|
79
|
+
if (fs.existsSync(stateFile)) {
|
|
80
|
+
fs.unlinkSync(stateFile);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function getHostIP() {
|
|
84
|
+
try {
|
|
85
|
+
const result = (0, child_process_1.execSync)('kubectl run --rm -i --restart=Never --image=alpine:latest host-lookup -- nslookup host.k3d.internal 2>/dev/null | grep "Address" | tail -1 | awk \'{print $2}\'', { encoding: 'utf-8', timeout: 10000 }).trim();
|
|
86
|
+
if (result && result.match(/^\d+\.\d+\.\d+\.\d+$/)) {
|
|
87
|
+
return result;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
const result = (0, child_process_1.execSync)('docker network inspect k3d-hello-world -f "{{range .IPAM.Config}}{{.Gateway}}{{end}}" 2>/dev/null', { encoding: 'utf-8', timeout: 5000 }).trim();
|
|
94
|
+
if (result && result.match(/^\d+\.\d+\.\d+\.\d+$/)) {
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
const result = (0, child_process_1.execSync)('getent hosts host.docker.internal 2>/dev/null | awk \'{print $1}\'', { encoding: 'utf-8', timeout: 5000 }).trim();
|
|
102
|
+
if (result && result.match(/^\d+\.\d+\.\d+\.\d+$/)) {
|
|
103
|
+
return result;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
}
|
|
108
|
+
return '192.168.65.254';
|
|
109
|
+
}
|
|
110
|
+
function getDeploymentReplicas(serviceName, namespace) {
|
|
111
|
+
try {
|
|
112
|
+
const result = (0, child_process_1.execSync)(`kubectl get deployment ${serviceName} -n ${namespace} -o jsonpath='{.spec.replicas}' 2>/dev/null`, { encoding: 'utf-8', timeout: 10000 }).trim();
|
|
113
|
+
return parseInt(result, 10) || 1;
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
return 1;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
function getServiceSelector(serviceName, namespace) {
|
|
120
|
+
try {
|
|
121
|
+
const result = (0, child_process_1.execSync)(`kubectl get svc ${serviceName} -n ${namespace} -o jsonpath='{.spec.selector}' 2>/dev/null`, { encoding: 'utf-8', timeout: 10000 }).trim();
|
|
122
|
+
if (!result || result === '{}') {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
return JSON.parse(result);
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
function scaleDeployment(serviceName, namespace, replicas) {
|
|
132
|
+
try {
|
|
133
|
+
(0, child_process_1.execSync)(`kubectl scale deployment ${serviceName} -n ${namespace} --replicas=${replicas}`, { encoding: 'utf-8', timeout: 30000 });
|
|
134
|
+
return (0, Either_1.Right)(true);
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
return (0, Either_1.Left)((0, errors_1.createDeploymentError)('ResourceFailed', `Failed to scale deployment ${serviceName}: ${err.message}`, undefined, { serviceName, namespace, replicas }));
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
function removeServiceSelector(serviceName, namespace) {
|
|
141
|
+
try {
|
|
142
|
+
(0, child_process_1.execSync)(`kubectl patch svc ${serviceName} -n ${namespace} --type=json -p='[{"op":"remove","path":"/spec/selector"}]'`, { encoding: 'utf-8', timeout: 10000 });
|
|
143
|
+
return (0, Either_1.Right)(true);
|
|
144
|
+
}
|
|
145
|
+
catch (err) {
|
|
146
|
+
return (0, Either_1.Left)((0, errors_1.createDeploymentError)('ResourceFailed', `Failed to patch service ${serviceName}: ${err.message}`, undefined, { serviceName, namespace }));
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
function restoreServiceSelector(serviceName, namespace, selector) {
|
|
150
|
+
try {
|
|
151
|
+
const selectorJson = JSON.stringify(selector);
|
|
152
|
+
(0, child_process_1.execSync)(`kubectl patch svc ${serviceName} -n ${namespace} --type=merge -p='{"spec":{"selector":${selectorJson}}}'`, { encoding: 'utf-8', timeout: 10000 });
|
|
153
|
+
return (0, Either_1.Right)(true);
|
|
154
|
+
}
|
|
155
|
+
catch (err) {
|
|
156
|
+
return (0, Either_1.Left)((0, errors_1.createDeploymentError)('ResourceFailed', `Failed to restore service selector ${serviceName}: ${err.message}`, undefined, { serviceName, namespace }));
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
function createHostEndpoints(serviceName, namespace, hostIP, port) {
|
|
160
|
+
const endpointsYaml = `
|
|
161
|
+
apiVersion: v1
|
|
162
|
+
kind: Endpoints
|
|
163
|
+
metadata:
|
|
164
|
+
name: ${serviceName}
|
|
165
|
+
namespace: ${namespace}
|
|
166
|
+
subsets:
|
|
167
|
+
- addresses:
|
|
168
|
+
- ip: ${hostIP}
|
|
169
|
+
ports:
|
|
170
|
+
- port: ${port}
|
|
171
|
+
`;
|
|
172
|
+
try {
|
|
173
|
+
(0, child_process_1.execSync)(`kubectl apply -f -`, {
|
|
174
|
+
input: endpointsYaml,
|
|
175
|
+
encoding: 'utf-8',
|
|
176
|
+
timeout: 10000
|
|
177
|
+
});
|
|
178
|
+
return (0, Either_1.Right)(true);
|
|
179
|
+
}
|
|
180
|
+
catch (err) {
|
|
181
|
+
return (0, Either_1.Left)((0, errors_1.createDeploymentError)('ResourceFailed', `Failed to create endpoints for ${serviceName}: ${err.message}`, undefined, { serviceName, namespace, hostIP, port }));
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
function deleteEndpoints(serviceName, namespace) {
|
|
185
|
+
try {
|
|
186
|
+
(0, child_process_1.execSync)(`kubectl delete endpoints ${serviceName} -n ${namespace} --ignore-not-found`, { encoding: 'utf-8', timeout: 10000 });
|
|
187
|
+
return (0, Either_1.Right)(true);
|
|
188
|
+
}
|
|
189
|
+
catch (err) {
|
|
190
|
+
return (0, Either_1.Left)((0, errors_1.createDeploymentError)('ResourceFailed', `Failed to delete endpoints ${serviceName}: ${err.message}`, undefined, { serviceName, namespace }));
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
async function swapServiceToLocal(serviceName, namespace, localPort, rootPath) {
|
|
194
|
+
const originalReplicas = getDeploymentReplicas(serviceName, namespace);
|
|
195
|
+
const originalSelector = getServiceSelector(serviceName, namespace);
|
|
196
|
+
if (!originalSelector) {
|
|
197
|
+
return (0, Either_1.Left)((0, errors_1.createDeploymentError)('ResourceFailed', `Service ${serviceName} has no selector - cannot swap`, undefined, { serviceName, namespace }));
|
|
198
|
+
}
|
|
199
|
+
const hostIP = getHostIP();
|
|
200
|
+
const existingState = loadDevState(rootPath);
|
|
201
|
+
const newServiceState = {
|
|
202
|
+
serviceName,
|
|
203
|
+
originalReplicas,
|
|
204
|
+
originalSelector
|
|
205
|
+
};
|
|
206
|
+
const newState = {
|
|
207
|
+
namespace,
|
|
208
|
+
services: existingState?.services
|
|
209
|
+
? [...existingState.services.filter(s => s.serviceName !== serviceName), newServiceState]
|
|
210
|
+
: [newServiceState],
|
|
211
|
+
timestamp: new Date().toISOString()
|
|
212
|
+
};
|
|
213
|
+
saveDevState(rootPath, newState);
|
|
214
|
+
const scaleResult = scaleDeployment(serviceName, namespace, 0);
|
|
215
|
+
if (scaleResult.isLeft()) {
|
|
216
|
+
return (0, Either_1.Left)(scaleResult.extract());
|
|
217
|
+
}
|
|
218
|
+
const patchResult = removeServiceSelector(serviceName, namespace);
|
|
219
|
+
if (patchResult.isLeft()) {
|
|
220
|
+
scaleDeployment(serviceName, namespace, originalReplicas);
|
|
221
|
+
return (0, Either_1.Left)(patchResult.extract());
|
|
222
|
+
}
|
|
223
|
+
const endpointsResult = createHostEndpoints(serviceName, namespace, hostIP, localPort);
|
|
224
|
+
if (endpointsResult.isLeft()) {
|
|
225
|
+
restoreServiceSelector(serviceName, namespace, originalSelector);
|
|
226
|
+
scaleDeployment(serviceName, namespace, originalReplicas);
|
|
227
|
+
return (0, Either_1.Left)(endpointsResult.extract());
|
|
228
|
+
}
|
|
229
|
+
const restore = async () => {
|
|
230
|
+
deleteEndpoints(serviceName, namespace);
|
|
231
|
+
restoreServiceSelector(serviceName, namespace, originalSelector);
|
|
232
|
+
scaleDeployment(serviceName, namespace, originalReplicas);
|
|
233
|
+
const currentState = loadDevState(rootPath);
|
|
234
|
+
if (currentState) {
|
|
235
|
+
const remainingServices = currentState.services.filter(s => s.serviceName !== serviceName);
|
|
236
|
+
if (remainingServices.length === 0) {
|
|
237
|
+
clearDevState(rootPath);
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
saveDevState(rootPath, { ...currentState, services: remainingServices });
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
};
|
|
244
|
+
return (0, Either_1.Right)({
|
|
245
|
+
serviceName,
|
|
246
|
+
namespace,
|
|
247
|
+
localPort,
|
|
248
|
+
restore
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
async function restoreFromStaleState(rootPath) {
|
|
252
|
+
const state = loadDevState(rootPath);
|
|
253
|
+
if (!state) {
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
console.log('Restoring from previous dev session...');
|
|
257
|
+
for (const service of state.services) {
|
|
258
|
+
try {
|
|
259
|
+
deleteEndpoints(service.serviceName, state.namespace);
|
|
260
|
+
if (service.originalSelector) {
|
|
261
|
+
restoreServiceSelector(service.serviceName, state.namespace, service.originalSelector);
|
|
262
|
+
}
|
|
263
|
+
scaleDeployment(service.serviceName, state.namespace, service.originalReplicas);
|
|
264
|
+
console.log(` Restored ${service.serviceName}`);
|
|
265
|
+
}
|
|
266
|
+
catch (err) {
|
|
267
|
+
console.error(` Failed to restore ${service.serviceName}:`, err);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
clearDevState(rootPath);
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=service-swap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-swap.js","sourceRoot":"","sources":["../../src/dev/service-swap.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,oCAGC;AAKD,oCAUC;AAKD,sCAKC;AAMD,8BAkDC;AAKD,sDAaC;AAKD,gDAmBC;AAKD,0CAmBC;AAKD,sDAkBC;AAKD,wDAoBC;AAKD,kDAkCC;AAKD,0CAmBC;AAKD,gDA2FC;AAKD,sDA4BC;AA1aD,iDAAwC;AACxC,uCAAwB;AACxB,2CAA4B;AAC5B,6CAAsD;AACtD,4CAAoE;AAqBpE,SAAS,gBAAgB,CAAC,QAAgB;IACxC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,CAAA;IAC3D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAChD,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAA;AACjD,CAAC;AAKD,SAAgB,YAAY,CAAC,QAAgB,EAAE,KAAmB;IAChE,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IAC5C,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAC7D,CAAC;AAKD,SAAgB,YAAY,CAAC,QAAgB;IAC3C,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IAC5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAKD,SAAgB,aAAa,CAAC,QAAgB;IAC5C,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IAC5C,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;IAC1B,CAAC;AACH,CAAC;AAMD,SAAgB,SAAS;IAKvB,IAAI,CAAC;QAEH,MAAM,MAAM,GAAG,IAAA,wBAAQ,EACrB,iKAAiK,EACjK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CACtC,CAAC,IAAI,EAAE,CAAA;QAER,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACnD,OAAO,MAAM,CAAA;QACf,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;IAET,CAAC;IAED,IAAI,CAAC;QAEH,MAAM,MAAM,GAAG,IAAA,wBAAQ,EACrB,mGAAmG,EACnG,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CACrC,CAAC,IAAI,EAAE,CAAA;QAER,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACnD,OAAO,MAAM,CAAA;QACf,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;IAET,CAAC;IAED,IAAI,CAAC;QAEH,MAAM,MAAM,GAAG,IAAA,wBAAQ,EACrB,oEAAoE,EACpE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CACrC,CAAC,IAAI,EAAE,CAAA;QAER,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACnD,OAAO,MAAM,CAAA;QACf,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;IAET,CAAC;IAID,OAAO,gBAAgB,CAAA;AACzB,CAAC;AAKD,SAAgB,qBAAqB,CACnC,WAAmB,EACnB,SAAiB;IAEjB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,wBAAQ,EACrB,0BAA0B,WAAW,OAAO,SAAS,6CAA6C,EAClG,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CACtC,CAAC,IAAI,EAAE,CAAA;QACR,OAAO,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAA;IACV,CAAC;AACH,CAAC;AAKD,SAAgB,kBAAkB,CAChC,WAAmB,EACnB,SAAiB;IAEjB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,wBAAQ,EACrB,mBAAmB,WAAW,OAAO,SAAS,6CAA6C,EAC3F,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CACtC,CAAC,IAAI,EAAE,CAAA;QAER,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAA;QACb,CAAC;QAGD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAKD,SAAgB,eAAe,CAC7B,WAAmB,EACnB,SAAiB,EACjB,QAAgB;IAEhB,IAAI,CAAC;QACH,IAAA,wBAAQ,EACN,4BAA4B,WAAW,OAAO,SAAS,eAAe,QAAQ,EAAE,EAChF,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CACtC,CAAA;QACD,OAAO,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IACpB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,IAAA,aAAI,EAAC,IAAA,8BAAqB,EAC/B,gBAAgB,EAChB,8BAA8B,WAAW,KAAK,GAAG,CAAC,OAAO,EAAE,EAC3D,SAAS,EACT,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,CACrC,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAKD,SAAgB,qBAAqB,CACnC,WAAmB,EACnB,SAAiB;IAEjB,IAAI,CAAC;QACH,IAAA,wBAAQ,EACN,qBAAqB,WAAW,OAAO,SAAS,6DAA6D,EAC7G,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CACtC,CAAA;QACD,OAAO,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IACpB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,IAAA,aAAI,EAAC,IAAA,8BAAqB,EAC/B,gBAAgB,EAChB,2BAA2B,WAAW,KAAK,GAAG,CAAC,OAAO,EAAE,EACxD,SAAS,EACT,EAAE,WAAW,EAAE,SAAS,EAAE,CAC3B,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAKD,SAAgB,sBAAsB,CACpC,WAAmB,EACnB,SAAiB,EACjB,QAAgC;IAEhC,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QAC7C,IAAA,wBAAQ,EACN,qBAAqB,WAAW,OAAO,SAAS,yCAAyC,YAAY,KAAK,EAC1G,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CACtC,CAAA;QACD,OAAO,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IACpB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,IAAA,aAAI,EAAC,IAAA,8BAAqB,EAC/B,gBAAgB,EAChB,sCAAsC,WAAW,KAAK,GAAG,CAAC,OAAO,EAAE,EACnE,SAAS,EACT,EAAE,WAAW,EAAE,SAAS,EAAE,CAC3B,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAKD,SAAgB,mBAAmB,CACjC,WAAmB,EACnB,SAAiB,EACjB,MAAc,EACd,IAAY;IAEZ,MAAM,aAAa,GAAG;;;;UAId,WAAW;eACN,SAAS;;;cAGV,MAAM;;gBAEJ,IAAI;CACnB,CAAA;IAEC,IAAI,CAAC;QACH,IAAA,wBAAQ,EAAC,oBAAoB,EAAE;YAC7B,KAAK,EAAE,aAAa;YACpB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,KAAK;SACf,CAAC,CAAA;QACF,OAAO,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IACpB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,IAAA,aAAI,EAAC,IAAA,8BAAqB,EAC/B,gBAAgB,EAChB,kCAAkC,WAAW,KAAK,GAAG,CAAC,OAAO,EAAE,EAC/D,SAAS,EACT,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,CACzC,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAKD,SAAgB,eAAe,CAC7B,WAAmB,EACnB,SAAiB;IAEjB,IAAI,CAAC;QAEH,IAAA,wBAAQ,EACN,4BAA4B,WAAW,OAAO,SAAS,qBAAqB,EAC5E,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CACtC,CAAA;QACD,OAAO,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IACpB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,IAAA,aAAI,EAAC,IAAA,8BAAqB,EAC/B,gBAAgB,EAChB,8BAA8B,WAAW,KAAK,GAAG,CAAC,OAAO,EAAE,EAC3D,SAAS,EACT,EAAE,WAAW,EAAE,SAAS,EAAE,CAC3B,CAAC,CAAA;IACJ,CAAC;AACH,CAAC;AAKM,KAAK,UAAU,kBAAkB,CACtC,WAAmB,EACnB,SAAiB,EACjB,SAAiB,EACjB,QAAgB;IAGhB,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;IACtE,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;IAEnE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,OAAO,IAAA,aAAI,EAAC,IAAA,8BAAqB,EAC/B,gBAAgB,EAChB,WAAW,WAAW,gCAAgC,EACtD,SAAS,EACT,EAAE,WAAW,EAAE,SAAS,EAAE,CAC3B,CAAC,CAAA;IACJ,CAAC;IAGD,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAG1B,MAAM,aAAa,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IAC5C,MAAM,eAAe,GAAqB;QACxC,WAAW;QACX,gBAAgB;QAChB,gBAAgB;KACjB,CAAA;IAED,MAAM,QAAQ,GAAiB;QAC7B,SAAS;QACT,QAAQ,EAAE,aAAa,EAAE,QAAQ;YAC/B,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,EAAE,eAAe,CAAC;YACzF,CAAC,CAAC,CAAC,eAAe,CAAC;QACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAA;IACD,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAGhC,MAAM,WAAW,GAAG,eAAe,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;IAC9D,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;QACzB,OAAO,IAAA,aAAI,EAAC,WAAW,CAAC,OAAO,EAAiB,CAAC,CAAA;IACnD,CAAC;IAGD,MAAM,WAAW,GAAG,qBAAqB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;IACjE,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;QAEzB,eAAe,CAAC,WAAW,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAA;QACzD,OAAO,IAAA,aAAI,EAAC,WAAW,CAAC,OAAO,EAAiB,CAAC,CAAA;IACnD,CAAC;IAGD,MAAM,eAAe,GAAG,mBAAmB,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;IACtF,IAAI,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;QAE7B,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAA;QAChE,eAAe,CAAC,WAAW,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAA;QACzD,OAAO,IAAA,aAAI,EAAC,eAAe,CAAC,OAAO,EAAiB,CAAC,CAAA;IACvD,CAAC;IAGD,MAAM,OAAO,GAAG,KAAK,IAAmB,EAAE;QAExC,eAAe,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;QAGvC,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAA;QAGhE,eAAe,CAAC,WAAW,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAA;QAGzD,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;QAC3C,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,iBAAiB,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,CAAA;YAC1F,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnC,aAAa,CAAC,QAAQ,CAAC,CAAA;YACzB,CAAC;iBAAM,CAAC;gBACN,YAAY,CAAC,QAAQ,EAAE,EAAE,GAAG,YAAY,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAA;YAC1E,CAAC;QACH,CAAC;IACH,CAAC,CAAA;IAED,OAAO,IAAA,cAAK,EAAC;QACX,WAAW;QACX,SAAS;QACT,SAAS;QACT,OAAO;KACR,CAAC,CAAA;AACJ,CAAC;AAKM,KAAK,UAAU,qBAAqB,CAAC,QAAgB;IAC1D,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IACpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAM;IACR,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAA;IAErD,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC;YAEH,eAAe,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;YAGrD,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBAC7B,sBAAsB,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;YACxF,CAAC;YAGD,eAAe,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;YAE/E,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;QAClD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,uBAAuB,OAAO,CAAC,WAAW,GAAG,EAAE,GAAG,CAAC,CAAA;QACnE,CAAC;IACH,CAAC;IAED,aAAa,CAAC,QAAQ,CAAC,CAAA;AACzB,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { DiscoveredService } from '../types/service';
|
|
2
|
+
export interface DevConfig {
|
|
3
|
+
readonly command: string;
|
|
4
|
+
readonly port?: number;
|
|
5
|
+
readonly env?: Record<string, string>;
|
|
6
|
+
readonly cwd?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface PortForwardMapping {
|
|
9
|
+
readonly serviceName: string;
|
|
10
|
+
readonly namespace: string;
|
|
11
|
+
readonly remotePort: number;
|
|
12
|
+
readonly localPort: number;
|
|
13
|
+
readonly envVar: string;
|
|
14
|
+
readonly protocol: string;
|
|
15
|
+
}
|
|
16
|
+
export interface PortForwardHandle {
|
|
17
|
+
readonly kill: () => void;
|
|
18
|
+
readonly exited: Promise<number>;
|
|
19
|
+
readonly mapping: PortForwardMapping;
|
|
20
|
+
}
|
|
21
|
+
export interface DevServerHandle {
|
|
22
|
+
readonly kill: () => void;
|
|
23
|
+
readonly exited: Promise<number>;
|
|
24
|
+
readonly serviceName: string;
|
|
25
|
+
readonly port: number;
|
|
26
|
+
}
|
|
27
|
+
export interface LocalDevService {
|
|
28
|
+
readonly service: DiscoveredService;
|
|
29
|
+
readonly devConfig: DevConfig;
|
|
30
|
+
readonly localPort: number;
|
|
31
|
+
}
|
|
32
|
+
export interface DevOrchestratorConfig {
|
|
33
|
+
readonly rootPath: string;
|
|
34
|
+
readonly stackName: string;
|
|
35
|
+
readonly devServices: string[];
|
|
36
|
+
readonly onOutput?: (message: string) => void;
|
|
37
|
+
}
|
|
38
|
+
export interface ServiceSwapHandle {
|
|
39
|
+
readonly serviceName: string;
|
|
40
|
+
readonly namespace: string;
|
|
41
|
+
readonly localPort: number;
|
|
42
|
+
readonly restore: () => Promise<void>;
|
|
43
|
+
}
|
|
44
|
+
export interface DevOrchestratorResult {
|
|
45
|
+
readonly success: boolean;
|
|
46
|
+
readonly stack: string;
|
|
47
|
+
readonly namespace?: string;
|
|
48
|
+
readonly baseDomain?: string;
|
|
49
|
+
readonly devServices: LocalDevService[];
|
|
50
|
+
readonly portForwards: PortForwardMapping[];
|
|
51
|
+
readonly devServerHandles: DevServerHandle[];
|
|
52
|
+
readonly portForwardHandles: PortForwardHandle[];
|
|
53
|
+
readonly serviceSwapHandles?: ServiceSwapHandle[];
|
|
54
|
+
readonly ingressUrls?: string[];
|
|
55
|
+
}
|
|
56
|
+
export declare const STANDARD_PORTS: Record<string, number>;
|
|
57
|
+
export declare const PROTOCOL_PREFIXES: Record<string, string>;
|
|
58
|
+
export declare const HTTP_PORT_BASE = 10001;
|
|
59
|
+
export declare const DEV_SERVER_PORT_BASE = 3000;
|
|
60
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/dev/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAKpD,MAAM,WAAW,SAAS;IAExB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IAExB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IAEtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAErC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CACtB;AAKD,MAAM,WAAW,kBAAkB;IAEjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAE5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAE1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAE3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAE1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IAEvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAKD,MAAM,WAAW,iBAAiB;IAEhC,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAA;IAEzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IAEhC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAA;CACrC;AAKD,MAAM,WAAW,eAAe;IAE9B,QAAQ,CAAC,IAAI,EAAE,MAAM,IAAI,CAAA;IAEzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IAEhC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAE5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAKD,MAAM,WAAW,eAAe;IAE9B,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAA;IAEnC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAE7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAKD,MAAM,WAAW,qBAAqB;IAEpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IAEzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAE1B,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAA;IAE9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9C;AAKD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACtC;AAKD,MAAM,WAAW,qBAAqB;IAEpC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IAEzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IAEtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAE3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAE5B,QAAQ,CAAC,WAAW,EAAE,eAAe,EAAE,CAAA;IAEvC,QAAQ,CAAC,YAAY,EAAE,kBAAkB,EAAE,CAAA;IAE3C,QAAQ,CAAC,gBAAgB,EAAE,eAAe,EAAE,CAAA;IAE5C,QAAQ,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,CAAA;IAEhD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAEjD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CAChC;AAKD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAWjD,CAAA;AAKD,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CASpD,CAAA;AAMD,eAAO,MAAM,cAAc,QAAQ,CAAA;AAMnC,eAAO,MAAM,oBAAoB,OAAO,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEV_SERVER_PORT_BASE = exports.HTTP_PORT_BASE = exports.PROTOCOL_PREFIXES = exports.STANDARD_PORTS = void 0;
|
|
4
|
+
exports.STANDARD_PORTS = {
|
|
5
|
+
postgres: 5432,
|
|
6
|
+
postgresql: 5432,
|
|
7
|
+
mysql: 3306,
|
|
8
|
+
redis: 6379,
|
|
9
|
+
mongodb: 27017,
|
|
10
|
+
mongo: 27017,
|
|
11
|
+
rabbitmq: 5672,
|
|
12
|
+
kafka: 9092,
|
|
13
|
+
elasticsearch: 9200,
|
|
14
|
+
memcached: 11211,
|
|
15
|
+
};
|
|
16
|
+
exports.PROTOCOL_PREFIXES = {
|
|
17
|
+
postgres: 'postgres',
|
|
18
|
+
postgresql: 'postgres',
|
|
19
|
+
mysql: 'mysql',
|
|
20
|
+
redis: 'redis',
|
|
21
|
+
mongodb: 'mongodb',
|
|
22
|
+
mongo: 'mongodb',
|
|
23
|
+
http: 'http',
|
|
24
|
+
https: 'https',
|
|
25
|
+
};
|
|
26
|
+
exports.HTTP_PORT_BASE = 10001;
|
|
27
|
+
exports.DEV_SERVER_PORT_BASE = 3000;
|
|
28
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/dev/types.ts"],"names":[],"mappings":";;;AAiIa,QAAA,cAAc,GAA2B;IACpD,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,IAAI;IAChB,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,IAAI;IACd,KAAK,EAAE,IAAI;IACX,aAAa,EAAE,IAAI;IACnB,SAAS,EAAE,KAAK;CACjB,CAAA;AAKY,QAAA,iBAAiB,GAA2B;IACvD,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,UAAU;IACtB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;CACf,CAAA;AAMY,QAAA,cAAc,GAAG,KAAK,CAAA;AAMtB,QAAA,oBAAoB,GAAG,IAAI,CAAA"}
|
package/dist/docker.d.ts
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import Docker from 'dockerode';
|
|
2
|
+
import { Either } from 'purify-ts/Either';
|
|
3
|
+
import { DeployError } from './types/errors';
|
|
4
|
+
export interface BuildProgress {
|
|
5
|
+
step?: string;
|
|
6
|
+
current?: number;
|
|
7
|
+
total?: number;
|
|
8
|
+
message: string;
|
|
9
|
+
stream?: 'stdout' | 'stderr';
|
|
10
|
+
}
|
|
11
|
+
export interface PushProgress {
|
|
12
|
+
id?: string;
|
|
13
|
+
status: string;
|
|
14
|
+
progress?: number;
|
|
15
|
+
progressDetail?: {
|
|
16
|
+
current?: number;
|
|
17
|
+
total?: number;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export interface BuildOptions {
|
|
21
|
+
contextPath: string;
|
|
22
|
+
tag: string;
|
|
23
|
+
dockerfile?: string;
|
|
24
|
+
buildArgs?: Record<string, string>;
|
|
25
|
+
onProgress?: (progress: BuildProgress) => void;
|
|
26
|
+
}
|
|
27
|
+
export interface PushOptions {
|
|
28
|
+
tag: string;
|
|
29
|
+
auth?: {
|
|
30
|
+
username: string;
|
|
31
|
+
password: string;
|
|
32
|
+
serveraddress: string;
|
|
33
|
+
};
|
|
34
|
+
onProgress?: (progress: PushProgress) => void;
|
|
35
|
+
}
|
|
36
|
+
export interface BuildResult {
|
|
37
|
+
tag: string;
|
|
38
|
+
imageId?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface PushResult {
|
|
41
|
+
tag: string;
|
|
42
|
+
digest?: string;
|
|
43
|
+
}
|
|
44
|
+
export declare const getDockerClient: () => Docker;
|
|
45
|
+
export declare const buildImage: (options: BuildOptions) => Promise<Either<DeployError, BuildResult>>;
|
|
46
|
+
export declare const pushImage: (options: PushOptions) => Promise<Either<DeployError, PushResult>>;
|
|
47
|
+
export declare const buildAndPushImage: (buildOptions: BuildOptions, pushAuth?: PushOptions["auth"]) => Promise<Either<DeployError, {
|
|
48
|
+
build: BuildResult;
|
|
49
|
+
push: PushResult;
|
|
50
|
+
}>>;
|
|
51
|
+
export declare const isDockerAvailable: () => Promise<boolean>;
|
|
52
|
+
export declare const hashBuildContext: (contextPath: string, ignorePatterns?: string[]) => Promise<string>;
|
|
53
|
+
export declare const imageExistsInRegistry: (registry: string, imageName: string, tag: string) => Promise<boolean>;
|
|
54
|
+
export declare const getImageDigestFromRegistry: (registry: string, imageName: string, tag: string) => Promise<string | null>;
|
|
55
|
+
//# sourceMappingURL=docker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../src/docker.ts"],"names":[],"mappings":"AAMA,OAAO,MAAM,MAAM,WAAW,CAAA;AAK9B,OAAO,EAAE,MAAM,EAAe,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAoB,MAAM,gBAAgB,CAAA;AAM9D,MAAM,WAAW,aAAa;IAE5B,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd,OAAO,EAAE,MAAM,CAAA;IAEf,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAC7B;AAED,MAAM,WAAW,YAAY;IAE3B,EAAE,CAAC,EAAE,MAAM,CAAA;IAEX,MAAM,EAAE,MAAM,CAAA;IAEd,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,cAAc,CAAC,EAAE;QACf,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;CACF;AAED,MAAM,WAAW,YAAY;IAE3B,WAAW,EAAE,MAAM,CAAA;IAEnB,GAAG,EAAE,MAAM,CAAA;IAEX,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAElC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAA;CAC/C;AAED,MAAM,WAAW,WAAW;IAE1B,GAAG,EAAE,MAAM,CAAA;IAEX,IAAI,CAAC,EAAE;QACL,QAAQ,EAAE,MAAM,CAAA;QAChB,QAAQ,EAAE,MAAM,CAAA;QAChB,aAAa,EAAE,MAAM,CAAA;KACtB,CAAA;IAED,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAA;CAC9C;AAED,MAAM,WAAW,WAAW;IAE1B,GAAG,EAAE,MAAM,CAAA;IAEX,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,UAAU;IAEzB,GAAG,EAAE,MAAM,CAAA;IAEX,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAWD,eAAO,MAAM,eAAe,QAAO,MAKlC,CAAA;AASD,eAAO,MAAM,UAAU,GACrB,SAAS,YAAY,KACpB,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,CAyI1C,CAAA;AASD,eAAO,MAAM,SAAS,GACpB,SAAS,WAAW,KACnB,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,CAiFzC,CAAA;AASD,eAAO,MAAM,iBAAiB,GAC5B,cAAc,YAAY,EAC1B,WAAW,WAAW,CAAC,MAAM,CAAC,KAC7B,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,CA2BvE,CAAA;AAKD,eAAO,MAAM,iBAAiB,QAAa,OAAO,CAAC,OAAO,CAQzD,CAAA;AA0ED,eAAO,MAAM,gBAAgB,GAC3B,aAAa,MAAM,EACnB,iBAAgB,MAAM,EAA4B,KACjD,OAAO,CAAC,MAAM,CAkBhB,CAAA;AAoCD,eAAO,MAAM,qBAAqB,GAChC,UAAU,MAAM,EAChB,WAAW,MAAM,EACjB,KAAK,MAAM,KACV,OAAO,CAAC,OAAO,CAgBjB,CAAA;AAKD,eAAO,MAAM,0BAA0B,GACrC,UAAU,MAAM,EAChB,WAAW,MAAM,EACjB,KAAK,MAAM,KACV,OAAO,CAAC,MAAM,GAAG,IAAI,CAoBvB,CAAA"}
|