@usherlabs/cex-broker 0.2.48 → 0.2.50

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 (26) hide show
  1. package/dist/commands/cex-canonical-orderbook-export.js +72 -358
  2. package/dist/commands/cex-canonical-orderbook-export.js.map +7 -19
  3. package/dist/commands/cli.js +224 -67
  4. package/dist/commands/market-data-vendor-backfill.js +975 -1198
  5. package/dist/commands/market-data-vendor-backfill.js.map +13 -25
  6. package/dist/helpers/logger.d.ts +4 -0
  7. package/dist/helpers/market-data-vendor-backfill/cryptohftdata.d.ts +3 -1
  8. package/dist/helpers/market-data-vendor-backfill/manifests.d.ts +58 -4
  9. package/dist/helpers/market-data-vendor-backfill/semantic-verification.d.ts +1 -0
  10. package/dist/helpers/otel.d.ts +1 -0
  11. package/dist/helpers/trace-context.d.ts +8 -0
  12. package/dist/index.js +183 -63
  13. package/dist/index.js.map +9 -8
  14. package/dist/market-data-preparation/fixtures/conformance-v2.json +8 -8
  15. package/dist/market-data-preparation/policies/capability-policy-v1.json +28 -0
  16. package/dist/market-data-preparation/policies/capability-policy.json +14 -3
  17. package/dist/market-data-preparation/policies/resource-policy-v1.json +16 -0
  18. package/dist/market-data-preparation/policies/resource-policy.json +3 -3
  19. package/dist/market-data-preparation.js +70 -359
  20. package/dist/market-data-preparation.js.map +9 -21
  21. package/dist/market-data-vendor-backfill/policies/capability-policy-v2.json +39 -0
  22. package/dist/market-data-vendor-backfill/policies/resource-policy-v2.json +16 -0
  23. package/dist/market-data-vendor-backfill.d.ts +2 -2
  24. package/dist/market-data-vendor-backfill.js +1528 -1750
  25. package/dist/market-data-vendor-backfill.js.map +13 -25
  26. package/package.json +1 -1
@@ -8257,241 +8257,6 @@ var require_src = __commonJS((exports) => {
8257
8257
  };
8258
8258
  });
8259
8259
 
