openxiangda-devkit-core 2.0.0-alpha.28 → 2.0.0-alpha.33

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 (69) hide show
  1. package/README.md +2 -1
  2. package/dist/application-services.d.ts +79 -43
  3. package/dist/application-services.d.ts.map +1 -1
  4. package/dist/application-services.js +257 -160
  5. package/dist/application-services.js.map +1 -1
  6. package/dist/backend-image-build.d.ts +23 -0
  7. package/dist/backend-image-build.d.ts.map +1 -0
  8. package/dist/backend-image-build.js +192 -0
  9. package/dist/backend-image-build.js.map +1 -0
  10. package/dist/command-registry.d.ts +26 -576
  11. package/dist/command-registry.d.ts.map +1 -1
  12. package/dist/command-registry.js +9 -374
  13. package/dist/command-registry.js.map +1 -1
  14. package/dist/compiler/bundle.d.ts +23 -0
  15. package/dist/compiler/bundle.d.ts.map +1 -0
  16. package/dist/compiler/bundle.js +592 -0
  17. package/dist/compiler/bundle.js.map +1 -0
  18. package/dist/compiler/config.d.ts +339 -0
  19. package/dist/compiler/config.d.ts.map +1 -0
  20. package/dist/compiler/config.js +1073 -0
  21. package/dist/compiler/config.js.map +1 -0
  22. package/dist/compiler/index.d.ts +4 -0
  23. package/dist/compiler/index.d.ts.map +1 -0
  24. package/dist/compiler/index.js +4 -0
  25. package/dist/compiler/index.js.map +1 -0
  26. package/dist/compiler/package-compiler.d.ts +22 -0
  27. package/dist/compiler/package-compiler.d.ts.map +1 -0
  28. package/dist/compiler/package-compiler.js +60 -0
  29. package/dist/compiler/package-compiler.js.map +1 -0
  30. package/dist/config.d.ts +1 -1
  31. package/dist/config.js +1 -1
  32. package/dist/connected-development.d.ts +62 -0
  33. package/dist/connected-development.d.ts.map +1 -0
  34. package/dist/connected-development.js +389 -0
  35. package/dist/connected-development.js.map +1 -0
  36. package/dist/control-plane-client.d.ts +52 -5
  37. package/dist/control-plane-client.d.ts.map +1 -1
  38. package/dist/control-plane-client.js +43 -2
  39. package/dist/control-plane-client.js.map +1 -1
  40. package/dist/deployment.d.ts +3 -1
  41. package/dist/deployment.d.ts.map +1 -1
  42. package/dist/deployment.js +18 -8
  43. package/dist/deployment.js.map +1 -1
  44. package/dist/index.d.ts +2 -1
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +2 -1
  47. package/dist/index.js.map +1 -1
  48. package/dist/internal/workflow.d.ts +81 -0
  49. package/dist/internal/workflow.d.ts.map +1 -0
  50. package/dist/internal/workflow.js +351 -0
  51. package/dist/internal/workflow.js.map +1 -0
  52. package/dist/package-compiler.d.ts +1 -1
  53. package/dist/package-compiler.d.ts.map +1 -1
  54. package/dist/package-compiler.js +1 -1
  55. package/dist/package-compiler.js.map +1 -1
  56. package/dist/testing.d.ts +38 -0
  57. package/dist/testing.d.ts.map +1 -0
  58. package/dist/testing.js +46 -0
  59. package/dist/testing.js.map +1 -0
  60. package/dist/workspace-loader.d.ts +1 -1
  61. package/package.json +8 -4
  62. package/dist/local-development.d.ts +0 -85
  63. package/dist/local-development.d.ts.map +0 -1
  64. package/dist/local-development.js +0 -919
  65. package/dist/local-development.js.map +0 -1
  66. package/dist/local-postgres.d.ts +0 -32
  67. package/dist/local-postgres.d.ts.map +0 -1
  68. package/dist/local-postgres.js +0 -324
  69. package/dist/local-postgres.js.map +0 -1
