cloud: remove axios

This commit is contained in:
Koushik Dutta
2024-02-07 21:47:11 -08:00
parent 16812680d8
commit 3fe020c443
3 changed files with 62 additions and 310 deletions

View File

@@ -11,12 +11,10 @@
"@eneris/push-receiver": "^3.1.4",
"@scrypted/common": "file:../../common",
"@scrypted/sdk": "file:../../sdk",
"axios": "^1.4.0",
"bpmux": "^8.2.1",
"cloudflared": "^0.4.0",
"exponential-backoff": "^3.1.1",
"http-proxy": "^1.18.1",
"ip": "^1.1.8",
"nat-upnp": "file:./external/node-nat-upnp"
},
"devDependencies": {
@@ -33,12 +31,12 @@
"dependencies": {
"@scrypted/sdk": "file:../sdk",
"@scrypted/server": "file:../server",
"http-auth-utils": "^3.0.2",
"node-fetch-commonjs": "^3.1.1",
"typescript": "^4.4.3"
"http-auth-utils": "^5.0.1",
"typescript": "^5.3.3"
},
"devDependencies": {
"@types/node": "^16.9.0"
"@types/node": "^20.11.0",
"ts-node": "^10.9.2"
}
},
"../../common/node_modules/@scrypted/sdk": {
@@ -54,37 +52,6 @@
"dev": true,
"license": "MIT"
},
"../../common/node_modules/fetch-blob": {
"version": "3.1.4",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/jimmywarting"
},
{
"type": "paypal",
"url": "https://paypal.me/jimmywarting"
}
],
"license": "MIT",
"dependencies": {
"node-domexception": "^1.0.0",
"web-streams-polyfill": "^3.0.3"
},
"engines": {
"node": "^12.20 || >= 14.13"
}
},
"../../common/node_modules/formdata-polyfill": {
"version": "4.0.10",
"license": "MIT",
"dependencies": {
"fetch-blob": "^3.1.2"
},
"engines": {
"node": ">=12.20.0"
}
},
"../../common/node_modules/http-auth-utils": {
"version": "3.0.2",
"license": "MIT",
@@ -95,38 +62,6 @@
"node": ">=12.19.0"
}
},
"../../common/node_modules/node-domexception": {
"version": "1.0.0",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/jimmywarting"
},
{
"type": "github",
"url": "https://paypal.me/jimmywarting"
}
],
"license": "MIT",
"engines": {
"node": ">=10.5.0"
}
},
"../../common/node_modules/node-fetch-commonjs": {
"version": "3.1.1",
"license": "MIT",
"dependencies": {
"formdata-polyfill": "^4.0.10",
"web-streams-polyfill": "^3.1.1"
},
"engines": {
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/node-fetch"
}
},
"../../common/node_modules/typescript": {
"version": "4.4.3",
"license": "Apache-2.0",
@@ -138,13 +73,6 @@
"node": ">=4.2.0"
}
},
"../../common/node_modules/web-streams-polyfill": {
"version": "3.2.0",
"license": "MIT",
"engines": {
"node": ">= 8"
}
},
"../../common/node_modules/yerror": {
"version": "6.0.1",
"license": "MIT",
@@ -154,12 +82,12 @@
},
"../../sdk": {
"name": "@scrypted/sdk",
"version": "0.2.103",
"version": "0.3.5",
"license": "ISC",
"dependencies": {
"@babel/preset-typescript": "^7.18.6",
"adm-zip": "^0.4.13",
"axios": "^0.21.4",
"axios": "^1.6.5",
"babel-loader": "^9.1.0",
"babel-plugin-const-enum": "^1.1.0",
"esbuild": "^0.15.9",
@@ -2391,59 +2319,54 @@
},
"../../server": {
"name": "@scrypted/server",
"version": "0.42.0",
"version": "0.94.0",
"license": "ISC",
"dependencies": {
"@mapbox/node-pre-gyp": "^1.0.11",
"@scrypted/types": "^0.2.94",
"@scrypted/types": "^0.3.4",
"adm-zip": "^0.5.10",
"axios": "^1.4.0",
"body-parser": "^1.20.2",
"cookie-parser": "^1.4.6",
"debug": "^4.3.4",
"engine.io": "^6.5.1",
"engine.io": "^6.5.4",
"express": "^4.18.2",
"ffmpeg-static": "^5.1.0",
"ffmpeg-static": "^5.2.0",
"follow-redirects": "^1.15.5",
"http-auth": "^4.2.0",
"ip": "^1.1.8",
"level": "^8.0.0",
"linkfs": "^2.1.0",
"lodash": "^4.17.21",
"memfs": "^4.2.0",
"mime": "^3.0.0",
"nan": "^2.17.0",
"nan": "^2.18.0",
"node-dijkstra": "^2.5.0",
"node-forge": "^1.3.1",
"node-gyp": "^9.4.0",
"node-gyp": "^10.0.1",
"router": "^1.3.8",
"semver": "^7.5.4",
"sharp": "^0.33.2",
"source-map-support": "^0.5.21",
"tar": "^6.1.15",
"tslib": "^2.6.1",
"typescript": "^5.1.6",
"whatwg-mimetype": "^3.0.0",
"ws": "^8.13.0"
"tar": "^6.2.0",
"tslib": "^2.6.2",
"typescript": "^5.3.3",
"whatwg-mimetype": "^4.0.0",
"ws": "^8.16.0"
},
"bin": {
"scrypted-serve": "bin/scrypted-serve"
},
"devDependencies": {
"@types/adm-zip": "^0.5.0",
"@types/cookie-parser": "^1.4.3",
"@types/debug": "^4.1.8",
"@types/express": "^4.17.17",
"@types/http-auth": "^4.1.1",
"@types/ip": "^1.1.0",
"@types/lodash": "^4.14.196",
"@types/mime": "^3.0.1",
"@types/node-dijkstra": "^2.5.3",
"@types/node-forge": "^1.3.3",
"@types/pem": "^1.14.0",
"@types/semver": "^7.5.0",
"@types/source-map-support": "^0.5.6",
"@types/tar": "^6.1.5",
"@types/whatwg-mimetype": "^3.0.0",
"@types/ws": "^8.5.5"
"@types/adm-zip": "^0.5.5",
"@types/cookie-parser": "^1.4.6",
"@types/express": "^4.17.21",
"@types/follow-redirects": "^1.14.4",
"@types/http-auth": "^4.1.4",
"@types/ip": "^1.1.3",
"@types/lodash": "^4.14.202",
"@types/node-dijkstra": "^2.5.6",
"@types/node-forge": "^1.3.11",
"@types/semver": "^7.5.6",
"@types/source-map-support": "^0.5.10",
"@types/tar": "^6.1.10",
"@types/whatwg-mimetype": "^3.0.2",
"@types/ws": "^8.5.10"
},
"optionalDependencies": {
"node-pty-prebuilt-multiarch": "^0.10.1-pre.5"
@@ -2610,14 +2533,6 @@
"@types/node": "*"
}
},
"../../server/node_modules/@types/debug": {
"version": "4.1.8",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/ms": "*"
}
},
"../../server/node_modules/@types/express": {
"version": "4.17.17",
"dev": true,
@@ -2666,11 +2581,6 @@
"dev": true,
"license": "MIT"
},
"../../server/node_modules/@types/ms": {
"version": "0.7.31",
"dev": true,
"license": "MIT"
},
"../../server/node_modules/@types/node": {
"version": "20.2.5",
"license": "MIT"
@@ -2688,14 +2598,6 @@
"@types/node": "*"
}
},
"../../server/node_modules/@types/pem": {
"version": "1.14.0",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/node": "*"
}
},
"../../server/node_modules/@types/qs": {
"version": "6.9.7",
"dev": true,
@@ -2884,27 +2786,10 @@
"node": ">=10"
}
},
"../../server/node_modules/arg": {
"version": "5.0.2",
"license": "MIT"
},
"../../server/node_modules/array-flatten": {
"version": "1.1.1",
"license": "MIT"
},
"../../server/node_modules/asynckit": {
"version": "0.4.0",
"license": "MIT"
},
"../../server/node_modules/axios": {
"version": "1.4.0",
"license": "MIT",
"dependencies": {
"follow-redirects": "^1.15.0",
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
}
},
"../../server/node_modules/balanced-match": {
"version": "1.0.2",
"license": "MIT"
@@ -3213,16 +3098,6 @@
"color-support": "bin.js"
}
},
"../../server/node_modules/combined-stream": {
"version": "1.0.8",
"license": "MIT",
"dependencies": {
"delayed-stream": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"../../server/node_modules/concat-map": {
"version": "0.0.1",
"license": "MIT"
@@ -3345,13 +3220,6 @@
"node": ">=4.0.0"
}
},
"../../server/node_modules/delayed-stream": {
"version": "1.0.0",
"license": "MIT",
"engines": {
"node": ">=0.4.0"
}
},
"../../server/node_modules/delegates": {
"version": "1.0.0",
"license": "MIT"
@@ -3596,11 +3464,6 @@
"node": ">= 0.8"
}
},
"../../server/node_modules/fast-diff": {
"version": "1.3.0",
"license": "Apache-2.0",
"peer": true
},
"../../server/node_modules/ffmpeg-static": {
"version": "5.1.0",
"hasInstallScript": true,
@@ -3684,18 +3547,6 @@
"url": "https://github.com/sponsors/isaacs"
}
},
"../../server/node_modules/form-data": {
"version": "4.0.0",
"license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
},
"engines": {
"node": ">= 6"
}
},
"../../server/node_modules/forwarded": {
"version": "0.2.0",
"license": "MIT",
@@ -3907,13 +3758,6 @@
"ms": "^2.0.0"
}
},
"../../server/node_modules/hyperdyperid": {
"version": "1.2.0",
"license": "MIT",
"engines": {
"node": ">=10.18"
}
},
"../../server/node_modules/iconv-lite": {
"version": "0.4.24",
"license": "MIT",
@@ -4041,34 +3885,6 @@
"@pkgjs/parseargs": "^0.11.0"
}
},
"../../server/node_modules/json-joy": {
"version": "9.4.0",
"license": "Apache-2.0",
"dependencies": {
"arg": "^5.0.2",
"hyperdyperid": "^1.2.0"
},
"bin": {
"json-pack": "bin/json-pack.js",
"json-pack-test": "bin/json-pack-test.js",
"json-patch": "bin/json-patch.js",
"json-patch-test": "bin/json-patch-test.js",
"json-pointer": "bin/json-pointer.js",
"json-pointer-test": "bin/json-pointer-test.js",
"json-unpack": "bin/json-unpack.js"
},
"engines": {
"node": ">=10.0"
},
"funding": {
"url": "https://github.com/sponsors/streamich"
},
"peerDependencies": {
"quill-delta": "^5",
"rxjs": "7",
"tslib": "2"
}
},
"../../server/node_modules/level": {
"version": "8.0.0",
"license": "MIT",
@@ -4102,23 +3918,10 @@
"node": ">=12"
}
},
"../../server/node_modules/linkfs": {
"version": "2.1.0"
},
"../../server/node_modules/lodash": {
"version": "4.17.21",
"license": "MIT"
},
"../../server/node_modules/lodash.clonedeep": {
"version": "4.5.0",
"license": "MIT",
"peer": true
},
"../../server/node_modules/lodash.isequal": {
"version": "4.5.0",
"license": "MIT",
"peer": true
},
"../../server/node_modules/lru-cache": {
"version": "7.18.3",
"license": "ISC",
@@ -4184,24 +3987,6 @@
"node": ">= 0.6"
}
},
"../../server/node_modules/memfs": {
"version": "4.2.0",
"license": "Apache-2.0",
"dependencies": {
"json-joy": "^9.2.0",
"thingies": "^1.11.1"
},
"engines": {
"node": ">= 4.0.0"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/streamich"
},
"peerDependencies": {
"tslib": "2"
}
},
"../../server/node_modules/merge-descriptors": {
"version": "1.0.1",
"license": "MIT"
@@ -4213,16 +3998,6 @@
"node": ">= 0.6"
}
},
"../../server/node_modules/mime": {
"version": "3.0.0",
"license": "MIT",
"bin": {
"mime": "cli.js"
},
"engines": {
"node": ">=10.0.0"
}
},
"../../server/node_modules/mime-db": {
"version": "1.52.0",
"license": "MIT",
@@ -4899,10 +4674,6 @@
"node": ">= 0.10"
}
},
"../../server/node_modules/proxy-from-env": {
"version": "1.1.0",
"license": "MIT"
},
"../../server/node_modules/pump": {
"version": "3.0.0",
"license": "MIT",
@@ -4943,19 +4714,6 @@
],
"license": "MIT"
},
"../../server/node_modules/quill-delta": {
"version": "5.1.0",
"license": "MIT",
"peer": true,
"dependencies": {
"fast-diff": "^1.3.0",
"lodash.clonedeep": "^4.5.0",
"lodash.isequal": "^4.5.0"
},
"engines": {
"node": ">= 12.0.0"
}
},
"../../server/node_modules/range-parser": {
"version": "1.2.1",
"license": "MIT",
@@ -5074,14 +4832,6 @@
"queue-microtask": "^1.2.2"
}
},
"../../server/node_modules/rxjs": {
"version": "7.8.1",
"license": "Apache-2.0",
"peer": true,
"dependencies": {
"tslib": "^2.1.0"
}
},
"../../server/node_modules/safe-buffer": {
"version": "5.2.1",
"funding": [
@@ -5446,16 +5196,6 @@
"node": ">=8"
}
},
"../../server/node_modules/thingies": {
"version": "1.12.0",
"license": "Unlicense",
"engines": {
"node": ">=10.18"
},
"peerDependencies": {
"tslib": "^2"
}
},
"../../server/node_modules/toidentifier": {
"version": "1.0.1",
"license": "MIT",

View File

@@ -41,7 +41,6 @@
"@eneris/push-receiver": "^3.1.4",
"@scrypted/common": "file:../../common",
"@scrypted/sdk": "file:../../sdk",
"axios": "^1.4.0",
"bpmux": "^8.2.1",
"cloudflared": "^0.4.0",
"exponential-backoff": "^3.1.1",

View File

@@ -1,7 +1,6 @@
import { Deferred } from "@scrypted/common/src/deferred";
import sdk, { BufferConverter, DeviceProvider, HttpRequest, HttpRequestHandler, HttpResponse, OauthClient, PushHandler, ScryptedDeviceBase, ScryptedDeviceType, ScryptedInterface, ScryptedMimeTypes, Setting, Settings } from "@scrypted/sdk";
import { StorageSettings } from "@scrypted/sdk/storage-settings";
import axios from 'axios';
import bpmux from 'bpmux';
import * as cloudflared from 'cloudflared';
import crypto from 'crypto';
@@ -19,6 +18,7 @@ import { Duplex } from 'stream';
import tls from 'tls';
import { readLine } from '../../../common/src/read-stream';
import { createSelfSignedCertificate } from '../../../server/src/cert';
import { httpFetch } from '../../../server/src/fetch/http-fetch';
import { PushManager } from './push';
import { qsparse, qsstringify } from "./qs";
@@ -333,7 +333,9 @@ class ScryptedCloud extends ScryptedDeviceBase implements OauthClient, Settings,
const url = new URL('https://www.duckdns.org/update');
url.searchParams.set('domains', this.storageSettings.values.duckDnsHostname);
url.searchParams.set('token', this.storageSettings.values.duckDnsToken);
await axios(url.toString());
await httpFetch({
url: url.toString(),
});
}
catch (e) {
this.console.error('Duck DNS Erorr', e);
@@ -364,7 +366,10 @@ class ScryptedCloud extends ScryptedDeviceBase implements OauthClient, Settings,
ip = this.cloudflareTunnelHost;
}
else {
ip = (await axios(`https://${SCRYPTED_SERVER}/_punch/ip`)).data.ip;
ip = (await httpFetch({
url: `https://${SCRYPTED_SERVER}/_punch/ip`,
responseType: 'json',
})).body.ip;
}
if (this.storageSettings.values.forwardingMode === 'Custom Domain' || this.cloudflareTunnelHost)
@@ -399,11 +404,14 @@ class ScryptedCloud extends ScryptedDeviceBase implements OauthClient, Settings,
if (!hostname)
hostname = 'localhost';
url.searchParams.set('url', `https://${hostname}:${upnp_port}${pluginPath}/testPortForward`);
const response = await axios(url.toString());
this.console.log('test data:', response.data);
if (response.data.error)
throw new Error(response.data.error);
if (response.data.data !== this.randomBytes)
const response = await httpFetch({
url: url.toString(),
responseType: 'json',
});
this.console.log('test data:', response.body);
if (response.body.error)
throw new Error(response.body.error);
if (response.body.data !== this.randomBytes)
throw new Error('Server received data that did not match this server.');
this.log.a("Port Forward Test Succeeded.");
}
@@ -493,13 +501,15 @@ class ScryptedCloud extends ScryptedDeviceBase implements OauthClient, Settings,
scope: local.pathname,
ttl,
})
const scope = await axios(`https://${this.getHostname()}/_punch/scope?${q}`, {
const scope = await httpFetch({
url: `https://${this.getHostname()}/_punch/scope?${q}`,
headers: {
Authorization: `Bearer ${token_info}`
},
responseType: 'json',
})
const { userToken, userTokenSignature } = scope.data;
const { userToken, userTokenSignature } = scope.body;
const tokens = qsstringify({
user_token: userToken,
user_token_signature: userTokenSignature
@@ -575,16 +585,18 @@ class ScryptedCloud extends ScryptedDeviceBase implements OauthClient, Settings,
const { token_info } = this.storageSettings.values;
if (!token_info)
throw new Error('Scrypted Cloud is not logged in. Skipping home.scrypted.app registration.');
const response = await axios(`https://${SCRYPTED_SERVER}/_punch/register?${q}`, {
const response = await httpFetch({
url: `https://${SCRYPTED_SERVER}/_punch/register?${q}`,
headers: {
Authorization: `Bearer ${token_info}`
},
responseType: 'json',
});
this.console.log('registered', response.data);
this.console.log('registered', response.body);
this.storageSettings.values.lastPersistedRegistrationId = registration_id;
this.storageSettings.values.lastPersistedUpnpPort = upnp_port;
this.storageSettings.values.registrationSecret = registration_secret;
return response.data;
return response.body;
}
async setupCloudPush() {
@@ -895,10 +907,11 @@ class ScryptedCloud extends ScryptedDeviceBase implements OauthClient, Settings,
});
const tmp = `${bin}.tmp`;
const stream = await axios('https://github.com/scryptedapp/cloudflared/releases/download/2023.8.2/cloudflared-darwin-arm64', {
responseType: 'stream',
const stream = await httpFetch({
url: 'https://github.com/scryptedapp/cloudflared/releases/download/2023.8.2/cloudflared-darwin-arm64',
responseType: 'readable',
});
const write = stream.data.pipe(fs.createWriteStream(tmp));
const write = stream.body.pipe(fs.createWriteStream(tmp));
await once(write, 'close');
renameSync(tmp, bin);
fs.chmodSync(bin, 0o0755)