@atlasauth/msw 0.1.0

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/state.js ADDED
@@ -0,0 +1,266 @@
1
+ "use strict";
2
+ /**
3
+ * The in-memory mock backend that {@link ../handlers} reads and mutates.
4
+ *
5
+ * `createAtlasMock(seed?)` returns a mutable store standing in for ONE Atlas
6
+ * instance: its environment config, users (with email addresses), organizations
7
+ * and memberships, live sign-in / sign-up attempts, and sessions. The handlers
8
+ * advance this store — a sign-in attempt really transitions across calls, a
9
+ * created user really appears in the next list — so a test drives the same state
10
+ * machine the real server runs, without a server.
11
+ *
12
+ * Everything is deterministic: ids come from a seedable per-prefix counter, so a
13
+ * test that seeds the same thing gets byte-identical ids every run.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.AtlasMock = exports.IdFactory = exports.ID_PREFIXES = void 0;
17
+ exports.createAtlasMock = createAtlasMock;
18
+ /** The Atlas entity kinds this mock mints ids for. Mirrors `@atlas/shared`'s prefixes. */
19
+ exports.ID_PREFIXES = {
20
+ instance: 'ins',
21
+ user: 'user',
22
+ emailAddress: 'eml',
23
+ session: 'sess',
24
+ signInAttempt: 'sia',
25
+ signUpAttempt: 'sia',
26
+ organization: 'org',
27
+ organizationMembership: 'orgmem',
28
+ };
29
+ const DEFAULT_JWKS = {
30
+ keys: [
31
+ {
32
+ kty: 'RSA',
33
+ use: 'sig',
34
+ alg: 'RS256',
35
+ kid: 'atlas-mock-key-1',
36
+ // A fixed, well-formed modulus/exponent pair — shape-correct for a JWKS
37
+ // consumer (it never actually verifies a signature against the mock).
38
+ n: 'wXy5u0Zq8m2V6nF3pQ8rT1sW4xY7zA0bC3dE6fG9hJkL2mN5oP8qR1sT4uV7wX0yZ3aB6cD9eF2gH5iJ8kL1mN4oP7qR0sT3uV6wX9yZ2aB5cD8eF1gH4iJ7kL0mN3oP6qR9sT2uV5wX8yZ1aB4cD7eF0gH3iJ6kL9mN2oP5qR8sT1uV4wX7yZ0aB3cD6eF9gH2iJ5kL8mN1oP4qR7sT0uV3wX6yZ9',
39
+ e: 'AQAB',
40
+ },
41
+ ],
42
+ };
43
+ /**
44
+ * A deterministic, seedable id factory. Each entity kind has its own monotonic
45
+ * counter, so `user(1)`, `user(2)`, … are stable across runs. Ids keep the
46
+ * Atlas `<prefix>_<...>` shape (e.g. `user_0000000000000000000000000001`).
47
+ */
48
+ class IdFactory {
49
+ counters = new Map();
50
+ next(kind) {
51
+ const prefix = exports.ID_PREFIXES[kind];
52
+ const n = (this.counters.get(prefix) ?? 0) + 1;
53
+ this.counters.set(prefix, n);
54
+ return `${prefix}_${String(n).padStart(26, '0')}`;
55
+ }
56
+ reset() {
57
+ this.counters.clear();
58
+ }
59
+ }
60
+ exports.IdFactory = IdFactory;
61
+ /**
62
+ * The mutable mock store. Created by {@link createAtlasMock}; the handlers close
63
+ * over one instance of this and mutate it in place.
64
+ */
65
+ class AtlasMock {
66
+ instance;
67
+ users = [];
68
+ organizations = [];
69
+ memberships = [];
70
+ attempts = [];
71
+ sessions = [];
72
+ /** The session the `GET /v1/client` boot reports as active (set on exchange). */
73
+ activeSessionId = null;
74
+ ids = new IdFactory();
75
+ seed;
76
+ constructor(seed = {}) {
77
+ this.seed = seed;
78
+ const inst = seed.instance ?? {};
79
+ this.instance = {
80
+ id: inst.id ?? this.ids.next('instance'),
81
+ fapiBaseUrl: trimSlash(inst.fapiBaseUrl ?? 'https://fapi.atlas.test'),
82
+ bapiBaseUrl: trimSlash(inst.bapiBaseUrl ?? 'https://api.atlas.test'),
83
+ publishableKey: inst.publishableKey ?? 'pk_test_atlas',
84
+ secretKey: inst.secretKey ?? 'sk_test_atlas',
85
+ firstFactors: inst.firstFactors ?? ['password', 'email_code'],
86
+ socialProviders: inst.socialProviders ?? [],
87
+ testOtp: inst.testOtp ?? '424242',
88
+ jwks: inst.jwks ?? DEFAULT_JWKS,
89
+ };
90
+ this.applySeed(seed);
91
+ }
92
+ applySeed(seed) {
93
+ for (const u of seed.users ?? [])
94
+ this.addUser(u);
95
+ for (const o of seed.organizations ?? [])
96
+ this.addOrganization(o);
97
+ }
98
+ /** The FAPI origin the handlers are mounted on. */
99
+ get fapiBaseUrl() {
100
+ return this.instance.fapiBaseUrl;
101
+ }
102
+ /** The BAPI origin the handlers are mounted on. */
103
+ get bapiBaseUrl() {
104
+ return this.instance.bapiBaseUrl;
105
+ }
106
+ /** Seat a user into the store, normalising a friendly seed into a {@link MockUser}. */
107
+ addUser(seed) {
108
+ const now = Date.now();
109
+ const id = seed.id ?? this.ids.next('user');
110
+ const emails = [];
111
+ let primaryEmailId = null;
112
+ if (seed.email) {
113
+ const emailId = this.ids.next('emailAddress');
114
+ const verified = seed.emailVerified ?? true;
115
+ emails.push({
116
+ id: emailId,
117
+ email: seed.email.trim().toLowerCase(),
118
+ verified,
119
+ primary: true,
120
+ });
121
+ // The primary points only at a VERIFIED address (§4.2), so `primary_email`
122
+ // is never an unverified placeholder.
123
+ primaryEmailId = verified ? emailId : null;
124
+ }
125
+ const user = {
126
+ id,
127
+ firstName: seed.firstName ?? null,
128
+ lastName: seed.lastName ?? null,
129
+ username: seed.username ?? null,
130
+ imageUrl: seed.imageUrl ?? null,
131
+ locale: seed.locale ?? null,
132
+ externalId: seed.externalId ?? null,
133
+ password: seed.password ?? null,
134
+ emails,
135
+ primaryEmailId,
136
+ publicMetadata: seed.publicMetadata ?? {},
137
+ privateMetadata: seed.privateMetadata ?? {},
138
+ unsafeMetadata: seed.unsafeMetadata ?? {},
139
+ mfaEnabled: seed.mfaEnabled ?? false,
140
+ isAnonymous: seed.isAnonymous ?? false,
141
+ banned: false,
142
+ deletedAt: null,
143
+ lastSignInAt: null,
144
+ createdAt: now,
145
+ updatedAt: now,
146
+ };
147
+ this.users.push(user);
148
+ return user;
149
+ }
150
+ /** Seat an organization (and any seeded members) into the store. */
151
+ addOrganization(seed) {
152
+ const now = Date.now();
153
+ const org = {
154
+ id: seed.id ?? this.ids.next('organization'),
155
+ name: seed.name,
156
+ slug: seed.slug ?? null,
157
+ imageUrl: seed.imageUrl ?? null,
158
+ parentOrganizationId: null,
159
+ publicMetadata: seed.publicMetadata ?? {},
160
+ privateMetadata: {},
161
+ maxAllowedMemberships: seed.maxAllowedMemberships ?? null,
162
+ createdBy: seed.createdBy ?? null,
163
+ createdAt: now,
164
+ updatedAt: now,
165
+ };
166
+ this.organizations.push(org);
167
+ for (const m of seed.members ?? []) {
168
+ this.addMembership(m.userId, org.id, m.role ?? 'member');
169
+ }
170
+ return org;
171
+ }
172
+ /** Add a membership tying a user to an organization with a role. */
173
+ addMembership(userId, organizationId, role = 'member') {
174
+ const membership = {
175
+ id: this.ids.next('organizationMembership'),
176
+ userId,
177
+ organizationId,
178
+ role,
179
+ createdAt: Date.now(),
180
+ };
181
+ this.memberships.push(membership);
182
+ return membership;
183
+ }
184
+ /** Find a user by id (ignores soft-deleted unless asked). */
185
+ findUser(id, includeDeleted = false) {
186
+ const user = this.users.find((u) => u.id === id);
187
+ if (!user)
188
+ return undefined;
189
+ if (user.deletedAt && !includeDeleted)
190
+ return undefined;
191
+ return user;
192
+ }
193
+ /** Find a user by any of their verified email addresses. */
194
+ findUserByEmail(email) {
195
+ const needle = email.trim().toLowerCase();
196
+ return this.users.find((u) => !u.deletedAt && u.emails.some((e) => e.email === needle && e.verified));
197
+ }
198
+ findOrganization(id) {
199
+ return this.organizations.find((o) => o.id === id);
200
+ }
201
+ findAttempt(id) {
202
+ return this.attempts.find((a) => a.id === id);
203
+ }
204
+ findSession(id) {
205
+ return this.sessions.find((s) => s.id === id);
206
+ }
207
+ /** The live session a FAPI bearer `jwt` authenticates as, or undefined. */
208
+ sessionForJwt(jwt) {
209
+ return this.sessions.find((s) => s.jwt === jwt && s.status === 'active');
210
+ }
211
+ /** Mint a live session for a user (the same object a completed sign-in yields). */
212
+ createSession(userId, opts = {}) {
213
+ const now = Date.now();
214
+ const id = this.ids.next('session');
215
+ const session = {
216
+ id,
217
+ userId,
218
+ status: 'active',
219
+ activeOrganizationId: null,
220
+ impersonatedBy: opts.impersonatedBy ?? null,
221
+ jwt: `jwt_${id}`,
222
+ refreshToken: `rt_${id}`,
223
+ lastActiveAt: now,
224
+ expiresAt: now + 7 * 24 * 60 * 60 * 1000,
225
+ idleExpiresAt: now + 30 * 60 * 1000,
226
+ createdAt: now,
227
+ };
228
+ this.sessions.push(session);
229
+ const user = this.users.find((u) => u.id === userId);
230
+ if (user)
231
+ user.lastSignInAt = now;
232
+ return session;
233
+ }
234
+ /** Reset the store to its original seed — the per-test teardown helper. */
235
+ reset() {
236
+ this.users.length = 0;
237
+ this.organizations.length = 0;
238
+ this.memberships.length = 0;
239
+ this.attempts.length = 0;
240
+ this.sessions.length = 0;
241
+ this.activeSessionId = null;
242
+ this.ids.reset();
243
+ // Re-mint the instance id consumed before the seed ran, so ids line up.
244
+ if (!this.seed.instance?.id)
245
+ this.ids.next('instance');
246
+ this.applySeed(this.seed);
247
+ }
248
+ }
249
+ exports.AtlasMock = AtlasMock;
250
+ function trimSlash(url) {
251
+ return url.replace(/\/+$/, '');
252
+ }
253
+ /**
254
+ * Create a mutable mock Atlas backend. Pass a seed to pre-populate users,
255
+ * organizations and the instance/environment config; everything is optional.
256
+ *
257
+ * @example
258
+ * const mock = createAtlasMock({
259
+ * instance: { firstFactors: ['password'] },
260
+ * users: [{ email: 'ada@example.com', password: 'hunter2' }],
261
+ * });
262
+ */
263
+ function createAtlasMock(seed) {
264
+ return new AtlasMock(seed);
265
+ }
266
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AA+aH,0CAEC;AA/aD,0FAA0F;AAC7E,QAAA,WAAW,GAAG;IACzB,QAAQ,EAAE,KAAK;IACf,IAAI,EAAE,MAAM;IACZ,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,MAAM;IACf,aAAa,EAAE,KAAK;IACpB,aAAa,EAAE,KAAK;IACpB,YAAY,EAAE,KAAK;IACnB,sBAAsB,EAAE,QAAQ;CACxB,CAAC;AAyKX,MAAM,YAAY,GAAG;IACnB,IAAI,EAAE;QACJ;YACE,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,KAAK;YACV,GAAG,EAAE,OAAO;YACZ,GAAG,EAAE,kBAAkB;YACvB,wEAAwE;YACxE,sEAAsE;YACtE,CAAC,EAAE,gOAAgO;YACnO,CAAC,EAAE,MAAM;SACV;KACF;CACF,CAAC;AAEF;;;;GAIG;AACH,MAAa,SAAS;IACH,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEtD,IAAI,CAAC,IAAgB;QACnB,MAAM,MAAM,GAAG,mBAAW,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC7B,OAAO,GAAG,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC;IACpD,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACF;AAbD,8BAaC;AAED;;;GAGG;AACH,MAAa,SAAS;IACX,QAAQ,CAAe;IACvB,KAAK,GAAe,EAAE,CAAC;IACvB,aAAa,GAAuB,EAAE,CAAC;IACvC,WAAW,GAAqB,EAAE,CAAC;IACnC,QAAQ,GAAkB,EAAE,CAAC;IAC7B,QAAQ,GAAkB,EAAE,CAAC;IACtC,iFAAiF;IACjF,eAAe,GAAkB,IAAI,CAAC;IAE7B,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC;IACd,IAAI,CAAgB;IAErC,YAAY,OAAsB,EAAE;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG;YACd,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;YACxC,WAAW,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW,IAAI,yBAAyB,CAAC;YACrE,WAAW,EAAE,SAAS,CAAC,IAAI,CAAC,WAAW,IAAI,wBAAwB,CAAC;YACpE,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,eAAe;YACtD,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,eAAe;YAC5C,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC;YAC7D,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,EAAE;YAC3C,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,QAAQ;YACjC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,YAAY;SAChC,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAEO,SAAS,CAAC,IAAmB;QACnC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;YAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,aAAa,IAAI,EAAE;YAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,mDAAmD;IACnD,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;IACnC,CAAC;IAED,mDAAmD;IACnD,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;IACnC,CAAC;IAED,uFAAuF;IACvF,OAAO,CAAC,IAAc;QACpB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAgB,EAAE,CAAC;QAC/B,IAAI,cAAc,GAAkB,IAAI,CAAC;QACzC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,OAAO;gBACX,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;gBACtC,QAAQ;gBACR,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YACH,2EAA2E;YAC3E,sCAAsC;YACtC,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7C,CAAC;QACD,MAAM,IAAI,GAAa;YACrB,EAAE;YACF,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;YAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;YAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI;YAC3B,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI;YACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;YAC/B,MAAM;YACN,cAAc;YACd,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,EAAE;YACzC,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,EAAE;YAC3C,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,EAAE;YACzC,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK;YACpC,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,KAAK;YACtC,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,IAAI;YACf,YAAY,EAAE,IAAI;YAClB,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;SACf,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oEAAoE;IACpE,eAAe,CAAC,IAAsB;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,GAAG,GAAqB;YAC5B,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;YAC5C,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;YAC/B,oBAAoB,EAAE,IAAI;YAC1B,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,EAAE;YACzC,eAAe,EAAE,EAAE;YACnB,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,IAAI,IAAI;YACzD,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;YACjC,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;SACf,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,oEAAoE;IACpE,aAAa,CAAC,MAAc,EAAE,cAAsB,EAAE,IAAI,GAAG,QAAQ;QACnE,MAAM,UAAU,GAAmB;YACjC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wBAAwB,CAAC;YAC3C,MAAM;YACN,cAAc;YACd,IAAI;YACJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,6DAA6D;IAC7D,QAAQ,CAAC,EAAU,EAAE,cAAc,GAAG,KAAK;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,cAAc;YAAE,OAAO,SAAS,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4DAA4D;IAC5D,eAAe,CAAC,KAAa;QAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CACpB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,CAC9E,CAAC;IACJ,CAAC;IAED,gBAAgB,CAAC,EAAU;QACzB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,WAAW,CAAC,EAAU;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,WAAW,CAAC,EAAU;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,2EAA2E;IAC3E,aAAa,CAAC,GAAW;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;IAC3E,CAAC;IAED,mFAAmF;IACnF,aAAa,CAAC,MAAc,EAAE,OAAoC,EAAE;QAClE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,OAAO,GAAgB;YAC3B,EAAE;YACF,MAAM;YACN,MAAM,EAAE,QAAQ;YAChB,oBAAoB,EAAE,IAAI;YAC1B,cAAc,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI;YAC3C,GAAG,EAAE,OAAO,EAAE,EAAE;YAChB,YAAY,EAAE,MAAM,EAAE,EAAE;YACxB,YAAY,EAAE,GAAG;YACjB,SAAS,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;YACxC,aAAa,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;YACnC,SAAS,EAAE,GAAG;SACf,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;QACrD,IAAI,IAAI;YAAE,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;QAClC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,2EAA2E;IAC3E,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACjB,wEAAwE;QACxE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;YAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;CACF;AAnMD,8BAmMC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACjC,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,eAAe,CAAC,IAAoB;IAClD,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "@atlasauth/msw",
3
+ "version": "0.1.0",
4
+ "main": "./dist/index.js",
5
+ "types": "./dist/index.d.ts",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/index.d.ts",
9
+ "default": "./dist/index.js"
10
+ },
11
+ "./package.json": "./package.json"
12
+ },
13
+ "peerDependencies": {
14
+ "msw": "^2"
15
+ },
16
+ "devDependencies": {
17
+ "msw": "^2.4.9",
18
+ "typescript": "^5.6.3",
19
+ "vitest": "^2.1.4"
20
+ },
21
+ "publishConfig": {
22
+ "access": "public"
23
+ },
24
+ "files": [
25
+ "dist",
26
+ "README.md"
27
+ ],
28
+ "scripts": {
29
+ "build": "tsc -p tsconfig.build.json",
30
+ "typecheck": "tsc -p tsconfig.json --noEmit",
31
+ "test": "vitest run"
32
+ }
33
+ }