dfx 0.66.2 → 0.66.4

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 (46) hide show
  1. package/Cache/memory.d.ts +3 -2
  2. package/Cache/memory.d.ts.map +1 -1
  3. package/Cache/memory.js.map +1 -1
  4. package/Cache/memoryTTL.d.ts +3 -2
  5. package/Cache/memoryTTL.d.ts.map +1 -1
  6. package/Cache/memoryTTL.js.map +1 -1
  7. package/Cache/prelude.d.ts +8 -39
  8. package/Cache/prelude.d.ts.map +1 -1
  9. package/Cache/prelude.js +4 -4
  10. package/Cache/prelude.js.map +1 -1
  11. package/Cache.d.ts +25 -23
  12. package/Cache.d.ts.map +1 -1
  13. package/Cache.js.map +1 -1
  14. package/DiscordGateway/DiscordWS.d.ts +1 -1
  15. package/DiscordGateway/Shard.d.ts +2 -2
  16. package/DiscordGateway/Sharder.d.ts +2 -2
  17. package/DiscordGateway/WS.d.ts +1 -0
  18. package/DiscordGateway/WS.d.ts.map +1 -1
  19. package/DiscordGateway.d.ts +1 -1
  20. package/DiscordREST.d.ts +1 -1
  21. package/Interactions/context.d.ts +1 -1
  22. package/Interactions/definitions.d.ts +3 -3
  23. package/Interactions/gateway.d.ts +1 -1
  24. package/RateLimit.d.ts +2 -2
  25. package/gateway.d.ts +1 -1
  26. package/mjs/Cache/memory.mjs.map +1 -1
  27. package/mjs/Cache/memoryTTL.mjs.map +1 -1
  28. package/mjs/Cache/prelude.mjs +1 -1
  29. package/mjs/Cache/prelude.mjs.map +1 -1
  30. package/mjs/Cache.mjs.map +1 -1
  31. package/mjs/types.mjs +57 -13
  32. package/mjs/types.mjs.map +1 -1
  33. package/mjs/version.mjs +1 -1
  34. package/package.json +4 -4
  35. package/src/Cache/memory.ts +11 -2
  36. package/src/Cache/memoryTTL.ts +8 -3
  37. package/src/Cache/prelude.ts +39 -6
  38. package/src/Cache.ts +60 -4
  39. package/src/types.ts +220 -71
  40. package/src/version.ts +1 -1
  41. package/types.d.ts +159 -55
  42. package/types.d.ts.map +1 -1
  43. package/types.js +58 -14
  44. package/types.js.map +1 -1
  45. package/version.d.ts +1 -1
  46. package/version.js +1 -1
@@ -2,6 +2,7 @@ import * as Duration from "effect/Duration"
2
2
  import * as Option from "effect/Option"
3
3
  import * as ReadonlyArray from "effect/ReadonlyArray"
4
4
  import * as Effect from "effect/Effect"
5
+ import type { CacheDriver, ParentCacheDriver } from "dfx/Cache/driver"
5
6
  import { createDriver, createParentDriver } from "dfx/Cache/driver"
6
7
 
7
8
  export interface MemoryTTLOpts {
@@ -37,7 +38,7 @@ const make = <T>({
37
38
  resolution = Duration.minutes(1),
38
39
  strategy = "usage",
39
40
  ttl,
40
- }: MemoryTTLOpts) => {
41
+ }: MemoryTTLOpts): CacheDriver<never, T> => {
41
42
  const resolutionMs = Duration.toMillis(resolution)
42
43
  const additionalMilliseconds =
43
44
  (Math.floor(Duration.toMillis(ttl) / resolutionMs) + 1) * resolutionMs
@@ -131,10 +132,14 @@ const make = <T>({
131
132
  })
132
133
  }
133
134
 
134
- export const create = <T>(opts: MemoryTTLOpts) =>
135
+ export const create = <T>(
136
+ opts: MemoryTTLOpts,
137
+ ): Effect.Effect<never, never, CacheDriver<never, T>> =>
135
138
  Effect.sync(() => make<T>(opts))
136
139
 
