@segment/destination-subscriptions 2.2.0-alpha.44
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/README.md +31 -0
- package/dist/cjs/generate-fql.d.ts +3 -0
- package/dist/cjs/generate-fql.js +100 -0
- package/dist/cjs/generate-fql.js.map +1 -0
- package/dist/cjs/get.d.ts +1 -0
- package/dist/cjs/get.js +14 -0
- package/dist/cjs/get.js.map +1 -0
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.js +24 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/parse-fql.d.ts +3 -0
- package/dist/cjs/parse-fql.js +396 -0
- package/dist/cjs/parse-fql.js.map +1 -0
- package/dist/cjs/types.d.ts +52 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/validate.d.ts +3 -0
- package/dist/cjs/validate.js +89 -0
- package/dist/cjs/validate.js.map +1 -0
- package/dist/esm/generate-fql.d.ts +3 -0
- package/dist/esm/generate-fql.js +98 -0
- package/dist/esm/generate-fql.js.map +1 -0
- package/dist/esm/get.d.ts +1 -0
- package/dist/esm/get.js +10 -0
- package/dist/esm/get.js.map +1 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/parse-fql.d.ts +3 -0
- package/dist/esm/parse-fql.js +394 -0
- package/dist/esm/parse-fql.js.map +1 -0
- package/dist/esm/types.d.ts +52 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/validate.d.ts +3 -0
- package/dist/esm/validate.js +87 -0
- package/dist/esm/validate.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +72 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export declare type Subscription = ErrorCondition | GroupCondition;
|
|
2
|
+
export interface GroupCondition<T = Condition> {
|
|
3
|
+
type: 'group';
|
|
4
|
+
operator: GroupConditionOperator;
|
|
5
|
+
children: T[];
|
|
6
|
+
}
|
|
7
|
+
export interface ErrorCondition {
|
|
8
|
+
error: Error;
|
|
9
|
+
}
|
|
10
|
+
export declare type Condition = GroupCondition | EventTypeCondition | EventCondition | EventPropertyCondition | EventTraitCondition | EventContextCondition | EventUserIdCondition | EventNameCondition;
|
|
11
|
+
export declare type GroupConditionOperator = 'and' | 'or';
|
|
12
|
+
export interface EventTypeCondition {
|
|
13
|
+
type: 'event-type';
|
|
14
|
+
operator: Operator;
|
|
15
|
+
value?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface EventCondition {
|
|
18
|
+
type: 'event';
|
|
19
|
+
operator: Operator;
|
|
20
|
+
value?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface EventUserIdCondition {
|
|
23
|
+
type: 'userId';
|
|
24
|
+
operator: Operator;
|
|
25
|
+
value?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface EventNameCondition {
|
|
28
|
+
type: 'name';
|
|
29
|
+
operator: Operator;
|
|
30
|
+
value?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface EventPropertyCondition {
|
|
33
|
+
type: 'event-property';
|
|
34
|
+
name: string;
|
|
35
|
+
operator: Operator;
|
|
36
|
+
value?: string | boolean | number;
|
|
37
|
+
}
|
|
38
|
+
export interface EventTraitCondition {
|
|
39
|
+
type: 'event-trait';
|
|
40
|
+
name: string;
|
|
41
|
+
operator: Operator;
|
|
42
|
+
value?: string | boolean | number;
|
|
43
|
+
}
|
|
44
|
+
export interface EventContextCondition {
|
|
45
|
+
type: 'event-context';
|
|
46
|
+
name: string;
|
|
47
|
+
operator: Operator;
|
|
48
|
+
value?: string | boolean | number;
|
|
49
|
+
}
|
|
50
|
+
export declare type Operator = '=' | '!=' | '<' | '<=' | '>' | '>=' | 'contains' | 'not_contains' | 'starts_with' | 'not_starts_with' | 'ends_with' | 'not_ends_with' | 'exists' | 'not_exists' | 'is_true' | 'is_false';
|
|
51
|
+
export declare type ConditionType = 'group' | 'event-type' | 'event' | 'event-property' | 'event-trait' | 'event-context' | 'name' | 'userId';
|
|
52
|
+
export declare type PropertyConditionType = 'event-property' | 'event-context';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const get_1 = require("./get");
|
|
4
|
+
const validateGroupCondition = (condition, data) => {
|
|
5
|
+
if (condition.operator === 'and') {
|
|
6
|
+
return condition.children.every((childCondition) => {
|
|
7
|
+
return validateCondition(childCondition, data);
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
if (condition.operator === 'or') {
|
|
11
|
+
return condition.children.some((childCondition) => {
|
|
12
|
+
return validateCondition(childCondition, data);
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
return false;
|
|
16
|
+
};
|
|
17
|
+
const validate = (condition, data) => {
|
|
18
|
+
if (condition.error || typeof data === 'undefined') {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
return validateGroupCondition(condition, data);
|
|
22
|
+
};
|
|
23
|
+
exports.default = validate;
|
|
24
|
+
const validateCondition = (condition, data) => {
|
|
25
|
+
if (condition.type === 'event-type') {
|
|
26
|
+
return validateValue(data.type, condition.operator, condition.value);
|
|
27
|
+
}
|
|
28
|
+
if (condition.type === 'event') {
|
|
29
|
+
return validateValue(data.event, condition.operator, condition.value);
|
|
30
|
+
}
|
|
31
|
+
if (condition.type === 'name') {
|
|
32
|
+
return validateValue(data.name, condition.operator, condition.value);
|
|
33
|
+
}
|
|
34
|
+
if (condition.type === 'userId') {
|
|
35
|
+
return validateValue(data.userId, condition.operator, condition.value);
|
|
36
|
+
}
|
|
37
|
+
if (condition.type === 'event-property') {
|
|
38
|
+
return validateValue(get_1.get(data.properties, condition.name), condition.operator, condition.value);
|
|
39
|
+
}
|
|
40
|
+
if (condition.type === 'event-trait') {
|
|
41
|
+
return validateValue(get_1.get(data.traits, condition.name), condition.operator, condition.value);
|
|
42
|
+
}
|
|
43
|
+
if (condition.type === 'event-context') {
|
|
44
|
+
return validateValue(get_1.get(data.context, condition.name), condition.operator, condition.value);
|
|
45
|
+
}
|
|
46
|
+
if (condition.type === 'group') {
|
|
47
|
+
return validateGroupCondition(condition, data);
|
|
48
|
+
}
|
|
49
|
+
return false;
|
|
50
|
+
};
|
|
51
|
+
const validateValue = (actual, operator, expected) => {
|
|
52
|
+
switch (operator) {
|
|
53
|
+
case '=':
|
|
54
|
+
return actual === String(expected);
|
|
55
|
+
case '!=':
|
|
56
|
+
return actual !== String(expected);
|
|
57
|
+
case '<':
|
|
58
|
+
return Number(actual) < Number(expected);
|
|
59
|
+
case '<=':
|
|
60
|
+
return Number(actual) <= Number(expected);
|
|
61
|
+
case '>':
|
|
62
|
+
return Number(actual) > Number(expected);
|
|
63
|
+
case '>=':
|
|
64
|
+
return Number(actual) >= Number(expected);
|
|
65
|
+
case 'contains':
|
|
66
|
+
return typeof actual === 'string' && actual.includes(String(expected));
|
|
67
|
+
case 'not_contains':
|
|
68
|
+
return typeof actual === 'string' && !actual.includes(String(expected));
|
|
69
|
+
case 'starts_with':
|
|
70
|
+
return typeof actual === 'string' && actual.startsWith(String(expected));
|
|
71
|
+
case 'not_starts_with':
|
|
72
|
+
return typeof actual === 'string' && !actual.startsWith(String(expected));
|
|
73
|
+
case 'ends_with':
|
|
74
|
+
return typeof actual === 'string' && actual.endsWith(String(expected));
|
|
75
|
+
case 'not_ends_with':
|
|
76
|
+
return typeof actual === 'string' && !actual.endsWith(String(expected));
|
|
77
|
+
case 'exists':
|
|
78
|
+
return actual !== undefined && actual !== null;
|
|
79
|
+
case 'not_exists':
|
|
80
|
+
return actual === undefined || actual === null;
|
|
81
|
+
case 'is_true':
|
|
82
|
+
return typeof actual === 'boolean' && actual === true;
|
|
83
|
+
case 'is_false':
|
|
84
|
+
return typeof actual === 'boolean' && actual === false;
|
|
85
|
+
default:
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/validate.ts"],"names":[],"mappings":";;AAAA,+BAA2B;AAG3B,MAAM,sBAAsB,GAAG,CAC7B,SAAyB,EAEzB,IAAS,EACA,EAAE;IACX,IAAI,SAAS,CAAC,QAAQ,KAAK,KAAK,EAAE;QAChC,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,EAAE;YACjD,OAAO,iBAAiB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;KACH;IAED,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE;QAC/B,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,EAAE;YAChD,OAAO,iBAAiB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;KACH;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAGD,MAAM,QAAQ,GAAG,CAAC,SAAuB,EAAE,IAAS,EAAW,EAAE;IAC/D,IAAK,SAA4B,CAAC,KAAK,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;QACtE,OAAO,KAAK,CAAA;KACb;IAED,OAAO,sBAAsB,CAAC,SAA2B,EAAE,IAAI,CAAC,CAAA;AAClE,CAAC,CAAA;AAED,kBAAe,QAAQ,CAAA;AAGvB,MAAM,iBAAiB,GAAG,CAAC,SAAoB,EAAE,IAAS,EAAW,EAAE;IACrE,IAAI,SAAS,CAAC,IAAI,KAAK,YAAY,EAAE;QACnC,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;KACrE;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE;QAC9B,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;KACtE;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE;QAC7B,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;KACrE;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE;QAC/B,OAAO,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;KACvE;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,gBAAgB,EAAE;QACvC,OAAO,aAAa,CAAC,SAAG,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;KAChG;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,aAAa,EAAE;QACpC,OAAO,aAAa,CAAC,SAAG,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;KAC5F;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,eAAe,EAAE;QACtC,OAAO,aAAa,CAAC,SAAG,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;KAC7F;IAED,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE;QAC9B,OAAO,sBAAsB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;KAC/C;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,MAAe,EAAE,QAAkB,EAAE,QAAoC,EAAW,EAAE;IAC3G,QAAQ,QAAQ,EAAE;QAChB,KAAK,GAAG;YACN,OAAO,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAA;QACpC,KAAK,IAAI;YACP,OAAO,MAAM,KAAK,MAAM,CAAC,QAAQ,CAAC,CAAA;QACpC,KAAK,GAAG;YACN,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC1C,KAAK,IAAI;YACP,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC3C,KAAK,GAAG;YACN,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC1C,KAAK,IAAI;YACP,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC3C,KAAK,UAAU;YACb,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;QACxE,KAAK,cAAc;YACjB,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;QACzE,KAAK,aAAa;YAChB,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC1E,KAAK,iBAAiB;YACpB,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC3E,KAAK,WAAW;YACd,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;QACxE,KAAK,eAAe;YAClB,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;QACzE,KAAK,QAAQ;YACX,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,CAAA;QAChD,KAAK,YAAY;YACf,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,CAAA;QAChD,KAAK,SAAS;YACZ,OAAO,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,CAAA;QACvD,KAAK,UAAU;YACb,OAAO,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,KAAK,CAAA;QACxD;YACE,OAAO,KAAK,CAAA;KACf;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
const stringifyValue = (value) => {
|
|
2
|
+
if (typeof value === 'boolean' || typeof value === 'number') {
|
|
3
|
+
return String(value);
|
|
4
|
+
}
|
|
5
|
+
return `"${value}"`;
|
|
6
|
+
};
|
|
7
|
+
const fqlExpression = (name, operator, value) => {
|
|
8
|
+
switch (operator) {
|
|
9
|
+
case 'contains':
|
|
10
|
+
return `contains(${name}, ${stringifyValue(value)})`;
|
|
11
|
+
case 'not_contains':
|
|
12
|
+
return `!contains(${name}, ${stringifyValue(value)})`;
|
|
13
|
+
case 'exists':
|
|
14
|
+
return `${name} != null`;
|
|
15
|
+
case 'not_exists':
|
|
16
|
+
return `${name} = null`;
|
|
17
|
+
case 'is_true':
|
|
18
|
+
return `${name} = true`;
|
|
19
|
+
case 'is_false':
|
|
20
|
+
return `${name} = false`;
|
|
21
|
+
case 'starts_with':
|
|
22
|
+
return `match(${name}, "${String(value)}*")`;
|
|
23
|
+
case 'not_starts_with':
|
|
24
|
+
return `!match(${name}, "${String(value)}*")`;
|
|
25
|
+
case 'ends_with':
|
|
26
|
+
return `match(${name}, "*${String(value)}")`;
|
|
27
|
+
case 'not_ends_with':
|
|
28
|
+
return `!match(${name}, "*${String(value)}")`;
|
|
29
|
+
case '<':
|
|
30
|
+
case '>':
|
|
31
|
+
case '<=':
|
|
32
|
+
case '>=':
|
|
33
|
+
return `${name} ${operator} ${Number(value)}`;
|
|
34
|
+
default:
|
|
35
|
+
return `${name} ${operator} ${stringifyValue(value)}`;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
const stringifyGroupNode = (node) => {
|
|
39
|
+
return node.children
|
|
40
|
+
.map((childNode) => {
|
|
41
|
+
if (childNode.type === 'group') {
|
|
42
|
+
return `(${stringifyGroupNode(childNode)})`;
|
|
43
|
+
}
|
|
44
|
+
return stringifyChildNode(childNode);
|
|
45
|
+
})
|
|
46
|
+
.join(` ${node.operator} `);
|
|
47
|
+
};
|
|
48
|
+
const stringifyChildNode = (node) => {
|
|
49
|
+
let result = '';
|
|
50
|
+
switch (node.type) {
|
|
51
|
+
case 'name':
|
|
52
|
+
case 'userId':
|
|
53
|
+
case 'event': {
|
|
54
|
+
result += fqlExpression(node.type, node.operator, node.value);
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
case 'event-type': {
|
|
58
|
+
result += fqlExpression('type', node.operator, node.value);
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
case 'event-property': {
|
|
62
|
+
result += fqlExpression(`properties.${node.name}`, node.operator, node.value);
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
case 'event-trait': {
|
|
66
|
+
result += fqlExpression(`traits.${node.name}`, node.operator, node.value);
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
case 'event-context': {
|
|
70
|
+
result += fqlExpression(`context.${node.name}`, node.operator, node.value);
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
default:
|
|
74
|
+
throw new Error('Unknown condition type');
|
|
75
|
+
}
|
|
76
|
+
return result;
|
|
77
|
+
};
|
|
78
|
+
const numberOfParens = (string) => {
|
|
79
|
+
let parens = 0;
|
|
80
|
+
for (const char of string.split('')) {
|
|
81
|
+
if (char === '(' || char === ')') {
|
|
82
|
+
parens++;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return parens;
|
|
86
|
+
};
|
|
87
|
+
const generateFql = (ast) => {
|
|
88
|
+
if (ast.error) {
|
|
89
|
+
throw ast.error;
|
|
90
|
+
}
|
|
91
|
+
const fql = stringifyGroupNode(ast);
|
|
92
|
+
if (fql.startsWith('(') && fql.endsWith(')') && numberOfParens(fql) === 2) {
|
|
93
|
+
return fql.slice(1, -1);
|
|
94
|
+
}
|
|
95
|
+
return fql;
|
|
96
|
+
};
|
|
97
|
+
export default generateFql;
|
|
98
|
+
//# sourceMappingURL=generate-fql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-fql.js","sourceRoot":"","sources":["../../src/generate-fql.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function get<T = unknown, Default = unknown>(object: any, path: string | string[], defValue?: Default): T | undefined | Default;
|
package/dist/esm/get.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function get(object, path, defValue) {
|
|
2
|
+
if (!path)
|
|
3
|
+
return defValue;
|
|
4
|
+
const pathArray = Array.isArray(path)
|
|
5
|
+
? path
|
|
6
|
+
: path.match(/([^[.\]])+/g);
|
|
7
|
+
const value = pathArray.reduce((previousObject, key) => previousObject && previousObject[key], object);
|
|
8
|
+
return typeof value === 'undefined' ? defValue : value;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../src/get.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,GAAG,CAElB,MAAW,EACX,IAAuB,EACvB,QAAkB;IAGlB,IAAI,CAAC,IAAI;QAAE,OAAO,QAAQ,CAAA;IAI1B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACpC,CAAC,CAAC,IAAI;QACN,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAc,CAAA;IAG1C,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAE7B,CAAC,cAAc,EAAE,GAAG,EAAE,EAAE,CAAC,cAAc,IAAI,cAAc,CAAC,GAAG,CAAC,EAC9D,MAAM,CACN,CAAA;IACD,OAAO,OAAO,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAA;AACvD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,aAAa,CAAA"}
|