@superblocksteam/sdk 2.0.3-next.157 → 2.0.3-next.158
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.mts","sourceRoot":"","sources":["../../src/cli-replacement/dev.mts"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"dev.d.mts","sourceRoot":"","sources":["../../src/cli-replacement/dev.mts"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,CAAC;AAwBpC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AA6D5D,wBAAsB,GAAG,CAAC,OAAO,EAAE;IAEjC,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IAEtC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAGnC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,iBAkKA"}
|
|
@@ -1,21 +1,66 @@
|
|
|
1
1
|
import "../dev-utils/dev-tracer.js";
|
|
2
|
+
import * as child_process from "node:child_process";
|
|
2
3
|
import * as fsp from "node:fs/promises";
|
|
4
|
+
import { promisify } from "node:util";
|
|
3
5
|
import { maskUnixSignals } from "@superblocksteam/util";
|
|
4
6
|
import { AiService } from "@superblocksteam/vite-plugin-file-sync/ai-service";
|
|
5
7
|
import { LockService, LockType, } from "@superblocksteam/vite-plugin-file-sync/lock-service";
|
|
6
8
|
import { OperationQueue } from "@superblocksteam/vite-plugin-file-sync/operation-queue";
|
|
7
9
|
import { SyncService } from "@superblocksteam/vite-plugin-file-sync/sync-service";
|
|
8
10
|
import { green } from "colorette";
|
|
11
|
+
import { diffJson } from "diff";
|
|
12
|
+
import { resolveCommand } from "package-manager-detector";
|
|
13
|
+
import { detect } from "package-manager-detector/detect";
|
|
14
|
+
import { readPackage } from "read-pkg";
|
|
9
15
|
import { getLogger } from "../dev-utils/dev-logger.mjs";
|
|
10
16
|
import { createDevServer } from "../dev-utils/dev-server.mjs";
|
|
11
17
|
import { SuperblocksSdk } from "../sdk.js";
|
|
12
18
|
import { checkVersionsAndUpgrade } from "./automatic-upgrades.js";
|
|
19
|
+
const exec = promisify(child_process.exec);
|
|
13
20
|
const passErrorToVSCode = (message, logger) => {
|
|
14
21
|
if (message) {
|
|
15
22
|
// Prefixing with `clierr:` will make the VS code extension capture this message and show it to the user.
|
|
16
23
|
logger.error(`clierr: ${JSON.stringify({ message })}`);
|
|
17
24
|
}
|
|
18
25
|
};
|
|
26
|
+
async function readPkgJson(cwd) {
|
|
27
|
+
try {
|
|
28
|
+
return await readPackage({ cwd });
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
async function installPackages(cwd, logger) {
|
|
35
|
+
try {
|
|
36
|
+
const pm = await detect({
|
|
37
|
+
strategies: [
|
|
38
|
+
"packageManager-field",
|
|
39
|
+
"lockfile",
|
|
40
|
+
"install-metadata",
|
|
41
|
+
"devEngines-field",
|
|
42
|
+
],
|
|
43
|
+
cwd,
|
|
44
|
+
});
|
|
45
|
+
if (!pm) {
|
|
46
|
+
logger.warn("Could not detect package manager, skipping package installation");
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const installCommand = resolveCommand(pm.agent, "install", []);
|
|
50
|
+
if (!installCommand) {
|
|
51
|
+
logger.warn(`Could not determine install command for ${pm.agent}, skipping package installation`);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const { command, args } = installCommand;
|
|
55
|
+
logger.info(`Running ${command} ${args.join(" ")} to install dependencies…`);
|
|
56
|
+
await exec(`${command} ${args.join(" ")}`, { cwd });
|
|
57
|
+
logger.info("Package installation completed successfully");
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
logger.error(`Error during package installation: ${error}`);
|
|
61
|
+
throw error;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
19
64
|
export async function dev(options) {
|
|
20
65
|
const logger = getLogger(options.logger);
|
|
21
66
|
const { cwd, pidfilePath, devServerPort, downloadFirst, uploadFirst, skipSync, applicationConfig, } = options;
|
|
@@ -91,10 +136,22 @@ export async function dev(options) {
|
|
|
91
136
|
if (downloadFirst && uploadFirst) {
|
|
92
137
|
throw new Error("Choose either --download-first or --upload-first");
|
|
93
138
|
}
|
|
94
|
-
// TODO(code-mode): pre-process package.json to handle version upgrades
|
|
95
139
|
if (downloadFirst) {
|
|
96
140
|
logger.info("Starting directory sync from server before starting the local server");
|
|
141
|
+
// Read package.json before download
|
|
142
|
+
const packageJsonBefore = await readPkgJson(cwd);
|
|
97
143
|
await syncService.downloadDirectory();
|
|
144
|
+
// Read package.json after download and compare
|
|
145
|
+
const packageJsonAfter = await readPkgJson(cwd);
|
|
146
|
+
// Check if package.json changed
|
|
147
|
+
if (packageJsonBefore && packageJsonAfter) {
|
|
148
|
+
const diff = diffJson(packageJsonBefore, packageJsonAfter);
|
|
149
|
+
const hasChanges = diff.some((part) => part.added || part.removed);
|
|
150
|
+
if (hasChanges) {
|
|
151
|
+
logger.info("package.json has changed, installing packages…");
|
|
152
|
+
await installPackages(cwd, logger);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
98
155
|
}
|
|
99
156
|
else if (uploadFirst) {
|
|
100
157
|
logger.info("Uploading local files to server before starting");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.mjs","sourceRoot":"","sources":["../../src/cli-replacement/dev.mts"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,CAAC;AAEpC,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,mDAAmD,CAAC;AAC9E,OAAO,EACL,WAAW,EACX,QAAQ,GACT,MAAM,qDAAqD,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,wDAAwD,CAAC;AACxF,OAAO,EAAE,WAAW,EAAE,MAAM,qDAAqD,CAAC;AAClF,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"dev.mjs","sourceRoot":"","sources":["../../src/cli-replacement/dev.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.3-next.
|
|
3
|
+
"version": "2.0.3-next.158",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Superblocks JS SDK",
|
|
6
6
|
"homepage": "https://www.superblocks.com",
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
"@rollup/wasm-node": "^4.35.0",
|
|
20
20
|
"@superblocksteam/bucketeer-sdk": "0.4.1",
|
|
21
21
|
"@superblocksteam/shared": "0.9120.0",
|
|
22
|
-
"@superblocksteam/util": "2.0.3-next.
|
|
23
|
-
"@superblocksteam/vite-plugin-file-sync": "2.0.3-next.
|
|
22
|
+
"@superblocksteam/util": "2.0.3-next.158",
|
|
23
|
+
"@superblocksteam/vite-plugin-file-sync": "2.0.3-next.158",
|
|
24
24
|
"@vitejs/plugin-react": "^4.3.4",
|
|
25
25
|
"axios": "^1.4.0",
|
|
26
26
|
"chokidar": "^4.0.3",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"cors": "^2.8.5",
|
|
30
30
|
"dd-trace": "^5.49.0",
|
|
31
31
|
"debug": "^4.4.0",
|
|
32
|
+
"diff": "^8.0.2",
|
|
32
33
|
"es-module-lexer": "^1.6.0",
|
|
33
34
|
"express": "^4.21.1",
|
|
34
35
|
"fast-glob": "^3.3.3",
|
|
@@ -37,6 +38,7 @@
|
|
|
37
38
|
"lodash-es": "^4.17.21",
|
|
38
39
|
"package-manager-detector": "^1.3.0",
|
|
39
40
|
"prettier": "^3.5.3",
|
|
41
|
+
"read-pkg": "^9.0.1",
|
|
40
42
|
"semver": "^7.5.4",
|
|
41
43
|
"simple-git": "^3.20.0",
|
|
42
44
|
"slugify": "^1.6.6",
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import "../dev-utils/dev-tracer.js";
|
|
2
2
|
|
|
3
|
+
import * as child_process from "node:child_process";
|
|
3
4
|
import * as fsp from "node:fs/promises";
|
|
5
|
+
import { promisify } from "node:util";
|
|
4
6
|
import { maskUnixSignals } from "@superblocksteam/util";
|
|
5
7
|
import { AiService } from "@superblocksteam/vite-plugin-file-sync/ai-service";
|
|
6
8
|
import {
|
|
@@ -10,6 +12,10 @@ import {
|
|
|
10
12
|
import { OperationQueue } from "@superblocksteam/vite-plugin-file-sync/operation-queue";
|
|
11
13
|
import { SyncService } from "@superblocksteam/vite-plugin-file-sync/sync-service";
|
|
12
14
|
import { green } from "colorette";
|
|
15
|
+
import { diffJson } from "diff";
|
|
16
|
+
import { resolveCommand } from "package-manager-detector";
|
|
17
|
+
import { detect } from "package-manager-detector/detect";
|
|
18
|
+
import { readPackage } from "read-pkg";
|
|
13
19
|
|
|
14
20
|
import { getLogger } from "../dev-utils/dev-logger.mjs";
|
|
15
21
|
import { createDevServer } from "../dev-utils/dev-server.mjs";
|
|
@@ -19,6 +25,8 @@ import type { DevLogger } from "../dev-utils/dev-logger.mjs";
|
|
|
19
25
|
import type { ApplicationConfig } from "../types/common.js";
|
|
20
26
|
import type { DraftInterface } from "@superblocksteam/vite-plugin-file-sync/draft-interface";
|
|
21
27
|
|
|
28
|
+
const exec = promisify(child_process.exec);
|
|
29
|
+
|
|
22
30
|
const passErrorToVSCode = (message: string | undefined, logger: DevLogger) => {
|
|
23
31
|
if (message) {
|
|
24
32
|
// Prefixing with `clierr:` will make the VS code extension capture this message and show it to the user.
|
|
@@ -26,6 +34,55 @@ const passErrorToVSCode = (message: string | undefined, logger: DevLogger) => {
|
|
|
26
34
|
}
|
|
27
35
|
};
|
|
28
36
|
|
|
37
|
+
async function readPkgJson(cwd: string) {
|
|
38
|
+
try {
|
|
39
|
+
return await readPackage({ cwd });
|
|
40
|
+
} catch {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
async function installPackages(cwd: string, logger: DevLogger) {
|
|
46
|
+
try {
|
|
47
|
+
const pm = await detect({
|
|
48
|
+
strategies: [
|
|
49
|
+
"packageManager-field",
|
|
50
|
+
"lockfile",
|
|
51
|
+
"install-metadata",
|
|
52
|
+
"devEngines-field",
|
|
53
|
+
],
|
|
54
|
+
cwd,
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
if (!pm) {
|
|
58
|
+
logger.warn(
|
|
59
|
+
"Could not detect package manager, skipping package installation",
|
|
60
|
+
);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const installCommand = resolveCommand(pm.agent, "install", []);
|
|
65
|
+
|
|
66
|
+
if (!installCommand) {
|
|
67
|
+
logger.warn(
|
|
68
|
+
`Could not determine install command for ${pm.agent}, skipping package installation`,
|
|
69
|
+
);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const { command, args } = installCommand;
|
|
74
|
+
logger.info(
|
|
75
|
+
`Running ${command} ${args.join(" ")} to install dependencies…`,
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
await exec(`${command} ${args.join(" ")}`, { cwd });
|
|
79
|
+
logger.info("Package installation completed successfully");
|
|
80
|
+
} catch (error) {
|
|
81
|
+
logger.error(`Error during package installation: ${error}`);
|
|
82
|
+
throw error;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
29
86
|
export async function dev(options: {
|
|
30
87
|
/* cwd is required */
|
|
31
88
|
cwd: string;
|
|
@@ -151,12 +208,29 @@ export async function dev(options: {
|
|
|
151
208
|
throw new Error("Choose either --download-first or --upload-first");
|
|
152
209
|
}
|
|
153
210
|
|
|
154
|
-
// TODO(code-mode): pre-process package.json to handle version upgrades
|
|
155
211
|
if (downloadFirst) {
|
|
156
212
|
logger.info(
|
|
157
213
|
"Starting directory sync from server before starting the local server",
|
|
158
214
|
);
|
|
215
|
+
|
|
216
|
+
// Read package.json before download
|
|
217
|
+
const packageJsonBefore = await readPkgJson(cwd);
|
|
218
|
+
|
|
159
219
|
await syncService!.downloadDirectory();
|
|
220
|
+
|
|
221
|
+
// Read package.json after download and compare
|
|
222
|
+
const packageJsonAfter = await readPkgJson(cwd);
|
|
223
|
+
|
|
224
|
+
// Check if package.json changed
|
|
225
|
+
if (packageJsonBefore && packageJsonAfter) {
|
|
226
|
+
const diff = diffJson(packageJsonBefore, packageJsonAfter);
|
|
227
|
+
const hasChanges = diff.some((part) => part.added || part.removed);
|
|
228
|
+
|
|
229
|
+
if (hasChanges) {
|
|
230
|
+
logger.info("package.json has changed, installing packages…");
|
|
231
|
+
await installPackages(cwd, logger);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
160
234
|
} else if (uploadFirst) {
|
|
161
235
|
logger.info("Uploading local files to server before starting");
|
|
162
236
|
await syncService!.uploadDirectory();
|