@campfire-interactive/bom-client 0.1.1 → 0.2.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.
package/dist/client.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { CostBreakdownResource } from './costBreakdown';
2
2
  import { RoutingResource } from './routing';
3
+ import { TreeResource } from './tree';
3
4
  import type { BomClientConfig } from './types';
4
5
  /**
5
6
  * Client for the BOM read contract — the costed and routed view of a part,
@@ -11,6 +12,7 @@ import type { BomClientConfig } from './types';
11
12
  * });
12
13
  * const cost = await bom.costBreakdown.get({ partNumber, programId });
13
14
  * const routing = await bom.routing.get({ partNumber, programId });
15
+ * const tree = await bom.tree.get({ partNumber, programId, maxDepth: 3 });
14
16
  *
15
17
  * The contract's one rule: **a consumer addresses parts, never BOMs.** It has
16
18
  * no bomId, no version, and no notion of the EBOM/CBOM/MBOM lenses; bom
@@ -24,6 +26,7 @@ import type { BomClientConfig } from './types';
24
26
  export declare class BomClient {
25
27
  readonly costBreakdown: CostBreakdownResource;
26
28
  readonly routing: RoutingResource;
29
+ readonly tree: TreeResource;
27
30
  constructor(config: BomClientConfig);
28
31
  }
29
32
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,SAAS;IACpB,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;gBAEtB,MAAM,EAAE,eAAe;CAKpC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,SAAS;IACpB,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;gBAEhB,MAAM,EAAE,eAAe;CAMpC"}
package/dist/client.js CHANGED
@@ -4,6 +4,7 @@ exports.BomClient = void 0;
4
4
  const http_1 = require("./http");
5
5
  const costBreakdown_1 = require("./costBreakdown");
6
6
  const routing_1 = require("./routing");
7
+ const tree_1 = require("./tree");
7
8
  /**
8
9
  * Client for the BOM read contract — the costed and routed view of a part,
9
10
  * resolved from a part reference the caller already has.
@@ -14,6 +15,7 @@ const routing_1 = require("./routing");
14
15
  * });
15
16
  * const cost = await bom.costBreakdown.get({ partNumber, programId });
16
17
  * const routing = await bom.routing.get({ partNumber, programId });
18
+ * const tree = await bom.tree.get({ partNumber, programId, maxDepth: 3 });
17
19
  *
18
20
  * The contract's one rule: **a consumer addresses parts, never BOMs.** It has
19
21
  * no bomId, no version, and no notion of the EBOM/CBOM/MBOM lenses; bom
@@ -27,10 +29,12 @@ const routing_1 = require("./routing");
27
29
  class BomClient {
28
30
  costBreakdown;
29
31
  routing;
32
+ tree;
30
33
  constructor(config) {
31
34
  const http = new http_1.HttpTransport(config);
32
35
  this.costBreakdown = new costBreakdown_1.CostBreakdownResource(http);
33
36
  this.routing = new routing_1.RoutingResource(http);
37
+ this.tree = new tree_1.TreeResource(http);
34
38
  }
35
39
  }
36
40
  exports.BomClient = BomClient;
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;AAAA,iCAAuC;AACvC,mDAAwD;AACxD,uCAA4C;AAG5C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAa,SAAS;IACX,aAAa,CAAwB;IACrC,OAAO,CAAkB;IAElC,YAAY,MAAuB;QACjC,MAAM,IAAI,GAAG,IAAI,oBAAa,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,IAAI,qCAAqB,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,IAAI,yBAAe,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF;AATD,8BASC"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;AAAA,iCAAuC;AACvC,mDAAwD;AACxD,uCAA4C;AAC5C,iCAAsC;AAGtC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAa,SAAS;IACX,aAAa,CAAwB;IACrC,OAAO,CAAkB;IACzB,IAAI,CAAe;IAE5B,YAAY,MAAuB;QACjC,MAAM,IAAI,GAAG,IAAI,oBAAa,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,IAAI,qCAAqB,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,IAAI,yBAAe,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,IAAI,mBAAY,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;CACF;AAXD,8BAWC"}
package/dist/index.d.ts CHANGED
@@ -2,7 +2,8 @@ export { BomClient } from './client';
2
2
  export { MockBomClient } from './mock';
3
3
  export { CostBreakdownResource } from './costBreakdown';
4
4
  export { RoutingResource } from './routing';
5
+ export { TreeResource, flattenTree } from './tree';
5
6
  export { BomError, NotFoundError, UnauthorizedError, ForbiddenError } from './errors';
6
- export type { BomClientConfig, BomEnvelope, BomTypeName, SourcingType, BomProvenance, AmbiguousProject, PartLookup, MakeBuy, CostSource, CostBasis, RateSet, CostItem, CostCategory, CostModelMeta, CostModel, CostBreakdown, CostBreakdownResult, RoutingStep, Routing, RoutingResult, Unresolved, } from './types';
7
+ export type { BomClientConfig, BomEnvelope, BomTypeName, SourcingType, BomProvenance, AmbiguousProject, PartLookup, MakeBuy, CostSource, CostBasis, RateSet, CostItem, CostCategory, CostModelMeta, CostModel, CostBreakdown, CostBreakdownResult, RoutingStep, Routing, RoutingResult, BomTreeNode, BomTree, TreeResult, Unresolved, } from './types';
7
8
  export type { MockSeed } from './mock';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACtF,YAAY,EACV,eAAe,EACf,WAAW,EACX,WAAW,EACX,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,OAAO,EACP,UAAU,EACV,SAAS,EACT,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,OAAO,EACP,aAAa,EACb,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AACtF,YAAY,EACV,eAAe,EACf,WAAW,EACX,WAAW,EACX,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,OAAO,EACP,UAAU,EACV,SAAS,EACT,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,OAAO,EACP,aAAa,EACb,WAAW,EACX,OAAO,EACP,UAAU,EACV,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ForbiddenError = exports.UnauthorizedError = exports.NotFoundError = exports.BomError = exports.RoutingResource = exports.CostBreakdownResource = exports.MockBomClient = exports.BomClient = void 0;
3
+ exports.ForbiddenError = exports.UnauthorizedError = exports.NotFoundError = exports.BomError = exports.flattenTree = exports.TreeResource = exports.RoutingResource = exports.CostBreakdownResource = exports.MockBomClient = exports.BomClient = void 0;
4
4
  var client_1 = require("./client");
5
5
  Object.defineProperty(exports, "BomClient", { enumerable: true, get: function () { return client_1.BomClient; } });
6
6
  var mock_1 = require("./mock");
@@ -9,6 +9,9 @@ var costBreakdown_1 = require("./costBreakdown");
9
9
  Object.defineProperty(exports, "CostBreakdownResource", { enumerable: true, get: function () { return costBreakdown_1.CostBreakdownResource; } });
10
10
  var routing_1 = require("./routing");
11
11
  Object.defineProperty(exports, "RoutingResource", { enumerable: true, get: function () { return routing_1.RoutingResource; } });
12
+ var tree_1 = require("./tree");
13
+ Object.defineProperty(exports, "TreeResource", { enumerable: true, get: function () { return tree_1.TreeResource; } });
14
+ Object.defineProperty(exports, "flattenTree", { enumerable: true, get: function () { return tree_1.flattenTree; } });
12
15
  var errors_1 = require("./errors");
13
16
  Object.defineProperty(exports, "BomError", { enumerable: true, get: function () { return errors_1.BomError; } });
14
17
  Object.defineProperty(exports, "NotFoundError", { enumerable: true, get: function () { return errors_1.NotFoundError; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAqC;AAA5B,mGAAA,SAAS,OAAA;AAClB,+BAAuC;AAA9B,qGAAA,aAAa,OAAA;AACtB,iDAAwD;AAA/C,sHAAA,qBAAqB,OAAA;AAC9B,qCAA4C;AAAnC,0GAAA,eAAe,OAAA;AACxB,mCAAsF;AAA7E,kGAAA,QAAQ,OAAA;AAAE,uGAAA,aAAa,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AAAE,wGAAA,cAAc,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAqC;AAA5B,mGAAA,SAAS,OAAA;AAClB,+BAAuC;AAA9B,qGAAA,aAAa,OAAA;AACtB,iDAAwD;AAA/C,sHAAA,qBAAqB,OAAA;AAC9B,qCAA4C;AAAnC,0GAAA,eAAe,OAAA;AACxB,+BAAmD;AAA1C,oGAAA,YAAY,OAAA;AAAE,mGAAA,WAAW,OAAA;AAClC,mCAAsF;AAA7E,kGAAA,QAAQ,OAAA;AAAE,uGAAA,aAAa,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AAAE,wGAAA,cAAc,OAAA"}
package/dist/mock.d.ts CHANGED
@@ -1,10 +1,12 @@
1
- import type { CostBreakdown, CostBreakdownResult, PartLookup, Routing, RoutingResult } from './types';
1
+ import type { BomTree, CostBreakdown, CostBreakdownResult, PartLookup, Routing, RoutingResult, TreeResult } from './types';
2
2
  /** Seed data for the mock client, keyed the way the real API resolves. */
