@candlerip/shared 0.0.146 → 0.0.148

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 (37) hide show
  1. package/aws/cloud-watch/index.d.ts +1 -0
  2. package/aws/cloud-watch/index.js +1 -0
  3. package/aws/cloud-watch/workers/index.d.ts +2 -0
  4. package/aws/cloud-watch/workers/index.js +90 -0
  5. package/aws/cloud-watch/workers/type.d.ts +15 -0
  6. package/aws/index.d.ts +1 -0
  7. package/aws/index.js +1 -0
  8. package/aws/s3/s3-url/{utils/compose-s3-url → compose-s3-url}/index.js +1 -1
  9. package/aws/s3/s3-url/compose-s3-url/types.js +1 -0
  10. package/aws/s3/s3-url/index.d.ts +2 -2
  11. package/aws/s3/s3-url/index.js +2 -2
  12. package/common/index.d.ts +1 -0
  13. package/common/index.js +1 -0
  14. package/common/log/index.d.ts +1 -0
  15. package/common/log/index.js +1 -0
  16. package/common/log/logger-worker/index.d.ts +2 -0
  17. package/common/log/logger-worker/index.js +43 -0
  18. package/common/log/logger-worker/send-to-console/index.d.ts +2 -0
  19. package/common/log/logger-worker/send-to-console/index.js +13 -0
  20. package/common/log/logger-worker/send-to-console/type.d.ts +6 -0
  21. package/common/log/logger-worker/send-to-console/type.js +1 -0
  22. package/common/log/logger-worker/type.d.ts +15 -0
  23. package/common/log/logger-worker/type.js +1 -0
  24. package/common/type/index.d.ts +1 -0
  25. package/common/type/index.js +1 -0
  26. package/common/type/promise/domains.d.ts +1 -0
  27. package/common/type/promise/domains.js +1 -0
  28. package/common/type/promise/index.d.ts +1 -0
  29. package/common/type/promise/index.js +1 -0
  30. package/package.json +4 -1
  31. package/aws/s3/s3-url/utils/index.d.ts +0 -1
  32. package/aws/s3/s3-url/utils/index.js +0 -1
  33. /package/aws/{s3/s3-url/utils/compose-s3-url/types.js → cloud-watch/workers/type.js} +0 -0
  34. /package/aws/s3/s3-url/{utils/compose-s3-url → compose-s3-url}/index.d.ts +0 -0
  35. /package/aws/s3/s3-url/{utils/compose-s3-url → compose-s3-url}/types.d.ts +0 -0
  36. /package/aws/s3/s3-url/{constants.d.ts → configs.d.ts} +0 -0
  37. /package/aws/s3/s3-url/{constants.js → configs.js} +0 -0