8260
- // node_modules/@loglayer/transport-opentelemetry/node_modules/@opentelemetry/api-logs/build/src/types/LogRecord.js
8261
- var require_LogRecord = __commonJS((exports) => {
8262
- Object.defineProperty(exports, "__esModule", { value: true });
8263
- exports.SeverityNumber = undefined;
8264
- var SeverityNumber;
8265
- (function(SeverityNumber2) {
8266
- SeverityNumber2[SeverityNumber2["UNSPECIFIED"] = 0] = "UNSPECIFIED";
8267
- SeverityNumber2[SeverityNumber2["TRACE"] = 1] = "TRACE";
8268
- SeverityNumber2[SeverityNumber2["TRACE2"] = 2] = "TRACE2";
8269
- SeverityNumber2[SeverityNumber2["TRACE3"] = 3] = "TRACE3";
8270
- SeverityNumber2[SeverityNumber2["TRACE4"] = 4] = "TRACE4";
8271
- SeverityNumber2[SeverityNumber2["DEBUG"] = 5] = "DEBUG";
8272
- SeverityNumber2[SeverityNumber2["DEBUG2"] = 6] = "DEBUG2";
8273
- SeverityNumber2[SeverityNumber2["DEBUG3"] = 7] = "DEBUG3";
8274
- SeverityNumber2[SeverityNumber2["DEBUG4"] = 8] = "DEBUG4";
8275
- SeverityNumber2[SeverityNumber2["INFO"] = 9] = "INFO";
8276
- SeverityNumber2[SeverityNumber2["INFO2"] = 10] = "INFO2";
8277
- SeverityNumber2[SeverityNumber2["INFO3"] = 11] = "INFO3";
8278
- SeverityNumber2[SeverityNumber2["INFO4"] = 12] = "INFO4";
8279
- SeverityNumber2[SeverityNumber2["WARN"] = 13] = "WARN";
8280
- SeverityNumber2[SeverityNumber2["WARN2"] = 14] = "WARN2";
8281
- SeverityNumber2[SeverityNumber2["WARN3"] = 15] = "WARN3";
8282
- SeverityNumber2[SeverityNumber2["WARN4"] = 16] = "WARN4";
8283
- SeverityNumber2[SeverityNumber2["ERROR"] = 17] = "ERROR";
8284
- SeverityNumber2[SeverityNumber2["ERROR2"] = 18] = "ERROR2";
8285
- SeverityNumber2[SeverityNumber2["ERROR3"] = 19] = "ERROR3";
8286
- SeverityNumber2[SeverityNumber2["ERROR4"] = 20] = "ERROR4";
8287
- SeverityNumber2[SeverityNumber2["FATAL"] = 21] = "FATAL";
8288
- SeverityNumber2[SeverityNumber2["FATAL2"] = 22] = "FATAL2";
8289
- SeverityNumber2[SeverityNumber2["FATAL3"] = 23] = "FATAL3";
8290
- SeverityNumber2[SeverityNumber2["FATAL4"] = 24] = "FATAL4";
8291
- })(SeverityNumber = exports.SeverityNumber || (exports.SeverityNumber = {}));
8292
- });
8293
-
8294
- // node_modules/@loglayer/transport-opentelemetry/node_modules/@opentelemetry/api-logs/build/src/NoopLogger.js
8295
- var require_NoopLogger = __commonJS((exports) => {
8296
- Object.defineProperty(exports, "__esModule", { value: true });
8297
- exports.NOOP_LOGGER = exports.NoopLogger = undefined;
8298
-
8299
- class NoopLogger {
8300
- emit(_logRecord) {}
8301
- }
8302
- exports.NoopLogger = NoopLogger;
8303
- exports.NOOP_LOGGER = new NoopLogger;
8304
- });
8305
-
8306
- // node_modules/@loglayer/transport-opentelemetry/node_modules/@opentelemetry/api-logs/build/src/NoopLoggerProvider.js
8307
- var require_NoopLoggerProvider = __commonJS((exports) => {
8308
- Object.defineProperty(exports, "__esModule", { value: true });
8309
- exports.NOOP_LOGGER_PROVIDER = exports.NoopLoggerProvider = undefined;
8310
- var NoopLogger_1 = require_NoopLogger();
8311
-
8312
- class NoopLoggerProvider {
8313
- getLogger(_name, _version, _options) {
8314
- return new NoopLogger_1.NoopLogger;
8315
- }
8316
- }
8317
- exports.NoopLoggerProvider = NoopLoggerProvider;
8318
- exports.NOOP_LOGGER_PROVIDER = new NoopLoggerProvider;
8319
- });
8320
-
8321
- // node_modules/@loglayer/transport-opentelemetry/node_modules/@opentelemetry/api-logs/build/src/ProxyLogger.js
8322
- var require_ProxyLogger = __commonJS((exports) => {
8323
- Object.defineProperty(exports, "__esModule", { value: true });
8324
- exports.ProxyLogger = undefined;
8325
- var NoopLogger_1 = require_NoopLogger();
8326
-
8327
- class ProxyLogger {
8328
- constructor(_provider, name, version2, options) {
8329
- this._provider = _provider;
8330
- this.name = name;
8331
- this.version = version2;
8332
- this.options = options;
8333
- }
8334
- emit(logRecord) {
8335
- this._getLogger().emit(logRecord);
8336
- }
8337
- _getLogger() {
8338
- if (this._delegate) {
8339
- return this._delegate;
8340
- }
8341
- const logger = this._provider._getDelegateLogger(this.name, this.version, this.options);
8342
- if (!logger) {
8343
- return NoopLogger_1.NOOP_LOGGER;
8344
- }
8345
- this._delegate = logger;
8346
- return this._delegate;
8347
- }
8348
- }
8349
- exports.ProxyLogger = ProxyLogger;
8350
- });
8351
-
8352
- // node_modules/@loglayer/transport-opentelemetry/node_modules/@opentelemetry/api-logs/build/src/ProxyLoggerProvider.js
8353
- var require_ProxyLoggerProvider = __commonJS((exports) => {
8354
- Object.defineProperty(exports, "__esModule", { value: true });
8355
- exports.ProxyLoggerProvider = undefined;
8356
- var NoopLoggerProvider_1 = require_NoopLoggerProvider();
8357
- var ProxyLogger_1 = require_ProxyLogger();
8358
-
8359
- class ProxyLoggerProvider {
8360
- getLogger(name, version2, options) {
8361
- var _a2;
8362
- return (_a2 = this._getDelegateLogger(name, version2, options)) !== null && _a2 !== undefined ? _a2 : new ProxyLogger_1.ProxyLogger(this, name, version2, options);
8363
- }
8364
- _getDelegate() {
8365
- var _a2;
8366
- return (_a2 = this._delegate) !== null && _a2 !== undefined ? _a2 : NoopLoggerProvider_1.NOOP_LOGGER_PROVIDER;
8367
- }
8368
- _setDelegate(delegate) {
8369
- this._delegate = delegate;
8370
- }
8371
- _getDelegateLogger(name, version2, options) {
8372
- var _a2;
8373
- return (_a2 = this._delegate) === null || _a2 === undefined ? undefined : _a2.getLogger(name, version2, options);
8374
- }
8375
- }
8376
- exports.ProxyLoggerProvider = ProxyLoggerProvider;
8377
- });
8378
-
8379
- // node_modules/@loglayer/transport-opentelemetry/node_modules/@opentelemetry/api-logs/build/src/platform/node/globalThis.js
8380
- var require_globalThis2 = __commonJS((exports) => {
8381
- Object.defineProperty(exports, "__esModule", { value: true });
8382
- exports._globalThis = undefined;
8383
- exports._globalThis = typeof globalThis === "object" ? globalThis : global;
8384
- });
8385
-
8386
- // node_modules/@loglayer/transport-opentelemetry/node_modules/@opentelemetry/api-logs/build/src/platform/node/index.js
8387
- var require_node2 = __commonJS((exports) => {
8388
- Object.defineProperty(exports, "__esModule", { value: true });
8389
- exports._globalThis = undefined;
8390
- var globalThis_1 = require_globalThis2();
8391
- Object.defineProperty(exports, "_globalThis", { enumerable: true, get: function() {
8392
- return globalThis_1._globalThis;
8393
- } });
8394
- });
8395
-
8396
- // node_modules/@loglayer/transport-opentelemetry/node_modules/@opentelemetry/api-logs/build/src/platform/index.js
8397
- var require_platform2 = __commonJS((exports) => {
8398
- Object.defineProperty(exports, "__esModule", { value: true });
8399
- exports._globalThis = undefined;
8400
- var node_1 = require_node2();
8401
- Object.defineProperty(exports, "_globalThis", { enumerable: true, get: function() {
8402
- return node_1._globalThis;
8403
- } });
8404
- });
8405
-
8406
- // node_modules/@loglayer/transport-opentelemetry/node_modules/@opentelemetry/api-logs/build/src/internal/global-utils.js
8407
- var require_global_utils2 = __commonJS((exports) => {
8408
- Object.defineProperty(exports, "__esModule", { value: true });
8409
- exports.API_BACKWARDS_COMPATIBILITY_VERSION = exports.makeGetter = exports._global = exports.GLOBAL_LOGS_API_KEY = undefined;
8410
- var platform_1 = require_platform2();
8411
- exports.GLOBAL_LOGS_API_KEY = Symbol.for("io.opentelemetry.js.api.logs");
8412
- exports._global = platform_1._globalThis;
8413
- function makeGetter(requiredVersion, instance, fallback) {
8414
- return (version2) => version2 === requiredVersion ? instance : fallback;
8415
- }
8416
- exports.makeGetter = makeGetter;
8417
- exports.API_BACKWARDS_COMPATIBILITY_VERSION = 1;
8418
- });
8419
-
8420
- // node_modules/@loglayer/transport-opentelemetry/node_modules/@opentelemetry/api-logs/build/src/api/logs.js
8421
- var require_logs = __commonJS((exports) => {
8422
- Object.defineProperty(exports, "__esModule", { value: true });
8423
- exports.LogsAPI = undefined;
8424
- var global_utils_1 = require_global_utils2();
8425
- var NoopLoggerProvider_1 = require_NoopLoggerProvider();
8426
- var ProxyLoggerProvider_1 = require_ProxyLoggerProvider();
8427
-
8428
- class LogsAPI {
8429
- constructor() {
8430
- this._proxyLoggerProvider = new ProxyLoggerProvider_1.ProxyLoggerProvider;
8431
- }
8432
- static getInstance() {
8433
- if (!this._instance) {
8434
- this._instance = new LogsAPI;
8435
- }
8436
- return this._instance;
8437
- }
8438
- setGlobalLoggerProvider(provider) {
8439
- if (global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY]) {
8440
- return this.getLoggerProvider();
8441
- }
8442
- global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY] = (0, global_utils_1.makeGetter)(global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION, provider, NoopLoggerProvider_1.NOOP_LOGGER_PROVIDER);
8443
- this._proxyLoggerProvider._setDelegate(provider);
8444
- return provider;
8445
- }
8446
- getLoggerProvider() {
8447
- var _a2, _b;
8448
- return (_b = (_a2 = global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY]) === null || _a2 === undefined ? undefined : _a2.call(global_utils_1._global, global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION)) !== null && _b !== undefined ? _b : this._proxyLoggerProvider;
8449
- }
8450
- getLogger(name, version2, options) {
8451
- return this.getLoggerProvider().getLogger(name, version2, options);
8452
- }
8453
- disable() {
8454
- delete global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY];
8455
- this._proxyLoggerProvider = new ProxyLoggerProvider_1.ProxyLoggerProvider;
8456
- }
8457
- }
8458
- exports.LogsAPI = LogsAPI;
8459
- });
8460
-
8461
- // node_modules/@loglayer/transport-opentelemetry/node_modules/@opentelemetry/api-logs/build/src/index.js
8462
- var require_src2 = __commonJS((exports) => {
8463
- Object.defineProperty(exports, "__esModule", { value: true });
8464
- exports.logs = exports.ProxyLoggerProvider = exports.ProxyLogger = exports.NoopLoggerProvider = exports.NOOP_LOGGER_PROVIDER = exports.NoopLogger = exports.NOOP_LOGGER = exports.SeverityNumber = undefined;
8465
- var LogRecord_1 = require_LogRecord();
8466
- Object.defineProperty(exports, "SeverityNumber", { enumerable: true, get: function() {
8467
- return LogRecord_1.SeverityNumber;
8468
- } });
8469
- var NoopLogger_1 = require_NoopLogger();
8470
- Object.defineProperty(exports, "NOOP_LOGGER", { enumerable: true, get: function() {
8471
- return NoopLogger_1.NOOP_LOGGER;
8472
- } });
8473
- Object.defineProperty(exports, "NoopLogger", { enumerable: true, get: function() {
8474
- return NoopLogger_1.NoopLogger;
8475
- } });
8476
- var NoopLoggerProvider_1 = require_NoopLoggerProvider();
8477
- Object.defineProperty(exports, "NOOP_LOGGER_PROVIDER", { enumerable: true, get: function() {
8478
- return NoopLoggerProvider_1.NOOP_LOGGER_PROVIDER;
8479
- } });
8480
- Object.defineProperty(exports, "NoopLoggerProvider", { enumerable: true, get: function() {
8481
- return NoopLoggerProvider_1.NoopLoggerProvider;
8482
- } });
8483
- var ProxyLogger_1 = require_ProxyLogger();
8484
- Object.defineProperty(exports, "ProxyLogger", { enumerable: true, get: function() {
8485
- return ProxyLogger_1.ProxyLogger;
8486
- } });
8487
- var ProxyLoggerProvider_1 = require_ProxyLoggerProvider();
8488
- Object.defineProperty(exports, "ProxyLoggerProvider", { enumerable: true, get: function() {
8489
- return ProxyLoggerProvider_1.ProxyLoggerProvider;
8490
- } });
8491
- var logs_1 = require_logs();
8492
- exports.logs = logs_1.LogsAPI.getInstance();
8493
- });
8494
-
8495
8260
  // src/commands/cex-canonical-orderbook-export.ts
