@envelop/core 1.6.2 → 1.6.3
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/index.js +29 -27
- package/index.mjs +29 -27
- package/package.json +1 -1
- package/traced-orchestrator.d.ts +3 -1
package/index.js
CHANGED
|
@@ -628,25 +628,27 @@ function createEnvelopOrchestrator(plugins) {
|
|
|
628
628
|
};
|
|
629
629
|
}
|
|
630
630
|
|
|
631
|
-
|
|
632
|
-
const
|
|
633
|
-
const
|
|
634
|
-
const
|
|
635
|
-
|
|
636
|
-
|
|
631
|
+
var _a;
|
|
632
|
+
const getTimestamp = typeof globalThis !== 'undefined' && ((_a = globalThis === null || globalThis === void 0 ? void 0 : globalThis.performance) === null || _a === void 0 ? void 0 : _a.now) ? () => performance.now() : () => Date.now();
|
|
633
|
+
const measure = () => {
|
|
634
|
+
const start = getTimestamp();
|
|
635
|
+
return () => {
|
|
636
|
+
const end = getTimestamp();
|
|
637
|
+
return start - end;
|
|
638
|
+
};
|
|
637
639
|
};
|
|
640
|
+
const tracingSymbol = Symbol('envelopTracing');
|
|
638
641
|
function traceOrchestrator(orchestrator) {
|
|
639
642
|
const createTracer = (name, ctx) => {
|
|
640
|
-
const
|
|
643
|
+
const end = measure();
|
|
641
644
|
return () => {
|
|
642
|
-
|
|
643
|
-
ctx._envelopTracing[name] = time;
|
|
645
|
+
ctx[tracingSymbol][name] = end();
|
|
644
646
|
};
|
|
645
647
|
};
|
|
646
648
|
return {
|
|
647
649
|
...orchestrator,
|
|
648
650
|
init: (ctx = {}) => {
|
|
649
|
-
ctx
|
|
651
|
+
ctx[tracingSymbol] = ctx[tracingSymbol] || {};
|
|
650
652
|
const done = createTracer('init', ctx || {});
|
|
651
653
|
try {
|
|
652
654
|
return orchestrator.init(ctx);
|
|
@@ -656,7 +658,7 @@ function traceOrchestrator(orchestrator) {
|
|
|
656
658
|
}
|
|
657
659
|
},
|
|
658
660
|
parse: (ctx = {}) => {
|
|
659
|
-
ctx
|
|
661
|
+
ctx[tracingSymbol] = ctx[tracingSymbol] || {};
|
|
660
662
|
const actualFn = orchestrator.parse(ctx);
|
|
661
663
|
return (...args) => {
|
|
662
664
|
const done = createTracer('parse', ctx);
|
|
@@ -669,7 +671,7 @@ function traceOrchestrator(orchestrator) {
|
|
|
669
671
|
};
|
|
670
672
|
},
|
|
671
673
|
validate: (ctx = {}) => {
|
|
672
|
-
ctx
|
|
674
|
+
ctx[tracingSymbol] = ctx[tracingSymbol] || {};
|
|
673
675
|
const actualFn = orchestrator.validate(ctx);
|
|
674
676
|
return (...args) => {
|
|
675
677
|
const done = createTracer('validate', ctx);
|
|
@@ -704,7 +706,7 @@ function traceOrchestrator(orchestrator) {
|
|
|
704
706
|
result.extensions = result.extensions || {};
|
|
705
707
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
706
708
|
// @ts-ignore GraphQL.js types contextValue as unknown
|
|
707
|
-
result.extensions.envelopTracing = args.contextValue
|
|
709
|
+
result.extensions.envelopTracing = args.contextValue[tracingSymbol];
|
|
708
710
|
}
|
|
709
711
|
else {
|
|
710
712
|
// eslint-disable-next-line no-console
|
|
@@ -828,8 +830,8 @@ const useLogger = (rawOptions = DEFAULT_OPTIONS) => {
|
|
|
828
830
|
};
|
|
829
831
|
};
|
|
830
832
|
|
|
831
|
-
const HR_TO_NS
|
|
832
|
-
const NS_TO_MS
|
|
833
|
+
const HR_TO_NS = 1e9;
|
|
834
|
+
const NS_TO_MS = 1e6;
|
|
833
835
|
const DEFAULT_OPTIONS$1 = {
|
|
834
836
|
onExecutionMeasurement: (args, timing) => console.log(`Operation execution "${args.operationName}" done in ${timing.ms}ms`),
|
|
835
837
|
onSubscriptionMeasurement: (args, timing) => console.log(`Operation subscription "${args.operationName}" done in ${timing.ms}ms`),
|
|
@@ -838,13 +840,13 @@ const DEFAULT_OPTIONS$1 = {
|
|
|
838
840
|
onResolverMeasurement: (info, timing) => console.log(`\tResolver of "${info.parentType.toString()}.${info.fieldName}" done in ${timing.ms}ms`),
|
|
839
841
|
onContextBuildingMeasurement: (timing) => console.log(`Context building done in ${timing.ms}ms`),
|
|
840
842
|
};
|
|
841
|
-
const deltaFrom
|
|
843
|
+
const deltaFrom = (hrtime) => {
|
|
842
844
|
const delta = process.hrtime(hrtime);
|
|
843
|
-
const ns = delta[0] * HR_TO_NS
|
|
845
|
+
const ns = delta[0] * HR_TO_NS + delta[1];
|
|
844
846
|
return {
|
|
845
847
|
ns,
|
|
846
848
|
get ms() {
|
|
847
|
-
return ns / NS_TO_MS
|
|
849
|
+
return ns / NS_TO_MS;
|
|
848
850
|
},
|
|
849
851
|
};
|
|
850
852
|
};
|
|
@@ -861,7 +863,7 @@ const useTiming = (rawOptions) => {
|
|
|
861
863
|
}
|
|
862
864
|
const contextStartTime = process.hrtime();
|
|
863
865
|
return () => {
|
|
864
|
-
options.onContextBuildingMeasurement(deltaFrom
|
|
866
|
+
options.onContextBuildingMeasurement(deltaFrom(contextStartTime));
|
|
865
867
|
};
|
|
866
868
|
};
|
|
867
869
|
}
|
|
@@ -875,7 +877,7 @@ const useTiming = (rawOptions) => {
|
|
|
875
877
|
}
|
|
876
878
|
const parseStartTime = process.hrtime();
|
|
877
879
|
return () => {
|
|
878
|
-
options.onParsingMeasurement(params.source, deltaFrom
|
|
880
|
+
options.onParsingMeasurement(params.source, deltaFrom(parseStartTime));
|
|
879
881
|
};
|
|
880
882
|
};
|
|
881
883
|
}
|
|
@@ -886,7 +888,7 @@ const useTiming = (rawOptions) => {
|
|
|
886
888
|
}
|
|
887
889
|
const validateStartTime = process.hrtime();
|
|
888
890
|
return () => {
|
|
889
|
-
options.onValidationMeasurement(params.documentAST, deltaFrom
|
|
891
|
+
options.onValidationMeasurement(params.documentAST, deltaFrom(validateStartTime));
|
|
890
892
|
};
|
|
891
893
|
};
|
|
892
894
|
}
|
|
@@ -899,12 +901,12 @@ const useTiming = (rawOptions) => {
|
|
|
899
901
|
const executeStartTime = process.hrtime();
|
|
900
902
|
return {
|
|
901
903
|
onExecuteDone: () => {
|
|
902
|
-
options.onExecutionMeasurement(args, deltaFrom
|
|
904
|
+
options.onExecutionMeasurement(args, deltaFrom(executeStartTime));
|
|
903
905
|
},
|
|
904
906
|
onResolverCalled: ({ info }) => {
|
|
905
907
|
const resolverStartTime = process.hrtime();
|
|
906
908
|
return () => {
|
|
907
|
-
options.onResolverMeasurement(info, deltaFrom
|
|
909
|
+
options.onResolverMeasurement(info, deltaFrom(resolverStartTime));
|
|
908
910
|
};
|
|
909
911
|
},
|
|
910
912
|
};
|
|
@@ -918,7 +920,7 @@ const useTiming = (rawOptions) => {
|
|
|
918
920
|
const executeStartTime = process.hrtime();
|
|
919
921
|
return {
|
|
920
922
|
onExecuteDone: () => {
|
|
921
|
-
options.onExecutionMeasurement(args, deltaFrom
|
|
923
|
+
options.onExecutionMeasurement(args, deltaFrom(executeStartTime));
|
|
922
924
|
},
|
|
923
925
|
};
|
|
924
926
|
};
|
|
@@ -933,12 +935,12 @@ const useTiming = (rawOptions) => {
|
|
|
933
935
|
const subscribeStartTime = process.hrtime();
|
|
934
936
|
return {
|
|
935
937
|
onSubscribeResult: () => {
|
|
936
|
-
options.onSubscriptionMeasurement && options.onSubscriptionMeasurement(args, deltaFrom
|
|
938
|
+
options.onSubscriptionMeasurement && options.onSubscriptionMeasurement(args, deltaFrom(subscribeStartTime));
|
|
937
939
|
},
|
|
938
940
|
onResolverCalled: ({ info }) => {
|
|
939
941
|
const resolverStartTime = process.hrtime();
|
|
940
942
|
return () => {
|
|
941
|
-
options.onResolverMeasurement && options.onResolverMeasurement(info, deltaFrom
|
|
943
|
+
options.onResolverMeasurement && options.onResolverMeasurement(info, deltaFrom(resolverStartTime));
|
|
942
944
|
};
|
|
943
945
|
},
|
|
944
946
|
};
|
|
@@ -952,7 +954,7 @@ const useTiming = (rawOptions) => {
|
|
|
952
954
|
const subscribeStartTime = process.hrtime();
|
|
953
955
|
return {
|
|
954
956
|
onSubscribeResult: () => {
|
|
955
|
-
options.onSubscriptionMeasurement && options.onSubscriptionMeasurement(args, deltaFrom
|
|
957
|
+
options.onSubscriptionMeasurement && options.onSubscriptionMeasurement(args, deltaFrom(subscribeStartTime));
|
|
956
958
|
},
|
|
957
959
|
};
|
|
958
960
|
};
|
package/index.mjs
CHANGED
|
@@ -624,25 +624,27 @@ function createEnvelopOrchestrator(plugins) {
|
|
|
624
624
|
};
|
|
625
625
|
}
|
|
626
626
|
|
|
627
|
-
|
|
628
|
-
const
|
|
629
|
-
const
|
|
630
|
-
const
|
|
631
|
-
|
|
632
|
-
|
|
627
|
+
var _a;
|
|
628
|
+
const getTimestamp = typeof globalThis !== 'undefined' && ((_a = globalThis === null || globalThis === void 0 ? void 0 : globalThis.performance) === null || _a === void 0 ? void 0 : _a.now) ? () => performance.now() : () => Date.now();
|
|
629
|
+
const measure = () => {
|
|
630
|
+
const start = getTimestamp();
|
|
631
|
+
return () => {
|
|
632
|
+
const end = getTimestamp();
|
|
633
|
+
return start - end;
|
|
634
|
+
};
|
|
633
635
|
};
|
|
636
|
+
const tracingSymbol = Symbol('envelopTracing');
|
|
634
637
|
function traceOrchestrator(orchestrator) {
|
|
635
638
|
const createTracer = (name, ctx) => {
|
|
636
|
-
const
|
|
639
|
+
const end = measure();
|
|
637
640
|
return () => {
|
|
638
|
-
|
|
639
|
-
ctx._envelopTracing[name] = time;
|
|
641
|
+
ctx[tracingSymbol][name] = end();
|
|
640
642
|
};
|
|
641
643
|
};
|
|
642
644
|
return {
|
|
643
645
|
...orchestrator,
|
|
644
646
|
init: (ctx = {}) => {
|
|
645
|
-
ctx
|
|
647
|
+
ctx[tracingSymbol] = ctx[tracingSymbol] || {};
|
|
646
648
|
const done = createTracer('init', ctx || {});
|
|
647
649
|
try {
|
|
648
650
|
return orchestrator.init(ctx);
|
|
@@ -652,7 +654,7 @@ function traceOrchestrator(orchestrator) {
|
|
|
652
654
|
}
|
|
653
655
|
},
|
|
654
656
|
parse: (ctx = {}) => {
|
|
655
|
-
ctx
|
|
657
|
+
ctx[tracingSymbol] = ctx[tracingSymbol] || {};
|
|
656
658
|
const actualFn = orchestrator.parse(ctx);
|
|
657
659
|
return (...args) => {
|
|
658
660
|
const done = createTracer('parse', ctx);
|
|
@@ -665,7 +667,7 @@ function traceOrchestrator(orchestrator) {
|
|
|
665
667
|
};
|
|
666
668
|
},
|
|
667
669
|
validate: (ctx = {}) => {
|
|
668
|
-
ctx
|
|
670
|
+
ctx[tracingSymbol] = ctx[tracingSymbol] || {};
|
|
669
671
|
const actualFn = orchestrator.validate(ctx);
|
|
670
672
|
return (...args) => {
|
|
671
673
|
const done = createTracer('validate', ctx);
|
|
@@ -700,7 +702,7 @@ function traceOrchestrator(orchestrator) {
|
|
|
700
702
|
result.extensions = result.extensions || {};
|
|
701
703
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
702
704
|
// @ts-ignore GraphQL.js types contextValue as unknown
|
|
703
|
-
result.extensions.envelopTracing = args.contextValue
|
|
705
|
+
result.extensions.envelopTracing = args.contextValue[tracingSymbol];
|
|
704
706
|
}
|
|
705
707
|
else {
|
|
706
708
|
// eslint-disable-next-line no-console
|
|
@@ -824,8 +826,8 @@ const useLogger = (rawOptions = DEFAULT_OPTIONS) => {
|
|
|
824
826
|
};
|
|
825
827
|
};
|
|
826
828
|
|
|
827
|
-
const HR_TO_NS
|
|
828
|
-
const NS_TO_MS
|
|
829
|
+
const HR_TO_NS = 1e9;
|
|
830
|
+
const NS_TO_MS = 1e6;
|
|
829
831
|
const DEFAULT_OPTIONS$1 = {
|
|
830
832
|
onExecutionMeasurement: (args, timing) => console.log(`Operation execution "${args.operationName}" done in ${timing.ms}ms`),
|
|
831
833
|
onSubscriptionMeasurement: (args, timing) => console.log(`Operation subscription "${args.operationName}" done in ${timing.ms}ms`),
|
|
@@ -834,13 +836,13 @@ const DEFAULT_OPTIONS$1 = {
|
|
|
834
836
|
onResolverMeasurement: (info, timing) => console.log(`\tResolver of "${info.parentType.toString()}.${info.fieldName}" done in ${timing.ms}ms`),
|
|
835
837
|
onContextBuildingMeasurement: (timing) => console.log(`Context building done in ${timing.ms}ms`),
|
|
836
838
|
};
|
|
837
|
-
const deltaFrom
|
|
839
|
+
const deltaFrom = (hrtime) => {
|
|
838
840
|
const delta = process.hrtime(hrtime);
|
|
839
|
-
const ns = delta[0] * HR_TO_NS
|
|
841
|
+
const ns = delta[0] * HR_TO_NS + delta[1];
|
|
840
842
|
return {
|
|
841
843
|
ns,
|
|
842
844
|
get ms() {
|
|
843
|
-
return ns / NS_TO_MS
|
|
845
|
+
return ns / NS_TO_MS;
|
|
844
846
|
},
|
|
845
847
|
};
|
|
846
848
|
};
|
|
@@ -857,7 +859,7 @@ const useTiming = (rawOptions) => {
|
|
|
857
859
|
}
|
|
858
860
|
const contextStartTime = process.hrtime();
|
|
859
861
|
return () => {
|
|
860
|
-
options.onContextBuildingMeasurement(deltaFrom
|
|
862
|
+
options.onContextBuildingMeasurement(deltaFrom(contextStartTime));
|
|
861
863
|
};
|
|
862
864
|
};
|
|
863
865
|
}
|
|
@@ -871,7 +873,7 @@ const useTiming = (rawOptions) => {
|
|
|
871
873
|
}
|
|
872
874
|
const parseStartTime = process.hrtime();
|
|
873
875
|
return () => {
|
|
874
|
-
options.onParsingMeasurement(params.source, deltaFrom
|
|
876
|
+
options.onParsingMeasurement(params.source, deltaFrom(parseStartTime));
|
|
875
877
|
};
|
|
876
878
|
};
|
|
877
879
|
}
|
|
@@ -882,7 +884,7 @@ const useTiming = (rawOptions) => {
|
|
|
882
884
|
}
|
|
883
885
|
const validateStartTime = process.hrtime();
|
|
884
886
|
return () => {
|
|
885
|
-
options.onValidationMeasurement(params.documentAST, deltaFrom
|
|
887
|
+
options.onValidationMeasurement(params.documentAST, deltaFrom(validateStartTime));
|
|
886
888
|
};
|
|
887
889
|
};
|
|
888
890
|
}
|
|
@@ -895,12 +897,12 @@ const useTiming = (rawOptions) => {
|
|
|
895
897
|
const executeStartTime = process.hrtime();
|
|
896
898
|
return {
|
|
897
899
|
onExecuteDone: () => {
|
|
898
|
-
options.onExecutionMeasurement(args, deltaFrom
|
|
900
|
+
options.onExecutionMeasurement(args, deltaFrom(executeStartTime));
|
|
899
901
|
},
|
|
900
902
|
onResolverCalled: ({ info }) => {
|
|
901
903
|
const resolverStartTime = process.hrtime();
|
|
902
904
|
return () => {
|
|
903
|
-
options.onResolverMeasurement(info, deltaFrom
|
|
905
|
+
options.onResolverMeasurement(info, deltaFrom(resolverStartTime));
|
|
904
906
|
};
|
|
905
907
|
},
|
|
906
908
|
};
|
|
@@ -914,7 +916,7 @@ const useTiming = (rawOptions) => {
|
|
|
914
916
|
const executeStartTime = process.hrtime();
|
|
915
917
|
return {
|
|
916
918
|
onExecuteDone: () => {
|
|
917
|
-
options.onExecutionMeasurement(args, deltaFrom
|
|
919
|
+
options.onExecutionMeasurement(args, deltaFrom(executeStartTime));
|
|
918
920
|
},
|
|
919
921
|
};
|
|
920
922
|
};
|
|
@@ -929,12 +931,12 @@ const useTiming = (rawOptions) => {
|
|
|
929
931
|
const subscribeStartTime = process.hrtime();
|
|
930
932
|
return {
|
|
931
933
|
onSubscribeResult: () => {
|
|
932
|
-
options.onSubscriptionMeasurement && options.onSubscriptionMeasurement(args, deltaFrom
|
|
934
|
+
options.onSubscriptionMeasurement && options.onSubscriptionMeasurement(args, deltaFrom(subscribeStartTime));
|
|
933
935
|
},
|
|
934
936
|
onResolverCalled: ({ info }) => {
|
|
935
937
|
const resolverStartTime = process.hrtime();
|
|
936
938
|
return () => {
|
|
937
|
-
options.onResolverMeasurement && options.onResolverMeasurement(info, deltaFrom
|
|
939
|
+
options.onResolverMeasurement && options.onResolverMeasurement(info, deltaFrom(resolverStartTime));
|
|
938
940
|
};
|
|
939
941
|
},
|
|
940
942
|
};
|
|
@@ -948,7 +950,7 @@ const useTiming = (rawOptions) => {
|
|
|
948
950
|
const subscribeStartTime = process.hrtime();
|
|
949
951
|
return {
|
|
950
952
|
onSubscribeResult: () => {
|
|
951
|
-
options.onSubscriptionMeasurement && options.onSubscriptionMeasurement(args, deltaFrom
|
|
953
|
+
options.onSubscriptionMeasurement && options.onSubscriptionMeasurement(args, deltaFrom(subscribeStartTime));
|
|
952
954
|
},
|
|
953
955
|
};
|
|
954
956
|
};
|
package/package.json
CHANGED
package/traced-orchestrator.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { ArbitraryObject } from '@envelop/types';
|
|
2
2
|
import { EnvelopOrchestrator } from './orchestrator';
|
|
3
|
+
declare const tracingSymbol: unique symbol;
|
|
3
4
|
export declare function traceOrchestrator<TInitialContext extends ArbitraryObject, TPluginsContext extends ArbitraryObject>(orchestrator: EnvelopOrchestrator<TInitialContext, TPluginsContext>): EnvelopOrchestrator<TInitialContext & {
|
|
4
|
-
|
|
5
|
+
[tracingSymbol]?: {};
|
|
5
6
|
}, TPluginsContext>;
|
|
7
|
+
export {};
|