@xyo-network/chain-reward-redemption 1.16.5 → 1.16.7

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 (28) hide show
  1. package/dist/node/index.mjs +37 -107
  2. package/dist/node/index.mjs.map +1 -1
  3. package/dist/node/modules/ChainStepRewardsClaimSentinel/ChainStepRewardsClaimSentinel.d.ts.map +1 -1
  4. package/dist/node/modules/ChainStepRewardsClaimSentinel/StepIdentityPayload.d.ts +1 -9
  5. package/dist/node/modules/ChainStepRewardsClaimSentinel/StepIdentityPayload.d.ts.map +1 -1
  6. package/dist/node/server/routes/rewardRedemption/addRewardRoutes.d.ts.map +1 -1
  7. package/dist/node/server/routes/rewardRedemption/routeDefinitions/getRouteDefinitions.d.ts +1 -1
  8. package/dist/node/server/routes/rewardRedemption/routeDefinitions/getRouteDefinitions.d.ts.map +1 -1
  9. package/dist/node/server/routes/rewardRedemption/routeDefinitions/routes/claimRange.d.ts +1 -1
  10. package/dist/node/server/routes/rewardRedemption/routeDefinitions/routes/claimRange.d.ts.map +1 -1
  11. package/dist/node/server/routes/rewardRedemption/routeDefinitions/routes/redeem.d.ts +1 -1
  12. package/dist/node/server/routes/rewardRedemption/routeDefinitions/routes/redeem.d.ts.map +1 -1
  13. package/package.json +55 -56
  14. package/src/modules/ChainStepRewardsClaimSentinel/ChainStepRewardsClaimSentinel.ts +6 -4
  15. package/src/modules/ChainStepRewardsClaimSentinel/StepIdentityPayload.ts +2 -10
  16. package/src/server/routes/rewardRedemption/addRewardRoutes.ts +2 -3
  17. package/src/server/routes/rewardRedemption/routeDefinitions/getRouteDefinitions.ts +2 -1
  18. package/src/server/routes/rewardRedemption/routeDefinitions/routes/claimRange.ts +6 -6
  19. package/src/server/routes/rewardRedemption/routeDefinitions/routes/redeem.ts +2 -3
  20. package/dist/node/server/routes/rewardRedemption/middleware/index.d.ts +0 -2
  21. package/dist/node/server/routes/rewardRedemption/middleware/index.d.ts.map +0 -1
  22. package/dist/node/server/routes/rewardRedemption/middleware/requestHandlerValidator.d.ts +0 -32
  23. package/dist/node/server/routes/rewardRedemption/middleware/requestHandlerValidator.d.ts.map +0 -1
  24. package/dist/node/server/routes/rewardRedemption/routeDefinitions/routeDefinition.d.ts +0 -8
  25. package/dist/node/server/routes/rewardRedemption/routeDefinitions/routeDefinition.d.ts.map +0 -1
  26. package/src/server/routes/rewardRedemption/middleware/index.ts +0 -1
  27. package/src/server/routes/rewardRedemption/middleware/requestHandlerValidator.ts +0 -120
  28. package/src/server/routes/rewardRedemption/routeDefinitions/routeDefinition.ts +0 -18
@@ -111,15 +111,19 @@ var addDataLakeRoutes = /* @__PURE__ */ __name((app) => {
111
111
  }));
112
112
  }, "addDataLakeRoutes");
113
113
 
114
+ // src/server/routes/rewardRedemption/addRewardRoutes.ts
115
+ import { addRouteDefinitions } from "@xylabs/express";
116
+
114
117
  // src/server/routes/rewardRedemption/routeDefinitions/routes/claimRange.ts
115
118
  import { assertEx as assertEx3 } from "@xylabs/assert";
