@hasna/connectors 0.1.0 → 0.2.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/LICENSE +191 -0
- package/README.md +19 -13
- package/bin/index.js +208 -73
- package/bin/mcp.js +24 -18
- package/bin/serve.js +94 -32
- package/connectors/connect-anthropic/package.json +2 -2
- package/connectors/connect-aws/package.json +2 -2
- package/connectors/connect-brandsight/package.json +2 -2
- package/connectors/connect-cloudflare/.env.example +0 -5
- package/connectors/connect-cloudflare/package.json +2 -2
- package/connectors/connect-discord/package.json +2 -2
- package/connectors/connect-docker/package.json +2 -2
- package/connectors/connect-e2b/package.json +2 -2
- package/connectors/connect-elevenlabs/package.json +2 -2
- package/connectors/connect-exa/package.json +2 -2
- package/connectors/connect-figma/package.json +2 -2
- package/connectors/connect-firecrawl/package.json +2 -2
- package/connectors/connect-github/package.json +2 -2
- package/connectors/connect-gmail/package.json +2 -2
- package/connectors/connect-google/package.json +2 -2
- package/connectors/connect-googlecalendar/package.json +2 -2
- package/connectors/connect-googlecloud/package.json +2 -2
- package/connectors/connect-googlecontacts/package.json +2 -2
- package/connectors/connect-googledocs/package.json +2 -2
- package/connectors/connect-googledrive/package.json +2 -2
- package/connectors/connect-googlegemini/package.json +2 -2
- package/connectors/connect-googlesheets/package.json +2 -2
- package/connectors/connect-googletasks/package.json +2 -2
- package/connectors/connect-hedra/package.json +2 -2
- package/connectors/connect-heygen/package.json +2 -2
- package/connectors/connect-huggingface/package.json +2 -2
- package/connectors/connect-icons8/package.json +2 -2
- package/connectors/connect-maropost/package.json +2 -2
- package/connectors/connect-mercury/package.json +2 -2
- package/connectors/connect-meta/package.json +2 -2
- package/connectors/connect-midjourney/package.json +2 -2
- package/connectors/connect-mistral/package.json +2 -2
- package/connectors/connect-mixpanel/package.json +2 -2
- package/connectors/connect-notion/.env.example +0 -5
- package/connectors/connect-notion/package.json +2 -2
- package/connectors/connect-openai/package.json +2 -2
- package/connectors/connect-openweathermap/package.json +2 -2
- package/connectors/connect-pandadoc/package.json +2 -2
- package/connectors/connect-quo/package.json +2 -2
- package/connectors/connect-reddit/package.json +2 -2
- package/connectors/connect-reducto/package.json +1 -1
- package/connectors/connect-resend/package.json +2 -2
- package/connectors/connect-revolut/package.json +2 -2
- package/connectors/connect-sedo/package.json +2 -2
- package/connectors/connect-sentry/package.json +2 -2
- package/connectors/connect-shadcn/package.json +2 -2
- package/connectors/connect-snap/package.json +2 -2
- package/connectors/connect-stabilityai/package.json +2 -2
- package/connectors/connect-stripe/package.json +2 -2
- package/connectors/connect-stripeatlas/package.json +2 -2
- package/connectors/connect-substack/package.json +2 -2
- package/connectors/connect-tiktok/package.json +2 -2
- package/connectors/connect-tinker/package.json +2 -2
- package/connectors/connect-twilio/package.json +4 -4
- package/connectors/connect-uspto/package.json +2 -2
- package/connectors/connect-x/package.json +2 -2
- package/connectors/connect-xads/package.json +2 -2
- package/connectors/connect-xai/package.json +2 -2
- package/connectors/connect-youtube/package.json +2 -2
- package/connectors/connect-zoom/package.json +2 -2
- package/dist/cli/cli.test.d.ts +1 -0
- package/dist/cli/components/App.d.ts +6 -0
- package/dist/cli/components/CategorySelect.d.ts +6 -0
- package/dist/cli/components/ConnectorSelect.d.ts +10 -0
- package/dist/cli/components/Header.d.ts +6 -0
- package/dist/cli/components/InstallProgress.d.ts +8 -0
- package/dist/cli/components/SearchView.d.ts +8 -0
- package/dist/cli/components/components.test.d.ts +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +11 -16
- package/dist/lib/installer.d.ts +55 -0
- package/dist/lib/installer.test.d.ts +1 -0
- package/dist/lib/registry.d.ts +18 -0
- package/dist/lib/registry.test.d.ts +1 -0
- package/dist/mcp/index.d.ts +2 -0
- package/dist/mcp/mcp.test.d.ts +1 -0
- package/dist/server/auth.d.ts +70 -0
- package/dist/server/dashboard.d.ts +5 -0
- package/dist/server/index.d.ts +6 -0
- package/dist/server/serve.d.ts +12 -0
- package/dist/server/server.test.d.ts +1 -0
- package/package.json +5 -4
- package/connectors/connect-browseruse/.env.example +0 -7
- package/connectors/connect-browseruse/.npmrc.example +0 -2
- package/connectors/connect-browseruse/AGENTS.md +0 -172
- package/connectors/connect-browseruse/CLAUDE.md +0 -172
- package/connectors/connect-browseruse/GEMINI.md +0 -172
- package/connectors/connect-browseruse/README.md +0 -153
- package/connectors/connect-browseruse/package.json +0 -52
- package/connectors/connect-browseruse/src/api/billing.ts +0 -32
- package/connectors/connect-browseruse/src/api/browsers.ts +0 -50
- package/connectors/connect-browseruse/src/api/client.ts +0 -168
- package/connectors/connect-browseruse/src/api/files.ts +0 -70
- package/connectors/connect-browseruse/src/api/index.ts +0 -95
- package/connectors/connect-browseruse/src/api/profiles.ts +0 -59
- package/connectors/connect-browseruse/src/api/sessions.ts +0 -88
- package/connectors/connect-browseruse/src/api/skills.ts +0 -194
- package/connectors/connect-browseruse/src/api/tasks.ts +0 -127
- package/connectors/connect-browseruse/src/cli/index.ts +0 -888
- package/connectors/connect-browseruse/src/index.ts +0 -35
- package/connectors/connect-browseruse/src/types/index.ts +0 -312
- package/connectors/connect-browseruse/src/utils/config.ts +0 -212
- package/connectors/connect-browseruse/src/utils/output.ts +0 -119
- package/connectors/connect-browseruse/tsconfig.json +0 -16
|
@@ -30,11 +30,11 @@
|
|
|
30
30
|
},
|
|
31
31
|
"repository": {
|
|
32
32
|
"type": "git",
|
|
33
|
-
"url": "git+https://github.com/hasna/
|
|
33
|
+
"url": "git+https://github.com/hasna/connectors.git"
|
|
34
34
|
},
|
|
35
|
-
"homepage": "https://github.com/hasna/
|
|
35
|
+
"homepage": "https://github.com/hasna/connectors#readme",
|
|
36
36
|
"bugs": {
|
|
37
|
-
"url": "https://github.com/hasna/
|
|
37
|
+
"url": "https://github.com/hasna/connectors/issues"
|
|
38
38
|
},
|
|
39
39
|
"keywords": [
|
|
40
40
|
"twilio",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"hasna"
|
|
52
52
|
],
|
|
53
53
|
"author": "Hasna",
|
|
54
|
-
"license": "
|
|
54
|
+
"license": "Apache-2.0",
|
|
55
55
|
"devDependencies": {
|
|
56
56
|
"@types/bun": "latest",
|
|
57
57
|
"typescript": "^5"
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"hasna"
|
|
35
35
|
],
|
|
36
36
|
"author": "Hasna",
|
|
37
|
-
"license": "
|
|
37
|
+
"license": "Apache-2.0",
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/bun": "latest",
|
|
40
40
|
"typescript": "^5"
|
|
@@ -49,6 +49,6 @@
|
|
|
49
49
|
},
|
|
50
50
|
"repository": {
|
|
51
51
|
"type": "git",
|
|
52
|
-
"url": "git+https://github.com/hasna/
|
|
52
|
+
"url": "git+https://github.com/hasna/connectors.git"
|
|
53
53
|
}
|
|
54
54
|
}
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"hasna"
|
|
40
40
|
],
|
|
41
41
|
"author": "Hasna",
|
|
42
|
-
"license": "
|
|
42
|
+
"license": "Apache-2.0",
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@types/bun": "latest",
|
|
45
45
|
"typescript": "^5"
|
|
@@ -54,6 +54,6 @@
|
|
|
54
54
|
},
|
|
55
55
|
"repository": {
|
|
56
56
|
"type": "git",
|
|
57
|
-
"url": "git+https://github.com/hasna/
|
|
57
|
+
"url": "git+https://github.com/hasna/connectors.git"
|
|
58
58
|
}
|
|
59
59
|
}
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"hasna"
|
|
30
30
|
],
|
|
31
31
|
"author": "Hasna",
|
|
32
|
-
"license": "
|
|
32
|
+
"license": "Apache-2.0",
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"chalk": "^5.3.0",
|
|
35
35
|
"commander": "^12.1.0"
|
|
@@ -47,6 +47,6 @@
|
|
|
47
47
|
],
|
|
48
48
|
"repository": {
|
|
49
49
|
"type": "git",
|
|
50
|
-
"url": "git+https://github.com/hasna/
|
|
50
|
+
"url": "git+https://github.com/hasna/connectors.git"
|
|
51
51
|
}
|
|
52
52
|
}
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"hasna"
|
|
42
42
|
],
|
|
43
43
|
"author": "Hasna",
|
|
44
|
-
"license": "
|
|
44
|
+
"license": "Apache-2.0",
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@types/bun": "latest",
|
|
47
47
|
"typescript": "^5"
|
|
@@ -55,6 +55,6 @@
|
|
|
55
55
|
},
|
|
56
56
|
"repository": {
|
|
57
57
|
"type": "git",
|
|
58
|
-
"url": "git+https://github.com/hasna/
|
|
58
|
+
"url": "git+https://github.com/hasna/connectors.git"
|
|
59
59
|
}
|
|
60
60
|
}
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"hasna"
|
|
43
43
|
],
|
|
44
44
|
"author": "Hasna",
|
|
45
|
-
"license": "
|
|
45
|
+
"license": "Apache-2.0",
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@types/bun": "latest",
|
|
48
48
|
"typescript": "^5"
|
|
@@ -56,6 +56,6 @@
|
|
|
56
56
|
},
|
|
57
57
|
"repository": {
|
|
58
58
|
"type": "git",
|
|
59
|
-
"url": "git+https://github.com/hasna/
|
|
59
|
+
"url": "git+https://github.com/hasna/connectors.git"
|
|
60
60
|
}
|
|
61
61
|
}
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"hasna"
|
|
33
33
|
],
|
|
34
34
|
"author": "Hasna",
|
|
35
|
-
"license": "
|
|
35
|
+
"license": "Apache-2.0",
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@types/bun": "latest",
|
|
38
38
|
"typescript": "^5"
|
|
@@ -46,6 +46,6 @@
|
|
|
46
46
|
},
|
|
47
47
|
"repository": {
|
|
48
48
|
"type": "git",
|
|
49
|
-
"url": "git+https://github.com/hasna/
|
|
49
|
+
"url": "git+https://github.com/hasna/connectors.git"
|
|
50
50
|
}
|
|
51
51
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ConnectorMeta } from "../../lib/registry.js";
|
|
2
|
+
interface ConnectorSelectProps {
|
|
3
|
+
connectors: ConnectorMeta[];
|
|
4
|
+
selected: Set<string>;
|
|
5
|
+
onToggle: (name: string) => void;
|
|
6
|
+
onConfirm: () => void;
|
|
7
|
+
onBack: () => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function ConnectorSelect({ connectors, selected, onToggle, onConfirm, onBack, }: ConnectorSelectProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { InstallResult } from "../../lib/installer.js";
|
|
2
|
+
interface InstallProgressProps {
|
|
3
|
+
connectors: string[];
|
|
4
|
+
overwrite?: boolean;
|
|
5
|
+
onComplete: (results: InstallResult[]) => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function InstallProgress({ connectors, overwrite, onComplete, }: InstallProgressProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface SearchViewProps {
|
|
2
|
+
selected: Set<string>;
|
|
3
|
+
onToggle: (name: string) => void;
|
|
4
|
+
onConfirm: () => void;
|
|
5
|
+
onBack: () => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function SearchView({ selected, onToggle, onConfirm, onBack, }: SearchViewProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hasna/connectors - Open source connector library
|
|
3
|
+
*
|
|
4
|
+
* Install API connectors with a single command:
|
|
5
|
+
* npx @hasna/connectors install figma stripe github
|
|
6
|
+
*
|
|
7
|
+
* Or use the interactive CLI:
|
|
8
|
+
* npx @hasna/connectors
|
|
9
|
+
*/
|
|
10
|
+
export { CONNECTORS, CATEGORIES, getConnector, getConnectorsByCategory, searchConnectors, loadConnectorVersions, type ConnectorMeta, type Category, } from "./lib/registry.js";
|
|
11
|
+
export { installConnector, installConnectors, getInstalledConnectors, removeConnector, connectorExists, getConnectorPath, getConnectorDocs, type InstallResult, type InstallOptions, type ConnectorDocs, } from "./lib/installer.js";
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var __require = import.meta.require;
|
|
3
|
-
|
|
4
2
|
// src/lib/registry.ts
|
|
5
3
|
import { existsSync, readFileSync } from "fs";
|
|
6
4
|
import { join, dirname } from "path";
|
|
@@ -159,13 +157,6 @@ var CONNECTORS = [
|
|
|
159
157
|
category: "Developer Tools",
|
|
160
158
|
tags: ["scraping", "web"]
|
|
161
159
|
},
|
|
162
|
-
{
|
|
163
|
-
name: "browseruse",
|
|
164
|
-
displayName: "Browser Use",
|
|
165
|
-
description: "Browser automation for AI",
|
|
166
|
-
category: "Developer Tools",
|
|
167
|
-
tags: ["browser", "automation"]
|
|
168
|
-
},
|
|
169
160
|
{
|
|
170
161
|
name: "shadcn",
|
|
171
162
|
displayName: "shadcn/ui",
|
|
@@ -435,9 +426,9 @@ var CONNECTORS = [
|
|
|
435
426
|
{
|
|
436
427
|
name: "tinker",
|
|
437
428
|
displayName: "Tinker",
|
|
438
|
-
description: "
|
|
439
|
-
category: "
|
|
440
|
-
tags: ["
|
|
429
|
+
description: "LLM fine-tuning and training API",
|
|
430
|
+
category: "AI & ML",
|
|
431
|
+
tags: ["ai", "llm", "fine-tuning"]
|
|
441
432
|
},
|
|
442
433
|
{
|
|
443
434
|
name: "sedo",
|
|
@@ -495,7 +486,7 @@ function loadConnectorVersions() {
|
|
|
495
486
|
}
|
|
496
487
|
}
|
|
497
488
|
// src/lib/installer.ts
|
|
498
|
-
import { existsSync as existsSync2, cpSync, mkdirSync, readFileSync as readFileSync2, writeFileSync } from "fs";
|
|
489
|
+
import { existsSync as existsSync2, cpSync, mkdirSync, readFileSync as readFileSync2, writeFileSync, readdirSync, statSync, rmSync } from "fs";
|
|
499
490
|
import { join as join2, dirname as dirname2 } from "path";
|
|
500
491
|
import { fileURLToPath as fileURLToPath2 } from "url";
|
|
501
492
|
var __dirname2 = dirname2(fileURLToPath2(import.meta.url));
|
|
@@ -518,6 +509,13 @@ function connectorExists(name) {
|
|
|
518
509
|
}
|
|
519
510
|
function installConnector(name, options = {}) {
|
|
520
511
|
const { targetDir = process.cwd(), overwrite = false } = options;
|
|
512
|
+
if (!/^[a-z0-9-]+$/.test(name)) {
|
|
513
|
+
return {
|
|
514
|
+
connector: name,
|
|
515
|
+
success: false,
|
|
516
|
+
error: `Invalid connector name '${name}'`
|
|
517
|
+
};
|
|
518
|
+
}
|
|
521
519
|
const connectorName = name.startsWith("connect-") ? name : `connect-${name}`;
|
|
522
520
|
const sourcePath = getConnectorPath(name);
|
|
523
521
|
const destDir = join2(targetDir, ".connectors");
|
|
@@ -561,7 +559,6 @@ function installConnectors(names, options = {}) {
|
|
|
561
559
|
}
|
|
562
560
|
function updateConnectorsIndex(connectorsDir) {
|
|
563
561
|
const indexPath = join2(connectorsDir, "index.ts");
|
|
564
|
-
const { readdirSync } = __require("fs");
|
|
565
562
|
const connectors = readdirSync(connectorsDir).filter((f) => f.startsWith("connect-") && !f.includes("."));
|
|
566
563
|
const exports = connectors.map((c) => {
|
|
567
564
|
const name = c.replace("connect-", "");
|
|
@@ -582,7 +579,6 @@ function getInstalledConnectors(targetDir = process.cwd()) {
|
|
|
582
579
|
if (!existsSync2(connectorsDir)) {
|
|
583
580
|
return [];
|
|
584
581
|
}
|
|
585
|
-
const { readdirSync, statSync } = __require("fs");
|
|
586
582
|
return readdirSync(connectorsDir).filter((f) => {
|
|
587
583
|
const fullPath = join2(connectorsDir, f);
|
|
588
584
|
return f.startsWith("connect-") && statSync(fullPath).isDirectory();
|
|
@@ -631,7 +627,6 @@ function parseEnvVarsTable(section) {
|
|
|
631
627
|
return vars;
|
|
632
628
|
}
|
|
633
629
|
function removeConnector(name, targetDir = process.cwd()) {
|
|
634
|
-
const { rmSync } = __require("fs");
|
|
635
630
|
const connectorName = name.startsWith("connect-") ? name : `connect-${name}`;
|
|
636
631
|
const connectorsDir = join2(targetDir, ".connectors");
|
|
637
632
|
const connectorPath = join2(connectorsDir, connectorName);
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connector installer - handles copying connectors to user projects
|
|
3
|
+
*/
|
|
4
|
+
export interface InstallResult {
|
|
5
|
+
connector: string;
|
|
6
|
+
success: boolean;
|
|
7
|
+
error?: string;
|
|
8
|
+
path?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface InstallOptions {
|
|
11
|
+
targetDir?: string;
|
|
12
|
+
overwrite?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Get the path to a connector in the package
|
|
16
|
+
*/
|
|
17
|
+
export declare function getConnectorPath(name: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* Check if a connector exists in the package
|
|
20
|
+
*/
|
|
21
|
+
export declare function connectorExists(name: string): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Install a single connector to the target directory
|
|
24
|
+
*/
|
|
25
|
+
export declare function installConnector(name: string, options?: InstallOptions): InstallResult;
|
|
26
|
+
/**
|
|
27
|
+
* Install multiple connectors
|
|
28
|
+
*/
|
|
29
|
+
export declare function installConnectors(names: string[], options?: InstallOptions): InstallResult[];
|
|
30
|
+
/**
|
|
31
|
+
* Get list of installed connectors in a directory
|
|
32
|
+
*/
|
|
33
|
+
export declare function getInstalledConnectors(targetDir?: string): string[];
|
|
34
|
+
/**
|
|
35
|
+
* Parsed documentation from a connector's CLAUDE.md
|
|
36
|
+
*/
|
|
37
|
+
export interface ConnectorDocs {
|
|
38
|
+
overview: string;
|
|
39
|
+
auth: string;
|
|
40
|
+
envVars: {
|
|
41
|
+
variable: string;
|
|
42
|
+
description: string;
|
|
43
|
+
}[];
|
|
44
|
+
cliCommands: string;
|
|
45
|
+
dataStorage: string;
|
|
46
|
+
raw: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Read and parse a connector's documentation (CLAUDE.md)
|
|
50
|
+
*/
|
|
51
|
+
export declare function getConnectorDocs(name: string): ConnectorDocs | null;
|
|
52
|
+
/**
|
|
53
|
+
* Remove an installed connector
|
|
54
|
+
*/
|
|
55
|
+
export declare function removeConnector(name: string, targetDir?: string): boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connector registry - metadata about all available connectors
|
|
3
|
+
*/
|
|
4
|
+
export interface ConnectorMeta {
|
|
5
|
+
name: string;
|
|
6
|
+
displayName: string;
|
|
7
|
+
description: string;
|
|
8
|
+
category: string;
|
|
9
|
+
tags: string[];
|
|
10
|
+
version?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare const CATEGORIES: readonly ["AI & ML", "Developer Tools", "Design & Content", "Communication", "Social Media", "Commerce & Finance", "Google Workspace", "Data & Analytics", "Business Tools", "Patents & IP", "Advertising"];
|
|
13
|
+
export type Category = (typeof CATEGORIES)[number];
|
|
14
|
+
export declare const CONNECTORS: ConnectorMeta[];
|
|
15
|
+
export declare function getConnectorsByCategory(category: Category): ConnectorMeta[];
|
|
16
|
+
export declare function searchConnectors(query: string): ConnectorMeta[];
|
|
17
|
+
export declare function getConnector(name: string): ConnectorMeta | undefined;
|
|
18
|
+
export declare function loadConnectorVersions(): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth status detection and token management for the dashboard server.
|
|
3
|
+
* Reads connector CLAUDE.md files to determine auth type, checks profile
|
|
4
|
+
* directories for stored credentials, and handles token operations.
|
|
5
|
+
*/
|
|
6
|
+
export type AuthType = "oauth" | "apikey" | "bearer";
|
|
7
|
+
export interface AuthStatus {
|
|
8
|
+
type: AuthType;
|
|
9
|
+
configured: boolean;
|
|
10
|
+
tokenExpiry?: number;
|
|
11
|
+
hasRefreshToken?: boolean;
|
|
12
|
+
envVars: {
|
|
13
|
+
variable: string;
|
|
14
|
+
description: string;
|
|
15
|
+
set: boolean;
|
|
16
|
+
}[];
|
|
17
|
+
}
|
|
18
|
+
export interface OAuthTokens {
|
|
19
|
+
accessToken: string;
|
|
20
|
+
refreshToken?: string;
|
|
21
|
+
expiresAt: number;
|
|
22
|
+
tokenType?: string;
|
|
23
|
+
scope?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Get the auth type for a connector by parsing its CLAUDE.md
|
|
27
|
+
*/
|
|
28
|
+
export declare function getAuthType(name: string): AuthType;
|
|
29
|
+
/**
|
|
30
|
+
* Get the full auth status for a connector
|
|
31
|
+
*/
|
|
32
|
+
export declare function getAuthStatus(name: string): AuthStatus;
|
|
33
|
+
/**
|
|
34
|
+
* Get required env var names from a connector's CLAUDE.md
|
|
35
|
+
*/
|
|
36
|
+
export declare function getEnvVars(name: string): {
|
|
37
|
+
variable: string;
|
|
38
|
+
description: string;
|
|
39
|
+
}[];
|
|
40
|
+
/**
|
|
41
|
+
* Save an API key to a connector's profile
|
|
42
|
+
*/
|
|
43
|
+
export declare function saveApiKey(name: string, key: string, field?: string): void;
|
|
44
|
+
/**
|
|
45
|
+
* Get OAuth client credentials for a connector
|
|
46
|
+
*/
|
|
47
|
+
export declare function getOAuthConfig(name: string): {
|
|
48
|
+
clientId?: string;
|
|
49
|
+
clientSecret?: string;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Build OAuth authorization URL for a connector
|
|
53
|
+
*/
|
|
54
|
+
export declare function getOAuthStartUrl(name: string, redirectUri: string): string | null;
|
|
55
|
+
/**
|
|
56
|
+
* Validate and consume an OAuth state token (CSRF protection)
|
|
57
|
+
*/
|
|
58
|
+
export declare function validateOAuthState(state: string | null, expectedConnector: string): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Exchange an OAuth authorization code for tokens
|
|
61
|
+
*/
|
|
62
|
+
export declare function exchangeOAuthCode(name: string, code: string, redirectUri: string): Promise<OAuthTokens>;
|
|
63
|
+
/**
|
|
64
|
+
* Refresh an OAuth token using the stored refresh token
|
|
65
|
+
*/
|
|
66
|
+
export declare function refreshOAuthToken(name: string): Promise<OAuthTokens>;
|
|
67
|
+
/**
|
|
68
|
+
* Get token expiry time for an OAuth connector
|
|
69
|
+
*/
|
|
70
|
+
export declare function getTokenExpiry(name: string): number | null;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reusable server starter for the connector auth dashboard.
|
|
3
|
+
* Used by both the CLI `serve` command and the standalone `connectors-serve` binary.
|
|
4
|
+
* Serves the Vite-built React/shadcn dashboard from dashboard/dist/.
|
|
5
|
+
*/
|
|
6
|
+
export interface ServeOptions {
|
|
7
|
+
port: number;
|
|
8
|
+
open?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function startServer(port: number, options?: {
|
|
11
|
+
open?: boolean;
|
|
12
|
+
}): Promise<void>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hasna/connectors",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Open source connector library - Install API connectors with a single command",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -24,12 +24,13 @@
|
|
|
24
24
|
"main": "./dist/index.js",
|
|
25
25
|
"types": "./dist/index.d.ts",
|
|
26
26
|
"scripts": {
|
|
27
|
-
"build": "cd dashboard && bun run build && cd .. && bun build ./src/cli/index.tsx --outdir ./bin --target bun --external ink --external react --external chalk --external conf && bun build ./src/mcp/index.ts --outfile ./bin/mcp.js --target bun && bun build ./src/server/index.ts --outfile ./bin/serve.js --target bun && bun build ./src/index.ts --outdir ./dist --target bun",
|
|
27
|
+
"build": "cd dashboard && bun run build && cd .. && bun build ./src/cli/index.tsx --outdir ./bin --target bun --external ink --external react --external chalk --external conf && bun build ./src/mcp/index.ts --outfile ./bin/mcp.js --target bun && bun build ./src/server/index.ts --outfile ./bin/serve.js --target bun && bun build ./src/index.ts --outdir ./dist --target bun && tsc --emitDeclarationOnly --outDir ./dist",
|
|
28
28
|
"build:dashboard": "cd dashboard && bun run build",
|
|
29
|
+
"postinstall": "cd dashboard && bun install",
|
|
29
30
|
"dev": "bun run ./src/cli/index.tsx",
|
|
30
31
|
"typecheck": "tsc --noEmit",
|
|
31
32
|
"test": "bun test",
|
|
32
|
-
"prepublishOnly": "bun run build"
|
|
33
|
+
"prepublishOnly": "bun test && bun run build"
|
|
33
34
|
},
|
|
34
35
|
"keywords": [
|
|
35
36
|
"connectors",
|
|
@@ -45,7 +46,7 @@
|
|
|
45
46
|
"model-context-protocol"
|
|
46
47
|
],
|
|
47
48
|
"author": "Hasna",
|
|
48
|
-
"license": "
|
|
49
|
+
"license": "Apache-2.0",
|
|
49
50
|
"devDependencies": {
|
|
50
51
|
"@types/bun": "latest",
|
|
51
52
|
"@types/react": "^18.2.0",
|