vidspotai-shared 1.0.28 → 1.0.29

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.
@@ -105,7 +105,7 @@ class GoogleService extends baseAiGenProvider_service_1.BaseAiGenProviderService
105
105
  const modelConfig = aiModels_1.aiModelConfigs[modelKey];
106
106
  return modelConfig.cost?.perSecond
107
107
  ? (0, helpers_1.getCreditsFromCost)(modelConfig.cost?.perSecond * duration)
108
- : 0; // should not happen
108
+ : 3; // should not happen
109
109
  }
110
110
  }
111
111
  exports.GoogleService = GoogleService;
@@ -117,7 +117,7 @@ class KlingService extends baseAiGenProvider_service_1.BaseAiGenProviderService
117
117
  getCreditUsed({ modelKey, mode = types_2.EVideoMode.PROFESSIONAL, duration = 5, }) {
118
118
  const modelConfig = aiModels_1.aiModelConfigs[modelKey];
119
119
  const cost = modelConfig?.cost?.table?.[mode]?.[duration];
120
- return (0, helpers_2.getCreditsFromCost)(cost ?? 0);
120
+ return (0, helpers_2.getCreditsFromCost)(cost ?? 1);
121
121
  }
122
122
  }
123
123
  exports.KlingService = KlingService;
@@ -112,7 +112,7 @@ class MinimaxService extends baseAiGenProvider_service_1.BaseAiGenProviderServic
112
112
  const modelConfig = aiModels_1.aiModelConfigs[modelKey];
113
113
  const cost = modelConfig.cost?.fixed ??
114
114
  modelConfig.cost?.table?.[resolution]?.[duration];
115
- return (0, helpers_2.getCreditsFromCost)(cost ?? 0);
115
+ return (0, helpers_2.getCreditsFromCost)(cost ?? 0.5); // default to 10 cents if unknown // log error as well
116
116
  }
117
117
  }
118
118
  exports.MinimaxService = MinimaxService;
@@ -105,7 +105,7 @@ class OpenaiService extends baseAiGenProvider_service_1.BaseAiGenProviderService
105
105
  getCreditUsed({ modelKey, resolution = "720x1280", duration = 5, }) {
106
106
  const modelConfig = aiModels_1.aiModelConfigs[modelKey];
107
107
  const cost = modelConfig?.cost?.table?.[resolution]?.[duration];
108
- return (0, utils_1.getCreditsFromCost)(cost ?? 0);
108
+ return (0, utils_1.getCreditsFromCost)(cost ?? 2);
109
109
  }
110
110
  }
111
111
  exports.OpenaiService = OpenaiService;
@@ -1,2 +1,3 @@
1
1
  export * from "./helpers";
2
+ export * from "./logger";
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC"}
@@ -15,3 +15,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./helpers"), exports);
18
+ __exportStar(require("./logger"), exports);
@@ -1,6 +1,6 @@
1
1
  import { Logger } from "winston";
2
2
  /**
3
- * Winston logger
3
+ * Logger factory
4
4
  */
5
- export declare const logger: Logger;
5
+ export declare function createLogger(serviceName: string): Logger;
6
6
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAsF1C;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,MAUnB,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AA0B1C;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAsExD"}
@@ -3,9 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.logger = void 0;
6
+ exports.createLogger = createLogger;
7
7
  const winston_1 = __importDefault(require("winston"));
8
8
  const winston_slack_webhook_transport_1 = __importDefault(require("winston-slack-webhook-transport"));
9
+ const winston_loki_1 = __importDefault(require("winston-loki"));
9
10
  const { combine, timestamp, errors, printf, colorize, json } = winston_1.default.format;
10
11
  const isProduction = process.env.NODE_ENV === "production";
11
12
  /**
@@ -16,72 +17,69 @@ const consoleFormat = combine(colorize(), timestamp({ format: "YYYY-MM-DD HH:mm:
16
17
  return `${timestamp} [${level}]: ${stack ?? message}${Object.keys(meta).length ? ` ${JSON.stringify(meta)}` : ""}`;
17
18
  }));
18
19
  /**
19
- * Slack transport (ERROR ONLY)
20
+ * Logger factory
20
21
  */
