@effect/platform-browser 4.0.0-beta.42 → 4.0.0-beta.43

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.
@@ -0,0 +1,50 @@
1
+ /**
2
+ * @since 4.0.0
3
+ */
4
+ import * as Config from "effect/Config";
5
+ import * as Layer from "effect/Layer";
6
+ import * as Schema from "effect/Schema";
7
+ import * as ServiceMap from "effect/ServiceMap";
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: ServiceMap.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.Date, Schema.declare<BufferSource, unknown>]>, Schema.$Array<Schema.Union<readonly [Schema.String, Schema.Number, Schema.Date, 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;AAEvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAE/C,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,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAoD,CAAA;AAcnH;;;;;GAKG;AACH,eAAO,MAAM,WAAW,8PAAuD,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 Effect from "effect/Effect";
6
+ import * as Layer from "effect/Layer";
7
+ import * as Schema from "effect/Schema";
8
+ import * as SchemaIssue from "effect/SchemaIssue";
9
+ import * as ServiceMap from "effect/ServiceMap";
10
+ const TypeId = "~@effect/platform-browser/IndexedDb";
11
+ /**
12
+ * @since 4.0.0
13
+ * @category tag
14
+ */
15
+ export const IndexedDb = /*#__PURE__*/ServiceMap.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","Effect","Layer","Schema","SchemaIssue","ServiceMap","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,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,WAAW,MAAM,oBAAoB;AACjD,OAAO,KAAKC,UAAU,MAAM,mBAAmB;AAE/C,MAAMC,MAAM,GAAG,qCAAqC;AAYpD;;;;AAIA,OAAO,MAAMC,SAAS,gBAA6CF,UAAU,CAACG,OAAO,CAAuBF,MAAM,CAAC;AAEnH;AACA,MAAMG,UAAU,gBAAGN,MAAM,CAACO,KAAK,CAAC,CAC9BP,MAAM,CAACQ,MAAM,eACbR,MAAM,CAACS,MAAM,CAACC,KAAK,cAACV,MAAM,CAACW,UAAU,CAAEC,KAAK,IAAK,CAACH,MAAM,CAACI,KAAK,CAACD,KAAK,CAAC,CAAC,CAAC,EACvEZ,MAAM,CAACc,SAAS,eAChBd,MAAM,CAACe,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,gBAAGnB,MAAM,CAACO,KAAK,CAAC,CAACD,UAAU,eAAEN,MAAM,CAACoB,KAAK,CAACd,UAAU,CAAC,CAAC,CAAC;AAE/E;;;;;;AAMA,OAAO,MAAMe,aAAa,gBAAGrB,MAAM,CAACsB,GAAG,CAACZ,KAAK,CAC3CV,MAAM,CAACuB,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+ClC,KAAK,CAACmC,MAAM,CACjF9B,SAAS,eACTN,MAAM,CAACqC,OAAO,CAAC,MAAK;EAClB,IAAIC,MAAM,CAACC,SAAS,IAAID,MAAM,CAACE,WAAW,EAAE;IAC1C,OAAOxC,MAAM,CAACyC,OAAO,CACnBT,IAAI,CAAC;MACHO,SAAS,EAAED,MAAM,CAACC,SAAS;MAC3BC,WAAW,EAAEF,MAAM,CAACE;KACrB,CAAC,CACH;EACH,CAAC,MAAM;IACL,OAAOxC,MAAM,CAAC0C,IAAI,CAChB,IAAI3C,MAAM,CAAC4C,WAAW,CACpB,IAAIzC,MAAM,CAAC0C,WAAW,CACpB,IAAIzC,WAAW,CAAC0C,UAAU,CAAC;MACzBC,iBAAiB,EAAE;KACpB,CAAC,CACH,CACF,CACF;EACH;AACF,CAAC,CAAC,CACH","ignoreList":[]}
@@ -0,0 +1,100 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Inspectable from "effect/Inspectable";
3
+ import * as Layer from "effect/Layer";
4
+ import * as Pipeable from "effect/Pipeable";
5
+ import * as ServiceMap from "effect/ServiceMap";
6
+ import * as Reactivity from "effect/unstable/reactivity/Reactivity";
7
+ import * as IndexedDb from "./IndexedDb.ts";
8
+ import * as IndexedDbQueryBuilder from "./IndexedDbQueryBuilder.ts";
9
+ import type * as IndexedDbTable from "./IndexedDbTable.ts";
10
+ import type * as IndexedDbVersion from "./IndexedDbVersion.ts";
11
+ declare const ErrorTypeId = "~@effect/platform-browser/IndexedDbDatabase/IndexedDbDatabaseError";
12
+ /**
13
+ * @since 4.0.0
14
+ * @category errors
15
+ */
16
+ export type ErrorReason = "TransactionError" | "MissingTable" | "OpenError" | "UpgradeError" | "Aborted" | "Blocked" | "MissingIndex";
17
+ 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 & {
18
+ readonly _tag: "IndexedDbDatabaseError";
19
+ } & Readonly<A>;
20
+ /**
21
+ * @since 4.0.0
22
+ * @category errors
23
+ */
24
+ export declare class IndexedDbDatabaseError extends IndexedDbDatabaseError_base<{
25
+ reason: ErrorReason;
26
+ cause: unknown;
27
+ }> {
28
+ /**
29
+ * @since 4.0.0
30
+ */
31
+ readonly [ErrorTypeId]: typeof ErrorTypeId;
32
+ readonly message: ErrorReason;
33
+ }
34
+ declare const IndexedDbDatabase_base: ServiceMap.ServiceClass<IndexedDbDatabase, "~@effect/platform-browser/IndexedDbDatabase", {
35
+ readonly database: globalThis.IDBDatabase;
36
+ readonly IDBKeyRange: typeof globalThis.IDBKeyRange;
37
+ readonly reactivity: Reactivity.Reactivity["Service"];
38
+ }>;
39
+ /**
40
+ * @since 4.0.0
41
+ * @category models
42
+ */
43
+ export declare class IndexedDbDatabase extends IndexedDbDatabase_base {
44
+ }
45
+ /**
46
+ * @since 4.0.0
47
+ * @category models
48
+ */
49
+ 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> {
50
+ new (_: never): {};
51
+ readonly previous: [FromVersion] extends [never] ? undefined : IndexedDbSchema<never, FromVersion, Error>;
52
+ readonly fromVersion: FromVersion;
53
+ readonly version: ToVersion;
54
+ readonly migrate: [FromVersion] extends [never] ? (query: Transaction<ToVersion>) => Effect.Effect<void, Error> : (fromQuery: Transaction<FromVersion>, toQuery: Transaction<ToVersion>) => Effect.Effect<void, Error>;
55
+ 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>;
56
+ readonly getQueryBuilder: Effect.Effect<IndexedDbQueryBuilder.IndexedDbQueryBuilder<ToVersion>, never, IndexedDbDatabase>;
57
+ readonly layer: (databaseName: string) => Layer.Layer<IndexedDbDatabase, IndexedDbDatabaseError, IndexedDb.IndexedDb>;
58
+ }
59
+ /**
60
+ * @since 4.0.0
61
+ * @category models
62
+ */
63
+ export interface Transaction<Source extends IndexedDbVersion.AnyWithProps = never> extends Pipeable.Pipeable, Omit<IndexedDbQueryBuilder.IndexedDbQueryBuilder<Source>, "transaction"> {
64
+ readonly transaction: globalThis.IDBTransaction;
65
+ readonly createObjectStore: <A extends IndexedDbTable.TableName<IndexedDbVersion.Tables<Source>>>(table: A) => Effect.Effect<globalThis.IDBObjectStore, IndexedDbDatabaseError>;
66
+ readonly deleteObjectStore: <A extends IndexedDbTable.TableName<IndexedDbVersion.Tables<Source>>>(table: A) => Effect.Effect<void, IndexedDbDatabaseError>;
67
+ readonly createIndex: <Name extends IndexedDbTable.TableName<IndexedDbVersion.Tables<Source>>>(table: Name, indexName: IndexFromTableName<Source, Name>, options?: IDBIndexParameters) => Effect.Effect<globalThis.IDBIndex, IndexedDbDatabaseError>;
68
+ readonly deleteIndex: <Name extends IndexedDbTable.TableName<IndexedDbVersion.Tables<Source>>>(table: Name, indexName: IndexFromTableName<Source, Name>) => Effect.Effect<void, IndexedDbDatabaseError>;
69
+ }
70
+ /**
71
+ * @since 4.0.0
72
+ * @category models
73
+ */
74
+ export type IndexFromTable<Table extends IndexedDbTable.AnyWithProps> = IsStringLiteral<Extract<keyof IndexedDbTable.Indexes<Table>, string>> extends true ? Extract<keyof IndexedDbTable.Indexes<Table>, string> : never;
75
+ /**
76
+ * @since 4.0.0
77
+ * @category models
78
+ */
79
+ export type IndexFromTableName<Version extends IndexedDbVersion.AnyWithProps, Table extends string> = IndexFromTable<IndexedDbTable.WithName<IndexedDbVersion.Tables<Version>, Table>>;
80
+ /**
81
+ * @since 4.0.0
82
+ * @category models
83
+ */
84
+ export interface Any {
85
+ readonly previous?: Any | undefined;
86
+ readonly layer: (databaseName: string) => Layer.Layer<IndexedDbDatabase, IndexedDbDatabaseError, IndexedDb.IndexedDb>;
87
+ }
88
+ /**
89
+ * @since 4.0.0
90
+ * @category models
91
+ */
92
+ export type AnySchema = IndexedDbSchema<IndexedDbVersion.AnyWithProps, IndexedDbVersion.AnyWithProps, any>;
93
+ /**
94
+ * @since 4.0.0
95
+ * @category constructors
96
+ */
97
+ export declare const make: <InitialVersion extends IndexedDbVersion.AnyWithProps, Error>(initialVersion: InitialVersion, init: (toQuery: Transaction<InitialVersion>) => Effect.Effect<void, Error>) => IndexedDbSchema<never, InitialVersion, Error>;
98
+ type IsStringLiteral<T> = T extends string ? string extends T ? false : true : false;
99
+ export {};
100
+ //# 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,299 @@
1
+ /**
2
+ * @since 4.0.0
3
+ */
4
+ import * as Data from "effect/Data";
5
+ import * as Effect from "effect/Effect";
6
+ import * as Fiber from "effect/Fiber";
7
+ import * as Inspectable from "effect/Inspectable";
8
+ import * as Layer from "effect/Layer";
9
+ import * as Pipeable from "effect/Pipeable";
10
+ import * as ServiceMap from "effect/ServiceMap";
11
+ import * as Reactivity from "effect/unstable/reactivity/Reactivity";
12
+ import * as Utils from "effect/Utils";
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 YieldableProto = {
18
+ [Symbol.iterator]() {
19
+ return new Utils.SingleShotGen(this);
20
+ }
21
+ };
22
+ const PipeInspectableProto = {
23
+ ...Pipeable.Prototype,
24
+ ...Inspectable.BaseProto,
25
+ toJSON() {
26
+ return {
27
+ _id: "IndexedDbDatabase"
28
+ };
29
+ }
30
+ };
31
+ const CommonProto = {
32
+ [TypeId]: {
33
+ _A: _ => _
34
+ },
35
+ ...PipeInspectableProto,
36
+ ...YieldableProto
37
+ };
38
+ /**
39
+ * @since 4.0.0
40
+ * @category errors
41
+ */
42
+ export class IndexedDbDatabaseError extends /*#__PURE__*/Data.TaggedError("IndexedDbDatabaseError") {
43
+ /**
44
+ * @since 4.0.0
45
+ */
46
+ [ErrorTypeId] = ErrorTypeId;
47
+ message = this.reason;
48
+ }
49
+ /**
50
+ * @since 4.0.0
51
+ * @category models
52
+ */
53
+ export class IndexedDbDatabase extends /*#__PURE__*/ServiceMap.Service()(TypeId) {}
54
+ /**
55
+ * @since 4.0.0
56
+ * @category constructors
57
+ */
58
+ export const make = (initialVersion, init) => function () {
59
+ // oxlint-disable-next-line typescript/no-extraneous-class
60
+ class Initial {}
61
+ Object.assign(Initial, CommonProto);
62
+ Initial.version = initialVersion;
63
+ Initial.migrate = init;
64
+ Initial._tag = "Initial";
65
+ Initial.add = (version, migrate) => makeProto({
66
+ fromVersion: initialVersion,
67
+ version,
68
+ migrate,
69
+ previous: Initial
70
+ });
71
+ Initial.getQueryBuilder = Effect.gen(function* () {
72
+ const {
73
+ IDBKeyRange,
74
+ database,
75
+ reactivity
76
+ } = yield* IndexedDbDatabase;
77
+ return IndexedDbQueryBuilder.make({
78
+ database,
79
+ IDBKeyRange,
80
+ tables: initialVersion.tables,
81
+ transaction: undefined,
82
+ reactivity
83
+ });
84
+ });
85
+ Initial.asEffect = function () {
86
+ return this.getQueryBuilder;
87
+ };
88
+ Initial.layer = databaseName => layer(databaseName, Initial);
89
+ return Initial;
90
+ }();
91
+ const makeProto = options => function () {
92
+ // oxlint-disable-next-line typescript/no-extraneous-class
93
+ class Migration {}
94
+ Object.assign(Migration, CommonProto);
95
+ Migration.previous = options.previous;
96
+ Migration.fromVersion = options.fromVersion;
97
+ Migration.version = options.version;
98
+ Migration.migrate = options.migrate;
99
+ Migration._tag = "Migration";
100
+ Migration.getQueryBuilder = Effect.gen(function* () {
101
+ const {
102
+ IDBKeyRange,
103
+ database,
104
+ reactivity
105
+ } = yield* IndexedDbDatabase;
106
+ return IndexedDbQueryBuilder.make({
107
+ database,
108
+ IDBKeyRange,
109
+ tables: options.version.tables,
110
+ transaction: undefined,
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 serviceMap = yield* Effect.services();
127
+ const runForkWith = Effect.runForkWith(serviceMap);
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 = yield* Effect.acquireRelease(Effect.callback(resume => {
137
+ const request = indexedDB.open(databaseName, version);
138
+ request.onblocked = event => {
139
+ resume(Effect.fail(new IndexedDbDatabaseError({
140
+ reason: "Blocked",
141
+ cause: event
142
+ })));
143
+ };
144
+ request.onerror = event => {
145
+ const idbRequest = event.target;
146
+ resume(Effect.fail(new IndexedDbDatabaseError({
147
+ reason: "OpenError",
148
+ cause: idbRequest.error
149
+ })));
150
+ };
151
+ let fiber;
152
+ request.onupgradeneeded = event => {
153
+ const idbRequest = event.target;
154
+ const database = idbRequest.result;
155
+ const transaction = idbRequest.transaction;
156
+ oldVersion = event.oldVersion;
157
+ if (transaction === null) {
158
+ return resume(Effect.fail(new IndexedDbDatabaseError({
159
+ reason: "TransactionError",
160
+ cause: null
161
+ })));
162
+ }
163
+ transaction.onabort = event => {
164
+ resume(Effect.fail(new IndexedDbDatabaseError({
165
+ reason: "Aborted",
166
+ cause: event
167
+ })));
168
+ };
169
+ transaction.onerror = event => {
170
+ resume(Effect.fail(new IndexedDbDatabaseError({
171
+ reason: "TransactionError",
172
+ cause: event
173
+ })));
174
+ };
175
+ const effect = Effect.forEach(migrations.slice(oldVersion), untypedMigration => {
176
+ if (untypedMigration.previous === undefined) {
177
+ const migration = untypedMigration;
178
+ const api = makeTransactionProto({
179
+ database,
180
+ IDBKeyRange,
181
+ tables: migration.version.tables,
182
+ transaction,
183
+ reactivity
184
+ });
185
+ return migration.migrate(api);
186
+ } else if (untypedMigration.previous) {
187
+ const migration = untypedMigration;
188
+ const fromApi = makeTransactionProto({
189
+ database,
190
+ IDBKeyRange,
191
+ tables: migration.fromVersion.tables,
192
+ transaction,
193
+ reactivity
194
+ });
195
+ const toApi = makeTransactionProto({
196
+ database,
197
+ IDBKeyRange,
198
+ tables: migration.version.tables,
199
+ transaction,
200
+ reactivity
201
+ });
202
+ return migration.migrate(fromApi, toApi);
203
+ }
204
+ return Effect.die(new Error("Invalid migration"));
205
+ }, {
206
+ discard: true
207
+ }).pipe(Effect.mapError(cause => new IndexedDbDatabaseError({
208
+ reason: "UpgradeError",
209
+ cause
210
+ })));
211
+ fiber = runForkWith(effect);
212
+ fiber.currentDispatcher.flush();
213
+ };
214
+ request.onsuccess = event => {
215
+ const idbRequest = event.target;
216
+ const database = idbRequest.result;
217
+ if (fiber) {
218
+ // ensure migration errors are propagated
219
+ resume(Effect.as(Fiber.join(fiber), database));
220
+ } else {
221
+ resume(Effect.succeed(database));
222
+ }
223
+ };
224
+ }), database => Effect.sync(() => database.close()));
225
+ return IndexedDbDatabase.of({
226
+ database,
227
+ IDBKeyRange,
228
+ reactivity
229
+ });
230
+ })).pipe(Layer.provide(Reactivity.layer));
231
+ const makeTransactionProto = ({
232
+ IDBKeyRange,
233
+ database,
234
+ tables,
235
+ transaction,
236
+ reactivity
237
+ }) => {
238
+ const migration = IndexedDbQueryBuilder.make({
239
+ database,
240
+ IDBKeyRange,
241
+ tables,
242
+ transaction,
243
+ reactivity
244
+ });
245
+ migration.transaction = transaction;
246
+ migration.createObjectStore = Effect.fnUntraced(function* (table) {
247
+ const createTable = yield* Effect.fromNullishOr(tables.get(table)).pipe(Effect.mapError(cause => new IndexedDbDatabaseError({
248
+ reason: "MissingTable",
249
+ cause
250
+ })));
251
+ return yield* Effect.try({
252
+ try: () => database.createObjectStore(createTable.tableName, {
253
+ keyPath: createTable.keyPath,
254
+ autoIncrement: createTable.autoIncrement
255
+ }),
256
+ catch: cause => new IndexedDbDatabaseError({
257
+ reason: "TransactionError",
258
+ cause
259
+ })
260
+ });
261
+ });
262
+ migration.deleteObjectStore = Effect.fnUntraced(function* (table) {
263
+ const createTable = yield* Effect.fromNullishOr(tables.get(table)).pipe(Effect.mapError(cause => new IndexedDbDatabaseError({
264
+ reason: "MissingTable",
265
+ cause
266
+ })));
267
+ return yield* Effect.try({
268
+ try: () => database.deleteObjectStore(createTable.tableName),
269
+ catch: cause => new IndexedDbDatabaseError({
270
+ reason: "TransactionError",
271
+ cause
272
+ })
273
+ });
274
+ });
275
+ migration.createIndex = Effect.fnUntraced(function* (table, indexName, options) {
276
+ const store = transaction.objectStore(table);
277
+ const sourceTable = tables.get(table);
278
+ const keyPath = yield* Effect.fromNullishOr(sourceTable.indexes[indexName]).pipe(Effect.mapError(cause => new IndexedDbDatabaseError({
279
+ reason: "MissingIndex",
280
+ cause
281
+ })));
282
+ return yield* Effect.try({
283
+ try: () => store.createIndex(indexName, keyPath, options),
284
+ catch: cause => new IndexedDbDatabaseError({
285
+ reason: "TransactionError",
286
+ cause
287
+ })
288
+ });
289
+ });
290
+ migration.deleteIndex = (table, indexName) => Effect.try({
291
+ try: () => transaction.objectStore(table).deleteIndex(indexName),
292
+ catch: cause => new IndexedDbDatabaseError({
293
+ reason: "TransactionError",
294
+ cause
295
+ })
296
+ });
297
+ return migration;
298
+ };
299
+ //# sourceMappingURL=IndexedDbDatabase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexedDbDatabase.js","names":["Data","Effect","Fiber","Inspectable","Layer","Pipeable","ServiceMap","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","transaction","undefined","asEffect","layer","databaseName","options","Migration","migration","effect","indexedDB","serviceMap","services","runForkWith","oldVersion","migrations","current","unshift","length","acquireRelease","callback","resume","request","open","onblocked","event","fail","cause","onerror","idbRequest","target","error","fiber","onupgradeneeded","result","onabort","forEach","slice","untypedMigration","api","makeTransactionProto","fromApi","toApi","die","Error","discard","pipe","mapError","currentDispatcher","flush","onsuccess","as","join","succeed","sync","close","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":[]}