@konker.dev/middleware-fp 0.8.0 → 0.9.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/dist/http/contrib/sqlClientInitPg/index.d.ts +4 -3
- package/dist/http/contrib/sqlClientInitPg/index.d.ts.map +1 -1
- package/dist/http/contrib/sqlClientInitPg/index.js +5 -3
- package/dist/http/contrib/sqlClientInitPg/index.js.map +1 -1
- package/dist/http/contrib/sqlClientInitPg/index.test.d.ts.map +1 -1
- package/dist/http/contrib/sqlClientInitPg/index.test.js +29 -5
- package/dist/http/contrib/sqlClientInitPg/index.test.js.map +1 -1
- package/dist/http/contrib/sqlClientInitPg/lib.d.ts +9 -21
- package/dist/http/contrib/sqlClientInitPg/lib.d.ts.map +1 -1
- package/dist/http/contrib/sqlClientInitPg/lib.js +15 -25
- package/dist/http/contrib/sqlClientInitPg/lib.js.map +1 -1
- package/dist/http/contrib/sqlClientInitPg/lib.test.js +52 -7
- package/dist/http/contrib/sqlClientInitPg/lib.test.js.map +1 -1
- package/package.json +5 -3
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import type { FileSystem } from '@effect/platform';
|
|
1
2
|
import type { SqlClient } from '@effect/sql/SqlClient';
|
|
2
3
|
import type { SqlError } from '@effect/sql/SqlError';
|
|
3
|
-
import type
|
|
4
|
+
import { type ConfigError, type Layer } from 'effect';
|
|
4
5
|
import type { Rec, RequestResponseHandler } from '../../index.js';
|
|
5
|
-
export type Adapted<R> = Exclude<R, SqlClient
|
|
6
|
+
export type Adapted<R> = Exclude<R, SqlClient> | FileSystem.FileSystem;
|
|
6
7
|
export { SslConfigSchema, type SslConfig } from './lib.js';
|
|
7
|
-
export declare const middleware: (pgSqlClientLayer?: Layer.Layer<SqlClient, ConfigError.ConfigError | SqlError>) => <I extends Rec, O extends Rec, E, R>(wrapped: RequestResponseHandler<I, O, E, R | SqlClient>) => RequestResponseHandler<I, O, E | ConfigError.ConfigError | SqlError, Adapted<R>>;
|
|
8
|
+
export declare const middleware: (caBundleFilePath?: string, pgSqlClientLayer?: Layer.Layer<SqlClient, ConfigError.ConfigError | SqlError>) => <I extends Rec, O extends Rec, E, R>(wrapped: RequestResponseHandler<I, O, E, R | SqlClient>) => RequestResponseHandler<I, O, E | ConfigError.ConfigError | SqlError, Adapted<R>>;
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/http/contrib/sqlClientInitPg/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/http/contrib/sqlClientInitPg/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,KAAK,EAAQ,MAAM,QAAQ,CAAC;AAG5D,OAAO,KAAK,EAAE,GAAG,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAMlE,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC;AAEvE,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAE3D,eAAO,MAAM,UAAU,GACpB,mBAAmB,MAAM,EAAE,mBAAmB,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,WAAW,GAAG,QAAQ,CAAC,MACxG,CAAC,SAAS,GAAG,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC,EACjC,SAAS,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,KACtD,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,WAAW,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAWjF,CAAC"}
|
|
@@ -3,8 +3,10 @@ import * as Effect from 'effect/Effect';
|
|
|
3
3
|
import { createDefaultPgSqlClientLayer } from './lib.js';
|
|
4
4
|
const TAG = 'sqlClientInitPg';
|
|
5
5
|
export { SslConfigSchema } from './lib.js';
|
|
6
|
-
export const middleware = (pgSqlClientLayer) => (wrapped) => (i) => {
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
export const middleware = (caBundleFilePath, pgSqlClientLayer) => (wrapped) => (i) => {
|
|
7
|
+
if (pgSqlClientLayer) {
|
|
8
|
+
return pipe(wrapped(i), Effect.provide(pgSqlClientLayer), Effect.tap(Effect.logDebug(`[${TAG}] OUT`)));
|
|
9
|
+
}
|
|
10
|
+
return pipe(wrapped(i), Effect.provide(createDefaultPgSqlClientLayer(caBundleFilePath)), Effect.tap(Effect.logDebug(`[${TAG}] OUT`)));
|
|
9
11
|
};
|
|
10
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/http/contrib/sqlClientInitPg/index.ts"],"names":[],"mappings":"AAGA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/http/contrib/sqlClientInitPg/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgC,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAIxC,OAAO,EAAE,6BAA6B,EAAE,MAAM,UAAU,CAAC;AAEzD,MAAM,GAAG,GAAG,iBAAiB,CAAC;AAI9B,OAAO,EAAE,eAAe,EAAkB,MAAM,UAAU,CAAC;AAE3D,MAAM,CAAC,MAAM,UAAU,GACrB,CAAC,gBAAyB,EAAE,gBAA6E,EAAE,EAAE,CAC7G,CACE,OAAuD,EAC2B,EAAE,CACtF,CAAC,CAAc,EAAE,EAAE;IACjB,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzG,CAAC;IAED,OAAO,IAAI,CACT,OAAO,CAAC,CAAC,CAAC,EACV,MAAM,CAAC,OAAO,CAAC,6BAA6B,CAAC,gBAAgB,CAAC,CAAC,EAC/D,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAC5C,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../../src/http/contrib/sqlClientInitPg/index.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../../../src/http/contrib/sqlClientInitPg/index.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAQ,MAAM,QAAQ,CAAC;AAUrC,eAAO,MAAM,oBAAoB,sCAAsC,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { NodeFileSystem } from '@effect/platform-node';
|
|
1
2
|
import { SqlClient } from '@effect/sql/SqlClient';
|
|
2
3
|
import { Layer, pipe } from 'effect';
|
|
3
4
|
import * as Effect from 'effect/Effect';
|
|
4
|
-
import { describe, expect, it, vi } from 'vitest';
|
|
5
|
+
import { afterEach, describe, expect, it, vi } from 'vitest';
|
|
5
6
|
import { echoCoreIn200W } from '../../../test/test-common.js';
|
|
6
7
|
import { EMPTY_REQUEST_W } from '../../RequestW.js';
|
|
7
8
|
import * as unit from './index.js';
|
|
@@ -10,9 +11,12 @@ import * as unitLib from './lib.js';
|
|
|
10
11
|
export const MockPgSqlClientLayer = Layer.succeed(SqlClient, {});
|
|
11
12
|
describe('middleware/sql-client-pg-init', () => {
|
|
12
13
|
describe('middleware', () => {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
afterEach(() => {
|
|
15
|
+
vi.restoreAllMocks();
|
|
16
|
+
});
|
|
17
|
+
it('should work as expected with custom layer', async () => {
|
|
18
|
+
const egHandler = pipe(echoCoreIn200W, unit.middleware(undefined, MockPgSqlClientLayer));
|
|
19
|
+
const result = await pipe(egHandler(EMPTY_REQUEST_W), Effect.provide(NodeFileSystem.layer), Effect.runPromise);
|
|
16
20
|
expect(result).toMatchObject({
|
|
17
21
|
body: 'OK',
|
|
18
22
|
headers: {},
|
|
@@ -29,8 +33,28 @@ describe('middleware/sql-client-pg-init', () => {
|
|
|
29
33
|
it('should work as expected with default layer', async () => {
|
|
30
34
|
const spy = vi.spyOn(unitLib, 'createDefaultPgSqlClientLayer').mockReturnValue(MockPgSqlClientLayer);
|
|
31
35
|
const egHandler = pipe(echoCoreIn200W, unit.middleware());
|
|
32
|
-
const result = await pipe(egHandler(EMPTY_REQUEST_W), Effect.runPromise);
|
|
36
|
+
const result = await pipe(egHandler(EMPTY_REQUEST_W), Effect.provide(NodeFileSystem.layer), Effect.runPromise);
|
|
37
|
+
expect(spy).toHaveBeenCalledTimes(1);
|
|
38
|
+
expect(spy).toHaveBeenCalledWith(undefined);
|
|
39
|
+
expect(result).toMatchObject({
|
|
40
|
+
body: 'OK',
|
|
41
|
+
headers: {},
|
|
42
|
+
in: {
|
|
43
|
+
url: '/',
|
|
44
|
+
headers: {},
|
|
45
|
+
method: 'GET',
|
|
46
|
+
pathParameters: {},
|
|
47
|
+
queryStringParameters: {},
|
|
48
|
+
},
|
|
49
|
+
statusCode: 200,
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
it('should work as expected with ca bundle file path', async () => {
|
|
53
|
+
const spy = vi.spyOn(unitLib, 'createDefaultPgSqlClientLayer').mockReturnValue(MockPgSqlClientLayer);
|
|
54
|
+
const egHandler = pipe(echoCoreIn200W, unit.middleware('/path/to/ca-bundle.pem'));
|
|
55
|
+
const result = await pipe(egHandler(EMPTY_REQUEST_W), Effect.provide(NodeFileSystem.layer), Effect.runPromise);
|
|
33
56
|
expect(spy).toHaveBeenCalledTimes(1);
|
|
57
|
+
expect(spy).toHaveBeenCalledWith('/path/to/ca-bundle.pem');
|
|
34
58
|
expect(result).toMatchObject({
|
|
35
59
|
body: 'OK',
|
|
36
60
|
headers: {},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/http/contrib/sqlClientInitPg/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../../../src/http/contrib/sqlClientInitPg/index.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +1,13 @@
|
|
|
1
|
+
import { FileSystem } from '@effect/platform';
|
|
1
2
|
import type { SqlClient } from '@effect/sql/SqlClient';
|
|
2
3
|
import type { SqlError } from '@effect/sql/SqlError';
|
|
3
|
-
import {
|
|
4
|
-
|
|
4
|
+
import { PgClient } from '@effect/sql-pg';
|
|
5
|
+
import { Config, ConfigError, Effect, Layer, Schema } from 'effect';
|
|
6
|
+
export declare const SslConfigSchema: Schema.transform<Schema.SchemaClass<unknown, string, never>, Schema.Union<[typeof Schema.Boolean, Schema.Struct<{
|
|
7
|
+
ca: typeof Schema.String;
|
|
8
|
+
}>, Schema.Record$<typeof Schema.String, typeof Schema.Unknown>]>>;
|
|
5
9
|
export type SslConfig = typeof SslConfigSchema.Type;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
*
|
|
10
|
-
* @param {SslConfig} [defaultValue=false] - The default SSL configuration to use if no valid configuration is provided.
|
|
11
|
-
* @return {Config.Config<SslConfig>} A configuration object for the SSL configuration, derived from the environment variable or fallback value.
|
|
12
|
-
*/
|
|
13
|
-
export declare function resolveSslConfig(defaultValue: SslConfig): Config.Config<SslConfig>;
|
|
14
|
-
/**
|
|
15
|
-
* Creates a default postgresql client layer configured using environment variables.
|
|
16
|
-
*
|
|
17
|
-
* The configuration includes parameters such as host, port, username, password,
|
|
18
|
-
* database name, and SSL settings. These values are retrieved from the environment
|
|
19
|
-
* or configuration system.
|
|
20
|
-
*
|
|
21
|
-
* @return {Layer.Layer<SqlClient, ConfigError.ConfigError | SqlError>} A layer encapsulating the
|
|
22
|
-
* postgresql client, which can potentially fail due to configuration or SQL-related errors.
|
|
23
|
-
*/
|
|
24
|
-
export declare function createDefaultPgSqlClientLayer(): Layer.Layer<SqlClient, ConfigError.ConfigError | SqlError>;
|
|
10
|
+
export declare function resolveSslConfigDirect(defaultValue: SslConfig): Effect.Effect<Config.Config<SslConfig>, ConfigError.ConfigError>;
|
|
11
|
+
export declare function resolveSslConfigCaBundle(caBundleFilePath: string): Effect.Effect<Config.Config<SslConfig>, ConfigError.ConfigError, FileSystem.FileSystem>;
|
|
12
|
+
export declare function createDefaultPgSqlClientLayer(caBundleFilePath?: string): Layer.Layer<SqlClient | PgClient.PgClient, SqlError | ConfigError.ConfigError, FileSystem.FileSystem>;
|
|
25
13
|
//# sourceMappingURL=lib.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../../../src/http/contrib/sqlClientInitPg/lib.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../../../../src/http/contrib/sqlClientInitPg/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAU,KAAK,EAAQ,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIlF,eAAO,MAAM,eAAe;;kEAM3B,CAAC;AACF,MAAM,MAAM,SAAS,GAAG,OAAO,eAAe,CAAC,IAAI,CAAC;AAGpD,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,SAAS,GACtB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAelE;AAGD,wBAAgB,wBAAwB,CACtC,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC,UAAU,CAAC,CAOzF;AAGD,wBAAgB,6BAA6B,CAC3C,gBAAgB,CAAC,EAAE,MAAM,GACxB,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC,UAAU,CAAC,CAevG"}
|
|
@@ -1,40 +1,30 @@
|
|
|
1
|
+
import { FileSystem } from '@effect/platform';
|
|
1
2
|
import { PgClient } from '@effect/sql-pg';
|
|
2
|
-
import { Config, ConfigError, Either, pipe, Schema } from 'effect';
|
|
3
|
+
import { Config, ConfigError, Effect, Either, Layer, pipe, Schema } from 'effect';
|
|
3
4
|
import { TreeFormatter } from 'effect/ParseResult';
|
|
4
5
|
// --------------------------------------------------------------------------
|
|
5
|
-
export const SslConfigSchema = Schema.parseJson(Schema.Union(Schema.Boolean, Schema.Record({ key: Schema.String, value: Schema.Unknown })));
|
|
6
|
+
export const SslConfigSchema = Schema.parseJson(Schema.Union(Schema.Boolean, Schema.Struct({ ca: Schema.String }), Schema.Record({ key: Schema.String, value: Schema.Unknown })));
|
|
6
7
|
// --------------------------------------------------------------------------
|
|
7
|
-
|
|
8
|
-
* Resolves the SSL configuration for the database by reading and decoding the `DATABASE_SSL` environment variable.
|
|
9
|
-
* If the variable is not set or cannot be decoded, a default value will be applied.
|
|
10
|
-
*
|
|
11
|
-
* @param {SslConfig} [defaultValue=false] - The default SSL configuration to use if no valid configuration is provided.
|
|
12
|
-
* @return {Config.Config<SslConfig>} A configuration object for the SSL configuration, derived from the environment variable or fallback value.
|
|
13
|
-
*/
|
|
14
|
-
export function resolveSslConfig(defaultValue) {
|
|
8
|
+
export function resolveSslConfigDirect(defaultValue) {
|
|
15
9
|
return Config.string('DATABASE_SSL')
|
|
16
10
|
.pipe(Config.mapOrFail((str) => pipe(str, Schema.decodeUnknownEither(SslConfigSchema), Either.mapLeft((err) => ConfigError.InvalidData([], `[${str}]` + TreeFormatter.formatErrorSync(err))))))
|
|
17
|
-
.pipe(Config.withDefault(defaultValue))
|
|
11
|
+
.pipe(Config.withDefault(defaultValue))
|
|
12
|
+
.pipe(Effect.succeed);
|
|
18
13
|
}
|
|
19
14
|
// --------------------------------------------------------------------------
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
* @return {Layer.Layer<SqlClient, ConfigError.ConfigError | SqlError>} A layer encapsulating the
|
|
28
|
-
* postgresql client, which can potentially fail due to configuration or SQL-related errors.
|
|
29
|
-
*/
|
|
30
|
-
export function createDefaultPgSqlClientLayer() {
|
|
31
|
-
return PgClient.layerConfig({
|
|
15
|
+
export function resolveSslConfigCaBundle(caBundleFilePath) {
|
|
16
|
+
return pipe(FileSystem.FileSystem, Effect.flatMap((fs) => fs.readFileString(caBundleFilePath, 'utf8')), Effect.mapError((err) => ConfigError.InvalidData([], err.message)), Effect.map((ca) => Config.succeed({ ca })));
|
|
17
|
+
}
|
|
18
|
+
// --------------------------------------------------------------------------
|
|
19
|
+
export function createDefaultPgSqlClientLayer(caBundleFilePath) {
|
|
20
|
+
const sslConfigEffect = caBundleFilePath ? resolveSslConfigCaBundle(caBundleFilePath) : resolveSslConfigDirect(false);
|
|
21
|
+
return Layer.unwrapEffect(Effect.map(sslConfigEffect, (sslConfig) => PgClient.layerConfig({
|
|
32
22
|
host: Config.string('DATABASE_HOST'),
|
|
33
23
|
port: Config.number('DATABASE_PORT'),
|
|
34
24
|
username: Config.string('DATABASE_USER'),
|
|
35
25
|
password: Config.redacted('DATABASE_PASSWORD'),
|
|
36
26
|
database: Config.string('DATABASE_NAME'),
|
|
37
|
-
ssl:
|
|
38
|
-
});
|
|
27
|
+
ssl: sslConfig,
|
|
28
|
+
})));
|
|
39
29
|
}
|
|
40
30
|
//# sourceMappingURL=lib.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../../../src/http/contrib/sqlClientInitPg/lib.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../../../src/http/contrib/sqlClientInitPg/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAClF,OAAO,EAAmB,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEpE,6EAA6E;AAC7E,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAC7C,MAAM,CAAC,KAAK,CACV,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,EACpC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAC7D,CACF,CAAC;AAGF,6EAA6E;AAC7E,MAAM,UAAU,sBAAsB,CACpC,YAAuB;IAEvB,OAAO,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;SACjC,IAAI,CACH,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CACvB,IAAI,CACF,GAAG,EACH,MAAM,CAAC,mBAAmB,CAAC,eAAe,CAAC,EAC3C,MAAM,CAAC,OAAO,CAAC,CAAC,GAAe,EAAE,EAAE,CACjC,WAAW,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,GAAG,GAAG,GAAG,aAAa,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAC7E,CACF,CACF,CACF;SACA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;SACtC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC1B,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,wBAAwB,CACtC,gBAAwB;IAExB,OAAO,IAAI,CACT,UAAU,CAAC,UAAU,EACrB,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,cAAc,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,EACnE,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAkB,EAAE,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,EACjF,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAC3C,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,6BAA6B,CAC3C,gBAAyB;IAEzB,MAAM,eAAe,GAAG,gBAAgB,CAAC,CAAC,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAEtH,OAAO,KAAK,CAAC,YAAY,CACvB,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,EAAE,CACxC,QAAQ,CAAC,WAAW,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;QACpC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;QACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;QACxC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAC9C,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;QACxC,GAAG,EAAE,SAAS;KACf,CAAC,CACH,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NodeFileSystem } from '@effect/platform-node';
|
|
2
|
+
import { Effect, Layer, pipe } from 'effect';
|
|
2
3
|
import { afterAll, afterEach, beforeAll, describe, expect, it } from 'vitest';
|
|
3
4
|
import * as unit from './lib.js';
|
|
4
5
|
describe('middleware/sql-client-pg-init/lib', () => {
|
|
5
|
-
describe('
|
|
6
|
+
describe('resolveSslConfigDirect', () => {
|
|
6
7
|
let _oldEnv;
|
|
7
8
|
beforeAll(() => {
|
|
8
9
|
_oldEnv = process.env;
|
|
@@ -16,30 +17,74 @@ describe('middleware/sql-client-pg-init/lib', () => {
|
|
|
16
17
|
});
|
|
17
18
|
it('should work as expected with boolean value', async () => {
|
|
18
19
|
process.env.DATABASE_SSL = 'true';
|
|
19
|
-
const actual = await pipe(unit.
|
|
20
|
+
const actual = await pipe(unit.resolveSslConfigDirect(false), Effect.flatMap((config) => config), Effect.runPromise);
|
|
20
21
|
expect(actual).toEqual(true);
|
|
21
22
|
});
|
|
22
23
|
it('should work as expected with record value', async () => {
|
|
23
24
|
process.env.DATABASE_SSL = '{ "rejectUnauthorized": false }';
|
|
24
|
-
const actual = await pipe(unit.
|
|
25
|
+
const actual = await pipe(unit.resolveSslConfigDirect(false), Effect.flatMap((config) => config), Effect.runPromise);
|
|
25
26
|
expect(actual).toStrictEqual({ rejectUnauthorized: false });
|
|
26
27
|
});
|
|
27
28
|
it('should work as expected with default value', async () => {
|
|
28
|
-
const actual = await pipe(unit.
|
|
29
|
+
const actual = await pipe(unit.resolveSslConfigDirect({ foo: 123 }), Effect.flatMap((config) => config), Effect.runPromise);
|
|
29
30
|
expect(actual).toStrictEqual({ foo: 123 });
|
|
30
31
|
});
|
|
31
32
|
it('should work as expected with an invalid value', async () => {
|
|
32
33
|
process.env.DATABASE_SSL = '123';
|
|
33
|
-
const actual = async () => pipe(unit.
|
|
34
|
+
const actual = async () => pipe(unit.resolveSslConfigDirect(false), Effect.flatMap((config) => config), Effect.runPromise);
|
|
34
35
|
await expect(actual).rejects.toThrow('Invalid data at DATABASE_SSL');
|
|
35
36
|
});
|
|
36
37
|
});
|
|
38
|
+
describe('resolveSslConfigCaBundle', () => {
|
|
39
|
+
it('should work as expected with a valid file path', async () => {
|
|
40
|
+
const actual = await pipe(unit.resolveSslConfigCaBundle(`${__dirname}/fixtures/test-ca-bundle.pem`), Effect.flatMap((config) => config), Effect.provide(NodeFileSystem.layer), Effect.runPromise);
|
|
41
|
+
expect(actual).toStrictEqual({ ca: 'test-ca-bundle-content' });
|
|
42
|
+
});
|
|
43
|
+
it('should fail with a non-existent file path', async () => {
|
|
44
|
+
const actual = async () => pipe(unit.resolveSslConfigCaBundle('/non-existent-path/ca-bundle.pem'), Effect.flatMap((config) => config), Effect.provide(NodeFileSystem.layer), Effect.runPromise);
|
|
45
|
+
await expect(actual).rejects.toThrow('ENOENT');
|
|
46
|
+
});
|
|
47
|
+
});
|
|
37
48
|
describe('createDefaultPgSqlClientLayer', () => {
|
|
49
|
+
let _oldEnv;
|
|
50
|
+
beforeAll(() => {
|
|
51
|
+
_oldEnv = process.env;
|
|
52
|
+
process.env = {};
|
|
53
|
+
});
|
|
54
|
+
afterEach(() => {
|
|
55
|
+
process.env = {};
|
|
56
|
+
});
|
|
57
|
+
afterAll(() => {
|
|
58
|
+
process.env = _oldEnv;
|
|
59
|
+
});
|
|
38
60
|
it('should work as expected', async () => {
|
|
39
61
|
const layer = unit.createDefaultPgSqlClientLayer();
|
|
40
|
-
// TODO: better assertion?
|
|
41
62
|
expect(layer).toBeDefined();
|
|
42
63
|
});
|
|
64
|
+
it('should attempt to build layer with config', async () => {
|
|
65
|
+
process.env.DATABASE_HOST = 'localhost';
|
|
66
|
+
process.env.DATABASE_PORT = '5432';
|
|
67
|
+
process.env.DATABASE_USER = 'test';
|
|
68
|
+
process.env.DATABASE_PASSWORD = 'test';
|
|
69
|
+
process.env.DATABASE_NAME = 'test';
|
|
70
|
+
const layer = unit.createDefaultPgSqlClientLayer();
|
|
71
|
+
// Building the layer will fail because there's no actual database,
|
|
72
|
+
// but this covers the PgClient.layerConfig code path
|
|
73
|
+
const actual = async () => pipe(layer, Layer.build, Effect.scoped, Effect.provide(NodeFileSystem.layer), Effect.runPromise);
|
|
74
|
+
await expect(actual).rejects.toThrow();
|
|
75
|
+
});
|
|
76
|
+
it('should attempt to build layer with ca bundle', async () => {
|
|
77
|
+
process.env.DATABASE_HOST = 'localhost';
|
|
78
|
+
process.env.DATABASE_PORT = '5432';
|
|
79
|
+
process.env.DATABASE_USER = 'test';
|
|
80
|
+
process.env.DATABASE_PASSWORD = 'test';
|
|
81
|
+
process.env.DATABASE_NAME = 'test';
|
|
82
|
+
const layer = unit.createDefaultPgSqlClientLayer(`${__dirname}/fixtures/test-ca-bundle.pem`);
|
|
83
|
+
// Building the layer will fail because there's no actual database,
|
|
84
|
+
// but this covers the PgClient.layerConfig code path with CA bundle
|
|
85
|
+
const actual = async () => pipe(layer, Layer.build, Effect.scoped, Effect.provide(NodeFileSystem.layer), Effect.runPromise);
|
|
86
|
+
await expect(actual).rejects.toThrow();
|
|
87
|
+
});
|
|
43
88
|
});
|
|
44
89
|
});
|
|
45
90
|
//# sourceMappingURL=lib.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.test.js","sourceRoot":"","sources":["../../../../src/http/contrib/sqlClientInitPg/lib.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"lib.test.js","sourceRoot":"","sources":["../../../../src/http/contrib/sqlClientInitPg/lib.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@konker.dev/middleware-fp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"author": "Konrad Markus <mail@konker.dev>",
|
|
6
6
|
"license": "ISC",
|
|
@@ -235,6 +235,8 @@
|
|
|
235
235
|
],
|
|
236
236
|
"peerDependencies": {
|
|
237
237
|
"@aws-sdk/client-dynamodb": "^3.637.0",
|
|
238
|
+
"@effect/platform": "^0.94.1",
|
|
239
|
+
"@effect/platform-node": "^0.104.0",
|
|
238
240
|
"@effect/sql": "^0.49.0",
|
|
239
241
|
"@effect/sql-pg": "^0.50.1",
|
|
240
242
|
"@gomomento/sdk": "^1.102.0",
|
|
@@ -246,11 +248,11 @@
|
|
|
246
248
|
"@effect/sql-pg": "^0.50.1",
|
|
247
249
|
"effect": "^3.19.14",
|
|
248
250
|
"lesslog": "^1.0.2",
|
|
251
|
+
"@konker.dev/momento-cache-client-effect": "0.1.12",
|
|
249
252
|
"@konker.dev/tiny-auth-utils-fp": "0.1.12",
|
|
250
253
|
"@konker.dev/tiny-cache-fp": "0.1.13",
|
|
251
|
-
"@konker.dev/tiny-utils-fp": "0.1.13",
|
|
252
254
|
"@konker.dev/tiny-error-fp": "0.1.12",
|
|
253
|
-
"@konker.dev/
|
|
255
|
+
"@konker.dev/tiny-utils-fp": "0.1.13"
|
|
254
256
|
},
|
|
255
257
|
"devDependencies": {
|
|
256
258
|
"@arethetypeswrong/cli": "^0.18.2",
|