@mxpicture/tesla-superchargers-mate 0.1.2 → 0.1.4
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/common/index.d.ts +1 -0
- package/dist/common/index.d.ts.map +1 -1
- package/dist/common/index.js +1 -0
- package/dist/common/index.js.map +1 -1
- package/dist/common/invoices.d.ts +2 -0
- package/dist/common/invoices.d.ts.map +1 -0
- package/dist/common/invoices.js +122 -0
- package/dist/common/invoices.js.map +1 -0
- package/dist/store/ChargingProcessesStore.d.ts +6 -0
- package/dist/store/ChargingProcessesStore.d.ts.map +1 -1
- package/dist/store/ChargingProcessesStore.js +17 -0
- package/dist/store/ChargingProcessesStore.js.map +1 -1
- package/dist/store/PicInvoicesStore.d.ts +16 -0
- package/dist/store/PicInvoicesStore.d.ts.map +1 -0
- package/dist/store/PicInvoicesStore.js +19 -0
- package/dist/store/PicInvoicesStore.js.map +1 -0
- package/dist/store/index.d.ts +1 -0
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +1 -0
- package/dist/store/index.js.map +1 -1
- package/dist/transform/index.d.ts +1 -0
- package/dist/transform/index.d.ts.map +1 -1
- package/dist/transform/index.js +1 -0
- package/dist/transform/index.js.map +1 -1
- package/dist/transform/invoices.transform.d.ts +9 -0
- package/dist/transform/invoices.transform.d.ts.map +1 -0
- package/dist/transform/invoices.transform.js +34 -0
- package/dist/transform/invoices.transform.js.map +1 -0
- package/dist/types/common.types.d.ts +22 -0
- package/dist/types/common.types.d.ts.map +1 -0
- package/dist/types/common.types.js +2 -0
- package/dist/types/common.types.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/invoice.types.d.ts +34 -0
- package/dist/types/invoice.types.d.ts.map +1 -0
- package/dist/types/invoice.types.js +2 -0
- package/dist/types/invoice.types.js.map +1 -0
- package/package.json +2 -2
package/dist/common/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
|
package/dist/common/index.js
CHANGED
package/dist/common/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invoices.d.ts","sourceRoot":"","sources":["../../src/common/invoices.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
// import type { PicInvoicesInitializer } from "@mxpicture/tesla-superchargers-generated/public";
|
|
2
|
+
// import postgres from "postgres";
|
|
3
|
+
export {};
|
|
4
|
+
// /* ------------------------------------------------------------------ */
|
|
5
|
+
// /* postgres */
|
|
6
|
+
// /* ------------------------------------------------------------------ */
|
|
7
|
+
// /**
|
|
8
|
+
// * Best-effort match of a CSV row to a TeslaMate charging_processes.id by
|
|
9
|
+
// * VIN + start time (Supercharger session start vs. logged start can differ
|
|
10
|
+
// * by a couple of minutes). Adjust the tolerance to taste.
|
|
11
|
+
// */
|
|
12
|
+
// export async function lookupChargingProcessId(
|
|
13
|
+
// sql: postgres.ISql,
|
|
14
|
+
// vin: string,
|
|
15
|
+
// chargeStart: Date,
|
|
16
|
+
// ): Promise<number | null> {
|
|
17
|
+
// const rows = await sql<{ id: number }[]>`
|
|
18
|
+
// SELECT cp.id
|
|
19
|
+
// FROM charging_processes cp
|
|
20
|
+
// JOIN cars c ON c.id = cp.car_id
|
|
21
|
+
// WHERE c.vin = ${vin}
|
|
22
|
+
// AND cp.start_date BETWEEN ${chargeStart}::timestamptz - interval '15 minutes'
|
|
23
|
+
// AND ${chargeStart}::timestamptz + interval '15 minutes'
|
|
24
|
+
// ORDER BY abs(extract(epoch FROM cp.start_date - ${chargeStart}::timestamptz))
|
|
25
|
+
// LIMIT 1`;
|
|
26
|
+
// return rows[0]?.id ?? null;
|
|
27
|
+
// }
|
|
28
|
+
// export async function insertCharge(
|
|
29
|
+
// sql: postgres.ISql,
|
|
30
|
+
// init: PicInvoicesInitializer,
|
|
31
|
+
// ): Promise<string> {
|
|
32
|
+
// // Normalize optionals: postgres.js serializes null, not undefined.
|
|
33
|
+
// // Column names are derived from the object keys by sql(row).
|
|
34
|
+
// const row = {
|
|
35
|
+
// created_at: init.created_at,
|
|
36
|
+
// charging_processes_id: init.charging_processes_id,
|
|
37
|
+
// charge_start_date_time: init.charge_start_date_time,
|
|
38
|
+
// name: init.name ?? null,
|
|
39
|
+
// vin: init.vin,
|
|
40
|
+
// model: init.model ?? null,
|
|
41
|
+
// country: init.country,
|
|
42
|
+
// site_location_name: init.site_location_name,
|
|
43
|
+
// description: init.description ?? null,
|
|
44
|
+
// ucom: init.ucom,
|
|
45
|
+
// quantity_base: init.quantity_base, // strings → pg casts to NUMERIC, no float round-trip
|
|
46
|
+
// quantity_tier1: init.quantity_tier1 ?? null,
|
|
47
|
+
// quantity_tier2: init.quantity_tier2 ?? null,
|
|
48
|
+
// quantity_tier3: init.quantity_tier3 ?? null,
|
|
49
|
+
// quantity_tier4: init.quantity_tier4 ?? null,
|
|
50
|
+
// invoice_number: init.invoice_number,
|
|
51
|
+
// unit_cost_base: init.unit_cost_base,
|
|
52
|
+
// unit_cost_tier1: init.unit_cost_tier1 ?? null,
|
|
53
|
+
// unit_cost_tier2: init.unit_cost_tier2 ?? null,
|
|
54
|
+
// unit_cost_tier3: init.unit_cost_tier3 ?? null,
|
|
55
|
+
// unit_cost_tier4: init.unit_cost_tier4 ?? null,
|
|
56
|
+
// vat: init.vat,
|
|
57
|
+
// total_exc_vat: init.total_exc_vat,
|
|
58
|
+
// total_inc_vat: init.total_inc_vat,
|
|
59
|
+
// status: init.status ?? null,
|
|
60
|
+
// invoice: init.invoice ?? null,
|
|
61
|
+
// };
|
|
62
|
+
// const rows = await sql<{ id: string }[]>`
|
|
63
|
+
// INSERT INTO pic_invoices ${sql(row)}
|
|
64
|
+
// RETURNING id`;
|
|
65
|
+
// return rows[0]!.id;
|
|
66
|
+
// }
|
|
67
|
+
// /* ------------------------------------------------------------------ */
|
|
68
|
+
// /* example main: npx tsx import-charges.ts charges.csv */
|
|
69
|
+
// /* ------------------------------------------------------------------ */
|
|
70
|
+
// async function main(): Promise<void> {
|
|
71
|
+
// const file = process.argv[2];
|
|
72
|
+
// if (!file) {
|
|
73
|
+
// console.error("usage: tsx import-charges.ts <charges.csv>");
|
|
74
|
+
// process.exit(1);
|
|
75
|
+
// }
|
|
76
|
+
// const { readFile } = await import("node:fs/promises");
|
|
77
|
+
// const csvText = await readFile(file, "utf8");
|
|
78
|
+
// const { rows, errors } = parseChargesCsv(csvText);
|
|
79
|
+
// if (errors.length > 0) {
|
|
80
|
+
// for (const e of errors) {
|
|
81
|
+
// console.error(
|
|
82
|
+
// `line ${e.line}:`,
|
|
83
|
+
// e.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; "),
|
|
84
|
+
// );
|
|
85
|
+
// }
|
|
86
|
+
// throw new Error(`${errors.length} invalid row(s), aborting`);
|
|
87
|
+
// }
|
|
88
|
+
// const sql = postgres(process.env.DATABASE_URL ?? "", {
|
|
89
|
+
// // NUMERIC arrives as string by default (no float loss) — keep it that way.
|
|
90
|
+
// onnotice: () => {}, // silence NOTICEs; drop if you want them logged
|
|
91
|
+
// });
|
|
92
|
+
// try {
|
|
93
|
+
// // sql.begin = one transaction; throwing inside rolls everything back.
|
|
94
|
+
// await sql.begin(async (sql) => {
|
|
95
|
+
// for (const row of rows) {
|
|
96
|
+
// const cpId = await lookupChargingProcessId(
|
|
97
|
+
// sql,
|
|
98
|
+
// row.Vin,
|
|
99
|
+
// row.ChargeStartDateTime,
|
|
100
|
+
// );
|
|
101
|
+
// if (cpId === null) {
|
|
102
|
+
// throw new Error(
|
|
103
|
+
// `no charging_processes match for ${row.Vin} @ ${row.ChargeStartDateTime.toISOString()}`,
|
|
104
|
+
// );
|
|
105
|
+
// }
|
|
106
|
+
// const id = await insertCharge(sql, toInitializer(row, cpId));
|
|
107
|
+
// console.log(
|
|
108
|
+
// `inserted ${row.InvoiceNumber} → id ${id} (charging_processes_id ${cpId})`,
|
|
109
|
+
// );
|
|
110
|
+
// }
|
|
111
|
+
// });
|
|
112
|
+
// } finally {
|
|
113
|
+
// await sql.end();
|
|
114
|
+
// }
|
|
115
|
+
// }
|
|
116
|
+
// if (process.argv[1]?.endsWith("import-charges.ts")) {
|
|
117
|
+
// main().catch((err) => {
|
|
118
|
+
// console.error(err);
|
|
119
|
+
// process.exit(1);
|
|
120
|
+
// });
|
|
121
|
+
// }
|
|
122
|
+
//# sourceMappingURL=invoices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invoices.js","sourceRoot":"","sources":["../../src/common/invoices.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,mCAAmC;;AAEnC,2EAA2E;AAC3E,4EAA4E;AAC5E,2EAA2E;AAE3E,MAAM;AACN,4EAA4E;AAC5E,8EAA8E;AAC9E,6DAA6D;AAC7D,MAAM;AACN,iDAAiD;AACjD,wBAAwB;AACxB,iBAAiB;AACjB,uBAAuB;AACvB,8BAA8B;AAC9B,8CAA8C;AAC9C,mBAAmB;AACnB,mCAAmC;AACnC,wCAAwC;AACxC,4BAA4B;AAC5B,uFAAuF;AACvF,wFAAwF;AACxF,qFAAqF;AACrF,iBAAiB;AACjB,gCAAgC;AAChC,IAAI;AAEJ,sCAAsC;AACtC,wBAAwB;AACxB,kCAAkC;AAClC,uBAAuB;AACvB,wEAAwE;AACxE,kEAAkE;AAClE,kBAAkB;AAClB,mCAAmC;AACnC,yDAAyD;AACzD,2DAA2D;AAC3D,+BAA+B;AAC/B,qBAAqB;AACrB,iCAAiC;AACjC,6BAA6B;AAC7B,mDAAmD;AACnD,6CAA6C;AAC7C,uBAAuB;AACvB,+FAA+F;AAC/F,mDAAmD;AACnD,mDAAmD;AACnD,mDAAmD;AACnD,mDAAmD;AACnD,2CAA2C;AAC3C,2CAA2C;AAC3C,qDAAqD;AACrD,qDAAqD;AACrD,qDAAqD;AACrD,qDAAqD;AACrD,qBAAqB;AACrB,yCAAyC;AACzC,yCAAyC;AACzC,mCAAmC;AACnC,qCAAqC;AACrC,OAAO;AAEP,8CAA8C;AAC9C,2CAA2C;AAC3C,qBAAqB;AACrB,wBAAwB;AACxB,IAAI;AAEJ,2EAA2E;AAC3E,4EAA4E;AAC5E,2EAA2E;AAE3E,yCAAyC;AACzC,kCAAkC;AAClC,iBAAiB;AACjB,mEAAmE;AACnE,uBAAuB;AACvB,MAAM;AAEN,2DAA2D;AAC3D,kDAAkD;AAElD,uDAAuD;AACvD,6BAA6B;AAC7B,gCAAgC;AAChC,uBAAuB;AACvB,6BAA6B;AAC7B,+EAA+E;AAC/E,WAAW;AACX,QAAQ;AACR,oEAAoE;AACpE,MAAM;AAEN,2DAA2D;AAC3D,kFAAkF;AAClF,2EAA2E;AAC3E,QAAQ;AAER,UAAU;AACV,6EAA6E;AAC7E,uCAAuC;AACvC,kCAAkC;AAClC,sDAAsD;AACtD,iBAAiB;AACjB,qBAAqB;AACrB,qCAAqC;AACrC,aAAa;AACb,+BAA+B;AAC/B,6BAA6B;AAC7B,uGAAuG;AACvG,eAAe;AACf,YAAY;AACZ,wEAAwE;AACxE,uBAAuB;AACvB,wFAAwF;AACxF,aAAa;AACb,UAAU;AACV,UAAU;AACV,gBAAgB;AAChB,uBAAuB;AACvB,MAAM;AACN,IAAI;AAEJ,wDAAwD;AACxD,4BAA4B;AAC5B,0BAA0B;AAC1B,uBAAuB;AACvB,QAAQ;AACR,IAAI"}
|
|
@@ -29,6 +29,12 @@ export declare class ChargingProcessesStore extends IMateStore<ChargingProcesses
|
|
|
29
29
|
/** Bulk reset = delete every state row (matching single-row resetState); returns rows deleted. */
|
|
30
30
|
resetAllStates(tx?: SqlTx): Promise<number>;
|
|
31
31
|
incrementStateFailed(processId: ChargingProcessesId, tx?: SqlTx): Promise<number>;
|
|
32
|
+
/**
|
|
33
|
+
* Best-effort match of a CSV row to a TeslaMate charging_processes.id by
|
|
34
|
+
* VIN + start time (Supercharger session start vs. logged start can differ
|
|
35
|
+
* by a couple of minutes). Adjust the tolerance to taste.
|
|
36
|
+
*/
|
|
37
|
+
lookupChargingProcessId(vin: string, chargeStart: Date, tx?: SqlTx): Promise<number | null>;
|
|
32
38
|
}
|
|
33
39
|
export declare const chargingProcessesStore: () => ChargingProcessesStore;
|
|
34
40
|
//# sourceMappingURL=ChargingProcessesStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChargingProcessesStore.d.ts","sourceRoot":"","sources":["../../src/store/ChargingProcessesStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAChC,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAO,KAAK,KAAK,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,KAAK,EACV,0BAA0B,EAC1B,uBAAuB,EACxB,MAAM,mCAAmC,CAAC;AAG3C;;;;;;;;GAQG;AACH,qBAAa,sBAAuB,SAAQ,UAAU,CACpD,mBAAmB,EACnB,iBAAiB,EACjB,4BAA4B,EAC5B,wBAAwB,CACzB;IACC,SAAgB,WAAW,EAAE,MAAM,CAAiC;;IAUvD,kBAAkB,CAC7B,EAAE,GAAE,KAAa,GAChB,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAuBxB,WAAW,CACtB,SAAS,EAAE,mBAAmB,EAC9B,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,EAAE,GAAE,KAAa,GAChB,OAAO,CAAC,iBAAiB,CAAC;IAQhB,QAAQ,CACnB,SAAS,EAAE,mBAAmB,EAC9B,EAAE,GAAE,KAAa,GAChB,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC;IAO9B,UAAU,CACrB,SAAS,EAAE,mBAAmB,EAC9B,EAAE,GAAE,KAAa,GAChB,OAAO,CAAC,IAAI,CAAC;IAIhB;;;;OAIG;IACU,eAAe,CAC1B,SAAS,EAAE,MAAM,EACjB,cAAc,UAAQ,EACtB,EAAE,GAAE,KAAa,GAChB,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAWxC,iFAAiF;IACpE,kBAAkB,CAC7B,QAAQ,EAAE,0BAA0B,EAAE,EACtC,EAAE,GAAE,KAAa,GAChB,OAAO,CAAC,IAAI,CAAC;IAMhB,kGAAkG;IACrF,cAAc,CAAC,EAAE,GAAE,KAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAKlD,oBAAoB,CAC/B,SAAS,EAAE,mBAAmB,EAC9B,EAAE,GAAE,KAAa,GAChB,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ChargingProcessesStore.d.ts","sourceRoot":"","sources":["../../src/store/ChargingProcessesStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAChC,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAO,KAAK,KAAK,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,KAAK,EACV,0BAA0B,EAC1B,uBAAuB,EACxB,MAAM,mCAAmC,CAAC;AAG3C;;;;;;;;GAQG;AACH,qBAAa,sBAAuB,SAAQ,UAAU,CACpD,mBAAmB,EACnB,iBAAiB,EACjB,4BAA4B,EAC5B,wBAAwB,CACzB;IACC,SAAgB,WAAW,EAAE,MAAM,CAAiC;;IAUvD,kBAAkB,CAC7B,EAAE,GAAE,KAAa,GAChB,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAuBxB,WAAW,CACtB,SAAS,EAAE,mBAAmB,EAC9B,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,EAAE,GAAE,KAAa,GAChB,OAAO,CAAC,iBAAiB,CAAC;IAQhB,QAAQ,CACnB,SAAS,EAAE,mBAAmB,EAC9B,EAAE,GAAE,KAAa,GAChB,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC;IAO9B,UAAU,CACrB,SAAS,EAAE,mBAAmB,EAC9B,EAAE,GAAE,KAAa,GAChB,OAAO,CAAC,IAAI,CAAC;IAIhB;;;;OAIG;IACU,eAAe,CAC1B,SAAS,EAAE,MAAM,EACjB,cAAc,UAAQ,EACtB,EAAE,GAAE,KAAa,GAChB,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAWxC,iFAAiF;IACpE,kBAAkB,CAC7B,QAAQ,EAAE,0BAA0B,EAAE,EACtC,EAAE,GAAE,KAAa,GAChB,OAAO,CAAC,IAAI,CAAC;IAMhB,kGAAkG;IACrF,cAAc,CAAC,EAAE,GAAE,KAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAKlD,oBAAoB,CAC/B,SAAS,EAAE,mBAAmB,EAC9B,EAAE,GAAE,KAAa,GAChB,OAAO,CAAC,MAAM,CAAC;IAYlB;;;;OAIG;IACU,uBAAuB,CAClC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,IAAI,EACjB,EAAE,GAAE,KAAa,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAY1B;AAGD,eAAO,MAAM,sBAAsB,8BACQ,CAAC"}
|
|
@@ -84,6 +84,23 @@ export class ChargingProcessesStore extends IMateStore {
|
|
|
84
84
|
`;
|
|
85
85
|
return row.failure_count;
|
|
86
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Best-effort match of a CSV row to a TeslaMate charging_processes.id by
|
|
89
|
+
* VIN + start time (Supercharger session start vs. logged start can differ
|
|
90
|
+
* by a couple of minutes). Adjust the tolerance to taste.
|
|
91
|
+
*/
|
|
92
|
+
async lookupChargingProcessId(vin, chargeStart, tx = sql()) {
|
|
93
|
+
const rows = await tx `
|
|
94
|
+
SELECT cp.id
|
|
95
|
+
FROM charging_processes cp
|
|
96
|
+
INNER JOIN cars c ON c.id = cp.car_id
|
|
97
|
+
WHERE c.vin = ${vin}
|
|
98
|
+
AND cp.start_date BETWEEN ${chargeStart}::timestamptz - interval '15 minutes'
|
|
99
|
+
AND ${chargeStart}::timestamptz + interval '15 minutes'
|
|
100
|
+
ORDER BY abs(extract(epoch FROM cp.start_date - ${chargeStart}::timestamptz))
|
|
101
|
+
LIMIT 1`;
|
|
102
|
+
return rows[0]?.id ?? null;
|
|
103
|
+
}
|
|
87
104
|
}
|
|
88
105
|
let _store = null;
|
|
89
106
|
export const chargingProcessesStore = () => (_store ??= new ChargingProcessesStore());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChargingProcessesStore.js","sourceRoot":"","sources":["../../src/store/ChargingProcessesStore.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,GAOzB,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAc,MAAM,SAAS,CAAC;AAO1C;;;;;;;;GAQG;AACH,MAAM,OAAO,sBAAuB,SAAQ,UAK3C;IACiB,WAAW,GAAW,6BAA6B,CAAC;IAEpE;QACE,KAAK,CACH,oBAAoB,EACpB,4BAA4B,EAC5B,wBAAwB,CACzB,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAC7B,KAAY,GAAG,EAAE;QAEjB,OAAO,MAAM,EAAE,CAA2B;;;;;;;;;;;;;;;;;;;uCAmBP,CAAC;IACtC,CAAC;IAEM,KAAK,CAAC,WAAW,CACtB,SAA8B,EAC9B,IAAmB,EACnB,KAAY,GAAG,EAAE;QAEjB,OAAO,MAAM,IAAI,CAAC,MAAM,CACtB,SAAS,EACT,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,EACpD,EAAE,CACH,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,QAAQ,CACnB,SAA8B,EAC9B,KAAY,GAAG,EAAE;QAEjB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAErB,iBAAiB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,kCAAkC,SAAS,EAAE,CAAC;QACpF,OAAO,GAAG,IAAI,IAAI,CAAC;IACrB,CAAC;IAEM,KAAK,CAAC,UAAU,CACrB,SAA8B,EAC9B,KAAY,GAAG,EAAE;QAEjB,MAAM,EAAE,CAAA,eAAe,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,kCAAkC,SAAS,EAAE,CAAC;IAC3F,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,eAAe,CAC1B,SAAiB,EACjB,cAAc,GAAG,KAAK,EACtB,KAAY,GAAG,EAAE;QAEjB,OAAO,MAAM,EAAE,CAA8B;;eAElC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;;mCAEA,SAAS;UAClC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAA,mCAAmC,CAAC,CAAC,CAAC,EAAE,CAAA,EAAE;;KAElE,CAAC;IACJ,CAAC;IAED,iFAAiF;IAC1E,KAAK,CAAC,kBAAkB,CAC7B,QAAsC,EACtC,KAAY,GAAG,EAAE;QAEjB,MAAM,EAAE,CAAA,UAAU,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;;uBAEnB,QAA+B,aAAa,CAAC;IAClE,CAAC;IAED,kGAAkG;IAC3F,KAAK,CAAC,cAAc,CAAC,KAAY,GAAG,EAAE;QAC3C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAA,eAAe,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7D,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAEM,KAAK,CAAC,oBAAoB,CAC/B,SAA8B,EAC9B,KAAY,GAAG,EAAE;QAEjB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAuB;oBAC7B,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;wDACgB,SAAS;;wCAEzB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;;;OAGrD,CAAC;QACJ,OAAO,GAAG,CAAC,aAAa,CAAC;IAC3B,CAAC;CACF;AAED,IAAI,MAAM,GAAkC,IAAI,CAAC;AACjD,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,EAAE,CACzC,CAAC,MAAM,KAAK,IAAI,sBAAsB,EAAE,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"ChargingProcessesStore.js","sourceRoot":"","sources":["../../src/store/ChargingProcessesStore.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,GAOzB,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAc,MAAM,SAAS,CAAC;AAO1C;;;;;;;;GAQG;AACH,MAAM,OAAO,sBAAuB,SAAQ,UAK3C;IACiB,WAAW,GAAW,6BAA6B,CAAC;IAEpE;QACE,KAAK,CACH,oBAAoB,EACpB,4BAA4B,EAC5B,wBAAwB,CACzB,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAC7B,KAAY,GAAG,EAAE;QAEjB,OAAO,MAAM,EAAE,CAA2B;;;;;;;;;;;;;;;;;;;uCAmBP,CAAC;IACtC,CAAC;IAEM,KAAK,CAAC,WAAW,CACtB,SAA8B,EAC9B,IAAmB,EACnB,KAAY,GAAG,EAAE;QAEjB,OAAO,MAAM,IAAI,CAAC,MAAM,CACtB,SAAS,EACT,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,EACpD,EAAE,CACH,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,QAAQ,CACnB,SAA8B,EAC9B,KAAY,GAAG,EAAE;QAEjB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAErB,iBAAiB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,kCAAkC,SAAS,EAAE,CAAC;QACpF,OAAO,GAAG,IAAI,IAAI,CAAC;IACrB,CAAC;IAEM,KAAK,CAAC,UAAU,CACrB,SAA8B,EAC9B,KAAY,GAAG,EAAE;QAEjB,MAAM,EAAE,CAAA,eAAe,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,kCAAkC,SAAS,EAAE,CAAC;IAC3F,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,eAAe,CAC1B,SAAiB,EACjB,cAAc,GAAG,KAAK,EACtB,KAAY,GAAG,EAAE;QAEjB,OAAO,MAAM,EAAE,CAA8B;;eAElC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;;mCAEA,SAAS;UAClC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAA,mCAAmC,CAAC,CAAC,CAAC,EAAE,CAAA,EAAE;;KAElE,CAAC;IACJ,CAAC;IAED,iFAAiF;IAC1E,KAAK,CAAC,kBAAkB,CAC7B,QAAsC,EACtC,KAAY,GAAG,EAAE;QAEjB,MAAM,EAAE,CAAA,UAAU,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;;uBAEnB,QAA+B,aAAa,CAAC;IAClE,CAAC;IAED,kGAAkG;IAC3F,KAAK,CAAC,cAAc,CAAC,KAAY,GAAG,EAAE;QAC3C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAA,eAAe,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7D,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAEM,KAAK,CAAC,oBAAoB,CAC/B,SAA8B,EAC9B,KAAY,GAAG,EAAE;QAEjB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAuB;oBAC7B,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;wDACgB,SAAS;;wCAEzB,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;;;OAGrD,CAAC;QACJ,OAAO,GAAG,CAAC,aAAa,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,uBAAuB,CAClC,GAAW,EACX,WAAiB,EACjB,KAAY,GAAG,EAAE;QAEjB,MAAM,IAAI,GAAG,MAAM,EAAE,CAAkB;;;;qBAItB,GAAG;mCACW,WAAW;oCACV,WAAW;uDACQ,WAAW;aACrD,CAAC;QACV,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC;IAC7B,CAAC;CACF;AAED,IAAI,MAAM,GAAkC,IAAI,CAAC;AACjD,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,EAAE,CACzC,CAAC,MAAM,KAAK,IAAI,sBAAsB,EAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type PicInvoices, type PicInvoicesId, type PicInvoicesInitializer, type PicInvoicesMutator } from "@mxpicture/tesla-superchargers-generated/public";
|
|
2
|
+
import { IMateStore } from "./IMateStore.js";
|
|
3
|
+
/**
|
|
4
|
+
* Access to TeslaMate's `pic_invoices` table. The helpers here
|
|
5
|
+
* ({@link PicInvoicesStore.getUnpricedCharges},
|
|
6
|
+
* {@link PicInvoicesStore.updatePrice}) will back the planned charge-cost
|
|
7
|
+
* backfill; nothing calls them yet. The backfill's guardrails, once wired up:
|
|
8
|
+
* only charges matched to one of our priced Superchargers, and only rows where
|
|
9
|
+
* `cost IS NULL` — an existing cost (TeslaMate's or the user's) is never
|
|
10
|
+
* overwritten.
|
|
11
|
+
*/
|
|
12
|
+
export declare class PicInvoicesStore extends IMateStore<PicInvoicesId, PicInvoices, PicInvoicesInitializer, PicInvoicesMutator> {
|
|
13
|
+
constructor();
|
|
14
|
+
}
|
|
15
|
+
export declare const picInvoicesStore: () => PicInvoicesStore;
|
|
16
|
+
//# sourceMappingURL=PicInvoicesStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PicInvoicesStore.d.ts","sourceRoot":"","sources":["../../src/store/PicInvoicesStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACxB,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,SAAQ,UAAU,CAC9C,aAAa,EACb,WAAW,EACX,sBAAsB,EACtB,kBAAkB,CACnB;;CAIA;AAGD,eAAO,MAAM,gBAAgB,wBAA4C,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { picInvoicesInitializer, picInvoicesMutator, } from "@mxpicture/tesla-superchargers-generated/public";
|
|
2
|
+
import { IMateStore } from "./IMateStore.js";
|
|
3
|
+
/**
|
|
4
|
+
* Access to TeslaMate's `pic_invoices` table. The helpers here
|
|
5
|
+
* ({@link PicInvoicesStore.getUnpricedCharges},
|
|
6
|
+
* {@link PicInvoicesStore.updatePrice}) will back the planned charge-cost
|
|
7
|
+
* backfill; nothing calls them yet. The backfill's guardrails, once wired up:
|
|
8
|
+
* only charges matched to one of our priced Superchargers, and only rows where
|
|
9
|
+
* `cost IS NULL` — an existing cost (TeslaMate's or the user's) is never
|
|
10
|
+
* overwritten.
|
|
11
|
+
*/
|
|
12
|
+
export class PicInvoicesStore extends IMateStore {
|
|
13
|
+
constructor() {
|
|
14
|
+
super("pic_invoices", picInvoicesInitializer, picInvoicesMutator);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
let _store = null;
|
|
18
|
+
export const picInvoicesStore = () => (_store ??= new PicInvoicesStore());
|
|
19
|
+
//# sourceMappingURL=PicInvoicesStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PicInvoicesStore.js","sourceRoot":"","sources":["../../src/store/PicInvoicesStore.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,kBAAkB,GAKnB,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;;;;GAQG;AACH,MAAM,OAAO,gBAAiB,SAAQ,UAKrC;IACC;QACE,KAAK,CAAC,cAAc,EAAE,sBAAsB,EAAE,kBAAkB,CAAC,CAAC;IACpE,CAAC;CACF;AAED,IAAI,MAAM,GAA4B,IAAI,CAAC;AAC3C,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC,CAAC,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC,CAAC"}
|
package/dist/store/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export * from "./GeofencesStore.js";
|
|
|
3
3
|
export * from "./IFailableStore.js";
|
|
4
4
|
export * from "./IMateStore.js";
|
|
5
5
|
export * from "./PicChargersStore.js";
|
|
6
|
+
export * from "./PicInvoicesStore.js";
|
|
6
7
|
export * from "./PicPricebooksStore.js";
|
|
7
8
|
export * from "./PicSlugsStore.js";
|
|
8
9
|
export * from "./db.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AACA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AACA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
|
package/dist/store/index.js
CHANGED
|
@@ -4,6 +4,7 @@ export * from "./GeofencesStore.js";
|
|
|
4
4
|
export * from "./IFailableStore.js";
|
|
5
5
|
export * from "./IMateStore.js";
|
|
6
6
|
export * from "./PicChargersStore.js";
|
|
7
|
+
export * from "./PicInvoicesStore.js";
|
|
7
8
|
export * from "./PicPricebooksStore.js";
|
|
8
9
|
export * from "./PicSlugsStore.js";
|
|
9
10
|
export * from "./db.js";
|
package/dist/store/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,cAAc,6BAA6B,CAAC;AAC5C,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transform/index.ts"],"names":[],"mappings":"AACA,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transform/index.ts"],"names":[],"mappings":"AACA,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC"}
|
package/dist/transform/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// This file is auto-generated by build-cli. Do not edit manually.
|
|
2
2
|
export * from "./chargers.transform.js";
|
|
3
3
|
export * from "./common.transform.js";
|
|
4
|
+
export * from "./invoices.transform.js";
|
|
4
5
|
export * from "./pricebooks.transform.js";
|
|
5
6
|
export * from "./slugs.transform.js";
|
|
6
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transform/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transform/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { PicInvoicesInitializer } from "@mxpicture/tesla-superchargers-generated/public";
|
|
2
|
+
import type { Meta } from "../types/client.types.js";
|
|
3
|
+
import type { Invoice } from "../types/invoice.types.js";
|
|
4
|
+
export declare const invoiceToInitializer: ({ invoice, meta, }: {
|
|
5
|
+
invoice: Invoice;
|
|
6
|
+
/** required so every row of a run shares one fetched_at/last_fetch_uuid */
|
|
7
|
+
meta: Meta;
|
|
8
|
+
}) => PicInvoicesInitializer;
|
|
9
|
+
//# sourceMappingURL=invoices.transform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invoices.transform.d.ts","sourceRoot":"","sources":["../../src/transform/invoices.transform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EAEvB,MAAM,iDAAiD,CAAC;AAEzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD,eAAO,MAAM,oBAAoB,GAAI,oBAGlC;IACD,OAAO,EAAE,OAAO,CAAC;IACjB,2EAA2E;IAC3E,IAAI,EAAE,IAAI,CAAC;CACZ,KAAG,sBA+BH,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { removeUndefined } from "./common.transform.js";
|
|
2
|
+
export const invoiceToInitializer = ({ invoice, meta, }) => {
|
|
3
|
+
const result = {
|
|
4
|
+
fetched_at: meta.fetched_at,
|
|
5
|
+
last_fetch_uuid: meta.last_fetch_uuid,
|
|
6
|
+
charging_processes_id: null,
|
|
7
|
+
charge_start_date_time: invoice.chargeStartDateTime,
|
|
8
|
+
name: invoice.name,
|
|
9
|
+
vin: invoice.vin,
|
|
10
|
+
model: invoice.model,
|
|
11
|
+
country: invoice.country,
|
|
12
|
+
site_location_name: invoice.siteLocationName,
|
|
13
|
+
description: invoice.description,
|
|
14
|
+
ucom: invoice.ucom,
|
|
15
|
+
quantity_base: invoice.quantityBase.toString(),
|
|
16
|
+
quantity_tier1: invoice.quantityTier1?.toString() ?? null,
|
|
17
|
+
quantity_tier2: invoice.quantityTier2?.toString() ?? null,
|
|
18
|
+
quantity_tier3: invoice.quantityTier3?.toString() ?? null,
|
|
19
|
+
quantity_tier4: invoice.quantityTier4?.toString() ?? null,
|
|
20
|
+
invoice_number: invoice.invoiceNumber,
|
|
21
|
+
unit_cost_base: invoice.unitCostBase.toString(),
|
|
22
|
+
unit_cost_tier1: invoice.unitCostTier1?.toString() ?? null,
|
|
23
|
+
unit_cost_tier2: invoice.unitCostTier2?.toString() ?? null,
|
|
24
|
+
unit_cost_tier3: invoice.unitCostTier3?.toString() ?? null,
|
|
25
|
+
unit_cost_tier4: invoice.unitCostTier4?.toString() ?? null,
|
|
26
|
+
vat: invoice.vat.toString(),
|
|
27
|
+
total_exc_vat: invoice.totalExcVat.toString(),
|
|
28
|
+
total_inc_vat: invoice.totalIncVat.toString(),
|
|
29
|
+
status: invoice.status,
|
|
30
|
+
invoice: invoice.invoice,
|
|
31
|
+
};
|
|
32
|
+
return removeUndefined(result);
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=invoices.transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invoices.transform.js","sourceRoot":"","sources":["../../src/transform/invoices.transform.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIxD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,OAAO,EACP,IAAI,GAKL,EAA0B,EAAE;IAC3B,MAAM,MAAM,GAAiC;QAC3C,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,qBAAqB,EAAE,IAAI;QAC3B,sBAAsB,EAAE,OAAO,CAAC,mBAAmB;QACnD,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,kBAAkB,EAAE,OAAO,CAAC,gBAAgB;QAC5C,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,aAAa,EAAE,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE;QAC9C,cAAc,EAAE,OAAO,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,IAAI;QACzD,cAAc,EAAE,OAAO,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,IAAI;QACzD,cAAc,EAAE,OAAO,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,IAAI;QACzD,cAAc,EAAE,OAAO,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,IAAI;QACzD,cAAc,EAAE,OAAO,CAAC,aAAa;QACrC,cAAc,EAAE,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE;QAC/C,eAAe,EAAE,OAAO,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,IAAI;QAC1D,eAAe,EAAE,OAAO,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,IAAI;QAC1D,eAAe,EAAE,OAAO,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,IAAI;QAC1D,eAAe,EAAE,OAAO,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,IAAI;QAC1D,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE;QAC3B,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE;QAC7C,aAAa,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE;QAC7C,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC;IACF,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type RequiredKeys<T> = {
|
|
2
|
+
[K in keyof T]-?: object extends Pick<T, K> ? never : K;
|
|
3
|
+
}[keyof T];
|
|
4
|
+
export type OptionalKeys<T> = {
|
|
5
|
+
[K in keyof T]-?: object extends Pick<T, K> ? K : never;
|
|
6
|
+
}[keyof T];
|
|
7
|
+
/** Flattens the intersection into one clean object type for tooltips */
|
|
8
|
+
export type Expand<T> = {
|
|
9
|
+
[K in keyof T]: T[K];
|
|
10
|
+
} & {};
|
|
11
|
+
/**
|
|
12
|
+
* Makes all keys required. Previously-optional keys keep `undefined`
|
|
13
|
+
* in their value type, required keys stay untouched.
|
|
14
|
+
* `prop?: string | null` -> `prop: string | null | undefined`
|
|
15
|
+
* `prop: string` -> `prop: string`
|
|
16
|
+
*/
|
|
17
|
+
export type Strictify<T> = Expand<{
|
|
18
|
+
[K in RequiredKeys<T>]: T[K];
|
|
19
|
+
} & {
|
|
20
|
+
[K in OptionalKeys<T>]: T[K] | undefined;
|
|
21
|
+
}>;
|
|
22
|
+
//# sourceMappingURL=common.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.types.d.ts","sourceRoot":"","sources":["../../src/types/common.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;KAC3B,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;CACxD,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;KAC3B,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CACxD,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX,yEAAyE;AACzE,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,EAAE,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,MAAM,CAC/B;KAAG,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG;KAChC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;CACzC,CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.types.js","sourceRoot":"","sources":["../../src/types/common.types.ts"],"names":[],"mappings":""}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC"}
|
package/dist/types/index.js
CHANGED
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { PicInvoicesId } from "@mxpicture/tesla-superchargers-generated/public";
|
|
2
|
+
import type { Strictify } from "./common.types.js";
|
|
3
|
+
export interface Invoice {
|
|
4
|
+
id?: PicInvoicesId;
|
|
5
|
+
fetched_at: Date;
|
|
6
|
+
last_fetch_uuid: string;
|
|
7
|
+
chargingProcessesId?: number | null;
|
|
8
|
+
chargeStartDateTime: Date;
|
|
9
|
+
name?: string | null;
|
|
10
|
+
vin: string;
|
|
11
|
+
model?: string | null;
|
|
12
|
+
country: string;
|
|
13
|
+
siteLocationName: string;
|
|
14
|
+
description?: string | null;
|
|
15
|
+
ucom: string;
|
|
16
|
+
quantityBase: number;
|
|
17
|
+
quantityTier1?: number | null;
|
|
18
|
+
quantityTier2?: number | null;
|
|
19
|
+
quantityTier3?: number | null;
|
|
20
|
+
quantityTier4?: number | null;
|
|
21
|
+
invoiceNumber: string;
|
|
22
|
+
unitCostBase: number;
|
|
23
|
+
unitCostTier1?: number | null;
|
|
24
|
+
unitCostTier2?: number | null;
|
|
25
|
+
unitCostTier3?: number | null;
|
|
26
|
+
unitCostTier4?: number | null;
|
|
27
|
+
vat: number;
|
|
28
|
+
totalExcVat: number;
|
|
29
|
+
totalIncVat: number;
|
|
30
|
+
status: string | null;
|
|
31
|
+
invoice: string | null;
|
|
32
|
+
}
|
|
33
|
+
export type InvoiceStrict = Strictify<Invoice>;
|
|
34
|
+
//# sourceMappingURL=invoice.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invoice.types.d.ts","sourceRoot":"","sources":["../../src/types/invoice.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AACrF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,WAAW,OAAO;IACtB,EAAE,CAAC,EAAE,aAAa,CAAC;IACnB,UAAU,EAAE,IAAI,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,mBAAmB,EAAE,IAAI,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invoice.types.js","sourceRoot":"","sources":["../../src/types/invoice.types.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mxpicture/tesla-superchargers-mate",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "TeslaMate integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "MXPicture",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"access": "public"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@mxpicture/tesla-superchargers-generated": "^0.1.
|
|
51
|
+
"@mxpicture/tesla-superchargers-generated": "^0.1.4",
|
|
52
52
|
"postgres": "^3.4.9",
|
|
53
53
|
"short-uuid": "^6.0.3",
|
|
54
54
|
"zod": "^4.3.6"
|