@schemavaults/dbh 0.8.8 → 0.10.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.
- package/README.md +2 -2
- package/dist/adapters/abstract-schemavaults-dbh-adapter.d.ts +28 -0
- package/dist/adapters/abstract-schemavaults-dbh-adapter.js +50 -0
- package/dist/adapters/abstract-schemavaults-dbh-adapter.js.map +1 -0
- package/dist/adapters/schemavaults-postgres-adapter.d.ts +11 -0
- package/dist/adapters/schemavaults-postgres-adapter.js +31 -0
- package/dist/adapters/schemavaults-postgres-adapter.js.map +1 -0
- package/dist/adapters/schemavaults-postgres-neon-proxy-adapter.d.ts +18 -0
- package/dist/{schemavaults-postgres-neon-proxy-adapter.js → adapters/schemavaults-postgres-neon-proxy-adapter.js} +17 -63
- package/dist/adapters/schemavaults-postgres-neon-proxy-adapter.js.map +1 -0
- package/dist/create-dbh.d.ts +67 -0
- package/dist/create-dbh.js +17 -0
- package/dist/create-dbh.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/migrate.d.ts +1 -1
- package/dist/migrate.js +1 -1
- package/dist/migrate.js.map +1 -1
- package/dist/types/IDatabaseHandler.d.ts +5 -0
- package/dist/types/IDatabaseHandler.js +2 -0
- package/dist/types/IDatabaseHandler.js.map +1 -0
- package/dist/types/PostgresDatabaseCredentials.js.map +1 -0
- package/dist/types/SchemaVaultsAppEnvironment.js.map +1 -0
- package/dist/utils/buildPostgresUrl.d.ts +1 -1
- package/dist/utils/getAppEnvironment.d.ts +1 -1
- package/dist/utils/getAppEnvironment.js +1 -1
- package/dist/utils/getAppEnvironment.js.map +1 -1
- package/dist/utils/getPostgresNeonWsProxyUrl.d.ts +1 -1
- package/dist/utils/getPostgresNeonWsProxyUrl.js +1 -1
- package/dist/utils/getPostgresNeonWsProxyUrl.js.map +1 -1
- package/dist/utils/isDbhInDebugMode.d.ts +2 -2
- package/dist/utils/parseDatabaseCredentials.d.ts +1 -1
- package/dist/utils/parseDatabaseCredentialsFromEnv.d.ts +1 -1
- package/dist/utils/parsePort.d.ts +1 -0
- package/dist/utils/parsePort.js +21 -0
- package/dist/utils/parsePort.js.map +1 -0
- package/dist-cli/build-db-migrations.js +8 -8
- package/dist-cli/cli.js +24 -24
- package/eslint.config.cjs +3 -1
- package/package.json +8 -6
- package/dist/PostgresDatabaseCredentials.js.map +0 -1
- package/dist/SchemaVaultsAppEnvironment.js.map +0 -1
- package/dist/schemavaults-postgres-neon-proxy-adapter.d.ts +0 -33
- package/dist/schemavaults-postgres-neon-proxy-adapter.js.map +0 -1
- /package/dist/{PostgresDatabaseCredentials.d.ts → types/PostgresDatabaseCredentials.d.ts} +0 -0
- /package/dist/{PostgresDatabaseCredentials.js → types/PostgresDatabaseCredentials.js} +0 -0
- /package/dist/{SchemaVaultsAppEnvironment.d.ts → types/SchemaVaultsAppEnvironment.d.ts} +0 -0
- /package/dist/{SchemaVaultsAppEnvironment.js → types/SchemaVaultsAppEnvironment.js} +0 -0
package/README.md
CHANGED
|
@@ -20,12 +20,12 @@ Ensure that you have both `postgres` and a `postgres-ws-proxy` containers runnin
|
|
|
20
20
|
|
|
21
21
|
You'll likely want to replace the `build:` sections for the services in the e2e test example `.yml` file with `image:`. For example, use `image: postgres:17.7` for the `postgres` service. For the proxy, you can pull the docker image from `ghcr.io/schemavaults/dbh/postgres-ws-proxy`; use the version number equal to your `@schemavaults/dbh` npm package installation:
|
|
22
22
|
```md
|
|
23
|
-
# NPM Package: @schemavaults/dbh@0.
|
|
23
|
+
# NPM Package: @schemavaults/dbh@0.10.0 => ghcr.io/schemavaults/dbh/postgres-ws-proxy:0.10.0
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
### In your application server code
|
|
27
27
|
|
|
28
|
-
Set up an adapter.
|
|
28
|
+
Set up an adapter based on your requirements (whether you need serverless/edge access to the database or whether using a standard ).
|
|
29
29
|
|
|
30
30
|
For an example, see the e2e test file: [./src/tests/e2e/ConnectToLocalDatabase.test.ts](./src/tests/e2e/ConnectToLocalDatabase.test.ts)
|
|
31
31
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { BaseInitializablePostgresDatabaseCredentials, PostgresDatabaseCredentials } from "../types/PostgresDatabaseCredentials";
|
|
2
|
+
import { IDatabaseHandler } from "../types/IDatabaseHandler";
|
|
3
|
+
import { type SchemaVaultsAppEnvironment } from "../types/SchemaVaultsAppEnvironment";
|
|
4
|
+
import type { Dialect } from "kysely";
|
|
5
|
+
import { Kysely } from "kysely";
|
|
6
|
+
export interface IAbstractSchemaVaultsDbhAdapterConstructorOpts {
|
|
7
|
+
/**
|
|
8
|
+
* @description SchemaVaultsAppEnvironment.
|
|
9
|
+
* @example 'development' 'test' 'staging' 'production'
|
|
10
|
+
*/
|
|
11
|
+
environment: SchemaVaultsAppEnvironment;
|
|
12
|
+
/**
|
|
13
|
+
* @description PostgresDatabaseCredentials.
|
|
14
|
+
* @default loaded from environment variables if not supplied
|
|
15
|
+
*/
|
|
16
|
+
credentials?: BaseInitializablePostgresDatabaseCredentials;
|
|
17
|
+
}
|
|
18
|
+
export default abstract class AbstractSchemaVaultsDbhAdapter<KyselyTablesType extends object, TConstructorOpts extends IAbstractSchemaVaultsDbhAdapterConstructorOpts = IAbstractSchemaVaultsDbhAdapterConstructorOpts> implements IDatabaseHandler<KyselyTablesType> {
|
|
19
|
+
protected readonly credentials: PostgresDatabaseCredentials;
|
|
20
|
+
protected readonly kysely_db: Kysely<KyselyTablesType>;
|
|
21
|
+
protected readonly env: SchemaVaultsAppEnvironment;
|
|
22
|
+
protected readonly debug: boolean;
|
|
23
|
+
constructor(opts: TConstructorOpts);
|
|
24
|
+
protected abstract initializeDbDialect(opts: Omit<TConstructorOpts, "credentials" | "environment">): Dialect;
|
|
25
|
+
get db(): Kysely<KyselyTablesType>;
|
|
26
|
+
destroy(): Promise<void>;
|
|
27
|
+
[Symbol.asyncDispose](): Promise<void>;
|
|
28
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { isValidAppEnvironment, } from "../types/SchemaVaultsAppEnvironment";
|
|
2
|
+
import isDbhInDebugMode from "../utils/isDbhInDebugMode";
|
|
3
|
+
import parseDatabaseCredentials from "../utils/parseDatabaseCredentials";
|
|
4
|
+
import parseDatabaseCredentialsFromEnv from "../utils/parseDatabaseCredentialsFromEnv";
|
|
5
|
+
import { Kysely } from "kysely";
|
|
6
|
+
export default class AbstractSchemaVaultsDbhAdapter {
|
|
7
|
+
credentials;
|
|
8
|
+
kysely_db;
|
|
9
|
+
env;
|
|
10
|
+
debug;
|
|
11
|
+
constructor(opts) {
|
|
12
|
+
// parse SCHEMAVAULTS_APP_ENVIRONMENT
|
|
13
|
+
if (!isValidAppEnvironment(opts.environment)) {
|
|
14
|
+
throw new TypeError("Invalid SCHEMAVAULTS_APP_ENVIRONMENT!");
|
|
15
|
+
}
|
|
16
|
+
this.env = opts.environment;
|
|
17
|
+
// checks if 'SCHEMAVAULTS_DBH_DEBUG="true"' is set in env vars, or defaults to yes if in dev/test/staging environment
|
|
18
|
+
this.debug = isDbhInDebugMode(this.env);
|
|
19
|
+
let credentials = undefined;
|
|
20
|
+
if (opts.credentials) {
|
|
21
|
+
if (typeof opts.credentials !== "object") {
|
|
22
|
+
throw new TypeError("'credentials' is truthy but not an object!");
|
|
23
|
+
}
|
|
24
|
+
credentials = parseDatabaseCredentials(opts.credentials, this.debug);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
credentials = parseDatabaseCredentialsFromEnv(process.env, this.debug);
|
|
28
|
+
}
|
|
29
|
+
if (!credentials) {
|
|
30
|
+
throw new Error("Failed to parse database credentials from options or environment variables!");
|
|
31
|
+
}
|
|
32
|
+
this.credentials = credentials;
|
|
33
|
+
const dialect = this.initializeDbDialect(opts);
|
|
34
|
+
const kysely_configuration = {
|
|
35
|
+
dialect,
|
|
36
|
+
log: ["query", "error"],
|
|
37
|
+
};
|
|
38
|
+
this.kysely_db = new Kysely(kysely_configuration);
|
|
39
|
+
}
|
|
40
|
+
get db() {
|
|
41
|
+
return this.kysely_db;
|
|
42
|
+
}
|
|
43
|
+
async destroy() {
|
|
44
|
+
return await this.kysely_db.destroy();
|
|
45
|
+
}
|
|
46
|
+
async [Symbol.asyncDispose]() {
|
|
47
|
+
return await this.destroy();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=abstract-schemavaults-dbh-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abstract-schemavaults-dbh-adapter.js","sourceRoot":"","sources":["../../src/adapters/abstract-schemavaults-dbh-adapter.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,qBAAqB,GAEtB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,gBAAgB,MAAM,0BAA0B,CAAC;AACxD,OAAO,wBAAwB,MAAM,kCAAkC,CAAC;AACxE,OAAO,+BAA+B,MAAM,yCAAyC,CAAC;AAEtF,OAAO,EAAE,MAAM,EAAqB,MAAM,QAAQ,CAAC;AAgBnD,MAAM,CAAC,OAAO,OAAgB,8BAA8B;IAKvC,WAAW,CAA8B;IACzC,SAAS,CAA2B;IACpC,GAAG,CAA6B;IAChC,KAAK,CAAU;IAElC,YAAmB,IAAsB;QACvC,qCAAqC;QACrC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,WAAgD,CAAC;QAEjE,sHAAsH;QACtH,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAExC,IAAI,WAAW,GAA4C,SAAS,CAAC;QACrE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;gBACzC,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAC;YACpE,CAAC;YACD,WAAW,GAAG,wBAAwB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACN,WAAW,GAAG,+BAA+B,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAE/B,MAAM,OAAO,GAAY,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAExD,MAAM,oBAAoB,GAAiB;YACzC,OAAO;YACP,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;SACxB,CAAC;QAEF,IAAI,CAAC,SAAS,GAAG,IAAI,MAAM,CAAmB,oBAAoB,CAAC,CAAC;IACtE,CAAC;IAMD,IAAW,EAAE;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IACxC,CAAC;IAEM,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QAChC,OAAO,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { IDatabaseHandler } from "../types/IDatabaseHandler";
|
|
2
|
+
import type { IAbstractSchemaVaultsDbhAdapterConstructorOpts } from "../adapters/abstract-schemavaults-dbh-adapter";
|
|
3
|
+
import AbstractSchemaVaultsDbhAdapter from "../adapters/abstract-schemavaults-dbh-adapter";
|
|
4
|
+
import { type Dialect } from "kysely";
|
|
5
|
+
export interface ISchemaVaultsPostgresAdapterConstructorOpts extends IAbstractSchemaVaultsDbhAdapterConstructorOpts {
|
|
6
|
+
}
|
|
7
|
+
export declare class SchemaVaultsPostgresAdapter<KyselyTablesType extends object> extends AbstractSchemaVaultsDbhAdapter<KyselyTablesType, ISchemaVaultsPostgresAdapterConstructorOpts> implements IDatabaseHandler<KyselyTablesType> {
|
|
8
|
+
protected initializeDbDialect(): Dialect;
|
|
9
|
+
constructor(opts: ISchemaVaultsPostgresAdapterConstructorOpts);
|
|
10
|
+
}
|
|
11
|
+
export default SchemaVaultsPostgresAdapter;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// schemavaults-postgres-adapter.ts
|
|
2
|
+
// This file sets up kysely to connect to postgres
|
|
3
|
+
import parsePort from "../utils/parsePort";
|
|
4
|
+
import AbstractSchemaVaultsDbhAdapter from "../adapters/abstract-schemavaults-dbh-adapter";
|
|
5
|
+
import { PostgresDialect, } from "kysely";
|
|
6
|
+
import { Pool } from "pg";
|
|
7
|
+
export class SchemaVaultsPostgresAdapter extends AbstractSchemaVaultsDbhAdapter {
|
|
8
|
+
initializeDbDialect() {
|
|
9
|
+
const credentials = this.credentials;
|
|
10
|
+
const postgres_dialect_conig = {
|
|
11
|
+
pool: async () => new Pool({
|
|
12
|
+
database: credentials.POSTGRES_DATABASE,
|
|
13
|
+
host: credentials.POSTGRES_HOST,
|
|
14
|
+
user: credentials.POSTGRES_USER,
|
|
15
|
+
password: credentials.POSTGRES_PASSWORD,
|
|
16
|
+
port: parsePort(credentials.POSTGRES_PORT),
|
|
17
|
+
connectionString: credentials.POSTGRES_URL,
|
|
18
|
+
}),
|
|
19
|
+
};
|
|
20
|
+
const dialect = new PostgresDialect(postgres_dialect_conig);
|
|
21
|
+
return dialect;
|
|
22
|
+
}
|
|
23
|
+
constructor(opts) {
|
|
24
|
+
super(opts);
|
|
25
|
+
if (this.debug) {
|
|
26
|
+
console.log("[SchemaVaultsPostgresNeonProxyAdapter] Initialized SchemaVaults x Kysely x Neon database adapter in environment: ", this.env);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export default SchemaVaultsPostgresAdapter;
|
|
31
|
+
//# sourceMappingURL=schemavaults-postgres-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemavaults-postgres-adapter.js","sourceRoot":"","sources":["../../src/adapters/schemavaults-postgres-adapter.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,kDAAkD;AAGlD,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAE1C,OAAO,8BAA8B,MAAM,8CAA8C,CAAC;AAC1F,OAAO,EACL,eAAe,GAGhB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAI1B,MAAM,OAAO,2BACX,SAAQ,8BAGP;IAGS,mBAAmB;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,MAAM,sBAAsB,GAA0B;YACpD,IAAI,EAAE,KAAK,IAAI,EAAE,CACf,IAAI,IAAI,CAAC;gBACP,QAAQ,EAAE,WAAW,CAAC,iBAAkC;gBACxD,IAAI,EAAE,WAAW,CAAC,aAA8B;gBAChD,IAAI,EAAE,WAAW,CAAC,aAA8B;gBAChD,QAAQ,EAAE,WAAW,CAAC,iBAAkC;gBACxD,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,aAAa,CAAkB;gBAC3D,gBAAgB,EAAE,WAAW,CAAC,YAA6B;aAC5D,CAAC;SACL,CAAC;QAEF,MAAM,OAAO,GAAY,IAAI,eAAe,CAAC,sBAAsB,CAAC,CAAC;QACrE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,YAAmB,IAAiD;QAClE,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CACT,mHAAmH,EACnH,IAAI,CAAC,GAAG,CACT,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAED,eAAe,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type WsProxyUrlGenerator } from "../utils/getPostgresNeonWsProxyUrl";
|
|
2
|
+
import type { IDatabaseHandler } from "../types/IDatabaseHandler";
|
|
3
|
+
import type { IAbstractSchemaVaultsDbhAdapterConstructorOpts } from "../adapters/abstract-schemavaults-dbh-adapter";
|
|
4
|
+
import AbstractSchemaVaultsDbhAdapter from "../adapters/abstract-schemavaults-dbh-adapter";
|
|
5
|
+
import type { Dialect } from "kysely";
|
|
6
|
+
export interface ISchemaVaultsPostgresNeonProxyAdapterConstructorOpts extends IAbstractSchemaVaultsDbhAdapterConstructorOpts {
|
|
7
|
+
/**
|
|
8
|
+
* @description Pass a custom function, it will receive an object containing the 'pg_host' and 'environment' and should output the endpoint of the proxy to use
|
|
9
|
+
* @example given { pg_host: 'localhost', environment: 'development' } it might return => 'localhost:5433/v1'
|
|
10
|
+
*/
|
|
11
|
+
wsProxyUrl?: WsProxyUrlGenerator | string;
|
|
12
|
+
}
|
|
13
|
+
export declare class SchemaVaultsPostgresNeonProxyAdapter<KyselyTablesType extends object> extends AbstractSchemaVaultsDbhAdapter<KyselyTablesType, ISchemaVaultsPostgresNeonProxyAdapterConstructorOpts> implements IDatabaseHandler<KyselyTablesType> {
|
|
14
|
+
protected initializeDbDialect(opts: Omit<ISchemaVaultsPostgresNeonProxyAdapterConstructorOpts, "credentials">): Dialect;
|
|
15
|
+
constructor(opts: ISchemaVaultsPostgresNeonProxyAdapterConstructorOpts);
|
|
16
|
+
}
|
|
17
|
+
export default SchemaVaultsPostgresNeonProxyAdapter;
|
|
18
|
+
export type { WsProxyUrlGenerator, IGetPostgresNeonWsProxyUrlOpts, } from "../utils/getPostgresNeonWsProxyUrl";
|
|
@@ -1,49 +1,15 @@
|
|
|
1
|
-
//
|
|
1
|
+
// schemavaults-postgres-neon-proxy-adapter.ts
|
|
2
|
+
// This file sets up kysely to connect to postgres via a Neon websocket proxy
|
|
3
|
+
// (allows database usage from a serverless/edge environment)
|
|
2
4
|
import { NeonDialect } from "kysely-neon";
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
env;
|
|
12
|
-
debug;
|
|
13
|
-
static getPostgresNeonWsProxyUrl(opts) {
|
|
14
|
-
return getPostgresNeonWsProxyUrl(opts);
|
|
15
|
-
} // end of getPostgresNeonWsProxyUrl()
|
|
16
|
-
static parsePort(credentials) {
|
|
17
|
-
const port = typeof credentials.POSTGRES_PORT === "number"
|
|
18
|
-
? credentials.POSTGRES_PORT
|
|
19
|
-
: Number.parseInt(credentials.POSTGRES_PORT);
|
|
20
|
-
if (isNaN(port)) {
|
|
21
|
-
throw new Error(`Invalid port number: ${credentials.POSTGRES_PORT}`);
|
|
22
|
-
}
|
|
23
|
-
return port;
|
|
24
|
-
}
|
|
25
|
-
// Initialized from getInstance() (Singleton pattern)
|
|
26
|
-
constructor({ environment, ...opts }) {
|
|
27
|
-
if (!isValidAppEnvironment(environment)) {
|
|
28
|
-
throw new TypeError("Invalid SCHEMAVAULTS_APP_ENVIRONMENT!");
|
|
29
|
-
}
|
|
30
|
-
this.env = environment;
|
|
31
|
-
// checks if 'SCHEMAVAULTS_DBH_DEBUG="true"' is set in env vars, or defaults to yes if in dev/test/staging environment
|
|
32
|
-
const debug = isDbhInDebugMode(this.env);
|
|
33
|
-
this.debug = debug;
|
|
34
|
-
let credentials = undefined;
|
|
35
|
-
if (opts.credentials) {
|
|
36
|
-
if (typeof opts.credentials !== "object") {
|
|
37
|
-
throw new TypeError("'credentials' is truthy but not an object!");
|
|
38
|
-
}
|
|
39
|
-
credentials = parseDatabaseCredentials(opts.credentials, this.debug);
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
credentials = parseDatabaseCredentialsFromEnv(process.env, this.debug);
|
|
43
|
-
}
|
|
44
|
-
if (!credentials) {
|
|
45
|
-
throw new Error("Failed to parse database credentials from options or environment variables!");
|
|
46
|
-
}
|
|
5
|
+
import getPostgresNeonWsProxyUrl from "../utils/getPostgresNeonWsProxyUrl";
|
|
6
|
+
import parsePort from "../utils/parsePort";
|
|
7
|
+
import AbstractSchemaVaultsDbhAdapter from "../adapters/abstract-schemavaults-dbh-adapter";
|
|
8
|
+
export class SchemaVaultsPostgresNeonProxyAdapter extends AbstractSchemaVaultsDbhAdapter {
|
|
9
|
+
initializeDbDialect(opts) {
|
|
10
|
+
const debug = this.debug;
|
|
11
|
+
const environment = this.env;
|
|
12
|
+
const credentials = this.credentials;
|
|
47
13
|
const kysely_neon_dialect_config = {
|
|
48
14
|
connectionString: credentials.POSTGRES_URL,
|
|
49
15
|
host: credentials.POSTGRES_HOST,
|
|
@@ -51,7 +17,7 @@ export class SchemaVaultsPostgresNeonProxyAdapter {
|
|
|
51
17
|
password: credentials.POSTGRES_PASSWORD,
|
|
52
18
|
database: credentials.POSTGRES_DATABASE,
|
|
53
19
|
useSecureWebSocket: (this.env === "production"),
|
|
54
|
-
port:
|
|
20
|
+
port: parsePort(credentials.POSTGRES_PORT),
|
|
55
21
|
wsProxy: (pg_host) => {
|
|
56
22
|
if (debug) {
|
|
57
23
|
console.log(`[SchemaVaultsPostgresNeonProxyAdapter] NeonDialectConfig.wsProxy("${pg_host}")`);
|
|
@@ -66,8 +32,7 @@ export class SchemaVaultsPostgresNeonProxyAdapter {
|
|
|
66
32
|
};
|
|
67
33
|
if (typeof opts.wsProxyUrl === "undefined" || !opts.wsProxyUrl) {
|
|
68
34
|
// Default ws proxy URL generator
|
|
69
|
-
resolvedWsProxyUrl =
|
|
70
|
-
SchemaVaultsPostgresNeonProxyAdapter.getPostgresNeonWsProxyUrl(wsProxyUrlGeneratorSettings);
|
|
35
|
+
resolvedWsProxyUrl = getPostgresNeonWsProxyUrl(wsProxyUrlGeneratorSettings);
|
|
71
36
|
}
|
|
72
37
|
else if (typeof opts.wsProxyUrl === "string" &&
|
|
73
38
|
opts.wsProxyUrl &&
|
|
@@ -99,26 +64,15 @@ export class SchemaVaultsPostgresNeonProxyAdapter {
|
|
|
99
64
|
if (this.debug) {
|
|
100
65
|
console.log("[SchemaVaultsPostgresNeonProxyAdapter] Kysely Neon DB adapter configuration: ", kysely_neon_dialect_config);
|
|
101
66
|
}
|
|
102
|
-
if (this.debug) {
|
|
103
|
-
console.log("[SchemaVaultsPostgresNeonProxyAdapter] Initializing SchemaVaults x Kysely x Neon database adapter...");
|
|
104
|
-
}
|
|
105
67
|
const dialect = new NeonDialect(kysely_neon_dialect_config);
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
this.kysely_db = new Kysely(kysely_configuration);
|
|
68
|
+
return dialect;
|
|
69
|
+
}
|
|
70
|
+
constructor(opts) {
|
|
71
|
+
super(opts);
|
|
111
72
|
if (this.debug) {
|
|
112
73
|
console.log("[SchemaVaultsPostgresNeonProxyAdapter] Initialized SchemaVaults x Kysely x Neon database adapter in environment: ", this.env);
|
|
113
74
|
}
|
|
114
75
|
}
|
|
115
|
-
get db() {
|
|
116
|
-
return this.kysely_db;
|
|
117
|
-
}
|
|
118
|
-
async destroy() {
|
|
119
|
-
await this.kysely_db.destroy();
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
76
|
}
|
|
123
77
|
export default SchemaVaultsPostgresNeonProxyAdapter;
|
|
124
78
|
//# sourceMappingURL=schemavaults-postgres-neon-proxy-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemavaults-postgres-neon-proxy-adapter.js","sourceRoot":"","sources":["../../src/adapters/schemavaults-postgres-neon-proxy-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { SchemaVaultsPostgresAdapter, ISchemaVaultsPostgresAdapterConstructorOpts } from "./adapters/schemavaults-postgres-adapter";
|
|
2
|
+
import type { SchemaVaultsPostgresNeonProxyAdapter, ISchemaVaultsPostgresNeonProxyAdapterConstructorOpts } from "./adapters/schemavaults-postgres-neon-proxy-adapter";
|
|
3
|
+
/**
|
|
4
|
+
* Asynchronously construct a SchemaVaults database handler for the given
|
|
5
|
+
* adapter type, dynamically importing only the adapter that was requested.
|
|
6
|
+
*
|
|
7
|
+
* The returned instance implements `Symbol.asyncDispose`, so it is designed
|
|
8
|
+
* to be used with TC39 explicit-resource-management (`await using`) — the
|
|
9
|
+
* underlying Kysely connection pool is destroyed automatically when the
|
|
10
|
+
* binding goes out of scope.
|
|
11
|
+
*
|
|
12
|
+
* @template KyselyTablesType - The Kysely table-types interface describing
|
|
13
|
+
* the schema of the target database.
|
|
14
|
+
*
|
|
15
|
+
* @param adapter_type - Discriminator selecting which adapter to instantiate:
|
|
16
|
+
* - `"postgres"` — direct Postgres connection via `pg` Pool.
|
|
17
|
+
* - `"postgres-neon-proxy"` — Postgres connection tunneled through a
|
|
18
|
+
* Neon-compatible WebSocket proxy (serverless/edge-friendly).
|
|
19
|
+
* @param opts - Adapter-specific constructor options. The shape is narrowed
|
|
20
|
+
* per-overload to match the chosen `adapter_type`.
|
|
21
|
+
*
|
|
22
|
+
* @returns A Promise resolving to a ready-to-use adapter instance whose
|
|
23
|
+
* concrete type is narrowed per-overload.
|
|
24
|
+
*
|
|
25
|
+
* @example Direct Postgres connection
|
|
26
|
+
* ```ts
|
|
27
|
+
* import createDbh from "@schemavaults/dbh/create-dbh";
|
|
28
|
+
* import type { DB } from "./db-types";
|
|
29
|
+
*
|
|
30
|
+
* await using dbh = await createDbh<DB>("postgres", {
|
|
31
|
+
* environment: "development",
|
|
32
|
+
* });
|
|
33
|
+
* const users = await dbh.db.selectFrom("users").selectAll().execute();
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @example Neon WebSocket proxy with custom proxy URL
|
|
37
|
+
* ```ts
|
|
38
|
+
* await using dbh = await createDbh<DB>("postgres-neon-proxy", {
|
|
39
|
+
* environment: "production",
|
|
40
|
+
* wsProxyUrl: ({ pg_host }) => `wss://proxy.example.com/${pg_host}/v1`,
|
|
41
|
+
* });
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* @example Explicit credentials instead of process.env
|
|
45
|
+
* ```ts
|
|
46
|
+
* await using dbh = await createDbh<DB>("postgres", {
|
|
47
|
+
* environment: "test",
|
|
48
|
+
* credentials: {
|
|
49
|
+
* POSTGRES_HOST: "localhost",
|
|
50
|
+
* POSTGRES_PORT: "5432",
|
|
51
|
+
* POSTGRES_USER: "postgres",
|
|
52
|
+
* POSTGRES_PASSWORD: "postgres",
|
|
53
|
+
* POSTGRES_DATABASE: "schemavaults_test",
|
|
54
|
+
* },
|
|
55
|
+
* });
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* @see {@link SchemaVaultsPostgresAdapter} — adapter loaded when
|
|
59
|
+
* `adapter_type === "postgres"`.
|
|
60
|
+
* @see {@link SchemaVaultsPostgresNeonProxyAdapter} — adapter loaded when
|
|
61
|
+
* `adapter_type === "postgres-neon-proxy"`.
|
|
62
|
+
*/
|
|
63
|
+
export default function createDbh<KyselyTablesType extends object>(adapter_type: "postgres", opts: ISchemaVaultsPostgresAdapterConstructorOpts): Promise<SchemaVaultsPostgresAdapter<KyselyTablesType>>;
|
|
64
|
+
/**
|
|
65
|
+
* @see {@link SchemaVaultsPostgresNeonProxyAdapter}
|
|
66
|
+
*/
|
|
67
|
+
export default function createDbh<KyselyTablesType extends object>(adapter_type: "postgres-neon-proxy", opts: ISchemaVaultsPostgresNeonProxyAdapterConstructorOpts): Promise<SchemaVaultsPostgresNeonProxyAdapter<KyselyTablesType>>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// create-dbh.ts
|
|
2
|
+
const ADAPTER_MAP = {
|
|
3
|
+
postgres: async () => await import("./adapters/schemavaults-postgres-adapter").then((mod) => mod.SchemaVaultsPostgresAdapter),
|
|
4
|
+
"postgres-neon-proxy": async () => await import("./adapters/schemavaults-postgres-neon-proxy-adapter").then((mod) => mod.SchemaVaultsPostgresNeonProxyAdapter),
|
|
5
|
+
};
|
|
6
|
+
export default async function createDbh(adapter_type, opts) {
|
|
7
|
+
if (typeof adapter_type !== "string") {
|
|
8
|
+
throw new TypeError(`Invalid adapter type '${typeof adapter_type}'`);
|
|
9
|
+
}
|
|
10
|
+
const adapter_loader = ADAPTER_MAP[adapter_type];
|
|
11
|
+
if (typeof adapter_loader !== "function") {
|
|
12
|
+
throw new TypeError(`Failed to load database adapter loader for type '${adapter_type}'`);
|
|
13
|
+
}
|
|
14
|
+
const AdapterClass = (await adapter_loader());
|
|
15
|
+
return new AdapterClass(opts);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=create-dbh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-dbh.js","sourceRoot":"","sources":["../src/create-dbh.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAahB,MAAM,WAAW,GAAG;IAClB,QAAQ,EAAE,KAAK,IAAI,EAAE,CACnB,MAAM,MAAM,CAAC,0CAA0C,CAAC,CAAC,IAAI,CAC3D,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,2BAA2B,CACzC;IACH,qBAAqB,EAAE,KAAK,IAAI,EAAE,CAChC,MAAM,MAAM,CAAC,qDAAqD,CAAC,CAAC,IAAI,CACtE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,oCAAoC,CAClD;CACK,CAAC;AA2EX,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,SAAS,CACrC,YAAwB,EACxB,IAAoD;IAEpD,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,IAAI,SAAS,CAAC,yBAAyB,OAAO,YAAY,GAAG,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,cAAc,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;IACjD,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC;QACzC,MAAM,IAAI,SAAS,CACjB,oDAAoD,YAAY,GAAG,CACpE,CAAC;IACJ,CAAC;IACD,MAAM,YAAY,GAAG,CAAC,MAAM,cAAc,EAAE,CAEL,CAAC;IACxC,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export
|
|
1
|
+
export { default as default, default as createDbh } from "./create-dbh";
|
|
2
|
+
export { SchemaVaultsPostgresNeonProxyAdapter } from "./adapters/schemavaults-postgres-neon-proxy-adapter";
|
|
3
|
+
export type { WsProxyUrlGenerator, IGetPostgresNeonWsProxyUrlOpts, } from "./adapters/schemavaults-postgres-neon-proxy-adapter";
|
|
4
|
+
export { SchemaVaultsPostgresAdapter } from "./adapters/schemavaults-postgres-adapter";
|
|
3
5
|
export { sql } from "./sql";
|
|
4
6
|
export type * from "kysely";
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
// index.ts
|
|
2
|
+
export { default as default, default as createDbh } from "./create-dbh";
|
|
3
|
+
// Postgres Neon Proxy Adapter (for use in serverless environments)
|
|
4
|
+
export { SchemaVaultsPostgresNeonProxyAdapter } from "./adapters/schemavaults-postgres-neon-proxy-adapter";
|
|
5
|
+
// Postgres Adapter (for use in standard Node.js environments)
|
|
6
|
+
export { SchemaVaultsPostgresAdapter } from "./adapters/schemavaults-postgres-adapter";
|
|
7
|
+
// Kysely SQL builder + types
|
|
2
8
|
export { sql } from "./sql";
|
|
3
9
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,WAAW;AAEX,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,cAAc,CAAC;AAExE,mEAAmE;AACnE,OAAO,EAAE,oCAAoC,EAAE,MAAM,qDAAqD,CAAC;AAM3G,8DAA8D;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AAEvF,6BAA6B;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC"}
|
package/dist/migrate.d.ts
CHANGED
package/dist/migrate.js
CHANGED
package/dist/migrate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"AAAA,aAAa;
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IDatabaseHandler.js","sourceRoot":"","sources":["../../src/types/IDatabaseHandler.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgresDatabaseCredentials.js","sourceRoot":"","sources":["../../src/types/PostgresDatabaseCredentials.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaVaultsAppEnvironment.js","sourceRoot":"","sources":["../../src/types/SchemaVaultsAppEnvironment.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,qBAAqB,CAAC,GAAY;IAChD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;QACzF,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { BaseInitializablePostgresDatabaseCredentials } from "../PostgresDatabaseCredentials";
|
|
1
|
+
import type { BaseInitializablePostgresDatabaseCredentials } from "../types/PostgresDatabaseCredentials";
|
|
2
2
|
declare function buildPostgresUrl(opts: Pick<BaseInitializablePostgresDatabaseCredentials, "POSTGRES_HOST" | "POSTGRES_PORT" | "POSTGRES_USER" | "POSTGRES_PASSWORD" | "POSTGRES_DATABASE">): string;
|
|
3
3
|
export default buildPostgresUrl;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { type SchemaVaultsAppEnvironment } from "../SchemaVaultsAppEnvironment";
|
|
1
|
+
import { type SchemaVaultsAppEnvironment } from "../types/SchemaVaultsAppEnvironment";
|
|
2
2
|
export declare function getAppEnvironment(): SchemaVaultsAppEnvironment;
|
|
3
3
|
export default getAppEnvironment;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isValidAppEnvironment } from "../SchemaVaultsAppEnvironment";
|
|
1
|
+
import { isValidAppEnvironment, } from "../types/SchemaVaultsAppEnvironment";
|
|
2
2
|
export function getAppEnvironment() {
|
|
3
3
|
const env = process.env["SCHEMAVAULTS_APP_ENVIRONMENT"];
|
|
4
4
|
if (isValidAppEnvironment(env)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getAppEnvironment.js","sourceRoot":"","sources":["../../src/utils/getAppEnvironment.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"getAppEnvironment.js","sourceRoot":"","sources":["../../src/utils/getAppEnvironment.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,GAEtB,MAAM,oCAAoC,CAAC;AAE5C,MAAM,UAAU,iBAAiB;IAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IACxD,IAAI,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,YAAY,CAAC,CAAC,8CAA8C;AACrE,CAAC;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type SchemaVaultsAppEnvironment } from "../SchemaVaultsAppEnvironment";
|
|
1
|
+
import { type SchemaVaultsAppEnvironment } from "../types/SchemaVaultsAppEnvironment";
|
|
2
2
|
export interface IGetPostgresNeonWsProxyUrlOpts {
|
|
3
3
|
pg_host: string;
|
|
4
4
|
environment: SchemaVaultsAppEnvironment;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isValidAppEnvironment, } from "../SchemaVaultsAppEnvironment";
|
|
1
|
+
import { isValidAppEnvironment, } from "../types/SchemaVaultsAppEnvironment";
|
|
2
2
|
export function getPostgresNeonWsProxyUrl({ pg_host, environment, ...opts }) {
|
|
3
3
|
const debug = opts.debug ?? false;
|
|
4
4
|
if (debug) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPostgresNeonWsProxyUrl.js","sourceRoot":"","sources":["../../src/utils/getPostgresNeonWsProxyUrl.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,GAEtB,MAAM,
|
|
1
|
+
{"version":3,"file":"getPostgresNeonWsProxyUrl.js","sourceRoot":"","sources":["../../src/utils/getPostgresNeonWsProxyUrl.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,GAEtB,MAAM,oCAAoC,CAAC;AAY5C,MAAM,UAAU,yBAAyB,CAAC,EACxC,OAAO,EACP,WAAW,EACX,GAAG,IAAI,EACwB;IAC/B,MAAM,KAAK,GAAY,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;IAC3C,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CACT,2EAA2E,WAAW,4BAA4B,EAClH,OAAO,CACR,CAAC;IACJ,CAAC;IAED,IAAI,OAAe,CAAC;IACpB,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;QACjC,OAAO,GAAG,OAAO,CAAC;IACpB,CAAC;SAAM,IAAI,WAAW,KAAK,aAAa,EAAE,CAAC;QACzC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,OAAO,GAAG,WAAW,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,mBAAmB,CAAC;QAChC,CAAC;IACH,CAAC;SAAM,IAAI,WAAW,KAAK,MAAM,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC/D,OAAO,GAAG,mBAAmB,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,CAAC,MAAM,CACZ,qBAAqB,CAAC,WAAW,CAAC,EAClC,6EAA6E,CAC9E,CAAC;IAEF,MAAM,uBAAuB,GAC3B,WAAW,KAAK,YAAY;QAC1B,CAAC,CAAE,IAA+B;QAClC,CAAC,CAAE,IAA+B,CAAC;IAEvC,MAAM,4BAA4B,GAAY,WAAW,KAAK,YAAY,CAAC;IAC3E,MAAM,gBAAgB,GAAY,4BAA4B,CAAC;IAE/D,MAAM,sBAAsB,GAC1B,GAAG,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,uBAAuB,EAA4B,CAAC;IAEtG,OAAO,CAAC,MAAM,CACZ,CAAC,sBAAsB,CAAC,UAAU,CAAC,OAAO,CAAC;QACzC,CAAC,sBAAsB,CAAC,UAAU,CAAC,QAAQ,CAAC,EAC9C,6FAA6F,CAC9F,CAAC;IAEF,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CACT,0DAA0D,EAC1D,sBAAsB,CACvB,CAAC;IACJ,CAAC;IAED,OAAO,sBAAsB,CAAC;AAChC,CAAC;AAED,eAAe,yBAAuD,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { SchemaVaultsAppEnvironment } from "../SchemaVaultsAppEnvironment";
|
|
1
|
+
import type { SchemaVaultsAppEnvironment } from "../types/SchemaVaultsAppEnvironment";
|
|
2
2
|
declare global {
|
|
3
3
|
namespace NodeJS {
|
|
4
4
|
interface ProcessEnv {
|
|
5
|
-
SCHEMAVAULTS_DBH_DEBUG?:
|
|
5
|
+
SCHEMAVAULTS_DBH_DEBUG?: "true" | "false";
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
8
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { BaseInitializablePostgresDatabaseCredentials, PostgresDatabaseCredentials } from "../PostgresDatabaseCredentials";
|
|
1
|
+
import type { BaseInitializablePostgresDatabaseCredentials, PostgresDatabaseCredentials } from "../types/PostgresDatabaseCredentials";
|
|
2
2
|
declare function parseDatabaseCredentials(minimum_credentials: Record<string, boolean | string | number | undefined> | BaseInitializablePostgresDatabaseCredentials, debug?: boolean): PostgresDatabaseCredentials;
|
|
3
3
|
export default parseDatabaseCredentials;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { PostgresDatabaseCredentials } from "../PostgresDatabaseCredentials";
|
|
1
|
+
import type { PostgresDatabaseCredentials } from "../types/PostgresDatabaseCredentials";
|
|
2
2
|
export declare function parseDatabaseCredentialsFromEnv(env: Record<string, string | undefined>, debug?: boolean): PostgresDatabaseCredentials;
|
|
3
3
|
export default parseDatabaseCredentialsFromEnv;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function parsePort(val: string | number): number;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
function isValidPort(val) {
|
|
2
|
+
return (!isNaN(val) && Number.isInteger(val) && Number.isFinite(val) && val > 0);
|
|
3
|
+
}
|
|
4
|
+
export default function parsePort(val) {
|
|
5
|
+
if (typeof val === "number") {
|
|
6
|
+
if (isValidPort(val)) {
|
|
7
|
+
return val;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
else if (typeof val === "string") {
|
|
11
|
+
const parsed = Number.parseInt(val);
|
|
12
|
+
if (isValidPort(parsed)) {
|
|
13
|
+
return parsed;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
throw new TypeError(`Unexpected type for value to parse port number from: '${typeof val}'`);
|
|
18
|
+
}
|
|
19
|
+
throw new TypeError("Failed to parse port number for database configuration!");
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=parsePort.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsePort.js","sourceRoot":"","sources":["../../src/utils/parsePort.ts"],"names":[],"mappings":"AAAA,SAAS,WAAW,CAAC,GAAW;IAC9B,OAAO,CACL,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,CACxE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,GAAoB;IACpD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,SAAS,CACjB,yDAAyD,OAAO,GAAG,GAAG,CACvE,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,SAAS,CACjB,yDAAyD,CAC1D,CAAC;AACJ,CAAC"}
|