116
- import { isDefined as isDefined6 } from "@xylabs/typeof";
119
+ import { requestHandlerValidator } from "@xylabs/express";
120
+ import { isDefined as isDefined5 } from "@xylabs/typeof";
117
121
  import { blockRangeSteps as blockRangeSteps2 } from "@xyo-network/chain-protocol";
118
122
  import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/payload-builder";
119
123
  import { PayloadZodLoose } from "@xyo-network/payload-model";
120
124
  import { asSentinelInstance } from "@xyo-network/sentinel-model";
121
- import { asXL1BlockNumber as asXL1BlockNumber2 } from "@xyo-network/xl1-protocol";
122
- import { z as z3 } from "zod";
125
+ import { asXL1BlockRange as asXL1BlockRange2 } from "@xyo-network/xl1-protocol";
126
+ import { z as z2 } from "zod";
123
127
 
124
128
  // src/modules/ChainStepRewardsClaimSentinel/ChainStepRewardsClaimSentinel.ts
125
129
  import { assertEx } from "@xylabs/assert";
@@ -128,14 +132,14 @@ import { toAddress } from "@xylabs/hex";
128
132
  import { isDefined as isDefined2, isUndefined } from "@xylabs/typeof";
129
133
  import { blockRangeSteps, createTransferPayload } from "@xyo-network/chain-protocol";
130
134
  import { AbstractSentinel } from "@xyo-network/sentinel-abstract";
131
- import { asXL1BlockNumber, XYO_STEP_REWARD_ADDRESS } from "@xyo-network/xl1-protocol";
135
+ import { asXL1BlockNumber, asXL1BlockRange, XYO_STEP_REWARD_ADDRESS } from "@xyo-network/xl1-protocol";
132
136
  import { completedStepRewardAddress, derivedReceiveAddress, flattenHydratedTransaction, flattenHydratedTransactions, SimpleXyoGatewayRunner } from "@xyo-network/xl1-protocol-sdk";
133
137
  import { Mutex } from "async-mutex";
134
138
 
135
139
  // src/modules/ChainStepRewardsClaimSentinel/StepIdentityPayload.ts
136
140
  import { AsObjectFactory } from "@xylabs/object";
137
141
  import { isPayloadOfZodType } from "@xyo-network/payload-model";
138
- import { StepIdentityZod } from "@xyo-network/xl1-rpc";
142
+ import { StepIdentityZod } from "@xyo-network/xl1-protocol";
139
143
  var StepIdentitySchema = "network.xyo.chain.step.identity";
140
144
  var isStepIdentityPayload = isPayloadOfZodType(StepIdentityZod, StepIdentitySchema);
141
145
  var asStepIdentityPayload = AsObjectFactory.create(isStepIdentityPayload);
