@effect/platform-browser 4.0.0-beta.9 → 4.0.0-beta.91
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 +49 -0
- package/dist/BrowserCrypto.d.ts.map +1 -0
- package/dist/BrowserCrypto.js +87 -0
- package/dist/BrowserCrypto.js.map +1 -0
- package/dist/BrowserHttpClient.d.ts +48 -19
- package/dist/BrowserHttpClient.d.ts.map +1 -1
- package/dist/BrowserHttpClient.js +62 -21
- package/dist/BrowserHttpClient.js.map +1 -1
- package/dist/BrowserKeyValueStore.d.ts +37 -14
- package/dist/BrowserKeyValueStore.d.ts.map +1 -1
- package/dist/BrowserKeyValueStore.js +144 -10
- package/dist/BrowserKeyValueStore.js.map +1 -1
- package/dist/BrowserPersistence.d.ts +40 -0
- package/dist/BrowserPersistence.d.ts.map +1 -0
- package/dist/BrowserPersistence.js +207 -0
- package/dist/BrowserPersistence.js.map +1 -0
- package/dist/BrowserRuntime.d.ts +64 -4
- package/dist/BrowserRuntime.d.ts.map +1 -1
- package/dist/BrowserRuntime.js +19 -1
- package/dist/BrowserRuntime.js.map +1 -1
- package/dist/BrowserSocket.d.ts +33 -6
- package/dist/BrowserSocket.d.ts.map +1 -1
- package/dist/BrowserSocket.js +33 -6
- package/dist/BrowserSocket.js.map +1 -1
- package/dist/BrowserStream.d.ts +19 -7
- package/dist/BrowserStream.d.ts.map +1 -1
- package/dist/BrowserStream.js +19 -7
- package/dist/BrowserStream.js.map +1 -1
- package/dist/BrowserWorker.d.ts +25 -4
- package/dist/BrowserWorker.d.ts.map +1 -1
- package/dist/BrowserWorker.js +34 -6
- package/dist/BrowserWorker.js.map +1 -1
- package/dist/BrowserWorkerRunner.d.ts +31 -6
- package/dist/BrowserWorkerRunner.d.ts.map +1 -1
- package/dist/BrowserWorkerRunner.js +43 -10
- package/dist/BrowserWorkerRunner.js.map +1 -1
- package/dist/Clipboard.d.ts +59 -14
- package/dist/Clipboard.d.ts.map +1 -1
- package/dist/Clipboard.js +34 -12
- package/dist/Clipboard.js.map +1 -1
- package/dist/Geolocation.d.ts +80 -25
- package/dist/Geolocation.d.ts.map +1 -1
- package/dist/Geolocation.js +48 -17
- package/dist/Geolocation.js.map +1 -1
- package/dist/IndexedDb.d.ts +75 -0
- package/dist/IndexedDb.d.ts.map +1 -0
- package/dist/IndexedDb.js +85 -0
- package/dist/IndexedDb.js.map +1 -0
- package/dist/IndexedDbDatabase.d.ts +153 -0
- package/dist/IndexedDbDatabase.d.ts.map +1 -0
- package/dist/IndexedDbDatabase.js +327 -0
- package/dist/IndexedDbDatabase.js.map +1 -0
- package/dist/IndexedDbQueryBuilder.d.ts +422 -0
- package/dist/IndexedDbQueryBuilder.d.ts.map +1 -0
- package/dist/IndexedDbQueryBuilder.js +935 -0
- package/dist/IndexedDbQueryBuilder.js.map +1 -0
- package/dist/IndexedDbTable.d.ts +166 -0
- package/dist/IndexedDbTable.d.ts.map +1 -0
- package/dist/IndexedDbTable.js +71 -0
- package/dist/IndexedDbTable.js.map +1 -0
- package/dist/IndexedDbVersion.d.ts +99 -0
- package/dist/IndexedDbVersion.d.ts.map +1 -0
- package/dist/IndexedDbVersion.js +44 -0
- package/dist/IndexedDbVersion.js.map +1 -0
- package/dist/Permissions.d.ts +52 -16
- package/dist/Permissions.d.ts.map +1 -1
- package/dist/Permissions.js +42 -11
- package/dist/Permissions.js.map +1 -1
- package/dist/index.d.ts +38 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -10
- package/dist/index.js.map +1 -1
- package/package.json +4 -3
- package/src/BrowserCrypto.ts +97 -0
- package/src/BrowserHttpClient.ts +72 -27
- package/src/BrowserKeyValueStore.ts +160 -12
- package/src/BrowserPersistence.ts +334 -0
- package/src/BrowserRuntime.ts +64 -4
- package/src/BrowserSocket.ts +33 -6
- package/src/BrowserStream.ts +19 -7
- package/src/BrowserWorker.ts +34 -6
- package/src/BrowserWorkerRunner.ts +43 -10
- package/src/Clipboard.ts +56 -14
- package/src/Geolocation.ts +76 -21
- package/src/IndexedDb.ts +113 -0
- package/src/IndexedDbDatabase.ts +648 -0
- package/src/IndexedDbQueryBuilder.ts +2032 -0
- package/src/IndexedDbTable.ts +260 -0
- package/src/IndexedDbVersion.ts +138 -0
- package/src/Permissions.ts +47 -14
- package/src/index.ts +45 -10
package/dist/Permissions.js
CHANGED
|
@@ -1,15 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Effect service for the browser Permissions API.
|
|
3
|
+
*
|
|
4
|
+
* This module defines a `Permissions` service backed by
|
|
5
|
+
* `navigator.permissions`. The service exposes `query`, which returns the
|
|
6
|
+
* browser `PermissionStatus` for a permission name. Failed browser operations
|
|
7
|
+
* are represented as `PermissionsError` values with `InvalidStateError` or
|
|
8
|
+
* `TypeError` reasons, and `layer` provides the browser-backed service.
|
|
9
|
+
*
|
|
10
|
+
* @since 4.0.0
|
|
3
11
|
*/
|
|
12
|
+
import * as Context from "effect/Context";
|
|
4
13
|
import * as Data from "effect/Data";
|
|
5
14
|
import * as Effect from "effect/Effect";
|
|
6
15
|
import * as Layer from "effect/Layer";
|
|
7
|
-
import * as ServiceMap from "effect/ServiceMap";
|
|
8
16
|
const TypeId = "~@effect/platform-browser/Permissions";
|
|
9
17
|
const ErrorTypeId = "~@effect/platform-browser/Permissions/PermissionsError";
|
|
10
18
|
/**
|
|
11
|
-
*
|
|
19
|
+
* Error reason for an `InvalidStateError` raised by the browser Permissions API.
|
|
20
|
+
*
|
|
12
21
|
* @category errors
|
|
22
|
+
* @since 4.0.0
|
|
13
23
|
*/
|
|
14
24
|
export class PermissionsInvalidStateError extends /*#__PURE__*/Data.TaggedError("InvalidStateError") {
|
|
15
25
|
get message() {
|
|
@@ -17,8 +27,10 @@ export class PermissionsInvalidStateError extends /*#__PURE__*/Data.TaggedError(
|
|
|
17
27
|
}
|
|
18
28
|
}
|
|
19
29
|
/**
|
|
20
|
-
*
|
|
30
|
+
* Error reason for a `TypeError` raised by the browser Permissions API.
|
|
31
|
+
*
|
|
21
32
|
* @category errors
|
|
33
|
+
* @since 4.0.0
|
|
22
34
|
*/
|
|
23
35
|
export class PermissionsTypeError extends /*#__PURE__*/Data.TaggedError("TypeError") {
|
|
24
36
|
get message() {
|
|
@@ -26,8 +38,10 @@ export class PermissionsTypeError extends /*#__PURE__*/Data.TaggedError("TypeErr
|
|
|
26
38
|
}
|
|
27
39
|
}
|
|
28
40
|
/**
|
|
29
|
-
*
|
|
41
|
+
* Tagged error wrapping a browser Permissions API failure reason.
|
|
42
|
+
*
|
|
30
43
|
* @category errors
|
|
44
|
+
* @since 4.0.0
|
|
31
45
|
*/
|
|
32
46
|
export class PermissionsError extends /*#__PURE__*/Data.TaggedError("PermissionsError") {
|
|
33
47
|
constructor(props) {
|
|
@@ -42,15 +56,32 @@ export class PermissionsError extends /*#__PURE__*/Data.TaggedError("Permissions
|
|
|
42
56
|
}
|
|
43
57
|
}
|
|
44
58
|
/**
|
|
45
|
-
*
|
|
46
|
-
*
|
|
59
|
+
* Service tag for browser permission querying.
|
|
60
|
+
*
|
|
61
|
+
* **When to use**
|
|
62
|
+
*
|
|
63
|
+
* Use when you need to require or provide browser permission querying through
|
|
64
|
+
* Effect's context.
|
|
65
|
+
*
|
|
66
|
+
* @category services
|
|
67
|
+
* @since 4.0.0
|
|
47
68
|
*/
|
|
48
|
-
export const Permissions = /*#__PURE__*/
|
|
69
|
+
export const Permissions = /*#__PURE__*/Context.Service(TypeId);
|
|
49
70
|
/**
|
|
50
|
-
*
|
|
71
|
+
* Provides the `Permissions` service using the browser `navigator.permissions` API.
|
|
72
|
+
*
|
|
73
|
+
* **When to use**
|
|
74
|
+
*
|
|
75
|
+
* Use when you need a live browser `Permissions` service backed by the ambient
|
|
76
|
+
* `navigator.permissions` implementation.
|
|
77
|
+
*
|
|
78
|
+
* **Details**
|
|
79
|
+
*
|
|
80
|
+
* `query` delegates to `navigator.permissions.query({ name })` and wraps
|
|
81
|
+
* rejected browser operations in `PermissionsError`.
|
|
51
82
|
*
|
|
52
|
-
* @
|
|
53
|
-
* @
|
|
83
|
+
* @category layers
|
|
84
|
+
* @since 4.0.0
|
|
54
85
|
*/
|
|
55
86
|
export const layer = /*#__PURE__*/Layer.succeed(Permissions, /*#__PURE__*/Permissions.of({
|
|
56
87
|
[TypeId]: TypeId,
|
package/dist/Permissions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Permissions.js","names":["Data","Effect","Layer","
|
|
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;;;;;;;;;;;AAWA,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;;;;;;;;;;;AAWA,OAAO,MAAMQ,WAAW,gBAA8ChB,OAAO,CAACiB,OAAO,CAAcb,MAAM,CAAC;AAE1G;;;;;;;;;;;;;;;;AAgBA,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":[]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,44 +1,72 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @since
|
|
2
|
+
* @since 4.0.0
|
|
3
3
|
*/
|
|
4
4
|
/**
|
|
5
5
|
* @since 1.0.0
|
|
6
6
|
*/
|
|
7
|
+
export * as BrowserCrypto from "./BrowserCrypto.ts";
|
|
8
|
+
/**
|
|
9
|
+
* @since 4.0.0
|
|
10
|
+
*/
|
|
7
11
|
export * as BrowserHttpClient from "./BrowserHttpClient.ts";
|
|
8
12
|
/**
|
|
9
|
-
* @since
|
|
13
|
+
* @since 4.0.0
|
|
10
14
|
*/
|
|
11
15
|
export * as BrowserKeyValueStore from "./BrowserKeyValueStore.ts";
|
|
12
16
|
/**
|
|
13
|
-
* @since
|
|
17
|
+
* @since 4.0.0
|
|
18
|
+
*/
|
|
19
|
+
export * as BrowserPersistence from "./BrowserPersistence.ts";
|
|
20
|
+
/**
|
|
21
|
+
* @since 4.0.0
|
|
14
22
|
*/
|
|
15
23
|
export * as BrowserRuntime from "./BrowserRuntime.ts";
|
|
16
24
|
/**
|
|
17
|
-
* @since
|
|
25
|
+
* @since 4.0.0
|
|
18
26
|
*/
|
|
19
27
|
export * as BrowserSocket from "./BrowserSocket.ts";
|
|
20
28
|
/**
|
|
21
|
-
* @since
|
|
29
|
+
* @since 4.0.0
|
|
22
30
|
*/
|
|
23
31
|
export * as BrowserStream from "./BrowserStream.ts";
|
|
24
32
|
/**
|
|
25
|
-
* @since
|
|
33
|
+
* @since 4.0.0
|
|
26
34
|
*/
|
|
27
35
|
export * as BrowserWorker from "./BrowserWorker.ts";
|
|
28
36
|
/**
|
|
29
|
-
* @since
|
|
37
|
+
* @since 4.0.0
|
|
30
38
|
*/
|
|
31
39
|
export * as BrowserWorkerRunner from "./BrowserWorkerRunner.ts";
|
|
32
40
|
/**
|
|
33
|
-
* @since
|
|
41
|
+
* @since 4.0.0
|
|
34
42
|
*/
|
|
35
43
|
export * as Clipboard from "./Clipboard.ts";
|
|
36
44
|
/**
|
|
37
|
-
* @since
|
|
45
|
+
* @since 4.0.0
|
|
38
46
|
*/
|
|
39
47
|
export * as Geolocation from "./Geolocation.ts";
|
|
40
48
|
/**
|
|
41
|
-
* @since
|
|
49
|
+
* @since 4.0.0
|
|
50
|
+
*/
|
|
51
|
+
export * as IndexedDb from "./IndexedDb.ts";
|
|
52
|
+
/**
|
|
53
|
+
* @since 4.0.0
|
|
54
|
+
*/
|
|
55
|
+
export * as IndexedDbDatabase from "./IndexedDbDatabase.ts";
|
|
56
|
+
/**
|
|
57
|
+
* @since 4.0.0
|
|
58
|
+
*/
|
|
59
|
+
export * as IndexedDbQueryBuilder from "./IndexedDbQueryBuilder.ts";
|
|
60
|
+
/**
|
|
61
|
+
* @since 4.0.0
|
|
62
|
+
*/
|
|
63
|
+
export * as IndexedDbTable from "./IndexedDbTable.ts";
|
|
64
|
+
/**
|
|
65
|
+
* @since 4.0.0
|
|
66
|
+
*/
|
|
67
|
+
export * as IndexedDbVersion from "./IndexedDbVersion.ts";
|
|
68
|
+
/**
|
|
69
|
+
* @since 4.0.0
|
|
42
70
|
*/
|
|
43
71
|
export * as Permissions from "./Permissions.ts";
|
|
44
72
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAE3D;;GAEG;AACH,OAAO,KAAK,oBAAoB,MAAM,2BAA2B,CAAA;AAEjE;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAA;AAE/D;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAE3D;;GAEG;AACH,OAAO,KAAK,oBAAoB,MAAM,2BAA2B,CAAA;AAEjE;;GAEG;AACH,OAAO,KAAK,kBAAkB,MAAM,yBAAyB,CAAA;AAE7D;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAA;AAEnD;;GAEG;AACH,OAAO,KAAK,mBAAmB,MAAM,0BAA0B,CAAA;AAE/D;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;GAEG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA;AAE3D;;GAEG;AACH,OAAO,KAAK,qBAAqB,MAAM,4BAA4B,CAAA;AAEnE;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,OAAO,KAAK,gBAAgB,MAAM,uBAAuB,CAAA;AAEzD;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,45 +1,73 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @since
|
|
2
|
+
* @since 4.0.0
|
|
3
3
|
*/
|
|
4
4
|
// @barrel: Auto-generated exports. Do not edit manually.
|
|
5
5
|
/**
|
|
6
6
|
* @since 1.0.0
|
|
7
7
|
*/
|
|
8
|
+
export * as BrowserCrypto from "./BrowserCrypto.js";
|
|
9
|
+
/**
|
|
10
|
+
* @since 4.0.0
|
|
11
|
+
*/
|
|
8
12
|
export * as BrowserHttpClient from "./BrowserHttpClient.js";
|
|
9
13
|
/**
|
|
10
|
-
* @since
|
|
14
|
+
* @since 4.0.0
|
|
11
15
|
*/
|
|
12
16
|
export * as BrowserKeyValueStore from "./BrowserKeyValueStore.js";
|
|
13
17
|
/**
|
|
14
|
-
* @since
|
|
18
|
+
* @since 4.0.0
|
|
19
|
+
*/
|
|
20
|
+
export * as BrowserPersistence from "./BrowserPersistence.js";
|
|
21
|
+
/**
|
|
22
|
+
* @since 4.0.0
|
|
15
23
|
*/
|
|
16
24
|
export * as BrowserRuntime from "./BrowserRuntime.js";
|
|
17
25
|
/**
|
|
18
|
-
* @since
|
|
26
|
+
* @since 4.0.0
|
|
19
27
|
*/
|
|
20
28
|
export * as BrowserSocket from "./BrowserSocket.js";
|
|
21
29
|
/**
|
|
22
|
-
* @since
|
|
30
|
+
* @since 4.0.0
|
|
23
31
|
*/
|
|
24
32
|
export * as BrowserStream from "./BrowserStream.js";
|
|
25
33
|
/**
|
|
26
|
-
* @since
|
|
34
|
+
* @since 4.0.0
|
|
27
35
|
*/
|
|
28
36
|
export * as BrowserWorker from "./BrowserWorker.js";
|
|
29
37
|
/**
|
|
30
|
-
* @since
|
|
38
|
+
* @since 4.0.0
|
|
31
39
|
*/
|
|
32
40
|
export * as BrowserWorkerRunner from "./BrowserWorkerRunner.js";
|
|
33
41
|
/**
|
|
34
|
-
* @since
|
|
42
|
+
* @since 4.0.0
|
|
35
43
|
*/
|
|
36
44
|
export * as Clipboard from "./Clipboard.js";
|
|
37
45
|
/**
|
|
38
|
-
* @since
|
|
46
|
+
* @since 4.0.0
|
|
39
47
|
*/
|
|
40
48
|
export * as Geolocation from "./Geolocation.js";
|
|
41
49
|
/**
|
|
42
|
-
* @since
|
|
50
|
+
* @since 4.0.0
|
|
51
|
+
*/
|
|
52
|
+
export * as IndexedDb from "./IndexedDb.js";
|
|
53
|
+
/**
|
|
54
|
+
* @since 4.0.0
|
|
55
|
+
*/
|
|
56
|
+
export * as IndexedDbDatabase from "./IndexedDbDatabase.js";
|
|
57
|
+
/**
|
|
58
|
+
* @since 4.0.0
|
|
59
|
+
*/
|
|
60
|
+
export * as IndexedDbQueryBuilder from "./IndexedDbQueryBuilder.js";
|
|
61
|
+
/**
|
|
62
|
+
* @since 4.0.0
|
|
63
|
+
*/
|
|
64
|
+
export * as IndexedDbTable from "./IndexedDbTable.js";
|
|
65
|
+
/**
|
|
66
|
+
* @since 4.0.0
|
|
67
|
+
*/
|
|
68
|
+
export * as IndexedDbVersion from "./IndexedDbVersion.js";
|
|
69
|
+
/**
|
|
70
|
+
* @since 4.0.0
|
|
43
71
|
*/
|
|
44
72
|
export * as Permissions from "./Permissions.js";
|
|
45
73
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["BrowserHttpClient","BrowserKeyValueStore","BrowserRuntime","BrowserSocket","BrowserStream","BrowserWorker","BrowserWorkerRunner","Clipboard","Geolocation","Permissions"],"sources":["../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAIA;AAEA;;;AAGA,OAAO,KAAKA,iBAAiB,MAAM,wBAAwB;AAE3D;;;AAGA,OAAO,KAAKC,oBAAoB,MAAM,2BAA2B;AAEjE;;;AAGA,OAAO,KAAKC,cAAc,MAAM,qBAAqB;AAErD;;;AAGA,OAAO,KAAKC,aAAa,MAAM,oBAAoB;AAEnD;;;AAGA,OAAO,KAAKC,aAAa,MAAM,oBAAoB;AAEnD;;;AAGA,OAAO,KAAKC,aAAa,MAAM,oBAAoB;AAEnD;;;AAGA,OAAO,KAAKC,mBAAmB,MAAM,0BAA0B;AAE/D;;;AAGA,OAAO,KAAKC,SAAS,MAAM,gBAAgB;AAE3C;;;AAGA,OAAO,KAAKC,WAAW,MAAM,kBAAkB;AAE/C;;;AAGA,OAAO,KAAKC,WAAW,MAAM,kBAAkB","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["BrowserCrypto","BrowserHttpClient","BrowserKeyValueStore","BrowserPersistence","BrowserRuntime","BrowserSocket","BrowserStream","BrowserWorker","BrowserWorkerRunner","Clipboard","Geolocation","IndexedDb","IndexedDbDatabase","IndexedDbQueryBuilder","IndexedDbTable","IndexedDbVersion","Permissions"],"sources":["../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAIA;AAEA;;;AAGA,OAAO,KAAKA,aAAa,MAAM,oBAAoB;AAEnD;;;AAGA,OAAO,KAAKC,iBAAiB,MAAM,wBAAwB;AAE3D;;;AAGA,OAAO,KAAKC,oBAAoB,MAAM,2BAA2B;AAEjE;;;AAGA,OAAO,KAAKC,kBAAkB,MAAM,yBAAyB;AAE7D;;;AAGA,OAAO,KAAKC,cAAc,MAAM,qBAAqB;AAErD;;;AAGA,OAAO,KAAKC,aAAa,MAAM,oBAAoB;AAEnD;;;AAGA,OAAO,KAAKC,aAAa,MAAM,oBAAoB;AAEnD;;;AAGA,OAAO,KAAKC,aAAa,MAAM,oBAAoB;AAEnD;;;AAGA,OAAO,KAAKC,mBAAmB,MAAM,0BAA0B;AAE/D;;;AAGA,OAAO,KAAKC,SAAS,MAAM,gBAAgB;AAE3C;;;AAGA,OAAO,KAAKC,WAAW,MAAM,kBAAkB;AAE/C;;;AAGA,OAAO,KAAKC,SAAS,MAAM,gBAAgB;AAE3C;;;AAGA,OAAO,KAAKC,iBAAiB,MAAM,wBAAwB;AAE3D;;;AAGA,OAAO,KAAKC,qBAAqB,MAAM,4BAA4B;AAEnE;;;AAGA,OAAO,KAAKC,cAAc,MAAM,qBAAqB;AAErD;;;AAGA,OAAO,KAAKC,gBAAgB,MAAM,uBAAuB;AAEzD;;;AAGA,OAAO,KAAKC,WAAW,MAAM,kBAAkB","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect/platform-browser",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "4.0.0-beta.
|
|
4
|
+
"version": "4.0.0-beta.91",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Platform specific implementations for the browser",
|
|
7
7
|
"homepage": "https://effect.website",
|
|
@@ -45,11 +45,12 @@
|
|
|
45
45
|
"provenance": true
|
|
46
46
|
},
|
|
47
47
|
"peerDependencies": {
|
|
48
|
-
"effect": "^4.0.0-beta.
|
|
48
|
+
"effect": "^4.0.0-beta.91"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"mock-xmlhttprequest": "^8.4.1",
|
|
52
|
-
"
|
|
52
|
+
"fake-indexeddb": "^6.2.5",
|
|
53
|
+
"effect": "^4.0.0-beta.91"
|
|
53
54
|
},
|
|
54
55
|
"dependencies": {
|
|
55
56
|
"multipasta": "^0.2.7"
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser-backed implementation of Effect's Crypto service.
|
|
3
|
+
*
|
|
4
|
+
* This module provides a `Crypto.Crypto` layer backed by the Web Crypto API.
|
|
5
|
+
* The {@link WebCrypto} context reference defaults to `globalThis.crypto`, so
|
|
6
|
+
* browser programs can use the standard implementation while tests or embedded
|
|
7
|
+
* runtimes can provide their own `Crypto` object.
|
|
8
|
+
*
|
|
9
|
+
* @since 1.0.0
|
|
10
|
+
*/
|
|
11
|
+
import * as Context from "effect/Context"
|
|
12
|
+
import * as EffectCrypto from "effect/Crypto"
|
|
13
|
+
import * as Effect from "effect/Effect"
|
|
14
|
+
import * as Layer from "effect/Layer"
|
|
15
|
+
import * as PlatformError from "effect/PlatformError"
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Provides Browser Web Crypto APIs used by the Crypto service implementation.
|
|
19
|
+
*
|
|
20
|
+
* **When to use**
|
|
21
|
+
*
|
|
22
|
+
* Use to override the browser `Crypto` object used by the platform crypto
|
|
23
|
+
* layer.
|
|
24
|
+
*
|
|
25
|
+
* @category references
|
|
26
|
+
* @since 1.0.0
|
|
27
|
+
*/
|
|
28
|
+
export const WebCrypto = Context.Reference<Crypto>("@effect/platform-browser/Crypto/WebCrypto", {
|
|
29
|
+
defaultValue: () => globalThis.crypto
|
|
30
|
+
})
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Layer that directly interfaces with the Web Crypto API.
|
|
34
|
+
*
|
|
35
|
+
* **When to use**
|
|
36
|
+
*
|
|
37
|
+
* Use to provide cryptographic randomness, UUID generation, and digest
|
|
38
|
+
* operations in browser runtimes backed by `globalThis.crypto`.
|
|
39
|
+
*
|
|
40
|
+
* **Details**
|
|
41
|
+
*
|
|
42
|
+
* Random bytes are produced with `crypto.getRandomValues`. Digests are computed
|
|
43
|
+
* with `crypto.subtle.digest` and returned as `Uint8Array` values.
|
|
44
|
+
*
|
|
45
|
+
* **Gotchas**
|
|
46
|
+
*
|
|
47
|
+
* The layer dies if the Web Crypto object is unavailable. Digest operations
|
|
48
|
+
* fail with `PlatformError` when `crypto.subtle.digest` is unavailable or the
|
|
49
|
+
* browser rejects the digest request.
|
|
50
|
+
*
|
|
51
|
+
* @category layers
|
|
52
|
+
* @since 1.0.0
|
|
53
|
+
*/
|
|
54
|
+
export const layer: Layer.Layer<EffectCrypto.Crypto> = Layer.effect(
|
|
55
|
+
EffectCrypto.Crypto,
|
|
56
|
+
Effect.gen(function*() {
|
|
57
|
+
const crypto = yield* WebCrypto
|
|
58
|
+
if (!crypto) {
|
|
59
|
+
return yield* Effect.die(new Error("Web Crypto API is not available"))
|
|
60
|
+
}
|
|
61
|
+
const randomBytes = (size: number): Uint8Array => {
|
|
62
|
+
const bytes = new Uint8Array(size)
|
|
63
|
+
crypto.getRandomValues(bytes)
|
|
64
|
+
return bytes
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const digest: EffectCrypto.Crypto["digest"] = (algorithm, data) => {
|
|
68
|
+
if (typeof crypto.subtle.digest !== "function") {
|
|
69
|
+
return Effect.fail(PlatformError.systemError({
|
|
70
|
+
module: "Crypto",
|
|
71
|
+
method: "digest",
|
|
72
|
+
_tag: "Unknown",
|
|
73
|
+
description: "crypto.subtle.digest is not available"
|
|
74
|
+
}))
|
|
75
|
+
}
|
|
76
|
+
return Effect.map(
|
|
77
|
+
Effect.tryPromise({
|
|
78
|
+
try: () => crypto.subtle.digest(algorithm, new Uint8Array(data)),
|
|
79
|
+
catch: (cause) =>
|
|
80
|
+
PlatformError.systemError({
|
|
81
|
+
module: "Crypto",
|
|
82
|
+
method: "digest",
|
|
83
|
+
_tag: "Unknown",
|
|
84
|
+
description: "Could not compute digest",
|
|
85
|
+
cause
|
|
86
|
+
})
|
|
87
|
+
}),
|
|
88
|
+
(buffer) => new Uint8Array(buffer)
|
|
89
|
+
)
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
return EffectCrypto.make({
|
|
93
|
+
randomBytes,
|
|
94
|
+
digest
|
|
95
|
+
})
|
|
96
|
+
})
|
|
97
|
+
)
|
package/src/BrowserHttpClient.ts
CHANGED
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Browser implementations of the Effect `HttpClient`.
|
|
3
|
+
*
|
|
4
|
+
* This module exposes HTTP client layers for code that runs in a browser. It
|
|
5
|
+
* re-exports the fetch-based `Fetch`, `RequestInit`, and `layerFetch` APIs for
|
|
6
|
+
* the common case where requests use the platform `fetch` implementation. It
|
|
7
|
+
* also provides an `XMLHttpRequest`-backed client, including controls for the
|
|
8
|
+
* XHR response type, an overridable `XMLHttpRequest` constructor service, and
|
|
9
|
+
* the `layerXMLHttpRequest` layer.
|
|
10
|
+
*
|
|
11
|
+
* @since 4.0.0
|
|
3
12
|
*/
|
|
4
13
|
import * as Cause from "effect/Cause"
|
|
14
|
+
import * as Context from "effect/Context"
|
|
5
15
|
import * as Effect from "effect/Effect"
|
|
6
16
|
import type { LazyArg } from "effect/Function"
|
|
7
17
|
import * as Inspectable from "effect/Inspectable"
|
|
8
18
|
import type * as Layer from "effect/Layer"
|
|
19
|
+
import * as Option from "effect/Option"
|
|
20
|
+
import { type Pipeable, pipeArguments } from "effect/Pipeable"
|
|
9
21
|
import * as Queue from "effect/Queue"
|
|
10
|
-
import * as
|
|
22
|
+
import type * as Schema from "effect/Schema"
|
|
11
23
|
import * as Stream from "effect/Stream"
|
|
12
24
|
import * as Cookies from "effect/unstable/http/Cookies"
|
|
13
25
|
import * as Headers from "effect/unstable/http/Headers"
|
|
@@ -25,18 +37,29 @@ import * as HeaderParser from "multipasta/HeadersParser"
|
|
|
25
37
|
|
|
26
38
|
export {
|
|
27
39
|
/**
|
|
28
|
-
*
|
|
29
|
-
*
|
|
40
|
+
* Context reference for the `fetch` implementation used by the fetch-based HTTP client.
|
|
41
|
+
*
|
|
42
|
+
* @category fetch
|
|
43
|
+
* @since 4.0.0
|
|
30
44
|
*/
|
|
31
45
|
Fetch,
|
|
32
46
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
47
|
+
* Layer that provides an `HttpClient` implementation backed by the configured `Fetch` function.
|
|
48
|
+
*
|
|
49
|
+
* @category fetch
|
|
50
|
+
* @since 4.0.0
|
|
35
51
|
*/
|
|
36
52
|
layer as layerFetch,
|
|
37
53
|
/**
|
|
38
|
-
*
|
|
39
|
-
*
|
|
54
|
+
* Service that contains default fetch options for the browser fetch client.
|
|
55
|
+
*
|
|
56
|
+
* **When to use**
|
|
57
|
+
*
|
|
58
|
+
* Use to provide default credentials, cache, redirect, integrity, or other
|
|
59
|
+
* fetch options for browser HTTP requests.
|
|
60
|
+
*
|
|
61
|
+
* @category fetch
|
|
62
|
+
* @since 4.0.0
|
|
40
63
|
*/
|
|
41
64
|
RequestInit
|
|
42
65
|
} from "effect/unstable/http/FetchHttpClient"
|
|
@@ -46,23 +69,37 @@ export {
|
|
|
46
69
|
// =============================================================================
|
|
47
70
|
|
|
48
71
|
/**
|
|
49
|
-
*
|
|
50
|
-
*
|
|
72
|
+
* Allowed response body modes for the browser XHR HTTP client.
|
|
73
|
+
*
|
|
74
|
+
* @category models
|
|
75
|
+
* @since 4.0.0
|
|
51
76
|
*/
|
|
52
77
|
export type XHRResponseType = "arraybuffer" | "text"
|
|
53
78
|
|
|
54
79
|
/**
|
|
55
|
-
*
|
|
56
|
-
*
|
|
80
|
+
* Context reference for the `XMLHttpRequest.responseType` used by the browser XHR HTTP client, defaulting to `"text"`.
|
|
81
|
+
*
|
|
82
|
+
* **When to use**
|
|
83
|
+
*
|
|
84
|
+
* Use when you need XHR-backed HTTP requests to receive response bodies as text
|
|
85
|
+
* or raw `ArrayBuffer` values.
|
|
86
|
+
*
|
|
87
|
+
* @see {@link XHRResponseType} for the allowed response body modes
|
|
88
|
+
* @see {@link withXHRArrayBuffer} for scoping XHR response handling to `ArrayBuffer`
|
|
89
|
+
*
|
|
90
|
+
* @category references
|
|
91
|
+
* @since 4.0.0
|
|
57
92
|
*/
|
|
58
|
-
export const CurrentXHRResponseType:
|
|
93
|
+
export const CurrentXHRResponseType: Context.Reference<XHRResponseType> = Context.Reference(
|
|
59
94
|
"@effect/platform-browser/BrowserHttpClient/CurrentXHRResponseType",
|
|
60
95
|
{ defaultValue: (): XHRResponseType => "text" }
|
|
61
96
|
)
|
|
62
97
|
|
|
63
98
|
/**
|
|
64
|
-
*
|
|
65
|
-
*
|
|
99
|
+
* Runs an effect with `CurrentXHRResponseType` set to `"arraybuffer"` so the XHR HTTP client receives response bodies as `ArrayBuffer` values.
|
|
100
|
+
*
|
|
101
|
+
* @category references
|
|
102
|
+
* @since 4.0.0
|
|
66
103
|
*/
|
|
67
104
|
export const withXHRArrayBuffer = <A, E, R>(
|
|
68
105
|
self: Effect.Effect<A, E, R>
|
|
@@ -74,10 +111,12 @@ export const withXHRArrayBuffer = <A, E, R>(
|
|
|
74
111
|
)
|
|
75
112
|
|
|
76
113
|
/**
|
|
77
|
-
*
|
|
78
|
-
*
|
|
114
|
+
* Service tag for the `XMLHttpRequest` constructor used by the browser XHR HTTP client.
|
|
115
|
+
*
|
|
116
|
+
* @category services
|
|
117
|
+
* @since 4.0.0
|
|
79
118
|
*/
|
|
80
|
-
export class XMLHttpRequest extends
|
|
119
|
+
export class XMLHttpRequest extends Context.Service<
|
|
81
120
|
XMLHttpRequest,
|
|
82
121
|
LazyArg<globalThis.XMLHttpRequest>
|
|
83
122
|
>()("@effect/platform-browser/BrowserHttpClient/XMLHttpRequest") {}
|
|
@@ -87,8 +126,8 @@ const makeXhrRequest = () => new globalThis.XMLHttpRequest()
|
|
|
87
126
|
const makeXmlHttpRequest = HttpClient.make(
|
|
88
127
|
(request, url, signal, fiber) =>
|
|
89
128
|
Effect.suspend(() => {
|
|
90
|
-
const xhr =
|
|
91
|
-
fiber.
|
|
129
|
+
const xhr = Context.getOrElse(
|
|
130
|
+
fiber.context,
|
|
92
131
|
XMLHttpRequest,
|
|
93
132
|
() => makeXhrRequest
|
|
94
133
|
)()
|
|
@@ -213,7 +252,7 @@ abstract class IncomingMessageImpl<E> extends Inspectable.Class implements HttpI
|
|
|
213
252
|
}
|
|
214
253
|
|
|
215
254
|
get remoteAddress() {
|
|
216
|
-
return
|
|
255
|
+
return Option.none()
|
|
217
256
|
}
|
|
218
257
|
|
|
219
258
|
_textEffect: Effect.Effect<string, E> | undefined
|
|
@@ -247,10 +286,10 @@ abstract class IncomingMessageImpl<E> extends Inspectable.Class implements HttpI
|
|
|
247
286
|
)
|
|
248
287
|
}
|
|
249
288
|
|
|
250
|
-
get json(): Effect.Effect<
|
|
289
|
+
get json(): Effect.Effect<Schema.Json, E> {
|
|
251
290
|
return Effect.flatMap(this.text, (text) =>
|
|
252
291
|
Effect.try({
|
|
253
|
-
try: () => text === "" ? null : JSON.parse(text)
|
|
292
|
+
try: () => text === "" ? null : JSON.parse(text),
|
|
254
293
|
catch: this.onError
|
|
255
294
|
}))
|
|
256
295
|
}
|
|
@@ -334,7 +373,7 @@ abstract class IncomingMessageImpl<E> extends Inspectable.Class implements HttpI
|
|
|
334
373
|
}
|
|
335
374
|
|
|
336
375
|
class ClientResponseImpl extends IncomingMessageImpl<HttpClientError.HttpClientError>
|
|
337
|
-
implements HttpClientResponse.HttpClientResponse
|
|
376
|
+
implements HttpClientResponse.HttpClientResponse, Pipeable
|
|
338
377
|
{
|
|
339
378
|
readonly [HttpClientResponse.TypeId]: typeof HttpClientResponse.TypeId
|
|
340
379
|
readonly request: HttpClientRequest.HttpClientRequest
|
|
@@ -374,12 +413,18 @@ class ClientResponseImpl extends IncomingMessageImpl<HttpClientError.HttpClientE
|
|
|
374
413
|
status: this.status
|
|
375
414
|
})
|
|
376
415
|
}
|
|
416
|
+
|
|
417
|
+
pipe() {
|
|
418
|
+
return pipeArguments(this, arguments)
|
|
419
|
+
}
|
|
377
420
|
}
|
|
378
421
|
|
|
379
422
|
/**
|
|
380
|
-
*
|
|
381
|
-
*
|
|
423
|
+
* Layer that provides an `HttpClient` implementation backed by the browser `XMLHttpRequest` API.
|
|
424
|
+
*
|
|
425
|
+
* @category layers
|
|
426
|
+
* @since 4.0.0
|
|
382
427
|
*/
|
|
383
|
-
export const layerXMLHttpRequest: Layer.Layer<HttpClient.HttpClient> = HttpClient.
|
|
428
|
+
export const layerXMLHttpRequest: Layer.Layer<HttpClient.HttpClient> = HttpClient.layerMergedContext(
|
|
384
429
|
Effect.succeed(makeXmlHttpRequest)
|
|
385
430
|
)
|