@base44-preview/vite-plugin 1.0.48-pr.141.1a49563 → 1.0.48-pr.142.9fcc12e
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/README.md +24 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/private-data-sources/build-http.d.ts +9 -0
- package/dist/private-data-sources/build-http.d.ts.map +1 -0
- package/dist/private-data-sources/build-http.js +38 -0
- package/dist/private-data-sources/build-http.js.map +1 -0
- package/dist/private-data-sources/elasticsearch.d.ts +8 -0
- package/dist/private-data-sources/elasticsearch.d.ts.map +1 -0
- package/dist/private-data-sources/elasticsearch.js +6 -0
- package/dist/private-data-sources/elasticsearch.js.map +1 -0
- package/dist/private-data-sources/http-url.d.ts +10 -0
- package/dist/private-data-sources/http-url.d.ts.map +1 -0
- package/dist/private-data-sources/http-url.js +20 -0
- package/dist/private-data-sources/http-url.js.map +1 -0
- package/dist/private-data-sources/http.d.ts +8 -0
- package/dist/private-data-sources/http.d.ts.map +1 -0
- package/dist/private-data-sources/http.js +6 -0
- package/dist/private-data-sources/http.js.map +1 -0
- package/dist/private-data-sources/hyperdrive.d.ts +28 -0
- package/dist/private-data-sources/hyperdrive.d.ts.map +1 -0
- package/dist/private-data-sources/hyperdrive.js +39 -0
- package/dist/private-data-sources/hyperdrive.js.map +1 -0
- package/dist/private-data-sources/ioredis-adapter.d.ts +35 -0
- package/dist/private-data-sources/ioredis-adapter.d.ts.map +1 -0
- package/dist/private-data-sources/ioredis-adapter.js +203 -0
- package/dist/private-data-sources/ioredis-adapter.js.map +1 -0
- package/dist/private-data-sources/manifest.d.ts +7 -0
- package/dist/private-data-sources/manifest.d.ts.map +1 -0
- package/dist/private-data-sources/manifest.js +95 -0
- package/dist/private-data-sources/manifest.js.map +1 -0
- package/dist/private-data-sources/mariadb.d.ts +14 -0
- package/dist/private-data-sources/mariadb.d.ts.map +1 -0
- package/dist/private-data-sources/mariadb.js +6 -0
- package/dist/private-data-sources/mariadb.js.map +1 -0
- package/dist/private-data-sources/mongodb.d.ts +24 -0
- package/dist/private-data-sources/mongodb.d.ts.map +1 -0
- package/dist/private-data-sources/mongodb.js +52 -0
- package/dist/private-data-sources/mongodb.js.map +1 -0
- package/dist/private-data-sources/mysql.d.ts +14 -0
- package/dist/private-data-sources/mysql.d.ts.map +1 -0
- package/dist/private-data-sources/mysql.js +6 -0
- package/dist/private-data-sources/mysql.js.map +1 -0
- package/dist/private-data-sources/node-net-adapter.d.ts +20 -0
- package/dist/private-data-sources/node-net-adapter.d.ts.map +1 -0
- package/dist/private-data-sources/node-net-adapter.js +219 -0
- package/dist/private-data-sources/node-net-adapter.js.map +1 -0
- package/dist/private-data-sources/oracle.d.ts +20 -0
- package/dist/private-data-sources/oracle.d.ts.map +1 -0
- package/dist/private-data-sources/oracle.js +32 -0
- package/dist/private-data-sources/oracle.js.map +1 -0
- package/dist/private-data-sources/postgres.d.ts +14 -0
- package/dist/private-data-sources/postgres.d.ts.map +1 -0
- package/dist/private-data-sources/postgres.js +6 -0
- package/dist/private-data-sources/postgres.js.map +1 -0
- package/dist/private-data-sources/redis-auth.d.ts +3 -0
- package/dist/private-data-sources/redis-auth.d.ts.map +1 -0
- package/dist/private-data-sources/redis-auth.js +72 -0
- package/dist/private-data-sources/redis-auth.js.map +1 -0
- package/dist/private-data-sources/redis.d.ts +46 -0
- package/dist/private-data-sources/redis.d.ts.map +1 -0
- package/dist/private-data-sources/redis.js +27 -0
- package/dist/private-data-sources/redis.js.map +1 -0
- package/dist/private-data-sources/runtime-environment.d.ts +2 -0
- package/dist/private-data-sources/runtime-environment.d.ts.map +1 -0
- package/dist/private-data-sources/runtime-environment.js +6 -0
- package/dist/private-data-sources/runtime-environment.js.map +1 -0
- package/dist/private-data-sources/sqlserver.d.ts +18 -0
- package/dist/private-data-sources/sqlserver.d.ts.map +1 -0
- package/dist/private-data-sources/sqlserver.js +13 -0
- package/dist/private-data-sources/sqlserver.js.map +1 -0
- package/dist/private-data-sources/tcp.d.ts +29 -0
- package/dist/private-data-sources/tcp.d.ts.map +1 -0
- package/dist/private-data-sources/tcp.js +63 -0
- package/dist/private-data-sources/tcp.js.map +1 -0
- package/dist/private-data-sources/tedious-adapter.d.ts +2 -0
- package/dist/private-data-sources/tedious-adapter.d.ts.map +1 -0
- package/dist/private-data-sources/tedious-adapter.js +63 -0
- package/dist/private-data-sources/tedious-adapter.js.map +1 -0
- package/dist/private-data-sources/types.d.ts +27 -0
- package/dist/private-data-sources/types.d.ts.map +1 -0
- package/dist/private-data-sources/types.js +2 -0
- package/dist/private-data-sources/types.js.map +1 -0
- package/dist/private-data-sources-plugin.d.ts +3 -0
- package/dist/private-data-sources-plugin.d.ts.map +1 -0
- package/dist/private-data-sources-plugin.js +51 -0
- package/dist/private-data-sources-plugin.js.map +1 -0
- package/package.json +1 -1
- package/src/index.ts +3 -0
- package/src/private-data-sources/build-http.ts +51 -0
- package/src/private-data-sources/cloudflare-workers.d.ts +3 -0
- package/src/private-data-sources/elasticsearch.ts +8 -0
- package/src/private-data-sources/http-url.ts +23 -0
- package/src/private-data-sources/http.ts +6 -0
- package/src/private-data-sources/hyperdrive.ts +48 -0
- package/src/private-data-sources/ioredis-adapter.ts +229 -0
- package/src/private-data-sources/manifest.ts +127 -0
- package/src/private-data-sources/mariadb.ts +8 -0
- package/src/private-data-sources/mongodb.ts +70 -0
- package/src/private-data-sources/mysql.ts +8 -0
- package/src/private-data-sources/node-net-adapter.ts +247 -0
- package/src/private-data-sources/oracle.ts +34 -0
- package/src/private-data-sources/postgres.ts +8 -0
- package/src/private-data-sources/redis-auth.ts +83 -0
- package/src/private-data-sources/redis.ts +47 -0
- package/src/private-data-sources/runtime-environment.ts +6 -0
- package/src/private-data-sources/sqlserver.ts +22 -0
- package/src/private-data-sources/tcp.ts +86 -0
- package/src/private-data-sources/tedious-adapter.ts +67 -0
- package/src/private-data-sources/types.ts +29 -0
- package/src/private-data-sources-plugin.ts +55 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { workerEnvironment } from "./runtime-environment.js";
|
|
2
|
+
const PRIVATE_DATA_SOURCES_MANIFEST_ENV = "BASE44_PRIVATE_DATA_SOURCES";
|
|
3
|
+
function readStringVar(key) {
|
|
4
|
+
const value = workerEnvironment()[key];
|
|
5
|
+
return typeof value === "string" ? value : undefined;
|
|
6
|
+
}
|
|
7
|
+
// 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
|
+
function parsePrivateDataSourceManifest() {
|
|
10
|
+
const raw = readStringVar(PRIVATE_DATA_SOURCES_MANIFEST_ENV);
|
|
11
|
+
if (!raw)
|
|
12
|
+
return [];
|
|
13
|
+
let parsed;
|
|
14
|
+
try {
|
|
15
|
+
parsed = JSON.parse(raw);
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return [];
|
|
19
|
+
}
|
|
20
|
+
return Array.isArray(parsed)
|
|
21
|
+
? parsed.filter((entry) => entry !== null && typeof entry === "object")
|
|
22
|
+
: [];
|
|
23
|
+
}
|
|
24
|
+
export function normalizePrivateDataSourceKey(value) {
|
|
25
|
+
return String(value || "")
|
|
26
|
+
.trim()
|
|
27
|
+
.toLowerCase()
|
|
28
|
+
.replace(/[^a-z0-9]+/g, "_")
|
|
29
|
+
.replace(/^_+|_+$/g, "");
|
|
30
|
+
}
|
|
31
|
+
export function privateDataSourceReference(requestedName, expectedType) {
|
|
32
|
+
return lookupPrivateDataSource(requestedName, expectedType);
|
|
33
|
+
}
|
|
34
|
+
function privateDataSourceMatchRank(entry, requestedName) {
|
|
35
|
+
const requested = String(requestedName || "");
|
|
36
|
+
const normalizedRequested = normalizePrivateDataSourceKey(requested);
|
|
37
|
+
const candidates = [
|
|
38
|
+
{ value: entry.name, rank: 0 },
|
|
39
|
+
{ value: entry.bindingName, rank: 1 },
|
|
40
|
+
{ value: entry.name, rank: 2, normalized: true },
|
|
41
|
+
{ value: entry.bindingName, rank: 3, normalized: true },
|
|
42
|
+
];
|
|
43
|
+
let bestRank = null;
|
|
44
|
+
for (const candidate of candidates) {
|
|
45
|
+
if (typeof candidate.value !== "string")
|
|
46
|
+
continue;
|
|
47
|
+
const matches = candidate.normalized
|
|
48
|
+
? normalizePrivateDataSourceKey(candidate.value) === normalizedRequested
|
|
49
|
+
: candidate.value === requested;
|
|
50
|
+
if (matches && (bestRank === null || candidate.rank < bestRank)) {
|
|
51
|
+
bestRank = candidate.rank;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return bestRank;
|
|
55
|
+
}
|
|
56
|
+
function privateDataSourceMatchesExpectedType(entry, expectedType) {
|
|
57
|
+
return entry.type === expectedType || (expectedType === "hyperdrive" && entry.bindingKind === "hyperdrive");
|
|
58
|
+
}
|
|
59
|
+
export function lookupPrivateDataSource(requestedName, expectedType) {
|
|
60
|
+
const matches = parsePrivateDataSourceManifest()
|
|
61
|
+
.map((entry) => ({ entry, rank: privateDataSourceMatchRank(entry, requestedName) }))
|
|
62
|
+
.filter((match) => match.rank !== null)
|
|
63
|
+
.sort((a, b) => a.rank - b.rank);
|
|
64
|
+
if (matches.length === 0) {
|
|
65
|
+
throw new Error(`Private data source "${requestedName}" is not bound to this app. Private data sources are available on the published app, not in the editor's live preview`);
|
|
66
|
+
}
|
|
67
|
+
const typeMatches = expectedType
|
|
68
|
+
? matches.filter((candidate) => privateDataSourceMatchesExpectedType(candidate.entry, expectedType))
|
|
69
|
+
: matches;
|
|
70
|
+
const [best] = typeMatches;
|
|
71
|
+
if (!best) {
|
|
72
|
+
throw new Error(`Private data source "${requestedName}" is not a ${expectedType} data source`);
|
|
73
|
+
}
|
|
74
|
+
const bestMatches = typeMatches.filter((candidate) => candidate.rank === best.rank);
|
|
75
|
+
if (bestMatches.length > 1) {
|
|
76
|
+
const kind = expectedType ? ` ${expectedType}` : "";
|
|
77
|
+
throw new Error(`Private data source "${requestedName}" is ambiguous: ${bestMatches.length}${kind} data sources match this name`);
|
|
78
|
+
}
|
|
79
|
+
return best.entry;
|
|
80
|
+
}
|
|
81
|
+
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`);
|
|
85
|
+
}
|
|
86
|
+
const binding = workerEnvironment()[current.bindingName];
|
|
87
|
+
if (!binding) {
|
|
88
|
+
throw new Error(`Private data source binding "${current.bindingName}" is missing from the Worker environment`);
|
|
89
|
+
}
|
|
90
|
+
return binding;
|
|
91
|
+
}
|
|
92
|
+
export function currentPrivateDataSource(entry) {
|
|
93
|
+
return lookupPrivateDataSource(entry.name, entry.type);
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/private-data-sources/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare function mariadb(name: unknown): Readonly<{
|
|
2
|
+
name: string | undefined;
|
|
3
|
+
type: string | undefined;
|
|
4
|
+
readonly bindingName: string | undefined;
|
|
5
|
+
readonly connectionString: unknown;
|
|
6
|
+
readonly host: unknown;
|
|
7
|
+
readonly port: unknown;
|
|
8
|
+
readonly user: unknown;
|
|
9
|
+
readonly username: unknown;
|
|
10
|
+
readonly password: unknown;
|
|
11
|
+
readonly database: unknown;
|
|
12
|
+
readonly binding: Record<string, unknown>;
|
|
13
|
+
}>;
|
|
14
|
+
//# sourceMappingURL=mariadb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mariadb.d.ts","sourceRoot":"","sources":["../../src/private-data-sources/mariadb.ts"],"names":[],"mappings":"AAGA,wBAAgB,OAAO,CAAC,IAAI,EAAE,OAAO;;;;;;;;;;;;GAIpC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { buildHyperdrivePrivateDataSource } from "./hyperdrive.js";
|
|
2
|
+
import { privateDataSourceReference } from "./manifest.js";
|
|
3
|
+
export function mariadb(name) {
|
|
4
|
+
return buildHyperdrivePrivateDataSource(privateDataSourceReference(name, "mariadb"));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=mariadb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mariadb.js","sourceRoot":"","sources":["../../src/private-data-sources/mariadb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAE3D,MAAM,UAAU,OAAO,CAAC,IAAa;IACnC,OAAO,gCAAgC,CACrC,0BAA0B,CAAC,IAAI,EAAE,SAAS,CAAC,CAC5C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare function mongodb(name: unknown): Readonly<Readonly<{
|
|
2
|
+
name: string | undefined;
|
|
3
|
+
type: string | undefined;
|
|
4
|
+
readonly bindingName: string | undefined;
|
|
5
|
+
readonly host: string | undefined;
|
|
6
|
+
readonly port: number | undefined;
|
|
7
|
+
readonly database: string | undefined;
|
|
8
|
+
readonly username: string | undefined;
|
|
9
|
+
readonly user: string | undefined;
|
|
10
|
+
readonly password: string | undefined;
|
|
11
|
+
connect(options?: unknown): unknown;
|
|
12
|
+
readonly binding: unknown;
|
|
13
|
+
}> & {
|
|
14
|
+
connect: (options?: unknown) => unknown;
|
|
15
|
+
} & {
|
|
16
|
+
driverHost: string;
|
|
17
|
+
readonly connectionString: string;
|
|
18
|
+
readonly uri: string;
|
|
19
|
+
mongoClientOptions(options?: Record<string, unknown>): Readonly<{
|
|
20
|
+
directConnection: true;
|
|
21
|
+
serverSelectionTimeoutMS: 5000;
|
|
22
|
+
}>;
|
|
23
|
+
}>;
|
|
24
|
+
//# sourceMappingURL=mongodb.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { currentPrivateDataSource, normalizePrivateDataSourceKey, privateDataSourceReference, } from "./manifest.js";
|
|
2
|
+
import { buildTcpPrivateDataSource } from "./tcp.js";
|
|
3
|
+
import { installPrivateNodeNetAdapter, registerPrivateNodeNetRoute } from "./node-net-adapter.js";
|
|
4
|
+
function encodeMongoConnectionPart(value) {
|
|
5
|
+
return encodeURIComponent(String(value ?? ""));
|
|
6
|
+
}
|
|
7
|
+
function buildMongoConnectionString(entry, hostname) {
|
|
8
|
+
const username = entry.username ? encodeMongoConnectionPart(entry.username) : "";
|
|
9
|
+
const password = entry.password ? encodeMongoConnectionPart(entry.password) : "";
|
|
10
|
+
const auth = username ? `${username}${password ? `:${password}` : ""}@` : "";
|
|
11
|
+
const database = entry.database ? `/${encodeMongoConnectionPart(entry.database)}` : "";
|
|
12
|
+
const port = typeof entry.port === "number" ? entry.port : 27017;
|
|
13
|
+
return `mongodb://${auth}${hostname}:${port}${database}?directConnection=true`;
|
|
14
|
+
}
|
|
15
|
+
export function mongodb(name) {
|
|
16
|
+
installPrivateNodeNetAdapter();
|
|
17
|
+
const entry = privateDataSourceReference(name, "mongodb");
|
|
18
|
+
const source = buildTcpPrivateDataSource(entry);
|
|
19
|
+
const driverHostname = `base44-private-${normalizePrivateDataSourceKey(entry.bindingName || entry.name || "mongodb")}`;
|
|
20
|
+
function registerRoute() {
|
|
21
|
+
const current = currentPrivateDataSource(entry);
|
|
22
|
+
const port = typeof current.port === "number" ? current.port : 27017;
|
|
23
|
+
const label = `MongoDB private data source "${current.name || current.bindingName || driverHostname}"`;
|
|
24
|
+
registerPrivateNodeNetRoute(driverHostname, port, {
|
|
25
|
+
label,
|
|
26
|
+
connect: () => source.connect(),
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
const extension = {
|
|
30
|
+
driverHost: driverHostname,
|
|
31
|
+
get connectionString() {
|
|
32
|
+
const current = currentPrivateDataSource(entry);
|
|
33
|
+
registerRoute();
|
|
34
|
+
return buildMongoConnectionString(current, driverHostname);
|
|
35
|
+
},
|
|
36
|
+
get uri() {
|
|
37
|
+
const current = currentPrivateDataSource(entry);
|
|
38
|
+
registerRoute();
|
|
39
|
+
return buildMongoConnectionString(current, driverHostname);
|
|
40
|
+
},
|
|
41
|
+
mongoClientOptions(options) {
|
|
42
|
+
registerRoute();
|
|
43
|
+
return Object.freeze({
|
|
44
|
+
directConnection: true,
|
|
45
|
+
serverSelectionTimeoutMS: 5000,
|
|
46
|
+
...options,
|
|
47
|
+
});
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
return Object.freeze(Object.defineProperties(extension, Object.getOwnPropertyDescriptors(source)));
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=mongodb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mongodb.js","sourceRoot":"","sources":["../../src/private-data-sources/mongodb.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare function mysql(name: unknown): Readonly<{
|
|
2
|
+
name: string | undefined;
|
|
3
|
+
type: string | undefined;
|
|
4
|
+
readonly bindingName: string | undefined;
|
|
5
|
+
readonly connectionString: unknown;
|
|
6
|
+
readonly host: unknown;
|
|
7
|
+
readonly port: unknown;
|
|
8
|
+
readonly user: unknown;
|
|
9
|
+
readonly username: unknown;
|
|
10
|
+
readonly password: unknown;
|
|
11
|
+
readonly database: unknown;
|
|
12
|
+
readonly binding: Record<string, unknown>;
|
|
13
|
+
}>;
|
|
14
|
+
//# sourceMappingURL=mysql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql.d.ts","sourceRoot":"","sources":["../../src/private-data-sources/mysql.ts"],"names":[],"mappings":"AAGA,wBAAgB,KAAK,CAAC,IAAI,EAAE,OAAO;;;;;;;;;;;;GAIlC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { buildHyperdrivePrivateDataSource } from "./hyperdrive.js";
|
|
2
|
+
import { privateDataSourceReference } from "./manifest.js";
|
|
3
|
+
export function mysql(name) {
|
|
4
|
+
return buildHyperdrivePrivateDataSource(privateDataSourceReference(name, "mysql"));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=mysql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql.js","sourceRoot":"","sources":["../../src/private-data-sources/mysql.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAE3D,MAAM,UAAU,KAAK,CAAC,IAAa;IACjC,OAAO,gCAAgC,CACrC,0BAA0B,CAAC,IAAI,EAAE,OAAO,CAAC,CAC1C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Duplex } from "node:stream";
|
|
2
|
+
export interface NodeNetSocket extends Duplex {
|
|
3
|
+
connecting: boolean;
|
|
4
|
+
remoteAddress?: string;
|
|
5
|
+
remotePort?: number;
|
|
6
|
+
setNoDelay(noDelay?: boolean): NodeNetSocket;
|
|
7
|
+
setKeepAlive(enable?: boolean, initialDelay?: number): NodeNetSocket;
|
|
8
|
+
setTimeout(timeout: number, callback?: () => void): NodeNetSocket;
|
|
9
|
+
}
|
|
10
|
+
interface PrivateNodeNetRoute {
|
|
11
|
+
label: string;
|
|
12
|
+
connect: () => unknown;
|
|
13
|
+
}
|
|
14
|
+
export declare function registerPrivateNodeNetRoute(hostname: string, port: number, route: PrivateNodeNetRoute): void;
|
|
15
|
+
export declare function installPrivateNodeNetAdapter(): void;
|
|
16
|
+
export declare function buildNodeNetSocket(socket: unknown, label: string, options?: {
|
|
17
|
+
deferConnectEvent?: boolean;
|
|
18
|
+
}): NodeNetSocket;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=node-net-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-net-adapter.d.ts","sourceRoot":"","sources":["../../src/private-data-sources/node-net-adapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAKrC,MAAM,WAAW,aAAc,SAAQ,MAAM;IAC3C,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;IAC7C,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IACrE,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,aAAa,CAAC;CACnE;AAED,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,OAAO,CAAC;CACxB;AAcD,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,QAErG;AA+BD,wBAAgB,4BAA4B,SAyB3C;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC5C,aAAa,CAqJf"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { Buffer } from "node:buffer";
|
|
2
|
+
import nodeNet from "node:net";
|
|
3
|
+
import { Duplex } from "node:stream";
|
|
4
|
+
import { isCloudflareTcpSocket } from "./tcp.js";
|
|
5
|
+
const privateNodeNetRoutes = new Map();
|
|
6
|
+
function exactNodeBuffer(value) {
|
|
7
|
+
const bytes = new Uint8Array(value.byteLength);
|
|
8
|
+
bytes.set(value);
|
|
9
|
+
return Buffer.from(bytes.buffer);
|
|
10
|
+
}
|
|
11
|
+
function nodeNetRouteKey(hostname, port) {
|
|
12
|
+
return `${hostname.toLowerCase()}:${port}`;
|
|
13
|
+
}
|
|
14
|
+
export function registerPrivateNodeNetRoute(hostname, port, route) {
|
|
15
|
+
privateNodeNetRoutes.set(nodeNetRouteKey(hostname, port), route);
|
|
16
|
+
}
|
|
17
|
+
function parseNodeNetCreateConnectionAddress(args) {
|
|
18
|
+
const [first, second] = args;
|
|
19
|
+
if (first && typeof first === "object") {
|
|
20
|
+
const options = first;
|
|
21
|
+
if (typeof options.path === "string")
|
|
22
|
+
return null;
|
|
23
|
+
const port = typeof options.port === "number" ? options.port : Number(options.port);
|
|
24
|
+
if (!Number.isFinite(port))
|
|
25
|
+
return null;
|
|
26
|
+
const hostname = typeof options.host === "string"
|
|
27
|
+
? options.host
|
|
28
|
+
: typeof options.hostname === "string"
|
|
29
|
+
? options.hostname
|
|
30
|
+
: "localhost";
|
|
31
|
+
return { hostname, port };
|
|
32
|
+
}
|
|
33
|
+
if (typeof first === "number") {
|
|
34
|
+
const hostname = typeof second === "string" ? second : "localhost";
|
|
35
|
+
return { hostname, port: first };
|
|
36
|
+
}
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
function parseNodeNetConnectCallback(args) {
|
|
40
|
+
const callback = args.find((arg) => typeof arg === "function");
|
|
41
|
+
return callback;
|
|
42
|
+
}
|
|
43
|
+
export function installPrivateNodeNetAdapter() {
|
|
44
|
+
const netModule = nodeNet;
|
|
45
|
+
if (netModule.__base44PrivateDataSourceAdapterInstalled)
|
|
46
|
+
return;
|
|
47
|
+
const originalCreateConnection = netModule.createConnection.bind(netModule);
|
|
48
|
+
const createConnection = (...args) => {
|
|
49
|
+
const address = parseNodeNetCreateConnectionAddress(args);
|
|
50
|
+
const route = address
|
|
51
|
+
? privateNodeNetRoutes.get(nodeNetRouteKey(address.hostname, address.port))
|
|
52
|
+
: undefined;
|
|
53
|
+
if (!route) {
|
|
54
|
+
return originalCreateConnection(...args);
|
|
55
|
+
}
|
|
56
|
+
const socket = buildNodeNetSocket(route.connect(), route.label);
|
|
57
|
+
const callback = parseNodeNetConnectCallback(args);
|
|
58
|
+
if (callback)
|
|
59
|
+
socket.once("connect", callback);
|
|
60
|
+
return socket;
|
|
61
|
+
};
|
|
62
|
+
netModule.createConnection = createConnection;
|
|
63
|
+
netModule.connect = createConnection;
|
|
64
|
+
netModule.__base44PrivateDataSourceAdapterInstalled = true;
|
|
65
|
+
}
|
|
66
|
+
export function buildNodeNetSocket(socket, label, options = {}) {
|
|
67
|
+
let cloudflareSocket;
|
|
68
|
+
let reader = null;
|
|
69
|
+
let writer = null;
|
|
70
|
+
let closed = false;
|
|
71
|
+
let connectEmitted = false;
|
|
72
|
+
let readableEnded = false;
|
|
73
|
+
let timeout = null;
|
|
74
|
+
let writeChain = Promise.resolve();
|
|
75
|
+
const socketReady = Promise.resolve(socket).then((resolved) => {
|
|
76
|
+
if (!isCloudflareTcpSocket(resolved)) {
|
|
77
|
+
throw new Error(`${label} did not return a readable/writable TCP socket`);
|
|
78
|
+
}
|
|
79
|
+
cloudflareSocket = resolved;
|
|
80
|
+
if (closed)
|
|
81
|
+
resolved.close?.();
|
|
82
|
+
return resolved;
|
|
83
|
+
});
|
|
84
|
+
function clearTimer() {
|
|
85
|
+
if (!timeout)
|
|
86
|
+
return;
|
|
87
|
+
clearTimeout(timeout);
|
|
88
|
+
timeout = null;
|
|
89
|
+
}
|
|
90
|
+
function releaseLocks() {
|
|
91
|
+
try {
|
|
92
|
+
reader?.releaseLock();
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// Ignore release errors when the stream is already closed.
|
|
96
|
+
}
|
|
97
|
+
reader = null;
|
|
98
|
+
try {
|
|
99
|
+
writer?.releaseLock();
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
// Ignore release errors when the stream is already closed.
|
|
103
|
+
}
|
|
104
|
+
writer = null;
|
|
105
|
+
}
|
|
106
|
+
function endReadable() {
|
|
107
|
+
if (readableEnded)
|
|
108
|
+
return;
|
|
109
|
+
readableEnded = true;
|
|
110
|
+
stream.push(null);
|
|
111
|
+
}
|
|
112
|
+
const stream = new Duplex({
|
|
113
|
+
read() {
|
|
114
|
+
// Data is pushed from the Cloudflare readable stream below.
|
|
115
|
+
},
|
|
116
|
+
write(chunk, _encoding, callback) {
|
|
117
|
+
const bytes = chunk instanceof Uint8Array ? chunk : Buffer.from(chunk);
|
|
118
|
+
writeChain = writeChain
|
|
119
|
+
.then(async () => {
|
|
120
|
+
const connectedSocket = await socketReady;
|
|
121
|
+
if (closed)
|
|
122
|
+
throw new Error(`${label} connection is closed`);
|
|
123
|
+
const activeWriter = writer ?? connectedSocket.writable.getWriter();
|
|
124
|
+
writer = activeWriter;
|
|
125
|
+
await activeWriter.write(bytes);
|
|
126
|
+
})
|
|
127
|
+
.then(() => callback(), (error) => callback(error instanceof Error ? error : new Error(String(error))));
|
|
128
|
+
},
|
|
129
|
+
final(callback) {
|
|
130
|
+
writeChain
|
|
131
|
+
.then(() => {
|
|
132
|
+
try {
|
|
133
|
+
cloudflareSocket?.close?.();
|
|
134
|
+
}
|
|
135
|
+
finally {
|
|
136
|
+
callback();
|
|
137
|
+
}
|
|
138
|
+
})
|
|
139
|
+
.catch((error) => callback(error instanceof Error ? error : new Error(String(error))));
|
|
140
|
+
},
|
|
141
|
+
destroy(error, callback) {
|
|
142
|
+
closed = true;
|
|
143
|
+
clearTimer();
|
|
144
|
+
try {
|
|
145
|
+
cloudflareSocket?.close?.();
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
// The stream is already being destroyed; surface the original error below.
|
|
149
|
+
}
|
|
150
|
+
releaseLocks();
|
|
151
|
+
callback(error);
|
|
152
|
+
},
|
|
153
|
+
});
|
|
154
|
+
stream.connecting = true;
|
|
155
|
+
stream.setNoDelay = () => stream;
|
|
156
|
+
stream.setKeepAlive = () => stream;
|
|
157
|
+
stream.setTimeout = (duration, callback) => {
|
|
158
|
+
clearTimer();
|
|
159
|
+
if (duration > 0) {
|
|
160
|
+
timeout = setTimeout(() => {
|
|
161
|
+
callback?.();
|
|
162
|
+
stream.emit("timeout");
|
|
163
|
+
}, duration);
|
|
164
|
+
}
|
|
165
|
+
return stream;
|
|
166
|
+
};
|
|
167
|
+
async function readLoop() {
|
|
168
|
+
const activeReader = reader ?? cloudflareSocket.readable.getReader();
|
|
169
|
+
reader = activeReader;
|
|
170
|
+
try {
|
|
171
|
+
while (!closed) {
|
|
172
|
+
const { value, done } = await activeReader.read();
|
|
173
|
+
if (done)
|
|
174
|
+
break;
|
|
175
|
+
if (value)
|
|
176
|
+
stream.push(exactNodeBuffer(value));
|
|
177
|
+
}
|
|
178
|
+
endReadable();
|
|
179
|
+
releaseLocks();
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
if (!closed)
|
|
183
|
+
stream.destroy(error instanceof Error ? error : new Error(String(error)));
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
function markConnected(info) {
|
|
187
|
+
if (closed || connectEmitted)
|
|
188
|
+
return;
|
|
189
|
+
connectEmitted = true;
|
|
190
|
+
const socketInfo = info;
|
|
191
|
+
if (typeof socketInfo?.remoteAddress === "string")
|
|
192
|
+
stream.remoteAddress = socketInfo.remoteAddress;
|
|
193
|
+
if (typeof socketInfo?.remotePort === "number")
|
|
194
|
+
stream.remotePort = socketInfo.remotePort;
|
|
195
|
+
stream.connecting = false;
|
|
196
|
+
stream.emit("connect");
|
|
197
|
+
readLoop();
|
|
198
|
+
}
|
|
199
|
+
function scheduleConnected(info) {
|
|
200
|
+
if (options.deferConnectEvent) {
|
|
201
|
+
setTimeout(() => markConnected(info), 0);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
markConnected(info);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
socketReady.then(async (connectedSocket) => {
|
|
208
|
+
connectedSocket.closed?.finally(() => {
|
|
209
|
+
closed = true;
|
|
210
|
+
clearTimer();
|
|
211
|
+
endReadable();
|
|
212
|
+
releaseLocks();
|
|
213
|
+
}).catch((error) => stream.destroy(error instanceof Error ? error : new Error(String(error))));
|
|
214
|
+
const info = await connectedSocket.opened;
|
|
215
|
+
scheduleConnected(info);
|
|
216
|
+
}).catch((error) => stream.destroy(error instanceof Error ? error : new Error(String(error))));
|
|
217
|
+
return stream;
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=node-net-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-net-adapter.js","sourceRoot":"","sources":["../../src/private-data-sources/node-net-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare function oracle(name: unknown): Readonly<Readonly<{
|
|
2
|
+
name: string | undefined;
|
|
3
|
+
type: string | undefined;
|
|
4
|
+
readonly bindingName: string | undefined;
|
|
5
|
+
readonly host: string | undefined;
|
|
6
|
+
readonly port: number | undefined;
|
|
7
|
+
readonly database: string | undefined;
|
|
8
|
+
readonly username: string | undefined;
|
|
9
|
+
readonly user: string | undefined;
|
|
10
|
+
readonly password: string | undefined;
|
|
11
|
+
connect(options?: unknown): unknown;
|
|
12
|
+
readonly binding: unknown;
|
|
13
|
+
}> & {
|
|
14
|
+
oracledbOptions(): Readonly<{
|
|
15
|
+
user: string | undefined;
|
|
16
|
+
password: string | undefined;
|
|
17
|
+
connectString: `(DESCRIPTION=(TRANSPORT_CONNECT_TIMEOUT=10)(CONNECT_TIMEOUT=15)(RETRY_COUNT=0)(ADDRESS=(PROTOCOL=TCP)(HOST=${string})(PORT=${number}))(CONNECT_DATA=(SERVICE_NAME=${string})(SERVER=DEDICATED)))`;
|
|
18
|
+
}>;
|
|
19
|
+
}>;
|
|
20
|
+
//# sourceMappingURL=oracle.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { privateDataSourceReference } from "./manifest.js";
|
|
3
|
+
import { installPrivateNodeNetAdapter, registerPrivateNodeNetRoute } from "./node-net-adapter.js";
|
|
4
|
+
import { buildTcpPrivateDataSource } from "./tcp.js";
|
|
5
|
+
export function oracle(name) {
|
|
6
|
+
installPrivateNodeNetAdapter();
|
|
7
|
+
const entry = privateDataSourceReference(name, "oracle");
|
|
8
|
+
const source = buildTcpPrivateDataSource(entry);
|
|
9
|
+
// A numeric alias avoids Oracle's client-side DNS lookup of private hostnames.
|
|
10
|
+
const hash = createHash("sha256").update(String(entry.name)).digest("hex").slice(0, 28);
|
|
11
|
+
const driverHost = `fd44:${hash.match(/.{4}/g).join(":")}`;
|
|
12
|
+
const extension = {
|
|
13
|
+
oracledbOptions() {
|
|
14
|
+
const serviceName = source.database;
|
|
15
|
+
if (!serviceName || !/^[a-zA-Z0-9_.$#-]+$/.test(serviceName)) {
|
|
16
|
+
throw new Error("Enter an Oracle service name using letters, numbers, underscores, dots, $, #, or hyphens.");
|
|
17
|
+
}
|
|
18
|
+
const port = source.port;
|
|
19
|
+
registerPrivateNodeNetRoute(driverHost, port, {
|
|
20
|
+
label: `Oracle private data source "${entry.name}"`,
|
|
21
|
+
connect: () => source.connect(),
|
|
22
|
+
});
|
|
23
|
+
return Object.freeze({
|
|
24
|
+
user: source.username,
|
|
25
|
+
password: source.password,
|
|
26
|
+
connectString: `(DESCRIPTION=(TRANSPORT_CONNECT_TIMEOUT=10)(CONNECT_TIMEOUT=15)(RETRY_COUNT=0)(ADDRESS=(PROTOCOL=TCP)(HOST=${driverHost})(PORT=${port}))(CONNECT_DATA=(SERVICE_NAME=${serviceName})(SERVER=DEDICATED)))`,
|
|
27
|
+
});
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
return Object.freeze(Object.defineProperties(extension, Object.getOwnPropertyDescriptors(source)));
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=oracle.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare function postgres(name: unknown): Readonly<{
|
|
2
|
+
name: string | undefined;
|
|
3
|
+
type: string | undefined;
|
|
4
|
+
readonly bindingName: string | undefined;
|
|
5
|
+
readonly connectionString: unknown;
|
|
6
|
+
readonly host: unknown;
|
|
7
|
+
readonly port: unknown;
|
|
8
|
+
readonly user: unknown;
|
|
9
|
+
readonly username: unknown;
|
|
10
|
+
readonly password: unknown;
|
|
11
|
+
readonly database: unknown;
|
|
12
|
+
readonly binding: Record<string, unknown>;
|
|
13
|
+
}>;
|
|
14
|
+
//# sourceMappingURL=postgres.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/private-data-sources/postgres.ts"],"names":[],"mappings":"AAGA,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO;;;;;;;;;;;;GAIrC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { buildHyperdrivePrivateDataSource } from "./hyperdrive.js";
|
|
2
|
+
import { privateDataSourceReference } from "./manifest.js";
|
|
3
|
+
export function postgres(name) {
|
|
4
|
+
return buildHyperdrivePrivateDataSource(privateDataSourceReference(name, "postgres"));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=postgres.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../src/private-data-sources/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAE3D,MAAM,UAAU,QAAQ,CAAC,IAAa;IACpC,OAAO,gCAAgC,CACrC,0BAA0B,CAAC,IAAI,EAAE,UAAU,CAAC,CAC7C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis-auth.d.ts","sourceRoot":"","sources":["../../src/private-data-sources/redis-auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AA4EtD,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,QAAQ,EAAE,MAAM,GAAG,SAAS,GAC3B,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAExC"}
|