@vertesia/cli 0.78.0-dev-28b447d → 0.78.0-dev.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.
Files changed (161) hide show
  1. package/lib/agent/commands.d.ts +11 -0
  2. package/lib/agent/commands.d.ts.map +1 -0
  3. package/lib/agent/commands.js +173 -0
  4. package/lib/agent/commands.js.map +1 -0
  5. package/lib/agent/connect.d.ts +7 -0
  6. package/lib/agent/connect.d.ts.map +1 -0
  7. package/lib/agent/connect.js +68 -0
  8. package/lib/agent/connect.js.map +1 -0
  9. package/lib/agent/docker-credential.d.ts +2 -0
  10. package/lib/agent/docker-credential.d.ts.map +1 -0
  11. package/lib/agent/docker-credential.js +50 -0
  12. package/lib/agent/docker-credential.js.map +1 -0
  13. package/lib/agent/docker.d.ts +10 -0
  14. package/lib/agent/docker.d.ts.map +1 -0
  15. package/lib/agent/docker.js +93 -0
  16. package/lib/agent/docker.js.map +1 -0
  17. package/lib/agent/index.d.ts +3 -0
  18. package/lib/agent/index.d.ts.map +1 -0
  19. package/lib/agent/index.js +89 -0
  20. package/lib/agent/index.js.map +1 -0
  21. package/lib/agent/project.d.ts +58 -0
  22. package/lib/agent/project.d.ts.map +1 -0
  23. package/lib/agent/project.js +148 -0
  24. package/lib/agent/project.js.map +1 -0
  25. package/lib/agent/refresh.d.ts +6 -0
  26. package/lib/agent/refresh.d.ts.map +1 -0
  27. package/lib/agent/refresh.js +47 -0
  28. package/lib/agent/refresh.js.map +1 -0
  29. package/lib/agent/registry.d.ts +7 -0
  30. package/lib/agent/registry.d.ts.map +1 -0
  31. package/lib/agent/registry.js +47 -0
  32. package/lib/agent/registry.js.map +1 -0
  33. package/lib/agent/version.d.ts +2 -0
  34. package/lib/agent/version.d.ts.map +1 -0
  35. package/lib/agent/version.js +4 -0
  36. package/lib/agent/version.js.map +1 -0
  37. package/lib/client.d.ts +4 -0
  38. package/lib/client.d.ts.map +1 -0
  39. package/lib/client.js +22 -0
  40. package/lib/client.js.map +1 -0
  41. package/lib/codegen/CodeBuilder.d.ts +16 -0
  42. package/lib/codegen/CodeBuilder.d.ts.map +1 -0
  43. package/lib/codegen/CodeBuilder.js +115 -0
  44. package/lib/codegen/CodeBuilder.js.map +1 -0
  45. package/lib/codegen/InteractionVersion.d.ts +29 -0
  46. package/lib/codegen/InteractionVersion.d.ts.map +1 -0
  47. package/lib/codegen/InteractionVersion.js +94 -0
  48. package/lib/codegen/InteractionVersion.js.map +1 -0
  49. package/lib/codegen/index.d.ts +3 -0
  50. package/lib/codegen/index.d.ts.map +1 -0
  51. package/lib/codegen/index.js +30 -0
  52. package/lib/codegen/index.js.map +1 -0
  53. package/lib/codegen/template.d.ts +3 -0
  54. package/lib/codegen/template.d.ts.map +1 -0
  55. package/lib/codegen/template.js +28 -0
  56. package/lib/codegen/template.js.map +1 -0
  57. package/lib/codegen/utils.d.ts +2 -0
  58. package/lib/codegen/utils.d.ts.map +1 -0
  59. package/lib/codegen/utils.js +4 -0
  60. package/lib/codegen/utils.js.map +1 -0
  61. package/lib/datagen/index.d.ts +3 -0
  62. package/lib/datagen/index.d.ts.map +1 -0
  63. package/lib/datagen/index.js +80 -0
  64. package/lib/datagen/index.js.map +1 -0
  65. package/lib/envs/index.d.ts +3 -0
  66. package/lib/envs/index.d.ts.map +1 -0
  67. package/lib/envs/index.js +24 -0
  68. package/lib/envs/index.js.map +1 -0
  69. package/lib/index.d.ts +2 -0
  70. package/lib/index.d.ts.map +1 -0
  71. package/lib/index.js +177 -0
  72. package/lib/index.js.map +1 -0
  73. package/lib/interactions/index.d.ts +3 -0
  74. package/lib/interactions/index.d.ts.map +1 -0
  75. package/lib/interactions/index.js +37 -0
  76. package/lib/interactions/index.js.map +1 -0
  77. package/lib/memory/index.d.ts +3 -0
  78. package/lib/memory/index.d.ts.map +1 -0
  79. package/lib/memory/index.js +15 -0
  80. package/lib/memory/index.js.map +1 -0
  81. package/lib/objects/commands.d.ts +14 -0
  82. package/lib/objects/commands.d.ts.map +1 -0
  83. package/lib/objects/commands.js +240 -0
  84. package/lib/objects/commands.js.map +1 -0
  85. package/lib/objects/index.d.ts +3 -0
  86. package/lib/objects/index.d.ts.map +1 -0
  87. package/lib/objects/index.js +37 -0
  88. package/lib/objects/index.js.map +1 -0
  89. package/lib/package.d.ts +8 -0
  90. package/lib/package.d.ts.map +1 -0
  91. package/lib/package.js +63 -0
  92. package/lib/package.js.map +1 -0
  93. package/lib/profiles/commands.d.ts +20 -0
  94. package/lib/profiles/commands.d.ts.map +1 -0
  95. package/lib/profiles/commands.js +191 -0
  96. package/lib/profiles/commands.js.map +1 -0
  97. package/lib/profiles/index.d.ts +65 -0
  98. package/lib/profiles/index.d.ts.map +1 -0
  99. package/lib/profiles/index.js +324 -0
  100. package/lib/profiles/index.js.map +1 -0
  101. package/lib/profiles/server/cors.d.ts +3 -0
  102. package/lib/profiles/server/cors.d.ts.map +1 -0
  103. package/lib/profiles/server/cors.js +18 -0
  104. package/lib/profiles/server/cors.js.map +1 -0
  105. package/lib/profiles/server/index.d.ts +12 -0
  106. package/lib/profiles/server/index.d.ts.map +1 -0
  107. package/lib/profiles/server/index.js +134 -0
  108. package/lib/profiles/server/index.js.map +1 -0
  109. package/lib/profiles/server/server.d.ts +4 -0
  110. package/lib/profiles/server/server.d.ts.map +1 -0
  111. package/lib/profiles/server/server.js +32 -0
  112. package/lib/profiles/server/server.js.map +1 -0
  113. package/lib/projects/index.d.ts +3 -0
  114. package/lib/projects/index.d.ts.map +1 -0
  115. package/lib/projects/index.js +17 -0
  116. package/lib/projects/index.js.map +1 -0
  117. package/lib/run/executor.d.ts +22 -0
  118. package/lib/run/executor.d.ts.map +1 -0
  119. package/lib/run/executor.js +182 -0
  120. package/lib/run/executor.js.map +1 -0
  121. package/lib/run/index.d.ts +3 -0
  122. package/lib/run/index.d.ts.map +1 -0
  123. package/lib/run/index.js +192 -0
  124. package/lib/run/index.js.map +1 -0
  125. package/lib/runs/index.d.ts +3 -0
  126. package/lib/runs/index.d.ts.map +1 -0
  127. package/lib/runs/index.js +48 -0
  128. package/lib/runs/index.js.map +1 -0
  129. package/lib/utils/console.d.ts +42 -0
  130. package/lib/utils/console.d.ts.map +1 -0
  131. package/lib/utils/console.js +256 -0
  132. package/lib/utils/console.js.map +1 -0
  133. package/lib/utils/stdio.d.ts +7 -0
  134. package/lib/utils/stdio.d.ts.map +1 -0
  135. package/lib/utils/stdio.js +35 -0
  136. package/lib/utils/stdio.js.map +1 -0
  137. package/lib/workflows/commands.d.ts +14 -0
  138. package/lib/workflows/commands.d.ts.map +1 -0
  139. package/lib/workflows/commands.js +232 -0
  140. package/lib/workflows/commands.js.map +1 -0
  141. package/lib/workflows/index.d.ts +3 -0
  142. package/lib/workflows/index.d.ts.map +1 -0
  143. package/lib/workflows/index.js +117 -0
  144. package/lib/workflows/index.js.map +1 -0
  145. package/lib/workflows/json-loader.d.ts +3 -0
  146. package/lib/workflows/json-loader.d.ts.map +1 -0
  147. package/lib/workflows/json-loader.js +16 -0
  148. package/lib/workflows/json-loader.js.map +1 -0
  149. package/lib/workflows/streams.d.ts +2 -0
  150. package/lib/workflows/streams.d.ts.map +1 -0
  151. package/lib/workflows/streams.js +419 -0
  152. package/lib/workflows/streams.js.map +1 -0
  153. package/lib/workflows/ts-loader.d.ts +3 -0
  154. package/lib/workflows/ts-loader.d.ts.map +1 -0
  155. package/lib/workflows/ts-loader.js +94 -0
  156. package/lib/workflows/ts-loader.js.map +1 -0
  157. package/lib/workflows/validation.d.ts +6 -0
  158. package/lib/workflows/validation.d.ts.map +1 -0
  159. package/lib/workflows/validation.js +22 -0
  160. package/lib/workflows/validation.js.map +1 -0
  161. package/package.json +71 -71
