box-node-sdk 3.8.1 → 3.8.2
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/lib-esm/api-request-manager.d.ts +36 -0
- package/lib-esm/api-request-manager.js +78 -0
- package/lib-esm/api-request-manager.js.map +1 -0
- package/lib-esm/api-request.d.ts +135 -0
- package/lib-esm/api-request.js +282 -0
- package/lib-esm/api-request.js.map +1 -0
- package/lib-esm/box-client.d.ts +274 -0
- package/lib-esm/box-client.js +594 -0
- package/lib-esm/box-client.js.map +1 -0
- package/lib-esm/box-node-sdk.d.ts +227 -0
- package/lib-esm/box-node-sdk.js +373 -0
- package/lib-esm/box-node-sdk.js.map +1 -0
- package/lib-esm/chunked-uploader.d.ts +128 -0
- package/lib-esm/chunked-uploader.js +276 -0
- package/lib-esm/chunked-uploader.js.map +1 -0
- package/lib-esm/enterprise-event-stream.d.ts +82 -0
- package/lib-esm/enterprise-event-stream.js +205 -0
- package/lib-esm/enterprise-event-stream.js.map +1 -0
- package/lib-esm/event-stream.d.ts +91 -0
- package/lib-esm/event-stream.js +277 -0
- package/lib-esm/event-stream.js.map +1 -0
- package/lib-esm/managers/ai.generated.d.ts +58 -0
- package/lib-esm/managers/ai.generated.js +66 -0
- package/lib-esm/managers/ai.generated.js.map +1 -0
- package/lib-esm/managers/collaboration-allowlist.d.ts +133 -0
- package/lib-esm/managers/collaboration-allowlist.js +194 -0
- package/lib-esm/managers/collaboration-allowlist.js.map +1 -0
- package/lib-esm/managers/collaborations.d.ts +173 -0
- package/lib-esm/managers/collaborations.js +252 -0
- package/lib-esm/managers/collaborations.js.map +1 -0
- package/lib-esm/managers/collections.d.ts +42 -0
- package/lib-esm/managers/collections.js +62 -0
- package/lib-esm/managers/collections.js.map +1 -0
- package/lib-esm/managers/comments.d.ts +103 -0
- package/lib-esm/managers/comments.js +175 -0
- package/lib-esm/managers/comments.js.map +1 -0
- package/lib-esm/managers/device-pins.d.ts +52 -0
- package/lib-esm/managers/device-pins.js +91 -0
- package/lib-esm/managers/device-pins.js.map +1 -0
- package/lib-esm/managers/enterprise.d.ts +164 -0
- package/lib-esm/managers/enterprise.js +193 -0
- package/lib-esm/managers/enterprise.js.map +1 -0
- package/lib-esm/managers/events.d.ts +222 -0
- package/lib-esm/managers/events.js +295 -0
- package/lib-esm/managers/events.js.map +1 -0
- package/lib-esm/managers/file-requests-manager.d.ts +56 -0
- package/lib-esm/managers/file-requests-manager.js +81 -0
- package/lib-esm/managers/file-requests-manager.js.map +1 -0
- package/lib-esm/managers/files.d.ts +817 -0
- package/lib-esm/managers/files.js +1408 -0
- package/lib-esm/managers/files.js.map +1 -0
- package/lib-esm/managers/folders.d.ts +396 -0
- package/lib-esm/managers/folders.js +570 -0
- package/lib-esm/managers/folders.js.map +1 -0
- package/lib-esm/managers/groups.d.ts +213 -0
- package/lib-esm/managers/groups.js +289 -0
- package/lib-esm/managers/groups.js.map +1 -0
- package/lib-esm/managers/integration-mappings.d.ts +116 -0
- package/lib-esm/managers/integration-mappings.js +101 -0
- package/lib-esm/managers/integration-mappings.js.map +1 -0
- package/lib-esm/managers/legal-hold-policies.d.ts +190 -0
- package/lib-esm/managers/legal-hold-policies.js +254 -0
- package/lib-esm/managers/legal-hold-policies.js.map +1 -0
- package/lib-esm/managers/metadata.d.ts +232 -0
- package/lib-esm/managers/metadata.js +288 -0
- package/lib-esm/managers/metadata.js.map +1 -0
- package/lib-esm/managers/recent-items.d.ts +38 -0
- package/lib-esm/managers/recent-items.js +49 -0
- package/lib-esm/managers/recent-items.js.map +1 -0
- package/lib-esm/managers/retention-policies.d.ts +308 -0
- package/lib-esm/managers/retention-policies.js +374 -0
- package/lib-esm/managers/retention-policies.js.map +1 -0
- package/lib-esm/managers/search.d.ts +82 -0
- package/lib-esm/managers/search.js +90 -0
- package/lib-esm/managers/search.js.map +1 -0
- package/lib-esm/managers/shared-items.d.ts +33 -0
- package/lib-esm/managers/shared-items.js +74 -0
- package/lib-esm/managers/shared-items.js.map +1 -0
- package/lib-esm/managers/shield-information-barrier-reports.generated.d.ts +65 -0
- package/lib-esm/managers/shield-information-barrier-reports.generated.js +65 -0
- package/lib-esm/managers/shield-information-barrier-reports.generated.js.map +1 -0
- package/lib-esm/managers/shield-information-barrier-segment-members.generated.d.ts +83 -0
- package/lib-esm/managers/shield-information-barrier-segment-members.generated.js +83 -0
- package/lib-esm/managers/shield-information-barrier-segment-members.generated.js.map +1 -0
- package/lib-esm/managers/shield-information-barrier-segment-restrictions.generated.d.ts +84 -0
- package/lib-esm/managers/shield-information-barrier-segment-restrictions.generated.js +84 -0
- package/lib-esm/managers/shield-information-barrier-segment-restrictions.generated.js.map +1 -0
- package/lib-esm/managers/shield-information-barrier-segments.generated.d.ts +98 -0
- package/lib-esm/managers/shield-information-barrier-segments.generated.js +99 -0
- package/lib-esm/managers/shield-information-barrier-segments.generated.js.map +1 -0
- package/lib-esm/managers/shield-information-barriers.generated.d.ts +79 -0
- package/lib-esm/managers/shield-information-barriers.generated.js +83 -0
- package/lib-esm/managers/shield-information-barriers.generated.js.map +1 -0
- package/lib-esm/managers/sign-requests.generated.d.ts +93 -0
- package/lib-esm/managers/sign-requests.generated.js +97 -0
- package/lib-esm/managers/sign-requests.generated.js.map +1 -0
- package/lib-esm/managers/sign-templates.generated.d.ts +51 -0
- package/lib-esm/managers/sign-templates.generated.js +49 -0
- package/lib-esm/managers/sign-templates.generated.js.map +1 -0
- package/lib-esm/managers/storage-policies.d.ts +86 -0
- package/lib-esm/managers/storage-policies.js +174 -0
- package/lib-esm/managers/storage-policies.js.map +1 -0
- package/lib-esm/managers/tasks.d.ts +161 -0
- package/lib-esm/managers/tasks.js +243 -0
- package/lib-esm/managers/tasks.js.map +1 -0
- package/lib-esm/managers/terms-of-service.d.ts +161 -0
- package/lib-esm/managers/terms-of-service.js +283 -0
- package/lib-esm/managers/terms-of-service.js.map +1 -0
- package/lib-esm/managers/trash.d.ts +30 -0
- package/lib-esm/managers/trash.js +47 -0
- package/lib-esm/managers/trash.js.map +1 -0
- package/lib-esm/managers/users.d.ts +171 -0
- package/lib-esm/managers/users.js +230 -0
- package/lib-esm/managers/users.js.map +1 -0
- package/lib-esm/managers/web-links.d.ts +127 -0
- package/lib-esm/managers/web-links.js +200 -0
- package/lib-esm/managers/web-links.js.map +1 -0
- package/lib-esm/managers/webhooks.d.ts +169 -0
- package/lib-esm/managers/webhooks.js +398 -0
- package/lib-esm/managers/webhooks.js.map +1 -0
- package/lib-esm/schemas/ai-agent-ask.generated.d.ts +17 -0
- package/lib-esm/schemas/ai-agent-ask.generated.js +3 -0
- package/lib-esm/schemas/ai-agent-ask.generated.js.map +1 -0
- package/lib-esm/schemas/ai-agent-basic-gen-tool.generated.d.ts +14 -0
- package/lib-esm/schemas/ai-agent-basic-gen-tool.generated.js +3 -0
- package/lib-esm/schemas/ai-agent-basic-gen-tool.generated.js.map +1 -0
- package/lib-esm/schemas/ai-agent-basic-text-tool-ask.generated.d.ts +34 -0
- package/lib-esm/schemas/ai-agent-basic-text-tool-ask.generated.js +3 -0
- package/lib-esm/schemas/ai-agent-basic-text-tool-ask.generated.js.map +1 -0
- package/lib-esm/schemas/ai-agent-basic-text-tool-text-gen.generated.d.ts +36 -0
- package/lib-esm/schemas/ai-agent-basic-text-tool-text-gen.generated.js +3 -0
- package/lib-esm/schemas/ai-agent-basic-text-tool-text-gen.generated.js.map +1 -0
- package/lib-esm/schemas/ai-agent-long-text-tool.generated.d.ts +9 -0
- package/lib-esm/schemas/ai-agent-long-text-tool.generated.js +3 -0
- package/lib-esm/schemas/ai-agent-long-text-tool.generated.js.map +1 -0
- package/lib-esm/schemas/ai-agent-text-gen.generated.d.ts +14 -0
- package/lib-esm/schemas/ai-agent-text-gen.generated.js +3 -0
- package/lib-esm/schemas/ai-agent-text-gen.generated.js.map +1 -0
- package/lib-esm/schemas/ai-ask.generated.d.ts +40 -0
- package/lib-esm/schemas/ai-ask.generated.js +3 -0
- package/lib-esm/schemas/ai-ask.generated.js.map +1 -0
- package/lib-esm/schemas/ai-citation.generated.d.ts +27 -0
- package/lib-esm/schemas/ai-citation.generated.js +3 -0
- package/lib-esm/schemas/ai-citation.generated.js.map +1 -0
- package/lib-esm/schemas/ai-dialogue-history.generated.d.ts +22 -0
- package/lib-esm/schemas/ai-dialogue-history.generated.js +3 -0
- package/lib-esm/schemas/ai-dialogue-history.generated.js.map +1 -0
- package/lib-esm/schemas/ai-llm-endpoint-params-google.generated.d.ts +31 -0
- package/lib-esm/schemas/ai-llm-endpoint-params-google.generated.js +3 -0
- package/lib-esm/schemas/ai-llm-endpoint-params-google.generated.js.map +1 -0
- package/lib-esm/schemas/ai-llm-endpoint-params-open-ai.generated.d.ts +43 -0
- package/lib-esm/schemas/ai-llm-endpoint-params-open-ai.generated.js +3 -0
- package/lib-esm/schemas/ai-llm-endpoint-params-open-ai.generated.js.map +1 -0
- package/lib-esm/schemas/ai-response-full.generated.d.ts +12 -0
- package/lib-esm/schemas/ai-response-full.generated.js +3 -0
- package/lib-esm/schemas/ai-response-full.generated.js.map +1 -0
- package/lib-esm/schemas/ai-response.generated.d.ts +22 -0
- package/lib-esm/schemas/ai-response.generated.js +3 -0
- package/lib-esm/schemas/ai-response.generated.js.map +1 -0
- package/lib-esm/schemas/ai-text-gen.generated.d.ts +30 -0
- package/lib-esm/schemas/ai-text-gen.generated.js +3 -0
- package/lib-esm/schemas/ai-text-gen.generated.js.map +1 -0
- package/lib-esm/schemas/collaboration-create.d.ts +5 -0
- package/lib-esm/schemas/collaboration-create.js +3 -0
- package/lib-esm/schemas/collaboration-create.js.map +1 -0
- package/lib-esm/schemas/collaboration-update.d.ts +7 -0
- package/lib-esm/schemas/collaboration-update.js +3 -0
- package/lib-esm/schemas/collaboration-update.js.map +1 -0
- package/lib-esm/schemas/collaboration.d.ts +108 -0
- package/lib-esm/schemas/collaboration.js +3 -0
- package/lib-esm/schemas/collaboration.js.map +1 -0
- package/lib-esm/schemas/collaborations.d.ts +13 -0
- package/lib-esm/schemas/collaborations.js +3 -0
- package/lib-esm/schemas/collaborations.js.map +1 -0
- package/lib-esm/schemas/enterprise-base.generated.d.ts +18 -0
- package/lib-esm/schemas/enterprise-base.generated.js +3 -0
- package/lib-esm/schemas/enterprise-base.generated.js.map +1 -0
- package/lib-esm/schemas/file-base.generated.d.ts +32 -0
- package/lib-esm/schemas/file-base.generated.js +3 -0
- package/lib-esm/schemas/file-base.generated.js.map +1 -0
- package/lib-esm/schemas/file-mini.generated.d.ts +41 -0
- package/lib-esm/schemas/file-mini.generated.js +3 -0
- package/lib-esm/schemas/file-mini.generated.js.map +1 -0
- package/lib-esm/schemas/file-request.d.ts +41 -0
- package/lib-esm/schemas/file-request.js +3 -0
- package/lib-esm/schemas/file-request.js.map +1 -0
- package/lib-esm/schemas/file-version-base.generated.d.ts +19 -0
- package/lib-esm/schemas/file-version-base.generated.js +3 -0
- package/lib-esm/schemas/file-version-base.generated.js.map +1 -0
- package/lib-esm/schemas/file-version-mini.generated.d.ts +14 -0
- package/lib-esm/schemas/file-version-mini.generated.js +3 -0
- package/lib-esm/schemas/file-version-mini.generated.js.map +1 -0
- package/lib-esm/schemas/folder-base.generated.d.ts +32 -0
- package/lib-esm/schemas/folder-base.generated.js +3 -0
- package/lib-esm/schemas/folder-base.generated.js.map +1 -0
- package/lib-esm/schemas/folder-mini.generated.d.ts +31 -0
- package/lib-esm/schemas/folder-mini.generated.js +3 -0
- package/lib-esm/schemas/folder-mini.generated.js.map +1 -0
- package/lib-esm/schemas/index.d.ts +15 -0
- package/lib-esm/schemas/index.generated.d.ts +52 -0
- package/lib-esm/schemas/index.generated.js +69 -0
- package/lib-esm/schemas/index.generated.js.map +1 -0
- package/lib-esm/schemas/index.js +32 -0
- package/lib-esm/schemas/index.js.map +1 -0
- package/lib-esm/schemas/integration-mapping-base.d.ts +23 -0
- package/lib-esm/schemas/integration-mapping-base.js +3 -0
- package/lib-esm/schemas/integration-mapping-base.js.map +1 -0
- package/lib-esm/schemas/integration-mapping-box-item-slack.d.ts +17 -0
- package/lib-esm/schemas/integration-mapping-box-item-slack.js +3 -0
- package/lib-esm/schemas/integration-mapping-box-item-slack.js.map +1 -0
- package/lib-esm/schemas/integration-mapping-partner-item-slack.d.ts +27 -0
- package/lib-esm/schemas/integration-mapping-partner-item-slack.js +3 -0
- package/lib-esm/schemas/integration-mapping-partner-item-slack.js.map +1 -0
- package/lib-esm/schemas/integration-mapping-slack-create-request.d.ts +12 -0
- package/lib-esm/schemas/integration-mapping-slack-create-request.js +3 -0
- package/lib-esm/schemas/integration-mapping-slack-create-request.js.map +1 -0
- package/lib-esm/schemas/integration-mapping-slack-options.d.ts +16 -0
- package/lib-esm/schemas/integration-mapping-slack-options.js +3 -0
- package/lib-esm/schemas/integration-mapping-slack-options.js.map +1 -0
- package/lib-esm/schemas/integration-mapping.d.ts +55 -0
- package/lib-esm/schemas/integration-mapping.js +3 -0
- package/lib-esm/schemas/integration-mapping.js.map +1 -0
- package/lib-esm/schemas/integration-mappings.d.ts +27 -0
- package/lib-esm/schemas/integration-mappings.js +3 -0
- package/lib-esm/schemas/integration-mappings.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-base.generated.d.ts +18 -0
- package/lib-esm/schemas/shield-information-barrier-base.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-base.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-reference.generated.d.ts +9 -0
- package/lib-esm/schemas/shield-information-barrier-reference.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-reference.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-report-base.generated.d.ts +18 -0
- package/lib-esm/schemas/shield-information-barrier-report-base.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-report-base.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-report-details.generated.d.ts +9 -0
- package/lib-esm/schemas/shield-information-barrier-report-details.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-report-details.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-report.generated.d.ts +32 -0
- package/lib-esm/schemas/shield-information-barrier-report.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-report.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-reports.generated.d.ts +26 -0
- package/lib-esm/schemas/shield-information-barrier-reports.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-reports.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-segment-member-base.generated.d.ts +19 -0
- package/lib-esm/schemas/shield-information-barrier-segment-member-base.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-segment-member-base.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-segment-member-mini.generated.d.ts +13 -0
- package/lib-esm/schemas/shield-information-barrier-segment-member-mini.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-segment-member-mini.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-segment-member.generated.d.ts +39 -0
- package/lib-esm/schemas/shield-information-barrier-segment-member.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-segment-member.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-segment-members.generated.d.ts +26 -0
- package/lib-esm/schemas/shield-information-barrier-segment-members.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-segment-members.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-segment-restriction-base.generated.d.ts +20 -0
- package/lib-esm/schemas/shield-information-barrier-segment-restriction-base.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-segment-restriction-base.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-segment-restriction-mini.generated.d.ts +20 -0
- package/lib-esm/schemas/shield-information-barrier-segment-restriction-mini.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-segment-restriction-mini.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-segment-restriction.generated.d.ts +33 -0
- package/lib-esm/schemas/shield-information-barrier-segment-restriction.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-segment-restriction.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-segment-restrictions.generated.d.ts +26 -0
- package/lib-esm/schemas/shield-information-barrier-segment-restrictions.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-segment-restrictions.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-segment.generated.d.ts +50 -0
- package/lib-esm/schemas/shield-information-barrier-segment.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-segment.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier-segments.generated.d.ts +26 -0
- package/lib-esm/schemas/shield-information-barrier-segments.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier-segments.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barrier.generated.d.ts +56 -0
- package/lib-esm/schemas/shield-information-barrier.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barrier.generated.js.map +1 -0
- package/lib-esm/schemas/shield-information-barriers.generated.d.ts +25 -0
- package/lib-esm/schemas/shield-information-barriers.generated.js +3 -0
- package/lib-esm/schemas/shield-information-barriers.generated.js.map +1 -0
- package/lib-esm/schemas/sign-request-base.generated.d.ts +78 -0
- package/lib-esm/schemas/sign-request-base.generated.js +3 -0
- package/lib-esm/schemas/sign-request-base.generated.js.map +1 -0
- package/lib-esm/schemas/sign-request-create-request.generated.d.ts +39 -0
- package/lib-esm/schemas/sign-request-create-request.generated.js +3 -0
- package/lib-esm/schemas/sign-request-create-request.generated.js.map +1 -0
- package/lib-esm/schemas/sign-request-create-signer.generated.d.ts +95 -0
- package/lib-esm/schemas/sign-request-create-signer.generated.js +3 -0
- package/lib-esm/schemas/sign-request-create-signer.generated.js.map +1 -0
- package/lib-esm/schemas/sign-request-prefill-tag.generated.d.ts +28 -0
- package/lib-esm/schemas/sign-request-prefill-tag.generated.js +3 -0
- package/lib-esm/schemas/sign-request-prefill-tag.generated.js.map +1 -0
- package/lib-esm/schemas/sign-request-signer-input.generated.d.ts +28 -0
- package/lib-esm/schemas/sign-request-signer-input.generated.js +3 -0
- package/lib-esm/schemas/sign-request-signer-input.generated.js.map +1 -0
- package/lib-esm/schemas/sign-request-signer.generated.d.ts +34 -0
- package/lib-esm/schemas/sign-request-signer.generated.js +3 -0
- package/lib-esm/schemas/sign-request-signer.generated.js.map +1 -0
- package/lib-esm/schemas/sign-request.generated.d.ts +72 -0
- package/lib-esm/schemas/sign-request.generated.js +3 -0
- package/lib-esm/schemas/sign-request.generated.js.map +1 -0
- package/lib-esm/schemas/sign-requests.generated.d.ts +25 -0
- package/lib-esm/schemas/sign-requests.generated.js +3 -0
- package/lib-esm/schemas/sign-requests.generated.js.map +1 -0
- package/lib-esm/schemas/sign-template.generated.d.ts +94 -0
- package/lib-esm/schemas/sign-template.generated.js +3 -0
- package/lib-esm/schemas/sign-template.generated.js.map +1 -0
- package/lib-esm/schemas/sign-templates.generated.d.ts +30 -0
- package/lib-esm/schemas/sign-templates.generated.js +3 -0
- package/lib-esm/schemas/sign-templates.generated.js.map +1 -0
- package/lib-esm/schemas/template-signer-input.generated.d.ts +61 -0
- package/lib-esm/schemas/template-signer-input.generated.js +3 -0
- package/lib-esm/schemas/template-signer-input.generated.js.map +1 -0
- package/lib-esm/schemas/template-signer.generated.d.ts +43 -0
- package/lib-esm/schemas/template-signer.generated.js +3 -0
- package/lib-esm/schemas/template-signer.generated.js.map +1 -0
- package/lib-esm/schemas/user-base.generated.d.ts +18 -0
- package/lib-esm/schemas/user-base.generated.js +3 -0
- package/lib-esm/schemas/user-base.generated.js.map +1 -0
- package/lib-esm/schemas/user-integration-mappings.d.ts +19 -0
- package/lib-esm/schemas/user-integration-mappings.js +3 -0
- package/lib-esm/schemas/user-integration-mappings.js.map +1 -0
- package/lib-esm/schemas/user-mini.d.ts +6 -0
- package/lib-esm/schemas/user-mini.js +3 -0
- package/lib-esm/schemas/user-mini.js.map +1 -0
- package/lib-esm/sessions/app-auth-session.d.ts +92 -0
- package/lib-esm/sessions/app-auth-session.js +176 -0
- package/lib-esm/sessions/app-auth-session.js.map +1 -0
- package/lib-esm/sessions/basic-session.d.ts +55 -0
- package/lib-esm/sessions/basic-session.js +62 -0
- package/lib-esm/sessions/basic-session.js.map +1 -0
- package/lib-esm/sessions/ccg-session.d.ts +72 -0
- package/lib-esm/sessions/ccg-session.js +111 -0
- package/lib-esm/sessions/ccg-session.js.map +1 -0
- package/lib-esm/sessions/persistent-session.d.ts +96 -0
- package/lib-esm/sessions/persistent-session.js +234 -0
- package/lib-esm/sessions/persistent-session.js.map +1 -0
- package/lib-esm/token-manager.d.ts +191 -0
- package/lib-esm/token-manager.js +453 -0
- package/lib-esm/token-manager.js.map +1 -0
- package/lib-esm/util/config.d.ts +85 -0
- package/lib-esm/util/config.js +212 -0
- package/lib-esm/util/config.js.map +1 -0
- package/lib-esm/util/errors.d.ts +50 -0
- package/lib-esm/util/errors.js +176 -0
- package/lib-esm/util/errors.js.map +1 -0
- package/lib-esm/util/exponential-backoff.d.ts +11 -0
- package/lib-esm/util/exponential-backoff.js +17 -0
- package/lib-esm/util/exponential-backoff.js.map +1 -0
- package/lib-esm/util/paging-iterator.d.ts +53 -0
- package/lib-esm/util/paging-iterator.js +247 -0
- package/lib-esm/util/paging-iterator.js.map +1 -0
- package/lib-esm/util/serializable.d.ts +10 -0
- package/lib-esm/util/serializable.js +17 -0
- package/lib-esm/util/serializable.js.map +1 -0
- package/lib-esm/util/url-path.d.ts +16 -0
- package/lib-esm/util/url-path.js +36 -0
- package/lib-esm/util/url-path.js.map +1 -0
- package/package.json +18 -4
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Enterprise event stream backed by the enterprise events API
|
|
4
|
+
*/
|
|
5
|
+
// ------------------------------------------------------------------------------
|
|
6
|
+
// Requirements
|
|
7
|
+
// ------------------------------------------------------------------------------
|
|
8
|
+
const stream_1 = require("stream");
|
|
9
|
+
// ------------------------------------------------------------------------------
|
|
10
|
+
// Private
|
|
11
|
+
// ------------------------------------------------------------------------------
|
|
12
|
+
const DEFAULT_OPTIONS = Object.freeze({
|
|
13
|
+
pollingInterval: 60, // seconds
|
|
14
|
+
chunkSize: 500,
|
|
15
|
+
streamType: 'admin_logs',
|
|
16
|
+
});
|
|
17
|
+
// ------------------------------------------------------------------------------
|
|
18
|
+
// Public
|
|
19
|
+
// ------------------------------------------------------------------------------
|
|
20
|
+
/**
|
|
21
|
+
* Stream of Box enterprise events.
|
|
22
|
+
*
|
|
23
|
+
* By default, the stream starts from the current time.
|
|
24
|
+
* Pass 'startDate' to start from a specific time.
|
|
25
|
+
* Pass 'streamPosition' to start from a previous stream position, or '0' for all available past events (~1 year).
|
|
26
|
+
* Once the stream catches up to the current time, it will begin polling every 'pollingInterval' seconds.
|
|
27
|
+
* If 'pollingInterval' = 0, then the stream will end when it catches up to the current time (no polling).
|
|
28
|
+
*
|
|
29
|
+
* @param {BoxClient} client - The client to use to get events
|
|
30
|
+
* @param {Object} [options] - Options
|
|
31
|
+
* @param {string} [options.streamPosition] - The stream position to start from (pass '0' for all past events)
|
|
32
|
+
* @param {string} [options.startDate] - The date to start from
|
|
33
|
+
* @param {string} [options.endDate] - The date to end at
|
|
34
|
+
* @param {EventType[]} [options.eventTypeFilter] - Array of event types to return
|
|
35
|
+
* @param {int} [options.pollingInterval=60] - Polling interval (in seconds). Pass 0 for no polling.
|
|
36
|
+
* @param {int} [options.chunkSize=500] - Number of events to fetch per call (max = 500)
|
|
37
|
+
* @constructor
|
|
38
|
+
* @extends Readable
|
|
39
|
+
*/
|
|
40
|
+
class EnterpriseEventStream extends stream_1.Readable {
|
|
41
|
+
constructor(client, options) {
|
|
42
|
+
super({
|
|
43
|
+
objectMode: true,
|
|
44
|
+
});
|
|
45
|
+
/**
|
|
46
|
+
* @var {BoxClient} - The client for making API calls
|
|
47
|
+
* @private
|
|
48
|
+
*/
|
|
49
|
+
this._client = client;
|
|
50
|
+
/**
|
|
51
|
+
* @var {Object} - Options
|
|
52
|
+
* @private
|
|
53
|
+
*/
|
|
54
|
+
this._options = Object.assign({}, DEFAULT_OPTIONS, options);
|
|
55
|
+
// Handle the case where the caller passes streamPosition = 0 instead of streamPosition = '0'.
|
|
56
|
+
if (this._options.streamType === 'admin_logs' &&
|
|
57
|
+
!this._options.startDate &&
|
|
58
|
+
!this._options.streamPosition &&
|
|
59
|
+
this._options.streamPosition !== 0) {
|
|
60
|
+
// If neither startDate nor streamPosition is specified, start from the current time.
|
|
61
|
+
this._options.startDate = new Date()
|
|
62
|
+
.toISOString()
|
|
63
|
+
.replace(/\.000Z$/, '-00:00');
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* @var {?string} - The current stream position
|
|
67
|
+
* @private
|
|
68
|
+
*/
|
|
69
|
+
this._streamPosition = this._options.streamPosition;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* @returns {?number} - Returns null if no events have been fetched from Box yet.
|
|
73
|
+
*/
|
|
74
|
+
getStreamPosition() {
|
|
75
|
+
return this._streamPosition;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get the stream state.
|
|
79
|
+
*
|
|
80
|
+
* @returns {Object} - The stream state
|
|
81
|
+
*/
|
|
82
|
+
getStreamState() {
|
|
83
|
+
// We need to return both streamPosition and startDate, since streamPosition will be null until
|
|
84
|
+
// the first set of events is returned from Box.
|
|
85
|
+
return {
|
|
86
|
+
streamPosition: this._streamPosition,
|
|
87
|
+
startDate: this._options.startDate,
|
|
88
|
+
endDate: this._options.endDate,
|
|
89
|
+
eventTypeFilter: this._options.eventTypeFilter,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Set the stream state.
|
|
94
|
+
*
|
|
95
|
+
* @param {Object} state - The stream state
|
|
96
|
+
* @returns {void}
|
|
97
|
+
*/
|
|
98
|
+
setStreamState(state) {
|
|
99
|
+
// We need to set both streamPosition and startDate, since streamPosition will be null until
|
|
100
|
+
// the first set of events is returned from Box.
|
|
101
|
+
this._streamPosition = state.streamPosition;
|
|
102
|
+
this._options.startDate = state.startDate;
|
|
103
|
+
this._options.endDate = state.endDate;
|
|
104
|
+
this._options.eventTypeFilter = state.eventTypeFilter;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Fetch the next chunk of events
|
|
108
|
+
*
|
|
109
|
+
* If there are no events, poll until events are available.
|
|
110
|
+
* If an error occurs, emit the error but continuing polling as usual.
|
|
111
|
+
* @param {Function} callback - Passed the array of events
|
|
112
|
+
* @returns {void}
|
|
113
|
+
* @private
|
|
114
|
+
*/
|
|
115
|
+
fetchEvents(callback) {
|
|
116
|
+
const self = this, params = {
|
|
117
|
+
stream_type: this._options.streamType,
|
|
118
|
+
};
|
|
119
|
+
// Use the current stream position.
|
|
120
|
+
// Handle the case where the caller passes streamPosition === 0 instead of streamPosition === '0'.
|
|
121
|
+
if (this._streamPosition || this._streamPosition === 0) {
|
|
122
|
+
params.stream_position = this._streamPosition;
|
|
123
|
+
}
|
|
124
|
+
if (this._options.streamType === 'admin_logs' && this._options.startDate) {
|
|
125
|
+
params.created_after = this._options.startDate;
|
|
126
|
+
}
|
|
127
|
+
if (this._options.streamType === 'admin_logs' && this._options.endDate) {
|
|
128
|
+
params.created_before = this._options.endDate;
|
|
129
|
+
}
|
|
130
|
+
if (this._options.eventTypeFilter) {
|
|
131
|
+
params.event_type = this._options.eventTypeFilter.join(',');
|
|
132
|
+
}
|
|
133
|
+
if (this._options.chunkSize) {
|
|
134
|
+
params.limit = this._options.chunkSize;
|
|
135
|
+
}
|
|
136
|
+
this._client.events.get(params, (err /* FIXME */, result /* FIXME */) => {
|
|
137
|
+
if (err) {
|
|
138
|
+
self.emit('error', err);
|
|
139
|
+
// If there was a "permanent" error, we would call the callback with it here.
|
|
140
|
+
// But it's not clear which errors are truly permanent?
|
|
141
|
+
// If Box is down or returning errors for an extended period, we still want to resume when it recovers.
|
|
142
|
+
// So, continue polling at the regular frequency.
|
|
143
|
+
// Don't use a shorter retry interval (to avoid DDOSing Box).
|
|
144
|
+
}
|
|
145
|
+
if (err || !result || !result.entries || result.entries.length === 0) {
|
|
146
|
+
if (!self._options.pollingInterval) {
|
|
147
|
+
// If polling is disabled, end the stream.
|
|
148
|
+
callback();
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
// There were no events returned (or an error occurred), so schedule another poll.
|
|
152
|
+
const delay = self._options.pollingInterval * 1000;
|
|
153
|
+
// Stream readers can use this to flush buffered events to a downstream system.
|
|
154
|
+
self.emit('wait', delay);
|
|
155
|
+
setTimeout(() => {
|
|
156
|
+
self.fetchEvents(callback);
|
|
157
|
+
}, delay);
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
// Only update the stream position if there were events returned.
|
|
161
|
+
// The API currently returns next_stream_position = 0 if there are no events (may be a bug?).
|
|
162
|
+
// But we don't want to start over at the beginning in that case, so ignore it.
|
|
163
|
+
self._streamPosition = result.next_stream_position;
|
|
164
|
+
// Notify the reader of the new stream position.
|
|
165
|
+
// Stream readers can respond to the 'newStreamState' event to persist the stream state.
|
|
166
|
+
self.emit('newStreamState', self.getStreamState());
|
|
167
|
+
callback(null, result.entries);
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Implementation of the stream-internal read function. This is called
|
|
172
|
+
* by the stream whenever it needs more data, and will not be called again
|
|
173
|
+
* until data is pushed into the stream.
|
|
174
|
+
* @returns {void}
|
|
175
|
+
* @private
|
|
176
|
+
*/
|
|
177
|
+
_read() {
|
|
178
|
+
// Fetch the next chunk of events.
|
|
179
|
+
const self = this;
|
|
180
|
+
// This will poll forever until events are available.
|
|
181
|
+
this.fetchEvents((err /* FIXME */, events /* FIXME */) => {
|
|
182
|
+
if (err || !events || events.length === 0) {
|
|
183
|
+
// Close the stream if there was a "permanent" failure or we reached the end of the events.
|
|
184
|
+
self.push(null);
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
// Pause the stream to avoid race conditions while pushing in the new events.
|
|
188
|
+
// Without this, _read() would be called again from inside each push(),
|
|
189
|
+
// resulting in multiple parallel calls to fetchEvents().
|
|
190
|
+
// See https://github.com/nodejs/node/issues/3203
|
|
191
|
+
const wasPaused = self.isPaused();
|
|
192
|
+
self.pause();
|
|
193
|
+
// Push all of the events into the stream.
|
|
194
|
+
events.forEach((event /* FIXME */) => {
|
|
195
|
+
self.push(event);
|
|
196
|
+
});
|
|
197
|
+
if (!wasPaused) {
|
|
198
|
+
// This will deliver the events and trigger the next call to _read() once they have been consumed.
|
|
199
|
+
self.resume();
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
module.exports = EnterpriseEventStream;
|
|
205
|
+
//# sourceMappingURL=enterprise-event-stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enterprise-event-stream.js","sourceRoot":"","sources":["../src/enterprise-event-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Event stream backed by the events API
|
|
3
|
+
*/
|
|
4
|
+
import { Readable } from 'stream';
|
|
5
|
+
import BoxClient from './box-client';
|
|
6
|
+
type Options = {
|
|
7
|
+
retryDelay: number;
|
|
8
|
+
deduplicationFilterSize: number;
|
|
9
|
+
fetchInterval: number;
|
|
10
|
+
};
|
|
11
|
+
type LongPollInfo = {
|
|
12
|
+
max_retries: number;
|
|
13
|
+
retry_timeout: number;
|
|
14
|
+
url: string;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Stream of Box events from a given client and point in time.
|
|
18
|
+
* @param {BoxClient} client The client to use to get events
|
|
19
|
+
* @param {string} streamPosition The point in time to start at
|
|
20
|
+
* @param {Object} [options] Optional parameters
|
|
21
|
+
* @param {int} [options.retryDelay=1000] Number of ms to wait before retrying after an error
|
|
22
|
+
* @param {int} [options.deduplicationFilterSize=5000] Number of IDs to track for deduplication
|
|
23
|
+
* @param {int} [options.fetchInterval=1000] Minimunm number of ms between calls for more events
|
|
24
|
+
* @constructor
|
|
25
|
+
* @extends Readable
|
|
26
|
+
*/
|
|
27
|
+
declare class EventStream extends Readable {
|
|
28
|
+
_client: BoxClient;
|
|
29
|
+
_streamPosition: string;
|
|
30
|
+
_longPollInfo?: LongPollInfo;
|
|
31
|
+
_longPollRetries: number;
|
|
32
|
+
_dedupHash: Record<string, boolean>;
|
|
33
|
+
_rateLimiter: Promise<any>;
|
|
34
|
+
_options: Options;
|
|
35
|
+
_retryTimer?: NodeJS.Timeout | number;
|
|
36
|
+
constructor(client: BoxClient, streamPosition: string, options?: Partial<Options>);
|
|
37
|
+
/**
|
|
38
|
+
* Retrieve the url and params for long polling for new updates
|
|
39
|
+
* @returns {Promise} Promise for testing purposes
|
|
40
|
+
* @private
|
|
41
|
+
*/
|
|
42
|
+
getLongPollInfo(): any;
|
|
43
|
+
/**
|
|
44
|
+
* Long poll for notification of new events. We do this rather than
|
|
45
|
+
* polling for the events directly in order to minimize the number of API
|
|
46
|
+
* calls necessary.
|
|
47
|
+
* @returns {Promise} Promise for testing pruposes
|
|
48
|
+
* @private
|
|
49
|
+
*/
|
|
50
|
+
doLongPoll(): any;
|
|
51
|
+
/**
|
|
52
|
+
* Retries long-polling after a delay.
|
|
53
|
+
* Does not attempt if stream is already destroyed.
|
|
54
|
+
* @returns {void}
|
|
55
|
+
* @private
|
|
56
|
+
*/
|
|
57
|
+
retryPollInfo(): void;
|
|
58
|
+
/**
|
|
59
|
+
* Fetch the latest group of events and push them into the stream
|
|
60
|
+
* @returns {Promise} Promise for testing purposes
|
|
61
|
+
* @private
|
|
62
|
+
*/
|
|
63
|
+
fetchEvents(): Promise<any>;
|
|
64
|
+
/**
|
|
65
|
+
* Clean up the deduplication filter, to prevent it from growing
|
|
66
|
+
* too big and eating up memory. We look at the latest set of events
|
|
67
|
+
* returned and assume that any IDs not in that set don't need to be
|
|
68
|
+
* tracked for deduplication any more.
|
|
69
|
+
* @param {Object[]} latestEvents The latest events from the API
|
|
70
|
+
* @returns {void}
|
|
71
|
+
* @private
|
|
72
|
+
*/
|
|
73
|
+
cleanupDedupFilter(latestEvents: any): void;
|
|
74
|
+
/**
|
|
75
|
+
* Implementation of the stream-internal read function. This is called
|
|
76
|
+
* by the stream whenever it needs more data, and will not be called again
|
|
77
|
+
* until data is pushed into the stream.
|
|
78
|
+
* @returns {void}
|
|
79
|
+
* @private
|
|
80
|
+
*/
|
|
81
|
+
_read(): void;
|
|
82
|
+
/**
|
|
83
|
+
* Implementation of stream-internal `_destroy` function (v8.0.0 and later).
|
|
84
|
+
* Called by stream consumers to effectively stop polling via the public
|
|
85
|
+
* `destroy()`.
|
|
86
|
+
* @returns {void}
|
|
87
|
+
* @private
|
|
88
|
+
*/
|
|
89
|
+
_destroy(): void;
|
|
90
|
+
}
|
|
91
|
+
export = EventStream;
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Event stream backed by the events API
|
|
4
|
+
*/
|
|
5
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
+
};
|
|
8
|
+
// ------------------------------------------------------------------------------
|
|
9
|
+
// Requirements
|
|
10
|
+
// ------------------------------------------------------------------------------
|
|
11
|
+
const bluebird_1 = require("bluebird");
|
|
12
|
+
const querystring_1 = __importDefault(require("querystring"));
|
|
13
|
+
const stream_1 = require("stream");
|
|
14
|
+
// ------------------------------------------------------------------------------
|
|
15
|
+
// Private
|
|
16
|
+
// ------------------------------------------------------------------------------
|
|
17
|
+
const DEFAULT_OPTIONS = Object.freeze({
|
|
18
|
+
deduplicationFilterSize: 5000,
|
|
19
|
+
retryDelay: 1000,
|
|
20
|
+
fetchInterval: 1000,
|
|
21
|
+
});
|
|
22
|
+
// ------------------------------------------------------------------------------
|
|
23
|
+
// Public
|
|
24
|
+
// ------------------------------------------------------------------------------
|
|
25
|
+
/**
|
|
26
|
+
* Stream of Box events from a given client and point in time.
|
|
27
|
+
* @param {BoxClient} client The client to use to get events
|
|
28
|
+
* @param {string} streamPosition The point in time to start at
|
|
29
|
+
* @param {Object} [options] Optional parameters
|
|
30
|
+
* @param {int} [options.retryDelay=1000] Number of ms to wait before retrying after an error
|
|
31
|
+
* @param {int} [options.deduplicationFilterSize=5000] Number of IDs to track for deduplication
|
|
32
|
+
* @param {int} [options.fetchInterval=1000] Minimunm number of ms between calls for more events
|
|
33
|
+
* @constructor
|
|
34
|
+
* @extends Readable
|
|
35
|
+
*/
|
|
36
|
+
class EventStream extends stream_1.Readable {
|
|
37
|
+
constructor(client, streamPosition, options) {
|
|
38
|
+
super({
|
|
39
|
+
objectMode: true,
|
|
40
|
+
});
|
|
41
|
+
/**
|
|
42
|
+
* @var {BoxClient} The client for making API calls
|
|
43
|
+
* @private
|
|
44
|
+
*/
|
|
45
|
+
this._client = client;
|
|
46
|
+
/**
|
|
47
|
+
* @var {string} The latest stream position
|
|
48
|
+
* @private
|
|
49
|
+
*/
|
|
50
|
+
this._streamPosition = streamPosition;
|
|
51
|
+
/**
|
|
52
|
+
* @var {?Object} The information for how to long poll
|
|
53
|
+
* @private
|
|
54
|
+
*/
|
|
55
|
+
this._longPollInfo = undefined;
|
|
56
|
+
/**
|
|
57
|
+
* @var {int} The number of long poll requests we've made against one URL so far
|
|
58
|
+
* @private
|
|
59
|
+
*/
|
|
60
|
+
this._longPollRetries = 0;
|
|
61
|
+
/**
|
|
62
|
+
* @var {Object.<string, boolean>} Hash of event IDs we've already pushed
|
|
63
|
+
* @private
|
|
64
|
+
*/
|
|
65
|
+
this._dedupHash = {};
|
|
66
|
+
/**
|
|
67
|
+
* Rate limiting promise to ensure that events are not fetched too often,
|
|
68
|
+
* initially resolved to allow an immediate API call.
|
|
69
|
+
* @var {Promise}
|
|
70
|
+
* @private
|
|
71
|
+
*/
|
|
72
|
+
this._rateLimiter = bluebird_1.Promise.resolve();
|
|
73
|
+
this._options = Object.assign({}, DEFAULT_OPTIONS, options);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Retrieve the url and params for long polling for new updates
|
|
77
|
+
* @returns {Promise} Promise for testing purposes
|
|
78
|
+
* @private
|
|
79
|
+
*/
|
|
80
|
+
getLongPollInfo() {
|
|
81
|
+
if (this.destroyed) {
|
|
82
|
+
return bluebird_1.Promise.resolve(false);
|
|
83
|
+
}
|
|
84
|
+
return this._client.events
|
|
85
|
+
.getLongPollInfo()
|
|
86
|
+
.then((longPollInfo) => {
|
|
87
|
+
// On getting new long poll info, reset everything
|
|
88
|
+
this._longPollInfo = longPollInfo;
|
|
89
|
+
this._longPollRetries = 0;
|
|
90
|
+
return this.doLongPoll();
|
|
91
|
+
})
|
|
92
|
+
.catch((err /* FIXME */) => {
|
|
93
|
+
this.emit('error', err);
|
|
94
|
+
// Only retry on resolvable errors
|
|
95
|
+
if (!err.authExpired) {
|
|
96
|
+
this.retryPollInfo();
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Long poll for notification of new events. We do this rather than
|
|
102
|
+
* polling for the events directly in order to minimize the number of API
|
|
103
|
+
* calls necessary.
|
|
104
|
+
* @returns {Promise} Promise for testing pruposes
|
|
105
|
+
* @private
|
|
106
|
+
*/
|
|
107
|
+
doLongPoll() {
|
|
108
|
+
if (this.destroyed) {
|
|
109
|
+
return bluebird_1.Promise.resolve(false);
|
|
110
|
+
}
|
|
111
|
+
// If we're over the max number of retries, reset
|
|
112
|
+
if (this._longPollRetries > this._longPollInfo.max_retries) {
|
|
113
|
+
return this.getLongPollInfo();
|
|
114
|
+
}
|
|
115
|
+
var url = this._longPollInfo.url, qsDelim = url.indexOf('?'), query = {};
|
|
116
|
+
// Break out the query params, otherwise the request URL gets messed up
|
|
117
|
+
if (qsDelim > 0) {
|
|
118
|
+
query = querystring_1.default.parse(url.substr(qsDelim + 1));
|
|
119
|
+
url = url.substr(0, qsDelim);
|
|
120
|
+
}
|
|
121
|
+
query.stream_position = this._streamPosition;
|
|
122
|
+
var options = {
|
|
123
|
+
qs: query,
|
|
124
|
+
timeout: this._longPollInfo.retry_timeout * 1000,
|
|
125
|
+
};
|
|
126
|
+
this._longPollRetries += 1;
|
|
127
|
+
return this._client
|
|
128
|
+
.wrapWithDefaultHandler(this._client.get)(url, options)
|
|
129
|
+
.then((data /* FIXME */) => {
|
|
130
|
+
if (this.destroyed) {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
if (data.message === 'reconnect') {
|
|
134
|
+
return this.getLongPollInfo();
|
|
135
|
+
}
|
|
136
|
+
// We don't expect any messages other than reconnect and new_change, so if
|
|
137
|
+
// we get one just retry the long poll
|
|
138
|
+
if (data.message !== 'new_change') {
|
|
139
|
+
return this.doLongPoll();
|
|
140
|
+
}
|
|
141
|
+
return this.fetchEvents();
|
|
142
|
+
})
|
|
143
|
+
.catch(() => {
|
|
144
|
+
this.retryPollInfo();
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Retries long-polling after a delay.
|
|
149
|
+
* Does not attempt if stream is already destroyed.
|
|
150
|
+
* @returns {void}
|
|
151
|
+
* @private
|
|
152
|
+
*/
|
|
153
|
+
retryPollInfo() {
|
|
154
|
+
if (!this.destroyed) {
|
|
155
|
+
this._retryTimer = setTimeout(() => this.getLongPollInfo(), this._options.retryDelay);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Fetch the latest group of events and push them into the stream
|
|
160
|
+
* @returns {Promise} Promise for testing purposes
|
|
161
|
+
* @private
|
|
162
|
+
*/
|
|
163
|
+
fetchEvents() {
|
|
164
|
+
if (this.destroyed) {
|
|
165
|
+
return bluebird_1.Promise.resolve(false);
|
|
166
|
+
}
|
|
167
|
+
var eventParams = {
|
|
168
|
+
stream_position: this._streamPosition,
|
|
169
|
+
limit: 500,
|
|
170
|
+
};
|
|
171
|
+
// Get new events after the rate limiter expires
|
|
172
|
+
return this._rateLimiter.then(() => this._client.events
|
|
173
|
+
.get(eventParams)
|
|
174
|
+
.then((events /* FIXME */) => {
|
|
175
|
+
// Reset the rate limiter
|
|
176
|
+
this._rateLimiter = bluebird_1.Promise.delay(this._options.fetchInterval);
|
|
177
|
+
// If the response wasn't what we expected, re-poll
|
|
178
|
+
if (!events.entries || !events.next_stream_position) {
|
|
179
|
+
return this.doLongPoll();
|
|
180
|
+
}
|
|
181
|
+
this._streamPosition = events.next_stream_position;
|
|
182
|
+
// De-duplicate the fetched events, since the API often returns
|
|
183
|
+
// the same events at multiple subsequent stream positions
|
|
184
|
+
var newEvents = events.entries.filter((event /* FIXME */) => !this._dedupHash[event.event_id]);
|
|
185
|
+
// If there aren't any non-duplicate events, go back to polling
|
|
186
|
+
if (newEvents.length === 0) {
|
|
187
|
+
return this.doLongPoll();
|
|
188
|
+
}
|
|
189
|
+
// Pause the stream to avoid race conditions while pushing in the new events.
|
|
190
|
+
// Without this, _read() would be called again from inside each push(),
|
|
191
|
+
// resulting in multiple parallel calls to fetchEvents().
|
|
192
|
+
// See https://github.com/nodejs/node/issues/3203
|
|
193
|
+
var wasPaused = this.isPaused();
|
|
194
|
+
this.pause();
|
|
195
|
+
// Push new events into the stream
|
|
196
|
+
newEvents.forEach((event /* FIXME */) => {
|
|
197
|
+
this._dedupHash[event.event_id] = true;
|
|
198
|
+
this.push(event);
|
|
199
|
+
});
|
|
200
|
+
if (!wasPaused) {
|
|
201
|
+
// This will deliver the events and trigger the next call to _read() once they have been consumed.
|
|
202
|
+
this.resume();
|
|
203
|
+
}
|
|
204
|
+
// Once the deduplication filter gets too big, clean it up
|
|
205
|
+
if (Object.keys(this._dedupHash).length >=
|
|
206
|
+
this._options.deduplicationFilterSize) {
|
|
207
|
+
this.cleanupDedupFilter(events.entries);
|
|
208
|
+
}
|
|
209
|
+
return true;
|
|
210
|
+
})
|
|
211
|
+
.catch((err /* FIXME */) => {
|
|
212
|
+
this.emit('error', err);
|
|
213
|
+
this.retryPollInfo();
|
|
214
|
+
}));
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Clean up the deduplication filter, to prevent it from growing
|
|
218
|
+
* too big and eating up memory. We look at the latest set of events
|
|
219
|
+
* returned and assume that any IDs not in that set don't need to be
|
|
220
|
+
* tracked for deduplication any more.
|
|
221
|
+
* @param {Object[]} latestEvents The latest events from the API
|
|
222
|
+
* @returns {void}
|
|
223
|
+
* @private
|
|
224
|
+
*/
|
|
225
|
+
cleanupDedupFilter(latestEvents /* FIXME */) {
|
|
226
|
+
var dedupIDs = Object.keys(this._dedupHash);
|
|
227
|
+
dedupIDs.forEach((eventID) => {
|
|
228
|
+
var isEventCleared = !latestEvents.find((e /* FIXME */) => e.event_id === eventID);
|
|
229
|
+
if (isEventCleared) {
|
|
230
|
+
delete this._dedupHash[eventID];
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Implementation of the stream-internal read function. This is called
|
|
236
|
+
* by the stream whenever it needs more data, and will not be called again
|
|
237
|
+
* until data is pushed into the stream.
|
|
238
|
+
* @returns {void}
|
|
239
|
+
* @private
|
|
240
|
+
*/
|
|
241
|
+
_read() {
|
|
242
|
+
// Start the process of getting new events
|
|
243
|
+
this.getLongPollInfo();
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Implementation of stream-internal `_destroy` function (v8.0.0 and later).
|
|
247
|
+
* Called by stream consumers to effectively stop polling via the public
|
|
248
|
+
* `destroy()`.
|
|
249
|
+
* @returns {void}
|
|
250
|
+
* @private
|
|
251
|
+
*/
|
|
252
|
+
_destroy() {
|
|
253
|
+
clearTimeout(this._retryTimer);
|
|
254
|
+
delete this._retryTimer;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
// backwards-compat for Node.js pre-v8.0.0
|
|
258
|
+
/* istanbul ignore if */
|
|
259
|
+
if (typeof stream_1.Readable.prototype.destroy !== 'function') {
|
|
260
|
+
/**
|
|
261
|
+
* Destroys the stream. Rough polyfill for `Readable#destroy`.
|
|
262
|
+
* @returns {void}
|
|
263
|
+
* @public
|
|
264
|
+
*/
|
|
265
|
+
EventStream.prototype.destroy = function (error) {
|
|
266
|
+
if (!this.destroyed) {
|
|
267
|
+
process.nextTick(() => {
|
|
268
|
+
this.emit('close');
|
|
269
|
+
});
|
|
270
|
+
this.destroyed = true;
|
|
271
|
+
this._destroy();
|
|
272
|
+
}
|
|
273
|
+
return this;
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
module.exports = EventStream;
|
|
277
|
+
//# sourceMappingURL=event-stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-stream.js","sourceRoot":"","sources":["../src/event-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import BoxClient from '../box-client';
|
|
2
|
+
import * as schemas from '../schemas';
|
|
3
|
+
/**
|
|
4
|
+
*/
|
|
5
|
+
declare class AIManager {
|
|
6
|
+
client: BoxClient;
|
|
7
|
+
/**
|
|
8
|
+
* @param {BoxClient} client The Box API Client that is responsible for making calls to the API
|
|
9
|
+
*/
|
|
10
|
+
constructor(client: BoxClient);
|
|
11
|
+
/**
|
|
12
|
+
* Send AI question request
|
|
13
|
+
*
|
|
14
|
+
* Sends an AI request to supported LLMs and returns an answer specifically focused on the user's question given the provided context.
|
|
15
|
+
* @param {schemas.AiAsk} body
|
|
16
|
+
* @param {object} [options] Options for the request
|
|
17
|
+
* @param {Function} [callback] Passed the result if successful, error otherwise
|
|
18
|
+
* @returns {Promise<schemas.AiResponseFull>} A promise resolving to the result or rejecting with an error
|
|
19
|
+
*/
|
|
20
|
+
ask(body: schemas.AiAsk, options?: {}, callback?: Function): Promise<schemas.AiResponseFull>;
|
|
21
|
+
/**
|
|
22
|
+
* Send AI request to generate text
|
|
23
|
+
*
|
|
24
|
+
* Sends an AI request to supported LLMs and returns an answer specifically focused on the creation of new text.
|
|
25
|
+
* @param {schemas.AiTextGen} body
|
|
26
|
+
* @param {object} [options] Options for the request
|
|
27
|
+
* @param {Function} [callback] Passed the result if successful, error otherwise
|
|
28
|
+
* @returns {Promise<schemas.AiResponse>} A promise resolving to the result or rejecting with an error
|
|
29
|
+
*/
|
|
30
|
+
textGen(body: schemas.AiTextGen, options?: {}, callback?: Function): Promise<schemas.AiResponse>;
|
|
31
|
+
/**
|
|
32
|
+
* Get AI agent default configuration
|
|
33
|
+
*
|
|
34
|
+
* Get the AI agent default config
|
|
35
|
+
* @param {object} options Options for the request
|
|
36
|
+
* @param {"ask" | "text_gen"} options.mode The mode to filter the agent config to return.
|
|
37
|
+
* @param {string} [options.language] The ISO language code to return the agent config for. If the language is not supported the default agent config is returned.
|
|
38
|
+
* @param {string} [options.model] The model to return the default agent config for.
|
|
39
|
+
* @param {Function} [callback] Passed the result if successful, error otherwise
|
|
40
|
+
* @returns {Promise<schemas.AiAgentAsk | schemas.AiAgentTextGen>} A promise resolving to the result or rejecting with an error
|
|
41
|
+
*/
|
|
42
|
+
getAiAgentDefaultConfig(options: {
|
|
43
|
+
/**
|
|
44
|
+
* The mode to filter the agent config to return.
|
|
45
|
+
*/
|
|
46
|
+
readonly mode: 'ask' | 'text_gen';
|
|
47
|
+
/**
|
|
48
|
+
* The ISO language code to return the agent config for.
|
|
49
|
+
* If the language is not supported the default agent config is returned.
|
|
50
|
+
*/
|
|
51
|
+
readonly language?: string;
|
|
52
|
+
/**
|
|
53
|
+
* The model to return the default agent config for.
|
|
54
|
+
*/
|
|
55
|
+
readonly model?: string;
|
|
56
|
+
}, callback?: Function): Promise<schemas.AiAgentAsk | schemas.AiAgentTextGen>;
|
|
57
|
+
}
|
|
58
|
+
export = AIManager;
|