@nlabs/metropolisjs 0.1.1 → 0.1.2

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.
Files changed (121) hide show
  1. package/FACTORY_PATTERN_GUIDE.md +244 -0
  2. package/README.md +332 -0
  3. package/examples/factory-pattern-usage.ts +283 -0
  4. package/lex.config.mjs +17 -0
  5. package/lib/actions/eventActions/eventActions.d.ts +45 -0
  6. package/lib/actions/eventActions/eventActions.js +2 -0
  7. package/lib/actions/imageActions/imageActions.d.ts +56 -0
  8. package/lib/actions/imageActions/imageActions.js +2 -0
  9. package/lib/actions/index.d.ts +9 -0
  10. package/lib/actions/index.js +2 -0
  11. package/lib/actions/locationActions/locationActions.d.ts +58 -0
  12. package/lib/actions/locationActions/locationActions.js +2 -0
  13. package/lib/actions/messageActions/messageActions.d.ts +54 -0
  14. package/lib/actions/messageActions/messageActions.js +2 -0
  15. package/lib/actions/postActions/postActions.d.ts +56 -0
  16. package/lib/actions/postActions/postActions.js +2 -0
  17. package/lib/actions/profileActions/profileActions.d.ts +50 -0
  18. package/lib/actions/profileActions/profileActions.js +2 -0
  19. package/lib/actions/reactionActions/reactionActions.d.ts +52 -0
  20. package/lib/actions/reactionActions/reactionActions.js +2 -0
  21. package/lib/actions/sseActions/sseActions.d.ts +37 -0
  22. package/lib/actions/sseActions/sseActions.js +2 -0
  23. package/lib/actions/tagActions/tagActions.d.ts +55 -0
  24. package/lib/actions/tagActions/tagActions.js +2 -0
  25. package/lib/actions/userActions/userActions.d.ts +131 -0
  26. package/lib/actions/userActions/userActions.js +2 -0
  27. package/lib/actions/websocketActions/websocketActions.d.ts +31 -0
  28. package/lib/actions/websocketActions/websocketActions.js +2 -0
  29. package/lib/adapters/arangoAdapter/arangoAdapter.d.ts +20 -0
  30. package/lib/adapters/arangoAdapter/arangoAdapter.js +2 -0
  31. package/lib/adapters/contentAdapter/contentAdapter.d.ts +31 -0
  32. package/lib/adapters/contentAdapter/contentAdapter.js +2 -0
  33. package/lib/adapters/conversationAdapter/conversationAdapter.d.ts +23 -0
  34. package/lib/adapters/conversationAdapter/conversationAdapter.js +2 -0
  35. package/lib/adapters/eventAdapter/eventAdapter.d.ts +43 -0
  36. package/lib/adapters/eventAdapter/eventAdapter.js +2 -0
  37. package/lib/adapters/fileAdapter/fileAdapter.d.ts +29 -0
  38. package/lib/adapters/fileAdapter/fileAdapter.js +2 -0
  39. package/lib/adapters/imageAdapter/imageAdapter.d.ts +31 -0
  40. package/lib/adapters/imageAdapter/imageAdapter.js +2 -0
  41. package/lib/adapters/index.d.ts +16 -0
  42. package/lib/adapters/index.js +2 -0
  43. package/lib/adapters/locationAdapter/locationAdapter.d.ts +27 -0
  44. package/lib/adapters/locationAdapter/locationAdapter.js +2 -0
  45. package/lib/adapters/messageAdapter/messageAdapter.d.ts +27 -0
  46. package/lib/adapters/messageAdapter/messageAdapter.js +2 -0
  47. package/lib/adapters/personaAdapter/personaAdapter.d.ts +18 -0
  48. package/lib/adapters/personaAdapter/personaAdapter.js +2 -0
  49. package/lib/adapters/postAdapter/postAdapter.d.ts +32 -0
  50. package/lib/adapters/postAdapter/postAdapter.js +2 -0
  51. package/lib/adapters/profileAdapter/profileAdapter.d.ts +32 -0
  52. package/lib/adapters/profileAdapter/profileAdapter.js +2 -0
  53. package/lib/adapters/reactionAdapter/reactionAdapter.d.ts +20 -0
  54. package/lib/adapters/reactionAdapter/reactionAdapter.js +2 -0
  55. package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts +16 -0
  56. package/lib/adapters/reaktorAdapter/reaktorAdapter.js +2 -0
  57. package/lib/adapters/sessionAdapter/sessionAdapter.d.ts +23 -0
  58. package/lib/adapters/sessionAdapter/sessionAdapter.js +2 -0
  59. package/lib/adapters/tagAdapter/tagAdapter.d.ts +20 -0
  60. package/lib/adapters/tagAdapter/tagAdapter.js +2 -0
  61. package/lib/adapters/userAdapter/userAdapter.d.ts +55 -0
  62. package/lib/adapters/userAdapter/userAdapter.js +2 -0
  63. package/lib/config/index.d.ts +31 -0
  64. package/lib/config/index.js +2 -0
  65. package/lib/constants/MetropolisConstants.d.ts +14 -0
  66. package/lib/constants/MetropolisConstants.js +2 -0
  67. package/lib/graphql/message.d.ts +2 -0
  68. package/lib/graphql/message.js +18 -0
  69. package/lib/graphql/notification.d.ts +2 -0
  70. package/lib/graphql/notification.js +18 -0
  71. package/lib/graphql/session.d.ts +1 -0
  72. package/lib/graphql/session.js +16 -0
  73. package/lib/index.d.ts +29 -0
  74. package/lib/index.js +2 -0
  75. package/lib/stores/appStore.d.ts +22 -0
  76. package/lib/stores/appStore.js +2 -0
  77. package/lib/stores/eventStore.d.ts +34 -0
  78. package/lib/stores/eventStore.js +2 -0
  79. package/lib/stores/imageStore.d.ts +35 -0
  80. package/lib/stores/imageStore.js +2 -0
  81. package/lib/stores/index.d.ts +15 -0
  82. package/lib/stores/index.js +2 -0
  83. package/lib/stores/locationStore.d.ts +33 -0
  84. package/lib/stores/locationStore.js +2 -0
  85. package/lib/stores/messageStore.d.ts +36 -0
  86. package/lib/stores/messageStore.js +2 -0
  87. package/lib/stores/postStore.d.ts +33 -0
  88. package/lib/stores/postStore.js +2 -0
  89. package/lib/stores/profileStore.d.ts +24 -0
  90. package/lib/stores/profileStore.js +2 -0
  91. package/lib/stores/reactionStore.d.ts +24 -0
  92. package/lib/stores/reactionStore.js +2 -0
  93. package/lib/stores/tagStore.d.ts +31 -0
  94. package/lib/stores/tagStore.js +2 -0
  95. package/lib/stores/userStore.d.ts +73 -0
  96. package/lib/stores/userStore.js +2 -0
  97. package/lib/stores/websocketStore.d.ts +23 -0
  98. package/lib/stores/websocketStore.js +2 -0
  99. package/lib/utils/MetropolisProvider.d.ts +34 -0
  100. package/lib/utils/MetropolisProvider.js +2 -0
  101. package/lib/utils/actionFactory.d.ts +22 -0
  102. package/lib/utils/actionFactory.js +2 -0
  103. package/lib/utils/api.d.ts +43 -0
  104. package/lib/utils/api.js +7 -0
  105. package/lib/utils/app.d.ts +6 -0
  106. package/lib/utils/app.js +2 -0
  107. package/lib/utils/baseActionFactory.d.ts +34 -0
  108. package/lib/utils/baseActionFactory.js +2 -0
  109. package/lib/utils/dateUtils.d.ts +2 -0
  110. package/lib/utils/dateUtils.js +2 -0
  111. package/lib/utils/file.d.ts +1 -0
  112. package/lib/utils/file.js +2 -0
  113. package/lib/utils/location.d.ts +9 -0
  114. package/lib/utils/location.js +2 -0
  115. package/lib/utils/useMetropolis.d.ts +12 -0
  116. package/lib/utils/useMetropolis.js +2 -0
  117. package/lib/utils/validatorFactory.d.ts +48 -0
  118. package/lib/utils/validatorFactory.js +2 -0
  119. package/package.json +33 -27
  120. package/tsconfig.lint.json +25 -0
  121. package/tsconfig.test.json +14 -0
