@revenium/perplexity 2.0.5 → 2.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +113 -97
- package/LICENSE +21 -21
- package/README.md +376 -290
- package/SECURITY.md +34 -34
- package/dist/cjs/core/client/manager.js +6 -3
- package/dist/cjs/core/client/manager.js.map +1 -1
- package/dist/cjs/core/config/index.js +0 -1
- package/dist/cjs/core/config/index.js.map +1 -1
- package/dist/cjs/core/config/manager.js +0 -1
- package/dist/cjs/core/config/manager.js.map +1 -1
- package/dist/cjs/core/config/validator.js +18 -16
- package/dist/cjs/core/config/validator.js.map +1 -1
- package/dist/cjs/core/middleware/interfaces.js +4 -4
- package/dist/cjs/core/middleware/interfaces.js.map +1 -1
- package/dist/cjs/core/middleware/streaming-wrapper.js +4 -4
- package/dist/cjs/core/middleware/streaming-wrapper.js.map +1 -1
- package/dist/cjs/core/providers/detector.js +0 -2
- package/dist/cjs/core/providers/detector.js.map +1 -1
- package/dist/cjs/core/providers/index.js +0 -1
- package/dist/cjs/core/providers/index.js.map +1 -1
- package/dist/cjs/core/tracking/api-client.js +3 -3
- package/dist/cjs/core/tracking/api-client.js.map +1 -1
- package/dist/cjs/index.js +2 -40
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/utils/stop-reason-mapper.js +18 -20
- package/dist/cjs/utils/stop-reason-mapper.js.map +1 -1
- package/dist/esm/core/client/manager.js +6 -3
- package/dist/esm/core/client/manager.js.map +1 -1
- package/dist/esm/core/config/index.js +3 -4
- package/dist/esm/core/config/index.js.map +1 -1
- package/dist/esm/core/config/manager.js +0 -1
- package/dist/esm/core/config/manager.js.map +1 -1
- package/dist/esm/core/config/validator.js +18 -16
- package/dist/esm/core/config/validator.js.map +1 -1
- package/dist/esm/core/middleware/interfaces.js +1 -1
- package/dist/esm/core/middleware/interfaces.js.map +1 -1
- package/dist/esm/core/middleware/streaming-wrapper.js +2 -2
- package/dist/esm/core/middleware/streaming-wrapper.js.map +1 -1
- package/dist/esm/core/providers/detector.js +0 -2
- package/dist/esm/core/providers/detector.js.map +1 -1
- package/dist/esm/core/providers/index.js +0 -1
- package/dist/esm/core/providers/index.js.map +1 -1
- package/dist/esm/core/tracking/api-client.js +1 -1
- package/dist/esm/core/tracking/api-client.js.map +1 -1
- package/dist/esm/index.js +1 -38
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utils/stop-reason-mapper.js +18 -20
- package/dist/esm/utils/stop-reason-mapper.js.map +1 -1
- package/dist/types/core/client/manager.d.ts.map +1 -1
- package/dist/types/core/config/index.d.ts +3 -4
- package/dist/types/core/config/index.d.ts.map +1 -1
- package/dist/types/core/config/manager.d.ts +0 -1
- package/dist/types/core/config/manager.d.ts.map +1 -1
- package/dist/types/core/config/validator.d.ts.map +1 -1
- package/dist/types/core/providers/detector.d.ts +0 -2
- package/dist/types/core/providers/detector.d.ts.map +1 -1
- package/dist/types/core/providers/index.d.ts +0 -1
- package/dist/types/core/providers/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -37
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +1 -1
- package/dist/types/utils/stop-reason-mapper.d.ts +1 -3
- package/dist/types/utils/stop-reason-mapper.d.ts.map +1 -1
- package/examples/README.md +230 -226
- package/examples/advanced.ts +123 -123
- package/examples/basic.ts +45 -45
- package/examples/getting_started.ts +41 -41
- package/examples/metadata.ts +68 -68
- package/examples/stream.ts +53 -53
- package/package.json +72 -71
- package/dist/cjs/constants/models.js +0 -38
- package/dist/cjs/constants/models.js.map +0 -1
- package/dist/esm/constants/models.js +0 -35
- package/dist/esm/constants/models.js.map +0 -1
- package/dist/types/constants/models.d.ts +0 -39
- package/dist/types/constants/models.d.ts.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Middleware interfaces for Perplexity API
|
|
3
3
|
*/
|
|
4
|
-
import { getLogger } from "../config
|
|
4
|
+
import { getLogger } from "../config";
|
|
5
5
|
import { generateTransactionId } from "../../utils/transaction-id.js";
|
|
6
6
|
import { trackUsageAsync } from "../tracking/index.js";
|
|
7
7
|
import { StreamingWrapper } from "./streaming-wrapper.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../src/core/middleware/interfaces.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../src/core/middleware/interfaces.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AAE3B;;GAEG;AACH,MAAM,OAAO,aAAa;IACxB,YAAoB,MAAc,EAAU,MAAW;QAAnC,WAAM,GAAN,MAAM,CAAQ;QAAU,WAAM,GAAN,MAAM,CAAK;IAAG,CAAC;IAE3D;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,oBAAoB;IAC/B,YAAoB,MAAc,EAAU,MAAW;QAAnC,WAAM,GAAN,MAAM,CAAQ;QAAU,WAAM,GAAN,MAAM,CAAK;IAAG,CAAC;IAE3D;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,MAA8C,EAC9C,QAAwB;QAExB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,MAAM,aAAa,GAAG,qBAAqB,EAAE,CAAC;QAE9C,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,CACV,mDAAmD,MAAM,CAAC,KAAK,EAAE,CAClE,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEnE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;YAE/C,2EAA2E;YAC3E,IAAI,OAAO,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAC1C,kDAAkD;gBAClD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAY,CAAC;gBAEpC,eAAe,CAAC;oBACd,SAAS,EAAE,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,aAAa;oBACnE,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa;oBAC1C,gBAAgB,EAAE,QAAQ,CAAC,KAAK,CAAC,iBAAiB;oBAClD,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY;oBACxC,QAAQ;oBACR,YAAY,EACV,SAAS,IAAI,QAAQ;wBACnB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,aAAa,IAAI,IAAI;wBAC5C,CAAC,CAAC,IAAI;oBACV,aAAa,EAAE,QAAQ;oBACvB,UAAU,EAAE,KAAK;oBACjB,IAAI,EAAE,KAAK,CAAC,IAAI;iBACjB,CAAC,CAAC;YACL,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,wCAAwC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACtE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CACnB,MAA8C,EAC9C,QAAwB;QAExB,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,MAAM,aAAa,GAAG,qBAAqB,EAAE,CAAC;QAE9C,IAAI,CAAC;YACH,MAAM,CAAC,KAAK,CACV,6DAA6D,MAAM,CAAC,KAAK,EAAE,CAC5E,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACvD,GAAG,MAAM;gBACT,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YAEH,OAAO,IAAI,gBAAgB,CACzB,MAAa,EACb,MAAM,CAAC,KAAK,EACZ,SAAS,EACT,aAAa,EACb,QAAQ,EACR,IAAI,CAAC,MAAM,CACZ,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CACV,kDAAkD,KAAK,CAAC,OAAO,EAAE,CAClE,CAAC;YACF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Streaming wrapper for Perplexity API
|
|
3
3
|
*/
|
|
4
|
-
import { getLogger } from "../config
|
|
5
|
-
import { trackUsageAsync } from "../tracking
|
|
4
|
+
import { getLogger } from "../config";
|
|
5
|
+
import { trackUsageAsync } from "../tracking";
|
|
6
6
|
const logger = getLogger();
|
|
7
7
|
/**
|
|
8
8
|
* Wrapper for streaming responses that tracks usage
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming-wrapper.js","sourceRoot":"","sources":["../../../../src/core/middleware/streaming-wrapper.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"streaming-wrapper.js","sourceRoot":"","sources":["../../../../src/core/middleware/streaming-wrapper.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AAE3B;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAQ3B,YACE,MAA0B,EAC1B,KAAa,EACb,SAAe,EACf,aAAqB,EACrB,QAAwB,EACxB,MAAY;QAEZ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAC3B,IAAI,SAAS,GAAQ,IAAI,CAAC;QAC1B,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,QAAQ,GAAQ,SAAS,CAAC;QAC9B,IAAI,cAAc,GAAgB,IAAI,CAAC;QACvC,IAAI,gBAAgB,GAAG,CAAC,CAAC;QAEzB,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACtC,8BAA8B;gBAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,cAAc,GAAG,IAAI,IAAI,EAAE,CAAC;oBAC5B,gBAAgB;wBACd,cAAc,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBACxD,CAAC;gBAED,SAAS,GAAG,KAAK,CAAC;gBAElB,oCAAoC;gBACpC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBAChB,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;oBAC7C,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC;oBAClD,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;oBAC5C,uDAAuD;oBACvD,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;wBACrB,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;oBAC9B,CAAC;gBACH,CAAC;gBAED,MAAM,KAAK,CAAC;YACd,CAAC;YAED,6DAA6D;YAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAEpD,kBAAkB;YAClB,eAAe,CAAC;gBACd,SAAS,EAAE,IAAI,CAAC,aAAa;gBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,YAAY,EAAE,WAAW;gBACzB,gBAAgB,EAAE,YAAY;gBAC9B,WAAW;gBACX,QAAQ;gBACR,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,IAAI,IAAI;gBAC5D,aAAa,EAAE,IAAI,CAAC,QAAQ;gBAC5B,UAAU,EAAE,IAAI;gBAChB,gBAAgB;gBAChB,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,YAAY;YACZ,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACtE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
|
|
@@ -2,14 +2,12 @@
|
|
|
2
2
|
* Provider Detection Module
|
|
3
3
|
*
|
|
4
4
|
* Handles provider metadata for Perplexity AI.
|
|
5
|
-
* Simplified compared to OpenAI modular since Perplexity doesn't have Azure variant.
|
|
6
5
|
*/
|
|
7
6
|
import { getLogger } from "../config/index.js";
|
|
8
7
|
// Global logger
|
|
9
8
|
const logger = getLogger();
|
|
10
9
|
/**
|
|
11
10
|
* Get provider info for Perplexity
|
|
12
|
-
* Always returns Perplexity since there's no Azure variant
|
|
13
11
|
*
|
|
14
12
|
* @returns ProviderInfo with Perplexity provider
|
|
15
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detector.js","sourceRoot":"","sources":["../../../../src/core/providers/detector.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"detector.js","sourceRoot":"","sources":["../../../../src/core/providers/detector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,gBAAgB;AAChB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AAE3B;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC7C,OAAO;QACL,QAAQ,EAAE,YAAY;QACtB,WAAW,EAAE,YAAY;KAC1B,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB;IAIjC,OAAO;QACL,QAAQ,EAAE,YAAY;QACtB,WAAW,EAAE,YAAY;KAC1B,CAAC;AACJ,CAAC"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* Providers module - Main exports
|
|
3
3
|
*
|
|
4
4
|
* This module provides a clean interface for provider detection and management.
|
|
5
|
-
* Simplified for Perplexity (no Azure variant).
|
|
6
5
|
*/
|
|
7
6
|
// Re-export all provider functionality
|
|
8
7
|
export { detectProvider, getProviderMetadata } from "./detector.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/providers/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/providers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,uCAAuC;AACvC,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Handles HTTP communication with the Revenium API.
|
|
5
5
|
* Extracted from tracking.ts for single responsibility.
|
|
6
6
|
*/
|
|
7
|
-
import { getConfig, getLogger } from "../config
|
|
7
|
+
import { getConfig, getLogger } from "../config";
|
|
8
8
|
import { buildReveniumUrl } from "../../utils/url-builder.js";
|
|
9
9
|
// Global logger
|
|
10
10
|
const logger = getLogger();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../../../src/core/tracking/api-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../../../src/core/tracking/api-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE9D,gBAAgB;AAChB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AAE3B;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAwB;IAC3D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,CAAC,MAAM;QACT,OAAO,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IAE5E,MAAM,GAAG,GAAG,gBAAgB,CAC1B,MAAM,CAAC,eAAe,IAAI,yBAAyB,EACnD,iBAAiB,CAClB,CAAC;IAEF,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE;QAC3C,GAAG;QACH,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,OAAO,CAAC,eAAe;KACrC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,kBAAkB;YAC1B,WAAW,EAAE,MAAM,CAAC,cAAc;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KAC9B,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE;QACpC,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,aAAa,EAAE,OAAO,CAAC,aAAa;KACrC,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE;YAC1C,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,IAAI,EAAE,YAAY;YAClB,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CAAC;QACH,MAAM,IAAI,KAAK,CACb,uBAAuB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,MAAM,YAAY,EAAE,CAClF,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC3C,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE;QAC3C,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,QAAQ,EAAE,YAAY;KACvB,CAAC,CAAC;AACL,CAAC"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,38 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* This middleware tracks Perplexity AI usage and sends metrics to Revenium.
|
|
5
|
-
* Uses Go-aligned API pattern with Initialize/GetClient.
|
|
6
|
-
*
|
|
7
|
-
* Environment Variables:
|
|
8
|
-
* REVENIUM_METERING_API_KEY=hak_your_api_key
|
|
9
|
-
* REVENIUM_METERING_BASE_URL=https://api.revenium.ai (optional)
|
|
10
|
-
* PERPLEXITY_API_KEY=pplx_your_perplexity_key
|
|
11
|
-
*
|
|
12
|
-
* Usage:
|
|
13
|
-
* import { Initialize, GetClient } from "@revenium/perplexity";
|
|
14
|
-
*
|
|
15
|
-
* // Initialize from environment
|
|
16
|
-
* Initialize();
|
|
17
|
-
*
|
|
18
|
-
* // Get client
|
|
19
|
-
* const client = GetClient();
|
|
20
|
-
*
|
|
21
|
-
* // Use client
|
|
22
|
-
* const response = await client.chat().completions().create({
|
|
23
|
-
* model: "sonar",
|
|
24
|
-
* messages: [{ role: "user", content: "Hello!" }]
|
|
25
|
-
* }, {
|
|
26
|
-
* organizationId: "my-org",
|
|
27
|
-
* productId: "my-app",
|
|
28
|
-
* subscriber: {
|
|
29
|
-
* id: "user-123",
|
|
30
|
-
* email: "user@my-org.com"
|
|
31
|
-
* }
|
|
32
|
-
* });
|
|
33
|
-
*/
|
|
34
|
-
/**
|
|
35
|
-
* Main API - Go-aligned pattern
|
|
2
|
+
* Main API
|
|
36
3
|
*/
|
|
37
4
|
export { Initialize, GetClient, IsInitialized, Reset, Configure, } from "./core/client/index.js";
|
|
38
5
|
/**
|
|
@@ -47,8 +14,4 @@ export { trackUsageAsync } from "./core/tracking/index.js";
|
|
|
47
14
|
* Provider detection functions
|
|
48
15
|
*/
|
|
49
16
|
export { detectProvider, getProviderMetadata } from "./core/providers/index.js";
|
|
50
|
-
/**
|
|
51
|
-
* Model constants
|
|
52
|
-
*/
|
|
53
|
-
export { PERPLEXITY_MODELS } from "./constants/models.js";
|
|
54
17
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AA+BA;;GAEG;AACH,OAAO,EACL,UAAU,EACV,SAAS,EACT,aAAa,EACb,KAAK,EACL,SAAS,GACV,MAAM,wBAAwB,CAAC;AAEhC;;GAEG;AACH,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AAEpC;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -2,41 +2,39 @@
|
|
|
2
2
|
* Stop Reason Mapper Utilities
|
|
3
3
|
*
|
|
4
4
|
* Centralized stop reason mapping logic using lookup tables
|
|
5
|
-
* instead of nested conditionals.
|
|
6
|
-
* from the anthropic-node middleware.
|
|
5
|
+
* instead of nested conditionals.
|
|
7
6
|
*/
|
|
8
7
|
/**
|
|
9
8
|
* Stop reason mapping configuration
|
|
10
9
|
* Maps provider-specific stop reasons to Revenium's standardized set
|
|
11
10
|
*/
|
|
12
11
|
const STOP_REASON_MAP = {
|
|
13
|
-
// OpenAI
|
|
14
|
-
stop:
|
|
15
|
-
function_call:
|
|
16
|
-
tool_calls:
|
|
17
|
-
timeout:
|
|
18
|
-
length:
|
|
19
|
-
max_tokens:
|
|
20
|
-
cost_limit:
|
|
21
|
-
completion_limit:
|
|
22
|
-
content_filter:
|
|
23
|
-
error:
|
|
24
|
-
cancelled:
|
|
25
|
-
canceled:
|
|
12
|
+
// OpenAI OpenAI stop reasons
|
|
13
|
+
stop: "END",
|
|
14
|
+
function_call: "END_SEQUENCE",
|
|
15
|
+
tool_calls: "END_SEQUENCE",
|
|
16
|
+
timeout: "TIMEOUT",
|
|
17
|
+
length: "TOKEN_LIMIT",
|
|
18
|
+
max_tokens: "TOKEN_LIMIT",
|
|
19
|
+
cost_limit: "COST_LIMIT",
|
|
20
|
+
completion_limit: "COMPLETION_LIMIT",
|
|
21
|
+
content_filter: "ERROR",
|
|
22
|
+
error: "ERROR",
|
|
23
|
+
cancelled: "CANCELLED",
|
|
24
|
+
canceled: "CANCELLED", // Handle both spellings
|
|
26
25
|
// Anthropic stop reasons (for consistency across middleware)
|
|
27
|
-
end_turn:
|
|
28
|
-
stop_sequence:
|
|
29
|
-
tool_use:
|
|
26
|
+
end_turn: "END",
|
|
27
|
+
stop_sequence: "END_SEQUENCE",
|
|
28
|
+
tool_use: "END_SEQUENCE",
|
|
30
29
|
};
|
|
31
30
|
/**
|
|
32
31
|
* Default stop reason when mapping fails
|
|
33
32
|
*/
|
|
34
|
-
const DEFAULT_STOP_REASON =
|
|
33
|
+
const DEFAULT_STOP_REASON = "END";
|
|
35
34
|
/**
|
|
36
35
|
* Map provider stop reasons to Revenium stop reasons
|
|
37
36
|
*
|
|
38
37
|
* This replaces the nested if/switch logic with a clean lookup table approach.
|
|
39
|
-
* Based on the good example from the anthropic-node middleware.
|
|
40
38
|
*
|
|
41
39
|
* @param providerStopReason - Stop reason from the AI provider
|
|
42
40
|
* @param logger - Optional logger for warnings about unknown reasons
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop-reason-mapper.js","sourceRoot":"","sources":["../../../src/utils/stop-reason-mapper.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"stop-reason-mapper.js","sourceRoot":"","sources":["../../../src/utils/stop-reason-mapper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,eAAe,GAA2B;IAC9C,6BAA6B;IAC7B,IAAI,EAAE,KAAK;IACX,aAAa,EAAE,cAAc;IAC7B,UAAU,EAAE,cAAc;IAC1B,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,aAAa;IACrB,UAAU,EAAE,aAAa;IACzB,UAAU,EAAE,YAAY;IACxB,gBAAgB,EAAE,kBAAkB;IACpC,cAAc,EAAE,OAAO;IACvB,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,WAAW,EAAE,wBAAwB;IAE/C,6DAA6D;IAC7D,QAAQ,EAAE,KAAK;IACf,aAAa,EAAE,cAAc;IAC7B,QAAQ,EAAE,cAAc;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAElC;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAC3B,kBAA6C,EAC7C,MAA4D;IAE5D,IAAI,CAAC,kBAAkB;QAAE,OAAO,mBAAmB,CAAC;IACpD,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC;IAC1D,MAAM,YAAY,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAEvD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,mEAAmE;QACnE,MAAM,EAAE,IAAI,CACV,wBAAwB,kBAAkB,gBAAgB,mBAAmB,EAAE,CAChF,CAAC;QACF,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,OAAO,MAAM,CAAC,WAAW,EAAE,IAAI,eAAe,CAAC;AACjD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/core/client/manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/core/client/manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAU3D;;;;;;;GAOG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAOjC;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAsBtD;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,IAAI,kBAAkB,CAO9C;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED;;GAEG;AACH,wBAAgB,KAAK,IAAI,IAAI,CAE5B"}
|
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
* Configuration module - Main exports
|
|
3
3
|
*
|
|
4
4
|
* This module provides a clean interface for configuration management.
|
|
5
|
-
* Aligned with OpenAI modular implementation.
|
|
6
5
|
*/
|
|
7
|
-
export { loadConfigFromEnv } from
|
|
8
|
-
export { validateConfig } from
|
|
9
|
-
export { getConfig, setConfig, getLogger, initializeConfig, defaultLogger, } from
|
|
6
|
+
export { loadConfigFromEnv } from "./loader.js";
|
|
7
|
+
export { validateConfig } from "./validator.js";
|
|
8
|
+
export { getConfig, setConfig, getLogger, initializeConfig, defaultLogger, } from "./manager.js";
|
|
10
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/config/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/config/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,aAAa,GACd,MAAM,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/core/config/manager.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../../src/core/config/manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAS9D;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAe3B,CAAC;AAIF;;GAEG;AACH,wBAAgB,SAAS,IAAI,cAAc,GAAG,IAAI,CAEjD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAQtD;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,cAAc,CAkBjD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../../src/core/config/validator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../../src/core/config/validator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAsD3D"}
|
|
@@ -2,12 +2,10 @@
|
|
|
2
2
|
* Provider Detection Module
|
|
3
3
|
*
|
|
4
4
|
* Handles provider metadata for Perplexity AI.
|
|
5
|
-
* Simplified compared to OpenAI modular since Perplexity doesn't have Azure variant.
|
|
6
5
|
*/
|
|
7
6
|
import { ProviderInfo } from "../../types/index.js";
|
|
8
7
|
/**
|
|
9
8
|
* Get provider info for Perplexity
|
|
10
|
-
* Always returns Perplexity since there's no Azure variant
|
|
11
9
|
*
|
|
12
10
|
* @returns ProviderInfo with Perplexity provider
|
|
13
11
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../../../src/core/providers/detector.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../../../src/core/providers/detector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAMpD;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,YAAY,CAM7C;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAKA"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* Providers module - Main exports
|
|
3
3
|
*
|
|
4
4
|
* This module provides a clean interface for provider detection and management.
|
|
5
|
-
* Simplified for Perplexity (no Azure variant).
|
|
6
5
|
*/
|
|
7
6
|
export { detectProvider, getProviderMetadata } from "./detector.js";
|
|
8
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/providers/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/providers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,36 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Revenium Perplexity Middleware for TypeScript
|
|
3
|
-
|
|
4
|
-
* This middleware tracks Perplexity AI usage and sends metrics to Revenium.
|
|
5
|
-
* Uses Go-aligned API pattern with Initialize/GetClient.
|
|
6
|
-
*
|
|
7
|
-
* Environment Variables:
|
|
8
|
-
* REVENIUM_METERING_API_KEY=hak_your_api_key
|
|
9
|
-
* REVENIUM_METERING_BASE_URL=https://api.revenium.ai (optional)
|
|
10
|
-
* PERPLEXITY_API_KEY=pplx_your_perplexity_key
|
|
11
|
-
*
|
|
12
|
-
* Usage:
|
|
13
|
-
* import { Initialize, GetClient } from "@revenium/perplexity";
|
|
14
|
-
*
|
|
15
|
-
* // Initialize from environment
|
|
16
|
-
* Initialize();
|
|
17
|
-
*
|
|
18
|
-
* // Get client
|
|
19
|
-
* const client = GetClient();
|
|
20
|
-
*
|
|
21
|
-
* // Use client
|
|
22
|
-
* const response = await client.chat().completions().create({
|
|
23
|
-
* model: "sonar",
|
|
24
|
-
* messages: [{ role: "user", content: "Hello!" }]
|
|
25
|
-
* }, {
|
|
26
|
-
* organizationId: "my-org",
|
|
27
|
-
* productId: "my-app",
|
|
28
|
-
* subscriber: {
|
|
29
|
-
* id: "user-123",
|
|
30
|
-
* email: "user@my-org.com"
|
|
31
|
-
* }
|
|
32
|
-
* });
|
|
33
|
-
*/
|
|
3
|
+
|
|
34
4
|
/**
|
|
35
5
|
* Core types for TypeScript developers using Revenium middleware
|
|
36
6
|
*/
|
|
@@ -40,7 +10,7 @@ export type { ReveniumConfig, UsageMetadata, Logger, ProviderInfo, Subscriber, C
|
|
|
40
10
|
*/
|
|
41
11
|
export type { PerplexityChatRequest, PerplexityChatResponse, PerplexityMessage, PerplexityChoice, PerplexityUsage, PerplexityStreamChunk, PerplexityResponse, TrackingData, } from "./types/function-parameters.js";
|
|
42
12
|
/**
|
|
43
|
-
* Main API
|
|
13
|
+
* Main API
|
|
44
14
|
*/
|
|
45
15
|
export { Initialize, GetClient, IsInitialized, Reset, Configure, } from "./core/client/index.js";
|
|
46
16
|
/**
|
|
@@ -55,9 +25,4 @@ export { trackUsageAsync } from "./core/tracking/index.js";
|
|
|
55
25
|
* Provider detection functions
|
|
56
26
|
*/
|
|
57
27
|
export { detectProvider, getProviderMetadata } from "./core/providers/index.js";
|
|
58
|
-
/**
|
|
59
|
-
* Model constants
|
|
60
|
-
*/
|
|
61
|
-
export { PERPLEXITY_MODELS } from "./constants/models.js";
|
|
62
|
-
export type { PerplexityModel } from "./constants/models.js";
|
|
63
28
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,YAAY,EACV,cAAc,EACd,aAAa,EACb,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,eAAe,EACf,YAAY,GACb,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,YAAY,EACV,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,GACb,MAAM,gCAAgC,CAAC;AAExC;;GAEG;AACH,OAAO,EACL,UAAU,EACV,SAAS,EACT,aAAa,EACb,KAAK,EACL,SAAS,GACV,MAAM,wBAAwB,CAAC;AAEhC;;GAEG;AACH,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AAEpC;;GAEG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -2,14 +2,12 @@
|
|
|
2
2
|
* Stop Reason Mapper Utilities
|
|
3
3
|
*
|
|
4
4
|
* Centralized stop reason mapping logic using lookup tables
|
|
5
|
-
* instead of nested conditionals.
|
|
6
|
-
* from the anthropic-node middleware.
|
|
5
|
+
* instead of nested conditionals.
|
|
7
6
|
*/
|
|
8
7
|
/**
|
|
9
8
|
* Map provider stop reasons to Revenium stop reasons
|
|
10
9
|
*
|
|
11
10
|
* This replaces the nested if/switch logic with a clean lookup table approach.
|
|
12
|
-
* Based on the good example from the anthropic-node middleware.
|
|
13
11
|
*
|
|
14
12
|
* @param providerStopReason - Stop reason from the AI provider
|
|
15
13
|
* @param logger - Optional logger for warnings about unknown reasons
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop-reason-mapper.d.ts","sourceRoot":"","sources":["../../../src/utils/stop-reason-mapper.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"stop-reason-mapper.d.ts","sourceRoot":"","sources":["../../../src/utils/stop-reason-mapper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgCH;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC7C,MAAM,CAAC,EAAE;IAAE,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAA;CAAE,GAC3D,MAAM,CAcR;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CAElD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7D"}
|