windmill-cli 1.407.2 → 1.408.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/esm/apps.js +3 -4
- package/esm/conf.js +2 -3
- package/esm/deps.js +18 -1
- package/esm/flow.js +21 -18
- package/esm/folder.js +2 -0
- package/esm/gen/core/OpenAPI.js +1 -1
- package/esm/instance.js +5 -3
- package/esm/main.js +1 -1
- package/esm/metadata.js +5 -6
- package/esm/settings.js +28 -18
- package/esm/sync.js +6 -6
- package/esm/types.js +3 -3
- package/esm/user.js +32 -19
- package/esm/utils.js +2 -1
- package/package.json +1 -1
- package/types/apps.d.ts.map +1 -1
- package/types/conf.d.ts.map +1 -1
- package/types/deps.d.ts +4 -1
- package/types/deps.d.ts.map +1 -1
- package/types/flow.d.ts.map +1 -1
- package/types/folder.d.ts.map +1 -1
- package/types/instance.d.ts.map +1 -1
- package/types/main.d.ts +1 -1
- package/types/metadata.d.ts.map +1 -1
- package/types/settings.d.ts +3 -0
- package/types/settings.d.ts.map +1 -1
- package/types/user.d.ts +3 -0
- package/types/user.d.ts.map +1 -1
- package/types/utils.d.ts.map +1 -1
package/esm/apps.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
// deno-lint-ignore-file no-explicit-any
|
|
2
|
-
import * as dntShim from "./_dnt.shims.js";
|
|
3
2
|
import { requireLogin, resolveWorkspace, validatePath } from "./context.js";
|
|
4
|
-
import { colors, Command, log, SEP, Table,
|
|
3
|
+
import { colors, Command, log, SEP, Table, yamlParseFile } from "./deps.js";
|
|
5
4
|
import * as wmill from "./gen/services.gen.js";
|
|
6
5
|
import { isSuperset } from "./types.js";
|
|
7
6
|
import { readInlinePathSync } from "./utils.js";
|
|
@@ -26,8 +25,8 @@ export async function pushApp(workspace, remotePath, localPath, message) {
|
|
|
26
25
|
if (!localPath.endsWith(SEP)) {
|
|
27
26
|
localPath += SEP;
|
|
28
27
|
}
|
|
29
|
-
const
|
|
30
|
-
const localApp =
|
|
28
|
+
const path = localPath + "app.yaml";
|
|
29
|
+
const localApp = (await yamlParseFile(path));
|
|
31
30
|
function replaceInlineScripts(rec) {
|
|
32
31
|
if (!rec) {
|
|
33
32
|
return;
|
package/esm/conf.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { log, yamlParse } from "./deps.js";
|
|
1
|
+
import { log, yamlParseFile } from "./deps.js";
|
|
3
2
|
export async function readConfigFile() {
|
|
4
3
|
try {
|
|
5
|
-
const conf =
|
|
4
|
+
const conf = (await yamlParseFile("wmill.yaml"));
|
|
6
5
|
if (conf?.defaultTs == undefined) {
|
|
7
6
|
log.warn("No defaultTs defined in your wmill.yaml. Using 'bun' as default.");
|
|
8
7
|
}
|
package/esm/deps.js
CHANGED
|
@@ -20,7 +20,24 @@ export { writeAllSync } from "./deps/jsr.io/@std/io/0.225.0/write_all.js";
|
|
|
20
20
|
export { copy } from "./deps/jsr.io/@std/io/0.225.0/copy.js";
|
|
21
21
|
export { readAll } from "./deps/jsr.io/@std/io/0.225.0/read_all.js";
|
|
22
22
|
export * as log from "./deps/jsr.io/@std/log/0.224.9/mod.js";
|
|
23
|
-
export { stringify as yamlStringify
|
|
23
|
+
export { stringify as yamlStringify } from "./deps/jsr.io/@std/yaml/1.0.5/mod.js";
|
|
24
|
+
import { parse as yamlParse } from "./deps/jsr.io/@std/yaml/1.0.5/mod.js";
|
|
25
|
+
export async function yamlParseFile(path, options = {}) {
|
|
26
|
+
try {
|
|
27
|
+
return yamlParse(await dntShim.Deno.readTextFile(path), options);
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
throw new Error(`Error parsing yaml ${path}`, { cause: e });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export function yamlParseContent(path, content, options = {}) {
|
|
34
|
+
try {
|
|
35
|
+
return yamlParse(content, options);
|
|
36
|
+
}
|
|
37
|
+
catch (e) {
|
|
38
|
+
throw new Error(`Error parsing yaml ${path}`, { cause: e });
|
|
39
|
+
}
|
|
40
|
+
}
|
|
24
41
|
// other
|
|
25
42
|
export * as Diff from "diff";
|
|
26
43
|
export { minimatch } from "minimatch";
|
package/esm/flow.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import * as dntShim from "./_dnt.shims.js";
|
|
3
3
|
import { isSuperset } from "./types.js";
|
|
4
4
|
import { Confirm, SEP, log, yamlStringify } from "./deps.js";
|
|
5
|
-
import { colors, Command, Table,
|
|
5
|
+
import { colors, Command, Table, yamlParseFile } from "./deps.js";
|
|
6
6
|
import * as wmill from "./gen/services.gen.js";
|
|
7
7
|
import { requireLogin, resolveWorkspace, validatePath } from "./context.js";
|
|
8
8
|
import { resolve, track_job } from "./script.js";
|
|
@@ -15,21 +15,23 @@ const alreadySynced = [];
|
|
|
15
15
|
export function replaceInlineScripts(modules, localPath, removeLocks) {
|
|
16
16
|
modules.forEach((m) => {
|
|
17
17
|
if (m.value.type == "rawscript") {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
else if (lock &&
|
|
25
|
-
typeof lock == "string" &&
|
|
26
|
-
lock.trimStart().startsWith("!inline ")) {
|
|
27
|
-
const path = lock.split(" ")[1];
|
|
28
|
-
try {
|
|
29
|
-
m.value.lock = readInlinePathSync(localPath + path);
|
|
18
|
+
if (m.value.content.startsWith("!inline")) {
|
|
19
|
+
const path = m.value.content.split(" ")[1];
|
|
20
|
+
m.value.content = dntShim.Deno.readTextFileSync(localPath + path);
|
|
21
|
+
const lock = m.value.lock;
|
|
22
|
+
if (removeLocks && removeLocks.includes(path)) {
|
|
23
|
+
m.value.lock = undefined;
|
|
30
24
|
}
|
|
31
|
-
|
|
32
|
-
|
|
25
|
+
else if (lock &&
|
|
26
|
+
typeof lock == "string" &&
|
|
27
|
+
lock.trimStart().startsWith("!inline ")) {
|
|
28
|
+
const path = lock.split(" ")[1];
|
|
29
|
+
try {
|
|
30
|
+
m.value.lock = readInlinePathSync(localPath + path);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
log.error(`Lock file ${path} not found`);
|
|
34
|
+
}
|
|
33
35
|
}
|
|
34
36
|
}
|
|
35
37
|
}
|
|
@@ -67,8 +69,7 @@ export async function pushFlow(workspace, remotePath, localPath, message) {
|
|
|
67
69
|
if (!localPath.endsWith(SEP)) {
|
|
68
70
|
localPath += SEP;
|
|
69
71
|
}
|
|
70
|
-
const
|
|
71
|
-
const localFlow = yamlParse(localFlowRaw);
|
|
72
|
+
const localFlow = (await yamlParseFile(localPath + "flow.yaml"));
|
|
72
73
|
replaceInlineScripts(localFlow.value.modules, localPath, undefined);
|
|
73
74
|
if (flow) {
|
|
74
75
|
if (isSuperset(localFlow, flow)) {
|
|
@@ -99,7 +100,9 @@ export async function pushFlow(workspace, remotePath, localPath, message) {
|
|
|
99
100
|
});
|
|
100
101
|
}
|
|
101
102
|
catch (e) {
|
|
102
|
-
throw new Error(
|
|
103
|
+
throw new Error(
|
|
104
|
+
//@ts-ignore
|
|
105
|
+
`Failed to create flow ${remotePath}: ${e.body ?? e.message}`);
|
|
103
106
|
}
|
|
104
107
|
}
|
|
105
108
|
}
|
package/esm/folder.js
CHANGED
|
@@ -55,6 +55,7 @@ export async function pushFolder(workspace, name, folder, localFolder) {
|
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
57
|
catch (e) {
|
|
58
|
+
//@ts-ignore
|
|
58
59
|
console.error(e.body);
|
|
59
60
|
throw e;
|
|
60
61
|
}
|
|
@@ -71,6 +72,7 @@ export async function pushFolder(workspace, name, folder, localFolder) {
|
|
|
71
72
|
});
|
|
72
73
|
}
|
|
73
74
|
catch (e) {
|
|
75
|
+
//@ts-ignore
|
|
74
76
|
throw Error(`Failed to create folder ${name}: ${e.body ?? e.message}`);
|
|
75
77
|
}
|
|
76
78
|
}
|
package/esm/gen/core/OpenAPI.js
CHANGED
package/esm/instance.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as dntShim from "./_dnt.shims.js";
|
|
2
|
-
import { Select, path, Confirm, yamlStringify,
|
|
2
|
+
import { Select, path, Confirm, yamlStringify, yamlParseFile, Command, setClient, Table, } from "./deps.js";
|
|
3
3
|
import * as wmill from "./gen/services.gen.js";
|
|
4
4
|
import { Input, colors, log } from "./deps.js";
|
|
5
5
|
import { loginInteractive } from "./login.js";
|
|
@@ -336,7 +336,7 @@ async function instancePush(opts) {
|
|
|
336
336
|
throw new Error("Workspace folder not found, are you in the right directory?");
|
|
337
337
|
}
|
|
338
338
|
try {
|
|
339
|
-
const workspaceSettings =
|
|
339
|
+
const workspaceSettings = (await yamlParseFile("settings.yaml"));
|
|
340
340
|
await workspaceSetup({
|
|
341
341
|
token: instance.token,
|
|
342
342
|
workspace: undefined,
|
|
@@ -428,7 +428,9 @@ async function whoami(opts) {
|
|
|
428
428
|
log.info(JSON.stringify(whoamiInfo, null, 2));
|
|
429
429
|
}
|
|
430
430
|
catch (error) {
|
|
431
|
-
log.error(
|
|
431
|
+
log.error(
|
|
432
|
+
//@ts-ignore
|
|
433
|
+
colors.red(`Failed to retrieve whoami information: ${error.message}`));
|
|
432
434
|
}
|
|
433
435
|
}
|
|
434
436
|
const command = new Command()
|
package/esm/main.js
CHANGED
|
@@ -33,7 +33,7 @@ export { flow, app, script, workspace, resource, user, variable, hub, folder, sc
|
|
|
33
33
|
// console.error(JSON.stringify(event.error, null, 4));
|
|
34
34
|
// }
|
|
35
35
|
// });
|
|
36
|
-
export const VERSION = "1.
|
|
36
|
+
export const VERSION = "1.408.1";
|
|
37
37
|
const command = new Command()
|
|
38
38
|
.name("wmill")
|
|
39
39
|
.action(() => log.info(`Welcome to Windmill CLI ${VERSION}. Use -h for help.`))
|
package/esm/metadata.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// deno-lint-ignore-file no-explicit-any
|
|
2
2
|
import * as dntShim from "./_dnt.shims.js";
|
|
3
|
-
import { SEP, colors, log, path,
|
|
3
|
+
import { SEP, colors, log, path, yamlParseFile, yamlStringify, } from "./deps.js";
|
|
4
4
|
import { defaultScriptMetadata, } from "./bootstrap/script_bootstrap.js";
|
|
5
5
|
import { instantiate as instantiateWasm, parse_ansible, parse_bash, parse_bigquery, parse_deno, parse_go, parse_graphql, parse_mssql, parse_mysql, parse_php, parse_powershell, parse_python, parse_rust, parse_snowflake, parse_sql, } from "./wasm/windmill_parser_wasm.generated.js";
|
|
6
6
|
import { inferContentTypeFromFilePath } from "./script_common.js";
|
|
@@ -69,7 +69,7 @@ export async function generateFlowLockInternal(folder, dryRun, workspace, justUp
|
|
|
69
69
|
else if (dryRun) {
|
|
70
70
|
return remote_path;
|
|
71
71
|
}
|
|
72
|
-
const flowValue =
|
|
72
|
+
const flowValue = (await yamlParseFile(folder + SEP + "flow.yaml"));
|
|
73
73
|
if (!justUpdateMetadataLock) {
|
|
74
74
|
const changedScripts = [];
|
|
75
75
|
//find hashes that do not correspond to previous hashes
|
|
@@ -602,7 +602,7 @@ export async function parseMetadataFile(scriptPath, generateMetadataIfMissing, g
|
|
|
602
602
|
try {
|
|
603
603
|
metadataFilePath = scriptPath + ".script.yaml";
|
|
604
604
|
await dntShim.Deno.stat(metadataFilePath);
|
|
605
|
-
const payload =
|
|
605
|
+
const payload = await yamlParseFile(metadataFilePath);
|
|
606
606
|
replaceLock(payload);
|
|
607
607
|
return {
|
|
608
608
|
path: metadataFilePath,
|
|
@@ -623,7 +623,7 @@ export async function parseMetadataFile(scriptPath, generateMetadataIfMissing, g
|
|
|
623
623
|
log.info((await blueColor())(`Generating lockfile and schema for ${metadataFilePath}`));
|
|
624
624
|
try {
|
|
625
625
|
await generateScriptMetadataInternal(generateMetadataIfMissing.path, generateMetadataIfMissing.workspaceRemote, generateMetadataIfMissing, false, false, globalDeps, codebases, false);
|
|
626
|
-
scriptInitialMetadata =
|
|
626
|
+
scriptInitialMetadata = (await yamlParseFile(metadataFilePath));
|
|
627
627
|
replaceLock(scriptInitialMetadata);
|
|
628
628
|
}
|
|
629
629
|
catch (e) {
|
|
@@ -641,8 +641,7 @@ export async function parseMetadataFile(scriptPath, generateMetadataIfMissing, g
|
|
|
641
641
|
const WMILL_LOCKFILE = "wmill-lock.yaml";
|
|
642
642
|
export async function readLockfile() {
|
|
643
643
|
try {
|
|
644
|
-
const
|
|
645
|
-
const read = yamlParse(lockfile);
|
|
644
|
+
const read = await yamlParseFile(WMILL_LOCKFILE);
|
|
646
645
|
if (typeof read == "object") {
|
|
647
646
|
return read;
|
|
648
647
|
}
|
package/esm/settings.js
CHANGED
|
@@ -2,7 +2,7 @@ import * as dntShim from "./_dnt.shims.js";
|
|
|
2
2
|
import { yamlStringify } from "./deps.js";
|
|
3
3
|
import { Confirm } from "./deps.js";
|
|
4
4
|
import { colors } from "./deps.js";
|
|
5
|
-
import {
|
|
5
|
+
import { yamlParseFile } from "./deps.js";
|
|
6
6
|
import { log } from "./deps.js";
|
|
7
7
|
import { compareInstanceObjects } from "./instance.js";
|
|
8
8
|
import { isSuperset } from "./types.js";
|
|
@@ -202,14 +202,20 @@ export async function pushWorkspaceKey(workspace, _path, key, localKey) {
|
|
|
202
202
|
log.debug(`Workspace encryption key is up to date`);
|
|
203
203
|
}
|
|
204
204
|
}
|
|
205
|
+
export async function readInstanceSettings() {
|
|
206
|
+
let localSettings = [];
|
|
207
|
+
try {
|
|
208
|
+
localSettings = (await yamlParseFile("instance_settings.yaml"));
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
log.warn("No instance_settings.yaml found");
|
|
212
|
+
}
|
|
213
|
+
return localSettings;
|
|
214
|
+
}
|
|
205
215
|
export async function pullInstanceSettings(preview = false) {
|
|
206
216
|
const remoteSettings = await wmill.listGlobalSettings();
|
|
207
217
|
if (preview) {
|
|
208
|
-
|
|
209
|
-
try {
|
|
210
|
-
localSettings = yamlParse(await dntShim.Deno.readTextFile("instance_settings.yaml"));
|
|
211
|
-
}
|
|
212
|
-
catch { }
|
|
218
|
+
const localSettings = await readInstanceSettings();
|
|
213
219
|
return compareInstanceObjects(remoteSettings, localSettings, "name", "setting");
|
|
214
220
|
}
|
|
215
221
|
else {
|
|
@@ -220,9 +226,7 @@ export async function pullInstanceSettings(preview = false) {
|
|
|
220
226
|
}
|
|
221
227
|
export async function pushInstanceSettings(preview = false, baseUrl) {
|
|
222
228
|
const remoteSettings = await wmill.listGlobalSettings();
|
|
223
|
-
let localSettings =
|
|
224
|
-
.then((raw) => yamlParse(raw))
|
|
225
|
-
.catch(() => []));
|
|
229
|
+
let localSettings = await readInstanceSettings();
|
|
226
230
|
if (baseUrl) {
|
|
227
231
|
localSettings = localSettings.filter((s) => s.name !== "base_url");
|
|
228
232
|
localSettings.push({
|
|
@@ -271,6 +275,16 @@ export async function pushInstanceSettings(preview = false, baseUrl) {
|
|
|
271
275
|
log.info(colors.green("Settings pushed to instance"));
|
|
272
276
|
}
|
|
273
277
|
}
|
|
278
|
+
export async function readLocalConfigs() {
|
|
279
|
+
let localConfigs = [];
|
|
280
|
+
try {
|
|
281
|
+
localConfigs = (await yamlParseFile("instance_configs.yaml"));
|
|
282
|
+
}
|
|
283
|
+
catch {
|
|
284
|
+
log.warn("No instance_configs.yaml found");
|
|
285
|
+
}
|
|
286
|
+
return localConfigs;
|
|
287
|
+
}
|
|
274
288
|
export async function pullInstanceConfigs(preview = false) {
|
|
275
289
|
const remoteConfigs = (await wmill.listConfigs()).map((x) => {
|
|
276
290
|
return {
|
|
@@ -279,11 +293,7 @@ export async function pullInstanceConfigs(preview = false) {
|
|
|
279
293
|
};
|
|
280
294
|
});
|
|
281
295
|
if (preview) {
|
|
282
|
-
|
|
283
|
-
try {
|
|
284
|
-
localConfigs = yamlParse(await dntShim.Deno.readTextFile("instance_configs.yaml"));
|
|
285
|
-
}
|
|
286
|
-
catch { }
|
|
296
|
+
const localConfigs = await readLocalConfigs();
|
|
287
297
|
return compareInstanceObjects(remoteConfigs, localConfigs, "name", "config");
|
|
288
298
|
}
|
|
289
299
|
else {
|
|
@@ -299,9 +309,7 @@ export async function pushInstanceConfigs(preview = false) {
|
|
|
299
309
|
name: removeWorkerPrefix(x.name),
|
|
300
310
|
};
|
|
301
311
|
});
|
|
302
|
-
const localConfigs =
|
|
303
|
-
.then((raw) => yamlParse(raw))
|
|
304
|
-
.catch(() => []));
|
|
312
|
+
const localConfigs = await readLocalConfigs();
|
|
305
313
|
if (preview) {
|
|
306
314
|
return compareInstanceObjects(localConfigs, remoteConfigs, "name", "config");
|
|
307
315
|
}
|
|
@@ -314,7 +322,9 @@ export async function pushInstanceConfigs(preview = false) {
|
|
|
314
322
|
}
|
|
315
323
|
try {
|
|
316
324
|
await wmill.updateConfig({
|
|
317
|
-
name: config.name.startsWith(
|
|
325
|
+
name: config.name.startsWith("worker__")
|
|
326
|
+
? config.name
|
|
327
|
+
: `worker__${config.name}`,
|
|
318
328
|
requestBody: config.config,
|
|
319
329
|
});
|
|
320
330
|
}
|
package/esm/sync.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as dntShim from "./_dnt.shims.js";
|
|
2
2
|
import { fetchVersion, requireLogin, resolveWorkspace } from "./context.js";
|
|
3
|
-
import { colors, Command, Confirm, ensureDir, minimatch, path, log, yamlStringify,
|
|
3
|
+
import { colors, Command, Confirm, ensureDir, minimatch, path, log, yamlStringify, yamlParseContent, SEP, } from "./deps.js";
|
|
4
4
|
import * as wmill from "./gen/services.gen.js";
|
|
5
5
|
import { getTypeStrFromPath, parseFromPath, pushObj, showConflict, showDiff, } from "./types.js";
|
|
6
6
|
import { downloadZip } from "./pull.js";
|
|
@@ -64,7 +64,7 @@ async function addCodebaseDigestIfRelevant(path, content, codebases) {
|
|
|
64
64
|
if (isTs) {
|
|
65
65
|
const c = findCodebase(path, codebases);
|
|
66
66
|
if (c) {
|
|
67
|
-
const parsed =
|
|
67
|
+
const parsed = yamlParseContent(path, content);
|
|
68
68
|
if (parsed && typeof parsed == "object") {
|
|
69
69
|
parsed["codebase"] = c.digest;
|
|
70
70
|
parsed["lock"] = undefined;
|
|
@@ -551,7 +551,7 @@ export async function elementsToMap(els, ignore, json, skips) {
|
|
|
551
551
|
o = JSON.parse(content);
|
|
552
552
|
}
|
|
553
553
|
else {
|
|
554
|
-
o =
|
|
554
|
+
o = yamlParseContent(path, content);
|
|
555
555
|
}
|
|
556
556
|
if (o["is_secret"]) {
|
|
557
557
|
continue;
|
|
@@ -575,7 +575,7 @@ async function compareDynFSElement(els1, els2, ignore, json, skips, ignoreMetada
|
|
|
575
575
|
const changes = [];
|
|
576
576
|
function parseYaml(k, v) {
|
|
577
577
|
if (k.endsWith(".script.yaml")) {
|
|
578
|
-
const o =
|
|
578
|
+
const o = yamlParseContent(k, v);
|
|
579
579
|
if (typeof o == "object") {
|
|
580
580
|
if (Array.isArray(o?.["lock"])) {
|
|
581
581
|
o["lock"] = o["lock"].join("\n");
|
|
@@ -587,7 +587,7 @@ async function compareDynFSElement(els1, els2, ignore, json, skips, ignoreMetada
|
|
|
587
587
|
return o;
|
|
588
588
|
}
|
|
589
589
|
else if (k.endsWith(".app.yaml")) {
|
|
590
|
-
const o =
|
|
590
|
+
const o = yamlParseContent(k, v);
|
|
591
591
|
const o2 = o["policy"];
|
|
592
592
|
if (typeof o2 == "object") {
|
|
593
593
|
if (o2["on_behalf_of"] != undefined) {
|
|
@@ -600,7 +600,7 @@ async function compareDynFSElement(els1, els2, ignore, json, skips, ignoreMetada
|
|
|
600
600
|
return o;
|
|
601
601
|
}
|
|
602
602
|
else {
|
|
603
|
-
return
|
|
603
|
+
return yamlParseContent(k, v);
|
|
604
604
|
}
|
|
605
605
|
}
|
|
606
606
|
for (const [k, v] of Object.entries(m1)) {
|
package/esm/types.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// deno-lint-ignore-file no-explicit-any
|
|
2
2
|
import * as dntShim from "./_dnt.shims.js";
|
|
3
|
-
import { Diff, SEP, colors, log, path,
|
|
3
|
+
import { Diff, SEP, colors, log, path, yamlParseContent, yamlStringify, } from "./deps.js";
|
|
4
4
|
import { pushApp } from "./apps.js";
|
|
5
5
|
import { pushFolder } from "./folder.js";
|
|
6
6
|
import { pushFlow } from "./flow.js";
|
|
@@ -111,7 +111,7 @@ export async function pushObj(workspace, p, befObj, newObj, plainSecrets, alread
|
|
|
111
111
|
}
|
|
112
112
|
export function parseFromPath(p, content) {
|
|
113
113
|
return p.endsWith(".yaml")
|
|
114
|
-
?
|
|
114
|
+
? yamlParseContent(p, content)
|
|
115
115
|
: p.endsWith(".json")
|
|
116
116
|
? JSON.parse(content)
|
|
117
117
|
: content;
|
|
@@ -121,7 +121,7 @@ export function parseFromFile(p) {
|
|
|
121
121
|
return JSON.parse(dntShim.Deno.readTextFileSync(p));
|
|
122
122
|
}
|
|
123
123
|
else if (p.endsWith(".yaml") || p.endsWith(".yml")) {
|
|
124
|
-
return
|
|
124
|
+
return yamlParseContent(p, dntShim.Deno.readTextFileSync(p));
|
|
125
125
|
}
|
|
126
126
|
else {
|
|
127
127
|
throw new Error("Could not read file " + p);
|
package/esm/user.js
CHANGED
|
@@ -3,7 +3,7 @@ import * as dntShim from "./_dnt.shims.js";
|
|
|
3
3
|
import { requireLogin } from "./context.js";
|
|
4
4
|
import { isSuperset, removeType, removePathPrefix, } from "./types.js";
|
|
5
5
|
import { compareInstanceObjects } from "./instance.js";
|
|
6
|
-
import { colors, Command, log, Table, yamlStringify,
|
|
6
|
+
import { colors, Command, log, Table, yamlStringify, yamlParseFile, } from "./deps.js";
|
|
7
7
|
import * as wmill from "./gen/services.gen.js";
|
|
8
8
|
async function list(opts) {
|
|
9
9
|
await requireLogin(opts);
|
|
@@ -116,6 +116,7 @@ export async function pushWorkspaceUser(workspace, path, user, localUser) {
|
|
|
116
116
|
});
|
|
117
117
|
}
|
|
118
118
|
catch (e) {
|
|
119
|
+
//@ts-ignore
|
|
119
120
|
console.error(e.body);
|
|
120
121
|
throw e;
|
|
121
122
|
}
|
|
@@ -137,6 +138,7 @@ export async function pushWorkspaceUser(workspace, path, user, localUser) {
|
|
|
137
138
|
});
|
|
138
139
|
}
|
|
139
140
|
catch (e) {
|
|
141
|
+
//@ts-ignore
|
|
140
142
|
console.error(e.body);
|
|
141
143
|
throw e;
|
|
142
144
|
}
|
|
@@ -185,6 +187,7 @@ export async function pushGroup(workspace, path, group, localGroup) {
|
|
|
185
187
|
});
|
|
186
188
|
}
|
|
187
189
|
catch (e) {
|
|
190
|
+
//@ts-ignore
|
|
188
191
|
console.error(e.body);
|
|
189
192
|
throw e;
|
|
190
193
|
}
|
|
@@ -231,6 +234,7 @@ export async function pushGroup(workspace, path, group, localGroup) {
|
|
|
231
234
|
}
|
|
232
235
|
}
|
|
233
236
|
catch (e) {
|
|
237
|
+
//@ts-ignore
|
|
234
238
|
console.error(e.body);
|
|
235
239
|
throw e;
|
|
236
240
|
}
|
|
@@ -256,6 +260,7 @@ export async function pushGroup(workspace, path, group, localGroup) {
|
|
|
256
260
|
});
|
|
257
261
|
}
|
|
258
262
|
catch (e) {
|
|
263
|
+
//@ts-ignore
|
|
259
264
|
console.error(e.body);
|
|
260
265
|
throw e;
|
|
261
266
|
}
|
|
@@ -296,12 +301,14 @@ export async function pushGroup(workspace, path, group, localGroup) {
|
|
|
296
301
|
}
|
|
297
302
|
}
|
|
298
303
|
catch (e) {
|
|
304
|
+
//@ts-ignore
|
|
299
305
|
console.error(e.body);
|
|
300
306
|
throw e;
|
|
301
307
|
}
|
|
302
308
|
}
|
|
303
309
|
}
|
|
304
310
|
catch (e) {
|
|
311
|
+
//@ts-ignore
|
|
305
312
|
console.error(e.body);
|
|
306
313
|
throw e;
|
|
307
314
|
}
|
|
@@ -310,12 +317,7 @@ export async function pushGroup(workspace, path, group, localGroup) {
|
|
|
310
317
|
export async function pullInstanceUsers(preview = false) {
|
|
311
318
|
const remoteUsers = await wmill.globalUsersExport();
|
|
312
319
|
if (preview) {
|
|
313
|
-
|
|
314
|
-
try {
|
|
315
|
-
const raw = await dntShim.Deno.readTextFile("instance_users.yaml");
|
|
316
|
-
localUsers = yamlParse(raw);
|
|
317
|
-
}
|
|
318
|
-
catch { }
|
|
320
|
+
const localUsers = await readInstanceUsers();
|
|
319
321
|
return compareInstanceObjects(remoteUsers, localUsers, "email", "user");
|
|
320
322
|
}
|
|
321
323
|
else {
|
|
@@ -324,11 +326,29 @@ export async function pullInstanceUsers(preview = false) {
|
|
|
324
326
|
log.info(colors.green("Users written to instance_users.yaml"));
|
|
325
327
|
}
|
|
326
328
|
}
|
|
329
|
+
export async function readInstanceUsers() {
|
|
330
|
+
let localUsers = [];
|
|
331
|
+
try {
|
|
332
|
+
localUsers = (await yamlParseFile("instance_users.yaml"));
|
|
333
|
+
}
|
|
334
|
+
catch {
|
|
335
|
+
log.warn("No instance_users.yaml file found");
|
|
336
|
+
}
|
|
337
|
+
return localUsers;
|
|
338
|
+
}
|
|
339
|
+
export async function readInstanceGroups() {
|
|
340
|
+
let localGroups = [];
|
|
341
|
+
try {
|
|
342
|
+
localGroups = (await yamlParseFile("instance_groups.yaml"));
|
|
343
|
+
}
|
|
344
|
+
catch {
|
|
345
|
+
log.warn("No instance_groups.yaml file found");
|
|
346
|
+
}
|
|
347
|
+
return localGroups;
|
|
348
|
+
}
|
|
327
349
|
export async function pushInstanceUsers(preview = false) {
|
|
328
350
|
const remoteUsers = await wmill.globalUsersExport();
|
|
329
|
-
const localUsers =
|
|
330
|
-
.then((raw) => yamlParse(raw))
|
|
331
|
-
.catch(() => []));
|
|
351
|
+
const localUsers = await readInstanceUsers();
|
|
332
352
|
if (preview) {
|
|
333
353
|
return compareInstanceObjects(localUsers, remoteUsers, "email", "user");
|
|
334
354
|
}
|
|
@@ -343,12 +363,7 @@ export async function pushInstanceUsers(preview = false) {
|
|
|
343
363
|
export async function pullInstanceGroups(preview = false) {
|
|
344
364
|
const remoteGroups = await wmill.exportInstanceGroups();
|
|
345
365
|
if (preview) {
|
|
346
|
-
|
|
347
|
-
try {
|
|
348
|
-
const raw = await dntShim.Deno.readTextFile("instance_groups.yaml");
|
|
349
|
-
localGroups = yamlParse(raw);
|
|
350
|
-
}
|
|
351
|
-
catch { }
|
|
366
|
+
const localGroups = await readInstanceGroups();
|
|
352
367
|
return compareInstanceObjects(remoteGroups, localGroups, "name", "group");
|
|
353
368
|
}
|
|
354
369
|
else {
|
|
@@ -359,9 +374,7 @@ export async function pullInstanceGroups(preview = false) {
|
|
|
359
374
|
}
|
|
360
375
|
export async function pushInstanceGroups(preview = false) {
|
|
361
376
|
const remoteGroups = await wmill.exportInstanceGroups();
|
|
362
|
-
const localGroups =
|
|
363
|
-
.then((raw) => yamlParse(raw))
|
|
364
|
-
.catch(() => []));
|
|
377
|
+
const localGroups = await readInstanceGroups();
|
|
365
378
|
if (preview) {
|
|
366
379
|
return compareInstanceObjects(localGroups, remoteGroups, "name", "group");
|
|
367
380
|
}
|
package/esm/utils.js
CHANGED
|
@@ -59,7 +59,8 @@ export function deepEqual(a, b) {
|
|
|
59
59
|
if (a.valueOf !== Object.prototype.valueOf) {
|
|
60
60
|
return a.valueOf() === b.valueOf();
|
|
61
61
|
}
|
|
62
|
-
if (a.toString !== Object.prototype.toString
|
|
62
|
+
if (a.toString !== Object.prototype.toString &&
|
|
63
|
+
typeof a.toString == "function") {
|
|
63
64
|
return a.toString() === b.toString();
|
|
64
65
|
}
|
|
65
66
|
const keys = Object.keys(a);
|
package/package.json
CHANGED
package/types/apps.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apps.d.ts","sourceRoot":"","sources":["../src/apps.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"apps.d.ts","sourceRoot":"","sources":["../src/apps.ts"],"names":[],"mappings":"AAEA,OAAO,EAAU,OAAO,EAAkC,MAAM,WAAW,CAAC;AAE5E,OAAO,EAAe,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAKzD,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,GAAG,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAID,wBAAsB,OAAO,CAC3B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CA2Ef;AA0CD,QAAA,MAAM,OAAO;;;;;;oBAKS,CAAC;AAEvB,eAAe,OAAO,CAAC"}
|
package/types/conf.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conf.d.ts","sourceRoot":"","sources":["../src/conf.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"conf.d.ts","sourceRoot":"","sources":["../src/conf.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,QAAQ;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;KACZ,EAAE,CAAC;IACJ,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAe3D;AAED,wBAAsB,yBAAyB,CAAC,CAAC,EAC/C,IAAI,EAAE,CAAC,GACN,OAAO,CAAC,CAAC,GAAG,WAAW,CAAC,CAG1B"}
|
package/types/deps.d.ts
CHANGED
|
@@ -17,7 +17,10 @@ export { writeAllSync } from "./deps/jsr.io/@std/io/0.225.0/write_all.js";
|
|
|
17
17
|
export { copy } from "./deps/jsr.io/@std/io/0.225.0/copy.js";
|
|
18
18
|
export { readAll } from "./deps/jsr.io/@std/io/0.225.0/read_all.js";
|
|
19
19
|
export * as log from "./deps/jsr.io/@std/log/0.224.9/mod.js";
|
|
20
|
-
export { stringify as yamlStringify
|
|
20
|
+
export { stringify as yamlStringify } from "./deps/jsr.io/@std/yaml/1.0.5/mod.js";
|
|
21
|
+
import { ParseOptions } from "./deps/jsr.io/@std/yaml/1.0.5/mod.js";
|
|
22
|
+
export declare function yamlParseFile(path: string, options?: ParseOptions): Promise<unknown>;
|
|
23
|
+
export declare function yamlParseContent(path: string, content: string, options?: ParseOptions): unknown;
|
|
21
24
|
export * as Diff from "diff";
|
|
22
25
|
export { minimatch } from "minimatch";
|
|
23
26
|
export { default as JSZip } from "jszip";
|
package/types/deps.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../src/deps.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,+DAA+D,CAAC;AACxF,OAAO,EAAE,KAAK,EAAE,MAAM,6DAA6D,CAAC;AACpF,OAAO,EAAE,MAAM,EAAE,MAAM,+DAA+D,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,iEAAiE,CAAC;AACzF,OAAO,EAAE,MAAM,EAAE,MAAM,iEAAiE,CAAC;AACzF,OAAO,EAAE,OAAO,EAAE,MAAM,kEAAkE,CAAC;AAC3F,OAAO,EAAE,KAAK,EAAE,MAAM,gEAAgE,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,uEAAuE,CAAC;AACvG,OAAO,EAAE,WAAW,EAAE,MAAM,gFAAgF,CAAC;AAC7G,OAAO,EAAE,QAAQ,EAAE,MAAM,uEAAuE,CAAC;AAEjG,OAAO,EAAE,kBAAkB,EAAE,MAAM,2EAA2E,CAAC;AAE/G,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,SAAS,IAAI,GAAG,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,KAAK,IAAI,MAAM,sCAAsC,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,uCAAuC,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,2CAA2C,CAAC;AAEpE,OAAO,KAAK,GAAG,MAAM,uCAAuC,CAAC;AAC7D,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../src/deps.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,+DAA+D,CAAC;AACxF,OAAO,EAAE,KAAK,EAAE,MAAM,6DAA6D,CAAC;AACpF,OAAO,EAAE,MAAM,EAAE,MAAM,+DAA+D,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,iEAAiE,CAAC;AACzF,OAAO,EAAE,MAAM,EAAE,MAAM,iEAAiE,CAAC;AACzF,OAAO,EAAE,OAAO,EAAE,MAAM,kEAAkE,CAAC;AAC3F,OAAO,EAAE,KAAK,EAAE,MAAM,gEAAgE,CAAC;AACvF,OAAO,EAAE,cAAc,EAAE,MAAM,uEAAuE,CAAC;AACvG,OAAO,EAAE,WAAW,EAAE,MAAM,gFAAgF,CAAC;AAC7G,OAAO,EAAE,QAAQ,EAAE,MAAM,uEAAuE,CAAC;AAEjG,OAAO,EAAE,kBAAkB,EAAE,MAAM,2EAA2E,CAAC;AAE/G,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,SAAS,IAAI,GAAG,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,KAAK,IAAI,MAAM,sCAAsC,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,uCAAuC,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,2CAA2C,CAAC;AAEpE,OAAO,KAAK,GAAG,MAAM,uCAAuC,CAAC;AAC7D,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAElF,OAAO,EAAsB,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAExF,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,oBAM3E;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,YAAiB,WAO3B;AAID,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAChD,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,MAAM,MAAM,SAAS,CAAC;AAIlC,wBAAgB,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,QAazD"}
|
package/types/flow.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../src/flow.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAc,MAAM,YAAY,CAAC;AAEvD,OAAO,EAAU,OAAO,
|
|
1
|
+
{"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../src/flow.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAc,MAAM,YAAY,CAAC;AAEvD,OAAO,EAAU,OAAO,EAAwB,MAAM,WAAW,CAAC;AAUlE,OAAO,EAAQ,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,CAAC,EAAE,GAAG,CAAC;CACd;AAID,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,UAAU,EAAE,EACrB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,QAsClC;AAED,wBAAsB,QAAQ,CAC5B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAwDf;AAkKD,wBAAgB,SAAS,CACvB,IAAI,EAAE,aAAa,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAC9D,QAAQ,EAAE,MAAM,QAuBjB;AAED,QAAA,MAAM,OAAO;;;;;;;;;;;;oBAwCc,CAAC;AAE5B,eAAe,OAAO,CAAC"}
|
package/types/folder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"folder.d.ts","sourceRoot":"","sources":["../src/folder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAU,OAAO,EAAmB,MAAM,WAAW,CAAC;AAK7D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAClC,WAAW,EAAE;QAAE,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,SAAS,CAAC;IACvD,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAwBD,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,EACvC,WAAW,EAAE,UAAU,GACtB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"folder.d.ts","sourceRoot":"","sources":["../src/folder.ts"],"names":[],"mappings":"AAGA,OAAO,EAAU,OAAO,EAAmB,MAAM,WAAW,CAAC;AAK7D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAClC,WAAW,EAAE;QAAE,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,SAAS,CAAC;IACvD,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAwBD,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,EACvC,WAAW,EAAE,UAAU,GACtB,OAAO,CAAC,IAAI,CAAC,CAqDf;AA0BD,QAAA,MAAM,OAAO;;;;;;oBAQS,CAAC;AAEvB,eAAe,OAAO,CAAC"}
|
package/types/instance.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance.d.ts","sourceRoot":"","sources":["../src/instance.ts"],"names":[],"mappings":"AACA,OAAO,EAML,OAAO,EAGR,MAAM,WAAW,CAAC;AAgCnB,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAiBxD;AACD,wBAAsB,WAAW,CAC/B,IAAI,EAAE,EAAE,EACR,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,EAAE,MAAM,GAAG,SAAS;;;;;GA2C1B;AA4BD,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,IAAI;KACpC,CAAC,IAAI,CAAC,GAAG,MAAM;CACjB,CAAC;AACF,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,EACrD,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAC/B,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAC7B,MAAM,EAAE,CAAC,EACT,UAAU,EAAE,MAAM,UAwBnB;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,wBAAsB,YAAY,CAChC,IAAI,EAAE,mBAAmB,EACzB,QAAQ,EAAE,OAAO,qBAwDlB;AA2TD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAS9B;
|
|
1
|
+
{"version":3,"file":"instance.d.ts","sourceRoot":"","sources":["../src/instance.ts"],"names":[],"mappings":"AACA,OAAO,EAML,OAAO,EAGR,MAAM,WAAW,CAAC;AAgCnB,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAiBxD;AACD,wBAAsB,WAAW,CAC/B,IAAI,EAAE,EAAE,EACR,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,KAAK,EAAE,MAAM,GAAG,SAAS;;;;;GA2C1B;AA4BD,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,IAAI;KACpC,CAAC,IAAI,CAAC,GAAG,MAAM;CACjB,CAAC;AACF,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,EACrD,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAC/B,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,EAC7B,MAAM,EAAE,CAAC,EACT,UAAU,EAAE,MAAM,UAwBnB;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,wBAAsB,YAAY,CAChC,IAAI,EAAE,mBAAmB,EACzB,QAAQ,EAAE,OAAO,qBAwDlB;AA2TD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAS9B;AAgBD,QAAA,MAAM,OAAO;;;;;;oBAyFW,CAAC;AAEzB,eAAe,OAAO,CAAC"}
|
package/types/main.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ import { pull as hubPull } from "./hub.js";
|
|
|
19
19
|
import { pull, push } from "./sync.js";
|
|
20
20
|
import { add as workspaceAdd } from "./workspace.js";
|
|
21
21
|
export { flow, app, script, workspace, resource, user, variable, hub, folder, schedule, sync, instance, dev, hubPull, pull, push, workspaceAdd, };
|
|
22
|
-
export declare const VERSION = "1.
|
|
22
|
+
export declare const VERSION = "1.408.1";
|
|
23
23
|
declare const command: Command<{
|
|
24
24
|
workspace?: (import("./deps/jsr.io/@windmill-labs/cliffy-command/1.0.0-rc.5/mod.js").StringType & string) | undefined;
|
|
25
25
|
} & {
|
package/types/metadata.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"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"}
|
package/types/settings.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Config, GlobalSetting } from "./gen/types.gen.js";
|
|
1
2
|
export interface SimplifiedSettings {
|
|
2
3
|
auto_invite_enabled: boolean;
|
|
3
4
|
auto_invite_as: string;
|
|
@@ -17,8 +18,10 @@ export interface SimplifiedSettings {
|
|
|
17
18
|
}
|
|
18
19
|
export declare function pushWorkspaceSettings(workspace: string, _path: string, settings: SimplifiedSettings | undefined, localSettings: SimplifiedSettings): Promise<void>;
|
|
19
20
|
export declare function pushWorkspaceKey(workspace: string, _path: string, key: string | undefined, localKey: string): Promise<void>;
|
|
21
|
+
export declare function readInstanceSettings(): Promise<GlobalSetting[]>;
|
|
20
22
|
export declare function pullInstanceSettings(preview?: boolean): Promise<number | undefined>;
|
|
21
23
|
export declare function pushInstanceSettings(preview?: boolean, baseUrl?: string): Promise<number | undefined>;
|
|
24
|
+
export declare function readLocalConfigs(): Promise<Config[]>;
|
|
22
25
|
export declare function pullInstanceConfigs(preview?: boolean): Promise<number | undefined>;
|
|
23
26
|
export declare function pushInstanceConfigs(preview?: boolean): Promise<number | undefined>;
|
|
24
27
|
//# sourceMappingURL=settings.d.ts.map
|
package/types/settings.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAG3D,MAAM,WAAW,kBAAkB;IAKjC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wBAAwB,CAAC,EAAE,GAAG,CAAC;IAC/B,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,uBAAuB,EAAE,OAAO,CAAC;IACjC,kBAAkB,CAAC,EAAE,GAAG,CAAC;IACzB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,kBAAkB,GAAG,SAAS,EACxC,aAAa,EAAE,kBAAkB,iBA2LlC;AAED,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,QAAQ,EAAE,MAAM,iBA4BjB;AAED,wBAAsB,oBAAoB,6BAWzC;AAED,wBAAsB,oBAAoB,CAAC,OAAO,UAAQ,+BAsBzD;AAED,wBAAsB,oBAAoB,CACxC,OAAO,GAAE,OAAe,EACxB,OAAO,CAAC,EAAE,MAAM,+BA2DjB;AAED,wBAAsB,gBAAgB,sBASrC;AAED,wBAAsB,mBAAmB,CAAC,OAAO,UAAQ,+BA2BxD;AAED,wBAAsB,mBAAmB,CAAC,OAAO,GAAE,OAAe,+BAmDjE"}
|
package/types/user.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Command } from "./deps.js";
|
|
2
|
+
import { ExportedUser, InstanceGroup } from "./gen/types.gen.js";
|
|
2
3
|
interface SimplifiedUser {
|
|
3
4
|
role: string;
|
|
4
5
|
username: string;
|
|
@@ -12,6 +13,8 @@ interface SimplifiedGroup {
|
|
|
12
13
|
}
|
|
13
14
|
export declare function pushGroup(workspace: string, path: string, group: SimplifiedGroup | undefined, localGroup: SimplifiedGroup): Promise<void>;
|
|
14
15
|
export declare function pullInstanceUsers(preview?: boolean): Promise<number | undefined>;
|
|
16
|
+
export declare function readInstanceUsers(): Promise<ExportedUser[]>;
|
|
17
|
+
export declare function readInstanceGroups(): Promise<InstanceGroup[]>;
|
|
15
18
|
export declare function pushInstanceUsers(preview?: boolean): Promise<number | undefined>;
|
|
16
19
|
export declare function pullInstanceGroups(preview?: boolean): Promise<number | undefined>;
|
|
17
20
|
export declare function pushInstanceGroups(preview?: boolean): Promise<number | undefined>;
|
package/types/user.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../src/user.ts"],"names":[],"mappings":"AAWA,OAAO,EAEL,OAAO,EAKR,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../src/user.ts"],"names":[],"mappings":"AAWA,OAAO,EAEL,OAAO,EAKR,MAAM,WAAW,CAAC;AAEnB,OAAO,EAEL,YAAY,EAEZ,aAAa,EACd,MAAM,oBAAoB,CAAC;AAwF5B,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,cAAc,GAAG,SAAS,EAChC,SAAS,EAAE,cAAc,GACxB,OAAO,CAAC,IAAI,CAAC,CA2Ef;AAED,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,eAAe,GAAG,SAAS,EAClC,UAAU,EAAE,eAAe,GAC1B,OAAO,CAAC,IAAI,CAAC,CAgLf;AAED,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,OAAe,+BAc/D;AAED,wBAAsB,iBAAiB,4BAQtC;AAED,wBAAsB,kBAAkB,6BAUvC;AAED,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,OAAe,+BAc/D;AAED,wBAAsB,kBAAkB,CAAC,OAAO,UAAQ,+BAgBvD;AAED,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,OAAe,+BAchE;AAED,QAAA,MAAM,OAAO;;;;;;;;;;oBA8BgB,CAAC;AAE9B,eAAe,OAAO,CAAC"}
|
package/types/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AASA,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AASA,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CA2EhD;AAED,wBAAgB,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAa/D;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,mBAWzD;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGnE;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,MAAM,CAAC,CAGjB;AAMD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,oBAE/B;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOpD"}
|