@simplysm/sd-cli 13.0.0-beta.44 → 13.0.0-beta.46

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":"esbuild-config.d.ts","sourceRoot":"","sources":["../../src/utils/esbuild-config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAsC/C;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,qBAAqB;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAYhG;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAuB9F;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,CAE9F;AAUD;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAU3E;AAyCD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAUrE"}
1
+ {"version":3,"file":"esbuild-config.d.ts","sourceRoot":"","sources":["../../src/utils/esbuild-config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAsC/C;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC1C;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,qBAAqB;IACrB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAWD;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAkBhG;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAuB9F;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,CAE9F;AAUD;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAU3E;AAyCD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAUrE"}
@@ -3,6 +3,7 @@ import { readFileSync, existsSync } from "fs";
3
3
  import fs from "fs/promises";
4
4
  import { createRequire } from "module";
5
5
  import { glob } from "glob";
6
+ import { solidPlugin } from "esbuild-plugin-solid";
6
7
  function esmRelativeImportPlugin(outdir) {
7
8
  return {
8
9
  name: "esm-relative-import",
@@ -29,7 +30,16 @@ function esmRelativeImportPlugin(outdir) {
29
30
  }
30
31
  };
31
32
  }
33
+ function hasSolidDependency(pkgDir) {
34
+ const pkgJson = JSON.parse(readFileSync(path.join(pkgDir, "package.json"), "utf-8"));
35
+ const allDeps = { ...pkgJson.dependencies, ...pkgJson.peerDependencies };
36
+ return "solid-js" in allDeps;
37
+ }
32
38
  function createLibraryEsbuildOptions(options) {
39
+ const plugins = [esmRelativeImportPlugin(path.join(options.pkgDir, "dist"))];
40
+ if (hasSolidDependency(options.pkgDir)) {
41
+ plugins.unshift(solidPlugin());
42
+ }
33
43
  return {
34
44
  entryPoints: options.entryPoints,
35
45
  outdir: path.join(options.pkgDir, "dist"),
@@ -39,7 +49,7 @@ function createLibraryEsbuildOptions(options) {
39
49
  target: options.target === "node" ? "node20" : "chrome84",
40
50
  bundle: false,
41
51
  tsconfigRaw: { compilerOptions: options.compilerOptions },
42
- plugins: [esmRelativeImportPlugin(path.join(options.pkgDir, "dist"))]
52
+ plugins
43
53
  };
44
54
  }
45
55
  function createServerEsbuildOptions(options) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utils/esbuild-config.ts"],
4
- "sourcesContent": ["import path from \"path\";\nimport { readFileSync, existsSync } from \"fs\";\nimport fs from \"fs/promises\";\nimport { createRequire } from \"module\";\nimport { glob } from \"glob\";\nimport type esbuild from \"esbuild\";\nimport type { TypecheckEnv } from \"./tsconfig\";\n\n/**\n * ESM \uC0C1\uB300 import \uACBD\uB85C\uC5D0 .js \uD655\uC7A5\uC790\uB97C \uCD94\uAC00\uD558\uB294 esbuild \uD50C\uB7EC\uADF8\uC778.\n *\n * bundle: false \uBAA8\uB4DC\uC5D0\uC11C esbuild\uB294 import \uACBD\uB85C\uB97C \uADF8\uB300\uB85C \uC720\uC9C0\uD558\uBBC0\uB85C,\n * Node.js ESM\uC5D0\uC11C \uC9C1\uC811 \uC2E4\uD589 \uC2DC \uD655\uC7A5\uC790 \uB204\uB77D\uC73C\uB85C \uBAA8\uB4C8\uC744 \uCC3E\uC9C0 \uBABB\uD558\uB294 \uBB38\uC81C\uB97C \uD574\uACB0\uD55C\uB2E4.\n */\nfunction esmRelativeImportPlugin(outdir: string): esbuild.Plugin {\n return {\n name: \"esm-relative-import\",\n setup(build) {\n build.onEnd(async () => {\n const files = await glob(\"**/*.js\", { cwd: outdir });\n\n await Promise.all(\n files.map(async (file) => {\n const filePath = path.join(outdir, file);\n const content = await fs.readFile(filePath, \"utf-8\");\n\n const rewritten = content.replace(\n /((?:from|import)\\s*[\"'])(\\.\\.?\\/[^\"']*?)([\"'])/g,\n (_match, prefix: string, importPath: string, suffix: string) => {\n if (/\\.(js|mjs|cjs|json|css|wasm|node)$/i.test(importPath)) return _match;\n return `${prefix}${importPath}.js${suffix}`;\n },\n );\n\n if (rewritten !== content) {\n await fs.writeFile(filePath, rewritten);\n }\n }),\n );\n });\n },\n };\n}\n\n/**\n * Library \uBE4C\uB4DC\uC6A9 esbuild \uC635\uC158\n * - bundle: false (\uAC1C\uBCC4 \uD30C\uC77C \uD2B8\uB79C\uC2A4\uD30C\uC77C)\n * - platform: target\uC5D0 \uB530\uB77C node \uB610\uB294 browser\n */\nexport interface LibraryEsbuildOptions {\n pkgDir: string;\n entryPoints: string[];\n target: \"node\" | \"browser\" | \"neutral\";\n compilerOptions: Record<string, unknown>;\n}\n\n/**\n * Server \uBE4C\uB4DC\uC6A9 esbuild \uC635\uC158\n * - bundle: true (\uBAA8\uB4E0 \uC758\uC874\uC131 \uD3EC\uD568\uD55C \uB2E8\uC77C \uBC88\uB4E4)\n */\nexport interface ServerEsbuildOptions {\n pkgDir: string;\n entryPoints: string[];\n compilerOptions: Record<string, unknown>;\n env?: Record<string, string>;\n /** \uBC88\uB4E4\uC5D0\uC11C \uC81C\uC678\uD560 \uC678\uBD80 \uBAA8\uB4C8 */\n external?: string[];\n}\n\n/**\n * Library\uC6A9 esbuild \uC124\uC815 \uC0DD\uC131\n *\n * node/browser/neutral \uD0C0\uAC9F\uC758 \uB77C\uC774\uBE0C\uB7EC\uB9AC \uD328\uD0A4\uC9C0 \uBE4C\uB4DC\uC5D0 \uC0AC\uC6A9\uD569\uB2C8\uB2E4.\n * - bundle: false (\uAC1C\uBCC4 \uD30C\uC77C\uC744 \uAC01\uAC01 \uD2B8\uB79C\uC2A4\uD30C\uC77C)\n * - platform: target\uC774 node\uBA74 node, \uADF8 \uC678\uB294 browser\n * - target: node\uBA74 node20, \uADF8 \uC678\uB294 chrome84\n */\nexport function createLibraryEsbuildOptions(options: LibraryEsbuildOptions): esbuild.BuildOptions {\n return {\n entryPoints: options.entryPoints,\n outdir: path.join(options.pkgDir, \"dist\"),\n format: \"esm\",\n sourcemap: true,\n platform: options.target === \"node\" ? \"node\" : \"browser\",\n target: options.target === \"node\" ? \"node20\" : \"chrome84\",\n bundle: false,\n tsconfigRaw: { compilerOptions: options.compilerOptions as esbuild.TsconfigRaw[\"compilerOptions\"] },\n plugins: [esmRelativeImportPlugin(path.join(options.pkgDir, \"dist\"))],\n };\n}\n\n/**\n * Server\uC6A9 esbuild \uC124\uC815 \uC0DD\uC131\n *\n * \uC11C\uBC84 \uD328\uD0A4\uC9C0 \uBE4C\uB4DC\uC5D0 \uC0AC\uC6A9\uD569\uB2C8\uB2E4.\n * - bundle: true (\uBAA8\uB4E0 \uC758\uC874\uC131 \uD3EC\uD568\uD55C \uB2E8\uC77C \uBC88\uB4E4)\n * - banner: CJS \uD328\uD0A4\uC9C0\uC758 require() \uC9C0\uC6D0\uC744 \uC704\uD55C createRequire shim\n * - env\uB97C define \uC635\uC158\uC73C\uB85C \uCE58\uD658 (process.env[\"KEY\"] \uD615\uD0DC)\n */\nexport function createServerEsbuildOptions(options: ServerEsbuildOptions): esbuild.BuildOptions {\n const define: Record<string, string> = {};\n if (options.env != null) {\n for (const [key, value] of Object.entries(options.env)) {\n define[`process.env[\"${key}\"]`] = JSON.stringify(value);\n }\n }\n\n return {\n entryPoints: options.entryPoints,\n outdir: path.join(options.pkgDir, \"dist\"),\n format: \"esm\",\n sourcemap: true,\n platform: \"node\",\n target: \"node20\",\n bundle: true,\n banner: {\n js: \"import { createRequire } from 'module'; const require = createRequire(import.meta.url);\",\n },\n external: options.external,\n define,\n tsconfigRaw: { compilerOptions: options.compilerOptions as esbuild.TsconfigRaw[\"compilerOptions\"] },\n };\n}\n\n/**\n * \uBE4C\uB4DC \uD0C0\uAC9F\uC5D0\uC11C TypecheckEnv \uCD94\uCD9C\n *\n * \uBE4C\uB4DC\uC6A9\uC774\uBBC0\uB85C neutral\uC740 browser\uB85C \uCC98\uB9AC\uD569\uB2C8\uB2E4.\n * (neutral \uD328\uD0A4\uC9C0\uB294 Node/\uBE0C\uB77C\uC6B0\uC800 \uACF5\uC6A9\uC774\uC9C0\uB9CC, \uBE4C\uB4DC \uC2DC\uC5D0\uB294 browser \uD658\uACBD \uAE30\uC900\uC73C\uB85C \uCC98\uB9AC)\n */\nexport function getTypecheckEnvFromTarget(target: \"node\" | \"browser\" | \"neutral\"): TypecheckEnv {\n return target === \"node\" ? \"node\" : \"browser\";\n}\n\n//#region Optional Peer Deps\n\ninterface PkgJson {\n dependencies?: Record<string, string>;\n peerDependencies?: Record<string, string>;\n peerDependenciesMeta?: Record<string, { optional?: boolean }>;\n}\n\n/**\n * \uC758\uC874\uC131 \uD2B8\uB9AC\uC5D0\uC11C \uBBF8\uC124\uCE58 optional peer dep \uC218\uC9D1\n *\n * \uC11C\uBC84 \uBE4C\uB4DC(bundle: true) \uC2DC \uC124\uCE58\uB418\uC9C0 \uC54A\uC740 optional peer dependency\uB97C\n * esbuild external\uB85C \uC9C0\uC815\uD558\uC5EC \uBE4C\uB4DC \uC2E4\uD328\uB97C \uBC29\uC9C0\uD55C\uB2E4.\n */\nexport function collectUninstalledOptionalPeerDeps(pkgDir: string): string[] {\n const external = new Set<string>();\n const visited = new Set<string>();\n\n const pkgJson = JSON.parse(readFileSync(path.join(pkgDir, \"package.json\"), \"utf-8\")) as PkgJson;\n for (const dep of Object.keys(pkgJson.dependencies ?? {})) {\n scanOptionalPeerDeps(dep, pkgDir, external, visited);\n }\n\n return [...external];\n}\n\nfunction scanOptionalPeerDeps(pkgName: string, resolveDir: string, external: Set<string>, visited: Set<string>): void {\n if (visited.has(pkgName)) return;\n visited.add(pkgName);\n\n const req = createRequire(path.join(resolveDir, \"noop.js\"));\n\n let pkgJsonPath: string;\n try {\n pkgJsonPath = req.resolve(`${pkgName}/package.json`);\n } catch {\n return;\n }\n\n const depDir = path.dirname(pkgJsonPath);\n const pkgJson = JSON.parse(readFileSync(pkgJsonPath, \"utf-8\")) as PkgJson;\n\n if (pkgJson.peerDependenciesMeta != null) {\n const peerDeps = pkgJson.peerDependencies ?? {};\n const depReq = createRequire(path.join(depDir, \"noop.js\"));\n for (const [name, meta] of Object.entries(pkgJson.peerDependenciesMeta)) {\n if (meta.optional === true && name in peerDeps) {\n try {\n depReq.resolve(name);\n } catch {\n external.add(name);\n }\n }\n }\n }\n\n for (const dep of Object.keys(pkgJson.dependencies ?? {})) {\n scanOptionalPeerDeps(dep, depDir, external, visited);\n }\n}\n\n//#endregion\n\n//#region Native Module Externals\n\n/**\n * \uC758\uC874\uC131 \uC911 binding.gyp\uAC00 \uC788\uB294 \uB124\uC774\uD2F0\uBE0C \uBAA8\uB4C8 \uC218\uC9D1\n *\n * node-gyp\uB85C \uBE4C\uB4DC\uB418\uB294 \uB124\uC774\uD2F0\uBE0C \uBAA8\uB4C8\uC740 esbuild\uAC00 \uBC88\uB4E4\uB9C1\uD560 \uC218 \uC5C6\uC73C\uBBC0\uB85C\n * external\uB85C \uC9C0\uC815\uD574\uC57C \uD55C\uB2E4.\n */\nexport function collectNativeModuleExternals(pkgDir: string): string[] {\n const external = new Set<string>();\n const visited = new Set<string>();\n\n const pkgJson = JSON.parse(readFileSync(path.join(pkgDir, \"package.json\"), \"utf-8\")) as PkgJson;\n for (const dep of Object.keys(pkgJson.dependencies ?? {})) {\n scanNativeModules(dep, pkgDir, external, visited);\n }\n\n return [...external];\n}\n\nfunction scanNativeModules(pkgName: string, resolveDir: string, external: Set<string>, visited: Set<string>): void {\n if (visited.has(pkgName)) return;\n visited.add(pkgName);\n\n const req = createRequire(path.join(resolveDir, \"noop.js\"));\n\n let pkgJsonPath: string;\n try {\n pkgJsonPath = req.resolve(`${pkgName}/package.json`);\n } catch {\n return;\n }\n\n const depDir = path.dirname(pkgJsonPath);\n\n // binding.gyp \uC874\uC7AC \uC5EC\uBD80\uB85C \uB124\uC774\uD2F0\uBE0C \uBAA8\uB4C8 \uAC10\uC9C0\n if (existsSync(path.join(depDir, \"binding.gyp\"))) {\n external.add(pkgName);\n }\n\n // \uD558\uC704 dependencies\uB3C4 \uC7AC\uADC0 \uD0D0\uC0C9\n const depPkgJson = JSON.parse(readFileSync(pkgJsonPath, \"utf-8\")) as PkgJson;\n for (const dep of Object.keys(depPkgJson.dependencies ?? {})) {\n scanNativeModules(dep, depDir, external, visited);\n }\n}\n\n//#endregion\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import path from \"path\";\nimport { readFileSync, existsSync } from \"fs\";\nimport fs from \"fs/promises\";\nimport { createRequire } from \"module\";\nimport { glob } from \"glob\";\nimport type esbuild from \"esbuild\";\nimport { solidPlugin } from \"esbuild-plugin-solid\";\nimport type { TypecheckEnv } from \"./tsconfig\";\n\n/**\n * ESM \uC0C1\uB300 import \uACBD\uB85C\uC5D0 .js \uD655\uC7A5\uC790\uB97C \uCD94\uAC00\uD558\uB294 esbuild \uD50C\uB7EC\uADF8\uC778.\n *\n * bundle: false \uBAA8\uB4DC\uC5D0\uC11C esbuild\uB294 import \uACBD\uB85C\uB97C \uADF8\uB300\uB85C \uC720\uC9C0\uD558\uBBC0\uB85C,\n * Node.js ESM\uC5D0\uC11C \uC9C1\uC811 \uC2E4\uD589 \uC2DC \uD655\uC7A5\uC790 \uB204\uB77D\uC73C\uB85C \uBAA8\uB4C8\uC744 \uCC3E\uC9C0 \uBABB\uD558\uB294 \uBB38\uC81C\uB97C \uD574\uACB0\uD55C\uB2E4.\n */\nfunction esmRelativeImportPlugin(outdir: string): esbuild.Plugin {\n return {\n name: \"esm-relative-import\",\n setup(build) {\n build.onEnd(async () => {\n const files = await glob(\"**/*.js\", { cwd: outdir });\n\n await Promise.all(\n files.map(async (file) => {\n const filePath = path.join(outdir, file);\n const content = await fs.readFile(filePath, \"utf-8\");\n\n const rewritten = content.replace(\n /((?:from|import)\\s*[\"'])(\\.\\.?\\/[^\"']*?)([\"'])/g,\n (_match, prefix: string, importPath: string, suffix: string) => {\n if (/\\.(js|mjs|cjs|json|css|wasm|node)$/i.test(importPath)) return _match;\n return `${prefix}${importPath}.js${suffix}`;\n },\n );\n\n if (rewritten !== content) {\n await fs.writeFile(filePath, rewritten);\n }\n }),\n );\n });\n },\n };\n}\n\n/**\n * Library \uBE4C\uB4DC\uC6A9 esbuild \uC635\uC158\n * - bundle: false (\uAC1C\uBCC4 \uD30C\uC77C \uD2B8\uB79C\uC2A4\uD30C\uC77C)\n * - platform: target\uC5D0 \uB530\uB77C node \uB610\uB294 browser\n */\nexport interface LibraryEsbuildOptions {\n pkgDir: string;\n entryPoints: string[];\n target: \"node\" | \"browser\" | \"neutral\";\n compilerOptions: Record<string, unknown>;\n}\n\n/**\n * Server \uBE4C\uB4DC\uC6A9 esbuild \uC635\uC158\n * - bundle: true (\uBAA8\uB4E0 \uC758\uC874\uC131 \uD3EC\uD568\uD55C \uB2E8\uC77C \uBC88\uB4E4)\n */\nexport interface ServerEsbuildOptions {\n pkgDir: string;\n entryPoints: string[];\n compilerOptions: Record<string, unknown>;\n env?: Record<string, string>;\n /** \uBC88\uB4E4\uC5D0\uC11C \uC81C\uC678\uD560 \uC678\uBD80 \uBAA8\uB4C8 */\n external?: string[];\n}\n\n/**\n * package.json\uC5D0\uC11C solid-js \uC758\uC874\uC131 \uAC10\uC9C0\n */\nfunction hasSolidDependency(pkgDir: string): boolean {\n const pkgJson = JSON.parse(readFileSync(path.join(pkgDir, \"package.json\"), \"utf-8\")) as PkgJson;\n const allDeps = { ...pkgJson.dependencies, ...pkgJson.peerDependencies };\n return \"solid-js\" in allDeps;\n}\n\n/**\n * Library\uC6A9 esbuild \uC124\uC815 \uC0DD\uC131\n *\n * node/browser/neutral \uD0C0\uAC9F\uC758 \uB77C\uC774\uBE0C\uB7EC\uB9AC \uD328\uD0A4\uC9C0 \uBE4C\uB4DC\uC5D0 \uC0AC\uC6A9\uD569\uB2C8\uB2E4.\n * - bundle: false (\uAC1C\uBCC4 \uD30C\uC77C\uC744 \uAC01\uAC01 \uD2B8\uB79C\uC2A4\uD30C\uC77C)\n * - platform: target\uC774 node\uBA74 node, \uADF8 \uC678\uB294 browser\n * - target: node\uBA74 node20, \uADF8 \uC678\uB294 chrome84\n */\nexport function createLibraryEsbuildOptions(options: LibraryEsbuildOptions): esbuild.BuildOptions {\n const plugins: esbuild.Plugin[] = [esmRelativeImportPlugin(path.join(options.pkgDir, \"dist\"))];\n\n if (hasSolidDependency(options.pkgDir)) {\n plugins.unshift(solidPlugin());\n }\n\n return {\n entryPoints: options.entryPoints,\n outdir: path.join(options.pkgDir, \"dist\"),\n format: \"esm\",\n sourcemap: true,\n platform: options.target === \"node\" ? \"node\" : \"browser\",\n target: options.target === \"node\" ? \"node20\" : \"chrome84\",\n bundle: false,\n tsconfigRaw: { compilerOptions: options.compilerOptions as esbuild.TsconfigRaw[\"compilerOptions\"] },\n plugins,\n };\n}\n\n/**\n * Server\uC6A9 esbuild \uC124\uC815 \uC0DD\uC131\n *\n * \uC11C\uBC84 \uD328\uD0A4\uC9C0 \uBE4C\uB4DC\uC5D0 \uC0AC\uC6A9\uD569\uB2C8\uB2E4.\n * - bundle: true (\uBAA8\uB4E0 \uC758\uC874\uC131 \uD3EC\uD568\uD55C \uB2E8\uC77C \uBC88\uB4E4)\n * - banner: CJS \uD328\uD0A4\uC9C0\uC758 require() \uC9C0\uC6D0\uC744 \uC704\uD55C createRequire shim\n * - env\uB97C define \uC635\uC158\uC73C\uB85C \uCE58\uD658 (process.env[\"KEY\"] \uD615\uD0DC)\n */\nexport function createServerEsbuildOptions(options: ServerEsbuildOptions): esbuild.BuildOptions {\n const define: Record<string, string> = {};\n if (options.env != null) {\n for (const [key, value] of Object.entries(options.env)) {\n define[`process.env[\"${key}\"]`] = JSON.stringify(value);\n }\n }\n\n return {\n entryPoints: options.entryPoints,\n outdir: path.join(options.pkgDir, \"dist\"),\n format: \"esm\",\n sourcemap: true,\n platform: \"node\",\n target: \"node20\",\n bundle: true,\n banner: {\n js: \"import { createRequire } from 'module'; const require = createRequire(import.meta.url);\",\n },\n external: options.external,\n define,\n tsconfigRaw: { compilerOptions: options.compilerOptions as esbuild.TsconfigRaw[\"compilerOptions\"] },\n };\n}\n\n/**\n * \uBE4C\uB4DC \uD0C0\uAC9F\uC5D0\uC11C TypecheckEnv \uCD94\uCD9C\n *\n * \uBE4C\uB4DC\uC6A9\uC774\uBBC0\uB85C neutral\uC740 browser\uB85C \uCC98\uB9AC\uD569\uB2C8\uB2E4.\n * (neutral \uD328\uD0A4\uC9C0\uB294 Node/\uBE0C\uB77C\uC6B0\uC800 \uACF5\uC6A9\uC774\uC9C0\uB9CC, \uBE4C\uB4DC \uC2DC\uC5D0\uB294 browser \uD658\uACBD \uAE30\uC900\uC73C\uB85C \uCC98\uB9AC)\n */\nexport function getTypecheckEnvFromTarget(target: \"node\" | \"browser\" | \"neutral\"): TypecheckEnv {\n return target === \"node\" ? \"node\" : \"browser\";\n}\n\n//#region Optional Peer Deps\n\ninterface PkgJson {\n dependencies?: Record<string, string>;\n peerDependencies?: Record<string, string>;\n peerDependenciesMeta?: Record<string, { optional?: boolean }>;\n}\n\n/**\n * \uC758\uC874\uC131 \uD2B8\uB9AC\uC5D0\uC11C \uBBF8\uC124\uCE58 optional peer dep \uC218\uC9D1\n *\n * \uC11C\uBC84 \uBE4C\uB4DC(bundle: true) \uC2DC \uC124\uCE58\uB418\uC9C0 \uC54A\uC740 optional peer dependency\uB97C\n * esbuild external\uB85C \uC9C0\uC815\uD558\uC5EC \uBE4C\uB4DC \uC2E4\uD328\uB97C \uBC29\uC9C0\uD55C\uB2E4.\n */\nexport function collectUninstalledOptionalPeerDeps(pkgDir: string): string[] {\n const external = new Set<string>();\n const visited = new Set<string>();\n\n const pkgJson = JSON.parse(readFileSync(path.join(pkgDir, \"package.json\"), \"utf-8\")) as PkgJson;\n for (const dep of Object.keys(pkgJson.dependencies ?? {})) {\n scanOptionalPeerDeps(dep, pkgDir, external, visited);\n }\n\n return [...external];\n}\n\nfunction scanOptionalPeerDeps(pkgName: string, resolveDir: string, external: Set<string>, visited: Set<string>): void {\n if (visited.has(pkgName)) return;\n visited.add(pkgName);\n\n const req = createRequire(path.join(resolveDir, \"noop.js\"));\n\n let pkgJsonPath: string;\n try {\n pkgJsonPath = req.resolve(`${pkgName}/package.json`);\n } catch {\n return;\n }\n\n const depDir = path.dirname(pkgJsonPath);\n const pkgJson = JSON.parse(readFileSync(pkgJsonPath, \"utf-8\")) as PkgJson;\n\n if (pkgJson.peerDependenciesMeta != null) {\n const peerDeps = pkgJson.peerDependencies ?? {};\n const depReq = createRequire(path.join(depDir, \"noop.js\"));\n for (const [name, meta] of Object.entries(pkgJson.peerDependenciesMeta)) {\n if (meta.optional === true && name in peerDeps) {\n try {\n depReq.resolve(name);\n } catch {\n external.add(name);\n }\n }\n }\n }\n\n for (const dep of Object.keys(pkgJson.dependencies ?? {})) {\n scanOptionalPeerDeps(dep, depDir, external, visited);\n }\n}\n\n//#endregion\n\n//#region Native Module Externals\n\n/**\n * \uC758\uC874\uC131 \uC911 binding.gyp\uAC00 \uC788\uB294 \uB124\uC774\uD2F0\uBE0C \uBAA8\uB4C8 \uC218\uC9D1\n *\n * node-gyp\uB85C \uBE4C\uB4DC\uB418\uB294 \uB124\uC774\uD2F0\uBE0C \uBAA8\uB4C8\uC740 esbuild\uAC00 \uBC88\uB4E4\uB9C1\uD560 \uC218 \uC5C6\uC73C\uBBC0\uB85C\n * external\uB85C \uC9C0\uC815\uD574\uC57C \uD55C\uB2E4.\n */\nexport function collectNativeModuleExternals(pkgDir: string): string[] {\n const external = new Set<string>();\n const visited = new Set<string>();\n\n const pkgJson = JSON.parse(readFileSync(path.join(pkgDir, \"package.json\"), \"utf-8\")) as PkgJson;\n for (const dep of Object.keys(pkgJson.dependencies ?? {})) {\n scanNativeModules(dep, pkgDir, external, visited);\n }\n\n return [...external];\n}\n\nfunction scanNativeModules(pkgName: string, resolveDir: string, external: Set<string>, visited: Set<string>): void {\n if (visited.has(pkgName)) return;\n visited.add(pkgName);\n\n const req = createRequire(path.join(resolveDir, \"noop.js\"));\n\n let pkgJsonPath: string;\n try {\n pkgJsonPath = req.resolve(`${pkgName}/package.json`);\n } catch {\n return;\n }\n\n const depDir = path.dirname(pkgJsonPath);\n\n // binding.gyp \uC874\uC7AC \uC5EC\uBD80\uB85C \uB124\uC774\uD2F0\uBE0C \uBAA8\uB4C8 \uAC10\uC9C0\n if (existsSync(path.join(depDir, \"binding.gyp\"))) {\n external.add(pkgName);\n }\n\n // \uD558\uC704 dependencies\uB3C4 \uC7AC\uADC0 \uD0D0\uC0C9\n const depPkgJson = JSON.parse(readFileSync(pkgJsonPath, \"utf-8\")) as PkgJson;\n for (const dep of Object.keys(depPkgJson.dependencies ?? {})) {\n scanNativeModules(dep, depDir, external, visited);\n }\n}\n\n//#endregion\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@simplysm/sd-cli",
3
3
  "sideEffects": false,
4
- "version": "13.0.0-beta.44",
4
+ "version": "13.0.0-beta.46",
5
5
  "description": "심플리즘 패키지 - CLI 도구",
6
6
  "author": "김석래",
7
7
  "repository": {
@@ -25,6 +25,7 @@
25
25
  "@inquirer/prompts": "^8.2.0",
26
26
  "consola": "^3.4.2",
27
27
  "esbuild": "^0.27.3",
28
+ "esbuild-plugin-solid": "^0.6.0",
28
29
  "eslint": "^9.39.2",
29
30
  "glob": "^13.0.2",
30
31
  "handlebars": "^4.7.8",
@@ -42,9 +43,9 @@
42
43
  "vite-plugin-solid": "^2.11.10",
43
44
  "vite-tsconfig-paths": "^6.1.0",
44
45
  "yargs": "^18.0.0",
45
- "@simplysm/core-common": "13.0.0-beta.44",
46
- "@simplysm/core-node": "13.0.0-beta.44",
47
- "@simplysm/storage": "13.0.0-beta.44"
46
+ "@simplysm/core-common": "13.0.0-beta.46",
47
+ "@simplysm/core-node": "13.0.0-beta.46",
48
+ "@simplysm/storage": "13.0.0-beta.46"
48
49
  },
49
50
  "devDependencies": {
50
51
  "@types/semver": "^7.7.1",
@@ -4,7 +4,7 @@
4
4
  "type": "module",
5
5
  "private": true,
6
6
  "dependencies": {
7
- "@simplysm/solid": "~13.0.0-beta.44",
7
+ "@simplysm/solid": "~13.0.0-beta.46",
8
8
  {{#if router}}
9
9
  "@solidjs/router": "^0.15.4",
10
10
  {{/if}}
@@ -4,7 +4,7 @@
4
4
  "type": "module",
5
5
  "private": true,
6
6
  "dependencies": {
7
- "@simplysm/core-common": "~13.0.0-beta.44",
8
- "@simplysm/service-server": "~13.0.0-beta.44"
7
+ "@simplysm/core-common": "~13.0.0-beta.46",
8
+ "@simplysm/service-server": "~13.0.0-beta.46"
9
9
  }
10
10
  }
@@ -15,9 +15,9 @@
15
15
  "vitest": "vitest"
16
16
  },
17
17
  "devDependencies": {
18
- "@simplysm/sd-cli": "~13.0.0-beta.44",
19
- "@simplysm/claude": "~13.0.0-beta.44",
20
- "@simplysm/eslint-plugin": "~13.0.0-beta.44",
18
+ "@simplysm/sd-cli": "~13.0.0-beta.46",
19
+ "@simplysm/claude": "~13.0.0-beta.46",
20
+ "@simplysm/eslint-plugin": "~13.0.0-beta.46",
21
21
  "@types/node": "^20.19.33",
22
22
  "eslint": "^9.39.2",
23
23
  "prettier": "^3.8.1",