@faable/deploy-sdk 1.0.11 → 1.0.13
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/.github/workflows/release.yml +12 -3
- package/.releaserc +32 -0
- package/dist/FaableDeployApi.d.ts +84 -49
- package/dist/FaableDeployApi.d.ts.map +1 -1
- package/dist/FaableDeployApi.js +6 -0
- package/dist/api/api-types.d.ts +10 -11
- package/dist/api/api-types.d.ts.map +1 -1
- package/dist/api/types.d.ts +1167 -630
- package/dist/api/types.d.ts.map +1 -1
- package/package.json +3 -15
|
@@ -1,15 +1,24 @@
|
|
|
1
1
|
name: Release
|
|
2
|
-
|
|
2
|
+
permissions:
|
|
3
|
+
contents: write # necesario para push de commits y tags
|
|
4
|
+
pull-requests: write
|
|
5
|
+
issues: write
|
|
6
|
+
id-token: write
|
|
7
|
+
on:
|
|
3
8
|
push:
|
|
4
9
|
branches:
|
|
5
10
|
- main
|
|
11
|
+
- next
|
|
12
|
+
- beta
|
|
6
13
|
jobs:
|
|
7
14
|
release:
|
|
8
15
|
name: release
|
|
9
16
|
runs-on: ubuntu-latest
|
|
17
|
+
timeout-minutes: 3
|
|
18
|
+
|
|
10
19
|
steps:
|
|
11
|
-
- uses: actions/checkout@
|
|
12
|
-
- uses: actions/setup-node@
|
|
20
|
+
- uses: actions/checkout@v6
|
|
21
|
+
- uses: actions/setup-node@v6
|
|
13
22
|
with:
|
|
14
23
|
cache: npm
|
|
15
24
|
node-version: lts/*
|
package/.releaserc
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"branches": [
|
|
3
|
+
{
|
|
4
|
+
"name": "main",
|
|
5
|
+
"channel": "latest"
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
"name": "next",
|
|
9
|
+
"channel": "next",
|
|
10
|
+
"prerelease": true
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"name": "beta",
|
|
14
|
+
"channel": "beta",
|
|
15
|
+
"prerelease": true
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"repositoryUrl": "https://x-access-token:${GITHUB_TOKEN}@github.com/faablecloud/deploy-sdk.git",
|
|
19
|
+
"plugins": [
|
|
20
|
+
"@semantic-release/commit-analyzer",
|
|
21
|
+
"@semantic-release/release-notes-generator",
|
|
22
|
+
[
|
|
23
|
+
"@semantic-release/npm",
|
|
24
|
+
{
|
|
25
|
+
"npmPublish": true,
|
|
26
|
+
"otp": false,
|
|
27
|
+
"useOidc": true
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"@semantic-release/github"
|
|
31
|
+
]
|
|
32
|
+
}
|
|
@@ -3,24 +3,18 @@ export declare class DeployApi extends FaableApi {
|
|
|
3
3
|
constructor(params?: ApiParams);
|
|
4
4
|
getDeployment(id: string): Promise<{
|
|
5
5
|
id: string;
|
|
6
|
+
team: string;
|
|
6
7
|
app_id: string;
|
|
7
8
|
image: string;
|
|
8
9
|
status: import("./api/types.js").components["schemas"]["DeploymentStatus"];
|
|
9
|
-
|
|
10
|
+
metadata: {
|
|
11
|
+
[key: string]: unknown;
|
|
12
|
+
};
|
|
10
13
|
createdAt: string;
|
|
14
|
+
updatedAt: string;
|
|
11
15
|
}>;
|
|
12
16
|
getApp(id: string): Promise<{
|
|
13
17
|
id: string;
|
|
14
|
-
profile?: {
|
|
15
|
-
id: string;
|
|
16
|
-
slug: string;
|
|
17
|
-
name?: string;
|
|
18
|
-
description: string;
|
|
19
|
-
is_team: boolean;
|
|
20
|
-
owner_id: string;
|
|
21
|
-
stripe_sub?: string | null;
|
|
22
|
-
createdAt: string;
|
|
23
|
-
} | string | unknown;
|
|
24
18
|
team: string;
|
|
25
19
|
name: string;
|
|
26
20
|
description: string;
|
|
@@ -31,26 +25,16 @@ export declare class DeployApi extends FaableApi {
|
|
|
31
25
|
runtime_strategy: ("next" | "wordpress") | null;
|
|
32
26
|
instance_type: string;
|
|
33
27
|
region: string;
|
|
34
|
-
|
|
28
|
+
status: import("./api/types.js").components["schemas"]["AppStatus"];
|
|
35
29
|
metadata: {
|
|
36
30
|
[key: string]: unknown;
|
|
37
31
|
};
|
|
38
|
-
status: import("./api/types.js").components["schemas"]["AppStatus"];
|
|
39
32
|
createdAt: string;
|
|
33
|
+
updatedAt: string;
|
|
40
34
|
}>;
|
|
41
35
|
listApps(): {
|
|
42
36
|
all: () => Promise<{
|
|
43
37
|
id: string;
|
|
44
|
-
profile?: {
|
|
45
|
-
id: string;
|
|
46
|
-
slug: string;
|
|
47
|
-
name?: string;
|
|
48
|
-
description: string;
|
|
49
|
-
is_team: boolean;
|
|
50
|
-
owner_id: string;
|
|
51
|
-
stripe_sub?: string | null;
|
|
52
|
-
createdAt: string;
|
|
53
|
-
} | string | unknown;
|
|
54
38
|
team: string;
|
|
55
39
|
name: string;
|
|
56
40
|
description: string;
|
|
@@ -61,25 +45,15 @@ export declare class DeployApi extends FaableApi {
|
|
|
61
45
|
runtime_strategy: ("next" | "wordpress") | null;
|
|
62
46
|
instance_type: string;
|
|
63
47
|
region: string;
|
|
64
|
-
|
|
48
|
+
status: import("./api/types.js").components["schemas"]["AppStatus"];
|
|
65
49
|
metadata: {
|
|
66
50
|
[key: string]: unknown;
|
|
67
51
|
};
|
|
68
|
-
status: import("./api/types.js").components["schemas"]["AppStatus"];
|
|
69
52
|
createdAt: string;
|
|
53
|
+
updatedAt: string;
|
|
70
54
|
}[]>;
|
|
71
55
|
first: () => Promise<import("@faable/sdk-base/dist/helpers/paginator.js").Page<{
|
|
72
56
|
id: string;
|
|
73
|
-
profile?: {
|
|
74
|
-
id: string;
|
|
75
|
-
slug: string;
|
|
76
|
-
name?: string;
|
|
77
|
-
description: string;
|
|
78
|
-
is_team: boolean;
|
|
79
|
-
owner_id: string;
|
|
80
|
-
stripe_sub?: string | null;
|
|
81
|
-
createdAt: string;
|
|
82
|
-
} | string | unknown;
|
|
83
57
|
team: string;
|
|
84
58
|
name: string;
|
|
85
59
|
description: string;
|
|
@@ -90,28 +64,18 @@ export declare class DeployApi extends FaableApi {
|
|
|
90
64
|
runtime_strategy: ("next" | "wordpress") | null;
|
|
91
65
|
instance_type: string;
|
|
92
66
|
region: string;
|
|
93
|
-
|
|
67
|
+
status: import("./api/types.js").components["schemas"]["AppStatus"];
|
|
94
68
|
metadata: {
|
|
95
69
|
[key: string]: unknown;
|
|
96
70
|
};
|
|
97
|
-
status: import("./api/types.js").components["schemas"]["AppStatus"];
|
|
98
71
|
createdAt: string;
|
|
72
|
+
updatedAt: string;
|
|
99
73
|
}>>;
|
|
100
74
|
pass: (params?: {
|
|
101
75
|
cursor?: string;
|
|
102
76
|
pageSize?: string;
|
|
103
77
|
}) => Promise<import("@faable/sdk-base/dist/helpers/paginator.js").Page<{
|
|
104
78
|
id: string;
|
|
105
|
-
profile?: {
|
|
106
|
-
id: string;
|
|
107
|
-
slug: string;
|
|
108
|
-
name?: string;
|
|
109
|
-
description: string;
|
|
110
|
-
is_team: boolean;
|
|
111
|
-
owner_id: string;
|
|
112
|
-
stripe_sub?: string | null;
|
|
113
|
-
createdAt: string;
|
|
114
|
-
} | string | unknown;
|
|
115
79
|
team: string;
|
|
116
80
|
name: string;
|
|
117
81
|
description: string;
|
|
@@ -122,49 +86,120 @@ export declare class DeployApi extends FaableApi {
|
|
|
122
86
|
runtime_strategy: ("next" | "wordpress") | null;
|
|
123
87
|
instance_type: string;
|
|
124
88
|
region: string;
|
|
125
|
-
|
|
89
|
+
status: import("./api/types.js").components["schemas"]["AppStatus"];
|
|
126
90
|
metadata: {
|
|
127
91
|
[key: string]: unknown;
|
|
128
92
|
};
|
|
129
|
-
status: import("./api/types.js").components["schemas"]["AppStatus"];
|
|
130
93
|
createdAt: string;
|
|
94
|
+
updatedAt: string;
|
|
131
95
|
}>>;
|
|
132
96
|
};
|
|
133
97
|
updateStatus<T>(id: string, data: T): Promise<any>;
|
|
134
98
|
listSecrets(id: string): {
|
|
135
99
|
all: () => Promise<{
|
|
136
100
|
id: string;
|
|
101
|
+
team: string;
|
|
137
102
|
app_id?: string;
|
|
138
103
|
profile_id?: string;
|
|
139
104
|
related: string;
|
|
140
105
|
related_model: string;
|
|
141
106
|
name: string;
|
|
142
107
|
value: string;
|
|
108
|
+
metadata: {
|
|
109
|
+
[key: string]: unknown;
|
|
110
|
+
};
|
|
143
111
|
createdAt: string;
|
|
112
|
+
updatedAt: string;
|
|
144
113
|
}[]>;
|
|
145
114
|
first: () => Promise<import("@faable/sdk-base/dist/helpers/paginator.js").Page<{
|
|
146
115
|
id: string;
|
|
116
|
+
team: string;
|
|
147
117
|
app_id?: string;
|
|
148
118
|
profile_id?: string;
|
|
149
119
|
related: string;
|
|
150
120
|
related_model: string;
|
|
151
121
|
name: string;
|
|
152
122
|
value: string;
|
|
123
|
+
metadata: {
|
|
124
|
+
[key: string]: unknown;
|
|
125
|
+
};
|
|
153
126
|
createdAt: string;
|
|
127
|
+
updatedAt: string;
|
|
154
128
|
}>>;
|
|
155
129
|
pass: (params?: {
|
|
156
130
|
cursor?: string;
|
|
157
131
|
pageSize?: string;
|
|
158
132
|
}) => Promise<import("@faable/sdk-base/dist/helpers/paginator.js").Page<{
|
|
159
133
|
id: string;
|
|
134
|
+
team: string;
|
|
160
135
|
app_id?: string;
|
|
161
136
|
profile_id?: string;
|
|
162
137
|
related: string;
|
|
163
138
|
related_model: string;
|
|
164
139
|
name: string;
|
|
165
140
|
value: string;
|
|
141
|
+
metadata: {
|
|
142
|
+
[key: string]: unknown;
|
|
143
|
+
};
|
|
144
|
+
createdAt: string;
|
|
145
|
+
updatedAt: string;
|
|
146
|
+
}>>;
|
|
147
|
+
};
|
|
148
|
+
listDomains(): {
|
|
149
|
+
all: () => Promise<{
|
|
150
|
+
id: string;
|
|
151
|
+
team: string;
|
|
152
|
+
fqdn: string;
|
|
153
|
+
tls: boolean;
|
|
154
|
+
app_id: string | null;
|
|
155
|
+
verified: boolean;
|
|
156
|
+
metadata: {
|
|
157
|
+
[key: string]: unknown;
|
|
158
|
+
};
|
|
166
159
|
createdAt: string;
|
|
160
|
+
updatedAt: string;
|
|
161
|
+
}[]>;
|
|
162
|
+
first: () => Promise<import("@faable/sdk-base/dist/helpers/paginator.js").Page<{
|
|
163
|
+
id: string;
|
|
164
|
+
team: string;
|
|
165
|
+
fqdn: string;
|
|
166
|
+
tls: boolean;
|
|
167
|
+
app_id: string | null;
|
|
168
|
+
verified: boolean;
|
|
169
|
+
metadata: {
|
|
170
|
+
[key: string]: unknown;
|
|
171
|
+
};
|
|
172
|
+
createdAt: string;
|
|
173
|
+
updatedAt: string;
|
|
174
|
+
}>>;
|
|
175
|
+
pass: (params?: {
|
|
176
|
+
cursor?: string;
|
|
177
|
+
pageSize?: string;
|
|
178
|
+
}) => Promise<import("@faable/sdk-base/dist/helpers/paginator.js").Page<{
|
|
179
|
+
id: string;
|
|
180
|
+
team: string;
|
|
181
|
+
fqdn: string;
|
|
182
|
+
tls: boolean;
|
|
183
|
+
app_id: string | null;
|
|
184
|
+
verified: boolean;
|
|
185
|
+
metadata: {
|
|
186
|
+
[key: string]: unknown;
|
|
187
|
+
};
|
|
188
|
+
createdAt: string;
|
|
189
|
+
updatedAt: string;
|
|
167
190
|
}>>;
|
|
168
191
|
};
|
|
192
|
+
listDeployments(): Promise<{
|
|
193
|
+
id: string;
|
|
194
|
+
team: string;
|
|
195
|
+
app_id: string;
|
|
196
|
+
image: string;
|
|
197
|
+
status: import("./api/types.js").components["schemas"]["DeploymentStatus"];
|
|
198
|
+
metadata: {
|
|
199
|
+
[key: string]: unknown;
|
|
200
|
+
};
|
|
201
|
+
createdAt: string;
|
|
202
|
+
updatedAt: string;
|
|
203
|
+
}>;
|
|
169
204
|
}
|
|
170
205
|
//# sourceMappingURL=FaableDeployApi.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FaableDeployApi.d.ts","sourceRoot":"","sources":["../src/FaableDeployApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGxD,qBAAa,SAAU,SAAQ,SAAS;gBAC1B,MAAM,CAAC,EAAE,SAAS;IAO9B,aAAa,CAAC,EAAE,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"FaableDeployApi.d.ts","sourceRoot":"","sources":["../src/FaableDeployApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGxD,qBAAa,SAAU,SAAQ,SAAS;gBAC1B,MAAM,CAAC,EAAE,SAAS;IAO9B,aAAa,CAAC,EAAE,EAAE,MAAM;;;;;gBAsBqsuB,8CAAsB;;;;;;;IAnBnvuB,MAAM,CAAC,EAAE,EAAE,MAAM;;;;;;;;iBAmB40pB,8CAAsB;;;;gBAAmV,8CAAsB;;;;;;;IAhB5tqB,QAAQ;;;;;;;;;qBAgBq1pB,8CAAsB;;;;oBAAmV,8CAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAf3sqB,CAAC;oBAA0B,CAAC;;;;;;;;;qBAegzpB,8CAAsB;;;;oBAAmV,8CAAsB;;;;;;;;IAb5tqB,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAGnC,WAAW,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBALL,CAAC;oBAA0B,CAAC;;;;;;;;;;;;;;;;;IAQ7C,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBARM,CAAC;oBAA0B,CAAC;;;;;;;;;;;;;;;IAW7C,eAAe;;;;;gBAI8suB,8CAAsB;;;;;;;CADpvuB"}
|
package/dist/FaableDeployApi.js
CHANGED
|
@@ -21,4 +21,10 @@ export class DeployApi extends FaableApi {
|
|
|
21
21
|
listSecrets(id) {
|
|
22
22
|
return this.paginator({ url: `/secret/${id}` });
|
|
23
23
|
}
|
|
24
|
+
listDomains() {
|
|
25
|
+
return this.paginator({ url: "/domain" });
|
|
26
|
+
}
|
|
27
|
+
listDeployments() {
|
|
28
|
+
return this.fetcher.get(`/deployment`);
|
|
29
|
+
}
|
|
24
30
|
}
|
package/dist/api/api-types.d.ts
CHANGED
|
@@ -8,15 +8,14 @@ export type DeploymentStatus = components["schemas"]["DeploymentStatus"];
|
|
|
8
8
|
export type Secret = components["schemas"]["Secret"];
|
|
9
9
|
export type Domain = components["schemas"]["Domain"];
|
|
10
10
|
export type Volume = components["schemas"]["Volume"];
|
|
11
|
-
export type EventSecretsCreateBatchEvent = components["schemas"]["
|
|
12
|
-
export type EventDeploymentCreated = components["schemas"]["
|
|
13
|
-
export type EventAppDelete = components["schemas"]["
|
|
14
|
-
export type EventAppCreate = components["schemas"]["
|
|
15
|
-
export type EventAppUpdate = components["schemas"]["
|
|
16
|
-
export type EventDomainCreate = components["schemas"]["
|
|
17
|
-
export type EventDomainUpdate = components["schemas"]["
|
|
18
|
-
export type EventVolumeCreate = components["schemas"]["
|
|
19
|
-
export type EventVolumeDelete = components["schemas"]["
|
|
20
|
-
export type
|
|
21
|
-
export type EventDeploymentStatusUpdate = components["schemas"]["Event_deployment.update_status"];
|
|
11
|
+
export type EventSecretsCreateBatchEvent = components["schemas"]["EventSecretCreate_batch"];
|
|
12
|
+
export type EventDeploymentCreated = components["schemas"]["EventDeploymentCreate"];
|
|
13
|
+
export type EventAppDelete = components["schemas"]["EventAppDelete"];
|
|
14
|
+
export type EventAppCreate = components["schemas"]["EventAppCreate"];
|
|
15
|
+
export type EventAppUpdate = components["schemas"]["EventAppUpdate"];
|
|
16
|
+
export type EventDomainCreate = components["schemas"]["EventDomainCreate"];
|
|
17
|
+
export type EventDomainUpdate = components["schemas"]["EventDomainUpdate"];
|
|
18
|
+
export type EventVolumeCreate = components["schemas"]["EventVolumeCreate"];
|
|
19
|
+
export type EventVolumeDelete = components["schemas"]["EventVolumeDelete"];
|
|
20
|
+
export type EventDeploymentStatusUpdate = components["schemas"]["EventDeploymentUpdate"];
|
|
22
21
|
//# sourceMappingURL=api-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-types.d.ts","sourceRoot":"","sources":["../../src/api/api-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;AAC/C,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC;AAC3D,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;AAC7D,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,CAAC;AAC7E,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;AAC7D,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;AACzE,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;AACrD,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;AAErD,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;AAErD,MAAM,MAAM,4BAA4B,GACtC,UAAU,CAAC,SAAS,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"api-types.d.ts","sourceRoot":"","sources":["../../src/api/api-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;AAC/C,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC;AAC3D,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;AAC7D,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,CAAC;AAC7E,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;AAC7D,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;AACzE,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;AACrD,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;AAErD,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;AAErD,MAAM,MAAM,4BAA4B,GACtC,UAAU,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC,CAAC;AACnD,MAAM,MAAM,sBAAsB,GAChC,UAAU,CAAC,SAAS,CAAC,CAAC,uBAAuB,CAAC,CAAC;AACjD,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,CAAC;AACrE,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,CAAC;AACrE,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,CAAC;AAErE,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAC;AAC3E,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAC;AAE3E,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAC;AAC3E,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAC;AAE3E,MAAM,MAAM,2BAA2B,GACrC,UAAU,CAAC,SAAS,CAAC,CAAC,uBAAuB,CAAC,CAAC"}
|