openxiangda-devkit-core 2.0.0-alpha.29 → 2.0.0-alpha.34

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