21
- const slackTransport = new winston_slack_webhook_transport_1.default({
22
- webhookUrl: process.env.SLACK_WEBHOOK_URL,
23
- level: "error",
24
- // IMPORTANT: do not narrow the parameter type
25
- formatter: (info) => {
26
- const log = info;
27
- return {
28
- text: `🚨 *${process.env.SERVICE_NAME ?? "Service"} Error*`,
29
- blocks: [
30
- {
31
- type: "header",
32
- text: {
33
- type: "plain_text",
34
- text: "🚨 Application Error",
35
- },
36
- },
37
- {
38
- type: "section",
39
- fields: [
40
- {
41
- type: "mrkdwn",
42
- text: `*Service:*\n${process.env.SERVICE_NAME ?? "unknown"}`,
43
- },
44
- {
45
- type: "mrkdwn",
46
- text: `*Environment:*\n${process.env.NODE_ENV ?? "unknown"}`,
47
- },
48
- {
22
+ function createLogger(serviceName) {
23
+ /**
24
+ * Grafana Loki transport (ALL LOGS)
25
+ */
26
+ const lokiTransport = process.env.GRAFANA_LOKI_URL && process.env.GRAFANA_LOKI_AUTH
27
+ ? new winston_loki_1.default({
28
+ host: process.env.GRAFANA_LOKI_URL,
29
+ basicAuth: process.env.GRAFANA_LOKI_AUTH,
30
+ labels: {
31
+ service: serviceName,
32
+ environment: process.env.NODE_ENV ?? "unknown",
33
+ },
34
+ json: true,
35
+ replaceTimestamp: true,
36
+ onConnectionError: (err) => {
37
+ console.error("Loki connection error", err);
38
+ },
39
+ })
40
+ : null;
41
+ /**
42
+ * Slack transport (ERROR ONLY)
43
+ */
44
+ const slackTransport = isProduction && process.env.SLACK_WEBHOOK_URL
45
+ ? new winston_slack_webhook_transport_1.default({
46
+ webhookUrl: process.env.SLACK_WEBHOOK_URL,
47
+ level: "error",
48
+ formatter: (info) => {
49
+ const log = info;
50
+ const blocks = [
51
+ {
52
+ type: "section",
53
+ text: {
49
54
  type: "mrkdwn",
50
- text: `*Level:*\n${log.level.toUpperCase()}`,
55
+ text: `🚨 *${serviceName}*\n\`\`\`${log.message}\`\`\``,
51
56
  },
52
- ],
53
- },
54
- {
55
- type: "section",
56
- text: {
57
- type: "mrkdwn",
58
- text: `*Message:*\n\`\`\`${log.message}\`\`\``,
59
57
  },
60
- },
61
- log.stack
62
- ? {
58
+ ];
59
+ if (log.stack) {
60
+ blocks.push({
63
61
  type: "section",
64
62
  text: {
65
63
  type: "mrkdwn",
66
64
  text: `*Stack Trace:*\n\`\`\`${log.stack}\`\`\``,
67
65
  },
68
- }
69
- : undefined,
70
- ].filter(Boolean),
71
- };
72
- },
73
- });
74
- /**
75
- * Winston logger
76
- */
77
- exports.logger = winston_1.default.createLogger({
78
- level: "info",
79
- format: json(),
80
- transports: [
81
- new winston_1.default.transports.Console({
82
- format: consoleFormat,
83
- }),
84
- ...(isProduction && process.env.SLACK_WEBHOOK_URL ? [slackTransport] : []),
85
- ],
86
- exitOnError: false,
87
- });
66
+ });
67
+ }
68
+ return {
69
+ text: `🚨 ${serviceName} error`,
70
+ blocks,
71
+ };
72
+ },
73
+ })
74
+ : null;
75
+ return winston_1.default.createLogger({
76
+ level: "info",
77
+ format: json(),
78
+ transports: [
79
+ new winston_1.default.transports.Console({ format: consoleFormat }),
80
+ ...(lokiTransport ? [lokiTransport] : []),
81
+ ...(slackTransport ? [slackTransport] : []),
82
+ ],
83
+ exitOnError: false,
84
+ });
85
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vidspotai-shared",
3
- "version": "1.0.28",
3
+ "version": "1.0.29",
4
4
  "main": "lib/index.js",
5
5
  "types": "lib/index.d.ts",
6
6
  "exports": {
@@ -27,6 +27,7 @@
27
27
  "logform": "^2.7.0",
28
28
  "openai": "^6.1.0",
29
29
  "winston": "^3.19.0",
30
+ "winston-loki": "^6.1.3",
30
31
  "winston-slack-webhook-transport": "^2.3.6",
31
32
  "zod": "^4.1.11"
32
33
  },