@statechange/council 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/dist/cli.js +15 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/gui.d.ts +1 -0
  4. package/dist/commands/gui.js +63 -0
  5. package/dist/commands/gui.js.map +1 -0
  6. package/dist/commands/install.d.ts +5 -0
  7. package/dist/commands/install.js +131 -0
  8. package/dist/commands/install.js.map +1 -0
  9. package/dist-electron/index-B7VRloBj.js +1293 -0
  10. package/dist-electron/index-C03cLUYg.js +5911 -0
  11. package/dist-electron/index-Dw6I25AL.js +5911 -0
  12. package/dist-electron/index-NMn1koXq.js +31737 -0
  13. package/dist-electron/index-zpksia2X.js +5911 -0
  14. package/dist-electron/main-C_og2Wvn.js +32969 -0
  15. package/dist-electron/main-DBohq-SO.js +32969 -0
  16. package/dist-electron/main.js +791 -1217
  17. package/dist-electron/multipart-parser-Bdb1JOpV.js +353 -0
  18. package/dist-electron/multipart-parser-Cc_drctG.js +353 -0
  19. package/dist-electron/multipart-parser-Do9VIIY5.js +353 -0
  20. package/dist-electron/preload.mjs +1 -0
  21. package/dist-renderer/assets/Tableau10-B-NsZVaP.js +1 -0
  22. package/dist-renderer/assets/_commonjs-dynamic-modules-TDtrdbi3.js +1 -0
  23. package/dist-renderer/assets/ar-SA-G6X2FPQ2-CNUtTBRd.js +10 -0
  24. package/dist-renderer/assets/arc-BsV2XMg-.js +1 -0
  25. package/dist-renderer/assets/array-BKyUJesY.js +1 -0
  26. package/dist-renderer/assets/az-AZ-76LH7QW2-BU-6SB21.js +1 -0
  27. package/dist-renderer/assets/bg-BG-XCXSNQG7-L1xMEEzs.js +5 -0
  28. package/dist-renderer/assets/blockDiagram-38ab4fdb-BHS1f8SU.js +118 -0
  29. package/dist-renderer/assets/bn-BD-2XOGV67Q-BgaYSNWB.js +5 -0
  30. package/dist-renderer/assets/c4Diagram-3d4e48cf-D2Rl9Buo.js +10 -0
  31. package/dist-renderer/assets/ca-ES-6MX7JW3Y-DsFYhkLC.js +8 -0
  32. package/dist-renderer/assets/channel-D6rvl4sk.js +1 -0
  33. package/dist-renderer/assets/classDiagram-70f12bd4-BGxDdVFC.js +2 -0
  34. package/dist-renderer/assets/classDiagram-v2-f2320105-BuoUwdmW.js +2 -0
  35. package/dist-renderer/assets/clone-ya1OS7ZU.js +1 -0
  36. package/dist-renderer/assets/createText-2e5e7dd3-BX6eAgL1.js +7 -0
  37. package/dist-renderer/assets/cs-CZ-2BRQDIVT-CXV-i633.js +11 -0
  38. package/dist-renderer/assets/da-DK-5WZEPLOC-DmYIifsm.js +5 -0
  39. package/dist-renderer/assets/de-DE-XR44H4JA-B2T52TzN.js +8 -0
  40. package/dist-renderer/assets/directory-open-01563666-DWU9wJ6I.js +1 -0
  41. package/dist-renderer/assets/directory-open-4ed118d0-CunoC1EB.js +1 -0
  42. package/dist-renderer/assets/edges-e0da2a9e-ChSiyO2u.js +4 -0
  43. package/dist-renderer/assets/el-GR-BZB4AONW-DlS_8ZJJ.js +10 -0
  44. package/dist-renderer/assets/erDiagram-9861fffd-REAc3tDU.js +51 -0
  45. package/dist-renderer/assets/es-ES-U4NZUMDT-DL-zHXpT.js +9 -0
  46. package/dist-renderer/assets/eu-ES-A7QVB2H4-Cq0Kx947.js +11 -0
  47. package/dist-renderer/assets/fa-IR-HGAKTJCU-DJqZOqAL.js +8 -0
  48. package/dist-renderer/assets/fi-FI-Z5N7JZ37-CQiIDJrs.js +6 -0
  49. package/dist-renderer/assets/file-open-002ab408-DIuFHtCF.js +1 -0
  50. package/dist-renderer/assets/file-open-7c801643-684qeFg4.js +1 -0
  51. package/dist-renderer/assets/file-save-3189631c-C1wFhQhH.js +1 -0
  52. package/dist-renderer/assets/file-save-745eba88-Bb9F9Kg7.js +1 -0
  53. package/dist-renderer/assets/flowDb-956e92f1-iZnRwdLd.js +10 -0
  54. package/dist-renderer/assets/flowDiagram-66a62f08-Cww5ErID.js +4 -0
  55. package/dist-renderer/assets/flowDiagram-v2-96b9c2cf-DMQnUrJv.js +1 -0
  56. package/dist-renderer/assets/flowchart-elk-definition-4a651766-B3GjdX0I.js +139 -0
  57. package/dist-renderer/assets/fr-FR-RHASNOE6-DXRyDBSp.js +9 -0
  58. package/dist-renderer/assets/ganttDiagram-c361ad54-Dh5UuCf5.js +257 -0
  59. package/dist-renderer/assets/gitGraphDiagram-72cf32ee-CUrdiK9f.js +70 -0
  60. package/dist-renderer/assets/gl-ES-HMX3MZ6V-DB2LhjQl.js +10 -0
  61. package/dist-renderer/assets/graph-KS9cHKTv.js +1 -0
  62. package/dist-renderer/assets/he-IL-6SHJWFNN-CWdud4mG.js +10 -0
  63. package/dist-renderer/assets/hi-IN-IWLTKZ5I-DkfCxaBI.js +4 -0
  64. package/dist-renderer/assets/hu-HU-A5ZG7DT2-DVX9rddx.js +7 -0
  65. package/dist-renderer/assets/id-ID-SAP4L64H-CIosyByg.js +10 -0
  66. package/dist-renderer/assets/image-blob-reduce.esm-BLtmMM_J.js +2 -0
  67. package/dist-renderer/assets/index-3862675e-CVxUAJo4.js +1 -0
  68. package/dist-renderer/assets/index-3RkkhxnO.js +36 -0
  69. package/dist-renderer/assets/index-B61Czmwn.js +95 -0
  70. package/dist-renderer/assets/index-BF6L2_KC.css +1 -0
  71. package/dist-renderer/assets/infoDiagram-f8f76790-CWACEGb6.js +7 -0
  72. package/dist-renderer/assets/init-Gi6I4Gst.js +1 -0
  73. package/dist-renderer/assets/it-IT-JPQ66NNP-D-TuMToN.js +11 -0
  74. package/dist-renderer/assets/ja-JP-DBVTYXUO-CK6puaHx.js +8 -0
  75. package/dist-renderer/assets/journeyDiagram-49397b02-DM-laNCt.js +139 -0
  76. package/dist-renderer/assets/kaa-6HZHGXH3-CiRWfMKd.js +1 -0
  77. package/dist-renderer/assets/kab-KAB-ZGHBKWFO-D4w9BQ8H.js +8 -0
  78. package/dist-renderer/assets/katex-DhXJpUyf.js +261 -0
  79. package/dist-renderer/assets/kk-KZ-P5N5QNE5-RZi2AGvr.js +1 -0
  80. package/dist-renderer/assets/km-KH-HSX4SM5Z-Dm-OPxhU.js +11 -0
  81. package/dist-renderer/assets/ko-KR-MTYHY66A-PbPGVqVz.js +9 -0
  82. package/dist-renderer/assets/ku-TR-6OUDTVRD-Bw0cMtYj.js +9 -0
  83. package/dist-renderer/assets/layout-zADYSvqS.js +1 -0
  84. package/dist-renderer/assets/line-DfBkzhQg.js +1 -0
  85. package/dist-renderer/assets/linear-O3lyK7Iz.js +1 -0
  86. package/dist-renderer/assets/lt-LT-XHIRWOB4-06ru_RZe.js +3 -0
  87. package/dist-renderer/assets/lv-LV-5QDEKY6T-DsGBjFui.js +7 -0
  88. package/dist-renderer/assets/mindmap-definition-fc14e90a-Bg9UaNPK.js +415 -0
  89. package/dist-renderer/assets/mr-IN-CRQNXWMA-C1kWOErC.js +13 -0
  90. package/dist-renderer/assets/my-MM-5M5IBNSE-C8wD2OFs.js +1 -0
  91. package/dist-renderer/assets/nb-NO-T6EIAALU-B7ac-R_W.js +10 -0
  92. package/dist-renderer/assets/nl-NL-IS3SIHDZ-Up67nxB7.js +8 -0
  93. package/dist-renderer/assets/nn-NO-6E72VCQL-BPlkzXM9.js +8 -0
  94. package/dist-renderer/assets/oc-FR-POXYY2M6-TRLIkgml.js +8 -0
  95. package/dist-renderer/assets/ordinal-BENe2yWM.js +1 -0
  96. package/dist-renderer/assets/pa-IN-N4M65BXN-Dl7hF9RX.js +4 -0
  97. package/dist-renderer/assets/path-CbwjOpE9.js +1 -0
  98. package/dist-renderer/assets/percentages-BXMCSKIN-wBXtRqNn.js +199 -0
  99. package/dist-renderer/assets/pica-CGZUgvhx.js +2 -0
  100. package/dist-renderer/assets/pieDiagram-8a3498a8-ZPRkRtpu.js +35 -0
  101. package/dist-renderer/assets/pl-PL-T2D74RX3-DkwkT852.js +9 -0
  102. package/dist-renderer/assets/pt-BR-5N22H2LF-BMFWH_jN.js +9 -0
  103. package/dist-renderer/assets/pt-PT-UZXXM6DQ-BPSC-yrG.js +9 -0
  104. package/dist-renderer/assets/quadrantDiagram-120e2f19-DB1TyNBK.js +7 -0
  105. package/dist-renderer/assets/requirementDiagram-deff3bca-DqVc_A29.js +52 -0
  106. package/dist-renderer/assets/ro-RO-JPDTUUEW-CgkEXyU-.js +11 -0
  107. package/dist-renderer/assets/roundRect-mAH3dD0p.js +1 -0
  108. package/dist-renderer/assets/ru-RU-B4JR7IUQ-BJIahd0q.js +9 -0
  109. package/dist-renderer/assets/sankeyDiagram-04a897e0-DZqGbQ0e.js +8 -0
  110. package/dist-renderer/assets/sequenceDiagram-704730f1-D0Q04jBP.js +122 -0
  111. package/dist-renderer/assets/si-LK-N5RQ5JYF-DZ97xsfW.js +1 -0
  112. package/dist-renderer/assets/sk-SK-C5VTKIMK-3O0GcaTE.js +6 -0
  113. package/dist-renderer/assets/sl-SI-NN7IZMDC-x_-Ca4Po.js +6 -0
  114. package/dist-renderer/assets/stateDiagram-587899a1-BkW3tbK-.js +1 -0
  115. package/dist-renderer/assets/stateDiagram-v2-d93cdb3a-CZYVILLk.js +1 -0
  116. package/dist-renderer/assets/styles-6aaf32cf-BQKVAqEs.js +207 -0
  117. package/dist-renderer/assets/styles-9a916d00-DTjDY-zu.js +160 -0
  118. package/dist-renderer/assets/styles-c10674c1-CviHLZ2K.js +116 -0
  119. package/dist-renderer/assets/subset-shared.chunk-DIxPfZhi.js +22 -0
  120. package/dist-renderer/assets/subset-worker.chunk-DDMwauN2.js +1 -0
  121. package/dist-renderer/assets/sv-SE-XGPEYMSR-DmtUCQiw.js +10 -0
  122. package/dist-renderer/assets/svgDrawCommon-08f97a94-B6bAmadW.js +1 -0
  123. package/dist-renderer/assets/ta-IN-2NMHFXQM-D7fiXwNW.js +9 -0
  124. package/dist-renderer/assets/th-TH-HPSO5L25-D_F5D_Tj.js +2 -0
  125. package/dist-renderer/assets/timeline-definition-85554ec2-BZuaxri2.js +61 -0
  126. package/dist-renderer/assets/tr-TR-DEFEU3FU-CzwSWbpN.js +7 -0
  127. package/dist-renderer/assets/uk-UA-QMV73CPH-BaaxaBLn.js +6 -0
  128. package/dist-renderer/assets/vi-VN-M7AON7JQ-BQ9szPme.js +5 -0
  129. package/dist-renderer/assets/xychartDiagram-e933f94c-7rTYP6vy.js +7 -0
  130. package/dist-renderer/assets/zh-CN-LNUGB5OW-DDjjE3j0.js +10 -0
  131. package/dist-renderer/assets/zh-HK-E62DVLB3-CUaw1jmU.js +1 -0
  132. package/dist-renderer/assets/zh-TW-RAJ6MFWO-BFOuD9P0.js +9 -0
  133. package/dist-renderer/index.html +13 -0
  134. package/package.json +7 -3
  135. package/skills/council-install/SKILL.md +63 -0
