openxiangda-devkit-core 2.0.0-alpha.106 → 2.0.0-alpha.108
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-services.d.ts +181 -1
- package/dist/application-services.d.ts.map +1 -1
- package/dist/application-services.js +33 -0
- package/dist/application-services.js.map +1 -1
- package/dist/application-ui-contract.d.ts +5 -0
- package/dist/application-ui-contract.d.ts.map +1 -0
- package/dist/application-ui-contract.js +149 -0
- package/dist/application-ui-contract.js.map +1 -0
- package/dist/command-registry.d.ts +2 -2
- package/dist/command-registry.js +1 -1
- package/dist/command-registry.js.map +1 -1
- package/dist/compiler/application-model.d.ts +60 -0
- package/dist/compiler/application-model.d.ts.map +1 -0
- package/dist/compiler/application-model.js +141 -0
- package/dist/compiler/application-model.js.map +1 -0
- package/dist/compiler/bundle.d.ts.map +1 -1
- package/dist/compiler/bundle.js +50 -12
- package/dist/compiler/bundle.js.map +1 -1
- package/dist/compiler/config.d.ts +27 -8
- package/dist/compiler/config.d.ts.map +1 -1
- package/dist/compiler/config.js +205 -61
- package/dist/compiler/config.js.map +1 -1
- package/dist/compiler/field-surface.js +1 -1
- package/dist/compiler/field-surface.js.map +1 -1
- package/dist/compiler/permission-review.d.ts +139 -0
- package/dist/compiler/permission-review.d.ts.map +1 -0
- package/dist/compiler/permission-review.js +131 -0
- package/dist/compiler/permission-review.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/optional-backend.d.ts +14 -0
- package/dist/optional-backend.d.ts.map +1 -0
- package/dist/optional-backend.js +145 -0
- package/dist/optional-backend.js.map +1 -0
- package/dist/workspace-loader.d.ts.map +1 -1
- package/dist/workspace-loader.js +16 -1
- package/dist/workspace-loader.js.map +1 -1
- package/package.json +3 -2
- package/templates/backend/.turbo/turbo-build.log +4 -0
- package/templates/backend/.turbo/turbo-check.log +4 -0
- package/templates/backend/.turbo/turbo-test.log +13 -0
- package/templates/backend/Dockerfile +20 -0
- package/templates/backend/node_modules/.bin/openxiangda +21 -0
- package/templates/backend/node_modules/.bin/tsc +21 -0
- package/templates/backend/node_modules/.bin/tsserver +21 -0
- package/templates/backend/node_modules/.bin/tsx +21 -0
- package/templates/backend/package.json +27 -0
- package/templates/backend/src/app.module.ts +23 -0
- package/templates/backend/src/main.ts +5 -0
- package/templates/backend/test/smoke.test.ts +17 -0
- package/templates/backend/tsconfig.json +9 -0
|
@@ -147,6 +147,129 @@ export declare class OpenXiangdaApplicationServices {
|
|
|
147
147
|
aiCatalogDigest: string;
|
|
148
148
|
contract: import("openxiangda-contracts").ContractBundleV3;
|
|
149
149
|
aiCatalog: import("openxiangda-contracts").AiCapabilityCatalog;
|
|
150
|
+
permissionReview: {
|
|
151
|
+
digest: string;
|
|
152
|
+
schemaVersion: "openxiangda.permission-review/v2";
|
|
153
|
+
appCode: string;
|
|
154
|
+
configDigest: string;
|
|
155
|
+
contractDigest: string;
|
|
156
|
+
authority: "declaration-projection";
|
|
157
|
+
runtimeAuthorizationRequired: true;
|
|
158
|
+
semantics: {
|
|
159
|
+
roleCapabilities: "sealed-declared-grants; current-user application roles are unioned";
|
|
160
|
+
roleDeniedCapabilities: "removed from that role during compilation; not a global deny across roles";
|
|
161
|
+
capabilityMatch: "static prerequisite only; never runtime allow";
|
|
162
|
+
fieldPolicies: "resource operation is required; field rules can only narrow it; empty is deny";
|
|
163
|
+
hiddenFields: "presentation only; not an authorization rule";
|
|
164
|
+
rowPolicies: "raw declarations; evaluated by the platform with current identity, grants and record facts";
|
|
165
|
+
workflowTasks: "platform Task Surface and fresh command token decide current participant, state, field and operation access";
|
|
166
|
+
navigation: "page selection and visibility do not grant resource or operation access";
|
|
167
|
+
perspectives: "read projections only; never replace the actor or mutation/workflow authorization";
|
|
168
|
+
};
|
|
169
|
+
roles: {
|
|
170
|
+
capabilityCodes: string[];
|
|
171
|
+
description?: string;
|
|
172
|
+
code: string;
|
|
173
|
+
name: string;
|
|
174
|
+
}[];
|
|
175
|
+
capabilities: import("openxiangda-contracts").AppCapabilityContract[];
|
|
176
|
+
perspectives: import("openxiangda-contracts").AppPerspectiveContract[];
|
|
177
|
+
pages: {
|
|
178
|
+
adminAccess: import("openxiangda-contracts").AppFrontendRouteAccess | null;
|
|
179
|
+
admin: import("openxiangda-contracts").AppAdminPageContract[];
|
|
180
|
+
custom: import("openxiangda-contracts").AppFrontendRouteContract[];
|
|
181
|
+
standard: import("openxiangda-contracts").AppRouteManifestEntryV3[];
|
|
182
|
+
};
|
|
183
|
+
resources: {
|
|
184
|
+
code: string;
|
|
185
|
+
name: string;
|
|
186
|
+
operationCapabilities: {
|
|
187
|
+
read: string;
|
|
188
|
+
create: string;
|
|
189
|
+
update: string;
|
|
190
|
+
delete: string;
|
|
191
|
+
};
|
|
192
|
+
dataPolicyCode: string | null;
|
|
193
|
+
mutationOwner: "native" | "action" | "readonly" | "workflow" | null;
|
|
194
|
+
generated: {
|
|
195
|
+
list?: boolean;
|
|
196
|
+
detail?: boolean;
|
|
197
|
+
create?: boolean;
|
|
198
|
+
update?: boolean;
|
|
199
|
+
delete?: boolean;
|
|
200
|
+
} | null;
|
|
201
|
+
views: {
|
|
202
|
+
code: string;
|
|
203
|
+
name: string;
|
|
204
|
+
generated: Required<{
|
|
205
|
+
list?: boolean;
|
|
206
|
+
detail?: boolean;
|
|
207
|
+
create?: boolean;
|
|
208
|
+
update?: boolean;
|
|
209
|
+
delete?: boolean;
|
|
210
|
+
}>;
|
|
211
|
+
fieldOrder: {
|
|
212
|
+
list: string[];
|
|
213
|
+
form: string[];
|
|
214
|
+
detail: string[];
|
|
215
|
+
};
|
|
216
|
+
mobile: {
|
|
217
|
+
enabled: boolean;
|
|
218
|
+
};
|
|
219
|
+
}[];
|
|
220
|
+
defaultFieldOrder: {
|
|
221
|
+
list: string[] | null;
|
|
222
|
+
form: string[] | null;
|
|
223
|
+
detail: string[] | null;
|
|
224
|
+
} | null;
|
|
225
|
+
fields: {
|
|
226
|
+
code: string;
|
|
227
|
+
type: "boolean" | "date" | "file" | "subtable" | "text.short" | "text.long" | "text.rich" | "number.integer" | "number.decimal" | "time" | "datetime" | "date-range" | "datetime-range" | "option.single" | "option.multiple" | "cascade.single" | "cascade.multiple" | "user.single" | "user.multiple" | "department.single" | "department.multiple" | "resource-ref.single" | "resource-ref.multiple" | "image" | "signature" | "address" | "location" | "uuid" | "json" | "serial-number";
|
|
228
|
+
label: string;
|
|
229
|
+
hidden: boolean;
|
|
230
|
+
system: boolean;
|
|
231
|
+
read: import("./compiler/permission-review.js").PermissionReviewFieldRequirement;
|
|
232
|
+
create: import("./compiler/permission-review.js").PermissionReviewFieldRequirement;
|
|
233
|
+
update: import("./compiler/permission-review.js").PermissionReviewFieldRequirement;
|
|
234
|
+
mask: "null" | "omit" | null;
|
|
235
|
+
}[];
|
|
236
|
+
}[];
|
|
237
|
+
authorization: {
|
|
238
|
+
authenticatedUserRoleCode: string | null;
|
|
239
|
+
dataPolicies: import("openxiangda-contracts").AppDataPolicyDeclaration[];
|
|
240
|
+
scopeDimensions: import("openxiangda-contracts").AppScopeDimensionDeclaration[];
|
|
241
|
+
scopeSources: import("openxiangda-contracts").AppScopeSourceDeclaration[];
|
|
242
|
+
roleMembershipSources: import("openxiangda-contracts").AppRoleMembershipSourceDeclaration[];
|
|
243
|
+
relationshipGrantSources: import("openxiangda-contracts").AppRelationshipGrantSourceDeclaration[];
|
|
244
|
+
authorizationTransitions: import("openxiangda-contracts").AppAuthorizationTransitionDeclaration[];
|
|
245
|
+
publicAccess: import("openxiangda-contracts").AnonymousPublicAccessContractV2 | null;
|
|
246
|
+
};
|
|
247
|
+
operations: import("openxiangda-contracts").AppApiOperationContract[];
|
|
248
|
+
workflows: {
|
|
249
|
+
runtimeAuthorizationRequired: true;
|
|
250
|
+
contracts: import("openxiangda-contracts").AppWorkflowContract[];
|
|
251
|
+
definitions: {
|
|
252
|
+
workflowCode: string;
|
|
253
|
+
version: number;
|
|
254
|
+
subject: import("openxiangda-contracts").WorkflowSubjectDefinition;
|
|
255
|
+
organizationContext: {
|
|
256
|
+
department?: {
|
|
257
|
+
source: "none" | "user_primary_department" | "choose_if_multiple" | "always_choose" | "fixed" | "from_input" | "from_role_scope";
|
|
258
|
+
required?: boolean;
|
|
259
|
+
value?: string;
|
|
260
|
+
path?: string;
|
|
261
|
+
dimension?: string;
|
|
262
|
+
};
|
|
263
|
+
} | null;
|
|
264
|
+
startAt: string;
|
|
265
|
+
nodes: Record<string, import("openxiangda-contracts").WorkflowNode>;
|
|
266
|
+
}[];
|
|
267
|
+
bindings: import("openxiangda-contracts").NativeWorkflowBindingDeclaration[];
|
|
268
|
+
activations: import("openxiangda-contracts").NativeWorkflowActivationDeclaration[];
|
|
269
|
+
providers: import("openxiangda-contracts").NativeWorkflowProviderDeclaration[];
|
|
270
|
+
editableParameters: import("openxiangda-contracts").NativeWorkflowEditableParameterDeclaration[];
|
|
271
|
+
};
|
|
272
|
+
};
|
|
150
273
|
adminNavigationAuthoring: {
|
|
151
274
|
schemaVersion: string;
|
|
152
275
|
owner: string;
|
|
@@ -325,7 +448,7 @@ export declare class OpenXiangdaApplicationServices {
|
|
|
325
448
|
contractDigest: string;
|
|
326
449
|
aiCatalogDigest: string;
|
|
327
450
|
}>>;
|
|
328
|
-
check(root?: string, environmentKey?: DeploymentEnvironment): Promise<DevkitResult<{
|
|
451
|
+
check(root?: string, environmentKey?: DeploymentEnvironment): Promise<DevkitResult<undefined> | DevkitResult<{
|
|
329
452
|
generated: {
|
|
330
453
|
output: string;
|
|
331
454
|
changed: boolean;
|
|
@@ -432,6 +555,62 @@ export declare class OpenXiangdaApplicationServices {
|
|
|
432
555
|
diagnostics: Diagnostic[];
|
|
433
556
|
nextActions: import("openxiangda-contracts").NextAction[];
|
|
434
557
|
traceId?: string;
|
|
558
|
+
} | {
|
|
559
|
+
operation: string;
|
|
560
|
+
data: {
|
|
561
|
+
sealed: boolean;
|
|
562
|
+
packageDigest: null;
|
|
563
|
+
check: {
|
|
564
|
+
generated: {
|
|
565
|
+
output: string;
|
|
566
|
+
changed: boolean;
|
|
567
|
+
contractDigest: string;
|
|
568
|
+
aiCatalogDigest: string;
|
|
569
|
+
} | undefined;
|
|
570
|
+
compatibility: ConfigurationValidationResult | null;
|
|
571
|
+
stages: {
|
|
572
|
+
ok: boolean;
|
|
573
|
+
exitCode: number;
|
|
574
|
+
output: string;
|
|
575
|
+
name: string;
|
|
576
|
+
}[];
|
|
577
|
+
sealedArtifact: SealedArtifactStatus;
|
|
578
|
+
appSpec: {
|
|
579
|
+
enabled: boolean;
|
|
580
|
+
mode: "advisory";
|
|
581
|
+
releaseGate: false;
|
|
582
|
+
workspaceDigest: string | null;
|
|
583
|
+
selectionDigest: string | null;
|
|
584
|
+
contextBudget: {
|
|
585
|
+
maximumBytes: number;
|
|
586
|
+
contentBytes: number;
|
|
587
|
+
truncated: boolean;
|
|
588
|
+
omitted: import("./app-spec.js").AppSpecDocumentSummary[];
|
|
589
|
+
};
|
|
590
|
+
stats: {
|
|
591
|
+
files: number;
|
|
592
|
+
bytes: number;
|
|
593
|
+
capabilities: number;
|
|
594
|
+
activeChanges: number;
|
|
595
|
+
historyChanges: number;
|
|
596
|
+
decisions: number;
|
|
597
|
+
requirements: number;
|
|
598
|
+
acceptanceScenarios: number;
|
|
599
|
+
};
|
|
600
|
+
diagnostics: {
|
|
601
|
+
errors: number;
|
|
602
|
+
warnings: number;
|
|
603
|
+
info: number;
|
|
604
|
+
};
|
|
605
|
+
nextCommand: string;
|
|
606
|
+
};
|
|
607
|
+
} | undefined;
|
|
608
|
+
};
|
|
609
|
+
ok: boolean;
|
|
610
|
+
workspace: WorkspaceIdentity;
|
|
611
|
+
diagnostics: Diagnostic[];
|
|
612
|
+
nextActions: import("openxiangda-contracts").NextAction[];
|
|
613
|
+
traceId?: string;
|
|
435
614
|
}>;
|
|
436
615
|
private buildSealed;
|
|
437
616
|
deploymentPlan(input: {
|
|
@@ -571,6 +750,7 @@ export declare class OpenXiangdaApplicationServices {
|
|
|
571
750
|
private client;
|
|
572
751
|
private get toolchainVersion();
|
|
573
752
|
private get toolchainCapsule();
|
|
753
|
+
private initializeBackend;
|
|
574
754
|
private runPackageScript;
|
|
575
755
|
private repositoryIdentity;
|
|
576
756
|
private directoryBundle;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application-services.d.ts","sourceRoot":"","sources":["../src/application-services.ts"],"names":[],"mappings":"AAWA,OAAO,EAQL,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,6BAA6B,EAClC,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAQL,KAAK,kBAAkB,EACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,6BAA6B,EAE7B,KAAK,4BAA4B,EACjC,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAC9B,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,EACjC,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,EAC5B,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"application-services.d.ts","sourceRoot":"","sources":["../src/application-services.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,9 @@ import { runConnectedDevelopment, selectConnectedDevelopmentEnvironment, } from
|
|
|
10
10
|
import { backendImageBuildTarget, publishBackendImage, } from "./backend-image-build.js";
|
|
11
11
|
import { OPENXIANGDA_TOOLCHAIN_VERSION } from "./version.js";
|
|
12
12
|
import { git, loadWorkspace, } from "./workspace-loader.js";
|
|
13
|
+
import { validateApplicationUiContract } from './application-ui-contract.js';
|
|
14
|
+
import { initializeOptionalBackend } from './optional-backend.js';
|
|
15
|
+
import { buildPermissionReview } from './compiler/permission-review.js';
|
|
13
16
|
import { validateNestInjectionContract } from "./nest-injection-contract.js";
|
|
14
17
|
import { collectWorkspaceToolchainDependencies, defaultDevkitCoreToolchainCapsule, ToolchainCapsuleScanLimitError, toolchainCapsuleDiagnostic, } from "./toolchain-capsule.js";
|
|
15
18
|
import { advisoryAppSpecDiagnostics, closeAppSpecChange, createAppSpecCapability, createAppSpecChange, initializeAppSpec, inspectAppSpec, summarizeAppSpecContext, } from "./app-spec.js";
|
|
@@ -152,6 +155,7 @@ export class OpenXiangdaApplicationServices {
|
|
|
152
155
|
aiCatalogDigest: sources.aiCatalog.digest,
|
|
153
156
|
contract: sources.contracts.value,
|
|
154
157
|
aiCatalog: sources.aiCatalog.value,
|
|
158
|
+
permissionReview: buildPermissionReview(sources.config.value, sources.contracts.value),
|
|
155
159
|
adminNavigationAuthoring: {
|
|
156
160
|
schemaVersion: "openxiangda.admin-navigation-authoring/v1",
|
|
157
161
|
owner: "application",
|
|
@@ -516,6 +520,7 @@ export class OpenXiangdaApplicationServices {
|
|
|
516
520
|
...validateAppConfig(workspace.config),
|
|
517
521
|
...this.versionTrainDiagnostics(workspace),
|
|
518
522
|
...validateNestInjectionContract(workspace.root),
|
|
523
|
+
...validateApplicationUiContract(workspace.root, workspace.config.frontend.root),
|
|
519
524
|
...advisoryAppSpecDiagnostics(appSpec.diagnostics),
|
|
520
525
|
];
|
|
521
526
|
if (diagnostics.some(item => item.severity === "error")) {
|
|
@@ -540,6 +545,10 @@ export class OpenXiangdaApplicationServices {
|
|
|
540
545
|
appSpec: summarizeAppSpecContext(appSpec),
|
|
541
546
|
}, diagnostics, generated.nextActions);
|
|
542
547
|
}
|
|
548
|
+
const backendDiagnostics = this.initializeBackend(workspace);
|
|
549
|
+
if (backendDiagnostics.length) {
|
|
550
|
+
return this.result("check", workspace.context.workspace, undefined, backendDiagnostics);
|
|
551
|
+
}
|
|
543
552
|
let compatibility = null;
|
|
544
553
|
if (environmentKey) {
|
|
545
554
|
try {
|
|
@@ -635,6 +644,10 @@ export class OpenXiangdaApplicationServices {
|
|
|
635
644
|
return this.result("build", workspace.context.workspace, undefined, generated.diagnostics, generated.nextActions);
|
|
636
645
|
}
|
|
637
646
|
if (!input.skipWorkspaceBuild) {
|
|
647
|
+
const backendDiagnostics = this.initializeBackend(workspace);
|
|
648
|
+
if (backendDiagnostics.length) {
|
|
649
|
+
return this.result("build", workspace.context.workspace, undefined, backendDiagnostics);
|
|
650
|
+
}
|
|
638
651
|
const command = this.runPackageScript(workspace.root, "build");
|
|
639
652
|
if (!command.ok) {
|
|
640
653
|
diagnostics.push(this.diagnostic("WORKSPACE_BUILD_FAILED", "前后端生产构建失败", "package.json#scripts.build", "修复构建错误后重试", { output: command.output }));
|
|
@@ -1083,6 +1096,10 @@ export class OpenXiangdaApplicationServices {
|
|
|
1083
1096
|
if (!generated.ok) {
|
|
1084
1097
|
return this.result("dev", workspace.context.workspace, undefined, generated.diagnostics, generated.nextActions);
|
|
1085
1098
|
}
|
|
1099
|
+
const backendDiagnostics = this.initializeBackend(workspace);
|
|
1100
|
+
if (backendDiagnostics.length) {
|
|
1101
|
+
return this.result("dev", workspace.context.workspace, undefined, backendDiagnostics);
|
|
1102
|
+
}
|
|
1086
1103
|
try {
|
|
1087
1104
|
const linkPath = join(workspace.root, ".openxiangda", "link.json");
|
|
1088
1105
|
if (!existsSync(linkPath)) {
|
|
@@ -1309,6 +1326,22 @@ export class OpenXiangdaApplicationServices {
|
|
|
1309
1326
|
get toolchainCapsule() {
|
|
1310
1327
|
return this.options.toolchainCapsule || defaultDevkitCoreToolchainCapsule();
|
|
1311
1328
|
}
|
|
1329
|
+
initializeBackend(workspace) {
|
|
1330
|
+
try {
|
|
1331
|
+
initializeOptionalBackend(workspace.root, workspace.config, {
|
|
1332
|
+
...(this.options.toolchainCapsule?.packages.openxiangda
|
|
1333
|
+
? { sdkVersion: this.options.toolchainCapsule.packages.openxiangda }
|
|
1334
|
+
: {}),
|
|
1335
|
+
});
|
|
1336
|
+
return [];
|
|
1337
|
+
}
|
|
1338
|
+
catch (error) {
|
|
1339
|
+
return [{
|
|
1340
|
+
...this.diagnostic(String(error.code || "OPENXIANGDA_BACKEND_INITIALIZATION_FAILED"), error.message, workspace.config.backend.root, "修复初始化或依赖安装问题后重新运行 openxiangda check"),
|
|
1341
|
+
retryable: error.retryable === true,
|
|
1342
|
+
}];
|
|
1343
|
+
}
|
|
1344
|
+
}
|
|
1312
1345
|
runPackageScript(root, script) {
|
|
1313
1346
|
const result = spawnSync("pnpm", ["run", script], {
|
|
1314
1347
|
cwd: root,
|