@stackone/olap 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1,3 +1,6 @@
1
+ import { S3Client } from "@aws-sdk/client-s3";
2
+ import { Kafka } from "kafkajs";
3
+
1
4
  //#region ../logger/src/types.d.ts
2
5
  interface ILogger {
3
6
  debug({
@@ -61,19 +64,33 @@ type LogError = Error & {
61
64
  url?: string;
62
65
  };
63
66
  //#endregion
67
+ //#region src/advanced/types.d.ts
68
+ interface S3ClientConfig {
69
+ region?: string;
70
+ }
71
+ type S3ClientBuilder = (config?: S3ClientConfig, logger?: ILogger) => S3Client | undefined;
72
+ //#endregion
73
+ //#region src/logs/types.d.ts
74
+ interface KafkaClientConfig {
75
+ brokers: string[];
76
+ }
77
+ type KafkaClientBuilder = (config?: KafkaClientConfig, logger?: ILogger) => Kafka | undefined;
78
+ //#endregion
64
79
  //#region src/olap/olapOptions.d.ts
65
80
  type OlapOptions = {
66
- olap?: boolean;
67
- advanced?: boolean;
81
+ logs?: LogsOptions;
82
+ advanced?: AdvancedOptions;
83
+ };
84
+ type LogsOptions = {
85
+ enabled?: boolean;
86
+ };
87
+ type AdvancedOptions = {
88
+ enabled?: boolean;
89
+ ttl?: number;
90
+ errorsOnly?: boolean;
68
91
  };
69
92
  //#endregion
70
93
  //#region src/types.d.ts
71
- interface IKafkaSink {
72
- send(topic: string, payload: unknown): Promise<void>;
73
- }
74
- interface IS3Sink {
75
- send(bucket: string, payload: unknown): Promise<void>;
76
- }
77
94
  interface IOlapClient {
78
95
  recordAction(ActionResult: ActionResult, options?: OlapOptions): void;
79
96
  recordStep(stepResult: StepResult, options?: OlapOptions): void;
@@ -93,12 +110,16 @@ declare class OlapClient implements IOlapClient {
93
110
  #private;
94
111
  name: string;
95
112
  constructor({
96
- KafkaSink,
97
- S3Sink,
113
+ getKafkaClient,
114
+ getS3Client,
115
+ kafkaClientConfig,
116
+ s3ClientConfig,
98
117
  logger
99
118
  }?: {
100
- KafkaSink?: IKafkaSink;
101
- S3Sink?: IS3Sink;
119
+ getKafkaClient?: KafkaClientBuilder;
120
+ getS3Client?: S3ClientBuilder;
121
+ kafkaClientConfig?: KafkaClientConfig;
122
+ s3ClientConfig?: S3ClientConfig;
102
123
  logger?: ILogger;
103
124
  });
104
125
  recordAction(actionResult: ActionResult, options?: OlapOptions): Promise<void>;
package/dist/index.d.ts CHANGED
@@ -1,3 +1,6 @@
1
+ import { S3Client } from "@aws-sdk/client-s3";
2
+ import { Kafka } from "kafkajs";
3
+
1
4
  //#region ../logger/src/types.d.ts
2
5
  interface ILogger {
3
6
  debug({
@@ -61,19 +64,33 @@ type LogError = Error & {
61
64
  url?: string;
62
65
  };
63
66
  //#endregion
67
+ //#region src/advanced/types.d.ts
68
+ interface S3ClientConfig {
69
+ region?: string;
70
+ }
71
+ type S3ClientBuilder = (config?: S3ClientConfig, logger?: ILogger) => S3Client | undefined;
72
+ //#endregion
73
+ //#region src/logs/types.d.ts
74
+ interface KafkaClientConfig {
75
+ brokers: string[];
76
+ }
77
+ type KafkaClientBuilder = (config?: KafkaClientConfig, logger?: ILogger) => Kafka | undefined;
78
+ //#endregion
64
79
  //#region src/olap/olapOptions.d.ts
65
80
  type OlapOptions = {
66
- olap?: boolean;
67
- advanced?: boolean;
81
+ logs?: LogsOptions;
82
+ advanced?: AdvancedOptions;
83
+ };
84
+ type LogsOptions = {
85
+ enabled?: boolean;
86
+ };
87
+ type AdvancedOptions = {
88
+ enabled?: boolean;
89
+ ttl?: number;
90
+ errorsOnly?: boolean;
68
91
  };
69
92
  //#endregion
70
93
  //#region src/types.d.ts
71
- interface IKafkaSink {
72
- send(topic: string, payload: unknown): Promise<void>;
73
- }
74
- interface IS3Sink {
75
- send(bucket: string, payload: unknown): Promise<void>;
76
- }
77
94
  interface IOlapClient {
78
95
  recordAction(ActionResult: ActionResult, options?: OlapOptions): void;
79
96
  recordStep(stepResult: StepResult, options?: OlapOptions): void;
@@ -93,12 +110,16 @@ declare class OlapClient implements IOlapClient {
93
110
  #private;
94
111
  name: string;
95
112
  constructor({
96
- KafkaSink,
97
- S3Sink,
113
+ getKafkaClient,
114
+ getS3Client,
115
+ kafkaClientConfig,
116
+ s3ClientConfig,
98
117
  logger
99
118
  }?: {
100
- KafkaSink?: IKafkaSink;
101
- S3Sink?: IS3Sink;
119
+ getKafkaClient?: KafkaClientBuilder;
120
+ getS3Client?: S3ClientBuilder;
121
+ kafkaClientConfig?: KafkaClientConfig;
122
+ s3ClientConfig?: S3ClientConfig;
102
123
  logger?: ILogger;
103
124
  });
104
125
  recordAction(actionResult: ActionResult, options?: OlapOptions): Promise<void>;
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- function e(e){return new t(e)}var t=class{#logger;constructor(e){this.#logger=e}async send(e,t){let n=(()=>{try{return JSON.stringify(t)}catch{return`[Unserializable payload]`}})();this.#logger?.info({message:`[Kafka] Sent to topic ${e}: ${n}`,context:{topic:e,payload:t},category:`KafkaSink`}),await Promise.resolve()}};const n={olap:!0,advanced:!1};function r(e){return{...n,...e}}function i(e){return new a(e)}var a=class{#logger;constructor(e){this.#logger=e}async send(e,t){let n=(()=>{try{return JSON.stringify(t)}catch{return`[Unserializable payload]`}})();this.#logger?.info({message:`[S3] Sent to bucket ${e}: ${n}`,context:{bucket:e,payload:t},category:`S3Sink`}),await Promise.resolve()}},o=class{#KafkaSink;#S3Sink;#logger;name=`OlapClient`;constructor({KafkaSink:t=e(),S3Sink:n=i(),logger:r}={}){this.#KafkaSink=t,this.#S3Sink=n,this.#logger=r}async recordAction(e,t){let n=r(t);if(n.olap)try{await this.#KafkaSink?.send(`actions`,e)}catch(e){this.#logger?.warning({message:`[OlapClient] Error sending to Kafka: ${e.message}`,category:`OlapClient`,error:e})}if(n.advanced)try{await this.#S3Sink?.send(`actions`,e)}catch(e){this.#logger?.warning({message:`[OlapClient] Error sending to S3: ${e.message}`,category:`OlapClient`,error:e})}}async recordStep(e,t){let n=r(t);n.olap&&await this.#KafkaSink?.send(`steps`,e),n.advanced&&await this.#S3Sink?.send(`steps`,e)}};exports.OlapClient=o;
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));const c=s(require(`@aws-sdk/client-s3`)),l=s(require(`kafkajs`));var u=class{#s3Client;#logger;constructor(e,t){this.#s3Client=e,this.#logger=t,this.#s3Client||this.#logger?.warning({message:`No s3 client provided, advanced sink will not function`,category:`AdvancedSink`})}async send(e,t){let n=(()=>{try{return JSON.stringify(t)}catch{return`[Unserializable payload]`}})();this.#logger?.info({message:`[S3] Sent to bucket ${e}: ${n}`,context:{bucket:e,payload:t},category:`S3Sink`}),await Promise.resolve()}};const d=(e,t)=>{try{let t=new c.S3Client(e);return t??void 0}catch(e){let n=e;t?.error({message:`Error building s3 client: ${n.message}`,error:n,code:`BuildS3ClientError`,category:`buildS3Client`});return}},f=(e,t)=>{try{let t=new l.Kafka(e);return t??void 0}catch(e){let n=e;t?.error({message:`Error building kafka client: ${n.message}`,error:n,code:`BuildKafkaClientError`,category:`buildKafkaClient`});return}};var p=class{#kafka;#logger;constructor(e,t){this.#kafka=e,this.#logger=t,this.#kafka||this.#logger?.warning({message:`No kafka client provided, logs sink will not function`,category:`LogsSink`})}async send(e,t){let n=(()=>{try{return JSON.stringify(t)}catch{return`[Unserializable payload]`}})();this.#logger?.info({message:`[Kafka] Sent to topic ${e}: ${n}`,context:{topic:e,payload:t},category:`KafkaSink`}),await Promise.resolve()}};const m={logs:{enabled:!0},advanced:{enabled:!1,ttl:7,errorsOnly:!1}};function h(e){return{...m,...e}}var g=class{#kafkaClient;#s3Client;#logger;#logsSink;#advancedSink;name=`OlapClient`;constructor({getKafkaClient:e=f,getS3Client:t=d,kafkaClientConfig:n,s3ClientConfig:r,logger:i}={}){this.#kafkaClient=e(n,i),this.#s3Client=t(r,i),this.#logger=i,this.#logsSink=new p(this.#kafkaClient,this.#logger),this.#advancedSink=new u(this.#s3Client,this.#logger)}async recordAction(e,t){let{logs:n,advanced:r}=h(t);if(n?.enabled)try{await this.#logsSink?.send(`actions`,e)}catch(e){this.#logger?.warning({message:`[OlapClient] Error sending to kafka: ${e.message}`,category:`OlapClient`,error:e})}if(r?.enabled)try{await this.#advancedSink?.send(`actions`,e)}catch(e){this.#logger?.warning({message:`[OlapClient] Error sending to s3: ${e.message}`,category:`OlapClient`,error:e})}}async recordStep(e,t){let{logs:n,advanced:r}=h(t);if(n?.enabled)try{await this.#logsSink?.send(`steps`,e)}catch(e){this.#logger?.warning({message:`[OlapClient] Error sending to kafka: ${e.message}`,category:`OlapClient`,error:e})}if(r?.enabled)try{await this.#advancedSink?.send(`steps`,e)}catch(e){this.#logger?.warning({message:`[OlapClient] Error sending to s3: ${e.message}`,category:`OlapClient`,error:e})}}};exports.OlapClient=g;
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- function e(e){return new t(e)}var t=class{#logger;constructor(e){this.#logger=e}async send(e,t){let n=(()=>{try{return JSON.stringify(t)}catch{return`[Unserializable payload]`}})();this.#logger?.info({message:`[Kafka] Sent to topic ${e}: ${n}`,context:{topic:e,payload:t},category:`KafkaSink`}),await Promise.resolve()}};const n={olap:!0,advanced:!1};function r(e){return{...n,...e}}function i(e){return new a(e)}var a=class{#logger;constructor(e){this.#logger=e}async send(e,t){let n=(()=>{try{return JSON.stringify(t)}catch{return`[Unserializable payload]`}})();this.#logger?.info({message:`[S3] Sent to bucket ${e}: ${n}`,context:{bucket:e,payload:t},category:`S3Sink`}),await Promise.resolve()}},o=class{#KafkaSink;#S3Sink;#logger;name=`OlapClient`;constructor({KafkaSink:t=e(),S3Sink:n=i(),logger:r}={}){this.#KafkaSink=t,this.#S3Sink=n,this.#logger=r}async recordAction(e,t){let n=r(t);if(n.olap)try{await this.#KafkaSink?.send(`actions`,e)}catch(e){this.#logger?.warning({message:`[OlapClient] Error sending to Kafka: ${e.message}`,category:`OlapClient`,error:e})}if(n.advanced)try{await this.#S3Sink?.send(`actions`,e)}catch(e){this.#logger?.warning({message:`[OlapClient] Error sending to S3: ${e.message}`,category:`OlapClient`,error:e})}}async recordStep(e,t){let n=r(t);n.olap&&await this.#KafkaSink?.send(`steps`,e),n.advanced&&await this.#S3Sink?.send(`steps`,e)}};export{o as OlapClient};
1
+ import{S3Client as e}from"@aws-sdk/client-s3";import{Kafka as t}from"kafkajs";var n=class{#s3Client;#logger;constructor(e,t){this.#s3Client=e,this.#logger=t,this.#s3Client||this.#logger?.warning({message:`No s3 client provided, advanced sink will not function`,category:`AdvancedSink`})}async send(e,t){let n=(()=>{try{return JSON.stringify(t)}catch{return`[Unserializable payload]`}})();this.#logger?.info({message:`[S3] Sent to bucket ${e}: ${n}`,context:{bucket:e,payload:t},category:`S3Sink`}),await Promise.resolve()}};const r=(t,n)=>{try{let n=new e(t);return n??void 0}catch(e){let t=e;n?.error({message:`Error building s3 client: ${t.message}`,error:t,code:`BuildS3ClientError`,category:`buildS3Client`});return}},i=(e,n)=>{try{let n=new t(e);return n??void 0}catch(e){let t=e;n?.error({message:`Error building kafka client: ${t.message}`,error:t,code:`BuildKafkaClientError`,category:`buildKafkaClient`});return}};var a=class{#kafka;#logger;constructor(e,t){this.#kafka=e,this.#logger=t,this.#kafka||this.#logger?.warning({message:`No kafka client provided, logs sink will not function`,category:`LogsSink`})}async send(e,t){let n=(()=>{try{return JSON.stringify(t)}catch{return`[Unserializable payload]`}})();this.#logger?.info({message:`[Kafka] Sent to topic ${e}: ${n}`,context:{topic:e,payload:t},category:`KafkaSink`}),await Promise.resolve()}};const o={logs:{enabled:!0},advanced:{enabled:!1,ttl:7,errorsOnly:!1}};function s(e){return{...o,...e}}var c=class{#kafkaClient;#s3Client;#logger;#logsSink;#advancedSink;name=`OlapClient`;constructor({getKafkaClient:e=i,getS3Client:t=r,kafkaClientConfig:o,s3ClientConfig:s,logger:c}={}){this.#kafkaClient=e(o,c),this.#s3Client=t(s,c),this.#logger=c,this.#logsSink=new a(this.#kafkaClient,this.#logger),this.#advancedSink=new n(this.#s3Client,this.#logger)}async recordAction(e,t){let{logs:n,advanced:r}=s(t);if(n?.enabled)try{await this.#logsSink?.send(`actions`,e)}catch(e){this.#logger?.warning({message:`[OlapClient] Error sending to kafka: ${e.message}`,category:`OlapClient`,error:e})}if(r?.enabled)try{await this.#advancedSink?.send(`actions`,e)}catch(e){this.#logger?.warning({message:`[OlapClient] Error sending to s3: ${e.message}`,category:`OlapClient`,error:e})}}async recordStep(e,t){let{logs:n,advanced:r}=s(t);if(n?.enabled)try{await this.#logsSink?.send(`steps`,e)}catch(e){this.#logger?.warning({message:`[OlapClient] Error sending to kafka: ${e.message}`,category:`OlapClient`,error:e})}if(r?.enabled)try{await this.#advancedSink?.send(`steps`,e)}catch(e){this.#logger?.warning({message:`[OlapClient] Error sending to s3: ${e.message}`,category:`OlapClient`,error:e})}}};export{c as OlapClient};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stackone/olap",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -40,9 +40,12 @@
40
40
  "keywords": [],
41
41
  "author": "StackOne",
42
42
  "license": "ISC",
43
- "dependencies": {},
43
+ "dependencies": {
44
+ "@aws-sdk/client-s3": "3.913.0",
45
+ "kafkajs": "2.2.4"
46
+ },
44
47
  "devDependencies": {
45
- "tsdown": "^0.12.9"
48
+ "tsdown": "0.12.9"
46
49
  },
47
50
  "tsdown": {
48
51
  "dts": true,