New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@amplitude/analytics-browser

Package Overview
Dependencies
Maintainers
19
Versions
168
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@amplitude/analytics-browser - npm Package Compare versions

Comparing version 1.6.8 to 1.7.0-beta.0

3

lib/cjs/config.d.ts

@@ -11,2 +11,3 @@ import { AttributionOptions, Event, BrowserOptions, BrowserConfig as IBrowserConfig, Storage, TrackingOptions, TransportType, UserSession, SessionManager as ISessionManager } from '@amplitude/analytics-types';

cookieStorage: MemoryStorage<UserSession>;
cookieUpgrade: boolean;
disableCookies: boolean;

@@ -26,2 +27,3 @@ domain: string;

cookieSecure: boolean;
cookieUpgrade: boolean;
cookieStorage: Storage<UserSession>;

@@ -52,2 +54,3 @@ disableCookies: boolean;

cookieStorage: MemoryStorage<UserSession>;
cookieUpgrade: boolean;
disableCookies: boolean;

@@ -54,0 +57,0 @@ domain: string;

12

lib/cjs/config.js

@@ -27,2 +27,3 @@ var _this = this;

cookieStorage: cookieStorage,
cookieUpgrade: true,
disableCookies: false,

@@ -42,3 +43,3 @@ domain: '',

var _this = this;
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
var defaultConfig = (0, exports.getDefaultConfig)();

@@ -54,10 +55,11 @@ _this = _super.call(this, tslib_1.__assign(tslib_1.__assign({ flushIntervalMillis: 1000, flushMaxRetries: 5, flushQueueSize: 30 }, options), { apiKey: apiKey, storageProvider: (_a = options === null || options === void 0 ? void 0 : options.storageProvider) !== null && _a !== void 0 ? _a : defaultConfig.storageProvider, transportProvider: (_b = options === null || options === void 0 ? void 0 : options.transportProvider) !== null && _b !== void 0 ? _b : defaultConfig.transportProvider })) || this;

_this.cookieSecure = (_h = options === null || options === void 0 ? void 0 : options.cookieSecure) !== null && _h !== void 0 ? _h : defaultConfig.cookieSecure;
_this.cookieUpgrade = (_j = options === null || options === void 0 ? void 0 : options.cookieUpgrade) !== null && _j !== void 0 ? _j : defaultConfig.cookieUpgrade;
_this.deviceId = options === null || options === void 0 ? void 0 : options.deviceId;
_this.disableCookies = (_j = options === null || options === void 0 ? void 0 : options.disableCookies) !== null && _j !== void 0 ? _j : defaultConfig.disableCookies;
_this.domain = (_k = options === null || options === void 0 ? void 0 : options.domain) !== null && _k !== void 0 ? _k : defaultConfig.domain;
_this.lastEventTime = (_l = _this.lastEventTime) !== null && _l !== void 0 ? _l : options === null || options === void 0 ? void 0 : options.lastEventTime;
_this.disableCookies = (_k = options === null || options === void 0 ? void 0 : options.disableCookies) !== null && _k !== void 0 ? _k : defaultConfig.disableCookies;
_this.domain = (_l = options === null || options === void 0 ? void 0 : options.domain) !== null && _l !== void 0 ? _l : defaultConfig.domain;
_this.lastEventTime = (_m = _this.lastEventTime) !== null && _m !== void 0 ? _m : options === null || options === void 0 ? void 0 : options.lastEventTime;
_this.optOut = Boolean(options === null || options === void 0 ? void 0 : options.optOut);
_this.partnerId = options === null || options === void 0 ? void 0 : options.partnerId;
_this.sessionId = options === null || options === void 0 ? void 0 : options.sessionId;
_this.trackingOptions = (_m = options === null || options === void 0 ? void 0 : options.trackingOptions) !== null && _m !== void 0 ? _m : defaultConfig.trackingOptions;
_this.trackingOptions = (_o = options === null || options === void 0 ? void 0 : options.trackingOptions) !== null && _o !== void 0 ? _o : defaultConfig.trackingOptions;
_this.userId = userId;

