@dpuse/dpuse-connector-application-emulator 0.0.9 → 0.0.12
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.
|
@@ -140,9 +140,9 @@ var h = [
|
|
|
140
140
|
}, _ = {
|
|
141
141
|
id: "dpuse-connector-application-emulator",
|
|
142
142
|
label: { en: "Application Emulator" },
|
|
143
|
-
description: { en: "
|
|
143
|
+
description: { en: "Provides access to a sample set of read-only application data simulating a hypothetical application database. It is intended for demonstration, evaluation, and testing and is freely available to all users. Since no authentication is required, it supports only a single connection." },
|
|
144
144
|
category: null,
|
|
145
|
-
categoryId: "
|
|
145
|
+
categoryId: "application",
|
|
146
146
|
firstCreatedAt: null,
|
|
147
147
|
implementations: { default: {
|
|
148
148
|
authMethodId: "none",
|
|
@@ -168,7 +168,7 @@ var h = [
|
|
|
168
168
|
vendorAccountURL: null,
|
|
169
169
|
vendorDocumentationURL: null,
|
|
170
170
|
vendorHomeURL: null,
|
|
171
|
-
version: "0.0.
|
|
171
|
+
version: "0.0.12"
|
|
172
172
|
}, v = "https://sample-data-eu.dpuse.app/application", y = class {
|
|
173
173
|
abortController;
|
|
174
174
|
config;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dpuse-connector-application-emulator.es.js","names":["scopedUrlAlphabet","e","t","n","r","i","t","e"],"sources":["../node_modules/nanoid/url-alphabet/index.js","../node_modules/nanoid/index.browser.js","../node_modules/@dpuse/dpuse-shared/dist/dpuse-shared-errors.es.js","../node_modules/@dpuse/dpuse-shared/dist/dpuse-shared-utilities.es.js","../node_modules/@dpuse/dpuse-shared/dist/dpuse-shared-componentModuleTool.es.js","../node_modules/@dpuse/dpuse-shared/dist/dpuse-shared-locale.es.js","../node_modules/@dpuse/dpuse-shared/dist/dpuse-shared-componentDataView.es.js","../src/applicationIndex.json","../config.json","../src/index.ts"],"sourcesContent":["export let urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n","/* @ts-self-types=\"./index.d.ts\" */\nimport { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let safeByteCutoff = 256 - (256 % alphabet.length)\n if (safeByteCutoff === 256) {\n let mask = alphabet.length - 1\n return (size = defaultSize) => {\n if (!size) return ''\n let id = ''\n while (true) {\n let bytes = getRandom(size)\n let j = size\n while (j--) {\n id += alphabet[bytes[j] & mask]\n if (id.length >= size) return id\n }\n }\n }\n }\n let step = Math.ceil((1.6 * 256 * defaultSize) / safeByteCutoff)\n return (size = defaultSize) => {\n if (!size) return ''\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n if (bytes[j] < safeByteCutoff) {\n id += alphabet[bytes[j] % alphabet.length]\n if (id.length >= size) return id\n }\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size | 0, random)\nexport let nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array((size |= 0)))\n while (size--) {\n id += scopedUrlAlphabet[bytes[size] & 63]\n }\n return id\n}\n","//#region src/errors/index.ts\nvar e = 2048, t = class extends Error {\n\tdata;\n\tlocator;\n\tconstructor(e, t, n, r) {\n\t\tsuper(e, r), this.name = \"DPUseError\", this.data = n, this.locator = t;\n\t}\n}, n = class extends t {\n\tconstructor(e, t, n, r) {\n\t\tsuper(e, t, n, r), this.name = \"AppError\";\n\t}\n}, r = class extends t {\n\tconstructor(e, t, n, r) {\n\t\tsuper(e, t, n, r), this.name = \"APIError\";\n\t}\n}, i = class extends t {\n\tconstructor(e, t, n, r) {\n\t\tsuper(e, t, n, r), this.name = \"EngineError\";\n\t}\n}, a = class extends t {\n\tconstructor(e, t, n, r) {\n\t\tsuper(e, t, n, r), this.name = \"ConnectorError\";\n\t}\n}, o = class extends t {\n\tconstructor(e, t, n, r) {\n\t\tsuper(e, t, n, r), this.name = \"FetchError\";\n\t}\n};\nasync function s(e, t, n) {\n\tlet r = ` - ${e.statusText}`, i = `${t} Response status '${e.status}${e.statusText ? r : \"\"}' received.`, a;\n\ttry {\n\t\ta = await e.text();\n\t} catch (e) {\n\t\ta = `<body unavailable: ${u(e).message}>`;\n\t}\n\treturn new o(i, n, { body: m(a) });\n}\nfunction c(e) {\n\treturn e.map((e) => e.message).join(\" \");\n}\nfunction l(e) {\n\ttry {\n\t\te();\n\t} catch {}\n}\nfunction u(e) {\n\tif (e instanceof Error) return e;\n\tif (typeof e == \"string\") return Error(e);\n\tif (typeof e == \"number\" || typeof e == \"boolean\" || typeof e == \"bigint\") return Error(String(e));\n\tif (typeof e == \"symbol\") return Error(e.description ?? \"Unknown error\");\n\tif (typeof e == \"object\") try {\n\t\treturn Error(JSON.stringify(e));\n\t} catch {\n\t\treturn /* @__PURE__ */ Error(\"Unknown error\");\n\t}\n\treturn /* @__PURE__ */ Error(\"Unknown error\");\n}\nfunction d(e) {\n\tlet t = /* @__PURE__ */ new Set(), n = [], r = u(e);\n\tfor (; r != null && !t.has(r);) {\n\t\tt.add(r);\n\t\tlet e;\n\t\tswitch (r.name) {\n\t\t\tcase \"APIError\": {\n\t\t\t\tlet t = r;\n\t\t\t\te = {\n\t\t\t\t\tdata: t.data,\n\t\t\t\t\tlocator: t.locator,\n\t\t\t\t\tmessage: r.message,\n\t\t\t\t\tname: \"APIError\",\n\t\t\t\t\tstack: r.stack\n\t\t\t\t}, r = r.cause == null ? null : u(r.cause);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"AppError\": {\n\t\t\t\tlet t = r;\n\t\t\t\te = {\n\t\t\t\t\tdata: t.data,\n\t\t\t\t\tlocator: t.locator,\n\t\t\t\t\tmessage: r.message,\n\t\t\t\t\tname: \"AppError\",\n\t\t\t\t\tstack: r.stack\n\t\t\t\t}, r = r.cause == null ? null : u(r.cause);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"ConnectorError\": {\n\t\t\t\tlet t = r;\n\t\t\t\te = {\n\t\t\t\t\tdata: t.data,\n\t\t\t\t\tlocator: t.locator,\n\t\t\t\t\tmessage: r.message,\n\t\t\t\t\tname: \"ConnectorError\",\n\t\t\t\t\tstack: r.stack\n\t\t\t\t}, r = r.cause == null ? null : u(r.cause);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"EngineError\": {\n\t\t\t\tlet t = r;\n\t\t\t\te = {\n\t\t\t\t\tdata: t.data,\n\t\t\t\t\tlocator: t.locator,\n\t\t\t\t\tmessage: r.message,\n\t\t\t\t\tname: \"EngineError\",\n\t\t\t\t\tstack: r.stack\n\t\t\t\t}, r = r.cause == null ? null : u(r.cause);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"FetchError\": {\n\t\t\t\tlet t = r;\n\t\t\t\te = {\n\t\t\t\t\tdata: t.data,\n\t\t\t\t\tlocator: t.locator,\n\t\t\t\t\tmessage: r.message,\n\t\t\t\t\tname: \"FetchError\",\n\t\t\t\t\tstack: r.stack\n\t\t\t\t}, r = r.cause == null ? null : u(r.cause);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tlet { cause: t, ...n } = Object.fromEntries(Object.entries(r));\n\t\t\t\tr.name ? (e = {\n\t\t\t\t\tdata: n,\n\t\t\t\t\tlocator: \"\",\n\t\t\t\t\tmessage: r.message,\n\t\t\t\t\tname: r.name,\n\t\t\t\t\tstack: r.stack\n\t\t\t\t}, r = r.cause == null ? null : u(r.cause)) : (e = {\n\t\t\t\t\tdata: n,\n\t\t\t\t\tlocator: \"\",\n\t\t\t\t\tmessage: p(r),\n\t\t\t\t\tname: \"Error\",\n\t\t\t\t\tstack: void 0\n\t\t\t\t}, r = null);\n\t\t}\n\t\t/(?:\\.{3}|[.!?])$/.test(e.message) || (e.message += \".\"), n.push(e);\n\t}\n\treturn n;\n}\nfunction f(e) {\n\tif (e.length === 0) return;\n\tlet t;\n\tfor (let s of e.toReversed()) {\n\t\tlet e;\n\t\tswitch (s.name) {\n\t\t\tcase \"APIError\":\n\t\t\t\te = new r(s.message, s.locator, s.data, { cause: t });\n\t\t\t\tbreak;\n\t\t\tcase \"AppError\":\n\t\t\t\te = new n(s.message, s.locator, s.data, { cause: t });\n\t\t\t\tbreak;\n\t\t\tcase \"ConnectorError\":\n\t\t\t\te = new a(s.message, s.locator, s.data, { cause: t });\n\t\t\t\tbreak;\n\t\t\tcase \"EngineError\":\n\t\t\t\te = new i(s.message, s.locator, s.data, { cause: t });\n\t\t\t\tbreak;\n\t\t\tcase \"FetchError\":\n\t\t\t\te = new o(s.message, s.locator, s.data, { cause: t });\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\te = Error(s.message, { cause: t }), e.name = s.name;\n\t\t\t\tbreak;\n\t\t}\n\t\ts.stack !== void 0 && (e.stack = s.stack), t = e;\n\t}\n\treturn t;\n}\nfunction p(e) {\n\tlet t;\n\ttry {\n\t\tt = JSON.stringify(e);\n\t} catch {\n\t\tt = typeof e == \"symbol\" ? e.description ?? \"Unknown error\" : typeof e == \"bigint\" ? e.toString() : \"Unknown error\";\n\t}\n\treturn t === \"\" && (t = \"Unknown error\"), t;\n}\nfunction m(t) {\n\tif (!(t == null || t === \"\")) return t.length > e ? `${t.slice(0, e)}... [truncated]` : t;\n}\n//#endregion\nexport { r as APIError, n as AppError, a as ConnectorError, t as DPUseError, i as EngineError, o as FetchError, s as buildFetchError, c as concatenateSerialisedErrorMessages, l as ignoreErrors, u as normalizeToError, d as serialiseError, f as unserialiseError };\n","//#region src/utilities/index.ts\nvar e = \"en-US\", t = /* @__PURE__ */ new Map();\nfunction n(e) {\n\tswitch (e) {\n\t\tcase \"Edm.Binary\": return \"unknown\";\n\t\tcase \"Edm.Boolean\": return \"boolean\";\n\t\tcase \"Edm.Byte\": return \"wholeNumber\";\n\t\tcase \"Edm.DateTime\": return \"moment\";\n\t\tcase \"Edm.DateTimeOffset\": return \"moment\";\n\t\tcase \"Edm.Decimal\": return \"decimalNumber\";\n\t\tcase \"Edm.Double\": return \"decimalNumber\";\n\t\tcase \"Edm.Guid\": return \"string\";\n\t\tcase \"Edm.Int16\": return \"wholeNumber\";\n\t\tcase \"Edm.Int32\": return \"wholeNumber\";\n\t\tcase \"Edm.Int64\": return \"wholeNumber\";\n\t\tcase \"Edm.SByte\": return \"wholeNumber\";\n\t\tcase \"Edm.Single\": return \"decimalNumber\";\n\t\tcase \"Edm.String\": return \"string\";\n\t\tcase \"Edm.Time\": return \"momentTime\";\n\t\tdefault: return \"unknown\";\n\t}\n}\nfunction r(e) {\n\tif (e) {\n\t\tlet t = e.lastIndexOf(\"/\") + 1, n = e.lastIndexOf(\".\");\n\t\treturn n <= t || n === -1 ? e : e.slice(0, Math.max(0, n));\n\t}\n}\nfunction i(e) {\n\tif (e) {\n\t\tlet t = e.lastIndexOf(\"/\") + 1, n = e.lastIndexOf(\".\");\n\t\tif (n <= t) return;\n\t\tif (n !== -1) return e.slice(Math.max(0, n + 1));\n\t}\n}\nfunction a(n, r = 2, i = r, a = e) {\n\tif (n == null) return \"\";\n\tlet o = `${a}decimal${r}.${i}`, s = t.get(o);\n\treturn s || (s = new Intl.NumberFormat(a, {\n\t\tlocaleMatcher: \"best fit\",\n\t\tmaximumFractionDigits: r,\n\t\tminimumFractionDigits: i,\n\t\tminimumIntegerDigits: 1,\n\t\tstyle: \"decimal\",\n\t\tuseGrouping: !0\n\t}), t.set(o, s)), s.format(n);\n}\nfunction o(e, t = 1) {\n\treturn e == null ? \"\" : e < 1e3 ? u(e) : e < 1e6 ? `${a(e / 1e3, t, 0)}K` : e < 1e9 ? `${a(e / 1e6, t, 0)}M` : e < 0xe8d4a51000 ? `${a(e / 1e9, t, 0)}B` : `${a(e / 0xe8d4a51000, t, 0)}T`;\n}\nfunction s(e, t = 1) {\n\treturn e == null ? \"\" : e === 1 ? \"1 byte\" : e < 1024 ? `${u(e)} bytes` : e < 1048576 ? `${a(e / 1024, t, 0)} KB` : e < 1073741824 ? `${a(e / 1048576, t, 0)} MB` : e < 1099511627776 ? `${a(e / 1073741824, t, 0)} GB` : `${a(e / 1099511627776, t, 0)} TB`;\n}\nvar c = [\n\t[\n\t\t\"days\",\n\t\t864e5,\n\t\t(e) => e === 1 ? \"1 day\" : `${u(e)} days`\n\t],\n\t[\n\t\t\"hrs\",\n\t\t36e5,\n\t\t(e) => e === 1 ? \"1 hr\" : `${u(e)} hrs`\n\t],\n\t[\n\t\t\"mins\",\n\t\t6e4,\n\t\t(e) => e === 1 ? \"1 min\" : `${u(e)} mins`\n\t],\n\t[\n\t\t\"secs\",\n\t\t1e3,\n\t\t(e) => e === 1 ? \"1 sec\" : `${u(e)} secs`\n\t],\n\t[\n\t\t\"ms\",\n\t\t0,\n\t\t(e) => `${u(e)} ms`\n\t]\n];\nfunction l(e, t = \"ms\") {\n\tif (e == null) return \"\";\n\tlet n = c.findIndex(([e]) => e === t);\n\tif (e < (c[n]?.[1] ?? 0)) {\n\t\tlet t = c.find(([, t]) => e >= t);\n\t\tif (t == null) return `${u(e)} ms`;\n\t\tlet [, n, r] = t;\n\t\treturn r(n > 0 ? Math.floor(e / n) : e);\n\t}\n\tlet r = [], i = e;\n\tfor (let [, e, t] of c.slice(0, n + 1)) e === 0 ? (i > 0 || r.length === 0) && r.push(t(i)) : i >= e && (r.push(t(Math.floor(i / e))), i %= e);\n\treturn r.join(\" \");\n}\nfunction u(n, r = e) {\n\tif (n == null) return \"\";\n\tlet i = `${r}decimal0.0`, a = t.get(i);\n\treturn a || (a = new Intl.NumberFormat(r, {\n\t\tlocaleMatcher: \"best fit\",\n\t\tmaximumFractionDigits: 0,\n\t\tminimumFractionDigits: 0,\n\t\tminimumIntegerDigits: 1,\n\t\tstyle: \"decimal\",\n\t\tuseGrouping: !0\n\t}), t.set(i, a)), a.format(n);\n}\nfunction d(e) {\n\tswitch (e) {\n\t\tcase \"csv\": return \"text/csv\";\n\t\tcase \"tab\":\n\t\tcase \"tsv\": return \"text/tab-separated-values\";\n\t\tcase \"xls\": return \"application/vnd.ms-excel\";\n\t\tcase \"xlsx\": return \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\n\t\tdefault: return \"application/octet-stream\";\n\t}\n}\n//#endregion\nexport { n as convertODataTypeIdToUsageTypeId, i as extractExtensionFromPath, r as extractNameFromPath, a as formatNumberAsDecimalNumber, l as formatNumberAsDuration, o as formatNumberAsSize, s as formatNumberAsStorageSize, u as formatNumberAsWholeNumber, d as lookupMimeTypeForExtension };\n","//#region src/component/module/tool/index.ts\nvar e = \"https://engine-eu.dpuse.app/tools\";\nasync function t(t, n) {\n\tlet r = `dpuse-tool-${n}`, i = t.find((e) => e.id === r);\n\tif (!i) throw Error(`Connector could not load unknown tool '${n}'.`);\n\treturn new (await (import(\n\t\t/* @vite-ignore */\n\t\t`${e}/${n}_v${i.version}/${r}.es.js`\n))).Tool();\n}\n//#endregion\nexport { t as loadTool };\n","//#region src/locale/index.ts\nvar e = \"en\", t = [{\n\tid: \"en\",\n\tflag: \"gb\",\n\tlabel: \"English\"\n}, {\n\tid: \"es\",\n\tflag: \"es\",\n\tlabel: \"Español\"\n}];\nfunction n(e) {\n\treturn new Map(Object.entries(e));\n}\nfunction r(e, t) {\n\treturn {\n\t\t...e,\n\t\tlabel: e.label[t] ?? e.id,\n\t\tdescription: e.description[t] ?? e.id,\n\t\tverb: e.verb?.[t] ?? void 0\n\t};\n}\nfunction i(e, t) {\n\treturn e.map((e) => ({\n\t\t...e,\n\t\tlabel: e.label[t] ?? e.id,\n\t\tdescription: e.description[t] ?? e.id,\n\t\tverb: e.verb?.[t] ?? void 0\n\t}));\n}\nfunction a(e, t, n = \"en\") {\n\tlet r = e.get(t);\n\tif (r !== void 0) return r;\n\tif (n !== t) return e.get(n);\n}\n//#endregion\nexport { e as DEFAULT_LOCALE_ID, t as SUPPORTED_LANGUAGES, n as createLabelMap, r as localiseConfig, i as localiseConfigs, a as resolveLabel };\n","import { createLabelMap as e } from \"./dpuse-shared-locale.es.js\";\ne({ en: \"Data Positioning Events\" }), e({ en: \"Delimited Text\" }), e({ en: \"JSON\" }), e({ en: \"SPSS\" }), e({ en: \"XLSX\" }), e({ en: \"XML\" }), e({ en: \"Newline\" }), e({ en: \"Carriage Return\" }), e({ en: \"Carriage Return/Newline\" }), e({ en: \"Colon\" }), e({ en: \"Comma\" }), e({ en: \"Exclamation Mark\" }), e({ en: \"Record Separator\" }), e({ en: \"Semicolon\" }), e({ en: \"Space\" }), e({ en: \"Tab\" }), e({ en: \"Underscore\" }), e({ en: \"Unit Separator\" }), e({ en: \"Vertical Bar\" });\nvar t = [\n\t\",\",\n\t\";\",\n\t\"\t\",\n\t\"|\",\n\t\" \",\n\t\":\",\n\t\"_\",\n\t\"!\",\n\t\"0x1F\",\n\t\"0x1E\"\n];\n//#endregion\nexport { t as ORDERED_VALUE_DELIMITER_IDS };\n","{\n \"\": [\n { \"childCount\": 1, \"name\": \"humanResources\", \"typeId\": \"folder\" },\n { \"id\": \"GGxX3yzmdW8_7G_MSwyi5\", \"lastModifiedAt\": 1774197102385.2441, \"name\": \"organisations.csv\", \"size\": 72, \"typeId\": \"object\" },\n { \"id\": \"14xGczulW60Z5vLEVVyZy\", \"lastModifiedAt\": 1774197102385.3625, \"name\": \"people.csv\", \"size\": 72320, \"typeId\": \"object\" }\n ],\n \"/humanResources\": [{ \"childCount\": 2, \"name\": \"workforce\", \"typeId\": \"folder\" }],\n \"/humanResources/workforce\": [\n { \"id\": \"XJgBt7TVnPf8l7-vArbui\", \"lastModifiedAt\": 1774197102385.1426, \"name\": \"empty.csv\", \"size\": 0, \"typeId\": \"object\" },\n { \"id\": \"_d5Au6rZg-0KlXPhkU0qj\", \"lastModifiedAt\": 1774197102385.1821, \"name\": \"engagements.csv\", \"size\": 0, \"typeId\": \"object\" }\n ]\n}\n","{\n \"id\": \"dpuse-connector-application-emulator\",\n \"label\": {\n \"en\": \"Application Emulator\"\n },\n \"description\": {\n \"en\": \"Imitates a hypothetical application database. It provides a read-only set of tables for demonstration, evaluation and testing purposes and is freely available to all users.\"\n },\n \"category\": null,\n \"categoryId\": \"fileStore\",\n \"firstCreatedAt\": null,\n \"implementations\": {\n \"default\": {\n \"authMethodId\": \"none\",\n \"maxConnectionCount\": 1\n }\n },\n \"icon\": \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke=\\\"black\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"M12 17v4\\\"/><path d=\\\"m14.305 7.53.923-.382\\\"/><path d=\\\"m15.228 4.852-.923-.383\\\"/><path d=\\\"m16.852 3.228-.383-.924\\\"/><path d=\\\"m16.852 8.772-.383.923\\\"/><path d=\\\"m19.148 3.228.383-.924\\\"/><path d=\\\"m19.53 9.696-.382-.924\\\"/><path d=\\\"m20.772 4.852.924-.383\\\"/><path d=\\\"m20.772 7.148.924.383\\\"/><path d=\\\"M22 13v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7\\\"/><path d=\\\"M8 21h8\\\"/><circle cx=\\\"18\\\" cy=\\\"6\\\" r=\\\"3\\\"/></svg>\",\n \"iconDark\": \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke=\\\"white\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"M12 17v4\\\"/><path d=\\\"m14.305 7.53.923-.382\\\"/><path d=\\\"m15.228 4.852-.923-.383\\\"/><path d=\\\"m16.852 3.228-.383-.924\\\"/><path d=\\\"m16.852 8.772-.383.923\\\"/><path d=\\\"m19.148 3.228.383-.924\\\"/><path d=\\\"m19.53 9.696-.382-.924\\\"/><path d=\\\"m20.772 4.852.924-.383\\\"/><path d=\\\"m20.772 7.148.924.383\\\"/><path d=\\\"M22 13v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7\\\"/><path d=\\\"M8 21h8\\\"/><circle cx=\\\"18\\\" cy=\\\"6\\\" r=\\\"3\\\"/></svg>\",\n \"iconNeutral\": \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"M12 17v4\\\"/><path d=\\\"m14.305 7.53.923-.382\\\"/><path d=\\\"m15.228 4.852-.923-.383\\\"/><path d=\\\"m16.852 3.228-.383-.924\\\"/><path d=\\\"m16.852 8.772-.383.923\\\"/><path d=\\\"m19.148 3.228.383-.924\\\"/><path d=\\\"m19.53 9.696-.382-.924\\\"/><path d=\\\"m20.772 4.852.924-.383\\\"/><path d=\\\"m20.772 7.148.924.383\\\"/><path d=\\\"M22 13v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7\\\"/><path d=\\\"M8 21h8\\\"/><circle cx=\\\"18\\\" cy=\\\"6\\\" r=\\\"3\\\"/></svg>\",\n \"lastUpdatedAt\": null,\n \"operations\": [\n \"abortOperation\",\n \"auditObjectContent\",\n \"findObject\",\n \"getReadableStream\",\n \"listNodes\",\n \"previewObject\",\n \"retrieveRecords\"\n ],\n \"status\": null,\n \"statusId\": \"beta\",\n \"typeId\": \"connector\",\n \"usageId\": \"source\",\n \"vendorAccountURL\": null,\n \"vendorDocumentationURL\": null,\n \"vendorHomeURL\": null,\n \"version\": \"0.0.9\"\n}","// External Dependencies\nimport { nanoid } from 'nanoid';\n\n// DPUse Framework\nimport type { ConnectionNodeConfig } from '@dpuse/dpuse-shared/component/connection';\nimport type {\n AuditObjectContentOptions,\n AuditObjectContentResult,\n ConnectorConfig,\n ConnectorInterface,\n ConnectorUtilities,\n FindObjectOptions,\n FindObjectResult,\n GetReadableStreamOptions,\n ListNodesOptions,\n ListNodesResult,\n PreviewObjectOptions,\n RetrievalTypeId,\n RetrieveRecordsOptions,\n RetrieveRecordsSummary\n} from '@dpuse/dpuse-shared/component/module/connector';\nimport { buildFetchError, ConnectorError, normalizeToError } from '@dpuse/dpuse-shared/errors';\nimport { extractExtensionFromPath, extractNameFromPath, lookupMimeTypeForExtension } from '@dpuse/dpuse-shared/utilities';\nimport { loadTool, type ToolConfig } from '@dpuse/dpuse-shared/component/module/tool';\nimport { ORDERED_VALUE_DELIMITER_IDS, type ParsingRecord, type PreviewConfig } from '@dpuse/dpuse-shared/component/dataView';\n\n// DPUse Tools\nimport type { Tool as CSVParseTool } from '@dpuse/dpuse-tool-csv-parse';\nimport type { Tool as FileOperatorsTool } from '@dpuse/dpuse-tool-file-operators';\nimport type { Tool as RustCsvCoreTool } from '@dpuse/dpuse-tool-rust-csv-core';\n\n// Data\nimport applicationFolderPathData from '@/applicationIndex.json';\nimport config from '~/config.json';\n\n/**\n * File store folder paths.\n */\ntype ApplicationFolderNode =\n | ({ typeId: 'folder'; childCount: number } & { name: string })\n | ({ typeId: 'object'; id: string; lastModifiedAt: number; size: number } & { name: string });\n\n/**\n * File store folder paths.\n */\ntype ApplicationFolderPaths = Record<string, ApplicationFolderNode[]>;\n\n/**\n * Cloudflare R2 file store directory prefix.\n */\nconst URL_PREFIX = 'https://sample-data-eu.dpuse.app/application';\n\n// Connectors\nexport class Connector implements ConnectorInterface {\n abortController: AbortController | undefined;\n readonly config: ConnectorConfig;\n connectorUtilities: ConnectorUtilities;\n readonly toolConfigs;\n\n constructor(connectorUtilities: ConnectorUtilities, toolConfigs: ToolConfig[]) {\n this.abortController = undefined;\n this.config = config as ConnectorConfig;\n this.connectorUtilities = connectorUtilities;\n this.toolConfigs = toolConfigs;\n }\n\n // Operations ──────────────────────────────────────────────────────────────────────────────────────────────────────\n\n // Abort the currently running operation\n abortOperation(): void {\n if (!this.abortController) return;\n this.abortController.abort();\n this.abortController = undefined;\n }\n\n // Audit object content\n async auditObjectContent(options: AuditObjectContentOptions, chunk: (rowCount: number) => void): Promise<AuditObjectContentResult> {\n this.abortController = new AbortController();\n\n try {\n if (options.parsingToolName === 'dpuse-tool-rust-csv-core') {\n // Get the readable stream\n const stream = await this.getReadableStream({ id: '', path: options.path });\n\n // Load the Rust CSV core tool\n const rustCsvTool = await loadTool<RustCsvCoreTool>(this.toolConfigs, 'rust-csv-core');\n\n // Choose processing mode based on browser capability\n const options2 = { delimiter: ',', hasHeaders: true };\n const result = options.supportsTransferableStreams\n ? await rustCsvTool.processWithTransferableStream(stream, options2, chunk)\n : await rustCsvTool.processWithChunks(stream, options2, chunk);\n\n return { processedRowCount: result.processedRowCount, durationMs: result.durationMs ?? 0 };\n }\n\n const csvParseTool = await loadTool<CSVParseTool>(this.toolConfigs, 'csv-parse');\n const parseStreamOptions = { delimiter: options.valueDelimiterId, relax_column_count: true, relax_quotes: true };\n const url = `${URL_PREFIX}${options.path}`;\n const summary = await csvParseTool.parseStream(options, parseStreamOptions, url, this.abortController, (parameter) => console.log(parameter));\n console.log('summary', summary);\n // complete(summary);\n\n return { processedRowCount: 0, durationMs: 0 };\n } catch (error) {\n throw normalizeToError(error);\n } finally {\n this.abortController = undefined;\n }\n }\n\n // Find the folder path containing the specified object node\n findObject(options: FindObjectOptions): Promise<FindObjectResult> {\n const fileStoreFolderPaths = applicationFolderPathData as ApplicationFolderPaths;\n // Loop through the folder path data checking for an object entry with an identifier equal to the object name.\n for (const folderPath in fileStoreFolderPaths) {\n if (Object.hasOwn(fileStoreFolderPaths, folderPath)) {\n const folderPathNodes = fileStoreFolderPaths[folderPath];\n const folderPathNode = folderPathNodes?.find((folderPathNode) => folderPathNode.typeId === 'object' && folderPathNode.id === options.nodeId);\n if (folderPathNode) return Promise.resolve({ path: folderPath, object: undefined }); // Found, return folder path.\n }\n }\n return Promise.reject(new Error('Not found.')); // Not found.\n }\n\n // Get a readable stream for the specified object node path\n async getReadableStream(options: GetReadableStreamOptions): Promise<ReadableStream<Uint8Array>> {\n // Create an abort controller and extract its signal.\n const { signal } = (this.abortController = new AbortController());\n\n try {\n const response = await fetch(`${URL_PREFIX}${options.path}`, { signal });\n if (!response.ok) {\n throw await buildFetchError(response, `Failed to fetch '${options.path}' file.`, 'dpuse-connector-file-store-emulator|Connector|getReadableStream');\n }\n if (response.body == null) {\n throw new ConnectorError('Readable streams are not supported in this runtime.', 'dpuse-connector-file-store-emulator|Connector|getReadableStream.unsupported');\n }\n return await Promise.resolve(response.body);\n } catch (error) {\n throw normalizeToError(error);\n } finally {\n this.abortController = undefined;\n }\n }\n\n // Lists all nodes (folders and objects) in the specified folder path\n listNodes(options: ListNodesOptions): Promise<ListNodesResult> {\n const fileStoreFolderPaths = applicationFolderPathData as ApplicationFolderPaths;\n const folderNodes = fileStoreFolderPaths[options.folderPath] ?? [];\n const connectionNodeConfigs: ConnectionNodeConfig[] = [];\n for (const folderNode of folderNodes) {\n if (folderNode.typeId === 'folder') {\n connectionNodeConfigs.push(constructFolderNodeConfig(options.folderPath, folderNode.name, folderNode.childCount));\n } else {\n connectionNodeConfigs.push(constructObjectNodeConfig(options.folderPath, folderNode.id, folderNode.name, folderNode.lastModifiedAt, folderNode.size));\n }\n }\n return Promise.resolve({ cursor: undefined, isMore: false, connectionNodeConfigs, totalCount: connectionNodeConfigs.length });\n }\n\n // Preview the contents of the object node with the specified path\n async previewObject(options: PreviewObjectOptions): Promise<PreviewConfig> {\n // Create an abort controller and extract its signal.\n const { signal } = (this.abortController = new AbortController());\n\n try {\n const asAt = Date.now();\n const startedAt = performance.now();\n\n // Preview file to determine file format and decode text.\n const fileOperatorsTool = await loadTool<FileOperatorsTool>(this.toolConfigs, 'file-operators');\n const filePreviewResult = await fileOperatorsTool.previewFile(`${URL_PREFIX}${options.path}`, signal, options.chunkSize);\n if (filePreviewResult.dataFormatId == null) throw new Error(`File '${options.path}' has unknown type.`);\n if (filePreviewResult.text == null) throw new Error(`File '${options.path}' is empty.`);\n\n // Parse text, identify delimiters, and produce string value records.\n const csvParseTool = await loadTool<CSVParseTool>(this.toolConfigs, 'csv-parse');\n const parseTextResult = await csvParseTool.parseText(filePreviewResult.text, ORDERED_VALUE_DELIMITER_IDS);\n\n // Infer and cast values for each parsed record.\n const inferenceSummary = this.connectorUtilities.inferDataTypes(parseTextResult.parsedRecords);\n\n return {\n asAt,\n columnConfigs: inferenceSummary.columnConfigs,\n dataFormatId: filePreviewResult.dataFormatId,\n duration: performance.now() - startedAt,\n encodingId: filePreviewResult.encodingId,\n encodingConfidenceLevel: filePreviewResult.encodingConfidenceLevel,\n fileType: filePreviewResult.fileTypeConfig,\n hasHeaders: inferenceSummary.hasHeaderRow,\n recordDelimiterId: parseTextResult.recordDelimiterId,\n parsedRecords: parseTextResult.parsedRecords,\n inferenceRecords: inferenceSummary.typedRecords,\n size: filePreviewResult.bytes.length,\n text: filePreviewResult.text,\n valueDelimiterId: parseTextResult.valueDelimiterId\n };\n } catch (error) {\n throw normalizeToError(error);\n } finally {\n this.abortController = undefined;\n }\n }\n // Retrieves all records from a CSV object node using streaming and chunked processing\n async retrieveRecords(\n options: RetrieveRecordsOptions,\n chunk: (typeId: RetrievalTypeId, records: ParsingRecord[]) => void,\n complete: (result: RetrieveRecordsSummary) => void\n ): Promise<void> {\n this.abortController = new AbortController();\n try {\n const csvParseTool = await loadTool<CSVParseTool>(this.toolConfigs, 'csv-parse');\n const parseStreamOptions = { delimiter: options.valueDelimiterId, info: true, relax_column_count: true, relax_quotes: true };\n const url = `${URL_PREFIX}${options.path}`;\n const summary = await csvParseTool.parseStream(options, parseStreamOptions, url, this.abortController, chunk);\n complete(summary);\n } catch (error) {\n throw normalizeToError(error);\n } finally {\n this.abortController = undefined;\n }\n }\n}\n\n// Helpers ─────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\n// Construct folder node configuration.\nfunction constructFolderNodeConfig(folderPath: string, name: string, childCount: number): ConnectionNodeConfig {\n return {\n childCount,\n childNodes: [],\n extension: undefined,\n folderPath,\n handle: undefined,\n id: nanoid(),\n label: name,\n lastModifiedAt: undefined,\n mimeType: undefined,\n name,\n size: undefined,\n typeId: 'folder'\n };\n}\n\n// Construct object (file) node configuration.\nfunction constructObjectNodeConfig(folderPath: string, id: string, fullName: string, lastModifiedAt: number, size: number): ConnectionNodeConfig {\n const name = extractNameFromPath(fullName) ?? '';\n const extension = extractExtensionFromPath(fullName);\n const lastModifiedAtTimestamp = lastModifiedAt;\n const mimeType = lookupMimeTypeForExtension(extension);\n return {\n childCount: undefined,\n childNodes: [],\n extension,\n folderPath,\n handle: undefined,\n id,\n label: fullName,\n lastModifiedAt: lastModifiedAtTimestamp,\n mimeType,\n name,\n size,\n typeId: 'object'\n };\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6],"mappings":";AAAA,IAAW,IACT,oECsCS,KAAU,IAAO,OAAO;CACjC,IAAI,IAAK,IACL,IAAQ,OAAO,gBAAgB,IAAI,WAAY,KAAQ,CAAE,CAAC;CAC9D,OAAO,MACL,KAAMA,EAAkB,EAAM,KAAQ;CAExC,OAAO;AACT,GC7CIC,IAAI,MAAMC,IAAI,cAAc,MAAM;CACrC;CACA;CACA,YAAY,GAAG,GAAG,GAAG,GAAG;EACvB,MAAM,GAAG,CAAC,GAAG,KAAK,OAAO,cAAc,KAAK,OAAO,GAAG,KAAK,UAAU;CACtE;AACD,GAYG,IAAI,cAAcA,EAAE;CACtB,YAAY,GAAG,GAAG,GAAG,GAAG;EACvB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,OAAO;CAChC;AACD,GAAG,IAAI,cAAcA,EAAE;CACtB,YAAY,GAAG,GAAG,GAAG,GAAG;EACvB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,KAAK,OAAO;CAChC;AACD;AACA,eAAe,EAAE,GAAG,GAAG,GAAG;CACzB,IAAI,IAAI,MAAM,EAAE,cAAc,IAAI,GAAG,EAAE,oBAAoB,EAAE,SAAS,EAAE,aAAa,IAAI,GAAG,cAAc;CAC1G,IAAI;EACH,IAAI,MAAM,EAAE,KAAK;CAClB,SAAS,GAAG;EACX,IAAI,sBAAsB,EAAE,CAAC,EAAE,QAAQ;CACxC;CACA,OAAO,IAAI,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAClC;AASA,SAAS,EAAE,GAAG;CACb,IAAI,aAAa,OAAO,OAAO;CAC/B,IAAI,OAAO,KAAK,UAAU,OAAO,MAAM,CAAC;CACxC,IAAI,OAAO,KAAK,YAAY,OAAO,KAAK,aAAa,OAAO,KAAK,UAAU,OAAO,MAAM,OAAO,CAAC,CAAC;CACjG,IAAI,OAAO,KAAK,UAAU,OAAO,MAAM,EAAE,eAAe,eAAe;CACvE,IAAI,OAAO,KAAK,UAAU,IAAI;EAC7B,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC;CAC/B,QAAQ;EACP,OAAuB,sBAAM,eAAe;CAC7C;CACA,OAAuB,sBAAM,eAAe;AAC7C;AAwHA,SAAS,EAAE,GAAG;CACb,IAAI,EAAE,KAAK,QAAQ,MAAM,KAAK,OAAO,EAAE,SAASD,IAAI,GAAG,EAAE,MAAM,GAAGA,CAAC,EAAE,mBAAmB;AACzF;;;AC5JA,SAAS,EAAE,GAAG;CACb,IAAI,GAAG;EACN,IAAI,IAAI,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI,EAAE,YAAY,GAAG;EACrD,OAAO,KAAK,KAAK,MAAM,KAAK,IAAI,EAAE,MAAM,GAAG,KAAK,IAAI,GAAG,CAAC,CAAC;CAC1D;AACD;AACA,SAAS,EAAE,GAAG;CACb,IAAI,GAAG;EACN,IAAI,IAAI,EAAE,YAAY,GAAG,IAAI,GAAG,IAAI,EAAE,YAAY,GAAG;EACrD,IAAI,KAAK,GAAG;EACZ,IAAI,MAAM,IAAI,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC;CAChD;AACD;AAuEA,SAAS,EAAE,GAAG;CACb,QAAQ,GAAR;EACC,KAAK,OAAO,OAAO;EACnB,KAAK;EACL,KAAK,OAAO,OAAO;EACnB,KAAK,OAAO,OAAO;EACnB,KAAK,QAAQ,OAAO;EACpB,SAAS,OAAO;CACjB;AACD;;;ACjHA,IAAI,IAAI;AACR,eAAeK,EAAE,GAAG,GAAG;CACtB,IAAI,IAAI,cAAc,KAAK,IAAI,EAAE,MAAM,MAAM,EAAE,OAAO,CAAC;CACvD,IAAI,CAAC,GAAG,MAAM,MAAM,0CAA0C,EAAE,GAAG;CACnE,OAAO,KAAK,OAAO;;EAElB,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,GAAG,EAAE;IAC3B,KAAK;AACT;;;ACCA,SAAS,EAAE,GAAG;CACb,OAAO,IAAI,IAAI,OAAO,QAAQ,CAAC,CAAC;AACjC;;;ACXAC,EAAE,EAAE,IAAI,0BAA0B,CAAC,GAAGA,EAAE,EAAE,IAAI,iBAAiB,CAAC,GAAGA,EAAE,EAAE,IAAI,OAAO,CAAC,GAAGA,EAAE,EAAE,IAAI,OAAO,CAAC,GAAGA,EAAE,EAAE,IAAI,OAAO,CAAC,GAAGA,EAAE,EAAE,IAAI,MAAM,CAAC,GAAGA,EAAE,EAAE,IAAI,UAAU,CAAC,GAAGA,EAAE,EAAE,IAAI,kBAAkB,CAAC,GAAGA,EAAE,EAAE,IAAI,0BAA0B,CAAC,GAAGA,EAAE,EAAE,IAAI,QAAQ,CAAC,GAAGA,EAAE,EAAE,IAAI,QAAQ,CAAC,GAAGA,EAAE,EAAE,IAAI,mBAAmB,CAAC,GAAGA,EAAE,EAAE,IAAI,mBAAmB,CAAC,GAAGA,EAAE,EAAE,IAAI,YAAY,CAAC,GAAGA,EAAE,EAAE,IAAI,QAAQ,CAAC,GAAGA,EAAE,EAAE,IAAI,MAAM,CAAC,GAAGA,EAAE,EAAE,IAAI,aAAa,CAAC,GAAGA,EAAE,EAAE,IAAI,iBAAiB,CAAC,GAAGA,EAAE,EAAE,IAAI,eAAe,CAAC;AAC1d,IAAI,IAAI;CACP;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GGqCM,IAAa,gDAGN,IAAb,MAAqD;CACjD;CACA;CACA;CACA;CAEA,YAAY,GAAwC,GAA2B;EAI3E,AAHA,KAAK,kBAAkB,KAAA,GACvB,KAAK,SAAS,GACd,KAAK,qBAAqB,GAC1B,KAAK,cAAc;CACvB;CAKA,iBAAuB;EACd,AAEL,KAAK,qBADL,KAAK,gBAAgB,MAAM,GACJ,KAAA;CAC3B;CAGA,MAAM,mBAAmB,GAAoC,GAAsE;EAC/H,KAAK,kBAAkB,IAAI,gBAAgB;EAE3C,IAAI;GACA,IAAI,EAAQ,oBAAoB,4BAA4B;IAExD,IAAM,IAAS,MAAM,KAAK,kBAAkB;KAAE,IAAI;KAAI,MAAM,EAAQ;IAAK,CAAC,GAGpE,IAAc,MAAM,EAA0B,KAAK,aAAa,eAAe,GAG/E,IAAW;KAAE,WAAW;KAAK,YAAY;IAAK,GAC9C,IAAS,EAAQ,8BACjB,MAAM,EAAY,8BAA8B,GAAQ,GAAU,CAAK,IACvE,MAAM,EAAY,kBAAkB,GAAQ,GAAU,CAAK;IAEjE,OAAO;KAAE,mBAAmB,EAAO;KAAmB,YAAY,EAAO,cAAc;IAAE;GAC7F;GAEA,IAAM,IAAe,MAAM,EAAuB,KAAK,aAAa,WAAW,GACzE,IAAqB;IAAE,WAAW,EAAQ;IAAkB,oBAAoB;IAAM,cAAc;GAAK,GACzG,IAAM,GAAG,IAAa,EAAQ,QAC9B,IAAU,MAAM,EAAa,YAAY,GAAS,GAAoB,GAAK,KAAK,kBAAkB,MAAc,QAAQ,IAAI,CAAS,CAAC;GAI5I,OAHA,QAAQ,IAAI,WAAW,CAAO,GAGvB;IAAE,mBAAmB;IAAG,YAAY;GAAE;EACjD,SAAS,GAAO;GACZ,MAAM,EAAiB,CAAK;EAChC,UAAU;GACN,KAAK,kBAAkB,KAAA;EAC3B;CACJ;CAGA,WAAW,GAAuD;EAC9D,IAAM,IAAuB;EAE7B,KAAK,IAAM,KAAc,GACrB,IAAI,OAAO,OAAO,GAAsB,CAAU,KACtB,EAAqB,IACL,MAAM,MAAmB,EAAe,WAAW,YAAY,EAAe,OAAO,EAAQ,MAAM,GACvH,OAAO,QAAQ,QAAQ;GAAE,MAAM;GAAY,QAAQ,KAAA;EAAU,CAAC;EAG1F,OAAO,QAAQ,OAAO,gBAAI,MAAM,YAAY,CAAC;CACjD;CAGA,MAAM,kBAAkB,GAAwE;EAE5F,IAAM,EAAE,cAAY,KAAK,kBAAkB,IAAI,gBAAgB;EAE/D,IAAI;GACA,IAAM,IAAW,MAAM,MAAM,GAAG,IAAa,EAAQ,QAAQ,EAAE,UAAO,CAAC;GACvE,IAAI,CAAC,EAAS,IACV,MAAM,MAAM,EAAgB,GAAU,oBAAoB,EAAQ,KAAK,UAAU,iEAAiE;GAEtJ,IAAI,EAAS,QAAQ,MACjB,MAAM,IAAI,EAAe,uDAAuD,6EAA6E;GAEjK,OAAO,MAAM,QAAQ,QAAQ,EAAS,IAAI;EAC9C,SAAS,GAAO;GACZ,MAAM,EAAiB,CAAK;EAChC,UAAU;GACN,KAAK,kBAAkB,KAAA;EAC3B;CACJ;CAGA,UAAU,GAAqD;EAE3D,IAAM,IAAc,EAAqB,EAAQ,eAAe,CAAC,GAC3D,IAAgD,CAAC;EACvD,KAAK,IAAM,KAAc,GACrB,AAAI,EAAW,WAAW,WACtB,EAAsB,KAAK,EAA0B,EAAQ,YAAY,EAAW,MAAM,EAAW,UAAU,CAAC,IAEhH,EAAsB,KAAK,EAA0B,EAAQ,YAAY,EAAW,IAAI,EAAW,MAAM,EAAW,gBAAgB,EAAW,IAAI,CAAC;EAG5J,OAAO,QAAQ,QAAQ;GAAE,QAAQ,KAAA;GAAW,QAAQ;GAAO;GAAuB,YAAY,EAAsB;EAAO,CAAC;CAChI;CAGA,MAAM,cAAc,GAAuD;EAEvE,IAAM,EAAE,cAAY,KAAK,kBAAkB,IAAI,gBAAgB;EAE/D,IAAI;GACA,IAAM,IAAO,KAAK,IAAI,GAChB,IAAY,YAAY,IAAI,GAI5B,IAAoB,OAAM,MADA,EAA4B,KAAK,aAAa,gBAAgB,GAC5C,YAAY,GAAG,IAAa,EAAQ,QAAQ,GAAQ,EAAQ,SAAS;GACvH,IAAI,EAAkB,gBAAgB,MAAM,MAAU,MAAM,SAAS,EAAQ,KAAK,oBAAoB;GACtG,IAAI,EAAkB,QAAQ,MAAM,MAAU,MAAM,SAAS,EAAQ,KAAK,YAAY;GAItF,IAAM,IAAkB,OAAM,MADH,EAAuB,KAAK,aAAa,WAAW,GACpC,UAAU,EAAkB,MAAM,CAA2B,GAGlG,IAAmB,KAAK,mBAAmB,eAAe,EAAgB,aAAa;GAE7F,OAAO;IACH;IACA,eAAe,EAAiB;IAChC,cAAc,EAAkB;IAChC,UAAU,YAAY,IAAI,IAAI;IAC9B,YAAY,EAAkB;IAC9B,yBAAyB,EAAkB;IAC3C,UAAU,EAAkB;IAC5B,YAAY,EAAiB;IAC7B,mBAAmB,EAAgB;IACnC,eAAe,EAAgB;IAC/B,kBAAkB,EAAiB;IACnC,MAAM,EAAkB,MAAM;IAC9B,MAAM,EAAkB;IACxB,kBAAkB,EAAgB;GACtC;EACJ,SAAS,GAAO;GACZ,MAAM,EAAiB,CAAK;EAChC,UAAU;GACN,KAAK,kBAAkB,KAAA;EAC3B;CACJ;CAEA,MAAM,gBACF,GACA,GACA,GACa;EACb,KAAK,kBAAkB,IAAI,gBAAgB;EAC3C,IAAI;GACA,IAAM,IAAe,MAAM,EAAuB,KAAK,aAAa,WAAW,GACzE,IAAqB;IAAE,WAAW,EAAQ;IAAkB,MAAM;IAAM,oBAAoB;IAAM,cAAc;GAAK,GACrH,IAAM,GAAG,IAAa,EAAQ;GAEpC,EAAS,MADa,EAAa,YAAY,GAAS,GAAoB,GAAK,KAAK,iBAAiB,CAAK,CAC5F;EACpB,SAAS,GAAO;GACZ,MAAM,EAAiB,CAAK;EAChC,UAAU;GACN,KAAK,kBAAkB,KAAA;EAC3B;CACJ;AACJ;AAKA,SAAS,EAA0B,GAAoB,GAAc,GAA0C;CAC3G,OAAO;EACH;EACA,YAAY,CAAC;EACb,WAAW,KAAA;EACX;EACA,QAAQ,KAAA;EACR,IAAI,EAAO;EACX,OAAO;EACP,gBAAgB,KAAA;EAChB,UAAU,KAAA;EACV;EACA,MAAM,KAAA;EACN,QAAQ;CACZ;AACJ;AAGA,SAAS,EAA0B,GAAoB,GAAY,GAAkB,GAAwB,GAAoC;CAC7I,IAAM,IAAO,EAAoB,CAAQ,KAAK,IACxC,IAAY,EAAyB,CAAQ;CAGnD,OAAO;EACH,YAAY,KAAA;EACZ,YAAY,CAAC;EACb;EACA;EACA,QAAQ,KAAA;EACR;EACA,OAAO;EACS;EAChB,UAVa,EAA2B,CAUxC;EACA;EACA;EACA,QAAQ;CACZ;AACJ"}
|
|
1
|
+
{"version":3,"file":"dpuse-connector-application-emulator.es.js","names":["scopedUrlAlphabet","e","t","n","r","i","t","e"],"sources":["../node_modules/nanoid/url-alphabet/index.js","../node_modules/nanoid/index.browser.js","../node_modules/@dpuse/dpuse-shared/dist/dpuse-shared-errors.es.js","../node_modules/@dpuse/dpuse-shared/dist/dpuse-shared-utilities.es.js","../node_modules/@dpuse/dpuse-shared/dist/dpuse-shared-componentModuleTool.es.js","../node_modules/@dpuse/dpuse-shared/dist/dpuse-shared-locale.es.js","../node_modules/@dpuse/dpuse-shared/dist/dpuse-shared-componentDataView.es.js","../src/applicationIndex.json","../config.json","../src/index.ts"],"sourcesContent":["export let urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n","/* @ts-self-types=\"./index.d.ts\" */\nimport { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let safeByteCutoff = 256 - (256 % alphabet.length)\n if (safeByteCutoff === 256) {\n let mask = alphabet.length - 1\n return (size = defaultSize) => {\n if (!size) return ''\n let id = ''\n while (true) {\n let bytes = getRandom(size)\n let j = size\n while (j--) {\n id += alphabet[bytes[j] & mask]\n if (id.length >= size) return id\n }\n }\n }\n }\n let step = Math.ceil((1.6 * 256 * defaultSize) / safeByteCutoff)\n return (size = defaultSize) => {\n if (!size) return ''\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n if (bytes[j] < safeByteCutoff) {\n id += alphabet[bytes[j] % alphabet.length]\n if (id.length >= size) return id\n }\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size | 0, random)\nexport let nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array((size |= 0)))\n while (size--) {\n id += scopedUrlAlphabet[bytes[size] & 63]\n }\n return id\n}\n","//#region src/errors/index.ts\nvar e = 2048, t = class extends Error {\n\tdata;\n\tlocator;\n\tconstructor(e, t, n, r) {\n\t\tsuper(e, r), this.name = \"DPUseError\", this.data = n, this.locator = t;\n\t}\n}, n = class extends t {\n\tconstructor(e, t, n, r) {\n\t\tsuper(e, t, n, r), this.name = \"AppError\";\n\t}\n}, r = class extends t {\n\tconstructor(e, t, n, r) {\n\t\tsuper(e, t, n, r), this.name = \"APIError\";\n\t}\n}, i = class extends t {\n\tconstructor(e, t, n, r) {\n\t\tsuper(e, t, n, r), this.name = \"EngineError\";\n\t}\n}, a = class extends t {\n\tconstructor(e, t, n, r) {\n\t\tsuper(e, t, n, r), this.name = \"ConnectorError\";\n\t}\n}, o = class extends t {\n\tconstructor(e, t, n, r) {\n\t\tsuper(e, t, n, r), this.name = \"FetchError\";\n\t}\n};\nasync function s(e, t, n) {\n\tlet r = ` - ${e.statusText}`, i = `${t} Response status '${e.status}${e.statusText ? r : \"\"}' received.`, a;\n\ttry {\n\t\ta = await e.text();\n\t} catch (e) {\n\t\ta = `<body unavailable: ${u(e).message}>`;\n\t}\n\treturn new o(i, n, { body: m(a) });\n}\nfunction c(e) {\n\treturn e.map((e) => e.message).join(\" \");\n}\nfunction l(e) {\n\ttry {\n\t\te();\n\t} catch {}\n}\nfunction u(e) {\n\tif (e instanceof Error) return e;\n\tif (typeof e == \"string\") return Error(e);\n\tif (typeof e == \"number\" || typeof e == \"boolean\" || typeof e == \"bigint\") return Error(String(e));\n\tif (typeof e == \"symbol\") return Error(e.description ?? \"Unknown error\");\n\tif (typeof e == \"object\") try {\n\t\treturn Error(JSON.stringify(e));\n\t} catch {\n\t\treturn /* @__PURE__ */ Error(\"Unknown error\");\n\t}\n\treturn /* @__PURE__ */ Error(\"Unknown error\");\n}\nfunction d(e) {\n\tlet t = /* @__PURE__ */ new Set(), n = [], r = u(e);\n\tfor (; r != null && !t.has(r);) {\n\t\tt.add(r);\n\t\tlet e;\n\t\tswitch (r.name) {\n\t\t\tcase \"APIError\": {\n\t\t\t\tlet t = r;\n\t\t\t\te = {\n\t\t\t\t\tdata: t.data,\n\t\t\t\t\tlocator: t.locator,\n\t\t\t\t\tmessage: r.message,\n\t\t\t\t\tname: \"APIError\",\n\t\t\t\t\tstack: r.stack\n\t\t\t\t}, r = r.cause == null ? null : u(r.cause);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"AppError\": {\n\t\t\t\tlet t = r;\n\t\t\t\te = {\n\t\t\t\t\tdata: t.data,\n\t\t\t\t\tlocator: t.locator,\n\t\t\t\t\tmessage: r.message,\n\t\t\t\t\tname: \"AppError\",\n\t\t\t\t\tstack: r.stack\n\t\t\t\t}, r = r.cause == null ? null : u(r.cause);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"ConnectorError\": {\n\t\t\t\tlet t = r;\n\t\t\t\te = {\n\t\t\t\t\tdata: t.data,\n\t\t\t\t\tlocator: t.locator,\n\t\t\t\t\tmessage: r.message,\n\t\t\t\t\tname: \"ConnectorError\",\n\t\t\t\t\tstack: r.stack\n\t\t\t\t}, r = r.cause == null ? null : u(r.cause);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"EngineError\": {\n\t\t\t\tlet t = r;\n\t\t\t\te = {\n\t\t\t\t\tdata: t.data,\n\t\t\t\t\tlocator: t.locator,\n\t\t\t\t\tmessage: r.message,\n\t\t\t\t\tname: \"EngineError\",\n\t\t\t\t\tstack: r.stack\n\t\t\t\t}, r = r.cause == null ? null : u(r.cause);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"FetchError\": {\n\t\t\t\tlet t = r;\n\t\t\t\te = {\n\t\t\t\t\tdata: t.data,\n\t\t\t\t\tlocator: t.locator,\n\t\t\t\t\tmessage: r.message,\n\t\t\t\t\tname: \"FetchError\",\n\t\t\t\t\tstack: r.stack\n\t\t\t\t}, r = r.cause == null ? null : u(r.cause);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\tlet { cause: t, ...n } = Object.fromEntries(Object.entries(r));\n\t\t\t\tr.name ? (e = {\n\t\t\t\t\tdata: n,\n\t\t\t\t\tlocator: \"\",\n\t\t\t\t\tmessage: r.message,\n\t\t\t\t\tname: r.name,\n\t\t\t\t\tstack: r.stack\n\t\t\t\t}, r = r.cause == null ? null : u(r.cause)) : (e = {\n\t\t\t\t\tdata: n,\n\t\t\t\t\tlocator: \"\",\n\t\t\t\t\tmessage: p(r),\n\t\t\t\t\tname: \"Error\",\n\t\t\t\t\tstack: void 0\n\t\t\t\t}, r = null);\n\t\t}\n\t\t/(?:\\.{3}|[.!?])$/.test(e.message) || (e.message += \".\"), n.push(e);\n\t}\n\treturn n;\n}\nfunction f(e) {\n\tif (e.length === 0) return;\n\tlet t;\n\tfor (let s of e.toReversed()) {\n\t\tlet e;\n\t\tswitch (s.name) {\n\t\t\tcase \"APIError\":\n\t\t\t\te = new r(s.message, s.locator, s.data, { cause: t });\n\t\t\t\tbreak;\n\t\t\tcase \"AppError\":\n\t\t\t\te = new n(s.message, s.locator, s.data, { cause: t });\n\t\t\t\tbreak;\n\t\t\tcase \"ConnectorError\":\n\t\t\t\te = new a(s.message, s.locator, s.data, { cause: t });\n\t\t\t\tbreak;\n\t\t\tcase \"EngineError\":\n\t\t\t\te = new i(s.message, s.locator, s.data, { cause: t });\n\t\t\t\tbreak;\n\t\t\tcase \"FetchError\":\n\t\t\t\te = new o(s.message, s.locator, s.data, { cause: t });\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\te = Error(s.message, { cause: t }), e.name = s.name;\n\t\t\t\tbreak;\n\t\t}\n\t\ts.stack !== void 0 && (e.stack = s.stack), t = e;\n\t}\n\treturn t;\n}\nfunction p(e) {\n\tlet t;\n\ttry {\n\t\tt = JSON.stringify(e);\n\t} catch {\n\t\tt = typeof e == \"symbol\" ? e.description ?? \"Unknown error\" : typeof e == \"bigint\" ? e.toString() : \"Unknown error\";\n\t}\n\treturn t === \"\" && (t = \"Unknown error\"), t;\n}\nfunction m(t) {\n\tif (!(t == null || t === \"\")) return t.length > e ? `${t.slice(0, e)}... [truncated]` : t;\n}\n//#endregion\nexport { r as APIError, n as AppError, a as ConnectorError, t as DPUseError, i as EngineError, o as FetchError, s as buildFetchError, c as concatenateSerialisedErrorMessages, l as ignoreErrors, u as normalizeToError, d as serialiseError, f as unserialiseError };\n","//#region src/utilities/index.ts\nvar e = \"en-US\", t = /* @__PURE__ */ new Map();\nfunction n(e) {\n\tswitch (e) {\n\t\tcase \"Edm.Binary\": return \"unknown\";\n\t\tcase \"Edm.Boolean\": return \"boolean\";\n\t\tcase \"Edm.Byte\": return \"wholeNumber\";\n\t\tcase \"Edm.DateTime\": return \"moment\";\n\t\tcase \"Edm.DateTimeOffset\": return \"moment\";\n\t\tcase \"Edm.Decimal\": return \"decimalNumber\";\n\t\tcase \"Edm.Double\": return \"decimalNumber\";\n\t\tcase \"Edm.Guid\": return \"string\";\n\t\tcase \"Edm.Int16\": return \"wholeNumber\";\n\t\tcase \"Edm.Int32\": return \"wholeNumber\";\n\t\tcase \"Edm.Int64\": return \"wholeNumber\";\n\t\tcase \"Edm.SByte\": return \"wholeNumber\";\n\t\tcase \"Edm.Single\": return \"decimalNumber\";\n\t\tcase \"Edm.String\": return \"string\";\n\t\tcase \"Edm.Time\": return \"momentTime\";\n\t\tdefault: return \"unknown\";\n\t}\n}\nfunction r(e) {\n\tif (e) {\n\t\tlet t = e.lastIndexOf(\"/\") + 1, n = e.lastIndexOf(\".\");\n\t\treturn n <= t || n === -1 ? e : e.slice(0, Math.max(0, n));\n\t}\n}\nfunction i(e) {\n\tif (e) {\n\t\tlet t = e.lastIndexOf(\"/\") + 1, n = e.lastIndexOf(\".\");\n\t\tif (n <= t) return;\n\t\tif (n !== -1) return e.slice(Math.max(0, n + 1));\n\t}\n}\nfunction a(n, r = 2, i = r, a = e) {\n\tif (n == null) return \"\";\n\tlet o = `${a}decimal${r}.${i}`, s = t.get(o);\n\treturn s || (s = new Intl.NumberFormat(a, {\n\t\tlocaleMatcher: \"best fit\",\n\t\tmaximumFractionDigits: r,\n\t\tminimumFractionDigits: i,\n\t\tminimumIntegerDigits: 1,\n\t\tstyle: \"decimal\",\n\t\tuseGrouping: !0\n\t}), t.set(o, s)), s.format(n);\n}\nfunction o(e, t = 1) {\n\treturn e == null ? \"\" : e < 1e3 ? u(e) : e < 1e6 ? `${a(e / 1e3, t, 0)}K` : e < 1e9 ? `${a(e / 1e6, t, 0)}M` : e < 0xe8d4a51000 ? `${a(e / 1e9, t, 0)}B` : `${a(e / 0xe8d4a51000, t, 0)}T`;\n}\nfunction s(e, t = 1) {\n\treturn e == null ? \"\" : e === 1 ? \"1 byte\" : e < 1024 ? `${u(e)} bytes` : e < 1048576 ? `${a(e / 1024, t, 0)} KB` : e < 1073741824 ? `${a(e / 1048576, t, 0)} MB` : e < 1099511627776 ? `${a(e / 1073741824, t, 0)} GB` : `${a(e / 1099511627776, t, 0)} TB`;\n}\nvar c = [\n\t[\n\t\t\"days\",\n\t\t864e5,\n\t\t(e) => e === 1 ? \"1 day\" : `${u(e)} days`\n\t],\n\t[\n\t\t\"hrs\",\n\t\t36e5,\n\t\t(e) => e === 1 ? \"1 hr\" : `${u(e)} hrs`\n\t],\n\t[\n\t\t\"mins\",\n\t\t6e4,\n\t\t(e) => e === 1 ? \"1 min\" : `${u(e)} mins`\n\t],\n\t[\n\t\t\"secs\",\n\t\t1e3,\n\t\t(e) => e === 1 ? \"1 sec\" : `${u(e)} secs`\n\t],\n\t[\n\t\t\"ms\",\n\t\t0,\n\t\t(e) => `${u(e)} ms`\n\t]\n];\nfunction l(e, t = \"ms\") {\n\tif (e == null) return \"\";\n\tlet n = c.findIndex(([e]) => e === t);\n\tif (e < (c[n]?.[1] ?? 0)) {\n\t\tlet t = c.find(([, t]) => e >= t);\n\t\tif (t == null) return `${u(e)} ms`;\n\t\tlet [, n, r] = t;\n\t\treturn r(n > 0 ? Math.floor(e / n) : e);\n\t}\n\tlet r = [], i = e;\n\tfor (let [, e, t] of c.slice(0, n + 1)) e === 0 ? (i > 0 || r.length === 0) && r.push(t(i)) : i >= e && (r.push(t(Math.floor(i / e))), i %= e);\n\treturn r.join(\" \");\n}\nfunction u(n, r = e) {\n\tif (n == null) return \"\";\n\tlet i = `${r}decimal0.0`, a = t.get(i);\n\treturn a || (a = new Intl.NumberFormat(r, {\n\t\tlocaleMatcher: \"best fit\",\n\t\tmaximumFractionDigits: 0,\n\t\tminimumFractionDigits: 0,\n\t\tminimumIntegerDigits: 1,\n\t\tstyle: \"decimal\",\n\t\tuseGrouping: !0\n\t}), t.set(i, a)), a.format(n);\n}\nfunction d(e) {\n\tswitch (e) {\n\t\tcase \"csv\": return \"text/csv\";\n\t\tcase \"tab\":\n\t\tcase \"tsv\": return \"text/tab-separated-values\";\n\t\tcase \"xls\": return \"application/vnd.ms-excel\";\n\t\tcase \"xlsx\": return \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\n\t\tdefault: return \"application/octet-stream\";\n\t}\n}\n//#endregion\nexport { n as convertODataTypeIdToUsageTypeId, i as extractExtensionFromPath, r as extractNameFromPath, a as formatNumberAsDecimalNumber, l as formatNumberAsDuration, o as formatNumberAsSize, s as formatNumberAsStorageSize, u as formatNumberAsWholeNumber, d as lookupMimeTypeForExtension };\n","//#region src/component/module/tool/index.ts\nvar e = \"https://engine-eu.dpuse.app/tools\";\nasync function t(t, n) {\n\tlet r = `dpuse-tool-${n}`, i = t.find((e) => e.id === r);\n\tif (!i) throw Error(`Connector could not load unknown tool '${n}'.`);\n\treturn new (await (import(\n\t\t/* @vite-ignore */\n\t\t`${e}/${n}_v${i.version}/${r}.es.js`\n))).Tool();\n}\n//#endregion\nexport { t as loadTool };\n","//#region src/locale/index.ts\nvar e = \"en\", t = [{\n\tid: \"en\",\n\tflag: \"gb\",\n\tlabel: \"English\"\n}, {\n\tid: \"es\",\n\tflag: \"es\",\n\tlabel: \"Español\"\n}];\nfunction n(e) {\n\treturn new Map(Object.entries(e));\n}\nfunction r(e, t) {\n\treturn {\n\t\t...e,\n\t\tlabel: e.label[t] ?? e.id,\n\t\tdescription: e.description[t] ?? e.id,\n\t\tverb: e.verb?.[t] ?? void 0\n\t};\n}\nfunction i(e, t) {\n\treturn e.map((e) => ({\n\t\t...e,\n\t\tlabel: e.label[t] ?? e.id,\n\t\tdescription: e.description[t] ?? e.id,\n\t\tverb: e.verb?.[t] ?? void 0\n\t}));\n}\nfunction a(e, t, n = \"en\") {\n\tlet r = e.get(t);\n\tif (r !== void 0) return r;\n\tif (n !== t) return e.get(n);\n}\n//#endregion\nexport { e as DEFAULT_LOCALE_ID, t as SUPPORTED_LANGUAGES, n as createLabelMap, r as localiseConfig, i as localiseConfigs, a as resolveLabel };\n","import { createLabelMap as e } from \"./dpuse-shared-locale.es.js\";\ne({ en: \"Data Positioning Events\" }), e({ en: \"Delimited Text\" }), e({ en: \"JSON\" }), e({ en: \"SPSS\" }), e({ en: \"XLSX\" }), e({ en: \"XML\" }), e({ en: \"Newline\" }), e({ en: \"Carriage Return\" }), e({ en: \"Carriage Return/Newline\" }), e({ en: \"Colon\" }), e({ en: \"Comma\" }), e({ en: \"Exclamation Mark\" }), e({ en: \"Record Separator\" }), e({ en: \"Semicolon\" }), e({ en: \"Space\" }), e({ en: \"Tab\" }), e({ en: \"Underscore\" }), e({ en: \"Unit Separator\" }), e({ en: \"Vertical Bar\" });\nvar t = [\n\t\",\",\n\t\";\",\n\t\"\t\",\n\t\"|\",\n\t\" \",\n\t\":\",\n\t\"_\",\n\t\"!\",\n\t\"0x1F\",\n\t\"0x1E\"\n];\n//#endregion\nexport { t as ORDERED_VALUE_DELIMITER_IDS };\n","{\n \"\": [\n { \"childCount\": 1, \"name\": \"humanResources\", \"typeId\": \"folder\" },\n { \"id\": \"GGxX3yzmdW8_7G_MSwyi5\", \"lastModifiedAt\": 1774197102385.2441, \"name\": \"organisations.csv\", \"size\": 72, \"typeId\": \"object\" },\n { \"id\": \"14xGczulW60Z5vLEVVyZy\", \"lastModifiedAt\": 1774197102385.3625, \"name\": \"people.csv\", \"size\": 72320, \"typeId\": \"object\" }\n ],\n \"/humanResources\": [{ \"childCount\": 2, \"name\": \"workforce\", \"typeId\": \"folder\" }],\n \"/humanResources/workforce\": [\n { \"id\": \"XJgBt7TVnPf8l7-vArbui\", \"lastModifiedAt\": 1774197102385.1426, \"name\": \"empty.csv\", \"size\": 0, \"typeId\": \"object\" },\n { \"id\": \"_d5Au6rZg-0KlXPhkU0qj\", \"lastModifiedAt\": 1774197102385.1821, \"name\": \"engagements.csv\", \"size\": 0, \"typeId\": \"object\" }\n ]\n}\n","{\n \"id\": \"dpuse-connector-application-emulator\",\n \"label\": {\n \"en\": \"Application Emulator\"\n },\n \"description\": {\n \"en\": \"Provides access to a sample set of read-only application data simulating a hypothetical application database. It is intended for demonstration, evaluation, and testing and is freely available to all users. Since no authentication is required, it supports only a single connection.\"\n },\n \"category\": null,\n \"categoryId\": \"application\",\n \"firstCreatedAt\": null,\n \"implementations\": {\n \"default\": {\n \"authMethodId\": \"none\",\n \"maxConnectionCount\": 1\n }\n },\n \"icon\": \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke=\\\"black\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"M12 17v4\\\"/><path d=\\\"m14.305 7.53.923-.382\\\"/><path d=\\\"m15.228 4.852-.923-.383\\\"/><path d=\\\"m16.852 3.228-.383-.924\\\"/><path d=\\\"m16.852 8.772-.383.923\\\"/><path d=\\\"m19.148 3.228.383-.924\\\"/><path d=\\\"m19.53 9.696-.382-.924\\\"/><path d=\\\"m20.772 4.852.924-.383\\\"/><path d=\\\"m20.772 7.148.924.383\\\"/><path d=\\\"M22 13v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7\\\"/><path d=\\\"M8 21h8\\\"/><circle cx=\\\"18\\\" cy=\\\"6\\\" r=\\\"3\\\"/></svg>\",\n \"iconDark\": \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke=\\\"white\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"M12 17v4\\\"/><path d=\\\"m14.305 7.53.923-.382\\\"/><path d=\\\"m15.228 4.852-.923-.383\\\"/><path d=\\\"m16.852 3.228-.383-.924\\\"/><path d=\\\"m16.852 8.772-.383.923\\\"/><path d=\\\"m19.148 3.228.383-.924\\\"/><path d=\\\"m19.53 9.696-.382-.924\\\"/><path d=\\\"m20.772 4.852.924-.383\\\"/><path d=\\\"m20.772 7.148.924.383\\\"/><path d=\\\"M22 13v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7\\\"/><path d=\\\"M8 21h8\\\"/><circle cx=\\\"18\\\" cy=\\\"6\\\" r=\\\"3\\\"/></svg>\",\n \"iconNeutral\": \"<svg viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"M12 17v4\\\"/><path d=\\\"m14.305 7.53.923-.382\\\"/><path d=\\\"m15.228 4.852-.923-.383\\\"/><path d=\\\"m16.852 3.228-.383-.924\\\"/><path d=\\\"m16.852 8.772-.383.923\\\"/><path d=\\\"m19.148 3.228.383-.924\\\"/><path d=\\\"m19.53 9.696-.382-.924\\\"/><path d=\\\"m20.772 4.852.924-.383\\\"/><path d=\\\"m20.772 7.148.924.383\\\"/><path d=\\\"M22 13v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7\\\"/><path d=\\\"M8 21h8\\\"/><circle cx=\\\"18\\\" cy=\\\"6\\\" r=\\\"3\\\"/></svg>\",\n \"lastUpdatedAt\": null,\n \"operations\": [\n \"abortOperation\",\n \"auditObjectContent\",\n \"findObject\",\n \"getReadableStream\",\n \"listNodes\",\n \"previewObject\",\n \"retrieveRecords\"\n ],\n \"status\": null,\n \"statusId\": \"beta\",\n \"typeId\": \"connector\",\n \"usageId\": \"source\",\n \"vendorAccountURL\": null,\n \"vendorDocumentationURL\": null,\n \"vendorHomeURL\": null,\n \"version\": \"0.0.12\"\n}","// External Dependencies\nimport { nanoid } from 'nanoid';\n\n// DPUse Framework\nimport type { ConnectionNodeConfig } from '@dpuse/dpuse-shared/component/connection';\nimport type {\n AuditObjectContentOptions,\n AuditObjectContentResult,\n ConnectorConfig,\n ConnectorInterface,\n ConnectorUtilities,\n FindObjectOptions,\n FindObjectResult,\n GetReadableStreamOptions,\n ListNodesOptions,\n ListNodesResult,\n PreviewObjectOptions,\n RetrievalTypeId,\n RetrieveRecordsOptions,\n RetrieveRecordsSummary\n} from '@dpuse/dpuse-shared/component/module/connector';\nimport { buildFetchError, ConnectorError, normalizeToError } from '@dpuse/dpuse-shared/errors';\nimport { extractExtensionFromPath, extractNameFromPath, lookupMimeTypeForExtension } from '@dpuse/dpuse-shared/utilities';\nimport { loadTool, type ToolConfig } from '@dpuse/dpuse-shared/component/module/tool';\nimport { ORDERED_VALUE_DELIMITER_IDS, type ParsingRecord, type PreviewConfig } from '@dpuse/dpuse-shared/component/dataView';\n\n// DPUse Tools\nimport type { Tool as CSVParseTool } from '@dpuse/dpuse-tool-csv-parse';\nimport type { Tool as FileOperatorsTool } from '@dpuse/dpuse-tool-file-operators';\nimport type { Tool as RustCsvCoreTool } from '@dpuse/dpuse-tool-rust-csv-core';\n\n// Data\nimport applicationFolderPathData from '@/applicationIndex.json';\nimport config from '~/config.json';\n\n/**\n * File store folder paths.\n */\ntype ApplicationFolderNode =\n | ({ typeId: 'folder'; childCount: number } & { name: string })\n | ({ typeId: 'object'; id: string; lastModifiedAt: number; size: number } & { name: string });\n\n/**\n * File store folder paths.\n */\ntype ApplicationFolderPaths = Record<string, ApplicationFolderNode[]>;\n\n/**\n * Cloudflare R2 file store directory prefix.\n */\nconst URL_PREFIX = 'https://sample-data-eu.dpuse.app/application';\n\n// Connectors\nexport class Connector implements ConnectorInterface {\n abortController: AbortController | undefined;\n readonly config: ConnectorConfig;\n connectorUtilities: ConnectorUtilities;\n readonly toolConfigs;\n\n constructor(connectorUtilities: ConnectorUtilities, toolConfigs: ToolConfig[]) {\n this.abortController = undefined;\n this.config = config as ConnectorConfig;\n this.connectorUtilities = connectorUtilities;\n this.toolConfigs = toolConfigs;\n }\n\n // Operations ──────────────────────────────────────────────────────────────────────────────────────────────────────\n\n // Abort the currently running operation\n abortOperation(): void {\n if (!this.abortController) return;\n this.abortController.abort();\n this.abortController = undefined;\n }\n\n // Audit object content\n async auditObjectContent(options: AuditObjectContentOptions, chunk: (rowCount: number) => void): Promise<AuditObjectContentResult> {\n this.abortController = new AbortController();\n\n try {\n if (options.parsingToolName === 'dpuse-tool-rust-csv-core') {\n // Get the readable stream\n const stream = await this.getReadableStream({ id: '', path: options.path });\n\n // Load the Rust CSV core tool\n const rustCsvTool = await loadTool<RustCsvCoreTool>(this.toolConfigs, 'rust-csv-core');\n\n // Choose processing mode based on browser capability\n const options2 = { delimiter: ',', hasHeaders: true };\n const result = options.supportsTransferableStreams\n ? await rustCsvTool.processWithTransferableStream(stream, options2, chunk)\n : await rustCsvTool.processWithChunks(stream, options2, chunk);\n\n return { processedRowCount: result.processedRowCount, durationMs: result.durationMs ?? 0 };\n }\n\n const csvParseTool = await loadTool<CSVParseTool>(this.toolConfigs, 'csv-parse');\n const parseStreamOptions = { delimiter: options.valueDelimiterId, relax_column_count: true, relax_quotes: true };\n const url = `${URL_PREFIX}${options.path}`;\n const summary = await csvParseTool.parseStream(options, parseStreamOptions, url, this.abortController, (parameter) => console.log(parameter));\n console.log('summary', summary);\n // complete(summary);\n\n return { processedRowCount: 0, durationMs: 0 };\n } catch (error) {\n throw normalizeToError(error);\n } finally {\n this.abortController = undefined;\n }\n }\n\n // Find the folder path containing the specified object node\n findObject(options: FindObjectOptions): Promise<FindObjectResult> {\n const fileStoreFolderPaths = applicationFolderPathData as ApplicationFolderPaths;\n // Loop through the folder path data checking for an object entry with an identifier equal to the object name.\n for (const folderPath in fileStoreFolderPaths) {\n if (Object.hasOwn(fileStoreFolderPaths, folderPath)) {\n const folderPathNodes = fileStoreFolderPaths[folderPath];\n const folderPathNode = folderPathNodes?.find((folderPathNode) => folderPathNode.typeId === 'object' && folderPathNode.id === options.nodeId);\n if (folderPathNode) return Promise.resolve({ path: folderPath, object: undefined }); // Found, return folder path.\n }\n }\n return Promise.reject(new Error('Not found.')); // Not found.\n }\n\n // Get a readable stream for the specified object node path\n async getReadableStream(options: GetReadableStreamOptions): Promise<ReadableStream<Uint8Array>> {\n // Create an abort controller and extract its signal.\n const { signal } = (this.abortController = new AbortController());\n\n try {\n const response = await fetch(`${URL_PREFIX}${options.path}`, { signal });\n if (!response.ok) {\n throw await buildFetchError(response, `Failed to fetch '${options.path}' file.`, 'dpuse-connector-file-store-emulator|Connector|getReadableStream');\n }\n if (response.body == null) {\n throw new ConnectorError('Readable streams are not supported in this runtime.', 'dpuse-connector-file-store-emulator|Connector|getReadableStream.unsupported');\n }\n return await Promise.resolve(response.body);\n } catch (error) {\n throw normalizeToError(error);\n } finally {\n this.abortController = undefined;\n }\n }\n\n // Lists all nodes (folders and objects) in the specified folder path\n listNodes(options: ListNodesOptions): Promise<ListNodesResult> {\n const fileStoreFolderPaths = applicationFolderPathData as ApplicationFolderPaths;\n const folderNodes = fileStoreFolderPaths[options.folderPath] ?? [];\n const connectionNodeConfigs: ConnectionNodeConfig[] = [];\n for (const folderNode of folderNodes) {\n if (folderNode.typeId === 'folder') {\n connectionNodeConfigs.push(constructFolderNodeConfig(options.folderPath, folderNode.name, folderNode.childCount));\n } else {\n connectionNodeConfigs.push(constructObjectNodeConfig(options.folderPath, folderNode.id, folderNode.name, folderNode.lastModifiedAt, folderNode.size));\n }\n }\n return Promise.resolve({ cursor: undefined, isMore: false, connectionNodeConfigs, totalCount: connectionNodeConfigs.length });\n }\n\n // Preview the contents of the object node with the specified path\n async previewObject(options: PreviewObjectOptions): Promise<PreviewConfig> {\n // Create an abort controller and extract its signal.\n const { signal } = (this.abortController = new AbortController());\n\n try {\n const asAt = Date.now();\n const startedAt = performance.now();\n\n // Preview file to determine file format and decode text.\n const fileOperatorsTool = await loadTool<FileOperatorsTool>(this.toolConfigs, 'file-operators');\n const filePreviewResult = await fileOperatorsTool.previewFile(`${URL_PREFIX}${options.path}`, signal, options.chunkSize);\n if (filePreviewResult.dataFormatId == null) throw new Error(`File '${options.path}' has unknown type.`);\n if (filePreviewResult.text == null) throw new Error(`File '${options.path}' is empty.`);\n\n // Parse text, identify delimiters, and produce string value records.\n const csvParseTool = await loadTool<CSVParseTool>(this.toolConfigs, 'csv-parse');\n const parseTextResult = await csvParseTool.parseText(filePreviewResult.text, ORDERED_VALUE_DELIMITER_IDS);\n\n // Infer and cast values for each parsed record.\n const inferenceSummary = this.connectorUtilities.inferDataTypes(parseTextResult.parsedRecords);\n\n return {\n asAt,\n columnConfigs: inferenceSummary.columnConfigs,\n dataFormatId: filePreviewResult.dataFormatId,\n duration: performance.now() - startedAt,\n encodingId: filePreviewResult.encodingId,\n encodingConfidenceLevel: filePreviewResult.encodingConfidenceLevel,\n fileType: filePreviewResult.fileTypeConfig,\n hasHeaders: inferenceSummary.hasHeaderRow,\n recordDelimiterId: parseTextResult.recordDelimiterId,\n parsedRecords: parseTextResult.parsedRecords,\n inferenceRecords: inferenceSummary.typedRecords,\n size: filePreviewResult.bytes.length,\n text: filePreviewResult.text,\n valueDelimiterId: parseTextResult.valueDelimiterId\n };\n } catch (error) {\n throw normalizeToError(error);\n } finally {\n this.abortController = undefined;\n }\n }\n // Retrieves all records from a CSV object node using streaming and chunked processing\n async retrieveRecords(\n options: RetrieveRecordsOptions,\n chunk: (typeId: RetrievalTypeId, records: ParsingRecord[]) => void,\n complete: (result: RetrieveRecordsSummary) => void\n ): Promise<void> {\n this.abortController = new AbortController();\n try {\n const csvParseTool = await loadTool<CSVParseTool>(this.toolConfigs, 'csv-parse');\n const parseStreamOptions = { delimiter: options.valueDelimiterId, info: true, relax_column_count: true, relax_quotes: true };\n const url = `${URL_PREFIX}${options.path}`;\n const summary = await csvParseTool.parseStream(options, parseStreamOptions, url, this.abortController, chunk);\n complete(summary);\n } catch (error) {\n throw normalizeToError(error);\n } finally {\n this.abortController = undefined;\n }\n }\n}\n\n// Helpers ─────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\n// Construct folder node configuration.\nfunction constructFolderNodeConfig(folderPath: string, name: string, childCount: number): ConnectionNodeConfig {\n return {\n childCount,\n childNodes: [],\n extension: undefined,\n folderPath,\n handle: undefined,\n id: nanoid(),\n label: name,\n lastModifiedAt: undefined,\n mimeType: undefined,\n name,\n size: undefined,\n typeId: 'folder'\n };\n}\n\n// Construct object (file) node configuration.\nfunction constructObjectNodeConfig(folderPath: string, id: string, fullName: string, lastModifiedAt: number, size: number): ConnectionNodeConfig {\n const name = extractNameFromPath(fullName) ?? '';\n const extension = extractExtensionFromPath(fullName);\n const lastModifiedAtTimestamp = lastModifiedAt;\n const mimeType = lookupMimeTypeForExtension(extension);\n return {\n childCount: undefined,\n childNodes: [],\n extension,\n folderPath,\n handle: undefined,\n id,\n label: fullName,\n lastModifiedAt: lastModifiedAtTimestamp,\n mimeType,\n name,\n size,\n typeId: 'object'\n };\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dpuse/dpuse-connector-application-emulator",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.12",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Jonathan Terrell <terrell.jm@gmail.com>",
|
|
6
6
|
"private": false,
|
|
@@ -57,7 +57,8 @@
|
|
|
57
57
|
"typescript": "^6.0.3",
|
|
58
58
|
"vite": "^8.0.13",
|
|
59
59
|
"vite-plugin-dts": "^5.0.0",
|
|
60
|
-
"vitest": "^4.1.6"
|
|
60
|
+
"vitest": "^4.1.6",
|
|
61
|
+
"wrangler": "^4.103.0"
|
|
61
62
|
},
|
|
62
63
|
"scripts": {
|
|
63
64
|
"audit": "op run --env-file=.env -- node -e \"import('@dpuse/dpuse-development').then(m => m.auditDependencies())\"",
|