@texturehq/device 1.3.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.
Files changed (182) hide show
  1. package/README.md +110 -0
  2. package/dist/common/constants.d.ts +3 -0
  3. package/dist/common/constants.d.ts.map +1 -0
  4. package/dist/common/constants.js +6 -0
  5. package/dist/common/constants.js.map +1 -0
  6. package/dist/common/exceptions.d.ts +5 -0
  7. package/dist/common/exceptions.d.ts.map +1 -0
  8. package/dist/common/exceptions.js +13 -0
  9. package/dist/common/exceptions.js.map +1 -0
  10. package/dist/common/logger.d.ts +2 -0
  11. package/dist/common/logger.d.ts.map +1 -0
  12. package/dist/common/logger.js +6 -0
  13. package/dist/common/logger.js.map +1 -0
  14. package/dist/common/supportLevel.d.ts +6 -0
  15. package/dist/common/supportLevel.d.ts.map +1 -0
  16. package/dist/common/supportLevel.js +14 -0
  17. package/dist/common/supportLevel.js.map +1 -0
  18. package/dist/common/utils/index.d.ts +2 -0
  19. package/dist/common/utils/index.d.ts.map +1 -0
  20. package/dist/common/utils/index.js +8 -0
  21. package/dist/common/utils/index.js.map +1 -0
  22. package/dist/common/utils/retryAxios.d.ts +18 -0
  23. package/dist/common/utils/retryAxios.d.ts.map +1 -0
  24. package/dist/common/utils/retryAxios.js +32 -0
  25. package/dist/common/utils/retryAxios.js.map +1 -0
  26. package/dist/deviceModel/entities.d.ts +211 -0
  27. package/dist/deviceModel/entities.d.ts.map +1 -0
  28. package/dist/deviceModel/entities.js +41 -0
  29. package/dist/deviceModel/entities.js.map +1 -0
  30. package/dist/deviceModel/getDeviceModel/index.d.ts +29 -0
  31. package/dist/deviceModel/getDeviceModel/index.d.ts.map +1 -0
  32. package/dist/deviceModel/getDeviceModel/index.js +50 -0
  33. package/dist/deviceModel/getDeviceModel/index.js.map +1 -0
  34. package/dist/deviceModel/getDeviceModel/response.interfaces.d.ts +95 -0
  35. package/dist/deviceModel/getDeviceModel/response.interfaces.d.ts.map +1 -0
  36. package/dist/deviceModel/getDeviceModel/response.interfaces.js +252 -0
  37. package/dist/deviceModel/getDeviceModel/response.interfaces.js.map +1 -0
  38. package/dist/deviceModel/getDeviceModel/test.fail.d.ts +2 -0
  39. package/dist/deviceModel/getDeviceModel/test.fail.d.ts.map +1 -0
  40. package/dist/deviceModel/getDeviceModel/test.fail.js +8 -0
  41. package/dist/deviceModel/getDeviceModel/test.fail.js.map +1 -0
  42. package/dist/deviceModel/getDeviceModel/test.success.d.ts +2 -0
  43. package/dist/deviceModel/getDeviceModel/test.success.d.ts.map +1 -0
  44. package/dist/deviceModel/getDeviceModel/test.success.js +8 -0
  45. package/dist/deviceModel/getDeviceModel/test.success.js.map +1 -0
  46. package/dist/deviceModel/getDeviceModelByManufacturerSlug/index.d.ts +36 -0
  47. package/dist/deviceModel/getDeviceModelByManufacturerSlug/index.d.ts.map +1 -0
  48. package/dist/deviceModel/getDeviceModelByManufacturerSlug/index.js +59 -0
  49. package/dist/deviceModel/getDeviceModelByManufacturerSlug/index.js.map +1 -0
  50. package/dist/deviceModel/getDeviceModelByManufacturerSlug/response.interfaces.d.ts +53 -0
  51. package/dist/deviceModel/getDeviceModelByManufacturerSlug/response.interfaces.d.ts.map +1 -0
  52. package/dist/deviceModel/getDeviceModelByManufacturerSlug/response.interfaces.js +210 -0
  53. package/dist/deviceModel/getDeviceModelByManufacturerSlug/response.interfaces.js.map +1 -0
  54. package/dist/deviceModel/getDeviceModelByManufacturerSlug/test.fail.d.ts +2 -0
  55. package/dist/deviceModel/getDeviceModelByManufacturerSlug/test.fail.d.ts.map +1 -0
  56. package/dist/deviceModel/getDeviceModelByManufacturerSlug/test.fail.js +8 -0
  57. package/dist/deviceModel/getDeviceModelByManufacturerSlug/test.fail.js.map +1 -0
  58. package/dist/deviceModel/getDeviceModelByManufacturerSlug/test.success.d.ts +2 -0
  59. package/dist/deviceModel/getDeviceModelByManufacturerSlug/test.success.d.ts.map +1 -0
  60. package/dist/deviceModel/getDeviceModelByManufacturerSlug/test.success.js +8 -0
  61. package/dist/deviceModel/getDeviceModelByManufacturerSlug/test.success.js.map +1 -0
  62. package/dist/deviceModel/getDeviceModels/index.d.ts +50 -0
  63. package/dist/deviceModel/getDeviceModels/index.d.ts.map +1 -0
  64. package/dist/deviceModel/getDeviceModels/index.js +60 -0
  65. package/dist/deviceModel/getDeviceModels/index.js.map +1 -0
  66. package/dist/deviceModel/getDeviceModels/response.interfaces.d.ts +95 -0
  67. package/dist/deviceModel/getDeviceModels/response.interfaces.d.ts.map +1 -0
  68. package/dist/deviceModel/getDeviceModels/response.interfaces.js +252 -0
  69. package/dist/deviceModel/getDeviceModels/response.interfaces.js.map +1 -0
  70. package/dist/deviceModel/getDeviceModels/test.success.d.ts +2 -0
  71. package/dist/deviceModel/getDeviceModels/test.success.d.ts.map +1 -0
  72. package/dist/deviceModel/getDeviceModels/test.success.js +11 -0
  73. package/dist/deviceModel/getDeviceModels/test.success.js.map +1 -0
  74. package/dist/deviceModel/index.d.ts +5 -0
  75. package/dist/deviceModel/index.d.ts.map +1 -0
  76. package/dist/deviceModel/index.js +21 -0
  77. package/dist/deviceModel/index.js.map +1 -0
  78. package/dist/deviceState/battery.d.ts +132 -0
  79. package/dist/deviceState/battery.d.ts.map +1 -0
  80. package/dist/deviceState/battery.js +81 -0
  81. package/dist/deviceState/battery.js.map +1 -0
  82. package/dist/deviceState/charger.d.ts +44 -0
  83. package/dist/deviceState/charger.d.ts.map +1 -0
  84. package/dist/deviceState/charger.js +34 -0
  85. package/dist/deviceState/charger.js.map +1 -0
  86. package/dist/deviceState/common.d.ts +50 -0
  87. package/dist/deviceState/common.d.ts.map +1 -0
  88. package/dist/deviceState/common.js +75 -0
  89. package/dist/deviceState/common.js.map +1 -0
  90. package/dist/deviceState/index.d.ts +7 -0
  91. package/dist/deviceState/index.d.ts.map +1 -0
  92. package/dist/deviceState/index.js +23 -0
  93. package/dist/deviceState/index.js.map +1 -0
  94. package/dist/deviceState/inverter.d.ts +79 -0
  95. package/dist/deviceState/inverter.d.ts.map +1 -0
  96. package/dist/deviceState/inverter.js +30 -0
  97. package/dist/deviceState/inverter.js.map +1 -0
  98. package/dist/deviceState/thermostat.d.ts +58 -0
  99. package/dist/deviceState/thermostat.d.ts.map +1 -0
  100. package/dist/deviceState/thermostat.js +51 -0
  101. package/dist/deviceState/thermostat.js.map +1 -0
  102. package/dist/deviceState/vehicle.d.ts +88 -0
  103. package/dist/deviceState/vehicle.d.ts.map +1 -0
  104. package/dist/deviceState/vehicle.js +72 -0
  105. package/dist/deviceState/vehicle.js.map +1 -0
  106. package/dist/deviceType/entities.d.ts +6 -0
  107. package/dist/deviceType/entities.d.ts.map +1 -0
  108. package/dist/deviceType/entities.js +14 -0
  109. package/dist/deviceType/entities.js.map +1 -0
  110. package/dist/deviceType/index.d.ts +2 -0
  111. package/dist/deviceType/index.d.ts.map +1 -0
  112. package/dist/deviceType/index.js +18 -0
  113. package/dist/deviceType/index.js.map +1 -0
  114. package/dist/index.d.ts +9 -0
  115. package/dist/index.d.ts.map +1 -0
  116. package/dist/index.js +25 -0
  117. package/dist/index.js.map +1 -0
  118. package/dist/manufacturer/entities.d.ts +124 -0
  119. package/dist/manufacturer/entities.d.ts.map +1 -0
  120. package/dist/manufacturer/entities.js +28 -0
  121. package/dist/manufacturer/entities.js.map +1 -0
  122. package/dist/manufacturer/getManufacturer/index.d.ts +34 -0
  123. package/dist/manufacturer/getManufacturer/index.d.ts.map +1 -0
  124. package/dist/manufacturer/getManufacturer/index.js +47 -0
  125. package/dist/manufacturer/getManufacturer/index.js.map +1 -0
  126. package/dist/manufacturer/getManufacturer/response.interfaces.d.ts +77 -0
  127. package/dist/manufacturer/getManufacturer/response.interfaces.d.ts.map +1 -0
  128. package/dist/manufacturer/getManufacturer/response.interfaces.js +234 -0
  129. package/dist/manufacturer/getManufacturer/response.interfaces.js.map +1 -0
  130. package/dist/manufacturer/getManufacturer/test.fail.d.ts +2 -0
  131. package/dist/manufacturer/getManufacturer/test.fail.d.ts.map +1 -0
  132. package/dist/manufacturer/getManufacturer/test.fail.js +8 -0
  133. package/dist/manufacturer/getManufacturer/test.fail.js.map +1 -0
  134. package/dist/manufacturer/getManufacturer/test.success.d.ts +2 -0
  135. package/dist/manufacturer/getManufacturer/test.success.d.ts.map +1 -0
  136. package/dist/manufacturer/getManufacturer/test.success.js +8 -0
  137. package/dist/manufacturer/getManufacturer/test.success.js.map +1 -0
  138. package/dist/manufacturer/getManufacturers/index.d.ts +51 -0
  139. package/dist/manufacturer/getManufacturers/index.d.ts.map +1 -0
  140. package/dist/manufacturer/getManufacturers/index.js +46 -0
  141. package/dist/manufacturer/getManufacturers/index.js.map +1 -0
  142. package/dist/manufacturer/getManufacturers/response.interfaces.d.ts +77 -0
  143. package/dist/manufacturer/getManufacturers/response.interfaces.d.ts.map +1 -0
  144. package/dist/manufacturer/getManufacturers/response.interfaces.js +242 -0
  145. package/dist/manufacturer/getManufacturers/response.interfaces.js.map +1 -0
  146. package/dist/manufacturer/getManufacturers/test.success.d.ts +2 -0
  147. package/dist/manufacturer/getManufacturers/test.success.d.ts.map +1 -0
  148. package/dist/manufacturer/getManufacturers/test.success.js +8 -0
  149. package/dist/manufacturer/getManufacturers/test.success.js.map +1 -0
  150. package/dist/manufacturer/index.d.ts +5 -0
  151. package/dist/manufacturer/index.d.ts.map +1 -0
  152. package/dist/manufacturer/index.js +21 -0
  153. package/dist/manufacturer/index.js.map +1 -0
  154. package/dist/manufacturer/parseManufacturer/index.d.ts +4 -0
  155. package/dist/manufacturer/parseManufacturer/index.d.ts.map +1 -0
  156. package/dist/manufacturer/parseManufacturer/index.js +42 -0
  157. package/dist/manufacturer/parseManufacturer/index.js.map +1 -0
  158. package/dist/metrics/aggregations.d.ts +5 -0
  159. package/dist/metrics/aggregations.d.ts.map +1 -0
  160. package/dist/metrics/aggregations.js +7 -0
  161. package/dist/metrics/aggregations.js.map +1 -0
  162. package/dist/metrics/groupBy.d.ts +5 -0
  163. package/dist/metrics/groupBy.d.ts.map +1 -0
  164. package/dist/metrics/groupBy.js +7 -0
  165. package/dist/metrics/groupBy.js.map +1 -0
  166. package/dist/metrics/index.d.ts +6 -0
  167. package/dist/metrics/index.d.ts.map +1 -0
  168. package/dist/metrics/index.js +22 -0
  169. package/dist/metrics/index.js.map +1 -0
  170. package/dist/metrics/range.d.ts +28 -0
  171. package/dist/metrics/range.d.ts.map +1 -0
  172. package/dist/metrics/range.js +138 -0
  173. package/dist/metrics/range.js.map +1 -0
  174. package/dist/metrics/units.d.ts +5 -0
  175. package/dist/metrics/units.d.ts.map +1 -0
  176. package/dist/metrics/units.js +31 -0
  177. package/dist/metrics/units.js.map +1 -0
  178. package/dist/metrics/window.d.ts +17 -0
  179. package/dist/metrics/window.d.ts.map +1 -0
  180. package/dist/metrics/window.js +28 -0
  181. package/dist/metrics/window.js.map +1 -0
  182. package/package.json +37 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/metrics/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./aggregations"), exports);
