@talkpilot/core-db 1.1.12 → 1.1.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.
- package/dist/talkpilot/clientAudioBuffers/clientAudioBuffer.getters.d.ts +7 -2
- package/dist/talkpilot/clientAudioBuffers/clientAudioBuffer.getters.d.ts.map +1 -1
- package/dist/talkpilot/clientAudioBuffers/clientAudioBuffer.getters.js +9 -1
- package/dist/talkpilot/clientAudioBuffers/clientAudioBuffer.getters.js.map +1 -1
- package/dist/talkpilot/clientsConfig/clientsConfig.types.d.ts +13 -0
- package/dist/talkpilot/clientsConfig/clientsConfig.types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/talkpilot/clientAudioBuffers/clientAudioBuffer.getters.ts +12 -1
- package/src/talkpilot/clientsConfig/__tests__/clientsConfig.spec.ts +40 -0
- package/src/talkpilot/clientsConfig/clientsConfig.types.ts +15 -0
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { ClientAudioBufferDoc, ClientAudioBufferType, CreateAudioBufferInput } from "./clientsAudioBuffers.types";
|
|
2
|
-
import { Collection, InsertOneResult } from "mongodb";
|
|
2
|
+
import { Collection, InsertOneResult, DeleteResult } from "mongodb";
|
|
3
3
|
declare const getClientAudioBuffersCollection: () => Collection<ClientAudioBufferType>;
|
|
4
|
+
/**
|
|
5
|
+
* Deletes all audio buffers associated with a specific callSid.
|
|
6
|
+
* Useful for clearing context between different tickets in the same call.
|
|
7
|
+
*/
|
|
8
|
+
declare const deleteAudioBuffersByCallSid: (callSid: string) => Promise<DeleteResult>;
|
|
4
9
|
declare const insertClientAudioBuffer: (audioBufferInput: CreateAudioBufferInput) => Promise<InsertOneResult<ClientAudioBufferType>>;
|
|
5
10
|
declare const findClientAudioBuffersByCallSidAndRange: (callSid: string, startMs?: number, endMs?: number) => Promise<ClientAudioBufferDoc[]>;
|
|
6
11
|
declare const getAudioChunksByCallSid: (callSid: string, limit?: number) => Promise<Buffer[]>;
|
|
7
12
|
declare const getMergedAudioByCallSid: (callSid: string, limit: number) => Promise<Buffer>;
|
|
8
|
-
export { insertClientAudioBuffer, getClientAudioBuffersCollection, findClientAudioBuffersByCallSidAndRange, getAudioChunksByCallSid, getMergedAudioByCallSid, };
|
|
13
|
+
export { insertClientAudioBuffer, getClientAudioBuffersCollection, findClientAudioBuffersByCallSidAndRange, getAudioChunksByCallSid, getMergedAudioByCallSid, deleteAudioBuffersByCallSid, };
|
|
9
14
|
//# sourceMappingURL=clientAudioBuffer.getters.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientAudioBuffer.getters.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/clientAudioBuffers/clientAudioBuffer.getters.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"clientAudioBuffer.getters.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/clientAudioBuffers/clientAudioBuffer.getters.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEpE,QAAA,MAAM,+BAA+B,QAC/B,UAAU,CAAC,qBAAqB,CAEnC,CAAC;AAEJ;;;GAGG;AACH,QAAA,MAAM,2BAA2B,GAC/B,SAAS,MAAM,KACd,OAAO,CAAC,YAAY,CAEtB,CAAC;AAEF,QAAA,MAAM,uBAAuB,GAC3B,kBAAkB,sBAAsB,KACvC,OAAO,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAsBhD,CAAC;AAEF,QAAA,MAAM,uCAAuC,GAC3C,SAAS,MAAM,EACf,UAAU,MAAM,EAChB,QAAQ,MAAM,KACb,OAAO,CAAC,oBAAoB,EAAE,CAehC,CAAC;AAEF,QAAA,MAAM,uBAAuB,GAC3B,SAAS,MAAM,EACf,QAAQ,MAAM,KACb,OAAO,CAAC,MAAM,EAAE,CAqBlB,CAAC;AAEF,QAAA,MAAM,uBAAuB,GAC3B,SAAS,MAAM,EACf,OAAO,MAAM,KACZ,OAAO,CAAC,MAAM,CAQhB,CAAC;AAEF,OAAO,EACL,uBAAuB,EACvB,+BAA+B,EAC/B,uCAAuC,EACvC,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,GAC5B,CAAC"}
|
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getMergedAudioByCallSid = exports.getAudioChunksByCallSid = exports.findClientAudioBuffersByCallSidAndRange = exports.getClientAudioBuffersCollection = exports.insertClientAudioBuffer = void 0;
|
|
3
|
+
exports.deleteAudioBuffersByCallSid = exports.getMergedAudioByCallSid = exports.getAudioChunksByCallSid = exports.findClientAudioBuffersByCallSidAndRange = exports.getClientAudioBuffersCollection = exports.insertClientAudioBuffer = void 0;
|
|
4
4
|
const index_1 = require("../index");
|
|
5
5
|
const getClientAudioBuffersCollection = () => {
|
|
6
6
|
return (0, index_1.getDb)().collection("clientAudioBuffers");
|
|
7
7
|
};
|
|
8
8
|
exports.getClientAudioBuffersCollection = getClientAudioBuffersCollection;
|
|
9
|
+
/**
|
|
10
|
+
* Deletes all audio buffers associated with a specific callSid.
|
|
11
|
+
* Useful for clearing context between different tickets in the same call.
|
|
12
|
+
*/
|
|
13
|
+
const deleteAudioBuffersByCallSid = async (callSid) => {
|
|
14
|
+
return getClientAudioBuffersCollection().deleteMany({ callSid });
|
|
15
|
+
};
|
|
16
|
+
exports.deleteAudioBuffersByCallSid = deleteAudioBuffersByCallSid;
|
|
9
17
|
const insertClientAudioBuffer = async (audioBufferInput) => {
|
|
10
18
|
const collection = getClientAudioBuffersCollection();
|
|
11
19
|
const realtimeDate = new Date();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientAudioBuffer.getters.js","sourceRoot":"","sources":["../../../src/talkpilot/clientAudioBuffers/clientAudioBuffer.getters.ts"],"names":[],"mappings":";;;AAAA,oCAAiC;AAQjC,MAAM,+BAA+B,GACnC,GAAsC,EAAE;IACtC,OAAO,IAAA,aAAK,GAAE,CAAC,UAAU,CAAwB,oBAAoB,CAAC,CAAC;AACzE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"clientAudioBuffer.getters.js","sourceRoot":"","sources":["../../../src/talkpilot/clientAudioBuffers/clientAudioBuffer.getters.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,9 +25,22 @@ export type MunicipalProduct = {
|
|
|
25
25
|
isProductionReady?: boolean;
|
|
26
26
|
municipalDisplayName?: string;
|
|
27
27
|
};
|
|
28
|
+
export type WebsiteTalkScheduler = {
|
|
29
|
+
type: "cron";
|
|
30
|
+
schedule: string;
|
|
31
|
+
};
|
|
32
|
+
export type WebsiteTalkProduct = {
|
|
33
|
+
logoUrl: string;
|
|
34
|
+
companyName: string;
|
|
35
|
+
timezone: string;
|
|
36
|
+
language: string;
|
|
37
|
+
defaultBaseUrl: string;
|
|
38
|
+
scheduler?: WebsiteTalkScheduler;
|
|
39
|
+
};
|
|
28
40
|
export type Products = {
|
|
29
41
|
municipal?: MunicipalProduct;
|
|
30
42
|
clinics?: ClinicsProduct;
|
|
43
|
+
websiteTalk?: WebsiteTalkProduct;
|
|
31
44
|
[key: string]: unknown;
|
|
32
45
|
};
|
|
33
46
|
export type ClinicsProduct = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clientsConfig.types.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/clientsConfig/clientsConfig.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,MAAM,MAAM,6BAA6B,GAAG;IAC1C,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACnD,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,2BAA2B,CAAC,EAAE,6BAA6B,CAAC;IAC5D,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,QAAQ,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAC1B,QAAQ,GACR,SAAS,GACT,SAAS,GACT,QAAQ,GACR,SAAS,GACT,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,EAAE,CAAC;AAE3B,MAAM,MAAM,cAAc,GAAG,EAAE,CAAC;AAEhC,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,IAAI;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,QAAQ,EAAE,CAAC,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,oBAAoB,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,IAAI,MAAM,CACjE,YAAY,CAAC,CAAC,CAAC,CAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"clientsConfig.types.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/clientsConfig/clientsConfig.types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -4,13 +4,23 @@ import {
|
|
|
4
4
|
ClientAudioBufferType,
|
|
5
5
|
CreateAudioBufferInput,
|
|
6
6
|
} from "./clientsAudioBuffers.types";
|
|
7
|
-
import { Collection, InsertOneResult } from "mongodb";
|
|
7
|
+
import { Collection, InsertOneResult, DeleteResult } from "mongodb";
|
|
8
8
|
|
|
9
9
|
const getClientAudioBuffersCollection =
|
|
10
10
|
(): Collection<ClientAudioBufferType> => {
|
|
11
11
|
return getDb().collection<ClientAudioBufferType>("clientAudioBuffers");
|
|
12
12
|
};
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Deletes all audio buffers associated with a specific callSid.
|
|
16
|
+
* Useful for clearing context between different tickets in the same call.
|
|
17
|
+
*/
|
|
18
|
+
const deleteAudioBuffersByCallSid = async (
|
|
19
|
+
callSid: string,
|
|
20
|
+
): Promise<DeleteResult> => {
|
|
21
|
+
return getClientAudioBuffersCollection().deleteMany({ callSid });
|
|
22
|
+
};
|
|
23
|
+
|
|
14
24
|
const insertClientAudioBuffer = async (
|
|
15
25
|
audioBufferInput: CreateAudioBufferInput,
|
|
16
26
|
): Promise<InsertOneResult<ClientAudioBufferType>> => {
|
|
@@ -103,4 +113,5 @@ export {
|
|
|
103
113
|
findClientAudioBuffersByCallSidAndRange,
|
|
104
114
|
getAudioChunksByCallSid,
|
|
105
115
|
getMergedAudioByCallSid,
|
|
116
|
+
deleteAudioBuffersByCallSid,
|
|
106
117
|
};
|
|
@@ -25,6 +25,46 @@ describe("db.clientsConfig", () => {
|
|
|
25
25
|
});
|
|
26
26
|
});
|
|
27
27
|
|
|
28
|
+
it("should support websiteTalk product config", async () => {
|
|
29
|
+
const clientId = "websiteTalk-test";
|
|
30
|
+
const clientConfig = createClientConfig({
|
|
31
|
+
clientId,
|
|
32
|
+
products: {
|
|
33
|
+
websiteTalk: {
|
|
34
|
+
logoUrl: "https://cdn.example.com/branding/acme/logo.png",
|
|
35
|
+
companyName: "Acme Ltd",
|
|
36
|
+
timezone: "Asia/Jerusalem",
|
|
37
|
+
language: "he",
|
|
38
|
+
defaultBaseUrl: "https://acme.example",
|
|
39
|
+
scheduler: {
|
|
40
|
+
type: "cron",
|
|
41
|
+
schedule: "0 9 * * 1-5"
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
await createClientConfigDoc(clientConfig);
|
|
48
|
+
|
|
49
|
+
const result = await getClientConfig(clientId);
|
|
50
|
+
|
|
51
|
+
expect(result).toMatchObject({
|
|
52
|
+
clientId,
|
|
53
|
+
products: {
|
|
54
|
+
websiteTalk: {
|
|
55
|
+
logoUrl: "https://cdn.example.com/branding/acme/logo.png",
|
|
56
|
+
companyName: "Acme Ltd",
|
|
57
|
+
timezone: "Asia/Jerusalem",
|
|
58
|
+
language: "he",
|
|
59
|
+
defaultBaseUrl: "https://acme.example",
|
|
60
|
+
scheduler: {
|
|
61
|
+
type: "cron",
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
|
|
28
68
|
it("should return null for non-existent clientId", async () => {
|
|
29
69
|
const result = await getClientConfig("non-existent-client");
|
|
30
70
|
expect(result).toBeNull();
|
|
@@ -26,9 +26,24 @@ export type MunicipalProduct = {
|
|
|
26
26
|
municipalDisplayName?: string;
|
|
27
27
|
};
|
|
28
28
|
|
|
29
|
+
export type WebsiteTalkScheduler = {
|
|
30
|
+
type: "cron";
|
|
31
|
+
schedule: string;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export type WebsiteTalkProduct = {
|
|
35
|
+
logoUrl: string;
|
|
36
|
+
companyName: string;
|
|
37
|
+
timezone: string;
|
|
38
|
+
language: string;
|
|
39
|
+
defaultBaseUrl: string;
|
|
40
|
+
scheduler?: WebsiteTalkScheduler;
|
|
41
|
+
};
|
|
42
|
+
|
|
29
43
|
export type Products = {
|
|
30
44
|
municipal?: MunicipalProduct;
|
|
31
45
|
clinics?: ClinicsProduct;
|
|
46
|
+
websiteTalk?: WebsiteTalkProduct;
|
|
32
47
|
[key: string]: unknown;
|
|
33
48
|
};
|
|
34
49
|
|