8496
8261
  import { createHash as createHash5, randomUUID as randomUUID2 } from "node:crypto";
8497
8262
  import path3 from "node:path";
@@ -22254,102 +22019,6 @@ var BaseTransport = class {
22254
22019
  return this.logger;
22255
22020
  }
22256
22021
  };
22257
- var LoggerlessTransport = class {
22258
- id;
22259
- enabled;
22260
- level;
22261
- consoleDebug;
22262
- constructor(config2) {
22263
- this.id = Date.now().toString() + Math.random().toString();
22264
- this.enabled = config2.enabled ?? true;
22265
- this.consoleDebug = config2.consoleDebug ?? false;
22266
- this.level = config2.level ?? "trace";
22267
- }
22268
- _sendToLogger(params) {
22269
- if (!this.enabled)
22270
- return;
22271
- if (LogLevelPriority[params.logLevel] < LogLevelPriority[this.level])
22272
- return;
22273
- const messages = this.shipToLogger(params);
22274
- if (this.consoleDebug)
22275
- switch (params.logLevel) {
22276
- case LogLevel.info:
22277
- console.info(...messages);
22278
- break;
22279
- case LogLevel.warn:
22280
- console.warn(...messages);
22281
- break;
22282
- case LogLevel.error:
22283
- console.error(...messages);
22284
- break;
22285
- case LogLevel.trace:
22286
- console.debug(...messages);
22287
- break;
22288
- case LogLevel.debug:
22289
- console.debug(...messages);
22290
- break;
22291
- case LogLevel.fatal:
22292
- console.debug(...messages);
22293
- break;
22294
- default:
22295
- console.log(...messages);
22296
- }
22297
- }
22298
- getLoggerInstance() {
22299
- throw new Error("This transport does not have a logger instance");
22300
- }
22301
- };
22302
-
22303
- // node_modules/@loglayer/transport-opentelemetry/dist/index.mjs
22304
- var import_api_logs = __toESM(require_src2(), 1);
22305
- var logLayerLevels = {
22306
- fatal: import_api_logs.SeverityNumber.FATAL,
22307
- error: import_api_logs.SeverityNumber.ERROR,
22308
- warn: import_api_logs.SeverityNumber.WARN,
22309
- info: import_api_logs.SeverityNumber.INFO,
22310
- debug: import_api_logs.SeverityNumber.DEBUG,
22311
- trace: import_api_logs.SeverityNumber.TRACE
22312
- };
22313
- function getSeverityNumber(level) {
22314
- return logLayerLevels[level] ?? import_api_logs.SeverityNumber.TRACE;
22315
- }
22316
- function emitLogRecord(record2, logger) {
22317
- const { message, level, ...splat } = record2;
22318
- const attributes = {};
22319
- for (const key in splat)
22320
- if (Object.hasOwn(splat, key))
22321
- attributes[key] = splat[key];
22322
- const logRecord = {
22323
- severityNumber: getSeverityNumber(level),
22324
- severityText: level,
22325
- body: message,
22326
- attributes
22327
- };
22328
- logger.emit(logRecord);
22329
- }
22330
- var OpenTelemetryTransport = class extends LoggerlessTransport {
22331
- _logger;
22332
- onError;
22333
- constructor(config2 = {}) {
22334
- super(config2);
22335
- this._logger = import_api_logs.logs.getLogger("loglayer");
22336
- this.onError = config2.onError;
22337
- }
22338
- shipToLogger({ logLevel, messages, data, hasData }) {
22339
- const assembled = {
22340
- level: logLevel,
22341
- message: messages.join(" "),
22342
- ...hasData ? data : {}
22343
- };
22344
- try {
22345
- emitLogRecord(assembled, this._logger);
22346
- } catch (error48) {
22347
- if (this.onError)
22348
- this.onError(error48);
22349
- }
22350
- return [assembled];
22351
- }
22352
- };
22353
22022
 