@@ -0,0 +1 @@
1
+ export * from './workers/index.js';
@@ -0,0 +1 @@
1
+ export * from './workers/index.js';
@@ -0,0 +1,2 @@
1
+ import { TCloudWatchWorker } from './type.js';
2
+ export declare const CloudWatchWorker: TCloudWatchWorker;
@@ -0,0 +1,90 @@
1
+ import { CloudWatchLogsClient, CreateLogGroupCommand, CreateLogStreamCommand, PutLogEventsCommand } from '@aws-sdk/client-cloudwatch-logs';
2
+ import { composeCustomError, isObject, stringify } from '../../../common/index.js';
3
+ export const CloudWatchWorker = async ({ logGroupName, region }) => {
4
+ let _client;
5
+ let _customError;
6
+ let _logStreamName;
7
+ let _sequenceToken;
8
+ try {
9
+ _client = new CloudWatchLogsClient({
10
+ region,
11
+ });
12
+ }
13
+ catch (err) {
14
+ _customError = composeCustomError('Error connect CloudWatch', { err, region });
15
+ }
16
+ if (_client) {
17
+ try {
18
+ await _client.send(new CreateLogGroupCommand({ logGroupName }));
19
+ }
20
+ catch (err) {
21
+ if (isObject(err) && err.name !== 'ResourceAlreadyExistsException') {
22
+ _customError = composeCustomError('Error create log group', {
23
+ err,
24
+ logGroupName,
25
+ });
26
+ }
27
+ }
28
+ }
29
+ const createLogStream = async (logStreamName) => {
30
+ _logStreamName = logStreamName;
31
+ if (_customError) {
32
+ return {
33
+ customError: _customError,
34
+ };
35
+ }
36
+ const putLogEvents = async (event) => {
37
+ if (_customError) {
38
+ return {
39
+ customError: _customError,
40
+ };
41
+ }
42
+ try {
43
+ const resp = await _client.send(new PutLogEventsCommand({
44
+ logGroupName,
45
+ logStreamName: _logStreamName,
46
+ logEvents: [
47
+ {
48
+ message: stringify(event),
49
+ timestamp: Date.now(),
50
+ },
51
+ ],
52
+ sequenceToken: _sequenceToken,
53
+ }));
54
+ _sequenceToken = resp.nextSequenceToken;
55
+ }
56
+ catch (err) {
57
+ return {
58
+ customError: composeCustomError('Error put log event', {
59
+ err,
60
+ logGroupName,
61
+ _logStreamName,
62
+ }),
63
+ };
64
+ }
65
+ };
66
+ try {
67
+ await _client.send(new CreateLogStreamCommand({
68
+ logGroupName,
69
+ logStreamName,
70
+ }));
71
+ }
72
+ catch (err) {
73
+ if (isObject(err) && err.name !== 'ResourceAlreadyExistsException') {
74
+ return {
75
+ customError: composeCustomError('Error create log stream', {
76
+ err,
77
+ logGroupName,
78
+ logStreamName,
79
+ }),
80
+ };
81
+ }
82
+ }
83
+ return {
84
+ putLogEvents,
85
+ };
86
+ };
87
+ return {
88
+ createLogStream,
89
+ };
90
+ };
@@ -0,0 +1,15 @@
1
+ import { CustomError } from '../../../common/index.js';
2
+ export type TCloudWatchWorker = (props: {
3
+ logGroupName: string;
4
+ region: string;
5
+ }) => Promise<{
6
+ createLogStream: TCreateLogStream;
7
+ }>;
8
+ export type TCreateLogStream = (name: string) => Promise<{
9
+ putLogEvents: TPutLogEvents;
10
+ } | {
11
+ customError: CustomError;
12
+ }>;
13
+ export type TPutLogEvents = (event: unknown) => Promise<undefined | {
14
+ customError: CustomError;
15
+ }>;
package/aws/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './account-id/index.js';
2
+ export * from './cloud-watch/index.js';
2
3
  export * from './region/index.js';
3
4
  export * from './s3/index.js';
package/aws/index.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './account-id/index.js';
2
+ export * from './cloud-watch/index.js';
2
3
  export * from './region/index.js';
3
4
  export * from './s3/index.js';
@@ -1,2 +1,2 @@
1
- import { S3_URL_TEMPLATE } from '../../constants.js';
1
+ import { S3_URL_TEMPLATE } from '../configs.js';
2
2
  export const composeS3Url = (awsRegion, bucketName) => S3_URL_TEMPLATE.replace('<AWS_REGION>', awsRegion).replace('<BUCKET_NAME>', bucketName);
@@ -0,0 +1 @@
1
+ export {};
@@ -1,2 +1,2 @@
1
- export * from './constants.js';
2
- export * from './utils/index.js';
1
+ export * from './compose-s3-url/index.js';
2
+ export * from './configs.js';
@@ -1,2 +1,2 @@
1
- export * from './constants.js';
2
- export * from './utils/index.js';
1
+ export * from './compose-s3-url/index.js';
2
+ export * from './configs.js';
package/common/index.d.ts CHANGED
@@ -6,6 +6,7 @@ export * from './filter-sort/index.js';
6
6
  export * from './geographical/index.js';
7
7
  export * from './header/index.js';
8
8
  export * from './helpers/index.js';
9
+ export * from './log/index.js';
9
10
  export * from './page/index.js';
10
11
  export * from './page-data/index.js';
11
12
  export * from './page-menu/index.js';
package/common/index.js CHANGED
@@ -6,6 +6,7 @@ export * from './filter-sort/index.js';
6
6
  export * from './geographical/index.js';
7
7
  export * from './header/index.js';
8
8
  export * from './helpers/index.js';
9
+ export * from './log/index.js';
9
10
  export * from './page/index.js';
10
11
  export * from './page-data/index.js';
11
12
  export * from './page-menu/index.js';
