@skedulo/integration-sdk 0.2.3 → 0.3.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.
- package/CHANGELOG.md +43 -1
- package/README.md +9 -0
- package/dist/adapters/adapter-registry.d.ts +9 -0
- package/dist/adapters/adapter-registry.d.ts.map +1 -0
- package/dist/adapters/adapter-registry.js +34 -0
- package/dist/adapters/adapter-registry.js.map +1 -0
- package/dist/adapters/base-adapter-handler.d.ts +105 -0
- package/dist/adapters/base-adapter-handler.d.ts.map +1 -0
- package/dist/adapters/base-adapter-handler.js +379 -0
- package/dist/adapters/base-adapter-handler.js.map +1 -0
- package/dist/adapters/base.adapter.d.ts +38 -17
- package/dist/adapters/base.adapter.d.ts.map +1 -1
- package/dist/adapters/base.adapter.js +80 -22
- package/dist/adapters/base.adapter.js.map +1 -1
- package/dist/adapters/helpers.d.ts +15 -0
- package/dist/adapters/helpers.d.ts.map +1 -0
- package/dist/adapters/helpers.js +55 -0
- package/dist/adapters/helpers.js.map +1 -0
- package/dist/adapters/skedulo-metadata-adapter.d.ts +3 -0
- package/dist/adapters/skedulo-metadata-adapter.d.ts.map +1 -0
- package/dist/adapters/skedulo-metadata-adapter.js +57 -0
- package/dist/adapters/skedulo-metadata-adapter.js.map +1 -0
- package/dist/adapters/skedulo-metadata.adapter.d.ts +3 -0
- package/dist/adapters/skedulo-metadata.adapter.d.ts.map +1 -0
- package/dist/adapters/skedulo-metadata.adapter.js +57 -0
- package/dist/adapters/skedulo-metadata.adapter.js.map +1 -0
- package/dist/adapters/skedulo.adapter.d.ts +11 -0
- package/dist/adapters/skedulo.adapter.d.ts.map +1 -1
- package/dist/adapters/skedulo.adapter.js +38 -7
- package/dist/adapters/skedulo.adapter.js.map +1 -1
- package/dist/adapters/upsert-harness.d.ts +15 -0
- package/dist/adapters/upsert-harness.d.ts.map +1 -0
- package/dist/adapters/upsert-harness.js +55 -0
- package/dist/adapters/upsert-harness.js.map +1 -0
- package/dist/clients/dataflow-client.d.ts +18 -0
- package/dist/clients/dataflow-client.d.ts.map +1 -0
- package/dist/clients/dataflow-client.js +43 -0
- package/dist/clients/dataflow-client.js.map +1 -0
- package/dist/clients/dataflow.client.js +2 -2
- package/dist/clients/dataflow.client.js.map +1 -1
- package/dist/clients/proxy-client.d.ts +13 -0
- package/dist/clients/proxy-client.d.ts.map +1 -0
- package/dist/clients/proxy-client.js +20 -0
- package/dist/clients/proxy-client.js.map +1 -0
- package/dist/clients/proxy.client.d.ts +11 -1
- package/dist/clients/proxy.client.d.ts.map +1 -1
- package/dist/clients/proxy.client.js.map +1 -1
- package/dist/constants.d.ts +7 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +7 -1
- package/dist/constants.js.map +1 -1
- package/dist/context.d.ts +5 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +9 -0
- package/dist/context.js.map +1 -1
- package/dist/dist/adapters/skedulo-metadata-adapter.d.ts +3 -0
- package/dist/dist/adapters/skedulo-metadata-adapter.d.ts.map +1 -0
- package/dist/dist/adapters/skedulo-metadata-adapter.js +57 -0
- package/dist/dist/adapters/skedulo-metadata-adapter.js.map +1 -0
- package/dist/dist/adapters/skedulo-metadata.adapter.d.ts +3 -0
- package/dist/dist/adapters/skedulo-metadata.adapter.d.ts.map +1 -0
- package/dist/dist/adapters/skedulo-metadata.adapter.js +57 -0
- package/dist/dist/adapters/skedulo-metadata.adapter.js.map +1 -0
- package/dist/dist/adapters/skedulo.adapter.d.ts +15 -0
- package/dist/dist/adapters/skedulo.adapter.d.ts.map +1 -0
- package/dist/dist/adapters/skedulo.adapter.js +213 -0
- package/dist/dist/adapters/skedulo.adapter.js.map +1 -0
- package/dist/dist/browser.d.ts +12 -0
- package/dist/dist/browser.d.ts.map +1 -0
- package/dist/dist/browser.js +9 -0
- package/dist/dist/browser.js.map +1 -0
- package/dist/dist/clients/dataflow-client.d.ts +18 -0
- package/dist/dist/clients/dataflow-client.d.ts.map +1 -0
- package/dist/dist/clients/dataflow-client.js +43 -0
- package/dist/dist/clients/dataflow-client.js.map +1 -0
- package/dist/dist/clients/dataflow.client.d.ts +19 -0
- package/dist/dist/clients/dataflow.client.d.ts.map +1 -0
- package/dist/dist/clients/dataflow.client.js +28 -0
- package/dist/dist/clients/dataflow.client.js.map +1 -0
- package/dist/dist/clients/proxy-client.d.ts +13 -0
- package/dist/dist/clients/proxy-client.d.ts.map +1 -0
- package/dist/dist/clients/proxy-client.js +20 -0
- package/dist/dist/clients/proxy-client.js.map +1 -0
- package/dist/dist/clients/proxy.client.d.ts +13 -0
- package/dist/dist/clients/proxy.client.d.ts.map +1 -0
- package/dist/dist/clients/proxy.client.js +21 -0
- package/dist/dist/clients/proxy.client.js.map +1 -0
- package/dist/dist/constants.d.ts +17 -0
- package/dist/dist/constants.d.ts.map +1 -0
- package/dist/dist/constants.js +20 -0
- package/dist/dist/constants.js.map +1 -0
- package/dist/dist/context.d.ts +19 -0
- package/dist/dist/context.d.ts.map +1 -0
- package/dist/dist/context.js +40 -0
- package/dist/dist/context.js.map +1 -0
- package/dist/dist/handlers/metadata.handler.d.ts +17 -0
- package/dist/dist/handlers/metadata.handler.d.ts.map +1 -0
- package/dist/dist/handlers/metadata.handler.js +50 -0
- package/dist/dist/handlers/metadata.handler.js.map +1 -0
- package/dist/dist/index.d.ts +18 -0
- package/dist/dist/index.d.ts.map +1 -0
- package/dist/dist/index.js +48 -0
- package/dist/dist/index.js.map +1 -0
- package/dist/dist/interfaces/adapter.interface.d.ts +122 -0
- package/dist/dist/interfaces/adapter.interface.d.ts.map +1 -0
- package/dist/dist/interfaces/adapter.interface.js +3 -0
- package/dist/dist/interfaces/adapter.interface.js.map +1 -0
- package/dist/dist/interfaces/data-flow-spec.interface.d.ts +22 -0
- package/dist/dist/interfaces/data-flow-spec.interface.d.ts.map +1 -0
- package/dist/dist/interfaces/data-flow-spec.interface.js +3 -0
- package/dist/dist/interfaces/data-flow-spec.interface.js.map +1 -0
- package/dist/dist/interfaces/field-mapping.interface.d.ts +26 -0
- package/dist/dist/interfaces/field-mapping.interface.d.ts.map +1 -0
- package/dist/dist/interfaces/field-mapping.interface.js +3 -0
- package/dist/dist/interfaces/field-mapping.interface.js.map +1 -0
- package/dist/dist/interfaces/filter.interface.d.ts +19 -0
- package/dist/dist/interfaces/filter.interface.d.ts.map +1 -0
- package/dist/dist/interfaces/filter.interface.js +20 -0
- package/dist/dist/interfaces/filter.interface.js.map +1 -0
- package/dist/dist/interfaces/integration-capabilities.interface.d.ts +13 -0
- package/dist/dist/interfaces/integration-capabilities.interface.d.ts.map +1 -0
- package/dist/dist/interfaces/integration-capabilities.interface.js +3 -0
- package/dist/dist/interfaces/integration-capabilities.interface.js.map +1 -0
- package/dist/dist/interfaces/lookup-rule.interface.d.ts +14 -0
- package/dist/dist/interfaces/lookup-rule.interface.d.ts.map +1 -0
- package/dist/dist/interfaces/lookup-rule.interface.js +3 -0
- package/dist/dist/interfaces/lookup-rule.interface.js.map +1 -0
- package/dist/dist/interfaces/mapped-event.interface.d.ts +9 -0
- package/dist/dist/interfaces/mapped-event.interface.d.ts.map +1 -0
- package/dist/dist/interfaces/mapped-event.interface.js +3 -0
- package/dist/dist/interfaces/mapped-event.interface.js.map +1 -0
- package/dist/dist/interfaces/mapping-config.interface.d.ts +26 -0
- package/dist/dist/interfaces/mapping-config.interface.d.ts.map +1 -0
- package/dist/dist/interfaces/mapping-config.interface.js +3 -0
- package/dist/dist/interfaces/mapping-config.interface.js.map +1 -0
- package/dist/dist/interfaces/metadata-adapter.interface.d.ts +26 -0
- package/dist/dist/interfaces/metadata-adapter.interface.d.ts.map +1 -0
- package/dist/dist/interfaces/metadata-adapter.interface.js +3 -0
- package/dist/dist/interfaces/metadata-adapter.interface.js.map +1 -0
- package/dist/dist/interfaces/pull-adapter.interface.d.ts +50 -0
- package/dist/dist/interfaces/pull-adapter.interface.d.ts.map +1 -0
- package/dist/dist/interfaces/pull-adapter.interface.js +3 -0
- package/dist/dist/interfaces/pull-adapter.interface.js.map +1 -0
- package/dist/dist/interfaces/push-adapter.interface.d.ts +28 -0
- package/dist/dist/interfaces/push-adapter.interface.d.ts.map +1 -0
- package/dist/dist/interfaces/push-adapter.interface.js +3 -0
- package/dist/dist/interfaces/push-adapter.interface.js.map +1 -0
- package/dist/dist/interfaces/sample-fetcher.interface.d.ts +4 -0
- package/dist/dist/interfaces/sample-fetcher.interface.d.ts.map +1 -0
- package/dist/dist/interfaces/sample-fetcher.interface.js +3 -0
- package/dist/dist/interfaces/sample-fetcher.interface.js.map +1 -0
- package/dist/dist/interfaces/sync-result.interface.d.ts +19 -0
- package/dist/dist/interfaces/sync-result.interface.d.ts.map +1 -0
- package/dist/dist/interfaces/sync-result.interface.js +3 -0
- package/dist/dist/interfaces/sync-result.interface.js.map +1 -0
- package/dist/dist/interfaces/target-adapter.interface.d.ts +10 -0
- package/dist/dist/interfaces/target-adapter.interface.d.ts.map +1 -0
- package/dist/dist/interfaces/target-adapter.interface.js +3 -0
- package/dist/dist/interfaces/target-adapter.interface.js.map +1 -0
- package/dist/dist/mocks/hubspot.d.ts +4 -0
- package/dist/dist/mocks/hubspot.d.ts.map +1 -0
- package/dist/dist/mocks/hubspot.js +61 -0
- package/dist/dist/mocks/hubspot.js.map +1 -0
- package/dist/dist/provenance.d.ts +3 -0
- package/dist/dist/provenance.d.ts.map +1 -0
- package/dist/dist/provenance.js +12 -0
- package/dist/dist/provenance.js.map +1 -0
- package/dist/dist/services/dataflow-service.d.ts +21 -0
- package/dist/dist/services/dataflow-service.d.ts.map +1 -0
- package/dist/dist/services/dataflow-service.js +47 -0
- package/dist/dist/services/dataflow-service.js.map +1 -0
- package/dist/dist/services/dataflow.service.d.ts +20 -0
- package/dist/dist/services/dataflow.service.d.ts.map +1 -0
- package/dist/dist/services/dataflow.service.js +52 -0
- package/dist/dist/services/dataflow.service.js.map +1 -0
- package/dist/dist/services/eql.d.ts +2 -0
- package/dist/dist/services/eql.d.ts.map +1 -0
- package/dist/dist/services/eql.js +10 -0
- package/dist/dist/services/eql.js.map +1 -0
- package/dist/dist/services/mapping-service.d.ts +14 -0
- package/dist/dist/services/mapping-service.d.ts.map +1 -0
- package/dist/dist/services/mapping-service.js +88 -0
- package/dist/dist/services/mapping-service.js.map +1 -0
- package/dist/dist/services/mapping.service.d.ts +14 -0
- package/dist/dist/services/mapping.service.d.ts.map +1 -0
- package/dist/dist/services/mapping.service.js +89 -0
- package/dist/dist/services/mapping.service.js.map +1 -0
- package/dist/dist/services/outbound-service.d.ts +14 -0
- package/dist/dist/services/outbound-service.d.ts.map +1 -0
- package/dist/dist/services/outbound-service.js +65 -0
- package/dist/dist/services/outbound-service.js.map +1 -0
- package/dist/dist/services/paragon-workflow-service.d.ts +7 -0
- package/dist/dist/services/paragon-workflow-service.d.ts.map +1 -0
- package/dist/dist/services/paragon-workflow-service.js +68 -0
- package/dist/dist/services/paragon-workflow-service.js.map +1 -0
- package/dist/dist/services/paragon-workflow.service.d.ts +8 -0
- package/dist/dist/services/paragon-workflow.service.d.ts.map +1 -0
- package/dist/dist/services/paragon-workflow.service.js +31 -0
- package/dist/dist/services/paragon-workflow.service.js.map +1 -0
- package/dist/dist/services/preview-service.d.ts +11 -0
- package/dist/dist/services/preview-service.d.ts.map +1 -0
- package/dist/dist/services/preview-service.js +66 -0
- package/dist/dist/services/preview-service.js.map +1 -0
- package/dist/dist/services/preview.service.d.ts +11 -0
- package/dist/dist/services/preview.service.d.ts.map +1 -0
- package/dist/dist/services/preview.service.js +74 -0
- package/dist/dist/services/preview.service.js.map +1 -0
- package/dist/dist/services/pull-service.d.ts +9 -0
- package/dist/dist/services/pull-service.d.ts.map +1 -0
- package/dist/dist/services/pull-service.js +207 -0
- package/dist/dist/services/pull-service.js.map +1 -0
- package/dist/dist/services/pull.service.d.ts +11 -0
- package/dist/dist/services/pull.service.d.ts.map +1 -0
- package/dist/dist/services/pull.service.js +200 -0
- package/dist/dist/services/pull.service.js.map +1 -0
- package/dist/dist/services/push-service.d.ts +16 -0
- package/dist/dist/services/push-service.d.ts.map +1 -0
- package/dist/dist/services/push-service.js +76 -0
- package/dist/dist/services/push-service.js.map +1 -0
- package/dist/dist/services/push.service.d.ts +19 -0
- package/dist/dist/services/push.service.d.ts.map +1 -0
- package/dist/dist/services/push.service.js +186 -0
- package/dist/dist/services/push.service.js.map +1 -0
- package/dist/dist/services/scheduled-pull-service.d.ts +7 -0
- package/dist/dist/services/scheduled-pull-service.d.ts.map +1 -0
- package/dist/dist/services/scheduled-pull-service.js +58 -0
- package/dist/dist/services/scheduled-pull-service.js.map +1 -0
- package/dist/dist/services/split-filter.d.ts +3 -0
- package/dist/dist/services/split-filter.d.ts.map +1 -0
- package/dist/dist/services/split-filter.js +50 -0
- package/dist/dist/services/split-filter.js.map +1 -0
- package/dist/dist/services/sync-runner.d.ts +22 -0
- package/dist/dist/services/sync-runner.d.ts.map +1 -0
- package/dist/dist/services/sync-runner.js +110 -0
- package/dist/dist/services/sync-runner.js.map +1 -0
- package/dist/dist/services/sync.service.d.ts +21 -0
- package/dist/dist/services/sync.service.d.ts.map +1 -0
- package/dist/dist/services/sync.service.js +166 -0
- package/dist/dist/services/sync.service.js.map +1 -0
- package/dist/dist/types.d.ts +11 -0
- package/dist/dist/types.d.ts.map +1 -0
- package/dist/dist/types.js +6 -0
- package/dist/dist/types.js.map +1 -0
- package/dist/dist/utils/compileFilter.d.ts +3 -0
- package/dist/dist/utils/compileFilter.d.ts.map +1 -0
- package/dist/dist/utils/compileFilter.js +73 -0
- package/dist/dist/utils/compileFilter.js.map +1 -0
- package/dist/dist/utils/normalizeDataFlow.d.ts +3 -0
- package/dist/dist/utils/normalizeDataFlow.d.ts.map +1 -0
- package/dist/dist/utils/normalizeDataFlow.js +30 -0
- package/dist/dist/utils/normalizeDataFlow.js.map +1 -0
- package/dist/dist/utils.d.ts +2 -0
- package/dist/dist/utils.d.ts.map +1 -0
- package/dist/dist/utils.js +10 -0
- package/dist/dist/utils.js.map +1 -0
- package/dist/handlers/metadata.handler.d.ts +0 -4
- package/dist/handlers/metadata.handler.d.ts.map +1 -1
- package/dist/handlers/metadata.handler.js +8 -12
- package/dist/handlers/metadata.handler.js.map +1 -1
- package/dist/index.d.ts +15 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -4
- package/dist/index.js.map +1 -1
- package/dist/interfaces/adapter.interface.d.ts +54 -1
- package/dist/interfaces/adapter.interface.d.ts.map +1 -1
- package/dist/interfaces/integration-capabilities.interface.d.ts +4 -9
- package/dist/interfaces/integration-capabilities.interface.d.ts.map +1 -1
- package/dist/interfaces/mapping-config.interface.d.ts +26 -0
- package/dist/interfaces/mapping-config.interface.d.ts.map +1 -0
- package/dist/interfaces/mapping-config.interface.js +3 -0
- package/dist/interfaces/mapping-config.interface.js.map +1 -0
- package/dist/interfaces/metadata-adapter.interface.d.ts +26 -0
- package/dist/interfaces/metadata-adapter.interface.d.ts.map +1 -0
- package/dist/interfaces/metadata-adapter.interface.js +3 -0
- package/dist/interfaces/metadata-adapter.interface.js.map +1 -0
- package/dist/interfaces/pull-adapter.interface.d.ts +50 -0
- package/dist/interfaces/pull-adapter.interface.d.ts.map +1 -0
- package/dist/interfaces/pull-adapter.interface.js +3 -0
- package/dist/interfaces/pull-adapter.interface.js.map +1 -0
- package/dist/interfaces/push-adapter.interface.d.ts +28 -0
- package/dist/interfaces/push-adapter.interface.d.ts.map +1 -0
- package/dist/interfaces/push-adapter.interface.js +3 -0
- package/dist/interfaces/push-adapter.interface.js.map +1 -0
- package/dist/interfaces/sync-flow-strategy.interface.d.ts +2 -1
- package/dist/interfaces/sync-flow-strategy.interface.d.ts.map +1 -1
- package/dist/interfaces/sync-result.interface.d.ts +1 -1
- package/dist/interfaces/sync-result.interface.d.ts.map +1 -1
- package/dist/interfaces/target-adapter.interface.d.ts +10 -0
- package/dist/interfaces/target-adapter.interface.d.ts.map +1 -0
- package/dist/interfaces/target-adapter.interface.js +3 -0
- package/dist/interfaces/target-adapter.interface.js.map +1 -0
- package/dist/mocks/hubspot.d.ts +4 -0
- package/dist/mocks/hubspot.d.ts.map +1 -0
- package/dist/mocks/hubspot.js +61 -0
- package/dist/mocks/hubspot.js.map +1 -0
- package/dist/provenance.d.ts +3 -0
- package/dist/provenance.d.ts.map +1 -0
- package/dist/provenance.js +12 -0
- package/dist/provenance.js.map +1 -0
- package/dist/services/dataflow-service.d.ts +21 -0
- package/dist/services/dataflow-service.d.ts.map +1 -0
- package/dist/services/dataflow-service.js +47 -0
- package/dist/services/dataflow-service.js.map +1 -0
- package/dist/services/eql.d.ts +2 -0
- package/dist/services/eql.d.ts.map +1 -0
- package/dist/services/eql.js +10 -0
- package/dist/services/eql.js.map +1 -0
- package/dist/services/external-id-sync.strategy.d.ts +1 -1
- package/dist/services/external-id-sync.strategy.d.ts.map +1 -1
- package/dist/services/external-id-sync.strategy.js +18 -9
- package/dist/services/external-id-sync.strategy.js.map +1 -1
- package/dist/services/id-mapping-sync.strategy.d.ts.map +1 -1
- package/dist/services/id-mapping-sync.strategy.js +88 -20
- package/dist/services/id-mapping-sync.strategy.js.map +1 -1
- package/dist/services/id-mapping.service.js +11 -11
- package/dist/services/id-mapping.service.js.map +1 -1
- package/dist/services/mapping-service.d.ts +14 -0
- package/dist/services/mapping-service.d.ts.map +1 -0
- package/dist/services/mapping-service.js +88 -0
- package/dist/services/mapping-service.js.map +1 -0
- package/dist/services/mapping.service.d.ts +14 -0
- package/dist/services/mapping.service.d.ts.map +1 -0
- package/dist/services/mapping.service.js +89 -0
- package/dist/services/mapping.service.js.map +1 -0
- package/dist/services/outbound-service.d.ts +14 -0
- package/dist/services/outbound-service.d.ts.map +1 -0
- package/dist/services/outbound-service.js +65 -0
- package/dist/services/outbound-service.js.map +1 -0
- package/dist/services/paragon-workflow-service.d.ts +7 -0
- package/dist/services/paragon-workflow-service.d.ts.map +1 -0
- package/dist/services/paragon-workflow-service.js +68 -0
- package/dist/services/paragon-workflow-service.js.map +1 -0
- package/dist/services/paragon-workflow.service.d.ts +8 -0
- package/dist/services/paragon-workflow.service.d.ts.map +1 -0
- package/dist/services/paragon-workflow.service.js +31 -0
- package/dist/services/paragon-workflow.service.js.map +1 -0
- package/dist/services/preview-service.d.ts +11 -0
- package/dist/services/preview-service.d.ts.map +1 -0
- package/dist/services/preview-service.js +66 -0
- package/dist/services/preview-service.js.map +1 -0
- package/dist/services/pull-service.d.ts +9 -0
- package/dist/services/pull-service.d.ts.map +1 -0
- package/dist/services/pull-service.js +207 -0
- package/dist/services/pull-service.js.map +1 -0
- package/dist/services/pull.service.d.ts +11 -0
- package/dist/services/pull.service.d.ts.map +1 -0
- package/dist/services/pull.service.js +200 -0
- package/dist/services/pull.service.js.map +1 -0
- package/dist/services/push-service.d.ts +16 -0
- package/dist/services/push-service.d.ts.map +1 -0
- package/dist/services/push-service.js +76 -0
- package/dist/services/push-service.js.map +1 -0
- package/dist/services/push.service.d.ts +19 -0
- package/dist/services/push.service.d.ts.map +1 -0
- package/dist/services/push.service.js +186 -0
- package/dist/services/push.service.js.map +1 -0
- package/dist/services/routes.factory.d.ts +19 -0
- package/dist/services/routes.factory.d.ts.map +1 -0
- package/dist/services/routes.factory.js +352 -0
- package/dist/services/routes.factory.js.map +1 -0
- package/dist/services/scheduled-pull-service.d.ts +7 -0
- package/dist/services/scheduled-pull-service.d.ts.map +1 -0
- package/dist/services/scheduled-pull-service.js +58 -0
- package/dist/services/scheduled-pull-service.js.map +1 -0
- package/dist/services/split-filter.d.ts +3 -0
- package/dist/services/split-filter.d.ts.map +1 -0
- package/dist/services/split-filter.js +50 -0
- package/dist/services/split-filter.js.map +1 -0
- package/dist/services/sync-runner.d.ts +6 -0
- package/dist/services/sync-runner.d.ts.map +1 -1
- package/dist/services/sync-runner.js +46 -20
- package/dist/services/sync-runner.js.map +1 -1
- package/dist/testing/adapter-contract.d.ts +24 -0
- package/dist/testing/adapter-contract.d.ts.map +1 -0
- package/dist/testing/adapter-contract.js +82 -0
- package/dist/testing/adapter-contract.js.map +1 -0
- package/dist/utils/auth.d.ts +6 -0
- package/dist/utils/auth.d.ts.map +1 -0
- package/dist/utils/auth.js +18 -0
- package/dist/utils/auth.js.map +1 -0
- package/dist/utils/helpers.d.ts +23 -0
- package/dist/utils/helpers.d.ts.map +1 -0
- package/dist/utils/helpers.js +118 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/http-response.d.ts +16 -0
- package/dist/utils/http-response.d.ts.map +1 -0
- package/dist/utils/http-response.js +36 -0
- package/dist/utils/http-response.js.map +1 -0
- package/dist/utils/query-string.d.ts +2 -0
- package/dist/utils/query-string.d.ts.map +1 -0
- package/dist/utils/query-string.js +13 -0
- package/dist/utils/query-string.js.map +1 -0
- package/dist/utils/sked-handler.d.ts +22 -0
- package/dist/utils/sked-handler.d.ts.map +1 -0
- package/dist/utils/sked-handler.js +41 -0
- package/dist/utils/sked-handler.js.map +1 -0
- package/dist/utils/strings.d.ts +2 -0
- package/dist/utils/strings.d.ts.map +1 -0
- package/dist/utils/strings.js +14 -0
- package/dist/utils/strings.js.map +1 -0
- package/dist/utils/unwrap-proxy.d.ts +2 -0
- package/dist/utils/unwrap-proxy.d.ts.map +1 -0
- package/dist/utils/unwrap-proxy.js +12 -0
- package/dist/utils/unwrap-proxy.js.map +1 -0
- package/package.json +1 -1
- package/yarn.lock +5 -0
- package/.claude/worktrees/agent-a16acadaf5412dffd/jest.config.js +0 -12
- package/.claude/worktrees/agent-a33c3e4636d488e49/jest.config.js +0 -12
- package/.claude/worktrees/agent-a5b1d2ffa4ceef4a6/jest.config.js +0 -12
- package/.claude/worktrees/agent-aa1db4c22eabbde8e/jest.config.js +0 -12
- package/.claude/worktrees/agent-ac197ae8c69d7061c/jest.config.js +0 -12
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SyncRunner = exports.AdapterNotRegisteredError = void 0;
|
|
3
|
+
exports.SyncRunner = exports.AdapterNotRegisteredError = exports.AdapterRoleError = void 0;
|
|
4
|
+
const constants_1 = require("../constants");
|
|
5
|
+
const adapter_registry_1 = require("../adapters/adapter-registry");
|
|
4
6
|
const external_id_sync_strategy_1 = require("./external-id-sync.strategy");
|
|
5
7
|
const id_mapping_sync_strategy_1 = require("./id-mapping-sync.strategy");
|
|
6
8
|
const id_mapping_service_1 = require("./id-mapping.service");
|
|
@@ -29,6 +31,13 @@ const sync_service_1 = require("./sync.service");
|
|
|
29
31
|
//
|
|
30
32
|
// // Event-driven:
|
|
31
33
|
// await runner.handleEvent({ event, options: { lookupStrategy: 'idMapping' } }, ctx)
|
|
34
|
+
class AdapterRoleError extends Error {
|
|
35
|
+
constructor(systemName, requiredRole) {
|
|
36
|
+
super(`adapter "${systemName}" does not support role: "${requiredRole}"`);
|
|
37
|
+
this.name = 'AdapterRoleError';
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.AdapterRoleError = AdapterRoleError;
|
|
32
41
|
class AdapterNotRegisteredError extends Error {
|
|
33
42
|
constructor(systemName) {
|
|
34
43
|
super(`adapter not registered for system: "${systemName}"`);
|
|
@@ -37,11 +46,13 @@ class AdapterNotRegisteredError extends Error {
|
|
|
37
46
|
}
|
|
38
47
|
exports.AdapterNotRegisteredError = AdapterNotRegisteredError;
|
|
39
48
|
class SyncRunner {
|
|
40
|
-
|
|
41
|
-
|
|
49
|
+
// Accept either an existing AdapterRegistry (shared with the consumer's
|
|
50
|
+
// metadata handler — single source of truth) or none (built up via register()).
|
|
51
|
+
constructor(registry) {
|
|
52
|
+
this.registry = registry !== null && registry !== void 0 ? registry : new adapter_registry_1.AdapterRegistry({});
|
|
42
53
|
}
|
|
43
54
|
register(systemName, adapter) {
|
|
44
|
-
this.registry.
|
|
55
|
+
this.registry.register(systemName, adapter);
|
|
45
56
|
}
|
|
46
57
|
// Run a full batch sync for a known flow.
|
|
47
58
|
// Fetches the flow by ID, resolves adapters, delegates to SyncService.run().
|
|
@@ -55,8 +66,8 @@ class SyncRunner {
|
|
|
55
66
|
ctx.logger.warn(`sync_runner_run: flow ${args.flowId} not found`);
|
|
56
67
|
return { succeeded: 0, filtered: 0, skipped: 0, failed: 0, dlqWrites: 0 };
|
|
57
68
|
}
|
|
58
|
-
const source = this._resolve((_b = (_a = flow.sourceSystem) !== null && _a !== void 0 ? _a : args.sourceSystem) !== null && _b !== void 0 ? _b : null);
|
|
59
|
-
const target = this._resolve((_d = (_c = flow.targetSystem) !== null && _c !== void 0 ? _c : args.targetSystem) !== null && _d !== void 0 ? _d : null);
|
|
69
|
+
const source = this._resolve((_b = (_a = flow.sourceSystem) !== null && _a !== void 0 ? _a : args.sourceSystem) !== null && _b !== void 0 ? _b : null, constants_1.AdapterRole.SOURCE);
|
|
70
|
+
const target = this._resolve((_d = (_c = flow.targetSystem) !== null && _c !== void 0 ? _c : args.targetSystem) !== null && _d !== void 0 ? _d : null, constants_1.AdapterRole.TARGET);
|
|
60
71
|
const strategy = createSyncStrategy((_e = args.options) !== null && _e !== void 0 ? _e : {}, ctx);
|
|
61
72
|
// Cursor computation: prefer flow.lastRunAt over caller-supplied since.
|
|
62
73
|
// When lastRunAt is set, args.since is ignored entirely.
|
|
@@ -65,19 +76,25 @@ class SyncRunner {
|
|
|
65
76
|
const overlapMs = (_h = (_g = args.options) === null || _g === void 0 ? void 0 : _g.cursorOverlapMs) !== null && _h !== void 0 ? _h : 60000;
|
|
66
77
|
const effectiveCursor = lastRunAt ? new Date(lastRunAt.getTime() - overlapMs) : null; // null = full sync (no prior run)
|
|
67
78
|
const result = await new sync_service_1.SyncService(source, target, strategy).run({ flow, since: effectiveCursor }, ctx);
|
|
68
|
-
// Cursor persistence:
|
|
69
|
-
//
|
|
70
|
-
//
|
|
71
|
-
|
|
72
|
-
|
|
79
|
+
// Cursor persistence: only advance when no records failed in this run.
|
|
80
|
+
// Advancing on partial failure would skip the failed records on the next run,
|
|
81
|
+
// since the new cursor would be past their LastModifiedDate.
|
|
82
|
+
// Zero failures with zero succeeded is still success — the window had no changes.
|
|
83
|
+
if (result.failed === 0) {
|
|
84
|
+
try {
|
|
85
|
+
await ctx.dataFlowService.updateCursor(args.flowId, runStartedAt);
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
ctx.logger.error(`update_cursor_failed: flowId=${args.flowId} error="${err instanceof Error ? err.message : String(err)}" — next run will re-process same window`);
|
|
89
|
+
}
|
|
73
90
|
}
|
|
74
|
-
|
|
75
|
-
ctx.logger.
|
|
91
|
+
else {
|
|
92
|
+
ctx.logger.warn(`cursor_not_advanced: flowId=${args.flowId} failed=${result.failed} — next run will re-process same window so failed records can retry`);
|
|
76
93
|
}
|
|
77
94
|
return result;
|
|
78
95
|
}
|
|
79
96
|
catch (err) {
|
|
80
|
-
if (err instanceof AdapterNotRegisteredError) {
|
|
97
|
+
if (err instanceof AdapterNotRegisteredError || err instanceof AdapterRoleError) {
|
|
81
98
|
ctx.logger.error(`sync_runner_run: ${err.message} flowId=${args.flowId}`);
|
|
82
99
|
return { succeeded: 0, filtered: 0, skipped: 0, failed: 1, dlqWrites: 0 };
|
|
83
100
|
}
|
|
@@ -103,13 +120,13 @@ class SyncRunner {
|
|
|
103
120
|
const results = [];
|
|
104
121
|
for (const flow of sorted) {
|
|
105
122
|
try {
|
|
106
|
-
const target = this._resolve((_a = flow.targetSystem) !== null && _a !== void 0 ? _a : null);
|
|
123
|
+
const target = this._resolve((_a = flow.targetSystem) !== null && _a !== void 0 ? _a : null, constants_1.AdapterRole.TARGET);
|
|
107
124
|
const strategy = createSyncStrategy((_b = args.options) !== null && _b !== void 0 ? _b : {}, ctx);
|
|
108
125
|
const result = await new sync_service_1.SyncService(null, target, strategy).handleEvent({ event, flow }, ctx);
|
|
109
126
|
results.push(result);
|
|
110
127
|
}
|
|
111
128
|
catch (err) {
|
|
112
|
-
if (err instanceof AdapterNotRegisteredError) {
|
|
129
|
+
if (err instanceof AdapterNotRegisteredError || err instanceof AdapterRoleError) {
|
|
113
130
|
ctx.logger.error(`sync_runner_event: ${err.message} flowId=${flow.id}`);
|
|
114
131
|
results.push({ status: 'failed', recordsProcessed: 0, error: err.message });
|
|
115
132
|
}
|
|
@@ -122,18 +139,27 @@ class SyncRunner {
|
|
|
122
139
|
}
|
|
123
140
|
return results;
|
|
124
141
|
}
|
|
125
|
-
_resolve(systemName) {
|
|
142
|
+
_resolve(systemName, role) {
|
|
143
|
+
var _a, _b;
|
|
126
144
|
if (!systemName)
|
|
127
145
|
throw new AdapterNotRegisteredError(String(systemName));
|
|
128
|
-
|
|
129
|
-
|
|
146
|
+
let adapter;
|
|
147
|
+
try {
|
|
148
|
+
adapter = this.registry.resolve(systemName);
|
|
149
|
+
}
|
|
150
|
+
catch (_c) {
|
|
130
151
|
throw new AdapterNotRegisteredError(systemName);
|
|
152
|
+
}
|
|
153
|
+
const roles = (_b = (_a = adapter.capabilities) === null || _a === void 0 ? void 0 : _a.roles) !== null && _b !== void 0 ? _b : [constants_1.AdapterRole.SOURCE, constants_1.AdapterRole.TARGET];
|
|
154
|
+
if (!roles.includes(role)) {
|
|
155
|
+
throw new AdapterRoleError(systemName, role);
|
|
156
|
+
}
|
|
131
157
|
return adapter;
|
|
132
158
|
}
|
|
133
159
|
}
|
|
134
160
|
exports.SyncRunner = SyncRunner;
|
|
135
161
|
function createSyncStrategy(options, _ctx) {
|
|
136
|
-
if (options.lookupStrategy ===
|
|
162
|
+
if (options.lookupStrategy === constants_1.LookupStrategy.IdMapping) {
|
|
137
163
|
return new id_mapping_sync_strategy_1.IdMappingSyncStrategy(new id_mapping_service_1.IdMappingService());
|
|
138
164
|
}
|
|
139
165
|
return new external_id_sync_strategy_1.ExternalIdSyncStrategy();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-runner.js","sourceRoot":"","sources":["../../src/services/sync-runner.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"sync-runner.js","sourceRoot":"","sources":["../../src/services/sync-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Adapter } from '../interfaces/adapter.interface';
|
|
2
|
+
import type { ProxyResult } from '../clients/proxy.client';
|
|
3
|
+
export interface AdapterContractConfig {
|
|
4
|
+
/** Factory producing a fresh adapter instance for each test. */
|
|
5
|
+
createAdapter: () => Adapter;
|
|
6
|
+
/**
|
|
7
|
+
* Override the expected default record ID field if your adapter
|
|
8
|
+
* customizes `getRecordIdField()`. Defaults to `'id'` — matches
|
|
9
|
+
* BaseAdapter's default.
|
|
10
|
+
*/
|
|
11
|
+
expectedRecordIdField?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function runAdapterContractTests(config: AdapterContractConfig): void;
|
|
14
|
+
/**
|
|
15
|
+
* Build a `ProxyResult` envelope for use in test mocks. Every test ends up
|
|
16
|
+
* writing `{ status: 200, headers: {}, output: ... }` by hand; this helper
|
|
17
|
+
* makes the intent obvious and lets you override status/headers when
|
|
18
|
+
* exercising stale-mapping or 503-retry paths.
|
|
19
|
+
*/
|
|
20
|
+
export declare function mockProxyResult<T>(output: T, overrides?: {
|
|
21
|
+
status?: number;
|
|
22
|
+
headers?: Record<string, string>;
|
|
23
|
+
}): ProxyResult<T>;
|
|
24
|
+
//# sourceMappingURL=adapter-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-contract.d.ts","sourceRoot":"","sources":["../../src/testing/adapter-contract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAsB3D,MAAM,WAAW,qBAAqB;IACpC,gEAAgE;IAChE,aAAa,EAAE,MAAM,OAAO,CAAC;IAC7B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAoE3E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,MAAM,EAAE,CAAC,EACT,SAAS,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAO,GACpE,WAAW,CAAC,CAAC,CAAC,CAMhB"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runAdapterContractTests = runAdapterContractTests;
|
|
4
|
+
exports.mockProxyResult = mockProxyResult;
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
function runAdapterContractTests(config) {
|
|
7
|
+
const { createAdapter, expectedRecordIdField = 'id' } = config;
|
|
8
|
+
describe('Adapter SDK contract', () => {
|
|
9
|
+
it('declares a non-empty integrationType', () => {
|
|
10
|
+
const adapter = createAdapter();
|
|
11
|
+
expect(typeof adapter.integrationType).toBe('string');
|
|
12
|
+
expect(adapter.integrationType.length).toBeGreaterThan(0);
|
|
13
|
+
});
|
|
14
|
+
it('declares capabilities.roles with at least one valid role', () => {
|
|
15
|
+
var _a;
|
|
16
|
+
const adapter = createAdapter();
|
|
17
|
+
const roles = (_a = adapter.capabilities) === null || _a === void 0 ? void 0 : _a.roles;
|
|
18
|
+
expect(Array.isArray(roles)).toBe(true);
|
|
19
|
+
expect(roles.length).toBeGreaterThan(0);
|
|
20
|
+
for (const role of roles) {
|
|
21
|
+
expect(Object.values(constants_1.AdapterRole)).toContain(role);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
it('declares a valid lookupStrategy when capabilities.lookupStrategy is set', () => {
|
|
25
|
+
var _a;
|
|
26
|
+
const adapter = createAdapter();
|
|
27
|
+
const ls = (_a = adapter.capabilities) === null || _a === void 0 ? void 0 : _a.lookupStrategy;
|
|
28
|
+
if (ls !== undefined) {
|
|
29
|
+
expect(Object.values(constants_1.LookupStrategy)).toContain(ls);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
it('getRecordIdField returns the expected field', () => {
|
|
33
|
+
var _a;
|
|
34
|
+
const adapter = createAdapter();
|
|
35
|
+
expect((_a = adapter.getRecordIdField) === null || _a === void 0 ? void 0 : _a.call(adapter)).toBe(expectedRecordIdField);
|
|
36
|
+
});
|
|
37
|
+
describe('buildMappingEntries default behaviour', () => {
|
|
38
|
+
it('returns [] for empty inputs', () => {
|
|
39
|
+
var _a;
|
|
40
|
+
const adapter = createAdapter();
|
|
41
|
+
expect((_a = adapter.buildMappingEntries) === null || _a === void 0 ? void 0 : _a.call(adapter, [], [])).toEqual([]);
|
|
42
|
+
});
|
|
43
|
+
it('zips sourceIds with outcome results in order', () => {
|
|
44
|
+
var _a;
|
|
45
|
+
const adapter = createAdapter();
|
|
46
|
+
const result = (_a = adapter.buildMappingEntries) === null || _a === void 0 ? void 0 : _a.call(adapter, ['s1', 's2'], [
|
|
47
|
+
{ status: 'ok', result: 't1' },
|
|
48
|
+
{ status: 'ok', result: 't2' },
|
|
49
|
+
]);
|
|
50
|
+
expect(result).toEqual([
|
|
51
|
+
{ sourceId: 's1', targetId: 't1' },
|
|
52
|
+
{ sourceId: 's2', targetId: 't2' },
|
|
53
|
+
]);
|
|
54
|
+
});
|
|
55
|
+
it('drops entries whose target result is empty or missing', () => {
|
|
56
|
+
var _a;
|
|
57
|
+
const adapter = createAdapter();
|
|
58
|
+
const result = (_a = adapter.buildMappingEntries) === null || _a === void 0 ? void 0 : _a.call(adapter, ['s1', 's2', 's3'], [
|
|
59
|
+
{ status: 'ok', result: 't1' },
|
|
60
|
+
{ status: 'ok', result: '' },
|
|
61
|
+
{ status: 'permanent', error: 'x' },
|
|
62
|
+
]);
|
|
63
|
+
expect(result).toEqual([{ sourceId: 's1', targetId: 't1' }]);
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Build a `ProxyResult` envelope for use in test mocks. Every test ends up
|
|
70
|
+
* writing `{ status: 200, headers: {}, output: ... }` by hand; this helper
|
|
71
|
+
* makes the intent obvious and lets you override status/headers when
|
|
72
|
+
* exercising stale-mapping or 503-retry paths.
|
|
73
|
+
*/
|
|
74
|
+
function mockProxyResult(output, overrides = {}) {
|
|
75
|
+
var _a, _b;
|
|
76
|
+
return {
|
|
77
|
+
status: (_a = overrides.status) !== null && _a !== void 0 ? _a : 200,
|
|
78
|
+
headers: (_b = overrides.headers) !== null && _b !== void 0 ? _b : {},
|
|
79
|
+
output,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=adapter-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-contract.js","sourceRoot":"","sources":["../../src/testing/adapter-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SkedResponse } from './http-response';
|
|
2
|
+
export declare function isAdminRequest(skedContext: unknown): boolean;
|
|
3
|
+
export declare function requireAdmin(skedContext: unknown, operation: string): SkedResponse<{
|
|
4
|
+
message: string;
|
|
5
|
+
}> | null;
|
|
6
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/utils/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,wBAAgB,cAAc,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAG5D;AAED,wBAAgB,YAAY,CAC1B,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,MAAM,GAChB,YAAY,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,CAM1C"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isAdminRequest = isAdminRequest;
|
|
4
|
+
exports.requireAdmin = requireAdmin;
|
|
5
|
+
function isAdminRequest(skedContext) {
|
|
6
|
+
var _a, _b;
|
|
7
|
+
const ctx = skedContext;
|
|
8
|
+
return ((_b = (_a = ctx === null || ctx === void 0 ? void 0 : ctx.userContext) === null || _a === void 0 ? void 0 : _a.userRoles) === null || _b === void 0 ? void 0 : _b.includes('administrator')) === true;
|
|
9
|
+
}
|
|
10
|
+
function requireAdmin(skedContext, operation) {
|
|
11
|
+
if (isAdminRequest(skedContext))
|
|
12
|
+
return null;
|
|
13
|
+
return {
|
|
14
|
+
status: 403,
|
|
15
|
+
body: { message: `${operation} requires admin privileges` },
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/utils/auth.ts"],"names":[],"mappings":";;AAEA,wCAGC;AAED,oCASC;AAdD,SAAgB,cAAc,CAAC,WAAoB;;IACjD,MAAM,GAAG,GAAG,WAA4E,CAAC;IACzF,OAAO,CAAA,MAAA,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,WAAW,0CAAE,SAAS,0CAAE,QAAQ,CAAC,eAAe,CAAC,MAAK,IAAI,CAAC;AACzE,CAAC;AAED,SAAgB,YAAY,CAC1B,WAAoB,EACpB,SAAiB;IAEjB,IAAI,cAAc,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,OAAO;QACL,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,SAAS,4BAA4B,EAAE;KAC5D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { DataFlow } from '../interfaces/data-flow-spec.interface';
|
|
2
|
+
export declare function escapeEqlString(value: string): string;
|
|
3
|
+
export declare function unwrapProxy<T = unknown>(raw: unknown): T;
|
|
4
|
+
export declare function getQueryParam(querystring: string | Record<string, string> | null | undefined, key: string): string | undefined;
|
|
5
|
+
export declare function humanizeFieldName(name: string): string;
|
|
6
|
+
export interface SkedResponse<T = unknown> {
|
|
7
|
+
status: number;
|
|
8
|
+
body: T;
|
|
9
|
+
}
|
|
10
|
+
export declare function okResponse<T extends object = Record<string, unknown>>(message: string, data?: T): SkedResponse<{
|
|
11
|
+
message: string;
|
|
12
|
+
} & T>;
|
|
13
|
+
export declare function errorResponse(error: unknown): SkedResponse<{
|
|
14
|
+
requestId: string;
|
|
15
|
+
status: number;
|
|
16
|
+
message: string;
|
|
17
|
+
}>;
|
|
18
|
+
export declare function isAdminRequest(skedContext: unknown): boolean;
|
|
19
|
+
export declare function requireAdmin(skedContext: unknown, operation: string): SkedResponse<{
|
|
20
|
+
message: string;
|
|
21
|
+
}> | null;
|
|
22
|
+
export declare function normalizeDataFlow(flow: DataFlow): DataFlow;
|
|
23
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAMvE,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD;AAID,wBAAgB,WAAW,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,CAAC,CAKxD;AAED,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,EAC/D,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,SAAS,CAMpB;AAID,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMtD;AAED,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,CAAC;CACT;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnE,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,CAAC,GACP,YAAY,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,CAAC,CAAC,CAKvC;AAKD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAAC;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAuBD;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAG5D;AAED,wBAAgB,YAAY,CAC1B,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,MAAM,GAChB,YAAY,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,CAM1C;AAoBD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAW1D"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.escapeEqlString = escapeEqlString;
|
|
15
|
+
exports.unwrapProxy = unwrapProxy;
|
|
16
|
+
exports.getQueryParam = getQueryParam;
|
|
17
|
+
exports.humanizeFieldName = humanizeFieldName;
|
|
18
|
+
exports.okResponse = okResponse;
|
|
19
|
+
exports.errorResponse = errorResponse;
|
|
20
|
+
exports.isAdminRequest = isAdminRequest;
|
|
21
|
+
exports.requireAdmin = requireAdmin;
|
|
22
|
+
exports.normalizeDataFlow = normalizeDataFlow;
|
|
23
|
+
const crypto_1 = require("crypto");
|
|
24
|
+
// EQL string literals use single quotes; the resulting filter is embedded in a
|
|
25
|
+
// GraphQL string literal that uses double quotes. Escape backslashes and single
|
|
26
|
+
// quotes only.
|
|
27
|
+
function escapeEqlString(value) {
|
|
28
|
+
return value.replace(/\\/g, '\\\\').replace(/'/g, "\\'");
|
|
29
|
+
}
|
|
30
|
+
// The Skedulo integration proxy wraps responses in { status, headers, output }.
|
|
31
|
+
// Returns .output when present, otherwise the raw value.
|
|
32
|
+
function unwrapProxy(raw) {
|
|
33
|
+
if (raw != null && typeof raw === 'object' && 'output' in raw) {
|
|
34
|
+
return raw.output;
|
|
35
|
+
}
|
|
36
|
+
return raw;
|
|
37
|
+
}
|
|
38
|
+
function getQueryParam(querystring, key) {
|
|
39
|
+
var _a;
|
|
40
|
+
if (!querystring)
|
|
41
|
+
return undefined;
|
|
42
|
+
if (typeof querystring === 'string') {
|
|
43
|
+
return (_a = new URLSearchParams(querystring).get(key)) !== null && _a !== void 0 ? _a : undefined;
|
|
44
|
+
}
|
|
45
|
+
return querystring[key];
|
|
46
|
+
}
|
|
47
|
+
// Convert camelCase / PascalCase identifier to a human-readable Title Case label.
|
|
48
|
+
// "firstName" -> "First Name", "AccountId" -> "Account Id", "email" -> "Email".
|
|
49
|
+
function humanizeFieldName(name) {
|
|
50
|
+
if (!name)
|
|
51
|
+
return '';
|
|
52
|
+
return name
|
|
53
|
+
.replace(/([A-Z])/g, ' $1')
|
|
54
|
+
.replace(/^./, (c) => c.toUpperCase())
|
|
55
|
+
.trim();
|
|
56
|
+
}
|
|
57
|
+
function okResponse(message, data) {
|
|
58
|
+
return {
|
|
59
|
+
status: 200,
|
|
60
|
+
body: Object.assign({ message }, (data !== null && data !== void 0 ? data : {})),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
// Build the Skedulo-integration-convention error envelope from any thrown value.
|
|
64
|
+
// Status precedence: Axios-style err.response.status → top-level err.status (if 4xx/5xx) → 500.
|
|
65
|
+
// Generates a requestId UUID and logs via console.error so support can correlate.
|
|
66
|
+
function errorResponse(error) {
|
|
67
|
+
var _a, _b, _c, _d;
|
|
68
|
+
const requestId = (0, crypto_1.randomUUID)();
|
|
69
|
+
const err = error;
|
|
70
|
+
const upstreamStatus = (_a = err === null || err === void 0 ? void 0 : err.response) === null || _a === void 0 ? void 0 : _a.status;
|
|
71
|
+
const carriedStatus = typeof (err === null || err === void 0 ? void 0 : err.status) === 'number' && err.status >= 400 && err.status <= 599
|
|
72
|
+
? err.status
|
|
73
|
+
: undefined;
|
|
74
|
+
const status = (_b = upstreamStatus !== null && upstreamStatus !== void 0 ? upstreamStatus : carriedStatus) !== null && _b !== void 0 ? _b : 500;
|
|
75
|
+
const message = (_c = err === null || err === void 0 ? void 0 : err.message) !== null && _c !== void 0 ? _c : String(error);
|
|
76
|
+
console.error(`[${requestId}] Error details:`, {
|
|
77
|
+
message,
|
|
78
|
+
status,
|
|
79
|
+
hasData: ((_d = err === null || err === void 0 ? void 0 : err.response) === null || _d === void 0 ? void 0 : _d.data) != null,
|
|
80
|
+
});
|
|
81
|
+
return { status, body: { requestId, status, message } };
|
|
82
|
+
}
|
|
83
|
+
function isAdminRequest(skedContext) {
|
|
84
|
+
var _a, _b;
|
|
85
|
+
const ctx = skedContext;
|
|
86
|
+
return ((_b = (_a = ctx === null || ctx === void 0 ? void 0 : ctx.userContext) === null || _a === void 0 ? void 0 : _a.userRoles) === null || _b === void 0 ? void 0 : _b.includes('administrator')) === true;
|
|
87
|
+
}
|
|
88
|
+
function requireAdmin(skedContext, operation) {
|
|
89
|
+
if (isAdminRequest(skedContext))
|
|
90
|
+
return null;
|
|
91
|
+
return {
|
|
92
|
+
status: 403,
|
|
93
|
+
body: { message: `${operation} requires admin privileges` },
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
// Older stored flows may have `property` instead of `field` in filter rules.
|
|
97
|
+
// Normalize to `field` so the integration service API accepts them on re-save.
|
|
98
|
+
function normalizeFilterRule(rule) {
|
|
99
|
+
var _a;
|
|
100
|
+
const _b = rule, { property, field } = _b, rest = __rest(_b, ["property", "field"]);
|
|
101
|
+
return Object.assign({ field: (_a = field !== null && field !== void 0 ? field : property) !== null && _a !== void 0 ? _a : '' }, rest);
|
|
102
|
+
}
|
|
103
|
+
function normalizeFilter(filter) {
|
|
104
|
+
if (!filter)
|
|
105
|
+
return filter;
|
|
106
|
+
return Object.assign(Object.assign({}, filter), { rules: filter.rules.map((r) => normalizeFilterRule(r)) });
|
|
107
|
+
}
|
|
108
|
+
function normalizeDataFlow(flow) {
|
|
109
|
+
return Object.assign(Object.assign({}, flow), { filter: normalizeFilter(flow.filter), lastRunAt: (() => {
|
|
110
|
+
if (!flow.lastRunAt)
|
|
111
|
+
return null;
|
|
112
|
+
if (flow.lastRunAt instanceof Date)
|
|
113
|
+
return flow.lastRunAt;
|
|
114
|
+
const d = new Date(flow.lastRunAt);
|
|
115
|
+
return isNaN(d.getTime()) ? null : d;
|
|
116
|
+
})() });
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface SkedResponse<T = unknown> {
|
|
2
|
+
status: number;
|
|
3
|
+
body: T;
|
|
4
|
+
}
|
|
5
|
+
export declare function createSuccessResponse<T extends object = Record<string, unknown>>(message: string, data?: T): SkedResponse<{
|
|
6
|
+
message: string;
|
|
7
|
+
} & T>;
|
|
8
|
+
export declare function handleError(error: unknown): SkedResponse<{
|
|
9
|
+
requestId: string;
|
|
10
|
+
status: number | null;
|
|
11
|
+
message: string;
|
|
12
|
+
}>;
|
|
13
|
+
export declare function handleMetadataError(err: unknown): SkedResponse<{
|
|
14
|
+
message: string;
|
|
15
|
+
} | unknown>;
|
|
16
|
+
//# sourceMappingURL=http-response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-response.d.ts","sourceRoot":"","sources":["../../src/utils/http-response.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,CAAC;CACT;AAED,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9E,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,CAAC,GACP,YAAY,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,CAAC,CAAC,CAKvC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAAC;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAgBD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,CAK7F"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createSuccessResponse = createSuccessResponse;
|
|
4
|
+
exports.handleError = handleError;
|
|
5
|
+
exports.handleMetadataError = handleMetadataError;
|
|
6
|
+
const crypto_1 = require("crypto");
|
|
7
|
+
const metadata_handler_1 = require("../handlers/metadata.handler");
|
|
8
|
+
function createSuccessResponse(message, data) {
|
|
9
|
+
return {
|
|
10
|
+
status: 200,
|
|
11
|
+
body: Object.assign({ message }, (data !== null && data !== void 0 ? data : {})),
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function handleError(error) {
|
|
15
|
+
var _a, _b, _c;
|
|
16
|
+
const requestId = (0, crypto_1.randomUUID)();
|
|
17
|
+
const err = error;
|
|
18
|
+
const upstreamStatus = (_a = err === null || err === void 0 ? void 0 : err.response) === null || _a === void 0 ? void 0 : _a.status;
|
|
19
|
+
const message = (_b = err === null || err === void 0 ? void 0 : err.message) !== null && _b !== void 0 ? _b : String(error);
|
|
20
|
+
console.error(`[${requestId}] Error details:`, {
|
|
21
|
+
message,
|
|
22
|
+
status: upstreamStatus,
|
|
23
|
+
data: (_c = err === null || err === void 0 ? void 0 : err.response) === null || _c === void 0 ? void 0 : _c.data,
|
|
24
|
+
});
|
|
25
|
+
return {
|
|
26
|
+
status: upstreamStatus !== null && upstreamStatus !== void 0 ? upstreamStatus : 500,
|
|
27
|
+
body: { requestId, status: upstreamStatus !== null && upstreamStatus !== void 0 ? upstreamStatus : null, message },
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function handleMetadataError(err) {
|
|
31
|
+
if (err instanceof metadata_handler_1.MetadataHandlerError) {
|
|
32
|
+
return { status: err.status, body: { message: err.message } };
|
|
33
|
+
}
|
|
34
|
+
return handleError(err);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=http-response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-response.js","sourceRoot":"","sources":["../../src/utils/http-response.ts"],"names":[],"mappings":";;AAQA,sDAQC;AAED,kCAoBC;AAED,kDAKC;AA7CD,mCAAoC;AACpC,mEAAoE;AAOpE,SAAgB,qBAAqB,CACnC,OAAe,EACf,IAAQ;IAER,OAAO;QACL,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,gBAAE,OAAO,IAAK,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAK,EAAQ,CAAC,CAA6B;KACrE,CAAC;AACJ,CAAC;AAED,SAAgB,WAAW,CAAC,KAAc;;IAKxC,MAAM,SAAS,GAAG,IAAA,mBAAU,GAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,KAAoF,CAAC;IACjG,MAAM,cAAc,GAAG,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,0CAAE,MAAM,CAAC;IAC7C,MAAM,OAAO,GAAG,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,mCAAI,MAAM,CAAC,KAAK,CAAC,CAAC;IAE9C,OAAO,CAAC,KAAK,CAAC,IAAI,SAAS,kBAAkB,EAAE;QAC7C,OAAO;QACP,MAAM,EAAE,cAAc;QACtB,IAAI,EAAE,MAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,QAAQ,0CAAE,IAAI;KAC1B,CAAC,CAAC;IAEH,OAAO;QACL,MAAM,EAAE,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,GAAG;QAC7B,IAAI,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,IAAI,EAAE,OAAO,EAAE;KAC7D,CAAC;AACJ,CAAC;AAED,SAAgB,mBAAmB,CAAC,GAAY;IAC9C,IAAI,GAAG,YAAY,uCAAoB,EAAE,CAAC;QACxC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-string.d.ts","sourceRoot":"","sources":["../../src/utils/query-string.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,EAC/D,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,SAAS,CAMpB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getQueryParam = getQueryParam;
|
|
4
|
+
function getQueryParam(querystring, key) {
|
|
5
|
+
var _a;
|
|
6
|
+
if (!querystring)
|
|
7
|
+
return undefined;
|
|
8
|
+
if (typeof querystring === 'string') {
|
|
9
|
+
return (_a = new URLSearchParams(querystring).get(key)) !== null && _a !== void 0 ? _a : undefined;
|
|
10
|
+
}
|
|
11
|
+
return querystring[key];
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=query-string.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-string.js","sourceRoot":"","sources":["../../src/utils/query-string.ts"],"names":[],"mappings":";;AAAA,sCASC;AATD,SAAgB,aAAa,CAC3B,WAA+D,EAC/D,GAAW;;IAEX,IAAI,CAAC,WAAW;QAAE,OAAO,SAAS,CAAC;IACnC,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,MAAA,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,SAAS,CAAC;IAChE,CAAC;IACD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type HttpVerb = 'get' | 'post' | 'put' | 'patch' | 'delete';
|
|
2
|
+
export interface SkedRoute {
|
|
3
|
+
method: HttpVerb;
|
|
4
|
+
path: string;
|
|
5
|
+
handler: (body: Record<string, unknown>, headers: Record<string, string>, method: string, path: string, skedContext: unknown, querystring?: string | Record<string, string> | null) => Promise<{
|
|
6
|
+
status: number;
|
|
7
|
+
body?: unknown;
|
|
8
|
+
}>;
|
|
9
|
+
}
|
|
10
|
+
export interface SkedHandlerPayload {
|
|
11
|
+
method: string;
|
|
12
|
+
path: string;
|
|
13
|
+
headers: Record<string, string>;
|
|
14
|
+
body: Record<string, unknown>;
|
|
15
|
+
querystring?: string | Record<string, string> | null;
|
|
16
|
+
}
|
|
17
|
+
export interface SkedHandlerResponse {
|
|
18
|
+
status: number;
|
|
19
|
+
body?: unknown;
|
|
20
|
+
}
|
|
21
|
+
export declare function createSkedHandler(routes: SkedRoute[]): (payload: SkedHandlerPayload) => Promise<SkedHandlerResponse>;
|
|
22
|
+
//# sourceMappingURL=sked-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sked-handler.d.ts","sourceRoot":"","sources":["../../src/utils/sked-handler.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEnE,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,QAAQ,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CACP,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,OAAO,EACpB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,KACjD,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAClD;AAQD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CACtD;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAKD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EAAE,GAClB,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CA+B/D"}
|