@xyo-network/bridge-http 2.107.6 → 2.109.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.
Files changed (45) hide show
  1. package/dist/browser/HttpBridgeBase.d.cts.map +1 -1
  2. package/dist/browser/HttpBridgeBase.d.mts.map +1 -1
  3. package/dist/browser/HttpBridgeBase.d.ts.map +1 -1
  4. package/dist/browser/HttpBridgeFull.d.cts +11 -4
  5. package/dist/browser/HttpBridgeFull.d.cts.map +1 -1
  6. package/dist/browser/HttpBridgeFull.d.mts +11 -4
  7. package/dist/browser/HttpBridgeFull.d.mts.map +1 -1
  8. package/dist/browser/HttpBridgeFull.d.ts +11 -4
  9. package/dist/browser/HttpBridgeFull.d.ts.map +1 -1
  10. package/dist/browser/index-browser.cjs +4 -4
  11. package/dist/browser/index-browser.cjs.map +1 -1
  12. package/dist/browser/index-browser.js +4 -4
  13. package/dist/browser/index-browser.js.map +1 -1
  14. package/dist/neutral/HttpBridgeBase.d.cts.map +1 -1
  15. package/dist/neutral/HttpBridgeBase.d.mts.map +1 -1
  16. package/dist/neutral/HttpBridgeBase.d.ts.map +1 -1
  17. package/dist/neutral/HttpBridgeFull.d.cts +11 -4
  18. package/dist/neutral/HttpBridgeFull.d.cts.map +1 -1
  19. package/dist/neutral/HttpBridgeFull.d.mts +11 -4
  20. package/dist/neutral/HttpBridgeFull.d.mts.map +1 -1
  21. package/dist/neutral/HttpBridgeFull.d.ts +11 -4
  22. package/dist/neutral/HttpBridgeFull.d.ts.map +1 -1
  23. package/dist/neutral/index-browser.cjs +4 -4
  24. package/dist/neutral/index-browser.cjs.map +1 -1
  25. package/dist/neutral/index-browser.js +4 -4
  26. package/dist/neutral/index-browser.js.map +1 -1
  27. package/dist/node/HttpBridgeBase.d.cts.map +1 -1
  28. package/dist/node/HttpBridgeBase.d.mts.map +1 -1
  29. package/dist/node/HttpBridgeBase.d.ts.map +1 -1
  30. package/dist/node/HttpBridgeFull.d.cts +11 -4
  31. package/dist/node/HttpBridgeFull.d.cts.map +1 -1
  32. package/dist/node/HttpBridgeFull.d.mts +11 -4
  33. package/dist/node/HttpBridgeFull.d.mts.map +1 -1
  34. package/dist/node/HttpBridgeFull.d.ts +11 -4
  35. package/dist/node/HttpBridgeFull.d.ts.map +1 -1
  36. package/dist/node/index.cjs +93 -42
  37. package/dist/node/index.cjs.map +1 -1
  38. package/dist/node/index.js +93 -42
  39. package/dist/node/index.js.map +1 -1
  40. package/package.json +25 -21
  41. package/src/HttpBridgeBase.ts +5 -4
  42. package/src/HttpBridgeFull.ts +125 -44
  43. package/src/HttpBridgeModuleResolver.ts +1 -1
  44. package/src/ModuleProxy/ModuleProxy.ts +1 -1
  45. package/xy.config.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"HttpBridgeBase.d.ts","sourceRoot":"","sources":["../../src/HttpBridgeBase.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,SAAS,EAAE,MAAM,eAAe,CAAA;AAGrD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,qBAAqB,EAGtB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EACL,eAAe,EAEf,cAAc,EACd,iBAAiB,EAIlB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAyB,OAAO,EAAE,MAAM,EAAY,MAAM,4BAA4B,CAAA;AAC7F,OAAO,EAAS,SAAS,EAAE,MAAM,aAAa,CAAA;AAG9C,OAAO,EAAE,gBAAgB,EAA0B,MAAM,oBAAoB,CAAA;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEjD,MAAM,WAAW,gBAAiB,SAAQ,YAAY,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;IACvF,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAED,qBACa,cAAc,CAAC,OAAO,SAAS,gBAAgB,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAE,YAAW,YAAY,CAAC,OAAO,CAAC,EAAE,iBAAiB;IAC/I,MAAM,CAAC,KAAK,YAAkB;IAC9B,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAmD;IACnG,gBAAyB,mBAAmB,EAAE,MAAM,CAAyB;IAC7E,MAAM,CAAC,uBAAuB,SAAY;IAC1C,MAAM,CAAC,qBAAqB,SAAI;IAChC,MAAM,CAAC,4BAA4B,SAAY;IAC/C,MAAM,CAAC,mBAAmB,SAAO;IAEjC,OAAO,CAAC,MAAM,CAAC,CAAW;IAC1B,OAAO,CAAC,mBAAmB,CAAc;IACzC,OAAO,CAAC,iBAAiB,CAA6E;IACtG,OAAO,CAAC,eAAe,CAAC,CAAW;IACnC,OAAO,CAAC,SAAS,CAAC,CAA0B;IAE5C,IAAI,KAAK,cAGR;IAED,IAAI,SAAS,WAEZ;IAED,IAAI,gBAAgB,WAEnB;IAED,IAAI,cAAc,WAEjB;IAED,IAAI,qBAAqB,WAExB;IAED,IAAI,cAAc,cAGjB;IAED,IAAa,QAAQ,kGAmBpB;IAEQ,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAIpG,cAAc,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;IAI1C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAkB1D,SAAS,CAAC,OAAO,EAAE,OAAO;IAIpB,eAAe,CAAC,IAAI,SAAS,OAAO,GAAG,OAAO,EAAE,MAAM,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,SAAS,OAAO,GAAG,OAAO,EACvI,aAAa,EAAE,OAAO,EACtB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,GAAG,EAAE,GACf,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAqC1B,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;YAInG,YAAY;YAmBZ,eAAe;CAoB9B"}
