@shopify/cli-kit 3.0.23 → 3.0.26

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 (287) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/assets/auth-error.html +2 -4
  3. package/assets/empty-url.html +2 -4
  4. package/assets/missing-code.html +2 -4
  5. package/assets/missing-state.html +2 -4
  6. package/assets/style.css +5 -8
  7. package/assets/success.html +1 -1
  8. package/dist/abort.d.ts +1 -0
  9. package/dist/abort.js +2 -0
  10. package/dist/abort.js.map +1 -0
  11. package/dist/analytics.d.ts +11 -0
  12. package/dist/analytics.js +96 -0
  13. package/dist/analytics.js.map +1 -0
  14. package/dist/api/admin.d.ts +3 -0
  15. package/dist/api/admin.js +80 -0
  16. package/dist/api/admin.js.map +1 -0
  17. package/dist/api/common.d.ts +11 -0
  18. package/dist/api/common.js +40 -0
  19. package/dist/api/common.js.map +1 -0
  20. package/dist/api/graphql/all_app_extension_registrations.d.ts +14 -0
  21. package/dist/api/graphql/all_app_extension_registrations.js +14 -0
  22. package/dist/api/graphql/all_app_extension_registrations.js.map +1 -0
  23. package/dist/api/graphql/all_orgs.d.ts +12 -0
  24. package/dist/api/graphql/all_orgs.js +14 -0
  25. package/dist/api/graphql/all_orgs.js.map +1 -0
  26. package/dist/api/graphql/all_stores_by_org.d.ts +18 -0
  27. package/dist/api/graphql/all_stores_by_org.js +21 -0
  28. package/dist/api/graphql/all_stores_by_org.js.map +1 -0
  29. package/dist/api/graphql/convert_dev_to_test_store.d.ts +16 -0
  30. package/dist/api/graphql/convert_dev_to_test_store.js +13 -0
  31. package/dist/api/graphql/convert_dev_to_test_store.js.map +1 -0
  32. package/dist/api/graphql/create_app.d.ts +28 -0
  33. package/dist/api/graphql/create_app.js +32 -0
  34. package/dist/api/graphql/create_app.js.map +1 -0
  35. package/dist/api/graphql/create_deployment.d.ts +33 -0
  36. package/dist/api/graphql/create_deployment.js +25 -0
  37. package/dist/api/graphql/create_deployment.js.map +1 -0
  38. package/dist/api/graphql/extension_create.d.ts +30 -0
  39. package/dist/api/graphql/extension_create.js +26 -0
  40. package/dist/api/graphql/extension_create.js.map +1 -0
  41. package/dist/api/graphql/extension_specifications.d.ts +18 -0
  42. package/dist/api/graphql/extension_specifications.js +18 -0
  43. package/dist/api/graphql/extension_specifications.js.map +1 -0
  44. package/dist/api/graphql/find_app.d.ts +13 -0
  45. package/dist/api/graphql/find_app.js +16 -0
  46. package/dist/api/graphql/find_app.js.map +1 -0
  47. package/dist/api/graphql/find_org.d.ts +23 -0
  48. package/dist/api/graphql/find_org.js +26 -0
  49. package/dist/api/graphql/find_org.js.map +1 -0
  50. package/dist/api/graphql/find_org_basic.d.ts +11 -0
  51. package/dist/api/graphql/find_org_basic.js +14 -0
  52. package/dist/api/graphql/find_org_basic.js.map +1 -0
  53. package/dist/api/graphql/functions/app_function_set.d.ts +43 -0
  54. package/dist/api/graphql/functions/app_function_set.js +52 -0
  55. package/dist/api/graphql/functions/app_function_set.js.map +1 -0
  56. package/dist/api/graphql/functions/compile_module.d.ts +15 -0
  57. package/dist/api/graphql/functions/compile_module.js +13 -0
  58. package/dist/api/graphql/functions/compile_module.js.map +1 -0
  59. package/dist/api/graphql/functions/function_service_proxy.d.ts +4 -0
  60. package/dist/api/graphql/functions/function_service_proxy.js +7 -0
  61. package/dist/api/graphql/functions/function_service_proxy.js.map +1 -0
  62. package/dist/api/graphql/functions/get_app_functions.d.ts +1 -0
  63. package/dist/api/graphql/functions/get_app_functions.js +10 -0
  64. package/dist/api/graphql/functions/get_app_functions.js.map +1 -0
  65. package/dist/api/graphql/functions/module_compilation_status.d.ts +15 -0
  66. package/dist/api/graphql/functions/module_compilation_status.js +13 -0
  67. package/dist/api/graphql/functions/module_compilation_status.js.map +1 -0
  68. package/dist/api/graphql/functions/module_upload_url_generate.d.ts +18 -0
  69. package/dist/api/graphql/functions/module_upload_url_generate.js +17 -0
  70. package/dist/api/graphql/functions/module_upload_url_generate.js.map +1 -0
  71. package/dist/api/graphql/generate_signed_upload_url.d.ts +15 -0
  72. package/dist/api/graphql/generate_signed_upload_url.js +15 -0
  73. package/dist/api/graphql/generate_signed_upload_url.js.map +1 -0
  74. package/dist/api/graphql/get_variant_id.d.ts +17 -0
  75. package/dist/api/graphql/get_variant_id.js +20 -0
  76. package/dist/api/graphql/get_variant_id.js.map +1 -0
  77. package/dist/api/graphql/index.d.ts +21 -0
  78. package/dist/api/graphql/index.js +22 -0
  79. package/dist/api/graphql/index.js.map +1 -0
  80. package/dist/api/graphql/update_draft.d.ts +33 -0
  81. package/dist/api/graphql/update_draft.js +24 -0
  82. package/dist/api/graphql/update_draft.js.map +1 -0
  83. package/dist/api/graphql/update_urls.d.ts +14 -0
  84. package/dist/api/graphql/update_urls.js +12 -0
  85. package/dist/api/graphql/update_urls.js.map +1 -0
  86. package/dist/api/identity.d.ts +1 -0
  87. package/dist/api/identity.js +29 -0
  88. package/dist/api/identity.js.map +1 -0
  89. package/dist/api/partners.d.ts +25 -0
  90. package/dist/api/partners.js +100 -0
  91. package/dist/api/partners.js.map +1 -0
  92. package/dist/api.d.ts +5 -0
  93. package/dist/api.js +6 -0
  94. package/dist/api.js.map +1 -0
  95. package/dist/checksum.d.ts +15 -0
  96. package/dist/checksum.js +27 -0
  97. package/dist/checksum.js.map +1 -0
  98. package/dist/cli.d.ts +7 -0
  99. package/dist/cli.js +13 -0
  100. package/dist/cli.js.map +1 -0
  101. package/dist/colors.d.ts +1 -0
  102. package/dist/colors.js +8 -0
  103. package/dist/colors.js.map +1 -0
  104. package/dist/constants.d.ts +43 -0
  105. package/dist/constants.js +63 -0
  106. package/dist/constants.js.map +1 -0
  107. package/dist/dependency.d.ts +128 -0
  108. package/dist/dependency.js +302 -0
  109. package/dist/dependency.js.map +1 -0
  110. package/dist/dot-env.d.ts +28 -0
  111. package/dist/dot-env.js +31 -0
  112. package/dist/dot-env.js.map +1 -0
  113. package/dist/environment/fqdn.d.ts +23 -0
  114. package/dist/environment/fqdn.js +61 -0
  115. package/dist/environment/fqdn.js.map +1 -0
  116. package/dist/environment/local.d.ts +48 -0
  117. package/dist/environment/local.js +82 -0
  118. package/dist/environment/local.js.map +1 -0
  119. package/dist/environment/service.d.ts +17 -0
  120. package/dist/environment/service.js +41 -0
  121. package/dist/environment/service.js.map +1 -0
  122. package/dist/environment/spin.d.ts +47 -0
  123. package/dist/environment/spin.js +83 -0
  124. package/dist/environment/spin.js.map +1 -0
  125. package/dist/environment/utilities.d.ts +6 -0
  126. package/dist/environment/utilities.js +12 -0
  127. package/dist/environment/utilities.js.map +1 -0
  128. package/dist/environment.d.ts +5 -0
  129. package/dist/environment.js +6 -0
  130. package/dist/environment.js.map +1 -0
  131. package/dist/error.d.ts +44 -0
  132. package/dist/error.js +91 -0
  133. package/dist/error.js.map +1 -0
  134. package/dist/file.d.ts +67 -0
  135. package/dist/file.js +165 -0
  136. package/dist/file.js.map +1 -0
  137. package/dist/git.d.ts +15 -0
  138. package/dist/git.js +48 -0
  139. package/dist/git.js.map +1 -0
  140. package/dist/github.d.ts +33 -0
  141. package/dist/github.js +56 -0
  142. package/dist/github.js.map +1 -0
  143. package/dist/haiku.d.ts +1 -0
  144. package/dist/haiku.js +8 -0
  145. package/dist/haiku.js.map +1 -0
  146. package/dist/http/fetch.d.ts +16 -0
  147. package/dist/http/fetch.js +18 -0
  148. package/dist/http/fetch.js.map +1 -0
  149. package/dist/http/formdata.d.ts +3 -0
  150. package/dist/http/formdata.js +6 -0
  151. package/dist/http/formdata.js.map +1 -0
  152. package/dist/http.d.ts +2 -0
  153. package/dist/http.js +3 -0
  154. package/dist/http.js.map +1 -0
  155. package/dist/id.d.ts +6 -0
  156. package/dist/id.js +18 -0
  157. package/dist/id.js.map +1 -0
  158. package/dist/index.d.ts +37 -2115
  159. package/dist/index.js +38 -46
  160. package/dist/index.js.map +1 -1
  161. package/dist/network/api.d.ts +2 -0
  162. package/dist/network/api.js +2 -0
  163. package/dist/network/api.js.map +1 -0
  164. package/dist/network/service.d.ts +16 -0
  165. package/dist/network/service.js +12 -0
  166. package/dist/network/service.js.map +1 -0
  167. package/dist/node/archiver.d.ts +6 -0
  168. package/dist/node/archiver.js +24 -0
  169. package/dist/node/archiver.js.map +1 -0
  170. package/dist/node/cli.d.ts +18 -0
  171. package/dist/node/cli.js +91 -0
  172. package/dist/node/cli.js.map +1 -0
  173. package/dist/npm.d.ts +27 -0
  174. package/dist/npm.js +20 -0
  175. package/dist/npm.js.map +1 -0
  176. package/dist/os.d.ts +10 -0
  177. package/dist/os.js +70 -0
  178. package/dist/os.js.map +1 -0
  179. package/dist/output.d.ts +142 -0
  180. package/dist/output.js +505 -0
  181. package/dist/output.js.map +1 -0
  182. package/dist/path.d.ts +22 -0
  183. package/dist/path.js +43 -0
  184. package/dist/path.js.map +1 -0
  185. package/dist/plugins.d.ts +9 -0
  186. package/dist/plugins.js +12 -0
  187. package/dist/plugins.js.map +1 -0
  188. package/dist/port.d.ts +5 -0
  189. package/dist/port.js +13 -0
  190. package/dist/port.js.map +1 -0
  191. package/dist/ruby.d.ts +21 -0
  192. package/dist/ruby.js +192 -0
  193. package/dist/ruby.js.map +1 -0
  194. package/dist/schema.d.ts +1 -0
  195. package/dist/schema.js +2 -0
  196. package/dist/schema.js.map +1 -0
  197. package/dist/secure-store.d.ts +19 -0
  198. package/dist/secure-store.js +63 -0
  199. package/dist/secure-store.js.map +1 -0
  200. package/dist/semver.d.ts +3 -0
  201. package/dist/semver.js +6 -0
  202. package/dist/semver.js.map +1 -0
  203. package/dist/session/authorize.d.ts +7 -0
  204. package/dist/session/authorize.js +40 -0
  205. package/dist/session/authorize.js.map +1 -0
  206. package/dist/session/exchange.d.ts +42 -0
  207. package/dist/session/exchange.js +144 -0
  208. package/dist/session/exchange.js.map +1 -0
  209. package/dist/session/identity.d.ts +3 -0
  210. package/dist/session/identity.js +58 -0
  211. package/dist/session/identity.js.map +1 -0
  212. package/dist/session/post-auth.d.ts +13 -0
  213. package/dist/session/post-auth.js +56 -0
  214. package/dist/session/post-auth.js.map +1 -0
  215. package/dist/session/redirect-listener.d.ts +34 -0
  216. package/dist/session/redirect-listener.js +97 -0
  217. package/dist/session/redirect-listener.js.map +1 -0
  218. package/dist/session/schema.d.ts +174 -0
  219. package/dist/session/schema.js +59 -0
  220. package/dist/session/schema.js.map +1 -0
  221. package/dist/session/scopes.d.ts +16 -0
  222. package/dist/session/scopes.js +53 -0
  223. package/dist/session/scopes.js.map +1 -0
  224. package/dist/session/store.d.ts +24 -0
  225. package/dist/session/store.js +88 -0
  226. package/dist/session/store.js.map +1 -0
  227. package/dist/session/token.d.ts +40 -0
  228. package/dist/session/token.js +22 -0
  229. package/dist/session/token.js.map +1 -0
  230. package/dist/session/validate.d.ts +17 -0
  231. package/dist/session/validate.js +75 -0
  232. package/dist/session/validate.js.map +1 -0
  233. package/dist/session.d.ts +88 -0
  234. package/dist/session.js +251 -0
  235. package/dist/session.js.map +1 -0
  236. package/dist/store/schema.d.ts +3 -0
  237. package/dist/store/schema.js +27 -0
  238. package/dist/store/schema.js.map +1 -0
  239. package/dist/store.d.ts +32 -0
  240. package/dist/store.js +102 -0
  241. package/dist/store.js.map +1 -0
  242. package/dist/string.d.ts +22 -0
  243. package/dist/string.js +38 -0
  244. package/dist/string.js.map +1 -0
  245. package/dist/system.d.ts +53 -0
  246. package/dist/system.js +109 -0
  247. package/dist/system.js.map +1 -0
  248. package/dist/template.d.ts +11 -0
  249. package/dist/template.js +50 -0
  250. package/dist/template.js.map +1 -0
  251. package/dist/testing/output.d.ts +9 -0
  252. package/dist/testing/output.js +15 -0
  253. package/dist/testing/output.js.map +1 -0
  254. package/dist/testing/store.d.ts +7 -0
  255. package/dist/testing/store.js +26 -0
  256. package/dist/testing/store.js.map +1 -0
  257. package/dist/toml.d.ts +3 -0
  258. package/dist/toml.js +8 -0
  259. package/dist/toml.js.map +1 -0
  260. package/dist/tsconfig.tsbuildinfo +1 -0
  261. package/dist/ui/autocomplete.d.ts +7 -0
  262. package/dist/ui/autocomplete.js +43 -0
  263. package/dist/ui/autocomplete.js.map +1 -0
  264. package/dist/ui/input.d.ts +7 -0
  265. package/dist/ui/input.js +48 -0
  266. package/dist/ui/input.js.map +1 -0
  267. package/dist/ui/select.d.ts +6 -0
  268. package/dist/ui/select.js +30 -0
  269. package/dist/ui/select.js.map +1 -0
  270. package/dist/ui.d.ts +36 -0
  271. package/dist/ui.js +124 -0
  272. package/dist/ui.js.map +1 -0
  273. package/dist/version.d.ts +19 -0
  274. package/dist/version.js +34 -0
  275. package/dist/version.js.map +1 -0
  276. package/dist/vscode.d.ts +8 -0
  277. package/dist/vscode.js +36 -0
  278. package/dist/vscode.js.map +1 -0
  279. package/dist/yaml.d.ts +2 -0
  280. package/dist/yaml.js +8 -0
  281. package/dist/yaml.js.map +1 -0
  282. package/package.json +32 -21
  283. package/dist/index-160b2bd2.js +0 -175294
  284. package/dist/index-160b2bd2.js.map +0 -1
  285. package/dist/index.d.ts.map +0 -1
  286. package/dist/multipart-parser-7ce1f707.js +0 -477
  287. package/dist/multipart-parser-7ce1f707.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,477 +0,0 @@
