@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.
- package/dist/IndexedDb.d.ts +50 -0
- package/dist/IndexedDb.d.ts.map +1 -0
- package/dist/IndexedDb.js +65 -0
- package/dist/IndexedDb.js.map +1 -0
- package/dist/IndexedDbDatabase.d.ts +100 -0
- package/dist/IndexedDbDatabase.d.ts.map +1 -0
- package/dist/IndexedDbDatabase.js +299 -0
- package/dist/IndexedDbDatabase.js.map +1 -0
- package/dist/IndexedDbQueryBuilder.d.ts +284 -0
- package/dist/IndexedDbQueryBuilder.d.ts.map +1 -0
- package/dist/IndexedDbQueryBuilder.js +862 -0
- package/dist/IndexedDbQueryBuilder.js.map +1 -0
- package/dist/IndexedDbTable.d.ts +110 -0
- package/dist/IndexedDbTable.d.ts.map +1 -0
- package/dist/IndexedDbTable.js +36 -0
- package/dist/IndexedDbTable.js.map +1 -0
- package/dist/IndexedDbVersion.d.ts +50 -0
- package/dist/IndexedDbVersion.d.ts.map +1 -0
- package/dist/IndexedDbVersion.js +23 -0
- package/dist/IndexedDbVersion.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -1
- package/package.json +4 -3
- package/src/IndexedDb.ts +97 -0
- package/src/IndexedDbDatabase.ts +598 -0
- package/src/IndexedDbQueryBuilder.ts +1895 -0
- package/src/IndexedDbTable.ts +205 -0
- package/src/IndexedDbVersion.ts +89 -0
- package/src/index.ts +25 -0
|
@@ -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":[]}
|