@ohbug/core 2.0.2 → 2.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,11 +1,10 @@
1
- import { OhbugClientConstructor, OhbugEventWithMethods, OhbugExtension, OhbugExtensionUI } from '@ohbug/types';
1
+ import { OhbugClientConstructor, OhbugEventWithMethods, OhbugExtension } from '@ohbug/types';
2
2
 
3
3
  declare const Client: OhbugClientConstructor;
4
4
 
5
5
  declare function isEvent(eventLike: any): eventLike is OhbugEventWithMethods<any>;
6
6
 
7
7
  declare function defineExtension(extension: OhbugExtension): OhbugExtension;
8
- declare function createExtensionUI(extensionUI: OhbugExtensionUI): OhbugExtensionUI;
9
8
 
10
9
  declare const enum EventTypes {
11
10
  UNCAUGHT_ERROR = "uncaughtError",
@@ -27,4 +26,4 @@ declare const enum EventTypes {
27
26
  MINIAPP_MEMORYWARNING_ERROR = "miniappMemorywarningError"
28
27
  }
29
28
 
30
- export { Client, EventTypes, createExtensionUI, defineExtension, isEvent };
29
+ export { Client, EventTypes, defineExtension, isEvent };
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- var _=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames,U=Object.getOwnPropertySymbols;var N=Object.prototype.hasOwnProperty,$=Object.prototype.propertyIsEnumerable;var v=(e,t,n)=>t in e?_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,O=(e,t)=>{for(var n in t||(t={}))N.call(t,n)&&v(e,n,t[n]);if(U)for(var n of U(t))$.call(t,n)&&v(e,n,t[n]);return e};var B=(e,t)=>{for(var n in t)_(e,n,{get:t[n],enumerable:!0})},H=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of J(t))!N.call(e,i)&&i!==n&&_(e,i,{get:()=>t[i],enumerable:!(r=F(t,i))||r.enumerable});return e};var q=e=>H(_({},"__esModule",{value:!0}),e);var Z={};B(Z,{Client:()=>Y,EventTypes:()=>K,createExtensionUI:()=>Q,defineExtension:()=>z,isEvent:()=>M});module.exports=q(Z);var m=require("@ohbug/utils");var u=require("@ohbug/utils"),V={apiKey:{defaultValue:void 0,message:"is required",validate:e=>Boolean(e)&&(0,u.isString)(e)},appVersion:{defaultValue:void 0,message:"should be a string",validate:e=>e===void 0||(0,u.isString)(e)},appType:{defaultValue:void 0,message:"should be a string",validate:e=>e===void 0||(0,u.isString)(e)},releaseStage:{defaultValue:"production",message:"should be a string",validate:e=>e===void 0||(0,u.isString)(e)},endpoint:{defaultValue:"http://localhost:6660",message:"should be a string",validate:e=>e===void 0||(0,u.isString)(e)},maxActions:{defaultValue:30,message:"should be a number between 0 and 100",validate:e=>e===void 0||(0,u.isNumber)(e)&&e>=1&&e<=100},onEvent:{defaultValue:e=>e,message:"should be a function",validate:e=>e===void 0||(0,u.isFunction)(e)},onNotify:{defaultValue:()=>{},message:"should be a function",validate:e=>e===void 0||(0,u.isFunction)(e)},logger:{defaultValue:u.logger,message:"should be null or an object with methods { log, info, warn, error }",validate:e=>e===void 0||e&&["log","info","warn","error"].reduce((t,n)=>t&&typeof e[n]=="function",!0)},user:{defaultValue:void 0,message:"should be an object and have up to 6 attributes",validate:e=>e===void 0||(0,u.isObject)(e)&&Object.keys(e).length<=6},metaData:{defaultValue:void 0,message:"should be an object",validate:e=>e===void 0||(0,u.isObject)(e)}};var c=require("@ohbug/utils");var p=class{type;timestamp;message;data;constructor(t,n,r,i){this.type=r,this.timestamp=i||new Date().toISOString(),this.message=t,this.data=n}};function W(e,t){return new Error(`Invalid configuration
1
+ "use strict";var R=Object.defineProperty;var I=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var P=Object.prototype.hasOwnProperty;var K=(e,t)=>{for(var n in t)R(e,n,{get:t[n],enumerable:!0})},G=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of k(t))!P.call(e,a)&&a!==n&&R(e,a,{get:()=>t[a],enumerable:!(r=I(t,a))||r.enumerable});return e};var F=e=>G(R({},"__esModule",{value:!0}),e);var H={};K(H,{Client:()=>$,EventTypes:()=>W,defineExtension:()=>B,isEvent:()=>y});module.exports=F(H);var c=require("@ohbug/utils");var u=require("@ohbug/utils"),A={apiKey:{defaultValue:void 0,message:"is required",validate:e=>Boolean(e)&&(0,u.isString)(e)},appVersion:{defaultValue:void 0,message:"should be a string",validate:e=>e===void 0||(0,u.isString)(e)},appType:{defaultValue:void 0,message:"should be a string",validate:e=>e===void 0||(0,u.isString)(e)},releaseStage:{defaultValue:"production",message:"should be a string",validate:e=>e===void 0||(0,u.isString)(e)},endpoint:{defaultValue:"http://localhost:6660",message:"should be a string",validate:e=>e===void 0||(0,u.isString)(e)},maxActions:{defaultValue:30,message:"should be a number between 0 and 100",validate:e=>e===void 0||(0,u.isNumber)(e)&&e>=1&&e<=100},onEvent:{defaultValue:e=>e,message:"should be a function",validate:e=>e===void 0||(0,u.isFunction)(e)},onNotify:{defaultValue:()=>{},message:"should be a function",validate:e=>e===void 0||(0,u.isFunction)(e)},logger:{defaultValue:u.logger,message:"should be null or an object with methods { log, info, warn, error }",validate:e=>e===void 0||e&&["log","info","warn","error"].reduce((t,n)=>t&&typeof e[n]=="function",!0)},user:{defaultValue:void 0,message:"should be an object and have up to 6 attributes",validate:e=>e===void 0||(0,u.isObject)(e)&&Object.keys(e).length<=6},metadata:{defaultValue:void 0,message:"should be an object",validate:e=>e===void 0||(0,u.isObject)(e)}};var l=require("@ohbug/utils");var b=class{type;timestamp;message;data;constructor(t,n,r,a){this.type=r,this.timestamp=a||new Date().toISOString(),this.message=t,this.data=n}};function S(e,t){return new Error(`Invalid configuration
2
2
  ${Object.keys(e).map(n=>`- ${n} ${e[n]}, got ${JSON.stringify(t[n])}`).join(`
3
3
  `)}
4
- `)}function y(e,t){return new Error(`Invalid data
5
- - ${e}, got ${JSON.stringify(t)}`)}function D(e,t,n){!t||(e[t]=n)}function E(e,t){if(e[t])return e[t]}function C(e,t){if(e[t])return delete e[t]}var S=class{apiKey;appVersion;appType;timestamp;category;type;sdk;device;detail;user;actions;metaData;releaseStage;__client;constructor(t,n){let{apiKey:r,appVersion:i,appType:o,releaseStage:a,timestamp:h,category:g,type:d,sdk:f,detail:b,device:R,user:x,actions:G,metaData:A}=t;this.apiKey=r,this.appVersion=i,this.appType=o,this.releaseStage=a,this.timestamp=h,this.category=g,this.type=d,this.sdk=f,this.detail=b,this.device=R,this.user=x,this.actions=G,this.metaData=A!=null?A:{},this.__client=n}get __isOhbugEvent(){return!0}addAction(t,n,r,i){var f,b;let o=this.actions,a=(0,c.isString)(t)?t:"",h=n||{},g=(0,c.isString)(r)?r:"",d=new p(a,h,g,i);o.length>=((b=(f=this.__client)==null?void 0:f.__config.maxActions)!=null?b:30)&&o.shift(),o.push(d)}getUser(){return this.user}setUser(t){var n;if((0,c.isObject)(t)&&Object.keys(t).length<=6)return this.user=O(O({},this.user),t),this.getUser();(n=this.__client)==null||n.__logger.error(y("setUser should be an object and have up to 6 attributes",t))}addMetaData(t,n){return D(this.metaData,t,n)}getMetaData(t){return E(this.metaData,t)}deleteMetaData(t){return C(this.metaData,t)}toJSON(){let{apiKey:t,appVersion:n,appType:r,timestamp:i,category:o,type:a,sdk:h,device:g,detail:d,user:f,actions:b,metaData:R,releaseStage:x}=this;return{apiKey:t,appVersion:n,appType:r,timestamp:i,category:o,type:a,sdk:h,device:g,detail:d,user:f,actions:b,metaData:R,releaseStage:x}}};function w(e,t){let{apiKey:n,appVersion:r,appType:i,releaseStage:o}=t.__config,a=new Date().toISOString(),h=t.__device(t),g,d,f;return(0,c.isObject)(e)&&Object.prototype.hasOwnProperty.call(e,"type")&&Object.prototype.hasOwnProperty.call(e,"detail")?(g=e.category||"error",d=e.type,f=e.detail):(g="error",d="unknownError",f=e),new S({apiKey:n,appVersion:r,appType:i,timestamp:a,category:g,type:d,sdk:t.__sdk,device:h,user:t.__user,detail:f,actions:t.__actions,metaData:t.__metaData,releaseStage:o},t)}function j(e,t){let n=[t.__config.onEvent,...t.__extensions.map(({onEvent:r})=>r)].filter(r=>(0,c.isFunction)(r));return n.length===0?e:n.reduce((r,i)=>r&&(0,c.isFunction)(i)?i(r,t):null,e)}function M(e){return Boolean(e==null?void 0:e.__isOhbugEvent)}var I=require("@ohbug/utils");function X(e,t){[t.__config.onNotify,...t.__extensions.filter(({onNotify:r})=>(0,I.isFunction)(r)).map(({onNotify:r})=>r)].forEach(r=>r==null?void 0:r(e,t))}async function k(e,t){try{let n=null;return e&&(n=await t.__notifier(e),X(e,t)),n}catch(n){t.__logger.error(n)}}function P(e,t){return Object.keys(t).reduce((r,i)=>{let o=e[i],{defaultValue:a,message:h,validate:g}=t[i];return o!==void 0?g(o)?r.config[i]=o:(r.config[i]=a,r.errors[i]=h):r.config[i]=a,r},{config:{},errors:{}})}var Y=class{__sdk;__config;__logger;__device;__notifier;__extensions;__actions;__user;__metaData;constructor({sdk:t,config:n,schema:r=V,device:i,notifier:o}){let{config:a,errors:h}=P(n,r);this.__sdk=t,this.__config=a,this.__logger=a.logger,this.__device=i,this.__notifier=o,this.__extensions=[],this.__actions=[],this.__user=a.user,this.__metaData={},(0,m.isObject)(a.metaData)&&Object.keys(a.metaData).forEach(g=>{this.addMetaData(g,a.metaData[g])}),Object.keys(h).length&&this.__logger.warn(W(h,n))}use(t){var n;return this.__extensions.push(t),(n=t.setup)==null||n.call(t,this),this}createEvent(t){let n=w(t,this);return j(n,this)}notify(t,n){let r;return Boolean(t)&&!M(t)?r=this.createEvent(t):r=t,n&&(r=n(r)),k(r,this)}addAction(t,n,r,i){let o=this.__actions,a=(0,m.isString)(t)?t:"",h=n||{},g=(0,m.isString)(r)?r:"",d=new p(a,h,g,i);o.length>=this.__config.maxActions&&o.shift(),o.push(d)}getUser(){return this.__user}setUser(t){if((0,m.isObject)(t)&&Object.keys(t).length<=6)return this.__user=O(O({},this.__user),t),this.getUser();this.__logger.warn(y("setUser should be an object and have up to 6 attributes",t))}addMetaData(t,n){return D(this.__metaData,t,n)}getMetaData(t){return E(this.__metaData,t)}deleteMetaData(t){return C(this.__metaData,t)}};function z(e){return e}function Q(e){return e}var K=(s=>(s.UNCAUGHT_ERROR="uncaughtError",s.RESOURCE_ERROR="resourceError",s.UNHANDLEDREJECTION_ERROR="unhandledrejectionError",s.AJAX_ERROR="ajaxError",s.FETCH_ERROR="fetchError",s.WEBSOCKET_ERROR="websocketError",s.UNKNOWN_ERROR="unknownError",s.MESSAGE="message",s.FEEDBACK="feedback",s.VIEW="view",s.REACT="react",s.VUE="vue",s.ANGULAR="angular",s.MINIAPP_ERROR="miniappError",s.MINIAPP_UNHANDLEDREJECTION_ERROR="miniappUnhandledrejectionError",s.MINIAPP_PAGENOTFOUND_ERROR="miniappPagenotfoundError",s.MINIAPP_MEMORYWARNING_ERROR="miniappMemorywarningError",s))(K||{});0&&(module.exports={Client,EventTypes,createExtensionUI,defineExtension,isEvent});
4
+ `)}function O(e,t){return new Error(`Invalid data
5
+ - ${e}, got ${JSON.stringify(t)}`)}function p(e,t,n){!t||(e[t]=n)}function m(e,t){if(e[t])return e[t]}function _(e,t){if(e[t])return delete e[t]}var D=class{apiKey;appVersion;appType;timestamp;category;type;sdk;device;detail;user;actions;metadata;releaseStage;__client;constructor(t,n){let{apiKey:r,appVersion:a,appType:i,releaseStage:o,timestamp:d,category:g,type:h,sdk:f,detail:E,device:C,user:M,actions:w,metadata:j}=t;this.apiKey=r,this.appVersion=a,this.appType=i,this.releaseStage=o,this.timestamp=d,this.category=g,this.type=h,this.sdk=f,this.detail=E,this.device=C,this.user=M,this.actions=w,this.metadata=j??{},this.__client=n}get __isOhbugEvent(){return!0}addAction(t,n,r,a){var f;let i=this.actions,o=(0,l.isString)(t)?t:"",d=n||{},g=(0,l.isString)(r)?r:"",h=new b(o,d,g,a);i.length>=(((f=this.__client)==null?void 0:f.__config.maxActions)??30)&&i.shift(),i.push(h)}getUser(){return this.user}setUser(t){var n;if((0,l.isObject)(t)&&Object.keys(t).length<=6)return this.user={...this.user,...t},this.getUser();(n=this.__client)==null||n.__logger.error(O("setUser should be an object and have up to 6 attributes",t))}addMetadata(t,n){return p(this.metadata,t,n)}getMetadata(t){return m(this.metadata,t)}deleteMetadata(t){return _(this.metadata,t)}toJSON(){let{apiKey:t,appVersion:n,appType:r,timestamp:a,category:i,type:o,sdk:d,device:g,detail:h,user:f,actions:E,metadata:C,releaseStage:M}=this;return{apiKey:t,appVersion:n,appType:r,timestamp:a,category:i,type:o,sdk:d,device:g,detail:h,user:f,actions:E,metadata:C,releaseStage:M}}};function v(e,t){let{apiKey:n,appVersion:r,appType:a,releaseStage:i}=t.__config,o=new Date().toISOString(),d=t.__device(t),g,h,f;return(0,l.isObject)(e)&&Object.prototype.hasOwnProperty.call(e,"type")&&Object.prototype.hasOwnProperty.call(e,"detail")?(g=e.category||"error",h=e.type,f=e.detail):(g="error",h="unknownError",f=e),new D({apiKey:n,appVersion:r,appType:a,timestamp:o,category:g,type:h,sdk:t.__sdk,device:d,user:t.__user,detail:f,actions:t.__actions,metadata:t.__metadata,releaseStage:i},t)}function x(e,t){let n=[t.__config.onEvent,...t.__extensions.map(({onEvent:r})=>r)].filter(r=>(0,l.isFunction)(r));return n.length===0?e:n.reduce((r,a)=>r&&(0,l.isFunction)(a)?a(r,t):null,e)}function y(e){return Boolean(e==null?void 0:e.__isOhbugEvent)}var U=require("@ohbug/utils");function J(e,t){[t.__config.onNotify,...t.__extensions.filter(({onNotify:r})=>(0,U.isFunction)(r)).map(({onNotify:r})=>r)].forEach(r=>r==null?void 0:r(e,t))}async function N(e,t){try{let n=null;return e&&(n=await t.__notifier(e),J(e,t)),n}catch(n){t.__logger.error(n)}}function V(e,t){return Object.keys(t).reduce((r,a)=>{let i=e[a],{defaultValue:o,message:d,validate:g}=t[a];return i!==void 0?g(i)?r.config[a]=i:(r.config[a]=o,r.errors[a]=d):r.config[a]=o,r},{config:{},errors:{}})}var $=class{__sdk;__config;__logger;__device;__notifier;__extensions;__actions;__user;__metadata;constructor({sdk:t,config:n,schema:r=A,device:a,notifier:i}){let{config:o,errors:d}=V(n,r);this.__sdk=t,this.__config=o,this.__logger=o.logger,this.__device=a,this.__notifier=i,this.__extensions=[],this.__actions=[],this.__user=o.user,this.__metadata={},(0,c.isObject)(o.metadata)&&Object.keys(o.metadata).forEach(g=>{this.addMetadata(g,o.metadata[g])}),Object.keys(d).length&&this.__logger.warn(S(d,n))}use(t){var n;return this.__extensions.push(t),(n=t.setup)==null||n.call(t,this),this}createEvent(t){let n=v(t,this);return x(n,this)}notify(t,n){let r;return Boolean(t)&&!y(t)?r=this.createEvent(t):r=t,n&&(r=n(r)),N(r,this)}addAction(t,n,r,a){let i=this.__actions,o=(0,c.isString)(t)?t:"",d=n||{},g=(0,c.isString)(r)?r:"",h=new b(o,d,g,a);i.length>=this.__config.maxActions&&i.shift(),i.push(h)}getUser(){return this.__user}setUser(t){if((0,c.isObject)(t)&&Object.keys(t).length<=6)return this.__user={...this.__user,...t},this.getUser();this.__logger.warn(O("setUser should be an object and have up to 6 attributes",t))}addMetadata(t,n){return p(this.__metadata,t,n)}getMetadata(t){return m(this.__metadata,t)}deleteMetadata(t){return _(this.__metadata,t)}};function B(e){return e||{}}var W=(s=>(s.UNCAUGHT_ERROR="uncaughtError",s.RESOURCE_ERROR="resourceError",s.UNHANDLEDREJECTION_ERROR="unhandledrejectionError",s.AJAX_ERROR="ajaxError",s.FETCH_ERROR="fetchError",s.WEBSOCKET_ERROR="websocketError",s.UNKNOWN_ERROR="unknownError",s.MESSAGE="message",s.FEEDBACK="feedback",s.VIEW="view",s.REACT="react",s.VUE="vue",s.ANGULAR="angular",s.MINIAPP_ERROR="miniappError",s.MINIAPP_UNHANDLEDREJECTION_ERROR="miniappUnhandledrejectionError",s.MINIAPP_PAGENOTFOUND_ERROR="miniappPagenotfoundError",s.MINIAPP_MEMORYWARNING_ERROR="miniappMemorywarningError",s))(W||{});0&&(module.exports={Client,EventTypes,defineExtension,isEvent});
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
- var $=Object.defineProperty;var A=Object.getOwnPropertySymbols;var B=Object.prototype.hasOwnProperty,H=Object.prototype.propertyIsEnumerable;var S=(e,t,n)=>t in e?$(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,b=(e,t)=>{for(var n in t||(t={}))B.call(t,n)&&S(e,n,t[n]);if(A)for(var n of A(t))H.call(t,n)&&S(e,n,t[n]);return e};import{isObject as G,isString as F}from"@ohbug/utils";import{isFunction as U,isNumber as q,isObject as v,isString as p,logger as X}from"@ohbug/utils";var N={apiKey:{defaultValue:void 0,message:"is required",validate:e=>Boolean(e)&&p(e)},appVersion:{defaultValue:void 0,message:"should be a string",validate:e=>e===void 0||p(e)},appType:{defaultValue:void 0,message:"should be a string",validate:e=>e===void 0||p(e)},releaseStage:{defaultValue:"production",message:"should be a string",validate:e=>e===void 0||p(e)},endpoint:{defaultValue:"http://localhost:6660",message:"should be a string",validate:e=>e===void 0||p(e)},maxActions:{defaultValue:30,message:"should be a number between 0 and 100",validate:e=>e===void 0||q(e)&&e>=1&&e<=100},onEvent:{defaultValue:e=>e,message:"should be a function",validate:e=>e===void 0||U(e)},onNotify:{defaultValue:()=>{},message:"should be a function",validate:e=>e===void 0||U(e)},logger:{defaultValue:X,message:"should be null or an object with methods { log, info, warn, error }",validate:e=>e===void 0||e&&["log","info","warn","error"].reduce((t,n)=>t&&typeof e[n]=="function",!0)},user:{defaultValue:void 0,message:"should be an object and have up to 6 attributes",validate:e=>e===void 0||v(e)&&Object.keys(e).length<=6},metaData:{defaultValue:void 0,message:"should be an object",validate:e=>e===void 0||v(e)}};import{isFunction as W,isObject as j,isString as w}from"@ohbug/utils";var O=class{type;timestamp;message;data;constructor(t,n,r,i){this.type=r,this.timestamp=i||new Date().toISOString(),this.message=t,this.data=n}};function V(e,t){return new Error(`Invalid configuration
1
+ import{isObject as w,isString as j}from"@ohbug/utils";import{isFunction as M,isNumber as P,isObject as R,isString as l,logger as K}from"@ohbug/utils";var D={apiKey:{defaultValue:void 0,message:"is required",validate:e=>Boolean(e)&&l(e)},appVersion:{defaultValue:void 0,message:"should be a string",validate:e=>e===void 0||l(e)},appType:{defaultValue:void 0,message:"should be a string",validate:e=>e===void 0||l(e)},releaseStage:{defaultValue:"production",message:"should be a string",validate:e=>e===void 0||l(e)},endpoint:{defaultValue:"http://localhost:6660",message:"should be a string",validate:e=>e===void 0||l(e)},maxActions:{defaultValue:30,message:"should be a number between 0 and 100",validate:e=>e===void 0||P(e)&&e>=1&&e<=100},onEvent:{defaultValue:e=>e,message:"should be a function",validate:e=>e===void 0||M(e)},onNotify:{defaultValue:()=>{},message:"should be a function",validate:e=>e===void 0||M(e)},logger:{defaultValue:K,message:"should be null or an object with methods { log, info, warn, error }",validate:e=>e===void 0||e&&["log","info","warn","error"].reduce((t,n)=>t&&typeof e[n]=="function",!0)},user:{defaultValue:void 0,message:"should be an object and have up to 6 attributes",validate:e=>e===void 0||R(e)&&Object.keys(e).length<=6},metadata:{defaultValue:void 0,message:"should be an object",validate:e=>e===void 0||R(e)}};import{isFunction as S,isObject as x,isString as v}from"@ohbug/utils";var f=class{type;timestamp;message;data;constructor(t,n,r,a){this.type=r,this.timestamp=a||new Date().toISOString(),this.message=t,this.data=n}};function A(e,t){return new Error(`Invalid configuration
2
2
  ${Object.keys(e).map(n=>`- ${n} ${e[n]}, got ${JSON.stringify(t[n])}`).join(`
3
3
  `)}
4
- `)}function m(e,t){return new Error(`Invalid data
5
- - ${e}, got ${JSON.stringify(t)}`)}function _(e,t,n){!t||(e[t]=n)}function y(e,t){if(e[t])return e[t]}function D(e,t){if(e[t])return delete e[t]}var R=class{apiKey;appVersion;appType;timestamp;category;type;sdk;device;detail;user;actions;metaData;releaseStage;__client;constructor(t,n){let{apiKey:r,appVersion:i,appType:o,releaseStage:a,timestamp:u,category:g,type:h,sdk:d,detail:c,device:E,user:C,actions:J,metaData:M}=t;this.apiKey=r,this.appVersion=i,this.appType=o,this.releaseStage=a,this.timestamp=u,this.category=g,this.type=h,this.sdk=d,this.detail=c,this.device=E,this.user=C,this.actions=J,this.metaData=M!=null?M:{},this.__client=n}get __isOhbugEvent(){return!0}addAction(t,n,r,i){var d,c;let o=this.actions,a=w(t)?t:"",u=n||{},g=w(r)?r:"",h=new O(a,u,g,i);o.length>=((c=(d=this.__client)==null?void 0:d.__config.maxActions)!=null?c:30)&&o.shift(),o.push(h)}getUser(){return this.user}setUser(t){var n;if(j(t)&&Object.keys(t).length<=6)return this.user=b(b({},this.user),t),this.getUser();(n=this.__client)==null||n.__logger.error(m("setUser should be an object and have up to 6 attributes",t))}addMetaData(t,n){return _(this.metaData,t,n)}getMetaData(t){return y(this.metaData,t)}deleteMetaData(t){return D(this.metaData,t)}toJSON(){let{apiKey:t,appVersion:n,appType:r,timestamp:i,category:o,type:a,sdk:u,device:g,detail:h,user:d,actions:c,metaData:E,releaseStage:C}=this;return{apiKey:t,appVersion:n,appType:r,timestamp:i,category:o,type:a,sdk:u,device:g,detail:h,user:d,actions:c,metaData:E,releaseStage:C}}};function I(e,t){let{apiKey:n,appVersion:r,appType:i,releaseStage:o}=t.__config,a=new Date().toISOString(),u=t.__device(t),g,h,d;return j(e)&&Object.prototype.hasOwnProperty.call(e,"type")&&Object.prototype.hasOwnProperty.call(e,"detail")?(g=e.category||"error",h=e.type,d=e.detail):(g="error",h="unknownError",d=e),new R({apiKey:n,appVersion:r,appType:i,timestamp:a,category:g,type:h,sdk:t.__sdk,device:u,user:t.__user,detail:d,actions:t.__actions,metaData:t.__metaData,releaseStage:o},t)}function k(e,t){let n=[t.__config.onEvent,...t.__extensions.map(({onEvent:r})=>r)].filter(r=>W(r));return n.length===0?e:n.reduce((r,i)=>r&&W(i)?i(r,t):null,e)}function x(e){return Boolean(e==null?void 0:e.__isOhbugEvent)}import{isFunction as Y}from"@ohbug/utils";function z(e,t){[t.__config.onNotify,...t.__extensions.filter(({onNotify:r})=>Y(r)).map(({onNotify:r})=>r)].forEach(r=>r==null?void 0:r(e,t))}async function P(e,t){try{let n=null;return e&&(n=await t.__notifier(e),z(e,t)),n}catch(n){t.__logger.error(n)}}function K(e,t){return Object.keys(t).reduce((r,i)=>{let o=e[i],{defaultValue:a,message:u,validate:g}=t[i];return o!==void 0?g(o)?r.config[i]=o:(r.config[i]=a,r.errors[i]=u):r.config[i]=a,r},{config:{},errors:{}})}var _t=class{__sdk;__config;__logger;__device;__notifier;__extensions;__actions;__user;__metaData;constructor({sdk:t,config:n,schema:r=N,device:i,notifier:o}){let{config:a,errors:u}=K(n,r);this.__sdk=t,this.__config=a,this.__logger=a.logger,this.__device=i,this.__notifier=o,this.__extensions=[],this.__actions=[],this.__user=a.user,this.__metaData={},G(a.metaData)&&Object.keys(a.metaData).forEach(g=>{this.addMetaData(g,a.metaData[g])}),Object.keys(u).length&&this.__logger.warn(V(u,n))}use(t){var n;return this.__extensions.push(t),(n=t.setup)==null||n.call(t,this),this}createEvent(t){let n=I(t,this);return k(n,this)}notify(t,n){let r;return Boolean(t)&&!x(t)?r=this.createEvent(t):r=t,n&&(r=n(r)),P(r,this)}addAction(t,n,r,i){let o=this.__actions,a=F(t)?t:"",u=n||{},g=F(r)?r:"",h=new O(a,u,g,i);o.length>=this.__config.maxActions&&o.shift(),o.push(h)}getUser(){return this.__user}setUser(t){if(G(t)&&Object.keys(t).length<=6)return this.__user=b(b({},this.__user),t),this.getUser();this.__logger.warn(m("setUser should be an object and have up to 6 attributes",t))}addMetaData(t,n){return _(this.__metaData,t,n)}getMetaData(t){return y(this.__metaData,t)}deleteMetaData(t){return D(this.__metaData,t)}};function Et(e){return e}function Ct(e){return e}var Q=(s=>(s.UNCAUGHT_ERROR="uncaughtError",s.RESOURCE_ERROR="resourceError",s.UNHANDLEDREJECTION_ERROR="unhandledrejectionError",s.AJAX_ERROR="ajaxError",s.FETCH_ERROR="fetchError",s.WEBSOCKET_ERROR="websocketError",s.UNKNOWN_ERROR="unknownError",s.MESSAGE="message",s.FEEDBACK="feedback",s.VIEW="view",s.REACT="react",s.VUE="vue",s.ANGULAR="angular",s.MINIAPP_ERROR="miniappError",s.MINIAPP_UNHANDLEDREJECTION_ERROR="miniappUnhandledrejectionError",s.MINIAPP_PAGENOTFOUND_ERROR="miniappPagenotfoundError",s.MINIAPP_MEMORYWARNING_ERROR="miniappMemorywarningError",s))(Q||{});export{_t as Client,Q as EventTypes,Ct as createExtensionUI,Et as defineExtension,x as isEvent};
4
+ `)}function b(e,t){return new Error(`Invalid data
5
+ - ${e}, got ${JSON.stringify(t)}`)}function c(e,t,n){!t||(e[t]=n)}function O(e,t){if(e[t])return e[t]}function p(e,t){if(e[t])return delete e[t]}var E=class{apiKey;appVersion;appType;timestamp;category;type;sdk;device;detail;user;actions;metadata;releaseStage;__client;constructor(t,n){let{apiKey:r,appVersion:a,appType:i,releaseStage:o,timestamp:u,category:g,type:d,sdk:h,detail:m,device:_,user:y,actions:I,metadata:k}=t;this.apiKey=r,this.appVersion=a,this.appType=i,this.releaseStage=o,this.timestamp=u,this.category=g,this.type=d,this.sdk=h,this.detail=m,this.device=_,this.user=y,this.actions=I,this.metadata=k??{},this.__client=n}get __isOhbugEvent(){return!0}addAction(t,n,r,a){var h;let i=this.actions,o=v(t)?t:"",u=n||{},g=v(r)?r:"",d=new f(o,u,g,a);i.length>=(((h=this.__client)==null?void 0:h.__config.maxActions)??30)&&i.shift(),i.push(d)}getUser(){return this.user}setUser(t){var n;if(x(t)&&Object.keys(t).length<=6)return this.user={...this.user,...t},this.getUser();(n=this.__client)==null||n.__logger.error(b("setUser should be an object and have up to 6 attributes",t))}addMetadata(t,n){return c(this.metadata,t,n)}getMetadata(t){return O(this.metadata,t)}deleteMetadata(t){return p(this.metadata,t)}toJSON(){let{apiKey:t,appVersion:n,appType:r,timestamp:a,category:i,type:o,sdk:u,device:g,detail:d,user:h,actions:m,metadata:_,releaseStage:y}=this;return{apiKey:t,appVersion:n,appType:r,timestamp:a,category:i,type:o,sdk:u,device:g,detail:d,user:h,actions:m,metadata:_,releaseStage:y}}};function U(e,t){let{apiKey:n,appVersion:r,appType:a,releaseStage:i}=t.__config,o=new Date().toISOString(),u=t.__device(t),g,d,h;return x(e)&&Object.prototype.hasOwnProperty.call(e,"type")&&Object.prototype.hasOwnProperty.call(e,"detail")?(g=e.category||"error",d=e.type,h=e.detail):(g="error",d="unknownError",h=e),new E({apiKey:n,appVersion:r,appType:a,timestamp:o,category:g,type:d,sdk:t.__sdk,device:u,user:t.__user,detail:h,actions:t.__actions,metadata:t.__metadata,releaseStage:i},t)}function N(e,t){let n=[t.__config.onEvent,...t.__extensions.map(({onEvent:r})=>r)].filter(r=>S(r));return n.length===0?e:n.reduce((r,a)=>r&&S(a)?a(r,t):null,e)}function C(e){return Boolean(e==null?void 0:e.__isOhbugEvent)}import{isFunction as G}from"@ohbug/utils";function F(e,t){[t.__config.onNotify,...t.__extensions.filter(({onNotify:r})=>G(r)).map(({onNotify:r})=>r)].forEach(r=>r==null?void 0:r(e,t))}async function V(e,t){try{let n=null;return e&&(n=await t.__notifier(e),F(e,t)),n}catch(n){t.__logger.error(n)}}function W(e,t){return Object.keys(t).reduce((r,a)=>{let i=e[a],{defaultValue:o,message:u,validate:g}=t[a];return i!==void 0?g(i)?r.config[a]=i:(r.config[a]=o,r.errors[a]=u):r.config[a]=o,r},{config:{},errors:{}})}var dt=class{__sdk;__config;__logger;__device;__notifier;__extensions;__actions;__user;__metadata;constructor({sdk:t,config:n,schema:r=D,device:a,notifier:i}){let{config:o,errors:u}=W(n,r);this.__sdk=t,this.__config=o,this.__logger=o.logger,this.__device=a,this.__notifier=i,this.__extensions=[],this.__actions=[],this.__user=o.user,this.__metadata={},w(o.metadata)&&Object.keys(o.metadata).forEach(g=>{this.addMetadata(g,o.metadata[g])}),Object.keys(u).length&&this.__logger.warn(A(u,n))}use(t){var n;return this.__extensions.push(t),(n=t.setup)==null||n.call(t,this),this}createEvent(t){let n=U(t,this);return N(n,this)}notify(t,n){let r;return Boolean(t)&&!C(t)?r=this.createEvent(t):r=t,n&&(r=n(r)),V(r,this)}addAction(t,n,r,a){let i=this.__actions,o=j(t)?t:"",u=n||{},g=j(r)?r:"",d=new f(o,u,g,a);i.length>=this.__config.maxActions&&i.shift(),i.push(d)}getUser(){return this.__user}setUser(t){if(w(t)&&Object.keys(t).length<=6)return this.__user={...this.__user,...t},this.getUser();this.__logger.warn(b("setUser should be an object and have up to 6 attributes",t))}addMetadata(t,n){return c(this.__metadata,t,n)}getMetadata(t){return O(this.__metadata,t)}deleteMetadata(t){return p(this.__metadata,t)}};function lt(e){return e||{}}var J=(s=>(s.UNCAUGHT_ERROR="uncaughtError",s.RESOURCE_ERROR="resourceError",s.UNHANDLEDREJECTION_ERROR="unhandledrejectionError",s.AJAX_ERROR="ajaxError",s.FETCH_ERROR="fetchError",s.WEBSOCKET_ERROR="websocketError",s.UNKNOWN_ERROR="unknownError",s.MESSAGE="message",s.FEEDBACK="feedback",s.VIEW="view",s.REACT="react",s.VUE="vue",s.ANGULAR="angular",s.MINIAPP_ERROR="miniappError",s.MINIAPP_UNHANDLEDREJECTION_ERROR="miniappUnhandledrejectionError",s.MINIAPP_PAGENOTFOUND_ERROR="miniappPagenotfoundError",s.MINIAPP_MEMORYWARNING_ERROR="miniappMemorywarningError",s))(J||{});export{dt as Client,J as EventTypes,lt as defineExtension,C as isEvent};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ohbug/core",
3
- "version": "2.0.2",
3
+ "version": "2.0.5",
4
4
  "description": "Responsible for managing Ohbug's workflow",
5
5
  "license": "Apache-2.0",
6
6
  "author": "chenyueban <jasonchan0527@gmail.com>",
@@ -30,8 +30,8 @@
30
30
  "access": "public"
31
31
  },
32
32
  "dependencies": {
33
- "@ohbug/types": "2.0.2",
34
- "@ohbug/utils": "2.0.2"
33
+ "@ohbug/types": "2.0.4",
34
+ "@ohbug/utils": "2.0.4"
35
35
  },
36
36
  "scripts": {
37
37
  "build": "tsup",