@tracearr/shared 2.2.0-beta.2 → 2.2.0-beta.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.
Files changed (88) hide show
  1. package/dist/automations/__tests__/actions.test.d.ts +2 -0
  2. package/dist/automations/__tests__/actions.test.d.ts.map +1 -0
  3. package/dist/automations/__tests__/actions.test.js +68 -0
  4. package/dist/automations/__tests__/actions.test.js.map +1 -0
  5. package/dist/automations/__tests__/conditions.test.d.ts +2 -0
  6. package/dist/automations/__tests__/conditions.test.d.ts.map +1 -0
  7. package/dist/automations/__tests__/conditions.test.js +55 -0
  8. package/dist/automations/__tests__/conditions.test.js.map +1 -0
  9. package/dist/automations/__tests__/definition.test.d.ts +2 -0
  10. package/dist/automations/__tests__/definition.test.d.ts.map +1 -0
  11. package/dist/automations/__tests__/definition.test.js +376 -0
  12. package/dist/automations/__tests__/definition.test.js.map +1 -0
  13. package/dist/automations/__tests__/share.test.d.ts +2 -0
  14. package/dist/automations/__tests__/share.test.d.ts.map +1 -0
  15. package/dist/automations/__tests__/share.test.js +98 -0
  16. package/dist/automations/__tests__/share.test.js.map +1 -0
  17. package/dist/automations/__tests__/templates.test.d.ts +2 -0
  18. package/dist/automations/__tests__/templates.test.d.ts.map +1 -0
  19. package/dist/automations/__tests__/templates.test.js +278 -0
  20. package/dist/automations/__tests__/templates.test.js.map +1 -0
  21. package/dist/automations/__tests__/triggers.test.d.ts +2 -0
  22. package/dist/automations/__tests__/triggers.test.d.ts.map +1 -0
  23. package/dist/automations/__tests__/triggers.test.js +42 -0
  24. package/dist/automations/__tests__/triggers.test.js.map +1 -0
  25. package/dist/automations/actions.d.ts +783 -0
  26. package/dist/automations/actions.d.ts.map +1 -0
  27. package/dist/automations/actions.js +97 -0
  28. package/dist/automations/actions.js.map +1 -0
  29. package/dist/automations/conditions.d.ts +459 -0
  30. package/dist/automations/conditions.d.ts.map +1 -0
  31. package/dist/automations/conditions.js +460 -0
  32. package/dist/automations/conditions.js.map +1 -0
  33. package/dist/automations/definition.d.ts +1389 -0
  34. package/dist/automations/definition.d.ts.map +1 -0
  35. package/dist/automations/definition.js +215 -0
  36. package/dist/automations/definition.js.map +1 -0
  37. package/dist/automations/dryRun.d.ts +413 -0
  38. package/dist/automations/dryRun.d.ts.map +1 -0
  39. package/dist/automations/dryRun.js +9 -0
  40. package/dist/automations/dryRun.js.map +1 -0
  41. package/dist/automations/index.d.ts +8 -0
  42. package/dist/automations/index.d.ts.map +1 -0
  43. package/dist/automations/index.js +8 -0
  44. package/dist/automations/index.js.map +1 -0
  45. package/dist/automations/share.d.ts +27 -0
  46. package/dist/automations/share.d.ts.map +1 -0
  47. package/dist/automations/share.js +119 -0
  48. package/dist/automations/share.js.map +1 -0
  49. package/dist/automations/templates.d.ts +1304 -0
  50. package/dist/automations/templates.d.ts.map +1 -0
  51. package/dist/automations/templates.js +525 -0
  52. package/dist/automations/templates.js.map +1 -0
  53. package/dist/automations/triggers.d.ts +141 -0
  54. package/dist/automations/triggers.d.ts.map +1 -0
  55. package/dist/automations/triggers.js +177 -0
  56. package/dist/automations/triggers.js.map +1 -0
  57. package/dist/constants.d.ts +22 -40
  58. package/dist/constants.d.ts.map +1 -1
  59. package/dist/constants.js +25 -56
  60. package/dist/constants.js.map +1 -1
  61. package/dist/destinations.d.ts +21 -22
  62. package/dist/destinations.d.ts.map +1 -1
  63. package/dist/destinations.js +13 -2
  64. package/dist/destinations.js.map +1 -1
  65. package/dist/index.d.ts +10 -5
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +15 -9
  68. package/dist/index.js.map +1 -1
  69. package/dist/listQuery.d.ts +41 -0
  70. package/dist/listQuery.d.ts.map +1 -0
  71. package/dist/listQuery.js +33 -0
  72. package/dist/listQuery.js.map +1 -0
  73. package/dist/media.d.ts +2 -0
  74. package/dist/media.d.ts.map +1 -1
  75. package/dist/media.js +2 -1
  76. package/dist/media.js.map +1 -1
  77. package/dist/schemas.d.ts +152 -832
  78. package/dist/schemas.d.ts.map +1 -1
  79. package/dist/schemas.js +90 -287
  80. package/dist/schemas.js.map +1 -1
  81. package/dist/types.d.ts +51 -137
  82. package/dist/types.d.ts.map +1 -1
  83. package/dist/types.js.map +1 -1
  84. package/dist/violations.d.ts +2 -1
  85. package/dist/violations.d.ts.map +1 -1
  86. package/dist/violations.js +7 -0
  87. package/dist/violations.js.map +1 -1
  88. package/package.json +2 -1
