openxiangda-contracts 2.8.0 → 2.10.0

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.
@@ -69,6 +69,7 @@ export interface NativeEventCapturePlanV2 {
69
69
  authorizationFields: string[];
70
70
  captureFields: string[];
71
71
  digest: string;
72
+ capturedEventTypes?: string[];
72
73
  }
73
74
  /**
74
75
  * Compiles the immutable data-event capture closure. The result deliberately
@@ -79,6 +80,7 @@ export declare function compileNativeEventCapturePlansV2(input: {
79
80
  resources: JsonObject[];
80
81
  dataPolicies: JsonObject[];
81
82
  subscriptions: JsonObject[];
83
+ capturePolicies?: JsonObject[];
82
84
  }): NativeEventCapturePlanV2[];
83
85
  export {};
84
86
  //# sourceMappingURL=compiler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/native-compiler/compiler.ts"],"names":[],"mappings":"AASA,OAAO,EAEL,KAAK,kCAAkC,IAAI,uCAAuC,EACnF,MAAM,aAAa,CAAC;AAwBrB,QAAA,MAAM,iBAAiB,mDAAmD,CAAC;AAC3E,QAAA,MAAM,yBAAyB,YAA2C,CAAC;AAgF3E,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;EAc7B,CAAC;AACZ,eAAO,MAAM,mBAAmB,6HAItB,CAAC;AACX,eAAO,MAAM,uBAAuB,u/CAkC1B,CAAC;AAGX,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEtC,MAAM,WAAW,gCAAgC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IAC1C,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IAC5C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,6BAA6B,CAAC,CAAC,GAAG,UAAU;IAC3D,KAAK,EAAE,CAAC,CAAC;IACT,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iCAAiC;IAChD,aAAa,EAAE,OAAO,iBAAiB,CAAC;IACxC,uBAAuB,EAAE,OAAO,yBAAyB,CAAC;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,WAAW,EAAE;QACX,KAAK,EAAE,6BAA6B,CAAC;QACrC,IAAI,EAAE,6BAA6B,CAAC;QACpC,MAAM,EAAE,6BAA6B,CAAC;QACtC,SAAS,EAAE,6BAA6B,CAAC;QACzC,OAAO,EAAE,6BAA6B,CAAC;QACvC,SAAS,EAAE,6BAA6B,CAAC;KAC1C,CAAC;IACF,4BAA4B,EAAE,uCAAuC,EAAE,CAAC;IACxE,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,gCAAiC,SAAQ,KAAK;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAG3C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;CAY5C;AAED,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,gCAAgC,GACtC,iCAAiC,CA6InC;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,UAAU,GACjB,uCAAuC,EAAE,CAqR3C;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,KAAK,EAAE;IACtD,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,aAAa,EAAE,UAAU,EAAE,CAAC;CAC7B,GAAG,wBAAwB,EAAE,CAyI7B"}
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/native-compiler/compiler.ts"],"names":[],"mappings":"AASA,OAAO,EAEL,KAAK,kCAAkC,IAAI,uCAAuC,EACnF,MAAM,aAAa,CAAC;AAwBrB,QAAA,MAAM,iBAAiB,mDAAmD,CAAC;AAC3E,QAAA,MAAM,yBAAyB,YAA2C,CAAC;AAgF3E,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;EAc7B,CAAC;AACZ,eAAO,MAAM,mBAAmB,6HAItB,CAAC;AACX,eAAO,MAAM,uBAAuB,u/CAkC1B,CAAC;AAGX,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEtC,MAAM,WAAW,gCAAgC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IAC1C,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IAC5C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,6BAA6B,CAAC,CAAC,GAAG,UAAU;IAC3D,KAAK,EAAE,CAAC,CAAC;IACT,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iCAAiC;IAChD,aAAa,EAAE,OAAO,iBAAiB,CAAC;IACxC,uBAAuB,EAAE,OAAO,yBAAyB,CAAC;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,WAAW,EAAE;QACX,KAAK,EAAE,6BAA6B,CAAC;QACrC,IAAI,EAAE,6BAA6B,CAAC;QACpC,MAAM,EAAE,6BAA6B,CAAC;QACtC,SAAS,EAAE,6BAA6B,CAAC;QACzC,OAAO,EAAE,6BAA6B,CAAC;QACvC,SAAS,EAAE,6BAA6B,CAAC;KAC1C,CAAC;IACF,4BAA4B,EAAE,uCAAuC,EAAE,CAAC;IACxE,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,gCAAiC,SAAQ,KAAK;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAG3C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,WAAW,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;CAY5C;AAED,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,gCAAgC,GACtC,iCAAiC,CA8InC;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,UAAU,GACjB,uCAAuC,EAAE,CAwR3C;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,KAAK,EAAE;IACtD,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,aAAa,EAAE,UAAU,EAAE,CAAC;IAC5B,eAAe,CAAC,EAAE,UAAU,EAAE,CAAC;CAChC,GAAG,wBAAwB,EAAE,CA4J7B"}
@@ -206,6 +206,7 @@ export function compileNativeApplicationConfiguration(input) {
206
206
  resources: config.data.resources,
207
207
  dataPolicies: config.authz.dataPolicies,
208
208
  subscriptions: expectedContract.eventConsumers,
209
+ capturePolicies: config.events.capturePolicies,
209
210
  }),
210
211
  },
211
212
  workflows: {
@@ -397,6 +398,9 @@ export function compileRequiredPlatformCapabilitiesV3(config) {
397
398
  },
398
399
  ]
399
400
  : []),
401
+ ...(config.events.capturePolicies?.length
402
+ ? [{ code: 'events.capture-policy', declaration: config.events.capturePolicies }]
403
+ : []),
400
404
  ...(usesEvents
401
405
  ? [
402
406
  { code: 'events-v2', declaration: config.events },
@@ -493,6 +497,21 @@ export function compileRequiredPlatformCapabilitiesV3(config) {
493
497
  * selected at runtime by that same revision tuple.
494
498
  */
