@spinajs/session-provider-dynamodb 2.0.481 → 2.0.484

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.
@@ -1,25 +1,39 @@
1
- import AWS from 'aws-sdk';
2
- import { SessionProvider, UserSession, ISession, User } from '@spinajs/rbac';
1
+ import { DynamoDBClient, AttributeValue } from '@aws-sdk/client-dynamodb';
2
+ import { DateTime } from 'luxon';
3
+ import { SessionProvider, ISession } from '@spinajs/rbac';
3
4
  import { Log } from '@spinajs/log';
5
+ type AttributeMap = Record<string, AttributeValue>;
6
+ /**
7
+ * DynamoDB-backed session store. Conforms to the `@spinajs/rbac`
8
+ * `SessionProvider` contract: ownership is the numeric `UserId` (persisted as
9
+ * its own top-level attribute), expiration is owned by the injected strategy
10
+ * (`this.Expiration`) and persisted verbatim, and `Data` is (de)serialized with
11
+ * the shared session codec. Uses the AWS SDK for JavaScript v3
12
+ * (`new DynamoDBClient(...)` + command objects dispatched through `.send()`).
13
+ */
4
14
  export declare class DynamoDbSessionProvider extends SessionProvider {
5
15
  protected Log: Log;
6
16
  protected Table: string;
7
17
  protected AwsConfig: any;
8
- protected DefaultExpirationTime: number;
9
18
  protected ConfigPath: any;
10
19
  protected ReadCapacityUnits: any;
11
20
  protected WriteCapacityUnits: any;
12
- protected DynamoDb: AWS.DynamoDB;
21
+ protected DynamoDb: DynamoDBClient;
13
22
  resolve(): Promise<void>;
14
- protected updateTimeToLive(): Promise<import("aws-sdk/lib/request").PromiseResult<AWS.DynamoDB.UpdateTimeToLiveOutput, AWS.AWSError>>;
15
- protected createSessionTable(): Promise<import("aws-sdk/lib/request").PromiseResult<AWS.DynamoDB.CreateTableOutput, AWS.AWSError>>;
16
- protected checkSessionTable(): Promise<import("aws-sdk/lib/request").PromiseResult<AWS.DynamoDB.DescribeTableOutput, AWS.AWSError> | null | undefined>;
17
- restore(sessionId: string): Promise<UserSession>;
23
+ restore(sessionId: string): Promise<ISession | null>;
24
+ save(session: ISession): Promise<void>;
25
+ touch(session: ISession): Promise<boolean>;
18
26
  delete(sessionId: string): Promise<void>;
19
- touch(session: ISession): Promise<void>;
27
+ deleteByUser(userId: number): Promise<void>;
28
+ listByUser(userId: number): Promise<ISession[]>;
20
29
  truncate(): Promise<void>;
30
+ protected scanByUser(userId: number): Promise<AttributeMap[]>;
31
+ protected toSession(item: AttributeMap): ISession;
32
+ protected expirationEquals(a: DateTime | undefined, b: DateTime | undefined): boolean;
33
+ protected updateTimeToLive(): Promise<import("@aws-sdk/client-dynamodb").UpdateTimeToLiveCommandOutput>;
34
+ protected createSessionTable(): Promise<import("@aws-sdk/client-dynamodb").CreateTableCommandOutput>;
35
+ protected checkSessionTable(): Promise<import("@aws-sdk/client-dynamodb").DescribeTableCommandOutput | null>;
21
36
  protected deleteSessionTable(): Promise<void>;
22
- logsOut(user: User): Promise<void>;
23
- save(sessionOrId: string | ISession, data?: object): Promise<void>;
24
37
  }
