@microsoft/metrics-ts 0.0.2-beta.8f7695afa.0 → 0.0.3-alpha.034f24ebd.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.
@@ -1 +1 @@
1
- {"version":3,"file":"timer.d.ts","sourceRoot":"","sources":["../../src/capability/timer.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,OAAO,OAAQ,MAAM,cAGhB,GAAG,eAAe,MAAM,cAAc,kBAAkB,uBAqEzE,CAAC"}
1
+ {"version":3,"file":"timer.d.ts","sourceRoot":"","sources":["../../src/capability/timer.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,OAAO,OAAQ,MAAM,cAGhB,GAAG,eAAe,MAAM,cAAc,kBAAkB,uBAiEzE,CAAC"}
@@ -31,7 +31,6 @@ const MSTimer = (fn) => {
31
31
  };
32
32
  if (originalMethod.constructor.name === "AsyncFunction") {
33
33
  descriptor.value = async function (...args) {
34
- data.args = args;
35
34
  const start = perf_hooks_1.performance.now();
36
35
  const result = await originalMethod.apply(this, args);
37
36
  const end = perf_hooks_1.performance.now();
@@ -57,7 +56,6 @@ const MSTimer = (fn) => {
57
56
  }
58
57
  else {
59
58
  descriptor.value = function (...args) {
60
- data.args = args;
61
59
  const start = perf_hooks_1.performance.now();
62
60
  const result = originalMethod.apply(this, args);
63
61
  const end = perf_hooks_1.performance.now();
@@ -1 +1 @@
1
- {"version":3,"file":"timer.js","sourceRoot":"","sources":["../../src/capability/timer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"timer.js","sourceRoot":"","sources":["../../src/capability/timer.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,2CAAyC;AACzC,wCAAkE;AAClE,wCAAqC;AACrC,sCAA2D;AAE3D;;;GAGG;AACH,MAAM,IAAI,GAAG,CAAC,CAAC;AACf,MAAM,MAAM,GAAG,EAAE,CAAC;AAEX,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,EAAE;IACpC,wDAAwD;IACxD,uEAAuE;IACvE,OAAO,CAAC,MAAW,EAAE,WAAmB,EAAE,UAA8B,EAAE,EAAE;QAC1E,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,CAAC;QAExC;;WAEG;QACH,MAAM,IAAI,GAAe;YACvB,OAAO,EAAE,IAAA,iBAAO,GAAE;YAClB,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI;YAC9B,MAAM,EAAE,cAAc,CAAC,IAAI;YAC3B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QAEF,IAAI,cAAc,CAAC,WAAW,CAAC,IAAI,KAAK,eAAe,EAAE;YACvD,UAAU,CAAC,KAAK,GAAG,KAAK,WAAW,GAAG,IAAW;gBAC/C,MAAM,KAAK,GAAG,wBAAW,CAAC,GAAG,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACtD,MAAM,GAAG,GAAG,wBAAW,CAAC,GAAG,EAAE,CAAC;gBAC9B,MAAM,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC;gBAC7B,IAAI,QAAuB,CAAC;gBAC5B,IAAI,QAAQ,GAAG,MAAM,EAAE;oBACrB,QAAQ,GAAG,uBAAa,CAAC,IAAI,CAAC;iBAC/B;qBAAM,IAAI,QAAQ,GAAG,IAAI,EAAE;oBAC1B,QAAQ,GAAG,uBAAa,CAAC,MAAM,CAAC;iBACjC;qBAAM;oBACL,QAAQ,GAAG,uBAAa,CAAC,IAAI,CAAC;iBAC/B;gBACD,MAAM,SAAS,GAAc;oBAC3B,QAAQ,EAAE,QAAQ;oBAClB,QAAQ,EAAE,QAAQ;iBACnB,CAAC;gBAEF,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;gBAEvB,MAAM,IAAA,qBAAY,EAAC,IAAI,CAAC,CAAC;gBACzB,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC;SACH;aAAM;YACL,UAAU,CAAC,KAAK,GAAG,UAAU,GAAG,IAAW;gBACzC,MAAM,KAAK,GAAG,wBAAW,CAAC,GAAG,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAChD,MAAM,GAAG,GAAG,wBAAW,CAAC,GAAG,EAAE,CAAC;gBAC9B,MAAM,QAAQ,GAAG,GAAG,GAAG,KAAK,CAAC;gBAC7B,IAAI,QAAuB,CAAC;gBAC5B,IAAI,QAAQ,GAAG,MAAM,EAAE;oBACrB,QAAQ,GAAG,uBAAa,CAAC,IAAI,CAAC;iBAC/B;qBAAM,IAAI,QAAQ,GAAG,IAAI,EAAE;oBAC1B,QAAQ,GAAG,uBAAa,CAAC,MAAM,CAAC;iBACjC;qBAAM;oBACL,QAAQ,GAAG,uBAAa,CAAC,IAAI,CAAC;iBAC/B;gBACD,MAAM,SAAS,GAAc;oBAC3B,QAAQ,EAAE,QAAQ;oBAClB,QAAQ,EAAE,QAAQ;iBACnB,CAAC;gBAEF,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;gBAEvB,IAAA,yBAAgB,EAAC,IAAI,CAAC,CAAC;gBACvB,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC;SACH;QACD,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC,CAAC;AApEW,QAAA,OAAO,WAoElB"}
package/build/index.d.ts CHANGED
@@ -1,4 +1,2 @@
1
- import { default as transformer } from "./transformer";
2
1
  export * from "./capability";
3
- export default transformer;
4
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AAEvD,cAAc,cAAc,CAAC;AAE7B,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
package/build/index.js CHANGED
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- const transformer_1 = tslib_1.__importDefault(require("./transformer"));
5
4
  tslib_1.__exportStar(require("./capability"), exports);
6
- exports.default = transformer_1.default;
7
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,wEAAuD;AAEvD,uDAA6B;AAE7B,kBAAe,qBAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uDAA6B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@microsoft/metrics-ts",
3
- "version": "0.0.2-beta.8f7695afa.0",
3
+ "version": "0.0.3-alpha.034f24ebd.0",
4
4
  "description": "Add metrics without intruding source code",
5
5
  "keywords": [
6
6
  "Metrics"
@@ -59,5 +59,5 @@
59
59
  "dependencies": {
60
60
  "uuid": "^8.3.2"
61
61
  },
62
- "gitHead": "78be9b309780b128c28b3fa517e683f67d8098c8"
62
+ "gitHead": "b108cff6de4c4125f54e16112d75963b9faaddca"
63
63
  }
@@ -32,8 +32,6 @@ export const MSTimer = (fn: string) => {
32
32
 
33
33
  if (originalMethod.constructor.name === "AsyncFunction") {
34
34
  descriptor.value = async function (...args: any[]) {
35
- data.args = args;
36
-
37
35
  const start = performance.now();
38
36
  const result = await originalMethod.apply(this, args);
39
37
  const end = performance.now();
@@ -58,8 +56,6 @@ export const MSTimer = (fn: string) => {
58
56
  };
59
57
  } else {
60
58
  descriptor.value = function (...args: any[]) {
61
- data.args = args;
62
-
63
59
  const start = performance.now();
64
60
  const result = originalMethod.apply(this, args);
65
61
  const end = performance.now();
package/src/index.ts CHANGED
@@ -1,5 +1 @@
1
- import { default as transformer } from "./transformer";
2
-
3
1
  export * from "./capability";
4
-
5
- export default transformer;
@@ -1,16 +0,0 @@
1
- import typescript from "typescript";
2
- /**
3
- * unused right now.
4
- */
5
- export declare enum Reporter {
6
- Json = "json"
7
- }
8
- export declare enum Capability {
9
- Timer = "timer"
10
- }
11
- export interface PluginConfig {
12
- capabilities?: Capability[];
13
- reporters?: Reporter[];
14
- }
15
- export default function (program: typescript.Program, config?: PluginConfig): (ctx: typescript.TransformationContext) => (sourceFile: typescript.SourceFile) => typescript.SourceFile;
16
- //# sourceMappingURL=transformer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transformer.d.ts","sourceRoot":"","sources":["../src/transformer.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC;;GAEG;AACH,oBAAY,QAAQ;IAClB,IAAI,SAAS;CACd;AAED,oBAAY,UAAU;IACpB,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACxB;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,YAAY,SAC5D,WAAW,qBAAqB,kBACvB,WAAW,UAAU,2BAwF5C"}
@@ -1,77 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Capability = exports.Reporter = void 0;
4
- const tslib_1 = require("tslib");
5
- const typescript_1 = tslib_1.__importDefault(require("typescript"));
6
- /**
7
- * unused right now.
8
- */
9
- var Reporter;
10
- (function (Reporter) {
11
- Reporter["Json"] = "json";
12
- })(Reporter = exports.Reporter || (exports.Reporter = {}));
13
- var Capability;
14
- (function (Capability) {
15
- Capability["Timer"] = "timer";
16
- })(Capability = exports.Capability || (exports.Capability = {}));
17
- function default_1(program, config) {
18
- return (ctx) => {
19
- return (sourceFile) => {
20
- let capabilities = [Capability.Timer];
21
- if (config && config.capabilities) {
22
- capabilities = config.capabilities;
23
- }
24
- const myLib = "@microsoft/metrics-ts";
25
- const myNamespace = "metrics_9527";
26
- /**
27
- * find source file node and add "import" statements
28
- * TODO: check imports,
29
- * @see {@link https://stackoverflow.com/questions/67723545/how-to-update-or-insert-to-import-using-typescript-compiler-api}
30
- * TODO: can't trans to commonjs is there's no import statement of source file.
31
- * TODO: make import name unique
32
- */
33
- function sourfileVisitor(node) {
34
- if (typescript_1.default.isSourceFile(node)) {
35
- return ctx.factory.updateSourceFile(node, [
36
- ctx.factory.createImportDeclaration(undefined /** decorators */, undefined /** modifiers */, ctx.factory.createImportClause(false, undefined /** name */, ctx.factory.createNamespaceImport(ctx.factory.createIdentifier(myNamespace))), ctx.factory.createStringLiteral(myLib)),
37
- ...sourceFile.statements,
38
- ]);
39
- }
40
- return typescript_1.default.visitEachChild(node, sourfileVisitor, ctx);
41
- }
42
- /**
43
- * find all methods and add metrics decorators for them
44
- */
45
- function methodVisitor(node) {
46
- if (typescript_1.default.isMethodDeclaration(node)) {
47
- /**
48
- * create metric decorator for function declaration
49
- */
50
- const metricsDecorators = [];
51
- for (const cap of capabilities) {
52
- metricsDecorators.push(ctx.factory.createDecorator(ctx.factory.createCallExpression(ctx.factory.createIdentifier(`${myNamespace}.${cap}`), undefined, [])));
53
- }
54
- /**
55
- * aggragate existing decorators with new decorators
56
- */
57
- let decorators;
58
- if (node.decorators) {
59
- decorators = [...node.decorators, ...metricsDecorators];
60
- }
61
- else {
62
- decorators = metricsDecorators;
63
- }
64
- /**
65
- * just update decorators, keep everything else.
66
- */
67
- return ctx.factory.updateMethodDeclaration(node, decorators, node.modifiers, node.asteriskToken, node.name, node.questionToken, node.typeParameters, node.parameters, node.type, node.body);
68
- }
69
- return typescript_1.default.visitEachChild(node, methodVisitor, ctx);
70
- }
71
- sourceFile = typescript_1.default.visitNode(sourceFile, sourfileVisitor);
72
- return typescript_1.default.visitNode(sourceFile, methodVisitor);
73
- };
74
- };
75
- }
76
- exports.default = default_1;
77
- //# sourceMappingURL=transformer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transformer.js","sourceRoot":"","sources":["../src/transformer.ts"],"names":[],"mappings":"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"}
@@ -1,109 +0,0 @@
1
- import typescript from "typescript";
2
-
3
- /**
4
- * unused right now.
5
- */
6
- export enum Reporter {
7
- Json = "json",
8
- }
9
-
10
- export enum Capability {
11
- Timer = "timer",
12
- }
13
-
14
- export interface PluginConfig {
15
- capabilities?: Capability[];
16
- reporters?: Reporter[];
17
- }
18
-
19
- export default function (program: typescript.Program, config?: PluginConfig) {
20
- return (ctx: typescript.TransformationContext) => {
21
- return (sourceFile: typescript.SourceFile) => {
22
- let capabilities = [Capability.Timer];
23
- if (config && config.capabilities) {
24
- capabilities = config.capabilities;
25
- }
26
-
27
- const myLib = "@microsoft/metrics-ts";
28
- const myNamespace = "metrics_9527";
29
- /**
30
- * find source file node and add "import" statements
31
- * TODO: check imports,
32
- * @see {@link https://stackoverflow.com/questions/67723545/how-to-update-or-insert-to-import-using-typescript-compiler-api}
33
- * TODO: can't trans to commonjs is there's no import statement of source file.
34
- * TODO: make import name unique
35
- */
36
- function sourfileVisitor(node: typescript.Node): typescript.Node {
37
- if (typescript.isSourceFile(node)) {
38
- return ctx.factory.updateSourceFile(node as typescript.SourceFile, [
39
- ctx.factory.createImportDeclaration(
40
- undefined /** decorators */,
41
- undefined /** modifiers */,
42
- ctx.factory.createImportClause(
43
- false,
44
- undefined /** name */,
45
- ctx.factory.createNamespaceImport(ctx.factory.createIdentifier(myNamespace))
46
- ),
47
- ctx.factory.createStringLiteral(myLib)
48
- ),
49
- ...sourceFile.statements,
50
- ]);
51
- }
52
- return typescript.visitEachChild(node, sourfileVisitor, ctx);
53
- }
54
-
55
- /**
56
- * find all methods and add metrics decorators for them
57
- */
58
- function methodVisitor(node: typescript.Node): typescript.Node {
59
- if (typescript.isMethodDeclaration(node)) {
60
- /**
61
- * create metric decorator for function declaration
62
- */
63
- const metricsDecorators = [];
64
- for (const cap of capabilities) {
65
- metricsDecorators.push(
66
- ctx.factory.createDecorator(
67
- ctx.factory.createCallExpression(
68
- ctx.factory.createIdentifier(`${myNamespace}.${cap}`),
69
- undefined,
70
- []
71
- )
72
- )
73
- );
74
- }
75
-
76
- /**
77
- * aggragate existing decorators with new decorators
78
- */
79
- let decorators: typescript.Decorator[];
80
- if (node.decorators) {
81
- decorators = [...node.decorators, ...metricsDecorators];
82
- } else {
83
- decorators = metricsDecorators;
84
- }
85
-
86
- /**
87
- * just update decorators, keep everything else.
88
- */
89
- return ctx.factory.updateMethodDeclaration(
90
- node,
91
- decorators,
92
- node.modifiers,
93
- node.asteriskToken,
94
- node.name,
95
- node.questionToken,
96
- node.typeParameters,
97
- node.parameters,
98
- node.type,
99
- node.body
100
- );
101
- }
102
- return typescript.visitEachChild(node, methodVisitor, ctx);
103
- }
104
-
105
- sourceFile = typescript.visitNode(sourceFile, sourfileVisitor);
106
- return typescript.visitNode(sourceFile, methodVisitor);
107
- };
108
- };
109
- }