@superblocksteam/sdk 2.0.3-next.99 → 2.0.3

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 (67) hide show
  1. package/dist/application-build.d.mts +12 -0
  2. package/dist/application-build.d.mts.map +1 -0
  3. package/dist/application-build.mjs +113 -0
  4. package/dist/application-build.mjs.map +1 -0
  5. package/dist/cli-replacement/automatic-upgrades.d.ts +14 -0
  6. package/dist/cli-replacement/automatic-upgrades.d.ts.map +1 -0
  7. package/dist/cli-replacement/automatic-upgrades.js +267 -0
  8. package/dist/cli-replacement/automatic-upgrades.js.map +1 -0
  9. package/dist/cli-replacement/dev.d.mts +3 -6
  10. package/dist/cli-replacement/dev.d.mts.map +1 -1
  11. package/dist/cli-replacement/dev.mjs +80 -3
  12. package/dist/cli-replacement/dev.mjs.map +1 -1
  13. package/dist/client.d.ts +2 -1
  14. package/dist/client.d.ts.map +1 -1
  15. package/dist/client.js +7 -5
  16. package/dist/client.js.map +1 -1
  17. package/dist/dev-utils/dev-server.d.mts.map +1 -1
  18. package/dist/dev-utils/dev-server.mjs +59 -19
  19. package/dist/dev-utils/dev-server.mjs.map +1 -1
  20. package/dist/dev-utils/dev-tracer.d.ts +1 -1
  21. package/dist/dev-utils/dev-tracer.d.ts.map +1 -1
  22. package/dist/dev-utils/dev-tracer.js +66 -24
  23. package/dist/dev-utils/dev-tracer.js.map +1 -1
  24. package/dist/dev-utils/vite-plugin-react-transform.d.mts.map +1 -1
  25. package/dist/dev-utils/vite-plugin-react-transform.mjs +1 -0
  26. package/dist/dev-utils/vite-plugin-react-transform.mjs.map +1 -1
  27. package/dist/dev-utils/vite-plugin-sb-cdn.d.mts.map +1 -1
  28. package/dist/dev-utils/vite-plugin-sb-cdn.mjs +34 -9
  29. package/dist/dev-utils/vite-plugin-sb-cdn.mjs.map +1 -1
  30. package/dist/index.d.ts +4 -2
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +2 -0
  33. package/dist/index.js.map +1 -1
  34. package/dist/socket/handlers.d.ts +2 -2
  35. package/dist/socket/handlers.d.ts.map +1 -1
  36. package/dist/socket/handlers.js.map +1 -1
  37. package/dist/socket/index.d.ts +1 -11
  38. package/dist/socket/index.d.ts.map +1 -1
  39. package/dist/socket/index.js +11 -43
  40. package/dist/socket/index.js.map +1 -1
  41. package/dist/types/common.d.ts +6 -0
  42. package/dist/types/common.d.ts.map +1 -1
  43. package/dist/types/common.js.map +1 -1
  44. package/dist/vite-plugin-inject-sb-ids-transform.d.mts +15 -0
  45. package/dist/vite-plugin-inject-sb-ids-transform.d.mts.map +1 -0
  46. package/dist/vite-plugin-inject-sb-ids-transform.mjs +86 -0
  47. package/dist/vite-plugin-inject-sb-ids-transform.mjs.map +1 -0
  48. package/package.json +26 -6
  49. package/src/application-build.mts +160 -0
  50. package/src/cli-replacement/automatic-upgrades.ts +363 -0
  51. package/src/cli-replacement/dev.mts +120 -10
  52. package/src/client.ts +13 -4
  53. package/src/dev-utils/dev-server.mts +79 -19
  54. package/src/dev-utils/dev-tracer.ts +69 -24
  55. package/src/dev-utils/vite-plugin-react-transform.mts +1 -0
  56. package/src/dev-utils/vite-plugin-sb-cdn.mts +45 -11
  57. package/src/index.ts +6 -1
  58. package/src/socket/handlers.ts +109 -105
  59. package/src/socket/index.ts +21 -101
  60. package/src/types/common.ts +7 -0
  61. package/src/vite-plugin-inject-sb-ids-transform.mts +104 -0
  62. package/tsconfig.tsbuildinfo +1 -1
  63. package/dist/socket/socket.d.ts +0 -61
  64. package/dist/socket/socket.d.ts.map +0 -1
  65. package/dist/socket/socket.js +0 -251
  66. package/dist/socket/socket.js.map +0 -1
  67. package/src/socket/socket.ts +0 -399
