@base44-preview/vite-plugin 1.0.48-pr.142.9fcc12e → 1.0.49-pr.143.ec93a38

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.
@@ -11,6 +11,7 @@ export declare class JSXProcessor {
11
11
  processJSXElement(path: NodePath<t.JSXOpeningElement>): void;
12
12
  private addSourceLocationAttribute;
13
13
  private addDynamicContentAttribute;
14
+ private isFragment;
14
15
  private hasAttribute;
15
16
  private checkIfElementHasDynamicContent;
16
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-processor.d.ts","sourceRoot":"","sources":["../src/jsx-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAC;AAOvC,qBAAa,YAAY;IAOrB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,QAAQ;IAPlB,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,sBAAsB,CAAyB;IACvD,OAAO,CAAC,oBAAoB,CAAuB;gBAGzC,KAAK,EAAE,OAAO,CAAC,EACf,QAAQ,EAAE,MAAM;IAQ1B,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAe5D,OAAO,CAAC,0BAA0B;IAclC,OAAO,CAAC,0BAA0B;IA2BlC,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,+BAA+B;CAgFxC"}
1
+ {"version":3,"file":"jsx-processor.d.ts","sourceRoot":"","sources":["../src/jsx-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAC;AAOvC,qBAAa,YAAY;IAOrB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,QAAQ;IAPlB,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,sBAAsB,CAAyB;IACvD,OAAO,CAAC,oBAAoB,CAAuB;gBAGzC,KAAK,EAAE,OAAO,CAAC,EACf,QAAQ,EAAE,MAAM;IAQ1B,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAiB5D,OAAO,CAAC,0BAA0B;IAclC,OAAO,CAAC,0BAA0B;IA2BlC,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,+BAA+B;CAgFxC"}
@@ -24,6 +24,9 @@ export class JSXProcessor {
24
24
  const { name } = path.node;
25
25
  if (this.types.isJSXIdentifier(name) && DOCUMENT_ELEMENTS.includes(name.name))
26
26
  return;
27
+ // React rejects any Fragment prop but key/children ("Invalid prop supplied to React.Fragment").
28
+ if (this.isFragment(name))
29
+ return;
27
30
  this.addSourceLocationAttribute(path);
28
31
  this.addDynamicContentAttribute(path);
29
32
  this.collectionIdProcessor.process(path);
@@ -47,6 +50,11 @@ export class JSXProcessor {
47
50
  attr.name.name === "data-source-location");
48
51
  path.node.attributes.splice(sourceLocIdx + 1, 0, this.types.jsxAttribute(this.types.jsxIdentifier("data-dynamic-content"), this.types.stringLiteral(isDynamic ? "true" : "false")));
49
52
  }
53
+ isFragment(name) {
54
+ if (this.types.isJSXIdentifier(name))
55
+ return name.name === "Fragment";
56
+ return this.types.isJSXMemberExpression(name) && name.property.name === "Fragment";
57
+ }
50
58
  hasAttribute(path, name) {
51
59
  return path.node.attributes.some((attr) => this.types.isJSXAttribute(attr) &&
52
60
  this.types.isJSXIdentifier(attr.name) &&
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-processor.js","sourceRoot":"","sources":["../src/jsx-processor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jsx-processor.js","sourceRoot":"","sources":["../src/jsx-processor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/private-data-sources/manifest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,YAAY,CAAC;AA4BjE,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMpE;AAED,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,OAAO,EACtB,YAAY,EAAE,MAAM,GACnB,8BAA8B,CAEhC;AAkCD,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,OAAO,EACtB,YAAY,CAAC,EAAE,MAAM,GACpB,8BAA8B,CA2BhC;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAYvF;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,8BAA8B,GACpC,8BAA8B,CAEhC"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/private-data-sources/manifest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,YAAY,CAAC;AAiCjE,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMpE;AAED,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,OAAO,EACtB,YAAY,EAAE,MAAM,GACnB,8BAA8B,CAEhC;AAkCD,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,OAAO,EACtB,YAAY,CAAC,EAAE,MAAM,GACpB,8BAA8B,CA2BhC;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAWvF;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,8BAA8B,GACpC,8BAA8B,CAEhC"}
@@ -4,22 +4,28 @@ function readStringVar(key) {
4
4
  const value = workerEnvironment()[key];
5
5
  return typeof value === "string" ? value : undefined;
6
6
  }
7
+ let parsedManifest;
7
8
  // The manifest is a Worker binding frozen with the script's Hyperdrive/VPC bindings,
8
- // so every entry it lists has its binding on this worker.
9
+ // so every entry it lists has its binding on this worker, and one parse per raw value is enough.
9
10
  function parsePrivateDataSourceManifest() {
10
11
  const raw = readStringVar(PRIVATE_DATA_SOURCES_MANIFEST_ENV);
11
12
  if (!raw)
12
13
  return [];
14
+ if (parsedManifest?.raw === raw)
15
+ return parsedManifest.entries;
13
16
  let parsed;
14
17
  try {
15
18
  parsed = JSON.parse(raw);
16
19
  }
17
20
  catch {
18
- return [];
21
+ throw new Error(`${PRIVATE_DATA_SOURCES_MANIFEST_ENV} is not valid JSON. Republish the app.`);
22
+ }
23
+ if (!Array.isArray(parsed)) {
24
+ throw new Error(`${PRIVATE_DATA_SOURCES_MANIFEST_ENV} is not a list of private data sources. Republish the app.`);
19
25
  }
20
- return Array.isArray(parsed)
21
- ? parsed.filter((entry) => entry !== null && typeof entry === "object")
22
- : [];
26
+ const entries = parsed.filter((entry) => entry !== null && typeof entry === "object");
27
+ parsedManifest = { raw, entries };
28
+ return entries;
23
29
  }
24
30
  export function normalizePrivateDataSourceKey(value) {
25
31
  return String(value || "")
@@ -79,13 +85,12 @@ export function lookupPrivateDataSource(requestedName, expectedType) {
79
85
  return best.entry;
80
86
  }
81
87
  export function privateDataSourceBinding(entry) {
82
- const current = lookupPrivateDataSource(entry.name, entry.type);
83
- if (!current.bindingName) {
84
- throw new Error(`Private data source "${current.name}" has no Worker binding name`);
88
+ if (!entry.bindingName) {
89
+ throw new Error(`Private data source "${entry.name}" has no Worker binding name`);
85
90
  }
86
- const binding = workerEnvironment()[current.bindingName];
91
+ const binding = workerEnvironment()[entry.bindingName];
87
92
  if (!binding) {
88
- throw new Error(`Private data source binding "${current.bindingName}" is missing from the Worker environment`);
93
+ throw new Error(`Private data source binding "${entry.bindingName}" is missing from the Worker environment`);
89
94
  }
90
95
  return binding;
91
96
  }
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/private-data-sources/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG7D,MAAM,iCAAiC,GAAG,6BAA6B,CAAC;AAExE,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAC;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,qFAAqF;AACrF,0DAA0D;AAC1D,SAAS,8BAA8B;IACrC,MAAM,GAAG,GAAG,aAAa,CAAC,iCAAiC,CAAC,CAAC;IAC7D,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAC1B,CAAC,CAAC,MAAM,CAAC,MAAM,CACX,CAAC,KAAK,EAA2C,EAAE,CACjD,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,CAC9C;QACH,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,KAAc;IAC1D,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;SACvB,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,aAAsB,EACtB,YAAoB;IAEpB,OAAO,uBAAuB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,0BAA0B,CACjC,KAAqC,EACrC,aAAsB;IAEtB,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,mBAAmB,GAAG,6BAA6B,CAAC,SAAS,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG;QACjB,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;QAC9B,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE;QACrC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE;QAChD,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE;KACxD,CAAC;IACF,IAAI,QAAQ,GAAkB,IAAI,CAAC;IACnC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ;YAAE,SAAS;QAClD,MAAM,OAAO,GAAG,SAAS,CAAC,UAAU;YAClC,CAAC,CAAC,6BAA6B,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,mBAAmB;YACxE,CAAC,CAAC,SAAS,CAAC,KAAK,KAAK,SAAS,CAAC;QAClC,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,SAAS,CAAC,IAAI,GAAG,QAAQ,CAAC,EAAE,CAAC;YAChE,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,oCAAoC,CAC3C,KAAqC,EACrC,YAAoB;IAEpB,OAAO,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,YAAY,KAAK,YAAY,IAAI,KAAK,CAAC,WAAW,KAAK,YAAY,CAAC,CAAC;AAC9G,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,aAAsB,EACtB,YAAqB;IAErB,MAAM,OAAO,GAAG,8BAA8B,EAAE;SAC7C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,0BAA0B,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;SACnF,MAAM,CAAC,CAAC,KAAK,EAAoE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;SACxG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,wBAAwB,aAAa,uHAAuH,CAC7J,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,YAAY;QAC9B,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,oCAAoC,CAAC,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACpG,CAAC,CAAC,OAAO,CAAC;IACZ,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;IAC3B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,wBAAwB,aAAa,cAAc,YAAY,cAAc,CAAC,CAAC;IACjG,CAAC;IAED,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;IACpF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CACb,wBAAwB,aAAa,mBAAmB,WAAW,CAAC,MAAM,GAAG,IAAI,+BAA+B,CACjH,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAqC;IAC5E,MAAM,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAChE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,CAAC,IAAI,8BAA8B,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACzD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,gCAAgC,OAAO,CAAC,WAAW,0CAA0C,CAC9F,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,KAAqC;IAErC,OAAO,uBAAuB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AACzD,CAAC"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/private-data-sources/manifest.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ export declare function mongodb(name: unknown): Readonly<Readonly<{
13
13
  }> & {
14
14
  connect: (options?: unknown) => unknown;
15
15
  } & {
16
- driverHost: string;
16
+ readonly driverHost: string;
17
17
  readonly connectionString: string;
18
18
  readonly uri: string;
19
19
  mongoClientOptions(options?: Record<string, unknown>): Readonly<{
@@ -1 +1 @@
1
- {"version":3,"file":"mongodb.d.ts","sourceRoot":"","sources":["../../src/private-data-sources/mongodb.ts"],"names":[],"mappings":"AAsBA,wBAAgB,OAAO,CAAC,IAAI,EAAE,OAAO;;;;;;;;;;;;;aAIxB,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO;;;;;iCA4BV,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;GAevD"}
1
+ {"version":3,"file":"mongodb.d.ts","sourceRoot":"","sources":["../../src/private-data-sources/mongodb.ts"],"names":[],"mappings":"AAoBA,wBAAgB,OAAO,CAAC,IAAI,EAAE,OAAO;;;;;;;;;;;;;aAIxB,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO;;;;;iCA+BV,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;GAevD"}
@@ -1,4 +1,5 @@
1
- import { currentPrivateDataSource, normalizePrivateDataSourceKey, privateDataSourceReference, } from "./manifest.js";
1
+ import { createHash } from "node:crypto";
2
+ import { currentPrivateDataSource, privateDataSourceReference } from "./manifest.js";
2
3
  import { buildTcpPrivateDataSource } from "./tcp.js";
3
4
  import { installPrivateNodeNetAdapter, registerPrivateNodeNetRoute } from "./node-net-adapter.js";
4
5
  function encodeMongoConnectionPart(value) {
@@ -16,7 +17,9 @@ export function mongodb(name) {
16
17
  installPrivateNodeNetAdapter();
17
18
  const entry = privateDataSourceReference(name, "mongodb");
18
19
  const source = buildTcpPrivateDataSource(entry);
19
- const driverHostname = `base44-private-${normalizePrivateDataSourceKey(entry.bindingName || entry.name || "mongodb")}`;
20
+ // Hashed, not normalized: "my-db" and "my.db" must not share a route.
21
+ const hash = createHash("sha256").update(String(entry.bindingName || entry.name)).digest("hex").slice(0, 32);
22
+ const driverHostname = `base44-private-${hash}`;
20
23
  function registerRoute() {
21
24
  const current = currentPrivateDataSource(entry);
22
25
  const port = typeof current.port === "number" ? current.port : 27017;
@@ -27,7 +30,10 @@ export function mongodb(name) {
27
30
  });
28
31
  }
29
32
  const extension = {
30
- driverHost: driverHostname,
33
+ get driverHost() {
34
+ registerRoute();
35
+ return driverHostname;
36
+ },
31
37
  get connectionString() {
32
38
  const current = currentPrivateDataSource(entry);
33
39
  registerRoute();
@@ -1 +1 @@
1
- {"version":3,"file":"mongodb.js","sourceRoot":"","sources":["../../src/private-data-sources/mongodb.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mongodb.js","sourceRoot":"","sources":["../../src/private-data-sources/mongodb.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"oracle.d.ts","sourceRoot":"","sources":["../../src/private-data-sources/oracle.ts"],"names":[],"mappings":"AAMA,wBAAgB,MAAM,CAAC,IAAI,EAAE,OAAO;;;;;;;;;;;;;;;;;;GA2BnC"}
1
+ {"version":3,"file":"oracle.d.ts","sourceRoot":"","sources":["../../src/private-data-sources/oracle.ts"],"names":[],"mappings":"AAMA,wBAAgB,MAAM,CAAC,IAAI,EAAE,OAAO;;;;;;;;;;;;;;;;;;GA8BnC"}
@@ -16,6 +16,9 @@ export function oracle(name) {
16
16
  throw new Error("Enter an Oracle service name using letters, numbers, underscores, dots, $, #, or hyphens.");
17
17
  }
18
18
  const port = source.port;
19
+ if (typeof port !== "number") {
20
+ throw new Error(`Oracle private data source "${entry.name}" has no port. Set the port on the data source.`);
21
+ }
19
22
  registerPrivateNodeNetRoute(driverHost, port, {
20
23
  label: `Oracle private data source "${entry.name}"`,
21
24
  connect: () => source.connect(),
@@ -1 +1 @@
1
- {"version":3,"file":"oracle.js","sourceRoot":"","sources":["../../src/private-data-sources/oracle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAClG,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAErD,MAAM,UAAU,MAAM,CAAC,IAAa;IAClC,4BAA4B,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,0BAA0B,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAChD,+EAA+E;IAC/E,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxF,MAAM,UAAU,GAAG,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAE5D,MAAM,SAAS,GAAG;QAChB,eAAe;YACb,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;YACpC,IAAI,CAAC,WAAW,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC7D,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAC;YAC/G,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAK,CAAC;YAC1B,2BAA2B,CAAC,UAAU,EAAE,IAAI,EAAE;gBAC5C,KAAK,EAAE,+BAA+B,KAAK,CAAC,IAAI,GAAG;gBACnD,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE;aAChC,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,MAAM,CAAC;gBACnB,IAAI,EAAE,MAAM,CAAC,QAAQ;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,aAAa,EAAE,8GAA8G,UAAU,UAAU,IAAI,iCAAiC,WAAW,uBAAuB;aACzN,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAqC,CAAC,CAAC;AACzI,CAAC"}
1
+ {"version":3,"file":"oracle.js","sourceRoot":"","sources":["../../src/private-data-sources/oracle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAClG,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAErD,MAAM,UAAU,MAAM,CAAC,IAAa;IAClC,4BAA4B,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,0BAA0B,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAChD,+EAA+E;IAC/E,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxF,MAAM,UAAU,GAAG,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAE5D,MAAM,SAAS,GAAG;QAChB,eAAe;YACb,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;YACpC,IAAI,CAAC,WAAW,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC7D,MAAM,IAAI,KAAK,CAAC,2FAA2F,CAAC,CAAC;YAC/G,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YACzB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,CAAC,IAAI,iDAAiD,CAAC,CAAC;YAC9G,CAAC;YACD,2BAA2B,CAAC,UAAU,EAAE,IAAI,EAAE;gBAC5C,KAAK,EAAE,+BAA+B,KAAK,CAAC,IAAI,GAAG;gBACnD,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE;aAChC,CAAC,CAAC;YACH,OAAO,MAAM,CAAC,MAAM,CAAC;gBACnB,IAAI,EAAE,MAAM,CAAC,QAAQ;gBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,aAAa,EAAE,8GAA8G,UAAU,UAAU,IAAI,iCAAiC,WAAW,uBAAuB;aACzN,CAAC,CAAC;QACL,CAAC;KACF,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAqC,CAAC,CAAC;AACzI,CAAC"}
@@ -44,7 +44,7 @@ export function buildTcpPrivateDataSource(entry) {
44
44
  return binding.connect(address, options);
45
45
  },
46
46
  get binding() {
47
- return privateDataSourceBinding(entry);
47
+ return privateDataSourceBinding(currentPrivateDataSource(entry));
48
48
  },
49
49
  });
50
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tcp.js","sourceRoot":"","sources":["../../src/private-data-sources/tcp.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,eAAe,CAAC;AAOvB,SAAS,UAAU,CAAC,OAAgB;IAClC,OAAO,CACL,OAAO,KAAK,IAAI;QAChB,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAQ,OAAiC,CAAC,OAAO,KAAK,UAAU,CACjE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAqC;IAC7E,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,WAAW;YACb,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;QACrD,CAAC;QACD,IAAI,IAAI;YACN,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;QAC9C,CAAC;QACD,IAAI,IAAI;YACN,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;QAC9C,CAAC;QACD,IAAI,QAAQ;YACV,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;QAClD,CAAC;QACD,IAAI,QAAQ;YACV,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;QAClD,CAAC;QACD,IAAI,IAAI;YACN,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;QAClD,CAAC;QACD,IAAI,QAAQ;YACV,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;QAClD,CAAC;QACD,OAAO,CAAC,OAAiB;YACvB,MAAM,OAAO,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;YAClD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CACb,wBAAwB,OAAO,CAAC,IAAI,6BAA6B,CAClE,CAAC;YACJ,CAAC;YACD,MAAM,OAAO,GACX,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;gBAClE,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;gBAChD,CAAC,CAAC,IAAI,CAAC;YACX,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CACb,wBAAwB,OAAO,CAAC,IAAI,sBAAsB,CAC3D,CAAC;YACJ,CAAC;YACD,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,OAAO;YACT,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAe;IACnD,MAAM,YAAY,GAAG,MAA6C,CAAC;IACnE,OAAO,CACL,YAAY,KAAK,IAAI;QACrB,OAAO,YAAY,KAAK,QAAQ;QAChC,CAAC,CAAC,YAAY,CAAC,QAAQ;QACvB,OAAO,YAAY,CAAC,QAAQ,CAAC,SAAS,KAAK,UAAU;QACrD,CAAC,CAAC,YAAY,CAAC,QAAQ;QACvB,OAAO,YAAY,CAAC,QAAQ,CAAC,SAAS,KAAK,UAAU,CACtD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,IAAa,EAAE,YAAoB;IACrD,OAAO,yBAAyB,CAC9B,0BAA0B,CAAC,IAAI,EAAE,YAAY,CAAC,CAC/C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"tcp.js","sourceRoot":"","sources":["../../src/private-data-sources/tcp.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,eAAe,CAAC;AAOvB,SAAS,UAAU,CAAC,OAAgB;IAClC,OAAO,CACL,OAAO,KAAK,IAAI;QAChB,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAQ,OAAiC,CAAC,OAAO,KAAK,UAAU,CACjE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAqC;IAC7E,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,WAAW;YACb,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;QACrD,CAAC;QACD,IAAI,IAAI;YACN,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;QAC9C,CAAC;QACD,IAAI,IAAI;YACN,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;QAC9C,CAAC;QACD,IAAI,QAAQ;YACV,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;QAClD,CAAC;QACD,IAAI,QAAQ;YACV,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;QAClD,CAAC;QACD,IAAI,IAAI;YACN,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;QAClD,CAAC;QACD,IAAI,QAAQ;YACV,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;QAClD,CAAC;QACD,OAAO,CAAC,OAAiB;YACvB,MAAM,OAAO,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;YAClD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CACb,wBAAwB,OAAO,CAAC,IAAI,6BAA6B,CAClE,CAAC;YACJ,CAAC;YACD,MAAM,OAAO,GACX,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;gBAClE,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;gBAChD,CAAC,CAAC,IAAI,CAAC;YACX,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CACb,wBAAwB,OAAO,CAAC,IAAI,sBAAsB,CAC3D,CAAC;YACJ,CAAC;YACD,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,OAAO;YACT,OAAO,wBAAwB,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;QACnE,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAe;IACnD,MAAM,YAAY,GAAG,MAA6C,CAAC;IACnE,OAAO,CACL,YAAY,KAAK,IAAI;QACrB,OAAO,YAAY,KAAK,QAAQ;QAChC,CAAC,CAAC,YAAY,CAAC,QAAQ;QACvB,OAAO,YAAY,CAAC,QAAQ,CAAC,SAAS,KAAK,UAAU;QACrD,CAAC,CAAC,YAAY,CAAC,QAAQ;QACvB,OAAO,YAAY,CAAC,QAAQ,CAAC,SAAS,KAAK,UAAU,CACtD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,IAAa,EAAE,YAAoB;IACrD,OAAO,yBAAyB,CAC9B,0BAA0B,CAAC,IAAI,EAAE,YAAY,CAAC,CAC/C,CAAC;AACJ,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { Plugin } from "vite";
1
+ import { type Plugin } from "vite";
2
2
  export declare function privateDataSourcesPlugin(): Plugin;
3
3
  //# sourceMappingURL=private-data-sources-plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"private-data-sources-plugin.d.ts","sourceRoot":"","sources":["../src/private-data-sources-plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAiCnC,wBAAgB,wBAAwB,IAAI,MAAM,CAmBjD"}
1
+ {"version":3,"file":"private-data-sources-plugin.d.ts","sourceRoot":"","sources":["../src/private-data-sources-plugin.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,MAAM,CAAC;AA+ClD,wBAAgB,wBAAwB,IAAI,MAAM,CA2BjD"}
@@ -1,5 +1,6 @@
1
1
  import path from "node:path";
2
2
  import { fileURLToPath } from "node:url";
3
+ import { normalizePath } from "vite";
3
4
  /**
4
5
  * Serves `base44:private-data-sources/<type>` to TanStack server code, so it
5
6
  * reaches a workspace private data source with the SAME import a backend
@@ -8,14 +9,15 @@ import { fileURLToPath } from "node:url";
8
9
  * import { sqlserver } from "base44:private-data-sources/sqlserver";
9
10
  *
10
11
  * The modules are this package's own copy of the backend-function adapters
11
- * (`@base44/functions-compiler`), reading the worker's bindings and manifest off
12
+ * (`@base44/functions-compiler`, forked at base44/cli ac98feb), reading the worker's bindings and manifest off
12
13
  * `env` from `cloudflare:workers`. Each specifier resolves to the compiled file
13
14
  * so Vite bundles it like any source module.
14
15
  *
15
16
  * The bindings exist only on the deployed worker: in the editor's dev preview a
16
17
  * lookup throws, saying the source is available on the published app.
17
18
  */
18
- const PREFIX = "base44:private-data-sources/";
19
+ const NAMESPACE = "base44:private-data-sources";
20
+ const PREFIX = `${NAMESPACE}/`;
19
21
  const SOURCE_TYPES = new Set([
20
22
  "elasticsearch",
21
23
  "http",
@@ -27,24 +29,46 @@ const SOURCE_TYPES = new Set([
27
29
  "redis",
28
30
  "sqlserver",
29
31
  ]);
32
+ const IMPORTER_QUERY = "?importer=";
30
33
  const MODULES_DIR = path.join(path.dirname(fileURLToPath(import.meta.url)), "private-data-sources");
34
+ function failureReason(specifier, environment) {
35
+ const sourceType = specifier.startsWith(PREFIX) ? specifier.slice(PREFIX.length) : "";
36
+ if (!SOURCE_TYPES.has(sourceType)) {
37
+ return `"${specifier}" is not a private data source type. Use one of: ${[...SOURCE_TYPES].map((t) => PREFIX + t).join(", ")}.`;
38
+ }
39
+ // The source carries credentials, so it must never reach the browser bundle.
40
+ if (environment === "client") {
41
+ return `"${specifier}" is server-only. Move this import into a server function or server route.`;
42
+ }
43
+ return null;
44
+ }
31
45
  export function privateDataSourcesPlugin() {
32
46
  return {
33
47
  name: "base44-private-data-sources",
34
48
  // Ahead of Vite's own resolution so the bare scheme is never read as a URL.
35
49
  enforce: "pre",
36
- resolveId(id) {
37
- if (!id.startsWith(PREFIX))
50
+ // Like base44-runtime: errors are raised in `load`, never `resolveId`, so the
51
+ // dep scan of not-yet-stripped server code in the client environment survives.
52
+ resolveId(id, importer) {
53
+ if (id !== NAMESPACE && !id.startsWith(PREFIX))
38
54
  return null;
39
- const sourceType = id.slice(PREFIX.length);
40
- if (!SOURCE_TYPES.has(sourceType)) {
41
- this.error(`"${id}" is not a private data source type. Use one of: ${[...SOURCE_TYPES].join(", ")}.`);
42
- }
43
- // The source carries credentials, so it must never reach the browser bundle.
44
- if (this.environment?.name === "client") {
45
- this.error(`"${id}" is server-only. Move this import into a server function or server route.`);
55
+ if (!failureReason(id, this.environment?.name)) {
56
+ return normalizePath(path.join(MODULES_DIR, `${id.slice(PREFIX.length)}.js`));
46
57
  }
47
- return path.join(MODULES_DIR, `${sourceType}.js`);
58
+ const virtual = `\0${id}`;
59
+ if (!importer)
60
+ return virtual;
61
+ return `${virtual}${IMPORTER_QUERY}${Buffer.from(importer.split("?")[0]).toString("base64url")}`;
62
+ },
63
+ load(id) {
64
+ if (!id.startsWith("\0"))
65
+ return null;
66
+ const [specifier = "", importer] = id.slice(1).split(IMPORTER_QUERY);
67
+ if (specifier !== NAMESPACE && !specifier.startsWith(PREFIX))
68
+ return null;
69
+ const from = importer ? ` Imported from ${Buffer.from(importer, "base64url").toString()}.` : "";
70
+ const reason = failureReason(specifier, this.environment?.name);
71
+ this.error(`${reason ?? `"${specifier}" cannot be loaded here.`}${from}`);
48
72
  },
49
73
  };
50
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"private-data-sources-plugin.js","sourceRoot":"","sources":["../src/private-data-sources-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC;;;;;;;;;;;;;;GAcG;AAEH,MAAM,MAAM,GAAG,8BAA8B,CAAC;AAC9C,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC3B,eAAe;IACf,MAAM;IACN,SAAS;IACT,SAAS;IACT,OAAO;IACP,QAAQ;IACR,UAAU;IACV,OAAO;IACP,WAAW;CACZ,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;AAEpG,MAAM,UAAU,wBAAwB;IACtC,OAAO;QACL,IAAI,EAAE,6BAA6B;QACnC,4EAA4E;QAC5E,OAAO,EAAE,KAAK;QAEd,SAAS,CAAC,EAAE;YACV,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;gBAAE,OAAO,IAAI,CAAC;YACxC,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,oDAAoD,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxG,CAAC;YACD,6EAA6E;YAC7E,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACxC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,4EAA4E,CAAC,CAAC;YACjG,CAAC;YACD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,UAAU,KAAK,CAAC,CAAC;QACpD,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"private-data-sources-plugin.js","sourceRoot":"","sources":["../src/private-data-sources-plugin.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@base44-preview/vite-plugin",
3
- "version": "1.0.48-pr.142.9fcc12e",
3
+ "version": "1.0.49-pr.143.ec93a38",
4
4
  "description": "The Vite plugin for base44 based applications",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -26,6 +26,8 @@ export class JSXProcessor {
26
26
  if (this.hasAttribute(path, "data-source-location")) return;
27
27
  const { name } = path.node;
28
28
  if (this.types.isJSXIdentifier(name) && DOCUMENT_ELEMENTS.includes(name.name)) return;
29
+ // React rejects any Fragment prop but key/children ("Invalid prop supplied to React.Fragment").
30
+ if (this.isFragment(name)) return;
29
31
 
30
32
  this.addSourceLocationAttribute(path);
31
33
  this.addDynamicContentAttribute(path);
@@ -78,6 +80,11 @@ export class JSXProcessor {
78
80
  );
79
81
  }
80
82
 
83
+ private isFragment(name: t.JSXOpeningElement["name"]): boolean {
84
+ if (this.types.isJSXIdentifier(name)) return name.name === "Fragment";
85
+ return this.types.isJSXMemberExpression(name) && name.property.name === "Fragment";
86
+ }
87
+
81
88
  private hasAttribute(
82
89
  path: NodePath<t.JSXOpeningElement>,
83
90
  name: string
@@ -8,23 +8,28 @@ function readStringVar(key: string): string | undefined {
8
8
  return typeof value === "string" ? value : undefined;
9
9
  }
10
10
 
11
+ let parsedManifest: { raw: string; entries: PrivateDataSourceManifestEntry[] } | undefined;
12
+
11
13
  // The manifest is a Worker binding frozen with the script's Hyperdrive/VPC bindings,
12
- // so every entry it lists has its binding on this worker.
14
+ // so every entry it lists has its binding on this worker, and one parse per raw value is enough.
13
15
  function parsePrivateDataSourceManifest(): PrivateDataSourceManifestEntry[] {
14
16
  const raw = readStringVar(PRIVATE_DATA_SOURCES_MANIFEST_ENV);
15
17
  if (!raw) return [];
18
+ if (parsedManifest?.raw === raw) return parsedManifest.entries;
16
19
  let parsed: unknown;
17
20
  try {
18
21
  parsed = JSON.parse(raw);
19
22
  } catch {
20
- return [];
23
+ throw new Error(`${PRIVATE_DATA_SOURCES_MANIFEST_ENV} is not valid JSON. Republish the app.`);
24
+ }
25
+ if (!Array.isArray(parsed)) {
26
+ throw new Error(`${PRIVATE_DATA_SOURCES_MANIFEST_ENV} is not a list of private data sources. Republish the app.`);
21
27
  }
22
- return Array.isArray(parsed)
23
- ? parsed.filter(
24
- (entry): entry is PrivateDataSourceManifestEntry =>
25
- entry !== null && typeof entry === "object",
26
- )
27
- : [];
28
+ const entries = parsed.filter(
29
+ (entry): entry is PrivateDataSourceManifestEntry => entry !== null && typeof entry === "object",
30
+ );
31
+ parsedManifest = { raw, entries };
32
+ return entries;
28
33
  }
29
34
 
30
35
  export function normalizePrivateDataSourceKey(value: unknown): string {
@@ -107,14 +112,13 @@ export function lookupPrivateDataSource(
107
112
  }
108
113
 
109
114
  export function privateDataSourceBinding(entry: PrivateDataSourceManifestEntry): unknown {
110
- const current = lookupPrivateDataSource(entry.name, entry.type);
111
- if (!current.bindingName) {
112
- throw new Error(`Private data source "${current.name}" has no Worker binding name`);
115
+ if (!entry.bindingName) {
116
+ throw new Error(`Private data source "${entry.name}" has no Worker binding name`);
113
117
  }
114
- const binding = workerEnvironment()[current.bindingName];
118
+ const binding = workerEnvironment()[entry.bindingName];
115
119
  if (!binding) {
116
120
  throw new Error(
117
- `Private data source binding "${current.bindingName}" is missing from the Worker environment`,
121
+ `Private data source binding "${entry.bindingName}" is missing from the Worker environment`,
118
122
  );
119
123
  }
120
124
  return binding;
@@ -1,8 +1,6 @@
1
- import {
2
- currentPrivateDataSource,
3
- normalizePrivateDataSourceKey,
4
- privateDataSourceReference,
5
- } from "./manifest.js";
1
+ import { createHash } from "node:crypto";
2
+
3
+ import { currentPrivateDataSource, privateDataSourceReference } from "./manifest.js";
6
4
  import { buildTcpPrivateDataSource } from "./tcp.js";
7
5
  import { installPrivateNodeNetAdapter, registerPrivateNodeNetRoute } from "./node-net-adapter.js";
8
6
  import type { PrivateDataSourceManifestEntry } from "./types.js";
@@ -26,9 +24,9 @@ export function mongodb(name: unknown) {
26
24
  const source = buildTcpPrivateDataSource(entry) as ReturnType<typeof buildTcpPrivateDataSource> & {
27
25
  connect: (options?: unknown) => unknown;
28
26
  };
29
- const driverHostname = `base44-private-${normalizePrivateDataSourceKey(
30
- entry.bindingName || entry.name || "mongodb",
31
- )}`;
27
+ // Hashed, not normalized: "my-db" and "my.db" must not share a route.
28
+ const hash = createHash("sha256").update(String(entry.bindingName || entry.name)).digest("hex").slice(0, 32);
29
+ const driverHostname = `base44-private-${hash}`;
32
30
 
33
31
  function registerRoute() {
34
32
  const current = currentPrivateDataSource(entry);
@@ -41,7 +39,10 @@ export function mongodb(name: unknown) {
41
39
  }
42
40
 
43
41
  const extension = {
44
- driverHost: driverHostname,
42
+ get driverHost() {
43
+ registerRoute();
44
+ return driverHostname;
45
+ },
45
46
  get connectionString() {
46
47
  const current = currentPrivateDataSource(entry);
47
48
  registerRoute();
@@ -18,7 +18,10 @@ export function oracle(name: unknown) {
18
18
  if (!serviceName || !/^[a-zA-Z0-9_.$#-]+$/.test(serviceName)) {
19
19
  throw new Error("Enter an Oracle service name using letters, numbers, underscores, dots, $, #, or hyphens.");
20
20
  }
21
- const port = source.port!;
21
+ const port = source.port;
22
+ if (typeof port !== "number") {
23
+ throw new Error(`Oracle private data source "${entry.name}" has no port. Set the port on the data source.`);
24
+ }
22
25
  registerPrivateNodeNetRoute(driverHost, port, {
23
26
  label: `Oracle private data source "${entry.name}"`,
24
27
  connect: () => source.connect(),
@@ -62,7 +62,7 @@ export function buildTcpPrivateDataSource(entry: PrivateDataSourceManifestEntry)
62
62
  return binding.connect(address, options);
63
63
  },
64
64
  get binding() {
65
- return privateDataSourceBinding(entry);
65
+ return privateDataSourceBinding(currentPrivateDataSource(entry));
66
66
  },
67
67
  });
68
68
  }
@@ -1,6 +1,6 @@
1
1
  import path from "node:path";
2
2
  import { fileURLToPath } from "node:url";
3
- import type { Plugin } from "vite";
3
+ import { normalizePath, type Plugin } from "vite";
4
4
 
5
5
  /**
6
6
  * Serves `base44:private-data-sources/<type>` to TanStack server code, so it
@@ -10,7 +10,7 @@ import type { Plugin } from "vite";
10
10
  * import { sqlserver } from "base44:private-data-sources/sqlserver";
11
11
  *
12
12
  * The modules are this package's own copy of the backend-function adapters
13
- * (`@base44/functions-compiler`), reading the worker's bindings and manifest off
13
+ * (`@base44/functions-compiler`, forked at base44/cli ac98feb), reading the worker's bindings and manifest off
14
14
  * `env` from `cloudflare:workers`. Each specifier resolves to the compiled file
15
15
  * so Vite bundles it like any source module.
16
16
  *
@@ -18,7 +18,8 @@ import type { Plugin } from "vite";
18
18
  * lookup throws, saying the source is available on the published app.
19
19
  */
20
20
 
21
- const PREFIX = "base44:private-data-sources/";
21
+ const NAMESPACE = "base44:private-data-sources";
22
+ const PREFIX = `${NAMESPACE}/`;
22
23
  const SOURCE_TYPES = new Set([
23
24
  "elasticsearch",
24
25
  "http",
@@ -30,26 +31,47 @@ const SOURCE_TYPES = new Set([
30
31
  "redis",
31
32
  "sqlserver",
32
33
  ]);
34
+ const IMPORTER_QUERY = "?importer=";
33
35
 
34
36
  const MODULES_DIR = path.join(path.dirname(fileURLToPath(import.meta.url)), "private-data-sources");
35
37
 
38
+ function failureReason(specifier: string, environment: string | undefined): string | null {
39
+ const sourceType = specifier.startsWith(PREFIX) ? specifier.slice(PREFIX.length) : "";
40
+ if (!SOURCE_TYPES.has(sourceType)) {
41
+ return `"${specifier}" is not a private data source type. Use one of: ${[...SOURCE_TYPES].map((t) => PREFIX + t).join(", ")}.`;
42
+ }
43
+ // The source carries credentials, so it must never reach the browser bundle.
44
+ if (environment === "client") {
45
+ return `"${specifier}" is server-only. Move this import into a server function or server route.`;
46
+ }
47
+ return null;
48
+ }
49
+
36
50
  export function privateDataSourcesPlugin(): Plugin {
37
51
  return {
38
52
  name: "base44-private-data-sources",
39
53
  // Ahead of Vite's own resolution so the bare scheme is never read as a URL.
40
54
  enforce: "pre",
41
55
 
42
- resolveId(id) {
43
- if (!id.startsWith(PREFIX)) return null;
44
- const sourceType = id.slice(PREFIX.length);
45
- if (!SOURCE_TYPES.has(sourceType)) {
46
- this.error(`"${id}" is not a private data source type. Use one of: ${[...SOURCE_TYPES].join(", ")}.`);
47
- }
48
- // The source carries credentials, so it must never reach the browser bundle.
49
- if (this.environment?.name === "client") {
50
- this.error(`"${id}" is server-only. Move this import into a server function or server route.`);
56
+ // Like base44-runtime: errors are raised in `load`, never `resolveId`, so the
57
+ // dep scan of not-yet-stripped server code in the client environment survives.
58
+ resolveId(id, importer) {
59
+ if (id !== NAMESPACE && !id.startsWith(PREFIX)) return null;
60
+ if (!failureReason(id, this.environment?.name)) {
61
+ return normalizePath(path.join(MODULES_DIR, `${id.slice(PREFIX.length)}.js`));
51
62
  }
52
- return path.join(MODULES_DIR, `${sourceType}.js`);
63
+ const virtual = `\0${id}`;
64
+ if (!importer) return virtual;
65
+ return `${virtual}${IMPORTER_QUERY}${Buffer.from(importer.split("?")[0]!).toString("base64url")}`;
66
+ },
67
+
68
+ load(id) {
69
+ if (!id.startsWith("\0")) return null;
70
+ const [specifier = "", importer] = id.slice(1).split(IMPORTER_QUERY);
71
+ if (specifier !== NAMESPACE && !specifier.startsWith(PREFIX)) return null;
72
+ const from = importer ? ` Imported from ${Buffer.from(importer, "base64url").toString()}.` : "";
73
+ const reason = failureReason(specifier, this.environment?.name);
74
+ this.error(`${reason ?? `"${specifier}" cannot be loaded here.`}${from}`);
53
75
  },
54
76
  };
55
77
  }