Skip to content

Commit

Permalink
chore: renamed VaultsSecretsList to VaultsSecretsGetFileTree
Browse files Browse the repository at this point in the history
  • Loading branch information
aryanjassal committed Aug 12, 2024
1 parent 5e9b16e commit 41d4375
Show file tree
Hide file tree
Showing 7 changed files with 64 additions and 71 deletions.
6 changes: 3 additions & 3 deletions src/client/callers/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ import vaultsSecretsDelete from './vaultsSecretsDelete';
import vaultsSecretsEdit from './vaultsSecretsEdit';
import vaultsSecretsEnv from './vaultsSecretsEnv';
import vaultsSecretsGet from './vaultsSecretsGet';
import vaultsSecretsList from './vaultsSecretsList';
import vaultsSecretsGetFileTree from './vaultsSecretsGetFileTree';
import vaultsSecretsMkdir from './vaultsSecretsMkdir';
import vaultsSecretsNew from './vaultsSecretsNew';
import vaultsSecretsNewDir from './vaultsSecretsNewDir';
Expand Down Expand Up @@ -148,7 +148,7 @@ const clientManifest = {
vaultsSecretsEdit,
vaultsSecretsEnv,
vaultsSecretsGet,
vaultsSecretsList,
vaultsSecretsGetFileTree,
vaultsSecretsMkdir,
vaultsSecretsNew,
vaultsSecretsNewDir,
Expand Down Expand Up @@ -228,7 +228,7 @@ export {
vaultsSecretsEdit,
vaultsSecretsEnv,
vaultsSecretsGet,
vaultsSecretsList,
vaultsSecretsGetFileTree,
vaultsSecretsMkdir,
vaultsSecretsNew,
vaultsSecretsNewDir,
Expand Down
5 changes: 5 additions & 0 deletions src/client/callers/vaultsSecretsGetFileTree.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { RawCaller } from '@matrixai/rpc';

const vaultsSecretsGetFileTree = new RawCaller();

export default vaultsSecretsGetFileTree;
5 changes: 0 additions & 5 deletions src/client/callers/vaultsSecretsList.ts

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import type { DB } from '@matrixai/db';
import type { JSONObject, JSONRPCRequest } from '@matrixai/rpc';
import type VaultManager from '../../vaults/VaultManager';
import type { TreeNode, ContentNode } from '../../vaults/types';
import { ReadableStream } from 'stream/web';
import { RawHandler } from '@matrixai/rpc';
import * as vaultsUtils from '../../vaults/utils';
Expand Down Expand Up @@ -46,7 +45,7 @@ class VaultsSecretsGetFileTree extends RawHandler<{
});

const filesData = vaultManager.withVaultsG([vaultId], (vault) => {
return vault.readG(async function* (fs): AsyncGenerator<Uint8Array> {
return vault.readG((fs): AsyncGenerator<Uint8Array, void, void> => {
const fileTreeGen = fileTree.globWalk({
fs: fs,
basePath: '.',
Expand All @@ -57,26 +56,30 @@ class VaultsSecretsGetFileTree extends RawHandler<{
yieldParents: params.yieldParents as boolean,
yieldDirectories: params.yieldDirectories as boolean,
});
const serializedStream = fileTree.serializerStreamFactory(
return fileTree.serializerStreamFactory(
fs,
fileTreeGen,
params.yieldContents as boolean,
);
for await (const res of serializedStream) {
yield res;
}
});
});

const filesDataStream = new ReadableStream<Uint8Array>({
// start: async (controller) => {
// const uarray = new Uint8Array(2);
// // uarray.set([72, 84], 0)
// controller.enqueue(uarray);
// },
pull: async (controller) => {
const next = await filesData.next();
if (next.done === true) return controller.close();
controller.enqueue(next.value);
const { done, value } = await filesData.next();
if (done === true) return controller.close();
controller.enqueue(value);
},
cancel: async (reason) => {
if (typeof filesData.throw === 'function') {
filesData.throw(reason);
}
},
cancel: async() => {
filesData.return('Closed');
}
});

return [{}, filesDataStream];
Expand Down
6 changes: 3 additions & 3 deletions src/client/handlers/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ import VaultsSecretsDelete from './VaultsSecretsDelete';
import VaultsSecretsEdit from './VaultsSecretsEdit';
import VaultsSecretsEnv from './VaultsSecretsEnv';
import VaultsSecretsGet from './VaultsSecretsGet';
import VaultsSecretsList from './VaultsSecretsList';
import VaultsSecretsGetFileTree from './VaultsSecretsGetFileTree';
import VaultsSecretsMkdir from './VaultsSecretsMkdir';
import VaultsSecretsNew from './VaultsSecretsNew';
import VaultsSecretsNewDir from './VaultsSecretsNewDir';
Expand Down Expand Up @@ -188,7 +188,7 @@ const serverManifest = (container: {
vaultsSecretsEdit: new VaultsSecretsEdit(container),
vaultsSecretsEnv: new VaultsSecretsEnv(container),
vaultsSecretsGet: new VaultsSecretsGet(container),
vaultsSecretsList: new VaultsSecretsList(container),
vaultsSecretsGetFileTree: new VaultsSecretsGetFileTree(container),
vaultsSecretsMkdir: new VaultsSecretsMkdir(container),
vaultsSecretsNew: new VaultsSecretsNew(container),
vaultsSecretsNewDir: new VaultsSecretsNewDir(container),
Expand Down Expand Up @@ -270,7 +270,7 @@ export {
VaultsSecretsEdit,
VaultsSecretsEnv,
VaultsSecretsGet,
VaultsSecretsList,
VaultsSecretsGetFileTree,
VaultsSecretsMkdir,
VaultsSecretsNew,
VaultsSecretsNewDir,
Expand Down
74 changes: 32 additions & 42 deletions src/vaults/fileTree.ts
Original file line number Diff line number Diff line change
Expand Up @@ -334,16 +334,17 @@ async function* encodeContent(
}

/**
* Takes an AsyncGenerator<TreeNode> and serializes it into a `ReadableStream<UInt8Array>`
* Takes an AsyncGenerator<TreeNode> and serializes it into a `Asyncgenerator<UInt8Array>`
* @param fs
* @param treeGen - An AsyncGenerator<TreeNode> that yields the files and directories of a file tree.
* @param yieldContents - Toggles sending the contents of files after the file tree.
*/
function serializerStreamFactory(
// TODO: change name?
async function* serializerStreamFactory(
fs: FileSystem | FileSystemReadable,
treeGen: AsyncGenerator<TreeNode, void, void>,
yieldContents: boolean = true,
): ReadableStream<Uint8Array> {
): AsyncGenerator<Uint8Array, void, void> {
const files: Array<[number, string]> = [];
let treeDataGen: AsyncGenerator<TreeNode, void, void> | undefined = treeGen;
let contentsGen: AsyncGenerator<Uint8Array, void, void> | undefined =
Expand All @@ -368,49 +369,38 @@ function serializerStreamFactory(
await treeDataGen?.throw(reason).catch(() => {});
await contentsGen?.throw(reason).catch(() => {});
}
return new ReadableStream<Uint8Array>({
start: (controller) => {
controller.enqueue(generateGenericHeader({ type: HeaderType.TREE }));
},
pull: async (controller) => {
try {
if (treeDataGen != null) {
const result = await treeGen.next();
if (!result.done) {
// If a file, add to the file list to encode contents later
if (result.value.type === 'FILE') {
files.push([result.value.iNode, result.value.path]);
}
// Normal tree nodes are just serialized and converted to `UInt8Array`
const jsonSerialized = JSON.stringify(result.value);
controller.enqueue(
vaultsUtils.bufferToUint8ArrayCopyless(
Buffer.from(jsonSerialized, 'utf-8'),
),
);
} else {
const treeDoneMessage = JSON.stringify({ type: 'DONE' });
controller.enqueue(
vaultsUtils.bufferToUint8ArrayCopyless(
Buffer.from(treeDoneMessage, 'utf-8'),
),
);
treeDataGen = undefined;
try {
yield generateGenericHeader({ type: HeaderType.TREE });
while (true) {
if (treeDataGen != null) {
const result = await treeGen.next();
if (!result.done) {
// If a file, add to the file list to encode contents later
if (result.value.type === 'FILE') {
files.push([result.value.iNode, result.value.path]);
}
// Normal tree nodes are just serialized and converted to `UInt8Array`
const jsonSerialized = JSON.stringify(result.value);
yield vaultsUtils.bufferToUint8ArrayCopyless(
Buffer.from(jsonSerialized, 'utf-8'),
);
} else {
const contentDataChunk = await getNextContentChunk();
if (contentDataChunk == null) return controller.close();
controller.enqueue(contentDataChunk);
const treeDoneMessage = JSON.stringify({ type: 'DONE' });
yield vaultsUtils.bufferToUint8ArrayCopyless(
Buffer.from(treeDoneMessage, 'utf-8'),
);
treeDataGen = undefined;
}
} catch (e) {
await cleanup(e);
return controller.error(e);
} else {
const contentDataChunk = await getNextContentChunk();
if (contentDataChunk == null) return;
yield contentDataChunk;
}
},
cancel: async (reason) => {
await cleanup(reason);
},
});
}
} catch (e) {
await cleanup(e);
throw e;
}
}

/**
Expand Down
12 changes: 6 additions & 6 deletions tests/client/handlers/vaults.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ import {
VaultsSecretsEdit,
VaultsSecretsEnv,
VaultsSecretsGet,
VaultsSecretsList,
VaultsSecretsGetFileTree,
VaultsSecretsMkdir,
VaultsSecretsNewDir,
VaultsSecretsNew,
Expand All @@ -56,7 +56,7 @@ import {
vaultsSecretsEdit,
vaultsSecretsEnv,
vaultsSecretsGet,
vaultsSecretsList,
vaultsSecretsGetFileTree,
vaultsSecretsMkdir,
vaultsSecretsNew,
vaultsSecretsNewDir,
Expand Down Expand Up @@ -1490,7 +1490,7 @@ describe('vaultsSecretsNewDir and vaultsSecretsList', () => {
let webSocketClient: WebSocketClient;
let rpcClient: RPCClient<{
vaultsSecretsNewDir: typeof vaultsSecretsNewDir;
vaultsSecretsList: typeof vaultsSecretsList;
vaultsSecretsGetFileTree: typeof vaultsSecretsGetFileTree;
}>;
let vaultManager: VaultManager;
beforeEach(async () => {
Expand Down Expand Up @@ -1534,7 +1534,7 @@ describe('vaultsSecretsNewDir and vaultsSecretsList', () => {
fs,
vaultManager,
}),
vaultsSecretsList: new VaultsSecretsList({
vaultsSecretsGetFileTree: new VaultsSecretsGetFileTree({
db,
vaultManager,
}),
Expand All @@ -1552,7 +1552,7 @@ describe('vaultsSecretsNewDir and vaultsSecretsList', () => {
rpcClient = new RPCClient({
manifest: {
vaultsSecretsNewDir,
vaultsSecretsList,
vaultsSecretsGetFileTree,
},
streamFactory: () => webSocketClient.connection.newStream(),
toError: networkUtils.toError,
Expand Down Expand Up @@ -1590,7 +1590,7 @@ describe('vaultsSecretsNewDir and vaultsSecretsList', () => {
});
expect(addResponse.success).toBeTruthy();
// List secrets
const secrets = await rpcClient.methods.vaultsSecretsList({
const secrets = await rpcClient.methods.vaultsSecretsGetFileTree({
vaultNameOrId: vaultsIdEncoded,
pattern: '**/*',
yieldStats: false,
Expand Down

0 comments on commit 41d4375

Please sign in to comment.