nesties 1.1.21 → 1.1.22

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/dist/index.mjs CHANGED
@@ -1398,6 +1398,20 @@ var createProvider = (options, factory) => {
1398
1398
  // src/utility/resolver-swagger-map.ts
1399
1399
  var ResolverSwaggerMap = /* @__PURE__ */ new Map();
1400
1400
 
1401
+ // src/utility/uniq-by.ts
1402
+ var uniqBy = (arr, fn) => {
1403
+ const seen = /* @__PURE__ */ new Set();
1404
+ const result = [];
1405
+ for (const item of arr) {
1406
+ const key = fn(item);
1407
+ if (!seen.has(key)) {
1408
+ seen.add(key);
1409
+ result.push(item);
1410
+ }
1411
+ }
1412
+ return result;
1413
+ };
1414
+
1401
1415
  // src/resolver.ts
1402
1416
  var ParamResolverCopiedFieldsFromSwagger = [
1403
1417
  "required",
@@ -1463,8 +1477,22 @@ ParamResolverPipe = __decorateClass([
1463
1477
  ], ParamResolverPipe);
1464
1478
  var usedParamResolverTokens = /* @__PURE__ */ new Set();
1465
1479
  var ParamResolverBase = class {
1480
+ constructor() {
1481
+ this.extraSwagger = [];
1482
+ }
1483
+ addExtraDecorator(dec, token = Math.random().toString(36)) {
1484
+ this.extraSwagger.push({
1485
+ token,
1486
+ swagger: dec
1487
+ });
1488
+ return this;
1489
+ }
1490
+ // for override
1491
+ toSwaggerInfo(extras = []) {
1492
+ return uniqBy([...this.extraSwagger, ...extras], (info) => info.token);
1493
+ }
1466
1494
  toApiPropertyDecorator(extras = {}) {
1467
- const swaggerInfo = this.toSwaggerInfo();
1495
+ const swaggerInfo = uniqBy(this.toSwaggerInfo(), (info) => info.token);
1468
1496
  return (extras2 = {}) => MergeClassOrMethodDecorators(
1469
1497
  swaggerInfo.map((info) => info.swagger({ ...extras, ...extras2 }))
1470
1498
  );
@@ -1553,7 +1581,7 @@ var ParamResolver = class extends ParamResolverBase {
1553
1581
  const suffix = this.info ? `${this.info.paramType.toUpperCase()}_${this.info.paramName}` : `DYNAMIC`;
1554
1582
  return `ParamResolver_${suffix}`;
1555
1583
  }
1556
- toSwaggerInfo() {
1584
+ toSwaggerInfo(extras = []) {
1557
1585
  const swagger = (extras2 = {}) => {
1558
1586
  if (this.info) {
1559
1587
  const paramType = this.info.paramType;
@@ -1574,7 +1602,7 @@ var ParamResolver = class extends ParamResolverBase {
1574
1602
  return () => {
1575
1603
  };
1576
1604
  };
1577
- return [
1605
+ return super.toSwaggerInfo([
1578
1606
  {
1579
1607
  swagger,
1580
1608
  token: this.toString()
@@ -1584,8 +1612,9 @@ var ParamResolver = class extends ParamResolverBase {
1584
1612
  swagger: () => ApiError(400, "Invalid request parameters"),
1585
1613
  token: `__missing_required_400__`
1586
1614
  }
1587
- ] : []
1588
- ];
1615
+ ] : [],
1616
+ ...extras
1617
+ ]);
1589
1618
  }
1590
1619
  };
1591
1620
  var CombinedParamResolver = class extends ParamResolverBase {
@@ -1609,10 +1638,28 @@ var CombinedParamResolver = class extends ParamResolverBase {
1609
1638
  const suffix = Object.entries(this.resolvers).map(([key, resolver]) => `${key.toString()}_${resolver.toString()}`).join("__");
1610
1639
  return `CombinedParamResolver_${suffix}`;
1611
1640
  }
1612
- toSwaggerInfo() {
1613
- return Object.values(this.resolvers).flatMap(
1641
+ toSwaggerInfo(extras = []) {
1642
+ const combined = Object.values(this.resolvers).flatMap(
1614
1643
  (resolver) => resolver.toSwaggerInfo()
1615
1644
  );
1645
+ return super.toSwaggerInfo([...combined, ...extras]);
1646
+ }
1647
+ };
1648
+ var TransformParamResolver = class extends ParamResolverBase {
1649
+ constructor(baseResolver, transformFn) {
1650
+ super();
1651
+ this.baseResolver = baseResolver;
1652
+ this.transformFn = transformFn;
1653
+ }
1654
+ async resolve(req, ref) {
1655
+ const baseValue = await this.baseResolver.resolve(req, ref);
1656
+ return this.transformFn(baseValue, ref, req);
1657
+ }
1658
+ toString() {
1659
+ return `Transform_${this.baseResolver.toString()}`;
1660
+ }
1661
+ toSwaggerInfo(extras = []) {
1662
+ return this.baseResolver.toSwaggerInfo(extras);
1616
1663
  }
1617
1664
  };
1618
1665
  var getParamResolver = (input) => {
@@ -2078,6 +2125,7 @@ export {
2078
2125
  ReturnMessageDto,
2079
2126
  StringReturnMessageDto,
2080
2127
  TokenGuard,
2128
+ TransformParamResolver,
2081
2129
  abortableToken,
2082
2130
  createAbortableProvider,
2083
2131
  createI18n,