@revenium/perplexity 1.0.11 → 1.0.15

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 (51) hide show
  1. package/.env.example +3 -3
  2. package/README.md +447 -603
  3. package/dist/index.js +19 -0
  4. package/dist/interfaces/chatCompletionRequest.d.ts +8 -0
  5. package/dist/interfaces/chatCompletionRequest.js +2 -0
  6. package/dist/interfaces/credential.d.ts +4 -0
  7. package/dist/interfaces/credential.js +2 -0
  8. package/dist/interfaces/meteringRequest.d.ts +13 -0
  9. package/dist/interfaces/meteringRequest.js +2 -0
  10. package/dist/interfaces/meteringResponse.d.ts +27 -0
  11. package/dist/interfaces/meteringResponse.js +2 -0
  12. package/dist/interfaces/operation.d.ts +4 -0
  13. package/dist/interfaces/operation.js +8 -0
  14. package/dist/interfaces/subscriber.d.ts +8 -0
  15. package/dist/interfaces/subscriber.js +2 -0
  16. package/dist/interfaces/tokenCounts.d.ts +7 -0
  17. package/dist/interfaces/tokenCounts.js +2 -0
  18. package/dist/interfaces/usageMetadata.d.ts +13 -0
  19. package/dist/interfaces/usageMetadata.js +2 -0
  20. package/dist/middleware.d.ts +22 -0
  21. package/dist/middleware.js +129 -0
  22. package/dist/models/Logger.js +35 -0
  23. package/dist/models/Metering.d.ts +9 -0
  24. package/dist/models/Metering.js +72 -0
  25. package/dist/utils/calculateDurationMs.d.ts +1 -0
  26. package/dist/utils/calculateDurationMs.js +6 -0
  27. package/dist/utils/constants/constants.d.ts +6 -0
  28. package/dist/utils/constants/constants.js +11 -0
  29. package/dist/utils/constants/messages.d.ts +5 -0
  30. package/dist/utils/constants/messages.js +8 -0
  31. package/dist/utils/constants/models.d.ts +1 -0
  32. package/dist/utils/constants/models.js +21 -0
  33. package/dist/utils/extractTokenCount.d.ts +2 -0
  34. package/dist/utils/extractTokenCount.js +28 -0
  35. package/dist/utils/formatTimeStamp.d.ts +1 -0
  36. package/dist/utils/formatTimeStamp.js +6 -0
  37. package/dist/utils/generateTransactionId.d.ts +1 -0
  38. package/dist/utils/generateTransactionId.js +7 -0
  39. package/dist/utils/index.d.ts +6 -0
  40. package/dist/utils/index.js +23 -0
  41. package/dist/utils/loadEnv.d.ts +1 -0
  42. package/dist/utils/loadEnv.js +7 -0
  43. package/dist/utils/safeExtract.d.ts +29 -0
  44. package/dist/utils/safeExtract.js +67 -0
  45. package/examples/chat-completions.ts +0 -1
  46. package/examples/enhanced.ts +0 -1
  47. package/examples/streaming.ts +0 -1
  48. package/package.json +47 -45
  49. package/playground/basic.js +0 -1
  50. package/playground/enhanced.js +0 -1
  51. package/playground/streaming.js +0 -1
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.safeExtract = void 0;
4
+ /**
5
+ * Safe extraction utility functions.
6
+ */
7
+ var safeExtract;
8
+ (function (safeExtract) {
9
+ /**
10
+ * Safely extract a value from an object, returning undefined if the path doesn't exist.
11
+ */
12
+ function get(obj, path, defaultValue) {
13
+ try {
14
+ const keys = path.split(".");
15
+ let result = obj;
16
+ for (const key of keys) {
17
+ if (result == null || typeof result !== "object") {
18
+ return defaultValue;
19
+ }
20
+ result = result[key];
21
+ }
22
+ return result !== null && result !== void 0 ? result : defaultValue;
23
+ }
24
+ catch {
25
+ return defaultValue;
26
+ }
27
+ }
28
+ safeExtract.get = get;
29
+ /**
30
+ * Safely extract a string value, returning empty string if not found.
31
+ */
32
+ function string(obj, path) {
33
+ return get(obj, path, "") || "";
34
+ }
35
+ safeExtract.string = string;
36
+ /**
37
+ * Safely extract a number value, returning 0 if not found.
38
+ */
39
+ function number(obj, path) {
40
+ const value = get(obj, path, 0);
41
+ return typeof value === "number" ? value : 0;
42
+ }
43
+ safeExtract.number = number;
44
+ /**
45
+ * Safely extract a boolean value, returning false if not found.
46
+ */
47
+ function boolean(obj, path) {
48
+ return get(obj, path, false) || false;
49
+ }
50
+ safeExtract.boolean = boolean;
51
+ /**
52
+ * Safely extract an object value, returning empty object if not found.
53
+ */
54
+ function object(obj, path) {
55
+ const value = get(obj, path, {});
56
+ return typeof value === "object" && value !== null ? value : {};
57
+ }
58
+ safeExtract.object = object;
59
+ /**
60
+ * Safely extract an array value, returning empty array if not found.
61
+ */
62
+ function array(obj, path) {
63
+ const value = get(obj, path, []);
64
+ return Array.isArray(value) ? value : [];
65
+ }
66
+ safeExtract.array = array;
67
+ })(safeExtract || (exports.safeExtract = safeExtract = {}));
@@ -6,7 +6,6 @@ const chatCompletionsExample = async () => {
6
6
  const middleware = new PerplexityReveniumMiddleware();
7
7
  const model = middleware.getGenerativeModel("sonar-pro");
8
8
  const result = await model.createChatCompletion({
9
- model: "sonar-pro",
10
9
  messages: [
11
10
  {
12
11
  role: "user",
@@ -6,7 +6,6 @@ async function enhancedRequest() {
6
6
  const middleware = new PerplexityReveniumMiddleware();
7
7
  const model = middleware.getGenerativeModel("sonar-pro");
8
8
  const result = await model.createChatCompletion({
9
- model: "sonar-pro",
10
9
  messages: [
11
10
  { role: "user", content: "Explain quantum computing in simple terms" },
12
11
  ],
@@ -6,7 +6,6 @@ const chatCompletionStreamingExample = async () => {
6
6
  const middleware = new PerplexityReveniumMiddleware();
7
7
  const model = middleware.getGenerativeModel("sonar-pro");
8
8
  const result = await model.createChatCompletionStream({
9
- model: "sonar-pro",
10
9
  messages: [
11
10
  {
12
11
  role: "user",
package/package.json CHANGED
@@ -1,45 +1,47 @@
1
- {
2
- "name": "@revenium/perplexity",
3
- "version": "1.0.11",
4
- "description": "NodeJS middleware for perplexity's AI API",
5
- "homepage": "https://github.com/revenium/revenium-middleware-perplexity-node#readme",
6
- "bugs": {
7
- "url": "https://github.com/revenium/revenium-middleware-perplexity-node/issues"
8
- },
9
- "repository": {
10
- "type": "git",
11
- "url": "git+https://github.com/revenium/revenium-middleware-perplexity-node.git"
12
- },
13
- "main": "index.js",
14
- "scripts": {
15
- "build": "tsc",
16
- "p-basic": "npx ts-node playground/basic.js",
17
- "p-streaming": "npx ts-node playground/streaming.js",
18
- "p-enhanced": "npx ts-node playground/enhanced.js",
19
- "e-basic": "npx ts-node examples/basic.ts",
20
- "e-streaming": "npx ts-node examples/streaming.ts",
21
- "e-chat-completions": "npx ts-node examples/chat-completions.ts",
22
- "e-enhanced": "npx ts-node examples/enhanced.ts"
23
- },
24
- "keywords": [
25
- "revenium",
26
- "middleware",
27
- "perplexity",
28
- "ai",
29
- "chat",
30
- "completion",
31
- "metering",
32
- "monitoring",
33
- "typescript"
34
- ],
35
- "author": "",
36
- "license": "ISC",
37
- "type": "commonjs",
38
- "dependencies": {
39
- "dotenv": "^17.2.2",
40
- "openai": "^5.23.1",
41
- "ts-node": "^10.9.2",
42
- "typescript": "^5.9.2",
43
- "uuid": "^13.0.0"
44
- }
45
- }
1
+ {
2
+ "name": "@revenium/perplexity",
3
+ "version": "1.0.15",
4
+ "description": "NodeJS middleware for perplexity's AI API",
5
+ "homepage": "https://github.com/revenium/revenium-middleware-perplexity-node#readme",
6
+ "bugs": {
7
+ "url": "https://github.com/revenium/revenium-middleware-perplexity-node/issues"
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/revenium/revenium-middleware-perplexity-node.git"
12
+ },
13
+ "main": "dist/index.js",
14
+ "types": "dist/index.d.ts",
15
+ "scripts": {
16
+ "build": "tsc -b",
17
+ "p-basic": "npx ts-node playground/basic.js",
18
+ "p-streaming": "npx ts-node playground/streaming.js",
19
+ "p-enhanced": "npx ts-node playground/enhanced.js",
20
+ "e-basic": "npx ts-node examples/basic.ts",
21
+ "e-streaming": "npx ts-node examples/streaming.ts",
22
+ "e-chat-completions": "npx ts-node examples/chat-completions.ts",
23
+ "e-enhanced": "npx ts-node examples/enhanced.ts"
24
+ },
25
+ "keywords": [
26
+ "revenium",
27
+ "middleware",
28
+ "perplexity",
29
+ "ai",
30
+ "chat",
31
+ "completion",
32
+ "metering",
33
+ "monitoring",
34
+ "typescript"
35
+ ],
36
+ "author": "",
37
+ "license": "ISC",
38
+ "type": "module",
39
+ "dependencies": {
40
+ "@revenium/perplexity": "^1.0.14",
41
+ "dotenv": "^17.2.2",
42
+ "openai": "^5.23.1",
43
+ "ts-node": "^10.9.2",
44
+ "typescript": "^5.9.2",
45
+ "uuid": "^13.0.0"
46
+ }
47
+ }
@@ -5,7 +5,6 @@ const basicExample = async () => {
5
5
  const middleware = new PerplexityReveniumMiddleware();
6
6
  const model = middleware.getGenerativeModel("sonar-pro");
7
7
  const result = await model.createChatCompletion({
8
- model: "sonar-pro",
9
8
  messages: [
10
9
  {
11
10
  role: "user",
@@ -5,7 +5,6 @@ const enhancedExample = async () => {
5
5
  const middleware = new PerplexityReveniumMiddleware();
6
6
  const model = middleware.getGenerativeModel("sonar-pro");
7
7
  const result = await model.createChatCompletion({
8
- model: "sonar-pro",
9
8
  messages: [
10
9
  {
11
10
  role: "user",
@@ -6,7 +6,6 @@ const streamingExample = async () => {
6
6
  const middleware = new PerplexityReveniumMiddleware();
7
7
  const model = middleware.getGenerativeModel("sonar-pro");
8
8
  const result = await model.createChatCompletionStream({
9
- model: "sonar-pro",
10
9
  messages: [
11
10
  {
12
11
  role: "user",