electron-native-speech-preload 0.1.2 → 0.1.3

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/index.d.ts CHANGED
@@ -29,22 +29,17 @@ export declare const IPC_CHANNELS: {
29
29
  };
30
30
  type SessionEventType = "result" | "error" | "state";
31
31
  type SessionListener<T extends SessionEventType> = T extends "result" ? (r: LiveSpeechResult) => void : T extends "error" ? (e: SpeechError) => void : T extends "state" ? (s: SpeechSessionState) => void : never;
32
- declare class RendererSpeechSession {
33
- private sessionId;
34
- private listeners;
35
- private ipcOff;
36
- constructor(sessionId: string);
32
+ declare function createRendererSpeechSession(sessionId: string): {
37
33
  on<T extends SessionEventType>(event: T, listener: SessionListener<T>): () => void;
38
34
  start(options?: SpeechSessionStartOptions): Promise<void>;
39
35
  stop(): Promise<void>;
40
36
  abort(): Promise<void>;
41
37
  dispose(): Promise<void>;
42
- private emit;
43
- }
38
+ };
44
39
  export interface ElectronSpeechAPI {
45
40
  getSpeechAvailability(): Promise<SpeechAvailability>;
46
41
  transcribeFile(options: FileTranscriptionOptions): Promise<FileTranscriptionResult>;
47
- createSpeechSession(): RendererSpeechSession;
42
+ createSpeechSession(): ReturnType<typeof createRendererSpeechSession>;
48
43
  }
