@hasna/connectors 1.3.24 → 1.3.26
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/bin/index.js +911 -143
- package/bin/mcp.js +2804 -1815
- package/bin/serve.js +1200 -430
- package/connectors/{connect-yousign → connect-cloudflare}/bun.lock +3 -3
- package/connectors/connect-gmail/bin/index.js +7027 -0
- package/connectors/connect-googledrive/bin/index.js +5958 -0
- package/connectors/connect-imessage/bin/.gitkeep +2 -0
- package/connectors/connect-imessage/bin/index.js +3016 -0
- package/connectors/connect-imessage/bun.lock +32 -0
- package/connectors/connect-imessage/package.json +46 -0
- package/connectors/connect-imessage/src/api/client.ts +139 -0
- package/connectors/connect-imessage/src/api/conversations.ts +49 -0
- package/connectors/connect-imessage/src/api/health.ts +16 -0
- package/connectors/connect-imessage/src/api/index.ts +62 -0
- package/connectors/connect-imessage/src/api/messages.ts +119 -0
- package/connectors/connect-imessage/src/cli/index.ts +258 -0
- package/connectors/connect-imessage/src/index.ts +26 -0
- package/connectors/connect-imessage/src/types/index.ts +134 -0
- package/connectors/connect-imessage/src/utils/config.ts +219 -0
- package/connectors/connect-imessage/src/utils/output.ts +121 -0
- package/connectors/connect-imessage/tsconfig.json +16 -0
- package/dashboard/dist/assets/index-ClBXkNbL.css +1 -0
- package/dashboard/dist/assets/index-DvfmyAO4.js +284 -0
- package/dashboard/dist/index.html +2 -2
- package/dist/core/connectors/gmail.d.ts +5 -0
- package/dist/core/connectors/googledrive.d.ts +6 -0
- package/dist/core/connectors/internal-operations.test.d.ts +1 -0
- package/dist/core/connectors/internal-runtime.test.d.ts +1 -0
- package/dist/core/errors.test.d.ts +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1075 -89
- package/dist/lib/runner-auth.test.d.ts +1 -0
- package/dist/lib/runner.d.ts +31 -0
- package/dist/lib/test-endpoints.test.d.ts +1 -0
- package/dist/lib/workflow-runner.d.ts +7 -0
- package/dist/server/auth-exchange.test.d.ts +1 -0
- package/dist/server/auth-refresh.test.d.ts +1 -0
- package/dist/server/auth.d.ts +1 -0
- package/package.json +1 -1
- package/connectors/connect-yousign/node_modules/@types/bun/LICENSE +0 -21
- package/connectors/connect-yousign/node_modules/@types/bun/README.md +0 -20
- package/connectors/connect-yousign/node_modules/@types/bun/index.d.ts +0 -1
- package/connectors/connect-yousign/node_modules/@types/bun/package.json +0 -53
- package/connectors/connect-yousign/node_modules/@types/node/LICENSE +0 -21
- package/connectors/connect-yousign/node_modules/@types/node/README.md +0 -15
- package/connectors/connect-yousign/node_modules/@types/node/assert/strict.d.ts +0 -105
- package/connectors/connect-yousign/node_modules/@types/node/assert.d.ts +0 -955
- package/connectors/connect-yousign/node_modules/@types/node/async_hooks.d.ts +0 -623
- package/connectors/connect-yousign/node_modules/@types/node/buffer.buffer.d.ts +0 -466
- package/connectors/connect-yousign/node_modules/@types/node/buffer.d.ts +0 -1810
- package/connectors/connect-yousign/node_modules/@types/node/child_process.d.ts +0 -1433
- package/connectors/connect-yousign/node_modules/@types/node/cluster.d.ts +0 -486
- package/connectors/connect-yousign/node_modules/@types/node/compatibility/iterators.d.ts +0 -21
- package/connectors/connect-yousign/node_modules/@types/node/console.d.ts +0 -151
- package/connectors/connect-yousign/node_modules/@types/node/constants.d.ts +0 -20
- package/connectors/connect-yousign/node_modules/@types/node/crypto.d.ts +0 -4065
- package/connectors/connect-yousign/node_modules/@types/node/dgram.d.ts +0 -564
- package/connectors/connect-yousign/node_modules/@types/node/diagnostics_channel.d.ts +0 -576
- package/connectors/connect-yousign/node_modules/@types/node/dns/promises.d.ts +0 -503
- package/connectors/connect-yousign/node_modules/@types/node/dns.d.ts +0 -922
- package/connectors/connect-yousign/node_modules/@types/node/domain.d.ts +0 -166
- package/connectors/connect-yousign/node_modules/@types/node/events.d.ts +0 -1047
- package/connectors/connect-yousign/node_modules/@types/node/fs/promises.d.ts +0 -1329
- package/connectors/connect-yousign/node_modules/@types/node/fs.d.ts +0 -4678
- package/connectors/connect-yousign/node_modules/@types/node/globals.d.ts +0 -150
- package/connectors/connect-yousign/node_modules/@types/node/globals.typedarray.d.ts +0 -101
- package/connectors/connect-yousign/node_modules/@types/node/http.d.ts +0 -2188
- package/connectors/connect-yousign/node_modules/@types/node/http2.d.ts +0 -2480
- package/connectors/connect-yousign/node_modules/@types/node/https.d.ts +0 -405
- package/connectors/connect-yousign/node_modules/@types/node/index.d.ts +0 -115
- package/connectors/connect-yousign/node_modules/@types/node/inspector/promises.d.ts +0 -41
- package/connectors/connect-yousign/node_modules/@types/node/inspector.d.ts +0 -269
- package/connectors/connect-yousign/node_modules/@types/node/inspector.generated.d.ts +0 -4401
- package/connectors/connect-yousign/node_modules/@types/node/module.d.ts +0 -757
- package/connectors/connect-yousign/node_modules/@types/node/net.d.ts +0 -933
- package/connectors/connect-yousign/node_modules/@types/node/os.d.ts +0 -507
- package/connectors/connect-yousign/node_modules/@types/node/package.json +0 -155
- package/connectors/connect-yousign/node_modules/@types/node/path/posix.d.ts +0 -8
- package/connectors/connect-yousign/node_modules/@types/node/path/win32.d.ts +0 -8
- package/connectors/connect-yousign/node_modules/@types/node/path.d.ts +0 -187
- package/connectors/connect-yousign/node_modules/@types/node/perf_hooks.d.ts +0 -643
- package/connectors/connect-yousign/node_modules/@types/node/process.d.ts +0 -2175
- package/connectors/connect-yousign/node_modules/@types/node/punycode.d.ts +0 -117
- package/connectors/connect-yousign/node_modules/@types/node/querystring.d.ts +0 -152
- package/connectors/connect-yousign/node_modules/@types/node/quic.d.ts +0 -910
- package/connectors/connect-yousign/node_modules/@types/node/readline/promises.d.ts +0 -161
- package/connectors/connect-yousign/node_modules/@types/node/readline.d.ts +0 -542
- package/connectors/connect-yousign/node_modules/@types/node/repl.d.ts +0 -415
- package/connectors/connect-yousign/node_modules/@types/node/sea.d.ts +0 -162
- package/connectors/connect-yousign/node_modules/@types/node/sqlite.d.ts +0 -1065
- package/connectors/connect-yousign/node_modules/@types/node/stream/consumers.d.ts +0 -38
- package/connectors/connect-yousign/node_modules/@types/node/stream/promises.d.ts +0 -211
- package/connectors/connect-yousign/node_modules/@types/node/stream/web.d.ts +0 -296
- package/connectors/connect-yousign/node_modules/@types/node/stream.d.ts +0 -1770
- package/connectors/connect-yousign/node_modules/@types/node/string_decoder.d.ts +0 -67
- package/connectors/connect-yousign/node_modules/@types/node/test/reporters.d.ts +0 -96
- package/connectors/connect-yousign/node_modules/@types/node/test.d.ts +0 -2275
- package/connectors/connect-yousign/node_modules/@types/node/timers/promises.d.ts +0 -108
- package/connectors/connect-yousign/node_modules/@types/node/timers.d.ts +0 -159
- package/connectors/connect-yousign/node_modules/@types/node/tls.d.ts +0 -1203
- package/connectors/connect-yousign/node_modules/@types/node/trace_events.d.ts +0 -197
- package/connectors/connect-yousign/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +0 -462
- package/connectors/connect-yousign/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +0 -71
- package/connectors/connect-yousign/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +0 -36
- package/connectors/connect-yousign/node_modules/@types/node/ts5.6/index.d.ts +0 -117
- package/connectors/connect-yousign/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +0 -72
- package/connectors/connect-yousign/node_modules/@types/node/ts5.7/index.d.ts +0 -117
- package/connectors/connect-yousign/node_modules/@types/node/tty.d.ts +0 -250
- package/connectors/connect-yousign/node_modules/@types/node/url.d.ts +0 -541
- package/connectors/connect-yousign/node_modules/@types/node/util/types.d.ts +0 -558
- package/connectors/connect-yousign/node_modules/@types/node/util.d.ts +0 -1687
- package/connectors/connect-yousign/node_modules/@types/node/v8.d.ts +0 -988
- package/connectors/connect-yousign/node_modules/@types/node/vm.d.ts +0 -1208
- package/connectors/connect-yousign/node_modules/@types/node/wasi.d.ts +0 -202
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/abortcontroller.d.ts +0 -59
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/blob.d.ts +0 -23
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/console.d.ts +0 -9
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/crypto.d.ts +0 -39
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/domexception.d.ts +0 -68
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/encoding.d.ts +0 -11
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/events.d.ts +0 -106
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/fetch.d.ts +0 -69
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/importmeta.d.ts +0 -13
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/messaging.d.ts +0 -23
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/navigator.d.ts +0 -25
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/performance.d.ts +0 -45
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/storage.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/streams.d.ts +0 -115
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/timers.d.ts +0 -44
- package/connectors/connect-yousign/node_modules/@types/node/web-globals/url.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/@types/node/worker_threads.d.ts +0 -717
- package/connectors/connect-yousign/node_modules/@types/node/zlib.d.ts +0 -682
- package/connectors/connect-yousign/node_modules/bun-types/CLAUDE.md +0 -105
- package/connectors/connect-yousign/node_modules/bun-types/README.md +0 -33
- package/connectors/connect-yousign/node_modules/bun-types/bun.d.ts +0 -8481
- package/connectors/connect-yousign/node_modules/bun-types/bun.ns.d.ts +0 -5
- package/connectors/connect-yousign/node_modules/bun-types/bundle.d.ts +0 -74
- package/connectors/connect-yousign/node_modules/bun-types/deprecated.d.ts +0 -184
- package/connectors/connect-yousign/node_modules/bun-types/devserver.d.ts +0 -187
- package/connectors/connect-yousign/node_modules/bun-types/docs/README.md +0 -28
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/bytecode.mdx +0 -447
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/css.mdx +0 -1024
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/esbuild.mdx +0 -304
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/executables.mdx +0 -1318
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/fullstack.mdx +0 -1086
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/hot-reloading.mdx +0 -229
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/html-static.mdx +0 -498
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/index.mdx +0 -1840
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/loaders.mdx +0 -451
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/macros.mdx +0 -328
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/minifier.mdx +0 -1286
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/plugins.mdx +0 -477
- package/connectors/connect-yousign/node_modules/bun-types/docs/bundler/standalone-html.mdx +0 -314
- package/connectors/connect-yousign/node_modules/bun-types/docs/feedback.mdx +0 -75
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/arraybuffer-to-array.mdx +0 -29
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/arraybuffer-to-blob.mdx +0 -26
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/arraybuffer-to-buffer.mdx +0 -27
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/arraybuffer-to-string.mdx +0 -17
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/arraybuffer-to-typedarray.mdx +0 -41
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/blob-to-arraybuffer.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/blob-to-dataview.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/blob-to-stream.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/blob-to-string.mdx +0 -17
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/blob-to-typedarray.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/buffer-to-arraybuffer.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/buffer-to-blob.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/buffer-to-readablestream.mdx +0 -43
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/buffer-to-string.mdx +0 -27
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/buffer-to-typedarray.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/dataview-to-string.mdx +0 -17
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/typedarray-to-arraybuffer.mdx +0 -27
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/typedarray-to-blob.mdx +0 -18
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/typedarray-to-buffer.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/typedarray-to-dataview.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/typedarray-to-readablestream.mdx +0 -43
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/binary/typedarray-to-string.mdx +0 -18
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/deployment/aws-lambda.mdx +0 -204
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/deployment/digital-ocean.mdx +0 -161
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/deployment/google-cloud-run.mdx +0 -194
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/deployment/railway.mdx +0 -145
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/deployment/render.mdx +0 -82
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/deployment/vercel.mdx +0 -97
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/astro.mdx +0 -82
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/discordjs.mdx +0 -80
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/docker.mdx +0 -151
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/drizzle.mdx +0 -195
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/elysia.mdx +0 -31
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/express.mdx +0 -43
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/gel.mdx +0 -261
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/hono.mdx +0 -47
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/mongoose.mdx +0 -92
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/neon-drizzle.mdx +0 -234
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/neon-serverless-postgres.mdx +0 -60
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/nextjs.mdx +0 -103
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/nuxt.mdx +0 -96
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/pm2.mdx +0 -55
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/prisma-postgres.mdx +0 -169
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/prisma.mdx +0 -164
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/qwik.mdx +0 -114
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/react.mdx +0 -52
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/remix.mdx +0 -97
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/sentry.mdx +0 -54
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/solidstart.mdx +0 -62
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/ssr-react.mdx +0 -49
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/stric.mdx +0 -54
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/sveltekit.mdx +0 -138
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/systemd.mdx +0 -114
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/tanstack-start.mdx +0 -791
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/upstash.mdx +0 -87
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/ecosystem/vite.mdx +0 -77
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/html-rewriter/extract-links.mdx +0 -71
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/html-rewriter/extract-social-meta.mdx +0 -97
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/cluster.mdx +0 -69
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/fetch-unix.mdx +0 -35
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/fetch.mdx +0 -26
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/file-uploads.mdx +0 -97
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/hot.mdx +0 -28
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/proxy.mdx +0 -50
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/server.mdx +0 -48
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/simple.mdx +0 -20
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/stream-file.mdx +0 -50
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/stream-iterator.mdx +0 -49
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/stream-node-streams-in-bun.mdx +0 -22
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/http/tls.mdx +0 -32
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/index.mdx +0 -10
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/add-dev.mdx +0 -28
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/add-git.mdx +0 -40
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/add-optional.mdx +0 -27
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/add-peer.mdx +0 -45
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/add-tarball.mdx +0 -35
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/add.mdx +0 -44
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/azure-artifacts.mdx +0 -76
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/cicd.mdx +0 -43
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/custom-registry.mdx +0 -32
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/from-npm-install-to-bun-install.mdx +0 -230
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/git-diff-bun-lockfile.mdx +0 -48
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/jfrog-artifactory.mdx +0 -28
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/npm-alias.mdx +0 -25
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/registry-scope.mdx +0 -40
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/trusted.mdx +0 -52
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/workspaces.mdx +0 -70
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/install/yarnlock.mdx +0 -51
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/argv.mdx +0 -66
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/ctrl-c.mdx +0 -18
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/ipc.mdx +0 -69
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/nanoseconds.mdx +0 -15
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/os-signals.mdx +0 -31
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/spawn-stderr.mdx +0 -34
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/spawn-stdout.mdx +0 -28
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/spawn.mdx +0 -43
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/process/stdin.mdx +0 -62
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/arraybuffer.mdx +0 -30
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/buffer.mdx +0 -21
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/exists.mdx +0 -18
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/json.mdx +0 -19
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/mime.mdx +0 -22
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/stream.mdx +0 -28
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/string.mdx +0 -24
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/uint8array.mdx +0 -23
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/read-file/watch.mdx +0 -66
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/build-time-constants.mdx +0 -295
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/cicd.mdx +0 -45
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/codesign-macos-executable.mdx +0 -61
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/define-constant.mdx +0 -149
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/delete-directory.mdx +0 -39
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/delete-file.mdx +0 -21
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/heap-snapshot.mdx +0 -28
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/import-html.mdx +0 -15
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/import-json.mdx +0 -46
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/import-json5.mdx +0 -74
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/import-toml.mdx +0 -32
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/import-yaml.mdx +0 -104
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/read-env.mdx +0 -37
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/set-env.mdx +0 -51
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/shell.mdx +0 -42
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/timezone.mdx +0 -38
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/tsconfig-paths.mdx +0 -31
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/typescript.mdx +0 -51
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/vscode-debugger.mdx +0 -47
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/runtime/web-debugger.mdx +0 -103
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/node-readable-to-arraybuffer.mdx +0 -13
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/node-readable-to-blob.mdx +0 -13
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/node-readable-to-json.mdx +0 -14
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/node-readable-to-string.mdx +0 -14
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/node-readable-to-uint8array.mdx +0 -13
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/to-array.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/to-arraybuffer.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/to-blob.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/to-buffer.mdx +0 -17
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/to-json.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/to-string.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/streams/to-typedarray.mdx +0 -24
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/bail.mdx +0 -24
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/concurrent-test-glob.mdx +0 -146
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/coverage-threshold.mdx +0 -67
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/coverage.mdx +0 -49
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/happy-dom.mdx +0 -73
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/migrate-from-jest.mdx +0 -125
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/mock-clock.mdx +0 -50
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/mock-functions.mdx +0 -70
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/rerun-each.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/run-tests.mdx +0 -116
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/skip-tests.mdx +0 -43
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/snapshot.mdx +0 -102
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/spy-on.mdx +0 -49
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/svelte-test.mdx +0 -113
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/testing-library.mdx +0 -93
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/timeout.mdx +0 -17
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/todo-tests.mdx +0 -74
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/update-snapshots.mdx +0 -49
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/test/watch-mode.mdx +0 -24
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/base64.mdx +0 -17
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/deep-equals.mdx +0 -41
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/deflate.mdx +0 -20
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/detect-bun.mdx +0 -28
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/entrypoint.mdx +0 -19
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/escape-html.mdx +0 -24
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/file-url-to-path.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/gzip.mdx +0 -20
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/hash-a-password.mdx +0 -56
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/import-meta-dir.mdx +0 -15
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/import-meta-file.mdx +0 -15
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/import-meta-path.mdx +0 -15
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/javascript-uuid.mdx +0 -25
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/main.mdx +0 -43
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/path-to-file-url.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/sleep.mdx +0 -24
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/upgrade.mdx +0 -93
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/version.mdx +0 -23
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/util/which-path-to-executable-bin.mdx +0 -17
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/websocket/compression.mdx +0 -33
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/websocket/context.mdx +0 -79
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/websocket/pubsub.mdx +0 -43
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/websocket/simple.mdx +0 -38
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/append.mdx +0 -54
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/basic.mdx +0 -46
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/blob.mdx +0 -30
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/cat.mdx +0 -19
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/file-cp.mdx +0 -18
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/filesink.mdx +0 -54
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/response.mdx +0 -19
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/stdout.mdx +0 -23
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/stream.mdx +0 -19
- package/connectors/connect-yousign/node_modules/bun-types/docs/guides/write-file/unlink.mdx +0 -18
- package/connectors/connect-yousign/node_modules/bun-types/docs/index.mdx +0 -133
- package/connectors/connect-yousign/node_modules/bun-types/docs/installation.mdx +0 -372
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/bunx.mdx +0 -91
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/catalogs.mdx +0 -292
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/add.mdx +0 -179
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/audit.mdx +0 -60
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/info.mdx +0 -70
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/install.mdx +0 -591
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/link.mdx +0 -61
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/outdated.mdx +0 -197
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/patch.mdx +0 -69
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/pm.mdx +0 -323
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/publish.mdx +0 -131
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/remove.mdx +0 -16
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/update.mdx +0 -140
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/cli/why.mdx +0 -84
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/filter.mdx +0 -127
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/global-cache.mdx +0 -72
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/isolated-installs.mdx +0 -220
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/lifecycle.mdx +0 -64
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/lockfile.mdx +0 -64
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/npmrc.mdx +0 -245
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/overrides.mdx +0 -83
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/scopes-registries.mdx +0 -35
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/security-scanner-api.mdx +0 -95
- package/connectors/connect-yousign/node_modules/bun-types/docs/pm/workspaces.mdx +0 -115
- package/connectors/connect-yousign/node_modules/bun-types/docs/project/benchmarking.mdx +0 -296
- package/connectors/connect-yousign/node_modules/bun-types/docs/project/bindgen.mdx +0 -223
- package/connectors/connect-yousign/node_modules/bun-types/docs/project/building-windows.mdx +0 -143
- package/connectors/connect-yousign/node_modules/bun-types/docs/project/contributing.mdx +0 -366
- package/connectors/connect-yousign/node_modules/bun-types/docs/project/feedback.mdx +0 -20
- package/connectors/connect-yousign/node_modules/bun-types/docs/project/license.mdx +0 -78
- package/connectors/connect-yousign/node_modules/bun-types/docs/project/roadmap.mdx +0 -8
- package/connectors/connect-yousign/node_modules/bun-types/docs/quickstart.mdx +0 -251
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/archive.mdx +0 -452
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/auto-install.mdx +0 -97
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/binary-data.mdx +0 -846
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/bun-apis.mdx +0 -59
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/bunfig.mdx +0 -754
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/c-compiler.mdx +0 -204
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/child-process.mdx +0 -659
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/color.mdx +0 -267
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/console.mdx +0 -67
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/cookies.mdx +0 -454
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/debugger.mdx +0 -335
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/environment-variables.mdx +0 -231
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/ffi.mdx +0 -567
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/file-io.mdx +0 -306
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/file-system-router.mdx +0 -118
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/file-types.mdx +0 -482
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/glob.mdx +0 -181
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/globals.mdx +0 -72
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/hashing.mdx +0 -315
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/html-rewriter.mdx +0 -333
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/http/cookies.mdx +0 -79
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/http/error-handling.mdx +0 -40
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/http/metrics.mdx +0 -36
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/http/routing.mdx +0 -289
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/http/server.mdx +0 -645
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/http/tls.mdx +0 -101
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/http/websockets.mdx +0 -414
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/index.mdx +0 -223
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/json5.mdx +0 -271
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/jsonl.mdx +0 -188
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/jsx.mdx +0 -115
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/markdown.mdx +0 -344
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/module-resolution.mdx +0 -374
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/networking/dns.mdx +0 -111
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/networking/fetch.mdx +0 -484
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/networking/tcp.mdx +0 -239
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/networking/udp.mdx +0 -180
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/node-api.mdx +0 -19
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/nodejs-compat.mdx +0 -468
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/plugins.mdx +0 -419
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/redis.mdx +0 -583
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/repl.mdx +0 -176
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/s3.mdx +0 -881
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/secrets.mdx +0 -340
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/semver.mdx +0 -57
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/shell.mdx +0 -637
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/sql.mdx +0 -1404
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/sqlite.mdx +0 -721
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/streams.mdx +0 -232
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/templating/create.mdx +0 -269
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/templating/init.mdx +0 -58
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/transpiler.mdx +0 -288
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/typescript.mdx +0 -58
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/utils.mdx +0 -1010
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/watch-mode.mdx +0 -161
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/web-apis.mdx +0 -29
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/workers.mdx +0 -314
- package/connectors/connect-yousign/node_modules/bun-types/docs/runtime/yaml.mdx +0 -469
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/add.mdx +0 -166
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/build.mdx +0 -197
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/bunx.mdx +0 -49
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/feedback.mdx +0 -17
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/init.mdx +0 -84
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/install.mdx +0 -173
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/link.mdx +0 -163
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/outdated.mdx +0 -140
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/patch.mdx +0 -171
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/publish.mdx +0 -198
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/remove.mdx +0 -146
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/run.mdx +0 -305
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/test.mdx +0 -105
- package/connectors/connect-yousign/node_modules/bun-types/docs/snippets/cli/update.mdx +0 -144
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/code-coverage.mdx +0 -409
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/configuration.mdx +0 -520
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/dates-times.mdx +0 -129
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/discovery.mdx +0 -90
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/dom.mdx +0 -226
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/index.mdx +0 -409
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/lifecycle.mdx +0 -366
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/mocks.mdx +0 -637
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/reporters.mdx +0 -126
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/runtime-behavior.mdx +0 -342
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/snapshots.mdx +0 -434
- package/connectors/connect-yousign/node_modules/bun-types/docs/test/writing-tests.mdx +0 -672
- package/connectors/connect-yousign/node_modules/bun-types/docs/typescript.mdx +0 -54
- package/connectors/connect-yousign/node_modules/bun-types/extensions.d.ts +0 -40
- package/connectors/connect-yousign/node_modules/bun-types/fetch.d.ts +0 -79
- package/connectors/connect-yousign/node_modules/bun-types/ffi.d.ts +0 -1154
- package/connectors/connect-yousign/node_modules/bun-types/globals.d.ts +0 -2067
- package/connectors/connect-yousign/node_modules/bun-types/html-rewriter.d.ts +0 -186
- package/connectors/connect-yousign/node_modules/bun-types/index.d.ts +0 -32
- package/connectors/connect-yousign/node_modules/bun-types/jsc.d.ts +0 -233
- package/connectors/connect-yousign/node_modules/bun-types/jsx.d.ts +0 -11
- package/connectors/connect-yousign/node_modules/bun-types/overrides.d.ts +0 -376
- package/connectors/connect-yousign/node_modules/bun-types/package.json +0 -37
- package/connectors/connect-yousign/node_modules/bun-types/redis.d.ts +0 -3352
- package/connectors/connect-yousign/node_modules/bun-types/s3.d.ts +0 -1335
- package/connectors/connect-yousign/node_modules/bun-types/security.d.ts +0 -101
- package/connectors/connect-yousign/node_modules/bun-types/serve.d.ts +0 -1296
- package/connectors/connect-yousign/node_modules/bun-types/shell.d.ts +0 -380
- package/connectors/connect-yousign/node_modules/bun-types/sql.d.ts +0 -887
- package/connectors/connect-yousign/node_modules/bun-types/sqlite.d.ts +0 -1322
- package/connectors/connect-yousign/node_modules/bun-types/test-globals.d.ts +0 -22
- package/connectors/connect-yousign/node_modules/bun-types/test.d.ts +0 -2392
- package/connectors/connect-yousign/node_modules/bun-types/vendor/expect-type/branding.d.ts +0 -283
- package/connectors/connect-yousign/node_modules/bun-types/vendor/expect-type/index.d.ts +0 -1207
- package/connectors/connect-yousign/node_modules/bun-types/vendor/expect-type/messages.d.ts +0 -395
- package/connectors/connect-yousign/node_modules/bun-types/vendor/expect-type/overloads.d.ts +0 -669
- package/connectors/connect-yousign/node_modules/bun-types/vendor/expect-type/utils.d.ts +0 -431
- package/connectors/connect-yousign/node_modules/bun-types/wasm.d.ts +0 -193
- package/connectors/connect-yousign/node_modules/chalk/license +0 -9
- package/connectors/connect-yousign/node_modules/chalk/package.json +0 -83
- package/connectors/connect-yousign/node_modules/chalk/readme.md +0 -297
- package/connectors/connect-yousign/node_modules/chalk/source/index.d.ts +0 -325
- package/connectors/connect-yousign/node_modules/chalk/source/index.js +0 -225
- package/connectors/connect-yousign/node_modules/chalk/source/utilities.js +0 -33
- package/connectors/connect-yousign/node_modules/chalk/source/vendor/ansi-styles/index.d.ts +0 -236
- package/connectors/connect-yousign/node_modules/chalk/source/vendor/ansi-styles/index.js +0 -223
- package/connectors/connect-yousign/node_modules/chalk/source/vendor/supports-color/browser.d.ts +0 -1
- package/connectors/connect-yousign/node_modules/chalk/source/vendor/supports-color/browser.js +0 -34
- package/connectors/connect-yousign/node_modules/chalk/source/vendor/supports-color/index.d.ts +0 -55
- package/connectors/connect-yousign/node_modules/chalk/source/vendor/supports-color/index.js +0 -190
- package/connectors/connect-yousign/node_modules/commander/LICENSE +0 -22
- package/connectors/connect-yousign/node_modules/commander/Readme.md +0 -1157
- package/connectors/connect-yousign/node_modules/commander/esm.mjs +0 -16
- package/connectors/connect-yousign/node_modules/commander/index.js +0 -24
- package/connectors/connect-yousign/node_modules/commander/lib/argument.js +0 -149
- package/connectors/connect-yousign/node_modules/commander/lib/command.js +0 -2509
- package/connectors/connect-yousign/node_modules/commander/lib/error.js +0 -39
- package/connectors/connect-yousign/node_modules/commander/lib/help.js +0 -520
- package/connectors/connect-yousign/node_modules/commander/lib/option.js +0 -330
- package/connectors/connect-yousign/node_modules/commander/lib/suggestSimilar.js +0 -101
- package/connectors/connect-yousign/node_modules/commander/package-support.json +0 -16
- package/connectors/connect-yousign/node_modules/commander/package.json +0 -84
- package/connectors/connect-yousign/node_modules/commander/typings/esm.d.mts +0 -3
- package/connectors/connect-yousign/node_modules/commander/typings/index.d.ts +0 -969
- package/connectors/connect-yousign/node_modules/typescript/LICENSE.txt +0 -55
- package/connectors/connect-yousign/node_modules/typescript/README.md +0 -50
- package/connectors/connect-yousign/node_modules/typescript/SECURITY.md +0 -41
- package/connectors/connect-yousign/node_modules/typescript/ThirdPartyNoticeText.txt +0 -193
- package/connectors/connect-yousign/node_modules/typescript/bin/tsc +0 -2
- package/connectors/connect-yousign/node_modules/typescript/bin/tsserver +0 -2
- package/connectors/connect-yousign/node_modules/typescript/lib/_tsc.js +0 -133818
- package/connectors/connect-yousign/node_modules/typescript/lib/_tsserver.js +0 -659
- package/connectors/connect-yousign/node_modules/typescript/lib/_typingsInstaller.js +0 -222
- package/connectors/connect-yousign/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/lib/de/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/lib/es/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/lib/it/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.d.ts +0 -22
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.decorators.d.ts +0 -384
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.decorators.legacy.d.ts +0 -22
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +0 -41
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.dom.d.ts +0 -39429
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.dom.iterable.d.ts +0 -571
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.collection.d.ts +0 -147
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.core.d.ts +0 -597
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.d.ts +0 -28
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.generator.d.ts +0 -77
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.iterable.d.ts +0 -605
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.promise.d.ts +0 -81
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.proxy.d.ts +0 -128
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.reflect.d.ts +0 -144
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.symbol.d.ts +0 -46
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +0 -326
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2016.array.include.d.ts +0 -116
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2016.d.ts +0 -21
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2016.full.d.ts +0 -23
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2016.intl.d.ts +0 -31
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +0 -21
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.d.ts +0 -26
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.date.d.ts +0 -31
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.full.d.ts +0 -23
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.intl.d.ts +0 -44
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.object.d.ts +0 -49
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +0 -135
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.string.d.ts +0 -45
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +0 -53
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +0 -77
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +0 -53
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2018.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2018.full.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2018.intl.d.ts +0 -83
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2018.promise.d.ts +0 -30
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2018.regexp.d.ts +0 -37
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2019.array.d.ts +0 -79
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2019.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2019.full.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2019.intl.d.ts +0 -23
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2019.object.d.ts +0 -33
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2019.string.d.ts +0 -37
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2019.symbol.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.bigint.d.ts +0 -765
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.d.ts +0 -27
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.date.d.ts +0 -42
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.full.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.intl.d.ts +0 -474
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.number.d.ts +0 -28
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.promise.d.ts +0 -47
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +0 -99
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.string.d.ts +0 -44
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +0 -41
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2021.d.ts +0 -23
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2021.full.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2021.intl.d.ts +0 -166
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2021.promise.d.ts +0 -48
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2021.string.d.ts +0 -33
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2021.weakref.d.ts +0 -78
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2022.array.d.ts +0 -121
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2022.d.ts +0 -25
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2022.error.d.ts +0 -75
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2022.full.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2022.intl.d.ts +0 -145
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2022.object.d.ts +0 -26
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2022.regexp.d.ts +0 -39
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2022.string.d.ts +0 -25
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2023.array.d.ts +0 -924
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2023.collection.d.ts +0 -21
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2023.d.ts +0 -22
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2023.full.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2023.intl.d.ts +0 -56
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +0 -65
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.collection.d.ts +0 -29
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.d.ts +0 -26
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.full.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.object.d.ts +0 -29
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.promise.d.ts +0 -35
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.regexp.d.ts +0 -25
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +0 -68
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es2024.string.d.ts +0 -29
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es5.d.ts +0 -4601
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.es6.d.ts +0 -23
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.array.d.ts +0 -35
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.collection.d.ts +0 -96
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.d.ts +0 -29
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.decorators.d.ts +0 -28
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.disposable.d.ts +0 -193
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.error.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.float16.d.ts +0 -445
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.full.d.ts +0 -24
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.intl.d.ts +0 -21
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.iterator.d.ts +0 -148
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.promise.d.ts +0 -34
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +0 -25
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.scripthost.d.ts +0 -322
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +0 -41
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.webworker.d.ts +0 -13150
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +0 -23
- package/connectors/connect-yousign/node_modules/typescript/lib/lib.webworker.iterable.d.ts +0 -340
- package/connectors/connect-yousign/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/lib/tsc.js +0 -8
- package/connectors/connect-yousign/node_modules/typescript/lib/tsserver.js +0 -8
- package/connectors/connect-yousign/node_modules/typescript/lib/tsserverlibrary.d.ts +0 -17
- package/connectors/connect-yousign/node_modules/typescript/lib/tsserverlibrary.js +0 -21
- package/connectors/connect-yousign/node_modules/typescript/lib/typesMap.json +0 -497
- package/connectors/connect-yousign/node_modules/typescript/lib/typescript.d.ts +0 -11437
- package/connectors/connect-yousign/node_modules/typescript/lib/typescript.js +0 -200276
- package/connectors/connect-yousign/node_modules/typescript/lib/typingsInstaller.js +0 -8
- package/connectors/connect-yousign/node_modules/typescript/lib/watchGuard.js +0 -53
- package/connectors/connect-yousign/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +0 -2122
- package/connectors/connect-yousign/node_modules/typescript/package.json +0 -120
- package/connectors/connect-yousign/node_modules/undici-types/LICENSE +0 -21
- package/connectors/connect-yousign/node_modules/undici-types/README.md +0 -6
- package/connectors/connect-yousign/node_modules/undici-types/agent.d.ts +0 -32
- package/connectors/connect-yousign/node_modules/undici-types/api.d.ts +0 -43
- package/connectors/connect-yousign/node_modules/undici-types/balanced-pool.d.ts +0 -30
- package/connectors/connect-yousign/node_modules/undici-types/cache-interceptor.d.ts +0 -173
- package/connectors/connect-yousign/node_modules/undici-types/cache.d.ts +0 -36
- package/connectors/connect-yousign/node_modules/undici-types/client-stats.d.ts +0 -15
- package/connectors/connect-yousign/node_modules/undici-types/client.d.ts +0 -108
- package/connectors/connect-yousign/node_modules/undici-types/connector.d.ts +0 -34
- package/connectors/connect-yousign/node_modules/undici-types/content-type.d.ts +0 -21
- package/connectors/connect-yousign/node_modules/undici-types/cookies.d.ts +0 -30
- package/connectors/connect-yousign/node_modules/undici-types/diagnostics-channel.d.ts +0 -74
- package/connectors/connect-yousign/node_modules/undici-types/dispatcher.d.ts +0 -276
- package/connectors/connect-yousign/node_modules/undici-types/env-http-proxy-agent.d.ts +0 -22
- package/connectors/connect-yousign/node_modules/undici-types/errors.d.ts +0 -161
- package/connectors/connect-yousign/node_modules/undici-types/eventsource.d.ts +0 -66
- package/connectors/connect-yousign/node_modules/undici-types/fetch.d.ts +0 -211
- package/connectors/connect-yousign/node_modules/undici-types/formdata.d.ts +0 -108
- package/connectors/connect-yousign/node_modules/undici-types/global-dispatcher.d.ts +0 -9
- package/connectors/connect-yousign/node_modules/undici-types/global-origin.d.ts +0 -7
- package/connectors/connect-yousign/node_modules/undici-types/h2c-client.d.ts +0 -73
- package/connectors/connect-yousign/node_modules/undici-types/handlers.d.ts +0 -15
- package/connectors/connect-yousign/node_modules/undici-types/header.d.ts +0 -160
- package/connectors/connect-yousign/node_modules/undici-types/index.d.ts +0 -88
- package/connectors/connect-yousign/node_modules/undici-types/interceptors.d.ts +0 -73
- package/connectors/connect-yousign/node_modules/undici-types/mock-agent.d.ts +0 -68
- package/connectors/connect-yousign/node_modules/undici-types/mock-call-history.d.ts +0 -111
- package/connectors/connect-yousign/node_modules/undici-types/mock-client.d.ts +0 -27
- package/connectors/connect-yousign/node_modules/undici-types/mock-errors.d.ts +0 -12
- package/connectors/connect-yousign/node_modules/undici-types/mock-interceptor.d.ts +0 -94
- package/connectors/connect-yousign/node_modules/undici-types/mock-pool.d.ts +0 -27
- package/connectors/connect-yousign/node_modules/undici-types/package.json +0 -55
- package/connectors/connect-yousign/node_modules/undici-types/patch.d.ts +0 -29
- package/connectors/connect-yousign/node_modules/undici-types/pool-stats.d.ts +0 -19
- package/connectors/connect-yousign/node_modules/undici-types/pool.d.ts +0 -41
- package/connectors/connect-yousign/node_modules/undici-types/proxy-agent.d.ts +0 -29
- package/connectors/connect-yousign/node_modules/undici-types/readable.d.ts +0 -68
- package/connectors/connect-yousign/node_modules/undici-types/retry-agent.d.ts +0 -8
- package/connectors/connect-yousign/node_modules/undici-types/retry-handler.d.ts +0 -125
- package/connectors/connect-yousign/node_modules/undici-types/round-robin-pool.d.ts +0 -41
- package/connectors/connect-yousign/node_modules/undici-types/snapshot-agent.d.ts +0 -109
- package/connectors/connect-yousign/node_modules/undici-types/util.d.ts +0 -18
- package/connectors/connect-yousign/node_modules/undici-types/utility.d.ts +0 -7
- package/connectors/connect-yousign/node_modules/undici-types/webidl.d.ts +0 -341
- package/connectors/connect-yousign/node_modules/undici-types/websocket.d.ts +0 -186
- package/dashboard/dist/assets/index-CSlS3oNV.css +0 -1
- package/dashboard/dist/assets/index-NCasN7x4.js +0 -284
- /package/dist/{server/server.test.d.ts → core/builtins.test.d.ts} +0 -0
package/dist/index.js
CHANGED
|
@@ -15,8 +15,8 @@ var __export = (target, all) => {
|
|
|
15
15
|
};
|
|
16
16
|
|
|
17
17
|
// src/lib/registry.ts
|
|
18
|
-
import { existsSync as existsSync8, readFileSync as
|
|
19
|
-
import { join as
|
|
18
|
+
import { existsSync as existsSync8, readFileSync as readFileSync5 } from "fs";
|
|
19
|
+
import { join as join10, dirname as dirname5 } from "path";
|
|
20
20
|
import { fileURLToPath as fileURLToPath3 } from "url";
|
|
21
21
|
|
|
22
22
|
// src/core/errors.ts
|
|
@@ -42,7 +42,7 @@ class ConnectorOperationNotFoundError extends Error {
|
|
|
42
42
|
|
|
43
43
|
// src/core/connector.ts
|
|
44
44
|
var CONNECTOR_NAME_RE = /^[a-z0-9-]+$/;
|
|
45
|
-
var OPERATION_NAME_RE = /^[
|
|
45
|
+
var OPERATION_NAME_RE = /^[A-Za-z0-9:._-]+$/;
|
|
46
46
|
function defineConnector(definition) {
|
|
47
47
|
const { meta, auth, operations } = definition;
|
|
48
48
|
if (!CONNECTOR_NAME_RE.test(meta.name)) {
|
|
@@ -4966,10 +4966,731 @@ var githubConnector = defineConnector({
|
|
|
4966
4966
|
}
|
|
4967
4967
|
}
|
|
4968
4968
|
});
|
|
4969
|
+
|
|
4970
|
+
// src/core/connectors/gmail.ts
|
|
4971
|
+
import { existsSync as existsSync2, mkdirSync, readFileSync, readdirSync, writeFileSync } from "fs";
|
|
4972
|
+
import { homedir } from "os";
|
|
4973
|
+
import { basename, join as join2 } from "path";
|
|
4974
|
+
var GMAIL_API_BASE = "https://gmail.googleapis.com/gmail/v1";
|
|
4975
|
+
var TOKEN_URL = "https://oauth2.googleapis.com/token";
|
|
4976
|
+
var REFRESH_BUFFER_MS = 5 * 60 * 1000;
|
|
4977
|
+
var listMessagesSchema = exports_external.object({
|
|
4978
|
+
max: exports_external.coerce.number().int().positive().max(500).optional(),
|
|
4979
|
+
maxResults: exports_external.coerce.number().int().positive().max(500).optional(),
|
|
4980
|
+
pageToken: exports_external.string().optional(),
|
|
4981
|
+
query: exports_external.string().optional(),
|
|
4982
|
+
q: exports_external.string().optional(),
|
|
4983
|
+
label: exports_external.string().optional(),
|
|
4984
|
+
labelIds: exports_external.union([exports_external.string(), exports_external.array(exports_external.string())]).optional(),
|
|
4985
|
+
includeSpamTrash: exports_external.boolean().optional()
|
|
4986
|
+
});
|
|
4987
|
+
var messageIdSchema = exports_external.object({
|
|
4988
|
+
args: exports_external.array(exports_external.union([exports_external.string(), exports_external.number(), exports_external.boolean()])).optional(),
|
|
4989
|
+
messageId: exports_external.string().optional()
|
|
4990
|
+
});
|
|
4991
|
+
var readMessageSchema = messageIdSchema.extend({
|
|
4992
|
+
body: exports_external.boolean().optional(),
|
|
4993
|
+
html: exports_external.boolean().optional(),
|
|
4994
|
+
format: exports_external.enum(["full", "metadata", "minimal", "raw"]).optional()
|
|
4995
|
+
});
|
|
4996
|
+
var attachmentListSchema = messageIdSchema;
|
|
4997
|
+
var attachmentDownloadSchema = messageIdSchema.extend({
|
|
4998
|
+
attachmentId: exports_external.string().optional(),
|
|
4999
|
+
filename: exports_external.string().optional(),
|
|
5000
|
+
mimeType: exports_external.string().optional(),
|
|
5001
|
+
dir: exports_external.string().optional(),
|
|
5002
|
+
outputDir: exports_external.string().optional()
|
|
5003
|
+
});
|
|
5004
|
+
var historyListSchema = exports_external.object({
|
|
5005
|
+
startHistoryId: exports_external.string(),
|
|
5006
|
+
historyTypes: exports_external.union([exports_external.string(), exports_external.array(exports_external.string())]).optional(),
|
|
5007
|
+
labelId: exports_external.string().optional(),
|
|
5008
|
+
maxResults: exports_external.coerce.number().int().positive().max(500).optional(),
|
|
5009
|
+
pageToken: exports_external.string().optional()
|
|
5010
|
+
});
|
|
5011
|
+
var replySchema = messageIdSchema.extend({
|
|
5012
|
+
body: exports_external.string(),
|
|
5013
|
+
html: exports_external.boolean().optional(),
|
|
5014
|
+
isHtml: exports_external.boolean().optional(),
|
|
5015
|
+
cc: exports_external.union([exports_external.string(), exports_external.array(exports_external.string())]).optional(),
|
|
5016
|
+
bcc: exports_external.union([exports_external.string(), exports_external.array(exports_external.string())]).optional()
|
|
5017
|
+
});
|
|
5018
|
+
var gmailConnector = defineConnector({
|
|
5019
|
+
meta: {
|
|
5020
|
+
name: "gmail",
|
|
5021
|
+
displayName: "Gmail",
|
|
5022
|
+
description: "Profile-aware Gmail mailbox operations for sync, labels, attachments, history, and replies.",
|
|
5023
|
+
category: "communication",
|
|
5024
|
+
tags: ["google", "gmail", "email", "mailbox"]
|
|
5025
|
+
},
|
|
5026
|
+
auth: {
|
|
5027
|
+
type: "oauth2",
|
|
5028
|
+
supportsProfiles: true,
|
|
5029
|
+
fields: [
|
|
5030
|
+
{ key: "clientId", env: "GMAIL_CLIENT_ID", label: "OAuth client ID" },
|
|
5031
|
+
{ key: "clientSecret", env: "GMAIL_CLIENT_SECRET", label: "OAuth client secret", secret: true }
|
|
5032
|
+
]
|
|
5033
|
+
},
|
|
5034
|
+
createContext: ({ profile }) => ({ profile: profile || "default" }),
|
|
5035
|
+
operations: {
|
|
5036
|
+
"profiles.list": {
|
|
5037
|
+
summary: "List configured Gmail profiles.",
|
|
5038
|
+
execute: () => ({ profiles: listProfiles() })
|
|
5039
|
+
},
|
|
5040
|
+
"profile.get": {
|
|
5041
|
+
summary: "Get the authenticated Gmail profile.",
|
|
5042
|
+
execute: async ({ context }) => requestJson(context.profile, "/users/me/profile", {})
|
|
5043
|
+
},
|
|
5044
|
+
"messages.list": {
|
|
5045
|
+
summary: "List Gmail messages.",
|
|
5046
|
+
inputSchema: listMessagesSchema,
|
|
5047
|
+
execute: async ({ context }, input) => {
|
|
5048
|
+
const labelIds = normalizeStringArray(input.labelIds ?? input.label);
|
|
5049
|
+
return requestJson(context.profile, "/users/me/messages", {
|
|
5050
|
+
maxResults: input.maxResults ?? input.max ?? 50,
|
|
5051
|
+
pageToken: input.pageToken,
|
|
5052
|
+
q: input.q ?? input.query,
|
|
5053
|
+
labelIds: labelIds.length > 0 ? labelIds.join(",") : undefined,
|
|
5054
|
+
includeSpamTrash: input.includeSpamTrash
|
|
5055
|
+
});
|
|
5056
|
+
}
|
|
5057
|
+
},
|
|
5058
|
+
"messages.read": {
|
|
5059
|
+
summary: "Read a Gmail message with optional extracted body.",
|
|
5060
|
+
inputSchema: readMessageSchema,
|
|
5061
|
+
execute: async ({ context }, input) => {
|
|
5062
|
+
const messageId = getMessageId(input);
|
|
5063
|
+
const message = await requestJson(context.profile, `/users/me/messages/${encodeURIComponent(messageId)}`, { format: input.format ?? "full" });
|
|
5064
|
+
const headers = headersToObject(message.payload?.headers ?? []);
|
|
5065
|
+
return {
|
|
5066
|
+
...message,
|
|
5067
|
+
from: headers.From ?? headers.from ?? "",
|
|
5068
|
+
to: headers.To ?? headers.to ?? "",
|
|
5069
|
+
cc: headers.Cc ?? headers.cc ?? "",
|
|
5070
|
+
subject: headers.Subject ?? headers.subject ?? "",
|
|
5071
|
+
date: headers.Date ?? headers.date ?? "",
|
|
5072
|
+
body: input.body ? extractBody(message, Boolean(input.html)) : undefined,
|
|
5073
|
+
size: message.sizeEstimate
|
|
5074
|
+
};
|
|
5075
|
+
}
|
|
5076
|
+
},
|
|
5077
|
+
"messages.getRaw": {
|
|
5078
|
+
summary: "Read raw base64url Gmail message content.",
|
|
5079
|
+
inputSchema: messageIdSchema,
|
|
5080
|
+
execute: async ({ context }, input) => {
|
|
5081
|
+
const messageId = getMessageId(input);
|
|
5082
|
+
return requestJson(context.profile, `/users/me/messages/${encodeURIComponent(messageId)}`, { format: "raw" });
|
|
5083
|
+
}
|
|
5084
|
+
},
|
|
5085
|
+
"messages.mark-read": {
|
|
5086
|
+
summary: "Mark a message as read.",
|
|
5087
|
+
inputSchema: messageIdSchema,
|
|
5088
|
+
execute: async ({ context }, input) => modifyMessage(context.profile, getMessageId(input), undefined, ["UNREAD"])
|
|
5089
|
+
},
|
|
5090
|
+
"messages.mark-unread": {
|
|
5091
|
+
summary: "Mark a message as unread.",
|
|
5092
|
+
inputSchema: messageIdSchema,
|
|
5093
|
+
execute: async ({ context }, input) => modifyMessage(context.profile, getMessageId(input), ["UNREAD"], undefined)
|
|
5094
|
+
},
|
|
5095
|
+
"messages.archive": {
|
|
5096
|
+
summary: "Archive a message by removing the INBOX label.",
|
|
5097
|
+
inputSchema: messageIdSchema,
|
|
5098
|
+
execute: async ({ context }, input) => modifyMessage(context.profile, getMessageId(input), undefined, ["INBOX"])
|
|
5099
|
+
},
|
|
5100
|
+
"messages.star": {
|
|
5101
|
+
summary: "Star a message.",
|
|
5102
|
+
inputSchema: messageIdSchema,
|
|
5103
|
+
execute: async ({ context }, input) => modifyMessage(context.profile, getMessageId(input), ["STARRED"], undefined)
|
|
5104
|
+
},
|
|
5105
|
+
"messages.reply": {
|
|
5106
|
+
summary: "Reply to a Gmail message in the same thread.",
|
|
5107
|
+
inputSchema: replySchema,
|
|
5108
|
+
execute: async ({ context }, input) => replyToMessage(context.profile, getMessageId(input), input)
|
|
5109
|
+
},
|
|
5110
|
+
"attachments.list": {
|
|
5111
|
+
summary: "List Gmail message attachments.",
|
|
5112
|
+
inputSchema: attachmentListSchema,
|
|
5113
|
+
execute: async ({ context }, input) => {
|
|
5114
|
+
const message = await requestJson(context.profile, `/users/me/messages/${encodeURIComponent(getMessageId(input))}`, { format: "full" });
|
|
5115
|
+
return collectAttachments(message.payload);
|
|
5116
|
+
}
|
|
5117
|
+
},
|
|
5118
|
+
"attachments.download": {
|
|
5119
|
+
summary: "Download one or all Gmail message attachments to disk.",
|
|
5120
|
+
inputSchema: attachmentDownloadSchema,
|
|
5121
|
+
execute: async ({ context }, input) => downloadAttachments(context.profile, input)
|
|
5122
|
+
},
|
|
5123
|
+
"labels.list": {
|
|
5124
|
+
summary: "List Gmail labels.",
|
|
5125
|
+
execute: async ({ context }) => requestJson(context.profile, "/users/me/labels", {})
|
|
5126
|
+
},
|
|
5127
|
+
"history.list": {
|
|
5128
|
+
summary: "List Gmail mailbox history from a history id.",
|
|
5129
|
+
inputSchema: historyListSchema,
|
|
5130
|
+
execute: async ({ context }, input) => requestJson(context.profile, "/users/me/history", {
|
|
5131
|
+
startHistoryId: input.startHistoryId,
|
|
5132
|
+
historyTypes: normalizeStringArray(input.historyTypes).join(",") || undefined,
|
|
5133
|
+
labelId: input.labelId,
|
|
5134
|
+
maxResults: input.maxResults,
|
|
5135
|
+
pageToken: input.pageToken
|
|
5136
|
+
})
|
|
5137
|
+
}
|
|
5138
|
+
}
|
|
5139
|
+
});
|
|
5140
|
+
async function modifyMessage(profile, messageId, addLabelIds, removeLabelIds) {
|
|
5141
|
+
return requestJson(profile, `/users/me/messages/${encodeURIComponent(messageId)}/modify`, {}, {
|
|
5142
|
+
method: "POST",
|
|
5143
|
+
body: {
|
|
5144
|
+
addLabelIds: addLabelIds ?? [],
|
|
5145
|
+
removeLabelIds: removeLabelIds ?? []
|
|
5146
|
+
}
|
|
5147
|
+
});
|
|
5148
|
+
}
|
|
5149
|
+
async function replyToMessage(profile, messageId, input) {
|
|
5150
|
+
const original = await requestJson(profile, `/users/me/messages/${encodeURIComponent(messageId)}`, { format: "full" });
|
|
5151
|
+
const headers = headersToObject(original.payload?.headers ?? []);
|
|
5152
|
+
const subject = normalizeReplySubject(headers.Subject ?? headers.subject ?? "");
|
|
5153
|
+
const to = headers.From ?? headers.from ?? "";
|
|
5154
|
+
const messageIdHeader = headers["Message-ID"] ?? headers["Message-Id"] ?? headers["message-id"] ?? "";
|
|
5155
|
+
const references = [headers.References ?? headers.references, messageIdHeader].filter(Boolean).join(" ");
|
|
5156
|
+
const raw = buildRawEmail({
|
|
5157
|
+
to,
|
|
5158
|
+
cc: normalizeStringArray(input.cc),
|
|
5159
|
+
bcc: normalizeStringArray(input.bcc),
|
|
5160
|
+
subject,
|
|
5161
|
+
body: input.body,
|
|
5162
|
+
isHtml: Boolean(input.html ?? input.isHtml),
|
|
5163
|
+
inReplyTo: messageIdHeader,
|
|
5164
|
+
references
|
|
5165
|
+
});
|
|
5166
|
+
return requestJson(profile, "/users/me/messages/send", {}, {
|
|
5167
|
+
method: "POST",
|
|
5168
|
+
body: {
|
|
5169
|
+
raw: Buffer.from(raw).toString("base64url"),
|
|
5170
|
+
threadId: original.threadId
|
|
5171
|
+
}
|
|
5172
|
+
});
|
|
5173
|
+
}
|
|
5174
|
+
async function downloadAttachments(profile, input) {
|
|
5175
|
+
const messageId = getMessageId(input);
|
|
5176
|
+
const outputDir = input.dir ?? input.outputDir ?? join2(configDirs()[0], "attachments", messageId);
|
|
5177
|
+
mkdirSync(outputDir, { recursive: true });
|
|
5178
|
+
const attachments = input.attachmentId && input.filename ? [{
|
|
5179
|
+
attachmentId: input.attachmentId,
|
|
5180
|
+
filename: input.filename,
|
|
5181
|
+
mimeType: input.mimeType ?? "application/octet-stream",
|
|
5182
|
+
size: 0
|
|
5183
|
+
}] : collectAttachments((await requestJson(profile, `/users/me/messages/${encodeURIComponent(messageId)}`, { format: "full" })).payload);
|
|
5184
|
+
const downloaded = [];
|
|
5185
|
+
for (const attachment of attachments) {
|
|
5186
|
+
const data = await requestJson(profile, `/users/me/messages/${encodeURIComponent(messageId)}/attachments/${encodeURIComponent(attachment.attachmentId)}`, {});
|
|
5187
|
+
const filename = safeFilename(attachment.filename);
|
|
5188
|
+
const path = join2(outputDir, filename);
|
|
5189
|
+
const buffer = Buffer.from(data.data, "base64url");
|
|
5190
|
+
writeFileSync(path, buffer);
|
|
5191
|
+
downloaded.push({
|
|
5192
|
+
filename,
|
|
5193
|
+
path,
|
|
5194
|
+
size: buffer.length,
|
|
5195
|
+
mimeType: attachment.mimeType
|
|
5196
|
+
});
|
|
5197
|
+
}
|
|
5198
|
+
return downloaded;
|
|
5199
|
+
}
|
|
5200
|
+
async function requestJson(profile, path, params, options = {}) {
|
|
5201
|
+
const token = await getValidAccessToken(profile);
|
|
5202
|
+
const url = new URL(`${GMAIL_API_BASE}${path}`);
|
|
5203
|
+
for (const [key, value] of Object.entries(params)) {
|
|
5204
|
+
if (value !== undefined && value !== null && value !== "")
|
|
5205
|
+
url.searchParams.append(key, String(value));
|
|
5206
|
+
}
|
|
5207
|
+
const response = await fetch(url, {
|
|
5208
|
+
method: options.method ?? "GET",
|
|
5209
|
+
headers: {
|
|
5210
|
+
Authorization: `Bearer ${token}`,
|
|
5211
|
+
Accept: "application/json",
|
|
5212
|
+
...options.body ? { "Content-Type": "application/json" } : {}
|
|
5213
|
+
},
|
|
5214
|
+
body: options.body ? JSON.stringify(options.body) : undefined
|
|
5215
|
+
});
|
|
5216
|
+
const text = await response.text();
|
|
5217
|
+
const data = text ? JSON.parse(text) : {};
|
|
5218
|
+
if (!response.ok) {
|
|
5219
|
+
const error = data;
|
|
5220
|
+
throw new Error(`Gmail request failed (${response.status}): ${error.error?.message ?? response.statusText}`);
|
|
5221
|
+
}
|
|
5222
|
+
return data;
|
|
5223
|
+
}
|
|
5224
|
+
async function getValidAccessToken(profile) {
|
|
5225
|
+
if (process.env.GMAIL_ACCESS_TOKEN)
|
|
5226
|
+
return process.env.GMAIL_ACCESS_TOKEN;
|
|
5227
|
+
const tokens = loadTokens(profile);
|
|
5228
|
+
if (!tokens?.accessToken && !tokens?.refreshToken) {
|
|
5229
|
+
throw new Error(`Gmail profile "${profile}" is not authenticated. Run: connectors auth gmail`);
|
|
5230
|
+
}
|
|
5231
|
+
if (tokens.accessToken && (!tokens.expiresAt || Date.now() < tokens.expiresAt - REFRESH_BUFFER_MS))
|
|
5232
|
+
return tokens.accessToken;
|
|
5233
|
+
if (!tokens.refreshToken)
|
|
5234
|
+
return tokens.accessToken ?? "";
|
|
5235
|
+
return (await refreshAccessToken(profile, tokens)).accessToken ?? "";
|
|
5236
|
+
}
|
|
5237
|
+
async function refreshAccessToken(profile, currentTokens) {
|
|
5238
|
+
const credentials = loadCredentials(profile);
|
|
5239
|
+
if (!credentials.clientId || !credentials.clientSecret)
|
|
5240
|
+
throw new Error("Gmail OAuth credentials are not configured. Run: connectors auth gmail");
|
|
5241
|
+
if (!currentTokens.refreshToken)
|
|
5242
|
+
throw new Error(`Gmail profile "${profile}" has no refresh token. Run: connectors auth gmail`);
|
|
5243
|
+
const response = await fetch(TOKEN_URL, {
|
|
5244
|
+
method: "POST",
|
|
5245
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
5246
|
+
body: new URLSearchParams({
|
|
5247
|
+
client_id: credentials.clientId,
|
|
5248
|
+
client_secret: credentials.clientSecret,
|
|
5249
|
+
refresh_token: currentTokens.refreshToken,
|
|
5250
|
+
grant_type: "refresh_token"
|
|
5251
|
+
})
|
|
5252
|
+
});
|
|
5253
|
+
const data = await response.json().catch(() => ({}));
|
|
5254
|
+
if (!response.ok || !data.access_token)
|
|
5255
|
+
throw new Error(`Gmail token refresh failed: ${data.error_description || data.error || response.statusText}`);
|
|
5256
|
+
const tokens = {
|
|
5257
|
+
accessToken: data.access_token,
|
|
5258
|
+
refreshToken: currentTokens.refreshToken,
|
|
5259
|
+
expiresAt: Date.now() + (data.expires_in ?? 3600) * 1000,
|
|
5260
|
+
tokenType: data.token_type ?? currentTokens.tokenType,
|
|
5261
|
+
scope: data.scope ?? currentTokens.scope
|
|
5262
|
+
};
|
|
5263
|
+
saveTokens(profile, tokens);
|
|
5264
|
+
return tokens;
|
|
5265
|
+
}
|
|
5266
|
+
function listProfiles() {
|
|
5267
|
+
const profiles = new Set;
|
|
5268
|
+
for (const baseDir of configDirs()) {
|
|
5269
|
+
const profilesDir = join2(baseDir, "profiles");
|
|
5270
|
+
if (!existsSync2(profilesDir))
|
|
5271
|
+
continue;
|
|
5272
|
+
for (const entry of readdirSync(profilesDir, { withFileTypes: true })) {
|
|
5273
|
+
if (entry.isDirectory())
|
|
5274
|
+
profiles.add(entry.name);
|
|
5275
|
+
if (entry.isFile() && entry.name.endsWith(".json"))
|
|
5276
|
+
profiles.add(basename(entry.name, ".json"));
|
|
5277
|
+
}
|
|
5278
|
+
}
|
|
5279
|
+
return Array.from(profiles).sort((a, b) => a.localeCompare(b));
|
|
5280
|
+
}
|
|
5281
|
+
function loadCredentials(profile) {
|
|
5282
|
+
const envClientId = process.env.GMAIL_CLIENT_ID ?? process.env.GOOGLE_CLIENT_ID;
|
|
5283
|
+
const envClientSecret = process.env.GMAIL_CLIENT_SECRET ?? process.env.GOOGLE_CLIENT_SECRET;
|
|
5284
|
+
if (envClientId && envClientSecret)
|
|
5285
|
+
return { clientId: envClientId, clientSecret: envClientSecret };
|
|
5286
|
+
for (const baseDir of configDirs()) {
|
|
5287
|
+
const credentials = {
|
|
5288
|
+
...readJson(join2(baseDir, "credentials.json")),
|
|
5289
|
+
...readJson(join2(baseDir, "profiles", profile, "config.json"))
|
|
5290
|
+
};
|
|
5291
|
+
if (credentials.clientId || credentials.clientSecret)
|
|
5292
|
+
return credentials;
|
|
5293
|
+
}
|
|
5294
|
+
return {};
|
|
5295
|
+
}
|
|
5296
|
+
function loadTokens(profile) {
|
|
5297
|
+
for (const baseDir of configDirs()) {
|
|
5298
|
+
const fromProfile = readJson(join2(baseDir, "profiles", profile, "tokens.json"));
|
|
5299
|
+
if (fromProfile)
|
|
5300
|
+
return fromProfile;
|
|
5301
|
+
const flat = readJson(join2(baseDir, "profiles", `${profile}.json`));
|
|
5302
|
+
if (flat)
|
|
5303
|
+
return flat.tokens ?? (flat.accessToken || flat.refreshToken ? flat : null);
|
|
5304
|
+
}
|
|
5305
|
+
return null;
|
|
5306
|
+
}
|
|
5307
|
+
function saveTokens(profile, tokens) {
|
|
5308
|
+
const baseDir = configDirs().find((dir) => existsSync2(dir)) ?? configDirs()[0];
|
|
5309
|
+
const profileDir = join2(baseDir, "profiles", profile);
|
|
5310
|
+
mkdirSync(profileDir, { recursive: true });
|
|
5311
|
+
writeFileSync(join2(profileDir, "tokens.json"), JSON.stringify(tokens, null, 2), { mode: 384 });
|
|
5312
|
+
}
|
|
5313
|
+
function configDirs() {
|
|
5314
|
+
const explicit = process.env.HASNA_GMAIL_CONNECTOR_DIR ?? process.env.GMAIL_CONNECTOR_DIR;
|
|
5315
|
+
if (explicit)
|
|
5316
|
+
return [explicit];
|
|
5317
|
+
const baseDir = process.env.HASNA_CONNECTORS_DIR ?? join2(homedir(), ".hasna", "connectors");
|
|
5318
|
+
return [join2(baseDir, "connect-gmail"), join2(baseDir, "gmail")];
|
|
5319
|
+
}
|
|
5320
|
+
function readJson(path) {
|
|
5321
|
+
if (!existsSync2(path))
|
|
5322
|
+
return null;
|
|
5323
|
+
try {
|
|
5324
|
+
return JSON.parse(readFileSync(path, "utf8"));
|
|
5325
|
+
} catch {
|
|
5326
|
+
return null;
|
|
5327
|
+
}
|
|
5328
|
+
}
|
|
5329
|
+
function getMessageId(input) {
|
|
5330
|
+
const id = input.messageId ?? (input.args?.[0] != null ? String(input.args[0]) : undefined);
|
|
5331
|
+
if (!id)
|
|
5332
|
+
throw new Error("Gmail messageId is required");
|
|
5333
|
+
return id;
|
|
5334
|
+
}
|
|
5335
|
+
function headersToObject(headers) {
|
|
5336
|
+
const out = {};
|
|
5337
|
+
for (const header of headers)
|
|
5338
|
+
out[header.name] = header.value;
|
|
5339
|
+
return out;
|
|
5340
|
+
}
|
|
5341
|
+
function extractBody(message, preferHtml = false) {
|
|
5342
|
+
if (!message.payload)
|
|
5343
|
+
return "";
|
|
5344
|
+
const targetType = preferHtml ? "text/html" : "text/plain";
|
|
5345
|
+
const parts = [];
|
|
5346
|
+
collectTextParts(message.payload, parts);
|
|
5347
|
+
return parts.find((part) => part.mimeType === targetType)?.data ?? parts.find((part) => part.mimeType.startsWith("text/"))?.data ?? "";
|
|
5348
|
+
}
|
|
5349
|
+
function collectTextParts(part, results) {
|
|
5350
|
+
const mimeType = (part.mimeType ?? "").split(";")[0].trim().toLowerCase();
|
|
5351
|
+
if (part.body?.data && mimeType.startsWith("text/")) {
|
|
5352
|
+
results.push({ mimeType, data: Buffer.from(part.body.data, "base64url").toString("utf8") });
|
|
5353
|
+
}
|
|
5354
|
+
for (const child of part.parts ?? [])
|
|
5355
|
+
collectTextParts(child, results);
|
|
5356
|
+
}
|
|
5357
|
+
function collectAttachments(part, attachments = []) {
|
|
5358
|
+
if (!part)
|
|
5359
|
+
return attachments;
|
|
5360
|
+
if (part.body?.attachmentId && part.filename) {
|
|
5361
|
+
attachments.push({
|
|
5362
|
+
attachmentId: part.body.attachmentId,
|
|
5363
|
+
filename: part.filename,
|
|
5364
|
+
mimeType: part.mimeType ?? "application/octet-stream",
|
|
5365
|
+
size: part.body.size ?? 0,
|
|
5366
|
+
partId: part.partId
|
|
5367
|
+
});
|
|
5368
|
+
}
|
|
5369
|
+
for (const child of part.parts ?? [])
|
|
5370
|
+
collectAttachments(child, attachments);
|
|
5371
|
+
return attachments;
|
|
5372
|
+
}
|
|
5373
|
+
function normalizeStringArray(value) {
|
|
5374
|
+
if (!value)
|
|
5375
|
+
return [];
|
|
5376
|
+
return Array.isArray(value) ? value : value.split(",").map((item) => item.trim()).filter(Boolean);
|
|
5377
|
+
}
|
|
5378
|
+
function normalizeReplySubject(subject) {
|
|
5379
|
+
return subject.toLowerCase().startsWith("re:") ? subject : `Re: ${subject}`;
|
|
5380
|
+
}
|
|
5381
|
+
function buildRawEmail(input) {
|
|
5382
|
+
const headers = [
|
|
5383
|
+
`To: ${input.to}`,
|
|
5384
|
+
input.cc.length ? `Cc: ${input.cc.join(", ")}` : "",
|
|
5385
|
+
input.bcc.length ? `Bcc: ${input.bcc.join(", ")}` : "",
|
|
5386
|
+
`Subject: ${input.subject}`,
|
|
5387
|
+
input.inReplyTo ? `In-Reply-To: ${input.inReplyTo}` : "",
|
|
5388
|
+
input.references ? `References: ${input.references}` : "",
|
|
5389
|
+
"MIME-Version: 1.0",
|
|
5390
|
+
`Content-Type: ${input.isHtml ? "text/html" : "text/plain"}; charset=UTF-8`
|
|
5391
|
+
].filter(Boolean);
|
|
5392
|
+
return `${headers.join(`\r
|
|
5393
|
+
`)}\r
|
|
5394
|
+
\r
|
|
5395
|
+
${input.body}`;
|
|
5396
|
+
}
|
|
5397
|
+
function safeFilename(filename) {
|
|
5398
|
+
return basename(filename.replace(/[\u00A0\u2000-\u200B\u202F\u205F\u3000]/g, " ")).replace(/[\/\\]/g, "_");
|
|
5399
|
+
}
|
|
5400
|
+
|
|
5401
|
+
// src/core/connectors/googledrive.ts
|
|
5402
|
+
import { existsSync as existsSync3, mkdirSync as mkdirSync2, readFileSync as readFileSync2, readdirSync as readdirSync2, writeFileSync as writeFileSync2 } from "fs";
|
|
5403
|
+
import { homedir as homedir2 } from "os";
|
|
5404
|
+
import { basename as basename2, join as join3 } from "path";
|
|
5405
|
+
var DRIVE_API_BASE = "https://www.googleapis.com/drive/v3";
|
|
5406
|
+
var TOKEN_URL2 = "https://oauth2.googleapis.com/token";
|
|
5407
|
+
var REFRESH_BUFFER_MS2 = 5 * 60 * 1000;
|
|
5408
|
+
var DEFAULT_FILE_FIELDS = [
|
|
5409
|
+
"id",
|
|
5410
|
+
"name",
|
|
5411
|
+
"mimeType",
|
|
5412
|
+
"parents",
|
|
5413
|
+
"version",
|
|
5414
|
+
"md5Checksum",
|
|
5415
|
+
"size",
|
|
5416
|
+
"modifiedTime",
|
|
5417
|
+
"createdTime",
|
|
5418
|
+
"trashed",
|
|
5419
|
+
"webViewLink",
|
|
5420
|
+
"webContentLink"
|
|
5421
|
+
].join(",");
|
|
5422
|
+
var DEFAULT_EXPORT_FORMATS = {
|
|
5423
|
+
document: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
5424
|
+
spreadsheet: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
5425
|
+
presentation: "application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
|
5426
|
+
drawing: "image/png"
|
|
5427
|
+
};
|
|
5428
|
+
var EXPORT_EXTENSIONS = {
|
|
5429
|
+
"application/vnd.openxmlformats-officedocument.wordprocessingml.document": ".docx",
|
|
5430
|
+
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": ".xlsx",
|
|
5431
|
+
"application/vnd.openxmlformats-officedocument.presentationml.presentation": ".pptx",
|
|
5432
|
+
"application/pdf": ".pdf",
|
|
5433
|
+
"text/plain": ".txt",
|
|
5434
|
+
"text/csv": ".csv",
|
|
5435
|
+
"image/png": ".png",
|
|
5436
|
+
"image/jpeg": ".jpg",
|
|
5437
|
+
"image/svg+xml": ".svg"
|
|
5438
|
+
};
|
|
5439
|
+
var listFilesSchema = exports_external.object({
|
|
5440
|
+
pageSize: exports_external.coerce.number().int().positive().max(1000).optional(),
|
|
5441
|
+
pageToken: exports_external.string().optional(),
|
|
5442
|
+
q: exports_external.string().optional(),
|
|
5443
|
+
fields: exports_external.string().optional(),
|
|
5444
|
+
orderBy: exports_external.string().optional(),
|
|
5445
|
+
corpora: exports_external.enum(["user", "drive", "allDrives"]).optional(),
|
|
5446
|
+
driveId: exports_external.string().optional(),
|
|
5447
|
+
supportsAllDrives: exports_external.boolean().optional(),
|
|
5448
|
+
includeItemsFromAllDrives: exports_external.boolean().optional()
|
|
5449
|
+
});
|
|
5450
|
+
var listDrivesSchema = exports_external.object({
|
|
5451
|
+
pageSize: exports_external.coerce.number().int().positive().max(100).optional(),
|
|
5452
|
+
pageToken: exports_external.string().optional(),
|
|
5453
|
+
q: exports_external.string().optional()
|
|
5454
|
+
});
|
|
5455
|
+
var fileIdSchema = exports_external.object({
|
|
5456
|
+
fileId: exports_external.string(),
|
|
5457
|
+
fields: exports_external.string().optional()
|
|
5458
|
+
});
|
|
5459
|
+
var downloadSchema = exports_external.object({
|
|
5460
|
+
fileId: exports_external.string(),
|
|
5461
|
+
file: exports_external.object({
|
|
5462
|
+
id: exports_external.string(),
|
|
5463
|
+
name: exports_external.string(),
|
|
5464
|
+
mimeType: exports_external.string()
|
|
5465
|
+
}).optional(),
|
|
5466
|
+
exportMimeType: exports_external.string().optional()
|
|
5467
|
+
});
|
|
5468
|
+
var googleDriveConnector = defineConnector({
|
|
5469
|
+
meta: {
|
|
5470
|
+
name: "googledrive",
|
|
5471
|
+
displayName: "Google Drive",
|
|
5472
|
+
description: "Profile-aware Google Drive discovery and file download operations.",
|
|
5473
|
+
category: "storage",
|
|
5474
|
+
tags: ["google", "drive", "files", "storage"]
|
|
5475
|
+
},
|
|
5476
|
+
auth: {
|
|
5477
|
+
type: "oauth2",
|
|
5478
|
+
supportsProfiles: true,
|
|
5479
|
+
fields: [
|
|
5480
|
+
{ key: "clientId", env: "GOOGLE_CLIENT_ID", label: "OAuth client ID" },
|
|
5481
|
+
{ key: "clientSecret", env: "GOOGLE_CLIENT_SECRET", label: "OAuth client secret", secret: true }
|
|
5482
|
+
]
|
|
5483
|
+
},
|
|
5484
|
+
createContext: ({ profile }) => ({ profile: profile || "default" }),
|
|
5485
|
+
operations: {
|
|
5486
|
+
"profiles.list": {
|
|
5487
|
+
summary: "List configured Google Drive profiles.",
|
|
5488
|
+
execute: () => ({ profiles: listProfiles2() })
|
|
5489
|
+
},
|
|
5490
|
+
"files.list": {
|
|
5491
|
+
summary: "List Google Drive files.",
|
|
5492
|
+
inputSchema: listFilesSchema,
|
|
5493
|
+
execute: async ({ context }, input) => requestJson2(context.profile, "/files", {
|
|
5494
|
+
pageSize: input.pageSize ?? 1000,
|
|
5495
|
+
pageToken: input.pageToken,
|
|
5496
|
+
q: input.q,
|
|
5497
|
+
fields: input.fields ?? `nextPageToken,files(${DEFAULT_FILE_FIELDS})`,
|
|
5498
|
+
orderBy: input.orderBy ?? "modifiedTime desc",
|
|
5499
|
+
corpora: input.corpora,
|
|
5500
|
+
driveId: input.driveId,
|
|
5501
|
+
supportsAllDrives: input.supportsAllDrives ?? true,
|
|
5502
|
+
includeItemsFromAllDrives: input.includeItemsFromAllDrives ?? false
|
|
5503
|
+
})
|
|
5504
|
+
},
|
|
5505
|
+
"files.get": {
|
|
5506
|
+
summary: "Get Google Drive file metadata.",
|
|
5507
|
+
inputSchema: fileIdSchema,
|
|
5508
|
+
execute: async ({ context }, input) => requestJson2(context.profile, `/files/${encodeURIComponent(input.fileId)}`, {
|
|
5509
|
+
fields: input.fields ?? DEFAULT_FILE_FIELDS,
|
|
5510
|
+
supportsAllDrives: true
|
|
5511
|
+
})
|
|
5512
|
+
},
|
|
5513
|
+
"files.download": {
|
|
5514
|
+
summary: "Download or export a Google Drive file as base64 content.",
|
|
5515
|
+
inputSchema: downloadSchema,
|
|
5516
|
+
execute: async ({ context }, input) => {
|
|
5517
|
+
const file = input.file ?? await requestJson2(context.profile, `/files/${encodeURIComponent(input.fileId)}`, { fields: DEFAULT_FILE_FIELDS, supportsAllDrives: true });
|
|
5518
|
+
const exportMimeType = file.mimeType.startsWith("application/vnd.google-apps.") ? input.exportMimeType ?? defaultExportMimeType(file.mimeType) : undefined;
|
|
5519
|
+
const data = await requestBinary(context.profile, exportMimeType ? `/files/${encodeURIComponent(file.id)}/export` : `/files/${encodeURIComponent(file.id)}`, exportMimeType ? { mimeType: exportMimeType, supportsAllDrives: true } : { alt: "media", supportsAllDrives: true });
|
|
5520
|
+
const mimeType = exportMimeType ?? file.mimeType ?? "application/octet-stream";
|
|
5521
|
+
return {
|
|
5522
|
+
dataBase64: Buffer.from(data).toString("base64"),
|
|
5523
|
+
filename: exportMimeType ? `${file.name}${extensionForMimeType(exportMimeType)}` : file.name,
|
|
5524
|
+
mimeType
|
|
5525
|
+
};
|
|
5526
|
+
}
|
|
5527
|
+
},
|
|
5528
|
+
"drives.list": {
|
|
5529
|
+
summary: "List Google shared drives.",
|
|
5530
|
+
inputSchema: listDrivesSchema,
|
|
5531
|
+
execute: async ({ context }, input) => requestJson2(context.profile, "/drives", {
|
|
5532
|
+
pageSize: input.pageSize ?? 100,
|
|
5533
|
+
pageToken: input.pageToken,
|
|
5534
|
+
q: input.q
|
|
5535
|
+
})
|
|
5536
|
+
}
|
|
5537
|
+
}
|
|
5538
|
+
});
|
|
5539
|
+
async function requestJson2(profile, path, params) {
|
|
5540
|
+
const response = await request(profile, path, params);
|
|
5541
|
+
const text = await response.text();
|
|
5542
|
+
return text ? JSON.parse(text) : {};
|
|
5543
|
+
}
|
|
5544
|
+
async function requestBinary(profile, path, params) {
|
|
5545
|
+
return (await request(profile, path, params)).arrayBuffer();
|
|
5546
|
+
}
|
|
5547
|
+
async function request(profile, path, params) {
|
|
5548
|
+
const token = await getValidAccessToken2(profile);
|
|
5549
|
+
const url = new URL(`${DRIVE_API_BASE}${path}`);
|
|
5550
|
+
for (const [key, value] of Object.entries(params)) {
|
|
5551
|
+
if (value !== undefined && value !== null && value !== "")
|
|
5552
|
+
url.searchParams.set(key, String(value));
|
|
5553
|
+
}
|
|
5554
|
+
const response = await fetch(url, { headers: { Authorization: `Bearer ${token}`, Accept: "application/json" } });
|
|
5555
|
+
if (!response.ok) {
|
|
5556
|
+
const body = await response.text().catch(() => "");
|
|
5557
|
+
throw new Error(`Google Drive request failed (${response.status}): ${extractGoogleError(body) || response.statusText}`);
|
|
5558
|
+
}
|
|
5559
|
+
return response;
|
|
5560
|
+
}
|
|
5561
|
+
async function getValidAccessToken2(profile) {
|
|
5562
|
+
if (process.env.GOOGLE_ACCESS_TOKEN)
|
|
5563
|
+
return process.env.GOOGLE_ACCESS_TOKEN;
|
|
5564
|
+
const tokens = loadTokens2(profile);
|
|
5565
|
+
if (!tokens?.accessToken && !tokens?.refreshToken) {
|
|
5566
|
+
throw new Error(`Google Drive profile "${profile}" is not authenticated. Run: connectors auth googledrive`);
|
|
5567
|
+
}
|
|
5568
|
+
if (tokens.accessToken && (!tokens.expiresAt || Date.now() < tokens.expiresAt - REFRESH_BUFFER_MS2))
|
|
5569
|
+
return tokens.accessToken;
|
|
5570
|
+
if (!tokens.refreshToken)
|
|
5571
|
+
return tokens.accessToken ?? "";
|
|
5572
|
+
return (await refreshAccessToken2(profile, tokens)).accessToken ?? "";
|
|
5573
|
+
}
|
|
5574
|
+
async function refreshAccessToken2(profile, currentTokens) {
|
|
5575
|
+
const credentials = loadCredentials2(profile);
|
|
5576
|
+
if (!credentials.clientId || !credentials.clientSecret)
|
|
5577
|
+
throw new Error("Google Drive OAuth credentials are not configured. Run: connectors auth googledrive");
|
|
5578
|
+
if (!currentTokens.refreshToken)
|
|
5579
|
+
throw new Error(`Google Drive profile "${profile}" has no refresh token. Run: connectors auth googledrive`);
|
|
5580
|
+
const response = await fetch(TOKEN_URL2, {
|
|
5581
|
+
method: "POST",
|
|
5582
|
+
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
5583
|
+
body: new URLSearchParams({
|
|
5584
|
+
client_id: credentials.clientId,
|
|
5585
|
+
client_secret: credentials.clientSecret,
|
|
5586
|
+
refresh_token: currentTokens.refreshToken,
|
|
5587
|
+
grant_type: "refresh_token"
|
|
5588
|
+
})
|
|
5589
|
+
});
|
|
5590
|
+
const data = await response.json().catch(() => ({}));
|
|
5591
|
+
if (!response.ok || !data.access_token)
|
|
5592
|
+
throw new Error(`Google Drive token refresh failed: ${data.error_description || data.error || response.statusText}`);
|
|
5593
|
+
const tokens = {
|
|
5594
|
+
accessToken: data.access_token,
|
|
5595
|
+
refreshToken: currentTokens.refreshToken,
|
|
5596
|
+
expiresAt: Date.now() + (data.expires_in ?? 3600) * 1000,
|
|
5597
|
+
tokenType: data.token_type ?? currentTokens.tokenType,
|
|
5598
|
+
scope: data.scope ?? currentTokens.scope
|
|
5599
|
+
};
|
|
5600
|
+
saveTokens2(profile, tokens);
|
|
5601
|
+
return tokens;
|
|
5602
|
+
}
|
|
5603
|
+
function listProfiles2() {
|
|
5604
|
+
const profiles = new Set;
|
|
5605
|
+
for (const baseDir of configDirs2()) {
|
|
5606
|
+
const profilesDir = join3(baseDir, "profiles");
|
|
5607
|
+
if (!existsSync3(profilesDir))
|
|
5608
|
+
continue;
|
|
5609
|
+
for (const entry of readdirSync2(profilesDir, { withFileTypes: true })) {
|
|
5610
|
+
if (entry.isDirectory())
|
|
5611
|
+
profiles.add(entry.name);
|
|
5612
|
+
if (entry.isFile() && entry.name.endsWith(".json"))
|
|
5613
|
+
profiles.add(basename2(entry.name, ".json"));
|
|
5614
|
+
}
|
|
5615
|
+
}
|
|
5616
|
+
return Array.from(profiles).sort((a, b) => a.localeCompare(b));
|
|
5617
|
+
}
|
|
5618
|
+
function loadCredentials2(profile) {
|
|
5619
|
+
const envClientId = process.env.GOOGLE_CLIENT_ID;
|
|
5620
|
+
const envClientSecret = process.env.GOOGLE_CLIENT_SECRET;
|
|
5621
|
+
if (envClientId && envClientSecret)
|
|
5622
|
+
return { clientId: envClientId, clientSecret: envClientSecret };
|
|
5623
|
+
for (const baseDir of configDirs2()) {
|
|
5624
|
+
const credentials = {
|
|
5625
|
+
...readJson2(join3(baseDir, "credentials.json")),
|
|
5626
|
+
...readJson2(join3(baseDir, "profiles", profile, "config.json"))
|
|
5627
|
+
};
|
|
5628
|
+
if (credentials.clientId || credentials.clientSecret)
|
|
5629
|
+
return credentials;
|
|
5630
|
+
}
|
|
5631
|
+
return {};
|
|
5632
|
+
}
|
|
5633
|
+
function loadTokens2(profile) {
|
|
5634
|
+
for (const baseDir of configDirs2()) {
|
|
5635
|
+
const fromProfile = readJson2(join3(baseDir, "profiles", profile, "tokens.json"));
|
|
5636
|
+
if (fromProfile)
|
|
5637
|
+
return fromProfile;
|
|
5638
|
+
const flat = readJson2(join3(baseDir, "profiles", `${profile}.json`));
|
|
5639
|
+
if (flat)
|
|
5640
|
+
return flat.tokens ?? (flat.accessToken || flat.refreshToken ? flat : null);
|
|
5641
|
+
}
|
|
5642
|
+
return null;
|
|
5643
|
+
}
|
|
5644
|
+
function saveTokens2(profile, tokens) {
|
|
5645
|
+
const baseDir = configDirs2().find((dir) => existsSync3(dir)) ?? configDirs2()[0];
|
|
5646
|
+
const profileDir = join3(baseDir, "profiles", profile);
|
|
5647
|
+
mkdirSync2(profileDir, { recursive: true });
|
|
5648
|
+
writeFileSync2(join3(profileDir, "tokens.json"), JSON.stringify(tokens, null, 2), { mode: 384 });
|
|
5649
|
+
}
|
|
5650
|
+
function configDirs2() {
|
|
5651
|
+
const explicit = process.env.HASNA_GOOGLE_DRIVE_CONNECTOR_DIR ?? process.env.GOOGLE_DRIVE_CONNECTOR_DIR;
|
|
5652
|
+
if (explicit)
|
|
5653
|
+
return [explicit];
|
|
5654
|
+
const baseDir = process.env.HASNA_CONNECTORS_DIR ?? join3(homedir2(), ".hasna", "connectors");
|
|
5655
|
+
return [join3(baseDir, "connect-googledrive"), join3(baseDir, "googledrive")];
|
|
5656
|
+
}
|
|
5657
|
+
function readJson2(path) {
|
|
5658
|
+
if (!existsSync3(path))
|
|
5659
|
+
return null;
|
|
5660
|
+
try {
|
|
5661
|
+
return JSON.parse(readFileSync2(path, "utf8"));
|
|
5662
|
+
} catch {
|
|
5663
|
+
return null;
|
|
5664
|
+
}
|
|
5665
|
+
}
|
|
5666
|
+
function defaultExportMimeType(googleMimeType) {
|
|
5667
|
+
if (googleMimeType.endsWith(".document"))
|
|
5668
|
+
return DEFAULT_EXPORT_FORMATS.document;
|
|
5669
|
+
if (googleMimeType.endsWith(".spreadsheet"))
|
|
5670
|
+
return DEFAULT_EXPORT_FORMATS.spreadsheet;
|
|
5671
|
+
if (googleMimeType.endsWith(".presentation"))
|
|
5672
|
+
return DEFAULT_EXPORT_FORMATS.presentation;
|
|
5673
|
+
if (googleMimeType.endsWith(".drawing"))
|
|
5674
|
+
return DEFAULT_EXPORT_FORMATS.drawing;
|
|
5675
|
+
throw new Error(`Cannot export Google Workspace file type: ${googleMimeType}`);
|
|
5676
|
+
}
|
|
5677
|
+
function extensionForMimeType(mimeType) {
|
|
5678
|
+
return EXPORT_EXTENSIONS[mimeType] ?? "";
|
|
5679
|
+
}
|
|
5680
|
+
function extractGoogleError(body) {
|
|
5681
|
+
if (!body)
|
|
5682
|
+
return "";
|
|
5683
|
+
try {
|
|
5684
|
+
const parsed = JSON.parse(body);
|
|
5685
|
+
return parsed.error?.message ?? body;
|
|
5686
|
+
} catch {
|
|
5687
|
+
return body;
|
|
5688
|
+
}
|
|
5689
|
+
}
|
|
4969
5690
|
// package.json
|
|
4970
5691
|
var package_default = {
|
|
4971
5692
|
name: "@hasna/connectors",
|
|
4972
|
-
version: "1.3.
|
|
5693
|
+
version: "1.3.26",
|
|
4973
5694
|
description: "Open source connector library - Install API connectors with a single command",
|
|
4974
5695
|
type: "module",
|
|
4975
5696
|
bin: {
|
|
@@ -5059,11 +5780,11 @@ var package_default = {
|
|
|
5059
5780
|
import {
|
|
5060
5781
|
existsSync as existsSync6,
|
|
5061
5782
|
mkdirSync as mkdirSync5,
|
|
5062
|
-
readFileSync as
|
|
5783
|
+
readFileSync as readFileSync4,
|
|
5063
5784
|
readdirSync as readdirSync5,
|
|
5064
5785
|
rmSync,
|
|
5065
5786
|
statSync as statSync2,
|
|
5066
|
-
writeFileSync as
|
|
5787
|
+
writeFileSync as writeFileSync4
|
|
5067
5788
|
} from "fs";
|
|
5068
5789
|
import { join as join7 } from "path";
|
|
5069
5790
|
|
|
@@ -5071,21 +5792,21 @@ import { join as join7 } from "path";
|
|
|
5071
5792
|
import { createRequire } from "module";
|
|
5072
5793
|
import { Database } from "bun:sqlite";
|
|
5073
5794
|
import {
|
|
5074
|
-
existsSync as
|
|
5075
|
-
mkdirSync,
|
|
5076
|
-
readdirSync,
|
|
5795
|
+
existsSync as existsSync4,
|
|
5796
|
+
mkdirSync as mkdirSync3,
|
|
5797
|
+
readdirSync as readdirSync3,
|
|
5077
5798
|
copyFileSync
|
|
5078
5799
|
} from "fs";
|
|
5079
|
-
import { homedir } from "os";
|
|
5080
|
-
import { join as join2, relative } from "path";
|
|
5081
|
-
import { existsSync as existsSync22, mkdirSync as mkdirSync2, readFileSync, writeFileSync } from "fs";
|
|
5082
|
-
import { homedir as homedir2 } from "os";
|
|
5083
|
-
import { join as join22 } from "path";
|
|
5084
|
-
import { readdirSync as readdirSync2, existsSync as existsSync3 } from "fs";
|
|
5085
|
-
import { join as join3 } from "path";
|
|
5086
5800
|
import { homedir as homedir3 } from "os";
|
|
5801
|
+
import { join as join4, relative } from "path";
|
|
5802
|
+
import { existsSync as existsSync22, mkdirSync as mkdirSync22, readFileSync as readFileSync3, writeFileSync as writeFileSync3 } from "fs";
|
|
5803
|
+
import { homedir as homedir22 } from "os";
|
|
5804
|
+
import { join as join22 } from "path";
|
|
5805
|
+
import { readdirSync as readdirSync22, existsSync as existsSync32 } from "fs";
|
|
5806
|
+
import { join as join32 } from "path";
|
|
5807
|
+
import { homedir as homedir32 } from "os";
|
|
5087
5808
|
import { homedir as homedir4 } from "os";
|
|
5088
|
-
import { join as
|
|
5809
|
+
import { join as join42 } from "path";
|
|
5089
5810
|
import { join as join6, dirname as dirname2 } from "path";
|
|
5090
5811
|
import { homedir as homedir5, platform } from "os";
|
|
5091
5812
|
var __create = Object.create;
|
|
@@ -14251,17 +14972,17 @@ var init_zod = __esm(() => {
|
|
|
14251
14972
|
init_external();
|
|
14252
14973
|
});
|
|
14253
14974
|
function getDataDir(serviceName) {
|
|
14254
|
-
const dir =
|
|
14255
|
-
|
|
14975
|
+
const dir = join4(HASNA_DIR, serviceName);
|
|
14976
|
+
mkdirSync3(dir, { recursive: true });
|
|
14256
14977
|
return dir;
|
|
14257
14978
|
}
|
|
14258
14979
|
function getDbPath(serviceName) {
|
|
14259
14980
|
const dir = getDataDir(serviceName);
|
|
14260
|
-
return
|
|
14981
|
+
return join4(dir, `${serviceName}.db`);
|
|
14261
14982
|
}
|
|
14262
14983
|
var HASNA_DIR;
|
|
14263
14984
|
var init_dotfile = __esm(() => {
|
|
14264
|
-
HASNA_DIR =
|
|
14985
|
+
HASNA_DIR = join4(homedir3(), ".hasna");
|
|
14265
14986
|
});
|
|
14266
14987
|
var exports_config = {};
|
|
14267
14988
|
__export2(exports_config, {
|
|
@@ -14284,15 +15005,15 @@ function getCloudConfig() {
|
|
|
14284
15005
|
return CloudConfigSchema.parse({});
|
|
14285
15006
|
}
|
|
14286
15007
|
try {
|
|
14287
|
-
const raw =
|
|
15008
|
+
const raw = readFileSync3(CONFIG_PATH, "utf-8");
|
|
14288
15009
|
return CloudConfigSchema.parse(JSON.parse(raw));
|
|
14289
15010
|
} catch {
|
|
14290
15011
|
return CloudConfigSchema.parse({});
|
|
14291
15012
|
}
|
|
14292
15013
|
}
|
|
14293
15014
|
function saveCloudConfig(config) {
|
|
14294
|
-
|
|
14295
|
-
|
|
15015
|
+
mkdirSync22(CONFIG_DIR, { recursive: true });
|
|
15016
|
+
writeFileSync3(CONFIG_PATH, JSON.stringify(config, null, 2) + `
|
|
14296
15017
|
`, "utf-8");
|
|
14297
15018
|
}
|
|
14298
15019
|
function getConnectionString(dbName) {
|
|
@@ -14340,7 +15061,7 @@ var init_config = __esm(() => {
|
|
|
14340
15061
|
schedule_minutes: exports_external2.number().default(0)
|
|
14341
15062
|
}).default({})
|
|
14342
15063
|
});
|
|
14343
|
-
CONFIG_DIR = join22(
|
|
15064
|
+
CONFIG_DIR = join22(homedir22(), ".hasna", "cloud");
|
|
14344
15065
|
CONFIG_PATH = join22(CONFIG_DIR, "config.json");
|
|
14345
15066
|
});
|
|
14346
15067
|
var exports_discover = {};
|
|
@@ -14356,11 +15077,11 @@ function isSyncExcludedTable(table) {
|
|
|
14356
15077
|
return SYNC_EXCLUDED_TABLE_PATTERNS.some((p) => p.test(table));
|
|
14357
15078
|
}
|
|
14358
15079
|
function discoverServices() {
|
|
14359
|
-
const dataDir =
|
|
14360
|
-
if (!
|
|
15080
|
+
const dataDir = join32(homedir32(), ".hasna");
|
|
15081
|
+
if (!existsSync32(dataDir))
|
|
14361
15082
|
return [];
|
|
14362
15083
|
try {
|
|
14363
|
-
const entries =
|
|
15084
|
+
const entries = readdirSync22(dataDir, { withFileTypes: true });
|
|
14364
15085
|
return entries.filter((e) => {
|
|
14365
15086
|
if (!e.isDirectory())
|
|
14366
15087
|
return false;
|
|
@@ -14378,24 +15099,24 @@ function discoverSyncableServices() {
|
|
|
14378
15099
|
return local.filter((s) => pgSet.has(s));
|
|
14379
15100
|
}
|
|
14380
15101
|
function getServiceDbPath(service) {
|
|
14381
|
-
const dataDir =
|
|
14382
|
-
if (!
|
|
15102
|
+
const dataDir = join32(homedir32(), ".hasna", service);
|
|
15103
|
+
if (!existsSync32(dataDir))
|
|
14383
15104
|
return null;
|
|
14384
15105
|
const candidates = [
|
|
14385
|
-
|
|
14386
|
-
|
|
14387
|
-
|
|
15106
|
+
join32(dataDir, `${service}.db`),
|
|
15107
|
+
join32(dataDir, "data.db"),
|
|
15108
|
+
join32(dataDir, "database.db")
|
|
14388
15109
|
];
|
|
14389
15110
|
try {
|
|
14390
|
-
const files =
|
|
15111
|
+
const files = readdirSync22(dataDir);
|
|
14391
15112
|
for (const f of files) {
|
|
14392
15113
|
if (f.endsWith(".db") && !f.endsWith("-wal") && !f.endsWith("-shm")) {
|
|
14393
|
-
candidates.push(
|
|
15114
|
+
candidates.push(join32(dataDir, f));
|
|
14394
15115
|
}
|
|
14395
15116
|
}
|
|
14396
15117
|
} catch {}
|
|
14397
15118
|
for (const p of candidates) {
|
|
14398
|
-
if (
|
|
15119
|
+
if (existsSync32(p))
|
|
14399
15120
|
return p;
|
|
14400
15121
|
}
|
|
14401
15122
|
return null;
|
|
@@ -14575,7 +15296,7 @@ class SyncProgressTracker {
|
|
|
14575
15296
|
init_adapter();
|
|
14576
15297
|
init_config();
|
|
14577
15298
|
init_discover();
|
|
14578
|
-
var AUTO_SYNC_CONFIG_PATH =
|
|
15299
|
+
var AUTO_SYNC_CONFIG_PATH = join42(homedir4(), ".hasna", "cloud", "config.json");
|
|
14579
15300
|
init_config();
|
|
14580
15301
|
init_adapter();
|
|
14581
15302
|
init_dotfile();
|
|
@@ -14595,13 +15316,13 @@ init_adapter();
|
|
|
14595
15316
|
// src/db/database.ts
|
|
14596
15317
|
import { dirname as dirname3, join as join5 } from "path";
|
|
14597
15318
|
import { homedir as homedir6 } from "os";
|
|
14598
|
-
import { mkdirSync as
|
|
15319
|
+
import { mkdirSync as mkdirSync4, existsSync as existsSync5, readdirSync as readdirSync4, copyFileSync as copyFileSync2, statSync } from "fs";
|
|
14599
15320
|
function mergeDirectoryContents(sourceDir, targetDir) {
|
|
14600
|
-
if (!
|
|
15321
|
+
if (!existsSync5(sourceDir)) {
|
|
14601
15322
|
return;
|
|
14602
15323
|
}
|
|
14603
|
-
|
|
14604
|
-
for (const entry of
|
|
15324
|
+
mkdirSync4(targetDir, { recursive: true });
|
|
15325
|
+
for (const entry of readdirSync4(sourceDir)) {
|
|
14605
15326
|
const sourcePath = join5(sourceDir, entry);
|
|
14606
15327
|
const targetPath = join5(targetDir, entry);
|
|
14607
15328
|
try {
|
|
@@ -14610,7 +15331,7 @@ function mergeDirectoryContents(sourceDir, targetDir) {
|
|
|
14610
15331
|
mergeDirectoryContents(sourcePath, targetPath);
|
|
14611
15332
|
continue;
|
|
14612
15333
|
}
|
|
14613
|
-
if (!
|
|
15334
|
+
if (!existsSync5(targetPath)) {
|
|
14614
15335
|
copyFileSync2(sourcePath, targetPath);
|
|
14615
15336
|
}
|
|
14616
15337
|
} catch {}
|
|
@@ -14620,7 +15341,7 @@ function getConnectorsHome() {
|
|
|
14620
15341
|
const home = process.env["HOME"] || process.env["USERPROFILE"] || homedir6();
|
|
14621
15342
|
const newDir = join5(home, ".hasna", "connectors");
|
|
14622
15343
|
const legacyDirs = [join5(home, ".connectors"), join5(home, ".connect")];
|
|
14623
|
-
|
|
15344
|
+
mkdirSync4(newDir, { recursive: true });
|
|
14624
15345
|
for (const legacyDir of legacyDirs) {
|
|
14625
15346
|
try {
|
|
14626
15347
|
mergeDirectoryContents(legacyDir, newDir);
|
|
@@ -14803,7 +15524,7 @@ function getCurrentProfile() {
|
|
|
14803
15524
|
return "default";
|
|
14804
15525
|
}
|
|
14805
15526
|
try {
|
|
14806
|
-
return
|
|
15527
|
+
return readFileSync4(currentProfileFile, "utf-8").trim() || "default";
|
|
14807
15528
|
} catch {
|
|
14808
15529
|
return "default";
|
|
14809
15530
|
}
|
|
@@ -14811,7 +15532,7 @@ function getCurrentProfile() {
|
|
|
14811
15532
|
function setCurrentProfile(profile) {
|
|
14812
15533
|
const configDir = getConfigDir2();
|
|
14813
15534
|
mkdirSync5(configDir, { recursive: true });
|
|
14814
|
-
|
|
15535
|
+
writeFileSync4(join7(configDir, "current_profile"), profile);
|
|
14815
15536
|
}
|
|
14816
15537
|
function getFlatProfilePath(profile) {
|
|
14817
15538
|
return join7(getProfilesDir(), `${profile}.json`);
|
|
@@ -14821,7 +15542,7 @@ function getDirectoryProfilePath(profile) {
|
|
|
14821
15542
|
}
|
|
14822
15543
|
function loadJsonFile(path) {
|
|
14823
15544
|
try {
|
|
14824
|
-
return JSON.parse(
|
|
15545
|
+
return JSON.parse(readFileSync4(path, "utf-8"));
|
|
14825
15546
|
} catch {
|
|
14826
15547
|
return {};
|
|
14827
15548
|
}
|
|
@@ -14847,7 +15568,7 @@ function loadProfile(profile = getCurrentProfile()) {
|
|
|
14847
15568
|
function writeProfile(profile, config) {
|
|
14848
15569
|
const profilesDir = getProfilesDir();
|
|
14849
15570
|
mkdirSync5(profilesDir, { recursive: true });
|
|
14850
|
-
|
|
15571
|
+
writeFileSync4(getFlatProfilePath(profile), JSON.stringify(config, null, 2) + `
|
|
14851
15572
|
`);
|
|
14852
15573
|
}
|
|
14853
15574
|
function profileExists(profile) {
|
|
@@ -14856,7 +15577,7 @@ function profileExists(profile) {
|
|
|
14856
15577
|
}
|
|
14857
15578
|
return existsSync6(getFlatProfilePath(profile)) || existsSync6(join7(getProfilesDir(), profile));
|
|
14858
15579
|
}
|
|
14859
|
-
function
|
|
15580
|
+
function listProfiles3() {
|
|
14860
15581
|
const profilesDir = getProfilesDir();
|
|
14861
15582
|
const seen = new Set(["default"]);
|
|
14862
15583
|
if (!existsSync6(profilesDir)) {
|
|
@@ -15185,7 +15906,7 @@ async function sendMessage(context, input) {
|
|
|
15185
15906
|
direction: "outbound"
|
|
15186
15907
|
});
|
|
15187
15908
|
}
|
|
15188
|
-
async function
|
|
15909
|
+
async function replyToMessage2(context, input) {
|
|
15189
15910
|
const payload = await bridgeRequest(context, "/messages/reply", {
|
|
15190
15911
|
method: "POST",
|
|
15191
15912
|
body: {
|
|
@@ -15299,7 +16020,7 @@ async function runProfileCommand2(args, context) {
|
|
|
15299
16020
|
switch (subcommand) {
|
|
15300
16021
|
case "list": {
|
|
15301
16022
|
const current = getCurrentProfile();
|
|
15302
|
-
const profiles =
|
|
16023
|
+
const profiles = listProfiles3();
|
|
15303
16024
|
return successOutput({ current, profiles }, context.format, () => profiles.map((profile) => `${profile}${profile === current ? " (active)" : ""}`).join(`
|
|
15304
16025
|
`));
|
|
15305
16026
|
}
|
|
@@ -15473,7 +16194,7 @@ async function runMessageCommand(args, context) {
|
|
|
15473
16194
|
if (!conversationId || !text) {
|
|
15474
16195
|
return failure2("Usage: connect-imessage message reply --conversation <id> --text <text>");
|
|
15475
16196
|
}
|
|
15476
|
-
return successOutput(await
|
|
16197
|
+
return successOutput(await replyToMessage2(resolved, {
|
|
15477
16198
|
conversationId,
|
|
15478
16199
|
text,
|
|
15479
16200
|
replyToMessageId: asString2(options.replyTo),
|
|
@@ -15631,7 +16352,7 @@ var imessageConnector = defineConnector({
|
|
|
15631
16352
|
summary: "Reply to an existing conversation through the bridge",
|
|
15632
16353
|
inputSchema: messageReplyInputSchema,
|
|
15633
16354
|
async execute({ context }, input) {
|
|
15634
|
-
return
|
|
16355
|
+
return replyToMessage2(context, input);
|
|
15635
16356
|
}
|
|
15636
16357
|
}
|
|
15637
16358
|
},
|
|
@@ -15695,15 +16416,15 @@ var imessageConnector = defineConnector({
|
|
|
15695
16416
|
|
|
15696
16417
|
// src/core/connectors/stripe.ts
|
|
15697
16418
|
import { existsSync as existsSync7 } from "fs";
|
|
15698
|
-
import { dirname as dirname4, join as
|
|
16419
|
+
import { dirname as dirname4, join as join9 } from "path";
|
|
15699
16420
|
import { fileURLToPath as fileURLToPath2, pathToFileURL as pathToFileURL2 } from "url";
|
|
15700
16421
|
var __dirname3 = dirname4(fileURLToPath2(import.meta.url));
|
|
15701
16422
|
function resolveStripeConnectorDir() {
|
|
15702
16423
|
const candidates = [
|
|
15703
|
-
|
|
15704
|
-
|
|
15705
|
-
|
|
15706
|
-
|
|
16424
|
+
join9(__dirname3, "..", "..", "..", "connectors", "connect-stripe"),
|
|
16425
|
+
join9(__dirname3, "..", "..", "connectors", "connect-stripe"),
|
|
16426
|
+
join9(__dirname3, "..", "connectors", "connect-stripe"),
|
|
16427
|
+
join9(process.cwd(), "connectors", "connect-stripe")
|
|
15707
16428
|
];
|
|
15708
16429
|
for (const candidate of candidates) {
|
|
15709
16430
|
if (existsSync7(candidate)) {
|
|
@@ -15945,10 +16666,10 @@ function buildCommandHelp2(spec) {
|
|
|
15945
16666
|
var ROOT_HELP3 = buildRootHelp2(COMMAND_SPECS2);
|
|
15946
16667
|
var COMMAND_HELP3 = Object.fromEntries(COMMAND_SPECS2.map((spec) => [spec.name, buildCommandHelp2(spec)]));
|
|
15947
16668
|
async function loadStripeApiModule() {
|
|
15948
|
-
return await import(pathToFileURL2(
|
|
16669
|
+
return await import(pathToFileURL2(join9(CONNECTOR_DIR2, "src", "api", "index.ts")).href);
|
|
15949
16670
|
}
|
|
15950
16671
|
async function loadStripeConfigModule() {
|
|
15951
|
-
return await import(pathToFileURL2(
|
|
16672
|
+
return await import(pathToFileURL2(join9(CONNECTOR_DIR2, "src", "utils", "config.ts")).href);
|
|
15952
16673
|
}
|
|
15953
16674
|
function extractGlobalArgs3(args) {
|
|
15954
16675
|
const remaining = [];
|
|
@@ -16560,7 +17281,9 @@ var stripeConnector = defineConnector({
|
|
|
16560
17281
|
|
|
16561
17282
|
// src/core/builtins.ts
|
|
16562
17283
|
var INTERNAL_CONNECTOR_DEFINITIONS = [
|
|
17284
|
+
gmailConnector,
|
|
16563
17285
|
githubConnector,
|
|
17286
|
+
googleDriveConnector,
|
|
16564
17287
|
imessageConnector,
|
|
16565
17288
|
stripeConnector
|
|
16566
17289
|
];
|
|
@@ -22843,17 +23566,17 @@ function loadConnectorVersions() {
|
|
|
22843
23566
|
versionsLoaded = true;
|
|
22844
23567
|
const thisDir = dirname5(fileURLToPath3(import.meta.url));
|
|
22845
23568
|
const candidates = [
|
|
22846
|
-
|
|
22847
|
-
|
|
23569
|
+
join10(thisDir, "..", "connectors"),
|
|
23570
|
+
join10(thisDir, "..", "..", "connectors")
|
|
22848
23571
|
];
|
|
22849
23572
|
const connectorsDir = candidates.find((d) => existsSync8(d));
|
|
22850
23573
|
if (!connectorsDir)
|
|
22851
23574
|
return;
|
|
22852
23575
|
for (const connector of CONNECTORS) {
|
|
22853
23576
|
try {
|
|
22854
|
-
const pkgPath =
|
|
23577
|
+
const pkgPath = join10(connectorsDir, `connect-${connector.name}`, "package.json");
|
|
22855
23578
|
if (existsSync8(pkgPath)) {
|
|
22856
|
-
const pkg = JSON.parse(
|
|
23579
|
+
const pkg = JSON.parse(readFileSync5(pkgPath, "utf-8"));
|
|
22857
23580
|
connector.version = pkg.version || "0.0.0";
|
|
22858
23581
|
continue;
|
|
22859
23582
|
}
|
|
@@ -22865,15 +23588,15 @@ function loadConnectorVersions() {
|
|
|
22865
23588
|
}
|
|
22866
23589
|
}
|
|
22867
23590
|
// src/lib/installer.ts
|
|
22868
|
-
import { existsSync as existsSync9, mkdirSync as mkdirSync6, readFileSync as
|
|
22869
|
-
import { join as
|
|
23591
|
+
import { existsSync as existsSync9, mkdirSync as mkdirSync6, readFileSync as readFileSync6, writeFileSync as writeFileSync5, readdirSync as readdirSync6, statSync as statSync3, rmSync as rmSync2 } from "fs";
|
|
23592
|
+
import { join as join11, dirname as dirname6 } from "path";
|
|
22870
23593
|
import { fileURLToPath as fileURLToPath4 } from "url";
|
|
22871
23594
|
var __dirname4 = dirname6(fileURLToPath4(import.meta.url));
|
|
22872
23595
|
function resolveConnectorsDir() {
|
|
22873
|
-
const fromBin =
|
|
23596
|
+
const fromBin = join11(__dirname4, "..", "connectors");
|
|
22874
23597
|
if (existsSync9(fromBin))
|
|
22875
23598
|
return fromBin;
|
|
22876
|
-
const fromSrc =
|
|
23599
|
+
const fromSrc = join11(__dirname4, "..", "..", "connectors");
|
|
22877
23600
|
if (existsSync9(fromSrc))
|
|
22878
23601
|
return fromSrc;
|
|
22879
23602
|
return fromBin;
|
|
@@ -22886,13 +23609,13 @@ function normalizeConnectorName(name) {
|
|
|
22886
23609
|
return name.startsWith("connect-") ? name.slice("connect-".length) : name;
|
|
22887
23610
|
}
|
|
22888
23611
|
function getProjectConnectorsDir(targetDir) {
|
|
22889
|
-
return
|
|
23612
|
+
return join11(targetDir, PROJECT_CONNECTORS_DIRNAME);
|
|
22890
23613
|
}
|
|
22891
23614
|
function getEnablementManifestPath(targetDir) {
|
|
22892
|
-
return
|
|
23615
|
+
return join11(getProjectConnectorsDir(targetDir), ENABLEMENT_MANIFEST_FILENAME);
|
|
22893
23616
|
}
|
|
22894
23617
|
function getLegacyInstallPath(targetDir, name) {
|
|
22895
|
-
return
|
|
23618
|
+
return join11(getProjectConnectorsDir(targetDir), `connect-${normalizeConnectorName(name)}`);
|
|
22896
23619
|
}
|
|
22897
23620
|
function loadEnablementManifest(targetDir) {
|
|
22898
23621
|
const manifestPath = getEnablementManifestPath(targetDir);
|
|
@@ -22900,7 +23623,7 @@ function loadEnablementManifest(targetDir) {
|
|
|
22900
23623
|
return null;
|
|
22901
23624
|
}
|
|
22902
23625
|
try {
|
|
22903
|
-
const raw = JSON.parse(
|
|
23626
|
+
const raw = JSON.parse(readFileSync6(manifestPath, "utf-8"));
|
|
22904
23627
|
if (!Array.isArray(raw.connectors)) {
|
|
22905
23628
|
return null;
|
|
22906
23629
|
}
|
|
@@ -22920,7 +23643,7 @@ function getLegacyInstalledConnectors(targetDir) {
|
|
|
22920
23643
|
return [];
|
|
22921
23644
|
}
|
|
22922
23645
|
return readdirSync6(connectorsDir).filter((entry) => {
|
|
22923
|
-
const fullPath =
|
|
23646
|
+
const fullPath = join11(connectorsDir, entry);
|
|
22924
23647
|
return entry.startsWith("connect-") && statSync3(fullPath).isDirectory();
|
|
22925
23648
|
}).map((entry) => entry.replace("connect-", "")).sort();
|
|
22926
23649
|
}
|
|
@@ -22929,7 +23652,7 @@ function getEnabledConnectors(targetDir) {
|
|
|
22929
23652
|
return [...new Set([...manifestConnectors, ...getLegacyInstalledConnectors(targetDir)])].sort();
|
|
22930
23653
|
}
|
|
22931
23654
|
function updateConnectorsIndex(connectorsDir, connectors18) {
|
|
22932
|
-
const indexPath =
|
|
23655
|
+
const indexPath = join11(connectorsDir, ENABLEMENT_INDEX_FILENAME);
|
|
22933
23656
|
const connectorList = connectors18.map((connector) => ` "${connector}",`).join(`
|
|
22934
23657
|
`);
|
|
22935
23658
|
const content = `/**
|
|
@@ -22945,7 +23668,7 @@ ${connectorList}
|
|
|
22945
23668
|
|
|
22946
23669
|
export type EnabledConnectorName = typeof enabledConnectors[number];
|
|
22947
23670
|
`;
|
|
22948
|
-
|
|
23671
|
+
writeFileSync5(indexPath, content);
|
|
22949
23672
|
}
|
|
22950
23673
|
function writeEnablementManifest(targetDir, connectors18) {
|
|
22951
23674
|
const connectorsDir = getProjectConnectorsDir(targetDir);
|
|
@@ -22956,13 +23679,13 @@ function writeEnablementManifest(targetDir, connectors18) {
|
|
|
22956
23679
|
updatedAt: new Date().toISOString(),
|
|
22957
23680
|
connectors: [...new Set(connectors18.map((value) => normalizeConnectorName(value)))].sort()
|
|
22958
23681
|
};
|
|
22959
|
-
|
|
23682
|
+
writeFileSync5(getEnablementManifestPath(targetDir), JSON.stringify(manifest, null, 2) + `
|
|
22960
23683
|
`);
|
|
22961
23684
|
updateConnectorsIndex(connectorsDir, manifest.connectors);
|
|
22962
23685
|
}
|
|
22963
23686
|
function getConnectorPath(name) {
|
|
22964
23687
|
const connectorName = name.startsWith("connect-") ? name : `connect-${name}`;
|
|
22965
|
-
return
|
|
23688
|
+
return join11(CONNECTORS_DIR, connectorName);
|
|
22966
23689
|
}
|
|
22967
23690
|
function connectorExists(name) {
|
|
22968
23691
|
const normalizedName = normalizeConnectorName(name);
|
|
@@ -23034,9 +23757,9 @@ function parseConnectorDocs(raw) {
|
|
|
23034
23757
|
function getConnectorDocs(name) {
|
|
23035
23758
|
const normalizedName = normalizeConnectorName(name);
|
|
23036
23759
|
const connectorPath = getConnectorPath(normalizedName);
|
|
23037
|
-
const claudeMdPath =
|
|
23760
|
+
const claudeMdPath = join11(connectorPath, "CLAUDE.md");
|
|
23038
23761
|
if (existsSync9(claudeMdPath)) {
|
|
23039
|
-
return parseConnectorDocs(
|
|
23762
|
+
return parseConnectorDocs(readFileSync6(claudeMdPath, "utf-8"));
|
|
23040
23763
|
}
|
|
23041
23764
|
const internalDocs = getInternalConnectorDefinition(normalizedName)?.docsMarkdown;
|
|
23042
23765
|
if (internalDocs) {
|
|
@@ -23086,17 +23809,153 @@ function removeConnector(name, targetDir = process.cwd()) {
|
|
|
23086
23809
|
return true;
|
|
23087
23810
|
}
|
|
23088
23811
|
// src/lib/runner.ts
|
|
23089
|
-
import { existsSync as
|
|
23090
|
-
import { join as
|
|
23812
|
+
import { existsSync as existsSync11, readdirSync as readdirSync8 } from "fs";
|
|
23813
|
+
import { join as join13, dirname as dirname7 } from "path";
|
|
23091
23814
|
import { fileURLToPath as fileURLToPath5 } from "url";
|
|
23092
23815
|
import { spawn } from "child_process";
|
|
23816
|
+
|
|
23817
|
+
// src/server/auth.ts
|
|
23818
|
+
import { existsSync as existsSync10, readFileSync as readFileSync7, writeFileSync as writeFileSync6, mkdirSync as mkdirSync7, readdirSync as readdirSync7, rmSync as rmSync3, statSync as statSync4 } from "fs";
|
|
23819
|
+
import { join as join12 } from "path";
|
|
23820
|
+
var oauthStateStore = new Map;
|
|
23821
|
+
var GOOGLE_SCOPES = {
|
|
23822
|
+
gmail: [
|
|
23823
|
+
"https://www.googleapis.com/auth/gmail.readonly",
|
|
23824
|
+
"https://www.googleapis.com/auth/gmail.send",
|
|
23825
|
+
"https://www.googleapis.com/auth/gmail.compose",
|
|
23826
|
+
"https://www.googleapis.com/auth/gmail.modify",
|
|
23827
|
+
"https://www.googleapis.com/auth/gmail.labels",
|
|
23828
|
+
"https://mail.google.com/"
|
|
23829
|
+
].join(" "),
|
|
23830
|
+
googlecalendar: [
|
|
23831
|
+
"https://www.googleapis.com/auth/calendar",
|
|
23832
|
+
"https://www.googleapis.com/auth/calendar.events"
|
|
23833
|
+
].join(" "),
|
|
23834
|
+
googledrive: [
|
|
23835
|
+
"https://www.googleapis.com/auth/drive",
|
|
23836
|
+
"https://www.googleapis.com/auth/drive.file"
|
|
23837
|
+
].join(" "),
|
|
23838
|
+
googledocs: [
|
|
23839
|
+
"https://www.googleapis.com/auth/documents",
|
|
23840
|
+
"https://www.googleapis.com/auth/drive.file"
|
|
23841
|
+
].join(" "),
|
|
23842
|
+
googlesheets: [
|
|
23843
|
+
"https://www.googleapis.com/auth/spreadsheets",
|
|
23844
|
+
"https://www.googleapis.com/auth/drive.file"
|
|
23845
|
+
].join(" "),
|
|
23846
|
+
googletasks: [
|
|
23847
|
+
"https://www.googleapis.com/auth/tasks"
|
|
23848
|
+
].join(" "),
|
|
23849
|
+
googlecontacts: [
|
|
23850
|
+
"https://www.googleapis.com/auth/contacts",
|
|
23851
|
+
"https://www.googleapis.com/auth/contacts.readonly"
|
|
23852
|
+
].join(" "),
|
|
23853
|
+
google: [
|
|
23854
|
+
"openid",
|
|
23855
|
+
"https://www.googleapis.com/auth/userinfo.email",
|
|
23856
|
+
"https://www.googleapis.com/auth/userinfo.profile"
|
|
23857
|
+
].join(" ")
|
|
23858
|
+
};
|
|
23859
|
+
function getAuthType(name) {
|
|
23860
|
+
const docs = getConnectorDocs(name);
|
|
23861
|
+
if (!docs?.auth)
|
|
23862
|
+
return "apikey";
|
|
23863
|
+
const authLower = docs.auth.toLowerCase();
|
|
23864
|
+
if (authLower.includes("oauth"))
|
|
23865
|
+
return "oauth";
|
|
23866
|
+
if (authLower.includes("bearer token"))
|
|
23867
|
+
return "bearer";
|
|
23868
|
+
return "apikey";
|
|
23869
|
+
}
|
|
23870
|
+
function getConnectorConfigDir(name) {
|
|
23871
|
+
const connectorName = name.startsWith("connect-") ? name : `connect-${name}`;
|
|
23872
|
+
return join12(getConnectorsHome(), connectorName);
|
|
23873
|
+
}
|
|
23874
|
+
function getCurrentProfile2(name) {
|
|
23875
|
+
const configDir = getConnectorConfigDir(name);
|
|
23876
|
+
const currentProfileFile = join12(configDir, "current_profile");
|
|
23877
|
+
if (existsSync10(currentProfileFile)) {
|
|
23878
|
+
try {
|
|
23879
|
+
return readFileSync7(currentProfileFile, "utf-8").trim() || "default";
|
|
23880
|
+
} catch {
|
|
23881
|
+
return "default";
|
|
23882
|
+
}
|
|
23883
|
+
}
|
|
23884
|
+
return "default";
|
|
23885
|
+
}
|
|
23886
|
+
function loadProfileConfig(name) {
|
|
23887
|
+
const configDir = getConnectorConfigDir(name);
|
|
23888
|
+
const profile = getCurrentProfile2(name);
|
|
23889
|
+
let flatConfig = {};
|
|
23890
|
+
let dirConfig = {};
|
|
23891
|
+
const profileFile = join12(configDir, "profiles", `${profile}.json`);
|
|
23892
|
+
if (existsSync10(profileFile)) {
|
|
23893
|
+
try {
|
|
23894
|
+
flatConfig = JSON.parse(readFileSync7(profileFile, "utf-8"));
|
|
23895
|
+
} catch {}
|
|
23896
|
+
}
|
|
23897
|
+
const profileDirConfig = join12(configDir, "profiles", profile, "config.json");
|
|
23898
|
+
if (existsSync10(profileDirConfig)) {
|
|
23899
|
+
try {
|
|
23900
|
+
dirConfig = JSON.parse(readFileSync7(profileDirConfig, "utf-8"));
|
|
23901
|
+
} catch {}
|
|
23902
|
+
}
|
|
23903
|
+
if (Object.keys(flatConfig).length === 0 && Object.keys(dirConfig).length === 0) {
|
|
23904
|
+
return {};
|
|
23905
|
+
}
|
|
23906
|
+
return { ...flatConfig, ...dirConfig };
|
|
23907
|
+
}
|
|
23908
|
+
function loadTokens3(name) {
|
|
23909
|
+
const configDir = getConnectorConfigDir(name);
|
|
23910
|
+
const profile = getCurrentProfile2(name);
|
|
23911
|
+
const tokensFile = join12(configDir, "profiles", profile, "tokens.json");
|
|
23912
|
+
if (existsSync10(tokensFile)) {
|
|
23913
|
+
try {
|
|
23914
|
+
return JSON.parse(readFileSync7(tokensFile, "utf-8"));
|
|
23915
|
+
} catch {
|
|
23916
|
+
return null;
|
|
23917
|
+
}
|
|
23918
|
+
}
|
|
23919
|
+
const profileConfig = loadProfileConfig(name);
|
|
23920
|
+
if (profileConfig.refreshToken || profileConfig.accessToken) {
|
|
23921
|
+
return {
|
|
23922
|
+
accessToken: profileConfig.accessToken ?? "",
|
|
23923
|
+
refreshToken: profileConfig.refreshToken,
|
|
23924
|
+
expiresAt: profileConfig.expiresAt ?? 0,
|
|
23925
|
+
tokenType: profileConfig.tokenType,
|
|
23926
|
+
scope: profileConfig.scope
|
|
23927
|
+
};
|
|
23928
|
+
}
|
|
23929
|
+
return null;
|
|
23930
|
+
}
|
|
23931
|
+
function getEnvVars(name) {
|
|
23932
|
+
const docs = getConnectorDocs(name);
|
|
23933
|
+
return docs?.envVars || [];
|
|
23934
|
+
}
|
|
23935
|
+
function getOAuthConfig(name) {
|
|
23936
|
+
const configDir = getConnectorConfigDir(name);
|
|
23937
|
+
const credentialsFile = join12(configDir, "credentials.json");
|
|
23938
|
+
if (existsSync10(credentialsFile)) {
|
|
23939
|
+
try {
|
|
23940
|
+
const creds = JSON.parse(readFileSync7(credentialsFile, "utf-8"));
|
|
23941
|
+
return { clientId: creds.clientId, clientSecret: creds.clientSecret };
|
|
23942
|
+
} catch {}
|
|
23943
|
+
}
|
|
23944
|
+
const config = loadProfileConfig(name);
|
|
23945
|
+
return {
|
|
23946
|
+
clientId: config.clientId,
|
|
23947
|
+
clientSecret: config.clientSecret
|
|
23948
|
+
};
|
|
23949
|
+
}
|
|
23950
|
+
|
|
23951
|
+
// src/lib/runner.ts
|
|
23093
23952
|
var __dirname5 = dirname7(fileURLToPath5(import.meta.url));
|
|
23094
23953
|
function resolveConnectorsDir2() {
|
|
23095
|
-
const fromBin =
|
|
23096
|
-
if (
|
|
23954
|
+
const fromBin = join13(__dirname5, "..", "connectors");
|
|
23955
|
+
if (existsSync11(fromBin))
|
|
23097
23956
|
return fromBin;
|
|
23098
|
-
const fromSrc =
|
|
23099
|
-
if (
|
|
23957
|
+
const fromSrc = join13(__dirname5, "..", "..", "connectors");
|
|
23958
|
+
if (existsSync11(fromSrc))
|
|
23100
23959
|
return fromSrc;
|
|
23101
23960
|
return fromBin;
|
|
23102
23961
|
}
|
|
@@ -23147,13 +24006,32 @@ function buildEnvWithCredentials(connectorName, baseEnv) {
|
|
|
23147
24006
|
}
|
|
23148
24007
|
}
|
|
23149
24008
|
}
|
|
24009
|
+
if (getAuthType(connectorName) === "oauth") {
|
|
24010
|
+
const oauthConfig = getOAuthConfig(connectorName);
|
|
24011
|
+
const tokens = loadTokens3(connectorName);
|
|
24012
|
+
for (const { variable } of getEnvVars(connectorName)) {
|
|
24013
|
+
if (env[variable])
|
|
24014
|
+
continue;
|
|
24015
|
+
if (variable.endsWith("_CLIENT_ID") && oauthConfig.clientId) {
|
|
24016
|
+
env[variable] = oauthConfig.clientId;
|
|
24017
|
+
} else if (variable.endsWith("_CLIENT_SECRET") && oauthConfig.clientSecret) {
|
|
24018
|
+
env[variable] = oauthConfig.clientSecret;
|
|
24019
|
+
} else if (variable.endsWith("_ACCESS_TOKEN") && tokens?.accessToken) {
|
|
24020
|
+
env[variable] = tokens.accessToken;
|
|
24021
|
+
} else if (variable.endsWith("_REFRESH_TOKEN") && tokens?.refreshToken) {
|
|
24022
|
+
env[variable] = tokens.refreshToken;
|
|
24023
|
+
} else if (variable.endsWith("_TOKEN_EXPIRES_AT") && tokens?.expiresAt) {
|
|
24024
|
+
env[variable] = String(tokens.expiresAt);
|
|
24025
|
+
}
|
|
24026
|
+
}
|
|
24027
|
+
}
|
|
23150
24028
|
return env;
|
|
23151
24029
|
}
|
|
23152
24030
|
function getConnectorCliPath(name) {
|
|
23153
24031
|
const safeName = name.replace(/[^a-z0-9-]/g, "");
|
|
23154
|
-
const connectorDir =
|
|
23155
|
-
const cliPath =
|
|
23156
|
-
if (
|
|
24032
|
+
const connectorDir = join13(CONNECTORS_DIR2, `connect-${safeName}`);
|
|
24033
|
+
const cliPath = join13(connectorDir, "src", "cli", "index.ts");
|
|
24034
|
+
if (existsSync11(cliPath))
|
|
23157
24035
|
return cliPath;
|
|
23158
24036
|
return null;
|
|
23159
24037
|
}
|
|
@@ -23191,7 +24069,7 @@ function parseCommanderHelpOperations(helpText) {
|
|
|
23191
24069
|
inCommands = false;
|
|
23192
24070
|
continue;
|
|
23193
24071
|
}
|
|
23194
|
-
const row = line.match(/^ {2}(\S.*?)(?: {2,}(.+))?$/);
|
|
24072
|
+
const row = line.match(/^ {2}(?! )(\S.*?)(?: {2,}(.+))?$/);
|
|
23195
24073
|
if (!row)
|
|
23196
24074
|
continue;
|
|
23197
24075
|
const usage = row[1].trim();
|
|
@@ -23228,6 +24106,112 @@ function runConnectorCommand(name, args, timeoutMs = 30000) {
|
|
|
23228
24106
|
}
|
|
23229
24107
|
return runLegacyConnectorCommand(name, args, timeoutMs);
|
|
23230
24108
|
}
|
|
24109
|
+
async function runConnectorOperation(args) {
|
|
24110
|
+
const internal = getInternalConnectorDefinition(args.connector);
|
|
24111
|
+
if (internal?.operations[args.operation]) {
|
|
24112
|
+
try {
|
|
24113
|
+
const operationData = await executeConnectorOperation(internal, {
|
|
24114
|
+
operation: args.operation,
|
|
24115
|
+
input: args.input,
|
|
24116
|
+
profile: args.profile
|
|
24117
|
+
});
|
|
24118
|
+
const commandResult = normalizeOperationReturn(operationData);
|
|
24119
|
+
return {
|
|
24120
|
+
connector: args.connector,
|
|
24121
|
+
operation: args.operation,
|
|
24122
|
+
profile: args.profile,
|
|
24123
|
+
...commandResult
|
|
24124
|
+
};
|
|
24125
|
+
} catch (error) {
|
|
24126
|
+
return {
|
|
24127
|
+
connector: args.connector,
|
|
24128
|
+
operation: args.operation,
|
|
24129
|
+
profile: args.profile,
|
|
24130
|
+
stdout: "",
|
|
24131
|
+
stderr: error.message,
|
|
24132
|
+
exitCode: 1,
|
|
24133
|
+
success: false
|
|
24134
|
+
};
|
|
24135
|
+
}
|
|
24136
|
+
}
|
|
24137
|
+
const commandArgs = buildConnectorOperationArgs(args);
|
|
24138
|
+
const result = await runConnectorCommand(args.connector, commandArgs, args.timeoutMs ?? 30000);
|
|
24139
|
+
const response = {
|
|
24140
|
+
...result,
|
|
24141
|
+
connector: args.connector,
|
|
24142
|
+
operation: args.operation,
|
|
24143
|
+
profile: args.profile
|
|
24144
|
+
};
|
|
24145
|
+
if (args.parseJson !== false && result.stdout) {
|
|
24146
|
+
try {
|
|
24147
|
+
response.data = JSON.parse(result.stdout);
|
|
24148
|
+
} catch {}
|
|
24149
|
+
}
|
|
24150
|
+
return response;
|
|
24151
|
+
}
|
|
24152
|
+
function normalizeOperationReturn(value) {
|
|
24153
|
+
if (isRunResult(value)) {
|
|
24154
|
+
const result = value;
|
|
24155
|
+
const response = {
|
|
24156
|
+
...result
|
|
24157
|
+
};
|
|
24158
|
+
if (result.stdout) {
|
|
24159
|
+
try {
|
|
24160
|
+
response.data = JSON.parse(result.stdout);
|
|
24161
|
+
} catch {}
|
|
24162
|
+
}
|
|
24163
|
+
return response;
|
|
24164
|
+
}
|
|
24165
|
+
return {
|
|
24166
|
+
data: value,
|
|
24167
|
+
stdout: JSON.stringify(value),
|
|
24168
|
+
stderr: "",
|
|
24169
|
+
exitCode: 0,
|
|
24170
|
+
success: true
|
|
24171
|
+
};
|
|
24172
|
+
}
|
|
24173
|
+
function isRunResult(value) {
|
|
24174
|
+
if (!value || typeof value !== "object")
|
|
24175
|
+
return false;
|
|
24176
|
+
const candidate = value;
|
|
24177
|
+
return typeof candidate.stdout === "string" && typeof candidate.stderr === "string" && typeof candidate.exitCode === "number" && typeof candidate.success === "boolean";
|
|
24178
|
+
}
|
|
24179
|
+
function buildConnectorOperationArgs(args) {
|
|
24180
|
+
const commandArgs = [];
|
|
24181
|
+
if (args.profile) {
|
|
24182
|
+
commandArgs.push("--profile", args.profile);
|
|
24183
|
+
}
|
|
24184
|
+
commandArgs.push(...args.operation.split(".").filter(Boolean));
|
|
24185
|
+
for (const positional of args.input?.args ?? []) {
|
|
24186
|
+
commandArgs.push(String(positional));
|
|
24187
|
+
}
|
|
24188
|
+
let hasFormat = false;
|
|
24189
|
+
for (const [key, value] of Object.entries(args.input ?? {})) {
|
|
24190
|
+
if (key === "args")
|
|
24191
|
+
continue;
|
|
24192
|
+
if (value === undefined || value === null)
|
|
24193
|
+
continue;
|
|
24194
|
+
const flag = `--${key.replace(/_/g, "-").replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`)}`;
|
|
24195
|
+
if (flag === "--format" || flag === "--json")
|
|
24196
|
+
hasFormat = true;
|
|
24197
|
+
if (typeof value === "boolean") {
|
|
24198
|
+
if (value)
|
|
24199
|
+
commandArgs.push(flag);
|
|
24200
|
+
continue;
|
|
24201
|
+
}
|
|
24202
|
+
if (Array.isArray(value)) {
|
|
24203
|
+
for (const item of value) {
|
|
24204
|
+
commandArgs.push(flag, String(item));
|
|
24205
|
+
}
|
|
24206
|
+
continue;
|
|
24207
|
+
}
|
|
24208
|
+
commandArgs.push(flag, String(value));
|
|
24209
|
+
}
|
|
24210
|
+
if (args.parseJson !== false && !hasFormat) {
|
|
24211
|
+
commandArgs.push("--format", "json");
|
|
24212
|
+
}
|
|
24213
|
+
return commandArgs;
|
|
24214
|
+
}
|
|
23231
24215
|
function runLegacyConnectorCommand(name, args, timeoutMs = 30000) {
|
|
23232
24216
|
const cliPath = getConnectorCliPath(name);
|
|
23233
24217
|
if (!cliPath) {
|
|
@@ -23319,7 +24303,7 @@ async function getConnectorCommandHelp(name, command) {
|
|
|
23319
24303
|
function getConnectorsWithCli() {
|
|
23320
24304
|
const connectors18 = new Set;
|
|
23321
24305
|
try {
|
|
23322
|
-
const dirs =
|
|
24306
|
+
const dirs = readdirSync8(CONNECTORS_DIR2);
|
|
23323
24307
|
for (const dir of dirs) {
|
|
23324
24308
|
if (!dir.startsWith("connect-"))
|
|
23325
24309
|
continue;
|
|
@@ -23338,6 +24322,7 @@ function getConnectorsWithCli() {
|
|
|
23338
24322
|
}
|
|
23339
24323
|
export {
|
|
23340
24324
|
searchConnectors,
|
|
24325
|
+
runConnectorOperation,
|
|
23341
24326
|
runConnectorCommand,
|
|
23342
24327
|
removeConnector,
|
|
23343
24328
|
loadConnectorVersions,
|
|
@@ -23358,6 +24343,7 @@ export {
|
|
|
23358
24343
|
executeConnectorOperation,
|
|
23359
24344
|
defineConnector,
|
|
23360
24345
|
connectorExists,
|
|
24346
|
+
buildConnectorOperationArgs,
|
|
23361
24347
|
ConnectorOperationNotFoundError,
|
|
23362
24348
|
ConnectorDefinitionError,
|
|
23363
24349
|
CONNECTORS,
|