@seamapi/types 1.23.1 → 1.23.2
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/devicedb.cjs +14 -1
- package/dist/devicedb.cjs.map +1 -1
- package/dist/devicedb.d.cts +108 -0
- package/lib/seam/devicedb/public-models/device-model-v1.d.ts +86 -0
- package/lib/seam/devicedb/public-models/device-model-v1.js +14 -1
- package/lib/seam/devicedb/public-models/device-model-v1.js.map +1 -1
- package/lib/seam/devicedb/route-types.d.ts +22 -0
- package/package.json +1 -1
- package/src/lib/seam/devicedb/public-models/device-model-v1.ts +16 -1
- package/src/lib/seam/devicedb/route-types.ts +26 -0
package/dist/devicedb.cjs
CHANGED
|
@@ -93,9 +93,22 @@ var thermostat = zod.z.object({
|
|
|
93
93
|
var relay = zod.z.object({
|
|
94
94
|
main_category: zod.z.literal("relay")
|
|
95
95
|
});
|
|
96
|
+
var intercom = zod.z.object({
|
|
97
|
+
main_category: zod.z.literal("intercom"),
|
|
98
|
+
physical_properties: zod.z.object({
|
|
99
|
+
has_camera: zod.z.boolean()
|
|
100
|
+
}),
|
|
101
|
+
software_features: zod.z.object({
|
|
102
|
+
can_remotely_unlock: zod.z.boolean(),
|
|
103
|
+
can_program_access_codes: zod.z.boolean()
|
|
104
|
+
})
|
|
105
|
+
});
|
|
106
|
+
var accessory = zod.z.object({
|
|
107
|
+
main_category: zod.z.literal("accessory")
|
|
108
|
+
});
|
|
96
109
|
var device_model_category_specific_properties = zod.z.discriminatedUnion(
|
|
97
110
|
"main_category",
|
|
98
|
-
[smartlock, sensor, thermostat, relay]
|
|
111
|
+
[smartlock, sensor, thermostat, relay, intercom, accessory]
|
|
99
112
|
);
|
|
100
113
|
var base_device_model_v1 = zod.z.object({
|
|
101
114
|
device_model_id: zod.z.string().uuid(),
|
package/dist/devicedb.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/seam/devicedb/public-models/index.ts","../src/lib/seam/devicedb/public-models/device-model-v0.ts","../src/lib/seam/devicedb/public-models/device-model-v1.ts","../src/lib/seam/devicedb/public-models/image-reference.ts","../src/lib/seam/devicedb/public-models/manufacturer.ts"],"names":["z"],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../src/lib/seam/devicedb/public-models/index.ts","../src/lib/seam/devicedb/public-models/device-model-v0.ts","../src/lib/seam/devicedb/public-models/device-model-v1.ts","../src/lib/seam/devicedb/public-models/image-reference.ts","../src/lib/seam/devicedb/public-models/manufacturer.ts"],"names":["z"],"mappings":"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","sourcesContent":["export * from './device-model-v0.js'\nexport * from './device-model-v1.js'\nexport * from './image-reference.js'\nexport * from './manufacturer.js'\n","import { z } from 'zod'\n\nexport const device_model_v0 = z.object({\n main_category: z.string(),\n model_name: z.string(),\n manufacturer_model_id: z.string(),\n connection_type: z.enum(['wifi', 'zwave', 'zigbee', 'unknown']),\n support_level: z.enum(['live', 'beta', 'unsupported']),\n brand: z.string(),\n icon_url: z.string(),\n seam_device_model_page_url: z.string(),\n})\n\nexport type DeviceModelV0 = z.infer<typeof device_model_v0>\n","import { z } from 'zod'\n\nimport { image_reference } from './image-reference.js'\nimport { manufacturer } from './manufacturer.js'\n\nconst smartlock = z.object({\n main_category: z.literal('smartlock'),\n physical_properties: z.object({\n lock_type: z.enum([\n 'deadbolt',\n 'lever',\n 'mortise',\n 'lockbox',\n 'cylinder',\n 'padlock',\n 'locker',\n 'unknown',\n ]),\n has_physical_key: z.boolean(),\n has_camera: z.boolean(),\n }),\n software_features: z.object({\n can_remotely_unlock: z.boolean(),\n can_program_access_codes: z.boolean(),\n can_program_access_schedules: z.boolean(),\n can_program_access_codes_offline: z.boolean(),\n }),\n})\n\nconst sensor = z.object({\n main_category: z.literal('sensor'),\n physical_properties: z.object({\n has_noise_sensor: z.boolean(),\n has_humidity_sensor: z.boolean(),\n has_temperature_sensor: z.boolean(),\n has_occupancy_detection: z.boolean(),\n }),\n})\n\nconst thermostat = z.object({\n main_category: z.literal('thermostat'),\n physical_properties: z.object({\n available_modes: z.enum(['heat', 'cool', 'fan', 'eco']).array(),\n is_heat_pump_compatible: z.boolean(),\n has_occupancy_detection: z.boolean(),\n supports_demand_response: z.boolean(),\n has_humidity_sensor: z.boolean(),\n has_temperature_sensor: z.boolean(),\n supports_emergency_heating_mode: z.boolean(),\n }),\n software_features: z.object({\n can_program_climate_schedules: z.boolean(),\n }),\n})\n\nexport type ThermostatPropertiesV1 = z.infer<typeof thermostat>\n\nconst relay = z.object({\n main_category: z.literal('relay'),\n})\n\nconst intercom = z.object({\n main_category: z.literal('intercom'),\n physical_properties: z.object({\n has_camera: z.boolean(),\n }),\n software_features: z.object({\n can_remotely_unlock: z.boolean(),\n can_program_access_codes: z.boolean(),\n }),\n})\n\nconst accessory = z.object({\n main_category: z.literal('accessory'),\n})\n\nexport const device_model_category_specific_properties = z.discriminatedUnion(\n 'main_category',\n [smartlock, sensor, thermostat, relay, intercom, accessory],\n)\n\nexport const base_device_model_v1 = z.object({\n device_model_id: z.string().uuid(),\n manufacturer,\n is_device_supported: z.boolean(),\n display_name: z.string(),\n description: z.string(),\n product_url: z.string().optional(),\n main_connection_type: z.enum(['wifi', 'zwave', 'zigbee', 'unknown']),\n aesthetic_variants: z\n .object({\n slug: z.string(),\n display_name: z.string(),\n primary_color_hex: z.string().optional(),\n manufacturer_sku: z.string().optional(),\n front_image: image_reference.optional(),\n back_image: image_reference.optional(),\n })\n .array(),\n power_sources: z\n .enum([\n 'battery',\n 'hardwired',\n 'mechanical_harvesting',\n 'wireless',\n 'ethernet',\n ])\n .array(),\n})\n\nexport type BaseDeviceModelV1 = z.infer<typeof base_device_model_v1>\n\nexport const device_model_v1 = base_device_model_v1.and(\n device_model_category_specific_properties,\n)\n\nexport type DeviceModelV1 = z.infer<typeof device_model_v1>\n","import { z } from 'zod'\n\nexport const image_reference = z.object({\n url: z.string().url(),\n width: z.number(),\n height: z.number(),\n})\n\nexport type ImageReference = z.infer<typeof image_reference>\n","import { z } from 'zod'\n\nimport { image_reference } from './image-reference.js'\n\nexport const manufacturer = z.object({\n manufacturer_id: z.string().uuid(),\n display_name: z.string(),\n logo: image_reference.optional(),\n integration: z.enum(['stable', 'beta', 'planned', 'unsupported', 'inquire']),\n is_connect_webview_supported: z.boolean(),\n requires_seam_support_to_add_account: z.boolean(),\n})\n\nexport type Manufacturer = z.infer<typeof manufacturer>\n"]}
|
package/dist/devicedb.d.cts
CHANGED
|
@@ -253,6 +253,49 @@ declare const device_model_category_specific_properties: z.ZodDiscriminatedUnion
|
|
|
253
253
|
main_category: "relay";
|
|
254
254
|
}, {
|
|
255
255
|
main_category: "relay";
|
|
256
|
+
}>, z.ZodObject<{
|
|
257
|
+
main_category: z.ZodLiteral<"intercom">;
|
|
258
|
+
physical_properties: z.ZodObject<{
|
|
259
|
+
has_camera: z.ZodBoolean;
|
|
260
|
+
}, "strip", z.ZodTypeAny, {
|
|
261
|
+
has_camera: boolean;
|
|
262
|
+
}, {
|
|
263
|
+
has_camera: boolean;
|
|
264
|
+
}>;
|
|
265
|
+
software_features: z.ZodObject<{
|
|
266
|
+
can_remotely_unlock: z.ZodBoolean;
|
|
267
|
+
can_program_access_codes: z.ZodBoolean;
|
|
268
|
+
}, "strip", z.ZodTypeAny, {
|
|
269
|
+
can_remotely_unlock: boolean;
|
|
270
|
+
can_program_access_codes: boolean;
|
|
271
|
+
}, {
|
|
272
|
+
can_remotely_unlock: boolean;
|
|
273
|
+
can_program_access_codes: boolean;
|
|
274
|
+
}>;
|
|
275
|
+
}, "strip", z.ZodTypeAny, {
|
|
276
|
+
main_category: "intercom";
|
|
277
|
+
physical_properties: {
|
|
278
|
+
has_camera: boolean;
|
|
279
|
+
};
|
|
280
|
+
software_features: {
|
|
281
|
+
can_remotely_unlock: boolean;
|
|
282
|
+
can_program_access_codes: boolean;
|
|
283
|
+
};
|
|
284
|
+
}, {
|
|
285
|
+
main_category: "intercom";
|
|
286
|
+
physical_properties: {
|
|
287
|
+
has_camera: boolean;
|
|
288
|
+
};
|
|
289
|
+
software_features: {
|
|
290
|
+
can_remotely_unlock: boolean;
|
|
291
|
+
can_program_access_codes: boolean;
|
|
292
|
+
};
|
|
293
|
+
}>, z.ZodObject<{
|
|
294
|
+
main_category: z.ZodLiteral<"accessory">;
|
|
295
|
+
}, "strip", z.ZodTypeAny, {
|
|
296
|
+
main_category: "accessory";
|
|
297
|
+
}, {
|
|
298
|
+
main_category: "accessory";
|
|
256
299
|
}>]>;
|
|
257
300
|
declare const base_device_model_v1: z.ZodObject<{
|
|
258
301
|
device_model_id: z.ZodString;
|
|
@@ -783,6 +826,49 @@ declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
|
|
|
783
826
|
main_category: "relay";
|
|
784
827
|
}, {
|
|
785
828
|
main_category: "relay";
|
|
829
|
+
}>, z.ZodObject<{
|
|
830
|
+
main_category: z.ZodLiteral<"intercom">;
|
|
831
|
+
physical_properties: z.ZodObject<{
|
|
832
|
+
has_camera: z.ZodBoolean;
|
|
833
|
+
}, "strip", z.ZodTypeAny, {
|
|
834
|
+
has_camera: boolean;
|
|
835
|
+
}, {
|
|
836
|
+
has_camera: boolean;
|
|
837
|
+
}>;
|
|
838
|
+
software_features: z.ZodObject<{
|
|
839
|
+
can_remotely_unlock: z.ZodBoolean;
|
|
840
|
+
can_program_access_codes: z.ZodBoolean;
|
|
841
|
+
}, "strip", z.ZodTypeAny, {
|
|
842
|
+
can_remotely_unlock: boolean;
|
|
843
|
+
can_program_access_codes: boolean;
|
|
844
|
+
}, {
|
|
845
|
+
can_remotely_unlock: boolean;
|
|
846
|
+
can_program_access_codes: boolean;
|
|
847
|
+
}>;
|
|
848
|
+
}, "strip", z.ZodTypeAny, {
|
|
849
|
+
main_category: "intercom";
|
|
850
|
+
physical_properties: {
|
|
851
|
+
has_camera: boolean;
|
|
852
|
+
};
|
|
853
|
+
software_features: {
|
|
854
|
+
can_remotely_unlock: boolean;
|
|
855
|
+
can_program_access_codes: boolean;
|
|
856
|
+
};
|
|
857
|
+
}, {
|
|
858
|
+
main_category: "intercom";
|
|
859
|
+
physical_properties: {
|
|
860
|
+
has_camera: boolean;
|
|
861
|
+
};
|
|
862
|
+
software_features: {
|
|
863
|
+
can_remotely_unlock: boolean;
|
|
864
|
+
can_program_access_codes: boolean;
|
|
865
|
+
};
|
|
866
|
+
}>, z.ZodObject<{
|
|
867
|
+
main_category: z.ZodLiteral<"accessory">;
|
|
868
|
+
}, "strip", z.ZodTypeAny, {
|
|
869
|
+
main_category: "accessory";
|
|
870
|
+
}, {
|
|
871
|
+
main_category: "accessory";
|
|
786
872
|
}>]>>;
|
|
787
873
|
type DeviceModelV1 = z.infer<typeof device_model_v1>;
|
|
788
874
|
|
|
@@ -958,6 +1044,17 @@ interface Routes {
|
|
|
958
1044
|
};
|
|
959
1045
|
} | {
|
|
960
1046
|
main_category: 'relay';
|
|
1047
|
+
} | {
|
|
1048
|
+
main_category: 'intercom';
|
|
1049
|
+
physical_properties: {
|
|
1050
|
+
has_camera: boolean;
|
|
1051
|
+
};
|
|
1052
|
+
software_features: {
|
|
1053
|
+
can_remotely_unlock: boolean;
|
|
1054
|
+
can_program_access_codes: boolean;
|
|
1055
|
+
};
|
|
1056
|
+
} | {
|
|
1057
|
+
main_category: 'accessory';
|
|
961
1058
|
});
|
|
962
1059
|
};
|
|
963
1060
|
};
|
|
@@ -1048,6 +1145,17 @@ interface Routes {
|
|
|
1048
1145
|
};
|
|
1049
1146
|
} | {
|
|
1050
1147
|
main_category: 'relay';
|
|
1148
|
+
} | {
|
|
1149
|
+
main_category: 'intercom';
|
|
1150
|
+
physical_properties: {
|
|
1151
|
+
has_camera: boolean;
|
|
1152
|
+
};
|
|
1153
|
+
software_features: {
|
|
1154
|
+
can_remotely_unlock: boolean;
|
|
1155
|
+
can_program_access_codes: boolean;
|
|
1156
|
+
};
|
|
1157
|
+
} | {
|
|
1158
|
+
main_category: 'accessory';
|
|
1051
1159
|
})>;
|
|
1052
1160
|
};
|
|
1053
1161
|
};
|
|
@@ -222,6 +222,49 @@ export declare const device_model_category_specific_properties: z.ZodDiscriminat
|
|
|
222
222
|
main_category: "relay";
|
|
223
223
|
}, {
|
|
224
224
|
main_category: "relay";
|
|
225
|
+
}>, z.ZodObject<{
|
|
226
|
+
main_category: z.ZodLiteral<"intercom">;
|
|
227
|
+
physical_properties: z.ZodObject<{
|
|
228
|
+
has_camera: z.ZodBoolean;
|
|
229
|
+
}, "strip", z.ZodTypeAny, {
|
|
230
|
+
has_camera: boolean;
|
|
231
|
+
}, {
|
|
232
|
+
has_camera: boolean;
|
|
233
|
+
}>;
|
|
234
|
+
software_features: z.ZodObject<{
|
|
235
|
+
can_remotely_unlock: z.ZodBoolean;
|
|
236
|
+
can_program_access_codes: z.ZodBoolean;
|
|
237
|
+
}, "strip", z.ZodTypeAny, {
|
|
238
|
+
can_remotely_unlock: boolean;
|
|
239
|
+
can_program_access_codes: boolean;
|
|
240
|
+
}, {
|
|
241
|
+
can_remotely_unlock: boolean;
|
|
242
|
+
can_program_access_codes: boolean;
|
|
243
|
+
}>;
|
|
244
|
+
}, "strip", z.ZodTypeAny, {
|
|
245
|
+
main_category: "intercom";
|
|
246
|
+
physical_properties: {
|
|
247
|
+
has_camera: boolean;
|
|
248
|
+
};
|
|
249
|
+
software_features: {
|
|
250
|
+
can_remotely_unlock: boolean;
|
|
251
|
+
can_program_access_codes: boolean;
|
|
252
|
+
};
|
|
253
|
+
}, {
|
|
254
|
+
main_category: "intercom";
|
|
255
|
+
physical_properties: {
|
|
256
|
+
has_camera: boolean;
|
|
257
|
+
};
|
|
258
|
+
software_features: {
|
|
259
|
+
can_remotely_unlock: boolean;
|
|
260
|
+
can_program_access_codes: boolean;
|
|
261
|
+
};
|
|
262
|
+
}>, z.ZodObject<{
|
|
263
|
+
main_category: z.ZodLiteral<"accessory">;
|
|
264
|
+
}, "strip", z.ZodTypeAny, {
|
|
265
|
+
main_category: "accessory";
|
|
266
|
+
}, {
|
|
267
|
+
main_category: "accessory";
|
|
225
268
|
}>]>;
|
|
226
269
|
export declare const base_device_model_v1: z.ZodObject<{
|
|
227
270
|
device_model_id: z.ZodString;
|
|
@@ -752,6 +795,49 @@ export declare const device_model_v1: z.ZodIntersection<z.ZodObject<{
|
|
|
752
795
|
main_category: "relay";
|
|
753
796
|
}, {
|
|
754
797
|
main_category: "relay";
|
|
798
|
+
}>, z.ZodObject<{
|
|
799
|
+
main_category: z.ZodLiteral<"intercom">;
|
|
800
|
+
physical_properties: z.ZodObject<{
|
|
801
|
+
has_camera: z.ZodBoolean;
|
|
802
|
+
}, "strip", z.ZodTypeAny, {
|
|
803
|
+
has_camera: boolean;
|
|
804
|
+
}, {
|
|
805
|
+
has_camera: boolean;
|
|
806
|
+
}>;
|
|
807
|
+
software_features: z.ZodObject<{
|
|
808
|
+
can_remotely_unlock: z.ZodBoolean;
|
|
809
|
+
can_program_access_codes: z.ZodBoolean;
|
|
810
|
+
}, "strip", z.ZodTypeAny, {
|
|
811
|
+
can_remotely_unlock: boolean;
|
|
812
|
+
can_program_access_codes: boolean;
|
|
813
|
+
}, {
|
|
814
|
+
can_remotely_unlock: boolean;
|
|
815
|
+
can_program_access_codes: boolean;
|
|
816
|
+
}>;
|
|
817
|
+
}, "strip", z.ZodTypeAny, {
|
|
818
|
+
main_category: "intercom";
|
|
819
|
+
physical_properties: {
|
|
820
|
+
has_camera: boolean;
|
|
821
|
+
};
|
|
822
|
+
software_features: {
|
|
823
|
+
can_remotely_unlock: boolean;
|
|
824
|
+
can_program_access_codes: boolean;
|
|
825
|
+
};
|
|
826
|
+
}, {
|
|
827
|
+
main_category: "intercom";
|
|
828
|
+
physical_properties: {
|
|
829
|
+
has_camera: boolean;
|
|
830
|
+
};
|
|
831
|
+
software_features: {
|
|
832
|
+
can_remotely_unlock: boolean;
|
|
833
|
+
can_program_access_codes: boolean;
|
|
834
|
+
};
|
|
835
|
+
}>, z.ZodObject<{
|
|
836
|
+
main_category: z.ZodLiteral<"accessory">;
|
|
837
|
+
}, "strip", z.ZodTypeAny, {
|
|
838
|
+
main_category: "accessory";
|
|
839
|
+
}, {
|
|
840
|
+
main_category: "accessory";
|
|
755
841
|
}>]>>;
|
|
756
842
|
export type DeviceModelV1 = z.infer<typeof device_model_v1>;
|
|
757
843
|
export {};
|
|
@@ -51,7 +51,20 @@ const thermostat = z.object({
|
|
|
51
51
|
const relay = z.object({
|
|
52
52
|
main_category: z.literal('relay'),
|
|
53
53
|
});
|
|
54
|
-
|
|
54
|
+
const intercom = z.object({
|
|
55
|
+
main_category: z.literal('intercom'),
|
|
56
|
+
physical_properties: z.object({
|
|
57
|
+
has_camera: z.boolean(),
|
|
58
|
+
}),
|
|
59
|
+
software_features: z.object({
|
|
60
|
+
can_remotely_unlock: z.boolean(),
|
|
61
|
+
can_program_access_codes: z.boolean(),
|
|
62
|
+
}),
|
|
63
|
+
});
|
|
64
|
+
const accessory = z.object({
|
|
65
|
+
main_category: z.literal('accessory'),
|
|
66
|
+
});
|
|
67
|
+
export const device_model_category_specific_properties = z.discriminatedUnion('main_category', [smartlock, sensor, thermostat, relay, intercom, accessory]);
|
|
55
68
|
export const base_device_model_v1 = z.object({
|
|
56
69
|
device_model_id: z.string().uuid(),
|
|
57
70
|
manufacturer,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device-model-v1.js","sourceRoot":"","sources":["../../../../src/lib/seam/devicedb/public-models/device-model-v1.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IACrC,mBAAmB,EAAE,CAAC,CAAC,MAAM,CAAC;QAC5B,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC;YAChB,UAAU;YACV,OAAO;YACP,SAAS;YACT,SAAS;YACT,UAAU;YACV,SAAS;YACT,QAAQ;YACR,SAAS;SACV,CAAC;QACF,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE;QAC7B,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE;KACxB,CAAC;IACF,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC;QAC1B,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE;QAChC,wBAAwB,EAAE,CAAC,CAAC,OAAO,EAAE;QACrC,4BAA4B,EAAE,CAAC,CAAC,OAAO,EAAE;QACzC,gCAAgC,EAAE,CAAC,CAAC,OAAO,EAAE;KAC9C,CAAC;CACH,CAAC,CAAA;AAEF,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAClC,mBAAmB,EAAE,CAAC,CAAC,MAAM,CAAC;QAC5B,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE;QAC7B,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE;QAChC,sBAAsB,EAAE,CAAC,CAAC,OAAO,EAAE;QACnC,uBAAuB,EAAE,CAAC,CAAC,OAAO,EAAE;KACrC,CAAC;CACH,CAAC,CAAA;AAEF,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;IACtC,mBAAmB,EAAE,CAAC,CAAC,MAAM,CAAC;QAC5B,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE;QAC/D,uBAAuB,EAAE,CAAC,CAAC,OAAO,EAAE;QACpC,uBAAuB,EAAE,CAAC,CAAC,OAAO,EAAE;QACpC,wBAAwB,EAAE,CAAC,CAAC,OAAO,EAAE;QACrC,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE;QAChC,sBAAsB,EAAE,CAAC,CAAC,OAAO,EAAE;QACnC,+BAA+B,EAAE,CAAC,CAAC,OAAO,EAAE;KAC7C,CAAC;IACF,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC;QAC1B,6BAA6B,EAAE,CAAC,CAAC,OAAO,EAAE;KAC3C,CAAC;CACH,CAAC,CAAA;AAIF,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC;IACrB,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;CAClC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,yCAAyC,GAAG,CAAC,CAAC,kBAAkB,CAC3E,eAAe,EACf,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"device-model-v1.js","sourceRoot":"","sources":["../../../../src/lib/seam/devicedb/public-models/device-model-v1.ts"],"names":[],"mappings":"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"}
|
|
@@ -82,6 +82,17 @@ export interface Routes {
|
|
|
82
82
|
};
|
|
83
83
|
} | {
|
|
84
84
|
main_category: 'relay';
|
|
85
|
+
} | {
|
|
86
|
+
main_category: 'intercom';
|
|
87
|
+
physical_properties: {
|
|
88
|
+
has_camera: boolean;
|
|
89
|
+
};
|
|
90
|
+
software_features: {
|
|
91
|
+
can_remotely_unlock: boolean;
|
|
92
|
+
can_program_access_codes: boolean;
|
|
93
|
+
};
|
|
94
|
+
} | {
|
|
95
|
+
main_category: 'accessory';
|
|
85
96
|
});
|
|
86
97
|
};
|
|
87
98
|
};
|
|
@@ -172,6 +183,17 @@ export interface Routes {
|
|
|
172
183
|
};
|
|
173
184
|
} | {
|
|
174
185
|
main_category: 'relay';
|
|
186
|
+
} | {
|
|
187
|
+
main_category: 'intercom';
|
|
188
|
+
physical_properties: {
|
|
189
|
+
has_camera: boolean;
|
|
190
|
+
};
|
|
191
|
+
software_features: {
|
|
192
|
+
can_remotely_unlock: boolean;
|
|
193
|
+
can_program_access_codes: boolean;
|
|
194
|
+
};
|
|
195
|
+
} | {
|
|
196
|
+
main_category: 'accessory';
|
|
175
197
|
})>;
|
|
176
198
|
};
|
|
177
199
|
};
|
package/package.json
CHANGED
|
@@ -59,9 +59,24 @@ const relay = z.object({
|
|
|
59
59
|
main_category: z.literal('relay'),
|
|
60
60
|
})
|
|
61
61
|
|
|
62
|
+
const intercom = z.object({
|
|
63
|
+
main_category: z.literal('intercom'),
|
|
64
|
+
physical_properties: z.object({
|
|
65
|
+
has_camera: z.boolean(),
|
|
66
|
+
}),
|
|
67
|
+
software_features: z.object({
|
|
68
|
+
can_remotely_unlock: z.boolean(),
|
|
69
|
+
can_program_access_codes: z.boolean(),
|
|
70
|
+
}),
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
const accessory = z.object({
|
|
74
|
+
main_category: z.literal('accessory'),
|
|
75
|
+
})
|
|
76
|
+
|
|
62
77
|
export const device_model_category_specific_properties = z.discriminatedUnion(
|
|
63
78
|
'main_category',
|
|
64
|
-
[smartlock, sensor, thermostat, relay],
|
|
79
|
+
[smartlock, sensor, thermostat, relay, intercom, accessory],
|
|
65
80
|
)
|
|
66
81
|
|
|
67
82
|
export const base_device_model_v1 = z.object({
|
|
@@ -107,6 +107,19 @@ export interface Routes {
|
|
|
107
107
|
| {
|
|
108
108
|
main_category: 'relay'
|
|
109
109
|
}
|
|
110
|
+
| {
|
|
111
|
+
main_category: 'intercom'
|
|
112
|
+
physical_properties: {
|
|
113
|
+
has_camera: boolean
|
|
114
|
+
}
|
|
115
|
+
software_features: {
|
|
116
|
+
can_remotely_unlock: boolean
|
|
117
|
+
can_program_access_codes: boolean
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
| {
|
|
121
|
+
main_category: 'accessory'
|
|
122
|
+
}
|
|
110
123
|
)
|
|
111
124
|
}
|
|
112
125
|
}
|
|
@@ -230,6 +243,19 @@ export interface Routes {
|
|
|
230
243
|
| {
|
|
231
244
|
main_category: 'relay'
|
|
232
245
|
}
|
|
246
|
+
| {
|
|
247
|
+
main_category: 'intercom'
|
|
248
|
+
physical_properties: {
|
|
249
|
+
has_camera: boolean
|
|
250
|
+
}
|
|
251
|
+
software_features: {
|
|
252
|
+
can_remotely_unlock: boolean
|
|
253
|
+
can_program_access_codes: boolean
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
| {
|
|
257
|
+
main_category: 'accessory'
|
|
258
|
+
}
|
|
233
259
|
)
|
|
234
260
|
>
|
|
235
261
|
}
|