@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.
Files changed (91) hide show
  1. package/dist/BrowserCrypto.d.ts +23 -0
  2. package/dist/BrowserCrypto.d.ts.map +1 -0
  3. package/dist/BrowserCrypto.js +61 -0
  4. package/dist/BrowserCrypto.js.map +1 -0
  5. package/dist/BrowserHttpClient.d.ts +23 -13
  6. package/dist/BrowserHttpClient.d.ts.map +1 -1
  7. package/dist/BrowserHttpClient.js +49 -12
  8. package/dist/BrowserHttpClient.js.map +1 -1
  9. package/dist/BrowserKeyValueStore.d.ts +15 -8
  10. package/dist/BrowserKeyValueStore.d.ts.map +1 -1
  11. package/dist/BrowserKeyValueStore.js +128 -4
  12. package/dist/BrowserKeyValueStore.js.map +1 -1
  13. package/dist/BrowserPersistence.d.ts +6 -2
  14. package/dist/BrowserPersistence.d.ts.map +1 -1
  15. package/dist/BrowserPersistence.js +6 -2
  16. package/dist/BrowserPersistence.js.map +1 -1
  17. package/dist/BrowserRuntime.d.ts +31 -4
  18. package/dist/BrowserRuntime.d.ts.map +1 -1
  19. package/dist/BrowserRuntime.js +3 -1
  20. package/dist/BrowserRuntime.js.map +1 -1
  21. package/dist/BrowserSocket.d.ts +31 -6
  22. package/dist/BrowserSocket.d.ts.map +1 -1
  23. package/dist/BrowserSocket.js +31 -6
  24. package/dist/BrowserSocket.js.map +1 -1
  25. package/dist/BrowserStream.d.ts +25 -3
  26. package/dist/BrowserStream.d.ts.map +1 -1
  27. package/dist/BrowserStream.js +25 -3
  28. package/dist/BrowserStream.js.map +1 -1
  29. package/dist/BrowserWorker.d.ts +8 -4
  30. package/dist/BrowserWorker.d.ts.map +1 -1
  31. package/dist/BrowserWorker.js +29 -5
  32. package/dist/BrowserWorker.js.map +1 -1
  33. package/dist/BrowserWorkerRunner.d.ts +12 -6
  34. package/dist/BrowserWorkerRunner.d.ts.map +1 -1
  35. package/dist/BrowserWorkerRunner.js +31 -7
  36. package/dist/BrowserWorkerRunner.js.map +1 -1
  37. package/dist/Clipboard.d.ts +35 -11
  38. package/dist/Clipboard.d.ts.map +1 -1
  39. package/dist/Clipboard.js +31 -9
  40. package/dist/Clipboard.js.map +1 -1
  41. package/dist/Geolocation.d.ts +52 -18
  42. package/dist/Geolocation.d.ts.map +1 -1
  43. package/dist/Geolocation.js +44 -14
  44. package/dist/Geolocation.js.map +1 -1
  45. package/dist/IndexedDb.d.ts +38 -11
  46. package/dist/IndexedDb.d.ts.map +1 -1
  47. package/dist/IndexedDb.js +35 -13
  48. package/dist/IndexedDb.js.map +1 -1
  49. package/dist/IndexedDbDatabase.d.ts +57 -10
  50. package/dist/IndexedDbDatabase.d.ts.map +1 -1
  51. package/dist/IndexedDbDatabase.js +36 -3
  52. package/dist/IndexedDbDatabase.js.map +1 -1
  53. package/dist/IndexedDbQueryBuilder.d.ts +102 -28
  54. package/dist/IndexedDbQueryBuilder.d.ts.map +1 -1
  55. package/dist/IndexedDbQueryBuilder.js +56 -26
  56. package/dist/IndexedDbQueryBuilder.js.map +1 -1
  57. package/dist/IndexedDbTable.d.ts +57 -13
  58. package/dist/IndexedDbTable.d.ts.map +1 -1
  59. package/dist/IndexedDbTable.js +21 -1
  60. package/dist/IndexedDbTable.js.map +1 -1
  61. package/dist/IndexedDbVersion.d.ts +37 -7
  62. package/dist/IndexedDbVersion.d.ts.map +1 -1
  63. package/dist/IndexedDbVersion.js +3 -1
  64. package/dist/IndexedDbVersion.js.map +1 -1
  65. package/dist/Permissions.d.ts +38 -11
  66. package/dist/Permissions.d.ts.map +1 -1
  67. package/dist/Permissions.js +33 -8
  68. package/dist/Permissions.js.map +1 -1
  69. package/dist/index.d.ts +334 -11
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +334 -11
  72. package/dist/index.js.map +1 -1
  73. package/package.json +3 -3
  74. package/src/BrowserCrypto.ts +71 -0
  75. package/src/BrowserHttpClient.ts +53 -14
  76. package/src/BrowserKeyValueStore.ts +144 -6
  77. package/src/BrowserPersistence.ts +19 -3
  78. package/src/BrowserRuntime.ts +31 -4
  79. package/src/BrowserSocket.ts +31 -6
  80. package/src/BrowserStream.ts +25 -3
  81. package/src/BrowserWorker.ts +29 -5
  82. package/src/BrowserWorkerRunner.ts +31 -7
  83. package/src/Clipboard.ts +35 -11
  84. package/src/Geolocation.ts +52 -18
  85. package/src/IndexedDb.ts +39 -21
  86. package/src/IndexedDbDatabase.ts +57 -10
  87. package/src/IndexedDbQueryBuilder.ts +171 -58
  88. package/src/IndexedDbTable.ts +57 -13
  89. package/src/IndexedDbVersion.ts +37 -7
  90. package/src/Permissions.ts +38 -11
  91. 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