18
+ __exportStar(require("./groupBy"), exports);
19
+ __exportStar(require("./range"), exports);
20
+ __exportStar(require("./units"), exports);
21
+ __exportStar(require("./window"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/metrics/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,4CAA0B;AAC1B,0CAAwB;AACxB,0CAAwB;AACxB,2CAAyB"}
@@ -0,0 +1,28 @@
1
+ import { z } from "zod";
2
+ export declare const parseRelativeTimeIntoUnitAndScale: (relativeTime: string) => {
3
+ scale: number;
4
+ unit: string;
5
+ };
6
+ export declare const MetricQueryRangeSchema: z.ZodEffects<z.ZodObject<{
7
+ after: z.ZodOptional<z.ZodNullable<z.ZodDate>>;
8
+ before: z.ZodOptional<z.ZodNullable<z.ZodDate>>;
9
+ relative: z.ZodOptional<z.ZodNullable<z.ZodString>>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ after?: Date | null | undefined;
12
+ before?: Date | null | undefined;
13
+ relative?: string | null | undefined;
14
+ }, {
15
+ after?: Date | null | undefined;
16
+ before?: Date | null | undefined;
17
+ relative?: string | null | undefined;
18
+ }>, {
19
+ after?: Date | null | undefined;
20
+ before?: Date | null | undefined;
21
+ relative?: string | null | undefined;
22
+ }, {
23
+ after?: Date | null | undefined;
24
+ before?: Date | null | undefined;
25
+ relative?: string | null | undefined;
26
+ }>;
27
+ export type MetricQueryRange = z.infer<typeof MetricQueryRangeSchema>;
28
+ //# sourceMappingURL=range.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"range.d.ts","sourceRoot":"","sources":["../../src/metrics/range.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iCAAiC,iBAAkB,MAAM;;;CASrE,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;EA2H/B,CAAC;AACL,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MetricQueryRangeSchema = exports.parseRelativeTimeIntoUnitAndScale = void 0;
4
+ const zod_1 = require("zod");
5
+ const parseRelativeTimeIntoUnitAndScale = (relativeTime) => {
6
+ if (!relativeTime) {
7
+ throw new Error("Invalid relative time format provided");
8
+ }
9
+ const [scale, unit] = relativeTime.split(/(?<=\d)(?=[a-zA-Z])/);
10
+ if (!scale || !unit) {
11
+ throw new Error("Invalid relative time format provided");
12
+ }
13
+ return { scale: Number.parseInt(scale), unit };
14
+ };
15
+ exports.parseRelativeTimeIntoUnitAndScale = parseRelativeTimeIntoUnitAndScale;
16
+ exports.MetricQueryRangeSchema = zod_1.z
17
+ .object({
18
+ after: zod_1.z.coerce.date().nullish(),
19
+ before: zod_1.z.coerce.date().nullish(),
20
+ relative: zod_1.z.string().nullish(),
21
+ })
22
+ .superRefine((arr, context) => {
23
+ if (arr.after && arr.before) {
24
+ if (arr.after > arr.before) {
25
+ context.addIssue({
26
+ path: context.path,
27
+ code: "invalid_date",
28
+ message: 'After date must be before "before" date',
29
+ fatal: true,
30
+ });
31
+ return zod_1.z.NEVER;
32
+ }
33
+ }
34
+ if (!arr.after && !arr.relative) {
35
+ context.addIssue({
36
+ path: context.path,
37
+ code: "invalid_date",
38
+ message: "Must provide either start or relative",
39
+ fatal: true,
40
+ });
41
+ return zod_1.z.NEVER;
42
+ }
43
+ const relativeOffset = arr.relative;
44
+ if (relativeOffset) {
45
+ // Validate relative time stamp using regex and supporting the following formats:
46
+ // Nh, Nd, Nw, Nm, Ny, where N is caped to a reasonable number with y's cap at 2, w at 52, d at 31, h at 24, m at 60
47
+ const relativeTimeRegex = /^(\d{1,2}[hwdmMy])$/;
48
+ if (!relativeTimeRegex.test(relativeOffset)) {
49
+ context.addIssue({
50
+ path: context.path,
51
+ code: "invalid_date",
52
+ message: "Relative time must be in the format of Nh, Nd, Nw, Nm, Ny",
53
+ fatal: true,
54
+ });
55
+ return zod_1.z.NEVER;
56
+ }
57
+ //Extract the scale factor and the unit
58
+ const { scale, unit } = (0, exports.parseRelativeTimeIntoUnitAndScale)(relativeOffset);
59
+ switch (unit) {
60
+ case "m":
61
+ if (scale > 60) {
62
+ context.addIssue({
63
+ path: context.path,
64
+ code: "invalid_date",
65
+ message: "Relative time must be less or equal to 60 minutes",
66
+ fatal: true,
67
+ });
68
+ return zod_1.z.NEVER;
69
+ }
70
+ break;
71
+ case "h":
72
+ if (scale > 24) {
73
+ context.addIssue({
74
+ path: context.path,
75
+ code: "invalid_date",
76
+ message: "Relative time must be less than or equal to 24 hours",
77
+ fatal: true,
78
+ });
79
+ return zod_1.z.NEVER;
80
+ }
81
+ break;
82
+ case "d":
83
+ if (scale > 31) {
84
+ context.addIssue({
85
+ path: context.path,
86
+ code: "invalid_date",
87
+ message: "Relative time must be less than or equal to 31 days",
88
+ fatal: true,
89
+ });
90
+ return zod_1.z.NEVER;
91
+ }
92
+ break;
93
+ case "w":
94
+ if (scale > 52) {
95
+ context.addIssue({
96
+ path: context.path,
97
+ code: "invalid_date",
98
+ message: "Relative time must be less than or equal to 52 weeks",
99
+ fatal: true,
100
+ });
101
+ return zod_1.z.NEVER;
102
+ }
103
+ break;
104
+ case "M":
105
+ if (scale > 12) {
106
+ context.addIssue({
107
+ path: context.path,
108
+ code: "invalid_date",
109
+ message: "Relative time must be less than or equal to 12 months",
110
+ fatal: true,
111
+ });
112
+ return zod_1.z.NEVER;
113
+ }
114
+ break;
115
+ case "y":
116
+ if (scale > 2) {
117
+ context.addIssue({
118
+ path: context.path,
119
+ code: "invalid_date",
120
+ message: "Relative time must be less than or equal to 2 years",
121
+ fatal: true,
122
+ });
123
+ return zod_1.z.NEVER;
124
+ }
125
+ break;
126
+ default:
127
+ context.addIssue({
128
+ path: context.path,
129
+ code: "invalid_date",
130
+ message: "Relative time must be in the format of Nh, Nd, Nw, Nm, NM, Ny",
131
+ fatal: true,
132
+ });
133
+ return zod_1.z.NEVER;
134
+ }
135
+ }
136
+ return true;
137
+ });
138
+ //# sourceMappingURL=range.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"range.js","sourceRoot":"","sources":["../../src/metrics/range.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { z } from "zod";
2
+ export declare const MetricUnits: readonly ["AMPERE", "CELSIUS", "DAY", "FAHRENHEIT", "HOUR", "KILOMETER", "KILOMETER_PER_HOUR", "METER", "MILE", "MILE_PER_HOUR", "MINUTE", "MONTH", "PERCENT", "POUNDS_CO2", "SECOND", "STRING", "TIMESTAMP", "UNIT", "VOLT", "WATT", "WATT_HOURS", "WEEK", "YEAR"];
3
+ export declare const MetricUnitEnum: z.ZodEnum<["AMPERE", "CELSIUS", "DAY", "FAHRENHEIT", "HOUR", "KILOMETER", "KILOMETER_PER_HOUR", "METER", "MILE", "MILE_PER_HOUR", "MINUTE", "MONTH", "PERCENT", "POUNDS_CO2", "SECOND", "STRING", "TIMESTAMP", "UNIT", "VOLT", "WATT", "WATT_HOURS", "WEEK", "YEAR"]>;
4
+ export type MetricUnit = z.infer<typeof MetricUnitEnum>;
5
+ //# sourceMappingURL=units.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"units.d.ts","sourceRoot":"","sources":["../../src/metrics/units.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,WAAW,qQAwBd,CAAC;AAEX,eAAO,MAAM,cAAc,uQAAsB,CAAC;AAClD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MetricUnitEnum = exports.MetricUnits = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.MetricUnits = [
6
+ "AMPERE",
7
+ "CELSIUS",
8
+ "DAY",
9
+ "FAHRENHEIT",
10
+ "HOUR",
11
+ "KILOMETER",
12
+ "KILOMETER_PER_HOUR",
13
+ "METER",
14
+ "MILE",
15
+ "MILE_PER_HOUR",
16
+ "MINUTE",
17
+ "MONTH",
18
+ "PERCENT",
19
+ "POUNDS_CO2",
20
+ "SECOND",
21
+ "STRING",
22
+ "TIMESTAMP",
23
+ "UNIT",
24
+ "VOLT",
25
+ "WATT",
26
+ "WATT_HOURS",
27
+ "WEEK",
28
+ "YEAR",
29
+ ];
30
+ exports.MetricUnitEnum = zod_1.z.enum(exports.MetricUnits);
31
+ //# sourceMappingURL=units.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"units.js","sourceRoot":"","sources":["../../src/metrics/units.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAEX,QAAA,WAAW,GAAG;IACzB,QAAQ;IACR,SAAS;IACT,KAAK;IACL,YAAY;IACZ,MAAM;IACN,WAAW;IACX,oBAAoB;IACpB,OAAO;IACP,MAAM;IACN,eAAe;IACf,QAAQ;IACR,OAAO;IACP,SAAS;IACT,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,MAAM;IACN,MAAM;IACN,MAAM;IACN,YAAY;IACZ,MAAM;IACN,MAAM;CACE,CAAC;AAEE,QAAA,cAAc,GAAG,OAAC,CAAC,IAAI,CAAC,mBAAW,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { z } from "zod";
2
+ export declare const isTimezoneValid: (timeZone: string) => boolean;
3
+ export declare const MetricQueryWindowSizes: readonly ["HOUR", "DAY", "WEEK", "MONTH", "YEAR"];
4
+ export declare const MetricQueryWindowSizeEnum: z.ZodEnum<["HOUR", "DAY", "WEEK", "MONTH", "YEAR"]>;
5
+ export type MetricQueryWindowSize = z.infer<typeof MetricQueryWindowSizeEnum>;
6
+ export declare const MetricQueryWindowSchema: z.ZodObject<{
7
+ size: z.ZodEnum<["HOUR", "DAY", "WEEK", "MONTH", "YEAR"]>;
8
+ timeZone: z.ZodEffects<z.ZodOptional<z.ZodNullable<z.ZodString>>, string | null | undefined, string | null | undefined>;
9
+ }, "strip", z.ZodTypeAny, {
10
+ size: "DAY" | "HOUR" | "MONTH" | "WEEK" | "YEAR";
11
+ timeZone?: string | null | undefined;
12
+ }, {
13
+ size: "DAY" | "HOUR" | "MONTH" | "WEEK" | "YEAR";
14
+ timeZone?: string | null | undefined;
15
+ }>;
16
+ export type MetricQueryWindow = z.infer<typeof MetricQueryWindowSchema>;
17
+ //# sourceMappingURL=window.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"window.d.ts","sourceRoot":"","sources":["../../src/metrics/window.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe,aAAc,MAAM,KAAG,OAWlD,CAAC;AAEF,eAAO,MAAM,sBAAsB,mDAAoD,CAAC;AACxF,eAAO,MAAM,yBAAyB,qDAAiC,CAAC;AACxE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE9E,eAAO,MAAM,uBAAuB;;;;;;;;;EAMlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MetricQueryWindowSchema = exports.MetricQueryWindowSizeEnum = exports.MetricQueryWindowSizes = exports.isTimezoneValid = void 0;
4
+ const zod_1 = require("zod");
5
+ const isTimezoneValid = (timeZone) => {
6
+ try {
7
+ if (!Intl || !Intl.DateTimeFormat().resolvedOptions().timeZone) {
8
+ return false;
9
+ }
10
+ // throws an error if timezone is not valid
11
+ Intl.DateTimeFormat(undefined, { timeZone });
12
+ return true;
13
+ }
14
+ catch (error) {
15
+ return false;
16
+ }
17
+ };
18
+ exports.isTimezoneValid = isTimezoneValid;
19
+ exports.MetricQueryWindowSizes = ["HOUR", "DAY", "WEEK", "MONTH", "YEAR"];
20
+ exports.MetricQueryWindowSizeEnum = zod_1.z.enum(exports.MetricQueryWindowSizes);
21
+ exports.MetricQueryWindowSchema = zod_1.z.object({
22
+ size: exports.MetricQueryWindowSizeEnum,
23
+ // Validate the timezone if we are provided one
24
+ timeZone: zod_1.z.string().nullish().refine((arg) => arg ? (0, exports.isTimezoneValid)(arg) : true, {
25
+ message: "Invalid window timezone provided, please provide a valid timezone",
26
+ }),
27
+ });
28
+ //# sourceMappingURL=window.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"window.js","sourceRoot":"","sources":["../../src/metrics/window.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAEjB,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAW,EAAE;IAC3D,IAAI,CAAC;QACH,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,CAAC;YAC/D,OAAO,KAAK,CAAC;QACf,CAAC;QACD,2CAA2C;QAC3C,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAXW,QAAA,eAAe,mBAW1B;AAEW,QAAA,sBAAsB,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAC3E,QAAA,yBAAyB,GAAG,OAAC,CAAC,IAAI,CAAC,8BAAsB,CAAC,CAAC;AAG3D,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,iCAAyB;IAC/B,+CAA+C;IAC/C,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAA,uBAAe,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;QAChF,OAAO,EAAE,mEAAmE;KAC7E,CAAC;CACH,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "@texturehq/device",
3
+ "version": "1.3.0",
4
+ "author": "Will Laeri <will@texture.energy>",
5
+ "description": "A type-safe client for validating device data",
6
+ "main": "dist/index.js",
7
+ "license": "MIT",
8
+ "scripts": {
9
+ "build": "tsc -p tsconfig.prod.json",
10
+ "prepack": "yarn build",
11
+ "test": "jest --coverage --runInBand",
12
+ "test:watch": "jest --watch",
13
+ "lint": "eslint --ext .ts src/",
14
+ "lint:fix": "eslint --fix --ext .ts src/",
15
+ "get-device-by-manufacturer-slug:test": "ts-node ./src/deviceModel/getDeviceModelByManufacturerSlug/test.success.ts | pino-pretty"
16
+ },
17
+ "devDependencies": {
18
+ "@types/jest": "^29.5.12",
19
+ "@types/node": "^20.11.30",
20
+ "axios-mock-adapter": "^2.1.0",
21
+ "eslint": "^8.56.0",
22
+ "jest": "^29.7.0",
23
+ "jest-environment-jsdom": "^29.7.0",
24
+ "jest-extended": "^4.0.2",
25
+ "pino-pretty": "^10.3.1",
26
+ "quicktype": "^23.0.106",
27
+ "ts-jest": "^29.1.2",
28
+ "ts-node": "^10.9.2",
29
+ "typescript": "^5.1.6"
30
+ },
31
+ "dependencies": {
32
+ "@texturehq/logger": "^2.0.0",
33
+ "axios": "^1.6.7",
34
+ "axios-retry": "^4.5.0",
35
+ "zod": "^3.22.4"
36
+ }
37
+ }