@casual-simulation/aux-records-aws 3.0.16 → 3.0.18-alpha.2720826118

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.
@@ -0,0 +1,28 @@
1
+ import { AddressType, AuthLoginRequest, AuthSession, AuthStore, AuthUser, ListSessionsDataResult, SaveNewUserResult } from '@casual-simulation/aux-records/AuthStore';
2
+ import dynamodb from 'aws-sdk/clients/dynamodb';
3
+ export declare class DynamoDBAuthStore implements AuthStore {
4
+ private _dynamo;
5
+ private _usersTableName;
6
+ private _usersTableEmailIndexName;
7
+ private _usersTablePhoneIndexName;
8
+ private _loginRequestsTableName;
9
+ private _sessionsTableName;
10
+ private _sessionsTableExpireTimeIndexName;
11
+ constructor(dynamo: dynamodb.DocumentClient, usersTableName: string, usersTableEmailIndexName: string, usersTablePhoneIndexName: string, loginRequestsTableName: string, sessionsTableName: string, sessionsTableExpireTimeIndexName: string);
12
+ setRevokeAllSessionsTimeForUser(userId: string, allSessionRevokeTimeMs: number): Promise<void>;
13
+ saveUser(user: AuthUser): Promise<void>;
14
+ saveNewUser(user: AuthUser): Promise<SaveNewUserResult>;
15
+ setCurrentLoginRequest(userId: string, requestId: string): Promise<void>;
16
+ findUser(userId: string): Promise<AuthUser>;
17
+ findUserByAddress(address: string, addressType: AddressType): Promise<AuthUser>;
18
+ private _findAddressQueryParams;
19
+ findLoginRequest(userId: string, requestId: string): Promise<AuthLoginRequest>;
20
+ saveLoginRequest(request: AuthLoginRequest): Promise<AuthLoginRequest>;
21
+ markLoginRequestComplete(userId: string, requestId: string, completedTimeMs: number): Promise<void>;
22
+ incrementLoginRequestAttemptCount(userId: string, requestId: string): Promise<void>;
23
+ findSession(userId: string, sessionId: string): Promise<AuthSession>;
24
+ saveSession(session: AuthSession): Promise<void>;
25
+ listSessions(userId: string, expireTimeMs: number | null): Promise<ListSessionsDataResult>;
26
+ }
27
+ export declare function cleanupObject<T extends Object>(obj: T): Partial<T>;
28
+ //# sourceMappingURL=DynamoDBAuthStore.d.ts.map
@@ -0,0 +1,352 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { omitBy } from 'lodash';
11
+ export class DynamoDBAuthStore {
12
+ constructor(dynamo, usersTableName, usersTableEmailIndexName, usersTablePhoneIndexName, loginRequestsTableName, sessionsTableName, sessionsTableExpireTimeIndexName) {
13
+ this._dynamo = dynamo;
14
+ this._usersTableName = usersTableName;
15
+ this._usersTableEmailIndexName = usersTableEmailIndexName;
16
+ this._usersTablePhoneIndexName = usersTablePhoneIndexName;
17
+ this._loginRequestsTableName = loginRequestsTableName;
18
+ this._sessionsTableName = sessionsTableName;
19
+ this._sessionsTableExpireTimeIndexName =
20
+ sessionsTableExpireTimeIndexName;
21
+ }
22
+ setRevokeAllSessionsTimeForUser(userId, allSessionRevokeTimeMs) {
23
+ return __awaiter(this, void 0, void 0, function* () {
24
+ yield this._dynamo
25
+ .update({
26
+ TableName: this._usersTableName,
27
+ Key: {
28
+ id: userId,
29
+ },
30
+ UpdateExpression: 'SET allSessionRevokeTimeMs = :allSessionRevokeTimeMs',
31
+ ExpressionAttributeValues: {
32
+ ':allSessionRevokeTimeMs': allSessionRevokeTimeMs,
33
+ },
34
+ })
35
+ .promise();
36
+ });
37
+ }
38
+ saveUser(user) {
39
+ return __awaiter(this, void 0, void 0, function* () {
40
+ yield this._dynamo
41
+ .put({
42
+ TableName: this._usersTableName,
43
+ Item: cleanupObject({
44
+ id: user.id,
45
+ name: user.name,
46
+ email: user.email,
47
+ phoneNumber: user.phoneNumber,
48
+ avatarUrl: user.avatarUrl,
49
+ avatarPortraitUrl: user.avatarPortraitUrl,
50
+ allSessionRevokeTimeMs: user.allSessionRevokeTimeMs,
51
+ currentLoginRequestId: user.currentLoginRequestId,
52
+ }),
53
+ })
54
+ .promise();
55
+ });
56
+ }
57
+ saveNewUser(user) {
58
+ return this._dynamo
59
+ .put({
60
+ TableName: this._usersTableName,
61
+ Item: cleanupObject({
62
+ id: user.id,
63
+ name: user.name,
64
+ email: user.email,
65
+ phoneNumber: user.phoneNumber,
66
+ avatarUrl: user.avatarUrl,
67
+ avatarPortraitUrl: user.avatarPortraitUrl,
68
+ allSessionRevokeTimeMs: user.allSessionRevokeTimeMs,
69
+ currentLoginRequestId: user.currentLoginRequestId,
70
+ }),
71
+ ConditionExpression: 'attribute_not_exists(id)',
72
+ })
73
+ .promise()
74
+ .then((result) => {
75
+ return {
76
+ success: true,
77
+ };
78
+ }, (err) => {
79
+ if (err.name === 'ConditionalCheckFailedException') {
80
+ return {
81
+ success: false,
82
+ errorCode: 'user_already_exists',
83
+ errorMessage: 'The user already exists.',
84
+ };
85
+ }
86
+ else {
87
+ console.error('[DynamoDBAuthStore] Unable to save new user.', err);
88
+ return {
89
+ success: false,
90
+ errorCode: 'server_error',
91
+ errorMessage: 'A server error occurred.',
92
+ };
93
+ }
94
+ });
95
+ }
96
+ setCurrentLoginRequest(userId, requestId) {
97
+ return __awaiter(this, void 0, void 0, function* () {
98
+ yield this._dynamo
99
+ .update({
100
+ TableName: this._usersTableName,
101
+ Key: {
102
+ id: userId,
103
+ },
104
+ UpdateExpression: 'SET currentLoginRequestId = :currentLoginRequestId',
105
+ ExpressionAttributeValues: {
106
+ ':currentLoginRequestId': requestId,
107
+ },
108
+ })
109
+ .promise();
110
+ });
111
+ }
112
+ findUser(userId) {
113
+ return __awaiter(this, void 0, void 0, function* () {
114
+ const userResult = yield this._dynamo
115
+ .get({
116
+ TableName: this._usersTableName,
117
+ Key: {
118
+ id: userId,
119
+ },
120
+ })
121
+ .promise();
122
+ const user = userResult.Item;
123
+ if (user) {
124
+ return {
125
+ id: user.id,
126
+ email: user.email,
127
+ phoneNumber: user.phoneNumber,
128
+ avatarPortraitUrl: user.avatarPortraitUrl,
129
+ avatarUrl: user.avatarUrl,
130
+ name: user.name,
131
+ allSessionRevokeTimeMs: user.allSessionRevokeTimeMs,
132
+ currentLoginRequestId: user.currentLoginRequestId,
133
+ };
134
+ }
135
+ else {
136
+ return null;
137
+ }
138
+ });
139
+ }
140
+ findUserByAddress(address, addressType) {
141
+ return __awaiter(this, void 0, void 0, function* () {
142
+ const addressQuery = yield this._dynamo
143
+ .query(Object.assign(Object.assign({ TableName: this._usersTableName }, this._findAddressQueryParams(address, addressType)), { Limit: 1 }))
144
+ .promise();
145
+ if (addressQuery.Items.length > 0) {
146
+ const userId = addressQuery.Items[0].id;
147
+ return yield this.findUser(userId);
148
+ }
149
+ else {
150
+ return null;
151
+ }
152
+ });
153
+ }
154
+ _findAddressQueryParams(address, addressType) {
155
+ if (addressType === 'phone') {
156
+ return {
157
+ IndexName: this._usersTablePhoneIndexName,
158
+ KeyConditionExpression: 'phoneNumber = :phoneNumber',
159
+ ExpressionAttributeValues: {
160
+ ':phoneNumber': address,
161
+ },
162
+ };
163
+ }
164
+ else {
165
+ return {
166
+ IndexName: this._usersTableEmailIndexName,
167
+ KeyConditionExpression: 'email = :email',
168
+ ExpressionAttributeValues: {
169
+ ':email': address,
170
+ },
171
+ };
172
+ }
173
+ }
174
+ findLoginRequest(userId, requestId) {
175
+ return __awaiter(this, void 0, void 0, function* () {
176
+ const result = yield this._dynamo
177
+ .get({
178
+ TableName: this._loginRequestsTableName,
179
+ Key: {
180
+ userId: userId,
181
+ requestId: requestId,
182
+ },
183
+ })
184
+ .promise();
185
+ if (result.Item) {
186
+ return {
187
+ userId: result.Item.userId,
188
+ requestId: result.Item.requestId,
189
+ secretHash: result.Item.secretHash,
190
+ expireTimeMs: result.Item.expireTimeMs,
191
+ completedTimeMs: result.Item.completedTimeMs,
192
+ requestTimeMs: result.Item.requestTimeMs,
193
+ address: result.Item.address,
194
+ addressType: result.Item.addressType,
195
+ ipAddress: result.Item.ipAddress,
196
+ attemptCount: result.Item.attemptCount,
197
+ };
198
+ }
199
+ return null;
200
+ });
201
+ }
202
+ saveLoginRequest(request) {
203
+ return __awaiter(this, void 0, void 0, function* () {
204
+ const data = {
205
+ userId: request.userId,
206
+ requestId: request.requestId,
207
+ secretHash: request.secretHash,
208
+ expireTimeMs: request.expireTimeMs,
209
+ completedTimeMs: request.completedTimeMs,
210
+ requestTimeMs: request.requestTimeMs,
211
+ address: request.address,
212
+ addressType: request.addressType,
213
+ ipAddress: request.ipAddress,
214
+ attemptCount: request.attemptCount,
215
+ };
216
+ yield this._dynamo
217
+ .put({
218
+ TableName: this._loginRequestsTableName,
219
+ Item: cleanupObject(data),
220
+ })
221
+ .promise();
222
+ return data;
223
+ });
224
+ }
225
+ markLoginRequestComplete(userId, requestId, completedTimeMs) {
226
+ return __awaiter(this, void 0, void 0, function* () {
227
+ yield this._dynamo
228
+ .update({
229
+ TableName: this._loginRequestsTableName,
230
+ Key: {
231
+ userId: userId,
232
+ requestId: requestId,
233
+ },
234
+ UpdateExpression: 'SET completedTimeMs = :completedTimeMs',
235
+ ExpressionAttributeValues: {
236
+ ':completedTimeMs': completedTimeMs,
237
+ },
238
+ })
239
+ .promise();
240
+ });
241
+ }
242
+ incrementLoginRequestAttemptCount(userId, requestId) {
243
+ return __awaiter(this, void 0, void 0, function* () {
244
+ yield this._dynamo
245
+ .update({
246
+ TableName: this._loginRequestsTableName,
247
+ Key: {
248
+ userId: userId,
249
+ requestId: requestId,
250
+ },
251
+ UpdateExpression: 'SET attemptCount = attemptCount + 1',
252
+ })
253
+ .promise();
254
+ });
255
+ }
256
+ findSession(userId, sessionId) {
257
+ return __awaiter(this, void 0, void 0, function* () {
258
+ const result = yield this._dynamo
259
+ .get({
260
+ TableName: this._sessionsTableName,
261
+ Key: {
262
+ userId: userId,
263
+ sessionId: sessionId,
264
+ },
265
+ })
266
+ .promise();
267
+ if (result.Item) {
268
+ return {
269
+ userId: result.Item.userId,
270
+ sessionId: result.Item.sessionId,
271
+ secretHash: result.Item.secretHash,
272
+ expireTimeMs: result.Item.expireTimeMs,
273
+ grantedTimeMs: result.Item.grantedTimeMs,
274
+ revokeTimeMs: result.Item.revokeTimeMs,
275
+ ipAddress: result.Item.ipAddress,
276
+ requestId: result.Item.requestId,
277
+ previousSessionId: result.Item.previousSessionId,
278
+ nextSessionId: result.Item.nextSessionId,
279
+ };
280
+ }
281
+ return null;
282
+ });
283
+ }
284
+ saveSession(session) {
285
+ return __awaiter(this, void 0, void 0, function* () {
286
+ const data = {
287
+ userId: session.userId,
288
+ sessionId: session.sessionId,
289
+ secretHash: session.secretHash,
290
+ expireTimeMs: session.expireTimeMs,
291
+ grantedTimeMs: session.grantedTimeMs,
292
+ revokeTimeMs: session.revokeTimeMs,
293
+ ipAddress: session.ipAddress,
294
+ requestId: session.requestId,
295
+ previousSessionId: session.previousSessionId,
296
+ nextSessionId: session.nextSessionId,
297
+ };
298
+ yield this._dynamo
299
+ .put({
300
+ TableName: this._sessionsTableName,
301
+ Item: cleanupObject(data),
302
+ })
303
+ .promise();
304
+ });
305
+ }
306
+ listSessions(userId, expireTimeMs) {
307
+ return __awaiter(this, void 0, void 0, function* () {
308
+ const query = typeof expireTimeMs === 'number'
309
+ ? 'userId = :userId AND expireTimeMs < :expireTimeMs'
310
+ : 'userId = :userId';
311
+ const values = typeof expireTimeMs === 'number'
312
+ ? {
313
+ ':userId': userId,
314
+ ':expireTimeMs': expireTimeMs,
315
+ }
316
+ : {
317
+ ':userId': userId,
318
+ };
319
+ const result = yield this._dynamo
320
+ .query({
321
+ TableName: this._sessionsTableName,
322
+ IndexName: this._sessionsTableExpireTimeIndexName,
323
+ KeyConditionExpression: query,
324
+ ExpressionAttributeValues: values,
325
+ Limit: 10,
326
+ })
327
+ .promise();
328
+ return {
329
+ success: true,
330
+ sessions: result.Items.map((i) => {
331
+ let session = {
332
+ userId: i.userId,
333
+ sessionId: i.sessionId,
334
+ secretHash: i.secretHash,
335
+ expireTimeMs: i.expireTimeMs,
336
+ grantedTimeMs: i.grantedTimeMs,
337
+ revokeTimeMs: i.revokeTimeMs,
338
+ ipAddress: i.ipAddress,
339
+ requestId: i.requestId,
340
+ previousSessionId: i.previousSessionId,
341
+ nextSessionId: i.nextSessionId,
342
+ };
343
+ return session;
344
+ }),
345
+ };
346
+ });
347
+ }
348
+ }
349
+ export function cleanupObject(obj) {
350
+ return omitBy(obj, (o) => typeof o === 'undefined' || o === null);
351
+ }
352
+ //# sourceMappingURL=DynamoDBAuthStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamoDBAuthStore.js","sourceRoot":"","sources":["DynamoDBAuthStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { AuthMessenger, SendCodeResult } from '@casual-simulation/aux-records/AuthMessenger';
2
+ import { AddressType } from '@casual-simulation/aux-records/AuthStore';
3
+ /**
4
+ * Defines a class that implements an AuthMessenger for TextIt.
5
+ */
6
+ export declare class TextItAuthMessenger implements AuthMessenger {
7
+ private _apiKey;
8
+ private _flowId;
9
+ constructor(apiKey: string, flowId: string);
10
+ supportsAddressType(addressType: AddressType): Promise<boolean>;
11
+ sendCode(address: string, addressType: AddressType, code: string): Promise<SendCodeResult>;
12
+ }
13
+ //# sourceMappingURL=TextItAuthMessenger.d.ts.map
@@ -0,0 +1,72 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import axios from 'axios';
11
+ /**
12
+ * Defines a class that implements an AuthMessenger for TextIt.
13
+ */
14
+ export class TextItAuthMessenger {
15
+ constructor(apiKey, flowId) {
16
+ this._apiKey = apiKey;
17
+ this._flowId = flowId;
18
+ }
19
+ supportsAddressType(addressType) {
20
+ return Promise.resolve(addressType === 'email' || addressType === 'phone');
21
+ }
22
+ sendCode(address, addressType, code) {
23
+ return __awaiter(this, void 0, void 0, function* () {
24
+ if (addressType !== 'email' && addressType !== 'phone') {
25
+ return {
26
+ success: false,
27
+ errorCode: 'address_type_not_supported',
28
+ errorMessage: `${addressType} addresses are not supported`,
29
+ };
30
+ }
31
+ try {
32
+ const result = yield axios.post('https://textit.com/api/v2/flow_starts.json', {
33
+ flow: this._flowId,
34
+ urns: [
35
+ addressType === 'email'
36
+ ? `mailto:${address}`
37
+ : `tel:${address}`,
38
+ ],
39
+ params: {
40
+ code: code,
41
+ },
42
+ restart_participants: true,
43
+ }, {
44
+ headers: {
45
+ Authorization: `Token ${this._apiKey}`,
46
+ },
47
+ });
48
+ return {
49
+ success: true,
50
+ };
51
+ }
52
+ catch (err) {
53
+ if (err.response) {
54
+ if (err.response.status === 400) {
55
+ return {
56
+ success: false,
57
+ errorCode: 'unacceptable_address',
58
+ errorMessage: 'The given address is invalid.',
59
+ };
60
+ }
61
+ }
62
+ console.error('[TextItAuthMessenger] A server error ocurred:', err);
63
+ return {
64
+ success: false,
65
+ errorCode: 'server_error',
66
+ errorMessage: 'A server error occurred.',
67
+ };
68
+ }
69
+ });
70
+ }
71
+ }
72
+ //# sourceMappingURL=TextItAuthMessenger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextItAuthMessenger.js","sourceRoot":"","sources":["TextItAuthMessenger.ts"],"names":[],"mappings":";;;;;;;;;AAKA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;GAEG;AACH,MAAM,OAAO,mBAAmB;IAI5B,YAAY,MAAc,EAAE,MAAc;QACtC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED,mBAAmB,CAAC,WAAwB;QACxC,OAAO,OAAO,CAAC,OAAO,CAClB,WAAW,KAAK,OAAO,IAAI,WAAW,KAAK,OAAO,CACrD,CAAC;IACN,CAAC;IAEK,QAAQ,CACV,OAAe,EACf,WAAwB,EACxB,IAAY;;YAEZ,IAAI,WAAW,KAAK,OAAO,IAAI,WAAW,KAAK,OAAO,EAAE;gBACpD,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,SAAS,EAAE,4BAA4B;oBACvC,YAAY,EAAE,GAAG,WAAW,8BAA8B;iBAC7D,CAAC;aACL;YAED,IAAI;gBACA,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAC3B,4CAA4C,EAC5C;oBACI,IAAI,EAAE,IAAI,CAAC,OAAO;oBAClB,IAAI,EAAE;wBACF,WAAW,KAAK,OAAO;4BACnB,CAAC,CAAC,UAAU,OAAO,EAAE;4BACrB,CAAC,CAAC,OAAO,OAAO,EAAE;qBACzB;oBACD,MAAM,EAAE;wBACJ,IAAI,EAAE,IAAI;qBACb;oBACD,oBAAoB,EAAE,IAAI;iBAC7B,EACD;oBACI,OAAO,EAAE;wBACL,aAAa,EAAE,SAAS,IAAI,CAAC,OAAO,EAAE;qBACzC;iBACJ,CACJ,CAAC;gBAEF,OAAO;oBACH,OAAO,EAAE,IAAI;iBAChB,CAAC;aACL;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,GAAG,CAAC,QAAQ,EAAE;oBACd,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;wBAC7B,OAAO;4BACH,OAAO,EAAE,KAAK;4BACd,SAAS,EAAE,sBAAsB;4BACjC,YAAY,EAAE,+BAA+B;yBAChD,CAAC;qBACL;iBACJ;gBACD,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,GAAG,CAAC,CAAC;gBACpE,OAAO;oBACH,OAAO,EAAE,KAAK;oBACd,SAAS,EAAE,cAAc;oBACzB,YAAY,EAAE,0BAA0B;iBAC3C,CAAC;aACL;QACL,CAAC;KAAA;CACJ"}
package/index.d.ts CHANGED
@@ -2,4 +2,6 @@ export * from './DynamoDBRecordsStore';
2
2
  export * from './DynamoDBDataStore';