49
44
  /**
50
45
  * Call this in your Electron preload script to expose the speech API
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,EAClB,WAAW,EACZ,MAAM,wBAAwB,CAAA;AAE/B,eAAO,MAAM,YAAY;;;;;;;;CAQf,CAAA;AAIV,KAAK,gBAAgB,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAA;AACpD,KAAK,eAAe,CAAC,CAAC,SAAS,gBAAgB,IAC7C,CAAC,SAAS,QAAQ,GAAG,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,GAChD,CAAC,SAAS,OAAO,GAAG,CAAC,CAAC,EAAE,WAAW,KAAK,IAAI,GAC5C,CAAC,SAAS,OAAO,GAAG,CAAC,CAAC,EAAE,kBAAkB,KAAK,IAAI,GACnD,KAAK,CAAA;AAET,cAAM,qBAAqB;IACzB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,SAAS,CAAuD;IACxE,OAAO,CAAC,MAAM,CAA4B;gBAE9B,SAAS,EAAE,MAAM;IAe7B,EAAE,CAAC,CAAC,SAAS,gBAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAM5E,KAAK,CAAC,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B,OAAO,CAAC,IAAI;CAGb;AAID,MAAM,WAAW,iBAAiB;IAChC,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACpD,cAAc,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAA;IACnF,mBAAmB,IAAI,qBAAqB,CAAA;CAC7C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,SAAmB,GAAG,IAAI,CAmBjE;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,cAAc,EAAE,iBAAiB,CAAA;KAClC;CACF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EACV,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,EAClB,WAAW,EACZ,MAAM,wBAAwB,CAAA;AAE/B,eAAO,MAAM,YAAY;;;;;;;;CAQf,CAAA;AAIV,KAAK,gBAAgB,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAA;AACpD,KAAK,eAAe,CAAC,CAAC,SAAS,gBAAgB,IAC7C,CAAC,SAAS,QAAQ,GAAG,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,GAChD,CAAC,SAAS,OAAO,GAAG,CAAC,CAAC,EAAE,WAAW,KAAK,IAAI,GAC5C,CAAC,SAAS,OAAO,GAAG,CAAC,CAAC,EAAE,kBAAkB,KAAK,IAAI,GACnD,KAAK,CAAA;AAoDT,iBAAS,2BAA2B,CAAC,SAAS,EAAE,MAAM;OAI/C,CAAC,SAAS,gBAAgB,SAAS,CAAC,YAAY,eAAe,CAAC,CAAC,CAAC,SAlCO,IAAI;oBAsChE,yBAAyB;;;;EAgB5C;AAID,MAAM,WAAW,iBAAiB;IAChC,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAA;IACpD,cAAc,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAA;IACnF,mBAAmB,IAAI,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAA;CACtE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,SAAmB,GAAG,IAAI,CAmBjE;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,cAAc,EAAE,iBAAiB,CAAA;KAClC;CACF"}
package/dist/index.js CHANGED
@@ -69,6 +69,26 @@ class RendererSpeechSession {
69
69
  this.listeners.get(event)?.forEach((l) => l(payload));
70
70
  }
71
71
  }
72
+ function createRendererSpeechSession(sessionId) {
73
+ const session = new RendererSpeechSession(sessionId);
74
+ return {
75
+ on(event, listener) {
76
+ return session.on(event, listener);
77
+ },
78
+ start(options) {
79
+ return session.start(options);
80
+ },
81
+ stop() {
82
+ return session.stop();
83
+ },
84
+ abort() {
85
+ return session.abort();
86
+ },
87
+ dispose() {
88
+ return session.dispose();
89
+ },
90
+ };
91
+ }
72
92
  /**
73
93
  * Call this in your Electron preload script to expose the speech API
74
94
  * to the renderer under `window.electronSpeech`.
@@ -84,7 +104,7 @@ function exposeElectronSpeech(key = "electronSpeech") {
84
104
  },
85
105
  createSpeechSession() {
86
106
  const sessionId = `session-${Date.now()}-${++sessionCounter}`;
87
- return new RendererSpeechSession(sessionId);
107
+ return createRendererSpeechSession(sessionId);
88
108
  },
89
109
  };
90
110
  electron_1.contextBridge.exposeInMainWorld(key, api);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ type UsageDescriptionKind = "speech" | "microphone";
2
+ export declare function getMissingUsageDescriptionMessage(kind: UsageDescriptionKind): string | null;
3
+ export {};
4
+ //# sourceMappingURL=macos-usage-descriptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"macos-usage-descriptions.d.ts","sourceRoot":"","sources":["../src/macos-usage-descriptions.ts"],"names":[],"mappings":"AAIA,KAAK,oBAAoB,GAAG,QAAQ,GAAG,YAAY,CAAA;AAOnD,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,GAAG,IAAI,CAsB3F"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getMissingUsageDescriptionMessage = getMissingUsageDescriptionMessage;
37
+ const child_process_1 = require("child_process");
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ const USAGE_DESCRIPTION_KEYS = {
41
+ speech: "NSSpeechRecognitionUsageDescription",
42
+ microphone: "NSMicrophoneUsageDescription",
43
+ };
44
+ function getMissingUsageDescriptionMessage(kind) {
45
+ if (process.platform !== "darwin")
46
+ return null;
47
+ const infoPlistPath = path.resolve(process.execPath, "..", "..", "Info.plist");
48
+ if (!fs.existsSync(infoPlistPath))
49
+ return null;
50
+ const key = USAGE_DESCRIPTION_KEYS[kind];
51
+ try {
52
+ const value = (0, child_process_1.execFileSync)("/usr/bin/plutil", ["-extract", key, "raw", "-o", "-", infoPlistPath], { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"] }).trim();
53
+ if (value)
54
+ return null;
55
+ }
56
+ catch {
57
+ // Missing key or unreadable plist: surface a single actionable message below.
58
+ }
59
+ const feature = kind === "speech" ? "speech recognition" : "microphone access";
60
+ return `Missing ${key} in ${infoPlistPath}. macOS can abort ${feature} permission requests without this key. Add it to your app's Info.plist and restart the app.`;
61
+ }
62
+ //# sourceMappingURL=macos-usage-descriptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"macos-usage-descriptions.js","sourceRoot":"","sources":["../src/macos-usage-descriptions.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,8EAsBC;AAjCD,iDAA4C;AAC5C,uCAAwB;AACxB,2CAA4B;AAI5B,MAAM,sBAAsB,GAAyC;IACnE,MAAM,EAAE,qCAAqC;IAC7C,UAAU,EAAE,8BAA8B;CAC3C,CAAA;AAED,SAAgB,iCAAiC,CAAC,IAA0B;IAC1E,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IAE9C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,CAAA;IAC9E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,IAAI,CAAA;IAE9C,MAAM,GAAG,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAA;IAExC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAA,4BAAY,EACxB,iBAAiB,EACjB,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,aAAa,CAAC,EAClD,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAC1D,CAAC,IAAI,EAAE,CAAA;QAER,IAAI,KAAK;YAAE,OAAO,IAAI,CAAA;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,8EAA8E;IAChF,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,mBAAmB,CAAA;IAC9E,OAAO,WAAW,GAAG,OAAO,aAAa,qBAAqB,OAAO,6FAA6F,CAAA;AACpK,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"main-handlers.d.ts","sourceRoot":"","sources":["../src/main-handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAUpD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,GAAG,MAAM,IAAI,CAmE7F"}
1
+ {"version":3,"file":"main-handlers.d.ts","sourceRoot":"","sources":["../src/main-handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAUpD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,GAAG,MAAM,IAAI,CAwE7F"}
@@ -16,9 +16,9 @@
16
16
  */
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.registerSpeechHandlers = registerSpeechHandlers;
19
- const electron_1 = require("electron");
20
19
  const electron_native_speech_1 = require("electron-native-speech");
