@faasjs/func 3.0.0 → 3.1.1

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
@@ -102,7 +102,7 @@ declare class Func<TEvent = any, TContext = any, TResult = any> {
102
102
  /**
103
103
  * First time mount the function
104
104
  */
105
- mount(data: {
105
+ mount(data?: {
106
106
  event: TEvent;
107
107
  context: TContext;
108
108
  config?: Config;
package/dist/index.d.ts CHANGED
@@ -102,7 +102,7 @@ declare class Func<TEvent = any, TContext = any, TResult = any> {
102
102
  /**
103
103
  * First time mount the function
104
104
  */
105
- mount(data: {
105
+ mount(data?: {
106
106
  event: TEvent;
107
107
  context: TContext;
108
108
  config?: Config;
package/dist/index.js CHANGED
@@ -7,8 +7,8 @@ var crypto = require('crypto');
7
7
 
8
8
  // src/plugins/run_handler/index.ts
9
9
  var RunHandler = class {
10
- type = "handler";
11
- name = "handler";
10
+ type = "Handler";
11
+ name = "Handler";
12
12
  async onInvoke(data, next) {
13
13
  if (data.handler)
14
14
  if (!data.runHandler) {
@@ -81,16 +81,23 @@ var Func = class {
81
81
  if (i === list.length) fn = next;
82
82
  if (!fn) return Promise.resolve();
83
83
  if (typeof fn.key === "undefined") fn.key = `UnNamedPlugin#${i}`;
84
- logger$1.debug("[%s] [%s] begin", fn.key, key);
85
- logger$1.time(fn.key);
84
+ if (!data.context) data.context = /* @__PURE__ */ Object.create(null);
85
+ if (!data.context.request_at)
86
+ data.context.request_at = crypto.randomBytes(16).toString("hex");
87
+ const label = `${data.context.request_id}] [${fn.key}] [${key}`;
88
+ logger$1.label = label;
89
+ logger$1.debug("begin");
90
+ logger$1.time(label);
86
91
  try {
87
92
  const res = await Promise.resolve(
88
93
  fn.handler(data, dispatch.bind(null, i + 1))
89
94
  );
90
- logger$1.timeEnd(fn.key, "[%s] [%s] end", fn.key, key);
95
+ logger$1.label = label;
96
+ logger$1.timeEnd(label, "end");
91
97
  return res;
92
98
  } catch (err) {
93
- logger$1.timeEnd(fn.key, "[%s] [%s] failed", fn.key, key);
99
+ logger$1.label = label;
100
+ logger$1.timeEnd(label, "failed");
94
101
  logger$1.error(err);
95
102
  return Promise.reject(err);
96
103
  }
@@ -101,26 +108,21 @@ var Func = class {
101
108
  /**
102
109
  * First time mount the function
103
110
  */
104
- async mount(data) {
111
+ async mount(data = {
112
+ event: /* @__PURE__ */ Object.create(null),
113
+ context: /* @__PURE__ */ Object.create(null)
114
+ }) {
105
115
  if (!data.logger) data.logger = new logger.Logger("Func");
106
- const logger$1 = new logger.Logger(data.logger?.label || "Func");
107
- if (!logger$1.label.endsWith("Func")) logger$1.label = `${logger$1.label}] [Func`;
108
- logger$1.debug("onMount");
109
116
  if (this.mounted) {
110
- logger$1.warn("mount() has been called, skipped.");
117
+ data.logger.warn("mount() has been called, skipped.");
111
118
  return;
112
119
  }
113
120
  if (!data.config) data.config = this.config;
114
- try {
115
- logger$1.time("mount");
116
- logger$1.debug(
117
- `Plugins: ${this.plugins.map((p) => `${p.type}#${p.name}`).join(",")}`
118
- );
119
- await this.compose("onMount")(data);
120
- this.mounted = true;
121
- } finally {
122
- logger$1.timeEnd("mount", "mounted");
123
- }
121
+ data.logger.debug(
122
+ `Plugins: ${this.plugins.map((p) => `${p.type}#${p.name}`).join(",")}`
123
+ );
124
+ await this.compose("onMount")(data);
125
+ this.mounted = true;
124
126
  }
125
127
  /**
126
128
  * Invoke the function
@@ -150,7 +152,7 @@ var Func = class {
150
152
  if (!context.request_id)
151
153
  context.request_id = event?.headers?.["x-faasjs-request-id"] || crypto.randomBytes(16).toString("hex");
152
154
  if (!context.request_at)
153
- context.request_at = Math.round(Date.now() / 1e3);
155
+ context.request_at = crypto.randomBytes(16).toString("hex");
154
156
  context.callbackWaitsForEmptyEventLoop = false;
155
157
  const logger$1 = new logger.Logger(context.request_id);
156
158
  logger$1.debug("event: %j", event);
package/dist/index.mjs CHANGED
@@ -5,8 +5,8 @@ import { randomBytes } from 'node:crypto';
5
5
 
6
6
  // src/plugins/run_handler/index.ts
7
7
  var RunHandler = class {
8
- type = "handler";
9
- name = "handler";
8
+ type = "Handler";
9
+ name = "Handler";
10
10
  async onInvoke(data, next) {
11
11
  if (data.handler)
12
12
  if (!data.runHandler) {
@@ -79,16 +79,23 @@ var Func = class {
79
79
  if (i === list.length) fn = next;
80
80
  if (!fn) return Promise.resolve();
81
81
  if (typeof fn.key === "undefined") fn.key = `UnNamedPlugin#${i}`;
82
- logger.debug("[%s] [%s] begin", fn.key, key);
83
- logger.time(fn.key);
82
+ if (!data.context) data.context = /* @__PURE__ */ Object.create(null);
83
+ if (!data.context.request_at)
84
+ data.context.request_at = randomBytes(16).toString("hex");
85
+ const label = `${data.context.request_id}] [${fn.key}] [${key}`;
86
+ logger.label = label;
87
+ logger.debug("begin");
88
+ logger.time(label);
84
89
  try {
85
90
  const res = await Promise.resolve(
86
91
  fn.handler(data, dispatch.bind(null, i + 1))
87
92
  );
88
- logger.timeEnd(fn.key, "[%s] [%s] end", fn.key, key);
93
+ logger.label = label;
94
+ logger.timeEnd(label, "end");
89
95
  return res;
90
96
  } catch (err) {
91
- logger.timeEnd(fn.key, "[%s] [%s] failed", fn.key, key);
97
+ logger.label = label;
98
+ logger.timeEnd(label, "failed");
92
99
  logger.error(err);
93
100
  return Promise.reject(err);
94
101
  }
@@ -99,26 +106,21 @@ var Func = class {
99
106
  /**
100
107
  * First time mount the function
101
108
  */
102
- async mount(data) {
109
+ async mount(data = {
110
+ event: /* @__PURE__ */ Object.create(null),
111
+ context: /* @__PURE__ */ Object.create(null)
112
+ }) {
103
113
  if (!data.logger) data.logger = new Logger("Func");
104
- const logger = new Logger(data.logger?.label || "Func");
105
- if (!logger.label.endsWith("Func")) logger.label = `${logger.label}] [Func`;
106
- logger.debug("onMount");
107
114
  if (this.mounted) {
108
- logger.warn("mount() has been called, skipped.");
115
+ data.logger.warn("mount() has been called, skipped.");
109
116
  return;
110
117
  }
111
118
  if (!data.config) data.config = this.config;
112
- try {
113
- logger.time("mount");
114
- logger.debug(
115
- `Plugins: ${this.plugins.map((p) => `${p.type}#${p.name}`).join(",")}`
116
- );
117
- await this.compose("onMount")(data);
118
- this.mounted = true;
119
- } finally {
120
- logger.timeEnd("mount", "mounted");
121
- }
119
+ data.logger.debug(
120
+ `Plugins: ${this.plugins.map((p) => `${p.type}#${p.name}`).join(",")}`
121
+ );
122
+ await this.compose("onMount")(data);
123
+ this.mounted = true;
122
124
  }
123
125
  /**
124
126
  * Invoke the function
@@ -148,7 +150,7 @@ var Func = class {
148
150
  if (!context.request_id)
149
151
  context.request_id = event?.headers?.["x-faasjs-request-id"] || randomBytes(16).toString("hex");
150
152
  if (!context.request_at)
151
- context.request_at = Math.round(Date.now() / 1e3);
153
+ context.request_at = randomBytes(16).toString("hex");
152
154
  context.callbackWaitsForEmptyEventLoop = false;
153
155
  const logger = new Logger(context.request_id);
154
156
  logger.debug("event: %j", event);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faasjs/func",
3
- "version": "3.0.0",
3
+ "version": "3.1.1",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -34,8 +34,8 @@
34
34
  "dist"
35
35
  ],
36
36
  "dependencies": {
37
- "@faasjs/deep_merge": "3.0.0",
38
- "@faasjs/logger": "3.0.0"
37
+ "@faasjs/deep_merge": "3.1.1",
38
+ "@faasjs/logger": "3.1.1"
39
39
  },
40
40
  "engines": {
41
41
  "node": ">=22.0.0",