@corelicense/node 0.2.0 → 0.5.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.
Files changed (153) hide show
  1. package/README.md +71 -4
  2. package/dist/client/license-api-client.d.ts +3 -2
  3. package/dist/client/license-api-client.d.ts.map +1 -1
  4. package/dist/client/license-api-client.js +44 -4
  5. package/dist/client/license-api-client.js.map +1 -1
  6. package/dist/client/map-client-error.d.ts +5 -0
  7. package/dist/client/map-client-error.d.ts.map +1 -0
  8. package/dist/client/map-client-error.js +63 -0
  9. package/dist/client/map-client-error.js.map +1 -0
  10. package/dist/client/public-keys-client.d.ts.map +1 -1
  11. package/dist/client/public-keys-client.js +20 -2
  12. package/dist/client/public-keys-client.js.map +1 -1
  13. package/dist/core-license.d.ts +19 -1
  14. package/dist/core-license.d.ts.map +1 -1
  15. package/dist/core-license.js +195 -51
  16. package/dist/core-license.js.map +1 -1
  17. package/dist/crypto/verify-policy-token.d.ts.map +1 -1
  18. package/dist/crypto/verify-policy-token.js +75 -5
  19. package/dist/crypto/verify-policy-token.js.map +1 -1
  20. package/dist/env/load-options-from-env.d.ts.map +1 -1
  21. package/dist/env/load-options-from-env.js +2 -1
  22. package/dist/env/load-options-from-env.js.map +1 -1
  23. package/dist/env/resolve-api-url.js +1 -1
  24. package/dist/env/resolve-api-url.js.map +1 -1
  25. package/dist/errors/api-error.d.ts +17 -0
  26. package/dist/errors/api-error.d.ts.map +1 -0
  27. package/dist/errors/api-error.js +43 -0
  28. package/dist/errors/api-error.js.map +1 -0
  29. package/dist/errors/codes.d.ts +40 -0
  30. package/dist/errors/codes.d.ts.map +1 -0
  31. package/dist/errors/codes.js +39 -0
  32. package/dist/errors/codes.js.map +1 -0
  33. package/dist/errors/config-error.d.ts +7 -0
  34. package/dist/errors/config-error.d.ts.map +1 -0
  35. package/dist/errors/config-error.js +21 -0
  36. package/dist/errors/config-error.js.map +1 -0
  37. package/dist/errors/feature-error.d.ts +2 -1
  38. package/dist/errors/feature-error.d.ts.map +1 -1
  39. package/dist/errors/feature-error.js +13 -2
  40. package/dist/errors/feature-error.js.map +1 -1
  41. package/dist/errors/index.d.ts +6 -0
  42. package/dist/errors/index.d.ts.map +1 -1
  43. package/dist/errors/index.js +6 -0
  44. package/dist/errors/index.js.map +1 -1
  45. package/dist/errors/license-error.d.ts +48 -7
  46. package/dist/errors/license-error.d.ts.map +1 -1
  47. package/dist/errors/license-error.js +104 -14
  48. package/dist/errors/license-error.js.map +1 -1
  49. package/dist/errors/module-error.d.ts +7 -0
  50. package/dist/errors/module-error.d.ts.map +1 -0
  51. package/dist/errors/module-error.js +20 -0
  52. package/dist/errors/module-error.js.map +1 -0
  53. package/dist/errors/policy-error.d.ts +10 -1
  54. package/dist/errors/policy-error.d.ts.map +1 -1
  55. package/dist/errors/policy-error.js +16 -2
  56. package/dist/errors/policy-error.js.map +1 -1
  57. package/dist/errors/quota-error.d.ts +2 -1
  58. package/dist/errors/quota-error.d.ts.map +1 -1
  59. package/dist/errors/quota-error.js +15 -2
  60. package/dist/errors/quota-error.js.map +1 -1
  61. package/dist/errors/runtime-error.d.ts +12 -0
  62. package/dist/errors/runtime-error.d.ts.map +1 -0
  63. package/dist/errors/runtime-error.js +37 -0
  64. package/dist/errors/runtime-error.js.map +1 -0
  65. package/dist/errors/throw-for-status.d.ts +3 -0
  66. package/dist/errors/throw-for-status.d.ts.map +1 -0
  67. package/dist/errors/throw-for-status.js +21 -0
  68. package/dist/errors/throw-for-status.js.map +1 -0
  69. package/dist/guards/cli-guard.d.ts.map +1 -1
  70. package/dist/guards/cli-guard.js +12 -6
  71. package/dist/guards/cli-guard.js.map +1 -1
  72. package/dist/guards/express-middleware.d.ts.map +1 -1
  73. package/dist/guards/express-middleware.js +1 -5
  74. package/dist/guards/express-middleware.js.map +1 -1
  75. package/dist/guards/express-routes.d.ts +9 -0
  76. package/dist/guards/express-routes.d.ts.map +1 -0
  77. package/dist/guards/express-routes.js +12 -0
  78. package/dist/guards/express-routes.js.map +1 -0
  79. package/dist/guards/fastify-plugin.d.ts.map +1 -1
  80. package/dist/guards/fastify-plugin.js +1 -5
  81. package/dist/guards/fastify-plugin.js.map +1 -1
  82. package/dist/guards/feature-guard.d.ts +1 -0
  83. package/dist/guards/feature-guard.d.ts.map +1 -1
  84. package/dist/guards/feature-guard.js +14 -0
  85. package/dist/guards/feature-guard.js.map +1 -1
  86. package/dist/guards/nest-exception-filter.d.ts +6 -0
  87. package/dist/guards/nest-exception-filter.d.ts.map +1 -0
  88. package/dist/guards/nest-exception-filter.js +60 -0
  89. package/dist/guards/nest-exception-filter.js.map +1 -0
  90. package/dist/guards/nest-feature-guard.d.ts +10 -0
  91. package/dist/guards/nest-feature-guard.d.ts.map +1 -0
  92. package/dist/guards/nest-feature-guard.js +72 -0
  93. package/dist/guards/nest-feature-guard.js.map +1 -0
  94. package/dist/guards/nest-module.d.ts +3 -0
  95. package/dist/guards/nest-module.d.ts.map +1 -1
  96. package/dist/guards/nest-module.js +13 -2
  97. package/dist/guards/nest-module.js.map +1 -1
  98. package/dist/guards/nestjs.d.ts +6 -0
  99. package/dist/guards/nestjs.d.ts.map +1 -0
  100. package/dist/guards/nestjs.js +6 -0
  101. package/dist/guards/nestjs.js.map +1 -0
  102. package/dist/guards/quota-guard.d.ts.map +1 -1
  103. package/dist/guards/quota-guard.js +6 -1
  104. package/dist/guards/quota-guard.js.map +1 -1
  105. package/dist/guards/require-feature.decorator.d.ts +3 -0
  106. package/dist/guards/require-feature.decorator.d.ts.map +1 -0
  107. package/dist/guards/require-feature.decorator.js +4 -0
  108. package/dist/guards/require-feature.decorator.js.map +1 -0
  109. package/dist/guards/worker-guard.d.ts.map +1 -1
  110. package/dist/guards/worker-guard.js +8 -6
  111. package/dist/guards/worker-guard.js.map +1 -1
  112. package/dist/index.d.ts +6 -0
  113. package/dist/index.d.ts.map +1 -1
  114. package/dist/index.js +5 -0
  115. package/dist/index.js.map +1 -1
  116. package/dist/instance/domain-hash.d.ts +3 -0
  117. package/dist/instance/domain-hash.d.ts.map +1 -0
  118. package/dist/instance/domain-hash.js +11 -0
  119. package/dist/instance/domain-hash.js.map +1 -0
  120. package/dist/instance/instance-id.d.ts.map +1 -1
  121. package/dist/instance/instance-id.js +1 -6
  122. package/dist/instance/instance-id.js.map +1 -1
  123. package/dist/runtime/licensed-module-registry.d.ts +22 -0
  124. package/dist/runtime/licensed-module-registry.d.ts.map +1 -0
  125. package/dist/runtime/licensed-module-registry.js +80 -0
  126. package/dist/runtime/licensed-module-registry.js.map +1 -0
  127. package/dist/runtime/licensed-service-container.d.ts +23 -0
  128. package/dist/runtime/licensed-service-container.d.ts.map +1 -0
  129. package/dist/runtime/licensed-service-container.js +89 -0
  130. package/dist/runtime/licensed-service-container.js.map +1 -0
  131. package/dist/runtime/licensed-service.d.ts +7 -0
  132. package/dist/runtime/licensed-service.d.ts.map +1 -0
  133. package/dist/runtime/licensed-service.js +10 -0
  134. package/dist/runtime/licensed-service.js.map +1 -0
  135. package/dist/runtime/module-registry.d.ts.map +1 -1
  136. package/dist/runtime/module-registry.js +2 -1
  137. package/dist/runtime/module-registry.js.map +1 -1
  138. package/dist/runtime/service-container.d.ts.map +1 -1
  139. package/dist/runtime/service-container.js +2 -1
  140. package/dist/runtime/service-container.js.map +1 -1
  141. package/dist/types/bootstrap.d.ts +32 -0
  142. package/dist/types/bootstrap.d.ts.map +1 -0
  143. package/dist/types/bootstrap.js +2 -0
  144. package/dist/types/bootstrap.js.map +1 -0
  145. package/dist/types/index.d.ts +1 -0
  146. package/dist/types/index.d.ts.map +1 -1
  147. package/dist/types/index.js +1 -0
  148. package/dist/types/index.js.map +1 -1
  149. package/dist/types/options.d.ts +14 -3
  150. package/dist/types/options.d.ts.map +1 -1
  151. package/dist/types/policy.d.ts +2 -0
  152. package/dist/types/policy.d.ts.map +1 -1
  153. package/package.json +20 -5