137
- export const createWithParent = <T>(opts: MemoryTTLOpts) =>
140
+ export const createWithParent = <T>(
141
+ opts: MemoryTTLOpts,
142
+ ): Effect.Effect<never, never, ParentCacheDriver<never, T>> =>
138
143
  Effect.sync(() => {
139
144
  const store = make<T>(opts)
140
145
  const parentIds = new Map<string, Set<string>>()
@@ -1,11 +1,15 @@
1
1
  import * as Effect from "effect/Effect"
2
2
  import * as Stream from "effect/Stream"
3
- import { DiscordREST } from "dfx"
3
+ import type { DiscordRESTError } from "dfx/DiscordREST"
4
+ import { DiscordREST } from "dfx/DiscordREST"
5
+ import type { ResponseError } from "@effect/platform/Http/ClientError"
4
6
  import type {
5
7
  CacheDriver,
6
8
  CacheOp,
7
9
  ParentCacheDriver,
8
10
  ParentCacheOp,
11
+ Cache,
12
+ ParentCache,
9
13
  } from "dfx/Cache"
10
14
  import { CacheMissError, make, makeWithParent } from "dfx/Cache"
11
15
  import { DiscordGateway } from "dfx/DiscordGateway"
@@ -31,7 +35,7 @@ export const opsWithParent = <E, T>({
31
35
  parentRemove,
32
36
  remove,
33
37
  update,
34
- }: OptsWithParentOptions<E, T>) => {
38
+ }: OptsWithParentOptions<E, T>): Stream.Stream<never, E, ParentCacheOp<T>> => {
35
39
  const fromParentOps = Stream.flatMap(fromParent, ([parentId, a]) =>
36
40
  Stream.fromIterable(
37
41
  a.map(
@@ -96,7 +100,12 @@ export interface OpsOptions<E, A> {
96
100
  remove: Stream.Stream<never, E, string>
97
101
  }
98
102
 
99
- export const ops = <E, T>({ create, id, remove, update }: OpsOptions<E, T>) => {
103
+ export const ops = <E, T>({
104
+ create,
105
+ id,
106
+ remove,
107
+ update,
108
+ }: OpsOptions<E, T>): Stream.Stream<never, E, CacheOp<T>> => {
100
109
  const createOps = Stream.map(
101
110
  create,
102
111
  (resource): CacheOp<T> => ({
@@ -128,7 +137,11 @@ export const ops = <E, T>({ create, id, remove, update }: OpsOptions<E, T>) => {
128
137
 
129
138
  export const guilds = <RM, EM, E>(
130
139
  makeDriver: Effect.Effect<RM, EM, CacheDriver<E, Discord.Guild>>,
131
- ) =>
140
+ ): Effect.Effect<
141
+ RM | DiscordGateway | DiscordREST,
142
+ EM,
143
+ Cache<never, E, ResponseError | DiscordRESTError, Discord.Guild>
144
+ > =>
132
145
  Effect.gen(function* (_) {
133
146
  const driver = yield* _(makeDriver)
134
147
  const gateway = yield* _(DiscordGateway)
@@ -155,7 +168,17 @@ export const guilds = <RM, EM, E>(
155
168
 
156
169
  export const channels = <RM, EM, E>(
157
170
  makeDriver: Effect.Effect<RM, EM, ParentCacheDriver<E, Discord.Channel>>,
158
- ) =>
171
+ ): Effect.Effect<
172
+ DiscordGateway | DiscordREST | RM,
173
+ EM,
174
+ ParentCache<
175
+ never,
176
+ E,
177
+ ResponseError | DiscordRESTError,
178
+ ResponseError | DiscordRESTError,
179
+ Discord.Channel
180
+ >
181
+ > =>
159
182
  Effect.gen(function* (_) {
160
183
  const driver = yield* _(makeDriver)
161
184
  const gateway = yield* _(DiscordGateway)
@@ -198,7 +221,17 @@ export const channels = <RM, EM, E>(
198
221
 
199
222
  export const roles = <RM, EM, E>(
200
223
  makeDriver: Effect.Effect<RM, EM, ParentCacheDriver<E, Discord.Role>>,
201
- ) =>
224
+ ): Effect.Effect<
225
+ DiscordGateway | DiscordREST | RM,
226
+ EM,
227
+ ParentCache<
228
+ never,
229
+ E,
230
+ CacheMissError,
231
+ ResponseError | DiscordRESTError,
232
+ Discord.Role
233
+ >
234
+ > =>
202
235
  Effect.gen(function* (_) {
203
236
  const driver = yield* _(makeDriver)
204
237
  const gateway = yield* _(DiscordGateway)
package/src/Cache.ts CHANGED
@@ -24,6 +24,43 @@ export type CacheOp<T> =
24
24
  | { op: "update"; resourceId: string; resource: T }
25
25
  | { op: "delete"; resourceId: string }
26
26
 
27
+ export interface ParentCache<EOps, EDriver, EMiss, EPMiss, A> {
28
+ readonly get: (
29
+ parentId: string,
30
+ id: string,
31
+ ) => Effect.Effect<never, EDriver | EMiss, A>
32
+ readonly put: (_: A) => Effect.Effect<never, EDriver | EMiss, void>
33
+ readonly update: <R, E>(
34
+ parentId: string,
35
+ id: string,
36
+ f: (_: A) => Effect.Effect<R, E, A>,
37
+ ) => Effect.Effect<R, EDriver | EMiss | E, A>
38
+ readonly getForParent: (
39
+ parentId: string,
40
+ ) => Effect.Effect<never, EDriver | EPMiss, ReadonlyMap<string, A>>
41
+ readonly run: Effect.Effect<never, EOps | EDriver, void>
42
+ readonly size: Effect.Effect<never, EDriver, number>
43
+ readonly sizeForParent: (
44
+ parentId: string,
45
+ ) => Effect.Effect<never, EDriver, number>
46
+ readonly set: (
47
+ parentId: string,
48
+ resourceId: string,
49
+ resource: A,
50
+ ) => Effect.Effect<never, EDriver, void>
51
+ readonly delete: (
52
+ parentId: string,
53
+ resourceId: string,
54
+ ) => Effect.Effect<never, EDriver, void>
55
+ readonly parentDelete: (
56
+ parentId: string,
57
+ ) => Effect.Effect<never, EDriver, void>
58
+ readonly refreshTTL: (
59
+ parentId: string,
60
+ resourceId: string,
61
+ ) => Effect.Effect<never, EDriver, void>
62
+ }
63
+
27
64
  export const makeWithParent = <EOps, EDriver, EMiss, EPMiss, A>({
28
65
  driver,
29
66
  id,
@@ -40,7 +77,7 @@ export const makeWithParent = <EOps, EDriver, EMiss, EPMiss, A>({
40
77
  onParentMiss: (
41
78
  parentId: string,
42
79
  ) => Effect.Effect<never, EPMiss, Array<[id: string, resource: A]>>
43
- }) => {
80
+ }): ParentCache<EOps, EDriver, EMiss, EPMiss, A> => {
44
81
  const sync = Stream.runDrain(
45
82
  Stream.tap(ops, (op): Effect.Effect<never, EDriver, void> => {
46
83
  switch (op.op) {
@@ -109,7 +146,26 @@ export const makeWithParent = <EOps, EDriver, EMiss, EPMiss, A>({
109
146
  concurrency: "unbounded",
110
147
  discard: true,
111
148
  }),
112
- }
149
+ } as const
150
+ }
151
+
152
+ export interface Cache<EOps, EDriver, EMiss, A> {
153
+ readonly get: (id: string) => Effect.Effect<never, EDriver | EMiss, A>
154
+ readonly put: (_: A) => Effect.Effect<never, EDriver, void>
155
+ readonly update: <R, E>(
156
+ id: string,
157
+ f: (_: A) => Effect.Effect<R, E, A>,
158
+ ) => Effect.Effect<R, EDriver | EMiss | E, A>
159
+ readonly run: Effect.Effect<never, EOps | EDriver, void>
160
+ readonly size: Effect.Effect<never, EDriver, number>
161
+ readonly set: (
162
+ resourceId: string,
163
+ resource: A,
164
+ ) => Effect.Effect<never, EDriver, void>
165
+ readonly delete: (resourceId: string) => Effect.Effect<never, EDriver, void>
166
+ readonly refreshTTL: (
167
+ resourceId: string,
168
+ ) => Effect.Effect<never, EDriver, void>
113
169
  }
114
170
 
115
171
  export const make = <EOps, EDriver, EMiss, A>({
@@ -122,7 +178,7 @@ export const make = <EOps, EDriver, EMiss, A>({
122
178
  ops?: Stream.Stream<never, EOps, CacheOp<A>>
123
179
  id: (_: A) => string
124
180
  onMiss: (id: string) => Effect.Effect<never, EMiss, A>
125
- }) => {
181
+ }): Cache<EOps, EDriver, EMiss, A> => {
126
182
  const sync = Stream.runDrain(
127
183
  Stream.tap(ops, (op): Effect.Effect<never, EDriver, void> => {
128
184
  switch (op.op) {
@@ -162,7 +218,7 @@ export const make = <EOps, EDriver, EMiss, A>({
162
218
  concurrency: "unbounded",
163
219
  discard: true,
164
220
  }),
165
- }
221
+ } as const
166
222
  }
167
223
 
168
224
  export class CacheMissError {