@om_patel_26/chat-widget 1.0.1

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 (203) hide show
  1. package/README.md +276 -0
  2. package/dist/_virtual/_plugin-vue_export-helper.cjs.js +2 -0
  3. package/dist/_virtual/_plugin-vue_export-helper.cjs.js.map +1 -0
  4. package/dist/_virtual/_plugin-vue_export-helper.esm.js +11 -0
  5. package/dist/_virtual/_plugin-vue_export-helper.esm.js.map +1 -0
  6. package/dist/adapters/vue/index.d.ts +7 -0
  7. package/dist/adapters/vue/index.d.ts.map +1 -0
  8. package/dist/adapters/vue/useChatMode.d.ts +21 -0
  9. package/dist/adapters/vue/useChatMode.d.ts.map +1 -0
  10. package/dist/components/ChatWidget.d.ts +43 -0
  11. package/dist/components/ChatWidget.d.ts.map +1 -0
  12. package/dist/components/ChatWidget.vue.cjs.js +2 -0
  13. package/dist/components/ChatWidget.vue.cjs.js.map +1 -0
  14. package/dist/components/ChatWidget.vue.cjs2.js +2 -0
  15. package/dist/components/ChatWidget.vue.cjs2.js.map +1 -0
  16. package/dist/components/ChatWidget.vue.esm.js +8 -0
  17. package/dist/components/ChatWidget.vue.esm.js.map +1 -0
  18. package/dist/components/ChatWidget.vue.esm2.js +331 -0
  19. package/dist/components/ChatWidget.vue.esm2.js.map +1 -0
  20. package/dist/composables/useChatWidget.cjs.js +2 -0
  21. package/dist/composables/useChatWidget.cjs.js.map +1 -0
  22. package/dist/composables/useChatWidget.d.ts +34 -0
  23. package/dist/composables/useChatWidget.d.ts.map +1 -0
  24. package/dist/composables/useChatWidget.esm.js +72 -0
  25. package/dist/composables/useChatWidget.esm.js.map +1 -0
  26. package/dist/core/stateManager.cjs.js +2 -0
  27. package/dist/core/stateManager.cjs.js.map +1 -0
  28. package/dist/core/stateManager.d.ts +136 -0
  29. package/dist/core/stateManager.d.ts.map +1 -0
  30. package/dist/core/stateManager.esm.js +907 -0
  31. package/dist/core/stateManager.esm.js.map +1 -0
  32. package/dist/core/types.d.ts +66 -0
  33. package/dist/core/types.d.ts.map +1 -0
  34. package/dist/entry/next.d.ts +9 -0
  35. package/dist/entry/next.d.ts.map +1 -0
  36. package/dist/entry/nuxt.d.ts +10 -0
  37. package/dist/entry/nuxt.d.ts.map +1 -0
  38. package/dist/entry/react.d.ts +10 -0
  39. package/dist/entry/react.d.ts.map +1 -0
  40. package/dist/entry/vanilla.d.ts +33 -0
  41. package/dist/entry/vanilla.d.ts.map +1 -0
  42. package/dist/entry/vite.d.ts +11 -0
  43. package/dist/entry/vite.d.ts.map +1 -0
  44. package/dist/entry/vue.d.ts +11 -0
  45. package/dist/entry/vue.d.ts.map +1 -0
  46. package/dist/hooks/useChatMode.d.ts +17 -0
  47. package/dist/hooks/useChatMode.d.ts.map +1 -0
  48. package/dist/index.cjs.js +2 -0
  49. package/dist/index.cjs.js.map +1 -0
  50. package/dist/index.d.ts +14 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.esm.js +25 -0
  53. package/dist/index.esm.js.map +1 -0
  54. package/dist/node_modules/jose/dist/browser/jws/compact/sign.cjs.js +2 -0
  55. package/dist/node_modules/jose/dist/browser/jws/compact/sign.cjs.js.map +1 -0
  56. package/dist/node_modules/jose/dist/browser/jws/compact/sign.esm.js +21 -0
  57. package/dist/node_modules/jose/dist/browser/jws/compact/sign.esm.js.map +1 -0
  58. package/dist/node_modules/jose/dist/browser/jws/flattened/sign.cjs.js +2 -0
  59. package/dist/node_modules/jose/dist/browser/jws/flattened/sign.cjs.js.map +1 -0
  60. package/dist/node_modules/jose/dist/browser/jws/flattened/sign.esm.js +84 -0
  61. package/dist/node_modules/jose/dist/browser/jws/flattened/sign.esm.js.map +1 -0
  62. package/dist/node_modules/jose/dist/browser/jwt/produce.cjs.js +2 -0
  63. package/dist/node_modules/jose/dist/browser/jwt/produce.cjs.js.map +1 -0
  64. package/dist/node_modules/jose/dist/browser/jwt/produce.esm.js +72 -0
  65. package/dist/node_modules/jose/dist/browser/jwt/produce.esm.js.map +1 -0
  66. package/dist/node_modules/jose/dist/browser/jwt/sign.cjs.js +2 -0
  67. package/dist/node_modules/jose/dist/browser/jwt/sign.cjs.js.map +1 -0
  68. package/dist/node_modules/jose/dist/browser/jwt/sign.esm.js +22 -0
  69. package/dist/node_modules/jose/dist/browser/jwt/sign.esm.js.map +1 -0
  70. package/dist/node_modules/jose/dist/browser/key/import.cjs.js +2 -0
  71. package/dist/node_modules/jose/dist/browser/key/import.cjs.js.map +1 -0
  72. package/dist/node_modules/jose/dist/browser/key/import.esm.js +11 -0
  73. package/dist/node_modules/jose/dist/browser/key/import.esm.js.map +1 -0
  74. package/dist/node_modules/jose/dist/browser/lib/buffer_utils.cjs.js +2 -0
  75. package/dist/node_modules/jose/dist/browser/lib/buffer_utils.cjs.js.map +1 -0
  76. package/dist/node_modules/jose/dist/browser/lib/buffer_utils.esm.js +18 -0
  77. package/dist/node_modules/jose/dist/browser/lib/buffer_utils.esm.js.map +1 -0
  78. package/dist/node_modules/jose/dist/browser/lib/check_key_type.cjs.js +2 -0
  79. package/dist/node_modules/jose/dist/browser/lib/check_key_type.cjs.js.map +1 -0
  80. package/dist/node_modules/jose/dist/browser/lib/check_key_type.esm.js +77 -0
  81. package/dist/node_modules/jose/dist/browser/lib/check_key_type.esm.js.map +1 -0
  82. package/dist/node_modules/jose/dist/browser/lib/crypto_key.cjs.js +2 -0
  83. package/dist/node_modules/jose/dist/browser/lib/crypto_key.cjs.js.map +1 -0
  84. package/dist/node_modules/jose/dist/browser/lib/crypto_key.esm.js +101 -0
  85. package/dist/node_modules/jose/dist/browser/lib/crypto_key.esm.js.map +1 -0
  86. package/dist/node_modules/jose/dist/browser/lib/epoch.cjs.js +2 -0
  87. package/dist/node_modules/jose/dist/browser/lib/epoch.cjs.js.map +1 -0
  88. package/dist/node_modules/jose/dist/browser/lib/epoch.esm.js +5 -0
  89. package/dist/node_modules/jose/dist/browser/lib/epoch.esm.js.map +1 -0
  90. package/dist/node_modules/jose/dist/browser/lib/invalid_key_input.cjs.js +2 -0
  91. package/dist/node_modules/jose/dist/browser/lib/invalid_key_input.cjs.js.map +1 -0
  92. package/dist/node_modules/jose/dist/browser/lib/invalid_key_input.esm.js +32 -0
  93. package/dist/node_modules/jose/dist/browser/lib/invalid_key_input.esm.js.map +1 -0
  94. package/dist/node_modules/jose/dist/browser/lib/is_disjoint.cjs.js +2 -0
  95. package/dist/node_modules/jose/dist/browser/lib/is_disjoint.cjs.js.map +1 -0
  96. package/dist/node_modules/jose/dist/browser/lib/is_disjoint.esm.js +25 -0
  97. package/dist/node_modules/jose/dist/browser/lib/is_disjoint.esm.js.map +1 -0
  98. package/dist/node_modules/jose/dist/browser/lib/is_jwk.cjs.js +2 -0
  99. package/dist/node_modules/jose/dist/browser/lib/is_jwk.cjs.js.map +1 -0
  100. package/dist/node_modules/jose/dist/browser/lib/is_jwk.esm.js +20 -0
  101. package/dist/node_modules/jose/dist/browser/lib/is_jwk.esm.js.map +1 -0
  102. package/dist/node_modules/jose/dist/browser/lib/is_object.cjs.js +2 -0
  103. package/dist/node_modules/jose/dist/browser/lib/is_object.cjs.js.map +1 -0
  104. package/dist/node_modules/jose/dist/browser/lib/is_object.esm.js +20 -0
  105. package/dist/node_modules/jose/dist/browser/lib/is_object.esm.js.map +1 -0
  106. package/dist/node_modules/jose/dist/browser/lib/secs.cjs.js +2 -0
  107. package/dist/node_modules/jose/dist/browser/lib/secs.cjs.js.map +1 -0
  108. package/dist/node_modules/jose/dist/browser/lib/secs.esm.js +59 -0
  109. package/dist/node_modules/jose/dist/browser/lib/secs.esm.js.map +1 -0
  110. package/dist/node_modules/jose/dist/browser/lib/validate_crit.cjs.js +2 -0
  111. package/dist/node_modules/jose/dist/browser/lib/validate_crit.cjs.js.map +1 -0
  112. package/dist/node_modules/jose/dist/browser/lib/validate_crit.esm.js +34 -0
  113. package/dist/node_modules/jose/dist/browser/lib/validate_crit.esm.js.map +1 -0
  114. package/dist/node_modules/jose/dist/browser/runtime/asn1.cjs.js +2 -0
  115. package/dist/node_modules/jose/dist/browser/runtime/asn1.cjs.js.map +1 -0
  116. package/dist/node_modules/jose/dist/browser/runtime/asn1.esm.js +103 -0
  117. package/dist/node_modules/jose/dist/browser/runtime/asn1.esm.js.map +1 -0
  118. package/dist/node_modules/jose/dist/browser/runtime/base64url.cjs.js +2 -0
  119. package/dist/node_modules/jose/dist/browser/runtime/base64url.cjs.js.map +1 -0
  120. package/dist/node_modules/jose/dist/browser/runtime/base64url.esm.js +43 -0
  121. package/dist/node_modules/jose/dist/browser/runtime/base64url.esm.js.map +1 -0
  122. package/dist/node_modules/jose/dist/browser/runtime/check_key_length.cjs.js +2 -0
  123. package/dist/node_modules/jose/dist/browser/runtime/check_key_length.cjs.js.map +1 -0
  124. package/dist/node_modules/jose/dist/browser/runtime/check_key_length.esm.js +12 -0
  125. package/dist/node_modules/jose/dist/browser/runtime/check_key_length.esm.js.map +1 -0
  126. package/dist/node_modules/jose/dist/browser/runtime/get_sign_verify_key.cjs.js +2 -0
  127. package/dist/node_modules/jose/dist/browser/runtime/get_sign_verify_key.cjs.js.map +1 -0
  128. package/dist/node_modules/jose/dist/browser/runtime/get_sign_verify_key.esm.js +25 -0
  129. package/dist/node_modules/jose/dist/browser/runtime/get_sign_verify_key.esm.js.map +1 -0
  130. package/dist/node_modules/jose/dist/browser/runtime/is_key_like.cjs.js +2 -0
  131. package/dist/node_modules/jose/dist/browser/runtime/is_key_like.cjs.js.map +1 -0
  132. package/dist/node_modules/jose/dist/browser/runtime/is_key_like.esm.js +13 -0
  133. package/dist/node_modules/jose/dist/browser/runtime/is_key_like.esm.js.map +1 -0
  134. package/dist/node_modules/jose/dist/browser/runtime/jwk_to_key.cjs.js +2 -0
  135. package/dist/node_modules/jose/dist/browser/runtime/jwk_to_key.cjs.js.map +1 -0
  136. package/dist/node_modules/jose/dist/browser/runtime/jwk_to_key.esm.js +107 -0
  137. package/dist/node_modules/jose/dist/browser/runtime/jwk_to_key.esm.js.map +1 -0
  138. package/dist/node_modules/jose/dist/browser/runtime/normalize_key.cjs.js +2 -0
  139. package/dist/node_modules/jose/dist/browser/runtime/normalize_key.cjs.js.map +1 -0
  140. package/dist/node_modules/jose/dist/browser/runtime/normalize_key.esm.js +71 -0
  141. package/dist/node_modules/jose/dist/browser/runtime/normalize_key.esm.js.map +1 -0
  142. package/dist/node_modules/jose/dist/browser/runtime/sign.cjs.js +2 -0
  143. package/dist/node_modules/jose/dist/browser/runtime/sign.cjs.js.map +1 -0
  144. package/dist/node_modules/jose/dist/browser/runtime/sign.esm.js +14 -0
  145. package/dist/node_modules/jose/dist/browser/runtime/sign.esm.js.map +1 -0
  146. package/dist/node_modules/jose/dist/browser/runtime/subtle_dsa.cjs.js +2 -0
  147. package/dist/node_modules/jose/dist/browser/runtime/subtle_dsa.cjs.js.map +1 -0
  148. package/dist/node_modules/jose/dist/browser/runtime/subtle_dsa.esm.js +32 -0
  149. package/dist/node_modules/jose/dist/browser/runtime/subtle_dsa.esm.js.map +1 -0
  150. package/dist/node_modules/jose/dist/browser/runtime/webcrypto.cjs.js +2 -0
  151. package/dist/node_modules/jose/dist/browser/runtime/webcrypto.cjs.js.map +1 -0
  152. package/dist/node_modules/jose/dist/browser/runtime/webcrypto.esm.js +7 -0
  153. package/dist/node_modules/jose/dist/browser/runtime/webcrypto.esm.js.map +1 -0
  154. package/dist/node_modules/jose/dist/browser/util/errors.cjs.js +2 -0
  155. package/dist/node_modules/jose/dist/browser/util/errors.cjs.js.map +1 -0
  156. package/dist/node_modules/jose/dist/browser/util/errors.esm.js +131 -0
  157. package/dist/node_modules/jose/dist/browser/util/errors.esm.js.map +1 -0
  158. package/dist/nuxt.cjs.js +2 -0
  159. package/dist/nuxt.cjs.js.map +1 -0
  160. package/dist/nuxt.esm.js +8 -0
  161. package/dist/nuxt.esm.js.map +1 -0
  162. package/dist/services/chatService.cjs.js +2 -0
  163. package/dist/services/chatService.cjs.js.map +1 -0
  164. package/dist/services/chatService.d.ts +144 -0
  165. package/dist/services/chatService.d.ts.map +1 -0
  166. package/dist/services/chatService.esm.js +482 -0
  167. package/dist/services/chatService.esm.js.map +1 -0
  168. package/dist/services/dialogflowClient.cjs.js +2 -0
  169. package/dist/services/dialogflowClient.cjs.js.map +1 -0
  170. package/dist/services/dialogflowClient.d.ts +36 -0
  171. package/dist/services/dialogflowClient.d.ts.map +1 -0
  172. package/dist/services/dialogflowClient.esm.js +282 -0
  173. package/dist/services/dialogflowClient.esm.js.map +1 -0
  174. package/dist/services/sessionManager.cjs.js +2 -0
  175. package/dist/services/sessionManager.cjs.js.map +1 -0
  176. package/dist/services/sessionManager.d.ts +13 -0
  177. package/dist/services/sessionManager.d.ts.map +1 -0
  178. package/dist/services/sessionManager.esm.js +48 -0
  179. package/dist/services/sessionManager.esm.js.map +1 -0
  180. package/dist/styles.css +0 -0
  181. package/dist/types.d.ts +5 -0
  182. package/dist/types.d.ts.map +1 -0
  183. package/dist/utils/dialogflowHandler.d.ts +31 -0
  184. package/dist/utils/dialogflowHandler.d.ts.map +1 -0
  185. package/dist/utils/frameworkDetector.d.ts +17 -0
  186. package/dist/utils/frameworkDetector.d.ts.map +1 -0
  187. package/dist/utils/sanitize.cjs.js +2 -0
  188. package/dist/utils/sanitize.cjs.js.map +1 -0
  189. package/dist/utils/sanitize.d.ts +25 -0
  190. package/dist/utils/sanitize.d.ts.map +1 -0
  191. package/dist/utils/sanitize.esm.js +57 -0
  192. package/dist/utils/sanitize.esm.js.map +1 -0
  193. package/dist/utils/ssr.cjs.js +2 -0
  194. package/dist/utils/ssr.cjs.js.map +1 -0
  195. package/dist/utils/ssr.d.ts +35 -0
  196. package/dist/utils/ssr.d.ts.map +1 -0
  197. package/dist/utils/ssr.esm.js +48 -0
  198. package/dist/utils/ssr.esm.js.map +1 -0
  199. package/dist/vue.cjs.js +2 -0
  200. package/dist/vue.cjs.js.map +1 -0
  201. package/dist/vue.esm.js +10 -0
  202. package/dist/vue.esm.js.map +1 -0
  203. package/package.json +145 -0
