rian 0.1.0 → 0.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.
@@ -79,6 +79,7 @@ const exporter = (request) => (spans, context) => {
79
79
  droppedEventsCount: 0,
80
80
  droppedLinksCount: 0,
81
81
  attributes: convert_object_to_kv(span_ctx),
82
+ // @ts-expect-error TS2454
82
83
  status: status || { code: SpanStatusCode_UNSET },
83
84
  events: span.events.map((i) => ({
84
85
  name: i.name,
@@ -77,6 +77,7 @@ const exporter = (request) => (spans, context) => {
77
77
  droppedEventsCount: 0,
78
78
  droppedLinksCount: 0,
79
79
  attributes: convert_object_to_kv(span_ctx),
80
+ // @ts-expect-error TS2454
80
81
  status: status || { code: SpanStatusCode_UNSET },
81
82
  events: span.events.map((i) => ({
82
83
  name: i.name,
package/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  const package_json = require('rian/package.json');
4
4
  const tctx = require('tctx');
5
- const rian = require('rian');
5
+ const utils = require('rian/utils');
6
6
 
7
7
  function _interopNamespace(e) {
8
8
  if (e && e.__esModule) return e;
@@ -24,53 +24,6 @@ function _interopNamespace(e) {
24
24
 
25
25
  const tctx__namespace = /*#__PURE__*/_interopNamespace(tctx);
26
26
 
27
- const set_error = (scope, error) => {
28
- scope.set_context({
29
- error,
30
- });
31
- };
32
- const measureFn = (scope, fn, ...args) => {
33
- try {
34
- var r = fn(...args, scope), is_promise = r instanceof Promise;
35
- if (is_promise && rian.PROMISES.has(scope))
36
- rian.ADD_PROMISE(scope, r
37
- .catch((e) => void set_error(scope, e))
38
- .finally(() => scope.end()));
39
- return r;
40
- }
41
- catch (e) {
42
- set_error(scope, e);
43
- throw e;
44
- }
45
- finally {
46
- if (is_promise !== true)
47
- scope.end();
48
- }
49
- };
50
- /**
51
- * With a passed function — will start a span, and run the function, when the function finishes
52
- * the span finishes.
53
- *
54
- * The measure method will return whatever the function is, so if it's a promise, it returns a
55
- * promise and so on. Any error is caught and re thrown, and automatically tracked in the
56
- * context under the `error` property.
57
- *
58
- * All promises are tracked, and awaited on a `tracer.end`.
59
- *
60
- * @example
61
- *
62
- * ```text
63
- * const data = await measure(scope, get_data, 'user_id_123');
64
- * ^ ^ ^
65
- * | | |
66
- * | | the first argument to get_data
67
- * | function to be called
68
- * return value from get_data
69
- * ```
70
- */
71
- const measure = (scope, fn, // TODO: fn doesnt see scope correctly
72
- ...args) => measureFn(scope, fn, ...args);
73
-
74
27
  // ==> impl
75
28
  /**
76
29
  * @internal
@@ -125,9 +78,10 @@ const create = (name, options) => {
125
78
  };
126
79
  if (should_sample)
127
80
  spans.add(span_obj);
128
- const $ = (cb) => measure($, cb);
81
+ const $ = (cb) => utils.measureFn($, cb);
129
82
  $.traceparent = id;
130
83
  $.fork = (name) => span(name, id);
84
+ // @ts-expect-error TS7030 its always undefined ts :eye-roll:
131
85
  $.set_context = (ctx) => {
132
86
  if (typeof ctx === 'function')
133
87
  return void (span_obj.context = ctx(span_obj.context));
@@ -141,9 +95,8 @@ const create = (name, options) => {
141
95
  });
142
96
  };
143
97
  $.end = () => {
144
- if (span_obj.end)
145
- return void 0;
146
- span_obj.end = Date.now();
98
+ if (span_obj.end == null)
99
+ span_obj.end = Date.now();
147
100
  };
148
101
  return $;
149
102
  };
package/index.mjs CHANGED
@@ -1,53 +1,6 @@
1
1
  import { name, version } from 'rian/package.json';
2
2
  import * as tctx from 'tctx';
3
- import { PROMISES as PROMISES$1, ADD_PROMISE as ADD_PROMISE$1 } from 'rian';
4
-
5
- const set_error = (scope, error) => {
6
- scope.set_context({
7
- error,
8
- });
9
- };
10
- const measureFn = (scope, fn, ...args) => {
11
- try {
12
- var r = fn(...args, scope), is_promise = r instanceof Promise;
13
- if (is_promise && PROMISES$1.has(scope))
14
- ADD_PROMISE$1(scope, r
15
- .catch((e) => void set_error(scope, e))
16
- .finally(() => scope.end()));
17
- return r;
18
- }
19
- catch (e) {
20
- set_error(scope, e);
21
- throw e;
22
- }
23
- finally {
24
- if (is_promise !== true)
25
- scope.end();
26
- }
27
- };
28
- /**
29
- * With a passed function — will start a span, and run the function, when the function finishes
30
- * the span finishes.
31
- *
32
- * The measure method will return whatever the function is, so if it's a promise, it returns a
33
- * promise and so on. Any error is caught and re thrown, and automatically tracked in the
34
- * context under the `error` property.
35
- *
36
- * All promises are tracked, and awaited on a `tracer.end`.
37
- *
38
- * @example
39
- *
40
- * ```text
41
- * const data = await measure(scope, get_data, 'user_id_123');
42
- * ^ ^ ^
43
- * | | |
44
- * | | the first argument to get_data
45
- * | function to be called
46
- * return value from get_data
47
- * ```
48
- */
49
- const measure = (scope, fn, // TODO: fn doesnt see scope correctly
50
- ...args) => measureFn(scope, fn, ...args);
3
+ import { measureFn } from 'rian/utils';
51
4
 
52
5
  // ==> impl
53
6
  /**
@@ -103,9 +56,10 @@ const create = (name, options) => {
103
56
  };
104
57
  if (should_sample)
105
58
  spans.add(span_obj);
106
- const $ = (cb) => measure($, cb);
59
+ const $ = (cb) => measureFn($, cb);
107
60
  $.traceparent = id;
108
61
  $.fork = (name) => span(name, id);
62
+ // @ts-expect-error TS7030 its always undefined ts :eye-roll:
109
63
  $.set_context = (ctx) => {
110
64
  if (typeof ctx === 'function')
111
65
  return void (span_obj.context = ctx(span_obj.context));
@@ -119,9 +73,8 @@ const create = (name, options) => {
119
73
  });
120
74
  };
121
75
  $.end = () => {
122
- if (span_obj.end)
123
- return void 0;
124
- span_obj.end = Date.now();
76
+ if (span_obj.end == null)
77
+ span_obj.end = Date.now();
125
78
  };
126
79
  return $;
127
80
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rian",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Effective tracing for the edge and origins",
5
5
  "keywords": [
6
6
  "opentelemetry",
package/utils.d.ts CHANGED
@@ -15,15 +15,18 @@ declare type RealMeasureFnParams<T extends unknown[]> = T extends [] ? [] : T ex
15
15
  * @example
16
16
  *
17
17
  * ```text
18
- * const data = await measure(scope, get_data, 'user_id_123');
19
- * ^ ^ ^
20
- * | | |
21
- * | | the first argument to get_data
22
- * | function to be called
23
- * return value from get_data
18
+ * const data = await measure(scope, 'name', get_data, 'user_id_123');
19
+ * ^ ^ ^ ^ ^
20
+ * | | | | |
21
+ * | | | | the first argument to get_data
22
+ * | | | function to be called
23
+ * | | the name of the sub scope
24
+ * | |
25
+ * | the parent scope
26
+ * return value from get_data
24
27
  * ```
25
28
  */
26
- declare const measure: <Fn extends MeasureFn>(scope: Scope, fn: Fn, ...args: RealMeasureFnParams<Parameters<Fn>>) => ReturnType<Fn>;
29
+ declare const measure: <Fn extends MeasureFn>(scope: Scope, name: string, fn: Fn, ...args: RealMeasureFnParams<Parameters<Fn>>) => ReturnType<Fn>;
27
30
  /**
28
31
  * Wraps any function with a measured scoped function. Useful for when defer function execution
29
32
  * till a later time.
@@ -31,13 +34,13 @@ declare const measure: <Fn extends MeasureFn>(scope: Scope, fn: Fn, ...args: Rea
31
34
  * @example
32
35
  *
33
36
  * ```js
34
- * const wrapped = wrap(scope, my_function);
37
+ * const wrapped = wrap(scope, "run something", my_function);
35
38
  *
36
39
  * // ... lots of things, where the access to `scope` is lost.
37
40
  *
38
41
  * wrapped();
39
42
  * ```
40
43
  */
41
- declare const wrap: <Fn extends MeasureFn>(scope: Scope, fn: Fn) => Fn;
44
+ declare const wrap: <Fn extends MeasureFn>(scope: Scope, name: string, fn: Fn) => Fn;
42
45
 
43
46
  export { MeasureFn, measure, wrap };
package/utils.js CHANGED
@@ -7,6 +7,9 @@ const set_error = (scope, error) => {
7
7
  error,
8
8
  });
9
9
  };
10
+ /**
11
+ * @internal
12
+ */
10
13
  const measureFn = (scope, fn, ...args) => {
11
14
  try {
12
15
  var r = fn(...args, scope), is_promise = r instanceof Promise;
@@ -17,10 +20,12 @@ const measureFn = (scope, fn, ...args) => {
17
20
  return r;
18
21
  }
19
22
  catch (e) {
20
- set_error(scope, e);
23
+ if (e instanceof Error)
24
+ set_error(scope, e);
21
25
  throw e;
22
26
  }
23
27
  finally {
28
+ // @ts-expect-error TS2454
24
29
  if (is_promise !== true)
25
30
  scope.end();
26
31
  }
@@ -38,16 +43,19 @@ const measureFn = (scope, fn, ...args) => {
38
43
  * @example
39
44
  *
40
45
  * ```text
41
- * const data = await measure(scope, get_data, 'user_id_123');
42
- * ^ ^ ^
43
- * | | |
44
- * | | the first argument to get_data
45
- * | function to be called
46
- * return value from get_data
46
+ * const data = await measure(scope, 'name', get_data, 'user_id_123');
47
+ * ^ ^ ^ ^ ^
48
+ * | | | | |
49
+ * | | | | the first argument to get_data
50
+ * | | | function to be called
51
+ * | | the name of the sub scope
52
+ * | |
53
+ * | the parent scope
54
+ * return value from get_data
47
55
  * ```
48
56
  */
49
- const measure = (scope, fn, // TODO: fn doesnt see scope correctly
50
- ...args) => measureFn(scope, fn, ...args);
57
+ const measure = (scope, name, fn, // TODO: fn doesnt see scope correctly
58
+ ...args) => measureFn(scope.fork(name), fn, ...args);
51
59
  /**
52
60
  * Wraps any function with a measured scoped function. Useful for when defer function execution
53
61
  * till a later time.
@@ -55,16 +63,17 @@ const measure = (scope, fn, // TODO: fn doesnt see scope correctly
55
63
  * @example
56
64
  *
57
65
  * ```js
58
- * const wrapped = wrap(scope, my_function);
66
+ * const wrapped = wrap(scope, "run something", my_function);
59
67
  *
60
68
  * // ... lots of things, where the access to `scope` is lost.
61
69
  *
62
70
  * wrapped();
63
71
  * ```
64
72
  */
65
- const wrap = (scope, fn) => function () {
66
- return measureFn(scope, fn, ...arguments);
73
+ const wrap = (scope, name, fn) => function () {
74
+ return measureFn(scope.fork(name), fn, ...arguments);
67
75
  };
68
76
 
69
77
  exports.measure = measure;
78
+ exports.measureFn = measureFn;
70
79
  exports.wrap = wrap;
package/utils.mjs CHANGED
@@ -5,6 +5,9 @@ const set_error = (scope, error) => {
5
5
  error,
6
6
  });
7
7
  };
8
+ /**
9
+ * @internal
10
+ */
8
11
  const measureFn = (scope, fn, ...args) => {
9
12
  try {
10
13
  var r = fn(...args, scope), is_promise = r instanceof Promise;
@@ -15,10 +18,12 @@ const measureFn = (scope, fn, ...args) => {
15
18
  return r;
16
19
  }
17
20
  catch (e) {
18
- set_error(scope, e);
21
+ if (e instanceof Error)
22
+ set_error(scope, e);
19
23
  throw e;
20
24
  }
21
25
  finally {
26
+ // @ts-expect-error TS2454
22
27
  if (is_promise !== true)
23
28
  scope.end();
24
29
  }
@@ -36,16 +41,19 @@ const measureFn = (scope, fn, ...args) => {
36
41
  * @example
37
42
  *
38
43
  * ```text
39
- * const data = await measure(scope, get_data, 'user_id_123');
40
- * ^ ^ ^
41
- * | | |
42
- * | | the first argument to get_data
43
- * | function to be called
44
- * return value from get_data
44
+ * const data = await measure(scope, 'name', get_data, 'user_id_123');
45
+ * ^ ^ ^ ^ ^
46
+ * | | | | |
47
+ * | | | | the first argument to get_data
48
+ * | | | function to be called
49
+ * | | the name of the sub scope
50
+ * | |
51
+ * | the parent scope
52
+ * return value from get_data
45
53
  * ```
46
54
  */
47
- const measure = (scope, fn, // TODO: fn doesnt see scope correctly
48
- ...args) => measureFn(scope, fn, ...args);
55
+ const measure = (scope, name, fn, // TODO: fn doesnt see scope correctly
56
+ ...args) => measureFn(scope.fork(name), fn, ...args);
49
57
  /**
50
58
  * Wraps any function with a measured scoped function. Useful for when defer function execution
51
59
  * till a later time.
@@ -53,15 +61,15 @@ const measure = (scope, fn, // TODO: fn doesnt see scope correctly
53
61
  * @example
54
62
  *
55
63
  * ```js
56
- * const wrapped = wrap(scope, my_function);
64
+ * const wrapped = wrap(scope, "run something", my_function);
57
65
  *
58
66
  * // ... lots of things, where the access to `scope` is lost.
59
67
  *
60
68
  * wrapped();
61
69
  * ```
62
70
  */
63
- const wrap = (scope, fn) => function () {
64
- return measureFn(scope, fn, ...arguments);
71
+ const wrap = (scope, name, fn) => function () {
72
+ return measureFn(scope.fork(name), fn, ...arguments);
65
73
  };
66
74
 
67
- export { measure, wrap };
75
+ export { measure, measureFn, wrap };