@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.
- package/README.md +276 -0
- package/dist/_virtual/_plugin-vue_export-helper.cjs.js +2 -0
- package/dist/_virtual/_plugin-vue_export-helper.cjs.js.map +1 -0
- package/dist/_virtual/_plugin-vue_export-helper.esm.js +11 -0
- package/dist/_virtual/_plugin-vue_export-helper.esm.js.map +1 -0
- package/dist/adapters/vue/index.d.ts +7 -0
- package/dist/adapters/vue/index.d.ts.map +1 -0
- package/dist/adapters/vue/useChatMode.d.ts +21 -0
- package/dist/adapters/vue/useChatMode.d.ts.map +1 -0
- package/dist/components/ChatWidget.d.ts +43 -0
- package/dist/components/ChatWidget.d.ts.map +1 -0
- package/dist/components/ChatWidget.vue.cjs.js +2 -0
- package/dist/components/ChatWidget.vue.cjs.js.map +1 -0
- package/dist/components/ChatWidget.vue.cjs2.js +2 -0
- package/dist/components/ChatWidget.vue.cjs2.js.map +1 -0
- package/dist/components/ChatWidget.vue.esm.js +8 -0
- package/dist/components/ChatWidget.vue.esm.js.map +1 -0
- package/dist/components/ChatWidget.vue.esm2.js +331 -0
- package/dist/components/ChatWidget.vue.esm2.js.map +1 -0
- package/dist/composables/useChatWidget.cjs.js +2 -0
- package/dist/composables/useChatWidget.cjs.js.map +1 -0
- package/dist/composables/useChatWidget.d.ts +34 -0
- package/dist/composables/useChatWidget.d.ts.map +1 -0
- package/dist/composables/useChatWidget.esm.js +72 -0
- package/dist/composables/useChatWidget.esm.js.map +1 -0
- package/dist/core/stateManager.cjs.js +2 -0
- package/dist/core/stateManager.cjs.js.map +1 -0
- package/dist/core/stateManager.d.ts +136 -0
- package/dist/core/stateManager.d.ts.map +1 -0
- package/dist/core/stateManager.esm.js +907 -0
- package/dist/core/stateManager.esm.js.map +1 -0
- package/dist/core/types.d.ts +66 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/entry/next.d.ts +9 -0
- package/dist/entry/next.d.ts.map +1 -0
- package/dist/entry/nuxt.d.ts +10 -0
- package/dist/entry/nuxt.d.ts.map +1 -0
- package/dist/entry/react.d.ts +10 -0
- package/dist/entry/react.d.ts.map +1 -0
- package/dist/entry/vanilla.d.ts +33 -0
- package/dist/entry/vanilla.d.ts.map +1 -0
- package/dist/entry/vite.d.ts +11 -0
- package/dist/entry/vite.d.ts.map +1 -0
- package/dist/entry/vue.d.ts +11 -0
- package/dist/entry/vue.d.ts.map +1 -0
- package/dist/hooks/useChatMode.d.ts +17 -0
- package/dist/hooks/useChatMode.d.ts.map +1 -0
- package/dist/index.cjs.js +2 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.esm.js +25 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/jws/compact/sign.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/jws/compact/sign.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/jws/compact/sign.esm.js +21 -0
- package/dist/node_modules/jose/dist/browser/jws/compact/sign.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/jws/flattened/sign.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/jws/flattened/sign.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/jws/flattened/sign.esm.js +84 -0
- package/dist/node_modules/jose/dist/browser/jws/flattened/sign.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/jwt/produce.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/jwt/produce.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/jwt/produce.esm.js +72 -0
- package/dist/node_modules/jose/dist/browser/jwt/produce.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/jwt/sign.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/jwt/sign.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/jwt/sign.esm.js +22 -0
- package/dist/node_modules/jose/dist/browser/jwt/sign.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/key/import.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/key/import.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/key/import.esm.js +11 -0
- package/dist/node_modules/jose/dist/browser/key/import.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/lib/buffer_utils.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/lib/buffer_utils.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/lib/buffer_utils.esm.js +18 -0
- package/dist/node_modules/jose/dist/browser/lib/buffer_utils.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/lib/check_key_type.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/lib/check_key_type.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/lib/check_key_type.esm.js +77 -0
- package/dist/node_modules/jose/dist/browser/lib/check_key_type.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/lib/crypto_key.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/lib/crypto_key.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/lib/crypto_key.esm.js +101 -0
- package/dist/node_modules/jose/dist/browser/lib/crypto_key.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/lib/epoch.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/lib/epoch.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/lib/epoch.esm.js +5 -0
- package/dist/node_modules/jose/dist/browser/lib/epoch.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/lib/invalid_key_input.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/lib/invalid_key_input.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/lib/invalid_key_input.esm.js +32 -0
- package/dist/node_modules/jose/dist/browser/lib/invalid_key_input.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/lib/is_disjoint.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/lib/is_disjoint.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/lib/is_disjoint.esm.js +25 -0
- package/dist/node_modules/jose/dist/browser/lib/is_disjoint.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/lib/is_jwk.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/lib/is_jwk.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/lib/is_jwk.esm.js +20 -0
- package/dist/node_modules/jose/dist/browser/lib/is_jwk.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/lib/is_object.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/lib/is_object.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/lib/is_object.esm.js +20 -0
- package/dist/node_modules/jose/dist/browser/lib/is_object.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/lib/secs.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/lib/secs.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/lib/secs.esm.js +59 -0
- package/dist/node_modules/jose/dist/browser/lib/secs.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/lib/validate_crit.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/lib/validate_crit.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/lib/validate_crit.esm.js +34 -0
- package/dist/node_modules/jose/dist/browser/lib/validate_crit.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/runtime/asn1.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/runtime/asn1.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/runtime/asn1.esm.js +103 -0
- package/dist/node_modules/jose/dist/browser/runtime/asn1.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/runtime/base64url.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/runtime/base64url.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/runtime/base64url.esm.js +43 -0
- package/dist/node_modules/jose/dist/browser/runtime/base64url.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/runtime/check_key_length.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/runtime/check_key_length.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/runtime/check_key_length.esm.js +12 -0
- package/dist/node_modules/jose/dist/browser/runtime/check_key_length.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/runtime/get_sign_verify_key.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/runtime/get_sign_verify_key.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/runtime/get_sign_verify_key.esm.js +25 -0
- package/dist/node_modules/jose/dist/browser/runtime/get_sign_verify_key.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/runtime/is_key_like.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/runtime/is_key_like.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/runtime/is_key_like.esm.js +13 -0
- package/dist/node_modules/jose/dist/browser/runtime/is_key_like.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/runtime/jwk_to_key.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/runtime/jwk_to_key.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/runtime/jwk_to_key.esm.js +107 -0
- package/dist/node_modules/jose/dist/browser/runtime/jwk_to_key.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/runtime/normalize_key.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/runtime/normalize_key.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/runtime/normalize_key.esm.js +71 -0
- package/dist/node_modules/jose/dist/browser/runtime/normalize_key.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/runtime/sign.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/runtime/sign.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/runtime/sign.esm.js +14 -0
- package/dist/node_modules/jose/dist/browser/runtime/sign.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/runtime/subtle_dsa.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/runtime/subtle_dsa.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/runtime/subtle_dsa.esm.js +32 -0
- package/dist/node_modules/jose/dist/browser/runtime/subtle_dsa.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/runtime/webcrypto.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/runtime/webcrypto.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/runtime/webcrypto.esm.js +7 -0
- package/dist/node_modules/jose/dist/browser/runtime/webcrypto.esm.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/util/errors.cjs.js +2 -0
- package/dist/node_modules/jose/dist/browser/util/errors.cjs.js.map +1 -0
- package/dist/node_modules/jose/dist/browser/util/errors.esm.js +131 -0
- package/dist/node_modules/jose/dist/browser/util/errors.esm.js.map +1 -0
- package/dist/nuxt.cjs.js +2 -0
- package/dist/nuxt.cjs.js.map +1 -0
- package/dist/nuxt.esm.js +8 -0
- package/dist/nuxt.esm.js.map +1 -0
- package/dist/services/chatService.cjs.js +2 -0
- package/dist/services/chatService.cjs.js.map +1 -0
- package/dist/services/chatService.d.ts +144 -0
- package/dist/services/chatService.d.ts.map +1 -0
- package/dist/services/chatService.esm.js +482 -0
- package/dist/services/chatService.esm.js.map +1 -0
- package/dist/services/dialogflowClient.cjs.js +2 -0
- package/dist/services/dialogflowClient.cjs.js.map +1 -0
- package/dist/services/dialogflowClient.d.ts +36 -0
- package/dist/services/dialogflowClient.d.ts.map +1 -0
- package/dist/services/dialogflowClient.esm.js +282 -0
- package/dist/services/dialogflowClient.esm.js.map +1 -0
- package/dist/services/sessionManager.cjs.js +2 -0
- package/dist/services/sessionManager.cjs.js.map +1 -0
- package/dist/services/sessionManager.d.ts +13 -0
- package/dist/services/sessionManager.d.ts.map +1 -0
- package/dist/services/sessionManager.esm.js +48 -0
- package/dist/services/sessionManager.esm.js.map +1 -0
- package/dist/styles.css +0 -0
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/utils/dialogflowHandler.d.ts +31 -0
- package/dist/utils/dialogflowHandler.d.ts.map +1 -0
- package/dist/utils/frameworkDetector.d.ts +17 -0
- package/dist/utils/frameworkDetector.d.ts.map +1 -0
- package/dist/utils/sanitize.cjs.js +2 -0
- package/dist/utils/sanitize.cjs.js.map +1 -0
- package/dist/utils/sanitize.d.ts +25 -0
- package/dist/utils/sanitize.d.ts.map +1 -0
- package/dist/utils/sanitize.esm.js +57 -0
- package/dist/utils/sanitize.esm.js.map +1 -0
- package/dist/utils/ssr.cjs.js +2 -0
- package/dist/utils/ssr.cjs.js.map +1 -0
- package/dist/utils/ssr.d.ts +35 -0
- package/dist/utils/ssr.d.ts.map +1 -0
- package/dist/utils/ssr.esm.js +48 -0
- package/dist/utils/ssr.esm.js.map +1 -0
- package/dist/vue.cjs.js +2 -0
- package/dist/vue.cjs.js.map +1 -0
- package/dist/vue.esm.js +10 -0
- package/dist/vue.esm.js.map +1 -0
- 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;"}
|
package/dist/vue.cjs.js
ADDED
|
@@ -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":""}
|
package/dist/vue.esm.js
ADDED
|
@@ -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
|
+
}
|