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.
- package/Cache/memory.d.ts +3 -2
- package/Cache/memory.d.ts.map +1 -1
- package/Cache/memory.js.map +1 -1
- package/Cache/memoryTTL.d.ts +3 -2
- package/Cache/memoryTTL.d.ts.map +1 -1
- package/Cache/memoryTTL.js.map +1 -1
- package/Cache/prelude.d.ts +8 -39
- package/Cache/prelude.d.ts.map +1 -1
- package/Cache/prelude.js +4 -4
- package/Cache/prelude.js.map +1 -1
- package/Cache.d.ts +25 -23
- package/Cache.d.ts.map +1 -1
- package/Cache.js.map +1 -1
- package/DiscordGateway/DiscordWS.d.ts +1 -1
- package/DiscordGateway/Shard.d.ts +2 -2
- package/DiscordGateway/Sharder.d.ts +2 -2
- package/DiscordGateway/WS.d.ts +1 -0
- package/DiscordGateway/WS.d.ts.map +1 -1
- package/DiscordGateway.d.ts +1 -1
- package/DiscordREST.d.ts +1 -1
- package/Interactions/context.d.ts +1 -1
- package/Interactions/definitions.d.ts +3 -3
- package/Interactions/gateway.d.ts +1 -1
- package/RateLimit.d.ts +2 -2
- package/gateway.d.ts +1 -1
- package/mjs/Cache/memory.mjs.map +1 -1
- package/mjs/Cache/memoryTTL.mjs.map +1 -1
- package/mjs/Cache/prelude.mjs +1 -1
- package/mjs/Cache/prelude.mjs.map +1 -1
- package/mjs/Cache.mjs.map +1 -1
- package/mjs/types.mjs +57 -13
- package/mjs/types.mjs.map +1 -1
- package/mjs/version.mjs +1 -1
- package/package.json +4 -4
- package/src/Cache/memory.ts +11 -2
- package/src/Cache/memoryTTL.ts +8 -3
- package/src/Cache/prelude.ts +39 -6
- package/src/Cache.ts +60 -4
- package/src/types.ts +220 -71
- package/src/version.ts +1 -1
- package/types.d.ts +159 -55
- package/types.d.ts.map +1 -1
- package/types.js +58 -14
- package/types.js.map +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
package/src/Cache/memoryTTL.ts
CHANGED
|
@@ -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>(
|
|
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>(
|
|
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>>()
|
package/src/Cache/prelude.ts
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect"
|
|
2
2
|
import * as Stream from "effect/Stream"
|
|
3
|
-
import {
|
|
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>({
|
|
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 {
|