@simplysm/sd-cli 14.2.6 → 14.2.8

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 (49) hide show
  1. package/dist/commands/device.d.ts.map +1 -1
  2. package/dist/commands/device.js +6 -3
  3. package/dist/commands/device.js.map +1 -1
  4. package/dist/commands/init/normalize.d.ts.map +1 -1
  5. package/dist/commands/init/normalize.js +1 -0
  6. package/dist/commands/init/normalize.js.map +1 -1
  7. package/dist/commands/init/types.d.ts +1 -0
  8. package/dist/commands/init/types.d.ts.map +1 -1
  9. package/dist/esbuild/esbuild-config.d.ts.map +1 -1
  10. package/dist/esbuild/esbuild-config.js +2 -0
  11. package/dist/esbuild/esbuild-config.js.map +1 -1
  12. package/dist/sd-config.types.d.ts +2 -1
  13. package/dist/sd-config.types.d.ts.map +1 -1
  14. package/dist/utils/license-extractor.d.ts +53 -0
  15. package/dist/utils/license-extractor.d.ts.map +1 -0
  16. package/dist/utils/license-extractor.js +163 -0
  17. package/dist/utils/license-extractor.js.map +1 -0
  18. package/dist/workers/client.worker.d.ts.map +1 -1
  19. package/dist/workers/client.worker.js +6 -11
  20. package/dist/workers/client.worker.js.map +1 -1
  21. package/dist/workers/server-build.worker.d.ts.map +1 -1
  22. package/dist/workers/server-build.worker.js +14 -4
  23. package/dist/workers/server-build.worker.js.map +1 -1
  24. package/package.json +4 -4
  25. package/src/commands/device.ts +7 -3
  26. package/src/commands/init/normalize.ts +1 -0
  27. package/src/commands/init/templates/client/package.json.hbs +10 -8
  28. package/src/commands/init/templates/client/src/app/home/master/role-permission/role-permission.view.ts.hbs +2 -2
  29. package/src/commands/init/templates/client/src/app/home/master/role-permission/role.detail.ts.hbs +7 -5
  30. package/src/commands/init/templates/client/src/app/home/my-info/my-info.detail.ts.hbs +2 -2
  31. package/src/commands/init/templates/client/src/app/home/system/system-log/system-log.list.ts.hbs +1 -1
  32. package/src/commands/init/templates/client/src/app/login/login.view.ts.hbs +1 -1
  33. package/src/commands/init/templates/client/src/modals/text-view.modal.ts.hbs +1 -1
  34. package/src/commands/init/templates/client/tsconfig.json +1 -0
  35. package/src/commands/init/templates/client-common/package.json.hbs +5 -5
  36. package/src/commands/init/templates/client-common/tsconfig.json +1 -0
  37. package/src/commands/init/templates/common/package.json.hbs +4 -4
  38. package/src/commands/init/templates/common/src/db/system-data-log.ext.ts.hbs +4 -4
  39. package/src/commands/init/templates/server/package.json.hbs +7 -7
  40. package/src/commands/init/templates/workspace-root/package.json.hbs +3 -2
  41. package/src/commands/init/templates/workspace-root/pnpm-workspace.yaml +13 -0
  42. package/src/commands/init/types.ts +1 -0
  43. package/src/esbuild/esbuild-config.ts +27 -32
  44. package/src/sd-config.types.ts +2 -1
  45. package/src/utils/license-extractor.ts +224 -0
  46. package/src/workers/client.worker.ts +16 -23
  47. package/src/workers/server-build.worker.ts +32 -12
  48. package/tests/init/render.spec.ts +21 -0
  49. package/tests/utils/license-extractor.spec.ts +273 -0
@@ -4,15 +4,16 @@ import esbuild from "esbuild";
4
4
  import { createWorker, FsWatcher, pathx } from "@simplysm/core-node";
5
5
  import { err as errNs } from "@simplysm/core-common";
