@trishchuk/coolors-mcp 1.0.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.
Files changed (197) hide show
  1. package/.claude/settings.local.json +39 -0
  2. package/.env +2 -0
  3. package/.github/ISSUE_TEMPLATE/bug_report.md +73 -0
  4. package/.github/ISSUE_TEMPLATE/feature_request.md +71 -0
  5. package/.github/pull_request_template.md +97 -0
  6. package/.github/workflows/ci.yml +127 -0
  7. package/.github/workflows/deploy-docs.yml +56 -0
  8. package/.github/workflows/release.yml +99 -0
  9. package/.mcp.json +12 -0
  10. package/.prettierignore +1 -0
  11. package/CLAUDE.md +201 -0
  12. package/DOCUMENTATION.md +274 -0
  13. package/GEMINI.md +54 -0
  14. package/LICENSE +21 -0
  15. package/README.md +401 -0
  16. package/demo/content_based_color.png +0 -0
  17. package/demo/music-player.html +621 -0
  18. package/demo/podcast-player.html +903 -0
  19. package/dist/bin/coolors-mcp.d.ts +1 -0
  20. package/dist/bin/coolors-mcp.js +154 -0
  21. package/dist/bin/coolors-mcp.js.map +1 -0
  22. package/dist/bin/server.d.ts +1 -0
  23. package/dist/bin/server.js +3292 -0
  24. package/dist/bin/server.js.map +1 -0
  25. package/dist/chunk-IQ7NN26V.js +114 -0
  26. package/dist/chunk-IQ7NN26V.js.map +1 -0
  27. package/dist/chunk-P3ARRKLS.js +1214 -0
  28. package/dist/chunk-P3ARRKLS.js.map +1 -0
  29. package/dist/color/index.d.ts +716 -0
  30. package/dist/color/index.js +153 -0
  31. package/dist/color/index.js.map +1 -0
  32. package/dist/coolors-mcp.d.ts +136 -0
  33. package/dist/coolors-mcp.js +7 -0
  34. package/dist/coolors-mcp.js.map +1 -0
  35. package/docs/.vitepress/cache/deps/@braintree_sanitize-url.js +93 -0
  36. package/docs/.vitepress/cache/deps/@braintree_sanitize-url.js.map +7 -0
  37. package/docs/.vitepress/cache/deps/_metadata.json +127 -0
  38. package/docs/.vitepress/cache/deps/chunk-BUSYA2B4.js +9 -0
  39. package/docs/.vitepress/cache/deps/chunk-BUSYA2B4.js.map +7 -0
  40. package/docs/.vitepress/cache/deps/chunk-JD3CXNQ6.js +12683 -0
  41. package/docs/.vitepress/cache/deps/chunk-JD3CXNQ6.js.map +7 -0
  42. package/docs/.vitepress/cache/deps/chunk-SYPOPCWC.js +9719 -0
  43. package/docs/.vitepress/cache/deps/chunk-SYPOPCWC.js.map +7 -0
  44. package/docs/.vitepress/cache/deps/cytoscape-cose-bilkent.js +4710 -0
  45. package/docs/.vitepress/cache/deps/cytoscape-cose-bilkent.js.map +7 -0
  46. package/docs/.vitepress/cache/deps/cytoscape.js +30278 -0
  47. package/docs/.vitepress/cache/deps/cytoscape.js.map +7 -0
  48. package/docs/.vitepress/cache/deps/dayjs.js +285 -0
  49. package/docs/.vitepress/cache/deps/dayjs.js.map +7 -0
  50. package/docs/.vitepress/cache/deps/debug.js +468 -0
  51. package/docs/.vitepress/cache/deps/debug.js.map +7 -0
  52. package/docs/.vitepress/cache/deps/package.json +3 -0
  53. package/docs/.vitepress/cache/deps/prismjs.js +1466 -0
  54. package/docs/.vitepress/cache/deps/prismjs.js.map +7 -0
  55. package/docs/.vitepress/cache/deps/prismjs_components_prism-bash.js +228 -0
  56. package/docs/.vitepress/cache/deps/prismjs_components_prism-bash.js.map +7 -0
  57. package/docs/.vitepress/cache/deps/prismjs_components_prism-javascript.js +142 -0
  58. package/docs/.vitepress/cache/deps/prismjs_components_prism-javascript.js.map +7 -0
  59. package/docs/.vitepress/cache/deps/prismjs_components_prism-json.js +27 -0
  60. package/docs/.vitepress/cache/deps/prismjs_components_prism-json.js.map +7 -0
  61. package/docs/.vitepress/cache/deps/prismjs_components_prism-python.js +65 -0
  62. package/docs/.vitepress/cache/deps/prismjs_components_prism-python.js.map +7 -0
  63. package/docs/.vitepress/cache/deps/prismjs_components_prism-typescript.js +53 -0
  64. package/docs/.vitepress/cache/deps/prismjs_components_prism-typescript.js.map +7 -0
  65. package/docs/.vitepress/cache/deps/prismjs_components_prism-yaml.js +73 -0
  66. package/docs/.vitepress/cache/deps/prismjs_components_prism-yaml.js.map +7 -0
  67. package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +4507 -0
  68. package/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +7 -0
  69. package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js +584 -0
  70. package/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +7 -0
  71. package/docs/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js +1146 -0
  72. package/docs/.vitepress/cache/deps/vitepress___@vueuse_integrations_useFocusTrap.js.map +7 -0
  73. package/docs/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js +1667 -0
  74. package/docs/.vitepress/cache/deps/vitepress___mark__js_src_vanilla__js.js.map +7 -0
  75. package/docs/.vitepress/cache/deps/vitepress___minisearch.js +1814 -0
  76. package/docs/.vitepress/cache/deps/vitepress___minisearch.js.map +7 -0
  77. package/docs/.vitepress/cache/deps/vue.js +344 -0
  78. package/docs/.vitepress/cache/deps/vue.js.map +7 -0
  79. package/docs/.vitepress/components/ClientGrid.vue +125 -0
  80. package/docs/.vitepress/components/CodeBlock.vue +231 -0
  81. package/docs/.vitepress/components/ConfigModal.vue +477 -0
  82. package/docs/.vitepress/components/DiagramModal.vue +528 -0
  83. package/docs/.vitepress/components/TroubleshootingModal.vue +472 -0
  84. package/docs/.vitepress/config.js +162 -0
  85. package/docs/.vitepress/theme/FundingLayout.vue +251 -0
  86. package/docs/.vitepress/theme/Layout.vue +134 -0
  87. package/docs/.vitepress/theme/components/AdBanner.vue +317 -0
  88. package/docs/.vitepress/theme/components/AdPlaceholder.vue +78 -0
  89. package/docs/.vitepress/theme/components/FundingEffects.vue +322 -0
  90. package/docs/.vitepress/theme/components/FundingHero.vue +345 -0
  91. package/docs/.vitepress/theme/components/SupportSection.vue +511 -0
  92. package/docs/.vitepress/theme/custom-app.css +339 -0
  93. package/docs/.vitepress/theme/custom.css +699 -0
  94. package/docs/.vitepress/theme/index.js +25 -0
  95. package/docs/README.md +198 -0
  96. package/docs/concepts/accessibility.md +473 -0
  97. package/docs/concepts/color-spaces.md +222 -0
  98. package/docs/concepts/distance-metrics.md +384 -0
  99. package/docs/concepts/hct.md +261 -0
  100. package/docs/concepts/image-analysis.md +396 -0
  101. package/docs/concepts/material-design.md +306 -0
  102. package/docs/concepts/theme-matching.md +399 -0
  103. package/docs/examples/basic-colors.md +490 -0
  104. package/docs/examples/creating-themes.md +898 -0
  105. package/docs/examples/css-refactoring.md +824 -0
  106. package/docs/examples/image-extraction.md +882 -0
  107. package/docs/getting-started.md +366 -0
  108. package/docs/index.md +190 -0
  109. package/docs/installation.md +157 -0
  110. package/docs/tools/README.md +234 -0
  111. package/docs/tools/accessibility.md +614 -0
  112. package/docs/tools/color-operations.md +374 -0
  113. package/docs/tools/image-extraction.md +624 -0
  114. package/docs/tools/material-design.md +347 -0
  115. package/docs/tools/theme-matching.md +552 -0
  116. package/eslint.config.ts +14 -0
  117. package/examples/theme-matching.md +113 -0
  118. package/jsr.json +7 -0
  119. package/mcp-config.json +8 -0
  120. package/note.md +35 -0
  121. package/package.json +122 -0
  122. package/research_results.md +53 -0
  123. package/src/bin/coolors-mcp.ts +194 -0
  124. package/src/bin/server.ts +61 -0
  125. package/src/color/__tests__/conversions-argb.test.ts +198 -0
  126. package/src/color/__tests__/extract-colors.test.ts +360 -0
  127. package/src/color/__tests__/image-utils.test.ts +242 -0
  128. package/src/color/__tests__/reference-colors.test.ts +278 -0
  129. package/src/color/__tests__/round-trip.test.ts +197 -0
  130. package/src/color/conversions.test.ts +402 -0
  131. package/src/color/conversions.ts +393 -0
  132. package/src/color/dislike/__tests__/dislike-analyzer.test.ts +248 -0
  133. package/src/color/dislike/dislike-analyzer.ts +114 -0
  134. package/src/color/extract-colors.ts +228 -0
  135. package/src/color/hct/__tests__/hct-class.test.ts +232 -0
  136. package/src/color/hct/harmonization.ts +204 -0
  137. package/src/color/hct/hct-class.ts +109 -0
  138. package/src/color/hct/hct-solver.ts +168 -0
  139. package/src/color/hct/index.ts +39 -0
  140. package/src/color/hct/tonal-palette.ts +211 -0
  141. package/src/color/hct/types.ts +88 -0
  142. package/src/color/image-utils.ts +79 -0
  143. package/src/color/index.ts +87 -0
  144. package/src/color/material-theme.ts +157 -0
  145. package/src/color/metrics.test.ts +276 -0
  146. package/src/color/metrics.ts +281 -0
  147. package/src/color/quantize/__tests__/quantizer_celebi.test.ts +195 -0
  148. package/src/color/quantize/lab_point_provider.ts +55 -0
  149. package/src/color/quantize/point_provider.ts +27 -0
  150. package/src/color/quantize/quantizer_celebi.ts +51 -0
  151. package/src/color/quantize/quantizer_celebi_test.ts +71 -0
  152. package/src/color/quantize/quantizer_map.ts +47 -0
  153. package/src/color/quantize/quantizer_wsmeans.ts +232 -0
  154. package/src/color/quantize/quantizer_wu.ts +472 -0
  155. package/src/color/score/__tests__/score.test.ts +224 -0
  156. package/src/color/score/score.ts +175 -0
  157. package/src/color/types.ts +151 -0
  158. package/src/color/utils/color_utils.ts +292 -0
  159. package/src/color/utils/math_utils.ts +145 -0
  160. package/src/color/utils.test.ts +403 -0
  161. package/src/color/utils.ts +315 -0
  162. package/src/constants.ts +5 -0
  163. package/src/coolors-mcp.ts +37 -0
  164. package/src/examples/addition.ts +333 -0
  165. package/src/examples/color-demo.ts +125 -0
  166. package/src/examples/custom-logger.ts +201 -0
  167. package/src/examples/oauth-server.ts +113 -0
  168. package/src/examples/session-context.ts +269 -0
  169. package/src/session.ts +116 -0
  170. package/src/theme/__tests__/matcher.test.ts +180 -0
  171. package/src/theme/__tests__/parser.test.ts +148 -0
  172. package/src/theme/__tests__/refactor.test.ts +224 -0
  173. package/src/theme/index.ts +34 -0
  174. package/src/theme/matcher.ts +395 -0
  175. package/src/theme/parser.ts +392 -0
  176. package/src/theme/refactor.ts +360 -0
  177. package/src/theme/types.ts +152 -0
  178. package/src/tools/__tests__/gradient-generator.test.ts +206 -0
  179. package/src/tools/__tests__/palette-with-locks.test.ts +109 -0
  180. package/src/tools/color-conversion.tool.ts +54 -0
  181. package/src/tools/color-distance.tool.ts +41 -0
  182. package/src/tools/colors.ts +31 -0
  183. package/src/tools/contrast-checker.tool.ts +37 -0
  184. package/src/tools/dislike-analyzer.tool.ts +247 -0
  185. package/src/tools/gradient-generator.tool.ts +250 -0
  186. package/src/tools/image-extraction.tools.ts +289 -0
  187. package/src/tools/index.ts +39 -0
  188. package/src/tools/material-theme.tools.ts +250 -0
  189. package/src/tools/palette-generator.tool.ts +135 -0
  190. package/src/tools/palette-with-locks.tool.ts +221 -0
  191. package/src/tools/registry.ts +142 -0
  192. package/src/tools/simple-tools.ts +37 -0
  193. package/src/tools/theme-matching.tools.ts +334 -0
  194. package/src/types.ts +182 -0
  195. package/src/utils.ts +22 -0
  196. package/tsconfig.json +8 -0
  197. package/vitest.config.js +15 -0
