@contrail/flexplm 1.8.1 → 2.0.0-alpha.df05bb5

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.
Files changed (34) hide show
  1. package/lib/__tests__/telemetry-test-utils.d.ts +8 -0
  2. package/lib/__tests__/telemetry-test-utils.js +30 -0
  3. package/lib/cli/commands/compile.js +17 -7
  4. package/lib/cli/commands/compile.spec.js +17 -7
  5. package/lib/cli/commands/create.js +17 -7
  6. package/lib/cli/commands/create.spec.js +17 -7
  7. package/lib/cli/commands/upload.js +17 -7
  8. package/lib/cli/index.js +2 -2
  9. package/lib/entity-processor/base-entity-processor.d.ts +29 -0
  10. package/lib/entity-processor/base-entity-processor.js +238 -143
  11. package/lib/entity-processor/base-entity-processor.spec.js +210 -0
  12. package/lib/index.d.ts +1 -0
  13. package/lib/index.js +1 -0
  14. package/lib/publish/base-process-publish-assortment-callback.js +30 -0
  15. package/lib/publish/base-process-publish-assortment-callback.spec.d.ts +1 -0
  16. package/lib/publish/base-process-publish-assortment-callback.spec.js +62 -0
  17. package/lib/publish/base-process-publish-assortment.d.ts +24 -0
  18. package/lib/publish/base-process-publish-assortment.js +234 -132
  19. package/lib/publish/base-process-publish-assortment.spec.js +188 -0
  20. package/lib/util/error-response-object.js +2 -0
  21. package/lib/util/event-short-message-status.js +1 -1
  22. package/lib/util/flexplm-connect.d.ts +4 -0
  23. package/lib/util/flexplm-connect.js +210 -145
  24. package/lib/util/flexplm-connect.telemetry.spec.d.ts +1 -0
  25. package/lib/util/flexplm-connect.telemetry.spec.js +212 -0
  26. package/lib/util/logger-config.js +1 -2
  27. package/lib/util/telemetry-attributes.d.ts +68 -0
  28. package/lib/util/telemetry-attributes.js +73 -0
  29. package/lib/util/telemetry-utils.d.ts +3 -0
  30. package/lib/util/telemetry-utils.js +10 -0
  31. package/lib/util/thumbnail-util.d.ts +2 -1
  32. package/lib/util/thumbnail-util.js +35 -7
  33. package/lib/util/thumbnail-util.spec.js +42 -0
  34. package/package.json +10 -3
@@ -0,0 +1,8 @@
1
+ import { InMemorySpanExporter, ReadableSpan } from '@opentelemetry/sdk-trace-base';
2
+ /** Registers an in-memory tracer provider, so spans created by traceSection/@Traced can be asserted on.
3
+ * Call once per spec file (in beforeAll); jest gives each spec file its own globals.
4
+ */
5
+ export declare const registerInMemoryTracing: () => InMemorySpanExporter;
6
+ export declare const findSpans: (exporter: InMemorySpanExporter, name: string) => ReadableSpan[];
7
+ export declare const findSpan: (exporter: InMemorySpanExporter, name: string) => ReadableSpan;
8
+ export declare const isChildOf: (child: ReadableSpan, parent: ReadableSpan) => boolean;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isChildOf = exports.findSpan = exports.findSpans = exports.registerInMemoryTracing = void 0;
4
+ const api_1 = require("@opentelemetry/api");
5
+ const context_async_hooks_1 = require("@opentelemetry/context-async-hooks");
6
+ const sdk_trace_base_1 = require("@opentelemetry/sdk-trace-base");
7
+ /** Registers an in-memory tracer provider, so spans created by traceSection/@Traced can be asserted on.
8
+ * Call once per spec file (in beforeAll); jest gives each spec file its own globals.
9
+ */
10
+ const registerInMemoryTracing = () => {
11
+ const exporter = new sdk_trace_base_1.InMemorySpanExporter();
12
+ const provider = new sdk_trace_base_1.BasicTracerProvider({ spanProcessors: [new sdk_trace_base_1.SimpleSpanProcessor(exporter)] });
13
+ // The context manager makes spans opened across awaits nest under their parent.
14
+ api_1.context.setGlobalContextManager(new context_async_hooks_1.AsyncLocalStorageContextManager().enable());
15
+ api_1.trace.setGlobalTracerProvider(provider);
16
+ return exporter;
17
+ };
18
+ exports.registerInMemoryTracing = registerInMemoryTracing;
19
+ const findSpans = (exporter, name) => exporter.getFinishedSpans().filter(span => span.name === name);
20
+ exports.findSpans = findSpans;
21
+ const findSpan = (exporter, name) => {
22
+ const spans = (0, exports.findSpans)(exporter, name);
23
+ if (spans.length !== 1)
24
+ throw new Error(`Expected one '${name}' span, found ${spans.length}`);
25
+ return spans[0];
26
+ };
27
+ exports.findSpan = findSpan;
28
+ const isChildOf = (child, parent) => child.parentSpanContext?.spanId === parent.spanContext().spanId
29
+ && child.spanContext().traceId === parent.spanContext().traceId;
30
+ exports.isChildOf = isChildOf;
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
36
  exports.CompileCommand = void 0;
27
37
  const fs = __importStar(require("fs"));
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
36
  const fs = __importStar(require("fs"));
27
37
  const os = __importStar(require("os"));
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
36
  exports.CreateCommand = void 0;
27
37
  const fs = __importStar(require("fs"));
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
36
  const fs = __importStar(require("fs"));
27
37
  const os = __importStar(require("os"));
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
25
35
  Object.defineProperty(exports, "__esModule", { value: true });
26
36
  exports.UploadCommand = void 0;
27
37
  const child_process_1 = require("child_process");
package/lib/cli/index.js CHANGED
@@ -1,7 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.main = exports.Cli = void 0;
4
+ exports.Cli = void 0;
5
+ exports.main = main;
5
6
  const create_1 = require("./commands/create");
6
7
  const compile_1 = require("./commands/compile");
7
8
  const upload_1 = require("./commands/upload");
@@ -62,7 +63,6 @@ exports.Cli = Cli;
62
63
  function main() {
63
64
  return new Cli().main();
64
65
  }
65
- exports.main = main;
66
66
  if (require.main === module) {
67
67
  main().catch((err) => {
68
68
  console.error(err && err.message ? err.message : err);
@@ -2,10 +2,28 @@ import { FCConfig, EntityPayloadType } from '../interfaces/interfaces';
2
2
  import { DataConverter } from '../util/data-converter';
3
3
  import { TypeUtils } from '../util/type-utils';
4
4
  import { MapFileUtil } from '@contrail/transform-data';
5
+ import { EventShortMessageStatus } from '../util/event-short-message-status';
5
6
  export declare class IncomingEntityResponse {
6
7
  entity: any;
7
8
  earlyReturn: any;
8
9
  }
10
+ export interface InboundStatus {
11
+ status: EventShortMessageStatus;
12
+ statusMessage: string;
13
+ objectClass: string;
14
+ entityId?: string;
15
+ federatedId?: string;
16
+ }
17
+ export interface OutboundStatus {
18
+ status: EventShortMessageStatus;
19
+ entityId: string;
20
+ objectClass: string;
21
+ httpStatus?: number;
22
+ updatedFromResponse: boolean;
23
+ /** FlexPLM's per-item status from the response payload, when it returned one. */
24
+ itemStatus?: string;
25
+ error?: unknown;
26
+ }
9
27
  export declare abstract class BaseEntityProcessor {
10
28
  protected config: FCConfig;
11
29
  protected dc: DataConverter;
@@ -18,7 +36,18 @@ export declare abstract class BaseEntityProcessor {
18
36
  constructor(config: FCConfig, dc: DataConverter, mapFileUtil: MapFileUtil, baseType: string);
19
37
  inbound(event: EntityPayloadType): Promise<any>;
20
38
  handleIncomingUpsert(event: EntityPayloadType): Promise<any>;
39
+ /** @deprecated Use {@link recordInboundStatus}, which logs structured fields and sets span attributes. */
21
40
  getInboundStatusMessage(statusObject: any): string;
41
+ /** Records the result of one inbound event: attributes on the active span plus one structured log.
42
+ * A Failure here is a handled early return, so it is a warning and the span stays OK.
43
+ */
44
+ protected recordInboundStatus(statusObject: InboundStatus): void;
45
+ /** Records the result of sending one entity to FlexPLM: attributes on the active span plus one structured log.
46
+ * On failure the caller still rethrows; the log keeps the entity context that the action's error log lacks.
47
+ * A Success whose response item status is not 'OK' is recorded as a Failure: FlexPLM accepted the request
48
+ * but rejected the item. Nothing is thrown for it, so it is a warning and the span stays OK.
49
+ */
50
+ protected recordOutboundStatus(statusObject: OutboundStatus): void;
22
51
  /** Looks up an identity record from the identity service based on the passed in criteria.
23
52
  * If no identity record is found, returns undefined. If multiple are found, throws an error.
24
53
  *