@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.
- package/dist/automations/__tests__/actions.test.d.ts +2 -0
- package/dist/automations/__tests__/actions.test.d.ts.map +1 -0
- package/dist/automations/__tests__/actions.test.js +68 -0
- package/dist/automations/__tests__/actions.test.js.map +1 -0
- package/dist/automations/__tests__/conditions.test.d.ts +2 -0
- package/dist/automations/__tests__/conditions.test.d.ts.map +1 -0
- package/dist/automations/__tests__/conditions.test.js +55 -0
- package/dist/automations/__tests__/conditions.test.js.map +1 -0
- package/dist/automations/__tests__/definition.test.d.ts +2 -0
- package/dist/automations/__tests__/definition.test.d.ts.map +1 -0
- package/dist/automations/__tests__/definition.test.js +376 -0
- package/dist/automations/__tests__/definition.test.js.map +1 -0
- package/dist/automations/__tests__/share.test.d.ts +2 -0
- package/dist/automations/__tests__/share.test.d.ts.map +1 -0
- package/dist/automations/__tests__/share.test.js +98 -0
- package/dist/automations/__tests__/share.test.js.map +1 -0
- package/dist/automations/__tests__/templates.test.d.ts +2 -0
- package/dist/automations/__tests__/templates.test.d.ts.map +1 -0
- package/dist/automations/__tests__/templates.test.js +278 -0
- package/dist/automations/__tests__/templates.test.js.map +1 -0
- package/dist/automations/__tests__/triggers.test.d.ts +2 -0
- package/dist/automations/__tests__/triggers.test.d.ts.map +1 -0
- package/dist/automations/__tests__/triggers.test.js +42 -0
- package/dist/automations/__tests__/triggers.test.js.map +1 -0
- package/dist/automations/actions.d.ts +783 -0
- package/dist/automations/actions.d.ts.map +1 -0
- package/dist/automations/actions.js +97 -0
- package/dist/automations/actions.js.map +1 -0
- package/dist/automations/conditions.d.ts +459 -0
- package/dist/automations/conditions.d.ts.map +1 -0
- package/dist/automations/conditions.js +460 -0
- package/dist/automations/conditions.js.map +1 -0
- package/dist/automations/definition.d.ts +1389 -0
- package/dist/automations/definition.d.ts.map +1 -0
- package/dist/automations/definition.js +215 -0
- package/dist/automations/definition.js.map +1 -0
- package/dist/automations/dryRun.d.ts +413 -0
- package/dist/automations/dryRun.d.ts.map +1 -0
- package/dist/automations/dryRun.js +9 -0
- package/dist/automations/dryRun.js.map +1 -0
- package/dist/automations/index.d.ts +8 -0
- package/dist/automations/index.d.ts.map +1 -0
- package/dist/automations/index.js +8 -0
- package/dist/automations/index.js.map +1 -0
- package/dist/automations/share.d.ts +27 -0
- package/dist/automations/share.d.ts.map +1 -0
- package/dist/automations/share.js +119 -0
- package/dist/automations/share.js.map +1 -0
- package/dist/automations/templates.d.ts +1304 -0
- package/dist/automations/templates.d.ts.map +1 -0
- package/dist/automations/templates.js +525 -0
- package/dist/automations/templates.js.map +1 -0
- package/dist/automations/triggers.d.ts +141 -0
- package/dist/automations/triggers.d.ts.map +1 -0
- package/dist/automations/triggers.js +177 -0
- package/dist/automations/triggers.js.map +1 -0
- package/dist/constants.d.ts +22 -40
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +25 -56
- package/dist/constants.js.map +1 -1
- package/dist/destinations.d.ts +21 -22
- package/dist/destinations.d.ts.map +1 -1
- package/dist/destinations.js +13 -2
- package/dist/destinations.js.map +1 -1
- package/dist/index.d.ts +10 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -9
- package/dist/index.js.map +1 -1
- package/dist/listQuery.d.ts +41 -0
- package/dist/listQuery.d.ts.map +1 -0
- package/dist/listQuery.js +33 -0
- package/dist/listQuery.js.map +1 -0
- package/dist/media.d.ts +2 -0
- package/dist/media.d.ts.map +1 -1
- package/dist/media.js +2 -1
- package/dist/media.js.map +1 -1
- package/dist/schemas.d.ts +152 -832
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +90 -287
- package/dist/schemas.js.map +1 -1
- package/dist/types.d.ts +51 -137
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/violations.d.ts +2 -1
- package/dist/violations.d.ts.map +1 -1
- package/dist/violations.js +7 -0
- package/dist/violations.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dryRun.d.ts","sourceRoot":"","sources":["../../src/automations/dryRun.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAI9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,qEAAqE;AACrE,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACnC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,iFAAiF;IACjF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB,kEAAkE;IAClE,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { uuidSchema } from '../schemas.js';
|
|
3
|
+
import { createAutomationSchema } from './definition.js';
|
|
4
|
+
export const dryRunRequestSchema = z.object({
|
|
5
|
+
definition: createAutomationSchema,
|
|
6
|
+
/** One session to check instead of the live set; a run's session id, when it had one. */
|
|
7
|
+
sample: z.object({ sessionId: uuidSchema }).optional(),
|
|
8
|
+
});
|
|
9
|
+
//# sourceMappingURL=dryRun.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dryRun.js","sourceRoot":"","sources":["../../src/automations/dryRun.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAIzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,UAAU,EAAE,sBAAsB;IAClC,yFAAyF;IACzF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC,QAAQ,EAAE;CACvD,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/automations/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/automations/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { TemplateEnvelope } from './templates.js';
|
|
2
|
+
export declare const SHARE_CODE_PREFIX = "tracearr1.";
|
|
3
|
+
export type ShareCodeReason = 'prefix' | 'too_long' | 'incomplete' | 'too_deep' | 'invalid_json';
|
|
4
|
+
export declare class ShareCodeError extends Error {
|
|
5
|
+
readonly reason: ShareCodeReason;
|
|
6
|
+
constructor(reason: ShareCodeReason);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* JSON.stringify with object keys sorted and undefined dropped: payloads that
|
|
10
|
+
* differ only in key order serialize identically, so they fingerprint the same.
|
|
11
|
+
*/
|
|
12
|
+
export declare function canonicalJson(value: unknown): string;
|
|
13
|
+
/** Hex sha256 over the canonical form; the hash itself is injected so shared stays platform-neutral. */
|
|
14
|
+
export declare function fingerprintOf(parts: {
|
|
15
|
+
inputs: unknown;
|
|
16
|
+
definition: unknown;
|
|
17
|
+
}, sha256Hex: (text: string) => string): string;
|
|
18
|
+
export declare function encodeShareCode(envelope: TemplateEnvelope, deflateRaw: (bytes: Uint8Array) => Uint8Array): string;
|
|
19
|
+
/** Throws `too_deep` past the cap; a pasted envelope needs this without a code to decode. */
|
|
20
|
+
export declare function assertShareDepth(value: unknown, remaining?: number): void;
|
|
21
|
+
/** Returns whatever the code carried; the caller decides whether it is an envelope. */
|
|
22
|
+
export declare function decodeShareCode(code: string, inflateRaw: (bytes: Uint8Array, maxOut: number) => Uint8Array, limits?: {
|
|
23
|
+
maxCode: number;
|
|
24
|
+
maxOut: number;
|
|
25
|
+
maxDepth: number;
|
|
26
|
+
}): unknown;
|
|
27
|
+
//# sourceMappingURL=share.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"share.d.ts","sourceRoot":"","sources":["../../src/automations/share.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAO9C,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,UAAU,GAAG,cAAc,CAAC;AAEjG,qBAAa,cAAe,SAAQ,KAAK;IAC3B,QAAQ,CAAC,MAAM,EAAE,eAAe;gBAAvB,MAAM,EAAE,eAAe;CAI7C;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAUpD;AAED,wGAAwG;AACxG,wBAAgB,aAAa,CAC3B,KAAK,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,EAC/C,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAClC,MAAM,CAER;AA2CD,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,gBAAgB,EAC1B,UAAU,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,UAAU,GAC5C,MAAM,CAGR;AAED,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,GAAE,MAAwB,GAAG,IAAI,CAW1F;AAED,uFAAuF;AACvF,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,KAAK,UAAU,EAC7D,MAAM,GAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAmB,GAC7E,OAAO,CAkBT"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
export const SHARE_CODE_PREFIX = 'tracearr1.';
|
|
2
|
+
/** How deep a shared payload may nest, whether it arrived as a code or as JSON. */
|
|
3
|
+
const SHARE_MAX_DEPTH = 32;
|
|
4
|
+
const DEFAULT_LIMITS = { maxCode: 65536, maxOut: 1048576, maxDepth: SHARE_MAX_DEPTH };
|
|
5
|
+
export class ShareCodeError extends Error {
|
|
6
|
+
reason;
|
|
7
|
+
constructor(reason) {
|
|
8
|
+
super(`share code rejected: ${reason}`);
|
|
9
|
+
this.reason = reason;
|
|
10
|
+
this.name = 'ShareCodeError';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* JSON.stringify with object keys sorted and undefined dropped: payloads that
|
|
15
|
+
* differ only in key order serialize identically, so they fingerprint the same.
|
|
16
|
+
*/
|
|
17
|
+
export function canonicalJson(value) {
|
|
18
|
+
if (Array.isArray(value))
|
|
19
|
+
return `[${value.map(canonicalJson).join(',')}]`;
|
|
20
|
+
if (value !== null && typeof value === 'object' && !(value instanceof Date)) {
|
|
21
|
+
const entries = Object.entries(value)
|
|
22
|
+
.filter(([, item]) => item !== undefined)
|
|
23
|
+
.sort(([left], [right]) => (left < right ? -1 : 1))
|
|
24
|
+
.map(([key, item]) => `${JSON.stringify(key)}:${canonicalJson(item)}`);
|
|
25
|
+
return `{${entries.join(',')}}`;
|
|
26
|
+
}
|
|
27
|
+
return JSON.stringify(value) ?? 'null';
|
|
28
|
+
}
|
|
29
|
+
/** Hex sha256 over the canonical form; the hash itself is injected so shared stays platform-neutral. */
|
|
30
|
+
export function fingerprintOf(parts, sha256Hex) {
|
|
31
|
+
return sha256Hex(canonicalJson({ inputs: parts.inputs, definition: parts.definition }));
|
|
32
|
+
}
|
|
33
|
+
const ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';
|
|
34
|
+
const VALUES = new Map();
|
|
35
|
+
for (let index = 0; index < ALPHABET.length; index += 1) {
|
|
36
|
+
VALUES.set(ALPHABET.charAt(index), index);
|
|
37
|
+
}
|
|
38
|
+
function toBase64Url(bytes) {
|
|
39
|
+
let out = '';
|
|
40
|
+
for (let index = 0; index < bytes.length; index += 3) {
|
|
41
|
+
const first = bytes[index] ?? 0;
|
|
42
|
+
const second = bytes[index + 1];
|
|
43
|
+
const third = bytes[index + 2];
|
|
44
|
+
out += ALPHABET.charAt(first >> 2);
|
|
45
|
+
out += ALPHABET.charAt(((first & 0b11) << 4) | ((second ?? 0) >> 4));
|
|
46
|
+
if (second === undefined)
|
|
47
|
+
break;
|
|
48
|
+
out += ALPHABET.charAt(((second & 0b1111) << 2) | ((third ?? 0) >> 6));
|
|
49
|
+
if (third === undefined)
|
|
50
|
+
break;
|
|
51
|
+
out += ALPHABET.charAt(third & 0b111111);
|
|
52
|
+
}
|
|
53
|
+
return out;
|
|
54
|
+
}
|
|
55
|
+
function fromBase64Url(text) {
|
|
56
|
+
if (text.length % 4 === 1)
|
|
57
|
+
throw new ShareCodeError('incomplete');
|
|
58
|
+
const bytes = new Uint8Array((text.length * 3) >> 2);
|
|
59
|
+
let written = 0;
|
|
60
|
+
let buffer = 0;
|
|
61
|
+
let bits = 0;
|
|
62
|
+
for (const char of text) {
|
|
63
|
+
const value = VALUES.get(char);
|
|
64
|
+
if (value === undefined)
|
|
65
|
+
throw new ShareCodeError('incomplete');
|
|
66
|
+
buffer = (buffer << 6) | value;
|
|
67
|
+
bits += 6;
|
|
68
|
+
if (bits < 8)
|
|
69
|
+
continue;
|
|
70
|
+
bits -= 8;
|
|
71
|
+
bytes[written] = (buffer >> bits) & 0xff;
|
|
72
|
+
written += 1;
|
|
73
|
+
}
|
|
74
|
+
return bytes.subarray(0, written);
|
|
75
|
+
}
|
|
76
|
+
export function encodeShareCode(envelope, deflateRaw) {
|
|
77
|
+
const payload = new TextEncoder().encode(canonicalJson(envelope));
|
|
78
|
+
return SHARE_CODE_PREFIX + toBase64Url(deflateRaw(payload));
|
|
79
|
+
}
|
|
80
|
+
/** Throws `too_deep` past the cap; a pasted envelope needs this without a code to decode. */
|
|
81
|
+
export function assertShareDepth(value, remaining = SHARE_MAX_DEPTH) {
|
|
82
|
+
if (remaining < 0)
|
|
83
|
+
throw new ShareCodeError('too_deep');
|
|
84
|
+
if (Array.isArray(value)) {
|
|
85
|
+
for (const item of value)
|
|
86
|
+
assertShareDepth(item, remaining - 1);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (value !== null && typeof value === 'object') {
|
|
90
|
+
for (const item of Object.values(value)) {
|
|
91
|
+
assertShareDepth(item, remaining - 1);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/** Returns whatever the code carried; the caller decides whether it is an envelope. */
|
|
96
|
+
export function decodeShareCode(code, inflateRaw, limits = DEFAULT_LIMITS) {
|
|
97
|
+
if (code.length > limits.maxCode)
|
|
98
|
+
throw new ShareCodeError('too_long');
|
|
99
|
+
if (!code.startsWith(SHARE_CODE_PREFIX))
|
|
100
|
+
throw new ShareCodeError('prefix');
|
|
101
|
+
const bytes = fromBase64Url(code.slice(SHARE_CODE_PREFIX.length));
|
|
102
|
+
let json;
|
|
103
|
+
try {
|
|
104
|
+
json = new TextDecoder().decode(inflateRaw(bytes, limits.maxOut));
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
throw new ShareCodeError('incomplete');
|
|
108
|
+
}
|
|
109
|
+
let value;
|
|
110
|
+
try {
|
|
111
|
+
value = JSON.parse(json);
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
throw new ShareCodeError('invalid_json');
|
|
115
|
+
}
|
|
116
|
+
assertShareDepth(value, limits.maxDepth);
|
|
117
|
+
return value;
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=share.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"share.js","sourceRoot":"","sources":["../../src/automations/share.ts"],"names":[],"mappings":"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"}
|