22354
22023
  // node_modules/@loglayer/transport-tslog/dist/index.js
22355
22024
  var TsLogTransport = class extends BaseTransport {
@@ -24521,13 +24190,7 @@ var tslogLogger = new Logger({
24521
24190
  minLevel: process.env.LOG_LEVEL === "debug" ? 0 : 3
24522
24191
  });
24523
24192
  var baseLogger = new LogLayer({
24524
- transport: [
24525
- new TsLogTransport({ id: "tslog", logger: tslogLogger }),
24526
- new OpenTelemetryTransport({
24527
- id: "otel",
24528
- enabled: true
24529
- })
24530
- ],
24193
+ transport: [new TsLogTransport({ id: "tslog", logger: tslogLogger })],
24531
24194
  plugins: [openTelemetryPlugin()],
24532
24195
  errorSerializer: serializeError
24533
24196
  });
@@ -25642,12 +25305,14 @@ var result_schema_default = {
25642
25305
  };
25643
25306
 
25644
25307
  // src/helpers/market-data-vendor-backfill/manifests.ts
25645
- var CAPABILITY_POLICY_ID = "market-data-vendor-backfill-capabilities/v1";
25646
- var RESOURCE_POLICY_ID = "market-data-vendor-backfill-resources/v1";
25308
+ var LEGACY_CAPABILITY_POLICY_ID = "market-data-vendor-backfill-capabilities/v1";
25309
+ var CAPABILITY_POLICY_ID = "market-data-vendor-backfill-capabilities/v2";
25310
+ var LEGACY_RESOURCE_POLICY_ID = "market-data-vendor-backfill-resources/v1";
25311
+ var RESOURCE_POLICY_ID = "market-data-vendor-backfill-resources/v2";
25647
25312
  var ADAPTER_POLICY_ID = "cryptohftdata-orderbook-adapter/v1";
25648
25313
  var ACQUISITION_POLICY_ID = "cryptohftdata-hourly-acquisition/v1";
25649
- var capabilityPolicyContent = {
25650
- policy_id: CAPABILITY_POLICY_ID,
25314
+ var legacyCapabilityPolicyContent = {
25315
+ policy_id: LEGACY_CAPABILITY_POLICY_ID,
25651
25316
  provider: "cryptohftdata",
25652
25317
  adapter_policy: {
25653
25318
  policy_id: ADAPTER_POLICY_ID,
@@ -25673,12 +25338,37 @@ var capabilityPolicyContent = {
25673
25338
  }
25674
25339
  ]
25675
25340
  };
25341
+ var LEGACY_CAPABILITY_POLICY = Object.freeze({
25342
+ ...legacyCapabilityPolicyContent,
25343
+ policy_sha256: jcsSha256(legacyCapabilityPolicyContent)
25344
+ });
25345
+ var capabilityPolicyContent = {
25346
+ ...legacyCapabilityPolicyContent,
25347
+ policy_id: CAPABILITY_POLICY_ID,
25348
+ profiles: [
25349
+ ...legacyCapabilityPolicyContent.profiles.map((profile) => ({
25350
+ ...profile,
25351
+ source_policies: ["authoritative_window", "fill_gaps"]
25352
+ })),
25353
+ {
25354
+ exchange: "okx",
25355
+ market_type: "spot",
25356
+ feed: "ORDERBOOK",
25357
+ canonical_trading_pair: "ARB-USDC",
25358
+ provider_exchange_id: "okx_spot",
25359
+ resolved_symbol: "ARB-USDC",
25360
+ construction_modes: ["sampled_top_n_snapshot"],
25361
+ source_policies: ["authoritative_window", "fill_gaps"],
25362
+ max_depth: 400
25363
+ }
25364
+ ]
25365
+ };
25676
25366
  var CAPABILITY_POLICY = Object.freeze({
25677
25367
  ...capabilityPolicyContent,
25678
25368
  policy_sha256: jcsSha256(capabilityPolicyContent)
25679
25369
  });
25680
- var resourcePolicyContent = {
25681
- policy_id: RESOURCE_POLICY_ID,
25370
+ var legacyResourcePolicyContent = {
25371
+ policy_id: LEGACY_RESOURCE_POLICY_ID,
25682
25372
  limits: {
25683
25373
  max_files: 1e4,
25684
25374
  max_bytes: 100 * 1024 * 1024 * 1024,
@@ -25692,17 +25382,29 @@ var resourcePolicyContent = {
25692
25382
  max_required_events: 1e5
25693
25383
  }
25694
25384
  };
25385
+ var LEGACY_RESOURCE_POLICY = Object.freeze({
25386
+ ...legacyResourcePolicyContent,
25387
+ policy_sha256: jcsSha256(legacyResourcePolicyContent)
25388
+ });
25389
+ var resourcePolicyContent = {
25390
+ ...legacyResourcePolicyContent,
25391
+ policy_id: RESOURCE_POLICY_ID,
25392
+ request_bounds: {
25393
+ ...legacyResourcePolicyContent.request_bounds,
25394
+ max_window_ms: 31 * 24 * 60 * 60 * 1000
25395
+ }
25396
+ };
25695
25397
  var RESOURCE_POLICY = Object.freeze({
25696
25398
  ...resourcePolicyContent,
25697
25399
  policy_sha256: jcsSha256(resourcePolicyContent)
25698
25400
  });
25699
25401
  var EFFECTIVE_ADAPTER_POLICY_PIN = Object.freeze({
25700
25402
  policy_id: ADAPTER_POLICY_ID,
25701
- policy_sha256: jcsSha256(capabilityPolicyContent.adapter_policy)
25403
+ policy_sha256: jcsSha256(legacyCapabilityPolicyContent.adapter_policy)
25702
25404
  });
25703
25405
  var EFFECTIVE_ACQUISITION_POLICY_PIN = Object.freeze({
25704
25406
  policy_id: ACQUISITION_POLICY_ID,
25705
- policy_sha256: jcsSha256(capabilityPolicyContent.acquisition_policy)
25407
+ policy_sha256: jcsSha256(legacyCapabilityPolicyContent.acquisition_policy)
25706
25408
  });
25707
25409
  var schemaArtifacts = [
25708
25410
  ["schemas/request.schema.json", request_schema_default],
@@ -25866,7 +25568,15 @@ var backfillRequestCodec = {
25866
25568
  if (request.idempotency_key !== createBackfillIdempotencyKey(request)) {
25867
25569
  throw new Error("idempotency_key does not match canonical business fields");
25868
25570
  }
25869
- if (request.product_pins.capability_policy.policy_id !== CAPABILITY_POLICY.policy_id || request.product_pins.capability_policy.policy_sha256 !== CAPABILITY_POLICY.policy_sha256 || request.product_pins.resource_policy.policy_id !== RESOURCE_POLICY.policy_id || request.product_pins.resource_policy.policy_sha256 !== RESOURCE_POLICY.policy_sha256) {
25571
+ const capabilityPolicyMatches = [
25572
+ CAPABILITY_POLICY,
25573
+ LEGACY_CAPABILITY_POLICY
25574
+ ].some((policy) => request.product_pins.capability_policy.policy_id === policy.policy_id && request.product_pins.capability_policy.policy_sha256 === policy.policy_sha256);
25575
+ const resourcePolicyMatches = [
25576
+ RESOURCE_POLICY,
25577
+ LEGACY_RESOURCE_POLICY
25578
+ ].some((policy) => request.product_pins.resource_policy.policy_id === policy.policy_id && request.product_pins.resource_policy.policy_sha256 === policy.policy_sha256);
25579
+ if (!capabilityPolicyMatches || !resourcePolicyMatches) {
25870
25580
  throw new Error("request policy pins do not match the effective package policies");
25871
25581
  }
25872
25582
  if (request.required_clock.clock_id !== request.initial_selection.required_clock.clock_id || request.required_clock.clock_sha256 !== request.initial_selection.required_clock.clock_sha256 || request.required_clock.event_count !== request.initial_selection.required_clock.event_count) {
@@ -25981,6 +25691,10 @@ function decodeBackfillRunDocuments(input) {
25981
25691
  return targetTimeMs;
25982
25692
  });
25983
25693
  const capabilityProfile = CAPABILITY_POLICY.profiles.find((profile) => profile.exchange === wire.scope.exchange && profile.market_type === wire.scope.market_type && profile.feed === wire.scope.feed && profile.canonical_trading_pair === wire.scope.trading_pair);
25694
+ const resourcePolicy = [RESOURCE_POLICY, LEGACY_RESOURCE_POLICY].find((policy) => wire.product_pins.resource_policy.policy_id === policy.policy_id && wire.product_pins.resource_policy.policy_sha256 === policy.policy_sha256);
25695
+ if (!resourcePolicy) {
25696
+ throw new Error("request resource policy pin is unsupported");
25697
+ }
25984
25698
  return {
25985
25699
  schemaVersion: BACKFILL_REQUEST_SCHEMA_VERSION,
25986
25700
  requestId: wire.request_id,
@@ -26005,11 +25719,11 @@ function decodeBackfillRunDocuments(input) {
26005
25719
  maxPriorAsOfLagMs: wire.coverage_policy.max_asof_lag_ms,
26006
25720
  sourcePolicy: wire.source_policy,
26007
25721
  budgets: {
26008
- maxFiles: RESOURCE_POLICY.limits.max_files,
26009
- maxBytes: RESOURCE_POLICY.limits.max_bytes,
26010
- maxRows: RESOURCE_POLICY.limits.max_rows,
26011
- maxDurationMs: RESOURCE_POLICY.limits.max_duration_ms,
26012
- maxBoundaryLookbackMs: Math.min(RESOURCE_POLICY.limits.max_boundary_lookback_ms, CAPABILITY_POLICY.acquisition_policy.initialization_lookback_ms)
25722
+ maxFiles: resourcePolicy.limits.max_files,
25723
+ maxBytes: resourcePolicy.limits.max_bytes,
25724
+ maxRows: resourcePolicy.limits.max_rows,
25725
+ maxDurationMs: resourcePolicy.limits.max_duration_ms,
25726
+ maxBoundaryLookbackMs: Math.min(resourcePolicy.limits.max_boundary_lookback_ms, CAPABILITY_POLICY.acquisition_policy.initialization_lookback_ms)
26013
25727
  },
26014
25728
  expectedProduct: {
26015
25729
  packageName: "@usherlabs/cex-broker",
@@ -26923,6 +26637,9 @@ function assertSelectionLinks(selection) {
26923
26637
  throw new ExactOrderBookExportError("selection_bundle_identity_duplicate");
26924
26638
  }
26925
26639
  const requested = selection.requested_intervals.map((interval, index) => intervalMs(interval, `requested_interval_${index}`));
26640
+ if (selection.source_policy === "authoritative_window" && new Set(selection.selected_intervals.map((selected) => selected.capture_origin)).size > 1) {
26641
+ throw new ExactOrderBookExportError("authoritative_selection_mixes_capture_origins");
26642
+ }
26926
26643
  return selection.selected_intervals.map((selected, index) => {
26927
26644
  const selectedMs = intervalMs(selected, `selected_interval_${index}`);
26928
26645
  const bundle = bundleById.get(selected.capture_bundle_id);
@@ -26935,9 +26652,6 @@ function assertSelectionLinks(selection) {
26935
26652
  if (!requested.some((interval) => contains(interval, selectedMs))) {
26936
26653
  throw new ExactOrderBookExportError("selected_interval_outside_request");
26937
26654
  }
26938
- if (selection.source_policy === "authoritative_window" && selected.capture_origin !== "vendor_historical_backfill") {
26939
- throw new ExactOrderBookExportError("authoritative_selection_not_vendor");
26940
- }
26941
26655
  if (selected.capture_origin === "vendor_historical_backfill") {
26942
26656
  const qualification = bundle.qualification;
26943
26657
  if (qualification?.state !== "qualified" || !selection.receipt_ids.includes(qualification.receipt_id) || !selection.qualification_event_ids.includes(qualification.qualification_event_id)) {
@@ -27552,8 +27266,8 @@ function validateReleaseIdentity(release) {
27552
27266
  }
27553
27267
  function bakedReleaseIdentity() {
27554
27268
  return validateReleaseIdentity({
27555
- packageVersion: "0.2.48",
27556
- gitHead: "3b42f32422c587afbdfab6ed16b0969980eaaddb"
27269
+ packageVersion: "0.2.50",
27270
+ gitHead: "41dbe7cc296da1c5a7964dca8f418800522f27e5"
27557
27271
  });
27558
27272
  }
27559
27273
  function optionalEnvironment(environment, name) {
@@ -27728,4 +27442,4 @@ export {
27728
27442
  createCanonicalOrderBookExportClientFromEnv
27729
27443
  };
27730
27444
 
27731
- //# debugId=0E22A0814388E4D264756E2164756E21
27445
+ //# debugId=91A35DE6AD9170B764756E2164756E21