@om_patel_26/chat-widget 1.0.6 → 1.0.8

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 (48) hide show
  1. package/README.md +16 -102
  2. package/dist/components/ChatWidget.cjs.js +2 -0
  3. package/dist/components/ChatWidget.cjs.js.map +1 -0
  4. package/dist/components/ChatWidget.esm.js +1129 -0
  5. package/dist/components/ChatWidget.esm.js.map +1 -0
  6. package/dist/core/stateManager.cjs.js +1 -1
  7. package/dist/core/stateManager.cjs.js.map +1 -1
  8. package/dist/core/stateManager.d.ts.map +1 -1
  9. package/dist/core/stateManager.esm.js +38 -36
  10. package/dist/core/stateManager.esm.js.map +1 -1
  11. package/dist/entry/vanilla.cjs.js +2 -0
  12. package/dist/entry/vanilla.cjs.js.map +1 -0
  13. package/dist/entry/vanilla.esm.js +50 -0
  14. package/dist/entry/vanilla.esm.js.map +1 -0
  15. package/dist/entry/vue.d.ts +3 -2
  16. package/dist/entry/vue.d.ts.map +1 -1
  17. package/dist/hooks/useChatMode.cjs.js +2 -0
  18. package/dist/hooks/useChatMode.cjs.js.map +1 -0
  19. package/dist/hooks/useChatMode.esm.js +61 -0
  20. package/dist/hooks/useChatMode.esm.js.map +1 -0
  21. package/dist/index.cjs.js +1 -1
  22. package/dist/index.d.ts +18 -11
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.esm.js +9 -18
  25. package/dist/index.esm.js.map +1 -1
  26. package/dist/node_modules/jose/dist/browser/lib/check_key_type.cjs.js.map +1 -1
  27. package/dist/node_modules/react-dom/client.cjs.js +2 -0
  28. package/dist/node_modules/react-dom/client.cjs.js.map +1 -0
  29. package/dist/node_modules/react-dom/client.esm.js +21 -0
  30. package/dist/node_modules/react-dom/client.esm.js.map +1 -0
  31. package/dist/services/dialogflowClient.cjs.js.map +1 -1
  32. package/dist/services/dialogflowClient.d.ts.map +1 -1
  33. package/dist/services/dialogflowClient.esm.js.map +1 -1
  34. package/dist/styles.css +1 -0
  35. package/dist/utils/frameworkDetector.cjs.js +2 -0
  36. package/dist/utils/frameworkDetector.cjs.js.map +1 -0
  37. package/dist/utils/frameworkDetector.esm.js +125 -0
  38. package/dist/utils/frameworkDetector.esm.js.map +1 -0
  39. package/dist/utils/sanitize.cjs.js +1 -1
  40. package/dist/utils/sanitize.cjs.js.map +1 -1
  41. package/dist/utils/sanitize.esm.js +1 -6
  42. package/dist/utils/sanitize.esm.js.map +1 -1
  43. package/dist/vue.esm.js +3 -3
  44. package/package.json +20 -16
  45. package/dist/utils/ssr.cjs.js +0 -2
  46. package/dist/utils/ssr.cjs.js.map +0 -1
  47. package/dist/utils/ssr.esm.js +0 -48
  48. package/dist/utils/ssr.esm.js.map +0 -1