3
3
  export interface MockSeed {
4
4
  /** Cost answers. Matched on partNumber (or partRevisionId when the seed row
5
5
  * is addressed that way — see `partRevisionIds`). */
6
6
  costBreakdowns?: CostBreakdown[];
7
7
  routings?: Routing[];
8
+ /** Full trees; get() applies the requested maxDepth the way the API does. */
9
+ trees?: BomTree[];
8
10
  /** partRevisionId → partNumber, so a consumer's test can exercise the
9
11
  * canonical-part join without restating the seed. */
10
12
  partRevisionIds?: Record<string, string>;
@@ -22,6 +24,7 @@ export interface MockSeed {
22
24
  export declare class MockBomClient {
23
25
  private readonly _cost;
24
26
  private readonly _routing;
27
+ private readonly _trees;
25
28
  private readonly _revisions;
26
29
  private readonly _ambiguous;
27
30
  constructor(seed?: MockSeed);
@@ -33,6 +36,11 @@ export declare class MockBomClient {
33
36
  plantId?: string;
34
37
  }) => Promise<RoutingResult>;
35
38
  };
39
+ readonly tree: {
40
+ get: (lookup: PartLookup & {
41
+ maxDepth?: number;
42
+ }) => Promise<TreeResult>;
43
+ };
36
44
  private resolveRef;
37
45
  /** Mirrors the server: ambiguity is only reported when the caller gave
38
46
  * nothing to narrow by. */
@@ -1 +1 @@
1
- {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,OAAO,EACP,aAAa,EACd,MAAM,SAAS,CAAC;AAEjB,0EAA0E;AAC1E,MAAM,WAAW,QAAQ;IACvB;0DACsD;IACtD,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB;0DACsD;IACtD,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC;6DACyD;IACzD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IACpD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;gBAE7B,IAAI,GAAE,QAAa;IAO/B,QAAQ,CAAC,aAAa;sBACA,UAAU,KAAG,OAAO,CAAC,mBAAmB,CAAC;MAO7D;IAEF,QAAQ,CAAC,OAAO;sBACM,UAAU,GAAG;YAAE,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,KAAG,OAAO,CAAC,aAAa,CAAC;MAS9E;IAEF,OAAO,CAAC,UAAU;IAMlB;gCAC4B;IAC5B,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,QAAQ;CAQjB"}
1
+ {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAEP,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,OAAO,EACP,aAAa,EACb,UAAU,EACX,MAAM,SAAS,CAAC;AAEjB,0EAA0E;AAC1E,MAAM,WAAW,QAAQ;IACvB;0DACsD;IACtD,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB;0DACsD;IACtD,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC;6DACyD;IACzD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;GAMG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IACpD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAc;gBAE7B,IAAI,GAAE,QAAa;IAQ/B,QAAQ,CAAC,aAAa;sBACA,UAAU,KAAG,OAAO,CAAC,mBAAmB,CAAC;MAO7D;IAEF,QAAQ,CAAC,OAAO;sBACM,UAAU,GAAG;YAAE,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,KAAG,OAAO,CAAC,aAAa,CAAC;MAS9E;IAEF,QAAQ,CAAC,IAAI;sBACS,UAAU,GAAG;YAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;SAAE,KAAG,OAAO,CAAC,UAAU,CAAC;MAU5E;IAEF,OAAO,CAAC,UAAU;IAMlB;gCAC4B;IAC5B,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,QAAQ;CAQjB"}
package/dist/mock.js CHANGED
@@ -11,11 +11,13 @@ exports.MockBomClient = void 0;
11
11
  class MockBomClient {
12
12
  _cost;
13
13
  _routing;
14
+ _trees;
14
15
  _revisions;
15
16
  _ambiguous;
16
17
  constructor(seed = {}) {
17
18
  this._cost = seed.costBreakdowns ?? [];
18
19
  this._routing = seed.routings ?? [];
20
+ this._trees = seed.trees ?? [];
19
21
  this._revisions = seed.partRevisionIds ?? {};
20
22
  this._ambiguous = new Set(seed.ambiguous ?? []);
21
23
  }
@@ -43,6 +45,20 @@ class MockBomClient {
43
45
  return { ...hit, steps: hit.steps.filter((s) => s.plantId === lookup.plantId) };
44
46
  },
45
47
  };
48
+ tree = {
49
+ get: async (lookup) => {
50
+ const partNumber = this.resolveRef(lookup);
51
+ const unresolved = this.checkUnresolvable(lookup, partNumber);
52
+ if (unresolved)
53
+ return unresolved;
54
+ const hit = this._trees.find((t) => t.root.partNumber === partNumber);
55
+ if (!hit)
56
+ return this.notFound(lookup);
57
+ const maxDepth = lookup.maxDepth ?? 3;
58
+ const { node, count, truncated } = cutDepth(hit.root, 0, maxDepth);
59
+ return { ...hit, root: node, nodeCount: count, maxDepth, truncated };
60
+ },
61
+ };
46
62
  resolveRef(lookup) {
47
63
  if (lookup.partNumber?.trim())
48
64
  return lookup.partNumber.trim();
@@ -76,4 +92,20 @@ class MockBomClient {
76
92
  }
77
93
  }
78
94
  exports.MockBomClient = MockBomClient;
95
+ /** Mirror the server's depth cut: keep all of levels 0..maxDepth, mark the
96
+ * frontier hasChildren, and report whether anything was hidden. */
97
+ function cutDepth(node, level, maxDepth) {
98
+ if (level >= maxDepth && node.children.length > 0) {
99
+ return { node: { ...node, children: [] }, count: 1, truncated: true };
100
+ }
101
+ let count = 1;
102
+ let truncated = false;
103
+ const children = node.children.map((c) => {
104
+ const cut = cutDepth(c, level + 1, maxDepth);
105
+ count += cut.count;
106
+ truncated = truncated || cut.truncated;
107
+ return cut.node;
108
+ });
109
+ return { node: { ...node, children }, count, truncated };
110
+ }
79
111
  //# sourceMappingURL=mock.js.map
package/dist/mock.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"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"}
package/dist/tree.d.ts ADDED
@@ -0,0 +1,30 @@
1
+ import type { HttpTransport } from './http';
2
+ import type { BomTreeNode, PartLookup, TreeResult } from './types';
3
+ /**
4
+ * The BOM explosion behind one part — summary rows for a tree/table render,
5
+ * not full cost documents (those stay on `costBreakdown.get`).
6
+ *
7
+ * Depth-capped: the default `maxDepth` of 3 returns all of levels 0–3;
8
+ * `truncated` + per-node `hasChildren` say when there is more, and a deeper
9
+ * re-request fetches it. The cut is by level, never by node count, so what you
10
+ * have is always complete down to a depth.
11
+ */
12
+ export declare class TreeResource {
13
+ private readonly http;
14
+ constructor(http: HttpTransport);
15
+ /**
16
+ * Resolve a part reference to its subtree. Same resolution, provenance and
17
+ * `resolved: false` non-answers as the other resources.
18
+ *
19
+ * const tree = await bom.tree.get({ partNumber, programId });
20
+ * if (!tree.resolved) return renderEmpty(tree.reason);
21
+ * renderBomTab(flattenTree(tree.root), tree.provenance);
22
+ */
23
+ get(lookup: PartLookup & {
24
+ maxDepth?: number;
25
+ }): Promise<TreeResult>;
26
+ }
27
+ /** Depth-first flatten in render order — the shape a level-indented table
28
+ * wants. Pure convenience; the nesting is authoritative. */
29
+ export declare function flattenTree(root: BomTreeNode): BomTreeNode[];
30
+ //# sourceMappingURL=tree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.d.ts","sourceRoot":"","sources":["../src/tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EAAe,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGhF;;;;;;;;GAQG;AACH,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,aAAa;IAEhD;;;;;;;OAOG;IACG,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;CAY3E;AAED;6DAC6D;AAC7D,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,EAAE,CAQ5D"}
package/dist/tree.js ADDED
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TreeResource = void 0;
4
+ exports.flattenTree = flattenTree;
5
+ const internal_1 = require("./internal");
6
+ /**
7
+ * The BOM explosion behind one part — summary rows for a tree/table render,
8
+ * not full cost documents (those stay on `costBreakdown.get`).
9
+ *
10
+ * Depth-capped: the default `maxDepth` of 3 returns all of levels 0–3;
11
+ * `truncated` + per-node `hasChildren` say when there is more, and a deeper
12
+ * re-request fetches it. The cut is by level, never by node count, so what you
13
+ * have is always complete down to a depth.
14
+ */
15
+ class TreeResource {
16
+ http;
17
+ constructor(http) {
18
+ this.http = http;
19
+ }
20
+ /**
21
+ * Resolve a part reference to its subtree. Same resolution, provenance and
22
+ * `resolved: false` non-answers as the other resources.
23
+ *
24
+ * const tree = await bom.tree.get({ partNumber, programId });
25
+ * if (!tree.resolved) return renderEmpty(tree.reason);
26
+ * renderBomTab(flattenTree(tree.root), tree.provenance);
27
+ */
28
+ async get(lookup) {
29
+ (0, internal_1.assertPartRef)(lookup);
30
+ const res = await this.http.request({
31
+ method: 'GET',
32
+ path: '/api/v1/bom-tree',
33
+ query: {
34
+ ...(0, internal_1.lookupQuery)(lookup),
35
+ maxDepth: lookup.maxDepth != null ? String(lookup.maxDepth) : undefined,
36
+ },
37
+ });
38
+ return res.data;
39
+ }
40
+ }
41
+ exports.TreeResource = TreeResource;
42
+ /** Depth-first flatten in render order — the shape a level-indented table
43
+ * wants. Pure convenience; the nesting is authoritative. */
44
+ function flattenTree(root) {
45
+ const out = [];
46
+ const walk = (n) => {
47
+ out.push(n);
48
+ for (const c of n.children)
49
+ walk(c);
50
+ };
51
+ walk(root);
52
+ return out;
53
+ }
54
+ //# sourceMappingURL=tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree.js","sourceRoot":"","sources":["../src/tree.ts"],"names":[],"mappings":";;;AAwCA,kCAQC;AA9CD,yCAAwD;AAExD;;;;;;;;GAQG;AACH,MAAa,YAAY;IACM;IAA7B,YAA6B,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;IAAG,CAAC;IAEpD;;;;;;;OAOG;IACH,KAAK,CAAC,GAAG,CAAC,MAA0C;QAClD,IAAA,wBAAa,EAAC,MAAM,CAAC,CAAC;QACtB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAA0B;YAC3D,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE;gBACL,GAAG,IAAA,sBAAW,EAAC,MAAM,CAAC;gBACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;aACxE;SACF,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,IAAI,CAAC;IAClB,CAAC;CACF;AAvBD,oCAuBC;AAED;6DAC6D;AAC7D,SAAgB,WAAW,CAAC,IAAiB;IAC3C,MAAM,GAAG,GAAkB,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,CAAC,CAAc,EAAE,EAAE;QAC9B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACZ,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ;YAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC;IACF,IAAI,CAAC,IAAI,CAAC,CAAC;IACX,OAAO,GAAG,CAAC;AACb,CAAC"}
package/dist/types.d.ts CHANGED
@@ -165,6 +165,43 @@ export interface Unresolved {
165
165
  }
166
166
  export type CostBreakdownResult = CostBreakdown | Unresolved;
167
167
  export type RoutingResult = Routing | Unresolved;
168
+ export interface BomTreeNode {
169
+ nodeId: string;
170
+ partNumber: string;
171
+ name: string;
172
+ /** 0 at the resolved root, regardless of the node's depth in the full BOM. */
173
+ level: number;
174
+ quantity: number;
175
+ sourcingType: SourcingType | null;
176
+ supplierName: string | null;
177
+ /** Major units. null = never costed (render a dash, not 0). A COMPUTED zero
178
+ * (the no-unit-cost buy part) stays 0 and carries hasWarnings. */
179
+ unitCost: number | null;
180
+ /** unitCost x quantity. An assembly's pieceCost is already its children's
181
+ * rollup, so this sums correctly at exactly ONE level — do not add a parent
182
+ * and its children together. */
183
+ extendedCost: number | null;
184
+ costSource: CostSource | null;
185
+ /** Any cost item carries a default-* basis. Render it (the ESTIMATE badge). */
186
+ estimated: boolean;
187
+ hasWarnings: boolean;
188
+ /** True even when the depth cap hid the children. */
189
+ hasChildren: boolean;
190
+ children: BomTreeNode[];
191
+ }
192
+ export interface BomTree {
193
+ resolved: true;
194
+ root: BomTreeNode;
195
+ nodeCount: number;
196
+ /** The depth actually applied (default 3, max 8). */
197
+ maxDepth: number;
198
+ /** True when any frontier node still has children — re-request deeper. */
199
+ truncated: boolean;
200
+ /** Root costModel currency; null when the root was never costed. */
201
+ currency: string | null;
202
+ provenance: BomProvenance;
203
+ }
204
+ export type TreeResult = BomTree | Unresolved;
168
205
  /**
169
206
  * How to address a part. One of `partNumber` / `partRevisionId` is required;
170
207
  * `partRevisionId` (the canonical master-data PartRevision) is the stronger
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@campfire-interactive/bom-client",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "TypeScript client for the BOM read contract — resolved cost breakdowns and routing by part reference",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",