@ohbug/core 2.0.4 → 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.js CHANGED
@@ -1,5 +1,5 @@
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 b=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 c=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
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
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 c(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,b.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,b.isString)(t)?t:"",d=n||{},g=(0,b.isString)(r)?r:"",h=new c(o,d,g,a);i.length>=this.__config.maxActions&&i.shift(),i.push(h)}getUser(){return this.__user}setUser(t){if((0,b.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});
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
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 c(e,t){return new Error(`Invalid data
5
- - ${e}, got ${JSON.stringify(t)}`)}function b(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(c("setUser should be an object and have up to 6 attributes",t))}addMetadata(t,n){return b(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(c("setUser should be an object and have up to 6 attributes",t))}addMetadata(t,n){return b(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};
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.4",
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.3",
34
- "@ohbug/utils": "2.0.3"
33
+ "@ohbug/types": "2.0.4",
34
+ "@ohbug/utils": "2.0.4"
35
35
  },
36
36
  "scripts": {
37
37
  "build": "tsup",