@@ -1 +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"}
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","sanitizeHtml","html","options","DOMPurifyInstance","window","require","config","ALLOWED_TAGS","ALLOWED_ATTR","ALLOW_DATA_ATTR","allowedTags","allowedAttributes","Object","keys","flatMap","key","sanitize","linkifyText","text","replace","a"],"mappings":"aAMA,IAAIA,EAuBG,SAASC,EAAaC,EAAcC,GAIzC,MAAMC,EAvBgB,oBAAXC,QAEJL,IACHA,EAAYM,QAAQ,cAEfN,IAGFA,IACHA,EAAYM,QAAQ,yBAEfN,GAoBHO,EAAc,CALlBC,aAAc,CAAC,IAAK,IAAK,SAAU,IAAK,KAAM,IAAK,KAAM,IAAK,QAC9DC,aAAc,CAAC,OAAQ,SAAU,OACjCC,iBAAiB,KAKbP,GAASQ,aAAe,CAAEH,aAAcL,EAAQQ,gBAChDR,GAASS,mBAAqB,CAChCH,aAAcI,OAAOC,KAAKX,EAAQS,mBAAmBG,QAAQC,GAC3Db,EAAQS,kBAAmBI,MAKjC,OAAOZ,EAAkBa,SAASf,EAAMK,EAC1C,CAKO,SAASW,EAAYC,GAW1B,OAAOlB,EANQkB,EAAKC,QAHH,uBAKf,iEAI0B,CAC1BT,YAAa,CAAC,KACdC,kBAAmB,CAAES,EAAG,CAAC,OAAQ,SAAU,SAE/C,kHAKO,SAAyBF,GAC9B,OAAOD,EAAYC,EACrB"}
@@ -44,14 +44,9 @@ function linkifyText(text) {
44
44
  function safeLinkifyText(text) {
45
45
  return linkifyText(text);
46
46
  }
47
- function sanitizeText(text) {
48
- const DOMPurifyInstance = getDOMPurify();
49
- return DOMPurifyInstance.sanitize(text, { ALLOWED_TAGS: [] });
50
- }
51
47
  export {
52
48
  linkifyText,
53
49
  safeLinkifyText,
54
- sanitizeHtml,
55
- sanitizeText
50
+ sanitizeHtml
56
51
  };
57
52
  //# sourceMappingURL=sanitize.esm.js.map
@@ -1 +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;"}
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;"}
package/dist/vue.esm.js CHANGED
@@ -1,10 +1,10 @@
1
- import { default as default2, default as default3 } from "./components/ChatWidget.vue.esm.js";
1
+ import ChatWidgetComponent from "./components/ChatWidget.vue.esm.js";
2
2
  import { useChatWidget } from "./composables/useChatWidget.esm.js";
3
3
  import { WidgetStateManager } from "./core/stateManager.esm.js";
4
4
  export {
5
- default2 as ChatWidget,
5
+ ChatWidgetComponent as ChatWidget,
6
6
  WidgetStateManager,
7
- default3 as default,
7
+ ChatWidgetComponent as default,
8
8
  useChatWidget
9
9
  };
10
10
  //# sourceMappingURL=vue.esm.js.map
package/package.json CHANGED
@@ -1,8 +1,7 @@
1
1
  {
2
2
  "name": "@om_patel_26/chat-widget",
3
- "version": "1.0.6",
4
- "description": "Universal chat widget for Vue 3, Nuxt 3, React, and Next.js with SSR support",
5
- "type": "module",
3
+ "version": "1.0.8",
4
+ "description": "Charts Connect AI Chat Widget - Universal JavaScript library supporting React, Next.js, Vue, Nuxt, and Vite",
6
5
  "main": "./dist/index.cjs.js",
7
6
  "module": "./dist/index.esm.js",
8
7
  "types": "./dist/index.d.ts",
@@ -84,7 +83,8 @@
84
83
  },
85
84
  "files": [
86
85
  "dist",
87
- "README.md"
86
+ "README.md",
87
+ "ARCHITECTURE.md"
88
88
  ],
89
89
  "scripts": {
90
90
  "build": "vite build && tsc --emitDeclarationOnly --outDir dist",
@@ -98,28 +98,31 @@
98
98
  "vue": "^3.0.0 || ^3.1.0 || ^3.2.0 || ^3.3.0 || ^3.4.0 || ^3.5.0"
99
99
  },
100
100
  "peerDependenciesMeta": {
101
- "vue": {
102
- "optional": true
103
- },
104
101
  "react": {
105
102
  "optional": true
106
103
  },
107
104
  "react-dom": {
108
105
  "optional": true
106
+ },
107
+ "vue": {
108
+ "optional": true
109
109
  }
110
110
  },
111
111
  "dependencies": {
112
- "jose": "^5.0.0"
112
+ "jose": "^5.0.0",
113
+ "dompurify": "^3.0.0",
114
+ "isomorphic-dompurify": "^2.9.0"
113
115
  },
114
116
  "devDependencies": {
115
117
  "@types/node": "^25.3.0",
116
118
  "@types/react": "^18.3.5",
117
119
  "@types/react-dom": "^18.3.0",
120
+ "@vitejs/plugin-react": "^4.3.1",
118
121
  "@vitejs/plugin-vue": "^5.0.0",
119
122
  "@vue/compiler-sfc": "^3.5.0",
120
- "dompurify": "^3.0.0",
121
- "isomorphic-dompurify": "^2.9.0",
122
- "terser": "^5.46.0",
123
+ "react": "^18.3.1",
124
+ "react-dom": "^18.3.1",
125
+ "terser": "^5.31.0",
123
126
  "typescript": "^5.6.2",
124
127
  "vite": "^5.0.0",
125
128
  "vue": "^3.5.28"
@@ -127,15 +130,16 @@
127
130
  "keywords": [
128
131
  "chat",
129
132
  "widget",
130
- "vue",
131
- "nuxt",
132
133
  "react",
134
+ "vue",
133
135
  "nextjs",
134
- "ssr",
136
+ "nuxt",
137
+ "vite",
138
+ "universal",
139
+ "framework-agnostic",
135
140
  "dialogflow",
136
141
  "ai",
137
- "chatbot",
138
- "headless"
142
+ "chatbot"
139
143
  ],
140
144
  "author": "",
141
145
  "license": "MIT",
@@ -1,2 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,48 +0,0 @@
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
@@ -1 +0,0 @@
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;"}