@apify/mcpc 0.2.6 → 0.3.0-beta.1
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 +34 -0
- package/CONTRIBUTING.md +50 -147
- package/NOTICE +27 -0
- package/README.md +191 -235
- package/_config.yml +30 -0
- package/client-logo.svg +79 -0
- package/client-metadata.json +16 -0
- package/dist/bridge/index.js +25 -0
- package/dist/bridge/index.js.map +1 -1
- package/dist/cli/commands/auth.d.ts +2 -1
- package/dist/cli/commands/auth.d.ts.map +1 -1
- package/dist/cli/commands/auth.js +27 -12
- package/dist/cli/commands/auth.js.map +1 -1
- package/dist/cli/commands/grep.js +4 -4
- package/dist/cli/commands/grep.js.map +1 -1
- package/dist/cli/commands/sessions.d.ts +21 -2
- package/dist/cli/commands/sessions.d.ts.map +1 -1
- package/dist/cli/commands/sessions.js +366 -66
- package/dist/cli/commands/sessions.js.map +1 -1
- package/dist/cli/commands/tasks.d.ts.map +1 -1
- package/dist/cli/commands/tasks.js +6 -3
- package/dist/cli/commands/tasks.js.map +1 -1
- package/dist/cli/commands/tools.d.ts.map +1 -1
- package/dist/cli/commands/tools.js +42 -18
- package/dist/cli/commands/tools.js.map +1 -1
- package/dist/cli/commands/x402.d.ts.map +1 -1
- package/dist/cli/commands/x402.js +6 -6
- package/dist/cli/commands/x402.js.map +1 -1
- package/dist/cli/helpers.d.ts.map +1 -1
- package/dist/cli/helpers.js +3 -6
- package/dist/cli/helpers.js.map +1 -1
- package/dist/cli/index.js +110 -73
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/output.d.ts +13 -5
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +176 -77
- package/dist/cli/output.js.map +1 -1
- package/dist/cli/parser.d.ts.map +1 -1
- package/dist/cli/parser.js +19 -9
- package/dist/cli/parser.js.map +1 -1
- package/dist/cli/shell.js +19 -19
- package/dist/cli/shell.js.map +1 -1
- package/dist/cli/tool-result.d.ts +1 -1
- package/dist/cli/tool-result.d.ts.map +1 -1
- package/dist/cli/tool-result.js +20 -15
- package/dist/cli/tool-result.js.map +1 -1
- package/dist/core/factory.d.ts +1 -0
- package/dist/core/factory.d.ts.map +1 -1
- package/dist/core/factory.js +3 -0
- package/dist/core/factory.js.map +1 -1
- package/dist/core/transports.d.ts +5 -1
- package/dist/core/transports.d.ts.map +1 -1
- package/dist/core/transports.js +26 -4
- package/dist/core/transports.js.map +1 -1
- package/dist/lib/auth/auth-page.d.ts +13 -0
- package/dist/lib/auth/auth-page.d.ts.map +1 -0
- package/dist/lib/auth/auth-page.js +129 -0
- package/dist/lib/auth/auth-page.js.map +1 -0
- package/dist/lib/auth/oauth-flow.d.ts +1 -1
- package/dist/lib/auth/oauth-flow.d.ts.map +1 -1
- package/dist/lib/auth/oauth-flow.js +50 -67
- package/dist/lib/auth/oauth-flow.js.map +1 -1
- package/dist/lib/auth/oauth-provider.d.ts.map +1 -1
- package/dist/lib/auth/oauth-provider.js +2 -0
- package/dist/lib/auth/oauth-provider.js.map +1 -1
- package/dist/lib/auth/oauth-utils.d.ts +3 -0
- package/dist/lib/auth/oauth-utils.d.ts.map +1 -1
- package/dist/lib/auth/oauth-utils.js +32 -1
- package/dist/lib/auth/oauth-utils.js.map +1 -1
- package/dist/lib/auth/profiles.d.ts.map +1 -1
- package/dist/lib/auth/profiles.js +3 -3
- package/dist/lib/auth/profiles.js.map +1 -1
- package/dist/lib/bridge-manager.d.ts.map +1 -1
- package/dist/lib/bridge-manager.js +21 -9
- package/dist/lib/bridge-manager.js.map +1 -1
- package/dist/lib/config.d.ts +21 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +94 -4
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/errors.d.ts +1 -0
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +3 -0
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/sessions.d.ts.map +1 -1
- package/dist/lib/sessions.js +5 -4
- package/dist/lib/sessions.js.map +1 -1
- package/dist/lib/utils.d.ts +1 -0
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +21 -1
- package/dist/lib/utils.js.map +1 -1
- package/dist/lib/wallets.js +3 -3
- package/dist/lib/wallets.js.map +1 -1
- package/docs/examples/company-lookup.sh +134 -0
- package/docs/examples/mcp-config.json +28 -0
- package/package.json +39 -33
- package/pnpm-workspace.yaml +10 -0
- package/tsconfig.test.json +2 -1
- package/vitest.config.ts +26 -0
package/dist/lib/wallets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallets.js","sourceRoot":"","sources":["../../src/lib/wallets.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"wallets.js","sourceRoot":"","sources":["../../src/lib/wallets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
#
|
|
3
|
+
# Company Lookup Script using mcpc + Apify RAG Web Browser
|
|
4
|
+
#
|
|
5
|
+
# This is an example of an AI-generated "code mode" script that uses mcpc
|
|
6
|
+
# to call MCP tools programmatically. It was generated by Claude Code + Opus 4.5.
|
|
7
|
+
#
|
|
8
|
+
# Prerequisites:
|
|
9
|
+
# 1. Install mcpc: npm install -g @apify/mcpc
|
|
10
|
+
# 2. Login to Apify MCP server: mcpc mcp.apify.com login
|
|
11
|
+
# 3. Create a session: mcpc mcp.apify.com connect @apify
|
|
12
|
+
#
|
|
13
|
+
# Usage:
|
|
14
|
+
# ./company-lookup.sh "Company Name"
|
|
15
|
+
#
|
|
16
|
+
# Example:
|
|
17
|
+
# ./company-lookup.sh "Stripe"
|
|
18
|
+
# ./company-lookup.sh "Anthropic"
|
|
19
|
+
#
|
|
20
|
+
|
|
21
|
+
set -e
|
|
22
|
+
|
|
23
|
+
# Configuration
|
|
24
|
+
SESSION="${MCPC_SESSION:-@apify}"
|
|
25
|
+
REQUIRED_TOOL="apify-slash-rag-web-browser"
|
|
26
|
+
|
|
27
|
+
# Colors for output
|
|
28
|
+
RED='\033[0;31m'
|
|
29
|
+
GREEN='\033[0;32m'
|
|
30
|
+
YELLOW='\033[0;33m'
|
|
31
|
+
BLUE='\033[0;34m'
|
|
32
|
+
NC='\033[0m' # No Color
|
|
33
|
+
|
|
34
|
+
# Helper functions
|
|
35
|
+
error() { echo -e "${RED}❌ Error: $1${NC}" >&2; exit 1; }
|
|
36
|
+
info() { echo -e "${BLUE}$1${NC}"; }
|
|
37
|
+
success() { echo -e "${GREEN}$1${NC}"; }
|
|
38
|
+
warn() { echo -e "${YELLOW}$1${NC}"; }
|
|
39
|
+
|
|
40
|
+
# Check if mcpc is installed
|
|
41
|
+
if ! command -v mcpc &> /dev/null; then
|
|
42
|
+
error "mcpc is not installed. Install it with: npm install -g @apify/mcpc"
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
# Parse arguments
|
|
46
|
+
COMPANY="${1:-}"
|
|
47
|
+
if [ -z "$COMPANY" ]; then
|
|
48
|
+
echo "Usage: $0 \"Company Name\""
|
|
49
|
+
echo ""
|
|
50
|
+
echo "Examples:"
|
|
51
|
+
echo " $0 \"Stripe\""
|
|
52
|
+
echo " $0 \"Anthropic\""
|
|
53
|
+
echo ""
|
|
54
|
+
echo "Environment variables:"
|
|
55
|
+
echo " MCPC_SESSION Session to use (default: @apify)"
|
|
56
|
+
exit 1
|
|
57
|
+
fi
|
|
58
|
+
|
|
59
|
+
# Check if the session exists and is live
|
|
60
|
+
info "🔌 Checking session ${SESSION}..."
|
|
61
|
+
|
|
62
|
+
SESSION_STATUS=$(mcpc --json 2>/dev/null | jq -r ".sessions[] | select(.name == \"${SESSION}\") | .status" 2>/dev/null || echo "")
|
|
63
|
+
|
|
64
|
+
if [ -z "$SESSION_STATUS" ]; then
|
|
65
|
+
echo ""
|
|
66
|
+
error "Session ${SESSION} not found.
|
|
67
|
+
|
|
68
|
+
To set up the required session:
|
|
69
|
+
1. Login to Apify: mcpc mcp.apify.com login
|
|
70
|
+
2. Create session: mcpc mcp.apify.com connect ${SESSION}
|
|
71
|
+
|
|
72
|
+
Or use a different session by setting MCPC_SESSION environment variable."
|
|
73
|
+
fi
|
|
74
|
+
|
|
75
|
+
if [ "$SESSION_STATUS" = "expired" ]; then
|
|
76
|
+
error "Session ${SESSION} has expired. Please recreate it:
|
|
77
|
+
mcpc ${SESSION} close
|
|
78
|
+
mcpc mcp.apify.com connect ${SESSION}"
|
|
79
|
+
fi
|
|
80
|
+
|
|
81
|
+
if [ "$SESSION_STATUS" = "crashed" ]; then
|
|
82
|
+
warn "⚠️ Session ${SESSION} has crashed, will attempt to restart..."
|
|
83
|
+
fi
|
|
84
|
+
|
|
85
|
+
# Verify the required tool is available
|
|
86
|
+
info "🔧 Checking for required tool..."
|
|
87
|
+
|
|
88
|
+
TOOL_EXISTS=$(mcpc --json "${SESSION}" tools-list 2>/dev/null | jq -r ".[] | select(.name == \"${REQUIRED_TOOL}\") | .name" 2>/dev/null || echo "")
|
|
89
|
+
|
|
90
|
+
if [ -z "$TOOL_EXISTS" ]; then
|
|
91
|
+
error "Required tool '${REQUIRED_TOOL}' not found on server.
|
|
92
|
+
Make sure you're connected to the correct MCP server (mcp.apify.com)."
|
|
93
|
+
fi
|
|
94
|
+
|
|
95
|
+
# All checks passed, proceed with the lookup
|
|
96
|
+
echo ""
|
|
97
|
+
info "🔍 Looking up: $COMPANY"
|
|
98
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
99
|
+
echo ""
|
|
100
|
+
info "⏳ Searching the web..."
|
|
101
|
+
echo ""
|
|
102
|
+
|
|
103
|
+
# Build the query - company name + search terms
|
|
104
|
+
QUERY="${COMPANY} company headquarters address"
|
|
105
|
+
|
|
106
|
+
# Use mcpc with the RAG web browser to fetch results as JSON
|
|
107
|
+
RESULT=$(mcpc "${SESSION}" tools-call "${REQUIRED_TOOL}" \
|
|
108
|
+
query:="$QUERY" \
|
|
109
|
+
maxResults:=1 \
|
|
110
|
+
outputFormats:='["markdown"]' \
|
|
111
|
+
--json 2>/dev/null) || error "Failed to call tool. Check your session and try again."
|
|
112
|
+
|
|
113
|
+
# Parse the markdown from the result
|
|
114
|
+
MARKDOWN=$(echo "$RESULT" \
|
|
115
|
+
| jq -r '.content[0].text // empty' 2>/dev/null \
|
|
116
|
+
| jq -r '.[0].markdown // empty' 2>/dev/null)
|
|
117
|
+
|
|
118
|
+
# Check if we got results
|
|
119
|
+
if [ -z "$MARKDOWN" ]; then
|
|
120
|
+
warn "⚠️ No results found for '$COMPANY'"
|
|
121
|
+
echo ""
|
|
122
|
+
echo "Raw response:"
|
|
123
|
+
echo "$RESULT" | jq '.' 2>/dev/null || echo "$RESULT"
|
|
124
|
+
exit 1
|
|
125
|
+
fi
|
|
126
|
+
|
|
127
|
+
echo "📄 Company Information:"
|
|
128
|
+
echo "────────────────────────────────────────────────────"
|
|
129
|
+
# Show first 50 lines of markdown
|
|
130
|
+
echo "$MARKDOWN" | head -50
|
|
131
|
+
|
|
132
|
+
echo ""
|
|
133
|
+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
134
|
+
success "✅ Done"
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mcpServers": {
|
|
3
|
+
"playwright": {
|
|
4
|
+
"command": "npx",
|
|
5
|
+
"args": ["@playwright/mcp@latest"]
|
|
6
|
+
},
|
|
7
|
+
|
|
8
|
+
"fs": {
|
|
9
|
+
"command": "npx",
|
|
10
|
+
"args": ["-y", "@modelcontextprotocol/server-filesystem", "${PWD}"]
|
|
11
|
+
},
|
|
12
|
+
|
|
13
|
+
"apify-public": {
|
|
14
|
+
"url": "https://mcp.apify.com/?tools=docs,search-actors"
|
|
15
|
+
},
|
|
16
|
+
|
|
17
|
+
"apify-bearer": {
|
|
18
|
+
"url": "https://mcp.apify.com",
|
|
19
|
+
"headers": {
|
|
20
|
+
"Authorization": "Bearer ${APIFY_TOKEN}"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
"apify-oauth": {
|
|
25
|
+
"url": "https://mcp.apify.com"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apify/mcpc",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0-beta.1",
|
|
4
4
|
"description": "Universal command-line client for the Model Context Protocol (MCP).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
@@ -28,31 +28,6 @@
|
|
|
28
28
|
"engines": {
|
|
29
29
|
"node": ">=20.0.0"
|
|
30
30
|
},
|
|
31
|
-
"scripts": {
|
|
32
|
-
"build": "tsc",
|
|
33
|
-
"build:watch": "tsc --watch",
|
|
34
|
-
"build:readme": "./scripts/update-readme.sh",
|
|
35
|
-
"test": "npm run build && npm run test:unit && ./test/e2e/run.sh --no-build --parallel 8 && ./test/e2e/run.sh --no-build --parallel 8 --runtime bun",
|
|
36
|
-
"test:unit": "jest",
|
|
37
|
-
"test:watch": "jest --watch",
|
|
38
|
-
"test:coverage": "npm run test:coverage:unit && npm run test:coverage:e2e && npm run test:coverage:merge",
|
|
39
|
-
"test:coverage:unit": "jest --coverage && find test/coverage/unit -name '*.html' -exec sed -i '' -e 's/Code coverage report for All files/mcpc Coverage (Unit Tests)/g' -e 's/<h1>All files<\\/h1>/<h1>Unit Test Coverage<\\/h1>/g' {} \\;",
|
|
40
|
-
"test:coverage:e2e": "./test/e2e/run.sh --coverage",
|
|
41
|
-
"test:coverage:merge": "test/coverage/coverage-merge.sh",
|
|
42
|
-
"test:e2e": "./test/e2e/run.sh --keep",
|
|
43
|
-
"test:e2e:bun": "./test/e2e/run.sh --no-build --runtime bun",
|
|
44
|
-
"lint": "eslint src/**/*.ts && prettier --check \"src/**/*.ts\" \"test/**/*.ts\"",
|
|
45
|
-
"lint:fix": "eslint src/**/*.ts --fix && prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
|
|
46
|
-
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
|
|
47
|
-
"format:check": "prettier --check \"src/**/*.ts\" \"test/**/*.ts\"",
|
|
48
|
-
"clean": "rm -rf dist",
|
|
49
|
-
"prebuild": "npm run clean",
|
|
50
|
-
"prepublishOnly": "if [ -z \"$MCPC_RELEASE\" ]; then echo '\\n❌ Direct npm publish is not allowed.\\n Please use: npm run release\\n' && exit 1; fi",
|
|
51
|
-
"release": "bash scripts/publish.sh",
|
|
52
|
-
"release:minor": "bash scripts/publish.sh minor",
|
|
53
|
-
"release:major": "bash scripts/publish.sh major",
|
|
54
|
-
"release:pre": "bash scripts/publish.sh --pre-release"
|
|
55
|
-
},
|
|
56
31
|
"dependencies": {
|
|
57
32
|
"@inquirer/input": "^5.0.3",
|
|
58
33
|
"@inquirer/select": "^5.0.3",
|
|
@@ -68,23 +43,54 @@
|
|
|
68
43
|
"viem": "^2.46.3"
|
|
69
44
|
},
|
|
70
45
|
"devDependencies": {
|
|
71
|
-
"@types/jest": "^30.0.0",
|
|
72
46
|
"@types/node": "^25.0.3",
|
|
73
47
|
"@types/proper-lockfile": "^4.1.4",
|
|
74
48
|
"@types/qrcode-terminal": "^0.12.2",
|
|
75
49
|
"@types/uuid": "^11.0.0",
|
|
76
|
-
"@typescript-eslint/eslint-plugin": "
|
|
77
|
-
"@typescript-eslint/parser": "
|
|
50
|
+
"@typescript-eslint/eslint-plugin": "8.57.2",
|
|
51
|
+
"@typescript-eslint/parser": "8.57.2",
|
|
52
|
+
"@vitest/coverage-v8": "4.1.5",
|
|
78
53
|
"c8": "^11.0.0",
|
|
79
54
|
"doctoc": "^2.2.1",
|
|
80
55
|
"eslint": "^8.57.1",
|
|
81
|
-
"jest": "^30.2.0",
|
|
82
56
|
"markdown-link-check": "^3.14.2",
|
|
83
57
|
"nyc": "^18.0.0",
|
|
84
58
|
"prettier": "^3.7.4",
|
|
85
59
|
"proxy-chain": "^2.7.1",
|
|
86
|
-
"ts-jest": "^29.4.6",
|
|
87
60
|
"tsx": "^4.21.0",
|
|
88
|
-
"typescript": "^5.9.3"
|
|
61
|
+
"typescript": "^5.9.3",
|
|
62
|
+
"vitest": "4.1.5"
|
|
63
|
+
},
|
|
64
|
+
"devEngines": {
|
|
65
|
+
"packageManager": {
|
|
66
|
+
"name": "pnpm",
|
|
67
|
+
"version": "10.33.4",
|
|
68
|
+
"onFail": "warn"
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"scripts": {
|
|
72
|
+
"build": "tsc",
|
|
73
|
+
"build:watch": "tsc --watch",
|
|
74
|
+
"build:readme": "./scripts/update-readme.sh",
|
|
75
|
+
"test": "pnpm run build && pnpm run test:unit && ./test/e2e/run.sh --no-build --parallel 8 && ./test/e2e/run.sh --no-build --parallel 8 --runtime bun",
|
|
76
|
+
"test:unit": "vitest run",
|
|
77
|
+
"test:watch": "vitest",
|
|
78
|
+
"test:coverage": "pnpm run test:coverage:unit && pnpm run test:coverage:e2e && pnpm run test:coverage:merge",
|
|
79
|
+
"test:coverage:unit": "vitest run --coverage",
|
|
80
|
+
"test:coverage:e2e": "./test/e2e/run.sh --coverage",
|
|
81
|
+
"test:coverage:merge": "test/coverage/coverage-merge.sh",
|
|
82
|
+
"test:e2e": "./test/e2e/run.sh --keep",
|
|
83
|
+
"test:e2e:bun": "./test/e2e/run.sh --no-build --runtime bun",
|
|
84
|
+
"test:conformance": "pnpm run build && npx -y @modelcontextprotocol/conformance client --command \"node test/conformance/client.mjs\" --scenario initialize",
|
|
85
|
+
"lint": "eslint src/**/*.ts && prettier --check \"src/**/*.ts\" \"test/**/*.ts\"",
|
|
86
|
+
"lint:fix": "eslint src/**/*.ts --fix && prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
|
|
87
|
+
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
|
|
88
|
+
"format:check": "prettier --check \"src/**/*.ts\" \"test/**/*.ts\"",
|
|
89
|
+
"clean": "rm -rf dist",
|
|
90
|
+
"prebuild": "pnpm run clean",
|
|
91
|
+
"release": "bash scripts/publish.sh",
|
|
92
|
+
"release:minor": "bash scripts/publish.sh minor",
|
|
93
|
+
"release:major": "bash scripts/publish.sh major",
|
|
94
|
+
"release:pre": "bash scripts/publish.sh --pre-release"
|
|
89
95
|
}
|
|
90
|
-
}
|
|
96
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Supply-chain protection: require packages to be at least X days old before pnpm will install them.
|
|
2
|
+
# Mitigates compromised npm packages discovered and yanked within the first day (shai-hulud worm,
|
|
3
|
+
# nx self-replicator, etc.). 7200 minutes = 5 days.
|
|
4
|
+
minimumReleaseAge: 7200
|
|
5
|
+
|
|
6
|
+
# @napi-rs/keyring ships a native node binding that needs to be built/copied
|
|
7
|
+
# into place on install. Without this entry pnpm v10 refuses to run its
|
|
8
|
+
# postinstall script and the keychain feature breaks at runtime.
|
|
9
|
+
onlyBuiltDependencies:
|
|
10
|
+
- "@napi-rs/keyring"
|
package/tsconfig.test.json
CHANGED
package/vitest.config.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { defineConfig } from 'vitest/config';
|
|
2
|
+
|
|
3
|
+
// Coverage thresholds match the previous Jest setup (70% across the board).
|
|
4
|
+
// See test/README.md for the test layout.
|
|
5
|
+
export default defineConfig({
|
|
6
|
+
test: {
|
|
7
|
+
include: ['test/unit/**/*.test.ts', 'test/unit/**/*.spec.ts'],
|
|
8
|
+
environment: 'node',
|
|
9
|
+
// `globals: true` keeps the existing test bodies (`describe`/`it`/`expect`)
|
|
10
|
+
// working without changing every file's imports. Jest-compatible API.
|
|
11
|
+
globals: true,
|
|
12
|
+
coverage: {
|
|
13
|
+
provider: 'v8',
|
|
14
|
+
reportsDirectory: 'test/coverage/unit',
|
|
15
|
+
reporter: ['text', 'lcov', 'html', 'json'],
|
|
16
|
+
include: ['src/**/*.ts'],
|
|
17
|
+
exclude: ['src/**/*.d.ts', 'src/**/index.ts'],
|
|
18
|
+
thresholds: {
|
|
19
|
+
branches: 70,
|
|
20
|
+
functions: 70,
|
|
21
|
+
lines: 70,
|
|
22
|
+
statements: 70,
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
});
|