@@ -3,6 +3,7 @@ export declare class QuotaExceededError extends LicenseError {
3
3
  readonly quotaName: string;
4
4
  readonly limit?: number;
5
5
  readonly current?: number;
6
- constructor(quotaName: string, limit?: number, current?: number);
6
+ constructor(quotaName: string, limit?: number, current?: number, source?: string);
7
+ toJSON(): Record<string, unknown>;
7
8
  }
8
9
  //# sourceMappingURL=quota-error.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"quota-error.d.ts","sourceRoot":"","sources":["../../src/errors/quota-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;gBAEd,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;CAWhE"}
1
+ {"version":3,"file":"quota-error.d.ts","sourceRoot":"","sources":["../../src/errors/quota-error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;gBAEd,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAevE,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAQ3C"}
@@ -1,14 +1,27 @@
1
+ import { LicenseErrorCode } from './codes.js';
1
2
  import { LicenseError } from './license-error.js';
2
3
  export class QuotaExceededError extends LicenseError {
3
4
  quotaName;
4
5
  limit;
5
6
  current;
6
- constructor(quotaName, limit, current) {
7
- super(`Quota "${quotaName}" exceeded${limit !== undefined ? ` (limit: ${limit})` : ''}`, 'QUOTA_EXCEEDED', 'limited');
7
+ constructor(quotaName, limit, current, source) {
8
+ super(`Quota "${quotaName}" exceeded${limit !== undefined ? ` (limit: ${limit})` : ''}`, {
9
+ code: LicenseErrorCode.QUOTA_EXCEEDED,
10
+ status: 'limited',
11
+ source: source ?? 'quota-guard',
12
+ });
8
13
  this.name = 'QuotaExceededError';
9
14
  this.quotaName = quotaName;
10
15
  this.limit = limit;
11
16
  this.current = current;
12
17
  }
18
+ toJSON() {
19
+ return {
20
+ ...super.toJSON(),
21
+ quotaName: this.quotaName,
22
+ limit: this.limit,
23
+ current: this.current,
24
+ };
25
+ }
13
26
  }
14
27
  //# sourceMappingURL=quota-error.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"quota-error.js","sourceRoot":"","sources":["../../src/errors/quota-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IACzC,SAAS,CAAS;IAClB,KAAK,CAAU;IACf,OAAO,CAAU;IAE1B,YAAY,SAAiB,EAAE,KAAc,EAAE,OAAgB;QAC7D,KAAK,CACH,UAAU,SAAS,aAAa,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EACjF,gBAAgB,EAChB,SAAS,CACV,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"quota-error.js","sourceRoot":"","sources":["../../src/errors/quota-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IACzC,SAAS,CAAS;IAClB,KAAK,CAAU;IACf,OAAO,CAAU;IAE1B,YAAY,SAAiB,EAAE,KAAc,EAAE,OAAgB,EAAE,MAAe;QAC9E,KAAK,CACH,UAAU,SAAS,aAAa,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EACjF;YACE,IAAI,EAAE,gBAAgB,CAAC,cAAc;YACrC,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,MAAM,IAAI,aAAa;SAChC,CACF,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEQ,MAAM;QACb,OAAO;YACL,GAAG,KAAK,CAAC,MAAM,EAAE;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import { LicenseError } from './license-error.js';
2
+ export declare class ServiceNotBoundError extends LicenseError {
3
+ readonly serviceName: string;
4
+ constructor(serviceName: string);
5
+ toJSON(): Record<string, unknown>;
6
+ }
7
+ export declare class ModuleNotRegisteredError extends LicenseError {
8
+ readonly moduleName: string;
9
+ constructor(moduleName: string);
10
+ toJSON(): Record<string, unknown>;
11
+ }
12
+ //# sourceMappingURL=runtime-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-error.d.ts","sourceRoot":"","sources":["../../src/errors/runtime-error.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,qBAAa,oBAAqB,SAAQ,YAAY;IACpD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAEjB,WAAW,EAAE,MAAM;IAStB,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAM3C;AAED,qBAAa,wBAAyB,SAAQ,YAAY;IACxD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,UAAU,EAAE,MAAM;IASrB,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAM3C"}
@@ -0,0 +1,37 @@
1
+ import { LicenseErrorCode } from './codes.js';
2
+ import { LicenseError } from './license-error.js';
3
+ export class ServiceNotBoundError extends LicenseError {
4
+ serviceName;
5
+ constructor(serviceName) {
6
+ super(`Service "${serviceName}" is not bound`, {
7
+ code: LicenseErrorCode.SERVICE_NOT_BOUND,
8
+ source: 'service-container.resolve',
9
+ });
10
+ this.name = 'ServiceNotBoundError';
11
+ this.serviceName = serviceName;
12
+ }
13
+ toJSON() {
14
+ return {
15
+ ...super.toJSON(),
16
+ serviceName: this.serviceName,
17
+ };
18
+ }
19
+ }
20
+ export class ModuleNotRegisteredError extends LicenseError {
21
+ moduleName;
22
+ constructor(moduleName) {
23
+ super(`Module "${moduleName}" is not registered`, {
24
+ code: LicenseErrorCode.MODULE_NOT_REGISTERED,
25
+ source: 'module-registry.get',
26
+ });
27
+ this.name = 'ModuleNotRegisteredError';
28
+ this.moduleName = moduleName;
29
+ }
30
+ toJSON() {
31
+ return {
32
+ ...super.toJSON(),
33
+ moduleName: this.moduleName,
34
+ };
35
+ }
36
+ }
37
+ //# sourceMappingURL=runtime-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-error.js","sourceRoot":"","sources":["../../src/errors/runtime-error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,OAAO,oBAAqB,SAAQ,YAAY;IAC3C,WAAW,CAAS;IAE7B,YAAY,WAAmB;QAC7B,KAAK,CAAC,YAAY,WAAW,gBAAgB,EAAE;YAC7C,IAAI,EAAE,gBAAgB,CAAC,iBAAiB;YACxC,MAAM,EAAE,2BAA2B;SACpC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAEQ,MAAM;QACb,OAAO;YACL,GAAG,KAAK,CAAC,MAAM,EAAE;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,wBAAyB,SAAQ,YAAY;IAC/C,UAAU,CAAS;IAE5B,YAAY,UAAkB;QAC5B,KAAK,CAAC,WAAW,UAAU,qBAAqB,EAAE;YAChD,IAAI,EAAE,gBAAgB,CAAC,qBAAqB;YAC5C,MAAM,EAAE,qBAAqB;SAC9B,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAEQ,MAAM;QACb,OAAO;YACL,GAAG,KAAK,CAAC,MAAM,EAAE;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ import type { LicenseStatusValue } from '../types/status.js';
2
+ export declare function throwForTerminalStatus(status: LicenseStatusValue, source?: string): void;
3
+ //# sourceMappingURL=throw-for-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"throw-for-status.d.ts","sourceRoot":"","sources":["../../src/errors/throw-for-status.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,kBAAkB,EAC1B,MAAM,SAAwC,GAC7C,IAAI,CAkBN"}
@@ -0,0 +1,21 @@
1
+ import { LicenseExpiredError, LicenseInvalidError, LicenseRevokedError, LicenseSuspendedError, OfflineGraceExpiredError, } from './license-error.js';
2
+ export function throwForTerminalStatus(status, source = 'core-license.throwForTerminalStatus') {
3
+ switch (status) {
4
+ case 'active':
5
+ case 'limited':
6
+ case 'offline':
7
+ return;
8
+ case 'suspended':
9
+ throw new LicenseSuspendedError(undefined, source);
10
+ case 'revoked':
11
+ throw new LicenseRevokedError(undefined, source);
12
+ case 'expired':
13
+ throw new LicenseExpiredError(undefined, source);
14
+ case 'grace_expired':
15
+ throw new OfflineGraceExpiredError(undefined, source);
16
+ case 'invalid':
17
+ default:
18
+ throw new LicenseInvalidError(undefined, { source });
19
+ }
20
+ }
21
+ //# sourceMappingURL=throw-for-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"throw-for-status.js","sourceRoot":"","sources":["../../src/errors/throw-for-status.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAG5B,MAAM,UAAU,sBAAsB,CACpC,MAA0B,EAC1B,MAAM,GAAG,qCAAqC;IAE9C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,SAAS;YACZ,OAAO;QACT,KAAK,WAAW;YACd,MAAM,IAAI,qBAAqB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACrD,KAAK,SAAS;YACZ,MAAM,IAAI,mBAAmB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACnD,KAAK,SAAS;YACZ,MAAM,IAAI,mBAAmB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACnD,KAAK,eAAe;YAClB,MAAM,IAAI,wBAAwB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACxD,KAAK,SAAS,CAAC;QACf;YACE,MAAM,IAAI,mBAAmB,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACzD,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cli-guard.d.ts","sourceRoot":"","sources":["../../src/guards/cli-guard.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,wBAAsB,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB5F"}
1
+ {"version":3,"file":"cli-guard.d.ts","sourceRoot":"","sources":["../../src/guards/cli-guard.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,wBAAsB,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB5F"}
@@ -1,4 +1,5 @@
1
1
  import { LicenseExpiredError, LicenseInvalidError, LicenseRevokedError, LicenseSuspendedError, OfflineGraceExpiredError, } from '../errors/license-error.js';
2
+ import { LicenseErrorCode } from '../errors/codes.js';
2
3
  export async function guardCommand(status, commandName) {
3
4
  switch (status.status) {
4
5
  case 'active':
@@ -6,17 +7,22 @@ export async function guardCommand(status, commandName) {
6
7
  case 'offline':
7
8
  return;
8
9
  case 'suspended':
9
- throw new LicenseSuspendedError(`Command "${commandName}" is suspended`);
10
+ throw new LicenseSuspendedError(`Command "${commandName}" is suspended`, 'cli-guard');
10
11
  case 'revoked':
11
- throw new LicenseRevokedError(`Command "${commandName}" is revoked`);
12
+ throw new LicenseRevokedError(`Command "${commandName}" is revoked`, 'cli-guard');
12
13
  case 'expired':
13
- throw new LicenseExpiredError(`Command "${commandName}" is expired`);
14
+ throw new LicenseExpiredError(`Command "${commandName}" is expired`, 'cli-guard');
14
15
  case 'grace_expired':
15
- throw new OfflineGraceExpiredError(`Command "${commandName}" grace expired`);
16
+ throw new OfflineGraceExpiredError(`Command "${commandName}" grace expired`, 'cli-guard');
16
17
  case 'invalid':
17
- throw new LicenseInvalidError(`Command "${commandName}" invalid license`);
18
+ throw new LicenseInvalidError(`Command "${commandName}" invalid license`, {
19
+ source: 'cli-guard',
20
+ });
18
21
  default:
19
- throw new LicenseInvalidError(`Command "${commandName}" is not allowed`);
22
+ throw new LicenseInvalidError(`Command "${commandName}" is not allowed`, {
23
+ code: LicenseErrorCode.COMMAND_NOT_ALLOWED,
24
+ source: 'cli-guard',
25
+ });
20
26
  }
21
27
  }
22
28
  //# sourceMappingURL=cli-guard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-guard.js","sourceRoot":"","sources":["../../src/guards/cli-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AAGpC,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAqB,EAAE,WAAmB;IAC3E,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,SAAS;YACZ,OAAO;QACT,KAAK,WAAW;YACd,MAAM,IAAI,qBAAqB,CAAC,YAAY,WAAW,gBAAgB,CAAC,CAAC;QAC3E,KAAK,SAAS;YACZ,MAAM,IAAI,mBAAmB,CAAC,YAAY,WAAW,cAAc,CAAC,CAAC;QACvE,KAAK,SAAS;YACZ,MAAM,IAAI,mBAAmB,CAAC,YAAY,WAAW,cAAc,CAAC,CAAC;QACvE,KAAK,eAAe;YAClB,MAAM,IAAI,wBAAwB,CAAC,YAAY,WAAW,iBAAiB,CAAC,CAAC;QAC/E,KAAK,SAAS;YACZ,MAAM,IAAI,mBAAmB,CAAC,YAAY,WAAW,mBAAmB,CAAC,CAAC;QAC5E;YACE,MAAM,IAAI,mBAAmB,CAAC,YAAY,WAAW,kBAAkB,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"cli-guard.js","sourceRoot":"","sources":["../../src/guards/cli-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAqB,EAAE,WAAmB;IAC3E,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,SAAS;YACZ,OAAO;QACT,KAAK,WAAW;YACd,MAAM,IAAI,qBAAqB,CAAC,YAAY,WAAW,gBAAgB,EAAE,WAAW,CAAC,CAAC;QACxF,KAAK,SAAS;YACZ,MAAM,IAAI,mBAAmB,CAAC,YAAY,WAAW,cAAc,EAAE,WAAW,CAAC,CAAC;QACpF,KAAK,SAAS;YACZ,MAAM,IAAI,mBAAmB,CAAC,YAAY,WAAW,cAAc,EAAE,WAAW,CAAC,CAAC;QACpF,KAAK,eAAe;YAClB,MAAM,IAAI,wBAAwB,CAAC,YAAY,WAAW,iBAAiB,EAAE,WAAW,CAAC,CAAC;QAC5F,KAAK,SAAS;YACZ,MAAM,IAAI,mBAAmB,CAAC,YAAY,WAAW,mBAAmB,EAAE;gBACxE,MAAM,EAAE,WAAW;aACpB,CAAC,CAAC;QACL;YACE,MAAM,IAAI,mBAAmB,CAAC,YAAY,WAAW,kBAAkB,EAAE;gBACvE,IAAI,EAAE,gBAAgB,CAAC,mBAAmB;gBAC1C,MAAM,EAAE,WAAW;aACpB,CAAC,CAAC;IACP,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"express-middleware.d.ts","sourceRoot":"","sources":["../../src/guards/express-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG/D,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,WAAW,EACpB,OAAO,GAAE,mBAAwB,GAChC,cAAc,CA2BhB"}
1
+ {"version":3,"file":"express-middleware.d.ts","sourceRoot":"","sources":["../../src/guards/express-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG/D,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,WAAW,EACpB,OAAO,GAAE,mBAAwB,GAChC,cAAc,CAuBhB"}
@@ -13,11 +13,7 @@ export function createExpressMiddleware(license, options = {}) {
13
13
  }
14
14
  catch (error) {
15
15
  if (error instanceof LicenseError) {
16
- res.status(403).json({
17
- code: error.code,
18
- message: error.message,
19
- status: error.status,
20
- });
16
+ res.status(403).json(error.toClientPayload());
21
17
  return;
22
18
  }
23
19
  next(error);
@@ -1 +1 @@
1
- {"version":3,"file":"express-middleware.js","sourceRoot":"","sources":["../../src/guards/express-middleware.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,MAAM,UAAU,uBAAuB,CACrC,OAAoB,EACpB,UAA+B,EAAE;IAEjC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAErD,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC;QAEjC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC;YAC9B,IAAI,EAAE,CAAC;QACT,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;gBAClC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,MAAM,EAAE,KAAK,CAAC,MAAM;iBACrB,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,CAAC;QACd,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"express-middleware.js","sourceRoot":"","sources":["../../src/guards/express-middleware.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,MAAM,UAAU,uBAAuB,CACrC,OAAoB,EACpB,UAA+B,EAAE;IAEjC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAErD,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC;QAEjC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,IAAI,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC;YAC9B,IAAI,EAAE,CAAC;QACT,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;gBAClC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;gBAC9C,OAAO;YACT,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,CAAC;QACd,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Application, RequestHandler } from 'express';
2
+ import type { LicensedModuleRegistry } from '../runtime/licensed-module-registry.js';
3
+ export interface LicensedRouteDefinition {
4
+ path: string;
5
+ module: string;
6
+ router: RequestHandler;
7
+ }
8
+ export declare function registerLicensedRoutes(app: Application, registry: LicensedModuleRegistry, routes: LicensedRouteDefinition[]): string[];
9
+ //# sourceMappingURL=express-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express-routes.d.ts","sourceRoot":"","sources":["../../src/guards/express-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAErF,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,sBAAsB,EAChC,MAAM,EAAE,uBAAuB,EAAE,GAChC,MAAM,EAAE,CAaV"}
@@ -0,0 +1,12 @@
1
+ export function registerLicensedRoutes(app, registry, routes) {
2
+ const mounted = [];
3
+ for (const route of routes) {
4
+ if (!registry.has(route.module)) {
5
+ continue;
6
+ }
7
+ app.use(route.path, route.router);
8
+ mounted.push(route.path);
9
+ }
10
+ return mounted;
11
+ }
12
+ //# sourceMappingURL=express-routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express-routes.js","sourceRoot":"","sources":["../../src/guards/express-routes.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,sBAAsB,CACpC,GAAgB,EAChB,QAAgC,EAChC,MAAiC;IAEjC,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,SAAS;QACX,CAAC;QAED,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fastify-plugin.d.ts","sourceRoot":"","sources":["../../src/guards/fastify-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG/D,MAAM,WAAW,+BAAgC,SAAQ,mBAAmB;IAC1E,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,eAAO,MAAM,wBAAwB,EAAE,kBAAkB,CAAC,+BAA+B,CA2BxF,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,WAAW,EACpB,YAAY,GAAE,mBAAwB,GACrC,kBAAkB,CAOpB"}
1
+ {"version":3,"file":"fastify-plugin.d.ts","sourceRoot":"","sources":["../../src/guards/fastify-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG/D,MAAM,WAAW,+BAAgC,SAAQ,mBAAmB;IAC1E,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,eAAO,MAAM,wBAAwB,EAAE,kBAAkB,CAAC,+BAA+B,CAuBxF,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,WAAW,EACpB,YAAY,GAAE,mBAAwB,GACrC,kBAAkB,CAOpB"}
@@ -11,11 +11,7 @@ export const coreLicenseFastifyPlugin = async (fastify, options) => {
11
11
  }
12
12
  catch (error) {
13
13
  if (error instanceof LicenseError) {
14
- return reply.status(403).send({
15
- code: error.code,
16
- message: error.message,
17
- status: error.status,
18
- });
14
+ return reply.status(403).send(error.toClientPayload());
19
15
  }
20
16
  throw error;
21
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fastify-plugin.js","sourceRoot":"","sources":["../../src/guards/fastify-plugin.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAM1D,MAAM,CAAC,MAAM,wBAAwB,GAAwD,KAAK,EAChG,OAAO,EACP,OAAO,EACP,EAAE;IACF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAErD,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACrD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;gBAClC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,MAAM,EAAE,KAAK,CAAC,MAAM;iBACrB,CAAC,CAAC;YACL,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,UAAU,mBAAmB,CACjC,OAAoB,EACpB,eAAoC,EAAE;IAEtC,OAAO,KAAK,EAAE,OAAO,EAAE,EAAE;QACvB,MAAM,OAAO,CAAC,QAAQ,CAAC,wBAAwB,EAAE;YAC/C,GAAG,YAAY;YACf,OAAO;SACR,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"fastify-plugin.js","sourceRoot":"","sources":["../../src/guards/fastify-plugin.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAM1D,MAAM,CAAC,MAAM,wBAAwB,GAAwD,KAAK,EAChG,OAAO,EACP,OAAO,EACP,EAAE;IACF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAErD,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACrD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;gBAClC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;YACzD,CAAC;YAED,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,UAAU,mBAAmB,CACjC,OAAoB,EACpB,eAAoC,EAAE;IAEtC,OAAO,KAAK,EAAE,OAAO,EAAE,EAAE;QACvB,MAAM,OAAO,CAAC,QAAQ,CAAC,wBAAwB,EAAE;YAC/C,GAAG,YAAY;YACf,OAAO;SACR,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import type { Policy } from '../types/policy.js';
2
2
  export declare function assertFeatureEnabled(policy: Policy | null, feature: string): void;
3
+ export declare function isFeatureEnabled(policy: Policy | null, feature: string): boolean;
3
4
  //# sourceMappingURL=feature-guard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"feature-guard.d.ts","sourceRoot":"","sources":["../../src/guards/feature-guard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAmBjF"}
1
+ {"version":3,"file":"feature-guard.d.ts","sourceRoot":"","sources":["../../src/guards/feature-guard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAmBjF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAiBhF"}
@@ -15,4 +15,18 @@ export function assertFeatureEnabled(policy, feature) {
15
15
  throw new FeatureDisabledError(feature);
16
16
  }
17
17
  }
18
+ export function isFeatureEnabled(policy, feature) {
19
+ if (!policy) {
20
+ return false;
21
+ }
22
+ const segments = feature.split('.');
23
+ let current = policy.features;
24
+ for (const segment of segments) {
25
+ if (typeof current !== 'object' || current === null) {
26
+ return false;
27
+ }
28
+ current = current[segment];
29
+ }
30
+ return current === true;
31
+ }
18
32
  //# sourceMappingURL=feature-guard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"feature-guard.js","sourceRoot":"","sources":["../../src/guards/feature-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGlE,MAAM,UAAU,oBAAoB,CAAC,MAAqB,EAAE,OAAe;IACzE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,oBAAoB,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,OAAO,GAAY,MAAM,CAAC,QAAQ,CAAC;IAEvC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACpD,MAAM,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,GAAI,OAAmC,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"feature-guard.js","sourceRoot":"","sources":["../../src/guards/feature-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGlE,MAAM,UAAU,oBAAoB,CAAC,MAAqB,EAAE,OAAe;IACzE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,oBAAoB,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,OAAO,GAAY,MAAM,CAAC,QAAQ,CAAC;IAEvC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACpD,MAAM,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,GAAI,OAAmC,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAqB,EAAE,OAAe;IACrE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,OAAO,GAAY,MAAM,CAAC,QAAQ,CAAC;IAEvC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACpD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,GAAI,OAAmC,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,OAAO,KAAK,IAAI,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type ArgumentsHost, type ExceptionFilter } from '@nestjs/common';
2
+ import { LicenseError } from '../errors/license-error.js';
3
+ export declare class CoreLicenseExceptionFilter implements ExceptionFilter {
4
+ catch(exception: LicenseError, host: ArgumentsHost): void;
5
+ }
6
+ //# sourceMappingURL=nest-exception-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nest-exception-filter.d.ts","sourceRoot":"","sources":["../../src/guards/nest-exception-filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,eAAe,EAErB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,qBACa,0BAA2B,YAAW,eAAe;IAChE,KAAK,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;CAM1D"}
@@ -0,0 +1,60 @@
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ import { Catch, HttpStatus, } from '@nestjs/common';
36
+ import { LicenseError } from '../errors/license-error.js';
37
+ let CoreLicenseExceptionFilter = (() => {
38
+ let _classDecorators = [Catch(LicenseError)];
39
+ let _classDescriptor;
40
+ let _classExtraInitializers = [];
41
+ let _classThis;
42
+ var CoreLicenseExceptionFilter = class {
43
+ static { _classThis = this; }
44
+ static {
45
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
46
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
47
+ CoreLicenseExceptionFilter = _classThis = _classDescriptor.value;
48
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
49
+ __runInitializers(_classThis, _classExtraInitializers);
50
+ }
51
+ catch(exception, host) {
52
+ const ctx = host.switchToHttp();
53
+ const response = ctx.getResponse();
54
+ response.status(HttpStatus.FORBIDDEN).json(exception.toClientPayload());
55
+ }
56
+ };
57
+ return CoreLicenseExceptionFilter = _classThis;
58
+ })();
59
+ export { CoreLicenseExceptionFilter };
60
+ //# sourceMappingURL=nest-exception-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nest-exception-filter.js","sourceRoot":"","sources":["../../src/guards/nest-exception-filter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EACL,KAAK,EAGL,UAAU,GACX,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;IAG7C,0BAA0B;4BADtC,KAAK,CAAC,YAAY,CAAC;;;;;;;;YACpB,6KAOC;;;YAPY,uDAA0B;;QACrC,KAAK,CAAC,SAAuB,EAAE,IAAmB;YAChD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAY,CAAC;YAE7C,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,CAAC;QAC1E,CAAC;;;;SANU,0BAA0B"}
@@ -0,0 +1,10 @@
1
+ import { type CanActivate, type ExecutionContext } from '@nestjs/common';
2
+ import { Reflector } from '@nestjs/core';
3
+ import { CoreLicense } from '../core-license.js';
4
+ export declare class CoreLicenseFeatureGuard implements CanActivate {
5
+ private readonly license;
6
+ private readonly reflector;
7
+ constructor(license: CoreLicense, reflector: Reflector);
8
+ canActivate(context: ExecutionContext): Promise<boolean>;
9
+ }
10
+ //# sourceMappingURL=nest-feature-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nest-feature-guard.d.ts","sourceRoot":"","sources":["../../src/guards/nest-feature-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,qBACa,uBAAwB,YAAW,WAAW;IAEvD,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADT,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,SAAS;IAGjC,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;CAc/D"}
@@ -0,0 +1,72 @@
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ import { Injectable, } from '@nestjs/common';
36
+ import { REQUIRE_FEATURE_KEY } from './require-feature.decorator.js';
37
+ let CoreLicenseFeatureGuard = (() => {
38
+ let _classDecorators = [Injectable()];
39
+ let _classDescriptor;
40
+ let _classExtraInitializers = [];
41
+ let _classThis;
42
+ var CoreLicenseFeatureGuard = class {
43
+ static { _classThis = this; }
44
+ static {
45
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
46
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
47
+ CoreLicenseFeatureGuard = _classThis = _classDescriptor.value;
48
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
49
+ __runInitializers(_classThis, _classExtraInitializers);
50
+ }
51
+ license;
52
+ reflector;
53
+ constructor(license, reflector) {
54
+ this.license = license;
55
+ this.reflector = reflector;
56
+ }
57
+ async canActivate(context) {
58
+ const feature = this.reflector.getAllAndOverride(REQUIRE_FEATURE_KEY, [
59
+ context.getHandler(),
60
+ context.getClass(),
61
+ ]);
62
+ if (!feature) {
63
+ return true;
64
+ }
65
+ await this.license.requireFeature(feature);
66
+ return true;
67
+ }
68
+ };
69
+ return CoreLicenseFeatureGuard = _classThis;
70
+ })();
71
+ export { CoreLicenseFeatureGuard };
72
+ //# sourceMappingURL=nest-feature-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nest-feature-guard.js","sourceRoot":"","sources":["../../src/guards/nest-feature-guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EACL,UAAU,GAGX,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;IAGxD,uBAAuB;4BADnC,UAAU,EAAE;;;;;;;;YACb,6KAoBC;;;YApBY,uDAAuB;;QAEf,OAAO;QACP,SAAS;QAF5B,YACmB,OAAoB,EACpB,SAAoB;YADpB,YAAO,GAAP,OAAO,CAAa;YACpB,cAAS,GAAT,SAAS,CAAW;QACpC,CAAC;QAEJ,KAAK,CAAC,WAAW,CAAC,OAAyB;YACzC,MAAM,OAAO,GACX,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAqB,mBAAmB,EAAE;gBACxE,OAAO,CAAC,UAAU,EAAE;gBACpB,OAAO,CAAC,QAAQ,EAAE;aACnB,CAAC,CAAC;YAEL,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;;;;SAnBU,uBAAuB"}
@@ -3,4 +3,7 @@ import type { CoreLicenseOptions } from '../types/options.js';
3
3
  export declare class CoreLicenseModule {
4
4
  static forRoot(options: CoreLicenseOptions): DynamicModule;
5
5
  }
6
+ export { CoreLicenseGuard } from './nest-guard.js';
7
+ export { CoreLicenseFeatureGuard } from './nest-feature-guard.js';
8
+ export { RequireFeature, REQUIRE_FEATURE_KEY } from './require-feature.decorator.js';
6
9
  //# sourceMappingURL=nest-module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nest-module.d.ts","sourceRoot":"","sources":["../../src/guards/nest-module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG9D,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,aAAa;CAiB3D"}
1
+ {"version":3,"file":"nest-module.d.ts","sourceRoot":"","sources":["../../src/guards/nest-module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAK9D,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,aAAa;CAsB3D;AAED,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC"}
@@ -1,4 +1,7 @@
1
+ import { APP_FILTER } from '@nestjs/core';
1
2
  import { CoreLicense } from '../core-license.js';
3
+ import { CoreLicenseExceptionFilter } from './nest-exception-filter.js';
4
+ import { CoreLicenseFeatureGuard } from './nest-feature-guard.js';
2
5
  import { CoreLicenseGuard } from './nest-guard.js';
3
6
  export class CoreLicenseModule {
4
7
  static forRoot(options) {
@@ -12,10 +15,18 @@ export class CoreLicenseModule {
12
15
  };
13
16
  return {
14
17
  module: CoreLicenseModule,
15
- providers: [licenseProvider, CoreLicenseGuard],
16
- exports: [CoreLicense, CoreLicenseGuard],
18
+ providers: [
19
+ licenseProvider,
20
+ CoreLicenseGuard,
21
+ CoreLicenseFeatureGuard,
22
+ { provide: APP_FILTER, useClass: CoreLicenseExceptionFilter },
23
+ ],
24
+ exports: [CoreLicense, CoreLicenseGuard, CoreLicenseFeatureGuard],
17
25
  global: true,
18
26
  };
19
27
  }
20
28
  }
29
+ export { CoreLicenseGuard } from './nest-guard.js';
30
+ export { CoreLicenseFeatureGuard } from './nest-feature-guard.js';
31
+ export { RequireFeature, REQUIRE_FEATURE_KEY } from './require-feature.decorator.js';
21
32
  //# sourceMappingURL=nest-module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nest-module.js","sourceRoot":"","sources":["../../src/guards/nest-module.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,OAAO,iBAAiB;IAC5B,MAAM,CAAC,OAAO,CAAC,OAA2B;QACxC,MAAM,eAAe,GAAG;YACtB,OAAO,EAAE,WAAW;YACpB,UAAU,EAAE,KAAK,IAAI,EAAE;gBACrB,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;gBACzC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrB,OAAO,OAAO,CAAC;YACjB,CAAC;SACF,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,iBAAiB;YACzB,SAAS,EAAE,CAAC,eAAe,EAAE,gBAAgB,CAAC;YAC9C,OAAO,EAAE,CAAC,WAAW,EAAE,gBAAgB,CAAC;YACxC,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"nest-module.js","sourceRoot":"","sources":["../../src/guards/nest-module.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,OAAO,iBAAiB;IAC5B,MAAM,CAAC,OAAO,CAAC,OAA2B;QACxC,MAAM,eAAe,GAAG;YACtB,OAAO,EAAE,WAAW;YACpB,UAAU,EAAE,KAAK,IAAI,EAAE;gBACrB,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;gBACzC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrB,OAAO,OAAO,CAAC;YACjB,CAAC;SACF,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,iBAAiB;YACzB,SAAS,EAAE;gBACT,eAAe;gBACf,gBAAgB;gBAChB,uBAAuB;gBACvB,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,0BAA0B,EAAE;aAC9D;YACD,OAAO,EAAE,CAAC,WAAW,EAAE,gBAAgB,EAAE,uBAAuB,CAAC;YACjE,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;CACF;AAED,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { CoreLicenseModule } from './nest-module.js';
2
+ export { CoreLicenseGuard } from './nest-guard.js';
3
+ export { CoreLicenseFeatureGuard } from './nest-feature-guard.js';
4
+ export { CoreLicenseExceptionFilter } from './nest-exception-filter.js';
5
+ export { RequireFeature, REQUIRE_FEATURE_KEY } from './require-feature.decorator.js';
6
+ //# sourceMappingURL=nestjs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nestjs.d.ts","sourceRoot":"","sources":["../../src/guards/nestjs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { CoreLicenseModule } from './nest-module.js';
2
+ export { CoreLicenseGuard } from './nest-guard.js';
3
+ export { CoreLicenseFeatureGuard } from './nest-feature-guard.js';
4
+ export { CoreLicenseExceptionFilter } from './nest-exception-filter.js';
5
+ export { RequireFeature, REQUIRE_FEATURE_KEY } from './require-feature.decorator.js';
6
+ //# sourceMappingURL=nestjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nestjs.js","sourceRoot":"","sources":["../../src/guards/nestjs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"quota-guard.d.ts","sourceRoot":"","sources":["../../src/guards/quota-guard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,IAAI,CAUN;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI,CAON;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,gBAAgB,CAAC,IAAI,SAAoB,GAAG,UAAU,CAErE"}
1
+ {"version":3,"file":"quota-guard.d.ts","sourceRoot":"","sources":["../../src/guards/quota-guard.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,IAAI,CAaN;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,UAAU,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI,CAON;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,gBAAgB,CAAC,IAAI,SAAoB,GAAG,UAAU,CAErE"}
@@ -1,7 +1,12 @@
1
1
  import { QuotaExceededError } from '../errors/quota-error.js';
2
+ import { LicenseInvalidError } from '../errors/license-error.js';
3
+ import { LicenseErrorCode } from '../errors/codes.js';
2
4
  export function assertWithinLimit(policy, limitName, currentValue) {
3
5
  if (!policy) {
4
- return;
6
+ throw new LicenseInvalidError('No active policy available', {
7
+ code: LicenseErrorCode.POLICY_NOT_AVAILABLE,
8
+ source: 'quota-guard.assertWithinLimit',
9
+ });
5
10
  }
6
11
  const limit = policy.limits[limitName];
7
12
  if (limit !== undefined && currentValue > limit) {
@@ -1 +1 @@
1
- {"version":3,"file":"quota-guard.js","sourceRoot":"","sources":["../../src/guards/quota-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAI9D,MAAM,UAAU,iBAAiB,CAC/B,MAAqB,EACrB,SAAiB,EACjB,YAAoB;IAEpB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEvC,IAAI,KAAK,KAAK,SAAS,IAAI,YAAY,GAAG,KAAK,EAAE,CAAC;QAChD,MAAM,IAAI,kBAAkB,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAAiB,EACjB,SAAiB,EACjB,MAAc,EACd,UAAmB;IAEnB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,OAAO,GAAG,MAAM,CAAC;IAE9B,IAAI,UAAU,KAAK,SAAS,IAAI,IAAI,GAAG,UAAU,EAAE,CAAC;QAClD,MAAM,IAAI,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAI,GAAG,eAAe,EAAE;IACvD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"quota-guard.js","sourceRoot":"","sources":["../../src/guards/quota-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAItD,MAAM,UAAU,iBAAiB,CAC/B,MAAqB,EACrB,SAAiB,EACjB,YAAoB;IAEpB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,mBAAmB,CAAC,4BAA4B,EAAE;YAC1D,IAAI,EAAE,gBAAgB,CAAC,oBAAoB;YAC3C,MAAM,EAAE,+BAA+B;SACxC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEvC,IAAI,KAAK,KAAK,SAAS,IAAI,YAAY,GAAG,KAAK,EAAE,CAAC;QAChD,MAAM,IAAI,kBAAkB,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAAiB,EACjB,SAAiB,EACjB,MAAc,EACd,UAAmB;IAEnB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,OAAO,GAAG,MAAM,CAAC;IAE9B,IAAI,UAAU,KAAK,SAAS,IAAI,IAAI,GAAG,UAAU,EAAE,CAAC;QAClD,MAAM,IAAI,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAI,GAAG,eAAe,EAAE;IACvD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const REQUIRE_FEATURE_KEY = "corelicense:feature";
2
+ export declare const RequireFeature: (feature: string) => import("@nestjs/common").CustomDecorator<string>;
3
+ //# sourceMappingURL=require-feature.decorator.d.ts.map