@@ -0,0 +1,153 @@
1
+ import {
2
+ ColorConstants,
3
+ ColorFormat,
4
+ DislikeAnalyzer,
5
+ EXTENDED_TONES,
6
+ Hct,
7
+ MATERIAL_TONES,
8
+ STANDARD_CONDITIONS,
9
+ TonalPalette,
10
+ adjustTemperature,
11
+ analogous,
12
+ analogousPalette,
13
+ areColorsSimilar,
14
+ argbToRgb,
15
+ blend,
16
+ clampHsl,
17
+ clampHsv,
18
+ clampRgb,
19
+ colorDistance,
20
+ complementaryPalette,
21
+ corePaletteFromRgb,
22
+ darken,
23
+ deltaE2000,
24
+ deltaE76,
25
+ deltaE94,
26
+ desaturate,
27
+ doubleComplementary,
28
+ euclideanDistance,
29
+ findMostDifferentColor,
30
+ findMostSimilarColor,
31
+ formatColor,
32
+ formatHsl,
33
+ formatRgb,
34
+ getComplementary,
35
+ getContrastRatio,
36
+ getLuminance,
37
+ gradient,
38
+ harmonize,
39
+ hct,
40
+ hctToRgb,
41
+ hexToRgb,
42
+ hslToRgb,
43
+ hsvToRgb,
44
+ invertColor,
45
+ isDark,
46
+ isLight,
47
+ isValidHex,
48
+ isValidHsl,
49
+ isValidHsv,
50
+ isValidRgb,
51
+ labToRgb,
52
+ labToXyz,
53
+ lighten,
54
+ maxChroma,
55
+ meetsContrastAA,
56
+ meetsContrastAAA,
57
+ mixColors,
58
+ monochromaticPalette,
59
+ parseColor,
60
+ randomColor,
61
+ rgbToArgb,
62
+ rgbToHct,
63
+ rgbToHex,
64
+ rgbToHsl,
65
+ rgbToHsv,
66
+ rgbToLab,
67
+ rgbToXyz,
68
+ saturate,
69
+ splitComplementary,
70
+ tetradic,
71
+ toGrayscale,
72
+ triadicPalette,
73
+ weightedRgbDistance,
74
+ xyzToLab,
75
+ xyzToRgb
76
+ } from "../chunk-P3ARRKLS.js";
77
+ export {
78
+ ColorConstants,
79
+ ColorFormat,
80
+ DislikeAnalyzer,
81
+ EXTENDED_TONES,
82
+ Hct,
83
+ MATERIAL_TONES,
84
+ STANDARD_CONDITIONS,
85
+ TonalPalette,
86
+ adjustTemperature,
87
+ analogous,
88
+ analogousPalette,
89
+ areColorsSimilar,
90
+ argbToRgb,
91
+ blend,
92
+ clampHsl,
93
+ clampHsv,
94
+ clampRgb,
95
+ colorDistance,
96
+ complementaryPalette,
97
+ corePaletteFromRgb,
98
+ darken,
99
+ deltaE2000,
100
+ deltaE76,
101
+ deltaE94,
102
+ desaturate,
103
+ doubleComplementary,
104
+ euclideanDistance,
105
+ findMostDifferentColor,
106
+ findMostSimilarColor,
107
+ formatColor,
108
+ formatHsl,
109
+ formatRgb,
110
+ getComplementary,
111
+ getContrastRatio,
112
+ getLuminance,
113
+ gradient,
114
+ harmonize,
115
+ hct,
116
+ hctToRgb,
117
+ hexToRgb,
118
+ hslToRgb,
119
+ hsvToRgb,
120
+ invertColor,
121
+ isDark,
122
+ isLight,
123
+ isValidHex,
124
+ isValidHsl,
125
+ isValidHsv,
126
+ isValidRgb,
127
+ labToRgb,
128
+ labToXyz,
129
+ lighten,
130
+ maxChroma,
131
+ meetsContrastAA,
132
+ meetsContrastAAA,
133
+ mixColors,
134
+ monochromaticPalette,
135
+ parseColor,
136
+ randomColor,
137
+ rgbToArgb,
138
+ rgbToHct,
139
+ rgbToHex,
140
+ rgbToHsl,
141
+ rgbToHsv,
142
+ rgbToLab,
143
+ rgbToXyz,
144
+ saturate,
145
+ splitComplementary,
146
+ tetradic,
147
+ toGrayscale,
148
+ triadicPalette,
149
+ weightedRgbDistance,
150
+ xyzToLab,
151
+ xyzToRgb
152
+ };
153
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,136 @@
1
+ import { EventEmitter } from 'events';
2
+ import { StrictEventEmitter } from 'strict-event-emitter-types';
3
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
4
+ import { StandardSchemaV1 } from '@standard-schema/spec';
5
+
6
+ type AudioContent = {
7
+ data: string;
8
+ mimeType: string;
9
+ type: "audio";
10
+ };
11
+ type Content = AudioContent | ImageContent | ResourceContent | ResourceLink | TextContent;
12
+ type ContentResult = {
13
+ content: Content[];
14
+ isError?: boolean;
15
+ };
16
+ type Context<T extends CoolorsMCPSessionAuth> = {
17
+ client: {
18
+ version: ReturnType<Server["getClientVersion"]>;
19
+ };
20
+ log: {
21
+ debug: (message: string, data?: SerializableValue) => void;
22
+ error: (message: string, data?: SerializableValue) => void;
23
+ info: (message: string, data?: SerializableValue) => void;
24
+ warn: (message: string, data?: SerializableValue) => void;
25
+ };
26
+ reportProgress: (progress: Progress) => Promise<void>;
27
+ session: T | undefined;
28
+ streamContent: (content: Content | Content[]) => Promise<void>;
29
+ };
30
+ type CoolorsMCPEvents = {
31
+ connect: (event: {
32
+ session: any;
33
+ }) => void;
34
+ disconnect: (event: {
35
+ session: any;
36
+ }) => void;
37
+ };
38
+ type CoolorsMCPSessionAuth = Record<string, unknown> | undefined;
39
+ type ImageContent = {
40
+ data: string;
41
+ mimeType: string;
42
+ type: "image";
43
+ };
44
+ type Literal = boolean | null | number | string | undefined;
45
+ interface Logger {
46
+ debug(...args: unknown[]): void;
47
+ error(...args: unknown[]): void;
48
+ info(...args: unknown[]): void;
49
+ log(...args: unknown[]): void;
50
+ warn(...args: unknown[]): void;
51
+ }
52
+ type LoggingLevel = "alert" | "critical" | "debug" | "emergency" | "error" | "info" | "notice" | "warning";
53
+ type Progress = {
54
+ progress: number;
55
+ total?: number;
56
+ };
57
+ type ResourceContent = {
58
+ resource: {
59
+ blob?: string;
60
+ mimeType?: string;
61
+ text?: string;
62
+ uri: string;
63
+ };
64
+ type: "resource";
65
+ };
66
+ type ResourceLink = {
67
+ description?: string;
68
+ mimeType?: string;
69
+ name: string;
70
+ title?: string;
71
+ type: "resource_link";
72
+ uri: string;
73
+ };
74
+ type SerializableValue = {
75
+ [key: string]: SerializableValue;
76
+ } | Literal | SerializableValue[];
77
+ type ServerOptions<T extends CoolorsMCPSessionAuth> = {
78
+ authenticate?: (request: unknown) => Promise<T>;
79
+ health?: {
80
+ enabled?: boolean;
81
+ message?: string;
82
+ path?: string;
83
+ status?: number;
84
+ };
85
+ instructions?: string;
86
+ logger?: Logger;
87
+ name: string;
88
+ ping?: {
89
+ enabled?: boolean;
90
+ intervalMs?: number;
91
+ logLevel?: LoggingLevel;
92
+ };
93
+ roots?: {
94
+ enabled?: boolean;
95
+ };
96
+ utils?: {
97
+ formatInvalidParamsErrorMessage?: (issues: readonly StandardSchemaV1.Issue[]) => string;
98
+ };
99
+ version: `${number}.${number}.${number}`;
100
+ };
101
+ type TextContent = {
102
+ text: string;
103
+ type: "text";
104
+ };
105
+ type Tool<T extends CoolorsMCPSessionAuth, Params extends ToolParameters = ToolParameters> = {
106
+ annotations?: {
107
+ streamingHint?: boolean;
108
+ } & ToolAnnotations;
109
+ canAccess?: (auth: T) => boolean;
110
+ description?: string;
111
+ execute: (args: StandardSchemaV1.InferOutput<Params>, context: Context<T>) => Promise<AudioContent | ContentResult | ImageContent | ResourceContent | ResourceLink | string | TextContent | void>;
112
+ name: string;
113
+ parameters?: Params;
114
+ timeoutMs?: number;
115
+ };
116
+ type ToolAnnotations = {
117
+ destructiveHint?: boolean;
118
+ idempotentHint?: boolean;
119
+ openWorldHint?: boolean;
120
+ readOnlyHint?: boolean;
121
+ title?: string;
122
+ };
123
+ type ToolParameters = StandardSchemaV1;
124
+
125
+ declare const CoolorsMcp_base: {
126
+ new (): StrictEventEmitter<EventEmitter, CoolorsMCPEvents>;
127
+ };
128
+ declare class CoolorsMcp extends CoolorsMcp_base {
129
+ #private;
130
+ options: ServerOptions<CoolorsMCPSessionAuth>;
131
+ constructor(options: ServerOptions<CoolorsMCPSessionAuth>);
132
+ addTool<Params extends ToolParameters>(tool: Tool<CoolorsMCPSessionAuth, Params>): void;
133
+ start(): Promise<void>;
134
+ }
135
+
136
+ export { CoolorsMcp };
@@ -0,0 +1,7 @@
1
+ import {
2
+ CoolorsMcp
3
+ } from "./chunk-IQ7NN26V.js";
4
+ export {
5
+ CoolorsMcp
6
+ };
7
+ //# sourceMappingURL=coolors-mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,93 @@
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 = /^.+(:|&colon;)/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
@@ -0,0 +1,7 @@
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 = /^.+(:|&colon;)/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
+ }
@@ -0,0 +1,127 @@
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
+ }
@@ -0,0 +1,9 @@
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
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }