From 226aa60a3f025df0f30c5e98a9f8d9e65c1ef755 Mon Sep 17 00:00:00 2001 From: Dave Raffensperger Date: Thu, 21 Mar 2019 19:28:54 -0400 Subject: [PATCH] Switch @opencensus/web-core to use @opencensus/web-types (#28) --- packages/opencensus-web-core/karma.conf.js | 2 +- .../opencensus-web-core/package-lock.json | 64 +----- packages/opencensus-web-core/package.json | 6 +- .../src/exporters/noop_exporter.ts | 10 +- packages/opencensus-web-core/src/index.ts | 5 +- .../src/trace/model/enums.ts | 206 ------------------ .../src/trace/model/root-span.ts | 15 +- .../src/trace/model/span.ts | 38 ++-- .../src/trace/model/tracer.ts | 28 +-- .../src/trace/model/tracing.ts | 10 +- .../propagation/no_headers_propagation.ts | 10 +- .../src/trace/sampler/sampler.ts | 4 +- .../test/test-root-span.ts | 2 +- .../opencensus-web-core/test/test-span.ts | 2 +- .../opencensus-web-core/test/test-tracer.ts | 17 +- .../opencensus-web-core/test/test-tracing.ts | 8 +- 16 files changed, 79 insertions(+), 348 deletions(-) delete mode 100644 packages/opencensus-web-core/src/trace/model/enums.ts diff --git a/packages/opencensus-web-core/karma.conf.js b/packages/opencensus-web-core/karma.conf.js index f43c67ec..1d908ae7 100644 --- a/packages/opencensus-web-core/karma.conf.js +++ b/packages/opencensus-web-core/karma.conf.js @@ -29,7 +29,7 @@ module.exports = (config) => { files: ['test/index.ts'], preprocessors: {'test/index.ts': ['webpack']}, // Use webpack so that tree-shaking will remove all Node.js dependencies of - // the `@opencensus/core` library, since they are not actually used in this + // the `@opencensus/web-types` library, since they are not actually used in this // package's compiled JS code. Only the TypeScript interfaces from // `@opecensus/core` are used. webpack: webpackConfig, diff --git a/packages/opencensus-web-core/package-lock.json b/packages/opencensus-web-core/package-lock.json index a11316ee..2a5d8363 100644 --- a/packages/opencensus-web-core/package-lock.json +++ b/packages/opencensus-web-core/package-lock.json @@ -158,31 +158,12 @@ } } }, - "@opencensus/core": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.9.tgz", - "integrity": "sha512-31Q4VWtbzXpVUd2m9JS6HEaPjlKvNMOiF7lWKNmXF84yUcgfAFL5re7/hjDmdyQbOp32oGc+RFV78jXIldVz6Q==", - "dev": true, - "requires": { - "continuation-local-storage": "^3.2.1", - "log-driver": "^1.2.7", - "semver": "^5.5.0", - "shimmer": "^1.2.0", - "uuid": "^3.2.1" - } - }, "@types/jasmine": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.3.5.tgz", "integrity": "sha512-LJtc52O1PNUffMvH6Q3fS0BOhQWYlkh3SVu/Jc4GoPgJkUytk5Y6YPbw+6lZK2mWWvG62BtVyOFw0ih7r8STsw==", "dev": true }, - "@types/node": { - "version": "10.12.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", - "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==", - "dev": true - }, "@webassemblyjs/ast": { "version": "1.7.11", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", @@ -619,16 +600,6 @@ "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", "dev": true }, - "async-listener": { - "version": "0.6.10", - "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz", - "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==", - "dev": true, - "requires": { - "semver": "^5.3.0", - "shimmer": "^1.1.0" - } - }, "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", @@ -1514,16 +1485,6 @@ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", "dev": true }, - "continuation-local-storage": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz", - "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==", - "dev": true, - "requires": { - "async-listener": "^0.6.0", - "emitter-listener": "^1.1.1" - } - }, "convert-source-map": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", @@ -1915,15 +1876,6 @@ "minimalistic-crypto-utils": "^1.0.0" } }, - "emitter-listener": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", - "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", - "dev": true, - "requires": { - "shimmer": "^1.2.0" - } - }, "emojis-list": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", @@ -3764,12 +3716,6 @@ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "dev": true }, - "log-driver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", - "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", - "dev": true - }, "log4js": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/log4js/-/log4js-3.0.6.tgz", @@ -4037,6 +3983,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" @@ -4046,7 +3993,8 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "dev": true + "dev": true, + "optional": true } } }, @@ -5343,12 +5291,6 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, - "shimmer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", - "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", - "dev": true - }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", diff --git a/packages/opencensus-web-core/package.json b/packages/opencensus-web-core/package.json index 23391695..1618aa42 100644 --- a/packages/opencensus-web-core/package.json +++ b/packages/opencensus-web-core/package.json @@ -43,9 +43,7 @@ "access": "public" }, "devDependencies": { - "@opencensus/core": "^0.0.9", "@types/jasmine": "^3.3.4", - "@types/node": "^10.12.18", "gts": "^0.9.0", "istanbul-instrumenter-loader": "^3.0.1", "jasmine": "^3.3.1", @@ -61,6 +59,8 @@ "webpack": "^4.18.0", "webpack-cli": "^3.1.0" }, - "dependencies": {}, + "dependencies": { + "@opencensus/web-types": "^0.0.1" + }, "sideEffects": false } diff --git a/packages/opencensus-web-core/src/exporters/noop_exporter.ts b/packages/opencensus-web-core/src/exporters/noop_exporter.ts index 36b6de72..bc740b7c 100644 --- a/packages/opencensus-web-core/src/exporters/noop_exporter.ts +++ b/packages/opencensus-web-core/src/exporters/noop_exporter.ts @@ -14,14 +14,14 @@ * limitations under the License. */ -import * as coreTypes from '@opencensus/core'; +import * as webTypes from '@opencensus/web-types'; -export class NoopExporter implements coreTypes.Exporter { - publish(roots: coreTypes.RootSpan[]): Promise { +export class NoopExporter implements webTypes.Exporter { + publish(roots: webTypes.RootSpan[]): Promise { return Promise.resolve(); } - onStartSpan(root: coreTypes.RootSpan) {} + onStartSpan(root: webTypes.RootSpan) {} - onEndSpan(root: coreTypes.RootSpan) {} + onEndSpan(root: webTypes.RootSpan) {} } diff --git a/packages/opencensus-web-core/src/index.ts b/packages/opencensus-web-core/src/index.ts index 789d1b4a..f978bd4f 100644 --- a/packages/opencensus-web-core/src/index.ts +++ b/packages/opencensus-web-core/src/index.ts @@ -19,11 +19,10 @@ export {RootSpan} from './trace/model/root-span'; export {Span} from './trace/model/span'; export {Tracer} from './trace/model/tracer'; export {Tracing} from './trace/model/tracing'; -export * from './trace/model/enums'; export * from './trace/model/attribute-keys'; -// Re-export types this uses from @opencensus/core. -export {Annotation, Attributes, BufferConfig, Config, Exporter, ExporterConfig, Link, Logger, MessageEvent, Propagation, SpanContext, SpanEventListener, Status, TracerConfig, TraceState} from '@opencensus/core'; +// Re-export types this uses from @opencensus/web-types. +export {Annotation, Attributes, BufferConfig, CanonicalCode, Config, Exporter, ExporterConfig, Link, LinkType, Logger, MessageEvent, MessageEventType, Propagation, SpanContext, SpanEventListener, SpanKind, Status, TracerConfig, TraceState} from '@opencensus/web-types'; export * from './common/time-util'; export * from './common/url-util'; diff --git a/packages/opencensus-web-core/src/trace/model/enums.ts b/packages/opencensus-web-core/src/trace/model/enums.ts deleted file mode 100644 index 6cb5eada..00000000 --- a/packages/opencensus-web-core/src/trace/model/enums.ts +++ /dev/null @@ -1,206 +0,0 @@ -/** - * Copyright 2019, OpenCensus Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @fileoverview Trace related enums. These can't be directly imported from - * `@opencensus/core`, because that will create a runtime dependency on it. - * That is because TypeScript enums have a runtime existence, unlike interfaces. - * A runtime dependency on `@opencensus/core` is not good for OpenCensus Web, - * because then it would need to depend on other Node libraries. - * These enums are based on @opencensus/core and the Trace protos. See: - * https://github.com/census-instrumentation/opencensus-proto/blob/master/src/opencensus/proto/trace/v1/trace.proto - * https://github.com/census-instrumentation/opencensus-node/blob/master/packages/opencensus-core/src/trace/model/types.ts#L44 - */ - -/** - * Type of link. The relationship of the current span relative to the linked - * span. - */ -export enum LinkType { - /** - * The relationship of the two spans is unknown, or known but other - * than parent-child. - */ - UNSPECIFIED = 0, - /** The linked span is a child of the current span. */ - CHILD_LINKED_SPAN = 1, - /** The linked span is a parent of the current span. */ - PARENT_LINKED_SPAN = 2, -} - -/** - * Type of span. Can be used to specify additional relationships between spans - * in addition to a parent/child relationship. - */ -export enum SpanKind { - /** Unspecified */ - UNSPECIFIED = 0, - /** - * Indicates that the span covers server-side handling of an RPC or other - * remote network request. - */ - SERVER = 1, - /** - * Indicates that the span covers the client-side wrapper around an RPC or - * other remote request. - */ - CLIENT = 2, -} - -/** An enumeration of canonical status codes. */ -export enum CanonicalCode { - /** - * Not an error; returned on success - */ - OK = 0, - /** - * The operation was cancelled (typically by the caller). - */ - CANCELLED = 1, - /** - * Unknown error. An example of where this error may be returned is - * if a status value received from another address space belongs to - * an error-space that is not known in this address space. Also - * errors raised by APIs that do not return enough error information - * may be converted to this error. - */ - UNKNOWN = 2, - /** - * Client specified an invalid argument. Note that this differs - * from FAILED_PRECONDITION. INVALID_ARGUMENT indicates arguments - * that are problematic regardless of the state of the system - * (e.g., a malformed file name). - */ - INVALID_ARGUMENT = 3, - /** - * Deadline expired before operation could complete. For operations - * that change the state of the system, this error may be returned - * even if the operation has completed successfully. For example, a - * successful response from a server could have been delayed long - * enough for the deadline to expire. - */ - DEADLINE_EXCEEDED = 4, - /** - * Some requested entity (e.g., file or directory) was not found. - */ - NOT_FOUND = 5, - /** - * Some entity that we attempted to create (e.g., file or directory) - * already exists. - */ - ALREADY_EXISTS = 6, - /** - * The caller does not have permission to execute the specified - * operation. PERMISSION_DENIED must not be used for rejections - * caused by exhausting some resource (use RESOURCE_EXHAUSTED - * instead for those errors). PERMISSION_DENIED must not be - * used if the caller can not be identified (use UNAUTHENTICATED - * instead for those errors). - */ - PERMISSION_DENIED = 7, - /** - * Some resource has been exhausted, perhaps a per-user quota, or - * perhaps the entire file system is out of space. - */ - RESOURCE_EXHAUSTED = 8, - /** - * Operation was rejected because the system is not in a state - * required for the operation's execution. For example, directory - * to be deleted may be non-empty, an rmdir operation is applied to - * a non-directory, etc. - * - * A litmus test that may help a service implementor in deciding - * between FAILED_PRECONDITION, ABORTED, and UNAVAILABLE: - * - * - Use UNAVAILABLE if the client can retry just the failing call. - * - Use ABORTED if the client should retry at a higher-level - * (e.g., restarting a read-modify-write sequence). - * - Use FAILED_PRECONDITION if the client should not retry until - * the system state has been explicitly fixed. E.g., if an "rmdir" - * fails because the directory is non-empty, FAILED_PRECONDITION - * should be returned since the client should not retry unless - * they have first fixed up the directory by deleting files from it. - * - Use FAILED_PRECONDITION if the client performs conditional - * REST Get/Update/Delete on a resource and the resource on the - * server does not match the condition. E.g., conflicting - * read-modify-write on the same resource. - */ - FAILED_PRECONDITION = 9, - /** - * The operation was aborted, typically due to a concurrency issue - * like sequencer check failures, transaction aborts, etc. - * - * See litmus test above for deciding between FAILED_PRECONDITION, - * ABORTED, and UNAVAILABLE. - */ - ABORTED = 10, - /** - * Operation was attempted past the valid range. E.g., seeking or - * reading past end of file. - * - * Unlike INVALID_ARGUMENT, this error indicates a problem that may - * be fixed if the system state changes. For example, a 32-bit file - * system will generate INVALID_ARGUMENT if asked to read at an - * offset that is not in the range [0,2^32-1], but it will generate - * OUT_OF_RANGE if asked to read from an offset past the current - * file size. - * - * There is a fair bit of overlap between FAILED_PRECONDITION and - * OUT_OF_RANGE. We recommend using OUT_OF_RANGE (the more specific - * error) when it applies so that callers who are iterating through - * a space can easily look for an OUT_OF_RANGE error to detect when - * they are done. - */ - OUT_OF_RANGE = 11, - /** - * Operation is not implemented or not supported/enabled in this service. - */ - UNIMPLEMENTED = 12, - /** - * Internal errors. Means some invariants expected by underlying - * system has been broken. If you see one of these errors, - * something is very broken. - */ - INTERNAL = 13, - /** - * The service is currently unavailable. This is a most likely a - * transient condition and may be corrected by retrying with - * a backoff. - * - * See litmus test above for deciding between FAILED_PRECONDITION, - * ABORTED, and UNAVAILABLE. - */ - UNAVAILABLE = 14, - /** - * Unrecoverable data loss or corruption. - */ - DATA_LOSS = 15, - /** - * The request does not have valid authentication credentials for the - * operation. - */ - UNAUTHENTICATED = 16, -} - -/** An event describing a message sent/received between Spans. */ -export enum MessageEventType { - /** Unknown event type. */ - UNSPECIFIED = 0, - /** Indicates a sent message. */ - SENT = 1, - /** Indicates a received message. */ - RECEIVED = 2, -} diff --git a/packages/opencensus-web-core/src/trace/model/root-span.ts b/packages/opencensus-web-core/src/trace/model/root-span.ts index 2d18faf2..b23b7d79 100644 --- a/packages/opencensus-web-core/src/trace/model/root-span.ts +++ b/packages/opencensus-web-core/src/trace/model/root-span.ts @@ -14,26 +14,25 @@ * limitations under the License. */ -import * as coreTypes from '@opencensus/core'; +import * as webTypes from '@opencensus/web-types'; import {randomTraceId} from '../../common/id-util'; -import {SpanKind} from './enums'; import {Span} from './span'; /** Simple mock root span for use in use tests. */ -export class RootSpan extends Span implements coreTypes.RootSpan { +export class RootSpan extends Span implements webTypes.RootSpan { /** A list of child spans. */ spans: Span[] = []; constructor( /** Trace associated with this root span. */ - private readonly tracer: coreTypes.Tracer, + private readonly tracer: webTypes.Tracer, /** A trace options object to build the root span. */ - context?: coreTypes.TraceOptions) { + context?: webTypes.TraceOptions) { super(); if (context) { this.name = context.name; - this.kind = context.kind || SpanKind.UNSPECIFIED; + this.kind = context.kind || webTypes.SpanKind.UNSPECIFIED; const spanContext = context.spanContext; if (spanContext) { @@ -52,8 +51,8 @@ export class RootSpan extends Span implements coreTypes.RootSpan { * @param kind Span kind if not using options object. */ startChildSpan( - nameOrOptions?: string|{name: string, kind: SpanKind}, - kind?: SpanKind): Span { + nameOrOptions?: string|{name: string, kind: webTypes.SpanKind}, + kind?: webTypes.SpanKind): Span { const child = new Span(); child.traceId = this.traceId; child.traceState = this.traceState; diff --git a/packages/opencensus-web-core/src/trace/model/span.ts b/packages/opencensus-web-core/src/trace/model/span.ts index 22aecbfd..618339a6 100644 --- a/packages/opencensus-web-core/src/trace/model/span.ts +++ b/packages/opencensus-web-core/src/trace/model/span.ts @@ -14,18 +14,16 @@ * limitations under the License. */ -import * as coreTypes from '@opencensus/core'; +import * as webTypes from '@opencensus/web-types'; import {randomSpanId} from '../../common/id-util'; import {getDateForPerfTime} from '../../common/time-util'; -import {CanonicalCode, LinkType, MessageEventType, SpanKind} from './enums'; - /** Default span name if none is specified. */ const DEFAULT_SPAN_NAME = 'unnamed'; /** A span represents a single operation within a trace. */ -export class Span implements coreTypes.Span { +export class Span implements webTypes.Span { constructor( /** The ID of this span. Defaults to a random span ID. */ public id = randomSpanId()) {} @@ -45,35 +43,35 @@ export class Span implements coreTypes.Span { traceId = ''; /** Trace state associated with span */ - traceState: coreTypes.TraceState = ''; + traceState: webTypes.TraceState = ''; /** The display name of the span. */ name = DEFAULT_SPAN_NAME; /** Kind of span. */ - kind: SpanKind = SpanKind.UNSPECIFIED; + kind: webTypes.SpanKind = webTypes.SpanKind.UNSPECIFIED; /** An object to log information to. Logs to the JS console by default. */ - logger: coreTypes.Logger = console; + logger: webTypes.Logger = console; /** * Status associated with this span. Defaults to OK status. Note that the * `code` is not an HTTP status, but is a specific trace status code. See: * https://github.com/census-instrumentation/opencensus-specs/blob/master/trace/HTTP.md#mapping-from-http-status-codes-to-trace-status-codes */ - status: coreTypes.Status = {code: CanonicalCode.OK}; + status: webTypes.Status = {code: webTypes.CanonicalCode.OK}; /** A set of attributes, each in the format [KEY]:[VALUE] */ - attributes: coreTypes.Attributes = {}; + attributes: webTypes.Attributes = {}; /** Text annotations with a set of attributes. */ - annotations: coreTypes.Annotation[] = []; + annotations: webTypes.Annotation[] = []; /** Event describing messages sent/received between Spans. */ - messageEvents: coreTypes.MessageEvent[] = []; + messageEvents: webTypes.MessageEvent[] = []; /** Pointers from the current span to another span */ - links: coreTypes.Link[] = []; + links: webTypes.Link[] = []; /** Start time of the span as measured by the browser performance clock. */ startPerfTime = 0; @@ -95,7 +93,7 @@ export class Span implements coreTypes.Span { /** * Trace parameter configuration. Not used by OpenCensus Web, but - * kept for interface compatibility with @opencensus/core. + * kept for interface compatibility with @opencensus/web-types. */ readonly activeTraceParams = {}; @@ -107,7 +105,7 @@ export class Span implements coreTypes.Span { /** * Indicates if span was started. This is always true for opencensus-web for * code simplicity purposes but kept for interface compatibility with - * @opencensus/core. + * @opencensus/web-types. */ readonly started = true; @@ -130,7 +128,7 @@ export class Span implements coreTypes.Span { } /** Gives the TraceContext of the span. */ - get spanContext(): coreTypes.SpanContext { + get spanContext(): webTypes.SpanContext { return { traceId: this.traceId, spanId: this.id, @@ -156,7 +154,7 @@ export class Span implements coreTypes.Span { * Defaults to `performance.now()`. */ addAnnotation( - description: string, attributes: coreTypes.Attributes = {}, + description: string, attributes: webTypes.Attributes = {}, timestamp: number = performance.now()) { this.annotations.push({description, attributes, timestamp}); } @@ -169,8 +167,8 @@ export class Span implements coreTypes.Span { * @param attributes A set of attributes on the link. */ addLink( - traceId: string, spanId: string, type: LinkType, - attributes: coreTypes.Attributes = {}) { + traceId: string, spanId: string, type: webTypes.LinkType, + attributes: webTypes.Attributes = {}) { this.links.push({traceId, spanId, type, attributes}); } /** @@ -181,7 +179,7 @@ export class Span implements coreTypes.Span { * Defaults to `performance.now()`. */ addMessageEvent( - type: MessageEventType, id: string, + type: webTypes.MessageEventType, id: string, timestamp: number = performance.now()) { this.messageEvents.push({type, id, timestamp}); } @@ -191,7 +189,7 @@ export class Span implements coreTypes.Span { * @param code The canonical status code. * @param message optional A developer-facing error message. */ - setStatus(code: CanonicalCode, message?: string) { + setStatus(code: webTypes.CanonicalCode, message?: string) { this.status = {code, message}; } diff --git a/packages/opencensus-web-core/src/trace/model/tracer.ts b/packages/opencensus-web-core/src/trace/model/tracer.ts index e6a08856..ff596128 100644 --- a/packages/opencensus-web-core/src/trace/model/tracer.ts +++ b/packages/opencensus-web-core/src/trace/model/tracer.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import * as coreTypes from '@opencensus/core'; +import * as webTypes from '@opencensus/web-types'; import {NoHeadersPropagation} from '../propagation/no_headers_propagation'; import {AlwaysSampler} from '../sampler/sampler'; import {RootSpan} from './root-span'; @@ -23,7 +23,7 @@ import {Span} from './span'; const NO_HEADERS_PROPAGATION = new NoHeadersPropagation(); /** Tracer manages the current root span and trace header propagation. */ -export class Tracer implements coreTypes.Tracer { +export class Tracer implements webTypes.Tracer { /** Get and set the currentRootSpan of the tracer. */ currentRootSpan: RootSpan = new RootSpan(this); @@ -35,13 +35,13 @@ export class Tracer implements coreTypes.Tracer { sampler = new AlwaysSampler(); /** An object to log information to. Logs to the JS console by default. */ - logger: coreTypes.Logger = console; + logger: webTypes.Logger = console; /** Trace context header propagation behavior. */ propagation = NO_HEADERS_PROPAGATION; /** Event listeners for spans managed by the tracer. */ - eventListeners: coreTypes.SpanEventListener[] = []; + eventListeners: webTypes.SpanEventListener[] = []; /** * Active status from tracer instance - this is always true for @@ -51,7 +51,7 @@ export class Tracer implements coreTypes.Tracer { /** * Trace parameter configuration. Not used by OpenCensus Web, but - * kept for interface compatibility with @opencensus/core. + * kept for interface compatibility with @opencensus/web-types. */ readonly activeTraceParams = {}; @@ -60,7 +60,7 @@ export class Tracer implements coreTypes.Tracer { * `propagation` based on the given config. The `samplingRate` property of * `config` is currently ignored. */ - start(config: coreTypes.TracerConfig): Tracer { + start(config: webTypes.TracerConfig): Tracer { this.logger = config.logger || console; this.propagation = config.propagation || NO_HEADERS_PROPAGATION; return this; @@ -80,7 +80,7 @@ export class Tracer implements coreTypes.Tracer { * @param fn Callback function * @returns The callback return */ - startRootSpan(options: coreTypes.TraceOptions, fn: (root: RootSpan) => T): + startRootSpan(options: webTypes.TraceOptions, fn: (root: RootSpan) => T): T { this.currentRootSpan = new RootSpan(this, options); this.currentRootSpan.start(); @@ -88,24 +88,24 @@ export class Tracer implements coreTypes.Tracer { } /** Notifies listeners of the span start. */ - onStartSpan(root: coreTypes.RootSpan) { + onStartSpan(root: webTypes.RootSpan) { for (const listener of this.eventListeners) { listener.onStartSpan(root); } } /** Notifies listeners of the span end. */ - onEndSpan(root: coreTypes.RootSpan) { + onEndSpan(root: webTypes.RootSpan) { for (const listener of this.eventListeners) { listener.onEndSpan(root); } } - registerSpanEventListener(listener: coreTypes.SpanEventListener) { + registerSpanEventListener(listener: webTypes.SpanEventListener) { this.eventListeners.push(listener); } - unregisterSpanEventListener(listener: coreTypes.SpanEventListener) { + unregisterSpanEventListener(listener: webTypes.SpanEventListener) { this.eventListeners = this.eventListeners.filter((l) => l !== listener); } @@ -119,7 +119,7 @@ export class Tracer implements coreTypes.Tracer { * @param kind Span kind * @returns The new Span instance started */ - startChildSpan(name?: string, kind?: coreTypes.SpanKind): Span { + startChildSpan(name?: string, kind?: webTypes.SpanKind): Span { return this.currentRootSpan.startChildSpan(name, kind); } @@ -128,10 +128,10 @@ export class Tracer implements coreTypes.Tracer { * currently only supports a single trace context at a time, this just returns * the function. */ - wrap(fn: coreTypes.Func): coreTypes.Func { + wrap(fn: webTypes.Func): webTypes.Func { return fn; } /** Binds trace context to NodeJS event emitter. No-op for opencensus-web. */ - wrapEmitter(emitter: NodeJS.EventEmitter) {} + wrapEmitter(emitter: webTypes.NodeJsEventEmitter) {} } diff --git a/packages/opencensus-web-core/src/trace/model/tracing.ts b/packages/opencensus-web-core/src/trace/model/tracing.ts index 71514fb0..807d4909 100644 --- a/packages/opencensus-web-core/src/trace/model/tracing.ts +++ b/packages/opencensus-web-core/src/trace/model/tracing.ts @@ -14,14 +14,14 @@ * limitations under the License. */ -import * as coreTypes from '@opencensus/core'; +import * as webTypes from '@opencensus/web-types'; import {NoopExporter} from '../../exporters/noop_exporter'; import {Tracer} from './tracer'; export const NOOP_EXPORTER = new NoopExporter(); /** Main interface for tracing. */ -export class Tracing implements coreTypes.Tracing { +export class Tracing implements webTypes.Tracing { /** Object responsible for managing a trace. */ readonly tracer = new Tracer(); @@ -32,7 +32,7 @@ export class Tracing implements coreTypes.Tracing { active = true; /** Sets tracer and exporter config. */ - start(config?: coreTypes.Config): coreTypes.Tracing { + start(config?: webTypes.Config): webTypes.Tracing { this.tracer.start(config || {}); if (config) { if (config.exporter) this.registerExporter(config.exporter); @@ -48,7 +48,7 @@ export class Tracing implements coreTypes.Tracing { * @param exporter The exporter to send the traces to. * @return The tracing object. */ - registerExporter(exporter: coreTypes.Exporter): coreTypes.Tracing { + registerExporter(exporter: webTypes.Exporter): webTypes.Tracing { this.tracer.unregisterSpanEventListener(this.exporter); this.exporter = exporter; this.tracer.registerSpanEventListener(exporter); @@ -59,7 +59,7 @@ export class Tracing implements coreTypes.Tracing { * Sets the exporter back to the no-op exporter. * @return The tracing object. */ - unregisterExporter(exporter: coreTypes.Exporter): coreTypes.Tracing { + unregisterExporter(exporter: webTypes.Exporter): webTypes.Tracing { this.registerExporter(NOOP_EXPORTER); return this; } diff --git a/packages/opencensus-web-core/src/trace/propagation/no_headers_propagation.ts b/packages/opencensus-web-core/src/trace/propagation/no_headers_propagation.ts index a084bd75..d1bf2f6c 100644 --- a/packages/opencensus-web-core/src/trace/propagation/no_headers_propagation.ts +++ b/packages/opencensus-web-core/src/trace/propagation/no_headers_propagation.ts @@ -14,18 +14,18 @@ * limitations under the License. */ -import * as coreTypes from '@opencensus/core'; +import * as webTypes from '@opencensus/web-types'; import {randomSpanId, randomTraceId} from '../../common/id-util'; /** Propagation implementation that does not set or get headers. */ -export class NoHeadersPropagation implements coreTypes.Propagation { - extract(getter: coreTypes.HeaderGetter): coreTypes.SpanContext|null { +export class NoHeadersPropagation implements webTypes.Propagation { + extract(getter: webTypes.HeaderGetter): webTypes.SpanContext|null { return null; } - inject(setter: coreTypes.HeaderSetter, spanContext: coreTypes.SpanContext) {} + inject(setter: webTypes.HeaderSetter, spanContext: webTypes.SpanContext) {} - generate(): coreTypes.SpanContext { + generate(): webTypes.SpanContext { return {traceId: randomTraceId(), spanId: randomSpanId()}; } } diff --git a/packages/opencensus-web-core/src/trace/sampler/sampler.ts b/packages/opencensus-web-core/src/trace/sampler/sampler.ts index c9ffdb90..03e253ef 100644 --- a/packages/opencensus-web-core/src/trace/sampler/sampler.ts +++ b/packages/opencensus-web-core/src/trace/sampler/sampler.ts @@ -14,10 +14,10 @@ * limitations under the License. */ -import * as coreTypes from '@opencensus/core'; +import * as webTypes from '@opencensus/web-types'; /** Sampler that samples every trace. */ -export class AlwaysSampler implements coreTypes.Sampler { +export class AlwaysSampler implements webTypes.Sampler { readonly description = 'always'; shouldSample(traceId: string): boolean { diff --git a/packages/opencensus-web-core/test/test-root-span.ts b/packages/opencensus-web-core/test/test-root-span.ts index bd9149f7..11af916b 100644 --- a/packages/opencensus-web-core/test/test-root-span.ts +++ b/packages/opencensus-web-core/test/test-root-span.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import {SpanKind} from '../src/trace/model/enums'; +import {SpanKind} from '@opencensus/web-types'; import {RootSpan} from '../src/trace/model/root-span'; import {Tracer} from '../src/trace/model/tracer'; diff --git a/packages/opencensus-web-core/test/test-span.ts b/packages/opencensus-web-core/test/test-span.ts index abe9ae22..f6bb5185 100644 --- a/packages/opencensus-web-core/test/test-span.ts +++ b/packages/opencensus-web-core/test/test-span.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import {LinkType, MessageEventType} from '../src/trace/model/enums'; +import {LinkType, MessageEventType} from '@opencensus/web-types'; import {Span} from '../src/trace/model/span'; import {mockGetterOrValue, restoreGetterOrValue} from './util'; diff --git a/packages/opencensus-web-core/test/test-tracer.ts b/packages/opencensus-web-core/test/test-tracer.ts index 6dfb6215..c6e482a3 100644 --- a/packages/opencensus-web-core/test/test-tracer.ts +++ b/packages/opencensus-web-core/test/test-tracer.ts @@ -14,18 +14,17 @@ * limitations under the License. */ -import * as coreTypes from '@opencensus/core'; -import {SpanKind} from '../src/trace/model/enums'; +import * as webTypes from '@opencensus/web-types'; import {RootSpan} from '../src/trace/model/root-span'; import {Tracer} from '../src/trace/model/tracer'; describe('Tracer', () => { let tracer: Tracer; - let listener: coreTypes.SpanEventListener; + let listener: webTypes.SpanEventListener; beforeEach(() => { tracer = new Tracer(); - listener = jasmine.createSpyObj( + listener = jasmine.createSpyObj( 'listener', ['onStartSpan', 'onEndSpan']); tracer.eventListeners = [listener]; }); @@ -33,8 +32,8 @@ describe('Tracer', () => { describe('start', () => { it('sets logger and propagation based on config', () => { const mockLogger = - jasmine.createSpyObj('logger', ['info']); - const mockPropagation = jasmine.createSpyObj( + jasmine.createSpyObj('logger', ['info']); + const mockPropagation = jasmine.createSpyObj( 'propagation', ['generate']); const result = @@ -80,7 +79,7 @@ describe('Tracer', () => { describe('registerSpanEventListener', () => { it('adds to listeners', () => { - const newListener = jasmine.createSpyObj( + const newListener = jasmine.createSpyObj( 'newListener', ['onStartSpan', 'onEndSpan']); tracer.registerSpanEventListener(newListener); expect(tracer.eventListeners).toEqual([listener, newListener]); @@ -105,9 +104,9 @@ describe('Tracer', () => { describe('startChildSpan', () => { it('starts a child span of the current root span', () => { spyOn(tracer.currentRootSpan, 'startChildSpan'); - tracer.startChildSpan('child1', SpanKind.CLIENT); + tracer.startChildSpan('child1', webTypes.SpanKind.CLIENT); expect(tracer.currentRootSpan.startChildSpan) - .toHaveBeenCalledWith('child1', SpanKind.CLIENT); + .toHaveBeenCalledWith('child1', webTypes.SpanKind.CLIENT); }); }); diff --git a/packages/opencensus-web-core/test/test-tracing.ts b/packages/opencensus-web-core/test/test-tracing.ts index 03996e08..2a9434cb 100644 --- a/packages/opencensus-web-core/test/test-tracing.ts +++ b/packages/opencensus-web-core/test/test-tracing.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import * as coreTypes from '@opencensus/core'; +import * as webTypes from '@opencensus/web-types'; import {Tracer} from '../src/trace/model/tracer'; import {NOOP_EXPORTER, Tracing} from '../src/trace/model/tracing'; @@ -22,8 +22,8 @@ import {NOOP_EXPORTER, Tracing} from '../src/trace/model/tracing'; describe('Tracing', () => { let tracing: Tracing; let tracer: Tracer; - let oldExporter: coreTypes.Exporter; - let newExporter: coreTypes.Exporter; + let oldExporter: webTypes.Exporter; + let newExporter: webTypes.Exporter; beforeEach(() => { tracing = new Tracing(); @@ -33,7 +33,7 @@ describe('Tracing', () => { spyOn(tracer, 'start'); oldExporter = tracing.exporter; newExporter = - jasmine.createSpyObj('mockExporter', ['publish']); + jasmine.createSpyObj('mockExporter', ['publish']); }); describe('default exporter', () => {