6
6
  import { formatEsbuildMessages } from "../utils/output-utils.js";
7
- import { parseTsconfig, getPackageSourceFiles, } from "../utils/tsconfig.js";
8
- import { createServerEsbuildOptions, writeChangedOutputFiles, } from "../esbuild/esbuild-config.js";
9
- import { collectAllExternals, generateProductionFiles } from "../deps/server-externals/server-production-files.js";
7
+ import { parseTsconfig, getPackageSourceFiles } from "../utils/tsconfig.js";
8
+ import { createServerEsbuildOptions, writeChangedOutputFiles } from "../esbuild/esbuild-config.js";
9
+ import { collectAllExternals, generateProductionFiles, } from "../deps/server-externals/server-production-files.js";
10
10
  import { SdTsCompiler } from "../ts-compiler/SdTsCompiler.js";
11
11
  import { createTscPlugin } from "../esbuild/esbuild-tsc-plugin.js";
12
12
  import { createWorkerBundlePlugin } from "../esbuild/esbuild-worker-plugin.js";
13
13
  import { setupWorkerLifecycle } from "./shared-worker-lifecycle.js";
14
14
  import { buildWatchPaths } from "./build-watch-paths.js";
15
15
  import { copyPublicFiles, watchPublicFiles } from "../utils/copy-public.js";
16
+ import { extractLicenses, LICENSE_NOTICE_FILE_NAME } from "../utils/license-extractor.js";
16
17
  import * as esbuildCtx from "./server-esbuild-context.js";
17
18
  import { startServerWatchLoop } from "./server-watch-manager.js";
18
19
  //#endregion
