UNPKG

rutilus-analytics-node-js

Version:

Provides a GUI web app that allows users to examine their data in detail. Includes CSV export functionality.

359 lines (358 loc) 8.55 kB
/** * Rutilus * * @homepage https://gmrutilus.github.io * @license Apache-2.0 */ /** * * @typedef {{ * on: Function, * pipe: Function, * once: Function, * }} WritableStream * * @typedef {{ * presetId: Number, * tags: Array<String>, * paramMap: Array<{ paramValue: String, paramName: String }>|undefined, * invalidFields: Array<String>|undefined, * }} DashboardSavedQuery * * @typedef {{ * request: { * rateLimit: { * limit: Number, * remaining: Number, * }, * body: Object<String, *>, * }, * type: *, * body: *, * res: { * joinsLib: JoinsLib|undefined, * presets: Array<Preset>|undefined, * schemas: Object<String, Query>|undefined, * logger: MessageLogger|undefined, * resultStreamer: ResultStreamer|undefined, * extraInformation: Array<ExtraInformation>|undefined, * errorHandler: ErrorHandler|undefined, * emailer: Emailer|undefined, * affinityTool: AffinityToolSettings|undefined, * algorithms: Algorithms|undefined, * dashboardSourceCode: String|undefined, * recalculationLock: RecalculationLock|undefined, * jsonToMongo: JsonToMongo|undefined, * querySchedule: QuerySchedule|undefined, * status: { * requestingStatus, * requestingToken, * }|undefined * }, * query: { * p: String|undefined, * f: String|undefined, * d: String|undefined, * start: String|undefined, * end: String|undefined, * }, * req: Object, * isAuthenticated: Function, * redirect: Function, * logout: Function, * }} KoaCtx * * @typedef {{ * _id: String, * actions: { * date: Number|undefined, * type: String|undefined, * text: String|undefined, * url: String|undefined, * positionX: Number|undefined, * positionY: Number|undefined, * sizeX: Number|undefined, * sizeY: Number|undefined, * isFixed: Boolean|undefined, * isIframe: Boolean|undefined, * id: String|undefined, * classes: Array<String>|undefined, * name: String|undefined, * rawTag: String|undefined, * target: String|undefined, * inputName: String|undefined, * inputRawTag: String|undefined, * attributes: Object|undefined, * inputContents: Object|undefined, * flag: String|undefined, * numCurrentShares: String|undefined, * service: String|undefined, * imageUrl: String|undefined, * triggerName: String|undefined, * }, * ads: Array<{ * url: String, * positionX: Number, * positionY: Number, * sizeX: Number, * sizeY: Number, * isFixed: Boolean, * }>, * author: String, * authorId: String, * browser: { * major: String, * name: String, * version: String, * }, * charsNo: Number, * city: String, * country: String, * clickback: String, * clickTag: String, * cookies: String, * cookieEnabled: Boolean, * commentsNo: Number, * cpu: { * architecture: String, * }, * date: Number, * dateClose: Number, * device: { * model: String, * type: String, * vendor: String, * }, * documentSizeX: Number, * documentSizeY: Number, * engine: { * name: String, * version: String, * }, * imagesNo: Number, * ip: String, * latitude: Number, * loadTime: Number, * longitude: Number, * operatingSystem: { * name: String, * version: String, * }, * paragraphsNo: Number, * screenSizeX: Number, * screenSizeY: Number, * sessionCreationDate: Number, * sessionId: String, * sourceId: String, * sourceType: String, * tags: Array<String>, * title: String, * url: String, * userAgent: String, * userId: String, * userName: String, * usingAdBlock: Boolean, * usingMobile: Boolean, * videosNo: Number, * wordsInBody: Object<String, Number>, * wordsInTitle: Object<String, Number>, * wordsNo: Number, * }} Visit * * ???? * * * @typedef {{ * type: String, * payload: * * }} ReduxAction * * @typedef {Object<String, { * path: Array<String>, * key: String * }>} IdOptions * * @typedef {{ * collection: String, * path: Array<String>, * foreignKey: String, * localKey: String, * }} MergeOption * * * @typedef {XML} Group * @typedef {XML} Condition * @typedef {XML} Filter * * @typedef {Object<String, [GroupObject]>} Filters * * @typedef {Array<Object>} Projections * * @typedef {Object<String, Object>} MongoMatchFilters * * @typedef {{ * id: String|undefined, * matchType: String, * conditions: Array<ConditionObject>, * groups: Array<GroupObject>, * onDrop: Function|undefined, * onChangeConditions: Function|undefined, * onChangeMatch: Function|undefined, * onChangeGroups: Function|undefined, * }} GroupObject * * @typedef {{ * id: String, * onDrop: Function, * key: String, * operator: ConditionOperator, * value: *, * isValid: Boolean * }} ConditionObject * * @typedef {{ * label: String, * value: String, * field: ConditionOperatorField, * }} ConditionOperator * * @typedef {Function} ConditionOperatorField * * @typedef { * { * title: String, * description: String, * type: Number, * validate: Function, * queryString: String * } * } Field * * @typedef { * { * title: String, * description: String, * fields: [Field], * execute: Generator * } * } Preset * * @typedef {{ * date: Number, * sessionId: String, * userId: Number, * _id: ObjectId, * value: { * affinity: UAT_Affinity, * persona: UAT_Persona, * profile: UAT_Profile, * user: UAT_User, * } * }} UserAffinity * * @typedef {{ * section: Array<{ * average: Number, * count: Number, * relevance: Number, * score: Number, * sourceType: String, * tagScores: Array<{ * average: Number, * count: Number, * relevance: Number, * score: Number, * tag: String, * }> * }> * }} UAT_Affinity * * @typedef {Object} UAT_Persona * * @typedef {Object} UAT_Profile * * @typedef { * { * resourcesVisited: ResourcesVisited|undefined, * userName: String|undefined, * } * } UAT_User * * @typedef { * { * _id: String, * userId: Array<Number>|undefined, * usingMobile: Boolean|undefined, * screenSizeX: String|undefined, * screenSizeY: String|undefined, * browserId: String|undefined, * operatingSystemId: String|undefined, * deviceId: String|undefined, * engineId: String|undefined, * cpuId: String|undefined, * resourcesVisited: ResourcesVisited|[]|undefined, * } * } UAT_Session * * @typedef {{ * sourceType: String, * score: Number, * average: Number, * count: Number, * relevance: Number, * tagScores: [{ * tag: String, * score: Number, * average: Number, * count: Number, * relevance: Number, * }] * }} UAT_SectionAffinity * * @typedef {{ * author: String, * score: Number, * average: Number, * count: Number, * relevance: Number, * }} UAT_AuthorAffinity * * @typedef {{ * authorId: Number, * score: Number, * average: Number, * count: Number, * relevance: Number, * }} UAT_AuthorIdAffinity * * @typedef { * [{ * sourceType: String, * ids: [ResourceVisited], * }] * } ResourcesVisited * * @typedef { * { * author: String, * authorId: Number, * visitId: String, * sourceId: String, * tag: String * } * } ResourceVisited * * @typedef {{ * label: String, * fieldName: String, * type: String, * target: String, * inAffinityUser: Boolean|undefined, * inAffinityPersona: Boolean|undefined, * inAffinityProfile: Boolean|undefined, * includeInOrientationQueries: Boolean|undefined, * weight: Number|undefined, * }} ExtraInformation * * */