@parlor/capabilities 0.1.0 → 0.3.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/adapters/capacitor.d.ts.map +1 -1
- package/dist/adapters/capacitor.js +3 -0
- package/dist/adapters/capacitor.js.map +1 -1
- package/dist/adapters/tauri.d.ts.map +1 -1
- package/dist/adapters/tauri.js +3 -0
- package/dist/adapters/tauri.js.map +1 -1
- package/dist/adapters/types.d.ts +2 -0
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/adapters/types.js.map +1 -1
- package/dist/adapters/web.d.ts.map +1 -1
- package/dist/adapters/web.js +2 -0
- package/dist/adapters/web.js.map +1 -1
- package/dist/auth-browser/capacitor.d.ts +15 -0
- package/dist/auth-browser/capacitor.d.ts.map +1 -0
- package/dist/auth-browser/capacitor.js +16 -0
- package/dist/auth-browser/capacitor.js.map +1 -0
- package/dist/auth-browser/index.d.ts +7 -0
- package/dist/auth-browser/index.d.ts.map +1 -0
- package/dist/auth-browser/index.js +10 -0
- package/dist/auth-browser/index.js.map +1 -0
- package/dist/auth-browser/interface.d.ts +9 -0
- package/dist/auth-browser/interface.d.ts.map +1 -0
- package/dist/auth-browser/interface.js +2 -0
- package/dist/auth-browser/interface.js.map +1 -0
- package/dist/auth-browser/scheme.d.ts +2 -0
- package/dist/auth-browser/scheme.d.ts.map +1 -0
- package/dist/auth-browser/scheme.js +4 -0
- package/dist/auth-browser/scheme.js.map +1 -0
- package/dist/auth-browser/tauri.d.ts +6 -0
- package/dist/auth-browser/tauri.d.ts.map +1 -0
- package/dist/auth-browser/tauri.js +20 -0
- package/dist/auth-browser/tauri.js.map +1 -0
- package/dist/auth-browser/web.d.ts +5 -0
- package/dist/auth-browser/web.d.ts.map +1 -0
- package/dist/auth-browser/web.js +15 -0
- package/dist/auth-browser/web.js.map +1 -0
- package/dist/capability.js.map +1 -1
- package/dist/deep-link/capacitor.js.map +1 -1
- package/dist/deep-link/index.js.map +1 -1
- package/dist/deep-link/interface.js.map +1 -1
- package/dist/deep-link/tauri.js.map +1 -1
- package/dist/deep-link/web.js.map +1 -1
- package/dist/device-key/capacitor.js.map +1 -1
- package/dist/device-key/encoding.js.map +1 -1
- package/dist/device-key/index.js.map +1 -1
- package/dist/device-key/interface.js.map +1 -1
- package/dist/device-key/native.js.map +1 -1
- package/dist/device-key/tauri.js.map +1 -1
- package/dist/device-key/web.js.map +1 -1
- package/dist/files/capacitor.js.map +1 -1
- package/dist/files/index.js.map +1 -1
- package/dist/files/interface.js.map +1 -1
- package/dist/files/mime.js.map +1 -1
- package/dist/files/tauri.js.map +1 -1
- package/dist/files/web.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/local-agent-host/capacitor.js.map +1 -1
- package/dist/local-agent-host/index.js.map +1 -1
- package/dist/local-agent-host/interface.js.map +1 -1
- package/dist/local-agent-host/tauri.js.map +1 -1
- package/dist/local-agent-host/web.js.map +1 -1
- package/dist/notifications/capacitor.js.map +1 -1
- package/dist/notifications/index.js.map +1 -1
- package/dist/notifications/interface.js.map +1 -1
- package/dist/notifications/tauri.js.map +1 -1
- package/dist/notifications/web.js.map +1 -1
- package/dist/runtime.js.map +1 -1
- package/dist/session-store/capacitor.js.map +1 -1
- package/dist/session-store/index.js.map +1 -1
- package/dist/session-store/interface.js.map +1 -1
- package/dist/session-store/keychain.js.map +1 -1
- package/dist/session-store/local.js.map +1 -1
- package/dist/session-store/tauri.js.map +1 -1
- package/dist/session-store/web.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capacitor.d.ts","sourceRoot":"","sources":["../../src/adapters/capacitor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"capacitor.d.ts","sourceRoot":"","sources":["../../src/adapters/capacitor.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,eAAO,MAAM,gBAAgB,EAAE,gBAQ9B,CAAC"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { capacitorAuthBrowser } from "../auth-browser/capacitor.js";
|
|
2
|
+
import { webAuthBrowser } from "../auth-browser/web.js";
|
|
1
3
|
import { capacitorDeepLink } from "../deep-link/capacitor.js";
|
|
2
4
|
import { webDeepLink } from "../deep-link/web.js";
|
|
3
5
|
import { capacitorDeviceKey } from "../device-key/capacitor.js";
|
|
@@ -17,5 +19,6 @@ export const platformAdapters = {
|
|
|
17
19
|
deviceKey: [capacitorDeviceKey(), webDeviceKey()],
|
|
18
20
|
localAgentHost: [capacitorLocalAgentHost(), webLocalAgentHost()],
|
|
19
21
|
files: [capacitorFiles(), webFiles()],
|
|
22
|
+
authBrowser: [capacitorAuthBrowser(), webAuthBrowser()],
|
|
20
23
|
};
|
|
21
24
|
//# sourceMappingURL=capacitor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capacitor.js","sourceRoot":"","sources":["../../src/adapters/capacitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1D,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD,aAAa,EAAE,CAAC,sBAAsB,EAAE,EAAE,gBAAgB,EAAE,CAAC;IAC7D,QAAQ,EAAE,CAAC,iBAAiB,EAAE,EAAE,WAAW,EAAE,CAAC;IAC9C,YAAY,EAAE,CAAC,qBAAqB,EAAE,EAAE,eAAe,EAAE,CAAC;IAC1D,SAAS,EAAE,CAAC,kBAAkB,EAAE,EAAE,YAAY,EAAE,CAAC;IACjD,cAAc,EAAE,CAAC,uBAAuB,EAAE,EAAE,iBAAiB,EAAE,CAAC;IAChE,KAAK,EAAE,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"capacitor.js","sourceRoot":"","sources":["../../src/adapters/capacitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1D,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD,aAAa,EAAE,CAAC,sBAAsB,EAAE,EAAE,gBAAgB,EAAE,CAAC;IAC7D,QAAQ,EAAE,CAAC,iBAAiB,EAAE,EAAE,WAAW,EAAE,CAAC;IAC9C,YAAY,EAAE,CAAC,qBAAqB,EAAE,EAAE,eAAe,EAAE,CAAC;IAC1D,SAAS,EAAE,CAAC,kBAAkB,EAAE,EAAE,YAAY,EAAE,CAAC;IACjD,cAAc,EAAE,CAAC,uBAAuB,EAAE,EAAE,iBAAiB,EAAE,CAAC;IAChE,KAAK,EAAE,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,CAAC;IACrC,WAAW,EAAE,CAAC,oBAAoB,EAAE,EAAE,cAAc,EAAE,CAAC;CACxD,CAAC","sourcesContent":["import { capacitorAuthBrowser } from \"../auth-browser/capacitor.js\";\nimport { webAuthBrowser } from \"../auth-browser/web.js\";\nimport { capacitorDeepLink } from \"../deep-link/capacitor.js\";\nimport { webDeepLink } from \"../deep-link/web.js\";\nimport { capacitorDeviceKey } from \"../device-key/capacitor.js\";\nimport { webDeviceKey } from \"../device-key/web.js\";\nimport { capacitorFiles } from \"../files/capacitor.js\";\nimport { webFiles } from \"../files/web.js\";\nimport { capacitorLocalAgentHost } from \"../local-agent-host/capacitor.js\";\nimport { webLocalAgentHost } from \"../local-agent-host/web.js\";\nimport { capacitorNotifications } from \"../notifications/capacitor.js\";\nimport { webNotifications } from \"../notifications/web.js\";\nimport { capacitorSessionStore } from \"../session-store/capacitor.js\";\nimport { webSessionStore } from \"../session-store/web.js\";\nimport type { PlatformAdapters } from \"./types.js\";\n\nexport const platformAdapters: PlatformAdapters = {\n notifications: [capacitorNotifications(), webNotifications()],\n deepLink: [capacitorDeepLink(), webDeepLink()],\n sessionStore: [capacitorSessionStore(), webSessionStore()],\n deviceKey: [capacitorDeviceKey(), webDeviceKey()],\n localAgentHost: [capacitorLocalAgentHost(), webLocalAgentHost()],\n files: [capacitorFiles(), webFiles()],\n authBrowser: [capacitorAuthBrowser(), webAuthBrowser()],\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tauri.d.ts","sourceRoot":"","sources":["../../src/adapters/tauri.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tauri.d.ts","sourceRoot":"","sources":["../../src/adapters/tauri.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,eAAO,MAAM,gBAAgB,EAAE,gBAQ9B,CAAC"}
|
package/dist/adapters/tauri.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { tauriAuthBrowser } from "../auth-browser/tauri.js";
|
|
2
|
+
import { webAuthBrowser } from "../auth-browser/web.js";
|
|
1
3
|
import { tauriDeepLink } from "../deep-link/tauri.js";
|
|
2
4
|
import { webDeepLink } from "../deep-link/web.js";
|
|
3
5
|
import { tauriDeviceKey } from "../device-key/tauri.js";
|
|
@@ -17,5 +19,6 @@ export const platformAdapters = {
|
|
|
17
19
|
deviceKey: [tauriDeviceKey(), webDeviceKey()],
|
|
18
20
|
localAgentHost: [tauriLocalAgentHost(), webLocalAgentHost()],
|
|
19
21
|
files: [tauriFiles(), webFiles()],
|
|
22
|
+
authBrowser: [tauriAuthBrowser(), webAuthBrowser()],
|
|
20
23
|
};
|
|
21
24
|
//# sourceMappingURL=tauri.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tauri.js","sourceRoot":"","sources":["../../src/adapters/tauri.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1D,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD,aAAa,EAAE,CAAC,kBAAkB,EAAE,EAAE,gBAAgB,EAAE,CAAC;IACzD,QAAQ,EAAE,CAAC,aAAa,EAAE,EAAE,WAAW,EAAE,CAAC;IAC1C,YAAY,EAAE,CAAC,iBAAiB,EAAE,EAAE,eAAe,EAAE,CAAC;IACtD,SAAS,EAAE,CAAC,cAAc,EAAE,EAAE,YAAY,EAAE,CAAC;IAC7C,cAAc,EAAE,CAAC,mBAAmB,EAAE,EAAE,iBAAiB,EAAE,CAAC;IAC5D,KAAK,EAAE,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"tauri.js","sourceRoot":"","sources":["../../src/adapters/tauri.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1D,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD,aAAa,EAAE,CAAC,kBAAkB,EAAE,EAAE,gBAAgB,EAAE,CAAC;IACzD,QAAQ,EAAE,CAAC,aAAa,EAAE,EAAE,WAAW,EAAE,CAAC;IAC1C,YAAY,EAAE,CAAC,iBAAiB,EAAE,EAAE,eAAe,EAAE,CAAC;IACtD,SAAS,EAAE,CAAC,cAAc,EAAE,EAAE,YAAY,EAAE,CAAC;IAC7C,cAAc,EAAE,CAAC,mBAAmB,EAAE,EAAE,iBAAiB,EAAE,CAAC;IAC5D,KAAK,EAAE,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC;IACjC,WAAW,EAAE,CAAC,gBAAgB,EAAE,EAAE,cAAc,EAAE,CAAC;CACpD,CAAC","sourcesContent":["import { tauriAuthBrowser } from \"../auth-browser/tauri.js\";\nimport { webAuthBrowser } from \"../auth-browser/web.js\";\nimport { tauriDeepLink } from \"../deep-link/tauri.js\";\nimport { webDeepLink } from \"../deep-link/web.js\";\nimport { tauriDeviceKey } from \"../device-key/tauri.js\";\nimport { webDeviceKey } from \"../device-key/web.js\";\nimport { tauriFiles } from \"../files/tauri.js\";\nimport { webFiles } from \"../files/web.js\";\nimport { tauriLocalAgentHost } from \"../local-agent-host/tauri.js\";\nimport { webLocalAgentHost } from \"../local-agent-host/web.js\";\nimport { tauriNotifications } from \"../notifications/tauri.js\";\nimport { webNotifications } from \"../notifications/web.js\";\nimport { tauriSessionStore } from \"../session-store/tauri.js\";\nimport { webSessionStore } from \"../session-store/web.js\";\nimport type { PlatformAdapters } from \"./types.js\";\n\nexport const platformAdapters: PlatformAdapters = {\n notifications: [tauriNotifications(), webNotifications()],\n deepLink: [tauriDeepLink(), webDeepLink()],\n sessionStore: [tauriSessionStore(), webSessionStore()],\n deviceKey: [tauriDeviceKey(), webDeviceKey()],\n localAgentHost: [tauriLocalAgentHost(), webLocalAgentHost()],\n files: [tauriFiles(), webFiles()],\n authBrowser: [tauriAuthBrowser(), webAuthBrowser()],\n};\n"]}
|
package/dist/adapters/types.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { AuthBrowser } from "../auth-browser/interface.js";
|
|
1
2
|
import type { CapabilityAdapter } from "../capability.js";
|
|
2
3
|
import type { DeepLink } from "../deep-link/interface.js";
|
|
3
4
|
import type { DeviceKey } from "../device-key/interface.js";
|
|
@@ -12,5 +13,6 @@ export interface PlatformAdapters {
|
|
|
12
13
|
readonly deviceKey: readonly CapabilityAdapter<DeviceKey>[];
|
|
13
14
|
readonly localAgentHost: readonly CapabilityAdapter<LocalAgentHost>[];
|
|
14
15
|
readonly files: readonly CapabilityAdapter<Files>[];
|
|
16
|
+
readonly authBrowser: readonly CapabilityAdapter<AuthBrowser>[];
|
|
15
17
|
}
|
|
16
18
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,aAAa,EAAE,SAAS,iBAAiB,CAAC,aAAa,CAAC,EAAE,CAAC;IACpE,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC1D,QAAQ,CAAC,YAAY,EAAE,SAAS,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC;IAClE,QAAQ,CAAC,SAAS,EAAE,SAAS,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;IAC5D,QAAQ,CAAC,cAAc,EAAE,SAAS,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC;IACtE,QAAQ,CAAC,KAAK,EAAE,SAAS,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,aAAa,EAAE,SAAS,iBAAiB,CAAC,aAAa,CAAC,EAAE,CAAC;IACpE,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC1D,QAAQ,CAAC,YAAY,EAAE,SAAS,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC;IAClE,QAAQ,CAAC,SAAS,EAAE,SAAS,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC;IAC5D,QAAQ,CAAC,cAAc,EAAE,SAAS,iBAAiB,CAAC,cAAc,CAAC,EAAE,CAAC;IACtE,QAAQ,CAAC,KAAK,EAAE,SAAS,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;IACpD,QAAQ,CAAC,WAAW,EAAE,SAAS,iBAAiB,CAAC,WAAW,CAAC,EAAE,CAAC;CACjE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { AuthBrowser } from \"../auth-browser/interface.js\";\nimport type { CapabilityAdapter } from \"../capability.js\";\nimport type { DeepLink } from \"../deep-link/interface.js\";\nimport type { DeviceKey } from \"../device-key/interface.js\";\nimport type { Files } from \"../files/interface.js\";\nimport type { LocalAgentHost } from \"../local-agent-host/interface.js\";\nimport type { Notifications } from \"../notifications/interface.js\";\nimport type { SessionStore } from \"../session-store/interface.js\";\n\nexport interface PlatformAdapters {\n readonly notifications: readonly CapabilityAdapter<Notifications>[];\n readonly deepLink: readonly CapabilityAdapter<DeepLink>[];\n readonly sessionStore: readonly CapabilityAdapter<SessionStore>[];\n readonly deviceKey: readonly CapabilityAdapter<DeviceKey>[];\n readonly localAgentHost: readonly CapabilityAdapter<LocalAgentHost>[];\n readonly files: readonly CapabilityAdapter<Files>[];\n readonly authBrowser: readonly CapabilityAdapter<AuthBrowser>[];\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/adapters/web.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/adapters/web.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,eAAO,MAAM,gBAAgB,EAAE,gBAQ9B,CAAC"}
|
package/dist/adapters/web.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { webAuthBrowser } from "../auth-browser/web.js";
|
|
1
2
|
import { webDeepLink } from "../deep-link/web.js";
|
|
2
3
|
import { webDeviceKey } from "../device-key/web.js";
|
|
3
4
|
import { webFiles } from "../files/web.js";
|
|
@@ -11,5 +12,6 @@ export const platformAdapters = {
|
|
|
11
12
|
deviceKey: [webDeviceKey()],
|
|
12
13
|
localAgentHost: [webLocalAgentHost()],
|
|
13
14
|
files: [webFiles()],
|
|
15
|
+
authBrowser: [webAuthBrowser()],
|
|
14
16
|
};
|
|
15
17
|
//# sourceMappingURL=web.js.map
|
package/dist/adapters/web.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/adapters/web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1D,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD,aAAa,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACnC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;IACzB,YAAY,EAAE,CAAC,eAAe,EAAE,CAAC;IACjC,SAAS,EAAE,CAAC,YAAY,EAAE,CAAC;IAC3B,cAAc,EAAE,CAAC,iBAAiB,EAAE,CAAC;IACrC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/adapters/web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG1D,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD,aAAa,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACnC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;IACzB,YAAY,EAAE,CAAC,eAAe,EAAE,CAAC;IACjC,SAAS,EAAE,CAAC,YAAY,EAAE,CAAC;IAC3B,cAAc,EAAE,CAAC,iBAAiB,EAAE,CAAC;IACrC,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC;IACnB,WAAW,EAAE,CAAC,cAAc,EAAE,CAAC;CAChC,CAAC","sourcesContent":["import { webAuthBrowser } from \"../auth-browser/web.js\";\nimport { webDeepLink } from \"../deep-link/web.js\";\nimport { webDeviceKey } from \"../device-key/web.js\";\nimport { webFiles } from \"../files/web.js\";\nimport { webLocalAgentHost } from \"../local-agent-host/web.js\";\nimport { webNotifications } from \"../notifications/web.js\";\nimport { webSessionStore } from \"../session-store/web.js\";\nimport type { PlatformAdapters } from \"./types.js\";\n\nexport const platformAdapters: PlatformAdapters = {\n notifications: [webNotifications()],\n deepLink: [webDeepLink()],\n sessionStore: [webSessionStore()],\n deviceKey: [webDeviceKey()],\n localAgentHost: [webLocalAgentHost()],\n files: [webFiles()],\n authBrowser: [webAuthBrowser()],\n};\n"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { CapabilityAdapter } from "../capability.js";
|
|
2
|
+
import type { AuthBrowser } from "./interface.js";
|
|
3
|
+
/** The `ParlorAuthBrowser` native plugin: ASWebAuthenticationSession on iOS. */
|
|
4
|
+
export interface CapacitorAuthBrowserModule {
|
|
5
|
+
ParlorAuthBrowser: {
|
|
6
|
+
open(options: {
|
|
7
|
+
url: string;
|
|
8
|
+
callbackScheme: string;
|
|
9
|
+
}): Promise<{
|
|
10
|
+
url?: string;
|
|
11
|
+
}>;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export declare function capacitorAuthBrowser(load?: () => Promise<CapacitorAuthBrowserModule>): CapabilityAdapter<AuthBrowser>;
|
|
15
|
+
//# sourceMappingURL=capacitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capacitor.d.ts","sourceRoot":"","sources":["../../src/auth-browser/capacitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlD,gFAAgF;AAChF,MAAM,WAAW,0BAA0B;IACzC,iBAAiB,EAAE;QACjB,IAAI,CAAC,OAAO,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,cAAc,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC;YAAE,GAAG,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACnF,CAAC;CACH;AAED,wBAAgB,oBAAoB,CAClC,IAAI,GAAE,MAAM,OAAO,CAAC,0BAA0B,CACN,GACvC,iBAAiB,CAAC,WAAW,CAAC,CAahC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { hasIosPlugin } from "../device-key/native.js";
|
|
2
|
+
import { schemeOf } from "./scheme.js";
|
|
3
|
+
export function capacitorAuthBrowser(load = () => import("@parlor/capacitor-device-key")) {
|
|
4
|
+
return {
|
|
5
|
+
platform: "capacitor",
|
|
6
|
+
available: () => hasIosPlugin(),
|
|
7
|
+
create: async () => {
|
|
8
|
+
const { ParlorAuthBrowser } = await load();
|
|
9
|
+
return {
|
|
10
|
+
open: async (url, callbackUrl) => (await ParlorAuthBrowser.open({ url, callbackScheme: schemeOf(callbackUrl) }))
|
|
11
|
+
.url,
|
|
12
|
+
};
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=capacitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capacitor.js","sourceRoot":"","sources":["../../src/auth-browser/capacitor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AASvC,MAAM,UAAU,oBAAoB,CAClC,IAAI,GAA8C,GAAG,EAAE,CACrD,MAAM,CAAC,8BAA8B,CAAC;IAExC,OAAO;QACL,QAAQ,EAAE,WAAW;QACrB,SAAS,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE;QAC/B,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;YAC3C,OAAO;gBACL,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,CAC/B,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;qBAC3E,GAAG;aACT,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { CapabilityAdapter } from \"../capability.js\";\nimport { hasIosPlugin } from \"../device-key/native.js\";\nimport type { AuthBrowser } from \"./interface.js\";\nimport { schemeOf } from \"./scheme.js\";\n\n/** The `ParlorAuthBrowser` native plugin: ASWebAuthenticationSession on iOS. */\nexport interface CapacitorAuthBrowserModule {\n ParlorAuthBrowser: {\n open(options: { url: string; callbackScheme: string }): Promise<{ url?: string }>;\n };\n}\n\nexport function capacitorAuthBrowser(\n load: () => Promise<CapacitorAuthBrowserModule> = () =>\n import(\"@parlor/capacitor-device-key\"),\n): CapabilityAdapter<AuthBrowser> {\n return {\n platform: \"capacitor\",\n available: () => hasIosPlugin(),\n create: async () => {\n const { ParlorAuthBrowser } = await load();\n return {\n open: async (url, callbackUrl) =>\n (await ParlorAuthBrowser.open({ url, callbackScheme: schemeOf(callbackUrl) }))\n .url,\n };\n },\n };\n}\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AuthBrowser } from "./interface.js";
|
|
2
|
+
export type { AuthBrowser } from "./interface.js";
|
|
3
|
+
export { capacitorAuthBrowser, type CapacitorAuthBrowserModule } from "./capacitor.js";
|
|
4
|
+
export { tauriAuthBrowser } from "./tauri.js";
|
|
5
|
+
export { webAuthBrowser } from "./web.js";
|
|
6
|
+
export declare const authBrowser: import("../capability.js").CapabilityDefinition<AuthBrowser>;
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth-browser/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,KAAK,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,eAAO,MAAM,WAAW,8DAGtB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { platformAdapters } from "#adapters";
|
|
2
|
+
import { defineCapability } from "../capability.js";
|
|
3
|
+
export { capacitorAuthBrowser } from "./capacitor.js";
|
|
4
|
+
export { tauriAuthBrowser } from "./tauri.js";
|
|
5
|
+
export { webAuthBrowser } from "./web.js";
|
|
6
|
+
export const authBrowser = defineCapability({
|
|
7
|
+
name: "authBrowser",
|
|
8
|
+
adapters: platformAdapters.authBrowser,
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth-browser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIpD,OAAO,EAAE,oBAAoB,EAAmC,MAAM,gBAAgB,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAgB,CAAc;IACvD,IAAI,EAAE,aAAa;IACnB,QAAQ,EAAE,gBAAgB,CAAC,WAAW;CACvC,CAAC,CAAC","sourcesContent":["import { platformAdapters } from \"#adapters\";\n\nimport { defineCapability } from \"../capability.js\";\nimport type { AuthBrowser } from \"./interface.js\";\n\nexport type { AuthBrowser } from \"./interface.js\";\nexport { capacitorAuthBrowser, type CapacitorAuthBrowserModule } from \"./capacitor.js\";\nexport { tauriAuthBrowser } from \"./tauri.js\";\nexport { webAuthBrowser } from \"./web.js\";\n\nexport const authBrowser = defineCapability<AuthBrowser>({\n name: \"authBrowser\",\n adapters: platformAdapters.authBrowser,\n});\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface AuthBrowser {
|
|
2
|
+
/**
|
|
3
|
+
* Opens `url`, a sign-in flow that ends by redirecting to `callbackUrl`, and resolves with
|
|
4
|
+
* the URL it ended at, or `undefined` when the user closed it first. A browser tab goes to
|
|
5
|
+
* `url` itself, so there the promise never settles: the flow returns as a new page load.
|
|
6
|
+
*/
|
|
7
|
+
open(url: string, callbackUrl: string): Promise<string | undefined>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../src/auth-browser/interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CACrE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/auth-browser/interface.ts"],"names":[],"mappings":"","sourcesContent":["export interface AuthBrowser {\n /**\n * Opens `url`, a sign-in flow that ends by redirecting to `callbackUrl`, and resolves with\n * the URL it ended at, or `undefined` when the user closed it first. A browser tab goes to\n * `url` itself, so there the promise never settles: the flow returns as a new page load.\n */\n open(url: string, callbackUrl: string): Promise<string | undefined>;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheme.d.ts","sourceRoot":"","sources":["../../src/auth-browser/scheme.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEpD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheme.js","sourceRoot":"","sources":["../../src/auth-browser/scheme.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,QAAQ,CAAC,WAAmB;IAC1C,OAAO,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC","sourcesContent":["export function schemeOf(callbackUrl: string): string {\n return new URL(callbackUrl).protocol.slice(0, -1);\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CapabilityAdapter } from "../capability.js";
|
|
2
|
+
import type { TauriInvoke } from "../device-key/tauri.js";
|
|
3
|
+
import type { AuthBrowser } from "./interface.js";
|
|
4
|
+
/** The generated `parlor_auth_browser_open` command, probed with a URL it refuses: ASWebAuthenticationSession on macOS. */
|
|
5
|
+
export declare function tauriAuthBrowser(load?: () => Promise<TauriInvoke>): CapabilityAdapter<AuthBrowser>;
|
|
6
|
+
//# sourceMappingURL=tauri.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tauri.d.ts","sourceRoot":"","sources":["../../src/auth-browser/tauri.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAKlD,2HAA2H;AAC3H,wBAAgB,gBAAgB,CAC9B,IAAI,GAAE,MAAM,OAAO,CAAC,WAAW,CAAwC,GACtE,iBAAiB,CAAC,WAAW,CAAC,CAehC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { hasNativeCommand } from "../device-key/native.js";
|
|
2
|
+
import { schemeOf } from "./scheme.js";
|
|
3
|
+
const COMMAND = "parlor_auth_browser_open";
|
|
4
|
+
/** The generated `parlor_auth_browser_open` command, probed with a URL it refuses: ASWebAuthenticationSession on macOS. */
|
|
5
|
+
export function tauriAuthBrowser(load = () => import("@tauri-apps/api/core")) {
|
|
6
|
+
return {
|
|
7
|
+
platform: "tauri",
|
|
8
|
+
available: () => hasNativeCommand(load, COMMAND, { url: "", callbackScheme: "" }),
|
|
9
|
+
create: async () => {
|
|
10
|
+
const { invoke } = await load();
|
|
11
|
+
return {
|
|
12
|
+
open: async (url, callbackUrl) => (await invoke(COMMAND, {
|
|
13
|
+
url,
|
|
14
|
+
callbackScheme: schemeOf(callbackUrl),
|
|
15
|
+
})) ?? undefined,
|
|
16
|
+
};
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=tauri.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tauri.js","sourceRoot":"","sources":["../../src/auth-browser/tauri.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,OAAO,GAAG,0BAA0B,CAAC;AAE3C,2HAA2H;AAC3H,MAAM,UAAU,gBAAgB,CAC9B,IAAI,GAA+B,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC;IAEvE,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,SAAS,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC;QACjF,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;YAChC,OAAO;gBACL,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,CAC/B,CAAC,MAAM,MAAM,CAAgB,OAAO,EAAE;oBACpC,GAAG;oBACH,cAAc,EAAE,QAAQ,CAAC,WAAW,CAAC;iBACtC,CAAC,CAAC,IAAI,SAAS;aACnB,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { CapabilityAdapter } from \"../capability.js\";\nimport { hasNativeCommand } from \"../device-key/native.js\";\nimport type { TauriInvoke } from \"../device-key/tauri.js\";\nimport type { AuthBrowser } from \"./interface.js\";\nimport { schemeOf } from \"./scheme.js\";\n\nconst COMMAND = \"parlor_auth_browser_open\";\n\n/** The generated `parlor_auth_browser_open` command, probed with a URL it refuses: ASWebAuthenticationSession on macOS. */\nexport function tauriAuthBrowser(\n load: () => Promise<TauriInvoke> = () => import(\"@tauri-apps/api/core\"),\n): CapabilityAdapter<AuthBrowser> {\n return {\n platform: \"tauri\",\n available: () => hasNativeCommand(load, COMMAND, { url: \"\", callbackScheme: \"\" }),\n create: async () => {\n const { invoke } = await load();\n return {\n open: async (url, callbackUrl) =>\n (await invoke<string | null>(COMMAND, {\n url,\n callbackScheme: schemeOf(callbackUrl),\n })) ?? undefined,\n };\n },\n };\n}\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { CapabilityAdapter } from "../capability.js";
|
|
2
|
+
import type { AuthBrowser } from "./interface.js";
|
|
3
|
+
/** The page itself goes to the provider; a native shell's webview cannot, so it is web only. */
|
|
4
|
+
export declare function webAuthBrowser(location?: () => Pick<Location, "assign"> | undefined): CapabilityAdapter<AuthBrowser>;
|
|
5
|
+
//# sourceMappingURL=web.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/auth-browser/web.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,gGAAgG;AAChG,wBAAgB,cAAc,CAC5B,QAAQ,GAAE,MAAM,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,SAAqC,GAC/E,iBAAiB,CAAC,WAAW,CAAC,CAWhC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { detectPlatform } from "../runtime.js";
|
|
2
|
+
/** The page itself goes to the provider; a native shell's webview cannot, so it is web only. */
|
|
3
|
+
export function webAuthBrowser(location = () => globalThis.location) {
|
|
4
|
+
return {
|
|
5
|
+
platform: "web",
|
|
6
|
+
available: () => detectPlatform() === "web" && location() !== undefined,
|
|
7
|
+
create: () => ({
|
|
8
|
+
open: (url) => {
|
|
9
|
+
location()?.assign(url);
|
|
10
|
+
return new Promise(() => { });
|
|
11
|
+
},
|
|
12
|
+
}),
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/auth-browser/web.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAG/C,gGAAgG;AAChG,MAAM,UAAU,cAAc,CAC5B,QAAQ,GAA+C,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ;IAEhF,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,KAAK,KAAK,IAAI,QAAQ,EAAE,KAAK,SAAS;QACvE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACb,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;gBACZ,QAAQ,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;gBACxB,OAAO,IAAI,OAAO,CAAQ,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACtC,CAAC;SACF,CAAC;KACH,CAAC;AACJ,CAAC","sourcesContent":["import type { CapabilityAdapter } from \"../capability.js\";\nimport { detectPlatform } from \"../runtime.js\";\nimport type { AuthBrowser } from \"./interface.js\";\n\n/** The page itself goes to the provider; a native shell's webview cannot, so it is web only. */\nexport function webAuthBrowser(\n location: () => Pick<Location, \"assign\"> | undefined = () => globalThis.location,\n): CapabilityAdapter<AuthBrowser> {\n return {\n platform: \"web\",\n available: () => detectPlatform() === \"web\" && location() !== undefined,\n create: () => ({\n open: (url) => {\n location()?.assign(url);\n return new Promise<never>(() => {});\n },\n }),\n };\n}\n"]}
|
package/dist/capability.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability.js","sourceRoot":"","sources":["../src/capability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAiB,MAAM,cAAc,CAAC;AAiB7D,MAAM,UAAU,gBAAgB,CAC9B,UAAmC;IAEnC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,UAAU,CAAI,UAAmC,EAAE,QAAkB;IAC5E,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IAC1E,MAAM,QAAQ,GACZ,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC;IACpF,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,UAAmC,EACnC,QAAQ,GAAa,cAAc,EAAE;IAErC,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;QACvD,IAAI,MAAM,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;YAC9B,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACtF,CAAC;IACH,CAAC;IACD,OAAO;QACL,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,eAAe,UAAU,CAAC,IAAI,iCAAiC,QAAQ,EAAE;KAClF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"capability.js","sourceRoot":"","sources":["../src/capability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAiB,MAAM,cAAc,CAAC;AAiB7D,MAAM,UAAU,gBAAgB,CAC9B,UAAmC;IAEnC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,UAAU,CAAI,UAAmC,EAAE,QAAkB;IAC5E,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IAC1E,MAAM,QAAQ,GACZ,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC;IACpF,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,UAAmC,EACnC,QAAQ,GAAa,cAAc,EAAE;IAErC,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;QACvD,IAAI,MAAM,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;YAC9B,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACtF,CAAC;IACH,CAAC;IACD,OAAO;QACL,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,eAAe,UAAU,CAAC,IAAI,iCAAiC,QAAQ,EAAE;KAClF,CAAC;AACJ,CAAC","sourcesContent":["import { detectPlatform, type Platform } from \"./runtime.js\";\n\nexport interface CapabilityAdapter<T> {\n readonly platform: Platform;\n available(): boolean | Promise<boolean>;\n create(): T | Promise<T>;\n}\n\nexport interface CapabilityDefinition<T> {\n readonly name: string;\n readonly adapters: readonly CapabilityAdapter<T>[];\n}\n\nexport type CapabilityHandle<T> =\n | { readonly available: true; readonly platform: Platform; readonly api: T }\n | { readonly available: false; readonly reason: string };\n\nexport function defineCapability<T>(\n definition: CapabilityDefinition<T>,\n): CapabilityDefinition<T> {\n return definition;\n}\n\nfunction candidates<T>(definition: CapabilityDefinition<T>, platform: Platform) {\n const native = definition.adapters.filter((a) => a.platform === platform);\n const baseline =\n platform === \"web\" ? [] : definition.adapters.filter((a) => a.platform === \"web\");\n return [...native, ...baseline];\n}\n\nexport async function resolveCapability<T>(\n definition: CapabilityDefinition<T>,\n platform: Platform = detectPlatform(),\n): Promise<CapabilityHandle<T>> {\n for (const adapter of candidates(definition, platform)) {\n if (await adapter.available()) {\n return { available: true, platform: adapter.platform, api: await adapter.create() };\n }\n }\n return {\n available: false,\n reason: `Capability \"${definition.name}\" has no available adapter on ${platform}`,\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capacitor.js","sourceRoot":"","sources":["../../src/deep-link/capacitor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAa/C,MAAM,UAAU,iBAAiB,CAC/B,IAAI,GAAsC,GAAG,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC;IAExE,OAAO;QACL,QAAQ,EAAE,WAAW;QACrB,SAAS,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,KAAK,WAAW;QACjD,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;YAC7B,OAAO;gBACL,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;oBAClB,IAAI,SAAS,GAAG,KAAK,CAAC;oBACtB,KAAK,GAAG,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;wBACtC,IAAI,CAAC,SAAS,IAAI,MAAM,EAAE,GAAG;4BAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACrD,CAAC,CAAC,CAAC;oBACH,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;wBACzD,IAAI,CAAC,SAAS;4BAAE,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC/B,CAAC,CAAC,CAAC;oBACH,OAAO,GAAG,EAAE;wBACV,SAAS,GAAG,IAAI,CAAC;wBACjB,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;oBAClD,CAAC,CAAC;gBACJ,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"capacitor.js","sourceRoot":"","sources":["../../src/deep-link/capacitor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAa/C,MAAM,UAAU,iBAAiB,CAC/B,IAAI,GAAsC,GAAG,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC;IAExE,OAAO;QACL,QAAQ,EAAE,WAAW;QACrB,SAAS,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,KAAK,WAAW;QACjD,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;YAC7B,OAAO;gBACL,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;oBAClB,IAAI,SAAS,GAAG,KAAK,CAAC;oBACtB,KAAK,GAAG,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;wBACtC,IAAI,CAAC,SAAS,IAAI,MAAM,EAAE,GAAG;4BAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACrD,CAAC,CAAC,CAAC;oBACH,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;wBACzD,IAAI,CAAC,SAAS;4BAAE,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC/B,CAAC,CAAC,CAAC;oBACH,OAAO,GAAG,EAAE;wBACV,SAAS,GAAG,IAAI,CAAC;wBACjB,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;oBAClD,CAAC,CAAC;gBACJ,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { CapabilityAdapter } from \"../capability.js\";\nimport { detectPlatform } from \"../runtime.js\";\nimport type { DeepLink } from \"./interface.js\";\n\nexport interface CapacitorAppModule {\n App: {\n getLaunchUrl(): Promise<{ url: string } | undefined>;\n addListener(\n event: \"appUrlOpen\",\n handler: (event: { url: string }) => void,\n ): Promise<{ remove(): Promise<void> }>;\n };\n}\n\nexport function capacitorDeepLink(\n load: () => Promise<CapacitorAppModule> = () => import(\"@capacitor/app\"),\n): CapabilityAdapter<DeepLink> {\n return {\n platform: \"capacitor\",\n available: () => detectPlatform() === \"capacitor\",\n create: async () => {\n const { App } = await load();\n return {\n onOpen: (handler) => {\n let cancelled = false;\n void App.getLaunchUrl().then((launch) => {\n if (!cancelled && launch?.url) handler(launch.url);\n });\n const listener = App.addListener(\"appUrlOpen\", ({ url }) => {\n if (!cancelled) handler(url);\n });\n return () => {\n cancelled = true;\n void listener.then((handle) => handle.remove());\n };\n },\n };\n },\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/deep-link/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIpD,OAAO,EAAE,iBAAiB,EAA2B,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAA4B,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,CAAC,MAAM,QAAQ,GAAG,gBAAgB,CAAW;IACjD,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;CACpC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/deep-link/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIpD,OAAO,EAAE,iBAAiB,EAA2B,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAA4B,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,CAAC,MAAM,QAAQ,GAAG,gBAAgB,CAAW;IACjD,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,gBAAgB,CAAC,QAAQ;CACpC,CAAC,CAAC","sourcesContent":["import { platformAdapters } from \"#adapters\";\n\nimport { defineCapability } from \"../capability.js\";\nimport type { DeepLink } from \"./interface.js\";\n\nexport type { DeepLink, DeepLinkHandler } from \"./interface.js\";\nexport { capacitorDeepLink, type CapacitorAppModule } from \"./capacitor.js\";\nexport { tauriDeepLink, type TauriDeepLinkModule } from \"./tauri.js\";\nexport { webDeepLink } from \"./web.js\";\n\nexport const deepLink = defineCapability<DeepLink>({\n name: \"deepLink\",\n adapters: platformAdapters.deepLink,\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/deep-link/interface.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/deep-link/interface.ts"],"names":[],"mappings":"","sourcesContent":["export type DeepLinkHandler = (url: string) => void;\n\nexport interface DeepLink {\n onOpen(handler: DeepLinkHandler): () => void;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tauri.js","sourceRoot":"","sources":["../../src/deep-link/tauri.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAQ/C,MAAM,UAAU,aAAa,CAC3B,IAAI,GAAuC,GAAG,EAAE,CAAC,MAAM,CAAC,8BAA8B,CAAC;IAEvF,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,SAAS,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,KAAK,OAAO;QAC7C,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,MAAM,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;YAC5B,OAAO;gBACL,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;oBAClB,IAAI,SAAS,GAAG,KAAK,CAAC;oBACtB,MAAM,OAAO,GAAG,CAAC,IAAqB,EAAE,EAAE;wBACxC,IAAI,SAAS;4BAAE,OAAO;wBACtB,KAAK,MAAM,GAAG,IAAI,IAAI,IAAI,EAAE;4BAAE,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC7C,CAAC,CAAC;oBACF,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;oBAC3C,OAAO,GAAG,EAAE;wBACV,SAAS,GAAG,IAAI,CAAC;wBACjB,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;oBACvC,CAAC,CAAC;gBACJ,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"tauri.js","sourceRoot":"","sources":["../../src/deep-link/tauri.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAQ/C,MAAM,UAAU,aAAa,CAC3B,IAAI,GAAuC,GAAG,EAAE,CAAC,MAAM,CAAC,8BAA8B,CAAC;IAEvF,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,SAAS,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,KAAK,OAAO;QAC7C,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,MAAM,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;YAC5B,OAAO;gBACL,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;oBAClB,IAAI,SAAS,GAAG,KAAK,CAAC;oBACtB,MAAM,OAAO,GAAG,CAAC,IAAqB,EAAE,EAAE;wBACxC,IAAI,SAAS;4BAAE,OAAO;wBACtB,KAAK,MAAM,GAAG,IAAI,IAAI,IAAI,EAAE;4BAAE,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC7C,CAAC,CAAC;oBACF,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;oBAC3C,OAAO,GAAG,EAAE;wBACV,SAAS,GAAG,IAAI,CAAC;wBACjB,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;oBACvC,CAAC,CAAC;gBACJ,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { CapabilityAdapter } from \"../capability.js\";\nimport { detectPlatform } from \"../runtime.js\";\nimport type { DeepLink } from \"./interface.js\";\n\nexport interface TauriDeepLinkModule {\n getCurrent(): Promise<string[] | null>;\n onOpenUrl(handler: (urls: string[]) => void): Promise<() => void>;\n}\n\nexport function tauriDeepLink(\n load: () => Promise<TauriDeepLinkModule> = () => import(\"@tauri-apps/plugin-deep-link\"),\n): CapabilityAdapter<DeepLink> {\n return {\n platform: \"tauri\",\n available: () => detectPlatform() === \"tauri\",\n create: async () => {\n const plugin = await load();\n return {\n onOpen: (handler) => {\n let cancelled = false;\n const deliver = (urls: string[] | null) => {\n if (cancelled) return;\n for (const url of urls ?? []) handler(url);\n };\n void plugin.getCurrent().then(deliver);\n const unlisten = plugin.onOpenUrl(deliver);\n return () => {\n cancelled = true;\n void unlisten.then((stop) => stop());\n };\n },\n };\n },\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/deep-link/web.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,WAAW,CACzB,UAAU,GAA6B,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI;IAEtE,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,KAAK,SAAS;QAC3C,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACb,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;gBAClB,IAAI,SAAS,GAAG,KAAK,CAAC;gBACtB,cAAc,CAAC,GAAG,EAAE;oBAClB,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;oBACzB,IAAI,CAAC,SAAS,IAAI,GAAG;wBAAE,OAAO,CAAC,GAAG,CAAC,CAAC;gBACtC,CAAC,CAAC,CAAC;gBACH,OAAO,GAAG,EAAE;oBACV,SAAS,GAAG,IAAI,CAAC;gBACnB,CAAC,CAAC;YACJ,CAAC;SACF,CAAC;KACH,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/deep-link/web.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,WAAW,CACzB,UAAU,GAA6B,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI;IAEtE,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,KAAK,SAAS;QAC3C,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YACb,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE;gBAClB,IAAI,SAAS,GAAG,KAAK,CAAC;gBACtB,cAAc,CAAC,GAAG,EAAE;oBAClB,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;oBACzB,IAAI,CAAC,SAAS,IAAI,GAAG;wBAAE,OAAO,CAAC,GAAG,CAAC,CAAC;gBACtC,CAAC,CAAC,CAAC;gBACH,OAAO,GAAG,EAAE;oBACV,SAAS,GAAG,IAAI,CAAC;gBACnB,CAAC,CAAC;YACJ,CAAC;SACF,CAAC;KACH,CAAC;AACJ,CAAC","sourcesContent":["import type { CapabilityAdapter } from \"../capability.js\";\nimport type { DeepLink } from \"./interface.js\";\n\nexport function webDeepLink(\n currentUrl: () => string | undefined = () => globalThis.location?.href,\n): CapabilityAdapter<DeepLink> {\n return {\n platform: \"web\",\n available: () => currentUrl() !== undefined,\n create: () => ({\n onOpen: (handler) => {\n let cancelled = false;\n queueMicrotask(() => {\n const url = currentUrl();\n if (!cancelled && url) handler(url);\n });\n return () => {\n cancelled = true;\n };\n },\n }),\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capacitor.js","sourceRoot":"","sources":["../../src/device-key/capacitor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAe5D,MAAM,UAAU,kBAAkB,CAChC,IAAI,GAA4C,GAAG,EAAE,CACnD,MAAM,CAAC,8BAA8B,CAAC;IAExC,OAAO;QACL,QAAQ,EAAE,WAAW;QACrB,SAAS,EAAE,YAAY;QACvB,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,eAAe,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,eAAe,CAAC;KACpE,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"capacitor.js","sourceRoot":"","sources":["../../src/device-key/capacitor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAe5D,MAAM,UAAU,kBAAkB,CAChC,IAAI,GAA4C,GAAG,EAAE,CACnD,MAAM,CAAC,8BAA8B,CAAC;IAExC,OAAO;QACL,QAAQ,EAAE,WAAW;QACrB,SAAS,EAAE,YAAY;QACvB,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,eAAe,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,eAAe,CAAC;KACpE,CAAC;AACJ,CAAC","sourcesContent":["import type { CapabilityAdapter } from \"../capability.js\";\nimport type { DeviceKey } from \"./interface.js\";\nimport { hasIosPlugin, nativeDeviceKey } from \"./native.js\";\n\n/** The `ParlorDeviceKey` native plugin: the Secure Enclave, or a Keychain key, on iOS. */\nexport interface CapacitorDeviceKeyModule {\n ParlorDeviceKey: {\n publicKeys(options: { presence: boolean; challenge: string }): Promise<{\n signing: { keyId: string; publicKey: JsonWebKey };\n presence?: { keyId: string; publicKey: JsonWebKey };\n proof: { signature: string };\n }>;\n /** A presence key carries a biometry-or-passcode access control the hardware enforces. */\n sign(options: { keyId: string; payload: string }): Promise<{ signature: string }>;\n };\n}\n\nexport function capacitorDeviceKey(\n load: () => Promise<CapacitorDeviceKeyModule> = () =>\n import(\"@parlor/capacitor-device-key\"),\n): CapabilityAdapter<DeviceKey> {\n return {\n platform: \"capacitor\",\n available: hasIosPlugin,\n create: async () => nativeDeviceKey((await load()).ParlorDeviceKey),\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoding.js","sourceRoot":"","sources":["../../src/device-key/encoding.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"encoding.js","sourceRoot":"","sources":["../../src/device-key/encoding.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PresencePublicKey } from \"./interface.js\";\n\nexport function encodeBase64url(bytes: Uint8Array): string {\n let binary = \"\";\n for (const byte of bytes) binary += String.fromCharCode(byte);\n return btoa(binary).replaceAll(\"+\", \"-\").replaceAll(\"/\", \"_\").replaceAll(\"=\", \"\");\n}\n\nexport function decodeBase64url(text: string): Uint8Array<ArrayBuffer> {\n const padded = text.replaceAll(\"-\", \"+\").replaceAll(\"_\", \"/\");\n const binary = atob(padded.padEnd(Math.ceil(padded.length / 4) * 4, \"=\"));\n return Uint8Array.from(binary, (char) => char.charCodeAt(0));\n}\n\nfunction serialize(value: unknown): string {\n if (Array.isArray(value)) return `[${value.map(serialize).join(\",\")}]`;\n if (value !== null && typeof value === \"object\") {\n const members = Object.entries(value)\n .filter(([, member]) => member !== undefined)\n .sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0))\n .map(([key, member]) => `${JSON.stringify(key)}:${serialize(member)}`);\n return `{${members.join(\",\")}}`;\n }\n return JSON.stringify(value) ?? \"null\";\n}\n\n/** Sorted-key JSON at every level, UTF-8: the same bytes on every device and host. */\nexport function canonicalBytes(value: unknown): Uint8Array {\n return new TextEncoder().encode(serialize(value));\n}\n\nexport function publicPoint(key: JsonWebKey): JsonWebKey {\n return { kty: key.kty!, crv: key.crv!, x: key.x!, y: key.y! };\n}\n\nexport function enrollmentBytes(input: {\n readonly challenge: Uint8Array;\n readonly signing: JsonWebKey;\n readonly presence: PresencePublicKey | undefined;\n}): Uint8Array {\n const { presence } = input;\n return canonicalBytes({\n challenge: encodeBase64url(input.challenge),\n signing: publicPoint(input.signing),\n presence: presence\n ? {\n format: presence.format,\n id: presence.format === \"webauthn\" ? presence.credentialId : presence.keyId,\n publicKey: publicPoint(presence.publicKey),\n }\n : null,\n });\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/device-key/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,EAAE,kBAAkB,EAAiC,MAAM,gBAAgB,CAAC;AAEnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AASxD,OAAO,EAAE,cAAc,EAAoB,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAyB,MAAM,UAAU,CAAC;AAE/D,MAAM,CAAC,MAAM,SAAS,GAAG,gBAAgB,CAAY;IACnD,IAAI,EAAE,WAAW;IACjB,QAAQ,EAAE,gBAAgB,CAAC,SAAS;CACrC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/device-key/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,EAAE,kBAAkB,EAAiC,MAAM,gBAAgB,CAAC;AAEnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AASxD,OAAO,EAAE,cAAc,EAAoB,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAyB,MAAM,UAAU,CAAC;AAE/D,MAAM,CAAC,MAAM,SAAS,GAAG,gBAAgB,CAAY;IACnD,IAAI,EAAE,WAAW;IACjB,QAAQ,EAAE,gBAAgB,CAAC,SAAS;CACrC,CAAC,CAAC","sourcesContent":["import { platformAdapters } from \"#adapters\";\n\nimport { defineCapability } from \"../capability.js\";\nimport type { DeviceKey } from \"./interface.js\";\n\nexport { capacitorDeviceKey, type CapacitorDeviceKeyModule } from \"./capacitor.js\";\n\nexport { PresenceSetupCancelled } from \"./interface.js\";\nexport type {\n DeviceKey,\n DevicePublicKeys,\n DeviceSignature,\n PresenceEnrollment,\n PresencePublicKey,\n PresenceSignature,\n} from \"./interface.js\";\nexport { tauriDeviceKey, type TauriInvoke } from \"./tauri.js\";\nexport { webDeviceKey, type WebDeviceKeyApis } from \"./web.js\";\n\nexport const deviceKey = defineCapability<DeviceKey>({\n name: \"deviceKey\",\n adapters: platformAdapters.deviceKey,\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/device-key/interface.ts"],"names":[],"mappings":"AA8BA,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC7B,IAAI,GAAG,wBAAwB,CAAC;IAClD;QACE,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACxC,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/device-key/interface.ts"],"names":[],"mappings":"AA8BA,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC7B,IAAI,GAAG,wBAAwB,CAAC;IAClD;QACE,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACxC,CAAC;CACF","sourcesContent":["/**\n * A device's signing identity; its private keys never leave the platform keystore. The\n * signing key signs prompts with no user present. The presence key signs answers to an\n * agent's own permission prompts and always needs Touch ID, Face ID or a passkey.\n */\nexport interface DeviceKey {\n /**\n * Creates the keys on first use; stable afterwards. `presence: false` settles this device\n * without a presence key. Throws `PresenceSetupCancelled`, keeping nothing, when the user\n * dismisses the platform's prompt, so a later call can ask again.\n */\n publicKeys(\n enrollment: PresenceEnrollment,\n options?: { readonly presence?: boolean },\n ): Promise<DevicePublicKeys>;\n /**\n * `needed` while the next `publicKeys` would show a platform prompt (a passkey on the web),\n * so the app can explain it first. Absent where creating the keys never prompts.\n */\n presenceSetup?(): Promise<\"needed\" | \"done\">;\n sign(\n payload: Uint8Array,\n options: { readonly presence: false },\n ): Promise<DeviceSignature>;\n sign(\n payload: Uint8Array,\n options: { readonly presence: true },\n ): Promise<PresenceSignature>;\n}\n\nexport class PresenceSetupCancelled extends Error {\n override readonly name = \"PresenceSetupCancelled\";\n constructor() {\n super(\"The passkey was not created.\");\n }\n}\n\nexport interface PresenceEnrollment {\n readonly rpId: string;\n readonly userId: string;\n readonly userName: string;\n /** Server-issued, single use; the proof of possession signs it. */\n readonly challenge: Uint8Array;\n}\n\nexport interface DevicePublicKeys {\n readonly signing: { readonly keyId: string; readonly publicKey: JsonWebKey };\n /** Absent where the platform has no presence authenticator. */\n readonly presence?: PresencePublicKey | undefined;\n readonly proof: DeviceSignature;\n}\n\nexport type PresencePublicKey =\n | {\n readonly format: \"webauthn\";\n readonly credentialId: string;\n readonly publicKey: JsonWebKey;\n /** The attestation object, verified by the server once at enrollment. */\n readonly attestation: string;\n }\n | {\n readonly format: \"es256-raw\";\n readonly keyId: string;\n readonly publicKey: JsonWebKey;\n };\n\nexport interface DeviceSignature {\n readonly keyId: string;\n readonly presence: \"none\" | \"user\";\n readonly format: \"es256-raw\" | \"webauthn\";\n /** base64url */\n readonly signature: string;\n readonly authenticatorData?: string | undefined;\n readonly clientDataJSON?: string | undefined;\n}\n\ndeclare const presenceBrand: unique symbol;\n\n/** Only `sign(..., { presence: true })` produces one, so an ordinary signature never passes for it. */\nexport type PresenceSignature = DeviceSignature & {\n readonly presence: \"user\";\n readonly [presenceBrand]: true;\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native.js","sourceRoot":"","sources":["../../src/device-key/native.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"native.js","sourceRoot":"","sources":["../../src/device-key/native.ts"],"names":[],"mappings":"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","sourcesContent":["import { detectPlatform } from \"../runtime.js\";\nimport { encodeBase64url } from \"./encoding.js\";\nimport type {\n DeviceKey,\n DevicePublicKeys,\n DeviceSignature,\n PresenceSignature,\n} from \"./interface.js\";\n\nexport interface NativePublicKeys {\n readonly signing: { readonly keyId: string; readonly publicKey: JsonWebKey };\n readonly presence?: { readonly keyId: string; readonly publicKey: JsonWebKey };\n readonly proof: { readonly signature: string };\n}\n\nexport interface NativeKeystore {\n publicKeys(options: {\n readonly presence: boolean;\n readonly challenge: string;\n }): Promise<NativePublicKeys>;\n sign(options: {\n readonly keyId: string;\n readonly payload: string;\n }): Promise<{ readonly signature: string }>;\n}\n\nexport function nativeDeviceKey(keystore: NativeKeystore): DeviceKey {\n let known: Promise<NativePublicKeys> | undefined;\n const keysOf = () => (known ??= keystore.publicKeys({ presence: true, challenge: \"\" }));\n\n const signature = async (\n keyId: string,\n presence: \"none\" | \"user\",\n payload: Uint8Array,\n ): Promise<DeviceSignature> => ({\n keyId,\n presence,\n format: \"es256-raw\",\n signature: (await keystore.sign({ keyId, payload: encodeBase64url(payload) }))\n .signature,\n });\n\n async function sign(\n payload: Uint8Array,\n options: { readonly presence: false },\n ): Promise<DeviceSignature>;\n async function sign(\n payload: Uint8Array,\n options: { readonly presence: true },\n ): Promise<PresenceSignature>;\n async function sign(payload: Uint8Array, options: { readonly presence: boolean }) {\n const keys = await keysOf();\n if (!options.presence) return signature(keys.signing.keyId, \"none\", payload);\n if (!keys.presence) throw new Error(\"This device has no presence key.\");\n return (await signature(keys.presence.keyId, \"user\", payload)) as PresenceSignature;\n }\n\n return {\n async publicKeys(enrollment): Promise<DevicePublicKeys> {\n const pending = keystore.publicKeys({\n presence: true,\n challenge: encodeBase64url(enrollment.challenge),\n });\n known = pending;\n const keys = await pending;\n return {\n signing: keys.signing,\n presence: keys.presence && {\n format: \"es256-raw\",\n keyId: keys.presence.keyId,\n publicKey: keys.presence.publicKey,\n },\n proof: {\n keyId: keys.signing.keyId,\n presence: \"none\",\n format: \"es256-raw\",\n signature: keys.proof.signature,\n },\n };\n },\n sign,\n };\n}\n\ninterface Invoker {\n invoke<T>(command: string, args?: Record<string, unknown>): Promise<T>;\n}\n\nconst UNAVAILABLE = /not found|unsupported/i;\n\n/**\n * Whether the shell carries a working native command: one an older generated project lacks\n * (\"not found\") or a platform without a keystore refuses (\"unsupported\") is unavailable.\n */\nexport async function hasNativeCommand(\n load: () => Promise<Invoker>,\n command: string,\n args?: Record<string, unknown>,\n): Promise<boolean> {\n if (detectPlatform() !== \"tauri\") return false;\n try {\n await (await load()).invoke(command, args);\n return true;\n } catch (error) {\n return !UNAVAILABLE.test(error instanceof Error ? error.message : String(error));\n }\n}\n\nexport function hasIosPlugin(): boolean {\n const { Capacitor } = globalThis as { Capacitor?: { getPlatform?: () => string } };\n return detectPlatform() === \"capacitor\" && Capacitor?.getPlatform?.() === \"ios\";\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tauri.js","sourceRoot":"","sources":["../../src/device-key/tauri.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAyB,MAAM,aAAa,CAAC;AAMvF,8IAA8I;AAC9I,MAAM,UAAU,cAAc,CAC5B,IAAI,GAA+B,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC;IAEvE,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,SAAS,EAAE,GAAG,EAAE,CACd,gBAAgB,CAAC,IAAI,EAAE,wBAAwB,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC9E,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;YAChC,OAAO,eAAe,CAAC;gBACrB,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CACtB,MAAM,CAAmB,0BAA0B,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC;gBACtE,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAChB,MAAM,CAAwB,wBAAwB,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC;aAC1E,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"tauri.js","sourceRoot":"","sources":["../../src/device-key/tauri.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAyB,MAAM,aAAa,CAAC;AAMvF,8IAA8I;AAC9I,MAAM,UAAU,cAAc,CAC5B,IAAI,GAA+B,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC;IAEvE,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,SAAS,EAAE,GAAG,EAAE,CACd,gBAAgB,CAAC,IAAI,EAAE,wBAAwB,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC9E,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;YAChC,OAAO,eAAe,CAAC;gBACrB,UAAU,EAAE,CAAC,OAAO,EAAE,EAAE,CACtB,MAAM,CAAmB,0BAA0B,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC;gBACtE,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAChB,MAAM,CAAwB,wBAAwB,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC;aAC1E,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { CapabilityAdapter } from \"../capability.js\";\nimport type { DeviceKey } from \"./interface.js\";\nimport { hasNativeCommand, nativeDeviceKey, type NativePublicKeys } from \"./native.js\";\n\nexport interface TauriInvoke {\n invoke<T>(command: string, args?: Record<string, unknown>): Promise<T>;\n}\n\n/** The generated `parlor_device_key_public` and `parlor_device_key_sign` commands, probed with a sign request for a key that cannot exist. */\nexport function tauriDeviceKey(\n load: () => Promise<TauriInvoke> = () => import(\"@tauri-apps/api/core\"),\n): CapabilityAdapter<DeviceKey> {\n return {\n platform: \"tauri\",\n available: () =>\n hasNativeCommand(load, \"parlor_device_key_sign\", { keyId: \"\", payload: \"\" }),\n create: async () => {\n const { invoke } = await load();\n return nativeDeviceKey({\n publicKeys: (options) =>\n invoke<NativePublicKeys>(\"parlor_device_key_public\", { ...options }),\n sign: (options) =>\n invoke<{ signature: string }>(\"parlor_device_key_sign\", { ...options }),\n });\n },\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/device-key/web.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/device-key/web.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,eAAe,EACf,eAAe,EACf,WAAW,GACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAML,sBAAsB,GAEvB,MAAM,gBAAgB,CAAC;AAUxB,MAAM,wBAAwB,GAAG,KAAK,IAAsB,EAAE;IAC5D,IAAI,CAAC;QACH,OAAO,CACL,CAAC,MAAM,UAAU,CAAC,mBAAmB,EAAE,6CAA6C,EAAE,EAAE,CAAC;YACzF,KAAK,CACN,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,QAAQ,CAAC;AAC1B,MAAM,KAAK,GAAG,eAAe,CAAC;AAC9B,MAAM,OAAO,GAAG,SAAS,CAAC;AAC1B,MAAM,QAAQ,GAAG,UAAU,CAAC;AAC5B,MAAM,mBAAmB,GAAG,MAAM,CAAC;AACnC,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC;AACtB,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAW,CAAC;AAC7D,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAW,CAAC;AAgB1D,SAAS,OAAO,CAAI,OAAsB;IACxC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,OAAO,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAClD,OAAO,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CAAC,OAAmB;IACvC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC5D,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC1C,OAAO,CAAC,eAAe,GAAG,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC7E,OAAO,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAClD,OAAO,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IACH,OAAO;QACL,KAAK,CAAC,IAAI,CAAI,GAAW;YACvB,MAAM,EAAE,GAAG,CAAC,MAAM,QAAQ,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YAC3D,OAAO,CAAC,MAAM,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAkB,CAAC;QAC1E,CAAC;QACD,KAAK,CAAC,SAAS,CAAI,GAAW,EAAE,KAAQ;YACtC,MAAM,EAAE,GAAG,CAAC,MAAM,QAAQ,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YAC5D,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM,QAAQ,GAAG,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAkB,CAAC;YAClE,IAAI,QAAQ,KAAK,SAAS;gBAAE,OAAO,QAAQ,CAAC;YAC5C,MAAM,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YACrC,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,qBAAqB,GAAG,CAC5B,UAA6B,EACM,EAAE,CAAC,UAAU,EAAE,IAAI,KAAK,YAAY,CAAC;AAE1E,MAAM,aAAa,GAAG,CACpB,QAA+B,EACe,EAAE,CAAC,mBAAmB,IAAI,QAAQ,CAAC;AAEnF,MAAM,WAAW,GAAG,CAClB,QAA+B,EACa,EAAE,CAAC,WAAW,IAAI,QAAQ,CAAC;AAEzE,MAAM,WAAW,GAAmB,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAE1D,SAAS,kBAAkB,CACzB,MAAoB,EACpB,OAAmB,EACnB,WAA6C,EAC7C,qBAA6C;IAE7C,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAEpC,MAAM,UAAU,GAAG,KAAK,EAAE,GAAe,EAAE,EAAE;QAC3C,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAChC,SAAS,EACT,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAC7D,CAAC;QACF,OAAO,eAAe,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE;QACjC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAgB,OAAO,CAAC,CAAC;QACxD,MAAM,IAAI,GACR,MAAM;YACN,CAAC,MAAM,KAAK,CAAC,SAAS,CACpB,OAAO,EACP,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAC1D,CAAC,CAAC;QACL,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAC7E,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;IACxF,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,KAAK,EAAE,OAAmB,EAA4B,EAAE;QACtE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,MAAM,eAAe,EAAE,CAAC;QACtD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QAChF,OAAO;YACL,KAAK;YACL,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAE,WAAW;YACnB,SAAS,EAAE,eAAe,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;SACtD,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,KAAK,EAC1B,SAA+B,EAC/B,UAA8B,EACL,EAAE;QAC3B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC;gBACxC,SAAS,EAAE;oBACT,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE;oBAClD,IAAI,EAAE;wBACJ,EAAE,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;wBAC/C,IAAI,EAAE,UAAU,CAAC,QAAQ;wBACzB,WAAW,EAAE,UAAU,CAAC,QAAQ;qBACjC;oBACD,SAAS,EAAE,IAAI,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC;oBAC/C,gBAAgB,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;oBAC3D,sBAAsB,EAAE;wBACtB,uBAAuB,EAAE,UAAU;wBACnC,WAAW,EAAE,WAAW;wBACxB,gBAAgB,EAAE,UAAU;qBAC7B;oBACD,WAAW,EAAE,MAAM;oBACnB,OAAO,EAAE,mBAAmB;iBAC7B;aACF,CAAC,CAAC;YACH,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9E,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YAC/B,CAAC;YACD,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;YAChD,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YAChD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;YACzE,OAAO;gBACL,YAAY,EAAE,eAAe,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBAC/D,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,SAAS,EAAE,WAAW,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAC1D,WAAW,EAAE,eAAe,CAC1B,IAAI,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CACtD;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;gBAC/D,MAAM,IAAI,sBAAsB,EAAE,CAAC;YACrC,CAAC;YACD,OAAO,WAAW,CAAC;QACrB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,KAAK,IAAI,EAAE,CACnC,WAAW,KAAK,SAAS,IAAI,CAAC,MAAM,qBAAqB,EAAE,CAAC,CAAC;IAE/D,MAAM,UAAU,GAAG,KAAK,EACtB,UAA8B,EAC9B,MAAe,EACyB,EAAE;QAC1C,MAAM,MAAM,GACV,CAAC,MAAM,KAAK,CAAC,IAAI,CAAiB,QAAQ,CAAC,CAAC;YAC5C,CAAC,MAAM,KAAK,CAAC,SAAS,CACpB,QAAQ,EACR,WAAW,IAAI,MAAM,IAAI,CAAC,MAAM,iBAAiB,EAAE,CAAC;gBAClD,CAAC,CAAC,MAAM,cAAc,CAAC,WAAW,EAAE,UAAU,CAAC;gBAC/C,CAAC,CAAC,WAAW,CAChB,CAAC,CAAC;QACL,IAAI,aAAa,IAAI,MAAM;YAAE,OAAO,SAAS,CAAC;QAC9C,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,KAAK,EAAE,OAAmB,EAA8B,EAAE;QAC7E,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAiB,QAAQ,CAAC,CAAC;QAC1D,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,IAAI,aAAa,IAAI,MAAM,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,UAAU,CAC9B,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CACxD,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC;YACtC,SAAS,EAAE;gBACT,SAAS;gBACT,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,gBAAgB,EAAE;oBAChB,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;iBACjE;gBACD,gBAAgB,EAAE,UAAU;gBAC5B,OAAO,EAAE,mBAAmB;aAC7B;SACF,CAAC,CAAC;QACH,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1E,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC;QAC5E,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,YAAY;YAC1B,QAAQ,EAAE,MAAM;YAChB,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,eAAe,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;YACrD,iBAAiB,EAAE,eAAe,CAAC,IAAI,UAAU,CAAC,iBAAiB,CAAC,CAAC;YACrE,cAAc,EAAE,eAAe,CAAC,IAAI,UAAU,CAAC,cAAc,CAAC,CAAC;SAC3C,CAAC;IACzB,CAAC,CAAC;IAUF,KAAK,UAAU,IAAI,CAAC,OAAmB,EAAE,OAAuC;QAC9E,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACrE,CAAC;IAED,OAAO;QACL,KAAK,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO;YAClC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,eAAe,EAAE,CAAC;YACrD,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC,CAAC;YACzE,OAAO;gBACL,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;gBAC7B,QAAQ;gBACR,KAAK,EAAE,MAAM,OAAO,CAClB,eAAe,CAAC;oBACd,SAAS,EAAE,UAAU,CAAC,SAAS;oBAC/B,OAAO,EAAE,SAAS;oBAClB,QAAQ;iBACT,CAAC,CACH;aACF,CAAC;QACJ,CAAC;QACD,IAAI;QACJ,KAAK,CAAC,aAAa;YACjB,IAAI,MAAM,KAAK,CAAC,IAAI,CAAiB,QAAQ,CAAC;gBAAE,OAAO,MAAM,CAAC;YAC9D,OAAO,CAAC,MAAM,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QACzD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,IAAI,GAA2B,GAAG,EAAE,CAAC,CAAC;IACpC,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,MAAM;IACjC,SAAS,EAAE,UAAU,CAAC,SAAS;IAC/B,WAAW,EAAE,UAAU,CAAC,SAAS,EAAE,WAAW;IAC9C,qBAAqB,EAAE,wBAAwB;CAChD,CAAC;IAEF,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,GAAG,EAAE;YACd,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,CAAC;YACrC,OAAO,MAAM,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,CAAC;QACzD,CAAC;QACD,MAAM,EAAE,GAAG,EAAE;YACX,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,qBAAqB,EAAE,GAAG,IAAI,EAAE,CAAC;YACzE,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAC5D,CAAC;YACD,OAAO,kBAAkB,CACvB,MAAM,EACN,SAAS,EACT,WAAW,EACX,qBAAqB,IAAI,wBAAwB,CAClD,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { CapabilityAdapter } from \"../capability.js\";\nimport {\n decodeBase64url,\n encodeBase64url,\n enrollmentBytes,\n publicPoint,\n} from \"./encoding.js\";\nimport {\n type DeviceKey,\n type DevicePublicKeys,\n type DeviceSignature,\n type PresenceEnrollment,\n type PresencePublicKey,\n PresenceSetupCancelled,\n type PresenceSignature,\n} from \"./interface.js\";\n\nexport interface WebDeviceKeyApis {\n readonly subtle: SubtleCrypto | undefined;\n readonly indexedDB: IDBFactory | undefined;\n readonly credentials: CredentialsContainer | undefined;\n /** Whether a platform authenticator (Touch ID, Windows Hello) can make the passkey. */\n readonly platformAuthenticator?: (() => Promise<boolean>) | undefined;\n}\n\nconst hasPlatformAuthenticator = async (): Promise<boolean> => {\n try {\n return (\n (await globalThis.PublicKeyCredential?.isUserVerifyingPlatformAuthenticatorAvailable?.()) ??\n false\n );\n } catch {\n return false;\n }\n};\n\nconst DATABASE = \"parlor\";\nconst STORE = \"parlor-device\";\nconst SIGNING = \"signing\";\nconst PRESENCE = \"presence\";\nconst CEREMONY_TIMEOUT_MS = 60_000;\nconst COSE_ES256 = -7;\nconst P256 = { name: \"ECDSA\", namedCurve: \"P-256\" } as const;\nconst ES256 = { name: \"ECDSA\", hash: \"SHA-256\" } as const;\n\ntype StoredPresence =\n | {\n readonly credentialId: string;\n readonly rpId: string;\n readonly publicKey: JsonWebKey;\n readonly attestation: string;\n }\n | { readonly unavailable: true };\n\ninterface KeyStore {\n read<T>(key: string): Promise<T | undefined>;\n keepFirst<T>(key: string, value: T): Promise<T>;\n}\n\nfunction settled<T>(request: IDBRequest<T>): Promise<T> {\n return new Promise((resolve, reject) => {\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n });\n}\n\nfunction openKeyStore(factory: IDBFactory): KeyStore {\n const database = new Promise<IDBDatabase>((resolve, reject) => {\n const request = factory.open(DATABASE, 1);\n request.onupgradeneeded = () => void request.result.createObjectStore(STORE);\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n });\n return {\n async read<T>(key: string) {\n const tx = (await database).transaction(STORE, \"readonly\");\n return (await settled(tx.objectStore(STORE).get(key))) as T | undefined;\n },\n async keepFirst<T>(key: string, value: T) {\n const tx = (await database).transaction(STORE, \"readwrite\");\n const store = tx.objectStore(STORE);\n const existing = (await settled(store.get(key))) as T | undefined;\n if (existing !== undefined) return existing;\n await settled(store.put(value, key));\n return value;\n },\n };\n}\n\nconst isPublicKeyCredential = (\n credential: Credential | null,\n): credential is PublicKeyCredential => credential?.type === \"public-key\";\n\nconst isAttestation = (\n response: AuthenticatorResponse,\n): response is AuthenticatorAttestationResponse => \"attestationObject\" in response;\n\nconst isAssertion = (\n response: AuthenticatorResponse,\n): response is AuthenticatorAssertionResponse => \"signature\" in response;\n\nconst NO_PRESENCE: StoredPresence = { unavailable: true };\n\nfunction createWebDeviceKey(\n subtle: SubtleCrypto,\n factory: IDBFactory,\n credentials: CredentialsContainer | undefined,\n platformAuthenticator: () => Promise<boolean>,\n): DeviceKey {\n const store = openKeyStore(factory);\n\n const thumbprint = async (key: JsonWebKey) => {\n const { crv, kty, x, y } = key;\n const digest = await subtle.digest(\n \"SHA-256\",\n new TextEncoder().encode(JSON.stringify({ crv, kty, x, y })),\n );\n return encodeBase64url(new Uint8Array(digest));\n };\n\n const signingIdentity = async () => {\n const stored = await store.read<CryptoKeyPair>(SIGNING);\n const pair =\n stored ??\n (await store.keepFirst<CryptoKeyPair>(\n SIGNING,\n await subtle.generateKey(P256, false, [\"sign\", \"verify\"]),\n ));\n const publicKey = publicPoint(await subtle.exportKey(\"jwk\", pair.publicKey));\n return { privateKey: pair.privateKey, publicKey, keyId: await thumbprint(publicKey) };\n };\n\n const signRaw = async (payload: Uint8Array): Promise<DeviceSignature> => {\n const { privateKey, keyId } = await signingIdentity();\n const signature = await subtle.sign(ES256, privateKey, new Uint8Array(payload));\n return {\n keyId,\n presence: \"none\",\n format: \"es256-raw\",\n signature: encodeBase64url(new Uint8Array(signature)),\n };\n };\n\n const createPresence = async (\n container: CredentialsContainer,\n enrollment: PresenceEnrollment,\n ): Promise<StoredPresence> => {\n try {\n const credential = await container.create({\n publicKey: {\n rp: { id: enrollment.rpId, name: enrollment.rpId },\n user: {\n id: new TextEncoder().encode(enrollment.userId),\n name: enrollment.userName,\n displayName: enrollment.userName,\n },\n challenge: new Uint8Array(enrollment.challenge),\n pubKeyCredParams: [{ type: \"public-key\", alg: COSE_ES256 }],\n authenticatorSelection: {\n authenticatorAttachment: \"platform\",\n residentKey: \"preferred\",\n userVerification: \"required\",\n },\n attestation: \"none\",\n timeout: CEREMONY_TIMEOUT_MS,\n },\n });\n if (!isPublicKeyCredential(credential) || !isAttestation(credential.response)) {\n return { unavailable: true };\n }\n const spki = credential.response.getPublicKey();\n if (spki === null) return { unavailable: true };\n const key = await subtle.importKey(\"spki\", spki, P256, true, [\"verify\"]);\n return {\n credentialId: encodeBase64url(new Uint8Array(credential.rawId)),\n rpId: enrollment.rpId,\n publicKey: publicPoint(await subtle.exportKey(\"jwk\", key)),\n attestation: encodeBase64url(\n new Uint8Array(credential.response.attestationObject),\n ),\n };\n } catch (error) {\n if (error instanceof Error && error.name === \"NotAllowedError\") {\n throw new PresenceSetupCancelled();\n }\n return NO_PRESENCE;\n }\n };\n\n const canCreatePresence = async () =>\n credentials !== undefined && (await platformAuthenticator());\n\n const presenceOf = async (\n enrollment: PresenceEnrollment,\n wanted: boolean,\n ): Promise<PresencePublicKey | undefined> => {\n const stored =\n (await store.read<StoredPresence>(PRESENCE)) ??\n (await store.keepFirst(\n PRESENCE,\n credentials && wanted && (await canCreatePresence())\n ? await createPresence(credentials, enrollment)\n : NO_PRESENCE,\n ));\n if (\"unavailable\" in stored) return undefined;\n return {\n format: \"webauthn\",\n credentialId: stored.credentialId,\n publicKey: stored.publicKey,\n attestation: stored.attestation,\n };\n };\n\n const signPresence = async (payload: Uint8Array): Promise<PresenceSignature> => {\n const stored = await store.read<StoredPresence>(PRESENCE);\n if (!credentials || !stored || \"unavailable\" in stored) {\n throw new Error(\"This device has no presence key.\");\n }\n const challenge = new Uint8Array(\n await subtle.digest(\"SHA-256\", new Uint8Array(payload)),\n );\n const assertion = await credentials.get({\n publicKey: {\n challenge,\n rpId: stored.rpId,\n allowCredentials: [\n { type: \"public-key\", id: decodeBase64url(stored.credentialId) },\n ],\n userVerification: \"required\",\n timeout: CEREMONY_TIMEOUT_MS,\n },\n });\n if (!isPublicKeyCredential(assertion) || !isAssertion(assertion.response)) {\n throw new Error(\"The presence check did not complete.\");\n }\n const { authenticatorData, clientDataJSON, signature } = assertion.response;\n return {\n keyId: stored.credentialId,\n presence: \"user\",\n format: \"webauthn\",\n signature: encodeBase64url(new Uint8Array(signature)),\n authenticatorData: encodeBase64url(new Uint8Array(authenticatorData)),\n clientDataJSON: encodeBase64url(new Uint8Array(clientDataJSON)),\n } as PresenceSignature;\n };\n\n async function sign(\n payload: Uint8Array,\n options: { readonly presence: false },\n ): Promise<DeviceSignature>;\n async function sign(\n payload: Uint8Array,\n options: { readonly presence: true },\n ): Promise<PresenceSignature>;\n async function sign(payload: Uint8Array, options: { readonly presence: boolean }) {\n return options.presence ? signPresence(payload) : signRaw(payload);\n }\n\n return {\n async publicKeys(enrollment, options): Promise<DevicePublicKeys> {\n const { publicKey, keyId } = await signingIdentity();\n const presence = await presenceOf(enrollment, options?.presence ?? true);\n return {\n signing: { keyId, publicKey },\n presence,\n proof: await signRaw(\n enrollmentBytes({\n challenge: enrollment.challenge,\n signing: publicKey,\n presence,\n }),\n ),\n };\n },\n sign,\n async presenceSetup() {\n if (await store.read<StoredPresence>(PRESENCE)) return \"done\";\n return (await canCreatePresence()) ? \"needed\" : \"done\";\n },\n };\n}\n\nexport function webDeviceKey(\n apis: () => WebDeviceKeyApis = () => ({\n subtle: globalThis.crypto?.subtle,\n indexedDB: globalThis.indexedDB,\n credentials: globalThis.navigator?.credentials,\n platformAuthenticator: hasPlatformAuthenticator,\n }),\n): CapabilityAdapter<DeviceKey> {\n return {\n platform: \"web\",\n available: () => {\n const { subtle, indexedDB } = apis();\n return subtle !== undefined && indexedDB !== undefined;\n },\n create: () => {\n const { subtle, indexedDB, credentials, platformAuthenticator } = apis();\n if (!subtle || !indexedDB) {\n throw new Error(\"This browser cannot keep a device key.\");\n }\n return createWebDeviceKey(\n subtle,\n indexedDB,\n credentials,\n platformAuthenticator ?? hasPlatformAuthenticator,\n );\n },\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capacitor.js","sourceRoot":"","sources":["../../src/files/capacitor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAOzC,MAAM,eAAe,GAAG,KAAK,IAAmC,EAAE;IAChE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACxE,OAAO;QACL,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAC3B,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KACpF,CAAC;AACJ,CAAC,CAAC;AAMF,SAAS,QAAQ,CAAC,KAAiB;IACjC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,MAAM,EAAE,CAAC;QACjD,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC;AAED,0FAA0F;AAC1F,MAAM,YAAY,GAAG,CAAC,KAAc,EAAE,EAAE,CACtC,KAAK,YAAY,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAE1D,gGAAgG;AAChG,MAAM,UAAU,cAAc,CAC5B,SAAS,GAAwC,eAAe,EAChE,SAAS,GAAwC,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,EACjF,WAAW,GAA+B,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ;IAEnE,OAAO;QACL,QAAQ,EAAE,WAAW;QACrB,SAAS,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,KAAK,WAAW,IAAI,WAAW,EAAE,KAAK,SAAS;QAChF,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACxD,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;YACzE,OAAO;gBACL,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC;gBACnD,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;oBAC5B,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,KAAK,CAAC,YAAY,CACtC,eAAe,OAAO,CAAC,IAAI,EAAE,EAC7B,QAAQ,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAC9B,CAAC;oBACF,IAAI,CAAC;wBACH,MAAM,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBACzD,OAAO,OAAO,CAAC;oBACjB,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,IAAI,YAAY,CAAC,KAAK,CAAC;4BAAE,OAAO,WAAW,CAAC;wBAC5C,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"capacitor.js","sourceRoot":"","sources":["../../src/files/capacitor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAOzC,MAAM,eAAe,GAAG,KAAK,IAAmC,EAAE;IAChE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACxE,OAAO;QACL,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAC3B,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KACpF,CAAC;AACJ,CAAC,CAAC;AAMF,SAAS,QAAQ,CAAC,KAAiB;IACjC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,MAAM,EAAE,CAAC;QACjD,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC;AAED,0FAA0F;AAC1F,MAAM,YAAY,GAAG,CAAC,KAAc,EAAE,EAAE,CACtC,KAAK,YAAY,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAE1D,gGAAgG;AAChG,MAAM,UAAU,cAAc,CAC5B,SAAS,GAAwC,eAAe,EAChE,SAAS,GAAwC,GAAG,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,EACjF,WAAW,GAA+B,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ;IAEnE,OAAO;QACL,QAAQ,EAAE,WAAW;QACrB,SAAS,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,KAAK,WAAW,IAAI,WAAW,EAAE,KAAK,SAAS;QAChF,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACxD,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;YACzE,OAAO;gBACL,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC;gBACnD,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;oBAC5B,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,KAAK,CAAC,YAAY,CACtC,eAAe,OAAO,CAAC,IAAI,EAAE,EAC7B,QAAQ,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAC9B,CAAC;oBACF,IAAI,CAAC;wBACH,MAAM,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBACzD,OAAO,OAAO,CAAC;oBACjB,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,IAAI,YAAY,CAAC,KAAK,CAAC;4BAAE,OAAO,WAAW,CAAC;wBAC5C,MAAM,KAAK,CAAC;oBACd,CAAC;gBACH,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { CapabilityAdapter } from \"../capability.js\";\nimport { detectPlatform } from \"../runtime.js\";\nimport type { Files } from \"./interface.js\";\nimport { bytesOf } from \"./mime.js\";\nimport { pickWithInput } from \"./web.js\";\n\n/** `@capacitor/filesystem`, narrowed to writing base64 into the app's cache. */\nexport interface CapacitorCacheWriter {\n writeToCache(path: string, base64: string): Promise<{ uri: string }>;\n}\n\nconst filesystemCache = async (): Promise<CapacitorCacheWriter> => {\n const { Filesystem, Directory } = await import(\"@capacitor/filesystem\");\n return {\n writeToCache: (path, data) =>\n Filesystem.writeFile({ path, data, directory: Directory.Cache, recursive: true }),\n };\n};\n\nexport interface CapacitorShareModule {\n Share: { share(options: { title?: string; files: string[] }): Promise<unknown> };\n}\n\nfunction base64Of(bytes: Uint8Array): string {\n let binary = \"\";\n for (let at = 0; at < bytes.length; at += 0x8000) {\n binary += String.fromCharCode(...bytes.subarray(at, at + 0x8000));\n }\n return btoa(binary);\n}\n\n/** The share sheet reports a dismissal as an error whose message says it was canceled. */\nconst wasCancelled = (error: unknown) =>\n error instanceof Error && /cancel/i.test(error.message);\n\n/** Picks with the webview's own file input; saves through the share sheet (\"Save to Files\"). */\nexport function capacitorFiles(\n loadCache: () => Promise<CapacitorCacheWriter> = filesystemCache,\n loadShare: () => Promise<CapacitorShareModule> = () => import(\"@capacitor/share\"),\n getDocument: () => Document | undefined = () => globalThis.document,\n): CapabilityAdapter<Files> {\n return {\n platform: \"capacitor\",\n available: () => detectPlatform() === \"capacitor\" && getDocument() !== undefined,\n create: async () => {\n const document = getDocument();\n if (!document) throw new Error(\"Files need a document\");\n const [cache, { Share }] = await Promise.all([loadCache(), loadShare()]);\n return {\n pick: (options) => pickWithInput(document, options),\n save: async (data, options) => {\n const { uri } = await cache.writeToCache(\n `parlor-save/${options.name}`,\n base64Of(await bytesOf(data)),\n );\n try {\n await Share.share({ title: options.name, files: [uri] });\n return \"saved\";\n } catch (error) {\n if (wasCancelled(error)) return \"cancelled\";\n throw error;\n }\n },\n };\n },\n };\n}\n"]}
|
package/dist/files/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/files/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAUpD,OAAO,EACL,cAAc,GAGf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAA8C,MAAM,YAAY,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAqB,MAAM,UAAU,CAAC;AAEvD,MAAM,CAAC,MAAM,KAAK,GAAG,gBAAgB,CAAQ;IAC3C,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,gBAAgB,CAAC,KAAK;CACjC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/files/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAUpD,OAAO,EACL,cAAc,GAGf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAA8C,MAAM,YAAY,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAqB,MAAM,UAAU,CAAC;AAEvD,MAAM,CAAC,MAAM,KAAK,GAAG,gBAAgB,CAAQ;IAC3C,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,gBAAgB,CAAC,KAAK;CACjC,CAAC,CAAC","sourcesContent":["import { platformAdapters } from \"#adapters\";\n\nimport { defineCapability } from \"../capability.js\";\nimport type { Files } from \"./interface.js\";\n\nexport type {\n Files,\n PickedFile,\n PickOptions,\n SaveOptions,\n SaveOutcome,\n} from \"./interface.js\";\nexport {\n capacitorFiles,\n type CapacitorCacheWriter,\n type CapacitorShareModule,\n} from \"./capacitor.js\";\nexport { tauriFiles, type TauriDialogModule, type TauriFsModule } from \"./tauri.js\";\nexport { webFiles, type WebFilesApis } from \"./web.js\";\n\nexport const files = defineCapability<Files>({\n name: \"files\",\n adapters: platformAdapters.files,\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/files/interface.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/files/interface.ts"],"names":[],"mappings":"","sourcesContent":["export interface PickOptions {\n /** What may be chosen, as an `<input accept>` takes it: `[\"image/*\", \".pdf\"]`. */\n readonly accept?: readonly string[] | undefined;\n readonly multiple?: boolean | undefined;\n}\n\nexport interface PickedFile {\n readonly name: string;\n /** The MIME type, or `\"\"` when the platform cannot tell. */\n readonly type: string;\n readonly size: number;\n bytes(): Promise<Uint8Array>;\n text(): Promise<string>;\n}\n\nexport interface SaveOptions {\n /** The file name to suggest. */\n readonly name: string;\n readonly type?: string | undefined;\n}\n\nexport type SaveOutcome = \"saved\" | \"cancelled\";\n\nexport interface Files {\n /** Asks the user for files; an empty list when they cancel. */\n pick(options?: PickOptions): Promise<readonly PickedFile[]>;\n /**\n * Asks the user where to keep `data`: a save dialog where there is one, a download in a\n * browser without, the share sheet on a phone.\n */\n save(data: Blob | Uint8Array | string, options: SaveOptions): Promise<SaveOutcome>;\n}\n"]}
|
package/dist/files/mime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mime.js","sourceRoot":"","sources":["../../src/files/mime.ts"],"names":[],"mappings":"AAAA,MAAM,KAAK,GAAqC;IAC9C,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,WAAW;IAChB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,kBAAkB;IACxB,EAAE,EAAE,eAAe;IACnB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,iBAAiB;CACvB,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAEjF,gEAAgE;AAChE,MAAM,UAAU,MAAM,CAAC,IAAY;IACjC,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACxC,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,MAAM,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAqC;IAErC,IAAI,CAAC,MAAM,EAAE,MAAM;QAAE,OAAO,SAAS,CAAC;IACtC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QACpE,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CACtD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAC5E,CAAC;QACF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QACzC,KAAK,MAAM,CAAC,SAAS,CAAC,IAAI,KAAK;YAAE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAgC;IAC5D,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpE,IAAI,IAAI,YAAY,UAAU;QAAE,OAAO,IAAI,CAAC;IAC5C,OAAO,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAClD,CAAC"}
|
|
1
|
+
{"version":3,"file":"mime.js","sourceRoot":"","sources":["../../src/files/mime.ts"],"names":[],"mappings":"AAAA,MAAM,KAAK,GAAqC;IAC9C,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,WAAW;IAChB,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,kBAAkB;IACxB,EAAE,EAAE,eAAe;IACnB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,YAAY;IACjB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,iBAAiB;CACvB,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAEjF,gEAAgE;AAChE,MAAM,UAAU,MAAM,CAAC,IAAY;IACjC,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACxC,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,MAAM,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAqC;IAErC,IAAI,CAAC,MAAM,EAAE,MAAM;QAAE,OAAO,SAAS,CAAC;IACtC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QACpE,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CACtD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAC5E,CAAC;QACF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QACzC,KAAK,MAAM,CAAC,SAAS,CAAC,IAAI,KAAK;YAAE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAgC;IAC5D,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpE,IAAI,IAAI,YAAY,UAAU;QAAE,OAAO,IAAI,CAAC;IAC5C,OAAO,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAClD,CAAC","sourcesContent":["const TYPES: Readonly<Record<string, string>> = {\n csv: \"text/csv\",\n gif: \"image/gif\",\n heic: \"image/heic\",\n html: \"text/html\",\n jpeg: \"image/jpeg\",\n jpg: \"image/jpeg\",\n json: \"application/json\",\n md: \"text/markdown\",\n mp3: \"audio/mpeg\",\n mp4: \"video/mp4\",\n pdf: \"application/pdf\",\n png: \"image/png\",\n svg: \"image/svg+xml\",\n txt: \"text/plain\",\n webp: \"image/webp\",\n zip: \"application/zip\",\n};\n\nconst extensionOf = (name: string) => name.split(\".\").pop()?.toLowerCase() ?? \"\";\n\n/** A file's MIME type from its extension; `\"\"` when unknown. */\nexport function typeOf(name: string): string {\n return TYPES[extensionOf(name)] ?? \"\";\n}\n\n/** The last segment of a path on any platform. */\nexport function nameOf(path: string): string {\n return path.split(/[/\\\\]/).pop() ?? path;\n}\n\n/**\n * `accept` as file-dialog extensions, or undefined when some entry has no extension to\n * name, so a dialog never hides a file the app would take.\n */\nexport function extensionsOf(\n accept: readonly string[] | undefined,\n): string[] | undefined {\n if (!accept?.length) return undefined;\n const extensions = new Set<string>();\n for (const entry of accept.map((item) => item.trim().toLowerCase())) {\n if (entry.startsWith(\".\")) {\n extensions.add(entry.slice(1));\n continue;\n }\n const known = Object.entries(TYPES).filter(([, type]) =>\n entry.endsWith(\"/*\") ? type.startsWith(entry.slice(0, -1)) : type === entry,\n );\n if (known.length === 0) return undefined;\n for (const [extension] of known) extensions.add(extension);\n }\n return [...extensions];\n}\n\nexport async function bytesOf(data: Blob | Uint8Array | string): Promise<Uint8Array> {\n if (typeof data === \"string\") return new TextEncoder().encode(data);\n if (data instanceof Uint8Array) return data;\n return new Uint8Array(await data.arrayBuffer());\n}\n"]}
|
package/dist/files/tauri.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tauri.js","sourceRoot":"","sources":["../../src/files/tauri.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tauri.js","sourceRoot":"","sources":["../../src/files/tauri.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CapabilityAdapter } from \"../capability.js\";\nimport { detectPlatform } from \"../runtime.js\";\nimport type { Files, PickedFile } from \"./interface.js\";\nimport { bytesOf, extensionsOf, nameOf, typeOf } from \"./mime.js\";\n\ntype Filters = { name: string; extensions: string[] }[];\n\nexport interface TauriDialogModule {\n open(options: {\n multiple: boolean;\n directory: false;\n filters?: Filters;\n }): Promise<string | string[] | null>;\n save(options: { defaultPath: string; filters?: Filters }): Promise<string | null>;\n}\n\nexport interface TauriFsModule {\n readFile(path: string): Promise<Uint8Array>;\n writeFile(path: string, data: Uint8Array): Promise<void>;\n stat(path: string): Promise<{ size: number }>;\n}\n\nconst filtersFor = (extensions: string[] | undefined): Filters | undefined =>\n extensions ? [{ name: \"Files\", extensions }] : undefined;\n\nexport function tauriFiles(\n loadDialog: () => Promise<TauriDialogModule> = () =>\n import(\"@tauri-apps/plugin-dialog\"),\n loadFs: () => Promise<TauriFsModule> = () => import(\"@tauri-apps/plugin-fs\"),\n): CapabilityAdapter<Files> {\n return {\n platform: \"tauri\",\n available: () => detectPlatform() === \"tauri\",\n create: async () => {\n const [dialog, fs] = await Promise.all([loadDialog(), loadFs()]);\n const pickedAt = async (path: string): Promise<PickedFile> => {\n const name = nameOf(path);\n return {\n name,\n type: typeOf(name),\n size: (await fs.stat(path)).size,\n bytes: () => fs.readFile(path),\n text: async () => new TextDecoder().decode(await fs.readFile(path)),\n };\n };\n return {\n pick: async (options = {}) => {\n const filters = filtersFor(extensionsOf(options.accept));\n const chosen = await dialog.open({\n multiple: options.multiple === true,\n directory: false,\n ...(filters ? { filters } : {}),\n });\n const paths = chosen === null ? [] : Array.isArray(chosen) ? chosen : [chosen];\n return Promise.all(paths.map(pickedAt));\n },\n save: async (data, options) => {\n const filters = filtersFor(\n extensionsOf(options.type ? [options.type] : undefined),\n );\n const path = await dialog.save({\n defaultPath: options.name,\n ...(filters ? { filters } : {}),\n });\n if (path === null) return \"cancelled\";\n await fs.writeFile(path, await bytesOf(data));\n return \"saved\";\n },\n };\n },\n };\n}\n"]}
|
package/dist/files/web.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/files/web.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/files/web.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CapabilityAdapter } from \"../capability.js\";\nimport type {\n Files,\n PickedFile,\n PickOptions,\n SaveOptions,\n SaveOutcome,\n} from \"./interface.js\";\nimport { bytesOf } from \"./mime.js\";\n\ninterface SaveFilePicker {\n (options: { suggestedName: string }): Promise<{\n createWritable(): Promise<{\n write(data: Blob): Promise<void>;\n close(): Promise<void>;\n }>;\n }>;\n}\n\nexport interface WebFilesApis {\n readonly document: Document | undefined;\n readonly showSaveFilePicker?: SaveFilePicker | undefined;\n}\n\nconst browserApis = (): WebFilesApis => ({\n document: globalThis.document,\n showSaveFilePicker: (\n globalThis as { showSaveFilePicker?: SaveFilePicker }\n ).showSaveFilePicker?.bind(globalThis),\n});\n\nconst pickedFrom = (file: File): PickedFile => ({\n name: file.name,\n type: file.type,\n size: file.size,\n bytes: async () => new Uint8Array(await file.arrayBuffer()),\n text: () => file.text(),\n});\n\n/** An `<input type=\"file\">` the user answers or cancels; also what a phone's webview shows. */\nexport function pickWithInput(\n document: Document,\n options: PickOptions = {},\n): Promise<readonly PickedFile[]> {\n return new Promise((resolve) => {\n const input = document.createElement(\"input\");\n input.type = \"file\";\n input.hidden = true;\n if (options.accept?.length) input.accept = options.accept.join(\",\");\n input.multiple = options.multiple === true;\n const done = (files: readonly PickedFile[]) => {\n input.remove();\n resolve(files);\n };\n input.addEventListener(\"change\", () =>\n done([...(input.files ?? [])].map(pickedFrom)),\n );\n input.addEventListener(\"cancel\", () => done([]));\n document.body.append(input);\n input.click();\n });\n}\n\nfunction download(document: Document, blob: Blob, name: string): SaveOutcome {\n const url = URL.createObjectURL(blob);\n const link = document.createElement(\"a\");\n link.href = url;\n link.download = name;\n link.hidden = true;\n document.body.append(link);\n link.click();\n link.remove();\n setTimeout(() => URL.revokeObjectURL(url), 60_000);\n return \"saved\";\n}\n\nasync function saveInBrowser(\n apis: WebFilesApis,\n document: Document,\n data: Blob | Uint8Array | string,\n options: SaveOptions,\n): Promise<SaveOutcome> {\n const blob = new Blob([new Uint8Array(await bytesOf(data))], {\n type: options.type ?? \"\",\n });\n if (!apis.showSaveFilePicker) return download(document, blob, options.name);\n try {\n const handle = await apis.showSaveFilePicker({ suggestedName: options.name });\n const writable = await handle.createWritable();\n await writable.write(blob);\n await writable.close();\n return \"saved\";\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") return \"cancelled\";\n if (error instanceof Error && error.name === \"SecurityError\") {\n return download(document, blob, options.name);\n }\n throw error;\n }\n}\n\nexport function webFiles(\n getApis: () => WebFilesApis = browserApis,\n): CapabilityAdapter<Files> {\n return {\n platform: \"web\",\n available: () => getApis().document !== undefined,\n create: () => {\n const apis = getApis();\n const { document } = apis;\n if (!document) throw new Error(\"Files need a document\");\n return {\n pick: (options) => pickWithInput(document, options),\n save: (data, options) => saveInBrowser(apis, document, data, options),\n };\n },\n };\n}\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export type { PlatformAdapters } from "./adapters/types.js";
|
|
2
|
+
export * from "./auth-browser/index.js";
|
|
2
3
|
export { type CapabilityAdapter, type CapabilityDefinition, type CapabilityHandle, defineCapability, resolveCapability, } from "./capability.js";
|
|
3
4
|
export * from "./deep-link/index.js";
|
|
4
5
|
export * from "./device-key/index.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,kBAAkB,GACnB,MAAM,iCAAiC,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7D,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,cAAc,yBAAyB,CAAC;AACxC,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,kBAAkB,GACnB,MAAM,iCAAiC,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7D,cAAc,0BAA0B,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAUrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,cAAc,EAAiB,MAAM,cAAc,CAAC;AAC7D,cAAc,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAIL,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAUrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,cAAc,EAAiB,MAAM,cAAc,CAAC;AAC7D,cAAc,0BAA0B,CAAC","sourcesContent":["export type { PlatformAdapters } from \"./adapters/types.js\";\nexport * from \"./auth-browser/index.js\";\nexport {\n type CapabilityAdapter,\n type CapabilityDefinition,\n type CapabilityHandle,\n defineCapability,\n resolveCapability,\n} from \"./capability.js\";\nexport * from \"./deep-link/index.js\";\nexport * from \"./device-key/index.js\";\nexport {\n capacitorLocalAgentHost,\n localAgentHost,\n tauriLocalAgentHost,\n webLocalAgentHost,\n} from \"./local-agent-host/index.js\";\nexport type {\n HostPairing,\n LocalAgentHost,\n LocalConnectInput,\n LocalConnectResult,\n LocalHostStatus,\n PairingDevice,\n PairingPresenceKey,\n} from \"./local-agent-host/interface.js\";\nexport * from \"./files/index.js\";\nexport * from \"./notifications/index.js\";\nexport { detectPlatform, type Platform } from \"./runtime.js\";\nexport * from \"./session-store/index.js\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capacitor.js","sourceRoot":"","sources":["../../src/local-agent-host/capacitor.ts"],"names":[],"mappings":"AAGA,6CAA6C;AAC7C,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL,QAAQ,EAAE,WAAW;QACrB,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK;QACtB,MAAM,EAAE,GAAG,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"capacitor.js","sourceRoot":"","sources":["../../src/local-agent-host/capacitor.ts"],"names":[],"mappings":"AAGA,6CAA6C;AAC7C,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL,QAAQ,EAAE,WAAW;QACrB,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK;QACtB,MAAM,EAAE,GAAG,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { CapabilityAdapter } from \"../capability.js\";\nimport type { LocalAgentHost } from \"./interface.js\";\n\n/** A phone cannot spawn an agent process. */\nexport function capacitorLocalAgentHost(): CapabilityAdapter<LocalAgentHost> {\n return {\n platform: \"capacitor\",\n available: () => false,\n create: () => {\n throw new Error(\"Agents cannot run on a phone; connect a computer instead.\");\n },\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/local-agent-host/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAQzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAiB;IAC7D,IAAI,EAAE,gBAAgB;IACtB,QAAQ,EAAE,gBAAgB,CAAC,cAAc;CAC1C,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/local-agent-host/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAQzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAiB;IAC7D,IAAI,EAAE,gBAAgB;IACtB,QAAQ,EAAE,gBAAgB,CAAC,cAAc;CAC1C,CAAC,CAAC","sourcesContent":["import { platformAdapters } from \"#adapters\";\n\nimport { defineCapability } from \"../capability.js\";\nimport type { LocalAgentHost } from \"./interface.js\";\n\nexport { capacitorLocalAgentHost } from \"./capacitor.js\";\nexport type {\n HostPairing,\n LocalAgentHost,\n LocalConnectInput,\n LocalConnectResult,\n LocalHostStatus,\n} from \"./interface.js\";\nexport { tauriLocalAgentHost } from \"./tauri.js\";\nexport { webLocalAgentHost } from \"./web.js\";\n\nexport const localAgentHost = defineCapability<LocalAgentHost>({\n name: \"localAgentHost\",\n adapters: platformAdapters.localAgentHost,\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/local-agent-host/interface.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/local-agent-host/interface.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Parlor Host on this very computer, reachable without the network. Available only in a\n * desktop shell built with `desktop.agentHost`; elsewhere the chat shows the install\n * command instead.\n */\nexport interface LocalAgentHost {\n status(): Promise<LocalHostStatus>;\n /**\n * Pairs this computer's host with the signed-in account: the host starts the pairing,\n * `authorize` gets the code from the backend with the page's session, and the host\n * confirms the account and matching code in a native dialog the page cannot skip.\n */\n connect(input: LocalConnectInput): Promise<LocalConnectResult>;\n}\n\nexport type LocalHostStatus =\n | { readonly state: \"stopped\" }\n | {\n readonly state: \"running\";\n readonly version: string;\n /** App origins this host holds a grant for. */\n readonly apps: readonly string[];\n };\n\nexport interface LocalConnectInput {\n readonly appOrigin: string;\n authorize(pairing: HostPairing): Promise<string>;\n /** This app's own device, pinned at pairing so its first prompt needs no second approval. */\n readonly device?: PairingDevice | undefined;\n}\n\n/** The public half of a device's keys, as the account registered them. */\nexport interface PairingDevice {\n readonly deviceId: string;\n readonly name: string;\n readonly platform: string;\n readonly signingKey: JsonWebKey;\n readonly presenceKey?: PairingPresenceKey | undefined;\n}\n\nexport type PairingPresenceKey =\n | {\n readonly format: \"webauthn\";\n readonly credentialId: string;\n readonly rpId: string;\n readonly publicKey: JsonWebKey;\n }\n | {\n readonly format: \"es256-raw\";\n readonly keyId: string;\n readonly publicKey: JsonWebKey;\n };\n\n/** What the backend's host authorize endpoint needs from the host, and shows on consent. */\nexport interface HostPairing {\n readonly hostName: string;\n readonly platform: string;\n readonly codeChallenge: string;\n readonly state: string;\n readonly matchingCode: string;\n readonly keyThumbprint: string;\n}\n\nexport type LocalConnectResult =\n | { readonly connected: true }\n | { readonly connected: false; readonly reason: \"declined_locally\" | \"failed\" };\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tauri.js","sourceRoot":"","sources":["../../src/local-agent-host/tauri.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAQ/C,KAAK,UAAU,cAAc,CAAC,IAAgC;IAC5D,IAAI,cAAc,EAAE,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAC/C,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAU,qBAAqB,CAAC,CAAC,KAAK,IAAI,CAAC;IAChF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAI,GAA+B,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC;IAEvE,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,SAAS,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC;QACrC,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;YAChC,OAAO;gBACL,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAkB,oBAAoB,CAAC;gBAC3D,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;oBAClD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAc,mBAAmB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;oBAC9E,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;oBACtC,OAAO,MAAM,CAAqB,oBAAoB,EAAE;wBACtD,SAAS;wBACT,IAAI;wBACJ,MAAM,EAAE,MAAM,IAAI,IAAI;qBACvB,CAAC,CAAC;gBACL,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"tauri.js","sourceRoot":"","sources":["../../src/local-agent-host/tauri.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAQ/C,KAAK,UAAU,cAAc,CAAC,IAAgC;IAC5D,IAAI,cAAc,EAAE,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAC/C,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,CAAU,qBAAqB,CAAC,CAAC,KAAK,IAAI,CAAC;IAChF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAI,GAA+B,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC;IAEvE,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,SAAS,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC;QACrC,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;YAChC,OAAO;gBACL,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAkB,oBAAoB,CAAC;gBAC3D,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;oBAClD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAc,mBAAmB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;oBAC9E,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;oBACtC,OAAO,MAAM,CAAqB,oBAAoB,EAAE;wBACtD,SAAS;wBACT,IAAI;wBACJ,MAAM,EAAE,MAAM,IAAI,IAAI;qBACvB,CAAC,CAAC;gBACL,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { CapabilityAdapter } from \"../capability.js\";\nimport type { TauriInvoke } from \"../device-key/tauri.js\";\nimport { detectPlatform } from \"../runtime.js\";\nimport type {\n HostPairing,\n LocalAgentHost,\n LocalConnectResult,\n LocalHostStatus,\n} from \"./interface.js\";\n\nasync function hasBundledHost(load: () => Promise<TauriInvoke>): Promise<boolean> {\n if (detectPlatform() !== \"tauri\") return false;\n try {\n return (await (await load()).invoke<boolean>(\"parlor_host_bundled\")) === true;\n } catch {\n return false;\n }\n}\n\n/**\n * The generated `parlor_host_*` commands, which reach the shared daemon on its control\n * socket (starting the bundled sidecar when none runs) and draw the pairing confirmation\n * as a native dialog outside the webview.\n */\nexport function tauriLocalAgentHost(\n load: () => Promise<TauriInvoke> = () => import(\"@tauri-apps/api/core\"),\n): CapabilityAdapter<LocalAgentHost> {\n return {\n platform: \"tauri\",\n available: () => hasBundledHost(load),\n create: async () => {\n const { invoke } = await load();\n return {\n status: () => invoke<LocalHostStatus>(\"parlor_host_status\"),\n connect: async ({ appOrigin, authorize, device }) => {\n const pairing = await invoke<HostPairing>(\"parlor_host_begin\", { appOrigin });\n const code = await authorize(pairing);\n return invoke<LocalConnectResult>(\"parlor_host_finish\", {\n appOrigin,\n code,\n device: device ?? null,\n });\n },\n };\n },\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/local-agent-host/web.ts"],"names":[],"mappings":"AAGA,mFAAmF;AACnF,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK;QACtB,MAAM,EAAE,GAAG,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/local-agent-host/web.ts"],"names":[],"mappings":"AAGA,mFAAmF;AACnF,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK;QACtB,MAAM,EAAE,GAAG,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { CapabilityAdapter } from \"../capability.js\";\nimport type { LocalAgentHost } from \"./interface.js\";\n\n/** A web page never reaches a local process: the host has no listener to reach. */\nexport function webLocalAgentHost(): CapabilityAdapter<LocalAgentHost> {\n return {\n platform: \"web\",\n available: () => false,\n create: () => {\n throw new Error(\"Parlor Host is not reachable from a web page.\");\n },\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capacitor.js","sourceRoot":"","sources":["../../src/notifications/capacitor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAgB/C,SAAS,YAAY,CAAC,KAA+B;IACnD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACxC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,IAAI,GAA+C,GAAG,EAAE,CACtD,MAAM,CAAC,gCAAgC,CAAC;IAE1C,OAAO;QACL,QAAQ,EAAE,WAAW;QACrB,SAAS,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,KAAK,WAAW;QACjD,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;YAC5C,IAAI,UAAU,GAAG,YAAY,CAC3B,CAAC,MAAM,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,CAAC,OAAO,CACtD,CAAC;YACF,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC;YACxC,OAAO;gBACL,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU;gBAC5B,OAAO,EAAE,KAAK,IAAI,EAAE;oBAClB,UAAU,GAAG,YAAY,CACvB,CAAC,MAAM,kBAAkB,CAAC,kBAAkB,EAAE,CAAC,CAAC,OAAO,CACxD,CAAC;oBACF,OAAO,UAAU,CAAC;gBACpB,CAAC;gBACD,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBAC7B,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;wBAC7B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;oBAClE,CAAC;oBACD,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;oBACpB,MAAM,kBAAkB,CAAC,QAAQ,CAAC;wBAChC,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;qBAC1D,CAAC,CAAC;oBACH,OAAO;wBACL,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,kBAAkB,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;qBACzE,CAAC;gBACJ,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"capacitor.js","sourceRoot":"","sources":["../../src/notifications/capacitor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAgB/C,SAAS,YAAY,CAAC,KAA+B;IACnD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACxC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,IAAI,GAA+C,GAAG,EAAE,CACtD,MAAM,CAAC,gCAAgC,CAAC;IAE1C,OAAO;QACL,QAAQ,EAAE,WAAW;QACrB,SAAS,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,KAAK,WAAW;QACjD,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;YAC5C,IAAI,UAAU,GAAG,YAAY,CAC3B,CAAC,MAAM,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,CAAC,OAAO,CACtD,CAAC;YACF,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,aAAa,CAAC;YACxC,OAAO;gBACL,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU;gBAC5B,OAAO,EAAE,KAAK,IAAI,EAAE;oBAClB,UAAU,GAAG,YAAY,CACvB,CAAC,MAAM,kBAAkB,CAAC,kBAAkB,EAAE,CAAC,CAAC,OAAO,CACxD,CAAC;oBACF,OAAO,UAAU,CAAC;gBACpB,CAAC;gBACD,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBAC7B,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;wBAC7B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;oBAClE,CAAC;oBACD,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;oBACpB,MAAM,kBAAkB,CAAC,QAAQ,CAAC;wBAChC,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;qBAC1D,CAAC,CAAC;oBACH,OAAO;wBACL,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,kBAAkB,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;qBACzE,CAAC;gBACJ,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { CapabilityAdapter } from \"../capability.js\";\nimport { detectPlatform } from \"../runtime.js\";\nimport type { NotificationPermission, Notifications } from \"./interface.js\";\n\ntype CapacitorPermissionState = \"prompt\" | \"prompt-with-rationale\" | \"granted\" | \"denied\";\n\nexport interface CapacitorNotificationModule {\n LocalNotifications: {\n checkPermissions(): Promise<{ display: CapacitorPermissionState }>;\n requestPermissions(): Promise<{ display: CapacitorPermissionState }>;\n schedule(options: {\n notifications: Array<{ id: number; title: string; body: string }>;\n }): Promise<unknown>;\n cancel(options: { notifications: Array<{ id: number }> }): Promise<void>;\n };\n}\n\nfunction toPermission(state: CapacitorPermissionState): NotificationPermission {\n if (state === \"granted\") return \"granted\";\n if (state === \"denied\") return \"denied\";\n return \"default\";\n}\n\nexport function capacitorNotifications(\n load: () => Promise<CapacitorNotificationModule> = () =>\n import(\"@capacitor/local-notifications\"),\n): CapabilityAdapter<Notifications> {\n return {\n platform: \"capacitor\",\n available: () => detectPlatform() === \"capacitor\",\n create: async () => {\n const { LocalNotifications } = await load();\n let permission = toPermission(\n (await LocalNotifications.checkPermissions()).display,\n );\n let nextId = Date.now() % 2_000_000_000;\n return {\n permission: () => permission,\n request: async () => {\n permission = toPermission(\n (await LocalNotifications.requestPermissions()).display,\n );\n return permission;\n },\n show: async (title, options) => {\n if (permission !== \"granted\") {\n throw new Error(\"Notification permission has not been granted\");\n }\n const id = nextId++;\n await LocalNotifications.schedule({\n notifications: [{ id, title, body: options?.body ?? \"\" }],\n });\n return {\n close: () => void LocalNotifications.cancel({ notifications: [{ id }] }),\n };\n },\n };\n },\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AASpD,OAAO,EAAE,sBAAsB,EAAoC,MAAM,gBAAgB,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAgC,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAgB,CAAgB;IAC3D,IAAI,EAAE,eAAe;IACrB,QAAQ,EAAE,gBAAgB,CAAC,aAAa;CACzC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/notifications/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AASpD,OAAO,EAAE,sBAAsB,EAAoC,MAAM,gBAAgB,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAgC,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAgB,CAAgB;IAC3D,IAAI,EAAE,eAAe;IACrB,QAAQ,EAAE,gBAAgB,CAAC,aAAa;CACzC,CAAC,CAAC","sourcesContent":["import { platformAdapters } from \"#adapters\";\n\nimport { defineCapability } from \"../capability.js\";\nimport type { Notifications } from \"./interface.js\";\n\nexport type {\n NotificationHandle,\n NotificationOptions,\n NotificationPermission,\n Notifications,\n} from \"./interface.js\";\nexport { capacitorNotifications, type CapacitorNotificationModule } from \"./capacitor.js\";\nexport { tauriNotifications, type TauriNotificationModule } from \"./tauri.js\";\nexport { webNotifications } from \"./web.js\";\n\nexport const notifications = defineCapability<Notifications>({\n name: \"notifications\",\n adapters: platformAdapters.notifications,\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/notifications/interface.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/notifications/interface.ts"],"names":[],"mappings":"","sourcesContent":["export type NotificationPermission = \"granted\" | \"denied\" | \"default\";\n\nexport interface NotificationOptions {\n readonly body?: string | undefined;\n readonly tag?: string | undefined;\n}\n\nexport interface NotificationHandle {\n close(): void;\n}\n\nexport interface Notifications {\n permission(): NotificationPermission;\n request(): Promise<NotificationPermission>;\n show(title: string, options?: NotificationOptions): Promise<NotificationHandle>;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tauri.js","sourceRoot":"","sources":["../../src/notifications/tauri.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAS/C,MAAM,UAAU,kBAAkB,CAChC,IAAI,GAA2C,GAAG,EAAE,CAClD,MAAM,CAAC,iCAAiC,CAAC;IAE3C,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,SAAS,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,KAAK,OAAO;QAC7C,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,MAAM,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;YAC5B,IAAI,UAAU,GAA2B,CAAC,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC;gBAC3E,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,SAAS,CAAC;YACd,OAAO;gBACL,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU;gBAC5B,OAAO,EAAE,KAAK,IAAI,EAAE;oBAClB,UAAU,GAAG,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC;oBAC9C,OAAO,UAAU,CAAC;gBACpB,CAAC;gBACD,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBAC7B,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;wBAC7B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;oBAClE,CAAC;oBACD,MAAM,CAAC,gBAAgB,CACrB,OAAO,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CACxE,CAAC;oBACF,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;gBAC7B,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"tauri.js","sourceRoot":"","sources":["../../src/notifications/tauri.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAS/C,MAAM,UAAU,kBAAkB,CAChC,IAAI,GAA2C,GAAG,EAAE,CAClD,MAAM,CAAC,iCAAiC,CAAC;IAE3C,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,SAAS,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,KAAK,OAAO;QAC7C,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,MAAM,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;YAC5B,IAAI,UAAU,GAA2B,CAAC,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC;gBAC3E,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,SAAS,CAAC;YACd,OAAO;gBACL,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU;gBAC5B,OAAO,EAAE,KAAK,IAAI,EAAE;oBAClB,UAAU,GAAG,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC;oBAC9C,OAAO,UAAU,CAAC;gBACpB,CAAC;gBACD,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBAC7B,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;wBAC7B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;oBAClE,CAAC;oBACD,MAAM,CAAC,gBAAgB,CACrB,OAAO,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CACxE,CAAC;oBACF,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;gBAC7B,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { CapabilityAdapter } from \"../capability.js\";\nimport { detectPlatform } from \"../runtime.js\";\nimport type { NotificationPermission, Notifications } from \"./interface.js\";\n\nexport interface TauriNotificationModule {\n isPermissionGranted(): Promise<boolean>;\n requestPermission(): Promise<NotificationPermission>;\n sendNotification(options: { title: string; body?: string }): void;\n}\n\nexport function tauriNotifications(\n load: () => Promise<TauriNotificationModule> = () =>\n import(\"@tauri-apps/plugin-notification\"),\n): CapabilityAdapter<Notifications> {\n return {\n platform: \"tauri\",\n available: () => detectPlatform() === \"tauri\",\n create: async () => {\n const plugin = await load();\n let permission: NotificationPermission = (await plugin.isPermissionGranted())\n ? \"granted\"\n : \"default\";\n return {\n permission: () => permission,\n request: async () => {\n permission = await plugin.requestPermission();\n return permission;\n },\n show: async (title, options) => {\n if (permission !== \"granted\") {\n throw new Error(\"Notification permission has not been granted\");\n }\n plugin.sendNotification(\n options?.body === undefined ? { title } : { title, body: options.body },\n );\n return { close: () => {} };\n },\n };\n },\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/notifications/web.ts"],"names":[],"mappings":"AAYA,MAAM,UAAU,gBAAgB,CAC9B,MAAM,GAAsC,GAAG,EAAE,CAC9C,UAAiD,CAAC,YAAY;IAEjE,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,KAAK,SAAS;QACvC,MAAM,EAAE,GAAG,EAAE;YACX,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YAC/D,OAAO;gBACL,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,UAAU;gBAChC,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,iBAAiB,EAAE;gBACtC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBAC7B,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;wBACjC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;oBAClE,CAAC;oBACD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;oBAC7C,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC/C,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/notifications/web.ts"],"names":[],"mappings":"AAYA,MAAM,UAAU,gBAAgB,CAC9B,MAAM,GAAsC,GAAG,EAAE,CAC9C,UAAiD,CAAC,YAAY;IAEjE,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,KAAK,SAAS;QACvC,MAAM,EAAE,GAAG,EAAE;YACX,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YAC/D,OAAO;gBACL,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,UAAU;gBAChC,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,iBAAiB,EAAE;gBACtC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;oBAC7B,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;wBACjC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;oBAClE,CAAC;oBACD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;oBAC7C,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC/C,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { CapabilityAdapter } from \"../capability.js\";\nimport type { NotificationPermission, Notifications } from \"./interface.js\";\n\ninterface NotificationApi {\n readonly permission: NotificationPermission;\n requestPermission(): Promise<NotificationPermission>;\n new (\n title: string,\n options?: { body?: string | undefined; tag?: string | undefined },\n ): { close(): void };\n}\n\nexport function webNotifications(\n getApi: () => NotificationApi | undefined = () =>\n (globalThis as { Notification?: NotificationApi }).Notification,\n): CapabilityAdapter<Notifications> {\n return {\n platform: \"web\",\n available: () => getApi() !== undefined,\n create: () => {\n const api = getApi();\n if (!api) throw new Error(\"Notification API is not available\");\n return {\n permission: () => api.permission,\n request: () => api.requestPermission(),\n show: async (title, options) => {\n if (api.permission !== \"granted\") {\n throw new Error(\"Notification permission has not been granted\");\n }\n const notification = new api(title, options);\n return { close: () => notification.close() };\n },\n };\n },\n };\n}\n"]}
|
package/dist/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,cAAc,CAAC,OAAO,GAAY,UAAU;IAC1D,MAAM,CAAC,GAAG,OAA0B,CAAC;IACrC,IAAI,CAAC,CAAC,mBAAmB;QAAE,OAAO,OAAO,CAAC;IAC1C,IAAI,CAAC,CAAC,SAAS,EAAE,gBAAgB,EAAE,EAAE;QAAE,OAAO,WAAW,CAAC;IAC1D,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,cAAc,CAAC,OAAO,GAAY,UAAU;IAC1D,MAAM,CAAC,GAAG,OAA0B,CAAC;IACrC,IAAI,CAAC,CAAC,mBAAmB;QAAE,OAAO,OAAO,CAAC;IAC1C,IAAI,CAAC,CAAC,SAAS,EAAE,gBAAgB,EAAE,EAAE;QAAE,OAAO,WAAW,CAAC;IAC1D,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["export type Platform = \"web\" | \"capacitor\" | \"tauri\";\n\ninterface PlatformGlobals {\n __TAURI_INTERNALS__?: unknown;\n Capacitor?: { isNativePlatform?: () => boolean };\n}\n\nexport function detectPlatform(globals: unknown = globalThis): Platform {\n const g = globals as PlatformGlobals;\n if (g.__TAURI_INTERNALS__) return \"tauri\";\n if (g.Capacitor?.isNativePlatform?.()) return \"capacitor\";\n return \"web\";\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capacitor.js","sourceRoot":"","sources":["../../src/session-store/capacitor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAoB,MAAM,YAAY,CAAC;AAUjE,0FAA0F;AAC1F,MAAM,UAAU,qBAAqB,CACnC,OAAO,GAAsB,GAAG,EAAE,CAAC,UAAU,CAAC,YAAY,EAC1D,IAAI,GAA0C,GAAG,EAAE,CACjD,MAAM,CAAC,8BAA8B,CAAC;IAExC,OAAO;QACL,QAAQ,EAAE,WAAW;QACrB,SAAS,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,KAAK,WAAW;QACjD,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,IAAI,CAAC,YAAY,EAAE;gBAAE,OAAO,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;YACzD,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;YAC5C,OAAO,oBAAoB,CACzB;gBACE,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK;gBACvD,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CACb,kBAAkB,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;aACtE,EACD,OAAO,EAAE,CACV,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"capacitor.js","sourceRoot":"","sources":["../../src/session-store/capacitor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAoB,MAAM,YAAY,CAAC;AAUjE,0FAA0F;AAC1F,MAAM,UAAU,qBAAqB,CACnC,OAAO,GAAsB,GAAG,EAAE,CAAC,UAAU,CAAC,YAAY,EAC1D,IAAI,GAA0C,GAAG,EAAE,CACjD,MAAM,CAAC,8BAA8B,CAAC;IAExC,OAAO;QACL,QAAQ,EAAE,WAAW;QACrB,SAAS,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,KAAK,WAAW;QACjD,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,IAAI,CAAC,YAAY,EAAE;gBAAE,OAAO,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;YACzD,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;YAC5C,OAAO,oBAAoB,CACzB;gBACE,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK;gBACvD,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CACb,kBAAkB,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;aACtE,EACD,OAAO,EAAE,CACV,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { CapabilityAdapter } from \"../capability.js\";\nimport { hasIosPlugin } from \"../device-key/native.js\";\nimport { detectPlatform } from \"../runtime.js\";\nimport type { SessionStore } from \"./interface.js\";\nimport { keychainSessionStore } from \"./keychain.js\";\nimport { localSessionStore, type StorageLike } from \"./local.js\";\n\n/** The `ParlorSessionStore` native plugin: the iOS Keychain. */\nexport interface CapacitorSessionModule {\n ParlorSessionStore: {\n get(): Promise<{ value?: string }>;\n set(options: { value?: string }): Promise<void>;\n };\n}\n\n/** The iOS Keychain; the webview's own storage where the plugin has no implementation. */\nexport function capacitorSessionStore(\n storage: () => StorageLike = () => globalThis.localStorage,\n load: () => Promise<CapacitorSessionModule> = () =>\n import(\"@parlor/capacitor-device-key\"),\n): CapabilityAdapter<SessionStore> {\n return {\n platform: \"capacitor\",\n available: () => detectPlatform() === \"capacitor\",\n create: async () => {\n if (!hasIosPlugin()) return localSessionStore(storage());\n const { ParlorSessionStore } = await load();\n return keychainSessionStore(\n {\n get: async () => (await ParlorSessionStore.get()).value,\n set: (token) =>\n ParlorSessionStore.set(token === undefined ? {} : { value: token }),\n },\n storage(),\n );\n },\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/session-store/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAoB,MAAM,YAAY,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,CAAC,MAAM,YAAY,GAAG,gBAAgB,CAAe;IACzD,IAAI,EAAE,cAAc;IACpB,QAAQ,EAAE,gBAAgB,CAAC,YAAY;CACxC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/session-store/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAoB,MAAM,YAAY,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,CAAC,MAAM,YAAY,GAAG,gBAAgB,CAAe;IACzD,IAAI,EAAE,cAAc;IACpB,QAAQ,EAAE,gBAAgB,CAAC,YAAY;CACxC,CAAC,CAAC","sourcesContent":["import { platformAdapters } from \"#adapters\";\n\nimport { defineCapability } from \"../capability.js\";\nimport type { SessionStore } from \"./interface.js\";\n\nexport type { SessionStore } from \"./interface.js\";\nexport { capacitorSessionStore } from \"./capacitor.js\";\nexport { localSessionStore, SESSION_STORAGE_KEY, type StorageLike } from \"./local.js\";\nexport { tauriSessionStore } from \"./tauri.js\";\nexport { webSessionStore } from \"./web.js\";\n\nexport const sessionStore = defineCapability<SessionStore>({\n name: \"sessionStore\",\n adapters: platformAdapters.sessionStore,\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/session-store/interface.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/session-store/interface.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Where a native shell keeps its bearer session. A browser needs none: the session rides\n * in a cookie the page cannot read.\n */\nexport interface SessionStore {\n get(): Promise<string | undefined>;\n set(token: string | undefined): Promise<void>;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../src/session-store/keychain.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAoB,MAAM,YAAY,CAAC;AAOnE;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAqB,EACrB,MAAmB;IAEnB,IAAI,QAAmC,CAAC;IACxC,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAChD,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO;QACzB,IAAI,CAAC,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,SAAS;YAAE,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9D,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,MAAM,OAAO,GAAG,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;YACjB,IAAI,QAAQ,KAAK,OAAO;gBAAE,QAAQ,GAAG,SAAS,CAAC;QACjD,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IACF,OAAO;QACL,GAAG,EAAE,KAAK,IAAI,EAAE;YACd,MAAM,OAAO,EAAE,CAAC;YAChB,OAAO,MAAM,CAAC,GAAG,EAAE,CAAC;QACtB,CAAC;QACD,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACnB,MAAM,OAAO,EAAE,CAAC;YAChB,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../src/session-store/keychain.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAoB,MAAM,YAAY,CAAC;AAOnE;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAqB,EACrB,MAAmB;IAEnB,IAAI,QAAmC,CAAC;IACxC,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAChD,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO;QACzB,IAAI,CAAC,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,SAAS;YAAE,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9D,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;IACzC,CAAC,CAAC;IACF,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,MAAM,OAAO,GAAG,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;YACjB,IAAI,QAAQ,KAAK,OAAO;gBAAE,QAAQ,GAAG,SAAS,CAAC;QACjD,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IACF,OAAO;QACL,GAAG,EAAE,KAAK,IAAI,EAAE;YACd,MAAM,OAAO,EAAE,CAAC;YAChB,OAAO,MAAM,CAAC,GAAG,EAAE,CAAC;QACtB,CAAC;QACD,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACnB,MAAM,OAAO,EAAE,CAAC;YAChB,MAAM,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { SessionStore } from \"./interface.js\";\nimport { SESSION_STORAGE_KEY, type StorageLike } from \"./local.js\";\n\nexport interface NativeSession {\n get(): Promise<string | undefined>;\n set(token: string | undefined): Promise<void>;\n}\n\n/**\n * The token lives in the platform keychain only. A token an earlier release left in the\n * webview's storage moves over on the first read and is deleted there; a failed move is\n * retried by the next call.\n */\nexport function keychainSessionStore(\n native: NativeSession,\n legacy: StorageLike,\n): SessionStore {\n let migrated: Promise<void> | undefined;\n const move = async () => {\n const old = legacy.getItem(SESSION_STORAGE_KEY);\n if (old === null) return;\n if ((await native.get()) === undefined) await native.set(old);\n legacy.removeItem(SESSION_STORAGE_KEY);\n };\n const migrate = () => {\n const attempt = (migrated ??= move());\n attempt.catch(() => {\n if (migrated === attempt) migrated = undefined;\n });\n return attempt;\n };\n return {\n get: async () => {\n await migrate();\n return native.get();\n },\n set: async (token) => {\n await migrate();\n await native.set(token);\n },\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/session-store/local.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AAQpD,oGAAoG;AACpG,MAAM,UAAU,iBAAiB,CAAC,OAAoB;IACpD,OAAO;QACL,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,SAAS,CAAC;QAC7E,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;YACb,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;;gBAC5D,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;YACjD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../src/session-store/local.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AAQpD,oGAAoG;AACpG,MAAM,UAAU,iBAAiB,CAAC,OAAoB;IACpD,OAAO;QACL,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,SAAS,CAAC;QAC7E,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE;YACb,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;;gBAC5D,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;YACjD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { SessionStore } from \"./interface.js\";\n\nexport const SESSION_STORAGE_KEY = \"parlor.session\";\n\nexport interface StorageLike {\n getItem(key: string): string | null;\n setItem(key: string, value: string): void;\n removeItem(key: string): void;\n}\n\n/** The baseline for native shells until their keystore adapters land: the webview's own storage. */\nexport function localSessionStore(storage: StorageLike): SessionStore {\n return {\n get: () => Promise.resolve(storage.getItem(SESSION_STORAGE_KEY) ?? undefined),\n set: (token) => {\n if (token === undefined) storage.removeItem(SESSION_STORAGE_KEY);\n else storage.setItem(SESSION_STORAGE_KEY, token);\n return Promise.resolve();\n },\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tauri.js","sourceRoot":"","sources":["../../src/session-store/tauri.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAoB,MAAM,YAAY,CAAC;AAEjE;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAO,GAAsB,GAAG,EAAE,CAAC,UAAU,CAAC,YAAY,EAC1D,IAAI,GAA+B,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC;IAEvE,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,SAAS,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,KAAK,OAAO;QAC7C,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,IAAI,CAAC,CAAC,MAAM,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;gBACvD,OAAO,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;YACtC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;YAChC,OAAO,oBAAoB,CACzB;gBACE,GAAG,EAAE,KAAK,IAAI,EAAE,CACd,CAAC,MAAM,MAAM,CAAgB,oBAAoB,CAAC,CAAC,IAAI,SAAS;gBAClE,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAO,oBAAoB,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC;aAC7E,EACD,OAAO,EAAE,CACV,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"tauri.js","sourceRoot":"","sources":["../../src/session-store/tauri.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAoB,MAAM,YAAY,CAAC;AAEjE;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAO,GAAsB,GAAG,EAAE,CAAC,UAAU,CAAC,YAAY,EAC1D,IAAI,GAA+B,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC;IAEvE,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,SAAS,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,KAAK,OAAO;QAC7C,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,IAAI,CAAC,CAAC,MAAM,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;gBACvD,OAAO,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC;YACtC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;YAChC,OAAO,oBAAoB,CACzB;gBACE,GAAG,EAAE,KAAK,IAAI,EAAE,CACd,CAAC,MAAM,MAAM,CAAgB,oBAAoB,CAAC,CAAC,IAAI,SAAS;gBAClE,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAO,oBAAoB,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC;aAC7E,EACD,OAAO,EAAE,CACV,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { CapabilityAdapter } from \"../capability.js\";\nimport { hasNativeCommand } from \"../device-key/native.js\";\nimport type { TauriInvoke } from \"../device-key/tauri.js\";\nimport { detectPlatform } from \"../runtime.js\";\nimport type { SessionStore } from \"./interface.js\";\nimport { keychainSessionStore } from \"./keychain.js\";\nimport { localSessionStore, type StorageLike } from \"./local.js\";\n\n/**\n * The macOS Keychain through the generated `parlor_session_*` commands; the webview's own\n * storage in a shell without a working one, such as a project generated by an older version.\n */\nexport function tauriSessionStore(\n storage: () => StorageLike = () => globalThis.localStorage,\n load: () => Promise<TauriInvoke> = () => import(\"@tauri-apps/api/core\"),\n): CapabilityAdapter<SessionStore> {\n return {\n platform: \"tauri\",\n available: () => detectPlatform() === \"tauri\",\n create: async () => {\n if (!(await hasNativeCommand(load, \"parlor_session_get\")))\n return localSessionStore(storage());\n const { invoke } = await load();\n return keychainSessionStore(\n {\n get: async () =>\n (await invoke<string | null>(\"parlor_session_get\")) ?? undefined,\n set: (token) => invoke<void>(\"parlor_session_set\", { token: token ?? null }),\n },\n storage(),\n );\n },\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/session-store/web.ts"],"names":[],"mappings":"AAGA,8EAA8E;AAC9E,MAAM,UAAU,eAAe;IAC7B,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK;QACtB,MAAM,EAAE,GAAG,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/session-store/web.ts"],"names":[],"mappings":"AAGA,8EAA8E;AAC9E,MAAM,UAAU,eAAe;IAC7B,OAAO;QACL,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK;QACtB,MAAM,EAAE,GAAG,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { CapabilityAdapter } from \"../capability.js\";\nimport type { SessionStore } from \"./interface.js\";\n\n/** Never available: the browser carries the session in an HttpOnly cookie. */\nexport function webSessionStore(): CapabilityAdapter<SessionStore> {\n return {\n platform: \"web\",\n available: () => false,\n create: () => {\n throw new Error(\"The web keeps its session in a cookie.\");\n },\n };\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@parlor/capabilities",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"homepage": "https://cychien.github.io/parlor",
|
|
5
5
|
"bugs": "https://github.com/cychien/parlor/issues",
|
|
6
6
|
"license": "MIT",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"happy-dom": "^20.14.5",
|
|
45
45
|
"typescript": "^7.0.2",
|
|
46
46
|
"vitest": "^5.0.3",
|
|
47
|
-
"@parlor/capacitor-device-key": "0.
|
|
47
|
+
"@parlor/capacitor-device-key": "0.3.0"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
50
|
"@capacitor/app": ">=8",
|