@lovable.dev/mcp-js 0.22.2-rc.9 → 0.23.0

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.
Files changed (30) hide show
  1. package/README.internal.md +1 -1
  2. package/dist/cli/extract-manifest.cjs +2 -2
  3. package/dist/cli/extract-manifest.js +2 -2
  4. package/dist/{cors-Bc5u5vnN.js → cors-BXcpNLm9.js} +1 -1
  5. package/dist/{cors-04Zq82V8.cjs → cors-CDnoIzo6.cjs} +1 -1
  6. package/dist/{list-tools-DTmS4BoO.js → list-tools-ChLj1G6z.js} +1 -1
  7. package/dist/{list-tools-lOWLeATX.cjs → list-tools-DChR_9Q2.cjs} +1 -1
  8. package/dist/{mcp-BZuYUEpa.js → mcp-BiyuOOzg.js} +1 -1
  9. package/dist/{mcp-CA3R0TO5.cjs → mcp-C_SCcw5F.cjs} +1 -1
  10. package/dist/{package-BVV6QOX-.cjs → package-DlVwsYdc.cjs} +1 -1
  11. package/dist/{package-bxtOrIga.js → package-T7npsn7f.js} +1 -1
  12. package/dist/protocols/mcp/index.cjs +1 -1
  13. package/dist/protocols/mcp/index.js +1 -1
  14. package/dist/protocols/oauth-metadata.cjs +1 -1
  15. package/dist/protocols/oauth-metadata.js +1 -1
  16. package/dist/protocols/rest/index.cjs +2 -2
  17. package/dist/protocols/rest/index.js +2 -2
  18. package/dist/{rest-DtXQgceq.cjs → rest-DSfFaL-p.cjs} +2 -2
  19. package/dist/{rest-DRwpK8gJ.js → rest-DdHrbXrU.js} +2 -2
  20. package/dist/stacks/supabase/index.cjs +4 -4
  21. package/dist/stacks/supabase/index.js +4 -4
  22. package/dist/stacks/supabase/vite.cjs +8 -2
  23. package/dist/stacks/supabase/vite.js +8 -2
  24. package/dist/stacks/tanstack/index.cjs +4 -4
  25. package/dist/stacks/tanstack/index.js +4 -4
  26. package/dist/stacks/tanstack/vite.cjs +10 -0
  27. package/dist/stacks/tanstack/vite.js +10 -0
  28. package/dist/supabase-config-CakTU8YF.js +26 -0
  29. package/dist/supabase-config-Dz7dnUv0.cjs +31 -0
  30. package/package.json +2 -2
@@ -177,7 +177,7 @@ pnpm test # vitest run --project unit (fast, hermetic)
177
177
  pnpm test:watch # vitest --project unit
178
178
  pnpm test:integration:tanstack # build + install tanstack example + vitest --project integration
179
179
  pnpm test:integration:tanstack:oauth # build + install OAuth example + vitest --project integration-oauth
180
- pnpm build # tsup → dist/{cjs,esm}/{index,protocols/*,stacks/*}
180
+ pnpm build # tsdown → dist/{cjs,esm}/{index,protocols/*,stacks/*}
181
181
  pnpm pack:local # build + npm pack into /tmp/lovable.dev-mcp-js-<version>.tgz
182
182
  pnpm example:tanstack:install # install example/tanstack deps (called by test:integration:tanstack)
183
183
  pnpm example:tanstack:oauth:install # install example/tanstack-supabase-oauth deps
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
- const require_package = require("../package-BVV6QOX-.cjs");
3
- const require_list_tools = require("../list-tools-lOWLeATX.cjs");
2
+ const require_package = require("../package-DlVwsYdc.cjs");
3
+ const require_list_tools = require("../list-tools-DChR_9Q2.cjs");
4
4
  const require_fs_errors = require("../fs-errors-CWNzOV75.cjs");
5
5
  let node_fs = require("node:fs");
6
6
  let node_path = require("node:path");
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
- import { t as version } from "../package-bxtOrIga.js";
3
- import { t as buildMcpListing } from "../list-tools-DTmS4BoO.js";
2
+ import { t as version } from "../package-T7npsn7f.js";
3
+ import { t as buildMcpListing } from "../list-tools-ChLj1G6z.js";
4
4
  import { t as isFileMissing } from "../fs-errors-PA2t1TIp.js";
