mirror of
https://github.com/MarSeventh/CloudFlare-ImgBed.git
synced 2026-04-27 07:35:07 +00:00
init
This commit is contained in:
164
node_modules/@sentry/core/cjs/session.js
generated
vendored
Normal file
164
node_modules/@sentry/core/cjs/session.js
generated
vendored
Normal file
@@ -0,0 +1,164 @@
|
||||
Object.defineProperty(exports, '__esModule', { value: true });
|
||||
|
||||
const utils = require('@sentry/utils');
|
||||
|
||||
/**
|
||||
* Creates a new `Session` object by setting certain default parameters. If optional @param context
|
||||
* is passed, the passed properties are applied to the session object.
|
||||
*
|
||||
* @param context (optional) additional properties to be applied to the returned session object
|
||||
*
|
||||
* @returns a new `Session` object
|
||||
*/
|
||||
function makeSession(context) {
|
||||
// Both timestamp and started are in seconds since the UNIX epoch.
|
||||
const startingTime = utils.timestampInSeconds();
|
||||
|
||||
const session = {
|
||||
sid: utils.uuid4(),
|
||||
init: true,
|
||||
timestamp: startingTime,
|
||||
started: startingTime,
|
||||
duration: 0,
|
||||
status: 'ok',
|
||||
errors: 0,
|
||||
ignoreDuration: false,
|
||||
toJSON: () => sessionToJSON(session),
|
||||
};
|
||||
|
||||
if (context) {
|
||||
updateSession(session, context);
|
||||
}
|
||||
|
||||
return session;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates a session object with the properties passed in the context.
|
||||
*
|
||||
* Note that this function mutates the passed object and returns void.
|
||||
* (Had to do this instead of returning a new and updated session because closing and sending a session
|
||||
* makes an update to the session after it was passed to the sending logic.
|
||||
* @see BaseClient.captureSession )
|
||||
*
|
||||
* @param session the `Session` to update
|
||||
* @param context the `SessionContext` holding the properties that should be updated in @param session
|
||||
*/
|
||||
// eslint-disable-next-line complexity
|
||||
function updateSession(session, context = {}) {
|
||||
if (context.user) {
|
||||
if (!session.ipAddress && context.user.ip_address) {
|
||||
session.ipAddress = context.user.ip_address;
|
||||
}
|
||||
|
||||
if (!session.did && !context.did) {
|
||||
session.did = context.user.id || context.user.email || context.user.username;
|
||||
}
|
||||
}
|
||||
|
||||
session.timestamp = context.timestamp || utils.timestampInSeconds();
|
||||
|
||||
if (context.abnormal_mechanism) {
|
||||
session.abnormal_mechanism = context.abnormal_mechanism;
|
||||
}
|
||||
|
||||
if (context.ignoreDuration) {
|
||||
session.ignoreDuration = context.ignoreDuration;
|
||||
}
|
||||
if (context.sid) {
|
||||
// Good enough uuid validation. — Kamil
|
||||
session.sid = context.sid.length === 32 ? context.sid : utils.uuid4();
|
||||
}
|
||||
if (context.init !== undefined) {
|
||||
session.init = context.init;
|
||||
}
|
||||
if (!session.did && context.did) {
|
||||
session.did = `${context.did}`;
|
||||
}
|
||||
if (typeof context.started === 'number') {
|
||||
session.started = context.started;
|
||||
}
|
||||
if (session.ignoreDuration) {
|
||||
session.duration = undefined;
|
||||
} else if (typeof context.duration === 'number') {
|
||||
session.duration = context.duration;
|
||||
} else {
|
||||
const duration = session.timestamp - session.started;
|
||||
session.duration = duration >= 0 ? duration : 0;
|
||||
}
|
||||
if (context.release) {
|
||||
session.release = context.release;
|
||||
}
|
||||
if (context.environment) {
|
||||
session.environment = context.environment;
|
||||
}
|
||||
if (!session.ipAddress && context.ipAddress) {
|
||||
session.ipAddress = context.ipAddress;
|
||||
}
|
||||
if (!session.userAgent && context.userAgent) {
|
||||
session.userAgent = context.userAgent;
|
||||
}
|
||||
if (typeof context.errors === 'number') {
|
||||
session.errors = context.errors;
|
||||
}
|
||||
if (context.status) {
|
||||
session.status = context.status;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Closes a session by setting its status and updating the session object with it.
|
||||
* Internally calls `updateSession` to update the passed session object.
|
||||
*
|
||||
* Note that this function mutates the passed session (@see updateSession for explanation).
|
||||
*
|
||||
* @param session the `Session` object to be closed
|
||||
* @param status the `SessionStatus` with which the session was closed. If you don't pass a status,
|
||||
* this function will keep the previously set status, unless it was `'ok'` in which case
|
||||
* it is changed to `'exited'`.
|
||||
*/
|
||||
function closeSession(session, status) {
|
||||
let context = {};
|
||||
if (status) {
|
||||
context = { status };
|
||||
} else if (session.status === 'ok') {
|
||||
context = { status: 'exited' };
|
||||
}
|
||||
|
||||
updateSession(session, context);
|
||||
}
|
||||
|
||||
/**
|
||||
* Serializes a passed session object to a JSON object with a slightly different structure.
|
||||
* This is necessary because the Sentry backend requires a slightly different schema of a session
|
||||
* than the one the JS SDKs use internally.
|
||||
*
|
||||
* @param session the session to be converted
|
||||
*
|
||||
* @returns a JSON object of the passed session
|
||||
*/
|
||||
function sessionToJSON(session) {
|
||||
return utils.dropUndefinedKeys({
|
||||
sid: `${session.sid}`,
|
||||
init: session.init,
|
||||
// Make sure that sec is converted to ms for date constructor
|
||||
started: new Date(session.started * 1000).toISOString(),
|
||||
timestamp: new Date(session.timestamp * 1000).toISOString(),
|
||||
status: session.status,
|
||||
errors: session.errors,
|
||||
did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,
|
||||
duration: session.duration,
|
||||
abnormal_mechanism: session.abnormal_mechanism,
|
||||
attrs: {
|
||||
release: session.release,
|
||||
environment: session.environment,
|
||||
ip_address: session.ipAddress,
|
||||
user_agent: session.userAgent,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
exports.closeSession = closeSession;
|
||||
exports.makeSession = makeSession;
|
||||
exports.updateSession = updateSession;
|
||||
//# sourceMappingURL=session.js.map
|
||||
Reference in New Issue
Block a user