@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.
- package/README.md +16 -102
- package/dist/components/ChatWidget.cjs.js +2 -0
- package/dist/components/ChatWidget.cjs.js.map +1 -0
- package/dist/components/ChatWidget.esm.js +1129 -0
- package/dist/components/ChatWidget.esm.js.map +1 -0
- package/dist/core/stateManager.cjs.js +1 -1
- package/dist/core/stateManager.cjs.js.map +1 -1
- package/dist/core/stateManager.d.ts.map +1 -1
- package/dist/core/stateManager.esm.js +38 -36
- package/dist/core/stateManager.esm.js.map +1 -1
- package/dist/entry/vanilla.cjs.js +2 -0
- package/dist/entry/vanilla.cjs.js.map +1 -0
- package/dist/entry/vanilla.esm.js +50 -0
- package/dist/entry/vanilla.esm.js.map +1 -0
- package/dist/entry/vue.d.ts +3 -2
- package/dist/entry/vue.d.ts.map +1 -1
- package/dist/hooks/useChatMode.cjs.js +2 -0
- package/dist/hooks/useChatMode.cjs.js.map +1 -0
- package/dist/hooks/useChatMode.esm.js +61 -0
- package/dist/hooks/useChatMode.esm.js.map +1 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.d.ts +18 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +9 -18
- package/dist/index.esm.js.map +1 -1
- package/dist/node_modules/jose/dist/browser/lib/check_key_type.cjs.js.map +1 -1
- package/dist/node_modules/react-dom/client.cjs.js +2 -0
- package/dist/node_modules/react-dom/client.cjs.js.map +1 -0
- package/dist/node_modules/react-dom/client.esm.js +21 -0
- package/dist/node_modules/react-dom/client.esm.js.map +1 -0
- package/dist/services/dialogflowClient.cjs.js.map +1 -1
- package/dist/services/dialogflowClient.d.ts.map +1 -1
- package/dist/services/dialogflowClient.esm.js.map +1 -1
- package/dist/styles.css +1 -0
- package/dist/utils/frameworkDetector.cjs.js +2 -0
- package/dist/utils/frameworkDetector.cjs.js.map +1 -0
- package/dist/utils/frameworkDetector.esm.js +125 -0
- package/dist/utils/frameworkDetector.esm.js.map +1 -0
- package/dist/utils/sanitize.cjs.js +1 -1
- package/dist/utils/sanitize.cjs.js.map +1 -1
- package/dist/utils/sanitize.esm.js +1 -6
- package/dist/utils/sanitize.esm.js.map +1 -1
- package/dist/vue.esm.js +3 -3
- package/package.json +20 -16
- package/dist/utils/ssr.cjs.js +0 -2
- package/dist/utils/ssr.cjs.js.map +0 -1
- package/dist/utils/ssr.esm.js +0 -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","
|
|
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;
|
|
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
|
|
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
|
-
|
|
5
|
+
ChatWidgetComponent as ChatWidget,
|
|
6
6
|
WidgetStateManager,
|
|
7
|
-
|
|
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.
|
|
4
|
-
"description": "
|
|
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
|
-
"
|
|
121
|
-
"
|
|
122
|
-
"terser": "^5.
|
|
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
|
-
"
|
|
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",
|
package/dist/utils/ssr.cjs.js
DELETED
|
@@ -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"}
|
package/dist/utils/ssr.esm.js
DELETED
|
@@ -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;"}
|