@effect/platform-browser 4.0.0-beta.5 → 4.0.0-beta.51

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 (59) hide show
  1. package/dist/BrowserHttpClient.d.ts +3 -3
  2. package/dist/BrowserHttpClient.d.ts.map +1 -1
  3. package/dist/BrowserHttpClient.js +11 -6
  4. package/dist/BrowserHttpClient.js.map +1 -1
  5. package/dist/BrowserPersistence.d.ts +17 -0
  6. package/dist/BrowserPersistence.d.ts.map +1 -0
  7. package/dist/BrowserPersistence.js +187 -0
  8. package/dist/BrowserPersistence.js.map +1 -0
  9. package/dist/BrowserWorkerRunner.js +1 -1
  10. package/dist/BrowserWorkerRunner.js.map +1 -1
  11. package/dist/Clipboard.d.ts +6 -3
  12. package/dist/Clipboard.d.ts.map +1 -1
  13. package/dist/Clipboard.js +2 -2
  14. package/dist/Clipboard.js.map +1 -1
  15. package/dist/Geolocation.d.ts +6 -6
  16. package/dist/Geolocation.d.ts.map +1 -1
  17. package/dist/Geolocation.js +2 -2
  18. package/dist/Geolocation.js.map +1 -1
  19. package/dist/IndexedDb.d.ts +50 -0
  20. package/dist/IndexedDb.d.ts.map +1 -0
  21. package/dist/IndexedDb.js +65 -0
  22. package/dist/IndexedDb.js.map +1 -0
  23. package/dist/IndexedDbDatabase.d.ts +105 -0
  24. package/dist/IndexedDbDatabase.d.ts.map +1 -0
  25. package/dist/IndexedDbDatabase.js +321 -0
  26. package/dist/IndexedDbDatabase.js.map +1 -0
  27. package/dist/IndexedDbQueryBuilder.d.ts +342 -0
  28. package/dist/IndexedDbQueryBuilder.d.ts.map +1 -0
  29. package/dist/IndexedDbQueryBuilder.js +869 -0
  30. package/dist/IndexedDbQueryBuilder.js.map +1 -0
  31. package/dist/IndexedDbTable.d.ts +109 -0
  32. package/dist/IndexedDbTable.d.ts.map +1 -0
  33. package/dist/IndexedDbTable.js +38 -0
  34. package/dist/IndexedDbTable.js.map +1 -0
  35. package/dist/IndexedDbVersion.d.ts +50 -0
  36. package/dist/IndexedDbVersion.d.ts.map +1 -0
  37. package/dist/IndexedDbVersion.js +23 -0
  38. package/dist/IndexedDbVersion.js.map +1 -0
  39. package/dist/Permissions.d.ts +8 -5
  40. package/dist/Permissions.d.ts.map +1 -1
  41. package/dist/Permissions.js +2 -2
  42. package/dist/Permissions.js.map +1 -1
  43. package/dist/index.d.ts +24 -0
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +24 -0
  46. package/dist/index.js.map +1 -1
  47. package/package.json +4 -3
  48. package/src/BrowserHttpClient.ts +17 -10
  49. package/src/BrowserPersistence.ts +306 -0
  50. package/src/BrowserWorkerRunner.ts +1 -1
  51. package/src/Clipboard.ts +2 -2
  52. package/src/Geolocation.ts +2 -2
  53. package/src/IndexedDb.ts +97 -0
  54. package/src/IndexedDbDatabase.ts +631 -0
  55. package/src/IndexedDbQueryBuilder.ts +1890 -0
  56. package/src/IndexedDbTable.ts +203 -0
  57. package/src/IndexedDbVersion.ts +89 -0
  58. package/src/Permissions.ts +2 -2
  59. package/src/index.ts +30 -0
