From cac5d7288818bfb2cd093535a5aec9249b778b0e Mon Sep 17 00:00:00 2001 From: macbookpro Date: Tue, 21 May 2024 17:39:52 +0300 Subject: [PATCH 1/5] API-3 - Extend API Info response --- src/index.js | 14 ++++++++++++++ src/logging/index.js | 6 +++--- src/rt.js | 16 ++++++---------- src/urls.js | 6 ++++++ 4 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/index.js b/src/index.js index b05192c6..993bd534 100644 --- a/src/index.js +++ b/src/index.js @@ -148,6 +148,8 @@ class Backendless { app.__removeService('LocalCache') + app.appInfoPromise() + const loggingConfig = Object.assign({ loadLevels: true, globalLevel: 'all', levels: {} }, config.logging) if (app.__hasService('Logging')) { @@ -166,6 +168,18 @@ class Backendless { return app } + appInfoPromise() { + if (!this.__appInfoPromise) { + this.__appInfoPromise = new Promise((resolve, reject) => { + this.request.get({ url: this.urls.appInfo() }) + .then(resolve) + .catch(reject); + }) + } + + return this.__appInfoPromise + } + __hasService(name) { return !!this[`__${name}`] } diff --git a/src/logging/index.js b/src/logging/index.js index 1ce5b78e..83dd2cf1 100644 --- a/src/logging/index.js +++ b/src/logging/index.js @@ -39,9 +39,9 @@ export default class Logging { } loadLoggingLevels() { - this.app.request - .get({ url: this.app.urls.loggingLevels() }) - .then(loggersList => { + this.app.appInfoPromise() + .then(appInfo => { + const { loggers: loggersList } = appInfo const loggers = {} loggersList.forEach(logger => { diff --git a/src/rt.js b/src/rt.js index 53273435..b8f5d4bd 100644 --- a/src/rt.js +++ b/src/rt.js @@ -1,4 +1,3 @@ -import Request from 'backendless-request' import BackendlessRTClient from 'backendless-rt-client' import Utils from './utils' @@ -6,20 +5,14 @@ import Utils from './utils' export const RTListeners = BackendlessRTClient.Listeners export const RTScopeConnector = BackendlessRTClient.ScopeConnector -function loadAppInfo(appPath) { - return Request.get(`${appPath}/info`) -} - export default class RT extends BackendlessRTClient { constructor(app) { - const { appId, apiKey, appPath, debugMode } = app + const { appId, apiKey, debugMode } = app const clientId = Utils.uuid() - const lookupPath = `${appPath}/rt/lookup` super({ appId: appId || undefined, - lookupPath, debugMode, connectQuery() { const userToken = app.getCurrentUserToken() @@ -31,10 +24,13 @@ export default class RT extends BackendlessRTClient { } }, + getAppInfo: async () => { + return await app.appInfoPromise() + }, + socketConfigTransform: async socketConfig => { if (!appId) { - const appInfo = await loadAppInfo(appPath) - + const appInfo = await app.appInfoPromise() socketConfig.url = `${socketConfig.host}/${appInfo.appId}` socketConfig.options.path = `/${appInfo.appId}` socketConfig.options.query.apiKey = appInfo.apiKey diff --git a/src/urls.js b/src/urls.js index 4fc28b42..506bcf87 100644 --- a/src/urls.js +++ b/src/urls.js @@ -7,6 +7,12 @@ export default class Urls { return this.app.appPath } + // app info + + appInfo() { + return `${this.root()}/info` + } + //automations automation() { From 037935fdd170b1214069652c0cb52bb47c0a012d Mon Sep 17 00:00:00 2001 From: macbookpro Date: Wed, 10 Jul 2024 01:39:40 +0300 Subject: [PATCH 2/5] API-3 - Extend API Info response --- src/index.js | 6 +++--- src/rt.js | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/index.js b/src/index.js index 993bd534..21dc2188 100644 --- a/src/index.js +++ b/src/index.js @@ -168,12 +168,12 @@ class Backendless { return app } - appInfoPromise() { - if (!this.__appInfoPromise) { + appInfoPromise(reset) { + if (reset || !this.__appInfoPromise) { this.__appInfoPromise = new Promise((resolve, reject) => { this.request.get({ url: this.urls.appInfo() }) .then(resolve) - .catch(reject); + .catch(reject) }) } diff --git a/src/rt.js b/src/rt.js index b8f5d4bd..a3a87279 100644 --- a/src/rt.js +++ b/src/rt.js @@ -24,8 +24,8 @@ export default class RT extends BackendlessRTClient { } }, - getAppInfo: async () => { - return await app.appInfoPromise() + hostResolver(){ + return app.appInfoPromise().then(({ rtURL }) => rtURL) }, socketConfigTransform: async socketConfig => { From bd7e99a8dfbd27c40c7c61e737465f792f3266c8 Mon Sep 17 00:00:00 2001 From: macbookpro Date: Mon, 6 Jan 2025 16:13:41 +0200 Subject: [PATCH 3/5] API-3 - Extend API Info response --- test/unit/helpers/rt.js | 4 +- test/unit/specs/data/rt.js | 7 +- test/unit/specs/logging.js | 48 +++++++------ test/unit/specs/messaging/channel.js | 5 +- test/unit/specs/rt/basic.js | 104 +++++++++++++++------------ 5 files changed, 97 insertions(+), 71 deletions(-) diff --git a/test/unit/helpers/rt.js b/test/unit/helpers/rt.js index 786a2533..7af8db1a 100644 --- a/test/unit/helpers/rt.js +++ b/test/unit/helpers/rt.js @@ -95,7 +95,9 @@ export function createMockRTServer(appId = APP_ID) { socket.on(RTSocketEvents.SUB_ON, data => onMessage(RTSocketEvents.SUB_ON, data)) socket.on(RTSocketEvents.SUB_OFF, data => onMessage(RTSocketEvents.SUB_OFF, data)) - onMessage(RTSocketEvents.CONNECT, { apiKey, clientId, userToken: userToken === 'null' ? null : userToken }) + onMessage(RTSocketEvents.CONNECT, { + apiKey, clientId, userToken: userToken === 'null' ? null : userToken, connectionId: socket.id + }) }) const emit = (type, data) => { diff --git a/test/unit/specs/data/rt.js b/test/unit/specs/data/rt.js index 319a4f7a..80ad0bcd 100644 --- a/test/unit/specs/data/rt.js +++ b/test/unit/specs/data/rt.js @@ -1,7 +1,7 @@ import { expect } from 'chai' import { describe, it } from 'mocha' -import Backendless, { forTest, prepareMockRequest, createMockRTServer, Utils } from '../../helpers/sandbox' +import Backendless, { forTest, createMockRTServer, Utils } from '../../helpers/sandbox' describe(' RT', function() { @@ -11,6 +11,7 @@ describe(' RT', function() { const tableName = 'TEST_TABLE_NAME' const relationColumnName = 'TEST_REL_COLUMN_NAME' + const rtURL = 'http://localhost:12345' let rtClient @@ -20,7 +21,9 @@ describe(' RT', function() { beforeEach(async () => { rtClient = await createMockRTServer() - prepareMockRequest(rtClient.host) + Backendless.appInfoPromise = chai.spy(() => + Promise.resolve({ rtURL }) + ) dataStore = Backendless.Data.of(tableName) rtHandlers = dataStore.rt() diff --git a/test/unit/specs/logging.js b/test/unit/specs/logging.js index a33f2cc9..28e47c0e 100644 --- a/test/unit/specs/logging.js +++ b/test/unit/specs/logging.js @@ -570,16 +570,20 @@ describe('', function() { }) it('should apply log levels to logging config', async () => { - prepareMockRequest([ - { - name : loggerName, - level: 'FATAL' - }, - { - name : 'Global logger', - level: 'ERROR' - } - ]) + Backendless.appInfoPromise = chai.spy(() => + Promise.resolve({ + loggers: [ + { + name : loggerName, + level: 'FATAL' + }, + { + name : 'Global logger', + level: 'ERROR' + } + ] + }) + ) Backendless.initApp({ appId : APP_ID, @@ -620,16 +624,20 @@ describe('', function() { }) it('should ignore all logs when global is OFF', async () => { - prepareMockRequest([ - { - name : loggerName, - level: 'INFO' - }, - { - name : 'Global logger', - level: 'OFF' - } - ]) + Backendless.appInfoPromise = chai.spy(() => + Promise.resolve({ + loggers: [ + { + name : loggerName, + level: 'INFO' + }, + { + name : 'Global logger', + level: 'OFF' + } + ] + }) + ) Backendless.initApp({ appId : APP_ID, diff --git a/test/unit/specs/messaging/channel.js b/test/unit/specs/messaging/channel.js index fedef0df..5d0406c5 100644 --- a/test/unit/specs/messaging/channel.js +++ b/test/unit/specs/messaging/channel.js @@ -11,6 +11,7 @@ describe(' Channel', function() { const channelName = 'TEST_CHANNEL_NAME' const message = 'TEST_MESSAGE' + const rtURL = 'http://localhost:12345' const fakeResult = { foo: 123 } @@ -22,7 +23,9 @@ describe(' Channel', function() { beforeEach(async () => { rtClient = await createMockRTServer() - prepareMockRequest(rtClient.host) + Backendless.appInfoPromise = chai.spy(() => + Promise.resolve({ rtURL }) + ) channel = Backendless.Messaging.subscribe(channelName) diff --git a/test/unit/specs/rt/basic.js b/test/unit/specs/rt/basic.js index 29a02102..a099b54d 100644 --- a/test/unit/specs/rt/basic.js +++ b/test/unit/specs/rt/basic.js @@ -1,11 +1,13 @@ -import { expect } from 'chai' +import chai, { expect } from 'chai' +import spies from 'chai-spies' import { describe, it } from 'mocha' +chai.use(spies) + import Backendless, { forTest, prepareMockRequest, createMockRTServer, - APP_PATH, API_KEY, Utils } from '../../helpers/sandbox' @@ -19,12 +21,17 @@ describe(' Basic', function() { let rtClient const channelName = 'TEST_CHANNEL_NAME' + const host = 'http://localhost:12345' describe('with AppID and API Key', function() { const backendlessApp = Backendless before(async () => { rtClient = await createMockRTServer() + + backendlessApp.appInfoPromise = chai.spy(() => + Promise.resolve({ rtURL: host }) + ) }) after(async () => { @@ -33,8 +40,8 @@ describe(' Basic', function() { rtClient.stop() }) - it('lookup', async () => { - const req1 = prepareMockRequest(rtClient.host) + it('connect and subscribe', async () => { + expect(backendlessApp.appInfoPromise).to.not.have.been.called backendlessApp.Messaging.subscribe(channelName) @@ -46,17 +53,13 @@ describe(' Basic', function() { expect(con1.userToken).to.be.equal(null) expect(con1.clientId).to.be.a('string') - expect(req1).to.deep.include({ - method : 'GET', - path : `${APP_PATH}/rt/lookup`, - headers: {}, - body : undefined - }) + expect(backendlessApp.appInfoPromise).to.have.been.called }) - it('lookup with user token', async () => { + it('connected with user token', async () => { + expect(backendlessApp.appInfoPromise).to.not.have.been.called + prepareMockRequest({ objectId: 'test-id', 'user-token': 'test-token-1' }) - prepareMockRequest(rtClient.host) await backendlessApp.UserService.login('login', 'password') @@ -67,12 +70,11 @@ describe(' Basic', function() { expect(con1.apiKey).to.be.equal(API_KEY) expect(con1.userToken).to.be.equal('test-token-1') expect(con1.clientId).to.be.a('string') + expect(backendlessApp.appInfoPromise).to.have.been.called }) it('reconnects after changing debug mode', async () => { - prepareMockRequest(rtClient.host) - prepareMockRequest(rtClient.host) - prepareMockRequest(rtClient.host) + expect(backendlessApp.appInfoPromise).to.not.have.been.called backendlessApp.Messaging.subscribe(channelName) @@ -90,6 +92,10 @@ describe(' Basic', function() { .to.be.equal(con2.clientId) .to.be.equal(con3.clientId) + expect(con1.connectionId) + .to.not.equal(con2.connectionId) + .to.not.equal(con3.connectionId) + expect(con1.apiKey).to.be.equal(API_KEY) expect(con1.userToken).to.be.equal(null) expect(con1.clientId).to.be.a('string') @@ -101,10 +107,13 @@ describe(' Basic', function() { expect(con3.apiKey).to.be.equal(API_KEY) expect(con3.userToken).to.be.equal(null) expect(con3.clientId).to.be.a('string') + + expect(backendlessApp.appInfoPromise).to.have.been.called }) it('updates connection user-token after login/logout', async () => { - prepareMockRequest(rtClient.host) + expect(backendlessApp.appInfoPromise).to.not.have.been.called + prepareMockRequest({ objectId: 'test-id-1', 'user-token': 'test-token-1' }) prepareMockRequest({ objectId: 'test-id-2', 'user-token': 'test-token-2' }) prepareMockRequest() @@ -144,11 +153,12 @@ describe(' Basic', function() { expect(met1.id).to.be.not.equal(met2.id) expect(met1.id).to.be.not.equal(met3.id) expect(met2.id).to.be.not.equal(met3.id) + + expect(backendlessApp.appInfoPromise).to.have.been.called }) it('should update connection user-token after setCurrentUserToken', async () => { - prepareMockRequest(rtClient.host) - prepareMockRequest() + expect(backendlessApp.appInfoPromise).to.not.have.been.called backendlessApp.Messaging.subscribe(channelName) @@ -173,6 +183,8 @@ describe(' Basic', function() { expect(met2.id).to.be.a('string') expect(met2.name).to.be.equal('SET_USER_TOKEN') expect(met2.options).to.be.eql({ userToken: null }) + + expect(backendlessApp.appInfoPromise).to.have.been.called }) it('should not set user-token after setCurrentUserToken', async () => { @@ -196,6 +208,10 @@ describe(' Basic', function() { before(async () => { rtClient = await createMockRTServer(rtAppId) + + backendlessApp.appInfoPromise = chai.spy(() => + Promise.resolve({ appId: rtAppId, apiKey: rtAPIKey, rtURL: host }) + ) }) afterEach(async () => { @@ -208,9 +224,8 @@ describe(' Basic', function() { rtClient.stop() }) - it('lookup', async () => { - const req1 = prepareMockRequest(rtClient.host) - const req2 = prepareMockRequest({ appId: rtAppId, apiKey: rtAPIKey }) + it('connected', async () => { + expect(backendlessApp.appInfoPromise).to.not.have.been.called backendlessApp.Messaging.subscribe(channelName) @@ -222,25 +237,13 @@ describe(' Basic', function() { expect(con1.userToken).to.be.equal(null) expect(con1.clientId).to.be.a('string') - expect(req1).to.deep.include({ - method : 'GET', - path : `${domain}/api/rt/lookup`, - headers: {}, - body : undefined - }) - - expect(req2).to.deep.include({ - method : 'GET', - path : `${domain}/api/info`, - headers: {}, - body : undefined - }) + expect(backendlessApp.appInfoPromise).to.have.been.called }) - it('lookup with user token', async () => { + it('connection with user token', async () => { + expect(backendlessApp.appInfoPromise).to.not.have.been.called + prepareMockRequest({ objectId: 'test-id', 'user-token': 'test-token-1' }) - prepareMockRequest(rtClient.host) - prepareMockRequest({ appId: rtAppId, apiKey: rtAPIKey }) await backendlessApp.UserService.login('login', 'password') @@ -251,15 +254,12 @@ describe(' Basic', function() { expect(con1.apiKey).to.be.equal(rtAPIKey) expect(con1.userToken).to.be.equal('test-token-1') expect(con1.clientId).to.be.a('string') + + expect(backendlessApp.appInfoPromise).to.have.been.called }) it('reconnects after changing debug mode', async () => { - prepareMockRequest(rtClient.host) - prepareMockRequest({ appId: rtAppId, apiKey: rtAPIKey }) - prepareMockRequest(rtClient.host) - prepareMockRequest({ appId: rtAppId, apiKey: rtAPIKey }) - prepareMockRequest(rtClient.host) - prepareMockRequest({ appId: rtAppId, apiKey: rtAPIKey }) + expect(backendlessApp.appInfoPromise).to.not.have.been.called backendlessApp.Messaging.subscribe(channelName) @@ -277,6 +277,10 @@ describe(' Basic', function() { .to.be.equal(con2.clientId) .to.be.equal(con3.clientId) + expect(con1.connectionId) + .to.not.equal(con2.connectionId) + .to.not.equal(con3.connectionId) + expect(con1.apiKey).to.be.equal(rtAPIKey) expect(con1.userToken).to.be.equal(null) expect(con1.clientId).to.be.a('string') @@ -288,11 +292,13 @@ describe(' Basic', function() { expect(con3.apiKey).to.be.equal(rtAPIKey) expect(con3.userToken).to.be.equal(null) expect(con3.clientId).to.be.a('string') + + expect(backendlessApp.appInfoPromise).to.have.been.called }) it('updates connection user-token after login/logout', async () => { - prepareMockRequest(rtClient.host) - prepareMockRequest({ appId: rtAppId, apiKey: rtAPIKey }) + expect(backendlessApp.appInfoPromise).to.not.have.been.called + prepareMockRequest({ objectId: 'test-id-1', 'user-token': 'test-token-1' }) prepareMockRequest({ objectId: 'test-id-2', 'user-token': 'test-token-2' }) prepareMockRequest() @@ -332,11 +338,13 @@ describe(' Basic', function() { expect(met1.id).to.be.not.equal(met2.id) expect(met1.id).to.be.not.equal(met3.id) expect(met2.id).to.be.not.equal(met3.id) + + expect(backendlessApp.appInfoPromise).to.have.been.called }) it('should update connection user-token after setCurrentUserToken', async () => { - prepareMockRequest(rtClient.host) - prepareMockRequest({ appId: rtAppId, apiKey: rtAPIKey }) + expect(backendlessApp.appInfoPromise).to.not.have.been.called + prepareMockRequest() backendlessApp.Messaging.subscribe(channelName) @@ -362,6 +370,8 @@ describe(' Basic', function() { expect(met2.id).to.be.a('string') expect(met2.name).to.be.equal('SET_USER_TOKEN') expect(met2.options).to.be.eql({ userToken: null }) + + expect(backendlessApp.appInfoPromise).to.have.been.called }) it('should not set user-token after setCurrentUserToken', async () => { From 68b26aadbe39bfabc04cc15e5e63966df6f547de Mon Sep 17 00:00:00 2001 From: Vladimir Upirov <4648606+Valodya@users.noreply.github.com> Date: Tue, 4 Feb 2025 13:57:58 +0200 Subject: [PATCH 4/5] - upgrade modules --- package-lock.json | 56 +++++++++++++++------------------- package.json | 8 ++--- test/unit/specs/files/basic.js | 4 +-- 3 files changed, 30 insertions(+), 38 deletions(-) diff --git a/package-lock.json b/package-lock.json index bcf8ad68..92c00051 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6,12 +6,12 @@ "packages": { "": { "name": "backendless", - "version": "7.3.0", + "version": "7.3.1", "license": "ISC", "dependencies": { - "@babel/runtime": "^7.21.5", - "backendless-request": "^0.7.1", - "backendless-rt-client": "0.3.0" + "@babel/runtime": "^7.26.7", + "backendless-request": "^0.8.0", + "backendless-rt-client": "0.5.0" }, "devDependencies": { "@babel/cli": "^7.21.5", @@ -45,7 +45,7 @@ "nyc": "^15.1.0", "request": "^2.88.2", "rimraf": "^3.0.2", - "socket.io": "^2.3.0", + "socket.io": "^2.5.1", "terser-webpack-plugin": "^2.3.8", "typescript": "^4.5.4", "watch": "^1.0.2", @@ -2560,20 +2560,20 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.5.tgz", - "integrity": "sha512-ecjvYlnAaZ/KVneE/OdKYBYfgXV3Ptu6zQWmgEF7vwKhQnvVS6bjMD2XYgj+SNvQ1GfK/pjgokfPkC/2CO8CuA==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.7.tgz", + "integrity": "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==", "dependencies": { - "regenerator-runtime": "^0.13.11" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/runtime/node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "node_modules/@babel/template": { "version": "7.24.0", @@ -3794,29 +3794,21 @@ } }, "node_modules/backendless-request": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/backendless-request/-/backendless-request-0.7.1.tgz", - "integrity": "sha512-PBbM8/FqBOQaAaEUO6el5ttF27w3FG0ARrDkpFRJgaa8q8FyEPnOiuX85zbH0KAO8VqudbOE5dCjyxqJI044kA==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/backendless-request/-/backendless-request-0.8.0.tgz", + "integrity": "sha512-ss+NePL7KiF1Q+NXqldTfwMC2X8yPVez7osvtghYZwygsBZvMcD+L3b8kG1i0O4tXn7jhiCXD60ehJz6fHnnOA==", "dependencies": { "form-data": "^2.3.1" } }, "node_modules/backendless-rt-client": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/backendless-rt-client/-/backendless-rt-client-0.3.0.tgz", - "integrity": "sha512-1L9KvFdV+4U2vLnR2eNPEc/sDi5s8e/107mWTdBSIp9SJki1rXmn6K2U1fn8j3FeBBAb1pWZrxYuilMJ+VVAeg==", - "dependencies": { - "@babel/runtime": "^7.18.2", - "backendless-request": "^0.4.3", - "socket.io-client": "^2.0.3" - } - }, - "node_modules/backendless-rt-client/node_modules/backendless-request": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/backendless-request/-/backendless-request-0.4.3.tgz", - "integrity": "sha512-VF6kFBin9WPH+8pBiRq1oLsA/mHUEsW2dPO7yUbFSJjR/7rNogj7tauGd/KXsHyg0bIi9SyVd9UcJhb3dYE9lQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/backendless-rt-client/-/backendless-rt-client-0.5.0.tgz", + "integrity": "sha512-sUX6fdLJn4d7Vocxmau3qtRyW+WxkNfLwmTFHXtKRcyOF0yo+9GLHPaJ0HEpHwrxoAcehTMxdA2Ynwh8VqNK1g==", "dependencies": { - "form-data": "^2.3.1" + "@babel/runtime": "^7.26.7", + "backendless-request": "^0.8.0", + "socket.io-client": "^2.5.0" } }, "node_modules/backo2": { @@ -10383,9 +10375,9 @@ } }, "node_modules/socket.io": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.5.0.tgz", - "integrity": "sha512-gGunfS0od3VpwDBpGwVkzSZx6Aqo9uOcf1afJj2cKnKFAoyl16fvhpsUhmUFd4Ldbvl5JvRQed6eQw6oQp6n8w==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.5.1.tgz", + "integrity": "sha512-eaTE4tBKRD6RFoetquMbxgvcpvoDtRyIlkIMI/SMK2bsKvbENTsDeeu4GJ/z9c90yOWxB7b/eC+yKLPbHnH6bA==", "dev": true, "dependencies": { "debug": "~4.1.0", diff --git a/package.json b/package.json index 6ec89fef..35055570 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "nyc": "^15.1.0", "request": "^2.88.2", "rimraf": "^3.0.2", - "socket.io": "^2.3.0", + "socket.io": "^2.5.1", "terser-webpack-plugin": "^2.3.8", "typescript": "^4.5.4", "watch": "^1.0.2", @@ -90,8 +90,8 @@ "webpack-cli": "^5.0.2" }, "dependencies": { - "@babel/runtime": "^7.21.5", - "backendless-request": "^0.7.1", - "backendless-rt-client": "0.3.0" + "@babel/runtime": "^7.26.7", + "backendless-request": "^0.8.0", + "backendless-rt-client": "0.5.0" } } diff --git a/test/unit/specs/files/basic.js b/test/unit/specs/files/basic.js index a20c7a95..7614fa41 100644 --- a/test/unit/specs/files/basic.js +++ b/test/unit/specs/files/basic.js @@ -689,14 +689,14 @@ describe(' Basic', function() { expect(req1).to.deep.include({ method : 'POST', - path : `${APP_PATH}/files/test/path/`, + path : `${APP_PATH}/files/test/path`, headers: {}, body : undefined }) expect(req2).to.deep.include({ method : 'POST', - path : `${APP_PATH}/files/test/path/`, + path : `${APP_PATH}/files/test/path`, headers: {}, body : undefined }) From 96e0d30846f35766e1db9c624cf22a57b82304b7 Mon Sep 17 00:00:00 2001 From: Vladimir Upirov <4648606+Valodya@users.noreply.github.com> Date: Tue, 4 Feb 2025 14:03:13 +0200 Subject: [PATCH 5/5] - upgrade modules --- package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 92c00051..c7a524e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "backendless", - "version": "7.3.1", + "version": "7.3.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "backendless", - "version": "7.3.1", + "version": "7.3.7", "license": "ISC", "dependencies": { "@babel/runtime": "^7.26.7",