Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

iot-js-sdk

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

iot-js-sdk - npm Package Compare versions

Comparing version 3.0.1 to 3.1.0

19

container/container-controller.js

@@ -55,2 +55,19 @@ 'use strict';

ContainerController.prototype.getAllContainers = function getAllContainers() {
var result = [];
return this.connection.get('/containers').then(function (data) {
return data.map(function (datum) {
result.push({
id: datum.id,
fillLevel: datum.fillLevel,
latitude: datum.latitude,
longitude: datum.longitude,
lastUpdated: datum.lastUpdated
});
});
}).then(function () {
return result;
});
};
ContainerController.prototype.subscribeToContainer = function subscribeToContainer(containerId, email) {

@@ -74,2 +91,2 @@ if (typeof containerId !== 'string') {

exports.default = ContainerController;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250YWluZXIvY29udGFpbmVyLWNvbnRyb2xsZXIuanMiXSwibmFtZXMiOlsiQ29udGFpbmVyQ29udHJvbGxlciIsImNvbm5lY3Rpb24iLCJFcnJvciIsImdldENvbnRhaW5lciIsImlkIiwiUHJvbWlzZSIsInJlamVjdCIsImdldCIsInRoZW4iLCJkYXRhIiwiZmlsbExldmVsIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJsYXN0VXBkYXRlZCIsImdldENvbnRhaW5lcnNOZWFyTWUiLCJyZXN1bHQiLCJtYXAiLCJwdXNoIiwiZGF0dW0iLCJzdWJzY3JpYmVUb0NvbnRhaW5lciIsImNvbnRhaW5lcklkIiwiZW1haWwiLCJwb3N0Il0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7Ozs7O0lBRXFCQSxtQjtBQUNuQiwrQkFBWUMsVUFBWixFQUF3QjtBQUFBOztBQUN0QixRQUFJLEVBQUVBLDBDQUFGLENBQUosRUFBeUM7QUFDdkMsWUFBTSxJQUFJQyxLQUFKLENBQVUsdURBQVYsQ0FBTjtBQUNEO0FBQ0QsU0FBS0QsVUFBTCxHQUFrQkEsVUFBbEI7QUFDRDs7Z0NBRURFLFkseUJBQWFDLEUsRUFBSTtBQUNmLFFBQUksT0FBT0EsRUFBUCxLQUFjLFFBQWxCLEVBQTRCO0FBQzFCLGFBQU9DLFFBQVFDLE1BQVIsQ0FBZSxJQUFJSixLQUFKLENBQVUsMkNBQVYsQ0FBZixDQUFQO0FBQ0Q7QUFDRCxXQUFPLEtBQUtELFVBQUwsQ0FBZ0JNLEdBQWhCLENBQW9CLGlCQUFpQkgsRUFBckMsRUFDSkksSUFESSxDQUNDO0FBQUEsYUFBUztBQUNiSixZQUFJSyxLQUFLTCxFQURJO0FBRWJNLG1CQUFXRCxLQUFLQyxTQUZIO0FBR2JDLGtCQUFVRixLQUFLRSxRQUhGO0FBSWJDLG1CQUFXSCxLQUFLRyxTQUpIO0FBS2JDLHFCQUFhSixLQUFLSTtBQUxMLE9BQVQ7QUFBQSxLQURELENBQVA7QUFRRCxHOztnQ0FFREMsbUIsZ0NBQW9CSCxRLEVBQVVDLFMsRUFBVztBQUN2QyxRQUFNRyxTQUFTLEVBQWY7QUFDQSxXQUFPLEtBQUtkLFVBQUwsQ0FBZ0JNLEdBQWhCLENBQW9CLHdCQUF3QkksUUFBeEIsR0FBbUMsR0FBbkMsR0FBeUNDLFNBQTdELEVBQ0pKLElBREksQ0FDQztBQUFBLGFBQVFDLEtBQUtPLEdBQUwsQ0FBUyxpQkFBUztBQUM5QkQsZUFBT0UsSUFBUCxDQUFZO0FBQ1ZiLGNBQUljLE1BQU1kLEVBREE7QUFFVk0scUJBQVdRLE1BQU1SLFNBRlA7QUFHVkMsb0JBQVVPLE1BQU1QLFFBSE47QUFJVkMscUJBQVdNLE1BQU1OLFNBSlA7QUFLVkMsdUJBQWFLLE1BQU1MO0FBTFQsU0FBWjtBQU9ELE9BUmEsQ0FBUjtBQUFBLEtBREQsRUFVSkwsSUFWSSxDQVVDO0FBQUEsYUFBTU8sTUFBTjtBQUFBLEtBVkQsQ0FBUDtBQVdELEc7O2dDQUVESSxvQixpQ0FBcUJDLFcsRUFBYUMsSyxFQUFPO0FBQ3ZDLFFBQUksT0FBT0QsV0FBUCxLQUF1QixRQUEzQixFQUFxQztBQUNuQyxhQUFPZixRQUFRQyxNQUFSLENBQWUsSUFBSUosS0FBSixDQUFVLG9EQUFWLENBQWYsQ0FBUDtBQUNEO0FBQ0QsUUFBSSxPQUFPbUIsS0FBUCxLQUFpQixRQUFyQixFQUErQjtBQUM3QixhQUFPaEIsUUFBUUMsTUFBUixDQUFlLElBQUlKLEtBQUosQ0FBVSw4Q0FBVixDQUFmLENBQVA7QUFDRDtBQUNELFFBQU1PLE9BQ0o7QUFDRUwsVUFBSWdCLFdBRE47QUFFRUM7QUFGRixLQURGO0FBS0EsV0FBTyxLQUFLcEIsVUFBTCxDQUFnQnFCLElBQWhCLENBQXFCYixJQUFyQixFQUEyQix1QkFBM0IsQ0FBUDtBQUNELEc7Ozs7O2tCQWxEa0JULG1CIiwiZmlsZSI6ImNvbnRhaW5lci1jb250cm9sbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbm5lY3Rpb24gZnJvbSAnLi4vY29ubmVjdGlvbi9jb25uZWN0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29udGFpbmVyQ29udHJvbGxlciB7XG4gIGNvbnN0cnVjdG9yKGNvbm5lY3Rpb24pIHtcbiAgICBpZiAoIShjb25uZWN0aW9uIGluc3RhbmNlb2YgQ29ubmVjdGlvbikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY29ubmVjdGlvbiBwYXJhbWV0ZXIgb2YgdHlwZSBcIkNvbm5lY3Rpb25cIiBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICB0aGlzLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0Q29udGFpbmVyKGlkKSB7XG4gICAgaWYgKHR5cGVvZiBpZCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ2lkIHBhcmFtZXRlciBvZiB0eXBlIFwic3RyaW5nXCIgaXMgcmVxdWlyZWQnKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24uZ2V0KCcvY29udGFpbmVycy8nICsgaWQpXG4gICAgICAudGhlbihkYXRhID0+ICh7XG4gICAgICAgIGlkOiBkYXRhLmlkLFxuICAgICAgICBmaWxsTGV2ZWw6IGRhdGEuZmlsbExldmVsLFxuICAgICAgICBsYXRpdHVkZTogZGF0YS5sYXRpdHVkZSxcbiAgICAgICAgbG9uZ2l0dWRlOiBkYXRhLmxvbmdpdHVkZSxcbiAgICAgICAgbGFzdFVwZGF0ZWQ6IGRhdGEubGFzdFVwZGF0ZWRcbiAgICAgIH0pKTtcbiAgfVxuXG4gIGdldENvbnRhaW5lcnNOZWFyTWUobGF0aXR1ZGUsIGxvbmdpdHVkZSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24uZ2V0KCcvY29udGFpbmVycy9uZWFybWUvJyArIGxhdGl0dWRlICsgJy8nICsgbG9uZ2l0dWRlKVxuICAgICAgLnRoZW4oZGF0YSA9PiBkYXRhLm1hcChkYXR1bSA9PiB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICBpZDogZGF0dW0uaWQsXG4gICAgICAgICAgZmlsbExldmVsOiBkYXR1bS5maWxsTGV2ZWwsXG4gICAgICAgICAgbGF0aXR1ZGU6IGRhdHVtLmxhdGl0dWRlLFxuICAgICAgICAgIGxvbmdpdHVkZTogZGF0dW0ubG9uZ2l0dWRlLFxuICAgICAgICAgIGxhc3RVcGRhdGVkOiBkYXR1bS5sYXN0VXBkYXRlZFxuICAgICAgICB9KTtcbiAgICAgIH0pKVxuICAgICAgLnRoZW4oKCkgPT4gcmVzdWx0KTtcbiAgfVxuXG4gIHN1YnNjcmliZVRvQ29udGFpbmVyKGNvbnRhaW5lcklkLCBlbWFpbCkge1xuICAgIGlmICh0eXBlb2YgY29udGFpbmVySWQgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdjb250YWluZXJJZCBwYXJhbWV0ZXIgb2YgdHlwZSBcInN0cmluZ1wiIGlzIHJlcXVpcmVkJykpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGVtYWlsICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignZW1haWwgcGFyYW1ldGVyIG9mIHR5cGUgXCJzdHJpbmdcIiBpcyByZXF1aXJlZCcpKTtcbiAgICB9XG4gICAgY29uc3QgZGF0YSA9XG4gICAgICB7XG4gICAgICAgIGlkOiBjb250YWluZXJJZCxcbiAgICAgICAgZW1haWxcbiAgICAgIH07XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5wb3N0KGRhdGEsICcvY29udGFpbmVycy9zdWJzY3JpYmUnKTtcbiAgfVxufVxuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250YWluZXIvY29udGFpbmVyLWNvbnRyb2xsZXIuanMiXSwibmFtZXMiOlsiQ29udGFpbmVyQ29udHJvbGxlciIsImNvbm5lY3Rpb24iLCJFcnJvciIsImdldENvbnRhaW5lciIsImlkIiwiUHJvbWlzZSIsInJlamVjdCIsImdldCIsInRoZW4iLCJkYXRhIiwiZmlsbExldmVsIiwibGF0aXR1ZGUiLCJsb25naXR1ZGUiLCJsYXN0VXBkYXRlZCIsImdldENvbnRhaW5lcnNOZWFyTWUiLCJyZXN1bHQiLCJtYXAiLCJwdXNoIiwiZGF0dW0iLCJnZXRBbGxDb250YWluZXJzIiwic3Vic2NyaWJlVG9Db250YWluZXIiLCJjb250YWluZXJJZCIsImVtYWlsIiwicG9zdCJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBOzs7Ozs7OztJQUVxQkEsbUI7QUFDbkIsK0JBQVlDLFVBQVosRUFBd0I7QUFBQTs7QUFDdEIsUUFBSSxFQUFFQSwwQ0FBRixDQUFKLEVBQXlDO0FBQ3ZDLFlBQU0sSUFBSUMsS0FBSixDQUFVLHVEQUFWLENBQU47QUFDRDtBQUNELFNBQUtELFVBQUwsR0FBa0JBLFVBQWxCO0FBQ0Q7O2dDQUVERSxZLHlCQUFhQyxFLEVBQUk7QUFDZixRQUFJLE9BQU9BLEVBQVAsS0FBYyxRQUFsQixFQUE0QjtBQUMxQixhQUFPQyxRQUFRQyxNQUFSLENBQWUsSUFBSUosS0FBSixDQUFVLDJDQUFWLENBQWYsQ0FBUDtBQUNEO0FBQ0QsV0FBTyxLQUFLRCxVQUFMLENBQWdCTSxHQUFoQixDQUFvQixpQkFBaUJILEVBQXJDLEVBQ0pJLElBREksQ0FDQztBQUFBLGFBQVM7QUFDYkosWUFBSUssS0FBS0wsRUFESTtBQUViTSxtQkFBV0QsS0FBS0MsU0FGSDtBQUdiQyxrQkFBVUYsS0FBS0UsUUFIRjtBQUliQyxtQkFBV0gsS0FBS0csU0FKSDtBQUtiQyxxQkFBYUosS0FBS0k7QUFMTCxPQUFUO0FBQUEsS0FERCxDQUFQO0FBUUQsRzs7Z0NBRURDLG1CLGdDQUFvQkgsUSxFQUFVQyxTLEVBQVc7QUFDdkMsUUFBTUcsU0FBUyxFQUFmO0FBQ0EsV0FBTyxLQUFLZCxVQUFMLENBQWdCTSxHQUFoQixDQUFvQix3QkFBd0JJLFFBQXhCLEdBQW1DLEdBQW5DLEdBQXlDQyxTQUE3RCxFQUNKSixJQURJLENBQ0M7QUFBQSxhQUFRQyxLQUFLTyxHQUFMLENBQVMsaUJBQVM7QUFDOUJELGVBQU9FLElBQVAsQ0FBWTtBQUNWYixjQUFJYyxNQUFNZCxFQURBO0FBRVZNLHFCQUFXUSxNQUFNUixTQUZQO0FBR1ZDLG9CQUFVTyxNQUFNUCxRQUhOO0FBSVZDLHFCQUFXTSxNQUFNTixTQUpQO0FBS1ZDLHVCQUFhSyxNQUFNTDtBQUxULFNBQVo7QUFPRCxPQVJhLENBQVI7QUFBQSxLQURELEVBVUpMLElBVkksQ0FVQztBQUFBLGFBQU1PLE1BQU47QUFBQSxLQVZELENBQVA7QUFXRCxHOztnQ0FFREksZ0IsK0JBQWtCO0FBQ2hCLFFBQU1KLFNBQVMsRUFBZjtBQUNBLFdBQU8sS0FBS2QsVUFBTCxDQUFnQk0sR0FBaEIsQ0FBb0IsYUFBcEIsRUFDSkMsSUFESSxDQUNDO0FBQUEsYUFBUUMsS0FBS08sR0FBTCxDQUFTLGlCQUFTO0FBQzlCRCxlQUFPRSxJQUFQLENBQVk7QUFDVmIsY0FBSWMsTUFBTWQsRUFEQTtBQUVWTSxxQkFBV1EsTUFBTVIsU0FGUDtBQUdWQyxvQkFBVU8sTUFBTVAsUUFITjtBQUlWQyxxQkFBV00sTUFBTU4sU0FKUDtBQUtWQyx1QkFBYUssTUFBTUw7QUFMVCxTQUFaO0FBT0QsT0FSYSxDQUFSO0FBQUEsS0FERCxFQVVKTCxJQVZJLENBVUM7QUFBQSxhQUFNTyxNQUFOO0FBQUEsS0FWRCxDQUFQO0FBV0QsRzs7Z0NBRURLLG9CLGlDQUFxQkMsVyxFQUFhQyxLLEVBQU87QUFDdkMsUUFBSSxPQUFPRCxXQUFQLEtBQXVCLFFBQTNCLEVBQXFDO0FBQ25DLGFBQU9oQixRQUFRQyxNQUFSLENBQWUsSUFBSUosS0FBSixDQUFVLG9EQUFWLENBQWYsQ0FBUDtBQUNEO0FBQ0QsUUFBSSxPQUFPb0IsS0FBUCxLQUFpQixRQUFyQixFQUErQjtBQUM3QixhQUFPakIsUUFBUUMsTUFBUixDQUFlLElBQUlKLEtBQUosQ0FBVSw4Q0FBVixDQUFmLENBQVA7QUFDRDtBQUNELFFBQU1PLE9BQ0o7QUFDRUwsVUFBSWlCLFdBRE47QUFFRUM7QUFGRixLQURGO0FBS0EsV0FBTyxLQUFLckIsVUFBTCxDQUFnQnNCLElBQWhCLENBQXFCZCxJQUFyQixFQUEyQix1QkFBM0IsQ0FBUDtBQUNELEc7Ozs7O2tCQWpFa0JULG1CIiwiZmlsZSI6ImNvbnRhaW5lci1jb250cm9sbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbm5lY3Rpb24gZnJvbSAnLi4vY29ubmVjdGlvbi9jb25uZWN0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29udGFpbmVyQ29udHJvbGxlciB7XG4gIGNvbnN0cnVjdG9yKGNvbm5lY3Rpb24pIHtcbiAgICBpZiAoIShjb25uZWN0aW9uIGluc3RhbmNlb2YgQ29ubmVjdGlvbikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY29ubmVjdGlvbiBwYXJhbWV0ZXIgb2YgdHlwZSBcIkNvbm5lY3Rpb25cIiBpcyByZXF1aXJlZCcpO1xuICAgIH1cbiAgICB0aGlzLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0Q29udGFpbmVyKGlkKSB7XG4gICAgaWYgKHR5cGVvZiBpZCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ2lkIHBhcmFtZXRlciBvZiB0eXBlIFwic3RyaW5nXCIgaXMgcmVxdWlyZWQnKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24uZ2V0KCcvY29udGFpbmVycy8nICsgaWQpXG4gICAgICAudGhlbihkYXRhID0+ICh7XG4gICAgICAgIGlkOiBkYXRhLmlkLFxuICAgICAgICBmaWxsTGV2ZWw6IGRhdGEuZmlsbExldmVsLFxuICAgICAgICBsYXRpdHVkZTogZGF0YS5sYXRpdHVkZSxcbiAgICAgICAgbG9uZ2l0dWRlOiBkYXRhLmxvbmdpdHVkZSxcbiAgICAgICAgbGFzdFVwZGF0ZWQ6IGRhdGEubGFzdFVwZGF0ZWRcbiAgICAgIH0pKTtcbiAgfVxuXG4gIGdldENvbnRhaW5lcnNOZWFyTWUobGF0aXR1ZGUsIGxvbmdpdHVkZSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24uZ2V0KCcvY29udGFpbmVycy9uZWFybWUvJyArIGxhdGl0dWRlICsgJy8nICsgbG9uZ2l0dWRlKVxuICAgICAgLnRoZW4oZGF0YSA9PiBkYXRhLm1hcChkYXR1bSA9PiB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICBpZDogZGF0dW0uaWQsXG4gICAgICAgICAgZmlsbExldmVsOiBkYXR1bS5maWxsTGV2ZWwsXG4gICAgICAgICAgbGF0aXR1ZGU6IGRhdHVtLmxhdGl0dWRlLFxuICAgICAgICAgIGxvbmdpdHVkZTogZGF0dW0ubG9uZ2l0dWRlLFxuICAgICAgICAgIGxhc3RVcGRhdGVkOiBkYXR1bS5sYXN0VXBkYXRlZFxuICAgICAgICB9KTtcbiAgICAgIH0pKVxuICAgICAgLnRoZW4oKCkgPT4gcmVzdWx0KTtcbiAgfVxuXG4gIGdldEFsbENvbnRhaW5lcnMoKXtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uLmdldCgnL2NvbnRhaW5lcnMnKVxuICAgICAgLnRoZW4oZGF0YSA9PiBkYXRhLm1hcChkYXR1bSA9PiB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICBpZDogZGF0dW0uaWQsXG4gICAgICAgICAgZmlsbExldmVsOiBkYXR1bS5maWxsTGV2ZWwsXG4gICAgICAgICAgbGF0aXR1ZGU6IGRhdHVtLmxhdGl0dWRlLFxuICAgICAgICAgIGxvbmdpdHVkZTogZGF0dW0ubG9uZ2l0dWRlLFxuICAgICAgICAgIGxhc3RVcGRhdGVkOiBkYXR1bS5sYXN0VXBkYXRlZFxuICAgICAgICB9KTtcbiAgICAgIH0pKVxuICAgICAgLnRoZW4oKCkgPT4gcmVzdWx0KTtcbiAgfVxuXG4gIHN1YnNjcmliZVRvQ29udGFpbmVyKGNvbnRhaW5lcklkLCBlbWFpbCkge1xuICAgIGlmICh0eXBlb2YgY29udGFpbmVySWQgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdjb250YWluZXJJZCBwYXJhbWV0ZXIgb2YgdHlwZSBcInN0cmluZ1wiIGlzIHJlcXVpcmVkJykpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGVtYWlsICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignZW1haWwgcGFyYW1ldGVyIG9mIHR5cGUgXCJzdHJpbmdcIiBpcyByZXF1aXJlZCcpKTtcbiAgICB9XG4gICAgY29uc3QgZGF0YSA9XG4gICAgICB7XG4gICAgICAgIGlkOiBjb250YWluZXJJZCxcbiAgICAgICAgZW1haWxcbiAgICAgIH07XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbi5wb3N0KGRhdGEsICcvY29udGFpbmVycy9zdWJzY3JpYmUnKTtcbiAgfVxufVxuIl19

2

package.json
{
"name": "iot-js-sdk",
"version": "3.0.1",
"version": "3.1.0",
"description": "IoT JavaScript SDK",

@@ -5,0 +5,0 @@ "main": "src/index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc