@campfire-interactive/integrations-client 0.1.0 → 0.2.1
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/actuals.d.ts +13 -0
- package/dist/actuals.d.ts.map +1 -1
- package/dist/actuals.js +23 -0
- package/dist/actuals.js.map +1 -1
- package/dist/ediForecast.d.ts +5 -0
- package/dist/ediForecast.d.ts.map +1 -1
- package/dist/ediForecast.js +16 -0
- package/dist/ediForecast.js.map +1 -1
- package/dist/internal.d.ts +3 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +6 -0
- package/dist/internal.js.map +1 -1
- package/dist/mock.d.ts +2 -0
- package/dist/mock.d.ts.map +1 -1
- package/dist/mock.js +23 -0
- package/dist/mock.js.map +1 -1
- package/package.json +1 -1
package/dist/actuals.d.ts
CHANGED
|
@@ -8,5 +8,18 @@ export declare class ActualsResource {
|
|
|
8
8
|
* YYYYMM). partIds are chunked internally (≤100/call) so a large set never
|
|
9
9
|
* hits the API's 500-id / 5000-row caps. Empty in → `[]` (no network call). */
|
|
10
10
|
list(partIds: string[], window?: MeasureWindow): Promise<ActualRow[]>;
|
|
11
|
+
/** Actuals for whole plants, optionally windowed by period (inclusive
|
|
12
|
+
* YYYYMM). The entry point for callers that know a plant rather than a
|
|
13
|
+
* part set — plant-management's dashboards, where `list()` would mean
|
|
14
|
+
* first enumerating every part at the plant.
|
|
15
|
+
*
|
|
16
|
+
* `plantCodes` are the codes the SOURCE FEED carried (SAP's `0118`), not
|
|
17
|
+
* master-data plant ids: the measure store never saw the canonical id.
|
|
18
|
+
* Resolving id → code is the caller's job, and it already holds both halves
|
|
19
|
+
* (nextgen docs/decisions/2026-08-22-measure-reads-via-integrations-client.md).
|
|
20
|
+
*
|
|
21
|
+
* No chunking: the API caps plant codes at 100 and no caller is near that,
|
|
22
|
+
* where a part set routinely runs to hundreds. Empty in → `[]`. */
|
|
23
|
+
listByPlant(plantCodes: string[], window?: MeasureWindow): Promise<ActualRow[]>;
|
|
11
24
|
}
|
|
12
25
|
//# sourceMappingURL=actuals.d.ts.map
|
package/dist/actuals.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actuals.d.ts","sourceRoot":"","sources":["../src/actuals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAwB,MAAM,SAAS,CAAC;AAoC9E,gEAAgE;AAChE,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,aAAa;IAEhD;;oFAEgF;IAC1E,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"actuals.d.ts","sourceRoot":"","sources":["../src/actuals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAwB,MAAM,SAAS,CAAC;AAoC9E,gEAAgE;AAChE,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,aAAa;IAEhD;;oFAEgF;IAC1E,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAe3E;;;;;;;;;;;wEAWoE;IAC9D,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;CAUtF"}
|
package/dist/actuals.js
CHANGED
|
@@ -43,6 +43,29 @@ class ActualsResource {
|
|
|
43
43
|
}
|
|
44
44
|
return out;
|
|
45
45
|
}
|
|
46
|
+
/** Actuals for whole plants, optionally windowed by period (inclusive
|
|
47
|
+
* YYYYMM). The entry point for callers that know a plant rather than a
|
|
48
|
+
* part set — plant-management's dashboards, where `list()` would mean
|
|
49
|
+
* first enumerating every part at the plant.
|
|
50
|
+
*
|
|
51
|
+
* `plantCodes` are the codes the SOURCE FEED carried (SAP's `0118`), not
|
|
52
|
+
* master-data plant ids: the measure store never saw the canonical id.
|
|
53
|
+
* Resolving id → code is the caller's job, and it already holds both halves
|
|
54
|
+
* (nextgen docs/decisions/2026-08-22-measure-reads-via-integrations-client.md).
|
|
55
|
+
*
|
|
56
|
+
* No chunking: the API caps plant codes at 100 and no caller is near that,
|
|
57
|
+
* where a part set routinely runs to hundreds. Empty in → `[]`. */
|
|
58
|
+
async listByPlant(plantCodes, window) {
|
|
59
|
+
const codes = (0, internal_1.dedupeCodes)(plantCodes);
|
|
60
|
+
if (codes.length === 0)
|
|
61
|
+
return [];
|
|
62
|
+
const res = await this.http.request({
|
|
63
|
+
method: 'GET',
|
|
64
|
+
path: '/v1/actuals',
|
|
65
|
+
query: { plantCode: codes.join(','), ...(0, internal_1.windowQuery)(window) },
|
|
66
|
+
});
|
|
67
|
+
return res.data.map(coerce);
|
|
68
|
+
}
|
|
46
69
|
}
|
|
47
70
|
exports.ActualsResource = ActualsResource;
|
|
48
71
|
//# sourceMappingURL=actuals.js.map
|
package/dist/actuals.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actuals.js","sourceRoot":"","sources":["../src/actuals.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"actuals.js","sourceRoot":"","sources":["../src/actuals.ts"],"names":[],"mappings":";;;AAEA,yCAAyG;AAkBzG,SAAS,MAAM,CAAC,CAAe;IAC7B,OAAO;QACL,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,YAAY,EAAE,IAAA,gBAAK,EAAC,CAAC,CAAC,YAAY,CAAC;QACnC,OAAO,EAAE,IAAA,gBAAK,EAAC,CAAC,CAAC,OAAO,CAAC;QACzB,UAAU,EAAE,IAAA,gBAAK,EAAC,CAAC,CAAC,UAAU,CAAC;QAC/B,QAAQ,EAAE,IAAA,gBAAK,EAAC,CAAC,CAAC,QAAQ,CAAC;QAC3B,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,UAAU,EAAE,CAAC,CAAC,UAAU;KACzB,CAAC;AACJ,CAAC;AAED,gEAAgE;AAChE,MAAa,eAAe;IACG;IAA7B,YAA6B,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;IAAG,CAAC;IAEpD;;oFAEgF;IAChF,KAAK,CAAC,IAAI,CAAC,OAAiB,EAAE,MAAsB;QAClD,MAAM,GAAG,GAAG,IAAA,wBAAa,EAAC,OAAO,CAAC,CAAC;QACnC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAChC,MAAM,GAAG,GAAgB,EAAE,CAAC;QAC5B,KAAK,MAAM,MAAM,IAAI,IAAA,gBAAK,EAAC,GAAG,EAAE,+BAAoB,CAAC,EAAE,CAAC;YACtD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAuC;gBACxE,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAA,sBAAW,EAAC,MAAM,CAAC,EAAE;aAC5D,CAAC,CAAC;YACH,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI;gBAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;;;;;;;;wEAWoE;IACpE,KAAK,CAAC,WAAW,CAAC,UAAoB,EAAE,MAAsB;QAC5D,MAAM,KAAK,GAAG,IAAA,sBAAW,EAAC,UAAU,CAAC,CAAC;QACtC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAuC;YACxE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,IAAA,sBAAW,EAAC,MAAM,CAAC,EAAE;SAC9D,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;CACF;AA3CD,0CA2CC"}
|
package/dist/ediForecast.d.ts
CHANGED
|
@@ -9,5 +9,10 @@ export declare class EdiForecastResource {
|
|
|
9
9
|
* every stored release. `from`/`to` window the target period (inclusive
|
|
10
10
|
* YYYYMM). partIds are chunked internally (≤100/call). Empty in → `[]`. */
|
|
11
11
|
list(partIds: string[], window?: MeasureWindow): Promise<EdiForecastRow[]>;
|
|
12
|
+
/** EDI forecast for whole plants. Same selection semantics as
|
|
13
|
+
* `ActualsResource.listByPlant` (source-feed plant codes, no chunking) and
|
|
14
|
+
* the same `latest` default as `list()` — each part's most-recent release,
|
|
15
|
+
* computed within the selected plants. Empty in → `[]`. */
|
|
16
|
+
listByPlant(plantCodes: string[], window?: MeasureWindow): Promise<EdiForecastRow[]>;
|
|
12
17
|
}
|
|
13
18
|
//# sourceMappingURL=ediForecast.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ediForecast.d.ts","sourceRoot":"","sources":["../src/ediForecast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAwB,MAAM,SAAS,CAAC;AAoCnF,oEAAoE;AACpE,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,aAAa;IAEhD;;;gFAG4E;IACtE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ediForecast.d.ts","sourceRoot":"","sources":["../src/ediForecast.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAwB,MAAM,SAAS,CAAC;AAoCnF,oEAAoE;AACpE,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,aAAa;IAEhD;;;gFAG4E;IACtE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAiBhF;;;gEAG4D;IACtD,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;CAW3F"}
|
package/dist/ediForecast.js
CHANGED
|
@@ -46,6 +46,22 @@ class EdiForecastResource {
|
|
|
46
46
|
}
|
|
47
47
|
return out;
|
|
48
48
|
}
|
|
49
|
+
/** EDI forecast for whole plants. Same selection semantics as
|
|
50
|
+
* `ActualsResource.listByPlant` (source-feed plant codes, no chunking) and
|
|
51
|
+
* the same `latest` default as `list()` — each part's most-recent release,
|
|
52
|
+
* computed within the selected plants. Empty in → `[]`. */
|
|
53
|
+
async listByPlant(plantCodes, window) {
|
|
54
|
+
const codes = (0, internal_1.dedupeCodes)(plantCodes);
|
|
55
|
+
if (codes.length === 0)
|
|
56
|
+
return [];
|
|
57
|
+
const latest = window?.latest === false ? undefined : 'true';
|
|
58
|
+
const res = await this.http.request({
|
|
59
|
+
method: 'GET',
|
|
60
|
+
path: '/v1/edi-forecast',
|
|
61
|
+
query: { plantCode: codes.join(','), latest, ...(0, internal_1.windowQuery)(window) },
|
|
62
|
+
});
|
|
63
|
+
return res.data.map(coerce);
|
|
64
|
+
}
|
|
49
65
|
}
|
|
50
66
|
exports.EdiForecastResource = EdiForecastResource;
|
|
51
67
|
//# sourceMappingURL=ediForecast.js.map
|
package/dist/ediForecast.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ediForecast.js","sourceRoot":"","sources":["../src/ediForecast.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"ediForecast.js","sourceRoot":"","sources":["../src/ediForecast.ts"],"names":[],"mappings":";;;AAEA,yCAAyG;AAkBzG,SAAS,MAAM,CAAC,CAAoB;IAClC,OAAO;QACL,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,SAAS,EAAE,IAAA,gBAAK,EAAC,CAAC,CAAC,SAAS,CAAC;QAC7B,QAAQ,EAAE,IAAA,gBAAK,EAAC,CAAC,CAAC,QAAQ,CAAC;QAC3B,UAAU,EAAE,IAAA,gBAAK,EAAC,CAAC,CAAC,UAAU,CAAC;QAC/B,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,UAAU,EAAE,CAAC,CAAC,UAAU;KACzB,CAAC;AACJ,CAAC;AAED,oEAAoE;AACpE,MAAa,mBAAmB;IACD;IAA7B,YAA6B,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;IAAG,CAAC;IAEpD;;;gFAG4E;IAC5E,KAAK,CAAC,IAAI,CAAC,OAAiB,EAAE,MAAsB;QAClD,MAAM,GAAG,GAAG,IAAA,wBAAa,EAAC,OAAO,CAAC,CAAC;QACnC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAChC,2EAA2E;QAC3E,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7D,MAAM,GAAG,GAAqB,EAAE,CAAC;QACjC,KAAK,MAAM,MAAM,IAAI,IAAA,gBAAK,EAAC,GAAG,EAAE,+BAAoB,CAAC,EAAE,CAAC;YACtD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAA4C;gBAC7E,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,kBAAkB;gBACxB,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,IAAA,sBAAW,EAAC,MAAM,CAAC,EAAE;aACpE,CAAC,CAAC;YACH,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI;gBAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;gEAG4D;IAC5D,KAAK,CAAC,WAAW,CAAC,UAAoB,EAAE,MAAsB;QAC5D,MAAM,KAAK,GAAG,IAAA,sBAAW,EAAC,UAAU,CAAC,CAAC;QACtC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAA4C;YAC7E,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,GAAG,IAAA,sBAAW,EAAC,MAAM,CAAC,EAAE;SACtE,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;CACF;AAvCD,kDAuCC"}
|
package/dist/internal.d.ts
CHANGED
|
@@ -2,6 +2,9 @@ export declare const MAX_PARTIDS_PER_CALL = 100;
|
|
|
2
2
|
/** Trim, drop blanks, de-dupe — the API does this server-side too, but doing it
|
|
3
3
|
* here avoids wasting a chunk on duplicates. */
|
|
4
4
|
export declare function dedupePartIds(ids: string[]): string[];
|
|
5
|
+
/** Trim, drop blanks, de-dupe — plant codes are free-text (whatever the feed
|
|
6
|
+
* carried), so unlike partIds there is no shape to validate against. */
|
|
7
|
+
export declare function dedupeCodes(codes: string[]): string[];
|
|
5
8
|
export declare function chunk<T>(arr: T[], size: number): T[][];
|
|
6
9
|
/** Fix 1: money/volume columns arrive as strings (Prisma Decimal.toJSON). Coerce
|
|
7
10
|
* to number so the row types are honest — a consumer must never do `"10" + "5"`. */
|
package/dist/internal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC;iDACiD;AACjD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAErD;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,CAItD;AAED;qFACqF;AACrF,wBAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAI/C;AAED,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAKvG"}
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC;iDACiD;AACjD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAErD;AAED;yEACyE;AACzE,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAErD;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,CAItD;AAED;qFACqF;AACrF,wBAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAI/C;AAED,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAKvG"}
|
package/dist/internal.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.MAX_PARTIDS_PER_CALL = void 0;
|
|
6
6
|
exports.dedupePartIds = dedupePartIds;
|
|
7
|
+
exports.dedupeCodes = dedupeCodes;
|
|
7
8
|
exports.chunk = chunk;
|
|
8
9
|
exports.toNum = toNum;
|
|
9
10
|
exports.windowQuery = windowQuery;
|
|
@@ -16,6 +17,11 @@ exports.MAX_PARTIDS_PER_CALL = 100;
|
|
|
16
17
|
function dedupePartIds(ids) {
|
|
17
18
|
return Array.from(new Set(ids.map((s) => s.trim()).filter(Boolean)));
|
|
18
19
|
}
|
|
20
|
+
/** Trim, drop blanks, de-dupe — plant codes are free-text (whatever the feed
|
|
21
|
+
* carried), so unlike partIds there is no shape to validate against. */
|
|
22
|
+
function dedupeCodes(codes) {
|
|
23
|
+
return Array.from(new Set(codes.map((s) => s.trim()).filter(Boolean)));
|
|
24
|
+
}
|
|
19
25
|
function chunk(arr, size) {
|
|
20
26
|
const out = [];
|
|
21
27
|
for (let i = 0; i < arr.length; i += size)
|
package/dist/internal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,iFAAiF;;;AASjF,sCAEC;AAED,sBAIC;AAID,sBAIC;AAED,kCAKC;
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,iFAAiF;;;AASjF,sCAEC;AAID,kCAEC;AAED,sBAIC;AAID,sBAIC;AAED,kCAKC;AApCD,6EAA6E;AAC7E,6EAA6E;AAC7E,iEAAiE;AACpD,QAAA,oBAAoB,GAAG,GAAG,CAAC;AAExC;iDACiD;AACjD,SAAgB,aAAa,CAAC,GAAa;IACzC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC;AAED;yEACyE;AACzE,SAAgB,WAAW,CAAC,KAAe;IACzC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAgB,KAAK,CAAI,GAAQ,EAAE,IAAY;IAC7C,MAAM,GAAG,GAAU,EAAE,CAAC;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI;QAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAC5E,OAAO,GAAG,CAAC;AACb,CAAC;AAED;qFACqF;AACrF,SAAgB,KAAK,CAAC,CAAU;IAC9B,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,CAAC;AAED,SAAgB,WAAW,CAAC,MAAuC;IACjE,OAAO;QACL,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;QAC5D,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;KACvD,CAAC;AACJ,CAAC"}
|
package/dist/mock.d.ts
CHANGED
|
@@ -16,9 +16,11 @@ export declare class MockIntegrationsClient {
|
|
|
16
16
|
constructor(seed?: MockSeed);
|
|
17
17
|
readonly actuals: {
|
|
18
18
|
list: (partIds: string[], window?: MeasureWindow) => Promise<ActualRow[]>;
|
|
19
|
+
listByPlant: (plantCodes: string[], window?: MeasureWindow) => Promise<ActualRow[]>;
|
|
19
20
|
};
|
|
20
21
|
readonly ediForecast: {
|
|
21
22
|
list: (partIds: string[], window?: MeasureWindow) => Promise<EdiForecastRow[]>;
|
|
23
|
+
listByPlant: (plantCodes: string[], window?: MeasureWindow) => Promise<EdiForecastRow[]>;
|
|
22
24
|
};
|
|
23
25
|
}
|
|
24
26
|
//# sourceMappingURL=mock.d.ts.map
|
package/dist/mock.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExE,qCAAqC;AACrC,MAAM,WAAW,QAAQ;IACvB,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;CAChC;AAED;;;;;GAKG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAc;IACvC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;gBAE5B,IAAI,GAAE,QAAa;IAK/B,QAAQ,CAAC,OAAO;wBACQ,MAAM,EAAE,WAAW,aAAa,KAAG,OAAO,CAAC,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExE,qCAAqC;AACrC,MAAM,WAAW,QAAQ;IACvB,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;CAChC;AAED;;;;;GAKG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAc;IACvC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;gBAE5B,IAAI,GAAE,QAAa;IAK/B,QAAQ,CAAC,OAAO;wBACQ,MAAM,EAAE,WAAW,aAAa,KAAG,OAAO,CAAC,SAAS,EAAE,CAAC;kCAS7C,MAAM,EAAE,WAAW,aAAa,KAAG,OAAO,CAAC,SAAS,EAAE,CAAC;MAUvF;IAEF,QAAQ,CAAC,WAAW;wBACI,MAAM,EAAE,WAAW,aAAa,KAAG,OAAO,CAAC,cAAc,EAAE,CAAC;kCAkBlD,MAAM,EAAE,WAAW,aAAa,KAAG,OAAO,CAAC,cAAc,EAAE,CAAC;MAmB5F;CACH"}
|
package/dist/mock.js
CHANGED
|
@@ -21,6 +21,13 @@ class MockIntegrationsClient {
|
|
|
21
21
|
(window?.from == null || r.period >= window.from) &&
|
|
22
22
|
(window?.to == null || r.period <= window.to));
|
|
23
23
|
},
|
|
24
|
+
listByPlant: async (plantCodes, window) => {
|
|
25
|
+
const codes = new Set(plantCodes);
|
|
26
|
+
return this._actuals.filter((r) => r.plantCode != null &&
|
|
27
|
+
codes.has(r.plantCode) &&
|
|
28
|
+
(window?.from == null || r.period >= window.from) &&
|
|
29
|
+
(window?.to == null || r.period <= window.to));
|
|
30
|
+
},
|
|
24
31
|
};
|
|
25
32
|
ediForecast = {
|
|
26
33
|
list: async (partIds, window) => {
|
|
@@ -38,6 +45,22 @@ class MockIntegrationsClient {
|
|
|
38
45
|
}
|
|
39
46
|
return rows;
|
|
40
47
|
},
|
|
48
|
+
listByPlant: async (plantCodes, window) => {
|
|
49
|
+
const codes = new Set(plantCodes);
|
|
50
|
+
let rows = this._edi.filter((r) => r.plantCode != null &&
|
|
51
|
+
codes.has(r.plantCode) &&
|
|
52
|
+
(window?.from == null || r.targetPeriod >= window.from) &&
|
|
53
|
+
(window?.to == null || r.targetPeriod <= window.to));
|
|
54
|
+
// Same default-latest semantics as list(), computed within the selection.
|
|
55
|
+
if (window?.latest !== false) {
|
|
56
|
+
const maxBase = new Map();
|
|
57
|
+
for (const r of rows) {
|
|
58
|
+
maxBase.set(r.partId, Math.max(maxBase.get(r.partId) ?? -Infinity, r.basePeriod));
|
|
59
|
+
}
|
|
60
|
+
rows = rows.filter((r) => r.basePeriod === maxBase.get(r.partId));
|
|
61
|
+
}
|
|
62
|
+
return rows;
|
|
63
|
+
},
|
|
41
64
|
};
|
|
42
65
|
}
|
|
43
66
|
exports.MockIntegrationsClient = MockIntegrationsClient;
|
package/dist/mock.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":";;;AAQA;;;;;GAKG;AACH,MAAa,sBAAsB;IAChB,QAAQ,CAAc;IACtB,IAAI,CAAmB;IAExC,YAAY,OAAiB,EAAE;QAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;IACrC,CAAC;IAEQ,OAAO,GAAG;QACjB,IAAI,EAAE,KAAK,EAAE,OAAiB,EAAE,MAAsB,EAAwB,EAAE;YAC9E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CACzB,CAAC,CAAC,EAAE,EAAE,CACJ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;gBACjB,CAAC,MAAM,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC;gBACjD,CAAC,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,CAChD,CAAC;QACJ,CAAC;KACF,CAAC;IAEO,WAAW,GAAG;QACrB,IAAI,EAAE,KAAK,EAAE,OAAiB,EAAE,MAAsB,EAA6B,EAAE;YACnF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7B,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CACzB,CAAC,CAAC,EAAE,EAAE,CACJ,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;gBACjB,CAAC,MAAM,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC;gBACvD,CAAC,MAAM,EAAE,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC,YAAY,IAAI,MAAM,CAAC,EAAE,CAAC,CACtD,CAAC;YACF,8EAA8E;YAC9E,IAAI,MAAM,EAAE,MAAM,KAAK,KAAK,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;gBAC1C,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;oBACrB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;gBACpF,CAAC;gBACD,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACpE,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAC;CACH;
|
|
1
|
+
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED