@superblocksteam/sdk 2.0.6-next.7 → 2.0.6-next.70
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/application-build.mjs +6 -2
- package/dist/application-build.mjs.map +1 -1
- package/dist/cli-replacement/automatic-upgrades.d.ts +5 -2
- package/dist/cli-replacement/automatic-upgrades.d.ts.map +1 -1
- package/dist/cli-replacement/automatic-upgrades.js +199 -93
- package/dist/cli-replacement/automatic-upgrades.js.map +1 -1
- package/dist/cli-replacement/dev.d.mts +1 -2
- package/dist/cli-replacement/dev.d.mts.map +1 -1
- package/dist/cli-replacement/dev.mjs +57 -32
- package/dist/cli-replacement/dev.mjs.map +1 -1
- package/dist/client.d.ts +34 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +92 -1
- package/dist/client.js.map +1 -1
- package/dist/dev-utils/dev-logger.d.mts +17 -7
- package/dist/dev-utils/dev-logger.d.mts.map +1 -1
- package/dist/dev-utils/dev-logger.mjs +50 -9
- package/dist/dev-utils/dev-logger.mjs.map +1 -1
- package/dist/dev-utils/dev-server.d.mts.map +1 -1
- package/dist/dev-utils/dev-server.mjs +8 -12
- package/dist/dev-utils/dev-server.mjs.map +1 -1
- package/dist/dev-utils/dev-tracer.d.ts +2 -0
- package/dist/dev-utils/dev-tracer.d.ts.map +1 -1
- package/dist/dev-utils/dev-tracer.js +42 -35
- package/dist/dev-utils/dev-tracer.js.map +1 -1
- package/dist/dev-utils/vite-plugin-build-manifest-stub.d.mts +10 -0
- package/dist/dev-utils/vite-plugin-build-manifest-stub.d.mts.map +1 -0
- package/dist/dev-utils/vite-plugin-build-manifest-stub.mjs +27 -0
- package/dist/dev-utils/vite-plugin-build-manifest-stub.mjs.map +1 -0
- package/dist/dev-utils/vite-plugin-sb-cdn.d.mts.map +1 -1
- package/dist/dev-utils/vite-plugin-sb-cdn.mjs +13 -3
- package/dist/dev-utils/vite-plugin-sb-cdn.mjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/vite-plugin-generate-build-manifest.d.mts +21 -0
- package/dist/vite-plugin-generate-build-manifest.d.mts.map +1 -0
- package/dist/vite-plugin-generate-build-manifest.mjs +131 -0
- package/dist/vite-plugin-generate-build-manifest.mjs.map +1 -0
- package/dist/vite-plugin-inject-sb-ids-transform.mjs +1 -1
- package/dist/vite-plugin-inject-sb-ids-transform.mjs.map +1 -1
- package/package.json +6 -4
- package/src/application-build.mts +6 -3
- package/src/cli-replacement/automatic-upgrades.ts +253 -113
- package/src/cli-replacement/dev.mts +77 -43
- package/src/client.ts +115 -0
- package/src/dev-utils/dev-logger.mts +94 -20
- package/src/dev-utils/dev-server.mts +10 -12
- package/src/dev-utils/dev-tracer.ts +48 -37
- package/src/dev-utils/vite-plugin-build-manifest-stub.mts +30 -0
- package/src/dev-utils/vite-plugin-sb-cdn.mts +14 -3
- package/src/index.ts +4 -0
- package/src/vite-plugin-generate-build-manifest.mts +193 -0
- package/src/vite-plugin-inject-sb-ids-transform.mts +1 -1
- package/test/clients.test.mts +120 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { parse } from "@babel/parser";
|
|
3
|
+
import { getClientApiId } from "@superblocksteam/library-shared";
|
|
4
|
+
import { resolveLanguageSpecificStepContentFromBlocks } from "@superblocksteam/util";
|
|
5
|
+
import { getPageName } from "@superblocksteam/vite-plugin-file-sync";
|
|
6
|
+
import { extractIdentifierPathsFromApi, extractApiDependencies, } from "@superblocksteam/vite-plugin-file-sync/binding-extraction";
|
|
7
|
+
import { getScope, extractImportsFromAst, } from "@superblocksteam/vite-plugin-file-sync/parsing";
|
|
8
|
+
import { yellow, red } from "colorette";
|
|
9
|
+
import fg from "fast-glob";
|
|
10
|
+
import fs from "fs-extra";
|
|
11
|
+
import { createLogger } from "vite";
|
|
12
|
+
import yaml from "yaml";
|
|
13
|
+
import { getLogger } from "./dev-utils/dev-logger.mjs";
|
|
14
|
+
export const scopeFileBaseName = "scope.ts";
|
|
15
|
+
export const apiFileBaseName = "api.yaml";
|
|
16
|
+
/**
|
|
17
|
+
* Vite plugin that generates a build manifest for the application.
|
|
18
|
+
*
|
|
19
|
+
* This plugin will:
|
|
20
|
+
* 1. Read all api.yaml and api.yml files in the application
|
|
21
|
+
* 2. Read all scope.ts files in the application
|
|
22
|
+
* 3. Generate a build manifest for the application
|
|
23
|
+
* 4. Write the build manifest to a file in the build output directory
|
|
24
|
+
*
|
|
25
|
+
* The build manifest is a JSON object with the following properties:
|
|
26
|
+
* - apis: a map of all apis in the application keyed by their file path
|
|
27
|
+
* - apiDependencies: an array where each item represents an api and its dependencies
|
|
28
|
+
*
|
|
29
|
+
* @param root - The root directory of the application
|
|
30
|
+
* @returns A Vite plugin that generates a build manifest for the application
|
|
31
|
+
*/
|
|
32
|
+
export function generateBuildManifestPlugin(root) {
|
|
33
|
+
const viteLogger = createLogger();
|
|
34
|
+
const logger = getLogger();
|
|
35
|
+
viteLogger.info = (msg) => logger.info(msg);
|
|
36
|
+
viteLogger.warn = (msg) => {
|
|
37
|
+
logger.warn(yellow(msg));
|
|
38
|
+
};
|
|
39
|
+
viteLogger.warnOnce = (msg) => {
|
|
40
|
+
logger.warn(yellow(msg));
|
|
41
|
+
};
|
|
42
|
+
viteLogger.error = (msg) => {
|
|
43
|
+
logger.error(red(msg));
|
|
44
|
+
};
|
|
45
|
+
viteLogger.clearScreen = () => { };
|
|
46
|
+
const scopesByPage = {};
|
|
47
|
+
const apiFiles = {};
|
|
48
|
+
let buildManifest = { apis: {}, apiDependencies: [] };
|
|
49
|
+
return {
|
|
50
|
+
name: "sb-generate-build-manifest",
|
|
51
|
+
apply: "build",
|
|
52
|
+
enforce: "pre",
|
|
53
|
+
async buildStart() {
|
|
54
|
+
const apiDocuments = await fg(["**/api.yaml", "**/api.yml"], {
|
|
55
|
+
cwd: root,
|
|
56
|
+
});
|
|
57
|
+
for (const apiFilePath of apiDocuments) {
|
|
58
|
+
const absoluteApiFilePath = path.join(root, apiFilePath);
|
|
59
|
+
const document = await fs.readFile(absoluteApiFilePath, "utf-8");
|
|
60
|
+
const apiPb = yaml.parse(document);
|
|
61
|
+
await resolveLanguageSpecificStepContentFromBlocks(path.dirname(absoluteApiFilePath), apiPb.blocks ?? [], {});
|
|
62
|
+
const pageName = getPageName(apiFilePath);
|
|
63
|
+
apiPb.metadata.id = getClientApiId(apiPb.metadata.name, pageName);
|
|
64
|
+
apiFiles[apiFilePath] = { apiPb, pageName };
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
transform(code, id) {
|
|
68
|
+
if (id.endsWith(scopeFileBaseName)) {
|
|
69
|
+
const ast = parse(code, {
|
|
70
|
+
sourceType: "module",
|
|
71
|
+
sourceFilename: id,
|
|
72
|
+
plugins: [["typescript", {}]],
|
|
73
|
+
});
|
|
74
|
+
const scopeFileMeta = {
|
|
75
|
+
code,
|
|
76
|
+
ast,
|
|
77
|
+
imports: extractImportsFromAst(ast),
|
|
78
|
+
};
|
|
79
|
+
const scope = getScope(id, scopeFileMeta);
|
|
80
|
+
scopesByPage[getPageName(id)] = scope;
|
|
81
|
+
}
|
|
82
|
+
return code;
|
|
83
|
+
},
|
|
84
|
+
async generateBundle() {
|
|
85
|
+
const allApiNames = getAllUniqueApiNames(apiFiles);
|
|
86
|
+
const allApis = Object.entries(apiFiles).reduce((acc, [id, api]) => {
|
|
87
|
+
acc[id] = {
|
|
88
|
+
api,
|
|
89
|
+
scopeId: scopesByPage[api.pageName]?.scopeId ?? "",
|
|
90
|
+
};
|
|
91
|
+
return acc;
|
|
92
|
+
}, {});
|
|
93
|
+
const deps = await getApiDependencies(allApiNames, apiFiles);
|
|
94
|
+
buildManifest = {
|
|
95
|
+
apis: allApis,
|
|
96
|
+
apiDependencies: deps,
|
|
97
|
+
};
|
|
98
|
+
this.emitFile({
|
|
99
|
+
type: "prebuilt-chunk",
|
|
100
|
+
fileName: "assets/build-manifest.js",
|
|
101
|
+
code: `export default ${JSON.stringify(buildManifest)}`,
|
|
102
|
+
exports: ["default"],
|
|
103
|
+
});
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
function getAllUniqueApiNames(apiFiles) {
|
|
108
|
+
const allApiNamesSet = new Set(Object.values(apiFiles).map((api) => api.apiPb.metadata.name));
|
|
109
|
+
return Array.from(allApiNamesSet);
|
|
110
|
+
}
|
|
111
|
+
async function getApiDependencies(apiNames, apiFiles) {
|
|
112
|
+
const deps = [];
|
|
113
|
+
// TODO: This logic is a copy of the extractApiParamsAndDependencies function in the
|
|
114
|
+
// fileSyncVitePlugin (https://github.com/superblocksteam/superblocks/blob/474c0b11d79a1d6988864fb20d5ec26f92931fde/packages/vite-plugin-file-sync/src/file-sync-vite-plugin.ts#L261-L280).
|
|
115
|
+
//
|
|
116
|
+
// This logic should be refactored so that it can be shared between the two plugins.
|
|
117
|
+
await Promise.all([
|
|
118
|
+
...Object.values(apiFiles).map(async (api) => {
|
|
119
|
+
const bindings = await extractIdentifierPathsFromApi(api);
|
|
120
|
+
const allIdentifiers = bindings.flatMap((binding) => binding.bindings);
|
|
121
|
+
const apiDependencies = extractApiDependencies(apiNames, bindings);
|
|
122
|
+
deps.push({
|
|
123
|
+
apiName: api.apiPb.metadata.name,
|
|
124
|
+
params: allIdentifiers,
|
|
125
|
+
dependencies: apiDependencies,
|
|
126
|
+
});
|
|
127
|
+
}),
|
|
128
|
+
]);
|
|
129
|
+
return deps;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=vite-plugin-generate-build-manifest.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite-plugin-generate-build-manifest.mjs","sourceRoot":"","sources":["../src/vite-plugin-generate-build-manifest.mts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,4CAA4C,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AACrE,OAAO,EACL,6BAA6B,EAC7B,sBAAsB,GACvB,MAAM,2DAA2D,CAAC;AACnE,OAAO,EACL,QAAQ,EACR,qBAAqB,GACtB,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AASvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAC5C,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;AAQ1C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAAY;IACtD,MAAM,UAAU,GAAG,YAAY,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,UAAU,CAAC,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpD,UAAU,CAAC,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE;QAChC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,CAAC,CAAC;IACF,UAAU,CAAC,QAAQ,GAAG,CAAC,GAAW,EAAE,EAAE;QACpC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,CAAC,CAAC;IACF,UAAU,CAAC,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE;QACjC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC;IAEF,UAAU,CAAC,WAAW,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IAElC,MAAM,YAAY,GAAuC,EAAE,CAAC;IAC5D,MAAM,QAAQ,GAAuC,EAAE,CAAC;IACxD,IAAI,aAAa,GAGb,EAAE,IAAI,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC;IAEtC,OAAO;QACL,IAAI,EAAE,4BAA4B;QAClC,KAAK,EAAE,OAAO;QACd,OAAO,EAAE,KAAK;QAEd,KAAK,CAAC,UAAU;YACd,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE;gBAC3D,GAAG,EAAE,IAAI;aACV,CAAC,CAAC;YAEH,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;gBACvC,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBAEzD,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;gBACjE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAEnC,MAAM,4CAA4C,CAChD,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,EACjC,KAAK,CAAC,MAAM,IAAI,EAAE,EAClB,EAAE,CACH,CAAC;gBAEF,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;gBAC1C,KAAK,CAAC,QAAQ,CAAC,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAClE,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,SAAS,CAAC,IAAY,EAAE,EAAU;YAChC,IAAI,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACnC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE;oBACtB,UAAU,EAAE,QAAQ;oBACpB,cAAc,EAAE,EAAE;oBAClB,OAAO,EAAE,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;iBAC9B,CAAC,CAAC;gBAEH,MAAM,aAAa,GAIf;oBACF,IAAI;oBACJ,GAAG;oBACH,OAAO,EAAE,qBAAqB,CAAC,GAAG,CAAC;iBACpC,CAAC;gBACF,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;gBAE1C,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;YACxC,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,CAAC,cAAc;YAClB,MAAM,WAAW,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YAEnD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAC7C,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE;gBACjB,GAAG,CAAC,EAAE,CAAC,GAAG;oBACR,GAAG;oBACH,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,OAAO,IAAI,EAAE;iBACnD,CAAC;gBACF,OAAO,GAAG,CAAC;YACb,CAAC,EACD,EAAkE,CACnE,CAAC;YAEF,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAE7D,aAAa,GAAG;gBACd,IAAI,EAAE,OAAO;gBACb,eAAe,EAAE,IAAI;aACtB,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC;gBACZ,IAAI,EAAE,gBAAgB;gBACtB,QAAQ,EAAE,0BAA0B;gBACpC,IAAI,EAAE,kBAAkB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE;gBACvD,OAAO,EAAE,CAAC,SAAS,CAAC;aACrB,CAAC,CAAC;QACL,CAAC;KACQ,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAA4C;IAE5C,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC9D,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACpC,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,QAAkB,EAClB,QAA4C;IAE5C,MAAM,IAAI,GAAoB,EAAE,CAAC;IAEjC,oFAAoF;IACpF,2LAA2L;IAC3L,EAAE;IACF,oFAAoF;IACpF,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC3C,MAAM,QAAQ,GAAG,MAAM,6BAA6B,CAAC,GAAG,CAAC,CAAC;YAC1D,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACvE,MAAM,eAAe,GAAG,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACnE,IAAI,CAAC,IAAI,CAAC;gBACR,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI;gBAChC,MAAM,EAAE,cAAc;gBACtB,YAAY,EAAE,eAAe;aAC9B,CAAC,CAAC;QACL,CAAC,CAAC;KACH,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -22,7 +22,7 @@ const routesFileBaseName = "routes.json";
|
|
|
22
22
|
export async function injectSuperblocksIdsPlugin(root) {
|
|
23
23
|
const viteLogger = createLogger();
|
|
24
24
|
const logger = getLogger();
|
|
25
|
-
viteLogger.info = logger.info;
|
|
25
|
+
viteLogger.info = (msg) => logger.info(msg);
|
|
26
26
|
viteLogger.warn = (msg) => {
|
|
27
27
|
logger.warn(yellow(msg));
|
|
28
28
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite-plugin-inject-sb-ids-transform.mjs","sourceRoot":"","sources":["../src/vite-plugin-inject-sb-ids-transform.mts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EACL,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAIvD,MAAM,kBAAkB,GAAG,aAAa,CAAC;AAEzC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,IAAY;IAC3D,MAAM,UAAU,GAAG,YAAY,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,UAAU,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"vite-plugin-inject-sb-ids-transform.mjs","sourceRoot":"","sources":["../src/vite-plugin-inject-sb-ids-transform.mts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@superblocksteam/sdk",
|
|
3
|
-
"version": "2.0.6-next.
|
|
3
|
+
"version": "2.0.6-next.70",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Superblocks JS SDK",
|
|
6
6
|
"homepage": "https://www.superblocks.com",
|
|
@@ -30,9 +30,11 @@
|
|
|
30
30
|
"@opentelemetry/semantic-conventions": "^1.28.0",
|
|
31
31
|
"@rollup/wasm-node": "^4.35.0",
|
|
32
32
|
"@superblocksteam/bucketeer-sdk": "0.5.0",
|
|
33
|
-
"@superblocksteam/
|
|
34
|
-
"@superblocksteam/
|
|
35
|
-
"@superblocksteam/
|
|
33
|
+
"@superblocksteam/library": "2.0.6-next.70",
|
|
34
|
+
"@superblocksteam/library-shared": "2.0.6-next.70",
|
|
35
|
+
"@superblocksteam/shared": "0.9198.0",
|
|
36
|
+
"@superblocksteam/util": "2.0.6-next.70",
|
|
37
|
+
"@superblocksteam/vite-plugin-file-sync": "2.0.6-next.70",
|
|
36
38
|
"@vitejs/plugin-react": "^4.3.4",
|
|
37
39
|
"axios": "^1.4.0",
|
|
38
40
|
"chokidar": "^4.0.3",
|
|
@@ -9,8 +9,8 @@ import { customComponentsPlugin } from "./dev-utils/custom-build.mjs";
|
|
|
9
9
|
import { getLogger } from "./dev-utils/dev-logger.mjs";
|
|
10
10
|
import { ddRumPlugin } from "./dev-utils/vite-plugin-dd-rum.mjs";
|
|
11
11
|
import { superblocksCdnPlugin } from "./dev-utils/vite-plugin-sb-cdn.mjs";
|
|
12
|
+
import { generateBuildManifestPlugin } from "./vite-plugin-generate-build-manifest.mjs";
|
|
12
13
|
import { injectSuperblocksIdsPlugin } from "./vite-plugin-inject-sb-ids-transform.mjs";
|
|
13
|
-
import type { Plugin } from "vite";
|
|
14
14
|
|
|
15
15
|
export async function buildApplication({
|
|
16
16
|
root,
|
|
@@ -81,7 +81,7 @@ async function buildWithVite({
|
|
|
81
81
|
}) {
|
|
82
82
|
const viteLogger = createLogger();
|
|
83
83
|
const logger = getLogger();
|
|
84
|
-
viteLogger.info = logger.info;
|
|
84
|
+
viteLogger.info = (msg: string) => logger.info(msg);
|
|
85
85
|
viteLogger.warn = (msg: string) => {
|
|
86
86
|
logger.warn(yellow(msg));
|
|
87
87
|
};
|
|
@@ -133,7 +133,7 @@ async function buildWithVite({
|
|
|
133
133
|
logLevel: "info",
|
|
134
134
|
plugins: [
|
|
135
135
|
tsconfigPaths(),
|
|
136
|
-
injectIndexVitePlugin({ assetsCdnUrl
|
|
136
|
+
injectIndexVitePlugin({ assetsCdnUrl }),
|
|
137
137
|
customComponentsPlugin(),
|
|
138
138
|
injectSuperblocksIdsPlugin(root),
|
|
139
139
|
superblocksCdnPlugin({
|
|
@@ -142,12 +142,15 @@ async function buildWithVite({
|
|
|
142
142
|
"react/jsx-runtime": "https://esm.sh/react@18.2.0/jsx-runtime.mjs",
|
|
143
143
|
"react/jsx-dev-runtime":
|
|
144
144
|
"https://esm.sh/react@18.2.0/jsx-dev-runtime.mjs",
|
|
145
|
+
"./user-facing/build-manifest.js": "/assets/build-manifest.js",
|
|
146
|
+
"/assets/user-facing/build-manifest.js": "/assets/build-manifest.js",
|
|
145
147
|
},
|
|
146
148
|
cssImports: {
|
|
147
149
|
"@superblocksteam/library/index.css": `${libraryUrl}/index.css`,
|
|
148
150
|
},
|
|
149
151
|
}),
|
|
150
152
|
react(),
|
|
153
|
+
generateBuildManifestPlugin(root),
|
|
151
154
|
|
|
152
155
|
ddRumPlugin({
|
|
153
156
|
clientToken: ddClientToken ?? "",
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import * as child_process from "node:child_process";
|
|
2
2
|
import { promisify } from "node:util";
|
|
3
3
|
import { isNativeError } from "node:util/types";
|
|
4
|
+
import { traceFunction } from "@superblocksteam/shared";
|
|
4
5
|
import { resolveCommand, type DetectResult } from "package-manager-detector";
|
|
5
6
|
import { detect } from "package-manager-detector/detect";
|
|
6
7
|
import gt from "semver/functions/gt.js";
|
|
7
8
|
import valid from "semver/functions/valid.js";
|
|
8
|
-
import { getLogger } from "../dev-utils/dev-logger.mjs";
|
|
9
|
+
import { getErrorMeta, getLogger } from "../dev-utils/dev-logger.mjs";
|
|
10
|
+
import tracer from "../dev-utils/dev-tracer.js";
|
|
9
11
|
import type { ResponseMeta } from "../socket/handlers.js";
|
|
10
12
|
import type { ApplicationConfig } from "../types/common.js";
|
|
11
13
|
import type { LockService } from "@superblocksteam/vite-plugin-file-sync/lock-service";
|
|
@@ -55,7 +57,7 @@ async function getRemoteVersions(
|
|
|
55
57
|
return data.data;
|
|
56
58
|
} else {
|
|
57
59
|
const error = (await response.json()) as CheckVersionsErrorResponse;
|
|
58
|
-
|
|
60
|
+
logger.error(
|
|
59
61
|
`Could not get latest CLI version: ${error.responseMeta.message}`,
|
|
60
62
|
);
|
|
61
63
|
}
|
|
@@ -68,7 +70,9 @@ async function getRemoteVersions(
|
|
|
68
70
|
}
|
|
69
71
|
}
|
|
70
72
|
|
|
71
|
-
export async function getCurrentCliVersion(): Promise<
|
|
73
|
+
export async function getCurrentCliVersion(): Promise<
|
|
74
|
+
PackageVersionInfo | undefined
|
|
75
|
+
> {
|
|
72
76
|
try {
|
|
73
77
|
const command = process.platform === "win32" ? "where" : "which";
|
|
74
78
|
const { stdout } = await exec(`${command} superblocks`);
|
|
@@ -85,7 +89,16 @@ export async function getCurrentCliVersion(): Promise<string | undefined> {
|
|
|
85
89
|
/@superblocksteam\/cli(-ephemeral)?\//,
|
|
86
90
|
"",
|
|
87
91
|
);
|
|
88
|
-
|
|
92
|
+
|
|
93
|
+
const aliasMatch = json.cliVersion?.match(/@superblocksteam\/([^\/]+)/);
|
|
94
|
+
if (aliasMatch && aliasMatch[1] !== "cli") {
|
|
95
|
+
return {
|
|
96
|
+
version: version,
|
|
97
|
+
alias: `@superblocksteam/${aliasMatch[1]}`,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return { version };
|
|
89
102
|
} catch (error) {
|
|
90
103
|
if (isNativeError(error)) {
|
|
91
104
|
logger.error(`Error getting CLI version: ${error.message}`);
|
|
@@ -104,16 +117,16 @@ export async function getCurrentLibraryVersion(
|
|
|
104
117
|
case "pnpm":
|
|
105
118
|
return await getPnpmLibraryVersion();
|
|
106
119
|
default:
|
|
107
|
-
|
|
120
|
+
logger.error(
|
|
108
121
|
`${pm.agent} is currently not supported for automatic upgrades.`,
|
|
109
122
|
);
|
|
110
123
|
return undefined;
|
|
111
124
|
}
|
|
112
125
|
} catch (error) {
|
|
113
|
-
|
|
126
|
+
logger.error(
|
|
114
127
|
"Could not resolve current library version. Skipping automatic upgrade.",
|
|
128
|
+
getErrorMeta(error),
|
|
115
129
|
);
|
|
116
|
-
console.error(error);
|
|
117
130
|
return undefined;
|
|
118
131
|
}
|
|
119
132
|
}
|
|
@@ -200,10 +213,10 @@ async function upgradeCliWithOclif(targetVersion: string): Promise<boolean> {
|
|
|
200
213
|
|
|
201
214
|
if (!superblocksPath) return false;
|
|
202
215
|
|
|
203
|
-
const { stdout: updateOutput } = await exec(
|
|
216
|
+
const { stdout: updateOutput, stderr: updateErrorOutput } = await exec(
|
|
204
217
|
`${superblocksPath} update --version=${targetVersion}`,
|
|
205
218
|
);
|
|
206
|
-
return !updateOutput.includes("not updatable");
|
|
219
|
+
return !(updateOutput + updateErrorOutput).includes("not updatable");
|
|
207
220
|
} catch (error) {
|
|
208
221
|
if (isNativeError(error)) {
|
|
209
222
|
logger.error(`Error checking CLI updatability: ${error.message}`);
|
|
@@ -216,21 +229,61 @@ async function upgradePackageWithPackageManager(
|
|
|
216
229
|
pm: DetectResult,
|
|
217
230
|
packageName: string,
|
|
218
231
|
targetVersion: string,
|
|
219
|
-
|
|
232
|
+
{
|
|
233
|
+
alias,
|
|
234
|
+
global,
|
|
235
|
+
}: {
|
|
236
|
+
alias?: string;
|
|
237
|
+
global?: boolean;
|
|
238
|
+
},
|
|
220
239
|
): Promise<void> {
|
|
221
240
|
const packageSpec = alias
|
|
222
241
|
? `@superblocksteam/${packageName}@npm:${alias}@${targetVersion}`
|
|
223
242
|
: `@superblocksteam/${packageName}@${targetVersion}`;
|
|
224
243
|
|
|
225
|
-
const installCommand = resolveCommand(
|
|
244
|
+
const installCommand = resolveCommand(
|
|
245
|
+
pm.agent,
|
|
246
|
+
global ? "global" : "install",
|
|
247
|
+
[packageSpec],
|
|
248
|
+
);
|
|
226
249
|
|
|
227
250
|
if (!installCommand) {
|
|
228
|
-
|
|
251
|
+
logger.error("Could not determine how to upgrade Superblocks packages.");
|
|
229
252
|
return;
|
|
230
253
|
}
|
|
231
254
|
|
|
232
255
|
const { command, args } = installCommand;
|
|
233
|
-
|
|
256
|
+
logger.info(
|
|
257
|
+
`Running ${command} ${args.join(" ")} to upgrade ${packageName}...`,
|
|
258
|
+
);
|
|
259
|
+
let resolver: (value: void | PromiseLike<void>) => void;
|
|
260
|
+
let rejecter: (reason?: any) => void;
|
|
261
|
+
const promise = new Promise<void>((resolve, reject) => {
|
|
262
|
+
resolver = resolve;
|
|
263
|
+
rejecter = reject;
|
|
264
|
+
});
|
|
265
|
+
const cp = child_process.exec(
|
|
266
|
+
`${command} ${args.join(" ")}`,
|
|
267
|
+
{
|
|
268
|
+
cwd: process.cwd(),
|
|
269
|
+
},
|
|
270
|
+
(error) => {
|
|
271
|
+
if (error) {
|
|
272
|
+
logger.error(`Failed to upgrade ${packageName} to ${targetVersion}`);
|
|
273
|
+
rejecter(error);
|
|
274
|
+
} else {
|
|
275
|
+
logger.info(`Successfully upgraded ${packageName} to ${targetVersion}`);
|
|
276
|
+
resolver();
|
|
277
|
+
}
|
|
278
|
+
},
|
|
279
|
+
);
|
|
280
|
+
cp.stdout?.on("data", (data) => {
|
|
281
|
+
logger.info(data);
|
|
282
|
+
});
|
|
283
|
+
cp.stderr?.on("data", (data) => {
|
|
284
|
+
logger.warn(data);
|
|
285
|
+
});
|
|
286
|
+
return promise;
|
|
234
287
|
}
|
|
235
288
|
|
|
236
289
|
export async function getCurrentLibraryVersionWithoutPM(): Promise<
|
|
@@ -255,109 +308,196 @@ export async function getCurrentLibraryVersionWithoutPM(): Promise<
|
|
|
255
308
|
export async function checkVersionsAndUpgrade(
|
|
256
309
|
lockService: LockService,
|
|
257
310
|
config?: ApplicationConfig,
|
|
258
|
-
) {
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
311
|
+
): Promise<{
|
|
312
|
+
cliUpdated: boolean;
|
|
313
|
+
libraryUpdated: boolean;
|
|
314
|
+
}> {
|
|
315
|
+
const cliUpdated = false;
|
|
316
|
+
const libraryUpdated = false;
|
|
317
|
+
let hasFailedToUpgrade = false;
|
|
318
|
+
|
|
319
|
+
logger.info("Checking versions");
|
|
320
|
+
|
|
321
|
+
await traceFunction({
|
|
322
|
+
name: "checkVersionsAndUpgrade",
|
|
323
|
+
tracer,
|
|
324
|
+
fn: async () => {
|
|
325
|
+
// Detect package manager
|
|
326
|
+
const pm = await traceFunction({
|
|
327
|
+
name: "detectPackageManager",
|
|
328
|
+
tracer,
|
|
329
|
+
fn: async () => {
|
|
330
|
+
return await detect({
|
|
331
|
+
strategies: [
|
|
332
|
+
"packageManager-field",
|
|
333
|
+
"lockfile",
|
|
334
|
+
"install-metadata",
|
|
335
|
+
"devEngines-field",
|
|
336
|
+
],
|
|
337
|
+
cwd: process.cwd(),
|
|
338
|
+
});
|
|
339
|
+
},
|
|
340
|
+
});
|
|
341
|
+
|
|
342
|
+
if (!pm || !config?.id) return;
|
|
343
|
+
|
|
344
|
+
// Get current versions
|
|
345
|
+
const currentCliInfo = await traceFunction({
|
|
346
|
+
name: "getCurrentCliVersion",
|
|
347
|
+
tracer,
|
|
348
|
+
fn: async () => {
|
|
349
|
+
return await getCurrentCliVersion();
|
|
350
|
+
},
|
|
351
|
+
});
|
|
352
|
+
const currentLibraryInfo = await traceFunction({
|
|
353
|
+
name: "getCurrentLibraryVersion",
|
|
354
|
+
tracer,
|
|
355
|
+
fn: async () => {
|
|
356
|
+
return await getCurrentLibraryVersion(pm);
|
|
357
|
+
},
|
|
358
|
+
});
|
|
359
|
+
|
|
360
|
+
// Skip if we're in local development
|
|
361
|
+
if (
|
|
362
|
+
!currentCliInfo ||
|
|
363
|
+
!valid(currentCliInfo.version) ||
|
|
364
|
+
currentCliInfo.version.startsWith("file:") ||
|
|
365
|
+
currentCliInfo.version.startsWith("link:") ||
|
|
366
|
+
!currentLibraryInfo ||
|
|
367
|
+
!valid(currentLibraryInfo.version) ||
|
|
368
|
+
currentLibraryInfo.version.startsWith("file:") ||
|
|
369
|
+
currentLibraryInfo.version.startsWith("link:")
|
|
370
|
+
) {
|
|
371
|
+
return;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
// Get target versions from server
|
|
375
|
+
const targetVersions = await traceFunction({
|
|
376
|
+
name: "getRemoteVersions",
|
|
377
|
+
tracer,
|
|
378
|
+
fn: async () => {
|
|
379
|
+
return await getRemoteVersions(config);
|
|
380
|
+
},
|
|
381
|
+
});
|
|
382
|
+
if (!targetVersions) return;
|
|
383
|
+
|
|
384
|
+
let cliNeedsUpgrade: boolean | string;
|
|
385
|
+
let libraryNeedsUpgrade: boolean | string;
|
|
386
|
+
try {
|
|
387
|
+
// If version is latest, then semver can throw an error
|
|
388
|
+
// Check if CLI needs upgrade
|
|
389
|
+
cliNeedsUpgrade =
|
|
390
|
+
targetVersions.cli && gt(targetVersions.cli, currentCliInfo.version);
|
|
391
|
+
|
|
392
|
+
// Check if library needs upgrade
|
|
393
|
+
libraryNeedsUpgrade =
|
|
394
|
+
targetVersions.library &&
|
|
395
|
+
gt(targetVersions.library, currentLibraryInfo.version);
|
|
396
|
+
} catch (error) {
|
|
397
|
+
logger.error(
|
|
398
|
+
"Error checking versions to upgrade, releasing lock and exiting",
|
|
399
|
+
getErrorMeta(error),
|
|
400
|
+
);
|
|
401
|
+
await traceFunction({
|
|
402
|
+
name: "shutdownLockService",
|
|
403
|
+
tracer,
|
|
404
|
+
fn: async () => {
|
|
405
|
+
await lockService.shutdown({
|
|
406
|
+
serverInitiated: false,
|
|
407
|
+
});
|
|
408
|
+
},
|
|
409
|
+
});
|
|
410
|
+
hasFailedToUpgrade = true;
|
|
411
|
+
return;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
if (!cliNeedsUpgrade && !libraryNeedsUpgrade) {
|
|
415
|
+
return; // Everything is up to date
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
let cliUpdated = false;
|
|
419
|
+
let libraryUpdated = false;
|
|
420
|
+
|
|
421
|
+
// Upgrade CLI if needed
|
|
422
|
+
if (cliNeedsUpgrade) {
|
|
423
|
+
logger.info(
|
|
424
|
+
`Beginning CLI upgrade from ${currentCliInfo.version} to ${targetVersions.cli}`,
|
|
425
|
+
);
|
|
289
426
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
427
|
+
const oclifUpgradeSucceeded = await traceFunction({
|
|
428
|
+
name: "upgradeCliWithOclif",
|
|
429
|
+
tracer,
|
|
430
|
+
fn: async () => {
|
|
431
|
+
return await upgradeCliWithOclif(targetVersions.cli);
|
|
432
|
+
},
|
|
433
|
+
});
|
|
434
|
+
if (!oclifUpgradeSucceeded) {
|
|
435
|
+
logger.info(`Falling back to package manager upgrade for CLI`);
|
|
436
|
+
// Fall back to package manager upgrade
|
|
437
|
+
await traceFunction({
|
|
438
|
+
name: "upgradePackageWithPackageManager - cli",
|
|
439
|
+
tracer,
|
|
440
|
+
fn: async () => {
|
|
441
|
+
await upgradePackageWithPackageManager(
|
|
442
|
+
pm,
|
|
443
|
+
"cli",
|
|
444
|
+
targetVersions.cli,
|
|
445
|
+
{
|
|
446
|
+
alias: currentCliInfo.alias,
|
|
447
|
+
global: true,
|
|
448
|
+
},
|
|
449
|
+
);
|
|
450
|
+
},
|
|
451
|
+
});
|
|
452
|
+
cliUpdated = true;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
// Upgrade library if needed
|
|
457
|
+
if (libraryNeedsUpgrade) {
|
|
458
|
+
logger.info(
|
|
459
|
+
`Beginning library upgrade from ${currentLibraryInfo.version} to ${targetVersions.library}`,
|
|
460
|
+
);
|
|
461
|
+
await traceFunction({
|
|
462
|
+
name: "upgradePackageWithPackageManager - library",
|
|
463
|
+
tracer,
|
|
464
|
+
fn: async () => {
|
|
465
|
+
await upgradePackageWithPackageManager(
|
|
466
|
+
pm,
|
|
467
|
+
"library",
|
|
468
|
+
targetVersions.library,
|
|
469
|
+
{
|
|
470
|
+
alias: currentLibraryInfo.alias,
|
|
471
|
+
global: false,
|
|
472
|
+
},
|
|
473
|
+
);
|
|
474
|
+
},
|
|
475
|
+
});
|
|
476
|
+
libraryUpdated = true;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
// Log what was updated
|
|
480
|
+
if (cliUpdated && libraryUpdated) {
|
|
481
|
+
logger.info(
|
|
482
|
+
"@superblocksteam/cli and @superblocksteam/library have been updated.",
|
|
483
|
+
);
|
|
484
|
+
} else if (cliUpdated) {
|
|
485
|
+
logger.info("@superblocksteam/cli has been updated.");
|
|
486
|
+
} else if (libraryUpdated) {
|
|
487
|
+
logger.info("@superblocksteam/library has been updated.");
|
|
488
|
+
} else {
|
|
489
|
+
logger.info("No upgrades needed");
|
|
490
|
+
}
|
|
491
|
+
},
|
|
492
|
+
});
|
|
293
493
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
try {
|
|
297
|
-
// If version is latest, then semver can throw an error
|
|
298
|
-
// Check if CLI needs upgrade
|
|
299
|
-
cliNeedsUpgrade =
|
|
300
|
-
targetVersions.cli && gt(targetVersions.cli, currentCliVersion);
|
|
301
|
-
|
|
302
|
-
// Check if library needs upgrade
|
|
303
|
-
libraryNeedsUpgrade =
|
|
304
|
-
targetVersions.library &&
|
|
305
|
-
gt(targetVersions.library, currentLibraryInfo.version);
|
|
306
|
-
} catch (error) {
|
|
307
|
-
console.warn(
|
|
308
|
-
"Error checking versions to upgrade, releasing lock and exiting",
|
|
309
|
-
error,
|
|
310
|
-
);
|
|
311
|
-
await lockService.shutdown({
|
|
312
|
-
serverInitiated: false,
|
|
313
|
-
});
|
|
494
|
+
// Restart CLI if anything was updated
|
|
495
|
+
if (hasFailedToUpgrade) {
|
|
314
496
|
process.exit(1);
|
|
315
497
|
}
|
|
316
498
|
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
let cliUpdated = false;
|
|
322
|
-
let libraryUpdated = false;
|
|
323
|
-
|
|
324
|
-
// Upgrade CLI if needed
|
|
325
|
-
if (cliNeedsUpgrade) {
|
|
326
|
-
const oclifUpgradeSucceeded = await upgradeCliWithOclif(targetVersions.cli);
|
|
327
|
-
|
|
328
|
-
if (!oclifUpgradeSucceeded) {
|
|
329
|
-
// Fall back to package manager upgrade
|
|
330
|
-
await upgradePackageWithPackageManager(pm, "cli", targetVersions.cli);
|
|
331
|
-
cliUpdated = true;
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
// Upgrade library if needed
|
|
336
|
-
if (libraryNeedsUpgrade) {
|
|
337
|
-
await upgradePackageWithPackageManager(
|
|
338
|
-
pm,
|
|
339
|
-
"library",
|
|
340
|
-
targetVersions.library,
|
|
341
|
-
currentLibraryInfo.alias,
|
|
342
|
-
);
|
|
343
|
-
libraryUpdated = true;
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
// Log what was updated
|
|
347
|
-
if (cliUpdated && libraryUpdated) {
|
|
348
|
-
logger.info(
|
|
349
|
-
"@superblocksteam/cli and @superblocksteam/library have been updated.",
|
|
350
|
-
);
|
|
351
|
-
} else if (cliUpdated) {
|
|
352
|
-
logger.info("@superblocksteam/cli has been updated.");
|
|
353
|
-
} else if (libraryUpdated) {
|
|
354
|
-
logger.info("@superblocksteam/library has been updated.");
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
// Restart CLI if anything was updated
|
|
358
|
-
if (cliUpdated || libraryUpdated) {
|
|
359
|
-
logger.info("Restarting the CLI…");
|
|
360
|
-
await lockService.releaseLock();
|
|
361
|
-
process.exit(AUTO_UPGRADE_EXIT_CODE);
|
|
362
|
-
}
|
|
499
|
+
return {
|
|
500
|
+
cliUpdated,
|
|
501
|
+
libraryUpdated,
|
|
502
|
+
};
|
|
363
503
|
}
|