@@ -0,0 +1,12 @@
1
+ export declare function buildApplication({ root, dest, mode, libraryUrl, assetsCdnUrl, ddClientToken, ddApplicationId, ddEnv, ddVersion, }: {
2
+ root: string;
3
+ dest: string;
4
+ mode: string;
5
+ libraryUrl: string;
6
+ assetsCdnUrl?: string;
7
+ ddClientToken?: string;
8
+ ddApplicationId?: string;
9
+ ddEnv?: string;
10
+ ddVersion?: string;
11
+ }): Promise<void>;
12
+ //# sourceMappingURL=application-build.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application-build.d.mts","sourceRoot":"","sources":["../src/application-build.mts"],"names":[],"mappings":"AAcA,wBAAsB,gBAAgB,CAAC,EACrC,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,YAAY,EACZ,aAAa,EACb,eAAe,EACf,KAAK,EACL,SAAS,GACV,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,iBAwBA"}
@@ -0,0 +1,113 @@
1
+ import path from "node:path";
2
+ import { injectIndexVitePlugin } from "@superblocksteam/vite-plugin-file-sync/inject-index";
3
+ import react from "@vitejs/plugin-react";
4
+ import { yellow, red } from "colorette";
5
+ import fs from "fs-extra";
6
+ import { build, createLogger } from "vite";
7
+ import tsconfigPaths from "vite-tsconfig-paths";
8
+ import { customComponentsPlugin } from "./dev-utils/custom-build.mjs";
9
+ import { getLogger } from "./dev-utils/dev-logger.mjs";
10
+ import { ddRumPlugin } from "./dev-utils/vite-plugin-dd-rum.mjs";
11
+ import { superblocksCdnPlugin } from "./dev-utils/vite-plugin-sb-cdn.mjs";
12
+ import { injectSuperblocksIdsPlugin } from "./vite-plugin-inject-sb-ids-transform.mjs";
13
+ export async function buildApplication({ root, dest, mode, libraryUrl, assetsCdnUrl, ddClientToken, ddApplicationId, ddEnv, ddVersion, }) {
14
+ const cwd = process.cwd();
15
+ try {
16
+ // Ensure the root directory exists and change execution context to it
17
+ if (!(await fs.pathExists(root))) {
18
+ throw new Error(`Root directory "${root}" does not exist`);
19
+ }
20
+ process.chdir(root);
21
+ await buildWithVite({
22
+ root: fs.realpathSync(root),
23
+ dest: fs.realpathSync(dest),
24
+ mode,
25
+ libraryUrl,
26
+ assetsCdnUrl,
27
+ ddClientToken,
28
+ ddApplicationId,
29
+ ddEnv,
30
+ ddVersion,
31
+ });
32
+ }
33
+ finally {
34
+ // Restore the original working directory before returning
35
+ process.chdir(cwd);
36
+ }
37
+ }
38
+ async function buildWithVite({ root, dest, mode, libraryUrl, assetsCdnUrl, ddClientToken, ddApplicationId, ddEnv, ddVersion, }) {
39
+ const viteLogger = createLogger();
40
+ const logger = getLogger();
41
+ viteLogger.info = logger.info;
42
+ viteLogger.warn = (msg) => {
43
+ logger.warn(yellow(msg));
44
+ };
45
+ viteLogger.warnOnce = (msg) => {
46
+ logger.warn(yellow(msg));
47
+ };
48
+ viteLogger.error = (msg) => {
49
+ logger.error(red(msg));
50
+ };
51
+ viteLogger.clearScreen = () => { };
52
+ const customFolder = path.join(root, "custom");
53
+ await build({
54
+ root,
55
+ mode,
56
+ appType: "spa",
57
+ resolve: {
58
+ alias: {
59
+ "react-router": "@superblocksteam/library",
60
+ },
61
+ },
62
+ clearScreen: true,
63
+ optimizeDeps: {
64
+ include: ["lodash", "react-is"],
65
+ exclude: [],
66
+ },
67
+ build: {
68
+ outDir: dest,
69
+ emptyOutDir: true,
70
+ write: true,
71
+ commonjsOptions: {
72
+ include: ["react-is"],
73
+ transformMixedEsModules: true,
74
+ },
75
+ rollupOptions: {
76
+ external: [
77
+ `${customFolder}/**/*`,
78
+ "react",
79
+ "react-dom",
80
+ "react/jsx-runtime",
81
+ "react/jsx-dev-runtime",
82
+ ],
83
+ preserveEntrySignatures: "allow-extension",
84
+ output: { format: "esm" },
85
+ },
86
+ },
87
+ logLevel: "info",
88
+ plugins: [
89
+ tsconfigPaths(),
90
+ injectIndexVitePlugin({ assetsCdnUrl, logger }),
91
+ customComponentsPlugin(),
92
+ injectSuperblocksIdsPlugin(root),
93
+ superblocksCdnPlugin({
94
+ imports: {
95
+ "@superblocksteam/library": `${libraryUrl}/index.js`,
96
+ "react/jsx-runtime": "https://esm.sh/react@18.2.0/jsx-runtime.mjs",
97
+ "react/jsx-dev-runtime": "https://esm.sh/react@18.2.0/jsx-dev-runtime.mjs",
98
+ },
99
+ cssImports: {
100
+ "@superblocksteam/library/index.css": `${libraryUrl}/index.css`,
101
+ },
102
+ }),
103
+ react(),
104
+ ddRumPlugin({
105
+ clientToken: ddClientToken ?? "",
106
+ applicationId: ddApplicationId ?? "",
107
+ env: ddEnv ?? "prod",
108
+ version: ddVersion ?? "1.0.0",
109
+ }),
110
+ ],
111
+ });
112
+ }
113
+ //# sourceMappingURL=application-build.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application-build.mjs","sourceRoot":"","sources":["../src/application-build.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type DetectResult } from "package-manager-detector";
2
+ import type { ApplicationConfig } from "../types/common.js";
3
+ import type { LockService } from "@superblocksteam/vite-plugin-file-sync/lock-service";
4
+ export declare const AUTO_UPGRADE_EXIT_CODE = 99;
5
+ interface PackageVersionInfo {
6
+ version: string;
7
+ alias?: string;
8
+ }
9
+ export declare function getCurrentCliVersion(): Promise<string | undefined>;
10
+ export declare function getCurrentLibraryVersion(pm: DetectResult): Promise<PackageVersionInfo | undefined>;
11
+ export declare function getCurrentLibraryVersionWithoutPM(): Promise<PackageVersionInfo | undefined>;
12
+ export declare function checkVersionsAndUpgrade(lockService: LockService, config?: ApplicationConfig): Promise<void>;
13
+ export {};
14
+ //# sourceMappingURL=automatic-upgrades.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"automatic-upgrades.d.ts","sourceRoot":"","sources":["../../src/cli-replacement/automatic-upgrades.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAM7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qDAAqD,CAAC;AAEvF,eAAO,MAAM,sBAAsB,KAAK,CAAC;AASzC,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA8CD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAwBxE;AAED,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,YAAY,GACf,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAoBzC;AAqHD,wBAAsB,iCAAiC,IAAI,OAAO,CAChE,kBAAkB,GAAG,SAAS,CAC/B,CAeA;AAED,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,WAAW,EACxB,MAAM,CAAC,EAAE,iBAAiB,iBA0G3B"}
@@ -0,0 +1,267 @@
1
+ import * as child_process from "node:child_process";
2
+ import { promisify } from "node:util";
3
+ import { isNativeError } from "node:util/types";
4
+ import { resolveCommand } from "package-manager-detector";
5
+ import { detect } from "package-manager-detector/detect";
6
+ import gt from "semver/functions/gt.js";
7
+ import valid from "semver/functions/valid.js";
8
+ import { getLogger } from "../dev-utils/dev-logger.mjs";
9
+ export const AUTO_UPGRADE_EXIT_CODE = 99;
10
+ const exec = promisify(child_process.exec);
11
+ const logger = getLogger();
12
+ async function getRemoteVersions(config) {
13
+ const { token, superblocksBaseUrl, id } = config;
14
+ try {
15
+ const response = await fetch(new URL(`api/v3/applications/${id}/cli-library-versions`, superblocksBaseUrl), {
16
+ method: "GET",
17
+ headers: { Authorization: `Bearer ${token}` },
18
+ });
19
+ if (response.ok) {
20
+ const data = (await response.json());
21
+ return data.data;
22
+ }
23
+ else {
24
+ const error = (await response.json());
25
+ console.log(`Could not get latest CLI version: ${error.responseMeta.message}`);
26
+ }
27
+ }
28
+ catch (error) {
29
+ if (isNativeError(error)) {
30
+ logger.error(error.message);
31
+ }
32
+ else {
33
+ logger.error(`${error}`);
34
+ }
35
+ }
36
+ }
37
+ export async function getCurrentCliVersion() {
38
+ try {
39
+ const command = process.platform === "win32" ? "where" : "which";
40
+ const { stdout } = await exec(`${command} superblocks`);
41
+ const superblocksPath = stdout.trim();
42
+ if (!superblocksPath)
43
+ return undefined;
44
+ const { stdout: versionOutput } = await exec(`${superblocksPath} version --json`);
45
+ const json = JSON.parse(versionOutput);
46
+ // Extract version from string like "@superblocksteam/cli/2.0.0-next.1" or "@superblocksteam/cli-ephemeral/2.0.0-SNAPSHOT.1749077365"
47
+ const version = json.cliVersion?.replace(/@superblocksteam\/cli(-ephemeral)?\//, "");
48
+ return version;
49
+ }
50
+ catch (error) {
51
+ if (isNativeError(error)) {
52
+ logger.error(`Error getting CLI version: ${error.message}`);
53
+ }
54
+ return undefined;
55
+ }
56
+ }
57
+ export async function getCurrentLibraryVersion(pm) {
58
+ try {
59
+ switch (pm.agent) {
60
+ case "npm":
61
+ return await getNpmLibraryVersion();
62
+ case "pnpm":
63
+ return await getPnpmLibraryVersion();
64
+ default:
65
+ console.error(`${pm.agent} is currently not supported for automatic upgrades.`);
66
+ return undefined;
67
+ }
68
+ }
69
+ catch (error) {
70
+ console.error("Could not resolve current library version. Skipping automatic upgrade.");
71
+ console.error(error);
72
+ return undefined;
73
+ }
74
+ }
75
+ async function getNpmLibraryVersion() {
76
+ const { stdout } = await exec("npm list @superblocksteam/library --json", {
77
+ cwd: process.cwd(),
78
+ });
79
+ const parsed = JSON.parse(stdout);
80
+ const packageData = parsed.dependencies?.["@superblocksteam/library"] ??
81
+ parsed.devDependencies?.["@superblocksteam/library"];
82
+ if (!packageData?.version)
83
+ return undefined;
84
+ // Check if this is an alias by examining the resolved URL
85
+ const resolved = packageData.resolved;
86
+ if (resolved && resolved.includes("@superblocksteam/")) {
87
+ const aliasMatch = resolved.match(/@superblocksteam\/([^\/]+)/);
88
+ if (aliasMatch && aliasMatch[1] !== "library") {
89
+ return {
90
+ version: packageData.version,
91
+ alias: `@superblocksteam/${aliasMatch[1]}`,
92
+ };
93
+ }
94
+ }
95
+ return { version: packageData.version };
96
+ }
97
+ async function getPnpmLibraryVersion() {
98
+ // First try the original package name
99
+ let packageData;
100
+ try {
101
+ const result = await exec("pnpm list @superblocksteam/library --json", {
102
+ cwd: process.cwd(),
103
+ });
104
+ const parsed = JSON.parse(result.stdout);
105
+ packageData =
106
+ parsed[0]?.dependencies?.["@superblocksteam/library"] ??
107
+ parsed[0]?.devDependencies?.["@superblocksteam/library"];
108
+ }
109
+ catch {
110
+ // Package not found with original name, might be aliased
111
+ }
112
+ // If not found, try the ephemeral alias
113
+ if (!packageData?.version) {
114
+ try {
115
+ const aliasResult = await exec("pnpm list @superblocksteam/library-ephemeral --json", { cwd: process.cwd() });
116
+ const aliasParsed = JSON.parse(aliasResult.stdout);
117
+ packageData =
118
+ aliasParsed[0]?.dependencies?.["@superblocksteam/library"] ??
119
+ aliasParsed[0]?.devDependencies?.["@superblocksteam/library"];
120
+ }
121
+ catch {
122
+ return undefined;
123
+ }
124
+ }
125
+ if (!packageData?.version)
126
+ return undefined;
127
+ // Check if this is an alias by looking at the 'from' field
128
+ const from = packageData.from;
129
+ if (from && from !== "@superblocksteam/library") {
130
+ return {
131
+ version: packageData.version,
132
+ alias: from,
133
+ };
134
+ }
135
+ return { version: packageData.version };
136
+ }
137
+ async function upgradeCliWithOclif(targetVersion) {
138
+ try {
139
+ const command = process.platform === "win32" ? "where" : "which";
140
+ const { stdout } = await exec(`${command} superblocks`);
141
+ const superblocksPath = stdout.trim();
142
+ if (!superblocksPath)
143
+ return false;
144
+ const { stdout: updateOutput } = await exec(`${superblocksPath} update --version=${targetVersion}`);
145
+ return !updateOutput.includes("not updatable");
146
+ }
147
+ catch (error) {
148
+ if (isNativeError(error)) {
149
+ logger.error(`Error checking CLI updatability: ${error.message}`);
150
+ }
151
+ return false;
152
+ }
153
+ }
154
+ async function upgradePackageWithPackageManager(pm, packageName, targetVersion, alias) {
155
+ const packageSpec = alias
156
+ ? `@superblocksteam/${packageName}@npm:${alias}@${targetVersion}`
157
+ : `@superblocksteam/${packageName}@${targetVersion}`;
158
+ const installCommand = resolveCommand(pm.agent, "install", [packageSpec]);
159
+ if (!installCommand) {
160
+ console.error("Could not determine how to upgrade Superblocks packages.");
161
+ return;
162
+ }
163
+ const { command, args } = installCommand;
164
+ await exec(`${command} ${args.join(" ")}`);
165
+ }
166
+ export async function getCurrentLibraryVersionWithoutPM() {
167
+ // Detect package manager
168
+ const pm = await detect({
169
+ strategies: [
170
+ "packageManager-field",
171
+ "lockfile",
172
+ "install-metadata",
173
+ "devEngines-field",
174
+ ],
175
+ cwd: process.cwd(),
176
+ });
177
+ if (!pm)
178
+ return;
179
+ return await getCurrentLibraryVersion(pm);
180
+ }
181
+ export async function checkVersionsAndUpgrade(lockService, config) {
182
+ // Detect package manager
183
+ const pm = await detect({
184
+ strategies: [
185
+ "packageManager-field",
186
+ "lockfile",
187
+ "install-metadata",
188
+ "devEngines-field",
189
+ ],
190
+ cwd: process.cwd(),
191
+ });
192
+ if (!pm || !config?.id)
193
+ return;
194
+ // Get current versions
195
+ const currentCliVersion = await getCurrentCliVersion();
196
+ const currentLibraryInfo = await getCurrentLibraryVersion(pm);
197
+ // Skip if we're in local development
198
+ if (!currentCliVersion ||
199
+ !valid(currentCliVersion) ||
200
+ currentCliVersion.startsWith("file:") ||
201
+ currentCliVersion.startsWith("link:") ||
202
+ !currentLibraryInfo ||
203
+ !valid(currentLibraryInfo.version) ||
204
+ currentLibraryInfo.version.startsWith("file:") ||
205
+ currentLibraryInfo.version.startsWith("link:")) {
206
+ return;
207
+ }
208
+ // Get target versions from server
209
+ const targetVersions = await getRemoteVersions(config);
210
+ if (!targetVersions)
211
+ return;
212
+ let cliNeedsUpgrade;
213
+ let libraryNeedsUpgrade;
214
+ try {
215
+ // If version is latest, then semver can throw an error
216
+ // Check if CLI needs upgrade
217
+ cliNeedsUpgrade =
218
+ targetVersions.cli && gt(targetVersions.cli, currentCliVersion);
219
+ // Check if library needs upgrade
220
+ libraryNeedsUpgrade =
221
+ targetVersions.library &&
222
+ gt(targetVersions.library, currentLibraryInfo.version);
223
+ }
224
+ catch (error) {
225
+ console.warn("Error checking versions to upgrade, releasing lock and exiting", error);
226
+ await lockService.shutdown({
227
+ serverInitiated: false,
228
+ });
229
+ process.exit(1);
230
+ }
231
+ if (!cliNeedsUpgrade && !libraryNeedsUpgrade) {
232
+ return; // Everything is up to date
233
+ }
234
+ let cliUpdated = false;
235
+ let libraryUpdated = false;
236
+ // Upgrade CLI if needed
237
+ if (cliNeedsUpgrade) {
238
+ const oclifUpgradeSucceeded = await upgradeCliWithOclif(targetVersions.cli);
239
+ if (!oclifUpgradeSucceeded) {
240
+ // Fall back to package manager upgrade
241
+ await upgradePackageWithPackageManager(pm, "cli", targetVersions.cli);
242
+ cliUpdated = true;
243
+ }
244
+ }
245
+ // Upgrade library if needed
246
+ if (libraryNeedsUpgrade) {
247
+ await upgradePackageWithPackageManager(pm, "library", targetVersions.library, currentLibraryInfo.alias);
248
+ libraryUpdated = true;
249
+ }
250
+ // Log what was updated
251
+ if (cliUpdated && libraryUpdated) {
252
+ logger.info("@superblocksteam/cli and @superblocksteam/library have been updated.");
253
+ }
254
+ else if (cliUpdated) {
255
+ logger.info("@superblocksteam/cli has been updated.");
256
+ }
257
+ else if (libraryUpdated) {
258
+ logger.info("@superblocksteam/library has been updated.");
259
+ }
260
+ // Restart CLI if anything was updated
261
+ if (cliUpdated || libraryUpdated) {
262
+ logger.info("Restarting the CLI…");
263
+ await lockService.releaseLock();
264
+ process.exit(AUTO_UPGRADE_EXIT_CODE);
265
+ }
266
+ }
267
+ //# sourceMappingURL=automatic-upgrades.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"automatic-upgrades.js","sourceRoot":"","sources":["../../src/cli-replacement/automatic-upgrades.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,5 @@
1
1
  import "../dev-utils/dev-tracer.js";
2
- export interface ApplicationConfig {
3
- superblocksBaseUrl: string;
4
- token: string;
5
- id: string;
6
- branchName: string;
7
- }
2
+ import type { ApplicationConfig } from "../types/common.js";
8
3
  export declare function dev(options: {
9
4
  cwd: string;
10
5
  pidfilePath?: string;
@@ -13,7 +8,9 @@ export declare function dev(options: {
13
8
  downloadFirst?: boolean;
14
9
  skipSync?: boolean;
15
10
  applicationConfig?: ApplicationConfig;
11
+ superblocksPath?: string;
16
12
  logger?: (message: string) => void;
13
+ skipAutoUpgrade?: boolean;
17
14
  signal?: AbortSignal;
18
15
  }): Promise<void>;
19
16
  //# sourceMappingURL=dev.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dev.d.mts","sourceRoot":"","sources":["../../src/cli-replacement/dev.mts"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,CAAC;AAiBpC,MAAM,WAAW,iBAAiB;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACpB;AASD,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,iBAgJA"}
1
+ {"version":3,"file":"dev.d.mts","sourceRoot":"","sources":["../../src/cli-replacement/dev.mts"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,CAAC;AA8BpC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AA8D5D,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;IAGtC,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAGnC,eAAe,CAAC,EAAE,OAAO,CAAC;IAG1B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,iBA2LA"}
@@ -1,23 +1,79 @@
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 path from "node:path";
5
+ import { promisify } from "node:util";
3
6
  import { maskUnixSignals } from "@superblocksteam/util";
4
7
  import { AiService } from "@superblocksteam/vite-plugin-file-sync/ai-service";
5
8
  import { LockService, LockType, } from "@superblocksteam/vite-plugin-file-sync/lock-service";
6
9
  import { OperationQueue } from "@superblocksteam/vite-plugin-file-sync/operation-queue";
7
10
  import { SyncService } from "@superblocksteam/vite-plugin-file-sync/sync-service";
8
11
  import { green } from "colorette";
12
+ import { diffJson } from "diff";
13
+ import fs from "fs-extra";
14
+ import { resolveCommand } from "package-manager-detector";
15
+ import { detect } from "package-manager-detector/detect";
9
16
  import { getLogger } from "../dev-utils/dev-logger.mjs";
10
17
  import { createDevServer } from "../dev-utils/dev-server.mjs";
18
+ import tracer from "../dev-utils/dev-tracer.js";
11
19
  import { SuperblocksSdk } from "../sdk.js";
20
+ import { checkVersionsAndUpgrade, getCurrentCliVersion, getCurrentLibraryVersionWithoutPM, } from "./automatic-upgrades.js";
21
+ const exec = promisify(child_process.exec);
12
22
  const passErrorToVSCode = (message, logger) => {
13
23
  if (message) {
14
24
  // Prefixing with `clierr:` will make the VS code extension capture this message and show it to the user.
15
25
  logger.error(`clierr: ${JSON.stringify({ message })}`);
16
26
  }
17
27
  };
28
+ async function readPkgJson(cwd) {
29
+ try {
30
+ const { readPackage } = await import("read-pkg");
31
+ return await readPackage({ cwd });
32
+ }
33
+ catch {
34
+ return null;
35
+ }
36
+ }
37
+ async function installPackages(cwd, logger) {
38
+ try {
39
+ const pm = await detect({
40
+ strategies: [
41
+ "packageManager-field",
42
+ "lockfile",
43
+ "install-metadata",
44
+ "devEngines-field",
45
+ ],
46
+ cwd,
47
+ });
48
+ if (!pm) {
49
+ logger.warn("Could not detect package manager, skipping package installation");
50
+ return;
51
+ }
52
+ const installCommand = resolveCommand(pm.agent, "install", []);
53
+ if (!installCommand) {
54
+ logger.warn(`Could not determine install command for ${pm.agent}, skipping package installation`);
55
+ return;
56
+ }
57
+ const { command, args } = installCommand;
58
+ logger.info(`Running ${command} ${args.join(" ")} to install dependencies…`);
59
+ await exec(`${command} ${args.join(" ")}`, { cwd });
60
+ logger.info("Package installation completed successfully");
61
+ }
62
+ catch (error) {
63
+ logger.error(`Error during package installation: ${error}`);
64
+ throw error;
65
+ }
66
+ }
18
67
  export async function dev(options) {
19
68
  const logger = getLogger(options.logger);
20
- const { cwd, pidfilePath, devServerPort, downloadFirst, uploadFirst, skipSync, applicationConfig, } = options;
69
+ const { cwd, pidfilePath, devServerPort, downloadFirst, uploadFirst, skipSync, applicationConfig, skipAutoUpgrade, } = options;
70
+ const cliVersion = await getCurrentCliVersion();
71
+ const libraryVersion = await getCurrentLibraryVersionWithoutPM();
72
+ logger.info(`Running command: ${options.superblocksPath} dev${options.uploadFirst ? " --upload-first" : ""}${options.downloadFirst ? " --download-first" : ""} with baseUrl: ${applicationConfig?.superblocksBaseUrl}, cliVersion: ${cliVersion}, libraryVersion: ${libraryVersion?.alias} ${libraryVersion?.version}`);
73
+ // Add check for node_modules
74
+ if (!fs.existsSync(path.join(cwd, "node_modules"))) {
75
+ throw new Error('node_modules folder is missing. Please run "npm install" first.');
76
+ }
21
77
  if (pidfilePath) {
22
78
  await fsp.writeFile(pidfilePath, `${process.pid}\n`);
23
79
  }
@@ -35,6 +91,7 @@ export async function dev(options) {
35
91
  lockType: process.env.SUPERBLOCKS_IS_CSB === "true"
36
92
  ? LockType.CSB
37
93
  : LockType.LOCAL,
94
+ tracer,
38
95
  });
39
96
  syncService = new SyncService({
40
97
  authToken: applicationConfig.token,
@@ -44,6 +101,7 @@ export async function dev(options) {
44
101
  branchName: applicationConfig.branchName,
45
102
  fsOperationQueue,
46
103
  lockService,
104
+ tracer,
47
105
  });
48
106
  logger.info("Checking if local files are synced with the server");
49
107
  try {
@@ -52,10 +110,16 @@ export async function dev(options) {
52
110
  if (lockService) {
53
111
  try {
54
112
  await lockService.acquireLock();
113
+ // TODO(code-mode): package naming is preventing upgrade in ephemeral environments
114
+ if (!process.env.PACKAGE_SUFFIX ||
115
+ process.env.PACKAGE_SUFFIX === "" ||
116
+ !skipAutoUpgrade) {
117
+ await checkVersionsAndUpgrade(lockService, applicationConfig);
118
+ }
55
119
  }
56
120
  catch (error) {
57
- passErrorToVSCode(error.context.message, logger);
58
121
  logger.error("Failed to acquire lock on application", error);
122
+ passErrorToVSCode(error.context?.message, logger);
59
123
  throw new Error(`Failed to acquire lock on application: ${error}`);
60
124
  }
61
125
  }
@@ -76,6 +140,7 @@ export async function dev(options) {
76
140
  anthropicApiKey: process.env.ANTHROPIC_API_KEY || "",
77
141
  fsOperationQueue,
78
142
  draftInterface: syncService,
143
+ tracer,
79
144
  });
80
145
  const isSynced = localContents.hash === serverHash;
81
146
  if (isSynced) {
@@ -89,10 +154,22 @@ export async function dev(options) {
89
154
  if (downloadFirst && uploadFirst) {
90
155
  throw new Error("Choose either --download-first or --upload-first");
91
156
  }
92
- // TODO(code-mode): pre-process package.json to handle version upgrades
93
157
  if (downloadFirst) {
94
158
  logger.info("Starting directory sync from server before starting the local server");
159
+ // Read package.json before download
160
+ const packageJsonBefore = await readPkgJson(cwd);
95
161
  await syncService.downloadDirectory();
162
+ // Read package.json after download and compare
163
+ const packageJsonAfter = await readPkgJson(cwd);
164
+ // Check if package.json changed
165
+ if (packageJsonBefore && packageJsonAfter) {
166
+ const diff = diffJson(packageJsonBefore, packageJsonAfter);
167
+ const hasChanges = diff.some((part) => part.added || part.removed);
168
+ if (hasChanges) {
169
+ logger.info("package.json has changed, installing packages…");
170
+ await installPackages(cwd, logger);
171
+ }
172
+ }
96
173
  }
97
174
  else if (uploadFirst) {
98
175
  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":"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"}
1
+ {"version":3,"file":"dev.mjs","sourceRoot":"","sources":["../../src/cli-replacement/dev.mts"],"names":[],"mappings":"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"}