@effect/platform-browser 4.0.0-beta.6 → 4.0.0-beta.62

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 +184 -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 +103 -0
  24. package/dist/IndexedDbDatabase.d.ts.map +1 -0
  25. package/dist/IndexedDbDatabase.js +291 -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 +888 -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 +303 -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 +598 -0
  55. package/src/IndexedDbQueryBuilder.ts +1904 -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,103 @@
1
+ /**
2
+ * @since 4.0.0
3
+ */
4
+ import * as Context from "effect/Context";
5
+ import * as Effect from "effect/Effect";
6
+ import * as Layer from "effect/Layer";
7
+ import * as MutableRef from "effect/MutableRef";
8
+ import * as Reactivity from "effect/unstable/reactivity/Reactivity";
9
+ import * as IndexedDb from "./IndexedDb.ts";
10
+ import * as IndexedDbQueryBuilder from "./IndexedDbQueryBuilder.ts";
11
+ import type * as IndexedDbTable from "./IndexedDbTable.ts";
12
+ import type * as IndexedDbVersion from "./IndexedDbVersion.ts";
13
+ declare const ErrorTypeId = "~@effect/platform-browser/IndexedDbDatabase/IndexedDbDatabaseError";
14
+ /**
15
+ * @since 4.0.0
16
+ * @category errors
17
+ */
18
+ export type ErrorReason = "TransactionError" | "MissingTable" | "OpenError" | "UpgradeError" | "Aborted" | "Blocked" | "MissingIndex";
19
+ 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 & {
20
+ readonly _tag: "IndexedDbDatabaseError";
21
+ } & Readonly<A>;
22
+ /**
23
+ * @since 4.0.0
24
+ * @category errors
25
+ */
26
+ export declare class IndexedDbDatabaseError extends IndexedDbDatabaseError_base<{
27
+ reason: ErrorReason;
28
+ cause: unknown;
29
+ }> {
30
+ /**
31
+ * @since 4.0.0
32
+ */
33
+ readonly [ErrorTypeId]: typeof ErrorTypeId;
34
+ readonly message: ErrorReason;
35
+ }
36
+ declare const IndexedDbDatabase_base: Context.ServiceClass<IndexedDbDatabase, "~@effect/platform-browser/IndexedDbDatabase", {
37
+ readonly database: MutableRef.MutableRef<globalThis.IDBDatabase>;
38
+ readonly IDBKeyRange: typeof globalThis.IDBKeyRange;
39
+ readonly reactivity: Reactivity.Reactivity["Service"];
40
+ readonly rebuild: Effect.Effect<void, IndexedDbDatabaseError>;
41
+ }>;
42
+ /**
43
+ * @since 4.0.0
44
+ * @category models
45
+ */
46
+ export declare class IndexedDbDatabase extends IndexedDbDatabase_base {
47
+ }
48
+ /**
49
+ * @since 4.0.0
50
+ * @category models
51
+ */
52
+ export interface IndexedDbSchema<in out FromVersion extends IndexedDbVersion.AnyWithProps, in out ToVersion extends IndexedDbVersion.AnyWithProps, out Error = never> extends Effect.Effect<IndexedDbQueryBuilder.IndexedDbQueryBuilder<ToVersion>, never, IndexedDbDatabase> {
53
+ new (_: never): {};
54
+ readonly previous: [FromVersion] extends [never] ? undefined : IndexedDbSchema<never, FromVersion, Error>;
55
+ readonly fromVersion: FromVersion;
56
+ readonly version: ToVersion;
57
+ readonly migrate: [FromVersion] extends [never] ? (query: Transaction<ToVersion>) => Effect.Effect<void, Error> : (fromQuery: Transaction<FromVersion>, toQuery: Transaction<ToVersion>) => Effect.Effect<void, Error>;
58
+ 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>;
59
+ readonly getQueryBuilder: Effect.Effect<IndexedDbQueryBuilder.IndexedDbQueryBuilder<ToVersion>, never, IndexedDbDatabase>;
60
+ readonly layer: (databaseName: string) => Layer.Layer<IndexedDbDatabase, IndexedDbDatabaseError, IndexedDb.IndexedDb>;
61
+ }
62
+ /**
63
+ * @since 4.0.0
64
+ * @category models
65
+ */
66
+ export interface Transaction<Source extends IndexedDbVersion.AnyWithProps = never> extends Omit<IndexedDbQueryBuilder.IndexedDbQueryBuilder<Source>, "transaction"> {
67
+ readonly transaction: globalThis.IDBTransaction;
68
+ readonly createObjectStore: <A extends IndexedDbTable.TableName<IndexedDbVersion.Tables<Source>>>(table: A) => Effect.Effect<globalThis.IDBObjectStore, IndexedDbDatabaseError>;
69
+ readonly deleteObjectStore: <A extends IndexedDbTable.TableName<IndexedDbVersion.Tables<Source>>>(table: A) => Effect.Effect<void, IndexedDbDatabaseError>;
70
+ readonly createIndex: <Name extends IndexedDbTable.TableName<IndexedDbVersion.Tables<Source>>>(table: Name, indexName: IndexFromTableName<Source, Name>, options?: IDBIndexParameters) => Effect.Effect<globalThis.IDBIndex, IndexedDbDatabaseError>;
71
+ readonly deleteIndex: <Name extends IndexedDbTable.TableName<IndexedDbVersion.Tables<Source>>>(table: Name, indexName: IndexFromTableName<Source, Name>) => Effect.Effect<void, IndexedDbDatabaseError>;
72
+ }
73
+ /**
74
+ * @since 4.0.0
75
+ * @category models
76
+ */
77
+ export type IndexFromTable<Table extends IndexedDbTable.AnyWithProps> = IsStringLiteral<Extract<keyof IndexedDbTable.Indexes<Table>, string>> extends true ? Extract<keyof IndexedDbTable.Indexes<Table>, string> : never;
78
+ /**
79
+ * @since 4.0.0
80
+ * @category models
81
+ */
82
+ export type IndexFromTableName<Version extends IndexedDbVersion.AnyWithProps, Table extends string> = IndexFromTable<IndexedDbTable.WithName<IndexedDbVersion.Tables<Version>, Table>>;
83
+ /**
84
+ * @since 4.0.0
85
+ * @category models
86
+ */
87
+ export interface Any {
88
+ readonly previous?: Any | undefined;
89
+ readonly layer: (databaseName: string) => Layer.Layer<IndexedDbDatabase, IndexedDbDatabaseError, IndexedDb.IndexedDb>;
90
+ }
91
+ /**
92
+ * @since 4.0.0
93
+ * @category models
94
+ */
95
+ export type AnySchema = IndexedDbSchema<IndexedDbVersion.AnyWithProps, IndexedDbVersion.AnyWithProps, any>;
96
+ /**
97
+ * @since 4.0.0
98
+ * @category constructors
99
+ */
100
+ export declare const make: <InitialVersion extends IndexedDbVersion.AnyWithProps, Error>(initialVersion: InitialVersion, init: (toQuery: Transaction<InitialVersion>) => Effect.Effect<void, Error>) => IndexedDbSchema<never, InitialVersion, Error>;
101
+ type IsStringLiteral<T> = T extends string ? string extends T ? false : true : false;
102
+ export {};
103
+ //# 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,291 @@
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 Effectable from "effect/Effectable";
8
+ import * as Fiber from "effect/Fiber";
9
+ import * as Layer from "effect/Layer";
10
+ import * as MutableRef from "effect/MutableRef";
11
+ import * as Semaphore from "effect/Semaphore";
12
+ import * as Reactivity from "effect/unstable/reactivity/Reactivity";
13
+ import * as IndexedDb from "./IndexedDb.js";
14
+ import * as IndexedDbQueryBuilder from "./IndexedDbQueryBuilder.js";
15
+ const TypeId = "~@effect/platform-browser/IndexedDbDatabase";
16
+ const ErrorTypeId = "~@effect/platform-browser/IndexedDbDatabase/IndexedDbDatabaseError";
17
+ const SchemaProto = {
18
+ [TypeId]: {
19
+ _A: _ => _
20
+ },
21
+ ... /*#__PURE__*/Effectable.Prototype({
22
+ label: "IndexedDbSchema",
23
+ evaluate() {
24
+ return this.getQueryBuilder;
25
+ }
26
+ }),
27
+ get getQueryBuilder() {
28
+ const self = this;
29
+ return IndexedDbDatabase.useSync(({
30
+ database,
31
+ IDBKeyRange,
32
+ reactivity
33
+ }) => IndexedDbQueryBuilder.make({
34
+ database,
35
+ IDBKeyRange,
36
+ tables: self.version.tables,
37
+ reactivity
38
+ }));
39
+ },
40
+ add(version, migrate) {
41
+ return makeMigration({
42
+ fromVersion: this.version,
43
+ version,
44
+ migrate,
45
+ previous: this
46
+ });
47
+ },
48
+ layer(databaseName) {
49
+ return layer(databaseName, this);
50
+ }
51
+ };
52
+ /**
53
+ * @since 4.0.0
54
+ * @category errors
55
+ */
56
+ export class IndexedDbDatabaseError extends /*#__PURE__*/Data.TaggedError("IndexedDbDatabaseError") {
57
+ /**
58
+ * @since 4.0.0
59
+ */
60
+ [ErrorTypeId] = ErrorTypeId;
61
+ message = this.reason;
62
+ }
63
+ /**
64
+ * @since 4.0.0
65
+ * @category models
66
+ */
67
+ export class IndexedDbDatabase extends /*#__PURE__*/Context.Service()(TypeId) {}
68
+ /**
69
+ * @since 4.0.0
70
+ * @category constructors
71
+ */
72
+ export const make = (initialVersion, init) => {
73
+ // oxlint-disable-next-line typescript/no-extraneous-class
74
+ function Initial() {}
75
+ Object.setPrototypeOf(Initial, SchemaProto);
76
+ Initial.version = initialVersion;
77
+ Initial.migrate = init;
78
+ return Initial;
79
+ };
80
+ const makeMigration = options => {
81
+ // oxlint-disable-next-line typescript/no-extraneous-class
82
+ function Migration() {}
83
+ Object.setPrototypeOf(Migration, SchemaProto);
84
+ Migration.previous = options.previous;
85
+ Migration.fromVersion = options.fromVersion;
86
+ Migration.version = options.version;
87
+ Migration.migrate = options.migrate;
88
+ return Migration;
89
+ };
90
+ const layer = (databaseName, migration) => Layer.effect(IndexedDbDatabase, Effect.gen(function* () {
91
+ const {
92
+ IDBKeyRange,
93
+ indexedDB
94
+ } = yield* IndexedDb.IndexedDb;
95
+ const reactivity = yield* Reactivity.Reactivity;
96
+ const context = yield* Effect.context();
97
+ const runForkWith = Effect.runForkWith(context);
98
+ let oldVersion = 0;
99
+ const migrations = [];
100
+ let current = migration;
101
+ while (current) {
102
+ migrations.unshift(current);
103
+ current = current.previous;
104
+ }
105
+ const version = migrations.length;
106
+ const database = MutableRef.make(null);
107
+ const open = Effect.callback(resume => {
108
+ const request = indexedDB.open(databaseName, version);
109
+ request.onblocked = event => {
110
+ resume(Effect.fail(new IndexedDbDatabaseError({
111
+ reason: "Blocked",
112
+ cause: event
113
+ })));
114
+ };
115
+ request.onerror = event => {
116
+ const idbRequest = event.target;
117
+ resume(Effect.fail(new IndexedDbDatabaseError({
118
+ reason: "OpenError",
119
+ cause: idbRequest.error
120
+ })));
121
+ };
122
+ let fiber;
123
+ request.onupgradeneeded = event => {
124
+ const idbRequest = event.target;
125
+ const db = idbRequest.result;
126
+ const transaction = idbRequest.transaction;
127
+ oldVersion = event.oldVersion;
128
+ MutableRef.set(database, db);
129
+ if (transaction === null) {
130
+ return resume(Effect.fail(new IndexedDbDatabaseError({
131
+ reason: "TransactionError",
132
+ cause: null
133
+ })));
134
+ }
135
+ transaction.onabort = event => {
136
+ resume(Effect.fail(new IndexedDbDatabaseError({
137
+ reason: "Aborted",
138
+ cause: event
139
+ })));
140
+ };
141
+ transaction.onerror = event => {
142
+ resume(Effect.fail(new IndexedDbDatabaseError({
143
+ reason: "TransactionError",
144
+ cause: event
145
+ })));
146
+ };
147
+ const effect = Effect.forEach(migrations.slice(oldVersion), untypedMigration => {
148
+ if (untypedMigration.previous === undefined) {
149
+ const migration = untypedMigration;
150
+ const api = makeTransactionProto({
151
+ database,
152
+ IDBKeyRange,
153
+ tables: migration.version.tables,
154
+ transaction,
155
+ reactivity
156
+ });
157
+ return migration.migrate(api);
158
+ } else if (untypedMigration.previous) {
159
+ const migration = untypedMigration;
160
+ const fromApi = makeTransactionProto({
161
+ database,
162
+ IDBKeyRange,
163
+ tables: migration.fromVersion.tables,
164
+ transaction,
165
+ reactivity
166
+ });
167
+ const toApi = makeTransactionProto({
168
+ database,
169
+ IDBKeyRange,
170
+ tables: migration.version.tables,
171
+ transaction,
172
+ reactivity
173
+ });
174
+ return migration.migrate(fromApi, toApi);
175
+ }
176
+ return Effect.die(new Error("Invalid migration"));
177
+ }, {
178
+ discard: true
179
+ }).pipe(Effect.mapError(cause => new IndexedDbDatabaseError({
180
+ reason: "UpgradeError",
181
+ cause
182
+ })), Effect.provideService(IndexedDbQueryBuilder.IndexedDbTransaction, transaction));
183
+ fiber = runForkWith(effect);
184
+ fiber.currentDispatcher.flush();
185
+ };
186
+ request.onsuccess = event => {
187
+ const idbRequest = event.target;
188
+ const db = idbRequest.result;
189
+ MutableRef.set(database, db);
190
+ if (fiber) {
191
+ // ensure migration errors are propagated
192
+ resume(Effect.asVoid(Fiber.join(fiber)));
193
+ } else {
194
+ resume(Effect.void);
195
+ }
196
+ };
197
+ });
198
+ yield* Effect.addFinalizer(() => {
199
+ database.current?.close();
200
+ return Effect.void;
201
+ });
202
+ yield* open;
203
+ const rebuildLock = Semaphore.makeUnsafe(1).withPermit;
204
+ const rebuild = Effect.callback(resume => {
205
+ database.current?.close();
206
+ const request = indexedDB.deleteDatabase(databaseName);
207
+ request.onerror = _ => {
208
+ resume(Effect.fail(new IndexedDbDatabaseError({
209
+ reason: "OpenError",
210
+ cause: request.error
211
+ })));
212
+ };
213
+ request.onsuccess = () => {
214
+ resume(Effect.void);
215
+ };
216
+ }).pipe(Effect.flatMap(() => open), rebuildLock);
217
+ return IndexedDbDatabase.of({
218
+ database,
219
+ IDBKeyRange,
220
+ rebuild,
221
+ reactivity
222
+ });
223
+ })).pipe(Layer.provide(Reactivity.layer));
224
+ const makeTransactionProto = ({
225
+ IDBKeyRange,
226
+ database,
227
+ tables,
228
+ transaction,
229
+ reactivity
230
+ }) => {
231
+ const migration = IndexedDbQueryBuilder.make({
232
+ database,
233
+ IDBKeyRange,
234
+ tables,
235
+ reactivity
236
+ });
237
+ migration.transaction = transaction;
238
+ migration.createObjectStore = Effect.fnUntraced(function* (table) {
239
+ const createTable = yield* Effect.fromNullishOr(tables.get(table)).pipe(Effect.mapError(cause => new IndexedDbDatabaseError({
240
+ reason: "MissingTable",
241
+ cause
242
+ })));
243
+ return yield* Effect.try({
244
+ try: () => database.current.createObjectStore(createTable.tableName, {
245
+ keyPath: createTable.keyPath,
246
+ autoIncrement: createTable.autoIncrement
247
+ }),
248
+ catch: cause => new IndexedDbDatabaseError({
249
+ reason: "TransactionError",
250
+ cause
251
+ })
252
+ });
253
+ });
254
+ migration.deleteObjectStore = Effect.fnUntraced(function* (table) {
255
+ const createTable = yield* Effect.fromNullishOr(tables.get(table)).pipe(Effect.mapError(cause => new IndexedDbDatabaseError({
256
+ reason: "MissingTable",
257
+ cause
258
+ })));
259
+ return yield* Effect.try({
260
+ try: () => database.current.deleteObjectStore(createTable.tableName),
261
+ catch: cause => new IndexedDbDatabaseError({
262
+ reason: "TransactionError",
263
+ cause
264
+ })
265
+ });
266
+ });
267
+ migration.createIndex = Effect.fnUntraced(function* (table, indexName, options) {
268
+ const store = transaction.objectStore(table);
269
+ const sourceTable = tables.get(table);
270
+ const keyPath = yield* Effect.fromNullishOr(sourceTable.indexes[indexName]).pipe(Effect.mapError(cause => new IndexedDbDatabaseError({
271
+ reason: "MissingIndex",
272
+ cause
273
+ })));
274
+ return yield* Effect.try({
275
+ try: () => store.createIndex(indexName, keyPath, options),
276
+ catch: cause => new IndexedDbDatabaseError({
277
+ reason: "TransactionError",
278
+ cause
279
+ })
280
+ });
281
+ });
282
+ migration.deleteIndex = (table, indexName) => Effect.try({
283
+ try: () => transaction.objectStore(table).deleteIndex(indexName),
284
+ catch: cause => new IndexedDbDatabaseError({
285
+ reason: "TransactionError",
286
+ cause
287
+ })
288
+ });
289
+ return migration;
290
+ };
291
+ //# sourceMappingURL=IndexedDbDatabase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexedDbDatabase.js","names":["Context","Data","Effect","Effectable","Fiber","Layer","MutableRef","Semaphore","Reactivity","IndexedDb","IndexedDbQueryBuilder","TypeId","ErrorTypeId","SchemaProto","_A","_","Prototype","label","evaluate","getQueryBuilder","self","IndexedDbDatabase","useSync","database","IDBKeyRange","reactivity","make","tables","version","add","migrate","makeMigration","fromVersion","previous","layer","databaseName","IndexedDbDatabaseError","TaggedError","message","reason","Service","initialVersion","init","Initial","Object","setPrototypeOf","options","Migration","migration","effect","gen","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":[]}