@revenium/perplexity 1.0.10 → 1.0.14

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 (255) hide show
  1. package/.env.example +2 -2
  2. package/README.md +448 -566
  3. package/examples/basic.ts +17 -0
  4. package/examples/chat-completions.ts +22 -0
  5. package/examples/enhanced.ts +20 -0
  6. package/examples/streaming.ts +24 -0
  7. package/package.json +45 -61
  8. package/playground/basic.js +7 -17
  9. package/playground/enhanced.js +9 -22
  10. package/playground/streaming.js +10 -26
  11. package/src/index.ts +1 -35
  12. package/src/interfaces/chatCompletionRequest.ts +9 -0
  13. package/src/interfaces/credential.ts +4 -0
  14. package/src/interfaces/meteringRequest.ts +14 -0
  15. package/src/{types/metering.ts → interfaces/meteringResponse.ts} +3 -3
  16. package/src/interfaces/operation.ts +4 -0
  17. package/src/{types → interfaces}/subscriber.ts +1 -1
  18. package/src/interfaces/tokenCounts.ts +7 -0
  19. package/src/{types → interfaces}/usageMetadata.ts +1 -1
  20. package/src/middleware.ts +151 -0
  21. package/src/models/Logger.ts +5 -5
  22. package/src/models/Metering.ts +86 -0
  23. package/src/utils/calculateDurationMs.ts +1 -1
  24. package/src/utils/constants/constants.ts +9 -16
  25. package/src/utils/constants/logLevels.ts +1 -0
  26. package/src/utils/constants/messages.ts +8 -32
  27. package/src/utils/constants/models.ts +20 -0
  28. package/src/utils/extractTokenCount.ts +26 -0
  29. package/src/utils/generateTransactionId.ts +1 -1
  30. package/src/utils/index.ts +39 -12
  31. package/src/utils/loadEnv.ts +8 -0
  32. package/src/utils/safeExtract.ts +60 -11
  33. package/tsconfig.json +10 -18
  34. package/dist/index.d.ts +0 -8
  35. package/dist/index.d.ts.map +0 -1
  36. package/dist/index.js +0 -40
  37. package/dist/index.js.map +0 -1
  38. package/dist/models/Exception/ApiResponseError.d.ts +0 -6
  39. package/dist/models/Exception/ApiResponseError.d.ts.map +0 -1
  40. package/dist/models/Exception/ApiResponseError.js +0 -13
  41. package/dist/models/Exception/ApiResponseError.js.map +0 -1
  42. package/dist/models/Exception/ConfigurationError.d.ts +0 -4
  43. package/dist/models/Exception/ConfigurationError.d.ts.map +0 -1
  44. package/dist/models/Exception/ConfigurationError.js +0 -11
  45. package/dist/models/Exception/ConfigurationError.js.map +0 -1
  46. package/dist/models/Exception/MeteringError.d.ts +0 -5
  47. package/dist/models/Exception/MeteringError.d.ts.map +0 -1
  48. package/dist/models/Exception/MeteringError.js +0 -12
  49. package/dist/models/Exception/MeteringError.js.map +0 -1
  50. package/dist/models/Exception/MiddlewareActivationError.d.ts +0 -4
  51. package/dist/models/Exception/MiddlewareActivationError.d.ts.map +0 -1
  52. package/dist/models/Exception/MiddlewareActivationError.js +0 -11
  53. package/dist/models/Exception/MiddlewareActivationError.js.map +0 -1
  54. package/dist/models/Exception/StreamTrackingError.d.ts +0 -4
  55. package/dist/models/Exception/StreamTrackingError.d.ts.map +0 -1
  56. package/dist/models/Exception/StreamTrackingError.js +0 -11
  57. package/dist/models/Exception/StreamTrackingError.js.map +0 -1
  58. package/dist/models/Exception/TokenCountingError.d.ts +0 -4
  59. package/dist/models/Exception/TokenCountingError.d.ts.map +0 -1
  60. package/dist/models/Exception/TokenCountingError.js +0 -11
  61. package/dist/models/Exception/TokenCountingError.js.map +0 -1
  62. package/dist/models/Exception/index.d.ts +0 -7
  63. package/dist/models/Exception/index.d.ts.map +0 -1
  64. package/dist/models/Exception/index.js +0 -23
  65. package/dist/models/Exception/index.js.map +0 -1
  66. package/dist/models/Logger.d.ts +0 -10
  67. package/dist/models/Logger.d.ts.map +0 -1
  68. package/dist/models/Logger.js +0 -36
  69. package/dist/models/Logger.js.map +0 -1
  70. package/dist/models/index.d.ts +0 -3
  71. package/dist/models/index.d.ts.map +0 -1
  72. package/dist/models/index.js +0 -19
  73. package/dist/models/index.js.map +0 -1
  74. package/dist/perplexity-ai/client.d.ts +0 -31
  75. package/dist/perplexity-ai/client.d.ts.map +0 -1
  76. package/dist/perplexity-ai/client.js +0 -75
  77. package/dist/perplexity-ai/client.js.map +0 -1
  78. package/dist/perplexity-ai/index.d.ts +0 -3
  79. package/dist/perplexity-ai/index.d.ts.map +0 -1
  80. package/dist/perplexity-ai/index.js +0 -19
  81. package/dist/perplexity-ai/index.js.map +0 -1
  82. package/dist/perplexity-ai/middleware.d.ts +0 -2
  83. package/dist/perplexity-ai/middleware.d.ts.map +0 -1
  84. package/dist/perplexity-ai/middleware.js +0 -195
  85. package/dist/perplexity-ai/middleware.js.map +0 -1
  86. package/dist/types/context.d.ts +0 -9
  87. package/dist/types/context.d.ts.map +0 -1
  88. package/dist/types/context.js +0 -3
  89. package/dist/types/context.js.map +0 -1
  90. package/dist/types/index.d.ts +0 -12
  91. package/dist/types/index.d.ts.map +0 -1
  92. package/dist/types/index.js +0 -28
  93. package/dist/types/index.js.map +0 -1
  94. package/dist/types/metering.d.ts +0 -28
  95. package/dist/types/metering.d.ts.map +0 -1
  96. package/dist/types/metering.js +0 -3
  97. package/dist/types/metering.js.map +0 -1
  98. package/dist/types/modelInfo.d.ts +0 -6
  99. package/dist/types/modelInfo.d.ts.map +0 -1
  100. package/dist/types/modelInfo.js +0 -3
  101. package/dist/types/modelInfo.js.map +0 -1
  102. package/dist/types/operation.d.ts +0 -5
  103. package/dist/types/operation.d.ts.map +0 -1
  104. package/dist/types/operation.js +0 -9
  105. package/dist/types/operation.js.map +0 -1
  106. package/dist/types/perplexityConfig.d.ts +0 -5
  107. package/dist/types/perplexityConfig.d.ts.map +0 -1
  108. package/dist/types/perplexityConfig.js +0 -3
  109. package/dist/types/perplexityConfig.js.map +0 -1
  110. package/dist/types/provider.d.ts +0 -4
  111. package/dist/types/provider.d.ts.map +0 -1
  112. package/dist/types/provider.js +0 -8
  113. package/dist/types/provider.js.map +0 -1
  114. package/dist/types/reveniumConfig.d.ts +0 -6
  115. package/dist/types/reveniumConfig.d.ts.map +0 -1
  116. package/dist/types/reveniumConfig.js +0 -3
  117. package/dist/types/reveniumConfig.js.map +0 -1
  118. package/dist/types/streamTracker.d.ts +0 -9
  119. package/dist/types/streamTracker.d.ts.map +0 -1
  120. package/dist/types/streamTracker.js +0 -3
  121. package/dist/types/streamTracker.js.map +0 -1
  122. package/dist/types/subscriber.d.ts +0 -9
  123. package/dist/types/subscriber.d.ts.map +0 -1
  124. package/dist/types/subscriber.js +0 -3
  125. package/dist/types/subscriber.js.map +0 -1
  126. package/dist/types/tokenCounts.d.ts +0 -6
  127. package/dist/types/tokenCounts.d.ts.map +0 -1
  128. package/dist/types/tokenCounts.js +0 -3
  129. package/dist/types/tokenCounts.js.map +0 -1
  130. package/dist/types/usageData.d.ts +0 -16
  131. package/dist/types/usageData.d.ts.map +0 -1
  132. package/dist/types/usageData.js +0 -3
  133. package/dist/types/usageData.js.map +0 -1
  134. package/dist/types/usageMetadata.d.ts +0 -14
  135. package/dist/types/usageMetadata.d.ts.map +0 -1
  136. package/dist/types/usageMetadata.js +0 -3
  137. package/dist/types/usageMetadata.js.map +0 -1
  138. package/dist/utils/activeMiddleware.d.ts +0 -2
  139. package/dist/utils/activeMiddleware.d.ts.map +0 -1
  140. package/dist/utils/activeMiddleware.js +0 -24
  141. package/dist/utils/activeMiddleware.js.map +0 -1
  142. package/dist/utils/askConsole.d.ts +0 -2
  143. package/dist/utils/askConsole.d.ts.map +0 -1
  144. package/dist/utils/askConsole.js +0 -20
  145. package/dist/utils/askConsole.js.map +0 -1
  146. package/dist/utils/calculateDurationMs.d.ts +0 -2
  147. package/dist/utils/calculateDurationMs.d.ts.map +0 -1
  148. package/dist/utils/calculateDurationMs.js +0 -7
  149. package/dist/utils/calculateDurationMs.js.map +0 -1
  150. package/dist/utils/constants/constants.d.ts +0 -9
  151. package/dist/utils/constants/constants.d.ts.map +0 -1
  152. package/dist/utils/constants/constants.js +0 -19
  153. package/dist/utils/constants/constants.js.map +0 -1
  154. package/dist/utils/constants/messages.d.ts +0 -19
  155. package/dist/utils/constants/messages.d.ts.map +0 -1
  156. package/dist/utils/constants/messages.js +0 -22
  157. package/dist/utils/constants/messages.js.map +0 -1
  158. package/dist/utils/createMeteringRequest.d.ts +0 -3
  159. package/dist/utils/createMeteringRequest.d.ts.map +0 -1
  160. package/dist/utils/createMeteringRequest.js +0 -10
  161. package/dist/utils/createMeteringRequest.js.map +0 -1
  162. package/dist/utils/createPerplexityMetadata.d.ts +0 -3
  163. package/dist/utils/createPerplexityMetadata.d.ts.map +0 -1
  164. package/dist/utils/createPerplexityMetadata.js +0 -12
  165. package/dist/utils/createPerplexityMetadata.js.map +0 -1
  166. package/dist/utils/extractModelName.d.ts +0 -2
  167. package/dist/utils/extractModelName.d.ts.map +0 -1
  168. package/dist/utils/extractModelName.js +0 -15
  169. package/dist/utils/extractModelName.js.map +0 -1
  170. package/dist/utils/extractPerplexityTokenCounts.d.ts +0 -3
  171. package/dist/utils/extractPerplexityTokenCounts.d.ts.map +0 -1
  172. package/dist/utils/extractPerplexityTokenCounts.js +0 -17
  173. package/dist/utils/extractPerplexityTokenCounts.js.map +0 -1
  174. package/dist/utils/extractStopReason.d.ts +0 -2
  175. package/dist/utils/extractStopReason.d.ts.map +0 -1
  176. package/dist/utils/extractStopReason.js +0 -14
  177. package/dist/utils/extractStopReason.js.map +0 -1
  178. package/dist/utils/extractUsageMetadata.d.ts +0 -3
  179. package/dist/utils/extractUsageMetadata.d.ts.map +0 -1
  180. package/dist/utils/extractUsageMetadata.js +0 -15
  181. package/dist/utils/extractUsageMetadata.js.map +0 -1
  182. package/dist/utils/formatTimestamp.d.ts +0 -2
  183. package/dist/utils/formatTimestamp.d.ts.map +0 -1
  184. package/dist/utils/formatTimestamp.js +0 -7
  185. package/dist/utils/formatTimestamp.js.map +0 -1
  186. package/dist/utils/generateTransactionId.d.ts +0 -2
  187. package/dist/utils/generateTransactionId.d.ts.map +0 -1
  188. package/dist/utils/generateTransactionId.js +0 -8
  189. package/dist/utils/generateTransactionId.js.map +0 -1
  190. package/dist/utils/getEnv.d.ts +0 -4
  191. package/dist/utils/getEnv.d.ts.map +0 -1
  192. package/dist/utils/getEnv.js +0 -16
  193. package/dist/utils/getEnv.js.map +0 -1
  194. package/dist/utils/index.d.ts +0 -13
  195. package/dist/utils/index.d.ts.map +0 -1
  196. package/dist/utils/index.js +0 -29
  197. package/dist/utils/index.js.map +0 -1
  198. package/dist/utils/safeExtract.d.ts +0 -2
  199. package/dist/utils/safeExtract.d.ts.map +0 -1
  200. package/dist/utils/safeExtract.js +0 -22
  201. package/dist/utils/safeExtract.js.map +0 -1
  202. package/dist/utils/sendMeteringData.d.ts +0 -3
  203. package/dist/utils/sendMeteringData.d.ts.map +0 -1
  204. package/dist/utils/sendMeteringData.js +0 -35
  205. package/dist/utils/sendMeteringData.js.map +0 -1
  206. package/dist/utils/verifyLogVerbose.d.ts +0 -2
  207. package/dist/utils/verifyLogVerbose.d.ts.map +0 -1
  208. package/dist/utils/verifyLogVerbose.js +0 -10
  209. package/dist/utils/verifyLogVerbose.js.map +0 -1
  210. package/examples/basic-client-example.ts +0 -36
  211. package/examples/metadata-example.ts +0 -97
  212. package/examples/multiple-models-example.ts +0 -65
  213. package/examples/openai-client-example.ts +0 -76
  214. package/examples/perplexity_basic_example.ts +0 -24
  215. package/examples/perplexity_middleware_example.ts +0 -222
  216. package/examples/run-all-examples.ts +0 -118
  217. package/examples/simple-test.ts +0 -278
  218. package/examples/streaming-example.ts +0 -46
  219. package/playground/custom-config.js +0 -82
  220. package/playground/metadata.js +0 -94
  221. package/playground/multiple-models.js +0 -62
  222. package/playground/openai-client.js +0 -73
  223. package/src/models/Exception/ApiResponseError.ts +0 -6
  224. package/src/models/Exception/ConfigurationError.ts +0 -6
  225. package/src/models/Exception/MeteringError.ts +0 -6
  226. package/src/models/Exception/MiddlewareActivationError.ts +0 -6
  227. package/src/models/Exception/StreamTrackingError.ts +0 -6
  228. package/src/models/Exception/TokenCountingError.ts +0 -6
  229. package/src/models/Exception/index.ts +0 -6
  230. package/src/models/index.ts +0 -2
  231. package/src/perplexity-ai/client.ts +0 -100
  232. package/src/perplexity-ai/index.ts +0 -2
  233. package/src/perplexity-ai/middleware.ts +0 -297
  234. package/src/types/context.ts +0 -9
  235. package/src/types/index.ts +0 -11
  236. package/src/types/modelInfo.ts +0 -5
  237. package/src/types/operation.ts +0 -4
  238. package/src/types/perplexityConfig.ts +0 -4
  239. package/src/types/provider.ts +0 -3
  240. package/src/types/reveniumConfig.ts +0 -5
  241. package/src/types/streamTracker.ts +0 -9
  242. package/src/types/tokenCounts.ts +0 -5
  243. package/src/types/usageData.ts +0 -16
  244. package/src/utils/activeMiddleware.ts +0 -34
  245. package/src/utils/askConsole.ts +0 -15
  246. package/src/utils/createMeteringRequest.ts +0 -16
  247. package/src/utils/createPerplexityMetadata.ts +0 -11
  248. package/src/utils/extractModelName.ts +0 -14
  249. package/src/utils/extractPerplexityTokenCounts.ts +0 -16
  250. package/src/utils/extractStopReason.ts +0 -13
  251. package/src/utils/extractUsageMetadata.ts +0 -15
  252. package/src/utils/getEnv.ts +0 -16
  253. package/src/utils/sendMeteringData.ts +0 -46
  254. package/src/utils/verifyLogVerbose.ts +0 -7
  255. /package/src/utils/{formatTimestamp.ts → formatTimeStamp.ts} +0 -0
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateTransactionId = generateTransactionId;
4
- const uuid_1 = require("uuid");
5
- function generateTransactionId() {
6
- return (0, uuid_1.v4)();
7
- }
8
- //# sourceMappingURL=generateTransactionId.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generateTransactionId.js","sourceRoot":"","sources":["../../src/utils/generateTransactionId.ts"],"names":[],"mappings":";;AAEA,sDAEC;AAJD,+BAAoC;AAEpC,SAAgB,qBAAqB;IACnC,OAAO,IAAA,SAAM,GAAE,CAAC;AAClB,CAAC"}
@@ -1,4 +0,0 @@
1
- export declare function getReveniumApiKey(): string;
2
- export declare function getReveniumBaseUrl(): string;
3
- export declare function getPerplexityBaseUrl(): string;
4
- //# sourceMappingURL=getEnv.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getEnv.d.ts","sourceRoot":"","sources":["../../src/utils/getEnv.ts"],"names":[],"mappings":"AAKA,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C"}
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getReveniumApiKey = getReveniumApiKey;
4
- exports.getReveniumBaseUrl = getReveniumBaseUrl;
5
- exports.getPerplexityBaseUrl = getPerplexityBaseUrl;
6
- const constants_1 = require("./constants/constants");
7
- function getReveniumApiKey() {
8
- return process.env.REVENIUM_METERING_API_KEY ?? "";
9
- }
10
- function getReveniumBaseUrl() {
11
- return process.env.REVENIUM_METERING_BASE_URL || constants_1.REVENIUM_METERING_BASE_URL;
12
- }
13
- function getPerplexityBaseUrl() {
14
- return process.env.PERPLEXITY_BASE_URL || constants_1.CURRENT_PERPLEXITY_BASE_URL;
15
- }
16
- //# sourceMappingURL=getEnv.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getEnv.js","sourceRoot":"","sources":["../../src/utils/getEnv.ts"],"names":[],"mappings":";;AAKA,8CAEC;AAED,gDAEC;AAED,oDAEC;AAfD,qDAG+B;AAE/B,SAAgB,iBAAiB;IAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,EAAE,CAAC;AACrD,CAAC;AAED,SAAgB,kBAAkB;IAChC,OAAO,OAAO,CAAC,GAAG,CAAC,0BAA0B,IAAI,sCAA0B,CAAC;AAC9E,CAAC;AAED,SAAgB,oBAAoB;IAClC,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,uCAA2B,CAAC;AACxE,CAAC"}
@@ -1,13 +0,0 @@
1
- export * from "./activeMiddleware";
2
- export * from "./calculateDurationMs";
3
- export * from "./createMeteringRequest";
4
- export * from "./createPerplexityMetadata";
5
- export * from "./extractModelName";
6
- export * from "./extractPerplexityTokenCounts";
7
- export * from "./extractStopReason";
8
- export * from "./extractUsageMetadata";
9
- export * from "./formatTimestamp";
10
- export * from "./generateTransactionId";
11
- export * from "./safeExtract";
12
- export * from "./sendMeteringData";
13
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC"}
@@ -1,29 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./activeMiddleware"), exports);
18
- __exportStar(require("./calculateDurationMs"), exports);
19
- __exportStar(require("./createMeteringRequest"), exports);
20
- __exportStar(require("./createPerplexityMetadata"), exports);
21
- __exportStar(require("./extractModelName"), exports);
22
- __exportStar(require("./extractPerplexityTokenCounts"), exports);
23
- __exportStar(require("./extractStopReason"), exports);
24
- __exportStar(require("./extractUsageMetadata"), exports);
25
- __exportStar(require("./formatTimestamp"), exports);
26
- __exportStar(require("./generateTransactionId"), exports);
27
- __exportStar(require("./safeExtract"), exports);
28
- __exportStar(require("./sendMeteringData"), exports);
29
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,wDAAsC;AACtC,0DAAwC;AACxC,6DAA2C;AAC3C,qDAAmC;AACnC,iEAA+C;AAC/C,sDAAoC;AACpC,yDAAuC;AACvC,oDAAkC;AAClC,0DAAwC;AACxC,gDAA8B;AAC9B,qDAAmC"}
@@ -1,2 +0,0 @@
1
- export declare function safeExtract<T>(obj: any, path: string, defaultValue: T): T;
2
- //# sourceMappingURL=safeExtract.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"safeExtract.d.ts","sourceRoot":"","sources":["../../src/utils/safeExtract.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,CAiBzE"}
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.safeExtract = safeExtract;
4
- function safeExtract(obj, path, defaultValue) {
5
- try {
6
- const keys = path.split(".");
7
- let result = obj;
8
- for (const key of keys) {
9
- if (result && typeof result === "object" && key in result) {
10
- result = result[key];
11
- }
12
- else {
13
- return defaultValue;
14
- }
15
- }
16
- return result ?? defaultValue;
17
- }
18
- catch (error) {
19
- return defaultValue;
20
- }
21
- }
22
- //# sourceMappingURL=safeExtract.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"safeExtract.js","sourceRoot":"","sources":["../../src/utils/safeExtract.ts"],"names":[],"mappings":";;AAAA,kCAiBC;AAjBD,SAAgB,WAAW,CAAI,GAAQ,EAAE,IAAY,EAAE,YAAe;IACpE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,MAAM,GAAG,GAAG,CAAC;QAEjB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;gBAC1D,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,OAAO,YAAY,CAAC;YACtB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,IAAI,YAAY,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,YAAY,CAAC;IACtB,CAAC;AACH,CAAC"}
@@ -1,3 +0,0 @@
1
- import { MeteringRequest } from "../types";
2
- export declare function sendMeteringData(meteringRequest: MeteringRequest, apiKey: string, baseUrl: string): Promise<void>;
3
- //# sourceMappingURL=sendMeteringData.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sendMeteringData.d.ts","sourceRoot":"","sources":["../../src/utils/sendMeteringData.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAI3C,wBAAsB,gBAAgB,CACpC,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAoCf"}
@@ -1,35 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.sendMeteringData = sendMeteringData;
7
- const axios_1 = __importDefault(require("axios"));
8
- const models_1 = require("../models");
9
- const constants_1 = require("./constants/constants");
10
- async function sendMeteringData(meteringRequest, apiKey, baseUrl) {
11
- try {
12
- const response = await axios_1.default.post(`${baseUrl}/v2/ai/completions`, meteringRequest, {
13
- headers: {
14
- "Content-Type": "application/json",
15
- Accept: "application/json",
16
- "x-api-key": apiKey,
17
- },
18
- timeout: constants_1.TIMEOUT_MS,
19
- });
20
- if (response.status !== constants_1.STATUS_CODE.SUCCESS &&
21
- response.status !== constants_1.STATUS_CODE.CREATED) {
22
- throw new models_1.MeteringError(`Failed to send metering data. Status: ${response.status}`, new Error(`HTTP ${response.status}`));
23
- }
24
- else {
25
- console.log("🔍 [DEBUG] Metering data sent successfully");
26
- }
27
- }
28
- catch (error) {
29
- if (error instanceof models_1.MeteringError) {
30
- throw error;
31
- }
32
- throw new models_1.MeteringError("Failed to send metering data to Revenium", error);
33
- }
34
- }
35
- //# sourceMappingURL=sendMeteringData.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sendMeteringData.js","sourceRoot":"","sources":["../../src/utils/sendMeteringData.ts"],"names":[],"mappings":";;;;;AAKA,4CAwCC;AA7CD,kDAA0B;AAE1B,sCAA0C;AAC1C,qDAAgE;AAEzD,KAAK,UAAU,gBAAgB,CACpC,eAAgC,EAChC,MAAc,EACd,OAAe;IAEf,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,GAAG,OAAO,oBAAoB,EAC9B,eAAe,EACf;YACE,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;gBAC1B,WAAW,EAAE,MAAM;aACpB;YACD,OAAO,EAAE,sBAAU;SACpB,CACF,CAAC;QAEF,IACE,QAAQ,CAAC,MAAM,KAAK,uBAAW,CAAC,OAAO;YACvC,QAAQ,CAAC,MAAM,KAAK,uBAAW,CAAC,OAAO,EACvC,CAAC;YACD,MAAM,IAAI,sBAAa,CACrB,yCAAyC,QAAQ,CAAC,MAAM,EAAE,EAC1D,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC,CACrC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,sBAAa,EAAE,CAAC;YACnC,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,IAAI,sBAAa,CACrB,0CAA0C,EAC1C,KAAc,CACf,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function verifyLogVerbose(verbose: boolean, message: string): void;
2
- //# sourceMappingURL=verifyLogVerbose.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"verifyLogVerbose.d.ts","sourceRoot":"","sources":["../../src/utils/verifyLogVerbose.ts"],"names":[],"mappings":"AAEA,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAIxE"}
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.verifyLogVerbose = verifyLogVerbose;
4
- const models_1 = require("../models");
5
- function verifyLogVerbose(verbose, message) {
6
- if (verbose) {
7
- models_1.Logger.info(message);
8
- }
9
- }
10
- //# sourceMappingURL=verifyLogVerbose.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"verifyLogVerbose.js","sourceRoot":"","sources":["../../src/utils/verifyLogVerbose.ts"],"names":[],"mappings":";;AAEA,4CAIC;AAND,sCAAmC;AAEnC,SAAgB,gBAAgB,CAAC,OAAgB,EAAE,OAAe;IAChE,IAAI,OAAO,EAAE,CAAC;QACZ,eAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
@@ -1,36 +0,0 @@
1
- import { config } from "dotenv";
2
-
3
- // Cargar variables de entorno ANTES de importar el middleware
4
- config();
5
-
6
- import { createPerplexityClient } from "../src/perplexity-ai";
7
-
8
- async function basicExample() {
9
- console.log("\n🤖 Perplexity AI - Basic Client Example");
10
- console.log("=".repeat(50));
11
-
12
- try {
13
- // Create client instance
14
- const client = createPerplexityClient();
15
-
16
- // Make a simple chat completion
17
- const response = await client.createChatCompletion({
18
- model: "sonar-pro",
19
- messages: [
20
- {
21
- role: "user",
22
- content: "What is the meaning of life, the universe and everything?",
23
- },
24
- ],
25
- });
26
-
27
- console.log("✅ Response received:");
28
- console.log(response.choices[0].message.content);
29
- console.log("\n📊 Token usage automatically tracked by middleware");
30
- console.log("🎉 Basic client example successful!");
31
- } catch (error) {
32
- console.error("❌ Error:", error);
33
- }
34
- }
35
-
36
- basicExample().catch(console.error);
@@ -1,97 +0,0 @@
1
- import { config } from "dotenv";
2
- import { createPerplexityClient } from "../src/perplexity-ai";
3
-
4
- config();
5
-
6
- async function metadataExample() {
7
- console.log("\n📊 Perplexity AI - Metadata Tracking Example");
8
- console.log("=".repeat(50));
9
-
10
- try {
11
- // Create client instance
12
- const client = createPerplexityClient();
13
-
14
- // Example 1: Basic metadata
15
- console.log("\n1️⃣ Basic metadata tracking:");
16
- const basicResponse = await client.createChatCompletion({
17
- model: "sonar-pro",
18
- messages: [
19
- {
20
- role: "user",
21
- content: "Analyze this quarterly report for key insights",
22
- },
23
- ],
24
- usageMetadata: {
25
- traceId: "conv-28a7e9d4",
26
- taskType: "document-analysis",
27
- subscriberEmail: "user@example.com",
28
- organizationId: "acme-corp",
29
- subscriptionId: "premium-plan",
30
- },
31
- });
32
-
33
- console.log(
34
- "✅ Response:",
35
- basicResponse.choices[0]?.message?.content?.substring(0, 100) + "..."
36
- );
37
-
38
- // Example 2: Advanced metadata
39
- console.log("\n2️⃣ Advanced metadata tracking:");
40
- const advancedResponse = await client.createChatCompletion({
41
- model: "sonar-pro",
42
- messages: [
43
- {
44
- role: "user",
45
- content: "What are the latest developments in AI?",
46
- },
47
- ],
48
- usageMetadata: {
49
- traceId: "conv-advanced-123",
50
- taskType: "research",
51
- subscriberId: "user-12345",
52
- subscriberCredentialName: "api-key-1",
53
- productId: "business-intelligence",
54
- agent: "research-assistant-v2",
55
- responseQualityScore: 0.95,
56
- },
57
- });
58
-
59
- console.log(
60
- "✅ Response:",
61
- advancedResponse.choices[0]?.message?.content?.substring(0, 100) + "..."
62
- );
63
-
64
- // Example 3: Streaming with metadata
65
- console.log("\n3️⃣ Streaming with metadata:");
66
- const stream = await client.createStreamingChatCompletion({
67
- model: "sonar-pro",
68
- messages: [
69
- {
70
- role: "user",
71
- content: "Write a creative story about AI",
72
- },
73
- ],
74
- usageMetadata: {
75
- traceId: "conv-streaming-456",
76
- taskType: "creative-writing",
77
- organizationId: "creative-studio",
78
- agent: "story-generator",
79
- },
80
- });
81
-
82
- console.log("📝 Streaming response with metadata:");
83
- for await (const chunk of stream) {
84
- const content = chunk.choices[0]?.delta?.content;
85
- if (content) {
86
- process.stdout.write(content);
87
- }
88
- }
89
-
90
- console.log("\n\n🎉 All metadata examples completed successfully!");
91
- console.log("📊 All usage tracked with custom metadata");
92
- } catch (error) {
93
- console.error("❌ Error:", error);
94
- }
95
- }
96
-
97
- metadataExample().catch(console.error);
@@ -1,65 +0,0 @@
1
- import { config } from "dotenv";
2
- import { createPerplexityClient } from "../src/perplexity-ai";
3
-
4
- config();
5
-
6
- async function multipleModelsExample() {
7
- console.log("\n🔧 Perplexity AI - Multiple Models Example");
8
- console.log("=".repeat(50));
9
-
10
- try {
11
- // Create client instance
12
- const client = createPerplexityClient();
13
-
14
- // Test different prompts with the same model
15
- const testCases = [
16
- {
17
- name: "sonar-pro (Quantum Computing)",
18
- description: "Latest and most capable model",
19
- prompt: "Explain quantum computing in simple terms",
20
- },
21
- {
22
- name: "sonar-pro (AI Developments)",
23
- description: "Latest and most capable model",
24
- prompt: "What are the latest developments in AI?",
25
- },
26
- {
27
- name: "sonar-pro (Weather)",
28
- description: "Latest and most capable model",
29
- prompt: "What is the weather like today?",
30
- },
31
- ];
32
-
33
- for (const testCase of testCases) {
34
- console.log(`\n🤖 Testing: ${testCase.name}`);
35
- console.log(`📝 Description: ${testCase.description}`);
36
- console.log("-".repeat(40));
37
-
38
- try {
39
- const response = await client.createChatCompletion({
40
- model: "sonar-pro",
41
- messages: [
42
- {
43
- role: "user",
44
- content: testCase.prompt,
45
- },
46
- ],
47
- });
48
-
49
- console.log("✅ Response:");
50
- console.log(response.choices[0]?.message?.content?.substring(0, 200) + "...");
51
- console.log("📊 Usage tracked by middleware");
52
-
53
- } catch (error) {
54
- console.log(`❌ Error with ${testCase.name}:`, error);
55
- }
56
- }
57
-
58
- console.log("\n🎉 Multiple models example completed!");
59
-
60
- } catch (error) {
61
- console.error("❌ Error:", error);
62
- }
63
- }
64
-
65
- multipleModelsExample().catch(console.error);
@@ -1,76 +0,0 @@
1
- import { config } from "dotenv";
2
- import { OpenAI } from "openai";
3
-
4
- // Import middleware to activate automatic tracking
5
- import "../src/perplexity-ai";
6
-
7
- config();
8
-
9
- async function openaiClientExample() {
10
- console.log("\n🤖 Perplexity AI - OpenAI Client Example");
11
- console.log("=".repeat(50));
12
-
13
- try {
14
- // Create OpenAI client configured for Perplexity (like in basic example)
15
- const client = new OpenAI({
16
- apiKey: process.env.PERPLEXITY_API_KEY,
17
- baseURL: "https://api.perplexity.ai",
18
- });
19
-
20
- console.log("✅ OpenAI client configured for Perplexity AI");
21
- console.log("📊 Middleware automatically tracking all requests");
22
-
23
- // Test different types of requests
24
- console.log("\n1️⃣ Basic chat completion:");
25
- const basicResponse = await client.chat.completions.create({
26
- model: "sonar-pro",
27
- messages: [
28
- {
29
- role: "user",
30
- content: "What is the meaning of life, the universe and everything?",
31
- },
32
- ],
33
- });
34
- console.log("✅ Response:", basicResponse.choices[0]?.message?.content?.substring(0, 100) + "...");
35
-
36
- console.log("\n2️⃣ Streaming chat completion:");
37
- const stream = await client.chat.completions.create({
38
- model: "sonar-pro",
39
- messages: [
40
- {
41
- role: "user",
42
- content: "Write a short poem about AI",
43
- },
44
- ],
45
- stream: true,
46
- });
47
-
48
- console.log("📝 Streaming response:");
49
- for await (const chunk of stream) {
50
- const content = chunk.choices[0]?.delta?.content;
51
- if (content) {
52
- process.stdout.write(content);
53
- }
54
- }
55
-
56
- console.log("\n\n3️⃣ Different prompt:");
57
- const differentResponse = await client.chat.completions.create({
58
- model: "sonar-pro",
59
- messages: [
60
- {
61
- role: "user",
62
- content: "Explain machine learning in one sentence",
63
- },
64
- ],
65
- });
66
- console.log("✅ Response:", differentResponse.choices[0]?.message?.content);
67
-
68
- console.log("\n🎉 All examples completed successfully!");
69
- console.log("📊 All usage automatically tracked by middleware");
70
-
71
- } catch (error) {
72
- console.error("❌ Error:", error);
73
- }
74
- }
75
-
76
- openaiClientExample().catch(console.error);
@@ -1,24 +0,0 @@
1
- import { config } from "dotenv";
2
- import { OpenAI } from "openai";
3
-
4
- config();
5
-
6
- const client = new OpenAI({
7
- apiKey: process.env.PERPLEXITY_API_KEY,
8
- baseURL: "https://api.perplexity.ai",
9
- });
10
-
11
- const getResponse = async () => {
12
- const response = await client.chat.completions.create({
13
- model: "sonar-pro",
14
- messages: [
15
- {
16
- role: "user",
17
- content: "What is the meaning of life, the universe and everything?",
18
- },
19
- ],
20
- });
21
- console.log("response", response);
22
- };
23
-
24
- getResponse();