@@ -64,0 +66,0 @@ return _this;

@@ -6,7 +6,9 @@ var _this = this;

var analytics_client_common_1 = require("@amplitude/analytics-client-common");
var config_1 = require("../config");
var local_storage_1 = require("../storage/local-storage");
var parseOldCookies = function (apiKey, options) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var storage, oldCookieName, cookies, _a, deviceId, userId, optOut, sessionId, lastEventTime;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
var _b;
return tslib_1.__generator(this, function (_c) {
switch (_c.label) {
case 0:

@@ -16,3 +18,3 @@ storage = new analytics_client_common_1.CookieStorage();

case 1:
if (!(_b.sent()) || (options === null || options === void 0 ? void 0 : options.disableCookies)) {
if (!(_c.sent()) || (options === null || options === void 0 ? void 0 : options.disableCookies)) {
storage = new local_storage_1.LocalStorage();

@@ -22,3 +24,3 @@ }

case 2:
if (!(_b.sent())) {
if (!(_c.sent())) {
return [2 /*return*/, {

@@ -31,3 +33,3 @@ optOut: false,

case 3:
cookies = _b.sent();
cookies = _c.sent();
if (!cookies) {

@@ -38,5 +40,8 @@ return [2 /*return*/, {

}
if (!((_b = options === null || options === void 0 ? void 0 : options.cookieUpgrade) !== null && _b !== void 0 ? _b : (0, config_1.getDefaultConfig)().cookieUpgrade)) return [3 /*break*/, 5];
return [4 /*yield*/, storage.remove(oldCookieName)];
case 4:
_b.sent();
_c.sent();
_c.label = 5;
case 5:
_a = tslib_1.__read(cookies.split('.'), 5), deviceId = _a[0], userId = _a[1], optOut = _a[2], sessionId = _a[3], lastEventTime = _a[4];

@@ -43,0 +48,0 @@ return [2 /*return*/, {

@@ -1,2 +0,2 @@

export declare const VERSION = "1.6.8";
export declare const VERSION = "1.7.0-beta.0";
//# sourceMappingURL=version.d.ts.map
Object.defineProperty(exports, "__esModule", { value: true });
exports.VERSION = void 0;
exports.VERSION = '1.6.8';
exports.VERSION = '1.7.0-beta.0';
//# sourceMappingURL=version.js.map

@@ -11,2 +11,3 @@ import { AttributionOptions, Event, BrowserOptions, BrowserConfig as IBrowserConfig, Storage, TrackingOptions, TransportType, UserSession, SessionManager as ISessionManager } from '@amplitude/analytics-types';

cookieStorage: MemoryStorage<UserSession>;
cookieUpgrade: boolean;
disableCookies: boolean;

@@ -26,2 +27,3 @@ domain: string;

cookieSecure: boolean;
cookieUpgrade: boolean;
cookieStorage: Storage<UserSession>;

@@ -52,2 +54,3 @@ disableCookies: boolean;

cookieStorage: MemoryStorage<UserSession>;
cookieUpgrade: boolean;
disableCookies: boolean;

@@ -54,0 +57,0 @@ domain: string;

@@ -24,2 +24,3 @@ import { __assign, __awaiter, __extends, __generator, __values } from "tslib";

cookieStorage: cookieStorage,
cookieUpgrade: true,
disableCookies: false,

@@ -38,3 +39,3 @@ domain: '',

var _this = this;
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
var defaultConfig = getDefaultConfig();

@@ -50,10 +51,11 @@ _this = _super.call(this, __assign(__assign({ flushIntervalMillis: 1000, flushMaxRetries: 5, flushQueueSize: 30 }, options), { apiKey: apiKey, storageProvider: (_a = options === null || options === void 0 ? void 0 : options.storageProvider) !== null && _a !== void 0 ? _a : defaultConfig.storageProvider, transportProvider: (_b = options === null || options === void 0 ? void 0 : options.transportProvider) !== null && _b !== void 0 ? _b : defaultConfig.transportProvider })) || this;

_this.cookieSecure = (_h = options === null || options === void 0 ? void 0 : options.cookieSecure) !== null && _h !== void 0 ? _h : defaultConfig.cookieSecure;
_this.cookieUpgrade = (_j = options === null || options === void 0 ? void 0 : options.cookieUpgrade) !== null && _j !== void 0 ? _j : defaultConfig.cookieUpgrade;
_this.deviceId = options === null || options === void 0 ? void 0 : options.deviceId;
_this.disableCookies = (_j = options === null || options === void 0 ? void 0 : options.disableCookies) !== null && _j !== void 0 ? _j : defaultConfig.disableCookies;
_this.domain = (_k = options === null || options === void 0 ? void 0 : options.domain) !== null && _k !== void 0 ? _k : defaultConfig.domain;
_this.lastEventTime = (_l = _this.lastEventTime) !== null && _l !== void 0 ? _l : options === null || options === void 0 ? void 0 : options.lastEventTime;
_this.disableCookies = (_k = options === null || options === void 0 ? void 0 : options.disableCookies) !== null && _k !== void 0 ? _k : defaultConfig.disableCookies;
_this.domain = (_l = options === null || options === void 0 ? void 0 : options.domain) !== null && _l !== void 0 ? _l : defaultConfig.domain;
_this.lastEventTime = (_m = _this.lastEventTime) !== null && _m !== void 0 ? _m : options === null || options === void 0 ? void 0 : options.lastEventTime;
_this.optOut = Boolean(options === null || options === void 0 ? void 0 : options.optOut);
_this.partnerId = options === null || options === void 0 ? void 0 : options.partnerId;
_this.sessionId = options === null || options === void 0 ? void 0 : options.sessionId;
_this.trackingOptions = (_m = options === null || options === void 0 ? void 0 : options.trackingOptions) !== null && _m !== void 0 ? _m : defaultConfig.trackingOptions;
_this.trackingOptions = (_o = options === null || options === void 0 ? void 0 : options.trackingOptions) !== null && _o !== void 0 ? _o : defaultConfig.trackingOptions;
_this.userId = userId;

@@ -60,0 +62,0 @@ return _this;

import { __awaiter, __generator, __read } from "tslib";
import { getOldCookieName, CookieStorage } from '@amplitude/analytics-client-common';
import { getDefaultConfig } from '../config';
import { LocalStorage } from '../storage/local-storage';
export var parseOldCookies = function (apiKey, options) { return __awaiter(void 0, void 0, void 0, function () {
var storage, oldCookieName, cookies, _a, deviceId, userId, optOut, sessionId, lastEventTime;
return __generator(this, function (_b) {
switch (_b.label) {
var _b;
return __generator(this, function (_c) {
switch (_c.label) {
case 0:

@@ -12,3 +14,3 @@ storage = new CookieStorage();

case 1:
if (!(_b.sent()) || (options === null || options === void 0 ? void 0 : options.disableCookies)) {
if (!(_c.sent()) || (options === null || options === void 0 ? void 0 : options.disableCookies)) {
storage = new LocalStorage();

@@ -18,3 +20,3 @@ }

case 2:
if (!(_b.sent())) {
if (!(_c.sent())) {
return [2 /*return*/, {

@@ -27,3 +29,3 @@ optOut: false,

case 3:
cookies = _b.sent();
cookies = _c.sent();
if (!cookies) {

@@ -34,5 +36,8 @@ return [2 /*return*/, {

}
if (!((_b = options === null || options === void 0 ? void 0 : options.cookieUpgrade) !== null && _b !== void 0 ? _b : getDefaultConfig().cookieUpgrade)) return [3 /*break*/, 5];
return [4 /*yield*/, storage.remove(oldCookieName)];
case 4:
_b.sent();
_c.sent();
_c.label = 5;
case 5:
_a = __read(cookies.split('.'), 5), deviceId = _a[0], userId = _a[1], optOut = _a[2], sessionId = _a[3], lastEventTime = _a[4];

@@ -39,0 +44,0 @@ return [2 /*return*/, {

@@ -1,2 +0,2 @@

export declare const VERSION = "1.6.8";
export declare const VERSION = "1.7.0-beta.0";
//# sourceMappingURL=version.d.ts.map

@@ -1,2 +0,2 @@

export var VERSION = '1.6.8';
export var VERSION = '1.7.0-beta.0';
//# sourceMappingURL=version.js.map

@@ -1,1 +0,1 @@

!function(){"use strict";!function(e,t){var r=e.amplitude||{_q:[],_iq:[]};if(r.invoked)e.console&&console.error&&console.error("Amplitude snippet has been loaded.");else{var n=function(e,t){e.prototype[t]=function(){return this._q.push({name:t,args:Array.prototype.slice.call(arguments,0)}),this}},s=function(e,t,r){return function(n){e._q.push({name:t,args:Array.prototype.slice.call(r,0),resolve:n})}},o=function(e,t,r){e[t]=function(){if(r)return{promise:new Promise(s(e,t,Array.prototype.slice.call(arguments)))}}},i=function(e){for(var t=0;t<y.length;t++)o(e,y[t],!1);for(var r=0;r<g.length;r++)o(e,g[r],!0)};r.invoked=!0;var c=t.createElement("script");c.type="text/javascript",c.integrity="sha384-lyGcqRAilM5YOiZT3ktByF3Mv52pltOelJ66zwfcAZ/4s8cB1sSo7yMF2XWh+bzX",c.crossOrigin="anonymous",c.async=!0,c.src="https://cdn.amplitude.com/libs/analytics-browser-1.6.8-min.js.gz",c.onload=function(){e.amplitude.runQueuedFunctions||console.log("[Amplitude] Error: could not load SDK")};var a=t.getElementsByTagName("script")[0];a.parentNode.insertBefore(c,a);for(var u=function(){return this._q=[],this},l=["add","append","clearAll","prepend","set","setOnce","unset","preInsert","postInsert","remove","getUserProperties"],p=0;p<l.length;p++)n(u,l[p]);r.Identify=u;for(var d=function(){return this._q=[],this},v=["getEventProperties","setProductId","setQuantity","setPrice","setRevenue","setRevenueType","setEventProperties"],f=0;f<v.length;f++)n(d,v[f]);r.Revenue=d;var y=["getDeviceId","setDeviceId","getSessionId","setSessionId","getUserId","setUserId","setOptOut","setTransport","reset"],g=["init","add","remove","track","logEvent","identify","groupIdentify","setGroup","revenue","flush"];i(r),r.createInstance=function(){var e=r._iq.push({_q:[]})-1;return i(r._iq[e]),r._iq[e]},e.amplitude=r}}(window,document)}();
!function(){"use strict";!function(e,t){var r=e.amplitude||{_q:[],_iq:[]};if(r.invoked)e.console&&console.error&&console.error("Amplitude snippet has been loaded.");else{var n=function(e,t){e.prototype[t]=function(){return this._q.push({name:t,args:Array.prototype.slice.call(arguments,0)}),this}},s=function(e,t,r){return function(n){e._q.push({name:t,args:Array.prototype.slice.call(r,0),resolve:n})}},o=function(e,t,r){e[t]=function(){if(r)return{promise:new Promise(s(e,t,Array.prototype.slice.call(arguments)))}}},i=function(e){for(var t=0;t<g.length;t++)o(e,g[t],!1);for(var r=0;r<m.length;r++)o(e,m[r],!0)};r.invoked=!0;var a=t.createElement("script");a.type="text/javascript",a.integrity="sha384-AlTQcW91NXlwO5iFFYzDnszLOyNPfNelER+hapKfkAHIzNJiXGDJ3H5lKCMAaQca",a.crossOrigin="anonymous",a.async=!0,a.src="https://cdn.amplitude.com/libs/analytics-browser-1.7.0-beta.0-min.js.gz",a.onload=function(){e.amplitude.runQueuedFunctions||console.log("[Amplitude] Error: could not load SDK")};var c=t.getElementsByTagName("script")[0];c.parentNode.insertBefore(a,c);for(var u=function(){return this._q=[],this},l=["add","append","clearAll","prepend","set","setOnce","unset","preInsert","postInsert","remove","getUserProperties"],p=0;p<l.length;p++)n(u,l[p]);r.Identify=u;for(var d=function(){return this._q=[],this},f=["getEventProperties","setProductId","setQuantity","setPrice","setRevenue","setRevenueType","setEventProperties"],v=0;v<f.length;v++)n(d,f[v]);r.Revenue=d;var g=["getDeviceId","setDeviceId","getSessionId","setSessionId","getUserId","setUserId","setOptOut","setTransport","reset"],m=["init","add","remove","track","logEvent","identify","groupIdentify","setGroup","revenue","flush"];i(r),r.createInstance=function(){var e=r._iq.push({_q:[]})-1;return i(r._iq[e]),r._iq[e]},e.amplitude=r}}(window,document)}();

@@ -11,2 +11,3 @@ import { AttributionOptions, Event, BrowserOptions, BrowserConfig as IBrowserConfig, Storage, TrackingOptions, TransportType, UserSession, SessionManager as ISessionManager } from '@amplitude/analytics-types';

cookieStorage: MemoryStorage<UserSession>;
cookieUpgrade: boolean;
disableCookies: boolean;

@@ -26,2 +27,3 @@ domain: string;

cookieSecure: boolean;
cookieUpgrade: boolean;
cookieStorage: Storage<UserSession>;

@@ -52,2 +54,3 @@ disableCookies: boolean;

cookieStorage: MemoryStorage<UserSession>;
cookieUpgrade: boolean;
disableCookies: boolean;

@@ -54,0 +57,0 @@ domain: string;

@@ -1,2 +0,2 @@

export declare const VERSION = "1.6.8";
export declare const VERSION = "1.7.0-beta.0";
//# sourceMappingURL=version.d.ts.map
{
"name": "@amplitude/analytics-browser",
"version": "1.6.8",
"version": "1.7.0-beta.0",
"description": "Official Amplitude SDK for Web",

@@ -46,5 +46,5 @@ "keywords": [

"dependencies": {
"@amplitude/analytics-client-common": "^0.5.2",
"@amplitude/analytics-core": "^0.11.2",
"@amplitude/analytics-types": "^0.14.0",
"@amplitude/analytics-client-common": "^0.5.3-beta.0",
"@amplitude/analytics-core": "^0.11.3-beta.0",
"@amplitude/analytics-types": "^0.15.0-beta.0",
"@amplitude/ua-parser-js": "^0.7.31",

@@ -69,3 +69,3 @@ "tslib": "^2.4.1"

],
"gitHead": "cd3e4d96fe15cecc2ea3442ef52be74c642f7222"
"gitHead": "5b7a596fa22b8a34b0c21bedd331ca2a8914f4f4"
}

@@ -35,3 +35,3 @@ <p align="center">

<script type="text/javascript">
!function(){"use strict";!function(e,t){var r=e.amplitude||{_q:[],_iq:[]};if(r.invoked)e.console&&console.error&&console.error("Amplitude snippet has been loaded.");else{var n=function(e,t){e.prototype[t]=function(){return this._q.push({name:t,args:Array.prototype.slice.call(arguments,0)}),this}},s=function(e,t,r){return function(n){e._q.push({name:t,args:Array.prototype.slice.call(r,0),resolve:n})}},o=function(e,t,r){e[t]=function(){if(r)return{promise:new Promise(s(e,t,Array.prototype.slice.call(arguments)))}}},i=function(e){for(var t=0;t<y.length;t++)o(e,y[t],!1);for(var r=0;r<g.length;r++)o(e,g[r],!0)};r.invoked=!0;var c=t.createElement("script");c.type="text/javascript",c.integrity="sha384-lyGcqRAilM5YOiZT3ktByF3Mv52pltOelJ66zwfcAZ/4s8cB1sSo7yMF2XWh+bzX",c.crossOrigin="anonymous",c.async=!0,c.src="https://cdn.amplitude.com/libs/analytics-browser-1.6.8-min.js.gz",c.onload=function(){e.amplitude.runQueuedFunctions||console.log("[Amplitude] Error: could not load SDK")};var a=t.getElementsByTagName("script")[0];a.parentNode.insertBefore(c,a);for(var u=function(){return this._q=[],this},l=["add","append","clearAll","prepend","set","setOnce","unset","preInsert","postInsert","remove","getUserProperties"],p=0;p<l.length;p++)n(u,l[p]);r.Identify=u;for(var d=function(){return this._q=[],this},v=["getEventProperties","setProductId","setQuantity","setPrice","setRevenue","setRevenueType","setEventProperties"],f=0;f<v.length;f++)n(d,v[f]);r.Revenue=d;var y=["getDeviceId","setDeviceId","getSessionId","setSessionId","getUserId","setUserId","setOptOut","setTransport","reset"],g=["init","add","remove","track","logEvent","identify","groupIdentify","setGroup","revenue","flush"];i(r),r.createInstance=function(){var e=r._iq.push({_q:[]})-1;return i(r._iq[e]),r._iq[e]},e.amplitude=r}}(window,document)}();
!function(){"use strict";!function(e,t){var r=e.amplitude||{_q:[],_iq:[]};if(r.invoked)e.console&&console.error&&console.error("Amplitude snippet has been loaded.");else{var n=function(e,t){e.prototype[t]=function(){return this._q.push({name:t,args:Array.prototype.slice.call(arguments,0)}),this}},s=function(e,t,r){return function(n){e._q.push({name:t,args:Array.prototype.slice.call(r,0),resolve:n})}},o=function(e,t,r){e[t]=function(){if(r)return{promise:new Promise(s(e,t,Array.prototype.slice.call(arguments)))}}},i=function(e){for(var t=0;t<g.length;t++)o(e,g[t],!1);for(var r=0;r<m.length;r++)o(e,m[r],!0)};r.invoked=!0;var a=t.createElement("script");a.type="text/javascript",a.integrity="sha384-AlTQcW91NXlwO5iFFYzDnszLOyNPfNelER+hapKfkAHIzNJiXGDJ3H5lKCMAaQca",a.crossOrigin="anonymous",a.async=!0,a.src="https://cdn.amplitude.com/libs/analytics-browser-1.7.0-beta.0-min.js.gz",a.onload=function(){e.amplitude.runQueuedFunctions||console.log("[Amplitude] Error: could not load SDK")};var c=t.getElementsByTagName("script")[0];c.parentNode.insertBefore(a,c);for(var u=function(){return this._q=[],this},l=["add","append","clearAll","prepend","set","setOnce","unset","preInsert","postInsert","remove","getUserProperties"],p=0;p<l.length;p++)n(u,l[p]);r.Identify=u;for(var d=function(){return this._q=[],this},f=["getEventProperties","setProductId","setQuantity","setPrice","setRevenue","setRevenueType","setEventProperties"],v=0;v<f.length;v++)n(d,f[v]);r.Revenue=d;var g=["getDeviceId","setDeviceId","getSessionId","setSessionId","getUserId","setUserId","setOptOut","setTransport","reset"],m=["init","add","remove","track","logEvent","identify","groupIdentify","setGroup","revenue","flush"];i(r),r.createInstance=function(){var e=r._iq.push({_q:[]})-1;return i(r._iq[e]),r._iq[e]},e.amplitude=r}}(window,document)}();

@@ -38,0 +38,0 @@ amplitude.init("YOUR_API_KEY_HERE");

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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