3
3
  export * from './DynamoDBFileStore';
4
4
  export * from './DynamoDBEventStore';
5
+ export * from './DynamoDBAuthStore';
6
+ export * from './TextItAuthMessenger';
5
7
  //# sourceMappingURL=index.d.ts.map
package/index.js CHANGED
@@ -2,4 +2,6 @@ export * from './DynamoDBRecordsStore';
2
2
  export * from './DynamoDBDataStore';
3
3
  export * from './DynamoDBFileStore';
4
4
  export * from './DynamoDBEventStore';
5
+ export * from './DynamoDBAuthStore';
6
+ export * from './TextItAuthMessenger';
5
7
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@casual-simulation/aux-records-aws",
3
- "version": "3.0.16",
3
+ "version": "3.0.18-alpha.2720826118",
4
4
  "description": "AWS Store implementations for the CasualOS Records System.",
5
5
  "keywords": [],
6
6
  "author": "Casual Simulation, Inc.",
@@ -37,7 +37,7 @@
37
37
  "access": "public"
38
38
  },
39
39
  "dependencies": {
40
- "@casual-simulation/aux-records": "^3.0.16"
40
+ "@casual-simulation/aux-records": "^3.0.18-alpha.2720826118"
41
41
  },
42
- "gitHead": "726f96f4506e38b3cf00918685585656b8a3b32c"
42
+ "gitHead": "9e8c8c23096ad4f0550bc94f2c73bb117e2775b3"
43
43
  }