vue.js 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. const core_1 = require("@opencensus/core");
  4. const shimmer = require("shimmer");
  5. var RendererType;
  6. (function (RendererType) {
  7. RendererType["NORMAL"] = "normal";
  8. RendererType["BUNDLE"] = "bundle";
  9. })(RendererType || (RendererType = {}));
  10. class VuePlugin extends core_1.BasePlugin {
  11. constructor(moduleName) {
  12. super(moduleName);
  13. this.rendererResults = [];
  14. }
  15. applyPatch() {
  16. this.logger.debug('Patched vue-server-renderer');
  17. if (this.moduleExports) {
  18. this.logger.debug('patching vue-server-renderer.prototype.createRenderer');
  19. shimmer.wrap(this.moduleExports, 'createRenderer', this.getPatchCreateRenderer(RendererType.NORMAL));
  20. this.logger.debug('patching vue-server-renderer.prototype.createBundleRenderer');
  21. shimmer.wrap(this.moduleExports, 'createBundleRenderer', this.getPatchCreateRenderer(RendererType.BUNDLE));
  22. }
  23. return this.moduleExports;
  24. }
  25. applyUnpatch() {
  26. shimmer.unwrap(this.moduleExports, 'createRenderer');
  27. shimmer.unwrap(this.moduleExports, 'createBundleRenderer');
  28. for (let result of this.rendererResults) {
  29. shimmer.unwrap(result, 'renderToString');
  30. }
  31. }
  32. getPatchCreateRenderer(type) {
  33. const plugin = this;
  34. return function createRendererWrap(original) {
  35. return function create_renderer_trace() {
  36. const result = original.apply(this, arguments);
  37. plugin.logger.debug(`patching ${type}.renderToString`);
  38. shimmer.wrap(result, 'renderToString', plugin.getPatchRenderToString(type));
  39. plugin.rendererResults.push(result);
  40. return result;
  41. };
  42. };
  43. }
  44. getPatchRenderToString(type) {
  45. const plugin = this;
  46. return function renderToStringWrap(original) {
  47. return function render_string_trace() {
  48. if (!plugin.tracer.currentRootSpan) {
  49. return original.apply(this, arguments);
  50. }
  51. const span = plugin.tracer.startChildSpan(`vue-renderer`, core_1.SpanKind.CLIENT);
  52. if (span === null)
  53. return original.apply(this, arguments);
  54. const promise = original.apply(this, arguments);
  55. if (promise instanceof Promise) {
  56. promise.then(plugin.patchEnd(span)).catch(plugin.patchEnd(span));
  57. }
  58. return promise;
  59. };
  60. };
  61. }
  62. patchEnd(span) {
  63. const plugin = this;
  64. const patchedEnd = function (err) {
  65. if (plugin.options.detailedCommands === true && err instanceof Error) {
  66. span.addAttribute('error', err.message);
  67. }
  68. if (span.ended === false) {
  69. span.end();
  70. }
  71. };
  72. return this.tracer.wrap(patchedEnd);
  73. }
  74. }
  75. exports.VuePlugin = VuePlugin;
  76. const plugin = new VuePlugin('vue-server-renderer');
  77. exports.plugin = plugin;
  78. //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NlbnN1cy9wbHVnaW5zL3Z1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxZQUFZLENBQUE7O0FBRVosMkNBQTZEO0FBQzdELG1DQUFrQztBQU9sQyxJQUFLLFlBR0o7QUFIRCxXQUFLLFlBQVk7SUFDZixpQ0FBaUIsQ0FBQTtJQUNqQixpQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSEksWUFBWSxLQUFaLFlBQVksUUFHaEI7QUFHRCxNQUFhLFNBQVUsU0FBUSxpQkFBVTtJQVN2QyxZQUFhLFVBQWtCO1FBQzdCLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtRQUpYLG9CQUFlLEdBQTJCLEVBQUUsQ0FBQTtJQUtwRCxDQUFDO0lBS1MsVUFBVTtRQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO1FBRWhELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFBO1lBQzFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxnQkFBZ0IsRUFDL0MsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO1lBQ25ELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDZEQUE2RCxDQUFDLENBQUE7WUFDaEYsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLHNCQUFzQixFQUNyRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7U0FDcEQ7UUFDRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUE7SUFDM0IsQ0FBQztJQUdELFlBQVk7UUFDVixPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUs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