@nuralogix.ai/web-measurement-embedded-app 0.1.0-alpha.8 → 0.1.0-alpha.9

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/lib/index.d.ts CHANGED
@@ -917,7 +917,9 @@ interface Results {
917
917
  declare const measurementEmbeddedAppEvents: {
918
918
  readonly RESULTS: "results";
919
919
  readonly ERROR: "error";
920
- readonly WEBHOOK: "webhook";
920
+ readonly APPEVENT: "appEvent";
921
+ readonly CANCELLED: "cancelled";
922
+ readonly LOGS: "logs";
921
923
  };
922
924
  interface AppSettings {
923
925
  token: string;
@@ -945,10 +947,23 @@ interface MeasurementEmbeddedAppOptions {
945
947
  apiUrl?: string;
946
948
  loadError?: (error: string) => void;
947
949
  }
950
+ declare enum logCategory {
951
+ measurement = "Measurement",
952
+ collector = "Collector",
953
+ camera = "Camera",
954
+ app = "App"
955
+ }
956
+ interface Log {
957
+ timestamp: string;
958
+ category: logCategory;
959
+ message: string;
960
+ meta?: any;
961
+ }
948
962
  interface MeasurementEmbedded {
949
963
  init(options: MeasurementEmbeddedAppOptions): void;
950
964
  destroy(): void;
951
- cancel(): void;
965
+ cancel(): Promise<boolean>;
966
+ getLogs: () => Promise<Log[]>;
952
967
  setTheme(theme: 'light' | 'dark'): void;
953
968
  setLanguage(language: SupportedLanguage): void;
954
969
  on: {
@@ -963,37 +978,35 @@ interface MeasurementEmbedded {
963
978
  */
964
979
  error: ((error: MeasurementEmbeddedAppError) => void) | null;
965
980
  /**
966
- * when webhook event is received
967
- * @param {webhook} WebhookEvent - webhook event
981
+ * when an AppEvent is received
982
+ * @param {appEvent} AppEvent - app event
968
983
  */
969
- webhook: ((webhook: WebhookEvent) => void) | null;
984
+ event: ((appEvent: AppEvent) => void) | null;
970
985
  };
971
986
  }
972
987
  interface MeasurementEmbeddedAppError {
973
988
  code: ErrorCodes;
974
989
  message: string;
975
990
  }
976
- declare const webhookEventSeverity: {
991
+ declare const appEventSeverity: {
977
992
  readonly INFO: "INFO";
978
993
  readonly WARN: "WARN";
979
994
  readonly ERROR: "ERROR";
980
995
  };
981
- declare const webhookEvent: {
996
+ declare const appEvent: {
982
997
  readonly CAMERA_STARTED: "CAMERA_STARTED";
983
998
  readonly APP_LOADED: "APP_LOADED";
984
999
  readonly MEASUREMENT_STARTED: "MEASUREMENT_STARTED";
985
1000
  readonly MEASUREMENT_COMPLETED: "MEASUREMENT_COMPLETED";
986
- readonly CAMERA_PERMISSION_DENIED: "CAMERA_PERMISSION_DENIED";
987
1001
  readonly CAMERA_PERMISSION_GRANTED: "CAMERA_PERMISSION_GRANTED";
988
1002
  readonly INTERMEDIATE_RESULTS: "INTERMEDIATE_RESULTS";
989
1003
  readonly RESULTS_RECEIVED: "RESULTS_RECEIVED";
990
1004
  readonly MEASUREMENT_CANCELED: "MEASUREMENT_CANCELED";
991
1005
  readonly CONSTRAINT_VIOLATION: "CONSTRAINT_VIOLATION";
992
1006
  readonly PAGE_UNLOADED: "PAGE_UNLOADED";
993
- readonly WEBSOCKET_DISCONNECTED: "WEBSOCKET_DISCONNECTED";
994
1007
  readonly PAGE_VISIBILITY_CHANGE: "PAGE_VISIBILITY_CHANGE";
995
1008
  };
996
- declare const webhookEvents: {
1009
+ declare const appEvents: {
997
1010
  readonly CAMERA_STARTED: {
998
1011
  readonly event: "CAMERA_STARTED";
999
1012
  readonly level: "INFO";
@@ -1010,10 +1023,6 @@ declare const webhookEvents: {
1010
1023
  readonly event: "MEASUREMENT_COMPLETED";
1011
1024
  readonly level: "INFO";
1012
1025
  };
1013
- readonly CAMERA_PERMISSION_DENIED: {
1014
- readonly event: "CAMERA_PERMISSION_DENIED";
1015
- readonly level: "ERROR";
1016
- };
1017
1026
  readonly CAMERA_PERMISSION_GRANTED: {
1018
1027
  readonly event: "CAMERA_PERMISSION_GRANTED";
1019
1028
  readonly level: "INFO";
@@ -1038,18 +1047,14 @@ declare const webhookEvents: {
1038
1047
  readonly event: "PAGE_UNLOADED";
1039
1048
  readonly level: "INFO";
1040
1049
  };
1041
- readonly WEBSOCKET_DISCONNECTED: {
1042
- readonly event: "WEBSOCKET_DISCONNECTED";
1043
- readonly level: "WARN";
1044
- };
1045
1050
  readonly PAGE_VISIBILITY_CHANGE: {
1046
1051
  readonly event: "PAGE_VISIBILITY_CHANGE";
1047
1052
  readonly level: "INFO";
1048
1053
  };
1049
1054
  };
1050
- interface WebhookEvent {
1051
- event: keyof typeof webhookEvent;
1052
- level: keyof typeof webhookEventSeverity;
1055
+ interface AppEvent {
1056
+ event: keyof typeof appEvent;
1057
+ level: keyof typeof appEventSeverity;
1053
1058
  }
1054
1059
  declare enum ErrorCodes {
1055
1060
  CAMERA_PERMISSION_DENIED = "CAMERA_PERMISSION_DENIED",
@@ -1058,7 +1063,9 @@ declare enum ErrorCodes {
1058
1063
  NO_DEVICES_FOUND = "NO_DEVICES_FOUND",
1059
1064
  PAGE_NOT_VISIBLE = "PAGE_NOT_VISIBLE",
1060
1065
  CAMERA_START_FAILED = "CAMERA_START_FAILED",
1061
- MEASUREMENT_LOW_SNR = "MEASUREMENT_LOW_SNR"
1066
+ MEASUREMENT_LOW_SNR = "MEASUREMENT_LOW_SNR",
1067
+ COLLECTOR = "COLLECTOR",
1068
+ WEBSOCKET_DISCONNECTED = "WEBSOCKET_DISCONNECTED"
1062
1069
  }
1063
1070
  type MeasurementErrorCodes = ErrorCodes.WORKER_ERROR | ErrorCodes.PROFILE_INFO_NOT_SET;
1064
1071
 
@@ -1071,23 +1078,24 @@ declare class MeasurementEmbeddedApp implements MeasurementEmbedded {
1071
1078
  */
1072
1079
  results: ((results: Results) => void) | null;
1073
1080
  /**
1074
- * when measurement results are received
1075
- * @param {results} Results - measurement results
1081
+ * when there is an error in the measurement embedded app
1082
+ * @param {error} MeasurementEmbeddedAppError - measurement embedded app error
1076
1083
  */
1077
1084
  error: ((error: MeasurementEmbeddedAppError) => void) | null;
1078
1085
  /**
1079
- * when webhook event is received
1080
- * @param {webhook} WebhookEvent - webhook event
1086
+ * when an appEvent is received
1087
+ * @param {appEvent} AppEvent - appEvent
1081
1088
  */
1082
- webhook: ((webhook: WebhookEvent) => void) | null;
1089
+ event: ((appEvent: AppEvent) => void) | null;
1083
1090
  };
1084
1091
  constructor();
1085
1092
  init(options: MeasurementEmbeddedAppOptions): void;
1086
1093
  destroy(): void;
1087
1094
  setTheme(theme: 'light' | 'dark'): void;
1088
1095
  setLanguage(language: SupportedLanguage): void;
1089
- cancel(): void;
1096
+ cancel(): Promise<boolean>;
1097
+ getLogs(): Promise<Log[]>;
1090
1098
  }
1091
1099
 
1092
- export { ErrorCodes, MeasurementEmbeddedApp as default, faceAttributeValue, measurementEmbeddedAppEvents, webhookEvents };
1100
+ export { ErrorCodes, appEvents, MeasurementEmbeddedApp as default, faceAttributeValue, measurementEmbeddedAppEvents };
1093
1101
  export type { AppSettings, DfxPointId, MeasurementEmbeddedAppError, MeasurementEmbeddedAppOptions, MeasurementErrorCodes, Point, Profile, Results };
package/lib/index.mjs CHANGED
@@ -1 +1 @@
1
- const c={RESULTS:"results",ERROR:"error",WEBHOOK:"webhook"},a={INFO:"INFO",WARN:"WARN",ERROR:"ERROR"},A={CAMERA_STARTED:"CAMERA_STARTED",APP_LOADED:"APP_LOADED",MEASUREMENT_STARTED:"MEASUREMENT_STARTED",MEASUREMENT_COMPLETED:"MEASUREMENT_COMPLETED",CAMERA_PERMISSION_DENIED:"CAMERA_PERMISSION_DENIED",CAMERA_PERMISSION_GRANTED:"CAMERA_PERMISSION_GRANTED",INTERMEDIATE_RESULTS:"INTERMEDIATE_RESULTS",RESULTS_RECEIVED:"RESULTS_RECEIVED",MEASUREMENT_CANCELED:"MEASUREMENT_CANCELED",CONSTRAINT_VIOLATION:"CONSTRAINT_VIOLATION",PAGE_UNLOADED:"PAGE_UNLOADED",WEBSOCKET_DISCONNECTED:"WEBSOCKET_DISCONNECTED",PAGE_VISIBILITY_CHANGE:"PAGE_VISIBILITY_CHANGE"},y={CAMERA_STARTED:{event:A.CAMERA_STARTED,level:a.INFO},APP_LOADED:{event:A.APP_LOADED,level:a.INFO},MEASUREMENT_STARTED:{event:A.MEASUREMENT_STARTED,level:a.INFO},MEASUREMENT_COMPLETED:{event:A.MEASUREMENT_COMPLETED,level:a.INFO},CAMERA_PERMISSION_DENIED:{event:A.CAMERA_PERMISSION_DENIED,level:a.ERROR},CAMERA_PERMISSION_GRANTED:{event:A.CAMERA_PERMISSION_GRANTED,level:a.INFO},INTERMEDIATE_RESULTS:{event:A.INTERMEDIATE_RESULTS,level:a.INFO},RESULTS_RECEIVED:{event:A.RESULTS_RECEIVED,level:a.INFO},MEASUREMENT_CANCELED:{event:A.MEASUREMENT_CANCELED,level:a.WARN},CONSTRAINT_VIOLATION:{event:A.CONSTRAINT_VIOLATION,level:a.ERROR},PAGE_UNLOADED:{event:A.PAGE_UNLOADED,level:a.INFO},WEBSOCKET_DISCONNECTED:{event:A.WEBSOCKET_DISCONNECTED,level:a.WARN},PAGE_VISIBILITY_CHANGE:{event:A.PAGE_VISIBILITY_CHANGE,level:a.INFO}},r={DESTROY:"destroy",CANCEL:"cancel",SET_THEME:"setTheme",SET_LANGUAGE:"setLanguage"};var v=(E=>(E.CAMERA_PERMISSION_DENIED="CAMERA_PERMISSION_DENIED",E.WORKER_ERROR="WORKER_ERROR",E.PROFILE_INFO_NOT_SET="PROFILE_INFO_NOT_SET",E.NO_DEVICES_FOUND="NO_DEVICES_FOUND",E.PAGE_NOT_VISIBLE="PAGE_NOT_VISIBLE",E.CAMERA_START_FAILED="CAMERA_START_FAILED",E.MEASUREMENT_LOW_SNR="MEASUREMENT_LOW_SNR",E))(v||{}),m=E=>{throw TypeError(E)},L=(E,e,n)=>e.has(E)||m("Cannot "+n),t=(E,e,n)=>(L(E,e,"read from private field"),n?n.call(E):e.get(E)),I=(E,e,n)=>e.has(E)?m("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(E):e.set(E,n),F=(E,e,n,l)=>(L(E,e,"write to private field"),e.set(E,n),n),R,T,i,s;const h=class o{constructor(e){I(this,s),F(this,s,new Int32Array(e))}lock(){for(;;){if(Atomics.compareExchange(t(this,s),t(o,i),t(o,T),t(o,R))==t(o,T))return;Atomics.wait(t(this,s),t(o,i),t(o,R))}}unlock(){if(Atomics.compareExchange(t(this,s),t(o,i),t(o,R),t(o,T))!=t(o,R))throw new Error("Tried to unlock while not holding the mutex");Atomics.notify(t(this,s),t(o,i))}AsyncLock(e){const n=this;async function l(){for(;;){if(Atomics.compareExchange(t(n,s),t(o,i),t(o,T),t(o,R))==t(o,T)){e(),n.unlock();return}await Atomics.waitAsync(t(n,s),t(o,i),t(o,R)).value}}l()}};R=new WeakMap,T=new WeakMap,i=new WeakMap,s=new WeakMap,I(h,R,1),I(h,T,0),I(h,i,0);const k={SEX_NOT_PROVIDED:1,SEX_ASSIGNED_MALE_AT_BIRTH:2,SEX_ASSIGNED_FEMALE_AT_BIRTH:3,DIABETES_NONE:4,DIABETES_TYPE1:5,DIABETES_TYPE2:6,SMOKER_TRUE:0,SMOKER_FALSE:1,BLOOD_PRESSURE_MEDICATION_TRUE:1,BLOOD_PRESSURE_MEDICATION_FALSE:0},B=document.documentElement.style.overflow;class W{#e=document.createElement("div");#E=document.createElement("div");on={results:null,error:null,webhook:null};constructor(){this.#e.style.height="100%"}init(e){const{container:n,appPath:l,settings:M,profile:C,config:P,loadError:d,top:p=0,language:U,apiUrl:w="api.deepaffex.ai"}=e;this.#E=n,Object.assign(n.style,{position:"fixed",top:p,left:"0",width:"100vw",height:`calc(100vh - ${p})`}),document.body.appendChild(n);const N=n.attachShadow({mode:"open"});document.documentElement.style.overflow="hidden";const u="app",O=document.createElement("link");O.rel="stylesheet",O.href=`${l}/stylex.css`,N.appendChild(O);const D=document.createElement("link");D.rel="stylesheet",D.href=`${l}/${u}.css`,N.appendChild(D);const f=S=>{this.on.results&&this.on.results({...S.detail})},G=S=>{this.on.error&&this.on.error({...S.detail})},V=S=>{this.on.webhook&&this.on.webhook({...S.detail})};this.#e.addEventListener(c.RESULTS,f),this.#e.addEventListener(c.ERROR,G),this.#e.addEventListener(c.WEBHOOK,V),N.appendChild(this.#e);const _=document.createElement("script");_.type="module",_.src=`${l}/${u}.mjs`,_.onload=()=>{import(_.src).then(S=>{S.app.init(this.#e,l,M,C,w,P,U)}).catch(()=>{d&&d("Failed to initialize Measurement Embedded React app")})},_.onerror=()=>{d&&d("Failed to load the measurement embedded app script")},N.appendChild(_)}destroy(){const e=new CustomEvent("measurement-embedded-app-action",{detail:{action:r.DESTROY,data:{}}});this.#e.dispatchEvent(e),document.documentElement.style.overflow=B,this.#E&&document.body.contains(this.#E)&&document.body.removeChild(this.#E)}setTheme(e){const n=new CustomEvent("measurement-embedded-app-action",{detail:{action:r.SET_THEME,data:{theme:e}}});this.#e.dispatchEvent(n)}setLanguage(e){const n=new CustomEvent("measurement-embedded-app-action",{detail:{action:r.SET_LANGUAGE,data:{language:e}}});this.#e.dispatchEvent(n)}cancel(){const e=new CustomEvent("measurement-embedded-app-action",{detail:{action:r.CANCEL,data:{}}});this.#e.dispatchEvent(e)}}export{v as ErrorCodes,W as default,k as faceAttributeValue,c as measurementEmbeddedAppEvents,y as webhookEvents};
1
+ const l={RESULTS:"results",ERROR:"error",APPEVENT:"appEvent",CANCELLED:"cancelled",LOGS:"logs"};var f=(e=>(e.measurement="Measurement",e.collector="Collector",e.camera="Camera",e.app="App",e))(f||{});const o={INFO:"INFO",WARN:"WARN",ERROR:"ERROR"},i={CAMERA_STARTED:"CAMERA_STARTED",APP_LOADED:"APP_LOADED",MEASUREMENT_STARTED:"MEASUREMENT_STARTED",MEASUREMENT_COMPLETED:"MEASUREMENT_COMPLETED",CAMERA_PERMISSION_GRANTED:"CAMERA_PERMISSION_GRANTED",INTERMEDIATE_RESULTS:"INTERMEDIATE_RESULTS",RESULTS_RECEIVED:"RESULTS_RECEIVED",MEASUREMENT_CANCELED:"MEASUREMENT_CANCELED",CONSTRAINT_VIOLATION:"CONSTRAINT_VIOLATION",PAGE_UNLOADED:"PAGE_UNLOADED",PAGE_VISIBILITY_CHANGE:"PAGE_VISIBILITY_CHANGE"},g={CAMERA_STARTED:{event:i.CAMERA_STARTED,level:o.INFO},APP_LOADED:{event:i.APP_LOADED,level:o.INFO},MEASUREMENT_STARTED:{event:i.MEASUREMENT_STARTED,level:o.INFO},MEASUREMENT_COMPLETED:{event:i.MEASUREMENT_COMPLETED,level:o.INFO},CAMERA_PERMISSION_GRANTED:{event:i.CAMERA_PERMISSION_GRANTED,level:o.INFO},INTERMEDIATE_RESULTS:{event:i.INTERMEDIATE_RESULTS,level:o.INFO},RESULTS_RECEIVED:{event:i.RESULTS_RECEIVED,level:o.INFO},MEASUREMENT_CANCELED:{event:i.MEASUREMENT_CANCELED,level:o.WARN},CONSTRAINT_VIOLATION:{event:i.CONSTRAINT_VIOLATION,level:o.ERROR},PAGE_UNLOADED:{event:i.PAGE_UNLOADED,level:o.INFO},PAGE_VISIBILITY_CHANGE:{event:i.PAGE_VISIBILITY_CHANGE,level:o.INFO}},_={DESTROY:"destroy",CANCEL:"cancel",SET_THEME:"setTheme",SET_LANGUAGE:"setLanguage",GET_LOGS:"getLogs"};var v=(e=>(e.CAMERA_PERMISSION_DENIED="CAMERA_PERMISSION_DENIED",e.WORKER_ERROR="WORKER_ERROR",e.PROFILE_INFO_NOT_SET="PROFILE_INFO_NOT_SET",e.NO_DEVICES_FOUND="NO_DEVICES_FOUND",e.PAGE_NOT_VISIBLE="PAGE_NOT_VISIBLE",e.CAMERA_START_FAILED="CAMERA_START_FAILED",e.MEASUREMENT_LOW_SNR="MEASUREMENT_LOW_SNR",e.COLLECTOR="COLLECTOR",e.WEBSOCKET_DISCONNECTED="WEBSOCKET_DISCONNECTED",e))(v||{}),u=e=>{throw TypeError(e)},M=(e,t,E)=>t.has(e)||u("Cannot "+E),n=(e,t,E)=>(M(e,t,"read from private field"),E?E.call(e):t.get(e)),O=(e,t,E)=>t.has(e)?u("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,E),F=(e,t,E,s)=>(M(e,t,"write to private field"),t.set(e,E),E),r,T,c,A;const C=class a{constructor(t){O(this,A),F(this,A,new Int32Array(t))}lock(){for(;;){if(Atomics.compareExchange(n(this,A),n(a,c),n(a,T),n(a,r))==n(a,T))return;Atomics.wait(n(this,A),n(a,c),n(a,r))}}unlock(){if(Atomics.compareExchange(n(this,A),n(a,c),n(a,r),n(a,T))!=n(a,r))throw new Error("Tried to unlock while not holding the mutex");Atomics.notify(n(this,A),n(a,c))}AsyncLock(t){const E=this;async function s(){for(;;){if(Atomics.compareExchange(n(E,A),n(a,c),n(a,T),n(a,r))==n(a,T)){t(),E.unlock();return}await Atomics.waitAsync(n(E,A),n(a,c),n(a,r)).value}}s()}};r=new WeakMap,T=new WeakMap,c=new WeakMap,A=new WeakMap,O(C,r,1),O(C,T,0),O(C,c,0);const B={SEX_NOT_PROVIDED:1,SEX_ASSIGNED_MALE_AT_BIRTH:2,SEX_ASSIGNED_FEMALE_AT_BIRTH:3,DIABETES_NONE:4,DIABETES_TYPE1:5,DIABETES_TYPE2:6,SMOKER_TRUE:0,SMOKER_FALSE:1,BLOOD_PRESSURE_MEDICATION_TRUE:1,BLOOD_PRESSURE_MEDICATION_FALSE:0},k=document.documentElement.style.overflow;class W{#e=document.createElement("div");#t=document.createElement("div");on={results:null,error:null,event:null};constructor(){this.#e.style.height="100%"}init(t){const{container:E,appPath:s,settings:R,profile:h,config:P,loadError:N,top:D=0,language:U,apiUrl:G="api.deepaffex.ai"}=t;this.#t=E,Object.assign(E.style,{position:"fixed",top:D,left:"0",width:"100vw",height:`calc(100vh - ${D})`}),document.body.appendChild(E);const I=E.attachShadow({mode:"open"});document.documentElement.style.overflow="hidden";const m="app",L=document.createElement("link");L.rel="stylesheet",L.href=`${s}/stylex.css`,I.appendChild(L);const p=document.createElement("link");p.rel="stylesheet",p.href=`${s}/${m}.css`,I.appendChild(p);const w=d=>{this.on.results&&this.on.results({...d.detail})},V=d=>{this.on.error&&this.on.error({...d.detail})},y=d=>{this.on.event&&this.on.event({...d.detail})};this.#e.addEventListener(l.RESULTS,w),this.#e.addEventListener(l.ERROR,V),this.#e.addEventListener(l.APPEVENT,y),I.appendChild(this.#e);const S=document.createElement("script");S.type="module",S.src=`${s}/${m}.mjs`,S.onload=()=>{import(S.src).then(d=>{d.app.init(this.#e,s,R,h,G,P,U)}).catch(()=>{N&&N("Failed to initialize Measurement Embedded React app")})},S.onerror=()=>{N&&N("Failed to load the measurement embedded app script")},I.appendChild(S)}destroy(){const t=new CustomEvent("measurement-embedded-app-action",{detail:{action:_.DESTROY,data:{}}});this.#e.dispatchEvent(t),document.documentElement.style.overflow=k,this.#t&&document.body.contains(this.#t)&&document.body.removeChild(this.#t)}setTheme(t){const E=new CustomEvent("measurement-embedded-app-action",{detail:{action:_.SET_THEME,data:{theme:t}}});this.#e.dispatchEvent(E)}setLanguage(t){const E=new CustomEvent("measurement-embedded-app-action",{detail:{action:_.SET_LANGUAGE,data:{language:t}}});this.#e.dispatchEvent(E)}async cancel(){return new Promise(t=>{const E=R=>{this.#e.removeEventListener(l.CANCELLED,E),t(R.detail.success)};this.#e.addEventListener(l.CANCELLED,E);const s=new CustomEvent("measurement-embedded-app-action",{detail:{action:_.CANCEL,data:{}}});this.#e.dispatchEvent(s)})}getLogs(){return new Promise(t=>{const E=R=>{this.#e.removeEventListener(l.LOGS,E),t(R.detail.logs)};this.#e.addEventListener(l.LOGS,E);const s=new CustomEvent("measurement-embedded-app-action",{detail:{action:_.GET_LOGS,data:{}}});this.#e.dispatchEvent(s)})}}export{v as ErrorCodes,g as appEvents,W as default,B as faceAttributeValue,l as measurementEmbeddedAppEvents};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nuralogix.ai/web-measurement-embedded-app",
3
- "version": "0.1.0-alpha.8",
3
+ "version": "0.1.0-alpha.9",
4
4
  "description": "Web Measurement Embedded App",
5
5
  "contributors": [
6
6
  "Hamed Hassanzadeh Amin",