From 83653ef23be2a110a325522dc6abf30cae7d0004 Mon Sep 17 00:00:00 2001 From: Darren Clarke Date: Wed, 5 Jun 2024 10:06:41 +0200 Subject: [PATCH] Update Dockerfiles, add signal api generated outputs --- .gitignore | 1 + apps/bridge-frontend/Dockerfile | 4 +- apps/bridge-frontend/package.json | 1 + apps/bridge-whatsapp/Dockerfile | 4 +- apps/bridge-worker/Dockerfile | 4 +- apps/leafcutter/Dockerfile | 4 +- apps/link/Dockerfile | 4 +- package-lock.json | 853 +++++++++++++++++- packages/signal-api/.eslintrc.js | 4 + packages/signal-api/.openapi-generator-ignore | 23 + packages/signal-api/apis/AccountsApi.ts | 263 ++++++ packages/signal-api/apis/AttachmentsApi.ts | 144 +++ packages/signal-api/apis/ContactsApi.ts | 120 +++ packages/signal-api/apis/DevicesApi.ts | 282 ++++++ packages/signal-api/apis/GeneralApi.ts | 274 ++++++ packages/signal-api/apis/GroupsApi.ts | 666 ++++++++++++++ packages/signal-api/apis/IdentitiesApi.ts | 134 +++ packages/signal-api/apis/MessagesApi.ts | 307 +++++++ packages/signal-api/apis/ProfilesApi.ts | 87 ++ packages/signal-api/apis/ReactionsApi.ts | 125 +++ packages/signal-api/apis/ReceiptsApi.ts | 79 ++ packages/signal-api/apis/SearchApi.ts | 84 ++ packages/signal-api/apis/StickerPacksApi.ts | 131 +++ packages/signal-api/apis/index.ts | 15 + packages/signal-api/index.ts | 5 + .../signal-api/models/ApiAddDeviceRequest.ts | 60 ++ .../models/ApiAddStickerPackRequest.ts | 68 ++ .../models/ApiChangeGroupAdminsRequest.ts | 60 ++ .../models/ApiChangeGroupMembersRequest.ts | 60 ++ .../signal-api/models/ApiConfiguration.ts | 67 ++ .../models/ApiCreateGroupRequest.ts | 111 +++ .../models/ApiCreateGroupResponse.ts | 60 ++ packages/signal-api/models/ApiError.ts | 60 ++ .../signal-api/models/ApiGroupPermissions.ts | 88 ++ .../models/ApiLoggingConfiguration.ts | 60 ++ .../models/ApiRateLimitChallengeRequest.ts | 68 ++ packages/signal-api/models/ApiReaction.ts | 84 ++ packages/signal-api/models/ApiReceipt.ts | 87 ++ .../models/ApiRegisterNumberRequest.ts | 68 ++ .../signal-api/models/ApiSearchResponse.ts | 68 ++ .../signal-api/models/ApiSendMessageError.ts | 68 ++ .../models/ApiSendMessageResponse.ts | 60 ++ .../signal-api/models/ApiSendMessageV1.ts | 92 ++ .../signal-api/models/ApiSendMessageV2.ts | 159 ++++ .../models/ApiSetUsernameRequest.ts | 60 ++ .../models/ApiTrustIdentityRequest.ts | 68 ++ .../signal-api/models/ApiTrustModeRequest.ts | 60 ++ .../signal-api/models/ApiTrustModeResponse.ts | 60 ++ .../models/ApiTypingIndicatorRequest.ts | 60 ++ .../models/ApiUnregisterNumberRequest.ts | 68 ++ .../models/ApiUpdateAccountSettingsRequest.ts | 68 ++ .../models/ApiUpdateContactRequest.ts | 76 ++ .../models/ApiUpdateGroupRequest.ts | 76 ++ .../models/ApiUpdateProfileRequest.ts | 68 ++ .../models/ApiVerifyNumberSettings.ts | 60 ++ packages/signal-api/models/ClientAbout.ts | 92 ++ .../signal-api/models/ClientGroupEntry.ts | 124 +++ .../signal-api/models/ClientIdentityEntry.ts | 92 ++ ...ClientListInstalledStickerPacksResponse.ts | 92 ++ .../models/ClientSetUsernameResponse.ts | 68 ++ packages/signal-api/models/index.ts | 37 + packages/signal-api/openapitools.json | 7 + packages/signal-api/package.json | 12 +- packages/signal-api/runtime.ts | 426 +++++++++ packages/signal-api/tsconfig.json | 9 + 65 files changed, 6728 insertions(+), 21 deletions(-) create mode 100644 packages/signal-api/.eslintrc.js create mode 100644 packages/signal-api/.openapi-generator-ignore create mode 100644 packages/signal-api/apis/AccountsApi.ts create mode 100644 packages/signal-api/apis/AttachmentsApi.ts create mode 100644 packages/signal-api/apis/ContactsApi.ts create mode 100644 packages/signal-api/apis/DevicesApi.ts create mode 100644 packages/signal-api/apis/GeneralApi.ts create mode 100644 packages/signal-api/apis/GroupsApi.ts create mode 100644 packages/signal-api/apis/IdentitiesApi.ts create mode 100644 packages/signal-api/apis/MessagesApi.ts create mode 100644 packages/signal-api/apis/ProfilesApi.ts create mode 100644 packages/signal-api/apis/ReactionsApi.ts create mode 100644 packages/signal-api/apis/ReceiptsApi.ts create mode 100644 packages/signal-api/apis/SearchApi.ts create mode 100644 packages/signal-api/apis/StickerPacksApi.ts create mode 100644 packages/signal-api/apis/index.ts create mode 100644 packages/signal-api/index.ts create mode 100644 packages/signal-api/models/ApiAddDeviceRequest.ts create mode 100644 packages/signal-api/models/ApiAddStickerPackRequest.ts create mode 100644 packages/signal-api/models/ApiChangeGroupAdminsRequest.ts create mode 100644 packages/signal-api/models/ApiChangeGroupMembersRequest.ts create mode 100644 packages/signal-api/models/ApiConfiguration.ts create mode 100644 packages/signal-api/models/ApiCreateGroupRequest.ts create mode 100644 packages/signal-api/models/ApiCreateGroupResponse.ts create mode 100644 packages/signal-api/models/ApiError.ts create mode 100644 packages/signal-api/models/ApiGroupPermissions.ts create mode 100644 packages/signal-api/models/ApiLoggingConfiguration.ts create mode 100644 packages/signal-api/models/ApiRateLimitChallengeRequest.ts create mode 100644 packages/signal-api/models/ApiReaction.ts create mode 100644 packages/signal-api/models/ApiReceipt.ts create mode 100644 packages/signal-api/models/ApiRegisterNumberRequest.ts create mode 100644 packages/signal-api/models/ApiSearchResponse.ts create mode 100644 packages/signal-api/models/ApiSendMessageError.ts create mode 100644 packages/signal-api/models/ApiSendMessageResponse.ts create mode 100644 packages/signal-api/models/ApiSendMessageV1.ts create mode 100644 packages/signal-api/models/ApiSendMessageV2.ts create mode 100644 packages/signal-api/models/ApiSetUsernameRequest.ts create mode 100644 packages/signal-api/models/ApiTrustIdentityRequest.ts create mode 100644 packages/signal-api/models/ApiTrustModeRequest.ts create mode 100644 packages/signal-api/models/ApiTrustModeResponse.ts create mode 100644 packages/signal-api/models/ApiTypingIndicatorRequest.ts create mode 100644 packages/signal-api/models/ApiUnregisterNumberRequest.ts create mode 100644 packages/signal-api/models/ApiUpdateAccountSettingsRequest.ts create mode 100644 packages/signal-api/models/ApiUpdateContactRequest.ts create mode 100644 packages/signal-api/models/ApiUpdateGroupRequest.ts create mode 100644 packages/signal-api/models/ApiUpdateProfileRequest.ts create mode 100644 packages/signal-api/models/ApiVerifyNumberSettings.ts create mode 100644 packages/signal-api/models/ClientAbout.ts create mode 100644 packages/signal-api/models/ClientGroupEntry.ts create mode 100644 packages/signal-api/models/ClientIdentityEntry.ts create mode 100644 packages/signal-api/models/ClientListInstalledStickerPacksResponse.ts create mode 100644 packages/signal-api/models/ClientSetUsernameResponse.ts create mode 100644 packages/signal-api/models/index.ts create mode 100644 packages/signal-api/openapitools.json create mode 100644 packages/signal-api/runtime.ts create mode 100644 packages/signal-api/tsconfig.json diff --git a/.gitignore b/.gitignore index d8c91d3..eb15c89 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,4 @@ signald-state/* baileys-state signald-state project.org +**/.openapi-generator/ diff --git a/apps/bridge-frontend/Dockerfile b/apps/bridge-frontend/Dockerfile index c130181..9414f30 100644 --- a/apps/bridge-frontend/Dockerfile +++ b/apps/bridge-frontend/Dockerfile @@ -6,7 +6,7 @@ RUN mkdir -p ${APP_DIR}/ RUN npm i -g turbo WORKDIR ${APP_DIR} COPY . . -RUN turbo prune --scope=bridge-frontend --docker +RUN turbo prune --scope=@link-stack/bridge-frontend --docker FROM base AS installer ARG APP_DIR=/opt/bridge-frontend @@ -18,7 +18,7 @@ RUN npm ci COPY --from=builder ${APP_DIR}/out/full/ . RUN npm i -g turbo -RUN turbo run build --filter=bridge-frontend +RUN turbo run build --filter=@link-stack/bridge-frontend FROM base AS runner ARG APP_DIR=/opt/bridge-frontend diff --git a/apps/bridge-frontend/package.json b/apps/bridge-frontend/package.json index 7031dcb..a21ff2c 100644 --- a/apps/bridge-frontend/package.json +++ b/apps/bridge-frontend/package.json @@ -26,6 +26,7 @@ "@mui/x-license": "^7.6.1", "@link-stack/bridge-common": "*", "@link-stack/bridge-ui": "*", + "@link-stack/signal-api": "*", "date-fns": "^3.6.0", "dotenv": "^16.4.5", "graphile-worker": "^0.16.6", diff --git a/apps/bridge-whatsapp/Dockerfile b/apps/bridge-whatsapp/Dockerfile index eefb62a..c1a34c7 100644 --- a/apps/bridge-whatsapp/Dockerfile +++ b/apps/bridge-whatsapp/Dockerfile @@ -6,7 +6,7 @@ RUN mkdir -p ${APP_DIR}/ RUN npm i -g turbo WORKDIR ${APP_DIR} COPY . . -RUN turbo prune --scope=bridge-whatsapp --docker +RUN turbo prune --scope=@link-stack/bridge-whatsapp --docker FROM base AS installer ARG APP_DIR=/opt/bridge-whatsapp @@ -16,7 +16,7 @@ COPY --from=builder ${APP_DIR}/out/full/ . COPY --from=builder ${APP_DIR}/out/package-lock.json ./package-lock.json RUN npm ci RUN npm i -g turbo -RUN turbo run build --filter=bridge-whatsapp +RUN turbo run build --filter=@link-stack/bridge-whatsapp FROM base as runner ARG BUILD_DATE diff --git a/apps/bridge-worker/Dockerfile b/apps/bridge-worker/Dockerfile index a6885d2..345ba66 100644 --- a/apps/bridge-worker/Dockerfile +++ b/apps/bridge-worker/Dockerfile @@ -6,7 +6,7 @@ RUN mkdir -p ${APP_DIR}/ RUN npm i -g turbo WORKDIR ${APP_DIR} COPY . . -RUN turbo prune --scope=bridge-worker --docker +RUN turbo prune --scope=@link-stack/bridge-worker --docker FROM base AS installer ARG APP_DIR=/opt/bridge-worker @@ -16,7 +16,7 @@ COPY --from=builder ${APP_DIR}/out/full/ . COPY --from=builder ${APP_DIR}/out/package-lock.json ./package-lock.json RUN npm ci RUN npm i -g turbo -RUN turbo run build --filter=bridge-worker +RUN turbo run build --filter=@link-stack/bridge-worker FROM base as runner ARG BUILD_DATE diff --git a/apps/leafcutter/Dockerfile b/apps/leafcutter/Dockerfile index a2d0c1d..3a6cb58 100644 --- a/apps/leafcutter/Dockerfile +++ b/apps/leafcutter/Dockerfile @@ -6,7 +6,7 @@ RUN mkdir -p ${APP_DIR}/ RUN npm i -g turbo WORKDIR ${APP_DIR} COPY . . -RUN turbo prune --scope=leafcutter --docker +RUN turbo prune --scope=@link-stack/leafcutter --docker FROM base AS installer ARG APP_DIR=/opt/leafcutter @@ -19,7 +19,7 @@ RUN npm ci COPY --from=builder ${APP_DIR}/out/full/ . ARG LINK_EMBEDDED=true RUN npm i -g turbo -RUN turbo run build --filter=leafcutter +RUN turbo run build --filter=@link-stack/leafcutter FROM base AS runner ARG APP_DIR=/opt/leafcutter diff --git a/apps/link/Dockerfile b/apps/link/Dockerfile index 0649cb3..55d97d6 100644 --- a/apps/link/Dockerfile +++ b/apps/link/Dockerfile @@ -6,7 +6,7 @@ RUN mkdir -p ${APP_DIR}/ RUN npm i -g turbo WORKDIR ${APP_DIR} COPY . . -RUN turbo prune --scope=link --docker +RUN turbo prune --scope=@link-stack/link --docker FROM base AS installer ARG APP_DIR=/opt/link @@ -18,7 +18,7 @@ RUN npm ci COPY --from=builder ${APP_DIR}/out/full/ . RUN npm i -g turbo -RUN turbo run build --filter=link +RUN turbo run build --filter=@link-stack/link FROM base AS runner ARG APP_DIR=/opt/link diff --git a/package-lock.json b/package-lock.json index 176eb2e..f0aa5b4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,6 +32,7 @@ "@emotion/styled": "^11.11.5", "@link-stack/bridge-common": "*", "@link-stack/bridge-ui": "*", + "@link-stack/signal-api": "*", "@link-stack/ui": "*", "@mui/icons-material": "^5", "@mui/lab": "^5.0.0-alpha.170", @@ -4437,6 +4438,16 @@ "resolved": "packages/zammad-addon-leafcutter", "link": true }, + "node_modules/@lukeed/csprng": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", + "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/@molt/command": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/@molt/command/-/command-0.9.0.tgz", @@ -5020,6 +5031,101 @@ "react": "^17.0.0 || ^18.0.0" } }, + "node_modules/@nestjs/axios": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@nestjs/axios/-/axios-3.0.2.tgz", + "integrity": "sha512-Z6GuOUdNQjP7FX+OuV2Ybyamse+/e0BFdTWBX5JxpBDKA+YkdLynDgG6HTF04zy6e9zPa19UX0WA2VDoehwhXQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@nestjs/common": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0", + "axios": "^1.3.1", + "rxjs": "^6.0.0 || ^7.0.0" + } + }, + "node_modules/@nestjs/common": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-10.3.0.tgz", + "integrity": "sha512-DGv34UHsZBxCM3H5QGE2XE/+oLJzz5+714JQjBhjD9VccFlQs3LRxo/epso4l7nJIiNlZkPyIUC8WzfU/5RTsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "iterare": "1.2.1", + "tslib": "2.6.2", + "uid": "2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "class-transformer": "*", + "class-validator": "*", + "reflect-metadata": "^0.1.12", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "node_modules/@nestjs/common/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@nestjs/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-10.3.0.tgz", + "integrity": "sha512-N06P5ncknW/Pm8bj964WvLIZn2gNhHliCBoAO1LeBvNImYkecqKcrmLbY49Fa1rmMfEM3MuBHeDys3edeuYAOA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@nuxtjs/opencollective": "0.3.2", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "path-to-regexp": "3.2.0", + "tslib": "2.6.2", + "uid": "2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^10.0.0", + "@nestjs/microservices": "^10.0.0", + "@nestjs/platform-express": "^10.0.0", + "@nestjs/websockets": "^10.0.0", + "reflect-metadata": "^0.1.12", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + } + } + }, + "node_modules/@nestjs/core/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true, + "license": "0BSD" + }, "node_modules/@next/env": { "version": "14.2.3", "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.3.tgz", @@ -5275,6 +5381,119 @@ "node": ">= 8" } }, + "node_modules/@nuxtjs/opencollective": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", + "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "consola": "^2.15.0", + "node-fetch": "^2.6.1" + }, + "bin": { + "opencollective": "bin/opencollective.js" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/@openapitools/openapi-generator-cli": { + "version": "2.13.4", + "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.13.4.tgz", + "integrity": "sha512-4JKyrk55ohQK2FcuZbPdNvxdyXD14jjOIvE8hYjJ+E1cHbRbfXQXbYnjTODFE52Gx8eAxz8C9icuhDYDLn7nww==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@nestjs/axios": "3.0.2", + "@nestjs/common": "10.3.0", + "@nestjs/core": "10.3.0", + "@nuxtjs/opencollective": "0.3.2", + "axios": "1.6.8", + "chalk": "4.1.2", + "commander": "8.3.0", + "compare-versions": "4.1.4", + "concurrently": "6.5.1", + "console.table": "0.10.0", + "fs-extra": "10.1.0", + "glob": "7.2.3", + "https-proxy-agent": "7.0.4", + "inquirer": "8.2.6", + "lodash": "4.17.21", + "reflect-metadata": "0.1.13", + "rxjs": "7.8.1", + "tslib": "2.6.2" + }, + "bin": { + "openapi-generator-cli": "main.js" + }, + "engines": { + "node": ">=10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/openapi_generator" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/axios": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true, + "license": "0BSD" + }, "node_modules/@opensearch-project/opensearch": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/@opensearch-project/opensearch/-/opensearch-2.9.0.tgz", @@ -7059,8 +7278,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "optional": true, - "peer": true, + "devOptional": true, "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -7071,6 +7289,7 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "devOptional": true, "funding": [ { "type": "github", @@ -7085,8 +7304,6 @@ "url": "https://feross.org/support" } ], - "optional": true, - "peer": true, "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -7096,8 +7313,7 @@ "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "optional": true, - "peer": true, + "devOptional": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -7111,8 +7327,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "optional": true, - "peer": true, + "devOptional": true, "dependencies": { "safe-buffer": "~5.2.0" } @@ -7370,6 +7585,13 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true, + "license": "MIT" + }, "node_modules/chownr": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", @@ -7430,6 +7652,42 @@ "node": ">=0.8.0" } }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 10" + } + }, "node_modules/client-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", @@ -7553,16 +7811,160 @@ "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", "dev": true }, + "node_modules/compare-versions": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-4.1.4.tgz", + "integrity": "sha512-FemMreK9xNyL8gQevsdRMrvO4lFCkQP7qbuktn1q8ndcNk1+0mz7lgE7b/sNvbhVgY4w6tMN1FDp6aADjqw2rw==", + "dev": true, + "license": "MIT" + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "node_modules/concurrently": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz", + "integrity": "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "date-fns": "^2.16.1", + "lodash": "^4.17.21", + "rxjs": "^6.6.3", + "spawn-command": "^0.0.2-1", + "supports-color": "^8.1.0", + "tree-kill": "^1.2.2", + "yargs": "^16.2.0" + }, + "bin": { + "concurrently": "bin/concurrently.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/concurrently/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/concurrently/node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/concurrently/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/concurrently/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/concurrently/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/concurrently/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, "node_modules/confusing-browser-globals": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==" }, + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/console.table": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz", + "integrity": "sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "easy-table": "1.1.0" + }, + "engines": { + "node": "> 0.10" + } + }, "node_modules/content-type": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", @@ -7825,6 +8227,29 @@ "node": ">=0.10.0" } }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defaults/node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -8131,6 +8556,16 @@ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, + "node_modules/easy-table": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz", + "integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "wcwidth": ">=1.0.1" + } + }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -9308,6 +9743,21 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -9370,6 +9820,13 @@ "node": ">=6" } }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true, + "license": "MIT" + }, "node_modules/fastq": { "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", @@ -9386,6 +9843,32 @@ "bser": "2.1.1" } }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -9619,6 +10102,21 @@ "optional": true, "peer": true }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -10329,6 +10827,19 @@ "node": ">=10.17.0" } }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -10491,6 +11002,48 @@ "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.3.tgz", "integrity": "sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==" }, + "node_modules/inquirer": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^6.0.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/inquirer/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/internal-slot": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", @@ -10739,6 +11292,16 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -10897,6 +11460,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-weakmap": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", @@ -11015,6 +11591,16 @@ "node": ">=8" } }, + "node_modules/iterare": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=6" + } + }, "node_modules/iterator.prototype": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", @@ -11720,6 +12306,19 @@ "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", "dev": true }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, "node_modules/jsonwebtoken": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", @@ -11936,6 +12535,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -12002,6 +12608,23 @@ "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/loglevel": { "version": "1.6.7", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz", @@ -12879,6 +13502,13 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true, + "license": "ISC" + }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", @@ -13066,6 +13696,27 @@ "node": ">= 8.0.0" } }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -13401,6 +14052,40 @@ "url": "https://github.com/sponsors/eshaz" } }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -13555,6 +14240,13 @@ "node": "14 || >=16.14" } }, + "node_modules/path-to-regexp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", + "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==", + "dev": true, + "license": "MIT" + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -14662,6 +15354,13 @@ "node": ">= 12.13.0" } }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/reflect.getprototypeof": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", @@ -14933,6 +15632,20 @@ "node": ">=10" } }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -14969,6 +15682,16 @@ "npm": ">=3.10.0" } }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -14991,6 +15714,16 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/safe-array-concat": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", @@ -15056,6 +15789,13 @@ "node": ">=10" } }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, "node_modules/scheduler": { "version": "0.23.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", @@ -15423,6 +16163,13 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", + "dev": true, + "license": "MIT" + }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -16060,6 +16807,19 @@ "xtend": "~2.1.1" } }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -16100,6 +16860,23 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, "node_modules/trim-lines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", @@ -16477,6 +17254,19 @@ "node": ">=14.17" } }, + "node_modules/uid": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", + "integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@lukeed/csprng": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -16650,6 +17440,16 @@ "cookie": "^0.6.0" } }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/update-browserslist-db": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", @@ -16810,6 +17610,23 @@ "node": ">=10.13.0" } }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "license": "BSD-2-Clause" + }, "node_modules/webpack": { "version": "5.91.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", @@ -16911,6 +17728,17 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -17379,7 +18207,14 @@ }, "packages/signal-api": { "name": "@link-stack/signal-api", - "version": "1.0.0" + "version": "1.0.0", + "devDependencies": { + "@link-stack/eslint-config": "*", + "@link-stack/typescript-config": "*", + "@openapitools/openapi-generator-cli": "^2.13.4", + "@types/node": "^20", + "typescript": "^5" + } }, "packages/typescript-config": { "name": "@link-stack/typescript-config", diff --git a/packages/signal-api/.eslintrc.js b/packages/signal-api/.eslintrc.js new file mode 100644 index 0000000..e5793fe --- /dev/null +++ b/packages/signal-api/.eslintrc.js @@ -0,0 +1,4 @@ +module.exports = { + root: true, + extends: ["@link-stack/eslint-config/eslint.node.config.js"], +}; diff --git a/packages/signal-api/.openapi-generator-ignore b/packages/signal-api/.openapi-generator-ignore new file mode 100644 index 0000000..7484ee5 --- /dev/null +++ b/packages/signal-api/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/packages/signal-api/apis/AccountsApi.ts b/packages/signal-api/apis/AccountsApi.ts new file mode 100644 index 0000000..523aa91 --- /dev/null +++ b/packages/signal-api/apis/AccountsApi.ts @@ -0,0 +1,263 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime'; +import type { + ApiError, + ApiRateLimitChallengeRequest, + ApiSetUsernameRequest, + ApiUpdateAccountSettingsRequest, + ClientSetUsernameResponse, +} from '../models/index'; +import { + ApiErrorFromJSON, + ApiErrorToJSON, + ApiRateLimitChallengeRequestFromJSON, + ApiRateLimitChallengeRequestToJSON, + ApiSetUsernameRequestFromJSON, + ApiSetUsernameRequestToJSON, + ApiUpdateAccountSettingsRequestFromJSON, + ApiUpdateAccountSettingsRequestToJSON, + ClientSetUsernameResponseFromJSON, + ClientSetUsernameResponseToJSON, +} from '../models/index'; + +export interface V1AccountsNumberRateLimitChallengePostRequest { + number: string; + data: ApiRateLimitChallengeRequest; +} + +export interface V1AccountsNumberSettingsPutRequest { + number: string; + data: ApiUpdateAccountSettingsRequest; +} + +export interface V1AccountsNumberUsernameDeleteRequest { + number: string; +} + +export interface V1AccountsNumberUsernamePostRequest { + number: string; + data: ApiSetUsernameRequest; +} + +/** + * + */ +export class AccountsApi extends runtime.BaseAPI { + + /** + * Lists all of the accounts linked or registered + * List all accounts + */ + async v1AccountsGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/v1/accounts`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * Lists all of the accounts linked or registered + * List all accounts + */ + async v1AccountsGet(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.v1AccountsGetRaw(initOverrides); + return await response.value(); + } + + /** + * When running into rate limits, sometimes the limit can be lifted, by solving a CAPTCHA. To get the captcha token, go to https://signalcaptchas.org/challenge/generate.html For the staging environment, use: https://signalcaptchas.org/staging/registration/generate.html. The \"challenge_token\" is the token from the failed send attempt. The \"captcha\" is the captcha result, starting with signalcaptcha:// + * Lift rate limit restrictions by solving a captcha. + */ + async v1AccountsNumberRateLimitChallengePostRaw(requestParameters: V1AccountsNumberRateLimitChallengePostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1AccountsNumberRateLimitChallengePost().' + ); + } + + if (requestParameters['data'] == null) { + throw new runtime.RequiredError( + 'data', + 'Required parameter "data" was null or undefined when calling v1AccountsNumberRateLimitChallengePost().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/accounts/{number}/rate-limit-challenge`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))), + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: ApiRateLimitChallengeRequestToJSON(requestParameters['data']), + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * When running into rate limits, sometimes the limit can be lifted, by solving a CAPTCHA. To get the captcha token, go to https://signalcaptchas.org/challenge/generate.html For the staging environment, use: https://signalcaptchas.org/staging/registration/generate.html. The \"challenge_token\" is the token from the failed send attempt. The \"captcha\" is the captcha result, starting with signalcaptcha:// + * Lift rate limit restrictions by solving a captcha. + */ + async v1AccountsNumberRateLimitChallengePost(requestParameters: V1AccountsNumberRateLimitChallengePostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.v1AccountsNumberRateLimitChallengePostRaw(requestParameters, initOverrides); + } + + /** + * Update the account attributes on the signal server. + * Update the account settings. + */ + async v1AccountsNumberSettingsPutRaw(requestParameters: V1AccountsNumberSettingsPutRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1AccountsNumberSettingsPut().' + ); + } + + if (requestParameters['data'] == null) { + throw new runtime.RequiredError( + 'data', + 'Required parameter "data" was null or undefined when calling v1AccountsNumberSettingsPut().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/accounts/{number}/settings`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: ApiUpdateAccountSettingsRequestToJSON(requestParameters['data']), + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Update the account attributes on the signal server. + * Update the account settings. + */ + async v1AccountsNumberSettingsPut(requestParameters: V1AccountsNumberSettingsPutRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.v1AccountsNumberSettingsPutRaw(requestParameters, initOverrides); + } + + /** + * Delete the username associated with this account. + * Remove a username. + */ + async v1AccountsNumberUsernameDeleteRaw(requestParameters: V1AccountsNumberUsernameDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1AccountsNumberUsernameDelete().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/v1/accounts/{number}/username`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Delete the username associated with this account. + * Remove a username. + */ + async v1AccountsNumberUsernameDelete(requestParameters: V1AccountsNumberUsernameDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.v1AccountsNumberUsernameDeleteRaw(requestParameters, initOverrides); + } + + /** + * Allows to set the username that should be used for this account. This can either be just the nickname (e.g. test) or the complete username with discriminator (e.g. test.123). Returns the new username with discriminator and the username link. + * Set a username. + */ + async v1AccountsNumberUsernamePostRaw(requestParameters: V1AccountsNumberUsernamePostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1AccountsNumberUsernamePost().' + ); + } + + if (requestParameters['data'] == null) { + throw new runtime.RequiredError( + 'data', + 'Required parameter "data" was null or undefined when calling v1AccountsNumberUsernamePost().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/accounts/{number}/username`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))), + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: ApiSetUsernameRequestToJSON(requestParameters['data']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ClientSetUsernameResponseFromJSON(jsonValue)); + } + + /** + * Allows to set the username that should be used for this account. This can either be just the nickname (e.g. test) or the complete username with discriminator (e.g. test.123). Returns the new username with discriminator and the username link. + * Set a username. + */ + async v1AccountsNumberUsernamePost(requestParameters: V1AccountsNumberUsernamePostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1AccountsNumberUsernamePostRaw(requestParameters, initOverrides); + switch (response.raw.status) { + case 201: + return await response.value(); + case 204: + return null; + default: + return await response.value(); + } + } + +} diff --git a/packages/signal-api/apis/AttachmentsApi.ts b/packages/signal-api/apis/AttachmentsApi.ts new file mode 100644 index 0000000..0194bf5 --- /dev/null +++ b/packages/signal-api/apis/AttachmentsApi.ts @@ -0,0 +1,144 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime'; +import type { + ApiError, +} from '../models/index'; +import { + ApiErrorFromJSON, + ApiErrorToJSON, +} from '../models/index'; + +export interface V1AttachmentsAttachmentDeleteRequest { + attachment: string; +} + +export interface V1AttachmentsAttachmentGetRequest { + attachment: string; +} + +/** + * + */ +export class AttachmentsApi extends runtime.BaseAPI { + + /** + * Remove the attachment with the given id from filesystem. + * Remove attachment. + */ + async v1AttachmentsAttachmentDeleteRaw(requestParameters: V1AttachmentsAttachmentDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['attachment'] == null) { + throw new runtime.RequiredError( + 'attachment', + 'Required parameter "attachment" was null or undefined when calling v1AttachmentsAttachmentDelete().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/v1/attachments/{attachment}`.replace(`{${"attachment"}}`, encodeURIComponent(String(requestParameters['attachment']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Remove the attachment with the given id from filesystem. + * Remove attachment. + */ + async v1AttachmentsAttachmentDelete(requestParameters: V1AttachmentsAttachmentDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1AttachmentsAttachmentDeleteRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Serve the attachment with the given id + * Serve Attachment. + */ + async v1AttachmentsAttachmentGetRaw(requestParameters: V1AttachmentsAttachmentGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['attachment'] == null) { + throw new runtime.RequiredError( + 'attachment', + 'Required parameter "attachment" was null or undefined when calling v1AttachmentsAttachmentGet().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/v1/attachments/{attachment}`.replace(`{${"attachment"}}`, encodeURIComponent(String(requestParameters['attachment']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Serve the attachment with the given id + * Serve Attachment. + */ + async v1AttachmentsAttachmentGet(requestParameters: V1AttachmentsAttachmentGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1AttachmentsAttachmentGetRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * List all downloaded attachments + * List all attachments. + */ + async v1AttachmentsGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/v1/attachments`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * List all downloaded attachments + * List all attachments. + */ + async v1AttachmentsGet(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.v1AttachmentsGetRaw(initOverrides); + return await response.value(); + } + +} diff --git a/packages/signal-api/apis/ContactsApi.ts b/packages/signal-api/apis/ContactsApi.ts new file mode 100644 index 0000000..d17df59 --- /dev/null +++ b/packages/signal-api/apis/ContactsApi.ts @@ -0,0 +1,120 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime'; +import type { + ApiError, + ApiUpdateContactRequest, +} from '../models/index'; +import { + ApiErrorFromJSON, + ApiErrorToJSON, + ApiUpdateContactRequestFromJSON, + ApiUpdateContactRequestToJSON, +} from '../models/index'; + +export interface V1ContactsNumberPutRequest { + number: string; + data: ApiUpdateContactRequest; +} + +export interface V1ContactsNumberSyncPostRequest { + number: string; +} + +/** + * + */ +export class ContactsApi extends runtime.BaseAPI { + + /** + * Updates the info associated to a number on the contact list. + * Updates the info associated to a number on the contact list. If the contact doesn’t exist yet, it will be added. + */ + async v1ContactsNumberPutRaw(requestParameters: V1ContactsNumberPutRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1ContactsNumberPut().' + ); + } + + if (requestParameters['data'] == null) { + throw new runtime.RequiredError( + 'data', + 'Required parameter "data" was null or undefined when calling v1ContactsNumberPut().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/contacts/{number}`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: ApiUpdateContactRequestToJSON(requestParameters['data']), + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Updates the info associated to a number on the contact list. + * Updates the info associated to a number on the contact list. If the contact doesn’t exist yet, it will be added. + */ + async v1ContactsNumberPut(requestParameters: V1ContactsNumberPutRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.v1ContactsNumberPutRaw(requestParameters, initOverrides); + } + + /** + * Send a synchronization message with the local contacts list to all linked devices. This command should only be used if this is the primary device. + * Send a synchronization message with the local contacts list to all linked devices. + */ + async v1ContactsNumberSyncPostRaw(requestParameters: V1ContactsNumberSyncPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1ContactsNumberSyncPost().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/v1/contacts/{number}/sync`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))), + method: 'POST', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Send a synchronization message with the local contacts list to all linked devices. This command should only be used if this is the primary device. + * Send a synchronization message with the local contacts list to all linked devices. + */ + async v1ContactsNumberSyncPost(requestParameters: V1ContactsNumberSyncPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.v1ContactsNumberSyncPostRaw(requestParameters, initOverrides); + } + +} diff --git a/packages/signal-api/apis/DevicesApi.ts b/packages/signal-api/apis/DevicesApi.ts new file mode 100644 index 0000000..69f8753 --- /dev/null +++ b/packages/signal-api/apis/DevicesApi.ts @@ -0,0 +1,282 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime'; +import type { + ApiAddDeviceRequest, + ApiError, + ApiRegisterNumberRequest, + ApiUnregisterNumberRequest, + ApiVerifyNumberSettings, +} from '../models/index'; +import { + ApiAddDeviceRequestFromJSON, + ApiAddDeviceRequestToJSON, + ApiErrorFromJSON, + ApiErrorToJSON, + ApiRegisterNumberRequestFromJSON, + ApiRegisterNumberRequestToJSON, + ApiUnregisterNumberRequestFromJSON, + ApiUnregisterNumberRequestToJSON, + ApiVerifyNumberSettingsFromJSON, + ApiVerifyNumberSettingsToJSON, +} from '../models/index'; + +export interface V1DevicesNumberPostRequest { + number: string; + data: ApiAddDeviceRequest; +} + +export interface V1QrcodelinkGetRequest { + deviceName: string; + qrcodeVersion?: number; +} + +export interface V1RegisterNumberPostRequest { + number: string; + data?: ApiRegisterNumberRequest; +} + +export interface V1RegisterNumberVerifyTokenPostRequest { + number: string; + token: string; + data?: ApiVerifyNumberSettings; +} + +export interface V1UnregisterNumberPostRequest { + number: string; + data?: ApiUnregisterNumberRequest; +} + +/** + * + */ +export class DevicesApi extends runtime.BaseAPI { + + /** + * Links another device to this device. Only works, if this is the master device. + * Links another device to this device. + */ + async v1DevicesNumberPostRaw(requestParameters: V1DevicesNumberPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1DevicesNumberPost().' + ); + } + + if (requestParameters['data'] == null) { + throw new runtime.RequiredError( + 'data', + 'Required parameter "data" was null or undefined when calling v1DevicesNumberPost().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/devices/{number}`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))), + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: ApiAddDeviceRequestToJSON(requestParameters['data']), + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Links another device to this device. Only works, if this is the master device. + * Links another device to this device. + */ + async v1DevicesNumberPost(requestParameters: V1DevicesNumberPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.v1DevicesNumberPostRaw(requestParameters, initOverrides); + } + + /** + * Link device and generate QR code + * Link device and generate QR code. + */ + async v1QrcodelinkGetRaw(requestParameters: V1QrcodelinkGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['deviceName'] == null) { + throw new runtime.RequiredError( + 'deviceName', + 'Required parameter "deviceName" was null or undefined when calling v1QrcodelinkGet().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['deviceName'] != null) { + queryParameters['device_name'] = requestParameters['deviceName']; + } + + if (requestParameters['qrcodeVersion'] != null) { + queryParameters['qrcode_version'] = requestParameters['qrcodeVersion']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/v1/qrcodelink`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Link device and generate QR code + * Link device and generate QR code. + */ + async v1QrcodelinkGet(requestParameters: V1QrcodelinkGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1QrcodelinkGetRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Register a phone number with the signal network. + * Register a phone number. + */ + async v1RegisterNumberPostRaw(requestParameters: V1RegisterNumberPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1RegisterNumberPost().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/register/{number}`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))), + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: ApiRegisterNumberRequestToJSON(requestParameters['data']), + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Register a phone number with the signal network. + * Register a phone number. + */ + async v1RegisterNumberPost(requestParameters: V1RegisterNumberPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.v1RegisterNumberPostRaw(requestParameters, initOverrides); + } + + /** + * Verify a registered phone number with the signal network. + * Verify a registered phone number. + */ + async v1RegisterNumberVerifyTokenPostRaw(requestParameters: V1RegisterNumberVerifyTokenPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1RegisterNumberVerifyTokenPost().' + ); + } + + if (requestParameters['token'] == null) { + throw new runtime.RequiredError( + 'token', + 'Required parameter "token" was null or undefined when calling v1RegisterNumberVerifyTokenPost().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/register/{number}/verify/{token}`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))).replace(`{${"token"}}`, encodeURIComponent(String(requestParameters['token']))), + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: ApiVerifyNumberSettingsToJSON(requestParameters['data']), + }, initOverrides); + + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Verify a registered phone number with the signal network. + * Verify a registered phone number. + */ + async v1RegisterNumberVerifyTokenPost(requestParameters: V1RegisterNumberVerifyTokenPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1RegisterNumberVerifyTokenPostRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Disables push support for this device. **WARNING:** If *delete_account* is set to *true*, the account will be deleted from the Signal Server. This cannot be undone without loss. + * Unregister a phone number. + */ + async v1UnregisterNumberPostRaw(requestParameters: V1UnregisterNumberPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1UnregisterNumberPost().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/unregister/{number}`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))), + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: ApiUnregisterNumberRequestToJSON(requestParameters['data']), + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Disables push support for this device. **WARNING:** If *delete_account* is set to *true*, the account will be deleted from the Signal Server. This cannot be undone without loss. + * Unregister a phone number. + */ + async v1UnregisterNumberPost(requestParameters: V1UnregisterNumberPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.v1UnregisterNumberPostRaw(requestParameters, initOverrides); + } + +} diff --git a/packages/signal-api/apis/GeneralApi.ts b/packages/signal-api/apis/GeneralApi.ts new file mode 100644 index 0000000..17266b2 --- /dev/null +++ b/packages/signal-api/apis/GeneralApi.ts @@ -0,0 +1,274 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime'; +import type { + ApiConfiguration, + ApiError, + ApiTrustModeRequest, + ApiTrustModeResponse, + ClientAbout, +} from '../models/index'; +import { + ApiConfigurationFromJSON, + ApiConfigurationToJSON, + ApiErrorFromJSON, + ApiErrorToJSON, + ApiTrustModeRequestFromJSON, + ApiTrustModeRequestToJSON, + ApiTrustModeResponseFromJSON, + ApiTrustModeResponseToJSON, + ClientAboutFromJSON, + ClientAboutToJSON, +} from '../models/index'; + +export interface V1ConfigurationNumberSettingsGetRequest { + number: string; + data: ApiTrustModeResponse; +} + +export interface V1ConfigurationNumberSettingsPostRequest { + number: string; + data: ApiTrustModeRequest; +} + +export interface V1ConfigurationPostRequest { + data: ApiConfiguration; +} + +/** + * + */ +export class GeneralApi extends runtime.BaseAPI { + + /** + * Returns the supported API versions and the internal build nr + * Lists general information about the API + */ + async v1AboutGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/v1/about`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ClientAboutFromJSON(jsonValue)); + } + + /** + * Returns the supported API versions and the internal build nr + * Lists general information about the API + */ + async v1AboutGet(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1AboutGetRaw(initOverrides); + return await response.value(); + } + + /** + * List the REST API configuration. + * List the REST API configuration. + */ + async v1ConfigurationGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/v1/configuration`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ApiConfigurationFromJSON(jsonValue)); + } + + /** + * List the REST API configuration. + * List the REST API configuration. + */ + async v1ConfigurationGet(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1ConfigurationGetRaw(initOverrides); + return await response.value(); + } + + /** + * List account specific settings. + * List account specific settings. + */ + async v1ConfigurationNumberSettingsGetRaw(requestParameters: V1ConfigurationNumberSettingsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1ConfigurationNumberSettingsGet().' + ); + } + + if (requestParameters['data'] == null) { + throw new runtime.RequiredError( + 'data', + 'Required parameter "data" was null or undefined when calling v1ConfigurationNumberSettingsGet().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/configuration/{number}/settings`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + body: ApiTrustModeResponseToJSON(requestParameters['data']), + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * List account specific settings. + * List account specific settings. + */ + async v1ConfigurationNumberSettingsGet(requestParameters: V1ConfigurationNumberSettingsGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.v1ConfigurationNumberSettingsGetRaw(requestParameters, initOverrides); + } + + /** + * Set account specific settings. + * Set account specific settings. + */ + async v1ConfigurationNumberSettingsPostRaw(requestParameters: V1ConfigurationNumberSettingsPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1ConfigurationNumberSettingsPost().' + ); + } + + if (requestParameters['data'] == null) { + throw new runtime.RequiredError( + 'data', + 'Required parameter "data" was null or undefined when calling v1ConfigurationNumberSettingsPost().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/configuration/{number}/settings`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))), + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: ApiTrustModeRequestToJSON(requestParameters['data']), + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * Set account specific settings. + * Set account specific settings. + */ + async v1ConfigurationNumberSettingsPost(requestParameters: V1ConfigurationNumberSettingsPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.v1ConfigurationNumberSettingsPostRaw(requestParameters, initOverrides); + } + + /** + * Set the REST API configuration. + * Set the REST API configuration. + */ + async v1ConfigurationPostRaw(requestParameters: V1ConfigurationPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['data'] == null) { + throw new runtime.RequiredError( + 'data', + 'Required parameter "data" was null or undefined when calling v1ConfigurationPost().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/configuration`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: ApiConfigurationToJSON(requestParameters['data']), + }, initOverrides); + + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Set the REST API configuration. + * Set the REST API configuration. + */ + async v1ConfigurationPost(requestParameters: V1ConfigurationPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1ConfigurationPostRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Internally used by the docker container to perform the health check. + * API Health Check + */ + async v1HealthGetRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/v1/health`, + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Internally used by the docker container to perform the health check. + * API Health Check + */ + async v1HealthGet(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1HealthGetRaw(initOverrides); + return await response.value(); + } + +} diff --git a/packages/signal-api/apis/GroupsApi.ts b/packages/signal-api/apis/GroupsApi.ts new file mode 100644 index 0000000..bd1facf --- /dev/null +++ b/packages/signal-api/apis/GroupsApi.ts @@ -0,0 +1,666 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime'; +import type { + ApiChangeGroupAdminsRequest, + ApiChangeGroupMembersRequest, + ApiCreateGroupRequest, + ApiCreateGroupResponse, + ApiError, + ApiUpdateGroupRequest, + ClientGroupEntry, +} from '../models/index'; +import { + ApiChangeGroupAdminsRequestFromJSON, + ApiChangeGroupAdminsRequestToJSON, + ApiChangeGroupMembersRequestFromJSON, + ApiChangeGroupMembersRequestToJSON, + ApiCreateGroupRequestFromJSON, + ApiCreateGroupRequestToJSON, + ApiCreateGroupResponseFromJSON, + ApiCreateGroupResponseToJSON, + ApiErrorFromJSON, + ApiErrorToJSON, + ApiUpdateGroupRequestFromJSON, + ApiUpdateGroupRequestToJSON, + ClientGroupEntryFromJSON, + ClientGroupEntryToJSON, +} from '../models/index'; + +export interface V1GroupsNumberGetRequest { + number: string; +} + +export interface V1GroupsNumberGroupidAdminsDeleteRequest { + number: string; + data: ApiChangeGroupAdminsRequest; +} + +export interface V1GroupsNumberGroupidAdminsPostRequest { + number: string; + data: ApiChangeGroupAdminsRequest; +} + +export interface V1GroupsNumberGroupidBlockPostRequest { + number: string; + groupid: string; +} + +export interface V1GroupsNumberGroupidDeleteRequest { + number: string; + groupid: string; +} + +export interface V1GroupsNumberGroupidGetRequest { + number: string; + groupid: string; +} + +export interface V1GroupsNumberGroupidJoinPostRequest { + number: string; + groupid: string; +} + +export interface V1GroupsNumberGroupidMembersDeleteRequest { + number: string; + data: ApiChangeGroupMembersRequest; +} + +export interface V1GroupsNumberGroupidMembersPostRequest { + number: string; + data: ApiChangeGroupMembersRequest; +} + +export interface V1GroupsNumberGroupidPutRequest { + number: string; + groupid: string; + data: ApiUpdateGroupRequest; +} + +export interface V1GroupsNumberGroupidQuitPostRequest { + number: string; + groupid: string; +} + +export interface V1GroupsNumberPostRequest { + number: string; + data: ApiCreateGroupRequest; +} + +/** + * + */ +export class GroupsApi extends runtime.BaseAPI { + + /** + * List all Signal Groups. + * List all Signal Groups. + */ + async v1GroupsNumberGetRaw(requestParameters: V1GroupsNumberGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1GroupsNumberGet().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/v1/groups/{number}`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ClientGroupEntryFromJSON)); + } + + /** + * List all Signal Groups. + * List all Signal Groups. + */ + async v1GroupsNumberGet(requestParameters: V1GroupsNumberGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.v1GroupsNumberGetRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Remove one or more admins from an existing Signal Group. + * Remove one or more admins from an existing Signal Group. + */ + async v1GroupsNumberGroupidAdminsDeleteRaw(requestParameters: V1GroupsNumberGroupidAdminsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1GroupsNumberGroupidAdminsDelete().' + ); + } + + if (requestParameters['data'] == null) { + throw new runtime.RequiredError( + 'data', + 'Required parameter "data" was null or undefined when calling v1GroupsNumberGroupidAdminsDelete().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/groups/{number}/{groupid}/admins`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + body: ApiChangeGroupAdminsRequestToJSON(requestParameters['data']), + }, initOverrides); + + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Remove one or more admins from an existing Signal Group. + * Remove one or more admins from an existing Signal Group. + */ + async v1GroupsNumberGroupidAdminsDelete(requestParameters: V1GroupsNumberGroupidAdminsDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1GroupsNumberGroupidAdminsDeleteRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Add one or more admins to an existing Signal Group. + * Add one or more admins to an existing Signal Group. + */ + async v1GroupsNumberGroupidAdminsPostRaw(requestParameters: V1GroupsNumberGroupidAdminsPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1GroupsNumberGroupidAdminsPost().' + ); + } + + if (requestParameters['data'] == null) { + throw new runtime.RequiredError( + 'data', + 'Required parameter "data" was null or undefined when calling v1GroupsNumberGroupidAdminsPost().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/groups/{number}/{groupid}/admins`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))), + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: ApiChangeGroupAdminsRequestToJSON(requestParameters['data']), + }, initOverrides); + + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Add one or more admins to an existing Signal Group. + * Add one or more admins to an existing Signal Group. + */ + async v1GroupsNumberGroupidAdminsPost(requestParameters: V1GroupsNumberGroupidAdminsPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1GroupsNumberGroupidAdminsPostRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Block the specified Signal Group. + * Block a Signal Group. + */ + async v1GroupsNumberGroupidBlockPostRaw(requestParameters: V1GroupsNumberGroupidBlockPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1GroupsNumberGroupidBlockPost().' + ); + } + + if (requestParameters['groupid'] == null) { + throw new runtime.RequiredError( + 'groupid', + 'Required parameter "groupid" was null or undefined when calling v1GroupsNumberGroupidBlockPost().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/v1/groups/{number}/{groupid}/block`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))).replace(`{${"groupid"}}`, encodeURIComponent(String(requestParameters['groupid']))), + method: 'POST', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Block the specified Signal Group. + * Block a Signal Group. + */ + async v1GroupsNumberGroupidBlockPost(requestParameters: V1GroupsNumberGroupidBlockPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1GroupsNumberGroupidBlockPostRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Delete the specified Signal Group. + * Delete a Signal Group. + */ + async v1GroupsNumberGroupidDeleteRaw(requestParameters: V1GroupsNumberGroupidDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1GroupsNumberGroupidDelete().' + ); + } + + if (requestParameters['groupid'] == null) { + throw new runtime.RequiredError( + 'groupid', + 'Required parameter "groupid" was null or undefined when calling v1GroupsNumberGroupidDelete().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/v1/groups/{number}/{groupid}`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))).replace(`{${"groupid"}}`, encodeURIComponent(String(requestParameters['groupid']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Delete the specified Signal Group. + * Delete a Signal Group. + */ + async v1GroupsNumberGroupidDelete(requestParameters: V1GroupsNumberGroupidDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1GroupsNumberGroupidDeleteRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * List a specific Signal Group. + * List a Signal Group. + */ + async v1GroupsNumberGroupidGetRaw(requestParameters: V1GroupsNumberGroupidGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1GroupsNumberGroupidGet().' + ); + } + + if (requestParameters['groupid'] == null) { + throw new runtime.RequiredError( + 'groupid', + 'Required parameter "groupid" was null or undefined when calling v1GroupsNumberGroupidGet().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/v1/groups/{number}/{groupid}`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))).replace(`{${"groupid"}}`, encodeURIComponent(String(requestParameters['groupid']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ClientGroupEntryFromJSON(jsonValue)); + } + + /** + * List a specific Signal Group. + * List a Signal Group. + */ + async v1GroupsNumberGroupidGet(requestParameters: V1GroupsNumberGroupidGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1GroupsNumberGroupidGetRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Join the specified Signal Group. + * Join a Signal Group. + */ + async v1GroupsNumberGroupidJoinPostRaw(requestParameters: V1GroupsNumberGroupidJoinPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1GroupsNumberGroupidJoinPost().' + ); + } + + if (requestParameters['groupid'] == null) { + throw new runtime.RequiredError( + 'groupid', + 'Required parameter "groupid" was null or undefined when calling v1GroupsNumberGroupidJoinPost().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/v1/groups/{number}/{groupid}/join`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))).replace(`{${"groupid"}}`, encodeURIComponent(String(requestParameters['groupid']))), + method: 'POST', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Join the specified Signal Group. + * Join a Signal Group. + */ + async v1GroupsNumberGroupidJoinPost(requestParameters: V1GroupsNumberGroupidJoinPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1GroupsNumberGroupidJoinPostRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Remove one or more members from an existing Signal Group. + * Remove one or more members from an existing Signal Group. + */ + async v1GroupsNumberGroupidMembersDeleteRaw(requestParameters: V1GroupsNumberGroupidMembersDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1GroupsNumberGroupidMembersDelete().' + ); + } + + if (requestParameters['data'] == null) { + throw new runtime.RequiredError( + 'data', + 'Required parameter "data" was null or undefined when calling v1GroupsNumberGroupidMembersDelete().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/groups/{number}/{groupid}/members`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + body: ApiChangeGroupMembersRequestToJSON(requestParameters['data']), + }, initOverrides); + + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Remove one or more members from an existing Signal Group. + * Remove one or more members from an existing Signal Group. + */ + async v1GroupsNumberGroupidMembersDelete(requestParameters: V1GroupsNumberGroupidMembersDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1GroupsNumberGroupidMembersDeleteRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Add one or more members to an existing Signal Group. + * Add one or more members to an existing Signal Group. + */ + async v1GroupsNumberGroupidMembersPostRaw(requestParameters: V1GroupsNumberGroupidMembersPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1GroupsNumberGroupidMembersPost().' + ); + } + + if (requestParameters['data'] == null) { + throw new runtime.RequiredError( + 'data', + 'Required parameter "data" was null or undefined when calling v1GroupsNumberGroupidMembersPost().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/groups/{number}/{groupid}/members`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))), + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: ApiChangeGroupMembersRequestToJSON(requestParameters['data']), + }, initOverrides); + + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Add one or more members to an existing Signal Group. + * Add one or more members to an existing Signal Group. + */ + async v1GroupsNumberGroupidMembersPost(requestParameters: V1GroupsNumberGroupidMembersPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1GroupsNumberGroupidMembersPostRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Update the state of a Signal Group. + * Update the state of a Signal Group. + */ + async v1GroupsNumberGroupidPutRaw(requestParameters: V1GroupsNumberGroupidPutRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1GroupsNumberGroupidPut().' + ); + } + + if (requestParameters['groupid'] == null) { + throw new runtime.RequiredError( + 'groupid', + 'Required parameter "groupid" was null or undefined when calling v1GroupsNumberGroupidPut().' + ); + } + + if (requestParameters['data'] == null) { + throw new runtime.RequiredError( + 'data', + 'Required parameter "data" was null or undefined when calling v1GroupsNumberGroupidPut().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/groups/{number}/{groupid}`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))).replace(`{${"groupid"}}`, encodeURIComponent(String(requestParameters['groupid']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: ApiUpdateGroupRequestToJSON(requestParameters['data']), + }, initOverrides); + + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Update the state of a Signal Group. + * Update the state of a Signal Group. + */ + async v1GroupsNumberGroupidPut(requestParameters: V1GroupsNumberGroupidPutRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1GroupsNumberGroupidPutRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Quit the specified Signal Group. + * Quit a Signal Group. + */ + async v1GroupsNumberGroupidQuitPostRaw(requestParameters: V1GroupsNumberGroupidQuitPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1GroupsNumberGroupidQuitPost().' + ); + } + + if (requestParameters['groupid'] == null) { + throw new runtime.RequiredError( + 'groupid', + 'Required parameter "groupid" was null or undefined when calling v1GroupsNumberGroupidQuitPost().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/v1/groups/{number}/{groupid}/quit`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))).replace(`{${"groupid"}}`, encodeURIComponent(String(requestParameters['groupid']))), + method: 'POST', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Quit the specified Signal Group. + * Quit a Signal Group. + */ + async v1GroupsNumberGroupidQuitPost(requestParameters: V1GroupsNumberGroupidQuitPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1GroupsNumberGroupidQuitPostRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Create a new Signal Group with the specified members. + * Create a new Signal Group. + */ + async v1GroupsNumberPostRaw(requestParameters: V1GroupsNumberPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1GroupsNumberPost().' + ); + } + + if (requestParameters['data'] == null) { + throw new runtime.RequiredError( + 'data', + 'Required parameter "data" was null or undefined when calling v1GroupsNumberPost().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/groups/{number}`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))), + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: ApiCreateGroupRequestToJSON(requestParameters['data']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ApiCreateGroupResponseFromJSON(jsonValue)); + } + + /** + * Create a new Signal Group with the specified members. + * Create a new Signal Group. + */ + async v1GroupsNumberPost(requestParameters: V1GroupsNumberPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1GroupsNumberPostRaw(requestParameters, initOverrides); + return await response.value(); + } + +} diff --git a/packages/signal-api/apis/IdentitiesApi.ts b/packages/signal-api/apis/IdentitiesApi.ts new file mode 100644 index 0000000..b2e4f64 --- /dev/null +++ b/packages/signal-api/apis/IdentitiesApi.ts @@ -0,0 +1,134 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime'; +import type { + ApiTrustIdentityRequest, + ClientIdentityEntry, +} from '../models/index'; +import { + ApiTrustIdentityRequestFromJSON, + ApiTrustIdentityRequestToJSON, + ClientIdentityEntryFromJSON, + ClientIdentityEntryToJSON, +} from '../models/index'; + +export interface V1IdentitiesNumberGetRequest { + number: string; +} + +export interface V1IdentitiesNumberTrustNumberToTrustPutRequest { + number: string; + numberToTrust: string; + data: ApiTrustIdentityRequest; +} + +/** + * + */ +export class IdentitiesApi extends runtime.BaseAPI { + + /** + * List all identities for the given number. + * List Identities + */ + async v1IdentitiesNumberGetRaw(requestParameters: V1IdentitiesNumberGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1IdentitiesNumberGet().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/v1/identities/{number}`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ClientIdentityEntryFromJSON)); + } + + /** + * List all identities for the given number. + * List Identities + */ + async v1IdentitiesNumberGet(requestParameters: V1IdentitiesNumberGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.v1IdentitiesNumberGetRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Trust an identity. When \'trust_all_known_keys\' is set to\' true\', all known keys of this user are trusted. **This is only recommended for testing.** + * Trust Identity + */ + async v1IdentitiesNumberTrustNumberToTrustPutRaw(requestParameters: V1IdentitiesNumberTrustNumberToTrustPutRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1IdentitiesNumberTrustNumberToTrustPut().' + ); + } + + if (requestParameters['numberToTrust'] == null) { + throw new runtime.RequiredError( + 'numberToTrust', + 'Required parameter "numberToTrust" was null or undefined when calling v1IdentitiesNumberTrustNumberToTrustPut().' + ); + } + + if (requestParameters['data'] == null) { + throw new runtime.RequiredError( + 'data', + 'Required parameter "data" was null or undefined when calling v1IdentitiesNumberTrustNumberToTrustPut().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/identities/{number}/trust/{numberToTrust}`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))).replace(`{${"numberToTrust"}}`, encodeURIComponent(String(requestParameters['numberToTrust']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: ApiTrustIdentityRequestToJSON(requestParameters['data']), + }, initOverrides); + + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Trust an identity. When \'trust_all_known_keys\' is set to\' true\', all known keys of this user are trusted. **This is only recommended for testing.** + * Trust Identity + */ + async v1IdentitiesNumberTrustNumberToTrustPut(requestParameters: V1IdentitiesNumberTrustNumberToTrustPutRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1IdentitiesNumberTrustNumberToTrustPutRaw(requestParameters, initOverrides); + return await response.value(); + } + +} diff --git a/packages/signal-api/apis/MessagesApi.ts b/packages/signal-api/apis/MessagesApi.ts new file mode 100644 index 0000000..e39b203 --- /dev/null +++ b/packages/signal-api/apis/MessagesApi.ts @@ -0,0 +1,307 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime'; +import type { + ApiError, + ApiSendMessageError, + ApiSendMessageResponse, + ApiSendMessageV1, + ApiSendMessageV2, + ApiTypingIndicatorRequest, +} from '../models/index'; +import { + ApiErrorFromJSON, + ApiErrorToJSON, + ApiSendMessageErrorFromJSON, + ApiSendMessageErrorToJSON, + ApiSendMessageResponseFromJSON, + ApiSendMessageResponseToJSON, + ApiSendMessageV1FromJSON, + ApiSendMessageV1ToJSON, + ApiSendMessageV2FromJSON, + ApiSendMessageV2ToJSON, + ApiTypingIndicatorRequestFromJSON, + ApiTypingIndicatorRequestToJSON, +} from '../models/index'; + +export interface V1ReceiveNumberGetRequest { + number: string; + timeout?: string; + ignoreAttachments?: string; + ignoreStories?: string; + maxMessages?: string; + sendReadReceipts?: string; +} + +export interface V1SendPostRequest { + data: ApiSendMessageV1; +} + +export interface V1TypingIndicatorNumberDeleteRequest { + number: string; + data: ApiTypingIndicatorRequest; +} + +export interface V1TypingIndicatorNumberPutRequest { + number: string; + data: ApiTypingIndicatorRequest; +} + +export interface V2SendPostRequest { + data: ApiSendMessageV2; +} + +/** + * + */ +export class MessagesApi extends runtime.BaseAPI { + + /** + * Receives Signal Messages from the Signal Network. If you are running the docker container in normal/native mode, this is a GET endpoint. In json-rpc mode this is a websocket endpoint. + * Receive Signal Messages. + */ + async v1ReceiveNumberGetRaw(requestParameters: V1ReceiveNumberGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1ReceiveNumberGet().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['timeout'] != null) { + queryParameters['timeout'] = requestParameters['timeout']; + } + + if (requestParameters['ignoreAttachments'] != null) { + queryParameters['ignore_attachments'] = requestParameters['ignoreAttachments']; + } + + if (requestParameters['ignoreStories'] != null) { + queryParameters['ignore_stories'] = requestParameters['ignoreStories']; + } + + if (requestParameters['maxMessages'] != null) { + queryParameters['max_messages'] = requestParameters['maxMessages']; + } + + if (requestParameters['sendReadReceipts'] != null) { + queryParameters['send_read_receipts'] = requestParameters['sendReadReceipts']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/v1/receive/{number}`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response); + } + + /** + * Receives Signal Messages from the Signal Network. If you are running the docker container in normal/native mode, this is a GET endpoint. In json-rpc mode this is a websocket endpoint. + * Receive Signal Messages. + */ + async v1ReceiveNumberGet(requestParameters: V1ReceiveNumberGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.v1ReceiveNumberGetRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Send a signal message + * Send a signal message. + * @deprecated + */ + async v1SendPostRaw(requestParameters: V1SendPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['data'] == null) { + throw new runtime.RequiredError( + 'data', + 'Required parameter "data" was null or undefined when calling v1SendPost().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/send`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: ApiSendMessageV1ToJSON(requestParameters['data']), + }, initOverrides); + + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Send a signal message + * Send a signal message. + * @deprecated + */ + async v1SendPost(requestParameters: V1SendPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1SendPostRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Hide Typing Indicator. + * Hide Typing Indicator. + */ + async v1TypingIndicatorNumberDeleteRaw(requestParameters: V1TypingIndicatorNumberDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1TypingIndicatorNumberDelete().' + ); + } + + if (requestParameters['data'] == null) { + throw new runtime.RequiredError( + 'data', + 'Required parameter "data" was null or undefined when calling v1TypingIndicatorNumberDelete().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/typing-indicator/{number}`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))), + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + body: ApiTypingIndicatorRequestToJSON(requestParameters['data']), + }, initOverrides); + + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Hide Typing Indicator. + * Hide Typing Indicator. + */ + async v1TypingIndicatorNumberDelete(requestParameters: V1TypingIndicatorNumberDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1TypingIndicatorNumberDeleteRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Show Typing Indicator. + * Show Typing Indicator. + */ + async v1TypingIndicatorNumberPutRaw(requestParameters: V1TypingIndicatorNumberPutRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1TypingIndicatorNumberPut().' + ); + } + + if (requestParameters['data'] == null) { + throw new runtime.RequiredError( + 'data', + 'Required parameter "data" was null or undefined when calling v1TypingIndicatorNumberPut().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/typing-indicator/{number}`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: ApiTypingIndicatorRequestToJSON(requestParameters['data']), + }, initOverrides); + + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Show Typing Indicator. + * Show Typing Indicator. + */ + async v1TypingIndicatorNumberPut(requestParameters: V1TypingIndicatorNumberPutRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1TypingIndicatorNumberPutRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * Send a signal message. Set the text_mode to \'styled\' in case you want to add formatting to your text message. Styling Options: *italic text*, **bold text**, ~strikethrough text~. + * Send a signal message. + */ + async v2SendPostRaw(requestParameters: V2SendPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['data'] == null) { + throw new runtime.RequiredError( + 'data', + 'Required parameter "data" was null or undefined when calling v2SendPost().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v2/send`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: ApiSendMessageV2ToJSON(requestParameters['data']), + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => ApiSendMessageResponseFromJSON(jsonValue)); + } + + /** + * Send a signal message. Set the text_mode to \'styled\' in case you want to add formatting to your text message. Styling Options: *italic text*, **bold text**, ~strikethrough text~. + * Send a signal message. + */ + async v2SendPost(requestParameters: V2SendPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v2SendPostRaw(requestParameters, initOverrides); + return await response.value(); + } + +} diff --git a/packages/signal-api/apis/ProfilesApi.ts b/packages/signal-api/apis/ProfilesApi.ts new file mode 100644 index 0000000..902e371 --- /dev/null +++ b/packages/signal-api/apis/ProfilesApi.ts @@ -0,0 +1,87 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime'; +import type { + ApiError, + ApiUpdateProfileRequest, +} from '../models/index'; +import { + ApiErrorFromJSON, + ApiErrorToJSON, + ApiUpdateProfileRequestFromJSON, + ApiUpdateProfileRequestToJSON, +} from '../models/index'; + +export interface V1ProfilesNumberPutRequest { + number: string; + data: ApiUpdateProfileRequest; +} + +/** + * + */ +export class ProfilesApi extends runtime.BaseAPI { + + /** + * Set your name and optional an avatar. + * Update Profile. + */ + async v1ProfilesNumberPutRaw(requestParameters: V1ProfilesNumberPutRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1ProfilesNumberPut().' + ); + } + + if (requestParameters['data'] == null) { + throw new runtime.RequiredError( + 'data', + 'Required parameter "data" was null or undefined when calling v1ProfilesNumberPut().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/profiles/{number}`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))), + method: 'PUT', + headers: headerParameters, + query: queryParameters, + body: ApiUpdateProfileRequestToJSON(requestParameters['data']), + }, initOverrides); + + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Set your name and optional an avatar. + * Update Profile. + */ + async v1ProfilesNumberPut(requestParameters: V1ProfilesNumberPutRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1ProfilesNumberPutRaw(requestParameters, initOverrides); + return await response.value(); + } + +} diff --git a/packages/signal-api/apis/ReactionsApi.ts b/packages/signal-api/apis/ReactionsApi.ts new file mode 100644 index 0000000..9fd656c --- /dev/null +++ b/packages/signal-api/apis/ReactionsApi.ts @@ -0,0 +1,125 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime'; +import type { + ApiError, + ApiReaction, +} from '../models/index'; +import { + ApiErrorFromJSON, + ApiErrorToJSON, + ApiReactionFromJSON, + ApiReactionToJSON, +} from '../models/index'; + +export interface V1ReactionsNumberDeleteRequest { + data: ApiReaction; +} + +export interface V1ReactionsNumberPostRequest { + data: ApiReaction; +} + +/** + * + */ +export class ReactionsApi extends runtime.BaseAPI { + + /** + * Remove a reaction + * Remove a reaction. + */ + async v1ReactionsNumberDeleteRaw(requestParameters: V1ReactionsNumberDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['data'] == null) { + throw new runtime.RequiredError( + 'data', + 'Required parameter "data" was null or undefined when calling v1ReactionsNumberDelete().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/reactions/{number}`, + method: 'DELETE', + headers: headerParameters, + query: queryParameters, + body: ApiReactionToJSON(requestParameters['data']), + }, initOverrides); + + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Remove a reaction + * Remove a reaction. + */ + async v1ReactionsNumberDelete(requestParameters: V1ReactionsNumberDeleteRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1ReactionsNumberDeleteRaw(requestParameters, initOverrides); + return await response.value(); + } + + /** + * React to a message + * Send a reaction. + */ + async v1ReactionsNumberPostRaw(requestParameters: V1ReactionsNumberPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['data'] == null) { + throw new runtime.RequiredError( + 'data', + 'Required parameter "data" was null or undefined when calling v1ReactionsNumberPost().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/reactions/{number}`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: ApiReactionToJSON(requestParameters['data']), + }, initOverrides); + + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * React to a message + * Send a reaction. + */ + async v1ReactionsNumberPost(requestParameters: V1ReactionsNumberPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1ReactionsNumberPostRaw(requestParameters, initOverrides); + return await response.value(); + } + +} diff --git a/packages/signal-api/apis/ReceiptsApi.ts b/packages/signal-api/apis/ReceiptsApi.ts new file mode 100644 index 0000000..1109525 --- /dev/null +++ b/packages/signal-api/apis/ReceiptsApi.ts @@ -0,0 +1,79 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime'; +import type { + ApiError, + ApiReceipt, +} from '../models/index'; +import { + ApiErrorFromJSON, + ApiErrorToJSON, + ApiReceiptFromJSON, + ApiReceiptToJSON, +} from '../models/index'; + +export interface V1ReceiptsNumberPostRequest { + data: ApiReceipt; +} + +/** + * + */ +export class ReceiptsApi extends runtime.BaseAPI { + + /** + * Send a read or viewed receipt + * Send a receipt. + */ + async v1ReceiptsNumberPostRaw(requestParameters: V1ReceiptsNumberPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['data'] == null) { + throw new runtime.RequiredError( + 'data', + 'Required parameter "data" was null or undefined when calling v1ReceiptsNumberPost().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/receipts/{number}`, + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: ApiReceiptToJSON(requestParameters['data']), + }, initOverrides); + + if (this.isJsonMime(response.headers.get('content-type'))) { + return new runtime.JSONApiResponse(response); + } else { + return new runtime.TextApiResponse(response) as any; + } + } + + /** + * Send a read or viewed receipt + * Send a receipt. + */ + async v1ReceiptsNumberPost(requestParameters: V1ReceiptsNumberPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + const response = await this.v1ReceiptsNumberPostRaw(requestParameters, initOverrides); + return await response.value(); + } + +} diff --git a/packages/signal-api/apis/SearchApi.ts b/packages/signal-api/apis/SearchApi.ts new file mode 100644 index 0000000..65be862 --- /dev/null +++ b/packages/signal-api/apis/SearchApi.ts @@ -0,0 +1,84 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime'; +import type { + ApiError, + ApiSearchResponse, +} from '../models/index'; +import { + ApiErrorFromJSON, + ApiErrorToJSON, + ApiSearchResponseFromJSON, + ApiSearchResponseToJSON, +} from '../models/index'; + +export interface V1SearchGetRequest { + number: string; + numbers: Array; +} + +/** + * + */ +export class SearchApi extends runtime.BaseAPI { + + /** + * Check if one or more phone numbers are registered with the Signal Service. + * Check if one or more phone numbers are registered with the Signal Service. + */ + async v1SearchGetRaw(requestParameters: V1SearchGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1SearchGet().' + ); + } + + if (requestParameters['numbers'] == null) { + throw new runtime.RequiredError( + 'numbers', + 'Required parameter "numbers" was null or undefined when calling v1SearchGet().' + ); + } + + const queryParameters: any = {}; + + if (requestParameters['numbers'] != null) { + queryParameters['numbers'] = requestParameters['numbers']; + } + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/v1/search`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ApiSearchResponseFromJSON)); + } + + /** + * Check if one or more phone numbers are registered with the Signal Service. + * Check if one or more phone numbers are registered with the Signal Service. + */ + async v1SearchGet(requestParameters: V1SearchGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + const response = await this.v1SearchGetRaw(requestParameters, initOverrides); + return await response.value(); + } + +} diff --git a/packages/signal-api/apis/StickerPacksApi.ts b/packages/signal-api/apis/StickerPacksApi.ts new file mode 100644 index 0000000..531258f --- /dev/null +++ b/packages/signal-api/apis/StickerPacksApi.ts @@ -0,0 +1,131 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +import * as runtime from '../runtime'; +import type { + ApiAddStickerPackRequest, + ApiError, + ClientListInstalledStickerPacksResponse, +} from '../models/index'; +import { + ApiAddStickerPackRequestFromJSON, + ApiAddStickerPackRequestToJSON, + ApiErrorFromJSON, + ApiErrorToJSON, + ClientListInstalledStickerPacksResponseFromJSON, + ClientListInstalledStickerPacksResponseToJSON, +} from '../models/index'; + +export interface V1StickerPacksNumberGetRequest { + number: string; +} + +export interface V1StickerPacksNumberPostRequest { + number: string; + data: ApiAddStickerPackRequest; +} + +/** + * + */ +export class StickerPacksApi extends runtime.BaseAPI { + + /** + * List Installed Sticker Packs. + * List Installed Sticker Packs. + */ + async v1StickerPacksNumberGetRaw(requestParameters: V1StickerPacksNumberGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise>> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1StickerPacksNumberGet().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + const response = await this.request({ + path: `/v1/sticker-packs/{number}`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))), + method: 'GET', + headers: headerParameters, + query: queryParameters, + }, initOverrides); + + return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(ClientListInstalledStickerPacksResponseFromJSON)); + } + + /** + * List Installed Sticker Packs. + * List Installed Sticker Packs. + */ + async v1StickerPacksNumberGet(requestParameters: V1StickerPacksNumberGetRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise | null | undefined > { + const response = await this.v1StickerPacksNumberGetRaw(requestParameters, initOverrides); + switch (response.raw.status) { + case 200: + return await response.value(); + case 204: + return null; + default: + return await response.value(); + } + } + + /** + * In order to add a sticker pack, browse to https://signalstickers.org/ and select the sticker pack you want to add. Then, press the \"Add to Signal\" button. If you look at the address bar in your browser you should see an URL in this format: https://signal.art/addstickers/#pack_id=XXX&pack_key=YYY, where XXX is the pack_id and YYY is the pack_key. + * Add Sticker Pack. + */ + async v1StickerPacksNumberPostRaw(requestParameters: V1StickerPacksNumberPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise> { + if (requestParameters['number'] == null) { + throw new runtime.RequiredError( + 'number', + 'Required parameter "number" was null or undefined when calling v1StickerPacksNumberPost().' + ); + } + + if (requestParameters['data'] == null) { + throw new runtime.RequiredError( + 'data', + 'Required parameter "data" was null or undefined when calling v1StickerPacksNumberPost().' + ); + } + + const queryParameters: any = {}; + + const headerParameters: runtime.HTTPHeaders = {}; + + headerParameters['Content-Type'] = 'application/json'; + + const response = await this.request({ + path: `/v1/sticker-packs/{number}`.replace(`{${"number"}}`, encodeURIComponent(String(requestParameters['number']))), + method: 'POST', + headers: headerParameters, + query: queryParameters, + body: ApiAddStickerPackRequestToJSON(requestParameters['data']), + }, initOverrides); + + return new runtime.VoidApiResponse(response); + } + + /** + * In order to add a sticker pack, browse to https://signalstickers.org/ and select the sticker pack you want to add. Then, press the \"Add to Signal\" button. If you look at the address bar in your browser you should see an URL in this format: https://signal.art/addstickers/#pack_id=XXX&pack_key=YYY, where XXX is the pack_id and YYY is the pack_key. + * Add Sticker Pack. + */ + async v1StickerPacksNumberPost(requestParameters: V1StickerPacksNumberPostRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise { + await this.v1StickerPacksNumberPostRaw(requestParameters, initOverrides); + } + +} diff --git a/packages/signal-api/apis/index.ts b/packages/signal-api/apis/index.ts new file mode 100644 index 0000000..5db1c5c --- /dev/null +++ b/packages/signal-api/apis/index.ts @@ -0,0 +1,15 @@ +/* tslint:disable */ +/* eslint-disable */ +export * from './AccountsApi'; +export * from './AttachmentsApi'; +export * from './ContactsApi'; +export * from './DevicesApi'; +export * from './GeneralApi'; +export * from './GroupsApi'; +export * from './IdentitiesApi'; +export * from './MessagesApi'; +export * from './ProfilesApi'; +export * from './ReactionsApi'; +export * from './ReceiptsApi'; +export * from './SearchApi'; +export * from './StickerPacksApi'; diff --git a/packages/signal-api/index.ts b/packages/signal-api/index.ts new file mode 100644 index 0000000..bebe8bb --- /dev/null +++ b/packages/signal-api/index.ts @@ -0,0 +1,5 @@ +/* tslint:disable */ +/* eslint-disable */ +export * from './runtime'; +export * from './apis/index'; +export * from './models/index'; diff --git a/packages/signal-api/models/ApiAddDeviceRequest.ts b/packages/signal-api/models/ApiAddDeviceRequest.ts new file mode 100644 index 0000000..6f2bd22 --- /dev/null +++ b/packages/signal-api/models/ApiAddDeviceRequest.ts @@ -0,0 +1,60 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiAddDeviceRequest + */ +export interface ApiAddDeviceRequest { + /** + * + * @type {string} + * @memberof ApiAddDeviceRequest + */ + uri?: string; +} + +/** + * Check if a given object implements the ApiAddDeviceRequest interface. + */ +export function instanceOfApiAddDeviceRequest(value: object): value is ApiAddDeviceRequest { + return true; +} + +export function ApiAddDeviceRequestFromJSON(json: any): ApiAddDeviceRequest { + return ApiAddDeviceRequestFromJSONTyped(json, false); +} + +export function ApiAddDeviceRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAddDeviceRequest { + if (json == null) { + return json; + } + return { + + 'uri': json['uri'] == null ? undefined : json['uri'], + }; +} + +export function ApiAddDeviceRequestToJSON(value?: ApiAddDeviceRequest | null): any { + if (value == null) { + return value; + } + return { + + 'uri': value['uri'], + }; +} + diff --git a/packages/signal-api/models/ApiAddStickerPackRequest.ts b/packages/signal-api/models/ApiAddStickerPackRequest.ts new file mode 100644 index 0000000..eb1ea7f --- /dev/null +++ b/packages/signal-api/models/ApiAddStickerPackRequest.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiAddStickerPackRequest + */ +export interface ApiAddStickerPackRequest { + /** + * + * @type {string} + * @memberof ApiAddStickerPackRequest + */ + packId?: string; + /** + * + * @type {string} + * @memberof ApiAddStickerPackRequest + */ + packKey?: string; +} + +/** + * Check if a given object implements the ApiAddStickerPackRequest interface. + */ +export function instanceOfApiAddStickerPackRequest(value: object): value is ApiAddStickerPackRequest { + return true; +} + +export function ApiAddStickerPackRequestFromJSON(json: any): ApiAddStickerPackRequest { + return ApiAddStickerPackRequestFromJSONTyped(json, false); +} + +export function ApiAddStickerPackRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiAddStickerPackRequest { + if (json == null) { + return json; + } + return { + + 'packId': json['pack_id'] == null ? undefined : json['pack_id'], + 'packKey': json['pack_key'] == null ? undefined : json['pack_key'], + }; +} + +export function ApiAddStickerPackRequestToJSON(value?: ApiAddStickerPackRequest | null): any { + if (value == null) { + return value; + } + return { + + 'pack_id': value['packId'], + 'pack_key': value['packKey'], + }; +} + diff --git a/packages/signal-api/models/ApiChangeGroupAdminsRequest.ts b/packages/signal-api/models/ApiChangeGroupAdminsRequest.ts new file mode 100644 index 0000000..450e521 --- /dev/null +++ b/packages/signal-api/models/ApiChangeGroupAdminsRequest.ts @@ -0,0 +1,60 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiChangeGroupAdminsRequest + */ +export interface ApiChangeGroupAdminsRequest { + /** + * + * @type {Array} + * @memberof ApiChangeGroupAdminsRequest + */ + admins?: Array; +} + +/** + * Check if a given object implements the ApiChangeGroupAdminsRequest interface. + */ +export function instanceOfApiChangeGroupAdminsRequest(value: object): value is ApiChangeGroupAdminsRequest { + return true; +} + +export function ApiChangeGroupAdminsRequestFromJSON(json: any): ApiChangeGroupAdminsRequest { + return ApiChangeGroupAdminsRequestFromJSONTyped(json, false); +} + +export function ApiChangeGroupAdminsRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiChangeGroupAdminsRequest { + if (json == null) { + return json; + } + return { + + 'admins': json['admins'] == null ? undefined : json['admins'], + }; +} + +export function ApiChangeGroupAdminsRequestToJSON(value?: ApiChangeGroupAdminsRequest | null): any { + if (value == null) { + return value; + } + return { + + 'admins': value['admins'], + }; +} + diff --git a/packages/signal-api/models/ApiChangeGroupMembersRequest.ts b/packages/signal-api/models/ApiChangeGroupMembersRequest.ts new file mode 100644 index 0000000..51438c0 --- /dev/null +++ b/packages/signal-api/models/ApiChangeGroupMembersRequest.ts @@ -0,0 +1,60 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiChangeGroupMembersRequest + */ +export interface ApiChangeGroupMembersRequest { + /** + * + * @type {Array} + * @memberof ApiChangeGroupMembersRequest + */ + members?: Array; +} + +/** + * Check if a given object implements the ApiChangeGroupMembersRequest interface. + */ +export function instanceOfApiChangeGroupMembersRequest(value: object): value is ApiChangeGroupMembersRequest { + return true; +} + +export function ApiChangeGroupMembersRequestFromJSON(json: any): ApiChangeGroupMembersRequest { + return ApiChangeGroupMembersRequestFromJSONTyped(json, false); +} + +export function ApiChangeGroupMembersRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiChangeGroupMembersRequest { + if (json == null) { + return json; + } + return { + + 'members': json['members'] == null ? undefined : json['members'], + }; +} + +export function ApiChangeGroupMembersRequestToJSON(value?: ApiChangeGroupMembersRequest | null): any { + if (value == null) { + return value; + } + return { + + 'members': value['members'], + }; +} + diff --git a/packages/signal-api/models/ApiConfiguration.ts b/packages/signal-api/models/ApiConfiguration.ts new file mode 100644 index 0000000..39b3912 --- /dev/null +++ b/packages/signal-api/models/ApiConfiguration.ts @@ -0,0 +1,67 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { ApiLoggingConfiguration } from './ApiLoggingConfiguration'; +import { + ApiLoggingConfigurationFromJSON, + ApiLoggingConfigurationFromJSONTyped, + ApiLoggingConfigurationToJSON, +} from './ApiLoggingConfiguration'; + +/** + * + * @export + * @interface ApiConfiguration + */ +export interface ApiConfiguration { + /** + * + * @type {ApiLoggingConfiguration} + * @memberof ApiConfiguration + */ + logging?: ApiLoggingConfiguration; +} + +/** + * Check if a given object implements the ApiConfiguration interface. + */ +export function instanceOfApiConfiguration(value: object): value is ApiConfiguration { + return true; +} + +export function ApiConfigurationFromJSON(json: any): ApiConfiguration { + return ApiConfigurationFromJSONTyped(json, false); +} + +export function ApiConfigurationFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiConfiguration { + if (json == null) { + return json; + } + return { + + 'logging': json['logging'] == null ? undefined : ApiLoggingConfigurationFromJSON(json['logging']), + }; +} + +export function ApiConfigurationToJSON(value?: ApiConfiguration | null): any { + if (value == null) { + return value; + } + return { + + 'logging': ApiLoggingConfigurationToJSON(value['logging']), + }; +} + diff --git a/packages/signal-api/models/ApiCreateGroupRequest.ts b/packages/signal-api/models/ApiCreateGroupRequest.ts new file mode 100644 index 0000000..c62ed92 --- /dev/null +++ b/packages/signal-api/models/ApiCreateGroupRequest.ts @@ -0,0 +1,111 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +import type { ApiGroupPermissions } from './ApiGroupPermissions'; +import { + ApiGroupPermissionsFromJSON, + ApiGroupPermissionsFromJSONTyped, + ApiGroupPermissionsToJSON, +} from './ApiGroupPermissions'; + +/** + * + * @export + * @interface ApiCreateGroupRequest + */ +export interface ApiCreateGroupRequest { + /** + * + * @type {string} + * @memberof ApiCreateGroupRequest + */ + description?: string; + /** + * + * @type {string} + * @memberof ApiCreateGroupRequest + */ + groupLink?: ApiCreateGroupRequestGroupLinkEnum; + /** + * + * @type {Array} + * @memberof ApiCreateGroupRequest + */ + members?: Array; + /** + * + * @type {string} + * @memberof ApiCreateGroupRequest + */ + name?: string; + /** + * + * @type {ApiGroupPermissions} + * @memberof ApiCreateGroupRequest + */ + permissions?: ApiGroupPermissions; +} + + +/** + * @export + */ +export const ApiCreateGroupRequestGroupLinkEnum = { + Disabled: 'disabled', + Enabled: 'enabled', + EnabledWithApproval: 'enabled-with-approval' +} as const; +export type ApiCreateGroupRequestGroupLinkEnum = typeof ApiCreateGroupRequestGroupLinkEnum[keyof typeof ApiCreateGroupRequestGroupLinkEnum]; + + +/** + * Check if a given object implements the ApiCreateGroupRequest interface. + */ +export function instanceOfApiCreateGroupRequest(value: object): value is ApiCreateGroupRequest { + return true; +} + +export function ApiCreateGroupRequestFromJSON(json: any): ApiCreateGroupRequest { + return ApiCreateGroupRequestFromJSONTyped(json, false); +} + +export function ApiCreateGroupRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiCreateGroupRequest { + if (json == null) { + return json; + } + return { + + 'description': json['description'] == null ? undefined : json['description'], + 'groupLink': json['group_link'] == null ? undefined : json['group_link'], + 'members': json['members'] == null ? undefined : json['members'], + 'name': json['name'] == null ? undefined : json['name'], + 'permissions': json['permissions'] == null ? undefined : ApiGroupPermissionsFromJSON(json['permissions']), + }; +} + +export function ApiCreateGroupRequestToJSON(value?: ApiCreateGroupRequest | null): any { + if (value == null) { + return value; + } + return { + + 'description': value['description'], + 'group_link': value['groupLink'], + 'members': value['members'], + 'name': value['name'], + 'permissions': ApiGroupPermissionsToJSON(value['permissions']), + }; +} + diff --git a/packages/signal-api/models/ApiCreateGroupResponse.ts b/packages/signal-api/models/ApiCreateGroupResponse.ts new file mode 100644 index 0000000..de749e6 --- /dev/null +++ b/packages/signal-api/models/ApiCreateGroupResponse.ts @@ -0,0 +1,60 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiCreateGroupResponse + */ +export interface ApiCreateGroupResponse { + /** + * + * @type {string} + * @memberof ApiCreateGroupResponse + */ + id?: string; +} + +/** + * Check if a given object implements the ApiCreateGroupResponse interface. + */ +export function instanceOfApiCreateGroupResponse(value: object): value is ApiCreateGroupResponse { + return true; +} + +export function ApiCreateGroupResponseFromJSON(json: any): ApiCreateGroupResponse { + return ApiCreateGroupResponseFromJSONTyped(json, false); +} + +export function ApiCreateGroupResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiCreateGroupResponse { + if (json == null) { + return json; + } + return { + + 'id': json['id'] == null ? undefined : json['id'], + }; +} + +export function ApiCreateGroupResponseToJSON(value?: ApiCreateGroupResponse | null): any { + if (value == null) { + return value; + } + return { + + 'id': value['id'], + }; +} + diff --git a/packages/signal-api/models/ApiError.ts b/packages/signal-api/models/ApiError.ts new file mode 100644 index 0000000..4cd44e8 --- /dev/null +++ b/packages/signal-api/models/ApiError.ts @@ -0,0 +1,60 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiError + */ +export interface ApiError { + /** + * + * @type {string} + * @memberof ApiError + */ + error?: string; +} + +/** + * Check if a given object implements the ApiError interface. + */ +export function instanceOfApiError(value: object): value is ApiError { + return true; +} + +export function ApiErrorFromJSON(json: any): ApiError { + return ApiErrorFromJSONTyped(json, false); +} + +export function ApiErrorFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiError { + if (json == null) { + return json; + } + return { + + 'error': json['error'] == null ? undefined : json['error'], + }; +} + +export function ApiErrorToJSON(value?: ApiError | null): any { + if (value == null) { + return value; + } + return { + + 'error': value['error'], + }; +} + diff --git a/packages/signal-api/models/ApiGroupPermissions.ts b/packages/signal-api/models/ApiGroupPermissions.ts new file mode 100644 index 0000000..adf88a0 --- /dev/null +++ b/packages/signal-api/models/ApiGroupPermissions.ts @@ -0,0 +1,88 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiGroupPermissions + */ +export interface ApiGroupPermissions { + /** + * + * @type {string} + * @memberof ApiGroupPermissions + */ + addMembers?: ApiGroupPermissionsAddMembersEnum; + /** + * + * @type {string} + * @memberof ApiGroupPermissions + */ + editGroup?: ApiGroupPermissionsEditGroupEnum; +} + + +/** + * @export + */ +export const ApiGroupPermissionsAddMembersEnum = { + OnlyAdmins: 'only-admins', + EveryMember: 'every-member' +} as const; +export type ApiGroupPermissionsAddMembersEnum = typeof ApiGroupPermissionsAddMembersEnum[keyof typeof ApiGroupPermissionsAddMembersEnum]; + +/** + * @export + */ +export const ApiGroupPermissionsEditGroupEnum = { + OnlyAdmins: 'only-admins', + EveryMember: 'every-member' +} as const; +export type ApiGroupPermissionsEditGroupEnum = typeof ApiGroupPermissionsEditGroupEnum[keyof typeof ApiGroupPermissionsEditGroupEnum]; + + +/** + * Check if a given object implements the ApiGroupPermissions interface. + */ +export function instanceOfApiGroupPermissions(value: object): value is ApiGroupPermissions { + return true; +} + +export function ApiGroupPermissionsFromJSON(json: any): ApiGroupPermissions { + return ApiGroupPermissionsFromJSONTyped(json, false); +} + +export function ApiGroupPermissionsFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiGroupPermissions { + if (json == null) { + return json; + } + return { + + 'addMembers': json['add_members'] == null ? undefined : json['add_members'], + 'editGroup': json['edit_group'] == null ? undefined : json['edit_group'], + }; +} + +export function ApiGroupPermissionsToJSON(value?: ApiGroupPermissions | null): any { + if (value == null) { + return value; + } + return { + + 'add_members': value['addMembers'], + 'edit_group': value['editGroup'], + }; +} + diff --git a/packages/signal-api/models/ApiLoggingConfiguration.ts b/packages/signal-api/models/ApiLoggingConfiguration.ts new file mode 100644 index 0000000..75deb7d --- /dev/null +++ b/packages/signal-api/models/ApiLoggingConfiguration.ts @@ -0,0 +1,60 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiLoggingConfiguration + */ +export interface ApiLoggingConfiguration { + /** + * + * @type {string} + * @memberof ApiLoggingConfiguration + */ + level?: string; +} + +/** + * Check if a given object implements the ApiLoggingConfiguration interface. + */ +export function instanceOfApiLoggingConfiguration(value: object): value is ApiLoggingConfiguration { + return true; +} + +export function ApiLoggingConfigurationFromJSON(json: any): ApiLoggingConfiguration { + return ApiLoggingConfigurationFromJSONTyped(json, false); +} + +export function ApiLoggingConfigurationFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiLoggingConfiguration { + if (json == null) { + return json; + } + return { + + 'level': json['Level'] == null ? undefined : json['Level'], + }; +} + +export function ApiLoggingConfigurationToJSON(value?: ApiLoggingConfiguration | null): any { + if (value == null) { + return value; + } + return { + + 'Level': value['level'], + }; +} + diff --git a/packages/signal-api/models/ApiRateLimitChallengeRequest.ts b/packages/signal-api/models/ApiRateLimitChallengeRequest.ts new file mode 100644 index 0000000..d14d758 --- /dev/null +++ b/packages/signal-api/models/ApiRateLimitChallengeRequest.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiRateLimitChallengeRequest + */ +export interface ApiRateLimitChallengeRequest { + /** + * + * @type {string} + * @memberof ApiRateLimitChallengeRequest + */ + captcha?: string; + /** + * + * @type {string} + * @memberof ApiRateLimitChallengeRequest + */ + challengeToken?: string; +} + +/** + * Check if a given object implements the ApiRateLimitChallengeRequest interface. + */ +export function instanceOfApiRateLimitChallengeRequest(value: object): value is ApiRateLimitChallengeRequest { + return true; +} + +export function ApiRateLimitChallengeRequestFromJSON(json: any): ApiRateLimitChallengeRequest { + return ApiRateLimitChallengeRequestFromJSONTyped(json, false); +} + +export function ApiRateLimitChallengeRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiRateLimitChallengeRequest { + if (json == null) { + return json; + } + return { + + 'captcha': json['captcha'] == null ? undefined : json['captcha'], + 'challengeToken': json['challenge_token'] == null ? undefined : json['challenge_token'], + }; +} + +export function ApiRateLimitChallengeRequestToJSON(value?: ApiRateLimitChallengeRequest | null): any { + if (value == null) { + return value; + } + return { + + 'captcha': value['captcha'], + 'challenge_token': value['challengeToken'], + }; +} + diff --git a/packages/signal-api/models/ApiReaction.ts b/packages/signal-api/models/ApiReaction.ts new file mode 100644 index 0000000..68e37d4 --- /dev/null +++ b/packages/signal-api/models/ApiReaction.ts @@ -0,0 +1,84 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiReaction + */ +export interface ApiReaction { + /** + * + * @type {string} + * @memberof ApiReaction + */ + reaction?: string; + /** + * + * @type {string} + * @memberof ApiReaction + */ + recipient?: string; + /** + * + * @type {string} + * @memberof ApiReaction + */ + targetAuthor?: string; + /** + * + * @type {number} + * @memberof ApiReaction + */ + timestamp?: number; +} + +/** + * Check if a given object implements the ApiReaction interface. + */ +export function instanceOfApiReaction(value: object): value is ApiReaction { + return true; +} + +export function ApiReactionFromJSON(json: any): ApiReaction { + return ApiReactionFromJSONTyped(json, false); +} + +export function ApiReactionFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiReaction { + if (json == null) { + return json; + } + return { + + 'reaction': json['reaction'] == null ? undefined : json['reaction'], + 'recipient': json['recipient'] == null ? undefined : json['recipient'], + 'targetAuthor': json['target_author'] == null ? undefined : json['target_author'], + 'timestamp': json['timestamp'] == null ? undefined : json['timestamp'], + }; +} + +export function ApiReactionToJSON(value?: ApiReaction | null): any { + if (value == null) { + return value; + } + return { + + 'reaction': value['reaction'], + 'recipient': value['recipient'], + 'target_author': value['targetAuthor'], + 'timestamp': value['timestamp'], + }; +} + diff --git a/packages/signal-api/models/ApiReceipt.ts b/packages/signal-api/models/ApiReceipt.ts new file mode 100644 index 0000000..3c6493c --- /dev/null +++ b/packages/signal-api/models/ApiReceipt.ts @@ -0,0 +1,87 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiReceipt + */ +export interface ApiReceipt { + /** + * + * @type {string} + * @memberof ApiReceipt + */ + receiptType?: ApiReceiptReceiptTypeEnum; + /** + * + * @type {string} + * @memberof ApiReceipt + */ + recipient?: string; + /** + * + * @type {number} + * @memberof ApiReceipt + */ + timestamp?: number; +} + + +/** + * @export + */ +export const ApiReceiptReceiptTypeEnum = { + Read: 'read', + Viewed: 'viewed' +} as const; +export type ApiReceiptReceiptTypeEnum = typeof ApiReceiptReceiptTypeEnum[keyof typeof ApiReceiptReceiptTypeEnum]; + + +/** + * Check if a given object implements the ApiReceipt interface. + */ +export function instanceOfApiReceipt(value: object): value is ApiReceipt { + return true; +} + +export function ApiReceiptFromJSON(json: any): ApiReceipt { + return ApiReceiptFromJSONTyped(json, false); +} + +export function ApiReceiptFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiReceipt { + if (json == null) { + return json; + } + return { + + 'receiptType': json['receipt_type'] == null ? undefined : json['receipt_type'], + 'recipient': json['recipient'] == null ? undefined : json['recipient'], + 'timestamp': json['timestamp'] == null ? undefined : json['timestamp'], + }; +} + +export function ApiReceiptToJSON(value?: ApiReceipt | null): any { + if (value == null) { + return value; + } + return { + + 'receipt_type': value['receiptType'], + 'recipient': value['recipient'], + 'timestamp': value['timestamp'], + }; +} + diff --git a/packages/signal-api/models/ApiRegisterNumberRequest.ts b/packages/signal-api/models/ApiRegisterNumberRequest.ts new file mode 100644 index 0000000..251bfe0 --- /dev/null +++ b/packages/signal-api/models/ApiRegisterNumberRequest.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiRegisterNumberRequest + */ +export interface ApiRegisterNumberRequest { + /** + * + * @type {string} + * @memberof ApiRegisterNumberRequest + */ + captcha?: string; + /** + * + * @type {boolean} + * @memberof ApiRegisterNumberRequest + */ + useVoice?: boolean; +} + +/** + * Check if a given object implements the ApiRegisterNumberRequest interface. + */ +export function instanceOfApiRegisterNumberRequest(value: object): value is ApiRegisterNumberRequest { + return true; +} + +export function ApiRegisterNumberRequestFromJSON(json: any): ApiRegisterNumberRequest { + return ApiRegisterNumberRequestFromJSONTyped(json, false); +} + +export function ApiRegisterNumberRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiRegisterNumberRequest { + if (json == null) { + return json; + } + return { + + 'captcha': json['captcha'] == null ? undefined : json['captcha'], + 'useVoice': json['use_voice'] == null ? undefined : json['use_voice'], + }; +} + +export function ApiRegisterNumberRequestToJSON(value?: ApiRegisterNumberRequest | null): any { + if (value == null) { + return value; + } + return { + + 'captcha': value['captcha'], + 'use_voice': value['useVoice'], + }; +} + diff --git a/packages/signal-api/models/ApiSearchResponse.ts b/packages/signal-api/models/ApiSearchResponse.ts new file mode 100644 index 0000000..78e3a46 --- /dev/null +++ b/packages/signal-api/models/ApiSearchResponse.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiSearchResponse + */ +export interface ApiSearchResponse { + /** + * + * @type {string} + * @memberof ApiSearchResponse + */ + number?: string; + /** + * + * @type {boolean} + * @memberof ApiSearchResponse + */ + registered?: boolean; +} + +/** + * Check if a given object implements the ApiSearchResponse interface. + */ +export function instanceOfApiSearchResponse(value: object): value is ApiSearchResponse { + return true; +} + +export function ApiSearchResponseFromJSON(json: any): ApiSearchResponse { + return ApiSearchResponseFromJSONTyped(json, false); +} + +export function ApiSearchResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiSearchResponse { + if (json == null) { + return json; + } + return { + + 'number': json['number'] == null ? undefined : json['number'], + 'registered': json['registered'] == null ? undefined : json['registered'], + }; +} + +export function ApiSearchResponseToJSON(value?: ApiSearchResponse | null): any { + if (value == null) { + return value; + } + return { + + 'number': value['number'], + 'registered': value['registered'], + }; +} + diff --git a/packages/signal-api/models/ApiSendMessageError.ts b/packages/signal-api/models/ApiSendMessageError.ts new file mode 100644 index 0000000..1926948 --- /dev/null +++ b/packages/signal-api/models/ApiSendMessageError.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiSendMessageError + */ +export interface ApiSendMessageError { + /** + * + * @type {Array} + * @memberof ApiSendMessageError + */ + challengeTokens?: Array; + /** + * + * @type {string} + * @memberof ApiSendMessageError + */ + error?: string; +} + +/** + * Check if a given object implements the ApiSendMessageError interface. + */ +export function instanceOfApiSendMessageError(value: object): value is ApiSendMessageError { + return true; +} + +export function ApiSendMessageErrorFromJSON(json: any): ApiSendMessageError { + return ApiSendMessageErrorFromJSONTyped(json, false); +} + +export function ApiSendMessageErrorFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiSendMessageError { + if (json == null) { + return json; + } + return { + + 'challengeTokens': json['challenge_tokens'] == null ? undefined : json['challenge_tokens'], + 'error': json['error'] == null ? undefined : json['error'], + }; +} + +export function ApiSendMessageErrorToJSON(value?: ApiSendMessageError | null): any { + if (value == null) { + return value; + } + return { + + 'challenge_tokens': value['challengeTokens'], + 'error': value['error'], + }; +} + diff --git a/packages/signal-api/models/ApiSendMessageResponse.ts b/packages/signal-api/models/ApiSendMessageResponse.ts new file mode 100644 index 0000000..c03a019 --- /dev/null +++ b/packages/signal-api/models/ApiSendMessageResponse.ts @@ -0,0 +1,60 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiSendMessageResponse + */ +export interface ApiSendMessageResponse { + /** + * + * @type {string} + * @memberof ApiSendMessageResponse + */ + timestamp?: string; +} + +/** + * Check if a given object implements the ApiSendMessageResponse interface. + */ +export function instanceOfApiSendMessageResponse(value: object): value is ApiSendMessageResponse { + return true; +} + +export function ApiSendMessageResponseFromJSON(json: any): ApiSendMessageResponse { + return ApiSendMessageResponseFromJSONTyped(json, false); +} + +export function ApiSendMessageResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiSendMessageResponse { + if (json == null) { + return json; + } + return { + + 'timestamp': json['timestamp'] == null ? undefined : json['timestamp'], + }; +} + +export function ApiSendMessageResponseToJSON(value?: ApiSendMessageResponse | null): any { + if (value == null) { + return value; + } + return { + + 'timestamp': value['timestamp'], + }; +} + diff --git a/packages/signal-api/models/ApiSendMessageV1.ts b/packages/signal-api/models/ApiSendMessageV1.ts new file mode 100644 index 0000000..5959816 --- /dev/null +++ b/packages/signal-api/models/ApiSendMessageV1.ts @@ -0,0 +1,92 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiSendMessageV1 + */ +export interface ApiSendMessageV1 { + /** + * + * @type {string} + * @memberof ApiSendMessageV1 + */ + base64Attachment?: string; + /** + * + * @type {boolean} + * @memberof ApiSendMessageV1 + */ + isGroup?: boolean; + /** + * + * @type {string} + * @memberof ApiSendMessageV1 + */ + message?: string; + /** + * + * @type {string} + * @memberof ApiSendMessageV1 + */ + number?: string; + /** + * + * @type {Array} + * @memberof ApiSendMessageV1 + */ + recipients?: Array; +} + +/** + * Check if a given object implements the ApiSendMessageV1 interface. + */ +export function instanceOfApiSendMessageV1(value: object): value is ApiSendMessageV1 { + return true; +} + +export function ApiSendMessageV1FromJSON(json: any): ApiSendMessageV1 { + return ApiSendMessageV1FromJSONTyped(json, false); +} + +export function ApiSendMessageV1FromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiSendMessageV1 { + if (json == null) { + return json; + } + return { + + 'base64Attachment': json['base64_attachment'] == null ? undefined : json['base64_attachment'], + 'isGroup': json['is_group'] == null ? undefined : json['is_group'], + 'message': json['message'] == null ? undefined : json['message'], + 'number': json['number'] == null ? undefined : json['number'], + 'recipients': json['recipients'] == null ? undefined : json['recipients'], + }; +} + +export function ApiSendMessageV1ToJSON(value?: ApiSendMessageV1 | null): any { + if (value == null) { + return value; + } + return { + + 'base64_attachment': value['base64Attachment'], + 'is_group': value['isGroup'], + 'message': value['message'], + 'number': value['number'], + 'recipients': value['recipients'], + }; +} + diff --git a/packages/signal-api/models/ApiSendMessageV2.ts b/packages/signal-api/models/ApiSendMessageV2.ts new file mode 100644 index 0000000..4cea8ed --- /dev/null +++ b/packages/signal-api/models/ApiSendMessageV2.ts @@ -0,0 +1,159 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiSendMessageV2 + */ +export interface ApiSendMessageV2 { + /** + * + * @type {Array} + * @memberof ApiSendMessageV2 + */ + base64Attachments?: Array; + /** + * + * @type {number} + * @memberof ApiSendMessageV2 + */ + editTimestamp?: number; + /** + * + * @type {string} + * @memberof ApiSendMessageV2 + */ + mentions?: string; + /** + * + * @type {string} + * @memberof ApiSendMessageV2 + */ + message?: string; + /** + * + * @type {string} + * @memberof ApiSendMessageV2 + */ + number?: string; + /** + * + * @type {string} + * @memberof ApiSendMessageV2 + */ + quoteAuthor?: string; + /** + * + * @type {string} + * @memberof ApiSendMessageV2 + */ + quoteMentions?: string; + /** + * + * @type {string} + * @memberof ApiSendMessageV2 + */ + quoteMessage?: string; + /** + * + * @type {number} + * @memberof ApiSendMessageV2 + */ + quoteTimestamp?: number; + /** + * + * @type {Array} + * @memberof ApiSendMessageV2 + */ + recipients?: Array; + /** + * + * @type {string} + * @memberof ApiSendMessageV2 + */ + sticker?: string; + /** + * + * @type {string} + * @memberof ApiSendMessageV2 + */ + textMode?: ApiSendMessageV2TextModeEnum; +} + + +/** + * @export + */ +export const ApiSendMessageV2TextModeEnum = { + Normal: 'normal', + Styled: 'styled' +} as const; +export type ApiSendMessageV2TextModeEnum = typeof ApiSendMessageV2TextModeEnum[keyof typeof ApiSendMessageV2TextModeEnum]; + + +/** + * Check if a given object implements the ApiSendMessageV2 interface. + */ +export function instanceOfApiSendMessageV2(value: object): value is ApiSendMessageV2 { + return true; +} + +export function ApiSendMessageV2FromJSON(json: any): ApiSendMessageV2 { + return ApiSendMessageV2FromJSONTyped(json, false); +} + +export function ApiSendMessageV2FromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiSendMessageV2 { + if (json == null) { + return json; + } + return { + + 'base64Attachments': json['base64_attachments'] == null ? undefined : json['base64_attachments'], + 'editTimestamp': json['edit_timestamp'] == null ? undefined : json['edit_timestamp'], + 'mentions': json['mentions'] == null ? undefined : json['mentions'], + 'message': json['message'] == null ? undefined : json['message'], + 'number': json['number'] == null ? undefined : json['number'], + 'quoteAuthor': json['quote_author'] == null ? undefined : json['quote_author'], + 'quoteMentions': json['quote_mentions'] == null ? undefined : json['quote_mentions'], + 'quoteMessage': json['quote_message'] == null ? undefined : json['quote_message'], + 'quoteTimestamp': json['quote_timestamp'] == null ? undefined : json['quote_timestamp'], + 'recipients': json['recipients'] == null ? undefined : json['recipients'], + 'sticker': json['sticker'] == null ? undefined : json['sticker'], + 'textMode': json['text_mode'] == null ? undefined : json['text_mode'], + }; +} + +export function ApiSendMessageV2ToJSON(value?: ApiSendMessageV2 | null): any { + if (value == null) { + return value; + } + return { + + 'base64_attachments': value['base64Attachments'], + 'edit_timestamp': value['editTimestamp'], + 'mentions': value['mentions'], + 'message': value['message'], + 'number': value['number'], + 'quote_author': value['quoteAuthor'], + 'quote_mentions': value['quoteMentions'], + 'quote_message': value['quoteMessage'], + 'quote_timestamp': value['quoteTimestamp'], + 'recipients': value['recipients'], + 'sticker': value['sticker'], + 'text_mode': value['textMode'], + }; +} + diff --git a/packages/signal-api/models/ApiSetUsernameRequest.ts b/packages/signal-api/models/ApiSetUsernameRequest.ts new file mode 100644 index 0000000..fceac68 --- /dev/null +++ b/packages/signal-api/models/ApiSetUsernameRequest.ts @@ -0,0 +1,60 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiSetUsernameRequest + */ +export interface ApiSetUsernameRequest { + /** + * + * @type {string} + * @memberof ApiSetUsernameRequest + */ + username?: string; +} + +/** + * Check if a given object implements the ApiSetUsernameRequest interface. + */ +export function instanceOfApiSetUsernameRequest(value: object): value is ApiSetUsernameRequest { + return true; +} + +export function ApiSetUsernameRequestFromJSON(json: any): ApiSetUsernameRequest { + return ApiSetUsernameRequestFromJSONTyped(json, false); +} + +export function ApiSetUsernameRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiSetUsernameRequest { + if (json == null) { + return json; + } + return { + + 'username': json['username'] == null ? undefined : json['username'], + }; +} + +export function ApiSetUsernameRequestToJSON(value?: ApiSetUsernameRequest | null): any { + if (value == null) { + return value; + } + return { + + 'username': value['username'], + }; +} + diff --git a/packages/signal-api/models/ApiTrustIdentityRequest.ts b/packages/signal-api/models/ApiTrustIdentityRequest.ts new file mode 100644 index 0000000..10bac5f --- /dev/null +++ b/packages/signal-api/models/ApiTrustIdentityRequest.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiTrustIdentityRequest + */ +export interface ApiTrustIdentityRequest { + /** + * + * @type {boolean} + * @memberof ApiTrustIdentityRequest + */ + trustAllKnownKeys?: boolean; + /** + * + * @type {string} + * @memberof ApiTrustIdentityRequest + */ + verifiedSafetyNumber?: string; +} + +/** + * Check if a given object implements the ApiTrustIdentityRequest interface. + */ +export function instanceOfApiTrustIdentityRequest(value: object): value is ApiTrustIdentityRequest { + return true; +} + +export function ApiTrustIdentityRequestFromJSON(json: any): ApiTrustIdentityRequest { + return ApiTrustIdentityRequestFromJSONTyped(json, false); +} + +export function ApiTrustIdentityRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiTrustIdentityRequest { + if (json == null) { + return json; + } + return { + + 'trustAllKnownKeys': json['trust_all_known_keys'] == null ? undefined : json['trust_all_known_keys'], + 'verifiedSafetyNumber': json['verified_safety_number'] == null ? undefined : json['verified_safety_number'], + }; +} + +export function ApiTrustIdentityRequestToJSON(value?: ApiTrustIdentityRequest | null): any { + if (value == null) { + return value; + } + return { + + 'trust_all_known_keys': value['trustAllKnownKeys'], + 'verified_safety_number': value['verifiedSafetyNumber'], + }; +} + diff --git a/packages/signal-api/models/ApiTrustModeRequest.ts b/packages/signal-api/models/ApiTrustModeRequest.ts new file mode 100644 index 0000000..43de2a3 --- /dev/null +++ b/packages/signal-api/models/ApiTrustModeRequest.ts @@ -0,0 +1,60 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiTrustModeRequest + */ +export interface ApiTrustModeRequest { + /** + * + * @type {string} + * @memberof ApiTrustModeRequest + */ + trustMode?: string; +} + +/** + * Check if a given object implements the ApiTrustModeRequest interface. + */ +export function instanceOfApiTrustModeRequest(value: object): value is ApiTrustModeRequest { + return true; +} + +export function ApiTrustModeRequestFromJSON(json: any): ApiTrustModeRequest { + return ApiTrustModeRequestFromJSONTyped(json, false); +} + +export function ApiTrustModeRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiTrustModeRequest { + if (json == null) { + return json; + } + return { + + 'trustMode': json['trust_mode'] == null ? undefined : json['trust_mode'], + }; +} + +export function ApiTrustModeRequestToJSON(value?: ApiTrustModeRequest | null): any { + if (value == null) { + return value; + } + return { + + 'trust_mode': value['trustMode'], + }; +} + diff --git a/packages/signal-api/models/ApiTrustModeResponse.ts b/packages/signal-api/models/ApiTrustModeResponse.ts new file mode 100644 index 0000000..9e92f5b --- /dev/null +++ b/packages/signal-api/models/ApiTrustModeResponse.ts @@ -0,0 +1,60 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiTrustModeResponse + */ +export interface ApiTrustModeResponse { + /** + * + * @type {string} + * @memberof ApiTrustModeResponse + */ + trustMode?: string; +} + +/** + * Check if a given object implements the ApiTrustModeResponse interface. + */ +export function instanceOfApiTrustModeResponse(value: object): value is ApiTrustModeResponse { + return true; +} + +export function ApiTrustModeResponseFromJSON(json: any): ApiTrustModeResponse { + return ApiTrustModeResponseFromJSONTyped(json, false); +} + +export function ApiTrustModeResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiTrustModeResponse { + if (json == null) { + return json; + } + return { + + 'trustMode': json['trust_mode'] == null ? undefined : json['trust_mode'], + }; +} + +export function ApiTrustModeResponseToJSON(value?: ApiTrustModeResponse | null): any { + if (value == null) { + return value; + } + return { + + 'trust_mode': value['trustMode'], + }; +} + diff --git a/packages/signal-api/models/ApiTypingIndicatorRequest.ts b/packages/signal-api/models/ApiTypingIndicatorRequest.ts new file mode 100644 index 0000000..7b0ac16 --- /dev/null +++ b/packages/signal-api/models/ApiTypingIndicatorRequest.ts @@ -0,0 +1,60 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiTypingIndicatorRequest + */ +export interface ApiTypingIndicatorRequest { + /** + * + * @type {string} + * @memberof ApiTypingIndicatorRequest + */ + recipient?: string; +} + +/** + * Check if a given object implements the ApiTypingIndicatorRequest interface. + */ +export function instanceOfApiTypingIndicatorRequest(value: object): value is ApiTypingIndicatorRequest { + return true; +} + +export function ApiTypingIndicatorRequestFromJSON(json: any): ApiTypingIndicatorRequest { + return ApiTypingIndicatorRequestFromJSONTyped(json, false); +} + +export function ApiTypingIndicatorRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiTypingIndicatorRequest { + if (json == null) { + return json; + } + return { + + 'recipient': json['recipient'] == null ? undefined : json['recipient'], + }; +} + +export function ApiTypingIndicatorRequestToJSON(value?: ApiTypingIndicatorRequest | null): any { + if (value == null) { + return value; + } + return { + + 'recipient': value['recipient'], + }; +} + diff --git a/packages/signal-api/models/ApiUnregisterNumberRequest.ts b/packages/signal-api/models/ApiUnregisterNumberRequest.ts new file mode 100644 index 0000000..d119fae --- /dev/null +++ b/packages/signal-api/models/ApiUnregisterNumberRequest.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiUnregisterNumberRequest + */ +export interface ApiUnregisterNumberRequest { + /** + * + * @type {boolean} + * @memberof ApiUnregisterNumberRequest + */ + deleteAccount?: boolean; + /** + * + * @type {boolean} + * @memberof ApiUnregisterNumberRequest + */ + deleteLocalData?: boolean; +} + +/** + * Check if a given object implements the ApiUnregisterNumberRequest interface. + */ +export function instanceOfApiUnregisterNumberRequest(value: object): value is ApiUnregisterNumberRequest { + return true; +} + +export function ApiUnregisterNumberRequestFromJSON(json: any): ApiUnregisterNumberRequest { + return ApiUnregisterNumberRequestFromJSONTyped(json, false); +} + +export function ApiUnregisterNumberRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiUnregisterNumberRequest { + if (json == null) { + return json; + } + return { + + 'deleteAccount': json['delete_account'] == null ? undefined : json['delete_account'], + 'deleteLocalData': json['delete_local_data'] == null ? undefined : json['delete_local_data'], + }; +} + +export function ApiUnregisterNumberRequestToJSON(value?: ApiUnregisterNumberRequest | null): any { + if (value == null) { + return value; + } + return { + + 'delete_account': value['deleteAccount'], + 'delete_local_data': value['deleteLocalData'], + }; +} + diff --git a/packages/signal-api/models/ApiUpdateAccountSettingsRequest.ts b/packages/signal-api/models/ApiUpdateAccountSettingsRequest.ts new file mode 100644 index 0000000..34aeee1 --- /dev/null +++ b/packages/signal-api/models/ApiUpdateAccountSettingsRequest.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiUpdateAccountSettingsRequest + */ +export interface ApiUpdateAccountSettingsRequest { + /** + * + * @type {boolean} + * @memberof ApiUpdateAccountSettingsRequest + */ + discoverableByNumber?: boolean; + /** + * + * @type {boolean} + * @memberof ApiUpdateAccountSettingsRequest + */ + shareNumber?: boolean; +} + +/** + * Check if a given object implements the ApiUpdateAccountSettingsRequest interface. + */ +export function instanceOfApiUpdateAccountSettingsRequest(value: object): value is ApiUpdateAccountSettingsRequest { + return true; +} + +export function ApiUpdateAccountSettingsRequestFromJSON(json: any): ApiUpdateAccountSettingsRequest { + return ApiUpdateAccountSettingsRequestFromJSONTyped(json, false); +} + +export function ApiUpdateAccountSettingsRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiUpdateAccountSettingsRequest { + if (json == null) { + return json; + } + return { + + 'discoverableByNumber': json['discoverable_by_number'] == null ? undefined : json['discoverable_by_number'], + 'shareNumber': json['share_number'] == null ? undefined : json['share_number'], + }; +} + +export function ApiUpdateAccountSettingsRequestToJSON(value?: ApiUpdateAccountSettingsRequest | null): any { + if (value == null) { + return value; + } + return { + + 'discoverable_by_number': value['discoverableByNumber'], + 'share_number': value['shareNumber'], + }; +} + diff --git a/packages/signal-api/models/ApiUpdateContactRequest.ts b/packages/signal-api/models/ApiUpdateContactRequest.ts new file mode 100644 index 0000000..45b321a --- /dev/null +++ b/packages/signal-api/models/ApiUpdateContactRequest.ts @@ -0,0 +1,76 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiUpdateContactRequest + */ +export interface ApiUpdateContactRequest { + /** + * + * @type {number} + * @memberof ApiUpdateContactRequest + */ + expirationInSeconds?: number; + /** + * + * @type {string} + * @memberof ApiUpdateContactRequest + */ + name?: string; + /** + * + * @type {string} + * @memberof ApiUpdateContactRequest + */ + recipient?: string; +} + +/** + * Check if a given object implements the ApiUpdateContactRequest interface. + */ +export function instanceOfApiUpdateContactRequest(value: object): value is ApiUpdateContactRequest { + return true; +} + +export function ApiUpdateContactRequestFromJSON(json: any): ApiUpdateContactRequest { + return ApiUpdateContactRequestFromJSONTyped(json, false); +} + +export function ApiUpdateContactRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiUpdateContactRequest { + if (json == null) { + return json; + } + return { + + 'expirationInSeconds': json['expiration_in_seconds'] == null ? undefined : json['expiration_in_seconds'], + 'name': json['name'] == null ? undefined : json['name'], + 'recipient': json['recipient'] == null ? undefined : json['recipient'], + }; +} + +export function ApiUpdateContactRequestToJSON(value?: ApiUpdateContactRequest | null): any { + if (value == null) { + return value; + } + return { + + 'expiration_in_seconds': value['expirationInSeconds'], + 'name': value['name'], + 'recipient': value['recipient'], + }; +} + diff --git a/packages/signal-api/models/ApiUpdateGroupRequest.ts b/packages/signal-api/models/ApiUpdateGroupRequest.ts new file mode 100644 index 0000000..906d0ae --- /dev/null +++ b/packages/signal-api/models/ApiUpdateGroupRequest.ts @@ -0,0 +1,76 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiUpdateGroupRequest + */ +export interface ApiUpdateGroupRequest { + /** + * + * @type {string} + * @memberof ApiUpdateGroupRequest + */ + base64Avatar?: string; + /** + * + * @type {string} + * @memberof ApiUpdateGroupRequest + */ + description?: string; + /** + * + * @type {string} + * @memberof ApiUpdateGroupRequest + */ + name?: string; +} + +/** + * Check if a given object implements the ApiUpdateGroupRequest interface. + */ +export function instanceOfApiUpdateGroupRequest(value: object): value is ApiUpdateGroupRequest { + return true; +} + +export function ApiUpdateGroupRequestFromJSON(json: any): ApiUpdateGroupRequest { + return ApiUpdateGroupRequestFromJSONTyped(json, false); +} + +export function ApiUpdateGroupRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiUpdateGroupRequest { + if (json == null) { + return json; + } + return { + + 'base64Avatar': json['base64_avatar'] == null ? undefined : json['base64_avatar'], + 'description': json['description'] == null ? undefined : json['description'], + 'name': json['name'] == null ? undefined : json['name'], + }; +} + +export function ApiUpdateGroupRequestToJSON(value?: ApiUpdateGroupRequest | null): any { + if (value == null) { + return value; + } + return { + + 'base64_avatar': value['base64Avatar'], + 'description': value['description'], + 'name': value['name'], + }; +} + diff --git a/packages/signal-api/models/ApiUpdateProfileRequest.ts b/packages/signal-api/models/ApiUpdateProfileRequest.ts new file mode 100644 index 0000000..8f34d08 --- /dev/null +++ b/packages/signal-api/models/ApiUpdateProfileRequest.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiUpdateProfileRequest + */ +export interface ApiUpdateProfileRequest { + /** + * + * @type {string} + * @memberof ApiUpdateProfileRequest + */ + base64Avatar?: string; + /** + * + * @type {string} + * @memberof ApiUpdateProfileRequest + */ + name?: string; +} + +/** + * Check if a given object implements the ApiUpdateProfileRequest interface. + */ +export function instanceOfApiUpdateProfileRequest(value: object): value is ApiUpdateProfileRequest { + return true; +} + +export function ApiUpdateProfileRequestFromJSON(json: any): ApiUpdateProfileRequest { + return ApiUpdateProfileRequestFromJSONTyped(json, false); +} + +export function ApiUpdateProfileRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiUpdateProfileRequest { + if (json == null) { + return json; + } + return { + + 'base64Avatar': json['base64_avatar'] == null ? undefined : json['base64_avatar'], + 'name': json['name'] == null ? undefined : json['name'], + }; +} + +export function ApiUpdateProfileRequestToJSON(value?: ApiUpdateProfileRequest | null): any { + if (value == null) { + return value; + } + return { + + 'base64_avatar': value['base64Avatar'], + 'name': value['name'], + }; +} + diff --git a/packages/signal-api/models/ApiVerifyNumberSettings.ts b/packages/signal-api/models/ApiVerifyNumberSettings.ts new file mode 100644 index 0000000..92bff3e --- /dev/null +++ b/packages/signal-api/models/ApiVerifyNumberSettings.ts @@ -0,0 +1,60 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ApiVerifyNumberSettings + */ +export interface ApiVerifyNumberSettings { + /** + * + * @type {string} + * @memberof ApiVerifyNumberSettings + */ + pin?: string; +} + +/** + * Check if a given object implements the ApiVerifyNumberSettings interface. + */ +export function instanceOfApiVerifyNumberSettings(value: object): value is ApiVerifyNumberSettings { + return true; +} + +export function ApiVerifyNumberSettingsFromJSON(json: any): ApiVerifyNumberSettings { + return ApiVerifyNumberSettingsFromJSONTyped(json, false); +} + +export function ApiVerifyNumberSettingsFromJSONTyped(json: any, ignoreDiscriminator: boolean): ApiVerifyNumberSettings { + if (json == null) { + return json; + } + return { + + 'pin': json['pin'] == null ? undefined : json['pin'], + }; +} + +export function ApiVerifyNumberSettingsToJSON(value?: ApiVerifyNumberSettings | null): any { + if (value == null) { + return value; + } + return { + + 'pin': value['pin'], + }; +} + diff --git a/packages/signal-api/models/ClientAbout.ts b/packages/signal-api/models/ClientAbout.ts new file mode 100644 index 0000000..6d0d2fe --- /dev/null +++ b/packages/signal-api/models/ClientAbout.ts @@ -0,0 +1,92 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ClientAbout + */ +export interface ClientAbout { + /** + * + * @type {number} + * @memberof ClientAbout + */ + build?: number; + /** + * + * @type {{ [key: string]: Array; }} + * @memberof ClientAbout + */ + capabilities?: { [key: string]: Array; }; + /** + * + * @type {string} + * @memberof ClientAbout + */ + mode?: string; + /** + * + * @type {string} + * @memberof ClientAbout + */ + version?: string; + /** + * + * @type {Array} + * @memberof ClientAbout + */ + versions?: Array; +} + +/** + * Check if a given object implements the ClientAbout interface. + */ +export function instanceOfClientAbout(value: object): value is ClientAbout { + return true; +} + +export function ClientAboutFromJSON(json: any): ClientAbout { + return ClientAboutFromJSONTyped(json, false); +} + +export function ClientAboutFromJSONTyped(json: any, ignoreDiscriminator: boolean): ClientAbout { + if (json == null) { + return json; + } + return { + + 'build': json['build'] == null ? undefined : json['build'], + 'capabilities': json['capabilities'] == null ? undefined : json['capabilities'], + 'mode': json['mode'] == null ? undefined : json['mode'], + 'version': json['version'] == null ? undefined : json['version'], + 'versions': json['versions'] == null ? undefined : json['versions'], + }; +} + +export function ClientAboutToJSON(value?: ClientAbout | null): any { + if (value == null) { + return value; + } + return { + + 'build': value['build'], + 'capabilities': value['capabilities'], + 'mode': value['mode'], + 'version': value['version'], + 'versions': value['versions'], + }; +} + diff --git a/packages/signal-api/models/ClientGroupEntry.ts b/packages/signal-api/models/ClientGroupEntry.ts new file mode 100644 index 0000000..92c5d20 --- /dev/null +++ b/packages/signal-api/models/ClientGroupEntry.ts @@ -0,0 +1,124 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ClientGroupEntry + */ +export interface ClientGroupEntry { + /** + * + * @type {Array} + * @memberof ClientGroupEntry + */ + admins?: Array; + /** + * + * @type {boolean} + * @memberof ClientGroupEntry + */ + blocked?: boolean; + /** + * + * @type {string} + * @memberof ClientGroupEntry + */ + id?: string; + /** + * + * @type {string} + * @memberof ClientGroupEntry + */ + internalId?: string; + /** + * + * @type {string} + * @memberof ClientGroupEntry + */ + inviteLink?: string; + /** + * + * @type {Array} + * @memberof ClientGroupEntry + */ + members?: Array; + /** + * + * @type {string} + * @memberof ClientGroupEntry + */ + name?: string; + /** + * + * @type {Array} + * @memberof ClientGroupEntry + */ + pendingInvites?: Array; + /** + * + * @type {Array} + * @memberof ClientGroupEntry + */ + pendingRequests?: Array; +} + +/** + * Check if a given object implements the ClientGroupEntry interface. + */ +export function instanceOfClientGroupEntry(value: object): value is ClientGroupEntry { + return true; +} + +export function ClientGroupEntryFromJSON(json: any): ClientGroupEntry { + return ClientGroupEntryFromJSONTyped(json, false); +} + +export function ClientGroupEntryFromJSONTyped(json: any, ignoreDiscriminator: boolean): ClientGroupEntry { + if (json == null) { + return json; + } + return { + + 'admins': json['admins'] == null ? undefined : json['admins'], + 'blocked': json['blocked'] == null ? undefined : json['blocked'], + 'id': json['id'] == null ? undefined : json['id'], + 'internalId': json['internal_id'] == null ? undefined : json['internal_id'], + 'inviteLink': json['invite_link'] == null ? undefined : json['invite_link'], + 'members': json['members'] == null ? undefined : json['members'], + 'name': json['name'] == null ? undefined : json['name'], + 'pendingInvites': json['pending_invites'] == null ? undefined : json['pending_invites'], + 'pendingRequests': json['pending_requests'] == null ? undefined : json['pending_requests'], + }; +} + +export function ClientGroupEntryToJSON(value?: ClientGroupEntry | null): any { + if (value == null) { + return value; + } + return { + + 'admins': value['admins'], + 'blocked': value['blocked'], + 'id': value['id'], + 'internal_id': value['internalId'], + 'invite_link': value['inviteLink'], + 'members': value['members'], + 'name': value['name'], + 'pending_invites': value['pendingInvites'], + 'pending_requests': value['pendingRequests'], + }; +} + diff --git a/packages/signal-api/models/ClientIdentityEntry.ts b/packages/signal-api/models/ClientIdentityEntry.ts new file mode 100644 index 0000000..26d99c9 --- /dev/null +++ b/packages/signal-api/models/ClientIdentityEntry.ts @@ -0,0 +1,92 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ClientIdentityEntry + */ +export interface ClientIdentityEntry { + /** + * + * @type {string} + * @memberof ClientIdentityEntry + */ + added?: string; + /** + * + * @type {string} + * @memberof ClientIdentityEntry + */ + fingerprint?: string; + /** + * + * @type {string} + * @memberof ClientIdentityEntry + */ + number?: string; + /** + * + * @type {string} + * @memberof ClientIdentityEntry + */ + safetyNumber?: string; + /** + * + * @type {string} + * @memberof ClientIdentityEntry + */ + status?: string; +} + +/** + * Check if a given object implements the ClientIdentityEntry interface. + */ +export function instanceOfClientIdentityEntry(value: object): value is ClientIdentityEntry { + return true; +} + +export function ClientIdentityEntryFromJSON(json: any): ClientIdentityEntry { + return ClientIdentityEntryFromJSONTyped(json, false); +} + +export function ClientIdentityEntryFromJSONTyped(json: any, ignoreDiscriminator: boolean): ClientIdentityEntry { + if (json == null) { + return json; + } + return { + + 'added': json['added'] == null ? undefined : json['added'], + 'fingerprint': json['fingerprint'] == null ? undefined : json['fingerprint'], + 'number': json['number'] == null ? undefined : json['number'], + 'safetyNumber': json['safety_number'] == null ? undefined : json['safety_number'], + 'status': json['status'] == null ? undefined : json['status'], + }; +} + +export function ClientIdentityEntryToJSON(value?: ClientIdentityEntry | null): any { + if (value == null) { + return value; + } + return { + + 'added': value['added'], + 'fingerprint': value['fingerprint'], + 'number': value['number'], + 'safety_number': value['safetyNumber'], + 'status': value['status'], + }; +} + diff --git a/packages/signal-api/models/ClientListInstalledStickerPacksResponse.ts b/packages/signal-api/models/ClientListInstalledStickerPacksResponse.ts new file mode 100644 index 0000000..5ee23bb --- /dev/null +++ b/packages/signal-api/models/ClientListInstalledStickerPacksResponse.ts @@ -0,0 +1,92 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ClientListInstalledStickerPacksResponse + */ +export interface ClientListInstalledStickerPacksResponse { + /** + * + * @type {string} + * @memberof ClientListInstalledStickerPacksResponse + */ + author?: string; + /** + * + * @type {boolean} + * @memberof ClientListInstalledStickerPacksResponse + */ + installed?: boolean; + /** + * + * @type {string} + * @memberof ClientListInstalledStickerPacksResponse + */ + packId?: string; + /** + * + * @type {string} + * @memberof ClientListInstalledStickerPacksResponse + */ + title?: string; + /** + * + * @type {string} + * @memberof ClientListInstalledStickerPacksResponse + */ + url?: string; +} + +/** + * Check if a given object implements the ClientListInstalledStickerPacksResponse interface. + */ +export function instanceOfClientListInstalledStickerPacksResponse(value: object): value is ClientListInstalledStickerPacksResponse { + return true; +} + +export function ClientListInstalledStickerPacksResponseFromJSON(json: any): ClientListInstalledStickerPacksResponse { + return ClientListInstalledStickerPacksResponseFromJSONTyped(json, false); +} + +export function ClientListInstalledStickerPacksResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ClientListInstalledStickerPacksResponse { + if (json == null) { + return json; + } + return { + + 'author': json['author'] == null ? undefined : json['author'], + 'installed': json['installed'] == null ? undefined : json['installed'], + 'packId': json['pack_id'] == null ? undefined : json['pack_id'], + 'title': json['title'] == null ? undefined : json['title'], + 'url': json['url'] == null ? undefined : json['url'], + }; +} + +export function ClientListInstalledStickerPacksResponseToJSON(value?: ClientListInstalledStickerPacksResponse | null): any { + if (value == null) { + return value; + } + return { + + 'author': value['author'], + 'installed': value['installed'], + 'pack_id': value['packId'], + 'title': value['title'], + 'url': value['url'], + }; +} + diff --git a/packages/signal-api/models/ClientSetUsernameResponse.ts b/packages/signal-api/models/ClientSetUsernameResponse.ts new file mode 100644 index 0000000..69e236b --- /dev/null +++ b/packages/signal-api/models/ClientSetUsernameResponse.ts @@ -0,0 +1,68 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + +import { mapValues } from '../runtime'; +/** + * + * @export + * @interface ClientSetUsernameResponse + */ +export interface ClientSetUsernameResponse { + /** + * + * @type {string} + * @memberof ClientSetUsernameResponse + */ + username?: string; + /** + * + * @type {string} + * @memberof ClientSetUsernameResponse + */ + usernameLink?: string; +} + +/** + * Check if a given object implements the ClientSetUsernameResponse interface. + */ +export function instanceOfClientSetUsernameResponse(value: object): value is ClientSetUsernameResponse { + return true; +} + +export function ClientSetUsernameResponseFromJSON(json: any): ClientSetUsernameResponse { + return ClientSetUsernameResponseFromJSONTyped(json, false); +} + +export function ClientSetUsernameResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ClientSetUsernameResponse { + if (json == null) { + return json; + } + return { + + 'username': json['username'] == null ? undefined : json['username'], + 'usernameLink': json['username_link'] == null ? undefined : json['username_link'], + }; +} + +export function ClientSetUsernameResponseToJSON(value?: ClientSetUsernameResponse | null): any { + if (value == null) { + return value; + } + return { + + 'username': value['username'], + 'username_link': value['usernameLink'], + }; +} + diff --git a/packages/signal-api/models/index.ts b/packages/signal-api/models/index.ts new file mode 100644 index 0000000..8b24c60 --- /dev/null +++ b/packages/signal-api/models/index.ts @@ -0,0 +1,37 @@ +/* tslint:disable */ +/* eslint-disable */ +export * from './ApiAddDeviceRequest'; +export * from './ApiAddStickerPackRequest'; +export * from './ApiChangeGroupAdminsRequest'; +export * from './ApiChangeGroupMembersRequest'; +export * from './ApiConfiguration'; +export * from './ApiCreateGroupRequest'; +export * from './ApiCreateGroupResponse'; +export * from './ApiError'; +export * from './ApiGroupPermissions'; +export * from './ApiLoggingConfiguration'; +export * from './ApiRateLimitChallengeRequest'; +export * from './ApiReaction'; +export * from './ApiReceipt'; +export * from './ApiRegisterNumberRequest'; +export * from './ApiSearchResponse'; +export * from './ApiSendMessageError'; +export * from './ApiSendMessageResponse'; +export * from './ApiSendMessageV1'; +export * from './ApiSendMessageV2'; +export * from './ApiSetUsernameRequest'; +export * from './ApiTrustIdentityRequest'; +export * from './ApiTrustModeRequest'; +export * from './ApiTrustModeResponse'; +export * from './ApiTypingIndicatorRequest'; +export * from './ApiUnregisterNumberRequest'; +export * from './ApiUpdateAccountSettingsRequest'; +export * from './ApiUpdateContactRequest'; +export * from './ApiUpdateGroupRequest'; +export * from './ApiUpdateProfileRequest'; +export * from './ApiVerifyNumberSettings'; +export * from './ClientAbout'; +export * from './ClientGroupEntry'; +export * from './ClientIdentityEntry'; +export * from './ClientListInstalledStickerPacksResponse'; +export * from './ClientSetUsernameResponse'; diff --git a/packages/signal-api/openapitools.json b/packages/signal-api/openapitools.json new file mode 100644 index 0000000..5c50d6a --- /dev/null +++ b/packages/signal-api/openapitools.json @@ -0,0 +1,7 @@ +{ + "$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json", + "spaces": 2, + "generator-cli": { + "version": "7.6.0" + } +} diff --git a/packages/signal-api/package.json b/packages/signal-api/package.json index 820466e..7ee296a 100644 --- a/packages/signal-api/package.json +++ b/packages/signal-api/package.json @@ -1,8 +1,16 @@ { "name": "@link-stack/signal-api", "version": "1.0.0", - "main": "index.js", + "main": "build/main/index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "build": "tsc", + "update-api": "openapi-generator-cli generate -i 'https://bbernhard.github.io/signal-cli-rest-api/src/docs/swagger.json' -g typescript-fetch -o . --skip-validate-spec" + }, + "devDependencies": { + "@openapitools/openapi-generator-cli": "^2.13.4", + "@link-stack/typescript-config": "*", + "@link-stack/eslint-config": "*", + "@types/node": "^20", + "typescript": "^5" } } diff --git a/packages/signal-api/runtime.ts b/packages/signal-api/runtime.ts new file mode 100644 index 0000000..892ba40 --- /dev/null +++ b/packages/signal-api/runtime.ts @@ -0,0 +1,426 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Signal Cli REST API + * This is the Signal Cli REST API documentation. + * + * The version of the OpenAPI document: 1.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export const BASE_PATH = "http://localhost".replace(/\/+$/, ""); + +export interface ConfigurationParameters { + basePath?: string; // override base path + fetchApi?: FetchAPI; // override for fetch implementation + middleware?: Middleware[]; // middleware to apply before/after fetch requests + queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings + username?: string; // parameter for basic security + password?: string; // parameter for basic security + apiKey?: string | Promise | ((name: string) => string | Promise); // parameter for apiKey security + accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string | Promise); // parameter for oauth2 security + headers?: HTTPHeaders; //header params we want to use on every request + credentials?: RequestCredentials; //value for the credentials param we want to use on each request +} + +export class Configuration { + constructor(private configuration: ConfigurationParameters = {}) {} + + set config(configuration: Configuration) { + this.configuration = configuration; + } + + get basePath(): string { + return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH; + } + + get fetchApi(): FetchAPI | undefined { + return this.configuration.fetchApi; + } + + get middleware(): Middleware[] { + return this.configuration.middleware || []; + } + + get queryParamsStringify(): (params: HTTPQuery) => string { + return this.configuration.queryParamsStringify || querystring; + } + + get username(): string | undefined { + return this.configuration.username; + } + + get password(): string | undefined { + return this.configuration.password; + } + + get apiKey(): ((name: string) => string | Promise) | undefined { + const apiKey = this.configuration.apiKey; + if (apiKey) { + return typeof apiKey === 'function' ? apiKey : () => apiKey; + } + return undefined; + } + + get accessToken(): ((name?: string, scopes?: string[]) => string | Promise) | undefined { + const accessToken = this.configuration.accessToken; + if (accessToken) { + return typeof accessToken === 'function' ? accessToken : async () => accessToken; + } + return undefined; + } + + get headers(): HTTPHeaders | undefined { + return this.configuration.headers; + } + + get credentials(): RequestCredentials | undefined { + return this.configuration.credentials; + } +} + +export const DefaultConfig = new Configuration(); + +/** + * This is the base class for all generated API classes. + */ +export class BaseAPI { + + private static readonly jsonRegex = new RegExp('^(:?application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(:?;.*)?$', 'i'); + private middleware: Middleware[]; + + constructor(protected configuration = DefaultConfig) { + this.middleware = configuration.middleware; + } + + withMiddleware(this: T, ...middlewares: Middleware[]) { + const next = this.clone(); + next.middleware = next.middleware.concat(...middlewares); + return next; + } + + withPreMiddleware(this: T, ...preMiddlewares: Array) { + const middlewares = preMiddlewares.map((pre) => ({ pre })); + return this.withMiddleware(...middlewares); + } + + withPostMiddleware(this: T, ...postMiddlewares: Array) { + const middlewares = postMiddlewares.map((post) => ({ post })); + return this.withMiddleware(...middlewares); + } + + /** + * Check if the given MIME is a JSON MIME. + * JSON MIME examples: + * application/json + * application/json; charset=UTF8 + * APPLICATION/JSON + * application/vnd.company+json + * @param mime - MIME (Multipurpose Internet Mail Extensions) + * @return True if the given MIME is JSON, false otherwise. + */ + protected isJsonMime(mime: string | null | undefined): boolean { + if (!mime) { + return false; + } + return BaseAPI.jsonRegex.test(mime); + } + + protected async request(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction): Promise { + const { url, init } = await this.createFetchParams(context, initOverrides); + const response = await this.fetchApi(url, init); + if (response && (response.status >= 200 && response.status < 300)) { + return response; + } + throw new ResponseError(response, 'Response returned an error code'); + } + + private async createFetchParams(context: RequestOpts, initOverrides?: RequestInit | InitOverrideFunction) { + let url = this.configuration.basePath + context.path; + if (context.query !== undefined && Object.keys(context.query).length !== 0) { + // only add the querystring to the URL if there are query parameters. + // this is done to avoid urls ending with a "?" character which buggy webservers + // do not handle correctly sometimes. + url += '?' + this.configuration.queryParamsStringify(context.query); + } + + const headers = Object.assign({}, this.configuration.headers, context.headers); + Object.keys(headers).forEach(key => headers[key] === undefined ? delete headers[key] : {}); + + const initOverrideFn = + typeof initOverrides === "function" + ? initOverrides + : async () => initOverrides; + + const initParams = { + method: context.method, + headers, + body: context.body, + credentials: this.configuration.credentials, + }; + + const overriddenInit: RequestInit = { + ...initParams, + ...(await initOverrideFn({ + init: initParams, + context, + })) + }; + + let body: any; + if (isFormData(overriddenInit.body) + || (overriddenInit.body instanceof URLSearchParams) + || isBlob(overriddenInit.body)) { + body = overriddenInit.body; + } else if (this.isJsonMime(headers['Content-Type'])) { + body = JSON.stringify(overriddenInit.body); + } else { + body = overriddenInit.body; + } + + const init: RequestInit = { + ...overriddenInit, + body + }; + + return { url, init }; + } + + private fetchApi = async (url: string, init: RequestInit) => { + let fetchParams = { url, init }; + for (const middleware of this.middleware) { + if (middleware.pre) { + fetchParams = await middleware.pre({ + fetch: this.fetchApi, + ...fetchParams, + }) || fetchParams; + } + } + let response: Response | undefined = undefined; + try { + response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init); + } catch (e) { + for (const middleware of this.middleware) { + if (middleware.onError) { + response = await middleware.onError({ + fetch: this.fetchApi, + url: fetchParams.url, + init: fetchParams.init, + error: e, + response: response ? response.clone() : undefined, + }) || response; + } + } + if (response === undefined) { + if (e instanceof Error) { + throw new FetchError(e, 'The request failed and the interceptors did not return an alternative response'); + } else { + throw e; + } + } + } + for (const middleware of this.middleware) { + if (middleware.post) { + response = await middleware.post({ + fetch: this.fetchApi, + url: fetchParams.url, + init: fetchParams.init, + response: response.clone(), + }) || response; + } + } + return response; + } + + /** + * Create a shallow clone of `this` by constructing a new instance + * and then shallow cloning data members. + */ + private clone(this: T): T { + const constructor = this.constructor as any; + const next = new constructor(this.configuration); + next.middleware = this.middleware.slice(); + return next; + } +}; + +function isBlob(value: any): value is Blob { + return typeof Blob !== 'undefined' && value instanceof Blob; +} + +function isFormData(value: any): value is FormData { + return typeof FormData !== "undefined" && value instanceof FormData; +} + +export class ResponseError extends Error { + override name: "ResponseError" = "ResponseError"; + constructor(public response: Response, msg?: string) { + super(msg); + } +} + +export class FetchError extends Error { + override name: "FetchError" = "FetchError"; + constructor(public cause: Error, msg?: string) { + super(msg); + } +} + +export class RequiredError extends Error { + override name: "RequiredError" = "RequiredError"; + constructor(public field: string, msg?: string) { + super(msg); + } +} + +export const COLLECTION_FORMATS = { + csv: ",", + ssv: " ", + tsv: "\t", + pipes: "|", +}; + +export type FetchAPI = WindowOrWorkerGlobalScope['fetch']; + +export type Json = any; +export type HTTPMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'OPTIONS' | 'HEAD'; +export type HTTPHeaders = { [key: string]: string }; +export type HTTPQuery = { [key: string]: string | number | null | boolean | Array | Set | HTTPQuery }; +export type HTTPBody = Json | FormData | URLSearchParams; +export type HTTPRequestInit = { headers?: HTTPHeaders; method: HTTPMethod; credentials?: RequestCredentials; body?: HTTPBody }; +export type ModelPropertyNaming = 'camelCase' | 'snake_case' | 'PascalCase' | 'original'; + +export type InitOverrideFunction = (requestContext: { init: HTTPRequestInit, context: RequestOpts }) => Promise + +export interface FetchParams { + url: string; + init: RequestInit; +} + +export interface RequestOpts { + path: string; + method: HTTPMethod; + headers: HTTPHeaders; + query?: HTTPQuery; + body?: HTTPBody; +} + +export function querystring(params: HTTPQuery, prefix: string = ''): string { + return Object.keys(params) + .map(key => querystringSingleKey(key, params[key], prefix)) + .filter(part => part.length > 0) + .join('&'); +} + +function querystringSingleKey(key: string, value: string | number | null | undefined | boolean | Array | Set | HTTPQuery, keyPrefix: string = ''): string { + const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key); + if (value instanceof Array) { + const multiValue = value.map(singleValue => encodeURIComponent(String(singleValue))) + .join(`&${encodeURIComponent(fullKey)}=`); + return `${encodeURIComponent(fullKey)}=${multiValue}`; + } + if (value instanceof Set) { + const valueAsArray = Array.from(value); + return querystringSingleKey(key, valueAsArray, keyPrefix); + } + if (value instanceof Date) { + return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`; + } + if (value instanceof Object) { + return querystring(value as HTTPQuery, fullKey); + } + return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`; +} + +export function mapValues(data: any, fn: (item: any) => any) { + return Object.keys(data).reduce( + (acc, key) => ({ ...acc, [key]: fn(data[key]) }), + {} + ); +} + +export function canConsumeForm(consumes: Consume[]): boolean { + for (const consume of consumes) { + if ('multipart/form-data' === consume.contentType) { + return true; + } + } + return false; +} + +export interface Consume { + contentType: string; +} + +export interface RequestContext { + fetch: FetchAPI; + url: string; + init: RequestInit; +} + +export interface ResponseContext { + fetch: FetchAPI; + url: string; + init: RequestInit; + response: Response; +} + +export interface ErrorContext { + fetch: FetchAPI; + url: string; + init: RequestInit; + error: unknown; + response?: Response; +} + +export interface Middleware { + pre?(context: RequestContext): Promise; + post?(context: ResponseContext): Promise; + onError?(context: ErrorContext): Promise; +} + +export interface ApiResponse { + raw: Response; + value(): Promise; +} + +export interface ResponseTransformer { + (json: any): T; +} + +export class JSONApiResponse { + constructor(public raw: Response, private transformer: ResponseTransformer = (jsonValue: any) => jsonValue) {} + + async value(): Promise { + return this.transformer(await this.raw.json()); + } +} + +export class VoidApiResponse { + constructor(public raw: Response) {} + + async value(): Promise { + return undefined; + } +} + +export class BlobApiResponse { + constructor(public raw: Response) {} + + async value(): Promise { + return await this.raw.blob(); + }; +} + +export class TextApiResponse { + constructor(public raw: Response) {} + + async value(): Promise { + return await this.raw.text(); + }; +} diff --git a/packages/signal-api/tsconfig.json b/packages/signal-api/tsconfig.json new file mode 100644 index 0000000..69e9e16 --- /dev/null +++ b/packages/signal-api/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "@link-stack/typescript-config/tsconfig.json", + "compilerOptions": { + "lib": ["esnext", "dom"], + "outDir": "./build" + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["build", "node_modules"] +}