@@ -0,0 +1,31 @@
1
+ export interface DialogflowResponse {
2
+ queryResult?: {
3
+ responseMessages?: any[];
4
+ fulfillmentText?: string;
5
+ parameters?: {
6
+ fields?: {
7
+ [key: string]: any;
8
+ };
9
+ };
10
+ intent?: {
11
+ displayName?: string;
12
+ };
13
+ };
14
+ [key: string]: any;
15
+ }
16
+ export interface ProcessedDialogflowResponse {
17
+ response: string;
18
+ richContent?: any;
19
+ handoff: boolean;
20
+ timestamp: string;
21
+ }
22
+ /**
23
+ * Check if Dialogflow response contains handoff trigger
24
+ * Handoff is triggered when response contains {"handoff": true}
25
+ */
26
+ export declare function checkForHandoff(response: DialogflowResponse): boolean;
27
+ /**
28
+ * Process Dialogflow response and extract relevant information
29
+ */
30
+ export declare function processDialogflowResponse(response: DialogflowResponse): ProcessedDialogflowResponse;
31
+ //# sourceMappingURL=dialogflowHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialogflowHandler.d.ts","sourceRoot":"","sources":["../../src/utils/dialogflowHandler.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE;QACZ,gBAAgB,CAAC,EAAE,GAAG,EAAE,CAAC;QACzB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,UAAU,CAAC,EAAE;YACX,MAAM,CAAC,EAAE;gBACP,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;aACpB,CAAC;SACH,CAAC;QACF,MAAM,CAAC,EAAE;YACP,WAAW,CAAC,EAAE,MAAM,CAAC;SACtB,CAAC;KACH,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAqCrE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,kBAAkB,GAC3B,2BAA2B,CA4B7B"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Framework Detection Utility
3
+ * Detects which framework is available in the runtime environment
4
+ */
5
+ export type Framework = 'react' | 'vue' | 'next' | 'nuxt' | 'vite' | 'vanilla';
6
+ export interface FrameworkInfo {
7
+ name: Framework;
8
+ version?: string;
9
+ isSSR: boolean;
10
+ }
11
+ /**
12
+ * Detects the framework in the current environment
13
+ */
14
+ export declare function detectFramework(): FrameworkInfo;
15
+ export declare function setFramework(framework: Framework): void;
16
+ export declare function getFramework(): FrameworkInfo;
17
+ //# sourceMappingURL=frameworkDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frameworkDetector.d.ts","sourceRoot":"","sources":["../../src/utils/frameworkDetector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAE/E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,aAAa,CAwD/C;AAyGD,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAEvD;AAED,wBAAgB,YAAY,IAAI,aAAa,CAQ5C"}
@@ -0,0 +1,2 @@
1
+ "use strict";let e;function t(){return"undefined"!=typeof window?(e||(e=require("dompurify")),e):(e||(e=require("isomorphic-dompurify")),e)}function r(e,r){const i=t(),n={ALLOWED_TAGS:["a","b","strong","i","em","u","br","p","span"],ALLOWED_ATTR:["href","target","rel"],ALLOW_DATA_ATTR:!1,...r?.allowedTags&&{ALLOWED_TAGS:r.allowedTags},...r?.allowedAttributes&&{ALLOWED_ATTR:Object.keys(r.allowedAttributes).flatMap(e=>r.allowedAttributes[e])}};return i.sanitize(e,n)}function i(e){return r(e.replace(/(https?:\/\/[^\s]+)/g,'<a href="$1" target="_blank" rel="noopener noreferrer">$1</a>'),{allowedTags:["a"],allowedAttributes:{a:["href","target","rel"]}})}Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),exports.linkifyText=i,exports.safeLinkifyText=function(e){return i(e)},exports.sanitizeHtml=r,exports.sanitizeText=function(e){return t().sanitize(e,{ALLOWED_TAGS:[]})};
2
+ //# sourceMappingURL=sanitize.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitize.cjs.js","sources":["../../src/utils/sanitize.ts"],"sourcesContent":["/**\n * HTML Sanitization Utilities\n * Safe HTML rendering with XSS protection\n */\n\n// Use isomorphic-dompurify for SSR compatibility\nlet DOMPurify: any;\n\n// Lazy load DOMPurify to avoid SSR issues\nfunction getDOMPurify() {\n if (typeof window !== 'undefined') {\n // Browser: use regular DOMPurify\n if (!DOMPurify) {\n DOMPurify = require('dompurify');\n }\n return DOMPurify;\n } else {\n // SSR: use isomorphic-dompurify\n if (!DOMPurify) {\n DOMPurify = require('isomorphic-dompurify');\n }\n return DOMPurify;\n }\n}\n\n/**\n * Sanitize HTML string\n * Removes dangerous scripts while preserving safe HTML\n */\nexport function sanitizeHtml(html: string, options?: {\n allowedTags?: string[];\n allowedAttributes?: Record<string, string[]>;\n}): string {\n const DOMPurifyInstance = getDOMPurify();\n \n const defaultOptions = {\n ALLOWED_TAGS: ['a', 'b', 'strong', 'i', 'em', 'u', 'br', 'p', 'span'],\n ALLOWED_ATTR: ['href', 'target', 'rel'],\n ALLOW_DATA_ATTR: false,\n };\n\n const config: any = {\n ...defaultOptions,\n ...(options?.allowedTags && { ALLOWED_TAGS: options.allowedTags }),\n ...(options?.allowedAttributes && { \n ALLOWED_ATTR: Object.keys(options.allowedAttributes).flatMap(key => \n options.allowedAttributes![key]\n )\n }),\n };\n\n return DOMPurifyInstance.sanitize(html, config);\n}\n\n/**\n * Linkify text (convert URLs to links) with sanitization\n */\nexport function linkifyText(text: string): string {\n // Simple regex to find URLs\n const urlRegex = /(https?:\\/\\/[^\\s]+)/g;\n \n // Replace URLs with anchor tags\n const linked = text.replace(\n urlRegex,\n '<a href=\"$1\" target=\"_blank\" rel=\"noopener noreferrer\">$1</a>'\n );\n\n // Sanitize the result\n return sanitizeHtml(linked, {\n allowedTags: ['a'],\n allowedAttributes: { a: ['href', 'target', 'rel'] },\n });\n}\n\n/**\n * Safe linkify for Vue v-html (alias for linkifyText)\n */\nexport function safeLinkifyText(text: string): string {\n return linkifyText(text);\n}\n\n/**\n * Sanitize plain text (remove all HTML)\n */\nexport function sanitizeText(text: string): string {\n const DOMPurifyInstance = getDOMPurify();\n return DOMPurifyInstance.sanitize(text, { ALLOWED_TAGS: [] });\n}\n"],"names":["DOMPurify","getDOMPurify","window","require","sanitizeHtml","html","options","DOMPurifyInstance","config","ALLOWED_TAGS","ALLOWED_ATTR","ALLOW_DATA_ATTR","allowedTags","allowedAttributes","Object","keys","flatMap","key","sanitize","linkifyText","text","replace","a"],"mappings":"aAMA,IAAIA,EAGJ,SAASC,IACP,MAAsB,oBAAXC,QAEJF,IACHA,EAAYG,QAAQ,cAEfH,IAGFA,IACHA,EAAYG,QAAQ,yBAEfH,EAEX,CAMO,SAASI,EAAaC,EAAcC,GAIzC,MAAMC,EAAoBN,IAQpBO,EAAc,CALlBC,aAAc,CAAC,IAAK,IAAK,SAAU,IAAK,KAAM,IAAK,KAAM,IAAK,QAC9DC,aAAc,CAAC,OAAQ,SAAU,OACjCC,iBAAiB,KAKbL,GAASM,aAAe,CAAEH,aAAcH,EAAQM,gBAChDN,GAASO,mBAAqB,CAChCH,aAAcI,OAAOC,KAAKT,EAAQO,mBAAmBG,QAAQC,GAC3DX,EAAQO,kBAAmBI,MAKjC,OAAOV,EAAkBW,SAASb,EAAMG,EAC1C,CAKO,SAASW,EAAYC,GAW1B,OAAOhB,EANQgB,EAAKC,QAHH,uBAKf,iEAI0B,CAC1BT,YAAa,CAAC,KACdC,kBAAmB,CAAES,EAAG,CAAC,OAAQ,SAAU,SAE/C,kHAKO,SAAyBF,GAC9B,OAAOD,EAAYC,EACrB,8CAKO,SAAsBA,GAE3B,OAD0BnB,IACDiB,SAASE,EAAM,CAAEX,aAAc,IAC1D"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * HTML Sanitization Utilities
3
+ * Safe HTML rendering with XSS protection
4
+ */
5
+ /**
6
+ * Sanitize HTML string
7
+ * Removes dangerous scripts while preserving safe HTML
8
+ */
9
+ export declare function sanitizeHtml(html: string, options?: {
10
+ allowedTags?: string[];
11
+ allowedAttributes?: Record<string, string[]>;
12
+ }): string;
13
+ /**
14
+ * Linkify text (convert URLs to links) with sanitization
15
+ */
16
+ export declare function linkifyText(text: string): string;
17
+ /**
18
+ * Safe linkify for Vue v-html (alias for linkifyText)
19
+ */
20
+ export declare function safeLinkifyText(text: string): string;
21
+ /**
22
+ * Sanitize plain text (remove all HTML)
23
+ */
24
+ export declare function sanitizeText(text: string): string;
25
+ //# sourceMappingURL=sanitize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/utils/sanitize.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsBH;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IACnD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC9C,GAAG,MAAM,CAoBT;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAehD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGjD"}
@@ -0,0 +1,57 @@
1
+ let DOMPurify;
2
+ function getDOMPurify() {
3
+ if (typeof window !== "undefined") {
4
+ if (!DOMPurify) {
5
+ DOMPurify = require("dompurify");
6
+ }
7
+ return DOMPurify;
8
+ } else {
9
+ if (!DOMPurify) {
10
+ DOMPurify = require("isomorphic-dompurify");
11
+ }
12
+ return DOMPurify;
13
+ }
14
+ }
15
+ function sanitizeHtml(html, options) {
16
+ const DOMPurifyInstance = getDOMPurify();
17
+ const defaultOptions = {
18
+ ALLOWED_TAGS: ["a", "b", "strong", "i", "em", "u", "br", "p", "span"],
19
+ ALLOWED_ATTR: ["href", "target", "rel"],
20
+ ALLOW_DATA_ATTR: false
21
+ };
22
+ const config = {
23
+ ...defaultOptions,
24
+ ...options?.allowedTags && { ALLOWED_TAGS: options.allowedTags },
25
+ ...options?.allowedAttributes && {
26
+ ALLOWED_ATTR: Object.keys(options.allowedAttributes).flatMap(
27
+ (key) => options.allowedAttributes[key]
28
+ )
29
+ }
30
+ };
31
+ return DOMPurifyInstance.sanitize(html, config);
32
+ }
33
+ function linkifyText(text) {
34
+ const urlRegex = /(https?:\/\/[^\s]+)/g;
35
+ const linked = text.replace(
36
+ urlRegex,
37
+ '<a href="$1" target="_blank" rel="noopener noreferrer">$1</a>'
38
+ );
39
+ return sanitizeHtml(linked, {
40
+ allowedTags: ["a"],
41
+ allowedAttributes: { a: ["href", "target", "rel"] }
42
+ });
43
+ }
44
+ function safeLinkifyText(text) {
45
+ return linkifyText(text);
46
+ }
47
+ function sanitizeText(text) {
48
+ const DOMPurifyInstance = getDOMPurify();
49
+ return DOMPurifyInstance.sanitize(text, { ALLOWED_TAGS: [] });
50
+ }
51
+ export {
52
+ linkifyText,
53
+ safeLinkifyText,
54
+ sanitizeHtml,
55
+ sanitizeText
56
+ };
57
+ //# sourceMappingURL=sanitize.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitize.esm.js","sources":["../../src/utils/sanitize.ts"],"sourcesContent":["/**\n * HTML Sanitization Utilities\n * Safe HTML rendering with XSS protection\n */\n\n// Use isomorphic-dompurify for SSR compatibility\nlet DOMPurify: any;\n\n// Lazy load DOMPurify to avoid SSR issues\nfunction getDOMPurify() {\n if (typeof window !== 'undefined') {\n // Browser: use regular DOMPurify\n if (!DOMPurify) {\n DOMPurify = require('dompurify');\n }\n return DOMPurify;\n } else {\n // SSR: use isomorphic-dompurify\n if (!DOMPurify) {\n DOMPurify = require('isomorphic-dompurify');\n }\n return DOMPurify;\n }\n}\n\n/**\n * Sanitize HTML string\n * Removes dangerous scripts while preserving safe HTML\n */\nexport function sanitizeHtml(html: string, options?: {\n allowedTags?: string[];\n allowedAttributes?: Record<string, string[]>;\n}): string {\n const DOMPurifyInstance = getDOMPurify();\n \n const defaultOptions = {\n ALLOWED_TAGS: ['a', 'b', 'strong', 'i', 'em', 'u', 'br', 'p', 'span'],\n ALLOWED_ATTR: ['href', 'target', 'rel'],\n ALLOW_DATA_ATTR: false,\n };\n\n const config: any = {\n ...defaultOptions,\n ...(options?.allowedTags && { ALLOWED_TAGS: options.allowedTags }),\n ...(options?.allowedAttributes && { \n ALLOWED_ATTR: Object.keys(options.allowedAttributes).flatMap(key => \n options.allowedAttributes![key]\n )\n }),\n };\n\n return DOMPurifyInstance.sanitize(html, config);\n}\n\n/**\n * Linkify text (convert URLs to links) with sanitization\n */\nexport function linkifyText(text: string): string {\n // Simple regex to find URLs\n const urlRegex = /(https?:\\/\\/[^\\s]+)/g;\n \n // Replace URLs with anchor tags\n const linked = text.replace(\n urlRegex,\n '<a href=\"$1\" target=\"_blank\" rel=\"noopener noreferrer\">$1</a>'\n );\n\n // Sanitize the result\n return sanitizeHtml(linked, {\n allowedTags: ['a'],\n allowedAttributes: { a: ['href', 'target', 'rel'] },\n });\n}\n\n/**\n * Safe linkify for Vue v-html (alias for linkifyText)\n */\nexport function safeLinkifyText(text: string): string {\n return linkifyText(text);\n}\n\n/**\n * Sanitize plain text (remove all HTML)\n */\nexport function sanitizeText(text: string): string {\n const DOMPurifyInstance = getDOMPurify();\n return DOMPurifyInstance.sanitize(text, { ALLOWED_TAGS: [] });\n}\n"],"names":[],"mappings":"AAMA,IAAI;AAGJ,SAAS,eAAe;AACtB,MAAI,OAAO,WAAW,aAAa;AAEjC,QAAI,CAAC,WAAW;AACd,kBAAY,QAAQ,WAAW;AAAA,IACjC;AACA,WAAO;AAAA,EACT,OAAO;AAEL,QAAI,CAAC,WAAW;AACd,kBAAY,QAAQ,sBAAsB;AAAA,IAC5C;AACA,WAAO;AAAA,EACT;AACF;AAMO,SAAS,aAAa,MAAc,SAGhC;AACT,QAAM,oBAAoB,aAAA;AAE1B,QAAM,iBAAiB;AAAA,IACrB,cAAc,CAAC,KAAK,KAAK,UAAU,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM;AAAA,IACpE,cAAc,CAAC,QAAQ,UAAU,KAAK;AAAA,IACtC,iBAAiB;AAAA,EAAA;AAGnB,QAAM,SAAc;AAAA,IAClB,GAAG;AAAA,IACH,GAAI,SAAS,eAAe,EAAE,cAAc,QAAQ,YAAA;AAAA,IACpD,GAAI,SAAS,qBAAqB;AAAA,MAChC,cAAc,OAAO,KAAK,QAAQ,iBAAiB,EAAE;AAAA,QAAQ,CAAA,QAC3D,QAAQ,kBAAmB,GAAG;AAAA,MAAA;AAAA,IAChC;AAAA,EACF;AAGF,SAAO,kBAAkB,SAAS,MAAM,MAAM;AAChD;AAKO,SAAS,YAAY,MAAsB;AAEhD,QAAM,WAAW;AAGjB,QAAM,SAAS,KAAK;AAAA,IAClB;AAAA,IACA;AAAA,EAAA;AAIF,SAAO,aAAa,QAAQ;AAAA,IAC1B,aAAa,CAAC,GAAG;AAAA,IACjB,mBAAmB,EAAE,GAAG,CAAC,QAAQ,UAAU,KAAK,EAAA;AAAA,EAAE,CACnD;AACH;AAKO,SAAS,gBAAgB,MAAsB;AACpD,SAAO,YAAY,IAAI;AACzB;AAKO,SAAS,aAAa,MAAsB;AACjD,QAAM,oBAAoB,aAAA;AAC1B,SAAO,kBAAkB,SAAS,MAAM,EAAE,cAAc,CAAA,GAAI;AAC9D;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),exports.isBrowser=function(){return"undefined"!=typeof window},exports.safeDocument=function(){return"undefined"==typeof document?null:document},exports.safeLocalStorage=function(){return"undefined"!=typeof window&&window.localStorage?window.localStorage:{getItem:()=>null,setItem:()=>{},removeItem:()=>{},clear:()=>{},key:()=>null,length:0}},exports.safeSessionStorage=function(){return"undefined"!=typeof window&&window.sessionStorage?window.sessionStorage:{getItem:()=>null,setItem:()=>{},removeItem:()=>{},clear:()=>{},key:()=>null,length:0}};
2
+ //# sourceMappingURL=ssr.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssr.cjs.js","sources":["../../src/utils/ssr.ts"],"sourcesContent":["/**\n * SSR-Safe Utilities\n * Safe access to browser APIs that don't exist in SSR\n */\n\n/**\n * Safe localStorage access\n */\nexport function safeLocalStorage(): Storage | {\n getItem: () => null;\n setItem: () => void;\n removeItem: () => void;\n clear: () => void;\n key: () => null;\n length: number;\n} {\n if (typeof window === 'undefined' || !window.localStorage) {\n return {\n getItem: () => null,\n setItem: () => {},\n removeItem: () => {},\n clear: () => {},\n key: () => null,\n length: 0,\n };\n }\n return window.localStorage;\n}\n\n/**\n * Safe sessionStorage access\n */\nexport function safeSessionStorage(): Storage | {\n getItem: () => null;\n setItem: () => void;\n removeItem: () => void;\n clear: () => void;\n key: () => null;\n length: number;\n} {\n if (typeof window === 'undefined' || !window.sessionStorage) {\n return {\n getItem: () => null,\n setItem: () => {},\n removeItem: () => {},\n clear: () => {},\n key: () => null,\n length: 0,\n };\n }\n return window.sessionStorage;\n}\n\n/**\n * Check if code is running in browser\n */\nexport function isBrowser(): boolean {\n return typeof window !== 'undefined';\n}\n\n/**\n * Safe document access\n */\nexport function safeDocument(): Document | null {\n if (typeof document === 'undefined') {\n return null;\n }\n return document;\n}\n"],"names":["window","document","localStorage","getItem","setItem","removeItem","clear","key","length","sessionStorage"],"mappings":"kGAwDO,WACL,MAAyB,oBAAXA,MAChB,uBAKO,WACL,MAAwB,oBAAbC,SACF,KAEFA,QACT,2BA5DO,WAQL,MAAsB,oBAAXD,QAA2BA,OAAOE,aAUtCF,OAAOE,aATL,CACLC,QAAS,IAAM,KACfC,QAAS,OACTC,WAAY,OACZC,MAAO,OACPC,IAAK,IAAM,KACXC,OAAQ,EAId,6BAKO,WAQL,MAAsB,oBAAXR,QAA2BA,OAAOS,eAUtCT,OAAOS,eATL,CACLN,QAAS,IAAM,KACfC,QAAS,OACTC,WAAY,OACZC,MAAO,OACPC,IAAK,IAAM,KACXC,OAAQ,EAId"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * SSR-Safe Utilities
3
+ * Safe access to browser APIs that don't exist in SSR
4
+ */
5
+ /**
6
+ * Safe localStorage access
7
+ */
8
+ export declare function safeLocalStorage(): Storage | {
9
+ getItem: () => null;
10
+ setItem: () => void;
11
+ removeItem: () => void;
12
+ clear: () => void;
13
+ key: () => null;
14
+ length: number;
15
+ };
16
+ /**
17
+ * Safe sessionStorage access
18
+ */
19
+ export declare function safeSessionStorage(): Storage | {
20
+ getItem: () => null;
21
+ setItem: () => void;
22
+ removeItem: () => void;
23
+ clear: () => void;
24
+ key: () => null;
25
+ length: number;
26
+ };
27
+ /**
28
+ * Check if code is running in browser
29
+ */
30
+ export declare function isBrowser(): boolean;
31
+ /**
32
+ * Safe document access
33
+ */
34
+ export declare function safeDocument(): Document | null;
35
+ //# sourceMappingURL=ssr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssr.d.ts","sourceRoot":"","sources":["../../src/utils/ssr.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,GAAG;IAC5C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAYA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,GAAG;IAC9C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAYA;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,QAAQ,GAAG,IAAI,CAK9C"}
@@ -0,0 +1,48 @@
1
+ function safeLocalStorage() {
2
+ if (typeof window === "undefined" || !window.localStorage) {
3
+ return {
4
+ getItem: () => null,
5
+ setItem: () => {
6
+ },
7
+ removeItem: () => {
8
+ },
9
+ clear: () => {
10
+ },
11
+ key: () => null,
12
+ length: 0
13
+ };
14
+ }
15
+ return window.localStorage;
16
+ }
17
+ function safeSessionStorage() {
18
+ if (typeof window === "undefined" || !window.sessionStorage) {
19
+ return {
20
+ getItem: () => null,
21
+ setItem: () => {
22
+ },
23
+ removeItem: () => {
24
+ },
25
+ clear: () => {
26
+ },
27
+ key: () => null,
28
+ length: 0
29
+ };
30
+ }
31
+ return window.sessionStorage;
32
+ }
33
+ function isBrowser() {
34
+ return typeof window !== "undefined";
35
+ }
36
+ function safeDocument() {
37
+ if (typeof document === "undefined") {
38
+ return null;
39
+ }
40
+ return document;
41
+ }
42
+ export {
43
+ isBrowser,
44
+ safeDocument,
45
+ safeLocalStorage,
46
+ safeSessionStorage
47
+ };
48
+ //# sourceMappingURL=ssr.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssr.esm.js","sources":["../../src/utils/ssr.ts"],"sourcesContent":["/**\n * SSR-Safe Utilities\n * Safe access to browser APIs that don't exist in SSR\n */\n\n/**\n * Safe localStorage access\n */\nexport function safeLocalStorage(): Storage | {\n getItem: () => null;\n setItem: () => void;\n removeItem: () => void;\n clear: () => void;\n key: () => null;\n length: number;\n} {\n if (typeof window === 'undefined' || !window.localStorage) {\n return {\n getItem: () => null,\n setItem: () => {},\n removeItem: () => {},\n clear: () => {},\n key: () => null,\n length: 0,\n };\n }\n return window.localStorage;\n}\n\n/**\n * Safe sessionStorage access\n */\nexport function safeSessionStorage(): Storage | {\n getItem: () => null;\n setItem: () => void;\n removeItem: () => void;\n clear: () => void;\n key: () => null;\n length: number;\n} {\n if (typeof window === 'undefined' || !window.sessionStorage) {\n return {\n getItem: () => null,\n setItem: () => {},\n removeItem: () => {},\n clear: () => {},\n key: () => null,\n length: 0,\n };\n }\n return window.sessionStorage;\n}\n\n/**\n * Check if code is running in browser\n */\nexport function isBrowser(): boolean {\n return typeof window !== 'undefined';\n}\n\n/**\n * Safe document access\n */\nexport function safeDocument(): Document | null {\n if (typeof document === 'undefined') {\n return null;\n }\n return document;\n}\n"],"names":[],"mappings":"AAQO,SAAS,mBAOd;AACA,MAAI,OAAO,WAAW,eAAe,CAAC,OAAO,cAAc;AACzD,WAAO;AAAA,MACL,SAAS,MAAM;AAAA,MACf,SAAS,MAAM;AAAA,MAAC;AAAA,MAChB,YAAY,MAAM;AAAA,MAAC;AAAA,MACnB,OAAO,MAAM;AAAA,MAAC;AAAA,MACd,KAAK,MAAM;AAAA,MACX,QAAQ;AAAA,IAAA;AAAA,EAEZ;AACA,SAAO,OAAO;AAChB;AAKO,SAAS,qBAOd;AACA,MAAI,OAAO,WAAW,eAAe,CAAC,OAAO,gBAAgB;AAC3D,WAAO;AAAA,MACL,SAAS,MAAM;AAAA,MACf,SAAS,MAAM;AAAA,MAAC;AAAA,MAChB,YAAY,MAAM;AAAA,MAAC;AAAA,MACnB,OAAO,MAAM;AAAA,MAAC;AAAA,MACd,KAAK,MAAM;AAAA,MACX,QAAQ;AAAA,IAAA;AAAA,EAEZ;AACA,SAAO,OAAO;AAChB;AAKO,SAAS,YAAqB;AACnC,SAAO,OAAO,WAAW;AAC3B;AAKO,SAAS,eAAgC;AAC9C,MAAI,OAAO,aAAa,aAAa;AACnC,WAAO;AAAA,EACT;AACA,SAAO;AACT;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./components/ChatWidget.vue.cjs.js"),t=require("./composables/useChatWidget.cjs.js"),s=require("./core/stateManager.cjs.js");exports.ChatWidget=e.default,exports.default=e.default,exports.useChatWidget=t.useChatWidget,exports.WidgetStateManager=s.WidgetStateManager;
2
+ //# sourceMappingURL=vue.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vue.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import { default as default2, default as default3 } from "./components/ChatWidget.vue.esm.js";
2
+ import { useChatWidget } from "./composables/useChatWidget.esm.js";
3
+ import { WidgetStateManager } from "./core/stateManager.esm.js";
4
+ export {
5
+ default2 as ChatWidget,
6
+ WidgetStateManager,
7
+ default3 as default,
8
+ useChatWidget
9
+ };
10
+ //# sourceMappingURL=vue.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vue.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
package/package.json ADDED
@@ -0,0 +1,145 @@
1
+ {
2
+ "name": "@om_patel_26/chat-widget",
3
+ "version": "1.0.1",
4
+ "description": "Universal chat widget for Vue 3, Nuxt 3, React, and Next.js with SSR support",
5
+ "type": "module",
6
+ "main": "./dist/index.cjs.js",
7
+ "module": "./dist/index.esm.js",
8
+ "types": "./dist/index.d.ts",
9
+ "style": "./dist/styles.css",
10
+ "sideEffects": [
11
+ "*.css",
12
+ "*.vue"
13
+ ],
14
+ "exports": {
15
+ ".": {
16
+ "import": {
17
+ "types": "./dist/index.d.ts",
18
+ "default": "./dist/index.esm.js"
19
+ },
20
+ "require": {
21
+ "types": "./dist/index.d.ts",
22
+ "default": "./dist/index.cjs.js"
23
+ },
24
+ "types": "./dist/index.d.ts"
25
+ },
26
+ "./react": {
27
+ "import": {
28
+ "types": "./dist/react.d.ts",
29
+ "default": "./dist/react.esm.js"
30
+ },
31
+ "require": {
32
+ "types": "./dist/react.d.ts",
33
+ "default": "./dist/react.cjs.js"
34
+ },
35
+ "types": "./dist/react.d.ts"
36
+ },
37
+ "./next": {
38
+ "import": {
39
+ "types": "./dist/next.d.ts",
40
+ "default": "./dist/react.esm.js"
41
+ },
42
+ "require": {
43
+ "types": "./dist/next.d.ts",
44
+ "default": "./dist/react.cjs.js"
45
+ },
46
+ "types": "./dist/next.d.ts"
47
+ },
48
+ "./vue": {
49
+ "import": {
50
+ "types": "./dist/entry/vue.d.ts",
51
+ "default": "./dist/vue.esm.js"
52
+ },
53
+ "require": {
54
+ "types": "./dist/entry/vue.d.ts",
55
+ "default": "./dist/vue.cjs.js"
56
+ },
57
+ "types": "./dist/entry/vue.d.ts"
58
+ },
59
+ "./nuxt": {
60
+ "import": {
61
+ "types": "./dist/entry/nuxt.d.ts",
62
+ "default": "./dist/nuxt.esm.js"
63
+ },
64
+ "require": {
65
+ "types": "./dist/entry/nuxt.d.ts",
66
+ "default": "./dist/nuxt.cjs.js"
67
+ },
68
+ "types": "./dist/entry/nuxt.d.ts"
69
+ },
70
+ "./vite": {
71
+ "import": {
72
+ "types": "./dist/vite.d.ts",
73
+ "default": "./dist/index.esm.js"
74
+ },
75
+ "require": {
76
+ "types": "./dist/vite.d.ts",
77
+ "default": "./dist/index.cjs.js"
78
+ },
79
+ "types": "./dist/vite.d.ts"
80
+ },
81
+ "./styles": "./dist/styles.css",
82
+ "./dist/styles.css": "./dist/styles.css",
83
+ "./package.json": "./package.json"
84
+ },
85
+ "files": [
86
+ "dist",
87
+ "README.md"
88
+ ],
89
+ "scripts": {
90
+ "build": "vite build && tsc --emitDeclarationOnly --outDir dist",
91
+ "dev": "vite build --watch",
92
+ "prepublishOnly": "npm run build",
93
+ "type-check": "tsc --noEmit"
94
+ },
95
+ "peerDependencies": {
96
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
97
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
98
+ "vue": "^3.0.0 || ^3.1.0 || ^3.2.0 || ^3.3.0 || ^3.4.0 || ^3.5.0"
99
+ },
100
+ "peerDependenciesMeta": {
101
+ "vue": {
102
+ "optional": true
103
+ },
104
+ "react": {
105
+ "optional": true
106
+ },
107
+ "react-dom": {
108
+ "optional": true
109
+ }
110
+ },
111
+ "dependencies": {
112
+ "jose": "^5.0.0"
113
+ },
114
+ "devDependencies": {
115
+ "@types/node": "^25.3.0",
116
+ "@types/react": "^18.3.5",
117
+ "@types/react-dom": "^18.3.0",
118
+ "@vitejs/plugin-vue": "^5.0.0",
119
+ "@vue/compiler-sfc": "^3.5.0",
120
+ "dompurify": "^3.0.0",
121
+ "isomorphic-dompurify": "^2.9.0",
122
+ "terser": "^5.46.0",
123
+ "typescript": "^5.6.2",
124
+ "vite": "^5.0.0",
125
+ "vue": "^3.5.28"
126
+ },
127
+ "keywords": [
128
+ "chat",
129
+ "widget",
130
+ "vue",
131
+ "nuxt",
132
+ "react",
133
+ "nextjs",
134
+ "ssr",
135
+ "dialogflow",
136
+ "ai",
137
+ "chatbot",
138
+ "headless"
139
+ ],
140
+ "author": "",
141
+ "license": "MIT",
142
+ "publishConfig": {
143
+ "access": "public"
144
+ }
145
+ }