@uniformdev/cli 18.16.1-alpha.6 → 18.17.1-alpha.13
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/{chunk-IRPO3X2Q.mjs → chunk-NNLVNLDW.mjs} +470 -21
- package/dist/index.js +4889 -180
- package/dist/index.mjs +4346 -49
- package/dist/sync/index.mjs +17 -406
- package/package.json +23 -23
package/dist/sync/index.mjs
CHANGED
|
@@ -1,410 +1,21 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
id: identifier,
|
|
20
|
-
object: current,
|
|
21
|
-
providerId: identifier,
|
|
22
|
-
displayName: selectDisplayName(current)
|
|
23
|
-
};
|
|
24
|
-
return result;
|
|
25
|
-
}, {});
|
|
26
|
-
async function* getObjects() {
|
|
27
|
-
for (const item of Object.values(objectIndex)) {
|
|
28
|
-
yield item;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
function extractCurrent() {
|
|
32
|
-
return Object.entries(objectIndex).sort((a, b) => a[0].localeCompare(b[0])).map((entry) => entry[1].object);
|
|
33
|
-
}
|
|
34
|
-
return {
|
|
35
|
-
objects: getObjects(),
|
|
36
|
-
deleteObject: async (providerId) => {
|
|
37
|
-
delete objectIndex[providerId];
|
|
38
|
-
},
|
|
39
|
-
writeObject: async (objectToWrite) => {
|
|
40
|
-
const id = selectIdentifier(objectToWrite.object);
|
|
41
|
-
objectIndex[id] = objectToWrite;
|
|
42
|
-
},
|
|
43
|
-
extractCurrent,
|
|
44
|
-
onSyncComplete: onSyncComplete ? (isTarget) => onSyncComplete(isTarget, extractCurrent()) : void 0
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// src/sync/fileSyncEngineDataSource.ts
|
|
49
|
-
var import_chalk = __toESM(require_source());
|
|
50
|
-
import { existsSync, mkdirSync } from "fs";
|
|
51
|
-
import { readdir, unlink } from "fs/promises";
|
|
52
|
-
import { extname as extname2, join } from "path";
|
|
53
|
-
|
|
54
|
-
// src/sync/util.ts
|
|
55
|
-
import { writeFileSync } from "fs";
|
|
56
|
-
import { readFileSync } from "fs";
|
|
57
|
-
import { HttpsProxyAgent } from "https-proxy-agent";
|
|
58
|
-
import unfetch from "isomorphic-unfetch";
|
|
59
|
-
import { dump, load } from "js-yaml";
|
|
60
|
-
import { extname } from "path";
|
|
61
|
-
function withApiOptions(yargs) {
|
|
62
|
-
var _a, _b, _c;
|
|
63
|
-
return yargs.option("apiKey", {
|
|
64
|
-
describe: "Uniform API key. Defaults to UNIFORM_CLI_API_KEY or UNIFORM_API_KEY env. Supports dotenv.",
|
|
65
|
-
default: (_c = (_b = (_a = process.env.UNIFORM_CLI_API_KEY) != null ? _a : process.env.CANVAS_CLI_API_KEY) != null ? _b : process.env.UPM_CLI_API_KEY) != null ? _c : process.env.UNIFORM_API_KEY,
|
|
66
|
-
demandOption: true,
|
|
67
|
-
type: "string"
|
|
68
|
-
}).option("apiHost", {
|
|
69
|
-
describe: "Uniform host. Defaults to UNIFORM_CLI_BASE_URL env var or https://uniform.app. Supports dotenv.",
|
|
70
|
-
default: process.env.UNIFORM_CLI_BASE_URL || "https://uniform.app",
|
|
71
|
-
demandOption: true,
|
|
72
|
-
type: "string"
|
|
73
|
-
}).option("edgeApiHost", {
|
|
74
|
-
describe: "Uniform edge host. Defaults to UNIFORM_CLI_BASE_EDGE_URL env var or https://uniform.global. Supports dotenv.",
|
|
75
|
-
default: process.env.UNIFORM_CLI_BASE_EDGE_URL || "https://uniform.global",
|
|
76
|
-
demandOption: true,
|
|
77
|
-
type: "string"
|
|
78
|
-
}).option("proxy", {
|
|
79
|
-
describe: "HTTPS proxy to use for Uniform API calls. Defaults to HTTPS_PROXY, https_proxy, ALL_PROXY, or all_proxy env vars (in that order). Supports dotenv.",
|
|
80
|
-
default: process.env.HTTPS_PROXY || process.env.https_proxy || process.env.ALL_PROXY || process.env.all_proxy,
|
|
81
|
-
type: "string"
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
function nodeFetchProxy(proxy) {
|
|
85
|
-
if (proxy) {
|
|
86
|
-
console.log(`\u{1F991} Using proxy ${proxy}`);
|
|
87
|
-
}
|
|
88
|
-
const wrappedFetch = (input, init) => {
|
|
89
|
-
if (proxy) {
|
|
90
|
-
const wrappedInit = {
|
|
91
|
-
...init,
|
|
92
|
-
agent: new HttpsProxyAgent(proxy)
|
|
93
|
-
};
|
|
94
|
-
return unfetch(input, wrappedInit);
|
|
95
|
-
}
|
|
96
|
-
return unfetch(input, init);
|
|
97
|
-
};
|
|
98
|
-
return wrappedFetch;
|
|
99
|
-
}
|
|
100
|
-
function withProjectOptions(yargs) {
|
|
101
|
-
var _a, _b, _c;
|
|
102
|
-
return yargs.option("project", {
|
|
103
|
-
describe: "Uniform project ID. Defaults to UNIFORM_CLI_PROJECT_ID or UNIFORM_PROJECT_ID env. Supports dotenv.",
|
|
104
|
-
default: (_c = (_b = (_a = process.env.UNIFORM_CLI_PROJECT_ID) != null ? _a : process.env.CANVAS_CLI_PROJECT_ID) != null ? _b : process.env.UPM_CLI_PROJECT_ID) != null ? _c : process.env.UNIFORM_PROJECT_ID,
|
|
105
|
-
demandOption: true,
|
|
106
|
-
type: "string",
|
|
107
|
-
alias: ["p"]
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
function withFormatOptions(yargs) {
|
|
111
|
-
return yargs.option("format", {
|
|
112
|
-
alias: ["f"],
|
|
113
|
-
describe: "Output format",
|
|
114
|
-
default: "yaml",
|
|
115
|
-
choices: ["yaml", "json"],
|
|
116
|
-
type: "string"
|
|
117
|
-
}).option("filename", {
|
|
118
|
-
alias: ["o"],
|
|
119
|
-
describe: "Output filename. If not specified, write to stdout.",
|
|
120
|
-
type: "string"
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
function withDiffOptions(yargs) {
|
|
124
|
-
var _a;
|
|
125
|
-
return yargs.option("diff", {
|
|
126
|
-
describe: "Whether to show diffs in stdout. off = no diffs; update = on for updates; on = updates, creates, deletes. Can be set by UNIFORM_CLI_DIFF_MODE environment variable.",
|
|
127
|
-
default: (_a = process.env.UNIFORM_CLI_DIFF_MODE) != null ? _a : "off",
|
|
128
|
-
type: "string",
|
|
129
|
-
choices: ["off", "update", "on"],
|
|
130
|
-
alias: ["d"]
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
function isPathAPackageFile(path) {
|
|
134
|
-
const extension = extname(path);
|
|
135
|
-
return extension === ".yaml" || extension === ".yml" || extension === ".json";
|
|
136
|
-
}
|
|
137
|
-
function emitWithFormat(object, format, filename) {
|
|
138
|
-
let content;
|
|
139
|
-
if (filename && !format) {
|
|
140
|
-
const extension = extname(filename);
|
|
141
|
-
if (extension === ".yaml" || extension === ".yml") {
|
|
142
|
-
format = "yaml";
|
|
143
|
-
} else if (extension === ".json") {
|
|
144
|
-
format = "json";
|
|
145
|
-
}
|
|
146
|
-
} else if (!format) {
|
|
147
|
-
throw new Error("Format must be specified when no filename is passed");
|
|
148
|
-
}
|
|
149
|
-
switch (format) {
|
|
150
|
-
case "json":
|
|
151
|
-
content = JSON.stringify(object, null, 2);
|
|
152
|
-
break;
|
|
153
|
-
case "yaml":
|
|
154
|
-
content = dump(object);
|
|
155
|
-
break;
|
|
156
|
-
default:
|
|
157
|
-
throw new Error(`Unsupported format: ${format}`);
|
|
158
|
-
}
|
|
159
|
-
if (filename) {
|
|
160
|
-
writeFileSync(filename, content, "utf8");
|
|
161
|
-
} else {
|
|
162
|
-
console.log(content);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
function readFileToObject(filename) {
|
|
166
|
-
const file = readFileSync(filename, "utf8");
|
|
167
|
-
return load(file, { filename, json: true });
|
|
168
|
-
}
|
|
169
|
-
async function* paginateAsync(fetchPage, options) {
|
|
170
|
-
const perPage = options.pageSize || 100;
|
|
171
|
-
let offset = 0;
|
|
172
|
-
let pageData = [];
|
|
173
|
-
do {
|
|
174
|
-
pageData = await fetchPage(offset, perPage);
|
|
175
|
-
for (const item of pageData) {
|
|
176
|
-
yield item;
|
|
177
|
-
}
|
|
178
|
-
offset += perPage;
|
|
179
|
-
} while (pageData.length === perPage);
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
// src/sync/fileSyncEngineDataSource.ts
|
|
183
|
-
async function createFileSyncEngineDataSource({
|
|
184
|
-
directory,
|
|
185
|
-
format = "yaml",
|
|
186
|
-
selectIdentifier,
|
|
187
|
-
selectDisplayName = selectIdentifier,
|
|
188
|
-
selectFilename
|
|
189
|
-
}) {
|
|
190
|
-
const dirExists = existsSync(directory);
|
|
191
|
-
if (!dirExists) {
|
|
192
|
-
mkdirSync(directory, { recursive: true });
|
|
193
|
-
}
|
|
194
|
-
const rawFilenames = await readdir(directory, "utf-8");
|
|
195
|
-
const filenames = new Set(
|
|
196
|
-
rawFilenames.filter((filename) => {
|
|
197
|
-
const ext = extname2(filename);
|
|
198
|
-
return ext === `.json` || ext === `.yaml` || ext === `.yml`;
|
|
199
|
-
})
|
|
200
|
-
);
|
|
201
|
-
const getFullFilename = (id) => join(directory, `${id}.${format}`);
|
|
202
|
-
async function* getObjects() {
|
|
203
|
-
for (const filename of filenames) {
|
|
204
|
-
const fullFilename = join(directory, filename);
|
|
205
|
-
try {
|
|
206
|
-
const contents = await readFileToObject(fullFilename);
|
|
207
|
-
const object = {
|
|
208
|
-
id: selectIdentifier(contents),
|
|
209
|
-
displayName: selectDisplayName(contents),
|
|
210
|
-
providerId: fullFilename,
|
|
211
|
-
object: contents
|
|
212
|
-
};
|
|
213
|
-
yield object;
|
|
214
|
-
} catch (e) {
|
|
215
|
-
console.error(import_chalk.default.red(`Failed to read ${fullFilename}, data is likely invalid.
|
|
216
|
-
${e == null ? void 0 : e.message}`));
|
|
217
|
-
throw e;
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
return {
|
|
222
|
-
objects: getObjects(),
|
|
223
|
-
deleteObject: async (providerId) => {
|
|
224
|
-
await unlink(providerId);
|
|
225
|
-
},
|
|
226
|
-
writeObject: async (object) => {
|
|
227
|
-
if (selectFilename) {
|
|
228
|
-
emitWithFormat(object.object, format, join(directory, `${selectFilename(object.object)}.${format}`));
|
|
229
|
-
} else {
|
|
230
|
-
emitWithFormat(object.object, format, getFullFilename(object.id));
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
};
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
// src/sync/package.ts
|
|
237
|
-
import fs from "fs";
|
|
238
|
-
function readUniformPackage(filename, assertExists) {
|
|
239
|
-
if (!assertExists && !fs.existsSync(filename)) {
|
|
240
|
-
return {};
|
|
241
|
-
}
|
|
242
|
-
const packageContents = readFileToObject(filename);
|
|
243
|
-
if (typeof packageContents !== "object") {
|
|
244
|
-
throw new Error(`Package ${filename} does not appear valid.`);
|
|
245
|
-
}
|
|
246
|
-
return packageContents;
|
|
247
|
-
}
|
|
248
|
-
function writeUniformPackage(filename, packageContents) {
|
|
249
|
-
emitWithFormat(packageContents, void 0, filename);
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
// src/sync/syncEngine.ts
|
|
253
|
-
import { diffJson, diffLines } from "diff";
|
|
254
|
-
import isEqualWith from "lodash.isequalwith";
|
|
255
|
-
async function syncEngine({
|
|
256
|
-
source,
|
|
257
|
-
target,
|
|
258
|
-
compareContents = (source2, target2) => {
|
|
259
|
-
return isEqualWith(
|
|
260
|
-
source2.object,
|
|
261
|
-
target2.object,
|
|
262
|
-
(_a, _b, key) => key === "created" || key === "modified" ? true : void 0
|
|
263
|
-
);
|
|
264
|
-
},
|
|
265
|
-
mode,
|
|
266
|
-
allowEmptySource = false,
|
|
267
|
-
whatIf = false,
|
|
268
|
-
log = () => {
|
|
269
|
-
}
|
|
270
|
-
}) {
|
|
271
|
-
var _a, _b;
|
|
272
|
-
const targetItems = /* @__PURE__ */ new Map();
|
|
273
|
-
for await (const obj of target.objects) {
|
|
274
|
-
targetItems.set(obj.id, obj);
|
|
275
|
-
}
|
|
276
|
-
const actions = [];
|
|
277
|
-
let sourceHasItems = false;
|
|
278
|
-
for await (const sourceObject of source.objects) {
|
|
279
|
-
sourceHasItems = true;
|
|
280
|
-
const id = sourceObject.id;
|
|
281
|
-
const targetObject = targetItems.get(id);
|
|
282
|
-
if (targetObject) {
|
|
283
|
-
if (!compareContents(sourceObject, targetObject)) {
|
|
284
|
-
if (mode === "createOrUpdate" || mode === "mirror") {
|
|
285
|
-
const process2 = async (sourceObject2, targetObject2) => {
|
|
286
|
-
var _a2;
|
|
287
|
-
if (!whatIf) {
|
|
288
|
-
try {
|
|
289
|
-
await target.writeObject(sourceObject2, targetObject2);
|
|
290
|
-
} catch (e) {
|
|
291
|
-
throw new SyncEngineError(e, sourceObject2);
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
log({
|
|
295
|
-
action: "update",
|
|
296
|
-
id,
|
|
297
|
-
providerId: sourceObject2.providerId,
|
|
298
|
-
displayName: (_a2 = sourceObject2.displayName) != null ? _a2 : sourceObject2.providerId,
|
|
299
|
-
whatIf,
|
|
300
|
-
diff: diffJson(targetObject2.object, sourceObject2.object)
|
|
301
|
-
});
|
|
302
|
-
};
|
|
303
|
-
actions.push(process2(sourceObject, targetObject));
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
targetItems.delete(id);
|
|
307
|
-
} else {
|
|
308
|
-
const process2 = async (sourceObject2, id2) => {
|
|
309
|
-
var _a2;
|
|
310
|
-
if (!whatIf) {
|
|
311
|
-
try {
|
|
312
|
-
await target.writeObject(sourceObject2);
|
|
313
|
-
} catch (e) {
|
|
314
|
-
throw new SyncEngineError(e, sourceObject2);
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
log({
|
|
318
|
-
action: "create",
|
|
319
|
-
id: id2,
|
|
320
|
-
providerId: id2,
|
|
321
|
-
displayName: (_a2 = sourceObject2.displayName) != null ? _a2 : sourceObject2.providerId,
|
|
322
|
-
whatIf,
|
|
323
|
-
diff: diffLines("", JSON.stringify(sourceObject2.object, null, 2))
|
|
324
|
-
});
|
|
325
|
-
};
|
|
326
|
-
actions.push(process2(sourceObject, id));
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
await Promise.all(actions);
|
|
330
|
-
if (mode === "mirror") {
|
|
331
|
-
if (!sourceHasItems && !allowEmptySource) {
|
|
332
|
-
throw new Error(
|
|
333
|
-
"Source is empty and mode is mirror. This would cause deletion of everything in the target, and most likely indicates an error in source definition."
|
|
334
|
-
);
|
|
335
|
-
}
|
|
336
|
-
const deletes = [];
|
|
337
|
-
targetItems.forEach(async (object) => {
|
|
338
|
-
const process2 = async (object2) => {
|
|
339
|
-
var _a2;
|
|
340
|
-
if (!whatIf) {
|
|
341
|
-
try {
|
|
342
|
-
await target.deleteObject(object2.providerId, object2);
|
|
343
|
-
} catch (e) {
|
|
344
|
-
throw new SyncEngineError(e, object2);
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
log({
|
|
348
|
-
action: "delete",
|
|
349
|
-
id: object2.id,
|
|
350
|
-
providerId: object2.providerId,
|
|
351
|
-
displayName: (_a2 = object2.displayName) != null ? _a2 : object2.providerId,
|
|
352
|
-
whatIf,
|
|
353
|
-
diff: diffLines(JSON.stringify(object2.object, null, 2), "")
|
|
354
|
-
});
|
|
355
|
-
};
|
|
356
|
-
deletes.push(process2(object));
|
|
357
|
-
});
|
|
358
|
-
await Promise.all(deletes);
|
|
359
|
-
}
|
|
360
|
-
await Promise.all([(_a = source.onSyncComplete) == null ? void 0 : _a.call(source, false), (_b = target.onSyncComplete) == null ? void 0 : _b.call(target, true)]);
|
|
361
|
-
}
|
|
362
|
-
var SyncEngineError = class extends Error {
|
|
363
|
-
constructor(innerError, sourceObject) {
|
|
364
|
-
var _a;
|
|
365
|
-
super(
|
|
366
|
-
`Error syncing ${(_a = sourceObject.displayName) != null ? _a : sourceObject.providerId} (${sourceObject.providerId})
|
|
367
|
-
${innerError}`
|
|
368
|
-
);
|
|
369
|
-
this.stack = void 0;
|
|
370
|
-
Object.setPrototypeOf(this, SyncEngineError.prototype);
|
|
371
|
-
}
|
|
372
|
-
};
|
|
373
|
-
|
|
374
|
-
// src/sync/syncEngineConsoleLogger.ts
|
|
375
|
-
var import_chalk2 = __toESM(require_source());
|
|
376
|
-
function createSyncEngineConsoleLogger(options) {
|
|
377
|
-
const { diffMode = "off", indent, prefix } = options != null ? options : {};
|
|
378
|
-
return function syncEngineConsoleLogger({ action, displayName, whatIf, diff }) {
|
|
379
|
-
let actionTag = "";
|
|
380
|
-
switch (action) {
|
|
381
|
-
case "create":
|
|
382
|
-
actionTag = import_chalk2.default.green("[A]");
|
|
383
|
-
break;
|
|
384
|
-
case "update":
|
|
385
|
-
actionTag = import_chalk2.default.white("[U]");
|
|
386
|
-
break;
|
|
387
|
-
case "delete":
|
|
388
|
-
actionTag = import_chalk2.default.yellow("[D]");
|
|
389
|
-
break;
|
|
390
|
-
}
|
|
391
|
-
let diffString = "";
|
|
392
|
-
if (diffMode === "on" || diffMode === "update" && action === "update") {
|
|
393
|
-
diffString = "\n" + diff.map((change) => {
|
|
394
|
-
if (change.added) {
|
|
395
|
-
return import_chalk2.default.green(change.value);
|
|
396
|
-
}
|
|
397
|
-
if (change.removed) {
|
|
398
|
-
return import_chalk2.default.red(change.value);
|
|
399
|
-
}
|
|
400
|
-
return change.value;
|
|
401
|
-
}).join("");
|
|
402
|
-
}
|
|
403
|
-
console.log(
|
|
404
|
-
`${indent != null ? indent : ""}${whatIf ? import_chalk2.default.gray("[WHATIF]") : ""}${actionTag}${prefix != null ? prefix : ""} ${displayName}${diffString}`
|
|
405
|
-
);
|
|
406
|
-
};
|
|
407
|
-
}
|
|
2
|
+
SyncEngineError,
|
|
3
|
+
createArraySyncEngineDataSource,
|
|
4
|
+
createFileSyncEngineDataSource,
|
|
5
|
+
createSyncEngineConsoleLogger,
|
|
6
|
+
emitWithFormat,
|
|
7
|
+
isPathAPackageFile,
|
|
8
|
+
nodeFetchProxy,
|
|
9
|
+
paginateAsync,
|
|
10
|
+
readFileToObject,
|
|
11
|
+
readUniformPackage,
|
|
12
|
+
syncEngine,
|
|
13
|
+
withApiOptions,
|
|
14
|
+
withDiffOptions,
|
|
15
|
+
withFormatOptions,
|
|
16
|
+
withProjectOptions,
|
|
17
|
+
writeUniformPackage
|
|
18
|
+
} from "../chunk-NNLVNLDW.mjs";
|
|
408
19
|
export {
|
|
409
20
|
SyncEngineError,
|
|
410
21
|
createArraySyncEngineDataSource,
|
package/package.json
CHANGED
|
@@ -1,28 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uniformdev/cli",
|
|
3
|
-
"version": "18.
|
|
3
|
+
"version": "18.17.1-alpha.13+77f2eaabc",
|
|
4
4
|
"description": "Uniform command line interface tool",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
6
6
|
"main": "./cli.js",
|
|
7
|
-
"exports": {
|
|
8
|
-
".": "./cli.js",
|
|
9
|
-
"./sync": {
|
|
10
|
-
"types": "./dist/sync/index.d.ts",
|
|
11
|
-
"import": "./dist/sync/index.mjs",
|
|
12
|
-
"require": "./dist/sync/index.js"
|
|
13
|
-
}
|
|
14
|
-
},
|
|
15
7
|
"types": "./dist/index.d.ts",
|
|
16
|
-
"typesVersions": {
|
|
17
|
-
"*": {
|
|
18
|
-
".": [
|
|
19
|
-
"./dist/index.d.ts"
|
|
20
|
-
],
|
|
21
|
-
"sync": [
|
|
22
|
-
"./dist/sync/index.d.ts"
|
|
23
|
-
]
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
8
|
"sideEffects": false,
|
|
27
9
|
"scripts": {
|
|
28
10
|
"uniform": "node ./cli.js",
|
|
@@ -34,20 +16,38 @@
|
|
|
34
16
|
"format": "prettier --write \"src/**/*.{js,ts,tsx}\""
|
|
35
17
|
},
|
|
36
18
|
"dependencies": {
|
|
37
|
-
"@uniformdev/
|
|
19
|
+
"@uniformdev/canvas": "18.17.1-alpha.13+77f2eaabc",
|
|
20
|
+
"@uniformdev/context": "18.17.1-alpha.13+77f2eaabc",
|
|
21
|
+
"@uniformdev/project-map": "18.17.1-alpha.13+77f2eaabc",
|
|
38
22
|
"diff": "^5.0.0",
|
|
39
23
|
"dotenv": "^16.0.3",
|
|
24
|
+
"execa": "5.1.1",
|
|
25
|
+
"fs-jetpack": "5.1.0",
|
|
26
|
+
"graphql": "16.6.0",
|
|
27
|
+
"graphql-request": "5.1.0",
|
|
40
28
|
"https-proxy-agent": "^5.0.1",
|
|
29
|
+
"inquirer": "8.2.5",
|
|
30
|
+
"isomorphic-git": "1.21.0",
|
|
41
31
|
"isomorphic-unfetch": "^3.1.0",
|
|
42
32
|
"js-yaml": "^4.1.0",
|
|
33
|
+
"jsonwebtoken": "9.0.0",
|
|
43
34
|
"lodash.isequalwith": "^4.4.0",
|
|
44
|
-
"
|
|
35
|
+
"open": "8.4.0",
|
|
36
|
+
"ora": "6.1.2",
|
|
37
|
+
"posthog-node": "2.2.3",
|
|
38
|
+
"slugify": "1.6.5",
|
|
39
|
+
"yargs": "^17.6.2",
|
|
40
|
+
"zod": "3.20.2"
|
|
45
41
|
},
|
|
46
42
|
"devDependencies": {
|
|
47
43
|
"@types/diff": "5.0.2",
|
|
44
|
+
"@types/inquirer": "9.0.3",
|
|
48
45
|
"@types/js-yaml": "4.0.5",
|
|
46
|
+
"@types/jsonwebtoken": "9.0.1",
|
|
49
47
|
"@types/lodash.isequalwith": "4.4.7",
|
|
50
|
-
"@types/
|
|
48
|
+
"@types/node": "18.11.17",
|
|
49
|
+
"@types/yargs": "17.0.22",
|
|
50
|
+
"p-limit": "4.0.0"
|
|
51
51
|
},
|
|
52
52
|
"bin": {
|
|
53
53
|
"uniform": "./cli.js"
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"publishConfig": {
|
|
59
59
|
"access": "public"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "77f2eaabc380a8251c040f8bdd21d5451351022f"
|
|
62
62
|
}
|