5
5
  import { lstatSync, mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
6
6
  import { dirname, resolve } from "node:path";
@@ -1,5 +1,5 @@
1
1
  import { c as DEFAULT_METRICS_ENDPOINT, i as log, l as resolveMetricsConfig, n as applyLogLevelFromEnv, o as parseSafeUrl, r as describeError, s as trimTrailingSlash, t as LOG_LEVEL_ENV_VAR } from "./logger-2OXtfiIW.js";
2
- import { t as version } from "./package-bxtOrIga.js";
2
+ import { t as version } from "./package-T7npsn7f.js";
3
3
  import "./metadata-path-CAkNcfyY.js";
4
4
  import { createLocalJWKSet, decodeProtectedHeader, jwtVerify } from "jose";
5
5
  //#region src/core/http.ts
@@ -1,5 +1,5 @@
1
1
  const require_logger = require("./logger-BqPOa_E1.cjs");
2
- const require_package = require("./package-BVV6QOX-.cjs");
2
+ const require_package = require("./package-DlVwsYdc.cjs");
3
3
  require("./metadata-path-zd7NSNoa.cjs");
4
4
  let jose = require("jose");
5
5
  //#region src/core/http.ts
@@ -1,4 +1,4 @@
1
- import { i as createRequestAuthorizer, m as methodNotAllowed, n as withCors, p as headResponse, r as assertRestResourceBinding, t as corsPreflightResponse, u as createNoopRecorder } from "./cors-Bc5u5vnN.js";
1
+ import { i as createRequestAuthorizer, m as methodNotAllowed, n as withCors, p as headResponse, r as assertRestResourceBinding, t as corsPreflightResponse, u as createNoopRecorder } from "./cors-BXcpNLm9.js";
2
2
  import { objectFromShape } from "@modelcontextprotocol/sdk/server/zod-compat.js";
3
3
  import { toJsonSchemaCompat } from "@modelcontextprotocol/sdk/server/zod-json-schema-compat.js";
4
4
  //#region src/protocols/rest/list-tools.ts
@@ -1,4 +1,4 @@
1
- const require_cors = require("./cors-04Zq82V8.cjs");
1
+ const require_cors = require("./cors-CDnoIzo6.cjs");
2
2
  let _modelcontextprotocol_sdk_server_zod_compat_js = require("@modelcontextprotocol/sdk/server/zod-compat.js");
3
3
  let _modelcontextprotocol_sdk_server_zod_json_schema_compat_js = require("@modelcontextprotocol/sdk/server/zod-json-schema-compat.js");
4
4
  //#region src/protocols/rest/list-tools.ts
@@ -1,6 +1,6 @@
1
1
  import { i as log, r as describeError } from "./logger-2OXtfiIW.js";
2
2
  import { t as ToolContext } from "./context-CIpPzN7P.js";
3
- import { d as nowMs, i as createRequestAuthorizer, n as withCors, t as corsPreflightResponse, u as createNoopRecorder } from "./cors-Bc5u5vnN.js";
3
+ import { d as nowMs, i as createRequestAuthorizer, n as withCors, t as corsPreflightResponse, u as createNoopRecorder } from "./cors-BXcpNLm9.js";
4
4
  import { t as extractTextContent } from "./content-D5LJAHyM.js";
5
5
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
6
  import { WebStandardStreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";
@@ -1,6 +1,6 @@
1
1
  const require_logger = require("./logger-BqPOa_E1.cjs");
2
2
  const require_context = require("./context-BweeEcoA.cjs");
3
- const require_cors = require("./cors-04Zq82V8.cjs");
3
+ const require_cors = require("./cors-CDnoIzo6.cjs");
4
4
  const require_content = require("./content-NCYIGgOb.cjs");
5
5
  let _modelcontextprotocol_sdk_server_mcp_js = require("@modelcontextprotocol/sdk/server/mcp.js");
6
6
  let _modelcontextprotocol_sdk_server_webStandardStreamableHttp_js = require("@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js");
@@ -1,5 +1,5 @@
1
1
  //#region package.json
2
- var version = "0.22.2-rc.9";
2
+ var version = "0.23.0";
3
3
  //#endregion
4
4
  Object.defineProperty(exports, "version", {
5
5
  enumerable: true,
@@ -1,4 +1,4 @@
1
1
  //#region package.json
2
- var version = "0.22.2-rc.9";
2
+ var version = "0.23.0";
3
3
  //#endregion
4
4
  export { version as t };
@@ -1,3 +1,3 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_mcp = require("../../mcp-CA3R0TO5.cjs");
2
+ const require_mcp = require("../../mcp-C_SCcw5F.cjs");
3
3
  exports.createMcpProtocolHandler = require_mcp.createMcpProtocolHandler;
@@ -1,2 +1,2 @@
1
- import { t as createMcpProtocolHandler } from "../../mcp-BZuYUEpa.js";
1
+ import { t as createMcpProtocolHandler } from "../../mcp-BiyuOOzg.js";
2
2
  export { createMcpProtocolHandler };
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_logger = require("../logger-BqPOa_E1.cjs");
3
- const require_cors = require("../cors-04Zq82V8.cjs");
3
+ const require_cors = require("../cors-CDnoIzo6.cjs");
4
4
  //#region src/protocols/oauth-metadata.ts
5
5
  function notFound() {
6
6
  return require_cors.withCors(new Response(JSON.stringify({ error: "not found" }), {
@@ -1,5 +1,5 @@
1
1
  import { i as log, r as describeError } from "../logger-2OXtfiIW.js";
2
- import { a as getOAuthRuntime, c as resolveProtectedResource, f as JSON_HEADERS, m as methodNotAllowed, n as withCors, o as oauthConfigurationErrorResponse, p as headResponse, t as corsPreflightResponse } from "../cors-Bc5u5vnN.js";
2
+ import { a as getOAuthRuntime, c as resolveProtectedResource, f as JSON_HEADERS, m as methodNotAllowed, n as withCors, o as oauthConfigurationErrorResponse, p as headResponse, t as corsPreflightResponse } from "../cors-BXcpNLm9.js";
3
3
  //#region src/protocols/oauth-metadata.ts
4
4
  function notFound() {
5
5
  return withCors(new Response(JSON.stringify({ error: "not found" }), {
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_list_tools = require("../../list-tools-lOWLeATX.cjs");
3
- const require_rest = require("../../rest-DtXQgceq.cjs");
2
+ const require_list_tools = require("../../list-tools-DChR_9Q2.cjs");
3
+ const require_rest = require("../../rest-DSfFaL-p.cjs");
4
4
  exports.createInvokeToolHandler = require_rest.createInvokeToolHandler;
5
5
  exports.createListToolsHandler = require_list_tools.createListToolsHandler;
@@ -1,3 +1,3 @@
1
- import { n as createListToolsHandler } from "../../list-tools-DTmS4BoO.js";
2
- import { t as createInvokeToolHandler } from "../../rest-DRwpK8gJ.js";
1
+ import { n as createListToolsHandler } from "../../list-tools-ChLj1G6z.js";
2
+ import { t as createInvokeToolHandler } from "../../rest-DdHrbXrU.js";
3
3
  export { createInvokeToolHandler, createListToolsHandler };
@@ -1,7 +1,7 @@
1
1
  const require_context = require("./context-BweeEcoA.cjs");
2
- const require_cors = require("./cors-04Zq82V8.cjs");
2
+ const require_cors = require("./cors-CDnoIzo6.cjs");
3
3
  const require_content = require("./content-NCYIGgOb.cjs");
4
- require("./list-tools-lOWLeATX.cjs");
4
+ require("./list-tools-DChR_9Q2.cjs");
5
5
  let _modelcontextprotocol_sdk_server_zod_compat_js = require("@modelcontextprotocol/sdk/server/zod-compat.js");
6
6
  //#region src/protocols/rest/invoke-tool.ts
7
7
  const MAX_REFLECTED_TOOL_NAME = 256;
@@ -1,7 +1,7 @@
1
1
  import { t as ToolContext } from "./context-CIpPzN7P.js";
2
- import { d as nowMs, f as JSON_HEADERS, i as createRequestAuthorizer, m as methodNotAllowed, n as withCors, r as assertRestResourceBinding, t as corsPreflightResponse, u as createNoopRecorder } from "./cors-Bc5u5vnN.js";
2
+ import { d as nowMs, f as JSON_HEADERS, i as createRequestAuthorizer, m as methodNotAllowed, n as withCors, r as assertRestResourceBinding, t as corsPreflightResponse, u as createNoopRecorder } from "./cors-BXcpNLm9.js";
3
3
  import { t as extractTextContent } from "./content-D5LJAHyM.js";
4
- import "./list-tools-DTmS4BoO.js";
4
+ import "./list-tools-ChLj1G6z.js";
5
5
  import { getParseErrorMessage, objectFromShape, safeParseAsync } from "@modelcontextprotocol/sdk/server/zod-compat.js";
6
6
  //#region src/protocols/rest/invoke-tool.ts
7
7
  const MAX_REFLECTED_TOOL_NAME = 256;
@@ -1,11 +1,11 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_logger = require("../../logger-BqPOa_E1.cjs");
3
- const require_cors = require("../../cors-04Zq82V8.cjs");
3
+ const require_cors = require("../../cors-CDnoIzo6.cjs");
4
4
  const require_metadata_path = require("../../metadata-path-zd7NSNoa.cjs");
5
- const require_mcp = require("../../mcp-CA3R0TO5.cjs");
5
+ const require_mcp = require("../../mcp-C_SCcw5F.cjs");
6
6
  const require_protocols_oauth_metadata = require("../../protocols/oauth-metadata.cjs");
7
- const require_list_tools = require("../../list-tools-lOWLeATX.cjs");
8
- const require_rest = require("../../rest-DtXQgceq.cjs");
7
+ const require_list_tools = require("../../list-tools-DChR_9Q2.cjs");
8
+ const require_rest = require("../../rest-DSfFaL-p.cjs");
9
9
  const require_forwarded = require("../../forwarded-Pi8Hs5Ps.cjs");
10
10
  const require_paths = require("../../paths-OP318a6c.cjs");
11
11
  //#region src/stacks/supabase/handler.ts
@@ -1,10 +1,10 @@
1
1
  import { s as trimTrailingSlash } from "../../logger-2OXtfiIW.js";
2
- import { l as createRecorderForRuntime, s as assertResourcePathShape } from "../../cors-Bc5u5vnN.js";
2
+ import { l as createRecorderForRuntime, s as assertResourcePathShape } from "../../cors-BXcpNLm9.js";
3
3
  import { t as OAUTH_PROTECTED_RESOURCE_METADATA_PATH } from "../../metadata-path-CAkNcfyY.js";
4
- import { t as createMcpProtocolHandler } from "../../mcp-BZuYUEpa.js";
4
+ import { t as createMcpProtocolHandler } from "../../mcp-BiyuOOzg.js";
5
5
  import { createOAuthProtectedResourceMetadataHandler } from "../../protocols/oauth-metadata.js";
6
- import { n as createListToolsHandler } from "../../list-tools-DTmS4BoO.js";
7
- import { t as createInvokeToolHandler } from "../../rest-DRwpK8gJ.js";
6
+ import { n as createListToolsHandler } from "../../list-tools-ChLj1G6z.js";
7
+ import { t as createInvokeToolHandler } from "../../rest-DdHrbXrU.js";
8
8
  import { t as applyForwardedOrigin } from "../../forwarded--h4efJy-.js";
9
9
  import { n as assertFunctionName, t as FUNCTIONS_MOUNT_PREFIX } from "../../paths-IS65L6TA.js";
10
10
  //#region src/stacks/supabase/handler.ts
@@ -2,8 +2,9 @@ Object.defineProperties(exports, {
2
2
  __esModule: { value: true },
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
- const require_package = require("../../package-BVV6QOX-.cjs");
5
+ const require_package = require("../../package-DlVwsYdc.cjs");
6
6
  const require_fs_errors = require("../../fs-errors-CWNzOV75.cjs");
7
+ const require_supabase_config = require("../../supabase-config-Dz7dnUv0.cjs");
7
8
  const require_paths = require("../../paths-OP318a6c.cjs");
8
9
  let node_fs = require("node:fs");
9
10
  let node_path = require("node:path");
@@ -195,7 +196,7 @@ function normalizePath(p) {
195
196
  return p.split(node_path.sep).join("/");
196
197
  }
197
198
  function productionImportMetaEnv(config) {
198
- return {
199
+ const env = {
199
200
  ...(0, vite.loadEnv)("production", config.envDir, config.envPrefix),
200
201
  MODE: "production",
201
202
  BASE_URL: config.base ?? "/",
@@ -203,6 +204,11 @@ function productionImportMetaEnv(config) {
203
204
  PROD: true,
204
205
  SSR: false
205
206
  };
207
+ if (!env.VITE_SUPABASE_PROJECT_ID) {
208
+ const ref = require_supabase_config.readSupabaseProjectRef(config.root);
209
+ if (ref) env.VITE_SUPABASE_PROJECT_ID = ref;
210
+ }
211
+ return env;
206
212
  }
207
213
  /**
208
214
  * Vite plugin that emits the Supabase Edge Function entry (and its
@@ -1,5 +1,6 @@
1
- import { t as version } from "../../package-bxtOrIga.js";
1
+ import { t as version } from "../../package-T7npsn7f.js";
2
2
  import { t as isFileMissing } from "../../fs-errors-PA2t1TIp.js";
3
+ import { t as readSupabaseProjectRef } from "../../supabase-config-CakTU8YF.js";
3
4
  import { n as assertFunctionName, t as FUNCTIONS_MOUNT_PREFIX } from "../../paths-IS65L6TA.js";
4
5
  import { lstatSync, mkdirSync, readFileSync, readdirSync, unlinkSync, writeFileSync } from "node:fs";
5
6
  import { dirname, join, relative, resolve, sep } from "node:path";
@@ -191,7 +192,7 @@ function normalizePath(p) {
191
192
  return p.split(sep).join("/");
192
193
  }
193
194
  function productionImportMetaEnv(config) {
194
- return {
195
+ const env = {
195
196
  ...loadEnv("production", config.envDir, config.envPrefix),
196
197
  MODE: "production",
197
198
  BASE_URL: config.base ?? "/",
@@ -199,6 +200,11 @@ function productionImportMetaEnv(config) {
199
200
  PROD: true,
200
201
  SSR: false
201
202
  };
203
+ if (!env.VITE_SUPABASE_PROJECT_ID) {
204
+ const ref = readSupabaseProjectRef(config.root);
205
+ if (ref) env.VITE_SUPABASE_PROJECT_ID = ref;
206
+ }
207
+ return env;
202
208
  }
203
209
  /**
204
210
  * Vite plugin that emits the Supabase Edge Function entry (and its
@@ -1,9 +1,9 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_cors = require("../../cors-04Zq82V8.cjs");
3
- const require_mcp = require("../../mcp-CA3R0TO5.cjs");
2
+ const require_cors = require("../../cors-CDnoIzo6.cjs");
3
+ const require_mcp = require("../../mcp-C_SCcw5F.cjs");
4
4
  const require_protocols_oauth_metadata = require("../../protocols/oauth-metadata.cjs");
5
- const require_list_tools = require("../../list-tools-lOWLeATX.cjs");
6
- const require_rest = require("../../rest-DtXQgceq.cjs");
5
+ const require_list_tools = require("../../list-tools-DChR_9Q2.cjs");
6
+ const require_rest = require("../../rest-DSfFaL-p.cjs");
7
7
  const require_forwarded = require("../../forwarded-Pi8Hs5Ps.cjs");
8
8
  //#region src/stacks/tanstack/handlers.ts
9
9
  const STACK = "tanstack";
@@ -1,8 +1,8 @@
1
- import { l as createRecorderForRuntime } from "../../cors-Bc5u5vnN.js";
2
- import { t as createMcpProtocolHandler } from "../../mcp-BZuYUEpa.js";
1
+ import { l as createRecorderForRuntime } from "../../cors-BXcpNLm9.js";
2
+ import { t as createMcpProtocolHandler } from "../../mcp-BiyuOOzg.js";
3
3
  import { createOAuthProtectedResourceMetadataHandler } from "../../protocols/oauth-metadata.js";
4
- import { n as createListToolsHandler } from "../../list-tools-DTmS4BoO.js";
5
- import { t as createInvokeToolHandler } from "../../rest-DRwpK8gJ.js";
4
+ import { n as createListToolsHandler } from "../../list-tools-ChLj1G6z.js";
5
+ import { t as createInvokeToolHandler } from "../../rest-DdHrbXrU.js";
6
6
  import { t as applyForwardedOrigin } from "../../forwarded--h4efJy-.js";
7
7
  //#region src/stacks/tanstack/handlers.ts
8
8
  const STACK = "tanstack";
@@ -4,9 +4,12 @@ Object.defineProperties(exports, {
4
4
  });
5
5
  require("../../metadata-path-zd7NSNoa.cjs");
6
6
  const require_fs_errors = require("../../fs-errors-CWNzOV75.cjs");
7
+ const require_supabase_config = require("../../supabase-config-Dz7dnUv0.cjs");
7
8
  let node_fs = require("node:fs");
8
9
  let node_path = require("node:path");
10
+ let vite = require("vite");
9
11
  //#region src/stacks/tanstack/vite.ts
12
+ const SUPABASE_PROJECT_REF_ENV = "VITE_SUPABASE_PROJECT_ID";
10
13
  const GENERATED_BANNER = "// AUTO-GENERATED by @lovable.dev/mcp-js — do not edit. Regenerated by the Vite plugin.\n// To take ownership, delete this banner line; the plugin then leaves the file alone.";
11
14
  function normalizePath(p) {
12
15
  return p.split(node_path.sep).join("/");
@@ -241,6 +244,13 @@ function mcpPlugin(options = {}) {
241
244
  return urlPath;
242
245
  }
243
246
  },
247
+ config(userConfig, { mode }) {
248
+ const root = userConfig.root ? (0, node_path.resolve)(userConfig.root) : process.cwd();
249
+ if ((0, vite.loadEnv)(mode, typeof userConfig.envDir === "string" ? (0, node_path.resolve)(root, userConfig.envDir) : root, userConfig.envPrefix ?? "VITE_")[SUPABASE_PROJECT_REF_ENV]) return;
250
+ const ref = require_supabase_config.readSupabaseProjectRef(root);
251
+ if (!ref) return;
252
+ return { define: { [`import.meta.env.${SUPABASE_PROJECT_REF_ENV}`]: JSON.stringify(ref) } };
253
+ },
244
254
  configResolved(config) {
245
255
  projectRoot = config.root;
246
256
  mcpEntry = (0, node_path.resolve)(projectRoot, mcpEntryOption);
@@ -1,8 +1,11 @@
1
1
  import "../../metadata-path-CAkNcfyY.js";
2
2
  import { t as isFileMissing } from "../../fs-errors-PA2t1TIp.js";
3
+ import { t as readSupabaseProjectRef } from "../../supabase-config-CakTU8YF.js";
3
4
  import { lstatSync, mkdirSync, readFileSync, readdirSync, unlinkSync, writeFileSync } from "node:fs";
4
5
  import { dirname, join, relative, resolve, sep } from "node:path";
6
+ import { loadEnv } from "vite";
5
7
  //#region src/stacks/tanstack/vite.ts
8
+ const SUPABASE_PROJECT_REF_ENV = "VITE_SUPABASE_PROJECT_ID";
6
9
  const GENERATED_BANNER = "// AUTO-GENERATED by @lovable.dev/mcp-js — do not edit. Regenerated by the Vite plugin.\n// To take ownership, delete this banner line; the plugin then leaves the file alone.";
7
10
  function normalizePath(p) {
8
11
  return p.split(sep).join("/");
@@ -237,6 +240,13 @@ function mcpPlugin(options = {}) {
237
240
  return urlPath;
238
241
  }
239
242
  },
243
+ config(userConfig, { mode }) {
244
+ const root = userConfig.root ? resolve(userConfig.root) : process.cwd();
245
+ if (loadEnv(mode, typeof userConfig.envDir === "string" ? resolve(root, userConfig.envDir) : root, userConfig.envPrefix ?? "VITE_")[SUPABASE_PROJECT_REF_ENV]) return;
246
+ const ref = readSupabaseProjectRef(root);
247
+ if (!ref) return;
248
+ return { define: { [`import.meta.env.${SUPABASE_PROJECT_REF_ENV}`]: JSON.stringify(ref) } };
249
+ },
240
250
  configResolved(config) {
241
251
  projectRoot = config.root;
242
252
  mcpEntry = resolve(projectRoot, mcpEntryOption);
@@ -0,0 +1,26 @@
1
+ import { t as isFileMissing } from "./fs-errors-PA2t1TIp.js";
2
+ import { readFileSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ //#region src/core/supabase-config.ts
5
+ const SUPABASE_CONFIG_RELATIVE_PATH = "supabase/config.toml";
6
+ function readSupabaseProjectRef(projectRoot) {
7
+ let content;
8
+ try {
9
+ content = readFileSync(join(projectRoot, SUPABASE_CONFIG_RELATIVE_PATH), "utf8");
10
+ } catch (err) {
11
+ if (isFileMissing(err)) return void 0;
12
+ throw err;
13
+ }
14
+ for (const raw of content.split(/\r?\n/)) {
15
+ const line = raw.trim();
16
+ if (line.length === 0 || line.startsWith("#")) continue;
17
+ if (line.startsWith("[")) break;
18
+ const match = /^project_id\s*=\s*(?:"([^"]*)"|'([^']*)')/.exec(line);
19
+ if (match) {
20
+ const value = match[1] ?? match[2] ?? "";
21
+ return value.length > 0 ? value : void 0;
22
+ }
23
+ }
24
+ }
25
+ //#endregion
26
+ export { readSupabaseProjectRef as t };
@@ -0,0 +1,31 @@
1
+ const require_fs_errors = require("./fs-errors-CWNzOV75.cjs");
2
+ let node_fs = require("node:fs");
3
+ let node_path = require("node:path");
4
+ //#region src/core/supabase-config.ts
5
+ const SUPABASE_CONFIG_RELATIVE_PATH = "supabase/config.toml";
6
+ function readSupabaseProjectRef(projectRoot) {
7
+ let content;
8
+ try {
9
+ content = (0, node_fs.readFileSync)((0, node_path.join)(projectRoot, SUPABASE_CONFIG_RELATIVE_PATH), "utf8");
10
+ } catch (err) {
11
+ if (require_fs_errors.isFileMissing(err)) return void 0;
12
+ throw err;
13
+ }
14
+ for (const raw of content.split(/\r?\n/)) {
15
+ const line = raw.trim();
16
+ if (line.length === 0 || line.startsWith("#")) continue;
17
+ if (line.startsWith("[")) break;
18
+ const match = /^project_id\s*=\s*(?:"([^"]*)"|'([^']*)')/.exec(line);
19
+ if (match) {
20
+ const value = match[1] ?? match[2] ?? "";
21
+ return value.length > 0 ? value : void 0;
22
+ }
23
+ }
24
+ }
25
+ //#endregion
26
+ Object.defineProperty(exports, "readSupabaseProjectRef", {
27
+ enumerable: true,
28
+ get: function() {
29
+ return readSupabaseProjectRef;
30
+ }
31
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lovable.dev/mcp-js",
3
- "version": "0.22.2-rc.9",
3
+ "version": "0.23.0",
4
4
  "description": "Author MCP servers for Lovable apps. Declare tools with defineTool, register them in defineMcp, and a framework adapter (TanStack or Supabase Edge Functions) emits the route(s) at build time.",
5
5
  "type": "module",
6
6
  "repository": {
@@ -127,7 +127,7 @@
127
127
  "@types/node": "22.13.13",
128
128
  "rimraf": "^5.0.0",
129
129
  "tsdown": "^0.22.5",
130
- "typescript": "^5.9.3",
130
+ "typescript": "7.0.2",
131
131
  "vite": "^7.3.1",
132
132
  "vitest": "^4.1.5",
133
133
  "zod": "^4.1.13"