@scopieflows/app-dittofeed 0.1.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.
- package/README.md +94 -0
- package/package.json +28 -0
- package/src/i18n/de.json +19 -0
- package/src/i18n/es.json +19 -0
- package/src/i18n/fr.json +19 -0
- package/src/i18n/ja.json +19 -0
- package/src/i18n/nl.json +19 -0
- package/src/i18n/pt.json +19 -0
- package/src/i18n/translation.json +19 -0
- package/src/i18n/zh.json +19 -0
- package/src/index.d.ts +8 -0
- package/src/index.js +41 -0
- package/src/index.js.map +1 -0
- package/src/lib/actions/identify.d.ts +7 -0
- package/src/lib/actions/identify.js +62 -0
- package/src/lib/actions/identify.js.map +1 -0
- package/src/lib/actions/screen.d.ts +8 -0
- package/src/lib/actions/screen.js +67 -0
- package/src/lib/actions/screen.js.map +1 -0
- package/src/lib/actions/track.d.ts +8 -0
- package/src/lib/actions/track.js +67 -0
- package/src/lib/actions/track.js.map +1 -0
package/README.md
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Dittofeed Piece for ScopieFlows
|
|
2
|
+
|
|
3
|
+
This piece provides integration with [Dittofeed](https://dittofeed.com/), a customer data platform for user analytics and tracking.
|
|
4
|
+
|
|
5
|
+
## Authentication
|
|
6
|
+
|
|
7
|
+
To use the Dittofeed piece, you need to provide:
|
|
8
|
+
|
|
9
|
+
1. **API Key**: Your Dittofeed API key for authentication
|
|
10
|
+
2. **Base URL**: The base URL of your Dittofeed instance (e.g., `https://api.dittofeed.com` or your self-hosted instance URL)
|
|
11
|
+
|
|
12
|
+
## Actions
|
|
13
|
+
|
|
14
|
+
### Identify User
|
|
15
|
+
|
|
16
|
+
Identify a user in Dittofeed with their unique ID and traits.
|
|
17
|
+
|
|
18
|
+
**Parameters:**
|
|
19
|
+
- **User ID** (required): A unique identifier for the user
|
|
20
|
+
- **User Traits** (optional): An object containing user properties like name, email, etc.
|
|
21
|
+
|
|
22
|
+
**Example:**
|
|
23
|
+
```json
|
|
24
|
+
{
|
|
25
|
+
"userId": "user123",
|
|
26
|
+
"traits": {
|
|
27
|
+
"name": "John Doe",
|
|
28
|
+
"email": "john@example.com",
|
|
29
|
+
"plan": "premium"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Track Event
|
|
35
|
+
|
|
36
|
+
Track a user event in Dittofeed.
|
|
37
|
+
|
|
38
|
+
**Parameters:**
|
|
39
|
+
- **User ID** (required): A unique identifier for the user
|
|
40
|
+
- **Event** (required): The name of the event to track
|
|
41
|
+
- **Properties** (optional): An object containing event properties
|
|
42
|
+
|
|
43
|
+
**Example:**
|
|
44
|
+
```json
|
|
45
|
+
{
|
|
46
|
+
"userId": "user123",
|
|
47
|
+
"event": "purchase_completed",
|
|
48
|
+
"properties": {
|
|
49
|
+
"product": "Premium Plan",
|
|
50
|
+
"price": 99.99,
|
|
51
|
+
"currency": "USD"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Screen View
|
|
57
|
+
|
|
58
|
+
Track a screen view event in Dittofeed.
|
|
59
|
+
|
|
60
|
+
**Parameters:**
|
|
61
|
+
- **User ID** (required): A unique identifier for the user
|
|
62
|
+
- **Name** (required): The name of the screen viewed
|
|
63
|
+
- **Properties** (optional): An object containing screen view properties
|
|
64
|
+
|
|
65
|
+
**Example:**
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"userId": "user123",
|
|
69
|
+
"name": "checkout_page",
|
|
70
|
+
"properties": {
|
|
71
|
+
"referrer": "product_page",
|
|
72
|
+
"device": "mobile"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Troubleshooting
|
|
78
|
+
|
|
79
|
+
### Common Errors
|
|
80
|
+
|
|
81
|
+
1. **Authentication failed**: Check that your API key is correct and has the necessary permissions.
|
|
82
|
+
2. **API endpoint not found**: Verify that your base URL is correct and points to a valid Dittofeed instance.
|
|
83
|
+
3. **Rate limit exceeded**: You've made too many requests in a short period. Wait and try again later.
|
|
84
|
+
4. **Invalid input**: Ensure that your User ID is not empty and that traits/properties are valid objects.
|
|
85
|
+
|
|
86
|
+
### Best Practices
|
|
87
|
+
|
|
88
|
+
1. Use consistent User IDs across all actions to ensure proper user tracking.
|
|
89
|
+
2. Keep event names consistent and descriptive for better analytics.
|
|
90
|
+
3. Include relevant properties with events and screen views to capture valuable context.
|
|
91
|
+
|
|
92
|
+
## Building
|
|
93
|
+
|
|
94
|
+
Run `nx build pieces-dittofeed` to build the library.
|
package/package.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@scopieflows/app-dittofeed",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "commonjs",
|
|
5
|
+
"main": "./src/index.js",
|
|
6
|
+
"types": "./src/index.d.ts",
|
|
7
|
+
"dependencies": {
|
|
8
|
+
"@sinclair/typebox": "0.34.11",
|
|
9
|
+
"ai": "^6.0.0",
|
|
10
|
+
"axios": "1.13.1",
|
|
11
|
+
"axios-retry": "4.4.1",
|
|
12
|
+
"deepmerge-ts": "7.1.0",
|
|
13
|
+
"form-data": "4.0.4",
|
|
14
|
+
"i18next": "23.13.0",
|
|
15
|
+
"mime-types": "2.1.35",
|
|
16
|
+
"nanoid": "3.3.8",
|
|
17
|
+
"semver": "7.6.0",
|
|
18
|
+
"socket.io-client": "4.8.1",
|
|
19
|
+
"tslib": "^2.3.0",
|
|
20
|
+
"zod": "4.1.13",
|
|
21
|
+
"@scopieflows/pieces-common": "0.11.2",
|
|
22
|
+
"@scopieflows/pieces-framework": "0.25.0",
|
|
23
|
+
"@scopieflows/shared": "0.33.0"
|
|
24
|
+
},
|
|
25
|
+
"resolutions": {
|
|
26
|
+
"rollup": "npm:@rollup/wasm-node"
|
|
27
|
+
}
|
|
28
|
+
}
|
package/src/i18n/de.json
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Customer data platform for user analytics and tracking": "Kundendatenplattform für Benutzeranalyse und -verfolgung",
|
|
3
|
+
"API Key": "API-Schlüssel",
|
|
4
|
+
"Base URL": "Basis-URL",
|
|
5
|
+
"Your API key of Dittofeed.": "Ihr API-Schlüssel des Dittofeed.",
|
|
6
|
+
"The base URL of your Dittofeed instance.": "Die Basis-URL deiner Dittofeed-Instanz.",
|
|
7
|
+
"Identify User": "Benutzer identifizieren",
|
|
8
|
+
"Track Event": "Ereignis verfolgen",
|
|
9
|
+
"Screen Event": "Bildschirmereignis",
|
|
10
|
+
"Identify a user in Dittofeed.": "Benutzer im Dittofeed identifizieren.",
|
|
11
|
+
"Track an event for a user.": "Verfolgen Sie ein Ereignis für einen Benutzer.",
|
|
12
|
+
"Track a screen view event.": "Verfolgen Sie eine Bildschirmansicht.",
|
|
13
|
+
"User ID": "Benutzer-ID",
|
|
14
|
+
"User Traits": "Benutzereigenschaften",
|
|
15
|
+
"Event Name": "Ereignisname",
|
|
16
|
+
"Event Properties": "Ereigniseigenschaften",
|
|
17
|
+
"Screen Name": "Bildschirmname",
|
|
18
|
+
"Screen Properties": "Bildschirmeigenschaften"
|
|
19
|
+
}
|
package/src/i18n/es.json
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Customer data platform for user analytics and tracking": "Plataforma de datos de clientes para análisis y seguimiento de usuarios",
|
|
3
|
+
"API Key": "Clave API",
|
|
4
|
+
"Base URL": "URL base",
|
|
5
|
+
"Your API key of Dittofeed.": "Tu clave API de Dittofeed.",
|
|
6
|
+
"The base URL of your Dittofeed instance.": "La URL base de tu instancia de Dittofeed.",
|
|
7
|
+
"Identify User": "Identificar usuario",
|
|
8
|
+
"Track Event": "Rastrear evento",
|
|
9
|
+
"Screen Event": "Evento de pantalla",
|
|
10
|
+
"Identify a user in Dittofeed.": "Identificar un usuario en Dittofeed.",
|
|
11
|
+
"Track an event for a user.": "Rastrear un evento para un usuario.",
|
|
12
|
+
"Track a screen view event.": "Rastrear un evento de vista de pantalla.",
|
|
13
|
+
"User ID": "ID Usuario",
|
|
14
|
+
"User Traits": "Rasgos de usuario",
|
|
15
|
+
"Event Name": "Nombre del evento",
|
|
16
|
+
"Event Properties": "Propiedades del evento",
|
|
17
|
+
"Screen Name": "Nombre de usuario",
|
|
18
|
+
"Screen Properties": "Propiedades de pantalla"
|
|
19
|
+
}
|
package/src/i18n/fr.json
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Customer data platform for user analytics and tracking": "Plateforme de données client pour l'analyse et le suivi des utilisateurs",
|
|
3
|
+
"API Key": "Clé API",
|
|
4
|
+
"Base URL": "URL de base",
|
|
5
|
+
"Your API key of Dittofeed.": "Votre clé API de Dittofeed.",
|
|
6
|
+
"The base URL of your Dittofeed instance.": "L'URL de base de votre instance Dittofeed.",
|
|
7
|
+
"Identify User": "Identifier l'utilisateur",
|
|
8
|
+
"Track Event": "Suivre l'évènement",
|
|
9
|
+
"Screen Event": "Evénement de l'écran",
|
|
10
|
+
"Identify a user in Dittofeed.": "Identifier un utilisateur dans Dittofeed.",
|
|
11
|
+
"Track an event for a user.": "Suivre un événement pour un utilisateur.",
|
|
12
|
+
"Track a screen view event.": "Suivre un événement en vue d'écran.",
|
|
13
|
+
"User ID": "Identifiant de l'utilisateur",
|
|
14
|
+
"User Traits": "Caractéristiques de l'utilisateur",
|
|
15
|
+
"Event Name": "Nom de l'événement",
|
|
16
|
+
"Event Properties": "Propriétés de l'événement",
|
|
17
|
+
"Screen Name": "Nom d'écran",
|
|
18
|
+
"Screen Properties": "Propriétés de l'écran"
|
|
19
|
+
}
|
package/src/i18n/ja.json
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Customer data platform for user analytics and tracking": "ユーザー分析と追跡のための顧客データプラットフォーム",
|
|
3
|
+
"API Key": "API キー",
|
|
4
|
+
"Base URL": "ベースURL",
|
|
5
|
+
"Your API key of Dittofeed.": "ディットフィードの API キー。",
|
|
6
|
+
"The base URL of your Dittofeed instance.": "DittofeedインスタンスのベースURL。",
|
|
7
|
+
"Identify User": "ユーザーを識別する",
|
|
8
|
+
"Track Event": "イベントを追跡",
|
|
9
|
+
"Screen Event": "スクリーンイベント",
|
|
10
|
+
"Identify a user in Dittofeed.": "Dittofeedでユーザーを識別します。",
|
|
11
|
+
"Track an event for a user.": "ユーザーのイベントを追跡します。",
|
|
12
|
+
"Track a screen view event.": "画面表示イベントを追跡します。",
|
|
13
|
+
"User ID": "ユーザー ID",
|
|
14
|
+
"User Traits": "ユーザーの特性",
|
|
15
|
+
"Event Name": "イベント名",
|
|
16
|
+
"Event Properties": "イベントのプロパティ",
|
|
17
|
+
"Screen Name": "画面名",
|
|
18
|
+
"Screen Properties": "画面のプロパティ"
|
|
19
|
+
}
|
package/src/i18n/nl.json
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Customer data platform for user analytics and tracking": "Platform voor klantgegevens voor gebruikersanalyses en het volgen van gegevens",
|
|
3
|
+
"API Key": "API Sleutel",
|
|
4
|
+
"Base URL": "Basis URL",
|
|
5
|
+
"Your API key of Dittofeed.": "Je API-sleutel van Dittofeed.",
|
|
6
|
+
"The base URL of your Dittofeed instance.": "De basis-URL van je Dittofeed instantie.",
|
|
7
|
+
"Identify User": "Identificeer gebruiker",
|
|
8
|
+
"Track Event": "Volg Evenement",
|
|
9
|
+
"Screen Event": "Scherm Evenement",
|
|
10
|
+
"Identify a user in Dittofeed.": "Identificeer een gebruiker in Dittofeed.",
|
|
11
|
+
"Track an event for a user.": "Volg een gebeurtenis voor een gebruiker.",
|
|
12
|
+
"Track a screen view event.": "Houd een schermweergave gebeurtenis bij.",
|
|
13
|
+
"User ID": "Gebruiker ID",
|
|
14
|
+
"User Traits": "Gebruiker Eigenschappen",
|
|
15
|
+
"Event Name": "Naam van gebeurtenis",
|
|
16
|
+
"Event Properties": "Evenement eigenschappen",
|
|
17
|
+
"Screen Name": "Schermnaam",
|
|
18
|
+
"Screen Properties": "Scherm Eigenschappen"
|
|
19
|
+
}
|
package/src/i18n/pt.json
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Customer data platform for user analytics and tracking": "Plataforma de dados do cliente para análise e rastreamento do usuário",
|
|
3
|
+
"API Key": "Chave de API",
|
|
4
|
+
"Base URL": "URL Base",
|
|
5
|
+
"Your API key of Dittofeed.": "Sua chave da API do Dittofeed.",
|
|
6
|
+
"The base URL of your Dittofeed instance.": "A URL base da instância do Dittofeed",
|
|
7
|
+
"Identify User": "Identificar Usuário",
|
|
8
|
+
"Track Event": "Rastrear evento",
|
|
9
|
+
"Screen Event": "Evento Tela",
|
|
10
|
+
"Identify a user in Dittofeed.": "Identificar um usuário em Dittofeed.",
|
|
11
|
+
"Track an event for a user.": "Acompanha um evento para um usuário.",
|
|
12
|
+
"Track a screen view event.": "Rastrear um evento de visualização de tela.",
|
|
13
|
+
"User ID": "ID de usuário",
|
|
14
|
+
"User Traits": "Características do Usuário",
|
|
15
|
+
"Event Name": "Nome do Evento",
|
|
16
|
+
"Event Properties": "Propriedades do evento",
|
|
17
|
+
"Screen Name": "Nome de exibição",
|
|
18
|
+
"Screen Properties": "Propriedades da tela"
|
|
19
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Customer data platform for user analytics and tracking": "Customer data platform for user analytics and tracking",
|
|
3
|
+
"API Key": "API Key",
|
|
4
|
+
"Base URL": "Base URL",
|
|
5
|
+
"Your API key of Dittofeed.": "Your API key of Dittofeed.",
|
|
6
|
+
"The base URL of your Dittofeed instance.": "The base URL of your Dittofeed instance.",
|
|
7
|
+
"Identify User": "Identify User",
|
|
8
|
+
"Track Event": "Track Event",
|
|
9
|
+
"Screen Event": "Screen Event",
|
|
10
|
+
"Identify a user in Dittofeed.": "Identify a user in Dittofeed.",
|
|
11
|
+
"Track an event for a user.": "Track an event for a user.",
|
|
12
|
+
"Track a screen view event.": "Track a screen view event.",
|
|
13
|
+
"User ID": "User ID",
|
|
14
|
+
"User Traits": "User Traits",
|
|
15
|
+
"Event Name": "Event Name",
|
|
16
|
+
"Event Properties": "Event Properties",
|
|
17
|
+
"Screen Name": "Screen Name",
|
|
18
|
+
"Screen Properties": "Screen Properties"
|
|
19
|
+
}
|
package/src/i18n/zh.json
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Customer data platform for user analytics and tracking": "Customer data platform for user analytics and tracking",
|
|
3
|
+
"API Key": "API 密钥",
|
|
4
|
+
"Base URL": "基本网址",
|
|
5
|
+
"Your API key of Dittofeed.": "Your API key of Dittofeed.",
|
|
6
|
+
"The base URL of your Dittofeed instance.": "The base URL of your Dittofeed instance.",
|
|
7
|
+
"Identify User": "Identify User",
|
|
8
|
+
"Track Event": "Track Event",
|
|
9
|
+
"Screen Event": "Screen Event",
|
|
10
|
+
"Identify a user in Dittofeed.": "Identify a user in Dittofeed.",
|
|
11
|
+
"Track an event for a user.": "Track an event for a user.",
|
|
12
|
+
"Track a screen view event.": "Track a screen view event.",
|
|
13
|
+
"User ID": "User ID",
|
|
14
|
+
"User Traits": "User Traits",
|
|
15
|
+
"Event Name": "Event Name",
|
|
16
|
+
"Event Properties": "Event Properties",
|
|
17
|
+
"Screen Name": "Screen Name",
|
|
18
|
+
"Screen Properties": "Screen Properties"
|
|
19
|
+
}
|
package/src/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const dittofeedAuth: import("@scopieflows/pieces-framework").CustomAuthProperty<{
|
|
2
|
+
apiKey: import("@scopieflows/pieces-framework").SecretTextProperty<true>;
|
|
3
|
+
baseUrl: import("@scopieflows/pieces-framework").ShortTextProperty<true>;
|
|
4
|
+
}>;
|
|
5
|
+
export declare const dittofeed: import("@scopieflows/pieces-framework").Piece<import("@scopieflows/pieces-framework").CustomAuthProperty<{
|
|
6
|
+
apiKey: import("@scopieflows/pieces-framework").SecretTextProperty<true>;
|
|
7
|
+
baseUrl: import("@scopieflows/pieces-framework").ShortTextProperty<true>;
|
|
8
|
+
}>>;
|
package/src/index.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dittofeed = exports.dittofeedAuth = void 0;
|
|
4
|
+
const pieces_framework_1 = require("@scopieflows/pieces-framework");
|
|
5
|
+
const shared_1 = require("@scopieflows/shared");
|
|
6
|
+
const identify_1 = require("./lib/actions/identify");
|
|
7
|
+
const track_1 = require("./lib/actions/track");
|
|
8
|
+
const screen_1 = require("./lib/actions/screen");
|
|
9
|
+
exports.dittofeedAuth = pieces_framework_1.PieceAuth.CustomAuth({
|
|
10
|
+
props: {
|
|
11
|
+
apiKey: pieces_framework_1.PieceAuth.SecretText({
|
|
12
|
+
displayName: 'API Key',
|
|
13
|
+
required: true,
|
|
14
|
+
description: 'Your API key of Dittofeed.',
|
|
15
|
+
}),
|
|
16
|
+
baseUrl: pieces_framework_1.Property.ShortText({
|
|
17
|
+
displayName: 'Base URL',
|
|
18
|
+
required: true,
|
|
19
|
+
description: 'The base URL of your Dittofeed instance.',
|
|
20
|
+
defaultValue: 'http://localhost:3200',
|
|
21
|
+
}),
|
|
22
|
+
},
|
|
23
|
+
required: true,
|
|
24
|
+
});
|
|
25
|
+
exports.dittofeed = (0, pieces_framework_1.createPiece)({
|
|
26
|
+
displayName: "Dittofeed",
|
|
27
|
+
auth: exports.dittofeedAuth,
|
|
28
|
+
minimumSupportedRelease: '0.36.1',
|
|
29
|
+
logoUrl: "/pieces/dittofeed.png",
|
|
30
|
+
authors: [
|
|
31
|
+
'SmarterService'
|
|
32
|
+
],
|
|
33
|
+
categories: [
|
|
34
|
+
shared_1.PieceCategory.MARKETING,
|
|
35
|
+
shared_1.PieceCategory.BUSINESS_INTELLIGENCE
|
|
36
|
+
],
|
|
37
|
+
description: 'Customer data platform for user analytics and tracking',
|
|
38
|
+
actions: [identify_1.identifyAction, track_1.trackAction, screen_1.screenAction],
|
|
39
|
+
triggers: [],
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/pieces/community/dittofeed/src/index.ts"],"names":[],"mappings":";;;AAAA,oEAAiF;AACjF,gDAAoD;AAEpD,qDAAwD;AACxD,+CAAkD;AAClD,iDAAoD;AAEvC,QAAA,aAAa,GAAG,4BAAS,CAAC,UAAU,CAAC;IAChD,KAAK,EAAE;QACL,MAAM,EAAE,4BAAS,CAAC,UAAU,CAAC;YAC3B,WAAW,EAAE,SAAS;YACtB,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,4BAA4B;SAC1C,CAAC;QACF,OAAO,EAAE,2BAAQ,CAAC,SAAS,CAAC;YAC1B,WAAW,EAAE,UAAU;YACvB,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,0CAA0C;YACvD,YAAY,EAAE,uBAAuB;SACtC,CAAC;KACH;IACD,QAAQ,EAAE,IAAI;CACf,CAAC,CAAC;AAEU,QAAA,SAAS,GAAG,IAAA,8BAAW,EAAC;IACnC,WAAW,EAAE,WAAW;IACxB,IAAI,EAAE,qBAAa;IACnB,uBAAuB,EAAE,QAAQ;IACjC,OAAO,EAAE,uBAAuB;IAChC,OAAO,EAAE;QACP,gBAAgB;KACjB;IACD,UAAU,EAAE;QACV,sBAAa,CAAC,SAAS;QACvB,sBAAa,CAAC,qBAAqB;KACpC;IACD,WAAW,EAAE,wDAAwD;IACrE,OAAO,EAAE,CAAC,yBAAc,EAAE,mBAAW,EAAE,qBAAY,CAAC;IACpD,QAAQ,EAAE,EAAE;CACb,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const identifyAction: import("@scopieflows/pieces-framework").IAction<import("@scopieflows/pieces-framework").CustomAuthProperty<{
|
|
2
|
+
apiKey: import("@scopieflows/pieces-framework").SecretTextProperty<true>;
|
|
3
|
+
baseUrl: import("@scopieflows/pieces-framework").ShortTextProperty<true>;
|
|
4
|
+
}>, {
|
|
5
|
+
userId: import("@scopieflows/pieces-framework").ShortTextProperty<true>;
|
|
6
|
+
traits: import("@scopieflows/pieces-framework").ObjectProperty<false>;
|
|
7
|
+
}>;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.identifyAction = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_framework_1 = require("@scopieflows/pieces-framework");
|
|
6
|
+
const pieces_common_1 = require("@scopieflows/pieces-common");
|
|
7
|
+
const __1 = require("../..");
|
|
8
|
+
exports.identifyAction = (0, pieces_framework_1.createAction)({
|
|
9
|
+
name: 'identify',
|
|
10
|
+
auth: __1.dittofeedAuth,
|
|
11
|
+
displayName: 'Identify User',
|
|
12
|
+
description: 'Identify a user in Dittofeed.',
|
|
13
|
+
props: {
|
|
14
|
+
userId: pieces_framework_1.Property.ShortText({
|
|
15
|
+
displayName: 'User ID',
|
|
16
|
+
required: true,
|
|
17
|
+
}),
|
|
18
|
+
traits: pieces_framework_1.Property.Object({
|
|
19
|
+
displayName: 'User Traits',
|
|
20
|
+
required: false,
|
|
21
|
+
}),
|
|
22
|
+
},
|
|
23
|
+
run(context) {
|
|
24
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
var _a, _b, _c, _d, _e, _f;
|
|
26
|
+
const { userId, traits } = context.propsValue;
|
|
27
|
+
const { apiKey, baseUrl } = context.auth.props;
|
|
28
|
+
try {
|
|
29
|
+
const response = yield pieces_common_1.httpClient.sendRequest({
|
|
30
|
+
method: pieces_common_1.HttpMethod.POST,
|
|
31
|
+
url: `${baseUrl}/api/public/apps/identify`,
|
|
32
|
+
headers: {
|
|
33
|
+
Authorization: apiKey,
|
|
34
|
+
},
|
|
35
|
+
body: {
|
|
36
|
+
type: 'identify',
|
|
37
|
+
messageId: `identify-${userId}-${Date.now()}`,
|
|
38
|
+
userId,
|
|
39
|
+
traits,
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
return response.body;
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
if (((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401) {
|
|
46
|
+
throw new Error('Authentication failed. Please check your API key.');
|
|
47
|
+
}
|
|
48
|
+
else if (((_b = error.response) === null || _b === void 0 ? void 0 : _b.status) === 404) {
|
|
49
|
+
throw new Error(`Dittofeed API endpoint not found. Please check your base URL: ${baseUrl}`);
|
|
50
|
+
}
|
|
51
|
+
else if (((_c = error.response) === null || _c === void 0 ? void 0 : _c.status) === 429) {
|
|
52
|
+
throw new Error('Rate limit exceeded. Please try again later.');
|
|
53
|
+
}
|
|
54
|
+
else if (((_d = error.response) === null || _d === void 0 ? void 0 : _d.status) >= 500) {
|
|
55
|
+
throw new Error(`Dittofeed server error: ${((_f = (_e = error.response) === null || _e === void 0 ? void 0 : _e.body) === null || _f === void 0 ? void 0 : _f.message) || error.message}`);
|
|
56
|
+
}
|
|
57
|
+
throw new Error(`Failed to identify user in Dittofeed: ${error.message || 'Unknown error'}`);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=identify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identify.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/dittofeed/src/lib/actions/identify.ts"],"names":[],"mappings":";;;;AAAA,oEAAuE;AACvE,8DAAoE;AACpE,6BAAsC;AAEzB,QAAA,cAAc,GAAG,IAAA,+BAAY,EAAC;IACzC,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,iBAAa;IACnB,WAAW,EAAE,eAAe;IAC5B,WAAW,EAAE,+BAA+B;IAC5C,KAAK,EAAE;QACL,MAAM,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACzB,WAAW,EAAE,SAAS;YACtB,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,MAAM,EAAE,2BAAQ,CAAC,MAAM,CAAC;YACtB,WAAW,EAAE,aAAa;YAC1B,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;;YACf,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YAC9C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAE/C,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,0BAAU,CAAC,WAAW,CAAC;oBAC5C,MAAM,EAAE,0BAAU,CAAC,IAAI;oBACvB,GAAG,EAAE,GAAG,OAAO,2BAA2B;oBAC1C,OAAO,EAAE;wBACP,aAAa,EAAE,MAAM;qBACtB;oBACD,IAAI,EAAE;wBACJ,IAAI,EAAE,UAAU;wBAChB,SAAS,EAAE,YAAY,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;wBAC7C,MAAM;wBACN,MAAM;qBACP;iBACF,CAAC,CAAC;gBAEH,OAAO,QAAQ,CAAC,IAAI,CAAC;YACvB,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,MAAK,GAAG,EAAE,CAAC;oBACnC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;gBACvE,CAAC;qBAAM,IAAI,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,MAAK,GAAG,EAAE,CAAC;oBAC1C,MAAM,IAAI,KAAK,CAAC,iEAAiE,OAAO,EAAE,CAAC,CAAC;gBAC9F,CAAC;qBAAM,IAAI,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,MAAK,GAAG,EAAE,CAAC;oBAC1C,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBAClE,CAAC;qBAAM,IAAI,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,KAAI,GAAG,EAAE,CAAC;oBACzC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAA,MAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,IAAI,0CAAE,OAAO,KAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC/F,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,yCAAyC,KAAK,CAAC,OAAO,IAAI,eAAe,EAAE,CAAC,CAAC;YAC/F,CAAC;QACH,CAAC;KAAA;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const screenAction: import("@scopieflows/pieces-framework").IAction<import("@scopieflows/pieces-framework").CustomAuthProperty<{
|
|
2
|
+
apiKey: import("@scopieflows/pieces-framework").SecretTextProperty<true>;
|
|
3
|
+
baseUrl: import("@scopieflows/pieces-framework").ShortTextProperty<true>;
|
|
4
|
+
}>, {
|
|
5
|
+
userId: import("@scopieflows/pieces-framework").ShortTextProperty<true>;
|
|
6
|
+
name: import("@scopieflows/pieces-framework").ShortTextProperty<true>;
|
|
7
|
+
properties: import("@scopieflows/pieces-framework").ObjectProperty<false>;
|
|
8
|
+
}>;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.screenAction = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_framework_1 = require("@scopieflows/pieces-framework");
|
|
6
|
+
const pieces_common_1 = require("@scopieflows/pieces-common");
|
|
7
|
+
const __1 = require("../..");
|
|
8
|
+
exports.screenAction = (0, pieces_framework_1.createAction)({
|
|
9
|
+
name: 'screen',
|
|
10
|
+
auth: __1.dittofeedAuth,
|
|
11
|
+
displayName: 'Screen Event',
|
|
12
|
+
description: 'Track a screen view event.',
|
|
13
|
+
props: {
|
|
14
|
+
userId: pieces_framework_1.Property.ShortText({
|
|
15
|
+
displayName: 'User ID',
|
|
16
|
+
required: true,
|
|
17
|
+
}),
|
|
18
|
+
name: pieces_framework_1.Property.ShortText({
|
|
19
|
+
displayName: 'Screen Name',
|
|
20
|
+
required: true,
|
|
21
|
+
}),
|
|
22
|
+
properties: pieces_framework_1.Property.Object({
|
|
23
|
+
displayName: 'Screen Properties',
|
|
24
|
+
required: false,
|
|
25
|
+
}),
|
|
26
|
+
},
|
|
27
|
+
run(context) {
|
|
28
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
var _a, _b, _c, _d, _e, _f;
|
|
30
|
+
const { userId, name, properties } = context.propsValue;
|
|
31
|
+
const { apiKey, baseUrl } = context.auth.props;
|
|
32
|
+
try {
|
|
33
|
+
const response = yield pieces_common_1.httpClient.sendRequest({
|
|
34
|
+
method: pieces_common_1.HttpMethod.POST,
|
|
35
|
+
url: `${baseUrl}/api/public/apps/screen`,
|
|
36
|
+
headers: {
|
|
37
|
+
Authorization: apiKey,
|
|
38
|
+
},
|
|
39
|
+
body: {
|
|
40
|
+
type: 'screen',
|
|
41
|
+
messageId: `screen-${userId}-${name}-${Date.now()}`,
|
|
42
|
+
userId,
|
|
43
|
+
name,
|
|
44
|
+
properties,
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
return response.body;
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
if (((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401) {
|
|
51
|
+
throw new Error('Authentication failed. Please check your API key.');
|
|
52
|
+
}
|
|
53
|
+
else if (((_b = error.response) === null || _b === void 0 ? void 0 : _b.status) === 404) {
|
|
54
|
+
throw new Error(`Dittofeed API endpoint not found. Please check your base URL: ${baseUrl}`);
|
|
55
|
+
}
|
|
56
|
+
else if (((_c = error.response) === null || _c === void 0 ? void 0 : _c.status) === 429) {
|
|
57
|
+
throw new Error('Rate limit exceeded. Please try again later.');
|
|
58
|
+
}
|
|
59
|
+
else if (((_d = error.response) === null || _d === void 0 ? void 0 : _d.status) >= 500) {
|
|
60
|
+
throw new Error(`Dittofeed server error: ${((_f = (_e = error.response) === null || _e === void 0 ? void 0 : _e.body) === null || _f === void 0 ? void 0 : _f.message) || error.message}`);
|
|
61
|
+
}
|
|
62
|
+
throw new Error(`Failed to track screen view in Dittofeed: ${error.message || 'Unknown error'}`);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
//# sourceMappingURL=screen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screen.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/dittofeed/src/lib/actions/screen.ts"],"names":[],"mappings":";;;;AAAA,oEAAuE;AACvE,8DAAoE;AACpE,6BAAsC;AAEzB,QAAA,YAAY,GAAG,IAAA,+BAAY,EAAC;IACvC,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,iBAAa;IACnB,WAAW,EAAE,cAAc;IAC3B,WAAW,EAAE,4BAA4B;IACzC,KAAK,EAAE;QACL,MAAM,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACzB,WAAW,EAAE,SAAS;YACtB,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,IAAI,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACvB,WAAW,EAAE,aAAa;YAC1B,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,UAAU,EAAE,2BAAQ,CAAC,MAAM,CAAC;YAC1B,WAAW,EAAE,mBAAmB;YAChC,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;;YACf,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YACxD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAE/C,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,0BAAU,CAAC,WAAW,CAAC;oBAC5C,MAAM,EAAE,0BAAU,CAAC,IAAI;oBACvB,GAAG,EAAE,GAAG,OAAO,yBAAyB;oBACxC,OAAO,EAAE;wBACP,aAAa,EAAE,MAAM;qBACtB;oBACD,IAAI,EAAE;wBACJ,IAAI,EAAE,QAAQ;wBACd,SAAS,EAAE,UAAU,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;wBACnD,MAAM;wBACN,IAAI;wBACJ,UAAU;qBACX;iBACF,CAAC,CAAC;gBAEH,OAAO,QAAQ,CAAC,IAAI,CAAC;YACvB,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,MAAK,GAAG,EAAE,CAAC;oBACnC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;gBACvE,CAAC;qBAAM,IAAI,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,MAAK,GAAG,EAAE,CAAC;oBAC1C,MAAM,IAAI,KAAK,CAAC,iEAAiE,OAAO,EAAE,CAAC,CAAC;gBAC9F,CAAC;qBAAM,IAAI,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,MAAK,GAAG,EAAE,CAAC;oBAC1C,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBAClE,CAAC;qBAAM,IAAI,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,KAAI,GAAG,EAAE,CAAC;oBACzC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAA,MAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,IAAI,0CAAE,OAAO,KAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC/F,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,6CAA6C,KAAK,CAAC,OAAO,IAAI,eAAe,EAAE,CAAC,CAAC;YACnG,CAAC;QACH,CAAC;KAAA;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const trackAction: import("@scopieflows/pieces-framework").IAction<import("@scopieflows/pieces-framework").CustomAuthProperty<{
|
|
2
|
+
apiKey: import("@scopieflows/pieces-framework").SecretTextProperty<true>;
|
|
3
|
+
baseUrl: import("@scopieflows/pieces-framework").ShortTextProperty<true>;
|
|
4
|
+
}>, {
|
|
5
|
+
userId: import("@scopieflows/pieces-framework").ShortTextProperty<true>;
|
|
6
|
+
event: import("@scopieflows/pieces-framework").ShortTextProperty<true>;
|
|
7
|
+
properties: import("@scopieflows/pieces-framework").ObjectProperty<false>;
|
|
8
|
+
}>;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.trackAction = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const pieces_framework_1 = require("@scopieflows/pieces-framework");
|
|
6
|
+
const pieces_common_1 = require("@scopieflows/pieces-common");
|
|
7
|
+
const __1 = require("../..");
|
|
8
|
+
exports.trackAction = (0, pieces_framework_1.createAction)({
|
|
9
|
+
name: 'track',
|
|
10
|
+
auth: __1.dittofeedAuth,
|
|
11
|
+
displayName: 'Track Event',
|
|
12
|
+
description: 'Track an event for a user.',
|
|
13
|
+
props: {
|
|
14
|
+
userId: pieces_framework_1.Property.ShortText({
|
|
15
|
+
displayName: 'User ID',
|
|
16
|
+
required: true,
|
|
17
|
+
}),
|
|
18
|
+
event: pieces_framework_1.Property.ShortText({
|
|
19
|
+
displayName: 'Event Name',
|
|
20
|
+
required: true,
|
|
21
|
+
}),
|
|
22
|
+
properties: pieces_framework_1.Property.Object({
|
|
23
|
+
displayName: 'Event Properties',
|
|
24
|
+
required: false,
|
|
25
|
+
}),
|
|
26
|
+
},
|
|
27
|
+
run(context) {
|
|
28
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
var _a, _b, _c, _d, _e, _f;
|
|
30
|
+
const { userId, event, properties } = context.propsValue;
|
|
31
|
+
const { apiKey, baseUrl } = context.auth.props;
|
|
32
|
+
try {
|
|
33
|
+
const response = yield pieces_common_1.httpClient.sendRequest({
|
|
34
|
+
method: pieces_common_1.HttpMethod.POST,
|
|
35
|
+
url: `${baseUrl}/api/public/apps/track`,
|
|
36
|
+
headers: {
|
|
37
|
+
Authorization: apiKey,
|
|
38
|
+
},
|
|
39
|
+
body: {
|
|
40
|
+
type: 'track',
|
|
41
|
+
messageId: `track-${userId}-${event}-${Date.now()}`,
|
|
42
|
+
userId,
|
|
43
|
+
event,
|
|
44
|
+
properties,
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
return response.body;
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
if (((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 401) {
|
|
51
|
+
throw new Error('Authentication failed. Please check your API key.');
|
|
52
|
+
}
|
|
53
|
+
else if (((_b = error.response) === null || _b === void 0 ? void 0 : _b.status) === 404) {
|
|
54
|
+
throw new Error(`Dittofeed API endpoint not found. Please check your base URL: ${baseUrl}`);
|
|
55
|
+
}
|
|
56
|
+
else if (((_c = error.response) === null || _c === void 0 ? void 0 : _c.status) === 429) {
|
|
57
|
+
throw new Error('Rate limit exceeded. Please try again later.');
|
|
58
|
+
}
|
|
59
|
+
else if (((_d = error.response) === null || _d === void 0 ? void 0 : _d.status) >= 500) {
|
|
60
|
+
throw new Error(`Dittofeed server error: ${((_f = (_e = error.response) === null || _e === void 0 ? void 0 : _e.body) === null || _f === void 0 ? void 0 : _f.message) || error.message}`);
|
|
61
|
+
}
|
|
62
|
+
throw new Error(`Failed to track event in Dittofeed: ${error.message || 'Unknown error'}`);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
//# sourceMappingURL=track.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"track.js","sourceRoot":"","sources":["../../../../../../../../packages/pieces/community/dittofeed/src/lib/actions/track.ts"],"names":[],"mappings":";;;;AAAA,oEAAuE;AACvE,8DAAoE;AACpE,6BAAsC;AAEzB,QAAA,WAAW,GAAG,IAAA,+BAAY,EAAC;IACtC,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,iBAAa;IACnB,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,4BAA4B;IACzC,KAAK,EAAE;QACL,MAAM,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACzB,WAAW,EAAE,SAAS;YACtB,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,KAAK,EAAE,2BAAQ,CAAC,SAAS,CAAC;YACxB,WAAW,EAAE,YAAY;YACzB,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,UAAU,EAAE,2BAAQ,CAAC,MAAM,CAAC;YAC1B,WAAW,EAAE,kBAAkB;YAC/B,QAAQ,EAAE,KAAK;SAChB,CAAC;KACH;IACK,GAAG,CAAC,OAAO;;;YACf,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;YACzD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAE/C,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,0BAAU,CAAC,WAAW,CAAC;oBAC5C,MAAM,EAAE,0BAAU,CAAC,IAAI;oBACvB,GAAG,EAAE,GAAG,OAAO,wBAAwB;oBACvC,OAAO,EAAE;wBACP,aAAa,EAAE,MAAM;qBACtB;oBACD,IAAI,EAAE;wBACJ,IAAI,EAAE,OAAO;wBACb,SAAS,EAAE,SAAS,MAAM,IAAI,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE;wBACnD,MAAM;wBACN,KAAK;wBACL,UAAU;qBACX;iBACF,CAAC,CAAC;gBAEH,OAAO,QAAQ,CAAC,IAAI,CAAC;YACvB,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,MAAK,GAAG,EAAE,CAAC;oBACnC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;gBACvE,CAAC;qBAAM,IAAI,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,MAAK,GAAG,EAAE,CAAC;oBAC1C,MAAM,IAAI,KAAK,CAAC,iEAAiE,OAAO,EAAE,CAAC,CAAC;gBAC9F,CAAC;qBAAM,IAAI,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,MAAK,GAAG,EAAE,CAAC;oBAC1C,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBAClE,CAAC;qBAAM,IAAI,CAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,MAAM,KAAI,GAAG,EAAE,CAAC;oBACzC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAA,MAAA,MAAA,KAAK,CAAC,QAAQ,0CAAE,IAAI,0CAAE,OAAO,KAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC/F,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,uCAAuC,KAAK,CAAC,OAAO,IAAI,eAAe,EAAE,CAAC,CAAC;YAC7F,CAAC;QACH,CAAC;KAAA;CACF,CAAC,CAAC"}
|