mcp-scraper 0.88.0 → 0.88.2
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/CHANGELOG.md +13 -0
- package/README.md +1 -1
- package/dist/bin/api-server.js +1 -1
- package/dist/bin/mcp-scraper-cli.js +1 -1
- package/dist/bin/mcp-scraper-core.js +3 -3
- package/dist/bin/mcp-scraper-install.js +1 -1
- package/dist/bin/mcp-stdio-server.js +3 -3
- package/dist/{chunk-XIJI34RM.js → chunk-K45K75OF.js} +1 -1
- package/dist/{chunk-P5FPC54B.js → chunk-LFW2FRPJ.js} +2 -2
- package/dist/{chunk-2JVZQGSN.js → chunk-PKZS6SHW.js} +41 -51
- package/dist/{server-PD3TDL6Q.js → server-SQZ3A7SY.js} +7 -3
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,19 @@ All notable changes to MCP Scraper are documented here. The format is based on [
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.88.2] - 2026-09-02
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- Normalized mounted `/analytics` route paths before sampled REST response validation, preventing successful X-Ray responses from intermittently becoming `analytics_rest_operation_unknown` 500 errors in production.
|
|
12
|
+
- Applied the current additive analytics schema migration so consented authenticated identity events can populate the governed person graph without a missing `crm_entity_id` column failure.
|
|
13
|
+
|
|
14
|
+
## [0.88.1] - 2026-09-02
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- Updated the root server's in-process Memory dependency to the released JWT-aware `mcpscraper-memory-tools` 1.19.0 and `mcpscraper-memory-db` 1.18.0, so the unified customer key reaches Memory, Research, and CRM without being mistaken for a retired legacy key.
|
|
19
|
+
|
|
7
20
|
## [0.88.0] - 2026-09-02
|
|
8
21
|
|
|
9
22
|
### Changed
|
package/README.md
CHANGED
|
@@ -175,7 +175,7 @@ Build the branded one-click bundle:
|
|
|
175
175
|
npm run build:mcpb
|
|
176
176
|
```
|
|
177
177
|
|
|
178
|
-
The generated bundle is written to `build/mcpb/mcp-scraper-<version>.mcpb` and copied to `public/downloads/` for the hosted download. The current public bundle is `https://mcpscraper.dev/downloads/mcp-scraper.mcpb` (`0.88.
|
|
178
|
+
The generated bundle is written to `build/mcpb/mcp-scraper-<version>.mcpb` and copied to `public/downloads/` for the hosted download. The current public bundle is `https://mcpscraper.dev/downloads/mcp-scraper.mcpb` (`0.88.2`, SHA-256 `353608a80e9c4b9879e3fa293aaa095a7f5c75b4b713f127d044775b329e455f`). Install it by opening or dragging it into Claude Desktop. Claude displays the `MCP Scraper` install card, icon, API-key configuration field, and manually curated current-release message from the bundle manifest.
|
|
179
179
|
|
|
180
180
|
The MCPB install exposes every tool — web-intelligence plus all `browser_*` tools — through the one `mcp-scraper` server.
|
|
181
181
|
|
package/dist/bin/api-server.js
CHANGED
|
@@ -17,7 +17,7 @@ loadDotEnv();
|
|
|
17
17
|
async function main() {
|
|
18
18
|
const [{ serve }, { app, personalAssistantProductionStartup }, { startWorker }, { migrate }] = await Promise.all([
|
|
19
19
|
import("@hono/node-server"),
|
|
20
|
-
import("../server-
|
|
20
|
+
import("../server-SQZ3A7SY.js"),
|
|
21
21
|
import("../worker-LDCAULWL.js"),
|
|
22
22
|
import("../db-Z34LPZNR.js")
|
|
23
23
|
]);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
runMcpScraperStdio
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-LFW2FRPJ.js";
|
|
5
|
+
import "../chunk-PKZS6SHW.js";
|
|
6
6
|
import "../chunk-PGJQDMC2.js";
|
|
7
7
|
import "../chunk-DNM65UCK.js";
|
|
8
8
|
import "../chunk-T3MZISOF.js";
|
|
@@ -13,7 +13,7 @@ import "../chunk-OPQIGAFB.js";
|
|
|
13
13
|
import "../chunk-ABF2CGOZ.js";
|
|
14
14
|
import "../chunk-P7FWOMU7.js";
|
|
15
15
|
import "../chunk-GGZEC22A.js";
|
|
16
|
-
import "../chunk-
|
|
16
|
+
import "../chunk-K45K75OF.js";
|
|
17
17
|
import "../chunk-YXNDOQXN.js";
|
|
18
18
|
|
|
19
19
|
// src/mcp/thorbit-restricted-tool-surface.ts
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "../chunk-ABF2CGOZ.js";
|
|
5
5
|
import {
|
|
6
6
|
PACKAGE_VERSION
|
|
7
|
-
} from "../chunk-
|
|
7
|
+
} from "../chunk-K45K75OF.js";
|
|
8
8
|
|
|
9
9
|
// bin/mcp-scraper-install.ts
|
|
10
10
|
var noColor = process.argv.includes("--no-color") || process.env.NO_COLOR !== void 0 || process.env.FORCE_COLOR === "0" || !process.stdout.isTTY;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
runMcpScraperStdio
|
|
4
|
-
} from "../chunk-
|
|
5
|
-
import "../chunk-
|
|
4
|
+
} from "../chunk-LFW2FRPJ.js";
|
|
5
|
+
import "../chunk-PKZS6SHW.js";
|
|
6
6
|
import "../chunk-PGJQDMC2.js";
|
|
7
7
|
import "../chunk-DNM65UCK.js";
|
|
8
8
|
import "../chunk-T3MZISOF.js";
|
|
@@ -13,7 +13,7 @@ import "../chunk-OPQIGAFB.js";
|
|
|
13
13
|
import "../chunk-ABF2CGOZ.js";
|
|
14
14
|
import "../chunk-P7FWOMU7.js";
|
|
15
15
|
import "../chunk-GGZEC22A.js";
|
|
16
|
-
import "../chunk-
|
|
16
|
+
import "../chunk-K45K75OF.js";
|
|
17
17
|
import "../chunk-YXNDOQXN.js";
|
|
18
18
|
|
|
19
19
|
// bin/mcp-stdio-server.ts
|
|
@@ -12,13 +12,13 @@ import {
|
|
|
12
12
|
registerScheduledResultsMcpTools,
|
|
13
13
|
registerSerpIntelligenceCaptureTools,
|
|
14
14
|
resolveDeploymentProfile
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-PKZS6SHW.js";
|
|
16
16
|
import {
|
|
17
17
|
renderInstallTerminal
|
|
18
18
|
} from "./chunk-ABF2CGOZ.js";
|
|
19
19
|
import {
|
|
20
20
|
PACKAGE_VERSION
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-K45K75OF.js";
|
|
22
22
|
|
|
23
23
|
// src/mcp/stdio-runtime.ts
|
|
24
24
|
import { readFileSync } from "fs";
|
|
@@ -50,7 +50,7 @@ import {
|
|
|
50
50
|
} from "./chunk-P7FWOMU7.js";
|
|
51
51
|
import {
|
|
52
52
|
PACKAGE_VERSION
|
|
53
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-K45K75OF.js";
|
|
54
54
|
import {
|
|
55
55
|
PUBLIC_ERROR_CODES,
|
|
56
56
|
buildPublicErrorEnvelope,
|
|
@@ -18425,6 +18425,10 @@ function operationIdForAnalyticsRoute(method, path) {
|
|
|
18425
18425
|
const domain = path.split("/").filter(Boolean).map((segment) => segment.startsWith(":") ? `by_${segment.slice(1)}` : segment).join("_").replace(/[^a-zA-Z0-9_]+/g, "_").replace(/([a-z0-9])([A-Z])/g, "$1_$2").toLowerCase() || "root";
|
|
18426
18426
|
return `analytics.${domain}.${method.toLowerCase()}.v1`;
|
|
18427
18427
|
}
|
|
18428
|
+
function normalizeAnalyticsContractRoutePath(path) {
|
|
18429
|
+
if (path === "/analytics") return "/";
|
|
18430
|
+
return path.startsWith("/analytics/") ? path.slice("/analytics".length) : path;
|
|
18431
|
+
}
|
|
18428
18432
|
var CurrencySchema = z19.object({
|
|
18429
18433
|
valueMinor: z19.number().int().safe(),
|
|
18430
18434
|
currency: z19.string().regex(/^[A-Z]{3}$/).nullable()
|
|
@@ -22680,11 +22684,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
|
|
|
22680
22684
|
"type": "object",
|
|
22681
22685
|
"properties": {
|
|
22682
22686
|
"ok": {
|
|
22683
|
-
"type": "boolean"
|
|
22684
|
-
"enum": [
|
|
22685
|
-
true,
|
|
22686
|
-
false
|
|
22687
|
-
]
|
|
22687
|
+
"type": "boolean"
|
|
22688
22688
|
},
|
|
22689
22689
|
"project": {
|
|
22690
22690
|
"type": "object",
|
|
@@ -22752,11 +22752,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
|
|
|
22752
22752
|
"type": "object",
|
|
22753
22753
|
"properties": {
|
|
22754
22754
|
"ok": {
|
|
22755
|
-
"type": "boolean"
|
|
22756
|
-
"enum": [
|
|
22757
|
-
true,
|
|
22758
|
-
false
|
|
22759
|
-
]
|
|
22755
|
+
"type": "boolean"
|
|
22760
22756
|
},
|
|
22761
22757
|
"projects": {
|
|
22762
22758
|
"type": "array",
|
|
@@ -22852,11 +22848,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
|
|
|
22852
22848
|
"type": "object",
|
|
22853
22849
|
"properties": {
|
|
22854
22850
|
"ok": {
|
|
22855
|
-
"type": "boolean"
|
|
22856
|
-
"enum": [
|
|
22857
|
-
true,
|
|
22858
|
-
false
|
|
22859
|
-
]
|
|
22851
|
+
"type": "boolean"
|
|
22860
22852
|
},
|
|
22861
22853
|
"folder": {
|
|
22862
22854
|
"type": "object",
|
|
@@ -22939,11 +22931,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
|
|
|
22939
22931
|
"type": "object",
|
|
22940
22932
|
"properties": {
|
|
22941
22933
|
"ok": {
|
|
22942
|
-
"type": "boolean"
|
|
22943
|
-
"enum": [
|
|
22944
|
-
true,
|
|
22945
|
-
false
|
|
22946
|
-
]
|
|
22934
|
+
"type": "boolean"
|
|
22947
22935
|
},
|
|
22948
22936
|
"folders": {
|
|
22949
22937
|
"type": "array",
|
|
@@ -23101,11 +23089,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
|
|
|
23101
23089
|
"type": "object",
|
|
23102
23090
|
"properties": {
|
|
23103
23091
|
"ok": {
|
|
23104
|
-
"type": "boolean"
|
|
23105
|
-
"enum": [
|
|
23106
|
-
true,
|
|
23107
|
-
false
|
|
23108
|
-
]
|
|
23092
|
+
"type": "boolean"
|
|
23109
23093
|
},
|
|
23110
23094
|
"asset": {
|
|
23111
23095
|
"type": "object",
|
|
@@ -23143,6 +23127,10 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
|
|
|
23143
23127
|
"bytes": {
|
|
23144
23128
|
"type": "number"
|
|
23145
23129
|
},
|
|
23130
|
+
"sha256": {
|
|
23131
|
+
"type": "string",
|
|
23132
|
+
"pattern": "^[0-9a-f]{64}$"
|
|
23133
|
+
},
|
|
23146
23134
|
"width": {
|
|
23147
23135
|
"type": "number"
|
|
23148
23136
|
},
|
|
@@ -23212,6 +23200,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
|
|
|
23212
23200
|
"sourceKind",
|
|
23213
23201
|
"mimeType",
|
|
23214
23202
|
"bytes",
|
|
23203
|
+
"sha256",
|
|
23215
23204
|
"width",
|
|
23216
23205
|
"height",
|
|
23217
23206
|
"projectId",
|
|
@@ -23280,11 +23269,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
|
|
|
23280
23269
|
"type": "object",
|
|
23281
23270
|
"properties": {
|
|
23282
23271
|
"ok": {
|
|
23283
|
-
"type": "boolean"
|
|
23284
|
-
"enum": [
|
|
23285
|
-
true,
|
|
23286
|
-
false
|
|
23287
|
-
]
|
|
23272
|
+
"type": "boolean"
|
|
23288
23273
|
},
|
|
23289
23274
|
"asset": {
|
|
23290
23275
|
"type": "object",
|
|
@@ -23322,6 +23307,10 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
|
|
|
23322
23307
|
"bytes": {
|
|
23323
23308
|
"type": "number"
|
|
23324
23309
|
},
|
|
23310
|
+
"sha256": {
|
|
23311
|
+
"type": "string",
|
|
23312
|
+
"pattern": "^[0-9a-f]{64}$"
|
|
23313
|
+
},
|
|
23325
23314
|
"width": {
|
|
23326
23315
|
"type": "number"
|
|
23327
23316
|
},
|
|
@@ -23391,6 +23380,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
|
|
|
23391
23380
|
"sourceKind",
|
|
23392
23381
|
"mimeType",
|
|
23393
23382
|
"bytes",
|
|
23383
|
+
"sha256",
|
|
23394
23384
|
"width",
|
|
23395
23385
|
"height",
|
|
23396
23386
|
"projectId",
|
|
@@ -23496,11 +23486,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
|
|
|
23496
23486
|
"type": "object",
|
|
23497
23487
|
"properties": {
|
|
23498
23488
|
"ok": {
|
|
23499
|
-
"type": "boolean"
|
|
23500
|
-
"enum": [
|
|
23501
|
-
true,
|
|
23502
|
-
false
|
|
23503
|
-
]
|
|
23489
|
+
"type": "boolean"
|
|
23504
23490
|
},
|
|
23505
23491
|
"assets": {
|
|
23506
23492
|
"type": "array",
|
|
@@ -23540,6 +23526,10 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
|
|
|
23540
23526
|
"bytes": {
|
|
23541
23527
|
"type": "number"
|
|
23542
23528
|
},
|
|
23529
|
+
"sha256": {
|
|
23530
|
+
"type": "string",
|
|
23531
|
+
"pattern": "^[0-9a-f]{64}$"
|
|
23532
|
+
},
|
|
23543
23533
|
"width": {
|
|
23544
23534
|
"type": "number"
|
|
23545
23535
|
},
|
|
@@ -23609,6 +23599,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
|
|
|
23609
23599
|
"sourceKind",
|
|
23610
23600
|
"mimeType",
|
|
23611
23601
|
"bytes",
|
|
23602
|
+
"sha256",
|
|
23612
23603
|
"width",
|
|
23613
23604
|
"height",
|
|
23614
23605
|
"projectId",
|
|
@@ -23739,11 +23730,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
|
|
|
23739
23730
|
"type": "object",
|
|
23740
23731
|
"properties": {
|
|
23741
23732
|
"ok": {
|
|
23742
|
-
"type": "boolean"
|
|
23743
|
-
"enum": [
|
|
23744
|
-
true,
|
|
23745
|
-
false
|
|
23746
|
-
]
|
|
23733
|
+
"type": "boolean"
|
|
23747
23734
|
},
|
|
23748
23735
|
"results": {
|
|
23749
23736
|
"type": "array",
|
|
@@ -23786,6 +23773,10 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
|
|
|
23786
23773
|
"bytes": {
|
|
23787
23774
|
"type": "number"
|
|
23788
23775
|
},
|
|
23776
|
+
"sha256": {
|
|
23777
|
+
"type": "string",
|
|
23778
|
+
"pattern": "^[0-9a-f]{64}$"
|
|
23779
|
+
},
|
|
23789
23780
|
"width": {
|
|
23790
23781
|
"type": "number"
|
|
23791
23782
|
},
|
|
@@ -23855,6 +23846,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
|
|
|
23855
23846
|
"sourceKind",
|
|
23856
23847
|
"mimeType",
|
|
23857
23848
|
"bytes",
|
|
23849
|
+
"sha256",
|
|
23858
23850
|
"width",
|
|
23859
23851
|
"height",
|
|
23860
23852
|
"projectId",
|
|
@@ -23964,11 +23956,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
|
|
|
23964
23956
|
"type": "object",
|
|
23965
23957
|
"properties": {
|
|
23966
23958
|
"ok": {
|
|
23967
|
-
"type": "boolean"
|
|
23968
|
-
"enum": [
|
|
23969
|
-
true,
|
|
23970
|
-
false
|
|
23971
|
-
]
|
|
23959
|
+
"type": "boolean"
|
|
23972
23960
|
},
|
|
23973
23961
|
"asset": {
|
|
23974
23962
|
"type": "object",
|
|
@@ -24006,6 +23994,10 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
|
|
|
24006
23994
|
"bytes": {
|
|
24007
23995
|
"type": "number"
|
|
24008
23996
|
},
|
|
23997
|
+
"sha256": {
|
|
23998
|
+
"type": "string",
|
|
23999
|
+
"pattern": "^[0-9a-f]{64}$"
|
|
24000
|
+
},
|
|
24009
24001
|
"width": {
|
|
24010
24002
|
"type": "number"
|
|
24011
24003
|
},
|
|
@@ -24075,6 +24067,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
|
|
|
24075
24067
|
"sourceKind",
|
|
24076
24068
|
"mimeType",
|
|
24077
24069
|
"bytes",
|
|
24070
|
+
"sha256",
|
|
24078
24071
|
"width",
|
|
24079
24072
|
"height",
|
|
24080
24073
|
"projectId",
|
|
@@ -24139,11 +24132,7 @@ var MEMORY_IMAGE_TOOL_SCHEMAS = [
|
|
|
24139
24132
|
"type": "object",
|
|
24140
24133
|
"properties": {
|
|
24141
24134
|
"ok": {
|
|
24142
|
-
"type": "boolean"
|
|
24143
|
-
"enum": [
|
|
24144
|
-
true,
|
|
24145
|
-
false
|
|
24146
|
-
]
|
|
24135
|
+
"type": "boolean"
|
|
24147
24136
|
},
|
|
24148
24137
|
"deleted": {
|
|
24149
24138
|
"type": "boolean"
|
|
@@ -33134,6 +33123,7 @@ export {
|
|
|
33134
33123
|
buildPaaExtractorMcpServer,
|
|
33135
33124
|
registerPaaExtractorMcpTools,
|
|
33136
33125
|
operationIdForAnalyticsRoute,
|
|
33126
|
+
normalizeAnalyticsContractRoutePath,
|
|
33137
33127
|
normalizeAnalyticsRestErrorEnvelope,
|
|
33138
33128
|
ANALYTICS_REST_GENERIC_EXEMPTIONS,
|
|
33139
33129
|
analyticsRestContractMetadata,
|
|
@@ -370,6 +370,7 @@ import {
|
|
|
370
370
|
leadListOutputRows,
|
|
371
371
|
listAnalyticsRuntimeExperiments,
|
|
372
372
|
localSourcebookSchemaContract,
|
|
373
|
+
normalizeAnalyticsContractRoutePath,
|
|
373
374
|
normalizeAnalyticsRestErrorEnvelope,
|
|
374
375
|
normalizeLeadRows,
|
|
375
376
|
operationIdForAnalyticsRoute,
|
|
@@ -388,7 +389,7 @@ import {
|
|
|
388
389
|
transcribeMediaUrl,
|
|
389
390
|
transitionAnalyticsExperiment,
|
|
390
391
|
validateAnalyticsRestResponseForRequest
|
|
391
|
-
} from "./chunk-
|
|
392
|
+
} from "./chunk-PKZS6SHW.js";
|
|
392
393
|
import {
|
|
393
394
|
auditImageUrls,
|
|
394
395
|
auditImages,
|
|
@@ -509,7 +510,7 @@ import {
|
|
|
509
510
|
} from "./chunk-GGZEC22A.js";
|
|
510
511
|
import {
|
|
511
512
|
PACKAGE_VERSION
|
|
512
|
-
} from "./chunk-
|
|
513
|
+
} from "./chunk-K45K75OF.js";
|
|
513
514
|
import {
|
|
514
515
|
CaptchaError,
|
|
515
516
|
MapsSearchIncompletePageError,
|
|
@@ -53896,7 +53897,10 @@ analyticsApp.use("*", async (c, next) => {
|
|
|
53896
53897
|
return;
|
|
53897
53898
|
}
|
|
53898
53899
|
if (c.res.status >= 200 && c.res.status < 300 && contentType.includes("application/json") && routePath && ["GET", "POST", "PATCH", "DELETE"].includes(method)) {
|
|
53899
|
-
const operationId = operationIdForAnalyticsRoute(
|
|
53900
|
+
const operationId = operationIdForAnalyticsRoute(
|
|
53901
|
+
method,
|
|
53902
|
+
normalizeAnalyticsContractRoutePath(routePath)
|
|
53903
|
+
);
|
|
53900
53904
|
if (!analyticsGenericContractExemptions.has(operationId)) {
|
|
53901
53905
|
const payload = await c.res.clone().json();
|
|
53902
53906
|
validateAnalyticsRestResponseForRequest(operationId, payload, analyticsContractRequestId(c));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-scraper",
|
|
3
|
-
"version": "0.88.
|
|
3
|
+
"version": "0.88.2",
|
|
4
4
|
"description": "MCP server for MCP Scraper web intelligence tools",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -136,7 +136,7 @@
|
|
|
136
136
|
"ipaddr.js": "^1.9.1",
|
|
137
137
|
"jose": "^6.2.3",
|
|
138
138
|
"marked": "^18.0.7",
|
|
139
|
-
"mcpscraper-memory-tools": "1.
|
|
139
|
+
"mcpscraper-memory-tools": "1.19.0",
|
|
140
140
|
"p-limit": "^7.3.0",
|
|
141
141
|
"papaparse": "^5.4.0",
|
|
142
142
|
"pg": "^8.23.0",
|