openxiangda-devkit-core 2.0.0-alpha.49 → 2.0.0-alpha.51

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,6 +1,7 @@
1
1
  import { type DeploymentEnvironment, type DeploymentRun, type DevkitResult, type Diagnostic, type WorkspaceIdentity } from "openxiangda-contracts";
2
2
  import { type CompiledAppPackage } from "./compiler/index.js";
3
3
  import { OpenXiangdaControlPlaneClient, type CreateApplicationSecretInput, type CreateNativeRoleMembershipInput, type CreateOAuthClientInput, type ControlPlaneClientOptions, type NativeRelationshipGrantFilter, type RotateApplicationSecretInput, type UpdateApplicationSecretInput, type UpdateNativeRoleMembershipInput, type UpdateOAuthClientInput } from "./control-plane-client.js";
4
+ import { type ToolchainCapsule } from "./toolchain-capsule.js";
4
5
  export interface GenerateOptions {
5
6
  root?: string;
6
7
  check?: boolean;
@@ -28,6 +29,7 @@ export declare class OpenXiangdaApplicationServices {
28
29
  private readonly options;
29
30
  constructor(options?: {
30
31
  toolchainVersion?: string;
32
+ toolchainCapsule?: ToolchainCapsule;
31
33
  client?: OpenXiangdaControlPlaneClient;
32
34
  clientOptions?: ControlPlaneClientOptions;
33
35
  });
@@ -52,7 +54,7 @@ export declare class OpenXiangdaApplicationServices {
52
54
  };
53
55
  }>>;
54
56
  platformCapabilities(root?: string): Promise<DevkitResult<import("openxiangda-contracts").PlatformCapabilities>>;
55
- provisionApplication(root?: string): Promise<DevkitResult<import("openxiangda-contracts").ProvisionedApplication>>;
57
+ provisionApplication(root?: string): Promise<DevkitResult<undefined> | DevkitResult<import("openxiangda-contracts").ProvisionedApplication>>;
56
58
  oauthClients(root?: string): Promise<DevkitResult<{
57
59
  items: import("openxiangda-contracts").OAuthClient[];
58
60
  total: number;
@@ -207,7 +209,7 @@ export declare class OpenXiangdaApplicationServices {
207
209
  }[];
208
210
  path: string;
209
211
  }>>;
210
- generate(input?: GenerateOptions): Promise<DevkitResult<{
212
+ generate(input?: GenerateOptions): Promise<DevkitResult<undefined> | DevkitResult<{
211
213
  output: string;
212
214
  changed: boolean;
213
215
  contractDigest: string;
@@ -227,7 +229,7 @@ export declare class OpenXiangdaApplicationServices {
227
229
  name: string;
228
230
  }[];
229
231
  }>>;
230
- test(root?: string): Promise<DevkitResult<{
232
+ test(root?: string): Promise<DevkitResult<undefined> | DevkitResult<{
231
233
  ok: boolean;
232
234
  exitCode: number;
233
235
  output: string;
@@ -263,7 +265,7 @@ export declare class OpenXiangdaApplicationServices {
263
265
  deploymentPlan(input: {
264
266
  root?: string;
265
267
  environment: "preproduction";
266
- }): Promise<DevkitResult<{
268
+ }): Promise<DevkitResult<undefined> | DevkitResult<{
267
269
  environment: "preproduction";
268
270
  appCode: string;
269
271
  sealed: boolean;
@@ -274,7 +276,7 @@ export declare class OpenXiangdaApplicationServices {
274
276
  configDigest: string;
275
277
  contractDigest: string;
276
278
  }>>;
277
- deploy(input: DeployOptions): Promise<DevkitResult<SealedApplication> | DevkitResult<undefined> | DevkitResult<DeploymentRun> | {
279
+ deploy(input: DeployOptions): Promise<DevkitResult<undefined> | DevkitResult<SealedApplication> | DevkitResult<DeploymentRun> | {
278
280
  operation: string;
279
281
  ok: boolean;
280
282
  workspace: WorkspaceIdentity;
@@ -353,12 +355,13 @@ export declare class OpenXiangdaApplicationServices {
353
355
  }): Promise<DevkitResult<undefined> | DevkitResult<import("./connected-development.js").ConnectedDevelopmentResult>>;
354
356
  private workspace;
355
357
  private client;
356
- private nativeManagementRequest;
357
358
  private get toolchainVersion();
359
+ private get toolchainCapsule();
358
360
  private runPackageScript;
359
361
  private repositoryIdentity;
360
362
  private directoryBundle;
361
363
  private versionTrainDiagnostics;
364
+ private toolchainDiagnostics;
362
365
  private diagnostic;
363
366
  private connectedDevelopmentFailure;
364
367
  private ok;
@@ -1 +1 @@
1
- {"version":3,"file":"application-services.d.ts","sourceRoot":"","sources":["../src/application-services.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"application-services.d.ts","sourceRoot":"","sources":["../src/application-services.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ import { backendImageBuildTarget, publishBackendImage, } from "./backend-image-b
10
10
  import { OPENXIANGDA_TOOLCHAIN_VERSION } from "./version.js";
11
11
  import { git, loadWorkspace, } from "./workspace-loader.js";
12
12
  import { validateNestInjectionContract } from "./nest-injection-contract.js";
13
+ import { collectWorkspaceToolchainDependencies, defaultDevkitCoreToolchainCapsule, ToolchainCapsuleScanLimitError, toolchainCapsuleDiagnostic, } from "./toolchain-capsule.js";
13
14
  export class OpenXiangdaApplicationServices {
14
15
  options;
15
16
  constructor(options = {}) {
@@ -49,6 +50,10 @@ export class OpenXiangdaApplicationServices {
49
50
  }
50
51
  async provisionApplication(root) {
51
52
  const workspace = await this.workspace(root);
53
+ const capsuleDiagnostics = this.toolchainDiagnostics(workspace);
54
+ if (capsuleDiagnostics.length > 0) {
55
+ return this.result("app.provision", workspace.context.workspace, undefined, capsuleDiagnostics);
56
+ }
52
57
  const application = await (await this.client(workspace.root)).provisionApplication({
53
58
  appCode: workspace.config.app.code,
54
59
  name: workspace.config.app.name,
@@ -185,78 +190,77 @@ export class OpenXiangdaApplicationServices {
185
190
  const workspace = await this.workspace(root);
186
191
  const environment = this.deploymentEnvironment(environmentKey);
187
192
  const client = await this.client(workspace.root);
188
- const request = await this.nativeManagementRequest(client, workspace.config.app.code, environment);
189
- const data = await client.nativeRoleMemberships(workspace.config.app.code, { ...input, environmentKey: environment }, request);
193
+ const data = await client.nativeRoleMemberships(workspace.config.app.code, { ...input, environmentKey: environment });
190
194
  return this.ok("authz.membership.list", workspace.context.workspace, data);
191
195
  }
192
196
  async createNativeRoleMembership(root, input) {
193
197
  const workspace = await this.workspace(root);
194
198
  const environment = this.deploymentEnvironment(input.environmentKey);
195
199
  const client = await this.client(workspace.root);
196
- const data = await client.createNativeRoleMembership(workspace.config.app.code, { ...input, environmentKey: environment }, await this.nativeManagementRequest(client, workspace.config.app.code, environment));
200
+ const data = await client.createNativeRoleMembership(workspace.config.app.code, { ...input, environmentKey: environment });
197
201
  return this.ok("authz.membership.create", workspace.context.workspace, data);
198
202
  }
199
203
  async updateNativeRoleMembership(root, membershipId, input) {
200
204
  const workspace = await this.workspace(root);
201
205
  const environment = this.deploymentEnvironment(input.environmentKey);
202
206
  const client = await this.client(workspace.root);
203
- const data = await client.updateNativeRoleMembership(workspace.config.app.code, membershipId, { ...input, environmentKey: environment }, await this.nativeManagementRequest(client, workspace.config.app.code, environment));
207
+ const data = await client.updateNativeRoleMembership(workspace.config.app.code, membershipId, { ...input, environmentKey: environment });
204
208
  return this.ok("authz.membership.update", workspace.context.workspace, data);
205
209
  }
206
210
  async revokeNativeRoleMembership(root, membershipId, input) {
207
211
  const workspace = await this.workspace(root);
208
212
  const environment = this.deploymentEnvironment(input.environmentKey);
209
213
  const client = await this.client(workspace.root);
210
- const data = await client.revokeNativeRoleMembership(workspace.config.app.code, membershipId, { ...input, environmentKey: environment }, await this.nativeManagementRequest(client, workspace.config.app.code, environment));
214
+ const data = await client.revokeNativeRoleMembership(workspace.config.app.code, membershipId, { ...input, environmentKey: environment });
211
215
  return this.ok("authz.membership.revoke", workspace.context.workspace, data);
212
216
  }
213
217
  async nativeSuperAdmins(root, environmentKey, input = {}) {
214
218
  const workspace = await this.workspace(root);
215
219
  const environment = this.deploymentEnvironment(environmentKey);
216
220
  const client = await this.client(workspace.root);
217
- const data = await client.nativeSuperAdmins(workspace.config.app.code, input, await this.nativeManagementRequest(client, workspace.config.app.code, environment));
221
+ const data = await client.nativeSuperAdmins(workspace.config.app.code, { ...input, environmentKey: environment });
218
222
  return this.ok("authz.super-admin.list", workspace.context.workspace, data);
219
223
  }
220
224
  async grantNativeSuperAdmin(root, environmentKey, input) {
221
225
  const workspace = await this.workspace(root);
222
226
  const environment = this.deploymentEnvironment(environmentKey);
223
227
  const client = await this.client(workspace.root);
224
- const data = await client.grantNativeSuperAdmin(workspace.config.app.code, input, await this.nativeManagementRequest(client, workspace.config.app.code, environment));
228
+ const data = await client.grantNativeSuperAdmin(workspace.config.app.code, { ...input, environmentKey: environment });
225
229
  return this.ok("authz.super-admin.grant", workspace.context.workspace, data);
226
230
  }
227
231
  async revokeNativeSuperAdmin(root, environmentKey, grantId, input) {
228
232
  const workspace = await this.workspace(root);
229
233
  const environment = this.deploymentEnvironment(environmentKey);
230
234
  const client = await this.client(workspace.root);
231
- const data = await client.revokeNativeSuperAdmin(workspace.config.app.code, grantId, input, await this.nativeManagementRequest(client, workspace.config.app.code, environment));
235
+ const data = await client.revokeNativeSuperAdmin(workspace.config.app.code, grantId, { ...input, environmentKey: environment });
232
236
  return this.ok("authz.super-admin.revoke", workspace.context.workspace, data);
233
237
  }
234
238
  async nativeRelationshipGrants(root, environmentKey, input = {}) {
235
239
  const workspace = await this.workspace(root);
236
240
  const environment = this.deploymentEnvironment(environmentKey);
237
241
  const client = await this.client(workspace.root);
238
- const data = await client.nativeRelationshipGrants(workspace.config.app.code, { ...input, environmentKey: environment }, await this.nativeManagementRequest(client, workspace.config.app.code, environment));
242
+ const data = await client.nativeRelationshipGrants(workspace.config.app.code, { ...input, environmentKey: environment });
239
243
  return this.ok("authz.relationship.list", workspace.context.workspace, data);
240
244
  }
241
245
  async createNativeRelationshipGrant(root, input) {
242
246
  const workspace = await this.workspace(root);
243
247
  const environment = this.deploymentEnvironment(input.environmentKey);
244
248
  const client = await this.client(workspace.root);
245
- const data = await client.createNativeRelationshipGrant(workspace.config.app.code, { ...input, environmentKey: environment }, await this.nativeManagementRequest(client, workspace.config.app.code, environment));
249
+ const data = await client.createNativeRelationshipGrant(workspace.config.app.code, { ...input, environmentKey: environment });
246
250
  return this.ok("authz.relationship.create", workspace.context.workspace, data);
247
251
  }
248
252
  async updateNativeRelationshipGrant(root, grantId, input) {
249
253
  const workspace = await this.workspace(root);
250
254
  const environment = this.deploymentEnvironment(input.environmentKey);
251
255
  const client = await this.client(workspace.root);
252
- const data = await client.updateNativeRelationshipGrant(workspace.config.app.code, grantId, { ...input, environmentKey: environment }, await this.nativeManagementRequest(client, workspace.config.app.code, environment));
256
+ const data = await client.updateNativeRelationshipGrant(workspace.config.app.code, grantId, { ...input, environmentKey: environment });
253
257
  return this.ok("authz.relationship.update", workspace.context.workspace, data);
254
258
  }
255
259
  async revokeNativeRelationshipGrant(root, grantId, input) {
256
260
  const workspace = await this.workspace(root);
257
261
  const environment = this.deploymentEnvironment(input.environmentKey);
258
262
  const client = await this.client(workspace.root);
259
- const data = await client.revokeNativeRelationshipGrant(workspace.config.app.code, grantId, { ...input, environmentKey: environment }, await this.nativeManagementRequest(client, workspace.config.app.code, environment));
263
+ const data = await client.revokeNativeRelationshipGrant(workspace.config.app.code, grantId, { ...input, environmentKey: environment });
260
264
  return this.ok("authz.relationship.revoke", workspace.context.workspace, data);
261
265
  }
262
266
  async eventSubscriptions(root) {
@@ -325,6 +329,10 @@ export class OpenXiangdaApplicationServices {
325
329
  }
326
330
  async generate(input = {}) {
327
331
  const workspace = await this.workspace(input.root);
332
+ const capsuleDiagnostics = this.toolchainDiagnostics(workspace);
333
+ if (capsuleDiagnostics.length > 0) {
334
+ return this.result("generate", workspace.context.workspace, undefined, capsuleDiagnostics);
335
+ }
328
336
  const sources = compileApplicationSources(workspace.config, this.toolchainVersion);
329
337
  const output = join(workspace.root, "packages/contracts/src/generated.ts");
330
338
  const current = existsSync(output) ? readFileSync(output, "utf8") : "";
@@ -359,8 +367,14 @@ export class OpenXiangdaApplicationServices {
359
367
  ...this.versionTrainDiagnostics(workspace),
360
368
  ...validateNestInjectionContract(workspace.root),
361
369
  ];
370
+ if (diagnostics.some(item => item.severity === "error")) {
371
+ return this.result("check", workspace.context.workspace, { generated: undefined, stages: [] }, diagnostics);
372
+ }
362
373
  const generated = await this.generate({ root: workspace.root });
363
374
  diagnostics.push(...generated.diagnostics);
375
+ if (!generated.ok) {
376
+ return this.result("check", workspace.context.workspace, { generated: generated.data, stages: [] }, diagnostics, generated.nextActions);
377
+ }
364
378
  const stages = ["check", "test", "build"].map(name => ({
365
379
  name,
366
380
  ...this.runPackageScript(workspace.root, name),
@@ -373,13 +387,17 @@ export class OpenXiangdaApplicationServices {
373
387
  }
374
388
  async test(root) {
375
389
  const workspace = await this.workspace(root);
390
+ const diagnostics = this.toolchainDiagnostics(workspace);
391
+ if (diagnostics.length > 0) {
392
+ return this.result("test", workspace.context.workspace, undefined, diagnostics);
393
+ }
376
394
  const command = this.runPackageScript(workspace.root, "test");
377
- const diagnostics = command.ok
395
+ const commandDiagnostics = command.ok
378
396
  ? []
379
397
  : [
380
398
  this.diagnostic("WORKSPACE_TEST_FAILED", "工作区测试失败", "package.json#scripts.test", "修复失败测试后重试", { output: command.output }),
381
399
  ];
382
- return this.result("test", workspace.context.workspace, command, diagnostics);
400
+ return this.result("test", workspace.context.workspace, command, commandDiagnostics);
383
401
  }
384
402
  async build(input = {}) {
385
403
  const sealed = await this.buildSealed(input);
@@ -409,8 +427,14 @@ export class OpenXiangdaApplicationServices {
409
427
  }
410
428
  async buildSealed(input = {}) {
411
429
  const workspace = await this.workspace(input.root);
412
- const diagnostics = [];
413
- await this.generate({ root: workspace.root });
430
+ const diagnostics = this.toolchainDiagnostics(workspace);
431
+ if (diagnostics.length > 0) {
432
+ return this.result("build", workspace.context.workspace, undefined, diagnostics);
433
+ }
434
+ const generated = await this.generate({ root: workspace.root });
435
+ if (!generated.ok) {
436
+ return this.result("build", workspace.context.workspace, undefined, generated.diagnostics, generated.nextActions);
437
+ }
414
438
  if (!input.skipWorkspaceBuild) {
415
439
  const command = this.runPackageScript(workspace.root, "build");
416
440
  if (!command.ok) {
@@ -525,6 +549,10 @@ export class OpenXiangdaApplicationServices {
525
549
  }
526
550
  async deploymentPlan(input) {
527
551
  const workspace = await this.workspace(input.root);
552
+ const diagnostics = this.toolchainDiagnostics(workspace);
553
+ if (diagnostics.length > 0) {
554
+ return this.result("deployment.plan", workspace.context.workspace, undefined, diagnostics);
555
+ }
528
556
  const sources = compileApplicationSources(workspace.config, this.toolchainVersion);
529
557
  return this.ok("deployment.plan", workspace.context.workspace, {
530
558
  environment: input.environment,
@@ -540,6 +568,10 @@ export class OpenXiangdaApplicationServices {
540
568
  }
541
569
  async deploy(input) {
542
570
  const workspace = await this.workspace(input.root);
571
+ const capsuleDiagnostics = this.toolchainDiagnostics(workspace);
572
+ if (capsuleDiagnostics.length > 0) {
573
+ return this.result("deploy", workspace.context.workspace, undefined, capsuleDiagnostics);
574
+ }
543
575
  if (String(input.environment) !== "preproduction") {
544
576
  return this.result("deploy", workspace.context.workspace, undefined, [
545
577
  this.diagnostic("DEPLOY_PREPRODUCTION_ONLY", "Native 2.0 只允许直接部署到预发环境", String(input.environment), "使用 openxiangda deploy;生产环境必须显式复用成功的测试 DeploymentRun"),
@@ -651,6 +683,10 @@ export class OpenXiangdaApplicationServices {
651
683
  }
652
684
  async deployProduction(root, deploymentId) {
653
685
  const workspace = await this.workspace(root);
686
+ const capsuleDiagnostics = this.toolchainDiagnostics(workspace);
687
+ if (capsuleDiagnostics.length > 0) {
688
+ return this.result("deploy", workspace.context.workspace, undefined, capsuleDiagnostics);
689
+ }
654
690
  const environment = "production";
655
691
  const client = await this.client(workspace.root);
656
692
  const source = await client.deployment(workspace.config.app.code, deploymentId);
@@ -763,6 +799,10 @@ export class OpenXiangdaApplicationServices {
763
799
  }
764
800
  async dev(root, input = {}) {
765
801
  const workspace = await this.workspace(root);
802
+ const capsuleDiagnostics = this.toolchainDiagnostics(workspace);
803
+ if (capsuleDiagnostics.length > 0) {
804
+ return this.result("dev", workspace.context.workspace, undefined, capsuleDiagnostics);
805
+ }
766
806
  const injectionDiagnostics = validateNestInjectionContract(workspace.root);
767
807
  if (injectionDiagnostics.length) {
768
808
  return this.result("dev", workspace.context.workspace, undefined, injectionDiagnostics);
@@ -895,30 +935,12 @@ export class OpenXiangdaApplicationServices {
895
935
  tokenProvider: session,
896
936
  });
897
937
  }
898
- async nativeManagementRequest(client, appCode, environmentKey) {
899
- const context = await client.roleSessionContext(appCode, environmentKey);
900
- if (context.currentRoleSubject?.subjectKind === "super_admin" &&
901
- context.roleSession) {
902
- return { roleSessionId: context.roleSession.id };
903
- }
904
- const superAdmin = context.roleSubjectPage.items.find((item) => item.subjectKind === "super_admin");
905
- if (superAdmin) {
906
- const selected = await client.switchRoleSessionContext(appCode, {
907
- targetRoleSubjectKey: superAdmin.subjectKey,
908
- expectedRoleSessionId: context.roleSession?.id || null,
909
- environmentKey,
910
- });
911
- if (selected.roleSession) {
912
- return { roleSessionId: selected.roleSession.id };
913
- }
914
- }
915
- if (context.roleSession)
916
- return { roleSessionId: context.roleSession.id };
917
- throw new Error("OPENXIANGDA_NATIVE_AUTHZ_MANAGEMENT_ROLE_REQUIRED");
918
- }
919
938
  get toolchainVersion() {
920
939
  return this.options.toolchainVersion || OPENXIANGDA_TOOLCHAIN_VERSION;
921
940
  }
941
+ get toolchainCapsule() {
942
+ return this.options.toolchainCapsule || defaultDevkitCoreToolchainCapsule();
943
+ }
922
944
  runPackageScript(root, script) {
923
945
  const result = spawnSync("pnpm", ["run", script], {
924
946
  cwd: root,
@@ -979,42 +1001,17 @@ export class OpenXiangdaApplicationServices {
979
1001
  return canonicalJson({ schemaVersion: 2, files });
980
1002
  }
981
1003
  versionTrainDiagnostics(workspace) {
982
- const dependencies = [];
983
- const packageFiles = [];
984
- const visit = (directory) => {
985
- for (const entry of readdirSync(directory, { withFileTypes: true })) {
986
- if (["node_modules", "dist", "coverage", ".git", ".openxiangda"].includes(entry.name)) {
987
- continue;
988
- }
989
- const path = join(directory, entry.name);
990
- if (entry.isDirectory())
991
- visit(path);
992
- else if (entry.isFile() && entry.name === "package.json")
993
- packageFiles.push(path);
994
- }
995
- };
996
- visit(workspace.root);
997
- for (const packageFile of packageFiles) {
998
- const packageJson = JSON.parse(readFileSync(packageFile, "utf8"));
999
- for (const section of [
1000
- "dependencies",
1001
- "devDependencies",
1002
- "peerDependencies",
1003
- ]) {
1004
- const sectionDependencies = packageJson[section];
1005
- if (!sectionDependencies || typeof sectionDependencies !== "object")
1006
- continue;
1007
- for (const [name, version] of Object.entries(sectionDependencies)) {
1008
- if (!name.startsWith("openxiangda-"))
1009
- continue;
1010
- dependencies.push({
1011
- name,
1012
- specifier: String(version),
1013
- packageFile: relative(workspace.root, packageFile).replaceAll("\\", "/"),
1014
- section,
1015
- });
1016
- }
1004
+ let dependencies;
1005
+ try {
1006
+ dependencies = collectWorkspaceToolchainDependencies(workspace.root);
1007
+ }
1008
+ catch (error) {
1009
+ if (error instanceof ToolchainCapsuleScanLimitError) {
1010
+ return [
1011
+ this.diagnostic(error.code, "工作区 package.json 扫描超过安全资源上限", "package.json", "减少工作区中纳入检查的 package.json 数量或文件大小后重试", { message: error.message }),
1012
+ ];
1017
1013
  }
1014
+ throw error;
1018
1015
  }
1019
1016
  const parsed = dependencies.map(dependency => {
1020
1017
  const version = dependency.specifier.replace(/^workspace:/, "");
@@ -1035,8 +1032,14 @@ export class OpenXiangdaApplicationServices {
1035
1032
  if (incompatible.length > 0) {
1036
1033
  diagnostics.push(this.diagnostic("TOOLCHAIN_RELEASE_TRAIN_INCOMPATIBLE", "应用包含不属于 OpenXiangda 2.x 发布列车的依赖", "package.json", "使用兼容的 OpenXiangda 2.x 精确版本;包版本可以独立递增,不要求字符串相同", { dependencies: incompatible }));
1037
1034
  }
1035
+ const capsuleDiagnostic = toolchainCapsuleDiagnostic(dependencies, this.toolchainCapsule);
1036
+ if (capsuleDiagnostic)
1037
+ diagnostics.push(capsuleDiagnostic);
1038
1038
  return diagnostics;
1039
1039
  }
1040
+ toolchainDiagnostics(workspace) {
1041
+ return this.versionTrainDiagnostics(workspace);
1042
+ }
1040
1043
  diagnostic(code, message, path, remediation, details) {
1041
1044
  return {
1042
1045
  schemaVersion: SCHEMA_VERSIONS.diagnostic,