@trops/dash-core 0.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/dist/electron/index.js +7920 -0
- package/dist/electron/index.js.map +1 -0
- package/dist/index.esm.js +31593 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +31865 -0
- package/dist/index.js.map +1 -0
- package/package.json +67 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../electron/events/secureStorageEvents.js","../../electron/events/workspaceEvents.js","../../electron/events/layoutEvents.js","../../electron/events/themeEvents.js","../../electron/events/dataEvents.js","../../electron/events/settingsEvents.js","../../electron/events/dialogEvents.js","../../electron/events/providerEvents.js","../../electron/events/mcpEvents.js","../../electron/events/registryEvents.js","../../electron/events/index.js","../../electron/controller/dialogController.js","../../electron/controller/secureStoreController.js","../../electron/utils/file.js","../../electron/controller/workspaceController.js","../../electron/controller/themeController.js","../../electron/utils/transform.js","../../electron/utils/ntc.js","../../electron/utils/color.js","../../electron/controller/dataController.js","../../electron/controller/settingsController.js","../../electron/controller/providerController.js","../../electron/controller/layoutController.js","../../electron/controller/mcpController.js","../../electron/controller/registryController.js","../../electron/controller/index.js","../../electron/api/secureStoreApi.js","../../electron/api/workspaceApi.js","../../electron/api/layoutApi.js","../../electron/api/dataApi.js","../../electron/api/settingsApi.js","../../electron/api/dialogApi.js","../../electron/api/widgetApi.js","../../electron/api/providerApi.js","../../electron/api/mcpApi.js","../../electron/api/registryApi.js","../../electron/api/themeApi.js","../../electron/widgetCompiler.js","../../electron/dynamicWidgetLoader.js","../../electron/widgetRegistry.js","../../electron/api/mainApi.js","../../electron/index.js"],"sourcesContent":["const SECURE_STORE_ENCRYPTION_CHECK = \"secure-storage-encryption-check\";\nconst SECURE_STORE_ENCRYPTION_CHECK_COMPLETE =\n \"secure-storage-encryption-check-complete\";\nconst SECURE_STORE_ENCRYPTION_CHECK_ERROR =\n \"secure-storage-encryption-check-error\";\n\nconst SECURE_STORAGE_ENCRYPT_STRING = \"secure-storage-encrypt-string\";\nconst SECURE_STORAGE_ENCRYPT_STRING_COMPLETE =\n \"secure-storage-encrypt-string-complete\";\nconst SECURE_STORAGE_ENCRYPT_STRING_ERROR =\n \"secure-storage-encrypt-string-error\";\n\nconst SECURE_STORE_GET_DATA = \"secure-storage-get-data\";\nconst SECURE_STORE_GET_DATA_COMPLETE = \"secure-storage-get-data-complete\";\nconst SECURE_STORE_GET_DATA_ERROR = \"secure-storage-get-data-error\";\n\nconst SECURE_STORE_SET_DATA = \"secure-storage-set-data\";\nconst SECURE_STORE_SET_DATA_COMPLETE = \"secure-storage-set-data-complete\";\nconst SECURE_STORE_SET_DATA_ERROR = \"secure-storage-set-data-error\";\n\nmodule.exports = {\n SECURE_STORE_ENCRYPTION_CHECK,\n SECURE_STORE_ENCRYPTION_CHECK_COMPLETE,\n SECURE_STORE_ENCRYPTION_CHECK_ERROR,\n SECURE_STORE_SET_DATA,\n SECURE_STORE_SET_DATA_COMPLETE,\n SECURE_STORE_SET_DATA_ERROR,\n SECURE_STORE_GET_DATA,\n SECURE_STORE_GET_DATA_COMPLETE,\n SECURE_STORE_GET_DATA_ERROR,\n SECURE_STORAGE_ENCRYPT_STRING,\n SECURE_STORAGE_ENCRYPT_STRING_COMPLETE,\n SECURE_STORAGE_ENCRYPT_STRING_ERROR,\n};\n","/**\n * Event Constants File\n *\n * This file contains event constants that may be used as a type ahead reference for listeners.\n */\nconst WORKSPACE_LIST = \"workspace-list\";\nconst WORKSPACE_LIST_COMPLETE = \"workspace-list-complete\";\nconst WORKSPACE_LIST_ERROR = \"workspace-list-error\";\n\nconst WORKSPACE_SAVE = \"workspace-save\";\nconst WORKSPACE_SAVE_COMPLETE = \"workspace-save-complete\";\nconst WORKSPACE_SAVE_ERROR = \"workspace-save-error\";\n\nconst WORKSPACE_DELETE = \"workspace-delete\";\nconst WORKSPACE_DELETE_COMPLETE = \"workspace-delete-complete\";\nconst WORKSPACE_DELETE_ERROR = \"workspace-delete-error\";\n\nmodule.exports = {\n WORKSPACE_LIST,\n WORKSPACE_LIST_COMPLETE,\n WORKSPACE_LIST_ERROR,\n WORKSPACE_SAVE,\n WORKSPACE_SAVE_COMPLETE,\n WORKSPACE_SAVE_ERROR,\n WORKSPACE_DELETE,\n WORKSPACE_DELETE_COMPLETE,\n WORKSPACE_DELETE_ERROR,\n};\n","/**\n * Event Constants File\n *\n * This file contains event constants that may be used as a type ahead reference for listeners.\n */\nconst LAYOUT_LIST = \"layout-list\";\nconst LAYOUT_LIST_COMPLETE = \"layout-list-complete\";\nconst LAYOUT_LIST_ERROR = \"layout-list-error\";\n\nconst LAYOUT_SAVE = \"layout-save\";\nconst LAYOUT_SAVE_COMPLETE = \"layout-save-complete\";\nconst LAYOUT_SAVE_ERROR = \"layout-save-error\";\n\nmodule.exports = {\n LAYOUT_LIST,\n LAYOUT_LIST_COMPLETE,\n LAYOUT_LIST_ERROR,\n LAYOUT_SAVE,\n LAYOUT_SAVE_COMPLETE,\n LAYOUT_SAVE_ERROR,\n};\n","/**\n * Event Constants File\n *\n * This file contains event constants that may be used as a type ahead reference for listeners.\n */\nconst THEME_LIST = \"theme-list\";\nconst THEME_LIST_COMPLETE = \"theme-list-complete\";\nconst THEME_LIST_ERROR = \"theme-list-error\";\n\nconst THEME_SAVE = \"theme-save\";\nconst THEME_SAVE_COMPLETE = \"theme-save-complete\";\nconst THEME_SAVE_ERROR = \"theme-save-error\";\n\nconst THEME_DELETE = \"theme-delete\";\nconst THEME_DELETE_COMPLETE = \"theme-delete-complete\";\nconst THEME_DELETE_ERROR = \"theme-delete-error\";\n\nmodule.exports = {\n THEME_LIST,\n THEME_LIST_COMPLETE,\n THEME_LIST_ERROR,\n THEME_SAVE,\n THEME_SAVE_COMPLETE,\n THEME_SAVE_ERROR,\n THEME_DELETE,\n THEME_DELETE_COMPLETE,\n THEME_DELETE_ERROR,\n};\n","const DATA_JSON_TO_CSV_FILE = \"data-json-to-csv-file\";\nconst DATA_JSON_TO_CSV_FILE_COMPLETE = \"data-json-to-csv-file-complete\";\nconst DATA_JSON_TO_CSV_FILE_ERROR = \"data-json-to-csv-file-error\";\n\nconst DATA_READ_FROM_FILE = \"data-read-from-file\";\nconst DATA_READ_FROM_FILE_COMPLETE = \"data-read-from-file-complete\";\nconst DATA_READ_FROM_FILE_ERROR = \"data-read-from-file-error\";\n\nconst DATA_SAVE_TO_FILE = \"data-save-to-file\";\nconst DATA_SAVE_TO_FILE_COMPLETE = \"data-save-to-file-complete\";\nconst DATA_SAVE_TO_FILE_ERROR = \"data-save-to-file-error\";\n\nconst DATA_JSON_TO_CSV_STRING = \"data-json-to-csv-string\";\nconst DATA_JSON_TO_CSV_STRING_COMPLETE = \"data-json-to-csv-string-complete\";\nconst DATA_JSON_TO_CSV_STRING_ERROR = \"data-json-to-csv-string-error\";\n\nconst PARSE_XML_STREAM = \"parse-xml-stream\";\nconst PARSE_XML_STREAM_UPDATE = \"parse-xml-stream-update\";\nconst PARSE_XML_STREAM_COMPLETE = \"parse-xml-stream-complete\";\nconst PARSE_XML_STREAM_ERROR = \"parse-xml-stream-error\";\n\nconst PARSE_CSV_STREAM = \"parse-csv-stream\";\nconst PARSE_CSV_STREAM_UPDATE = \"parse-csv-stream-update\";\nconst PARSE_CSV_STREAM_COMPLETE = \"parse-csv-stream-complete\";\nconst PARSE_CSV_STREAM_ERROR = \"parse-csv-stream-error\";\n\nconst READ_LINES = \"read-lines\";\nconst READ_LINES_UPDATE = \"read-lines-update\";\nconst READ_LINES_COMPLETE = \"read-lines-complete\";\nconst READ_LINES_ERROR = \"read-lines-error\";\n\nconst READ_JSON = \"read-json\";\nconst READ_JSON_UPDATE = \"read-json-update\";\nconst READ_JSON_COMPLETE = \"read-json-complete\";\nconst READ_JSON_ERROR = \"read-json-error\";\n\nconst READ_DATA_URL = \"read-data-url\";\nconst READ_DATA_URL_UPDATE = \"read-data-url-update\";\nconst READ_DATA_URL_COMPLETE = \"read-data-url-complete\";\nconst READ_DATA_URL_ERROR = \"read-data-url-error\";\n\nconst TRANSFORM_FILE = \"transform-file\";\nconst TRANSFORM_FILE_UPDATE = \"transform-file-update\";\nconst TRANSFORM_FILE_COMPLETE = \"transform-file-complete\";\nconst TRANSFORM_FILE_ERROR = \"transform-file-error\";\n\nconst EXTRACT_COLORS_FROM_IMAGE = \"extract-colors-from-image\";\nconst EXTRACT_COLORS_FROM_IMAGE_UPDATE = \"extract-colors-from-image-update\";\nconst EXTRACT_COLORS_FROM_IMAGE_COMPLETE = \"extract-colors-from-image-complete\";\nconst EXTRACT_COLORS_FROM_IMAGE_ERROR = \"extract-colors-from-image-error\";\n\nmodule.exports = {\n DATA_JSON_TO_CSV_FILE,\n DATA_JSON_TO_CSV_FILE_COMPLETE,\n DATA_JSON_TO_CSV_FILE_ERROR,\n\n DATA_JSON_TO_CSV_STRING,\n DATA_JSON_TO_CSV_STRING_COMPLETE,\n DATA_JSON_TO_CSV_STRING_ERROR,\n\n DATA_SAVE_TO_FILE,\n DATA_SAVE_TO_FILE_COMPLETE,\n DATA_SAVE_TO_FILE_ERROR,\n\n DATA_READ_FROM_FILE,\n DATA_READ_FROM_FILE_COMPLETE,\n DATA_READ_FROM_FILE_ERROR,\n\n PARSE_XML_STREAM,\n PARSE_XML_STREAM_COMPLETE,\n PARSE_XML_STREAM_UPDATE,\n PARSE_XML_STREAM_ERROR,\n\n PARSE_CSV_STREAM,\n PARSE_CSV_STREAM_COMPLETE,\n PARSE_CSV_STREAM_UPDATE,\n PARSE_CSV_STREAM_ERROR,\n\n READ_LINES,\n READ_LINES_COMPLETE,\n READ_LINES_UPDATE,\n READ_LINES_ERROR,\n\n READ_JSON,\n READ_JSON_COMPLETE,\n READ_JSON_UPDATE,\n READ_JSON_ERROR,\n\n READ_DATA_URL,\n READ_DATA_URL_COMPLETE,\n READ_DATA_URL_UPDATE,\n READ_DATA_URL_ERROR,\n\n TRANSFORM_FILE,\n TRANSFORM_FILE_COMPLETE,\n TRANSFORM_FILE_UPDATE,\n TRANSFORM_FILE_ERROR,\n\n EXTRACT_COLORS_FROM_IMAGE,\n EXTRACT_COLORS_FROM_IMAGE_COMPLETE,\n EXTRACT_COLORS_FROM_IMAGE_UPDATE,\n EXTRACT_COLORS_FROM_IMAGE_ERROR,\n};\n","const SETTINGS_GET = \"settings-get\";\nconst SETTINGS_GET_COMPLETE = \"settings-get-complete\";\nconst SETTINGS_GET_ERROR = \"settings-get-error\";\n\nconst SETTINGS_SAVE = \"settings-save\";\nconst SETTINGS_SAVE_COMPLETE = \"settings-save-complete\";\nconst SETTINGS_SAVE_ERROR = \"settings-save-error\";\n\nconst SETTINGS_GET_DATA_DIR = \"settings-get-data-dir\";\nconst SETTINGS_GET_DATA_DIR_COMPLETE = \"settings-get-data-dir-complete\";\nconst SETTINGS_GET_DATA_DIR_ERROR = \"settings-get-data-dir-error\";\n\nconst SETTINGS_SET_DATA_DIR = \"settings-set-data-dir\";\nconst SETTINGS_SET_DATA_DIR_COMPLETE = \"settings-set-data-dir-complete\";\nconst SETTINGS_SET_DATA_DIR_ERROR = \"settings-set-data-dir-error\";\n\nconst SETTINGS_MIGRATE_DATA_DIR = \"settings-migrate-data-dir\";\nconst SETTINGS_MIGRATE_DATA_DIR_COMPLETE = \"settings-migrate-data-dir-complete\";\nconst SETTINGS_MIGRATE_DATA_DIR_ERROR = \"settings-migrate-data-dir-error\";\n\nmodule.exports = {\n SETTINGS_GET,\n SETTINGS_GET_COMPLETE,\n SETTINGS_GET_ERROR,\n SETTINGS_SAVE,\n SETTINGS_SAVE_COMPLETE,\n SETTINGS_SAVE_ERROR,\n SETTINGS_GET_DATA_DIR,\n SETTINGS_GET_DATA_DIR_COMPLETE,\n SETTINGS_GET_DATA_DIR_ERROR,\n SETTINGS_SET_DATA_DIR,\n SETTINGS_SET_DATA_DIR_COMPLETE,\n SETTINGS_SET_DATA_DIR_ERROR,\n SETTINGS_MIGRATE_DATA_DIR,\n SETTINGS_MIGRATE_DATA_DIR_COMPLETE,\n SETTINGS_MIGRATE_DATA_DIR_ERROR,\n};\n","const CHOOSE_FILE = \"choose-file\";\nconst CHOOSE_FILE_COMPLETE = \"choose-file-complete\";\nconst CHOOSE_FILE_ERROR = \"choose-file-error\";\n\nmodule.exports = {\n CHOOSE_FILE,\n CHOOSE_FILE_COMPLETE,\n CHOOSE_FILE_ERROR,\n};\n","/**\n * Event Constants File - Provider Events\n *\n * This file contains event constants for provider-related IPC communication.\n */\nconst PROVIDER_SAVE = \"provider-save\";\nconst PROVIDER_SAVE_COMPLETE = \"provider-save-complete\";\nconst PROVIDER_SAVE_ERROR = \"provider-save-error\";\n\nconst PROVIDER_LIST = \"provider-list\";\nconst PROVIDER_LIST_COMPLETE = \"provider-list-complete\";\nconst PROVIDER_LIST_ERROR = \"provider-list-error\";\n\nconst PROVIDER_GET = \"provider-get\";\nconst PROVIDER_GET_COMPLETE = \"provider-get-complete\";\nconst PROVIDER_GET_ERROR = \"provider-get-error\";\n\nconst PROVIDER_DELETE = \"provider-delete\";\nconst PROVIDER_DELETE_COMPLETE = \"provider-delete-complete\";\nconst PROVIDER_DELETE_ERROR = \"provider-delete-error\";\n\nmodule.exports = {\n PROVIDER_SAVE,\n PROVIDER_SAVE_COMPLETE,\n PROVIDER_SAVE_ERROR,\n PROVIDER_LIST,\n PROVIDER_LIST_COMPLETE,\n PROVIDER_LIST_ERROR,\n PROVIDER_GET,\n PROVIDER_GET_COMPLETE,\n PROVIDER_GET_ERROR,\n PROVIDER_DELETE,\n PROVIDER_DELETE_COMPLETE,\n PROVIDER_DELETE_ERROR,\n};\n","/**\n * Event Constants File - MCP Events\n *\n * This file contains event constants for MCP (Model Context Protocol)\n * server-related IPC communication.\n */\nconst MCP_START_SERVER = \"mcp-start-server\";\nconst MCP_START_SERVER_COMPLETE = \"mcp-start-server-complete\";\nconst MCP_START_SERVER_ERROR = \"mcp-start-server-error\";\n\nconst MCP_STOP_SERVER = \"mcp-stop-server\";\nconst MCP_STOP_SERVER_COMPLETE = \"mcp-stop-server-complete\";\nconst MCP_STOP_SERVER_ERROR = \"mcp-stop-server-error\";\n\nconst MCP_LIST_TOOLS = \"mcp-list-tools\";\nconst MCP_LIST_TOOLS_COMPLETE = \"mcp-list-tools-complete\";\nconst MCP_LIST_TOOLS_ERROR = \"mcp-list-tools-error\";\n\nconst MCP_CALL_TOOL = \"mcp-call-tool\";\nconst MCP_CALL_TOOL_COMPLETE = \"mcp-call-tool-complete\";\nconst MCP_CALL_TOOL_ERROR = \"mcp-call-tool-error\";\n\nconst MCP_LIST_RESOURCES = \"mcp-list-resources\";\nconst MCP_LIST_RESOURCES_COMPLETE = \"mcp-list-resources-complete\";\nconst MCP_LIST_RESOURCES_ERROR = \"mcp-list-resources-error\";\n\nconst MCP_READ_RESOURCE = \"mcp-read-resource\";\nconst MCP_READ_RESOURCE_COMPLETE = \"mcp-read-resource-complete\";\nconst MCP_READ_RESOURCE_ERROR = \"mcp-read-resource-error\";\n\nconst MCP_SERVER_STATUS = \"mcp-server-status\";\nconst MCP_SERVER_STATUS_COMPLETE = \"mcp-server-status-complete\";\nconst MCP_SERVER_STATUS_ERROR = \"mcp-server-status-error\";\n\nconst MCP_GET_CATALOG = \"mcp-get-catalog\";\nconst MCP_GET_CATALOG_COMPLETE = \"mcp-get-catalog-complete\";\nconst MCP_GET_CATALOG_ERROR = \"mcp-get-catalog-error\";\n\nmodule.exports = {\n MCP_START_SERVER,\n MCP_START_SERVER_COMPLETE,\n MCP_START_SERVER_ERROR,\n MCP_STOP_SERVER,\n MCP_STOP_SERVER_COMPLETE,\n MCP_STOP_SERVER_ERROR,\n MCP_LIST_TOOLS,\n MCP_LIST_TOOLS_COMPLETE,\n MCP_LIST_TOOLS_ERROR,\n MCP_CALL_TOOL,\n MCP_CALL_TOOL_COMPLETE,\n MCP_CALL_TOOL_ERROR,\n MCP_LIST_RESOURCES,\n MCP_LIST_RESOURCES_COMPLETE,\n MCP_LIST_RESOURCES_ERROR,\n MCP_READ_RESOURCE,\n MCP_READ_RESOURCE_COMPLETE,\n MCP_READ_RESOURCE_ERROR,\n MCP_SERVER_STATUS,\n MCP_SERVER_STATUS_COMPLETE,\n MCP_SERVER_STATUS_ERROR,\n MCP_GET_CATALOG,\n MCP_GET_CATALOG_COMPLETE,\n MCP_GET_CATALOG_ERROR,\n};\n","/**\n * Event Constants File - Registry Events\n *\n * IPC event constants for the widget registry/marketplace system.\n */\nconst REGISTRY_FETCH_INDEX = \"registry:fetch-index\";\nconst REGISTRY_SEARCH = \"registry:search\";\nconst REGISTRY_GET_PACKAGE = \"registry:get-package\";\nconst REGISTRY_CHECK_UPDATES = \"registry:check-updates\";\n\nmodule.exports = {\n REGISTRY_FETCH_INDEX,\n REGISTRY_SEARCH,\n REGISTRY_GET_PACKAGE,\n REGISTRY_CHECK_UPDATES,\n};\n","/**\n * Events\n *\n * Core event constants used by the framework.\n * Template-specific events (algolia, openai, menuItem) live in the template repo.\n */\nconst secureStorageEvents = require(\"./secureStorageEvents\");\nconst workspaceEvents = require(\"./workspaceEvents\");\nconst layoutEvents = require(\"./layoutEvents\");\nconst themeEvents = require(\"./themeEvents\");\nconst dataEvents = require(\"./dataEvents\");\nconst settingsEvents = require(\"./settingsEvents\");\nconst dialogEvents = require(\"./dialogEvents\");\nconst providerEvents = require(\"./providerEvents\");\nconst mcpEvents = require(\"./mcpEvents\");\nconst registryEvents = require(\"./registryEvents\");\n\nconst publicEvents = {\n ...dataEvents,\n};\n\nmodule.exports = {\n public: publicEvents,\n ...secureStorageEvents,\n ...workspaceEvents,\n ...layoutEvents,\n ...themeEvents,\n ...dataEvents,\n ...settingsEvents,\n ...dialogEvents,\n ...providerEvents,\n ...mcpEvents,\n ...registryEvents,\n};\n","/**\n * dialogController.js\n *\n * Open a dialog window for choosing files\n */\nconst { dialog } = require(\"electron\");\nconst events = require(\"../events\");\n\nconst showDialog = async (win, message, allowFile, extensions = [\"*\"]) => {\n const properties =\n allowFile === true\n ? [\"openFile\"]\n : [\"openDirectory\", \"createDirectory\"];\n const filters = allowFile === true ? [{ name: \"Data\", extensions }] : [];\n const result = await dialog.showOpenDialog({ properties, filters });\n if (result.canceled || !result.filePaths[0]) return null;\n return result.filePaths[0];\n};\n\nconst fileChosenError = (win, message) => {\n win.webContents.send(events.CHOOSE_FILE_ERROR, message);\n};\n\nmodule.exports = {\n showDialog,\n fileChosenError,\n};\n","/**\n * secureStore\n */\nconst { safeStorage } = require(\"electron\");\nconst Store = require(\"electron-store\");\nconst events = require(\"../events\");\n\nconst schema = {\n appId: {\n type: \"string\",\n },\n apiKey: {\n type: \"string\",\n },\n};\n\nconst isEncryptionAvailable = (win) => {\n const result = safeStorage.isEncryptionAvailable();\n win.webContents.send(events.SECURE_STORE_ENCRYPTION_CHECK_COMPLETE, result);\n};\n\nconst encryptString = (win, str) => {\n const result = safeStorage.encryptString(str);\n win.webContents.send(\"secure-storage-encrypt-string-complete\", result);\n};\n\nconst decryptString = (win, str) => {\n const result = safeStorage.decryptString(str);\n win.webContents.send(\"secure-storage-decrypt-string-complete\", result);\n};\n\nconst saveData = (key, value) => {\n try {\n const store = new Store({ schema });\n store.set(key, value);\n return getData(key);\n } catch (e) {\n return { data: null };\n }\n};\n\nconst getData = (key) => {\n try {\n const store = new Store({ schema });\n const value = store.get(key);\n if (value) {\n return { [key]: value };\n } else {\n return null;\n }\n } catch (e) {\n return null;\n }\n};\n\nmodule.exports = {\n isEncryptionAvailable,\n encryptString,\n decryptString,\n saveData,\n getData,\n};\n","const path = require(\"path\");\nconst {\n readFileSync,\n writeFileSync,\n existsSync,\n mkdirSync,\n openSync,\n closeSync,\n readdir,\n unlink,\n unlinkSync,\n readdirSync,\n lstatSync,\n} = require(\"fs\");\n\nfunction ensureDirectoryExistence(filePath) {\n try {\n // isDirectory\n var dirname = path.dirname(filePath);\n // check if the directory exists...return true\n // if not, we can pass in the dirname as the filepath\n // and check each directory recursively.\n if (existsSync(dirname)) {\n return true;\n }\n // recursion...\n ensureDirectoryExistence(dirname);\n mkdirSync(dirname);\n } catch (e) {\n console.log(\"ensure directory \" + e.message);\n }\n}\n\nfunction checkDirectory(dir) {\n try {\n if (existsSync(dir) === false) {\n console.log(\"filepath doesnt exist\", dir);\n mkdirSync(dir);\n }\n } catch (e) {\n throw e;\n }\n}\n\n// function ensureFileExistence(filePath) {\n// try {\n// var dirname = path.dirname(filePath);\n// if (existsSync(dirname)) {\n// return true;\n// }\n// ensureDirectoryExistence(dirname);\n\n// mkdirSync(dirname);\n// } catch (e) {\n// console.log(e.message);\n// }\n// }\n\n/**\n * getFileContents\n *\n * Will attempt to get the file contents\n * and will generate directory and file if this does not exist.\n *\n * Handles corrupted/empty JSON files by reinitializing with defaults.\n *\n * @param {string} filepath path to the file\n * @returns\n */\nfunction getFileContents(filepath, defaultReturn = []) {\n try {\n // lets first make sure all is there...\n ensureDirectoryExistence(filepath);\n\n // and now lets read the file...\n let fileContents = JSON.stringify(defaultReturn);\n let fileContentsArray = defaultReturn;\n if (existsSync(filepath)) {\n fileContents = readFileSync(filepath, \"utf8\");\n\n try {\n fileContentsArray =\n filepath.substring(filepath.length - 4) === \"json\"\n ? JSON.parse(fileContents)\n : fileContents;\n } catch (parseError) {\n // File exists but is empty or corrupted JSON\n console.warn(\n `[File] Corrupted JSON file: ${filepath}, reinitializing with defaults`\n );\n console.warn(`[File] Parse error: ${parseError.message}`);\n\n // Reinitialize with default content\n fileContentsArray = defaultReturn;\n writeFileSync(filepath, JSON.stringify(defaultReturn, null, 2));\n console.log(`[File] Successfully reinitialized: ${filepath}`);\n }\n } else {\n // we should make the file with default content\n closeSync(openSync(filepath, \"w\"));\n writeFileSync(filepath, JSON.stringify(defaultReturn, null, 2));\n }\n\n return fileContentsArray;\n } catch (e) {\n console.log(e);\n return defaultReturn;\n }\n}\n\nfunction writeToFile(filename, data) {\n try {\n // write the new pages configuration back to the file\n return writeFileSync(filename, data);\n } catch (e) {\n return false;\n }\n}\n\n/**\n *\n * @param {string} directory\n * @returns\n */\nfunction removeFilesFromDirectory(directory, excludeFiles = []) {\n return (\n directory !== \"\" &&\n directory &&\n readdir(directory, (err, files) => {\n if (err) throw err;\n\n for (const file of files) {\n if (!excludeFiles.includes(file)) {\n unlinkSync(path.join(directory, file), (err) => {\n if (err) throw err;\n });\n }\n }\n })\n );\n}\n\nmodule.exports = {\n ensureDirectoryExistence,\n getFileContents,\n writeToFile,\n removeFilesFromDirectory,\n checkDirectory,\n};\n","const { app } = require(\"electron\");\nconst path = require(\"path\");\nconst { writeFileSync } = require(\"fs\");\nconst events = require(\"../events\");\nconst { getFileContents } = require(\"../utils/file\");\n\nconst configFilename = \"workspaces.json\";\nconst appName = \"Dashboard\";\n\nconst workspaceController = {\n /**\n * createWorkspace\n *\n * Use a simple scaffold to create the Page skeleton for the user\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id from Algolia\n * @param {object} page the page configuration file\n */\n /*\n \"id\": \"<page-id-here>\",\n \"package\":\"\",\n \"repository\":\"\",\n \"author\": \"<user-name>\",\n \"version\": \"1\",\n \"displayName\": \"<page-display-name>\",\n \"indexName\": \"<algolia-index-name>\",\n \"date_created\": \"\",\n \"date_edited\": \"\",\n \"administration\": {\n \"context\": false,\n \"searchBox\": true,\n \"query\": false\n },\n \"layout\": {}\n }\n */\n\n /**\n * saveWorkspace\n * Create a workspace from a json configuration object (no template)\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n * @param {object} pageObject the page config object\n */\n saveWorkspaceForApplication: (win, appId, workspaceObject) => {\n try {\n // filename to the pages file (live pages)\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename\n );\n const workspacesArray = getFileContents(filename);\n\n // lets check to see if we already have this one!\n let indexOfExistingItem = null;\n workspacesArray.forEach((element, index) => {\n if (element[\"id\"] === workspaceObject[\"id\"]) {\n indexOfExistingItem = index;\n }\n });\n\n // replace item if we have an id already matching our input object\n if (indexOfExistingItem !== null) {\n // update the existing workspace item\n workspacesArray[indexOfExistingItem] = workspaceObject;\n } else {\n // add the pageObject to the pages file\n workspacesArray.push(workspaceObject);\n }\n\n // write the new pages configuration back to the file\n writeFileSync(filename, JSON.stringify(workspacesArray, null, 2));\n\n console.log(\"[workspaceController] Workspace saved successfully\");\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n workspaces: workspacesArray,\n success: true,\n };\n } catch (e) {\n console.error(\"[workspaceController] Error saving workspace:\", e);\n // Return error object with empty workspaces array\n return {\n error: true,\n message: e.message,\n workspaces: [],\n };\n }\n },\n\n saveMenuItemsForApplication: (win, appId, menuItems) => {\n try {\n // filename to the workspaces file\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename\n );\n const workspacesArray = getFileContents(filename);\n\n // Update menu items for workspaces\n // This assumes menuItems is an object with workspace IDs as keys\n // and updates the menuId property for each workspace\n if (menuItems && typeof menuItems === \"object\") {\n workspacesArray.forEach((workspace, index) => {\n if (menuItems[workspace.id]) {\n workspacesArray[index].menuId = menuItems[workspace.id];\n }\n });\n }\n\n // write the updated workspaces configuration back to the file\n writeFileSync(filename, JSON.stringify(workspacesArray, null, 2));\n\n console.log(\"[workspaceController] Menu items saved successfully\");\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n workspaces: workspacesArray,\n success: true,\n };\n } catch (e) {\n console.error(\"[workspaceController] Error saving menu items:\", e);\n // Return error object with empty workspaces array\n return {\n error: true,\n message: e.message,\n workspaces: [],\n };\n }\n },\n\n /**\n * loadPagesForApplication\n * Load the pages for the application <userdata>/appId/pages.json\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id from Algolia\n */\n deleteWorkspaceForApplication: (win, appId, workspaceId) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename\n );\n const workspacesArray = getFileContents(filename);\n\n const filtered = workspacesArray.filter(\n (workspace) => workspace.id !== workspaceId\n );\n\n writeFileSync(filename, JSON.stringify(filtered, null, 2));\n\n console.log(\n `[workspaceController] Workspace ${workspaceId} deleted successfully`\n );\n\n return {\n workspaces: filtered,\n success: true,\n };\n } catch (e) {\n console.error(\"[workspaceController] Error deleting workspace:\", e);\n return {\n error: true,\n message: e.message,\n workspaces: [],\n };\n }\n },\n\n listWorkspacesForApplication: (win, appId) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename\n );\n\n const workspacesArray = getFileContents(filename);\n console.log(\n `[workspaceController] Loaded ${workspacesArray.length} workspaces for appId: ${appId}`\n );\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n workspaces: workspacesArray,\n };\n } catch (e) {\n console.error(\"[workspaceController] Error listing workspaces:\", e);\n // Return error object with empty workspaces array\n return {\n error: true,\n message: e.message,\n workspaces: [],\n };\n }\n },\n\n listMenuItemsForApplication: (win, appId) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename\n );\n const workspacesArray = getFileContents(filename);\n\n // Extract unique menu items from workspaces\n // Each workspace can have a menuId, we need to build the menu items list\n const menuItemsMap = new Map();\n\n workspacesArray.forEach((workspace) => {\n if (workspace.menuId) {\n if (!menuItemsMap.has(workspace.menuId)) {\n menuItemsMap.set(workspace.menuId, {\n id: workspace.menuId,\n name:\n workspace.name ||\n `Menu Item ${workspace.menuId}`,\n // Add other menu item properties as needed\n });\n }\n }\n });\n\n const menuItemsArray = Array.from(menuItemsMap.values());\n\n // Return the menu items data for ipcMain.handle()\n return {\n menuItems: menuItemsArray,\n };\n } catch (e) {\n console.error(\"[workspaceController] Error listing menu items:\", e);\n // Return error object with empty menu items array\n return {\n error: true,\n message: e.message,\n menuItems: [],\n };\n }\n },\n};\n\nmodule.exports = workspaceController;\n","const { app } = require(\"electron\");\nconst path = require(\"path\");\nconst { writeFileSync } = require(\"fs\");\nconst events = require(\"../events\");\nconst { getFileContents } = require(\"../utils/file\");\n\nconst configFilename = \"themes.json\";\nconst appName = \"Dashboard\";\n\nconst themeController = {\n /**\n * saveTheme\n * Create a new Theme that can be used in the application\n * (can have several themes per application)\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n * @param {object} themeObject the theme object\n */\n saveThemeForApplication: (win, appId, name, obj) => {\n try {\n // filename to the pages file (live pages)\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename\n );\n const data = getFileContents(filename, {});\n\n // Add/update the theme based on the name\n if (name in data === false) {\n data[name] = {};\n }\n\n data[name] = obj;\n\n // write the new pages configuration back to the file\n writeFileSync(filename, JSON.stringify(data, null, 2));\n\n console.log(\"[themeController] Theme saved successfully\");\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n themes: data,\n key: name,\n theme: obj,\n success: true,\n };\n } catch (e) {\n console.error(\"[themeController] Error saving theme:\", e);\n // Return error object\n return {\n error: true,\n message: e.message,\n themes: {},\n };\n }\n },\n\n /**\n * listThemesForApplication\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id from Algolia\n */\n listThemesForApplication: (win, appId) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename\n );\n\n const data = getFileContents(filename, {});\n\n console.log(\n \"[themeController] Loading themes from:\",\n filename,\n \"Found:\",\n Object.keys(data).length,\n \"themes\"\n );\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n themes: data,\n };\n } catch (e) {\n console.error(\"[themeController] Error loading themes:\", e);\n // Return error object with empty themes\n return {\n error: true,\n message: e.message,\n themes: {},\n };\n }\n },\n\n /**\n * deleteThemeForApplication\n * Delete a theme from the application's theme configuration\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n * @param {string} themeKey the key of the theme to delete\n */\n deleteThemeForApplication: (win, appId, themeKey) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename\n );\n const data = getFileContents(filename, {});\n\n if (themeKey in data) {\n delete data[themeKey];\n writeFileSync(filename, JSON.stringify(data, null, 2));\n }\n\n console.log(\n \"[themeController] Theme deleted successfully:\",\n themeKey\n );\n\n return {\n themes: data,\n success: true,\n };\n } catch (e) {\n console.error(\"[themeController] Error deleting theme:\", e);\n return {\n error: true,\n message: e.message,\n themes: {},\n };\n }\n },\n};\n\nmodule.exports = themeController;\n","/**\n * Utils/tranaform\n * Main gial is to transform a file of data into another form (CSV -> Json for example)\n *\n * - XML -> JSON\n * - CSV -> JSON\n */\n\nvar fs = require(\"fs\");\nvar readline = require(\"readline\");\nconst xtreamer = require(\"xtreamer\");\nvar xmlParser = require(\"xml2js\");\nvar JSONStream = require(\"JSONStream\");\nconst stream = require(\"stream\");\nvar csv = require(\"csv-parser\");\nconst path = require(\"path\");\nconst { app } = require(\"electron\");\nconst { ensureDirectoryExistence } = require(\"./file\");\n\nconst TRANSFORM_APP_NAME = \"Dashboard\";\nconst MAX_MAPPING_BODY_SIZE = 10240; // 10KB limit for mapping function body\n\n/**\n * XtreamerClientTransform\n * Custom Transform stream to parse the JSON from the XML to String operation\n */\nclass XtreamerClientTransform extends stream.Transform {\n _transform(value, encoding, callback) {\n this.push(JSON.parse(value));\n callback();\n }\n}\n\nclass Transform {\n constructor() {\n console.log(\"constructor\");\n }\n\n /**\n * readLinesFromFile\n *\n * If this is a json file we should check in and remove the newLines, and then\n * add commas between records potentially...\n * @param {*} win\n * @param {*} filepath\n * @param {*} linesCount\n * @param {*} callbackEvent\n * @returns\n */\n readLinesFromFile = (\n win,\n filepath,\n linesCount = 100,\n callbackEvent = null\n ) => {\n return new Promise((resolve, reject) => {\n try {\n let count = 0;\n let lines = [];\n\n // can we aggregate potentially?\n let lineObject = [];\n\n const readInterface = readline.createInterface({\n input: fs.createReadStream(filepath),\n output: process.stdout,\n console: false,\n });\n\n readInterface.on(\"line\", function (line) {\n if (count < linesCount) {\n //console.log(line);\n lines.push(line);\n count++;\n if (callbackEvent !== null) {\n win.webContents.send(callbackEvent, {\n line,\n });\n }\n } else {\n readInterface.close();\n resolve(lines);\n }\n });\n } catch (e) {\n reject(e);\n }\n });\n };\n\n readJSONFromFile = (\n win,\n file = \"\",\n objectCount = 10,\n callbackEvent = null\n ) => {\n return new Promise((resolve, reject) => {\n try {\n const parser = JSONStream.parse(\"*\");\n const readStream = fs.createReadStream(file).pipe(parser);\n\n let count = 0;\n\n readStream.on(\"data\", (data) => {\n //console.log(data);\n if (callbackEvent !== null) {\n win.webContents.send(callbackEvent, {\n data: JSON.stringify(data),\n });\n }\n if (objectCount !== null && count < objectCount) {\n readStream.destroy();\n resolve(\"complete\");\n }\n count++;\n });\n\n readStream.on(\"error\", (e) => {\n reject(e);\n });\n\n readStream.on(\"end\", (data) => {\n resolve(\"Complete\");\n });\n } catch (e) {\n console.log(\"read json error \", e);\n reject(e);\n }\n });\n };\n\n async parseXMLString(data) {\n let xmlText = data.toString().replace(\"\\ufeff\", \"\");\n return new Promise((resolve, reject) => {\n xmlParser\n .parseStringPromise(xmlText, {\n trim: true,\n compact: true,\n ignoreComment: true,\n ignoreDoctype: true,\n })\n .then((data) => {\n // resolve with the comma\n resolve(JSON.stringify(data) + \",\");\n })\n .catch((e) => reject(e));\n });\n }\n\n parseXMLStream = (filepath, outpath, start) => {\n return new Promise((resolve, reject) => {\n try {\n const xmlFileReadStream = fs.createReadStream(filepath);\n\n xmlFileReadStream.on(\"end\", () => {\n writeStream.write(\"\\n]\");\n resolve(\"Read End\");\n });\n\n xmlFileReadStream.on(\"finished\", () => {\n resolve(\"Read Finish\");\n });\n\n const writeStream = fs.createWriteStream(outpath);\n writeStream.write(\"[\\n\");\n\n const options = {\n headers: { Accept: \"application/xml\" },\n resolveWithFullResponse: true,\n json: false,\n simple: false,\n max_xml_size: 50000000, // 10000000\n };\n\n const xtreamerTransform = xtreamer(\n start,\n {\n transformer: this.parseXMLString, // returns Promise\n max_xml_size: 50000000,\n },\n options\n ).on(\"error\", (e) => {\n console.log(e);\n reject(e);\n });\n\n xmlFileReadStream\n .pipe(xtreamerTransform)\n .pipe(new XtreamerClientTransform())\n .pipe(writeStream)\n .on(\"end\", () => {\n console.log(\"ended\");\n })\n .on(\"finish\", () => {\n console.log(\"finished pipe\");\n });\n } catch (e) {\n console.log(e);\n reject(e);\n }\n });\n };\n\n parseCSVStream = (\n filepath,\n outpath,\n delimiter = \",\",\n objectIdKey = null,\n headers = null, // optional array of headings to grab\n win = null,\n callbackEvent = null,\n limit = null\n ) => {\n return new Promise((resolve, reject) => {\n try {\n const readStream = fs\n .createReadStream(filepath)\n .pipe(csv({ separator: delimiter }));\n const writeStream = fs.createWriteStream(outpath);\n\n let canParse = true;\n\n // separators for JSON\n let sep = \"\";\n let count = 0;\n writeStream.write(\"[\\n\");\n\n readStream.on(\"data\", (item) => {\n if (count > 0) {\n sep = \",\\n\";\n }\n // if we have specified a limit...\n if (limit !== null && limit <= count) {\n canParse = false;\n writeStream.write(\"]\");\n readStream.destroy();\n resolve(\"Complete\");\n }\n if (canParse === true) {\n item[\"objectID\"] = item[objectIdKey];\n writeStream.write(sep + JSON.stringify(item));\n count++;\n\n if (win !== null) {\n //console.log(\"have win\", count, callbackEvent);\n win.webContents.send(callbackEvent, {\n count,\n });\n }\n }\n });\n\n readStream.on(\"end\", () => {\n writeStream.write(\"]\");\n readStream.destroy();\n resolve(\"Complete\");\n });\n } catch (e) {\n reject(e);\n }\n });\n };\n\n /**\n * transformFileToFile\n * We want to convert a format from a file into a different format\n * based on the mapper we have provided\n *\n * @param {*} win\n * @param {*} filepath\n * @param {*} outFilepath\n * @param {*} mapping\n */\n transformFileToFile = (\n win,\n filepath,\n outFilepath,\n mappingFunctionBody,\n args = [\"refObj\", \"index\"],\n callbackEvent = null\n ) => {\n return new Promise((resolve, reject) => {\n // Validate mappingFunctionBody is a non-empty string\n if (\n typeof mappingFunctionBody !== \"string\" ||\n !mappingFunctionBody.trim()\n ) {\n return reject(\n new Error(\"mappingFunctionBody must be a non-empty string\")\n );\n }\n\n // Enforce size limit on mapping function body\n if (mappingFunctionBody.length > MAX_MAPPING_BODY_SIZE) {\n return reject(\n new Error(\n \"mappingFunctionBody exceeds maximum size of \" +\n MAX_MAPPING_BODY_SIZE +\n \" bytes\"\n )\n );\n }\n\n // Validate file paths are within app data directory\n const appDataDir = path.join(\n app.getPath(\"userData\"),\n TRANSFORM_APP_NAME\n );\n const resolvedFilepath = path.resolve(filepath);\n const resolvedOutFilepath = path.resolve(outFilepath);\n\n if (!resolvedFilepath.startsWith(appDataDir + path.sep)) {\n return reject(\n new Error(\n \"Input file path must be within the application data directory\"\n )\n );\n }\n if (!resolvedOutFilepath.startsWith(appDataDir + path.sep)) {\n return reject(\n new Error(\n \"Output file path must be within the application data directory\"\n )\n );\n }\n\n // JSON parser\n var parser = JSONStream.parse(\"*\");\n\n if (fs.existsSync(resolvedFilepath)) {\n console.log(\"file exists \", resolvedFilepath);\n // create the readStream to parse the large file (json)\n var readStream = fs\n .createReadStream(resolvedFilepath)\n .pipe(parser);\n\n ensureDirectoryExistence(resolvedOutFilepath);\n\n var writeStream = fs.createWriteStream(resolvedOutFilepath);\n\n let sep = \"\";\n let count = 0;\n\n // create our mapping function\n const fn = new Function(args, mappingFunctionBody);\n\n // begin the write stream\n writeStream.write(\"[\\n\");\n\n readStream.on(\"data\", (data) => {\n try {\n //console.log(\"in stream\", count, data);\n // data in this case is the JSON object...\n if (count > 0) {\n sep = \",\\n\";\n }\n\n if (data) {\n // transform the data here...\n const newValue = fn(data, count);\n\n writeStream.write(sep + JSON.stringify(newValue));\n\n if (callbackEvent !== null && win !== null) {\n win.webContents.send(callbackEvent, {\n count,\n });\n }\n\n // increment the counter\n count++;\n }\n } catch (e) {\n console.log(e.message);\n }\n });\n\n readStream.on(\"end\", (data) => {\n writeStream.write(\"\\n]\");\n writeStream.close();\n resolve(\"Complete: wrote \" + count + \" objects\");\n });\n\n readStream.on(\"error\", (err) => {\n console.log(\"read stream error transform \", err.message);\n reject(err);\n });\n } else {\n reject(new Error(\"File doesnt exist\"));\n }\n });\n };\n\n /**\n * sanitizeLine (line of file)\n * @param {String} line JSON data that we wish to sanitize\n * @returns String the sanitized String\n */\n sanitizeLine = (line) => {\n try {\n let newLine = line;\n\n if (line.slice(-1) === \",\") {\n newLine = newLine.slice(0, -1);\n }\n\n if (line.slice(0, 1) === \"[\") {\n newLine = newLine.slice(1);\n }\n\n return newLine;\n } catch (e) {\n return line;\n }\n };\n}\n\nmodule.exports = Transform;\n","/*\n\n+-----------------------------------------------------------------+\n| Created by Chirag Mehta - http://chir.ag/projects/ntc |\n|-----------------------------------------------------------------|\n| ntc js (Name that Color JavaScript) |\n+-----------------------------------------------------------------+\n\nAll the functions, code, lists etc. have been written specifically\nfor the Name that Color JavaScript by Chirag Mehta unless otherwise\nspecified.\n\nThis script is released under the: Creative Commons License:\nAttribution 2.5 http://creativecommons.org/licenses/by/2.5/\n\nSample Usage:\n\n <script type=\"text/javascript\" src=\"ntc.js\"></script>\n\n <script type=\"text/javascript\">\n\n var n_match = ntc.name(\"#6195ED\");\n n_rgb = n_match[0]; // This is the RGB value of the closest matching color\n n_name = n_match[1]; // This is the text string for the name of the match\n n_exactmatch = n_match[2]; // True if exact color match, False if close-match\n\n alert(n_match);\n\n </script>\n\n*/\n\nclass ntc {\n constructor() {\n var color, rgb, hsl;\n for (var i = 0; i < this.names.length; i++) {\n color = \"#\" + this.names[i][0];\n rgb = this.rgb(color);\n hsl = this.hsl(color);\n this.names[i].push(rgb[0], rgb[1], rgb[2], hsl[0], hsl[1], hsl[2]);\n }\n }\n\n name = function (color) {\n color = color.toUpperCase();\n if (color.length < 3 || color.length > 7)\n return [\"#000000\", \"Invalid Color: \" + color, false];\n if (color.length % 3 == 0) color = \"#\" + color;\n if (color.length == 4)\n color =\n \"#\" +\n color.substr(1, 1) +\n color.substr(1, 1) +\n color.substr(2, 1) +\n color.substr(2, 1) +\n color.substr(3, 1) +\n color.substr(3, 1);\n\n var rgb = this.rgb(color);\n var r = rgb[0],\n g = rgb[1],\n b = rgb[2];\n var hsl = this.hsl(color);\n var h = hsl[0],\n s = hsl[1],\n l = hsl[2];\n var ndf1 = 0;\n var ndf2 = 0;\n var ndf = 0;\n var cl = -1,\n df = -1;\n\n for (var i = 0; i < this.names.length; i++) {\n if (color == \"#\" + this.names[i][0])\n return [\"#\" + this.names[i][0], this.names[i][1], true];\n\n ndf1 =\n Math.pow(r - this.names[i][2], 2) +\n Math.pow(g - this.names[i][3], 2) +\n Math.pow(b - this.names[i][4], 2);\n ndf2 =\n Math.pow(h - this.names[i][5], 2) +\n Math.pow(s - this.names[i][6], 2) +\n Math.pow(l - this.names[i][7], 2);\n ndf = ndf1 + ndf2 * 2;\n if (df < 0 || df > ndf) {\n df = ndf;\n cl = i;\n }\n }\n\n return cl < 0\n ? [\"#000000\", \"Invalid Color: \" + color, false]\n : [\"#\" + this.names[cl][0], this.names[cl][1], false];\n };\n\n // adopted from: Farbtastic 1.2\n // http://acko.net/dev/farbtastic\n hsl = function (color) {\n var rgb = [\n parseInt(\"0x\" + color.substring(1, 3)) / 255,\n parseInt(\"0x\" + color.substring(3, 5)) / 255,\n parseInt(\"0x\" + color.substring(5, 7)) / 255,\n ];\n var min, max, delta, h, s, l;\n var r = rgb[0],\n g = rgb[1],\n b = rgb[2];\n\n min = Math.min(r, Math.min(g, b));\n max = Math.max(r, Math.max(g, b));\n delta = max - min;\n l = (min + max) / 2;\n\n s = 0;\n if (l > 0 && l < 1) s = delta / (l < 0.5 ? 2 * l : 2 - 2 * l);\n\n h = 0;\n if (delta > 0) {\n if (max == r && max != g) h += (g - b) / delta;\n if (max == g && max != b) h += 2 + (b - r) / delta;\n if (max == b && max != r) h += 4 + (r - g) / delta;\n h /= 6;\n }\n return [parseInt(h * 255), parseInt(s * 255), parseInt(l * 255)];\n };\n\n // adopted from: Farbtastic 1.2\n // http://acko.net/dev/farbtastic\n rgb = function (color) {\n return [\n parseInt(\"0x\" + color.substring(1, 3)),\n parseInt(\"0x\" + color.substring(3, 5)),\n parseInt(\"0x\" + color.substring(5, 7)),\n ];\n };\n\n names = [\n [\"000000\", \"Black\"],\n [\"000080\", \"Navy Blue\"],\n [\"0000C8\", \"Dark Blue\"],\n [\"0000FF\", \"Blue\"],\n [\"000741\", \"Stratos\"],\n [\"001B1C\", \"Swamp\"],\n [\"002387\", \"Resolution Blue\"],\n [\"002900\", \"Deep Fir\"],\n [\"002E20\", \"Burnham\"],\n [\"002FA7\", \"International Klein Blue\"],\n [\"003153\", \"Prussian Blue\"],\n [\"003366\", \"Midnight Blue\"],\n [\"003399\", \"Smalt\"],\n [\"003532\", \"Deep Teal\"],\n [\"003E40\", \"Cyprus\"],\n [\"004620\", \"Kaitoke Green\"],\n [\"0047AB\", \"Cobalt\"],\n [\"004816\", \"Crusoe\"],\n [\"004950\", \"Sherpa Blue\"],\n [\"0056A7\", \"Endeavour\"],\n [\"00581A\", \"Camarone\"],\n [\"0066CC\", \"Science Blue\"],\n [\"0066FF\", \"Blue Ribbon\"],\n [\"00755E\", \"Tropical Rain Forest\"],\n [\"0076A3\", \"Allports\"],\n [\"007BA7\", \"Deep Cerulean\"],\n [\"007EC7\", \"Lochmara\"],\n [\"007FFF\", \"Azure Radiance\"],\n [\"008080\", \"Teal\"],\n [\"0095B6\", \"Bondi Blue\"],\n [\"009DC4\", \"Pacific Blue\"],\n [\"00A693\", \"Persian Green\"],\n [\"00A86B\", \"Jade\"],\n [\"00CC99\", \"Caribbean Green\"],\n [\"00CCCC\", \"Robin's Egg Blue\"],\n [\"00FF00\", \"Green\"],\n [\"00FF7F\", \"Spring Green\"],\n [\"00FFFF\", \"Cyan / Aqua\"],\n [\"010D1A\", \"Blue Charcoal\"],\n [\"011635\", \"Midnight\"],\n [\"011D13\", \"Holly\"],\n [\"012731\", \"Daintree\"],\n [\"01361C\", \"Cardin Green\"],\n [\"01371A\", \"County Green\"],\n [\"013E62\", \"Astronaut Blue\"],\n [\"013F6A\", \"Regal Blue\"],\n [\"014B43\", \"Aqua Deep\"],\n [\"015E85\", \"Orient\"],\n [\"016162\", \"Blue Stone\"],\n [\"016D39\", \"Fun Green\"],\n [\"01796F\", \"Pine Green\"],\n [\"017987\", \"Blue Lagoon\"],\n [\"01826B\", \"Deep Sea\"],\n [\"01A368\", \"Green Haze\"],\n [\"022D15\", \"English Holly\"],\n [\"02402C\", \"Sherwood Green\"],\n [\"02478E\", \"Congress Blue\"],\n [\"024E46\", \"Evening Sea\"],\n [\"026395\", \"Bahama Blue\"],\n [\"02866F\", \"Observatory\"],\n [\"02A4D3\", \"Cerulean\"],\n [\"03163C\", \"Tangaroa\"],\n [\"032B52\", \"Green Vogue\"],\n [\"036A6E\", \"Mosque\"],\n [\"041004\", \"Midnight Moss\"],\n [\"041322\", \"Black Pearl\"],\n [\"042E4C\", \"Blue Whale\"],\n [\"044022\", \"Zuccini\"],\n [\"044259\", \"Teal Blue\"],\n [\"051040\", \"Deep Cove\"],\n [\"051657\", \"Gulf Blue\"],\n [\"055989\", \"Venice Blue\"],\n [\"056F57\", \"Watercourse\"],\n [\"062A78\", \"Catalina Blue\"],\n [\"063537\", \"Tiber\"],\n [\"069B81\", \"Gossamer\"],\n [\"06A189\", \"Niagara\"],\n [\"073A50\", \"Tarawera\"],\n [\"080110\", \"Jaguar\"],\n [\"081910\", \"Black Bean\"],\n [\"082567\", \"Deep Sapphire\"],\n [\"088370\", \"Elf Green\"],\n [\"08E8DE\", \"Bright Turquoise\"],\n [\"092256\", \"Downriver\"],\n [\"09230F\", \"Palm Green\"],\n [\"09255D\", \"Madison\"],\n [\"093624\", \"Bottle Green\"],\n [\"095859\", \"Deep Sea Green\"],\n [\"097F4B\", \"Salem\"],\n [\"0A001C\", \"Black Russian\"],\n [\"0A480D\", \"Dark Fern\"],\n [\"0A6906\", \"Japanese Laurel\"],\n [\"0A6F75\", \"Atoll\"],\n [\"0B0B0B\", \"Cod Gray\"],\n [\"0B0F08\", \"Marshland\"],\n [\"0B1107\", \"Gordons Green\"],\n [\"0B1304\", \"Black Forest\"],\n [\"0B6207\", \"San Felix\"],\n [\"0BDA51\", \"Malachite\"],\n [\"0C0B1D\", \"Ebony\"],\n [\"0C0D0F\", \"Woodsmoke\"],\n [\"0C1911\", \"Racing Green\"],\n [\"0C7A79\", \"Surfie Green\"],\n [\"0C8990\", \"Blue Chill\"],\n [\"0D0332\", \"Black Rock\"],\n [\"0D1117\", \"Bunker\"],\n [\"0D1C19\", \"Aztec\"],\n [\"0D2E1C\", \"Bush\"],\n [\"0E0E18\", \"Cinder\"],\n [\"0E2A30\", \"Firefly\"],\n [\"0F2D9E\", \"Torea Bay\"],\n [\"10121D\", \"Vulcan\"],\n [\"101405\", \"Green Waterloo\"],\n [\"105852\", \"Eden\"],\n [\"110C6C\", \"Arapawa\"],\n [\"120A8F\", \"Ultramarine\"],\n [\"123447\", \"Elephant\"],\n [\"126B40\", \"Jewel\"],\n [\"130000\", \"Diesel\"],\n [\"130A06\", \"Asphalt\"],\n [\"13264D\", \"Blue Zodiac\"],\n [\"134F19\", \"Parsley\"],\n [\"140600\", \"Nero\"],\n [\"1450AA\", \"Tory Blue\"],\n [\"151F4C\", \"Bunting\"],\n [\"1560BD\", \"Denim\"],\n [\"15736B\", \"Genoa\"],\n [\"161928\", \"Mirage\"],\n [\"161D10\", \"Hunter Green\"],\n [\"162A40\", \"Big Stone\"],\n [\"163222\", \"Celtic\"],\n [\"16322C\", \"Timber Green\"],\n [\"163531\", \"Gable Green\"],\n [\"171F04\", \"Pine Tree\"],\n [\"175579\", \"Chathams Blue\"],\n [\"182D09\", \"Deep Forest Green\"],\n [\"18587A\", \"Blumine\"],\n [\"19330E\", \"Palm Leaf\"],\n [\"193751\", \"Nile Blue\"],\n [\"1959A8\", \"Fun Blue\"],\n [\"1A1A68\", \"Lucky Point\"],\n [\"1AB385\", \"Mountain Meadow\"],\n [\"1B0245\", \"Tolopea\"],\n [\"1B1035\", \"Haiti\"],\n [\"1B127B\", \"Deep Koamaru\"],\n [\"1B1404\", \"Acadia\"],\n [\"1B2F11\", \"Seaweed\"],\n [\"1B3162\", \"Biscay\"],\n [\"1B659D\", \"Matisse\"],\n [\"1C1208\", \"Crowshead\"],\n [\"1C1E13\", \"Rangoon Green\"],\n [\"1C39BB\", \"Persian Blue\"],\n [\"1C402E\", \"Everglade\"],\n [\"1C7C7D\", \"Elm\"],\n [\"1D6142\", \"Green Pea\"],\n [\"1E0F04\", \"Creole\"],\n [\"1E1609\", \"Karaka\"],\n [\"1E1708\", \"El Paso\"],\n [\"1E385B\", \"Cello\"],\n [\"1E433C\", \"Te Papa Green\"],\n [\"1E90FF\", \"Dodger Blue\"],\n [\"1E9AB0\", \"Eastern Blue\"],\n [\"1F120F\", \"Night Rider\"],\n [\"1FC2C2\", \"Java\"],\n [\"20208D\", \"Jacksons Purple\"],\n [\"202E54\", \"Cloud Burst\"],\n [\"204852\", \"Blue Dianne\"],\n [\"211A0E\", \"Eternity\"],\n [\"220878\", \"Deep Blue\"],\n [\"228B22\", \"Forest Green\"],\n [\"233418\", \"Mallard\"],\n [\"240A40\", \"Violet\"],\n [\"240C02\", \"Kilamanjaro\"],\n [\"242A1D\", \"Log Cabin\"],\n [\"242E16\", \"Black Olive\"],\n [\"24500F\", \"Green House\"],\n [\"251607\", \"Graphite\"],\n [\"251706\", \"Cannon Black\"],\n [\"251F4F\", \"Port Gore\"],\n [\"25272C\", \"Shark\"],\n [\"25311C\", \"Green Kelp\"],\n [\"2596D1\", \"Curious Blue\"],\n [\"260368\", \"Paua\"],\n [\"26056A\", \"Paris M\"],\n [\"261105\", \"Wood Bark\"],\n [\"261414\", \"Gondola\"],\n [\"262335\", \"Steel Gray\"],\n [\"26283B\", \"Ebony Clay\"],\n [\"273A81\", \"Bay of Many\"],\n [\"27504B\", \"Plantation\"],\n [\"278A5B\", \"Eucalyptus\"],\n [\"281E15\", \"Oil\"],\n [\"283A77\", \"Astronaut\"],\n [\"286ACD\", \"Mariner\"],\n [\"290C5E\", \"Violent Violet\"],\n [\"292130\", \"Bastille\"],\n [\"292319\", \"Zeus\"],\n [\"292937\", \"Charade\"],\n [\"297B9A\", \"Jelly Bean\"],\n [\"29AB87\", \"Jungle Green\"],\n [\"2A0359\", \"Cherry Pie\"],\n [\"2A140E\", \"Coffee Bean\"],\n [\"2A2630\", \"Baltic Sea\"],\n [\"2A380B\", \"Turtle Green\"],\n [\"2A52BE\", \"Cerulean Blue\"],\n [\"2B0202\", \"Sepia Black\"],\n [\"2B194F\", \"Valhalla\"],\n [\"2B3228\", \"Heavy Metal\"],\n [\"2C0E8C\", \"Blue Gem\"],\n [\"2C1632\", \"Revolver\"],\n [\"2C2133\", \"Bleached Cedar\"],\n [\"2C8C84\", \"Lochinvar\"],\n [\"2D2510\", \"Mikado\"],\n [\"2D383A\", \"Outer Space\"],\n [\"2D569B\", \"St Tropaz\"],\n [\"2E0329\", \"Jacaranda\"],\n [\"2E1905\", \"Jacko Bean\"],\n [\"2E3222\", \"Rangitoto\"],\n [\"2E3F62\", \"Rhino\"],\n [\"2E8B57\", \"Sea Green\"],\n [\"2EBFD4\", \"Scooter\"],\n [\"2F270E\", \"Onion\"],\n [\"2F3CB3\", \"Governor Bay\"],\n [\"2F519E\", \"Sapphire\"],\n [\"2F5A57\", \"Spectra\"],\n [\"2F6168\", \"Casal\"],\n [\"300529\", \"Melanzane\"],\n [\"301F1E\", \"Cocoa Brown\"],\n [\"302A0F\", \"Woodrush\"],\n [\"304B6A\", \"San Juan\"],\n [\"30D5C8\", \"Turquoise\"],\n [\"311C17\", \"Eclipse\"],\n [\"314459\", \"Pickled Bluewood\"],\n [\"315BA1\", \"Azure\"],\n [\"31728D\", \"Calypso\"],\n [\"317D82\", \"Paradiso\"],\n [\"32127A\", \"Persian Indigo\"],\n [\"32293A\", \"Blackcurrant\"],\n [\"323232\", \"Mine Shaft\"],\n [\"325D52\", \"Stromboli\"],\n [\"327C14\", \"Bilbao\"],\n [\"327DA0\", \"Astral\"],\n [\"33036B\", \"Christalle\"],\n [\"33292F\", \"Thunder\"],\n [\"33CC99\", \"Shamrock\"],\n [\"341515\", \"Tamarind\"],\n [\"350036\", \"Mardi Gras\"],\n [\"350E42\", \"Valentino\"],\n [\"350E57\", \"Jagger\"],\n [\"353542\", \"Tuna\"],\n [\"354E8C\", \"Chambray\"],\n [\"363050\", \"Martinique\"],\n [\"363534\", \"Tuatara\"],\n [\"363C0D\", \"Waiouru\"],\n [\"36747D\", \"Ming\"],\n [\"368716\", \"La Palma\"],\n [\"370202\", \"Chocolate\"],\n [\"371D09\", \"Clinker\"],\n [\"37290E\", \"Brown Tumbleweed\"],\n [\"373021\", \"Birch\"],\n [\"377475\", \"Oracle\"],\n [\"380474\", \"Blue Diamond\"],\n [\"381A51\", \"Grape\"],\n [\"383533\", \"Dune\"],\n [\"384555\", \"Oxford Blue\"],\n [\"384910\", \"Clover\"],\n [\"394851\", \"Limed Spruce\"],\n [\"396413\", \"Dell\"],\n [\"3A0020\", \"Toledo\"],\n [\"3A2010\", \"Sambuca\"],\n [\"3A2A6A\", \"Jacarta\"],\n [\"3A686C\", \"William\"],\n [\"3A6A47\", \"Killarney\"],\n [\"3AB09E\", \"Keppel\"],\n [\"3B000B\", \"Temptress\"],\n [\"3B0910\", \"Aubergine\"],\n [\"3B1F1F\", \"Jon\"],\n [\"3B2820\", \"Treehouse\"],\n [\"3B7A57\", \"Amazon\"],\n [\"3B91B4\", \"Boston Blue\"],\n [\"3C0878\", \"Windsor\"],\n [\"3C1206\", \"Rebel\"],\n [\"3C1F76\", \"Meteorite\"],\n [\"3C2005\", \"Dark Ebony\"],\n [\"3C3910\", \"Camouflage\"],\n [\"3C4151\", \"Bright Gray\"],\n [\"3C4443\", \"Cape Cod\"],\n [\"3C493A\", \"Lunar Green\"],\n [\"3D0C02\", \"Bean \"],\n [\"3D2B1F\", \"Bistre\"],\n [\"3D7D52\", \"Goblin\"],\n [\"3E0480\", \"Kingfisher Daisy\"],\n [\"3E1C14\", \"Cedar\"],\n [\"3E2B23\", \"English Walnut\"],\n [\"3E2C1C\", \"Black Marlin\"],\n [\"3E3A44\", \"Ship Gray\"],\n [\"3EABBF\", \"Pelorous\"],\n [\"3F2109\", \"Bronze\"],\n [\"3F2500\", \"Cola\"],\n [\"3F3002\", \"Madras\"],\n [\"3F307F\", \"Minsk\"],\n [\"3F4C3A\", \"Cabbage Pont\"],\n [\"3F583B\", \"Tom Thumb\"],\n [\"3F5D53\", \"Mineral Green\"],\n [\"3FC1AA\", \"Puerto Rico\"],\n [\"3FFF00\", \"Harlequin\"],\n [\"401801\", \"Brown Pod\"],\n [\"40291D\", \"Cork\"],\n [\"403B38\", \"Masala\"],\n [\"403D19\", \"Thatch Green\"],\n [\"405169\", \"Fiord\"],\n [\"40826D\", \"Viridian\"],\n [\"40A860\", \"Chateau Green\"],\n [\"410056\", \"Ripe Plum\"],\n [\"411F10\", \"Paco\"],\n [\"412010\", \"Deep Oak\"],\n [\"413C37\", \"Merlin\"],\n [\"414257\", \"Gun Powder\"],\n [\"414C7D\", \"East Bay\"],\n [\"4169E1\", \"Royal Blue\"],\n [\"41AA78\", \"Ocean Green\"],\n [\"420303\", \"Burnt Maroon\"],\n [\"423921\", \"Lisbon Brown\"],\n [\"427977\", \"Faded Jade\"],\n [\"431560\", \"Scarlet Gum\"],\n [\"433120\", \"Iroko\"],\n [\"433E37\", \"Armadillo\"],\n [\"434C59\", \"River Bed\"],\n [\"436A0D\", \"Green Leaf\"],\n [\"44012D\", \"Barossa\"],\n [\"441D00\", \"Morocco Brown\"],\n [\"444954\", \"Mako\"],\n [\"454936\", \"Kelp\"],\n [\"456CAC\", \"San Marino\"],\n [\"45B1E8\", \"Picton Blue\"],\n [\"460B41\", \"Loulou\"],\n [\"462425\", \"Crater Brown\"],\n [\"465945\", \"Gray Asparagus\"],\n [\"4682B4\", \"Steel Blue\"],\n [\"480404\", \"Rustic Red\"],\n [\"480607\", \"Bulgarian Rose\"],\n [\"480656\", \"Clairvoyant\"],\n [\"481C1C\", \"Cocoa Bean\"],\n [\"483131\", \"Woody Brown\"],\n [\"483C32\", \"Taupe\"],\n [\"49170C\", \"Van Cleef\"],\n [\"492615\", \"Brown Derby\"],\n [\"49371B\", \"Metallic Bronze\"],\n [\"495400\", \"Verdun Green\"],\n [\"496679\", \"Blue Bayoux\"],\n [\"497183\", \"Bismark\"],\n [\"4A2A04\", \"Bracken\"],\n [\"4A3004\", \"Deep Bronze\"],\n [\"4A3C30\", \"Mondo\"],\n [\"4A4244\", \"Tundora\"],\n [\"4A444B\", \"Gravel\"],\n [\"4A4E5A\", \"Trout\"],\n [\"4B0082\", \"Pigment Indigo\"],\n [\"4B5D52\", \"Nandor\"],\n [\"4C3024\", \"Saddle\"],\n [\"4C4F56\", \"Abbey\"],\n [\"4D0135\", \"Blackberry\"],\n [\"4D0A18\", \"Cab Sav\"],\n [\"4D1E01\", \"Indian Tan\"],\n [\"4D282D\", \"Cowboy\"],\n [\"4D282E\", \"Livid Brown\"],\n [\"4D3833\", \"Rock\"],\n [\"4D3D14\", \"Punga\"],\n [\"4D400F\", \"Bronzetone\"],\n [\"4D5328\", \"Woodland\"],\n [\"4E0606\", \"Mahogany\"],\n [\"4E2A5A\", \"Bossanova\"],\n [\"4E3B41\", \"Matterhorn\"],\n [\"4E420C\", \"Bronze Olive\"],\n [\"4E4562\", \"Mulled Wine\"],\n [\"4E6649\", \"Axolotl\"],\n [\"4E7F9E\", \"Wedgewood\"],\n [\"4EABD1\", \"Shakespeare\"],\n [\"4F1C70\", \"Honey Flower\"],\n [\"4F2398\", \"Daisy Bush\"],\n [\"4F69C6\", \"Indigo\"],\n [\"4F7942\", \"Fern Green\"],\n [\"4F9D5D\", \"Fruit Salad\"],\n [\"4FA83D\", \"Apple\"],\n [\"504351\", \"Mortar\"],\n [\"507096\", \"Kashmir Blue\"],\n [\"507672\", \"Cutty Sark\"],\n [\"50C878\", \"Emerald\"],\n [\"514649\", \"Emperor\"],\n [\"516E3D\", \"Chalet Green\"],\n [\"517C66\", \"Como\"],\n [\"51808F\", \"Smalt Blue\"],\n [\"52001F\", \"Castro\"],\n [\"520C17\", \"Maroon Oak\"],\n [\"523C94\", \"Gigas\"],\n [\"533455\", \"Voodoo\"],\n [\"534491\", \"Victoria\"],\n [\"53824B\", \"Hippie Green\"],\n [\"541012\", \"Heath\"],\n [\"544333\", \"Judge Gray\"],\n [\"54534D\", \"Fuscous Gray\"],\n [\"549019\", \"Vida Loca\"],\n [\"55280C\", \"Cioccolato\"],\n [\"555B10\", \"Saratoga\"],\n [\"556D56\", \"Finlandia\"],\n [\"5590D9\", \"Havelock Blue\"],\n [\"56B4BE\", \"Fountain Blue\"],\n [\"578363\", \"Spring Leaves\"],\n [\"583401\", \"Saddle Brown\"],\n [\"585562\", \"Scarpa Flow\"],\n [\"587156\", \"Cactus\"],\n [\"589AAF\", \"Hippie Blue\"],\n [\"591D35\", \"Wine Berry\"],\n [\"592804\", \"Brown Bramble\"],\n [\"593737\", \"Congo Brown\"],\n [\"594433\", \"Millbrook\"],\n [\"5A6E9C\", \"Waikawa Gray\"],\n [\"5A87A0\", \"Horizon\"],\n [\"5B3013\", \"Jambalaya\"],\n [\"5C0120\", \"Bordeaux\"],\n [\"5C0536\", \"Mulberry Wood\"],\n [\"5C2E01\", \"Carnaby Tan\"],\n [\"5C5D75\", \"Comet\"],\n [\"5D1E0F\", \"Redwood\"],\n [\"5D4C51\", \"Don Juan\"],\n [\"5D5C58\", \"Chicago\"],\n [\"5D5E37\", \"Verdigris\"],\n [\"5D7747\", \"Dingley\"],\n [\"5DA19F\", \"Breaker Bay\"],\n [\"5E483E\", \"Kabul\"],\n [\"5E5D3B\", \"Hemlock\"],\n [\"5F3D26\", \"Irish Coffee\"],\n [\"5F5F6E\", \"Mid Gray\"],\n [\"5F6672\", \"Shuttle Gray\"],\n [\"5FA777\", \"Aqua Forest\"],\n [\"5FB3AC\", \"Tradewind\"],\n [\"604913\", \"Horses Neck\"],\n [\"605B73\", \"Smoky\"],\n [\"606E68\", \"Corduroy\"],\n [\"6093D1\", \"Danube\"],\n [\"612718\", \"Espresso\"],\n [\"614051\", \"Eggplant\"],\n [\"615D30\", \"Costa Del Sol\"],\n [\"61845F\", \"Glade Green\"],\n [\"622F30\", \"Buccaneer\"],\n [\"623F2D\", \"Quincy\"],\n [\"624E9A\", \"Butterfly Bush\"],\n [\"625119\", \"West Coast\"],\n [\"626649\", \"Finch\"],\n [\"639A8F\", \"Patina\"],\n [\"63B76C\", \"Fern\"],\n [\"6456B7\", \"Blue Violet\"],\n [\"646077\", \"Dolphin\"],\n [\"646463\", \"Storm Dust\"],\n [\"646A54\", \"Siam\"],\n [\"646E75\", \"Nevada\"],\n [\"6495ED\", \"Cornflower Blue\"],\n [\"64CCDB\", \"Viking\"],\n [\"65000B\", \"Rosewood\"],\n [\"651A14\", \"Cherrywood\"],\n [\"652DC1\", \"Purple Heart\"],\n [\"657220\", \"Fern Frond\"],\n [\"65745D\", \"Willow Grove\"],\n [\"65869F\", \"Hoki\"],\n [\"660045\", \"Pompadour\"],\n [\"660099\", \"Purple\"],\n [\"66023C\", \"Tyrian Purple\"],\n [\"661010\", \"Dark Tan\"],\n [\"66B58F\", \"Silver Tree\"],\n [\"66FF00\", \"Bright Green\"],\n [\"66FF66\", \"Screamin' Green\"],\n [\"67032D\", \"Black Rose\"],\n [\"675FA6\", \"Scampi\"],\n [\"676662\", \"Ironside Gray\"],\n [\"678975\", \"Viridian Green\"],\n [\"67A712\", \"Christi\"],\n [\"683600\", \"Nutmeg Wood Finish\"],\n [\"685558\", \"Zambezi\"],\n [\"685E6E\", \"Salt Box\"],\n [\"692545\", \"Tawny Port\"],\n [\"692D54\", \"Finn\"],\n [\"695F62\", \"Scorpion\"],\n [\"697E9A\", \"Lynch\"],\n [\"6A442E\", \"Spice\"],\n [\"6A5D1B\", \"Himalaya\"],\n [\"6A6051\", \"Soya Bean\"],\n [\"6B2A14\", \"Hairy Heath\"],\n [\"6B3FA0\", \"Royal Purple\"],\n [\"6B4E31\", \"Shingle Fawn\"],\n [\"6B5755\", \"Dorado\"],\n [\"6B8BA2\", \"Bermuda Gray\"],\n [\"6B8E23\", \"Olive Drab\"],\n [\"6C3082\", \"Eminence\"],\n [\"6CDAE7\", \"Turquoise Blue\"],\n [\"6D0101\", \"Lonestar\"],\n [\"6D5E54\", \"Pine Cone\"],\n [\"6D6C6C\", \"Dove Gray\"],\n [\"6D9292\", \"Juniper\"],\n [\"6D92A1\", \"Gothic\"],\n [\"6E0902\", \"Red Oxide\"],\n [\"6E1D14\", \"Moccaccino\"],\n [\"6E4826\", \"Pickled Bean\"],\n [\"6E4B26\", \"Dallas\"],\n [\"6E6D57\", \"Kokoda\"],\n [\"6E7783\", \"Pale Sky\"],\n [\"6F440C\", \"Cafe Royale\"],\n [\"6F6A61\", \"Flint\"],\n [\"6F8E63\", \"Highland\"],\n [\"6F9D02\", \"Limeade\"],\n [\"6FD0C5\", \"Downy\"],\n [\"701C1C\", \"Persian Plum\"],\n [\"704214\", \"Sepia\"],\n [\"704A07\", \"Antique Bronze\"],\n [\"704F50\", \"Ferra\"],\n [\"706555\", \"Coffee\"],\n [\"708090\", \"Slate Gray\"],\n [\"711A00\", \"Cedar Wood Finish\"],\n [\"71291D\", \"Metallic Copper\"],\n [\"714693\", \"Affair\"],\n [\"714AB2\", \"Studio\"],\n [\"715D47\", \"Tobacco Brown\"],\n [\"716338\", \"Yellow Metal\"],\n [\"716B56\", \"Peat\"],\n [\"716E10\", \"Olivetone\"],\n [\"717486\", \"Storm Gray\"],\n [\"718080\", \"Sirocco\"],\n [\"71D9E2\", \"Aquamarine Blue\"],\n [\"72010F\", \"Venetian Red\"],\n [\"724A2F\", \"Old Copper\"],\n [\"726D4E\", \"Go Ben\"],\n [\"727B89\", \"Raven\"],\n [\"731E8F\", \"Seance\"],\n [\"734A12\", \"Raw Umber\"],\n [\"736C9F\", \"Kimberly\"],\n [\"736D58\", \"Crocodile\"],\n [\"737829\", \"Crete\"],\n [\"738678\", \"Xanadu\"],\n [\"74640D\", \"Spicy Mustard\"],\n [\"747D63\", \"Limed Ash\"],\n [\"747D83\", \"Rolling Stone\"],\n [\"748881\", \"Blue Smoke\"],\n [\"749378\", \"Laurel\"],\n [\"74C365\", \"Mantis\"],\n [\"755A57\", \"Russett\"],\n [\"7563A8\", \"Deluge\"],\n [\"76395D\", \"Cosmic\"],\n [\"7666C6\", \"Blue Marguerite\"],\n [\"76BD17\", \"Lima\"],\n [\"76D7EA\", \"Sky Blue\"],\n [\"770F05\", \"Dark Burgundy\"],\n [\"771F1F\", \"Crown of Thorns\"],\n [\"773F1A\", \"Walnut\"],\n [\"776F61\", \"Pablo\"],\n [\"778120\", \"Pacifika\"],\n [\"779E86\", \"Oxley\"],\n [\"77DD77\", \"Pastel Green\"],\n [\"780109\", \"Japanese Maple\"],\n [\"782D19\", \"Mocha\"],\n [\"782F16\", \"Peanut\"],\n [\"78866B\", \"Camouflage Green\"],\n [\"788A25\", \"Wasabi\"],\n [\"788BBA\", \"Ship Cove\"],\n [\"78A39C\", \"Sea Nymph\"],\n [\"795D4C\", \"Roman Coffee\"],\n [\"796878\", \"Old Lavender\"],\n [\"796989\", \"Rum\"],\n [\"796A78\", \"Fedora\"],\n [\"796D62\", \"Sandstone\"],\n [\"79DEEC\", \"Spray\"],\n [\"7A013A\", \"Siren\"],\n [\"7A58C1\", \"Fuchsia Blue\"],\n [\"7A7A7A\", \"Boulder\"],\n [\"7A89B8\", \"Wild Blue Yonder\"],\n [\"7AC488\", \"De York\"],\n [\"7B3801\", \"Red Beech\"],\n [\"7B3F00\", \"Cinnamon\"],\n [\"7B6608\", \"Yukon Gold\"],\n [\"7B7874\", \"Tapa\"],\n [\"7B7C94\", \"Waterloo \"],\n [\"7B8265\", \"Flax Smoke\"],\n [\"7B9F80\", \"Amulet\"],\n [\"7BA05B\", \"Asparagus\"],\n [\"7C1C05\", \"Kenyan Copper\"],\n [\"7C7631\", \"Pesto\"],\n [\"7C778A\", \"Topaz\"],\n [\"7C7B7A\", \"Concord\"],\n [\"7C7B82\", \"Jumbo\"],\n [\"7C881A\", \"Trendy Green\"],\n [\"7CA1A6\", \"Gumbo\"],\n [\"7CB0A1\", \"Acapulco\"],\n [\"7CB7BB\", \"Neptune\"],\n [\"7D2C14\", \"Pueblo\"],\n [\"7DA98D\", \"Bay Leaf\"],\n [\"7DC8F7\", \"Malibu\"],\n [\"7DD8C6\", \"Bermuda\"],\n [\"7E3A15\", \"Copper Canyon\"],\n [\"7F1734\", \"Claret\"],\n [\"7F3A02\", \"Peru Tan\"],\n [\"7F626D\", \"Falcon\"],\n [\"7F7589\", \"Mobster\"],\n [\"7F76D3\", \"Moody Blue\"],\n [\"7FFF00\", \"Chartreuse\"],\n [\"7FFFD4\", \"Aquamarine\"],\n [\"800000\", \"Maroon\"],\n [\"800B47\", \"Rose Bud Cherry\"],\n [\"801818\", \"Falu Red\"],\n [\"80341F\", \"Red Robin\"],\n [\"803790\", \"Vivid Violet\"],\n [\"80461B\", \"Russet\"],\n [\"807E79\", \"Friar Gray\"],\n [\"808000\", \"Olive\"],\n [\"808080\", \"Gray\"],\n [\"80B3AE\", \"Gulf Stream\"],\n [\"80B3C4\", \"Glacier\"],\n [\"80CCEA\", \"Seagull\"],\n [\"81422C\", \"Nutmeg\"],\n [\"816E71\", \"Spicy Pink\"],\n [\"817377\", \"Empress\"],\n [\"819885\", \"Spanish Green\"],\n [\"826F65\", \"Sand Dune\"],\n [\"828685\", \"Gunsmoke\"],\n [\"828F72\", \"Battleship Gray\"],\n [\"831923\", \"Merlot\"],\n [\"837050\", \"Shadow\"],\n [\"83AA5D\", \"Chelsea Cucumber\"],\n [\"83D0C6\", \"Monte Carlo\"],\n [\"843179\", \"Plum\"],\n [\"84A0A0\", \"Granny Smith\"],\n [\"8581D9\", \"Chetwode Blue\"],\n [\"858470\", \"Bandicoot\"],\n [\"859FAF\", \"Bali Hai\"],\n [\"85C4CC\", \"Half Baked\"],\n [\"860111\", \"Red Devil\"],\n [\"863C3C\", \"Lotus\"],\n [\"86483C\", \"Ironstone\"],\n [\"864D1E\", \"Bull Shot\"],\n [\"86560A\", \"Rusty Nail\"],\n [\"868974\", \"Bitter\"],\n [\"86949F\", \"Regent Gray\"],\n [\"871550\", \"Disco\"],\n [\"87756E\", \"Americano\"],\n [\"877C7B\", \"Hurricane\"],\n [\"878D91\", \"Oslo Gray\"],\n [\"87AB39\", \"Sushi\"],\n [\"885342\", \"Spicy Mix\"],\n [\"886221\", \"Kumera\"],\n [\"888387\", \"Suva Gray\"],\n [\"888D65\", \"Avocado\"],\n [\"893456\", \"Camelot\"],\n [\"893843\", \"Solid Pink\"],\n [\"894367\", \"Cannon Pink\"],\n [\"897D6D\", \"Makara\"],\n [\"8A3324\", \"Burnt Umber\"],\n [\"8A73D6\", \"True V\"],\n [\"8A8360\", \"Clay Creek\"],\n [\"8A8389\", \"Monsoon\"],\n [\"8A8F8A\", \"Stack\"],\n [\"8AB9F1\", \"Jordy Blue\"],\n [\"8B00FF\", \"Electric Violet\"],\n [\"8B0723\", \"Monarch\"],\n [\"8B6B0B\", \"Corn Harvest\"],\n [\"8B8470\", \"Olive Haze\"],\n [\"8B847E\", \"Schooner\"],\n [\"8B8680\", \"Natural Gray\"],\n [\"8B9C90\", \"Mantle\"],\n [\"8B9FEE\", \"Portage\"],\n [\"8BA690\", \"Envy\"],\n [\"8BA9A5\", \"Cascade\"],\n [\"8BE6D8\", \"Riptide\"],\n [\"8C055E\", \"Cardinal Pink\"],\n [\"8C472F\", \"Mule Fawn\"],\n [\"8C5738\", \"Potters Clay\"],\n [\"8C6495\", \"Trendy Pink\"],\n [\"8D0226\", \"Paprika\"],\n [\"8D3D38\", \"Sanguine Brown\"],\n [\"8D3F3F\", \"Tosca\"],\n [\"8D7662\", \"Cement\"],\n [\"8D8974\", \"Granite Green\"],\n [\"8D90A1\", \"Manatee\"],\n [\"8DA8CC\", \"Polo Blue\"],\n [\"8E0000\", \"Red Berry\"],\n [\"8E4D1E\", \"Rope\"],\n [\"8E6F70\", \"Opium\"],\n [\"8E775E\", \"Domino\"],\n [\"8E8190\", \"Mamba\"],\n [\"8EABC1\", \"Nepal\"],\n [\"8F021C\", \"Pohutukawa\"],\n [\"8F3E33\", \"El Salva\"],\n [\"8F4B0E\", \"Korma\"],\n [\"8F8176\", \"Squirrel\"],\n [\"8FD6B4\", \"Vista Blue\"],\n [\"900020\", \"Burgundy\"],\n [\"901E1E\", \"Old Brick\"],\n [\"907874\", \"Hemp\"],\n [\"907B71\", \"Almond Frost\"],\n [\"908D39\", \"Sycamore\"],\n [\"92000A\", \"Sangria\"],\n [\"924321\", \"Cumin\"],\n [\"926F5B\", \"Beaver\"],\n [\"928573\", \"Stonewall\"],\n [\"928590\", \"Venus\"],\n [\"9370DB\", \"Medium Purple\"],\n [\"93CCEA\", \"Cornflower\"],\n [\"93DFB8\", \"Algae Green\"],\n [\"944747\", \"Copper Rust\"],\n [\"948771\", \"Arrowtown\"],\n [\"950015\", \"Scarlett\"],\n [\"956387\", \"Strikemaster\"],\n [\"959396\", \"Mountain Mist\"],\n [\"960018\", \"Carmine\"],\n [\"964B00\", \"Brown\"],\n [\"967059\", \"Leather\"],\n [\"9678B6\", \"Purple Mountain's Majesty\"],\n [\"967BB6\", \"Lavender Purple\"],\n [\"96A8A1\", \"Pewter\"],\n [\"96BBAB\", \"Summer Green\"],\n [\"97605D\", \"Au Chico\"],\n [\"9771B5\", \"Wisteria\"],\n [\"97CD2D\", \"Atlantis\"],\n [\"983D61\", \"Vin Rouge\"],\n [\"9874D3\", \"Lilac Bush\"],\n [\"98777B\", \"Bazaar\"],\n [\"98811B\", \"Hacienda\"],\n [\"988D77\", \"Pale Oyster\"],\n [\"98FF98\", \"Mint Green\"],\n [\"990066\", \"Fresh Eggplant\"],\n [\"991199\", \"Violet Eggplant\"],\n [\"991613\", \"Tamarillo\"],\n [\"991B07\", \"Totem Pole\"],\n [\"996666\", \"Copper Rose\"],\n [\"9966CC\", \"Amethyst\"],\n [\"997A8D\", \"Mountbatten Pink\"],\n [\"9999CC\", \"Blue Bell\"],\n [\"9A3820\", \"Prairie Sand\"],\n [\"9A6E61\", \"Toast\"],\n [\"9A9577\", \"Gurkha\"],\n [\"9AB973\", \"Olivine\"],\n [\"9AC2B8\", \"Shadow Green\"],\n [\"9B4703\", \"Oregon\"],\n [\"9B9E8F\", \"Lemon Grass\"],\n [\"9C3336\", \"Stiletto\"],\n [\"9D5616\", \"Hawaiian Tan\"],\n [\"9DACB7\", \"Gull Gray\"],\n [\"9DC209\", \"Pistachio\"],\n [\"9DE093\", \"Granny Smith Apple\"],\n [\"9DE5FF\", \"Anakiwa\"],\n [\"9E5302\", \"Chelsea Gem\"],\n [\"9E5B40\", \"Sepia Skin\"],\n [\"9EA587\", \"Sage\"],\n [\"9EA91F\", \"Citron\"],\n [\"9EB1CD\", \"Rock Blue\"],\n [\"9EDEE0\", \"Morning Glory\"],\n [\"9F381D\", \"Cognac\"],\n [\"9F821C\", \"Reef Gold\"],\n [\"9F9F9C\", \"Star Dust\"],\n [\"9FA0B1\", \"Santas Gray\"],\n [\"9FD7D3\", \"Sinbad\"],\n [\"9FDD8C\", \"Feijoa\"],\n [\"A02712\", \"Tabasco\"],\n [\"A1750D\", \"Buttered Rum\"],\n [\"A1ADB5\", \"Hit Gray\"],\n [\"A1C50A\", \"Citrus\"],\n [\"A1DAD7\", \"Aqua Island\"],\n [\"A1E9DE\", \"Water Leaf\"],\n [\"A2006D\", \"Flirt\"],\n [\"A23B6C\", \"Rouge\"],\n [\"A26645\", \"Cape Palliser\"],\n [\"A2AAB3\", \"Gray Chateau\"],\n [\"A2AEAB\", \"Edward\"],\n [\"A3807B\", \"Pharlap\"],\n [\"A397B4\", \"Amethyst Smoke\"],\n [\"A3E3ED\", \"Blizzard Blue\"],\n [\"A4A49D\", \"Delta\"],\n [\"A4A6D3\", \"Wistful\"],\n [\"A4AF6E\", \"Green Smoke\"],\n [\"A50B5E\", \"Jazzberry Jam\"],\n [\"A59B91\", \"Zorba\"],\n [\"A5CB0C\", \"Bahia\"],\n [\"A62F20\", \"Roof Terracotta\"],\n [\"A65529\", \"Paarl\"],\n [\"A68B5B\", \"Barley Corn\"],\n [\"A69279\", \"Donkey Brown\"],\n [\"A6A29A\", \"Dawn\"],\n [\"A72525\", \"Mexican Red\"],\n [\"A7882C\", \"Luxor Gold\"],\n [\"A85307\", \"Rich Gold\"],\n [\"A86515\", \"Reno Sand\"],\n [\"A86B6B\", \"Coral Tree\"],\n [\"A8989B\", \"Dusty Gray\"],\n [\"A899E6\", \"Dull Lavender\"],\n [\"A8A589\", \"Tallow\"],\n [\"A8AE9C\", \"Bud\"],\n [\"A8AF8E\", \"Locust\"],\n [\"A8BD9F\", \"Norway\"],\n [\"A8E3BD\", \"Chinook\"],\n [\"A9A491\", \"Gray Olive\"],\n [\"A9ACB6\", \"Aluminium\"],\n [\"A9B2C3\", \"Cadet Blue\"],\n [\"A9B497\", \"Schist\"],\n [\"A9BDBF\", \"Tower Gray\"],\n [\"A9BEF2\", \"Perano\"],\n [\"A9C6C2\", \"Opal\"],\n [\"AA375A\", \"Night Shadz\"],\n [\"AA4203\", \"Fire\"],\n [\"AA8B5B\", \"Muesli\"],\n [\"AA8D6F\", \"Sandal\"],\n [\"AAA5A9\", \"Shady Lady\"],\n [\"AAA9CD\", \"Logan\"],\n [\"AAABB7\", \"Spun Pearl\"],\n [\"AAD6E6\", \"Regent St Blue\"],\n [\"AAF0D1\", \"Magic Mint\"],\n [\"AB0563\", \"Lipstick\"],\n [\"AB3472\", \"Royal Heath\"],\n [\"AB917A\", \"Sandrift\"],\n [\"ABA0D9\", \"Cold Purple\"],\n [\"ABA196\", \"Bronco\"],\n [\"AC8A56\", \"Limed Oak\"],\n [\"AC91CE\", \"East Side\"],\n [\"AC9E22\", \"Lemon Ginger\"],\n [\"ACA494\", \"Napa\"],\n [\"ACA586\", \"Hillary\"],\n [\"ACA59F\", \"Cloudy\"],\n [\"ACACAC\", \"Silver Chalice\"],\n [\"ACB78E\", \"Swamp Green\"],\n [\"ACCBB1\", \"Spring Rain\"],\n [\"ACDD4D\", \"Conifer\"],\n [\"ACE1AF\", \"Celadon\"],\n [\"AD781B\", \"Mandalay\"],\n [\"ADBED1\", \"Casper\"],\n [\"ADDFAD\", \"Moss Green\"],\n [\"ADE6C4\", \"Padua\"],\n [\"ADFF2F\", \"Green Yellow\"],\n [\"AE4560\", \"Hippie Pink\"],\n [\"AE6020\", \"Desert\"],\n [\"AE809E\", \"Bouquet\"],\n [\"AF4035\", \"Medium Carmine\"],\n [\"AF4D43\", \"Apple Blossom\"],\n [\"AF593E\", \"Brown Rust\"],\n [\"AF8751\", \"Driftwood\"],\n [\"AF8F2C\", \"Alpine\"],\n [\"AF9F1C\", \"Lucky\"],\n [\"AFA09E\", \"Martini\"],\n [\"AFB1B8\", \"Bombay\"],\n [\"AFBDD9\", \"Pigeon Post\"],\n [\"B04C6A\", \"Cadillac\"],\n [\"B05D54\", \"Matrix\"],\n [\"B05E81\", \"Tapestry\"],\n [\"B06608\", \"Mai Tai\"],\n [\"B09A95\", \"Del Rio\"],\n [\"B0E0E6\", \"Powder Blue\"],\n [\"B0E313\", \"Inch Worm\"],\n [\"B10000\", \"Bright Red\"],\n [\"B14A0B\", \"Vesuvius\"],\n [\"B1610B\", \"Pumpkin Skin\"],\n [\"B16D52\", \"Santa Fe\"],\n [\"B19461\", \"Teak\"],\n [\"B1E2C1\", \"Fringy Flower\"],\n [\"B1F4E7\", \"Ice Cold\"],\n [\"B20931\", \"Shiraz\"],\n [\"B2A1EA\", \"Biloba Flower\"],\n [\"B32D29\", \"Tall Poppy\"],\n [\"B35213\", \"Fiery Orange\"],\n [\"B38007\", \"Hot Toddy\"],\n [\"B3AF95\", \"Taupe Gray\"],\n [\"B3C110\", \"La Rioja\"],\n [\"B43332\", \"Well Read\"],\n [\"B44668\", \"Blush\"],\n [\"B4CFD3\", \"Jungle Mist\"],\n [\"B57281\", \"Turkish Rose\"],\n [\"B57EDC\", \"Lavender\"],\n [\"B5A27F\", \"Mongoose\"],\n [\"B5B35C\", \"Olive Green\"],\n [\"B5D2CE\", \"Jet Stream\"],\n [\"B5ECDF\", \"Cruise\"],\n [\"B6316C\", \"Hibiscus\"],\n [\"B69D98\", \"Thatch\"],\n [\"B6B095\", \"Heathered Gray\"],\n [\"B6BAA4\", \"Eagle\"],\n [\"B6D1EA\", \"Spindle\"],\n [\"B6D3BF\", \"Gum Leaf\"],\n [\"B7410E\", \"Rust\"],\n [\"B78E5C\", \"Muddy Waters\"],\n [\"B7A214\", \"Sahara\"],\n [\"B7A458\", \"Husk\"],\n [\"B7B1B1\", \"Nobel\"],\n [\"B7C3D0\", \"Heather\"],\n [\"B7F0BE\", \"Madang\"],\n [\"B81104\", \"Milano Red\"],\n [\"B87333\", \"Copper\"],\n [\"B8B56A\", \"Gimblet\"],\n [\"B8C1B1\", \"Green Spring\"],\n [\"B8C25D\", \"Celery\"],\n [\"B8E0F9\", \"Sail\"],\n [\"B94E48\", \"Chestnut\"],\n [\"B95140\", \"Crail\"],\n [\"B98D28\", \"Marigold\"],\n [\"B9C46A\", \"Wild Willow\"],\n [\"B9C8AC\", \"Rainee\"],\n [\"BA0101\", \"Guardsman Red\"],\n [\"BA450C\", \"Rock Spray\"],\n [\"BA6F1E\", \"Bourbon\"],\n [\"BA7F03\", \"Pirate Gold\"],\n [\"BAB1A2\", \"Nomad\"],\n [\"BAC7C9\", \"Submarine\"],\n [\"BAEEF9\", \"Charlotte\"],\n [\"BB3385\", \"Medium Red Violet\"],\n [\"BB8983\", \"Brandy Rose\"],\n [\"BBD009\", \"Rio Grande\"],\n [\"BBD7C1\", \"Surf\"],\n [\"BCC9C2\", \"Powder Ash\"],\n [\"BD5E2E\", \"Tuscany\"],\n [\"BD978E\", \"Quicksand\"],\n [\"BDB1A8\", \"Silk\"],\n [\"BDB2A1\", \"Malta\"],\n [\"BDB3C7\", \"Chatelle\"],\n [\"BDBBD7\", \"Lavender Gray\"],\n [\"BDBDC6\", \"French Gray\"],\n [\"BDC8B3\", \"Clay Ash\"],\n [\"BDC9CE\", \"Loblolly\"],\n [\"BDEDFD\", \"French Pass\"],\n [\"BEA6C3\", \"London Hue\"],\n [\"BEB5B7\", \"Pink Swan\"],\n [\"BEDE0D\", \"Fuego\"],\n [\"BF5500\", \"Rose of Sharon\"],\n [\"BFB8B0\", \"Tide\"],\n [\"BFBED8\", \"Blue Haze\"],\n [\"BFC1C2\", \"Silver Sand\"],\n [\"BFC921\", \"Key Lime Pie\"],\n [\"BFDBE2\", \"Ziggurat\"],\n [\"BFFF00\", \"Lime\"],\n [\"C02B18\", \"Thunderbird\"],\n [\"C04737\", \"Mojo\"],\n [\"C08081\", \"Old Rose\"],\n [\"C0C0C0\", \"Silver\"],\n [\"C0D3B9\", \"Pale Leaf\"],\n [\"C0D8B6\", \"Pixie Green\"],\n [\"C1440E\", \"Tia Maria\"],\n [\"C154C1\", \"Fuchsia Pink\"],\n [\"C1A004\", \"Buddha Gold\"],\n [\"C1B7A4\", \"Bison Hide\"],\n [\"C1BAB0\", \"Tea\"],\n [\"C1BECD\", \"Gray Suit\"],\n [\"C1D7B0\", \"Sprout\"],\n [\"C1F07C\", \"Sulu\"],\n [\"C26B03\", \"Indochine\"],\n [\"C2955D\", \"Twine\"],\n [\"C2BDB6\", \"Cotton Seed\"],\n [\"C2CAC4\", \"Pumice\"],\n [\"C2E8E5\", \"Jagged Ice\"],\n [\"C32148\", \"Maroon Flush\"],\n [\"C3B091\", \"Indian Khaki\"],\n [\"C3BFC1\", \"Pale Slate\"],\n [\"C3C3BD\", \"Gray Nickel\"],\n [\"C3CDE6\", \"Periwinkle Gray\"],\n [\"C3D1D1\", \"Tiara\"],\n [\"C3DDF9\", \"Tropical Blue\"],\n [\"C41E3A\", \"Cardinal\"],\n [\"C45655\", \"Fuzzy Wuzzy Brown\"],\n [\"C45719\", \"Orange Roughy\"],\n [\"C4C4BC\", \"Mist Gray\"],\n [\"C4D0B0\", \"Coriander\"],\n [\"C4F4EB\", \"Mint Tulip\"],\n [\"C54B8C\", \"Mulberry\"],\n [\"C59922\", \"Nugget\"],\n [\"C5994B\", \"Tussock\"],\n [\"C5DBCA\", \"Sea Mist\"],\n [\"C5E17A\", \"Yellow Green\"],\n [\"C62D42\", \"Brick Red\"],\n [\"C6726B\", \"Contessa\"],\n [\"C69191\", \"Oriental Pink\"],\n [\"C6A84B\", \"Roti\"],\n [\"C6C3B5\", \"Ash\"],\n [\"C6C8BD\", \"Kangaroo\"],\n [\"C6E610\", \"Las Palmas\"],\n [\"C7031E\", \"Monza\"],\n [\"C71585\", \"Red Violet\"],\n [\"C7BCA2\", \"Coral Reef\"],\n [\"C7C1FF\", \"Melrose\"],\n [\"C7C4BF\", \"Cloud\"],\n [\"C7C9D5\", \"Ghost\"],\n [\"C7CD90\", \"Pine Glade\"],\n [\"C7DDE5\", \"Botticelli\"],\n [\"C88A65\", \"Antique Brass\"],\n [\"C8A2C8\", \"Lilac\"],\n [\"C8A528\", \"Hokey Pokey\"],\n [\"C8AABF\", \"Lily\"],\n [\"C8B568\", \"Laser\"],\n [\"C8E3D7\", \"Edgewater\"],\n [\"C96323\", \"Piper\"],\n [\"C99415\", \"Pizza\"],\n [\"C9A0DC\", \"Light Wisteria\"],\n [\"C9B29B\", \"Rodeo Dust\"],\n [\"C9B35B\", \"Sundance\"],\n [\"C9B93B\", \"Earls Green\"],\n [\"C9C0BB\", \"Silver Rust\"],\n [\"C9D9D2\", \"Conch\"],\n [\"C9FFA2\", \"Reef\"],\n [\"C9FFE5\", \"Aero Blue\"],\n [\"CA3435\", \"Flush Mahogany\"],\n [\"CABB48\", \"Turmeric\"],\n [\"CADCD4\", \"Paris White\"],\n [\"CAE00D\", \"Bitter Lemon\"],\n [\"CAE6DA\", \"Skeptic\"],\n [\"CB8FA9\", \"Viola\"],\n [\"CBCAB6\", \"Foggy Gray\"],\n [\"CBD3B0\", \"Green Mist\"],\n [\"CBDBD6\", \"Nebula\"],\n [\"CC3333\", \"Persian Red\"],\n [\"CC5500\", \"Burnt Orange\"],\n [\"CC7722\", \"Ochre\"],\n [\"CC8899\", \"Puce\"],\n [\"CCCAA8\", \"Thistle Green\"],\n [\"CCCCFF\", \"Periwinkle\"],\n [\"CCFF00\", \"Electric Lime\"],\n [\"CD5700\", \"Tenn\"],\n [\"CD5C5C\", \"Chestnut Rose\"],\n [\"CD8429\", \"Brandy Punch\"],\n [\"CDF4FF\", \"Onahau\"],\n [\"CEB98F\", \"Sorrell Brown\"],\n [\"CEBABA\", \"Cold Turkey\"],\n [\"CEC291\", \"Yuma\"],\n [\"CEC7A7\", \"Chino\"],\n [\"CFA39D\", \"Eunry\"],\n [\"CFB53B\", \"Old Gold\"],\n [\"CFDCCF\", \"Tasman\"],\n [\"CFE5D2\", \"Surf Crest\"],\n [\"CFF9F3\", \"Humming Bird\"],\n [\"CFFAF4\", \"Scandal\"],\n [\"D05F04\", \"Red Stage\"],\n [\"D06DA1\", \"Hopbush\"],\n [\"D07D12\", \"Meteor\"],\n [\"D0BEF8\", \"Perfume\"],\n [\"D0C0E5\", \"Prelude\"],\n [\"D0F0C0\", \"Tea Green\"],\n [\"D18F1B\", \"Geebung\"],\n [\"D1BEA8\", \"Vanilla\"],\n [\"D1C6B4\", \"Soft Amber\"],\n [\"D1D2CA\", \"Celeste\"],\n [\"D1D2DD\", \"Mischka\"],\n [\"D1E231\", \"Pear\"],\n [\"D2691E\", \"Hot Cinnamon\"],\n [\"D27D46\", \"Raw Sienna\"],\n [\"D29EAA\", \"Careys Pink\"],\n [\"D2B48C\", \"Tan\"],\n [\"D2DA97\", \"Deco\"],\n [\"D2F6DE\", \"Blue Romance\"],\n [\"D2F8B0\", \"Gossip\"],\n [\"D3CBBA\", \"Sisal\"],\n [\"D3CDC5\", \"Swirl\"],\n [\"D47494\", \"Charm\"],\n [\"D4B6AF\", \"Clam Shell\"],\n [\"D4BF8D\", \"Straw\"],\n [\"D4C4A8\", \"Akaroa\"],\n [\"D4CD16\", \"Bird Flower\"],\n [\"D4D7D9\", \"Iron\"],\n [\"D4DFE2\", \"Geyser\"],\n [\"D4E2FC\", \"Hawkes Blue\"],\n [\"D54600\", \"Grenadier\"],\n [\"D591A4\", \"Can Can\"],\n [\"D59A6F\", \"Whiskey\"],\n [\"D5D195\", \"Winter Hazel\"],\n [\"D5F6E3\", \"Granny Apple\"],\n [\"D69188\", \"My Pink\"],\n [\"D6C562\", \"Tacha\"],\n [\"D6CEF6\", \"Moon Raker\"],\n [\"D6D6D1\", \"Quill Gray\"],\n [\"D6FFDB\", \"Snowy Mint\"],\n [\"D7837F\", \"New York Pink\"],\n [\"D7C498\", \"Pavlova\"],\n [\"D7D0FF\", \"Fog\"],\n [\"D84437\", \"Valencia\"],\n [\"D87C63\", \"Japonica\"],\n [\"D8BFD8\", \"Thistle\"],\n [\"D8C2D5\", \"Maverick\"],\n [\"D8FCFA\", \"Foam\"],\n [\"D94972\", \"Cabaret\"],\n [\"D99376\", \"Burning Sand\"],\n [\"D9B99B\", \"Cameo\"],\n [\"D9D6CF\", \"Timberwolf\"],\n [\"D9DCC1\", \"Tana\"],\n [\"D9E4F5\", \"Link Water\"],\n [\"D9F7FF\", \"Mabel\"],\n [\"DA3287\", \"Cerise\"],\n [\"DA5B38\", \"Flame Pea\"],\n [\"DA6304\", \"Bamboo\"],\n [\"DA6A41\", \"Red Damask\"],\n [\"DA70D6\", \"Orchid\"],\n [\"DA8A67\", \"Copperfield\"],\n [\"DAA520\", \"Golden Grass\"],\n [\"DAECD6\", \"Zanah\"],\n [\"DAF4F0\", \"Iceberg\"],\n [\"DAFAFF\", \"Oyster Bay\"],\n [\"DB5079\", \"Cranberry\"],\n [\"DB9690\", \"Petite Orchid\"],\n [\"DB995E\", \"Di Serria\"],\n [\"DBDBDB\", \"Alto\"],\n [\"DBFFF8\", \"Frosted Mint\"],\n [\"DC143C\", \"Crimson\"],\n [\"DC4333\", \"Punch\"],\n [\"DCB20C\", \"Galliano\"],\n [\"DCB4BC\", \"Blossom\"],\n [\"DCD747\", \"Wattle\"],\n [\"DCD9D2\", \"Westar\"],\n [\"DCDDCC\", \"Moon Mist\"],\n [\"DCEDB4\", \"Caper\"],\n [\"DCF0EA\", \"Swans Down\"],\n [\"DDD6D5\", \"Swiss Coffee\"],\n [\"DDF9F1\", \"White Ice\"],\n [\"DE3163\", \"Cerise Red\"],\n [\"DE6360\", \"Roman\"],\n [\"DEA681\", \"Tumbleweed\"],\n [\"DEBA13\", \"Gold Tips\"],\n [\"DEC196\", \"Brandy\"],\n [\"DECBC6\", \"Wafer\"],\n [\"DED4A4\", \"Sapling\"],\n [\"DED717\", \"Barberry\"],\n [\"DEE5C0\", \"Beryl Green\"],\n [\"DEF5FF\", \"Pattens Blue\"],\n [\"DF73FF\", \"Heliotrope\"],\n [\"DFBE6F\", \"Apache\"],\n [\"DFCD6F\", \"Chenin\"],\n [\"DFCFDB\", \"Lola\"],\n [\"DFECDA\", \"Willow Brook\"],\n [\"DFFF00\", \"Chartreuse Yellow\"],\n [\"E0B0FF\", \"Mauve\"],\n [\"E0B646\", \"Anzac\"],\n [\"E0B974\", \"Harvest Gold\"],\n [\"E0C095\", \"Calico\"],\n [\"E0FFFF\", \"Baby Blue\"],\n [\"E16865\", \"Sunglo\"],\n [\"E1BC64\", \"Equator\"],\n [\"E1C0C8\", \"Pink Flare\"],\n [\"E1E6D6\", \"Periglacial Blue\"],\n [\"E1EAD4\", \"Kidnapper\"],\n [\"E1F6E8\", \"Tara\"],\n [\"E25465\", \"Mandy\"],\n [\"E2725B\", \"Terracotta\"],\n [\"E28913\", \"Golden Bell\"],\n [\"E292C0\", \"Shocking\"],\n [\"E29418\", \"Dixie\"],\n [\"E29CD2\", \"Light Orchid\"],\n [\"E2D8ED\", \"Snuff\"],\n [\"E2EBED\", \"Mystic\"],\n [\"E2F3EC\", \"Apple Green\"],\n [\"E30B5C\", \"Razzmatazz\"],\n [\"E32636\", \"Alizarin Crimson\"],\n [\"E34234\", \"Cinnabar\"],\n [\"E3BEBE\", \"Cavern Pink\"],\n [\"E3F5E1\", \"Peppermint\"],\n [\"E3F988\", \"Mindaro\"],\n [\"E47698\", \"Deep Blush\"],\n [\"E49B0F\", \"Gamboge\"],\n [\"E4C2D5\", \"Melanie\"],\n [\"E4CFDE\", \"Twilight\"],\n [\"E4D1C0\", \"Bone\"],\n [\"E4D422\", \"Sunflower\"],\n [\"E4D5B7\", \"Grain Brown\"],\n [\"E4D69B\", \"Zombie\"],\n [\"E4F6E7\", \"Frostee\"],\n [\"E4FFD1\", \"Snow Flurry\"],\n [\"E52B50\", \"Amaranth\"],\n [\"E5841B\", \"Zest\"],\n [\"E5CCC9\", \"Dust Storm\"],\n [\"E5D7BD\", \"Stark White\"],\n [\"E5D8AF\", \"Hampton\"],\n [\"E5E0E1\", \"Bon Jour\"],\n [\"E5E5E5\", \"Mercury\"],\n [\"E5F9F6\", \"Polar\"],\n [\"E64E03\", \"Trinidad\"],\n [\"E6BE8A\", \"Gold Sand\"],\n [\"E6BEA5\", \"Cashmere\"],\n [\"E6D7B9\", \"Double Spanish White\"],\n [\"E6E4D4\", \"Satin Linen\"],\n [\"E6F2EA\", \"Harp\"],\n [\"E6F8F3\", \"Off Green\"],\n [\"E6FFE9\", \"Hint of Green\"],\n [\"E6FFFF\", \"Tranquil\"],\n [\"E77200\", \"Mango Tango\"],\n [\"E7730A\", \"Christine\"],\n [\"E79F8C\", \"Tonys Pink\"],\n [\"E79FC4\", \"Kobi\"],\n [\"E7BCB4\", \"Rose Fog\"],\n [\"E7BF05\", \"Corn\"],\n [\"E7CD8C\", \"Putty\"],\n [\"E7ECE6\", \"Gray Nurse\"],\n [\"E7F8FF\", \"Lily White\"],\n [\"E7FEFF\", \"Bubbles\"],\n [\"E89928\", \"Fire Bush\"],\n [\"E8B9B3\", \"Shilo\"],\n [\"E8E0D5\", \"Pearl Bush\"],\n [\"E8EBE0\", \"Green White\"],\n [\"E8F1D4\", \"Chrome White\"],\n [\"E8F2EB\", \"Gin\"],\n [\"E8F5F2\", \"Aqua Squeeze\"],\n [\"E96E00\", \"Clementine\"],\n [\"E97451\", \"Burnt Sienna\"],\n [\"E97C07\", \"Tahiti Gold\"],\n [\"E9CECD\", \"Oyster Pink\"],\n [\"E9D75A\", \"Confetti\"],\n [\"E9E3E3\", \"Ebb\"],\n [\"E9F8ED\", \"Ottoman\"],\n [\"E9FFFD\", \"Clear Day\"],\n [\"EA88A8\", \"Carissma\"],\n [\"EAAE69\", \"Porsche\"],\n [\"EAB33B\", \"Tulip Tree\"],\n [\"EAC674\", \"Rob Roy\"],\n [\"EADAB8\", \"Raffia\"],\n [\"EAE8D4\", \"White Rock\"],\n [\"EAF6EE\", \"Panache\"],\n [\"EAF6FF\", \"Solitude\"],\n [\"EAF9F5\", \"Aqua Spring\"],\n [\"EAFFFE\", \"Dew\"],\n [\"EB9373\", \"Apricot\"],\n [\"EBC2AF\", \"Zinnwaldite\"],\n [\"ECA927\", \"Fuel Yellow\"],\n [\"ECC54E\", \"Ronchi\"],\n [\"ECC7EE\", \"French Lilac\"],\n [\"ECCDB9\", \"Just Right\"],\n [\"ECE090\", \"Wild Rice\"],\n [\"ECEBBD\", \"Fall Green\"],\n [\"ECEBCE\", \"Aths Special\"],\n [\"ECF245\", \"Starship\"],\n [\"ED0A3F\", \"Red Ribbon\"],\n [\"ED7A1C\", \"Tango\"],\n [\"ED9121\", \"Carrot Orange\"],\n [\"ED989E\", \"Sea Pink\"],\n [\"EDB381\", \"Tacao\"],\n [\"EDC9AF\", \"Desert Sand\"],\n [\"EDCDAB\", \"Pancho\"],\n [\"EDDCB1\", \"Chamois\"],\n [\"EDEA99\", \"Primrose\"],\n [\"EDF5DD\", \"Frost\"],\n [\"EDF5F5\", \"Aqua Haze\"],\n [\"EDF6FF\", \"Zumthor\"],\n [\"EDF9F1\", \"Narvik\"],\n [\"EDFC84\", \"Honeysuckle\"],\n [\"EE82EE\", \"Lavender Magenta\"],\n [\"EEC1BE\", \"Beauty Bush\"],\n [\"EED794\", \"Chalky\"],\n [\"EED9C4\", \"Almond\"],\n [\"EEDC82\", \"Flax\"],\n [\"EEDEDA\", \"Bizarre\"],\n [\"EEE3AD\", \"Double Colonial White\"],\n [\"EEEEE8\", \"Cararra\"],\n [\"EEEF78\", \"Manz\"],\n [\"EEF0C8\", \"Tahuna Sands\"],\n [\"EEF0F3\", \"Athens Gray\"],\n [\"EEF3C3\", \"Tusk\"],\n [\"EEF4DE\", \"Loafer\"],\n [\"EEF6F7\", \"Catskill White\"],\n [\"EEFDFF\", \"Twilight Blue\"],\n [\"EEFF9A\", \"Jonquil\"],\n [\"EEFFE2\", \"Rice Flower\"],\n [\"EF863F\", \"Jaffa\"],\n [\"EFEFEF\", \"Gallery\"],\n [\"EFF2F3\", \"Porcelain\"],\n [\"F091A9\", \"Mauvelous\"],\n [\"F0D52D\", \"Golden Dream\"],\n [\"F0DB7D\", \"Golden Sand\"],\n [\"F0DC82\", \"Buff\"],\n [\"F0E2EC\", \"Prim\"],\n [\"F0E68C\", \"Khaki\"],\n [\"F0EEFD\", \"Selago\"],\n [\"F0EEFF\", \"Titan White\"],\n [\"F0F8FF\", \"Alice Blue\"],\n [\"F0FCEA\", \"Feta\"],\n [\"F18200\", \"Gold Drop\"],\n [\"F19BAB\", \"Wewak\"],\n [\"F1E788\", \"Sahara Sand\"],\n [\"F1E9D2\", \"Parchment\"],\n [\"F1E9FF\", \"Blue Chalk\"],\n [\"F1EEC1\", \"Mint Julep\"],\n [\"F1F1F1\", \"Seashell\"],\n [\"F1F7F2\", \"Saltpan\"],\n [\"F1FFAD\", \"Tidal\"],\n [\"F1FFC8\", \"Chiffon\"],\n [\"F2552A\", \"Flamingo\"],\n [\"F28500\", \"Tangerine\"],\n [\"F2C3B2\", \"Mandys Pink\"],\n [\"F2F2F2\", \"Concrete\"],\n [\"F2FAFA\", \"Black Squeeze\"],\n [\"F34723\", \"Pomegranate\"],\n [\"F3AD16\", \"Buttercup\"],\n [\"F3D69D\", \"New Orleans\"],\n [\"F3D9DF\", \"Vanilla Ice\"],\n [\"F3E7BB\", \"Sidecar\"],\n [\"F3E9E5\", \"Dawn Pink\"],\n [\"F3EDCF\", \"Wheatfield\"],\n [\"F3FB62\", \"Canary\"],\n [\"F3FBD4\", \"Orinoco\"],\n [\"F3FFD8\", \"Carla\"],\n [\"F400A1\", \"Hollywood Cerise\"],\n [\"F4A460\", \"Sandy brown\"],\n [\"F4C430\", \"Saffron\"],\n [\"F4D81C\", \"Ripe Lemon\"],\n [\"F4EBD3\", \"Janna\"],\n [\"F4F2EE\", \"Pampas\"],\n [\"F4F4F4\", \"Wild Sand\"],\n [\"F4F8FF\", \"Zircon\"],\n [\"F57584\", \"Froly\"],\n [\"F5C85C\", \"Cream Can\"],\n [\"F5C999\", \"Manhattan\"],\n [\"F5D5A0\", \"Maize\"],\n [\"F5DEB3\", \"Wheat\"],\n [\"F5E7A2\", \"Sandwisp\"],\n [\"F5E7E2\", \"Pot Pourri\"],\n [\"F5E9D3\", \"Albescent White\"],\n [\"F5EDEF\", \"Soft Peach\"],\n [\"F5F3E5\", \"Ecru White\"],\n [\"F5F5DC\", \"Beige\"],\n [\"F5FB3D\", \"Golden Fizz\"],\n [\"F5FFBE\", \"Australian Mint\"],\n [\"F64A8A\", \"French Rose\"],\n [\"F653A6\", \"Brilliant Rose\"],\n [\"F6A4C9\", \"Illusion\"],\n [\"F6F0E6\", \"Merino\"],\n [\"F6F7F7\", \"Black Haze\"],\n [\"F6FFDC\", \"Spring Sun\"],\n [\"F7468A\", \"Violet Red\"],\n [\"F77703\", \"Chilean Fire\"],\n [\"F77FBE\", \"Persian Pink\"],\n [\"F7B668\", \"Rajah\"],\n [\"F7C8DA\", \"Azalea\"],\n [\"F7DBE6\", \"We Peep\"],\n [\"F7F2E1\", \"Quarter Spanish White\"],\n [\"F7F5FA\", \"Whisper\"],\n [\"F7FAF7\", \"Snow Drift\"],\n [\"F8B853\", \"Casablanca\"],\n [\"F8C3DF\", \"Chantilly\"],\n [\"F8D9E9\", \"Cherub\"],\n [\"F8DB9D\", \"Marzipan\"],\n [\"F8DD5C\", \"Energy Yellow\"],\n [\"F8E4BF\", \"Givry\"],\n [\"F8F0E8\", \"White Linen\"],\n [\"F8F4FF\", \"Magnolia\"],\n [\"F8F6F1\", \"Spring Wood\"],\n [\"F8F7DC\", \"Coconut Cream\"],\n [\"F8F7FC\", \"White Lilac\"],\n [\"F8F8F7\", \"Desert Storm\"],\n [\"F8F99C\", \"Texas\"],\n [\"F8FACD\", \"Corn Field\"],\n [\"F8FDD3\", \"Mimosa\"],\n [\"F95A61\", \"Carnation\"],\n [\"F9BF58\", \"Saffron Mango\"],\n [\"F9E0ED\", \"Carousel Pink\"],\n [\"F9E4BC\", \"Dairy Cream\"],\n [\"F9E663\", \"Portica\"],\n [\"F9EAF3\", \"Amour\"],\n [\"F9F8E4\", \"Rum Swizzle\"],\n [\"F9FF8B\", \"Dolly\"],\n [\"F9FFF6\", \"Sugar Cane\"],\n [\"FA7814\", \"Ecstasy\"],\n [\"FA9D5A\", \"Tan Hide\"],\n [\"FAD3A2\", \"Corvette\"],\n [\"FADFAD\", \"Peach Yellow\"],\n [\"FAE600\", \"Turbo\"],\n [\"FAEAB9\", \"Astra\"],\n [\"FAECCC\", \"Champagne\"],\n [\"FAF0E6\", \"Linen\"],\n [\"FAF3F0\", \"Fantasy\"],\n [\"FAF7D6\", \"Citrine White\"],\n [\"FAFAFA\", \"Alabaster\"],\n [\"FAFDE4\", \"Hint of Yellow\"],\n [\"FAFFA4\", \"Milan\"],\n [\"FB607F\", \"Brink Pink\"],\n [\"FB8989\", \"Geraldine\"],\n [\"FBA0E3\", \"Lavender Rose\"],\n [\"FBA129\", \"Sea Buckthorn\"],\n [\"FBAC13\", \"Sun\"],\n [\"FBAED2\", \"Lavender Pink\"],\n [\"FBB2A3\", \"Rose Bud\"],\n [\"FBBEDA\", \"Cupid\"],\n [\"FBCCE7\", \"Classic Rose\"],\n [\"FBCEB1\", \"Apricot Peach\"],\n [\"FBE7B2\", \"Banana Mania\"],\n [\"FBE870\", \"Marigold Yellow\"],\n [\"FBE96C\", \"Festival\"],\n [\"FBEA8C\", \"Sweet Corn\"],\n [\"FBEC5D\", \"Candy Corn\"],\n [\"FBF9F9\", \"Hint of Red\"],\n [\"FBFFBA\", \"Shalimar\"],\n [\"FC0FC0\", \"Shocking Pink\"],\n [\"FC80A5\", \"Tickle Me Pink\"],\n [\"FC9C1D\", \"Tree Poppy\"],\n [\"FCC01E\", \"Lightning Yellow\"],\n [\"FCD667\", \"Goldenrod\"],\n [\"FCD917\", \"Candlelight\"],\n [\"FCDA98\", \"Cherokee\"],\n [\"FCF4D0\", \"Double Pearl Lusta\"],\n [\"FCF4DC\", \"Pearl Lusta\"],\n [\"FCF8F7\", \"Vista White\"],\n [\"FCFBF3\", \"Bianca\"],\n [\"FCFEDA\", \"Moon Glow\"],\n [\"FCFFE7\", \"China Ivory\"],\n [\"FCFFF9\", \"Ceramic\"],\n [\"FD0E35\", \"Torch Red\"],\n [\"FD5B78\", \"Wild Watermelon\"],\n [\"FD7B33\", \"Crusta\"],\n [\"FD7C07\", \"Sorbus\"],\n [\"FD9FA2\", \"Sweet Pink\"],\n [\"FDD5B1\", \"Light Apricot\"],\n [\"FDD7E4\", \"Pig Pink\"],\n [\"FDE1DC\", \"Cinderella\"],\n [\"FDE295\", \"Golden Glow\"],\n [\"FDE910\", \"Lemon\"],\n [\"FDF5E6\", \"Old Lace\"],\n [\"FDF6D3\", \"Half Colonial White\"],\n [\"FDF7AD\", \"Drover\"],\n [\"FDFEB8\", \"Pale Prim\"],\n [\"FDFFD5\", \"Cumulus\"],\n [\"FE28A2\", \"Persian Rose\"],\n [\"FE4C40\", \"Sunset Orange\"],\n [\"FE6F5E\", \"Bittersweet\"],\n [\"FE9D04\", \"California\"],\n [\"FEA904\", \"Yellow Sea\"],\n [\"FEBAAD\", \"Melon\"],\n [\"FED33C\", \"Bright Sun\"],\n [\"FED85D\", \"Dandelion\"],\n [\"FEDB8D\", \"Salomie\"],\n [\"FEE5AC\", \"Cape Honey\"],\n [\"FEEBF3\", \"Remy\"],\n [\"FEEFCE\", \"Oasis\"],\n [\"FEF0EC\", \"Bridesmaid\"],\n [\"FEF2C7\", \"Beeswax\"],\n [\"FEF3D8\", \"Bleach White\"],\n [\"FEF4CC\", \"Pipi\"],\n [\"FEF4DB\", \"Half Spanish White\"],\n [\"FEF4F8\", \"Wisp Pink\"],\n [\"FEF5F1\", \"Provincial Pink\"],\n [\"FEF7DE\", \"Half Dutch White\"],\n [\"FEF8E2\", \"Solitaire\"],\n [\"FEF8FF\", \"White Pointer\"],\n [\"FEF9E3\", \"Off Yellow\"],\n [\"FEFCED\", \"Orange White\"],\n [\"FF0000\", \"Red\"],\n [\"FF007F\", \"Rose\"],\n [\"FF00CC\", \"Purple Pizzazz\"],\n [\"FF00FF\", \"Magenta / Fuchsia\"],\n [\"FF2400\", \"Scarlet\"],\n [\"FF3399\", \"Wild Strawberry\"],\n [\"FF33CC\", \"Razzle Dazzle Rose\"],\n [\"FF355E\", \"Radical Red\"],\n [\"FF3F34\", \"Red Orange\"],\n [\"FF4040\", \"Coral Red\"],\n [\"FF4D00\", \"Vermilion\"],\n [\"FF4F00\", \"International Orange\"],\n [\"FF6037\", \"Outrageous Orange\"],\n [\"FF6600\", \"Blaze Orange\"],\n [\"FF66FF\", \"Pink Flamingo\"],\n [\"FF681F\", \"Orange\"],\n [\"FF69B4\", \"Hot Pink\"],\n [\"FF6B53\", \"Persimmon\"],\n [\"FF6FFF\", \"Blush Pink\"],\n [\"FF7034\", \"Burning Orange\"],\n [\"FF7518\", \"Pumpkin\"],\n [\"FF7D07\", \"Flamenco\"],\n [\"FF7F00\", \"Flush Orange\"],\n [\"FF7F50\", \"Coral\"],\n [\"FF8C69\", \"Salmon\"],\n [\"FF9000\", \"Pizazz\"],\n [\"FF910F\", \"West Side\"],\n [\"FF91A4\", \"Pink Salmon\"],\n [\"FF9933\", \"Neon Carrot\"],\n [\"FF9966\", \"Atomic Tangerine\"],\n [\"FF9980\", \"Vivid Tangerine\"],\n [\"FF9E2C\", \"Sunshade\"],\n [\"FFA000\", \"Orange Peel\"],\n [\"FFA194\", \"Mona Lisa\"],\n [\"FFA500\", \"Web Orange\"],\n [\"FFA6C9\", \"Carnation Pink\"],\n [\"FFAB81\", \"Hit Pink\"],\n [\"FFAE42\", \"Yellow Orange\"],\n [\"FFB0AC\", \"Cornflower Lilac\"],\n [\"FFB1B3\", \"Sundown\"],\n [\"FFB31F\", \"My Sin\"],\n [\"FFB555\", \"Texas Rose\"],\n [\"FFB7D5\", \"Cotton Candy\"],\n [\"FFB97B\", \"Macaroni and Cheese\"],\n [\"FFBA00\", \"Selective Yellow\"],\n [\"FFBD5F\", \"Koromiko\"],\n [\"FFBF00\", \"Amber\"],\n [\"FFC0A8\", \"Wax Flower\"],\n [\"FFC0CB\", \"Pink\"],\n [\"FFC3C0\", \"Your Pink\"],\n [\"FFC901\", \"Supernova\"],\n [\"FFCBA4\", \"Flesh\"],\n [\"FFCC33\", \"Sunglow\"],\n [\"FFCC5C\", \"Golden Tainoi\"],\n [\"FFCC99\", \"Peach Orange\"],\n [\"FFCD8C\", \"Chardonnay\"],\n [\"FFD1DC\", \"Pastel Pink\"],\n [\"FFD2B7\", \"Romantic\"],\n [\"FFD38C\", \"Grandis\"],\n [\"FFD700\", \"Gold\"],\n [\"FFD800\", \"School bus Yellow\"],\n [\"FFD8D9\", \"Cosmos\"],\n [\"FFDB58\", \"Mustard\"],\n [\"FFDCD6\", \"Peach Schnapps\"],\n [\"FFDDAF\", \"Caramel\"],\n [\"FFDDCD\", \"Tuft Bush\"],\n [\"FFDDCF\", \"Watusi\"],\n [\"FFDDF4\", \"Pink Lace\"],\n [\"FFDEAD\", \"Navajo White\"],\n [\"FFDEB3\", \"Frangipani\"],\n [\"FFE1DF\", \"Pippin\"],\n [\"FFE1F2\", \"Pale Rose\"],\n [\"FFE2C5\", \"Negroni\"],\n [\"FFE5A0\", \"Cream Brulee\"],\n [\"FFE5B4\", \"Peach\"],\n [\"FFE6C7\", \"Tequila\"],\n [\"FFE772\", \"Kournikova\"],\n [\"FFEAC8\", \"Sandy Beach\"],\n [\"FFEAD4\", \"Karry\"],\n [\"FFEC13\", \"Broom\"],\n [\"FFEDBC\", \"Colonial White\"],\n [\"FFEED8\", \"Derby\"],\n [\"FFEFA1\", \"Vis Vis\"],\n [\"FFEFC1\", \"Egg White\"],\n [\"FFEFD5\", \"Papaya Whip\"],\n [\"FFEFEC\", \"Fair Pink\"],\n [\"FFF0DB\", \"Peach Cream\"],\n [\"FFF0F5\", \"Lavender blush\"],\n [\"FFF14F\", \"Gorse\"],\n [\"FFF1B5\", \"Buttermilk\"],\n [\"FFF1D8\", \"Pink Lady\"],\n [\"FFF1EE\", \"Forget Me Not\"],\n [\"FFF1F9\", \"Tutu\"],\n [\"FFF39D\", \"Picasso\"],\n [\"FFF3F1\", \"Chardon\"],\n [\"FFF46E\", \"Paris Daisy\"],\n [\"FFF4CE\", \"Barley White\"],\n [\"FFF4DD\", \"Egg Sour\"],\n [\"FFF4E0\", \"Sazerac\"],\n [\"FFF4E8\", \"Serenade\"],\n [\"FFF4F3\", \"Chablis\"],\n [\"FFF5EE\", \"Seashell Peach\"],\n [\"FFF5F3\", \"Sauvignon\"],\n [\"FFF6D4\", \"Milk Punch\"],\n [\"FFF6DF\", \"Varden\"],\n [\"FFF6F5\", \"Rose White\"],\n [\"FFF8D1\", \"Baja White\"],\n [\"FFF9E2\", \"Gin Fizz\"],\n [\"FFF9E6\", \"Early Dawn\"],\n [\"FFFACD\", \"Lemon Chiffon\"],\n [\"FFFAF4\", \"Bridal Heath\"],\n [\"FFFBDC\", \"Scotch Mist\"],\n [\"FFFBF9\", \"Soapstone\"],\n [\"FFFC99\", \"Witch Haze\"],\n [\"FFFCEA\", \"Buttery White\"],\n [\"FFFCEE\", \"Island Spice\"],\n [\"FFFDD0\", \"Cream\"],\n [\"FFFDE6\", \"Chilean Heath\"],\n [\"FFFDE8\", \"Travertine\"],\n [\"FFFDF3\", \"Orchid White\"],\n [\"FFFDF4\", \"Quarter Pearl Lusta\"],\n [\"FFFEE1\", \"Half and Half\"],\n [\"FFFEEC\", \"Apricot White\"],\n [\"FFFEF0\", \"Rice Cake\"],\n [\"FFFEF6\", \"Black White\"],\n [\"FFFEFD\", \"Romance\"],\n [\"FFFF00\", \"Yellow\"],\n [\"FFFF66\", \"Laser Lemon\"],\n [\"FFFF99\", \"Pale Canary\"],\n [\"FFFFB4\", \"Portafino\"],\n [\"FFFFF0\", \"Ivory\"],\n [\"FFFFFF\", \"White\"],\n ];\n}\n\nmodule.exports = ntc;\n","/**\n * color.js\n * - extractColorsFromImage\n * - extractColorsFromImageURL\n */\nconst download = require(\"image-downloader\");\nconst path = require(\"path\");\nconst getPixels = require(\"get-pixels\");\nconst { extractColors } = require(\"extract-colors\");\nconst ntc = require(\"./ntc\");\n\nasync function extractColorsFromImageURL(url, toDirectory) {\n try {\n // lets first download the image from url\n const options = {\n url,\n dest: toDirectory, // will be saved to /path/to/dest/image.jpg\n };\n\n console.log(options);\n const { filename } = await download.image(options);\n console.log(\"downloaded \", filename);\n\n // now we can go ahead and get the pixels from the image\n getPixels(filename, (err, pixels) => {\n if (!err) {\n const data = [...pixels.data];\n const [width, height] = pixels.shape;\n\n extractColors({ data, width, height })\n .then((result) => {\n console.log(result);\n const n = new ntc();\n const arr = result.map((c) => {\n const name = n.name(c.hex);\n c.colorName = name;\n return c;\n });\n console.log(arr);\n })\n .catch(console.log);\n }\n });\n } catch (e) {\n throw new Error(e);\n }\n}\n\nmodule.exports = { extractColorsFromImageURL };\n","const { app } = require(\"electron\");\nvar fs = require(\"fs\");\nconst path = require(\"path\");\nconst events = require(\"../events\");\nconst { getFileContents, writeToFile } = require(\"../utils/file\");\n\n// Convert Json to Csv\nconst ObjectsToCsv = require(\"objects-to-csv\");\nconst Transform = require(\"../utils/transform\");\nconst { extractColorsFromImageURL } = require(\"../utils/color\");\nconst https = require(\"https\");\n\nconst configFilename = \"data.json\";\nconst appName = \"Dashboard\";\n\nconst dataController = {\n /**\n * saveLayout\n * Create a workspace from a json configuration object (no template)\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n * @param {object} pageObject the page config object\n */\n convertJsonToCsvFile: (win, appId, jsonObject, toFilename = \"test.csv\") => {\n try {\n // filename to the pages file (live pages)\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n \"data\",\n toFilename\n );\n\n // make sure the file exists...\n const fileContents = getFileContents(filename, \"\");\n\n const csv = new ObjectsToCsv(jsonObject);\n\n csv.toDisk(filename)\n .then((result) => {\n win.webContents.send(\n events.DATA_JSON_TO_CSV_FILE_COMPLETE,\n {\n succes: true,\n result,\n filename,\n }\n );\n })\n .catch((e) =>\n win.webContents.send(events.DATA_JSON_TO_CSV_FILE_ERROR, {\n error: e.message,\n })\n );\n } catch (e) {\n win.webContents.send(events.DATA_JSON_TO_CSV_FILE_ERROR, {\n error: e.message,\n });\n }\n },\n\n /**\n * convertJsonToCsvString\n * @param {BrowserWindow} win\n * @param {*} jsonObject array of json objects\n */\n convertJsonToCsvString: (win, jsonObject = []) => {\n try {\n const csv = new ObjectsToCsv(jsonObject);\n csv.toString(filename)\n .then((result) => {\n win.webContents.send(\n events.DATA_JSON_TO_CSV_STRING_COMPLETE,\n {\n succes: true,\n csvString: result,\n }\n );\n })\n .catch((e) =>\n win.webContents.send(events.DATA_JSON_TO_CSV_STRING_ERROR, {\n error: e.message,\n })\n );\n } catch (e) {\n win.webContents.send(events.DATA_JSON_TO_CSV_STRING_ERROR, {\n error: e.message,\n });\n }\n },\n\n readLinesFromFile: (win, filepath, lineCount) => {\n try {\n const t = new Transform();\n t.readLinesFromFile(\n win,\n filepath,\n lineCount,\n events.READ_LINES_UPDATE\n )\n .then((res) => {\n win.webContents.send(events.READ_LINES_COMPLETE, {\n success: true,\n filepath,\n lineCount,\n lines: res,\n });\n })\n .catch((e) => {\n //console.log(e);\n win.webContents.send(events.READ_LINES_ERROR, {\n error: e.message,\n });\n });\n } catch (error) {\n win.webContents.send(events.READ_LINES_ERROR, {\n error: e.message,\n });\n }\n },\n\n readJSONFromFile: (win, filepath, objectCount = null) => {\n try {\n console.log(\"reading json from file \", filepath, objectCount);\n const t = new Transform();\n t.readJSONFromFile(\n win,\n filepath,\n objectCount,\n events.READ_JSON_UPDATE\n )\n .then((res) => {\n win.webContents.send(events.READ_JSON_COMPLETE, {\n success: true,\n filepath,\n });\n })\n .catch((e) => {\n //console.log(e);\n win.webContents.send(events.READ_JSON_ERROR, {\n error: e.message,\n });\n });\n } catch (error) {\n console.log(error);\n win.webContents.send(events.READ_JSON_ERROR, {\n error: e.message,\n });\n }\n },\n\n readDataFromURL: (win, url, toFilepath) => {\n try {\n // Validate URL is https protocol only\n let parsedUrl;\n try {\n parsedUrl = new URL(url);\n } catch {\n throw new Error(\"Invalid URL provided\");\n }\n if (parsedUrl.protocol !== \"https:\") {\n throw new Error(\n \"Only HTTPS URLs are allowed, got: \" + parsedUrl.protocol\n );\n }\n\n // Validate toFilepath is within the app data directory\n const appDataDir = path.join(app.getPath(\"userData\"), appName);\n const resolvedFilepath = path.resolve(toFilepath);\n if (!resolvedFilepath.startsWith(appDataDir + path.sep)) {\n throw new Error(\n \"File path must be within the application data directory\"\n );\n }\n\n const writeStream = fs.createWriteStream(resolvedFilepath);\n\n https\n .get(url, (resp) => {\n resp.on(\"data\", (chunk) => {\n writeStream.write(chunk);\n });\n\n resp.on(\"end\", () => {\n win.webContents.send(events.READ_DATA_URL_COMPLETE, {\n success: true,\n toFilepath: resolvedFilepath,\n });\n });\n })\n .on(\"error\", (err) => {\n win.webContents.send(events.READ_DATA_URL_ERROR, {\n error: err.message,\n });\n });\n } catch (error) {\n console.log(error);\n win.webContents.send(events.READ_DATA_URL_ERROR, {\n error: error.message,\n });\n }\n },\n\n /**\n * parseXMLStream\n * @param {*} filepath\n * @param {*} outpath\n * @param {*} start\n * @param {*} recordNode\n * @param {*} objectIdKey\n */\n parseXMLStream: (\n win,\n filepath,\n outpath,\n start,\n recordNode = null,\n objectIdKey = null\n ) => {\n try {\n const t = new Transform();\n t.parseXMLStream(\n filepath,\n outpath,\n start\n // recordNode,\n // objectIdKey,\n // win,\n // events.PARSE_XML_STREAM_UPDATE\n )\n .then((res) => {\n win.webContents.send(events.PARSE_XML_STREAM_COMPLETE, {\n success: true,\n filepath,\n outpath,\n });\n })\n .catch((e) => {\n console.log(e);\n win.webContents.send(events.PARSE_XML_STREAM_ERROR, {\n error: e.message,\n });\n });\n } catch (e) {\n win.webContents.send(events.PARSE_XML_STREAM_ERROR, {\n error: e.message,\n });\n }\n },\n\n /**\n * parseCSVStream\n * @param {*} win\n * @param {*} filepath\n * @param {*} outpath\n * @param {*} delimiter\n * @param {*} objectIdKey\n * @param {Array} headers optional array of headers to choose from the file\n */\n parseCSVStream: (\n win,\n filepath,\n outpath,\n delimiter = \",\",\n objectIdKey = null,\n headers = null,\n limit = null\n ) => {\n try {\n const t = new Transform();\n t.parseCSVStream(\n filepath,\n outpath,\n delimiter,\n objectIdKey,\n headers,\n win,\n events.PARSE_CSV_STREAM_UPDATE,\n limit\n )\n .then((res) => {\n win.webContents.send(events.PARSE_CSV_STREAM_COMPLETE, {\n success: true,\n filepath,\n outpath,\n });\n })\n .catch((e) => {\n console.log(e);\n win.webContents.send(events.PARSE_CSV_STREAM_ERROR, {\n error: e.message,\n });\n });\n } catch (e) {\n win.webContents.send(events.PARSE_CSV_STREAM_ERROR, {\n error: e.message,\n });\n }\n },\n /**\n * saveToFile\n *\n * This will save to the /appName/data directory\n * We want this to happen so that all of the data is accessible regardless of the appId\n * Is this the correct behavior?\n *\n * @param {*} win\n * @param {*} data\n * @param {*} filename\n * @param {*} append\n * @param {*} returnEmpty\n */\n saveToFile: (win, data, filename, append, returnEmpty = {}) => {\n try {\n if (data) {\n // filename to the pages file (live pages)\n const toFilename = path.join(\n app.getPath(\"userData\"),\n appName,\n \"data\",\n filename\n );\n\n //console.log(\"saving to file \", toFilename);\n\n // // call this to make sure the directory structure exists\n let fileContents = getFileContents(toFilename, returnEmpty);\n if (fileContents === null || fileContents === \"\") {\n fileContents = JSON.stringify(returnEmpty);\n }\n\n // timestamp\n const stamp = Date.now();\n\n let writeContents = null;\n\n if (append === true) {\n // append data\n if (JSON.stringify(returnEmpty) === \"{}\") {\n const tempWriteContents = JSON.parse(fileContents);\n tempWriteContents[stamp] = data;\n writeContents = JSON.stringify(tempWriteContents);\n writeToFile(toFilename, writeContents);\n }\n\n if (JSON.stringify(returnEmpty) === \"[]\") {\n const tempWriteContents = JSON.parse(fileContents);\n tempWriteContents.push({ [stamp]: data });\n writeContents = JSON.stringify(tempWriteContents);\n // writeContents = JSON.parse(fileContents);\n // writeContents.push({ [stamp]: data });\n writeToFile(toFilename, writeContents);\n }\n } else {\n // overwrite existing\n writeContents = JSON.stringify(data);\n if (JSON.stringify(returnEmpty) === \"{}\") {\n writeToFile(\n toFilename,\n writeContents\n // JSON.stringify({ [stamp]: data })\n );\n }\n if (JSON.stringify(returnEmpty) === \"[]\") {\n writeToFile(\n toFilename,\n writeContents\n // JSON.stringify([{ [stamp]: data }])\n );\n }\n }\n\n // console.log(events.DATA_SAVE_TO_FILE_COMPLETE, {\n // success: true,\n // filename: toFilename,\n // fileContents,\n // });\n\n win.webContents.send(events.DATA_SAVE_TO_FILE_COMPLETE, {\n success: true,\n filename: toFilename,\n fileContents: JSON.parse(writeContents),\n });\n }\n } catch (e) {\n console.log(e);\n win.webContents.send(events.DATA_SAVE_TO_FILE_ERROR, {\n success: false,\n filename: filename,\n message: e.message,\n });\n }\n },\n\n readFromFile: (win, filename, returnIfEmpty = {}) => {\n try {\n if (filename) {\n // filename to the pages file (live pages)\n const fromFilename = path.join(\n app.getPath(\"userData\"),\n appName,\n \"data\",\n filename\n );\n console.log(\"reading from file \", fromFilename, returnIfEmpty);\n // make sure the file exists...\n const fileContents = getFileContents(\n fromFilename,\n returnIfEmpty\n );\n\n console.log(\"file contents \", fileContents, fromFilename);\n\n win.webContents.send(events.DATA_READ_FROM_FILE_COMPLETE, {\n succes: true,\n filename: fromFilename,\n data: JSON.stringify(fileContents),\n });\n }\n } catch (e) {\n win.webContents.send(events.DATA_READ_FROM_FILE_ERROR, {\n succes: false,\n message: e.message,\n });\n }\n },\n\n /**\n * transformFile\n * Transform the file from one format to another using the provided mapping function block\n * and arguments that are optional (default - refObj, index)\n * @param {*} win\n * @param {*} filepath\n * @param {*} outFilepath\n * @param {*} mappingFunctionBody\n * @param {*} args\n */\n transformFile: (\n win,\n filepath,\n outFilepath,\n mappingFunctionBody,\n args = [\"refObj\", \"index\"]\n ) => {\n try {\n const t = new Transform();\n t.transformFileToFile(\n win,\n filepath,\n outFilepath,\n mappingFunctionBody,\n args,\n events.TRANSFORM_FILE_UPDATE\n )\n .then((result) => {\n win.webContents.send(events.TRANSFORM_FILE_COMPLETE, {\n succes: true,\n filename: filepath,\n toFilename: outFilepath,\n });\n })\n .catch((e) => {\n win.webContents.send(events.TRANSFORM_FILE_ERROR, {\n succes: false,\n message: e.message,\n });\n });\n } catch (e) {\n win.webContents.send(events.TRANSFORM_FILE_ERROR, {\n succes: false,\n message: e.message,\n });\n }\n },\n\n extractColorsFromImageURL: (win, url) => {\n try {\n console.log(url);\n const fileExtension = \".jpg\";\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n \"@algolia/dash-electron\",\n \"data\",\n \"imageExtract\" + fileExtension\n );\n\n console.log(\"filename\", filename);\n\n extractColorsFromImageURL(url, filename)\n .then((result) => console.log(result))\n .catch((e) => console.log(e));\n } catch (e) {\n console.log(e);\n }\n },\n};\n\nmodule.exports = dataController;\n","/**\n * settingsController\n */\n\nconst { app } = require(\"electron\");\nconst path = require(\"path\");\nconst fs = require(\"fs\");\nconst events = require(\"../events\");\nconst { getFileContents, writeToFile } = require(\"../utils/file\");\n\nconst configFilename = \"settings.json\";\nconst appName = \"Dashboard\";\n\n// Helper function to recursively copy directory\nfunction copyDirectory(source, destination) {\n if (!fs.existsSync(destination)) {\n fs.mkdirSync(destination, { recursive: true });\n }\n\n const files = fs.readdirSync(source);\n for (const file of files) {\n const srcPath = path.join(source, file);\n const destPath = path.join(destination, file);\n const stat = fs.lstatSync(srcPath);\n\n // Skip symlinks to prevent following links to sensitive files\n if (stat.isSymbolicLink()) {\n console.warn(`[settingsController] Skipping symlink: ${srcPath}`);\n continue;\n }\n\n if (stat.isDirectory()) {\n copyDirectory(srcPath, destPath);\n } else {\n fs.copyFileSync(srcPath, destPath);\n }\n }\n}\n\nconst settingsController = {\n /**\n * saveSettingsForApplication\n * Save the settings object to a file (settings.json)\n * @param {BrowserWindow} win\n * @param {Object} data the settings object to be saved\n */\n saveSettingsForApplication: (win, data) => {\n try {\n if (data) {\n // <appId>/settings.json\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n configFilename\n );\n writeToFile(filename, JSON.stringify(data, null, 2));\n console.log(\"[settingsController] Settings saved successfully\");\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n success: true,\n settings: data,\n };\n } else {\n return {\n error: true,\n message: \"No Settings Data provided\",\n };\n }\n } catch (e) {\n console.error(\"[settingsController] Error saving settings:\", e);\n return {\n error: true,\n message: e.message,\n };\n }\n },\n\n /**\n * getSettingsForApplication\n * Get the settings for the entire application, not application ID specific\n * We can write different settings into this file but save ALL into one object.\n * @param {BrowserWindow} win\n */\n getSettingsForApplication: (win) => {\n try {\n // <appId>/settings.json\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n configFilename\n );\n // make sure the file exists...\n const fileContents = getFileContents(filename, {});\n console.log(\"[settingsController] Settings loaded successfully\");\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n success: true,\n settings: fileContents,\n };\n } catch (e) {\n console.error(\"[settingsController] Error loading settings:\", e);\n return {\n error: true,\n message: e.message,\n settings: {},\n };\n }\n },\n\n /**\n * getDataDirectory\n * Get the current user data directory path\n * Returns the default if not set by user\n * @param {BrowserWindow} win\n */\n getDataDirectory: (win) => {\n try {\n const settingsPath = path.join(\n app.getPath(\"userData\"),\n appName,\n configFilename\n );\n const settings = getFileContents(settingsPath, {});\n const userDataDir =\n settings.userDataDirectory ||\n path.join(app.getPath(\"userData\"), appName);\n\n console.log(\n \"[settingsController] Data directory retrieved successfully\"\n );\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n success: true,\n dataDirectory: userDataDir,\n isDefault: !settings.userDataDirectory,\n };\n } catch (e) {\n console.error(\n \"[settingsController] Error getting data directory:\",\n e\n );\n return {\n error: true,\n message: e.message,\n };\n }\n },\n\n /**\n * setDataDirectory\n * Validate and set a new user data directory\n * @param {BrowserWindow} win\n * @param {String} newPath the new directory path\n */\n setDataDirectory: (win, newPath) => {\n try {\n // Validate the path exists and is a directory\n if (!fs.existsSync(newPath)) {\n fs.mkdirSync(newPath, { recursive: true });\n }\n\n const stats = fs.statSync(newPath);\n if (!stats.isDirectory()) {\n throw new Error(\"Path is not a directory\");\n }\n\n // Update settings\n const settingsPath = path.join(\n app.getPath(\"userData\"),\n appName,\n configFilename\n );\n const settings = getFileContents(settingsPath, {});\n settings.userDataDirectory = newPath;\n writeToFile(settingsPath, JSON.stringify(settings, null, 2));\n\n console.log(\"[settingsController] Data directory set successfully\");\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n success: true,\n dataDirectory: newPath,\n };\n } catch (e) {\n console.error(\n \"[settingsController] Error setting data directory:\",\n e\n );\n return {\n error: true,\n message: e.message,\n };\n }\n },\n\n /**\n * migrateDataDirectory\n * Copy all files from old data directory to new one\n * @param {BrowserWindow} win\n * @param {String} oldPath the old directory path\n * @param {String} newPath the new directory path\n */\n migrateDataDirectory: (win, oldPath, newPath) => {\n try {\n // Resolve paths to prevent traversal\n const resolvedOldPath = path.resolve(oldPath);\n const resolvedNewPath = path.resolve(newPath);\n\n // Validate oldPath is the current configured data directory\n const settingsCheckPath = path.join(\n app.getPath(\"userData\"),\n appName,\n configFilename\n );\n const currentSettings = getFileContents(settingsCheckPath, {});\n const currentDataDir =\n currentSettings.userDataDirectory ||\n path.join(app.getPath(\"userData\"), appName);\n if (resolvedOldPath !== path.resolve(currentDataDir)) {\n throw new Error(\n \"Source path must be the current data directory\"\n );\n }\n\n // Block system directories as targets\n const blockedPrefixes = [\n \"/System\",\n \"/usr\",\n \"/bin\",\n \"/etc\",\n \"/var\",\n \"/sbin\",\n \"/lib\",\n ];\n for (const prefix of blockedPrefixes) {\n if (\n resolvedNewPath.startsWith(prefix + \"/\") ||\n resolvedNewPath === prefix\n ) {\n throw new Error(\n \"Cannot migrate to a system directory: \" + prefix\n );\n }\n }\n\n // Validate paths\n if (!fs.existsSync(resolvedOldPath)) {\n throw new Error(\"Source directory does not exist\");\n }\n\n if (!fs.existsSync(resolvedNewPath)) {\n fs.mkdirSync(resolvedNewPath, { recursive: true });\n }\n\n // Copy files\n copyDirectory(resolvedOldPath, resolvedNewPath);\n\n // Update settings to use new path\n const settingsPath = path.join(\n app.getPath(\"userData\"),\n appName,\n configFilename\n );\n const settings = getFileContents(settingsPath, {});\n settings.userDataDirectory = resolvedNewPath;\n writeToFile(settingsPath, JSON.stringify(settings, null, 2));\n\n console.log(\n \"[settingsController] Data directory migrated successfully\"\n );\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n success: true,\n oldDirectory: resolvedOldPath,\n newDirectory: resolvedNewPath,\n };\n } catch (e) {\n console.error(\n \"[settingsController] Error migrating data directory:\",\n e\n );\n return {\n error: true,\n message: e.message,\n };\n }\n },\n};\n\nmodule.exports = settingsController;\n","/**\n * providerController.js\n *\n * Handle provider (credentials) management with encryption\n * Saves encrypted credentials to ~/.userData/Dashboard/{appId}/providers.json\n */\nconst { app, safeStorage } = require(\"electron\");\nconst path = require(\"path\");\nconst { writeFileSync } = require(\"fs\");\nconst {\n ensureDirectoryExistence,\n getFileContents,\n writeToFile,\n} = require(\"../utils/file\");\n\nconst appName = \"Dashboard\";\nconst configFilename = \"providers.json\";\n\nconst providerController = {\n /**\n * saveProvider\n * Save a new provider with encrypted credentials\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n * @param {string} providerName user-defined name (e.g., \"Algolia Production\")\n * @param {string} providerType provider type (e.g., \"algolia\", \"slack\")\n * @param {object} credentials credentials object\n * @param {string} providerClass \"credential\" (default) or \"mcp\"\n * @param {object} mcpConfig MCP server config (transport, command, args, envMapping) - only for providerClass \"mcp\"\n */\n saveProvider: (\n win,\n appId,\n providerName,\n providerType,\n credentials,\n providerClass = \"credential\",\n mcpConfig = null\n ) => {\n try {\n // Build file path\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename\n );\n\n // Ensure directory exists\n ensureDirectoryExistence(filename);\n\n // Load existing providers\n const providers = getFileContents(filename, {});\n\n // Encrypt credentials\n const credentialsJson = JSON.stringify(credentials);\n const encryptedCredentials =\n safeStorage.encryptString(credentialsJson);\n\n // Add/update provider\n const providerEntry = {\n type: providerType,\n providerClass: providerClass || \"credential\",\n credentials: encryptedCredentials.toString(\"base64\"),\n dateCreated:\n providers[providerName]?.dateCreated ||\n new Date().toISOString(),\n dateUpdated: new Date().toISOString(),\n };\n\n // Add mcpConfig for MCP providers\n if (providerClass === \"mcp\" && mcpConfig) {\n providerEntry.mcpConfig = mcpConfig;\n }\n\n providers[providerName] = providerEntry;\n\n // Save to file with restrictive permissions (owner read/write only)\n writeFileSync(filename, JSON.stringify(providers, null, 2), {\n mode: 0o600,\n });\n\n console.log(\n `[providerController] Provider saved: ${providerName} (${providerType}, ${providerClass})`\n );\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n success: true,\n providerName,\n providerType,\n providerClass,\n };\n } catch (error) {\n console.error(\"[providerController] Error saving provider:\", error);\n return {\n error: true,\n message: error.message,\n };\n }\n },\n\n /**\n * listProviders\n * Get list of all providers with decrypted credentials\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n */\n listProviders: (win, appId) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename\n );\n\n // Load providers file\n const providersData = getFileContents(filename, {});\n\n // Decrypt all credentials\n const decryptedProviders = [];\n Object.entries(providersData).forEach(([name, data]) => {\n try {\n const credentialsBuffer = Buffer.from(\n data.credentials,\n \"base64\"\n );\n const decryptedJson =\n safeStorage.decryptString(credentialsBuffer);\n const credentials = JSON.parse(decryptedJson);\n\n const provider = {\n name,\n type: data.type,\n providerClass: data.providerClass || \"credential\",\n credentials,\n dateCreated: data.dateCreated,\n dateUpdated: data.dateUpdated,\n };\n\n // Include mcpConfig for MCP providers\n if (data.mcpConfig) {\n provider.mcpConfig = data.mcpConfig;\n }\n\n decryptedProviders.push(provider);\n } catch (decryptError) {\n console.error(\n `[providerController] Failed to decrypt provider ${name}:`,\n decryptError\n );\n // Skip this provider if decryption fails\n }\n });\n\n console.log(\n `[providerController] Loaded ${decryptedProviders.length} providers`\n );\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n providers: decryptedProviders,\n };\n } catch (error) {\n console.error(\n \"[providerController] Error listing providers:\",\n error\n );\n return {\n error: true,\n message: error.message,\n providers: [],\n };\n }\n },\n\n /**\n * getProvider\n * Get a specific provider by name with decrypted credentials\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n * @param {string} providerName the provider name to retrieve\n */\n getProvider: (win, appId, providerName) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename\n );\n\n // Load providers file\n const providersData = getFileContents(filename, {});\n\n // Find and decrypt the specific provider\n const providerData = providersData[providerName];\n if (!providerData) {\n throw new Error(`Provider not found: ${providerName}`);\n }\n\n const credentialsBuffer = Buffer.from(\n providerData.credentials,\n \"base64\"\n );\n const decryptedJson = safeStorage.decryptString(credentialsBuffer);\n const credentials = JSON.parse(decryptedJson);\n\n const provider = {\n name: providerName,\n type: providerData.type,\n providerClass: providerData.providerClass || \"credential\",\n credentials,\n dateCreated: providerData.dateCreated,\n dateUpdated: providerData.dateUpdated,\n };\n\n // Include mcpConfig for MCP providers\n if (providerData.mcpConfig) {\n provider.mcpConfig = providerData.mcpConfig;\n }\n\n console.log(\n `[providerController] Provider retrieved: ${providerName}`\n );\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n provider,\n };\n } catch (error) {\n console.error(\n \"[providerController] Error getting provider:\",\n error\n );\n return {\n error: true,\n message: error.message,\n };\n }\n },\n\n /**\n * deleteProvider\n * Delete a provider from the providers file\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n * @param {string} providerName the provider name to delete\n */\n deleteProvider: (win, appId, providerName) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename\n );\n\n // Load existing providers\n const providers = getFileContents(filename, {});\n\n // Delete the provider\n if (!providers.hasOwnProperty(providerName)) {\n throw new Error(`Provider not found: ${providerName}`);\n }\n\n delete providers[providerName];\n\n // Save to file with restrictive permissions (owner read/write only)\n writeFileSync(filename, JSON.stringify(providers, null, 2), {\n mode: 0o600,\n });\n\n console.log(\n `[providerController] Provider deleted: ${providerName}`\n );\n\n // Return the data for ipcMain.handle() - modern promise-based approach\n return {\n success: true,\n providerName,\n };\n } catch (error) {\n console.error(\n \"[providerController] Error deleting provider:\",\n error\n );\n return {\n error: true,\n message: error.message,\n };\n }\n },\n};\n\nmodule.exports = providerController;\n","const { app } = require(\"electron\");\nconst path = require(\"path\");\nconst { writeFileSync } = require(\"fs\");\nconst events = require(\"../events\");\nconst { getFileContents } = require(\"../utils/file\");\n\nconst configFilename = \"layouts.json\";\nconst appName = \"Dashboard\";\n\nconst layoutController = {\n /**\n * saveLayout\n * Create a workspace from a json configuration object (no template)\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id\n * @param {object} pageObject the page config object\n */\n saveLayoutForApplication: (win, appId, layoutObject) => {\n try {\n // filename to the pages file (live pages)\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename\n );\n const layoutsArray = getFileContents(filename);\n\n // add the pageObject to the pages file\n layoutsArray.push(layoutObject);\n\n // write the new pages configuration back to the file\n writeFileSync(filename, JSON.stringify(layoutsArray, null, 2));\n\n // message the renderer\n win.webContents.send(events.LAYOUT_SAVE_COMPLETE, {\n layouts: layoutsArray,\n });\n } catch (e) {\n win.webContents.send(events.LAYOUT_SAVE_ERROR, {\n error: e.message,\n });\n }\n },\n\n /**\n *\n *\n * @param {BrowserWindow} win the main window\n * @param {string} appId the application id from Algolia\n */\n listLayoutsForApplication: (win, appId) => {\n try {\n const filename = path.join(\n app.getPath(\"userData\"),\n appName,\n appId,\n configFilename\n );\n const layoutsArray = getFileContents(filename);\n win.webContents.send(events.LAYOUT_LIST_COMPLETE, {\n layouts: layoutsArray,\n });\n } catch (e) {\n win.webContents.send(events.LAYOUT_LIST_COMPLETE, {\n error: true,\n message: e.message,\n });\n }\n },\n};\n\nmodule.exports = layoutController;\n","/**\n * mcpController.js\n *\n * Manages MCP (Model Context Protocol) server lifecycle in the main process.\n * Handles starting/stopping MCP servers, calling tools, listing tools/resources.\n *\n * Supports two transport types:\n * - stdio: spawns a local child process (e.g., npx -y @algolia/mcp)\n * - streamable_http: connects to a remote HTTP endpoint (e.g., https://mcp.us.algolia.com/...)\n *\n * Uses @modelcontextprotocol/sdk for protocol handling.\n */\nconst { Client } = require(\"@modelcontextprotocol/sdk/client/index.js\");\nconst {\n StdioClientTransport,\n} = require(\"@modelcontextprotocol/sdk/client/stdio.js\");\nconst {\n StreamableHTTPClientTransport,\n} = require(\"@modelcontextprotocol/sdk/client/streamableHttp.js\");\nconst path = require(\"path\");\nconst fs = require(\"fs\");\n\n/**\n * Active MCP server connections\n * Map<string, { client: Client, transport: Transport, tools: Array, status: string }>\n */\nconst activeServers = new Map();\n\n/**\n * In-flight start promises for deduplication.\n * Prevents multiple simultaneous startServer calls for the same server\n * from spawning duplicate processes (e.g., 4 widgets all calling startServer(\"Slack\")).\n * Map<string, Promise<result>>\n */\nconst pendingStarts = new Map();\n\n/**\n * MCP Server status constants\n */\nconst STATUS = {\n DISCONNECTED: \"disconnected\",\n CONNECTING: \"connecting\",\n CONNECTED: \"connected\",\n ERROR: \"error\",\n};\n\n/**\n * Interpolate {{fieldName}} placeholders in a string with credential values.\n * Used for streamable_http URL and header templates.\n *\n * @param {string} template - String containing {{fieldName}} placeholders\n * @param {object} credentials - Credential values to interpolate\n * @returns {string} Interpolated string\n */\nfunction interpolate(template, credentials) {\n if (!template || !credentials) return template;\n return template.replace(/\\{\\{(\\w+)\\}\\}/g, (match, key) => {\n return credentials[key] !== undefined ? credentials[key] : match;\n });\n}\n\nconst mcpController = {\n /**\n * startServer\n * Start an MCP server with the given config and credentials\n *\n * @param {BrowserWindow} win the main window\n * @param {string} serverName unique name for this server instance\n * @param {object} mcpConfig { transport, command, args, envMapping }\n * @param {object} credentials decrypted credentials object\n * @returns {{ success, serverName, tools, status } | { error, message }}\n */\n startServer: async (win, serverName, mcpConfig, credentials) => {\n // 1. Already connected? Return existing connection\n const existing = activeServers.get(serverName);\n if (\n existing &&\n existing.status === STATUS.CONNECTED &&\n existing.client\n ) {\n console.log(\n `[mcpController] Server already connected: ${serverName}`\n );\n return {\n success: true,\n serverName,\n tools: existing.tools,\n resources: existing.resources,\n status: STATUS.CONNECTED,\n };\n }\n\n // 2. Already starting? Piggyback on the pending promise\n if (pendingStarts.has(serverName)) {\n console.log(\n `[mcpController] Server already starting, deduplicating: ${serverName}`\n );\n return pendingStarts.get(serverName);\n }\n\n // 3. Fresh start — wrap in a promise and track it\n const startPromise = (async () => {\n try {\n // Stop if in stale/error state\n if (activeServers.has(serverName)) {\n await mcpController.stopServer(win, serverName);\n }\n\n console.log(\n `[mcpController] Starting server: ${serverName} (transport: ${\n mcpConfig.transport || \"stdio\"\n })`\n );\n\n // Create transport based on type\n let transport;\n if (mcpConfig.transport === \"streamable_http\") {\n // Remote HTTP transport - connect to a hosted MCP server\n const url = interpolate(mcpConfig.url, credentials);\n if (!url) {\n throw new Error(\n \"Streamable HTTP transport requires a URL\"\n );\n }\n\n // Build request headers from headerTemplate\n const headers = {};\n if (mcpConfig.headerTemplate && credentials) {\n Object.entries(mcpConfig.headerTemplate).forEach(\n ([headerName, template]) => {\n headers[headerName] = interpolate(\n template,\n credentials\n );\n }\n );\n }\n\n transport = new StreamableHTTPClientTransport(\n new URL(url),\n {\n requestInit: {\n headers,\n },\n }\n );\n } else {\n // stdio transport (default) - spawn a local child process\n const env = { ...process.env };\n if (mcpConfig.envMapping && credentials) {\n Object.entries(mcpConfig.envMapping).forEach(\n ([envVar, credentialKey]) => {\n if (credentials[credentialKey] !== undefined) {\n env[envVar] = credentials[credentialKey];\n }\n }\n );\n }\n\n transport = new StdioClientTransport({\n command: mcpConfig.command,\n args: mcpConfig.args || [],\n env,\n });\n }\n\n // Update status to connecting\n activeServers.set(serverName, {\n client: null,\n transport,\n tools: [],\n resources: [],\n status: STATUS.CONNECTING,\n });\n\n // Create MCP client\n const client = new Client({\n name: \"dash\",\n version: \"1.0.0\",\n });\n\n // Connect to the server\n await client.connect(transport);\n\n // List available tools\n let tools = [];\n try {\n const toolsResult = await client.listTools();\n tools = toolsResult.tools || [];\n } catch (toolsError) {\n console.warn(\n `[mcpController] Could not list tools for ${serverName}:`,\n toolsError.message\n );\n }\n\n // List available resources\n let resources = [];\n try {\n const resourcesResult = await client.listResources();\n resources = resourcesResult.resources || [];\n } catch (resourcesError) {\n // Resources are optional, many servers don't support them\n }\n\n // Store the active connection\n activeServers.set(serverName, {\n client,\n transport,\n tools,\n resources,\n status: STATUS.CONNECTED,\n });\n\n console.log(\n `[mcpController] Server connected: ${serverName} (${tools.length} tools, ${resources.length} resources)`\n );\n\n return {\n success: true,\n serverName,\n tools,\n resources,\n status: STATUS.CONNECTED,\n };\n } catch (error) {\n console.error(\n `[mcpController] Error starting server ${serverName}:`,\n error\n );\n\n // Mark as error state\n activeServers.set(serverName, {\n client: null,\n transport: null,\n tools: [],\n resources: [],\n status: STATUS.ERROR,\n error: error.message,\n });\n\n return {\n error: true,\n message: error.message,\n serverName,\n status: STATUS.ERROR,\n };\n } finally {\n pendingStarts.delete(serverName);\n }\n })();\n\n pendingStarts.set(serverName, startPromise);\n return startPromise;\n },\n\n /**\n * stopServer\n * Stop a running MCP server\n *\n * @param {BrowserWindow} win the main window\n * @param {string} serverName the server to stop\n * @returns {{ success, serverName } | { error, message }}\n */\n stopServer: async (win, serverName) => {\n try {\n // Wait for any in-flight start to finish before stopping\n if (pendingStarts.has(serverName)) {\n try {\n await pendingStarts.get(serverName);\n } catch (e) {\n /* stopping anyway */\n }\n }\n\n const server = activeServers.get(serverName);\n if (!server) {\n return {\n success: true,\n serverName,\n message: \"Server was not running\",\n };\n }\n\n console.log(`[mcpController] Stopping server: ${serverName}`);\n\n // Close the client connection\n if (server.client) {\n try {\n await server.client.close();\n } catch (closeError) {\n console.warn(\n `[mcpController] Error closing client for ${serverName}:`,\n closeError.message\n );\n }\n }\n\n activeServers.delete(serverName);\n\n console.log(`[mcpController] Server stopped: ${serverName}`);\n\n return {\n success: true,\n serverName,\n };\n } catch (error) {\n console.error(\n `[mcpController] Error stopping server ${serverName}:`,\n error\n );\n // Clean up anyway\n activeServers.delete(serverName);\n return {\n error: true,\n message: error.message,\n };\n }\n },\n\n /**\n * callTool\n * Call a tool on a running MCP server\n *\n * @param {BrowserWindow} win the main window\n * @param {string} serverName the server to call the tool on\n * @param {string} toolName the tool to call\n * @param {object} args arguments for the tool\n * @param {Array<string>} allowedTools optional whitelist of allowed tool names\n * @returns {{ result } | { error, message }}\n */\n callTool: async (win, serverName, toolName, args, allowedTools = null) => {\n try {\n const server = activeServers.get(serverName);\n if (!server || !server.client) {\n throw new Error(`Server not connected: ${serverName}`);\n }\n\n // Enforce tool scoping if allowedTools is specified\n if (allowedTools && !allowedTools.includes(toolName)) {\n throw new Error(\n `Tool \"${toolName}\" is not in the allowed tools list for this widget. Allowed: ${allowedTools.join(\n \", \"\n )}`\n );\n }\n\n console.log(\n `[mcpController] Calling tool: ${serverName}/${toolName}`\n );\n\n const result = await server.client.callTool({\n name: toolName,\n arguments: args || {},\n });\n\n return {\n success: true,\n result,\n };\n } catch (error) {\n console.error(\n `[mcpController] Error calling tool ${serverName}/${toolName}:`,\n error\n );\n return {\n error: true,\n message: error.message,\n };\n }\n },\n\n /**\n * listTools\n * List available tools for a running MCP server\n *\n * @param {BrowserWindow} win the main window\n * @param {string} serverName the server name\n * @returns {{ tools } | { error, message }}\n */\n listTools: async (win, serverName) => {\n try {\n const server = activeServers.get(serverName);\n if (!server || !server.client) {\n throw new Error(`Server not connected: ${serverName}`);\n }\n\n // Refresh tool list from server\n const toolsResult = await server.client.listTools();\n const tools = toolsResult.tools || [];\n\n // Update cached tools\n server.tools = tools;\n\n return {\n success: true,\n tools,\n };\n } catch (error) {\n console.error(\n `[mcpController] Error listing tools for ${serverName}:`,\n error\n );\n return {\n error: true,\n message: error.message,\n };\n }\n },\n\n /**\n * listResources\n * List available resources for a running MCP server\n *\n * @param {BrowserWindow} win the main window\n * @param {string} serverName the server name\n * @returns {{ resources } | { error, message }}\n */\n listResources: async (win, serverName) => {\n try {\n const server = activeServers.get(serverName);\n if (!server || !server.client) {\n throw new Error(`Server not connected: ${serverName}`);\n }\n\n const resourcesResult = await server.client.listResources();\n const resources = resourcesResult.resources || [];\n\n // Update cached resources\n server.resources = resources;\n\n return {\n success: true,\n resources,\n };\n } catch (error) {\n console.error(\n `[mcpController] Error listing resources for ${serverName}:`,\n error\n );\n return {\n error: true,\n message: error.message,\n };\n }\n },\n\n /**\n * readResource\n * Read a specific resource from a running MCP server\n *\n * @param {BrowserWindow} win the main window\n * @param {string} serverName the server name\n * @param {string} uri the resource URI\n * @returns {{ resource } | { error, message }}\n */\n readResource: async (win, serverName, uri) => {\n try {\n const server = activeServers.get(serverName);\n if (!server || !server.client) {\n throw new Error(`Server not connected: ${serverName}`);\n }\n\n const result = await server.client.readResource({ uri });\n\n return {\n success: true,\n resource: result,\n };\n } catch (error) {\n console.error(\n `[mcpController] Error reading resource ${uri} from ${serverName}:`,\n error\n );\n return {\n error: true,\n message: error.message,\n };\n }\n },\n\n /**\n * getServerStatus\n * Get the connection status of a server\n *\n * @param {BrowserWindow} win the main window\n * @param {string} serverName the server name\n * @returns {{ status, tools, error }}\n */\n getServerStatus: (win, serverName) => {\n const server = activeServers.get(serverName);\n if (!server) {\n return {\n serverName,\n status: STATUS.DISCONNECTED,\n tools: [],\n resources: [],\n };\n }\n\n return {\n serverName,\n status: server.status,\n tools: server.tools || [],\n resources: server.resources || [],\n error: server.error || null,\n };\n },\n\n /**\n * getCatalog\n * Load the MCP server seed catalog\n *\n * @param {BrowserWindow} win the main window\n * @returns {{ catalog } | { error, message }}\n */\n getCatalog: (win) => {\n try {\n const catalogPath = path.join(\n __dirname,\n \"..\",\n \"mcp\",\n \"mcpServerCatalog.json\"\n );\n\n if (!fs.existsSync(catalogPath)) {\n return {\n catalog: [],\n };\n }\n\n const catalogData = fs.readFileSync(catalogPath, \"utf8\");\n const catalog = JSON.parse(catalogData);\n\n return {\n success: true,\n catalog: catalog.servers || [],\n };\n } catch (error) {\n console.error(\"[mcpController] Error loading catalog:\", error);\n return {\n error: true,\n message: error.message,\n catalog: [],\n };\n }\n },\n\n /**\n * stopAllServers\n * Stop all running MCP servers (called on app quit)\n */\n stopAllServers: async () => {\n // Wait for any in-flight starts to settle before stopping\n if (pendingStarts.size > 0) {\n await Promise.allSettled([...pendingStarts.values()]);\n }\n\n console.log(\n `[mcpController] Stopping all servers (${activeServers.size} active)`\n );\n const promises = [];\n for (const [serverName] of activeServers) {\n promises.push(mcpController.stopServer(null, serverName));\n }\n await Promise.allSettled(promises);\n console.log(\"[mcpController] All servers stopped\");\n },\n};\n\nmodule.exports = mcpController;\n","/**\n * registryController.js\n *\n * Manages fetching, caching, and searching the remote widget registry index.\n * Runs in the Electron main process.\n *\n * Responsibilities:\n * - Fetch and cache the remote registry-index.json with 5-min TTL\n * - Search/filter across both packages and individual widgets\n * - Support two-level browsing: packages (bundles) and widgets within packages\n */\n\nconst path = require(\"path\");\nconst fs = require(\"fs\");\n\n// Default registry URL (GitHub Pages)\nconst DEFAULT_REGISTRY_URL =\n \"https://trops.github.io/dash-registry/registry-index.json\";\n\n// Cache TTL: 5 minutes\nconst CACHE_TTL_MS = 5 * 60 * 1000;\n\nlet cachedIndex = null;\nlet cacheTimestamp = 0;\n\n/**\n * Get the local test registry path for dev mode\n */\nfunction getTestRegistryPath() {\n return path.join(__dirname, \"..\", \"registry\", \"test-registry-index.json\");\n}\n\n/**\n * Check if running in development mode\n */\nfunction isDev() {\n return (\n process.defaultApp ||\n process.env.NODE_ENV === \"development\" ||\n process.env.NODE_ENV === \"dev\"\n );\n}\n\n/**\n * Fetch the registry index from remote URL or local file (dev mode)\n * Caches the result for CACHE_TTL_MS milliseconds.\n *\n * @param {boolean} forceRefresh - Bypass cache and fetch fresh data\n * @returns {Promise<Object>} The registry index\n */\nasync function fetchRegistryIndex(forceRefresh = false) {\n const now = Date.now();\n\n // Return cached data if still valid\n if (!forceRefresh && cachedIndex && now - cacheTimestamp < CACHE_TTL_MS) {\n console.log(\"[RegistryController] Returning cached registry index\");\n return cachedIndex;\n }\n\n try {\n let indexData;\n\n if (isDev()) {\n // In dev mode, load from local test file\n const testPath = getTestRegistryPath();\n if (fs.existsSync(testPath)) {\n console.log(\n \"[RegistryController] Loading test registry from:\",\n testPath\n );\n const raw = fs.readFileSync(testPath, \"utf8\");\n indexData = JSON.parse(raw);\n } else {\n console.warn(\n \"[RegistryController] Test registry not found at:\",\n testPath\n );\n indexData = { version: \"1.0.0\", packages: [] };\n }\n } else {\n // In production, fetch from remote URL\n const registryUrl =\n process.env.DASH_REGISTRY_URL || DEFAULT_REGISTRY_URL;\n console.log(\n \"[RegistryController] Fetching registry from:\",\n registryUrl\n );\n\n const response = await fetch(registryUrl);\n if (!response.ok) {\n throw new Error(\n `Failed to fetch registry: ${response.status} ${response.statusText}`\n );\n }\n indexData = await response.json();\n }\n\n // Cache the result\n cachedIndex = indexData;\n cacheTimestamp = now;\n\n console.log(\n `[RegistryController] Loaded ${\n indexData.packages?.length || 0\n } packages`\n );\n return indexData;\n } catch (error) {\n console.error(\"[RegistryController] Error fetching registry:\", error);\n\n // Return stale cache if available\n if (cachedIndex) {\n console.log(\n \"[RegistryController] Returning stale cache after fetch error\"\n );\n return cachedIndex;\n }\n\n throw error;\n }\n}\n\n/**\n * Search the registry across packages and individual widgets\n *\n * @param {string} query - Search query string\n * @param {Object} filters - Optional filters\n * @param {string} filters.category - Filter by category\n * @param {string} filters.author - Filter by author\n * @param {string} filters.tag - Filter by tag\n * @returns {Promise<Object>} { packages: [...], totalWidgets: number }\n */\nasync function searchRegistry(query = \"\", filters = {}) {\n const index = await fetchRegistryIndex();\n let packages = index.packages || [];\n\n // Apply search query\n if (query) {\n const q = query.toLowerCase();\n packages = packages.filter((pkg) => {\n // Match against package-level fields\n const packageMatch =\n (pkg.name || \"\").toLowerCase().includes(q) ||\n (pkg.displayName || \"\").toLowerCase().includes(q) ||\n (pkg.description || \"\").toLowerCase().includes(q) ||\n (pkg.author || \"\").toLowerCase().includes(q) ||\n (pkg.tags || []).some((t) => t.toLowerCase().includes(q));\n\n // Match against individual widgets within the package\n const widgetMatch = (pkg.widgets || []).some(\n (w) =>\n (w.name || \"\").toLowerCase().includes(q) ||\n (w.displayName || \"\").toLowerCase().includes(q) ||\n (w.description || \"\").toLowerCase().includes(q)\n );\n\n return packageMatch || widgetMatch;\n });\n }\n\n // Apply category filter\n if (filters.category) {\n packages = packages.filter(\n (pkg) =>\n (pkg.category || \"\").toLowerCase() ===\n filters.category.toLowerCase()\n );\n }\n\n // Apply author filter\n if (filters.author) {\n packages = packages.filter(\n (pkg) =>\n (pkg.author || \"\").toLowerCase() ===\n filters.author.toLowerCase()\n );\n }\n\n // Apply tag filter\n if (filters.tag) {\n const tagLower = filters.tag.toLowerCase();\n packages = packages.filter((pkg) =>\n (pkg.tags || []).some((t) => t.toLowerCase() === tagLower)\n );\n }\n\n // Count total widgets across matched packages\n const totalWidgets = packages.reduce(\n (sum, pkg) => sum + (pkg.widgets || []).length,\n 0\n );\n\n return { packages, totalWidgets };\n}\n\n/**\n * Get a specific package by name\n *\n * @param {string} packageName - Name of the package\n * @returns {Promise<Object|null>} Package data or null if not found\n */\nasync function getPackage(packageName) {\n const index = await fetchRegistryIndex();\n const pkg = (index.packages || []).find((p) => p.name === packageName);\n return pkg || null;\n}\n\n/**\n * Check for updates to installed widgets\n *\n * @param {Array<Object>} installedWidgets - Array of { name, version } objects\n * @returns {Promise<Array<Object>>} Widgets with available updates\n */\nasync function checkUpdates(installedWidgets = []) {\n const index = await fetchRegistryIndex();\n const updates = [];\n\n for (const installed of installedWidgets) {\n const pkg = (index.packages || []).find(\n (p) => p.name === installed.name\n );\n if (pkg && pkg.version !== installed.version) {\n updates.push({\n name: pkg.name,\n currentVersion: installed.version,\n latestVersion: pkg.version,\n downloadUrl: pkg.downloadUrl,\n changelog: pkg.changelog || null,\n });\n }\n }\n\n return updates;\n}\n\nmodule.exports = {\n fetchRegistryIndex,\n searchRegistry,\n getPackage,\n checkUpdates,\n};\n","/**\n * Core controller exports.\n * Template-specific controllers (algolia, openai, menuItems, plugin) live in the template repo.\n */\nconst { showDialog, fileChosenError } = require(\"./dialogController\");\nconst {\n isEncryptionAvailable,\n saveData,\n getData,\n} = require(\"./secureStoreController\");\nconst {\n listWorkspacesForApplication,\n saveWorkspaceForApplication,\n deleteWorkspaceForApplication,\n} = require(\"./workspaceController\");\nconst {\n saveThemeForApplication,\n listThemesForApplication,\n deleteThemeForApplication,\n} = require(\"./themeController\");\nconst {\n convertJsonToCsvFile,\n convertJsonToCsvString,\n saveToFile,\n readFromFile,\n parseXMLStream,\n parseCSVStream,\n readLinesFromFile,\n transformFile,\n readJSONFromFile,\n readDataFromURL,\n extractColorsFromImageURL,\n} = require(\"./dataController\");\nconst {\n saveSettingsForApplication,\n getSettingsForApplication,\n getDataDirectory,\n setDataDirectory,\n migrateDataDirectory,\n} = require(\"./settingsController\");\nconst {\n saveProvider,\n listProviders,\n getProvider,\n deleteProvider,\n} = require(\"./providerController\");\n\nmodule.exports = {\n showDialog,\n fileChosenError,\n isEncryptionAvailable,\n saveData,\n getData,\n listWorkspacesForApplication,\n saveWorkspaceForApplication,\n deleteWorkspaceForApplication,\n saveThemeForApplication,\n listThemesForApplication,\n deleteThemeForApplication,\n convertJsonToCsvFile,\n convertJsonToCsvString,\n parseXMLStream,\n parseCSVStream,\n readLinesFromFile,\n saveToFile,\n readFromFile,\n saveSettingsForApplication,\n getSettingsForApplication,\n transformFile,\n readJSONFromFile,\n readDataFromURL,\n extractColorsFromImageURL,\n saveProvider,\n listProviders,\n getProvider,\n deleteProvider,\n getDataDirectory,\n setDataDirectory,\n migrateDataDirectory,\n};\n","const { ipcRenderer } = require(\"electron\");\nconst {\n SECURE_STORE_ENCRYPTION_CHECK,\n SECURE_STORE_SET_DATA,\n SECURE_STORE_GET_DATA,\n} = require(\"../events\");\n/**\n * secureStoreApi\n * - for Apple, keychain methods\n */\nconst secureStoreApi = {\n isEncryptionAvailable: () =>\n ipcRenderer.invoke(SECURE_STORE_ENCRYPTION_CHECK, {}),\n saveData: (key, value) =>\n ipcRenderer.invoke(SECURE_STORE_SET_DATA, { key, value }),\n getData: (key) => ipcRenderer.invoke(SECURE_STORE_GET_DATA, { key }),\n};\n\nmodule.exports = secureStoreApi;\n","/**\n * workspaceApi.js\n *\n * Handle the workspace configuration file\n */\nconst { ipcRenderer } = require(\"electron\");\nconst {\n WORKSPACE_LIST,\n WORKSPACE_SAVE,\n WORKSPACE_DELETE,\n} = require(\"../events\");\n\nconst workspaceApi = {\n /**\n * listWorkspacesForApplication\n * read the workspaces.json file in the app config directory\n * on the local user's machine and return the list of workspaces (dashboards)\n *\n * @param {String} appId the appId specified in the dash initialization\n */\n listWorkspacesForApplication: (appId) => {\n console.log(\"listWorkspacesForApplication called with appId:\", appId);\n return ipcRenderer.invoke(WORKSPACE_LIST, { appId });\n },\n\n /**\n * saveWorkspaceForApplication\n * Save the new workspace to the workspaces.json config file\n * @param {String} appId\n * @param {Object} data\n * @returns\n */\n saveWorkspaceForApplication: (appId, data) =>\n ipcRenderer.invoke(WORKSPACE_SAVE, { appId, data }),\n\n /**\n * deleteWorkspaceForApplication\n * Delete a workspace from the workspaces.json config file\n * @param {String} appId\n * @param {String} workspaceId\n * @returns\n */\n deleteWorkspaceForApplication: (appId, workspaceId) =>\n ipcRenderer.invoke(WORKSPACE_DELETE, { appId, workspaceId }),\n};\n\nmodule.exports = workspaceApi;\n","/**\n * layoutApi.js\n *\n * Handle the layout configuration file\n */\n// ipcRenderer that must be used to invoke the events\nconst { ipcRenderer } = require(\"electron\");\n\nconst { LAYOUT_LIST, LAYOUT_SAVE } = require(\"../events\");\n\nconst layoutApi = {\n listLayoutsForApplication: (appId) =>\n ipcRenderer.invoke(LAYOUT_LIST, { appId }),\n saveLayoutForApplication: (appId, data) =>\n ipcRenderer.invoke(LAYOUT_SAVE, { appId, data }),\n};\n\nmodule.exports = layoutApi;\n","/**\n * dataApi.js\n *\n * Handle the data configuration file\n */\n// ipcRenderer that must be used to invoke the events\nconst { ipcRenderer } = require(\"electron\");\n\nconst {\n DATA_JSON_TO_CSV_FILE,\n DATA_JSON_TO_CSV_STRING,\n DATA_READ_FROM_FILE,\n DATA_SAVE_TO_FILE,\n PARSE_XML_STREAM,\n PARSE_CSV_STREAM,\n READ_LINES,\n TRANSFORM_FILE,\n READ_JSON,\n READ_DATA_URL,\n EXTRACT_COLORS_FROM_IMAGE,\n} = require(\"../events\");\n\nconst dataApi = {\n // convert a json array of objects to a csv string and save to file\n convertJsonToCsvFile: (appId, jsonObject, filename) =>\n ipcRenderer.invoke(DATA_JSON_TO_CSV_FILE, {\n appId,\n jsonObject,\n filename,\n }),\n\n // convert a json array of objects to a csv string and return a string\n convertJsonToCsvString: (appId, jsonObject) =>\n ipcRenderer.invoke(DATA_JSON_TO_CSV_STRING, { appId, jsonObject }),\n\n parseXMLStream: (filepath, outpath, start) =>\n ipcRenderer.invoke(PARSE_XML_STREAM, {\n filepath,\n outpath,\n start,\n }),\n\n parseCSVStream: (\n filepath,\n outpath,\n delimiter = \",\",\n objectIdKey = null,\n headers = null,\n limit = null\n ) => {\n ipcRenderer.invoke(PARSE_CSV_STREAM, {\n filepath,\n outpath,\n delimiter,\n objectIdKey,\n headers,\n limit,\n });\n },\n\n readLinesFromFile: (filepath, lineCount) => {\n ipcRenderer.invoke(READ_LINES, { filepath, lineCount });\n },\n\n readJSONFromFile: (filepath, objectCount = null) => {\n ipcRenderer.invoke(READ_JSON, { filepath, objectCount });\n },\n\n readDataFromURL: (url, toFilepath) => {\n ipcRenderer.invoke(READ_DATA_URL, { url, toFilepath });\n },\n\n /*\n * saveData\n * @param {object} options { filename, extension }\n * @param {object} returnEmpty the return empty object\n */\n saveData: (data, filename, append, returnEmpty, uuid) =>\n ipcRenderer.invoke(DATA_SAVE_TO_FILE, {\n data,\n filename,\n append,\n returnEmpty,\n }),\n\n /*\n * readData\n * @param {string} filename the filename to read (not path)\n */\n readData: (filename, returnEmpty = []) =>\n ipcRenderer.invoke(DATA_READ_FROM_FILE, { filename, returnEmpty }),\n\n /**\n * transformFile\n * @returns\n */\n transformFile: (filepath, outFilepath, mappingFunctionBody, args) => {\n ipcRenderer.invoke(TRANSFORM_FILE, {\n filepath,\n outFilepath,\n mappingFunctionBody,\n args,\n });\n },\n\n extractColorsFromImageURL: (url) => {\n ipcRenderer.invoke(EXTRACT_COLORS_FROM_IMAGE, {\n url,\n });\n },\n};\n\nmodule.exports = dataApi;\n","/**\n * settingsApi.js\n *\n * Handle the settings configuration file\n */\n// ipcRenderer that must be used to invoke the events\nconst { ipcRenderer } = require(\"electron\");\n\nconst {\n SETTINGS_GET,\n SETTINGS_SAVE,\n SETTINGS_GET_DATA_DIR,\n SETTINGS_SET_DATA_DIR,\n SETTINGS_MIGRATE_DATA_DIR,\n} = require(\"../events\");\n\nconst settingsApi = {\n getSettingsForApplication: () => ipcRenderer.invoke(SETTINGS_GET, {}),\n saveSettingsForApplication: (data) =>\n ipcRenderer.invoke(SETTINGS_SAVE, { data }),\n getDataDirectory: () => ipcRenderer.invoke(SETTINGS_GET_DATA_DIR, {}),\n setDataDirectory: (dataDirectory) =>\n ipcRenderer.invoke(SETTINGS_SET_DATA_DIR, { dataDirectory }),\n migrateDataDirectory: (oldDirectory, newDirectory) =>\n ipcRenderer.invoke(SETTINGS_MIGRATE_DATA_DIR, {\n oldDirectory,\n newDirectory,\n }),\n};\n\nmodule.exports = settingsApi;\n","/**\n * layoutApi.js\n *\n * Handle the layout configuration file\n */\n// ipcRenderer that must be used to invoke the events\nconst { ipcRenderer } = require(\"electron\");\n\nconst { CHOOSE_FILE } = require(\"../events\");\n\nconst dialogApi = {\n /**\n * chooseFile\n * @param {*} allowFile if false, will allow only directory selection\n * @param {*} extensions the file extensions allowed\n */\n chooseFile: (allowFile = true, extensions = [\"*\"]) => {\n console.log(\"dialog api choose file\");\n return ipcRenderer.invoke(CHOOSE_FILE, { allowFile, extensions });\n },\n};\n\nmodule.exports = dialogApi;\n","/**\n * widgetApi.js\n *\n * Frontend API for widget management\n * Provides methods to list, install, uninstall, and manage widgets\n *\n * Usage:\n * mainApi.widgets.list()\n * mainApi.widgets.install('Weather', 'https://github.com/user/weather-widget/releases/download/v1.0.0/weather.zip')\n * mainApi.widgets.installLocal('Weather', '/path/to/widget.zip')\n * mainApi.widgets.uninstall('Weather')\n */\n\nconst { ipcRenderer } = require(\"electron\");\n\nconst widgetApi = {\n /**\n * List all installed widgets\n * @returns {Promise<Array>} Array of widget configurations\n */\n list: async () => {\n try {\n return await ipcRenderer.invoke(\"widget:list\");\n } catch (error) {\n console.error(\"[WidgetApi] Error listing widgets:\", error);\n throw error;\n }\n },\n\n /**\n * Get a specific widget by name\n * @param {string} widgetName - Name of the widget\n * @returns {Promise<Object|null>} Widget configuration or null if not found\n */\n get: async (widgetName) => {\n try {\n return await ipcRenderer.invoke(\"widget:get\", widgetName);\n } catch (error) {\n console.error(\n `[WidgetApi] Error getting widget ${widgetName}:`,\n error\n );\n throw error;\n }\n },\n\n /**\n * Install a widget from a remote URL\n * Supports full URLs, template URLs with {version} and {name}, and partial URLs\n *\n * @param {string} widgetName - Name of the widget (e.g., \"Weather\")\n * @param {string} downloadUrl - Download URL (full, template, or partial)\n * @param {string} dashConfigUrl - Optional: URL to dash.json metadata\n * @returns {Promise<Object>} Widget configuration\n *\n * @example\n * // Full URL\n * await mainApi.widgets.install('Weather', 'https://github.com/user/weather-widget/releases/download/v1.0.0/weather.zip')\n *\n * // Template URL\n * await mainApi.widgets.install('Weather', 'https://github.com/user/weather-widget/releases/download/v{version}/{name}.zip')\n *\n * // Partial URL (auto-appends v{version}/{name}.zip)\n * await mainApi.widgets.install('Weather', 'https://github.com/user/weather-widget/releases/download/')\n */\n install: async (widgetName, downloadUrl, dashConfigUrl = null) => {\n try {\n console.log(\n `[WidgetApi] Installing widget: ${widgetName} from ${downloadUrl}`\n );\n const config = await ipcRenderer.invoke(\n \"widget:install\",\n widgetName,\n downloadUrl,\n dashConfigUrl\n );\n console.log(`[WidgetApi] ✓ Widget ${widgetName} installed`);\n return config;\n } catch (error) {\n console.error(\n `[WidgetApi] Error installing widget ${widgetName}:`,\n error\n );\n throw error;\n }\n },\n\n /**\n * Install a widget from a local ZIP file or folder\n *\n * @param {string} widgetName - Name of the widget\n * @param {string} localPath - Path to ZIP file or widget folder\n * @param {string} dashConfigPath - Optional: path to dash.json metadata\n * @returns {Promise<Object>} Widget configuration\n *\n * @example\n * // Install from ZIP\n * await mainApi.widgets.installLocal('Weather', '/Users/me/Downloads/weather-widget.zip')\n *\n * // Install from folder\n * await mainApi.widgets.installLocal('Weather', '/Users/me/CustomWidgets/weather')\n *\n * // Install from file:// URL\n * await mainApi.widgets.installLocal('Weather', 'file:///Users/me/weather-widget.zip')\n */\n installLocal: async (widgetName, localPath, dashConfigPath = null) => {\n try {\n console.log(\n `[WidgetApi] Installing local widget: ${widgetName} from ${localPath}`\n );\n const config = await ipcRenderer.invoke(\n \"widget:install-local\",\n widgetName,\n localPath,\n dashConfigPath\n );\n console.log(`[WidgetApi] ✓ Local widget ${widgetName} installed`);\n return config;\n } catch (error) {\n console.error(\n `[WidgetApi] Error installing local widget ${widgetName}:`,\n error\n );\n throw error;\n }\n },\n\n /**\n * Load multiple widgets from a folder\n * Each subfolder is treated as a separate widget\n *\n * @param {string} folderPath - Path to folder containing widget subdirectories\n * @returns {Promise<Array>} Array of loaded widget configurations\n *\n * @example\n * // Load all widgets from a folder\n * await mainApi.widgets.loadFolder('/Users/me/CustomWidgets')\n */\n loadFolder: async (folderPath) => {\n try {\n console.log(\n `[WidgetApi] Loading widgets from folder: ${folderPath}`\n );\n const results = await ipcRenderer.invoke(\n \"widget:load-folder\",\n folderPath\n );\n console.log(\n `[WidgetApi] ✓ Loaded ${results.length} widgets from folder`\n );\n return results;\n } catch (error) {\n console.error(\n `[WidgetApi] Error loading widgets from folder:`,\n error\n );\n throw error;\n }\n },\n\n /**\n * Uninstall a widget\n *\n * @param {string} widgetName - Name of the widget to uninstall\n * @returns {Promise<boolean>} True if successfully uninstalled, false otherwise\n *\n * @example\n * await mainApi.widgets.uninstall('Weather')\n */\n uninstall: async (widgetName) => {\n try {\n console.log(`[WidgetApi] Uninstalling widget: ${widgetName}`);\n const success = await ipcRenderer.invoke(\n \"widget:uninstall\",\n widgetName\n );\n if (success) {\n console.log(`[WidgetApi] ✓ Widget ${widgetName} uninstalled`);\n } else {\n console.warn(`[WidgetApi] Widget ${widgetName} not found`);\n }\n return success;\n } catch (error) {\n console.error(\n `[WidgetApi] Error uninstalling widget ${widgetName}:`,\n error\n );\n throw error;\n }\n },\n\n /**\n * Get the cache directory path where widgets are stored\n *\n * @returns {Promise<string>} Path to widgets cache directory\n */\n getCachePath: async () => {\n try {\n return await ipcRenderer.invoke(\"widget:cache-path\");\n } catch (error) {\n console.error(\"[WidgetApi] Error getting cache path:\", error);\n throw error;\n }\n },\n\n /**\n * Get the storage directory path (parent of widgets directory)\n *\n * @returns {Promise<string>} Path to storage directory\n */\n getStoragePath: async () => {\n try {\n return await ipcRenderer.invoke(\"widget:storage-path\");\n } catch (error) {\n console.error(\"[WidgetApi] Error getting storage path:\", error);\n throw error;\n }\n },\n\n /**\n * Set a custom storage path for widgets\n * Call this to move widget storage to a different location\n *\n * @param {string} customPath - Custom path for storing widgets\n * @returns {Promise<Object>} { success: boolean, path: string, error?: string }\n */\n setStoragePath: async (customPath) => {\n try {\n console.log(`[WidgetApi] Setting storage path to: ${customPath}`);\n const result = await ipcRenderer.invoke(\n \"widget:set-storage-path\",\n customPath\n );\n if (result.success) {\n console.log(\n `[WidgetApi] ✓ Storage path changed to: ${customPath}`\n );\n }\n return result;\n } catch (error) {\n console.error(\"[WidgetApi] Error setting storage path:\", error);\n throw error;\n }\n },\n\n /**\n * Get parsed .dash.js component configs for all installed widgets\n * Returns an array of { componentName, widgetPackage, config } objects\n *\n * @returns {Promise<Array>} Array of component configurations\n */\n getComponentConfigs: async () => {\n try {\n return await ipcRenderer.invoke(\"widget:get-component-configs\");\n } catch (error) {\n console.error(\n \"[WidgetApi] Error getting component configs:\",\n error\n );\n return [];\n }\n },\n\n /**\n * Read the CJS bundle source for a single installed widget\n *\n * @param {string} widgetName - Name of the widget\n * @returns {Promise<Object>} { success, source, widgetName } or { success: false, error }\n */\n readBundle: async (widgetName) => {\n try {\n return await ipcRenderer.invoke(\"widget:read-bundle\", widgetName);\n } catch (error) {\n console.error(\n `[WidgetApi] Error reading bundle for ${widgetName}:`,\n error\n );\n return { success: false, error: error.message };\n }\n },\n\n /**\n * Read CJS bundle sources for all installed widgets\n *\n * @returns {Promise<Array>} Array of { widgetName, source }\n */\n readAllBundles: async () => {\n try {\n return await ipcRenderer.invoke(\"widget:read-all-bundles\");\n } catch (error) {\n console.error(\"[WidgetApi] Error reading all bundles:\", error);\n return [];\n }\n },\n\n /**\n * Listen for widget installation events\n * Useful for updating UI when new widgets are installed\n *\n * @param {Function} callback - Function called when widget is installed\n *\n * @example\n * mainApi.widgets.onInstalled(({ widgetName, config }) => {\n * console.log(`Widget ${widgetName} was installed!`);\n * // Refresh widget list in UI\n * });\n */\n onInstalled: (callback) => {\n ipcRenderer.on(\"widget:installed\", (event, data) => {\n callback(data);\n });\n },\n\n /**\n * Listen for batch widget loading events\n * Useful for updating UI when multiple widgets are loaded at once\n *\n * @param {Function} callback - Function called when widgets are loaded\n *\n * @example\n * mainApi.widgets.onLoaded(({ count, widgets }) => {\n * console.log(`${count} widgets were loaded!`);\n * // Refresh widget list in UI\n * });\n */\n onLoaded: (callback) => {\n ipcRenderer.on(\"widgets:loaded\", (event, data) => {\n callback(data);\n });\n },\n\n /**\n * Remove listener for widget installation events\n *\n * @param {Function} callback - The callback to remove\n */\n removeInstalledListener: (callback) => {\n ipcRenderer.removeListener(\"widget:installed\", callback);\n },\n\n /**\n * Remove listener for batch widget loading events\n *\n * @param {Function} callback - The callback to remove\n */\n removeLoadedListener: (callback) => {\n ipcRenderer.removeListener(\"widgets:loaded\", callback);\n },\n};\n\nmodule.exports = widgetApi;\n","/**\n * providerApi.js\n *\n * Handle provider (credentials) management - save, load, list providers\n * Communicates with main process via IPC to handle encryption and file storage\n */\nconst { ipcRenderer } = require(\"electron\");\nconst {\n PROVIDER_SAVE,\n PROVIDER_LIST,\n PROVIDER_GET,\n PROVIDER_DELETE,\n} = require(\"../events\");\n\nconst providerApi = {\n /**\n * saveProvider\n * Save a new provider with encrypted credentials to providers.json\n * Promise-based version\n *\n * @param {String} appId - the appId specified in the dash initialization\n * @param {String} providerName - user-defined name (e.g., \"Algolia Production\")\n * @param {String} providerType - provider type (e.g., \"algolia\", \"slack\")\n * @param {Object} credentials - credentials object (shape depends on provider type)\n * @param {String} providerClass - \"credential\" (default) or \"mcp\"\n * @param {Object} mcpConfig - MCP server config (only for providerClass \"mcp\")\n * @returns {Promise}\n */\n saveProvider: (\n appId,\n providerName,\n providerType,\n credentials,\n providerClass = \"credential\",\n mcpConfig = null\n ) =>\n ipcRenderer.invoke(PROVIDER_SAVE, {\n appId,\n providerName,\n providerType,\n credentials,\n providerClass,\n mcpConfig,\n }),\n\n /**\n * listProviders\n * Get list of all available providers with decrypted credentials\n * Promise-based version\n *\n * @param {String} appId - the appId specified in the dash initialization\n * @returns {Promise<Array>} Array of provider objects with name, type, credentials\n */\n listProviders: (appId) => ipcRenderer.invoke(PROVIDER_LIST, { appId }),\n\n /**\n * getProvider\n * Get a specific provider by name with decrypted credentials\n * Promise-based version\n *\n * @param {String} appId - the appId specified in the dash initialization\n * @param {String} providerName - the provider name to retrieve\n * @returns {Promise<Object>} Provider object with name, type, credentials\n */\n getProvider: (appId, providerName) =>\n ipcRenderer.invoke(PROVIDER_GET, { appId, providerName }),\n\n /**\n * deleteProvider\n * Delete a provider from providers.json\n * Promise-based version\n *\n * @param {String} appId - the appId specified in the dash initialization\n * @param {String} providerName - the provider name to delete\n * @returns {Promise}\n */\n deleteProvider: (appId, providerName) =>\n ipcRenderer.invoke(PROVIDER_DELETE, { appId, providerName }),\n\n /**\n * listProvidersForApplication\n * Get list of all available providers with decrypted credentials\n * Event-listener-based version for use with ElectronDashboardApi\n *\n * @param {String} appId - the appId specified in the dash initialization\n */\n listProvidersForApplication: (appId) => {\n ipcRenderer\n .invoke(PROVIDER_LIST, { appId })\n .then((result) => {\n // Emit the event for ElectronDashboardApi to listen to\n ipcRenderer.send(\"PROVIDER_LIST_COMPLETE\", result);\n })\n .catch((error) => {\n ipcRenderer.send(\"PROVIDER_LIST_ERROR\", {\n error: error.message,\n });\n });\n },\n\n /**\n * saveProviderForApplication\n * Save a new provider with encrypted credentials to providers.json\n * Event-listener-based version for use with ElectronDashboardApi\n */\n saveProviderForApplication: (\n appId,\n providerName,\n providerType,\n credentials\n ) => {\n ipcRenderer\n .invoke(PROVIDER_SAVE, {\n appId,\n providerName,\n providerType,\n credentials,\n })\n .then((result) => {\n ipcRenderer.send(\"PROVIDER_SAVE_COMPLETE\", result);\n })\n .catch((error) => {\n ipcRenderer.send(\"PROVIDER_SAVE_ERROR\", {\n error: error.message,\n });\n });\n },\n\n /**\n * getProviderForApplication\n * Get a specific provider by name with decrypted credentials\n * Event-listener-based version for use with ElectronDashboardApi\n */\n getProviderForApplication: (appId, providerName) => {\n ipcRenderer\n .invoke(PROVIDER_GET, { appId, providerName })\n .then((result) => {\n ipcRenderer.send(\"PROVIDER_GET_COMPLETE\", result);\n })\n .catch((error) => {\n ipcRenderer.send(\"PROVIDER_GET_ERROR\", {\n error: error.message,\n });\n });\n },\n\n /**\n * deleteProviderForApplication\n * Delete a provider from providers.json\n * Event-listener-based version for use with ElectronDashboardApi\n */\n deleteProviderForApplication: (appId, providerName) => {\n ipcRenderer\n .invoke(PROVIDER_DELETE, { appId, providerName })\n .then((result) => {\n ipcRenderer.send(\"PROVIDER_DELETE_COMPLETE\", result);\n })\n .catch((error) => {\n ipcRenderer.send(\"PROVIDER_DELETE_ERROR\", {\n error: error.message,\n });\n });\n },\n};\n\nmodule.exports = providerApi;\n","/**\n * mcpApi.js\n *\n * Preload bridge for MCP (Model Context Protocol) server operations.\n * Communicates with main process via IPC to manage MCP server lifecycle.\n */\nconst { ipcRenderer } = require(\"electron\");\nconst {\n MCP_START_SERVER,\n MCP_STOP_SERVER,\n MCP_LIST_TOOLS,\n MCP_CALL_TOOL,\n MCP_LIST_RESOURCES,\n MCP_READ_RESOURCE,\n MCP_SERVER_STATUS,\n MCP_GET_CATALOG,\n} = require(\"../events\");\n\nconst mcpApi = {\n /**\n * startServer\n * Start an MCP server with the given config and credentials\n *\n * @param {string} serverName unique name for this server instance\n * @param {object} mcpConfig { transport, command, args, envMapping }\n * @param {object} credentials decrypted credentials object\n * @returns {Promise<{ success, serverName, tools, status } | { error, message }>}\n */\n startServer: (serverName, mcpConfig, credentials) =>\n ipcRenderer.invoke(MCP_START_SERVER, {\n serverName,\n mcpConfig,\n credentials,\n }),\n\n /**\n * stopServer\n * Stop a running MCP server\n *\n * @param {string} serverName the server to stop\n * @returns {Promise<{ success, serverName } | { error, message }>}\n */\n stopServer: (serverName) =>\n ipcRenderer.invoke(MCP_STOP_SERVER, { serverName }),\n\n /**\n * listTools\n * List available tools for a running MCP server\n *\n * @param {string} serverName the server name\n * @returns {Promise<{ tools } | { error, message }>}\n */\n listTools: (serverName) =>\n ipcRenderer.invoke(MCP_LIST_TOOLS, { serverName }),\n\n /**\n * callTool\n * Call a tool on a running MCP server\n *\n * @param {string} serverName the server name\n * @param {string} toolName the tool to call\n * @param {object} args tool arguments\n * @param {Array<string>} allowedTools optional whitelist of allowed tool names\n * @returns {Promise<{ result } | { error, message }>}\n */\n callTool: (serverName, toolName, args, allowedTools = null) =>\n ipcRenderer.invoke(MCP_CALL_TOOL, {\n serverName,\n toolName,\n args,\n allowedTools,\n }),\n\n /**\n * listResources\n * List available resources for a running MCP server\n *\n * @param {string} serverName the server name\n * @returns {Promise<{ resources } | { error, message }>}\n */\n listResources: (serverName) =>\n ipcRenderer.invoke(MCP_LIST_RESOURCES, { serverName }),\n\n /**\n * readResource\n * Read a specific resource from a running MCP server\n *\n * @param {string} serverName the server name\n * @param {string} uri the resource URI\n * @returns {Promise<{ resource } | { error, message }>}\n */\n readResource: (serverName, uri) =>\n ipcRenderer.invoke(MCP_READ_RESOURCE, { serverName, uri }),\n\n /**\n * getServerStatus\n * Get the connection status of a server\n *\n * @param {string} serverName the server name\n * @returns {Promise<{ status, tools, error }>}\n */\n getServerStatus: (serverName) =>\n ipcRenderer.invoke(MCP_SERVER_STATUS, { serverName }),\n\n /**\n * getCatalog\n * Load the MCP server seed catalog\n *\n * @returns {Promise<{ catalog } | { error, message }>}\n */\n getCatalog: () => ipcRenderer.invoke(MCP_GET_CATALOG),\n};\n\nmodule.exports = mcpApi;\n","/**\n * registryApi.js\n *\n * Frontend API for the widget registry/marketplace.\n * Wraps IPC calls to the registryController in the main process.\n *\n * Usage:\n * mainApi.registry.search(\"weather\")\n * mainApi.registry.getPackage(\"weather-widgets\")\n * mainApi.registry.fetchIndex(true)\n * mainApi.registry.checkUpdates([{ name: \"weather-widgets\", version: \"1.0.0\" }])\n */\n\nconst { ipcRenderer } = require(\"electron\");\n\nconst registryApi = {\n /**\n * Fetch the registry index (uses cache with 5-min TTL)\n * @param {boolean} forceRefresh - Force a fresh fetch bypassing cache\n * @returns {Promise<Object>} The registry index\n */\n fetchIndex: async (forceRefresh = false) => {\n try {\n return await ipcRenderer.invoke(\n \"registry:fetch-index\",\n forceRefresh\n );\n } catch (error) {\n console.error(\"[RegistryApi] Error fetching index:\", error);\n throw error;\n }\n },\n\n /**\n * Search the registry for packages and widgets\n * @param {string} query - Search query\n * @param {Object} filters - Optional filters { category, author, tag }\n * @returns {Promise<Object>} { packages: [...], totalWidgets: number }\n */\n search: async (query = \"\", filters = {}) => {\n try {\n return await ipcRenderer.invoke(\"registry:search\", query, filters);\n } catch (error) {\n console.error(\"[RegistryApi] Error searching registry:\", error);\n throw error;\n }\n },\n\n /**\n * Get a specific package by name\n * @param {string} packageName - Name of the package\n * @returns {Promise<Object|null>} Package data or null\n */\n getPackage: async (packageName) => {\n try {\n return await ipcRenderer.invoke(\n \"registry:get-package\",\n packageName\n );\n } catch (error) {\n console.error(\n `[RegistryApi] Error getting package ${packageName}:`,\n error\n );\n throw error;\n }\n },\n\n /**\n * Check for updates to installed widgets\n * @param {Array<Object>} installedWidgets - Array of { name, version }\n * @returns {Promise<Array<Object>>} Widgets with available updates\n */\n checkUpdates: async (installedWidgets = []) => {\n try {\n return await ipcRenderer.invoke(\n \"registry:check-updates\",\n installedWidgets\n );\n } catch (error) {\n console.error(\"[RegistryApi] Error checking updates:\", error);\n throw error;\n }\n },\n};\n\nmodule.exports = registryApi;\n","/**\n * themeApi.js\n *\n * Handle the theme configuration file\n */\n\nconst { ipcRenderer } = require(\"electron\");\n\nconst { THEME_LIST, THEME_SAVE, THEME_DELETE } = require(\"../events\");\n\nconst themeApi = {\n listThemesForApplication: (appId) =>\n ipcRenderer.invoke(THEME_LIST, { appId }),\n saveThemeForApplication: (appId, themeName, themeObject) =>\n ipcRenderer.invoke(THEME_SAVE, { appId, themeName, themeObject }),\n deleteThemeForApplication: (appId, themeKey) =>\n ipcRenderer.invoke(THEME_DELETE, { appId, themeKey }),\n};\n\nmodule.exports = themeApi;\n","/**\n * Widget Compiler\n *\n * Compiles raw widget source files (.js + .dash.js) into a single CJS bundle\n * using esbuild. The output bundle is consumable by the existing\n * widgetBundleLoader.js eval pipeline (new Function() + require shim).\n *\n * Runs in the Electron main process at widget install time.\n */\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\n\n/**\n * Find the widgets/ directory, handling nested ZIP extraction.\n *\n * ZIP extraction can create a nested structure like:\n * Weather/weather-widget/widgets/ instead of Weather/widgets/\n *\n * If widgets/ doesn't exist at root, check one level deeper for a\n * single subdirectory that contains widgets/.\n *\n * @param {string} widgetPath - Absolute path to the widget directory\n * @returns {string|null} Path to the widgets/ directory, or null\n */\nfunction findWidgetsDir(widgetPath) {\n const direct = path.join(widgetPath, \"widgets\");\n if (fs.existsSync(direct)) {\n return direct;\n }\n\n // Check one level deeper for nested ZIP extraction\n try {\n const entries = fs.readdirSync(widgetPath, { withFileTypes: true });\n const subdirs = entries.filter(\n (e) =>\n e.isDirectory() &&\n !e.name.startsWith(\".\") &&\n e.name !== \"dist\" &&\n e.name !== \"node_modules\"\n );\n\n for (const subdir of subdirs) {\n const nested = path.join(widgetPath, subdir.name, \"widgets\");\n if (fs.existsSync(nested)) {\n console.log(\n `[WidgetCompiler] Found nested widgets/ at ${nested}`\n );\n return nested;\n }\n }\n } catch (err) {\n // Non-fatal — fall through to null\n }\n\n return null;\n}\n\n/**\n * Compile widget source files into a CJS bundle at dist/index.cjs.js.\n *\n * For each {Name}.dash.js found in the widgets/ directory, a synthetic\n * entry point is generated that imports the component + config and\n * re-exports them as `{ ...config, component }` — matching what\n * extractWidgetConfigs() in widgetBundleLoader.js expects.\n *\n * @param {string} widgetPath - Absolute path to the widget directory\n * @returns {Promise<string|null>} Path to the compiled bundle, or null if nothing to compile\n */\nasync function compileWidget(widgetPath) {\n const widgetsDir = findWidgetsDir(widgetPath);\n\n if (!widgetsDir) {\n console.log(\n `[WidgetCompiler] No widgets/ directory in ${widgetPath}, skipping`\n );\n return null;\n }\n\n // Discover .dash.js config files\n const files = fs.readdirSync(widgetsDir);\n const dashFiles = files.filter((f) => f.endsWith(\".dash.js\"));\n\n if (dashFiles.length === 0) {\n console.log(\n `[WidgetCompiler] No .dash.js files found in ${widgetsDir}, skipping`\n );\n return null;\n }\n\n // Build a synthetic entry point that pairs each component with its config.\n // Compute relative path from the entry file (in widgetPath) to widgetsDir,\n // since widgetsDir may be nested (e.g., ./weather-widget/widgets/).\n const relWidgetsDir =\n \"./\" + path.relative(widgetPath, widgetsDir).split(path.sep).join(\"/\");\n const imports = [];\n const exportParts = [];\n\n for (const dashFile of dashFiles) {\n const componentName = dashFile.replace(\".dash.js\", \"\");\n const componentFile = `${componentName}.js`;\n const componentFilePath = path.join(widgetsDir, componentFile);\n const hasComponent = fs.existsSync(componentFilePath);\n\n // Import the config (always)\n imports.push(\n `import ${componentName}Config from \"${relWidgetsDir}/${dashFile}\";`\n );\n\n if (hasComponent) {\n // Import the component and merge with config\n imports.push(\n `import ${componentName}Comp from \"${relWidgetsDir}/${componentFile}\";`\n );\n exportParts.push(\n `export const ${componentName} = { ...${componentName}Config, component: ${componentName}Comp };`\n );\n } else {\n // Config-only (no component source file)\n exportParts.push(\n `export const ${componentName} = ${componentName}Config;`\n );\n }\n }\n\n const entryContent = [...imports, \"\", ...exportParts, \"\"].join(\"\\n\");\n\n // Write temporary entry file in the widget root\n const entryPath = path.join(widgetPath, \"__compile_entry.js\");\n const distDir = path.join(widgetPath, \"dist\");\n const outPath = path.join(distDir, \"index.cjs.js\");\n\n try {\n // Ensure dist/ directory exists\n if (!fs.existsSync(distDir)) {\n fs.mkdirSync(distDir, { recursive: true });\n }\n\n fs.writeFileSync(entryPath, entryContent, \"utf8\");\n\n console.log(\n `[WidgetCompiler] Compiling ${dashFiles.length} component(s) from ${widgetPath}`\n );\n\n // Lazy-require esbuild so the module doesn't fail to load if\n // esbuild is not yet installed (e.g., during first npm install)\n const esbuild = require(\"esbuild\");\n\n await esbuild.build({\n entryPoints: [entryPath],\n bundle: true,\n format: \"cjs\",\n outfile: outPath,\n // These modules are provided by the host app via MODULE_MAP\n // in widgetBundleLoader.js — do NOT bundle them\n external: [\n \"react\",\n \"react-dom\",\n \"@trops/dash-react\",\n \"react/jsx-runtime\",\n \"prop-types\",\n ],\n // Treat .js files as JSX (widget sources use JSX in .js files)\n loader: { \".js\": \"jsx\" },\n logLevel: \"warning\",\n });\n\n console.log(`[WidgetCompiler] Compiled successfully → ${outPath}`);\n return outPath;\n } catch (error) {\n console.error(\n `[WidgetCompiler] Compilation failed for ${widgetPath}:`,\n error\n );\n throw error;\n } finally {\n // Clean up temporary entry file\n try {\n if (fs.existsSync(entryPath)) {\n fs.unlinkSync(entryPath);\n }\n } catch (cleanupError) {\n // Non-fatal\n console.warn(\n `[WidgetCompiler] Could not remove temp entry file:`,\n cleanupError\n );\n }\n }\n}\n\nmodule.exports = { compileWidget, findWidgetsDir };\n","/**\n * Dynamic Widget Loader\n *\n * Loads React components and configurations from downloaded/local widget paths\n * Works with widgets that follow the Dash widget structure:\n * - widgets/\n * - WidgetName.js (React component)\n * - WidgetName.dash.js (configuration)\n *\n * Integrates with ComponentManager for automatic registration\n */\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst vm = require(\"vm\");\nconst { findWidgetsDir } = require(\"./widgetCompiler\");\n\nclass DynamicWidgetLoader {\n constructor(componentManager = null) {\n this.loadedWidgets = new Map();\n this.moduleCache = new Map();\n this.componentManager = componentManager;\n }\n\n /**\n * Set ComponentManager instance for automatic widget registration\n * @param {Object} manager - ComponentManager instance from @trops/dash-react\n */\n setComponentManager(manager) {\n this.componentManager = manager;\n }\n\n /**\n * Load a widget from a local path\n * @param {string} widgetName - Name of the widget (e.g., \"MyFirstWidget\")\n * @param {string} widgetPath - Path to the widget directory\n * @param {string} componentName - Name of the component file (e.g., \"MyFirstWidgetWidget\")\n * @param {boolean} autoRegister - Automatically register with ComponentManager (if available)\n * @returns {Promise<Object>} { component, config, registered }\n */\n async loadWidget(\n widgetName,\n widgetPath,\n componentName,\n autoRegister = true\n ) {\n try {\n const cacheKey = `${widgetName}:${componentName}`;\n\n if (this.loadedWidgets.has(cacheKey)) {\n console.log(\n `[DynamicWidgetLoader] Loading ${widgetName} from cache`\n );\n return this.loadedWidgets.get(cacheKey);\n }\n\n console.log(\n `[DynamicWidgetLoader] Loading widget: ${widgetName} from ${widgetPath}`\n );\n\n const widgetsDir =\n findWidgetsDir(widgetPath) || path.join(widgetPath, \"widgets\");\n const componentPath = path.join(widgetsDir, `${componentName}.js`);\n const configPath = path.join(\n widgetsDir,\n `${componentName}.dash.js`\n );\n\n if (!fs.existsSync(componentPath)) {\n throw new Error(`Component file not found: ${componentPath}`);\n }\n if (!fs.existsSync(configPath)) {\n throw new Error(`Config file not found: ${configPath}`);\n }\n\n const config = await this.loadConfigFile(configPath);\n\n const component = {\n path: componentPath,\n name: componentName,\n };\n\n let registered = false;\n\n if (autoRegister && this.componentManager) {\n try {\n this.componentManager.registerWidget(config, componentName);\n registered = true;\n console.log(\n `[DynamicWidgetLoader] ✓ Registered ${componentName} with ComponentManager`\n );\n } catch (regError) {\n console.warn(\n `[DynamicWidgetLoader] Failed to register with ComponentManager:`,\n regError\n );\n }\n }\n\n const result = { component, config, registered };\n this.loadedWidgets.set(cacheKey, result);\n\n return result;\n } catch (error) {\n console.error(\n `[DynamicWidgetLoader] Error loading widget ${widgetName}:`,\n error\n );\n throw error;\n }\n }\n\n /**\n * Load and parse a .dash.js configuration file\n * @param {string} configPath - Path to the .dash.js file\n * @returns {Promise<Object>} Configuration object\n */\n async loadConfigFile(configPath) {\n try {\n const source = fs.readFileSync(configPath, \"utf8\");\n\n const exportMatch = source.match(\n /export\\s+default\\s+({[\\s\\S]*});?\\s*$/\n );\n\n if (!exportMatch) {\n throw new Error(\"Could not find default export in config file\");\n }\n\n const exportedObjectStr = exportMatch[1];\n\n const context = vm.createContext({ module: { exports: {} } });\n vm.runInContext(`module.exports = ${exportedObjectStr}`, context);\n\n return context.module.exports;\n } catch (error) {\n console.error(`[DynamicWidgetLoader] Error loading config:`, error);\n throw error;\n }\n }\n\n /**\n * Discover available widgets in a directory\n * @param {string} widgetPath - Path to search for widgets\n * @returns {Array} List of available widget names\n */\n discoverWidgets(widgetPath) {\n try {\n const widgetsDir = findWidgetsDir(widgetPath);\n if (!widgetsDir) {\n return [];\n }\n\n const files = fs.readdirSync(widgetsDir);\n const widgets = new Set();\n\n files.forEach((file) => {\n if (file.endsWith(\".dash.js\")) {\n const componentName = file.replace(\".dash.js\", \"\");\n widgets.add(componentName);\n }\n });\n\n return Array.from(widgets);\n } catch (error) {\n console.error(\n `[DynamicWidgetLoader] Error discovering widgets:`,\n error\n );\n return [];\n }\n }\n\n /**\n * Clear cache\n */\n clearCache() {\n this.loadedWidgets.clear();\n this.moduleCache.clear();\n }\n}\n\nconst dynamicWidgetLoader = new DynamicWidgetLoader();\n\nmodule.exports = DynamicWidgetLoader;\nmodule.exports.dynamicWidgetLoader = dynamicWidgetLoader;\n","/**\n * Widget Registry System\n *\n * Manages widget discovery, download, and dynamic loading\n * Widgets are expected to have:\n * - package.json (or dash.json) with metadata\n * - widgets/ folder containing [WidgetName].js and [WidgetName].dash.js\n *\n * Files are stored in the Electron app's userData directory:\n * - macOS: ~/Library/Application Support/[appName]/\n * - Windows: %APPDATA%/[appName]/\n * - Linux: ~/.config/[appName]/\n */\n\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst os = require(\"os\");\nconst AdmZip = require(\"adm-zip\");\nconst { fileURLToPath } = require(\"url\");\nconst { app, ipcMain, BrowserWindow } = require(\"electron\");\nconst { dynamicWidgetLoader } = require(\"./dynamicWidgetLoader\");\nconst { compileWidget, findWidgetsDir } = require(\"./widgetCompiler\");\n\nlet WIDGETS_CACHE_DIR = null;\nlet REGISTRY_CONFIG_FILE = null;\n\n/**\n * Validate ZIP entries to prevent path traversal attacks.\n * Rejects entries containing '..' segments or absolute paths that would\n * write outside the target extraction directory.\n * @param {AdmZip} zip - AdmZip instance\n * @param {string} targetDir - Intended extraction directory\n * @throws {Error} If any entry would escape the target directory\n */\nfunction validateZipEntries(zip, targetDir) {\n const resolvedTarget = path.resolve(targetDir);\n for (const entry of zip.getEntries()) {\n const entryPath = entry.entryName;\n // Reject entries with '..' path segments\n if (\n entryPath.split(\"/\").includes(\"..\") ||\n entryPath.split(\"\\\\\").includes(\"..\")\n ) {\n throw new Error(\n `Malicious ZIP entry rejected (path traversal): ${entryPath}`\n );\n }\n // Reject absolute paths\n if (path.isAbsolute(entryPath)) {\n throw new Error(\n `Malicious ZIP entry rejected (absolute path): ${entryPath}`\n );\n }\n // Final check: resolved path must be within target directory\n const resolvedEntry = path.resolve(resolvedTarget, entryPath);\n if (\n !resolvedEntry.startsWith(resolvedTarget + path.sep) &&\n resolvedEntry !== resolvedTarget\n ) {\n throw new Error(\n `Malicious ZIP entry rejected (escapes target): ${entryPath}`\n );\n }\n }\n}\n\n/**\n * Initialize registry with custom path or default userData path\n * @param {string} customPath - Optional custom path for storing widgets\n */\nfunction initializeRegistry(customPath = null) {\n if (customPath) {\n WIDGETS_CACHE_DIR = path.join(customPath, \"widgets\");\n } else {\n WIDGETS_CACHE_DIR = path.join(app.getPath(\"userData\"), \"widgets\");\n }\n REGISTRY_CONFIG_FILE = path.join(WIDGETS_CACHE_DIR, \"registry.json\");\n console.log(`[WidgetRegistry] Using storage path: ${WIDGETS_CACHE_DIR}`);\n}\n\nclass WidgetRegistry {\n constructor(componentManager = null, customPath = null) {\n if (!WIDGETS_CACHE_DIR) {\n initializeRegistry(customPath);\n }\n\n this.widgets = new Map();\n this.componentManager = componentManager;\n this.ensureCacheDir();\n this.loadRegistry();\n }\n\n /**\n * Static method to initialize registry with custom path\n * Call this early in your app startup (e.g., in main.js)\n * @param {string} customPath - Custom path for storing widgets/configs\n */\n static initialize(customPath = null) {\n initializeRegistry(customPath);\n }\n\n /**\n * Set ComponentManager instance for automatic widget registration\n * @param {Object} manager - ComponentManager instance from @trops/dash-react\n */\n setComponentManager(manager) {\n this.componentManager = manager;\n }\n\n /**\n * Ensure cache directory exists\n */\n ensureCacheDir() {\n if (!fs.existsSync(WIDGETS_CACHE_DIR)) {\n fs.mkdirSync(WIDGETS_CACHE_DIR, { recursive: true });\n }\n }\n\n /**\n * Load registry from disk\n */\n loadRegistry() {\n try {\n if (fs.existsSync(REGISTRY_CONFIG_FILE)) {\n const data = fs.readFileSync(REGISTRY_CONFIG_FILE, \"utf8\");\n const registryData = JSON.parse(data);\n this.widgets = new Map(registryData.widgets || []);\n console.log(\n `[WidgetRegistry] Loaded ${this.widgets.size} widgets from cache`\n );\n }\n } catch (error) {\n console.error(\"[WidgetRegistry] Error loading registry:\", error);\n }\n }\n\n /**\n * Save registry to disk\n */\n saveRegistry() {\n try {\n const registryData = {\n lastUpdated: new Date().toISOString(),\n widgets: Array.from(this.widgets.entries()),\n };\n fs.writeFileSync(\n REGISTRY_CONFIG_FILE,\n JSON.stringify(registryData, null, 2)\n );\n } catch (error) {\n console.error(\"[WidgetRegistry] Error saving registry:\", error);\n }\n }\n\n /**\n * Resolve download URL from partial template or full URL\n * Supports placeholders: {version}, {name}\n *\n * Examples:\n * - Full URL: \"https://github.com/user/widget/releases/download/v1.0.0/widget.zip\"\n * - Template: \"https://github.com/user/weather-widget/releases/download/v{version}/weather-widget.zip\"\n * - Partial: \"https://github.com/user/weather-widget/releases/download/\" (auto-generates v{version}/{name}.zip)\n *\n * @param {string} urlTemplate - URL template or partial URL\n * @param {string} version - Widget version (e.g., \"1.0.0\")\n * @param {string} name - Widget name (e.g., \"weather-widget\")\n * @returns {string} Resolved download URL\n */\n resolveDownloadUrl(urlTemplate, version, name) {\n if (!urlTemplate) return null;\n\n if (urlTemplate.endsWith(\"/\")) {\n return `${urlTemplate}v${version}/${name}.zip`;\n }\n\n let url = urlTemplate;\n url = url.replace(\"{version}\", version);\n url = url.replace(\"{name}\", name);\n return url;\n }\n\n /**\n * Determine if the input points to a local path (file:// or filesystem path)\n * @param {string} input - URL or path\n * @returns {boolean}\n */\n isLocalSource(input) {\n if (!input) return false;\n if (input.startsWith(\"file://\")) return true;\n if (input.startsWith(\"http://\") || input.startsWith(\"https://\"))\n return false;\n const resolvedPath = this.resolveLocalPath(input);\n return fs.existsSync(resolvedPath);\n }\n\n /**\n * Normalize a local path (supports file:// and ~)\n * @param {string} input - Local path or file:// URL\n * @returns {string}\n */\n resolveLocalPath(input) {\n if (input.startsWith(\"file://\")) {\n return fileURLToPath(input);\n }\n if (input.startsWith(\"~\")) {\n return path.join(os.homedir(), input.slice(1));\n }\n return path.resolve(input);\n }\n\n /**\n * Install a widget from a local ZIP file or folder path\n * @param {string} widgetName - Name of the widget\n * @param {string} localPath - Path to ZIP file or widget folder\n * @param {boolean} autoRegister - Automatically register with ComponentManager\n * @param {string} dashConfigPath - Optional: path to dash.json metadata file\n * @returns {Promise<Object>} Widget configuration\n */\n async installFromLocalPath(\n widgetName,\n localPath,\n autoRegister = true,\n dashConfigPath = null\n ) {\n try {\n const resolvedPath = this.resolveLocalPath(localPath);\n\n if (!fs.existsSync(resolvedPath)) {\n throw new Error(`Local path not found: ${resolvedPath}`);\n }\n\n const widgetPath = path.join(WIDGETS_CACHE_DIR, widgetName);\n\n if (fs.existsSync(widgetPath)) {\n fs.rmSync(widgetPath, { recursive: true });\n }\n\n const isDirectory = fs.statSync(resolvedPath).isDirectory();\n if (isDirectory) {\n fs.cpSync(resolvedPath, widgetPath, { recursive: true });\n } else if (resolvedPath.endsWith(\".zip\")) {\n const zip = new AdmZip(resolvedPath);\n validateZipEntries(zip, widgetPath);\n zip.extractAllTo(widgetPath, true);\n } else {\n throw new Error(\n `Unsupported local source type: ${resolvedPath}`\n );\n }\n\n let config = await this.loadWidgetConfig(widgetName, widgetPath);\n\n if (dashConfigPath) {\n const configPath = this.resolveLocalPath(dashConfigPath);\n if (fs.existsSync(configPath)) {\n const dashConfig = JSON.parse(\n fs.readFileSync(configPath, \"utf8\")\n );\n config = { ...config, ...dashConfig };\n }\n }\n\n this.registerWidget(widgetName, config, widgetPath, false);\n\n if (autoRegister) {\n await this.loadWidgetComponents(widgetName, widgetPath);\n }\n\n return config;\n } catch (error) {\n console.error(\n `[WidgetRegistry] Error installing local widget ${widgetName}:`,\n error\n );\n throw error;\n }\n }\n\n /**\n * Check if a directory looks like a valid widget folder.\n * A directory is a widget if it has:\n * - package.json or dash.json at its root, OR\n * - A widgets/ subdirectory containing at least one .dash.js file\n * @param {string} dirPath - Path to the directory\n * @returns {boolean}\n */\n isWidgetFolder(dirPath) {\n if (fs.existsSync(path.join(dirPath, \"package.json\"))) return true;\n if (fs.existsSync(path.join(dirPath, \"dash.json\"))) return true;\n\n const widgetsDir = path.join(dirPath, \"widgets\");\n if (\n fs.existsSync(widgetsDir) &&\n fs.statSync(widgetsDir).isDirectory()\n ) {\n const files = fs.readdirSync(widgetsDir);\n if (files.some((f) => f.endsWith(\".dash.js\"))) return true;\n }\n\n return false;\n }\n\n /**\n * Register all widgets found in a local folder.\n *\n * Smart detection:\n * 1. If the selected folder itself is a widget, install it directly.\n * 2. Otherwise iterate subdirectories, skipping non-widget dirs.\n *\n * @param {string} folderPath - Path containing widget folders (or a single widget folder)\n * @param {boolean} autoRegister - Automatically register with ComponentManager\n * @returns {Promise<Array>} Registered widgets (with optional `mode` and `skipped` metadata)\n */\n async registerWidgetsFromFolder(folderPath, autoRegister = true) {\n const SKIP_DIRS = new Set([\"node_modules\", \"dist\", \"__MACOSX\", \".git\"]);\n\n try {\n const resolvedPath = this.resolveLocalPath(folderPath);\n if (!fs.existsSync(resolvedPath)) {\n throw new Error(`Folder not found: ${resolvedPath}`);\n }\n if (!fs.statSync(resolvedPath).isDirectory()) {\n throw new Error(`Path is not a directory: ${resolvedPath}`);\n }\n\n // 1. Check if the selected folder itself is a widget\n if (this.isWidgetFolder(resolvedPath)) {\n const widgetName = path.basename(resolvedPath);\n const config = await this.installFromLocalPath(\n widgetName,\n resolvedPath,\n autoRegister\n );\n return [\n {\n name: widgetName,\n path: resolvedPath,\n ...config,\n mode: \"single\",\n },\n ];\n }\n\n // 2. Iterate subdirectories with filtering\n const entries = fs.readdirSync(resolvedPath, {\n withFileTypes: true,\n });\n const results = [];\n let skipped = 0;\n\n for (const entry of entries) {\n if (!entry.isDirectory()) continue;\n\n // Skip hidden dirs and known non-widget dirs\n if (entry.name.startsWith(\".\") || SKIP_DIRS.has(entry.name)) {\n skipped++;\n continue;\n }\n\n const widgetPath = path.join(resolvedPath, entry.name);\n\n if (!this.isWidgetFolder(widgetPath)) {\n skipped++;\n continue;\n }\n\n const config = await this.loadWidgetConfig(\n entry.name,\n widgetPath\n );\n this.registerWidget(entry.name, config, widgetPath, false);\n\n if (autoRegister) {\n await this.loadWidgetComponents(entry.name, widgetPath);\n }\n\n results.push({\n name: entry.name,\n path: widgetPath,\n ...config,\n });\n }\n\n // Attach skipped count as metadata on the array\n results.skipped = skipped;\n return results;\n } catch (error) {\n console.error(\n \"[WidgetRegistry] Error registering widgets from folder:\",\n error\n );\n throw error;\n }\n }\n\n /**\n * Download widget from URL (ZIP file)\n * @param {string} widgetName - Name of the widget\n * @param {string} downloadUrl - URL to download ZIP file from (supports templates and partial URLs)\n * @param {string} dashConfigUrl - Optional: URL to dash.json metadata file\n * @param {boolean} autoRegister - Automatically register with ComponentManager\n * @returns {Promise<Object>} Widget configuration\n */\n async downloadWidget(\n widgetName,\n downloadUrl,\n dashConfigUrl = null,\n autoRegister = true\n ) {\n try {\n if (this.isLocalSource(downloadUrl)) {\n return this.installFromLocalPath(\n widgetName,\n downloadUrl,\n autoRegister,\n dashConfigUrl\n );\n }\n // Enforce HTTPS to prevent MITM attacks on widget downloads\n const parsedUrl = new URL(downloadUrl);\n if (parsedUrl.protocol !== \"https:\") {\n throw new Error(\n `Widget downloads must use HTTPS. Refusing to fetch: ${downloadUrl}`\n );\n }\n\n console.log(\n `[WidgetRegistry] Downloading widget: ${widgetName} from ${downloadUrl}`\n );\n\n const response = await fetch(downloadUrl);\n if (!response.ok)\n throw new Error(`Failed to fetch: ${response.statusText}`);\n\n const buffer = await response.arrayBuffer();\n const zip = new AdmZip(Buffer.from(buffer));\n\n const widgetPath = path.join(WIDGETS_CACHE_DIR, widgetName);\n\n if (fs.existsSync(widgetPath)) {\n fs.rmSync(widgetPath, { recursive: true });\n }\n\n validateZipEntries(zip, widgetPath);\n zip.extractAllTo(widgetPath, true);\n console.log(`[WidgetRegistry] Extracted widget to: ${widgetPath}`);\n\n let config = await this.loadWidgetConfig(widgetName, widgetPath);\n\n if (dashConfigUrl) {\n const dashConfig = await this.fetchJSON(dashConfigUrl);\n config = { ...config, ...dashConfig };\n }\n\n this.registerWidget(widgetName, config, widgetPath, false);\n\n if (autoRegister) {\n await this.loadWidgetComponents(widgetName, widgetPath);\n }\n\n return config;\n } catch (error) {\n console.error(\n `[WidgetRegistry] Error downloading widget ${widgetName}:`,\n error\n );\n throw error;\n }\n }\n\n /**\n * Load widget configuration from local path\n * @param {string} widgetName - Name of the widget\n * @param {string} widgetPath - Path to widget directory\n * @returns {Promise<Object>} Widget configuration\n */\n async loadWidgetConfig(widgetName, widgetPath) {\n try {\n const dashJsonPath = path.join(widgetPath, \"dash.json\");\n if (fs.existsSync(dashJsonPath)) {\n const data = fs.readFileSync(dashJsonPath, \"utf8\");\n return JSON.parse(data);\n }\n\n const packageJsonPath = path.join(widgetPath, \"package.json\");\n if (fs.existsSync(packageJsonPath)) {\n const packageJson = JSON.parse(\n fs.readFileSync(packageJsonPath, \"utf8\")\n );\n return {\n name: packageJson.name || widgetName,\n version: packageJson.version,\n description: packageJson.description,\n author: packageJson.author,\n repository: packageJson.repository,\n };\n }\n\n return {\n name: widgetName,\n version: \"1.0.0\",\n };\n } catch (error) {\n console.error(\n `[WidgetRegistry] Error loading config for ${widgetName}:`,\n error\n );\n return { name: widgetName };\n }\n }\n\n /**\n * Register a widget in the registry\n * @param {string} widgetName - Name of the widget\n * @param {Object} config - Widget configuration\n * @param {string} widgetPath - Path to widget directory\n * @param {boolean} autoRegister - Automatically register with ComponentManager\n */\n registerWidget(widgetName, config, widgetPath, autoRegister = true) {\n const widgetEntry = {\n name: widgetName,\n path: widgetPath,\n ...config,\n registeredAt: new Date().toISOString(),\n };\n\n this.widgets.set(widgetName, widgetEntry);\n this.saveRegistry();\n console.log(`[WidgetRegistry] Registered widget: ${widgetName}`);\n }\n\n /**\n * Load all components for a widget and register them with ComponentManager\n * @param {string} widgetName - Name of the widget\n * @param {string} widgetPath - Path to widget directory\n */\n async loadWidgetComponents(widgetName, widgetPath) {\n try {\n // Auto-compile widget source to CJS bundle if none exists\n if (!findBundlePath(widgetPath)) {\n try {\n await compileWidget(widgetPath);\n console.log(`[WidgetRegistry] Auto-compiled ${widgetName}`);\n } catch (compileError) {\n console.warn(\n `[WidgetRegistry] Could not compile ${widgetName}:`,\n compileError\n );\n }\n }\n\n if (this.componentManager) {\n dynamicWidgetLoader.setComponentManager(this.componentManager);\n }\n\n const components = dynamicWidgetLoader.discoverWidgets(widgetPath);\n console.log(\n `[WidgetRegistry] Found ${components.length} components in ${widgetName}`\n );\n\n const existingEntry = this.widgets.get(widgetName);\n let registryUpdated = false;\n\n // Store component names as displayName on the registry entry\n // so settings UI shows \"WeatherWidget\" instead of \"weather-widget\"\n if (components.length > 0 && existingEntry) {\n existingEntry.displayName = components.join(\", \");\n existingEntry.componentNames = components;\n registryUpdated = true;\n }\n\n for (const componentName of components) {\n try {\n const result = await dynamicWidgetLoader.loadWidget(\n widgetName,\n widgetPath,\n componentName,\n true\n );\n console.log(`[WidgetRegistry] ✓ Loaded ${componentName}`);\n\n // Enrich registry entry with .dash.js config fields\n // (icon, providers, workspace, etc.) so the settings UI\n // has full display data without needing ComponentManager.\n if (result?.config && existingEntry) {\n const cfg = result.config;\n if (cfg.icon && !existingEntry.icon)\n existingEntry.icon = cfg.icon;\n if (\n cfg.providers?.length &&\n !existingEntry.providers?.length\n )\n existingEntry.providers = cfg.providers;\n if (cfg.workspace && !existingEntry.workspace)\n existingEntry.workspace = cfg.workspace;\n if (cfg.events?.length && !existingEntry.events?.length)\n existingEntry.events = cfg.events;\n if (\n cfg.eventHandlers?.length &&\n !existingEntry.eventHandlers?.length\n )\n existingEntry.eventHandlers = cfg.eventHandlers;\n registryUpdated = true;\n }\n } catch (error) {\n console.error(\n `[WidgetRegistry] Error loading component ${componentName}:`,\n error\n );\n }\n }\n\n if (registryUpdated && existingEntry) {\n this.widgets.set(widgetName, existingEntry);\n this.saveRegistry();\n }\n } catch (error) {\n console.error(\n \"[WidgetRegistry] Error loading widget components:\",\n error\n );\n }\n }\n\n /**\n * Get all registered widgets\n * @returns {Array} List of widget configurations\n */\n getWidgets() {\n return Array.from(this.widgets.values());\n }\n\n /**\n * Get widget by name\n * @param {string} widgetName - Name of the widget\n * @returns {Object|null} Widget configuration or null\n */\n getWidget(widgetName) {\n return this.widgets.get(widgetName) || null;\n }\n\n /**\n * Uninstall a widget\n * @param {string} widgetName - Name of the widget to remove\n */\n uninstallWidget(widgetName) {\n const widget = this.widgets.get(widgetName);\n if (!widget) {\n console.warn(`[WidgetRegistry] Widget not found: ${widgetName}`);\n return false;\n }\n\n try {\n if (fs.existsSync(widget.path)) {\n fs.rmSync(widget.path, { recursive: true });\n }\n this.widgets.delete(widgetName);\n this.saveRegistry();\n console.log(`[WidgetRegistry] Uninstalled widget: ${widgetName}`);\n return true;\n } catch (error) {\n console.error(\n `[WidgetRegistry] Error uninstalling ${widgetName}:`,\n error\n );\n return false;\n }\n }\n\n /**\n * Helper: Fetch JSON from URL\n */\n async fetchJSON(url) {\n const response = await fetch(url);\n if (!response.ok)\n throw new Error(`Failed to fetch: ${response.statusText}`);\n return response.json();\n }\n\n /**\n * Get cache directory path\n */\n getCachePath() {\n return WIDGETS_CACHE_DIR;\n }\n\n /**\n * Get the storage directory (parent of widgets directory)\n * @returns {string} Full path to storage directory\n */\n getStoragePath() {\n return path.dirname(WIDGETS_CACHE_DIR);\n }\n}\n\n// Lazy initialization to avoid accessing app.getPath before app is ready\nlet widgetRegistry = null;\n\nfunction getWidgetRegistry() {\n if (!widgetRegistry) {\n widgetRegistry = new WidgetRegistry();\n }\n return widgetRegistry;\n}\n\n/**\n * Look for a CJS bundle file in a widget directory.\n * Checks multiple candidate paths in priority order because\n * packageZip.js may extract dist/ contents to the widget root.\n *\n * @param {string} widgetPath - Path to the widget directory\n * @returns {string|null} Absolute path to the bundle, or null if not found\n */\nfunction findBundlePath(widgetPath) {\n const candidates = [\n path.join(widgetPath, \"dist\", \"index.cjs.js\"),\n path.join(widgetPath, \"index.cjs.js\"),\n path.join(widgetPath, \"dist\", \"index.js\"),\n path.join(widgetPath, \"index.js\"),\n ];\n\n for (const candidate of candidates) {\n if (fs.existsSync(candidate)) {\n return candidate;\n }\n }\n\n return null;\n}\n\n/**\n * Setup IPC handlers for widget management (use in main.js)\n */\nfunction setupWidgetRegistryHandlers() {\n ipcMain.handle(\"widget:list\", () => getWidgetRegistry().getWidgets());\n\n ipcMain.handle(\"widget:get\", (event, widgetName) => {\n return getWidgetRegistry().getWidget(widgetName);\n });\n\n ipcMain.handle(\n \"widget:install\",\n async (event, widgetName, downloadUrl, dashConfigUrl) => {\n const config = await getWidgetRegistry().downloadWidget(\n widgetName,\n downloadUrl,\n dashConfigUrl\n );\n\n BrowserWindow.getAllWindows().forEach((win) => {\n win.webContents.send(\"widget:installed\", {\n widgetName,\n config,\n });\n });\n\n return config;\n }\n );\n\n ipcMain.handle(\n \"widget:install-local\",\n async (event, widgetName, localPath, dashConfigPath) => {\n const config = await getWidgetRegistry().installFromLocalPath(\n widgetName,\n localPath,\n true,\n dashConfigPath\n );\n\n BrowserWindow.getAllWindows().forEach((win) => {\n win.webContents.send(\"widget:installed\", {\n widgetName,\n config,\n });\n });\n\n return config;\n }\n );\n\n ipcMain.handle(\"widget:load-folder\", async (event, folderPath) => {\n const results = await getWidgetRegistry().registerWidgetsFromFolder(\n folderPath,\n true\n );\n\n BrowserWindow.getAllWindows().forEach((win) => {\n win.webContents.send(\"widgets:loaded\", {\n count: results.length,\n widgets: results,\n });\n });\n\n return results;\n });\n\n ipcMain.handle(\"widget:uninstall\", (event, widgetName) => {\n return getWidgetRegistry().uninstallWidget(widgetName);\n });\n\n ipcMain.handle(\"widget:cache-path\", () =>\n getWidgetRegistry().getCachePath()\n );\n\n ipcMain.handle(\"widget:storage-path\", () =>\n getWidgetRegistry().getStoragePath()\n );\n\n ipcMain.handle(\"widget:get-component-configs\", async () => {\n try {\n const registry = getWidgetRegistry();\n const installedWidgets = registry.getWidgets();\n const configs = [];\n\n for (const widget of installedWidgets) {\n const widgetPath = widget.path;\n if (!widgetPath || !fs.existsSync(widgetPath)) continue;\n\n const componentNames =\n dynamicWidgetLoader.discoverWidgets(widgetPath);\n const widgetsDir = findWidgetsDir(widgetPath);\n for (const componentName of componentNames) {\n try {\n const configPath = path.join(\n widgetsDir || path.join(widgetPath, \"widgets\"),\n `${componentName}.dash.js`\n );\n const config = await dynamicWidgetLoader.loadConfigFile(\n configPath\n );\n configs.push({\n componentName,\n widgetPackage: widget.name,\n config,\n });\n } catch (err) {\n console.error(\n `[WidgetRegistry] Error loading config for ${componentName}:`,\n err\n );\n }\n }\n }\n\n return configs;\n } catch (error) {\n console.error(\n \"[WidgetRegistry] Error getting component configs:\",\n error\n );\n return [];\n }\n });\n\n ipcMain.handle(\"widget:read-bundle\", async (event, widgetName) => {\n try {\n const registry = getWidgetRegistry();\n const widget = registry.getWidget(widgetName);\n if (!widget || !widget.path) {\n return {\n success: false,\n error: `Widget not found: ${widgetName}`,\n };\n }\n\n let bundlePath = findBundlePath(widget.path);\n\n // Auto-compile if no bundle exists (same as read-all-bundles)\n if (!bundlePath) {\n try {\n const compiled = await compileWidget(widget.path);\n if (compiled) {\n bundlePath = compiled;\n }\n } catch (compileError) {\n console.warn(\n `[WidgetRegistry] Could not compile ${widgetName}:`,\n compileError\n );\n }\n }\n\n if (!bundlePath) {\n return {\n success: false,\n error: `No bundle found in: ${widget.path}`,\n };\n }\n\n const source = fs.readFileSync(bundlePath, \"utf8\");\n return { success: true, source, widgetName };\n } catch (error) {\n console.error(\n `[WidgetRegistry] Error reading bundle for ${widgetName}:`,\n error\n );\n return { success: false, error: error.message };\n }\n });\n\n ipcMain.handle(\"widget:read-all-bundles\", async () => {\n try {\n const registry = getWidgetRegistry();\n const installedWidgets = registry.getWidgets();\n const results = [];\n\n for (const widget of installedWidgets) {\n const widgetPath = widget.path;\n if (!widgetPath || !fs.existsSync(widgetPath)) continue;\n\n let bundlePath = findBundlePath(widgetPath);\n\n // Auto-compile if no bundle exists\n if (!bundlePath) {\n try {\n const compiled = await compileWidget(widgetPath);\n if (compiled) {\n bundlePath = compiled;\n }\n } catch (compileError) {\n console.warn(\n `[WidgetRegistry] Could not compile ${widget.name}:`,\n compileError\n );\n }\n }\n\n if (!bundlePath) {\n console.log(\n `[WidgetRegistry] No CJS bundle for ${widget.name}, skipping (will use config fallback)`\n );\n continue;\n }\n\n try {\n const source = fs.readFileSync(bundlePath, \"utf8\");\n results.push({\n widgetName: widget.name,\n source,\n });\n } catch (readError) {\n console.error(\n `[WidgetRegistry] Error reading bundle for ${widget.name}:`,\n readError\n );\n }\n }\n\n return results;\n } catch (error) {\n console.error(\"[WidgetRegistry] Error reading all bundles:\", error);\n return [];\n }\n });\n\n ipcMain.handle(\"widget:set-storage-path\", (event, customPath) => {\n try {\n WidgetRegistry.initialize(customPath);\n console.log(\n `[WidgetRegistry] Storage path changed to: ${customPath}`\n );\n return { success: true, path: customPath };\n } catch (error) {\n console.error(\n \"[WidgetRegistry] Error setting storage path:\",\n error\n );\n return { success: false, error: error.message };\n }\n });\n}\n\nmodule.exports = WidgetRegistry;\nmodule.exports.getWidgetRegistry = getWidgetRegistry;\n// For backward compatibility, provide widgetRegistry as a getter\nObject.defineProperty(module.exports, \"widgetRegistry\", {\n get: getWidgetRegistry,\n});\nmodule.exports.setupWidgetRegistryHandlers = setupWidgetRegistryHandlers;\n","/**\n * mainApi.js\n *\n * Factory for creating the main API object exposed to the renderer via contextBridge.\n * Core APIs are included by default. Template-specific APIs (algolia, openai, etc.)\n * can be added via the extensions parameter.\n *\n * Usage in template's preload.js:\n *\n * const { createMainApi } = require(\"@trops/dash-core/electron\");\n * const algoliaApi = require(\"./api/algoliaApi\");\n * const openaiApi = require(\"./api/openaiApi\");\n *\n * const mainApi = createMainApi({\n * algolia: algoliaApi,\n * openai: openaiApi,\n * menuItems: menuItemsApi,\n * plugins: pluginApi,\n * });\n *\n * contextBridge.exposeInMainWorld(\"mainApi\", mainApi);\n */\nconst { ipcRenderer, shell } = require(\"electron\");\nconst secureStoreApi = require(\"./secureStoreApi\");\nconst workspaceApi = require(\"./workspaceApi\");\nconst layoutApi = require(\"./layoutApi\");\nconst dataApi = require(\"./dataApi\");\nconst settingsApi = require(\"./settingsApi\");\nconst dialogApi = require(\"./dialogApi\");\nconst widgetApi = require(\"./widgetApi\");\nconst providerApi = require(\"./providerApi\");\nconst mcpApi = require(\"./mcpApi\");\nconst registryApi = require(\"./registryApi\");\nconst themeApi = require(\"./themeApi\");\n\n// Events constants\nconst events = require(\"../events\");\n\n/**\n * Create the main API object with core APIs and optional extensions.\n *\n * @param {Object} extensions - Additional API namespaces to merge (e.g., { algolia: algoliaApi })\n * @returns {Object} The complete mainApi object\n */\nfunction createMainApi(extensions = {}) {\n const mainApi = {\n // the main application identifier to STORE the data in the application folder.\n appId: null,\n\n setAppId: (appId) => {\n console.log(\"setting appId in the api \", appId);\n mainApi.appId = appId;\n },\n\n // keep these for general use\n on: (event, fn) => {\n ipcRenderer.addListener(event, fn);\n },\n removeAllListeners: (name = null) => {\n // can remove all listeners for event\n if (name) ipcRenderer.removeAllListeners(name);\n },\n removeListener: (name, fn) => ipcRenderer.removeListener(name, fn),\n\n // Core APIs\n secureStoreApi: secureStoreApi,\n workspace: workspaceApi,\n layout: layoutApi,\n themes: themeApi,\n data: { appId: null, ...dataApi },\n settings: settingsApi,\n dialog: dialogApi,\n widgets: widgetApi,\n providers: providerApi,\n mcp: mcpApi,\n registry: registryApi,\n\n shell: {\n openPath: (path) => shell.openPath(path),\n openExternal: (url) => {\n if (\n typeof url === \"string\" &&\n (url.startsWith(\"http://\") || url.startsWith(\"https://\"))\n ) {\n return shell.openExternal(url);\n }\n },\n },\n\n // included these in the bridge\n events: { ...events },\n\n publicEvents: events.public,\n\n pathPlugins: \"\",\n\n // Merge template-specific extensions\n ...extensions,\n };\n\n return mainApi;\n}\n\n/**\n * Default mainApi for simple migration — includes only core APIs.\n * Templates that don't need extensions can use this directly.\n */\nconst defaultMainApi = createMainApi();\n\nmodule.exports = { createMainApi, defaultMainApi };\n","/**\n * @trops/dash-core/electron\n *\n * Electron main process layer — controllers, IPC handlers, and widget pipeline.\n */\n\n// --- Controllers (namespaced) ---\nconst dialogController = require(\"./controller/dialogController\");\nconst secureStoreController = require(\"./controller/secureStoreController\");\nconst workspaceController = require(\"./controller/workspaceController\");\nconst themeController = require(\"./controller/themeController\");\nconst dataController = require(\"./controller/dataController\");\nconst settingsController = require(\"./controller/settingsController\");\nconst providerController = require(\"./controller/providerController\");\nconst layoutController = require(\"./controller/layoutController\");\nconst mcpController = require(\"./controller/mcpController\");\nconst registryController = require(\"./controller/registryController\");\n\n// --- Controller functions (flat, for convenient destructuring) ---\nconst controllers = require(\"./controller\");\n\n// --- APIs (IPC handlers) ---\nconst secureStoreApi = require(\"./api/secureStoreApi\");\nconst workspaceApi = require(\"./api/workspaceApi\");\nconst layoutApi = require(\"./api/layoutApi\");\nconst dataApi = require(\"./api/dataApi\");\nconst settingsApi = require(\"./api/settingsApi\");\nconst dialogApi = require(\"./api/dialogApi\");\nconst widgetApi = require(\"./api/widgetApi\");\nconst providerApi = require(\"./api/providerApi\");\nconst mcpApi = require(\"./api/mcpApi\");\nconst registryApi = require(\"./api/registryApi\");\nconst themeApi = require(\"./api/themeApi\");\n\n// --- Events ---\nconst events = require(\"./events\");\n\n// --- Widget Pipeline ---\nconst widgetRegistry = require(\"./widgetRegistry\");\nconst widgetCompiler = require(\"./widgetCompiler\");\nconst dynamicWidgetLoader = require(\"./dynamicWidgetLoader\");\n\n// --- Factory: createMainApi ---\nconst { createMainApi, defaultMainApi } = require(\"./api/mainApi\");\n\nmodule.exports = {\n // Controllers (namespaced)\n dialogController,\n secureStoreController,\n workspaceController,\n themeController,\n dataController,\n settingsController,\n providerController,\n layoutController,\n mcpController,\n registryController,\n\n // Controller functions (flat) — spread for convenient destructuring\n ...controllers,\n\n // APIs\n secureStoreApi,\n workspaceApi,\n layoutApi,\n dataApi,\n settingsApi,\n dialogApi,\n widgetApi,\n providerApi,\n mcpApi,\n registryApi,\n themeApi,\n\n // Events\n events,\n\n // Widget Pipeline\n widgetRegistry,\n widgetCompiler,\n dynamicWidgetLoader,\n\n // Factory\n createMainApi,\n defaultMainApi,\n};\n"],"names":["SECURE_STORE_ENCRYPTION_CHECK","SECURE_STORE_GET_DATA","SECURE_STORE_SET_DATA","secureStorageEvents","WORKSPACE_LIST","WORKSPACE_SAVE","WORKSPACE_DELETE","workspaceEvents","LAYOUT_LIST","LAYOUT_SAVE","layoutEvents","THEME_LIST","THEME_SAVE","THEME_DELETE","themeEvents","DATA_JSON_TO_CSV_FILE","DATA_READ_FROM_FILE","DATA_SAVE_TO_FILE","DATA_JSON_TO_CSV_STRING","PARSE_XML_STREAM","PARSE_CSV_STREAM","READ_LINES","READ_JSON","READ_DATA_URL","TRANSFORM_FILE","EXTRACT_COLORS_FROM_IMAGE","dataEvents","SETTINGS_GET","SETTINGS_SAVE","SETTINGS_GET_DATA_DIR","SETTINGS_SET_DATA_DIR","SETTINGS_MIGRATE_DATA_DIR","settingsEvents","CHOOSE_FILE","dialogEvents","PROVIDER_SAVE","PROVIDER_LIST","PROVIDER_GET","PROVIDER_DELETE","providerEvents","MCP_START_SERVER","MCP_STOP_SERVER","MCP_LIST_TOOLS","MCP_CALL_TOOL","MCP_LIST_RESOURCES","MCP_READ_RESOURCE","MCP_SERVER_STATUS","MCP_GET_CATALOG","mcpEvents","registryEvents","require$$0","require$$1","require$$2","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","events","showDialog","fileChosenError","dialogController","safeStorage","isEncryptionAvailable","saveData","getData","secureStoreController","path","writeFileSync","ensureDirectoryExistence","getFileContents","writeToFile","app","configFilename","appName","workspaceController","themeController","fs","Transform","ntc","extractColorsFromImageURL","dataController","settingsController","providerController","layoutController","mcpController","registryController","ipcRenderer","secureStoreApi","workspaceApi","layoutApi","dataApi","settingsApi","dialogApi","widgetApi","providerApi","mcpApi","registryApi","themeApi","findWidgetsDir","widgetCompiler","dynamicWidgetLoader","dynamicWidgetLoaderModule","require$$10","require$$11","require$$12","createMainApi","defaultMainApi","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","require$$26"],"mappings":"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"}
|