MCPcopy Create free account
hub / github.com/scriptscat/scriptcat / dataEncode

Function dataEncode

src/pkg/utils/xhr/xhr_data.ts:117–231  ·  view source on GitHub ↗
(kData: any)

Source from the content-addressed store, hash-verified

115};
116
117export const dataEncode = async (kData: any) => {
118 if (kData?.then) {
119 kData = await kData;
120 }
121 if (kData instanceof Document) {
122 throw new Error("GM xhr data does not support Document");
123 }
124 // 处理数据
125 let extData = {
126 type: kData === undefined ? "undefined" : kData === null ? "null" : "undefined",
127 m: null,
128 } as {
129 type: string;
130 m: any;
131 };
132 if (kData instanceof ReadableStream) {
133 kData = await new Response(kData).blob();
134 }
135 if (kData instanceof DataView) {
136 const uint8Copy = new Uint8Array(kData.buffer, kData.byteOffset, kData.byteLength);
137 extData = {
138 type: "DataView",
139 m: uint8ToBase64(uint8Copy),
140 };
141 } else if (kData instanceof URLSearchParams) {
142 // `${new URLSearchParams('你=好')}` -> '%E4%BD%A0=%E5%A5%BD'
143 // new URLSearchParams('%E4%BD%A0=%E5%A5%BD').get('你') -> '好'
144 extData = {
145 type: "URLSearchParams",
146 m: `${kData}`, // application/x-www-form-urlencoded percent-encoded
147 };
148 } else if (kData instanceof FormData) {
149 // 处理FormData
150 // param.dataType = "FormData";
151 // 处理FormData中的数据
152 const data = (await Promise.all(
153 [...kData.entries()].map(([key, val]) =>
154 val instanceof File
155 ? Promise.resolve(innerToBlobUrl(val)).then(
156 (url) =>
157 ({
158 key,
159 type: "file",
160 val: url,
161 mimeType: val.type,
162 filename: val.name,
163 lastModified: val.lastModified,
164 }) as GMSend.XHRFormDataFile
165 )
166 : ({
167 key,
168 type: "text",
169 val,
170 } as GMSend.XHRFormDataText)
171 )
172 )) as GMSend.XHRFormData[];
173 // param.data = data;
174 extData = {

Callers 1

GM_xmlhttpRequestFunction · 0.90

Calls 3

uint8ToBase64Function · 0.90
entriesMethod · 0.80
blobMethod · 0.45

Tested by

no test coverage detected