@knocklabs/node 1.25.0 → 1.27.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/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.27.0 (2025-12-29)
4
+
5
+ Full Changelog: [v1.26.0...v1.27.0](https://github.com/knocklabs/knock-node/compare/v1.26.0...v1.27.0)
6
+
7
+ ### Features
8
+
9
+ * **tokenSigner:** add optional jti claim to prevent duplicate tokens ([#147](https://github.com/knocklabs/knock-node/issues/147)) ([66bd591](https://github.com/knocklabs/knock-node/commit/66bd5913d8160c6f41c988cf351a8a663df96702))
10
+
11
+ ## 1.26.0 (2025-12-09)
12
+
13
+ Full Changelog: [v1.25.0...v1.26.0](https://github.com/knocklabs/knock-node/compare/v1.25.0...v1.26.0)
14
+
15
+ ### Features
16
+
17
+ * **api:** api update ([f725bc6](https://github.com/knocklabs/knock-node/commit/f725bc60dd56a2db4a485dab40b8f852d1dd1f4b))
18
+ * **api:** api update ([9bb80a2](https://github.com/knocklabs/knock-node/commit/9bb80a2f12b80d773655e162e35f560c0066cc93))
19
+ * **api:** api update ([657abef](https://github.com/knocklabs/knock-node/commit/657abefcffbad720025ef80c094ef7ab975d6dec))
20
+
3
21
  ## 1.25.0 (2025-12-05)
4
22
 
5
23
  Full Changelog: [v1.24.0...v1.25.0](https://github.com/knocklabs/knock-node/compare/v1.24.0...v1.25.0)
package/README.md CHANGED
@@ -292,6 +292,8 @@ import { signUserToken, buildUserTokenGrant, Grants } from '@knocklabs/node';
292
292
  const token = await signUserToken('user-1', {
293
293
  // Token valid for 12 hours (43200 seconds)
294
294
  expiresInSeconds: 43200,
295
+ // Generate a unique JWT ID (jti) to ensure token uniqueness (optional)
296
+ shouldGenerateJti: true,
295
297
  // Grants for tenant and object access
296
298
  grants: [
297
299
  // Grant access to a tenant
@@ -20,6 +20,11 @@ export interface SignUserTokenOptions {
20
20
  * Grants to include in the token
21
21
  */
22
22
  grants?: TokenGrant[] | undefined;
23
+ /**
24
+ * If true, generates a JWT ID (jti) and includes it in the token
25
+ * @default false
26
+ */
27
+ shouldGenerateJti?: boolean | undefined;
23
28
  }
24
29
  /**
25
30
  * Prepare user token grants
@@ -1 +1 @@
1
- {"version":3,"file":"tokenSigner.d.mts","sourceRoot":"","sources":["../src/lib/tokenSigner.ts"],"names":[],"mappings":"AAAA;;GAEG;OAGI,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAE;AAK1D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEhC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEtC;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;CACnC;AAoDD;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,GAC/B,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAalD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,GAAG,UAAU,CAK9F;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAoBnG"}
1
+ {"version":3,"file":"tokenSigner.d.mts","sourceRoot":"","sources":["../src/lib/tokenSigner.ts"],"names":[],"mappings":"AAAA;;GAEG;OAII,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAE;AAK1D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEhC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEtC;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;IAElC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACzC;AAoDD;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,GAC/B,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAalD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,GAAG,UAAU,CAK9F;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBnG"}
@@ -20,6 +20,11 @@ export interface SignUserTokenOptions {
20
20
  * Grants to include in the token
21
21
  */
22
22
  grants?: TokenGrant[] | undefined;
23
+ /**
24
+ * If true, generates a JWT ID (jti) and includes it in the token
25
+ * @default false
26
+ */
27
+ shouldGenerateJti?: boolean | undefined;
23
28
  }
24
29
  /**
25
30
  * Prepare user token grants
@@ -1 +1 @@
1
- {"version":3,"file":"tokenSigner.d.ts","sourceRoot":"","sources":["../src/lib/tokenSigner.ts"],"names":[],"mappings":"AAAA;;GAEG;OAGI,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAE;AAK1D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEhC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEtC;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;CACnC;AAoDD;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,GAC/B,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAalD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,GAAG,UAAU,CAK9F;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAoBnG"}
1
+ {"version":3,"file":"tokenSigner.d.ts","sourceRoot":"","sources":["../src/lib/tokenSigner.ts"],"names":[],"mappings":"AAAA;;GAEG;OAII,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAE;AAK1D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEhC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEtC;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;IAElC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACzC;AAoDD;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,GAC/B,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,GAAG,SAAS,CAalD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,GAAG,UAAU,CAK9F;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBnG"}
@@ -7,6 +7,7 @@ exports.maybePrepareUserTokenGrants = maybePrepareUserTokenGrants;
7
7
  exports.buildUserTokenGrant = buildUserTokenGrant;
8
8
  exports.signUserToken = signUserToken;
9
9
  const jose_1 = require("jose");
10
+ const uuid_1 = require("../internal/utils/uuid.js");
10
11
  // Default hostname for Knock API
11
12
  const DEFAULT_HOSTNAME = 'https://api.knock.app';
12
13
  /**
@@ -101,6 +102,7 @@ async function signUserToken(userId, options) {
101
102
  grants: maybePrepareUserTokenGrants(options?.grants),
102
103
  iat: currentTime,
103
104
  exp: currentTime + expireInSeconds,
105
+ ...(options?.shouldGenerateJti && { jti: (0, uuid_1.uuid4)() }),
104
106
  };
105
107
  return createJWT(header, payload, signingKey);
106
108
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tokenSigner.js","sourceRoot":"","sources":["../src/lib/tokenSigner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tokenSigner.js","sourceRoot":"","sources":["../src/lib/tokenSigner.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  * Token signing functionality for Knock authentication
3
3
  */
4
4
  import { SignJWT, importPKCS8 } from 'jose';
5
+ import { uuid4 } from "../internal/utils/uuid.mjs";
5
6
  // Default hostname for Knock API
6
7
  const DEFAULT_HOSTNAME = 'https://api.knock.app';
7
8
  /**
@@ -96,6 +97,7 @@ export async function signUserToken(userId, options) {
96
97
  grants: maybePrepareUserTokenGrants(options?.grants),
97
98
  iat: currentTime,
98
99
  exp: currentTime + expireInSeconds,
100
+ ...(options?.shouldGenerateJti && { jti: uuid4() }),
99
101
  };
100
102
  return createJWT(header, payload, signingKey);
101
103
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tokenSigner.mjs","sourceRoot":"","sources":["../src/lib/tokenSigner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tokenSigner.mjs","sourceRoot":"","sources":["../src/lib/tokenSigner.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@knocklabs/node",
3
- "version": "1.25.0",
3
+ "version": "1.27.0",
4
4
  "description": "The official TypeScript library for the Knock API",
5
5
  "author": "Knock <support@knock.app>",
6
6
  "types": "./index.d.ts",
@@ -5,8 +5,8 @@ import { APIPromise } from "../../core/api-promise.mjs";
5
5
  import { RequestOptions } from "../../internal/request-options.mjs";
6
6
  export declare class Bulk extends APIResource {
7
7
  /**
8
- * Delete up to 100 tenants at a time in a single operation. This operation cannot
9
- * be undone.
8
+ * Delete up to 1,000 tenants at a time in a single operation. This operation
9
+ * cannot be undone.
10
10
  *
11
11
  * @example
12
12
  * ```ts
@@ -17,7 +17,7 @@ export declare class Bulk extends APIResource {
17
17
  */
18
18
  delete(params: BulkDeleteParams, options?: RequestOptions): APIPromise<BulkOperationsAPI.BulkOperation>;
19
19
  /**
20
- * Set or update up to 100 tenants in a single operation.
20
+ * Set or update up to 1,000 tenants in a single operation.
21
21
  *
22
22
  * @example
23
23
  * ```ts
@@ -5,8 +5,8 @@ import { APIPromise } from "../../core/api-promise.js";
5
5
  import { RequestOptions } from "../../internal/request-options.js";
6
6
  export declare class Bulk extends APIResource {
7
7
  /**
8
- * Delete up to 100 tenants at a time in a single operation. This operation cannot
9
- * be undone.
8
+ * Delete up to 1,000 tenants at a time in a single operation. This operation
9
+ * cannot be undone.
10
10
  *
11
11
  * @example
12
12
  * ```ts
@@ -17,7 +17,7 @@ export declare class Bulk extends APIResource {
17
17
  */
18
18
  delete(params: BulkDeleteParams, options?: RequestOptions): APIPromise<BulkOperationsAPI.BulkOperation>;
19
19
  /**
20
- * Set or update up to 100 tenants in a single operation.
20
+ * Set or update up to 1,000 tenants in a single operation.
21
21
  *
22
22
  * @example
23
23
  * ```ts
@@ -5,8 +5,8 @@ exports.Bulk = void 0;
5
5
  const resource_1 = require("../../core/resource.js");
6
6
  class Bulk extends resource_1.APIResource {
7
7
  /**
8
- * Delete up to 100 tenants at a time in a single operation. This operation cannot
9
- * be undone.
8
+ * Delete up to 1,000 tenants at a time in a single operation. This operation
9
+ * cannot be undone.
10
10
  *
11
11
  * @example
12
12
  * ```ts
@@ -20,7 +20,7 @@ class Bulk extends resource_1.APIResource {
20
20
  return this._client.post('/v1/tenants/bulk/delete', { query: { tenant_ids }, ...options });
21
21
  }
22
22
  /**
23
- * Set or update up to 100 tenants in a single operation.
23
+ * Set or update up to 1,000 tenants in a single operation.
24
24
  *
25
25
  * @example
26
26
  * ```ts
@@ -2,8 +2,8 @@
2
2
  import { APIResource } from "../../core/resource.mjs";
3
3
  export class Bulk extends APIResource {
4
4
  /**
5
- * Delete up to 100 tenants at a time in a single operation. This operation cannot
6
- * be undone.
5
+ * Delete up to 1,000 tenants at a time in a single operation. This operation
6
+ * cannot be undone.
7
7
  *
8
8
  * @example
9
9
  * ```ts
@@ -17,7 +17,7 @@ export class Bulk extends APIResource {
17
17
  return this._client.post('/v1/tenants/bulk/delete', { query: { tenant_ids }, ...options });
18
18
  }
19
19
  /**
20
- * Set or update up to 100 tenants in a single operation.
20
+ * Set or update up to 1,000 tenants in a single operation.
21
21
  *
22
22
  * @example
23
23
  * ```ts
@@ -3,6 +3,7 @@
3
3
  */
4
4
 
5
5
  import { type JWTHeaderParameters, type JWTPayload, SignJWT, importPKCS8 } from 'jose';
6
+ import { uuid4 } from '../internal/utils/uuid';
6
7
  import type { TokenEntity, TokenGrant, TokenGrantOptions } from './userTokens';
7
8
 
8
9
  // Default hostname for Knock API
@@ -28,6 +29,12 @@ export interface SignUserTokenOptions {
28
29
  * Grants to include in the token
29
30
  */
30
31
  grants?: TokenGrant[] | undefined;
32
+
33
+ /**
34
+ * If true, generates a JWT ID (jti) and includes it in the token
35
+ * @default false
36
+ */
37
+ shouldGenerateJti?: boolean | undefined;
31
38
  }
32
39
 
33
40
  /**
@@ -140,6 +147,7 @@ export async function signUserToken(userId: string, options?: SignUserTokenOptio
140
147
  grants: maybePrepareUserTokenGrants(options?.grants),
141
148
  iat: currentTime,
142
149
  exp: currentTime + expireInSeconds,
150
+ ...(options?.shouldGenerateJti && { jti: uuid4() }),
143
151
  };
144
152
 
145
153
  return createJWT(header, payload, signingKey);
@@ -8,8 +8,8 @@ import { RequestOptions } from '../../internal/request-options';
8
8
 
9
9
  export class Bulk extends APIResource {
10
10
  /**
11
- * Delete up to 100 tenants at a time in a single operation. This operation cannot
12
- * be undone.
11
+ * Delete up to 1,000 tenants at a time in a single operation. This operation
12
+ * cannot be undone.
13
13
  *
14
14
  * @example
15
15
  * ```ts
@@ -24,7 +24,7 @@ export class Bulk extends APIResource {
24
24
  }
25
25
 
26
26
  /**
27
- * Set or update up to 100 tenants in a single operation.
27
+ * Set or update up to 1,000 tenants in a single operation.
28
28
  *
29
29
  * @example
30
30
  * ```ts
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const VERSION = '1.25.0'; // x-release-please-version
1
+ export const VERSION = '1.27.0'; // x-release-please-version
package/version.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "1.25.0";
1
+ export declare const VERSION = "1.27.0";
2
2
  //# sourceMappingURL=version.d.mts.map
package/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "1.25.0";
1
+ export declare const VERSION = "1.27.0";
2
2
  //# sourceMappingURL=version.d.ts.map
package/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = '1.25.0'; // x-release-please-version
4
+ exports.VERSION = '1.27.0'; // x-release-please-version
5
5
  //# sourceMappingURL=version.js.map
package/version.mjs CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = '1.25.0'; // x-release-please-version
1
+ export const VERSION = '1.27.0'; // x-release-please-version
2
2
  //# sourceMappingURL=version.mjs.map