@statechange/council 0.2.0 → 0.4.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 (141) hide show
  1. package/assets/icon.icns +0 -0
  2. package/assets/icon.png +0 -0
  3. package/assets/logo.png +0 -0
  4. package/dist/cli.js +15 -0
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/gui.d.ts +1 -0
  7. package/dist/commands/gui.js +63 -0
  8. package/dist/commands/gui.js.map +1 -0
  9. package/dist/commands/install.d.ts +5 -0
  10. package/dist/commands/install.js +152 -0
  11. package/dist/commands/install.js.map +1 -0
  12. package/dist/electron/main.js +31 -4
  13. package/dist/electron/main.js.map +1 -1
  14. package/dist-electron/index-B7VRloBj.js +1293 -0
  15. package/dist-electron/index-C03cLUYg.js +5911 -0
  16. package/dist-electron/index-Dw6I25AL.js +5911 -0
  17. package/dist-electron/index-NMn1koXq.js +31737 -0
  18. package/dist-electron/index-zpksia2X.js +5911 -0
  19. package/dist-electron/main-C_og2Wvn.js +32969 -0
  20. package/dist-electron/main-DBohq-SO.js +32969 -0
  21. package/dist-electron/main.js +815 -1218
  22. package/dist-electron/multipart-parser-Bdb1JOpV.js +353 -0
  23. package/dist-electron/multipart-parser-Cc_drctG.js +353 -0
  24. package/dist-electron/multipart-parser-Do9VIIY5.js +353 -0
  25. package/dist-electron/preload.mjs +1 -0
  26. package/dist-renderer/assets/Tableau10-B-NsZVaP.js +1 -0
  27. package/dist-renderer/assets/_commonjs-dynamic-modules-TDtrdbi3.js +1 -0
  28. package/dist-renderer/assets/ar-SA-G6X2FPQ2-BEmsGUDo.js +10 -0
  29. package/dist-renderer/assets/arc-C-3eukZI.js +1 -0
  30. package/dist-renderer/assets/array-BKyUJesY.js +1 -0
  31. package/dist-renderer/assets/az-AZ-76LH7QW2-Bf0F1qpB.js +1 -0
  32. package/dist-renderer/assets/bg-BG-XCXSNQG7-DYOpZlHd.js +5 -0
  33. package/dist-renderer/assets/blockDiagram-38ab4fdb-D9VICLGW.js +118 -0
  34. package/dist-renderer/assets/bn-BD-2XOGV67Q-BjEh0t20.js +5 -0
  35. package/dist-renderer/assets/c4Diagram-3d4e48cf-CZnDXMcn.js +10 -0
  36. package/dist-renderer/assets/ca-ES-6MX7JW3Y-Df__LthM.js +8 -0
  37. package/dist-renderer/assets/channel-BlrodDB2.js +1 -0
  38. package/dist-renderer/assets/classDiagram-70f12bd4-DXF7s66S.js +2 -0
  39. package/dist-renderer/assets/classDiagram-v2-f2320105-Co3T9cX2.js +2 -0
  40. package/dist-renderer/assets/clone-Bajg6GS8.js +1 -0
  41. package/dist-renderer/assets/createText-2e5e7dd3-4yNgbt5z.js +7 -0
  42. package/dist-renderer/assets/cs-CZ-2BRQDIVT-D02tEETl.js +11 -0
  43. package/dist-renderer/assets/da-DK-5WZEPLOC-D0Vxz9Vk.js +5 -0
  44. package/dist-renderer/assets/de-DE-XR44H4JA-COwIKGj-.js +8 -0
  45. package/dist-renderer/assets/directory-open-01563666-DWU9wJ6I.js +1 -0
  46. package/dist-renderer/assets/directory-open-4ed118d0-CunoC1EB.js +1 -0
  47. package/dist-renderer/assets/edges-e0da2a9e-Csy7YN2f.js +4 -0
  48. package/dist-renderer/assets/el-GR-BZB4AONW-iL6-ntEA.js +10 -0
  49. package/dist-renderer/assets/erDiagram-9861fffd-DyRcuDtU.js +51 -0
  50. package/dist-renderer/assets/es-ES-U4NZUMDT-C3_2w4H5.js +9 -0
  51. package/dist-renderer/assets/eu-ES-A7QVB2H4-B68OTfIa.js +11 -0
  52. package/dist-renderer/assets/fa-IR-HGAKTJCU-RH_bUdQt.js +8 -0
  53. package/dist-renderer/assets/fi-FI-Z5N7JZ37-D_8PqlfJ.js +6 -0
  54. package/dist-renderer/assets/file-open-002ab408-DIuFHtCF.js +1 -0
  55. package/dist-renderer/assets/file-open-7c801643-684qeFg4.js +1 -0
  56. package/dist-renderer/assets/file-save-3189631c-C1wFhQhH.js +1 -0
  57. package/dist-renderer/assets/file-save-745eba88-Bb9F9Kg7.js +1 -0
  58. package/dist-renderer/assets/flowDb-956e92f1-Bwg_Bau-.js +10 -0
  59. package/dist-renderer/assets/flowDiagram-66a62f08-Ukgy_1TP.js +4 -0
  60. package/dist-renderer/assets/flowDiagram-v2-96b9c2cf-tYbWRv_s.js +1 -0
  61. package/dist-renderer/assets/flowchart-elk-definition-4a651766-D9wgUOiJ.js +139 -0
  62. package/dist-renderer/assets/fr-FR-RHASNOE6-Dm8QCd71.js +9 -0
  63. package/dist-renderer/assets/ganttDiagram-c361ad54-BLXDD75q.js +257 -0
  64. package/dist-renderer/assets/gitGraphDiagram-72cf32ee-ByHTP6zu.js +70 -0
  65. package/dist-renderer/assets/gl-ES-HMX3MZ6V-DUKlmpw0.js +10 -0
  66. package/dist-renderer/assets/graph-7VOBm4BD.js +1 -0
  67. package/dist-renderer/assets/he-IL-6SHJWFNN-CoS2sda5.js +10 -0
  68. package/dist-renderer/assets/hi-IN-IWLTKZ5I-SFghE6jx.js +4 -0
  69. package/dist-renderer/assets/hu-HU-A5ZG7DT2-BjpWP_uc.js +7 -0
  70. package/dist-renderer/assets/id-ID-SAP4L64H-DiwgVOXB.js +10 -0
  71. package/dist-renderer/assets/image-blob-reduce.esm-BLtmMM_J.js +2 -0
  72. package/dist-renderer/assets/index-3862675e-Cv1-zuCn.js +1 -0
  73. package/dist-renderer/assets/index-BbXXBOD5.js +36 -0
  74. package/dist-renderer/assets/index-DqWupD0e.js +95 -0
  75. package/dist-renderer/assets/index-jTu4f6ys.css +1 -0
  76. package/dist-renderer/assets/infoDiagram-f8f76790-BWmMhC4P.js +7 -0
  77. package/dist-renderer/assets/init-Gi6I4Gst.js +1 -0
  78. package/dist-renderer/assets/it-IT-JPQ66NNP-Ca5US-RN.js +11 -0
  79. package/dist-renderer/assets/ja-JP-DBVTYXUO-BaDej1C9.js +8 -0
  80. package/dist-renderer/assets/journeyDiagram-49397b02-DaPuGc0H.js +139 -0
  81. package/dist-renderer/assets/kaa-6HZHGXH3-DZ1sjUzm.js +1 -0
  82. package/dist-renderer/assets/kab-KAB-ZGHBKWFO-DGQGFUhW.js +8 -0
  83. package/dist-renderer/assets/katex-DhXJpUyf.js +261 -0
  84. package/dist-renderer/assets/kk-KZ-P5N5QNE5-BEZQqWHo.js +1 -0
  85. package/dist-renderer/assets/km-KH-HSX4SM5Z-CO9vn9kN.js +11 -0
  86. package/dist-renderer/assets/ko-KR-MTYHY66A-BBZ7Ud6z.js +9 -0
  87. package/dist-renderer/assets/ku-TR-6OUDTVRD-DKfTGyMV.js +9 -0
  88. package/dist-renderer/assets/layout-mlXn6Ojp.js +1 -0
  89. package/dist-renderer/assets/line-BNQpE2Vh.js +1 -0
  90. package/dist-renderer/assets/linear-D2QI1dee.js +1 -0
  91. package/dist-renderer/assets/lt-LT-XHIRWOB4-BMmpYFGj.js +3 -0
  92. package/dist-renderer/assets/lv-LV-5QDEKY6T-Bfb3if1K.js +7 -0
  93. package/dist-renderer/assets/mindmap-definition-fc14e90a-EDdQyXuv.js +415 -0
  94. package/dist-renderer/assets/mr-IN-CRQNXWMA-BapNRVzr.js +13 -0
  95. package/dist-renderer/assets/my-MM-5M5IBNSE-W9rGsh-o.js +1 -0
  96. package/dist-renderer/assets/nb-NO-T6EIAALU-BZeyzeQ5.js +10 -0
  97. package/dist-renderer/assets/nl-NL-IS3SIHDZ-BIIy5I6E.js +8 -0
  98. package/dist-renderer/assets/nn-NO-6E72VCQL-BSs-SHef.js +8 -0
  99. package/dist-renderer/assets/oc-FR-POXYY2M6-fLrkwS2M.js +8 -0
  100. package/dist-renderer/assets/ordinal-BENe2yWM.js +1 -0
  101. package/dist-renderer/assets/pa-IN-N4M65BXN-lqr6ro4k.js +4 -0
  102. package/dist-renderer/assets/path-CbwjOpE9.js +1 -0
  103. package/dist-renderer/assets/percentages-BXMCSKIN-CcGqwI82.js +199 -0
  104. package/dist-renderer/assets/pica-CsoVhDGL.js +2 -0
  105. package/dist-renderer/assets/pieDiagram-8a3498a8-TG2guad1.js +35 -0
  106. package/dist-renderer/assets/pl-PL-T2D74RX3-CdSVjK8j.js +9 -0
  107. package/dist-renderer/assets/pt-BR-5N22H2LF-CLKJESeE.js +9 -0
  108. package/dist-renderer/assets/pt-PT-UZXXM6DQ-C6P0W49t.js +9 -0
  109. package/dist-renderer/assets/quadrantDiagram-120e2f19-BRoTbIzZ.js +7 -0
  110. package/dist-renderer/assets/requirementDiagram-deff3bca-C3uaot9h.js +52 -0
  111. package/dist-renderer/assets/ro-RO-JPDTUUEW-DriQxnmt.js +11 -0
  112. package/dist-renderer/assets/roundRect-mAH3dD0p.js +1 -0
  113. package/dist-renderer/assets/ru-RU-B4JR7IUQ-CxQ01ey-.js +9 -0
  114. package/dist-renderer/assets/sankeyDiagram-04a897e0-CnvkX9pX.js +8 -0
  115. package/dist-renderer/assets/sequenceDiagram-704730f1-aEouT8p6.js +122 -0
  116. package/dist-renderer/assets/si-LK-N5RQ5JYF-CV8Pu1aJ.js +1 -0
  117. package/dist-renderer/assets/sk-SK-C5VTKIMK-DDgRCRI0.js +6 -0
  118. package/dist-renderer/assets/sl-SI-NN7IZMDC-YDda-RwR.js +6 -0
  119. package/dist-renderer/assets/stateDiagram-587899a1-D6akiRDN.js +1 -0
  120. package/dist-renderer/assets/stateDiagram-v2-d93cdb3a-gvz5zeGn.js +1 -0
  121. package/dist-renderer/assets/styles-6aaf32cf-BcHCt677.js +207 -0
  122. package/dist-renderer/assets/styles-9a916d00-BBaXvwsx.js +160 -0
  123. package/dist-renderer/assets/styles-c10674c1-DqIcUSxt.js +116 -0
  124. package/dist-renderer/assets/subset-shared.chunk-S20joIBg.js +22 -0
  125. package/dist-renderer/assets/subset-worker.chunk-pDuYq8bJ.js +1 -0
  126. package/dist-renderer/assets/sv-SE-XGPEYMSR-Bgr_wBxE.js +10 -0
  127. package/dist-renderer/assets/svgDrawCommon-08f97a94-BubXvRJb.js +1 -0
  128. package/dist-renderer/assets/ta-IN-2NMHFXQM-DMEKGupe.js +9 -0
  129. package/dist-renderer/assets/th-TH-HPSO5L25-Bbz5ouCQ.js +2 -0
  130. package/dist-renderer/assets/timeline-definition-85554ec2-ClLLYM_x.js +61 -0
  131. package/dist-renderer/assets/tr-TR-DEFEU3FU-B208BWXV.js +7 -0
  132. package/dist-renderer/assets/uk-UA-QMV73CPH-B34h_DiI.js +6 -0
  133. package/dist-renderer/assets/vi-VN-M7AON7JQ-BuDqd7xN.js +5 -0
  134. package/dist-renderer/assets/xychartDiagram-e933f94c-B176yJLm.js +7 -0
  135. package/dist-renderer/assets/zh-CN-LNUGB5OW-DXZTQsAk.js +10 -0
  136. package/dist-renderer/assets/zh-HK-E62DVLB3-ho9ioNpE.js +1 -0
  137. package/dist-renderer/assets/zh-TW-RAJ6MFWO-Cjm_oNAG.js +9 -0
  138. package/dist-renderer/icon.png +0 -0
  139. package/dist-renderer/index.html +13 -0
  140. package/package.json +8 -3
  141. 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
+ };