@croct/sdk 0.16.0 → 0.16.1

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/constants.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export declare const BASE_ENDPOINT_URL = "https://api.croct.io";
2
2
  export declare const MAX_QUERY_LENGTH: number;
3
- export declare const VERSION = "0.16.0";
4
- export declare const CLIENT_LIBRARY = "Croct SDK JS v0.16.0";
3
+ export declare const VERSION = "0.16.1";
4
+ export declare const CLIENT_LIBRARY = "Croct SDK JS v0.16.1";
package/constants.js CHANGED
@@ -3,6 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CLIENT_LIBRARY = exports.VERSION = exports.MAX_QUERY_LENGTH = exports.BASE_ENDPOINT_URL = void 0;
4
4
  exports.BASE_ENDPOINT_URL = 'https://api.croct.io';
5
5
  exports.MAX_QUERY_LENGTH = 500;
6
- exports.VERSION = '0.16.0';
6
+ exports.VERSION = '0.16.1';
7
7
  exports.CLIENT_LIBRARY = `Croct SDK JS v${exports.VERSION}`;
8
8
  //# sourceMappingURL=constants.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@croct/sdk",
3
- "version": "0.16.0",
3
+ "version": "0.16.1",
4
4
  "description": "Croct SDK for JavaScript.",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -4,14 +4,14 @@ import {formatCause} from '../error';
4
4
  import {ApiKey} from '../apiKey';
5
5
  import {base64UrlDecode, base64UrlEncode} from '../base64Url';
6
6
 
