datapos-connector-file-store-emulator 0.2.352 → 0.2.353

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.
@@ -1,45 +1,45 @@
1
- const w = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
2
- let g = (t = 21) => {
1
+ const u = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";
2
+ let C = (t = 21) => {
3
3
  let e = "", i = crypto.getRandomValues(new Uint8Array(t |= 0));
4
4
  for (; t--; )
5
- e += w[i[t] & 63];
5
+ e += u[i[t] & 63];
6
6
  return e;
7
7
  };
8
- async function E(t, e) {
9
- const i = `datapos-tool-${e}`, d = t.find((o) => o.id === i);
8
+ async function h(t, e) {
9
+ const i = `datapos-tool-${e}`, d = t.find((s) => s.id === i);
10
10
  if (!d) throw new Error(`Connector could not load unknown tool '${e}'.`);
11
- const s = await import(`https://engine-eu.datapos.app/tools/${e}_v${d.version}/${i}.es.js`);
12
- return new s.Tool();
11
+ const o = await import(`https://engine-eu.datapos.app/tools/${e}_v${d.version}/${i}.es.js`);
12
+ return new o.Tool();
13
13
  }
14
- class C extends Error {
14
+ class j extends Error {
15
15
  locator;
16
16
  /** Logical source of the error. */
17
17
  constructor(e, i, d) {
18
18
  super(e, d), this.name = new.target.name, this.locator = i;
19
19
  }
20
20
  }
21
- class R extends C {
21
+ class w extends j {
22
22
  }
23
- class P extends R {
23
+ class E extends w {
24
24
  body;
25
25
  /** Sanitized HTTP response body. */
26
- constructor(e, i, d, s) {
27
- super(e, i, s), this.name = new.target.name, this.body = _(d ?? void 0);
26
+ constructor(e, i, d, o) {
27
+ super(e, i, o), this.name = new.target.name, this.body = g(d ?? void 0);
28
28
  }
29
29
  }
30
- class z extends C {
30
+ class A extends j {
31
31
  }
32
- async function j(t, e, i) {
33
- const d = ` - ${t.statusText}`, s = `${e} Response status '${t.status}${t.statusText ? d : ""}' received.`;
34
- let o;
32
+ async function y(t, e, i) {
33
+ const d = ` - ${t.statusText}`, o = `${e} Response status '${t.status}${t.statusText ? d : ""}' received.`;
34
+ let s;
35
35
  try {
36
- o = await t.text();
36
+ s = await t.text();
37
37
  } catch (a) {
38
- o = `<body unavailable: ${p(a).message}>`;
38
+ s = `<body unavailable: ${b(a).message}>`;
39
39
  }
40
- return new P(s, i, o);
40
+ return new E(o, i, s);
41
41
  }
42
- function p(t) {
42
+ function b(t) {
43
43
  if (t instanceof Error) return t;
44
44
  if (typeof t == "string") return new Error(t);
45
45
  if (typeof t == "number" || typeof t == "boolean" || typeof t == "bigint") return new Error(String(t));
@@ -52,23 +52,23 @@ function p(t) {
52
52
  }
53
53
  return new Error("Unknown error");
54
54
  }
55
- function _(t) {
55
+ function g(t) {
56
56
  if (!(t == null || t === ""))
57
57
  return t.length > 2048 ? `${t.slice(0, 2048)}... [truncated]` : t;
58
58
  }
59
- function S(t) {
59
+ function R(t) {
60
60
  if (t) {
61
61
  const e = t.lastIndexOf("/"), i = t.lastIndexOf(".", e === -1 ? t.length : e);
62
62
  return i === -1 ? t : t.slice(0, Math.max(0, i));
63
63
  }
64
64
  }
65
- function T(t) {
65
+ function P(t) {
66
66
  if (t) {
67
67
  const e = t.lastIndexOf(".");
68
68
  if (e !== -1) return t.slice(Math.max(0, e + 1));
69
69
  }
70
70
  }
71
- function k(t) {
71
+ function _(t) {
72
72
  switch (t) {
73
73
  case "csv":
74
74
  return "text/csv";
@@ -83,26 +83,26 @@ function k(t) {
83
83
  return "application/octet-stream";
84
84
  }
85
85
  }
86
- const F = "datapos-connector-file-store-emulator", x = { en: "File Store Emulator" }, U = { "en-gb": "Imitates a cloud-based file storage solution. It hosts a read-only set of files for demonstration, evaluation and testing purposes and is freely available to all users." }, L = null, O = "fileStore", N = { default: { authMethodId: "none", maxConnectionCount: 1 } }, V = '<svg fill="#000000" height="100%" viewBox="0 0 576 512"><path d="M320 32H64C46.33 32 32 46.33 32 64V448C32 465.7 46.33 480 64 480H296.2C305.1 491.8 317.3 502.3 329.7 511.3C326.6 511.7 323.3 512 320 512H64C28.65 512 0 483.3 0 448V64C0 28.65 28.65 0 64 0H320C355.3 0 384 28.65 384 64V198.6C372.8 201.8 362.1 206 352 211.2V64C352 46.33 337.7 32 320 32V32zM64 144C64 135.2 71.16 128 80 128H304C312.8 128 320 135.2 320 144C320 152.8 312.8 160 304 160H80C71.16 160 64 152.8 64 144zM272 224C280.8 224 288 231.2 288 240C288 248.8 280.8 256 272 256H80C71.16 256 64 248.8 64 240C64 231.2 71.16 224 80 224H272zM208 320C216.8 320 224 327.2 224 336C224 344.8 216.8 352 208 352H80C71.16 352 64 344.8 64 336C64 327.2 71.16 320 80 320H208zM476.7 324.7C482.9 318.4 493.1 318.4 499.3 324.7C505.6 330.9 505.6 341.1 499.3 347.3L427.3 419.3C421.1 425.6 410.9 425.6 404.7 419.3L364.7 379.3C358.4 373.1 358.4 362.9 364.7 356.7C370.9 350.4 381.1 350.4 387.3 356.7L416 385.4L476.7 324.7zM288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368zM432 480C493.9 480 544 429.9 544 368C544 306.1 493.9 256 432 256C370.1 256 320 306.1 320 368C320 429.9 370.1 480 432 480z"/></svg>', D = '<svg fill="#ffffff" height="100%" viewBox="0 0 576 512"><path d="M320 32H64C46.33 32 32 46.33 32 64V448C32 465.7 46.33 480 64 480H296.2C305.1 491.8 317.3 502.3 329.7 511.3C326.6 511.7 323.3 512 320 512H64C28.65 512 0 483.3 0 448V64C0 28.65 28.65 0 64 0H320C355.3 0 384 28.65 384 64V198.6C372.8 201.8 362.1 206 352 211.2V64C352 46.33 337.7 32 320 32V32zM64 144C64 135.2 71.16 128 80 128H304C312.8 128 320 135.2 320 144C320 152.8 312.8 160 304 160H80C71.16 160 64 152.8 64 144zM272 224C280.8 224 288 231.2 288 240C288 248.8 280.8 256 272 256H80C71.16 256 64 248.8 64 240C64 231.2 71.16 224 80 224H272zM208 320C216.8 320 224 327.2 224 336C224 344.8 216.8 352 208 352H80C71.16 352 64 344.8 64 336C64 327.2 71.16 320 80 320H208zM476.7 324.7C482.9 318.4 493.1 318.4 499.3 324.7C505.6 330.9 505.6 341.1 499.3 347.3L427.3 419.3C421.1 425.6 410.9 425.6 404.7 419.3L364.7 379.3C358.4 373.1 358.4 362.9 364.7 356.7C370.9 350.4 381.1 350.4 387.3 356.7L416 385.4L476.7 324.7zM288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368zM432 480C493.9 480 544 429.9 544 368C544 306.1 493.9 256 432 256C370.1 256 320 306.1 320 368C320 429.9 370.1 480 432 480z"/></svg>', B = null, G = ["abortOperation", "findObjectFolderPath", "getReadableStream", "listNodes", "previewObject", "retrieveRecords"], H = null, q = "beta", Z = "connector", K = "source", Q = null, J = null, X = null, Y = "0.2.352", W = {
87
- id: F,
88
- label: x,
89
- description: U,
90
- category: L,
91
- categoryId: O,
92
- implementations: N,
93
- icon: V,
94
- iconDark: D,
95
- lastUpdatedAt: B,
96
- operations: G,
97
- status: H,
98
- statusId: q,
99
- typeId: Z,
100
- usageId: K,
101
- vendorAccountURL: Q,
102
- vendorDocumentationURL: J,
103
- vendorHomeURL: X,
104
- version: Y
105
- }, v = {
86
+ const S = "datapos-connector-file-store-emulator", T = { en: "File Store Emulator" }, k = { "en-gb": "Imitates a cloud-based file storage solution. It hosts a read-only set of files for demonstration, evaluation and testing purposes and is freely available to all users." }, F = null, x = "fileStore", U = { default: { authMethodId: "none", maxConnectionCount: 1 } }, L = '<svg fill="#000000" height="100%" viewBox="0 0 576 512"><path d="M320 32H64C46.33 32 32 46.33 32 64V448C32 465.7 46.33 480 64 480H296.2C305.1 491.8 317.3 502.3 329.7 511.3C326.6 511.7 323.3 512 320 512H64C28.65 512 0 483.3 0 448V64C0 28.65 28.65 0 64 0H320C355.3 0 384 28.65 384 64V198.6C372.8 201.8 362.1 206 352 211.2V64C352 46.33 337.7 32 320 32V32zM64 144C64 135.2 71.16 128 80 128H304C312.8 128 320 135.2 320 144C320 152.8 312.8 160 304 160H80C71.16 160 64 152.8 64 144zM272 224C280.8 224 288 231.2 288 240C288 248.8 280.8 256 272 256H80C71.16 256 64 248.8 64 240C64 231.2 71.16 224 80 224H272zM208 320C216.8 320 224 327.2 224 336C224 344.8 216.8 352 208 352H80C71.16 352 64 344.8 64 336C64 327.2 71.16 320 80 320H208zM476.7 324.7C482.9 318.4 493.1 318.4 499.3 324.7C505.6 330.9 505.6 341.1 499.3 347.3L427.3 419.3C421.1 425.6 410.9 425.6 404.7 419.3L364.7 379.3C358.4 373.1 358.4 362.9 364.7 356.7C370.9 350.4 381.1 350.4 387.3 356.7L416 385.4L476.7 324.7zM288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368zM432 480C493.9 480 544 429.9 544 368C544 306.1 493.9 256 432 256C370.1 256 320 306.1 320 368C320 429.9 370.1 480 432 480z"/></svg>', O = '<svg fill="#ffffff" height="100%" viewBox="0 0 576 512"><path d="M320 32H64C46.33 32 32 46.33 32 64V448C32 465.7 46.33 480 64 480H296.2C305.1 491.8 317.3 502.3 329.7 511.3C326.6 511.7 323.3 512 320 512H64C28.65 512 0 483.3 0 448V64C0 28.65 28.65 0 64 0H320C355.3 0 384 28.65 384 64V198.6C372.8 201.8 362.1 206 352 211.2V64C352 46.33 337.7 32 320 32V32zM64 144C64 135.2 71.16 128 80 128H304C312.8 128 320 135.2 320 144C320 152.8 312.8 160 304 160H80C71.16 160 64 152.8 64 144zM272 224C280.8 224 288 231.2 288 240C288 248.8 280.8 256 272 256H80C71.16 256 64 248.8 64 240C64 231.2 71.16 224 80 224H272zM208 320C216.8 320 224 327.2 224 336C224 344.8 216.8 352 208 352H80C71.16 352 64 344.8 64 336C64 327.2 71.16 320 80 320H208zM476.7 324.7C482.9 318.4 493.1 318.4 499.3 324.7C505.6 330.9 505.6 341.1 499.3 347.3L427.3 419.3C421.1 425.6 410.9 425.6 404.7 419.3L364.7 379.3C358.4 373.1 358.4 362.9 364.7 356.7C370.9 350.4 381.1 350.4 387.3 356.7L416 385.4L476.7 324.7zM288 368C288 288.5 352.5 224 432 224C511.5 224 576 288.5 576 368C576 447.5 511.5 512 432 512C352.5 512 288 447.5 288 368zM432 480C493.9 480 544 429.9 544 368C544 306.1 493.9 256 432 256C370.1 256 320 306.1 320 368C320 429.9 370.1 480 432 480z"/></svg>', N = null, V = ["abortOperation", "findObjectFolderPath", "getReadableStream", "listNodes", "previewObject", "retrieveRecords"], D = null, B = "beta", G = "connector", H = "source", q = null, Z = null, K = null, Q = "0.2.353", J = {
87
+ id: S,
88
+ label: T,
89
+ description: k,
90
+ category: F,
91
+ categoryId: x,
92
+ implementations: U,
93
+ icon: L,
94
+ iconDark: O,
95
+ lastUpdatedAt: N,
96
+ operations: V,
97
+ status: D,
98
+ statusId: B,
99
+ typeId: G,
100
+ usageId: H,
101
+ vendorAccountURL: q,
102
+ vendorDocumentationURL: Z,
103
+ vendorHomeURL: K,
104
+ version: Q
105
+ }, M = {
106
106
  "": [{ id: "cpB45vx36UWghglh18MUS", lastModifiedAt: 17435076862165598e-4, name: "ENGAGEMENT_START_EVENTS_202405121858.csv", size: 122800, typeId: "object" }, { id: "GUIHoZJcLIFZ6B7A1bu0r", lastModifiedAt: 1743507686221789e-3, name: "PEOPLE_BIRTH_EVENTS_202405121857.csv", size: 114287, typeId: "object" }, { childCount: 3, name: "AUDATACY Interchange Format", typeId: "folder" }, { childCount: 12, name: "Formula 1", typeId: "folder" }, { childCount: 7, name: "Salesforce API", typeId: "folder" }, { childCount: 156, name: "Salesforce Extract", typeId: "folder" }, { childCount: 20, name: "SAP Employee Central Extract", typeId: "folder" }, { childCount: 7, name: "SAP SuccessFactors API", typeId: "folder" }, { childCount: 12, name: "Test Files", typeId: "folder" }],
107
107
  "/AUDATACY Interchange Format": [{ childCount: 11, name: "Coded Data", typeId: "folder" }, { childCount: 1, name: "Human Resources", typeId: "folder" }, { childCount: 1, name: "Party", typeId: "folder" }],
108
108
  "/AUDATACY Interchange Format/Coded Data": [{ id: "Z8DTYiYrKBZfGOuEkFky-", lastModifiedAt: 17435076862152952e-4, name: "01. Coded Data - All.csv", size: 13002, typeId: "object" }, { id: "DxA6huk0PyVLKb5oahZCH", lastModifiedAt: 17435076862153406e-4, name: "02. Coded Types - All.csv", size: 93, typeId: "object" }, { id: "1J2vcD7Ki52Q_DG1PZ-eO", lastModifiedAt: 1743507686215382e-3, name: "03. Coded Types - Ids.csv", size: 48, typeId: "object" }, { id: "vO4JrnCBNyas7n5ojey6d", lastModifiedAt: 1743507686215424e-3, name: "04. Coded Types - Labels - Linked by Id.csv", size: 101, typeId: "object" }, { id: "UPRrNFmfmyi1iUWiNVs5n", lastModifiedAt: 17435076862154666e-4, name: "05. Coded Types - Labels - Linked by Alternate Id.csv", size: 96, typeId: "object" }, { id: "P1rsyePqZ4WTCEdG60oZS", lastModifiedAt: 17435076862155642e-4, name: "06. Coded Values - All - Linked by Id.csv", size: 9502, typeId: "object" }, { id: "Z0NjfhIPTWHdGr-P_YH-c", lastModifiedAt: 17435076862156377e-4, name: "07. Coded Values - All - Linked by Alternate Id.csv", size: 7269, typeId: "object" }, { id: "hOqs9LVlYV6j40N7cGU-a", lastModifiedAt: 1743507686215698e-3, name: "08. Coded Values - Ids - Linked by Id.csv", size: 5524, typeId: "object" }, { id: "xKX3X-CkYz-Xir8uizU4k", lastModifiedAt: 17435076862157522e-4, name: "09. Coded Values - Ids - Linked by Alternate Id.csv", size: 3291, typeId: "object" }, { id: "FflxZi-9hBI_Ej4bLUAv_", lastModifiedAt: 17435076862158354e-4, name: "10. Coded Values - Labels - Linked by Id.csv", size: 9752, typeId: "object" }, { id: "vw2hHCyZ6kkVOez7D8iMs", lastModifiedAt: 17435076862159062e-4, name: "11. Coded Values - Labels - Linked by Alternate Id.csv", size: 7512, typeId: "object" }],
@@ -120,29 +120,29 @@ const F = "datapos-connector-file-store-emulator", x = { en: "File Store Emulato
120
120
  "/Test Files/Encoding": [{ id: "VDPKvgp8-hYHAyD5Lspqx", lastModifiedAt: 17435076862472607e-4, name: "big5", size: 614, typeId: "object" }, { id: "BuaHWD5GhE1tR4h50Sgjb", lastModifiedAt: 1743507686247412e-3, name: "euc-jp", size: 3919, typeId: "object" }, { id: "4zP5NrMMQKfEImM1ql9rh", lastModifiedAt: 1743507686247461e-3, name: "euc-kr", size: 2480, typeId: "object" }, { id: "4ddofaJBAo3000bUD4l_-", lastModifiedAt: 17435076862475098e-4, name: "gb18030", size: 1665, typeId: "object" }, { id: "yk7BqZOfbjw1lrOWkYMX8", lastModifiedAt: 17435076862475715e-4, name: "iso-2022-jp", size: 2924, typeId: "object" }, { id: "A52Tx9PVrjFXZAzEyska1", lastModifiedAt: 17435076862476187e-4, name: "iso-8859-2", size: 1600, typeId: "object" }, { id: "CzzBPKwpdex-8NIdpgC0b", lastModifiedAt: 1743507686247666e-3, name: "iso-8859-5", size: 1024, typeId: "object" }, { id: "6LYPo_5Ux6C7olOqf0caX", lastModifiedAt: 17435076862477134e-4, name: "iso-8859-6", size: 2241, typeId: "object" }, { id: "bfAhVWgQoJ4gK1WpgMI-O", lastModifiedAt: 1743507686247772e-3, name: "iso-8859-7", size: 1033, typeId: "object" }, { id: "94cPoDWerynVP5nYqQok5", lastModifiedAt: 17435076862478198e-4, name: "koi8-r", size: 1024, typeId: "object" }, { id: "wZP8uYiw71--vBcvc8mr-", lastModifiedAt: 17435076862478694e-4, name: "shift_jis", size: 2816, typeId: "object" }, { id: "8N1hAcknG5QTCBGAb_DgC", lastModifiedAt: 17435076862479082e-4, name: "utf-16be", size: 1334, typeId: "object" }, { id: "b0wcTK1T3jAS_FMhx74-L", lastModifiedAt: 1743507686247954e-3, name: "utf-16le", size: 1334, typeId: "object" }, { id: "Ar8QcfiznCHcGUZqvc4Xt", lastModifiedAt: 1743507686247995e-3, name: "utf-8", size: 1125, typeId: "object" }, { id: "MFdztx3Hn_W0cZ-FvJAlb", lastModifiedAt: 17435076862480386e-4, name: "windows-1250", size: 1617, typeId: "object" }, { id: "Hh7pKXC0Y-_OyT_zwSmMK", lastModifiedAt: 17435076862480842e-4, name: "windows-1251", size: 1024, typeId: "object" }, { id: "OcIEHmkSVO8lOX7srKkPn", lastModifiedAt: 1743507686248141e-3, name: "windows-1252", size: 2976, typeId: "object" }, { id: "Fr-FOrJwjhwh-RrejQG2y", lastModifiedAt: 1743507686248181e-3, name: "windows-1253", size: 1052, typeId: "object" }, { id: "fJnDU4alQlSZ4x-nojhp1", lastModifiedAt: 17435076862482227e-4, name: "windows-1254", size: 2445, typeId: "object" }, { id: "vI70VbY2bLWPSppUJ27pX", lastModifiedAt: 17435076862482617e-4, name: "windows-1255", size: 2405, typeId: "object" }, { id: "CBX69u7zo_sNZTLSXL_Ok", lastModifiedAt: 17435076862483171e-4, name: "windows-1256", size: 2241, typeId: "object" }],
121
121
  "/Test Files/Encoding Test Files": [{ id: "2TJo3wC-qs3eQ4Q1LiC4p", lastModifiedAt: 17435076862436587e-4, name: "ascii.txt", size: 44, typeId: "object" }, { id: "lrrRdBkfNLjxDpgGBJafD", lastModifiedAt: 17435076862436975e-4, name: "big5.txt", size: 37, typeId: "object" }, { id: "kcfwAkKq1bMepTQIMmX-f", lastModifiedAt: 17435076862459814e-4, name: "euc-jp.txt", size: 218, typeId: "object" }, { id: "bciRqR0P6iJyQ_vtOop3Y", lastModifiedAt: 17435076862460261e-4, name: "euc-kr.txt", size: 153, typeId: "object" }, { id: "f4Q9QEcVNnx0hSGJrhOIV", lastModifiedAt: 17435076862460706e-4, name: "gb2312.txt", size: 105, typeId: "object" }, { id: "PcztjI4G2NZOYCdLSD5kA", lastModifiedAt: 17435076862461167e-4, name: "hz-gb-2312.txt", size: 117, typeId: "object" }, { id: "lLzl7OwIayebmkDf_johR", lastModifiedAt: 17435076862461694e-4, name: "ibm855.txt", size: 290, typeId: "object" }, { id: "Mq7D4ZWQsTMRsTX7_CsvU", lastModifiedAt: 17435076862462126e-4, name: "ibm866.txt", size: 290, typeId: "object" }, { id: "We9LB0aWPrd-IODoVKoRt", lastModifiedAt: 1743507686246254e-3, name: "iso-2022-jp.txt", size: 224, typeId: "object" }, { id: "W0qTlIiYoioBujG6zw8_Y", lastModifiedAt: 17435076862462983e-4, name: "iso-2022-kr.txt", size: 198, typeId: "object" }, { id: "I6IMhKsT4Uz4wGEJvW36C", lastModifiedAt: 17435076862463481e-4, name: "iso-8859-2.txt", size: 273, typeId: "object" }, { id: "Xwkvh13qNNKRwu7jYmzjR", lastModifiedAt: 17435076862463884e-4, name: "iso-8859-5-bulgarian.txt", size: 304, typeId: "object" }, { id: "asxDjWbs34mTKaGTkbNfw", lastModifiedAt: 17435076862464302e-4, name: "iso-8859-5-russian.txt", size: 290, typeId: "object" }, { id: "kgbViYQ9OX4w5SpLdskgZ", lastModifiedAt: 17435076862464714e-4, name: "iso-8859-7.txt", size: 319, typeId: "object" }, { id: "Bq0Gn-1G5BrhTxBUOQ7DF", lastModifiedAt: 17435076862465222e-4, name: "iso-8859-8.txt", size: 307, typeId: "object" }, { id: "jCtOU9WWV8jHWMgr_Oq7r", lastModifiedAt: 17435076862465593e-4, name: "koi8-r.txt", size: 290, typeId: "object" }, { id: "--cTZDZwr5BgECFgDGIo2", lastModifiedAt: 17435076862465964e-4, name: "shift_jis.txt", size: 216, typeId: "object" }, { id: "8mdQ36gjXep2wGj_kuQHx", lastModifiedAt: 1743507686246642e-3, name: "tis-620.txt", size: 68, typeId: "object" }, { id: "5rUGdrjGK4v6hZ1qwH2KJ", lastModifiedAt: 17435076862466946e-4, name: "utf-16be.txt", size: 2, typeId: "object" }, { id: "NtUpxZ5XGC1UAa0bJU4Cd", lastModifiedAt: 17435076862467427e-4, name: "utf-16le.txt", size: 84, typeId: "object" }, { id: "djicGUE7J59cQmEz22Lw2", lastModifiedAt: 1743507686246787e-3, name: "utf-32be.txt", size: 4, typeId: "object" }, { id: "E4ewVZr3kM5JfkCNHhaHv", lastModifiedAt: 17435076862468293e-4, name: "utf-32le.txt", size: 18, typeId: "object" }, { id: "T0gS9i2pl9OCYmqJdcEx-", lastModifiedAt: 17435076862468833e-4, name: "utf-8-with-bom.txt", size: 58, typeId: "object" }, { id: "ctcPwumVXy1mYV1fht5yD", lastModifiedAt: 17435076862469265e-4, name: "utf-8-without-bom.txt", size: 58, typeId: "object" }, { id: "V0aG5TkpxwM3_Q1di66Nz", lastModifiedAt: 1743507686246975e-3, name: "windows-1251.txt", size: 290, typeId: "object" }, { id: "LSFzaM5jL_I544Ol4mErA", lastModifiedAt: 17435076862470168e-4, name: "windows-1252.txt", size: 433, typeId: "object" }, { id: "SF10JGkRZ1rVLdm5LVBrl", lastModifiedAt: 17435076862470657e-4, name: "windows-1255.txt", size: 36, typeId: "object" }, { id: "kEx_hKy6rjhn97BwN07Ip", lastModifiedAt: 1743507686247103e-3, name: "x-iso-10646-ucs-4-2143.txt", size: 20, typeId: "object" }, { id: "XFbR4pbjpQwlmlKFmRqDC", lastModifiedAt: 1743507686247142e-3, name: "x-iso-10646-ucs-4-3412.txt", size: 20, typeId: "object" }, { id: "BuqENK-iJAXc1noTneDzz", lastModifiedAt: 17435076862471843e-4, name: "x-mac-cyrillic.txt", size: 290, typeId: "object" }, { childCount: 38, name: "encodings", typeId: "folder" }],
122
122
  "/Test Files/Encoding Test Files/encodings": [{ id: "irBUQdMBx4ZhLXyti4t0W", lastModifiedAt: 1743507686243765e-3, name: "big5", size: 614, typeId: "object" }, { id: "BPyMwzoNSnGdUV_dzYEWz", lastModifiedAt: 17435076862438152e-4, name: "euc_jp", size: 3919, typeId: "object" }, { id: "FXjFtwUcRxKmH_ZCAaNz6", lastModifiedAt: 1743507686243867e-3, name: "euc_kr", size: 2480, typeId: "object" }, { id: "5fBDsObvTXORIIgptb-sl", lastModifiedAt: 17435076862439092e-4, name: "gb18030", size: 1665, typeId: "object" }, { id: "7Jt6_ku8bzWNBFjRaagdR", lastModifiedAt: 17435076862439512e-4, name: "iso2022cn", size: 1749, typeId: "object" }, { id: "WLvdjjUGMGnEv3FmDQJ9p", lastModifiedAt: 1743507686243999e-3, name: "iso2022jp", size: 2924, typeId: "object" }, { id: "6CsULI8SIvo4zwFjKAA1_", lastModifiedAt: 17435076862440513e-4, name: "iso2022kr", size: 3172, typeId: "object" }, { id: "SqbmllHEuS76me2jsWjLI", lastModifiedAt: 17435076862440952e-4, name: "iso88591_en", size: 2955, typeId: "object" }, { id: "5oCOldZaxX2XoavVBBgdc", lastModifiedAt: 1743507686244138e-3, name: "iso88592_cs", size: 1600, typeId: "object" }, { id: "UATsUFbSUtqVhVhMJ2sec", lastModifiedAt: 1743507686244182e-3, name: "iso88595_ru", size: 1024, typeId: "object" }, { id: "wC1_pjcjj0NZZWTxqiGaw", lastModifiedAt: 17435076862442336e-4, name: "iso88596_ar", size: 2241, typeId: "object" }, { id: "Pe8RK8l_zBAjLODUX34IB", lastModifiedAt: 1743507686244275e-3, name: "iso88597_el", size: 1033, typeId: "object" }, { id: "Ga6Z1yRgs99Vpa5QrR70_", lastModifiedAt: 17435076862445083e-4, name: "iso88598", size: 2352, typeId: "object" }, { id: "XmtdLSxT84HsoF7OIqye4", lastModifiedAt: 1743507686244566e-3, name: "iso88598_he", size: 2353, typeId: "object" }, { id: "3HCk8XXlua9KEOtc5iseJ", lastModifiedAt: 1743507686244627e-3, name: "iso88599_tr", size: 2424, typeId: "object" }, { id: "zjfA3EHpzaPHAvTkBICWG", lastModifiedAt: 17435076862446736e-4, name: "koi8r", size: 1024, typeId: "object" }, { id: "IRnhQiGe4mxsoQpaJCdRM", lastModifiedAt: 17435076862447236e-4, name: "lang_arabic", size: 4059, typeId: "object" }, { id: "ih-RgplBSErEYOcna-NlI", lastModifiedAt: 17435076862447717e-4, name: "lang_chinese", size: 916, typeId: "object" }, { id: "9EYQqNjgOksavPn--KH46", lastModifiedAt: 17435076862448289e-4, name: "lang_czech", size: 1795, typeId: "object" }, { id: "Xaeq_CiSthaccRyGw22Bx", lastModifiedAt: 17435076862448726e-4, name: "lang_greek", size: 1895, typeId: "object" }, { id: "421DaSaIy8ywB26Rc2GV1", lastModifiedAt: 1743507686244933e-3, name: "lang_hebrew", size: 4124, typeId: "object" }, { id: "N01Ggo186R8phM3c0zLa2", lastModifiedAt: 17435076862449873e-4, name: "lang_japanese", size: 3978, typeId: "object" }, { id: "T8jzTqgGlU30YQd1QvMm3", lastModifiedAt: 17435076862450503e-4, name: "lang_korean", size: 3466, typeId: "object" }, { id: "R-Fkzl2BW0o9Hios70WwI", lastModifiedAt: 17435076862450947e-4, name: "lang_russian", size: 1873, typeId: "object" }, { id: "KiKbYoPDMht0f9ElSfTYZ", lastModifiedAt: 1743507686245141e-3, name: "lang_turkish", size: 2678, typeId: "object" }, { id: "a_RPqwZdZ5DmZOCDUVeiZ", lastModifiedAt: 17435076862451846e-4, name: "shiftjis", size: 2816, typeId: "object" }, { id: "rXd90uYo_IZSqu9U_3Sr6", lastModifiedAt: 1743507686245242e-3, name: "utf16be", size: 1334, typeId: "object" }, { id: "83XbTcV0_WKdvcPEKeuDy", lastModifiedAt: 17435076862452773e-4, name: "utf16le", size: 1334, typeId: "object" }, { id: "Upq9-WDaQTs--Ogg1Qtev", lastModifiedAt: 17435076862453193e-4, name: "utf32be", size: 2664, typeId: "object" }, { id: "mm0RGQoiYeYc7ORPPI2S8", lastModifiedAt: 17435076862453613e-4, name: "utf32le", size: 2664, typeId: "object" }, { id: "J9FIyiit-zK4HquqAwGNE", lastModifiedAt: 17435076862454148e-4, name: "utf8", size: 1125, typeId: "object" }, { id: "pZQOaI1tOrcy2Km0Z7Enb", lastModifiedAt: 17435076862454595e-4, name: "windows_1250", size: 1617, typeId: "object" }, { id: "da-PPmwaWqLyqUz6SRw1v", lastModifiedAt: 1743507686245507e-3, name: "windows_1251", size: 1024, typeId: "object" }, { id: "aw_8vVm1CvdxaiiI3CX-L", lastModifiedAt: 17435076862456494e-4, name: "windows_1252", size: 2976, typeId: "object" }, { id: "-JYzWLdhtRIWC0vwZFj0I", lastModifiedAt: 17435076862456982e-4, name: "windows_1253", size: 1052, typeId: "object" }, { id: "ImvMAQPnb13Mf7mqB7t6m", lastModifiedAt: 17435076862458247e-4, name: "windows_1254", size: 2445, typeId: "object" }, { id: "mYnEtUyasG7Cub5f7WgsT", lastModifiedAt: 17435076862458765e-4, name: "windows_1255", size: 2405, typeId: "object" }, { id: "clQEg9g9e9QiBJcsOcKcs", lastModifiedAt: 17435076862459272e-4, name: "windows_1256", size: 2241, typeId: "object" }]
123
- }, $ = "0.2.352";
124
- let u;
125
- async function ee(t, e) {
126
- const { add_my_numbers: i } = await h();
123
+ }, X = "0.2.353";
124
+ let z;
125
+ async function Y(t, e) {
126
+ const { add_my_numbers: i } = await v();
127
127
  console.log(1111, t, e);
128
128
  const d = i(Math.trunc(t), Math.trunc(e));
129
129
  return console.log(2222, d), d;
130
130
  }
131
- async function te(t) {
132
- const { checksum_from_rust: e } = await h();
131
+ async function W(t) {
132
+ const { checksum_from_rust: e } = await v();
133
133
  return e(t);
134
134
  }
135
- async function h() {
136
- return u ??= import("./datapos_connector_file_store_emulator_core-CBVDrOML.js"), u;
135
+ async function v() {
136
+ return z ??= import("./datapos_connector_file_store_emulator_core-CBVDrOML.js"), z;
137
137
  }
138
- const ie = "Connector failed to abort preview object operation.", de = "Connector failed to abort retrieve all records operation.", oe = 4096, se = 1e3, I = "https://sample-data-eu.datapos.app";
139
- class ae {
138
+ const $ = "Connector failed to abort preview object operation.", ee = "Connector failed to abort retrieve all records operation.", te = 4096, ie = 1e3, I = "https://sample-data-eu.datapos.app";
139
+ class de {
140
140
  abortController;
141
141
  config;
142
142
  connectionConfig;
143
143
  toolConfigs;
144
144
  constructor(e, i) {
145
- this.abortController = void 0, this.config = W, this.config.version = $, this.connectionConfig = e, this.toolConfigs = i;
145
+ this.abortController = void 0, this.config = J, this.config.version = X, this.connectionConfig = e, this.toolConfigs = i;
146
146
  }
147
147
  /** Abort the currently running operation. */
148
148
  abortOperation(e) {
@@ -150,10 +150,10 @@ class ae {
150
150
  }
151
151
  /** Find the folder path containing the specified object node. */
152
152
  findObjectFolderPath(e, i) {
153
- const d = v;
154
- for (const s in d)
155
- if (Object.hasOwn(d, s) && d[s]?.find((n) => n.typeId === "object" && n.id === i.nodeId))
156
- return Promise.resolve(s);
153
+ const d = M;
154
+ for (const o in d)
155
+ if (Object.hasOwn(d, o) && d[o]?.find((c) => c.typeId === "object" && c.id === i.nodeId))
156
+ return Promise.resolve(o);
157
157
  return Promise.resolve(null);
158
158
  }
159
159
  /** Get a readable stream for the specified object node path. */
@@ -161,18 +161,18 @@ class ae {
161
161
  try {
162
162
  const d = await fetch(`${I}/fileStore${i.path}`);
163
163
  if (d.body == null) throw new Error("Readable streams not supported by this browser.");
164
- const s = await ee(12, 56), o = await te(e.config.version);
165
- return console.log("sum", o, s), await Promise.resolve(d.body);
164
+ const o = await Y(12, 56), s = await W(e.config.version);
165
+ return console.log("sum", s, o), await Promise.resolve(d.body);
166
166
  } catch (d) {
167
167
  throw e.abortController = void 0, d;
168
168
  }
169
169
  }
170
170
  /** Lists all nodes (folders and objects) in the specified folder path. */
171
171
  listNodes(e, i) {
172
- const s = v[i.folderPath] ?? [], o = [];
173
- for (const a of s)
174
- a.typeId === "folder" ? o.push(this.constructFolderNodeConfig(i.folderPath, a.name, a.childCount)) : o.push(this.constructObjectNodeConfig(i.folderPath, a.id, a.name, a.lastModifiedAt, a.size));
175
- return Promise.resolve({ cursor: void 0, isMore: !1, connectionNodeConfigs: o, totalCount: o.length });
172
+ const o = M[i.folderPath] ?? [], s = [];
173
+ for (const a of o)
174
+ a.typeId === "folder" ? s.push(this.constructFolderNodeConfig(i.folderPath, a.name, a.childCount)) : s.push(this.constructObjectNodeConfig(i.folderPath, a.id, a.name, a.lastModifiedAt, a.size));
175
+ return Promise.resolve({ cursor: void 0, isMore: !1, connectionNodeConfigs: s, totalCount: s.length });
176
176
  }
177
177
  /** Preview the contents of the object node with the specified path. */
178
178
  async previewObject(e, i) {
@@ -180,99 +180,93 @@ class ae {
180
180
  e.abortController = new AbortController();
181
181
  const d = e.abortController.signal;
182
182
  d.addEventListener("abort", () => {
183
- throw new z(ie, "datapos-connector-file-store-emulator|Connector|preview.abort");
183
+ throw new A($, "datapos-connector-file-store-emulator|Connector|preview.abort");
184
184
  });
185
- const s = { Range: `bytes=0-${i.chunkSize ?? oe}` }, o = await fetch(encodeURI(`${I}/fileStore${i.path}`), { headers: s, signal: d });
186
- if (o.ok)
187
- return e.abortController = void 0, { data: new Uint8Array(await o.arrayBuffer()), typeId: "uint8Array" };
188
- throw await j(o, `Failed to fetch '${i.path}' file.`, "datapos-connector-file-store-emulator|Connector|preview");
185
+ const o = { Range: `bytes=0-${i.chunkSize ?? te}` }, s = await fetch(encodeURI(`${I}/fileStore${i.path}`), { headers: o, signal: d });
186
+ if (s.ok)
187
+ return e.abortController = void 0, { data: new Uint8Array(await s.arrayBuffer()), typeId: "uint8Array" };
188
+ throw await y(s, `Failed to fetch '${i.path}' file.`, "datapos-connector-file-store-emulator|Connector|preview");
189
189
  } catch (d) {
190
190
  throw e.abortController = void 0, d;
191
191
  }
192
192
  }
193
193
  createRowBuffer(e, i) {
194
194
  let d = [];
195
- const s = () => {
195
+ const o = () => {
196
196
  d.length !== 0 && (e(d), d = []);
197
197
  };
198
- return { flush: s, push: (a) => {
199
- d.push(a), d.length >= i && s();
198
+ return { flush: o, push: (a) => {
199
+ d.push(a), d.length >= i && o();
200
200
  } };
201
201
  }
202
- handleReadable(e, i, d, s) {
202
+ handleReadable(e, i, d, o) {
203
203
  try {
204
- let o;
205
- for (; (o = e.read()) !== null; )
206
- i.throwIfAborted(), d.push(o);
207
- } catch (o) {
208
- s(o);
204
+ let s;
205
+ for (; (s = e.read()) !== null; )
206
+ i.throwIfAborted(), d.push(s);
207
+ } catch (s) {
208
+ o(s);
209
209
  }
210
210
  }
211
211
  /** Retrieves all records from a CSV object node using streaming and chunked processing. */
212
- async retrieveRecords(e, i, d, s) {
213
- const o = await E(e.toolConfigs, "csv-parse");
214
- return new Promise((a, n) => {
215
- const f = (l) => {
216
- e.abortController = void 0, n(p(l));
212
+ async retrieveRecords(e, i, d, o) {
213
+ const s = await h(e.toolConfigs, "csv-parse");
214
+ return new Promise((a, c) => {
215
+ let p = !1;
216
+ const r = (l) => {
217
+ p || (p = !0, e.abortController = void 0, c(b(l)));
217
218
  };
218
219
  try {
219
220
  e.abortController = new AbortController();
220
221
  const l = e.abortController.signal;
221
- l.addEventListener("abort", () => f(new z(de, "retrieveRecords.abort")), { once: !0 });
222
- const y = this.createRowBuffer(d, se), c = o.buildParser({ delimiter: i.valueDelimiterId, info: !0, relax_column_count: !0, relax_quotes: !0 });
223
- c.on("readable", () => this.handleReadable(c, l, y, f)), c.on("error", (r) => f(r)), c.on("end", () => {
222
+ l.addEventListener("abort", () => r(new A(ee, "retrieveRecords.abort")), { once: !0 });
223
+ const f = this.createRowBuffer(d, ie), n = s.buildParser({ delimiter: i.valueDelimiterId, info: !0, relax_column_count: !0, relax_quotes: !0 });
224
+ n.on("readable", () => this.handleReadable(n, l, f, r)), n.on("error", (m) => r(m)), n.on("end", () => {
224
225
  try {
225
- l.throwIfAborted(), e.abortController = void 0, y.flush(), s({
226
- byteCount: c.info.bytes,
227
- commentLineCount: c.info.comment_lines,
228
- emptyLineCount: c.info.empty_lines,
229
- invalidFieldLengthCount: c.info.invalid_field_length,
230
- lineCount: c.info.lines,
231
- recordCount: c.info.records
226
+ l.throwIfAborted(), f.flush(), e.abortController = void 0, p = !0, o({
227
+ byteCount: n.info.bytes,
228
+ commentLineCount: n.info.comment_lines,
229
+ emptyLineCount: n.info.empty_lines,
230
+ invalidFieldLengthCount: n.info.invalid_field_length,
231
+ lineCount: n.info.lines,
232
+ recordCount: n.info.records
232
233
  }), a();
233
- } catch (r) {
234
- e.abortController = void 0, n(p(r));
235
- }
236
- }), fetch(encodeURI(`${I}/fileStore${i.path}`), { signal: l }).then(async (r) => {
237
- try {
238
- if (r.ok && r.body) {
239
- const A = r.body.pipeThrough(new TextDecoderStream(i.encodingId)).getReader();
240
- let b = await A.read();
241
- for (; !b.done; )
242
- l.throwIfAborted(), c.write(b.value, (M) => {
243
- M && (e.abortController = void 0, n(p(M)));
244
- }), b = await A.read();
245
- c.end();
246
- } else {
247
- const m = await j(
248
- r,
249
- `Failed to fetch '${i.path}' file.`,
250
- "datapos-connector-file-store-emulator|Connector|retrieve"
251
- );
252
- e.abortController = void 0, n(m);
253
- }
254
234
  } catch (m) {
255
- e.abortController = void 0, n(p(m));
235
+ e.abortController = void 0, c(b(m));
256
236
  }
257
- }).catch((r) => {
258
- e.abortController = void 0, n(p(r));
259
- });
237
+ }), this.streamIntoParser(`${I}/fileStore${i.path}`, i.path, i.encodingId, l, n).catch(r);
260
238
  } catch (l) {
261
- e.abortController = void 0, n(p(l));
239
+ r(l);
262
240
  }
263
241
  });
264
242
  }
243
+ async streamIntoParser(e, i, d, o, s) {
244
+ const a = await fetch(encodeURI(e), { signal: o });
245
+ if (!a.ok || !a.body)
246
+ throw await y(a, `Failed to fetch '${i}' file.`, "datapos-connector-file-store-emulator|Connector|retrieve");
247
+ const c = a.body.pipeThrough(new TextDecoderStream(d)).getReader();
248
+ for (; ; ) {
249
+ const { value: p, done: r } = await c.read();
250
+ if (r) break;
251
+ o.throwIfAborted(), await new Promise((l, f) => {
252
+ s.write(p, (n) => {
253
+ n ? f(n) : l();
254
+ });
255
+ });
256
+ }
257
+ s.end();
258
+ }
265
259
  /** Construct folder node configuration. */
266
260
  constructFolderNodeConfig(e, i, d) {
267
- return { id: g(), childCount: d, extension: void 0, folderPath: e, label: i, name: i, typeId: "folder" };
261
+ return { id: C(), childCount: d, extension: void 0, folderPath: e, label: i, name: i, typeId: "folder" };
268
262
  }
269
263
  /** Construct object (file) node configuration. */
270
- constructObjectNodeConfig(e, i, d, s, o) {
271
- const a = S(d) ?? "", n = T(d), f = s, l = k(n);
272
- return { id: i, extension: n, folderPath: e, label: d, lastModifiedAt: f, mimeType: l, name: a, size: o, typeId: "object" };
264
+ constructObjectNodeConfig(e, i, d, o, s) {
265
+ const a = R(d) ?? "", c = P(d), p = o, r = _(c);
266
+ return { id: i, extension: c, folderPath: e, label: d, lastModifiedAt: p, mimeType: r, name: a, size: s, typeId: "object" };
273
267
  }
274
268
  }
275
269
  export {
276
- ae as default
270
+ de as default
277
271
  };
278
272
  //# sourceMappingURL=datapos-connector-file-store-emulator.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"datapos-connector-file-store-emulator.es.js","sources":["../node_modules/nanoid/url-alphabet/index.js","../node_modules/nanoid/index.browser.js","../node_modules/@datapos/datapos-shared/dist/datapos-shared-tools.es.js","../node_modules/@datapos/datapos-shared/dist/datapos-shared-errors.es.js","../node_modules/@datapos/datapos-shared/dist/datapos-shared-utilities.es.js","../src/rustBridge.ts","../src/index.ts"],"sourcesContent":["export const 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 mask = (2 << Math.log2(alphabet.length - 1)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step | 0\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length >= size) return id\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","async function c(e, o) {\n const n = `datapos-tool-${o}`, t = e.find((s) => s.id === n);\n if (!t) throw new Error(`Connector could not load unknown tool '${o}'.`);\n const l = await import(`https://engine-eu.datapos.app/tools/${o}_v${t.version}/${n}.es.js`);\n return new l.Tool();\n}\nexport {\n c as loadTool\n};\n","class i extends Error {\n locator;\n /** Logical source of the error. */\n constructor(o, t, r) {\n super(o, r), this.name = new.target.name, this.locator = t;\n }\n}\nclass a extends i {\n}\nclass g extends a {\n}\nclass p extends a {\n}\nclass c extends a {\n body;\n /** Sanitized HTTP response body. */\n constructor(o, t, r, n) {\n super(o, t, n), this.name = new.target.name, this.body = E(r ?? void 0);\n }\n}\nclass y extends i {\n}\nclass m extends a {\n componentName;\n /** Vue component name, if available. */\n info;\n /** Vue error info string. */\n constructor(o, t, r, n, s) {\n super(o, t, s), this.name = new.target.name, this.info = r, this.componentName = n;\n }\n}\nclass w extends a {\n}\nclass b extends a {\n}\nasync function h(e, o, t) {\n const r = ` - ${e.statusText}`, n = `${o} Response status '${e.status}${e.statusText ? r : \"\"}' received.`;\n let s;\n try {\n s = await e.text();\n } catch (d) {\n s = `<body unavailable: ${l(d).message}>`;\n }\n return new c(n, t, s);\n}\nfunction k(e) {\n return e.map((o) => o.message).join(\" \");\n}\nfunction l(e) {\n if (e instanceof Error) return e;\n if (typeof e == \"string\") return new Error(e);\n if (typeof e == \"number\" || typeof e == \"boolean\" || typeof e == \"bigint\") return new Error(String(e));\n if (typeof e == \"symbol\") return new Error(e.description ?? \"Unknown error\");\n if (e != null && typeof e == \"object\")\n try {\n return new Error(JSON.stringify(e));\n } catch {\n return new Error(\"Unknown error\");\n }\n return new Error(\"Unknown error\");\n}\nfunction x(e) {\n const o = /* @__PURE__ */ new Set(), t = [];\n let r = e;\n for (; r != null && !o.has(r); ) {\n o.add(r);\n let n;\n if (r instanceof c)\n n = { componentName: void 0, body: r.body, info: void 0, locator: r.locator, message: r.message, name: r.name, stack: r.stack }, r = r.cause;\n else if (r instanceof m)\n n = {\n componentName: r.componentName,\n body: void 0,\n info: r.info,\n locator: r.locator,\n message: r.message,\n name: r.name,\n stack: r.stack\n }, r = r.cause;\n else if (r instanceof i)\n n = { componentName: void 0, body: void 0, info: void 0, locator: r.locator, message: r.message, name: r.name, stack: r.stack }, r = r.cause;\n else if (r instanceof Error) {\n const s = r;\n n = { componentName: void 0, body: void 0, info: void 0, locator: \"\", message: s.message, name: s.name, stack: s.stack }, r = s.cause;\n } else\n n = { componentName: void 0, body: void 0, info: void 0, locator: \"\", message: f(r), name: \"Error\", stack: void 0 }, r = void 0;\n /(?:\\.{3}|[.!?])$/.test(n.message) || (n.message += \".\"), t.push(n);\n }\n return t;\n}\nfunction f(e) {\n let o;\n try {\n o = JSON.stringify(e);\n } catch {\n typeof e == \"symbol\" ? o = e.description ?? \"Unknown error\" : typeof e == \"bigint\" ? o = e.toString() : o = \"Unknown error\";\n }\n return o === \"\" && (o = \"Unknown error\"), o;\n}\nfunction E(e) {\n if (!(e == null || e === \"\"))\n return e.length > 2048 ? `${e.slice(0, 2048)}... [truncated]` : e;\n}\nexport {\n g as APIError,\n a as ApplicationError,\n p as EngineError,\n c as FetchError,\n y as OperationalError,\n m as VueHandledError,\n b as WindowHandledPromiseRejectionError,\n w as WindowHandledRuntimeError,\n h as buildFetchError,\n k as concatenateSerialisedErrorMessages,\n l as normalizeToError,\n x as serialiseError\n};\n","const c = \"en-US\", s = /* @__PURE__ */ new Map();\nfunction f(e) {\n switch (e) {\n case \"Edm.Binary\":\n return \"unknown\";\n // Binary...\n case \"Edm.Boolean\":\n return \"boolean\";\n case \"Edm.Byte\":\n return \"wholeNumber\";\n case \"Edm.DateTime\":\n return \"moment\";\n // DateTime...\n case \"Edm.DateTimeOffset\":\n return \"moment\";\n // DateTimeOffset...\n case \"Edm.Decimal\":\n return \"decimalNumber\";\n case \"Edm.Double\":\n return \"decimalNumber\";\n case \"Edm.Guid\":\n return \"string\";\n case \"Edm.Int16\":\n return \"wholeNumber\";\n case \"Edm.Int32\":\n return \"wholeNumber\";\n case \"Edm.Int64\":\n return \"wholeNumber\";\n case \"Edm.SByte\":\n return \"wholeNumber\";\n case \"Edm.Single\":\n return \"decimalNumber\";\n case \"Edm.String\":\n return \"string\";\n case \"Edm.Time\":\n return \"momentTime\";\n // Time...\n default:\n return \"unknown\";\n }\n}\nfunction l(e) {\n if (e) {\n const t = e.lastIndexOf(\"/\"), n = e.lastIndexOf(\".\", t === -1 ? e.length : t);\n return n === -1 ? e : e.slice(0, Math.max(0, n));\n }\n}\nfunction m(e) {\n if (e) {\n const t = e.lastIndexOf(\".\");\n if (t !== -1) return e.slice(Math.max(0, t + 1));\n }\n}\nfunction r(e, t = 2, n = t, i = c) {\n if (e == null) return \"\";\n const u = `${i}decimal${t}.${n}`;\n let a = s.get(u);\n return a || (a = new Intl.NumberFormat(i, {\n localeMatcher: \"best fit\",\n maximumFractionDigits: t,\n minimumFractionDigits: n,\n minimumIntegerDigits: 1,\n style: \"decimal\",\n useGrouping: !0\n }), s.set(u, a)), a.format(e);\n}\nfunction d(e) {\n return e == null ? \"\" : e < 1e3 ? o(e) : e < 1e6 ? `${r(e / 1e3, 2, 0)}K` : e < 1e9 ? `${r(e / 1e6, 2, 0)}M` : e < 1e12 ? `${r(e / 1e9, 2, 0)}B` : `${r(e / 1e12, 2, 0)}T`;\n}\nfunction x(e) {\n return e == null ? \"\" : e === 1 ? \"1 byte\" : e < 1024 ? `${o(e)} bytes` : e < 1048576 ? `${r(e / 1024, 2, 0)} KB` : e < 1073741824 ? `${r(e / 1048576, 2, 0)} MB` : e < 1099511627776 ? `${r(e / 1073741824, 2, 0)} GB` : `${r(e / 1099511627776, 2, 0)} TB`;\n}\nfunction p(e) {\n return e == null ? \"\" : e < 1e3 ? `${o(e)} ms` : e === 1e3 ? `${o(e)} sec` : e < 6e4 ? `${r(e / 1e3, 2, 0)} secs` : e === 6e4 ? \"1 min\" : e < 36e5 ? `${r(e / 6e4, 2, 0)} mins` : e === 36e5 ? \"1 hr\" : e < 864e5 ? `${r(e / 36e5, 2, 0)} hrs` : e === 864e5 ? \"1 day\" : `${r(e / 864e5, 2, 0)} days`;\n}\nfunction o(e, t = c) {\n if (e == null) return \"\";\n const n = `${t}decimal0.0`;\n let i = s.get(n);\n return i || (i = new Intl.NumberFormat(t, {\n localeMatcher: \"best fit\",\n maximumFractionDigits: 0,\n minimumFractionDigits: 0,\n minimumIntegerDigits: 1,\n style: \"decimal\",\n useGrouping: !0\n }), s.set(n, i)), i.format(e);\n}\nfunction E(e) {\n switch (e) {\n case \"csv\":\n return \"text/csv\";\n case \"tab\":\n case \"tsv\":\n return \"text/tab-separated-values\";\n case \"xls\":\n return \"application/vnd.ms-excel\";\n case \"xlsx\":\n return \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\n default:\n return \"application/octet-stream\";\n }\n}\nexport {\n f as convertODataTypeIdToUsageTypeId,\n m as extractExtensionFromPath,\n l as extractNameFromPath,\n r as formatNumberAsDecimalNumber,\n p as formatNumberAsDuration,\n d as formatNumberAsSize,\n x as formatNumberAsStorageSize,\n o as formatNumberAsWholeNumber,\n E as lookupMimeTypeForExtension\n};\n","// Dependencies - Framework\nimport type * as RustModule from '../rust/datapos-connector-file-store-emulator-core/pkg/datapos_connector_file_store_emulator_core.js';\n\n// Interfaces/Types\ntype RustBindings = typeof RustModule;\n\n// Module Variables\nlet rustBindingsPromise: Promise<RustBindings> | undefined;\n\n// Utilities\nasync function addNumbersWithRust(left: number, right: number): Promise<number> {\n const { add_my_numbers } = await loadRustBindings();\n console.log(1111, left, right);\n const yyyy = add_my_numbers(Math.trunc(left), Math.trunc(right));\n console.log(2222, yyyy);\n return yyyy;\n}\n\n// Utilities\nasync function checksumWithRust(input: string): Promise<number> {\n const { checksum_from_rust } = await loadRustBindings();\n return checksum_from_rust(input);\n}\n\n// Helpers\nasync function loadRustBindings(): Promise<RustBindings> {\n rustBindingsPromise ??= import('../rust/datapos-connector-file-store-emulator-core/pkg/datapos_connector_file_store_emulator_core.js');\n return rustBindingsPromise;\n}\n\n// Exposures\nexport { addNumbersWithRust, checksumWithRust };\n","/**\n * File store emulator connector class.\n *\n * TODO: Consider Cloudflare R2 Download URL: https://plugins-eu.datapositioning.app/connectors/datapos-connector-file-store-emulator-es.js.\n * This would allow us to secure the bucket?\n */\n\n/** Dependencies - Vendor. */\nimport { nanoid } from 'nanoid';\n\n/** Dependencies - Framework. */\nimport type { Tool as CSVParseTool, Parser } from '@datapos/datapos-tool-csv-parse';\nimport { loadTool } from '@datapos/datapos-shared/component/tool';\nimport type { ToolConfig } from '@datapos/datapos-shared/component/tool';\nimport { buildFetchError, normalizeToError, OperationalError } from '@datapos/datapos-shared/errors';\nimport type {\n ConnectionConfig,\n ConnectionNodeConfig,\n ConnectorConfig,\n ConnectorInterface,\n FindObjectFolderPathSettings,\n GetReadableStreamSettings,\n ListNodesResult,\n ListNodesSettings,\n PreviewObjectResult,\n PreviewObjectSettings,\n RetrieveRecordsSettings,\n RetrieveRecordsSummary\n} from '@datapos/datapos-shared/component/connector';\nimport { extractExtensionFromPath, extractNameFromPath, lookupMimeTypeForExtension } from '@datapos/datapos-shared/utilities';\n\n/** Data dependencies. */\nimport config from '~/config.json';\nimport fileStoreFolderPathData from '@/fileStoreFolderPaths.json';\nimport { version } from '~/package.json';\nimport { addNumbersWithRust, checksumWithRust } from '@/rustBridge';\n\n/** File store folder paths. */\ntype FileStoreFolderNode =\n | ({ typeId: 'folder'; childCount: number } & { name: string })\n | ({ typeId: 'object'; id: string; lastModifiedAt: number; size: number } & { name: string });\ntype FileStoreFolderPaths = Record<string, FileStoreFolderNode[]>;\n\n/** Constants */\nconst CALLBACK_PREVIEW_ABORTED = 'Connector failed to abort preview object operation.';\nconst CALLBACK_RETRIEVE_ABORTED = 'Connector failed to abort retrieve all records operation.';\nconst DEFAULT_PREVIEW_CHUNK_SIZE = 4096;\nconst DEFAULT_RETRIEVE_CHUNK_SIZE = 1000;\nconst URL_PREFIX = 'https://sample-data-eu.datapos.app';\n\ninterface RowBuffer {\n push: (row: string[]) => void;\n flush: () => void;\n}\n\n/** File store emulator connector. */\nexport default class FileStoreEmulatorConnector implements ConnectorInterface {\n abortController: AbortController | undefined;\n readonly config: ConnectorConfig;\n readonly connectionConfig: ConnectionConfig;\n readonly toolConfigs;\n\n constructor(connectionConfig: ConnectionConfig, toolConfigs: ToolConfig[]) {\n this.abortController = undefined;\n this.config = config as ConnectorConfig;\n this.config.version = version;\n this.connectionConfig = connectionConfig;\n this.toolConfigs = toolConfigs;\n }\n\n /** Abort the currently running operation. */\n abortOperation(connector: ConnectorInterface): void {\n if (!connector.abortController) return;\n connector.abortController.abort();\n connector.abortController = undefined;\n }\n\n /** Find the folder path containing the specified object node. */\n findObjectFolderPath(connector: ConnectorInterface, settings: FindObjectFolderPathSettings): Promise<string | null> {\n const fileStoreFolderPaths = fileStoreFolderPathData as FileStoreFolderPaths;\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 // eslint-disable-next-line security/detect-object-injection\n const folderPathNodes = fileStoreFolderPaths[folderPath];\n const folderPathNode = folderPathNodes?.find((folderPathNode) => folderPathNode.typeId === 'object' && folderPathNode.id === settings.nodeId);\n if (folderPathNode) return Promise.resolve(folderPath); // Found, return folder path.\n }\n }\n return Promise.resolve(null); // Not found.\n }\n\n /** Get a readable stream for the specified object node path. */\n async getReadableStream(connector: ConnectorInterface, settings: GetReadableStreamSettings): Promise<ReadableStream<Uint8Array<ArrayBuffer>>> {\n try {\n const response = await fetch(`${URL_PREFIX}/fileStore${settings.path}`);\n if (response.body == null) throw new Error('Readable streams not supported by this browser.');\n\n // TODO: Remove after testing.\n const xxx = await addNumbersWithRust(12, 56);\n const sum = await checksumWithRust(connector.config.version);\n console.log('sum', sum, xxx);\n\n return await Promise.resolve(response.body);\n } catch (error) {\n connector.abortController = undefined;\n throw error;\n }\n }\n\n /** Lists all nodes (folders and objects) in the specified folder path. */\n listNodes(connector: ConnectorInterface, settings: ListNodesSettings): Promise<ListNodesResult> {\n const fileStoreFolderPaths = fileStoreFolderPathData as FileStoreFolderPaths;\n const folderNodes = fileStoreFolderPaths[settings.folderPath] ?? [];\n const connectionNodeConfigs: ConnectionNodeConfig[] = [];\n for (const folderNode of folderNodes) {\n if (folderNode.typeId === 'folder') {\n connectionNodeConfigs.push(this.constructFolderNodeConfig(settings.folderPath, folderNode.name, folderNode.childCount));\n } else {\n connectionNodeConfigs.push(this.constructObjectNodeConfig(settings.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(connector: ConnectorInterface, settings: PreviewObjectSettings): Promise<PreviewObjectResult> {\n try {\n // Create an abort controller. Get the signal for the abort controller and add an abort listener.\n connector.abortController = new AbortController();\n const signal = connector.abortController.signal;\n signal.addEventListener('abort', () => {\n throw new OperationalError(CALLBACK_PREVIEW_ABORTED, 'datapos-connector-file-store-emulator|Connector|preview.abort');\n });\n\n // Fetch chunk from start of file.\n const headers: HeadersInit = { Range: `bytes=0-${settings.chunkSize ?? DEFAULT_PREVIEW_CHUNK_SIZE}` };\n const response = await fetch(encodeURI(`${URL_PREFIX}/fileStore${settings.path}`), { headers, signal });\n if (response.ok) {\n connector.abortController = undefined;\n return { data: new Uint8Array(await response.arrayBuffer()), typeId: 'uint8Array' };\n } else {\n throw await buildFetchError(response, `Failed to fetch '${settings.path}' file.`, 'datapos-connector-file-store-emulator|Connector|preview');\n }\n } catch (error) {\n connector.abortController = undefined;\n throw error;\n }\n }\n\n private createRowBuffer(chunk: (records: string[][]) => void, size: number): RowBuffer {\n let pendingRows: string[][] = [];\n const flush = (): void => {\n if (pendingRows.length === 0) return;\n chunk(pendingRows);\n pendingRows = [];\n };\n const push = (row: string[]): void => {\n pendingRows.push(row);\n if (pendingRows.length >= size) flush();\n };\n return { flush, push };\n }\n\n private handleReadable(parser: Parser, signal: AbortSignal, buffer: RowBuffer, fail: (error: unknown) => void): void {\n try {\n let data: string[] | null;\n while ((data = parser.read() as string[] | null) !== null) {\n signal.throwIfAborted();\n buffer.push(data);\n }\n } catch (error) {\n fail(error);\n }\n }\n\n /** Retrieves all records from a CSV object node using streaming and chunked processing. */\n async retrieveRecords(\n connector: ConnectorInterface,\n settings: RetrieveRecordsSettings,\n chunk: (records: string[][]) => void,\n complete: (result: RetrieveRecordsSummary) => void\n ): Promise<void> {\n const csvParseTool = await loadTool<CSVParseTool>(connector.toolConfigs, 'csv-parse');\n return new Promise((resolve, reject) => {\n const fail = (error: unknown): void => {\n connector.abortController = undefined;\n reject(normalizeToError(error));\n };\n\n try {\n // Create an abort controller and get the signal. Add an abort listener to the signal.\n connector.abortController = new AbortController();\n const signal = connector.abortController.signal;\n signal.addEventListener('abort', () => fail(new OperationalError(CALLBACK_RETRIEVE_ABORTED, 'retrieveRecords.abort')), { once: true });\n\n // Parser - Declare variables.\n // let pendingRows: string[][] = []; // Array to store rows of parsed field values and associated information.\n\n // Parser - Create a parser object for CSV parsing.\n const buffer = this.createRowBuffer(chunk, DEFAULT_RETRIEVE_CHUNK_SIZE);\n const parser = csvParseTool.buildParser({ delimiter: settings.valueDelimiterId, info: true, relax_column_count: true, relax_quotes: true });\n parser.on('readable', () => this.handleReadable(parser, signal, buffer, fail));\n parser.on('error', (error) => fail(error));\n parser.on('end', () => {\n try {\n signal.throwIfAborted(); // Check if the abort signal has been triggered.\n connector.abortController = undefined; // Clear the abort controller.\n buffer.flush();\n // if (pendingRows.length > 0) {\n // chunk(pendingRows);\n // pendingRows = [];\n // }\n complete({\n byteCount: parser.info.bytes,\n commentLineCount: parser.info.comment_lines,\n emptyLineCount: parser.info.empty_lines,\n invalidFieldLengthCount: parser.info.invalid_field_length,\n lineCount: parser.info.lines,\n recordCount: parser.info.records\n });\n resolve();\n } catch (error) {\n connector.abortController = undefined;\n reject(normalizeToError(error));\n }\n });\n\n // Fetch, decode and forward the contents of the file to the parser.\n fetch(encodeURI(`${URL_PREFIX}/fileStore${settings.path}`), { signal })\n .then(async (response) => {\n try {\n if (response.ok && response.body) {\n const stream = response.body.pipeThrough(new TextDecoderStream(settings.encodingId));\n const decodedStreamReader = stream.getReader();\n let result = await decodedStreamReader.read();\n while (!result.done) {\n signal.throwIfAborted(); // Check if the abort signal has been triggered.\n // Write the decoded data to the parser and terminate if there is an error.\n parser.write(result.value, (error) => {\n if (error) {\n connector.abortController = undefined;\n reject(normalizeToError(error));\n }\n });\n result = await decodedStreamReader.read();\n }\n parser.end(); // Signal no more data will be written.\n } else {\n const error = await buildFetchError(\n response,\n `Failed to fetch '${settings.path}' file.`,\n 'datapos-connector-file-store-emulator|Connector|retrieve'\n );\n connector.abortController = undefined;\n reject(error);\n }\n } catch (error) {\n connector.abortController = undefined;\n reject(normalizeToError(error));\n }\n })\n .catch((error: unknown) => {\n connector.abortController = undefined;\n reject(normalizeToError(error));\n });\n } catch (error) {\n connector.abortController = undefined;\n reject(normalizeToError(error));\n }\n });\n }\n\n /** Construct folder node configuration. */\n private constructFolderNodeConfig(folderPath: string, name: string, childCount: number): ConnectionNodeConfig {\n return { id: nanoid(), childCount, extension: undefined, folderPath, label: name, name, typeId: 'folder' };\n }\n\n /** Construct object (file) node configuration. */\n private 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 { id, extension, folderPath, label: fullName, lastModifiedAt: lastModifiedAtTimestamp, mimeType, name, size, typeId: 'object' };\n }\n}\n"],"names":["urlAlphabet","nanoid","size","id","bytes","scopedUrlAlphabet","c","e","o","n","t","s","l","i","r","a","E","y","h","d","m","rustBindingsPromise","addNumbersWithRust","left","right","add_my_numbers","loadRustBindings","yyyy","checksumWithRust","input","checksum_from_rust","CALLBACK_PREVIEW_ABORTED","CALLBACK_RETRIEVE_ABORTED","DEFAULT_PREVIEW_CHUNK_SIZE","DEFAULT_RETRIEVE_CHUNK_SIZE","URL_PREFIX","FileStoreEmulatorConnector","connectionConfig","toolConfigs","config","version","connector","settings","fileStoreFolderPaths","fileStoreFolderPathData","folderPath","folderPathNode","response","xxx","sum","error","folderNodes","connectionNodeConfigs","folderNode","signal","OperationalError","headers","buildFetchError","chunk","pendingRows","flush","row","parser","buffer","fail","data","complete","csvParseTool","loadTool","resolve","reject","normalizeToError","decodedStreamReader","result","name","childCount","fullName","lastModifiedAt","extractNameFromPath","extension","extractExtensionFromPath","lastModifiedAtTimestamp","mimeType","lookupMimeTypeForExtension"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]}
1
+ {"version":3,"file":"datapos-connector-file-store-emulator.es.js","sources":["../node_modules/nanoid/url-alphabet/index.js","../node_modules/nanoid/index.browser.js","../node_modules/@datapos/datapos-shared/dist/datapos-shared-tools.es.js","../node_modules/@datapos/datapos-shared/dist/datapos-shared-errors.es.js","../node_modules/@datapos/datapos-shared/dist/datapos-shared-utilities.es.js","../src/rustBridge.ts","../src/index.ts"],"sourcesContent":["export const 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 mask = (2 << Math.log2(alphabet.length - 1)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step | 0\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length >= size) return id\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","async function c(e, o) {\n const n = `datapos-tool-${o}`, t = e.find((s) => s.id === n);\n if (!t) throw new Error(`Connector could not load unknown tool '${o}'.`);\n const l = await import(`https://engine-eu.datapos.app/tools/${o}_v${t.version}/${n}.es.js`);\n return new l.Tool();\n}\nexport {\n c as loadTool\n};\n","class i extends Error {\n locator;\n /** Logical source of the error. */\n constructor(o, t, r) {\n super(o, r), this.name = new.target.name, this.locator = t;\n }\n}\nclass a extends i {\n}\nclass g extends a {\n}\nclass p extends a {\n}\nclass c extends a {\n body;\n /** Sanitized HTTP response body. */\n constructor(o, t, r, n) {\n super(o, t, n), this.name = new.target.name, this.body = E(r ?? void 0);\n }\n}\nclass y extends i {\n}\nclass m extends a {\n componentName;\n /** Vue component name, if available. */\n info;\n /** Vue error info string. */\n constructor(o, t, r, n, s) {\n super(o, t, s), this.name = new.target.name, this.info = r, this.componentName = n;\n }\n}\nclass w extends a {\n}\nclass b extends a {\n}\nasync function h(e, o, t) {\n const r = ` - ${e.statusText}`, n = `${o} Response status '${e.status}${e.statusText ? r : \"\"}' received.`;\n let s;\n try {\n s = await e.text();\n } catch (d) {\n s = `<body unavailable: ${l(d).message}>`;\n }\n return new c(n, t, s);\n}\nfunction k(e) {\n return e.map((o) => o.message).join(\" \");\n}\nfunction l(e) {\n if (e instanceof Error) return e;\n if (typeof e == \"string\") return new Error(e);\n if (typeof e == \"number\" || typeof e == \"boolean\" || typeof e == \"bigint\") return new Error(String(e));\n if (typeof e == \"symbol\") return new Error(e.description ?? \"Unknown error\");\n if (e != null && typeof e == \"object\")\n try {\n return new Error(JSON.stringify(e));\n } catch {\n return new Error(\"Unknown error\");\n }\n return new Error(\"Unknown error\");\n}\nfunction x(e) {\n const o = /* @__PURE__ */ new Set(), t = [];\n let r = e;\n for (; r != null && !o.has(r); ) {\n o.add(r);\n let n;\n if (r instanceof c)\n n = { componentName: void 0, body: r.body, info: void 0, locator: r.locator, message: r.message, name: r.name, stack: r.stack }, r = r.cause;\n else if (r instanceof m)\n n = {\n componentName: r.componentName,\n body: void 0,\n info: r.info,\n locator: r.locator,\n message: r.message,\n name: r.name,\n stack: r.stack\n }, r = r.cause;\n else if (r instanceof i)\n n = { componentName: void 0, body: void 0, info: void 0, locator: r.locator, message: r.message, name: r.name, stack: r.stack }, r = r.cause;\n else if (r instanceof Error) {\n const s = r;\n n = { componentName: void 0, body: void 0, info: void 0, locator: \"\", message: s.message, name: s.name, stack: s.stack }, r = s.cause;\n } else\n n = { componentName: void 0, body: void 0, info: void 0, locator: \"\", message: f(r), name: \"Error\", stack: void 0 }, r = void 0;\n /(?:\\.{3}|[.!?])$/.test(n.message) || (n.message += \".\"), t.push(n);\n }\n return t;\n}\nfunction f(e) {\n let o;\n try {\n o = JSON.stringify(e);\n } catch {\n typeof e == \"symbol\" ? o = e.description ?? \"Unknown error\" : typeof e == \"bigint\" ? o = e.toString() : o = \"Unknown error\";\n }\n return o === \"\" && (o = \"Unknown error\"), o;\n}\nfunction E(e) {\n if (!(e == null || e === \"\"))\n return e.length > 2048 ? `${e.slice(0, 2048)}... [truncated]` : e;\n}\nexport {\n g as APIError,\n a as ApplicationError,\n p as EngineError,\n c as FetchError,\n y as OperationalError,\n m as VueHandledError,\n b as WindowHandledPromiseRejectionError,\n w as WindowHandledRuntimeError,\n h as buildFetchError,\n k as concatenateSerialisedErrorMessages,\n l as normalizeToError,\n x as serialiseError\n};\n","const c = \"en-US\", s = /* @__PURE__ */ new Map();\nfunction f(e) {\n switch (e) {\n case \"Edm.Binary\":\n return \"unknown\";\n // Binary...\n case \"Edm.Boolean\":\n return \"boolean\";\n case \"Edm.Byte\":\n return \"wholeNumber\";\n case \"Edm.DateTime\":\n return \"moment\";\n // DateTime...\n case \"Edm.DateTimeOffset\":\n return \"moment\";\n // DateTimeOffset...\n case \"Edm.Decimal\":\n return \"decimalNumber\";\n case \"Edm.Double\":\n return \"decimalNumber\";\n case \"Edm.Guid\":\n return \"string\";\n case \"Edm.Int16\":\n return \"wholeNumber\";\n case \"Edm.Int32\":\n return \"wholeNumber\";\n case \"Edm.Int64\":\n return \"wholeNumber\";\n case \"Edm.SByte\":\n return \"wholeNumber\";\n case \"Edm.Single\":\n return \"decimalNumber\";\n case \"Edm.String\":\n return \"string\";\n case \"Edm.Time\":\n return \"momentTime\";\n // Time...\n default:\n return \"unknown\";\n }\n}\nfunction l(e) {\n if (e) {\n const t = e.lastIndexOf(\"/\"), n = e.lastIndexOf(\".\", t === -1 ? e.length : t);\n return n === -1 ? e : e.slice(0, Math.max(0, n));\n }\n}\nfunction m(e) {\n if (e) {\n const t = e.lastIndexOf(\".\");\n if (t !== -1) return e.slice(Math.max(0, t + 1));\n }\n}\nfunction r(e, t = 2, n = t, i = c) {\n if (e == null) return \"\";\n const u = `${i}decimal${t}.${n}`;\n let a = s.get(u);\n return a || (a = new Intl.NumberFormat(i, {\n localeMatcher: \"best fit\",\n maximumFractionDigits: t,\n minimumFractionDigits: n,\n minimumIntegerDigits: 1,\n style: \"decimal\",\n useGrouping: !0\n }), s.set(u, a)), a.format(e);\n}\nfunction d(e) {\n return e == null ? \"\" : e < 1e3 ? o(e) : e < 1e6 ? `${r(e / 1e3, 2, 0)}K` : e < 1e9 ? `${r(e / 1e6, 2, 0)}M` : e < 1e12 ? `${r(e / 1e9, 2, 0)}B` : `${r(e / 1e12, 2, 0)}T`;\n}\nfunction x(e) {\n return e == null ? \"\" : e === 1 ? \"1 byte\" : e < 1024 ? `${o(e)} bytes` : e < 1048576 ? `${r(e / 1024, 2, 0)} KB` : e < 1073741824 ? `${r(e / 1048576, 2, 0)} MB` : e < 1099511627776 ? `${r(e / 1073741824, 2, 0)} GB` : `${r(e / 1099511627776, 2, 0)} TB`;\n}\nfunction p(e) {\n return e == null ? \"\" : e < 1e3 ? `${o(e)} ms` : e === 1e3 ? `${o(e)} sec` : e < 6e4 ? `${r(e / 1e3, 2, 0)} secs` : e === 6e4 ? \"1 min\" : e < 36e5 ? `${r(e / 6e4, 2, 0)} mins` : e === 36e5 ? \"1 hr\" : e < 864e5 ? `${r(e / 36e5, 2, 0)} hrs` : e === 864e5 ? \"1 day\" : `${r(e / 864e5, 2, 0)} days`;\n}\nfunction o(e, t = c) {\n if (e == null) return \"\";\n const n = `${t}decimal0.0`;\n let i = s.get(n);\n return i || (i = new Intl.NumberFormat(t, {\n localeMatcher: \"best fit\",\n maximumFractionDigits: 0,\n minimumFractionDigits: 0,\n minimumIntegerDigits: 1,\n style: \"decimal\",\n useGrouping: !0\n }), s.set(n, i)), i.format(e);\n}\nfunction E(e) {\n switch (e) {\n case \"csv\":\n return \"text/csv\";\n case \"tab\":\n case \"tsv\":\n return \"text/tab-separated-values\";\n case \"xls\":\n return \"application/vnd.ms-excel\";\n case \"xlsx\":\n return \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\n default:\n return \"application/octet-stream\";\n }\n}\nexport {\n f as convertODataTypeIdToUsageTypeId,\n m as extractExtensionFromPath,\n l as extractNameFromPath,\n r as formatNumberAsDecimalNumber,\n p as formatNumberAsDuration,\n d as formatNumberAsSize,\n x as formatNumberAsStorageSize,\n o as formatNumberAsWholeNumber,\n E as lookupMimeTypeForExtension\n};\n","// Dependencies - Framework\nimport type * as RustModule from '../rust/datapos-connector-file-store-emulator-core/pkg/datapos_connector_file_store_emulator_core.js';\n\n// Interfaces/Types\ntype RustBindings = typeof RustModule;\n\n// Module Variables\nlet rustBindingsPromise: Promise<RustBindings> | undefined;\n\n// Utilities\nasync function addNumbersWithRust(left: number, right: number): Promise<number> {\n const { add_my_numbers } = await loadRustBindings();\n console.log(1111, left, right);\n const yyyy = add_my_numbers(Math.trunc(left), Math.trunc(right));\n console.log(2222, yyyy);\n return yyyy;\n}\n\n// Utilities\nasync function checksumWithRust(input: string): Promise<number> {\n const { checksum_from_rust } = await loadRustBindings();\n return checksum_from_rust(input);\n}\n\n// Helpers\nasync function loadRustBindings(): Promise<RustBindings> {\n rustBindingsPromise ??= import('../rust/datapos-connector-file-store-emulator-core/pkg/datapos_connector_file_store_emulator_core.js');\n return rustBindingsPromise;\n}\n\n// Exposures\nexport { addNumbersWithRust, checksumWithRust };\n","/**\n * File store emulator connector class.\n *\n * TODO: Consider Cloudflare R2 Download URL: https://plugins-eu.datapositioning.app/connectors/datapos-connector-file-store-emulator-es.js.\n * This would allow us to secure the bucket?\n */\n\n/** Dependencies - Vendor. */\nimport { nanoid } from 'nanoid';\n\n/** Dependencies - Framework. */\nimport type { Tool as CSVParseTool, Parser } from '@datapos/datapos-tool-csv-parse';\nimport { loadTool } from '@datapos/datapos-shared/component/tool';\nimport type { ToolConfig } from '@datapos/datapos-shared/component/tool';\nimport { buildFetchError, normalizeToError, OperationalError } from '@datapos/datapos-shared/errors';\nimport type {\n ConnectionConfig,\n ConnectionNodeConfig,\n ConnectorConfig,\n ConnectorInterface,\n FindObjectFolderPathSettings,\n GetReadableStreamSettings,\n ListNodesResult,\n ListNodesSettings,\n PreviewObjectResult,\n PreviewObjectSettings,\n RetrieveRecordsSettings,\n RetrieveRecordsSummary\n} from '@datapos/datapos-shared/component/connector';\nimport { extractExtensionFromPath, extractNameFromPath, lookupMimeTypeForExtension } from '@datapos/datapos-shared/utilities';\n\n/** Data dependencies. */\nimport config from '~/config.json';\nimport fileStoreFolderPathData from '@/fileStoreFolderPaths.json';\nimport { version } from '~/package.json';\nimport { addNumbersWithRust, checksumWithRust } from '@/rustBridge';\n\n/** File store folder paths. */\ntype FileStoreFolderNode =\n | ({ typeId: 'folder'; childCount: number } & { name: string })\n | ({ typeId: 'object'; id: string; lastModifiedAt: number; size: number } & { name: string });\ntype FileStoreFolderPaths = Record<string, FileStoreFolderNode[]>;\n\n/** Constants */\nconst CALLBACK_PREVIEW_ABORTED = 'Connector failed to abort preview object operation.';\nconst CALLBACK_RETRIEVE_ABORTED = 'Connector failed to abort retrieve all records operation.';\nconst DEFAULT_PREVIEW_CHUNK_SIZE = 4096;\nconst DEFAULT_RETRIEVE_CHUNK_SIZE = 1000;\nconst URL_PREFIX = 'https://sample-data-eu.datapos.app';\n\ninterface RowBuffer {\n push: (row: string[]) => void;\n flush: () => void;\n}\n\n/** File store emulator connector. */\nexport default class FileStoreEmulatorConnector implements ConnectorInterface {\n abortController: AbortController | undefined;\n readonly config: ConnectorConfig;\n readonly connectionConfig: ConnectionConfig;\n readonly toolConfigs;\n\n constructor(connectionConfig: ConnectionConfig, toolConfigs: ToolConfig[]) {\n this.abortController = undefined;\n this.config = config as ConnectorConfig;\n this.config.version = version;\n this.connectionConfig = connectionConfig;\n this.toolConfigs = toolConfigs;\n }\n\n /** Abort the currently running operation. */\n abortOperation(connector: ConnectorInterface): void {\n if (!connector.abortController) return;\n connector.abortController.abort();\n connector.abortController = undefined;\n }\n\n /** Find the folder path containing the specified object node. */\n findObjectFolderPath(connector: ConnectorInterface, settings: FindObjectFolderPathSettings): Promise<string | null> {\n const fileStoreFolderPaths = fileStoreFolderPathData as FileStoreFolderPaths;\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 // eslint-disable-next-line security/detect-object-injection\n const folderPathNodes = fileStoreFolderPaths[folderPath];\n const folderPathNode = folderPathNodes?.find((folderPathNode) => folderPathNode.typeId === 'object' && folderPathNode.id === settings.nodeId);\n if (folderPathNode) return Promise.resolve(folderPath); // Found, return folder path.\n }\n }\n return Promise.resolve(null); // Not found.\n }\n\n /** Get a readable stream for the specified object node path. */\n async getReadableStream(connector: ConnectorInterface, settings: GetReadableStreamSettings): Promise<ReadableStream<Uint8Array<ArrayBuffer>>> {\n try {\n const response = await fetch(`${URL_PREFIX}/fileStore${settings.path}`);\n if (response.body == null) throw new Error('Readable streams not supported by this browser.');\n\n // TODO: Remove after testing.\n const xxx = await addNumbersWithRust(12, 56);\n const sum = await checksumWithRust(connector.config.version);\n console.log('sum', sum, xxx);\n\n return await Promise.resolve(response.body);\n } catch (error) {\n connector.abortController = undefined;\n throw error;\n }\n }\n\n /** Lists all nodes (folders and objects) in the specified folder path. */\n listNodes(connector: ConnectorInterface, settings: ListNodesSettings): Promise<ListNodesResult> {\n const fileStoreFolderPaths = fileStoreFolderPathData as FileStoreFolderPaths;\n const folderNodes = fileStoreFolderPaths[settings.folderPath] ?? [];\n const connectionNodeConfigs: ConnectionNodeConfig[] = [];\n for (const folderNode of folderNodes) {\n if (folderNode.typeId === 'folder') {\n connectionNodeConfigs.push(this.constructFolderNodeConfig(settings.folderPath, folderNode.name, folderNode.childCount));\n } else {\n connectionNodeConfigs.push(this.constructObjectNodeConfig(settings.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(connector: ConnectorInterface, settings: PreviewObjectSettings): Promise<PreviewObjectResult> {\n try {\n // Create an abort controller. Get the signal for the abort controller and add an abort listener.\n connector.abortController = new AbortController();\n const signal = connector.abortController.signal;\n signal.addEventListener('abort', () => {\n throw new OperationalError(CALLBACK_PREVIEW_ABORTED, 'datapos-connector-file-store-emulator|Connector|preview.abort');\n });\n\n // Fetch chunk from start of file.\n const headers: HeadersInit = { Range: `bytes=0-${settings.chunkSize ?? DEFAULT_PREVIEW_CHUNK_SIZE}` };\n const response = await fetch(encodeURI(`${URL_PREFIX}/fileStore${settings.path}`), { headers, signal });\n if (response.ok) {\n connector.abortController = undefined;\n return { data: new Uint8Array(await response.arrayBuffer()), typeId: 'uint8Array' };\n } else {\n throw await buildFetchError(response, `Failed to fetch '${settings.path}' file.`, 'datapos-connector-file-store-emulator|Connector|preview');\n }\n } catch (error) {\n connector.abortController = undefined;\n throw error;\n }\n }\n\n private createRowBuffer(chunk: (records: string[][]) => void, chunkSize: number): RowBuffer {\n let rows: string[][] = [];\n const flush = (): void => {\n if (rows.length === 0) return;\n chunk(rows);\n rows = [];\n };\n const push = (row: string[]): void => {\n rows.push(row);\n if (rows.length >= chunkSize) flush();\n };\n return { flush, push };\n }\n\n private handleReadable(parser: Parser, signal: AbortSignal, rowBuffer: RowBuffer, fail: (error: unknown) => void): void {\n try {\n let row: string[] | null;\n while ((row = parser.read() as string[] | null) !== null) {\n signal.throwIfAborted();\n rowBuffer.push(row);\n }\n } catch (error) {\n fail(error);\n }\n }\n\n /** Retrieves all records from a CSV object node using streaming and chunked processing. */\n async retrieveRecords(\n connector: ConnectorInterface,\n settings: RetrieveRecordsSettings,\n chunk: (records: string[][]) => void,\n complete: (result: RetrieveRecordsSummary) => void\n ): Promise<void> {\n const csvParseTool = await loadTool<CSVParseTool>(connector.toolConfigs, 'csv-parse');\n return new Promise((resolve, reject) => {\n let isFinished = false;\n const fail = (error: unknown): void => {\n if (isFinished) return;\n isFinished = true;\n connector.abortController = undefined;\n reject(normalizeToError(error));\n };\n\n try {\n // Create an abort controller and get the signal. Add an abort listener to the signal.\n connector.abortController = new AbortController();\n const signal = connector.abortController.signal;\n signal.addEventListener('abort', () => fail(new OperationalError(CALLBACK_RETRIEVE_ABORTED, 'retrieveRecords.abort')), { once: true });\n\n // Parser - Create a parser object for CSV parsing.\n const rowBuffer = this.createRowBuffer(chunk, DEFAULT_RETRIEVE_CHUNK_SIZE);\n const parser = csvParseTool.buildParser({ delimiter: settings.valueDelimiterId, info: true, relax_column_count: true, relax_quotes: true });\n parser.on('readable', () => this.handleReadable(parser, signal, rowBuffer, fail));\n parser.on('error', (error) => fail(error));\n parser.on('end', () => {\n try {\n signal.throwIfAborted(); // Check if the abort signal has been triggered.\n rowBuffer.flush();\n connector.abortController = undefined; // Clear the abort controller.\n isFinished = true;\n complete({\n byteCount: parser.info.bytes,\n commentLineCount: parser.info.comment_lines,\n emptyLineCount: parser.info.empty_lines,\n invalidFieldLengthCount: parser.info.invalid_field_length,\n lineCount: parser.info.lines,\n recordCount: parser.info.records\n });\n resolve();\n } catch (error) {\n connector.abortController = undefined;\n reject(normalizeToError(error));\n }\n });\n\n // Fetch, decode and forward the contents of the file to the parser.\n // fetch(encodeURI(`${URL_PREFIX}/fileStore${settings.path}`), { signal })\n // .then(async (response) => {\n // try {\n // if (response.ok && response.body) {\n // const stream = response.body.pipeThrough(new TextDecoderStream(settings.encodingId));\n // const decodedStreamReader = stream.getReader();\n // let result = await decodedStreamReader.read();\n // while (!result.done) {\n // signal.throwIfAborted(); // Check if the abort signal has been triggered.\n // // Write the decoded data to the parser and terminate if there is an error.\n // parser.write(result.value, (error) => {\n // if (error) {\n // connector.abortController = undefined;\n // reject(normalizeToError(error));\n // }\n // });\n // result = await decodedStreamReader.read();\n // }\n // parser.end(); // Signal no more data will be written.\n // } else {\n // const error = await buildFetchError(\n // response,\n // `Failed to fetch '${settings.path}' file.`,\n // 'datapos-connector-file-store-emulator|Connector|retrieve'\n // );\n // connector.abortController = undefined;\n // reject(error);\n // }\n // } catch (error) {\n // connector.abortController = undefined;\n // reject(normalizeToError(error));\n // }\n // })\n // .catch((error: unknown) => {\n // connector.abortController = undefined;\n // reject(normalizeToError(error));\n // });\n void this.streamIntoParser(`${URL_PREFIX}/fileStore${settings.path}`, settings.path, settings.encodingId, signal, parser).catch(fail);\n } catch (error) {\n fail(error);\n }\n });\n }\n\n private async streamIntoParser(url: string, path: string, encodingId: string, signal: AbortSignal, parser: Parser): Promise<void> {\n const response = await fetch(encodeURI(url), { signal });\n if (!response.ok || !response.body) {\n throw await buildFetchError(response, `Failed to fetch '${path}' file.`, 'datapos-connector-file-store-emulator|Connector|retrieve');\n }\n\n const reader = response.body.pipeThrough(new TextDecoderStream(encodingId)).getReader();\n while (true) {\n const { value, done } = await reader.read();\n if (done) break;\n signal.throwIfAborted();\n await new Promise<void>((resolve, reject) => {\n parser.write(value, (error) => {\n if (error) reject(error);\n else resolve();\n });\n });\n }\n\n parser.end();\n }\n /** Construct folder node configuration. */\n private constructFolderNodeConfig(folderPath: string, name: string, childCount: number): ConnectionNodeConfig {\n return { id: nanoid(), childCount, extension: undefined, folderPath, label: name, name, typeId: 'folder' };\n }\n\n /** Construct object (file) node configuration. */\n private 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 { id, extension, folderPath, label: fullName, lastModifiedAt: lastModifiedAtTimestamp, mimeType, name, size, typeId: 'object' };\n }\n}\n"],"names":["urlAlphabet","nanoid","size","id","bytes","scopedUrlAlphabet","c","e","o","n","t","l","i","r","a","E","y","h","d","m","rustBindingsPromise","addNumbersWithRust","left","right","add_my_numbers","loadRustBindings","yyyy","checksumWithRust","input","checksum_from_rust","CALLBACK_PREVIEW_ABORTED","CALLBACK_RETRIEVE_ABORTED","DEFAULT_PREVIEW_CHUNK_SIZE","DEFAULT_RETRIEVE_CHUNK_SIZE","URL_PREFIX","FileStoreEmulatorConnector","connectionConfig","toolConfigs","config","version","connector","settings","fileStoreFolderPaths","fileStoreFolderPathData","folderPath","folderPathNode","response","xxx","sum","error","folderNodes","connectionNodeConfigs","folderNode","signal","OperationalError","headers","buildFetchError","chunk","chunkSize","rows","flush","row","parser","rowBuffer","fail","complete","csvParseTool","loadTool","resolve","reject","isFinished","normalizeToError","url","path","encodingId","reader","value","done","name","childCount","fullName","lastModifiedAt","extractNameFromPath","extension","extractExtensionFromPath","lastModifiedAtTimestamp","mimeType","lookupMimeTypeForExtension"],"mappings":"AAAO,MAAMA,IACX;ACoBK,IAAIC,IAAS,CAACC,IAAO,OAAO;AACjC,MAAIC,IAAK,IACLC,IAAQ,OAAO,gBAAgB,IAAI,WAAYF,KAAQ,CAAC,CAAE;AAC9D,SAAOA;AACL,IAAAC,KAAME,EAAkBD,EAAMF,CAAI,IAAI,EAAE;AAE1C,SAAOC;AACT;AC5BA,eAAeG,EAAEC,GAAGC,GAAG;AACrB,QAAMC,IAAI,gBAAgBD,CAAC,IAAIE,IAAIH,EAAE,KAAK,CAAC,MAAM,EAAE,OAAOE,CAAC;AAC3D,MAAI,CAACC,EAAG,OAAM,IAAI,MAAM,0CAA0CF,CAAC,IAAI;AACvE,QAAMG,IAAI,MAAM,OAAO,uCAAuCH,CAAC,KAAKE,EAAE,OAAO,IAAID,CAAC;AAClF,SAAO,IAAIE,EAAE,KAAI;AACnB;ACLA,MAAMC,UAAU,MAAM;AAAA,EACpB;AAAA;AAAA,EAEA,YAAYJ,GAAGE,GAAGG,GAAG;AACnB,UAAML,GAAGK,CAAC,GAAG,KAAK,OAAO,WAAW,MAAM,KAAK,UAAUH;AAAA,EAC3D;AACF;AACA,MAAMI,UAAUF,EAAE;AAClB;AAKA,MAAMN,UAAUQ,EAAE;AAAA,EAChB;AAAA;AAAA,EAEA,YAAYN,GAAGE,GAAGG,GAAGJ,GAAG;AACtB,UAAMD,GAAGE,GAAGD,CAAC,GAAG,KAAK,OAAO,WAAW,MAAM,KAAK,OAAOM,EAAEF,KAAK,MAAM;AAAA,EACxE;AACF;AACA,MAAMG,UAAUJ,EAAE;AAClB;AAcA,eAAeK,EAAEV,GAAGC,GAAGE,GAAG;AACxB,QAAMG,IAAI,MAAMN,EAAE,UAAU,IAAIE,IAAI,GAAGD,CAAC,qBAAqBD,EAAE,MAAM,GAAGA,EAAE,aAAaM,IAAI,EAAE;AAC7F,MAAI;AACJ,MAAI;AACF,QAAI,MAAMN,EAAE,KAAI;AAAA,EAClB,SAASW,GAAG;AACV,QAAI,sBAAsBP,EAAEO,CAAC,EAAE,OAAO;AAAA,EACxC;AACA,SAAO,IAAIZ,EAAEG,GAAGC,GAAG,CAAC;AACtB;AAIA,SAASC,EAAEJ,GAAG;AACZ,MAAIA,aAAa,MAAO,QAAOA;AAC/B,MAAI,OAAOA,KAAK,SAAU,QAAO,IAAI,MAAMA,CAAC;AAC5C,MAAI,OAAOA,KAAK,YAAY,OAAOA,KAAK,aAAa,OAAOA,KAAK,SAAU,QAAO,IAAI,MAAM,OAAOA,CAAC,CAAC;AACrG,MAAI,OAAOA,KAAK,SAAU,QAAO,IAAI,MAAMA,EAAE,eAAe,eAAe;AAC3E,MAAIA,KAAK,QAAQ,OAAOA,KAAK;AAC3B,QAAI;AACF,aAAO,IAAI,MAAM,KAAK,UAAUA,CAAC,CAAC;AAAA,IACpC,QAAQ;AACN,aAAO,IAAI,MAAM,eAAe;AAAA,IAClC;AACF,SAAO,IAAI,MAAM,eAAe;AAClC;AAuCA,SAASQ,EAAER,GAAG;AACZ,MAAI,EAAEA,KAAK,QAAQA,MAAM;AACvB,WAAOA,EAAE,SAAS,OAAO,GAAGA,EAAE,MAAM,GAAG,IAAI,CAAC,oBAAoBA;AACpE;AC7DA,SAASI,EAAEJ,GAAG;AACZ,MAAIA,GAAG;AACL,UAAMG,IAAIH,EAAE,YAAY,GAAG,GAAGE,IAAIF,EAAE,YAAY,KAAKG,MAAM,KAAKH,EAAE,SAASG,CAAC;AAC5E,WAAOD,MAAM,KAAKF,IAAIA,EAAE,MAAM,GAAG,KAAK,IAAI,GAAGE,CAAC,CAAC;AAAA,EACjD;AACF;AACA,SAASU,EAAEZ,GAAG;AACZ,MAAIA,GAAG;AACL,UAAMG,IAAIH,EAAE,YAAY,GAAG;AAC3B,QAAIG,MAAM,GAAI,QAAOH,EAAE,MAAM,KAAK,IAAI,GAAGG,IAAI,CAAC,CAAC;AAAA,EACjD;AACF;AAoCA,SAASK,EAAER,GAAG;AACZ,UAAQA,GAAC;AAAA,IACP,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACb;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/FA,IAAIa;AAGJ,eAAeC,EAAmBC,GAAcC,GAAgC;AAC5E,QAAM,EAAE,gBAAAC,MAAmB,MAAMC,EAAA;AACjC,UAAQ,IAAI,MAAMH,GAAMC,CAAK;AAC7B,QAAMG,IAAOF,EAAe,KAAK,MAAMF,CAAI,GAAG,KAAK,MAAMC,CAAK,CAAC;AAC/D,iBAAQ,IAAI,MAAMG,CAAI,GACfA;AACX;AAGA,eAAeC,EAAiBC,GAAgC;AAC5D,QAAM,EAAE,oBAAAC,MAAuB,MAAMJ,EAAA;AACrC,SAAOI,EAAmBD,CAAK;AACnC;AAGA,eAAeH,IAA0C;AACrD,SAAAL,MAAwB,OAAO,0DAAsG,GAC9HA;AACX;ACgBA,MAAMU,IAA2B,uDAC3BC,KAA4B,6DAC5BC,KAA6B,MAC7BC,KAA8B,KAC9BC,IAAa;AAQnB,MAAqBC,GAAyD;AAAA,EAC1E;AAAA,EACS;AAAA,EACA;AAAA,EACA;AAAA,EAET,YAAYC,GAAoCC,GAA2B;AACvE,SAAK,kBAAkB,QACvB,KAAK,SAASC,GACd,KAAK,OAAO,UAAUC,GACtB,KAAK,mBAAmBH,GACxB,KAAK,cAAcC;AAAA,EACvB;AAAA;AAAA,EAGA,eAAeG,GAAqC;AAChD,IAAKA,EAAU,oBACfA,EAAU,gBAAgB,MAAA,GAC1BA,EAAU,kBAAkB;AAAA,EAChC;AAAA;AAAA,EAGA,qBAAqBA,GAA+BC,GAAgE;AAChH,UAAMC,IAAuBC;AAE7B,eAAWC,KAAcF;AACrB,UAAI,OAAO,OAAOA,GAAsBE,CAAU,KAEtBF,EAAqBE,CAAU,GACf,KAAK,CAACC,MAAmBA,EAAe,WAAW,YAAYA,EAAe,OAAOJ,EAAS,MAAM;AACxH,eAAO,QAAQ,QAAQG,CAAU;AAG7D,WAAO,QAAQ,QAAQ,IAAI;AAAA,EAC/B;AAAA;AAAA,EAGA,MAAM,kBAAkBJ,GAA+BC,GAAuF;AAC1I,QAAI;AACA,YAAMK,IAAW,MAAM,MAAM,GAAGZ,CAAU,aAAaO,EAAS,IAAI,EAAE;AACtE,UAAIK,EAAS,QAAQ,KAAM,OAAM,IAAI,MAAM,iDAAiD;AAG5F,YAAMC,IAAM,MAAM1B,EAAmB,IAAI,EAAE,GACrC2B,IAAM,MAAMrB,EAAiBa,EAAU,OAAO,OAAO;AAC3D,qBAAQ,IAAI,OAAOQ,GAAKD,CAAG,GAEpB,MAAM,QAAQ,QAAQD,EAAS,IAAI;AAAA,IAC9C,SAASG,GAAO;AACZ,YAAAT,EAAU,kBAAkB,QACtBS;AAAA,IACV;AAAA,EACJ;AAAA;AAAA,EAGA,UAAUT,GAA+BC,GAAuD;AAE5F,UAAMS,IADuBP,EACYF,EAAS,UAAU,KAAK,CAAA,GAC3DU,IAAgD,CAAA;AACtD,eAAWC,KAAcF;AACrB,MAAIE,EAAW,WAAW,WACtBD,EAAsB,KAAK,KAAK,0BAA0BV,EAAS,YAAYW,EAAW,MAAMA,EAAW,UAAU,CAAC,IAEtHD,EAAsB,KAAK,KAAK,0BAA0BV,EAAS,YAAYW,EAAW,IAAIA,EAAW,MAAMA,EAAW,gBAAgBA,EAAW,IAAI,CAAC;AAGlK,WAAO,QAAQ,QAAQ,EAAE,QAAQ,QAAW,QAAQ,IAAO,uBAAAD,GAAuB,YAAYA,EAAsB,OAAA,CAAQ;AAAA,EAChI;AAAA;AAAA,EAGA,MAAM,cAAcX,GAA+BC,GAA+D;AAC9G,QAAI;AAEA,MAAAD,EAAU,kBAAkB,IAAI,gBAAA;AAChC,YAAMa,IAASb,EAAU,gBAAgB;AACzC,MAAAa,EAAO,iBAAiB,SAAS,MAAM;AACnC,cAAM,IAAIC,EAAiBxB,GAA0B,+DAA+D;AAAA,MACxH,CAAC;AAGD,YAAMyB,IAAuB,EAAE,OAAO,WAAWd,EAAS,aAAaT,EAA0B,GAAA,GAC3Fc,IAAW,MAAM,MAAM,UAAU,GAAGZ,CAAU,aAAaO,EAAS,IAAI,EAAE,GAAG,EAAE,SAAAc,GAAS,QAAAF,GAAQ;AACtG,UAAIP,EAAS;AACT,eAAAN,EAAU,kBAAkB,QACrB,EAAE,MAAM,IAAI,WAAW,MAAMM,EAAS,YAAA,CAAa,GAAG,QAAQ,aAAA;AAErE,YAAM,MAAMU,EAAgBV,GAAU,oBAAoBL,EAAS,IAAI,WAAW,yDAAyD;AAAA,IAEnJ,SAASQ,GAAO;AACZ,YAAAT,EAAU,kBAAkB,QACtBS;AAAA,IACV;AAAA,EACJ;AAAA,EAEQ,gBAAgBQ,GAAsCC,GAA8B;AACxF,QAAIC,IAAmB,CAAA;AACvB,UAAMC,IAAQ,MAAY;AACtB,MAAID,EAAK,WAAW,MACpBF,EAAME,CAAI,GACVA,IAAO,CAAA;AAAA,IACX;AAKA,WAAO,EAAE,OAAAC,GAAO,MAJH,CAACC,MAAwB;AAClC,MAAAF,EAAK,KAAKE,CAAG,GACTF,EAAK,UAAUD,KAAWE,EAAA;AAAA,IAClC,EACgB;AAAA,EACpB;AAAA,EAEQ,eAAeE,GAAgBT,GAAqBU,GAAsBC,GAAsC;AACpH,QAAI;AACA,UAAIH;AACJ,cAAQA,IAAMC,EAAO,KAAA,OAA+B;AAChD,QAAAT,EAAO,eAAA,GACPU,EAAU,KAAKF,CAAG;AAAA,IAE1B,SAASZ,GAAO;AACZ,MAAAe,EAAKf,CAAK;AAAA,IACd;AAAA,EACJ;AAAA;AAAA,EAGA,MAAM,gBACFT,GACAC,GACAgB,GACAQ,GACa;AACb,UAAMC,IAAe,MAAMC,EAAuB3B,EAAU,aAAa,WAAW;AACpF,WAAO,IAAI,QAAQ,CAAC4B,GAASC,MAAW;AACpC,UAAIC,IAAa;AACjB,YAAMN,IAAO,CAACf,MAAyB;AACnC,QAAIqB,MACJA,IAAa,IACb9B,EAAU,kBAAkB,QAC5B6B,EAAOE,EAAiBtB,CAAK,CAAC;AAAA,MAClC;AAEA,UAAI;AAEA,QAAAT,EAAU,kBAAkB,IAAI,gBAAA;AAChC,cAAMa,IAASb,EAAU,gBAAgB;AACzC,QAAAa,EAAO,iBAAiB,SAAS,MAAMW,EAAK,IAAIV,EAAiBvB,IAA2B,uBAAuB,CAAC,GAAG,EAAE,MAAM,IAAM;AAGrI,cAAMgC,IAAY,KAAK,gBAAgBN,GAAOxB,EAA2B,GACnE6B,IAASI,EAAa,YAAY,EAAE,WAAWzB,EAAS,kBAAkB,MAAM,IAAM,oBAAoB,IAAM,cAAc,IAAM;AAC1I,QAAAqB,EAAO,GAAG,YAAY,MAAM,KAAK,eAAeA,GAAQT,GAAQU,GAAWC,CAAI,CAAC,GAChFF,EAAO,GAAG,SAAS,CAACb,MAAUe,EAAKf,CAAK,CAAC,GACzCa,EAAO,GAAG,OAAO,MAAM;AACnB,cAAI;AACA,YAAAT,EAAO,eAAA,GACPU,EAAU,MAAA,GACVvB,EAAU,kBAAkB,QAC5B8B,IAAa,IACbL,EAAS;AAAA,cACL,WAAWH,EAAO,KAAK;AAAA,cACvB,kBAAkBA,EAAO,KAAK;AAAA,cAC9B,gBAAgBA,EAAO,KAAK;AAAA,cAC5B,yBAAyBA,EAAO,KAAK;AAAA,cACrC,WAAWA,EAAO,KAAK;AAAA,cACvB,aAAaA,EAAO,KAAK;AAAA,YAAA,CAC5B,GACDM,EAAA;AAAA,UACJ,SAASnB,GAAO;AACZ,YAAAT,EAAU,kBAAkB,QAC5B6B,EAAOE,EAAiBtB,CAAK,CAAC;AAAA,UAClC;AAAA,QACJ,CAAC,GAwCI,KAAK,iBAAiB,GAAGf,CAAU,aAAaO,EAAS,IAAI,IAAIA,EAAS,MAAMA,EAAS,YAAYY,GAAQS,CAAM,EAAE,MAAME,CAAI;AAAA,MACxI,SAASf,GAAO;AACZ,QAAAe,EAAKf,CAAK;AAAA,MACd;AAAA,IACJ,CAAC;AAAA,EACL;AAAA,EAEA,MAAc,iBAAiBuB,GAAaC,GAAcC,GAAoBrB,GAAqBS,GAA+B;AAC9H,UAAMhB,IAAW,MAAM,MAAM,UAAU0B,CAAG,GAAG,EAAE,QAAAnB,GAAQ;AACvD,QAAI,CAACP,EAAS,MAAM,CAACA,EAAS;AAC1B,YAAM,MAAMU,EAAgBV,GAAU,oBAAoB2B,CAAI,WAAW,0DAA0D;AAGvI,UAAME,IAAS7B,EAAS,KAAK,YAAY,IAAI,kBAAkB4B,CAAU,CAAC,EAAE,UAAA;AAC5E,eAAa;AACT,YAAM,EAAE,OAAAE,GAAO,MAAAC,EAAA,IAAS,MAAMF,EAAO,KAAA;AACrC,UAAIE,EAAM;AACV,MAAAxB,EAAO,eAAA,GACP,MAAM,IAAI,QAAc,CAACe,GAASC,MAAW;AACzC,QAAAP,EAAO,MAAMc,GAAO,CAAC3B,MAAU;AAC3B,UAAIA,MAAcA,CAAK,IAClBmB,EAAA;AAAA,QACT,CAAC;AAAA,MACL,CAAC;AAAA,IACL;AAEA,IAAAN,EAAO,IAAA;AAAA,EACX;AAAA;AAAA,EAEQ,0BAA0BlB,GAAoBkC,GAAcC,GAA0C;AAC1G,WAAO,EAAE,IAAI9E,KAAU,YAAA8E,GAAY,WAAW,QAAW,YAAAnC,GAAY,OAAOkC,GAAM,MAAAA,GAAM,QAAQ,SAAA;AAAA,EACpG;AAAA;AAAA,EAGQ,0BAA0BlC,GAAoBzC,GAAY6E,GAAkBC,GAAwB/E,GAAoC;AAC5I,UAAM4E,IAAOI,EAAoBF,CAAQ,KAAK,IACxCG,IAAYC,EAAyBJ,CAAQ,GAC7CK,IAA0BJ,GAC1BK,IAAWC,EAA2BJ,CAAS;AACrD,WAAO,EAAE,IAAAhF,GAAI,WAAAgF,GAAW,YAAAvC,GAAY,OAAOoC,GAAU,gBAAgBK,GAAyB,UAAAC,GAAU,MAAAR,GAAM,MAAA5E,GAAM,QAAQ,SAAA;AAAA,EAChI;AACJ;","x_google_ignoreList":[0,1,2,3,4]}
@@ -21,6 +21,7 @@ export default class FileStoreEmulatorConnector implements ConnectorInterface {
21
21
  private handleReadable;
22
22
  /** Retrieves all records from a CSV object node using streaming and chunked processing. */
23
23
  retrieveRecords(connector: ConnectorInterface, settings: RetrieveRecordsSettings, chunk: (records: string[][]) => void, complete: (result: RetrieveRecordsSummary) => void): Promise<void>;
24
+ private streamIntoParser;
24
25
  /** Construct folder node configuration. */
25
26
  private constructFolderNodeConfig;
26
27
  /** Construct object (file) node configuration. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "datapos-connector-file-store-emulator",
3
- "version": "0.2.352",
3
+ "version": "0.2.353",
4
4
  "license": "MIT",
5
5
  "author": "Jonathan Terrell <terrell.jm@gmail.com>",
6
6
  "private": false,