@feasibleone/blong 1.7.3 → 1.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/CHANGELOG.md +14 -0
- package/dist/types.d.ts +40 -25
- package/dist/types.js +3 -9
- package/dist/types.js.map +1 -1
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.9.0](https://github.com/feasibleone/blong/compare/blong-v1.8.0...blong-v1.9.0) (2026-03-01)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* upgrade typebox ([6631428](https://github.com/feasibleone/blong/commit/6631428be08fda73571c3e4c623893fad668c25d))
|
|
9
|
+
|
|
10
|
+
## [1.8.0](https://github.com/feasibleone/blong/compare/blong-v1.7.3...blong-v1.8.0) (2026-02-28)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
* self-contained layers ([9b80e3a](https://github.com/feasibleone/blong/commit/9b80e3a1bfd1b6843ece5dba80b619444ec93c84))
|
|
16
|
+
|
|
3
17
|
## [1.7.3](https://github.com/feasibleone/blong/compare/blong-v1.7.2...blong-v1.7.3) (2026-02-17)
|
|
4
18
|
|
|
5
19
|
|
package/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
// Generated by dts-bundle-generator v9.5.1
|
|
2
2
|
|
|
3
|
-
import { JavaScriptTypeBuilder, Static, TArray, TBoolean, TFunction, TObject, TSchema, TString } from '@sinclair/typebox';
|
|
4
3
|
import { SrvRecord } from 'dns';
|
|
5
4
|
import { EventEmitter } from 'events';
|
|
6
5
|
import { Socket, TcpNetConnectOpts } from 'net';
|
|
@@ -11,6 +10,7 @@ import { Duplex } from 'node:stream';
|
|
|
11
10
|
import { Level, LogFn, Logger as PinoLogger } from 'pino';
|
|
12
11
|
import { Readable, Writable } from 'stream';
|
|
13
12
|
import { ConnectionOptions as ConnectionOptions_2, TLSSocket, TLSSocketOptions } from 'tls';
|
|
13
|
+
import { Static, TArray, TBoolean, TFunction, TNever, TObject, TSchema, TString, Type } from 'typebox';
|
|
14
14
|
|
|
15
15
|
export type Method = "GET" | "POST" | "PUT" | "DELETE";
|
|
16
16
|
export interface RequestArgs {
|
|
@@ -17546,11 +17546,11 @@ export type Config<T, C> = {
|
|
|
17546
17546
|
maxReceiveBuffer: number;
|
|
17547
17547
|
logLevel: Parameters<ILog["logger"]>[0];
|
|
17548
17548
|
namespace: string | string[];
|
|
17549
|
-
imports: string | string[];
|
|
17549
|
+
imports: string | RegExp | (string | RegExp)[];
|
|
17550
17550
|
} & T;
|
|
17551
17551
|
export type RemoteMethod = (...params: unknown[]) => Promise<unknown>;
|
|
17552
17552
|
export interface IRemote {
|
|
17553
|
-
remote: (methodName:
|
|
17553
|
+
remote: (methodName: string, options?: object) => RemoteMethod;
|
|
17554
17554
|
dispatch: (...params: unknown[]) => boolean | Promise<unknown>;
|
|
17555
17555
|
start: () => Promise<void>;
|
|
17556
17556
|
stop: () => Promise<void>;
|
|
@@ -17611,6 +17611,7 @@ export interface IRegistry {
|
|
|
17611
17611
|
}
|
|
17612
17612
|
export interface IApi {
|
|
17613
17613
|
id?: string;
|
|
17614
|
+
type: typeof Type;
|
|
17614
17615
|
adapter: (id: string) => (api: {
|
|
17615
17616
|
utError: IError;
|
|
17616
17617
|
remote: IRemote;
|
|
@@ -17638,7 +17639,7 @@ export interface IApi {
|
|
|
17638
17639
|
dispatch: (...params: unknown[]) => boolean | Promise<unknown>;
|
|
17639
17640
|
methodId: (name: string) => string;
|
|
17640
17641
|
getPath: (name: string) => string;
|
|
17641
|
-
importMethod: (methodName:
|
|
17642
|
+
importMethod: (methodName: string, options?: object) => (...params: unknown[]) => Promise<unknown>;
|
|
17642
17643
|
attachHandlers: (target: object, patterns: unknown, adapter?: boolean) => unknown;
|
|
17643
17644
|
};
|
|
17644
17645
|
utLog: {
|
|
@@ -17646,6 +17647,8 @@ export interface IApi {
|
|
|
17646
17647
|
};
|
|
17647
17648
|
handlers?: (api: {
|
|
17648
17649
|
utError: IError;
|
|
17650
|
+
remote: IRemote;
|
|
17651
|
+
type: typeof Type;
|
|
17649
17652
|
}) => {
|
|
17650
17653
|
extends?: string | ((api: {
|
|
17651
17654
|
utError: IError;
|
|
@@ -17664,13 +17667,16 @@ export interface IErrorMap {
|
|
|
17664
17667
|
};
|
|
17665
17668
|
}
|
|
17666
17669
|
export interface IAdapter<T, C> {
|
|
17670
|
+
validation?: TSchema;
|
|
17667
17671
|
config?: Config<T, C>;
|
|
17672
|
+
activation?: IActivationConfig<Partial<Config<T, C>>>;
|
|
17668
17673
|
configBase?: string;
|
|
17669
17674
|
log?: ILogger;
|
|
17670
17675
|
errors?: Errors<IErrorMap>;
|
|
17671
17676
|
imported?: ReturnType<IAdapterFactory<T, C>>;
|
|
17672
17677
|
extends?: object | `adapter.${string}` | `orchestrator.${string}`;
|
|
17673
|
-
|
|
17678
|
+
activeConfig?: (this: ReturnType<IAdapterFactory<T, C>>) => Partial<Config<T, C>>;
|
|
17679
|
+
init?: (this: ReturnType<IAdapterFactory<T, C>>, ...config: Partial<Config<T, C>>[]) => Promise<void>;
|
|
17674
17680
|
start?: (this: ReturnType<IAdapterFactory<T, C>>) => Promise<object>;
|
|
17675
17681
|
ready?: (this: ReturnType<IAdapterFactory<T, C>>) => Promise<object>;
|
|
17676
17682
|
stop?: (this: ReturnType<IAdapterFactory<T, C>>) => Promise<object>;
|
|
@@ -17744,8 +17750,8 @@ export interface IMeta {
|
|
|
17744
17750
|
};
|
|
17745
17751
|
httpRequest?: {
|
|
17746
17752
|
url: URL | string;
|
|
17747
|
-
state
|
|
17748
|
-
headers:
|
|
17753
|
+
state?: object;
|
|
17754
|
+
headers: Record<string, string>;
|
|
17749
17755
|
};
|
|
17750
17756
|
auth?: {
|
|
17751
17757
|
mlek?: object | "header";
|
|
@@ -17842,26 +17848,29 @@ export interface IBaseConfig extends TObject<{
|
|
|
17842
17848
|
adapter: TBoolean;
|
|
17843
17849
|
orchestrator: TBoolean;
|
|
17844
17850
|
test: TBoolean;
|
|
17845
|
-
|
|
17846
|
-
|
|
17847
|
-
dev: TBoolean;
|
|
17851
|
+
error: TBoolean;
|
|
17852
|
+
gateway: TBoolean | TObject;
|
|
17848
17853
|
sim: TBoolean;
|
|
17849
17854
|
resolution: TBoolean;
|
|
17850
17855
|
}> {
|
|
17851
17856
|
additionalProperties: false;
|
|
17852
17857
|
}
|
|
17853
|
-
export interface
|
|
17858
|
+
export interface IActivationConfig<T> {
|
|
17859
|
+
default: T;
|
|
17860
|
+
integration?: T;
|
|
17861
|
+
deployment?: T;
|
|
17862
|
+
microservice?: T;
|
|
17863
|
+
dev?: T;
|
|
17864
|
+
}
|
|
17865
|
+
export interface IModuleConfig<T extends TSchema = TNever> {
|
|
17854
17866
|
pkg?: {
|
|
17855
17867
|
name: string;
|
|
17856
17868
|
version: string;
|
|
17857
17869
|
};
|
|
17858
17870
|
url: string;
|
|
17859
|
-
config
|
|
17860
|
-
|
|
17861
|
-
|
|
17862
|
-
};
|
|
17863
|
-
validation: T;
|
|
17864
|
-
children: (string | (() => Promise<object>))[] | ((layer: ModuleApi) => unknown)[];
|
|
17871
|
+
config?: IActivationConfig<Partial<Static<T>> & Partial<Static<IBaseConfig>>>;
|
|
17872
|
+
validation?: T;
|
|
17873
|
+
children?: (string | (() => Promise<object>))[] | ((layer: ModuleApi) => unknown)[];
|
|
17865
17874
|
}
|
|
17866
17875
|
export interface ILogger {
|
|
17867
17876
|
trace?: LogFn;
|
|
@@ -17910,7 +17919,7 @@ export type ChainStep = ((assert: typeof Assert, context: {
|
|
|
17910
17919
|
$meta: IMeta;
|
|
17911
17920
|
} & Record<string, Promise<unknown[]> & ThenableProxy>) => Promise<object>) | object;
|
|
17912
17921
|
export interface ILib {
|
|
17913
|
-
type:
|
|
17922
|
+
type: typeof Type;
|
|
17914
17923
|
error: <T>(errors: T) => Record<keyof T, (params?: unknown, $meta?: IMeta) => ITypedError>;
|
|
17915
17924
|
rename: <T extends object>(object: T, name: string) => T & {
|
|
17916
17925
|
name: string;
|
|
@@ -17928,7 +17937,7 @@ export interface ILib {
|
|
|
17928
17937
|
}
|
|
17929
17938
|
export type ValidationFn = () => GatewaySchema;
|
|
17930
17939
|
export interface IValidationProxy {
|
|
17931
|
-
type:
|
|
17940
|
+
type: typeof Type;
|
|
17932
17941
|
handler: {
|
|
17933
17942
|
[name: string]: ValidationFn;
|
|
17934
17943
|
};
|
|
@@ -17995,9 +18004,11 @@ export type ModuleApi = {
|
|
|
17995
18004
|
} & {
|
|
17996
18005
|
[name: string]: (blong: Definition<Record<string, unknown>, Record<string, unknown>>) => ModuleApi;
|
|
17997
18006
|
};
|
|
17998
|
-
export
|
|
17999
|
-
|
|
18000
|
-
|
|
18007
|
+
export interface SolutionFactory<T extends TSchema = TNever> {
|
|
18008
|
+
(definition: {
|
|
18009
|
+
type: typeof Type;
|
|
18010
|
+
}): IModuleConfig<T> | Promise<IModuleConfig<T>>;
|
|
18011
|
+
}
|
|
18001
18012
|
export declare abstract class Internal {
|
|
18002
18013
|
#private;
|
|
18003
18014
|
protected log?: ReturnType<ILog["logger"]>;
|
|
@@ -18012,13 +18023,17 @@ export declare const handler: <T = Record<string, unknown>, C = AdapterContext>(
|
|
|
18012
18023
|
export declare const library: <T = Record<string, unknown>>(definition: Lib<T>) => Lib<T>;
|
|
18013
18024
|
export declare const validation: (validation: ValidationDefinition) => ValidationDefinition;
|
|
18014
18025
|
export declare const api: (api: ApiDefinition) => ApiDefinition;
|
|
18015
|
-
export declare const validationHandlers: (handlers: Record<string, TFunction
|
|
18026
|
+
export declare const validationHandlers: (handlers: Record<string, TFunction<[
|
|
18027
|
+
TObject<{}>
|
|
18028
|
+
]>>) => ValidationDefinition;
|
|
18016
18029
|
export declare const realm: <T extends TObject>(definition: SolutionFactory<T>) => SolutionFactory<T>;
|
|
18017
18030
|
export declare const server: <T extends TObject>(definition: SolutionFactory<T>) => SolutionFactory<T>;
|
|
18018
18031
|
export declare const browser: <T extends TObject>(definition: SolutionFactory<T>) => SolutionFactory<T>;
|
|
18032
|
+
export declare const layer: (activation: Record<string, boolean | object>) => Record<string, boolean | object>;
|
|
18019
18033
|
export declare const adapter: <T, C = AdapterContext>(definition: IAdapterFactory<T, C>) => IAdapterFactory<T, C>;
|
|
18020
18034
|
export declare const orchestrator: <T, C = AdapterContext>(definition: IAdapterFactory<T, C>) => IAdapterFactory<T, C>;
|
|
18021
|
-
export
|
|
18035
|
+
export type Kinds = "lib" | "validation" | "api" | "solution" | "server" | "browser" | "adapter" | "orchestrator" | "handler";
|
|
18036
|
+
export declare const kind: (what: {}) => Kinds | undefined;
|
|
18022
18037
|
declare const _default: {
|
|
18023
18038
|
handler: <T = Record<string, unknown>, C = ServerContext>(definition: Definition<T, C>) => Definition<T, C>;
|
|
18024
18039
|
library: <T = Record<string, unknown>>(definition: Lib<T>) => Lib<T>;
|
|
@@ -18029,7 +18044,7 @@ declare const _default: {
|
|
|
18029
18044
|
browser: <T extends TObject>(definition: SolutionFactory<T>) => SolutionFactory<T>;
|
|
18030
18045
|
adapter: <T, C = ServerContext>(definition: IAdapterFactory<T, C>) => IAdapterFactory<T, C>;
|
|
18031
18046
|
orchestrator: <T, C = ServerContext>(definition: IAdapterFactory<T, C>) => IAdapterFactory<T, C>;
|
|
18032
|
-
kind:
|
|
18047
|
+
kind: (what: {}) => Kinds | undefined;
|
|
18033
18048
|
};
|
|
18034
18049
|
|
|
18035
18050
|
export {
|
package/dist/types.js
CHANGED
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
// AppsV1Api,
|
|
3
|
-
// CoreV1Api,
|
|
4
|
-
// NetworkingV1Api,
|
|
5
|
-
// RbacAuthorizationV1Api,
|
|
6
|
-
// Watch,
|
|
7
|
-
// } from '@kubernetes/client-node';
|
|
8
|
-
import { Type, } from '@sinclair/typebox';
|
|
1
|
+
import { Type, } from 'typebox';
|
|
9
2
|
import merge from 'ut-function.merge';
|
|
10
3
|
const Kind = Symbol.for('blong:kind');
|
|
11
4
|
export class Internal {
|
|
@@ -32,12 +25,13 @@ export const validationHandlers = handlers => validation(() => Object.fromEntrie
|
|
|
32
25
|
Object.defineProperty(() => ({
|
|
33
26
|
params: Type.Parameters(handler).items[0],
|
|
34
27
|
result: Type.Awaited(Type.ReturnType(handler)),
|
|
35
|
-
description: handler.description,
|
|
28
|
+
description: 'description' in handler ? handler.description : undefined,
|
|
36
29
|
}), 'name', { value: name }),
|
|
37
30
|
])));
|
|
38
31
|
export const realm = (definition) => Object.defineProperty(definition, Kind, { value: 'solution' });
|
|
39
32
|
export const server = (definition) => Object.defineProperty(definition, Kind, { value: 'server' });
|
|
40
33
|
export const browser = (definition) => Object.defineProperty(definition, Kind, { value: 'browser' });
|
|
34
|
+
export const layer = (activation) => Object.defineProperty(activation, Kind, { value: 'layer' });
|
|
41
35
|
export const adapter = (definition) => Object.defineProperty(definition, Kind, { value: 'adapter' });
|
|
42
36
|
export const orchestrator = (definition) => Object.defineProperty(definition, Kind, { value: 'orchestrator' });
|
|
43
37
|
export const kind = (what) => what[Kind];
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"url": "git+https://github.com/feasibleone/blong.git"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"
|
|
13
|
+
"typebox": "^1.1.5",
|
|
14
14
|
"openapi-types": "^12.1.3",
|
|
15
15
|
"pino": "^10.3.1",
|
|
16
16
|
"ut-function.merge": "^1.5.6"
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
"@slack/types": "^2.19.0",
|
|
27
27
|
"@slack/webhook": "^7.0.6",
|
|
28
28
|
"@types/request": "^2.48.13",
|
|
29
|
+
"@types/ut-function.merge": "file:./types/ut-function.merge",
|
|
29
30
|
"bson": "^7.2.0",
|
|
30
31
|
"dts-bundle-generator": "^9.5.1",
|
|
31
32
|
"eslint": "~9.39.2",
|
|
@@ -41,7 +42,7 @@
|
|
|
41
42
|
"./types": "./types.ts"
|
|
42
43
|
},
|
|
43
44
|
"type": "module",
|
|
44
|
-
"version": "1.
|
|
45
|
+
"version": "1.9.0",
|
|
45
46
|
"scripts": {
|
|
46
47
|
"build": "heft build --clean;dts-bundle-generator --config dts-gen.config.json",
|
|
47
48
|
"ci-publish": "node ../../common/scripts/install-run-rush-pnpm.js publish --access public --provenance"
|