openxiangda-devkit-core 2.62.1 → 2.63.1
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 +36 -8
- package/dist/application-services.d.ts.map +1 -1
- package/dist/application-services.js +12 -6
- package/dist/application-services.js.map +1 -1
- package/dist/backend-image-candidate.d.ts.map +1 -1
- package/dist/backend-image-candidate.js +5 -19
- package/dist/backend-image-candidate.js.map +1 -1
- package/dist/backend-image-inputs.d.ts +7 -0
- package/dist/backend-image-inputs.d.ts.map +1 -1
- package/dist/backend-image-inputs.js +25 -2
- package/dist/backend-image-inputs.js.map +1 -1
- package/dist/compiler/bundle.js +1 -1
- package/dist/compiler/bundle.js.map +1 -1
- package/dist/compiler/config.d.ts.map +1 -1
- package/dist/compiler/config.js +21 -4
- package/dist/compiler/config.js.map +1 -1
- package/dist/compiler/permission-review.d.ts.map +1 -1
- package/dist/internal/workflow.d.ts.map +1 -1
- package/dist/internal/workflow.js +9 -1
- package/dist/internal/workflow.js.map +1 -1
- package/dist/target-readiness.d.ts.map +1 -1
- package/dist/target-readiness.js +2 -1
- package/dist/target-readiness.js.map +1 -1
- package/dist/toolchain-capsule.d.ts +4 -5
- package/dist/toolchain-capsule.d.ts.map +1 -1
- package/dist/toolchain-capsule.js +19 -68
- package/dist/toolchain-capsule.js.map +1 -1
- package/dist/toolchain-facts.d.ts +40 -0
- package/dist/toolchain-facts.d.ts.map +1 -0
- package/dist/toolchain-facts.js +82 -0
- package/dist/toolchain-facts.js.map +1 -0
- package/dist/workspace-inputs.d.ts +13 -0
- package/dist/workspace-inputs.d.ts.map +1 -0
- package/dist/workspace-inputs.js +135 -0
- package/dist/workspace-inputs.js.map +1 -0
- package/package.json +5 -3
package/dist/compiler/config.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { workflowAssignmentLeafBinding, workflowAssignmentLeaves, workflowBindingRoleCodes, validateWorkflowConditionalAssignmentShape } from 'openxiangda-contracts';
|
|
1
2
|
import { compileApplicationAgentsV2, NativeApplicationAgentContractError } from 'openxiangda-contracts/native-compiler';
|
|
2
3
|
import { normalizeDataMutationGrants } from 'openxiangda-contracts';
|
|
3
4
|
import { parseNativeParentReadPolicy, validateNativeParentReadPolicies, NativeParentReadPolicyError, NativeDataPolicyExpressionV2Error } from 'openxiangda-contracts/native-compiler';
|
|
@@ -640,7 +641,7 @@ export function backendRuntimeRequired(config) {
|
|
|
640
641
|
(backend.enabled !== false &&
|
|
641
642
|
Boolean(backend.operations?.length ||
|
|
642
643
|
backend.secrets?.length ||
|
|
643
|
-
config.events?.subscriptions?.some(item =>
|
|
644
|
+
config.events?.subscriptions?.some(item => item.execution?.kind !== 'native-data') ||
|
|
644
645
|
config.events?.timers?.length ||
|
|
645
646
|
config.events?.dateTriggers?.length ||
|
|
646
647
|
config.workflows?.providers?.length ||
|
|
@@ -947,7 +948,7 @@ export function validateAppConfig(value) {
|
|
|
947
948
|
(Array.isArray(backend.operations) && backend.operations.length > 0 ||
|
|
948
949
|
Array.isArray(backend.secrets) && backend.secrets.length > 0 ||
|
|
949
950
|
Array.isArray(eventConfig.subscriptions) &&
|
|
950
|
-
eventConfig.subscriptions.some(item =>
|
|
951
|
+
eventConfig.subscriptions.some(item => object(object(item).execution).kind !== 'native-data') ||
|
|
951
952
|
Array.isArray(eventConfig.timers) && eventConfig.timers.length > 0 ||
|
|
952
953
|
Array.isArray(eventConfig.dateTriggers) &&
|
|
953
954
|
eventConfig.dateTriggers.length > 0 ||
|
|
@@ -2531,6 +2532,20 @@ export function validateAppConfig(value) {
|
|
|
2531
2532
|
if (bindingByKey.has(key)) {
|
|
2532
2533
|
diagnostics.push(diagnostic('APP_CONFIG_WORKFLOW_BINDING_DUPLICATE', `Workflow binding 重复: ${key}`, path));
|
|
2533
2534
|
}
|
|
2535
|
+
const declaredRoles = new Set((Array.isArray(authz.roles) ? authz.roles : []).map(item => string(object(item).code)));
|
|
2536
|
+
for (const [code, entry] of Object.entries(binding.bindings || {})) {
|
|
2537
|
+
if (entry.provider !== 'conditional')
|
|
2538
|
+
continue;
|
|
2539
|
+
const shape = validateWorkflowConditionalAssignmentShape(entry);
|
|
2540
|
+
for (const error of shape)
|
|
2541
|
+
diagnostics.push(diagnostic('APP_CONFIG_WORKFLOW_BINDING_INVALID', error, `${path}.binding.bindings.${code}`));
|
|
2542
|
+
if (shape.length)
|
|
2543
|
+
continue;
|
|
2544
|
+
for (const leaf of workflowAssignmentLeaves(entry))
|
|
2545
|
+
for (const role of [...workflowBindingRoleCodes(leaf), ...Object.values(leaf.routing?.sources || {}).map(source => source.roleCode)])
|
|
2546
|
+
if (!declaredRoles.has(role))
|
|
2547
|
+
diagnostics.push(diagnostic('WORKFLOW_CONDITIONAL_ROLE_UNDECLARED', '条件人员来源引用了未声明的角色', `${path}.binding.bindings.${code}`));
|
|
2548
|
+
}
|
|
2534
2549
|
bindingByKey.set(key, binding);
|
|
2535
2550
|
});
|
|
2536
2551
|
const activationWorkflowCodes = new Set();
|
|
@@ -2575,6 +2590,8 @@ export function validateAppConfig(value) {
|
|
|
2575
2590
|
for (const error of validateWorkflowBinding(definition, binding)) {
|
|
2576
2591
|
diagnostics.push(diagnostic('APP_CONFIG_WORKFLOW_BINDING_INVALID', error, path));
|
|
2577
2592
|
}
|
|
2593
|
+
if (Object.values(binding.bindings || {}).some(entry => entry.provider === 'conditional' && validateWorkflowConditionalAssignmentShape(entry).length))
|
|
2594
|
+
return;
|
|
2578
2595
|
try {
|
|
2579
2596
|
const resource = (Array.isArray(data.resources) ? data.resources : []).map(object).find(item => item.code === definition.subject.resourceCode);
|
|
2580
2597
|
const fields = object(resource?.schema).fields;
|
|
@@ -2595,7 +2612,7 @@ export function validateAppConfig(value) {
|
|
|
2595
2612
|
}
|
|
2596
2613
|
}
|
|
2597
2614
|
});
|
|
2598
|
-
for (const error of validateWorkflowAssignmentRoutingBindings(activeRoutingBindings))
|
|
2615
|
+
for (const error of validateWorkflowAssignmentRoutingBindings(activeRoutingBindings.map(workflowAssignmentLeafBinding)))
|
|
2599
2616
|
diagnostics.push(diagnostic('APP_CONFIG_WORKFLOW_ROUTING_INVALID', error, 'workflows.activations'));
|
|
2600
2617
|
editableParameters.forEach((item, index) => {
|
|
2601
2618
|
const parameter = object(item);
|
|
@@ -5228,7 +5245,7 @@ export function defineOpenXiangdaApp(declaration) {
|
|
|
5228
5245
|
backend: {
|
|
5229
5246
|
root: 'apps/server', runtime: 'node', framework: 'nestjs',
|
|
5230
5247
|
enabled: Boolean(declaration.backend?.operations?.length || declaration.backend?.secrets?.length ||
|
|
5231
|
-
declaration.events?.subscriptions?.some(item =>
|
|
5248
|
+
declaration.events?.subscriptions?.some(item => item.execution?.kind !== 'native-data') || declaration.events?.timers?.length ||
|
|
5232
5249
|
declaration.events?.dateTriggers?.length ||
|
|
5233
5250
|
declaration.workflows?.providers?.length || declaration.data?.concurrency?.commands.some(command => command.mode === 'durable')),
|
|
5234
5251
|
...declaration.backend,
|