@@ -0,0 +1,592 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { canonicalJson, nativePlatformCapabilityCatalog, OPENXIANGDA_COMPILER_CONTRACT_VERSION, SCHEMA_VERSIONS, sha256Digest, } from 'openxiangda-contracts';
3
+ export const CONFIG_BUNDLE_SCHEMA = SCHEMA_VERSIONS.configurationBundle;
4
+ export const CONTRACT_BUNDLE_SCHEMA = SCHEMA_VERSIONS.contractBundle;
5
+ export const COMPILER_CONTRACT_VERSION = OPENXIANGDA_COMPILER_CONTRACT_VERSION;
6
+ export function compileApplicationSources(config, generatorVersion = 'openxiangda-devkit-core') {
7
+ const configuration = normalizeConfiguration(config);
8
+ const configContent = canonicalJson(configuration);
9
+ const configDigest = sha256Bytes(configContent);
10
+ const contract = compileContractBundle(config, configDigest, generatorVersion);
11
+ const contractContent = canonicalJson(contract);
12
+ const contractDigest = sha256Bytes(contractContent);
13
+ return {
14
+ config: {
15
+ value: configuration,
16
+ content: configContent,
17
+ digest: configDigest,
18
+ artifact: {
19
+ kind: 'config',
20
+ digest: configDigest,
21
+ mediaType: 'application/vnd.openxiangda.config-bundle.v3+json',
22
+ size: Buffer.byteLength(configContent),
23
+ metadata: {
24
+ schemaVersion: CONFIG_BUNDLE_SCHEMA,
25
+ compilerContractVersion: COMPILER_CONTRACT_VERSION,
26
+ },
27
+ },
28
+ },
29
+ contracts: {
30
+ value: contract,
31
+ content: contractContent,
32
+ digest: contractDigest,
33
+ typescript: renderGeneratedContracts(config, contract),
34
+ artifact: {
35
+ kind: 'contracts',
36
+ digest: contractDigest,
37
+ mediaType: 'application/vnd.openxiangda.contract-bundle.v3+json',
38
+ size: Buffer.byteLength(contractContent),
39
+ metadata: {
40
+ schemaVersion: CONTRACT_BUNDLE_SCHEMA,
41
+ compilerContractVersion: COMPILER_CONTRACT_VERSION,
42
+ configDigest,
43
+ },
44
+ },
45
+ },
46
+ };
47
+ }
48
+ export function normalizeConfiguration(config) {
49
+ return {
50
+ schemaVersion: CONFIG_BUNDLE_SCHEMA,
51
+ compilerContractVersion: COMPILER_CONTRACT_VERSION,
52
+ appCode: config.app.code,
53
+ authz: {
54
+ capabilities: sorted(config.authz?.capabilities || [], item => item.code),
55
+ roles: sorted((config.authz?.roles || []).map(role => ({
56
+ code: role.code,
57
+ name: role.name,
58
+ ...(role.description ? { description: role.description } : {}),
59
+ capabilities: uniqueSorted(role.capabilities),
60
+ })), item => item.code),
61
+ scopeDimensions: sorted((config.authz?.scopeDimensions || []).map(dimension => ({
62
+ code: dimension.code,
63
+ name: dimension.name,
64
+ ...(dimension.resourceCode
65
+ ? { resourceCode: dimension.resourceCode }
66
+ : {}),
67
+ ...(dimension.valueType ? { valueType: dimension.valueType } : {}),
68
+ ...(dimension.hierarchyMode
69
+ ? { hierarchyMode: dimension.hierarchyMode }
70
+ : {}),
71
+ })), item => item.code),
72
+ scopeSources: sorted((config.authz?.scopeSources || []).map(source => ({
73
+ code: source.code,
74
+ name: source.name,
75
+ resourceCode: source.resourceCode,
76
+ subject: source.subject.type === 'role_membership'
77
+ ? {
78
+ type: source.subject.type,
79
+ userIdField: source.subject.userIdField,
80
+ roleCode: source.subject.roleCode,
81
+ }
82
+ : {
83
+ type: source.subject.type,
84
+ userIdField: source.subject.userIdField,
85
+ },
86
+ grants: sorted(source.grants.map(grant => ({
87
+ dimensionCode: grant.dimensionCode,
88
+ valueField: grant.valueField,
89
+ ...(grant.parentValueField
90
+ ? { parentValueField: grant.parentValueField }
91
+ : {}),
92
+ })), grant => grant.dimensionCode),
93
+ ...(source.operationField
94
+ ? { operationField: source.operationField }
95
+ : {}),
96
+ ...(source.enabledField ? { enabledField: source.enabledField } : {}),
97
+ ...(source.effectiveFromField
98
+ ? { effectiveFromField: source.effectiveFromField }
99
+ : {}),
100
+ ...(source.effectiveToField
101
+ ? { effectiveToField: source.effectiveToField }
102
+ : {}),
103
+ failureMode: source.failureMode,
104
+ })), item => item.code),
105
+ dataPolicies: sorted((config.authz?.dataPolicies || []).map(policy => ({
106
+ code: policy.code,
107
+ name: policy.name,
108
+ ...(policy.resourceCode ? { resourceCode: policy.resourceCode } : {}),
109
+ ...(policy.unrestrictedRoleCodes !== undefined
110
+ ? {
111
+ unrestrictedRoleCodes: uniqueSorted(policy.unrestrictedRoleCodes),
112
+ }
113
+ : {}),
114
+ matchMode: policy.matchMode,
115
+ rules: policy.rules.map(normalizeDataPolicyRule),
116
+ })), item => item.code),
117
+ authorizationTransitions: sorted((config.authz?.authorizationTransitions || []).map(transition => ({
118
+ fromAuthzDigest: transition.fromAuthzDigest,
119
+ ...(transition.removeRoleCodes
120
+ ? { removeRoleCodes: uniqueSorted(transition.removeRoleCodes) }
121
+ : {}),
122
+ ...(transition.removeCapabilityCodes
123
+ ? {
124
+ removeCapabilityCodes: uniqueSorted(transition.removeCapabilityCodes),
125
+ }
126
+ : {}),
127
+ reason: transition.reason,
128
+ })), item => item.fromAuthzDigest),
129
+ },
130
+ backend: {
131
+ secrets: sorted((config.backend.secrets || []).map(secret => ({
132
+ name: secret.name,
133
+ env: secret.env,
134
+ ...(secret.description ? { description: secret.description } : {}),
135
+ ...(secret.required !== undefined
136
+ ? { required: secret.required }
137
+ : {}),
138
+ exposure: 'active_only',
139
+ })), item => item.name),
140
+ operations: sorted((config.backend.operations || []).map(operation => ({
141
+ code: operation.code,
142
+ method: operation.method,
143
+ path: operation.path,
144
+ capability: operation.capability,
145
+ requestSchema: operation.requestSchema,
146
+ responseSchema: operation.responseSchema,
147
+ ...(operation.description
148
+ ? { description: operation.description }
149
+ : {}),
150
+ })), item => `${item.method}:${item.path}:${item.code}`),
151
+ },
152
+ data: {
153
+ resources: sorted((config.data?.resources || []).map(normalizeDataResource), item => item.code),
154
+ },
155
+ events: {
156
+ subscriptions: sorted((config.events?.subscriptions || []).map(subscription => ({
157
+ code: subscription.code,
158
+ ...(subscription.description
159
+ ? { description: subscription.description }
160
+ : {}),
161
+ eventTypes: uniqueSorted(subscription.eventTypes),
162
+ ...(subscription.subjectFilters
163
+ ? { subjectFilters: subscription.subjectFilters }
164
+ : {}),
165
+ endpointPath: subscription.endpointPath,
166
+ ...(subscription.delivery
167
+ ? { delivery: subscription.delivery }
168
+ : {}),
169
+ })), item => item.code),
170
+ timers: sorted((config.events?.timers || []).map(timer => ({
171
+ code: timer.code,
172
+ eventType: timer.eventType,
173
+ cronExpression: timer.cronExpression,
174
+ timezone: timer.timezone,
175
+ payload: timer.payload,
176
+ })), item => item.code),
177
+ },
178
+ workflows: {
179
+ definitions: sorted((config.workflows?.definitions || []).map(item => ({
180
+ version: item.version,
181
+ definition: item.definition,
182
+ })), item => `${item.definition.code}:${pad(item.version)}`),
183
+ bindings: sorted((config.workflows?.bindings || []).map(item => ({
184
+ version: item.version,
185
+ binding: item.binding,
186
+ })), item => `${item.binding.workflowCode}:${pad(item.version)}`),
187
+ activations: sorted((config.workflows?.activations || []).map(item => ({
188
+ workflowCode: item.workflowCode,
189
+ definitionVersion: item.definitionVersion,
190
+ bindingVersion: item.bindingVersion,
191
+ })), item => item.workflowCode),
192
+ providers: sorted((config.workflows?.providers || []).map(provider => ({
193
+ code: provider.code,
194
+ endpointPath: provider.endpointPath,
195
+ ...(provider.timeoutMs !== undefined
196
+ ? { timeoutMs: provider.timeoutMs }
197
+ : {}),
198
+ })), item => item.code),
199
+ editableParameters: sorted((config.workflows?.editableParameters || []).map(parameter => ({
200
+ code: parameter.code,
201
+ workflowCode: parameter.workflowCode,
202
+ bindingKey: parameter.bindingKey,
203
+ label: parameter.label,
204
+ valueType: parameter.valueType,
205
+ ...(parameter.required !== undefined
206
+ ? { required: parameter.required }
207
+ : {}),
208
+ ...(parameter.allowedRoleCodes
209
+ ? { allowedRoleCodes: uniqueSorted(parameter.allowedRoleCodes) }
210
+ : {}),
211
+ ...(parameter.allowedProviderCodes
212
+ ? {
213
+ allowedProviderCodes: uniqueSorted(parameter.allowedProviderCodes),
214
+ }
215
+ : {}),
216
+ ...(parameter.maxItems !== undefined
217
+ ? { maxItems: parameter.maxItems }
218
+ : {}),
219
+ })), item => item.code),
220
+ },
221
+ frontend: {
222
+ routes: compileFrontendRoutes(config),
223
+ },
224
+ runtime: {
225
+ protocolCapabilities: runtimeProtocolCapabilities(config),
226
+ health: {
227
+ livePath: '/__platform/health',
228
+ readyPath: '/__platform/ready',
229
+ versionPath: '/__platform/version',
230
+ },
231
+ },
232
+ };
233
+ }
234
+ export function compileContractBundle(config, configDigest = sha256Bytes(canonicalJson(normalizeConfiguration(config))), generatorVersion = 'openxiangda-devkit-core') {
235
+ const capabilities = compileCapabilities(config);
236
+ return {
237
+ schemaVersion: CONTRACT_BUNDLE_SCHEMA,
238
+ compilerContractVersion: COMPILER_CONTRACT_VERSION,
239
+ generatorVersion,
240
+ appCode: config.app.code,
241
+ configDigest,
242
+ resources: compileResources(config),
243
+ capabilities,
244
+ operations: compileOperations(config),
245
+ eventConsumers: sorted((config.events?.subscriptions || []).map(subscription => ({
246
+ code: subscription.code,
247
+ endpointPath: subscription.endpointPath,
248
+ eventTypes: uniqueSorted(subscription.eventTypes),
249
+ })), item => item.code),
250
+ eventProducers: sorted((config.events?.timers || []).map(timer => ({
251
+ code: timer.code,
252
+ source: 'timer',
253
+ eventType: timer.eventType,
254
+ })), item => item.code),
255
+ eventTypes: uniqueSorted([
256
+ ...(config.events?.subscriptions || []).flatMap(item => item.eventTypes),
257
+ ...(config.events?.timers || []).map(item => item.eventType),
258
+ ]),
259
+ workflows: compileWorkflows(config),
260
+ routes: compileFrontendRoutes(config),
261
+ };
262
+ }
263
+ function compileFrontendRoutes(config) {
264
+ return sorted((config.frontend.routes || []).map(route => ({
265
+ code: route.code,
266
+ path: route.path,
267
+ label: route.label,
268
+ surface: route.surface,
269
+ ...(route.navigation ? { navigation: route.navigation } : {}),
270
+ ...(route.parentCode ? { parentCode: route.parentCode } : {}),
271
+ ...(route.capability ? { capability: route.capability } : {}),
272
+ ...(route.access
273
+ ? {
274
+ access: {
275
+ ...(route.access.allOf
276
+ ? { allOf: uniqueSorted([...route.access.allOf]) }
277
+ : {}),
278
+ ...(route.access.anyOf
279
+ ? { anyOf: uniqueSorted([...route.access.anyOf]) }
280
+ : {}),
281
+ },
282
+ }
283
+ : {}),
284
+ ...(route.pinned !== undefined ? { pinned: route.pinned } : {}),
285
+ tabPersistence: route.tabPersistence ?? (/[:*]/.test(route.path) ? 'none' : 'session'),
286
+ keepAlive: route.keepAlive ?? 'none',
287
+ })), item => item.code);
288
+ }
289
+ function compileCapabilities(config) {
290
+ const capabilities = new Map();
291
+ for (const item of platformCapabilities(config.app.code)) {
292
+ capabilities.set(item.code, item);
293
+ }
294
+ for (const item of config.authz?.capabilities || []) {
295
+ capabilities.set(item.code, {
296
+ ...item,
297
+ source: 'explicit',
298
+ });
299
+ }
300
+ for (const resource of config.data?.resources || []) {
301
+ const operationNames = {
302
+ read: `读取${resource.name}`,
303
+ create: `新建${resource.name}`,
304
+ update: `更新${resource.name}`,
305
+ delete: `删除${resource.name}`,
306
+ };
307
+ for (const [operation, code] of Object.entries(resource.capabilities)) {
308
+ capabilities.set(code, {
309
+ code,
310
+ kind: 'data',
311
+ name: operationNames[operation] || `${resource.name} ${operation}`,
312
+ source: 'data',
313
+ });
314
+ }
315
+ for (const [fieldCode, policy] of Object.entries(resource.fieldPolicies || {})) {
316
+ for (const [operation, codes] of Object.entries(policy)) {
317
+ if (!Array.isArray(codes))
318
+ continue;
319
+ for (const code of codes) {
320
+ if (capabilities.has(code))
321
+ continue;
322
+ capabilities.set(code, {
323
+ code,
324
+ kind: 'data',
325
+ name: `${resource.name}.${fieldCode}.${operation}`,
326
+ source: 'data',
327
+ });
328
+ }
329
+ }
330
+ }
331
+ }
332
+ return [...capabilities.values()].sort((left, right) => compare(left.code, right.code));
333
+ }
334
+ function compileResources(config) {
335
+ return sorted((config.data?.resources || []).map(sourceResource => {
336
+ const resource = normalizeDataResource(sourceResource);
337
+ return {
338
+ code: resource.code,
339
+ // The platform only receives immutable artifact bytes. Bind the
340
+ // contract to the normalized schema in config-bundle/v3, never to
341
+ // ordering or optional-property details that existed only in source.
342
+ schemaDigest: sha256Digest(resource.schema),
343
+ fields: sorted(resource.schema.fields.map(field => ({
344
+ code: field.code,
345
+ type: field.type,
346
+ })), field => field.code),
347
+ };
348
+ }), item => item.code);
349
+ }
350
+ function compileOperations(config) {
351
+ return sorted((config.backend.operations || []).map(operation => ({
352
+ code: operation.code,
353
+ method: operation.method,
354
+ path: operation.path,
355
+ requiredCapability: operation.capability,
356
+ requestSchemaDigest: sha256Digest(operation.requestSchema),
357
+ responseSchemaDigest: sha256Digest(operation.responseSchema),
358
+ ...(operation.description
359
+ ? { description: operation.description }
360
+ : {}),
361
+ })), item => item.code);
362
+ }
363
+ function compileWorkflows(config) {
364
+ const workflowCodes = uniqueSorted((config.workflows?.definitions || []).map(item => item.definition.code));
365
+ return workflowCodes.map(code => {
366
+ const definitions = (config.workflows?.definitions || []).filter(item => item.definition.code === code);
367
+ const allowedOperations = new Set();
368
+ for (const declaration of definitions) {
369
+ for (const node of Object.values(declaration.definition.nodes)) {
370
+ if (node.kind !== 'approval')
371
+ continue;
372
+ for (const operation of node.allowedOperations || []) {
373
+ allowedOperations.add(operation);
374
+ }
375
+ }
376
+ }
377
+ return {
378
+ code,
379
+ definitionVersions: uniqueSortedNumbers(definitions.map(item => item.version)),
380
+ bindingVersions: uniqueSortedNumbers((config.workflows?.bindings || [])
381
+ .filter(item => item.binding.workflowCode === code)
382
+ .map(item => item.version)),
383
+ providerCodes: uniqueSorted((config.workflows?.providers || []).map(item => item.code)),
384
+ allowedOperations: [...allowedOperations].sort(compare),
385
+ editableParameterCodes: uniqueSorted((config.workflows?.editableParameters || [])
386
+ .filter(item => item.workflowCode === code)
387
+ .map(item => item.code)),
388
+ };
389
+ });
390
+ }
391
+ function runtimeProtocolCapabilities(config) {
392
+ return uniqueSorted([
393
+ 'application-native-2',
394
+ 'authz.batch-explain',
395
+ 'deployment.durable-runs',
396
+ 'deployment.platform-executor',
397
+ ...(config.data?.resources.length ? ['data-api-v2'] : []),
398
+ ...(config.authz?.roles.some(role => role.capabilities.some(capability => capability.endsWith(':directory:read')))
399
+ ? ['directory-v2']
400
+ : []),
401
+ ...(config.events?.subscriptions.length || config.events?.timers?.length
402
+ ? ['events-v2', 'events.durable-receipts']
403
+ : []),
404
+ ...(config.workflows?.activations.length ? ['workflow-kernel-v2'] : []),
405
+ ]);
406
+ }
407
+ function platformCapabilities(appCode) {
408
+ return nativePlatformCapabilityCatalog(appCode);
409
+ }
410
+ function normalizeDataResource(resource) {
411
+ return {
412
+ schemaVersion: resource.schemaVersion,
413
+ appCode: resource.appCode,
414
+ code: resource.code,
415
+ name: resource.name,
416
+ schema: {
417
+ fields: resource.schema.fields.map(field => ({
418
+ code: field.code,
419
+ type: field.type,
420
+ ...(field.nullable !== undefined ? { nullable: field.nullable } : {}),
421
+ ...(field.indexed !== undefined ? { indexed: field.indexed } : {}),
422
+ ...(field.file
423
+ ? {
424
+ file: {
425
+ ...(field.file.multiple !== undefined
426
+ ? { multiple: field.file.multiple }
427
+ : {}),
428
+ ...(field.file.maxCount !== undefined
429
+ ? { maxCount: field.file.maxCount }
430
+ : {}),
431
+ ...(field.file.maxSizeMb !== undefined
432
+ ? { maxSizeMb: field.file.maxSizeMb }
433
+ : {}),
434
+ ...(field.file.accept
435
+ ? { accept: uniqueSorted(field.file.accept) }
436
+ : {}),
437
+ },
438
+ }
439
+ : {}),
440
+ })),
441
+ },
442
+ capabilities: { ...resource.capabilities },
443
+ ...(resource.dataPolicyCode
444
+ ? { dataPolicyCode: resource.dataPolicyCode }
445
+ : {}),
446
+ fieldPolicies: Object.fromEntries(Object.entries(resource.fieldPolicies || {})
447
+ .sort(([left], [right]) => compare(left, right))
448
+ .map(([fieldCode, policy]) => [
449
+ fieldCode,
450
+ {
451
+ ...(Object.prototype.hasOwnProperty.call(policy, 'read')
452
+ ? { read: uniqueSorted(policy.read || []) }
453
+ : {}),
454
+ ...(Object.prototype.hasOwnProperty.call(policy, 'create')
455
+ ? { create: uniqueSorted(policy.create || []) }
456
+ : {}),
457
+ ...(Object.prototype.hasOwnProperty.call(policy, 'update')
458
+ ? { update: uniqueSorted(policy.update || []) }
459
+ : {}),
460
+ ...(Object.prototype.hasOwnProperty.call(policy, 'write')
461
+ ? { write: uniqueSorted(policy.write || []) }
462
+ : {}),
463
+ ...(policy.mask ? { mask: policy.mask } : {}),
464
+ },
465
+ ])),
466
+ };
467
+ }
468
+ function normalizeDataPolicyRule(rule) {
469
+ if ('subject' in rule) {
470
+ return {
471
+ subject: rule.subject,
472
+ field: rule.field,
473
+ ...(rule.roleCodes ? { roleCodes: uniqueSorted(rule.roleCodes) } : {}),
474
+ };
475
+ }
476
+ if ('dimensionCode' in rule) {
477
+ return {
478
+ dimensionCode: rule.dimensionCode,
479
+ field: rule.field,
480
+ ...(rule.roleCodes ? { roleCodes: uniqueSorted(rule.roleCodes) } : {}),
481
+ ...(rule.operation ? { operation: rule.operation } : {}),
482
+ ...(rule.valuePath ? { valuePath: rule.valuePath } : {}),
483
+ ...(rule.emptyMatchesAll !== undefined
484
+ ? { emptyMatchesAll: rule.emptyMatchesAll }
485
+ : {}),
486
+ };
487
+ }
488
+ return {
489
+ relationCode: rule.relationCode,
490
+ resourceCode: rule.resourceCode,
491
+ field: rule.field,
492
+ ...(rule.roleCodes ? { roleCodes: uniqueSorted(rule.roleCodes) } : {}),
493
+ ...(rule.operation ? { operation: rule.operation } : {}),
494
+ ...(rule.valuePath ? { valuePath: rule.valuePath } : {}),
495
+ };
496
+ }
497
+ export function renderGeneratedContracts(config, contract = compileContractBundle(config)) {
498
+ const resourceCodes = contract.resources.map(item => item.code);
499
+ const capabilities = contract.capabilities.map(item => item.code);
500
+ const eventSubscriptionCodes = contract.eventConsumers.map(item => item.code);
501
+ const workflowCodes = contract.workflows.map(item => item.code);
502
+ const operationEntries = contract.operations.map(operation => [
503
+ camel(operation.code),
504
+ operation,
505
+ ]);
506
+ const routeEntries = contract.routes.map(route => [camel(route.code), route]);
507
+ const lines = [
508
+ '// Generated by OpenXiangda 2.0 Native compiler. Do not edit by hand.',
509
+ `export const compilerContractVersion = ${JSON.stringify(COMPILER_CONTRACT_VERSION)} as const;`,
510
+ `export const appCode = ${JSON.stringify(config.app.code)} as const;`,
511
+ `export const resourceCodes = ${JSON.stringify(resourceCodes, null, 2)} as const;`,
512
+ `export const capabilities = ${JSON.stringify(capabilities, null, 2)} as const;`,
513
+ `export const appOperations = ${renderEntries(operationEntries)} as const;`,
514
+ `export const appRoutes = ${renderEntries(routeEntries)} as const;`,
515
+ `export const eventTypes = ${JSON.stringify(contract.eventTypes, null, 2)} as const;`,
516
+ `export const eventSubscriptionCodes = ${JSON.stringify(eventSubscriptionCodes, null, 2)} as const;`,
517
+ `export const workflowCodes = ${JSON.stringify(workflowCodes, null, 2)} as const;`,
518
+ '',
519
+ 'export type ResourceCode = (typeof resourceCodes)[number];',
520
+ 'export type Capability = (typeof capabilities)[number];',
521
+ 'export type AppOperation = (typeof appOperations)[keyof typeof appOperations];',
522
+ 'export type AppRoute = (typeof appRoutes)[keyof typeof appRoutes];',
523
+ 'export type EventType = (typeof eventTypes)[number];',
524
+ 'export type EventSubscriptionCode = (typeof eventSubscriptionCodes)[number];',
525
+ 'export type WorkflowCode = (typeof workflowCodes)[number];',
526
+ '',
527
+ ];
528
+ for (const resource of sorted(config.data?.resources || [], item => item.code)) {
529
+ lines.push(`export interface ${pascal(resource.code)}Record {`);
530
+ lines.push(' id: string;');
531
+ lines.push(' revision: number;');
532
+ for (const field of resource.schema.fields) {
533
+ const optional = field.nullable === false ? '' : '?';
534
+ lines.push(` ${safeProperty(field.code)}${optional}: ${typescriptType(field.type)}${field.nullable === false ? '' : ' | null'};`);
535
+ }
536
+ lines.push('}', '');
537
+ }
538
+ return `${lines.join('\n').trimEnd()}\n`;
539
+ }
540
+ export function sha256Bytes(content) {
541
+ return createHash('sha256').update(content).digest('hex');
542
+ }
543
+ function sorted(items, key) {
544
+ return [...items].sort((left, right) => compare(key(left), key(right)));
545
+ }
546
+ function uniqueSorted(items) {
547
+ return [...new Set(items)].sort(compare);
548
+ }
549
+ function uniqueSortedNumbers(items) {
550
+ return [...new Set(items)].sort((left, right) => left - right);
551
+ }
552
+ function compare(left, right) {
553
+ return left === right ? 0 : left < right ? -1 : 1;
554
+ }
555
+ function pad(value) {
556
+ return String(value).padStart(10, '0');
557
+ }
558
+ function pascal(value) {
559
+ const normalized = value
560
+ .split(/[^A-Za-z0-9]+/)
561
+ .filter(Boolean)
562
+ .map(part => `${part[0]?.toUpperCase() || ''}${part.slice(1)}`)
563
+ .join('');
564
+ return /^[A-Za-z_$]/.test(normalized) ? normalized : `Resource${normalized}`;
565
+ }
566
+ function camel(value) {
567
+ const pascalValue = pascal(value);
568
+ return `${pascalValue[0]?.toLowerCase() || ''}${pascalValue.slice(1)}`;
569
+ }
570
+ function renderEntries(entries) {
571
+ if (entries.length === 0)
572
+ return '{}';
573
+ const body = entries
574
+ .map(([key, value]) => ` ${safeProperty(key)}: ${JSON.stringify(value, null, 2).replace(/\n/g, '\n ')}`)
575
+ .join(',\n');
576
+ return `{\n${body}\n}`;
577
+ }
578
+ function safeProperty(value) {
579
+ return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(value)
580
+ ? value
581
+ : JSON.stringify(value);
582
+ }
583
+ function typescriptType(type) {
584
+ if (type === 'integer' || type === 'decimal')
585
+ return 'number';
586
+ if (type === 'boolean')
587
+ return 'boolean';
588
+ if (type === 'json')
589
+ return 'unknown';
590
+ return 'string';
591
+ }
592
+ //# sourceMappingURL=bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../src/compiler/bundle.ts"],"names":[],"mappings":"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"}