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

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 (54) hide show
  1. package/dist/BrowserHttpClient.d.ts +3 -3
  2. package/dist/BrowserHttpClient.d.ts.map +1 -1
  3. package/dist/BrowserHttpClient.js +5 -5
  4. package/dist/BrowserHttpClient.js.map +1 -1
  5. package/dist/BrowserWorkerRunner.js +1 -1
  6. package/dist/BrowserWorkerRunner.js.map +1 -1
  7. package/dist/Clipboard.d.ts +5 -2
  8. package/dist/Clipboard.d.ts.map +1 -1
  9. package/dist/Clipboard.js +2 -2
  10. package/dist/Clipboard.js.map +1 -1
  11. package/dist/Geolocation.d.ts +2 -2
  12. package/dist/Geolocation.d.ts.map +1 -1
  13. package/dist/Geolocation.js +2 -2
  14. package/dist/Geolocation.js.map +1 -1
  15. package/dist/IndexedDb.d.ts +50 -0
  16. package/dist/IndexedDb.d.ts.map +1 -0
  17. package/dist/IndexedDb.js +65 -0
  18. package/dist/IndexedDb.js.map +1 -0
  19. package/dist/IndexedDbDatabase.d.ts +105 -0
  20. package/dist/IndexedDbDatabase.d.ts.map +1 -0
  21. package/dist/IndexedDbDatabase.js +321 -0
  22. package/dist/IndexedDbDatabase.js.map +1 -0
  23. package/dist/IndexedDbQueryBuilder.d.ts +342 -0
  24. package/dist/IndexedDbQueryBuilder.d.ts.map +1 -0
  25. package/dist/IndexedDbQueryBuilder.js +869 -0
  26. package/dist/IndexedDbQueryBuilder.js.map +1 -0
  27. package/dist/IndexedDbTable.d.ts +109 -0
  28. package/dist/IndexedDbTable.d.ts.map +1 -0
  29. package/dist/IndexedDbTable.js +38 -0
  30. package/dist/IndexedDbTable.js.map +1 -0
  31. package/dist/IndexedDbVersion.d.ts +50 -0
  32. package/dist/IndexedDbVersion.d.ts.map +1 -0
  33. package/dist/IndexedDbVersion.js +23 -0
  34. package/dist/IndexedDbVersion.js.map +1 -0
  35. package/dist/Permissions.d.ts +5 -2
  36. package/dist/Permissions.d.ts.map +1 -1
  37. package/dist/Permissions.js +2 -2
  38. package/dist/Permissions.js.map +1 -1
  39. package/dist/index.d.ts +20 -0
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +20 -0
  42. package/dist/index.js.map +1 -1
  43. package/package.json +4 -3
  44. package/src/BrowserHttpClient.ts +6 -6
  45. package/src/BrowserWorkerRunner.ts +1 -1
  46. package/src/Clipboard.ts +2 -2
  47. package/src/Geolocation.ts +2 -2
  48. package/src/IndexedDb.ts +97 -0
  49. package/src/IndexedDbDatabase.ts +631 -0
  50. package/src/IndexedDbQueryBuilder.ts +1890 -0
  51. package/src/IndexedDbTable.ts +203 -0
  52. package/src/IndexedDbVersion.ts +89 -0
  53. package/src/Permissions.ts +2 -2
  54. package/src/index.ts +25 -0
@@ -0,0 +1,97 @@
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
+
11
+ const TypeId = "~@effect/platform-browser/IndexedDb"
12
+
13
+ /**
14
+ * @since 4.0.0
15
+ * @category models
16
+ */
17
+ export interface IndexedDb {
18
+ readonly [TypeId]: typeof TypeId
19
+ readonly indexedDB: globalThis.IDBFactory
20
+ readonly IDBKeyRange: typeof globalThis.IDBKeyRange
21
+ }
22
+
23
+ /**
24
+ * @since 4.0.0
25
+ * @category tag
26
+ */
27
+ export const IndexedDb: Context.Service<IndexedDb, IndexedDb> = Context.Service<IndexedDb, IndexedDb>(TypeId)
28
+
29
+ /** @internal */
30
+ const IDBFlatKey = Schema.Union([
31
+ Schema.String,
32
+ Schema.Number.check(Schema.makeFilter((input) => !Number.isNaN(input))),
33
+ Schema.DateValid,
34
+ Schema.declare(
35
+ (input): input is BufferSource =>
36
+ input instanceof ArrayBuffer ||
37
+ (ArrayBuffer.isView(input) && input.buffer instanceof ArrayBuffer)
38
+ )
39
+ ])
40
+
41
+ /**
42
+ * Schema for `IDBValidKey` (`number | string | Date | BufferSource | IDBValidKey[]`).
43
+ *
44
+ * @since 4.0.0
45
+ * @category schemas
46
+ */
47
+ export const IDBValidKey = Schema.Union([IDBFlatKey, Schema.Array(IDBFlatKey)])
48
+
49
+ /**
50
+ * Schema for `autoIncrement` key path (`number`).
51
+ *
52
+ * @since 4.0.0
53
+ * @category schemas
54
+ */
55
+ export const AutoIncrement = Schema.Int.check(
56
+ Schema.isBetween({ minimum: 1, maximum: 2 ** 53 })
57
+ ).annotate({
58
+ identifier: "AutoIncrement",
59
+ title: "autoIncrement",
60
+ description: "Defines a valid autoIncrement key path for the IndexedDb table"
61
+ })
62
+
63
+ /**
64
+ * @since 4.0.0
65
+ * @category constructor
66
+ */
67
+ export const make = (impl: Omit<IndexedDb, typeof TypeId>): IndexedDb => IndexedDb.of({ [TypeId]: TypeId, ...impl })
68
+
69
+ /**
70
+ * Instance of IndexedDb from the `window` object.
71
+ *
72
+ * @since 4.0.0
73
+ * @category constructors
74
+ */
75
+ export const layerWindow: Layer.Layer<IndexedDb, Config.ConfigError> = Layer.effect(
76
+ IndexedDb,
77
+ Effect.suspend(() => {
78
+ if (window.indexedDB && window.IDBKeyRange) {
79
+ return Effect.succeed(
80
+ make({
81
+ indexedDB: window.indexedDB,
82
+ IDBKeyRange: window.IDBKeyRange
83
+ })
84
+ )
85
+ } else {
86
+ return Effect.fail(
87
+ new Config.ConfigError(
88
+ new Schema.SchemaError(
89
+ new SchemaIssue.MissingKey({
90
+ messageMissingKey: "window.indexedDB is not available"
91
+ })
92
+ )
93
+ )
94
+ )
95
+ }
96
+ })
97
+ )