21
20
  const index_1 = require("./index");
21
+ const macos_usage_descriptions_1 = require("./macos-usage-descriptions");
22
22
  function registerSpeechHandlers(ipcMain, webContents) {
23
23
  const sessions = new Map();
24
24
  const forwardEvent = (sessionId, type, payload) => {
@@ -27,16 +27,21 @@ function registerSpeechHandlers(ipcMain, webContents) {
27
27
  }
28
28
  };
29
29
  ipcMain.handle(index_1.IPC_CHANNELS.GET_AVAILABILITY, () => (0, electron_native_speech_1.getSpeechAvailability)());
30
- ipcMain.handle(index_1.IPC_CHANNELS.TRANSCRIBE_FILE, (_e, options) => (0, electron_native_speech_1.transcribeFile)(options));
30
+ ipcMain.handle(index_1.IPC_CHANNELS.TRANSCRIBE_FILE, (_e, options) => {
31
+ const speechUsageIssue = (0, macos_usage_descriptions_1.getMissingUsageDescriptionMessage)("speech");
32
+ if (speechUsageIssue) {
33
+ throw new Error(speechUsageIssue);
34
+ }
35
+ return (0, electron_native_speech_1.transcribeFile)(options);
36
+ });
31
37
  ipcMain.handle(index_1.IPC_CHANNELS.SESSION_START, async (_e, sessionId, options) => {
32
- // Request microphone permission from the Electron (parent) process first.
33
- // On macOS, TCC attributes permission to the responsible process — granting it
34
- // here lets the SpeechHelper subprocess use the mic without crashing.
35
- if (process.platform === "darwin") {
36
- const granted = await electron_1.systemPreferences.askForMediaAccess("microphone");
37
- if (!granted) {
38
- throw new Error("Microphone access denied. Grant access in System Settings → Privacy & Security → Microphone.");
39
- }
38
+ const speechUsageIssue = (0, macos_usage_descriptions_1.getMissingUsageDescriptionMessage)("speech");
39
+ if (speechUsageIssue) {
40
+ throw new Error(speechUsageIssue);
41
+ }
42
+ const microphoneUsageIssue = (0, macos_usage_descriptions_1.getMissingUsageDescriptionMessage)("microphone");
43
+ if (microphoneUsageIssue) {
44
+ throw new Error(microphoneUsageIssue);
40
45
  }
41
46
  let session = sessions.get(sessionId);
42
47
  if (!session) {
@@ -1 +1 @@
1
- {"version":3,"file":"main-handlers.js","sourceRoot":"","sources":["../src/main-handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main-handlers.js","sourceRoot":"","sources":["../src/main-handlers.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "electron-native-speech-preload",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "Electron preload bridge for electron-native-speech",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",