@corti/dictation-web 0.6.0-rc.1 → 0.6.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.
- package/dist/bundle.js +137 -33
- package/dist/components/recording-button.js +4 -1
- package/dist/components/recording-button.js.map +1 -1
- package/dist/controllers/dictation-controller.d.ts +1 -1
- package/dist/controllers/dictation-controller.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/events.d.ts +2 -0
- package/dist/utils/events.js +7 -0
- package/dist/utils/events.js.map +1 -1
- package/package.json +2 -2
package/dist/bundle.js
CHANGED
|
@@ -1048,6 +1048,13 @@ function usageEvent(detail) {
|
|
|
1048
1048
|
detail
|
|
1049
1049
|
});
|
|
1050
1050
|
}
|
|
1051
|
+
function deltaUsageEvent(detail) {
|
|
1052
|
+
return new CustomEvent("delta-usage", {
|
|
1053
|
+
bubbles: true,
|
|
1054
|
+
composed: true,
|
|
1055
|
+
detail
|
|
1056
|
+
});
|
|
1057
|
+
}
|
|
1051
1058
|
function errorToMessage(error) {
|
|
1052
1059
|
if (error instanceof Error) {
|
|
1053
1060
|
return error.message;
|
|
@@ -1850,15 +1857,16 @@ var StreamConfigStatusMessageType = {
|
|
|
1850
1857
|
ConfigDenied: "CONFIG_DENIED",
|
|
1851
1858
|
ConfigMissing: "CONFIG_MISSING",
|
|
1852
1859
|
ConfigNotProvided: "CONFIG_NOT_PROVIDED",
|
|
1853
|
-
ConfigAlreadyReceived: "CONFIG_ALREADY_RECEIVED"
|
|
1854
|
-
ConfigTimeout: "CONFIG_TIMEOUT"
|
|
1860
|
+
ConfigAlreadyReceived: "CONFIG_ALREADY_RECEIVED"
|
|
1855
1861
|
};
|
|
1856
1862
|
|
|
1857
1863
|
// node_modules/@corti/sdk/dist/esm/api/types/TranscribeConfigStatusMessageType.mjs
|
|
1858
1864
|
var TranscribeConfigStatusMessageType = {
|
|
1859
1865
|
ConfigAccepted: "CONFIG_ACCEPTED",
|
|
1860
1866
|
ConfigDenied: "CONFIG_DENIED",
|
|
1861
|
-
ConfigTimeout: "CONFIG_TIMEOUT"
|
|
1867
|
+
ConfigTimeout: "CONFIG_TIMEOUT",
|
|
1868
|
+
ConfigAlreadyReceived: "CONFIG_ALREADY_RECEIVED",
|
|
1869
|
+
ConfigMissing: "CONFIG_MISSING"
|
|
1862
1870
|
};
|
|
1863
1871
|
|
|
1864
1872
|
// node_modules/@corti/sdk/dist/esm/core/schemas/builders/schema-utils/stringifyValidationErrors.mjs
|
|
@@ -2198,15 +2206,15 @@ var HttpResponsePromise = class _HttpResponsePromise extends Promise {
|
|
|
2198
2206
|
};
|
|
2199
2207
|
|
|
2200
2208
|
// node_modules/@corti/sdk/dist/esm/core/fetcher/Headers.mjs
|
|
2201
|
-
var
|
|
2209
|
+
var Headers2;
|
|
2202
2210
|
if (typeof globalThis.Headers !== "undefined") {
|
|
2203
|
-
|
|
2211
|
+
Headers2 = globalThis.Headers;
|
|
2204
2212
|
} else {
|
|
2205
|
-
|
|
2213
|
+
Headers2 = class Headers3 {
|
|
2206
2214
|
constructor(init) {
|
|
2207
2215
|
this.headers = /* @__PURE__ */ new Map();
|
|
2208
2216
|
if (init) {
|
|
2209
|
-
if (init instanceof
|
|
2217
|
+
if (init instanceof Headers3) {
|
|
2210
2218
|
init.forEach((value, key) => this.append(key, value));
|
|
2211
2219
|
} else if (Array.isArray(init)) {
|
|
2212
2220
|
for (const [key, value] of init) {
|
|
@@ -2277,7 +2285,7 @@ if (typeof globalThis.Headers !== "undefined") {
|
|
|
2277
2285
|
|
|
2278
2286
|
// node_modules/@corti/sdk/dist/esm/core/fetcher/RawResponse.mjs
|
|
2279
2287
|
var abortRawResponse = {
|
|
2280
|
-
headers: new
|
|
2288
|
+
headers: new Headers2(),
|
|
2281
2289
|
redirected: false,
|
|
2282
2290
|
status: 499,
|
|
2283
2291
|
statusText: "Client Closed Request",
|
|
@@ -2285,7 +2293,7 @@ var abortRawResponse = {
|
|
|
2285
2293
|
url: ""
|
|
2286
2294
|
};
|
|
2287
2295
|
var unknownRawResponse = {
|
|
2288
|
-
headers: new
|
|
2296
|
+
headers: new Headers2(),
|
|
2289
2297
|
redirected: false,
|
|
2290
2298
|
status: 0,
|
|
2291
2299
|
statusText: "Unknown Error",
|
|
@@ -2859,7 +2867,7 @@ var SENSITIVE_HEADERS = /* @__PURE__ */ new Set([
|
|
|
2859
2867
|
]);
|
|
2860
2868
|
function redactHeaders(headers) {
|
|
2861
2869
|
const filtered = {};
|
|
2862
|
-
for (const [key, value] of headers instanceof
|
|
2870
|
+
for (const [key, value] of headers instanceof Headers2 ? headers.entries() : Object.entries(headers)) {
|
|
2863
2871
|
if (SENSITIVE_HEADERS.has(key.toLowerCase())) {
|
|
2864
2872
|
filtered[key] = "[REDACTED]";
|
|
2865
2873
|
} else {
|
|
@@ -2957,7 +2965,7 @@ function redactUrl(url) {
|
|
|
2957
2965
|
function getHeaders(args) {
|
|
2958
2966
|
return __awaiter10(this, void 0, void 0, function* () {
|
|
2959
2967
|
var _a;
|
|
2960
|
-
const newHeaders = new
|
|
2968
|
+
const newHeaders = new Headers2();
|
|
2961
2969
|
newHeaders.set("Accept", args.responseType === "json" ? "application/json" : args.responseType === "text" ? "text/plain" : args.responseType === "sse" ? "text/event-stream" : "*/*");
|
|
2962
2970
|
if (args.body !== void 0 && args.contentType != null) {
|
|
2963
2971
|
newHeaders.set("Content-Type", args.contentType);
|
|
@@ -5964,8 +5972,7 @@ var StreamConfigStatusMessageType2 = schemas_exports.enum_([
|
|
|
5964
5972
|
"CONFIG_DENIED",
|
|
5965
5973
|
"CONFIG_MISSING",
|
|
5966
5974
|
"CONFIG_NOT_PROVIDED",
|
|
5967
|
-
"CONFIG_ALREADY_RECEIVED"
|
|
5968
|
-
"CONFIG_TIMEOUT"
|
|
5975
|
+
"CONFIG_ALREADY_RECEIVED"
|
|
5969
5976
|
]);
|
|
5970
5977
|
|
|
5971
5978
|
// node_modules/@corti/sdk/dist/esm/serialization/types/StreamConfigStatusMessage.mjs
|
|
@@ -5974,6 +5981,12 @@ var StreamConfigStatusMessage = schemas_exports.object({
|
|
|
5974
5981
|
reason: schemas_exports.string().optional()
|
|
5975
5982
|
});
|
|
5976
5983
|
|
|
5984
|
+
// node_modules/@corti/sdk/dist/esm/serialization/types/StreamDeltaUsageMessage.mjs
|
|
5985
|
+
var StreamDeltaUsageMessage = schemas_exports.object({
|
|
5986
|
+
type: schemas_exports.stringLiteral("delta_usage"),
|
|
5987
|
+
credits: schemas_exports.number()
|
|
5988
|
+
});
|
|
5989
|
+
|
|
5977
5990
|
// node_modules/@corti/sdk/dist/esm/serialization/types/StreamEndedMessage.mjs
|
|
5978
5991
|
var StreamEndedMessage = schemas_exports.object({
|
|
5979
5992
|
type: schemas_exports.stringLiteral("ENDED")
|
|
@@ -6057,6 +6070,7 @@ var StreamSocketResponse = schemas_exports.undiscriminatedUnion([
|
|
|
6057
6070
|
StreamTranscriptMessage,
|
|
6058
6071
|
StreamFactsMessage,
|
|
6059
6072
|
StreamFlushedMessage,
|
|
6073
|
+
StreamDeltaUsageMessage,
|
|
6060
6074
|
StreamEndedMessage,
|
|
6061
6075
|
StreamUsageMessage,
|
|
6062
6076
|
StreamErrorMessage,
|
|
@@ -6079,7 +6093,13 @@ var TranscribeCommandMessage = schemas_exports.object({
|
|
|
6079
6093
|
});
|
|
6080
6094
|
|
|
6081
6095
|
// node_modules/@corti/sdk/dist/esm/serialization/types/TranscribeConfigStatusMessageType.mjs
|
|
6082
|
-
var TranscribeConfigStatusMessageType2 = schemas_exports.enum_([
|
|
6096
|
+
var TranscribeConfigStatusMessageType2 = schemas_exports.enum_([
|
|
6097
|
+
"CONFIG_ACCEPTED",
|
|
6098
|
+
"CONFIG_DENIED",
|
|
6099
|
+
"CONFIG_TIMEOUT",
|
|
6100
|
+
"CONFIG_ALREADY_RECEIVED",
|
|
6101
|
+
"CONFIG_MISSING"
|
|
6102
|
+
]);
|
|
6083
6103
|
|
|
6084
6104
|
// node_modules/@corti/sdk/dist/esm/serialization/types/TranscribeConfigStatusMessage.mjs
|
|
6085
6105
|
var TranscribeConfigStatusMessage = schemas_exports.object({
|
|
@@ -6088,6 +6108,12 @@ var TranscribeConfigStatusMessage = schemas_exports.object({
|
|
|
6088
6108
|
sessionId: schemas_exports.string()
|
|
6089
6109
|
});
|
|
6090
6110
|
|
|
6111
|
+
// node_modules/@corti/sdk/dist/esm/serialization/types/TranscribeDeltaUsageMessage.mjs
|
|
6112
|
+
var TranscribeDeltaUsageMessage = schemas_exports.object({
|
|
6113
|
+
type: schemas_exports.stringLiteral("delta_usage"),
|
|
6114
|
+
credits: schemas_exports.number()
|
|
6115
|
+
});
|
|
6116
|
+
|
|
6091
6117
|
// node_modules/@corti/sdk/dist/esm/serialization/types/TranscribeEndedMessage.mjs
|
|
6092
6118
|
var TranscribeEndedMessage = schemas_exports.object({
|
|
6093
6119
|
type: schemas_exports.stringLiteral("ended")
|
|
@@ -6138,6 +6164,7 @@ var TranscribeUsageMessage = schemas_exports.object({
|
|
|
6138
6164
|
var TranscribeSocketResponse = schemas_exports.undiscriminatedUnion([
|
|
6139
6165
|
TranscribeUsageMessage,
|
|
6140
6166
|
TranscribeFlushedMessage,
|
|
6167
|
+
TranscribeDeltaUsageMessage,
|
|
6141
6168
|
TranscribeEndedMessage,
|
|
6142
6169
|
TranscribeErrorMessage,
|
|
6143
6170
|
TranscribeTranscriptMessage,
|
|
@@ -7521,8 +7548,8 @@ function normalizeClientOptions(options) {
|
|
|
7521
7548
|
const headers = mergeHeaders({
|
|
7522
7549
|
"X-Fern-Language": "JavaScript",
|
|
7523
7550
|
"X-Fern-SDK-Name": "@corti/sdk",
|
|
7524
|
-
"X-Fern-SDK-Version": "1.0.0
|
|
7525
|
-
"User-Agent": "@corti/sdk/1.0.0
|
|
7551
|
+
"X-Fern-SDK-Version": "1.0.0",
|
|
7552
|
+
"User-Agent": "@corti/sdk/1.0.0",
|
|
7526
7553
|
"X-Fern-Runtime": RUNTIME.type,
|
|
7527
7554
|
"X-Fern-Runtime-Version": RUNTIME.version,
|
|
7528
7555
|
"Tenant-Name": options === null || options === void 0 ? void 0 : options.tenantName
|
|
@@ -11829,7 +11856,7 @@ var CortiClient = class {
|
|
|
11829
11856
|
}
|
|
11830
11857
|
};
|
|
11831
11858
|
|
|
11832
|
-
// node_modules/@corti/sdk/dist/esm/custom/
|
|
11859
|
+
// node_modules/@corti/sdk/dist/esm/custom/agents/CustomAgents.mjs
|
|
11833
11860
|
var __awaiter32 = function(thisArg, _arguments, P2, generator) {
|
|
11834
11861
|
function adopt(value) {
|
|
11835
11862
|
return value instanceof P2 ? value : new P2(function(resolve) {
|
|
@@ -11857,8 +11884,46 @@ var __awaiter32 = function(thisArg, _arguments, P2, generator) {
|
|
|
11857
11884
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
11858
11885
|
});
|
|
11859
11886
|
};
|
|
11887
|
+
var CustomAgents = class extends AgentsClient {
|
|
11888
|
+
constructor() {
|
|
11889
|
+
super(...arguments);
|
|
11890
|
+
this.getCardUrl = (agentId) => __awaiter32(this, void 0, void 0, function* () {
|
|
11891
|
+
const encodedAgentId = encodeURIComponent(agentId);
|
|
11892
|
+
return new URL(`/agents/${encodedAgentId}/agent-card.json`, (yield Supplier.get(this._options.environment)).agents);
|
|
11893
|
+
});
|
|
11894
|
+
}
|
|
11895
|
+
};
|
|
11896
|
+
|
|
11897
|
+
// node_modules/@corti/sdk/dist/esm/custom/utils/encodeHeadersAsWsProtocols.mjs
|
|
11898
|
+
var __awaiter33 = function(thisArg, _arguments, P2, generator) {
|
|
11899
|
+
function adopt(value) {
|
|
11900
|
+
return value instanceof P2 ? value : new P2(function(resolve) {
|
|
11901
|
+
resolve(value);
|
|
11902
|
+
});
|
|
11903
|
+
}
|
|
11904
|
+
return new (P2 || (P2 = Promise))(function(resolve, reject) {
|
|
11905
|
+
function fulfilled(value) {
|
|
11906
|
+
try {
|
|
11907
|
+
step(generator.next(value));
|
|
11908
|
+
} catch (e10) {
|
|
11909
|
+
reject(e10);
|
|
11910
|
+
}
|
|
11911
|
+
}
|
|
11912
|
+
function rejected(value) {
|
|
11913
|
+
try {
|
|
11914
|
+
step(generator["throw"](value));
|
|
11915
|
+
} catch (e10) {
|
|
11916
|
+
reject(e10);
|
|
11917
|
+
}
|
|
11918
|
+
}
|
|
11919
|
+
function step(result) {
|
|
11920
|
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
11921
|
+
}
|
|
11922
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
11923
|
+
});
|
|
11924
|
+
};
|
|
11860
11925
|
function buildProtocolsFromHeaders(headers_1) {
|
|
11861
|
-
return
|
|
11926
|
+
return __awaiter33(this, arguments, void 0, function* (headers, filterSdkHeaders = false) {
|
|
11862
11927
|
if (!headers || Object.keys(headers).length === 0) {
|
|
11863
11928
|
return [];
|
|
11864
11929
|
}
|
|
@@ -11876,7 +11941,7 @@ function buildProtocolsFromHeaders(headers_1) {
|
|
|
11876
11941
|
});
|
|
11877
11942
|
}
|
|
11878
11943
|
function getWsProtocols(options, proxyProtocols) {
|
|
11879
|
-
return
|
|
11944
|
+
return __awaiter33(this, void 0, void 0, function* () {
|
|
11880
11945
|
const headerProtocols = options.encodeHeadersAsWsProtocols && options.headers ? yield buildProtocolsFromHeaders(options.headers, true) : [];
|
|
11881
11946
|
const resolvedProxy = proxyProtocols == null ? [] : Array.isArray(proxyProtocols) ? proxyProtocols : yield buildProtocolsFromHeaders(proxyProtocols, false);
|
|
11882
11947
|
const combined = [...headerProtocols, ...resolvedProxy];
|
|
@@ -11911,7 +11976,7 @@ function parseStreamResponseType(raw) {
|
|
|
11911
11976
|
}
|
|
11912
11977
|
|
|
11913
11978
|
// node_modules/@corti/sdk/dist/esm/custom/stream/CustomStream.mjs
|
|
11914
|
-
var
|
|
11979
|
+
var __awaiter34 = function(thisArg, _arguments, P2, generator) {
|
|
11915
11980
|
function adopt(value) {
|
|
11916
11981
|
return value instanceof P2 ? value : new P2(function(resolve) {
|
|
11917
11982
|
resolve(value);
|
|
@@ -11952,7 +12017,6 @@ var __rest3 = function(s8, e10) {
|
|
|
11952
12017
|
var STREAM_CONFIG_REJECTION_TYPES = [
|
|
11953
12018
|
StreamConfigStatusMessageType.ConfigDenied,
|
|
11954
12019
|
StreamConfigStatusMessageType.ConfigMissing,
|
|
11955
|
-
StreamConfigStatusMessageType.ConfigTimeout,
|
|
11956
12020
|
StreamConfigStatusMessageType.ConfigNotProvided
|
|
11957
12021
|
];
|
|
11958
12022
|
var CustomStream = class extends StreamClient {
|
|
@@ -11964,7 +12028,7 @@ var CustomStream = class extends StreamClient {
|
|
|
11964
12028
|
const _super = Object.create(null, {
|
|
11965
12029
|
connect: { get: () => super.connect }
|
|
11966
12030
|
});
|
|
11967
|
-
return
|
|
12031
|
+
return __awaiter34(this, void 0, void 0, function* () {
|
|
11968
12032
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
11969
12033
|
const { configuration, awaitConfiguration = true, proxy } = args, rest = __rest3(args, ["configuration", "awaitConfiguration", "proxy"]);
|
|
11970
12034
|
const useProxyPath = proxy || this._encodeHeadersAsWsProtocols;
|
|
@@ -11992,7 +12056,7 @@ var CustomStream = class extends StreamClient {
|
|
|
11992
12056
|
* CONFIG_NOT_PROVIDED / connection error / ENDED.
|
|
11993
12057
|
*/
|
|
11994
12058
|
_connectWithConfigAck(socket, configuration) {
|
|
11995
|
-
return
|
|
12059
|
+
return __awaiter34(this, void 0, void 0, function* () {
|
|
11996
12060
|
const configAck = this._buildConfigAckPromise(socket);
|
|
11997
12061
|
yield socket.waitForOpen();
|
|
11998
12062
|
socket.sendConfiguration({ type: "config", configuration });
|
|
@@ -12018,7 +12082,7 @@ var CustomStream = class extends StreamClient {
|
|
|
12018
12082
|
});
|
|
12019
12083
|
socket.socket.addEventListener("message", (event) => {
|
|
12020
12084
|
const type = parseStreamResponseType(event.data);
|
|
12021
|
-
if (type == null || type === StreamConfigStatusMessageType.ConfigAccepted) {
|
|
12085
|
+
if (type == null || type === StreamConfigStatusMessageType.ConfigAccepted || type === StreamConfigStatusMessageType.ConfigAlreadyReceived) {
|
|
12022
12086
|
return;
|
|
12023
12087
|
}
|
|
12024
12088
|
if (STREAM_CONFIG_REJECTION_TYPES.includes(type) || type === "error") {
|
|
@@ -12045,7 +12109,7 @@ var CustomStream = class extends StreamClient {
|
|
|
12045
12109
|
const type = parseStreamResponseType(event.data);
|
|
12046
12110
|
if (type == null)
|
|
12047
12111
|
return;
|
|
12048
|
-
if (type === StreamConfigStatusMessageType.ConfigAccepted) {
|
|
12112
|
+
if (type === StreamConfigStatusMessageType.ConfigAccepted || type === StreamConfigStatusMessageType.ConfigAlreadyReceived) {
|
|
12049
12113
|
cleanup();
|
|
12050
12114
|
resolve();
|
|
12051
12115
|
} else if (STREAM_CONFIG_REJECTION_TYPES.includes(type)) {
|
|
@@ -12089,7 +12153,7 @@ function parseTranscribeResponseType(raw) {
|
|
|
12089
12153
|
}
|
|
12090
12154
|
|
|
12091
12155
|
// node_modules/@corti/sdk/dist/esm/custom/transcribe/CustomTranscribe.mjs
|
|
12092
|
-
var
|
|
12156
|
+
var __awaiter35 = function(thisArg, _arguments, P2, generator) {
|
|
12093
12157
|
function adopt(value) {
|
|
12094
12158
|
return value instanceof P2 ? value : new P2(function(resolve) {
|
|
12095
12159
|
resolve(value);
|
|
@@ -12129,7 +12193,8 @@ var __rest4 = function(s8, e10) {
|
|
|
12129
12193
|
};
|
|
12130
12194
|
var TRANSCRIBE_CONFIG_REJECTION_TYPES = [
|
|
12131
12195
|
TranscribeConfigStatusMessageType.ConfigDenied,
|
|
12132
|
-
TranscribeConfigStatusMessageType.ConfigTimeout
|
|
12196
|
+
TranscribeConfigStatusMessageType.ConfigTimeout,
|
|
12197
|
+
TranscribeConfigStatusMessageType.ConfigMissing
|
|
12133
12198
|
];
|
|
12134
12199
|
var CustomTranscribe = class extends TranscribeClient {
|
|
12135
12200
|
constructor(options) {
|
|
@@ -12140,7 +12205,7 @@ var CustomTranscribe = class extends TranscribeClient {
|
|
|
12140
12205
|
const _super = Object.create(null, {
|
|
12141
12206
|
connect: { get: () => super.connect }
|
|
12142
12207
|
});
|
|
12143
|
-
return
|
|
12208
|
+
return __awaiter35(this, void 0, void 0, function* () {
|
|
12144
12209
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
12145
12210
|
const _j = args !== null && args !== void 0 ? args : {}, { configuration, awaitConfiguration = true, proxy } = _j, rest = __rest4(_j, ["configuration", "awaitConfiguration", "proxy"]);
|
|
12146
12211
|
const useProxyPath = proxy || this._encodeHeadersAsWsProtocols;
|
|
@@ -12168,7 +12233,7 @@ var CustomTranscribe = class extends TranscribeClient {
|
|
|
12168
12233
|
* connection error / ended.
|
|
12169
12234
|
*/
|
|
12170
12235
|
_connectWithConfigAck(socket, configuration) {
|
|
12171
|
-
return
|
|
12236
|
+
return __awaiter35(this, void 0, void 0, function* () {
|
|
12172
12237
|
const configAck = this._buildConfigAckPromise(socket);
|
|
12173
12238
|
yield socket.waitForOpen();
|
|
12174
12239
|
socket.sendConfiguration({ type: "config", configuration });
|
|
@@ -12194,7 +12259,7 @@ var CustomTranscribe = class extends TranscribeClient {
|
|
|
12194
12259
|
});
|
|
12195
12260
|
socket.socket.addEventListener("message", (event) => {
|
|
12196
12261
|
const type = parseTranscribeResponseType(event.data);
|
|
12197
|
-
if (type == null || type === TranscribeConfigStatusMessageType.ConfigAccepted) {
|
|
12262
|
+
if (type == null || type === TranscribeConfigStatusMessageType.ConfigAccepted || type === TranscribeConfigStatusMessageType.ConfigAlreadyReceived) {
|
|
12198
12263
|
return;
|
|
12199
12264
|
}
|
|
12200
12265
|
if (TRANSCRIBE_CONFIG_REJECTION_TYPES.includes(type) || type === "error") {
|
|
@@ -12221,7 +12286,7 @@ var CustomTranscribe = class extends TranscribeClient {
|
|
|
12221
12286
|
const type = parseTranscribeResponseType(event.data);
|
|
12222
12287
|
if (type == null)
|
|
12223
12288
|
return;
|
|
12224
|
-
if (type === TranscribeConfigStatusMessageType.ConfigAccepted) {
|
|
12289
|
+
if (type === TranscribeConfigStatusMessageType.ConfigAccepted || type === TranscribeConfigStatusMessageType.ConfigAlreadyReceived) {
|
|
12225
12290
|
cleanup();
|
|
12226
12291
|
resolve();
|
|
12227
12292
|
} else if (TRANSCRIBE_CONFIG_REJECTION_TYPES.includes(type)) {
|
|
@@ -12298,7 +12363,7 @@ function decodeToken2(token) {
|
|
|
12298
12363
|
}
|
|
12299
12364
|
|
|
12300
12365
|
// node_modules/@corti/sdk/dist/esm/custom/utils/resolveClientOptions.mjs
|
|
12301
|
-
var
|
|
12366
|
+
var __awaiter36 = function(thisArg, _arguments, P2, generator) {
|
|
12302
12367
|
function adopt(value) {
|
|
12303
12368
|
return value instanceof P2 ? value : new P2(function(resolve) {
|
|
12304
12369
|
resolve(value);
|
|
@@ -12356,7 +12421,7 @@ function resolveClientOptions(options) {
|
|
|
12356
12421
|
};
|
|
12357
12422
|
}
|
|
12358
12423
|
const auth = opts.auth;
|
|
12359
|
-
const discoveryPromise = (() =>
|
|
12424
|
+
const discoveryPromise = (() => __awaiter36(this, void 0, void 0, function* () {
|
|
12360
12425
|
var _a;
|
|
12361
12426
|
const tokenResponse = yield auth.refreshAccessToken(auth.refreshToken);
|
|
12362
12427
|
const decoded = decodeToken2((_a = tokenResponse.accessToken) !== null && _a !== void 0 ? _a : "");
|
|
@@ -12377,12 +12442,44 @@ function resolveClientOptions(options) {
|
|
|
12377
12442
|
}
|
|
12378
12443
|
|
|
12379
12444
|
// node_modules/@corti/sdk/dist/esm/custom/CortiClient.mjs
|
|
12445
|
+
var __awaiter37 = function(thisArg, _arguments, P2, generator) {
|
|
12446
|
+
function adopt(value) {
|
|
12447
|
+
return value instanceof P2 ? value : new P2(function(resolve) {
|
|
12448
|
+
resolve(value);
|
|
12449
|
+
});
|
|
12450
|
+
}
|
|
12451
|
+
return new (P2 || (P2 = Promise))(function(resolve, reject) {
|
|
12452
|
+
function fulfilled(value) {
|
|
12453
|
+
try {
|
|
12454
|
+
step(generator.next(value));
|
|
12455
|
+
} catch (e10) {
|
|
12456
|
+
reject(e10);
|
|
12457
|
+
}
|
|
12458
|
+
}
|
|
12459
|
+
function rejected(value) {
|
|
12460
|
+
try {
|
|
12461
|
+
step(generator["throw"](value));
|
|
12462
|
+
} catch (e10) {
|
|
12463
|
+
reject(e10);
|
|
12464
|
+
}
|
|
12465
|
+
}
|
|
12466
|
+
function step(result) {
|
|
12467
|
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
12468
|
+
}
|
|
12469
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
12470
|
+
});
|
|
12471
|
+
};
|
|
12380
12472
|
var CortiClient2 = class extends CortiClient {
|
|
12381
12473
|
constructor(options) {
|
|
12382
12474
|
const opts = options;
|
|
12383
12475
|
const ctx = resolveClientOptions(options);
|
|
12384
12476
|
const restOptions = Object.assign(Object.assign(Object.assign({}, opts), { tenantName: ctx.tenantName, environment: getEnvironment(ctx.environment) }), ctx.initialTokenResponse != null ? { initialTokenResponse: ctx.initialTokenResponse } : {});
|
|
12385
12477
|
super(authToBaseOptions(opts.auth, restOptions));
|
|
12478
|
+
this.getAuthHeaders = () => __awaiter37(this, void 0, void 0, function* () {
|
|
12479
|
+
var _a;
|
|
12480
|
+
const req = yield this._options.authProvider.getAuthRequest();
|
|
12481
|
+
return new Headers(Object.assign(Object.assign({}, (_a = req.headers) !== null && _a !== void 0 ? _a : {}), { "Tenant-Name": yield Supplier.get(this._options.tenantName) }));
|
|
12482
|
+
});
|
|
12386
12483
|
setDefaultWithCredentials(options.withCredentials);
|
|
12387
12484
|
this._encodeHeadersAsWsProtocols = options.encodeHeadersAsWsProtocols;
|
|
12388
12485
|
}
|
|
@@ -12398,6 +12495,10 @@ var CortiClient2 = class extends CortiClient {
|
|
|
12398
12495
|
var _a;
|
|
12399
12496
|
return (_a = this._transcribe) !== null && _a !== void 0 ? _a : this._transcribe = new CustomTranscribe(Object.assign(Object.assign({}, this._options), { encodeHeadersAsWsProtocols: this._encodeHeadersAsWsProtocols }));
|
|
12400
12497
|
}
|
|
12498
|
+
get agents() {
|
|
12499
|
+
var _a;
|
|
12500
|
+
return (_a = this._agents) !== null && _a !== void 0 ? _a : this._agents = new CustomAgents(this._options);
|
|
12501
|
+
}
|
|
12401
12502
|
};
|
|
12402
12503
|
|
|
12403
12504
|
// node_modules/@corti/sdk/dist/esm/custom/proxy/CustomProxyStream.mjs
|
|
@@ -13413,6 +13514,9 @@ var DictationRecordingButton = class DictationRecordingButton2 extends i4 {
|
|
|
13413
13514
|
case "usage":
|
|
13414
13515
|
this.dispatchEvent(usageEvent(message));
|
|
13415
13516
|
break;
|
|
13517
|
+
case "delta_usage":
|
|
13518
|
+
this.dispatchEvent(deltaUsageEvent(message));
|
|
13519
|
+
break;
|
|
13416
13520
|
case "error":
|
|
13417
13521
|
this.dispatchEvent(errorEvent(message.error));
|
|
13418
13522
|
__classPrivateFieldGet7(this, _DictationRecordingButton_instances, "m", _DictationRecordingButton_handleStop).call(this);
|
|
@@ -26,7 +26,7 @@ import { KeybindingController } from "../controllers/keybinding-controller.js";
|
|
|
26
26
|
import { MediaController } from "../controllers/media-controller.js";
|
|
27
27
|
import ButtonStyles from "../styles/buttons.js";
|
|
28
28
|
import RecordingButtonStyles from "../styles/recording-button.js";
|
|
29
|
-
import { audioLevelChangedEvent, commandEvent, errorEvent, networkActivityEvent, recordingStateChangedEvent, streamClosedEvent, transcriptEvent, usageEvent, } from "../utils/events.js";
|
|
29
|
+
import { audioLevelChangedEvent, commandEvent, deltaUsageEvent, errorEvent, networkActivityEvent, recordingStateChangedEvent, streamClosedEvent, transcriptEvent, usageEvent, } from "../utils/events.js";
|
|
30
30
|
import "./audio-visualiser.js";
|
|
31
31
|
import "../icons/icons.js";
|
|
32
32
|
let DictationRecordingButton = class DictationRecordingButton extends LitElement {
|
|
@@ -60,6 +60,9 @@ let DictationRecordingButton = class DictationRecordingButton extends LitElement
|
|
|
60
60
|
case "usage":
|
|
61
61
|
this.dispatchEvent(usageEvent(message));
|
|
62
62
|
break;
|
|
63
|
+
case "delta_usage":
|
|
64
|
+
this.dispatchEvent(deltaUsageEvent(message));
|
|
65
|
+
break;
|
|
63
66
|
case "error":
|
|
64
67
|
this.dispatchEvent(errorEvent(message.error));
|
|
65
68
|
__classPrivateFieldGet(this, _DictationRecordingButton_instances, "m", _DictationRecordingButton_handleStop).call(this);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recording-button.js","sourceRoot":"","sources":["../../src/components/recording-button.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Corti, CortiAuth } from \"@corti/sdk\";\nimport { consume } from \"@lit/context\";\nimport {\n type CSSResultGroup,\n html,\n LitElement,\n type PropertyValues,\n} from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { AUDIO_CHUNK_INTERVAL_MS } from \"../constants.js\";\nimport {\n accessTokenContext,\n authConfigContext,\n debugDisplayAudioContext,\n dictationConfigContext,\n pushToTalkKeybindingContext,\n recordingStateContext,\n regionContext,\n selectedDeviceContext,\n socketProxyContext,\n socketUrlContext,\n tenantNameContext,\n toggleToTalkKeybindingContext,\n} from \"../contexts/dictation-context.js\";\nimport {\n DictationController,\n type TranscribeMessage,\n} from \"../controllers/dictation-controller.js\";\nimport { KeybindingController } from \"../controllers/keybinding-controller.js\";\nimport { MediaController } from \"../controllers/media-controller.js\";\nimport ButtonStyles from \"../styles/buttons.js\";\nimport RecordingButtonStyles from \"../styles/recording-button.js\";\nimport type { ProxyOptions, RecordingState } from \"../types.js\";\nimport {\n audioLevelChangedEvent,\n commandEvent,\n errorEvent,\n networkActivityEvent,\n type RecordingStateChangedEventDetail,\n recordingStateChangedEvent,\n streamClosedEvent,\n transcriptEvent,\n usageEvent,\n} from \"../utils/events.js\";\n\nimport \"./audio-visualiser.js\";\nimport \"../icons/icons.js\";\n\n@customElement(\"dictation-recording-button\")\nexport class DictationRecordingButton extends LitElement {\n @consume({ context: recordingStateContext, subscribe: true })\n @state()\n _recordingState: RecordingState = \"stopped\";\n\n @consume({ context: selectedDeviceContext, subscribe: true })\n @state()\n _selectedDevice?: MediaDeviceInfo;\n\n @consume({ context: accessTokenContext, subscribe: true })\n @state()\n _accessToken?: string;\n\n @consume({ context: authConfigContext, subscribe: true })\n @state()\n _authConfig?: CortiAuth.AuthTokenDerivable;\n\n @consume({ context: regionContext, subscribe: true })\n @state()\n _region?: string;\n\n @consume({ context: tenantNameContext, subscribe: true })\n @state()\n _tenantName?: string;\n\n @consume({ context: dictationConfigContext, subscribe: true })\n @state()\n _dictationConfig?: Corti.TranscribeConfig;\n\n @consume({ context: socketUrlContext, subscribe: true })\n @state()\n _socketUrl?: string;\n\n @consume({ context: socketProxyContext, subscribe: true })\n @state()\n _socketProxy?: ProxyOptions;\n\n @consume({ context: debugDisplayAudioContext, subscribe: true })\n @state()\n _debug_displayAudio?: boolean;\n\n @consume({ context: pushToTalkKeybindingContext, subscribe: true })\n @state()\n _pushToTalkKeybinding?: string | null;\n\n @consume({ context: toggleToTalkKeybindingContext, subscribe: true })\n @state()\n _toggleToTalkKeybinding?: string | null;\n\n @property({ type: Boolean })\n allowButtonFocus: boolean = false;\n\n #mediaController = new MediaController(this);\n #dictationController = new DictationController(this);\n #keybindingController = new KeybindingController(this);\n #closeConnectionOnInit = false;\n #processing = false;\n #connection: RecordingStateChangedEventDetail[\"connection\"] = \"CLOSED\";\n\n static styles: CSSResultGroup = [RecordingButtonStyles, ButtonStyles];\n\n protected update(changedProperties: PropertyValues) {\n if (\n changedProperties.has(\"_recordingState\") &&\n this._recordingState === \"recording\" &&\n this.#closeConnectionOnInit\n ) {\n this.#closeConnectionOnInit = false;\n this.#handleStop();\n }\n\n super.update(changedProperties);\n }\n\n #handleClick(event: MouseEvent): void {\n if (!this.allowButtonFocus) {\n event.preventDefault();\n }\n\n this.toggleRecording();\n }\n\n #handleWebSocketMessage = (message: TranscribeMessage): void => {\n switch (message.type) {\n case \"CONFIG_DENIED\":\n this.dispatchEvent(\n errorEvent(`Config denied: ${message.reason ?? \"Unknown reason\"}`),\n );\n this.#handleStop();\n break;\n case \"CONFIG_TIMEOUT\":\n this.dispatchEvent(errorEvent(\"Config timeout\"));\n this.#handleStop();\n break;\n case \"transcript\":\n this.dispatchEvent(transcriptEvent(message));\n break;\n case \"command\":\n this.dispatchEvent(commandEvent(message));\n break;\n case \"usage\":\n this.dispatchEvent(usageEvent(message));\n break;\n case \"error\":\n this.dispatchEvent(errorEvent(message.error));\n this.#handleStop();\n break;\n case \"flushed\":\n if (\n this._recordingState === \"stopped\" ||\n this._recordingState === \"stopping\"\n ) {\n this.#processing = false;\n this.#dispatchRecordingStateChanged(this._recordingState);\n }\n break;\n }\n };\n\n #handleWebSocketError = (error: Error): void => {\n this.dispatchEvent(errorEvent(\"Socket error: \" + error.message));\n this.#processing = false;\n this.#connection = \"CLOSED\";\n this.#handleStop();\n };\n\n #handleWebSocketClose = (event: unknown): void => {\n // When we already have new socket opened\n if (\n this.#dictationController.isConnectionOpen() ||\n this.#dictationController.isConnecting()\n ) {\n return;\n }\n\n this.#processing = false;\n this.#connection = \"CLOSED\";\n this.dispatchEvent(streamClosedEvent(event));\n this.#dispatchRecordingStateChanged(this._recordingState);\n };\n\n #dispatchRecordingStateChanged(state: RecordingState): void {\n this.dispatchEvent(\n recordingStateChangedEvent(state, {\n connection: this.#connection,\n processing: this.#processing,\n }),\n );\n }\n\n async #handleStart(): Promise<void> {\n this.#dispatchRecordingStateChanged(\"initializing\");\n\n try {\n await this.#mediaController.initialize(() => {\n if (this._recordingState === \"recording\") {\n this.dispatchEvent(errorEvent(\"Recording device access was lost.\"));\n this.#handleStop();\n }\n }, this.#dictationController.mediaRecorderHandler);\n this.#mediaController.mediaRecorder?.start(AUDIO_CHUNK_INTERVAL_MS);\n this.#mediaController.startAudioLevelMonitoring((level) => {\n this.dispatchEvent(audioLevelChangedEvent(level));\n });\n\n this.#processing = true;\n\n if (this.#connection !== \"OPEN\") {\n this.#connection = \"CONNECTING\";\n }\n\n this.#dispatchRecordingStateChanged(\"recording\");\n\n const isNewConnection = await this.#dictationController.connect(\n this._dictationConfig,\n {\n onClose: this.#handleWebSocketClose,\n onError: this.#handleWebSocketError,\n onMessage: this.#handleWebSocketMessage,\n onNetworkActivity: (direction, data) => {\n this.dispatchEvent(networkActivityEvent(direction, data));\n },\n },\n );\n\n if (isNewConnection === \"superseded\") {\n return;\n }\n\n this.#connection = \"OPEN\";\n\n this.#dispatchRecordingStateChanged(this._recordingState);\n } catch (error) {\n this.dispatchEvent(errorEvent(error));\n await this.#handleStop();\n }\n }\n\n async #handleStop(): Promise<void> {\n this.#dispatchRecordingStateChanged(\"stopping\");\n\n try {\n this.#mediaController.stopAudioLevelMonitoring();\n await this.#mediaController.stopRecording();\n\n this.#dispatchRecordingStateChanged(\"stopped\");\n\n await this.#dictationController.pause();\n await this.#mediaController.cleanup();\n } catch (error) {\n this.dispatchEvent(errorEvent(error));\n }\n }\n\n public startRecording(): void {\n if (this._recordingState !== \"stopped\") {\n return;\n }\n\n this.#handleStart();\n }\n\n public stopRecording(): void {\n if (\n this._recordingState === \"stopped\" ||\n this._recordingState === \"stopping\"\n ) {\n return;\n }\n\n if (this._recordingState === \"initializing\") {\n this.#closeConnectionOnInit = true;\n return;\n }\n\n this.#handleStop();\n }\n\n public toggleRecording(): void {\n if (this._recordingState === \"stopped\") {\n this.startRecording();\n } else if (this._recordingState === \"recording\") {\n this.stopRecording();\n }\n }\n\n public async openConnection(): Promise<void> {\n if (this._recordingState !== \"stopped\" || this.#processing) {\n return;\n }\n\n if (this.#dictationController.isConnectionOpen()) {\n return;\n }\n\n try {\n this.#connection = \"CONNECTING\";\n this.#dispatchRecordingStateChanged(this._recordingState);\n\n await this.#dictationController.connect(this._dictationConfig, {\n onClose: this.#handleWebSocketClose,\n onError: this.#handleWebSocketError,\n onMessage: this.#handleWebSocketMessage,\n onNetworkActivity: (direction, data) => {\n this.dispatchEvent(networkActivityEvent(direction, data));\n },\n });\n\n this.#connection = \"OPEN\";\n this.#dispatchRecordingStateChanged(this._recordingState);\n } catch (error) {\n this.#connection = \"CLOSED\";\n this.dispatchEvent(errorEvent(error));\n }\n }\n\n public async closeConnection(): Promise<void> {\n if (this._recordingState !== \"stopped\" || this.#processing) {\n return;\n }\n\n if (this.#dictationController.isConnecting()) {\n await this.#dictationController.waitForConnection();\n }\n\n if (!this.#dictationController.isConnectionOpen()) {\n this.#connection = \"CLOSED\";\n this.#dispatchRecordingStateChanged(\"stopped\");\n return;\n }\n\n try {\n this.#connection = \"CLOSING\";\n this.#dispatchRecordingStateChanged(\"stopped\");\n await this.#dictationController.closeConnection(\n this.#handleWebSocketClose,\n );\n } catch (error) {\n this.dispatchEvent(errorEvent(error));\n }\n }\n\n render() {\n const isLoading =\n this._recordingState === \"initializing\" ||\n this._recordingState === \"stopping\";\n const isRecording = this._recordingState === \"recording\";\n\n return html`\n <button\n @click=${this.#handleClick}\n ?disabled=${isLoading}\n class=${isRecording ? \"red\" : \"accent\"}\n aria-label=${isRecording ? \"Stop recording\" : \"Start recording\"}\n aria-pressed=${isRecording}\n >\n ${\n isLoading\n ? html`<icon-loading-spinner />`\n : isRecording\n ? html`<icon-recording />`\n : html`<icon-mic-on />`\n }\n <dictation-audio-visualiser\n .level=${this.#mediaController.audioLevel}\n ?active=${isRecording}\n />\n </button>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"dictation-recording-button\": DictationRecordingButton;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"recording-button.js","sourceRoot":"","sources":["../../src/components/recording-button.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Corti, CortiAuth } from \"@corti/sdk\";\nimport { consume } from \"@lit/context\";\nimport {\n type CSSResultGroup,\n html,\n LitElement,\n type PropertyValues,\n} from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { AUDIO_CHUNK_INTERVAL_MS } from \"../constants.js\";\nimport {\n accessTokenContext,\n authConfigContext,\n debugDisplayAudioContext,\n dictationConfigContext,\n pushToTalkKeybindingContext,\n recordingStateContext,\n regionContext,\n selectedDeviceContext,\n socketProxyContext,\n socketUrlContext,\n tenantNameContext,\n toggleToTalkKeybindingContext,\n} from \"../contexts/dictation-context.js\";\nimport {\n DictationController,\n type TranscribeMessage,\n} from \"../controllers/dictation-controller.js\";\nimport { KeybindingController } from \"../controllers/keybinding-controller.js\";\nimport { MediaController } from \"../controllers/media-controller.js\";\nimport ButtonStyles from \"../styles/buttons.js\";\nimport RecordingButtonStyles from \"../styles/recording-button.js\";\nimport type { ProxyOptions, RecordingState } from \"../types.js\";\nimport {\n audioLevelChangedEvent,\n commandEvent,\n deltaUsageEvent,\n errorEvent,\n networkActivityEvent,\n type RecordingStateChangedEventDetail,\n recordingStateChangedEvent,\n streamClosedEvent,\n transcriptEvent,\n usageEvent,\n} from \"../utils/events.js\";\n\nimport \"./audio-visualiser.js\";\nimport \"../icons/icons.js\";\n\n@customElement(\"dictation-recording-button\")\nexport class DictationRecordingButton extends LitElement {\n @consume({ context: recordingStateContext, subscribe: true })\n @state()\n _recordingState: RecordingState = \"stopped\";\n\n @consume({ context: selectedDeviceContext, subscribe: true })\n @state()\n _selectedDevice?: MediaDeviceInfo;\n\n @consume({ context: accessTokenContext, subscribe: true })\n @state()\n _accessToken?: string;\n\n @consume({ context: authConfigContext, subscribe: true })\n @state()\n _authConfig?: CortiAuth.AuthTokenDerivable;\n\n @consume({ context: regionContext, subscribe: true })\n @state()\n _region?: string;\n\n @consume({ context: tenantNameContext, subscribe: true })\n @state()\n _tenantName?: string;\n\n @consume({ context: dictationConfigContext, subscribe: true })\n @state()\n _dictationConfig?: Corti.TranscribeConfig;\n\n @consume({ context: socketUrlContext, subscribe: true })\n @state()\n _socketUrl?: string;\n\n @consume({ context: socketProxyContext, subscribe: true })\n @state()\n _socketProxy?: ProxyOptions;\n\n @consume({ context: debugDisplayAudioContext, subscribe: true })\n @state()\n _debug_displayAudio?: boolean;\n\n @consume({ context: pushToTalkKeybindingContext, subscribe: true })\n @state()\n _pushToTalkKeybinding?: string | null;\n\n @consume({ context: toggleToTalkKeybindingContext, subscribe: true })\n @state()\n _toggleToTalkKeybinding?: string | null;\n\n @property({ type: Boolean })\n allowButtonFocus: boolean = false;\n\n #mediaController = new MediaController(this);\n #dictationController = new DictationController(this);\n #keybindingController = new KeybindingController(this);\n #closeConnectionOnInit = false;\n #processing = false;\n #connection: RecordingStateChangedEventDetail[\"connection\"] = \"CLOSED\";\n\n static styles: CSSResultGroup = [RecordingButtonStyles, ButtonStyles];\n\n protected update(changedProperties: PropertyValues) {\n if (\n changedProperties.has(\"_recordingState\") &&\n this._recordingState === \"recording\" &&\n this.#closeConnectionOnInit\n ) {\n this.#closeConnectionOnInit = false;\n this.#handleStop();\n }\n\n super.update(changedProperties);\n }\n\n #handleClick(event: MouseEvent): void {\n if (!this.allowButtonFocus) {\n event.preventDefault();\n }\n\n this.toggleRecording();\n }\n\n #handleWebSocketMessage = (message: TranscribeMessage): void => {\n switch (message.type) {\n case \"CONFIG_DENIED\":\n this.dispatchEvent(\n errorEvent(`Config denied: ${message.reason ?? \"Unknown reason\"}`),\n );\n this.#handleStop();\n break;\n case \"CONFIG_TIMEOUT\":\n this.dispatchEvent(errorEvent(\"Config timeout\"));\n this.#handleStop();\n break;\n case \"transcript\":\n this.dispatchEvent(transcriptEvent(message));\n break;\n case \"command\":\n this.dispatchEvent(commandEvent(message));\n break;\n case \"usage\":\n this.dispatchEvent(usageEvent(message));\n break;\n case \"delta_usage\":\n this.dispatchEvent(deltaUsageEvent(message));\n break;\n case \"error\":\n this.dispatchEvent(errorEvent(message.error));\n this.#handleStop();\n break;\n case \"flushed\":\n if (\n this._recordingState === \"stopped\" ||\n this._recordingState === \"stopping\"\n ) {\n this.#processing = false;\n this.#dispatchRecordingStateChanged(this._recordingState);\n }\n break;\n }\n };\n\n #handleWebSocketError = (error: Error): void => {\n this.dispatchEvent(errorEvent(\"Socket error: \" + error.message));\n this.#processing = false;\n this.#connection = \"CLOSED\";\n this.#handleStop();\n };\n\n #handleWebSocketClose = (event: unknown): void => {\n // When we already have new socket opened\n if (\n this.#dictationController.isConnectionOpen() ||\n this.#dictationController.isConnecting()\n ) {\n return;\n }\n\n this.#processing = false;\n this.#connection = \"CLOSED\";\n this.dispatchEvent(streamClosedEvent(event));\n this.#dispatchRecordingStateChanged(this._recordingState);\n };\n\n #dispatchRecordingStateChanged(state: RecordingState): void {\n this.dispatchEvent(\n recordingStateChangedEvent(state, {\n connection: this.#connection,\n processing: this.#processing,\n }),\n );\n }\n\n async #handleStart(): Promise<void> {\n this.#dispatchRecordingStateChanged(\"initializing\");\n\n try {\n await this.#mediaController.initialize(() => {\n if (this._recordingState === \"recording\") {\n this.dispatchEvent(errorEvent(\"Recording device access was lost.\"));\n this.#handleStop();\n }\n }, this.#dictationController.mediaRecorderHandler);\n this.#mediaController.mediaRecorder?.start(AUDIO_CHUNK_INTERVAL_MS);\n this.#mediaController.startAudioLevelMonitoring((level) => {\n this.dispatchEvent(audioLevelChangedEvent(level));\n });\n\n this.#processing = true;\n\n if (this.#connection !== \"OPEN\") {\n this.#connection = \"CONNECTING\";\n }\n\n this.#dispatchRecordingStateChanged(\"recording\");\n\n const isNewConnection = await this.#dictationController.connect(\n this._dictationConfig,\n {\n onClose: this.#handleWebSocketClose,\n onError: this.#handleWebSocketError,\n onMessage: this.#handleWebSocketMessage,\n onNetworkActivity: (direction, data) => {\n this.dispatchEvent(networkActivityEvent(direction, data));\n },\n },\n );\n\n if (isNewConnection === \"superseded\") {\n return;\n }\n\n this.#connection = \"OPEN\";\n\n this.#dispatchRecordingStateChanged(this._recordingState);\n } catch (error) {\n this.dispatchEvent(errorEvent(error));\n await this.#handleStop();\n }\n }\n\n async #handleStop(): Promise<void> {\n this.#dispatchRecordingStateChanged(\"stopping\");\n\n try {\n this.#mediaController.stopAudioLevelMonitoring();\n await this.#mediaController.stopRecording();\n\n this.#dispatchRecordingStateChanged(\"stopped\");\n\n await this.#dictationController.pause();\n await this.#mediaController.cleanup();\n } catch (error) {\n this.dispatchEvent(errorEvent(error));\n }\n }\n\n public startRecording(): void {\n if (this._recordingState !== \"stopped\") {\n return;\n }\n\n this.#handleStart();\n }\n\n public stopRecording(): void {\n if (\n this._recordingState === \"stopped\" ||\n this._recordingState === \"stopping\"\n ) {\n return;\n }\n\n if (this._recordingState === \"initializing\") {\n this.#closeConnectionOnInit = true;\n return;\n }\n\n this.#handleStop();\n }\n\n public toggleRecording(): void {\n if (this._recordingState === \"stopped\") {\n this.startRecording();\n } else if (this._recordingState === \"recording\") {\n this.stopRecording();\n }\n }\n\n public async openConnection(): Promise<void> {\n if (this._recordingState !== \"stopped\" || this.#processing) {\n return;\n }\n\n if (this.#dictationController.isConnectionOpen()) {\n return;\n }\n\n try {\n this.#connection = \"CONNECTING\";\n this.#dispatchRecordingStateChanged(this._recordingState);\n\n await this.#dictationController.connect(this._dictationConfig, {\n onClose: this.#handleWebSocketClose,\n onError: this.#handleWebSocketError,\n onMessage: this.#handleWebSocketMessage,\n onNetworkActivity: (direction, data) => {\n this.dispatchEvent(networkActivityEvent(direction, data));\n },\n });\n\n this.#connection = \"OPEN\";\n this.#dispatchRecordingStateChanged(this._recordingState);\n } catch (error) {\n this.#connection = \"CLOSED\";\n this.dispatchEvent(errorEvent(error));\n }\n }\n\n public async closeConnection(): Promise<void> {\n if (this._recordingState !== \"stopped\" || this.#processing) {\n return;\n }\n\n if (this.#dictationController.isConnecting()) {\n await this.#dictationController.waitForConnection();\n }\n\n if (!this.#dictationController.isConnectionOpen()) {\n this.#connection = \"CLOSED\";\n this.#dispatchRecordingStateChanged(\"stopped\");\n return;\n }\n\n try {\n this.#connection = \"CLOSING\";\n this.#dispatchRecordingStateChanged(\"stopped\");\n await this.#dictationController.closeConnection(\n this.#handleWebSocketClose,\n );\n } catch (error) {\n this.dispatchEvent(errorEvent(error));\n }\n }\n\n render() {\n const isLoading =\n this._recordingState === \"initializing\" ||\n this._recordingState === \"stopping\";\n const isRecording = this._recordingState === \"recording\";\n\n return html`\n <button\n @click=${this.#handleClick}\n ?disabled=${isLoading}\n class=${isRecording ? \"red\" : \"accent\"}\n aria-label=${isRecording ? \"Stop recording\" : \"Start recording\"}\n aria-pressed=${isRecording}\n >\n ${\n isLoading\n ? html`<icon-loading-spinner />`\n : isRecording\n ? html`<icon-recording />`\n : html`<icon-mic-on />`\n }\n <dictation-audio-visualiser\n .level=${this.#mediaController.audioLevel}\n ?active=${isRecording}\n />\n </button>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"dictation-recording-button\": DictationRecordingButton;\n }\n}\n"]}
|
|
@@ -11,7 +11,7 @@ interface DictationControllerHost extends ReactiveControllerHost {
|
|
|
11
11
|
_socketProxy?: ProxyOptions;
|
|
12
12
|
_dictationConfig?: Corti.TranscribeConfig;
|
|
13
13
|
}
|
|
14
|
-
export type TranscribeMessage = Corti.TranscribeConfigStatusMessage | Corti.TranscribeUsageMessage | Corti.TranscribeEndedMessage | Corti.TranscribeErrorMessage | Corti.TranscribeTranscriptMessage | Corti.TranscribeCommandMessage | Corti.TranscribeFlushedMessage;
|
|
14
|
+
export type TranscribeMessage = Corti.TranscribeConfigStatusMessage | Corti.TranscribeUsageMessage | Corti.TranscribeDeltaUsageMessage | Corti.TranscribeEndedMessage | Corti.TranscribeErrorMessage | Corti.TranscribeTranscriptMessage | Corti.TranscribeCommandMessage | Corti.TranscribeFlushedMessage;
|
|
15
15
|
interface WebSocketCallbacks {
|
|
16
16
|
onMessage?: (message: TranscribeMessage) => void;
|
|
17
17
|
onError?: (error: Error) => void;
|