@@ -0,0 +1,353 @@
1
+ import { FormData, File } from "./index-zpksia2X.js";
2
+ let s = 0;
3
+ const S = {
4
+ START_BOUNDARY: s++,
5
+ HEADER_FIELD_START: s++,
6
+ HEADER_FIELD: s++,
7
+ HEADER_VALUE_START: s++,
8
+ HEADER_VALUE: s++,
9
+ HEADER_VALUE_ALMOST_DONE: s++,
10
+ HEADERS_ALMOST_DONE: s++,
11
+ PART_DATA_START: s++,
12
+ PART_DATA: s++,
13
+ END: s++
14
+ };
15
+ let f = 1;
16
+ const F = {
17
+ PART_BOUNDARY: f,
18
+ LAST_BOUNDARY: f *= 2
19
+ };
20
+ const LF = 10;
21
+ const CR = 13;
22
+ const SPACE = 32;
23
+ const HYPHEN = 45;
24
+ const COLON = 58;
25
+ const A = 97;
26
+ const Z = 122;
27
+ const lower = (c) => c | 32;
28
+ const noop = () => {
29
+ };
30
+ class MultipartParser {
31
+ /**
32
+ * @param {string} boundary
33
+ */
34
+ constructor(boundary) {
35
+ this.index = 0;
36
+ this.flags = 0;
37
+ this.onHeaderEnd = noop;
38
+ this.onHeaderField = noop;
39
+ this.onHeadersEnd = noop;
40
+ this.onHeaderValue = noop;
41
+ this.onPartBegin = noop;
42
+ this.onPartData = noop;
43
+ this.onPartEnd = noop;
44
+ this.boundaryChars = {};
45
+ boundary = "\r\n--" + boundary;
46
+ const ui8a = new Uint8Array(boundary.length);
47
+ for (let i = 0; i < boundary.length; i++) {
48
+ ui8a[i] = boundary.charCodeAt(i);
49
+ this.boundaryChars[ui8a[i]] = true;
50
+ }
51
+ this.boundary = ui8a;
52
+ this.lookbehind = new Uint8Array(this.boundary.length + 8);
53
+ this.state = S.START_BOUNDARY;
54
+ }
55
+ /**
56
+ * @param {Uint8Array} data
57
+ */
58
+ write(data) {
59
+ let i = 0;
60
+ const length_ = data.length;
61
+ let previousIndex = this.index;
62
+ let { lookbehind, boundary, boundaryChars, index, state, flags } = this;
63
+ const boundaryLength = this.boundary.length;
64
+ const boundaryEnd = boundaryLength - 1;
65
+ const bufferLength = data.length;
66
+ let c;
67
+ let cl;
68
+ const mark = (name) => {
69
+ this[name + "Mark"] = i;
70
+ };
71
+ const clear = (name) => {
72
+ delete this[name + "Mark"];
73
+ };
74
+ const callback = (callbackSymbol, start, end, ui8a) => {
75
+ if (start === void 0 || start !== end) {
76
+ this[callbackSymbol](ui8a && ui8a.subarray(start, end));
77
+ }
78
+ };
79
+ const dataCallback = (name, clear2) => {
80
+ const markSymbol = name + "Mark";
81
+ if (!(markSymbol in this)) {
82
+ return;
83
+ }
84
+ if (clear2) {
85
+ callback(name, this[markSymbol], i, data);
86
+ delete this[markSymbol];
87
+ } else {
88
+ callback(name, this[markSymbol], data.length, data);
89
+ this[markSymbol] = 0;
90
+ }
91
+ };
92
+ for (i = 0; i < length_; i++) {
93
+ c = data[i];
94
+ switch (state) {
95
+ case S.START_BOUNDARY:
96
+ if (index === boundary.length - 2) {
97
+ if (c === HYPHEN) {
98
+ flags |= F.LAST_BOUNDARY;
99
+ } else if (c !== CR) {
100
+ return;
101
+ }
102
+ index++;
103
+ break;
104
+ } else if (index - 1 === boundary.length - 2) {
105
+ if (flags & F.LAST_BOUNDARY && c === HYPHEN) {
106
+ state = S.END;
107
+ flags = 0;
108
+ } else if (!(flags & F.LAST_BOUNDARY) && c === LF) {
109
+ index = 0;
110
+ callback("onPartBegin");
111
+ state = S.HEADER_FIELD_START;
112
+ } else {
113
+ return;
114
+ }
115
+ break;
116
+ }
117
+ if (c !== boundary[index + 2]) {
118
+ index = -2;
119
+ }
120
+ if (c === boundary[index + 2]) {
121
+ index++;
122
+ }
123
+ break;
124
+ case S.HEADER_FIELD_START:
125
+ state = S.HEADER_FIELD;
126
+ mark("onHeaderField");
127
+ index = 0;
128
+ // falls through
129
+ case S.HEADER_FIELD:
130
+ if (c === CR) {
131
+ clear("onHeaderField");
132
+ state = S.HEADERS_ALMOST_DONE;
133
+ break;
134
+ }
135
+ index++;
136
+ if (c === HYPHEN) {
137
+ break;
138
+ }
139
+ if (c === COLON) {
140
+ if (index === 1) {
141
+ return;
142
+ }
143
+ dataCallback("onHeaderField", true);
144
+ state = S.HEADER_VALUE_START;
145
+ break;
146
+ }
147
+ cl = lower(c);
148
+ if (cl < A || cl > Z) {
149
+ return;
150
+ }
151
+ break;
152
+ case S.HEADER_VALUE_START:
153
+ if (c === SPACE) {
154
+ break;
155
+ }
156
+ mark("onHeaderValue");
157
+ state = S.HEADER_VALUE;
158
+ // falls through
159
+ case S.HEADER_VALUE:
160
+ if (c === CR) {
161
+ dataCallback("onHeaderValue", true);
162
+ callback("onHeaderEnd");
163
+ state = S.HEADER_VALUE_ALMOST_DONE;
164
+ }
165
+ break;
166
+ case S.HEADER_VALUE_ALMOST_DONE:
167
+ if (c !== LF) {
168
+ return;
169
+ }
170
+ state = S.HEADER_FIELD_START;
171
+ break;
172
+ case S.HEADERS_ALMOST_DONE:
173
+ if (c !== LF) {
174
+ return;
175
+ }
176
+ callback("onHeadersEnd");
177
+ state = S.PART_DATA_START;
178
+ break;
179
+ case S.PART_DATA_START:
180
+ state = S.PART_DATA;
181
+ mark("onPartData");
182
+ // falls through
183
+ case S.PART_DATA:
184
+ previousIndex = index;
185
+ if (index === 0) {
186
+ i += boundaryEnd;
187
+ while (i < bufferLength && !(data[i] in boundaryChars)) {
188
+ i += boundaryLength;
189
+ }
190
+ i -= boundaryEnd;
191
+ c = data[i];
192
+ }
193
+ if (index < boundary.length) {
194
+ if (boundary[index] === c) {
195
+ if (index === 0) {
196
+ dataCallback("onPartData", true);
197
+ }
198
+ index++;
199
+ } else {
200
+ index = 0;
201
+ }
202
+ } else if (index === boundary.length) {
203
+ index++;
204
+ if (c === CR) {
205
+ flags |= F.PART_BOUNDARY;
206
+ } else if (c === HYPHEN) {
207
+ flags |= F.LAST_BOUNDARY;
208
+ } else {
209
+ index = 0;
210
+ }
211
+ } else if (index - 1 === boundary.length) {
212
+ if (flags & F.PART_BOUNDARY) {
213
+ index = 0;
214
+ if (c === LF) {
215
+ flags &= ~F.PART_BOUNDARY;
216
+ callback("onPartEnd");
217
+ callback("onPartBegin");
218
+ state = S.HEADER_FIELD_START;
219
+ break;
220
+ }
221
+ } else if (flags & F.LAST_BOUNDARY) {
222
+ if (c === HYPHEN) {
223
+ callback("onPartEnd");
224
+ state = S.END;
225
+ flags = 0;
226
+ } else {
227
+ index = 0;
228
+ }
229
+ } else {
230
+ index = 0;
231
+ }
232
+ }
233
+ if (index > 0) {
234
+ lookbehind[index - 1] = c;
235
+ } else if (previousIndex > 0) {
236
+ const _lookbehind = new Uint8Array(lookbehind.buffer, lookbehind.byteOffset, lookbehind.byteLength);
237
+ callback("onPartData", 0, previousIndex, _lookbehind);
238
+ previousIndex = 0;
239
+ mark("onPartData");
240
+ i--;
241
+ }
242
+ break;
243
+ case S.END:
244
+ break;
245
+ default:
246
+ throw new Error(`Unexpected state entered: ${state}`);
247
+ }
248
+ }
249
+ dataCallback("onHeaderField");
250
+ dataCallback("onHeaderValue");
251
+ dataCallback("onPartData");
252
+ this.index = index;
253
+ this.state = state;
254
+ this.flags = flags;
255
+ }
256
+ end() {
257
+ if (this.state === S.HEADER_FIELD_START && this.index === 0 || this.state === S.PART_DATA && this.index === this.boundary.length) {
258
+ this.onPartEnd();
259
+ } else if (this.state !== S.END) {
260
+ throw new Error("MultipartParser.end(): stream ended unexpectedly");
261
+ }
262
+ }
263
+ }
264
+ function _fileName(headerValue) {
265
+ const m = headerValue.match(/\bfilename=("(.*?)"|([^()<>@,;:\\"/[\]?={}\s\t]+))($|;\s)/i);
266
+ if (!m) {
267
+ return;
268
+ }
269
+ const match = m[2] || m[3] || "";
270
+ let filename = match.slice(match.lastIndexOf("\\") + 1);
271
+ filename = filename.replace(/%22/g, '"');
272
+ filename = filename.replace(/&#(\d{4});/g, (m2, code) => {
273
+ return String.fromCharCode(code);
274
+ });
275
+ return filename;
276
+ }
277
+ async function toFormData(Body, ct) {
278
+ if (!/multipart/i.test(ct)) {
279
+ throw new TypeError("Failed to fetch");
280
+ }
281
+ const m = ct.match(/boundary=(?:"([^"]+)"|([^;]+))/i);
282
+ if (!m) {
283
+ throw new TypeError("no or bad content-type header, no multipart boundary");
284
+ }
285
+ const parser = new MultipartParser(m[1] || m[2]);
286
+ let headerField;
287
+ let headerValue;
288
+ let entryValue;
289
+ let entryName;
290
+ let contentType;
291
+ let filename;
292
+ const entryChunks = [];
293
+ const formData = new FormData();
294
+ const onPartData = (ui8a) => {
295
+ entryValue += decoder.decode(ui8a, { stream: true });
296
+ };
297
+ const appendToFile = (ui8a) => {
298
+ entryChunks.push(ui8a);
299
+ };
300
+ const appendFileToFormData = () => {
301
+ const file = new File(entryChunks, filename, { type: contentType });
302
+ formData.append(entryName, file);
303
+ };
304
+ const appendEntryToFormData = () => {
305
+ formData.append(entryName, entryValue);
306
+ };
307
+ const decoder = new TextDecoder("utf-8");
308
+ decoder.decode();
309
+ parser.onPartBegin = function() {
310
+ parser.onPartData = onPartData;
311
+ parser.onPartEnd = appendEntryToFormData;
312
+ headerField = "";
313
+ headerValue = "";
314
+ entryValue = "";
315
+ entryName = "";
316
+ contentType = "";
317
+ filename = null;
318
+ entryChunks.length = 0;
319
+ };
320
+ parser.onHeaderField = function(ui8a) {
321
+ headerField += decoder.decode(ui8a, { stream: true });
322
+ };
323
+ parser.onHeaderValue = function(ui8a) {
324
+ headerValue += decoder.decode(ui8a, { stream: true });
325
+ };
326
+ parser.onHeaderEnd = function() {
327
+ headerValue += decoder.decode();
328
+ headerField = headerField.toLowerCase();
329
+ if (headerField === "content-disposition") {
330
+ const m2 = headerValue.match(/\bname=("([^"]*)"|([^()<>@,;:\\"/[\]?={}\s\t]+))/i);
331
+ if (m2) {
332
+ entryName = m2[2] || m2[3] || "";
333
+ }
334
+ filename = _fileName(headerValue);
335
+ if (filename) {
336
+ parser.onPartData = appendToFile;
337
+ parser.onPartEnd = appendFileToFormData;
338
+ }
339
+ } else if (headerField === "content-type") {
340
+ contentType = headerValue;
341
+ }
342
+ headerValue = "";
343
+ headerField = "";
344
+ };
345
+ for await (const chunk of Body) {
346
+ parser.write(chunk);
347
+ }
348
+ parser.end();
349
+ return formData;
350
+ }
351
+ export {
352
+ toFormData
353
+ };
@@ -0,0 +1,353 @@
1
+ import { FormData, File } from "./index-C03cLUYg.js";
2
+ let s = 0;
3
+ const S = {
4
+ START_BOUNDARY: s++,
5
+ HEADER_FIELD_START: s++,
6
+ HEADER_FIELD: s++,
7
+ HEADER_VALUE_START: s++,
8
+ HEADER_VALUE: s++,
9
+ HEADER_VALUE_ALMOST_DONE: s++,
10
+ HEADERS_ALMOST_DONE: s++,
11
+ PART_DATA_START: s++,
12
+ PART_DATA: s++,
13
+ END: s++
14
+ };
15
+ let f = 1;
16
+ const F = {
17
+ PART_BOUNDARY: f,
18
+ LAST_BOUNDARY: f *= 2
19
+ };
20
+ const LF = 10;
21
+ const CR = 13;
22
+ const SPACE = 32;
23
+ const HYPHEN = 45;
24
+ const COLON = 58;
25
+ const A = 97;
26
+ const Z = 122;
27
+ const lower = (c) => c | 32;
28
+ const noop = () => {
29
+ };
30
+ class MultipartParser {
31
+ /**
32
+ * @param {string} boundary
33
+ */
34
+ constructor(boundary) {
35
+ this.index = 0;
36
+ this.flags = 0;
37
+ this.onHeaderEnd = noop;
38
+ this.onHeaderField = noop;
39
+ this.onHeadersEnd = noop;
40
+ this.onHeaderValue = noop;
41
+ this.onPartBegin = noop;
42
+ this.onPartData = noop;
43
+ this.onPartEnd = noop;
44
+ this.boundaryChars = {};
45
+ boundary = "\r\n--" + boundary;
46
+ const ui8a = new Uint8Array(boundary.length);
47
+ for (let i = 0; i < boundary.length; i++) {
48
+ ui8a[i] = boundary.charCodeAt(i);
49
+ this.boundaryChars[ui8a[i]] = true;
50
+ }
51
+ this.boundary = ui8a;
52
+ this.lookbehind = new Uint8Array(this.boundary.length + 8);
53
+ this.state = S.START_BOUNDARY;
54
+ }
55
+ /**
56
+ * @param {Uint8Array} data
57
+ */
58
+ write(data) {
59
+ let i = 0;
60
+ const length_ = data.length;
61
+ let previousIndex = this.index;
62
+ let { lookbehind, boundary, boundaryChars, index, state, flags } = this;
63
+ const boundaryLength = this.boundary.length;
64
+ const boundaryEnd = boundaryLength - 1;
65
+ const bufferLength = data.length;
66
+ let c;
67
+ let cl;
68
+ const mark = (name) => {
69
+ this[name + "Mark"] = i;
70
+ };
71
+ const clear = (name) => {
72
+ delete this[name + "Mark"];
73
+ };
74
+ const callback = (callbackSymbol, start, end, ui8a) => {
75
+ if (start === void 0 || start !== end) {
76
+ this[callbackSymbol](ui8a && ui8a.subarray(start, end));
77
+ }
78
+ };
79
+ const dataCallback = (name, clear2) => {
80
+ const markSymbol = name + "Mark";
81
+ if (!(markSymbol in this)) {
82
+ return;
83
+ }
84
+ if (clear2) {
85
+ callback(name, this[markSymbol], i, data);
86
+ delete this[markSymbol];
87
+ } else {
88
+ callback(name, this[markSymbol], data.length, data);
89
+ this[markSymbol] = 0;
90
+ }
91
+ };
92
+ for (i = 0; i < length_; i++) {
93
+ c = data[i];
94
+ switch (state) {
95
+ case S.START_BOUNDARY:
96
+ if (index === boundary.length - 2) {
97
+ if (c === HYPHEN) {
98
+ flags |= F.LAST_BOUNDARY;
99
+ } else if (c !== CR) {
100
+ return;
101
+ }
102
+ index++;
103
+ break;
104
+ } else if (index - 1 === boundary.length - 2) {
105
+ if (flags & F.LAST_BOUNDARY && c === HYPHEN) {
106
+ state = S.END;
107
+ flags = 0;
108
+ } else if (!(flags & F.LAST_BOUNDARY) && c === LF) {
109
+ index = 0;
110
+ callback("onPartBegin");
111
+ state = S.HEADER_FIELD_START;
112
+ } else {
113
+ return;
114
+ }
115
+ break;
116
+ }
117
+ if (c !== boundary[index + 2]) {
118
+ index = -2;
119
+ }
120
+ if (c === boundary[index + 2]) {
121
+ index++;
122
+ }
123
+ break;
124
+ case S.HEADER_FIELD_START:
125
+ state = S.HEADER_FIELD;
126
+ mark("onHeaderField");
127
+ index = 0;
128
+ // falls through
129
+ case S.HEADER_FIELD:
130
+ if (c === CR) {
131
+ clear("onHeaderField");
132
+ state = S.HEADERS_ALMOST_DONE;
133
+ break;
134
+ }
135
+ index++;
136
+ if (c === HYPHEN) {
137
+ break;
138
+ }
139
+ if (c === COLON) {
140
+ if (index === 1) {
141
+ return;
142
+ }
143
+ dataCallback("onHeaderField", true);
144
+ state = S.HEADER_VALUE_START;
145
+ break;
146
+ }
147
+ cl = lower(c);
148
+ if (cl < A || cl > Z) {
149
+ return;
150
+ }
151
+ break;
152
+ case S.HEADER_VALUE_START:
153
+ if (c === SPACE) {
154
+ break;
155
+ }
156
+ mark("onHeaderValue");
157
+ state = S.HEADER_VALUE;
158
+ // falls through
159
+ case S.HEADER_VALUE:
160
+ if (c === CR) {
161
+ dataCallback("onHeaderValue", true);
162
+ callback("onHeaderEnd");
163
+ state = S.HEADER_VALUE_ALMOST_DONE;
164
+ }
165
+ break;
166
+ case S.HEADER_VALUE_ALMOST_DONE:
167
+ if (c !== LF) {
168
+ return;
169
+ }
170
+ state = S.HEADER_FIELD_START;
171
+ break;
172
+ case S.HEADERS_ALMOST_DONE:
173
+ if (c !== LF) {
174
+ return;
175
+ }
176
+ callback("onHeadersEnd");
177
+ state = S.PART_DATA_START;
178
+ break;
179
+ case S.PART_DATA_START:
180
+ state = S.PART_DATA;
181
+ mark("onPartData");
182
+ // falls through
183
+ case S.PART_DATA:
184
+ previousIndex = index;
185
+ if (index === 0) {
186
+ i += boundaryEnd;
187
+ while (i < bufferLength && !(data[i] in boundaryChars)) {
188
+ i += boundaryLength;
189
+ }
190
+ i -= boundaryEnd;
191
+ c = data[i];
192
+ }
193
+ if (index < boundary.length) {
194
+ if (boundary[index] === c) {
195
+ if (index === 0) {
196
+ dataCallback("onPartData", true);
197
+ }
198
+ index++;
199
+ } else {
200
+ index = 0;
201
+ }
202
+ } else if (index === boundary.length) {
203
+ index++;
204
+ if (c === CR) {
205
+ flags |= F.PART_BOUNDARY;
206
+ } else if (c === HYPHEN) {
207
+ flags |= F.LAST_BOUNDARY;
208
+ } else {
209
+ index = 0;
210
+ }
211
+ } else if (index - 1 === boundary.length) {
212
+ if (flags & F.PART_BOUNDARY) {
213
+ index = 0;
214
+ if (c === LF) {
215
+ flags &= ~F.PART_BOUNDARY;
216
+ callback("onPartEnd");
217
+ callback("onPartBegin");
218
+ state = S.HEADER_FIELD_START;
219
+ break;
220
+ }
221
+ } else if (flags & F.LAST_BOUNDARY) {
222
+ if (c === HYPHEN) {
223
+ callback("onPartEnd");
224
+ state = S.END;
225
+ flags = 0;
226
+ } else {
227
+ index = 0;
228
+ }
229
+ } else {
230
+ index = 0;
231
+ }
232
+ }
233
+ if (index > 0) {
234
+ lookbehind[index - 1] = c;
235
+ } else if (previousIndex > 0) {
236
+ const _lookbehind = new Uint8Array(lookbehind.buffer, lookbehind.byteOffset, lookbehind.byteLength);
237
+ callback("onPartData", 0, previousIndex, _lookbehind);
238
+ previousIndex = 0;
239
+ mark("onPartData");
240
+ i--;
241
+ }
242
+ break;
243
+ case S.END:
244
+ break;
245
+ default:
246
+ throw new Error(`Unexpected state entered: ${state}`);
247
+ }
248
+ }
249
+ dataCallback("onHeaderField");
250
+ dataCallback("onHeaderValue");
251
+ dataCallback("onPartData");
252
+ this.index = index;
253
+ this.state = state;
254
+ this.flags = flags;
255
+ }
256
+ end() {
257
+ if (this.state === S.HEADER_FIELD_START && this.index === 0 || this.state === S.PART_DATA && this.index === this.boundary.length) {
258
+ this.onPartEnd();
259
+ } else if (this.state !== S.END) {
260
+ throw new Error("MultipartParser.end(): stream ended unexpectedly");
261
+ }
262
+ }
263
+ }
264
+ function _fileName(headerValue) {
265
+ const m = headerValue.match(/\bfilename=("(.*?)"|([^()<>@,;:\\"/[\]?={}\s\t]+))($|;\s)/i);
266
+ if (!m) {
267
+ return;
268
+ }
269
+ const match = m[2] || m[3] || "";
270
+ let filename = match.slice(match.lastIndexOf("\\") + 1);
271
+ filename = filename.replace(/%22/g, '"');
272
+ filename = filename.replace(/&#(\d{4});/g, (m2, code) => {
273
+ return String.fromCharCode(code);
274
+ });
275
+ return filename;
276
+ }
277
+ async function toFormData(Body, ct) {
278
+ if (!/multipart/i.test(ct)) {
279
+ throw new TypeError("Failed to fetch");
280
+ }
281
+ const m = ct.match(/boundary=(?:"([^"]+)"|([^;]+))/i);
282
+ if (!m) {
283
+ throw new TypeError("no or bad content-type header, no multipart boundary");
284
+ }
285
+ const parser = new MultipartParser(m[1] || m[2]);
286
+ let headerField;
287
+ let headerValue;
288
+ let entryValue;
289
+ let entryName;
290
+ let contentType;
291
+ let filename;
292
+ const entryChunks = [];
293
+ const formData = new FormData();
294
+ const onPartData = (ui8a) => {
295
+ entryValue += decoder.decode(ui8a, { stream: true });
296
+ };
297
+ const appendToFile = (ui8a) => {
298
+ entryChunks.push(ui8a);
299
+ };
300
+ const appendFileToFormData = () => {
301
+ const file = new File(entryChunks, filename, { type: contentType });
302
+ formData.append(entryName, file);
303
+ };
304
+ const appendEntryToFormData = () => {
305
+ formData.append(entryName, entryValue);
306
+ };
307
+ const decoder = new TextDecoder("utf-8");
308
+ decoder.decode();
309
+ parser.onPartBegin = function() {
310
+ parser.onPartData = onPartData;
311
+ parser.onPartEnd = appendEntryToFormData;
312
+ headerField = "";
313
+ headerValue = "";
314
+ entryValue = "";
315
+ entryName = "";
316
+ contentType = "";
317
+ filename = null;
318
+ entryChunks.length = 0;
319
+ };
320
+ parser.onHeaderField = function(ui8a) {
321
+ headerField += decoder.decode(ui8a, { stream: true });
322
+ };
323
+ parser.onHeaderValue = function(ui8a) {
324
+ headerValue += decoder.decode(ui8a, { stream: true });
325
+ };
326
+ parser.onHeaderEnd = function() {
327
+ headerValue += decoder.decode();
328
+ headerField = headerField.toLowerCase();
329
+ if (headerField === "content-disposition") {
330
+ const m2 = headerValue.match(/\bname=("([^"]*)"|([^()<>@,;:\\"/[\]?={}\s\t]+))/i);
331
+ if (m2) {
332
+ entryName = m2[2] || m2[3] || "";
333
+ }
334
+ filename = _fileName(headerValue);
335
+ if (filename) {
336
+ parser.onPartData = appendToFile;
337
+ parser.onPartEnd = appendFileToFormData;
338
+ }
339
+ } else if (headerField === "content-type") {
340
+ contentType = headerValue;
341
+ }
342
+ headerValue = "";
343
+ headerField = "";
344
+ };
345
+ for await (const chunk of Body) {
346
+ parser.write(chunk);
347
+ }
348
+ parser.end();
349
+ return formData;
350
+ }
351
+ export {
352
+ toFormData
353
+ };