@@ -0,0 +1,240 @@
1
+ import { NodeStreamSource } from "@vertesia/client/node";
2
+ import enquirer from "enquirer";
3
+ import { createReadStream } from "fs";
4
+ import { readdir, stat } from "fs/promises";
5
+ import { glob } from 'glob';
6
+ import mime from "mime";
7
+ import { basename, join, resolve } from "path";
8
+ import { getClient } from "../client.js";
9
+ const { prompt } = enquirer;
10
+ const AUTOMATIC_TYPE_SELECTION = "auto";
11
+ const AUTOMATIC_TYPE_SELECTION_DESC = "Auto (Vertesia will analyze the file and select the most appropriate type)";
12
+ const TYPE_SELECTION_ERROR = "TypeSelectionError";
13
+ function splitInChunksWithSize(arr, size) {
14
+ if (size < 1) {
15
+ return [];
16
+ }
17
+ const chunks = [];
18
+ const len = arr.length;
19
+ let i = 0;
20
+ while (i < len) {
21
+ chunks.push(arr.slice(i, i + size));
22
+ i += size;
23
+ }
24
+ return chunks;
25
+ }
26
+ function splitInChunks(arr, chunksCount) {
27
+ if (arr.length < 1) {
28
+ return [];
29
+ }
30
+ if (chunksCount <= arr.length) {
31
+ const size = Math.ceil(arr.length / chunksCount);
32
+ return splitInChunksWithSize(arr, size);
33
+ }
34
+ else {
35
+ return [arr];
36
+ }
37
+ }
38
+ async function listFilesInDirectory(dir, recursive = false) {
39
+ return await readdir(dir, {
40
+ withFileTypes: true,
41
+ recursive,
42
+ }).then((entries) => entries.filter(ent => {
43
+ // exclude hidden files and include only file with extensions
44
+ return ent.isFile() && ent.name.lastIndexOf('.') > 0;
45
+ }).map(ent => join(ent.path || '', ent.name)));
46
+ }
47
+ export async function createObject(program, files, options) {
48
+ if (files.length === 0) {
49
+ return "No files specified";
50
+ }
51
+ else if (files.length > 1) {
52
+ const types = await listTypes(program);
53
+ const questions = [];
54
+ if (!options.type) {
55
+ questions.push({
56
+ type: 'select',
57
+ name: 'type',
58
+ message: "Select a Type",
59
+ choices: types,
60
+ limit: 10,
61
+ result() {
62
+ return this.focused.value;
63
+ }
64
+ });
65
+ const response = await prompt(questions);
66
+ options.type = response.type;
67
+ }
68
+ else {
69
+ const searchedType = findTypeValue(types, options.type);
70
+ if (searchedType === TYPE_SELECTION_ERROR) {
71
+ console.error(`${options.type} is not an existing type`);
72
+ process.exit(2);
73
+ }
74
+ options.type = searchedType;
75
+ }
76
+ if (options.type === AUTOMATIC_TYPE_SELECTION) {
77
+ delete options.type;
78
+ }
79
+ return createObjectFromFiles(program, files, options);
80
+ }
81
+ else {
82
+ let file = files[0];
83
+ if (file.indexOf('*') > -1) {
84
+ const files = await glob(file);
85
+ return createObjectFromFiles(program, files, options);
86
+ }
87
+ else if (file.includes("://")) {
88
+ return createObjectFromExternalSource(getClient(program), file, options);
89
+ }
90
+ else {
91
+ file = resolve(file);
92
+ let stats;
93
+ try {
94
+ stats = await stat(file);
95
+ }
96
+ catch (err) {
97
+ if (err.code === 'ENOENT') {
98
+ console.error('No such file or directory: ', file);
99
+ process.exit(2);
100
+ }
101
+ console.error(err);
102
+ process.exit(2);
103
+ }
104
+ const types = await listTypes(program);
105
+ const questions = [];
106
+ if (stats.isFile()) {
107
+ if (!options.type) {
108
+ questions.push({
109
+ type: 'select',
110
+ name: 'type',
111
+ message: "Select a Type",
112
+ choices: types,
113
+ limit: 10,
114
+ result() {
115
+ return this.focused.value;
116
+ }
117
+ });
118
+ const response = await prompt(questions);
119
+ options.type = response.type;
120
+ }
121
+ else {
122
+ const searchedType = findTypeValue(types, options.type);
123
+ if (searchedType === TYPE_SELECTION_ERROR) {
124
+ console.error(`${options.type} is not an existing type`);
125
+ process.exit(2);
126
+ }
127
+ options.type = searchedType;
128
+ }
129
+ if (options.type === AUTOMATIC_TYPE_SELECTION) {
130
+ delete options.type;
131
+ }
132
+ return createObjectFromFile(program, file, options);
133
+ }
134
+ else if (stats.isDirectory()) {
135
+ questions.push({
136
+ type: 'select',
137
+ name: 'type',
138
+ message: "Select a Type (the type will be used for all the files in the directory)",
139
+ choices: types,
140
+ limit: 10,
141
+ result() {
142
+ return this.focused.value;
143
+ }
144
+ });
145
+ const response = await prompt(questions);
146
+ options.type = response.type;
147
+ if (options.type === AUTOMATIC_TYPE_SELECTION) {
148
+ delete options.type;
149
+ }
150
+ const files = await listFilesInDirectory(file, options.recursive || false);
151
+ return createObjectFromFiles(program, files, options);
152
+ }
153
+ }
154
+ }
155
+ }
156
+ export async function createObjectFromFiles(program, files, options) {
157
+ if (!options)
158
+ options = {};
159
+ // split in 10 chunks
160
+ const chunks = splitInChunks(files, 10);
161
+ Promise.all(chunks.map(async (chunk) => {
162
+ for (const file of chunk) {
163
+ await createObjectFromFile(program, file, options);
164
+ }
165
+ }));
166
+ }
167
+ export async function createObjectFromFile(program, file, options) {
168
+ const client = getClient(program);
169
+ let res;
170
+ if (file.startsWith("s3://") || file.startsWith("gs://")) {
171
+ res = await createObjectFromExternalSource(client, file, options);
172
+ }
173
+ else {
174
+ res = await createObjectFromLocalFile(client, file, options);
175
+ }
176
+ console.log('Created object', res.id);
177
+ return res;
178
+ }
179
+ export async function createObjectFromLocalFile(client, file, options) {
180
+ const fileName = basename(file);
181
+ const stream = createReadStream(file);
182
+ const content = new NodeStreamSource(stream, fileName);
183
+ const mime_type = mime.getType(file);
184
+ if (mime_type) {
185
+ content.type = mime_type;
186
+ }
187
+ const res = await client.objects.create({
188
+ name: options.name || fileName,
189
+ type: options.type,
190
+ location: options.path,
191
+ content: content,
192
+ });
193
+ return res;
194
+ }
195
+ async function createObjectFromExternalSource(client, uri, options) {
196
+ return client.objects.createFromExternalSource(uri, {
197
+ name: options.name,
198
+ type: options.type,
199
+ location: options.path,
200
+ });
201
+ }
202
+ export async function updateObject(program, objectId, type, _options) {
203
+ const types = await listTypes(program);
204
+ var searchedType = findTypeValue(types, type);
205
+ if (searchedType === TYPE_SELECTION_ERROR) {
206
+ console.error(`${type} is not an existing type`);
207
+ process.exit(2);
208
+ }
209
+ if (searchedType === AUTOMATIC_TYPE_SELECTION) {
210
+ searchedType = undefined;
211
+ }
212
+ const payload = { type: searchedType };
213
+ console.log(await getClient(program).objects.update(objectId, payload));
214
+ }
215
+ export async function deleteObject(program, objectId, _options) {
216
+ await getClient(program).objects.delete(objectId);
217
+ }
218
+ export async function getObject(program, objectId, _options) {
219
+ const object = await getClient(program).objects.retrieve(objectId);
220
+ console.log(object);
221
+ }
222
+ //@ts-ignore
223
+ export async function listObjects(program, folderPath, _options) {
224
+ const objects = await getClient(program).objects.list();
225
+ console.log(objects.map(o => `${o.id}\t ${o.name}`).join('\n'));
226
+ }
227
+ export async function listTypes(program) {
228
+ var types = [];
229
+ types.push({ name: AUTOMATIC_TYPE_SELECTION_DESC, value: AUTOMATIC_TYPE_SELECTION });
230
+ const platformTypes = await getClient(program).types.list();
231
+ for (const type of platformTypes) {
232
+ types.push({ name: type.name, value: type.id });
233
+ }
234
+ return types;
235
+ }
236
+ export function findTypeValue(types, name) {
237
+ const type = types.find(type => type.name === name || type.id === name);
238
+ return type ? type.value : TYPE_SELECTION_ERROR;
239
+ }
240
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/objects/commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerObjectsCommand(program: Command): void;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/objects/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,QAoCtD"}
@@ -0,0 +1,37 @@
1
+ import { createObject, deleteObject, getObject, listObjects, updateObject } from "./commands.js";
2
+ export function registerObjectsCommand(program) {
3
+ const store = program.command("content");
4
+ store.command("post <file...>")
5
+ .description("Post a new object to the store. The file can be a s3 or gs uri to attach external blobs to the created object.")
6
+ .option('--name [name]', 'The name of the object to create. If not specified the file name will be used.')
7
+ .option('--type [type]', 'The type of the object to create or "auto" to let the application guess the type. If not specified, one can be selected from the list of existing types.')
8
+ .option('--mime [mime]', 'The mime-type of the file content. If not specified the mime type will be inferred from the file name extension.')
9
+ .option('--path [parentPath]', 'The path of the parent folder where the object is created. If not specified the object will be created in the root of the store.')
10
+ .option('-r, --recursive', 'Recurse directory if the file argument is a directory. The default is to not recurse.')
11
+ .action(async (files, options) => {
12
+ await createObject(program, files, options);
13
+ });
14
+ store.command("update <objectId> <type>")
15
+ .description("Update an existing object type given its ID")
16
+ .action(async (objectId, type, options) => {
17
+ await updateObject(program, objectId, type, options);
18
+ });
19
+ store.command('delete <objectId>')
20
+ .description("Delete an existing object given its ID")
21
+ .action((objectId, options) => {
22
+ deleteObject(program, objectId, options);
23
+ });
24
+ store.command('get <objectId>')
25
+ .description("Get an existing object given its ID")
26
+ .action((objectId, options) => {
27
+ getObject(program, objectId, options);
28
+ });
29
+ store.command('list [folderPath]')
30
+ .description("List the objects inside a folder. If no folder is specified all the objects are listed.")
31
+ .option('-l,--limit [limit]', 'Limit the number of objects returned. The default limit is 100. Useful for pagination.')
32
+ .option('-s,--skip [skip]', 'Skip the number of objects to skip. Default is 0. Useful for pagination.')
33
+ .action((folderPath, options) => {
34
+ listObjects(program, folderPath, options);
35
+ });
36
+ }
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/objects/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEjG,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IAEnD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEzC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC;SAC1B,WAAW,CAAC,gHAAgH,CAAC;SAC7H,MAAM,CAAC,eAAe,EAAE,gFAAgF,CAAC;SACzG,MAAM,CAAC,eAAe,EAAE,0JAA0J,CAAC;SACnL,MAAM,CAAC,eAAe,EAAE,kHAAkH,CAAC;SAC3I,MAAM,CAAC,qBAAqB,EAAE,kIAAkI,CAAC;SACjK,MAAM,CAAC,iBAAiB,EAAE,uFAAuF,CAAC;SAClH,MAAM,CAAC,KAAK,EAAE,KAAe,EAAE,OAA4B,EAAE,EAAE;QAC5D,MAAM,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IACP,KAAK,CAAC,OAAO,CAAC,0BAA0B,CAAC;SACpC,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,IAAY,EAAE,OAA4B,EAAE,EAAE;QAC3E,MAAM,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IACP,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC;SAC7B,WAAW,CAAC,wCAAwC,CAAC;SACrD,MAAM,CAAC,CAAC,QAAgB,EAAE,OAA4B,EAAE,EAAE;QACvD,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IACP,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC;SAC1B,WAAW,CAAC,qCAAqC,CAAC;SAClD,MAAM,CAAC,CAAC,QAAgB,EAAE,OAA4B,EAAE,EAAE;QACvD,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IACP,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC;SAC7B,WAAW,CAAC,yFAAyF,CAAC;SACtG,MAAM,CAAC,oBAAoB,EAAE,wFAAwF,CAAC;SACtH,MAAM,CAAC,kBAAkB,EAAE,0EAA0E,CAAC;SACtG,MAAM,CAAC,CAAC,UAA8B,EAAE,OAA4B,EAAE,EAAE;QACrE,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,8 @@
1
+ declare const packageDir: string;
2
+ declare function getPackage(): any;
3
+ declare function getVersion(): any;
4
+ declare function getLatestVersion(): Promise<any>;
5
+ export declare function upgrade(yes: boolean): Promise<void>;
6
+ declare function warnIfNotLatest(): Promise<void>;
7
+ export { getLatestVersion, getPackage, getVersion, packageDir, warnIfNotLatest };
8
+ //# sourceMappingURL=package.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../src/package.ts"],"names":[],"mappings":"AAQA,QAAA,MAAM,UAAU,QAAmD,CAAC;AAGpE,iBAAS,UAAU,QAKlB;AACD,iBAAS,UAAU,QAElB;AAED,iBAAe,gBAAgB,iBAO9B;AAED,wBAAsB,OAAO,CAAC,GAAG,EAAE,OAAO,iBA2BzC;AAED,iBAAe,eAAe,kBAM7B;AAED,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC"}
package/lib/package.js ADDED
@@ -0,0 +1,63 @@
1
+ import { spawn } from 'child_process';
2
+ import enquirer from "enquirer";
3
+ import { readFileSync } from 'fs';
4
+ import { dirname } from 'path';
5
+ import { fileURLToPath } from 'url';
6
+ const { prompt } = enquirer;
7
+ const packageDir = dirname(dirname(fileURLToPath(import.meta.url)));
8
+ let _package;
9
+ function getPackage() {
10
+ if (_package === undefined) {
11
+ _package = JSON.parse(readFileSync(`${packageDir}/package.json`, 'utf8'));
12
+ }
13
+ return _package;
14
+ }
15
+ function getVersion() {
16
+ return getPackage().version;
17
+ }
18
+ async function getLatestVersion() {
19
+ const { name } = getPackage();
20
+ const { version } = await fetch(`https://registry.npmjs.org/${name}/latest`, { signal: AbortSignal.timeout(900) })
21
+ .then(res => res.json())
22
+ .catch(() => undefined);
23
+ return version;
24
+ }
25
+ export async function upgrade(yes) {
26
+ const { version } = getPackage();
27
+ const latestVersion = await getLatestVersion();
28
+ if (latestVersion && version !== latestVersion) {
29
+ let doUpgrade = false;
30
+ if (!yes) {
31
+ console.log('There is a new version available (v' + latestVersion + ').');
32
+ const answer = await prompt({
33
+ name: 'upgrade',
34
+ type: 'confirm',
35
+ message: "Would you like to upgrade?",
36
+ initial: true,
37
+ });
38
+ if (answer.upgrade) {
39
+ doUpgrade = true;
40
+ }
41
+ }
42
+ else {
43
+ doUpgrade = true;
44
+ }
45
+ if (doUpgrade) {
46
+ spawn("npm", ["update", "-g", getPackage().name], {
47
+ stdio: 'inherit',
48
+ });
49
+ }
50
+ }
51
+ else {
52
+ console.log('No updates are available.');
53
+ }
54
+ }
55
+ async function warnIfNotLatest() {
56
+ const { version } = getPackage();
57
+ const latestVersion = await getLatestVersion();
58
+ if (latestVersion && version !== latestVersion) {
59
+ console.warn(`WARNING: You are using version ${version} of this package, but the latest version is ${latestVersion}.\nYou should update with \`npm i -g ${getPackage().name}\`\n`);
60
+ }
61
+ }
62
+ export { getLatestVersion, getPackage, getVersion, packageDir, warnIfNotLatest };
63
+ //# sourceMappingURL=package.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.js","sourceRoot":"","sources":["../src/package.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { ConfigResult } from './server/index.js';
2
+ export type OnResultCallback = (result: ConfigResult | undefined) => void | Promise<void>;
3
+ export declare function listProfiles(): Promise<string | undefined>;
4
+ export declare function useProfile(name?: string): Promise<void>;
5
+ export declare function showProfile(name?: string): void;
6
+ export declare function showActiveAuthToken(): void;
7
+ export declare function deleteProfile(name: string): void;
8
+ interface CreateProfileOptions {
9
+ target?: string;
10
+ apikey?: string;
11
+ project?: string;
12
+ account?: string;
13
+ onResult?: OnResultCallback;
14
+ }
15
+ export declare function createProfile(name?: string, options?: CreateProfileOptions): Promise<string>;
16
+ export declare function updateProfile(name?: string, onResult?: OnResultCallback, signal?: AbortSignal): Promise<void>;
17
+ export declare function updateCurrentProfile(onResult?: OnResultCallback, signal?: AbortSignal): void;
18
+ export declare function tryRefreshToken(): Promise<void>;
19
+ export {};
20
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/profiles/commands.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,MAAM,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAG1F,wBAAsB,YAAY,gCAiBjC;AAED,wBAAsB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,iBAK7C;AAED,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,QAmBxC;AAED,wBAAgB,mBAAmB,SAelC;AAGD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,QAEzC;AAED,UAAU,oBAAoB;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,gBAAgB,CAAA;CAC9B;AACD,wBAAsB,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,mBAoEpF;AAED,wBAAsB,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,WAAW,iBAUnG;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,WAAW,QAMrF;AAaD,wBAAsB,eAAe,kBAWpC"}
@@ -0,0 +1,191 @@
1
+ import colors from 'ansi-colors';
2
+ import enquirer from "enquirer";
3
+ import jwt from 'jsonwebtoken';
4
+ import { config, getConfigUrl, getServerUrls, shouldRefreshProfileToken } from "./index.js";
5
+ const { prompt } = enquirer;
6
+ export async function listProfiles() {
7
+ const selected = config.current?.name;
8
+ for (const profile of config.profiles) {
9
+ console.log(profile.name + (selected === profile.name ? " " + colors.symbols.check : ""));
10
+ }
11
+ if (!config.profiles.length) {
12
+ console.log("No profiles are defined. Run `vertesia profiles add` to add a new profile.");
13
+ console.log();
14
+ const r = await prompt({
15
+ type: "confirm",
16
+ name: 'create',
17
+ message: "Do you want to create a profile now?",
18
+ });
19
+ if (r.create) {
20
+ return createProfile();
21
+ }
22
+ }
23
+ }
24
+ export async function useProfile(name) {
25
+ if (!name) {
26
+ name = await selectProfile("Select the profile to use");
27
+ }
28
+ config.use(name).save();
29
+ }
30
+ export function showProfile(name) {
31
+ if (!name) {
32
+ if (config.profiles.length === 0) {
33
+ console.log('No profiles are defined. Run `vertesia profiles create` to add a new profile.');
34
+ return;
35
+ }
36
+ else {
37
+ console.log(JSON.stringify({
38
+ default: config.current?.name,
39
+ profiles: config.profiles,
40
+ }, undefined, 4));
41
+ }
42
+ }
43
+ else {
44
+ const profile = config.getProfile(name);
45
+ if (profile) {
46
+ console.log(JSON.stringify(profile, undefined, 4));
47
+ }
48
+ else {
49
+ console.error(`Profile ${name} not found`);
50
+ }
51
+ }
52
+ }
53
+ export function showActiveAuthToken() {
54
+ if (config.profiles.length === 0) {
55
+ console.log('No profiles are defined. Run `vertesia profiles create` to add a new profile.');
56
+ return;
57
+ }
58
+ else if (config.current) {
59
+ const token = jwt.decode(config.current.apikey, { json: true });
60
+ if (token?.exp && token.exp * 1000 < Date.now()) {
61
+ console.log("Authentication token expired. Create a new one ");
62
+ _doRefreshToken(config.current.name);
63
+ }
64
+ else {
65
+ console.log(config.current.apikey);
66
+ }
67
+ }
68
+ else {
69
+ console.log('No profile is selected. Run `vertesia auth refresh` to refresh the token');
70
+ }
71
+ }
72
+ export function deleteProfile(name) {
73
+ config.remove(name).save();
74
+ }
75
+ export async function createProfile(name, options = {}) {
76
+ const format = (value) => value.trim();
77
+ const questions = [];
78
+ if (!name) {
79
+ questions.push({
80
+ type: 'input',
81
+ name: 'name',
82
+ message: "Profile name",
83
+ format,
84
+ validate: (value) => {
85
+ const v = value.trim();
86
+ if (!v) {
87
+ return "Profile name cannot be empty";
88
+ }
89
+ if (config.hasProfile(v)) {
90
+ return `A profile named "${v}" already exists`;
91
+ }
92
+ return true;
93
+ }
94
+ });
95
+ }
96
+ if (!options.target) {
97
+ // only show local and staging in dev mode
98
+ const choices = config.isDevMode ? ['local', 'staging', 'preview', 'prod', 'custom'] : ['preview', 'prod'];
99
+ questions.push({
100
+ type: 'select',
101
+ name: 'target',
102
+ message: "Target environment",
103
+ choices,
104
+ initial: choices[0],
105
+ });
106
+ }
107
+ let target = options.target === "production" ? "prod" : options.target;
108
+ if (questions.length > 0) {
109
+ const response = await prompt(questions);
110
+ if (!name) {
111
+ name = response.name;
112
+ }
113
+ if (!target) {
114
+ target = response.target;
115
+ }
116
+ }
117
+ if (!target || !name) {
118
+ console.error("Invalid profile name or target");
119
+ process.exit(1);
120
+ }
121
+ if (options.apikey) {
122
+ if (!options.account || !options.project) {
123
+ console.error("When using --apikey you must provide the project and account IDs");
124
+ process.exit(1);
125
+ }
126
+ config.add({
127
+ account: options.account,
128
+ project: options.project,
129
+ name,
130
+ config_url: getConfigUrl(target),
131
+ apikey: options.apikey,
132
+ ...getServerUrls(target),
133
+ });
134
+ config.use(name).save();
135
+ }
136
+ else {
137
+ config.createProfile(name, target).start(options.onResult);
138
+ }
139
+ return name;
140
+ }
141
+ export async function updateProfile(name, onResult, signal) {
142
+ if (!name) {
143
+ name = await selectProfile("Select the profile to update");
144
+ }
145
+ const profile = config.getProfile(name);
146
+ if (!profile) {
147
+ console.error(`Profile ${name} not found`);
148
+ process.exit(1);
149
+ }
150
+ config.updateProfile(name).start(onResult, signal);
151
+ }
152
+ export function updateCurrentProfile(onResult, signal) {
153
+ if (!config.current) {
154
+ console.log("No profile is selected. Run `vertesia profiles use <name>` to select a profile");
155
+ process.exit(1);
156
+ }
157
+ config.updateProfile(config.current.name).start(onResult, signal);
158
+ }
159
+ async function selectProfile(message = "Select the profile") {
160
+ const response = await prompt({
161
+ type: 'select',
162
+ name: 'name',
163
+ message,
164
+ choices: config.profiles.map(p => p.name)
165
+ });
166
+ return response.name;
167
+ }
168
+ export async function tryRefreshToken() {
169
+ if (!config.current) {
170
+ console.log("No profile is selected. Run `vertesia profiles use <name>` to select a profile");
171
+ process.exit(1);
172
+ }
173
+ if (shouldRefreshProfileToken(config.current)) {
174
+ console.log();
175
+ console.log(colors.bold("Operation Failed:"), colors.red("Authentication token expired!"));
176
+ console.log();
177
+ _doRefreshToken(config.current.name);
178
+ }
179
+ }
180
+ async function _doRefreshToken(profileName, onResult) {
181
+ const r = await prompt({
182
+ name: 'refresh',
183
+ type: "confirm",
184
+ message: "Do you want to refresh the token for the current profile?",
185
+ initial: true,
186
+ });
187
+ if (r.refresh) {
188
+ config.updateProfile(profileName).start(onResult);
189
+ }
190
+ }
191
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/profiles/commands.ts"],"names":[],"mappings":"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"}