1
+ {"version":3,"file":"HttpBridgeBase.d.ts","sourceRoot":"","sources":["../../src/HttpBridgeBase.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,SAAS,EAAE,MAAM,eAAe,CAAA;AAGrD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,qBAAqB,EAGtB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EACL,eAAe,EAEf,cAAc,EACd,iBAAiB,EAIlB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAyB,OAAO,EAAE,MAAM,EAAY,MAAM,4BAA4B,CAAA;AAC7F,OAAO,EAAS,SAAS,EAAE,MAAM,aAAa,CAAA;AAG9C,OAAO,EAAE,gBAAgB,EAA0B,MAAM,oBAAoB,CAAA;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEjD,MAAM,WAAW,gBAAiB,SAAQ,YAAY,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;IACvF,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAED,qBACa,cAAc,CAAC,OAAO,SAAS,gBAAgB,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAE,YAAW,YAAY,CAAC,OAAO,CAAC,EAAE,iBAAiB;IAC/I,MAAM,CAAC,KAAK,YAAkB;IAC9B,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAmD;IACnG,gBAAyB,mBAAmB,EAAE,MAAM,CAAyB;IAC7E,MAAM,CAAC,uBAAuB,SAAY;IAC1C,MAAM,CAAC,qBAAqB,SAAI;IAChC,MAAM,CAAC,4BAA4B,SAAY;IAC/C,MAAM,CAAC,mBAAmB,SAAO;IAEjC,OAAO,CAAC,MAAM,CAAC,CAAW;IAC1B,OAAO,CAAC,mBAAmB,CAAc;IACzC,OAAO,CAAC,iBAAiB,CAA6E;IACtG,OAAO,CAAC,eAAe,CAAC,CAAW;IACnC,OAAO,CAAC,SAAS,CAAC,CAA0B;IAE5C,IAAI,KAAK,cAGR;IAED,IAAI,SAAS,WAGZ;IAED,IAAI,gBAAgB,WAEnB;IAED,IAAI,cAAc,WAEjB;IAED,IAAI,qBAAqB,WAExB;IAED,IAAI,cAAc,cAGjB;IAED,IAAa,QAAQ,kGAmBpB;IAEQ,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAIpG,cAAc,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;IAI1C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAkB1D,SAAS,CAAC,OAAO,EAAE,OAAO;IAIpB,eAAe,CAAC,IAAI,SAAS,OAAO,GAAG,OAAO,EAAE,MAAM,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,SAAS,OAAO,GAAG,OAAO,EACvI,aAAa,EAAE,OAAO,EACtB,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,GAAG,EAAE,GACf,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAqC1B,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;YAInG,YAAY;YAmBZ,eAAe;CAoB9B"}
@@ -7,13 +7,17 @@ import { Payload } from '@xyo-network/payload-model';
7
7
  import express, { Application, Request, Response } from 'express';
8
8
  import { HttpBridgeBase } from './HttpBridgeBase';
9
9
  import { HttpBridgeConfig } from './HttpBridgeConfig';
10
+ type AddressPathParams = {
11
+ address: Address;
12
+ };
13
+ type PostAddressRequestBody = [QueryBoundWitness, undefined | Payload[]];
10
14
  export interface HttpBridgeParams extends BridgeParams<AnyConfigSchema<HttpBridgeConfig>> {
11
15
  }
12
16
  export declare class HttpBridge<TParams extends HttpBridgeParams> extends HttpBridgeBase<TParams> {
13
17
  protected _app?: Application;
14
18
  protected _exposedModules: WeakRef<ModuleInstance>[];
15
19
  protected _server?: Server;
16
- get app(): express.Application;
20
+ protected get app(): express.Application;
17
21
  exposeChild(mod: ModuleInstance, options?: BridgeExposeOptions | undefined): Promise<ModuleInstance[]>;
18
22
  exposeHandler(address: Address, options?: BridgeExposeOptions | undefined): Promise<ModuleInstance[]>;
19
23
  exposedHandler(): Address[];
@@ -21,8 +25,11 @@ export declare class HttpBridge<TParams extends HttpBridgeParams> extends HttpBr
21
25
  stopHandler(_timeout?: number | undefined): Promise<boolean>;
22
26
  unexposeHandler(address: Address, options?: BridgeUnexposeOptions | undefined): Promise<ModuleInstance[]>;
23
27
  protected callLocalModule(address: Address, query: QueryBoundWitness, payloads: Payload[]): Promise<ModuleQueryResult | null>;
24
- protected handlePost(req: Request<Payload[]>, res: Response): void;
25
- protected startHttpServer(): boolean;
26
- protected stopHttpServer(): boolean;
28
+ protected handleGet(req: Request<AddressPathParams, ModuleQueryResult, PostAddressRequestBody>, res: Response): Promise<void>;
29
+ protected handlePost(req: Request<AddressPathParams, ModuleQueryResult, PostAddressRequestBody>, res: Response): Promise<express.Response<any, Record<string, any>> | undefined>;
30
+ protected initializeApp(): import("express-serve-static-core").Express;
31
+ protected startHttpServer(): Promise<boolean>;
32
+ protected stopHttpServer(): Promise<boolean>;
27
33
  }
34
+ export {};
28
35
  //# sourceMappingURL=HttpBridgeFull.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HttpBridgeFull.d.ts","sourceRoot":"","sources":["../../src/HttpBridgeFull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAIlC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAGrC,OAAO,EAAuB,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACxF,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACpG,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,iBAAiB,EAA8B,MAAM,2BAA2B,CAAA;AAC3I,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD,MAAM,WAAW,gBAAiB,SAAQ,YAAY,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;CAAG;AAE5F,qBACa,UAAU,CAAC,OAAO,SAAS,gBAAgB,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAC;IACvF,SAAS,CAAC,IAAI,CAAC,EAAE,WAAW,CAAA;IAC5B,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,CAAK;IACzD,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IAE1B,IAAI,GAAG,wBAcN;IAEK,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAiB7F,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAa3G,cAAc,IAAI,OAAO,EAAE;IAIrB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5D,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;cAkBxG,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAQnI,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ;IAoB3D,SAAS,CAAC,eAAe;IAQzB,SAAS,CAAC,cAAc;CAMzB"}
1
+ {"version":3,"file":"HttpBridgeFull.d.ts","sourceRoot":"","sources":["../../src/HttpBridgeFull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAIlC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAWrC,OAAO,EAAuB,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACxF,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAEpG,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,iBAAiB,EAA8B,MAAM,2BAA2B,CAAA;AAC3I,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGjE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAKrD,KAAK,iBAAiB,GAAG;IACvB,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAKD,KAAK,sBAAsB,GAAG,CAAC,iBAAiB,EAAE,SAAS,GAAG,OAAO,EAAE,CAAC,CAAA;AASxE,MAAM,WAAW,gBAAiB,SAAQ,YAAY,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;CAAG;AAE5F,qBACa,UAAU,CAAC,OAAO,SAAS,gBAAgB,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAC;IACvF,SAAS,CAAC,IAAI,CAAC,EAAE,WAAW,CAAA;IAC5B,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,CAAK;IACzD,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IAE1B,SAAS,KAAK,GAAG,wBAGhB;IAEK,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAgB7F,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAY3G,cAAc,IAAI,OAAO,EAAE;IAIrB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5D,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;cAkBxG,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;cAKnH,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,sBAAsB,CAAC,EAAE,GAAG,EAAE,QAAQ;cAoBnG,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,sBAAsB,CAAC,EAAE,GAAG,EAAE,QAAQ;IA4BpH,SAAS,CAAC,aAAa;IA6BvB,SAAS,CAAC,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ7C,SAAS,CAAC,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;CAiB7C"}
@@ -7,13 +7,17 @@ import { Payload } from '@xyo-network/payload-model';
7
7
  import express, { Application, Request, Response } from 'express';
8
8
  import { HttpBridgeBase } from './HttpBridgeBase';
9
9
  import { HttpBridgeConfig } from './HttpBridgeConfig';
10
+ type AddressPathParams = {
11
+ address: Address;
12
+ };
13
+ type PostAddressRequestBody = [QueryBoundWitness, undefined | Payload[]];
10
14
  export interface HttpBridgeParams extends BridgeParams<AnyConfigSchema<HttpBridgeConfig>> {
11
15
  }
12
16
  export declare class HttpBridge<TParams extends HttpBridgeParams> extends HttpBridgeBase<TParams> {
13
17
  protected _app?: Application;
14
18
  protected _exposedModules: WeakRef<ModuleInstance>[];
15
19
  protected _server?: Server;
16
- get app(): express.Application;
20
+ protected get app(): express.Application;
17
21
  exposeChild(mod: ModuleInstance, options?: BridgeExposeOptions | undefined): Promise<ModuleInstance[]>;
18
22
  exposeHandler(address: Address, options?: BridgeExposeOptions | undefined): Promise<ModuleInstance[]>;
19
23
  exposedHandler(): Address[];
@@ -21,8 +25,11 @@ export declare class HttpBridge<TParams extends HttpBridgeParams> extends HttpBr
21
25
  stopHandler(_timeout?: number | undefined): Promise<boolean>;
22
26
  unexposeHandler(address: Address, options?: BridgeUnexposeOptions | undefined): Promise<ModuleInstance[]>;
23
27
  protected callLocalModule(address: Address, query: QueryBoundWitness, payloads: Payload[]): Promise<ModuleQueryResult | null>;
24
- protected handlePost(req: Request<Payload[]>, res: Response): void;
25
- protected startHttpServer(): boolean;
26
- protected stopHttpServer(): boolean;
28
+ protected handleGet(req: Request<AddressPathParams, ModuleQueryResult, PostAddressRequestBody>, res: Response): Promise<void>;
29
+ protected handlePost(req: Request<AddressPathParams, ModuleQueryResult, PostAddressRequestBody>, res: Response): Promise<express.Response<any, Record<string, any>> | undefined>;
30
+ protected initializeApp(): import("express-serve-static-core").Express;
31
+ protected startHttpServer(): Promise<boolean>;
32
+ protected stopHttpServer(): Promise<boolean>;
27
33
  }
34
+ export {};
28
35
  //# sourceMappingURL=HttpBridgeFull.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HttpBridgeFull.d.ts","sourceRoot":"","sources":["../../src/HttpBridgeFull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAIlC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAGrC,OAAO,EAAuB,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACxF,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACpG,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,iBAAiB,EAA8B,MAAM,2BAA2B,CAAA;AAC3I,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD,MAAM,WAAW,gBAAiB,SAAQ,YAAY,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;CAAG;AAE5F,qBACa,UAAU,CAAC,OAAO,SAAS,gBAAgB,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAC;IACvF,SAAS,CAAC,IAAI,CAAC,EAAE,WAAW,CAAA;IAC5B,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,CAAK;IACzD,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IAE1B,IAAI,GAAG,wBAcN;IAEK,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAiB7F,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAa3G,cAAc,IAAI,OAAO,EAAE;IAIrB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5D,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;cAkBxG,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAQnI,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ;IAoB3D,SAAS,CAAC,eAAe;IAQzB,SAAS,CAAC,cAAc;CAMzB"}
1
+ {"version":3,"file":"HttpBridgeFull.d.ts","sourceRoot":"","sources":["../../src/HttpBridgeFull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAIlC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAWrC,OAAO,EAAuB,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACxF,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAEpG,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,iBAAiB,EAA8B,MAAM,2BAA2B,CAAA;AAC3I,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGjE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAKrD,KAAK,iBAAiB,GAAG;IACvB,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAKD,KAAK,sBAAsB,GAAG,CAAC,iBAAiB,EAAE,SAAS,GAAG,OAAO,EAAE,CAAC,CAAA;AASxE,MAAM,WAAW,gBAAiB,SAAQ,YAAY,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;CAAG;AAE5F,qBACa,UAAU,CAAC,OAAO,SAAS,gBAAgB,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAC;IACvF,SAAS,CAAC,IAAI,CAAC,EAAE,WAAW,CAAA;IAC5B,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,CAAK;IACzD,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IAE1B,SAAS,KAAK,GAAG,wBAGhB;IAEK,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAgB7F,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAY3G,cAAc,IAAI,OAAO,EAAE;IAIrB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5D,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;cAkBxG,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;cAKnH,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,sBAAsB,CAAC,EAAE,GAAG,EAAE,QAAQ;cAoBnG,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,sBAAsB,CAAC,EAAE,GAAG,EAAE,QAAQ;IA4BpH,SAAS,CAAC,aAAa;IA6BvB,SAAS,CAAC,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ7C,SAAS,CAAC,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;CAiB7C"}
@@ -7,13 +7,17 @@ import { Payload } from '@xyo-network/payload-model';
7
7
  import express, { Application, Request, Response } from 'express';
8
8
  import { HttpBridgeBase } from './HttpBridgeBase';
9
9
  import { HttpBridgeConfig } from './HttpBridgeConfig';
10
+ type AddressPathParams = {
11
+ address: Address;
12
+ };
13
+ type PostAddressRequestBody = [QueryBoundWitness, undefined | Payload[]];
10
14
  export interface HttpBridgeParams extends BridgeParams<AnyConfigSchema<HttpBridgeConfig>> {
11
15
  }
12
16
  export declare class HttpBridge<TParams extends HttpBridgeParams> extends HttpBridgeBase<TParams> {
13
17
  protected _app?: Application;
14
18
  protected _exposedModules: WeakRef<ModuleInstance>[];
15
19
  protected _server?: Server;
16
- get app(): express.Application;
20
+ protected get app(): express.Application;
17
21
  exposeChild(mod: ModuleInstance, options?: BridgeExposeOptions | undefined): Promise<ModuleInstance[]>;
18
22
  exposeHandler(address: Address, options?: BridgeExposeOptions | undefined): Promise<ModuleInstance[]>;
19
23
  exposedHandler(): Address[];
@@ -21,8 +25,11 @@ export declare class HttpBridge<TParams extends HttpBridgeParams> extends HttpBr
21
25
  stopHandler(_timeout?: number | undefined): Promise<boolean>;
22
26
  unexposeHandler(address: Address, options?: BridgeUnexposeOptions | undefined): Promise<ModuleInstance[]>;
23
27
  protected callLocalModule(address: Address, query: QueryBoundWitness, payloads: Payload[]): Promise<ModuleQueryResult | null>;
24
- protected handlePost(req: Request<Payload[]>, res: Response): void;
25
- protected startHttpServer(): boolean;
26
- protected stopHttpServer(): boolean;
28
+ protected handleGet(req: Request<AddressPathParams, ModuleQueryResult, PostAddressRequestBody>, res: Response): Promise<void>;
29
+ protected handlePost(req: Request<AddressPathParams, ModuleQueryResult, PostAddressRequestBody>, res: Response): Promise<express.Response<any, Record<string, any>> | undefined>;
30
+ protected initializeApp(): import("express-serve-static-core").Express;
31
+ protected startHttpServer(): Promise<boolean>;
32
+ protected stopHttpServer(): Promise<boolean>;
27
33
  }
34
+ export {};
28
35
  //# sourceMappingURL=HttpBridgeFull.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HttpBridgeFull.d.ts","sourceRoot":"","sources":["../../src/HttpBridgeFull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAIlC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAGrC,OAAO,EAAuB,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACxF,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACpG,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,iBAAiB,EAA8B,MAAM,2BAA2B,CAAA;AAC3I,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD,MAAM,WAAW,gBAAiB,SAAQ,YAAY,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;CAAG;AAE5F,qBACa,UAAU,CAAC,OAAO,SAAS,gBAAgB,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAC;IACvF,SAAS,CAAC,IAAI,CAAC,EAAE,WAAW,CAAA;IAC5B,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,CAAK;IACzD,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IAE1B,IAAI,GAAG,wBAcN;IAEK,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAiB7F,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAa3G,cAAc,IAAI,OAAO,EAAE;IAIrB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5D,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;cAkBxG,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAQnI,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ;IAoB3D,SAAS,CAAC,eAAe;IAQzB,SAAS,CAAC,cAAc;CAMzB"}
1
+ {"version":3,"file":"HttpBridgeFull.d.ts","sourceRoot":"","sources":["../../src/HttpBridgeFull.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAIlC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAWrC,OAAO,EAAuB,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AACxF,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAEpG,OAAO,EAAE,eAAe,EAAmB,cAAc,EAAE,iBAAiB,EAA8B,MAAM,2BAA2B,CAAA;AAC3I,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAGjE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAKrD,KAAK,iBAAiB,GAAG;IACvB,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAKD,KAAK,sBAAsB,GAAG,CAAC,iBAAiB,EAAE,SAAS,GAAG,OAAO,EAAE,CAAC,CAAA;AASxE,MAAM,WAAW,gBAAiB,SAAQ,YAAY,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;CAAG;AAE5F,qBACa,UAAU,CAAC,OAAO,SAAS,gBAAgB,CAAE,SAAQ,cAAc,CAAC,OAAO,CAAC;IACvF,SAAS,CAAC,IAAI,CAAC,EAAE,WAAW,CAAA;IAC5B,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,CAAK;IACzD,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IAE1B,SAAS,KAAK,GAAG,wBAGhB;IAEK,WAAW,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAgB7F,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAY3G,cAAc,IAAI,OAAO,EAAE;IAIrB,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAIhC,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5D,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;cAkBxG,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;cAKnH,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,sBAAsB,CAAC,EAAE,GAAG,EAAE,QAAQ;cAoBnG,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,sBAAsB,CAAC,EAAE,GAAG,EAAE,QAAQ;IA4BpH,SAAS,CAAC,aAAa;IA6BvB,SAAS,CAAC,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ7C,SAAS,CAAC,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;CAiB7C"}
@@ -47,9 +47,12 @@ var HttpBridgeConfigSchema = "network.xyo.bridge.http.config";
47
47
  var import_assert4 = require("@xylabs/assert");
48
48
  var import_exists3 = require("@xylabs/exists");
49
49
  var import_object2 = require("@xylabs/object");
50
+ var import_sdk_api_express_ecs = require("@xylabs/sdk-api-express-ecs");
50
51
  var import_boundwitness_model = require("@xyo-network/boundwitness-model");
52
+ var import_express_node_middleware = require("@xyo-network/express-node-middleware");
51
53
  var import_module_model4 = require("@xyo-network/module-model");
52
54
  var import_express = __toESM(require("express"), 1);
55
+ var import_http_status_codes = require("http-status-codes");
53
56
 
54
57
  // src/HttpBridgeBase.ts
55
58
  var import_assert3 = require("@xylabs/assert");
@@ -112,7 +115,7 @@ var _HttpModuleProxy = class _HttpModuleProxy extends import_bridge_abstract.Abs
112
115
  dead: this.dead,
113
116
  downResolver: this.downResolver,
114
117
  logger: this.logger,
115
- module: this,
118
+ mod: this,
116
119
  transformers: this.moduleIdentifierTransformers,
117
120
  upResolver: this.upResolver
118
121
  };
@@ -184,7 +187,7 @@ var _HttpBridgeModuleResolver = class _HttpBridgeModuleResolver extends import_b
184
187
  return;
185
188
  }
186
189
  }
187
- const account = import_account.Account.randomSync();
190
+ const account = await import_account.Account.random();
188
191
  const finalParams = {
189
192
  account,
190
193
  archiving: this.params.archiving,
@@ -278,13 +281,13 @@ var _HttpBridgeBase = class _HttpBridgeBase extends import_bridge_abstract3.Abst
278
281
  bridge: this,
279
282
  onQuerySendFinished: /* @__PURE__ */ __name((args) => {
280
283
  (0, import_forget2.forget)(this.emit("querySendFinished", {
281
- module: this,
284
+ mod: this,
282
285
  ...args
283
286
  }));
284
287
  }, "onQuerySendFinished"),
285
288
  onQuerySendStarted: /* @__PURE__ */ __name((args) => {
286
289
  (0, import_forget2.forget)(this.emit("querySendStarted", {
287
- module: this,
290
+ mod: this,
288
291
  ...args
289
292
  }));
290
293
  }, "onQuerySendStarted"),
@@ -436,20 +439,12 @@ var _HttpBridge = class _HttpBridge extends HttpBridgeBase {
436
439
  _exposedModules = [];
437
440
  _server;
438
441
  get app() {
439
- this._app = this._app ?? (() => {
440
- const app = (0, import_express.default)();
441
- app.use(import_express.default.json());
442
- app.post("/", (req, res) => {
443
- this.handlePost(req, res);
444
- });
445
- return app;
446
- })();
447
- return this._app;
442
+ if (!this._app) this._app = this.initializeApp();
443
+ return (0, import_assert4.assertEx)(this._app, () => "App not initialized");
448
444
  }
449
445
  async exposeChild(mod, options) {
450
446
  var _a, _b;
451
447
  const { maxDepth = 5 } = options ?? {};
452
- console.log(`exposeChild: ${mod.address} ${mod == null ? void 0 : mod.id} ${maxDepth}`);
453
448
  (0, import_assert4.assertEx)(this.config.host, () => "Not configured as a host");
454
449
  this._exposedModules.push(new WeakRef(mod));
455
450
  const children = maxDepth > 0 ? await ((_a = mod.publicChildren) == null ? void 0 : _a.call(mod)) ?? [] : [];
@@ -468,7 +463,6 @@ var _HttpBridge = class _HttpBridge extends HttpBridgeBase {
468
463
  async exposeHandler(address, options) {
469
464
  const { required = true } = options ?? {};
470
465
  const mod = await (0, import_module_model4.resolveAddressToInstanceUp)(this, address);
471
- console.log(`exposeHandler: ${address} ${mod == null ? void 0 : mod.id}`);
472
466
  if (required && !mod) {
473
467
  throw new Error(`Unable to find required module: ${address}`);
474
468
  }
@@ -484,10 +478,10 @@ var _HttpBridge = class _HttpBridge extends HttpBridgeBase {
484
478
  }).filter(import_exists3.exists);
485
479
  }
486
480
  async startHandler() {
487
- return await super.startHandler() && this.startHttpServer();
481
+ return await super.startHandler() && await this.startHttpServer();
488
482
  }
489
483
  async stopHandler(_timeout) {
490
- return await super.stopHandler() && this.stopHttpServer();
484
+ return await super.stopHandler() && await this.stopHttpServer();
491
485
  }
492
486
  async unexposeHandler(address, options) {
493
487
  var _a, _b;
@@ -521,31 +515,77 @@ var _HttpBridge = class _HttpBridge extends HttpBridgeBase {
521
515
  var _a2;
522
516
  return ((_a2 = ref.deref()) == null ? void 0 : _a2.address) === address;
523
517
  })) == null ? void 0 : _a.deref();
524
- if (mod) {
525
- return await mod.query(query, payloads);
518
+ return mod ? await mod.query(query, payloads) : null;
519
+ }
520
+ async handleGet(req, res) {
521
+ var _a;
522
+ const { address } = req.params;
523
+ try {
524
+ if (address == this.address) {
525
+ res.json(await this.stateQuery(this.account));
526
+ } else {
527
+ const mod = (_a = this._exposedModules.find((ref) => {
528
+ var _a2;
529
+ return ((_a2 = ref.deref()) == null ? void 0 : _a2.address) === address;
530
+ })) == null ? void 0 : _a.deref();
531
+ if (mod) {
532
+ res.json(await mod.stateQuery(this.account));
533
+ } else {
534
+ res.status(import_http_status_codes.StatusCodes.NOT_FOUND).json({
535
+ error: "Module not found"
536
+ });
537
+ }
538
+ }
539
+ } catch (ex) {
540
+ res.status(import_http_status_codes.StatusCodes.INTERNAL_SERVER_ERROR).json({
541
+ error: ex.message
542
+ });
526
543
  }
527
- return null;
528
- }
529
- handlePost(req, res) {
530
- const allPayloads = req.body;
531
- const query = allPayloads.find(import_boundwitness_model.isQueryBoundWitness);
532
- const payloads = allPayloads.filter((payload) => !(0, import_boundwitness_model.isQueryBoundWitness)(payload));
533
- this.callLocalModule(req.route, query, payloads).then((result) => {
534
- if (result === null) {
535
- res.status(404).json({
536
- error: "Module not found"
537
- });
544
+ }
545
+ async handlePost(req, res) {
546
+ const { address } = req.params;
547
+ const [bw, payloads = []] = Array.isArray(req.body) ? req.body : [];
548
+ const query = (0, import_boundwitness_model.isQueryBoundWitness)(bw) ? bw : void 0;
549
+ if (!query) {
550
+ res.status(import_http_status_codes.StatusCodes.BAD_REQUEST).json({
551
+ error: "No query provided"
552
+ });
553
+ return;
554
+ }
555
+ try {
556
+ if (address == this.address) {
557
+ const result = await this.query(query, payloads);
558
+ return res.json(result);
538
559
  } else {
539
- const envelope = {
540
- data: result
541
- };
542
- res.json(envelope);
560
+ const result = await this.callLocalModule(address, query, payloads);
561
+ if (result === null) {
562
+ res.status(import_http_status_codes.StatusCodes.NOT_FOUND).json({
563
+ error: "Module not found"
564
+ });
565
+ } else {
566
+ res.json(result);
567
+ }
543
568
  }
544
- }).catch((ex) => {
545
- res.status(500).json({
569
+ } catch (ex) {
570
+ res.status(import_http_status_codes.StatusCodes.INTERNAL_SERVER_ERROR).json({
546
571
  error: ex.message
547
572
  });
548
- });
573
+ }
574
+ }
575
+ initializeApp() {
576
+ const app = (0, import_express.default)();
577
+ app.use(import_sdk_api_express_ecs.responseProfiler);
578
+ app.use(import_sdk_api_express_ecs.jsonBodyParser);
579
+ app.use(import_express_node_middleware.standardResponses);
580
+ (0, import_sdk_api_express_ecs.disableExpressDefaultPoweredByHeader)(app);
581
+ app.use(import_sdk_api_express_ecs.customPoweredByHeader);
582
+ (0, import_sdk_api_express_ecs.disableCaseSensitiveRouting)(app);
583
+ (0, import_sdk_api_express_ecs.useRequestCounters)(app);
584
+ app.get("/", (_req, res) => res.redirect(import_http_status_codes.StatusCodes.MOVED_TEMPORARILY, `/${this.address}`));
585
+ app.post("/", (_req, res) => res.redirect(import_http_status_codes.StatusCodes.TEMPORARY_REDIRECT, `/${this.address}`));
586
+ app.get("/:address", (0, import_sdk_api_express_ecs.asyncHandler)(async (req, res) => await this.handleGet(req, res)));
587
+ app.post("/:address", (0, import_sdk_api_express_ecs.asyncHandler)(async (req, res) => await this.handlePost(req, res)));
588
+ return app;
549
589
  }
550
590
  startHttpServer() {
551
591
  var _a;
@@ -553,13 +593,24 @@ var _HttpBridge = class _HttpBridge extends HttpBridgeBase {
553
593
  (0, import_assert4.assertEx)(!this._server, () => "Server already started");
554
594
  this._server = this.app.listen(((_a = this.config.host) == null ? void 0 : _a.port) ?? 3030);
555
595
  }
556
- return true;
596
+ return Promise.resolve(true);
557
597
  }
558
598
  stopHttpServer() {
559
- const server = (0, import_assert4.assertEx)(this._server, () => "Server not started");
560
- server.close();
561
- this._server = void 0;
562
- return true;
599
+ if (this.config.host) {
600
+ return new Promise((resolve, reject) => {
601
+ if (this._server) {
602
+ this._server.close((err) => {
603
+ if (err) {
604
+ reject(err);
605
+ } else {
606
+ this._server = void 0;
607
+ resolve(true);
608
+ }
609
+ });
610
+ }
611
+ });
612
+ }
613
+ return Promise.resolve(true);
563
614
  }
564
615
  };
565
616
  __name(_HttpBridge, "HttpBridge");
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/HttpBridgeConfig.ts","../../src/HttpBridgeFull.ts","../../src/HttpBridgeBase.ts","../../src/HttpBridgeModuleResolver.ts","../../src/ModuleProxy/ModuleProxy.ts"],"sourcesContent":["export * from './HttpBridgeConfig'\nexport * from './HttpBridgeFull'\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport type HttpBridgeConfigSchema = 'network.xyo.bridge.http.config'\nexport const HttpBridgeConfigSchema: HttpBridgeConfigSchema = 'network.xyo.bridge.http.config'\n\nexport type HttpBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<\n {\n client?: BridgeConfig['client'] & {\n url: string\n }\n failureRetryTime?: number\n failureTimeCacheMax?: number\n host?: {\n port: number\n }\n maxConnections?: number\n maxPayloadSizeWarning?: number\n /** @deprecated use client.url instead */\n nodeUrl?: string\n schema: HttpBridgeConfigSchema\n } & TConfig,\n TSchema extends string ? TSchema : HttpBridgeConfigSchema\n>\n","import { Server } from 'node:http'\n\nimport { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { Address } from '@xylabs/hex'\nimport { toJsonString } from '@xylabs/object'\nimport { ApiEnvelopeSuccess } from '@xyo-network/api-models'\nimport { isQueryBoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BridgeExposeOptions, BridgeParams, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleQueryResult, resolveAddressToInstanceUp } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport express, { Application, Request, Response } from 'express'\n\nimport { HttpBridgeBase } from './HttpBridgeBase'\nimport { HttpBridgeConfig } from './HttpBridgeConfig'\n\nexport interface HttpBridgeParams extends BridgeParams<AnyConfigSchema<HttpBridgeConfig>> {}\n\n@creatableModule()\nexport class HttpBridge<TParams extends HttpBridgeParams> extends HttpBridgeBase<TParams> {\n protected _app?: Application\n protected _exposedModules: WeakRef<ModuleInstance>[] = []\n protected _server?: Server\n\n get app() {\n this._app =\n this._app ??\n (() => {\n const app = express()\n app.use(express.json())\n\n app.post<Payload[]>('/', (req, res) => {\n this.handlePost(req, res)\n })\n\n return app\n })()\n return this._app\n }\n\n async exposeChild(mod: ModuleInstance, options?: BridgeExposeOptions | undefined): Promise<ModuleInstance[]> {\n const { maxDepth = 5 } = options ?? {}\n console.log(`exposeChild: ${mod.address} ${mod?.id} ${maxDepth}`)\n assertEx(this.config.host, () => 'Not configured as a host')\n this._exposedModules.push(new WeakRef(mod))\n const children = maxDepth > 0 ? (await mod.publicChildren?.()) ?? [] : []\n this.logger.log(`childrenToExpose [${mod.id}][${mod.address}]: ${toJsonString(children.map((child) => child.id))}`)\n const exposedChildren = (await Promise.all(children.map((child) => this.exposeChild(child, { maxDepth: maxDepth - 1, required: false }))))\n .flat()\n .filter(exists)\n const allExposed = [mod, ...exposedChildren]\n\n for (const exposedMod of allExposed) this.logger?.log(`exposed: ${exposedMod.address} [${mod.id}]`)\n\n return allExposed\n }\n\n override async exposeHandler(address: Address, options?: BridgeExposeOptions | undefined): Promise<ModuleInstance[]> {\n const { required = true } = options ?? {}\n const mod = await resolveAddressToInstanceUp(this, address)\n console.log(`exposeHandler: ${address} ${mod?.id}`)\n if (required && !mod) {\n throw new Error(`Unable to find required module: ${address}`)\n }\n if (mod) {\n return this.exposeChild(mod, options)\n }\n return []\n }\n\n override exposedHandler(): Address[] {\n return this._exposedModules.map((ref) => ref.deref()?.address).filter(exists)\n }\n\n override async startHandler(): Promise<boolean> {\n return (await super.startHandler()) && this.startHttpServer()\n }\n\n override async stopHandler(_timeout?: number | undefined): Promise<boolean> {\n return (await super.stopHandler()) && this.stopHttpServer()\n }\n\n override async unexposeHandler(address: Address, options?: BridgeUnexposeOptions | undefined): Promise<ModuleInstance[]> {\n const { maxDepth = 2, required = true } = options ?? {}\n assertEx(this.config.host, () => 'Not configured as a host')\n const mod = this._exposedModules.find((ref) => ref.deref()?.address === address)?.deref()\n assertEx(!required || mod, () => `Module not exposed: ${address}`)\n this._exposedModules = this._exposedModules.filter((ref) => ref.deref()?.address !== address)\n if (mod) {\n const children = maxDepth > 0 ? (await mod.publicChildren?.()) ?? [] : []\n const exposedChildren = (\n await Promise.all(children.map((child) => this.unexposeHandler(child.address, { maxDepth: maxDepth - 1, required: false })))\n )\n .flat()\n .filter(exists)\n return [mod, ...exposedChildren]\n }\n return []\n }\n\n protected async callLocalModule(address: Address, query: QueryBoundWitness, payloads: Payload[]): Promise<ModuleQueryResult | null> {\n const mod = this._exposedModules.find((ref) => ref.deref()?.address === address)?.deref()\n if (mod) {\n return await mod.query(query, payloads)\n }\n return null\n }\n\n protected handlePost(req: Request<Payload[]>, res: Response) {\n const allPayloads = req.body as Payload[]\n const query = allPayloads.find(isQueryBoundWitness) as QueryBoundWitness\n const payloads = allPayloads.filter((payload) => !isQueryBoundWitness(payload))\n this.callLocalModule(req.route, query, payloads)\n .then((result) => {\n if (result === null) {\n res.status(404).json({ error: 'Module not found' })\n } else {\n const envelope = {\n data: result,\n } as ApiEnvelopeSuccess<ModuleQueryResult>\n res.json(envelope)\n }\n })\n .catch((ex) => {\n res.status(500).json({ error: (ex as Error).message })\n })\n }\n\n protected startHttpServer() {\n if (this.config.host) {\n assertEx(!this._server, () => 'Server already started')\n this._server = this.app.listen(this.config.host?.port ?? 3030)\n }\n return true\n }\n\n protected stopHttpServer() {\n const server = assertEx(this._server, () => 'Server not started')\n server.close()\n this._server = undefined\n return true\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { AxiosError, AxiosJson } from '@xylabs/axios'\nimport { exists } from '@xylabs/exists'\nimport { forget } from '@xylabs/forget'\nimport { Address } from '@xylabs/hex'\nimport { toJsonString } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\nimport { ApiEnvelope } from '@xyo-network/api-models'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractBridge } from '@xyo-network/bridge-abstract'\nimport {\n BridgeExposeOptions,\n BridgeModule,\n BridgeParams,\n BridgeUnexposeOptions,\n QuerySendFinishedEventArgs,\n QuerySendStartedEventArgs,\n} from '@xyo-network/bridge-model'\nimport { ModuleManifestPayload, NodeManifestPayload, NodeManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport {\n AnyConfigSchema,\n creatableModule,\n ModuleInstance,\n ModuleQueryResult,\n ModuleResolverInstance,\n ModuleStateQuery,\n ModuleStateQuerySchema,\n} from '@xyo-network/module-model'\nimport { asAttachableNodeInstance } from '@xyo-network/node-model'\nimport { isPayloadOfSchemaType, Payload, Schema, WithMeta } from '@xyo-network/payload-model'\nimport { Mutex, Semaphore } from 'async-mutex'\nimport { LRUCache } from 'lru-cache'\n\nimport { HttpBridgeConfig, HttpBridgeConfigSchema } from './HttpBridgeConfig'\nimport { HttpBridgeModuleResolver } from './HttpBridgeModuleResolver'\nimport { BridgeQuerySender } from './ModuleProxy'\n\nexport interface HttpBridgeParams extends BridgeParams<AnyConfigSchema<HttpBridgeConfig>> {\n axios?: AxiosJson\n}\n\n@creatableModule()\nexport class HttpBridgeBase<TParams extends HttpBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams>, BridgeQuerySender {\n static axios = new AxiosJson()\n static override readonly configSchemas: Schema[] = [...super.configSchemas, HttpBridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = HttpBridgeConfigSchema\n static defaultFailureRetryTime = 1000 * 60\n static defaultMaxConnections = 4\n static defaultMaxPayloadSizeWarning = 256 * 256\n static maxFailureCacheSize = 1000\n\n private _axios?: AxiosJson\n private _discoverRootsMutex = new Mutex()\n private _failureTimeCache = new LRUCache<Address, number>({ max: HttpBridgeBase.maxFailureCacheSize })\n private _querySemaphore?: Semaphore\n private _resolver?: HttpBridgeModuleResolver\n\n get axios() {\n this._axios = this._axios ?? this.params.axios ?? HttpBridgeBase.axios\n return this._axios\n }\n\n get clientUrl() {\n return assertEx(this.config.client?.url ?? this.config.nodeUrl, () => 'No Url Set')\n }\n\n get failureRetryTime() {\n return this.config.failureRetryTime ?? HttpBridgeBase.defaultFailureRetryTime\n }\n\n get maxConnections() {\n return this.config.maxConnections ?? HttpBridgeBase.defaultMaxConnections\n }\n\n get maxPayloadSizeWarning() {\n return this.config.maxPayloadSizeWarning ?? HttpBridgeBase.defaultMaxPayloadSizeWarning\n }\n\n get querySemaphore() {\n this._querySemaphore = this._querySemaphore ?? new Semaphore(this.maxConnections)\n return this._querySemaphore\n }\n\n override get resolver() {\n this._resolver =\n this._resolver ??\n new HttpBridgeModuleResolver({\n additionalSigners: this.additionalSigners,\n archiving: { ...this.archiving, resolveArchivists: this.resolveArchivingArchivists.bind(this) },\n bridge: this,\n onQuerySendFinished: (args: Omit<QuerySendFinishedEventArgs, 'module'>) => {\n forget(this.emit('querySendFinished', { module: this, ...args }))\n },\n onQuerySendStarted: (args: Omit<QuerySendStartedEventArgs, 'module'>) => {\n forget(this.emit('querySendStarted', { module: this, ...args }))\n },\n querySender: this,\n root: this,\n rootUrl: this.clientUrl,\n wrapperAccount: this.account,\n })\n return this._resolver\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<Address[]> {\n throw new Error('Unsupported')\n }\n\n async getRoots(force?: boolean): Promise<ModuleInstance[]> {\n return await this._discoverRootsMutex.runExclusive(async () => {\n if (this._roots === undefined || force) {\n const state = await this.getRootState()\n this.logger?.debug(`HttpBridge:discoverRoots.state [${state?.length}]`)\n const nodeManifest = state?.find(isPayloadOfSchemaType<WithMeta<NodeManifestPayload>>(NodeManifestPayloadSchema))\n if (nodeManifest) {\n const mods = (await this.resolveRootNode(nodeManifest)).filter(exists)\n this.logger?.debug(`HttpBridge:discoverRoots [${mods.length}]`)\n this._roots = mods\n } else {\n this._roots = []\n }\n }\n return this._roots\n })\n }\n\n moduleUrl(address: Address) {\n return new URL(address, this.clientUrl)\n }\n\n async sendBridgeQuery<TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: Address,\n query: TQuery,\n payloads?: TIn[],\n ): Promise<ModuleQueryResult<TOut>> {\n const lastFailureTime = this._failureTimeCache.get(targetAddress)\n if (lastFailureTime !== undefined) {\n const now = Date.now()\n const timeSincePreviousFailure = now - lastFailureTime\n if (timeSincePreviousFailure > this.failureRetryTime) {\n throw new Error(`target module failed recently [${targetAddress}] [${timeSincePreviousFailure}ms ago]`)\n }\n this._failureTimeCache.delete(targetAddress)\n }\n try {\n await this.querySemaphore.acquire()\n const payloadSize = JSON.stringify([query, payloads]).length\n if (payloadSize > this.maxPayloadSizeWarning) {\n this.logger?.warn(\n `Large targetQuery being sent: ${payloadSize} bytes [${this.address}][${this.moduleAddress}] [${query.schema}] [${payloads?.length}]`,\n )\n }\n const moduleUrl = this.moduleUrl(targetAddress).href\n const result = await this.axios.post<ApiEnvelope<ModuleQueryResult<TOut>>>(moduleUrl, [query, payloads])\n if (result.status === 404) {\n throw `target module not found [${moduleUrl}] [${result.status}]`\n }\n if (result.status >= 400) {\n this.logger?.error(`targetQuery failed [${moduleUrl}]`)\n throw `targetQuery failed [${moduleUrl}] [${result.status}]`\n }\n return result.data?.data\n } catch (ex) {\n const error = ex as AxiosError\n this.logger?.error(`Error: ${toJsonString(error)}`)\n throw error\n } finally {\n this.querySemaphore.release()\n }\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n private async getRootState() {\n const queryPayload: ModuleStateQuery = { schema: ModuleStateQuerySchema }\n const boundQuery = await this.bindQuery(queryPayload)\n try {\n const response = await this.axios.post<ApiEnvelope<ModuleQueryResult>>(this.clientUrl.toString(), boundQuery)\n if (response.status === 404) {\n return []\n }\n const [, payloads, errors] = response.data.data\n if (errors.length > 0) {\n throw new Error(`getRootState failed: ${JSON.stringify(errors, null, 2)}`)\n }\n return payloads\n } catch (ex) {\n const error = ex as Error\n this.logger?.warn(`Unable to connect to remote node: ${error.message} [${this.clientUrl}]`)\n }\n }\n\n private async resolveRootNode(nodeManifest: ModuleManifestPayload): Promise<ModuleInstance[]> {\n const rootModule = assertEx(\n (\n await this.resolver.resolveHandler(\n assertEx(nodeManifest.status?.address, () => 'Root has no address'),\n undefined,\n { manifest: nodeManifest },\n )\n ).at(0),\n () => `Root not found [${nodeManifest.status?.address}]`,\n )\n assertEx(rootModule.constructor.name !== 'HttpModuleProxy', () => 'rootModule is not a Wrapper')\n const rootNode = asAttachableNodeInstance(rootModule, 'Root modules is not a node')\n if (rootNode) {\n this.logger.debug(`rootNode: ${rootNode.id}`)\n this.downResolver.addResolver(rootNode as unknown as ModuleResolverInstance)\n return [rootNode]\n }\n return []\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address, isAddress } from '@xylabs/hex'\nimport { Account } from '@xyo-network/account'\nimport { AbstractBridgeModuleResolver, BridgeModuleResolverParams, wrapModuleWithType } from '@xyo-network/bridge-abstract'\nimport { ConfigPayload, ConfigSchema } from '@xyo-network/config-payload-plugin'\nimport {\n asModuleInstance,\n isModuleInstance,\n ModuleConfig,\n ModuleConfigSchema,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ResolveHelper,\n} from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { Mutex } from 'async-mutex'\nimport { LRUCache } from 'lru-cache'\n\nimport { BridgeQuerySender, HttpModuleProxy, HttpModuleProxyParams } from './ModuleProxy'\n\nconst NotFoundModule = { notFound: true }\n\nexport interface HttpBridgeModuleResolverParams extends BridgeModuleResolverParams {\n querySender: BridgeQuerySender\n rootUrl: string\n}\n\nexport class HttpBridgeModuleResolver<\n T extends HttpBridgeModuleResolverParams = HttpBridgeModuleResolverParams,\n> extends AbstractBridgeModuleResolver<T> {\n protected _resolvedCache = new LRUCache<Address, ModuleInstance | typeof NotFoundModule>({ max: 1000 })\n protected _resolvedCacheMutex = new Mutex()\n\n get querySender() {\n return this.params.querySender\n }\n\n moduleUrl(address: Address) {\n return new URL(address, this.params.rootUrl)\n }\n\n override async resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n params?: Partial<HttpModuleProxyParams>,\n ): Promise<T[]> {\n const parentResult = await super.resolveHandler(id, options)\n if (parentResult.length > 0) {\n return parentResult\n }\n const idParts = id.split(':')\n const untransformedFirstPart = assertEx(idParts.shift(), () => 'Missing module identifier')\n const firstPart = await ResolveHelper.transformModuleIdentifier(untransformedFirstPart)\n assertEx(isAddress(firstPart), () => `Invalid module address: ${firstPart}`)\n const remainderParts = idParts.join(':')\n const instance: T | undefined = await this._resolvedCacheMutex.runExclusive(async () => {\n const cachedMod = this._resolvedCache.get(firstPart as Address)\n if (cachedMod) {\n if (isModuleInstance(cachedMod)) {\n const result = idParts.length <= 0 ? cachedMod : cachedMod.resolve(remainderParts, { ...options, maxDepth: (options?.maxDepth ?? 5) - 1 })\n return result as T\n } else {\n //return cached 404\n return\n }\n }\n const account = Account.randomSync()\n const finalParams: HttpModuleProxyParams = {\n account,\n archiving: this.params.archiving,\n config: { schema: ModuleConfigSchema },\n host: this,\n moduleAddress: firstPart as Address,\n onQuerySendFinished: this.params.onQuerySendFinished,\n onQuerySendStarted: this.params.onQuerySendStarted,\n querySender: this.params.querySender,\n ...params,\n }\n\n this.logger?.debug(`creating HttpProxy [${firstPart}] ${id}`)\n console.log(`creating HttpProxy [${firstPart}] ${id}`)\n\n const proxy = new HttpModuleProxy<T, HttpModuleProxyParams>(finalParams)\n\n let state: Payload[] | undefined\n\n try {\n state = await proxy.state()\n } catch (ex) {\n const error = ex as Error\n this.logger?.log(error.message)\n }\n\n if (!state) {\n //cache the fact that it was not found\n this._resolvedCache.set(firstPart as Address, NotFoundModule)\n return\n }\n\n const configSchema = (state.find((payload) => payload.schema === ConfigSchema) as ConfigPayload | undefined)?.config\n const config = assertEx(\n state.find((payload) => payload.schema === configSchema),\n () => 'Unable to locate config',\n ) as ModuleConfig\n proxy.setConfig(config)\n\n console.log(`created HttpProxy [${firstPart}] ${proxy.id}`)\n\n await proxy.start?.()\n const wrapped = wrapModuleWithType(proxy, account) as unknown as T\n assertEx(asModuleInstance<T>(wrapped, {}), () => `Failed to asModuleInstance [${id}]`)\n this._resolvedCache.set(wrapped.address, wrapped)\n return wrapped as ModuleInstance as T\n })\n const result = remainderParts.length > 0 ? await instance?.resolve(remainderParts, options) : instance\n return result ? [result] : []\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { forget } from '@xylabs/forget'\nimport { Address, isAddress } from '@xylabs/hex'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractModuleProxy, ModuleProxyParams } from '@xyo-network/bridge-abstract'\nimport {\n AttachableModuleInstance,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryResult,\n ResolveHelper,\n ResolveHelperConfig,\n} from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport interface BridgeQuerySender {\n sendBridgeQuery: <TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: Address,\n query: TQuery,\n payloads?: TIn[],\n ) => Promise<ModuleQueryResult<TOut>>\n}\n\nexport type HttpModuleProxyParams = ModuleProxyParams & {\n querySender: BridgeQuerySender\n}\n\nexport class HttpModuleProxy<\n TWrappedModule extends ModuleInstance = ModuleInstance,\n TParams extends Omit<HttpModuleProxyParams, 'config'> & { config: TWrappedModule['config'] } = Omit<HttpModuleProxyParams, 'config'> & {\n config: TWrappedModule['config']\n },\n >\n extends AbstractModuleProxy<TWrappedModule, TParams>\n implements AttachableModuleInstance<TParams, TWrappedModule['eventData']>\n{\n static createCount = 0\n\n constructor(params: TParams) {\n HttpModuleProxy.createCount = HttpModuleProxy.createCount + 1\n if (Math.floor(HttpModuleProxy.createCount / 10) === HttpModuleProxy.createCount / 10) {\n console.log(`HttpModuleProxy.createCount: ${HttpModuleProxy.createCount}`)\n }\n super(params)\n }\n\n async proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads: Payload[] = []): Promise<ModuleQueryResult> {\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists([query, ...(payloads ?? [])]))\n }\n const result = await this.params.querySender.sendBridgeQuery(this.params.moduleAddress, query, payloads)\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists(result.flat()))\n }\n return result\n }\n\n override async publicChildren(): Promise<ModuleInstance[]> {\n return (\n await Promise.all(\n Object.values(await this.childAddressMap())\n .filter(exists)\n .map((address) => this.resolve(address)),\n )\n ).filter(exists)\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(): Promise<ModuleInstance[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter, options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n /** @deprecated use '*' if trying to resolve all */\n override async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter, options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n idOrFilter: ModuleFilter<T> | ModuleIdentifier = '*',\n options: ModuleFilterOptions<T> = {},\n ): Promise<T | T[] | undefined> {\n const config: ResolveHelperConfig = {\n address: this.address,\n dead: this.dead,\n downResolver: this.downResolver,\n logger: this.logger,\n module: this,\n transformers: this.moduleIdentifierTransformers,\n upResolver: this.upResolver,\n }\n if (idOrFilter === '*') {\n return [...(await this.publicChildren()), await this.params.host.resolve(this.address)] as T[]\n }\n switch (typeof idOrFilter) {\n case 'string': {\n const parts = idOrFilter.split(':')\n const first = assertEx(parts.shift(), () => 'Missing first')\n const remainingPath = parts.join(':')\n const address =\n isAddress(first) ? first\n : this.id === first ? this.address\n : this.childAddressByName(first)\n if (!address) return undefined\n const firstInstance = (await this.params.host.resolve(address)) as ModuleInstance | undefined\n return (remainingPath ? await firstInstance?.resolve(remainingPath) : firstInstance) as T | undefined\n }\n case 'object': {\n return (await ResolveHelper.resolve(config, idOrFilter, options)).filter((mod) => mod.address !== this.address)\n }\n default: {\n return (await ResolveHelper.resolve(config, idOrFilter, options)).filter((mod) => mod.address !== this.address)\n }\n }\n }\n}\n"],"mappings":"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","names":["HttpBridgeConfigSchema","import_assert","import_exists","import_object","import_module_model","import_assert","import_exists","import_forget","import_bridge_abstract","import_module_model","import_async_mutex","import_lru_cache","import_assert","import_hex","import_bridge_abstract","import_module_model","HttpModuleProxy","AbstractModuleProxy","constructor","params","createCount","Math","floor","console","log","proxyQueryHandler","query","payloads","archiving","isAllowedArchivingQuery","schema","forget","storeToArchivists","result","querySender","sendBridgeQuery","moduleAddress","flat","publicChildren","Promise","all","Object","values","childAddressMap","filter","exists","map","address","resolve","idOrFilter","options","config","dead","downResolver","logger","module","transformers","moduleIdentifierTransformers","upResolver","host","parts","split","first","assertEx","shift","remainingPath","join","isAddress","id","childAddressByName","undefined","firstInstance","ResolveHelper","mod","NotFoundModule","notFound","HttpBridgeModuleResolver","AbstractBridgeModuleResolver","_resolvedCache","LRUCache","max","_resolvedCacheMutex","Mutex","querySender","params","moduleUrl","address","URL","rootUrl","resolveHandler","id","options","parentResult","length","idParts","split","untransformedFirstPart","assertEx","shift","firstPart","ResolveHelper","transformModuleIdentifier","isAddress","remainderParts","join","instance","runExclusive","cachedMod","get","isModuleInstance","result","resolve","maxDepth","account","Account","randomSync","finalParams","archiving","config","schema","ModuleConfigSchema","host","moduleAddress","onQuerySendFinished","onQuerySendStarted","logger","debug","console","log","proxy","HttpModuleProxy","state","ex","error","message","set","configSchema","find","payload","ConfigSchema","setConfig","start","wrapped","wrapModuleWithType","asModuleInstance","HttpBridgeBase","AbstractBridge","_axios","_discoverRootsMutex","Mutex","_failureTimeCache","LRUCache","max","maxFailureCacheSize","_querySemaphore","_resolver","axios","params","clientUrl","assertEx","config","client","url","nodeUrl","failureRetryTime","defaultFailureRetryTime","maxConnections","defaultMaxConnections","maxPayloadSizeWarning","defaultMaxPayloadSizeWarning","querySemaphore","Semaphore","resolver","HttpBridgeModuleResolver","additionalSigners","archiving","resolveArchivists","resolveArchivingArchivists","bind","bridge","onQuerySendFinished","args","forget","emit","module","onQuerySendStarted","querySender","root","rootUrl","wrapperAccount","account","exposeHandler","_id","_options","Error","exposedHandler","getRoots","force","runExclusive","_roots","undefined","state","getRootState","logger","debug","length","nodeManifest","find","isPayloadOfSchemaType","NodeManifestPayloadSchema","mods","resolveRootNode","filter","exists","moduleUrl","address","URL","sendBridgeQuery","targetAddress","query","payloads","lastFailureTime","get","now","Date","timeSincePreviousFailure","delete","acquire","payloadSize","JSON","stringify","warn","moduleAddress","schema","href","result","post","status","error","data","ex","toJsonString","release","unexposeHandler","queryPayload","ModuleStateQuerySchema","boundQuery","bindQuery","response","toString","errors","message","rootModule","resolveHandler","manifest","at","constructor","name","rootNode","asAttachableNodeInstance","id","downResolver","addResolver","AxiosJson","configSchemas","HttpBridgeConfigSchema","defaultConfigSchema","HttpBridge","HttpBridgeBase","_app","_exposedModules","_server","app","express","use","json","post","req","res","handlePost","exposeChild","mod","options","maxDepth","console","log","address","id","assertEx","config","host","push","WeakRef","children","publicChildren","logger","toJsonString","map","child","exposedChildren","Promise","all","required","flat","filter","exists","allExposed","exposedMod","exposeHandler","resolveAddressToInstanceUp","Error","exposedHandler","ref","deref","startHandler","startHttpServer","stopHandler","_timeout","stopHttpServer","unexposeHandler","find","callLocalModule","query","payloads","allPayloads","body","isQueryBoundWitness","payload","route","then","result","status","error","envelope","data","catch","ex","message","listen","port","server","close","undefined"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/HttpBridgeConfig.ts","../../src/HttpBridgeFull.ts","../../src/HttpBridgeBase.ts","../../src/HttpBridgeModuleResolver.ts","../../src/ModuleProxy/ModuleProxy.ts"],"sourcesContent":["export * from './HttpBridgeConfig'\nexport * from './HttpBridgeFull'\n","import { EmptyObject } from '@xylabs/object'\nimport { BridgeConfig } from '@xyo-network/bridge-model'\n\nexport type HttpBridgeConfigSchema = 'network.xyo.bridge.http.config'\nexport const HttpBridgeConfigSchema: HttpBridgeConfigSchema = 'network.xyo.bridge.http.config'\n\nexport type HttpBridgeConfig<TConfig extends EmptyObject = EmptyObject, TSchema extends string | void = void> = BridgeConfig<\n {\n client?: BridgeConfig['client'] & {\n url: string\n }\n failureRetryTime?: number\n failureTimeCacheMax?: number\n host?: {\n port: number\n }\n maxConnections?: number\n maxPayloadSizeWarning?: number\n /** @deprecated use client.url instead */\n nodeUrl?: string\n schema: HttpBridgeConfigSchema\n } & TConfig,\n TSchema extends string ? TSchema : HttpBridgeConfigSchema\n>\n","import { Server } from 'node:http'\n\nimport { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { Address } from '@xylabs/hex'\nimport { toJsonString } from '@xylabs/object'\nimport {\n asyncHandler,\n customPoweredByHeader,\n disableCaseSensitiveRouting,\n disableExpressDefaultPoweredByHeader,\n jsonBodyParser,\n responseProfiler,\n useRequestCounters,\n} from '@xylabs/sdk-api-express-ecs'\nimport { isQueryBoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BridgeExposeOptions, BridgeParams, BridgeUnexposeOptions } from '@xyo-network/bridge-model'\nimport { standardResponses } from '@xyo-network/express-node-middleware'\nimport { AnyConfigSchema, creatableModule, ModuleInstance, ModuleQueryResult, resolveAddressToInstanceUp } from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport express, { Application, Request, Response } from 'express'\nimport { StatusCodes } from 'http-status-codes'\n\nimport { HttpBridgeBase } from './HttpBridgeBase'\nimport { HttpBridgeConfig } from './HttpBridgeConfig'\n\n/**\n * The type of the path parameters for the address path.\n */\ntype AddressPathParams = {\n address: Address\n}\n\n/**\n * The type of the request body for the address path.\n */\ntype PostAddressRequestBody = [QueryBoundWitness, undefined | Payload[]]\n\n// TODO: This does not match the error response shape of the legacy bridge BUT it its the\n// shape this bridge is currently returning. Massage this into the standard\n// error shape constructed via middleware.\ntype ErrorResponseBody = {\n error: string\n}\n\nexport interface HttpBridgeParams extends BridgeParams<AnyConfigSchema<HttpBridgeConfig>> {}\n\n@creatableModule()\nexport class HttpBridge<TParams extends HttpBridgeParams> extends HttpBridgeBase<TParams> {\n protected _app?: Application\n protected _exposedModules: WeakRef<ModuleInstance>[] = []\n protected _server?: Server\n\n protected get app() {\n if (!this._app) this._app = this.initializeApp()\n return assertEx(this._app, () => 'App not initialized')\n }\n\n async exposeChild(mod: ModuleInstance, options?: BridgeExposeOptions | undefined): Promise<ModuleInstance[]> {\n const { maxDepth = 5 } = options ?? {}\n assertEx(this.config.host, () => 'Not configured as a host')\n this._exposedModules.push(new WeakRef(mod))\n const children = maxDepth > 0 ? (await mod.publicChildren?.()) ?? [] : []\n this.logger.log(`childrenToExpose [${mod.id}][${mod.address}]: ${toJsonString(children.map((child) => child.id))}`)\n const exposedChildren = (await Promise.all(children.map((child) => this.exposeChild(child, { maxDepth: maxDepth - 1, required: false }))))\n .flat()\n .filter(exists)\n const allExposed = [mod, ...exposedChildren]\n\n for (const exposedMod of allExposed) this.logger?.log(`exposed: ${exposedMod.address} [${mod.id}]`)\n\n return allExposed\n }\n\n override async exposeHandler(address: Address, options?: BridgeExposeOptions | undefined): Promise<ModuleInstance[]> {\n const { required = true } = options ?? {}\n const mod = await resolveAddressToInstanceUp(this, address)\n if (required && !mod) {\n throw new Error(`Unable to find required module: ${address}`)\n }\n if (mod) {\n return this.exposeChild(mod, options)\n }\n return []\n }\n\n override exposedHandler(): Address[] {\n return this._exposedModules.map((ref) => ref.deref()?.address).filter(exists)\n }\n\n override async startHandler(): Promise<boolean> {\n return (await super.startHandler()) && (await this.startHttpServer())\n }\n\n override async stopHandler(_timeout?: number | undefined): Promise<boolean> {\n return (await super.stopHandler()) && (await this.stopHttpServer())\n }\n\n override async unexposeHandler(address: Address, options?: BridgeUnexposeOptions | undefined): Promise<ModuleInstance[]> {\n const { maxDepth = 2, required = true } = options ?? {}\n assertEx(this.config.host, () => 'Not configured as a host')\n const mod = this._exposedModules.find((ref) => ref.deref()?.address === address)?.deref()\n assertEx(!required || mod, () => `Module not exposed: ${address}`)\n this._exposedModules = this._exposedModules.filter((ref) => ref.deref()?.address !== address)\n if (mod) {\n const children = maxDepth > 0 ? (await mod.publicChildren?.()) ?? [] : []\n const exposedChildren = (\n await Promise.all(children.map((child) => this.unexposeHandler(child.address, { maxDepth: maxDepth - 1, required: false })))\n )\n .flat()\n .filter(exists)\n return [mod, ...exposedChildren]\n }\n return []\n }\n\n protected async callLocalModule(address: Address, query: QueryBoundWitness, payloads: Payload[]): Promise<ModuleQueryResult | null> {\n const mod = this._exposedModules.find((ref) => ref.deref()?.address === address)?.deref()\n return mod ? await mod.query(query, payloads) : null\n }\n\n protected async handleGet(req: Request<AddressPathParams, ModuleQueryResult, PostAddressRequestBody>, res: Response) {\n const { address } = req.params\n try {\n if (address == this.address) {\n res.json(await this.stateQuery(this.account))\n } else {\n const mod = this._exposedModules.find((ref) => ref.deref()?.address === address)?.deref()\n // TODO: Use standard errors middleware\n if (mod) {\n res.json(await mod.stateQuery(this.account))\n } else {\n res.status(StatusCodes.NOT_FOUND).json({ error: 'Module not found' })\n }\n }\n } catch (ex) {\n // TODO: Sanitize message\n res.status(StatusCodes.INTERNAL_SERVER_ERROR).json({ error: (ex as Error).message })\n }\n }\n\n protected async handlePost(req: Request<AddressPathParams, ModuleQueryResult, PostAddressRequestBody>, res: Response) {\n const { address } = req.params\n const [bw, payloads = []] = Array.isArray(req.body) ? req.body : []\n const query = isQueryBoundWitness(bw) ? bw : undefined\n if (!query) {\n // TODO: Use standard errors middleware\n res.status(StatusCodes.BAD_REQUEST).json({ error: 'No query provided' })\n return\n }\n try {\n if (address == this.address) {\n const result = await this.query(query, payloads)\n return res.json(result)\n } else {\n const result = await this.callLocalModule(address, query, payloads)\n // TODO: Use standard errors middleware\n if (result === null) {\n res.status(StatusCodes.NOT_FOUND).json({ error: 'Module not found' })\n } else {\n res.json(result)\n }\n }\n } catch (ex) {\n // TODO: Sanitize message\n res.status(StatusCodes.INTERNAL_SERVER_ERROR).json({ error: (ex as Error).message })\n }\n }\n\n protected initializeApp() {\n // Create the express app\n const app = express()\n\n // Add middleware\n app.use(responseProfiler)\n app.use(jsonBodyParser)\n app.use(standardResponses)\n disableExpressDefaultPoweredByHeader(app)\n app.use(customPoweredByHeader)\n disableCaseSensitiveRouting(app)\n useRequestCounters(app)\n\n // Add routes\n // Redirect all requests to the root to this module's address\n app.get('/', (_req, res) => res.redirect(StatusCodes.MOVED_TEMPORARILY, `/${this.address}`))\n app.post('/', (_req, res) => res.redirect(StatusCodes.TEMPORARY_REDIRECT, `/${this.address}`))\n\n app.get<AddressPathParams, ModuleQueryResult>(\n '/:address',\n asyncHandler(async (req, res) => await this.handleGet(req, res)),\n )\n app.post<AddressPathParams, ModuleQueryResult, PostAddressRequestBody>(\n '/:address',\n asyncHandler(async (req, res) => await this.handlePost(req, res)),\n )\n return app\n }\n\n protected startHttpServer(): Promise<boolean> {\n if (this.config.host) {\n assertEx(!this._server, () => 'Server already started')\n this._server = this.app.listen(this.config.host?.port ?? 3030)\n }\n return Promise.resolve(true)\n }\n\n protected stopHttpServer(): Promise<boolean> {\n if (this.config.host) {\n return new Promise((resolve, reject) => {\n if (this._server) {\n this._server.close((err) => {\n if (err) {\n reject(err)\n } else {\n this._server = undefined\n resolve(true)\n }\n })\n }\n })\n }\n return Promise.resolve(true)\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { AxiosError, AxiosJson } from '@xylabs/axios'\nimport { exists } from '@xylabs/exists'\nimport { forget } from '@xylabs/forget'\nimport { Address } from '@xylabs/hex'\nimport { toJsonString } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\nimport { ApiEnvelope } from '@xyo-network/api-models'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractBridge } from '@xyo-network/bridge-abstract'\nimport {\n BridgeExposeOptions,\n BridgeModule,\n BridgeParams,\n BridgeUnexposeOptions,\n QuerySendFinishedEventArgs,\n QuerySendStartedEventArgs,\n} from '@xyo-network/bridge-model'\nimport { ModuleManifestPayload, NodeManifestPayload, NodeManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport {\n AnyConfigSchema,\n creatableModule,\n ModuleInstance,\n ModuleQueryResult,\n ModuleResolverInstance,\n ModuleStateQuery,\n ModuleStateQuerySchema,\n} from '@xyo-network/module-model'\nimport { asAttachableNodeInstance } from '@xyo-network/node-model'\nimport { isPayloadOfSchemaType, Payload, Schema, WithMeta } from '@xyo-network/payload-model'\nimport { Mutex, Semaphore } from 'async-mutex'\nimport { LRUCache } from 'lru-cache'\n\nimport { HttpBridgeConfig, HttpBridgeConfigSchema } from './HttpBridgeConfig'\nimport { HttpBridgeModuleResolver } from './HttpBridgeModuleResolver'\nimport { BridgeQuerySender } from './ModuleProxy'\n\nexport interface HttpBridgeParams extends BridgeParams<AnyConfigSchema<HttpBridgeConfig>> {\n axios?: AxiosJson\n}\n\n@creatableModule()\nexport class HttpBridgeBase<TParams extends HttpBridgeParams> extends AbstractBridge<TParams> implements BridgeModule<TParams>, BridgeQuerySender {\n static axios = new AxiosJson()\n static override readonly configSchemas: Schema[] = [...super.configSchemas, HttpBridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = HttpBridgeConfigSchema\n static defaultFailureRetryTime = 1000 * 60\n static defaultMaxConnections = 4\n static defaultMaxPayloadSizeWarning = 256 * 256\n static maxFailureCacheSize = 1000\n\n private _axios?: AxiosJson\n private _discoverRootsMutex = new Mutex()\n private _failureTimeCache = new LRUCache<Address, number>({ max: HttpBridgeBase.maxFailureCacheSize })\n private _querySemaphore?: Semaphore\n private _resolver?: HttpBridgeModuleResolver\n\n get axios() {\n this._axios = this._axios ?? this.params.axios ?? HttpBridgeBase.axios\n return this._axios\n }\n\n get clientUrl() {\n // eslint-disable-next-line deprecation/deprecation\n return assertEx(this.config.client?.url ?? this.config.nodeUrl, () => 'No Url Set')\n }\n\n get failureRetryTime() {\n return this.config.failureRetryTime ?? HttpBridgeBase.defaultFailureRetryTime\n }\n\n get maxConnections() {\n return this.config.maxConnections ?? HttpBridgeBase.defaultMaxConnections\n }\n\n get maxPayloadSizeWarning() {\n return this.config.maxPayloadSizeWarning ?? HttpBridgeBase.defaultMaxPayloadSizeWarning\n }\n\n get querySemaphore() {\n this._querySemaphore = this._querySemaphore ?? new Semaphore(this.maxConnections)\n return this._querySemaphore\n }\n\n override get resolver() {\n this._resolver =\n this._resolver ??\n new HttpBridgeModuleResolver({\n additionalSigners: this.additionalSigners,\n archiving: { ...this.archiving, resolveArchivists: this.resolveArchivingArchivists.bind(this) },\n bridge: this,\n onQuerySendFinished: (args: Omit<QuerySendFinishedEventArgs, 'mod'>) => {\n forget(this.emit('querySendFinished', { mod: this, ...args }))\n },\n onQuerySendStarted: (args: Omit<QuerySendStartedEventArgs, 'mod'>) => {\n forget(this.emit('querySendStarted', { mod: this, ...args }))\n },\n querySender: this,\n root: this,\n rootUrl: this.clientUrl,\n wrapperAccount: this.account,\n })\n return this._resolver\n }\n\n override exposeHandler(_id: string, _options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n override exposedHandler(): Promisable<Address[]> {\n throw new Error('Unsupported')\n }\n\n async getRoots(force?: boolean): Promise<ModuleInstance[]> {\n return await this._discoverRootsMutex.runExclusive(async () => {\n if (this._roots === undefined || force) {\n const state = await this.getRootState()\n this.logger?.debug(`HttpBridge:discoverRoots.state [${state?.length}]`)\n const nodeManifest = state?.find(isPayloadOfSchemaType<WithMeta<NodeManifestPayload>>(NodeManifestPayloadSchema))\n if (nodeManifest) {\n const mods = (await this.resolveRootNode(nodeManifest)).filter(exists)\n this.logger?.debug(`HttpBridge:discoverRoots [${mods.length}]`)\n this._roots = mods\n } else {\n this._roots = []\n }\n }\n return this._roots\n })\n }\n\n moduleUrl(address: Address) {\n return new URL(address, this.clientUrl)\n }\n\n async sendBridgeQuery<TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: Address,\n query: TQuery,\n payloads?: TIn[],\n ): Promise<ModuleQueryResult<TOut>> {\n const lastFailureTime = this._failureTimeCache.get(targetAddress)\n if (lastFailureTime !== undefined) {\n const now = Date.now()\n const timeSincePreviousFailure = now - lastFailureTime\n if (timeSincePreviousFailure > this.failureRetryTime) {\n throw new Error(`target module failed recently [${targetAddress}] [${timeSincePreviousFailure}ms ago]`)\n }\n this._failureTimeCache.delete(targetAddress)\n }\n try {\n await this.querySemaphore.acquire()\n const payloadSize = JSON.stringify([query, payloads]).length\n if (payloadSize > this.maxPayloadSizeWarning) {\n this.logger?.warn(\n `Large targetQuery being sent: ${payloadSize} bytes [${this.address}][${this.moduleAddress}] [${query.schema}] [${payloads?.length}]`,\n )\n }\n const moduleUrl = this.moduleUrl(targetAddress).href\n const result = await this.axios.post<ApiEnvelope<ModuleQueryResult<TOut>>>(moduleUrl, [query, payloads])\n if (result.status === 404) {\n throw `target module not found [${moduleUrl}] [${result.status}]`\n }\n if (result.status >= 400) {\n this.logger?.error(`targetQuery failed [${moduleUrl}]`)\n throw `targetQuery failed [${moduleUrl}] [${result.status}]`\n }\n return result.data?.data\n } catch (ex) {\n const error = ex as AxiosError\n this.logger?.error(`Error: ${toJsonString(error)}`)\n throw error\n } finally {\n this.querySemaphore.release()\n }\n }\n\n override unexposeHandler(_id: string, _options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]> {\n throw new Error('Unsupported')\n }\n\n private async getRootState() {\n const queryPayload: ModuleStateQuery = { schema: ModuleStateQuerySchema }\n const boundQuery = await this.bindQuery(queryPayload)\n try {\n const response = await this.axios.post<ApiEnvelope<ModuleQueryResult>>(this.clientUrl.toString(), boundQuery)\n if (response.status === 404) {\n return []\n }\n const [, payloads, errors] = response.data.data\n if (errors.length > 0) {\n throw new Error(`getRootState failed: ${JSON.stringify(errors, null, 2)}`)\n }\n return payloads\n } catch (ex) {\n const error = ex as Error\n this.logger?.warn(`Unable to connect to remote node: ${error.message} [${this.clientUrl}]`)\n }\n }\n\n private async resolveRootNode(nodeManifest: ModuleManifestPayload): Promise<ModuleInstance[]> {\n const rootModule = assertEx(\n (\n await this.resolver.resolveHandler(\n assertEx(nodeManifest.status?.address, () => 'Root has no address'),\n undefined,\n { manifest: nodeManifest },\n )\n ).at(0),\n () => `Root not found [${nodeManifest.status?.address}]`,\n )\n assertEx(rootModule.constructor.name !== 'HttpModuleProxy', () => 'rootModule is not a Wrapper')\n const rootNode = asAttachableNodeInstance(rootModule, 'Root modules is not a node')\n if (rootNode) {\n this.logger.debug(`rootNode: ${rootNode.id}`)\n this.downResolver.addResolver(rootNode as unknown as ModuleResolverInstance)\n return [rootNode]\n }\n return []\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address, isAddress } from '@xylabs/hex'\nimport { Account } from '@xyo-network/account'\nimport { AbstractBridgeModuleResolver, BridgeModuleResolverParams, wrapModuleWithType } from '@xyo-network/bridge-abstract'\nimport { ConfigPayload, ConfigSchema } from '@xyo-network/config-payload-plugin'\nimport {\n asModuleInstance,\n isModuleInstance,\n ModuleConfig,\n ModuleConfigSchema,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ResolveHelper,\n} from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\nimport { Mutex } from 'async-mutex'\nimport { LRUCache } from 'lru-cache'\n\nimport { BridgeQuerySender, HttpModuleProxy, HttpModuleProxyParams } from './ModuleProxy'\n\nconst NotFoundModule = { notFound: true }\n\nexport interface HttpBridgeModuleResolverParams extends BridgeModuleResolverParams {\n querySender: BridgeQuerySender\n rootUrl: string\n}\n\nexport class HttpBridgeModuleResolver<\n T extends HttpBridgeModuleResolverParams = HttpBridgeModuleResolverParams,\n> extends AbstractBridgeModuleResolver<T> {\n protected _resolvedCache = new LRUCache<Address, ModuleInstance | typeof NotFoundModule>({ max: 1000 })\n protected _resolvedCacheMutex = new Mutex()\n\n get querySender() {\n return this.params.querySender\n }\n\n moduleUrl(address: Address) {\n return new URL(address, this.params.rootUrl)\n }\n\n override async resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n params?: Partial<HttpModuleProxyParams>,\n ): Promise<T[]> {\n const parentResult = await super.resolveHandler(id, options)\n if (parentResult.length > 0) {\n return parentResult\n }\n const idParts = id.split(':')\n const untransformedFirstPart = assertEx(idParts.shift(), () => 'Missing module identifier')\n const firstPart = await ResolveHelper.transformModuleIdentifier(untransformedFirstPart)\n assertEx(isAddress(firstPart), () => `Invalid module address: ${firstPart}`)\n const remainderParts = idParts.join(':')\n const instance: T | undefined = await this._resolvedCacheMutex.runExclusive(async () => {\n const cachedMod = this._resolvedCache.get(firstPart as Address)\n if (cachedMod) {\n if (isModuleInstance(cachedMod)) {\n const result = idParts.length <= 0 ? cachedMod : cachedMod.resolve(remainderParts, { ...options, maxDepth: (options?.maxDepth ?? 5) - 1 })\n return result as T\n } else {\n //return cached 404\n return\n }\n }\n const account = await Account.random()\n const finalParams: HttpModuleProxyParams = {\n account,\n archiving: this.params.archiving,\n config: { schema: ModuleConfigSchema },\n host: this,\n moduleAddress: firstPart as Address,\n onQuerySendFinished: this.params.onQuerySendFinished,\n onQuerySendStarted: this.params.onQuerySendStarted,\n querySender: this.params.querySender,\n ...params,\n }\n\n this.logger?.debug(`creating HttpProxy [${firstPart}] ${id}`)\n console.log(`creating HttpProxy [${firstPart}] ${id}`)\n\n const proxy = new HttpModuleProxy<T, HttpModuleProxyParams>(finalParams)\n\n let state: Payload[] | undefined\n\n try {\n state = await proxy.state()\n } catch (ex) {\n const error = ex as Error\n this.logger?.log(error.message)\n }\n\n if (!state) {\n //cache the fact that it was not found\n this._resolvedCache.set(firstPart as Address, NotFoundModule)\n return\n }\n\n const configSchema = (state.find((payload) => payload.schema === ConfigSchema) as ConfigPayload | undefined)?.config\n const config = assertEx(\n state.find((payload) => payload.schema === configSchema),\n () => 'Unable to locate config',\n ) as ModuleConfig\n proxy.setConfig(config)\n\n console.log(`created HttpProxy [${firstPart}] ${proxy.id}`)\n\n await proxy.start?.()\n const wrapped = wrapModuleWithType(proxy, account) as unknown as T\n assertEx(asModuleInstance<T>(wrapped, {}), () => `Failed to asModuleInstance [${id}]`)\n this._resolvedCache.set(wrapped.address, wrapped)\n return wrapped as ModuleInstance as T\n })\n const result = remainderParts.length > 0 ? await instance?.resolve(remainderParts, options) : instance\n return result ? [result] : []\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { forget } from '@xylabs/forget'\nimport { Address, isAddress } from '@xylabs/hex'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { AbstractModuleProxy, ModuleProxyParams } from '@xyo-network/bridge-abstract'\nimport {\n AttachableModuleInstance,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryResult,\n ResolveHelper,\n ResolveHelperConfig,\n} from '@xyo-network/module-model'\nimport { Payload } from '@xyo-network/payload-model'\n\nexport interface BridgeQuerySender {\n sendBridgeQuery: <TOut extends Payload = Payload, TQuery extends QueryBoundWitness = QueryBoundWitness, TIn extends Payload = Payload>(\n targetAddress: Address,\n query: TQuery,\n payloads?: TIn[],\n ) => Promise<ModuleQueryResult<TOut>>\n}\n\nexport type HttpModuleProxyParams = ModuleProxyParams & {\n querySender: BridgeQuerySender\n}\n\nexport class HttpModuleProxy<\n TWrappedModule extends ModuleInstance = ModuleInstance,\n TParams extends Omit<HttpModuleProxyParams, 'config'> & { config: TWrappedModule['config'] } = Omit<HttpModuleProxyParams, 'config'> & {\n config: TWrappedModule['config']\n },\n >\n extends AbstractModuleProxy<TWrappedModule, TParams>\n implements AttachableModuleInstance<TParams, TWrappedModule['eventData']>\n{\n static createCount = 0\n\n constructor(params: TParams) {\n HttpModuleProxy.createCount = HttpModuleProxy.createCount + 1\n if (Math.floor(HttpModuleProxy.createCount / 10) === HttpModuleProxy.createCount / 10) {\n console.log(`HttpModuleProxy.createCount: ${HttpModuleProxy.createCount}`)\n }\n super(params)\n }\n\n async proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads: Payload[] = []): Promise<ModuleQueryResult> {\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists([query, ...(payloads ?? [])]))\n }\n const result = await this.params.querySender.sendBridgeQuery(this.params.moduleAddress, query, payloads)\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists(result.flat()))\n }\n return result\n }\n\n override async publicChildren(): Promise<ModuleInstance[]> {\n return (\n await Promise.all(\n Object.values(await this.childAddressMap())\n .filter(exists)\n .map((address) => this.resolve(address)),\n )\n ).filter(exists)\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(): Promise<ModuleInstance[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter, options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n /** @deprecated use '*' if trying to resolve all */\n override async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter, options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n idOrFilter: ModuleFilter<T> | ModuleIdentifier = '*',\n options: ModuleFilterOptions<T> = {},\n ): Promise<T | T[] | undefined> {\n const config: ResolveHelperConfig = {\n address: this.address,\n dead: this.dead,\n downResolver: this.downResolver,\n logger: this.logger,\n mod: this,\n transformers: this.moduleIdentifierTransformers,\n upResolver: this.upResolver,\n }\n if (idOrFilter === '*') {\n return [...(await this.publicChildren()), await this.params.host.resolve(this.address)] as T[]\n }\n switch (typeof idOrFilter) {\n case 'string': {\n const parts = idOrFilter.split(':')\n const first = assertEx(parts.shift(), () => 'Missing first')\n const remainingPath = parts.join(':')\n const address =\n isAddress(first) ? first\n : this.id === first ? this.address\n : this.childAddressByName(first)\n if (!address) return undefined\n const firstInstance = (await this.params.host.resolve(address)) as ModuleInstance | undefined\n return (remainingPath ? await firstInstance?.resolve(remainingPath) : firstInstance) as T | undefined\n }\n case 'object': {\n return (await ResolveHelper.resolve(config, idOrFilter, options)).filter((mod) => mod.address !== this.address)\n }\n default: {\n return (await ResolveHelper.resolve(config, idOrFilter, options)).filter((mod) => mod.address !== this.address)\n }\n }\n }\n}\n"],"mappings":"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","names":["HttpBridgeConfigSchema","import_assert","import_exists","import_object","import_module_model","import_assert","import_exists","import_forget","import_bridge_abstract","import_module_model","import_async_mutex","import_lru_cache","import_assert","import_hex","import_bridge_abstract","import_module_model","HttpModuleProxy","AbstractModuleProxy","constructor","params","createCount","Math","floor","console","log","proxyQueryHandler","query","payloads","archiving","isAllowedArchivingQuery","schema","forget","storeToArchivists","result","querySender","sendBridgeQuery","moduleAddress","flat","publicChildren","Promise","all","Object","values","childAddressMap","filter","exists","map","address","resolve","idOrFilter","options","config","dead","downResolver","logger","mod","transformers","moduleIdentifierTransformers","upResolver","host","parts","split","first","assertEx","shift","remainingPath","join","isAddress","id","childAddressByName","undefined","firstInstance","ResolveHelper","NotFoundModule","notFound","HttpBridgeModuleResolver","AbstractBridgeModuleResolver","_resolvedCache","LRUCache","max","_resolvedCacheMutex","Mutex","querySender","params","moduleUrl","address","URL","rootUrl","resolveHandler","id","options","parentResult","length","idParts","split","untransformedFirstPart","assertEx","shift","firstPart","ResolveHelper","transformModuleIdentifier","isAddress","remainderParts","join","instance","runExclusive","cachedMod","get","isModuleInstance","result","resolve","maxDepth","account","Account","random","finalParams","archiving","config","schema","ModuleConfigSchema","host","moduleAddress","onQuerySendFinished","onQuerySendStarted","logger","debug","console","log","proxy","HttpModuleProxy","state","ex","error","message","set","configSchema","find","payload","ConfigSchema","setConfig","start","wrapped","wrapModuleWithType","asModuleInstance","HttpBridgeBase","AbstractBridge","_axios","_discoverRootsMutex","Mutex","_failureTimeCache","LRUCache","max","maxFailureCacheSize","_querySemaphore","_resolver","axios","params","clientUrl","assertEx","config","client","url","nodeUrl","failureRetryTime","defaultFailureRetryTime","maxConnections","defaultMaxConnections","maxPayloadSizeWarning","defaultMaxPayloadSizeWarning","querySemaphore","Semaphore","resolver","HttpBridgeModuleResolver","additionalSigners","archiving","resolveArchivists","resolveArchivingArchivists","bind","bridge","onQuerySendFinished","args","forget","emit","mod","onQuerySendStarted","querySender","root","rootUrl","wrapperAccount","account","exposeHandler","_id","_options","Error","exposedHandler","getRoots","force","runExclusive","_roots","undefined","state","getRootState","logger","debug","length","nodeManifest","find","isPayloadOfSchemaType","NodeManifestPayloadSchema","mods","resolveRootNode","filter","exists","moduleUrl","address","URL","sendBridgeQuery","targetAddress","query","payloads","lastFailureTime","get","now","Date","timeSincePreviousFailure","delete","acquire","payloadSize","JSON","stringify","warn","moduleAddress","schema","href","result","post","status","error","data","ex","toJsonString","release","unexposeHandler","queryPayload","ModuleStateQuerySchema","boundQuery","bindQuery","response","toString","errors","message","rootModule","resolveHandler","manifest","at","constructor","name","rootNode","asAttachableNodeInstance","id","downResolver","addResolver","AxiosJson","configSchemas","HttpBridgeConfigSchema","defaultConfigSchema","HttpBridge","HttpBridgeBase","_app","_exposedModules","_server","app","initializeApp","assertEx","exposeChild","mod","options","maxDepth","config","host","push","WeakRef","children","publicChildren","logger","log","id","address","toJsonString","map","child","exposedChildren","Promise","all","required","flat","filter","exists","allExposed","exposedMod","exposeHandler","resolveAddressToInstanceUp","Error","exposedHandler","ref","deref","startHandler","startHttpServer","stopHandler","_timeout","stopHttpServer","unexposeHandler","find","callLocalModule","query","payloads","handleGet","req","res","params","json","stateQuery","account","status","StatusCodes","NOT_FOUND","error","ex","INTERNAL_SERVER_ERROR","message","handlePost","bw","Array","isArray","body","isQueryBoundWitness","undefined","BAD_REQUEST","result","express","use","responseProfiler","jsonBodyParser","standardResponses","disableExpressDefaultPoweredByHeader","customPoweredByHeader","disableCaseSensitiveRouting","useRequestCounters","get","_req","redirect","MOVED_TEMPORARILY","post","TEMPORARY_REDIRECT","asyncHandler","listen","port","resolve","reject","close","err"]}