Skip to content

Commit 441a2a8

Browse files
authored
feat(js): Add API refs build (#1423)
1 parent f51ae95 commit 441a2a8

File tree

6 files changed

+272
-0
lines changed

6 files changed

+272
-0
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,4 +160,7 @@ cython_debug/
160160
.idea/
161161
.DS_Store
162162

163+
# JS API refs
164+
js/_build/
165+
163166
.envrc

js/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
"types": "./dist/index.d.ts",
6868
"scripts": {
6969
"build": "yarn clean && yarn build:esm && yarn build:cjs && node scripts/create-entrypoints.js",
70+
"build:typedoc": "yarn build && rm -rf ./_build/api_refs && npx typedoc",
7071
"bump-version": "node scripts/bump-version.js",
7172
"check-version": "node scripts/check-version.js",
7273
"check-npm-version": "node scripts/check-npm-version.js",
@@ -139,6 +140,8 @@
139140
"prettier": "^2.8.8",
140141
"ts-jest": "^29.1.0",
141142
"ts-node": "^10.9.1",
143+
"typedoc": "^0.27.6",
144+
"typedoc-plugin-expand-object-like-types": "^0.1.2",
142145
"typescript": "^5.4.5",
143146
"zod": "^3.23.8"
144147
},

js/scripts/typedoc-plugin.cjs

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
const {
2+
Application,
3+
Converter,
4+
Context,
5+
ReflectionKind,
6+
DeclarationReflection,
7+
RendererEvent,
8+
} = require("typedoc");
9+
const fs = require("fs");
10+
const path = require("path");
11+
12+
// Reflection types to check for methods that should not be documented.
13+
// e.g methods prefixed with `_` or `lc_`
14+
const REFLECTION_KINDS_TO_HIDE = [
15+
ReflectionKind.Property,
16+
ReflectionKind.Accessor,
17+
ReflectionKind.Variable,
18+
ReflectionKind.Method,
19+
ReflectionKind.Function,
20+
ReflectionKind.Class,
21+
ReflectionKind.Interface,
22+
ReflectionKind.Enum,
23+
ReflectionKind.TypeAlias,
24+
];
25+
26+
const BASE_OUTPUT_DIR = "./_build/api_refs";
27+
28+
// Script to inject into the HTML to add a CMD/CTRL + K 'hotkey' which focuses
29+
// on the search input element.
30+
const SCRIPT_HTML = `<script>
31+
document.addEventListener('keydown', (e) => {
32+
if ((e.metaKey || e.ctrlKey) && e.keyCode === 75) { // Check for CMD + K or CTRL + K
33+
const input = document.getElementById('tsd-search-field'); // Get the search input element by ID
34+
input.focus(); // Focus on the search input element
35+
document.getElementById('tsd-search').style.display = 'block'; // Show the div wrapper with ID tsd-search
36+
}
37+
}, false); // Add event listener for keydown events
38+
</script>`;
39+
40+
/**
41+
* Takes in a reflection and an array of all chat model class names.
42+
* Then performs checks to see if the given reflection should be removed
43+
* from the documentation.
44+
* E.g a class method on chat models which is
45+
* not intended to be documented.
46+
*
47+
* @param {DeclarationReflection} reflection
48+
* @returns {boolean} Whether or not the reflection should be removed
49+
*/
50+
function shouldRemoveReflection(reflection) {
51+
const kind = reflection.kind;
52+
53+
if (
54+
reflection.parent &&
55+
reflection.name !== "constructor"
56+
) {
57+
if (kind === ReflectionKind.Property) {
58+
return true;
59+
}
60+
}
61+
62+
if (REFLECTION_KINDS_TO_HIDE.find((kindToHide) => kindToHide === kind)) {
63+
if (reflection.name.startsWith("_") || reflection.name.startsWith("ls_")) {
64+
// Remove all reflections which start with an `_` or `ls_` as those are internal
65+
return true;
66+
}
67+
}
68+
}
69+
70+
/**
71+
* @param {Application} application
72+
* @returns {void}
73+
*/
74+
function load(application) {
75+
application.converter.on(
76+
Converter.EVENT_CREATE_DECLARATION,
77+
resolveReflection
78+
);
79+
80+
application.renderer.on(RendererEvent.END, onEndRenderEvent);
81+
82+
/**
83+
* @param {Context} context
84+
* @param {DeclarationReflection} reflection
85+
* @returns {void}
86+
*/
87+
function resolveReflection(context, reflection) {
88+
const { project } = context;
89+
90+
if (shouldRemoveReflection(reflection)) {
91+
project.removeReflection(reflection);
92+
}
93+
}
94+
95+
/**
96+
* @param {Context} context
97+
*/
98+
function onEndRenderEvent(context) {
99+
const htmlToSplitAtSearchScript = `<div class="tsd-toolbar-contents container">`;
100+
101+
const { urls } = context;
102+
for (const { url } of urls) {
103+
const indexFilePath = path.join(BASE_OUTPUT_DIR, url);
104+
const htmlFileContent = fs.readFileSync(indexFilePath, "utf-8");
105+
106+
const [part1, part2] = htmlFileContent.split(htmlToSplitAtSearchScript);
107+
const htmlWithScript = part1 + SCRIPT_HTML + part2;
108+
fs.writeFileSync(indexFilePath, htmlWithScript);
109+
}
110+
}
111+
}
112+
113+
module.exports = { load };

js/src/wrappers/openai.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,11 @@ function processChatCompletion(outputs: Readonly<KVMap>): KVMap {
234234
* @param options LangSmith options.
235235
* @example
236236
* ```ts
237+
* import { OpenAI } from "openai";
238+
* import { wrapOpenAI } from "langsmith/wrappers/openai";
239+
*
240+
* const patchedClient = wrapOpenAI(new OpenAI());
241+
*
237242
* const patchedStream = await patchedClient.chat.completions.create(
238243
* {
239244
* messages: [{ role: "user", content: `Say 'foo'` }],

js/typedoc.json

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{
2+
"$schema": "https://typedoc.org/schema.json",
3+
"out": "_build/api_refs",
4+
"sort": [
5+
"kind",
6+
"visibility",
7+
"instance-first",
8+
"required-first",
9+
"alphabetical"
10+
],
11+
"plugin": [
12+
"typedoc-plugin-expand-object-like-types",
13+
"./scripts/typedoc-plugin.cjs"
14+
],
15+
"tsconfig": "./tsconfig.json",
16+
"excludePrivate": true,
17+
"excludeInternal": true,
18+
"excludeExternals": false,
19+
"excludeNotDocumented": false,
20+
"includeVersion": true,
21+
"sourceLinkTemplate": "https://github.com/langchain-ai/langsmith-sdk/blob/{gitRevision}/{path}#L{line}",
22+
"logLevel": "Error",
23+
"name": "LangSmith",
24+
"skipErrorChecking": false,
25+
"exclude": ["dist"],
26+
"hostedBaseUrl": "https://docs.smith.langchain.com/reference/js/",
27+
}

js/yarn.lock

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1072,6 +1072,15 @@
10721072
resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-8.4.1.tgz#5d5e8aee8fce48f5e189bf730ebd1f758f491451"
10731073
integrity sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg==
10741074

1075+
"@gerrit0/mini-shiki@^1.24.0":
1076+
version "1.27.0"
1077+
resolved "https://registry.yarnpkg.com/@gerrit0/mini-shiki/-/mini-shiki-1.27.0.tgz#8bc370ac8b80c5e5e0c20fa69edcc7dec9b593fc"
1078+
integrity sha512-nFZkbq4/wU+GxkyJVrXeMIS9SEcHI1HzJtK3EDtMQy16nNs1LNaI0dZTLAP2EuK/QSTYLo/Zaabm6Phxlmra1A==
1079+
dependencies:
1080+
"@shikijs/engine-oniguruma" "^1.27.0"
1081+
"@shikijs/types" "^1.27.0"
1082+
"@shikijs/vscode-textmate" "^10.0.1"
1083+
10751084
"@humanwhocodes/config-array@^0.11.8":
10761085
version "0.11.8"
10771086
resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz"
@@ -1501,6 +1510,27 @@
15011510
resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz#1a857dcc95a5ab30122e04417148211e6f945e6c"
15021511
integrity sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==
15031512

1513+
"@shikijs/engine-oniguruma@^1.27.0":
1514+
version "1.27.2"
1515+
resolved "https://registry.yarnpkg.com/@shikijs/engine-oniguruma/-/engine-oniguruma-1.27.2.tgz#b120e6aaf654fccec4268f1c12bf70b24fd7373f"
1516+
integrity sha512-FZYKD1KN7srvpkz4lbGLOYWlyDU4Rd+2RtuKfABTkafAPOFr+J6umfIwY/TzOQqfNtWjL7SAwPAO0dcOraRLaQ==
1517+
dependencies:
1518+
"@shikijs/types" "1.27.2"
1519+
"@shikijs/vscode-textmate" "^10.0.1"
1520+
1521+
"@shikijs/types@1.27.2", "@shikijs/types@^1.27.0":
1522+
version "1.27.2"
1523+
resolved "https://registry.yarnpkg.com/@shikijs/types/-/types-1.27.2.tgz#0288966973ac8d9c4186998e6be9969ff9a045a4"
1524+
integrity sha512-DM9OWUyjmdYdnKDpaGB/GEn9XkToyK1tqxuqbmc5PV+5K8WjjwfygL3+cIvbkSw2v1ySwHDgqATq/+98pJ4Kyg==
1525+
dependencies:
1526+
"@shikijs/vscode-textmate" "^10.0.1"
1527+
"@types/hast" "^3.0.4"
1528+
1529+
"@shikijs/vscode-textmate@^10.0.1":
1530+
version "10.0.1"
1531+
resolved "https://registry.yarnpkg.com/@shikijs/vscode-textmate/-/vscode-textmate-10.0.1.tgz#d06d45b67ac5e9b0088e3f67ebd3f25c6c3d711a"
1532+
integrity sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==
1533+
15041534
"@sinclair/typebox@^0.25.16":
15051535
version "0.25.24"
15061536
resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz"
@@ -1590,6 +1620,13 @@
15901620
dependencies:
15911621
"@types/node" "*"
15921622

1623+
"@types/hast@^3.0.4":
1624+
version "3.0.4"
1625+
resolved "https://registry.yarnpkg.com/@types/hast/-/hast-3.0.4.tgz#1d6b39993b82cea6ad783945b0508c25903e15aa"
1626+
integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==
1627+
dependencies:
1628+
"@types/unist" "*"
1629+
15931630
"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1":
15941631
version "2.0.4"
15951632
resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz"
@@ -1677,6 +1714,11 @@
16771714
resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz"
16781715
integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==
16791716

1717+
"@types/unist@*":
1718+
version "3.0.3"
1719+
resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.3.tgz#acaab0f919ce69cce629c2d4ed2eb4adc1b6c20c"
1720+
integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==
1721+
16801722
"@types/uuid@^10.0.0":
16811723
version "10.0.0"
16821724
resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-10.0.0.tgz#e9c07fe50da0f53dc24970cca94d619ff03f6f6d"
@@ -2042,6 +2084,13 @@ brace-expansion@^1.1.7:
20422084
balanced-match "^1.0.0"
20432085
concat-map "0.0.1"
20442086

2087+
brace-expansion@^2.0.1:
2088+
version "2.0.1"
2089+
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae"
2090+
integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
2091+
dependencies:
2092+
balanced-match "^1.0.0"
2093+
20452094
braces@^3.0.3:
20462095
version "3.0.3"
20472096
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
@@ -2374,6 +2423,11 @@ emoji-regex@^8.0.0:
23742423
resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz"
23752424
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
23762425

2426+
entities@^4.4.0:
2427+
version "4.5.0"
2428+
resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
2429+
integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
2430+
23772431
error-ex@^1.3.1:
23782432
version "1.3.2"
23792433
resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz"
@@ -3780,6 +3834,13 @@ lines-and-columns@^1.1.6:
37803834
resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz"
37813835
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
37823836

3837+
linkify-it@^5.0.0:
3838+
version "5.0.0"
3839+
resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-5.0.0.tgz#9ef238bfa6dc70bd8e7f9572b52d369af569b421"
3840+
integrity sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==
3841+
dependencies:
3842+
uc.micro "^2.0.0"
3843+
37833844
locate-path@^5.0.0:
37843845
version "5.0.0"
37853846
resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz"
@@ -3823,6 +3884,11 @@ lru-cache@^6.0.0:
38233884
dependencies:
38243885
yallist "^4.0.0"
38253886

3887+
lunr@^2.3.9:
3888+
version "2.3.9"
3889+
resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1"
3890+
integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==
3891+
38263892
make-dir@^3.0.0:
38273893
version "3.1.0"
38283894
resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz"
@@ -3842,6 +3908,23 @@ makeerror@1.0.12:
38423908
dependencies:
38433909
tmpl "1.0.5"
38443910

3911+
markdown-it@^14.1.0:
3912+
version "14.1.0"
3913+
resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-14.1.0.tgz#3c3c5992883c633db4714ccb4d7b5935d98b7d45"
3914+
integrity sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==
3915+
dependencies:
3916+
argparse "^2.0.1"
3917+
entities "^4.4.0"
3918+
linkify-it "^5.0.0"
3919+
mdurl "^2.0.0"
3920+
punycode.js "^2.3.1"
3921+
uc.micro "^2.1.0"
3922+
3923+
mdurl@^2.0.0:
3924+
version "2.0.0"
3925+
resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-2.0.0.tgz#80676ec0433025dd3e17ee983d0fe8de5a2237e0"
3926+
integrity sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==
3927+
38453928
merge-stream@^2.0.0:
38463929
version "2.0.0"
38473930
resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz"
@@ -3884,6 +3967,13 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
38843967
dependencies:
38853968
brace-expansion "^1.1.7"
38863969

3970+
minimatch@^9.0.5:
3971+
version "9.0.5"
3972+
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
3973+
integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
3974+
dependencies:
3975+
brace-expansion "^2.0.1"
3976+
38873977
minimist@^1.2.0, minimist@^1.2.6:
38883978
version "1.2.8"
38893979
resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz"
@@ -4218,6 +4308,11 @@ prompts@^2.0.1:
42184308
kleur "^3.0.3"
42194309
sisteransi "^1.0.5"
42204310

4311+
punycode.js@^2.3.1:
4312+
version "2.3.1"
4313+
resolved "https://registry.yarnpkg.com/punycode.js/-/punycode.js-2.3.1.tgz#6b53e56ad75588234e79f4affa90972c7dd8cdb7"
4314+
integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==
4315+
42214316
punycode@^2.1.0:
42224317
version "2.3.0"
42234318
resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz"
@@ -4703,11 +4798,32 @@ typed-array-length@^1.0.4:
47034798
for-each "^0.3.3"
47044799
is-typed-array "^1.1.9"
47054800

4801+
typedoc-plugin-expand-object-like-types@^0.1.2:
4802+
version "0.1.2"
4803+
resolved "https://registry.yarnpkg.com/typedoc-plugin-expand-object-like-types/-/typedoc-plugin-expand-object-like-types-0.1.2.tgz#7b97e2e0ccb5f0d7e784677a62b89b2ce163fc39"
4804+
integrity sha512-RRMOCWMElQHBOVraWMWrh/0tDqCdS5oxYwaWMZBB3KlUUUUCxKllpvJPsRH/uFLO1nOuy28CbJxGVU1umv7LOQ==
4805+
4806+
typedoc@^0.27.6:
4807+
version "0.27.6"
4808+
resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.27.6.tgz#7e8d067bd5386b7908afcb12c9054a83e8bb326b"
4809+
integrity sha512-oBFRoh2Px6jFx366db0lLlihcalq/JzyCVp7Vaq1yphL/tbgx2e+bkpkCgJPunaPvPwoTOXSwasfklWHm7GfAw==
4810+
dependencies:
4811+
"@gerrit0/mini-shiki" "^1.24.0"
4812+
lunr "^2.3.9"
4813+
markdown-it "^14.1.0"
4814+
minimatch "^9.0.5"
4815+
yaml "^2.6.1"
4816+
47064817
typescript@^5.4.5:
47074818
version "5.4.5"
47084819
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611"
47094820
integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==
47104821

4822+
uc.micro@^2.0.0, uc.micro@^2.1.0:
4823+
version "2.1.0"
4824+
resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.1.0.tgz#f8d3f7d0ec4c3dea35a7e3c8efa4cb8b45c9e7ee"
4825+
integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==
4826+
47114827
unbox-primitive@^1.0.2:
47124828
version "1.0.2"
47134829
resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz"
@@ -4892,6 +5008,11 @@ yaml@^2.2.1:
48925008
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.2.tgz#7a2b30f2243a5fc299e1f14ca58d475ed4bc5362"
48935009
integrity sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==
48945010

5011+
yaml@^2.6.1:
5012+
version "2.7.0"
5013+
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.7.0.tgz#aef9bb617a64c937a9a748803786ad8d3ffe1e98"
5014+
integrity sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==
5015+
48955016
yargs-parser@^21.0.1, yargs-parser@^21.1.1:
48965017
version "21.1.1"
48975018
resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz"

0 commit comments

Comments
 (0)