@pomade/core 0.0.4 → 0.0.5

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/signer.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import type { GroupPackage, SharePackage } from "@frostr/bifrost";
2
2
  import type { TrustedEvent, SignedEvent } from "@welshman/util";
3
- import { IStorageFactory, IStorage } from "./storage.js";
4
- import { Method, AuthPayload } from "./schema.js";
3
+ import { Method, Auth } from "./schema.js";
5
4
  import { RPC, WithEvent } from "./rpc.js";
5
+ import { IStorage, ICollection } from "./storage.js";
6
6
  import { ChallengeRequest, EcdhRequest, LoginSelect, LoginStart, RecoverySetup, RecoverySelect, RecoveryStart, RegisterRequest, SessionDelete, SessionList, SignRequest } from "./message.js";
7
7
  export type SignerSession = {
8
8
  client: string;
@@ -15,6 +15,9 @@ export type SignerSession = {
15
15
  email_hash?: string;
16
16
  password_hash?: string;
17
17
  };
18
+ export type SignerSessionIndex = {
19
+ clients: string[];
20
+ };
18
21
  export type SignerRecoverOption = {
19
22
  otp: string;
20
23
  client: string;
@@ -30,7 +33,6 @@ export type SignerLogin = {
30
33
  };
31
34
  export type SignerChallenge = {
32
35
  event: TrustedEvent;
33
- email: string;
34
36
  otp: string;
35
37
  };
36
38
  export type ChallengePayload = {
@@ -40,23 +42,22 @@ export type ChallengePayload = {
40
42
  export type SignerOptions = {
41
43
  secret: string;
42
44
  relays: string[];
43
- storage: IStorageFactory;
45
+ storage: IStorage;
44
46
  sendChallenge: (payload: ChallengePayload) => Promise<void>;
45
47
  };
46
48
  export declare class Signer {
47
49
  private options;
48
50
  rpc: RPC;
49
51
  pubkey: string;
50
- sessions: IStorage<SignerSession>;
51
- recoveries: IStorage<SignerRecovery>;
52
- logins: IStorage<SignerLogin>;
53
- challenges: IStorage<SignerChallenge>;
54
52
  intervals: number[];
53
+ logins: ICollection<SignerLogin>;
54
+ sessions: ICollection<SignerSession>;
55
+ recoveries: ICollection<SignerRecovery>;
56
+ challenges: ICollection<SignerChallenge>;
57
+ sessionsByEmailHash: ICollection<SignerSessionIndex>;
55
58
  constructor(options: SignerOptions);
56
59
  stop(): void;
57
- _getAuthenticatedSessionsByPassword(password_hash: string): AsyncGenerator<SignerSession>;
58
- _getAuthenticatedSessionsByOTP(email: string, otp: string): AsyncGenerator<SignerSession>;
59
- _getAuthenticatedSessions(auth: AuthPayload): Promise<SignerSession[]>;
60
+ _getAuthenticatedSessions(auth: Auth): Promise<SignerSession[]>;
60
61
  _isNip98AuthValid(auth: SignedEvent, method: Method): boolean;
61
62
  _checkKeyReuse(event: TrustedEvent): Promise<{
62
63
  abort: () => void;
@@ -73,36 +74,8 @@ export declare class Signer {
73
74
  ok: Promise<boolean>;
74
75
  receive: <T>(handler: import("./rpc.js").MessageHandlerWithCallback<T>) => Promise<import("@welshman/lib").Maybe<T>>;
75
76
  } | undefined>;
76
- handleRegisterRequest({ payload, event }: WithEvent<RegisterRequest>): Promise<{
77
- abort: () => void;
78
- event: {
79
- sig: string;
80
- tags: string[][];
81
- content: string;
82
- kind: number;
83
- created_at: number;
84
- pubkey: string;
85
- id: string;
86
- };
87
- res: Promise<import("@welshman/net").PublishResultsByRelay>;
88
- ok: Promise<boolean>;
89
- receive: <T>(handler: import("./rpc.js").MessageHandlerWithCallback<T>) => Promise<import("@welshman/lib").Maybe<T>>;
90
- } | undefined>;
91
- handleRecoverySetup({ payload, event }: WithEvent<RecoverySetup>): Promise<{
92
- abort: () => void;
93
- event: {
94
- sig: string;
95
- tags: string[][];
96
- content: string;
97
- kind: number;
98
- created_at: number;
99
- pubkey: string;
100
- id: string;
101
- };
102
- res: Promise<import("@welshman/net").PublishResultsByRelay>;
103
- ok: Promise<boolean>;
104
- receive: <T>(handler: import("./rpc.js").MessageHandlerWithCallback<T>) => Promise<import("@welshman/lib").Maybe<T>>;
105
- } | undefined>;
77
+ handleRegisterRequest({ payload, event }: WithEvent<RegisterRequest>): Promise<unknown>;
78
+ handleRecoverySetup({ payload, event }: WithEvent<RecoverySetup>): Promise<unknown>;
106
79
  handleChallengeRequest({ payload, event }: WithEvent<ChallengeRequest>): Promise<void>;
107
80
  handleRecoveryStart({ payload, event }: WithEvent<RecoveryStart>): Promise<{
108
81
  abort: () => void;
@@ -164,36 +137,8 @@ export declare class Signer {
164
137
  ok: Promise<boolean>;
165
138
  receive: <T>(handler: import("./rpc.js").MessageHandlerWithCallback<T>) => Promise<import("@welshman/lib").Maybe<T>>;
166
139
  } | undefined>;
167
- handleSignRequest({ payload, event }: WithEvent<SignRequest>): Promise<{
168
- abort: () => void;
169
- event: {
170
- sig: string;
171
- tags: string[][];
172
- content: string;
173
- kind: number;
174
- created_at: number;
175
- pubkey: string;
176
- id: string;
177
- };
178
- res: Promise<import("@welshman/net").PublishResultsByRelay>;
179
- ok: Promise<boolean>;
180
- receive: <T>(handler: import("./rpc.js").MessageHandlerWithCallback<T>) => Promise<import("@welshman/lib").Maybe<T>>;
181
- } | undefined>;
182
- handleEcdhRequest({ payload, event }: WithEvent<EcdhRequest>): Promise<{
183
- abort: () => void;
184
- event: {
185
- sig: string;
186
- tags: string[][];
187
- content: string;
188
- kind: number;
189
- created_at: number;
190
- pubkey: string;
191
- id: string;
192
- };
193
- res: Promise<import("@welshman/net").PublishResultsByRelay>;
194
- ok: Promise<boolean>;
195
- receive: <T>(handler: import("./rpc.js").MessageHandlerWithCallback<T>) => Promise<import("@welshman/lib").Maybe<T>>;
196
- } | undefined>;
140
+ handleSignRequest({ payload, event }: WithEvent<SignRequest>): Promise<unknown>;
141
+ handleEcdhRequest({ payload, event }: WithEvent<EcdhRequest>): Promise<unknown>;
197
142
  handleSessionList({ payload, event }: WithEvent<SessionList>): Promise<{
198
143
  abort: () => void;
199
144
  event: {
@@ -209,20 +154,6 @@ export declare class Signer {
209
154
  ok: Promise<boolean>;
210
155
  receive: <T>(handler: import("./rpc.js").MessageHandlerWithCallback<T>) => Promise<import("@welshman/lib").Maybe<T>>;
211
156
  } | undefined>;
212
- handleSessionDelete({ payload, event }: WithEvent<SessionDelete>): Promise<{
213
- abort: () => void;
214
- event: {
215
- sig: string;
216
- tags: string[][];
217
- content: string;
218
- kind: number;
219
- created_at: number;
220
- pubkey: string;
221
- id: string;
222
- };
223
- res: Promise<import("@welshman/net").PublishResultsByRelay>;
224
- ok: Promise<boolean>;
225
- receive: <T>(handler: import("./rpc.js").MessageHandlerWithCallback<T>) => Promise<import("@welshman/lib").Maybe<T>>;
226
- } | undefined>;
157
+ handleSessionDelete({ payload, event }: WithEvent<SessionDelete>): Promise<unknown>;
227
158
  }
228
159
  //# sourceMappingURL=signer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"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"}
package/dist/signer.js CHANGED
@@ -1,11 +1,10 @@
1
- import bcrypt from "bcrypt";
2
1
  import { Lib } from "@frostr/bifrost";
3
2
  import { randomBytes, bytesToHex } from "@noble/hashes/utils.js";
4
- import { now, ms, uniq, between, call, int, ago, MINUTE, YEAR } from "@welshman/lib";
3
+ import { now, filter, removeUndefined, append, ms, uniq, between, call, int, ago, MINUTE, HOUR, YEAR, } from "@welshman/lib";
5
4
  import { getPubkey, verifyEvent, getTagValue, HTTP_AUTH } from "@welshman/util";
6
- import { Method } from "./schema.js";
5
+ import { Method, isPasswordAuth, isOTPAuth } from "./schema.js";
7
6
  import { RPC } from "./rpc.js";
8
- import { hashEmail, bcryptOptions, encodeChallenge, debug } from "./util.js";
7
+ import { hashEmail, encodeChallenge, debug } from "./util.js";
9
8
  import { isChallengeRequest, isEcdhRequest, isLoginSelect, isLoginStart, isRecoverySetup, isRecoverySelect, isRecoveryStart, isRegisterRequest, isSessionDelete, isSessionList, isSignRequest, makeEcdhResult, makeLoginOptions, makeLoginResult, makeRecoverySetupResult, makeRecoveryOptions, makeRecoveryResult, makeRegisterResult, makeSessionDeleteResult, makeSessionListResult, makeSignResult, } from "./message.js";
10
9
  // Utils
11
10
  function makeSessionItem(session) {
@@ -24,22 +23,24 @@ export class Signer {
24
23
  options;
25
24
  rpc;
26
25
  pubkey;
26
+ intervals;
27
+ logins;
27
28
  sessions;
28
29
  recoveries;
29
- logins;
30
30
  challenges;
31
- intervals;
31
+ sessionsByEmailHash;
32
32
  constructor(options) {
33
33
  this.options = options;
34
34
  this.pubkey = getPubkey(options.secret);
35
- this.sessions = options.storage("sessions");
36
- this.recoveries = options.storage("recoveries");
37
- this.logins = options.storage("logins");
38
- this.challenges = options.storage("challenges");
35
+ this.logins = options.storage.collection("logins");
36
+ this.sessions = options.storage.collection("sessions");
37
+ this.recoveries = options.storage.collection("recoveries");
38
+ this.challenges = options.storage.collection("challenges");
39
+ this.sessionsByEmailHash = options.storage.collection("sessionsByEmailHash");
39
40
  this.rpc = new RPC(options.secret, options.relays);
40
41
  this.rpc.subscribe(message => {
41
42
  // Ignore events with weird timestamps
42
- if (!between([now() - 60, now() + 60], message.event.created_at)) {
43
+ if (!between([now() - int(1, HOUR), now() + int(1, HOUR)], message.event.created_at)) {
43
44
  return debug("[signer]: ignoring event", message.event.id);
44
45
  }
45
46
  if (isRegisterRequest(message))
@@ -96,33 +97,23 @@ export class Signer {
96
97
  this.intervals.forEach(clearInterval);
97
98
  }
98
99
  // Internal utils
99
- async *_getAuthenticatedSessionsByPassword(password_hash) {
100
- for (const [_, session] of await this.sessions.entries()) {
101
- if (session.password_hash && (await bcrypt.compare(password_hash, session.password_hash))) {
102
- yield session;
100
+ async _getAuthenticatedSessions(auth) {
101
+ const index = await this.sessionsByEmailHash.get(auth.email_hash);
102
+ if (index) {
103
+ if (isPasswordAuth(auth)) {
104
+ return filter(session => session?.password_hash === auth.password_hash, await Promise.all(index.clients.map(client => this.sessions.get(client))));
103
105
  }
104
- }
105
- }
106
- async *_getAuthenticatedSessionsByOTP(email, otp) {
107
- const challenge = await this.challenges.get(email);
108
- await this.challenges.delete(email);
109
- if (otp === challenge?.otp) {
110
- for (const [_, session] of await this.sessions.entries()) {
111
- if (email === session.email) {
112
- yield session;
106
+ if (isOTPAuth(auth)) {
107
+ const challenge = await this.challenges.get(auth.email_hash);
108
+ if (challenge) {
109
+ await this.challenges.delete(auth.email_hash);
110
+ if (auth.otp === challenge.otp) {
111
+ return removeUndefined(await Promise.all(index.clients.map(client => this.sessions.get(client))));
112
+ }
113
113
  }
114
114
  }
115
115
  }
116
- }
117
- async _getAuthenticatedSessions(auth) {
118
- const sessions = [];
119
- const generator = typeof auth === "string"
120
- ? this._getAuthenticatedSessionsByPassword(auth)
121
- : this._getAuthenticatedSessionsByOTP(auth.email, auth.otp);
122
- for await (const session of generator) {
123
- sessions.push(session);
124
- }
125
- return sessions;
116
+ return [];
126
117
  }
127
118
  _isNip98AuthValid(auth, method) {
128
119
  return (verifyEvent(auth) &&
@@ -133,7 +124,7 @@ export class Signer {
133
124
  getTagValue("method", auth.tags) === method);
134
125
  }
135
126
  async _checkKeyReuse(event) {
136
- if (await this.sessions.has(event.pubkey)) {
127
+ if (await this.sessions.get(event.pubkey)) {
137
128
  debug("[signer]: session key re-used", event.pubkey);
138
129
  return this.rpc.channel(event.pubkey, false).send(makeRecoveryOptions({
139
130
  ok: false,
@@ -141,7 +132,7 @@ export class Signer {
141
132
  prev: event.id,
142
133
  }));
143
134
  }
144
- if (await this.recoveries.has(event.pubkey)) {
135
+ if (await this.recoveries.get(event.pubkey)) {
145
136
  debug("[signer]: recovery key re-used", event.pubkey);
146
137
  return this.rpc.channel(event.pubkey, false).send(makeRecoveryOptions({
147
138
  ok: false,
@@ -149,7 +140,7 @@ export class Signer {
149
140
  prev: event.id,
150
141
  }));
151
142
  }
152
- if (await this.logins.has(event.pubkey)) {
143
+ if (await this.logins.get(event.pubkey)) {
153
144
  debug("[signer]: login key re-used", event.pubkey);
154
145
  return this.rpc.channel(event.pubkey, false).send(makeRecoveryOptions({
155
146
  ok: false,
@@ -161,7 +152,7 @@ export class Signer {
161
152
  // Registration
162
153
  async handleRegisterRequest({ payload, event }) {
163
154
  debug("[signer]: attempting to register session", event.pubkey);
164
- return this.sessions.tx(async (sessions) => {
155
+ return this.options.storage.tx(async () => {
165
156
  const { group, share, recovery } = payload;
166
157
  const cb = (ok, message) => this.rpc
167
158
  .channel(event.pubkey, false)
@@ -184,11 +175,11 @@ export class Signer {
184
175
  debug("[signer]: share index not found in group commits", event.pubkey);
185
176
  return cb(false, "Share index not found in group commits.");
186
177
  }
187
- if (await sessions.has(event.pubkey)) {
178
+ if (await this.sessions.get(event.pubkey)) {
188
179
  debug("[signer]: client is already registered", event.pubkey);
189
180
  return cb(false, "Client is already registered.");
190
181
  }
191
- await sessions.set(event.pubkey, {
182
+ await this.sessions.set(event.pubkey, {
192
183
  client: event.pubkey,
193
184
  event,
194
185
  share,
@@ -202,8 +193,8 @@ export class Signer {
202
193
  }
203
194
  // Recovery setup
204
195
  async handleRecoverySetup({ payload, event }) {
205
- return this.sessions.tx(async (sessions) => {
206
- const session = await sessions.get(event.pubkey);
196
+ return this.options.storage.tx(async () => {
197
+ const session = await this.sessions.get(event.pubkey);
207
198
  if (!session) {
208
199
  debug("[signer]: no session found for recovery setup", event.pubkey);
209
200
  return this.rpc.channel(event.pubkey, false).send(makeRecoverySetupResult({
@@ -238,13 +229,25 @@ export class Signer {
238
229
  prev: event.id,
239
230
  }));
240
231
  }
241
- await sessions.set(event.pubkey, {
232
+ if (!payload.password_hash.match(/^[a-f0-9]{64}$/)) {
233
+ debug("[signer]: invalid password_hash provided on setup", event.pubkey);
234
+ return this.rpc.channel(event.pubkey, false).send(makeRecoverySetupResult({
235
+ ok: false,
236
+ message: "Recovery method password hash must be an argon2id hash of user email and password.",
237
+ prev: event.id,
238
+ }));
239
+ }
240
+ const { email, password_hash } = payload;
241
+ const email_hash = await hashEmail(email, this.pubkey);
242
+ const index = (await this.sessionsByEmailHash.get(email_hash)) || { clients: [] };
243
+ await this.sessions.set(event.pubkey, {
242
244
  ...session,
243
245
  last_activity: now(),
244
- email: payload.email,
245
- email_hash: await hashEmail(payload.email, this.pubkey),
246
- password_hash: await bcrypt.hash(payload.password_hash, bcryptOptions.rounds),
246
+ email,
247
+ email_hash,
248
+ password_hash,
247
249
  });
250
+ await this.sessionsByEmailHash.set(email_hash, { clients: append(event.pubkey, index.clients) });
248
251
  debug("[signer]: recovery method initialized", event.pubkey);
249
252
  this.rpc.channel(event.pubkey, false).send(makeRecoverySetupResult({
250
253
  ok: true,
@@ -254,19 +257,16 @@ export class Signer {
254
257
  });
255
258
  }
256
259
  async handleChallengeRequest({ payload, event }) {
257
- let email = undefined;
258
- for (const [_, session] of await this.sessions.entries()) {
259
- if (session.email_hash === payload.email_hash) {
260
- email = session.email;
261
- break;
260
+ const index = await this.sessionsByEmailHash.get(payload.email_hash);
261
+ if (index && index.clients.length > 0) {
262
+ const session = await this.sessions.get(index.clients[0]);
263
+ if (session?.email) {
264
+ const otp = bytesToHex(randomBytes(12));
265
+ const challenge = encodeChallenge(this.pubkey, otp);
266
+ await this.challenges.set(payload.email_hash, { otp, event });
267
+ this.options.sendChallenge({ email: session.email, challenge });
262
268
  }
263
269
  }
264
- if (email) {
265
- const otp = bytesToHex(randomBytes(12));
266
- const challenge = encodeChallenge(this.pubkey, otp);
267
- await this.challenges.set(email, { otp, email, event });
268
- this.options.sendChallenge({ email, challenge });
269
- }
270
270
  }
271
271
  // Recovery
272
272
  async handleRecoveryStart({ payload, event }) {
@@ -402,8 +402,8 @@ export class Signer {
402
402
  // Signing
403
403
  async handleSignRequest({ payload, event }) {
404
404
  debug("[signer]: attempting signing flow", event.pubkey);
405
- return this.sessions.tx(async (sessions) => {
406
- const session = await sessions.get(event.pubkey);
405
+ return this.options.storage.tx(async () => {
406
+ const session = await this.sessions.get(event.pubkey);
407
407
  if (!session) {
408
408
  debug("[signer]: signing failed", event.pubkey);
409
409
  return this.rpc.channel(event.pubkey, false).send(makeSignResult({
@@ -414,7 +414,7 @@ export class Signer {
414
414
  }
415
415
  const ctx = Lib.get_session_ctx(session.group, payload.request);
416
416
  const partialSignature = Lib.create_psig_pkg(ctx, session.share);
417
- await sessions.set(event.pubkey, { ...session, last_activity: now() });
417
+ await this.sessions.set(event.pubkey, { ...session, last_activity: now() });
418
418
  debug("[signer]: signing complete", event.pubkey);
419
419
  this.rpc.channel(event.pubkey, false).send(makeSignResult({
420
420
  result: partialSignature,
@@ -427,8 +427,8 @@ export class Signer {
427
427
  // Key exchange
428
428
  async handleEcdhRequest({ payload, event }) {
429
429
  debug("[signer]: attempting ecdh flow", event.pubkey);
430
- return this.sessions.tx(async (sessions) => {
431
- const session = await sessions.get(event.pubkey);
430
+ return this.options.storage.tx(async () => {
431
+ const session = await this.sessions.get(event.pubkey);
432
432
  if (!session) {
433
433
  debug("[signer]: ecdh failed", event.pubkey);
434
434
  return this.rpc.channel(event.pubkey, false).send(makeSignResult({
@@ -439,7 +439,7 @@ export class Signer {
439
439
  }
440
440
  const { members, ecdh_pk } = payload;
441
441
  const ecdhPackage = Lib.create_ecdh_pkg(members, ecdh_pk, session.share);
442
- await sessions.set(event.pubkey, { ...session, last_activity: now() });
442
+ await this.sessions.set(event.pubkey, { ...session, last_activity: now() });
443
443
  debug("[signer]: ecdh complete", event.pubkey);
444
444
  this.rpc.channel(event.pubkey, false).send(makeEcdhResult({
445
445
  result: ecdhPackage,
@@ -485,10 +485,10 @@ export class Signer {
485
485
  }));
486
486
  }
487
487
  debug("[signer]: attempting to delete session", event.pubkey);
488
- return this.sessions.tx(async (sessions) => {
489
- const session = await sessions.get(payload.client);
488
+ return this.options.storage.tx(async () => {
489
+ const session = await this.sessions.get(payload.client);
490
490
  if (session?.group.group_pk.slice(2) === payload.auth.pubkey) {
491
- await sessions.delete(payload.client);
491
+ await this.sessions.delete(payload.client);
492
492
  debug("[signer]: deleted session", event.pubkey);
493
493
  this.rpc.channel(event.pubkey, false).send(makeSessionDeleteResult({
494
494
  ok: true,
@@ -1 +1 @@
1
- {"version":3,"file":"signer.js","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signer.js","sourceRoot":"","sources":["../src/signer.ts"],"names":[],"mappings":"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"}
package/dist/storage.d.ts CHANGED
@@ -1,21 +1,16 @@
1
1
  import type { Maybe } from "@welshman/lib";
2
- export type IBaseStorage<T> = {
2
+ export type ICollection<T> = {
3
3
  get(key: string): Promise<Maybe<T>>;
4
- has(key: string): Promise<boolean>;
5
4
  set(key: string, item: T): Promise<void>;
6
5
  delete(key: string): Promise<boolean>;
7
6
  entries(): Promise<Iterable<[string, T]>>;
8
7
  };
9
- export type IStorage<T> = IBaseStorage<T> & {
10
- tx<R>(f: (s: IBaseStorage<T>) => R): Promise<R>;
8
+ export type IStorage = {
9
+ tx: (f: () => Promise<unknown>) => Promise<unknown>;
10
+ collection: <T>(name: string) => ICollection<T>;
11
11
  };
12
- export type IStorageFactory = <T>(name: string) => IStorage<T>;
13
- export declare const inMemoryStorageFactory: <T>(name: string) => {
14
- tx: <R>(f: (s: IBaseStorage<T>) => R) => Promise<void>;
15
- get(key: string): Promise<Maybe<T>>;
16
- has(key: string): Promise<boolean>;
17
- set(key: string, item: T): Promise<void>;
18
- delete(key: string): Promise<boolean>;
19
- entries(): Promise<Iterable<[string, T]>>;
12
+ export declare const inMemoryStorage: {
13
+ tx: <R>(f: () => Promise<R>) => Promise<void>;
14
+ collection: <T>(name: string) => ICollection<T>;
20
15
  };
21
16
  //# sourceMappingURL=storage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,eAAe,CAAA;AAExC,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;IAC5B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACnC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAClC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACrC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;CAC1C,CAAA;AAED,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG;IAC1C,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CAChD,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAA;AAE9D,eAAO,MAAM,sBAAsB,GAAI,CAAC,EAAE,MAAM,MAAM;SAKxC,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;aAlBlC,MAAM;aACN,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;aACzB,MAAM,YAAY,OAAO,CAAC,IAAI,CAAC;gBAC5B,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;;CAoCtC,CAAA"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,eAAe,CAAA;AAExC,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAC3B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACnC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACrC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;CAC1C,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACnD,UAAU,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAAA;CAChD,CAAA;AAID,eAAO,MAAM,eAAe;SACrB,CAAC,KAAK,MAAM,OAAO,CAAC,CAAC,CAAC;iBAOd,CAAC,QAAQ,MAAM,KAAG,WAAW,CAAC,CAAC,CAAC;CAU9C,CAAA"}
package/dist/storage.js CHANGED
@@ -1,21 +1,18 @@
1
- export const inMemoryStorageFactory = (name) => {
2
- const data = new Map();
3
- let lock = Promise.resolve();
4
- const tx = (f) => {
5
- const p = lock.then(() => f(storage));
1
+ let lock = Promise.resolve();
2
+ export const inMemoryStorage = {
3
+ tx: (f) => {
4
+ const p = lock.then(f);
6
5
  lock = p.then(() => undefined);
7
6
  return lock;
8
- };
9
- const storage = {
10
- get: (key) => Promise.resolve(data.get(key)),
11
- has: (key) => Promise.resolve(data.has(key)),
12
- set: (key, item) => {
13
- data.set(key, item);
14
- return Promise.resolve();
15
- },
16
- delete: (key) => Promise.resolve(data.delete(key)),
17
- entries: () => Promise.resolve(data.entries()),
18
- };
19
- return { ...storage, tx };
7
+ },
8
+ collection: (name) => {
9
+ const data = new Map();
10
+ return {
11
+ get: (key) => Promise.resolve(data.get(key)),
12
+ set: (key, item) => (data.set(key, item), Promise.resolve()),
13
+ delete: (key) => Promise.resolve(data.delete(key)),
14
+ entries: () => Promise.resolve(data.entries()),
15
+ };
16
+ },
20
17
  };
21
18
  //# sourceMappingURL=storage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAI,IAAY,EAAE,EAAE;IACxD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAa,CAAA;IAEjC,IAAI,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;IAE5B,MAAM,EAAE,GAAG,CAAI,CAA4B,EAAE,EAAE;QAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;QAErC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QAE9B,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IAED,MAAM,OAAO,GAAoB;QAC/B,GAAG,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpD,GAAG,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpD,GAAG,EAAE,CAAC,GAAW,EAAE,IAAO,EAAE,EAAE;YAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YAEnB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QAC1B,CAAC;QACD,MAAM,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1D,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;KAC/C,CAAA;IAED,OAAO,EAAC,GAAG,OAAO,EAAE,EAAE,EAAC,CAAA;AACzB,CAAC,CAAA"}
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAcA,IAAI,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;AAE5B,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,EAAE,EAAE,CAAI,CAAmB,EAAE,EAAE;QAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAEtB,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QAE9B,OAAO,IAAI,CAAA;IACb,CAAC;IACD,UAAU,EAAE,CAAI,IAAY,EAAkB,EAAE;QAC9C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAa,CAAA;QAEjC,OAAO;YACL,GAAG,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpD,GAAG,EAAE,CAAC,GAAW,EAAE,IAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;YACvE,MAAM,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1D,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SAC/C,CAAA;IACH,CAAC;CACF,CAAA"}