495
499
  export function compileNativeEventCapturePlansV2(input) {
500
+ const capturePolicies = new Map();
501
+ const resources = new Set(input.resources.map(resource => String(resource.code)));
502
+ for (const [index, raw] of boundedArray(input.capturePolicies === undefined ? [] : input.capturePolicies, '/capturePlan/capturePolicies', 100).entries()) {
503
+ const pointer = `/capturePlan/capturePolicies/${index}`;
504
+ const policy = object(raw, pointer);
505
+ exactKeys(policy, ['resourceCode', 'mode'], pointer);
506
+ const code = resourceCode(policy.resourceCode, `${pointer}/resourceCode`);
507
+ if (!resources.has(code))
508
+ fail('NATIVE_EVENT_CAPTURE_RESOURCE_NOT_FOUND', pointer, { resourceCode: code });
509
+ if (capturePolicies.has(code))
510
+ fail('NATIVE_EVENT_CAPTURE_POLICY_DUPLICATE', pointer, { resourceCode: code });
511
+ if (policy.mode !== 'all' && policy.mode !== 'subscribed')
512
+ fail('NATIVE_EVENT_CAPTURE_MODE_INVALID', `${pointer}/mode`);
513
+ capturePolicies.set(code, policy.mode);
514
+ }
496
515
  const policies = new Map(input.dataPolicies.map((raw, index) => {
497
516
  const policy = object(raw, `/capturePlan/dataPolicies/${index}`);
498
517
  return [String(policy.code), policy];
@@ -528,6 +547,7 @@ export function compileNativeEventCapturePlansV2(input) {
528
547
  }
529
548
  const filterFields = new Set();
530
549
  const projectionFields = new Set();
550
+ const capturedEventTypes = new Set();
531
551
  for (const [subscriptionIndex, subscription] of subscriptions.entries()) {
532
552
  const eventTypes = boundedArray(subscription.eventTypes, `/capturePlan/subscriptions/${subscriptionIndex}/eventTypes`, 20).map(String);
533
553
  if (!eventTypes.some(type => type.startsWith('openxiangda.data.'))) {
@@ -540,6 +560,10 @@ export function compileNativeEventCapturePlansV2(input) {
540
560
  if (selectedResources.length && !selectedResources.includes(code)) {
541
561
  continue;
542
562
  }
563
+ for (const type of eventTypes) {
564
+ if (DATA_EVENT_TYPES_V2.includes(type))
565
+ capturedEventTypes.add(type);
566
+ }
543
567
  for (const field of eventCaptureFilterFieldsV2(filter, `/capturePlan/subscriptions/${subscriptionIndex}/filter`)) {
544
568
  filterFields.add(field);
545
569
  }
@@ -577,6 +601,9 @@ export function compileNativeEventCapturePlansV2(input) {
577
601
  }
578
602
  const plan = {
579
603
  resourceCode: code,
604
+ ...(capturePolicies.get(code) === 'subscribed'
605
+ ? { capturedEventTypes: [...capturedEventTypes].sort() }
606
+ : {}),
580
607
  filterFields: [...filterFields].sort(),
581
608
  projectionFields: [...projectionFields].sort(),
582
609
  authorizationFields: [...authorizationFields].sort(),
@@ -676,7 +703,7 @@ function validateConfigurationEnvelope(config, appCode) {
676
703
  boundedArray(data.resourceDetailRoutes, '/config/data/resourceDetailRoutes', 100);
677
704
  }
678
705
  const events = object(config.events, '/config/events');
679
- exactKeys(events, ['schemas', 'subscriptions', 'timers', 'dateTriggers'], '/config/events');
706
+ exactKeys(events, ['schemas', 'subscriptions', 'timers', 'dateTriggers'], '/config/events', ['capturePolicies']);
680
707
  boundedArray(events.schemas, '/config/events/schemas', 100);
681
708
  boundedArray(events.subscriptions, '/config/events/subscriptions', 100);
682
709
  boundedArray(events.timers, '/config/events/timers', 100);