@scalar/snippetz 0.7.1 → 0.7.3
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.
- package/dist/httpsnippet-lite/targets/r/httr/client.d.ts.map +1 -1
- package/dist/httpsnippet-lite/targets/r/httr/client.js +3 -1
- package/dist/httpsnippet-lite/targets/r/httr/client.js.map +2 -2
- package/dist/libs/http.d.ts +4 -0
- package/dist/libs/http.d.ts.map +1 -1
- package/dist/libs/http.js +18 -1
- package/dist/libs/http.js.map +2 -2
- package/dist/plugins/js/ofetch/ofetch.d.ts.map +1 -1
- package/dist/plugins/js/ofetch/ofetch.js +2 -1
- package/dist/plugins/js/ofetch/ofetch.js.map +2 -2
- package/dist/plugins/node/ofetch/ofetch.d.ts.map +1 -1
- package/dist/plugins/node/ofetch/ofetch.js +2 -1
- package/dist/plugins/node/ofetch/ofetch.js.map +2 -2
- package/dist/plugins/php/guzzle/guzzle.d.ts.map +1 -1
- package/dist/plugins/php/guzzle/guzzle.js +2 -5
- package/dist/plugins/php/guzzle/guzzle.js.map +2 -2
- package/dist/plugins/python/requestsLike.d.ts.map +1 -1
- package/dist/plugins/python/requestsLike.js +2 -1
- package/dist/plugins/python/requestsLike.js.map +2 -2
- package/dist/utils/convertWithHttpSnippetLite.d.ts.map +1 -1
- package/dist/utils/convertWithHttpSnippetLite.js +2 -7
- package/dist/utils/convertWithHttpSnippetLite.js.map +2 -2
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../src/httpsnippet-lite/targets/r/httr/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAA;AAE/D,eAAO,MAAM,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../src/httpsnippet-lite/targets/r/httr/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAA;AAE/D,eAAO,MAAM,IAAI,EAAE,MAuGlB,CAAA"}
|
|
@@ -19,7 +19,9 @@ const httr = {
|
|
|
19
19
|
blank();
|
|
20
20
|
const qs = queryObj;
|
|
21
21
|
delete queryObj.key;
|
|
22
|
-
const entries = Object.entries(qs)
|
|
22
|
+
const entries = Object.entries(qs).flatMap(
|
|
23
|
+
([key, value]) => Array.isArray(value) ? value.map((item) => [key, item]) : [[key, value]]
|
|
24
|
+
);
|
|
23
25
|
const entriesCount = entries.length;
|
|
24
26
|
if (entriesCount === 1) {
|
|
25
27
|
const entry = entries[0];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/httpsnippet-lite/targets/r/httr/client.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * @description\n * HTTP code snippet generator for R using httr\n *\n * @author\n * @gabrielakoreeda\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\n\nimport { CodeBuilder } from '@/httpsnippet-lite/helpers/code-builder'\nimport { escapeForDoubleQuotes, escapeForSingleQuotes } from '@/httpsnippet-lite/helpers/escape'\nimport { getHeader } from '@/httpsnippet-lite/helpers/headers'\nimport type { Client } from '@/httpsnippet-lite/targets/target'\n\nexport const httr: Client = {\n info: {\n key: 'httr',\n title: 'httr',\n link: 'https://cran.r-project.org/web/packages/httr/vignettes/quickstart.html',\n description: 'httr: Tools for Working with URLs and HTTP',\n },\n convert: ({ url, queryObj, queryString, postData, allHeaders, method }, options = {}) => {\n let _a, _b\n // Start snippet\n const { push, blank, join } = new CodeBuilder({\n indent: (_a = options.indent) !== null && _a !== void 0 ? _a : ' ',\n })\n // Import httr\n push('library(httr)')\n blank()\n // Set URL\n push(`url <- \"${url}\"`)\n blank()\n // Construct query string\n const qs = queryObj\n delete queryObj.key\n const entries = Object.entries(qs)\n const entriesCount = entries.length\n if (entriesCount === 1) {\n const entry = entries[0]!\n push(`queryString <- list(${entry[0]} = \"${entry[1]}\")`)\n blank()\n } else if (entriesCount > 1) {\n push('queryString <- list(')\n entries.forEach(([key, value], i) => {\n const isLastItem = i !== entriesCount - 1\n const maybeComma = isLastItem ? ',' : ''\n push(`${key} = \"${value}\"${maybeComma}`, 1)\n })\n push(')')\n blank()\n }\n // Construct payload\n const payload = JSON.stringify(postData === null || postData === void 0 ? void 0 : postData.text)\n if (payload) {\n push(`payload <- ${payload}`)\n blank()\n }\n // Define encode\n if (postData && (postData.text || postData.jsonObj || postData.params)) {\n switch (postData.mimeType) {\n case 'application/x-www-form-urlencoded':\n push('encode <- \"form\"')\n blank()\n break\n case 'application/json':\n push('encode <- \"json\"')\n blank()\n break\n case 'multipart/form-data':\n push('encode <- \"multipart\"')\n blank()\n break\n default:\n push('encode <- \"raw\"')\n blank()\n break\n }\n }\n // Construct headers\n const cookieHeader = getHeader(allHeaders, 'cookie')\n const acceptHeader = getHeader(allHeaders, 'accept')\n const setCookies = cookieHeader\n ? `set_cookies(\\`${String(cookieHeader).replace(/;/g, '\", `').replace(/` /g, '`').replace(/[=]/g, '` = \"')}\")`\n : undefined\n const setAccept = acceptHeader ? `accept(\"${escapeForDoubleQuotes(acceptHeader as string)}\")` : undefined\n const setContentType = `content_type(\"${escapeForDoubleQuotes((_b = postData === null || postData === void 0 ? void 0 : postData.mimeType) !== null && _b !== void 0 ? _b : 'application/octet-stream')}\")`\n const otherHeaders = Object.entries(allHeaders)\n // These headers are all handled separately:\n .filter(([key]) => !['cookie', 'accept', 'content-type'].includes(key.toLowerCase()))\n .map(([key, value]) => `'${key}' = '${escapeForSingleQuotes(value as string)}'`)\n .join(', ')\n const setHeaders = otherHeaders ? `add_headers(${otherHeaders})` : undefined\n // Construct request\n let request = `response <- VERB(\"${method}\", url`\n if (payload) {\n request += ', body = payload'\n }\n if (queryString.length) {\n request += ', query = queryString'\n }\n const headerAdditions = [setHeaders, setContentType, setAccept, setCookies].filter((x) => !!x).join(', ')\n if (headerAdditions) {\n request += `, ${headerAdditions}`\n }\n if (postData && (postData.text || postData.jsonObj || postData.params)) {\n request += ', encode = encode'\n }\n request += ')'\n push(request)\n blank()\n // Print response\n push('content(response, \"text\")')\n return join()\n },\n}\n"],
|
|
5
|
-
"mappings": "AAUA,SAAS,mBAAmB;AAC5B,SAAS,uBAAuB,6BAA6B;AAC7D,SAAS,iBAAiB;AAGnB,MAAM,OAAe;AAAA,EAC1B,MAAM;AAAA,IACJ,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAM;AAAA,IACN,aAAa;AAAA,EACf;AAAA,EACA,SAAS,CAAC,EAAE,KAAK,UAAU,aAAa,UAAU,YAAY,OAAO,GAAG,UAAU,CAAC,MAAM;AACvF,QAAI,IAAI;AAER,UAAM,EAAE,MAAM,OAAO,KAAK,IAAI,IAAI,YAAY;AAAA,MAC5C,SAAS,KAAK,QAAQ,YAAY,QAAQ,OAAO,SAAS,KAAK;AAAA,IACjE,CAAC;AAED,SAAK,eAAe;AACpB,UAAM;AAEN,SAAK,WAAW,GAAG,GAAG;AACtB,UAAM;AAEN,UAAM,KAAK;AACX,WAAO,SAAS;AAChB,UAAM,UAAU,OAAO,QAAQ,EAAE;
|
|
4
|
+
"sourcesContent": ["/**\n * @description\n * HTTP code snippet generator for R using httr\n *\n * @author\n * @gabrielakoreeda\n *\n * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author.\n */\n\nimport { CodeBuilder } from '@/httpsnippet-lite/helpers/code-builder'\nimport { escapeForDoubleQuotes, escapeForSingleQuotes } from '@/httpsnippet-lite/helpers/escape'\nimport { getHeader } from '@/httpsnippet-lite/helpers/headers'\nimport type { Client } from '@/httpsnippet-lite/targets/target'\n\nexport const httr: Client = {\n info: {\n key: 'httr',\n title: 'httr',\n link: 'https://cran.r-project.org/web/packages/httr/vignettes/quickstart.html',\n description: 'httr: Tools for Working with URLs and HTTP',\n },\n convert: ({ url, queryObj, queryString, postData, allHeaders, method }, options = {}) => {\n let _a, _b\n // Start snippet\n const { push, blank, join } = new CodeBuilder({\n indent: (_a = options.indent) !== null && _a !== void 0 ? _a : ' ',\n })\n // Import httr\n push('library(httr)')\n blank()\n // Set URL\n push(`url <- \"${url}\"`)\n blank()\n // Construct query string\n const qs = queryObj\n delete queryObj.key\n const entries = Object.entries(qs).flatMap(([key, value]) =>\n Array.isArray(value) ? value.map((item) => [key, item] as const) : ([[key, value]] as const),\n )\n const entriesCount = entries.length\n if (entriesCount === 1) {\n const entry = entries[0]!\n push(`queryString <- list(${entry[0]} = \"${entry[1]}\")`)\n blank()\n } else if (entriesCount > 1) {\n push('queryString <- list(')\n entries.forEach(([key, value], i) => {\n const isLastItem = i !== entriesCount - 1\n const maybeComma = isLastItem ? ',' : ''\n push(`${key} = \"${value}\"${maybeComma}`, 1)\n })\n push(')')\n blank()\n }\n // Construct payload\n const payload = JSON.stringify(postData === null || postData === void 0 ? void 0 : postData.text)\n if (payload) {\n push(`payload <- ${payload}`)\n blank()\n }\n // Define encode\n if (postData && (postData.text || postData.jsonObj || postData.params)) {\n switch (postData.mimeType) {\n case 'application/x-www-form-urlencoded':\n push('encode <- \"form\"')\n blank()\n break\n case 'application/json':\n push('encode <- \"json\"')\n blank()\n break\n case 'multipart/form-data':\n push('encode <- \"multipart\"')\n blank()\n break\n default:\n push('encode <- \"raw\"')\n blank()\n break\n }\n }\n // Construct headers\n const cookieHeader = getHeader(allHeaders, 'cookie')\n const acceptHeader = getHeader(allHeaders, 'accept')\n const setCookies = cookieHeader\n ? `set_cookies(\\`${String(cookieHeader).replace(/;/g, '\", `').replace(/` /g, '`').replace(/[=]/g, '` = \"')}\")`\n : undefined\n const setAccept = acceptHeader ? `accept(\"${escapeForDoubleQuotes(acceptHeader as string)}\")` : undefined\n const setContentType = `content_type(\"${escapeForDoubleQuotes((_b = postData === null || postData === void 0 ? void 0 : postData.mimeType) !== null && _b !== void 0 ? _b : 'application/octet-stream')}\")`\n const otherHeaders = Object.entries(allHeaders)\n // These headers are all handled separately:\n .filter(([key]) => !['cookie', 'accept', 'content-type'].includes(key.toLowerCase()))\n .map(([key, value]) => `'${key}' = '${escapeForSingleQuotes(value as string)}'`)\n .join(', ')\n const setHeaders = otherHeaders ? `add_headers(${otherHeaders})` : undefined\n // Construct request\n let request = `response <- VERB(\"${method}\", url`\n if (payload) {\n request += ', body = payload'\n }\n if (queryString.length) {\n request += ', query = queryString'\n }\n const headerAdditions = [setHeaders, setContentType, setAccept, setCookies].filter((x) => !!x).join(', ')\n if (headerAdditions) {\n request += `, ${headerAdditions}`\n }\n if (postData && (postData.text || postData.jsonObj || postData.params)) {\n request += ', encode = encode'\n }\n request += ')'\n push(request)\n blank()\n // Print response\n push('content(response, \"text\")')\n return join()\n },\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/libs/http.d.ts
CHANGED
|
@@ -16,6 +16,10 @@ export declare function buildQueryString(queryParams?: Array<{
|
|
|
16
16
|
* Creates a new URL search params object and sets query params so we can handle arrays
|
|
17
17
|
*/
|
|
18
18
|
export declare const createSearchParams: (query?: HarRequest["queryString"]) => URLSearchParams;
|
|
19
|
+
/**
|
|
20
|
+
* Reduces query parameters into an object while preserving repeated keys as arrays.
|
|
21
|
+
*/
|
|
22
|
+
export declare function reduceQueryParams(query?: HarRequest['queryString']): Record<string, string | string[]>;
|
|
19
23
|
/**
|
|
20
24
|
* Builds the complete URL with query string
|
|
21
25
|
*/
|
package/dist/libs/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/libs/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAExD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAKvG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,MAAM,CAO7F;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,QAAO,UAAU,CAAC,aAAa,CAAM,oBAQvE,CAAA;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqBnF"}
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/libs/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAExD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAKvG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,MAAM,CAO7F;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,QAAO,UAAU,CAAC,aAAa,CAAM,oBAQvE,CAAA;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,GAAE,UAAU,CAAC,aAAa,CAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAiB1G;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqBnF"}
|
package/dist/libs/http.js
CHANGED
|
@@ -18,6 +18,22 @@ const createSearchParams = (query = []) => {
|
|
|
18
18
|
});
|
|
19
19
|
return searchParams;
|
|
20
20
|
};
|
|
21
|
+
function reduceQueryParams(query = []) {
|
|
22
|
+
return query.reduce(
|
|
23
|
+
(acc, { name, value }) => {
|
|
24
|
+
const existingValue = acc[name];
|
|
25
|
+
if (existingValue === void 0) {
|
|
26
|
+
acc[name] = value;
|
|
27
|
+
} else if (Array.isArray(existingValue)) {
|
|
28
|
+
existingValue.push(value);
|
|
29
|
+
} else {
|
|
30
|
+
acc[name] = [existingValue, value];
|
|
31
|
+
}
|
|
32
|
+
return acc;
|
|
33
|
+
},
|
|
34
|
+
{}
|
|
35
|
+
);
|
|
36
|
+
}
|
|
21
37
|
function buildUrl(baseUrl, queryString) {
|
|
22
38
|
return `${baseUrl}${queryString}`;
|
|
23
39
|
}
|
|
@@ -41,6 +57,7 @@ export {
|
|
|
41
57
|
buildUrl,
|
|
42
58
|
createSearchParams,
|
|
43
59
|
normalizeRequest,
|
|
44
|
-
processHeaders
|
|
60
|
+
processHeaders,
|
|
61
|
+
reduceQueryParams
|
|
45
62
|
};
|
|
46
63
|
//# sourceMappingURL=http.js.map
|
package/dist/libs/http.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/libs/http.ts"],
|
|
4
|
-
"sourcesContent": ["import type { HarRequest } from '@scalar/types/snippetz'\n\n/**\n * Normalizes the request object with defaults\n */\nexport function normalizeRequest(request: Partial<HarRequest>): Partial<HarRequest> & { method: string } {\n return {\n ...request,\n method: (request.method || 'GET').toUpperCase(),\n }\n}\n\n/**\n * Builds the query string from request parameters\n */\nexport function buildQueryString(queryParams?: Array<{ name: string; value: string }>): string {\n if (!queryParams?.length) {\n return ''\n }\n\n const queryPairs = queryParams.map((param) => `${encodeURIComponent(param.name)}=${encodeURIComponent(param.value)}`)\n return `?${queryPairs.join('&')}`\n}\n\n/**\n * Creates a new URL search params object and sets query params so we can handle arrays\n */\nexport const createSearchParams = (query: HarRequest['queryString'] = []) => {\n const searchParams = new URLSearchParams()\n\n query.forEach((q: { name: string; value: string }) => {\n searchParams.append(q.name, q.value)\n })\n\n return searchParams\n}\n\n/**\n * Builds the complete URL with query string\n */\nexport function buildUrl(baseUrl: string, queryString: string): string {\n return `${baseUrl}${queryString}`\n}\n\n/**\n * Processes headers and cookies into a headers object\n */\nexport function processHeaders(request: Partial<HarRequest>): Record<string, string> {\n const headers: Record<string, string> = {}\n\n // Process regular headers\n if (request.headers) {\n for (const header of request.headers) {\n if (header.value && !/[; ]/.test(header.name)) {\n headers[header.name] = header.value\n }\n }\n }\n\n // Process cookies\n if (request.cookies && request.cookies.length > 0) {\n const cookieString = request.cookies\n .map((cookie) => `${encodeURIComponent(cookie.name)}=${encodeURIComponent(cookie.value)}`)\n .join('; ')\n headers['Cookie'] = cookieString\n }\n\n return headers\n}\n"],
|
|
5
|
-
"mappings": "AAKO,SAAS,iBAAiB,SAAwE;AACvG,SAAO;AAAA,IACL,GAAG;AAAA,IACH,SAAS,QAAQ,UAAU,OAAO,YAAY;AAAA,EAChD;AACF;AAKO,SAAS,iBAAiB,aAA8D;AAC7F,MAAI,CAAC,aAAa,QAAQ;AACxB,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,YAAY,IAAI,CAAC,UAAU,GAAG,mBAAmB,MAAM,IAAI,CAAC,IAAI,mBAAmB,MAAM,KAAK,CAAC,EAAE;AACpH,SAAO,IAAI,WAAW,KAAK,GAAG,CAAC;AACjC;AAKO,MAAM,qBAAqB,CAAC,QAAmC,CAAC,MAAM;AAC3E,QAAM,eAAe,IAAI,gBAAgB;AAEzC,QAAM,QAAQ,CAAC,MAAuC;AACpD,iBAAa,OAAO,EAAE,MAAM,EAAE,KAAK;AAAA,EACrC,CAAC;AAED,SAAO;AACT;AAKO,SAAS,SAAS,SAAiB,aAA6B;AACrE,SAAO,GAAG,OAAO,GAAG,WAAW;AACjC;AAKO,SAAS,eAAe,SAAsD;AACnF,QAAM,UAAkC,CAAC;AAGzC,MAAI,QAAQ,SAAS;AACnB,eAAW,UAAU,QAAQ,SAAS;AACpC,UAAI,OAAO,SAAS,CAAC,OAAO,KAAK,OAAO,IAAI,GAAG;AAC7C,gBAAQ,OAAO,IAAI,IAAI,OAAO;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAGA,MAAI,QAAQ,WAAW,QAAQ,QAAQ,SAAS,GAAG;AACjD,UAAM,eAAe,QAAQ,QAC1B,IAAI,CAAC,WAAW,GAAG,mBAAmB,OAAO,IAAI,CAAC,IAAI,mBAAmB,OAAO,KAAK,CAAC,EAAE,EACxF,KAAK,IAAI;AACZ,YAAQ,QAAQ,IAAI;AAAA,EACtB;AAEA,SAAO;AACT;",
|
|
4
|
+
"sourcesContent": ["import type { HarRequest } from '@scalar/types/snippetz'\n\n/**\n * Normalizes the request object with defaults\n */\nexport function normalizeRequest(request: Partial<HarRequest>): Partial<HarRequest> & { method: string } {\n return {\n ...request,\n method: (request.method || 'GET').toUpperCase(),\n }\n}\n\n/**\n * Builds the query string from request parameters\n */\nexport function buildQueryString(queryParams?: Array<{ name: string; value: string }>): string {\n if (!queryParams?.length) {\n return ''\n }\n\n const queryPairs = queryParams.map((param) => `${encodeURIComponent(param.name)}=${encodeURIComponent(param.value)}`)\n return `?${queryPairs.join('&')}`\n}\n\n/**\n * Creates a new URL search params object and sets query params so we can handle arrays\n */\nexport const createSearchParams = (query: HarRequest['queryString'] = []) => {\n const searchParams = new URLSearchParams()\n\n query.forEach((q: { name: string; value: string }) => {\n searchParams.append(q.name, q.value)\n })\n\n return searchParams\n}\n\n/**\n * Reduces query parameters into an object while preserving repeated keys as arrays.\n */\nexport function reduceQueryParams(query: HarRequest['queryString'] = []): Record<string, string | string[]> {\n return query.reduce(\n (acc, { name, value }) => {\n const existingValue = acc[name]\n\n if (existingValue === undefined) {\n acc[name] = value\n } else if (Array.isArray(existingValue)) {\n existingValue.push(value)\n } else {\n acc[name] = [existingValue, value]\n }\n\n return acc\n },\n {} as Record<string, string | string[]>,\n )\n}\n\n/**\n * Builds the complete URL with query string\n */\nexport function buildUrl(baseUrl: string, queryString: string): string {\n return `${baseUrl}${queryString}`\n}\n\n/**\n * Processes headers and cookies into a headers object\n */\nexport function processHeaders(request: Partial<HarRequest>): Record<string, string> {\n const headers: Record<string, string> = {}\n\n // Process regular headers\n if (request.headers) {\n for (const header of request.headers) {\n if (header.value && !/[; ]/.test(header.name)) {\n headers[header.name] = header.value\n }\n }\n }\n\n // Process cookies\n if (request.cookies && request.cookies.length > 0) {\n const cookieString = request.cookies\n .map((cookie) => `${encodeURIComponent(cookie.name)}=${encodeURIComponent(cookie.value)}`)\n .join('; ')\n headers['Cookie'] = cookieString\n }\n\n return headers\n}\n"],
|
|
5
|
+
"mappings": "AAKO,SAAS,iBAAiB,SAAwE;AACvG,SAAO;AAAA,IACL,GAAG;AAAA,IACH,SAAS,QAAQ,UAAU,OAAO,YAAY;AAAA,EAChD;AACF;AAKO,SAAS,iBAAiB,aAA8D;AAC7F,MAAI,CAAC,aAAa,QAAQ;AACxB,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,YAAY,IAAI,CAAC,UAAU,GAAG,mBAAmB,MAAM,IAAI,CAAC,IAAI,mBAAmB,MAAM,KAAK,CAAC,EAAE;AACpH,SAAO,IAAI,WAAW,KAAK,GAAG,CAAC;AACjC;AAKO,MAAM,qBAAqB,CAAC,QAAmC,CAAC,MAAM;AAC3E,QAAM,eAAe,IAAI,gBAAgB;AAEzC,QAAM,QAAQ,CAAC,MAAuC;AACpD,iBAAa,OAAO,EAAE,MAAM,EAAE,KAAK;AAAA,EACrC,CAAC;AAED,SAAO;AACT;AAKO,SAAS,kBAAkB,QAAmC,CAAC,GAAsC;AAC1G,SAAO,MAAM;AAAA,IACX,CAAC,KAAK,EAAE,MAAM,MAAM,MAAM;AACxB,YAAM,gBAAgB,IAAI,IAAI;AAE9B,UAAI,kBAAkB,QAAW;AAC/B,YAAI,IAAI,IAAI;AAAA,MACd,WAAW,MAAM,QAAQ,aAAa,GAAG;AACvC,sBAAc,KAAK,KAAK;AAAA,MAC1B,OAAO;AACL,YAAI,IAAI,IAAI,CAAC,eAAe,KAAK;AAAA,MACnC;AAEA,aAAO;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EACH;AACF;AAKO,SAAS,SAAS,SAAiB,aAA6B;AACrE,SAAO,GAAG,OAAO,GAAG,WAAW;AACjC;AAKO,SAAS,eAAe,SAAsD;AACnF,QAAM,UAAkC,CAAC;AAGzC,MAAI,QAAQ,SAAS;AACnB,eAAW,UAAU,QAAQ,SAAS;AACpC,UAAI,OAAO,SAAS,CAAC,OAAO,KAAK,OAAO,IAAI,GAAG;AAC7C,gBAAQ,OAAO,IAAI,IAAI,OAAO;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAGA,MAAI,QAAQ,WAAW,QAAQ,QAAQ,SAAS,GAAG;AACjD,UAAM,eAAe,QAAQ,QAC1B,IAAI,CAAC,WAAW,GAAG,mBAAmB,OAAO,IAAI,CAAC,IAAI,mBAAmB,OAAO,KAAK,CAAC,EAAE,EACxF,KAAK,IAAI;AACZ,YAAQ,QAAQ,IAAI;AAAA,EACtB;AAEA,SAAO;AACT;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ofetch.d.ts","sourceRoot":"","sources":["../../../../src/plugins/js/ofetch/ofetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"ofetch.d.ts","sourceRoot":"","sources":["../../../../src/plugins/js/ofetch/ofetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAKpD;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,MAsEtB,CAAA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { reduceQueryParams } from "../../../libs/http.js";
|
|
1
2
|
import { objectToString } from "../../../libs/javascript.js";
|
|
2
3
|
const jsOfetch = {
|
|
3
4
|
target: "js",
|
|
@@ -13,7 +14,7 @@ const jsOfetch = {
|
|
|
13
14
|
method: normalizedRequest.method === "GET" ? void 0 : normalizedRequest.method
|
|
14
15
|
};
|
|
15
16
|
if (normalizedRequest.queryString?.length) {
|
|
16
|
-
options.query =
|
|
17
|
+
options.query = reduceQueryParams(normalizedRequest.queryString);
|
|
17
18
|
}
|
|
18
19
|
if (normalizedRequest.headers?.length) {
|
|
19
20
|
options.headers = {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/plugins/js/ofetch/ofetch.ts"],
|
|
4
|
-
"sourcesContent": ["import type { Plugin } from '@scalar/types/snippetz'\n\nimport { objectToString } from '@/libs/javascript'\n\n/**\n * js/ofetch\n */\nexport const jsOfetch: Plugin = {\n target: 'js',\n client: 'ofetch',\n title: 'ofetch',\n generate(request) {\n // Defaults\n const normalizedRequest = {\n method: 'GET',\n ...request,\n }\n\n // Normalization\n normalizedRequest.method = normalizedRequest.method.toUpperCase()\n\n // Reset fetch defaults\n const options: Record<string, any> = {\n method: normalizedRequest.method === 'GET' ? undefined : normalizedRequest.method,\n }\n\n // Query\n if (normalizedRequest.queryString?.length) {\n options.query =
|
|
5
|
-
"mappings": "AAEA,SAAS,sBAAsB;AAKxB,MAAM,WAAmB;AAAA,EAC9B,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,SAAS,SAAS;AAEhB,UAAM,oBAAoB;AAAA,MACxB,QAAQ;AAAA,MACR,GAAG;AAAA,IACL;AAGA,sBAAkB,SAAS,kBAAkB,OAAO,YAAY;AAGhE,UAAM,UAA+B;AAAA,MACnC,QAAQ,kBAAkB,WAAW,QAAQ,SAAY,kBAAkB;AAAA,IAC7E;AAGA,QAAI,kBAAkB,aAAa,QAAQ;AACzC,cAAQ,QAAQ,
|
|
4
|
+
"sourcesContent": ["import type { Plugin } from '@scalar/types/snippetz'\n\nimport { reduceQueryParams } from '@/libs/http'\nimport { objectToString } from '@/libs/javascript'\n\n/**\n * js/ofetch\n */\nexport const jsOfetch: Plugin = {\n target: 'js',\n client: 'ofetch',\n title: 'ofetch',\n generate(request) {\n // Defaults\n const normalizedRequest = {\n method: 'GET',\n ...request,\n }\n\n // Normalization\n normalizedRequest.method = normalizedRequest.method.toUpperCase()\n\n // Reset fetch defaults\n const options: Record<string, any> = {\n method: normalizedRequest.method === 'GET' ? undefined : normalizedRequest.method,\n }\n\n // Query\n if (normalizedRequest.queryString?.length) {\n options.query = reduceQueryParams(normalizedRequest.queryString)\n }\n\n // Headers\n if (normalizedRequest.headers?.length) {\n options.headers = {}\n\n normalizedRequest.headers.forEach((header) => {\n options.headers![header.name] = header.value\n })\n }\n\n // Cookies\n if (normalizedRequest.cookies?.length) {\n options.headers = options.headers || {}\n\n normalizedRequest.cookies.forEach((cookie) => {\n options.headers!['Set-Cookie'] = options.headers!['Set-Cookie']\n ? `${options.headers!['Set-Cookie']}; ${cookie.name}=${cookie.value}`\n : `${cookie.name}=${cookie.value}`\n })\n }\n\n // Remove undefined keys\n Object.keys(options).forEach((key) => {\n if (options[key] === undefined) {\n delete options[key]\n }\n })\n\n // Add body\n if (normalizedRequest.postData) {\n // Plain text\n options.body = normalizedRequest.postData.text\n\n // JSON\n if (normalizedRequest.postData.mimeType === 'application/json') {\n options.body = JSON.parse(options.body)\n }\n }\n\n // Transform to JSON\n const jsonOptions = Object.keys(options).length ? `, ${objectToString(options)}` : ''\n\n // Code Template\n return `import { ofetch } from 'ofetch'\n\nofetch('${normalizedRequest.url}'${jsonOptions})`\n },\n}\n"],
|
|
5
|
+
"mappings": "AAEA,SAAS,yBAAyB;AAClC,SAAS,sBAAsB;AAKxB,MAAM,WAAmB;AAAA,EAC9B,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,SAAS,SAAS;AAEhB,UAAM,oBAAoB;AAAA,MACxB,QAAQ;AAAA,MACR,GAAG;AAAA,IACL;AAGA,sBAAkB,SAAS,kBAAkB,OAAO,YAAY;AAGhE,UAAM,UAA+B;AAAA,MACnC,QAAQ,kBAAkB,WAAW,QAAQ,SAAY,kBAAkB;AAAA,IAC7E;AAGA,QAAI,kBAAkB,aAAa,QAAQ;AACzC,cAAQ,QAAQ,kBAAkB,kBAAkB,WAAW;AAAA,IACjE;AAGA,QAAI,kBAAkB,SAAS,QAAQ;AACrC,cAAQ,UAAU,CAAC;AAEnB,wBAAkB,QAAQ,QAAQ,CAAC,WAAW;AAC5C,gBAAQ,QAAS,OAAO,IAAI,IAAI,OAAO;AAAA,MACzC,CAAC;AAAA,IACH;AAGA,QAAI,kBAAkB,SAAS,QAAQ;AACrC,cAAQ,UAAU,QAAQ,WAAW,CAAC;AAEtC,wBAAkB,QAAQ,QAAQ,CAAC,WAAW;AAC5C,gBAAQ,QAAS,YAAY,IAAI,QAAQ,QAAS,YAAY,IAC1D,GAAG,QAAQ,QAAS,YAAY,CAAC,KAAK,OAAO,IAAI,IAAI,OAAO,KAAK,KACjE,GAAG,OAAO,IAAI,IAAI,OAAO,KAAK;AAAA,MACpC,CAAC;AAAA,IACH;AAGA,WAAO,KAAK,OAAO,EAAE,QAAQ,CAAC,QAAQ;AACpC,UAAI,QAAQ,GAAG,MAAM,QAAW;AAC9B,eAAO,QAAQ,GAAG;AAAA,MACpB;AAAA,IACF,CAAC;AAGD,QAAI,kBAAkB,UAAU;AAE9B,cAAQ,OAAO,kBAAkB,SAAS;AAG1C,UAAI,kBAAkB,SAAS,aAAa,oBAAoB;AAC9D,gBAAQ,OAAO,KAAK,MAAM,QAAQ,IAAI;AAAA,MACxC;AAAA,IACF;AAGA,UAAM,cAAc,OAAO,KAAK,OAAO,EAAE,SAAS,KAAK,eAAe,OAAO,CAAC,KAAK;AAGnF,WAAO;AAAA;AAAA,UAED,kBAAkB,GAAG,IAAI,WAAW;AAAA,EAC5C;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ofetch.d.ts","sourceRoot":"","sources":["../../../../src/plugins/node/ofetch/ofetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"ofetch.d.ts","sourceRoot":"","sources":["../../../../src/plugins/node/ofetch/ofetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAKpD;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,MAsExB,CAAA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { reduceQueryParams } from "../../../libs/http.js";
|
|
1
2
|
import { objectToString } from "../../../libs/javascript.js";
|
|
2
3
|
const nodeOfetch = {
|
|
3
4
|
target: "node",
|
|
@@ -13,7 +14,7 @@ const nodeOfetch = {
|
|
|
13
14
|
method: normalizedRequest.method === "GET" ? void 0 : normalizedRequest.method
|
|
14
15
|
};
|
|
15
16
|
if (normalizedRequest.queryString?.length) {
|
|
16
|
-
options.query =
|
|
17
|
+
options.query = reduceQueryParams(normalizedRequest.queryString);
|
|
17
18
|
}
|
|
18
19
|
if (normalizedRequest.headers?.length) {
|
|
19
20
|
options.headers = {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/plugins/node/ofetch/ofetch.ts"],
|
|
4
|
-
"sourcesContent": ["import type { Plugin } from '@scalar/types/snippetz'\n\nimport { objectToString } from '@/libs/javascript'\n\n/**\n * node/ofetch\n */\nexport const nodeOfetch: Plugin = {\n target: 'node',\n client: 'ofetch',\n title: 'ofetch',\n generate(request) {\n // Defaults\n const normalizedRequest = {\n method: 'GET',\n ...request,\n }\n\n // Normalization\n normalizedRequest.method = normalizedRequest.method.toUpperCase()\n\n // Reset fetch defaults\n const options: Record<string, any> = {\n method: normalizedRequest.method === 'GET' ? undefined : normalizedRequest.method,\n }\n\n // Query\n if (normalizedRequest.queryString?.length) {\n options.query =
|
|
5
|
-
"mappings": "AAEA,SAAS,sBAAsB;AAKxB,MAAM,aAAqB;AAAA,EAChC,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,SAAS,SAAS;AAEhB,UAAM,oBAAoB;AAAA,MACxB,QAAQ;AAAA,MACR,GAAG;AAAA,IACL;AAGA,sBAAkB,SAAS,kBAAkB,OAAO,YAAY;AAGhE,UAAM,UAA+B;AAAA,MACnC,QAAQ,kBAAkB,WAAW,QAAQ,SAAY,kBAAkB;AAAA,IAC7E;AAGA,QAAI,kBAAkB,aAAa,QAAQ;AACzC,cAAQ,QAAQ,
|
|
4
|
+
"sourcesContent": ["import type { Plugin } from '@scalar/types/snippetz'\n\nimport { reduceQueryParams } from '@/libs/http'\nimport { objectToString } from '@/libs/javascript'\n\n/**\n * node/ofetch\n */\nexport const nodeOfetch: Plugin = {\n target: 'node',\n client: 'ofetch',\n title: 'ofetch',\n generate(request) {\n // Defaults\n const normalizedRequest = {\n method: 'GET',\n ...request,\n }\n\n // Normalization\n normalizedRequest.method = normalizedRequest.method.toUpperCase()\n\n // Reset fetch defaults\n const options: Record<string, any> = {\n method: normalizedRequest.method === 'GET' ? undefined : normalizedRequest.method,\n }\n\n // Query\n if (normalizedRequest.queryString?.length) {\n options.query = reduceQueryParams(normalizedRequest.queryString)\n }\n\n // Headers\n if (normalizedRequest.headers?.length) {\n options.headers = {}\n\n normalizedRequest.headers.forEach((header) => {\n options.headers![header.name] = header.value\n })\n }\n\n // Cookies\n if (normalizedRequest.cookies?.length) {\n options.headers = options.headers || {}\n\n normalizedRequest.cookies.forEach((cookie) => {\n options.headers!['Set-Cookie'] = options.headers!['Set-Cookie']\n ? `${options.headers!['Set-Cookie']}; ${cookie.name}=${cookie.value}`\n : `${cookie.name}=${cookie.value}`\n })\n }\n\n // Remove undefined keys\n Object.keys(options).forEach((key) => {\n if (options[key] === undefined) {\n delete options[key]\n }\n })\n\n // Add body\n if (normalizedRequest.postData) {\n // Plain text\n options.body = normalizedRequest.postData.text\n\n // JSON\n if (normalizedRequest.postData.mimeType === 'application/json') {\n options.body = JSON.parse(options.body)\n }\n }\n\n // Transform to JSON\n const jsonOptions = Object.keys(options).length ? `, ${objectToString(options)}` : ''\n\n // Code Template\n return `import { ofetch } from 'ofetch'\n\nofetch('${normalizedRequest.url}'${jsonOptions})`\n },\n}\n"],
|
|
5
|
+
"mappings": "AAEA,SAAS,yBAAyB;AAClC,SAAS,sBAAsB;AAKxB,MAAM,aAAqB;AAAA,EAChC,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,SAAS,SAAS;AAEhB,UAAM,oBAAoB;AAAA,MACxB,QAAQ;AAAA,MACR,GAAG;AAAA,IACL;AAGA,sBAAkB,SAAS,kBAAkB,OAAO,YAAY;AAGhE,UAAM,UAA+B;AAAA,MACnC,QAAQ,kBAAkB,WAAW,QAAQ,SAAY,kBAAkB;AAAA,IAC7E;AAGA,QAAI,kBAAkB,aAAa,QAAQ;AACzC,cAAQ,QAAQ,kBAAkB,kBAAkB,WAAW;AAAA,IACjE;AAGA,QAAI,kBAAkB,SAAS,QAAQ;AACrC,cAAQ,UAAU,CAAC;AAEnB,wBAAkB,QAAQ,QAAQ,CAAC,WAAW;AAC5C,gBAAQ,QAAS,OAAO,IAAI,IAAI,OAAO;AAAA,MACzC,CAAC;AAAA,IACH;AAGA,QAAI,kBAAkB,SAAS,QAAQ;AACrC,cAAQ,UAAU,QAAQ,WAAW,CAAC;AAEtC,wBAAkB,QAAQ,QAAQ,CAAC,WAAW;AAC5C,gBAAQ,QAAS,YAAY,IAAI,QAAQ,QAAS,YAAY,IAC1D,GAAG,QAAQ,QAAS,YAAY,CAAC,KAAK,OAAO,IAAI,IAAI,OAAO,KAAK,KACjE,GAAG,OAAO,IAAI,IAAI,OAAO,KAAK;AAAA,MACpC,CAAC;AAAA,IACH;AAGA,WAAO,KAAK,OAAO,EAAE,QAAQ,CAAC,QAAQ;AACpC,UAAI,QAAQ,GAAG,MAAM,QAAW;AAC9B,eAAO,QAAQ,GAAG;AAAA,MACpB;AAAA,IACF,CAAC;AAGD,QAAI,kBAAkB,UAAU;AAE9B,cAAQ,OAAO,kBAAkB,SAAS;AAG1C,UAAI,kBAAkB,SAAS,aAAa,oBAAoB;AAC9D,gBAAQ,OAAO,KAAK,MAAM,QAAQ,IAAI;AAAA,MACxC;AAAA,IACF;AAGA,UAAM,cAAc,OAAO,KAAK,OAAO,EAAE,SAAS,KAAK,eAAe,OAAO,CAAC,KAAK;AAGnF,WAAO;AAAA;AAAA,UAED,kBAAkB,GAAG,IAAI,WAAW;AAAA,EAC5C;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guzzle.d.ts","sourceRoot":"","sources":["../../../../src/plugins/php/guzzle/guzzle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"guzzle.d.ts","sourceRoot":"","sources":["../../../../src/plugins/php/guzzle/guzzle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAKpD;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,MAyGvB,CAAA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { reduceQueryParams } from "../../../libs/http.js";
|
|
1
2
|
import { Raw, objectToString } from "../../../libs/php.js";
|
|
2
3
|
const phpGuzzle = {
|
|
3
4
|
target: "php",
|
|
@@ -24,11 +25,7 @@ const phpGuzzle = {
|
|
|
24
25
|
options.headers = headers;
|
|
25
26
|
}
|
|
26
27
|
if (request.queryString && request.queryString.length > 0) {
|
|
27
|
-
|
|
28
|
-
request.queryString.forEach((param) => {
|
|
29
|
-
query[param.name] = param.value;
|
|
30
|
-
});
|
|
31
|
-
options.query = query;
|
|
28
|
+
options.query = reduceQueryParams(request.queryString);
|
|
32
29
|
}
|
|
33
30
|
if (request.cookies && request.cookies.length > 0) {
|
|
34
31
|
const cookies = {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/plugins/php/guzzle/guzzle.ts"],
|
|
4
|
-
"sourcesContent": ["import type { Plugin } from '@scalar/types/snippetz'\n\nimport { Raw, objectToString } from '@/libs/php'\n\n/**\n * php/guzzle\n */\nexport const phpGuzzle: Plugin = {\n target: 'php',\n client: 'guzzle',\n title: 'Guzzle',\n generate(request, configuration) {\n if (!request) {\n return ''\n }\n\n const options: Record<string, any> = {}\n const method = (request.method || 'GET').toUpperCase()\n const url = request.url || ''\n\n // Handle headers\n if (request.headers && Array.isArray(request.headers) && request.headers.length > 0) {\n const headers: Record<string, any> = {}\n request.headers.forEach((header) => {\n if (headers[header.name] === undefined) {\n headers[header.name] = header.value\n } else if (Array.isArray(headers[header.name])) {\n headers[header.name].push(header.value)\n } else {\n headers[header.name] = [headers[header.name], header.value]\n }\n })\n options.headers = headers\n }\n\n // Handle query parameters\n if (request.queryString && request.queryString.length > 0) {\n
|
|
5
|
-
"mappings": "AAEA,SAAS,KAAK,sBAAsB;AAK7B,MAAM,YAAoB;AAAA,EAC/B,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,SAAS,SAAS,eAAe;AAC/B,QAAI,CAAC,SAAS;AACZ,aAAO;AAAA,IACT;AAEA,UAAM,UAA+B,CAAC;AACtC,UAAM,UAAU,QAAQ,UAAU,OAAO,YAAY;AACrD,UAAM,MAAM,QAAQ,OAAO;AAG3B,QAAI,QAAQ,WAAW,MAAM,QAAQ,QAAQ,OAAO,KAAK,QAAQ,QAAQ,SAAS,GAAG;AACnF,YAAM,UAA+B,CAAC;AACtC,cAAQ,QAAQ,QAAQ,CAAC,WAAW;AAClC,YAAI,QAAQ,OAAO,IAAI,MAAM,QAAW;AACtC,kBAAQ,OAAO,IAAI,IAAI,OAAO;AAAA,QAChC,WAAW,MAAM,QAAQ,QAAQ,OAAO,IAAI,CAAC,GAAG;AAC9C,kBAAQ,OAAO,IAAI,EAAE,KAAK,OAAO,KAAK;AAAA,QACxC,OAAO;AACL,kBAAQ,OAAO,IAAI,IAAI,CAAC,QAAQ,OAAO,IAAI,GAAG,OAAO,KAAK;AAAA,QAC5D;AAAA,MACF,CAAC;AACD,cAAQ,UAAU;AAAA,IACpB;AAGA,QAAI,QAAQ,eAAe,QAAQ,YAAY,SAAS,GAAG;AACzD,
|
|
4
|
+
"sourcesContent": ["import type { Plugin } from '@scalar/types/snippetz'\n\nimport { reduceQueryParams } from '@/libs/http'\nimport { Raw, objectToString } from '@/libs/php'\n\n/**\n * php/guzzle\n */\nexport const phpGuzzle: Plugin = {\n target: 'php',\n client: 'guzzle',\n title: 'Guzzle',\n generate(request, configuration) {\n if (!request) {\n return ''\n }\n\n const options: Record<string, any> = {}\n const method = (request.method || 'GET').toUpperCase()\n const url = request.url || ''\n\n // Handle headers\n if (request.headers && Array.isArray(request.headers) && request.headers.length > 0) {\n const headers: Record<string, any> = {}\n request.headers.forEach((header) => {\n if (headers[header.name] === undefined) {\n headers[header.name] = header.value\n } else if (Array.isArray(headers[header.name])) {\n headers[header.name].push(header.value)\n } else {\n headers[header.name] = [headers[header.name], header.value]\n }\n })\n options.headers = headers\n }\n\n // Handle query parameters\n if (request.queryString && request.queryString.length > 0) {\n options.query = reduceQueryParams(request.queryString)\n }\n\n // Handle cookies\n if (request.cookies && request.cookies.length > 0) {\n const cookies: Record<string, string> = {}\n request.cookies.forEach((cookie) => {\n cookies[cookie.name] = cookie.value\n })\n options.cookies = cookies\n }\n\n // Handle authentication\n if (configuration?.auth?.username && configuration.auth.password) {\n options.auth = [configuration.auth.username, configuration.auth.password]\n }\n\n // Handle request body\n if (request.postData) {\n if (request.postData.mimeType === 'application/json') {\n try {\n options.json = JSON.parse(request.postData.text || '{}')\n } catch (_e) {\n // If JSON parsing fails, use the raw text\n options.body = request.postData.text\n }\n } else if (request.postData.mimeType === 'multipart/form-data') {\n if (request.postData.params) {\n options.multipart = request.postData.params.map((param) => ({\n name: param.name,\n contents: param.fileName ? new Raw(`fopen('${param.fileName}', 'r')`) : param.value || '',\n }))\n } else if (request.postData.text) {\n try {\n options.form_params = JSON.parse(request.postData.text)\n } catch (_e) {\n options.body = request.postData.text\n }\n }\n } else if (request.postData.mimeType === 'application/x-www-form-urlencoded') {\n if (request.postData.params) {\n const formParams: Record<string, string> = {}\n request.postData.params.forEach((param) => {\n formParams[param.name] = param.value || ''\n })\n options.form_params = formParams\n }\n } else {\n // For other mime types (like application/octet-stream), use the raw body\n options.body = request.postData.text\n }\n }\n\n // Handle compressed responses\n if (\n request.headers &&\n Array.isArray(request.headers) &&\n request.headers.some((h) => h.name === 'Accept-Encoding' && h.value.includes('gzip'))\n ) {\n options.decode_content = true\n }\n\n // Generate the PHP code\n let code = '$client = new GuzzleHttp\\\\Client();\\n\\n'\n\n if (Object.keys(options).length > 0) {\n // Format the options array with proper indentation\n const formattedOptions = objectToString(options)\n code += `$response = $client->request('${method}', '${url}', ${formattedOptions});`\n } else {\n code += `$response = $client->request('${method}', '${url}');`\n }\n\n return code\n },\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestsLike.d.ts","sourceRoot":"","sources":["../../../src/plugins/python/requestsLike.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"requestsLike.d.ts","sourceRoot":"","sources":["../../../src/plugins/python/requestsLike.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AA0B7E,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EAC7B,aAAa,CAAC,EAAE,mBAAmB,UAsIpC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { reduceQueryParams } from "../../libs/http.js";
|
|
1
2
|
const LENGTH_CONSIDERED_AS_SHORT = 40;
|
|
2
3
|
function convertToPythonSyntax(str) {
|
|
3
4
|
const replacements = [
|
|
@@ -34,7 +35,7 @@ function requestsLikeGenerate(clientVar, request, configuration) {
|
|
|
34
35
|
);
|
|
35
36
|
}
|
|
36
37
|
if (normalizedRequest.queryString?.length) {
|
|
37
|
-
options.params =
|
|
38
|
+
options.params = reduceQueryParams(normalizedRequest.queryString);
|
|
38
39
|
}
|
|
39
40
|
if (normalizedRequest.cookies?.length) {
|
|
40
41
|
options.cookies = Object.fromEntries(normalizedRequest.cookies.map((c) => [c.name, c.value]));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/plugins/python/requestsLike.ts"],
|
|
4
|
-
"sourcesContent": ["import type { HarRequest, PluginConfiguration } from '@scalar/types/snippetz'\n\nconst LENGTH_CONSIDERED_AS_SHORT = 40\n\n// Function to convert JavaScript boolean and null values to Python equivalents\nfunction convertToPythonSyntax(str: string): string {\n const replacements = [\n ['true', 'True'],\n ['false', 'False'],\n ['null', 'None'],\n ]\n\n let result = str\n for (const [jsonVal, pythonVal] of replacements) {\n const patterns = [`(: )${jsonVal}(?=,|\\\\n)`, `^( +)${jsonVal}(?=,|\\\\n)`]\n\n for (const pattern of patterns) {\n result = result.replace(new RegExp(pattern, 'gm'), `$1${pythonVal}`)\n }\n }\n\n return result\n}\n\nexport function requestsLikeGenerate(\n clientVar: string,\n request?: Partial<HarRequest>,\n configuration?: PluginConfiguration,\n) {\n // Normalize request with defaults\n const normalizedRequest = {\n url: 'https://example.com',\n method: 'get',\n ...request,\n }\n\n // Normalize method to lowercase for requests library\n const method = normalizedRequest.method.toLowerCase()\n\n // Build options object\n const options: Record<string, any> = {}\n\n // Add headers if present\n if (normalizedRequest.headers?.length) {\n options.headers = normalizedRequest.headers.reduce(\n (acc, header) => {\n if (!(header.name in acc)) {\n acc[header.name] = header.value\n }\n return acc\n },\n {} as Record<string, string>,\n )\n }\n\n // Add query parameters if present\n if (normalizedRequest.queryString?.length) {\n options.params =
|
|
5
|
-
"mappings": "AAEA,MAAM,6BAA6B;AAGnC,SAAS,sBAAsB,KAAqB;AAClD,QAAM,eAAe;AAAA,IACnB,CAAC,QAAQ,MAAM;AAAA,IACf,CAAC,SAAS,OAAO;AAAA,IACjB,CAAC,QAAQ,MAAM;AAAA,EACjB;AAEA,MAAI,SAAS;AACb,aAAW,CAAC,SAAS,SAAS,KAAK,cAAc;AAC/C,UAAM,WAAW,CAAC,OAAO,OAAO,aAAa,QAAQ,OAAO,WAAW;AAEvE,eAAW,WAAW,UAAU;AAC9B,eAAS,OAAO,QAAQ,IAAI,OAAO,SAAS,IAAI,GAAG,KAAK,SAAS,EAAE;AAAA,IACrE;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,qBACd,WACA,SACA,eACA;AAEA,QAAM,oBAAoB;AAAA,IACxB,KAAK;AAAA,IACL,QAAQ;AAAA,IACR,GAAG;AAAA,EACL;AAGA,QAAM,SAAS,kBAAkB,OAAO,YAAY;AAGpD,QAAM,UAA+B,CAAC;AAGtC,MAAI,kBAAkB,SAAS,QAAQ;AACrC,YAAQ,UAAU,kBAAkB,QAAQ;AAAA,MAC1C,CAAC,KAAK,WAAW;AACf,YAAI,EAAE,OAAO,QAAQ,MAAM;AACzB,cAAI,OAAO,IAAI,IAAI,OAAO;AAAA,QAC5B;AACA,eAAO;AAAA,MACT;AAAA,MACA,CAAC;AAAA,IACH;AAAA,EACF;AAGA,MAAI,kBAAkB,aAAa,QAAQ;AACzC,YAAQ,SAAS,
|
|
4
|
+
"sourcesContent": ["import type { HarRequest, PluginConfiguration } from '@scalar/types/snippetz'\n\nimport { reduceQueryParams } from '@/libs/http'\n\nconst LENGTH_CONSIDERED_AS_SHORT = 40\n\n// Function to convert JavaScript boolean and null values to Python equivalents\nfunction convertToPythonSyntax(str: string): string {\n const replacements = [\n ['true', 'True'],\n ['false', 'False'],\n ['null', 'None'],\n ]\n\n let result = str\n for (const [jsonVal, pythonVal] of replacements) {\n const patterns = [`(: )${jsonVal}(?=,|\\\\n)`, `^( +)${jsonVal}(?=,|\\\\n)`]\n\n for (const pattern of patterns) {\n result = result.replace(new RegExp(pattern, 'gm'), `$1${pythonVal}`)\n }\n }\n\n return result\n}\n\nexport function requestsLikeGenerate(\n clientVar: string,\n request?: Partial<HarRequest>,\n configuration?: PluginConfiguration,\n) {\n // Normalize request with defaults\n const normalizedRequest = {\n url: 'https://example.com',\n method: 'get',\n ...request,\n }\n\n // Normalize method to lowercase for requests library\n const method = normalizedRequest.method.toLowerCase()\n\n // Build options object\n const options: Record<string, any> = {}\n\n // Add headers if present\n if (normalizedRequest.headers?.length) {\n options.headers = normalizedRequest.headers.reduce(\n (acc, header) => {\n if (!(header.name in acc)) {\n acc[header.name] = header.value\n }\n return acc\n },\n {} as Record<string, string>,\n )\n }\n\n // Add query parameters if present\n if (normalizedRequest.queryString?.length) {\n options.params = reduceQueryParams(normalizedRequest.queryString)\n }\n\n // Add cookies if present\n if (normalizedRequest.cookies?.length) {\n options.cookies = Object.fromEntries(normalizedRequest.cookies.map((c) => [c.name, c.value]))\n }\n\n // Add auth if present\n if (configuration?.auth?.username && configuration?.auth?.password) {\n options.auth = [configuration.auth.username, configuration.auth.password]\n }\n\n // Handle request body\n if (normalizedRequest.postData) {\n const { mimeType, text, params } = normalizedRequest.postData\n\n if (mimeType === 'application/json' && text) {\n try {\n options.json = JSON.parse(text)\n } catch {\n options.data = text\n }\n } else if (mimeType === 'application/octet-stream' && text) {\n options.data = text // Store raw text, we'll handle the b\"...\" formatting later\n } else if (mimeType === 'multipart/form-data' && params) {\n const files: { key: string; file: string }[] = []\n const formData: Record<string, string> = {}\n\n params.forEach((param) => {\n if (param.fileName !== undefined) {\n files.push({ key: param.name, file: `open(\"${param.fileName}\", \"rb\")` })\n } else if (param.value !== undefined) {\n formData[param.name] = param.value\n }\n })\n\n if (Object.keys(files).length) {\n options.files = files\n }\n if (Object.keys(formData).length) {\n options.data = formData\n }\n } else if (mimeType === 'application/x-www-form-urlencoded' && params) {\n options.data = Object.fromEntries(params.map((p) => [p.name, p.value]))\n }\n }\n\n // Format all parameters\n const formattedParams: string[] = []\n\n // Format URL based on length\n const urlParam = `\"${normalizedRequest.url}\"`\n if (normalizedRequest.url.length > LENGTH_CONSIDERED_AS_SHORT) {\n formattedParams.push(urlParam)\n } else {\n // Will be handled in the return statement for short URLs\n formattedParams.push('')\n }\n\n // Format options\n for (const [key, value] of Object.entries(options)) {\n if (key === 'auth') {\n formattedParams.push(\n `${key}=(${convertToPythonSyntax(JSON.stringify(value[0]))}, ${convertToPythonSyntax(JSON.stringify(value[1]))})`,\n )\n } else if (key === 'files') {\n const filesTuples = value.map(({ key, file }: { key: string; file: string }) => ` (\"${key}\", ${file})`)\n const filesStr = '[\\n' + filesTuples.join(',\\n') + '\\n ]'\n formattedParams.push(`${key}=${filesStr}`)\n } else if (key === 'json') {\n const jsonString = convertToPythonSyntax(\n JSON.stringify(value, null, 2)\n .split('\\n')\n .map((line, i) => (i === 0 ? line : ' ' + line))\n .join('\\n'),\n )\n formattedParams.push(`${key}=${jsonString}`)\n } else if (key === 'data' && normalizedRequest.postData?.mimeType === 'application/octet-stream') {\n // Special handling for binary data\n formattedParams.push(`${key}=b\"${value}\"`)\n } else {\n const str = convertToPythonSyntax(\n JSON.stringify(value, null, 2)\n .split('\\n')\n .map((line, i) => (i === 0 ? line : ' ' + line))\n .join('\\n'),\n )\n formattedParams.push(`${key}=${str}`)\n }\n }\n\n // Build the final request string with conditional URL formatting\n if (normalizedRequest.url.length > LENGTH_CONSIDERED_AS_SHORT) {\n return `${clientVar}.${method}(\\n ${formattedParams.join(',\\n ')}\\n)`\n }\n\n // For short URLs with no additional parameters, return a single-line format\n if (formattedParams.length <= 1) {\n return `${clientVar}.${method}(${urlParam})`\n }\n\n // For short URLs with parameters, maintain the multi-line format\n return `${clientVar}.${method}(${urlParam}${formattedParams.length > 1 ? ',' : ''}\\n ${formattedParams.slice(1).join(',\\n ')}\\n)`\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["key"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertWithHttpSnippetLite.d.ts","sourceRoot":"","sources":["../../src/utils/convertWithHttpSnippetLite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"convertWithHttpSnippetLite.d.ts","sourceRoot":"","sources":["../../src/utils/convertWithHttpSnippetLite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAKxD;;;;GAIG;AACH,wBAAgB,0BAA0B,CAExC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAC5B,MAAM,CAkHR"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { reduceQueryParams } from "../libs/http.js";
|
|
1
2
|
function convertWithHttpSnippetLite(client, request) {
|
|
2
3
|
const urlObject = new URL(request?.url ?? "");
|
|
3
4
|
const url = urlObject.pathname === "/" ? urlObject.origin : urlObject.toString();
|
|
@@ -23,13 +24,7 @@ function convertWithHttpSnippetLite(client, request) {
|
|
|
23
24
|
}),
|
|
24
25
|
{}
|
|
25
26
|
);
|
|
26
|
-
const queryObj = (harRequest.queryString
|
|
27
|
-
(acc, param) => ({
|
|
28
|
-
...acc,
|
|
29
|
-
[param.name]: param.value
|
|
30
|
-
}),
|
|
31
|
-
{}
|
|
32
|
-
);
|
|
27
|
+
const queryObj = reduceQueryParams(harRequest.queryString);
|
|
33
28
|
const cookiesObj = (harRequest.cookies ?? []).reduce(
|
|
34
29
|
(acc, cookie) => ({
|
|
35
30
|
...acc,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/convertWithHttpSnippetLite.ts"],
|
|
4
|
-
"sourcesContent": ["import type { HarRequest } from '@scalar/types/snippetz'\n\nimport type { SnippetRequest } from '@/httpsnippet-lite/helpers/snippet-request'\n\n/**\n * Takes a httpsnippet-lite client and converts the given request to a code example with it.\n *\n * @deprecated This a temporary wrapper around httpsnippet-lite. Let's write all the generators ourselves instead.\n */\nexport function convertWithHttpSnippetLite(\n // Couldn't find the proper type, there was always a mismatch.\n client: Record<string, unknown>,\n request?: Partial<HarRequest>,\n): string {\n const urlObject = new URL(request?.url ?? '')\n\n // If it's just the domain, omit the trailing slash\n const url = urlObject.pathname === '/' ? urlObject.origin : urlObject.toString()\n\n const harRequest: HarRequest = {\n method: request?.method ?? 'GET',\n url,\n httpVersion: 'HTTP/1.1',\n cookies: [], // Cookies are handled through headers\n headers: request?.headers ?? [],\n headersSize: -1,\n bodySize: -1,\n queryString: Array.from(urlObject.searchParams.entries()).map(([name, value]) => ({\n name,\n value,\n })),\n postData: request?.postData,\n }\n\n const allHeaders = (harRequest?.headers ?? []).reduce(\n (acc, header) => ({\n ...acc,\n [header.name]: header.value,\n }),\n {} as Record<string, string>,\n )\n\n const queryObj = (harRequest.queryString
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["import type { HarRequest } from '@scalar/types/snippetz'\n\nimport type { SnippetRequest } from '@/httpsnippet-lite/helpers/snippet-request'\nimport { reduceQueryParams } from '@/libs/http'\n\n/**\n * Takes a httpsnippet-lite client and converts the given request to a code example with it.\n *\n * @deprecated This a temporary wrapper around httpsnippet-lite. Let's write all the generators ourselves instead.\n */\nexport function convertWithHttpSnippetLite(\n // Couldn't find the proper type, there was always a mismatch.\n client: Record<string, unknown>,\n request?: Partial<HarRequest>,\n): string {\n const urlObject = new URL(request?.url ?? '')\n\n // If it's just the domain, omit the trailing slash\n const url = urlObject.pathname === '/' ? urlObject.origin : urlObject.toString()\n\n const harRequest: HarRequest = {\n method: request?.method ?? 'GET',\n url,\n httpVersion: 'HTTP/1.1',\n cookies: [], // Cookies are handled through headers\n headers: request?.headers ?? [],\n headersSize: -1,\n bodySize: -1,\n queryString: Array.from(urlObject.searchParams.entries()).map(([name, value]) => ({\n name,\n value,\n })),\n postData: request?.postData,\n }\n\n const allHeaders = (harRequest?.headers ?? []).reduce(\n (acc, header) => ({\n ...acc,\n [header.name]: header.value,\n }),\n {} as Record<string, string>,\n )\n\n const queryObj = reduceQueryParams(harRequest.queryString)\n\n const cookiesObj = (harRequest.cookies ?? []).reduce(\n (acc, cookie) => ({\n ...acc,\n [cookie.name]: cookie.value,\n }),\n {} as Record<string, string>,\n )\n\n const parsedUrl = new URL(harRequest.url)\n const uriObj = {\n protocol: parsedUrl.protocol,\n hostname: parsedUrl.hostname,\n host: parsedUrl.hostname,\n port: parsedUrl.port,\n pathname:\n parsedUrl.pathname\n .split('/')\n .map((segment) => encodeURIComponent(decodeURIComponent(segment)))\n .join('/') + parsedUrl.search,\n path:\n parsedUrl.pathname\n .split('/')\n .map((segment) => encodeURIComponent(decodeURIComponent(segment)))\n .join('/') + parsedUrl.search,\n search: parsedUrl.search,\n hash: parsedUrl.hash,\n href: parsedUrl.href,\n origin: parsedUrl.origin,\n password: parsedUrl.password,\n searchParams: parsedUrl.searchParams,\n username: parsedUrl.username,\n toString: parsedUrl.toString,\n toJSON: () => parsedUrl.toJSON(),\n }\n\n const convertRequest = {\n url: harRequest.url,\n uriObj,\n method: harRequest.method?.toLocaleUpperCase() ?? 'GET',\n httpVersion: harRequest.httpVersion,\n cookies: harRequest.cookies ?? [],\n headers: harRequest.headers ?? [],\n headersSize: harRequest.headersSize ?? 0,\n headersObj: allHeaders ?? {},\n bodySize: harRequest.bodySize ?? 0,\n queryString: harRequest.queryString ?? [],\n postData: harRequest.postData\n ? {\n mimeType: harRequest.postData.mimeType ?? 'application/json',\n text: harRequest.postData.text ?? '',\n params: harRequest.postData.params ?? [],\n paramsObj:\n harRequest.postData.params?.reduce(\n (acc, param) => {\n if (param.name && param.value !== undefined) {\n acc[param.name] = param.value\n }\n return acc\n },\n {} as Record<string, string>,\n ) ?? {},\n }\n : undefined,\n allHeaders: allHeaders ?? {},\n fullUrl: harRequest.url,\n queryObj: queryObj ?? {},\n cookiesObj: cookiesObj ?? {},\n } as SnippetRequest\n\n // If the request is a JSON request, parse the text as JSON\n if (convertRequest.postData?.mimeType === 'application/json' && convertRequest.postData!.text) {\n try {\n convertRequest.postData.jsonObj = JSON.parse(convertRequest.postData.text)\n } catch (error) {\n console.error('Error parsing JSON:', error)\n }\n }\n\n if (typeof client.convert === 'function') {\n return client.convert(convertRequest)\n }\n\n return ''\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"url": "git+https://github.com/scalar/scalar.git",
|
|
10
10
|
"directory": "packages/snippetz"
|
|
11
11
|
},
|
|
12
|
-
"version": "0.7.
|
|
12
|
+
"version": "0.7.3",
|
|
13
13
|
"engines": {
|
|
14
14
|
"node": ">=22"
|
|
15
15
|
},
|
|
@@ -230,7 +230,7 @@
|
|
|
230
230
|
"dependencies": {
|
|
231
231
|
"js-base64": "^3.7.8",
|
|
232
232
|
"stringify-object": "^6.0.0",
|
|
233
|
-
"@scalar/types": "0.7.
|
|
233
|
+
"@scalar/types": "0.7.2"
|
|
234
234
|
},
|
|
235
235
|
"devDependencies": {
|
|
236
236
|
"@types/stringify-object": "^4.0.5",
|