@awcp/transport-sshfs 0.0.0-dev-202601301521 → 0.0.1
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/delegator/credential-manager.d.ts +52 -15
- package/dist/delegator/credential-manager.d.ts.map +1 -1
- package/dist/delegator/credential-manager.js +106 -82
- package/dist/delegator/credential-manager.js.map +1 -1
- package/dist/delegator/index.d.ts +1 -1
- package/dist/delegator/index.d.ts.map +1 -1
- package/dist/delegator/index.js.map +1 -1
- package/dist/executor/index.d.ts +1 -1
- package/dist/executor/index.d.ts.map +1 -1
- package/dist/executor/index.js +1 -1
- package/dist/executor/index.js.map +1 -1
- package/dist/executor/sshfs-client.d.ts +23 -20
- package/dist/executor/sshfs-client.d.ts.map +1 -1
- package/dist/executor/sshfs-client.js +32 -60
- package/dist/executor/sshfs-client.js.map +1 -1
- package/dist/index.d.ts +2 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -5
- package/dist/index.js.map +1 -1
- package/package.json +2 -6
- package/dist/cli/setup.d.ts +0 -13
- package/dist/cli/setup.d.ts.map +0 -1
- package/dist/cli/setup.js +0 -286
- package/dist/cli/setup.js.map +0 -1
- package/dist/sshfs-transport.d.ts +0 -24
- package/dist/sshfs-transport.d.ts.map +0 -1
- package/dist/sshfs-transport.js +0 -93
- package/dist/sshfs-transport.js.map +0 -1
- package/dist/types.d.ts +0 -114
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -5
- package/dist/types.js.map +0 -1
|
@@ -2,36 +2,8 @@ import { spawn } from 'node:child_process';
|
|
|
2
2
|
import { writeFile, unlink, mkdir, stat } from 'node:fs/promises';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
4
|
import { MountFailedError, DependencyMissingError } from '@awcp/core';
|
|
5
|
-
|
|
5
|
+
const DEFAULT_TEMP_KEY_DIR = '/tmp/awcp/client-keys';
|
|
6
6
|
const DEFAULT_MOUNT_TIMEOUT = 30000;
|
|
7
|
-
/**
|
|
8
|
-
* Build SSHFS command arguments
|
|
9
|
-
*/
|
|
10
|
-
export function buildSshfsArgs(params, keyPath, certPath, defaultOptions) {
|
|
11
|
-
const { host, port, user } = params.endpoint;
|
|
12
|
-
const remoteSpec = `${user}@${host}:${params.exportLocator}`;
|
|
13
|
-
const options = {
|
|
14
|
-
...defaultOptions,
|
|
15
|
-
...params.options,
|
|
16
|
-
};
|
|
17
|
-
const args = [
|
|
18
|
-
remoteSpec,
|
|
19
|
-
params.mountPoint,
|
|
20
|
-
'-o', `IdentityFile=${keyPath}`,
|
|
21
|
-
'-o', `CertificateFile=${certPath}`,
|
|
22
|
-
'-o', `Port=${port}`,
|
|
23
|
-
'-o', 'StrictHostKeyChecking=no',
|
|
24
|
-
'-o', 'UserKnownHostsFile=/dev/null',
|
|
25
|
-
'-o', 'reconnect',
|
|
26
|
-
'-o', 'ServerAliveInterval=15',
|
|
27
|
-
'-o', 'ServerAliveCountMax=3',
|
|
28
|
-
'-o', 'noappledouble',
|
|
29
|
-
];
|
|
30
|
-
for (const [key, value] of Object.entries(options)) {
|
|
31
|
-
args.push('-o', `${key}=${value}`);
|
|
32
|
-
}
|
|
33
|
-
return args;
|
|
34
|
-
}
|
|
35
7
|
/**
|
|
36
8
|
* SSHFS Mount Client
|
|
37
9
|
*
|
|
@@ -43,12 +15,6 @@ export class SshfsMountClient {
|
|
|
43
15
|
constructor(config) {
|
|
44
16
|
this.config = config ?? {};
|
|
45
17
|
}
|
|
46
|
-
/**
|
|
47
|
-
* Get active mounts (for testing)
|
|
48
|
-
*/
|
|
49
|
-
getActiveMounts() {
|
|
50
|
-
return this.activeMounts;
|
|
51
|
-
}
|
|
52
18
|
/**
|
|
53
19
|
* Check if sshfs is available
|
|
54
20
|
*/
|
|
@@ -85,24 +51,6 @@ export class SshfsMountClient {
|
|
|
85
51
|
});
|
|
86
52
|
});
|
|
87
53
|
}
|
|
88
|
-
/**
|
|
89
|
-
* Write credential files to disk
|
|
90
|
-
*/
|
|
91
|
-
async writeCredentialFiles(tempKeyDir, credential) {
|
|
92
|
-
await mkdir(tempKeyDir, { recursive: true });
|
|
93
|
-
const keyPath = join(tempKeyDir, `mount-${Date.now()}`);
|
|
94
|
-
const certPath = `${keyPath}-cert.pub`;
|
|
95
|
-
await writeFile(keyPath, credential.privateKey, { mode: 0o600 });
|
|
96
|
-
await writeFile(certPath, credential.certificate, { mode: 0o644 });
|
|
97
|
-
return { keyPath, certPath };
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Clean up credential files
|
|
101
|
-
*/
|
|
102
|
-
async cleanupCredentialFiles(keyPath, certPath) {
|
|
103
|
-
await unlink(keyPath).catch(() => { });
|
|
104
|
-
await unlink(certPath).catch(() => { });
|
|
105
|
-
}
|
|
106
54
|
/**
|
|
107
55
|
* Mount a remote filesystem
|
|
108
56
|
*/
|
|
@@ -113,9 +61,34 @@ export class SshfsMountClient {
|
|
|
113
61
|
throw new DependencyMissingError('sshfs', 'Install sshfs: brew install macfuse && brew install sshfs (macOS) or apt install sshfs (Linux)');
|
|
114
62
|
}
|
|
115
63
|
const tempKeyDir = this.config.tempKeyDir ?? DEFAULT_TEMP_KEY_DIR;
|
|
116
|
-
|
|
64
|
+
await mkdir(tempKeyDir, { recursive: true });
|
|
65
|
+
// Write credential to temp file
|
|
66
|
+
const keyPath = join(tempKeyDir, `mount-${Date.now()}`);
|
|
67
|
+
await writeFile(keyPath, params.credential, { mode: 0o600 });
|
|
117
68
|
try {
|
|
118
|
-
|
|
69
|
+
// Build sshfs command
|
|
70
|
+
const { host, port, user } = params.endpoint;
|
|
71
|
+
const remoteSpec = `${user}@${host}:${params.exportLocator}`;
|
|
72
|
+
const options = {
|
|
73
|
+
...this.config.defaultOptions,
|
|
74
|
+
...params.options,
|
|
75
|
+
};
|
|
76
|
+
const args = [
|
|
77
|
+
remoteSpec,
|
|
78
|
+
params.mountPoint,
|
|
79
|
+
'-o', `IdentityFile=${keyPath}`,
|
|
80
|
+
'-o', `Port=${port}`,
|
|
81
|
+
'-o', 'StrictHostKeyChecking=no',
|
|
82
|
+
'-o', 'UserKnownHostsFile=/dev/null',
|
|
83
|
+
'-o', 'reconnect',
|
|
84
|
+
'-o', 'ServerAliveInterval=15',
|
|
85
|
+
'-o', 'ServerAliveCountMax=3',
|
|
86
|
+
'-o', 'noappledouble', // Prevent macOS ._* metadata files
|
|
87
|
+
];
|
|
88
|
+
// Add custom options
|
|
89
|
+
for (const [key, value] of Object.entries(options)) {
|
|
90
|
+
args.push('-o', `${key}=${value}`);
|
|
91
|
+
}
|
|
119
92
|
console.log(`[SSHFS] Mounting: sshfs ${args.join(' ')}`);
|
|
120
93
|
// Execute mount (SSHFS will daemonize and exit immediately on success)
|
|
121
94
|
await this.execMount(args, params.mountPoint);
|
|
@@ -123,12 +96,11 @@ export class SshfsMountClient {
|
|
|
123
96
|
this.activeMounts.set(params.mountPoint, {
|
|
124
97
|
mountPoint: params.mountPoint,
|
|
125
98
|
keyPath,
|
|
126
|
-
certPath,
|
|
127
99
|
});
|
|
128
100
|
}
|
|
129
101
|
catch (error) {
|
|
130
|
-
// Cleanup key
|
|
131
|
-
await
|
|
102
|
+
// Cleanup key on failure
|
|
103
|
+
await unlink(keyPath).catch(() => { });
|
|
132
104
|
throw error;
|
|
133
105
|
}
|
|
134
106
|
}
|
|
@@ -157,9 +129,9 @@ export class SshfsMountClient {
|
|
|
157
129
|
if (!success) {
|
|
158
130
|
console.warn(`Failed to unmount ${mountPoint}, may need manual cleanup`);
|
|
159
131
|
}
|
|
160
|
-
// Cleanup
|
|
132
|
+
// Cleanup
|
|
161
133
|
if (activeMount) {
|
|
162
|
-
await
|
|
134
|
+
await unlink(activeMount.keyPath).catch(() => { });
|
|
163
135
|
this.activeMounts.delete(mountPoint);
|
|
164
136
|
}
|
|
165
137
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sshfs-client.js","sourceRoot":"","sources":["../../src/executor/sshfs-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"sshfs-client.js","sourceRoot":"","sources":["../../src/executor/sshfs-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAsCtE,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AACrD,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAEpC;;;;GAIG;AACH,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAmB;IACzB,YAAY,GAAG,IAAI,GAAG,EAAuB,CAAC;IAEtD,YAAY,MAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;YAE3C,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC9B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC9B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,IAAI,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3C,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;oBAC5D,OAAO,CAAC;wBACN,SAAS,EAAE,IAAI;wBACf,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;qBAC3B,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC;wBACN,SAAS,EAAE,KAAK;wBAChB,KAAK,EAAE,iBAAiB;qBACzB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACpB,OAAO,CAAC;oBACN,SAAS,EAAE,KAAK;oBAChB,KAAK,EAAE,yBAAyB;iBACjC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,MAAmB;QAC7B,mBAAmB;QACnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,sBAAsB,CAC9B,OAAO,EACP,gGAAgG,CACjG,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,oBAAoB,CAAC;QAClE,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7C,gCAAgC;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACxD,MAAM,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAE7D,IAAI,CAAC;YACH,sBAAsB;YACtB,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC7C,MAAM,UAAU,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YAE7D,MAAM,OAAO,GAAG;gBACd,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc;gBAC7B,GAAG,MAAM,CAAC,OAAO;aAClB,CAAC;YAEF,MAAM,IAAI,GAAG;gBACX,UAAU;gBACV,MAAM,CAAC,UAAU;gBACjB,IAAI,EAAE,gBAAgB,OAAO,EAAE;gBAC/B,IAAI,EAAE,QAAQ,IAAI,EAAE;gBACpB,IAAI,EAAE,0BAA0B;gBAChC,IAAI,EAAE,8BAA8B;gBACpC,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,wBAAwB;gBAC9B,IAAI,EAAE,uBAAuB;gBAC7B,IAAI,EAAE,eAAe,EAAG,mCAAmC;aAC5D,CAAC;YAEF,qBAAqB;YACrB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;YACrC,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEzD,uEAAuE;YACvE,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;YAE9C,qBAAqB;YACrB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE;gBACvC,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,OAAO;aACR,CAAC,CAAC;QAEL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,yBAAyB;YACzB,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACtC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,UAAkB;QAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAEtD,gCAAgC;QAChC,MAAM,eAAe,GAAG;YACtB,CAAC,QAAQ,EAAE,UAAU,CAAC;YACtB,CAAC,YAAY,EAAE,IAAI,EAAE,UAAU,CAAC;YAChC,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,QAAQ;SAC9C,CAAC;QAEF,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,KAAK,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9C,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM;YACR,CAAC;YAAC,MAAM,CAAC;gBACP,kBAAkB;YACpB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,qBAAqB,UAAU,2BAA2B,CAAC,CAAC;QAC3E,CAAC;QAED,UAAU;QACV,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAClD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,UAAkB;QAChC,IAAI,CAAC;YACH,iDAAiD;YACjD,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;YACvB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;YAClD,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,IAAc,EAAE,UAAkB;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,qBAAqB,CAAC;QAElE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,8EAA8E;YAC9E,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;gBAChC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;aAClC,CAAC,CAAC;YAEH,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC9B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;gBAClC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,iCAAiC;gBACjC,IAAI,CAAC;oBACH,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBACjC,CAAC;gBAAC,MAAM,CAAC;oBACP,+BAA+B;gBACjC,CAAC;gBACD,MAAM,CAAC,IAAI,gBAAgB,CAAC,uBAAuB,OAAO,IAAI,CAAC,CAAC,CAAC;YACnE,CAAC,EAAE,OAAO,CAAC,CAAC;YAEZ,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBAC9B,YAAY,CAAC,KAAK,CAAC,CAAC;gBAEpB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,gBAAgB,CAAC,MAAM,IAAI,0BAA0B,IAAI,EAAE,CAAC,CAAC,CAAC;oBACzE,OAAO;gBACT,CAAC;gBAED,8CAA8C;gBAC9C,yCAAyC;gBACzC,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;oBACzC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;oBAEtD,IAAI,SAAS,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,EAAE,CAAC;wBACrC,0CAA0C;wBAC1C,OAAO,EAAE,CAAC;oBACZ,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,IAAI,gBAAgB,CAAC,qCAAqC,CAAC,CAAC,CAAC;oBACtE,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,gBAAgB,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC,CAAC;gBACtE,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACzB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,MAAM,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,WAAW,CAAC,GAAW,EAAE,IAAc;QAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAE9B,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,OAAO,EAAE,CAAC;gBACZ,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,GAAG,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,8 +3,6 @@
|
|
|
3
3
|
*
|
|
4
4
|
* SSHFS Transport implementation for AWCP data plane
|
|
5
5
|
*/
|
|
6
|
-
export {
|
|
7
|
-
export
|
|
8
|
-
export { CredentialManager } from './delegator/index.js';
|
|
9
|
-
export { SshfsMountClient, DEFAULT_TEMP_KEY_DIR, buildSshfsArgs } from './executor/index.js';
|
|
6
|
+
export { CredentialManager, type CredentialManagerConfig, type GeneratedCredential, } from './delegator/index.js';
|
|
7
|
+
export { SshfsMountClient, type SshfsMountConfig, type MountParams, } from './executor/index.js';
|
|
10
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,iBAAiB,EACjB,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,GACzB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,KAAK,WAAW,GACjB,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* SSHFS Transport implementation for AWCP data plane
|
|
5
5
|
*/
|
|
6
|
-
//
|
|
7
|
-
export {
|
|
8
|
-
//
|
|
9
|
-
export {
|
|
10
|
-
export { SshfsMountClient, DEFAULT_TEMP_KEY_DIR, buildSshfsArgs } from './executor/index.js';
|
|
6
|
+
// Delegator-side exports
|
|
7
|
+
export { CredentialManager, } from './delegator/index.js';
|
|
8
|
+
// Executor-side exports
|
|
9
|
+
export { SshfsMountClient, } from './executor/index.js';
|
|
11
10
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,yBAAyB;AACzB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,yBAAyB;AACzB,OAAO,EACL,iBAAiB,GAGlB,MAAM,sBAAsB,CAAC;AAE9B,wBAAwB;AACxB,OAAO,EACL,gBAAgB,GAGjB,MAAM,qBAAqB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@awcp/transport-sshfs",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.1",
|
|
4
4
|
"description": "AWCP SSHFS Transport - SSH/SFTP based data plane implementation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
8
|
-
"bin": {
|
|
9
|
-
"awcp-sshfs": "./bin/awcp-sshfs.js"
|
|
10
|
-
},
|
|
11
8
|
"exports": {
|
|
12
9
|
".": {
|
|
13
10
|
"types": "./dist/index.d.ts",
|
|
@@ -24,7 +21,6 @@
|
|
|
24
21
|
},
|
|
25
22
|
"files": [
|
|
26
23
|
"dist",
|
|
27
|
-
"bin",
|
|
28
24
|
"README.md"
|
|
29
25
|
],
|
|
30
26
|
"scripts": {
|
|
@@ -34,7 +30,7 @@
|
|
|
34
30
|
"test:watch": "vitest"
|
|
35
31
|
},
|
|
36
32
|
"dependencies": {
|
|
37
|
-
"@awcp/core": "0.0.
|
|
33
|
+
"@awcp/core": "^0.0.1"
|
|
38
34
|
},
|
|
39
35
|
"keywords": [
|
|
40
36
|
"awcp",
|
package/dist/cli/setup.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* AWCP SSHFS Transport Setup CLI
|
|
4
|
-
*
|
|
5
|
-
* Configures SSH certificate authentication for AWCP.
|
|
6
|
-
*
|
|
7
|
-
* Usage:
|
|
8
|
-
* npx @awcp/transport-sshfs setup # Check and guide
|
|
9
|
-
* npx @awcp/transport-sshfs setup --auto # Auto-configure (needs sudo)
|
|
10
|
-
* npx @awcp/transport-sshfs setup --check # Check only
|
|
11
|
-
*/
|
|
12
|
-
export {};
|
|
13
|
-
//# sourceMappingURL=setup.d.ts.map
|
package/dist/cli/setup.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG"}
|
package/dist/cli/setup.js
DELETED
|
@@ -1,286 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* AWCP SSHFS Transport Setup CLI
|
|
4
|
-
*
|
|
5
|
-
* Configures SSH certificate authentication for AWCP.
|
|
6
|
-
*
|
|
7
|
-
* Usage:
|
|
8
|
-
* npx @awcp/transport-sshfs setup # Check and guide
|
|
9
|
-
* npx @awcp/transport-sshfs setup --auto # Auto-configure (needs sudo)
|
|
10
|
-
* npx @awcp/transport-sshfs setup --check # Check only
|
|
11
|
-
*/
|
|
12
|
-
import { spawn, execSync } from 'node:child_process';
|
|
13
|
-
import { access, mkdir, readFile, constants } from 'node:fs/promises';
|
|
14
|
-
import { join } from 'node:path';
|
|
15
|
-
import { homedir, platform } from 'node:os';
|
|
16
|
-
import * as net from 'node:net';
|
|
17
|
-
const CA_KEY_PATH = join(homedir(), '.awcp', 'ca');
|
|
18
|
-
const SSHD_CONFIG_PATH = '/etc/ssh/sshd_config';
|
|
19
|
-
/**
|
|
20
|
-
* Print colored output
|
|
21
|
-
*/
|
|
22
|
-
function print(message) {
|
|
23
|
-
console.log(message);
|
|
24
|
-
}
|
|
25
|
-
function printStatus(name, status, message) {
|
|
26
|
-
const icon = status === 'ok' ? '✓' : status === 'missing' ? '✗' : '!';
|
|
27
|
-
const color = status === 'ok' ? '\x1b[32m' : status === 'missing' ? '\x1b[31m' : '\x1b[33m';
|
|
28
|
-
console.log(` ${color}[${icon}]\x1b[0m ${name.padEnd(20)} ${message}`);
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Check if a command exists
|
|
32
|
-
*/
|
|
33
|
-
async function commandExists(cmd) {
|
|
34
|
-
try {
|
|
35
|
-
execSync(`which ${cmd}`, { stdio: 'ignore' });
|
|
36
|
-
return true;
|
|
37
|
-
}
|
|
38
|
-
catch {
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Check if sshd is running
|
|
44
|
-
*/
|
|
45
|
-
/**
|
|
46
|
-
* Check if sshd is running by trying to connect to port 22
|
|
47
|
-
*/
|
|
48
|
-
async function isSshdRunning() {
|
|
49
|
-
return new Promise((resolve) => {
|
|
50
|
-
const socket = new net.Socket();
|
|
51
|
-
socket.setTimeout(2000);
|
|
52
|
-
socket.on('connect', () => {
|
|
53
|
-
socket.destroy();
|
|
54
|
-
resolve(true);
|
|
55
|
-
});
|
|
56
|
-
socket.on('timeout', () => {
|
|
57
|
-
socket.destroy();
|
|
58
|
-
resolve(false);
|
|
59
|
-
});
|
|
60
|
-
socket.on('error', () => {
|
|
61
|
-
resolve(false);
|
|
62
|
-
});
|
|
63
|
-
socket.connect(22, 'localhost');
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Check if sshd_config has TrustedUserCAKeys configured
|
|
68
|
-
*/
|
|
69
|
-
async function isSshdConfigured() {
|
|
70
|
-
try {
|
|
71
|
-
const content = await readFile(SSHD_CONFIG_PATH, 'utf-8');
|
|
72
|
-
const caKeyPub = `${CA_KEY_PATH}.pub`;
|
|
73
|
-
return content.includes(`TrustedUserCAKeys`) && content.includes(caKeyPub);
|
|
74
|
-
}
|
|
75
|
-
catch {
|
|
76
|
-
return false;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Check if CA key exists
|
|
81
|
-
*/
|
|
82
|
-
async function caKeyExists() {
|
|
83
|
-
try {
|
|
84
|
-
await access(CA_KEY_PATH, constants.R_OK);
|
|
85
|
-
return true;
|
|
86
|
-
}
|
|
87
|
-
catch {
|
|
88
|
-
return false;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Generate CA key pair
|
|
93
|
-
*/
|
|
94
|
-
async function generateCaKey() {
|
|
95
|
-
const caDir = join(CA_KEY_PATH, '..');
|
|
96
|
-
await mkdir(caDir, { recursive: true, mode: 0o700 });
|
|
97
|
-
return new Promise((resolve, reject) => {
|
|
98
|
-
const proc = spawn('ssh-keygen', [
|
|
99
|
-
'-t', 'ed25519',
|
|
100
|
-
'-f', CA_KEY_PATH,
|
|
101
|
-
'-N', '',
|
|
102
|
-
'-C', 'awcp-ca',
|
|
103
|
-
], { stdio: 'inherit' });
|
|
104
|
-
proc.on('close', (code) => {
|
|
105
|
-
if (code === 0)
|
|
106
|
-
resolve();
|
|
107
|
-
else
|
|
108
|
-
reject(new Error(`ssh-keygen failed with code ${code}`));
|
|
109
|
-
});
|
|
110
|
-
proc.on('error', reject);
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Configure sshd (requires sudo)
|
|
115
|
-
*/
|
|
116
|
-
async function configureSshd() {
|
|
117
|
-
const caKeyPub = `${CA_KEY_PATH}.pub`;
|
|
118
|
-
print('\n Configuring sshd (requires sudo)...');
|
|
119
|
-
// Add TrustedUserCAKeys to sshd_config
|
|
120
|
-
execSync(`echo "TrustedUserCAKeys ${caKeyPub}" | sudo tee -a ${SSHD_CONFIG_PATH}`, {
|
|
121
|
-
stdio: 'inherit',
|
|
122
|
-
});
|
|
123
|
-
// Restart sshd
|
|
124
|
-
if (platform() === 'darwin') {
|
|
125
|
-
execSync('sudo launchctl stop com.openssh.sshd', { stdio: 'inherit' });
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
128
|
-
execSync('sudo systemctl restart sshd || sudo systemctl restart ssh', { stdio: 'inherit' });
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Run all checks
|
|
133
|
-
*/
|
|
134
|
-
async function runChecks() {
|
|
135
|
-
const results = [];
|
|
136
|
-
// Check ssh-keygen
|
|
137
|
-
const hasSshKeygen = await commandExists('ssh-keygen');
|
|
138
|
-
results.push({
|
|
139
|
-
name: 'ssh-keygen',
|
|
140
|
-
status: hasSshKeygen ? 'ok' : 'missing',
|
|
141
|
-
message: hasSshKeygen ? 'found' : 'not found',
|
|
142
|
-
hint: 'Install OpenSSH client',
|
|
143
|
-
});
|
|
144
|
-
// Check sshfs
|
|
145
|
-
const hasSshfs = await commandExists('sshfs');
|
|
146
|
-
results.push({
|
|
147
|
-
name: 'sshfs',
|
|
148
|
-
status: hasSshfs ? 'ok' : 'missing',
|
|
149
|
-
message: hasSshfs ? 'found' : 'not found',
|
|
150
|
-
hint: platform() === 'darwin'
|
|
151
|
-
? 'Install: brew install macfuse && brew install sshfs'
|
|
152
|
-
: 'Install: sudo apt install sshfs',
|
|
153
|
-
});
|
|
154
|
-
// Check sshd
|
|
155
|
-
const sshdRunning = await isSshdRunning();
|
|
156
|
-
results.push({
|
|
157
|
-
name: 'sshd',
|
|
158
|
-
status: sshdRunning ? 'ok' : 'missing',
|
|
159
|
-
message: sshdRunning ? 'running' : 'not running',
|
|
160
|
-
hint: platform() === 'darwin'
|
|
161
|
-
? 'Enable: System Settings → General → Sharing → Remote Login'
|
|
162
|
-
: 'Install & start: sudo apt install openssh-server && sudo systemctl start sshd',
|
|
163
|
-
});
|
|
164
|
-
// Check CA key
|
|
165
|
-
const hasCaKey = await caKeyExists();
|
|
166
|
-
results.push({
|
|
167
|
-
name: 'CA key',
|
|
168
|
-
status: hasCaKey ? 'ok' : 'missing',
|
|
169
|
-
message: hasCaKey ? `exists at ${CA_KEY_PATH}` : 'not found',
|
|
170
|
-
hint: 'Will be auto-generated',
|
|
171
|
-
});
|
|
172
|
-
// Check sshd config (only if CA key exists)
|
|
173
|
-
if (hasCaKey) {
|
|
174
|
-
const sshdConfigured = await isSshdConfigured();
|
|
175
|
-
results.push({
|
|
176
|
-
name: 'sshd TrustedUserCAKeys',
|
|
177
|
-
status: sshdConfigured ? 'ok' : 'missing',
|
|
178
|
-
message: sshdConfigured ? 'configured' : 'not configured',
|
|
179
|
-
hint: `Add to ${SSHD_CONFIG_PATH}: TrustedUserCAKeys ${CA_KEY_PATH}.pub`,
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
return results;
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Print setup instructions
|
|
186
|
-
*/
|
|
187
|
-
function printInstructions(results) {
|
|
188
|
-
const missing = results.filter(r => r.status === 'missing');
|
|
189
|
-
if (missing.length === 0) {
|
|
190
|
-
print('\n \x1b[32m✓ All checks passed! AWCP is ready to use.\x1b[0m\n');
|
|
191
|
-
return;
|
|
192
|
-
}
|
|
193
|
-
print('\n \x1b[33mSetup required:\x1b[0m\n');
|
|
194
|
-
for (const result of missing) {
|
|
195
|
-
if (result.hint) {
|
|
196
|
-
print(` • ${result.name}: ${result.hint}`);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
// Print auto command hint
|
|
200
|
-
const needsSshdConfig = missing.some(r => r.name === 'sshd TrustedUserCAKeys');
|
|
201
|
-
const needsCaKey = missing.some(r => r.name === 'CA key');
|
|
202
|
-
if (needsCaKey || needsSshdConfig) {
|
|
203
|
-
print('\n Or run with --auto to configure automatically:');
|
|
204
|
-
print(' npx @awcp/transport-sshfs setup --auto\n');
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* Main setup function
|
|
209
|
-
*/
|
|
210
|
-
async function setup(options) {
|
|
211
|
-
print('');
|
|
212
|
-
print('╔════════════════════════════════════════════════════════════╗');
|
|
213
|
-
print('║ AWCP SSHFS Transport Setup ║');
|
|
214
|
-
print('╚════════════════════════════════════════════════════════════╝');
|
|
215
|
-
print('');
|
|
216
|
-
print(' Checking dependencies...');
|
|
217
|
-
print('');
|
|
218
|
-
const results = await runChecks();
|
|
219
|
-
for (const result of results) {
|
|
220
|
-
printStatus(result.name, result.status, result.message);
|
|
221
|
-
}
|
|
222
|
-
if (options.check) {
|
|
223
|
-
const allOk = results.every(r => r.status === 'ok');
|
|
224
|
-
process.exit(allOk ? 0 : 1);
|
|
225
|
-
}
|
|
226
|
-
if (options.auto) {
|
|
227
|
-
// Auto-configure
|
|
228
|
-
const needsCaKey = results.some(r => r.name === 'CA key' && r.status === 'missing');
|
|
229
|
-
const needsSshdConfig = results.some(r => r.name === 'sshd TrustedUserCAKeys' && r.status === 'missing');
|
|
230
|
-
if (needsCaKey) {
|
|
231
|
-
print('\n Generating CA key pair...');
|
|
232
|
-
await generateCaKey();
|
|
233
|
-
printStatus('CA key', 'ok', `generated at ${CA_KEY_PATH}`);
|
|
234
|
-
}
|
|
235
|
-
if (needsSshdConfig || needsCaKey) {
|
|
236
|
-
// Re-check if sshd config is needed after CA key generation
|
|
237
|
-
const sshdConfigured = await isSshdConfigured();
|
|
238
|
-
if (!sshdConfigured) {
|
|
239
|
-
await configureSshd();
|
|
240
|
-
printStatus('sshd TrustedUserCAKeys', 'ok', 'configured');
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
print('\n \x1b[32m✓ Setup complete! AWCP is ready to use.\x1b[0m\n');
|
|
244
|
-
}
|
|
245
|
-
else {
|
|
246
|
-
printInstructions(results);
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
/**
|
|
250
|
-
* Parse CLI arguments and run
|
|
251
|
-
*/
|
|
252
|
-
async function main() {
|
|
253
|
-
const args = process.argv.slice(2);
|
|
254
|
-
// Handle help
|
|
255
|
-
if (args.includes('--help') || args.includes('-h')) {
|
|
256
|
-
print(`
|
|
257
|
-
AWCP SSHFS Transport Setup
|
|
258
|
-
|
|
259
|
-
Usage:
|
|
260
|
-
npx @awcp/transport-sshfs setup [options]
|
|
261
|
-
|
|
262
|
-
Options:
|
|
263
|
-
--auto Auto-configure everything (requires sudo for sshd config)
|
|
264
|
-
--check Check only, don't print setup instructions
|
|
265
|
-
--help Show this help message
|
|
266
|
-
|
|
267
|
-
Examples:
|
|
268
|
-
npx @awcp/transport-sshfs setup # Check and show instructions
|
|
269
|
-
npx @awcp/transport-sshfs setup --auto # Auto-configure
|
|
270
|
-
`);
|
|
271
|
-
process.exit(0);
|
|
272
|
-
}
|
|
273
|
-
const options = {
|
|
274
|
-
auto: args.includes('--auto'),
|
|
275
|
-
check: args.includes('--check'),
|
|
276
|
-
};
|
|
277
|
-
try {
|
|
278
|
-
await setup(options);
|
|
279
|
-
}
|
|
280
|
-
catch (error) {
|
|
281
|
-
console.error('\n \x1b[31mError:\x1b[0m', error instanceof Error ? error.message : error);
|
|
282
|
-
process.exit(1);
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
main();
|
|
286
|
-
//# sourceMappingURL=setup.js.map
|
package/dist/cli/setup.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SSHFS Transport Adapter
|
|
3
|
-
*
|
|
4
|
-
* Implements TransportAdapter interface for SSHFS transport.
|
|
5
|
-
*/
|
|
6
|
-
import type { TransportAdapter, TransportPrepareParams, TransportPrepareResult, TransportSetupParams, TransportTeardownParams, DependencyCheckResult } from '@awcp/core';
|
|
7
|
-
import type { SshfsTransportConfig } from './types.js';
|
|
8
|
-
export declare class SshfsTransport implements TransportAdapter {
|
|
9
|
-
readonly type: "sshfs";
|
|
10
|
-
private config;
|
|
11
|
-
private credentialManager?;
|
|
12
|
-
private mountClient?;
|
|
13
|
-
constructor(config?: SshfsTransportConfig);
|
|
14
|
-
prepare(params: TransportPrepareParams): Promise<TransportPrepareResult>;
|
|
15
|
-
cleanup(delegationId: string): Promise<void>;
|
|
16
|
-
checkDependency(): Promise<DependencyCheckResult>;
|
|
17
|
-
setup(params: TransportSetupParams): Promise<string>;
|
|
18
|
-
teardown(params: TransportTeardownParams): Promise<void>;
|
|
19
|
-
private ensureMountClient;
|
|
20
|
-
unmountAll(): Promise<void>;
|
|
21
|
-
revokeAllCredentials(): Promise<void>;
|
|
22
|
-
cleanupStaleKeyFiles(): Promise<number>;
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=sshfs-transport.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sshfs-transport.d.ts","sourceRoot":"","sources":["../src/sshfs-transport.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EAEtB,MAAM,YAAY,CAAC;AAGpB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,qBAAa,cAAe,YAAW,gBAAgB;IACrD,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IAEjC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,iBAAiB,CAAC,CAAoB;IAC9C,OAAO,CAAC,WAAW,CAAC,CAAmB;gBAE3B,MAAM,GAAE,oBAAyB;IAMvC,OAAO,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA8BxE,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5C,eAAe,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAYjD,KAAK,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBpD,QAAQ,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAM9D,OAAO,CAAC,iBAAiB;IAUnB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrC,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;CAG9C"}
|