codify-plugin-lib 1.0.176 → 1.0.178
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/messages/sender.d.ts +1 -0
- package/dist/messages/sender.js +10 -0
- package/dist/plugin/plugin.js +1 -1
- package/dist/resource/resource-controller.d.ts +2 -2
- package/dist/resource/resource-controller.js +20 -13
- package/dist/resource/resource.d.ts +1 -1
- package/package.json +2 -2
- package/src/messages/sender.ts +13 -0
- package/src/plugin/plugin.ts +2 -1
- package/src/resource/resource-controller.ts +21 -13
- package/src/resource/resource.ts +1 -1
- package/dist/entities/change-set.d.ts +0 -24
- package/dist/entities/change-set.js +0 -152
- package/dist/entities/errors.d.ts +0 -4
- package/dist/entities/errors.js +0 -7
- package/dist/entities/plan-types.d.ts +0 -25
- package/dist/entities/plan-types.js +0 -1
- package/dist/entities/plan.d.ts +0 -15
- package/dist/entities/plan.js +0 -127
- package/dist/entities/plugin.d.ts +0 -16
- package/dist/entities/plugin.js +0 -80
- package/dist/entities/resource-options.d.ts +0 -31
- package/dist/entities/resource-options.js +0 -76
- package/dist/entities/resource-types.d.ts +0 -11
- package/dist/entities/resource-types.js +0 -1
- package/dist/entities/resource.d.ts +0 -42
- package/dist/entities/resource.js +0 -303
- package/dist/entities/stateful-parameter.d.ts +0 -29
- package/dist/entities/stateful-parameter.js +0 -46
- package/dist/entities/transform-parameter.d.ts +0 -4
- package/dist/entities/transform-parameter.js +0 -2
- package/dist/pty/vitest.config.d.ts +0 -2
- package/dist/pty/vitest.config.js +0 -11
- package/dist/resource/stateful-parameter.d.ts +0 -165
- package/dist/resource/stateful-parameter.js +0 -94
- package/dist/utils/spawn-2.d.ts +0 -5
- package/dist/utils/spawn-2.js +0 -7
- package/dist/utils/spawn.d.ts +0 -29
- package/dist/utils/spawn.js +0 -124
package/dist/utils/spawn.d.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import { SpawnOptions } from 'node:child_process';
|
|
3
|
-
export declare enum SpawnStatus {
|
|
4
|
-
SUCCESS = "success",
|
|
5
|
-
ERROR = "error"
|
|
6
|
-
}
|
|
7
|
-
export interface SpawnResult {
|
|
8
|
-
status: SpawnStatus;
|
|
9
|
-
data: string;
|
|
10
|
-
}
|
|
11
|
-
type CodifySpawnOptions = {
|
|
12
|
-
cwd?: string;
|
|
13
|
-
throws?: boolean;
|
|
14
|
-
requiresRoot?: boolean;
|
|
15
|
-
} & Omit<SpawnOptions, 'detached' | 'shell' | 'stdio'>;
|
|
16
|
-
/**
|
|
17
|
-
*
|
|
18
|
-
* @param cmd Command to run. Ex: `rm -rf`
|
|
19
|
-
* @param opts Standard options for node spawn. Additional argument:
|
|
20
|
-
* throws determines if a shell will throw a JS error. Defaults to true
|
|
21
|
-
*
|
|
22
|
-
* @see promiseSpawn
|
|
23
|
-
* @see spawn
|
|
24
|
-
*
|
|
25
|
-
* @returns SpawnResult { status: SUCCESS | ERROR; data: string }
|
|
26
|
-
*/
|
|
27
|
-
export declare function $(cmd: string, opts?: CodifySpawnOptions): Promise<SpawnResult>;
|
|
28
|
-
export declare function isDebug(): boolean;
|
|
29
|
-
export {};
|
package/dist/utils/spawn.js
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { Ajv } from 'ajv';
|
|
2
|
-
import { MessageCmd, SudoRequestResponseDataSchema } from 'codify-schemas';
|
|
3
|
-
import { spawn } from 'node:child_process';
|
|
4
|
-
import { SudoError } from '../errors.js';
|
|
5
|
-
const ajv = new Ajv({
|
|
6
|
-
strict: true,
|
|
7
|
-
});
|
|
8
|
-
const validateSudoRequestResponse = ajv.compile(SudoRequestResponseDataSchema);
|
|
9
|
-
export var SpawnStatus;
|
|
10
|
-
(function (SpawnStatus) {
|
|
11
|
-
SpawnStatus["SUCCESS"] = "success";
|
|
12
|
-
SpawnStatus["ERROR"] = "error";
|
|
13
|
-
})(SpawnStatus || (SpawnStatus = {}));
|
|
14
|
-
/**
|
|
15
|
-
*
|
|
16
|
-
* @param cmd Command to run. Ex: `rm -rf`
|
|
17
|
-
* @param opts Standard options for node spawn. Additional argument:
|
|
18
|
-
* throws determines if a shell will throw a JS error. Defaults to true
|
|
19
|
-
*
|
|
20
|
-
* @see promiseSpawn
|
|
21
|
-
* @see spawn
|
|
22
|
-
*
|
|
23
|
-
* @returns SpawnResult { status: SUCCESS | ERROR; data: string }
|
|
24
|
-
*/
|
|
25
|
-
export async function $(cmd, opts) {
|
|
26
|
-
const throws = opts?.throws ?? true;
|
|
27
|
-
console.log(`Running command: ${cmd}`);
|
|
28
|
-
try {
|
|
29
|
-
// TODO: Need to benchmark the effects of using sh vs zsh for shell.
|
|
30
|
-
// Seems like zsh shells run slower
|
|
31
|
-
let result;
|
|
32
|
-
if (!opts?.requiresRoot) {
|
|
33
|
-
result = await internalSpawn(cmd, opts ?? {});
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
result = await externalSpawnWithSudo(cmd, opts);
|
|
37
|
-
}
|
|
38
|
-
if (result.status !== SpawnStatus.SUCCESS) {
|
|
39
|
-
throw new Error(result.data);
|
|
40
|
-
}
|
|
41
|
-
return result;
|
|
42
|
-
}
|
|
43
|
-
catch (error) {
|
|
44
|
-
if (isDebug()) {
|
|
45
|
-
console.error(`CodifySpawn error for command ${cmd}`, error);
|
|
46
|
-
}
|
|
47
|
-
if (error.message?.startsWith('sudo:')) {
|
|
48
|
-
throw new SudoError(cmd);
|
|
49
|
-
}
|
|
50
|
-
if (throws) {
|
|
51
|
-
throw error;
|
|
52
|
-
}
|
|
53
|
-
if (error instanceof Error) {
|
|
54
|
-
return {
|
|
55
|
-
status: SpawnStatus.ERROR,
|
|
56
|
-
data: error.message,
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
return {
|
|
60
|
-
status: SpawnStatus.ERROR,
|
|
61
|
-
data: error + '',
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
async function internalSpawn(cmd, opts) {
|
|
66
|
-
return new Promise((resolve, reject) => {
|
|
67
|
-
const output = [];
|
|
68
|
-
// Source start up shells to emulate a users environment vs. a non-interactive non-login shell script
|
|
69
|
-
// Ignore all stdin
|
|
70
|
-
const _process = spawn(`source ~/.zshrc; ${cmd}`, [], {
|
|
71
|
-
...opts,
|
|
72
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
73
|
-
shell: 'zsh',
|
|
74
|
-
});
|
|
75
|
-
const { stdout, stderr, stdin } = _process;
|
|
76
|
-
stdout.setEncoding('utf8');
|
|
77
|
-
stderr.setEncoding('utf8');
|
|
78
|
-
stdout.on('data', (data) => {
|
|
79
|
-
output.push(data.toString());
|
|
80
|
-
});
|
|
81
|
-
stderr.on('data', (data) => {
|
|
82
|
-
output.push(data.toString());
|
|
83
|
-
});
|
|
84
|
-
_process.on('error', (data) => {
|
|
85
|
-
});
|
|
86
|
-
// please node that this is not a full replacement for 'inherit'
|
|
87
|
-
// the child process can and will detect if stdout is a pty and change output based on it
|
|
88
|
-
// the terminal context is lost & ansi information (coloring) etc will be lost
|
|
89
|
-
if (stdout && stderr) {
|
|
90
|
-
stdout.pipe(process.stdout);
|
|
91
|
-
stderr.pipe(process.stderr);
|
|
92
|
-
}
|
|
93
|
-
_process.on('close', (code) => {
|
|
94
|
-
resolve({
|
|
95
|
-
status: code === 0 ? SpawnStatus.SUCCESS : SpawnStatus.ERROR,
|
|
96
|
-
data: output.join('\n'),
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
async function externalSpawnWithSudo(cmd, opts) {
|
|
102
|
-
return await new Promise((resolve) => {
|
|
103
|
-
const listener = (data) => {
|
|
104
|
-
if (data.cmd === MessageCmd.SUDO_REQUEST + '_Response') {
|
|
105
|
-
process.removeListener('message', listener);
|
|
106
|
-
if (!validateSudoRequestResponse(data.data)) {
|
|
107
|
-
throw new Error(`Invalid response for sudo request: ${JSON.stringify(validateSudoRequestResponse.errors, null, 2)}`);
|
|
108
|
-
}
|
|
109
|
-
resolve(data.data);
|
|
110
|
-
}
|
|
111
|
-
};
|
|
112
|
-
process.on('message', listener);
|
|
113
|
-
process.send({
|
|
114
|
-
cmd: MessageCmd.SUDO_REQUEST,
|
|
115
|
-
data: {
|
|
116
|
-
command: cmd,
|
|
117
|
-
options: opts ?? {},
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
export function isDebug() {
|
|
123
|
-
return process.env.DEBUG != null && process.env.DEBUG.includes('codify'); // TODO: replace with debug library
|
|
124
|
-
}
|