@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.
- package/dist/application-build.d.mts +12 -0
- package/dist/application-build.d.mts.map +1 -0
- package/dist/application-build.mjs +113 -0
- package/dist/application-build.mjs.map +1 -0
- package/dist/cli-replacement/automatic-upgrades.d.ts +14 -0
- package/dist/cli-replacement/automatic-upgrades.d.ts.map +1 -0
- package/dist/cli-replacement/automatic-upgrades.js +267 -0
- package/dist/cli-replacement/automatic-upgrades.js.map +1 -0
- package/dist/cli-replacement/dev.d.mts +3 -6
- package/dist/cli-replacement/dev.d.mts.map +1 -1
- package/dist/cli-replacement/dev.mjs +80 -3
- package/dist/cli-replacement/dev.mjs.map +1 -1
- package/dist/client.d.ts +2 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +7 -5
- package/dist/client.js.map +1 -1
- package/dist/dev-utils/dev-server.d.mts.map +1 -1
- package/dist/dev-utils/dev-server.mjs +59 -19
- package/dist/dev-utils/dev-server.mjs.map +1 -1
- package/dist/dev-utils/dev-tracer.d.ts +1 -1
- package/dist/dev-utils/dev-tracer.d.ts.map +1 -1
- package/dist/dev-utils/dev-tracer.js +66 -24
- package/dist/dev-utils/dev-tracer.js.map +1 -1
- package/dist/dev-utils/vite-plugin-react-transform.d.mts.map +1 -1
- package/dist/dev-utils/vite-plugin-react-transform.mjs +1 -0
- package/dist/dev-utils/vite-plugin-react-transform.mjs.map +1 -1
- package/dist/dev-utils/vite-plugin-sb-cdn.d.mts.map +1 -1
- package/dist/dev-utils/vite-plugin-sb-cdn.mjs +34 -9
- package/dist/dev-utils/vite-plugin-sb-cdn.mjs.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/socket/handlers.d.ts +2 -2
- package/dist/socket/handlers.d.ts.map +1 -1
- package/dist/socket/handlers.js.map +1 -1
- package/dist/socket/index.d.ts +1 -11
- package/dist/socket/index.d.ts.map +1 -1
- package/dist/socket/index.js +11 -43
- package/dist/socket/index.js.map +1 -1
- package/dist/types/common.d.ts +6 -0
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/common.js.map +1 -1
- package/dist/vite-plugin-inject-sb-ids-transform.d.mts +15 -0
- package/dist/vite-plugin-inject-sb-ids-transform.d.mts.map +1 -0
- package/dist/vite-plugin-inject-sb-ids-transform.mjs +86 -0
- package/dist/vite-plugin-inject-sb-ids-transform.mjs.map +1 -0
- package/package.json +26 -6
- package/src/application-build.mts +160 -0
- package/src/cli-replacement/automatic-upgrades.ts +363 -0
- package/src/cli-replacement/dev.mts +120 -10
- package/src/client.ts +13 -4
- package/src/dev-utils/dev-server.mts +79 -19
- package/src/dev-utils/dev-tracer.ts +69 -24
- package/src/dev-utils/vite-plugin-react-transform.mts +1 -0
- package/src/dev-utils/vite-plugin-sb-cdn.mts +45 -11
- package/src/index.ts +6 -1
- package/src/socket/handlers.ts +109 -105
- package/src/socket/index.ts +21 -101
- package/src/types/common.ts +7 -0
- package/src/vite-plugin-inject-sb-ids-transform.mts +104 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/socket/socket.d.ts +0 -61
- package/dist/socket/socket.d.ts.map +0 -1
- package/dist/socket/socket.js +0 -251
- package/dist/socket/socket.js.map +0 -1
- 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
|
-
|
|
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;
|
|
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":"AAAA,OAAO,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"dev.mjs","sourceRoot":"","sources":["../../src/cli-replacement/dev.mts"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,CAAC;AAEpC,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,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;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,MAAM,MAAM,4BAA4B,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,iCAAiC,GAClC,MAAM,yBAAyB,CAAC;AAKjC,MAAM,IAAI,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAE3C,MAAM,iBAAiB,GAAG,CAAC,OAA2B,EAAE,MAAiB,EAAE,EAAE;IAC3E,IAAI,OAAO,EAAE,CAAC;QACZ,yGAAyG;QACzG,MAAM,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;AACH,CAAC,CAAC;AAEF,KAAK,UAAU,WAAW,CAAC,GAAW;IACpC,IAAI,CAAC;QACH,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QACjD,OAAO,MAAM,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,GAAW,EAAE,MAAiB;IAC3D,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC;YACtB,UAAU,EAAE;gBACV,sBAAsB;gBACtB,UAAU;gBACV,kBAAkB;gBAClB,kBAAkB;aACnB;YACD,GAAG;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,CAAC,IAAI,CACT,iEAAiE,CAClE,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAG,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QAE/D,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CACT,2CAA2C,EAAE,CAAC,KAAK,iCAAiC,CACrF,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC;QACzC,MAAM,CAAC,IAAI,CACT,WAAW,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAChE,CAAC;QAEF,MAAM,IAAI,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,sCAAsC,KAAK,EAAE,CAAC,CAAC;QAC5D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAwBzB;IACC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEzC,MAAM,EACJ,GAAG,EACH,WAAW,EACX,aAAa,EACb,aAAa,EACb,WAAW,EACX,QAAQ,EACR,iBAAiB,EACjB,eAAe,GAChB,GAAG,OAAO,CAAC;IAEZ,MAAM,UAAU,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAChD,MAAM,cAAc,GAAG,MAAM,iCAAiC,EAAE,CAAC;IACjE,MAAM,CAAC,IAAI,CACT,oBAAoB,OAAO,CAAC,eAAe,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,kBAAkB,iBAAiB,EAAE,kBAAkB,iBAAiB,UAAU,qBAAqB,cAAc,EAAE,KAAK,IAAI,cAAc,EAAE,OAAO,EAAE,CAC3S,CAAC;IAEF,6BAA6B;IAC7B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;IACJ,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,IAAI,IAAI,CAAC;IAEnC,MAAM,gBAAgB,GAAG,IAAI,cAAc,EAAE,CAAC;IAC9C,IAAI,WAAoC,CAAC;IACzC,IAAI,WAAoC,CAAC;IACzC,IAAI,SAAgC,CAAC;IAErC,IAAI,iBAAiB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnC,WAAW,GAAG,IAAI,WAAW,CAAC;YAC5B,SAAS,EAAE,iBAAiB,CAAC,KAAK;YAClC,kBAAkB,EAAE,iBAAiB,CAAC,kBAAkB;YACxD,aAAa,EAAE,iBAAiB,CAAC,EAAE;YACnC,UAAU,EAAE,iBAAiB,CAAC,UAAU;YACxC,QAAQ,EACN,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,MAAM;gBACvC,CAAC,CAAC,QAAQ,CAAC,GAAG;gBACd,CAAC,CAAC,QAAQ,CAAC,KAAK;YACpB,MAAM;SACP,CAAC,CAAC;QACH,WAAW,GAAG,IAAI,WAAW,CAAC;YAC5B,SAAS,EAAE,iBAAiB,CAAC,KAAK;YAClC,kBAAkB,EAAE,iBAAiB,CAAC,kBAAkB;YACxD,cAAc,EAAE,GAAG;YACnB,aAAa,EAAE,iBAAiB,CAAC,EAAE;YACnC,UAAU,EAAE,iBAAiB,CAAC,UAAU;YACxC,gBAAgB;YAChB,WAAW;YACX,MAAM;SACP,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QAElE,IAAI,CAAC;YACH,MAAM,eAAe,CAAC,KAAK,IAAI,EAAE;gBAC/B,MAAM,GAAG,GAAG,IAAI,cAAc,CAC5B,iBAAiB,CAAC,KAAK,EACvB,iBAAiB,CAAC,kBAAkB,EACpC,EAAE,CACH,CAAC;gBAEF,IAAI,WAAW,EAAE,CAAC;oBAChB,IAAI,CAAC;wBACH,MAAM,WAAY,CAAC,WAAW,EAAE,CAAC;wBAEjC,kFAAkF;wBAClF,IACE,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc;4BAC3B,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,EAAE;4BACjC,CAAC,eAAe,EAChB,CAAC;4BACD,MAAM,uBAAuB,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;wBAChE,CAAC;oBACH,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;wBAC7D,iBAAiB,CACd,KAA2C,CAAC,OAAO,EAAE,OAAO,EAC7D,MAAM,CACP,CAAC;wBACF,MAAM,IAAI,KAAK,CAAC,0CAA0C,KAAK,EAAE,CAAC,CAAC;oBACrE,CAAC;gBACH,CAAC;gBAED,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;oBACjE,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC;oBAC3B,GAAG,CAAC,+BAA+B,CAAC;wBAClC,aAAa,EAAE,iBAAiB,CAAC,EAAE;wBACnC,MAAM,EAAE,iBAAiB,CAAC,UAAU;qBACrC,CAAC;oBACF,GAAG,CAAC,gBAAgB,EAAE;iBACvB,CAAC,CAAC;gBAEH,SAAS,GAAG,IAAI,SAAS,CAAC;oBACxB,SAAS,EAAE,iBAAiB,CAAC,KAAK;oBAClC,kBAAkB,EAAE,iBAAiB,CAAC,kBAAkB;oBACxD,cAAc,EAAE,OAAO,CAAC,GAAG;oBAC3B,aAAa,EAAE,iBAAiB,CAAC,EAAE;oBACnC,cAAc,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE;oBAC/C,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE;oBACpD,gBAAgB;oBAChB,cAAc,EAAE,WAA8B;oBAC9C,MAAM;iBACP,CAAC,CAAC;gBAEH,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,KAAK,UAAU,CAAC;gBAEnD,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;oBACvD,OAAO;gBACT,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;gBAE3D,IAAI,CAAC,CAAC,aAAa,IAAI,WAAW,CAAC,EAAE,CAAC;oBACpC,MAAM,IAAI,KAAK,CACb,2EAA2E,CAC5E,CAAC;gBACJ,CAAC;gBACD,IAAI,aAAa,IAAI,WAAW,EAAE,CAAC;oBACjC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;gBACtE,CAAC;gBAED,IAAI,aAAa,EAAE,CAAC;oBAClB,MAAM,CAAC,IAAI,CACT,sEAAsE,CACvE,CAAC;oBAEF,oCAAoC;oBACpC,MAAM,iBAAiB,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;oBAEjD,MAAM,WAAY,CAAC,iBAAiB,EAAE,CAAC;oBAEvC,+CAA+C;oBAC/C,MAAM,gBAAgB,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;oBAEhD,gCAAgC;oBAChC,IAAI,iBAAiB,IAAI,gBAAgB,EAAE,CAAC;wBAC1C,MAAM,IAAI,GAAG,QAAQ,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;wBAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;wBAEnE,IAAI,UAAU,EAAE,CAAC;4BACf,MAAM,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;4BAC9D,MAAM,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;wBACrC,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,WAAW,EAAE,CAAC;oBACvB,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;oBAC/D,MAAM,WAAY,CAAC,eAAe,EAAE,CAAC;gBACvC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC;QACvC,IAAI,EAAE,OAAO,CAAC,GAAG;QACjB,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,IAAI;QACV,gBAAgB;QAChB,WAAW;QACX,WAAW;QACX,SAAS;QACT,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QAC7C,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7B,UAAU,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAClD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC;AAClD,CAAC"}
|