1
- import 'node:fs';
2
- import 'node:path';
3
- import { F as FormData, a as File } from './index-160b2bd2.js';
4
- import 'path';
5
- import 'url';
6
- import 'node:url';
7
- import 'node:process';
8
- import 'os';
9
- import 'util';
10
- import 'stream';
11
- import 'fs';
12
- import 'events';
13
- import 'node:os';
14
- import '@oclif/core';
15
- import 'source-map-support';
16
- import 'constants';
17
- import 'assert';
18
- import 'node:stream';
19
- import 'node:util';
20
- import 'crypto';
21
- import 'prettier';
22
- import 'tty';
23
- import 'stacktracey';
24
- import 'node:buffer';
25
- import 'node:child_process';
26
- import 'child_process';
27
- import 'buffer';
28
- import 'node:http';
29
- import 'node:https';
30
- import 'node:zlib';
31
- import 'node:net';
32
- import 'http';
33
- import 'https';
34
- import 'readline';
35
- import 'inquirer';
36
- import 'dns';
37
- import 'zlib';
38
- import 'http2';
39
- import 'tls';
40
- import 'net';
41
- import 'punycode';
42
- import 'envfile';
43
- import 'fastify';
44
- import 'module';
45
-
46
- let s = 0;
47
- const S = {
48
- START_BOUNDARY: s++,
49
- HEADER_FIELD_START: s++,
50
- HEADER_FIELD: s++,
51
- HEADER_VALUE_START: s++,
52
- HEADER_VALUE: s++,
53
- HEADER_VALUE_ALMOST_DONE: s++,
54
- HEADERS_ALMOST_DONE: s++,
55
- PART_DATA_START: s++,
56
- PART_DATA: s++,
57
- END: s++
58
- };
59
-
60
- let f = 1;
61
- const F = {
62
- PART_BOUNDARY: f,
63
- LAST_BOUNDARY: f *= 2
64
- };
65
-
66
- const LF = 10;
67
- const CR = 13;
68
- const SPACE = 32;
69
- const HYPHEN = 45;
70
- const COLON = 58;
71
- const A = 97;
72
- const Z = 122;
73
-
74
- const lower = c => c | 0x20;
75
-
76
- const noop = () => {};
77
-
78
- class MultipartParser {
79
- /**
80
- * @param {string} boundary
81
- */
82
- constructor(boundary) {
83
- this.index = 0;
84
- this.flags = 0;
85
-
86
- this.onHeaderEnd = noop;
87
- this.onHeaderField = noop;
88
- this.onHeadersEnd = noop;
89
- this.onHeaderValue = noop;
90
- this.onPartBegin = noop;
91
- this.onPartData = noop;
92
- this.onPartEnd = noop;
93
-
94
- this.boundaryChars = {};
95
-
96
- boundary = '\r\n--' + boundary;
97
- const ui8a = new Uint8Array(boundary.length);
98
- for (let i = 0; i < boundary.length; i++) {
99
- ui8a[i] = boundary.charCodeAt(i);
100
- this.boundaryChars[ui8a[i]] = true;
101
- }
102
-
103
- this.boundary = ui8a;
104
- this.lookbehind = new Uint8Array(this.boundary.length + 8);
105
- this.state = S.START_BOUNDARY;
106
- }
107
-
108
- /**
109
- * @param {Uint8Array} data
110
- */
111
- write(data) {
112
- let i = 0;
113
- const length_ = data.length;
114
- let previousIndex = this.index;
115
- let {lookbehind, boundary, boundaryChars, index, state, flags} = this;
116
- const boundaryLength = this.boundary.length;
117
- const boundaryEnd = boundaryLength - 1;
118
- const bufferLength = data.length;
119
- let c;
120
- let cl;
121
-
122
- const mark = name => {
123
- this[name + 'Mark'] = i;
124
- };
125
-
126
- const clear = name => {
127
- delete this[name + 'Mark'];
128
- };
129
-
130
- const callback = (callbackSymbol, start, end, ui8a) => {
131
- if (start === undefined || start !== end) {
132
- this[callbackSymbol](ui8a && ui8a.subarray(start, end));
133
- }
134
- };
135
-
136
- const dataCallback = (name, clear) => {
137
- const markSymbol = name + 'Mark';
138
- if (!(markSymbol in this)) {
139
- return;
140
- }
141
-
142
- if (clear) {
143
- callback(name, this[markSymbol], i, data);
144
- delete this[markSymbol];
145
- } else {
146
- callback(name, this[markSymbol], data.length, data);
147
- this[markSymbol] = 0;
148
- }
149
- };
150
-
151
- for (i = 0; i < length_; i++) {
152
- c = data[i];
153
-
154
- switch (state) {
155
- case S.START_BOUNDARY:
156
- if (index === boundary.length - 2) {
157
- if (c === HYPHEN) {
158
- flags |= F.LAST_BOUNDARY;
159
- } else if (c !== CR) {
160
- return;
161
- }
162
-
163
- index++;
164
- break;
165
- } else if (index - 1 === boundary.length - 2) {
166
- if (flags & F.LAST_BOUNDARY && c === HYPHEN) {
167
- state = S.END;
168
- flags = 0;
169
- } else if (!(flags & F.LAST_BOUNDARY) && c === LF) {
170
- index = 0;
171
- callback('onPartBegin');
172
- state = S.HEADER_FIELD_START;
173
- } else {
174
- return;
175
- }
176
-
177
- break;
178
- }
179
-
180
- if (c !== boundary[index + 2]) {
181
- index = -2;
182
- }
183
-
184
- if (c === boundary[index + 2]) {
185
- index++;
186
- }
187
-
188
- break;
189
- case S.HEADER_FIELD_START:
190
- state = S.HEADER_FIELD;
191
- mark('onHeaderField');
192
- index = 0;
193
- // falls through
194
- case S.HEADER_FIELD:
195
- if (c === CR) {
196
- clear('onHeaderField');
197
- state = S.HEADERS_ALMOST_DONE;
198
- break;
199
- }
200
-
201
- index++;
202
- if (c === HYPHEN) {
203
- break;
204
- }
205
-
206
- if (c === COLON) {
207
- if (index === 1) {
208
- // empty header field
209
- return;
210
- }
211
-
212
- dataCallback('onHeaderField', true);
213
- state = S.HEADER_VALUE_START;
214
- break;
215
- }
216
-
217
- cl = lower(c);
218
- if (cl < A || cl > Z) {
219
- return;
220
- }
221
-
222
- break;
223
- case S.HEADER_VALUE_START:
224
- if (c === SPACE) {
225
- break;
226
- }
227
-
228
- mark('onHeaderValue');
229
- state = S.HEADER_VALUE;
230
- // falls through
231
- case S.HEADER_VALUE:
232
- if (c === CR) {
233
- dataCallback('onHeaderValue', true);
234
- callback('onHeaderEnd');
235
- state = S.HEADER_VALUE_ALMOST_DONE;
236
- }
237
-
238
- break;
239
- case S.HEADER_VALUE_ALMOST_DONE:
240
- if (c !== LF) {
241
- return;
242
- }
243
-
244
- state = S.HEADER_FIELD_START;
245
- break;
246
- case S.HEADERS_ALMOST_DONE:
247
- if (c !== LF) {
248
- return;
249
- }
250
-
251
- callback('onHeadersEnd');
252
- state = S.PART_DATA_START;
253
- break;
254
- case S.PART_DATA_START:
255
- state = S.PART_DATA;
256
- mark('onPartData');
257
- // falls through
258
- case S.PART_DATA:
259
- previousIndex = index;
260
-
261
- if (index === 0) {
262
- // boyer-moore derrived algorithm to safely skip non-boundary data
263
- i += boundaryEnd;
264
- while (i < bufferLength && !(data[i] in boundaryChars)) {
265
- i += boundaryLength;
266
- }
267
-
268
- i -= boundaryEnd;
269
- c = data[i];
270
- }
271
-
272
- if (index < boundary.length) {
273
- if (boundary[index] === c) {
274
- if (index === 0) {
275
- dataCallback('onPartData', true);
276
- }
277
-
278
- index++;
279
- } else {
280
- index = 0;
281
- }
282
- } else if (index === boundary.length) {
283
- index++;
284
- if (c === CR) {
285
- // CR = part boundary
286
- flags |= F.PART_BOUNDARY;
287
- } else if (c === HYPHEN) {
288
- // HYPHEN = end boundary
289
- flags |= F.LAST_BOUNDARY;
290
- } else {
291
- index = 0;
292
- }
293
- } else if (index - 1 === boundary.length) {
294
- if (flags & F.PART_BOUNDARY) {
295
- index = 0;
296
- if (c === LF) {
297
- // unset the PART_BOUNDARY flag
298
- flags &= ~F.PART_BOUNDARY;
299
- callback('onPartEnd');
300
- callback('onPartBegin');
301
- state = S.HEADER_FIELD_START;
302
- break;
303
- }
304
- } else if (flags & F.LAST_BOUNDARY) {
305
- if (c === HYPHEN) {
306
- callback('onPartEnd');
307
- state = S.END;
308
- flags = 0;
309
- } else {
310
- index = 0;
311
- }
312
- } else {
313
- index = 0;
314
- }
315
- }
316
-
317
- if (index > 0) {
318
- // when matching a possible boundary, keep a lookbehind reference
319
- // in case it turns out to be a false lead
320
- lookbehind[index - 1] = c;
321
- } else if (previousIndex > 0) {
322
- // if our boundary turned out to be rubbish, the captured lookbehind
323
- // belongs to partData
324
- const _lookbehind = new Uint8Array(lookbehind.buffer, lookbehind.byteOffset, lookbehind.byteLength);
325
- callback('onPartData', 0, previousIndex, _lookbehind);
326
- previousIndex = 0;
327
- mark('onPartData');
328
-
329
- // reconsider the current character even so it interrupted the sequence
330
- // it could be the beginning of a new sequence
331
- i--;
332
- }
333
-
334
- break;
335
- case S.END:
336
- break;
337
- default:
338
- throw new Error(`Unexpected state entered: ${state}`);
339
- }
340
- }
341
-
342
- dataCallback('onHeaderField');
343
- dataCallback('onHeaderValue');
344
- dataCallback('onPartData');
345
-
346
- // Update properties for the next call
347
- this.index = index;
348
- this.state = state;
349
- this.flags = flags;
350
- }
351
-
352
- end() {
353
- if ((this.state === S.HEADER_FIELD_START && this.index === 0) ||
354
- (this.state === S.PART_DATA && this.index === this.boundary.length)) {
355
- this.onPartEnd();
356
- } else if (this.state !== S.END) {
357
- throw new Error('MultipartParser.end(): stream ended unexpectedly');
358
- }
359
- }
360
- }
361
-
362
- function _fileName(headerValue) {
363
- // matches either a quoted-string or a token (RFC 2616 section 19.5.1)
364
- const m = headerValue.match(/\bfilename=("(.*?)"|([^()<>@,;:\\"/[\]?={}\s\t]+))($|;\s)/i);
365
- if (!m) {
366
- return;
367
- }
368
-
369
- const match = m[2] || m[3] || '';
370
- let filename = match.slice(match.lastIndexOf('\\') + 1);
371
- filename = filename.replace(/%22/g, '"');
372
- filename = filename.replace(/&#(\d{4});/g, (m, code) => {
373
- return String.fromCharCode(code);
374
- });
375
- return filename;
376
- }
377
-
378
- async function toFormData(Body, ct) {
379
- if (!/multipart/i.test(ct)) {
380
- throw new TypeError('Failed to fetch');
381
- }
382
-
383
- const m = ct.match(/boundary=(?:"([^"]+)"|([^;]+))/i);
384
-
385
- if (!m) {
386
- throw new TypeError('no or bad content-type header, no multipart boundary');
387
- }
388
-
389
- const parser = new MultipartParser(m[1] || m[2]);
390
-
391
- let headerField;
392
- let headerValue;
393
- let entryValue;
394
- let entryName;
395
- let contentType;
396
- let filename;
397
- const entryChunks = [];
398
- const formData = new FormData();
399
-
400
- const onPartData = ui8a => {
401
- entryValue += decoder.decode(ui8a, {stream: true});
402
- };
403
-
404
- const appendToFile = ui8a => {
405
- entryChunks.push(ui8a);
406
- };
407
-
408
- const appendFileToFormData = () => {
409
- const file = new File(entryChunks, filename, {type: contentType});
410
- formData.append(entryName, file);
411
- };
412
-
413
- const appendEntryToFormData = () => {
414
- formData.append(entryName, entryValue);
415
- };
416
-
417
- const decoder = new TextDecoder('utf-8');
418
- decoder.decode();
419
-
420
- parser.onPartBegin = function () {
421
- parser.onPartData = onPartData;
422
- parser.onPartEnd = appendEntryToFormData;
423
-
424
- headerField = '';
425
- headerValue = '';
426
- entryValue = '';
427
- entryName = '';
428
- contentType = '';
429
- filename = null;
430
- entryChunks.length = 0;
431
- };
432
-
433
- parser.onHeaderField = function (ui8a) {
434
- headerField += decoder.decode(ui8a, {stream: true});
435
- };
436
-
437
- parser.onHeaderValue = function (ui8a) {
438
- headerValue += decoder.decode(ui8a, {stream: true});
439
- };
440
-
441
- parser.onHeaderEnd = function () {
442
- headerValue += decoder.decode();
443
- headerField = headerField.toLowerCase();
444
-
445
- if (headerField === 'content-disposition') {
446
- // matches either a quoted-string or a token (RFC 2616 section 19.5.1)
447
- const m = headerValue.match(/\bname=("([^"]*)"|([^()<>@,;:\\"/[\]?={}\s\t]+))/i);
448
-
449
- if (m) {
450
- entryName = m[2] || m[3] || '';
451
- }
452
-
453
- filename = _fileName(headerValue);
454
-
455
- if (filename) {
456
- parser.onPartData = appendToFile;
457
- parser.onPartEnd = appendFileToFormData;
458
- }
459
- } else if (headerField === 'content-type') {
460
- contentType = headerValue;
461
- }
462
-
463
- headerValue = '';
464
- headerField = '';
465
- };
466
-
467
- for await (const chunk of Body) {
468
- parser.write(chunk);
469
- }
470
-
471
- parser.end();
472
-
473
- return formData;
474
- }
475
-
476
- export { toFormData };
477
- //# sourceMappingURL=multipart-parser-7ce1f707.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"multipart-parser-7ce1f707.js","sources":["../node_modules/node-fetch/src/utils/multipart-parser.js"],"sourcesContent":["import {File} from 'fetch-blob/from.js';\nimport {FormData} from 'formdata-polyfill/esm.min.js';\n\nlet s = 0;\nconst S = {\n\tSTART_BOUNDARY: s++,\n\tHEADER_FIELD_START: s++,\n\tHEADER_FIELD: s++,\n\tHEADER_VALUE_START: s++,\n\tHEADER_VALUE: s++,\n\tHEADER_VALUE_ALMOST_DONE: s++,\n\tHEADERS_ALMOST_DONE: s++,\n\tPART_DATA_START: s++,\n\tPART_DATA: s++,\n\tEND: s++\n};\n\nlet f = 1;\nconst F = {\n\tPART_BOUNDARY: f,\n\tLAST_BOUNDARY: f *= 2\n};\n\nconst LF = 10;\nconst CR = 13;\nconst SPACE = 32;\nconst HYPHEN = 45;\nconst COLON = 58;\nconst A = 97;\nconst Z = 122;\n\nconst lower = c => c | 0x20;\n\nconst noop = () => {};\n\nclass MultipartParser {\n\t/**\n\t * @param {string} boundary\n\t */\n\tconstructor(boundary) {\n\t\tthis.index = 0;\n\t\tthis.flags = 0;\n\n\t\tthis.onHeaderEnd = noop;\n\t\tthis.onHeaderField = noop;\n\t\tthis.onHeadersEnd = noop;\n\t\tthis.onHeaderValue = noop;\n\t\tthis.onPartBegin = noop;\n\t\tthis.onPartData = noop;\n\t\tthis.onPartEnd = noop;\n\n\t\tthis.boundaryChars = {};\n\n\t\tboundary = '\\r\\n--' + boundary;\n\t\tconst ui8a = new Uint8Array(boundary.length);\n\t\tfor (let i = 0; i < boundary.length; i++) {\n\t\t\tui8a[i] = boundary.charCodeAt(i);\n\t\t\tthis.boundaryChars[ui8a[i]] = true;\n\t\t}\n\n\t\tthis.boundary = ui8a;\n\t\tthis.lookbehind = new Uint8Array(this.boundary.length + 8);\n\t\tthis.state = S.START_BOUNDARY;\n\t}\n\n\t/**\n\t * @param {Uint8Array} data\n\t */\n\twrite(data) {\n\t\tlet i = 0;\n\t\tconst length_ = data.length;\n\t\tlet previousIndex = this.index;\n\t\tlet {lookbehind, boundary, boundaryChars, index, state, flags} = this;\n\t\tconst boundaryLength = this.boundary.length;\n\t\tconst boundaryEnd = boundaryLength - 1;\n\t\tconst bufferLength = data.length;\n\t\tlet c;\n\t\tlet cl;\n\n\t\tconst mark = name => {\n\t\t\tthis[name + 'Mark'] = i;\n\t\t};\n\n\t\tconst clear = name => {\n\t\t\tdelete this[name + 'Mark'];\n\t\t};\n\n\t\tconst callback = (callbackSymbol, start, end, ui8a) => {\n\t\t\tif (start === undefined || start !== end) {\n\t\t\t\tthis[callbackSymbol](ui8a && ui8a.subarray(start, end));\n\t\t\t}\n\t\t};\n\n\t\tconst dataCallback = (name, clear) => {\n\t\t\tconst markSymbol = name + 'Mark';\n\t\t\tif (!(markSymbol in this)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (clear) {\n\t\t\t\tcallback(name, this[markSymbol], i, data);\n\t\t\t\tdelete this[markSymbol];\n\t\t\t} else {\n\t\t\t\tcallback(name, this[markSymbol], data.length, data);\n\t\t\t\tthis[markSymbol] = 0;\n\t\t\t}\n\t\t};\n\n\t\tfor (i = 0; i < length_; i++) {\n\t\t\tc = data[i];\n\n\t\t\tswitch (state) {\n\t\t\t\tcase S.START_BOUNDARY:\n\t\t\t\t\tif (index === boundary.length - 2) {\n\t\t\t\t\t\tif (c === HYPHEN) {\n\t\t\t\t\t\t\tflags |= F.LAST_BOUNDARY;\n\t\t\t\t\t\t} else if (c !== CR) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (index - 1 === boundary.length - 2) {\n\t\t\t\t\t\tif (flags & F.LAST_BOUNDARY && c === HYPHEN) {\n\t\t\t\t\t\t\tstate = S.END;\n\t\t\t\t\t\t\tflags = 0;\n\t\t\t\t\t\t} else if (!(flags & F.LAST_BOUNDARY) && c === LF) {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t\tcallback('onPartBegin');\n\t\t\t\t\t\t\tstate = S.HEADER_FIELD_START;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (c !== boundary[index + 2]) {\n\t\t\t\t\t\tindex = -2;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (c === boundary[index + 2]) {\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.HEADER_FIELD_START:\n\t\t\t\t\tstate = S.HEADER_FIELD;\n\t\t\t\t\tmark('onHeaderField');\n\t\t\t\t\tindex = 0;\n\t\t\t\t\t// falls through\n\t\t\t\tcase S.HEADER_FIELD:\n\t\t\t\t\tif (c === CR) {\n\t\t\t\t\t\tclear('onHeaderField');\n\t\t\t\t\t\tstate = S.HEADERS_ALMOST_DONE;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tindex++;\n\t\t\t\t\tif (c === HYPHEN) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (c === COLON) {\n\t\t\t\t\t\tif (index === 1) {\n\t\t\t\t\t\t\t// empty header field\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdataCallback('onHeaderField', true);\n\t\t\t\t\t\tstate = S.HEADER_VALUE_START;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcl = lower(c);\n\t\t\t\t\tif (cl < A || cl > Z) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.HEADER_VALUE_START:\n\t\t\t\t\tif (c === SPACE) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tmark('onHeaderValue');\n\t\t\t\t\tstate = S.HEADER_VALUE;\n\t\t\t\t\t// falls through\n\t\t\t\tcase S.HEADER_VALUE:\n\t\t\t\t\tif (c === CR) {\n\t\t\t\t\t\tdataCallback('onHeaderValue', true);\n\t\t\t\t\t\tcallback('onHeaderEnd');\n\t\t\t\t\t\tstate = S.HEADER_VALUE_ALMOST_DONE;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.HEADER_VALUE_ALMOST_DONE:\n\t\t\t\t\tif (c !== LF) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tstate = S.HEADER_FIELD_START;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.HEADERS_ALMOST_DONE:\n\t\t\t\t\tif (c !== LF) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback('onHeadersEnd');\n\t\t\t\t\tstate = S.PART_DATA_START;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.PART_DATA_START:\n\t\t\t\t\tstate = S.PART_DATA;\n\t\t\t\t\tmark('onPartData');\n\t\t\t\t\t// falls through\n\t\t\t\tcase S.PART_DATA:\n\t\t\t\t\tpreviousIndex = index;\n\n\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\t// boyer-moore derrived algorithm to safely skip non-boundary data\n\t\t\t\t\t\ti += boundaryEnd;\n\t\t\t\t\t\twhile (i < bufferLength && !(data[i] in boundaryChars)) {\n\t\t\t\t\t\t\ti += boundaryLength;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ti -= boundaryEnd;\n\t\t\t\t\t\tc = data[i];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (index < boundary.length) {\n\t\t\t\t\t\tif (boundary[index] === c) {\n\t\t\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\t\t\tdataCallback('onPartData', true);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (index === boundary.length) {\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t\tif (c === CR) {\n\t\t\t\t\t\t\t// CR = part boundary\n\t\t\t\t\t\t\tflags |= F.PART_BOUNDARY;\n\t\t\t\t\t\t} else if (c === HYPHEN) {\n\t\t\t\t\t\t\t// HYPHEN = end boundary\n\t\t\t\t\t\t\tflags |= F.LAST_BOUNDARY;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (index - 1 === boundary.length) {\n\t\t\t\t\t\tif (flags & F.PART_BOUNDARY) {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t\tif (c === LF) {\n\t\t\t\t\t\t\t\t// unset the PART_BOUNDARY flag\n\t\t\t\t\t\t\t\tflags &= ~F.PART_BOUNDARY;\n\t\t\t\t\t\t\t\tcallback('onPartEnd');\n\t\t\t\t\t\t\t\tcallback('onPartBegin');\n\t\t\t\t\t\t\t\tstate = S.HEADER_FIELD_START;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (flags & F.LAST_BOUNDARY) {\n\t\t\t\t\t\t\tif (c === HYPHEN) {\n\t\t\t\t\t\t\t\tcallback('onPartEnd');\n\t\t\t\t\t\t\t\tstate = S.END;\n\t\t\t\t\t\t\t\tflags = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (index > 0) {\n\t\t\t\t\t\t// when matching a possible boundary, keep a lookbehind reference\n\t\t\t\t\t\t// in case it turns out to be a false lead\n\t\t\t\t\t\tlookbehind[index - 1] = c;\n\t\t\t\t\t} else if (previousIndex > 0) {\n\t\t\t\t\t\t// if our boundary turned out to be rubbish, the captured lookbehind\n\t\t\t\t\t\t// belongs to partData\n\t\t\t\t\t\tconst _lookbehind = new Uint8Array(lookbehind.buffer, lookbehind.byteOffset, lookbehind.byteLength);\n\t\t\t\t\t\tcallback('onPartData', 0, previousIndex, _lookbehind);\n\t\t\t\t\t\tpreviousIndex = 0;\n\t\t\t\t\t\tmark('onPartData');\n\n\t\t\t\t\t\t// reconsider the current character even so it interrupted the sequence\n\t\t\t\t\t\t// it could be the beginning of a new sequence\n\t\t\t\t\t\ti--;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.END:\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(`Unexpected state entered: ${state}`);\n\t\t\t}\n\t\t}\n\n\t\tdataCallback('onHeaderField');\n\t\tdataCallback('onHeaderValue');\n\t\tdataCallback('onPartData');\n\n\t\t// Update properties for the next call\n\t\tthis.index = index;\n\t\tthis.state = state;\n\t\tthis.flags = flags;\n\t}\n\n\tend() {\n\t\tif ((this.state === S.HEADER_FIELD_START && this.index === 0) ||\n\t\t\t(this.state === S.PART_DATA && this.index === this.boundary.length)) {\n\t\t\tthis.onPartEnd();\n\t\t} else if (this.state !== S.END) {\n\t\t\tthrow new Error('MultipartParser.end(): stream ended unexpectedly');\n\t\t}\n\t}\n}\n\nfunction _fileName(headerValue) {\n\t// matches either a quoted-string or a token (RFC 2616 section 19.5.1)\n\tconst m = headerValue.match(/\\bfilename=(\"(.*?)\"|([^()<>@,;:\\\\\"/[\\]?={}\\s\\t]+))($|;\\s)/i);\n\tif (!m) {\n\t\treturn;\n\t}\n\n\tconst match = m[2] || m[3] || '';\n\tlet filename = match.slice(match.lastIndexOf('\\\\') + 1);\n\tfilename = filename.replace(/%22/g, '\"');\n\tfilename = filename.replace(/&#(\\d{4});/g, (m, code) => {\n\t\treturn String.fromCharCode(code);\n\t});\n\treturn filename;\n}\n\nexport async function toFormData(Body, ct) {\n\tif (!/multipart/i.test(ct)) {\n\t\tthrow new TypeError('Failed to fetch');\n\t}\n\n\tconst m = ct.match(/boundary=(?:\"([^\"]+)\"|([^;]+))/i);\n\n\tif (!m) {\n\t\tthrow new TypeError('no or bad content-type header, no multipart boundary');\n\t}\n\n\tconst parser = new MultipartParser(m[1] || m[2]);\n\n\tlet headerField;\n\tlet headerValue;\n\tlet entryValue;\n\tlet entryName;\n\tlet contentType;\n\tlet filename;\n\tconst entryChunks = [];\n\tconst formData = new FormData();\n\n\tconst onPartData = ui8a => {\n\t\tentryValue += decoder.decode(ui8a, {stream: true});\n\t};\n\n\tconst appendToFile = ui8a => {\n\t\tentryChunks.push(ui8a);\n\t};\n\n\tconst appendFileToFormData = () => {\n\t\tconst file = new File(entryChunks, filename, {type: contentType});\n\t\tformData.append(entryName, file);\n\t};\n\n\tconst appendEntryToFormData = () => {\n\t\tformData.append(entryName, entryValue);\n\t};\n\n\tconst decoder = new TextDecoder('utf-8');\n\tdecoder.decode();\n\n\tparser.onPartBegin = function () {\n\t\tparser.onPartData = onPartData;\n\t\tparser.onPartEnd = appendEntryToFormData;\n\n\t\theaderField = '';\n\t\theaderValue = '';\n\t\tentryValue = '';\n\t\tentryName = '';\n\t\tcontentType = '';\n\t\tfilename = null;\n\t\tentryChunks.length = 0;\n\t};\n\n\tparser.onHeaderField = function (ui8a) {\n\t\theaderField += decoder.decode(ui8a, {stream: true});\n\t};\n\n\tparser.onHeaderValue = function (ui8a) {\n\t\theaderValue += decoder.decode(ui8a, {stream: true});\n\t};\n\n\tparser.onHeaderEnd = function () {\n\t\theaderValue += decoder.decode();\n\t\theaderField = headerField.toLowerCase();\n\n\t\tif (headerField === 'content-disposition') {\n\t\t\t// matches either a quoted-string or a token (RFC 2616 section 19.5.1)\n\t\t\tconst m = headerValue.match(/\\bname=(\"([^\"]*)\"|([^()<>@,;:\\\\\"/[\\]?={}\\s\\t]+))/i);\n\n\t\t\tif (m) {\n\t\t\t\tentryName = m[2] || m[3] || '';\n\t\t\t}\n\n\t\t\tfilename = _fileName(headerValue);\n\n\t\t\tif (filename) {\n\t\t\t\tparser.onPartData = appendToFile;\n\t\t\t\tparser.onPartEnd = appendFileToFormData;\n\t\t\t}\n\t\t} else if (headerField === 'content-type') {\n\t\t\tcontentType = headerValue;\n\t\t}\n\n\t\theaderValue = '';\n\t\theaderField = '';\n\t};\n\n\tfor await (const chunk of Body) {\n\t\tparser.write(chunk);\n\t}\n\n\tparser.end();\n\n\treturn formData;\n}\n"],"names":[],"mappings":"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"}