@trudan-studios/helika-sdk
Advanced tools
Comparing version 0.3.0 to 0.3.1
251
dist/base.js
"use strict"; | ||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||
return new (P || (P = Promise))(function (resolve, reject) { | ||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||
step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
}); | ||
}; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
@@ -44,8 +35,34 @@ return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
} | ||
fingerprint() { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
async fingerprint() { | ||
let loadOptions = { | ||
apiKey: fpApiKey, | ||
scriptUrlPattern: [ | ||
`https://yard.helika.io/8nc7wiyuwhncrhw3/01cb9q093c?apiKey=${fpApiKey}&version=<version>&loaderVersion=<loaderVersion>`, | ||
index_1.fingerprint.defaultScriptUrlPattern, // Fallback to default CDN in case of error | ||
], | ||
endpoint: [ | ||
'https://yard.helika.io/8nc7wiyuwhncrhw3/o9wn3zvyblw3v8yi8?region=us', | ||
index_1.fingerprint.defaultEndpoint // Fallback to default endpoint in case of error | ||
], | ||
}; | ||
let fingerprintData = null; | ||
try { | ||
let loaded = await index_1.fingerprint.load(loadOptions); | ||
fingerprintData = await loaded.get(); | ||
return { | ||
fingerprint_id: fingerprintData?.visitorId, | ||
request_id: fingerprintData?.requestId | ||
}; | ||
} | ||
catch (e) { | ||
console.error('Error loading fingerprint data'); | ||
return {}; | ||
} | ||
} | ||
async fullFingerprint() { | ||
try { | ||
let loadOptions = { | ||
apiKey: fpApiKey, | ||
scriptUrlPattern: [ | ||
`https://yard.helika.io/8nc7wiyuwhncrhw3/01cb9q093c?apiKey=${fpApiKey}&version=<version>&loaderVersion=<loaderVersion>`, | ||
`https://yard.helika.io/8nc7wiyuwhncrhw3/01cb9q093c?apiKey=${fpApiKey}&version=3&loaderVersion=3.8.6`, | ||
index_1.fingerprint.defaultScriptUrlPattern, // Fallback to default CDN in case of error | ||
@@ -58,61 +75,31 @@ ], | ||
}; | ||
let fingerprintData = null; | ||
try { | ||
let loaded = yield index_1.fingerprint.load(loadOptions); | ||
fingerprintData = yield loaded.get(); | ||
return { | ||
fingerprint_id: fingerprintData === null || fingerprintData === void 0 ? void 0 : fingerprintData.visitorId, | ||
request_id: fingerprintData === null || fingerprintData === void 0 ? void 0 : fingerprintData.requestId | ||
}; | ||
let loaded = await index_1.fingerprint.load(loadOptions); | ||
let fingerprintData = await loaded.get({ | ||
extendedResult: true | ||
}); | ||
if (this.disabledDataSettings & index_1.DisableDataSettings.BrowserInfo) { | ||
fingerprintData.browserName = ""; | ||
fingerprintData.browserVersion = ""; | ||
fingerprintData.incognito = false; | ||
} | ||
catch (e) { | ||
console.error('Error loading fingerprint data'); | ||
return {}; | ||
if (this.disabledDataSettings & index_1.DisableDataSettings.DeviceInfo) { | ||
fingerprintData.device = ""; | ||
} | ||
}); | ||
} | ||
fullFingerprint() { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
try { | ||
let loadOptions = { | ||
apiKey: fpApiKey, | ||
scriptUrlPattern: [ | ||
`https://yard.helika.io/8nc7wiyuwhncrhw3/01cb9q093c?apiKey=${fpApiKey}&version=3&loaderVersion=3.8.6`, | ||
index_1.fingerprint.defaultScriptUrlPattern, // Fallback to default CDN in case of error | ||
], | ||
endpoint: [ | ||
'https://yard.helika.io/8nc7wiyuwhncrhw3/o9wn3zvyblw3v8yi8?region=us', | ||
index_1.fingerprint.defaultEndpoint // Fallback to default endpoint in case of error | ||
], | ||
}; | ||
let loaded = yield index_1.fingerprint.load(loadOptions); | ||
let fingerprintData = yield loaded.get({ | ||
extendedResult: true | ||
}); | ||
if (this.disabledDataSettings & index_1.DisableDataSettings.BrowserInfo) { | ||
fingerprintData.browserName = ""; | ||
fingerprintData.browserVersion = ""; | ||
fingerprintData.incognito = false; | ||
} | ||
if (this.disabledDataSettings & index_1.DisableDataSettings.DeviceInfo) { | ||
fingerprintData.device = ""; | ||
} | ||
if (this.disabledDataSettings & index_1.DisableDataSettings.IpInfo) { | ||
fingerprintData.ip = ""; | ||
fingerprintData === null || fingerprintData === void 0 ? true : delete fingerprintData.ipLocation; | ||
} | ||
if (this.disabledDataSettings & index_1.DisableDataSettings.OsInfo) { | ||
fingerprintData.os = ""; | ||
fingerprintData.osVersion = ""; | ||
} | ||
// if (this.disabledDataSettings & DisableDataSettings.VpnInfo) { | ||
// // Not here | ||
// } | ||
return fingerprintData; | ||
if (this.disabledDataSettings & index_1.DisableDataSettings.IpInfo) { | ||
fingerprintData.ip = ""; | ||
delete fingerprintData?.ipLocation; | ||
} | ||
catch (e) { | ||
console.error('Error loading fingerprint data'); | ||
return {}; | ||
if (this.disabledDataSettings & index_1.DisableDataSettings.OsInfo) { | ||
fingerprintData.os = ""; | ||
fingerprintData.osVersion = ""; | ||
} | ||
}); | ||
// if (this.disabledDataSettings & DisableDataSettings.VpnInfo) { | ||
// // Not here | ||
// } | ||
return fingerprintData; | ||
} | ||
catch (e) { | ||
console.error('Error loading fingerprint data'); | ||
return {}; | ||
} | ||
} | ||
@@ -180,75 +167,73 @@ getUrlParam(paramName) { | ||
} | ||
sessionCreate(params) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
this.sessionID = (0, uuid_1.v4)(); | ||
this.sessionExpiry = this.addMinutes(new Date(), 15); | ||
let fpData = {}; | ||
let utms = null; | ||
let helika_referral_link = null; | ||
try { | ||
if (exenv_1.default.canUseDOM) { | ||
if (params.type === 'Session Start') { | ||
let local_session_id = localStorage.getItem('sessionID'); | ||
let expiry = localStorage.getItem('sessionExpiry'); | ||
if (local_session_id && expiry && (new Date(expiry) > new Date())) { | ||
this.sessionID = local_session_id; | ||
localStorage.setItem('sessionExpiry', this.sessionExpiry.toString()); | ||
return; | ||
} | ||
else { | ||
// Only grab fingerprint data if it's a new session | ||
fpData = yield this.fullFingerprint(); | ||
} | ||
async sessionCreate(params) { | ||
this.sessionID = (0, uuid_1.v4)(); | ||
this.sessionExpiry = this.addMinutes(new Date(), 15); | ||
let fpData = {}; | ||
let utms = null; | ||
let helika_referral_link = null; | ||
try { | ||
if (exenv_1.default.canUseDOM) { | ||
if (params.type === 'Session Start') { | ||
let local_session_id = localStorage.getItem('sessionID'); | ||
let expiry = localStorage.getItem('sessionExpiry'); | ||
if (local_session_id && expiry && (new Date(expiry) > new Date())) { | ||
this.sessionID = local_session_id; | ||
localStorage.setItem('sessionExpiry', this.sessionExpiry.toString()); | ||
return; | ||
} | ||
localStorage.setItem('sessionID', this.sessionID); | ||
localStorage.setItem('sessionExpiry', this.sessionExpiry.toString()); | ||
utms = this.getAllUrlParams(); | ||
helika_referral_link = this.getUrlParam('linkId'); | ||
if (utms) { | ||
localStorage.setItem('helika_utms', JSON.stringify(utms)); | ||
else { | ||
// Only grab fingerprint data if it's a new session | ||
fpData = await this.fullFingerprint(); | ||
} | ||
if (helika_referral_link) { | ||
localStorage.setItem('helika_referral_link', helika_referral_link); | ||
} | ||
} | ||
localStorage.setItem('sessionID', this.sessionID); | ||
localStorage.setItem('sessionExpiry', this.sessionExpiry.toString()); | ||
utms = this.getAllUrlParams(); | ||
helika_referral_link = this.getUrlParam('linkId'); | ||
if (utms) { | ||
localStorage.setItem('helika_utms', JSON.stringify(utms)); | ||
} | ||
if (helika_referral_link) { | ||
localStorage.setItem('helika_referral_link', helika_referral_link); | ||
} | ||
} | ||
catch (e) { | ||
console.error(e); | ||
} | ||
catch (e) { | ||
console.error(e); | ||
} | ||
//send event to initiate session | ||
var initevent = { | ||
created_at: new Date().toISOString(), | ||
game_id: this.gameId, | ||
event_type: 'session_created', | ||
event: { | ||
type: params.type, | ||
sdk_name: "Web", | ||
sdk_version: version_1.version, | ||
sdk_class: params.sdk_class, | ||
fp_data: fpData, | ||
helika_referral_link: helika_referral_link, | ||
session_id: this.sessionID, | ||
utms: utms, | ||
event_sub_type: 'session_created' | ||
} | ||
//send event to initiate session | ||
var initevent = { | ||
created_at: new Date().toISOString(), | ||
game_id: this.gameId, | ||
event_type: 'session_created', | ||
event: { | ||
type: params.type, | ||
sdk_name: "Web", | ||
sdk_version: version_1.version, | ||
sdk_class: params.sdk_class, | ||
fp_data: fpData, | ||
helika_referral_link: helika_referral_link, | ||
session_id: this.sessionID, | ||
utms: utms, | ||
event_sub_type: 'session_created' | ||
}; | ||
let event_params = { | ||
id: this.sessionID, | ||
events: [initevent] | ||
}; | ||
try { | ||
return await this.postRequest(`/game/game-event`, event_params); | ||
} | ||
catch (e) { | ||
if (e && 'response' in e && 'data' in e.response && 'message' in e.response.data && | ||
e.response.data.message.startsWith('Internal server error - Invalid API key:')) { | ||
this.sessionID = null; | ||
if (exenv_1.default.canUseDOM) { | ||
localStorage.removeItem('sessionID'); | ||
} | ||
}; | ||
let event_params = { | ||
id: this.sessionID, | ||
events: [initevent] | ||
}; | ||
try { | ||
return yield this.postRequest(`/game/game-event`, event_params); | ||
throw new Error('Error: Invalid API key. Please re-initiate the Helika SDK with a valid API Key.'); | ||
} | ||
catch (e) { | ||
if (e && 'response' in e && 'data' in e.response && 'message' in e.response.data && | ||
e.response.data.message.startsWith('Internal server error - Invalid API key:')) { | ||
this.sessionID = null; | ||
if (exenv_1.default.canUseDOM) { | ||
localStorage.removeItem('sessionID'); | ||
} | ||
throw new Error('Error: Invalid API key. Please re-initiate the Helika SDK with a valid API Key.'); | ||
} | ||
throw new Error(e.message); | ||
} | ||
}); | ||
throw new Error(e.message); | ||
} | ||
} | ||
@@ -255,0 +240,0 @@ addHours(date, hours) { |
"use strict"; | ||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||
return new (P || (P = Promise))(function (resolve, reject) { | ||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||
step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
}); | ||
}; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
@@ -47,136 +38,126 @@ return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
} | ||
startSession() { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
try { | ||
if (exenv_1.default.canUseDOM) { | ||
// Todo: Move this into the Base Class once Users have been consolidated | ||
return yield this.sessionCreate({ | ||
sdk_class: "Events", | ||
type: 'Session Start' | ||
}); | ||
} | ||
async startSession() { | ||
try { | ||
if (exenv_1.default.canUseDOM) { | ||
// Todo: Move this into the Base Class once Users have been consolidated | ||
return await this.sessionCreate({ | ||
sdk_class: "Events", | ||
type: 'Session Start' | ||
}); | ||
} | ||
catch (e) { | ||
console.error(e); | ||
} | ||
}); | ||
} | ||
catch (e) { | ||
console.error(e); | ||
} | ||
} | ||
refreshSession() { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
try { | ||
if (exenv_1.default.canUseDOM) { | ||
// Todo: Move this into the Base Class once Users have been consolidated | ||
return yield this.sessionCreate({ | ||
sdk_class: "Events", | ||
type: 'Session Refresh' | ||
}); | ||
} | ||
async refreshSession() { | ||
try { | ||
if (exenv_1.default.canUseDOM) { | ||
// Todo: Move this into the Base Class once Users have been consolidated | ||
return await this.sessionCreate({ | ||
sdk_class: "Events", | ||
type: 'Session Refresh' | ||
}); | ||
} | ||
catch (e) { | ||
console.error(e); | ||
} | ||
}); | ||
} | ||
catch (e) { | ||
console.error(e); | ||
} | ||
} | ||
createEvent(events) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
yield this.refreshSessionIdFromStorage(); | ||
if (!this.sessionID) { | ||
throw new Error('Could not initiate session. API Key is invalid. Disabling Sending Messages. Please reach out to Helika Support to request a valid API key.'); | ||
async createEvent(events) { | ||
await this.refreshSessionIdFromStorage(); | ||
if (!this.sessionID) { | ||
throw new Error('Could not initiate session. API Key is invalid. Disabling Sending Messages. Please reach out to Helika Support to request a valid API key.'); | ||
} | ||
let created_at = new Date().toISOString(); | ||
let helika_referral_link = null; | ||
let utms = null; | ||
let current_url = ""; | ||
try { | ||
if (exenv_1.default.canUseDOM) { | ||
helika_referral_link = localStorage.getItem('helika_referral_link'); | ||
utms = localStorage.getItem('helika_utms'); | ||
utms = utms ? JSON.parse(utms) : null; | ||
current_url = window.location.href; | ||
} | ||
let created_at = new Date().toISOString(); | ||
let helika_referral_link = null; | ||
let utms = null; | ||
let current_url = ""; | ||
try { | ||
if (exenv_1.default.canUseDOM) { | ||
helika_referral_link = localStorage.getItem('helika_referral_link'); | ||
utms = localStorage.getItem('helika_utms'); | ||
utms = utms ? JSON.parse(utms) : null; | ||
current_url = window.location.href; | ||
} | ||
} | ||
catch (e) { | ||
console.error(e); | ||
} | ||
let newEvents = events.map((event) => { | ||
let givenEvent = Object.assign({}, event); | ||
givenEvent.event.helika_referral_link = helika_referral_link; | ||
givenEvent.event.utms = utms; | ||
givenEvent.event.url = current_url; | ||
if (event.event.session_id) { | ||
givenEvent.event.client_session_id = event.event.session_id; | ||
} | ||
catch (e) { | ||
console.error(e); | ||
} | ||
let newEvents = events.map((event) => { | ||
let givenEvent = Object.assign({}, event); | ||
givenEvent.event.helika_referral_link = helika_referral_link; | ||
givenEvent.event.utms = utms; | ||
givenEvent.event.url = current_url; | ||
if (event.event.session_id) { | ||
givenEvent.event.client_session_id = event.event.session_id; | ||
} | ||
givenEvent.event.session_id = this.sessionID; | ||
givenEvent.event.player_id = this.playerId; | ||
givenEvent.created_at = created_at; | ||
givenEvent.game_id = this.gameId; | ||
return givenEvent; | ||
}); | ||
var params = { | ||
id: this.sessionID, | ||
events: newEvents | ||
}; | ||
this.extendSession(); | ||
return this.postRequest(`/game/game-event`, params); | ||
givenEvent.event.session_id = this.sessionID; | ||
givenEvent.event.player_id = this.playerId; | ||
givenEvent.created_at = created_at; | ||
givenEvent.game_id = this.gameId; | ||
return givenEvent; | ||
}); | ||
var params = { | ||
id: this.sessionID, | ||
events: newEvents | ||
}; | ||
this.extendSession(); | ||
return this.postRequest(`/game/game-event`, params); | ||
} | ||
createUAEvent(events) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
yield this.refreshSessionIdFromStorage(); | ||
if (!this.sessionID) | ||
throw new Error('SDK Session has not been started. Please call the SessionStart function to initialize instance with a Session ID.'); | ||
let created_at = new Date().toISOString(); | ||
let helika_referral_link = null; | ||
let utms = null; | ||
try { | ||
if (exenv_1.default.canUseDOM) { | ||
helika_referral_link = localStorage.getItem('helika_referral_link'); | ||
utms = localStorage.getItem('helika_utms'); | ||
utms = utms ? JSON.parse(utms) : null; | ||
} | ||
async createUAEvent(events) { | ||
await this.refreshSessionIdFromStorage(); | ||
if (!this.sessionID) | ||
throw new Error('SDK Session has not been started. Please call the SessionStart function to initialize instance with a Session ID.'); | ||
let created_at = new Date().toISOString(); | ||
let helika_referral_link = null; | ||
let utms = null; | ||
try { | ||
if (exenv_1.default.canUseDOM) { | ||
helika_referral_link = localStorage.getItem('helika_referral_link'); | ||
utms = localStorage.getItem('helika_utms'); | ||
utms = utms ? JSON.parse(utms) : null; | ||
} | ||
catch (e) { | ||
console.error(e); | ||
} | ||
catch (e) { | ||
console.error(e); | ||
} | ||
let newEvents = events.map((event) => { | ||
let givenEvent = Object.assign({}, event); | ||
givenEvent.event.helika_referral_link = helika_referral_link; | ||
givenEvent.event.utms = utms; | ||
if (event.event.session_id) { | ||
givenEvent.event.client_session_id = event.event.session_id; | ||
} | ||
let newEvents = events.map((event) => { | ||
let givenEvent = Object.assign({}, event); | ||
givenEvent.event.helika_referral_link = helika_referral_link; | ||
givenEvent.event.utms = utms; | ||
if (event.event.session_id) { | ||
givenEvent.event.client_session_id = event.event.session_id; | ||
} | ||
givenEvent.event.session_id = this.sessionID; | ||
givenEvent.created_at = created_at; | ||
givenEvent.game_id = 'UA'; | ||
return givenEvent; | ||
}); | ||
var params = { | ||
id: this.sessionID, | ||
events: newEvents | ||
}; | ||
this.extendSession(); | ||
return this.postRequest(`/game/game-event`, params); | ||
givenEvent.event.session_id = this.sessionID; | ||
givenEvent.created_at = created_at; | ||
givenEvent.game_id = 'UA'; | ||
return givenEvent; | ||
}); | ||
var params = { | ||
id: this.sessionID, | ||
events: newEvents | ||
}; | ||
this.extendSession(); | ||
return this.postRequest(`/game/game-event`, params); | ||
} | ||
refreshSessionIdFromStorage() { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
if (exenv_1.default.canUseDOM) { | ||
let local_storage_id = localStorage.getItem('sessionID'); | ||
let expiry = localStorage.getItem('sessionExpiry'); | ||
if (local_storage_id && expiry) { | ||
if (new Date(expiry) < new Date()) { | ||
yield this.refreshSession(); | ||
} | ||
else { | ||
this.sessionID = local_storage_id; | ||
this.sessionExpiry = new Date(expiry); | ||
} | ||
async refreshSessionIdFromStorage() { | ||
if (exenv_1.default.canUseDOM) { | ||
let local_storage_id = localStorage.getItem('sessionID'); | ||
let expiry = localStorage.getItem('sessionExpiry'); | ||
if (local_storage_id && expiry) { | ||
if (new Date(expiry) < new Date()) { | ||
await this.refreshSession(); | ||
} | ||
else if (this.sessionID) { // edge case where localstorage was cleared | ||
localStorage.setItem('sessionID', this.sessionID); | ||
else { | ||
this.sessionID = local_storage_id; | ||
this.sessionExpiry = new Date(expiry); | ||
} | ||
} | ||
}); | ||
else if (this.sessionID) { // edge case where localstorage was cleared | ||
localStorage.setItem('sessionID', this.sessionID); | ||
} | ||
} | ||
} | ||
} | ||
exports.EVENTS = EVENTS; |
@@ -1,9 +0,4 @@ | ||
import { UA } from "./ua"; | ||
import { EVENTS } from "./events"; | ||
export { UA } from "./ua"; | ||
export { EVENTS } from "./events"; | ||
import { FingerprintJSPro } from "@fingerprintjs/fingerprintjs-pro-react"; | ||
declare const _default: { | ||
EVENTS: typeof EVENTS; | ||
UA: typeof UA; | ||
}; | ||
export default _default; | ||
export declare enum UABaseURL { | ||
@@ -10,0 +5,0 @@ UA_DEV = 0, |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.fingerprint = exports.DisableDataSettings = exports.EventsBaseURL = exports.UABaseURL = void 0; | ||
const ua_1 = require("./ua"); | ||
const events_1 = require("./events"); | ||
exports.fingerprint = exports.DisableDataSettings = exports.EventsBaseURL = exports.UABaseURL = exports.EVENTS = exports.UA = void 0; | ||
var ua_1 = require("./ua"); | ||
Object.defineProperty(exports, "UA", { enumerable: true, get: function () { return ua_1.UA; } }); | ||
var events_1 = require("./events"); | ||
Object.defineProperty(exports, "EVENTS", { enumerable: true, get: function () { return events_1.EVENTS; } }); | ||
const fingerprintjs_pro_react_1 = require("@fingerprintjs/fingerprintjs-pro-react"); | ||
exports.default = { EVENTS: events_1.EVENTS, UA: ua_1.UA }; | ||
var UABaseURL; | ||
@@ -9,0 +10,0 @@ (function (UABaseURL) { |
@@ -1,1 +0,1 @@ | ||
export const version: "0.3.0"; | ||
export const version: "0.3.1"; |
@@ -5,2 +5,2 @@ "use strict"; | ||
// Generated by genversion. | ||
exports.version = '0.3.0'; | ||
exports.version = '0.3.1'; |
{ | ||
"name": "@trudan-studios/helika-sdk", | ||
"version": "0.3.0", | ||
"version": "0.3.1", | ||
"description": "The Helika SDK is for developers to be able to make API calls to the Helika DEV and PROD endpoints.", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
26875
626