@@ -0,0 +1 @@
1
+ export * from './logger-worker/index.js';
@@ -0,0 +1 @@
1
+ export * from './logger-worker/index.js';
@@ -0,0 +1,2 @@
1
+ import { TLoggerWorker } from './type.js';
2
+ export declare const loggerWorker: TLoggerWorker;
@@ -0,0 +1,43 @@
1
+ import { sendToConsole } from './send-to-console/index.js';
2
+ import { composeCustomError } from '../../custom-error/index.js';
3
+ import { CloudWatchWorker } from '../../../aws/index.js';
4
+ export const loggerWorker = async (awsRegion, logGroupName, { isDevelopment }) => {
5
+ const { createLogStream } = await CloudWatchWorker({ logGroupName, region: awsRegion });
6
+ let _logStreamName;
7
+ let _context;
8
+ const initLogStream = (logStreamName, context) => {
9
+ _logStreamName = logStreamName;
10
+ _context = context;
11
+ };
12
+ const log = async (customErrorProp) => {
13
+ let customError;
14
+ if ('id' in customErrorProp) {
15
+ customError = customErrorProp;
16
+ }
17
+ else {
18
+ customError = composeCustomError(customErrorProp?.message, customErrorProp.info);
19
+ }
20
+ if (!_logStreamName) {
21
+ sendToConsole({ context: _context, customError, loggerError: composeCustomError('Log stream not initialized') });
22
+ return;
23
+ }
24
+ let resp;
25
+ resp = await createLogStream(_logStreamName);
26
+ if ('customError' in resp) {
27
+ sendToConsole({ context: _context, customError, loggerError: resp.customError });
28
+ return;
29
+ }
30
+ const { putLogEvents } = resp;
31
+ resp = await putLogEvents({ context: _context, customError });
32
+ if (resp?.customError) {
33
+ sendToConsole({ context: _context, customError, loggerError: resp.customError });
34
+ }
35
+ if (isDevelopment) {
36
+ sendToConsole({ context: _context, customError });
37
+ }
38
+ };
39
+ return {
40
+ initLogStream,
41
+ log,
42
+ };
43
+ };
@@ -0,0 +1,2 @@
1
+ import { TSendToConsole } from './type.js';
2
+ export declare const sendToConsole: TSendToConsole;
@@ -0,0 +1,13 @@
1
+ import { consoleCustomError } from '../../../custom-error/index.js';
2
+ import { stringify } from '../../../helpers/index.js';
3
+ export const sendToConsole = ({ context, customError, loggerError }) => {
4
+ if (loggerError) {
5
+ console.error(`LOGGER ERROR: ${stringify(loggerError)}`);
6
+ }
7
+ if (customError) {
8
+ consoleCustomError(customError);
9
+ }
10
+ if (context) {
11
+ console.error(`CONTEXT: ${stringify(context)}`);
12
+ }
13
+ };
@@ -0,0 +1,6 @@
1
+ import { CustomError } from '../../../custom-error/index.js';
2
+ export type TSendToConsole = (props: {
3
+ context?: Record<string, unknown>;
4
+ customError: CustomError;
5
+ loggerError?: CustomError;
6
+ }) => void;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ import { CustomError } from '../../custom-error/index.js';
2
+ export type TLoggerWorker = (awsRegion: string, logGroupName: string, options: {
3
+ isDevelopment: boolean;
4
+ }) => Promise<{
5
+ initLogStream: TInitLogStream;
6
+ log: TLog;
7
+ }>;
8
+ export type TLoggerWorkerReturn = {
9
+ initLogStream: TInitLogStream;
10
+ log: TLog;
11
+ };
12
+ export type TLog = (customError: Partial<CustomError> & {
13
+ message: string;
14
+ }) => Promise<void>;
15
+ export type TInitLogStream = (logStreamName: string, context?: Record<string, unknown>) => void;
@@ -0,0 +1 @@
1
+ export {};
@@ -1,5 +1,6 @@
1
1
  export * from './array/index.js';
2
2
  export * from './boolean/index.js';
3
+ export * from './promise/index.js';
3
4
  export * from './number/index.js';
4
5
  export * from './null/index.js';
5
6
  export * from './object/index.js';
@@ -1,5 +1,6 @@
1
1
  export * from './array/index.js';
2
2
  export * from './boolean/index.js';
3
+ export * from './promise/index.js';
3
4
  export * from './number/index.js';
4
5
  export * from './null/index.js';
5
6
  export * from './object/index.js';
@@ -0,0 +1 @@
1
+ export type UnwrapPromise<T> = T extends Promise<infer U> ? U : T;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export * from './domains.js';
@@ -0,0 +1 @@
1
+ export * from './domains.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@candlerip/shared",
3
- "version": "0.0.146",
3
+ "version": "0.0.148",
4
4
  "type": "module",
5
5
  "engines": {
6
6
  "node": "=22.19.0"
@@ -31,5 +31,8 @@
31
31
  "tsc-alias": "^1.8.16",
32
32
  "typescript": "^5.9.3",
33
33
  "typescript-eslint": "^8.46.2"
34
+ },
35
+ "dependencies": {
36
+ "@aws-sdk/client-cloudwatch-logs": "^3.975.0"
34
37
  }
35
38
  }
@@ -1 +0,0 @@
1
- export * from './compose-s3-url/index.js';
@@ -1 +0,0 @@
1
- export * from './compose-s3-url/index.js';
File without changes
File without changes