@nocobase/plugin-ai 2.1.7 → 2.1.9
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/dist/client/{406.9a530334eae8cede.js → 406.15c09d98faa2ccf1.js} +1 -1
- package/dist/client/{428.fdd0cc3cfd1632ef.js → 428.5eb4f53ddbb6a3b8.js} +1 -1
- package/dist/client/index.js +2 -2
- package/dist/client-v2/index.js +1 -1
- package/dist/externalVersion.js +21 -21
- package/dist/node_modules/@langchain/xai/dist/chat_models/completions.cjs +25 -34
- package/dist/node_modules/@langchain/xai/dist/chat_models/completions.d.cts +10 -22
- package/dist/node_modules/@langchain/xai/dist/chat_models/completions.d.ts +10 -22
- package/dist/node_modules/@langchain/xai/dist/chat_models/completions.js +17 -25
- package/dist/node_modules/@langchain/xai/dist/chat_models/index.cjs +2 -2
- package/dist/node_modules/@langchain/xai/dist/chat_models/index.d.cts +3 -0
- package/dist/node_modules/@langchain/xai/dist/chat_models/index.js +3 -2
- package/dist/node_modules/@langchain/xai/dist/chat_models/responses-types.d.cts +5 -12
- package/dist/node_modules/@langchain/xai/dist/chat_models/responses-types.d.ts +5 -12
- package/dist/node_modules/@langchain/xai/dist/chat_models/responses.cjs +18 -19
- package/dist/node_modules/@langchain/xai/dist/chat_models/responses.d.cts +1 -1
- package/dist/node_modules/@langchain/xai/dist/chat_models/responses.d.ts +1 -1
- package/dist/node_modules/@langchain/xai/dist/chat_models/responses.js +13 -13
- package/dist/node_modules/@langchain/xai/dist/converters/responses.cjs +16 -22
- package/dist/node_modules/@langchain/xai/dist/converters/responses.js +7 -12
- package/dist/node_modules/@langchain/xai/dist/index.cjs +2 -2
- package/dist/node_modules/@langchain/xai/dist/index.d.ts +0 -1
- package/dist/node_modules/@langchain/xai/dist/index.js +1 -2
- package/dist/node_modules/@langchain/xai/dist/live_search.cjs +4 -5
- package/dist/node_modules/@langchain/xai/dist/live_search.js +4 -4
- package/dist/node_modules/@langchain/xai/dist/profiles.cjs +81 -97
- package/dist/node_modules/@langchain/xai/dist/profiles.js +81 -96
- package/dist/node_modules/@langchain/xai/dist/tools/code_execution.cjs +1 -2
- package/dist/node_modules/@langchain/xai/dist/tools/code_execution.js +1 -1
- package/dist/node_modules/@langchain/xai/dist/tools/collections_search.cjs +1 -2
- package/dist/node_modules/@langchain/xai/dist/tools/collections_search.js +1 -1
- package/dist/node_modules/@langchain/xai/dist/tools/index.cjs +6 -7
- package/dist/node_modules/@langchain/xai/dist/tools/index.d.cts +1 -2
- package/dist/node_modules/@langchain/xai/dist/tools/index.d.ts +1 -2
- package/dist/node_modules/@langchain/xai/dist/tools/index.js +6 -7
- package/dist/node_modules/@langchain/xai/dist/tools/live_search.cjs +3 -7
- package/dist/node_modules/@langchain/xai/dist/tools/live_search.d.cts +1 -2
- package/dist/node_modules/@langchain/xai/dist/tools/live_search.d.ts +1 -2
- package/dist/node_modules/@langchain/xai/dist/tools/live_search.js +3 -6
- package/dist/node_modules/@langchain/xai/dist/tools/web_search.cjs +1 -2
- package/dist/node_modules/@langchain/xai/dist/tools/web_search.js +1 -1
- package/dist/node_modules/@langchain/xai/dist/tools/x_search.cjs +1 -2
- package/dist/node_modules/@langchain/xai/dist/tools/x_search.js +1 -1
- package/dist/node_modules/@langchain/xai/package.json +1 -1
- package/dist/node_modules/fs-extra/package.json +1 -1
- package/dist/node_modules/jsonrepair/package.json +1 -1
- package/dist/node_modules/just-bash/package.json +1 -1
- package/dist/node_modules/nodejs-snowflake/package.json +1 -1
- package/dist/node_modules/openai/_vendor/zod-to-json-schema/parsers/branded.d.mts +1 -1
- package/dist/node_modules/openai/_vendor/zod-to-json-schema/parsers/branded.d.ts +1 -1
- package/dist/node_modules/openai/_vendor/zod-to-json-schema/parsers/catch.d.mts +1 -1
- package/dist/node_modules/openai/_vendor/zod-to-json-schema/parsers/catch.d.ts +1 -1
- package/dist/node_modules/openai/_vendor/zod-to-json-schema/parsers/readonly.d.mts +1 -1
- package/dist/node_modules/openai/_vendor/zod-to-json-schema/parsers/readonly.d.ts +1 -1
- package/dist/node_modules/openai/api-promise.d.mts +1 -0
- package/dist/node_modules/openai/api-promise.d.ts +1 -0
- package/dist/node_modules/openai/auth/index.d.mts +4 -0
- package/dist/node_modules/openai/auth/index.d.ts +4 -0
- package/dist/node_modules/openai/auth/index.js +11 -0
- package/dist/node_modules/openai/auth/subject-token-providers.d.mts +20 -0
- package/dist/node_modules/openai/auth/subject-token-providers.d.ts +20 -0
- package/dist/node_modules/openai/auth/subject-token-providers.js +127 -0
- package/dist/node_modules/openai/auth/types.d.mts +23 -0
- package/dist/node_modules/openai/auth/types.d.ts +23 -0
- package/dist/node_modules/openai/auth/types.js +3 -0
- package/dist/node_modules/openai/auth/workload-identity-auth.d.mts +16 -0
- package/dist/node_modules/openai/auth/workload-identity-auth.d.ts +16 -0
- package/dist/node_modules/openai/auth/workload-identity-auth.js +95 -0
- package/dist/node_modules/openai/azure.d.mts +6 -2
- package/dist/node_modules/openai/azure.d.ts +6 -2
- package/dist/node_modules/openai/azure.js +4 -3
- package/dist/node_modules/openai/beta/realtime/websocket.js +7 -2
- package/dist/node_modules/openai/beta/realtime/ws.js +5 -1
- package/dist/node_modules/openai/bin/migration-config.json +1120 -0
- package/dist/node_modules/openai/client.d.mts +72 -10
- package/dist/node_modules/openai/client.d.ts +72 -10
- package/dist/node_modules/openai/client.js +207 -28
- package/dist/node_modules/openai/core/EventEmitter.d.mts +56 -0
- package/dist/node_modules/openai/core/EventEmitter.d.ts +56 -0
- package/dist/node_modules/openai/core/EventEmitter.js +93 -0
- package/dist/node_modules/openai/core/error.d.mts +15 -0
- package/dist/node_modules/openai/core/error.d.ts +15 -0
- package/dist/node_modules/openai/core/error.js +34 -1
- package/dist/node_modules/openai/core/pagination.d.mts +18 -0
- package/dist/node_modules/openai/core/pagination.d.ts +18 -0
- package/dist/node_modules/openai/core/pagination.js +32 -1
- package/dist/node_modules/openai/core/streaming.d.mts +1 -1
- package/dist/node_modules/openai/core/streaming.d.ts +1 -1
- package/dist/node_modules/openai/core/streaming.js +2 -2
- package/dist/node_modules/openai/error.d.mts +1 -0
- package/dist/node_modules/openai/error.d.ts +1 -0
- package/dist/node_modules/openai/index.d.mts +1 -1
- package/dist/node_modules/openai/index.d.ts +1 -1
- package/dist/node_modules/openai/index.js +1 -1
- package/dist/node_modules/openai/internal/parse.js +2 -2
- package/dist/node_modules/openai/internal/qs/index.d.mts +2 -2
- package/dist/node_modules/openai/internal/qs/index.d.ts +2 -2
- package/dist/node_modules/openai/internal/request-options.d.mts +5 -0
- package/dist/node_modules/openai/internal/request-options.d.ts +5 -0
- package/dist/node_modules/openai/internal/shims.d.mts +6 -0
- package/dist/node_modules/openai/internal/shims.d.ts +6 -0
- package/dist/node_modules/openai/internal/types.d.mts +17 -11
- package/dist/node_modules/openai/internal/types.d.ts +17 -11
- package/dist/node_modules/openai/internal/utils/env.js +2 -2
- package/dist/node_modules/openai/internal/utils/log.js +2 -0
- package/dist/node_modules/openai/internal/utils/query.d.mts +2 -0
- package/dist/node_modules/openai/internal/utils/query.d.ts +2 -0
- package/dist/node_modules/openai/internal/utils/query.js +10 -0
- package/dist/node_modules/openai/internal/utils.d.mts +1 -0
- package/dist/node_modules/openai/internal/utils.d.ts +1 -0
- package/dist/node_modules/openai/internal/utils.js +1 -0
- package/dist/node_modules/openai/internal/ws-adapter-browser.d.mts +34 -0
- package/dist/node_modules/openai/internal/ws-adapter-browser.d.ts +34 -0
- package/dist/node_modules/openai/internal/ws-adapter-browser.js +88 -0
- package/dist/node_modules/openai/internal/ws-adapter-node.d.mts +27 -0
- package/dist/node_modules/openai/internal/ws-adapter-node.d.ts +27 -0
- package/dist/node_modules/openai/internal/ws-adapter-node.js +90 -0
- package/dist/node_modules/openai/internal/ws-adapter.d.mts +24 -0
- package/dist/node_modules/openai/internal/ws-adapter.d.ts +24 -0
- package/dist/node_modules/openai/internal/ws-adapter.js +11 -0
- package/dist/node_modules/openai/internal/ws.d.mts +80 -0
- package/dist/node_modules/openai/internal/ws.d.ts +80 -0
- package/dist/node_modules/openai/internal/ws.js +153 -0
- package/dist/node_modules/openai/package.json +1 -1
- package/dist/node_modules/openai/pagination.d.mts +1 -0
- package/dist/node_modules/openai/pagination.d.ts +1 -0
- package/dist/node_modules/openai/realtime/websocket.js +7 -2
- package/dist/node_modules/openai/realtime/ws.js +5 -1
- package/dist/node_modules/openai/resource.d.mts +1 -0
- package/dist/node_modules/openai/resource.d.ts +1 -0
- package/dist/node_modules/openai/resources/admin/admin.d.mts +10 -0
- package/dist/node_modules/openai/resources/admin/admin.d.ts +10 -0
- package/dist/node_modules/openai/resources/admin/admin.js +17 -0
- package/dist/node_modules/openai/resources/admin/index.d.mts +3 -0
- package/dist/node_modules/openai/resources/admin/index.d.ts +3 -0
- package/dist/node_modules/openai/resources/admin/index.js +9 -0
- package/dist/node_modules/openai/resources/admin/organization/admin-api-keys.d.mts +140 -0
- package/dist/node_modules/openai/resources/admin/organization/admin-api-keys.d.ts +140 -0
- package/dist/node_modules/openai/resources/admin/organization/admin-api-keys.js +81 -0
- package/dist/node_modules/openai/resources/admin/organization/audit-logs.d.mts +1267 -0
- package/dist/node_modules/openai/resources/admin/organization/audit-logs.d.ts +1267 -0
- package/dist/node_modules/openai/resources/admin/organization/audit-logs.js +31 -0
- package/dist/node_modules/openai/resources/admin/organization/certificates.d.mts +322 -0
- package/dist/node_modules/openai/resources/admin/organization/certificates.d.ts +322 -0
- package/dist/node_modules/openai/resources/admin/organization/certificates.js +144 -0
- package/dist/node_modules/openai/resources/admin/organization/data-retention.d.mts +50 -0
- package/dist/node_modules/openai/resources/admin/organization/data-retention.d.ts +50 -0
- package/dist/node_modules/openai/resources/admin/organization/data-retention.js +42 -0
- package/dist/node_modules/openai/resources/admin/organization/groups/groups.d.mts +160 -0
- package/dist/node_modules/openai/resources/admin/organization/groups/groups.d.ts +160 -0
- package/dist/node_modules/openai/resources/admin/organization/groups/groups.js +109 -0
- package/dist/node_modules/openai/resources/admin/organization/groups/index.d.mts +4 -0
- package/dist/node_modules/openai/resources/admin/organization/groups/index.d.ts +4 -0
- package/dist/node_modules/openai/resources/admin/organization/groups/index.js +11 -0
- package/dist/node_modules/openai/resources/admin/organization/groups/roles.d.mts +275 -0
- package/dist/node_modules/openai/resources/admin/organization/groups/roles.d.ts +275 -0
- package/dist/node_modules/openai/resources/admin/organization/groups/roles.js +84 -0
- package/dist/node_modules/openai/resources/admin/organization/groups/users.d.mts +164 -0
- package/dist/node_modules/openai/resources/admin/organization/groups/users.d.ts +164 -0
- package/dist/node_modules/openai/resources/admin/organization/groups/users.js +84 -0
- package/dist/node_modules/openai/resources/admin/organization/groups.d.mts +2 -0
- package/dist/node_modules/openai/resources/admin/organization/groups.d.ts +2 -0
- package/dist/node_modules/openai/resources/admin/organization/groups.js +6 -0
- package/dist/node_modules/openai/resources/admin/organization/index.d.mts +13 -0
- package/dist/node_modules/openai/resources/admin/organization/index.d.ts +13 -0
- package/dist/node_modules/openai/resources/admin/organization/index.js +29 -0
- package/dist/node_modules/openai/resources/admin/organization/invites.d.mts +153 -0
- package/dist/node_modules/openai/resources/admin/organization/invites.d.ts +153 -0
- package/dist/node_modules/openai/resources/admin/organization/invites.js +83 -0
- package/dist/node_modules/openai/resources/admin/organization/organization.d.mts +50 -0
- package/dist/node_modules/openai/resources/admin/organization/organization.d.ts +50 -0
- package/dist/node_modules/openai/resources/admin/organization/organization.js +57 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/api-keys.d.mts +167 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/api-keys.d.ts +167 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/api-keys.js +68 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/certificates.d.mts +186 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/certificates.d.ts +186 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/certificates.js +64 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/data-retention.d.mts +53 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/data-retention.d.ts +53 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/data-retention.js +46 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/groups/groups.d.mts +142 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/groups/groups.d.ts +142 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/groups/groups.js +93 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/groups/index.d.mts +3 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/groups/index.d.ts +3 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/groups/index.js +9 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/groups/roles.d.mts +292 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/groups/roles.d.ts +292 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/groups/roles.js +87 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/groups.d.mts +2 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/groups.d.ts +2 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/groups.js +6 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/hosted-tool-permissions.d.mts +174 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/hosted-tool-permissions.d.ts +174 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/hosted-tool-permissions.js +45 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/index.d.mts +13 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/index.d.ts +13 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/index.js +29 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/model-permissions.d.mts +86 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/model-permissions.d.ts +86 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/model-permissions.js +63 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/projects.d.mts +188 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/projects.d.ts +188 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/projects.js +149 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/rate-limits.d.mts +120 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/rate-limits.d.ts +120 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/rate-limits.js +47 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/roles.d.mts +146 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/roles.d.ts +146 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/roles.js +108 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/service-accounts.d.mts +168 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/service-accounts.d.ts +168 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/service-accounts.js +101 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/spend-alerts.d.mts +241 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/spend-alerts.d.ts +241 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/spend-alerts.js +102 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/users/index.d.mts +3 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/users/index.d.ts +3 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/users/index.js +9 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/users/roles.d.mts +266 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/users/roles.d.ts +266 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/users/roles.js +87 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/users/users.d.mts +157 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/users/users.d.ts +157 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/users/users.js +116 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/users.d.mts +2 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/users.d.ts +2 -0
- package/dist/node_modules/openai/resources/admin/organization/projects/users.js +6 -0
- package/dist/node_modules/openai/resources/admin/organization/projects.d.mts +2 -0
- package/dist/node_modules/openai/resources/admin/organization/projects.d.ts +2 -0
- package/dist/node_modules/openai/resources/admin/organization/projects.js +6 -0
- package/dist/node_modules/openai/resources/admin/organization/roles.d.mts +153 -0
- package/dist/node_modules/openai/resources/admin/organization/roles.d.ts +153 -0
- package/dist/node_modules/openai/resources/admin/organization/roles.js +96 -0
- package/dist/node_modules/openai/resources/admin/organization/spend-alerts.d.mts +224 -0
- package/dist/node_modules/openai/resources/admin/organization/spend-alerts.d.ts +224 -0
- package/dist/node_modules/openai/resources/admin/organization/spend-alerts.js +93 -0
- package/dist/node_modules/openai/resources/admin/organization/usage.d.mts +5123 -0
- package/dist/node_modules/openai/resources/admin/organization/usage.d.ts +5123 -0
- package/dist/node_modules/openai/resources/admin/organization/usage.js +207 -0
- package/dist/node_modules/openai/resources/admin/organization/users/index.d.mts +3 -0
- package/dist/node_modules/openai/resources/admin/organization/users/index.d.ts +3 -0
- package/dist/node_modules/openai/resources/admin/organization/users/index.js +9 -0
- package/dist/node_modules/openai/resources/admin/organization/users/roles.d.mts +249 -0
- package/dist/node_modules/openai/resources/admin/organization/users/roles.d.ts +249 -0
- package/dist/node_modules/openai/resources/admin/organization/users/roles.js +84 -0
- package/dist/node_modules/openai/resources/admin/organization/users/users.d.mts +185 -0
- package/dist/node_modules/openai/resources/admin/organization/users/users.d.ts +185 -0
- package/dist/node_modules/openai/resources/admin/organization/users/users.js +84 -0
- package/dist/node_modules/openai/resources/admin/organization/users.d.mts +2 -0
- package/dist/node_modules/openai/resources/admin/organization/users.d.ts +2 -0
- package/dist/node_modules/openai/resources/admin/organization/users.js +6 -0
- package/dist/node_modules/openai/resources/admin/organization.d.mts +2 -0
- package/dist/node_modules/openai/resources/admin/organization.d.ts +2 -0
- package/dist/node_modules/openai/resources/admin/organization.js +6 -0
- package/dist/node_modules/openai/resources/admin.d.mts +2 -0
- package/dist/node_modules/openai/resources/admin.d.ts +2 -0
- package/dist/node_modules/openai/resources/admin.js +6 -0
- package/dist/node_modules/openai/resources/audio/speech.d.mts +22 -5
- package/dist/node_modules/openai/resources/audio/speech.d.ts +22 -5
- package/dist/node_modules/openai/resources/audio/speech.js +8 -2
- package/dist/node_modules/openai/resources/audio/transcriptions.d.mts +6 -0
- package/dist/node_modules/openai/resources/audio/transcriptions.d.ts +6 -0
- package/dist/node_modules/openai/resources/audio/transcriptions.js +4 -0
- package/dist/node_modules/openai/resources/audio/translations.d.mts +3 -0
- package/dist/node_modules/openai/resources/audio/translations.d.ts +3 -0
- package/dist/node_modules/openai/resources/audio/translations.js +4 -1
- package/dist/node_modules/openai/resources/batches.d.mts +8 -4
- package/dist/node_modules/openai/resources/batches.d.ts +8 -4
- package/dist/node_modules/openai/resources/batches.js +14 -4
- package/dist/node_modules/openai/resources/beta/assistants.d.mts +6 -2
- package/dist/node_modules/openai/resources/beta/assistants.d.ts +6 -2
- package/dist/node_modules/openai/resources/beta/assistants.js +8 -0
- package/dist/node_modules/openai/resources/beta/chatkit/sessions.d.mts +4 -2
- package/dist/node_modules/openai/resources/beta/chatkit/sessions.d.ts +4 -2
- package/dist/node_modules/openai/resources/beta/chatkit/sessions.js +6 -2
- package/dist/node_modules/openai/resources/beta/chatkit/threads.d.mts +4 -4
- package/dist/node_modules/openai/resources/beta/chatkit/threads.d.ts +4 -4
- package/dist/node_modules/openai/resources/beta/chatkit/threads.js +13 -5
- package/dist/node_modules/openai/resources/beta/realtime/sessions.js +1 -0
- package/dist/node_modules/openai/resources/beta/realtime/transcription-sessions.js +1 -0
- package/dist/node_modules/openai/resources/beta/threads/messages.d.mts +2 -0
- package/dist/node_modules/openai/resources/beta/threads/messages.d.ts +2 -0
- package/dist/node_modules/openai/resources/beta/threads/messages.js +7 -0
- package/dist/node_modules/openai/resources/beta/threads/runs/runs.d.mts +2 -0
- package/dist/node_modules/openai/resources/beta/threads/runs/runs.d.ts +2 -0
- package/dist/node_modules/openai/resources/beta/threads/runs/runs.js +10 -0
- package/dist/node_modules/openai/resources/beta/threads/runs/steps.d.mts +2 -0
- package/dist/node_modules/openai/resources/beta/threads/runs/steps.d.ts +2 -0
- package/dist/node_modules/openai/resources/beta/threads/runs/steps.js +4 -0
- package/dist/node_modules/openai/resources/beta/threads/threads.d.mts +8 -4
- package/dist/node_modules/openai/resources/beta/threads/threads.d.ts +8 -4
- package/dist/node_modules/openai/resources/beta/threads/threads.js +8 -0
- package/dist/node_modules/openai/resources/chat/completions/completions.d.mts +37 -18
- package/dist/node_modules/openai/resources/chat/completions/completions.d.ts +37 -18
- package/dist/node_modules/openai/resources/chat/completions/completions.js +27 -5
- package/dist/node_modules/openai/resources/chat/completions/messages.d.mts +3 -0
- package/dist/node_modules/openai/resources/chat/completions/messages.d.ts +3 -0
- package/dist/node_modules/openai/resources/chat/completions/messages.js +4 -1
- package/dist/node_modules/openai/resources/completions.d.mts +9 -3
- package/dist/node_modules/openai/resources/completions.d.ts +9 -3
- package/dist/node_modules/openai/resources/completions.js +9 -1
- package/dist/node_modules/openai/resources/containers/containers.js +11 -3
- package/dist/node_modules/openai/resources/containers/files/content.js +1 -0
- package/dist/node_modules/openai/resources/containers/files/files.js +7 -2
- package/dist/node_modules/openai/resources/conversations/conversations.d.mts +15 -0
- package/dist/node_modules/openai/resources/conversations/conversations.d.ts +15 -0
- package/dist/node_modules/openai/resources/conversations/conversations.js +17 -4
- package/dist/node_modules/openai/resources/conversations/items.d.mts +4 -1
- package/dist/node_modules/openai/resources/conversations/items.d.ts +4 -1
- package/dist/node_modules/openai/resources/conversations/items.js +14 -3
- package/dist/node_modules/openai/resources/embeddings.d.mts +3 -0
- package/dist/node_modules/openai/resources/embeddings.d.ts +3 -0
- package/dist/node_modules/openai/resources/embeddings.js +4 -0
- package/dist/node_modules/openai/resources/evals/evals.d.mts +3 -0
- package/dist/node_modules/openai/resources/evals/evals.d.ts +3 -0
- package/dist/node_modules/openai/resources/evals/evals.js +12 -5
- package/dist/node_modules/openai/resources/evals/runs/output-items.d.mts +3 -0
- package/dist/node_modules/openai/resources/evals/runs/output-items.d.ts +3 -0
- package/dist/node_modules/openai/resources/evals/runs/output-items.js +8 -2
- package/dist/node_modules/openai/resources/evals/runs/runs.d.mts +3 -0
- package/dist/node_modules/openai/resources/evals/runs/runs.d.ts +3 -0
- package/dist/node_modules/openai/resources/evals/runs/runs.js +21 -4
- package/dist/node_modules/openai/resources/files.d.mts +11 -1
- package/dist/node_modules/openai/resources/files.d.ts +11 -1
- package/dist/node_modules/openai/resources/files.js +20 -5
- package/dist/node_modules/openai/resources/fine-tuning/alpha/graders.d.mts +3 -0
- package/dist/node_modules/openai/resources/fine-tuning/alpha/graders.d.ts +3 -0
- package/dist/node_modules/openai/resources/fine-tuning/alpha/graders.js +13 -2
- package/dist/node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.d.mts +2 -2
- package/dist/node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.d.ts +2 -2
- package/dist/node_modules/openai/resources/fine-tuning/checkpoints/index.d.mts +1 -1
- package/dist/node_modules/openai/resources/fine-tuning/checkpoints/index.d.ts +1 -1
- package/dist/node_modules/openai/resources/fine-tuning/checkpoints/permissions.d.mts +54 -7
- package/dist/node_modules/openai/resources/fine-tuning/checkpoints/permissions.d.ts +54 -7
- package/dist/node_modules/openai/resources/fine-tuning/checkpoints/permissions.js +26 -9
- package/dist/node_modules/openai/resources/fine-tuning/jobs/checkpoints.d.mts +3 -0
- package/dist/node_modules/openai/resources/fine-tuning/jobs/checkpoints.d.ts +3 -0
- package/dist/node_modules/openai/resources/fine-tuning/jobs/checkpoints.js +4 -1
- package/dist/node_modules/openai/resources/fine-tuning/jobs/jobs.d.mts +3 -0
- package/dist/node_modules/openai/resources/fine-tuning/jobs/jobs.d.ts +3 -0
- package/dist/node_modules/openai/resources/fine-tuning/jobs/jobs.js +26 -7
- package/dist/node_modules/openai/resources/images.d.mts +56 -24
- package/dist/node_modules/openai/resources/images.d.ts +56 -24
- package/dist/node_modules/openai/resources/images.js +11 -3
- package/dist/node_modules/openai/resources/index.d.mts +2 -1
- package/dist/node_modules/openai/resources/index.d.ts +2 -1
- package/dist/node_modules/openai/resources/index.js +3 -1
- package/dist/node_modules/openai/resources/models.d.mts +3 -0
- package/dist/node_modules/openai/resources/models.d.ts +3 -0
- package/dist/node_modules/openai/resources/models.js +6 -3
- package/dist/node_modules/openai/resources/moderations.d.mts +3 -0
- package/dist/node_modules/openai/resources/moderations.d.ts +3 -0
- package/dist/node_modules/openai/resources/moderations.js +4 -1
- package/dist/node_modules/openai/resources/realtime/calls.d.mts +13 -3
- package/dist/node_modules/openai/resources/realtime/calls.d.ts +13 -3
- package/dist/node_modules/openai/resources/realtime/calls.js +4 -0
- package/dist/node_modules/openai/resources/realtime/client-secrets.d.mts +45 -39
- package/dist/node_modules/openai/resources/realtime/client-secrets.d.ts +45 -39
- package/dist/node_modules/openai/resources/realtime/client-secrets.js +19 -1
- package/dist/node_modules/openai/resources/realtime/index.d.mts +1 -1
- package/dist/node_modules/openai/resources/realtime/index.d.ts +1 -1
- package/dist/node_modules/openai/resources/realtime/realtime.d.mts +592 -21
- package/dist/node_modules/openai/resources/realtime/realtime.d.ts +592 -21
- package/dist/node_modules/openai/resources/responses/index.d.mts +2 -0
- package/dist/node_modules/openai/resources/responses/index.d.ts +2 -0
- package/dist/node_modules/openai/resources/responses/input-items.js +1 -1
- package/dist/node_modules/openai/resources/responses/input-tokens.d.mts +4 -1
- package/dist/node_modules/openai/resources/responses/input-tokens.d.ts +4 -1
- package/dist/node_modules/openai/resources/responses/input-tokens.js +9 -2
- package/dist/node_modules/openai/resources/responses/internal-base.d.mts +71 -0
- package/dist/node_modules/openai/resources/responses/internal-base.d.ts +71 -0
- package/dist/node_modules/openai/resources/responses/internal-base.js +48 -0
- package/dist/node_modules/openai/resources/responses/responses.d.mts +956 -64
- package/dist/node_modules/openai/resources/responses/responses.d.ts +956 -64
- package/dist/node_modules/openai/resources/responses/responses.js +20 -5
- package/dist/node_modules/openai/resources/responses/ws-base.d.mts +106 -0
- package/dist/node_modules/openai/resources/responses/ws-base.d.ts +106 -0
- package/dist/node_modules/openai/resources/responses/ws-base.js +476 -0
- package/dist/node_modules/openai/resources/responses/ws.d.mts +13 -0
- package/dist/node_modules/openai/resources/responses/ws.d.ts +13 -0
- package/dist/node_modules/openai/resources/responses/ws.js +31 -0
- package/dist/node_modules/openai/resources/shared.d.mts +3 -2
- package/dist/node_modules/openai/resources/shared.d.ts +3 -2
- package/dist/node_modules/openai/resources/skills/content.d.mts +1 -1
- package/dist/node_modules/openai/resources/skills/content.d.ts +1 -1
- package/dist/node_modules/openai/resources/skills/content.js +2 -1
- package/dist/node_modules/openai/resources/skills/skills.d.mts +5 -5
- package/dist/node_modules/openai/resources/skills/skills.d.ts +5 -5
- package/dist/node_modules/openai/resources/skills/skills.js +18 -10
- package/dist/node_modules/openai/resources/skills/versions/content.d.mts +1 -1
- package/dist/node_modules/openai/resources/skills/versions/content.d.ts +1 -1
- package/dist/node_modules/openai/resources/skills/versions/content.js +2 -1
- package/dist/node_modules/openai/resources/skills/versions/versions.d.mts +4 -4
- package/dist/node_modules/openai/resources/skills/versions/versions.d.ts +4 -4
- package/dist/node_modules/openai/resources/skills/versions/versions.js +14 -7
- package/dist/node_modules/openai/resources/uploads/parts.d.mts +3 -0
- package/dist/node_modules/openai/resources/uploads/parts.d.ts +3 -0
- package/dist/node_modules/openai/resources/uploads/parts.js +4 -1
- package/dist/node_modules/openai/resources/uploads/uploads.d.mts +10 -1
- package/dist/node_modules/openai/resources/uploads/uploads.d.ts +10 -1
- package/dist/node_modules/openai/resources/uploads/uploads.js +20 -4
- package/dist/node_modules/openai/resources/vector-stores/file-batches.d.mts +9 -3
- package/dist/node_modules/openai/resources/vector-stores/file-batches.d.ts +9 -3
- package/dist/node_modules/openai/resources/vector-stores/file-batches.js +9 -1
- package/dist/node_modules/openai/resources/vector-stores/files.d.mts +3 -1
- package/dist/node_modules/openai/resources/vector-stores/files.d.ts +3 -1
- package/dist/node_modules/openai/resources/vector-stores/files.js +10 -1
- package/dist/node_modules/openai/resources/vector-stores/vector-stores.js +6 -0
- package/dist/node_modules/openai/resources/videos.d.mts +123 -11
- package/dist/node_modules/openai/resources/videos.d.ts +123 -11
- package/dist/node_modules/openai/resources/videos.js +46 -11
- package/dist/node_modules/openai/src/auth/index.ts +9 -0
- package/dist/node_modules/openai/src/auth/subject-token-providers.ts +185 -0
- package/dist/node_modules/openai/src/auth/types.ts +28 -0
- package/dist/node_modules/openai/src/auth/workload-identity-auth.ts +122 -0
- package/dist/node_modules/openai/src/azure.ts +9 -4
- package/dist/node_modules/openai/src/beta/realtime/websocket.ts +7 -2
- package/dist/node_modules/openai/src/beta/realtime/ws.ts +5 -1
- package/dist/node_modules/openai/src/client.ts +312 -35
- package/dist/node_modules/openai/src/core/EventEmitter.ts +114 -0
- package/dist/node_modules/openai/src/core/error.ts +40 -0
- package/dist/node_modules/openai/src/core/pagination.ts +62 -0
- package/dist/node_modules/openai/src/core/streaming.ts +2 -1
- package/dist/node_modules/openai/src/index.ts +2 -0
- package/dist/node_modules/openai/src/internal/parse.ts +12 -2
- package/dist/node_modules/openai/src/internal/request-options.ts +2 -0
- package/dist/node_modules/openai/src/internal/types.ts +14 -8
- package/dist/node_modules/openai/src/internal/utils/env.ts +2 -2
- package/dist/node_modules/openai/src/internal/utils/log.ts +2 -0
- package/dist/node_modules/openai/src/internal/utils/query.ts +7 -0
- package/dist/node_modules/openai/src/internal/utils.ts +1 -0
- package/dist/node_modules/openai/src/internal/ws-adapter-browser.ts +123 -0
- package/dist/node_modules/openai/src/internal/ws-adapter-node.ts +105 -0
- package/dist/node_modules/openai/src/internal/ws-adapter.ts +30 -0
- package/dist/node_modules/openai/src/internal/ws.ts +193 -0
- package/dist/node_modules/openai/src/realtime/websocket.ts +7 -2
- package/dist/node_modules/openai/src/realtime/ws.ts +5 -1
- package/dist/node_modules/openai/src/resources/admin/admin.ts +15 -0
- package/dist/node_modules/openai/src/resources/admin/index.ts +4 -0
- package/dist/node_modules/openai/src/resources/admin/organization/admin-api-keys.ts +199 -0
- package/dist/node_modules/openai/src/resources/admin/organization/audit-logs.ts +1597 -0
- package/dist/node_modules/openai/src/resources/admin/organization/certificates.ts +458 -0
- package/dist/node_modules/openai/src/resources/admin/organization/data-retention.ts +79 -0
- package/dist/node_modules/openai/src/resources/admin/organization/groups/groups.ts +277 -0
- package/dist/node_modules/openai/src/resources/admin/organization/groups/index.ts +36 -0
- package/dist/node_modules/openai/src/resources/admin/organization/groups/roles.ts +359 -0
- package/dist/node_modules/openai/src/resources/admin/organization/groups/users.ts +232 -0
- package/dist/node_modules/openai/src/resources/admin/organization/groups.ts +3 -0
- package/dist/node_modules/openai/src/resources/admin/organization/index.ts +117 -0
- package/dist/node_modules/openai/src/resources/admin/organization/invites.ts +215 -0
- package/dist/node_modules/openai/src/resources/admin/organization/organization.ts +272 -0
- package/dist/node_modules/openai/src/resources/admin/organization/projects/api-keys.ts +239 -0
- package/dist/node_modules/openai/src/resources/admin/organization/projects/certificates.ts +269 -0
- package/dist/node_modules/openai/src/resources/admin/organization/projects/data-retention.ts +91 -0
- package/dist/node_modules/openai/src/resources/admin/organization/projects/groups/groups.ts +231 -0
- package/dist/node_modules/openai/src/resources/admin/organization/projects/groups/index.ts +24 -0
- package/dist/node_modules/openai/src/resources/admin/organization/projects/groups/roles.ts +386 -0
- package/dist/node_modules/openai/src/resources/admin/organization/projects/groups.ts +3 -0
- package/dist/node_modules/openai/src/resources/admin/organization/projects/hosted-tool-permissions.ts +217 -0
- package/dist/node_modules/openai/src/resources/admin/organization/projects/index.ts +102 -0
- package/dist/node_modules/openai/src/resources/admin/organization/projects/model-permissions.ts +123 -0
- package/dist/node_modules/openai/src/resources/admin/organization/projects/projects.ts +445 -0
- package/dist/node_modules/openai/src/resources/admin/organization/projects/rate-limits.ts +173 -0
- package/dist/node_modules/openai/src/resources/admin/organization/projects/roles.ts +210 -0
- package/dist/node_modules/openai/src/resources/admin/organization/projects/service-accounts.ts +266 -0
- package/dist/node_modules/openai/src/resources/admin/organization/projects/spend-alerts.ts +332 -0
- package/dist/node_modules/openai/src/resources/admin/organization/projects/users/index.ts +25 -0
- package/dist/node_modules/openai/src/resources/admin/organization/projects/users/roles.ts +351 -0
- package/dist/node_modules/openai/src/resources/admin/organization/projects/users/users.ts +256 -0
- package/dist/node_modules/openai/src/resources/admin/organization/projects/users.ts +3 -0
- package/dist/node_modules/openai/src/resources/admin/organization/projects.ts +3 -0
- package/dist/node_modules/openai/src/resources/admin/organization/roles.ts +217 -0
- package/dist/node_modules/openai/src/resources/admin/organization/spend-alerts.ts +301 -0
- package/dist/node_modules/openai/src/resources/admin/organization/usage.ts +6427 -0
- package/dist/node_modules/openai/src/resources/admin/organization/users/index.ts +22 -0
- package/dist/node_modules/openai/src/resources/admin/organization/users/roles.ts +328 -0
- package/dist/node_modules/openai/src/resources/admin/organization/users/users.ts +291 -0
- package/dist/node_modules/openai/src/resources/admin/organization/users.ts +3 -0
- package/dist/node_modules/openai/src/resources/admin/organization.ts +3 -0
- package/dist/node_modules/openai/src/resources/admin.ts +3 -0
- package/dist/node_modules/openai/src/resources/audio/speech.ts +26 -6
- package/dist/node_modules/openai/src/resources/audio/transcriptions.ts +7 -0
- package/dist/node_modules/openai/src/resources/audio/translations.ts +7 -1
- package/dist/node_modules/openai/src/resources/batches.ts +20 -8
- package/dist/node_modules/openai/src/resources/beta/assistants.ts +11 -2
- package/dist/node_modules/openai/src/resources/beta/chatkit/sessions.ts +6 -2
- package/dist/node_modules/openai/src/resources/beta/chatkit/threads.ts +13 -5
- package/dist/node_modules/openai/src/resources/beta/realtime/sessions.ts +1 -0
- package/dist/node_modules/openai/src/resources/beta/realtime/transcription-sessions.ts +1 -0
- package/dist/node_modules/openai/src/resources/beta/threads/messages.ts +7 -0
- package/dist/node_modules/openai/src/resources/beta/threads/runs/runs.ts +10 -0
- package/dist/node_modules/openai/src/resources/beta/threads/runs/steps.ts +4 -0
- package/dist/node_modules/openai/src/resources/beta/threads/threads.ts +14 -4
- package/dist/node_modules/openai/src/resources/chat/completions/completions.ts +64 -27
- package/dist/node_modules/openai/src/resources/chat/completions/messages.ts +4 -1
- package/dist/node_modules/openai/src/resources/completions.ts +15 -6
- package/dist/node_modules/openai/src/resources/containers/containers.ts +11 -3
- package/dist/node_modules/openai/src/resources/containers/files/content.ts +1 -0
- package/dist/node_modules/openai/src/resources/containers/files/files.ts +7 -2
- package/dist/node_modules/openai/src/resources/conversations/conversations.ts +31 -4
- package/dist/node_modules/openai/src/resources/conversations/items.ts +17 -3
- package/dist/node_modules/openai/src/resources/embeddings.ts +4 -0
- package/dist/node_modules/openai/src/resources/evals/evals.ts +12 -5
- package/dist/node_modules/openai/src/resources/evals/runs/output-items.ts +8 -2
- package/dist/node_modules/openai/src/resources/evals/runs/runs.ts +21 -4
- package/dist/node_modules/openai/src/resources/files.ts +23 -5
- package/dist/node_modules/openai/src/resources/fine-tuning/alpha/graders.ts +13 -2
- package/dist/node_modules/openai/src/resources/fine-tuning/checkpoints/checkpoints.ts +6 -0
- package/dist/node_modules/openai/src/resources/fine-tuning/checkpoints/index.ts +3 -0
- package/dist/node_modules/openai/src/resources/fine-tuning/checkpoints/permissions.ts +84 -10
- package/dist/node_modules/openai/src/resources/fine-tuning/jobs/checkpoints.ts +4 -1
- package/dist/node_modules/openai/src/resources/fine-tuning/jobs/jobs.ts +26 -7
- package/dist/node_modules/openai/src/resources/images.ts +74 -27
- package/dist/node_modules/openai/src/resources/index.ts +7 -0
- package/dist/node_modules/openai/src/resources/models.ts +6 -3
- package/dist/node_modules/openai/src/resources/moderations.ts +4 -1
- package/dist/node_modules/openai/src/resources/realtime/calls.ts +21 -2
- package/dist/node_modules/openai/src/resources/realtime/client-secrets.ts +54 -40
- package/dist/node_modules/openai/src/resources/realtime/index.ts +0 -1
- package/dist/node_modules/openai/src/resources/realtime/realtime.ts +705 -20
- package/dist/node_modules/openai/src/resources/responses/index.ts +2 -0
- package/dist/node_modules/openai/src/resources/responses/input-items.ts +1 -1
- package/dist/node_modules/openai/src/resources/responses/input-tokens.ts +9 -2
- package/dist/node_modules/openai/src/resources/responses/internal-base.ts +113 -0
- package/dist/node_modules/openai/src/resources/responses/responses.ts +1314 -143
- package/dist/node_modules/openai/src/resources/responses/ws-base.ts +611 -0
- package/dist/node_modules/openai/src/resources/responses/ws.ts +38 -0
- package/dist/node_modules/openai/src/resources/shared.ts +9 -1
- package/dist/node_modules/openai/src/resources/skills/content.ts +2 -1
- package/dist/node_modules/openai/src/resources/skills/skills.ts +21 -10
- package/dist/node_modules/openai/src/resources/skills/versions/content.ts +2 -1
- package/dist/node_modules/openai/src/resources/skills/versions/versions.ts +14 -7
- package/dist/node_modules/openai/src/resources/uploads/parts.ts +4 -1
- package/dist/node_modules/openai/src/resources/uploads/uploads.ts +20 -4
- package/dist/node_modules/openai/src/resources/vector-stores/file-batches.ts +18 -4
- package/dist/node_modules/openai/src/resources/vector-stores/files.ts +13 -2
- package/dist/node_modules/openai/src/resources/vector-stores/vector-stores.ts +6 -0
- package/dist/node_modules/openai/src/resources/videos.ts +186 -16
- package/dist/node_modules/openai/src/version.ts +1 -1
- package/dist/node_modules/openai/streaming.d.mts +1 -0
- package/dist/node_modules/openai/streaming.d.ts +1 -0
- package/dist/node_modules/openai/uploads.d.mts +1 -0
- package/dist/node_modules/openai/uploads.d.ts +1 -0
- package/dist/node_modules/openai/version.d.mts +1 -1
- package/dist/node_modules/openai/version.d.ts +1 -1
- package/dist/node_modules/openai/version.js +1 -1
- package/dist/node_modules/zod/package.json +1 -1
- package/dist/server/ai-employees/ai-employee.d.ts +1 -1
- package/package.json +13 -13
- package/dist/node_modules/@langchain/xai/dist/_virtual/rolldown_runtime.cjs +0 -25
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
type EventListener<Events, EventType extends keyof Events> = Events[EventType];
|
|
2
|
+
|
|
3
|
+
type EventListeners<Events, EventType extends keyof Events> = Array<{
|
|
4
|
+
listener: EventListener<Events, EventType>;
|
|
5
|
+
once?: boolean;
|
|
6
|
+
}>;
|
|
7
|
+
|
|
8
|
+
export type EventParameters<Events, EventType extends keyof Events> = {
|
|
9
|
+
[Event in EventType]: EventListener<Events, EventType> extends (...args: infer P) => any ? P : never;
|
|
10
|
+
}[EventType];
|
|
11
|
+
|
|
12
|
+
export class EventEmitter<EventTypes extends Record<string, (...args: any) => any>> {
|
|
13
|
+
#listeners: {
|
|
14
|
+
[Event in keyof EventTypes]?: EventListeners<EventTypes, Event>;
|
|
15
|
+
} = {};
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Adds the listener function to the end of the listeners array for the event.
|
|
19
|
+
* No checks are made to see if the listener has already been added. Multiple calls passing
|
|
20
|
+
* the same combination of event and listener will result in the listener being added, and
|
|
21
|
+
* called, multiple times.
|
|
22
|
+
* @returns this, so that calls can be chained
|
|
23
|
+
*/
|
|
24
|
+
on<Event extends keyof EventTypes>(event: Event, listener: EventListener<EventTypes, Event>): this {
|
|
25
|
+
const listeners: EventListeners<EventTypes, Event> =
|
|
26
|
+
this.#listeners[event] || (this.#listeners[event] = []);
|
|
27
|
+
listeners.push({ listener });
|
|
28
|
+
return this;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Removes the specified listener from the listener array for the event.
|
|
33
|
+
* off() will remove, at most, one instance of a listener from the listener array. If any single
|
|
34
|
+
* listener has been added multiple times to the listener array for the specified event, then
|
|
35
|
+
* off() must be called multiple times to remove each instance.
|
|
36
|
+
* @returns this, so that calls can be chained
|
|
37
|
+
*/
|
|
38
|
+
off<Event extends keyof EventTypes>(event: Event, listener: EventListener<EventTypes, Event>): this {
|
|
39
|
+
const listeners = this.#listeners[event];
|
|
40
|
+
if (!listeners) return this;
|
|
41
|
+
const index = listeners.findIndex((l) => l.listener === listener);
|
|
42
|
+
if (index >= 0) listeners.splice(index, 1);
|
|
43
|
+
return this;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Adds a one-time listener function for the event. The next time the event is triggered,
|
|
48
|
+
* this listener is removed and then invoked.
|
|
49
|
+
* @returns this, so that calls can be chained
|
|
50
|
+
*/
|
|
51
|
+
once<Event extends keyof EventTypes>(event: Event, listener: EventListener<EventTypes, Event>): this {
|
|
52
|
+
const listeners: EventListeners<EventTypes, Event> =
|
|
53
|
+
this.#listeners[event] || (this.#listeners[event] = []);
|
|
54
|
+
listeners.push({ listener, once: true });
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* This is similar to `.once()`, but returns a Promise that resolves the next time
|
|
60
|
+
* the event is triggered, instead of calling a listener callback.
|
|
61
|
+
* @returns a Promise that resolves the next time given event is triggered,
|
|
62
|
+
* or rejects if an error is emitted. (If you request the 'error' event,
|
|
63
|
+
* returns a promise that resolves with the error).
|
|
64
|
+
*
|
|
65
|
+
* Example:
|
|
66
|
+
*
|
|
67
|
+
* const message = await stream.emitted('message') // rejects if the stream errors
|
|
68
|
+
*/
|
|
69
|
+
emitted<Event extends keyof EventTypes>(
|
|
70
|
+
event: Event,
|
|
71
|
+
): Promise<
|
|
72
|
+
EventParameters<EventTypes, Event> extends [infer Param] ? Param
|
|
73
|
+
: EventParameters<EventTypes, Event> extends [] ? void
|
|
74
|
+
: EventParameters<EventTypes, Event>
|
|
75
|
+
> {
|
|
76
|
+
return new Promise((resolve, reject) => {
|
|
77
|
+
// TODO: handle errors
|
|
78
|
+
this.once(event, resolve as any);
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
protected _emit<Event extends keyof EventTypes>(
|
|
83
|
+
this: EventEmitter<EventTypes>,
|
|
84
|
+
event: Event,
|
|
85
|
+
...args: EventParameters<EventTypes, Event>
|
|
86
|
+
) {
|
|
87
|
+
const listeners: EventListeners<EventTypes, Event> | undefined = this.#listeners[event];
|
|
88
|
+
if (listeners) {
|
|
89
|
+
this.#listeners[event] = listeners.filter((l) => !l.once) as any;
|
|
90
|
+
listeners.forEach(({ listener }: any) => listener(...(args as any)));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
protected _hasListener(event: keyof EventTypes): boolean {
|
|
95
|
+
const listeners = this.#listeners[event];
|
|
96
|
+
return listeners && listeners.length > 0;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* An EventEmitter variant that exposes `_emit()` publicly.
|
|
102
|
+
*
|
|
103
|
+
* The base {@link EventEmitter} keeps `_emit` protected so that consumers
|
|
104
|
+
* can only listen, not dispatch. When you need a separate emitter instance
|
|
105
|
+
* that your own code can emit on, without exposing emit on the
|
|
106
|
+
* consumer-facing emitter, use this class.
|
|
107
|
+
*/
|
|
108
|
+
export class InternalEventEmitter<
|
|
109
|
+
EventTypes extends Record<string, (...args: any) => any>,
|
|
110
|
+
> extends EventEmitter<EventTypes> {
|
|
111
|
+
override _emit<Event extends keyof EventTypes>(event: Event, ...args: EventParameters<EventTypes, Event>) {
|
|
112
|
+
super._emit(event, ...args);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
2
|
|
|
3
3
|
import { castToError } from '../internal/errors';
|
|
4
|
+
import type { OAuthErrorCode } from '../resources/shared';
|
|
4
5
|
|
|
5
6
|
export class OpenAIError extends Error {}
|
|
6
7
|
|
|
@@ -158,3 +159,42 @@ export class InvalidWebhookSignatureError extends Error {
|
|
|
158
159
|
super(message);
|
|
159
160
|
}
|
|
160
161
|
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Error thrown by the API server during OAuth token exchange.
|
|
165
|
+
* Can have status codes 400, 401, or 403.
|
|
166
|
+
* Other status codes from OAuth endpoints are raised as normal APIError types.
|
|
167
|
+
*/
|
|
168
|
+
export class OAuthError extends APIError<400 | 401 | 403, Headers> {
|
|
169
|
+
readonly error_code: OAuthErrorCode | undefined;
|
|
170
|
+
|
|
171
|
+
constructor(status: 400 | 401 | 403, error: Object | undefined, headers: Headers) {
|
|
172
|
+
let finalMessage = 'OAuth2 authentication error';
|
|
173
|
+
let error_code: OAuthErrorCode | undefined = undefined;
|
|
174
|
+
|
|
175
|
+
if (error && typeof error === 'object') {
|
|
176
|
+
const errorData = error as Record<string, any>;
|
|
177
|
+
error_code = errorData['error'];
|
|
178
|
+
const description = errorData['error_description'];
|
|
179
|
+
if (description && typeof description === 'string') {
|
|
180
|
+
finalMessage = description;
|
|
181
|
+
} else if (error_code) {
|
|
182
|
+
finalMessage = error_code;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
super(status, error, finalMessage, headers);
|
|
187
|
+
this.error_code = error_code;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
export class SubjectTokenProviderError extends OpenAIError {
|
|
192
|
+
readonly provider: string;
|
|
193
|
+
readonly cause: Error | undefined;
|
|
194
|
+
|
|
195
|
+
constructor(message: string, provider: string, cause?: Error) {
|
|
196
|
+
super(message);
|
|
197
|
+
this.provider = provider;
|
|
198
|
+
this.cause = cause;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
@@ -267,3 +267,65 @@ export class ConversationCursorPage<Item>
|
|
|
267
267
|
};
|
|
268
268
|
}
|
|
269
269
|
}
|
|
270
|
+
|
|
271
|
+
export interface NextCursorPageResponse<Item> {
|
|
272
|
+
data: Array<Item>;
|
|
273
|
+
|
|
274
|
+
has_more: boolean;
|
|
275
|
+
|
|
276
|
+
next: string | null;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
export interface NextCursorPageParams {
|
|
280
|
+
after?: string;
|
|
281
|
+
|
|
282
|
+
limit?: number;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
export class NextCursorPage<Item> extends AbstractPage<Item> implements NextCursorPageResponse<Item> {
|
|
286
|
+
data: Array<Item>;
|
|
287
|
+
|
|
288
|
+
has_more: boolean;
|
|
289
|
+
|
|
290
|
+
next: string | null;
|
|
291
|
+
|
|
292
|
+
constructor(
|
|
293
|
+
client: OpenAI,
|
|
294
|
+
response: Response,
|
|
295
|
+
body: NextCursorPageResponse<Item>,
|
|
296
|
+
options: FinalRequestOptions,
|
|
297
|
+
) {
|
|
298
|
+
super(client, response, body, options);
|
|
299
|
+
|
|
300
|
+
this.data = body.data || [];
|
|
301
|
+
this.has_more = body.has_more || false;
|
|
302
|
+
this.next = body.next || null;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
getPaginatedItems(): Item[] {
|
|
306
|
+
return this.data ?? [];
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
override hasNextPage(): boolean {
|
|
310
|
+
if (this.has_more === false) {
|
|
311
|
+
return false;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
return super.hasNextPage();
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
nextPageRequestOptions(): PageRequestOptions | null {
|
|
318
|
+
const cursor = this.next;
|
|
319
|
+
if (!cursor) {
|
|
320
|
+
return null;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
return {
|
|
324
|
+
...this.options,
|
|
325
|
+
query: {
|
|
326
|
+
...maybeObj(this.options.query),
|
|
327
|
+
after: cursor,
|
|
328
|
+
},
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
}
|
|
@@ -35,6 +35,7 @@ export class Stream<Item> implements AsyncIterable<Item> {
|
|
|
35
35
|
response: Response,
|
|
36
36
|
controller: AbortController,
|
|
37
37
|
client?: OpenAI,
|
|
38
|
+
synthesizeEventData?: boolean,
|
|
38
39
|
): Stream<Item> {
|
|
39
40
|
let consumed = false;
|
|
40
41
|
const logger = client ? loggerFor(client) : console;
|
|
@@ -69,7 +70,7 @@ export class Stream<Item> implements AsyncIterable<Item> {
|
|
|
69
70
|
throw new APIError(undefined, data.error, undefined, response.headers);
|
|
70
71
|
}
|
|
71
72
|
|
|
72
|
-
yield data;
|
|
73
|
+
yield synthesizeEventData ? { event: sse.event, data } : data;
|
|
73
74
|
} else {
|
|
74
75
|
let data;
|
|
75
76
|
try {
|
|
@@ -28,10 +28,20 @@ export async function defaultParseResponse<T>(
|
|
|
28
28
|
// that if you set `stream: true` the response type must also be `Stream<T>`
|
|
29
29
|
|
|
30
30
|
if (props.options.__streamClass) {
|
|
31
|
-
return props.options.__streamClass.fromSSEResponse(
|
|
31
|
+
return props.options.__streamClass.fromSSEResponse(
|
|
32
|
+
response,
|
|
33
|
+
props.controller,
|
|
34
|
+
client,
|
|
35
|
+
props.options.__synthesizeEventData,
|
|
36
|
+
) as any;
|
|
32
37
|
}
|
|
33
38
|
|
|
34
|
-
return Stream.fromSSEResponse(
|
|
39
|
+
return Stream.fromSSEResponse(
|
|
40
|
+
response,
|
|
41
|
+
props.controller,
|
|
42
|
+
client,
|
|
43
|
+
props.options.__synthesizeEventData,
|
|
44
|
+
) as any;
|
|
35
45
|
}
|
|
36
46
|
|
|
37
47
|
// fetch refuses to read the body when the status code is 204.
|
|
@@ -77,8 +77,10 @@ export type RequestOptions = {
|
|
|
77
77
|
defaultBaseURL?: string | undefined;
|
|
78
78
|
|
|
79
79
|
__metadata?: Record<string, unknown>;
|
|
80
|
+
__security?: { bearerAuth?: boolean; adminAPIKeyAuth?: boolean };
|
|
80
81
|
__binaryResponse?: boolean | undefined;
|
|
81
82
|
__streamClass?: typeof Stream;
|
|
83
|
+
__synthesizeEventData?: boolean;
|
|
82
84
|
};
|
|
83
85
|
|
|
84
86
|
export type EncodedContent = { bodyHeaders: HeadersLike; body: BodyInit };
|
|
@@ -40,7 +40,6 @@ type OverloadedParameters<T> =
|
|
|
40
40
|
: T extends (...args: infer A) => unknown ? A
|
|
41
41
|
: never;
|
|
42
42
|
|
|
43
|
-
/* eslint-disable */
|
|
44
43
|
/**
|
|
45
44
|
* These imports attempt to get types from a parent package's dependencies.
|
|
46
45
|
* Unresolved bare specifiers can trigger [automatic type acquisition][1] in some projects, which
|
|
@@ -63,19 +62,18 @@ type OverloadedParameters<T> =
|
|
|
63
62
|
*
|
|
64
63
|
* [1]: https://www.typescriptlang.org/tsconfig/#typeAcquisition
|
|
65
64
|
*/
|
|
66
|
-
/** @ts-ignore For users with \@types/node */
|
|
65
|
+
/** @ts-ignore For users with \@types/node */ /* prettier-ignore */
|
|
67
66
|
type UndiciTypesRequestInit = NotAny<import('../node_modules/undici-types/index.d.ts').RequestInit> | NotAny<import('../../node_modules/undici-types/index.d.ts').RequestInit> | NotAny<import('../../../node_modules/undici-types/index.d.ts').RequestInit> | NotAny<import('../../../../node_modules/undici-types/index.d.ts').RequestInit> | NotAny<import('../../../../../node_modules/undici-types/index.d.ts').RequestInit> | NotAny<import('../../../../../../node_modules/undici-types/index.d.ts').RequestInit> | NotAny<import('../../../../../../../node_modules/undici-types/index.d.ts').RequestInit> | NotAny<import('../../../../../../../../node_modules/undici-types/index.d.ts').RequestInit> | NotAny<import('../../../../../../../../../node_modules/undici-types/index.d.ts').RequestInit> | NotAny<import('../../../../../../../../../../node_modules/undici-types/index.d.ts').RequestInit>;
|
|
68
|
-
/** @ts-ignore For users with undici */
|
|
67
|
+
/** @ts-ignore For users with undici */ /* prettier-ignore */
|
|
69
68
|
type UndiciRequestInit = NotAny<import('../node_modules/undici/index.d.ts').RequestInit> | NotAny<import('../../node_modules/undici/index.d.ts').RequestInit> | NotAny<import('../../../node_modules/undici/index.d.ts').RequestInit> | NotAny<import('../../../../node_modules/undici/index.d.ts').RequestInit> | NotAny<import('../../../../../node_modules/undici/index.d.ts').RequestInit> | NotAny<import('../../../../../../node_modules/undici/index.d.ts').RequestInit> | NotAny<import('../../../../../../../node_modules/undici/index.d.ts').RequestInit> | NotAny<import('../../../../../../../../node_modules/undici/index.d.ts').RequestInit> | NotAny<import('../../../../../../../../../node_modules/undici/index.d.ts').RequestInit> | NotAny<import('../../../../../../../../../../node_modules/undici/index.d.ts').RequestInit>;
|
|
70
|
-
/** @ts-ignore For users with \@types/bun */
|
|
69
|
+
/** @ts-ignore For users with \@types/bun */ /* prettier-ignore */
|
|
71
70
|
type BunRequestInit = globalThis.FetchRequestInit;
|
|
72
|
-
/** @ts-ignore For users with node-fetch@2 */
|
|
71
|
+
/** @ts-ignore For users with node-fetch@2 */ /* prettier-ignore */
|
|
73
72
|
type NodeFetch2RequestInit = NotAny<import('../node_modules/@types/node-fetch/index.d.ts').RequestInit> | NotAny<import('../../node_modules/@types/node-fetch/index.d.ts').RequestInit> | NotAny<import('../../../node_modules/@types/node-fetch/index.d.ts').RequestInit> | NotAny<import('../../../../node_modules/@types/node-fetch/index.d.ts').RequestInit> | NotAny<import('../../../../../node_modules/@types/node-fetch/index.d.ts').RequestInit> | NotAny<import('../../../../../../node_modules/@types/node-fetch/index.d.ts').RequestInit> | NotAny<import('../../../../../../../node_modules/@types/node-fetch/index.d.ts').RequestInit> | NotAny<import('../../../../../../../../node_modules/@types/node-fetch/index.d.ts').RequestInit> | NotAny<import('../../../../../../../../../node_modules/@types/node-fetch/index.d.ts').RequestInit> | NotAny<import('../../../../../../../../../../node_modules/@types/node-fetch/index.d.ts').RequestInit>;
|
|
74
|
-
/** @ts-ignore For users with node-fetch@3, doesn't need file extension because types are at ./@types/index.d.ts */
|
|
73
|
+
/** @ts-ignore For users with node-fetch@3, doesn't need file extension because types are at ./@types/index.d.ts */ /* prettier-ignore */
|
|
75
74
|
type NodeFetch3RequestInit = NotAny<import('../node_modules/node-fetch').RequestInit> | NotAny<import('../../node_modules/node-fetch').RequestInit> | NotAny<import('../../../node_modules/node-fetch').RequestInit> | NotAny<import('../../../../node_modules/node-fetch').RequestInit> | NotAny<import('../../../../../node_modules/node-fetch').RequestInit> | NotAny<import('../../../../../../node_modules/node-fetch').RequestInit> | NotAny<import('../../../../../../../node_modules/node-fetch').RequestInit> | NotAny<import('../../../../../../../../node_modules/node-fetch').RequestInit> | NotAny<import('../../../../../../../../../node_modules/node-fetch').RequestInit> | NotAny<import('../../../../../../../../../../node_modules/node-fetch').RequestInit>;
|
|
76
|
-
/** @ts-ignore For users who use Deno */
|
|
75
|
+
/** @ts-ignore For users who use Deno */ /* prettier-ignore */
|
|
77
76
|
type FetchRequestInit = NonNullable<OverloadedParameters<typeof fetch>[1]>;
|
|
78
|
-
/* eslint-enable */
|
|
79
77
|
|
|
80
78
|
type RequestInits =
|
|
81
79
|
| NotAny<UndiciTypesRequestInit>
|
|
@@ -86,10 +84,18 @@ type RequestInits =
|
|
|
86
84
|
| NotAny<RequestInit>
|
|
87
85
|
| NotAny<FetchRequestInit>;
|
|
88
86
|
|
|
87
|
+
type RuntimeFetchOptions = {
|
|
88
|
+
dispatcher?: unknown;
|
|
89
|
+
agent?: unknown;
|
|
90
|
+
client?: unknown;
|
|
91
|
+
proxy?: unknown;
|
|
92
|
+
};
|
|
93
|
+
|
|
89
94
|
/**
|
|
90
95
|
* This type contains `RequestInit` options that may be available on the current runtime,
|
|
91
96
|
* including per-platform extensions like `dispatcher`, `agent`, `client`, etc.
|
|
92
97
|
*/
|
|
93
98
|
export type MergedRequestInit = RequestInits &
|
|
99
|
+
RuntimeFetchOptions &
|
|
94
100
|
/** We don't include these in the types as they'll be overridden for every request. */
|
|
95
101
|
Partial<Record<'body' | 'headers' | 'method' | 'signal', never>>;
|
|
@@ -9,10 +9,10 @@
|
|
|
9
9
|
*/
|
|
10
10
|
export const readEnv = (env: string): string | undefined => {
|
|
11
11
|
if (typeof (globalThis as any).process !== 'undefined') {
|
|
12
|
-
return (globalThis as any).process.env?.[env]?.trim()
|
|
12
|
+
return (globalThis as any).process.env?.[env]?.trim() || undefined;
|
|
13
13
|
}
|
|
14
14
|
if (typeof (globalThis as any).Deno !== 'undefined') {
|
|
15
|
-
return (globalThis as any).Deno.env?.get?.(env)?.trim();
|
|
15
|
+
return (globalThis as any).Deno.env?.get?.(env)?.trim() || undefined;
|
|
16
16
|
}
|
|
17
17
|
return undefined;
|
|
18
18
|
};
|
|
@@ -107,6 +107,8 @@ export const formatRequestDetails = (details: {
|
|
|
107
107
|
name,
|
|
108
108
|
(
|
|
109
109
|
name.toLowerCase() === 'authorization' ||
|
|
110
|
+
name.toLowerCase() === 'api-key' ||
|
|
111
|
+
name.toLowerCase() === 'x-api-key' ||
|
|
110
112
|
name.toLowerCase() === 'cookie' ||
|
|
111
113
|
name.toLowerCase() === 'set-cookie'
|
|
112
114
|
) ?
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
import * as qs from '../qs/stringify';
|
|
4
|
+
|
|
5
|
+
export function stringifyQuery(query: object | Record<string, unknown>) {
|
|
6
|
+
return qs.stringify(query, { arrayFormat: 'brackets' });
|
|
7
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import type { WebSocketLike } from './ws-adapter';
|
|
2
|
+
|
|
3
|
+
/** A generic event listener callback. */
|
|
4
|
+
type Listener = (...args: any[]) => void;
|
|
5
|
+
|
|
6
|
+
/** A DOM-style event handler passed to addEventListener/removeEventListener. */
|
|
7
|
+
type DOMEventHandler = (ev: any) => void;
|
|
8
|
+
|
|
9
|
+
// Minimal browser API type declarations.
|
|
10
|
+
declare class WebSocket {
|
|
11
|
+
readonly readyState: number;
|
|
12
|
+
binaryType: string;
|
|
13
|
+
send(data: string | ArrayBufferLike | ArrayBufferView): void;
|
|
14
|
+
close(code?: number, reason?: string): void;
|
|
15
|
+
addEventListener(type: string, listener: DOMEventHandler): void;
|
|
16
|
+
removeEventListener(type: string, listener: DOMEventHandler): void;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
interface MessageEvent {
|
|
20
|
+
data: any;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
interface CloseEvent {
|
|
24
|
+
code: number;
|
|
25
|
+
reason: string;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export class BrowserWebSocket implements WebSocketLike {
|
|
29
|
+
private _ws: WebSocket;
|
|
30
|
+
private _listenerMap = new Map<string, Map<Listener, DOMEventHandler>>();
|
|
31
|
+
|
|
32
|
+
constructor(ws: WebSocket) {
|
|
33
|
+
this._ws = ws;
|
|
34
|
+
this._ws.binaryType = 'arraybuffer';
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** The underlying platform-specific socket. Code that accesses this will not be isomorphic across server and browser environments. */
|
|
38
|
+
get platformSocket(): WebSocket {
|
|
39
|
+
return this._ws;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
get readyState(): number {
|
|
43
|
+
return this._ws.readyState;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
send(data: string | ArrayBufferLike | ArrayBufferView): void {
|
|
47
|
+
this._ws.send(data);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
close(code?: number, reason?: string): void {
|
|
51
|
+
this._ws.close(code, reason);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
on(event: string, listener: Listener): void {
|
|
55
|
+
const wrapped = this._wrapListener(event, listener);
|
|
56
|
+
this._listenersFor(event).set(listener, wrapped);
|
|
57
|
+
this._ws.addEventListener(event, wrapped);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
off(event: string, listener: Listener): void {
|
|
61
|
+
const byListener = this._listenerMap.get(event);
|
|
62
|
+
if (!byListener) return;
|
|
63
|
+
const wrapped = byListener.get(listener);
|
|
64
|
+
if (wrapped) {
|
|
65
|
+
byListener.delete(listener);
|
|
66
|
+
this._ws.removeEventListener(event, wrapped);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
once(event: string, listener: Listener): void {
|
|
71
|
+
const onceListener: Listener = (...args) => {
|
|
72
|
+
this.off(event, listener);
|
|
73
|
+
listener(...args);
|
|
74
|
+
};
|
|
75
|
+
const wrapped = this._wrapListener(event, onceListener);
|
|
76
|
+
this._listenersFor(event).set(listener, wrapped);
|
|
77
|
+
this._ws.addEventListener(event, wrapped);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
private _listenersFor(event: string): Map<Listener, DOMEventHandler> {
|
|
81
|
+
let map = this._listenerMap.get(event);
|
|
82
|
+
if (!map) {
|
|
83
|
+
map = new Map();
|
|
84
|
+
this._listenerMap.set(event, map);
|
|
85
|
+
}
|
|
86
|
+
return map;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Converts browser event objects to positional arguments matching the
|
|
91
|
+
* {@link WebSocketLike} interface.
|
|
92
|
+
*/
|
|
93
|
+
private _wrapListener(event: string, listener: Listener): DOMEventHandler {
|
|
94
|
+
switch (event) {
|
|
95
|
+
case 'message':
|
|
96
|
+
return (ev: MessageEvent) => {
|
|
97
|
+
const isBinary = typeof ev.data !== 'string';
|
|
98
|
+
listener(ev.data, isBinary);
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
case 'close':
|
|
102
|
+
return (ev: CloseEvent) => {
|
|
103
|
+
listener(ev.code, ev.reason);
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
case 'error':
|
|
107
|
+
return (ev: any) => {
|
|
108
|
+
// Some environments provide an ErrorEvent with a `.message`;
|
|
109
|
+
// fall back to a generic message when the event carries nothing.
|
|
110
|
+
const message = ev?.message || ev?.error?.message || 'WebSocket error';
|
|
111
|
+
const err = new Error(message);
|
|
112
|
+
if (ev?.error) {
|
|
113
|
+
(err as any).cause = ev.error;
|
|
114
|
+
}
|
|
115
|
+
listener(err);
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
case 'open':
|
|
119
|
+
default:
|
|
120
|
+
return listener as DOMEventHandler;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import type * as WS from 'ws';
|
|
2
|
+
import type { WebSocketLike } from './ws-adapter';
|
|
3
|
+
|
|
4
|
+
/** A generic event listener callback. */
|
|
5
|
+
type Listener = (...args: any[]) => void;
|
|
6
|
+
|
|
7
|
+
export class NodeWebSocket implements WebSocketLike {
|
|
8
|
+
private _ws: WS.WebSocket;
|
|
9
|
+
|
|
10
|
+
/** Maps `(event, originalListener)` -> wrapped listener for correct `off()` removal. */
|
|
11
|
+
private _listenerMap = new Map<string, Map<Listener, Listener>>();
|
|
12
|
+
|
|
13
|
+
constructor(ws: WS.WebSocket) {
|
|
14
|
+
this._ws = ws;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/** The underlying platform-specific socket. Code that accesses this will not be isomorphic across server and browser environments. */
|
|
18
|
+
get platformSocket(): WS.WebSocket {
|
|
19
|
+
return this._ws;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
get readyState(): number {
|
|
23
|
+
return this._ws.readyState;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
send(data: string | ArrayBufferLike | ArrayBufferView): void {
|
|
27
|
+
this._ws.send(data);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
close(code?: number, reason?: string): void {
|
|
31
|
+
this._ws.close(code, reason);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
on(event: string, listener: Listener): void {
|
|
35
|
+
const wrapped = this._wrapListener(event, listener);
|
|
36
|
+
this._listenersFor(event).set(listener, wrapped);
|
|
37
|
+
this._ws.on(event, wrapped);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
off(event: string, listener: Listener): void {
|
|
41
|
+
const byListener = this._listenerMap.get(event);
|
|
42
|
+
if (!byListener) return;
|
|
43
|
+
const wrapped = byListener.get(listener);
|
|
44
|
+
if (wrapped) {
|
|
45
|
+
byListener.delete(listener);
|
|
46
|
+
this._ws.removeListener(event, wrapped);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
once(event: string, listener: Listener): void {
|
|
51
|
+
const onceListener: Listener = (...args) => {
|
|
52
|
+
this.off(event, listener);
|
|
53
|
+
listener(...args);
|
|
54
|
+
};
|
|
55
|
+
const wrapped = this._wrapListener(event, onceListener);
|
|
56
|
+
this._listenersFor(event).set(listener, wrapped);
|
|
57
|
+
this._ws.on(event, wrapped);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
private _listenersFor(event: string): Map<Listener, Listener> {
|
|
61
|
+
let map = this._listenerMap.get(event);
|
|
62
|
+
if (!map) {
|
|
63
|
+
map = new Map();
|
|
64
|
+
this._listenerMap.set(event, map);
|
|
65
|
+
}
|
|
66
|
+
return map;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Normalizes `ws` message payloads: text frames become strings,
|
|
71
|
+
* binary frames stay as `Buffer`, and fragmented frames are merged.
|
|
72
|
+
*/
|
|
73
|
+
private static _normalizeMessageData(
|
|
74
|
+
data: Buffer | ArrayBuffer | Buffer[],
|
|
75
|
+
isBinary: boolean,
|
|
76
|
+
): string | Buffer {
|
|
77
|
+
if (!isBinary) {
|
|
78
|
+
if (Array.isArray(data)) return Buffer.concat(data).toString();
|
|
79
|
+
if (data instanceof ArrayBuffer) return Buffer.from(data).toString();
|
|
80
|
+
return data.toString();
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (Array.isArray(data)) return Buffer.concat(data);
|
|
84
|
+
if (data instanceof ArrayBuffer) return Buffer.from(data);
|
|
85
|
+
return data;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
private _wrapListener(event: string, listener: Listener): Listener {
|
|
89
|
+
switch (event) {
|
|
90
|
+
case 'message':
|
|
91
|
+
return (data: Buffer | ArrayBuffer | Buffer[], isBinary: boolean) => {
|
|
92
|
+
listener(NodeWebSocket._normalizeMessageData(data, isBinary), isBinary);
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
case 'close':
|
|
96
|
+
return (code: number, reason: Buffer) => {
|
|
97
|
+
listener(code, reason.toString());
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
// 'open' and 'error' pass through unchanged
|
|
101
|
+
default:
|
|
102
|
+
return listener;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalized WebSocket interface that abstracts over the `ws` package (Node.js)
|
|
3
|
+
* and the native WebSocket API (browser).
|
|
4
|
+
*/
|
|
5
|
+
export interface WebSocketLike {
|
|
6
|
+
readonly readyState: number;
|
|
7
|
+
|
|
8
|
+
send(data: string | ArrayBufferLike | ArrayBufferView): void;
|
|
9
|
+
close(code?: number, reason?: string): void;
|
|
10
|
+
|
|
11
|
+
on(event: 'open', listener: () => void): void;
|
|
12
|
+
on(
|
|
13
|
+
event: 'message',
|
|
14
|
+
listener: (data: string | ArrayBuffer | ArrayBufferView, isBinary: boolean) => void,
|
|
15
|
+
): void;
|
|
16
|
+
on(event: 'close', listener: (code: number, reason: string) => void): void;
|
|
17
|
+
on(event: 'error', listener: (err: Error) => void): void;
|
|
18
|
+
on(event: string, listener: (...args: any[]) => void): void;
|
|
19
|
+
|
|
20
|
+
off(event: string, listener: (...args: any[]) => void): void;
|
|
21
|
+
once(event: string, listener: (...args: any[]) => void): void;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/** Standard WebSocket readyState values (RFC 6455). */
|
|
25
|
+
export const ReadyState = {
|
|
26
|
+
CONNECTING: 0,
|
|
27
|
+
OPEN: 1,
|
|
28
|
+
CLOSING: 2,
|
|
29
|
+
CLOSED: 3,
|
|
30
|
+
} as const;
|