38
+ export {};
25
39
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,SAAS,CAAC;AAG1B,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG7E,OAAO,EAAU,GAAG,EAAE,MAAM,cAAc,CAAC;AAI3C,qBACa,uBAAwB,SAAQ,eAAe;IAE1D,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IAGxB,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC;IAGzB,SAAS,CAAC,qBAAqB,EAAE,MAAM,CAAC;IAGxC,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC;IAK1B,SAAS,CAAC,iBAAiB,EAAE,GAAG,CAAC;IAKjC,SAAS,CAAC,kBAAkB,EAAE,GAAG,CAAC;IAElC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC;IAGpB,OAAO;IAkBpB,SAAS,CAAC,gBAAgB;IAU1B,SAAS,CAAC,kBAAkB;cAsBZ,iBAAiB;IAYpB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAgChD,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWxC,KAAK,CAAC,OAAO,EAAE,QAAQ;IAkBvB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;cAMtB,kBAAkB;IAMrB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBlC,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA8BhF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EAUd,cAAc,EACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAqD,MAAM,eAAe,CAAC;AAG7G,OAAO,EAAU,GAAG,EAAE,MAAM,cAAc,CAAC;AAE3C,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAEnD;;;;;;;GAOG;AACH,qBACa,uBAAwB,SAAQ,eAAe;IAE1D,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IAGxB,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC;IAGzB,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC;IAK1B,SAAS,CAAC,iBAAiB,EAAE,GAAG,CAAC;IAKjC,SAAS,CAAC,kBAAkB,EAAE,GAAG,CAAC;IAElC,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAC;IAEtB,OAAO;IAqBP,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAyBpD,IAAI,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BtC,KAAK,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAe1C,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWxC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3C,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAM/C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;cAMtB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAcnE,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,QAAQ;IAUjD,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAAE,QAAQ,GAAG,SAAS,EAAE,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO;IAOrF,SAAS,CAAC,gBAAgB;IAY1B,SAAS,CAAC,kBAAkB;cAwBZ,iBAAiB;cAiBjB,kBAAkB;CAOnC"}
package/lib/cjs/index.js CHANGED
@@ -8,47 +8,156 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
11
  Object.defineProperty(exports, "__esModule", { value: true });
15
12
  exports.DynamoDbSessionProvider = void 0;
16
- const aws_sdk_1 = __importDefault(require("aws-sdk"));
13
+ const fs_1 = require("fs");
14
+ const client_dynamodb_1 = require("@aws-sdk/client-dynamodb");
17
15
  const luxon_1 = require("luxon");
18
16
  const rbac_1 = require("@spinajs/rbac");
19
17
  const di_1 = require("@spinajs/di");
20
18
  const configuration_1 = require("@spinajs/configuration");
21
19
  const log_1 = require("@spinajs/log");