@@ -0,0 +1,460 @@
1
+ import { z } from 'zod';
2
+ import { DYNAMIC_RANGE_TOKENS } from '../dynamicRange.js';
3
+ import { RESOLUTION_TIERS } from '../resolution.js';
4
+ import { contextSupplies } from './triggers.js';
5
+ // Operators
6
+ export const comparisonOperatorSchema = z.enum(['eq', 'neq', 'gt', 'gte', 'lt', 'lte']);
7
+ export const arrayOperatorSchema = z.enum(['in', 'not_in']);
8
+ export const stringOperatorSchema = z.enum(['contains', 'not_contains']);
9
+ export const operatorSchema = z.union([
10
+ comparisonOperatorSchema,
11
+ arrayOperatorSchema,
12
+ stringOperatorSchema,
13
+ ]);
14
+ // Condition fields by category
15
+ export const sessionBehaviorFieldSchema = z.enum([
16
+ 'concurrent_streams',
17
+ 'active_session_distance_km',
18
+ 'travel_speed_kmh',
19
+ 'unique_ips_in_window',
20
+ 'unique_devices_in_window',
21
+ 'inactive_days',
22
+ 'current_pause_minutes',
23
+ 'total_pause_minutes',
24
+ ]);
25
+ export const streamQualityFieldSchema = z.enum([
26
+ 'source_resolution',
27
+ 'output_resolution',
28
+ 'is_transcoding',
29
+ 'is_transcode_downgrade',
30
+ 'source_bitrate_mbps',
31
+ ]);
32
+ export const transcodingConditionValueSchema = z.enum([
33
+ 'video',
34
+ 'audio',
35
+ 'video_or_audio',
36
+ 'neither',
37
+ ]);
38
+ export const userAttributeFieldSchema = z.enum(['user_id', 'trust_score', 'account_age_days']);
39
+ export const deviceClientFieldSchema = z.enum(['device_type', 'client_name', 'platform']);
40
+ export const networkLocationFieldSchema = z.enum(['is_local_network', 'country', 'ip_in_range']);
41
+ export const scopeFieldSchema = z.enum(['server_id', 'media_type']);
42
+ /** The `_after` fields read the value a library item ends the sync with. */
43
+ export const mediaFieldSchema = z.enum([
44
+ 'library_item_type',
45
+ 'library_name',
46
+ 'resolution_after',
47
+ 'dynamic_range_after',
48
+ 'video_codec_after',
49
+ 'audio_channels_after',
50
+ 'file_size_after',
51
+ ]);
52
+ export const conditionFieldSchema = z.union([
53
+ sessionBehaviorFieldSchema,
54
+ streamQualityFieldSchema,
55
+ userAttributeFieldSchema,
56
+ deviceClientFieldSchema,
57
+ networkLocationFieldSchema,
58
+ scopeFieldSchema,
59
+ mediaFieldSchema,
60
+ ]);
61
+ // Enums
62
+ export const videoResolutionSchema = z.enum(['4K', '1080p', '720p', '480p', 'SD', 'unknown']);
63
+ export const deviceTypeSchema = z.enum(['mobile', 'tablet', 'tv', 'desktop', 'browser', 'unknown']);
64
+ export const platformSchema = z.enum([
65
+ 'ios',
66
+ 'android',
67
+ 'windows',
68
+ 'macos',
69
+ 'linux',
70
+ 'tvos',
71
+ 'androidtv',
72
+ 'roku',
73
+ 'webos',
74
+ 'tizen',
75
+ 'unknown',
76
+ ]);
77
+ export const mediaTypeEnumSchema = z.enum([
78
+ 'movie',
79
+ 'episode',
80
+ 'track',
81
+ 'photo',
82
+ 'live',
83
+ 'trailer',
84
+ ]);
85
+ /** library_items.media_type, which is a wider vocabulary than a session's mediaType. */
86
+ export const libraryItemTypeSchema = z.enum([
87
+ 'movie',
88
+ 'show',
89
+ 'season',
90
+ 'episode',
91
+ 'artist',
92
+ 'album',
93
+ 'track',
94
+ 'photo',
95
+ ]);
96
+ const RESOLUTION_LABELS = Object.keys(RESOLUTION_TIERS);
97
+ // Condition value
98
+ export const conditionValueSchema = z.union([
99
+ z.string(),
100
+ z.number(),
101
+ z.boolean(),
102
+ z.array(z.string()),
103
+ z.array(z.number()),
104
+ ]);
105
+ // Condition and action nodes carry these; zod would strip them from a saved rule otherwise.
106
+ export const nodeFieldsShape = {
107
+ id: z.uuid().optional(),
108
+ enabled: z.boolean().optional(),
109
+ };
110
+ // Single condition
111
+ export const conditionSchema = z.object({
112
+ ...nodeFieldsShape,
113
+ field: conditionFieldSchema,
114
+ operator: operatorSchema,
115
+ value: conditionValueSchema,
116
+ params: z
117
+ .object({
118
+ // The history fetch sizes itself from the largest active window; 168h
119
+ // (7 days) bounds that fetch and matches the sessions hypertable's
120
+ // compression boundary.
121
+ window_hours: z
122
+ .number()
123
+ .int()
124
+ .positive()
125
+ .max(168, 'Window cannot exceed 168 hours (7 days)')
126
+ .optional(),
127
+ exclude_same_device: z.boolean().optional(),
128
+ exclude_same_ip: z.boolean().optional(),
129
+ count_device_types: z.array(deviceTypeSchema).optional(),
130
+ })
131
+ .optional(),
132
+ });
133
+ // Condition group; `match` names the logic, and a group saved before it existed reads as 'any'.
134
+ export const conditionGroupSchema = z.object({
135
+ ...nodeFieldsShape,
136
+ match: z.enum(['all', 'any']).optional(),
137
+ conditions: z.array(conditionSchema).min(1),
138
+ });
139
+ // Rule conditions (AND logic between groups)
140
+ export const automationConditionsSchema = z.object({
141
+ groups: z.array(conditionGroupSchema),
142
+ });
143
+ const COMPARISON_OPERATORS = comparisonOperatorSchema.options;
144
+ const EQUALITY_OPERATORS = ['eq', 'neq'];
145
+ const ARRAY_OPERATORS = arrayOperatorSchema.options;
146
+ const STRING_OPERATORS = stringOperatorSchema.options;
147
+ export const CONDITION_FIELDS = {
148
+ concurrent_streams: {
149
+ category: 'session_behavior',
150
+ requires: 'session',
151
+ operators: COMPARISON_OPERATORS,
152
+ valueType: 'number',
153
+ min: 1,
154
+ max: 100,
155
+ step: 1,
156
+ flags: { excludeSameDevice: true, excludeSameIp: true, countDeviceTypes: true },
157
+ identityAware: true,
158
+ },
159
+ active_session_distance_km: {
160
+ category: 'session_behavior',
161
+ requires: 'session',
162
+ operators: COMPARISON_OPERATORS,
163
+ valueType: 'number',
164
+ unit: 'km',
165
+ min: 0,
166
+ step: 10,
167
+ flags: { excludeSameDevice: true },
168
+ identityAware: true,
169
+ },
170
+ travel_speed_kmh: {
171
+ category: 'session_behavior',
172
+ requires: 'session',
173
+ operators: COMPARISON_OPERATORS,
174
+ valueType: 'number',
175
+ unit: 'kmh',
176
+ min: 0,
177
+ step: 50,
178
+ flags: { excludeSameDevice: true },
179
+ identityAware: true,
180
+ },
181
+ unique_ips_in_window: {
182
+ category: 'session_behavior',
183
+ requires: 'session',
184
+ operators: COMPARISON_OPERATORS,
185
+ valueType: 'number',
186
+ min: 1,
187
+ max: 100,
188
+ step: 1,
189
+ flags: { windowHours: true },
190
+ identityAware: true,
191
+ },
192
+ unique_devices_in_window: {
193
+ category: 'session_behavior',
194
+ requires: 'session',
195
+ operators: COMPARISON_OPERATORS,
196
+ valueType: 'number',
197
+ min: 1,
198
+ max: 100,
199
+ step: 1,
200
+ flags: { windowHours: true },
201
+ identityAware: true,
202
+ },
203
+ inactive_days: {
204
+ category: 'session_behavior',
205
+ requires: 'account',
206
+ operators: COMPARISON_OPERATORS,
207
+ valueType: 'number',
208
+ unit: 'days',
209
+ min: 0,
210
+ step: 1,
211
+ flags: {},
212
+ identityAware: false,
213
+ },
214
+ current_pause_minutes: {
215
+ category: 'session_behavior',
216
+ requires: 'session',
217
+ operators: COMPARISON_OPERATORS,
218
+ valueType: 'number',
219
+ unit: 'minutes',
220
+ min: 1,
221
+ step: 5,
222
+ flags: {},
223
+ identityAware: false,
224
+ },
225
+ total_pause_minutes: {
226
+ category: 'session_behavior',
227
+ requires: 'session',
228
+ operators: COMPARISON_OPERATORS,
229
+ valueType: 'number',
230
+ unit: 'minutes',
231
+ min: 1,
232
+ step: 5,
233
+ flags: {},
234
+ identityAware: false,
235
+ },
236
+ source_resolution: {
237
+ category: 'stream_quality',
238
+ requires: 'session',
239
+ operators: [...EQUALITY_OPERATORS, ...ARRAY_OPERATORS],
240
+ valueType: 'select',
241
+ options: videoResolutionSchema.options,
242
+ flags: {},
243
+ identityAware: false,
244
+ },
245
+ output_resolution: {
246
+ category: 'stream_quality',
247
+ requires: 'session',
248
+ operators: [...EQUALITY_OPERATORS, ...ARRAY_OPERATORS],
249
+ valueType: 'select',
250
+ options: videoResolutionSchema.options,
251
+ flags: {},
252
+ identityAware: false,
253
+ },
254
+ is_transcoding: {
255
+ category: 'stream_quality',
256
+ requires: 'session',
257
+ operators: EQUALITY_OPERATORS,
258
+ valueType: 'select',
259
+ options: transcodingConditionValueSchema.options,
260
+ flags: {},
261
+ identityAware: false,
262
+ },
263
+ is_transcode_downgrade: {
264
+ category: 'stream_quality',
265
+ requires: 'session',
266
+ operators: EQUALITY_OPERATORS,
267
+ valueType: 'boolean',
268
+ flags: {},
269
+ identityAware: false,
270
+ },
271
+ source_bitrate_mbps: {
272
+ category: 'stream_quality',
273
+ requires: 'session',
274
+ operators: COMPARISON_OPERATORS,
275
+ valueType: 'number',
276
+ unit: 'mbps',
277
+ min: 0,
278
+ step: 1,
279
+ flags: {},
280
+ identityAware: false,
281
+ },
282
+ user_id: {
283
+ category: 'user_attributes',
284
+ requires: 'account',
285
+ operators: [...EQUALITY_OPERATORS, ...ARRAY_OPERATORS],
286
+ valueType: 'multiSelect',
287
+ dynamicSource: 'users',
288
+ flags: {},
289
+ identityAware: false,
290
+ },
291
+ trust_score: {
292
+ category: 'user_attributes',
293
+ requires: 'account',
294
+ operators: COMPARISON_OPERATORS,
295
+ valueType: 'number',
296
+ min: 0,
297
+ max: 100,
298
+ step: 1,
299
+ flags: {},
300
+ identityAware: false,
301
+ },
302
+ account_age_days: {
303
+ category: 'user_attributes',
304
+ requires: 'account',
305
+ operators: COMPARISON_OPERATORS,
306
+ valueType: 'number',
307
+ unit: 'days',
308
+ min: 0,
309
+ step: 1,
310
+ flags: {},
311
+ identityAware: false,
312
+ },
313
+ device_type: {
314
+ category: 'device_client',
315
+ requires: 'session',
316
+ operators: [...EQUALITY_OPERATORS, ...ARRAY_OPERATORS],
317
+ valueType: 'multiSelect',
318
+ options: deviceTypeSchema.options,
319
+ flags: {},
320
+ identityAware: false,
321
+ },
322
+ client_name: {
323
+ category: 'device_client',
324
+ requires: 'session',
325
+ operators: [...EQUALITY_OPERATORS, ...STRING_OPERATORS],
326
+ valueType: 'text',
327
+ flags: {},
328
+ identityAware: false,
329
+ },
330
+ platform: {
331
+ category: 'device_client',
332
+ requires: 'session',
333
+ operators: [...EQUALITY_OPERATORS, ...ARRAY_OPERATORS],
334
+ valueType: 'multiSelect',
335
+ options: platformSchema.options,
336
+ flags: {},
337
+ identityAware: false,
338
+ },
339
+ is_local_network: {
340
+ category: 'network_location',
341
+ requires: 'session',
342
+ operators: EQUALITY_OPERATORS,
343
+ valueType: 'boolean',
344
+ flags: {},
345
+ identityAware: false,
346
+ },
347
+ country: {
348
+ category: 'network_location',
349
+ requires: 'session',
350
+ operators: [...EQUALITY_OPERATORS, ...ARRAY_OPERATORS],
351
+ valueType: 'multiSelect',
352
+ dynamicSource: 'countries',
353
+ flags: {},
354
+ identityAware: false,
355
+ },
356
+ ip_in_range: {
357
+ category: 'network_location',
358
+ requires: 'session',
359
+ operators: EQUALITY_OPERATORS,
360
+ valueType: 'cidr',
361
+ flags: {},
362
+ identityAware: false,
363
+ },
364
+ server_id: {
365
+ category: 'scope',
366
+ requires: 'server',
367
+ operators: [...EQUALITY_OPERATORS, ...ARRAY_OPERATORS],
368
+ valueType: 'multiSelect',
369
+ dynamicSource: 'servers',
370
+ flags: {},
371
+ identityAware: false,
372
+ },
373
+ media_type: {
374
+ category: 'scope',
375
+ requires: 'session',
376
+ operators: [...EQUALITY_OPERATORS, ...ARRAY_OPERATORS],
377
+ valueType: 'multiSelect',
378
+ options: mediaTypeEnumSchema.options,
379
+ flags: {},
380
+ identityAware: false,
381
+ },
382
+ library_item_type: {
383
+ category: 'media',
384
+ requires: 'media',
385
+ operators: [...EQUALITY_OPERATORS, ...ARRAY_OPERATORS],
386
+ valueType: 'multiSelect',
387
+ options: libraryItemTypeSchema.options,
388
+ flags: {},
389
+ identityAware: false,
390
+ },
391
+ library_name: {
392
+ category: 'media',
393
+ requires: 'media',
394
+ operators: [...EQUALITY_OPERATORS, ...STRING_OPERATORS],
395
+ valueType: 'text',
396
+ flags: {},
397
+ identityAware: false,
398
+ },
399
+ resolution_after: {
400
+ category: 'media',
401
+ requires: 'media',
402
+ // Compared by tier rank, so "at least 4K" is one row rather than a list.
403
+ operators: COMPARISON_OPERATORS,
404
+ valueType: 'select',
405
+ options: RESOLUTION_LABELS,
406
+ flags: {},
407
+ identityAware: false,
408
+ },
409
+ dynamic_range_after: {
410
+ category: 'media',
411
+ requires: 'media',
412
+ operators: [...EQUALITY_OPERATORS, ...ARRAY_OPERATORS],
413
+ valueType: 'multiSelect',
414
+ options: DYNAMIC_RANGE_TOKENS,
415
+ flags: {},
416
+ identityAware: false,
417
+ },
418
+ video_codec_after: {
419
+ category: 'media',
420
+ requires: 'media',
421
+ operators: [...EQUALITY_OPERATORS, ...STRING_OPERATORS],
422
+ valueType: 'text',
423
+ flags: {},
424
+ identityAware: false,
425
+ },
426
+ audio_channels_after: {
427
+ category: 'media',
428
+ requires: 'media',
429
+ operators: COMPARISON_OPERATORS,
430
+ valueType: 'number',
431
+ min: 1,
432
+ max: 16,
433
+ step: 1,
434
+ flags: {},
435
+ identityAware: false,
436
+ },
437
+ file_size_after: {
438
+ category: 'media',
439
+ requires: 'media',
440
+ operators: COMPARISON_OPERATORS,
441
+ valueType: 'number',
442
+ unit: 'gb',
443
+ min: 0,
444
+ step: 1,
445
+ flags: {},
446
+ identityAware: false,
447
+ },
448
+ };
449
+ // Fields whose evaluators aggregate across every server_user id of the same identity.
450
+ // One of them is enough for cross-server enforcement to make sense, so the builder
451
+ // offers enforceAcrossServers as soon as any condition names one.
452
+ export const IDENTITY_AWARE_CONDITION_FIELDS = Object.keys(CONDITION_FIELDS).filter((field) => CONDITION_FIELDS[field].identityAware);
453
+ /** Every field a trigger of this context can supply; a definition with no triggers offers all of them. */
454
+ export function fieldsAvailableFor(context) {
455
+ const fields = Object.keys(CONDITION_FIELDS);
456
+ if (context === null)
457
+ return fields;
458
+ return fields.filter((field) => contextSupplies(context, CONDITION_FIELDS[field].requires));
459
+ }
460
+ //# sourceMappingURL=conditions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditions.js","sourceRoot":"","sources":["../../src/automations/conditions.ts"],"names":[],"mappings":"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"}