@effect/platform-browser 4.0.0-beta.66 → 4.0.0-beta.68
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/BrowserCrypto.d.ts +23 -0
- package/dist/BrowserCrypto.d.ts.map +1 -0
- package/dist/BrowserCrypto.js +61 -0
- package/dist/BrowserCrypto.js.map +1 -0
- package/dist/BrowserHttpClient.d.ts +23 -13
- package/dist/BrowserHttpClient.d.ts.map +1 -1
- package/dist/BrowserHttpClient.js +49 -12
- package/dist/BrowserHttpClient.js.map +1 -1
- package/dist/BrowserKeyValueStore.d.ts +15 -8
- package/dist/BrowserKeyValueStore.d.ts.map +1 -1
- package/dist/BrowserKeyValueStore.js +128 -4
- package/dist/BrowserKeyValueStore.js.map +1 -1
- package/dist/BrowserPersistence.d.ts +6 -2
- package/dist/BrowserPersistence.d.ts.map +1 -1
- package/dist/BrowserPersistence.js +6 -2
- package/dist/BrowserPersistence.js.map +1 -1
- package/dist/BrowserRuntime.d.ts +31 -4
- package/dist/BrowserRuntime.d.ts.map +1 -1
- package/dist/BrowserRuntime.js +3 -1
- package/dist/BrowserRuntime.js.map +1 -1
- package/dist/BrowserSocket.d.ts +31 -6
- package/dist/BrowserSocket.d.ts.map +1 -1
- package/dist/BrowserSocket.js +31 -6
- package/dist/BrowserSocket.js.map +1 -1
- package/dist/BrowserStream.d.ts +25 -3
- package/dist/BrowserStream.d.ts.map +1 -1
- package/dist/BrowserStream.js +25 -3
- package/dist/BrowserStream.js.map +1 -1
- package/dist/BrowserWorker.d.ts +8 -4
- package/dist/BrowserWorker.d.ts.map +1 -1
- package/dist/BrowserWorker.js +29 -5
- package/dist/BrowserWorker.js.map +1 -1
- package/dist/BrowserWorkerRunner.d.ts +12 -6
- package/dist/BrowserWorkerRunner.d.ts.map +1 -1
- package/dist/BrowserWorkerRunner.js +31 -7
- package/dist/BrowserWorkerRunner.js.map +1 -1
- package/dist/Clipboard.d.ts +35 -11
- package/dist/Clipboard.d.ts.map +1 -1
- package/dist/Clipboard.js +31 -9
- package/dist/Clipboard.js.map +1 -1
- package/dist/Geolocation.d.ts +52 -18
- package/dist/Geolocation.d.ts.map +1 -1
- package/dist/Geolocation.js +44 -14
- package/dist/Geolocation.js.map +1 -1
- package/dist/IndexedDb.d.ts +38 -11
- package/dist/IndexedDb.d.ts.map +1 -1
- package/dist/IndexedDb.js +35 -13
- package/dist/IndexedDb.js.map +1 -1
- package/dist/IndexedDbDatabase.d.ts +57 -10
- package/dist/IndexedDbDatabase.d.ts.map +1 -1
- package/dist/IndexedDbDatabase.js +36 -3
- package/dist/IndexedDbDatabase.js.map +1 -1
- package/dist/IndexedDbQueryBuilder.d.ts +102 -28
- package/dist/IndexedDbQueryBuilder.d.ts.map +1 -1
- package/dist/IndexedDbQueryBuilder.js +56 -26
- package/dist/IndexedDbQueryBuilder.js.map +1 -1
- package/dist/IndexedDbTable.d.ts +57 -13
- package/dist/IndexedDbTable.d.ts.map +1 -1
- package/dist/IndexedDbTable.js +21 -1
- package/dist/IndexedDbTable.js.map +1 -1
- package/dist/IndexedDbVersion.d.ts +37 -7
- package/dist/IndexedDbVersion.d.ts.map +1 -1
- package/dist/IndexedDbVersion.js +3 -1
- package/dist/IndexedDbVersion.js.map +1 -1
- package/dist/Permissions.d.ts +38 -11
- package/dist/Permissions.d.ts.map +1 -1
- package/dist/Permissions.js +33 -8
- package/dist/Permissions.js.map +1 -1
- package/dist/index.d.ts +334 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +334 -11
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/src/BrowserCrypto.ts +71 -0
- package/src/BrowserHttpClient.ts +53 -14
- package/src/BrowserKeyValueStore.ts +144 -6
- package/src/BrowserPersistence.ts +19 -3
- package/src/BrowserRuntime.ts +31 -4
- package/src/BrowserSocket.ts +31 -6
- package/src/BrowserStream.ts +25 -3
- package/src/BrowserWorker.ts +29 -5
- package/src/BrowserWorkerRunner.ts +31 -7
- package/src/Clipboard.ts +35 -11
- package/src/Geolocation.ts +52 -18
- package/src/IndexedDb.ts +39 -21
- package/src/IndexedDbDatabase.ts +57 -10
- package/src/IndexedDbQueryBuilder.ts +171 -58
- package/src/IndexedDbTable.ts +57 -13
- package/src/IndexedDbVersion.ts +37 -7
- package/src/Permissions.ts +38 -11
- package/src/index.ts +335 -11
|
@@ -1,4 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
+
* Typed IndexedDB schema version definitions.
|
|
3
|
+
*
|
|
4
|
+
* This module represents one logical IndexedDB database version as a non-empty set of `IndexedDbTable` definitions.
|
|
5
|
+
* Versions are consumed by `IndexedDbDatabase.make` and `.add` to type query builders and migration transactions, so
|
|
6
|
+
* applications can describe the tables available after initialization or after each schema upgrade.
|
|
7
|
+
*
|
|
8
|
+
* Use an `IndexedDbVersion` when defining the initial stores for a browser database, adding or removing object stores,
|
|
9
|
+
* changing indexes, or moving data between differently shaped table schemas. The version value is a typed description of
|
|
10
|
+
* the target schema; creating and deleting object stores or indexes still happens explicitly inside the corresponding
|
|
11
|
+
* `IndexedDbDatabase` migration callback.
|
|
12
|
+
*
|
|
13
|
+
* IndexedDB versioning is ordered by the migration chain rather than by a number stored here. Each `.add` step becomes
|
|
14
|
+
* the next browser database version, and only migrations after the browser's current version are run. Include every table
|
|
15
|
+
* that should be queryable in each target version, avoid duplicate table names, and remember that key-path or
|
|
16
|
+
* auto-increment changes usually require creating a new object store and copying data during the upgrade transaction.
|
|
17
|
+
*
|
|
2
18
|
* @since 4.0.0
|
|
3
19
|
*/
|
|
4
20
|
import type { NonEmptyReadonlyArray } from "effect/Array";
|
|
@@ -6,8 +22,10 @@ import type { Pipeable } from "effect/Pipeable";
|
|
|
6
22
|
import type * as IndexedDbTable from "./IndexedDbTable.ts";
|
|
7
23
|
declare const TypeId = "~@effect/platform-browser/IndexedDbVersion";
|
|
8
24
|
/**
|
|
9
|
-
*
|
|
25
|
+
* Typed IndexedDB version definition containing the tables available in that schema version.
|
|
26
|
+
*
|
|
10
27
|
* @category interface
|
|
28
|
+
* @since 4.0.0
|
|
11
29
|
*/
|
|
12
30
|
export interface IndexedDbVersion<out Tables extends IndexedDbTable.AnyWithProps> extends Pipeable {
|
|
13
31
|
new (_: never): {};
|
|
@@ -15,35 +33,47 @@ export interface IndexedDbVersion<out Tables extends IndexedDbTable.AnyWithProps
|
|
|
15
33
|
readonly tables: ReadonlyMap<string, Tables>;
|
|
16
34
|
}
|
|
17
35
|
/**
|
|
18
|
-
*
|
|
36
|
+
* Type-erased shape of an `IndexedDbVersion`.
|
|
37
|
+
*
|
|
19
38
|
* @category models
|
|
39
|
+
* @since 4.0.0
|
|
20
40
|
*/
|
|
21
41
|
export interface Any {
|
|
22
42
|
readonly [TypeId]: typeof TypeId;
|
|
23
43
|
}
|
|
24
44
|
/**
|
|
25
|
-
*
|
|
45
|
+
* Type-erased `IndexedDbVersion` retaining version properties with broad table types.
|
|
46
|
+
*
|
|
26
47
|
* @category models
|
|
48
|
+
* @since 4.0.0
|
|
27
49
|
*/
|
|
28
50
|
export type AnyWithProps = IndexedDbVersion<IndexedDbTable.AnyWithProps>;
|
|
29
51
|
/**
|
|
30
|
-
*
|
|
52
|
+
* Extracts the table union from an `IndexedDbVersion`.
|
|
53
|
+
*
|
|
31
54
|
* @category models
|
|
55
|
+
* @since 4.0.0
|
|
32
56
|
*/
|
|
33
57
|
export type Tables<Db extends Any> = Db extends IndexedDbVersion<infer _Tables> ? _Tables : never;
|
|
34
58
|
/**
|
|
35
|
-
*
|
|
59
|
+
* Selects a table by name from an `IndexedDbVersion`.
|
|
60
|
+
*
|
|
36
61
|
* @category models
|
|
62
|
+
* @since 4.0.0
|
|
37
63
|
*/
|
|
38
64
|
export type TableWithName<Db extends Any, TableName extends string> = IndexedDbTable.WithName<Tables<Db>, TableName>;
|
|
39
65
|
/**
|
|
40
|
-
*
|
|
66
|
+
* Extracts the schema for a named table within an `IndexedDbVersion`.
|
|
67
|
+
*
|
|
41
68
|
* @category models
|
|
69
|
+
* @since 4.0.0
|
|
42
70
|
*/
|
|
43
71
|
export type SchemaWithName<Db extends Any, TableName extends string> = IndexedDbTable.TableSchema<IndexedDbTable.WithName<Tables<Db>, TableName>>;
|
|
44
72
|
/**
|
|
45
|
-
*
|
|
73
|
+
* Creates an `IndexedDbVersion` from one or more table definitions.
|
|
74
|
+
*
|
|
46
75
|
* @category constructors
|
|
76
|
+
* @since 4.0.0
|
|
47
77
|
*/
|
|
48
78
|
export declare const make: <const Tables extends NonEmptyReadonlyArray<IndexedDbTable.AnyWithProps>>(...tables: Tables) => IndexedDbVersion<Tables[number]>;
|
|
49
79
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndexedDbVersion.d.ts","sourceRoot":"","sources":["../src/IndexedDbVersion.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"IndexedDbVersion.d.ts","sourceRoot":"","sources":["../src/IndexedDbVersion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE/C,OAAO,KAAK,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAE1D,QAAA,MAAM,MAAM,+CAA+C,CAAA;AAE3D;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB,CAC/B,GAAG,CAAC,MAAM,SAAS,cAAc,CAAC,YAAY,CAC9C,SAAQ,QAAQ;IAChB,KAAI,CAAC,EAAE,KAAK,GAAG,EAAE,CAAA;IACjB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,MAAM,CAAA;IAChC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC7C;AAED;;;;;GAKG;AACH,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,MAAM,CAAA;CACjC;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,gBAAgB,CAAC,cAAc,CAAC,YAAY,CAAC,CAAA;AAExE;;;;;GAKG;AACH,MAAM,MAAM,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,EAAE,SAAS,gBAAgB,CAAC,MAAM,OAAO,CAAC,GAAG,OAAO,GAAG,KAAK,CAAA;AAEjG;;;;;GAKG;AACH,MAAM,MAAM,aAAa,CACvB,EAAE,SAAS,GAAG,EACd,SAAS,SAAS,MAAM,IACtB,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAA;AAElD;;;;;GAKG;AACH,MAAM,MAAM,cAAc,CACxB,EAAE,SAAS,GAAG,EACd,SAAS,SAAS,MAAM,IACtB,cAAc,CAAC,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAA;AAmB9E;;;;;GAKG;AACH,eAAO,MAAM,IAAI,GACf,KAAK,CAAC,MAAM,SAAS,qBAAqB,CAAC,cAAc,CAAC,YAAY,CAAC,EAEvE,GAAG,QAAQ,MAAM,KAChB,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAG9B,CAAA"}
|
package/dist/IndexedDbVersion.js
CHANGED
|
@@ -14,8 +14,10 @@ const makeProto = options => {
|
|
|
14
14
|
return Version;
|
|
15
15
|
};
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
17
|
+
* Creates an `IndexedDbVersion` from one or more table definitions.
|
|
18
|
+
*
|
|
18
19
|
* @category constructors
|
|
20
|
+
* @since 4.0.0
|
|
19
21
|
*/
|
|
20
22
|
export const make = (...tables) => makeProto({
|
|
21
23
|
tables: new Map(tables.map(table => [table.tableName, table]))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndexedDbVersion.js","names":["pipeArguments","TypeId","Proto","pipe","arguments","makeProto","options","Version","Object","assign","tables","make","Map","map","table","tableName"],"sources":["../src/IndexedDbVersion.ts"],"sourcesContent":[null],"mappings":"
|
|
1
|
+
{"version":3,"file":"IndexedDbVersion.js","names":["pipeArguments","TypeId","Proto","pipe","arguments","makeProto","options","Version","Object","assign","tables","make","Map","map","table","tableName"],"sources":["../src/IndexedDbVersion.ts"],"sourcesContent":[null],"mappings":"AAqBA,SAASA,aAAa,QAAQ,iBAAiB;AAG/C,MAAMC,MAAM,GAAG,4CAA4C;AAgE3D,MAAMC,KAAK,GAAG;EACZ,CAACD,MAAM,GAAGA,MAAM;EAChBE,IAAIA,CAAA;IACF,OAAOH,aAAa,CAAC,IAAI,EAAEI,SAAS,CAAC;EACvC;CACD;AAED,MAAMC,SAAS,GAAgDC,OAE9D,IAA8B;EAC7B;EACA,MAAMC,OAAO;EACbC,MAAM,CAACC,MAAM,CAACF,OAAO,EAAEL,KAAK,CAAC;EAC3BK,OAAe,CAACG,MAAM,GAAGJ,OAAO,CAACI,MAAM;EACzC,OAAOH,OAAc;AACvB,CAAC;AAED;;;;;;AAMA,OAAO,MAAMI,IAAI,GAAGA,CAGlB,GAAGD,MAAc,KAEjBL,SAAS,CAAC;EACRK,MAAM,EAAE,IAAIE,GAAG,CAACF,MAAM,CAACG,GAAG,CAAEC,KAAK,IAAK,CAACA,KAAK,CAACC,SAAS,EAAED,KAAK,CAAC,CAAC;CAChE,CAAC","ignoreList":[]}
|
package/dist/Permissions.d.ts
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Browser Permissions API support for Effect programs.
|
|
3
|
+
*
|
|
4
|
+
* This module provides a `Permissions` service and browser-backed layer for
|
|
5
|
+
* querying `navigator.permissions` from Effect code. Use it to check whether a
|
|
6
|
+
* browser capability is currently `granted`, `prompt`, or `denied` before
|
|
7
|
+
* showing UI for flows such as geolocation, notifications, clipboard access,
|
|
8
|
+
* camera, microphone, or persistent storage.
|
|
9
|
+
*
|
|
10
|
+
* Permission queries do not request access by themselves and should not replace
|
|
11
|
+
* the feature API that actually performs the operation. Browser support for
|
|
12
|
+
* permission names and states is uneven, queries may reject for unsupported or
|
|
13
|
+
* invalid descriptors, and some permissions are only meaningful in secure
|
|
14
|
+
* contexts or after user activation. Returned `PermissionStatus` objects can
|
|
15
|
+
* change when the user updates browser settings or responds to prompts; when
|
|
16
|
+
* watching `change` or `onchange`, account for browser differences and clean up
|
|
17
|
+
* listeners when the surrounding Effect scope ends.
|
|
18
|
+
*
|
|
19
|
+
* @since 4.0.0
|
|
3
20
|
*/
|
|
4
21
|
import * as Context from "effect/Context";
|
|
5
22
|
import * as Effect from "effect/Effect";
|
|
@@ -10,8 +27,8 @@ declare const ErrorTypeId = "~@effect/platform-browser/Permissions/PermissionsEr
|
|
|
10
27
|
* Wrapper on the Permission API (`navigator.permissions`) with methods for
|
|
11
28
|
* querying status of permissions.
|
|
12
29
|
*
|
|
13
|
-
* @
|
|
14
|
-
* @
|
|
30
|
+
* @category models
|
|
31
|
+
* @since 4.0.0
|
|
15
32
|
*/
|
|
16
33
|
export interface Permissions {
|
|
17
34
|
readonly [TypeId]: typeof TypeId;
|
|
@@ -26,8 +43,10 @@ declare const PermissionsInvalidStateError_base: new <A extends Record<string, a
|
|
|
26
43
|
readonly _tag: "InvalidStateError";
|
|
27
44
|
} & Readonly<A>;
|
|
28
45
|
/**
|
|
29
|
-
*
|
|
46
|
+
* Error reason for an `InvalidStateError` raised by the browser Permissions API.
|
|
47
|
+
*
|
|
30
48
|
* @category errors
|
|
49
|
+
* @since 4.0.0
|
|
31
50
|
*/
|
|
32
51
|
export declare class PermissionsInvalidStateError extends PermissionsInvalidStateError_base<{
|
|
33
52
|
readonly cause: unknown;
|
|
@@ -38,8 +57,10 @@ declare const PermissionsTypeError_base: new <A extends Record<string, any> = {}
|
|
|
38
57
|
readonly _tag: "TypeError";
|
|
39
58
|
} & Readonly<A>;
|
|
40
59
|
/**
|
|
41
|
-
*
|
|
60
|
+
* Error reason for a `TypeError` raised by the browser Permissions API.
|
|
61
|
+
*
|
|
42
62
|
* @category errors
|
|
63
|
+
* @since 4.0.0
|
|
43
64
|
*/
|
|
44
65
|
export declare class PermissionsTypeError extends PermissionsTypeError_base<{
|
|
45
66
|
readonly cause: unknown;
|
|
@@ -47,16 +68,20 @@ export declare class PermissionsTypeError extends PermissionsTypeError_base<{
|
|
|
47
68
|
get message(): string;
|
|
48
69
|
}
|
|
49
70
|
/**
|
|
50
|
-
*
|
|
71
|
+
* Union of browser Permissions API error reasons represented by the service.
|
|
72
|
+
*
|
|
51
73
|
* @category errors
|
|
74
|
+
* @since 4.0.0
|
|
52
75
|
*/
|
|
53
76
|
export type PermissionsErrorReason = PermissionsInvalidStateError | PermissionsTypeError;
|
|
54
77
|
declare const PermissionsError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
55
78
|
readonly _tag: "PermissionsError";
|
|
56
79
|
} & Readonly<A>;
|
|
57
80
|
/**
|
|
58
|
-
*
|
|
81
|
+
* Tagged error wrapping a browser Permissions API failure reason.
|
|
82
|
+
*
|
|
59
83
|
* @category errors
|
|
84
|
+
* @since 4.0.0
|
|
60
85
|
*/
|
|
61
86
|
export declare class PermissionsError extends PermissionsError_base<{
|
|
62
87
|
readonly reason: PermissionsErrorReason;
|
|
@@ -68,15 +93,17 @@ export declare class PermissionsError extends PermissionsError_base<{
|
|
|
68
93
|
get message(): string;
|
|
69
94
|
}
|
|
70
95
|
/**
|
|
71
|
-
*
|
|
72
|
-
*
|
|
96
|
+
* Service tag for the browser `Permissions` service.
|
|
97
|
+
*
|
|
98
|
+
* @category services
|
|
99
|
+
* @since 4.0.0
|
|
73
100
|
*/
|
|
74
101
|
export declare const Permissions: Context.Service<Permissions, Permissions>;
|
|
75
102
|
/**
|
|
76
103
|
* A layer that directly interfaces with the `navigator.permissions` api
|
|
77
104
|
*
|
|
78
|
-
* @
|
|
79
|
-
* @
|
|
105
|
+
* @category layers
|
|
106
|
+
* @since 4.0.0
|
|
80
107
|
*/
|
|
81
108
|
export declare const layer: Layer.Layer<Permissions>;
|
|
82
109
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Permissions.d.ts","sourceRoot":"","sources":["../src/Permissions.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"Permissions.d.ts","sourceRoot":"","sources":["../src/Permissions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,QAAA,MAAM,MAAM,0CAA0C,CAAA;AACtD,QAAA,MAAM,WAAW,2DAA2D,CAAA;AAE5E;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,MAAM,CAAA;IAEhC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,SAAS,cAAc,EAC1C,IAAI,EAAE,IAAI,KACP,MAAM,CAAC,MAAM,CAGhB,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,GAAG;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,EAC/C,gBAAgB,CACjB,CAAA;CACF;;;;AAED;;;;;GAKG;AACH,qBAAa,4BAA6B,SAAQ,kCAAsC;IACtF,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;;;;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,0BAA8B;IACtE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;AAED;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,GAAG,4BAA4B,GAAG,oBAAoB,CAAA;;;;AAExF;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,sBAAqC;IACzE,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAA;CACxC,CAAC;gBACY,KAAK,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAA;KAAE;IAO9D,QAAQ,CAAC,CAAC,WAAW,CAAC,4DAAc;IAEpC,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAwC,CAAA;AAE1G;;;;;GAKG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAe1C,CAAA"}
|
package/dist/Permissions.js
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Browser Permissions API support for Effect programs.
|
|
3
|
+
*
|
|
4
|
+
* This module provides a `Permissions` service and browser-backed layer for
|
|
5
|
+
* querying `navigator.permissions` from Effect code. Use it to check whether a
|
|
6
|
+
* browser capability is currently `granted`, `prompt`, or `denied` before
|
|
7
|
+
* showing UI for flows such as geolocation, notifications, clipboard access,
|
|
8
|
+
* camera, microphone, or persistent storage.
|
|
9
|
+
*
|
|
10
|
+
* Permission queries do not request access by themselves and should not replace
|
|
11
|
+
* the feature API that actually performs the operation. Browser support for
|
|
12
|
+
* permission names and states is uneven, queries may reject for unsupported or
|
|
13
|
+
* invalid descriptors, and some permissions are only meaningful in secure
|
|
14
|
+
* contexts or after user activation. Returned `PermissionStatus` objects can
|
|
15
|
+
* change when the user updates browser settings or responds to prompts; when
|
|
16
|
+
* watching `change` or `onchange`, account for browser differences and clean up
|
|
17
|
+
* listeners when the surrounding Effect scope ends.
|
|
18
|
+
*
|
|
19
|
+
* @since 4.0.0
|
|
3
20
|
*/
|
|
4
21
|
import * as Context from "effect/Context";
|
|
5
22
|
import * as Data from "effect/Data";
|
|
@@ -8,8 +25,10 @@ import * as Layer from "effect/Layer";
|
|
|
8
25
|
const TypeId = "~@effect/platform-browser/Permissions";
|
|
9
26
|
const ErrorTypeId = "~@effect/platform-browser/Permissions/PermissionsError";
|
|
10
27
|
/**
|
|
11
|
-
*
|
|
28
|
+
* Error reason for an `InvalidStateError` raised by the browser Permissions API.
|
|
29
|
+
*
|
|
12
30
|
* @category errors
|
|
31
|
+
* @since 4.0.0
|
|
13
32
|
*/
|
|
14
33
|
export class PermissionsInvalidStateError extends /*#__PURE__*/Data.TaggedError("InvalidStateError") {
|
|
15
34
|
get message() {
|
|
@@ -17,8 +36,10 @@ export class PermissionsInvalidStateError extends /*#__PURE__*/Data.TaggedError(
|
|
|
17
36
|
}
|
|
18
37
|
}
|
|
19
38
|
/**
|
|
20
|
-
*
|
|
39
|
+
* Error reason for a `TypeError` raised by the browser Permissions API.
|
|
40
|
+
*
|
|
21
41
|
* @category errors
|
|
42
|
+
* @since 4.0.0
|
|
22
43
|
*/
|
|
23
44
|
export class PermissionsTypeError extends /*#__PURE__*/Data.TaggedError("TypeError") {
|
|
24
45
|
get message() {
|
|
@@ -26,8 +47,10 @@ export class PermissionsTypeError extends /*#__PURE__*/Data.TaggedError("TypeErr
|
|
|
26
47
|
}
|
|
27
48
|
}
|
|
28
49
|
/**
|
|
29
|
-
*
|
|
50
|
+
* Tagged error wrapping a browser Permissions API failure reason.
|
|
51
|
+
*
|
|
30
52
|
* @category errors
|
|
53
|
+
* @since 4.0.0
|
|
31
54
|
*/
|
|
32
55
|
export class PermissionsError extends /*#__PURE__*/Data.TaggedError("PermissionsError") {
|
|
33
56
|
constructor(props) {
|
|
@@ -42,15 +65,17 @@ export class PermissionsError extends /*#__PURE__*/Data.TaggedError("Permissions
|
|
|
42
65
|
}
|
|
43
66
|
}
|
|
44
67
|
/**
|
|
45
|
-
*
|
|
46
|
-
*
|
|
68
|
+
* Service tag for the browser `Permissions` service.
|
|
69
|
+
*
|
|
70
|
+
* @category services
|
|
71
|
+
* @since 4.0.0
|
|
47
72
|
*/
|
|
48
73
|
export const Permissions = /*#__PURE__*/Context.Service(TypeId);
|
|
49
74
|
/**
|
|
50
75
|
* A layer that directly interfaces with the `navigator.permissions` api
|
|
51
76
|
*
|
|
52
|
-
* @
|
|
53
|
-
* @
|
|
77
|
+
* @category layers
|
|
78
|
+
* @since 4.0.0
|
|
54
79
|
*/
|
|
55
80
|
export const layer = /*#__PURE__*/Layer.succeed(Permissions, /*#__PURE__*/Permissions.of({
|
|
56
81
|
[TypeId]: TypeId,
|
package/dist/Permissions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Permissions.js","names":["Context","Data","Effect","Layer","TypeId","ErrorTypeId","PermissionsInvalidStateError","TaggedError","message","_tag","PermissionsTypeError","PermissionsError","constructor","props","cause","reason","Permissions","Service","layer","succeed","of","query","name","tryPromise","try","navigator","permissions","catch","DOMException"],"sources":["../src/Permissions.ts"],"sourcesContent":[null],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"Permissions.js","names":["Context","Data","Effect","Layer","TypeId","ErrorTypeId","PermissionsInvalidStateError","TaggedError","message","_tag","PermissionsTypeError","PermissionsError","constructor","props","cause","reason","Permissions","Service","layer","succeed","of","query","name","tryPromise","try","navigator","permissions","catch","DOMException"],"sources":["../src/Permissions.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;AAoBA,OAAO,KAAKA,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,IAAI,MAAM,aAAa;AACnC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AAErC,MAAMC,MAAM,GAAG,uCAAuC;AACtD,MAAMC,WAAW,GAAG,wDAAwD;AAyB5E;;;;;;AAMA,OAAM,MAAOC,4BAA6B,sBAAQL,IAAI,CAACM,WAAW,CAAC,mBAAmB,CAEpF;EACA,IAAaC,OAAOA,CAAA;IAClB,OAAO,IAAI,CAACC,IAAI;EAClB;;AAGF;;;;;;AAMA,OAAM,MAAOC,oBAAqB,sBAAQT,IAAI,CAACM,WAAW,CAAC,WAAW,CAEpE;EACA,IAAaC,OAAOA,CAAA;IAClB,OAAO,IAAI,CAACC,IAAI;EAClB;;AAWF;;;;;;AAMA,OAAM,MAAOE,gBAAiB,sBAAQV,IAAI,CAACM,WAAW,CAAC,kBAAkB,CAEvE;EACAK,YAAYC,KAAkD;IAC5D,KAAK,CAAC;MACJ,GAAGA,KAAK;MACRC,KAAK,EAAED,KAAK,CAACE,MAAM,CAACD;KACd,CAAC;EACX;EAES,CAACT,WAAW,IAAIA,WAAW;EAEpC,IAAaG,OAAOA,CAAA;IAClB,OAAO,IAAI,CAACO,MAAM,CAACP,OAAO;EAC5B;;AAGF;;;;;;AAMA,OAAO,MAAMQ,WAAW,gBAA8ChB,OAAO,CAACiB,OAAO,CAAcb,MAAM,CAAC;AAE1G;;;;;;AAMA,OAAO,MAAMc,KAAK,gBAA6Bf,KAAK,CAACgB,OAAO,CAC1DH,WAAW,eACXA,WAAW,CAACI,EAAE,CAAC;EACb,CAAChB,MAAM,GAAGA,MAAM;EAChBiB,KAAK,EAAGC,IAAI,IACVpB,MAAM,CAACqB,UAAU,CAAC;IAChBC,GAAG,EAAEA,CAAA,KAAMC,SAAS,CAACC,WAAW,CAACL,KAAK,CAAC;MAAEC;IAAI,CAAE,CAAiB;IAChEK,KAAK,EAAGb,KAAK,IACX,IAAIH,gBAAgB,CAAC;MACnBI,MAAM,EAAED,KAAK,YAAYc,YAAY,GACjC,IAAItB,4BAA4B,CAAC;QAAEQ;MAAK,CAAE,CAAC,GAC3C,IAAIJ,oBAAoB,CAAC;QAAEI;MAAK,CAAE;KACvC;GACJ;CACJ,CAAC,CACH","ignoreList":[]}
|