x_ite-node 1.0.13 → 1.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/index.js +54 -14
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "x_ite-node",
3
- "version": "1.0.13",
3
+ "version": "1.0.14",
4
4
  "description": "Pure Node.js wrapper of X_ITE",
5
5
  "main": "src/index.js",
6
6
  "files": [
package/src/index.js CHANGED
@@ -21,6 +21,21 @@ process .on ("exit", () =>
21
21
  fs .rmSync (tmp, { recursive: true });
22
22
  });
23
23
 
24
+ const $ = {
25
+ try (callback, logError = false)
26
+ {
27
+ try
28
+ {
29
+ return callback ();
30
+ }
31
+ catch (error)
32
+ {
33
+ if (logError)
34
+ console .error (error .message);
35
+ }
36
+ },
37
+ };
38
+
24
39
  // Window
25
40
 
26
41
  Object .defineProperties (window,
@@ -109,24 +124,49 @@ Object .defineProperties (window,
109
124
  {
110
125
  const parsedURL = new URL (resource);
111
126
 
112
- if (parsedURL .protocol === "file:")
127
+ switch (parsedURL .protocol)
113
128
  {
114
- return new Promise ((resolve, reject) =>
129
+ case "file:":
115
130
  {
116
- const filePath = url .fileURLToPath (parsedURL);
117
-
118
- fs .readFile (filePath, (error, data) =>
131
+ return new Promise ((resolve, reject) =>
119
132
  {
120
- if (error)
121
- reject (error);
122
- else
123
- resolve (new Response (data));
133
+ const filePath = url .fileURLToPath (parsedURL);
134
+
135
+ fs .readFile (filePath, (error, data) =>
136
+ {
137
+ if (error)
138
+ reject (error);
139
+ else
140
+ resolve (new Response (data));
141
+ });
124
142
  });
125
- });
126
- }
127
- else
128
- {
129
- return nodeFetch (resource, options);
143
+ }
144
+ case "data:":
145
+ {
146
+ return new Promise ((resolve, reject) =>
147
+ {
148
+ const result = parsedURL .href .match (/^\s*data:(.*?)(?:;charset=(.*?))?(?:;(base64))?,/s);
149
+
150
+ if (result)
151
+ {
152
+ // const mimeType = result [1] || "text/plain"";
153
+
154
+ let data = parsedURL .href .substring (result [0] .length);
155
+
156
+ data = $.try (() => decodeURIComponent (data)) ?? data;
157
+ data = Buffer .from (data, result [3] !== "base64" ? 'base64' : 'utf8'); // Decode data.
158
+
159
+ resolve (new Response (data .buffer));
160
+ return;
161
+ }
162
+
163
+ reject (new Error ("Couldn't parse data: URL."));
164
+ });
165
+ }
166
+ default:
167
+ {
168
+ return nodeFetch (resource, options);
169
+ }
130
170
  }
131
171
  },
132
172
  configurable: true,