@@ -213,7 +217,7 @@ var ChainStepRewardsClaimSentinel = class extends AbstractSentinel {
213
217
  } else {
214
218
  const stepIdentities = payloads.filter(isStepIdentityPayload).map((p) => {
215
219
  const { step, block: blockNumber } = p;
216
- const block = asXL1BlockNumber(blockNumber);
220
+ const block = asXL1BlockNumber(blockNumber, true);
217
221
  return {
218
222
  step,
219
223
  block
@@ -250,10 +254,10 @@ var ChainStepRewardsClaimSentinel = class extends AbstractSentinel {
250
254
  for (const step of RewardableSteps) {
251
255
  const from = 0;
252
256
  const to = await this.viewer.currentBlockNumber();
253
- const range = [
257
+ const range = asXL1BlockRange([
254
258
  asXL1BlockNumber(from),
255
259
  asXL1BlockNumber(to)
256
- ];
260
+ ], true);
257
261
  const stepIdentities = blockRangeSteps(range, [
258
262
  step
259
263
  ]);
@@ -419,85 +423,12 @@ var DerivedAddressWalletTransferSentinel = class extends AbstractSentinel2 {
419
423
  }, "submitRewardDistributionTransaction");
420
424
  };
421
425
 
422
- // src/server/routes/rewardRedemption/middleware/requestHandlerValidator.ts
423
- import { isDefined as isDefined4, isPromise } from "@xylabs/typeof";
424
- import { ReasonPhrases, StatusCodes } from "http-status-codes";
425
- import { z as z2 } from "zod";
426
- var EmptyParamsZod = z2.object({}).catchall(z2.string());
427
- var EmptyQueryParamsZod = z2.object({}).catchall(z2.union([
428
- z2.string(),
429
- z2.array(z2.string())
430
- ]));
431
- var ValidateRequestDefaults = {
432
- params: EmptyParamsZod,
433
- query: EmptyQueryParamsZod,
434
- body: z2.json().optional(),
435
- response: z2.json().optional()
436
- };
437
- function requestHandlerValidator(schemas) {
438
- const validators = {
439
- ...ValidateRequestDefaults,
440
- ...schemas
441
- };
442
- return (handler) => {
443
- return async (req, res, next) => {
444
- const originalJson = res.json.bind(res);
445
- try {
446
- const errors = [];
447
- const keys = [
448
- "params",
449
- "query",
450
- "body"
451
- ];
452
- for (const key of keys) {
453
- const validator = validators[key];
454
- const result2 = validator.safeParse(req[key]);
455
- if (result2.success) {
456
- if (isDefined4(result2.data)) Object.assign(req[key], result2.data);
457
- } else {
458
- errors.push(...result2.error.issues.map((issue) => issue.path.length === 0 ? `${key}: ${issue.message}` : `${key}.${issue.path.join(".")}: ${issue.message}`));
459
- }
460
- }
461
- if (errors.length > 0) {
462
- const message = errors.join("; ");
463
- const err = new Error(message);
464
- err.name = ReasonPhrases.BAD_REQUEST;
465
- err.statusCode = StatusCodes.BAD_REQUEST;
466
- next(err);
467
- return false;
468
- }
469
- res.json = (data) => {
470
- const result2 = validators.response.safeParse(data);
471
- if (result2.success) {
472
- return originalJson(result2.data);
473
- } else {
474
- const message = result2.error.issues.map((issue) => issue.path.length === 0 ? `response: ${issue.message}` : `response.${issue.path.join(".")}: ${issue.message}`).join("; ");
475
- const err = new Error(message);
476
- err.name = ReasonPhrases.INTERNAL_SERVER_ERROR;
477
- err.statusCode = StatusCodes.INTERNAL_SERVER_ERROR;
478
- res.json = originalJson;
479
- throw err;
480
- }
481
- };
482
- const result = handler(req, res, next);
483
- if (result && isPromise(result)) {
484
- await result;
485
- }
486
- } catch (err) {
487
- res.json = originalJson;
488
- next(err);
489
- }
490
- };
491
- };
492
- }
493
- __name(requestHandlerValidator, "requestHandlerValidator");
494
-
495
426
  // src/server/routes/rewardRedemption/routeDefinitions/util/getViewerFromConfig.ts
496
- import { isDefined as isDefined5 } from "@xylabs/typeof";
427
+ import { isDefined as isDefined4 } from "@xylabs/typeof";
497
428
  import { HttpRpcTransport, JsonRpcNetworkStakeViewer, JsonRpcXyoViewer, NetworkStakeViewerRpcSchemas, XyoViewerRpcSchemas } from "@xyo-network/xl1-rpc";
498
429
  var viewer;
499
430
  var getViewerFromConfig = /* @__PURE__ */ __name((config) => {
500
- if (isDefined5(viewer)) return viewer;
431
+ if (isDefined4(viewer)) return viewer;
501
432
  const transport = new HttpRpcTransport(config.rewardRedemptionApi.chainRpcApiUrl, {
502
433
  ...XyoViewerRpcSchemas,
503
434
  ...NetworkStakeViewerRpcSchemas
@@ -520,12 +451,12 @@ var RewardableSteps2 = [
520
451
  ];
521
452
 
522
453
  // src/server/routes/rewardRedemption/routeDefinitions/routes/claimRange.ts
523
- var query = z3.object({
524
- fromBlock: z3.coerce.number().int().nonnegative().optional(),
525
- toBlock: z3.coerce.number().int().nonnegative().optional(),
526
- step: z3.coerce.number().int().nonnegative().min(Math.min(...RewardableSteps2)).max(Math.max(...RewardableSteps2)).optional().default(3)
454
+ var query = z2.object({
455
+ fromBlock: z2.coerce.number().int().nonnegative().optional(),
456
+ toBlock: z2.coerce.number().int().nonnegative().optional(),
457
+ step: z2.coerce.number().int().nonnegative().min(Math.min(...RewardableSteps2)).max(Math.max(...RewardableSteps2)).optional().default(3)
527
458
  });
528
- var response = z3.array(PayloadZodLoose);
459
+ var response = z2.array(PayloadZodLoose);
529
460
  var validateRequest = requestHandlerValidator({
530
461
  query,
531
462
  response
@@ -540,20 +471,20 @@ var postClaimRange = {
540
471
  path: "/rewards/claimRange",
541
472
  handlers: validateRequest(async (req, res) => {
542
473
  const { config, node } = req.app;
543
- const { fromBlock, toBlock, step } = z3.parse(query, req.query);
474
+ const { fromBlock, toBlock, step } = z2.parse(query, req.query);
544
475
  const viewer2 = getViewerFromConfig(config);
545
- const from = isDefined6(fromBlock) ? fromBlock : 0;
476
+ const from = isDefined5(fromBlock) ? fromBlock : 0;
546
477
  const currentBlock = await viewer2.currentBlockNumber();
547
- const to = isDefined6(toBlock) ? Math.min(toBlock, currentBlock) : currentBlock;
478
+ const to = isDefined5(toBlock) ? Math.min(toBlock, currentBlock) : currentBlock;
548
479
  if (to <= from) {
549
480
  res.status(400);
550
481
  res.json([]);
551
482
  return;
552
483
  }
553
- const range = [
554
- asXL1BlockNumber2(from),
555
- asXL1BlockNumber2(to)
556
- ];
484
+ const range = asXL1BlockRange2([
485
+ from,
486
+ to
487
+ ], true);
557
488
  const stepIdentities = blockRangeSteps2(range, [
558
489
  step
559
490
  ]);
@@ -575,16 +506,17 @@ var postClaimRange = {
575
506
 
576
507
  // src/server/routes/rewardRedemption/routeDefinitions/routes/redeem.ts
577
508
  import { assertEx as assertEx4 } from "@xylabs/assert";
509
+ import { requestHandlerValidator as requestHandlerValidator2 } from "@xylabs/express";
578
510
  import { PayloadZodLoose as PayloadZodLoose2, PayloadZodStrictOfSchema } from "@xyo-network/payload-model";
579
511
  import { asSentinelInstance as asSentinelInstance2 } from "@xyo-network/sentinel-model";
580
512
  import { EIP712DataPayloadFieldsZod, EIP712DataPayloadSchema, EIP712SignaturePayloadFieldsZod, EIP712SignaturePayloadSchema } from "@xyo-network/xl1-protocol-sdk";
581
- import { z as z4 } from "zod";
582
- var body = z4.tuple([
513
+ import { z as z3 } from "zod";
514
+ var body = z3.tuple([
583
515
  PayloadZodStrictOfSchema(EIP712DataPayloadSchema).extend(EIP712DataPayloadFieldsZod.shape),
584
516
  PayloadZodStrictOfSchema(EIP712SignaturePayloadSchema).extend(EIP712SignaturePayloadFieldsZod.shape)
585
517
  ]);
586
- var response2 = z4.array(PayloadZodLoose2);
587
- var validateRequest2 = requestHandlerValidator({
518
+ var response2 = z3.array(PayloadZodLoose2);
519
+ var validateRequest2 = requestHandlerValidator2({
588
520
  body,
589
521
  response: response2
590
522
  });
@@ -617,9 +549,7 @@ var getRouteDefinitions = /* @__PURE__ */ __name(() => {
617
549
  // src/server/routes/rewardRedemption/addRewardRoutes.ts
618
550
  var addRewardRedemptionRoutes = /* @__PURE__ */ __name((app) => {
619
551
  const routeDefinitions = getRouteDefinitions();
620
- for (const definition of routeDefinitions) {
621
- app[definition.method](definition.path, definition.handlers);
622
- }
552
+ addRouteDefinitions(app, routeDefinitions);
623
553
  }, "addRewardRedemptionRoutes");
624
554
 
625
555
  // src/server/routes/addRoutes.ts
@@ -652,12 +582,12 @@ var getApp = /* @__PURE__ */ __name((node, config) => {
652
582
 
653
583
  // src/server/server.ts
654
584
  import { assertEx as assertEx5 } from "@xylabs/assert";
655
- import { isDefined as isDefined8, isString } from "@xylabs/typeof";
585
+ import { isDefined as isDefined7, isString } from "@xylabs/typeof";
656
586
  import { boot } from "@xyo-network/bios";
657
587
  import { HDWallet as HDWallet2 } from "@xyo-network/wallet";
658
588
 
659
589
  // src/manifest/getLocator.ts
660
- import { isDefined as isDefined7 } from "@xylabs/typeof";
590
+ import { isDefined as isDefined6 } from "@xylabs/typeof";
661
591
  import { MemoryArchivist } from "@xyo-network/archivist-memory";
662
592
  import { MongoDBArchivistV2 } from "@xyo-network/archivist-mongodb";
663
593
  import { ViewArchivist } from "@xyo-network/archivist-view";
@@ -682,7 +612,7 @@ var getLocator = /* @__PURE__ */ __name(async (context) => {
682
612
  port: 9465
683
613
  }
684
614
  });
685
- if (isDefined7(logger)) AbstractModule.defaultLogger = logger;
615
+ if (isDefined6(logger)) AbstractModule.defaultLogger = logger;
686
616
  const statusReporter = logger ? new LoggerModuleStatusReporter(logger) : void 0;
687
617
  const locator = new ModuleFactoryLocator();
688
618
  const mongoConfig = config.storage?.mongo;
@@ -737,7 +667,7 @@ var getLocator = /* @__PURE__ */ __name(async (context) => {
737
667
  }, "getLocator");
738
668
  var getGateway = /* @__PURE__ */ __name(async (config) => {
739
669
  const { mnemonic, chainRpcApiUrl: endpoint } = config.rewardRedemptionApi;
740
- const walletPromise = isDefined7(mnemonic) ? HDWallet.fromPhrase(mnemonic) : HDWallet.random();
670
+ const walletPromise = isDefined6(mnemonic) ? HDWallet.fromPhrase(mnemonic) : HDWallet.random();
741
671
  const account = await walletPromise;
742
672
  const signer = new SimpleXyoSigner(account);
743
673
  const connection = new HttpRpcXyoConnection({
@@ -885,7 +815,7 @@ var getServer = /* @__PURE__ */ __name(async (context) => {
885
815
  const { logger, config } = context;
886
816
  const { port, mnemonic } = config.rewardRedemptionApi;
887
817
  const bios = await boot();
888
- const seedPhrase = isDefined8(mnemonic) ? mnemonic : await getSeedPhrase(bios, config, logger);
818
+ const seedPhrase = isDefined7(mnemonic) ? mnemonic : await getSeedPhrase(bios, config, logger);
889
819
  const wallet = await HDWallet2.fromPhrase(seedPhrase);
890
820
  const nodeContext = {
891
821
  wallet,