@@ -0,0 +1,50 @@
1
+ /**
2
+ * @since 4.0.0
3
+ */
4
+ import * as Config from "effect/Config";
5
+ import * as Context from "effect/Context";
6
+ import * as Layer from "effect/Layer";
7
+ import * as Schema from "effect/Schema";
8
+ declare const TypeId = "~@effect/platform-browser/IndexedDb";
9
+ /**
10
+ * @since 4.0.0
11
+ * @category models
12
+ */
13
+ export interface IndexedDb {
14
+ readonly [TypeId]: typeof TypeId;
15
+ readonly indexedDB: globalThis.IDBFactory;
16
+ readonly IDBKeyRange: typeof globalThis.IDBKeyRange;
17
+ }
18
+ /**
19
+ * @since 4.0.0
20
+ * @category tag
21
+ */
22
+ export declare const IndexedDb: Context.Service<IndexedDb, IndexedDb>;
23
+ /**
24
+ * Schema for `IDBValidKey` (`number | string | Date | BufferSource | IDBValidKey[]`).
25
+ *
26
+ * @since 4.0.0
27
+ * @category schemas
28
+ */
29
+ export declare const IDBValidKey: Schema.Union<readonly [Schema.Union<readonly [Schema.String, Schema.Number, Schema.DateValid, Schema.declare<BufferSource, unknown>]>, Schema.$Array<Schema.Union<readonly [Schema.String, Schema.Number, Schema.DateValid, Schema.declare<BufferSource, unknown>]>>]>;
30
+ /**
31
+ * Schema for `autoIncrement` key path (`number`).
32
+ *
33
+ * @since 4.0.0
34
+ * @category schemas
35
+ */
36
+ export declare const AutoIncrement: Schema.Int;
37
+ /**
38
+ * @since 4.0.0
39
+ * @category constructor
40
+ */
41
+ export declare const make: (impl: Omit<IndexedDb, typeof TypeId>) => IndexedDb;
42
+ /**
43
+ * Instance of IndexedDb from the `window` object.
44
+ *
45
+ * @since 4.0.0
46
+ * @category constructors
47
+ */
48
+ export declare const layerWindow: Layer.Layer<IndexedDb, Config.ConfigError>;
49
+ export {};
50
+ //# sourceMappingURL=IndexedDb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexedDb.d.ts","sourceRoot":"","sources":["../src/IndexedDb.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,QAAA,MAAM,MAAM,wCAAwC,CAAA;AAEpD;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,MAAM,CAAA;IAChC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,UAAU,CAAA;IACzC,QAAQ,CAAC,WAAW,EAAE,OAAO,UAAU,CAAC,WAAW,CAAA;CACpD;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAiD,CAAA;AAc7G;;;;;GAKG;AACH,eAAO,MAAM,WAAW,wQAAuD,CAAA;AAE/E;;;;;GAKG;AACH,eAAO,MAAM,aAAa,YAMxB,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,IAAI,GAAI,MAAM,IAAI,CAAC,SAAS,EAAE,OAAO,MAAM,CAAC,KAAG,SAAwD,CAAA;AAEpH;;;;;GAKG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,CAsBlE,CAAA"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * @since 4.0.0
3
+ */
4
+ import * as Config from "effect/Config";
5
+ import * as Context from "effect/Context";
6
+ import * as Effect from "effect/Effect";
7
+ import * as Layer from "effect/Layer";
8
+ import * as Schema from "effect/Schema";
9
+ import * as SchemaIssue from "effect/SchemaIssue";
10
+ const TypeId = "~@effect/platform-browser/IndexedDb";
11
+ /**
12
+ * @since 4.0.0
13
+ * @category tag
14
+ */
15
+ export const IndexedDb = /*#__PURE__*/Context.Service(TypeId);
16
+ /** @internal */
17
+ const IDBFlatKey = /*#__PURE__*/Schema.Union([Schema.String, /*#__PURE__*/Schema.Number.check(/*#__PURE__*/Schema.makeFilter(input => !Number.isNaN(input))), Schema.DateValid, /*#__PURE__*/Schema.declare(input => input instanceof ArrayBuffer || ArrayBuffer.isView(input) && input.buffer instanceof ArrayBuffer)]);
18
+ /**
19
+ * Schema for `IDBValidKey` (`number | string | Date | BufferSource | IDBValidKey[]`).
20
+ *
21
+ * @since 4.0.0
22
+ * @category schemas
23
+ */
24
+ export const IDBValidKey = /*#__PURE__*/Schema.Union([IDBFlatKey, /*#__PURE__*/Schema.Array(IDBFlatKey)]);
25
+ /**
26
+ * Schema for `autoIncrement` key path (`number`).
27
+ *
28
+ * @since 4.0.0
29
+ * @category schemas
30
+ */
31
+ export const AutoIncrement = /*#__PURE__*/Schema.Int.check(Schema.isBetween({
32
+ minimum: 1,
33
+ maximum: 2 ** 53
34
+ })).annotate({
35
+ identifier: "AutoIncrement",
36
+ title: "autoIncrement",
37
+ description: "Defines a valid autoIncrement key path for the IndexedDb table"
38
+ });
39
+ /**
40
+ * @since 4.0.0
41
+ * @category constructor
42
+ */
43
+ export const make = impl => IndexedDb.of({
44
+ [TypeId]: TypeId,
45
+ ...impl
46
+ });
47
+ /**
48
+ * Instance of IndexedDb from the `window` object.
49
+ *
50
+ * @since 4.0.0
51
+ * @category constructors
52
+ */
53
+ export const layerWindow = /*#__PURE__*/Layer.effect(IndexedDb, /*#__PURE__*/Effect.suspend(() => {
54
+ if (window.indexedDB && window.IDBKeyRange) {
55
+ return Effect.succeed(make({
56
+ indexedDB: window.indexedDB,
57
+ IDBKeyRange: window.IDBKeyRange
58
+ }));
59
+ } else {
60
+ return Effect.fail(new Config.ConfigError(new Schema.SchemaError(new SchemaIssue.MissingKey({
61
+ messageMissingKey: "window.indexedDB is not available"
62
+ }))));
63
+ }
64
+ }));
65
+ //# sourceMappingURL=IndexedDb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexedDb.js","names":["Config","Context","Effect","Layer","Schema","SchemaIssue","TypeId","IndexedDb","Service","IDBFlatKey","Union","String","Number","check","makeFilter","input","isNaN","DateValid","declare","ArrayBuffer","isView","buffer","IDBValidKey","Array","AutoIncrement","Int","isBetween","minimum","maximum","annotate","identifier","title","description","make","impl","of","layerWindow","effect","suspend","window","indexedDB","IDBKeyRange","succeed","fail","ConfigError","SchemaError","MissingKey","messageMissingKey"],"sources":["../src/IndexedDb.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,WAAW,MAAM,oBAAoB;AAEjD,MAAMC,MAAM,GAAG,qCAAqC;AAYpD;;;;AAIA,OAAO,MAAMC,SAAS,gBAA0CN,OAAO,CAACO,OAAO,CAAuBF,MAAM,CAAC;AAE7G;AACA,MAAMG,UAAU,gBAAGL,MAAM,CAACM,KAAK,CAAC,CAC9BN,MAAM,CAACO,MAAM,eACbP,MAAM,CAACQ,MAAM,CAACC,KAAK,cAACT,MAAM,CAACU,UAAU,CAAEC,KAAK,IAAK,CAACH,MAAM,CAACI,KAAK,CAACD,KAAK,CAAC,CAAC,CAAC,EACvEX,MAAM,CAACa,SAAS,eAChBb,MAAM,CAACc,OAAO,CACXH,KAAK,IACJA,KAAK,YAAYI,WAAW,IAC3BA,WAAW,CAACC,MAAM,CAACL,KAAK,CAAC,IAAIA,KAAK,CAACM,MAAM,YAAYF,WAAY,CACrE,CACF,CAAC;AAEF;;;;;;AAMA,OAAO,MAAMG,WAAW,gBAAGlB,MAAM,CAACM,KAAK,CAAC,CAACD,UAAU,eAAEL,MAAM,CAACmB,KAAK,CAACd,UAAU,CAAC,CAAC,CAAC;AAE/E;;;;;;AAMA,OAAO,MAAMe,aAAa,gBAAGpB,MAAM,CAACqB,GAAG,CAACZ,KAAK,CAC3CT,MAAM,CAACsB,SAAS,CAAC;EAAEC,OAAO,EAAE,CAAC;EAAEC,OAAO,EAAE,CAAC,IAAI;AAAE,CAAE,CAAC,CACnD,CAACC,QAAQ,CAAC;EACTC,UAAU,EAAE,eAAe;EAC3BC,KAAK,EAAE,eAAe;EACtBC,WAAW,EAAE;CACd,CAAC;AAEF;;;;AAIA,OAAO,MAAMC,IAAI,GAAIC,IAAoC,IAAgB3B,SAAS,CAAC4B,EAAE,CAAC;EAAE,CAAC7B,MAAM,GAAGA,MAAM;EAAE,GAAG4B;AAAI,CAAE,CAAC;AAEpH;;;;;;AAMA,OAAO,MAAME,WAAW,gBAA+CjC,KAAK,CAACkC,MAAM,CACjF9B,SAAS,eACTL,MAAM,CAACoC,OAAO,CAAC,MAAK;EAClB,IAAIC,MAAM,CAACC,SAAS,IAAID,MAAM,CAACE,WAAW,EAAE;IAC1C,OAAOvC,MAAM,CAACwC,OAAO,CACnBT,IAAI,CAAC;MACHO,SAAS,EAAED,MAAM,CAACC,SAAS;MAC3BC,WAAW,EAAEF,MAAM,CAACE;KACrB,CAAC,CACH;EACH,CAAC,MAAM;IACL,OAAOvC,MAAM,CAACyC,IAAI,CAChB,IAAI3C,MAAM,CAAC4C,WAAW,CACpB,IAAIxC,MAAM,CAACyC,WAAW,CACpB,IAAIxC,WAAW,CAACyC,UAAU,CAAC;MACzBC,iBAAiB,EAAE;KACpB,CAAC,CACH,CACF,CACF;EACH;AACF,CAAC,CAAC,CACH","ignoreList":[]}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * @since 4.0.0
3
+ */
4
+ import * as Context from "effect/Context";
5
+ import * as Effect from "effect/Effect";
6
+ import * as Inspectable from "effect/Inspectable";
7
+ import * as Layer from "effect/Layer";
8
+ import * as MutableRef from "effect/MutableRef";
9
+ import * as Pipeable from "effect/Pipeable";
10
+ import * as Reactivity from "effect/unstable/reactivity/Reactivity";
11
+ import * as IndexedDb from "./IndexedDb.ts";
12
+ import * as IndexedDbQueryBuilder from "./IndexedDbQueryBuilder.ts";
13
+ import type * as IndexedDbTable from "./IndexedDbTable.ts";
14
+ import type * as IndexedDbVersion from "./IndexedDbVersion.ts";
15
+ declare const ErrorTypeId = "~@effect/platform-browser/IndexedDbDatabase/IndexedDbDatabaseError";
16
+ /**
17
+ * @since 4.0.0
18
+ * @category errors
19
+ */
20
+ export type ErrorReason = "TransactionError" | "MissingTable" | "OpenError" | "UpgradeError" | "Aborted" | "Blocked" | "MissingIndex";
21
+ declare const IndexedDbDatabaseError_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 & {
22
+ readonly _tag: "IndexedDbDatabaseError";
23
+ } & Readonly<A>;
24
+ /**
25
+ * @since 4.0.0
26
+ * @category errors
27
+ */
28
+ export declare class IndexedDbDatabaseError extends IndexedDbDatabaseError_base<{
29
+ reason: ErrorReason;
30
+ cause: unknown;
31
+ }> {
32
+ /**
33
+ * @since 4.0.0
34
+ */
35
+ readonly [ErrorTypeId]: typeof ErrorTypeId;
36
+ readonly message: ErrorReason;
37
+ }
38
+ declare const IndexedDbDatabase_base: Context.ServiceClass<IndexedDbDatabase, "~@effect/platform-browser/IndexedDbDatabase", {
39
+ readonly database: MutableRef.MutableRef<globalThis.IDBDatabase>;
40
+ readonly IDBKeyRange: typeof globalThis.IDBKeyRange;
41
+ readonly reactivity: Reactivity.Reactivity["Service"];
42
+ readonly rebuild: Effect.Effect<void, IndexedDbDatabaseError>;
43
+ }>;
44
+ /**
45
+ * @since 4.0.0
46
+ * @category models
47
+ */
48
+ export declare class IndexedDbDatabase extends IndexedDbDatabase_base {
49
+ }
50
+ /**
51
+ * @since 4.0.0
52
+ * @category models
53
+ */
54
+ export interface IndexedDbSchema<in out FromVersion extends IndexedDbVersion.AnyWithProps, in out ToVersion extends IndexedDbVersion.AnyWithProps, out Error = never> extends Pipeable.Pipeable, Inspectable.Inspectable, Effect.YieldableClass<IndexedDbQueryBuilder.IndexedDbQueryBuilder<ToVersion>, never, IndexedDbDatabase> {
55
+ new (_: never): {};
56
+ readonly previous: [FromVersion] extends [never] ? undefined : IndexedDbSchema<never, FromVersion, Error>;
57
+ readonly fromVersion: FromVersion;
58
+ readonly version: ToVersion;
59
+ readonly migrate: [FromVersion] extends [never] ? (query: Transaction<ToVersion>) => Effect.Effect<void, Error> : (fromQuery: Transaction<FromVersion>, toQuery: Transaction<ToVersion>) => Effect.Effect<void, Error>;
60
+ readonly add: <Version extends IndexedDbVersion.AnyWithProps, MigrationError>(version: Version, migrate: (fromQuery: Transaction<ToVersion>, toQuery: Transaction<Version>) => Effect.Effect<void, MigrationError>) => IndexedDbSchema<ToVersion, Version, MigrationError | Error>;
61
+ readonly getQueryBuilder: Effect.Effect<IndexedDbQueryBuilder.IndexedDbQueryBuilder<ToVersion>, never, IndexedDbDatabase>;
62
+ readonly layer: (databaseName: string) => Layer.Layer<IndexedDbDatabase, IndexedDbDatabaseError, IndexedDb.IndexedDb>;
63
+ }
64
+ /**
65
+ * @since 4.0.0
66
+ * @category models
67
+ */
68
+ export interface Transaction<Source extends IndexedDbVersion.AnyWithProps = never> extends Pipeable.Pipeable, Omit<IndexedDbQueryBuilder.IndexedDbQueryBuilder<Source>, "transaction"> {
69
+ readonly transaction: globalThis.IDBTransaction;
70
+ readonly createObjectStore: <A extends IndexedDbTable.TableName<IndexedDbVersion.Tables<Source>>>(table: A) => Effect.Effect<globalThis.IDBObjectStore, IndexedDbDatabaseError>;
71
+ readonly deleteObjectStore: <A extends IndexedDbTable.TableName<IndexedDbVersion.Tables<Source>>>(table: A) => Effect.Effect<void, IndexedDbDatabaseError>;
72
+ readonly createIndex: <Name extends IndexedDbTable.TableName<IndexedDbVersion.Tables<Source>>>(table: Name, indexName: IndexFromTableName<Source, Name>, options?: IDBIndexParameters) => Effect.Effect<globalThis.IDBIndex, IndexedDbDatabaseError>;
73
+ readonly deleteIndex: <Name extends IndexedDbTable.TableName<IndexedDbVersion.Tables<Source>>>(table: Name, indexName: IndexFromTableName<Source, Name>) => Effect.Effect<void, IndexedDbDatabaseError>;
74
+ }
75
+ /**
76
+ * @since 4.0.0
77
+ * @category models
78
+ */
79
+ export type IndexFromTable<Table extends IndexedDbTable.AnyWithProps> = IsStringLiteral<Extract<keyof IndexedDbTable.Indexes<Table>, string>> extends true ? Extract<keyof IndexedDbTable.Indexes<Table>, string> : never;
80
+ /**
81
+ * @since 4.0.0
82
+ * @category models
83
+ */
84
+ export type IndexFromTableName<Version extends IndexedDbVersion.AnyWithProps, Table extends string> = IndexFromTable<IndexedDbTable.WithName<IndexedDbVersion.Tables<Version>, Table>>;
85
+ /**
86
+ * @since 4.0.0
87
+ * @category models
88
+ */
89
+ export interface Any {
90
+ readonly previous?: Any | undefined;
91
+ readonly layer: (databaseName: string) => Layer.Layer<IndexedDbDatabase, IndexedDbDatabaseError, IndexedDb.IndexedDb>;
92
+ }
93
+ /**
94
+ * @since 4.0.0
95
+ * @category models
96
+ */
97
+ export type AnySchema = IndexedDbSchema<IndexedDbVersion.AnyWithProps, IndexedDbVersion.AnyWithProps, any>;
98
+ /**
99
+ * @since 4.0.0
100
+ * @category constructors
101
+ */
102
+ export declare const make: <InitialVersion extends IndexedDbVersion.AnyWithProps, Error>(initialVersion: InitialVersion, init: (toQuery: Transaction<InitialVersion>) => Effect.Effect<void, Error>) => IndexedDbSchema<never, InitialVersion, Error>;
103
+ type IsStringLiteral<T> = T extends string ? string extends T ? false : true : false;
104
+ export {};
105
+ //# sourceMappingURL=IndexedDbDatabase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexedDbDatabase.d.ts","sourceRoot":"","sources":["../src/IndexedDbDatabase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,321 @@
1
+ /**
2
+ * @since 4.0.0
3
+ */
4
+ import * as Context from "effect/Context";
5
+ import * as Data from "effect/Data";
6
+ import * as Effect from "effect/Effect";
7
+ import * as Fiber from "effect/Fiber";
8
+ import * as Inspectable from "effect/Inspectable";
9
+ import * as Layer from "effect/Layer";
10
+ import * as MutableRef from "effect/MutableRef";
11
+ import * as Pipeable from "effect/Pipeable";
12
+ import * as Semaphore from "effect/Semaphore";
13
+ import * as Reactivity from "effect/unstable/reactivity/Reactivity";
14
+ import * as Utils from "effect/Utils";
15
+ import * as IndexedDb from "./IndexedDb.js";
16
+ import * as IndexedDbQueryBuilder from "./IndexedDbQueryBuilder.js";
17
+ const TypeId = "~@effect/platform-browser/IndexedDbDatabase";
18
+ const ErrorTypeId = "~@effect/platform-browser/IndexedDbDatabase/IndexedDbDatabaseError";
19
+ const YieldableProto = {
20
+ [Symbol.iterator]() {
21
+ return new Utils.SingleShotGen(this);
22
+ }
23
+ };
24
+ const PipeInspectableProto = {
25
+ ...Pipeable.Prototype,
26
+ ...Inspectable.BaseProto,
27
+ toJSON() {
28
+ return {
29
+ _id: "IndexedDbDatabase"
30
+ };
31
+ }
32
+ };
33
+ const CommonProto = {
34
+ [TypeId]: {
35
+ _A: _ => _
36
+ },
37
+ ...PipeInspectableProto,
38
+ ...YieldableProto
39
+ };
40
+ /**
41
+ * @since 4.0.0
42
+ * @category errors
43
+ */
44
+ export class IndexedDbDatabaseError extends /*#__PURE__*/Data.TaggedError("IndexedDbDatabaseError") {
45
+ /**
46
+ * @since 4.0.0
47
+ */
48
+ [ErrorTypeId] = ErrorTypeId;
49
+ message = this.reason;
50
+ }
51
+ /**
52
+ * @since 4.0.0
53
+ * @category models
54
+ */
55
+ export class IndexedDbDatabase extends /*#__PURE__*/Context.Service()(TypeId) {}
56
+ /**
57
+ * @since 4.0.0
58
+ * @category constructors
59
+ */
60
+ export const make = (initialVersion, init) => function () {
61
+ // oxlint-disable-next-line typescript/no-extraneous-class
62
+ class Initial {}
63
+ Object.assign(Initial, CommonProto);
64
+ Initial.version = initialVersion;
65
+ Initial.migrate = init;
66
+ Initial._tag = "Initial";
67
+ Initial.add = (version, migrate) => makeProto({
68
+ fromVersion: initialVersion,
69
+ version,
70
+ migrate,
71
+ previous: Initial
72
+ });
73
+ Initial.getQueryBuilder = Effect.gen(function* () {
74
+ const {
75
+ IDBKeyRange,
76
+ database,
77
+ reactivity
78
+ } = yield* IndexedDbDatabase;
79
+ return IndexedDbQueryBuilder.make({
80
+ database,
81
+ IDBKeyRange,
82
+ tables: initialVersion.tables,
83
+ reactivity
84
+ });
85
+ });
86
+ Initial.asEffect = function () {
87
+ return this.getQueryBuilder;
88
+ };
89
+ Initial.layer = databaseName => layer(databaseName, Initial);
90
+ return Initial;
91
+ }();
92
+ const makeProto = options => function () {
93
+ // oxlint-disable-next-line typescript/no-extraneous-class
94
+ class Migration {}
95
+ Object.assign(Migration, CommonProto);
96
+ Migration.previous = options.previous;
97
+ Migration.fromVersion = options.fromVersion;
98
+ Migration.version = options.version;
99
+ Migration.migrate = options.migrate;
100
+ Migration._tag = "Migration";
101
+ Migration.getQueryBuilder = Effect.gen(function* () {
102
+ const {
103
+ IDBKeyRange,
104
+ database,
105
+ reactivity
106
+ } = yield* IndexedDbDatabase;
107
+ return IndexedDbQueryBuilder.make({
108
+ database,
109
+ IDBKeyRange,
110
+ tables: options.version.tables,
111
+ reactivity
112
+ });
113
+ });
114
+ Migration.asEffect = function () {
115
+ return this.getQueryBuilder;
116
+ };
117
+ Migration.layer = databaseName => layer(databaseName, Migration);
118
+ return Migration;
119
+ }();
120
+ const layer = (databaseName, migration) => Layer.effect(IndexedDbDatabase, Effect.gen(function* () {
121
+ const {
122
+ IDBKeyRange,
123
+ indexedDB
124
+ } = yield* IndexedDb.IndexedDb;
125
+ const reactivity = yield* Reactivity.Reactivity;
126
+ const context = yield* Effect.context();
127
+ const runForkWith = Effect.runForkWith(context);
128
+ let oldVersion = 0;
129
+ const migrations = [];
130
+ let current = migration;
131
+ while (current) {
132
+ migrations.unshift(current);
133
+ current = current.previous;
134
+ }
135
+ const version = migrations.length;
136
+ const database = MutableRef.make(null);
137
+ const open = Effect.callback(resume => {
138
+ const request = indexedDB.open(databaseName, version);
139
+ request.onblocked = event => {
140
+ resume(Effect.fail(new IndexedDbDatabaseError({
141
+ reason: "Blocked",
142
+ cause: event
143
+ })));
144
+ };
145
+ request.onerror = event => {
146
+ const idbRequest = event.target;
147
+ resume(Effect.fail(new IndexedDbDatabaseError({
148
+ reason: "OpenError",
149
+ cause: idbRequest.error
150
+ })));
151
+ };
152
+ let fiber;
153
+ request.onupgradeneeded = event => {
154
+ const idbRequest = event.target;
155
+ const db = idbRequest.result;
156
+ const transaction = idbRequest.transaction;
157
+ oldVersion = event.oldVersion;
158
+ MutableRef.set(database, db);
159
+ if (transaction === null) {
160
+ return resume(Effect.fail(new IndexedDbDatabaseError({
161
+ reason: "TransactionError",
162
+ cause: null
163
+ })));
164
+ }
165
+ transaction.onabort = event => {
166
+ resume(Effect.fail(new IndexedDbDatabaseError({
167
+ reason: "Aborted",
168
+ cause: event
169
+ })));
170
+ };
171
+ transaction.onerror = event => {
172
+ resume(Effect.fail(new IndexedDbDatabaseError({
173
+ reason: "TransactionError",
174
+ cause: event
175
+ })));
176
+ };
177
+ const effect = Effect.forEach(migrations.slice(oldVersion), untypedMigration => {
178
+ if (untypedMigration.previous === undefined) {
179
+ const migration = untypedMigration;
180
+ const api = makeTransactionProto({
181
+ database,
182
+ IDBKeyRange,
183
+ tables: migration.version.tables,
184
+ transaction,
185
+ reactivity
186
+ });
187
+ return migration.migrate(api);
188
+ } else if (untypedMigration.previous) {
189
+ const migration = untypedMigration;
190
+ const fromApi = makeTransactionProto({
191
+ database,
192
+ IDBKeyRange,
193
+ tables: migration.fromVersion.tables,
194
+ transaction,
195
+ reactivity
196
+ });
197
+ const toApi = makeTransactionProto({
198
+ database,
199
+ IDBKeyRange,
200
+ tables: migration.version.tables,
201
+ transaction,
202
+ reactivity
203
+ });
204
+ return migration.migrate(fromApi, toApi);
205
+ }
206
+ return Effect.die(new Error("Invalid migration"));
207
+ }, {
208
+ discard: true
209
+ }).pipe(Effect.mapError(cause => new IndexedDbDatabaseError({
210
+ reason: "UpgradeError",
211
+ cause
212
+ })), Effect.provideService(IndexedDbQueryBuilder.IndexedDbTransaction, transaction));
213
+ fiber = runForkWith(effect);
214
+ fiber.currentDispatcher.flush();
215
+ };
216
+ request.onsuccess = event => {
217
+ const idbRequest = event.target;
218
+ const db = idbRequest.result;
219
+ MutableRef.set(database, db);
220
+ if (fiber) {
221
+ // ensure migration errors are propagated
222
+ resume(Effect.asVoid(Fiber.join(fiber)));
223
+ } else {
224
+ resume(Effect.void);
225
+ }
226
+ };
227
+ });
228
+ yield* Effect.addFinalizer(() => {
229
+ database.current?.close();
230
+ return Effect.void;
231
+ });
232
+ yield* open;
233
+ const rebuildLock = Semaphore.makeUnsafe(1).withPermit;
234
+ const rebuild = Effect.callback(resume => {
235
+ database.current?.close();
236
+ const request = indexedDB.deleteDatabase(databaseName);
237
+ request.onerror = _ => {
238
+ resume(Effect.fail(new IndexedDbDatabaseError({
239
+ reason: "OpenError",
240
+ cause: request.error
241
+ })));
242
+ };
243
+ request.onsuccess = () => {
244
+ resume(Effect.void);
245
+ };
246
+ }).pipe(Effect.flatMap(() => open), rebuildLock);
247
+ return IndexedDbDatabase.of({
248
+ database,
249
+ IDBKeyRange,
250
+ rebuild,
251
+ reactivity
252
+ });
253
+ })).pipe(Layer.provide(Reactivity.layer));
254
+ const makeTransactionProto = ({
255
+ IDBKeyRange,
256
+ database,
257
+ tables,
258
+ transaction,
259
+ reactivity
260
+ }) => {
261
+ const migration = IndexedDbQueryBuilder.make({
262
+ database,
263
+ IDBKeyRange,
264
+ tables,
265
+ reactivity
266
+ });
267
+ migration.transaction = transaction;
268
+ migration.createObjectStore = Effect.fnUntraced(function* (table) {
269
+ const createTable = yield* Effect.fromNullishOr(tables.get(table)).pipe(Effect.mapError(cause => new IndexedDbDatabaseError({
270
+ reason: "MissingTable",
271
+ cause
272
+ })));
273
+ return yield* Effect.try({
274
+ try: () => database.current.createObjectStore(createTable.tableName, {
275
+ keyPath: createTable.keyPath,
276
+ autoIncrement: createTable.autoIncrement
277
+ }),
278
+ catch: cause => new IndexedDbDatabaseError({
279
+ reason: "TransactionError",
280
+ cause
281
+ })
282
+ });
283
+ });
284
+ migration.deleteObjectStore = Effect.fnUntraced(function* (table) {
285
+ const createTable = yield* Effect.fromNullishOr(tables.get(table)).pipe(Effect.mapError(cause => new IndexedDbDatabaseError({
286
+ reason: "MissingTable",
287
+ cause
288
+ })));
289
+ return yield* Effect.try({
290
+ try: () => database.current.deleteObjectStore(createTable.tableName),
291
+ catch: cause => new IndexedDbDatabaseError({
292
+ reason: "TransactionError",
293
+ cause
294
+ })
295
+ });
296
+ });
297
+ migration.createIndex = Effect.fnUntraced(function* (table, indexName, options) {
298
+ const store = transaction.objectStore(table);
299
+ const sourceTable = tables.get(table);
300
+ const keyPath = yield* Effect.fromNullishOr(sourceTable.indexes[indexName]).pipe(Effect.mapError(cause => new IndexedDbDatabaseError({
301
+ reason: "MissingIndex",
302
+ cause
303
+ })));
304
+ return yield* Effect.try({
305
+ try: () => store.createIndex(indexName, keyPath, options),
306
+ catch: cause => new IndexedDbDatabaseError({
307
+ reason: "TransactionError",
308
+ cause
309
+ })
310
+ });
311
+ });
312
+ migration.deleteIndex = (table, indexName) => Effect.try({
313
+ try: () => transaction.objectStore(table).deleteIndex(indexName),
314
+ catch: cause => new IndexedDbDatabaseError({
315
+ reason: "TransactionError",
316
+ cause
317
+ })
318
+ });
319
+ return migration;
320
+ };
321
+ //# sourceMappingURL=IndexedDbDatabase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexedDbDatabase.js","names":["Context","Data","Effect","Fiber","Inspectable","Layer","MutableRef","Pipeable","Semaphore","Reactivity","Utils","IndexedDb","IndexedDbQueryBuilder","TypeId","ErrorTypeId","YieldableProto","Symbol","iterator","SingleShotGen","PipeInspectableProto","Prototype","BaseProto","toJSON","_id","CommonProto","_A","_","IndexedDbDatabaseError","TaggedError","message","reason","IndexedDbDatabase","Service","make","initialVersion","init","Initial","Object","assign","version","migrate","_tag","add","makeProto","fromVersion","previous","getQueryBuilder","gen","IDBKeyRange","database","reactivity","tables","asEffect","layer","databaseName","options","Migration","migration","effect","indexedDB","context","runForkWith","oldVersion","migrations","current","unshift","length","open","callback","resume","request","onblocked","event","fail","cause","onerror","idbRequest","target","error","fiber","onupgradeneeded","db","result","transaction","set","onabort","forEach","slice","untypedMigration","undefined","api","makeTransactionProto","fromApi","toApi","die","Error","discard","pipe","mapError","provideService","IndexedDbTransaction","currentDispatcher","flush","onsuccess","asVoid","join","void","addFinalizer","close","rebuildLock","makeUnsafe","withPermit","rebuild","deleteDatabase","flatMap","of","provide","createObjectStore","fnUntraced","table","createTable","fromNullishOr","get","try","tableName","keyPath","autoIncrement","catch","deleteObjectStore","createIndex","indexName","store","objectStore","sourceTable","indexes","deleteIndex"],"sources":["../src/IndexedDbDatabase.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}