@formigio/fazemos-cli 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/bin/fazemos.js +2 -0
- package/dist/api.d.ts +1 -0
- package/dist/api.js +48 -0
- package/dist/api.js.map +1 -0
- package/dist/auth.d.ts +25 -0
- package/dist/auth.js +124 -0
- package/dist/auth.js.map +1 -0
- package/dist/config.d.ts +37 -0
- package/dist/config.js +56 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1335 -0
- package/dist/index.js.map +1 -0
- package/package.json +41 -0
package/bin/fazemos.js
ADDED
package/dist/api.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function api(method: string, path: string, body?: unknown): Promise<unknown>;
|
package/dist/api.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { getEnv, getToken, getActiveOrgId } from './config.js';
|
|
2
|
+
import { refreshSession } from './auth.js';
|
|
3
|
+
export async function api(method, path, body) {
|
|
4
|
+
const env = getEnv();
|
|
5
|
+
let token = getToken();
|
|
6
|
+
const orgId = getActiveOrgId();
|
|
7
|
+
// Auto-refresh if token is expired
|
|
8
|
+
if (!token) {
|
|
9
|
+
token = await refreshSession();
|
|
10
|
+
if (!token) {
|
|
11
|
+
throw new Error('Session expired. Run: fazemos auth login');
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
const headers = {
|
|
15
|
+
'Content-Type': 'application/json',
|
|
16
|
+
};
|
|
17
|
+
if (token) {
|
|
18
|
+
headers['Authorization'] = `Bearer ${token}`;
|
|
19
|
+
}
|
|
20
|
+
if (orgId) {
|
|
21
|
+
headers['X-Org-Id'] = orgId;
|
|
22
|
+
}
|
|
23
|
+
const url = `${env.apiUrl}${path}`;
|
|
24
|
+
const options = {
|
|
25
|
+
method,
|
|
26
|
+
headers,
|
|
27
|
+
};
|
|
28
|
+
if (body && method !== 'GET') {
|
|
29
|
+
options.body = JSON.stringify(body);
|
|
30
|
+
}
|
|
31
|
+
const response = await fetch(url, options);
|
|
32
|
+
const text = await response.text();
|
|
33
|
+
let data;
|
|
34
|
+
try {
|
|
35
|
+
data = JSON.parse(text);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
data = text;
|
|
39
|
+
}
|
|
40
|
+
if (!response.ok) {
|
|
41
|
+
const msg = typeof data === 'object' && data !== null && 'error' in data
|
|
42
|
+
? data.error
|
|
43
|
+
: `HTTP ${response.status}`;
|
|
44
|
+
throw new Error(msg);
|
|
45
|
+
}
|
|
46
|
+
return data;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,MAAc,EAAE,IAAY,EAAE,IAAc;IACpE,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;IACvB,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;IAE/B,mCAAmC;IACnC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,MAAM,cAAc,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,kBAAkB;KACnC,CAAC;IACF,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,KAAK,EAAE,CAAC;IAC/C,CAAC;IACD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;IAC9B,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;IACnC,MAAM,OAAO,GAAgB;QAC3B,MAAM;QACN,OAAO;KACR,CAAC;IAEF,IAAI,IAAI,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QAC7B,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEnC,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,GAAG,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,IAAI;YACtE,CAAC,CAAE,IAA0B,CAAC,KAAK;YACnC,CAAC,CAAC,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/auth.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export declare function login(email: string, password: string): Promise<{
|
|
2
|
+
email: string;
|
|
3
|
+
expiresIn: number | undefined;
|
|
4
|
+
}>;
|
|
5
|
+
export declare function signup(email: string, password: string): Promise<{
|
|
6
|
+
email: string;
|
|
7
|
+
message: string;
|
|
8
|
+
}>;
|
|
9
|
+
export declare function confirmSignup(email: string, code: string): Promise<{
|
|
10
|
+
email: string;
|
|
11
|
+
message: string;
|
|
12
|
+
}>;
|
|
13
|
+
/**
|
|
14
|
+
* Refresh an expired session using the stored refresh token.
|
|
15
|
+
* Returns the new ID token, or null if refresh fails.
|
|
16
|
+
*/
|
|
17
|
+
export declare function refreshSession(): Promise<string | null>;
|
|
18
|
+
/**
|
|
19
|
+
* Admin login — creates a test user and gets tokens via admin APIs.
|
|
20
|
+
* Requires AWS credentials with cognito-idp:Admin* permissions.
|
|
21
|
+
*/
|
|
22
|
+
export declare function adminLogin(email: string, password: string): Promise<{
|
|
23
|
+
email: string;
|
|
24
|
+
expiresIn: number | undefined;
|
|
25
|
+
}>;
|
package/dist/auth.js
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { CognitoIdentityProviderClient, InitiateAuthCommand, SignUpCommand, ConfirmSignUpCommand, AdminCreateUserCommand, AdminSetUserPasswordCommand, AdminInitiateAuthCommand, } from '@aws-sdk/client-cognito-identity-provider';
|
|
2
|
+
import { getEnv, setAuth, config } from './config.js';
|
|
3
|
+
function getClient() {
|
|
4
|
+
const env = getEnv();
|
|
5
|
+
return new CognitoIdentityProviderClient({ region: env.cognitoRegion });
|
|
6
|
+
}
|
|
7
|
+
export async function login(email, password) {
|
|
8
|
+
const env = getEnv();
|
|
9
|
+
const client = getClient();
|
|
10
|
+
const result = await client.send(new InitiateAuthCommand({
|
|
11
|
+
AuthFlow: 'USER_PASSWORD_AUTH',
|
|
12
|
+
ClientId: env.cognitoClientId,
|
|
13
|
+
AuthParameters: {
|
|
14
|
+
USERNAME: email,
|
|
15
|
+
PASSWORD: password,
|
|
16
|
+
},
|
|
17
|
+
}));
|
|
18
|
+
const auth = result.AuthenticationResult;
|
|
19
|
+
if (!auth?.IdToken || !auth?.RefreshToken) {
|
|
20
|
+
throw new Error('Login failed — no tokens returned');
|
|
21
|
+
}
|
|
22
|
+
setAuth(env.name, email, auth.IdToken, auth.RefreshToken, auth.ExpiresIn || 3600);
|
|
23
|
+
return { email, expiresIn: auth.ExpiresIn };
|
|
24
|
+
}
|
|
25
|
+
export async function signup(email, password) {
|
|
26
|
+
const env = getEnv();
|
|
27
|
+
const client = getClient();
|
|
28
|
+
await client.send(new SignUpCommand({
|
|
29
|
+
ClientId: env.cognitoClientId,
|
|
30
|
+
Username: email,
|
|
31
|
+
Password: password,
|
|
32
|
+
UserAttributes: [
|
|
33
|
+
{ Name: 'email', Value: email },
|
|
34
|
+
],
|
|
35
|
+
}));
|
|
36
|
+
return { email, message: 'Check your email for a verification code' };
|
|
37
|
+
}
|
|
38
|
+
export async function confirmSignup(email, code) {
|
|
39
|
+
const env = getEnv();
|
|
40
|
+
const client = getClient();
|
|
41
|
+
await client.send(new ConfirmSignUpCommand({
|
|
42
|
+
ClientId: env.cognitoClientId,
|
|
43
|
+
Username: email,
|
|
44
|
+
ConfirmationCode: code,
|
|
45
|
+
}));
|
|
46
|
+
return { email, message: 'Email confirmed. You can now login.' };
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Refresh an expired session using the stored refresh token.
|
|
50
|
+
* Returns the new ID token, or null if refresh fails.
|
|
51
|
+
*/
|
|
52
|
+
export async function refreshSession() {
|
|
53
|
+
const env = getEnv();
|
|
54
|
+
const authData = config.get('auth')[env.name];
|
|
55
|
+
if (!authData?.refreshToken)
|
|
56
|
+
return null;
|
|
57
|
+
try {
|
|
58
|
+
const client = getClient();
|
|
59
|
+
const result = await client.send(new InitiateAuthCommand({
|
|
60
|
+
AuthFlow: 'REFRESH_TOKEN_AUTH',
|
|
61
|
+
ClientId: env.cognitoClientId,
|
|
62
|
+
AuthParameters: {
|
|
63
|
+
REFRESH_TOKEN: authData.refreshToken,
|
|
64
|
+
},
|
|
65
|
+
}));
|
|
66
|
+
const auth = result.AuthenticationResult;
|
|
67
|
+
if (!auth?.IdToken)
|
|
68
|
+
return null;
|
|
69
|
+
// Update stored tokens (refresh token is NOT returned on refresh — keep the existing one)
|
|
70
|
+
setAuth(env.name, authData.email, auth.IdToken, authData.refreshToken, auth.ExpiresIn || 3600);
|
|
71
|
+
return auth.IdToken;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Admin login — creates a test user and gets tokens via admin APIs.
|
|
79
|
+
* Requires AWS credentials with cognito-idp:Admin* permissions.
|
|
80
|
+
*/
|
|
81
|
+
export async function adminLogin(email, password) {
|
|
82
|
+
const env = getEnv();
|
|
83
|
+
const client = getClient();
|
|
84
|
+
// Create user (ignore if exists)
|
|
85
|
+
try {
|
|
86
|
+
await client.send(new AdminCreateUserCommand({
|
|
87
|
+
UserPoolId: env.cognitoPoolId,
|
|
88
|
+
Username: email,
|
|
89
|
+
UserAttributes: [
|
|
90
|
+
{ Name: 'email', Value: email },
|
|
91
|
+
{ Name: 'email_verified', Value: 'true' },
|
|
92
|
+
],
|
|
93
|
+
MessageAction: 'SUPPRESS',
|
|
94
|
+
}));
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
if (err.name !== 'UsernameExistsException')
|
|
98
|
+
throw err;
|
|
99
|
+
}
|
|
100
|
+
// Set password
|
|
101
|
+
await client.send(new AdminSetUserPasswordCommand({
|
|
102
|
+
UserPoolId: env.cognitoPoolId,
|
|
103
|
+
Username: email,
|
|
104
|
+
Password: password,
|
|
105
|
+
Permanent: true,
|
|
106
|
+
}));
|
|
107
|
+
// Get tokens
|
|
108
|
+
const result = await client.send(new AdminInitiateAuthCommand({
|
|
109
|
+
UserPoolId: env.cognitoPoolId,
|
|
110
|
+
ClientId: env.cognitoClientId,
|
|
111
|
+
AuthFlow: 'ADMIN_USER_PASSWORD_AUTH',
|
|
112
|
+
AuthParameters: {
|
|
113
|
+
USERNAME: email,
|
|
114
|
+
PASSWORD: password,
|
|
115
|
+
},
|
|
116
|
+
}));
|
|
117
|
+
const auth = result.AuthenticationResult;
|
|
118
|
+
if (!auth?.IdToken || !auth?.RefreshToken) {
|
|
119
|
+
throw new Error('Admin login failed — no tokens returned');
|
|
120
|
+
}
|
|
121
|
+
setAuth(env.name, email, auth.IdToken, auth.RefreshToken, auth.ExpiresIn || 3600);
|
|
122
|
+
return { email, expiresIn: auth.ExpiresIn };
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=auth.js.map
|
package/dist/auth.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import Conf from 'conf';
|
|
2
|
+
interface FazemosConfig {
|
|
3
|
+
environments: Record<string, {
|
|
4
|
+
apiUrl: string;
|
|
5
|
+
cognitoPoolId: string;
|
|
6
|
+
cognitoClientId: string;
|
|
7
|
+
cognitoRegion: string;
|
|
8
|
+
}>;
|
|
9
|
+
activeEnv: string;
|
|
10
|
+
activeOrgId: string;
|
|
11
|
+
auth: Record<string, {
|
|
12
|
+
email: string;
|
|
13
|
+
idToken: string;
|
|
14
|
+
refreshToken: string;
|
|
15
|
+
expiresAt: number;
|
|
16
|
+
}>;
|
|
17
|
+
}
|
|
18
|
+
export declare const config: Conf<FazemosConfig>;
|
|
19
|
+
export declare function addEnvironment(name: string, env: {
|
|
20
|
+
apiUrl: string;
|
|
21
|
+
cognitoPoolId: string;
|
|
22
|
+
cognitoClientId: string;
|
|
23
|
+
cognitoRegion: string;
|
|
24
|
+
}): void;
|
|
25
|
+
export declare function hasEnvironments(): boolean;
|
|
26
|
+
export declare function getEnv(): {
|
|
27
|
+
apiUrl: string;
|
|
28
|
+
cognitoPoolId: string;
|
|
29
|
+
cognitoClientId: string;
|
|
30
|
+
cognitoRegion: string;
|
|
31
|
+
name: string;
|
|
32
|
+
};
|
|
33
|
+
export declare function getToken(): string | null;
|
|
34
|
+
export declare function getActiveOrgId(): string | null;
|
|
35
|
+
export declare function setActiveOrgId(orgId: string): void;
|
|
36
|
+
export declare function setAuth(env: string, email: string, idToken: string, refreshToken: string, expiresInSeconds: number): void;
|
|
37
|
+
export {};
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import Conf from 'conf';
|
|
2
|
+
export const config = new Conf({
|
|
3
|
+
projectName: 'fazemos-cli',
|
|
4
|
+
defaults: {
|
|
5
|
+
environments: {},
|
|
6
|
+
activeEnv: '',
|
|
7
|
+
activeOrgId: '',
|
|
8
|
+
auth: {},
|
|
9
|
+
},
|
|
10
|
+
});
|
|
11
|
+
export function addEnvironment(name, env) {
|
|
12
|
+
const envs = config.get('environments');
|
|
13
|
+
envs[name] = env;
|
|
14
|
+
config.set('environments', envs);
|
|
15
|
+
// If no active env, set this one
|
|
16
|
+
if (!config.get('activeEnv')) {
|
|
17
|
+
config.set('activeEnv', name);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export function hasEnvironments() {
|
|
21
|
+
return Object.keys(config.get('environments')).length > 0;
|
|
22
|
+
}
|
|
23
|
+
export function getEnv() {
|
|
24
|
+
const name = config.get('activeEnv');
|
|
25
|
+
const env = config.get('environments')[name];
|
|
26
|
+
if (!env)
|
|
27
|
+
throw new Error(`Environment "${name}" not configured`);
|
|
28
|
+
return { name, ...env };
|
|
29
|
+
}
|
|
30
|
+
export function getToken() {
|
|
31
|
+
const env = config.get('activeEnv');
|
|
32
|
+
const auth = config.get('auth')[env];
|
|
33
|
+
if (!auth)
|
|
34
|
+
return null;
|
|
35
|
+
if (Date.now() > auth.expiresAt)
|
|
36
|
+
return null;
|
|
37
|
+
return auth.idToken;
|
|
38
|
+
}
|
|
39
|
+
export function getActiveOrgId() {
|
|
40
|
+
const orgId = config.get('activeOrgId');
|
|
41
|
+
return orgId || null;
|
|
42
|
+
}
|
|
43
|
+
export function setActiveOrgId(orgId) {
|
|
44
|
+
config.set('activeOrgId', orgId);
|
|
45
|
+
}
|
|
46
|
+
export function setAuth(env, email, idToken, refreshToken, expiresInSeconds) {
|
|
47
|
+
const auth = config.get('auth');
|
|
48
|
+
auth[env] = {
|
|
49
|
+
email,
|
|
50
|
+
idToken,
|
|
51
|
+
refreshToken,
|
|
52
|
+
expiresAt: Date.now() + expiresInSeconds * 1000,
|
|
53
|
+
};
|
|
54
|
+
config.set('auth', auth);
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAmBxB,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,IAAI,CAAgB;IAC5C,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE;QACR,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE,EAAE;QACb,WAAW,EAAE,EAAE;QACf,IAAI,EAAE,EAAE;KACT;CACF,CAAC,CAAC;AAEH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,GAA8F;IACzI,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACxC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;IACjB,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACjC,iCAAiC;IACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,MAAM;IACpB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,kBAAkB,CAAC,CAAC;IAClE,OAAO,EAAE,IAAI,EAAE,GAAG,GAAG,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC7C,OAAO,IAAI,CAAC,OAAO,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACxC,OAAO,KAAK,IAAI,IAAI,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,KAAa,EAAE,OAAe,EAAE,YAAoB,EAAE,gBAAwB;IACjH,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG,CAAC,GAAG;QACV,KAAK;QACL,OAAO;QACP,YAAY;QACZ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,GAAG,IAAI;KAChD,CAAC;IACF,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC3B,CAAC"}
|
package/dist/index.d.ts
ADDED