22
- const util_1 = require("@spinajs/util");
23
- const lodash_1 = __importDefault(require("lodash"));
20
+ /**
21
+ * DynamoDB-backed session store. Conforms to the `@spinajs/rbac`
22
+ * `SessionProvider` contract: ownership is the numeric `UserId` (persisted as
23
+ * its own top-level attribute), expiration is owned by the injected strategy
24
+ * (`this.Expiration`) and persisted verbatim, and `Data` is (de)serialized with
25
+ * the shared session codec. Uses the AWS SDK for JavaScript v3
26
+ * (`new DynamoDBClient(...)` + command objects dispatched through `.send()`).
27
+ */
24
28
  let DynamoDbSessionProvider = class DynamoDbSessionProvider extends rbac_1.SessionProvider {
25
- // tslint:disable-next-line: no-empty
26
29
  async resolve() {
27
- aws_sdk_1.default.config.update(this.AwsConfig);
30
+ // v3 has no global `AWS.config` / `loadFromPath` — the whole configuration
31
+ // (region, endpoint, credentials) is passed straight into the client
32
+ // constructor. `configPath` is read here and merged in ourselves.
33
+ let cfg = {};
28
34
  if (this.ConfigPath) {
29
- aws_sdk_1.default.config.loadFromPath(this.ConfigPath);
35
+ cfg = { ...cfg, ...JSON.parse((0, fs_1.readFileSync)(this.ConfigPath, 'utf-8')) };
30
36
  }
31
37
  else if (this.AwsConfig) {
32
- aws_sdk_1.default.config.update(this.AwsConfig);
38
+ cfg = { ...cfg, ...this.AwsConfig };
33
39
  }
34
- this.DynamoDb = new aws_sdk_1.default.DynamoDB({ apiVersion: '2012-08-10' });
40
+ this.DynamoDb = new client_dynamodb_1.DynamoDBClient(cfg);
35
41
  const table = await this.checkSessionTable();
36
42
  if (!table) {
37
43
  await this.createSessionTable();
38
44
  await this.updateTimeToLive();
39
45
  }
40
46
  }
47
+ async restore(sessionId) {
48
+ const result = await this.DynamoDb.send(new client_dynamodb_1.GetItemCommand({
49
+ TableName: this.Table,
50
+ Key: {
51
+ SessionId: { S: sessionId },
52
+ },
53
+ }));
54
+ if (!result.Item) {
55
+ return null;
56
+ }
57
+ const session = this.toSession(result.Item);
58
+ // DynamoDB TTL deletion is eventual — an expired item may still be present.
59
+ // Treat an expired session as absent, matching the contract.
60
+ if (this.isExpired(session)) {
61
+ return null;
62
+ }
63
+ return session;
64
+ }
65
+ async save(session) {
66
+ // Persist `Expiration` verbatim. Only a brand-new session with no scheduled
67
+ // expiration is given its initial expiry via the strategy (fixes B3).
68
+ if (session.Expiration === undefined) {
69
+ this.applyInitialExpiration(session);
70
+ }
71
+ const item = {
72
+ SessionId: { S: session.SessionId },
73
+ // ownership source of truth — a top-level numeric attribute (fixes B4).
74
+ UserId: { N: `${session.UserId}` },
75
+ Creation: { S: session.Creation.toISO() },
76
+ Data: { S: (0, rbac_1.encodeSessionData)(session.Data) },
77
+ };
78
+ // DynamoDB TTL attribute (epoch millis), driven by `session.Expiration`.
79
+ // A never-expiring session simply omits it.
80
+ if (session.Expiration !== undefined) {
81
+ item.Expiration = { N: `${session.Expiration.toMillis()}` };
82
+ }
83
+ await this.DynamoDb.send(new client_dynamodb_1.PutItemCommand({
84
+ TableName: this.Table,
85
+ Item: item,
86
+ }));
87
+ }
88
+ async touch(session) {
89
+ const current = session.Expiration;
90
+ const renewed = this.Expiration.renew(session);
91
+ // unchanged (e.g. AbsoluteExpiration) — skip the write, report false
92
+ if (this.expirationEquals(current, renewed)) {
93
+ return false;
94
+ }
95
+ session.Expiration = renewed;
96
+ await this.save(session);
97
+ return true;
98
+ }
99
+ async delete(sessionId) {
100
+ await this.DynamoDb.send(new client_dynamodb_1.DeleteItemCommand({
101
+ TableName: this.Table,
102
+ Key: {
103
+ SessionId: { S: sessionId },
104
+ },
105
+ }));
106
+ }
107
+ async deleteByUser(userId) {
108
+ // DynamoDB has no filtered batch delete — scan by the top-level numeric
109
+ // UserId attribute and delete each match (fixes B4; the old `logsOut`
110
+ // filtered `Data.User` inside a scalar JSON string and matched nothing).
111
+ const items = await this.scanByUser(userId);
112
+ for (const item of items) {
113
+ await this.delete(item.SessionId.S);
114
+ }
115
+ }
116
+ async listByUser(userId) {
117
+ const items = await this.scanByUser(userId);
118
+ return items.map((item) => this.toSession(item)).filter((s) => !this.isExpired(s));
119
+ }
120
+ async truncate() {
121
+ await this.deleteSessionTable();
122
+ await this.createSessionTable();
123
+ await this.updateTimeToLive();
124
+ }
125
+ async scanByUser(userId) {
126
+ const result = await this.DynamoDb.send(new client_dynamodb_1.ScanCommand({
127
+ TableName: this.Table,
128
+ FilterExpression: 'UserId = :uid',
129
+ ExpressionAttributeValues: {
130
+ ':uid': { N: `${userId}` },
131
+ },
132
+ }));
133
+ return result.Items ?? [];
134
+ }
135
+ toSession(item) {
136
+ return new rbac_1.UserSession({
137
+ SessionId: item.SessionId.S,
138
+ UserId: item.UserId ? parseInt(item.UserId.N, 10) : 0,
139
+ Creation: luxon_1.DateTime.fromISO(item.Creation.S),
140
+ Expiration: item.Expiration ? luxon_1.DateTime.fromMillis(parseInt(item.Expiration.N, 10)) : undefined,
141
+ Data: (0, rbac_1.decodeSessionData)(item.Data.S),
142
+ });
143
+ }
144
+ expirationEquals(a, b) {
145
+ if (a === undefined || b === undefined) {
146
+ return a === b;
147
+ }
148
+ return a.toMillis() === b.toMillis();
149
+ }
41
150
  updateTimeToLive() {
42
- return this.DynamoDb.updateTimeToLive({
151
+ return this.DynamoDb.send(new client_dynamodb_1.UpdateTimeToLiveCommand({
43
152
  TableName: this.Table,
44
153
  TimeToLiveSpecification: {
45
154
  AttributeName: 'Expiration',
46
155
  Enabled: true,
47
156
  },
48
- }).promise();
157
+ }));
49
158
  }
50
159
  createSessionTable() {
51
- return this.DynamoDb.createTable({
160
+ return this.DynamoDb.send(new client_dynamodb_1.CreateTableCommand({
52
161
  TableName: this.Table,
53
162
  AttributeDefinitions: [
54
163
  {
@@ -66,127 +175,26 @@ let DynamoDbSessionProvider = class DynamoDbSessionProvider extends rbac_1.Sessi
66
175
  ReadCapacityUnits: this.ReadCapacityUnits,
67
176
  WriteCapacityUnits: this.WriteCapacityUnits,
68
177
  },
69
- }).promise();
178
+ }));
70
179
  }
71
180
  async checkSessionTable() {
72
181
  try {
73
- return await this.DynamoDb.describeTable({
182
+ return await this.DynamoDb.send(new client_dynamodb_1.DescribeTableCommand({
74
183
  TableName: this.Table,
75
- }).promise();
184
+ }));
76
185
  }
77
186
  catch (err) {
78
- if (err.code === 'ResourceNotFoundException') {
79
- return null;
80
- }
81
- }
82
- }
83
- async restore(sessionId) {
84
- const params = {
85
- TableName: this.Table,
86
- Key: {
87
- SessionId: { S: sessionId },
88
- },
89
- };
90
- const result = await this.DynamoDb.getItem(params).promise();
91
- if (!result.Item) {
92
- return null;
93
- }
94
- else {
95
- // DynamoDB ttl takes time, sometimes
96
- // we receive session before ttl mark result as expired
97
- // and deletes it
98
- const ttl = parseInt(result.Item.Expiration.N);
99
- if (ttl < luxon_1.DateTime.now().toMillis()) {
187
+ // v3 surfaces the error class name via `err.name` (v2 used `err.code`).
188
+ if (err.name === 'ResourceNotFoundException') {
100
189
  return null;
101
190
  }
102
- const data = JSON.parse(result.Item.Data.S);
103
- return new rbac_1.UserSession({
104
- Creation: luxon_1.DateTime.fromISO(result.Item.Creation.S),
105
- Expiration: luxon_1.DateTime.fromMillis(ttl),
106
- SessionId: result.Item.SessionId.S,
107
- Data: new Map(Object.entries(data)),
108
- });
191
+ throw err;
109
192
  }
110
193
  }
111
- async delete(sessionId) {
112
- const params = {
113
- TableName: this.Table,
114
- Key: {
115
- SessionId: { S: sessionId },
116
- },
117
- };
118
- await this.DynamoDb.deleteItem(params).promise();
119
- }
120
- async touch(session) {
121
- const params = {
122
- TableName: this.Table,
123
- Key: {
124
- SessionId: { S: session.SessionId },
125
- },
126
- UpdateExpression: 'set Expiration = :e',
127
- ExpressionAttributeValues: {
128
- ':e': {
129
- N: `${session.Expiration.toMillis()}`,
130
- },
131
- },
132
- ReturnValues: 'UPDATED_NEW',
133
- };
134
- await this.DynamoDb.updateItem(params).promise();
135
- }
136
- async truncate() {
137
- await this.deleteSessionTable();
138
- await this.createSessionTable();
139
- await this.updateTimeToLive();
140
- }
141
194
  async deleteSessionTable() {
142
- await this.DynamoDb.deleteTable({
143
- TableName: this.Table,
144
- }).promise();
145
- }
146
- async logsOut(user) {
147
- // DynamoDB does not support batch delete
148
- // so we need to load all sessions and delete them one by one
149
- const params = {
150
- TableName: this.Table,
151
- FilterExpression: 'Data.User = :userId',
152
- ExpressionAttributeValues: {
153
- ':userId': { S: user.Uuid },
154
- },
155
- };
156
- const sessions = await this.DynamoDb.scan(params).promise();
157
- if (sessions.Items && sessions.Items.length > 0) {
158
- for (const item of sessions.Items) {
159
- await this.delete(item.SessionId.S);
160
- }
161
- }
162
- }
163
- async save(sessionOrId, data) {
164
- let sId = '';
165
- let sData = null;
166
- let sCreationTime = luxon_1.DateTime.now();
167
- let sExpirationTime = luxon_1.DateTime.now().plus({ minutes: this.DefaultExpirationTime });
168
- if (lodash_1.default.isString(sessionOrId)) {
169
- sId = sessionOrId;
170
- sData = JSON.stringify(data);
171
- }
172
- else {
173
- sId = sessionOrId.SessionId;
174
- sData = JSON.stringify(Object.fromEntries(sessionOrId.Data), util_1.replacer);
175
- sCreationTime = sessionOrId.Creation;
176
- sExpirationTime = sessionOrId.Expiration;
177
- }
178
- const params = {
195
+ await this.DynamoDb.send(new client_dynamodb_1.DeleteTableCommand({
179
196
  TableName: this.Table,
180
- Item: {
181
- SessionId: { S: sId },
182
- Data: {
183
- S: sData,
184
- },
185
- Creation: { S: sCreationTime.toISO() },
186
- Expiration: { N: `${sExpirationTime.toMillis()}` },
187
- },
188
- };
189
- await this.DynamoDb.putItem(params).promise();
197
+ }));
190
198
  }
191
199
  };
192
200
  exports.DynamoDbSessionProvider = DynamoDbSessionProvider;
@@ -202,10 +210,6 @@ __decorate([
202
210
  (0, configuration_1.Config)('rbac.session.aws.config'),
203
211
  __metadata("design:type", Object)
204
212
  ], DynamoDbSessionProvider.prototype, "AwsConfig", void 0);
205
- __decorate([
206
- (0, configuration_1.Config)('rbac.session.expiration'),
207
- __metadata("design:type", Number)
208
- ], DynamoDbSessionProvider.prototype, "DefaultExpirationTime", void 0);
209
213
  __decorate([
210
214
  (0, configuration_1.Config)('rbac.session.aws.configPath'),
211
215
  __metadata("design:type", Object)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,39 @@
1
- import AWS from 'aws-sdk';
2
- import { SessionProvider, UserSession, ISession, User } from '@spinajs/rbac';
1
+ import { DynamoDBClient, AttributeValue } from '@aws-sdk/client-dynamodb';
2
+ import { DateTime } from 'luxon';
3
+ import { SessionProvider, ISession } from '@spinajs/rbac';
3
4
  import { Log } from '@spinajs/log';
5
+ type AttributeMap = Record<string, AttributeValue>;
6
+ /**
7
+ * DynamoDB-backed session store. Conforms to the `@spinajs/rbac`
8
+ * `SessionProvider` contract: ownership is the numeric `UserId` (persisted as
9
+ * its own top-level attribute), expiration is owned by the injected strategy
10
+ * (`this.Expiration`) and persisted verbatim, and `Data` is (de)serialized with
11
+ * the shared session codec. Uses the AWS SDK for JavaScript v3
12
+ * (`new DynamoDBClient(...)` + command objects dispatched through `.send()`).
13
+ */
4
14
  export declare class DynamoDbSessionProvider extends SessionProvider {
5
15
  protected Log: Log;
6
16
  protected Table: string;
7
17
  protected AwsConfig: any;
8
- protected DefaultExpirationTime: number;
9
18
  protected ConfigPath: any;
10
19
  protected ReadCapacityUnits: any;
11
20
  protected WriteCapacityUnits: any;
12
- protected DynamoDb: AWS.DynamoDB;
21
+ protected DynamoDb: DynamoDBClient;
13
22
  resolve(): Promise<void>;
14
- protected updateTimeToLive(): Promise<import("aws-sdk/lib/request.js").PromiseResult<AWS.DynamoDB.UpdateTimeToLiveOutput, AWS.AWSError>>;
15
- protected createSessionTable(): Promise<import("aws-sdk/lib/request.js").PromiseResult<AWS.DynamoDB.CreateTableOutput, AWS.AWSError>>;
16
- protected checkSessionTable(): Promise<import("aws-sdk/lib/request.js").PromiseResult<AWS.DynamoDB.DescribeTableOutput, AWS.AWSError> | null | undefined>;
17
- restore(sessionId: string): Promise<UserSession>;
23
+ restore(sessionId: string): Promise<ISession | null>;
24
+ save(session: ISession): Promise<void>;
25
+ touch(session: ISession): Promise<boolean>;
18
26
  delete(sessionId: string): Promise<void>;
19
- touch(session: ISession): Promise<void>;
27
+ deleteByUser(userId: number): Promise<void>;
28
+ listByUser(userId: number): Promise<ISession[]>;
20
29
  truncate(): Promise<void>;
30
+ protected scanByUser(userId: number): Promise<AttributeMap[]>;
31
+ protected toSession(item: AttributeMap): ISession;
32
+ protected expirationEquals(a: DateTime | undefined, b: DateTime | undefined): boolean;
33
+ protected updateTimeToLive(): Promise<import("@aws-sdk/client-dynamodb").UpdateTimeToLiveCommandOutput>;
34
+ protected createSessionTable(): Promise<import("@aws-sdk/client-dynamodb").CreateTableCommandOutput>;
35
+ protected checkSessionTable(): Promise<import("@aws-sdk/client-dynamodb").DescribeTableCommandOutput | null>;
21
36
  protected deleteSessionTable(): Promise<void>;
22
- logsOut(user: User): Promise<void>;
23
- save(sessionOrId: string | ISession, data?: object): Promise<void>;
24
37
  }
38
+ export {};
25
39
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,SAAS,CAAC;AAG1B,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG7E,OAAO,EAAU,GAAG,EAAE,MAAM,cAAc,CAAC;AAI3C,qBACa,uBAAwB,SAAQ,eAAe;IAE1D,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IAGxB,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC;IAGzB,SAAS,CAAC,qBAAqB,EAAE,MAAM,CAAC;IAGxC,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC;IAK1B,SAAS,CAAC,iBAAiB,EAAE,GAAG,CAAC;IAKjC,SAAS,CAAC,kBAAkB,EAAE,GAAG,CAAC;IAElC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC;IAGpB,OAAO;IAkBpB,SAAS,CAAC,gBAAgB;IAU1B,SAAS,CAAC,kBAAkB;cAsBZ,iBAAiB;IAYpB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAgChD,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWxC,KAAK,CAAC,OAAO,EAAE,QAAQ;IAkBvB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;cAMtB,kBAAkB;IAMrB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBlC,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA8BhF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EAUd,cAAc,EACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAqD,MAAM,eAAe,CAAC;AAG7G,OAAO,EAAU,GAAG,EAAE,MAAM,cAAc,CAAC;AAE3C,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAEnD;;;;;;;GAOG;AACH,qBACa,uBAAwB,SAAQ,eAAe;IAE1D,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAGnB,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC;IAGxB,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC;IAGzB,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC;IAK1B,SAAS,CAAC,iBAAiB,EAAE,GAAG,CAAC;IAKjC,SAAS,CAAC,kBAAkB,EAAE,GAAG,CAAC;IAElC,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAC;IAEtB,OAAO;IAqBP,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAyBpD,IAAI,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BtC,KAAK,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAe1C,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWxC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3C,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAM/C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;cAMtB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAcnE,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,GAAG,QAAQ;IAUjD,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAAE,QAAQ,GAAG,SAAS,EAAE,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO;IAOrF,SAAS,CAAC,gBAAgB;IAY1B,SAAS,CAAC,kBAAkB;cAwBZ,iBAAiB;cAiBjB,kBAAkB;CAOnC"}