@@ -0,0 +1,2 @@
1
+ import{get as I}from"@nlabs/rip-hunter";import{validateLocationInput as S}from"../../adapters/locationAdapter/locationAdapter";import{Config as h}from"../../config";import{LOCATION_CONSTANTS as s}from"../../stores/locationStore";import{appMutation as g}from"../../utils/api";import{autoCompleteLocation as C}from"../../utils/location";const m="locations",_=(o,L)=>S(o),O=(o,L)=>(p,l)=>{const d={...L,...l};let u=_(p,d);return o&&(u=o(u,d)),d?.customValidation&&(u=d.customValidation(u)),u},$=(o,L)=>{let p=L?.locationAdapterOptions||{},l=L?.locationAdapter,d=O(l,p);return{autocompleteLocation:async(e,n,t,i=[])=>C(o,e,n,t,i),add:async(e,n=[])=>{try{const t={location:{type:"LocationInput!",value:d(e,p)}},i=(c={})=>{const{addLocation:r={}}=c;return o.dispatch({location:r,type:s.ADD_ITEM_SUCCESS})},{location:a}=await g(o,"addLocation",m,t,["added","address","city","country","id","latitude","longitude","modified","state","street","zip",...n],{onSuccess:i});return a}catch(t){throw o.dispatch({error:t,type:s.ADD_ITEM_ERROR}),t}},delete:async e=>{try{const n={locationId:{type:"ID!",value:e}},t=(a={})=>{const{deleteLocation:c={}}=a;return o.dispatch({location:c,type:s.REMOVE_ITEM_SUCCESS})},{location:i}=await g(o,"deleteLocation",m,n,["id"],{onSuccess:t});return i}catch(n){throw o.dispatch({error:n,type:s.REMOVE_ITEM_ERROR}),n}},getCurrentLocation:async e=>new Promise((n,t)=>{const{userId:i}=o.getState("user.session",{}),{city:a,country:c,latitude:r,longitude:A,state:E}=o.getState(["user","users",i||""],{}),R=[a,E,c].join(", "),y={latitude:r,location:R,longitude:A};navigator.geolocation?navigator.geolocation.getCurrentPosition(async({coords:T})=>{const P={latitude:T.latitude,location:"Current Location",longitude:T.longitude};await o.dispatch({current:P,type:s.SET_CURRENT}),e&&e(P),n(P)},T=>{e&&e(y),o.dispatch({current:y,type:s.SET_CURRENT}),t(T)},{enableHighAccuracy:!1,maximumAge:0,timeout:3e4}):(e&&e(y),o.dispatch({current:y,type:s.SET_CURRENT}),t("Geolocation is not supported by this browser."))}),getGoogleLocation:async e=>{const{key:n,url:t}=h.get("google.maps"),i=encodeURI(e),a=`${t}?address=${i}&key=${n}`;return a?{latitude:0,location:"",longitude:0}:I(a).then(c=>{const{results:r}=c,A=r&&r.length?r[0]:{},{formatted_address:E,geometry:{location:{lat:R,lng:y}}}=A;return{latitude:R,location:E,longitude:y}})},getLocation:async(e,n=[])=>{try{const t={location:{type:"LocationInput!",value:d(e,p)}},i=(c={})=>{const{getLocation:r={}}=c;return o.dispatch({location:r,type:s.GET_ITEM_SUCCESS})},{location:a}=await g(o,"getLocation",m,t,["added","address","city","country","id","latitude","longitude","modified","state","street","zip",...n],{onSuccess:i});return a}catch(t){throw o.dispatch({error:t,type:s.GET_ITEM_ERROR}),t}},listByItem:async(e,n=[])=>{try{const t={itemId:{type:"ID!",value:e}},i=(c={})=>{const{locationsByItem:r=[]}=c;return o.dispatch({itemId:e,list:r,type:s.GET_LIST_SUCCESS})},{locationsByItem:a}=await g(o,"locationsByItem",m,t,["added","address","city","country","id","latitude","longitude","modified","state","street","zip",...n],{onSuccess:i});return a}catch(t){throw o.dispatch({error:t,type:s.GET_LIST_ERROR}),t}},update:async(e,n=[])=>{try{const t={location:{type:"LocationUpdateInput!",value:d(e,p)}},i=(c={})=>{const{updateLocation:r={}}=c;return o.dispatch({location:r,type:s.UPDATE_ITEM_SUCCESS})},{location:a}=await g(o,"updateLocation",m,t,["added","address","city","country","id","latitude","longitude","modified","state","street","zip",...n],{onSuccess:i});return a}catch(t){throw o.dispatch({error:t,type:s.UPDATE_ITEM_ERROR}),t}},updateLocationAdapter:e=>{l=e,d=O(l,p)},updateLocationAdapterOptions:e=>{p={...p,...e},d=O(l,p)}}};export{$ as createLocationActions};
2
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FjdGlvbnMvbG9jYXRpb25BY3Rpb25zL2xvY2F0aW9uQWN0aW9ucy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Z2V0IGFzIGh0dHBHZXR9IGZyb20gJ0BubGFicy9yaXAtaHVudGVyJztcblxuaW1wb3J0IHt2YWxpZGF0ZUxvY2F0aW9uSW5wdXR9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL2xvY2F0aW9uQWRhcHRlci9sb2NhdGlvbkFkYXB0ZXInO1xuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5pbXBvcnQge0xPQ0FUSU9OX0NPTlNUQU5UU30gZnJvbSAnLi4vLi4vc3RvcmVzL2xvY2F0aW9uU3RvcmUnO1xuaW1wb3J0IHthcHBNdXRhdGlvbn0gZnJvbSAnLi4vLi4vdXRpbHMvYXBpJztcbmltcG9ydCB7YXV0b0NvbXBsZXRlTG9jYXRpb259IGZyb20gJy4uLy4uL3V0aWxzL2xvY2F0aW9uJztcblxuaW1wb3J0IHR5cGUge0ZsdXhGcmFtZXdvcmt9IGZyb20gJ0BubGFicy9hcmtoYW1qcyc7XG5pbXBvcnQgdHlwZSB7VXNlcn0gZnJvbSAnLi4vLi4vYWRhcHRlcnMnO1xuaW1wb3J0IHR5cGUge0xvY2F0aW9uVHlwZX0gZnJvbSAnLi4vLi4vYWRhcHRlcnMvbG9jYXRpb25BZGFwdGVyL2xvY2F0aW9uQWRhcHRlcic7XG5pbXBvcnQgdHlwZSB7QXBpUmVzdWx0c1R5cGUsIFJlYWt0b3JEYkNvbGxlY3Rpb259IGZyb20gJy4uLy4uL3V0aWxzL2FwaSc7XG5cbmNvbnN0IERBVEFfVFlQRTogUmVha3RvckRiQ29sbGVjdGlvbiA9ICdsb2NhdGlvbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIExvY2F0aW9uQWRhcHRlck9wdGlvbnMge1xuICBzdHJpY3Q/OiBib29sZWFuO1xuICBhbGxvd1BhcnRpYWw/OiBib29sZWFuO1xuICBlbnZpcm9ubWVudD86ICdkZXZlbG9wbWVudCcgfCAncHJvZHVjdGlvbicgfCAndGVzdCc7XG4gIGN1c3RvbVZhbGlkYXRpb24/OiAoaW5wdXQ6IHVua25vd24pID0+IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG9jYXRpb25BY3Rpb25zT3B0aW9ucyB7XG4gIGxvY2F0aW9uQWRhcHRlcj86IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IExvY2F0aW9uQWRhcHRlck9wdGlvbnMpID0+IGFueTtcbiAgbG9jYXRpb25BZGFwdGVyT3B0aW9ucz86IExvY2F0aW9uQWRhcHRlck9wdGlvbnM7XG59XG5cbmV4cG9ydCB0eXBlIExvY2F0aW9uQXBpUmVzdWx0c1R5cGUgPSB7XG4gIGFkZExvY2F0aW9uOiBMb2NhdGlvblR5cGU7XG4gIGRlbGV0ZUxvY2F0aW9uOiBMb2NhdGlvblR5cGU7XG4gIGdldExvY2F0aW9uOiBMb2NhdGlvblR5cGU7XG4gIGdldExvY2F0aW9uc0J5SXRlbTogTG9jYXRpb25UeXBlW107XG4gIHVwZGF0ZUxvY2F0aW9uOiBMb2NhdGlvblR5cGU7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIExvY2F0aW9uQWN0aW9ucyB7XG4gIGF1dG9jb21wbGV0ZUxvY2F0aW9uOiAoYWRkcmVzczogc3RyaW5nLCBsYXRpdHVkZT86IG51bWJlciwgbG9uZ2l0dWRlPzogbnVtYmVyLCBsb2NhdGlvblByb3BzPzogc3RyaW5nW10pID0+IFByb21pc2U8TG9jYXRpb25UeXBlW10+O1xuICBhZGQ6IChsb2NhdGlvbjogUGFydGlhbDxMb2NhdGlvblR5cGU+LCBsb2NhdGlvblByb3BzPzogc3RyaW5nW10pID0+IFByb21pc2U8TG9jYXRpb25UeXBlPjtcbiAgZGVsZXRlOiAobG9jYXRpb25JZDogc3RyaW5nKSA9PiBQcm9taXNlPExvY2F0aW9uVHlwZT47XG4gIGdldEN1cnJlbnRMb2NhdGlvbjogKHNldExvY2F0aW9uPzogKGxvY2F0aW9uOiBMb2NhdGlvblR5cGUpID0+IHZvaWQpID0+IFByb21pc2U8TG9jYXRpb25UeXBlPjtcbiAgZ2V0R29vZ2xlTG9jYXRpb246IChhZGRyZXNzOiBzdHJpbmcpID0+IFByb21pc2U8e2xhdGl0dWRlOiBudW1iZXI7IGxvY2F0aW9uOiBzdHJpbmc7IGxvbmdpdHVkZTogbnVtYmVyfT47XG4gIGdldExvY2F0aW9uOiAobG9jYXRpb246IFBhcnRpYWw8TG9jYXRpb25UeXBlPiwgbG9jYXRpb25Qcm9wcz86IHN0cmluZ1tdKSA9PiBQcm9taXNlPExvY2F0aW9uVHlwZT47XG4gIGxpc3RCeUl0ZW06IChpdGVtSWQ6IHN0cmluZywgbG9jYXRpb25Qcm9wcz86IHN0cmluZ1tdKSA9PiBQcm9taXNlPExvY2F0aW9uVHlwZVtdPjtcbiAgdXBkYXRlOiAobG9jYXRpb246IFBhcnRpYWw8TG9jYXRpb25UeXBlPiwgbG9jYXRpb25Qcm9wcz86IHN0cmluZ1tdKSA9PiBQcm9taXNlPExvY2F0aW9uVHlwZT47XG4gIHVwZGF0ZUxvY2F0aW9uQWRhcHRlcjogKGFkYXB0ZXI6IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IExvY2F0aW9uQWRhcHRlck9wdGlvbnMpID0+IGFueSkgPT4gdm9pZDtcbiAgdXBkYXRlTG9jYXRpb25BZGFwdGVyT3B0aW9uczogKG9wdGlvbnM6IExvY2F0aW9uQWRhcHRlck9wdGlvbnMpID0+IHZvaWQ7XG59XG5cbi8vIERlZmF1bHQgdmFsaWRhdGlvbiBmdW5jdGlvblxuY29uc3QgZGVmYXVsdExvY2F0aW9uVmFsaWRhdG9yID0gKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogTG9jYXRpb25BZGFwdGVyT3B0aW9ucykgPT4gdmFsaWRhdGVMb2NhdGlvbklucHV0KGlucHV0KTtcblxuLy8gRW5oYW5jZWQgdmFsaWRhdGlvbiBmdW5jdGlvbiB0aGF0IG1lcmdlcyBjdXN0b20gbG9naWMgd2l0aCBkZWZhdWx0c1xuY29uc3QgY3JlYXRlTG9jYXRpb25WYWxpZGF0b3IgPSAoXG4gIGN1c3RvbUFkYXB0ZXI/OiAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBMb2NhdGlvbkFkYXB0ZXJPcHRpb25zKSA9PiBhbnksXG4gIG9wdGlvbnM/OiBMb2NhdGlvbkFkYXB0ZXJPcHRpb25zXG4pID0+IChpbnB1dDogdW5rbm93biwgdmFsaWRhdG9yT3B0aW9ucz86IExvY2F0aW9uQWRhcHRlck9wdGlvbnMpID0+IHtcbiAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IHsuLi5vcHRpb25zLCAuLi52YWxpZGF0b3JPcHRpb25zfTtcblxuICAvLyBTdGFydCB3aXRoIGRlZmF1bHQgdmFsaWRhdGlvblxuICBsZXQgdmFsaWRhdGVkID0gZGVmYXVsdExvY2F0aW9uVmFsaWRhdG9yKGlucHV0LCBtZXJnZWRPcHRpb25zKTtcblxuICAvLyBBcHBseSBjdXN0b20gdmFsaWRhdGlvbiBpZiBwcm92aWRlZFxuICBpZihjdXN0b21BZGFwdGVyKSB7XG4gICAgdmFsaWRhdGVkID0gY3VzdG9tQWRhcHRlcih2YWxpZGF0ZWQsIG1lcmdlZE9wdGlvbnMpO1xuICB9XG5cbiAgLy8gQXBwbHkgY3VzdG9tIHZhbGlkYXRpb24gZnJvbSBvcHRpb25zIGlmIHByb3ZpZGVkXG4gIGlmKG1lcmdlZE9wdGlvbnM/LmN1c3RvbVZhbGlkYXRpb24pIHtcbiAgICB2YWxpZGF0ZWQgPSBtZXJnZWRPcHRpb25zLmN1c3RvbVZhbGlkYXRpb24odmFsaWRhdGVkKSBhcyBMb2NhdGlvblR5cGU7XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVkO1xufTtcblxuLyoqXG4gKiBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBMb2NhdGlvbkFjdGlvbnMgd2l0aCBlbmhhbmNlZCBhZGFwdGVyIGluamVjdGlvbiBjYXBhYmlsaXRpZXMuXG4gKiBDdXN0b20gYWRhcHRlcnMgYXJlIG1lcmdlZCB3aXRoIGRlZmF1bHQgYmVoYXZpb3IsIGFsbG93aW5nIHBhcnRpYWwgb3ZlcnJpZGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBCYXNpYyB1c2FnZSB3aXRoIGRlZmF1bHQgYWRhcHRlcnNcbiAqIGNvbnN0IGxvY2F0aW9uQWN0aW9ucyA9IGNyZWF0ZUxvY2F0aW9uQWN0aW9ucyhmbHV4KTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ3VzdG9tIGFkYXB0ZXIgdGhhdCBleHRlbmRzIGRlZmF1bHQgYmVoYXZpb3JcbiAqIGNvbnN0IGN1c3RvbUxvY2F0aW9uQWRhcHRlciA9IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IExvY2F0aW9uQWRhcHRlck9wdGlvbnMpID0+IHtcbiAqICAgLy8gaW5wdXQgaXMgYWxyZWFkeSB2YWxpZGF0ZWQgYnkgZGVmYXVsdCBhZGFwdGVyXG4gKiAgIGlmIChpbnB1dC5sYXRpdHVkZSAmJiAoaW5wdXQubGF0aXR1ZGUgPCAtOTAgfHwgaW5wdXQubGF0aXR1ZGUgPiA5MCkpIHtcbiAqICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbGF0aXR1ZGUnKTtcbiAqICAgfVxuICogICByZXR1cm4gaW5wdXQ7XG4gKiB9O1xuICpcbiAqIGNvbnN0IGxvY2F0aW9uQWN0aW9ucyA9IGNyZWF0ZUxvY2F0aW9uQWN0aW9ucyhmbHV4LCB7XG4gKiAgIGxvY2F0aW9uQWRhcHRlcjogY3VzdG9tTG9jYXRpb25BZGFwdGVyXG4gKiB9KTtcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUxvY2F0aW9uQWN0aW9ucyA9IChcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgb3B0aW9ucz86IExvY2F0aW9uQWN0aW9uc09wdGlvbnNcbik6IExvY2F0aW9uQWN0aW9ucyA9PiB7XG4gIC8vIEluaXRpYWxpemUgYWRhcHRlciBzdGF0ZVxuICBsZXQgbG9jYXRpb25BZGFwdGVyT3B0aW9uczogTG9jYXRpb25BZGFwdGVyT3B0aW9ucyA9IG9wdGlvbnM/LmxvY2F0aW9uQWRhcHRlck9wdGlvbnMgfHwge307XG4gIGxldCBjdXN0b21Mb2NhdGlvbkFkYXB0ZXIgPSBvcHRpb25zPy5sb2NhdGlvbkFkYXB0ZXI7XG5cbiAgLy8gQ3JlYXRlIHZhbGlkYXRvcnMgdGhhdCBtZXJnZSBjdXN0b20gYWRhcHRlcnMgd2l0aCBkZWZhdWx0c1xuICBsZXQgdmFsaWRhdGVMb2NhdGlvbiA9IGNyZWF0ZUxvY2F0aW9uVmFsaWRhdG9yKGN1c3RvbUxvY2F0aW9uQWRhcHRlciwgbG9jYXRpb25BZGFwdGVyT3B0aW9ucyk7XG5cbiAgLy8gVXBkYXRlIGZ1bmN0aW9ucyB0aGF0IHJlY3JlYXRlIHZhbGlkYXRvcnNcbiAgY29uc3QgdXBkYXRlTG9jYXRpb25BZGFwdGVyID0gKGFkYXB0ZXI6IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IExvY2F0aW9uQWRhcHRlck9wdGlvbnMpID0+IGFueSk6IHZvaWQgPT4ge1xuICAgIGN1c3RvbUxvY2F0aW9uQWRhcHRlciA9IGFkYXB0ZXI7XG4gICAgdmFsaWRhdGVMb2NhdGlvbiA9IGNyZWF0ZUxvY2F0aW9uVmFsaWRhdG9yKGN1c3RvbUxvY2F0aW9uQWRhcHRlciwgbG9jYXRpb25BZGFwdGVyT3B0aW9ucyk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlTG9jYXRpb25BZGFwdGVyT3B0aW9ucyA9IChvcHRpb25zOiBMb2NhdGlvbkFkYXB0ZXJPcHRpb25zKTogdm9pZCA9PiB7XG4gICAgbG9jYXRpb25BZGFwdGVyT3B0aW9ucyA9IHsuLi5sb2NhdGlvbkFkYXB0ZXJPcHRpb25zLCAuLi5vcHRpb25zfTtcbiAgICB2YWxpZGF0ZUxvY2F0aW9uID0gY3JlYXRlTG9jYXRpb25WYWxpZGF0b3IoY3VzdG9tTG9jYXRpb25BZGFwdGVyLCBsb2NhdGlvbkFkYXB0ZXJPcHRpb25zKTtcbiAgfTtcblxuICAvLyBBY3Rpb24gaW1wbGVtZW50YXRpb25zXG4gIGNvbnN0IGF1dG9jb21wbGV0ZUxvY2F0aW9uID0gYXN5bmMgKFxuICAgIGFkZHJlc3M6IHN0cmluZyxcbiAgICBsYXRpdHVkZT86IG51bWJlcixcbiAgICBsb25naXR1ZGU/OiBudW1iZXIsXG4gICAgbG9jYXRpb25Qcm9wczogc3RyaW5nW10gPSBbXVxuICApOiBQcm9taXNlPExvY2F0aW9uVHlwZVtdPiA9PiBhdXRvQ29tcGxldGVMb2NhdGlvbihmbHV4LCBhZGRyZXNzLCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBsb2NhdGlvblByb3BzKTtcblxuICBjb25zdCBhZGQgPSBhc3luYyAoXG4gICAgbG9jYXRpb246IFBhcnRpYWw8TG9jYXRpb25UeXBlPixcbiAgICBsb2NhdGlvblByb3BzOiBzdHJpbmdbXSA9IFtdXG4gICk6IFByb21pc2U8TG9jYXRpb25UeXBlPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICBsb2NhdGlvbjoge1xuICAgICAgICAgIHR5cGU6ICdMb2NhdGlvbklucHV0IScsXG4gICAgICAgICAgdmFsdWU6IHZhbGlkYXRlTG9jYXRpb24obG9jYXRpb24sIGxvY2F0aW9uQWRhcHRlck9wdGlvbnMpXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBBcGlSZXN1bHRzVHlwZSA9IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IHthZGRMb2NhdGlvbiA9IHt9fSA9IGRhdGE7XG4gICAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtsb2NhdGlvbjogYWRkTG9jYXRpb24sIHR5cGU6IExPQ0FUSU9OX0NPTlNUQU5UUy5BRERfSVRFTV9TVUNDRVNTfSk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7bG9jYXRpb246IGFkZGVkTG9jYXRpb259ID0gYXdhaXQgYXBwTXV0YXRpb24oXG4gICAgICAgIGZsdXgsXG4gICAgICAgICdhZGRMb2NhdGlvbicsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIFtcbiAgICAgICAgICAnYWRkZWQnLFxuICAgICAgICAgICdhZGRyZXNzJyxcbiAgICAgICAgICAnY2l0eScsXG4gICAgICAgICAgJ2NvdW50cnknLFxuICAgICAgICAgICdpZCcsXG4gICAgICAgICAgJ2xhdGl0dWRlJyxcbiAgICAgICAgICAnbG9uZ2l0dWRlJyxcbiAgICAgICAgICAnbW9kaWZpZWQnLFxuICAgICAgICAgICdzdGF0ZScsXG4gICAgICAgICAgJ3N0cmVldCcsXG4gICAgICAgICAgJ3ppcCcsXG4gICAgICAgICAgLi4ubG9jYXRpb25Qcm9wc1xuICAgICAgICBdLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcbiAgICAgIHJldHVybiBhZGRlZExvY2F0aW9uIGFzIExvY2F0aW9uVHlwZTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogTE9DQVRJT05fQ09OU1RBTlRTLkFERF9JVEVNX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZGVsZXRlTG9jYXRpb24gPSBhc3luYyAobG9jYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTxMb2NhdGlvblR5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIGxvY2F0aW9uSWQ6IHtcbiAgICAgICAgICB0eXBlOiAnSUQhJyxcbiAgICAgICAgICB2YWx1ZTogbG9jYXRpb25JZFxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSAoZGF0YTogQXBpUmVzdWx0c1R5cGUgPSB7fSkgPT4ge1xuICAgICAgICBjb25zdCB7ZGVsZXRlTG9jYXRpb246IGxvY2F0aW9uID0ge319ID0gZGF0YTtcbiAgICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe2xvY2F0aW9uLCB0eXBlOiBMT0NBVElPTl9DT05TVEFOVFMuUkVNT1ZFX0lURU1fU1VDQ0VTU30pO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qge2xvY2F0aW9uOiBkZWxldGVkTG9jYXRpb259ID0gYXdhaXQgYXBwTXV0YXRpb24oXG4gICAgICAgIGZsdXgsXG4gICAgICAgICdkZWxldGVMb2NhdGlvbicsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIFsnaWQnXSxcbiAgICAgICAge29uU3VjY2Vzc31cbiAgICAgICk7XG4gICAgICByZXR1cm4gZGVsZXRlZExvY2F0aW9uIGFzIExvY2F0aW9uVHlwZTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogTE9DQVRJT05fQ09OU1RBTlRTLlJFTU9WRV9JVEVNX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZ2V0Q3VycmVudExvY2F0aW9uID0gYXN5bmMgKHNldExvY2F0aW9uPzogKGxvY2F0aW9uOiBMb2NhdGlvblR5cGUpID0+IHZvaWQpOiBQcm9taXNlPExvY2F0aW9uVHlwZT4gPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHt1c2VySWR9OiBVc2VyID0gZmx1eC5nZXRTdGF0ZSgndXNlci5zZXNzaW9uJywge30pO1xuICAgIGNvbnN0IHtjaXR5LCBjb3VudHJ5LCBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBzdGF0ZX06IFVzZXIgPSBmbHV4LmdldFN0YXRlKFsndXNlcicsICd1c2VycycsIHVzZXJJZCB8fCAnJ10sIHt9KTtcbiAgICBjb25zdCBsb2NhdGlvblN0cjogc3RyaW5nID0gW2NpdHksIHN0YXRlLCBjb3VudHJ5XS5qb2luKCcsICcpO1xuICAgIGNvbnN0IHByb2ZpbGVMb2NhdGlvbiA9IHtcbiAgICAgIGxhdGl0dWRlLFxuICAgICAgbG9jYXRpb246IGxvY2F0aW9uU3RyLFxuICAgICAgbG9uZ2l0dWRlXG4gICAgfSBhcyBMb2NhdGlvblR5cGU7XG5cbiAgICBpZihuYXZpZ2F0b3IuZ2VvbG9jYXRpb24pIHtcbiAgICAgIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oXG4gICAgICAgIGFzeW5jICh7Y29vcmRzfSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSB7XG4gICAgICAgICAgICBsYXRpdHVkZTogY29vcmRzLmxhdGl0dWRlLFxuICAgICAgICAgICAgbG9jYXRpb246ICdDdXJyZW50IExvY2F0aW9uJyxcbiAgICAgICAgICAgIGxvbmdpdHVkZTogY29vcmRzLmxvbmdpdHVkZVxuICAgICAgICAgIH0gYXMgTG9jYXRpb25UeXBlO1xuICAgICAgICAgIGF3YWl0IGZsdXguZGlzcGF0Y2goe2N1cnJlbnQsIHR5cGU6IExPQ0FUSU9OX0NPTlNUQU5UUy5TRVRfQ1VSUkVOVH0pO1xuICAgICAgICAgIGlmKHNldExvY2F0aW9uKSB7XG4gICAgICAgICAgICBzZXRMb2NhdGlvbihjdXJyZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVzb2x2ZShjdXJyZW50KTtcbiAgICAgICAgfSxcbiAgICAgICAgKGxvY2F0aW9uRXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnZ2V0Q3VycmVudExvY2F0aW9uOjpsb2NhdGlvbkVycm9yJywgbG9jYXRpb25FcnJvcik7XG4gICAgICAgICAgY29uc29sZS5sb2coJ2dldEN1cnJlbnRMb2NhdGlvbjo6cHJvZmlsZUxvY2F0aW9uMScsIHByb2ZpbGVMb2NhdGlvbik7XG4gICAgICAgICAgaWYoc2V0TG9jYXRpb24pIHtcbiAgICAgICAgICAgIHNldExvY2F0aW9uKHByb2ZpbGVMb2NhdGlvbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZmx1eC5kaXNwYXRjaCh7Y3VycmVudDogcHJvZmlsZUxvY2F0aW9uLCB0eXBlOiBMT0NBVElPTl9DT05TVEFOVFMuU0VUX0NVUlJFTlR9KTtcbiAgICAgICAgICByZWplY3QobG9jYXRpb25FcnJvcik7XG4gICAgICAgIH0sXG4gICAgICAgIHtlbmFibGVIaWdoQWNjdXJhY3k6IGZhbHNlLCBtYXhpbXVtQWdlOiAwLCB0aW1lb3V0OiAzMDAwMH1cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKCdnZXRDdXJyZW50TG9jYXRpb246OnByb2ZpbGVMb2NhdGlvbjInLCBwcm9maWxlTG9jYXRpb24pO1xuICAgICAgaWYoc2V0TG9jYXRpb24pIHtcbiAgICAgICAgc2V0TG9jYXRpb24ocHJvZmlsZUxvY2F0aW9uKTtcbiAgICAgIH1cblxuICAgICAgZmx1eC5kaXNwYXRjaCh7Y3VycmVudDogcHJvZmlsZUxvY2F0aW9uLCB0eXBlOiBMT0NBVElPTl9DT05TVEFOVFMuU0VUX0NVUlJFTlR9KTtcbiAgICAgIHJlamVjdCgnR2VvbG9jYXRpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJyb3dzZXIuJyk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBnZXRHb29nbGVMb2NhdGlvbiA9IGFzeW5jIChhZGRyZXNzOiBzdHJpbmcpOiBQcm9taXNlPHtsYXRpdHVkZTogbnVtYmVyOyBsb2NhdGlvbjogc3RyaW5nOyBsb25naXR1ZGU6IG51bWJlcn0+ID0+IHtcbiAgICBjb25zdCB7a2V5OiBnb29nbGVLZXksIHVybDogZ29vZ2xlVXJsfSA9IENvbmZpZy5nZXQoJ2dvb2dsZS5tYXBzJykgYXMge2tleTogc3RyaW5nOyB1cmw6IHN0cmluZ307XG4gICAgY29uc3QgZm9ybWF0QWRkcmVzczogc3RyaW5nID0gZW5jb2RlVVJJKGFkZHJlc3MpO1xuICAgIGNvbnN0IHVybDogc3RyaW5nID0gYCR7Z29vZ2xlVXJsfT9hZGRyZXNzPSR7Zm9ybWF0QWRkcmVzc30ma2V5PSR7Z29vZ2xlS2V5fWA7XG5cbiAgICBpZih1cmwpIHtcbiAgICAgIHJldHVybiB7bGF0aXR1ZGU6IDAsIGxvY2F0aW9uOiAnJywgbG9uZ2l0dWRlOiAwfTtcbiAgICB9XG4gICAgcmV0dXJuIGh0dHBHZXQodXJsKS50aGVuKChkYXRhKSA9PiB7XG4gICAgICBjb25zdCB7cmVzdWx0c30gPSBkYXRhO1xuICAgICAgY29uc3QgbG9jYXRpb25EYXRhID0gcmVzdWx0cyAmJiByZXN1bHRzLmxlbmd0aCA/IHJlc3VsdHNbMF0gOiB7fTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZm9ybWF0dGVkX2FkZHJlc3M6IGxvY2F0aW9uLFxuICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgIGxvY2F0aW9uOiB7bGF0OiBsYXRpdHVkZSwgbG5nOiBsb25naXR1ZGV9XG4gICAgICAgIH1cbiAgICAgIH0gPSBsb2NhdGlvbkRhdGE7XG4gICAgICByZXR1cm4ge2xhdGl0dWRlLCBsb2NhdGlvbiwgbG9uZ2l0dWRlfTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBnZXRMb2NhdGlvbiA9IGFzeW5jIChcbiAgICBsb2NhdGlvbjogUGFydGlhbDxMb2NhdGlvblR5cGU+LFxuICAgIGxvY2F0aW9uUHJvcHM6IHN0cmluZ1tdID0gW11cbiAgKTogUHJvbWlzZTxMb2NhdGlvblR5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIGxvY2F0aW9uOiB7XG4gICAgICAgICAgdHlwZTogJ0xvY2F0aW9uSW5wdXQhJyxcbiAgICAgICAgICB2YWx1ZTogdmFsaWRhdGVMb2NhdGlvbihsb2NhdGlvbiwgbG9jYXRpb25BZGFwdGVyT3B0aW9ucylcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gKGRhdGE6IEFwaVJlc3VsdHNUeXBlID0ge30pID0+IHtcbiAgICAgICAgY29uc3Qge2dldExvY2F0aW9uID0ge319ID0gZGF0YTtcbiAgICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe2xvY2F0aW9uOiBnZXRMb2NhdGlvbiwgdHlwZTogTE9DQVRJT05fQ09OU1RBTlRTLkdFVF9JVEVNX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHtsb2NhdGlvbjogbG9jYXRpb25SZXN1bHR9ID0gYXdhaXQgYXBwTXV0YXRpb24oXG4gICAgICAgIGZsdXgsXG4gICAgICAgICdnZXRMb2NhdGlvbicsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIFtcbiAgICAgICAgICAnYWRkZWQnLFxuICAgICAgICAgICdhZGRyZXNzJyxcbiAgICAgICAgICAnY2l0eScsXG4gICAgICAgICAgJ2NvdW50cnknLFxuICAgICAgICAgICdpZCcsXG4gICAgICAgICAgJ2xhdGl0dWRlJyxcbiAgICAgICAgICAnbG9uZ2l0dWRlJyxcbiAgICAgICAgICAnbW9kaWZpZWQnLFxuICAgICAgICAgICdzdGF0ZScsXG4gICAgICAgICAgJ3N0cmVldCcsXG4gICAgICAgICAgJ3ppcCcsXG4gICAgICAgICAgLi4ubG9jYXRpb25Qcm9wc1xuICAgICAgICBdLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcbiAgICAgIHJldHVybiBsb2NhdGlvblJlc3VsdCBhcyBMb2NhdGlvblR5cGU7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IExPQ0FUSU9OX0NPTlNUQU5UUy5HRVRfSVRFTV9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGxpc3RCeUl0ZW0gPSBhc3luYyAoXG4gICAgaXRlbUlkOiBzdHJpbmcsXG4gICAgbG9jYXRpb25Qcm9wczogc3RyaW5nW10gPSBbXVxuICApOiBQcm9taXNlPExvY2F0aW9uVHlwZVtdPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICBpdGVtSWQ6IHtcbiAgICAgICAgICB0eXBlOiAnSUQhJyxcbiAgICAgICAgICB2YWx1ZTogaXRlbUlkXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBBcGlSZXN1bHRzVHlwZSA9IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IHtsb2NhdGlvbnNCeUl0ZW0gPSBbXX0gPSBkYXRhIGFzIHtsb2NhdGlvbnNCeUl0ZW06IExvY2F0aW9uVHlwZVtdfTtcbiAgICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe1xuICAgICAgICAgIGl0ZW1JZCxcbiAgICAgICAgICBsaXN0OiBsb2NhdGlvbnNCeUl0ZW0sXG4gICAgICAgICAgdHlwZTogTE9DQVRJT05fQ09OU1RBTlRTLkdFVF9MSVNUX1NVQ0NFU1NcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7bG9jYXRpb25zQnlJdGVtfSA9IGF3YWl0IGFwcE11dGF0aW9uKFxuICAgICAgICBmbHV4LFxuICAgICAgICAnbG9jYXRpb25zQnlJdGVtJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgW1xuICAgICAgICAgICdhZGRlZCcsXG4gICAgICAgICAgJ2FkZHJlc3MnLFxuICAgICAgICAgICdjaXR5JyxcbiAgICAgICAgICAnY291bnRyeScsXG4gICAgICAgICAgJ2lkJyxcbiAgICAgICAgICAnbGF0aXR1ZGUnLFxuICAgICAgICAgICdsb25naXR1ZGUnLFxuICAgICAgICAgICdtb2RpZmllZCcsXG4gICAgICAgICAgJ3N0YXRlJyxcbiAgICAgICAgICAnc3RyZWV0JyxcbiAgICAgICAgICAnemlwJyxcbiAgICAgICAgICAuLi5sb2NhdGlvblByb3BzXG4gICAgICAgIF0sXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuICAgICAgcmV0dXJuIGxvY2F0aW9uc0J5SXRlbSBhcyBMb2NhdGlvblR5cGVbXTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogTE9DQVRJT05fQ09OU1RBTlRTLkdFVF9MSVNUX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlID0gYXN5bmMgKFxuICAgIGxvY2F0aW9uOiBQYXJ0aWFsPExvY2F0aW9uVHlwZT4sXG4gICAgbG9jYXRpb25Qcm9wczogc3RyaW5nW10gPSBbXVxuICApOiBQcm9taXNlPExvY2F0aW9uVHlwZT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgbG9jYXRpb246IHtcbiAgICAgICAgICB0eXBlOiAnTG9jYXRpb25VcGRhdGVJbnB1dCEnLFxuICAgICAgICAgIHZhbHVlOiB2YWxpZGF0ZUxvY2F0aW9uKGxvY2F0aW9uLCBsb2NhdGlvbkFkYXB0ZXJPcHRpb25zKVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSAoZGF0YTogQXBpUmVzdWx0c1R5cGUgPSB7fSkgPT4ge1xuICAgICAgICBjb25zdCB7dXBkYXRlTG9jYXRpb24gPSB7fX0gPSBkYXRhO1xuICAgICAgICByZXR1cm4gZmx1eC5kaXNwYXRjaCh7bG9jYXRpb246IHVwZGF0ZUxvY2F0aW9uLCB0eXBlOiBMT0NBVElPTl9DT05TVEFOVFMuVVBEQVRFX0lURU1fU1VDQ0VTU30pO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qge2xvY2F0aW9uOiB1cGRhdGVkTG9jYXRpb259ID0gYXdhaXQgYXBwTXV0YXRpb24oXG4gICAgICAgIGZsdXgsXG4gICAgICAgICd1cGRhdGVMb2NhdGlvbicsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIFtcbiAgICAgICAgICAnYWRkZWQnLFxuICAgICAgICAgICdhZGRyZXNzJyxcbiAgICAgICAgICAnY2l0eScsXG4gICAgICAgICAgJ2NvdW50cnknLFxuICAgICAgICAgICdpZCcsXG4gICAgICAgICAgJ2xhdGl0dWRlJyxcbiAgICAgICAgICAnbG9uZ2l0dWRlJyxcbiAgICAgICAgICAnbW9kaWZpZWQnLFxuICAgICAgICAgICdzdGF0ZScsXG4gICAgICAgICAgJ3N0cmVldCcsXG4gICAgICAgICAgJ3ppcCcsXG4gICAgICAgICAgLi4ubG9jYXRpb25Qcm9wc1xuICAgICAgICBdLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcbiAgICAgIHJldHVybiB1cGRhdGVkTG9jYXRpb24gYXMgTG9jYXRpb25UeXBlO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBMT0NBVElPTl9DT05TVEFOVFMuVVBEQVRFX0lURU1fRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICAvLyBSZXR1cm4gdGhlIGFjdGlvbnMgb2JqZWN0XG4gIHJldHVybiB7XG4gICAgYXV0b2NvbXBsZXRlTG9jYXRpb24sXG4gICAgYWRkLFxuICAgIGRlbGV0ZTogZGVsZXRlTG9jYXRpb24sXG4gICAgZ2V0Q3VycmVudExvY2F0aW9uLFxuICAgIGdldEdvb2dsZUxvY2F0aW9uLFxuICAgIGdldExvY2F0aW9uLFxuICAgIGxpc3RCeUl0ZW0sXG4gICAgdXBkYXRlLFxuICAgIHVwZGF0ZUxvY2F0aW9uQWRhcHRlcixcbiAgICB1cGRhdGVMb2NhdGlvbkFkYXB0ZXJPcHRpb25zXG4gIH07XG59O1xuXG4iXSwKICAibWFwcGluZ3MiOiAiQUFJQSxPQUFRLE9BQU9BLE1BQWMsb0JBRTdCLE9BQVEseUJBQUFDLE1BQTRCLGlEQUNwQyxPQUFRLFVBQUFDLE1BQWEsZUFDckIsT0FBUSxzQkFBQUMsTUFBeUIsNkJBQ2pDLE9BQVEsZUFBQUMsTUFBa0Isa0JBQzFCLE9BQVEsd0JBQUFDLE1BQTJCLHVCQU9uQyxNQUFNQyxFQUFpQyxZQW9DakNDLEVBQTJCLENBQUNDLEVBQWdCQyxJQUFxQ1IsRUFBc0JPLENBQUssRUFHNUdFLEVBQTBCLENBQzlCQyxFQUNBRixJQUNHLENBQUNELEVBQWdCSSxJQUE4QyxDQUNsRSxNQUFNQyxFQUFnQixDQUFDLEdBQUdKLEVBQVMsR0FBR0csQ0FBZ0IsRUFHdEQsSUFBSUUsRUFBWVAsRUFBeUJDLEVBQU9LLENBQWEsRUFHN0QsT0FBR0YsSUFDREcs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dHRwR2V0IiwgInZhbGlkYXRlTG9jYXRpb25JbnB1dCIsICJDb25maWciLCAiTE9DQVRJT05fQ09OU1RBTlRTIiwgImFwcE11dGF0aW9uIiwgImF1dG9Db21wbGV0ZUxvY2F0aW9uIiwgIkRBVEFfVFlQRSIsICJkZWZhdWx0TG9jYXRpb25WYWxpZGF0b3IiLCAiaW5wdXQiLCAib3B0aW9ucyIsICJjcmVhdGVMb2NhdGlvblZhbGlkYXRvciIsICJjdXN0b21BZGFwdGVyIiwgInZhbGlkYXRvck9wdGlvbnMiLCAibWVyZ2VkT3B0aW9ucyIsICJ2YWxpZGF0ZWQiLCAiY3JlYXRlTG9jYXRpb25BY3Rpb25zIiwgImZsdXgiLCAibG9jYXRpb25BZGFwdGVyT3B0aW9ucyIsICJjdXN0b21Mb2NhdGlvbkFkYXB0ZXIiLCAidmFsaWRhdGVMb2NhdGlvbiIsICJhZGRyZXNzIiwgImxhdGl0dWRlIiwgImxvbmdpdHVkZSIsICJsb2NhdGlvblByb3BzIiwgImxvY2F0aW9uIiwgInF1ZXJ5VmFyaWFibGVzIiwgIm9uU3VjY2VzcyIsICJkYXRhIiwgImFkZExvY2F0aW9uIiwgImFkZGVkTG9jYXRpb24iLCAiZXJyb3IiLCAibG9jYXRpb25JZCIsICJkZWxldGVkTG9jYXRpb24iLCAic2V0TG9jYXRpb24iLCAicmVzb2x2ZSIsICJyZWplY3QiLCAidXNlcklkIiwgImNpdHkiLCAiY291bnRyeSIsICJzdGF0ZSIsICJsb2NhdGlvblN0ciIsICJwcm9maWxlTG9jYXRpb24iLCAiY29vcmRzIiwgImN1cnJlbnQiLCAibG9jYXRpb25FcnJvciIsICJnb29nbGVLZXkiLCAiZ29vZ2xlVXJsIiwgImZvcm1hdEFkZHJlc3MiLCAidXJsIiwgInJlc3VsdHMiLCAibG9jYXRpb25EYXRhIiwgImdldExvY2F0aW9uIiwgImxvY2F0aW9uUmVzdWx0IiwgIml0ZW1JZCIsICJsb2NhdGlvbnNCeUl0ZW0iLCAidXBkYXRlTG9jYXRpb24iLCAidXBkYXRlZExvY2F0aW9uIiwgImFkYXB0ZXIiXQp9Cg==
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */
5
+ import type { FluxFramework } from '@nlabs/arkhamjs';
6
+ import type { ConversationType } from '../../adapters/conversationAdapter/conversationAdapter';
7
+ import type { MessageType } from '../../adapters/messageAdapter/messageAdapter';
8
+ export interface MessageAdapterOptions {
9
+ strict?: boolean;
10
+ allowPartial?: boolean;
11
+ environment?: 'development' | 'production' | 'test';
12
+ customValidation?: (input: unknown) => unknown;
13
+ }
14
+ export interface MessageActionsOptions {
15
+ messageAdapter?: (input: unknown, options?: MessageAdapterOptions) => any;
16
+ messageAdapterOptions?: MessageAdapterOptions;
17
+ }
18
+ export type MessageApiResultsType = {
19
+ sendMessage: MessageType;
20
+ getDirectConversation: ConversationType;
21
+ getMessages: MessageType[];
22
+ getConversations: ConversationType[];
23
+ };
24
+ export interface MessageActions {
25
+ sendMessage: (message: Partial<MessageType>, messageProps?: string[]) => Promise<MessageType>;
26
+ getDirectConversation: (userId: string) => Promise<ConversationType>;
27
+ getMessages: (conversationId: string, messageProps?: string[]) => Promise<MessageType[]>;
28
+ getConversations: (from?: number, to?: number) => Promise<ConversationType[]>;
29
+ updateMessageAdapter: (adapter: (input: unknown, options?: MessageAdapterOptions) => any) => void;
30
+ updateMessageAdapterOptions: (options: MessageAdapterOptions) => void;
31
+ }
32
+ /**
33
+ * Factory function to create MessageActions with enhanced adapter injection capabilities.
34
+ * Custom adapters are merged with default behavior, allowing partial overrides.
35
+ *
36
+ * @example
37
+ * // Basic usage with default adapters
38
+ * const messageActions = createMessageActions(flux);
39
+ *
40
+ * @example
41
+ * // Custom adapter that extends default behavior
42
+ * const customMessageAdapter = (input: unknown, options?: MessageAdapterOptions) => {
43
+ * // input is already validated by default adapter
44
+ * if (input.content && input.content.length > 1000) {
45
+ * throw new Error('Message content too long');
46
+ * }
47
+ * return input;
48
+ * };
49
+ *
50
+ * const messageActions = createMessageActions(flux, {
51
+ * messageAdapter: customMessageAdapter
52
+ * });
53
+ */
54
+ export declare const createMessageActions: (flux: FluxFramework, options?: MessageActionsOptions) => MessageActions;
@@ -0,0 +1,2 @@
1
+ import{validateMessageInput as v}from"../../adapters/messageAdapter/messageAdapter";import{MESSAGE_CONSTANTS as r}from"../../stores/messageStore";import{appMutation as A,appQuery as M}from"../../utils/api";const y="messages",l=(e,m)=>v(e),T=(e,m)=>(n,g)=>{const o={...m,...g};let c=l(n,o);return e&&(c=e(c,o)),o?.customValidation&&(c=o.customValidation(c)),c},h=(e,m)=>{let n=m?.messageAdapterOptions||{},g=m?.messageAdapter,o=T(g,n);return{sendMessage:async(t,a=[])=>{try{const s={message:{type:"MessageInput!",value:o(t,n)}},i=(d={})=>{const{sendMessage:u={}}=d;return e.dispatch({message:u,type:r.ADD_ITEM_SUCCESS})},{message:p}=await A(e,"sendMessage",y,s,["added","content","modified","messageId","user { userId, username }",...a],{onSuccess:i});return p}catch(s){throw e.dispatch({error:s,type:r.ADD_ITEM_ERROR}),s}},getDirectConversation:async t=>{try{const a={userId:{type:"ID!",value:t}},s=(p={})=>{const{directConversation:d={}}=p;return e.dispatch({conversation:d,type:r.GET_CONVO_LIST_SUCCESS})},{directConversation:i}=await M(e,"directConversation",y,a,["added","conversationId","modified","name","users { userId, username }"],{onSuccess:s});return i}catch(a){throw e.dispatch({error:a,type:r.GET_CONVO_LIST_ERROR}),a}},getMessages:async(t,a=[])=>{try{const s={conversationId:{type:"ID!",value:t}},i=(d={})=>{const{messages:u=[]}=d;return e.dispatch({conversationId:t,list:u,type:r.GET_LIST_SUCCESS})},{messages:p}=await M(e,"messages",y,s,["added","content","modified","messageId","user { userId, username }",...a],{onSuccess:i});return p}catch(s){throw e.dispatch({error:s,type:r.GET_LIST_ERROR}),s}},getConversations:async(t=0,a=10)=>{try{const s={from:{type:"Int",value:t},to:{type:"Int",value:a}},i=(d={})=>{const{conversations:u=[]}=d;return e.dispatch({conversations:u,type:r.GET_CONVO_LIST_SUCCESS})},{conversations:p}=await M(e,"conversations",y,s,["added","content","conversationId","modified","name","thumbUrl","users { userId, username }"],{onSuccess:i});return p}catch(s){throw e.dispatch({error:s,type:r.GET_CONVO_LIST_ERROR}),s}},updateMessageAdapter:t=>{g=t,o=T(g,n)},updateMessageAdapterOptions:t=>{n={...n,...t},o=T(g,n)}}};export{h as createMessageActions};
2
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FjdGlvbnMvbWVzc2FnZUFjdGlvbnMvbWVzc2FnZUFjdGlvbnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5cbmltcG9ydCB7dmFsaWRhdGVNZXNzYWdlSW5wdXR9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL21lc3NhZ2VBZGFwdGVyL21lc3NhZ2VBZGFwdGVyJztcbmltcG9ydCB7TUVTU0FHRV9DT05TVEFOVFN9IGZyb20gJy4uLy4uL3N0b3Jlcy9tZXNzYWdlU3RvcmUnO1xuaW1wb3J0IHthcHBNdXRhdGlvbiwgYXBwUXVlcnl9IGZyb20gJy4uLy4uL3V0aWxzL2FwaSc7XG5cbmltcG9ydCB0eXBlIHtGbHV4RnJhbWV3b3JrfSBmcm9tICdAbmxhYnMvYXJraGFtanMnO1xuaW1wb3J0IHR5cGUge0NvbnZlcnNhdGlvblR5cGV9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL2NvbnZlcnNhdGlvbkFkYXB0ZXIvY29udmVyc2F0aW9uQWRhcHRlcic7XG5pbXBvcnQgdHlwZSB7TWVzc2FnZVR5cGV9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL21lc3NhZ2VBZGFwdGVyL21lc3NhZ2VBZGFwdGVyJztcbmltcG9ydCB0eXBlIHtBcGlSZXN1bHRzVHlwZSwgUmVha3RvckRiQ29sbGVjdGlvbn0gZnJvbSAnLi4vLi4vdXRpbHMvYXBpJztcblxuY29uc3QgREFUQV9UWVBFOiBSZWFrdG9yRGJDb2xsZWN0aW9uID0gJ21lc3NhZ2VzJztcblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlQWRhcHRlck9wdGlvbnMge1xuICBzdHJpY3Q/OiBib29sZWFuO1xuICBhbGxvd1BhcnRpYWw/OiBib29sZWFuO1xuICBlbnZpcm9ubWVudD86ICdkZXZlbG9wbWVudCcgfCAncHJvZHVjdGlvbicgfCAndGVzdCc7XG4gIGN1c3RvbVZhbGlkYXRpb24/OiAoaW5wdXQ6IHVua25vd24pID0+IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVzc2FnZUFjdGlvbnNPcHRpb25zIHtcbiAgbWVzc2FnZUFkYXB0ZXI/OiAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBNZXNzYWdlQWRhcHRlck9wdGlvbnMpID0+IGFueTtcbiAgbWVzc2FnZUFkYXB0ZXJPcHRpb25zPzogTWVzc2FnZUFkYXB0ZXJPcHRpb25zO1xufVxuXG5leHBvcnQgdHlwZSBNZXNzYWdlQXBpUmVzdWx0c1R5cGUgPSB7XG4gIHNlbmRNZXNzYWdlOiBNZXNzYWdlVHlwZTtcbiAgZ2V0RGlyZWN0Q29udmVyc2F0aW9uOiBDb252ZXJzYXRpb25UeXBlO1xuICBnZXRNZXNzYWdlczogTWVzc2FnZVR5cGVbXTtcbiAgZ2V0Q29udmVyc2F0aW9uczogQ29udmVyc2F0aW9uVHlwZVtdO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBNZXNzYWdlQWN0aW9ucyB7XG4gIHNlbmRNZXNzYWdlOiAobWVzc2FnZTogUGFydGlhbDxNZXNzYWdlVHlwZT4sIG1lc3NhZ2VQcm9wcz86IHN0cmluZ1tdKSA9PiBQcm9taXNlPE1lc3NhZ2VUeXBlPjtcbiAgZ2V0RGlyZWN0Q29udmVyc2F0aW9uOiAodXNlcklkOiBzdHJpbmcpID0+IFByb21pc2U8Q29udmVyc2F0aW9uVHlwZT47XG4gIGdldE1lc3NhZ2VzOiAoY29udmVyc2F0aW9uSWQ6IHN0cmluZywgbWVzc2FnZVByb3BzPzogc3RyaW5nW10pID0+IFByb21pc2U8TWVzc2FnZVR5cGVbXT47XG4gIGdldENvbnZlcnNhdGlvbnM6IChmcm9tPzogbnVtYmVyLCB0bz86IG51bWJlcikgPT4gUHJvbWlzZTxDb252ZXJzYXRpb25UeXBlW10+O1xuICB1cGRhdGVNZXNzYWdlQWRhcHRlcjogKGFkYXB0ZXI6IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IE1lc3NhZ2VBZGFwdGVyT3B0aW9ucykgPT4gYW55KSA9PiB2b2lkO1xuICB1cGRhdGVNZXNzYWdlQWRhcHRlck9wdGlvbnM6IChvcHRpb25zOiBNZXNzYWdlQWRhcHRlck9wdGlvbnMpID0+IHZvaWQ7XG59XG5cbi8vIERlZmF1bHQgdmFsaWRhdGlvbiBmdW5jdGlvblxuY29uc3QgZGVmYXVsdE1lc3NhZ2VWYWxpZGF0b3IgPSAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBNZXNzYWdlQWRhcHRlck9wdGlvbnMpID0+IHZhbGlkYXRlTWVzc2FnZUlucHV0KGlucHV0KTtcblxuLy8gRW5oYW5jZWQgdmFsaWRhdGlvbiBmdW5jdGlvbiB0aGF0IG1lcmdlcyBjdXN0b20gbG9naWMgd2l0aCBkZWZhdWx0c1xuY29uc3QgY3JlYXRlTWVzc2FnZVZhbGlkYXRvciA9IChcbiAgY3VzdG9tQWRhcHRlcj86IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IE1lc3NhZ2VBZGFwdGVyT3B0aW9ucykgPT4gYW55LFxuICBvcHRpb25zPzogTWVzc2FnZUFkYXB0ZXJPcHRpb25zXG4pID0+IChpbnB1dDogdW5rbm93biwgdmFsaWRhdG9yT3B0aW9ucz86IE1lc3NhZ2VBZGFwdGVyT3B0aW9ucykgPT4ge1xuICBjb25zdCBtZXJnZWRPcHRpb25zID0gey4uLm9wdGlvbnMsIC4uLnZhbGlkYXRvck9wdGlvbnN9O1xuXG4gIC8vIFN0YXJ0IHdpdGggZGVmYXVsdCB2YWxpZGF0aW9uXG4gIGxldCB2YWxpZGF0ZWQgPSBkZWZhdWx0TWVzc2FnZVZhbGlkYXRvcihpbnB1dCwgbWVyZ2VkT3B0aW9ucyk7XG5cbiAgLy8gQXBwbHkgY3VzdG9tIHZhbGlkYXRpb24gaWYgcHJvdmlkZWRcbiAgaWYoY3VzdG9tQWRhcHRlcikge1xuICAgIHZhbGlkYXRlZCA9IGN1c3RvbUFkYXB0ZXIodmFsaWRhdGVkLCBtZXJnZWRPcHRpb25zKTtcbiAgfVxuXG4gIC8vIEFwcGx5IGN1c3RvbSB2YWxpZGF0aW9uIGZyb20gb3B0aW9ucyBpZiBwcm92aWRlZFxuICBpZihtZXJnZWRPcHRpb25zPy5jdXN0b21WYWxpZGF0aW9uKSB7XG4gICAgdmFsaWRhdGVkID0gbWVyZ2VkT3B0aW9ucy5jdXN0b21WYWxpZGF0aW9uKHZhbGlkYXRlZCkgYXMgTWVzc2FnZVR5cGU7XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVkO1xufTtcblxuLyoqXG4gKiBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBNZXNzYWdlQWN0aW9ucyB3aXRoIGVuaGFuY2VkIGFkYXB0ZXIgaW5qZWN0aW9uIGNhcGFiaWxpdGllcy5cbiAqIEN1c3RvbSBhZGFwdGVycyBhcmUgbWVyZ2VkIHdpdGggZGVmYXVsdCBiZWhhdmlvciwgYWxsb3dpbmcgcGFydGlhbCBvdmVycmlkZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEJhc2ljIHVzYWdlIHdpdGggZGVmYXVsdCBhZGFwdGVyc1xuICogY29uc3QgbWVzc2FnZUFjdGlvbnMgPSBjcmVhdGVNZXNzYWdlQWN0aW9ucyhmbHV4KTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ3VzdG9tIGFkYXB0ZXIgdGhhdCBleHRlbmRzIGRlZmF1bHQgYmVoYXZpb3JcbiAqIGNvbnN0IGN1c3RvbU1lc3NhZ2VBZGFwdGVyID0gKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogTWVzc2FnZUFkYXB0ZXJPcHRpb25zKSA9PiB7XG4gKiAgIC8vIGlucHV0IGlzIGFscmVhZHkgdmFsaWRhdGVkIGJ5IGRlZmF1bHQgYWRhcHRlclxuICogICBpZiAoaW5wdXQuY29udGVudCAmJiBpbnB1dC5jb250ZW50Lmxlbmd0aCA+IDEwMDApIHtcbiAqICAgICB0aHJvdyBuZXcgRXJyb3IoJ01lc3NhZ2UgY29udGVudCB0b28gbG9uZycpO1xuICogICB9XG4gKiAgIHJldHVybiBpbnB1dDtcbiAqIH07XG4gKlxuICogY29uc3QgbWVzc2FnZUFjdGlvbnMgPSBjcmVhdGVNZXNzYWdlQWN0aW9ucyhmbHV4LCB7XG4gKiAgIG1lc3NhZ2VBZGFwdGVyOiBjdXN0b21NZXNzYWdlQWRhcHRlclxuICogfSk7XG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVNZXNzYWdlQWN0aW9ucyA9IChcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgb3B0aW9ucz86IE1lc3NhZ2VBY3Rpb25zT3B0aW9uc1xuKTogTWVzc2FnZUFjdGlvbnMgPT4ge1xuICAvLyBJbml0aWFsaXplIGFkYXB0ZXIgc3RhdGVcbiAgbGV0IG1lc3NhZ2VBZGFwdGVyT3B0aW9uczogTWVzc2FnZUFkYXB0ZXJPcHRpb25zID0gb3B0aW9ucz8ubWVzc2FnZUFkYXB0ZXJPcHRpb25zIHx8IHt9O1xuICBsZXQgY3VzdG9tTWVzc2FnZUFkYXB0ZXIgPSBvcHRpb25zPy5tZXNzYWdlQWRhcHRlcjtcblxuICAvLyBDcmVhdGUgdmFsaWRhdG9ycyB0aGF0IG1lcmdlIGN1c3RvbSBhZGFwdGVycyB3aXRoIGRlZmF1bHRzXG4gIGxldCB2YWxpZGF0ZU1lc3NhZ2UgPSBjcmVhdGVNZXNzYWdlVmFsaWRhdG9yKGN1c3RvbU1lc3NhZ2VBZGFwdGVyLCBtZXNzYWdlQWRhcHRlck9wdGlvbnMpO1xuXG4gIC8vIFVwZGF0ZSBmdW5jdGlvbnMgdGhhdCByZWNyZWF0ZSB2YWxpZGF0b3JzXG4gIGNvbnN0IHVwZGF0ZU1lc3NhZ2VBZGFwdGVyID0gKGFkYXB0ZXI6IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IE1lc3NhZ2VBZGFwdGVyT3B0aW9ucykgPT4gYW55KTogdm9pZCA9PiB7XG4gICAgY3VzdG9tTWVzc2FnZUFkYXB0ZXIgPSBhZGFwdGVyO1xuICAgIHZhbGlkYXRlTWVzc2FnZSA9IGNyZWF0ZU1lc3NhZ2VWYWxpZGF0b3IoY3VzdG9tTWVzc2FnZUFkYXB0ZXIsIG1lc3NhZ2VBZGFwdGVyT3B0aW9ucyk7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlTWVzc2FnZUFkYXB0ZXJPcHRpb25zID0gKG9wdGlvbnM6IE1lc3NhZ2VBZGFwdGVyT3B0aW9ucyk6IHZvaWQgPT4ge1xuICAgIG1lc3NhZ2VBZGFwdGVyT3B0aW9ucyA9IHsuLi5tZXNzYWdlQWRhcHRlck9wdGlvbnMsIC4uLm9wdGlvbnN9O1xuICAgIHZhbGlkYXRlTWVzc2FnZSA9IGNyZWF0ZU1lc3NhZ2VWYWxpZGF0b3IoY3VzdG9tTWVzc2FnZUFkYXB0ZXIsIG1lc3NhZ2VBZGFwdGVyT3B0aW9ucyk7XG4gIH07XG5cbiAgLy8gQWN0aW9uIGltcGxlbWVudGF0aW9uc1xuICBjb25zdCBzZW5kTWVzc2FnZSA9IGFzeW5jIChtZXNzYWdlOiBQYXJ0aWFsPE1lc3NhZ2VUeXBlPiwgbWVzc2FnZVByb3BzOiBzdHJpbmdbXSA9IFtdKTogUHJvbWlzZTxNZXNzYWdlVHlwZT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgbWVzc2FnZToge1xuICAgICAgICAgIHR5cGU6ICdNZXNzYWdlSW5wdXQhJyxcbiAgICAgICAgICB2YWx1ZTogdmFsaWRhdGVNZXNzYWdlKG1lc3NhZ2UsIG1lc3NhZ2VBZGFwdGVyT3B0aW9ucylcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gKGRhdGE6IEFwaVJlc3VsdHNUeXBlID0ge30pID0+IHtcbiAgICAgICAgY29uc3Qge3NlbmRNZXNzYWdlOiBtZXNzYWdlID0ge319ID0gZGF0YTtcbiAgICAgICAgLy9jb25zdCBzZXNzaW9uSWQ6IHN0cmluZyA9IGZsdXguZ2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbi51c2VySWQnLCAnJyk7XG4gICAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHttZXNzYWdlLCB0eXBlOiBNRVNTQUdFX0NPTlNUQU5UUy5BRERfSVRFTV9TVUNDRVNTfSk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7bWVzc2FnZTogYWRkZWRNZXNzYWdlfSA9IGF3YWl0IGFwcE11dGF0aW9uKFxuICAgICAgICBmbHV4LFxuICAgICAgICAnc2VuZE1lc3NhZ2UnLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbJ2FkZGVkJywgJ2NvbnRlbnQnLCAnbW9kaWZpZWQnLCAnbWVzc2FnZUlkJywgJ3VzZXIgeyB1c2VySWQsIHVzZXJuYW1lIH0nLCAuLi5tZXNzYWdlUHJvcHNdLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcbiAgICAgIHJldHVybiBhZGRlZE1lc3NhZ2UgYXMgTWVzc2FnZVR5cGU7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IE1FU1NBR0VfQ09OU1RBTlRTLkFERF9JVEVNX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZ2V0RGlyZWN0Q29udmVyc2F0aW9uID0gYXN5bmMgKHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxDb252ZXJzYXRpb25UeXBlPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICB1c2VySWQ6IHtcbiAgICAgICAgICB0eXBlOiAnSUQhJyxcbiAgICAgICAgICB2YWx1ZTogdXNlcklkXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBBcGlSZXN1bHRzVHlwZSA9IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IHtkaXJlY3RDb252ZXJzYXRpb246IGNvbnZlcnNhdGlvbiA9IHt9fSA9IGRhdGE7XG4gICAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtjb252ZXJzYXRpb24sIHR5cGU6IE1FU1NBR0VfQ09OU1RBTlRTLkdFVF9DT05WT19MSVNUX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHtkaXJlY3RDb252ZXJzYXRpb246IGNvbnZlcnNhdGlvbn0gPSBhd2FpdCBhcHBRdWVyeShcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ2RpcmVjdENvbnZlcnNhdGlvbicsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIFsnYWRkZWQnLCAnY29udmVyc2F0aW9uSWQnLCAnbW9kaWZpZWQnLCAnbmFtZScsICd1c2VycyB7IHVzZXJJZCwgdXNlcm5hbWUgfSddLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcbiAgICAgIHJldHVybiBjb252ZXJzYXRpb24gYXMgQ29udmVyc2F0aW9uVHlwZTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogTUVTU0FHRV9DT05TVEFOVFMuR0VUX0NPTlZPX0xJU1RfRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBnZXRNZXNzYWdlcyA9IGFzeW5jIChjb252ZXJzYXRpb25JZDogc3RyaW5nLCBtZXNzYWdlUHJvcHM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPE1lc3NhZ2VUeXBlW10+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIGNvbnZlcnNhdGlvbklkOiB7XG4gICAgICAgICAgdHlwZTogJ0lEIScsXG4gICAgICAgICAgdmFsdWU6IGNvbnZlcnNhdGlvbklkXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBBcGlSZXN1bHRzVHlwZSA9IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IHttZXNzYWdlcyA9IFtdfSA9IGRhdGEgYXMge21lc3NhZ2VzOiBNZXNzYWdlVHlwZVtdfTtcbiAgICAgICAgLy9jb25zdCBzZXNzaW9uSWQ6IHN0cmluZyA9IGZsdXguZ2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbi51c2VySWQnLCAnJyk7XG5cbiAgICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe1xuICAgICAgICAgIGNvbnZlcnNhdGlvbklkLFxuICAgICAgICAgIGxpc3Q6IG1lc3NhZ2VzLFxuICAgICAgICAgIHR5cGU6IE1FU1NBR0VfQ09OU1RBTlRTLkdFVF9MSVNUX1NVQ0NFU1NcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7bWVzc2FnZXM6IG1lc3NhZ2VzTGlzdH0gPSBhd2FpdCBhcHBRdWVyeShcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ21lc3NhZ2VzJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgWydhZGRlZCcsICdjb250ZW50JywgJ21vZGlmaWVkJywgJ21lc3NhZ2VJZCcsICd1c2VyIHsgdXNlcklkLCB1c2VybmFtZSB9JywgLi4ubWVzc2FnZVByb3BzXSxcbiAgICAgICAge29uU3VjY2Vzc31cbiAgICAgICk7XG4gICAgICByZXR1cm4gbWVzc2FnZXNMaXN0IGFzIE1lc3NhZ2VUeXBlW107XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IE1FU1NBR0VfQ09OU1RBTlRTLkdFVF9MSVNUX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZ2V0Q29udmVyc2F0aW9ucyA9IGFzeW5jIChmcm9tOiBudW1iZXIgPSAwLCB0bzogbnVtYmVyID0gMTApOiBQcm9taXNlPENvbnZlcnNhdGlvblR5cGVbXT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgZnJvbToge1xuICAgICAgICAgIHR5cGU6ICdJbnQnLFxuICAgICAgICAgIHZhbHVlOiBmcm9tXG4gICAgICAgIH0sXG4gICAgICAgIHRvOiB7XG4gICAgICAgICAgdHlwZTogJ0ludCcsXG4gICAgICAgICAgdmFsdWU6IHRvXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBBcGlSZXN1bHRzVHlwZSA9IHt9KSA9PiB7XG4gICAgICAgIGNvbnN0IHtjb252ZXJzYXRpb25zID0gW119ID0gZGF0YTtcbiAgICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe2NvbnZlcnNhdGlvbnMsIHR5cGU6IE1FU1NBR0VfQ09OU1RBTlRTLkdFVF9DT05WT19MSVNUX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHtjb252ZXJzYXRpb25zOiBjb252ZXJzYXRpb25zTGlzdH0gPSBhd2FpdCBhcHBRdWVyeShcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ2NvbnZlcnNhdGlvbnMnLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbJ2FkZGVkJywgJ2NvbnRlbnQnLCAnY29udmVyc2F0aW9uSWQnLCAnbW9kaWZpZWQnLCAnbmFtZScsICd0aHVtYlVybCcsICd1c2VycyB7IHVzZXJJZCwgdXNlcm5hbWUgfSddLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcbiAgICAgIHJldHVybiBjb252ZXJzYXRpb25zTGlzdCBhcyBDb252ZXJzYXRpb25UeXBlW107XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IE1FU1NBR0VfQ09OU1RBTlRTLkdFVF9DT05WT19MSVNUX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH07XG5cbiAgLy8gUmV0dXJuIHRoZSBhY3Rpb25zIG9iamVjdFxuICByZXR1cm4ge1xuICAgIHNlbmRNZXNzYWdlLFxuICAgIGdldERpcmVjdENvbnZlcnNhdGlvbixcbiAgICBnZXRNZXNzYWdlcyxcbiAgICBnZXRDb252ZXJzYXRpb25zLFxuICAgIHVwZGF0ZU1lc3NhZ2VBZGFwdGVyLFxuICAgIHVwZGF0ZU1lc3NhZ2VBZGFwdGVyT3B0aW9uc1xuICB9O1xufTtcblxuIl0sCiAgIm1hcHBpbmdzIjogIkFBS0EsT0FBUSx3QkFBQUEsTUFBMkIsK0NBQ25DLE9BQVEscUJBQUFDLE1BQXdCLDRCQUNoQyxPQUFR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bGlkYXRlTWVzc2FnZUlucHV0IiwgIk1FU1NBR0VfQ09OU1RBTlRTIiwgImFwcE11dGF0aW9uIiwgImFwcFF1ZXJ5IiwgIkRBVEFfVFlQRSIsICJkZWZhdWx0TWVzc2FnZVZhbGlkYXRvciIsICJpbnB1dCIsICJvcHRpb25zIiwgImNyZWF0ZU1lc3NhZ2VWYWxpZGF0b3IiLCAiY3VzdG9tQWRhcHRlciIsICJ2YWxpZGF0b3JPcHRpb25zIiwgIm1lcmdlZE9wdGlvbnMiLCAidmFsaWRhdGVkIiwgImNyZWF0ZU1lc3NhZ2VBY3Rpb25zIiwgImZsdXgiLCAibWVzc2FnZUFkYXB0ZXJPcHRpb25zIiwgImN1c3RvbU1lc3NhZ2VBZGFwdGVyIiwgInZhbGlkYXRlTWVzc2FnZSIsICJtZXNzYWdlIiwgIm1lc3NhZ2VQcm9wcyIsICJxdWVyeVZhcmlhYmxlcyIsICJvblN1Y2Nlc3MiLCAiZGF0YSIsICJhZGRlZE1lc3NhZ2UiLCAiZXJyb3IiLCAidXNlcklkIiwgImNvbnZlcnNhdGlvbiIsICJjb252ZXJzYXRpb25JZCIsICJtZXNzYWdlcyIsICJtZXNzYWdlc0xpc3QiLCAiZnJvbSIsICJ0byIsICJjb252ZXJzYXRpb25zIiwgImNvbnZlcnNhdGlvbnNMaXN0IiwgImFkYXB0ZXIiXQp9Cg==
@@ -0,0 +1,56 @@
1
+ import type { FluxFramework } from '@nlabs/arkhamjs';
2
+ import type { PostType } from '../../adapters/postAdapter/postAdapter';
3
+ import type { BaseAdapterOptions } from '../../utils/validatorFactory';
4
+ export interface PostAdapterOptions extends BaseAdapterOptions {
5
+ }
6
+ export interface PostActionsOptions {
7
+ postAdapter?: (input: unknown, options?: PostAdapterOptions) => any;
8
+ postAdapterOptions?: PostAdapterOptions;
9
+ }
10
+ export type PostApiResultsType = {
11
+ posts: {
12
+ addPost: PostType;
13
+ getPost: PostType;
14
+ getPostsByLatest: PostType[];
15
+ getPostsByLocation: PostType[];
16
+ getPostsByReactions: PostType[];
17
+ getPostsByTags: PostType[];
18
+ deletePost: PostType;
19
+ updatePost: PostType;
20
+ };
21
+ };
22
+ export interface PostActions {
23
+ add: (postData: Partial<PostType>, postProps?: string[]) => Promise<PostType>;
24
+ itemById: (postId: string, postProps?: string[]) => Promise<PostType>;
25
+ listByLatest: (from?: number, to?: number, postProps?: string[]) => Promise<PostType[]>;
26
+ listByLocation: (latitude: number, longitude: number, from?: number, to?: number, postProps?: string[]) => Promise<PostType[]>;
27
+ listByReactions: (reactionNames: string[], latitude: number, longitude: number, from?: number, to?: number, postProps?: string[]) => Promise<PostType[]>;
28
+ listByTags: (tags: string[], latitude: number, longitude: number, from?: number, to?: number, postProps?: string[]) => Promise<PostType[]>;
29
+ delete: (postId: string, postProps?: string[]) => Promise<PostType>;
30
+ update: (post: Partial<PostType>, postProps?: string[]) => Promise<PostType>;
31
+ updatePostAdapter: (adapter: (input: unknown, options?: PostAdapterOptions) => any) => void;
32
+ updatePostAdapterOptions: (options: PostAdapterOptions) => void;
33
+ }
34
+ /**
35
+ * Factory function to create PostActions with enhanced adapter injection capabilities.
36
+ * Custom adapters are merged with default behavior, allowing partial overrides.
37
+ *
38
+ * @example
39
+ * // Basic usage with default adapters
40
+ * const postActions = createPostActions(flux);
41
+ *
42
+ * @example
43
+ * // Custom adapter that extends default behavior
44
+ * const customPostAdapter = (input: unknown, options?: PostAdapterOptions) => {
45
+ * // input is already validated by default adapter
46
+ * if (input.content && input.content.length > 1000) {
47
+ * throw new Error('Post content too long');
48
+ * }
49
+ * return input;
50
+ * };
51
+ *
52
+ * const postActions = createPostActions(flux, {
53
+ * postAdapter: customPostAdapter
54
+ * });
55
+ */
56
+ export declare const createPostActions: (flux: FluxFramework, options?: PostActionsOptions) => PostActions;
@@ -0,0 +1,2 @@
1
+ import{parseId as b,parseNum as d}from"@nlabs/utils";import{validatePostInput as S}from"../../adapters/postAdapter/postAdapter";import{POST_CONSTANTS as r}from"../../stores/postStore";import{appMutation as I,appQuery as m}from"../../utils/api";import{createBaseActions as R}from"../../utils/baseActionFactory";const y="posts",h=(t,T)=>S(t),V=(t,T)=>{const l=R(t,h,{adapter:T?.postAdapter,adapterOptions:T?.postAdapterOptions});return{add:async(p,n=[])=>{try{const s={post:{type:"PostInput!",value:l.validator(p)}},o=a=>{const{posts:{addPost:e={}}}=a;return t.dispatch({post:e,type:r.ADD_ITEM_SUCCESS})},{post:i}=await I(t,"addPost",y,s,["postId",...n],{onSuccess:o});return i}catch(s){throw t.dispatch({error:s,type:r.ADD_ITEM_ERROR}),s}},itemById:async(p,n=[])=>{try{const s={postId:{type:"ID!",value:b(p)}},o=a=>{const{posts:{getPost:e={}}}=a;return t.dispatch({post:e,type:r.GET_ITEM_SUCCESS})},{post:i}=await m(t,"post",y,s,["added","content","isSaved","modified","name","postId","tags {name, tagId}","user {birthdate, imageUrl, thumbUrl, userId, username}","viewCount",...n],{onSuccess:o});return i}catch(s){throw t.dispatch({error:s,type:r.GET_ITEM_ERROR}),s}},listByLatest:async(p=0,n=0,s=[])=>{try{const o={from:{type:"Int",value:d(p)},to:{type:"Int",value:d(n)}},i=e=>{const{posts:{getPostsByLatest:c=[]}}=e;return t.dispatch({list:c,type:r.GET_LIST_SUCCESS})},{postsByLatest:a}=await m(t,"postsByLatest",y,o,["added","content","isSaved","modified","name","postId","tags {name, tagId}","user {birthdate, imageUrl, thumbUrl, userId, username}","viewCount",...s],{onSuccess:i});return a}catch(o){throw t.dispatch({error:o,type:r.GET_LIST_ERROR}),o}},listByLocation:async(p,n,s=0,o=10,i=[])=>{try{const a={from:{type:"Int",value:d(s)},latitude:{type:"Float",value:d(p)},longitude:{type:"Float",value:d(n)},to:{type:"Int",value:d(o)}},e=u=>{const{posts:{getPostsByLocation:P=[]}}=u;return t.dispatch({list:P,type:r.GET_LIST_SUCCESS})},{getPostsByLocation:c}=await m(t,"postsByLocation",y,a,["added","content","isSaved","modified","name","postId","tags {name, tagId}","user {birthdate, imageUrl, thumbUrl, userId, username}","viewCount",...i],{onSuccess:e});return c}catch(a){throw t.dispatch({error:a,type:r.GET_LIST_ERROR}),a}},listByReactions:async(p,n,s,o=0,i=10,a=[])=>{try{const e={from:{type:"Int",value:d(o)},latitude:{type:"Float",value:d(n)},longitude:{type:"Float",value:d(s)},reactions:{type:"ReactionInput!",value:p},to:{type:"Int",value:d(i)}},c=P=>{const{posts:{getPostsByReactions:g=[]}}=P;return t.dispatch({list:g,type:r.GET_LIST_SUCCESS})},{getPostsByReactions:u}=await m(t,"postsByReactions",y,e,["added","content","isSaved","modified","name","postId","tags {name, tagId}","user {birthdate, imageUrl, thumbUrl, userId, username}","viewCount",...a],{onSuccess:c});return u}catch(e){throw t.dispatch({error:e,type:r.GET_LIST_ERROR}),e}},listByTags:async(p,n,s,o=0,i=10,a=[])=>{try{const e={from:{type:"Int",value:d(o)},latitude:{type:"Float",value:d(n)},longitude:{type:"Float",value:d(s)},tags:{type:"TagInput!",value:p},to:{type:"Int",value:d(i)}},c=P=>{const{posts:{getPostsByTags:g=[]}}=P;return t.dispatch({list:g,type:r.GET_LIST_SUCCESS})},{getPostsByTags:u}=await m(t,"postsByTags",y,e,["added","content","isSaved","modified","name","postId","tags {name, tagId}","user {birthdate, imageUrl, thumbUrl, userId, username}","viewCount",...a],{onSuccess:c});return u}catch(e){throw t.dispatch({error:e,type:r.GET_LIST_ERROR}),e}},delete:async(p,n=[])=>{try{const s={postId:{type:"ID!",value:b(p)}},o=a=>{const{posts:{deletePost:e={}}}=a;return t.dispatch({post:e,type:r.REMOVE_ITEM_SUCCESS})},{post:i}=await I(t,"deletePost",y,s,["postId",...n],{onSuccess:o});return i}catch(s){throw t.dispatch({error:s,type:r.REMOVE_ITEM_ERROR}),s}},update:async(p,n=[])=>{try{const s={post:{type:"PostUpdateInput!",value:l.validator(p)}},o=a=>{const{posts:{updatePost:e={}}}=a;return t.dispatch({post:e,type:r.UPDATE_ITEM_SUCCESS})},{post:i}=await I(t,"updatePost",y,s,["postId",...n],{onSuccess:o});return i}catch(s){throw t.dispatch({error:s,type:r.UPDATE_ITEM_ERROR}),s}},updatePostAdapter:l.updateAdapter,updatePostAdapterOptions:l.updateOptions}};export{V as createPostActions};
2
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FjdGlvbnMvcG9zdEFjdGlvbnMvcG9zdEFjdGlvbnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge3BhcnNlSWQsIHBhcnNlTnVtfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuXG5pbXBvcnQge3ZhbGlkYXRlUG9zdElucHV0fSBmcm9tICcuLi8uLi9hZGFwdGVycy9wb3N0QWRhcHRlci9wb3N0QWRhcHRlcic7XG5pbXBvcnQge1BPU1RfQ09OU1RBTlRTfSBmcm9tICcuLi8uLi9zdG9yZXMvcG9zdFN0b3JlJztcbmltcG9ydCB7YXBwTXV0YXRpb24sIGFwcFF1ZXJ5fSBmcm9tICcuLi8uLi91dGlscy9hcGknO1xuaW1wb3J0IHtjcmVhdGVCYXNlQWN0aW9uc30gZnJvbSAnLi4vLi4vdXRpbHMvYmFzZUFjdGlvbkZhY3RvcnknO1xuXG5pbXBvcnQgdHlwZSB7Rmx1eEZyYW1ld29ya30gZnJvbSAnQG5sYWJzL2Fya2hhbWpzJztcbmltcG9ydCB0eXBlIHtQb3N0VHlwZX0gZnJvbSAnLi4vLi4vYWRhcHRlcnMvcG9zdEFkYXB0ZXIvcG9zdEFkYXB0ZXInO1xuaW1wb3J0IHR5cGUge1JlYWt0b3JEYkNvbGxlY3Rpb259IGZyb20gJy4uLy4uL3V0aWxzL2FwaSc7XG5pbXBvcnQgdHlwZSB7QmFzZUFkYXB0ZXJPcHRpb25zfSBmcm9tICcuLi8uLi91dGlscy92YWxpZGF0b3JGYWN0b3J5JztcblxuY29uc3QgREFUQV9UWVBFOiBSZWFrdG9yRGJDb2xsZWN0aW9uID0gJ3Bvc3RzJztcblxuZXhwb3J0IGludGVyZmFjZSBQb3N0QWRhcHRlck9wdGlvbnMgZXh0ZW5kcyBCYXNlQWRhcHRlck9wdGlvbnMge1xuICAvLyBQb3N0LXNwZWNpZmljIG9wdGlvbnMgY2FuIGJlIGFkZGVkIGhlcmVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQb3N0QWN0aW9uc09wdGlvbnMge1xuICBwb3N0QWRhcHRlcj86IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFBvc3RBZGFwdGVyT3B0aW9ucykgPT4gYW55O1xuICBwb3N0QWRhcHRlck9wdGlvbnM/OiBQb3N0QWRhcHRlck9wdGlvbnM7XG59XG5cbmV4cG9ydCB0eXBlIFBvc3RBcGlSZXN1bHRzVHlwZSA9IHtcbiAgcG9zdHM6IHtcbiAgICBhZGRQb3N0OiBQb3N0VHlwZTtcbiAgICBnZXRQb3N0OiBQb3N0VHlwZTtcbiAgICBnZXRQb3N0c0J5TGF0ZXN0OiBQb3N0VHlwZVtdO1xuICAgIGdldFBvc3RzQnlMb2NhdGlvbjogUG9zdFR5cGVbXTtcbiAgICBnZXRQb3N0c0J5UmVhY3Rpb25zOiBQb3N0VHlwZVtdO1xuICAgIGdldFBvc3RzQnlUYWdzOiBQb3N0VHlwZVtdO1xuICAgIGRlbGV0ZVBvc3Q6IFBvc3RUeXBlO1xuICAgIHVwZGF0ZVBvc3Q6IFBvc3RUeXBlO1xuICB9O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBQb3N0QWN0aW9ucyB7XG4gIGFkZDogKHBvc3REYXRhOiBQYXJ0aWFsPFBvc3RUeXBlPiwgcG9zdFByb3BzPzogc3RyaW5nW10pID0+IFByb21pc2U8UG9zdFR5cGU+O1xuICBpdGVtQnlJZDogKHBvc3RJZDogc3RyaW5nLCBwb3N0UHJvcHM/OiBzdHJpbmdbXSkgPT4gUHJvbWlzZTxQb3N0VHlwZT47XG4gIGxpc3RCeUxhdGVzdDogKGZyb20/OiBudW1iZXIsIHRvPzogbnVtYmVyLCBwb3N0UHJvcHM/OiBzdHJpbmdbXSkgPT4gUHJvbWlzZTxQb3N0VHlwZVtdPjtcbiAgbGlzdEJ5TG9jYXRpb246IChsYXRpdHVkZTogbnVtYmVyLCBsb25naXR1ZGU6IG51bWJlciwgZnJvbT86IG51bWJlciwgdG8/OiBudW1iZXIsIHBvc3RQcm9wcz86IHN0cmluZ1tdKSA9PiBQcm9taXNlPFBvc3RUeXBlW10+O1xuICBsaXN0QnlSZWFjdGlvbnM6IChyZWFjdGlvbk5hbWVzOiBzdHJpbmdbXSwgbGF0aXR1ZGU6IG51bWJlciwgbG9uZ2l0dWRlOiBudW1iZXIsIGZyb20/OiBudW1iZXIsIHRvPzogbnVtYmVyLCBwb3N0UHJvcHM/OiBzdHJpbmdbXSkgPT4gUHJvbWlzZTxQb3N0VHlwZVtdPjtcbiAgbGlzdEJ5VGFnczogKHRhZ3M6IHN0cmluZ1tdLCBsYXRpdHVkZTogbnVtYmVyLCBsb25naXR1ZGU6IG51bWJlciwgZnJvbT86IG51bWJlciwgdG8/OiBudW1iZXIsIHBvc3RQcm9wcz86IHN0cmluZ1tdKSA9PiBQcm9taXNlPFBvc3RUeXBlW10+O1xuICBkZWxldGU6IChwb3N0SWQ6IHN0cmluZywgcG9zdFByb3BzPzogc3RyaW5nW10pID0+IFByb21pc2U8UG9zdFR5cGU+O1xuICB1cGRhdGU6IChwb3N0OiBQYXJ0aWFsPFBvc3RUeXBlPiwgcG9zdFByb3BzPzogc3RyaW5nW10pID0+IFByb21pc2U8UG9zdFR5cGU+O1xuICB1cGRhdGVQb3N0QWRhcHRlcjogKGFkYXB0ZXI6IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFBvc3RBZGFwdGVyT3B0aW9ucykgPT4gYW55KSA9PiB2b2lkO1xuICB1cGRhdGVQb3N0QWRhcHRlck9wdGlvbnM6IChvcHRpb25zOiBQb3N0QWRhcHRlck9wdGlvbnMpID0+IHZvaWQ7XG59XG5cbi8vIERlZmF1bHQgdmFsaWRhdGlvbiBmdW5jdGlvblxuY29uc3QgZGVmYXVsdFBvc3RWYWxpZGF0b3IgPSAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBQb3N0QWRhcHRlck9wdGlvbnMpID0+IHZhbGlkYXRlUG9zdElucHV0KGlucHV0KTtcblxuLyoqXG4gKiBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBQb3N0QWN0aW9ucyB3aXRoIGVuaGFuY2VkIGFkYXB0ZXIgaW5qZWN0aW9uIGNhcGFiaWxpdGllcy5cbiAqIEN1c3RvbSBhZGFwdGVycyBhcmUgbWVyZ2VkIHdpdGggZGVmYXVsdCBiZWhhdmlvciwgYWxsb3dpbmcgcGFydGlhbCBvdmVycmlkZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEJhc2ljIHVzYWdlIHdpdGggZGVmYXVsdCBhZGFwdGVyc1xuICogY29uc3QgcG9zdEFjdGlvbnMgPSBjcmVhdGVQb3N0QWN0aW9ucyhmbHV4KTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ3VzdG9tIGFkYXB0ZXIgdGhhdCBleHRlbmRzIGRlZmF1bHQgYmVoYXZpb3JcbiAqIGNvbnN0IGN1c3RvbVBvc3RBZGFwdGVyID0gKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogUG9zdEFkYXB0ZXJPcHRpb25zKSA9PiB7XG4gKiAgIC8vIGlucHV0IGlzIGFscmVhZHkgdmFsaWRhdGVkIGJ5IGRlZmF1bHQgYWRhcHRlclxuICogICBpZiAoaW5wdXQuY29udGVudCAmJiBpbnB1dC5jb250ZW50Lmxlbmd0aCA+IDEwMDApIHtcbiAqICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Bvc3QgY29udGVudCB0b28gbG9uZycpO1xuICogICB9XG4gKiAgIHJldHVybiBpbnB1dDtcbiAqIH07XG4gKlxuICogY29uc3QgcG9zdEFjdGlvbnMgPSBjcmVhdGVQb3N0QWN0aW9ucyhmbHV4LCB7XG4gKiAgIHBvc3RBZGFwdGVyOiBjdXN0b21Qb3N0QWRhcHRlclxuICogfSk7XG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVQb3N0QWN0aW9ucyA9IChcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgb3B0aW9ucz86IFBvc3RBY3Rpb25zT3B0aW9uc1xuKTogUG9zdEFjdGlvbnMgPT4ge1xuICAvLyBDcmVhdGUgYmFzZSBhY3Rpb25zIGZvciBwb3N0IHZhbGlkYXRpb25cbiAgY29uc3QgcG9zdEJhc2UgPSBjcmVhdGVCYXNlQWN0aW9ucyhmbHV4LCBkZWZhdWx0UG9zdFZhbGlkYXRvciwge1xuICAgIGFkYXB0ZXI6IG9wdGlvbnM/LnBvc3RBZGFwdGVyLFxuICAgIGFkYXB0ZXJPcHRpb25zOiBvcHRpb25zPy5wb3N0QWRhcHRlck9wdGlvbnNcbiAgfSk7XG5cbiAgLy8gQWN0aW9uIGltcGxlbWVudGF0aW9uc1xuICBjb25zdCBhZGQgPSBhc3luYyAocG9zdERhdGE6IFBhcnRpYWw8UG9zdFR5cGU+LCBwb3N0UHJvcHM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPFBvc3RUeXBlPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICBwb3N0OiB7XG4gICAgICAgICAgdHlwZTogJ1Bvc3RJbnB1dCEnLFxuICAgICAgICAgIHZhbHVlOiBwb3N0QmFzZS52YWxpZGF0b3IocG9zdERhdGEpXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBQb3N0QXBpUmVzdWx0c1R5cGUpID0+IHtcbiAgICAgICAgY29uc3Qge3Bvc3RzOiB7YWRkUG9zdCA9IHt9fX0gPSBkYXRhO1xuICAgICAgICByZXR1cm4gZmx1eC5kaXNwYXRjaCh7cG9zdDogYWRkUG9zdCwgdHlwZTogUE9TVF9DT05TVEFOVFMuQUREX0lURU1fU1VDQ0VTU30pO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qge3Bvc3Q6IGFkZGVkUG9zdH0gPSBhd2FpdCBhcHBNdXRhdGlvbihmbHV4LCAnYWRkUG9zdCcsIERBVEFfVFlQRSwgcXVlcnlWYXJpYWJsZXMsIFsncG9zdElkJywgLi4ucG9zdFByb3BzXSwge29uU3VjY2Vzc30pO1xuICAgICAgcmV0dXJuIGFkZGVkUG9zdCBhcyBQb3N0VHlwZTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogUE9TVF9DT05TVEFOVFMuQUREX0lURU1fRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBpdGVtQnlJZCA9IGFzeW5jIChwb3N0SWQ6IHN0cmluZywgcG9zdFByb3BzOiBzdHJpbmdbXSA9IFtdKTogUHJvbWlzZTxQb3N0VHlwZT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgcG9zdElkOiB7XG4gICAgICAgICAgdHlwZTogJ0lEIScsXG4gICAgICAgICAgdmFsdWU6IHBhcnNlSWQocG9zdElkKVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSAoZGF0YTogUG9zdEFwaVJlc3VsdHNUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IHtwb3N0czoge2dldFBvc3Q6IHBvc3QgPSB7fX19ID0gZGF0YTtcbiAgICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe3Bvc3QsIHR5cGU6IFBPU1RfQ09OU1RBTlRTLkdFVF9JVEVNX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHtwb3N0OiBwb3N0UmVzdWx0fSA9IGF3YWl0IGFwcFF1ZXJ5KFxuICAgICAgICBmbHV4LFxuICAgICAgICAncG9zdCcsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIFtcbiAgICAgICAgICAnYWRkZWQnLFxuICAgICAgICAgICdjb250ZW50JyxcbiAgICAgICAgICAnaXNTYXZlZCcsXG4gICAgICAgICAgJ21vZGlmaWVkJyxcbiAgICAgICAgICAnbmFtZScsXG4gICAgICAgICAgJ3Bvc3RJZCcsXG4gICAgICAgICAgJ3RhZ3Mge25hbWUsIHRhZ0lkfScsXG4gICAgICAgICAgJ3VzZXIge2JpcnRoZGF0ZSwgaW1hZ2VVcmwsIHRodW1iVXJsLCB1c2VySWQsIHVzZXJuYW1lfScsXG4gICAgICAgICAgJ3ZpZXdDb3VudCcsXG4gICAgICAgICAgLi4ucG9zdFByb3BzXG4gICAgICAgIF0sXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuICAgICAgcmV0dXJuIHBvc3RSZXN1bHQgYXMgUG9zdFR5cGU7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IFBPU1RfQ09OU1RBTlRTLkdFVF9JVEVNX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgbGlzdEJ5TGF0ZXN0ID0gYXN5bmMgKFxuICAgIGZyb206IG51bWJlciA9IDAsXG4gICAgdG86IG51bWJlciA9IDAsXG4gICAgcG9zdFByb3BzOiBzdHJpbmdbXSA9IFtdXG4gICk6IFByb21pc2U8UG9zdFR5cGVbXT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgZnJvbToge1xuICAgICAgICAgIHR5cGU6ICdJbnQnLFxuICAgICAgICAgIHZhbHVlOiBwYXJzZU51bShmcm9tKVxuICAgICAgICB9LFxuICAgICAgICB0bzoge1xuICAgICAgICAgIHR5cGU6ICdJbnQnLFxuICAgICAgICAgIHZhbHVlOiBwYXJzZU51bSh0bylcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gKGRhdGE6IFBvc3RBcGlSZXN1bHRzVHlwZSkgPT4ge1xuICAgICAgICBjb25zdCB7cG9zdHM6IHtnZXRQb3N0c0J5TGF0ZXN0OiBwb3N0c0J5TGF0ZXN0ID0gW119fSA9IGRhdGE7XG4gICAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtcbiAgICAgICAgICBsaXN0OiBwb3N0c0J5TGF0ZXN0LFxuICAgICAgICAgIHR5cGU6IFBPU1RfQ09OU1RBTlRTLkdFVF9MSVNUX1NVQ0NFU1NcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7cG9zdHNCeUxhdGVzdDogbGlzdH0gPSBhd2FpdCBhcHBRdWVyeShcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ3Bvc3RzQnlMYXRlc3QnLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbXG4gICAgICAgICAgJ2FkZGVkJyxcbiAgICAgICAgICAnY29udGVudCcsXG4gICAgICAgICAgJ2lzU2F2ZWQnLFxuICAgICAgICAgICdtb2RpZmllZCcsXG4gICAgICAgICAgJ25hbWUnLFxuICAgICAgICAgICdwb3N0SWQnLFxuICAgICAgICAgICd0YWdzIHtuYW1lLCB0YWdJZH0nLFxuICAgICAgICAgICd1c2VyIHtiaXJ0aGRhdGUsIGltYWdlVXJsLCB0aHVtYlVybCwgdXNlcklkLCB1c2VybmFtZX0nLFxuICAgICAgICAgICd2aWV3Q291bnQnLFxuICAgICAgICAgIC4uLnBvc3RQcm9wc1xuICAgICAgICBdLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcbiAgICAgIHJldHVybiBsaXN0IGFzIFBvc3RUeXBlW107XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IFBPU1RfQ09OU1RBTlRTLkdFVF9MSVNUX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgbGlzdEJ5TG9jYXRpb24gPSBhc3luYyAoXG4gICAgbGF0aXR1ZGU6IG51bWJlcixcbiAgICBsb25naXR1ZGU6IG51bWJlcixcbiAgICBmcm9tOiBudW1iZXIgPSAwLFxuICAgIHRvOiBudW1iZXIgPSAxMCxcbiAgICBwb3N0UHJvcHM6IHN0cmluZ1tdID0gW11cbiAgKTogUHJvbWlzZTxQb3N0VHlwZVtdPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICBmcm9tOiB7XG4gICAgICAgICAgdHlwZTogJ0ludCcsXG4gICAgICAgICAgdmFsdWU6IHBhcnNlTnVtKGZyb20pXG4gICAgICAgIH0sXG4gICAgICAgIGxhdGl0dWRlOiB7XG4gICAgICAgICAgdHlwZTogJ0Zsb2F0JyxcbiAgICAgICAgICB2YWx1ZTogcGFyc2VOdW0obGF0aXR1ZGUpXG4gICAgICAgIH0sXG4gICAgICAgIGxvbmdpdHVkZToge1xuICAgICAgICAgIHR5cGU6ICdGbG9hdCcsXG4gICAgICAgICAgdmFsdWU6IHBhcnNlTnVtKGxvbmdpdHVkZSlcbiAgICAgICAgfSxcbiAgICAgICAgdG86IHtcbiAgICAgICAgICB0eXBlOiAnSW50JyxcbiAgICAgICAgICB2YWx1ZTogcGFyc2VOdW0odG8pXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBQb3N0QXBpUmVzdWx0c1R5cGUpID0+IHtcbiAgICAgICAgY29uc3Qge3Bvc3RzOiB7Z2V0UG9zdHNCeUxvY2F0aW9uOiBwb3N0c0J5TG9jYXRpb24gPSBbXX19ID0gZGF0YTtcbiAgICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe1xuICAgICAgICAgIGxpc3Q6IHBvc3RzQnlMb2NhdGlvbixcbiAgICAgICAgICB0eXBlOiBQT1NUX0NPTlNUQU5UUy5HRVRfTElTVF9TVUNDRVNTXG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qge2dldFBvc3RzQnlMb2NhdGlvbjogbGlzdH0gPSBhd2FpdCBhcHBRdWVyeShcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ3Bvc3RzQnlMb2NhdGlvbicsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIFtcbiAgICAgICAgICAnYWRkZWQnLFxuICAgICAgICAgICdjb250ZW50JyxcbiAgICAgICAgICAnaXNTYXZlZCcsXG4gICAgICAgICAgJ21vZGlmaWVkJyxcbiAgICAgICAgICAnbmFtZScsXG4gICAgICAgICAgJ3Bvc3RJZCcsXG4gICAgICAgICAgJ3RhZ3Mge25hbWUsIHRhZ0lkfScsXG4gICAgICAgICAgJ3VzZXIge2JpcnRoZGF0ZSwgaW1hZ2VVcmwsIHRodW1iVXJsLCB1c2VySWQsIHVzZXJuYW1lfScsXG4gICAgICAgICAgJ3ZpZXdDb3VudCcsXG4gICAgICAgICAgLi4ucG9zdFByb3BzXG4gICAgICAgIF0sXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuICAgICAgcmV0dXJuIGxpc3QgYXMgUG9zdFR5cGVbXTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogUE9TVF9DT05TVEFOVFMuR0VUX0xJU1RfRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBsaXN0QnlSZWFjdGlvbnMgPSBhc3luYyAoXG4gICAgcmVhY3Rpb25OYW1lczogc3RyaW5nW10sXG4gICAgbGF0aXR1ZGU6IG51bWJlcixcbiAgICBsb25naXR1ZGU6IG51bWJlcixcbiAgICBmcm9tOiBudW1iZXIgPSAwLFxuICAgIHRvOiBudW1iZXIgPSAxMCxcbiAgICBwb3N0UHJvcHM6IHN0cmluZ1tdID0gW11cbiAgKTogUHJvbWlzZTxQb3N0VHlwZVtdPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICBmcm9tOiB7XG4gICAgICAgICAgdHlwZTogJ0ludCcsXG4gICAgICAgICAgdmFsdWU6IHBhcnNlTnVtKGZyb20pXG4gICAgICAgIH0sXG4gICAgICAgIGxhdGl0dWRlOiB7XG4gICAgICAgICAgdHlwZTogJ0Zsb2F0JyxcbiAgICAgICAgICB2YWx1ZTogcGFyc2VOdW0obGF0aXR1ZGUpXG4gICAgICAgIH0sXG4gICAgICAgIGxvbmdpdHVkZToge1xuICAgICAgICAgIHR5cGU6ICdGbG9hdCcsXG4gICAgICAgICAgdmFsdWU6IHBhcnNlTnVtKGxvbmdpdHVkZSlcbiAgICAgICAgfSxcbiAgICAgICAgcmVhY3Rpb25zOiB7XG4gICAgICAgICAgdHlwZTogJ1JlYWN0aW9uSW5wdXQhJyxcbiAgICAgICAgICB2YWx1ZTogcmVhY3Rpb25OYW1lc1xuICAgICAgICB9LFxuICAgICAgICB0bzoge1xuICAgICAgICAgIHR5cGU6ICdJbnQnLFxuICAgICAgICAgIHZhbHVlOiBwYXJzZU51bSh0bylcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gKGRhdGE6IFBvc3RBcGlSZXN1bHRzVHlwZSkgPT4ge1xuICAgICAgICBjb25zdCB7cG9zdHM6IHtnZXRQb3N0c0J5UmVhY3Rpb25zOiBwb3N0c0J5UmVhY3Rpb25zID0gW119fSA9IGRhdGE7XG4gICAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtcbiAgICAgICAgICBsaXN0OiBwb3N0c0J5UmVhY3Rpb25zLFxuICAgICAgICAgIHR5cGU6IFBPU1RfQ09OU1RBTlRTLkdFVF9MSVNUX1NVQ0NFU1NcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7Z2V0UG9zdHNCeVJlYWN0aW9uczogbGlzdH0gPSBhd2FpdCBhcHBRdWVyeShcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ3Bvc3RzQnlSZWFjdGlvbnMnLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbXG4gICAgICAgICAgJ2FkZGVkJyxcbiAgICAgICAgICAnY29udGVudCcsXG4gICAgICAgICAgJ2lzU2F2ZWQnLFxuICAgICAgICAgICdtb2RpZmllZCcsXG4gICAgICAgICAgJ25hbWUnLFxuICAgICAgICAgICdwb3N0SWQnLFxuICAgICAgICAgICd0YWdzIHtuYW1lLCB0YWdJZH0nLFxuICAgICAgICAgICd1c2VyIHtiaXJ0aGRhdGUsIGltYWdlVXJsLCB0aHVtYlVybCwgdXNlcklkLCB1c2VybmFtZX0nLFxuICAgICAgICAgICd2aWV3Q291bnQnLFxuICAgICAgICAgIC4uLnBvc3RQcm9wc1xuICAgICAgICBdLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcbiAgICAgIHJldHVybiBsaXN0IGFzIFBvc3RUeXBlW107XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IFBPU1RfQ09OU1RBTlRTLkdFVF9MSVNUX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgbGlzdEJ5VGFncyA9IGFzeW5jIChcbiAgICB0YWdzOiBzdHJpbmdbXSxcbiAgICBsYXRpdHVkZTogbnVtYmVyLFxuICAgIGxvbmdpdHVkZTogbnVtYmVyLFxuICAgIGZyb206IG51bWJlciA9IDAsXG4gICAgdG86IG51bWJlciA9IDEwLFxuICAgIHBvc3RQcm9wczogc3RyaW5nW10gPSBbXVxuICApOiBQcm9taXNlPFBvc3RUeXBlW10+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIGZyb206IHtcbiAgICAgICAgICB0eXBlOiAnSW50JyxcbiAgICAgICAgICB2YWx1ZTogcGFyc2VOdW0oZnJvbSlcbiAgICAgICAgfSxcbiAgICAgICAgbGF0aXR1ZGU6IHtcbiAgICAgICAgICB0eXBlOiAnRmxvYXQnLFxuICAgICAgICAgIHZhbHVlOiBwYXJzZU51bShsYXRpdHVkZSlcbiAgICAgICAgfSxcbiAgICAgICAgbG9uZ2l0dWRlOiB7XG4gICAgICAgICAgdHlwZTogJ0Zsb2F0JyxcbiAgICAgICAgICB2YWx1ZTogcGFyc2VOdW0obG9uZ2l0dWRlKVxuICAgICAgICB9LFxuICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgdHlwZTogJ1RhZ0lucHV0IScsXG4gICAgICAgICAgdmFsdWU6IHRhZ3NcbiAgICAgICAgfSxcbiAgICAgICAgdG86IHtcbiAgICAgICAgICB0eXBlOiAnSW50JyxcbiAgICAgICAgICB2YWx1ZTogcGFyc2VOdW0odG8pXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBQb3N0QXBpUmVzdWx0c1R5cGUpID0+IHtcbiAgICAgICAgY29uc3Qge3Bvc3RzOiB7Z2V0UG9zdHNCeVRhZ3M6IHBvc3RzQnlUYWdzID0gW119fSA9IGRhdGE7XG4gICAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtcbiAgICAgICAgICBsaXN0OiBwb3N0c0J5VGFncyxcbiAgICAgICAgICB0eXBlOiBQT1NUX0NPTlNUQU5UUy5HRVRfTElTVF9TVUNDRVNTXG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qge2dldFBvc3RzQnlUYWdzOiBsaXN0fSA9IGF3YWl0IGFwcFF1ZXJ5KFxuICAgICAgICBmbHV4LFxuICAgICAgICAncG9zdHNCeVRhZ3MnLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbXG4gICAgICAgICAgJ2FkZGVkJyxcbiAgICAgICAgICAnY29udGVudCcsXG4gICAgICAgICAgJ2lzU2F2ZWQnLFxuICAgICAgICAgICdtb2RpZmllZCcsXG4gICAgICAgICAgJ25hbWUnLFxuICAgICAgICAgICdwb3N0SWQnLFxuICAgICAgICAgICd0YWdzIHtuYW1lLCB0YWdJZH0nLFxuICAgICAgICAgICd1c2VyIHtiaXJ0aGRhdGUsIGltYWdlVXJsLCB0aHVtYlVybCwgdXNlcklkLCB1c2VybmFtZX0nLFxuICAgICAgICAgICd2aWV3Q291bnQnLFxuICAgICAgICAgIC4uLnBvc3RQcm9wc1xuICAgICAgICBdLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcbiAgICAgIHJldHVybiBsaXN0IGFzIFBvc3RUeXBlW107XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IFBPU1RfQ09OU1RBTlRTLkdFVF9MSVNUX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZGVsZXRlUG9zdCA9IGFzeW5jIChwb3N0SWQ6IHN0cmluZywgcG9zdFByb3BzOiBzdHJpbmdbXSA9IFtdKTogUHJvbWlzZTxQb3N0VHlwZT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgcG9zdElkOiB7XG4gICAgICAgICAgdHlwZTogJ0lEIScsXG4gICAgICAgICAgdmFsdWU6IHBhcnNlSWQocG9zdElkKVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSAoZGF0YTogUG9zdEFwaVJlc3VsdHNUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IHtwb3N0czoge2RlbGV0ZVBvc3QgPSB7fX19ID0gZGF0YTtcbiAgICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe3Bvc3Q6IGRlbGV0ZVBvc3QsIHR5cGU6IFBPU1RfQ09OU1RBTlRTLlJFTU9WRV9JVEVNX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHtwb3N0OiBkZWxldGVkUG9zdH0gPSBhd2FpdCBhcHBNdXRhdGlvbihmbHV4LCAnZGVsZXRlUG9zdCcsIERBVEFfVFlQRSwgcXVlcnlWYXJpYWJsZXMsIFsncG9zdElkJywgLi4ucG9zdFByb3BzXSwge29uU3VjY2Vzc30pO1xuICAgICAgcmV0dXJuIGRlbGV0ZWRQb3N0IGFzIFBvc3RUeXBlO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBQT1NUX0NPTlNUQU5UUy5SRU1PVkVfSVRFTV9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZSA9IGFzeW5jIChwb3N0OiBQYXJ0aWFsPFBvc3RUeXBlPiwgcG9zdFByb3BzOiBzdHJpbmdbXSA9IFtdKTogUHJvbWlzZTxQb3N0VHlwZT4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgcG9zdDoge1xuICAgICAgICAgIHR5cGU6ICdQb3N0VXBkYXRlSW5wdXQhJyxcbiAgICAgICAgICB2YWx1ZTogcG9zdEJhc2UudmFsaWRhdG9yKHBvc3QpXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBQb3N0QXBpUmVzdWx0c1R5cGUpID0+IHtcbiAgICAgICAgY29uc3Qge3Bvc3RzOiB7dXBkYXRlUG9zdCA9IHt9fX0gPSBkYXRhO1xuICAgICAgICByZXR1cm4gZmx1eC5kaXNwYXRjaCh7cG9zdDogdXBkYXRlUG9zdCwgdHlwZTogUE9TVF9DT05TVEFOVFMuVVBEQVRFX0lURU1fU1VDQ0VTU30pO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qge3Bvc3Q6IHVwZGF0ZWRQb3N0fSA9IGF3YWl0IGFwcE11dGF0aW9uKGZsdXgsICd1cGRhdGVQb3N0JywgREFUQV9UWVBFLCBxdWVyeVZhcmlhYmxlcywgWydwb3N0SWQnLCAuLi5wb3N0UHJvcHNdLCB7b25TdWNjZXNzfSk7XG4gICAgICByZXR1cm4gdXBkYXRlZFBvc3QgYXMgUG9zdFR5cGU7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IFBPU1RfQ09OU1RBTlRTLlVQREFURV9JVEVNX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH07XG5cbiAgLy8gUmV0dXJuIHRoZSBhY3Rpb25zIG9iamVjdFxuICByZXR1cm4ge1xuICAgIGFkZCxcbiAgICBpdGVtQnlJZCxcbiAgICBsaXN0QnlMYXRlc3QsXG4gICAgbGlzdEJ5TG9jYXRpb24sXG4gICAgbGlzdEJ5UmVhY3Rpb25zLFxuICAgIGxpc3RCeVRhZ3MsXG4gICAgZGVsZXRlOiBkZWxldGVQb3N0LFxuICAgIHVwZGF0ZSxcbiAgICB1cGRhdGVQb3N0QWRhcHRlcjogcG9zdEJhc2UudXBkYXRlQWRhcHRlcixcbiAgICB1cGRhdGVQb3N0QWRhcHRlck9wdGlvbnM6IHBvc3RCYXNlLnVwZGF0ZU9wdGlvbnNcbiAgfTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiQUFJQSxPQUFRLFdBQUFBLEVBQVMsWUFBQUMsTUFBZSxlQUVoQyxPQUFRLHFCQUFBQyxNQUF3Qix5Q0FDaEMsT0FBUSxrQkFBQUMsTUFBcUIseUJBQzdCLE9BQVEsZUFBQUMsRUFBYSxZQUFB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QU1sQixFQUFlLGlCQUFpQixDQUFDLEVBQ3ZEa0IsQ0FDUixDQUNGLEVBaUNFLE9BL0JhLE1BQU9FLEVBQXlCUixFQUFzQixDQUFDLElBQXlCLENBQzdGLEdBQUksQ0FDRixNQUFNQyxFQUFpQixDQUNyQixLQUFNLENBQ0osS0FBTSxtQkFDTixNQUFPSCxFQUFTLFVBQVVVLENBQUksQ0FDaEMsQ0FDRixFQUVNTixFQUFhQyxHQUE2QixDQUM5QyxLQUFNLENBQUMsTUFBTyxDQUFDLFdBQUFvQixFQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUlwQixFQUNuQyxPQUFPTixFQUFLLFNBQVMsQ0FBQyxLQUFNMEIsRUFBWSxLQUFNbkMsRUFBZSxtQkFBbUIsQ0FBQyxDQUNuRixFQUVNLENBQUMsS0FBTW9DLENBQVcsRUFBSSxNQUFNbkMsRUFBWVEsRUFBTSxhQUFjTCxFQUFXUyxFQUFnQixDQUFDLFNBQVUsR0FBR0QsQ0FBUyxFQUFHLENBQUMsVUFBQUUsQ0FBUyxDQUFDLEVBQ2xJLE9BQU9zQixDQUNULE9BQVFsQixFQUFPLENBQ2IsTUFBQVQsRUFBSyxTQUFTLENBQUMsTUFBQVMsRUFBTyxLQUFNbEIsRUFBZSxpQkFBaUIsQ0FBQyxFQUN2RGtCLENBQ1IsQ0FDRixFQVlFLGtCQUFtQlIsRUFBUyxjQUM1Qix5QkFBMEJBLEVBQVMsYUFDckMsQ0FDRiIsCiAgIm5hbWVzIjogWyJwYXJzZUlkIiwgInBhcnNlTnVtIiwgInZhbGlkYXRlUG9zdElucHV0IiwgIlBPU1RfQ09OU1RBTlRTIiwgImFwcE11dGF0aW9uIiwgImFwcFF1ZXJ5IiwgImNyZWF0ZUJhc2VBY3Rpb25zIiwgIkRBVEFfVFlQRSIsICJkZWZhdWx0UG9zdFZhbGlkYXRvciIsICJpbnB1dCIsICJvcHRpb25zIiwgImNyZWF0ZVBvc3RBY3Rpb25zIiwgImZsdXgiLCAicG9zdEJhc2UiLCAicG9zdERhdGEiLCAicG9zdFByb3BzIiwgInF1ZXJ5VmFyaWFibGVzIiwgIm9uU3VjY2VzcyIsICJkYXRhIiwgImFkZFBvc3QiLCAiYWRkZWRQb3N0IiwgImVycm9yIiwgInBvc3RJZCIsICJwb3N0IiwgInBvc3RSZXN1bHQiLCAiZnJvbSIsICJ0byIsICJwb3N0c0J5TGF0ZXN0IiwgImxpc3QiLCAibGF0aXR1ZGUiLCAibG9uZ2l0dWRlIiwgInBvc3RzQnlMb2NhdGlvbiIsICJyZWFjdGlvbk5hbWVzIiwgInBvc3RzQnlSZWFjdGlvbnMiLCAidGFncyIsICJwb3N0c0J5VGFncyIsICJkZWxldGVQb3N0IiwgImRlbGV0ZWRQb3N0IiwgInVwZGF0ZVBvc3QiLCAidXBkYXRlZFBvc3QiXQp9Cg==
@@ -0,0 +1,50 @@
1
+ import type { FluxFramework } from '@nlabs/arkhamjs';
2
+ import type { ProfileType } from '../../adapters/profileAdapter/profileAdapter';
3
+ export interface ProfileAdapterOptions {
4
+ readonly strict?: boolean;
5
+ readonly allowPartial?: boolean;
6
+ readonly environment?: 'development' | 'production' | 'test';
7
+ readonly customValidation?: (input: unknown) => unknown;
8
+ }
9
+ export interface ProfileActionsOptions {
10
+ readonly profileAdapter?: (input: unknown, options?: ProfileAdapterOptions) => any;
11
+ readonly profileAdapterOptions?: ProfileAdapterOptions;
12
+ }
13
+ export interface ProfileApiResultsType {
14
+ readonly profiles: {
15
+ readonly addProfile?: ProfileType;
16
+ readonly deleteProfile?: ProfileType;
17
+ readonly getProfile?: ProfileType;
18
+ readonly getProfiles?: ProfileType[];
19
+ readonly updateProfile?: ProfileType;
20
+ };
21
+ }
22
+ export interface ProfileActions {
23
+ readonly addProfile: (profileData: Partial<ProfileType>, profileProps?: string[]) => Promise<ProfileType>;
24
+ readonly getProfile: (profileId: string, profileProps?: string[]) => Promise<ProfileType>;
25
+ readonly getProfiles: (profileIds: string[], profileProps?: string[]) => Promise<ProfileType[]>;
26
+ readonly deleteProfile: (profileId: string, profileProps?: string[]) => Promise<ProfileType>;
27
+ readonly updateProfile: (profile: Partial<ProfileType>, profileProps?: string[]) => Promise<ProfileType>;
28
+ readonly updateProfileAdapter: (adapter: (input: unknown, options?: ProfileAdapterOptions) => any) => void;
29
+ readonly updateProfileAdapterOptions: (options: ProfileAdapterOptions) => void;
30
+ }
31
+ /**
32
+ * Factory function to create ProfileActions with enhanced adapter injection capabilities.
33
+ * Custom adapters are merged with default behavior, allowing partial overrides.
34
+ *
35
+ * @example
36
+ * // Basic usage with default adapters
37
+ * const profileActions = createProfileActions(flux);
38
+ *
39
+ * @example
40
+ * // Custom adapter that extends default behavior
41
+ * const customProfileAdapter = (input: unknown, options?: ProfileAdapterOptions) => {
42
+ * // input is already validated by default adapter
43
+ * return input;
44
+ * };
45
+ *
46
+ * const profileActions = createProfileActions(flux, {
47
+ * profileAdapter: customProfileAdapter
48
+ * });
49
+ */
50
+ export declare const createProfileActions: (flux: FluxFramework, options?: ProfileActionsOptions) => ProfileActions;
@@ -0,0 +1,2 @@
1
+ import{parseId as P}from"@nlabs/utils";import{validateProfileInput as u}from"../../adapters/profileAdapter/profileAdapter";import{PROFILE_CONSTANTS as o}from"../../stores/profileStore";import{appMutation as y,appQuery as c}from"../../utils/api";import{createBaseActions as T}from"../../utils/baseActionFactory";const f="profiles",m=(r,n)=>u(r),C=(r,n)=>{const d=T(r,m,{...n?.profileAdapter&&{adapter:n.profileAdapter},...n?.profileAdapterOptions&&{adapterOptions:n.profileAdapterOptions}});return{addProfile:async(i,t=[])=>{try{const e={profile:{type:"ProfileInput!",value:d.validator(i)}},p=l=>{const{profiles:{addProfile:s={}}}=l;return r.dispatch({profile:s,type:o.ADD_ITEM_SUCCESS})},{addProfile:a}=await y(r,"addProfile",f,e,["profileId",...t],{onSuccess:p});return a}catch(e){throw r.dispatch({error:e,type:o.ADD_ITEM_ERROR}),e}},getProfile:async(i,t=[])=>{try{const e={profileId:{type:"ID!",value:P(i)}},p=l=>{const{profiles:{getProfile:s={}}}=l;return r.dispatch({profile:s,type:o.GET_ITEM_SUCCESS})},{profile:a}=await c(r,"profile",f,e,["active","gender","hasLike","hasView","images(from: 0 to: 10) { id, imageId, imageUrl, thumbUrl }","imageCount","likeCount","name","profileId","tags {name, tagId}","userId","viewCount",...t],{onSuccess:p});return a}catch(e){throw r.dispatch({error:e,type:o.GET_ITEM_ERROR}),e}},getProfiles:async(i,t=[])=>{try{const e={profileIds:{type:"[ID!]!",value:i.map(P)}},p=l=>{const{profiles:{getProfiles:s=[]}}=l;return r.dispatch({profiles:s,type:o.GET_LIST_SUCCESS})},{profiles:a}=await c(r,"profiles",f,e,["active","gender","hasLike","hasView","images(from: 0 to: 10) { id, imageId, imageUrl, thumbUrl }","imageCount","likeCount","name","profileId","tags {name, tagId}","userId","viewCount",...t],{onSuccess:p});return a}catch(e){throw r.dispatch({error:e,type:o.GET_LIST_ERROR}),e}},deleteProfile:async(i,t=[])=>{try{const e={profileId:{type:"ID!",value:P(i)}},p=l=>{const{profiles:{deleteProfile:s={}}}=l;return r.dispatch({profile:s,type:o.DELETE_ITEM_SUCCESS})},{deleteProfile:a}=await y(r,"deleteProfile",f,e,["profileId",...t],{onSuccess:p});return a}catch(e){throw r.dispatch({error:e,type:o.DELETE_ITEM_ERROR}),e}},updateProfile:async(i,t=[])=>{try{const e={profile:{type:"ProfileInput!",value:d.validator(i)}},p=l=>{const{profiles:{updateProfile:s={}}}=l;return r.dispatch({profile:s,type:o.UPDATE_ITEM_SUCCESS})},{updateProfile:a}=await y(r,"updateProfile",f,e,["profileId",...t],{onSuccess:p});return a}catch(e){throw r.dispatch({error:e,type:o.UPDATE_ITEM_ERROR}),e}},updateProfileAdapter:d.updateAdapter,updateProfileAdapterOptions:d.updateOptions}};export{C as createProfileActions};
2
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FjdGlvbnMvcHJvZmlsZUFjdGlvbnMvcHJvZmlsZUFjdGlvbnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDIzLVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgeyBwYXJzZUlkIH0gZnJvbSAnQG5sYWJzL3V0aWxzJztcblxuaW1wb3J0IHsgdmFsaWRhdGVQcm9maWxlSW5wdXQgfSBmcm9tICcuLi8uLi9hZGFwdGVycy9wcm9maWxlQWRhcHRlci9wcm9maWxlQWRhcHRlcic7XG5pbXBvcnQgeyBQUk9GSUxFX0NPTlNUQU5UUyB9IGZyb20gJy4uLy4uL3N0b3Jlcy9wcm9maWxlU3RvcmUnO1xuaW1wb3J0IHsgYXBwTXV0YXRpb24sIGFwcFF1ZXJ5IH0gZnJvbSAnLi4vLi4vdXRpbHMvYXBpJztcbmltcG9ydCB7IGNyZWF0ZUJhc2VBY3Rpb25zIH0gZnJvbSAnLi4vLi4vdXRpbHMvYmFzZUFjdGlvbkZhY3RvcnknO1xuXG5pbXBvcnQgdHlwZSB7IEZsdXhGcmFtZXdvcmsgfSBmcm9tICdAbmxhYnMvYXJraGFtanMnO1xuaW1wb3J0IHR5cGUgeyBQcm9maWxlVHlwZSB9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL3Byb2ZpbGVBZGFwdGVyL3Byb2ZpbGVBZGFwdGVyJztcblxuLy8gRGVmaW5lIHRoZSBjb2xsZWN0aW9uIG5hbWUgZm9yIHByb2ZpbGVzXG5jb25zdCBEQVRBX1RZUEUgPSAncHJvZmlsZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb2ZpbGVBZGFwdGVyT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHN0cmljdD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGFsbG93UGFydGlhbD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGVudmlyb25tZW50PzogJ2RldmVsb3BtZW50JyB8ICdwcm9kdWN0aW9uJyB8ICd0ZXN0JztcbiAgcmVhZG9ubHkgY3VzdG9tVmFsaWRhdGlvbj86IChpbnB1dDogdW5rbm93bikgPT4gdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9maWxlQWN0aW9uc09wdGlvbnMge1xuICByZWFkb25seSBwcm9maWxlQWRhcHRlcj86IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFByb2ZpbGVBZGFwdGVyT3B0aW9ucykgPT4gYW55O1xuICByZWFkb25seSBwcm9maWxlQWRhcHRlck9wdGlvbnM/OiBQcm9maWxlQWRhcHRlck9wdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZmlsZUFwaVJlc3VsdHNUeXBlIHtcbiAgcmVhZG9ubHkgcHJvZmlsZXM6IHtcbiAgICByZWFkb25seSBhZGRQcm9maWxlPzogUHJvZmlsZVR5cGU7XG4gICAgcmVhZG9ubHkgZGVsZXRlUHJvZmlsZT86IFByb2ZpbGVUeXBlO1xuICAgIHJlYWRvbmx5IGdldFByb2ZpbGU/OiBQcm9maWxlVHlwZTtcbiAgICByZWFkb25seSBnZXRQcm9maWxlcz86IFByb2ZpbGVUeXBlW107XG4gICAgcmVhZG9ubHkgdXBkYXRlUHJvZmlsZT86IFByb2ZpbGVUeXBlO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2ZpbGVBY3Rpb25zIHtcbiAgcmVhZG9ubHkgYWRkUHJvZmlsZTogKHByb2ZpbGVEYXRhOiBQYXJ0aWFsPFByb2ZpbGVUeXBlPiwgcHJvZmlsZVByb3BzPzogc3RyaW5nW10pID0+IFByb21pc2U8UHJvZmlsZVR5cGU+O1xuICByZWFkb25seSBnZXRQcm9maWxlOiAocHJvZmlsZUlkOiBzdHJpbmcsIHByb2ZpbGVQcm9wcz86IHN0cmluZ1tdKSA9PiBQcm9taXNlPFByb2ZpbGVUeXBlPjtcbiAgcmVhZG9ubHkgZ2V0UHJvZmlsZXM6IChwcm9maWxlSWRzOiBzdHJpbmdbXSwgcHJvZmlsZVByb3BzPzogc3RyaW5nW10pID0+IFByb21pc2U8UHJvZmlsZVR5cGVbXT47XG4gIHJlYWRvbmx5IGRlbGV0ZVByb2ZpbGU6IChwcm9maWxlSWQ6IHN0cmluZywgcHJvZmlsZVByb3BzPzogc3RyaW5nW10pID0+IFByb21pc2U8UHJvZmlsZVR5cGU+O1xuICByZWFkb25seSB1cGRhdGVQcm9maWxlOiAocHJvZmlsZTogUGFydGlhbDxQcm9maWxlVHlwZT4sIHByb2ZpbGVQcm9wcz86IHN0cmluZ1tdKSA9PiBQcm9taXNlPFByb2ZpbGVUeXBlPjtcbiAgcmVhZG9ubHkgdXBkYXRlUHJvZmlsZUFkYXB0ZXI6IChhZGFwdGVyOiAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBQcm9maWxlQWRhcHRlck9wdGlvbnMpID0+IGFueSkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgdXBkYXRlUHJvZmlsZUFkYXB0ZXJPcHRpb25zOiAob3B0aW9uczogUHJvZmlsZUFkYXB0ZXJPcHRpb25zKSA9PiB2b2lkO1xufVxuXG4vLyBEZWZhdWx0IHZhbGlkYXRpb24gZnVuY3Rpb25cbmNvbnN0IGRlZmF1bHRQcm9maWxlVmFsaWRhdG9yID0gKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogUHJvZmlsZUFkYXB0ZXJPcHRpb25zKSA9PiB2YWxpZGF0ZVByb2ZpbGVJbnB1dChpbnB1dCk7XG5cbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgUHJvZmlsZUFjdGlvbnMgd2l0aCBlbmhhbmNlZCBhZGFwdGVyIGluamVjdGlvbiBjYXBhYmlsaXRpZXMuXG4gKiBDdXN0b20gYWRhcHRlcnMgYXJlIG1lcmdlZCB3aXRoIGRlZmF1bHQgYmVoYXZpb3IsIGFsbG93aW5nIHBhcnRpYWwgb3ZlcnJpZGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBCYXNpYyB1c2FnZSB3aXRoIGRlZmF1bHQgYWRhcHRlcnNcbiAqIGNvbnN0IHByb2ZpbGVBY3Rpb25zID0gY3JlYXRlUHJvZmlsZUFjdGlvbnMoZmx1eCk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEN1c3RvbSBhZGFwdGVyIHRoYXQgZXh0ZW5kcyBkZWZhdWx0IGJlaGF2aW9yXG4gKiBjb25zdCBjdXN0b21Qcm9maWxlQWRhcHRlciA9IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFByb2ZpbGVBZGFwdGVyT3B0aW9ucykgPT4ge1xuICogICAvLyBpbnB1dCBpcyBhbHJlYWR5IHZhbGlkYXRlZCBieSBkZWZhdWx0IGFkYXB0ZXJcbiAqICAgcmV0dXJuIGlucHV0O1xuICogfTtcbiAqXG4gKiBjb25zdCBwcm9maWxlQWN0aW9ucyA9IGNyZWF0ZVByb2ZpbGVBY3Rpb25zKGZsdXgsIHtcbiAqICAgcHJvZmlsZUFkYXB0ZXI6IGN1c3RvbVByb2ZpbGVBZGFwdGVyXG4gKiB9KTtcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVByb2ZpbGVBY3Rpb25zID0gKFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICBvcHRpb25zPzogUHJvZmlsZUFjdGlvbnNPcHRpb25zXG4pOiBQcm9maWxlQWN0aW9ucyA9PiB7XG4gIGNvbnN0IHByb2ZpbGVCYXNlID0gY3JlYXRlQmFzZUFjdGlvbnMoZmx1eCwgZGVmYXVsdFByb2ZpbGVWYWxpZGF0b3IsIHtcbiAgICAuLi4ob3B0aW9ucz8ucHJvZmlsZUFkYXB0ZXIgJiYge2FkYXB0ZXI6IG9wdGlvbnMucHJvZmlsZUFkYXB0ZXJ9KSxcbiAgICAuLi4ob3B0aW9ucz8ucHJvZmlsZUFkYXB0ZXJPcHRpb25zICYmIHthZGFwdGVyT3B0aW9uczogb3B0aW9ucy5wcm9maWxlQWRhcHRlck9wdGlvbnN9KVxuICB9KTtcblxuICAvLyBBY3Rpb24gaW1wbGVtZW50YXRpb25zXG4gIGNvbnN0IGFkZFByb2ZpbGUgPSBhc3luYyAocHJvZmlsZURhdGE6IFBhcnRpYWw8UHJvZmlsZVR5cGU+LCBwcm9maWxlUHJvcHM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPFByb2ZpbGVUeXBlPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICBwcm9maWxlOiB7XG4gICAgICAgICAgdHlwZTogJ1Byb2ZpbGVJbnB1dCEnLFxuICAgICAgICAgIHZhbHVlOiBwcm9maWxlQmFzZS52YWxpZGF0b3IocHJvZmlsZURhdGEpXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBQcm9maWxlQXBpUmVzdWx0c1R5cGUpID0+IHtcbiAgICAgICAgY29uc3Qge3Byb2ZpbGVzOiB7YWRkUHJvZmlsZSA9IHt9fX0gPSBkYXRhO1xuICAgICAgICByZXR1cm4gZmx1eC5kaXNwYXRjaCh7cHJvZmlsZTogYWRkUHJvZmlsZSwgdHlwZTogUFJPRklMRV9DT05TVEFOVFMuQUREX0lURU1fU1VDQ0VTU30pO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qge2FkZFByb2ZpbGV9ID0gYXdhaXQgYXBwTXV0YXRpb24oZmx1eCwgJ2FkZFByb2ZpbGUnLCBEQVRBX1RZUEUsIHF1ZXJ5VmFyaWFibGVzLCBbJ3Byb2ZpbGVJZCcsIC4uLnByb2ZpbGVQcm9wc10sIHtvblN1Y2Nlc3N9KTtcbiAgICAgIHJldHVybiBhZGRQcm9maWxlIGFzIFByb2ZpbGVUeXBlO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBQUk9GSUxFX0NPTlNUQU5UUy5BRERfSVRFTV9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGdldFByb2ZpbGUgPSBhc3luYyAocHJvZmlsZUlkOiBzdHJpbmcsIHByb2ZpbGVQcm9wczogc3RyaW5nW10gPSBbXSk6IFByb21pc2U8UHJvZmlsZVR5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIHByb2ZpbGVJZDoge1xuICAgICAgICAgIHR5cGU6ICdJRCEnLFxuICAgICAgICAgIHZhbHVlOiBwYXJzZUlkKHByb2ZpbGVJZClcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gKGRhdGE6IFByb2ZpbGVBcGlSZXN1bHRzVHlwZSkgPT4ge1xuICAgICAgICBjb25zdCB7cHJvZmlsZXM6IHtnZXRQcm9maWxlOiBwcm9maWxlID0ge319fSA9IGRhdGE7XG4gICAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtwcm9maWxlLCB0eXBlOiBQUk9GSUxFX0NPTlNUQU5UUy5HRVRfSVRFTV9TVUNDRVNTfSk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7cHJvZmlsZX0gPSBhd2FpdCBhcHBRdWVyeShcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ3Byb2ZpbGUnLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbXG4gICAgICAgICAgJ2FjdGl2ZScsXG4gICAgICAgICAgJ2dlbmRlcicsXG4gICAgICAgICAgJ2hhc0xpa2UnLFxuICAgICAgICAgICdoYXNWaWV3JyxcbiAgICAgICAgICAnaW1hZ2VzKGZyb206IDAgdG86IDEwKSB7IGlkLCBpbWFnZUlkLCBpbWFnZVVybCwgdGh1bWJVcmwgfScsXG4gICAgICAgICAgJ2ltYWdlQ291bnQnLFxuICAgICAgICAgICdsaWtlQ291bnQnLFxuICAgICAgICAgICduYW1lJyxcbiAgICAgICAgICAncHJvZmlsZUlkJyxcbiAgICAgICAgICAndGFncyB7bmFtZSwgdGFnSWR9JyxcbiAgICAgICAgICAndXNlcklkJyxcbiAgICAgICAgICAndmlld0NvdW50JyxcbiAgICAgICAgICAuLi5wcm9maWxlUHJvcHNcbiAgICAgICAgXSxcbiAgICAgICAge29uU3VjY2Vzc31cbiAgICAgICk7XG4gICAgICByZXR1cm4gcHJvZmlsZSBhcyBQcm9maWxlVHlwZTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogUFJPRklMRV9DT05TVEFOVFMuR0VUX0lURU1fRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBnZXRQcm9maWxlcyA9IGFzeW5jIChwcm9maWxlSWRzOiBzdHJpbmdbXSwgcHJvZmlsZVByb3BzOiBzdHJpbmdbXSA9IFtdKTogUHJvbWlzZTxQcm9maWxlVHlwZVtdPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICBwcm9maWxlSWRzOiB7XG4gICAgICAgICAgdHlwZTogJ1tJRCFdIScsXG4gICAgICAgICAgdmFsdWU6IHByb2ZpbGVJZHMubWFwKHBhcnNlSWQpXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBQcm9maWxlQXBpUmVzdWx0c1R5cGUpID0+IHtcbiAgICAgICAgY29uc3Qge3Byb2ZpbGVzOiB7Z2V0UHJvZmlsZXM6IHByb2ZpbGVzID0gW119fSA9IGRhdGE7XG4gICAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtwcm9maWxlcywgdHlwZTogUFJPRklMRV9DT05TVEFOVFMuR0VUX0xJU1RfU1VDQ0VTU30pO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qge3Byb2ZpbGVzfSA9IGF3YWl0IGFwcFF1ZXJ5KFxuICAgICAgICBmbHV4LFxuICAgICAgICAncHJvZmlsZXMnLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbXG4gICAgICAgICAgJ2FjdGl2ZScsXG4gICAgICAgICAgJ2dlbmRlcicsXG4gICAgICAgICAgJ2hhc0xpa2UnLFxuICAgICAgICAgICdoYXNWaWV3JyxcbiAgICAgICAgICAnaW1hZ2VzKGZyb206IDAgdG86IDEwKSB7IGlkLCBpbWFnZUlkLCBpbWFnZVVybCwgdGh1bWJVcmwgfScsXG4gICAgICAgICAgJ2ltYWdlQ291bnQnLFxuICAgICAgICAgICdsaWtlQ291bnQnLFxuICAgICAgICAgICduYW1lJyxcbiAgICAgICAgICAncHJvZmlsZUlkJyxcbiAgICAgICAgICAndGFncyB7bmFtZSwgdGFnSWR9JyxcbiAgICAgICAgICAndXNlcklkJyxcbiAgICAgICAgICAndmlld0NvdW50JyxcbiAgICAgICAgICAuLi5wcm9maWxlUHJvcHNcbiAgICAgICAgXSxcbiAgICAgICAge29uU3VjY2Vzc31cbiAgICAgICk7XG4gICAgICByZXR1cm4gcHJvZmlsZXMgYXMgUHJvZmlsZVR5cGVbXTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogUFJPRklMRV9DT05TVEFOVFMuR0VUX0xJU1RfRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBkZWxldGVQcm9maWxlID0gYXN5bmMgKHByb2ZpbGVJZDogc3RyaW5nLCBwcm9maWxlUHJvcHM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPFByb2ZpbGVUeXBlPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICBwcm9maWxlSWQ6IHtcbiAgICAgICAgICB0eXBlOiAnSUQhJyxcbiAgICAgICAgICB2YWx1ZTogcGFyc2VJZChwcm9maWxlSWQpXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBQcm9maWxlQXBpUmVzdWx0c1R5cGUpID0+IHtcbiAgICAgICAgY29uc3Qge3Byb2ZpbGVzOiB7ZGVsZXRlUHJvZmlsZTogcHJvZmlsZSA9IHt9fX0gPSBkYXRhO1xuICAgICAgICByZXR1cm4gZmx1eC5kaXNwYXRjaCh7cHJvZmlsZSwgdHlwZTogUFJPRklMRV9DT05TVEFOVFMuREVMRVRFX0lURU1fU1VDQ0VTU30pO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qge2RlbGV0ZVByb2ZpbGV9ID0gYXdhaXQgYXBwTXV0YXRpb24oZmx1eCwgJ2RlbGV0ZVByb2ZpbGUnLCBEQVRBX1RZUEUsIHF1ZXJ5VmFyaWFibGVzLCBbJ3Byb2ZpbGVJZCcsIC4uLnByb2ZpbGVQcm9wc10sIHtvblN1Y2Nlc3N9KTtcbiAgICAgIHJldHVybiBkZWxldGVQcm9maWxlIGFzIFByb2ZpbGVUeXBlO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBQUk9GSUxFX0NPTlNUQU5UUy5ERUxFVEVfSVRFTV9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZVByb2ZpbGUgPSBhc3luYyAocHJvZmlsZTogUGFydGlhbDxQcm9maWxlVHlwZT4sIHByb2ZpbGVQcm9wczogc3RyaW5nW10gPSBbXSk6IFByb21pc2U8UHJvZmlsZVR5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIHByb2ZpbGU6IHtcbiAgICAgICAgICB0eXBlOiAnUHJvZmlsZUlucHV0IScsXG4gICAgICAgICAgdmFsdWU6IHByb2ZpbGVCYXNlLnZhbGlkYXRvcihwcm9maWxlKVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSAoZGF0YTogUHJvZmlsZUFwaVJlc3VsdHNUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IHtwcm9maWxlczoge3VwZGF0ZVByb2ZpbGU6IHByb2ZpbGUgPSB7fX19ID0gZGF0YTtcbiAgICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe3Byb2ZpbGUsIHR5cGU6IFBST0ZJTEVfQ09OU1RBTlRTLlVQREFURV9JVEVNX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHt1cGRhdGVQcm9maWxlfSA9IGF3YWl0IGFwcE11dGF0aW9uKGZsdXgsICd1cGRhdGVQcm9maWxlJywgREFUQV9UWVBFLCBxdWVyeVZhcmlhYmxlcywgWydwcm9maWxlSWQnLCAuLi5wcm9maWxlUHJvcHNdLCB7b25TdWNjZXNzfSk7XG4gICAgICByZXR1cm4gdXBkYXRlUHJvZmlsZSBhcyBQcm9maWxlVHlwZTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogUFJPRklMRV9DT05TVEFOVFMuVVBEQVRFX0lURU1fRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFkZFByb2ZpbGUsXG4gICAgZ2V0UHJvZmlsZSxcbiAgICBnZXRQcm9maWxlcyxcbiAgICBkZWxldGVQcm9maWxlLFxuICAgIHVwZGF0ZVByb2ZpbGUsXG4gICAgdXBkYXRlUHJvZmlsZUFkYXB0ZXI6IHByb2ZpbGVCYXNlLnVwZGF0ZUFkYXB0ZXIsXG4gICAgdXBkYXRlUHJvZmlsZUFkYXB0ZXJPcHRpb25zOiBwcm9maWxlQmFzZS51cGRhdGVPcHRpb25zXG4gIH07XG59OyJdLAogICJtYXBwaW5ncyI6ICJBQUlBLE9BQVMsV0FBQUEsTUFBZSxlQUV4QixPQUFTLHdCQUFBQyxNQUE0QiwrQ0FDckMsT0FBUyxxQkFBQUMsTUFBeUIsNEJBQ2xDLE9BQVMsZUFBQUMsRUFBYSxZQUFBQyxNQUFnQixrQkFDdEMsT0FBUyxxQkFBQUMsTUFBeUIsZ0NBTWxDLE1BQU1DLEVBQVksV0FtQ1pDLEVBQTBCLENBQUNDLEVBQWdCQyxJQUFvQ1IsRUFBcUJPLENBQUssRUFxQmxHRSxFQUF1QixDQUNsQ0MsRUFDQUYsSUFDbUIsQ0FDbkIsTUFBTUcsRUFBY1AsRUFBa0JNLEVBQU1KLEVBQXlCLENBQ25FLEdBQUlFLEdBQVMsZ0JBQWtCLENBQUMsUUFBU0EsRUFBUSxjQUFjLEVBQy9ELEdBQUlBLEdBQVMsdUJBQXlCLENBQUMsZUFBZ0JBLEVBQVEscUJBQXFCLENBQ3RGLENBQUMsRUEySkQsTUFBTyxDQUNMLFdBekppQixNQUFPSSxFQUFtQ0MsRUFBeUIsQ0FBQyxJQUE0QixDQUNqSCxHQUFJLENBQ0YsTUFBTUMsRUFBaUIsQ0FDckIsUUFBUyxDQUNQLEtBQU0sZ0JBQ04sTUFBT0gsRUFBWSxVQUFVQyxDQUFXLENBQzFDLENBQ0YsRUFFTUcsRUFBYUMsR0FBZ0MsQ0FDakQsS0FBTSxDQUFDLFNBQVUsQ0FBQyxXQUFBQyxFQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUlELEVBQ3RDLE9BQU9OLEVBQUssU0FBUyxDQUFDLFFBQVNPLEVBQVksS0FBTWhCLEVBQWtCLGdCQUFnQixDQUFDLENBQ3RGLEVBRU0sQ0FBQyxXQUFBZ0IsQ0FBVSxFQUFJLE1BQU1mLEVBQVlRLEVBQU0sYUFBY0wsRUFBV1MsRUFBZ0IsQ0FBQyxZQUFhLEdBQUdELENBQVksRUFBRyxDQUFDLFVBQUFFLENBQVMsQ0FBQyxFQUNqSSxPQUFPRSxDQUNULE9BQVFDLEVBQU8sQ0FDYixNQUFBUixFQUFLLFNBQVMsQ0FBQyxNQUFBUSxFQUFPLEtBQU1qQixFQUFrQixjQUFjLENBQUMsRUFDdkRpQixDQUNSLENBQ0YsRUFzSUUsV0FwSWlCLE1BQU9DLEVBQW1CTixFQUF5QixDQUFDLElBQTRCLENBQ2pHLEdBQUksQ0FDRixNQUFNQyxFQUFpQixDQUNyQixVQUFXLENBQ1QsS0FBTSxNQUNOLE1BQU9mLEVBQVFvQixDQUFTLENBQzFCLENBQ0YsRUFFTUosRUFBYUMsR0FBZ0MsQ0FDakQsS0FBTSxDQUFDLFNBQVUsQ0FBQyxXQUFZSSxFQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUlKLEVBQy9DLE9BQU9OLEVBQUssU0FBUyxDQUFDLFFBQUFVLEVBQVMsS0FBTW5CLEVBQWtCLGdCQUFnQixDQUFDLENBQzFFLEVBRU0sQ0FBQyxRQUFBbUIsQ0FBTyxFQUFJLE1BQU1qQixFQUN0Qk8sRUFDQSxVQUNBTCxFQUNBUyxFQUNBLENBQ0UsU0FDQSxTQUNBLFVBQ0EsVUFDQSw2REFDQSxhQUNBLFlBQ0EsT0FDQSxZQUNBLHFCQUNBLFNBQ0EsWUFDQSxHQUFHRCxDQUNMLEVBQ0EsQ0FBQyxVQUFBRSxDQUFTLENBQ1osRUFDQSxPQUFPSyxDQUNULE9BQVFGLEVBQU8sQ0FDYixNQUFBUixFQUFLLFNBQVMsQ0FBQyxNQUFBUSxFQUFPLEtBQU1qQixFQUFrQixjQUFjLENBQUMsRUFDdkRpQixDQUNSLENBQ0YsRUE0RkUsWUExRmtCLE1BQU9HLEVBQXNCUixFQUF5QixDQUFDLElBQThCLENBQ3ZHLEdBQUksQ0FDRixNQUFNQyxFQUFpQixDQUNyQixXQUFZLENBQ1YsS0FBTSxTQUNOLE1BQU9PLEVBQVcsSUFBSXRCLENBQU8sQ0FDL0IsQ0FDRixFQUVNZ0IsRUFBYUMsR0FBZ0MsQ0FDakQsS0FBTSxDQUFDLFNBQVUsQ0FBQyxZQUFhTSxFQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUlOLEVBQ2pELE9BQU9OLEVBQUssU0FBUyxDQUFDLFNBQUFZLEVBQVUsS0FBTXJCLEVBQWtCLGdCQUFnQixDQUFDLENBQzNFLEVBRU0sQ0FBQyxTQUFBcUIsQ0FBUSxFQUFJLE1BQU1uQixFQUN2Qk8sRUFDQSxXQUNBTCxFQUNBUyxFQUNBLENBQ0UsU0FDQSxTQUNBLFVBQ0EsVUFDQSw2REFDQSxhQUNBLFlBQ0EsT0FDQSxZQUNBLHFCQUNBLFNBQ0EsWUFDQSxHQUFHRCxDQUNMLEVBQ0EsQ0FBQyxVQUFBRSxDQUFTLENBQ1osRUFDQSxPQUFPTyxDQUNULE9BQVFKLEVBQU8sQ0FDYixNQUFBUixFQUFLLFNBQVMsQ0FBQyxNQUFBUSxFQUFPLEtBQU1qQixFQUFrQixjQUFjLENBQUMsRUFDdkRpQixDQUNSLENBQ0YsRUFrREUsY0FoRG9CLE1BQU9DLEVBQW1CTixFQUF5QixDQUFDLElBQTRCLENBQ3BHLEdBQUksQ0FDRixNQUFNQyxFQUFpQixDQUNyQixVQUFXLENBQ1QsS0FBTSxNQUNOLE1BQU9mLEVBQVFvQixDQUFTLENBQzFCLENBQ0YsRUFFTUosRUFBYUMsR0FBZ0MsQ0FDakQsS0FBTSxDQUFDLFNBQVUsQ0FBQyxjQUFlSSxFQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUlKLEVBQ2xELE9BQU9OLEVBQUssU0FBUyxDQUFDLFFBQUFVLEVBQVMsS0FBTW5CLEVBQWtCLG1CQUFtQixDQUFDLENBQzdFLEVBRU0sQ0FBQyxjQUFBc0IsQ0FBYSxFQUFJLE1BQU1yQixFQUFZUSxFQUFNLGdCQUFpQkwsRUFBV1MsRUFBZ0IsQ0FBQyxZQUFhLEdBQUdELENBQVksRUFBRyxDQUFDLFVBQUFFLENBQVMsQ0FBQyxFQUN2SSxPQUFPUSxDQUNULE9BQVFMLEVBQU8sQ0FDYixNQUFBUixFQUFLLFNBQVMsQ0FBQyxNQUFBUSxFQUFPLEtBQU1qQixFQUFrQixpQkFBaUIsQ0FBQyxFQUMxRGlCLENBQ1IsQ0FDRixFQTZCRSxjQTNCb0IsTUFBT0UsRUFBK0JQLEVBQXlCLENBQUMsSUFBNEIsQ0FDaEgsR0FBSSxDQUNGLE1BQU1DLEVBQWlCLENBQ3JCLFFBQVMsQ0FDUCxLQUFNLGdCQUNOLE1BQU9ILEVBQVksVUFBVVMsQ0FBTyxDQUN0QyxDQUNGLEVBRU1MLEVBQWFDLEdBQWdDLENBQ2pELEtBQU0sQ0FBQyxTQUFVLENBQUMsY0FBZUksRUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFJSixFQUNsRCxPQUFPTixFQUFLLFNBQVMsQ0FBQyxRQUFBVSxFQUFTLEtBQU1uQixFQUFrQixtQkFBbUIsQ0FBQyxDQUM3RSxFQUVNLENBQUMsY0FBQXVCLENBQWEsRUFBSSxNQUFNdEIsRUFBWVEsRUFBTSxnQkFBaUJMLEVBQVdTLEVBQWdCLENBQUMsWUFBYSxHQUFHRCxDQUFZLEVBQUcsQ0FBQyxVQUFBRSxDQUFTLENBQUMsRUFDdkksT0FBT1MsQ0FDVCxPQUFRTixFQUFPLENBQ2IsTUFBQVIsRUFBSyxTQUFTLENBQUMsTUFBQVEsRUFBTyxLQUFNakIsRUFBa0IsaUJBQWlCLENBQUMsRUFDMURpQixDQUNSLENBQ0YsRUFRRSxxQkFBc0JQLEVBQVksY0FDbEMsNEJBQTZCQSxFQUFZLGFBQzNDLENBQ0YiLAogICJuYW1lcyI6IFsicGFyc2VJZCIsICJ2YWxpZGF0ZVByb2ZpbGVJbnB1dCIsICJQUk9GSUxFX0NPTlNUQU5UUyIsICJhcHBNdXRhdGlvbiIsICJhcHBRdWVyeSIsICJjcmVhdGVCYXNlQWN0aW9ucyIsICJEQVRBX1RZUEUiLCAiZGVmYXVsdFByb2ZpbGVWYWxpZGF0b3IiLCAiaW5wdXQiLCAib3B0aW9ucyIsICJjcmVhdGVQcm9maWxlQWN0aW9ucyIsICJmbHV4IiwgInByb2ZpbGVCYXNlIiwgInByb2ZpbGVEYXRhIiwgInByb2ZpbGVQcm9wcyIsICJxdWVyeVZhcmlhYmxlcyIsICJvblN1Y2Nlc3MiLCAiZGF0YSIsICJhZGRQcm9maWxlIiwgImVycm9yIiwgInByb2ZpbGVJZCIsICJwcm9maWxlIiwgInByb2ZpbGVJZHMiLCAicHJvZmlsZXMiLCAiZGVsZXRlUHJvZmlsZSIsICJ1cGRhdGVQcm9maWxlIl0KfQo=
@@ -0,0 +1,52 @@
1
+ import type { FluxFramework } from '@nlabs/arkhamjs';
2
+ import type { ReactionType } from '../../adapters/reactionAdapter/reactionAdapter';
3
+ export interface ReactionAdapterOptions {
4
+ strict?: boolean;
5
+ allowPartial?: boolean;
6
+ environment?: 'development' | 'production' | 'test';
7
+ customValidation?: (input: unknown) => unknown;
8
+ }
9
+ export interface ReactionActionsOptions {
10
+ reactionAdapter?: (input: unknown, options?: ReactionAdapterOptions) => any;
11
+ reactionAdapterOptions?: ReactionAdapterOptions;
12
+ }
13
+ export type ReactionApiResultsType = {
14
+ reactions: {
15
+ addReaction: ReactionType;
16
+ deleteReaction: ReactionType;
17
+ getReactionCount: number;
18
+ hasReaction: boolean;
19
+ };
20
+ };
21
+ export interface ReactionActions {
22
+ addReaction: (itemId: string, itemType: string, reaction: Partial<ReactionType>, reactionProps?: string[]) => Promise<ReactionType>;
23
+ deleteReaction: (itemId: string, itemType: string, reactionName: string, reactionProps?: string[]) => Promise<ReactionType>;
24
+ getReactionCount: (itemId: string, itemType: string, reactionName: string) => Promise<number>;
25
+ hasReaction: (itemId: string, itemType: string, reactionName: string, direction: string) => Promise<boolean>;
26
+ abbreviateCount: (count: number) => string;
27
+ updateReactionAdapter: (adapter: (input: unknown, options?: ReactionAdapterOptions) => any) => void;
28
+ updateReactionAdapterOptions: (options: ReactionAdapterOptions) => void;
29
+ }
30
+ /**
31
+ * Factory function to create ReactionActions with enhanced adapter injection capabilities.
32
+ * Custom adapters are merged with default behavior, allowing partial overrides.
33
+ *
34
+ * @example
35
+ * // Basic usage with default adapters
36
+ * const reactionActions = createReactionActions(flux);
37
+ *
38
+ * @example
39
+ * // Custom adapter that extends default behavior
40
+ * const customReactionAdapter = (input: unknown, options?: ReactionAdapterOptions) => {
41
+ * // input is already validated by default adapter
42
+ * if (input.value && input.value > 5) {
43
+ * throw new Error('Reaction value too high');
44
+ * }
45
+ * return input;
46
+ * };
47
+ *
48
+ * const reactionActions = createReactionActions(flux, {
49
+ * reactionAdapter: customReactionAdapter
50
+ * });
51
+ */
52
+ export declare const createReactionActions: (flux: FluxFramework, options?: ReactionActionsOptions) => ReactionActions;
@@ -0,0 +1,2 @@
1
+ import{Flux as A}from"@nlabs/arkhamjs";import{validateReactionInput as C}from"../../adapters/reactionAdapter/reactionAdapter";import{REACTION_CONSTANTS as R}from"../../stores/reactionStore";import{appMutation as O,appQuery as T}from"../../utils/api";const g="reactions",w=(a,y)=>C(a),h=(a,y)=>(p,u)=>{const d={...y,...u};let l=w(p,d);return a&&(l=a(l,d)),d?.customValidation&&(l=d.customValidation(l)),l},M=(a,y)=>{let p=y?.reactionAdapterOptions||{},u=y?.reactionAdapter,d=h(u,p);return{addReaction:async(e,n,r,c=[])=>{const t=d(r,p),{value:o}=t,s=o!==void 0?o.toString():o;try{const i={itemId:{type:"ID!",value:`${n}/${e}`},reaction:{type:"ReactionInput",value:{...t,value:s}}},m=S=>{const{reactions:{addReaction:v={}}}=S;return A.dispatch({itemId:e,itemType:n,reaction:v,type:R.ADD_ITEM_SUCCESS})},{reaction:b}=await O(a,"addReaction",g,i,["id","name","value",...c],{onSuccess:m});return b}catch(i){throw a.dispatch({error:i,type:R.ADD_ITEM_ERROR}),i}},deleteReaction:async(e,n,r,c=[])=>{try{const t={itemId:{type:"ID!",value:`${n}/${e}`},reactionName:{type:"String",value:r}},o=i=>{const{reactions:{deleteReaction:m={}}}=i;return A.dispatch({itemId:e,itemType:n,reaction:m,type:R.REMOVE_ITEM_SUCCESS})},{reaction:s}=await O(a,"deleteReaction",g,t,["id","name","value",...c],{onSuccess:o});return s}catch(t){throw a.dispatch({error:t,type:R.REMOVE_ITEM_ERROR}),t}},getReactionCount:async(e,n,r)=>{try{const c={itemId:{type:"ID!",value:`${n}/${e}`},reactionName:{type:"String",value:r}},t=s=>{const{reactions:{getReactionCount:i}}=s;return a.dispatch({count:i,itemId:e,name:r,type:R.GET_COUNT_SUCCESS})},{count:o}=await T(a,"reactionCount",g,c,["count"],{onSuccess:t});return o}catch(c){throw a.dispatch({error:c,type:R.GET_COUNT_ERROR}),c}},hasReaction:async(e,n,r,c)=>{try{const t={direction:{type:"String",value:c},itemId:{type:"ID!",value:`${n}/${e}`},reactionName:{type:"String",value:r}},o=i=>{const{reactions:{hasReaction:m}}=i;return A.dispatch({hasReaction:m,itemId:`${n}/${e}`,name:r,type:R.HAS_SUCCESS})},{hasReaction:s}=await T(a,"hasReaction",g,t,[],{onSuccess:o});return s}catch(t){throw a.dispatch({error:t,type:R.HAS_ERROR}),t}},abbreviateCount:e=>{const n=e||0;let r=n.toString();if(n>=1e3){const c=["","k","m","b","t"],t=Math.floor(`${n}`.length/3);let o=0,s="";for(let i=2;i>=1&&(o=parseFloat((t!==0?n/Math.pow(1e3,t):n).toPrecision(i)),s=o.toString(),!(`${o}`.replace(/[^a-zA-Z 0-9]+/g,"").length<=2));i--);o%1!==0&&(s=o.toFixed(1)),r=s+c[t]}return r},updateReactionAdapter:e=>{u=e,d=h(u,p)},updateReactionAdapterOptions:e=>{p={...p,...e},d=h(u,p)}}};export{M as createReactionActions};
2
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FjdGlvbnMvcmVhY3Rpb25BY3Rpb25zL3JlYWN0aW9uQWN0aW9ucy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Rmx1eH0gZnJvbSAnQG5sYWJzL2Fya2hhbWpzJztcblxuaW1wb3J0IHt2YWxpZGF0ZVJlYWN0aW9uSW5wdXR9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL3JlYWN0aW9uQWRhcHRlci9yZWFjdGlvbkFkYXB0ZXInO1xuaW1wb3J0IHtSRUFDVElPTl9DT05TVEFOVFN9IGZyb20gJy4uLy4uL3N0b3Jlcy9yZWFjdGlvblN0b3JlJztcbmltcG9ydCB7YXBwTXV0YXRpb24sIGFwcFF1ZXJ5fSBmcm9tICcuLi8uLi91dGlscy9hcGknO1xuXG5pbXBvcnQgdHlwZSB7Rmx1eEZyYW1ld29ya30gZnJvbSAnQG5sYWJzL2Fya2hhbWpzJztcbmltcG9ydCB0eXBlIHtSZWFjdGlvblR5cGV9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL3JlYWN0aW9uQWRhcHRlci9yZWFjdGlvbkFkYXB0ZXInO1xuaW1wb3J0IHR5cGUge1JlYWt0b3JEYkNvbGxlY3Rpb259IGZyb20gJy4uLy4uL3V0aWxzL2FwaSc7XG5cbmNvbnN0IERBVEFfVFlQRTogUmVha3RvckRiQ29sbGVjdGlvbiA9ICdyZWFjdGlvbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlYWN0aW9uQWRhcHRlck9wdGlvbnMge1xuICBzdHJpY3Q/OiBib29sZWFuO1xuICBhbGxvd1BhcnRpYWw/OiBib29sZWFuO1xuICBlbnZpcm9ubWVudD86ICdkZXZlbG9wbWVudCcgfCAncHJvZHVjdGlvbicgfCAndGVzdCc7XG4gIGN1c3RvbVZhbGlkYXRpb24/OiAoaW5wdXQ6IHVua25vd24pID0+IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhY3Rpb25BY3Rpb25zT3B0aW9ucyB7XG4gIHJlYWN0aW9uQWRhcHRlcj86IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFJlYWN0aW9uQWRhcHRlck9wdGlvbnMpID0+IGFueTtcbiAgcmVhY3Rpb25BZGFwdGVyT3B0aW9ucz86IFJlYWN0aW9uQWRhcHRlck9wdGlvbnM7XG59XG5cbmV4cG9ydCB0eXBlIFJlYWN0aW9uQXBpUmVzdWx0c1R5cGUgPSB7XG4gIHJlYWN0aW9uczoge1xuICAgIGFkZFJlYWN0aW9uOiBSZWFjdGlvblR5cGU7XG4gICAgZGVsZXRlUmVhY3Rpb246IFJlYWN0aW9uVHlwZTtcbiAgICBnZXRSZWFjdGlvbkNvdW50OiBudW1iZXI7XG4gICAgaGFzUmVhY3Rpb246IGJvb2xlYW47XG4gIH07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlYWN0aW9uQWN0aW9ucyB7XG4gIGFkZFJlYWN0aW9uOiAoaXRlbUlkOiBzdHJpbmcsIGl0ZW1UeXBlOiBzdHJpbmcsIHJlYWN0aW9uOiBQYXJ0aWFsPFJlYWN0aW9uVHlwZT4sIHJlYWN0aW9uUHJvcHM/OiBzdHJpbmdbXSkgPT4gUHJvbWlzZTxSZWFjdGlvblR5cGU+O1xuICBkZWxldGVSZWFjdGlvbjogKGl0ZW1JZDogc3RyaW5nLCBpdGVtVHlwZTogc3RyaW5nLCByZWFjdGlvbk5hbWU6IHN0cmluZywgcmVhY3Rpb25Qcm9wcz86IHN0cmluZ1tdKSA9PiBQcm9taXNlPFJlYWN0aW9uVHlwZT47XG4gIGdldFJlYWN0aW9uQ291bnQ6IChpdGVtSWQ6IHN0cmluZywgaXRlbVR5cGU6IHN0cmluZywgcmVhY3Rpb25OYW1lOiBzdHJpbmcpID0+IFByb21pc2U8bnVtYmVyPjtcbiAgaGFzUmVhY3Rpb246IChpdGVtSWQ6IHN0cmluZywgaXRlbVR5cGU6IHN0cmluZywgcmVhY3Rpb25OYW1lOiBzdHJpbmcsIGRpcmVjdGlvbjogc3RyaW5nKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuICBhYmJyZXZpYXRlQ291bnQ6IChjb3VudDogbnVtYmVyKSA9PiBzdHJpbmc7XG4gIHVwZGF0ZVJlYWN0aW9uQWRhcHRlcjogKGFkYXB0ZXI6IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFJlYWN0aW9uQWRhcHRlck9wdGlvbnMpID0+IGFueSkgPT4gdm9pZDtcbiAgdXBkYXRlUmVhY3Rpb25BZGFwdGVyT3B0aW9uczogKG9wdGlvbnM6IFJlYWN0aW9uQWRhcHRlck9wdGlvbnMpID0+IHZvaWQ7XG59XG5cbi8vIERlZmF1bHQgdmFsaWRhdGlvbiBmdW5jdGlvblxuY29uc3QgZGVmYXVsdFJlYWN0aW9uVmFsaWRhdG9yID0gKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogUmVhY3Rpb25BZGFwdGVyT3B0aW9ucykgPT4gdmFsaWRhdGVSZWFjdGlvbklucHV0KGlucHV0KTtcblxuLy8gRW5oYW5jZWQgdmFsaWRhdGlvbiBmdW5jdGlvbiB0aGF0IG1lcmdlcyBjdXN0b20gbG9naWMgd2l0aCBkZWZhdWx0c1xuY29uc3QgY3JlYXRlUmVhY3Rpb25WYWxpZGF0b3IgPSAoXG4gIGN1c3RvbUFkYXB0ZXI/OiAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBSZWFjdGlvbkFkYXB0ZXJPcHRpb25zKSA9PiBhbnksXG4gIG9wdGlvbnM/OiBSZWFjdGlvbkFkYXB0ZXJPcHRpb25zXG4pID0+IChpbnB1dDogdW5rbm93biwgdmFsaWRhdG9yT3B0aW9ucz86IFJlYWN0aW9uQWRhcHRlck9wdGlvbnMpID0+IHtcbiAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IHsuLi5vcHRpb25zLCAuLi52YWxpZGF0b3JPcHRpb25zfTtcblxuICAvLyBTdGFydCB3aXRoIGRlZmF1bHQgdmFsaWRhdGlvblxuICBsZXQgdmFsaWRhdGVkID0gZGVmYXVsdFJlYWN0aW9uVmFsaWRhdG9yKGlucHV0LCBtZXJnZWRPcHRpb25zKTtcblxuICAvLyBBcHBseSBjdXN0b20gdmFsaWRhdGlvbiBpZiBwcm92aWRlZFxuICBpZihjdXN0b21BZGFwdGVyKSB7XG4gICAgdmFsaWRhdGVkID0gY3VzdG9tQWRhcHRlcih2YWxpZGF0ZWQsIG1lcmdlZE9wdGlvbnMpO1xuICB9XG5cbiAgLy8gQXBwbHkgY3VzdG9tIHZhbGlkYXRpb24gZnJvbSBvcHRpb25zIGlmIHByb3ZpZGVkXG4gIGlmKG1lcmdlZE9wdGlvbnM/LmN1c3RvbVZhbGlkYXRpb24pIHtcbiAgICB2YWxpZGF0ZWQgPSBtZXJnZWRPcHRpb25zLmN1c3RvbVZhbGlkYXRpb24odmFsaWRhdGVkKSBhcyBSZWFjdGlvblR5cGU7XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVkO1xufTtcblxuLyoqXG4gKiBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBSZWFjdGlvbkFjdGlvbnMgd2l0aCBlbmhhbmNlZCBhZGFwdGVyIGluamVjdGlvbiBjYXBhYmlsaXRpZXMuXG4gKiBDdXN0b20gYWRhcHRlcnMgYXJlIG1lcmdlZCB3aXRoIGRlZmF1bHQgYmVoYXZpb3IsIGFsbG93aW5nIHBhcnRpYWwgb3ZlcnJpZGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBCYXNpYyB1c2FnZSB3aXRoIGRlZmF1bHQgYWRhcHRlcnNcbiAqIGNvbnN0IHJlYWN0aW9uQWN0aW9ucyA9IGNyZWF0ZVJlYWN0aW9uQWN0aW9ucyhmbHV4KTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ3VzdG9tIGFkYXB0ZXIgdGhhdCBleHRlbmRzIGRlZmF1bHQgYmVoYXZpb3JcbiAqIGNvbnN0IGN1c3RvbVJlYWN0aW9uQWRhcHRlciA9IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFJlYWN0aW9uQWRhcHRlck9wdGlvbnMpID0+IHtcbiAqICAgLy8gaW5wdXQgaXMgYWxyZWFkeSB2YWxpZGF0ZWQgYnkgZGVmYXVsdCBhZGFwdGVyXG4gKiAgIGlmIChpbnB1dC52YWx1ZSAmJiBpbnB1dC52YWx1ZSA+IDUpIHtcbiAqICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlYWN0aW9uIHZhbHVlIHRvbyBoaWdoJyk7XG4gKiAgIH1cbiAqICAgcmV0dXJuIGlucHV0O1xuICogfTtcbiAqXG4gKiBjb25zdCByZWFjdGlvbkFjdGlvbnMgPSBjcmVhdGVSZWFjdGlvbkFjdGlvbnMoZmx1eCwge1xuICogICByZWFjdGlvbkFkYXB0ZXI6IGN1c3RvbVJlYWN0aW9uQWRhcHRlclxuICogfSk7XG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVSZWFjdGlvbkFjdGlvbnMgPSAoXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIG9wdGlvbnM/OiBSZWFjdGlvbkFjdGlvbnNPcHRpb25zXG4pOiBSZWFjdGlvbkFjdGlvbnMgPT4ge1xuICAvLyBJbml0aWFsaXplIGFkYXB0ZXIgc3RhdGVcbiAgbGV0IHJlYWN0aW9uQWRhcHRlck9wdGlvbnM6IFJlYWN0aW9uQWRhcHRlck9wdGlvbnMgPSBvcHRpb25zPy5yZWFjdGlvbkFkYXB0ZXJPcHRpb25zIHx8IHt9O1xuICBsZXQgY3VzdG9tUmVhY3Rpb25BZGFwdGVyID0gb3B0aW9ucz8ucmVhY3Rpb25BZGFwdGVyO1xuXG4gIC8vIENyZWF0ZSB2YWxpZGF0b3JzIHRoYXQgbWVyZ2UgY3VzdG9tIGFkYXB0ZXJzIHdpdGggZGVmYXVsdHNcbiAgbGV0IHZhbGlkYXRlUmVhY3Rpb24gPSBjcmVhdGVSZWFjdGlvblZhbGlkYXRvcihjdXN0b21SZWFjdGlvbkFkYXB0ZXIsIHJlYWN0aW9uQWRhcHRlck9wdGlvbnMpO1xuXG4gIC8vIFVwZGF0ZSBmdW5jdGlvbnMgdGhhdCByZWNyZWF0ZSB2YWxpZGF0b3JzXG4gIGNvbnN0IHVwZGF0ZVJlYWN0aW9uQWRhcHRlciA9IChhZGFwdGVyOiAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBSZWFjdGlvbkFkYXB0ZXJPcHRpb25zKSA9PiBhbnkpOiB2b2lkID0+IHtcbiAgICBjdXN0b21SZWFjdGlvbkFkYXB0ZXIgPSBhZGFwdGVyO1xuICAgIHZhbGlkYXRlUmVhY3Rpb24gPSBjcmVhdGVSZWFjdGlvblZhbGlkYXRvcihjdXN0b21SZWFjdGlvbkFkYXB0ZXIsIHJlYWN0aW9uQWRhcHRlck9wdGlvbnMpO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZVJlYWN0aW9uQWRhcHRlck9wdGlvbnMgPSAob3B0aW9uczogUmVhY3Rpb25BZGFwdGVyT3B0aW9ucyk6IHZvaWQgPT4ge1xuICAgIHJlYWN0aW9uQWRhcHRlck9wdGlvbnMgPSB7Li4ucmVhY3Rpb25BZGFwdGVyT3B0aW9ucywgLi4ub3B0aW9uc307XG4gICAgdmFsaWRhdGVSZWFjdGlvbiA9IGNyZWF0ZVJlYWN0aW9uVmFsaWRhdG9yKGN1c3RvbVJlYWN0aW9uQWRhcHRlciwgcmVhY3Rpb25BZGFwdGVyT3B0aW9ucyk7XG4gIH07XG5cbiAgLy8gQWN0aW9uIGltcGxlbWVudGF0aW9uc1xuICBjb25zdCBhZGRSZWFjdGlvbiA9IGFzeW5jIChcbiAgICBpdGVtSWQ6IHN0cmluZyxcbiAgICBpdGVtVHlwZTogc3RyaW5nLFxuICAgIHJlYWN0aW9uOiBQYXJ0aWFsPFJlYWN0aW9uVHlwZT4sXG4gICAgcmVhY3Rpb25Qcm9wczogc3RyaW5nW10gPSBbXVxuICApOiBQcm9taXNlPFJlYWN0aW9uVHlwZT4gPT4ge1xuICAgIGNvbnN0IHZhbGlkYXRlZFJlYWN0aW9uID0gdmFsaWRhdGVSZWFjdGlvbihyZWFjdGlvbiwgcmVhY3Rpb25BZGFwdGVyT3B0aW9ucyk7XG4gICAgY29uc3Qge3ZhbHVlfSA9IHZhbGlkYXRlZFJlYWN0aW9uO1xuICAgIGNvbnN0IGZvcm1hdFZhbHVlID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlLnRvU3RyaW5nKCkgOiB2YWx1ZTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAgaXRlbUlkOiB7XG4gICAgICAgICAgdHlwZTogJ0lEIScsXG4gICAgICAgICAgdmFsdWU6IGAke2l0ZW1UeXBlfS8ke2l0ZW1JZH1gXG4gICAgICAgIH0sXG4gICAgICAgIHJlYWN0aW9uOiB7XG4gICAgICAgICAgdHlwZTogJ1JlYWN0aW9uSW5wdXQnLFxuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAuLi52YWxpZGF0ZWRSZWFjdGlvbixcbiAgICAgICAgICAgIHZhbHVlOiBmb3JtYXRWYWx1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gKGRhdGE6IFJlYWN0aW9uQXBpUmVzdWx0c1R5cGUpID0+IHtcbiAgICAgICAgY29uc3Qge3JlYWN0aW9uczoge2FkZFJlYWN0aW9uOiByZWFjdGlvbiA9IHt9fX0gPSBkYXRhO1xuICAgICAgICByZXR1cm4gRmx1eC5kaXNwYXRjaCh7aXRlbUlkLCBpdGVtVHlwZSwgcmVhY3Rpb24sIHR5cGU6IFJFQUNUSU9OX0NPTlNUQU5UUy5BRERfSVRFTV9TVUNDRVNTfSk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7cmVhY3Rpb246IGFkZGVkUmVhY3Rpb259ID0gYXdhaXQgYXBwTXV0YXRpb24oZmx1eCwgJ2FkZFJlYWN0aW9uJywgREFUQV9UWVBFLCBxdWVyeVZhcmlhYmxlcywgWydpZCcsICduYW1lJywgJ3ZhbHVlJywgLi4ucmVhY3Rpb25Qcm9wc10sIHtcbiAgICAgICAgb25TdWNjZXNzXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGFkZGVkUmVhY3Rpb24gYXMgUmVhY3Rpb25UeXBlO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBSRUFDVElPTl9DT05TVEFOVFMuQUREX0lURU1fRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBkZWxldGVSZWFjdGlvbiA9IGFzeW5jIChcbiAgICBpdGVtSWQ6IHN0cmluZyxcbiAgICBpdGVtVHlwZTogc3RyaW5nLFxuICAgIHJlYWN0aW9uTmFtZTogc3RyaW5nLFxuICAgIHJlYWN0aW9uUHJvcHM6IHN0cmluZ1tdID0gW11cbiAgKTogUHJvbWlzZTxSZWFjdGlvblR5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIGl0ZW1JZDoge1xuICAgICAgICAgIHR5cGU6ICdJRCEnLFxuICAgICAgICAgIHZhbHVlOiBgJHtpdGVtVHlwZX0vJHtpdGVtSWR9YFxuICAgICAgICB9LFxuICAgICAgICByZWFjdGlvbk5hbWU6IHtcbiAgICAgICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICAgICAgICB2YWx1ZTogcmVhY3Rpb25OYW1lXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBSZWFjdGlvbkFwaVJlc3VsdHNUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IHtyZWFjdGlvbnM6IHtkZWxldGVSZWFjdGlvbjogcmVhY3Rpb24gPSB7fX19ID0gZGF0YTtcbiAgICAgICAgcmV0dXJuIEZsdXguZGlzcGF0Y2goe1xuICAgICAgICAgIGl0ZW1JZCxcbiAgICAgICAgICBpdGVtVHlwZSxcbiAgICAgICAgICByZWFjdGlvbixcbiAgICAgICAgICB0eXBlOiBSRUFDVElPTl9DT05TVEFOVFMuUkVNT1ZFX0lURU1fU1VDQ0VTU1xuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHtyZWFjdGlvbjogZGVsZXRlZFJlYWN0aW9ufSA9IGF3YWl0IGFwcE11dGF0aW9uKGZsdXgsICdkZWxldGVSZWFjdGlvbicsIERBVEFfVFlQRSwgcXVlcnlWYXJpYWJsZXMsIFsnaWQnLCAnbmFtZScsICd2YWx1ZScsIC4uLnJlYWN0aW9uUHJvcHNdLCB7XG4gICAgICAgIG9uU3VjY2Vzc1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBkZWxldGVkUmVhY3Rpb24gYXMgUmVhY3Rpb25UeXBlO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBSRUFDVElPTl9DT05TVEFOVFMuUkVNT1ZFX0lURU1fRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBnZXRSZWFjdGlvbkNvdW50ID0gYXN5bmMgKGl0ZW1JZDogc3RyaW5nLCBpdGVtVHlwZTogc3RyaW5nLCByZWFjdGlvbk5hbWU6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICBpdGVtSWQ6IHtcbiAgICAgICAgICB0eXBlOiAnSUQhJyxcbiAgICAgICAgICB2YWx1ZTogYCR7aXRlbVR5cGV9LyR7aXRlbUlkfWBcbiAgICAgICAgfSxcbiAgICAgICAgcmVhY3Rpb25OYW1lOiB7XG4gICAgICAgICAgdHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgdmFsdWU6IHJlYWN0aW9uTmFtZVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSAoZGF0YTogUmVhY3Rpb25BcGlSZXN1bHRzVHlwZSkgPT4ge1xuICAgICAgICBjb25zdCB7cmVhY3Rpb25zOiB7Z2V0UmVhY3Rpb25Db3VudH19ID0gZGF0YTtcbiAgICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe1xuICAgICAgICAgIGNvdW50OiBnZXRSZWFjdGlvbkNvdW50LFxuICAgICAgICAgIGl0ZW1JZCxcbiAgICAgICAgICBuYW1lOiByZWFjdGlvbk5hbWUsXG4gICAgICAgICAgdHlwZTogUkVBQ1RJT05fQ09OU1RBTlRTLkdFVF9DT1VOVF9TVUNDRVNTXG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qge2NvdW50OiByZWFjdGlvbkNvdW50fSA9IGF3YWl0IGFwcFF1ZXJ5KFxuICAgICAgICBmbHV4LFxuICAgICAgICAncmVhY3Rpb25Db3VudCcsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIFsnY291bnQnXSxcbiAgICAgICAge29uU3VjY2Vzc31cbiAgICAgICk7XG4gICAgICByZXR1cm4gcmVhY3Rpb25Db3VudCBhcyBudW1iZXI7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IFJFQUNUSU9OX0NPTlNUQU5UUy5HRVRfQ09VTlRfRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYXNSZWFjdGlvbiA9IGFzeW5jIChpdGVtSWQ6IHN0cmluZywgaXRlbVR5cGU6IHN0cmluZywgcmVhY3Rpb25OYW1lOiBzdHJpbmcsIGRpcmVjdGlvbjogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICBkaXJlY3Rpb246IHtcbiAgICAgICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICAgICAgICB2YWx1ZTogZGlyZWN0aW9uXG4gICAgICAgIH0sXG4gICAgICAgIGl0ZW1JZDoge1xuICAgICAgICAgIHR5cGU6ICdJRCEnLFxuICAgICAgICAgIHZhbHVlOiBgJHtpdGVtVHlwZX0vJHtpdGVtSWR9YFxuICAgICAgICB9LFxuICAgICAgICByZWFjdGlvbk5hbWU6IHtcbiAgICAgICAgICB0eXBlOiAnU3RyaW5nJyxcbiAgICAgICAgICB2YWx1ZTogcmVhY3Rpb25OYW1lXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBSZWFjdGlvbkFwaVJlc3VsdHNUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IHtyZWFjdGlvbnM6IHtoYXNSZWFjdGlvbn19ID0gZGF0YTtcbiAgICAgICAgcmV0dXJuIEZsdXguZGlzcGF0Y2goe1xuICAgICAgICAgIGhhc1JlYWN0aW9uLFxuICAgICAgICAgIGl0ZW1JZDogYCR7aXRlbVR5cGV9LyR7aXRlbUlkfWAsXG4gICAgICAgICAgbmFtZTogcmVhY3Rpb25OYW1lLFxuICAgICAgICAgIHR5cGU6IFJFQUNUSU9OX0NPTlNUQU5UUy5IQVNfU1VDQ0VTU1xuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHtoYXNSZWFjdGlvbjogaGFzUmVhY3Rpb25SZXN1bHR9ID0gYXdhaXQgYXBwUXVlcnkoXG4gICAgICAgIGZsdXgsXG4gICAgICAgICdoYXNSZWFjdGlvbicsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIFtdLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcbiAgICAgIHJldHVybiBoYXNSZWFjdGlvblJlc3VsdCBhcyBib29sZWFuO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBSRUFDVElPTl9DT05TVEFOVFMuSEFTX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYWJicmV2aWF0ZUNvdW50ID0gKGNvdW50OiBudW1iZXIpOiBzdHJpbmcgPT4ge1xuICAgIGNvbnN0IHZhbHVlOiBudW1iZXIgPSBjb3VudCB8fCAwO1xuICAgIGxldCBuZXdWYWx1ZTogc3RyaW5nID0gdmFsdWUudG9TdHJpbmcoKTtcblxuICAgIGlmKHZhbHVlID49IDEwMDApIHtcbiAgICAgIGNvbnN0IHN1ZmZpeGVzOiBzdHJpbmdbXSA9IFsnJywgJ2snLCAnbScsICdiJywgJ3QnXTtcbiAgICAgIGNvbnN0IHN1ZmZpeE51bTogbnVtYmVyID0gTWF0aC5mbG9vcihgJHt2YWx1ZX1gLmxlbmd0aCAvIDMpO1xuICAgICAgbGV0IHNob3J0VmFsdWU6IG51bWJlciA9IDA7XG4gICAgICBsZXQgc2hvcnRTdHJpbmc6IHN0cmluZyA9ICcnO1xuXG4gICAgICBmb3IobGV0IHByZWNpc2lvbiA9IDI7IHByZWNpc2lvbiA+PSAxOyBwcmVjaXNpb24tLSkge1xuICAgICAgICBzaG9ydFZhbHVlID0gcGFyc2VGbG9hdCgoc3VmZml4TnVtICE9PSAwID8gdmFsdWUgLyBNYXRoLnBvdygxMDAwLCBzdWZmaXhOdW0pIDogdmFsdWUpLnRvUHJlY2lzaW9uKHByZWNpc2lvbikpO1xuICAgICAgICBzaG9ydFN0cmluZyA9IHNob3J0VmFsdWUudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgZG90TGVzc1Nob3J0VmFsdWU6IHN0cmluZyA9IGAke3Nob3J0VmFsdWV9YC5yZXBsYWNlKC9bXmEtekEtWiAwLTldKy9nLCAnJyk7XG5cbiAgICAgICAgaWYoZG90TGVzc1Nob3J0VmFsdWUubGVuZ3RoIDw9IDIpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZihzaG9ydFZhbHVlICUgMSAhPT0gMCkge1xuICAgICAgICBzaG9ydFN0cmluZyA9IHNob3J0VmFsdWUudG9GaXhlZCgxKTtcbiAgICAgIH1cblxuICAgICAgbmV3VmFsdWUgPSBzaG9ydFN0cmluZyArIHN1ZmZpeGVzW3N1ZmZpeE51bV07XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld1ZhbHVlO1xuICB9O1xuXG4gIC8vIFJldHVybiB0aGUgYWN0aW9ucyBvYmplY3RcbiAgcmV0dXJuIHtcbiAgICBhZGRSZWFjdGlvbixcbiAgICBkZWxldGVSZWFjdGlvbixcbiAgICBnZXRSZWFjdGlvbkNvdW50LFxuICAgIGhhc1JlYWN0aW9uLFxuICAgIGFiYnJldmlhdGVDb3VudCxcbiAgICB1cGRhdGVSZWFjdGlvbkFkYXB0ZXIsXG4gICAgdXBkYXRlUmVhY3Rpb25BZGFwdGVyT3B0aW9uc1xuICB9O1xufTtcblxuIl0sCiAgIm1hcHBpbmdzIjogIkFBSUEsT0FBUSxRQUFBQSxNQUFXLGtCQUVuQixPQUFRLHlCQUFBQyxNQUE0QixpREFDcEMsT0FBUSxzQkFBQUMsTUFBeUIsNkJBQ2pDLE9BQVEsZUFBQUMsRUFBYSxZQUFBQyxNQUFlLGtCQU1wQyxNQUFNQyxFQUFpQyxZQWtDakNDLEVBQTJCLENBQUNDLEVBQWdCQyxJQUFxQ1AsRUFBc0JNLENBQUssRUFHNUdFLEVBQTBCLENB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QUFLLFNBQVMsQ0FBQyxNQUFBZSxFQUFPLEtBQU01QixFQUFtQixTQUFTLENBQUMsRUFDbkQ0QixDQUNSLENBQ0YsRUFzQ0UsZ0JBcEN1QlEsR0FBMEIsQ0FDakQsTUFBTWQsRUFBZ0JjLEdBQVMsRUFDL0IsSUFBSUMsRUFBbUJmLEVBQU0sU0FBUyxFQUV0QyxHQUFHQSxHQUFTLElBQU0sQ0FDaEIsTUFBTWdCLEVBQXFCLENBQUMsR0FBSSxJQUFLLElBQUssSUFBSyxHQUFHLEVBQzVDQyxFQUFvQixLQUFLLE1BQU0sR0FBR2pCLENBQUssR0FBRyxPQUFTLENBQUMsRUFDMUQsSUFBSWtCLEVBQXFCLEVBQ3JCQyxFQUFzQixHQUUxQixRQUFRQyxFQUFZLEVBQUdBLEdBQWEsSUFDbENGLEVBQWEsWUFBWUQsSUFBYyxFQUFJakIsRUFBUSxLQUFLLElBQUksSUFBTWlCLENBQVMsRUFBSWpCLEdBQU8sWUFBWW9CLENBQVMsQ0FBQyxFQUM1R0QsRUFBY0QsRUFBVyxTQUFTLEVBRy9CLEVBRitCLEdBQUdBLENBQVUsR0FBRyxRQUFRLGtCQUFtQixFQUFFLEVBRTFELFFBQVUsSUFMTUUsSUFLckMsQ0FLQ0YsRUFBYSxJQUFNLElBQ3BCQyxFQUFjRCxFQUFXLFFBQVEsQ0FBQyxHQUdwQ0gsRUFBV0ksRUFBY0gsRUFBU0MsQ0FBUyxDQUM3QyxDQUVBLE9BQU9GLENBQ1QsRUFTRSxzQkFoTjZCTSxHQUE2RSxDQUMxRzVCLEVBQXdCNEIsRUFDeEIzQixFQUFtQlQsRUFBd0JRLEVBQXVCRCxDQUFzQixDQUMxRixFQThNRSw2QkE1TW9DUixHQUEwQyxDQUM5RVEsRUFBeUIsQ0FBQyxHQUFHQSxFQUF3QixHQUFHUixDQUFPLEVBQy9EVSxFQUFtQlQsRUFBd0JRLEVBQXVCRCxDQUFzQixDQUMxRixDQTBNQSxDQUNGIiwKICAibmFtZXMiOiBbIkZsdXgiLCAidmFsaWRhdGVSZWFjdGlvbklucHV0IiwgIlJFQUNUSU9OX0NPTlNUQU5UUyIsICJhcHBNdXRhdGlvbiIsICJhcHBRdWVyeSIsICJEQVRBX1RZUEUiLCAiZGVmYXVsdFJlYWN0aW9uVmFsaWRhdG9yIiwgImlucHV0IiwgIm9wdGlvbnMiLCAiY3JlYXRlUmVhY3Rpb25WYWxpZGF0b3IiLCAiY3VzdG9tQWRhcHRlciIsICJ2YWxpZGF0b3JPcHRpb25zIiwgIm1lcmdlZE9wdGlvbnMiLCAidmFsaWRhdGVkIiwgImNyZWF0ZVJlYWN0aW9uQWN0aW9ucyIsICJmbHV4IiwgInJlYWN0aW9uQWRhcHRlck9wdGlvbnMiLCAiY3VzdG9tUmVhY3Rpb25BZGFwdGVyIiwgInZhbGlkYXRlUmVhY3Rpb24iLCAiaXRlbUlkIiwgIml0ZW1UeXBlIiwgInJlYWN0aW9uIiwgInJlYWN0aW9uUHJvcHMiLCAidmFsaWRhdGVkUmVhY3Rpb24iLCAidmFsdWUiLCAiZm9ybWF0VmFsdWUiLCAicXVlcnlWYXJpYWJsZXMiLCAib25TdWNjZXNzIiwgImRhdGEiLCAiYWRkZWRSZWFjdGlvbiIsICJlcnJvciIsICJyZWFjdGlvbk5hbWUiLCAiZGVsZXRlZFJlYWN0aW9uIiwgImdldFJlYWN0aW9uQ291bnQiLCAicmVhY3Rpb25Db3VudCIsICJkaXJlY3Rpb24iLCAiaGFzUmVhY3Rpb24iLCAiaGFzUmVhY3Rpb25SZXN1bHQiLCAiY291bnQiLCAibmV3VmFsdWUiLCAic3VmZml4ZXMiLCAic3VmZml4TnVtIiwgInNob3J0VmFsdWUiLCAic2hvcnRTdHJpbmciLCAicHJlY2lzaW9uIiwgImFkYXB0ZXIiXQp9Cg==
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Copyright (c) 2025-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */
5
+ import type { FluxFramework } from '@nlabs/arkhamjs';
6
+ export interface SSEEvent {
7
+ readonly data: string;
8
+ readonly event?: string;
9
+ readonly id?: string;
10
+ readonly retry?: number;
11
+ }
12
+ export interface SSEConnectionOptions {
13
+ readonly headers?: Record<string, string>;
14
+ readonly maxRetries?: number;
15
+ readonly retryInterval?: number;
16
+ readonly timeout?: number;
17
+ readonly url: string;
18
+ readonly withCredentials?: boolean;
19
+ }
20
+ export interface SSEActionsOptions {
21
+ readonly onClose?: (event: CloseEvent) => void;
22
+ readonly onError?: (error: Event) => void;
23
+ readonly onMessage?: (event: SSEEvent) => void;
24
+ readonly onOpen?: (event: Event) => void;
25
+ readonly sseOptions?: SSEConnectionOptions;
26
+ }
27
+ export interface SSEActions {
28
+ readonly connect: (options?: SSEConnectionOptions) => Promise<void>;
29
+ readonly disconnect: () => void;
30
+ readonly reconnect: () => Promise<void>;
31
+ readonly isConnected: () => boolean;
32
+ readonly sendMessage: (data: string, eventType?: string) => void;
33
+ readonly addEventListener: (eventType: string, handler: (event: SSEEvent) => void) => void;
34
+ readonly removeEventListener: (eventType: string, handler: (event: SSEEvent) => void) => void;
35
+ readonly updateSSEOptions: (options: SSEActionsOptions) => void;
36
+ }
37
+ export declare const createSSEActions: (flux: FluxFramework, options?: SSEActionsOptions) => SSEActions;
@@ -0,0 +1,2 @@
1
+ const w=(s,i)=>{let t=null,d=0,E=null,r=new Map;const a={url:"",withCredentials:!1,retryInterval:5e3,maxRetries:5,timeout:3e4,...i?.sseOptions},y=e=>{const n={id:e.lastEventId,event:e.type,data:e.data};i?.onMessage?.(n);const o=r.get(e.type);o&&o.forEach(m=>m(n)),s.dispatch({type:"SSE_MESSAGE_RECEIVED",event:n})},S=e=>{i?.onError?.(e),s.dispatch({type:"SSE_CONNECTION_ERROR",error:e}),t&&d<(a.maxRetries||5)&&(d++,setTimeout(()=>v(),a.retryInterval))},u=e=>{d=0,i?.onOpen?.(e),s.dispatch({type:"SSE_CONNECTION_OPEN",event:e})},c=async e=>{const n={...a,...e};if(!n.url)throw new Error("SSE URL is required");l();try{t=new EventSource(n.url,{withCredentials:n.withCredentials}),t.onmessage=y,t.onerror=S,t.onopen=u,n.timeout&&setTimeout(()=>{t&&t.readyState===EventSource.CONNECTING&&(t.close(),S(new Event("timeout")))},n.timeout)}catch(o){throw S(o),o}},l=()=>{t&&(t.close(),t=null),E&&(clearTimeout(E),E=null)},v=async()=>{l(),await c()},p=()=>t?.readyState===EventSource.OPEN;return{connect:c,disconnect:l,reconnect:v,isConnected:p,sendMessage:(e,n)=>{if(!p())throw new Error("SSE connection not established");s.dispatch({type:"SSE_MESSAGE_SENT",data:e,eventType:n})},addEventListener:(e,n)=>{r.has(e)||r.set(e,new Set),r.get(e).add(n)},removeEventListener:(e,n)=>{const o=r.get(e);o&&o.delete(n)},updateSSEOptions:e=>{Object.assign(a,e.sseOptions)}}};export{w as createSSEActions};
2
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FjdGlvbnMvc3NlQWN0aW9ucy9zc2VBY3Rpb25zLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyNS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7Rmx1eEZyYW1ld29ya30gZnJvbSAnQG5sYWJzL2Fya2hhbWpzJztcblxuZXhwb3J0IGludGVyZmFjZSBTU0VFdmVudCB7XG4gIHJlYWRvbmx5IGRhdGE6IHN0cmluZztcbiAgcmVhZG9ubHkgZXZlbnQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlkPzogc3RyaW5nO1xuICByZWFkb25seSByZXRyeT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTU0VDb25uZWN0aW9uT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICByZWFkb25seSBtYXhSZXRyaWVzPzogbnVtYmVyO1xuICByZWFkb25seSByZXRyeUludGVydmFsPzogbnVtYmVyO1xuICByZWFkb25seSB0aW1lb3V0PzogbnVtYmVyO1xuICByZWFkb25seSB1cmw6IHN0cmluZztcbiAgcmVhZG9ubHkgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTU0VBY3Rpb25zT3B0aW9ucyB7XG4gIHJlYWRvbmx5IG9uQ2xvc2U/OiAoZXZlbnQ6IENsb3NlRXZlbnQpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IG9uRXJyb3I/OiAoZXJyb3I6IEV2ZW50KSA9PiB2b2lkO1xuICByZWFkb25seSBvbk1lc3NhZ2U/OiAoZXZlbnQ6IFNTRUV2ZW50KSA9PiB2b2lkO1xuICByZWFkb25seSBvbk9wZW4/OiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkO1xuICByZWFkb25seSBzc2VPcHRpb25zPzogU1NFQ29ubmVjdGlvbk9wdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU1NFQWN0aW9ucyB7XG4gIHJlYWRvbmx5IGNvbm5lY3Q6IChvcHRpb25zPzogU1NFQ29ubmVjdGlvbk9wdGlvbnMpID0+IFByb21pc2U8dm9pZD47XG4gIHJlYWRvbmx5IGRpc2Nvbm5lY3Q6ICgpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IHJlY29ubmVjdDogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcmVhZG9ubHkgaXNDb25uZWN0ZWQ6ICgpID0+IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNlbmRNZXNzYWdlOiAoZGF0YTogc3RyaW5nLCBldmVudFR5cGU/OiBzdHJpbmcpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IGFkZEV2ZW50TGlzdGVuZXI6IChldmVudFR5cGU6IHN0cmluZywgaGFuZGxlcjogKGV2ZW50OiBTU0VFdmVudCkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgcmVtb3ZlRXZlbnRMaXN0ZW5lcjogKGV2ZW50VHlwZTogc3RyaW5nLCBoYW5kbGVyOiAoZXZlbnQ6IFNTRUV2ZW50KSA9PiB2b2lkKSA9PiB2b2lkO1xuICByZWFkb25seSB1cGRhdGVTU0VPcHRpb25zOiAob3B0aW9uczogU1NFQWN0aW9uc09wdGlvbnMpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVTU0VBY3Rpb25zID0gKFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICBvcHRpb25zPzogU1NFQWN0aW9uc09wdGlvbnNcbik6IFNTRUFjdGlvbnMgPT4ge1xuICBsZXQgZXZlbnRTb3VyY2U6IEV2ZW50U291cmNlIHwgbnVsbCA9IG51bGw7XG4gIGxldCByZXRyeUNvdW50ID0gMDtcbiAgbGV0IHJldHJ5VGltZW91dDogTm9kZUpTLlRpbWVvdXQgfCBudWxsID0gbnVsbDtcbiAgbGV0IGV2ZW50SGFuZGxlcnMgPSBuZXcgTWFwPHN0cmluZywgU2V0PChldmVudDogU1NFRXZlbnQpID0+IHZvaWQ+PigpO1xuXG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zOiBTU0VDb25uZWN0aW9uT3B0aW9ucyA9IHtcbiAgICB1cmw6ICcnLFxuICAgIHdpdGhDcmVkZW50aWFsczogZmFsc2UsXG4gICAgcmV0cnlJbnRlcnZhbDogNTAwMCxcbiAgICBtYXhSZXRyaWVzOiA1LFxuICAgIHRpbWVvdXQ6IDMwMDAwLFxuICAgIC4uLm9wdGlvbnM/LnNzZU9wdGlvbnNcbiAgfTtcblxuICBjb25zdCBoYW5kbGVNZXNzYWdlID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcbiAgICBjb25zdCBzc2VFdmVudDogU1NFRXZlbnQgPSB7XG4gICAgICBpZDogZXZlbnQubGFzdEV2ZW50SWQsXG4gICAgICBldmVudDogZXZlbnQudHlwZSxcbiAgICAgIGRhdGE6IGV2ZW50LmRhdGFcbiAgICB9O1xuXG4gICAgLy8gQ2FsbCBnbG9iYWwgbWVzc2FnZSBoYW5kbGVyXG4gICAgb3B0aW9ucz8ub25NZXNzYWdlPy4oc3NlRXZlbnQpO1xuXG4gICAgLy8gQ2FsbCBzcGVjaWZpYyBldmVudCBoYW5kbGVyc1xuICAgIGNvbnN0IGhhbmRsZXJzID0gZXZlbnRIYW5kbGVycy5nZXQoZXZlbnQudHlwZSk7XG4gICAgaWYgKGhhbmRsZXJzKSB7XG4gICAgICBoYW5kbGVycy5mb3JFYWNoKGhhbmRsZXIgPT4gaGFuZGxlcihzc2VFdmVudCkpO1xuICAgIH1cblxuICAgIC8vIERpc3BhdGNoIHRvIGZsdXggc3RvcmVcbiAgICBmbHV4LmRpc3BhdGNoKHtcbiAgICAgIHR5cGU6ICdTU0VfTUVTU0FHRV9SRUNFSVZFRCcsXG4gICAgICBldmVudDogc3NlRXZlbnRcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVFcnJvciA9IChlcnJvcjogRXZlbnQpID0+IHtcbiAgICBvcHRpb25zPy5vbkVycm9yPy4oZXJyb3IpO1xuXG4gICAgZmx1eC5kaXNwYXRjaCh7XG4gICAgICB0eXBlOiAnU1NFX0NPTk5FQ1RJT05fRVJST1InLFxuICAgICAgZXJyb3JcbiAgICB9KTtcblxuICAgIC8vIEF1dG8tcmVjb25uZWN0IGlmIG5vdCBtYW51YWxseSBkaXNjb25uZWN0ZWRcbiAgICBpZiAoZXZlbnRTb3VyY2UgJiYgcmV0cnlDb3VudCA8IChkZWZhdWx0T3B0aW9ucy5tYXhSZXRyaWVzIHx8IDUpKSB7XG4gICAgICByZXRyeUNvdW50Kys7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHJlY29ubmVjdCgpLCBkZWZhdWx0T3B0aW9ucy5yZXRyeUludGVydmFsKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT3BlbiA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICByZXRyeUNvdW50ID0gMDtcbiAgICBvcHRpb25zPy5vbk9wZW4/LihldmVudCk7XG5cbiAgICBmbHV4LmRpc3BhdGNoKHtcbiAgICAgIHR5cGU6ICdTU0VfQ09OTkVDVElPTl9PUEVOJyxcbiAgICAgIGV2ZW50XG4gICAgfSk7XG4gIH07XG5cbiAgLy8gY29uc3QgaGFuZGxlQ2xvc2UgPSAoZXZlbnQ6IENsb3NlRXZlbnQpID0+IHtcbiAgLy8gICBvcHRpb25zPy5vbkNsb3NlPy4oZXZlbnQpO1xuXG4gIC8vICAgZmx1eC5kaXNwYXRjaCh7XG4gIC8vICAgICB0eXBlOiAnU1NFX0NPTk5FQ1RJT05fQ0xPU0VEJyxcbiAgLy8gICAgIGV2ZW50XG4gIC8vICAgfSk7XG4gIC8vIH07XG5cbiAgY29uc3QgY29ubmVjdCA9IGFzeW5jIChjb25uZWN0aW9uT3B0aW9ucz86IFNTRUNvbm5lY3Rpb25PcHRpb25zKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3Qgb3B0cyA9IHsgLi4uZGVmYXVsdE9wdGlvbnMsIC4uLmNvbm5lY3Rpb25PcHRpb25zIH07XG5cbiAgICBpZiAoIW9wdHMudXJsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NTRSBVUkwgaXMgcmVxdWlyZWQnKTtcbiAgICB9XG5cbiAgICBkaXNjb25uZWN0KCk7XG5cbiAgICB0cnkge1xuICAgICAgZXZlbnRTb3VyY2UgPSBuZXcgRXZlbnRTb3VyY2Uob3B0cy51cmwsIHtcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiBvcHRzLndpdGhDcmVkZW50aWFsc1xuICAgICAgfSk7XG5cbiAgICAgIGV2ZW50U291cmNlLm9ubWVzc2FnZSA9IGhhbmRsZU1lc3NhZ2U7XG4gICAgICBldmVudFNvdXJjZS5vbmVycm9yID0gaGFuZGxlRXJyb3I7XG4gICAgICBldmVudFNvdXJjZS5vbm9wZW4gPSBoYW5kbGVPcGVuO1xuXG4gICAgICAvLyBTZXQgdGltZW91dFxuICAgICAgaWYgKG9wdHMudGltZW91dCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnRTb3VyY2UgJiYgZXZlbnRTb3VyY2UucmVhZHlTdGF0ZSA9PT0gRXZlbnRTb3VyY2UuQ09OTkVDVElORykge1xuICAgICAgICAgICAgZXZlbnRTb3VyY2UuY2xvc2UoKTtcbiAgICAgICAgICAgIGhhbmRsZUVycm9yKG5ldyBFdmVudCgndGltZW91dCcpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIG9wdHMudGltZW91dCk7XG4gICAgICB9XG5cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaGFuZGxlRXJyb3IoZXJyb3IgYXMgRXZlbnQpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGRpc2Nvbm5lY3QgPSAoKTogdm9pZCA9PiB7XG4gICAgaWYgKGV2ZW50U291cmNlKSB7XG4gICAgICBldmVudFNvdXJjZS5jbG9zZSgpO1xuICAgICAgZXZlbnRTb3VyY2UgPSBudWxsO1xuICAgIH1cblxuICAgIGlmIChyZXRyeVRpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dChyZXRyeVRpbWVvdXQpO1xuICAgICAgcmV0cnlUaW1lb3V0ID0gbnVsbDtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgcmVjb25uZWN0ID0gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGRpc2Nvbm5lY3QoKTtcbiAgICBhd2FpdCBjb25uZWN0KCk7XG4gIH07XG5cbiAgY29uc3QgaXNDb25uZWN0ZWQgPSAoKTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuIGV2ZW50U291cmNlPy5yZWFkeVN0YXRlID09PSBFdmVudFNvdXJjZS5PUEVOO1xuICB9O1xuXG4gIGNvbnN0IHNlbmRNZXNzYWdlID0gKGRhdGE6IHN0cmluZywgZXZlbnRUeXBlPzogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgaWYgKCFpc0Nvbm5lY3RlZCgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NTRSBjb25uZWN0aW9uIG5vdCBlc3RhYmxpc2hlZCcpO1xuICAgIH1cblxuICAgIC8vIE5vdGU6IFNTRSBpcyBvbmUtd2F5LCBidXQgd2UgY2FuIGRpc3BhdGNoIHRvIGZsdXggZm9yIGxvZ2dpbmdcbiAgICBmbHV4LmRpc3BhdGNoKHtcbiAgICAgIHR5cGU6ICdTU0VfTUVTU0FHRV9TRU5UJyxcbiAgICAgIGRhdGEsXG4gICAgICBldmVudFR5cGVcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBhZGRFdmVudExpc3RlbmVyID0gKGV2ZW50VHlwZTogc3RyaW5nLCBoYW5kbGVyOiAoZXZlbnQ6IFNTRUV2ZW50KSA9PiB2b2lkKTogdm9pZCA9PiB7XG4gICAgaWYgKCFldmVudEhhbmRsZXJzLmhhcyhldmVudFR5cGUpKSB7XG4gICAgICBldmVudEhhbmRsZXJzLnNldChldmVudFR5cGUsIG5ldyBTZXQoKSk7XG4gICAgfVxuICAgIGV2ZW50SGFuZGxlcnMuZ2V0KGV2ZW50VHlwZSkhLmFkZChoYW5kbGVyKTtcbiAgfTtcblxuICBjb25zdCByZW1vdmVFdmVudExpc3RlbmVyID0gKGV2ZW50VHlwZTogc3RyaW5nLCBoYW5kbGVyOiAoZXZlbnQ6IFNTRUV2ZW50KSA9PiB2b2lkKTogdm9pZCA9PiB7XG4gICAgY29uc3QgaGFuZGxlcnMgPSBldmVudEhhbmRsZXJzLmdldChldmVudFR5cGUpO1xuICAgIGlmIChoYW5kbGVycykge1xuICAgICAgaGFuZGxlcnMuZGVsZXRlKGhhbmRsZXIpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCB1cGRhdGVTU0VPcHRpb25zID0gKG5ld09wdGlvbnM6IFNTRUFjdGlvbnNPcHRpb25zKTogdm9pZCA9PiB7XG4gICAgT2JqZWN0LmFzc2lnbihkZWZhdWx0T3B0aW9ucywgbmV3T3B0aW9ucy5zc2VPcHRpb25zKTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGNvbm5lY3QsXG4gICAgZGlzY29ubmVjdCxcbiAgICByZWNvbm5lY3QsXG4gICAgaXNDb25uZWN0ZWQsXG4gICAgc2VuZE1lc3NhZ2UsXG4gICAgYWRkRXZlbnRMaXN0ZW5lcixcbiAgICByZW1vdmVFdmVudExpc3RlbmVyLFxuICAgIHVwZGF0ZVNTRU9wdGlvbnNcbiAgfTtcbn07Il0sCiAgIm1hcHBpbmdzIjogIkFBMENPLE1BQU1BLEVBQW1CLENBQzlCQyxFQUNBQyxJQUNlLENBQ2YsSUFBSUMsRUFBa0MsS0FDbENDLEVBQWEsRUFDYkMsRUFBc0MsS0FDdENDLEVBQWdCLElBQUksSUFFeEIsTUFBTUMsRUFBdUMsQ0FDM0MsSUFBSyxHQUNMLGdCQUFpQixHQUNqQixjQUFlLElBQ2YsV0FBWSxFQUNaLFFBQVMsSUFDVCxHQUFHTCxHQUFTLFVBQ2QsRUFFTU0sRUFBaUJDLEdBQXdCLENBQzdDLE1BQU1DLEVBQXFCLENBQ3pCLEdBQUlELEVBQU0sWUFDVixNQUFPQSxFQUFNLEtBQ2IsS0FBTUEsRUFBTSxJQUNkLEVBR0FQLEdBQVMsWUFBWVEsQ0FBUSxFQUc3QixNQUFNQyxFQUFXTCxFQUFjLElBQUlHLEVBQU0sSUFBSSxFQUN6Q0UsR0FDRkEsRUFBUyxRQUFRQyxHQUFXQSxFQUFRRixDQUFRLENBQUMsRUFJL0NULEVBQUssU0FBUyxDQUNaLEtBQU0sdUJBQ04sTUFBT1MsQ0FDVCxDQUFDLENBQ0gsRUFFTUcsRUFBZUMsR0FBaUIsQ0FDcENaLEdBQVMsVUFBVVksQ0FBSyxFQUV4QmIsRUFBSyxTQUFTLENBQ1osS0FBTSx1QkFDTixNQUFBYSxDQUNGLENBQUMsRUFHR1gsR0FBZUMsR0FBY0csRUFBZSxZQUFjLEtBQzVESCxJQUNBLFdBQVcsSUFBTVcsRUFBVSxFQUFHUixFQUFlLGFBQWEsRUFFOUQsRUFFTVMsRUFBY1AsR0FBaUIsQ0FDbkNMLEVBQWEsRUFDYkYsR0FBUyxTQUFTTyxDQUFLLEVBRXZCUixFQUFLLFNBQVMsQ0FDWixLQUFNLHNCQUNOLE1BQUFRLENBQ0YsQ0FBQyxDQUNILEVBV01RLEVBQVUsTUFBT0MsR0FBNEQsQ0FDakYsTUFBTUMsRUFBTyxDQUFFLEdBQUdaLEVBQWdCLEdBQUdXLENBQWtCLEVBRXZELEdBQUksQ0FBQ0MsRUFBSyxJQUNSLE1BQU0sSUFBSSxNQUFNLHFCQUFxQixFQUd2Q0MsRUFBVyxFQUVYLEdBQUksQ0FDRmpCLEVBQWMsSUFBSSxZQUFZZ0IsRUFBSyxJQUFLLENBQ3RDLGdCQUFpQkEsRUFBSyxlQUN4QixDQUFDLEVBRURoQixFQUFZLFVBQVlLLEVBQ3hCTCxFQUFZLFFBQVVVLEVBQ3RCVixFQUFZLE9BQVNhLEVBR2pCRyxFQUFLLFNBQ1AsV0FBVyxJQUFNLENBQ1hoQixHQUFlQSxFQUFZLGFBQWUsWUFBWSxhQUN4REEsRUFBWSxNQUFNLEVBQ2xCVSxFQUFZLElBQUksTUFBTSxTQUFTLENBQUMsRUFFcEMsRUFBR00sRUFBSyxPQUFPLENBR25CLE9BQVNMLEVBQU8sQ0FDZCxNQUFBRCxFQUFZQyxDQUFjLEVBQ3BCQSxDQUNSLENBQ0YsRUFFTU0sRUFBYSxJQUFZLENBQ3pCakIsSUFDRkEsRUFBWSxNQUFNLEVBQ2xCQSxFQUFjLE1BR1pFLElBQ0YsYUFBYUEsQ0FBWSxFQUN6QkEsRUFBZSxLQUVuQixFQUVNVSxFQUFZLFNBQTJCLENBQzNDSyxFQUFXLEVBQ1gsTUFBTUgsRUFBUSxDQUNoQixFQUVNSSxFQUFjLElBQ1hsQixHQUFhLGFBQWUsWUFBWSxLQWtDakQsTUFBTyxDQUNMLFFBQUFjLEVBQ0EsV0FBQUcsRUFDQSxVQUFBTCxFQUNBLFlBQUFNLEVBQ0EsWUFwQ2tCLENBQUNDLEVBQWNDLElBQTZCLENBQzlELEdBQUksQ0FBQ0YsRUFBWSxFQUNmLE1BQU0sSUFBSSxNQUFNLGdDQUFnQyxFQUlsRHBCLEVBQUssU0FBUyxDQUNaLEtBQU0sbUJBQ04sS0FBQXFCLEVBQ0EsVUFBQUMsQ0FDRixDQUFDLENBQ0gsRUEwQkUsaUJBeEJ1QixDQUFDQSxFQUFtQlgsSUFBNkMsQ0FDbkZOLEVBQWMsSUFBSWlCLENBQVMsR0FDOUJqQixFQUFjLElBQUlpQixFQUFXLElBQUksR0FBSyxFQUV4Q2pCLEVBQWMsSUFBSWlCLENBQVMsRUFBRyxJQUFJWCxDQUFPLENBQzNDLEVBb0JFLG9CQWxCMEIsQ0FBQ1csRUFBbUJYLElBQTZDLENBQzNGLE1BQU1ELEVBQVdMLEVBQWMsSUFBSWlCLENBQVMsRUFDeENaLEdBQ0ZBLEVBQVMsT0FBT0MsQ0FBTyxDQUUzQixFQWNFLGlCQVp3QlksR0FBd0MsQ0FDaEUsT0FBTyxPQUFPakIsRUFBZ0JpQixFQUFXLFVBQVUsQ0FDckQsQ0FXQSxDQUNGIiwKICAibmFtZXMiOiBbImNyZWF0ZVNTRUFjdGlvbnMiLCAiZmx1eCIsICJvcHRpb25zIiwgImV2ZW50U291cmNlIiwgInJldHJ5Q291bnQiLCAicmV0cnlUaW1lb3V0IiwgImV2ZW50SGFuZGxlcnMiLCAiZGVmYXVsdE9wdGlvbnMiLCAiaGFuZGxlTWVzc2FnZSIsICJldmVudCIsICJzc2VFdmVudCIsICJoYW5kbGVycyIsICJoYW5kbGVyIiwgImhhbmRsZUVycm9yIiwgImVycm9yIiwgInJlY29ubmVjdCIsICJoYW5kbGVPcGVuIiwgImNvbm5lY3QiLCAiY29ubmVjdGlvbk9wdGlvbnMiLCAib3B0cyIsICJkaXNjb25uZWN0IiwgImlzQ29ubmVjdGVkIiwgImRhdGEiLCAiZXZlbnRUeXBlIiwgIm5ld09wdGlvbnMiXQp9Cg==