7
- export type Headers = {
7
+ export type TokenHeaders = {
8
8
  typ: string,
9
9
  alg: string,
10
10
  kid?: string,
11
11
  appId?: string,
12
12
  };
13
13
 
14
- type Claims = {
14
+ export type TokenClaims = {
15
15
  iss: string,
16
16
  aud: string|string[],
17
17
  iat: number,
@@ -20,18 +20,18 @@ type Claims = {
20
20
  jti?: string,
21
21
  };
22
22
 
23
- export type TokenPayload = JsonObject & Claims;
23
+ export type TokenPayload = JsonObject & TokenClaims;
24
24
 
25
25
  export class Token {
26
26
  private static readonly UUID_PATTERN = /^[a-f0-9]{8}-([a-f0-9]{4}-){3}[a-f0-9]{12}$/;
27
27
 
28
- private readonly headers: Headers;
28
+ private readonly headers: TokenHeaders;
29
29
 
30
30
  private readonly payload: TokenPayload;
31
31
 
32
32
  private readonly signature: string;
33
33
 
34
- private constructor(headers: Headers, payload: TokenPayload, signature = '') {
34
+ private constructor(headers: TokenHeaders, payload: TokenPayload, signature = '') {
35
35
  this.headers = headers;
36
36
  this.payload = payload;
37
37
  this.signature = signature;
@@ -90,7 +90,7 @@ export class Token {
90
90
  return Token.of(headers, payload, parts[2]);
91
91
  }
92
92
 
93
- public static of(headers: Headers, payload: TokenPayload, signature = ''): Token {
93
+ public static of(headers: TokenHeaders, payload: TokenPayload, signature = ''): Token {
94
94
  try {
95
95
  tokenSchema.validate({
96
96
  headers: headers,
@@ -101,12 +101,12 @@ export class Token {
101
101
  throw new Error(`The token is invalid: ${formatCause(violation)}`);
102
102
  }
103
103
 
104
- return new Token(headers as Headers, payload as TokenPayload, signature as string);
104
+ return new Token(headers as TokenHeaders, payload as TokenPayload, signature as string);
105
105
  }
106
106
 
107
107
  public async signedWith(apiKey: ApiKey): Promise<Token> {
108
108
  const keyId = await apiKey.getIdentifierHash();
109
- const headers: Headers = {
109
+ const headers: TokenHeaders = {
110
110
  ...this.headers,
111
111
  kid: keyId,
112
112
  alg: apiKey.getSigningAlgorithm(),
@@ -145,22 +145,7 @@ export class Token {
145
145
  return this.headers.kid === await apiKey.getIdentifierHash();
146
146
  }
147
147
 
148
- public withTokenId(tokenId: string): Token {
149
- if (tokenId === '' || !Token.UUID_PATTERN.test(tokenId)) {
150
- throw new Error('The token ID must be a valid UUID.');
151
- }
152
-
153
- return new Token(
154
- this.headers,
155
- {
156
- ...this.payload,
157
- jti: tokenId,
158
- },
159
- this.signature,
160
- );
161
- }
162
-
163
- public getHeaders(): Headers {
148
+ public getHeaders(): TokenHeaders {
164
149
  return {...this.headers};
165
150
  }
166
151
 
@@ -212,6 +197,77 @@ export class Token {
212
197
  return this.payload.iss;
213
198
  }
214
199
 
200
+ public withTokenId(tokenId: string): Token {
201
+ if (tokenId === '' || !Token.UUID_PATTERN.test(tokenId)) {
202
+ throw new Error('The token ID must be a valid UUID.');
203
+ }
204
+
205
+ return new Token(
206
+ this.headers,
207
+ {
208
+ ...this.payload,
209
+ jti: tokenId,
210
+ },
211
+ this.signature,
212
+ );
213
+ }
214
+
215
+ public withDuration(duration: number, now: number = Math.floor(Date.now() / 1000)): Token {
216
+ return new Token(
217
+ this.headers,
218
+ {
219
+ ...this.payload,
220
+ iat: now,
221
+ exp: now + duration,
222
+ },
223
+ this.signature,
224
+ );
225
+ }
226
+
227
+ public withAddedHeaders(headers: Partial<TokenHeaders>): Token {
228
+ return this.withHeaders({
229
+ ...this.headers,
230
+ ...Object.fromEntries(
231
+ Object.entries(headers)
232
+ .filter(([, value]) => value !== undefined),
233
+ ),
234
+ });
235
+ }
236
+
237
+ public withAddedClaims(claims: Partial<TokenClaims>): Token {
238
+ return this.withPayload({
239
+ ...this.payload,
240
+ ...Object.fromEntries(
241
+ Object.entries(claims)
242
+ .filter(([, value]) => value !== undefined),
243
+ ),
244
+ });
245
+ }
246
+
247
+ public withHeaders(headers: TokenHeaders): Token {
248
+ return new Token(
249
+ headers,
250
+ this.payload,
251
+ this.signature,
252
+ );
253
+ }
254
+
255
+ public withPayload(payload: TokenPayload): Token {
256
+ return new Token(
257
+ this.headers,
258
+ payload,
259
+ this.signature,
260
+ );
261
+ }
262
+
263
+ public withSignature(signature: string): Token {
264
+ return new Token(
265
+ this.headers,
266
+ this.payload,
267
+ signature,
268
+ );
269
+ }
270
+
215
271
  public toJSON(): string {
216
272
  return this.toString();
217
273
  }
package/token/token.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  import { JsonObject } from '@croct/json';
2
2
  import { ApiKey } from '../apiKey';
3
- export type Headers = {
3
+ export type TokenHeaders = {
4
4
  typ: string;
5
5
  alg: string;
6
6
  kid?: string;
7
7
  appId?: string;
8
8
  };
9
- type Claims = {
9
+ export type TokenClaims = {
10
10
  iss: string;
11
11
  aud: string | string[];
12
12
  iat: number;
@@ -14,7 +14,7 @@ type Claims = {
14
14
  sub?: string;
15
15
  jti?: string;
16
16
  };
17
- export type TokenPayload = JsonObject & Claims;
17
+ export type TokenPayload = JsonObject & TokenClaims;
18
18
  export declare class Token {
19
19
  private static readonly UUID_PATTERN;
20
20
  private readonly headers;
@@ -23,7 +23,7 @@ export declare class Token {
23
23
  private constructor();
24
24
  static issue(appId: string, subject?: string | null, timestamp?: number): Token;
25
25
  static parse(token: string): Token;
26
- static of(headers: Headers, payload: TokenPayload, signature?: string): Token;
26
+ static of(headers: TokenHeaders, payload: TokenPayload, signature?: string): Token;
27
27
  signedWith(apiKey: ApiKey): Promise<Token>;
28
28
  isSigned(): boolean;
29
29
  isSubject(subject: string): boolean;
@@ -31,8 +31,7 @@ export declare class Token {
31
31
  isValidNow(now?: number): boolean;
32
32
  isNewerThan(token: Token): boolean;
33
33
  matchesKeyId(apiKey: ApiKey): Promise<boolean>;
34
- withTokenId(tokenId: string): Token;
35
- getHeaders(): Headers;
34
+ getHeaders(): TokenHeaders;
36
35
  getPayload(): TokenPayload;
37
36
  getSignature(): string;
38
37
  getApplicationId(): string | null;
@@ -45,6 +44,13 @@ export declare class Token {
45
44
  getTokenId(): string | null;
46
45
  getAudience(): string | string[];
47
46
  getIssuer(): string;
47
+ withTokenId(tokenId: string): Token;
48
+ withDuration(duration: number, now?: number): Token;
49
+ withAddedHeaders(headers: Partial<TokenHeaders>): Token;
50
+ withAddedClaims(claims: Partial<TokenClaims>): Token;
51
+ withHeaders(headers: TokenHeaders): Token;
52
+ withPayload(payload: TokenPayload): Token;
53
+ withSignature(signature: string): Token;
48
54
  toJSON(): string;
49
55
  toString(): string;
50
56
  }
@@ -59,4 +65,3 @@ export declare class FixedTokenProvider implements TokenProvider {
59
65
  constructor(token: Token | null);
60
66
  getToken(): Token | null;
61
67
  }
62
- export {};
package/token/token.js CHANGED
@@ -92,15 +92,6 @@ class Token {
92
92
  async matchesKeyId(apiKey) {
93
93
  return this.headers.kid === await apiKey.getIdentifierHash();
94
94
  }
95
- withTokenId(tokenId) {
96
- if (tokenId === '' || !Token.UUID_PATTERN.test(tokenId)) {
97
- throw new Error('The token ID must be a valid UUID.');
98
- }
99
- return new Token(this.headers, {
100
- ...this.payload,
101
- jti: tokenId,
102
- }, this.signature);
103
- }
104
95
  getHeaders() {
105
96
  return { ...this.headers };
106
97
  }
@@ -145,6 +136,45 @@ class Token {
145
136
  getIssuer() {
146
137
  return this.payload.iss;
147
138
  }
139
+ withTokenId(tokenId) {
140
+ if (tokenId === '' || !Token.UUID_PATTERN.test(tokenId)) {
141
+ throw new Error('The token ID must be a valid UUID.');
142
+ }
143
+ return new Token(this.headers, {
144
+ ...this.payload,
145
+ jti: tokenId,
146
+ }, this.signature);
147
+ }
148
+ withDuration(duration, now = Math.floor(Date.now() / 1000)) {
149
+ return new Token(this.headers, {
150
+ ...this.payload,
151
+ iat: now,
152
+ exp: now + duration,
153
+ }, this.signature);
154
+ }
155
+ withAddedHeaders(headers) {
156
+ return this.withHeaders({
157
+ ...this.headers,
158
+ ...Object.fromEntries(Object.entries(headers)
159
+ .filter(([, value]) => value !== undefined)),
160
+ });
161
+ }
162
+ withAddedClaims(claims) {
163
+ return this.withPayload({
164
+ ...this.payload,
165
+ ...Object.fromEntries(Object.entries(claims)
166
+ .filter(([, value]) => value !== undefined)),
167
+ });
168
+ }
169
+ withHeaders(headers) {
170
+ return new Token(headers, this.payload, this.signature);
171
+ }
172
+ withPayload(payload) {
173
+ return new Token(this.headers, payload, this.signature);
174
+ }
175
+ withSignature(signature) {
176
+ return new Token(this.headers, this.payload, signature);
177
+ }
148
178
  toJSON() {
149
179
  return this.toString();
150
180
  }
@@ -1 +1 @@
1
- {"version":3,"file":"token.js","sourceRoot":"","sources":["../src/token/token.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../src/token/token.ts"],"names":[],"mappings":"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"}