@@ -53,6 +54,7 @@ async function build(info) {
53
54
  let tscErrors;
54
55
  let tscDiagnostics;
55
56
  let lint;
57
+ let bundleMetafile;
56
58
  if (info.output.js) {
57
59
  // js=true: tsc 플러그인 통합 — 단일 esbuild.build() 호출
58
60
  const tscPlugin = createTscPlugin({
@@ -69,8 +71,10 @@ async function build(info) {
69
71
  env: info.env,
70
72
  external: bundleExternals,
71
73
  });
72
- jsResult = await esbuild.build({ ...esbuildOptions, plugins: [createWorkerBundlePlugin(), tscPlugin.plugin] })
74
+ jsResult = await esbuild
75
+ .build({ ...esbuildOptions, plugins: [createWorkerBundlePlugin(), tscPlugin.plugin] })
73
76
  .then(async (result) => {
77
+ bundleMetafile = result.metafile;
74
78
  if (result.outputFiles) {
75
79
  await writeChangedOutputFiles(result.outputFiles, { rewriteJsExtensions: false });
76
80
  }
@@ -116,6 +120,12 @@ async function build(info) {
116
120
  fsx.writeJsonSync(confDistPath, info.configs ?? {}, { space: 2 });
117
121
  await copyPublicFiles(info.pkgDir, false);
118
122
  generateProductionFiles(info, prodDependencies);
123
+ if (jsResult.success) {
124
+ if (bundleMetafile == null) {
125
+ throw new Error("번들 metafile이 없어 제3자 라이선스 고지를 생성할 수 없습니다.");
126
+ }
127
+ await fsx.write(path.join(info.pkgDir, "dist", LICENSE_NOTICE_FILE_NAME), await extractLicenses(bundleMetafile, process.cwd()));
128
+ }
119
129
  }
120
130
  const allErrors = [...(jsResult.errors ?? []), ...tscErrors];
121
131
  const tscSuccess = tscErrors.length === 0;
@@ -1 +1 @@
1
- {"version":3,"file":"server-build.worker.js","sourceRoot":"","sources":["../../src/workers/server-build.worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server-build.worker.js","sourceRoot":"","sources":["../../src/workers/server-build.worker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/sd-cli",
3
- "version": "14.2.6",
3
+ "version": "14.2.8",
4
4
  "description": "Simplysm package - CLI tool",
5
5
  "license": "Apache-2.0",
6
6
  "author": "simplysm",
@@ -44,9 +44,9 @@
44
44
  "ws": "^8.21.1",
45
45
  "yaml": "^2.9.0",
46
46
  "yargs": "^18.1.0",
47
- "@simplysm/core-node": "14.2.6",
48
- "@simplysm/storage": "14.2.6",
49
- "@simplysm/core-common": "14.2.6"
47
+ "@simplysm/core-node": "14.2.8",
48
+ "@simplysm/core-common": "14.2.8",
49
+ "@simplysm/storage": "14.2.8"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@angular/core": "^22.0.8",
@@ -64,9 +64,13 @@ export async function runDevice(options: DeviceOptions): Promise<void> {
64
64
  if (typeof clientConfig.server === "number") {
65
65
  serverUrl = `http://localhost:${clientConfig.server}/${targetName}/`;
66
66
  } else {
67
- // server가 패키지명(string) 경우: 서버 패키지의 .dev-port 파일에서 포트 자동 탐지
68
- const serverPkgDir = pathx.posixResolve(cwd, "packages", clientConfig.server);
69
- const portFile = path.join(serverPkgDir, "dist", ".dev-port");
67
+ // server 가 패키지명(string)이면 서버가 클라이언트를 서빙하고,
68
+ // 미지정이면 클라이언트 자신의 dev server 가 서빙한다. 양쪽 다 .dev-port 포트를 탐지
69
+ const servingPkgDir =
70
+ clientConfig.server != null
71
+ ? pathx.posixResolve(cwd, "packages", clientConfig.server)
72
+ : pkgDir;
73
+ const portFile = path.join(servingPkgDir, "dist", ".dev-port");
70
74
  let portStr: string;
71
75
  try {
72
76
  portStr = fsx.readSync(portFile).trim();
@@ -58,6 +58,7 @@ export function normalize(input: InitInput): NormalizedInput {
58
58
  isMobile,
59
59
  appStructureName: `${str.toCamelCase(baseName)}AppStructureItems`,
60
60
  needsNgIcons: (hasRouter && hasAuth) || hasDb,
61
+ needsExcel: hasRouter && hasAuth,
61
62
  useSsg,
62
63
  robotsDirective: useSsg ? "Allow: /" : "Disallow: /",
63
64
  };
@@ -9,18 +9,20 @@
9
9
  "@angular/common": "^22.0.0",
10
10
  "@angular/core": "^22.0.0",
11
11
  "@angular/platform-browser": "^22.0.0",
12
- "@simplysm/angular": "~14.1.0",
13
- "@simplysm/core-browser": "~14.1.0",
14
- "@simplysm/core-common": "~14.1.0"{{#if hasClientCommon}},
12
+ "@simplysm/angular": "~14.2.0",
13
+ "@simplysm/core-browser": "~14.2.0",
14
+ "@simplysm/core-common": "~14.2.0"{{#if hasClientCommon}},
15
15
  "@{{workspaceName}}/client-common": "workspace:*"{{/if}}{{#if hasServer}},
16
- "@simplysm/service-client": "~14.1.0",
17
- "@simplysm/service-common": "~14.1.0"{{/if}}{{#if client.hasRouter}},
16
+ "@simplysm/service-client": "~14.2.0",
17
+ "@simplysm/service-common": "~14.2.0"{{/if}}{{#if client.hasRouter}},
18
18
  "@angular/router": "^22.0.0"{{/if}}{{#if client.useSsg}},
19
19
  "@angular/platform-server": "^22.0.0"{{/if}}{{#if client.needsNgIcons}},
20
- "@ng-icons/core": "^33.2.3",
21
- "@ng-icons/tabler-icons": "^33.2.3"{{/if}}{{#if hasDb}},
20
+ "@ng-icons/core": "^34.0.0",
21
+ "@ng-icons/tabler-icons": "^34.0.0"{{/if}}{{#if client.needsExcel}},
22
+ "@simplysm/excel": "~14.2.0",
23
+ "zod": "^4.4.3"{{/if}}{{#if hasDb}},
22
24
  "@{{workspaceName}}/common": "workspace:*",
23
- "@simplysm/orm-common": "~14.1.0"{{/if}}{{#if client.isMobile}},
25
+ "@simplysm/orm-common": "~14.2.0"{{/if}}{{#if client.isMobile}},
24
26
  "@capacitor/core": "^8.0.0"{{/if}}
25
27
  },
26
28
  "devDependencies": {
@@ -43,7 +43,7 @@ import { RoleList } from "./role.list";
43
43
  <div class="flex-row fill">
44
44
  <!-- min-width: 좌측 역할 목록이 너무 좁아져 가독성이 떨어지는 것을 막는 의도적 고정 폭 (사용자 지시) -->
45
45
  <sd-shared-data-select-list
46
- class="flex-min bdr bdr-color-lighter"
46
+ class="flex-min bdr bdr-soft"
47
47
  style="min-width: 12rem;"
48
48
  [items]="sharedRoles.items()"
49
49
  [(selectedItem)]="selectedRole"
@@ -59,7 +59,7 @@ import { RoleList } from "./role.list";
59
59
  @let _selectedRole = selectedRole();
60
60
  @if (_selectedRole == null) {
61
61
  <div
62
- class="flex-fill tx-theme-gray-default p-xxl"
62
+ class="flex-fill tx-gray p-xxl"
63
63
  style="font-size: 48px; line-height: 1.5em"
64
64
  >
65
65
  <ng-icon [svg]="tablerArrowLeft" />
@@ -132,6 +132,10 @@ export class RoleDetail implements SdModalContentDef<{ id: number } | undefined>
132
132
 
133
133
  this.busyCount.update((v) => v + 1);
134
134
  await this._sdToast.try(async () => {
135
+ const roleName = data.name;
136
+ if (roleName == null) {
137
+ throw new Error("이름을 입력하세요.");
138
+ }
135
139
  const roleId = this.roleId();
136
140
  const {{userEntityCamel}}Id = this._appAuth.authInfo()?.{{userEntityCamel}}Id;
137
141
 
@@ -140,7 +144,7 @@ export class RoleDetail implements SdModalContentDef<{ id: number } | undefined>
140
144
  const isDuplicated = await db
141
145
  .role()
142
146
  .where((c) => [
143
- expr.eq(c.name, data.name),
147
+ expr.eq(c.name, roleName),
144
148
  expr.eq(c.isDeleted, false),
145
149
  ...(roleId == null ? [] : [expr.not(expr.eq(c.id, roleId))]),
146
150
  ])
@@ -150,16 +154,14 @@ export class RoleDetail implements SdModalContentDef<{ id: number } | undefined>
150
154
  }
151
155
 
152
156
  if (roleId == null) {
153
- const [inserted] = await db
154
- .role()
155
- .insert([{ name: data.name, isDeleted: false }], ["id"]);
157
+ const [inserted] = await db.role().insert([{ name: roleName, isDeleted: false }], ["id"]);
156
158
  await db.role().insertDataLog({ action: "등록", itemId: inserted.id, {{userEntityCamel}}Id });
157
159
  return inserted.id;
158
160
  }
159
161
  await db
160
162
  .role()
161
163
  .where((c) => [expr.eq(c.id, roleId)])
162
- .update(() => ({ name: data.name }));
164
+ .update(() => ({ name: roleName }));
163
165
  await db.role().insertDataLog({ action: "수정", itemId: roleId, {{userEntityCamel}}Id });
164
166
  return roleId;
165
167
  });
@@ -107,7 +107,7 @@ import type { I{{userEntityPascal}}ConfigMap } from "@{{workspaceName}}/server";
107
107
  (valueChange)="mark(data)"
108
108
  >
109
109
  <sd-select-item [value]="undefined">
110
- <span class="tx-theme-gray-default">미지정</span>
110
+ <span class="tx-gray">미지정</span>
111
111
  </sd-select-item>
112
112
  @for (flatMenu of flatMenus(); track flatMenu.codeChain.join(".")) {
113
113
  <sd-select-item [value]="'/home/' + flatMenu.codeChain.join('/')">
@@ -121,7 +121,7 @@ import type { I{{userEntityPascal}}ConfigMap } from "@{{workspaceName}}/server";
121
121
  </table>
122
122
 
123
123
  @if (data().lastModifiedAt != null || data().lastModifiedBy != null) {
124
- <div class="p-sm-default tx-theme-gray-default">
124
+ <div class="p-sm-default tx-gray">
125
125
  최종수정:
126
126
  @if (data().lastModifiedAt != null) {
127
127
  \{{ data().lastModifiedAt | format: "yyyy-MM-dd HH:mm" }}
@@ -97,7 +97,7 @@ type TSeverity = "error" | "warn" | "log";
97
97
  <label>심각도</label>
98
98
  <sd-select [(value)]="filter().severity" (valueChange)="mark(filter)">
99
99
  <sd-select-item [value]="undefined">
100
- <span class="tx-theme-gray-default">전체</span>
100
+ <span class="tx-gray">전체</span>
101
101
  </sd-select-item>
102
102
  <sd-select-item [value]="'error'">
103
103
  <sd-label [theme]="'danger'">error</sd-label>
@@ -41,7 +41,7 @@ interface ILoginInput {
41
41
  </div>
42
42
 
43
43
  <div class="card m-0-auto bd-radius-lg" style="width: 22em;">
44
- <div class="flex-row cross-align-center p-lg-xl bdb bdb-color-light">
44
+ <div class="flex-row cross-align-center p-lg-xl bdb bdb-default">
45
45
  <h3 class="flex-fill">로그인</h3>
46
46
  <div>v\{{ VER }}.\{{ DEV ? "d" : "p" }}</div>
47
47
  </div>
@@ -16,7 +16,7 @@ import { type SdModalContentDef } from "@simplysm/angular";
16
16
  imports: [],
17
17
  template: `
18
18
  <div class="p-default">
19
- <div class="p-default bg-theme-gray-lightest bd-radius-default bd bd-theme-gray-lighter">
19
+ <div class="p-default bg-gray-subtle bd-radius-default bd bd-hairline">
20
20
  <pre>\{{ text() }}</pre>
21
21
  </div>
22
22
  </div>
@@ -10,6 +10,7 @@
10
10
  "strictInjectionParameters": true,
11
11
  "strictInputAccessModifiers": true,
12
12
  "strictStandalone": true,
13
+ "typeCheckHostBindings": true,
13
14
  "enableI18nLegacyMessageIdFormat": false,
14
15
  "extendedDiagnostics": {
15
16
  "defaultCategory": "error"
@@ -6,13 +6,13 @@
6
6
  "dependencies": {
7
7
  "@angular/common": "^22.0.0",
8
8
  "@angular/core": "^22.0.0",
9
- "@simplysm/angular": "~14.1.0",
10
- "@simplysm/core-common": "~14.1.0"{{#if hasServer}},
9
+ "@simplysm/angular": "~14.2.0",
10
+ "@simplysm/core-common": "~14.2.0"{{#if hasServer}},
11
11
  "@{{workspaceName}}/common": "workspace:*",
12
- "@simplysm/service-client": "~14.1.0",
13
- "@simplysm/service-common": "~14.1.0"{{/if}}{{#if hasDb}},
12
+ "@simplysm/service-client": "~14.2.0",
13
+ "@simplysm/service-common": "~14.2.0"{{/if}}{{#if hasDb}},
14
14
  "@{{workspaceName}}/server": "workspace:*",
15
- "@simplysm/orm-common": "~14.1.0"{{/if}}
15
+ "@simplysm/orm-common": "~14.2.0"{{/if}}
16
16
  },
17
17
  "devDependencies": {
18
18
  "@angular/compiler": "^22.0.0",
@@ -10,6 +10,7 @@
10
10
  "strictInjectionParameters": true,
11
11
  "strictInputAccessModifiers": true,
12
12
  "strictStandalone": true,
13
+ "typeCheckHostBindings": true,
13
14
  "enableI18nLegacyMessageIdFormat": false,
14
15
  "extendedDiagnostics": {
15
16
  "defaultCategory": "error"
@@ -4,9 +4,9 @@
4
4
  "type": "module",
5
5
  "private": true,
6
6
  "dependencies": {
7
- "@simplysm/core-common": "~14.1.0"{{#if hasDb}},
8
- "@simplysm/orm-common": "~14.1.0"{{/if}}{{#if hasAuth}},
9
- "@simplysm/service-common": "~14.1.0",
10
- "@ng-icons/tabler-icons": "^33.2.3"{{/if}}
7
+ "@simplysm/core-common": "~14.2.0"{{#if hasDb}},
8
+ "@simplysm/orm-common": "~14.2.0"{{/if}}{{#if hasAuth}},
9
+ "@simplysm/service-common": "~14.2.0",
10
+ "@ng-icons/tabler-icons": "^34.0.0"{{/if}}
11
11
  }
12
12
  }
@@ -28,7 +28,7 @@ export type IInsertDataLogParam = {
28
28
  };
29
29
 
30
30
  declare module "@simplysm/orm-common" {
31
- interface Queryable<TData extends DataRecord, TFrom extends TableBuilder<any, any, any> | never> {
31
+ interface Queryable<TData extends DataRecord, TFrom extends TableBuilder<any, any> | never> {
32
32
  joinLastDataLog(
33
33
  opts?: IDataLogJoinOptions,
34
34
  ): Queryable<TData & { lastDataLog?: IDataLogJoinResult }, TFrom>;
@@ -47,7 +47,7 @@ Queryable.prototype.insertDataLog = async function (
47
47
  this: Queryable<any, any>,
48
48
  log: IInsertDataLogParam,
49
49
  ): Promise<void> {
50
- const fromTable = this.meta.from as TableBuilder<any, any, any>;
50
+ const fromTable = this.meta.from as TableBuilder<any, any>;
51
51
  const qr = queryable(this.meta.db, SystemDataLog);
52
52
 
53
53
  await qr().insert([
@@ -71,7 +71,7 @@ Queryable.prototype.joinLastDataLog = function (
71
71
  this: Queryable<any, any>,
72
72
  opts?: IDataLogJoinOptions,
73
73
  ) {
74
- const tableName = (this.meta.from as TableBuilder<any, any, any>).meta.name;
74
+ const tableName = (this.meta.from as TableBuilder<any, any>).meta.name;
75
75
 
76
76
  return this.joinSingle("lastDataLog", (qr, en) =>
77
77
  qr
@@ -107,7 +107,7 @@ Queryable.prototype.joinFirstDataLog = function (
107
107
  this: Queryable<any, any>,
108
108
  opts?: IDataLogJoinOptions,
109
109
  ) {
110
- const tableName = (this.meta.from as TableBuilder<any, any, any>).meta.name;
110
+ const tableName = (this.meta.from as TableBuilder<any, any>).meta.name;
111
111
 
112
112
  return this.joinSingle("firstDataLog", (qr, en) =>
113
113
  qr
@@ -7,17 +7,17 @@
7
7
  "private": true,
8
8
  "dependencies": {
9
9
  "@{{workspaceName}}/common": "workspace:*",
10
- "@simplysm/core-common": "~14.1.0",
11
- "@simplysm/core-node": "~14.1.0",
12
- "@simplysm/service-common": "~14.1.0",
13
- "@simplysm/service-server": "~14.1.0"{{#if hasDb}},
14
- "@simplysm/orm-common": "~14.1.0",
15
- "@simplysm/orm-node": "~14.1.0"{{#if isMysql}},
10
+ "@simplysm/core-common": "~14.2.0",
11
+ "@simplysm/core-node": "~14.2.0",
12
+ "@simplysm/service-common": "~14.2.0",
13
+ "@simplysm/service-server": "~14.2.0"{{#if hasDb}},
14
+ "@simplysm/orm-common": "~14.2.0",
15
+ "@simplysm/orm-node": "~14.2.0"{{#if isMysql}},
16
16
  "mysql2": "^3.22.0"{{/if}}{{#if isPostgres}},
17
17
  "pg": "^8.13.0",
18
18
  "pg-copy-streams": "^7.0.0"{{/if}}{{#if isMssql}},
19
19
  "mssql": "^11.0.0"{{/if}}{{/if}}{{#if hasAuth}},
20
- "@simplysm/excel": "~14.1.0",
20
+ "@simplysm/excel": "~14.2.0",
21
21
  "bcrypt": "^6.0.0"{{/if}}
22
22
  },
23
23
  "devDependencies": {
@@ -25,14 +25,15 @@
25
25
  },
26
26
  "devDependencies": {
27
27
  "@playwright/cli": "^0.1.11",
28
- "@simplysm/lint": "~14.1.0",
29
- "@simplysm/sd-cli": "~14.1.0",
28
+ "@simplysm/lint": "~14.2.0",
29
+ "@simplysm/sd-cli": "~14.2.0",
30
30
  "@types/node": "^24.13.2",
31
31
  "@vitest/browser-playwright": "^4.1.0",
32
32
  "@vitest/coverage-v8": "^4.1.0",
33
33
  "eslint": "^10.6.0",
34
34
  "jiti": "^2.7.0",
35
35
  "oxfmt": "^0.59.0",
36
+ "playwright": "^1.62.0",
36
37
  "typescript": "~6.0.0",
37
38
  "vite": "^8.1.0",
38
39
  "vitest": "^4.1.0"
@@ -1,3 +1,16 @@
1
1
  packages:
2
2
  - packages/*
3
3
  - tests/*
4
+ allowBuilds:
5
+ "@parcel/watcher": true
6
+ bcrypt: true
7
+ bufferutil: true
8
+ core-js: true
9
+ cpu-features: true
10
+ esbuild: true
11
+ lmdb: true
12
+ msgpackr-extract: true
13
+ ssh2: true
14
+ unrs-resolver: true
15
+ utf-8-validate: true
16
+ minimumReleaseAge: 0
@@ -31,6 +31,7 @@ export interface ClientSpec {
31
31
  isMobile: boolean;
32
32
  appStructureName: string;
33
33
  needsNgIcons: boolean;
34
+ needsExcel: boolean;
34
35
  useSsg: boolean;
35
36
  /** robots.txt 지시문 — SSG(SEO) 클라이언트는 전체 허용, 그 외는 전체 차단 */
36
37
  robotsDirective: string;
@@ -27,9 +27,10 @@ export async function writeChangedOutputFiles(
27
27
  logger.debug(`변경된 출력 파일 쓰기 시작 (${outputFiles.length}개)`);
28
28
  await Promise.all(
29
29
  outputFiles.map(async (file) => {
30
- const finalText = file.path.endsWith(".js") && rewriteJsExtensions
31
- ? addJsExtensionToImports(file.text)
32
- : file.text;
30
+ const finalText =
31
+ file.path.endsWith(".js") && rewriteJsExtensions
32
+ ? addJsExtensionToImports(file.text)
33
+ : file.text;
33
34
 
34
35
  try {
35
36
  const existing = await fsx.read(file.path);
@@ -91,6 +92,8 @@ export function createServerEsbuildOptions(options: ServerEsbuildOptions): esbui
91
92
  platform: "node",
92
93
  target: "node24",
93
94
  bundle: true,
95
+ // 번들에 포함된 제3자 패키지를 식별해 라이선스 고지를 생성하는 데 사용한다
96
+ metafile: true,
94
97
  banner: { js: bannerJs },
95
98
  external: options.external,
96
99
  tsconfig: path.join(options.pkgDir, "tsconfig.json"),
@@ -161,46 +164,38 @@ export function collectAllDependencyExternals(pkgDir: string): {
161
164
  const nativeModules = new Set<string>();
162
165
  const visited = new Set<string>();
163
166
 
164
- const pkgJson = JSON.parse(
165
- fsx.readSync(path.join(pkgDir, "package.json")),
166
- ) as PkgJson;
167
+ const pkgJson = JSON.parse(fsx.readSync(path.join(pkgDir, "package.json"))) as PkgJson;
167
168
  const deps = Object.keys(pkgJson.dependencies ?? {});
168
169
  logger.debug(
169
170
  `[collectAllDependencyExternals] Scanning ${String(deps.length)} top-level dependencies...`,
170
171
  );
171
172
 
172
173
  for (const dep of deps) {
173
- scanDependencyTree(
174
- dep,
175
- pkgDir,
176
- optionalPeerDeps,
177
- visited,
178
- (pkgName, depDir, depPkgJson) => {
179
- const found: string[] = [];
180
-
181
- // Optional peer deps 확인
182
- if (depPkgJson.peerDependenciesMeta != null) {
183
- const peerDeps = depPkgJson.peerDependencies ?? {};
184
- const depReq = createRequire(path.join(depDir, "noop.js"));
185
- for (const [name, meta] of Object.entries(depPkgJson.peerDependenciesMeta)) {
186
- if (meta.optional === true && name in peerDeps) {
187
- try {
188
- depReq.resolve(name);
189
- } catch {
190
- found.push(name);
191
- }
174
+ scanDependencyTree(dep, pkgDir, optionalPeerDeps, visited, (pkgName, depDir, depPkgJson) => {
175
+ const found: string[] = [];
176
+
177
+ // Optional peer deps 확인
178
+ if (depPkgJson.peerDependenciesMeta != null) {
179
+ const peerDeps = depPkgJson.peerDependencies ?? {};
180
+ const depReq = createRequire(path.join(depDir, "noop.js"));
181
+ for (const [name, meta] of Object.entries(depPkgJson.peerDependenciesMeta)) {
182
+ if (meta.optional === true && name in peerDeps) {
183
+ try {
184
+ depReq.resolve(name);
185
+ } catch {
186
+ found.push(name);
192
187
  }
193
188
  }
194
189
  }
190
+ }
195
191
 
196
- // 네이티브 모듈 확인
197
- if (fsx.existsSync(path.join(depDir, "binding.gyp"))) {
198
- nativeModules.add(pkgName);
199
- }
192
+ // 네이티브 모듈 확인
193
+ if (fsx.existsSync(path.join(depDir, "binding.gyp"))) {
194
+ nativeModules.add(pkgName);
195
+ }
200
196
 
201
- return found;
202
- },
203
- );
197
+ return found;
198
+ });
204
199
  }
205
200
 
206
201
  logger.debug(
@@ -225,8 +225,9 @@ export interface SdClientPackageConfig {
225
225
  * 서버 설정
226
226
  * - string: 연결할 서버 패키지명 (예: "demo-server")
227
227
  * - number: 포트 직접 지정 (하위 호환)
228
+ * - 미지정: 독립 실행 (dev 서버 포트 자동 할당)
228
229
  */
229
- server: string | number;
230
+ server?: string | number;
230
231
  /** 빌드 시 치환할 환경 변수 (process.env를 객체로 치환) */
231
232
  env?: Record<string, string>;
232
233
  /** 배포 설정 */