- * @since 4.0.0
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
- * @since 4.0.0
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
- * @since 4.0.0
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
- * @since 4.0.0
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
- * @since 4.0.0
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
- * @since 4.0.0
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
- * @since 4.0.0
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;;GAEG;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;;;GAGG;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;;;GAGG;AACH,MAAM,WAAW,GAAG;IAClB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,MAAM,CAAA;CACjC;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,gBAAgB,CAAC,cAAc,CAAC,YAAY,CAAC,CAAA;AAExE;;;GAGG;AACH,MAAM,MAAM,MAAM,CAAC,EAAE,SAAS,GAAG,IAAI,EAAE,SAAS,gBAAgB,CAAC,MAAM,OAAO,CAAC,GAAG,OAAO,GAAG,KAAK,CAAA;AAEjG;;;GAGG;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;;;GAGG;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;;;GAGG;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"}
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"}
@@ -14,8 +14,10 @@ const makeProto = options => {
14
14
  return Version;
15
15
  };
16
16
  /**
17
- * @since 4.0.0
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":"AAKA,SAASA,aAAa,QAAQ,iBAAiB;AAG/C,MAAMC,MAAM,GAAG,4CAA4C;AAoD3D,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;;;;AAIA,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":[]}
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":[]}
@@ -1,5 +1,22 @@
1
1
  /**
2
- * @since 1.0.0
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
- * @since 1.0.0
14
- * @category Models
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
- * @since 1.0.0
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
- * @since 1.0.0
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
- * @since 1.0.0
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
- * @since 1.0.0
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
- * @since 1.0.0
72
- * @category Service
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
- * @since 1.0.0
79
- * @category Layers
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;;GAEG;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;;;GAGG;AACH,qBAAa,4BAA6B,SAAQ,kCAAsC;IACtF,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;;;;AAED;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,0BAA8B;IACtE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB,CAAC;IACA,IAAa,OAAO,IAAI,MAAM,CAE7B;CACF;AAED;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,4BAA4B,GAAG,oBAAoB,CAAA;;;;AAExF;;;GAGG;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;;;GAGG;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"}
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"}
@@ -1,5 +1,22 @@
1
1
  /**
2
- * @since 1.0.0
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
- * @since 1.0.0
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
- * @since 1.0.0
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
- * @since 1.0.0
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
- * @since 1.0.0
46
- * @category Service
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
- * @since 1.0.0
53
- * @category Layers
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,
@@ -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;;;AAGA,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;;;;AAIA,OAAM,MAAOC,4BAA6B,sBAAQL,IAAI,CAACM,WAAW,CAAC,mBAAmB,CAEpF;EACA,IAAaC,OAAOA,CAAA;IAClB,OAAO,IAAI,CAACC,IAAI;EAClB;;AAGF;;;;AAIA,OAAM,MAAOC,oBAAqB,sBAAQT,IAAI,CAACM,WAAW,CAAC,WAAW,CAEpE;EACA,IAAaC,OAAOA,CAAA;IAClB,OAAO,IAAI,CAACC,IAAI;EAClB;;AASF;;;;AAIA,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;;;;AAIA,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":[]}
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":[]}