@trishchuk/coolors-mcp 1.0.0 → 1.1.0
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/.github/ISSUE_TEMPLATE/bug_report.md +20 -8
- package/.github/ISSUE_TEMPLATE/feature_request.md +22 -8
- package/.github/pull_request_template.md +33 -8
- package/.github/workflows/ci.yml +107 -104
- package/.github/workflows/deploy-docs.yml +14 -11
- package/.github/workflows/release.yml +25 -23
- package/README.md +149 -15
- package/dist/bin/server.js +997 -256
- package/dist/bin/server.js.map +1 -1
- package/dist/{chunk-P3ARRKLS.js → chunk-HOMDMKUY.js} +3 -1
- package/dist/{chunk-P3ARRKLS.js.map → chunk-HOMDMKUY.js.map} +1 -1
- package/dist/{chunk-IQ7NN26V.js → chunk-LHW2ZTOU.js} +14 -2
- package/dist/chunk-LHW2ZTOU.js.map +1 -0
- package/dist/color/index.js +1 -1
- package/dist/coolors-mcp.d.ts +4 -4
- package/dist/coolors-mcp.js +1 -1
- package/docs/.vitepress/components/ClientGrid.vue +9 -3
- package/docs/.vitepress/components/CodeBlock.vue +51 -44
- package/docs/.vitepress/components/ConfigModal.vue +151 -67
- package/docs/.vitepress/components/DiagramModal.vue +186 -154
- package/docs/.vitepress/components/TroubleshootingModal.vue +101 -96
- package/docs/.vitepress/config.js +171 -141
- package/docs/.vitepress/theme/FundingLayout.vue +65 -54
- package/docs/.vitepress/theme/Layout.vue +21 -21
- package/docs/.vitepress/theme/components/AdBanner.vue +73 -52
- package/docs/.vitepress/theme/components/AdPlaceholder.vue +3 -3
- package/docs/.vitepress/theme/components/FundingEffects.vue +77 -53
- package/docs/.vitepress/theme/components/FundingHero.vue +78 -63
- package/docs/.vitepress/theme/components/SupportSection.vue +106 -89
- package/docs/.vitepress/theme/custom-app.css +19 -12
- package/docs/.vitepress/theme/custom.css +33 -25
- package/docs/.vitepress/theme/index.js +19 -16
- package/docs/concepts/accessibility.md +59 -47
- package/docs/concepts/color-spaces.md +28 -6
- package/docs/concepts/distance-metrics.md +45 -30
- package/docs/concepts/hct.md +30 -27
- package/docs/concepts/image-analysis.md +52 -21
- package/docs/concepts/material-design.md +43 -17
- package/docs/concepts/theme-matching.md +64 -40
- package/docs/examples/basic-colors.md +92 -108
- package/docs/examples/creating-themes.md +104 -108
- package/docs/examples/css-refactoring.md +33 -29
- package/docs/examples/image-extraction.md +145 -138
- package/docs/getting-started.md +45 -34
- package/docs/index.md +5 -1
- package/docs/installation.md +15 -1
- package/docs/tools/accessibility.md +74 -68
- package/docs/tools/image-extraction.md +62 -54
- package/docs/tools/theme-matching.md +45 -42
- package/eslint.config.ts +13 -0
- package/jsr.json +1 -1
- package/package.json +17 -13
- package/src/bin/server.ts +13 -1
- package/src/color/__tests__/extract-colors.test.ts +20 -30
- package/src/color/apca.ts +105 -0
- package/src/color/color-blindness.ts +109 -0
- package/src/coolors-mcp.ts +1 -1
- package/src/session.ts +10 -2
- package/src/theme/matcher.ts +1 -1
- package/src/theme/refactor.ts +1 -1
- package/src/theme/types.ts +3 -0
- package/src/tools/__tests__/cohesion.test.ts +97 -0
- package/src/tools/__tests__/color-blindness.test.ts +45 -0
- package/src/tools/__tests__/color-conversion.test.ts +38 -0
- package/src/tools/__tests__/contrast-checker.test.ts +56 -0
- package/src/tools/__tests__/palette-export.test.ts +54 -0
- package/src/tools/adjust-color.tool.ts +80 -0
- package/src/tools/cohesion.tools.ts +380 -0
- package/src/tools/color-blindness.tool.ts +168 -0
- package/src/tools/color-conversion.tool.ts +1 -1
- package/src/tools/contrast-checker.tool.ts +53 -14
- package/src/tools/dislike-analyzer.tool.ts +41 -54
- package/src/tools/image-extraction.tools.ts +62 -115
- package/src/tools/index.ts +15 -2
- package/src/tools/palette-export.tool.ts +174 -0
- package/src/tools/palette-with-locks.tool.ts +8 -6
- package/src/types.ts +2 -3
- package/tsconfig.json +12 -2
- package/vitest.config.js +1 -3
- package/.claude/settings.local.json +0 -39
- package/.env +0 -2
- package/.mcp.json +0 -12
- package/CLAUDE.md +0 -201
- package/DOCUMENTATION.md +0 -274
- package/GEMINI.md +0 -54
- package/demo/content_based_color.png +0 -0
- package/demo/music-player.html +0 -621
- package/demo/podcast-player.html +0 -903
- package/dist/chunk-IQ7NN26V.js.map +0 -1
- package/docs/.vitepress/cache/deps/@braintree_sanitize-url.js +0 -93
- package/docs/.vitepress/cache/deps/@braintree_sanitize-url.js.map +0 -7
- package/docs/.vitepress/cache/deps/_metadata.json +0 -127
- package/docs/.vitepress/cache/deps/chunk-BUSYA2B4.js +0 -9
- package/docs/.vitepress/cache/deps/chunk-BUSYA2B4.js.map +0 -7
- package/docs/.vitepress/cache/deps/chunk-JD3CXNQ6.js +0 -12683
- package/docs/.vitepress/cache/deps/chunk-JD3CXNQ6.js.map +0 -7
- package/docs/.vitepress/cache/deps/chunk-SYPOPCWC.js +0 -9719
- package/docs/.vitepress/cache/deps/chunk-SYPOPCWC.js.map +0 -7
- package/docs/.vitepress/cache/deps/cytoscape-cose-bilkent.js +0 -4710
- package/docs/.vitepress/cache/deps/cytoscape-cose-bilkent.js.map +0 -7
- package/docs/.vitepress/cache/deps/cytoscape.js +0 -30278
- package/docs/.vitepress/cache/deps/cytoscape.js.map +0 -7
- package/docs/.vitepress/cache/deps/dayjs.js +0 -285
- package/docs/.vitepress/cache/deps/dayjs.js.map +0 -7
- package/docs/.vitepress/cache/deps/debug.js +0 -468
- package/docs/.vitepress/cache/deps/debug.js.map +0 -7
- package/docs/.vitepress/cache/deps/package.json +0 -3
- package/docs/.vitepress/cache/deps/prismjs.js +0 -1466
- package/docs/.vitepress/cache/deps/prismjs.js.map +0 -7
- package/docs/.vitepress/cache/deps/prismjs_components_prism-bash.js +0 -228
- package/docs/.vitepress/cache/deps/prismjs_components_prism-bash.js.map +0 -7
- package/docs/.vitepress/cache/deps/prismjs_components_prism-javascript.js +0 -142
- package/docs/.vitepress/cache/deps/prismjs_components_prism-javascript.js.map +0 -7
- package/docs/.vitepress/cache/deps/prismjs_components_prism-json.js +0 -27
- package/docs/.vitepress/cache/deps/prismjs_components_prism-json.js.map +0 -7
- package/docs/.vitepress/cache/deps/prismjs_components_prism-python.js +0 -65
- package/docs/.vitepress/cache/deps/prismjs_components_prism-python.js.map +0 -7
- package/docs/.vitepress/cache/deps/prismjs_components_prism-typescript.js +0 -53
- package/docs/.vitepress/cache/deps/prismjs_components_prism-typescript.js.map +0 -7
- package/docs/.vitepress/cache/deps/prismjs_components_prism-yaml.js +0 -73
- package/docs/.vitepress/cache/deps/prismjs_components_prism-yaml.js.map +0 -7
- package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +0 -4507
- package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +0 -7
- package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js +0 -584
- package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +0 -7
- package/docs/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js +0 -1146
- package/docs/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js.map +0 -7
- package/docs/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js +0 -1667
- package/docs/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js.map +0 -7
- package/docs/.vitepress/cache/deps/vitepress___minisearch.js +0 -1814
- package/docs/.vitepress/cache/deps/vitepress___minisearch.js.map +0 -7
- package/docs/.vitepress/cache/deps/vue.js +0 -344
- package/docs/.vitepress/cache/deps/vue.js.map +0 -7
- package/examples/theme-matching.md +0 -113
- package/mcp-config.json +0 -8
- package/note.md +0 -35
- package/research_results.md +0 -53
- package/src/tools/colors.ts +0 -31
- package/src/tools/registry.ts +0 -142
- package/src/tools/simple-tools.ts +0 -37
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/coolors-mcp.ts","../src/session.ts"],"sourcesContent":["import { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { EventEmitter } from \"events\";\nimport { StrictEventEmitter } from \"strict-event-emitter-types\";\n\nimport { CoolorsMCPSession } from \"./session.js\";\nimport {\n CoolorsMCPEvents,\n CoolorsMCPSessionAuth,\n ServerOptions,\n Tool,\n ToolParameters,\n} from \"./types.js\";\n\nexport class CoolorsMcp extends (EventEmitter as {\n new (): StrictEventEmitter<EventEmitter, CoolorsMCPEvents>;\n}) {\n #sessions: CoolorsMCPSession[] = [];\n #tools: Tool<CoolorsMCPSessionAuth>[] = [];\n\n constructor(public options: ServerOptions<CoolorsMCPSessionAuth>) {\n super();\n }\n\n public addTool<Params extends ToolParameters>(\n tool: Tool<CoolorsMCPSessionAuth, Params>,\n ) {\n this.#tools.push(tool as unknown as Tool<CoolorsMCPSessionAuth>);\n }\n\n public async start() {\n const transport = new StdioServerTransport();\n const session = new CoolorsMCPSession(this.options, this.#tools);\n this.#sessions.push(session);\n await session.connect(transport);\n this.emit(\"connect\", { session });\n }\n}\n","import { Server } from \"@modelcontextprotocol/sdk/server/index.js\";\nimport { Transport } from \"@modelcontextprotocol/sdk/shared/transport.js\";\nimport {\n CallToolRequestSchema,\n ErrorCode,\n ListToolsRequestSchema,\n McpError,\n} from \"@modelcontextprotocol/sdk/types.js\";\nimport { EventEmitter } from \"events\";\nimport { StrictEventEmitter } from \"strict-event-emitter-types\";\nimport { toJsonSchema } from \"xsschema\";\n\nimport {\n CoolorsMCPSessionAuth,\n CoolorsMCPSessionEvents,\n ServerOptions,\n Tool,\n} from \"./types.js\";\n\nexport class CoolorsMCPSession extends (EventEmitter as {\n new (): StrictEventEmitter<EventEmitter, CoolorsMCPSessionEvents>;\n}) {\n #server: Server;\n #tools: Tool<CoolorsMCPSessionAuth>[];\n\n constructor(\n options: ServerOptions<CoolorsMCPSessionAuth>,\n tools: Tool<CoolorsMCPSessionAuth>[],\n ) {\n super();\n this.#server = new Server(\n { name: options.name, version: options.version },\n { capabilities: { tools: {} } },\n );\n this.#tools = tools;\n this.setupToolHandlers();\n }\n\n public async connect(transport: Transport) {\n await this.#server.connect(transport);\n this.emit(\"ready\");\n }\n\n private setupToolHandlers() {\n this.#server.setRequestHandler(ListToolsRequestSchema, async () => {\n return {\n tools: await Promise.all(\n this.#tools.map(async (tool) => {\n return {\n annotations: tool.annotations,\n description: tool.description,\n inputSchema: tool.parameters\n ? await toJsonSchema(tool.parameters)\n : {\n additionalProperties: false,\n properties: {},\n type: \"object\",\n },\n name: tool.name,\n };\n }),\n ),\n };\n });\n\n this.#server.setRequestHandler(CallToolRequestSchema, async (request) => {\n const tool = this.#tools.find(\n (tool) => tool.name === request.params.name,\n );\n\n if (!tool) {\n throw new McpError(\n ErrorCode.MethodNotFound,\n `Unknown tool: ${request.params.name}`,\n );\n }\n\n let args: unknown = undefined;\n\n if (tool.parameters) {\n const parsed = await tool.parameters[\"~standard\"].validate(\n request.params.arguments,\n );\n\n if (parsed.issues) {\n const friendlyErrors = parsed.issues\n .map((issue) => {\n const path = issue.path?.join(\".\") || \"root\";\n return `${path}: ${issue.message}`;\n })\n .join(\", \");\n\n throw new McpError(\n ErrorCode.InvalidParams,\n `Tool '${request.params.name}' parameter validation failed: ${friendlyErrors}. Please check the parameter types and values according to the tool's schema.`,\n );\n }\n\n args = parsed.value;\n }\n\n const result = await tool.execute(\n args as Parameters<typeof tool.execute>[0],\n {} as CoolorsMCPSessionAuth,\n );\n\n if (typeof result === \"string\") {\n return {\n content: [{ text: result, type: \"text\" }],\n };\n }\n\n return result;\n });\n }\n}\n"],"mappings":"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","names":["EventEmitter","tool","EventEmitter"]}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
__commonJS
|
|
3
|
-
} from "./chunk-BUSYA2B4.js";
|
|
4
|
-
|
|
5
|
-
// node_modules/@braintree/sanitize-url/dist/constants.js
|
|
6
|
-
var require_constants = __commonJS({
|
|
7
|
-
"node_modules/@braintree/sanitize-url/dist/constants.js"(exports) {
|
|
8
|
-
"use strict";
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.BLANK_URL = exports.relativeFirstCharacters = exports.whitespaceEscapeCharsRegex = exports.urlSchemeRegex = exports.ctrlCharactersRegex = exports.htmlCtrlEntityRegex = exports.htmlEntitiesRegex = exports.invalidProtocolRegex = void 0;
|
|
11
|
-
exports.invalidProtocolRegex = /^([^\w]*)(javascript|data|vbscript)/im;
|
|
12
|
-
exports.htmlEntitiesRegex = /&#(\w+)(^\w|;)?/g;
|
|
13
|
-
exports.htmlCtrlEntityRegex = /&(newline|tab);/gi;
|
|
14
|
-
exports.ctrlCharactersRegex = /[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim;
|
|
15
|
-
exports.urlSchemeRegex = /^.+(:|:)/gim;
|
|
16
|
-
exports.whitespaceEscapeCharsRegex = /(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;
|
|
17
|
-
exports.relativeFirstCharacters = [".", "/"];
|
|
18
|
-
exports.BLANK_URL = "about:blank";
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
// node_modules/@braintree/sanitize-url/dist/index.js
|
|
23
|
-
var require_dist = __commonJS({
|
|
24
|
-
"node_modules/@braintree/sanitize-url/dist/index.js"(exports) {
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.sanitizeUrl = void 0;
|
|
27
|
-
var constants_1 = require_constants();
|
|
28
|
-
function isRelativeUrlWithoutProtocol(url) {
|
|
29
|
-
return constants_1.relativeFirstCharacters.indexOf(url[0]) > -1;
|
|
30
|
-
}
|
|
31
|
-
function decodeHtmlCharacters(str) {
|
|
32
|
-
var removedNullByte = str.replace(constants_1.ctrlCharactersRegex, "");
|
|
33
|
-
return removedNullByte.replace(constants_1.htmlEntitiesRegex, function(match, dec) {
|
|
34
|
-
return String.fromCharCode(dec);
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
function isValidUrl(url) {
|
|
38
|
-
return URL.canParse(url);
|
|
39
|
-
}
|
|
40
|
-
function decodeURI(uri) {
|
|
41
|
-
try {
|
|
42
|
-
return decodeURIComponent(uri);
|
|
43
|
-
} catch (e) {
|
|
44
|
-
return uri;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
function sanitizeUrl(url) {
|
|
48
|
-
if (!url) {
|
|
49
|
-
return constants_1.BLANK_URL;
|
|
50
|
-
}
|
|
51
|
-
var charsToDecode;
|
|
52
|
-
var decodedUrl = decodeURI(url.trim());
|
|
53
|
-
do {
|
|
54
|
-
decodedUrl = decodeHtmlCharacters(decodedUrl).replace(constants_1.htmlCtrlEntityRegex, "").replace(constants_1.ctrlCharactersRegex, "").replace(constants_1.whitespaceEscapeCharsRegex, "").trim();
|
|
55
|
-
decodedUrl = decodeURI(decodedUrl);
|
|
56
|
-
charsToDecode = decodedUrl.match(constants_1.ctrlCharactersRegex) || decodedUrl.match(constants_1.htmlEntitiesRegex) || decodedUrl.match(constants_1.htmlCtrlEntityRegex) || decodedUrl.match(constants_1.whitespaceEscapeCharsRegex);
|
|
57
|
-
} while (charsToDecode && charsToDecode.length > 0);
|
|
58
|
-
var sanitizedUrl = decodedUrl;
|
|
59
|
-
if (!sanitizedUrl) {
|
|
60
|
-
return constants_1.BLANK_URL;
|
|
61
|
-
}
|
|
62
|
-
if (isRelativeUrlWithoutProtocol(sanitizedUrl)) {
|
|
63
|
-
return sanitizedUrl;
|
|
64
|
-
}
|
|
65
|
-
var trimmedUrl = sanitizedUrl.trimStart();
|
|
66
|
-
var urlSchemeParseResults = trimmedUrl.match(constants_1.urlSchemeRegex);
|
|
67
|
-
if (!urlSchemeParseResults) {
|
|
68
|
-
return sanitizedUrl;
|
|
69
|
-
}
|
|
70
|
-
var urlScheme = urlSchemeParseResults[0].toLowerCase().trim();
|
|
71
|
-
if (constants_1.invalidProtocolRegex.test(urlScheme)) {
|
|
72
|
-
return constants_1.BLANK_URL;
|
|
73
|
-
}
|
|
74
|
-
var backSanitized = trimmedUrl.replace(/\\/g, "/");
|
|
75
|
-
if (urlScheme === "mailto:" || urlScheme.includes("://")) {
|
|
76
|
-
return backSanitized;
|
|
77
|
-
}
|
|
78
|
-
if (urlScheme === "http:" || urlScheme === "https:") {
|
|
79
|
-
if (!isValidUrl(backSanitized)) {
|
|
80
|
-
return constants_1.BLANK_URL;
|
|
81
|
-
}
|
|
82
|
-
var url_1 = new URL(backSanitized);
|
|
83
|
-
url_1.protocol = url_1.protocol.toLowerCase();
|
|
84
|
-
url_1.hostname = url_1.hostname.toLowerCase();
|
|
85
|
-
return url_1.toString();
|
|
86
|
-
}
|
|
87
|
-
return backSanitized;
|
|
88
|
-
}
|
|
89
|
-
exports.sanitizeUrl = sanitizeUrl;
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
export default require_dist();
|
|
93
|
-
//# sourceMappingURL=@braintree_sanitize-url.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../node_modules/@braintree/sanitize-url/dist/constants.js", "../../../../node_modules/@braintree/sanitize-url/dist/index.js"],
|
|
4
|
-
"sourcesContent": ["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BLANK_URL = exports.relativeFirstCharacters = exports.whitespaceEscapeCharsRegex = exports.urlSchemeRegex = exports.ctrlCharactersRegex = exports.htmlCtrlEntityRegex = exports.htmlEntitiesRegex = exports.invalidProtocolRegex = void 0;\nexports.invalidProtocolRegex = /^([^\\w]*)(javascript|data|vbscript)/im;\nexports.htmlEntitiesRegex = /&#(\\w+)(^\\w|;)?/g;\nexports.htmlCtrlEntityRegex = /&(newline|tab);/gi;\nexports.ctrlCharactersRegex = /[\\u0000-\\u001F\\u007F-\\u009F\\u2000-\\u200D\\uFEFF]/gim;\nexports.urlSchemeRegex = /^.+(:|:)/gim;\nexports.whitespaceEscapeCharsRegex = /(\\\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g;\nexports.relativeFirstCharacters = [\".\", \"/\"];\nexports.BLANK_URL = \"about:blank\";\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sanitizeUrl = void 0;\nvar constants_1 = require(\"./constants\");\nfunction isRelativeUrlWithoutProtocol(url) {\n return constants_1.relativeFirstCharacters.indexOf(url[0]) > -1;\n}\nfunction decodeHtmlCharacters(str) {\n var removedNullByte = str.replace(constants_1.ctrlCharactersRegex, \"\");\n return removedNullByte.replace(constants_1.htmlEntitiesRegex, function (match, dec) {\n return String.fromCharCode(dec);\n });\n}\nfunction isValidUrl(url) {\n return URL.canParse(url);\n}\nfunction decodeURI(uri) {\n try {\n return decodeURIComponent(uri);\n }\n catch (e) {\n // Ignoring error\n // It is possible that the URI contains a `%` not associated\n // with URI/URL-encoding.\n return uri;\n }\n}\nfunction sanitizeUrl(url) {\n if (!url) {\n return constants_1.BLANK_URL;\n }\n var charsToDecode;\n var decodedUrl = decodeURI(url.trim());\n do {\n decodedUrl = decodeHtmlCharacters(decodedUrl)\n .replace(constants_1.htmlCtrlEntityRegex, \"\")\n .replace(constants_1.ctrlCharactersRegex, \"\")\n .replace(constants_1.whitespaceEscapeCharsRegex, \"\")\n .trim();\n decodedUrl = decodeURI(decodedUrl);\n charsToDecode =\n decodedUrl.match(constants_1.ctrlCharactersRegex) ||\n decodedUrl.match(constants_1.htmlEntitiesRegex) ||\n decodedUrl.match(constants_1.htmlCtrlEntityRegex) ||\n decodedUrl.match(constants_1.whitespaceEscapeCharsRegex);\n } while (charsToDecode && charsToDecode.length > 0);\n var sanitizedUrl = decodedUrl;\n if (!sanitizedUrl) {\n return constants_1.BLANK_URL;\n }\n if (isRelativeUrlWithoutProtocol(sanitizedUrl)) {\n return sanitizedUrl;\n }\n // Remove any leading whitespace before checking the URL scheme\n var trimmedUrl = sanitizedUrl.trimStart();\n var urlSchemeParseResults = trimmedUrl.match(constants_1.urlSchemeRegex);\n if (!urlSchemeParseResults) {\n return sanitizedUrl;\n }\n var urlScheme = urlSchemeParseResults[0].toLowerCase().trim();\n if (constants_1.invalidProtocolRegex.test(urlScheme)) {\n return constants_1.BLANK_URL;\n }\n var backSanitized = trimmedUrl.replace(/\\\\/g, \"/\");\n // Handle special cases for mailto: and custom deep-link protocols\n if (urlScheme === \"mailto:\" || urlScheme.includes(\"://\")) {\n return backSanitized;\n }\n // For http and https URLs, perform additional validation\n if (urlScheme === \"http:\" || urlScheme === \"https:\") {\n if (!isValidUrl(backSanitized)) {\n return constants_1.BLANK_URL;\n }\n var url_1 = new URL(backSanitized);\n url_1.protocol = url_1.protocol.toLowerCase();\n url_1.hostname = url_1.hostname.toLowerCase();\n return url_1.toString();\n }\n return backSanitized;\n}\nexports.sanitizeUrl = sanitizeUrl;\n"],
|
|
5
|
-
"mappings": ";;;;;AAAA;AAAA;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,YAAY,QAAQ,0BAA0B,QAAQ,6BAA6B,QAAQ,iBAAiB,QAAQ,sBAAsB,QAAQ,sBAAsB,QAAQ,oBAAoB,QAAQ,uBAAuB;AAC3O,YAAQ,uBAAuB;AAC/B,YAAQ,oBAAoB;AAC5B,YAAQ,sBAAsB;AAC9B,YAAQ,sBAAsB;AAC9B,YAAQ,iBAAiB;AACzB,YAAQ,6BAA6B;AACrC,YAAQ,0BAA0B,CAAC,KAAK,GAAG;AAC3C,YAAQ,YAAY;AAAA;AAAA;;;ACVpB;AAAA;AACA,WAAO,eAAe,SAAS,cAAc,EAAE,OAAO,KAAK,CAAC;AAC5D,YAAQ,cAAc;AACtB,QAAI,cAAc;AAClB,aAAS,6BAA6B,KAAK;AACvC,aAAO,YAAY,wBAAwB,QAAQ,IAAI,CAAC,CAAC,IAAI;AAAA,IACjE;AACA,aAAS,qBAAqB,KAAK;AAC/B,UAAI,kBAAkB,IAAI,QAAQ,YAAY,qBAAqB,EAAE;AACrE,aAAO,gBAAgB,QAAQ,YAAY,mBAAmB,SAAU,OAAO,KAAK;AAChF,eAAO,OAAO,aAAa,GAAG;AAAA,MAClC,CAAC;AAAA,IACL;AACA,aAAS,WAAW,KAAK;AACrB,aAAO,IAAI,SAAS,GAAG;AAAA,IAC3B;AACA,aAAS,UAAU,KAAK;AACpB,UAAI;AACA,eAAO,mBAAmB,GAAG;AAAA,MACjC,SACO,GAAG;AAIN,eAAO;AAAA,MACX;AAAA,IACJ;AACA,aAAS,YAAY,KAAK;AACtB,UAAI,CAAC,KAAK;AACN,eAAO,YAAY;AAAA,MACvB;AACA,UAAI;AACJ,UAAI,aAAa,UAAU,IAAI,KAAK,CAAC;AACrC,SAAG;AACC,qBAAa,qBAAqB,UAAU,EACvC,QAAQ,YAAY,qBAAqB,EAAE,EAC3C,QAAQ,YAAY,qBAAqB,EAAE,EAC3C,QAAQ,YAAY,4BAA4B,EAAE,EAClD,KAAK;AACV,qBAAa,UAAU,UAAU;AACjC,wBACI,WAAW,MAAM,YAAY,mBAAmB,KAC5C,WAAW,MAAM,YAAY,iBAAiB,KAC9C,WAAW,MAAM,YAAY,mBAAmB,KAChD,WAAW,MAAM,YAAY,0BAA0B;AAAA,MACnE,SAAS,iBAAiB,cAAc,SAAS;AACjD,UAAI,eAAe;AACnB,UAAI,CAAC,cAAc;AACf,eAAO,YAAY;AAAA,MACvB;AACA,UAAI,6BAA6B,YAAY,GAAG;AAC5C,eAAO;AAAA,MACX;AAEA,UAAI,aAAa,aAAa,UAAU;AACxC,UAAI,wBAAwB,WAAW,MAAM,YAAY,cAAc;AACvE,UAAI,CAAC,uBAAuB;AACxB,eAAO;AAAA,MACX;AACA,UAAI,YAAY,sBAAsB,CAAC,EAAE,YAAY,EAAE,KAAK;AAC5D,UAAI,YAAY,qBAAqB,KAAK,SAAS,GAAG;AAClD,eAAO,YAAY;AAAA,MACvB;AACA,UAAI,gBAAgB,WAAW,QAAQ,OAAO,GAAG;AAEjD,UAAI,cAAc,aAAa,UAAU,SAAS,KAAK,GAAG;AACtD,eAAO;AAAA,MACX;AAEA,UAAI,cAAc,WAAW,cAAc,UAAU;AACjD,YAAI,CAAC,WAAW,aAAa,GAAG;AAC5B,iBAAO,YAAY;AAAA,QACvB;AACA,YAAI,QAAQ,IAAI,IAAI,aAAa;AACjC,cAAM,WAAW,MAAM,SAAS,YAAY;AAC5C,cAAM,WAAW,MAAM,SAAS,YAAY;AAC5C,eAAO,MAAM,SAAS;AAAA,MAC1B;AACA,aAAO;AAAA,IACX;AACA,YAAQ,cAAc;AAAA;AAAA;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"hash": "b238d3de",
|
|
3
|
-
"configHash": "5131fe82",
|
|
4
|
-
"lockfileHash": "5dcae059",
|
|
5
|
-
"browserHash": "e824103e",
|
|
6
|
-
"optimized": {
|
|
7
|
-
"vue": {
|
|
8
|
-
"src": "../../../../node_modules/vue/dist/vue.runtime.esm-bundler.js",
|
|
9
|
-
"file": "vue.js",
|
|
10
|
-
"fileHash": "928a2568",
|
|
11
|
-
"needsInterop": false
|
|
12
|
-
},
|
|
13
|
-
"vitepress > @vue/devtools-api": {
|
|
14
|
-
"src": "../../../../node_modules/@vue/devtools-api/dist/index.js",
|
|
15
|
-
"file": "vitepress___@vue_devtools-api.js",
|
|
16
|
-
"fileHash": "16df9887",
|
|
17
|
-
"needsInterop": false
|
|
18
|
-
},
|
|
19
|
-
"vitepress > @vueuse/core": {
|
|
20
|
-
"src": "../../../../node_modules/@vueuse/core/index.mjs",
|
|
21
|
-
"file": "vitepress___@vueuse_core.js",
|
|
22
|
-
"fileHash": "ca0be31d",
|
|
23
|
-
"needsInterop": false
|
|
24
|
-
},
|
|
25
|
-
"@braintree/sanitize-url": {
|
|
26
|
-
"src": "../../../../node_modules/@braintree/sanitize-url/dist/index.js",
|
|
27
|
-
"file": "@braintree_sanitize-url.js",
|
|
28
|
-
"fileHash": "7e02544c",
|
|
29
|
-
"needsInterop": true
|
|
30
|
-
},
|
|
31
|
-
"dayjs": {
|
|
32
|
-
"src": "../../../../node_modules/dayjs/dayjs.min.js",
|
|
33
|
-
"file": "dayjs.js",
|
|
34
|
-
"fileHash": "af894476",
|
|
35
|
-
"needsInterop": true
|
|
36
|
-
},
|
|
37
|
-
"debug": {
|
|
38
|
-
"src": "../../../../node_modules/debug/src/browser.js",
|
|
39
|
-
"file": "debug.js",
|
|
40
|
-
"fileHash": "64e8b39d",
|
|
41
|
-
"needsInterop": true
|
|
42
|
-
},
|
|
43
|
-
"cytoscape-cose-bilkent": {
|
|
44
|
-
"src": "../../../../node_modules/cytoscape-cose-bilkent/cytoscape-cose-bilkent.js",
|
|
45
|
-
"file": "cytoscape-cose-bilkent.js",
|
|
46
|
-
"fileHash": "f30d644d",
|
|
47
|
-
"needsInterop": true
|
|
48
|
-
},
|
|
49
|
-
"cytoscape": {
|
|
50
|
-
"src": "../../../../node_modules/cytoscape/dist/cytoscape.esm.mjs",
|
|
51
|
-
"file": "cytoscape.js",
|
|
52
|
-
"fileHash": "b22d7f5a",
|
|
53
|
-
"needsInterop": false
|
|
54
|
-
},
|
|
55
|
-
"vitepress > @vueuse/integrations/useFocusTrap": {
|
|
56
|
-
"src": "../../../../node_modules/@vueuse/integrations/useFocusTrap.mjs",
|
|
57
|
-
"file": "vitepress___@vueuse_integrations_useFocusTrap.js",
|
|
58
|
-
"fileHash": "e6e2e240",
|
|
59
|
-
"needsInterop": false
|
|
60
|
-
},
|
|
61
|
-
"vitepress > mark.js/src/vanilla.js": {
|
|
62
|
-
"src": "../../../../node_modules/mark.js/src/vanilla.js",
|
|
63
|
-
"file": "vitepress___mark__js_src_vanilla__js.js",
|
|
64
|
-
"fileHash": "c956e466",
|
|
65
|
-
"needsInterop": false
|
|
66
|
-
},
|
|
67
|
-
"vitepress > minisearch": {
|
|
68
|
-
"src": "../../../../node_modules/minisearch/dist/es/index.js",
|
|
69
|
-
"file": "vitepress___minisearch.js",
|
|
70
|
-
"fileHash": "8beb61c4",
|
|
71
|
-
"needsInterop": false
|
|
72
|
-
},
|
|
73
|
-
"prismjs": {
|
|
74
|
-
"src": "../../../../node_modules/prismjs/prism.js",
|
|
75
|
-
"file": "prismjs.js",
|
|
76
|
-
"fileHash": "f6861f5f",
|
|
77
|
-
"needsInterop": true
|
|
78
|
-
},
|
|
79
|
-
"prismjs/components/prism-bash": {
|
|
80
|
-
"src": "../../../../node_modules/prismjs/components/prism-bash.js",
|
|
81
|
-
"file": "prismjs_components_prism-bash.js",
|
|
82
|
-
"fileHash": "d636ca5c",
|
|
83
|
-
"needsInterop": true
|
|
84
|
-
},
|
|
85
|
-
"prismjs/components/prism-python": {
|
|
86
|
-
"src": "../../../../node_modules/prismjs/components/prism-python.js",
|
|
87
|
-
"file": "prismjs_components_prism-python.js",
|
|
88
|
-
"fileHash": "901b1add",
|
|
89
|
-
"needsInterop": true
|
|
90
|
-
},
|
|
91
|
-
"prismjs/components/prism-typescript": {
|
|
92
|
-
"src": "../../../../node_modules/prismjs/components/prism-typescript.js",
|
|
93
|
-
"file": "prismjs_components_prism-typescript.js",
|
|
94
|
-
"fileHash": "c4bf171e",
|
|
95
|
-
"needsInterop": true
|
|
96
|
-
},
|
|
97
|
-
"prismjs/components/prism-javascript": {
|
|
98
|
-
"src": "../../../../node_modules/prismjs/components/prism-javascript.js",
|
|
99
|
-
"file": "prismjs_components_prism-javascript.js",
|
|
100
|
-
"fileHash": "63110d26",
|
|
101
|
-
"needsInterop": true
|
|
102
|
-
},
|
|
103
|
-
"prismjs/components/prism-json": {
|
|
104
|
-
"src": "../../../../node_modules/prismjs/components/prism-json.js",
|
|
105
|
-
"file": "prismjs_components_prism-json.js",
|
|
106
|
-
"fileHash": "58a15f2e",
|
|
107
|
-
"needsInterop": true
|
|
108
|
-
},
|
|
109
|
-
"prismjs/components/prism-yaml": {
|
|
110
|
-
"src": "../../../../node_modules/prismjs/components/prism-yaml.js",
|
|
111
|
-
"file": "prismjs_components_prism-yaml.js",
|
|
112
|
-
"fileHash": "b01ef0f8",
|
|
113
|
-
"needsInterop": true
|
|
114
|
-
}
|
|
115
|
-
},
|
|
116
|
-
"chunks": {
|
|
117
|
-
"chunk-SYPOPCWC": {
|
|
118
|
-
"file": "chunk-SYPOPCWC.js"
|
|
119
|
-
},
|
|
120
|
-
"chunk-JD3CXNQ6": {
|
|
121
|
-
"file": "chunk-JD3CXNQ6.js"
|
|
122
|
-
},
|
|
123
|
-
"chunk-BUSYA2B4": {
|
|
124
|
-
"file": "chunk-BUSYA2B4.js"
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
2
|
-
var __commonJS = (cb, mod) => function __require() {
|
|
3
|
-
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
export {
|
|
7
|
-
__commonJS
|
|
8
|
-
};
|
|
9
|
-
//# sourceMappingURL=chunk-BUSYA2B4.js.map
|