@knocklabs/node 0.6.19 → 1.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/CHANGELOG.md +48 -7
- package/LICENSE +201 -21
- package/README.md +338 -129
- package/api-promise.d.mts +2 -0
- package/api-promise.d.mts.map +1 -0
- package/api-promise.d.ts +2 -0
- package/api-promise.d.ts.map +1 -0
- package/api-promise.js +6 -0
- package/api-promise.js.map +1 -0
- package/api-promise.mjs +2 -0
- package/api-promise.mjs.map +1 -0
- package/client.d.mts +223 -0
- package/client.d.mts.map +1 -0
- package/client.d.ts +223 -0
- package/client.d.ts.map +1 -0
- package/client.js +485 -0
- package/client.js.map +1 -0
- package/client.mjs +481 -0
- package/client.mjs.map +1 -0
- package/core/api-promise.d.mts +46 -0
- package/core/api-promise.d.mts.map +1 -0
- package/core/api-promise.d.ts +46 -0
- package/core/api-promise.d.ts.map +1 -0
- package/core/api-promise.js +74 -0
- package/core/api-promise.js.map +1 -0
- package/core/api-promise.mjs +70 -0
- package/core/api-promise.mjs.map +1 -0
- package/core/error.d.mts +46 -0
- package/core/error.d.mts.map +1 -0
- package/core/error.d.ts +46 -0
- package/core/error.d.ts.map +1 -0
- package/core/error.js +113 -0
- package/core/error.js.map +1 -0
- package/core/error.mjs +97 -0
- package/core/error.mjs.map +1 -0
- package/core/pagination.d.mts +111 -0
- package/core/pagination.d.mts.map +1 -0
- package/core/pagination.d.ts +111 -0
- package/core/pagination.d.ts.map +1 -0
- package/core/pagination.js +173 -0
- package/core/pagination.js.map +1 -0
- package/core/pagination.mjs +164 -0
- package/core/pagination.mjs.map +1 -0
- package/core/resource.d.mts +6 -0
- package/core/resource.d.mts.map +1 -0
- package/core/resource.d.ts +6 -0
- package/core/resource.d.ts.map +1 -0
- package/core/resource.js +11 -0
- package/core/resource.js.map +1 -0
- package/core/resource.mjs +7 -0
- package/core/resource.mjs.map +1 -0
- package/core/uploads.d.mts +3 -0
- package/core/uploads.d.mts.map +1 -0
- package/core/uploads.d.ts +3 -0
- package/core/uploads.d.ts.map +1 -0
- package/core/uploads.js +6 -0
- package/core/uploads.js.map +1 -0
- package/core/uploads.mjs +2 -0
- package/core/uploads.mjs.map +1 -0
- package/error.d.mts +2 -0
- package/error.d.mts.map +1 -0
- package/error.d.ts +2 -0
- package/error.d.ts.map +1 -0
- package/error.js +6 -0
- package/error.js.map +1 -0
- package/error.mjs +2 -0
- package/error.mjs.map +1 -0
- package/index.d.mts +7 -0
- package/index.d.mts.map +1 -0
- package/index.d.ts +7 -0
- package/index.d.ts.map +1 -0
- package/index.js +32 -0
- package/index.js.map +1 -0
- package/index.mjs +8 -0
- package/index.mjs.map +1 -0
- package/internal/builtin-types.d.mts +73 -0
- package/internal/builtin-types.d.mts.map +1 -0
- package/internal/builtin-types.d.ts +73 -0
- package/internal/builtin-types.d.ts.map +1 -0
- package/internal/builtin-types.js +4 -0
- package/internal/builtin-types.js.map +1 -0
- package/internal/builtin-types.mjs +3 -0
- package/internal/builtin-types.mjs.map +1 -0
- package/internal/detect-platform.d.mts +15 -0
- package/internal/detect-platform.d.mts.map +1 -0
- package/internal/detect-platform.d.ts +15 -0
- package/internal/detect-platform.d.ts.map +1 -0
- package/internal/detect-platform.js +162 -0
- package/internal/detect-platform.js.map +1 -0
- package/internal/detect-platform.mjs +157 -0
- package/internal/detect-platform.mjs.map +1 -0
- package/internal/errors.d.mts +3 -0
- package/internal/errors.d.mts.map +1 -0
- package/internal/errors.d.ts +3 -0
- package/internal/errors.d.ts.map +1 -0
- package/internal/errors.js +41 -0
- package/internal/errors.js.map +1 -0
- package/internal/errors.mjs +36 -0
- package/internal/errors.mjs.map +1 -0
- package/internal/headers.d.mts +20 -0
- package/internal/headers.d.mts.map +1 -0
- package/internal/headers.d.ts +20 -0
- package/internal/headers.d.ts.map +1 -0
- package/internal/headers.js +79 -0
- package/internal/headers.js.map +1 -0
- package/internal/headers.mjs +74 -0
- package/internal/headers.mjs.map +1 -0
- package/internal/parse.d.mts +12 -0
- package/internal/parse.d.mts.map +1 -0
- package/internal/parse.d.ts +12 -0
- package/internal/parse.d.ts.map +1 -0
- package/internal/parse.js +35 -0
- package/internal/parse.js.map +1 -0
- package/internal/parse.mjs +32 -0
- package/internal/parse.mjs.map +1 -0
- package/internal/qs/formats.d.mts +6 -0
- package/internal/qs/formats.d.mts.map +1 -0
- package/internal/qs/formats.d.ts +6 -0
- package/internal/qs/formats.d.ts.map +1 -0
- package/internal/qs/formats.js +11 -0
- package/internal/qs/formats.js.map +1 -0
- package/internal/qs/formats.mjs +8 -0
- package/internal/qs/formats.mjs.map +1 -0
- package/internal/qs/index.d.mts +10 -0
- package/internal/qs/index.d.mts.map +1 -0
- package/internal/qs/index.d.ts +10 -0
- package/internal/qs/index.d.ts.map +1 -0
- package/internal/qs/index.js +14 -0
- package/internal/qs/index.js.map +1 -0
- package/internal/qs/index.mjs +10 -0
- package/internal/qs/index.mjs.map +1 -0
- package/internal/qs/stringify.d.mts +3 -0
- package/internal/qs/stringify.d.mts.map +1 -0
- package/internal/qs/stringify.d.ts +3 -0
- package/internal/qs/stringify.d.ts.map +1 -0
- package/internal/qs/stringify.js +279 -0
- package/internal/qs/stringify.js.map +1 -0
- package/internal/qs/stringify.mjs +276 -0
- package/internal/qs/stringify.mjs.map +1 -0
- package/internal/qs/types.d.mts +57 -0
- package/internal/qs/types.d.mts.map +1 -0
- package/internal/qs/types.d.ts +57 -0
- package/internal/qs/types.d.ts.map +1 -0
- package/{dist/src/common/interfaces.js → internal/qs/types.js} +1 -0
- package/internal/qs/types.js.map +1 -0
- package/internal/qs/types.mjs +2 -0
- package/internal/qs/types.mjs.map +1 -0
- package/internal/qs/utils.d.mts +14 -0
- package/internal/qs/utils.d.mts.map +1 -0
- package/internal/qs/utils.d.ts +14 -0
- package/internal/qs/utils.d.ts.map +1 -0
- package/internal/qs/utils.js +229 -0
- package/internal/qs/utils.js.map +1 -0
- package/internal/qs/utils.mjs +217 -0
- package/internal/qs/utils.mjs.map +1 -0
- package/internal/request-options.d.mts +32 -0
- package/internal/request-options.d.mts.map +1 -0
- package/internal/request-options.d.ts +32 -0
- package/internal/request-options.d.ts.map +1 -0
- package/internal/request-options.js +14 -0
- package/internal/request-options.js.map +1 -0
- package/internal/request-options.mjs +10 -0
- package/internal/request-options.mjs.map +1 -0
- package/internal/shim-types.d.mts +28 -0
- package/internal/shim-types.d.ts +28 -0
- package/internal/shims.d.mts +20 -0
- package/internal/shims.d.mts.map +1 -0
- package/internal/shims.d.ts +20 -0
- package/internal/shims.d.ts.map +1 -0
- package/internal/shims.js +92 -0
- package/internal/shims.js.map +1 -0
- package/internal/shims.mjs +85 -0
- package/internal/shims.mjs.map +1 -0
- package/internal/to-file.d.mts +45 -0
- package/internal/to-file.d.mts.map +1 -0
- package/internal/to-file.d.ts +45 -0
- package/internal/to-file.d.ts.map +1 -0
- package/internal/to-file.js +91 -0
- package/internal/to-file.js.map +1 -0
- package/internal/to-file.mjs +88 -0
- package/internal/to-file.mjs.map +1 -0
- package/internal/tslib.js +81 -0
- package/internal/tslib.mjs +17 -0
- package/internal/types.d.mts +67 -0
- package/internal/types.d.mts.map +1 -0
- package/internal/types.d.ts +67 -0
- package/internal/types.d.ts.map +1 -0
- package/internal/types.js +4 -0
- package/internal/types.js.map +1 -0
- package/internal/types.mjs +3 -0
- package/internal/types.mjs.map +1 -0
- package/internal/uploads.d.mts +42 -0
- package/internal/uploads.d.mts.map +1 -0
- package/internal/uploads.d.ts +42 -0
- package/internal/uploads.d.ts.map +1 -0
- package/internal/uploads.js +141 -0
- package/internal/uploads.js.map +1 -0
- package/internal/uploads.mjs +131 -0
- package/internal/uploads.mjs.map +1 -0
- package/internal/utils/base64.d.mts +3 -0
- package/internal/utils/base64.d.mts.map +1 -0
- package/internal/utils/base64.d.ts +3 -0
- package/internal/utils/base64.d.ts.map +1 -0
- package/internal/utils/base64.js +38 -0
- package/internal/utils/base64.js.map +1 -0
- package/internal/utils/base64.mjs +33 -0
- package/internal/utils/base64.mjs.map +1 -0
- package/internal/utils/bytes.d.mts +4 -0
- package/internal/utils/bytes.d.mts.map +1 -0
- package/internal/utils/bytes.d.ts +4 -0
- package/internal/utils/bytes.d.ts.map +1 -0
- package/internal/utils/bytes.js +31 -0
- package/internal/utils/bytes.js.map +1 -0
- package/internal/utils/bytes.mjs +26 -0
- package/internal/utils/bytes.mjs.map +1 -0
- package/internal/utils/env.d.mts +9 -0
- package/internal/utils/env.d.mts.map +1 -0
- package/internal/utils/env.d.ts +9 -0
- package/internal/utils/env.d.ts.map +1 -0
- package/internal/utils/env.js +22 -0
- package/internal/utils/env.js.map +1 -0
- package/internal/utils/env.mjs +18 -0
- package/internal/utils/env.mjs.map +1 -0
- package/internal/utils/log.d.mts +37 -0
- package/internal/utils/log.d.mts.map +1 -0
- package/internal/utils/log.d.ts +37 -0
- package/internal/utils/log.d.ts.map +1 -0
- package/internal/utils/log.js +85 -0
- package/internal/utils/log.js.map +1 -0
- package/internal/utils/log.mjs +79 -0
- package/internal/utils/log.mjs.map +1 -0
- package/internal/utils/path.d.mts +15 -0
- package/internal/utils/path.d.mts.map +1 -0
- package/internal/utils/path.d.ts +15 -0
- package/internal/utils/path.d.ts.map +1 -0
- package/internal/utils/path.js +58 -0
- package/internal/utils/path.js.map +1 -0
- package/internal/utils/path.mjs +53 -0
- package/internal/utils/path.mjs.map +1 -0
- package/internal/utils/sleep.d.mts +2 -0
- package/internal/utils/sleep.d.mts.map +1 -0
- package/internal/utils/sleep.d.ts +2 -0
- package/internal/utils/sleep.d.ts.map +1 -0
- package/internal/utils/sleep.js +7 -0
- package/internal/utils/sleep.js.map +1 -0
- package/internal/utils/sleep.mjs +3 -0
- package/internal/utils/sleep.mjs.map +1 -0
- package/internal/utils/uuid.d.mts +5 -0
- package/internal/utils/uuid.d.mts.map +1 -0
- package/internal/utils/uuid.d.ts +5 -0
- package/internal/utils/uuid.d.ts.map +1 -0
- package/internal/utils/uuid.js +19 -0
- package/internal/utils/uuid.js.map +1 -0
- package/internal/utils/uuid.mjs +15 -0
- package/internal/utils/uuid.mjs.map +1 -0
- package/internal/utils/values.d.mts +16 -0
- package/internal/utils/values.d.mts.map +1 -0
- package/internal/utils/values.d.ts +16 -0
- package/internal/utils/values.d.ts.map +1 -0
- package/internal/utils/values.js +109 -0
- package/internal/utils/values.js.map +1 -0
- package/internal/utils/values.mjs +92 -0
- package/internal/utils/values.mjs.map +1 -0
- package/internal/utils.d.mts +7 -0
- package/internal/utils.d.mts.map +1 -0
- package/internal/utils.d.ts +7 -0
- package/internal/utils.d.ts.map +1 -0
- package/internal/utils.js +11 -0
- package/internal/utils.js.map +1 -0
- package/internal/utils.mjs +8 -0
- package/internal/utils.mjs.map +1 -0
- package/lib/index.d.mts +6 -0
- package/lib/index.d.mts.map +1 -0
- package/lib/index.d.ts +6 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +9 -0
- package/lib/index.js.map +1 -0
- package/lib/index.mjs +6 -0
- package/lib/index.mjs.map +1 -0
- package/lib/tokenSigner.d.mts +46 -0
- package/lib/tokenSigner.d.mts.map +1 -0
- package/lib/tokenSigner.d.ts +46 -0
- package/lib/tokenSigner.d.ts.map +1 -0
- package/lib/tokenSigner.js +131 -0
- package/lib/tokenSigner.js.map +1 -0
- package/lib/tokenSigner.mjs +125 -0
- package/lib/tokenSigner.mjs.map +1 -0
- package/lib/userTokens.d.mts +32 -0
- package/lib/userTokens.d.mts.map +1 -0
- package/{dist/src/common → lib}/userTokens.d.ts +7 -3
- package/lib/userTokens.d.ts.map +1 -0
- package/{dist/src/common → lib}/userTokens.js +4 -0
- package/lib/userTokens.js.map +1 -0
- package/lib/userTokens.mjs +12 -0
- package/lib/userTokens.mjs.map +1 -0
- package/package.json +155 -38
- package/pagination.d.mts +2 -0
- package/pagination.d.mts.map +1 -0
- package/pagination.d.ts +2 -0
- package/pagination.d.ts.map +1 -0
- package/pagination.js +6 -0
- package/pagination.js.map +1 -0
- package/pagination.mjs +2 -0
- package/pagination.mjs.map +1 -0
- package/resource.d.mts +2 -0
- package/resource.d.mts.map +1 -0
- package/resource.d.ts +2 -0
- package/resource.d.ts.map +1 -0
- package/resource.js +6 -0
- package/resource.js.map +1 -0
- package/resource.mjs +2 -0
- package/resource.mjs.map +1 -0
- package/resources/audiences.d.mts +160 -0
- package/resources/audiences.d.mts.map +1 -0
- package/resources/audiences.d.ts +160 -0
- package/resources/audiences.d.ts.map +1 -0
- package/resources/audiences.js +53 -0
- package/resources/audiences.js.map +1 -0
- package/resources/audiences.mjs +49 -0
- package/resources/audiences.mjs.map +1 -0
- package/resources/bulk-operations.d.mts +97 -0
- package/resources/bulk-operations.d.mts.map +1 -0
- package/resources/bulk-operations.d.ts +97 -0
- package/resources/bulk-operations.d.ts.map +1 -0
- package/resources/bulk-operations.js +23 -0
- package/resources/bulk-operations.js.map +1 -0
- package/resources/bulk-operations.mjs +19 -0
- package/resources/bulk-operations.mjs.map +1 -0
- package/resources/channels/bulk.d.mts +82 -0
- package/resources/channels/bulk.d.mts.map +1 -0
- package/resources/channels/bulk.d.ts +82 -0
- package/resources/channels/bulk.d.ts.map +1 -0
- package/resources/channels/bulk.js +40 -0
- package/resources/channels/bulk.js.map +1 -0
- package/resources/channels/bulk.mjs +36 -0
- package/resources/channels/bulk.mjs.map +1 -0
- package/resources/channels/channels.d.mts +10 -0
- package/resources/channels/channels.d.mts.map +1 -0
- package/resources/channels/channels.d.ts +10 -0
- package/resources/channels/channels.d.ts.map +1 -0
- package/resources/channels/channels.js +17 -0
- package/resources/channels/channels.js.map +1 -0
- package/resources/channels/channels.mjs +12 -0
- package/resources/channels/channels.mjs.map +1 -0
- package/resources/channels/index.d.mts +3 -0
- package/resources/channels/index.d.mts.map +1 -0
- package/resources/channels/index.d.ts +3 -0
- package/resources/channels/index.d.ts.map +1 -0
- package/resources/channels/index.js +9 -0
- package/resources/channels/index.js.map +1 -0
- package/resources/channels/index.mjs +4 -0
- package/resources/channels/index.mjs.map +1 -0
- package/resources/channels.d.mts +2 -0
- package/resources/channels.d.mts.map +1 -0
- package/resources/channels.d.ts +2 -0
- package/resources/channels.d.ts.map +1 -0
- package/resources/channels.js +6 -0
- package/resources/channels.js.map +1 -0
- package/resources/channels.mjs +3 -0
- package/resources/channels.mjs.map +1 -0
- package/resources/index.d.mts +14 -0
- package/resources/index.d.mts.map +1 -0
- package/resources/index.d.ts +14 -0
- package/resources/index.d.ts.map +1 -0
- package/resources/index.js +31 -0
- package/resources/index.js.map +1 -0
- package/resources/index.mjs +15 -0
- package/resources/index.mjs.map +1 -0
- package/resources/integrations/census.d.mts +41 -0
- package/resources/integrations/census.d.mts.map +1 -0
- package/resources/integrations/census.d.ts +41 -0
- package/resources/integrations/census.d.ts.map +1 -0
- package/resources/integrations/census.js +15 -0
- package/resources/integrations/census.js.map +1 -0
- package/resources/integrations/census.mjs +11 -0
- package/resources/integrations/census.mjs.map +1 -0
- package/resources/integrations/hightouch.d.mts +41 -0
- package/resources/integrations/hightouch.d.mts.map +1 -0
- package/resources/integrations/hightouch.d.ts +41 -0
- package/resources/integrations/hightouch.d.ts.map +1 -0
- package/resources/integrations/hightouch.js +15 -0
- package/resources/integrations/hightouch.js.map +1 -0
- package/resources/integrations/hightouch.mjs +11 -0
- package/resources/integrations/hightouch.mjs.map +1 -0
- package/resources/integrations/index.d.mts +4 -0
- package/resources/integrations/index.d.mts.map +1 -0
- package/resources/integrations/index.d.ts +4 -0
- package/resources/integrations/index.d.ts.map +1 -0
- package/resources/integrations/index.js +11 -0
- package/resources/integrations/index.js.map +1 -0
- package/resources/integrations/index.mjs +5 -0
- package/resources/integrations/index.mjs.map +1 -0
- package/resources/integrations/integrations.d.mts +14 -0
- package/resources/integrations/integrations.d.mts.map +1 -0
- package/resources/integrations/integrations.d.ts +14 -0
- package/resources/integrations/integrations.d.ts.map +1 -0
- package/resources/integrations/integrations.js +21 -0
- package/resources/integrations/integrations.js.map +1 -0
- package/resources/integrations/integrations.mjs +16 -0
- package/resources/integrations/integrations.mjs.map +1 -0
- package/resources/integrations.d.mts +2 -0
- package/resources/integrations.d.mts.map +1 -0
- package/resources/integrations.d.ts +2 -0
- package/resources/integrations.d.ts.map +1 -0
- package/resources/integrations.js +6 -0
- package/resources/integrations.js.map +1 -0
- package/resources/integrations.mjs +3 -0
- package/resources/integrations.mjs.map +1 -0
- package/resources/messages/activities.d.mts +32 -0
- package/resources/messages/activities.d.mts.map +1 -0
- package/resources/messages/activities.d.ts +32 -0
- package/resources/messages/activities.d.ts.map +1 -0
- package/resources/messages/activities.js +27 -0
- package/resources/messages/activities.js.map +1 -0
- package/resources/messages/activities.mjs +23 -0
- package/resources/messages/activities.mjs.map +1 -0
- package/resources/messages/batch.d.mts +455 -0
- package/resources/messages/batch.d.mts.map +1 -0
- package/resources/messages/batch.d.ts +455 -0
- package/resources/messages/batch.d.ts.map +1 -0
- package/resources/messages/batch.js +147 -0
- package/resources/messages/batch.js.map +1 -0
- package/resources/messages/batch.mjs +143 -0
- package/resources/messages/batch.mjs.map +1 -0
- package/resources/messages/index.d.mts +4 -0
- package/resources/messages/index.d.mts.map +1 -0
- package/resources/messages/index.d.ts +4 -0
- package/resources/messages/index.d.ts.map +1 -0
- package/resources/messages/index.js +11 -0
- package/resources/messages/index.js.map +1 -0
- package/resources/messages/index.mjs +5 -0
- package/resources/messages/index.mjs.map +1 -0
- package/resources/messages/messages.d.mts +778 -0
- package/resources/messages/messages.d.mts.map +1 -0
- package/resources/messages/messages.d.ts +778 -0
- package/resources/messages/messages.d.ts.map +1 -0
- package/resources/messages/messages.js +223 -0
- package/resources/messages/messages.js.map +1 -0
- package/resources/messages/messages.mjs +218 -0
- package/resources/messages/messages.mjs.map +1 -0
- package/resources/messages.d.mts +2 -0
- package/resources/messages.d.mts.map +1 -0
- package/resources/messages.d.ts +2 -0
- package/resources/messages.d.ts.map +1 -0
- package/resources/messages.js +6 -0
- package/resources/messages.js.map +1 -0
- package/resources/messages.mjs +3 -0
- package/resources/messages.mjs.map +1 -0
- package/resources/objects/bulk.d.mts +108 -0
- package/resources/objects/bulk.d.mts.map +1 -0
- package/resources/objects/bulk.d.ts +108 -0
- package/resources/objects/bulk.d.ts.map +1 -0
- package/resources/objects/bulk.js +81 -0
- package/resources/objects/bulk.js.map +1 -0
- package/resources/objects/bulk.mjs +77 -0
- package/resources/objects/bulk.mjs.map +1 -0
- package/resources/objects/index.d.mts +3 -0
- package/resources/objects/index.d.mts.map +1 -0
- package/resources/objects/index.d.ts +3 -0
- package/resources/objects/index.d.ts.map +1 -0
- package/resources/objects/index.js +9 -0
- package/resources/objects/index.js.map +1 -0
- package/resources/objects/index.mjs +4 -0
- package/resources/objects/index.mjs.map +1 -0
- package/resources/objects/objects.d.mts +560 -0
- package/resources/objects/objects.d.mts.map +1 -0
- package/resources/objects/objects.d.ts +560 -0
- package/resources/objects/objects.d.ts.map +1 -0
- package/resources/objects/objects.js +312 -0
- package/resources/objects/objects.js.map +1 -0
- package/resources/objects/objects.mjs +307 -0
- package/resources/objects/objects.mjs.map +1 -0
- package/resources/objects.d.mts +2 -0
- package/resources/objects.d.mts.map +1 -0
- package/resources/objects.d.ts +2 -0
- package/resources/objects.d.ts.map +1 -0
- package/resources/objects.js +6 -0
- package/resources/objects.js.map +1 -0
- package/resources/objects.mjs +3 -0
- package/resources/objects.mjs.map +1 -0
- package/resources/providers/index.d.mts +4 -0
- package/resources/providers/index.d.mts.map +1 -0
- package/resources/providers/index.d.ts +4 -0
- package/resources/providers/index.d.ts.map +1 -0
- package/resources/providers/index.js +11 -0
- package/resources/providers/index.js.map +1 -0
- package/resources/providers/index.mjs +5 -0
- package/resources/providers/index.mjs.map +1 -0
- package/resources/providers/ms-teams.d.mts +223 -0
- package/resources/providers/ms-teams.d.mts.map +1 -0
- package/resources/providers/ms-teams.d.ts +223 -0
- package/resources/providers/ms-teams.d.ts.map +1 -0
- package/resources/providers/ms-teams.js +82 -0
- package/resources/providers/ms-teams.js.map +1 -0
- package/resources/providers/ms-teams.mjs +78 -0
- package/resources/providers/ms-teams.mjs.map +1 -0
- package/resources/providers/providers.d.mts +14 -0
- package/resources/providers/providers.d.mts.map +1 -0
- package/resources/providers/providers.d.ts +14 -0
- package/resources/providers/providers.d.ts.map +1 -0
- package/resources/providers/providers.js +21 -0
- package/resources/providers/providers.js.map +1 -0
- package/resources/providers/providers.mjs +16 -0
- package/resources/providers/providers.mjs.map +1 -0
- package/resources/providers/slack.d.mts +154 -0
- package/resources/providers/slack.d.mts.map +1 -0
- package/resources/providers/slack.d.ts +154 -0
- package/resources/providers/slack.d.ts.map +1 -0
- package/resources/providers/slack.js +60 -0
- package/resources/providers/slack.js.map +1 -0
- package/resources/providers/slack.mjs +56 -0
- package/resources/providers/slack.mjs.map +1 -0
- package/resources/providers.d.mts +2 -0
- package/resources/providers.d.mts.map +1 -0
- package/resources/providers.d.ts +2 -0
- package/resources/providers.d.ts.map +1 -0
- package/resources/providers.js +6 -0
- package/resources/providers.js.map +1 -0
- package/resources/providers.mjs +3 -0
- package/resources/providers.mjs.map +1 -0
- package/resources/recipients/channel-data.d.mts +205 -0
- package/resources/recipients/channel-data.d.mts.map +1 -0
- package/resources/recipients/channel-data.d.ts +205 -0
- package/resources/recipients/channel-data.d.ts.map +1 -0
- package/resources/recipients/channel-data.js +9 -0
- package/resources/recipients/channel-data.js.map +1 -0
- package/resources/recipients/channel-data.mjs +5 -0
- package/resources/recipients/channel-data.mjs.map +1 -0
- package/resources/recipients/index.d.mts +5 -0
- package/resources/recipients/index.d.mts.map +1 -0
- package/resources/recipients/index.d.ts +5 -0
- package/resources/recipients/index.d.ts.map +1 -0
- package/resources/recipients/index.js +13 -0
- package/resources/recipients/index.js.map +1 -0
- package/resources/recipients/index.mjs +6 -0
- package/resources/recipients/index.mjs.map +1 -0
- package/resources/recipients/preferences.d.mts +155 -0
- package/resources/recipients/preferences.d.mts.map +1 -0
- package/resources/recipients/preferences.d.ts +155 -0
- package/resources/recipients/preferences.d.ts.map +1 -0
- package/resources/recipients/preferences.js +9 -0
- package/resources/recipients/preferences.js.map +1 -0
- package/resources/recipients/preferences.mjs +5 -0
- package/resources/recipients/preferences.mjs.map +1 -0
- package/resources/recipients/recipients.d.mts +51 -0
- package/resources/recipients/recipients.d.mts.map +1 -0
- package/resources/recipients/recipients.d.ts +51 -0
- package/resources/recipients/recipients.d.ts.map +1 -0
- package/resources/recipients/recipients.js +23 -0
- package/resources/recipients/recipients.js.map +1 -0
- package/resources/recipients/recipients.mjs +18 -0
- package/resources/recipients/recipients.mjs.map +1 -0
- package/resources/recipients/subscriptions.d.mts +40 -0
- package/resources/recipients/subscriptions.d.mts.map +1 -0
- package/resources/recipients/subscriptions.d.ts +40 -0
- package/resources/recipients/subscriptions.d.ts.map +1 -0
- package/resources/recipients/subscriptions.js +9 -0
- package/resources/recipients/subscriptions.js.map +1 -0
- package/resources/recipients/subscriptions.mjs +5 -0
- package/resources/recipients/subscriptions.mjs.map +1 -0
- package/resources/recipients.d.mts +2 -0
- package/resources/recipients.d.mts.map +1 -0
- package/resources/recipients.d.ts +2 -0
- package/resources/recipients.d.ts.map +1 -0
- package/resources/recipients.js +6 -0
- package/resources/recipients.js.map +1 -0
- package/resources/recipients.mjs +3 -0
- package/resources/recipients.mjs.map +1 -0
- package/resources/schedules/bulk.d.mts +98 -0
- package/resources/schedules/bulk.d.mts.map +1 -0
- package/resources/schedules/bulk.d.ts +98 -0
- package/resources/schedules/bulk.d.ts.map +1 -0
- package/resources/schedules/bulk.js +47 -0
- package/resources/schedules/bulk.js.map +1 -0
- package/resources/schedules/bulk.mjs +43 -0
- package/resources/schedules/bulk.mjs.map +1 -0
- package/resources/schedules/index.d.mts +3 -0
- package/resources/schedules/index.d.mts.map +1 -0
- package/resources/schedules/index.d.ts +3 -0
- package/resources/schedules/index.d.ts.map +1 -0
- package/resources/schedules/index.js +9 -0
- package/resources/schedules/index.js.map +1 -0
- package/resources/schedules/index.mjs +4 -0
- package/resources/schedules/index.mjs.map +1 -0
- package/resources/schedules/schedules.d.mts +299 -0
- package/resources/schedules/schedules.d.mts.map +1 -0
- package/resources/schedules/schedules.d.ts +299 -0
- package/resources/schedules/schedules.d.ts.map +1 -0
- package/resources/schedules/schedules.js +126 -0
- package/resources/schedules/schedules.js.map +1 -0
- package/resources/schedules/schedules.mjs +121 -0
- package/resources/schedules/schedules.mjs.map +1 -0
- package/resources/schedules.d.mts +2 -0
- package/resources/schedules.d.mts.map +1 -0
- package/resources/schedules.d.ts +2 -0
- package/resources/schedules.d.ts.map +1 -0
- package/resources/schedules.js +6 -0
- package/resources/schedules.js.map +1 -0
- package/resources/schedules.mjs +3 -0
- package/resources/schedules.mjs.map +1 -0
- package/resources/shared.d.mts +45 -0
- package/resources/shared.d.mts.map +1 -0
- package/resources/shared.d.ts +45 -0
- package/resources/shared.d.ts.map +1 -0
- package/resources/shared.js +9 -0
- package/resources/shared.js.map +1 -0
- package/resources/shared.mjs +5 -0
- package/resources/shared.mjs.map +1 -0
- package/resources/tenants/bulk.d.mts +45 -0
- package/resources/tenants/bulk.d.mts.map +1 -0
- package/resources/tenants/bulk.d.ts +45 -0
- package/resources/tenants/bulk.d.ts.map +1 -0
- package/resources/tenants/bulk.js +36 -0
- package/resources/tenants/bulk.js.map +1 -0
- package/resources/tenants/bulk.mjs +32 -0
- package/resources/tenants/bulk.mjs.map +1 -0
- package/resources/tenants/index.d.mts +3 -0
- package/resources/tenants/index.d.mts.map +1 -0
- package/resources/tenants/index.d.ts +3 -0
- package/resources/tenants/index.d.ts.map +1 -0
- package/resources/tenants/index.js +9 -0
- package/resources/tenants/index.js.map +1 -0
- package/resources/tenants/index.mjs +4 -0
- package/resources/tenants/index.mjs.map +1 -0
- package/resources/tenants/tenants.d.mts +266 -0
- package/resources/tenants/tenants.d.mts.map +1 -0
- package/resources/tenants/tenants.d.ts +266 -0
- package/resources/tenants/tenants.d.ts.map +1 -0
- package/resources/tenants/tenants.js +77 -0
- package/resources/tenants/tenants.js.map +1 -0
- package/resources/tenants/tenants.mjs +72 -0
- package/resources/tenants/tenants.mjs.map +1 -0
- package/resources/tenants.d.mts +2 -0
- package/resources/tenants.d.mts.map +1 -0
- package/resources/tenants.d.ts +2 -0
- package/resources/tenants.d.ts.map +1 -0
- package/resources/tenants.js +6 -0
- package/resources/tenants.js.map +1 -0
- package/resources/tenants.mjs +3 -0
- package/resources/tenants.mjs.map +1 -0
- package/resources/users/bulk.d.mts +92 -0
- package/resources/users/bulk.d.mts.map +1 -0
- package/resources/users/bulk.d.ts +92 -0
- package/resources/users/bulk.d.ts.map +1 -0
- package/resources/users/bulk.js +73 -0
- package/resources/users/bulk.js.map +1 -0
- package/resources/users/bulk.mjs +69 -0
- package/resources/users/bulk.mjs.map +1 -0
- package/resources/users/feeds.d.mts +248 -0
- package/resources/users/feeds.d.mts.map +1 -0
- package/resources/users/feeds.d.ts +248 -0
- package/resources/users/feeds.d.ts.map +1 -0
- package/resources/users/feeds.js +43 -0
- package/resources/users/feeds.js.map +1 -0
- package/resources/users/feeds.mjs +39 -0
- package/resources/users/feeds.mjs.map +1 -0
- package/resources/users/guides.d.mts +293 -0
- package/resources/users/guides.d.mts.map +1 -0
- package/resources/users/guides.d.ts +293 -0
- package/resources/users/guides.d.ts.map +1 -0
- package/resources/users/guides.js +114 -0
- package/resources/users/guides.js.map +1 -0
- package/resources/users/guides.mjs +110 -0
- package/resources/users/guides.mjs.map +1 -0
- package/resources/users/index.d.mts +5 -0
- package/resources/users/index.d.mts.map +1 -0
- package/resources/users/index.d.ts +5 -0
- package/resources/users/index.d.ts.map +1 -0
- package/resources/users/index.js +13 -0
- package/resources/users/index.js.map +1 -0
- package/resources/users/index.mjs +6 -0
- package/resources/users/index.mjs.map +1 -0
- package/resources/users/users.d.mts +585 -0
- package/resources/users/users.d.mts.map +1 -0
- package/resources/users/users.d.ts +585 -0
- package/resources/users/users.d.ts.map +1 -0
- package/resources/users/users.js +262 -0
- package/resources/users/users.js.map +1 -0
- package/resources/users/users.mjs +257 -0
- package/resources/users/users.mjs.map +1 -0
- package/resources/users.d.mts +2 -0
- package/resources/users.d.mts.map +1 -0
- package/resources/users.d.ts +2 -0
- package/resources/users.d.ts.map +1 -0
- package/resources/users.js +6 -0
- package/resources/users.js.map +1 -0
- package/resources/users.mjs +3 -0
- package/resources/users.mjs.map +1 -0
- package/resources/workflows.d.mts +113 -0
- package/resources/workflows.d.mts.map +1 -0
- package/resources/workflows.d.ts +113 -0
- package/resources/workflows.d.ts.map +1 -0
- package/resources/workflows.js +58 -0
- package/resources/workflows.js.map +1 -0
- package/resources/workflows.mjs +54 -0
- package/resources/workflows.mjs.map +1 -0
- package/resources.d.mts +2 -0
- package/resources.d.mts.map +1 -0
- package/resources.d.ts +2 -0
- package/resources.d.ts.map +1 -0
- package/resources.js +5 -0
- package/resources.js.map +1 -0
- package/resources.mjs +2 -0
- package/resources.mjs.map +1 -0
- package/src/api-promise.ts +2 -0
- package/src/client.ts +984 -0
- package/src/core/README.md +3 -0
- package/src/core/api-promise.ts +92 -0
- package/src/core/error.ts +130 -0
- package/src/core/pagination.ts +323 -0
- package/src/core/resource.ts +11 -0
- package/src/core/uploads.ts +2 -0
- package/src/error.ts +2 -0
- package/src/index.ts +23 -0
- package/src/internal/README.md +3 -0
- package/src/internal/builtin-types.ts +93 -0
- package/src/internal/detect-platform.ts +196 -0
- package/src/internal/errors.ts +33 -0
- package/src/internal/headers.ts +97 -0
- package/src/internal/parse.ts +50 -0
- package/src/internal/qs/LICENSE.md +13 -0
- package/src/internal/qs/README.md +3 -0
- package/src/internal/qs/formats.ts +9 -0
- package/src/internal/qs/index.ts +13 -0
- package/src/internal/qs/stringify.ts +388 -0
- package/src/internal/qs/types.ts +71 -0
- package/src/internal/qs/utils.ts +265 -0
- package/src/internal/request-options.ts +37 -0
- package/src/internal/shim-types.d.ts +28 -0
- package/src/internal/shims.ts +107 -0
- package/src/internal/to-file.ts +154 -0
- package/src/internal/types.ts +92 -0
- package/src/internal/uploads.ts +187 -0
- package/src/internal/utils/base64.ts +40 -0
- package/src/internal/utils/bytes.ts +32 -0
- package/src/internal/utils/env.ts +18 -0
- package/src/internal/utils/log.ts +126 -0
- package/src/internal/utils/path.ts +63 -0
- package/src/internal/utils/sleep.ts +3 -0
- package/src/internal/utils/uuid.ts +17 -0
- package/src/internal/utils/values.ts +102 -0
- package/src/internal/utils.ts +8 -0
- package/src/lib/.keep +4 -0
- package/src/lib/index.ts +6 -0
- package/src/lib/tokenSigner.ts +170 -0
- package/src/lib/userTokens.ts +38 -0
- package/src/pagination.ts +2 -0
- package/src/resource.ts +2 -0
- package/src/resources/audiences.ts +200 -0
- package/src/resources/bulk-operations.ts +120 -0
- package/src/resources/channels/bulk.ts +128 -0
- package/src/resources/channels/channels.ts +15 -0
- package/src/resources/channels/index.ts +4 -0
- package/src/resources/channels.ts +3 -0
- package/src/resources/index.ts +108 -0
- package/src/resources/integrations/census.ts +58 -0
- package/src/resources/integrations/hightouch.ts +58 -0
- package/src/resources/integrations/index.ts +9 -0
- package/src/resources/integrations/integrations.ts +33 -0
- package/src/resources/integrations.ts +3 -0
- package/src/resources/messages/activities.ts +48 -0
- package/src/resources/messages/batch.ts +575 -0
- package/src/resources/messages/index.ts +39 -0
- package/src/resources/messages/messages.ts +1055 -0
- package/src/resources/messages.ts +3 -0
- package/src/resources/objects/bulk.ts +141 -0
- package/src/resources/objects/index.ts +23 -0
- package/src/resources/objects/objects.ts +794 -0
- package/src/resources/objects.ts +3 -0
- package/src/resources/providers/index.ts +25 -0
- package/src/resources/providers/ms-teams.ts +300 -0
- package/src/resources/providers/providers.ts +61 -0
- package/src/resources/providers/slack.ts +213 -0
- package/src/resources/providers.ts +3 -0
- package/src/resources/recipients/channel-data.ts +255 -0
- package/src/resources/recipients/index.ts +22 -0
- package/src/resources/recipients/preferences.ts +192 -0
- package/src/resources/recipients/recipients.ts +101 -0
- package/src/resources/recipients/subscriptions.ts +49 -0
- package/src/resources/recipients.ts +3 -0
- package/src/resources/schedules/bulk.ts +112 -0
- package/src/resources/schedules/index.ts +16 -0
- package/src/resources/schedules/schedules.ts +369 -0
- package/src/resources/schedules.ts +3 -0
- package/src/resources/shared.ts +72 -0
- package/src/resources/tenants/bulk.ts +56 -0
- package/src/resources/tenants/index.ts +13 -0
- package/src/resources/tenants/tenants.ts +333 -0
- package/src/resources/tenants.ts +3 -0
- package/src/resources/users/bulk.ts +114 -0
- package/src/resources/users/feeds.ts +315 -0
- package/src/resources/users/guides.ts +386 -0
- package/src/resources/users/index.ts +40 -0
- package/src/resources/users/users.ts +823 -0
- package/src/resources/users.ts +3 -0
- package/src/resources/workflows.ts +140 -0
- package/src/resources.ts +1 -0
- package/src/tsconfig.json +11 -0
- package/src/uploads.ts +2 -0
- package/src/version.ts +1 -0
- package/uploads.d.mts +2 -0
- package/uploads.d.mts.map +1 -0
- package/uploads.d.ts +2 -0
- package/uploads.d.ts.map +1 -0
- package/uploads.js +6 -0
- package/uploads.js.map +1 -0
- package/uploads.mjs +2 -0
- package/uploads.mjs.map +1 -0
- package/version.d.mts +2 -0
- package/version.d.mts.map +1 -0
- package/version.d.ts +2 -0
- package/version.d.ts.map +1 -0
- package/version.js +5 -0
- package/version.js.map +1 -0
- package/version.mjs +2 -0
- package/version.mjs.map +1 -0
- package/dist/package.json +0 -48
- package/dist/src/common/exceptions.d.ts +0 -48
- package/dist/src/common/exceptions.js +0 -78
- package/dist/src/common/fetchClient.d.ts +0 -28
- package/dist/src/common/fetchClient.js +0 -148
- package/dist/src/common/interfaces.d.ts +0 -70
- package/dist/src/index.d.ts +0 -8
- package/dist/src/index.js +0 -26
- package/dist/src/knock.d.ts +0 -57
- package/dist/src/knock.js +0 -241
- package/dist/src/resources/activities/interfaces.d.ts +0 -11
- package/dist/src/resources/activities/interfaces.js +0 -2
- package/dist/src/resources/bulk_operations/index.d.ts +0 -7
- package/dist/src/resources/bulk_operations/index.js +0 -24
- package/dist/src/resources/bulk_operations/interfaces.d.ts +0 -12
- package/dist/src/resources/bulk_operations/interfaces.js +0 -2
- package/dist/src/resources/messages/index.d.ts +0 -16
- package/dist/src/resources/messages/index.js +0 -93
- package/dist/src/resources/messages/interfaces.d.ts +0 -58
- package/dist/src/resources/messages/interfaces.js +0 -2
- package/dist/src/resources/objects/index.d.ts +0 -36
- package/dist/src/resources/objects/index.js +0 -203
- package/dist/src/resources/objects/interfaces.d.ts +0 -51
- package/dist/src/resources/objects/interfaces.js +0 -2
- package/dist/src/resources/preferences/helpers.d.ts +0 -7
- package/dist/src/resources/preferences/helpers.js +0 -11
- package/dist/src/resources/preferences/interfaces.d.ts +0 -30
- package/dist/src/resources/preferences/interfaces.js +0 -2
- package/dist/src/resources/slack/index.d.ts +0 -9
- package/dist/src/resources/slack/index.js +0 -75
- package/dist/src/resources/slack/interfaces.d.ts +0 -30
- package/dist/src/resources/slack/interfaces.js +0 -2
- package/dist/src/resources/tenants/index.d.ts +0 -11
- package/dist/src/resources/tenants/index.js +0 -42
- package/dist/src/resources/tenants/interfaces.d.ts +0 -32
- package/dist/src/resources/tenants/interfaces.js +0 -2
- package/dist/src/resources/users/index.d.ts +0 -36
- package/dist/src/resources/users/index.js +0 -232
- package/dist/src/resources/users/interfaces.d.ts +0 -34
- package/dist/src/resources/users/interfaces.js +0 -2
- package/dist/src/resources/workflows/index.d.ts +0 -13
- package/dist/src/resources/workflows/index.js +0 -72
- package/dist/src/resources/workflows/interfaces.d.ts +0 -90
- package/dist/src/resources/workflows/interfaces.js +0 -20
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/internal/utils.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const tslib_1 = require("./tslib.js");
|
|
5
|
+
tslib_1.__exportStar(require("./utils/values.js"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./utils/base64.js"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./utils/env.js"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./utils/log.js"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./utils/uuid.js"), exports);
|
|
10
|
+
tslib_1.__exportStar(require("./utils/sleep.js"), exports);
|
|
11
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/internal/utils.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AAEtF,4DAA+B;AAC/B,4DAA+B;AAC/B,yDAA4B;AAC5B,yDAA4B;AAC5B,0DAA6B;AAC7B,2DAA8B"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
export * from "./utils/values.mjs";
|
|
3
|
+
export * from "./utils/base64.mjs";
|
|
4
|
+
export * from "./utils/env.mjs";
|
|
5
|
+
export * from "./utils/log.mjs";
|
|
6
|
+
export * from "./utils/uuid.mjs";
|
|
7
|
+
export * from "./utils/sleep.mjs";
|
|
8
|
+
//# sourceMappingURL=utils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.mjs","sourceRoot":"","sources":["../src/internal/utils.ts"],"names":[],"mappings":"AAAA,sFAAsF"}
|
package/lib/index.d.mts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Exports for Knock custom functionality
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const tslib_1 = require("../internal/tslib.js");
|
|
7
|
+
tslib_1.__exportStar(require("./userTokens.js"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./tokenSigner.js"), exports);
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,0DAA6B;AAC7B,2DAA8B"}
|
package/lib/index.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token signing functionality for Knock authentication
|
|
3
|
+
*/
|
|
4
|
+
import type { TokenEntity, TokenGrant, TokenGrantOptions } from "./userTokens.mjs";
|
|
5
|
+
/**
|
|
6
|
+
* Options for signing a user token
|
|
7
|
+
*/
|
|
8
|
+
export interface SignUserTokenOptions {
|
|
9
|
+
/**
|
|
10
|
+
* The signing key to use (in PEM or base-64 encoded format)
|
|
11
|
+
* If not provided, it will try to use process.env.KNOCK_SIGNING_KEY
|
|
12
|
+
*/
|
|
13
|
+
signingKey?: string | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* How long the token should be valid for in seconds
|
|
16
|
+
* @default 3600 (1 hour)
|
|
17
|
+
*/
|
|
18
|
+
expiresInSeconds?: number | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* Grants to include in the token
|
|
21
|
+
*/
|
|
22
|
+
grants?: TokenGrant[] | undefined;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Prepare user token grants
|
|
26
|
+
*/
|
|
27
|
+
export declare function maybePrepareUserTokenGrants(grants: TokenGrant[] | undefined): Record<string, TokenGrant['grants']> | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Helper function to build user token grants to pass to the `signUserToken` method.
|
|
30
|
+
*
|
|
31
|
+
* @param entity {TokenEntity} The type of entity to build a grant for
|
|
32
|
+
* @param grants {TokenGrantOptions} A list of grants to give to the entity for the user
|
|
33
|
+
*
|
|
34
|
+
* @returns {TokenGrant} A single token grant that can be passed to the signUserToken function
|
|
35
|
+
*/
|
|
36
|
+
export declare function buildUserTokenGrant(entity: TokenEntity, grants: TokenGrantOptions): TokenGrant;
|
|
37
|
+
/**
|
|
38
|
+
* Generate JWT for authenticating client-side requests (e.g. in-app feeds)
|
|
39
|
+
* For more information, visit https://docs.knock.app/in-app-ui/security-and-authentication#authentication-with-enhanced-security-enabled
|
|
40
|
+
*
|
|
41
|
+
* @param userId {string} The ID of the user that needs a token, e.g. the user viewing an in-app feed.
|
|
42
|
+
* @param options Optionally specify the signing key to use (in PEM or base-64 encoded format), and how long the token should be valid for in seconds
|
|
43
|
+
* @returns {Promise<string>} A JWT token that can be used to authenticate requests to the Knock API (e.g. by passing into the <KnockFeedProvider /> component)
|
|
44
|
+
*/
|
|
45
|
+
export declare function signUserToken(userId: string, options?: SignUserTokenOptions): Promise<string>;
|
|
46
|
+
//# sourceMappingURL=tokenSigner.d.mts.map
|
|
@@ -0,0 +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;AAuED;;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,CAyBnG"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token signing functionality for Knock authentication
|
|
3
|
+
*/
|
|
4
|
+
import type { TokenEntity, TokenGrant, TokenGrantOptions } from "./userTokens.js";
|
|
5
|
+
/**
|
|
6
|
+
* Options for signing a user token
|
|
7
|
+
*/
|
|
8
|
+
export interface SignUserTokenOptions {
|
|
9
|
+
/**
|
|
10
|
+
* The signing key to use (in PEM or base-64 encoded format)
|
|
11
|
+
* If not provided, it will try to use process.env.KNOCK_SIGNING_KEY
|
|
12
|
+
*/
|
|
13
|
+
signingKey?: string | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* How long the token should be valid for in seconds
|
|
16
|
+
* @default 3600 (1 hour)
|
|
17
|
+
*/
|
|
18
|
+
expiresInSeconds?: number | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* Grants to include in the token
|
|
21
|
+
*/
|
|
22
|
+
grants?: TokenGrant[] | undefined;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Prepare user token grants
|
|
26
|
+
*/
|
|
27
|
+
export declare function maybePrepareUserTokenGrants(grants: TokenGrant[] | undefined): Record<string, TokenGrant['grants']> | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Helper function to build user token grants to pass to the `signUserToken` method.
|
|
30
|
+
*
|
|
31
|
+
* @param entity {TokenEntity} The type of entity to build a grant for
|
|
32
|
+
* @param grants {TokenGrantOptions} A list of grants to give to the entity for the user
|
|
33
|
+
*
|
|
34
|
+
* @returns {TokenGrant} A single token grant that can be passed to the signUserToken function
|
|
35
|
+
*/
|
|
36
|
+
export declare function buildUserTokenGrant(entity: TokenEntity, grants: TokenGrantOptions): TokenGrant;
|
|
37
|
+
/**
|
|
38
|
+
* Generate JWT for authenticating client-side requests (e.g. in-app feeds)
|
|
39
|
+
* For more information, visit https://docs.knock.app/in-app-ui/security-and-authentication#authentication-with-enhanced-security-enabled
|
|
40
|
+
*
|
|
41
|
+
* @param userId {string} The ID of the user that needs a token, e.g. the user viewing an in-app feed.
|
|
42
|
+
* @param options Optionally specify the signing key to use (in PEM or base-64 encoded format), and how long the token should be valid for in seconds
|
|
43
|
+
* @returns {Promise<string>} A JWT token that can be used to authenticate requests to the Knock API (e.g. by passing into the <KnockFeedProvider /> component)
|
|
44
|
+
*/
|
|
45
|
+
export declare function signUserToken(userId: string, options?: SignUserTokenOptions): Promise<string>;
|
|
46
|
+
//# sourceMappingURL=tokenSigner.d.ts.map
|
|
@@ -0,0 +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;AAuED;;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,CAyBnG"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Token signing functionality for Knock authentication
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.maybePrepareUserTokenGrants = maybePrepareUserTokenGrants;
|
|
7
|
+
exports.buildUserTokenGrant = buildUserTokenGrant;
|
|
8
|
+
exports.signUserToken = signUserToken;
|
|
9
|
+
const tslib_1 = require("../internal/tslib.js");
|
|
10
|
+
const crypto = tslib_1.__importStar(require("crypto"));
|
|
11
|
+
// Default hostname for Knock API
|
|
12
|
+
const DEFAULT_HOSTNAME = 'https://api.knock.app';
|
|
13
|
+
/**
|
|
14
|
+
* Prepare the signing key for use
|
|
15
|
+
*/
|
|
16
|
+
function prepareSigningKey(key) {
|
|
17
|
+
const maybeSigningKey = key ?? process.env['KNOCK_SIGNING_KEY'];
|
|
18
|
+
if (!maybeSigningKey)
|
|
19
|
+
throw new Error('No signing key provided. Set KNOCK_SIGNING_KEY environment variable or pass signingKey option.');
|
|
20
|
+
// If it's already in PEM format
|
|
21
|
+
if (maybeSigningKey.startsWith('-----BEGIN'))
|
|
22
|
+
return maybeSigningKey;
|
|
23
|
+
// LS0tLS1CRUdJTi is the base64 encoded version of "-----BEGIN"
|
|
24
|
+
if (maybeSigningKey.startsWith('LS0tLS1CRUdJTi'))
|
|
25
|
+
return Buffer.from(maybeSigningKey, 'base64').toString('utf-8');
|
|
26
|
+
throw new Error('Invalid signing key format. Must be PEM or base64 encoded PEM.');
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Prepare the token entity URI
|
|
30
|
+
*/
|
|
31
|
+
function prepareTokenEntityUri(entity) {
|
|
32
|
+
switch (entity.type) {
|
|
33
|
+
case 'user':
|
|
34
|
+
return `${DEFAULT_HOSTNAME}/v1/users/${entity.id}`;
|
|
35
|
+
case 'tenant':
|
|
36
|
+
return `${DEFAULT_HOSTNAME}/v1/objects/$tenants/${entity.id}`;
|
|
37
|
+
case 'object':
|
|
38
|
+
return `${DEFAULT_HOSTNAME}/v1/objects/${entity.collection}/${entity.id}`;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Create and sign a JWT using Node.js crypto
|
|
43
|
+
*/
|
|
44
|
+
function createJWT(header, payload, privateKey) {
|
|
45
|
+
// Base64Url encode the header
|
|
46
|
+
const headerBase64 = Buffer.from(JSON.stringify(header))
|
|
47
|
+
.toString('base64')
|
|
48
|
+
.replace(/=/g, '')
|
|
49
|
+
.replace(/\+/g, '-')
|
|
50
|
+
.replace(/\//g, '_');
|
|
51
|
+
// Base64Url encode the payload
|
|
52
|
+
const payloadBase64 = Buffer.from(JSON.stringify(payload))
|
|
53
|
+
.toString('base64')
|
|
54
|
+
.replace(/=/g, '')
|
|
55
|
+
.replace(/\+/g, '-')
|
|
56
|
+
.replace(/\//g, '_');
|
|
57
|
+
// Create the content to sign
|
|
58
|
+
const signatureContent = `${headerBase64}.${payloadBase64}`;
|
|
59
|
+
// Sign the content
|
|
60
|
+
const signer = crypto.createSign('RSA-SHA256');
|
|
61
|
+
signer.update(signatureContent);
|
|
62
|
+
const signature = signer
|
|
63
|
+
.sign(privateKey, 'base64')
|
|
64
|
+
.replace(/=/g, '')
|
|
65
|
+
.replace(/\+/g, '-')
|
|
66
|
+
.replace(/\//g, '_');
|
|
67
|
+
// Combine to create the JWT
|
|
68
|
+
return `${signatureContent}.${signature}`;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Prepare user token grants
|
|
72
|
+
*/
|
|
73
|
+
function maybePrepareUserTokenGrants(grants) {
|
|
74
|
+
if (!grants)
|
|
75
|
+
return undefined;
|
|
76
|
+
// Given a list of token grants, flattens them into a single object
|
|
77
|
+
// like: { "entity": { "slack/channels_read": [] } }
|
|
78
|
+
return grants.reduce((acc, grant) => {
|
|
79
|
+
if (acc[grant.entity]) {
|
|
80
|
+
const currentGrants = acc[grant.entity];
|
|
81
|
+
return { ...acc, [grant.entity]: { ...currentGrants, ...grant.grants } };
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
return { ...acc, [grant.entity]: grant.grants };
|
|
85
|
+
}
|
|
86
|
+
}, {});
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Helper function to build user token grants to pass to the `signUserToken` method.
|
|
90
|
+
*
|
|
91
|
+
* @param entity {TokenEntity} The type of entity to build a grant for
|
|
92
|
+
* @param grants {TokenGrantOptions} A list of grants to give to the entity for the user
|
|
93
|
+
*
|
|
94
|
+
* @returns {TokenGrant} A single token grant that can be passed to the signUserToken function
|
|
95
|
+
*/
|
|
96
|
+
function buildUserTokenGrant(entity, grants) {
|
|
97
|
+
return {
|
|
98
|
+
entity: prepareTokenEntityUri(entity),
|
|
99
|
+
grants: grants.reduce((acc, grant) => ({ ...acc, [grant]: [] }), {}),
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Generate JWT for authenticating client-side requests (e.g. in-app feeds)
|
|
104
|
+
* For more information, visit https://docs.knock.app/in-app-ui/security-and-authentication#authentication-with-enhanced-security-enabled
|
|
105
|
+
*
|
|
106
|
+
* @param userId {string} The ID of the user that needs a token, e.g. the user viewing an in-app feed.
|
|
107
|
+
* @param options Optionally specify the signing key to use (in PEM or base-64 encoded format), and how long the token should be valid for in seconds
|
|
108
|
+
* @returns {Promise<string>} A JWT token that can be used to authenticate requests to the Knock API (e.g. by passing into the <KnockFeedProvider /> component)
|
|
109
|
+
*/
|
|
110
|
+
async function signUserToken(userId, options) {
|
|
111
|
+
const signingKey = prepareSigningKey(options?.signingKey);
|
|
112
|
+
// JWT NumericDates specified in seconds
|
|
113
|
+
const currentTime = Math.floor(Date.now() / 1000);
|
|
114
|
+
// Default to 1 hour from now
|
|
115
|
+
const expireInSeconds = options?.expiresInSeconds ?? 60 * 60;
|
|
116
|
+
// Create JWT header
|
|
117
|
+
const header = {
|
|
118
|
+
alg: 'RS256',
|
|
119
|
+
typ: 'JWT',
|
|
120
|
+
};
|
|
121
|
+
// Create JWT payload
|
|
122
|
+
const payload = {
|
|
123
|
+
sub: userId,
|
|
124
|
+
grants: maybePrepareUserTokenGrants(options?.grants),
|
|
125
|
+
iat: currentTime,
|
|
126
|
+
exp: currentTime + expireInSeconds,
|
|
127
|
+
};
|
|
128
|
+
// Create and sign the JWT
|
|
129
|
+
return createJWT(header, payload, signingKey);
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=tokenSigner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenSigner.js","sourceRoot":"","sources":["../src/lib/tokenSigner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token signing functionality for Knock authentication
|
|
3
|
+
*/
|
|
4
|
+
import * as crypto from 'crypto';
|
|
5
|
+
// Default hostname for Knock API
|
|
6
|
+
const DEFAULT_HOSTNAME = 'https://api.knock.app';
|
|
7
|
+
/**
|
|
8
|
+
* Prepare the signing key for use
|
|
9
|
+
*/
|
|
10
|
+
function prepareSigningKey(key) {
|
|
11
|
+
const maybeSigningKey = key ?? process.env['KNOCK_SIGNING_KEY'];
|
|
12
|
+
if (!maybeSigningKey)
|
|
13
|
+
throw new Error('No signing key provided. Set KNOCK_SIGNING_KEY environment variable or pass signingKey option.');
|
|
14
|
+
// If it's already in PEM format
|
|
15
|
+
if (maybeSigningKey.startsWith('-----BEGIN'))
|
|
16
|
+
return maybeSigningKey;
|
|
17
|
+
// LS0tLS1CRUdJTi is the base64 encoded version of "-----BEGIN"
|
|
18
|
+
if (maybeSigningKey.startsWith('LS0tLS1CRUdJTi'))
|
|
19
|
+
return Buffer.from(maybeSigningKey, 'base64').toString('utf-8');
|
|
20
|
+
throw new Error('Invalid signing key format. Must be PEM or base64 encoded PEM.');
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Prepare the token entity URI
|
|
24
|
+
*/
|
|
25
|
+
function prepareTokenEntityUri(entity) {
|
|
26
|
+
switch (entity.type) {
|
|
27
|
+
case 'user':
|
|
28
|
+
return `${DEFAULT_HOSTNAME}/v1/users/${entity.id}`;
|
|
29
|
+
case 'tenant':
|
|
30
|
+
return `${DEFAULT_HOSTNAME}/v1/objects/$tenants/${entity.id}`;
|
|
31
|
+
case 'object':
|
|
32
|
+
return `${DEFAULT_HOSTNAME}/v1/objects/${entity.collection}/${entity.id}`;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Create and sign a JWT using Node.js crypto
|
|
37
|
+
*/
|
|
38
|
+
function createJWT(header, payload, privateKey) {
|
|
39
|
+
// Base64Url encode the header
|
|
40
|
+
const headerBase64 = Buffer.from(JSON.stringify(header))
|
|
41
|
+
.toString('base64')
|
|
42
|
+
.replace(/=/g, '')
|
|
43
|
+
.replace(/\+/g, '-')
|
|
44
|
+
.replace(/\//g, '_');
|
|
45
|
+
// Base64Url encode the payload
|
|
46
|
+
const payloadBase64 = Buffer.from(JSON.stringify(payload))
|
|
47
|
+
.toString('base64')
|
|
48
|
+
.replace(/=/g, '')
|
|
49
|
+
.replace(/\+/g, '-')
|
|
50
|
+
.replace(/\//g, '_');
|
|
51
|
+
// Create the content to sign
|
|
52
|
+
const signatureContent = `${headerBase64}.${payloadBase64}`;
|
|
53
|
+
// Sign the content
|
|
54
|
+
const signer = crypto.createSign('RSA-SHA256');
|
|
55
|
+
signer.update(signatureContent);
|
|
56
|
+
const signature = signer
|
|
57
|
+
.sign(privateKey, 'base64')
|
|
58
|
+
.replace(/=/g, '')
|
|
59
|
+
.replace(/\+/g, '-')
|
|
60
|
+
.replace(/\//g, '_');
|
|
61
|
+
// Combine to create the JWT
|
|
62
|
+
return `${signatureContent}.${signature}`;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Prepare user token grants
|
|
66
|
+
*/
|
|
67
|
+
export function maybePrepareUserTokenGrants(grants) {
|
|
68
|
+
if (!grants)
|
|
69
|
+
return undefined;
|
|
70
|
+
// Given a list of token grants, flattens them into a single object
|
|
71
|
+
// like: { "entity": { "slack/channels_read": [] } }
|
|
72
|
+
return grants.reduce((acc, grant) => {
|
|
73
|
+
if (acc[grant.entity]) {
|
|
74
|
+
const currentGrants = acc[grant.entity];
|
|
75
|
+
return { ...acc, [grant.entity]: { ...currentGrants, ...grant.grants } };
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
return { ...acc, [grant.entity]: grant.grants };
|
|
79
|
+
}
|
|
80
|
+
}, {});
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Helper function to build user token grants to pass to the `signUserToken` method.
|
|
84
|
+
*
|
|
85
|
+
* @param entity {TokenEntity} The type of entity to build a grant for
|
|
86
|
+
* @param grants {TokenGrantOptions} A list of grants to give to the entity for the user
|
|
87
|
+
*
|
|
88
|
+
* @returns {TokenGrant} A single token grant that can be passed to the signUserToken function
|
|
89
|
+
*/
|
|
90
|
+
export function buildUserTokenGrant(entity, grants) {
|
|
91
|
+
return {
|
|
92
|
+
entity: prepareTokenEntityUri(entity),
|
|
93
|
+
grants: grants.reduce((acc, grant) => ({ ...acc, [grant]: [] }), {}),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Generate JWT for authenticating client-side requests (e.g. in-app feeds)
|
|
98
|
+
* For more information, visit https://docs.knock.app/in-app-ui/security-and-authentication#authentication-with-enhanced-security-enabled
|
|
99
|
+
*
|
|
100
|
+
* @param userId {string} The ID of the user that needs a token, e.g. the user viewing an in-app feed.
|
|
101
|
+
* @param options Optionally specify the signing key to use (in PEM or base-64 encoded format), and how long the token should be valid for in seconds
|
|
102
|
+
* @returns {Promise<string>} A JWT token that can be used to authenticate requests to the Knock API (e.g. by passing into the <KnockFeedProvider /> component)
|
|
103
|
+
*/
|
|
104
|
+
export async function signUserToken(userId, options) {
|
|
105
|
+
const signingKey = prepareSigningKey(options?.signingKey);
|
|
106
|
+
// JWT NumericDates specified in seconds
|
|
107
|
+
const currentTime = Math.floor(Date.now() / 1000);
|
|
108
|
+
// Default to 1 hour from now
|
|
109
|
+
const expireInSeconds = options?.expiresInSeconds ?? 60 * 60;
|
|
110
|
+
// Create JWT header
|
|
111
|
+
const header = {
|
|
112
|
+
alg: 'RS256',
|
|
113
|
+
typ: 'JWT',
|
|
114
|
+
};
|
|
115
|
+
// Create JWT payload
|
|
116
|
+
const payload = {
|
|
117
|
+
sub: userId,
|
|
118
|
+
grants: maybePrepareUserTokenGrants(options?.grants),
|
|
119
|
+
iat: currentTime,
|
|
120
|
+
exp: currentTime + expireInSeconds,
|
|
121
|
+
};
|
|
122
|
+
// Create and sign the JWT
|
|
123
|
+
return createJWT(header, payload, signingKey);
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=tokenSigner.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenSigner.mjs","sourceRoot":"","sources":["../src/lib/tokenSigner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User token signing functionality for Knock authentication
|
|
3
|
+
*/
|
|
4
|
+
export declare enum Grants {
|
|
5
|
+
SlackChannelsRead = "slack/channels_read",
|
|
6
|
+
MsTeamsChannelsRead = "ms_teams/channels_read",
|
|
7
|
+
ChannelDataRead = "channel_data/read",
|
|
8
|
+
ChannelDataWrite = "channel_data/write",
|
|
9
|
+
UserFeedRead = "user/feed_read"
|
|
10
|
+
}
|
|
11
|
+
export type TokenGrantOptions = Grants[];
|
|
12
|
+
export type TokenEntity = TenantTokenEntity | UserTokenEntity | ObjectTokenEntity;
|
|
13
|
+
export interface TenantTokenEntity {
|
|
14
|
+
type: 'tenant';
|
|
15
|
+
id: string;
|
|
16
|
+
collection?: never;
|
|
17
|
+
}
|
|
18
|
+
export interface ObjectTokenEntity {
|
|
19
|
+
type: 'object';
|
|
20
|
+
id: string;
|
|
21
|
+
collection: string;
|
|
22
|
+
}
|
|
23
|
+
export interface UserTokenEntity {
|
|
24
|
+
type: 'user';
|
|
25
|
+
id: string;
|
|
26
|
+
collection?: never;
|
|
27
|
+
}
|
|
28
|
+
export type TokenGrant = {
|
|
29
|
+
entity: string;
|
|
30
|
+
grants: Partial<Record<Grants, []>>;
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=userTokens.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userTokens.d.mts","sourceRoot":"","sources":["../src/lib/userTokens.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oBAAY,MAAM;IAChB,iBAAiB,wBAAwB;IACzC,mBAAmB,2BAA2B;IAC9C,eAAe,sBAAsB;IACrC,gBAAgB,uBAAuB;IACvC,YAAY,mBAAmB;CAChC;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,EAAE,CAAC;AAEzC,MAAM,MAAM,WAAW,GAAG,iBAAiB,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAElF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,KAAK,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,KAAK,CAAC;CACpB;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;CACrC,CAAC"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User token signing functionality for Knock authentication
|
|
3
|
+
*/
|
|
1
4
|
export declare enum Grants {
|
|
2
5
|
SlackChannelsRead = "slack/channels_read",
|
|
3
6
|
MsTeamsChannelsRead = "ms_teams/channels_read",
|
|
@@ -8,17 +11,17 @@ export declare enum Grants {
|
|
|
8
11
|
export type TokenGrantOptions = Grants[];
|
|
9
12
|
export type TokenEntity = TenantTokenEntity | UserTokenEntity | ObjectTokenEntity;
|
|
10
13
|
export interface TenantTokenEntity {
|
|
11
|
-
type:
|
|
14
|
+
type: 'tenant';
|
|
12
15
|
id: string;
|
|
13
16
|
collection?: never;
|
|
14
17
|
}
|
|
15
18
|
export interface ObjectTokenEntity {
|
|
16
|
-
type:
|
|
19
|
+
type: 'object';
|
|
17
20
|
id: string;
|
|
18
21
|
collection: string;
|
|
19
22
|
}
|
|
20
23
|
export interface UserTokenEntity {
|
|
21
|
-
type:
|
|
24
|
+
type: 'user';
|
|
22
25
|
id: string;
|
|
23
26
|
collection?: never;
|
|
24
27
|
}
|
|
@@ -26,3 +29,4 @@ export type TokenGrant = {
|
|
|
26
29
|
entity: string;
|
|
27
30
|
grants: Partial<Record<Grants, []>>;
|
|
28
31
|
};
|
|
32
|
+
//# sourceMappingURL=userTokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userTokens.d.ts","sourceRoot":"","sources":["../src/lib/userTokens.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oBAAY,MAAM;IAChB,iBAAiB,wBAAwB;IACzC,mBAAmB,2BAA2B;IAC9C,eAAe,sBAAsB;IACrC,gBAAgB,uBAAuB;IACvC,YAAY,mBAAmB;CAChC;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,EAAE,CAAC;AAEzC,MAAM,MAAM,WAAW,GAAG,iBAAiB,GAAG,eAAe,GAAG,iBAAiB,CAAC;AAElF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,KAAK,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,KAAK,CAAC;CACpB;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;CACrC,CAAC"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* User token signing functionality for Knock authentication
|
|
4
|
+
*/
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.Grants = void 0;
|
|
4
7
|
var Grants;
|
|
@@ -9,3 +12,4 @@ var Grants;
|
|
|
9
12
|
Grants["ChannelDataWrite"] = "channel_data/write";
|
|
10
13
|
Grants["UserFeedRead"] = "user/feed_read";
|
|
11
14
|
})(Grants || (exports.Grants = Grants = {}));
|
|
15
|
+
//# sourceMappingURL=userTokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userTokens.js","sourceRoot":"","sources":["../src/lib/userTokens.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,IAAY,MAMX;AAND,WAAY,MAAM;IAChB,mDAAyC,CAAA;IACzC,wDAA8C,CAAA;IAC9C,+CAAqC,CAAA;IACrC,iDAAuC,CAAA;IACvC,yCAA+B,CAAA;AACjC,CAAC,EANW,MAAM,sBAAN,MAAM,QAMjB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User token signing functionality for Knock authentication
|
|
3
|
+
*/
|
|
4
|
+
export var Grants;
|
|
5
|
+
(function (Grants) {
|
|
6
|
+
Grants["SlackChannelsRead"] = "slack/channels_read";
|
|
7
|
+
Grants["MsTeamsChannelsRead"] = "ms_teams/channels_read";
|
|
8
|
+
Grants["ChannelDataRead"] = "channel_data/read";
|
|
9
|
+
Grants["ChannelDataWrite"] = "channel_data/write";
|
|
10
|
+
Grants["UserFeedRead"] = "user/feed_read";
|
|
11
|
+
})(Grants || (Grants = {}));
|
|
12
|
+
//# sourceMappingURL=userTokens.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userTokens.mjs","sourceRoot":"","sources":["../src/lib/userTokens.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAN,IAAY,MAMX;AAND,WAAY,MAAM;IAChB,mDAAyC,CAAA;IACzC,wDAA8C,CAAA;IAC9C,+CAAqC,CAAA;IACrC,iDAAuC,CAAA;IACvC,yCAA+B,CAAA;AACjC,CAAC,EANW,MAAM,KAAN,MAAM,QAMjB"}
|