Skip to content

Commit ba0ad5c

Browse files
committed
fix: revert "feat: updated all handlers for Vaults and VaultsSecrets with ctx"
This reverts commit 96acf2a.
1 parent 96acf2a commit ba0ad5c

File tree

8 files changed

+93
-122
lines changed

8 files changed

+93
-122
lines changed

src/client/handlers/VaultsSecretsCat.ts

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
import type { ContextTimed } from '@matrixai/contexts';
21
import type { DB } from '@matrixai/db';
3-
import type { JSONValue } from '@matrixai/rpc';
42
import type {
53
ClientRPCRequestParams,
64
ClientRPCResponseResult,
@@ -28,20 +26,16 @@ class VaultsSecretsCat extends DuplexHandler<
2826
input: AsyncIterableIterator<
2927
ClientRPCRequestParams<SecretIdentifierMessage>
3028
>,
31-
_cancel: (reason?: any) => void,
32-
_meta: Record<string, JSONValue>,
33-
ctx: ContextTimed,
3429
): AsyncGenerator<ClientRPCResponseResult<ContentOrErrorMessage>> {
3530
const { db, vaultManager }: { db: DB; vaultManager: VaultManager } =
3631
this.container;
3732
yield* db.withTransactionG(async function* (tran): AsyncGenerator<
3833
ClientRPCResponseResult<ContentOrErrorMessage>
3934
> {
4035
// As we need to preserve the order of parameters, we need to loop over
41-
// them individually. Grouping them would make them go out of order.
42-
for await (const secretIdentifierMessage of input) {
43-
ctx.signal.throwIfAborted();
44-
const { nameOrId, secretName } = secretIdentifierMessage;
36+
// them individually, as grouping them would make them go out of order.
37+
for await (const secretIdentiferMessage of input) {
38+
const { nameOrId, secretName } = secretIdentiferMessage;
4539
const vaultIdFromName = await vaultManager.getVaultId(nameOrId, tran);
4640
const vaultId = vaultIdFromName ?? vaultsUtils.decodeVaultId(nameOrId);
4741
if (vaultId == null) throw new vaultsErrors.ErrorVaultsVaultUndefined();

src/client/handlers/VaultsSecretsEnv.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
import type { ContextTimed } from '@matrixai/contexts';
21
import type { DB } from '@matrixai/db';
3-
import type { JSONValue } from '@matrixai/rpc';
42
import type {
53
ClientRPCRequestParams,
64
ClientRPCResponseResult,
@@ -24,18 +22,19 @@ class VaultsSecretsEnv extends DuplexHandler<
2422
input: AsyncIterableIterator<
2523
ClientRPCRequestParams<SecretIdentifierMessage>
2624
>,
27-
_cancel: (reason?: any) => void,
28-
_meta: Record<string, JSONValue>,
29-
ctx: ContextTimed,
25+
_cancel,
26+
_meta,
27+
ctx,
3028
): AsyncGenerator<ClientRPCResponseResult<SecretContentMessage>> {
29+
if (ctx.signal.aborted) throw ctx.signal.reason;
3130
const { db, vaultManager }: { db: DB; vaultManager: VaultManager } =
3231
this.container;
3332

3433
return yield* db.withTransactionG(async function* (tran): AsyncGenerator<
3534
ClientRPCResponseResult<SecretContentMessage>
3635
> {
36+
if (ctx.signal.aborted) throw ctx.signal.reason;
3737
for await (const secretIdentifierMessage of input) {
38-
ctx.signal.throwIfAborted();
3938
const { nameOrId, secretName } = secretIdentifierMessage;
4039
const vaultIdFromName = await vaultManager.getVaultId(nameOrId, tran);
4140
const vaultId = vaultIdFromName ?? vaultsUtils.decodeVaultId(nameOrId);
@@ -76,7 +75,6 @@ class VaultsSecretsEnv extends DuplexHandler<
7675
tran,
7776
);
7877
for (const { filePath, value } of secrets) {
79-
ctx.signal.throwIfAborted();
8078
yield {
8179
nameOrId: nameOrId,
8280
secretName: filePath,

src/client/handlers/VaultsSecretsList.ts

Lines changed: 27 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
import type { ContextTimed } from '@matrixai/contexts';
21
import type { DB } from '@matrixai/db';
3-
import type { JSONValue } from '@matrixai/rpc';
42
import type {
53
ClientRPCRequestParams,
64
ClientRPCResponseResult,
@@ -23,10 +21,7 @@ class VaultsSecretsList extends ServerHandler<
2321
> {
2422
public handle = async function* (
2523
input: ClientRPCRequestParams<SecretIdentifierMessage>,
26-
_cancel: (reason?: any) => void,
27-
_meta: Record<string, JSONValue>,
28-
ctx: ContextTimed,
29-
): AsyncGenerator<ClientRPCResponseResult<SecretFilesMessage>> {
24+
): AsyncGenerator<ClientRPCResponseResult<SecretFilesMessage>, void, void> {
3025
const { db, vaultManager }: { db: DB; vaultManager: VaultManager } =
3126
this.container;
3227
const vaultId = await db.withTransactionF(async (tran) => {
@@ -41,33 +36,34 @@ class VaultsSecretsList extends ServerHandler<
4136
});
4237

4338
yield* vaultManager.withVaultsG([vaultId], (vault) => {
44-
return vault.readG(
45-
async function* (fs): AsyncGenerator<SecretFilesMessage> {
46-
let files: Array<string | Buffer>;
47-
try {
48-
files = await fs.promises.readdir(input.secretName);
49-
} catch (e) {
50-
if (e.code === 'ENOENT') {
51-
throw new vaultsErrors.ErrorSecretsDirectoryUndefined(e.message, {
52-
cause: e,
53-
});
54-
}
55-
if (e.code === 'ENOTDIR') {
56-
throw new vaultsErrors.ErrorSecretsIsSecret(e.message, {
57-
cause: e,
58-
});
59-
}
60-
throw e;
39+
return vault.readG(async function* (fs): AsyncGenerator<
40+
SecretFilesMessage,
41+
void,
42+
void
43+
> {
44+
let files: Array<string | Buffer>;
45+
try {
46+
files = await fs.promises.readdir(input.secretName);
47+
} catch (e) {
48+
if (e.code === 'ENOENT') {
49+
throw new vaultsErrors.ErrorSecretsDirectoryUndefined(e.message, {
50+
cause: e,
51+
});
6152
}
62-
for await (const file of files) {
63-
ctx.signal.throwIfAborted();
64-
const filePath = path.join(input.secretName, file.toString());
65-
const stat = await fs.promises.stat(filePath);
66-
const type = stat.isFile() ? 'FILE' : 'DIRECTORY';
67-
yield { path: filePath, type: type };
53+
if (e.code === 'ENOTDIR') {
54+
throw new vaultsErrors.ErrorSecretsIsSecret(e.message, {
55+
cause: e,
56+
});
6857
}
69-
},
70-
);
58+
throw e;
59+
}
60+
for await (const file of files) {
61+
const filePath = path.join(input.secretName, file.toString());
62+
const stat = await fs.promises.stat(filePath);
63+
const type = stat.isFile() ? 'FILE' : 'DIRECTORY';
64+
yield { path: filePath, type: type };
65+
}
66+
});
7167
});
7268
};
7369
}

src/client/handlers/VaultsSecretsMkdir.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
import type { ContextTimed } from '@matrixai/contexts';
21
import type { DB } from '@matrixai/db';
3-
import type { JSONValue } from '@matrixai/rpc';
42
import type {
53
ClientRPCRequestParams,
64
ClientRPCResponseResult,
@@ -24,17 +22,13 @@ class VaultsSecretsMkdir extends DuplexHandler<
2422
> {
2523
public handle = async function* (
2624
input: AsyncIterableIterator<ClientRPCRequestParams<SecretDirMessage>>,
27-
_cancel: (reason?: any) => void,
28-
_meta: Record<string, JSONValue>,
29-
ctx: ContextTimed,
3025
): AsyncGenerator<ClientRPCResponseResult<SuccessOrErrorMessage>> {
3126
const { db, vaultManager }: { db: DB; vaultManager: VaultManager } =
3227
this.container;
3328
let metadata: POJO;
3429
yield* db.withTransactionG(
3530
async function* (tran): AsyncGenerator<SuccessOrErrorMessage> {
3631
for await (const secretDirMessage of input) {
37-
ctx.signal.throwIfAborted();
3832
// Unpack input
3933
if (metadata == null) metadata = secretDirMessage.metadata ?? {};
4034
const nameOrId = secretDirMessage.nameOrId;
@@ -47,7 +41,10 @@ class VaultsSecretsMkdir extends DuplexHandler<
4741
throw new vaultsErrors.ErrorVaultsVaultUndefined();
4842
}
4943
// Write directories. This doesn't need to be grouped by vault names,
50-
// as no commit is created for empty directories anyway.
44+
// as no commit is created for empty directories anyways. The
45+
// vaultOps.mkdir() method also returns an object of type
46+
// SuccessOrErrorMessage. As such, we can return the result without
47+
// doing any type conversion or extra processing.
5148
yield await vaultManager.withVaults(
5249
[vaultId],
5350
async (vault) => {

src/client/handlers/VaultsSecretsRemove.ts

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
import type { ContextTimed } from '@matrixai/contexts';
21
import type { DB } from '@matrixai/db';
3-
import type { JSONValue } from '@matrixai/rpc';
42
import type { ResourceAcquire } from '@matrixai/resources';
53
import type {
64
ClientRPCRequestParams,
@@ -33,9 +31,6 @@ class VaultsSecretsRemove extends DuplexHandler<
3331
SecretsRemoveHeaderMessage | SecretIdentifierMessageTagged
3432
>
3533
>,
36-
_cancel: (reason?: any) => void,
37-
_meta: Record<string, JSONValue>,
38-
ctx: ContextTimed,
3934
): AsyncGenerator<ClientRPCResponseResult<SuccessOrErrorMessage>> {
4035
const { db, vaultManager }: { db: DB; vaultManager: VaultManager } =
4136
this.container;
@@ -55,7 +50,6 @@ class VaultsSecretsRemove extends DuplexHandler<
5550
const vaultAcquires = await db.withTransactionF(async (tran) => {
5651
const vaultAcquires: Array<ResourceAcquire<FileSystemWritable>> = [];
5752
for (const vaultName of headerMessage.vaultNames) {
58-
ctx.signal.throwIfAborted();
5953
const vaultIdFromName = await vaultManager.getVaultId(vaultName, tran);
6054
const vaultId = vaultIdFromName ?? vaultsUtils.decodeVaultId(vaultName);
6155
if (vaultId == null) {
@@ -82,7 +76,6 @@ class VaultsSecretsRemove extends DuplexHandler<
8276
}
8377
let loopRan = false;
8478
for await (const message of input) {
85-
ctx.signal.throwIfAborted();
8679
loopRan = true;
8780
// Header messages should not be seen anymore
8881
if (message.type === 'VaultNamesHeaderMessage') {
@@ -115,8 +108,8 @@ class VaultsSecretsRemove extends DuplexHandler<
115108
e.code === 'ENOTEMPTY' ||
116109
e.code === 'EINVAL'
117110
) {
118-
// EINVAL can be triggered if removing the root of the vault is
119-
// attempted.
111+
// EINVAL can be triggered if removing the root of the
112+
// vault is attempted.
120113
yield {
121114
type: 'error',
122115
code: e.code,

src/client/handlers/VaultsVersion.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,10 @@ class VaultsVersion extends UnaryHandler<
4444
},
4545
tran,
4646
);
47+
// Checking if latest version ID
48+
const latestVersion = latestOid === currentVersionId;
4749
return {
48-
latestVersion: latestOid === currentVersionId,
50+
latestVersion,
4951
};
5052
});
5153
};

src/vaults/VaultInternal.ts

Lines changed: 31 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ type RemoteInfo = {
4343
};
4444

4545
interface VaultInternal extends CreateDestroyStartStop {}
46-
4746
@CreateDestroyStartStop(
4847
new vaultsErrors.ErrorVaultRunning(),
4948
new vaultsErrors.ErrorVaultDestroyed(),
@@ -62,43 +61,40 @@ class VaultInternal {
6261
* If no state already exists then state for the vault is initialized.
6362
* If state already exists then this just creates the `VaultInternal` instance for managing that state.
6463
*/
65-
public static async createVaultInternal(
66-
{
67-
vaultId,
68-
vaultName,
69-
db,
70-
vaultsDbPath,
71-
keyRing,
72-
efs,
73-
logger = new Logger(this.name),
74-
fresh = false,
75-
}: {
76-
vaultId: VaultId;
77-
vaultName?: VaultName;
78-
db: DB;
79-
vaultsDbPath: LevelPath;
80-
keyRing: KeyRing;
81-
efs: EncryptedFS;
82-
logger?: Logger;
83-
fresh?: boolean;
84-
},
85-
tran?: DBTransaction,
86-
): Promise<VaultInternal> {
64+
public static async createVaultInternal({
65+
vaultId,
66+
vaultName,
67+
db,
68+
vaultsDbPath,
69+
keyRing,
70+
efs,
71+
logger = new Logger(this.name),
72+
fresh = false,
73+
tran,
74+
}: {
75+
vaultId: VaultId;
76+
vaultName?: VaultName;
77+
db: DB;
78+
vaultsDbPath: LevelPath;
79+
keyRing: KeyRing;
80+
efs: EncryptedFS;
81+
logger?: Logger;
82+
fresh?: boolean;
83+
tran?: DBTransaction;
84+
}): Promise<VaultInternal> {
8785
if (tran == null) {
8886
return await db.withTransactionF((tran) =>
89-
this.createVaultInternal(
90-
{
91-
vaultId,
92-
vaultName,
93-
db,
94-
vaultsDbPath,
95-
keyRing,
96-
efs,
97-
logger,
98-
fresh,
99-
},
87+
this.createVaultInternal({
88+
vaultId,
89+
vaultName,
90+
db,
91+
vaultsDbPath,
92+
keyRing,
93+
efs,
94+
logger,
95+
fresh,
10096
tran,
101-
),
97+
}),
10298
);
10399
}
104100

src/vaults/VaultManager.ts

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ type VaultMetadata = {
5454
};
5555

5656
interface VaultManager extends CreateDestroyStartStop {}
57-
5857
@CreateDestroyStartStop(
5958
new vaultsErrors.ErrorVaultManagerRunning(),
6059
new vaultsErrors.ErrorVaultManagerDestroyed(),
@@ -344,19 +343,17 @@ class VaultManager {
344343
[vaultId.toString(), RWLockWriter, 'write'],
345344
async () => {
346345
// Creating vault
347-
const vault = await VaultInternal.createVaultInternal(
348-
{
349-
vaultId: vaultId,
350-
vaultName: vaultName,
351-
keyRing: this.keyRing,
352-
efs: this.efs,
353-
logger: this.logger.getChild(VaultInternal.name),
354-
db: this.db,
355-
vaultsDbPath: this.vaultsDbPath,
356-
fresh: true,
357-
},
346+
const vault = await VaultInternal.createVaultInternal({
347+
vaultId,
348+
vaultName,
349+
keyRing: this.keyRing,
350+
efs: this.efs,
351+
logger: this.logger.getChild(VaultInternal.name),
352+
db: this.db,
353+
vaultsDbPath: this.vaultsDbPath,
354+
fresh: true,
358355
tran,
359-
);
356+
});
360357
// Adding vault to object map
361358
this.vaultMap.set(vaultIdString, vault);
362359
return vault.vaultId;
@@ -987,17 +984,15 @@ class VaultManager {
987984
);
988985
}
989986
// 2. if the state exists then create, add to map and return that
990-
const newVault = await VaultInternal.createVaultInternal(
991-
{
992-
vaultId: vaultId,
993-
keyRing: this.keyRing,
994-
efs: this.efs,
995-
logger: this.logger.getChild(VaultInternal.name),
996-
db: this.db,
997-
vaultsDbPath: this.vaultsDbPath,
998-
},
987+
const newVault = await VaultInternal.createVaultInternal({
988+
vaultId,
989+
keyRing: this.keyRing,
990+
efs: this.efs,
991+
logger: this.logger.getChild(VaultInternal.name),
992+
db: this.db,
993+
vaultsDbPath: this.vaultsDbPath,
999994
tran,
1000-
);
995+
});
1001996
this.vaultMap.set(vaultIdString, newVault);
1002997
return newVault;
1003998
}

0 commit comments

Comments
 (0)