@toa.io/extensions.origins 1.0.0-alpha.3 → 1.0.0-alpha.31

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 (39) hide show
  1. package/package.json +7 -6
  2. package/readme.md +38 -2
  3. package/source/Factory.ts +13 -18
  4. package/source/protocols/amqp/aspect.js +6 -13
  5. package/source/protocols/http/.aspect/permissions.js +3 -8
  6. package/source/protocols/http/aspect.js +5 -12
  7. package/source/protocols/index.ts +5 -6
  8. package/source/protocols/pubsub/Aspect.ts +87 -0
  9. package/source/protocols/pubsub/Origin.ts +10 -0
  10. package/source/protocols/pubsub/Topic.ts +23 -0
  11. package/source/protocols/pubsub/index.ts +8 -0
  12. package/transpiled/Factory.d.ts +2 -3
  13. package/transpiled/Factory.js +12 -15
  14. package/transpiled/Factory.js.map +1 -1
  15. package/transpiled/protocols/amqp/aspect.d.ts +2 -2
  16. package/transpiled/protocols/amqp/aspect.js +6 -12
  17. package/transpiled/protocols/amqp/aspect.js.map +1 -1
  18. package/transpiled/protocols/http/.aspect/permissions.d.ts +1 -2
  19. package/transpiled/protocols/http/.aspect/permissions.js +1 -5
  20. package/transpiled/protocols/http/.aspect/permissions.js.map +1 -1
  21. package/transpiled/protocols/http/aspect.d.ts +2 -3
  22. package/transpiled/protocols/http/aspect.js +5 -10
  23. package/transpiled/protocols/http/aspect.js.map +1 -1
  24. package/transpiled/protocols/index.d.ts +3 -3
  25. package/transpiled/protocols/index.js +3 -2
  26. package/transpiled/protocols/index.js.map +1 -1
  27. package/transpiled/protocols/pubsub/Aspect.d.ts +13 -0
  28. package/transpiled/protocols/pubsub/Aspect.js +69 -0
  29. package/transpiled/protocols/pubsub/Aspect.js.map +1 -0
  30. package/transpiled/protocols/pubsub/Origin.d.ts +8 -0
  31. package/transpiled/protocols/pubsub/Origin.js +3 -0
  32. package/transpiled/protocols/pubsub/Origin.js.map +1 -0
  33. package/transpiled/protocols/pubsub/Topic.d.ts +8 -0
  34. package/transpiled/protocols/pubsub/Topic.js +19 -0
  35. package/transpiled/protocols/pubsub/Topic.js.map +1 -0
  36. package/transpiled/protocols/pubsub/index.d.ts +7 -0
  37. package/transpiled/protocols/pubsub/index.js +8 -0
  38. package/transpiled/protocols/pubsub/index.js.map +1 -0
  39. package/transpiled/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"aspect.js","sourceRoot":"","sources":["../../../source/protocols/http/aspect.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aspect.js","sourceRoot":"","sources":["../../../source/protocols/http/aspect.js"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { type Resolver } from '../Factory';
1
+ import type { Declaration } from '../Factory';
2
2
  import type { extensions } from '@toa.io/core';
3
3
  export declare const protocols: Protocol[];
4
4
  export interface Protocol {
5
5
  id: ProtocolID;
6
6
  protocols: string[];
7
- create: (resolver: Resolver) => extensions.Aspect;
7
+ create: (declaration: Declaration) => extensions.Aspect;
8
8
  }
9
- export type ProtocolID = 'http' | 'amqp';
9
+ export type ProtocolID = 'http' | 'amqp' | 'pubsub';
@@ -1,4 +1,4 @@
1
- 'use strict';
1
+ "use strict";
2
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
@@ -6,5 +6,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.protocols = void 0;
7
7
  const amqp_1 = __importDefault(require("./amqp"));
8
8
  const http_1 = __importDefault(require("./http"));
9
- exports.protocols = [http_1.default, amqp_1.default];
9
+ const pubsub_1 = __importDefault(require("./pubsub"));
10
+ exports.protocols = [http_1.default, amqp_1.default, pubsub_1.default];
10
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/protocols/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;;;;AAGZ,kDAAyB;AACzB,kDAAyB;AAGZ,QAAA,SAAS,GAAe,CAAC,cAAI,EAAE,cAAI,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/protocols/index.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAyB;AACzB,kDAAyB;AACzB,sDAA6B;AAIhB,QAAA,SAAS,GAAe,CAAC,cAAI,EAAE,cAAI,EAAE,gBAAM,CAAC,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { Connector } from '@toa.io/core';
2
+ import { Topic } from './Topic';
3
+ import type { extensions } from '@toa.io/core';
4
+ import type { Declaration } from '../../Factory';
5
+ declare class Aspect extends Connector implements extensions.Aspect {
6
+ readonly name = "pubsub";
7
+ private readonly topics;
8
+ constructor(topics: Record<string, Topic>);
9
+ invoke(method: Method, topic: string, message: unknown): Promise<string>;
10
+ }
11
+ type Method = 'publish';
12
+ export declare function create(declaration: Declaration): Aspect;
13
+ export {};
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.create = void 0;
7
+ const node_assert_1 = __importDefault(require("node:assert"));
8
+ const core_1 = require("@toa.io/core");
9
+ const pubsub_1 = require("@google-cloud/pubsub");
10
+ const Topic_1 = require("./Topic");
11
+ class Aspect extends core_1.Connector {
12
+ name = 'pubsub';
13
+ topics;
14
+ constructor(topics) {
15
+ super();
16
+ this.topics = topics;
17
+ const values = Object.values(topics);
18
+ if (values.length > 0)
19
+ this.depends(values);
20
+ }
21
+ async invoke(method, topic, message) {
22
+ (0, node_assert_1.default)(topic in this.topics, `Pub/Sub topic ${topic} is not defined`);
23
+ return await this.topics[topic][method](message);
24
+ }
25
+ }
26
+ function create(declaration) {
27
+ const origins = toOrigins(declaration);
28
+ const topics = toTopics(origins);
29
+ return new Aspect(topics);
30
+ }
31
+ exports.create = create;
32
+ function toOrigins(declaration) {
33
+ const origins = {};
34
+ for (const [name, references] of Object.entries(declaration.origins))
35
+ origins[name] = toOrigin(references[0]);
36
+ return origins;
37
+ }
38
+ function toOrigin(reference) {
39
+ const url = new URL(reference);
40
+ const [, , project, , topic] = url.pathname.split('/');
41
+ const suffix = project.replaceAll('-', '_').toUpperCase();
42
+ const json = process.env['TOA_ORIGINS_PUBSUB__' + suffix];
43
+ const credentials = json !== undefined ? JSON.parse(json) : undefined;
44
+ return {
45
+ endpoint: url.host,
46
+ credentials,
47
+ project,
48
+ topic
49
+ };
50
+ }
51
+ function toTopics(origins) {
52
+ const pubsub = {};
53
+ const topics = {};
54
+ for (const [name, origin] of Object.entries(origins)) {
55
+ if (!(origin.project in pubsub))
56
+ pubsub[origin.project] = createPubSub(origin);
57
+ topics[name] = new Topic_1.Topic(pubsub[origin.project], origin);
58
+ }
59
+ return topics;
60
+ }
61
+ function createPubSub(origin) {
62
+ console.info(`Using Pub/Sub project ${origin.project} as ${origin.credentials?.client_id ?? 'unauthenticated'} client`);
63
+ return new pubsub_1.PubSub({
64
+ projectId: origin.project,
65
+ apiEndpoint: origin.endpoint,
66
+ credentials: origin.credentials
67
+ });
68
+ }
69
+ //# sourceMappingURL=Aspect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Aspect.js","sourceRoot":"","sources":["../../../source/protocols/pubsub/Aspect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { ClientConfig } from '@google-cloud/pubsub';
2
+ export interface Origin {
3
+ readonly project: string;
4
+ readonly topic: string;
5
+ readonly endpoint?: string;
6
+ readonly credentials?: Credentials;
7
+ }
8
+ export type Credentials = ClientConfig['credentials'];
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Origin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Origin.js","sourceRoot":"","sources":["../../../source/protocols/pubsub/Origin.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import { Connector } from '@toa.io/core';
2
+ import type { Origin } from './Origin';
3
+ import type { PubSub } from '@google-cloud/pubsub';
4
+ export declare class Topic extends Connector {
5
+ private readonly publisher;
6
+ constructor(pubsub: PubSub, origin: Origin);
7
+ publish(payload: unknown): Promise<string>;
8
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Topic = void 0;
4
+ const core_1 = require("@toa.io/core");
5
+ class Topic extends core_1.Connector {
6
+ publisher;
7
+ constructor(pubsub, origin) {
8
+ super();
9
+ const name = `projects/${origin.project}/topics/${origin.topic}`;
10
+ this.publisher = pubsub.topic(name, OPTIONS);
11
+ }
12
+ async publish(payload) {
13
+ const data = Buffer.from(JSON.stringify(payload));
14
+ return this.publisher.publishMessage({ data });
15
+ }
16
+ }
17
+ exports.Topic = Topic;
18
+ const OPTIONS = { batching: { maxMessages: 100, maxMilliseconds: 1000 } };
19
+ //# sourceMappingURL=Topic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Topic.js","sourceRoot":"","sources":["../../../source/protocols/pubsub/Topic.ts"],"names":[],"mappings":";;;AAAA,uCAAwC;AAIxC,MAAa,KAAM,SAAQ,gBAAS;IACjB,SAAS,CAAA;IAE1B,YAAoB,MAAc,EAAE,MAAc;QAChD,KAAK,EAAE,CAAA;QAEP,MAAM,IAAI,GAAG,YAAY,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC,KAAK,EAAE,CAAA;QAEhE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC9C,CAAC;IAEM,KAAK,CAAC,OAAO,CAAE,OAAgB;QACpC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;QAEjD,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;IAChD,CAAC;CACF;AAhBD,sBAgBC;AAED,MAAM,OAAO,GAAmB,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { create } from './Aspect';
2
+ declare const _default: {
3
+ id: "pubsub";
4
+ protocols: string[];
5
+ create: typeof create;
6
+ };
7
+ export = _default;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ const Aspect_1 = require("./Aspect");
3
+ module.exports = {
4
+ id: 'pubsub',
5
+ protocols: ['pubsub:'],
6
+ create: Aspect_1.create
7
+ };
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/protocols/pubsub/index.ts"],"names":[],"mappings":";AAAA,qCAAiC;AAGjC,iBAAS;IACP,EAAE,EAAE,QAAQ;IACZ,SAAS,EAAE,CAAC,SAAS,CAAC;IACtB,MAAM,EAAN,eAAM;CACY,CAAA"}