@ibgib/node-gib 0.0.22 → 0.0.24
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/README.md +4 -0
- package/dist/email/aws/email-receiver-aws.mjs +3 -3
- package/dist/email/aws/email-receiver-aws.mjs.map +1 -1
- package/dist/email/aws/email-sender-aws.mjs +1 -1
- package/dist/email/aws/email-sender-aws.mjs.map +1 -1
- package/dist/email/email-sender.mjs +3 -3
- package/dist/email/email-sender.mjs.map +1 -1
- package/dist/email/verify/email-verify-helpers.mjs +5 -5
- package/dist/email/verify/email-verify-helpers.mjs.map +1 -1
- package/dist/identity/sso/custodian-auth-helpers.mjs +1 -1
- package/dist/identity/sso/custodian-auth-helpers.mjs.map +1 -1
- package/dist/identity/sso/sso-custodian-service.mjs +4 -4
- package/dist/identity/sso/sso-custodian-service.mjs.map +1 -1
- package/dist/serve-gib/handlers/api/email/email-inbound.handler.mjs +2 -2
- package/dist/serve-gib/handlers/api/email/email-inbound.handler.mjs.map +1 -1
- package/dist/serve-gib/handlers/api/email/email-outbound.handler.mjs +3 -3
- package/dist/serve-gib/handlers/api/email/email-outbound.handler.mjs.map +1 -1
- package/dist/serve-gib/handlers/api/email/email-verification-code.handler.mjs +1 -1
- package/dist/serve-gib/handlers/api/email/email-verification-code.handler.mjs.map +1 -1
- package/dist/serve-gib/handlers/api/email/email-verify-code-onetime.handler.mjs +1 -1
- package/dist/serve-gib/handlers/api/email/email-verify-code-onetime.handler.mjs.map +1 -1
- package/dist/serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler.mjs +15 -15
- package/dist/serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler.mjs.map +1 -1
- package/dist/serve-gib/handlers/api/identity/keystone-custodian-genesis.handler.mjs +2 -2
- package/dist/serve-gib/handlers/api/identity/keystone-custodian-genesis.handler.mjs.map +1 -1
- package/dist/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.mjs +1 -1
- package/dist/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.mjs.map +1 -1
- package/dist/serve-gib/handlers/api/keystone/keystone-genesis.handler.mjs +2 -2
- package/dist/serve-gib/handlers/api/keystone/keystone-genesis.handler.mjs.map +1 -1
- package/dist/serve-gib/handlers/api/keystone/keystone-lookup.handler.mjs +1 -1
- package/dist/serve-gib/handlers/api/keystone/keystone-lookup.handler.mjs.map +1 -1
- package/dist/serve-gib/handlers/api/keystone/sso-link.handler.mjs +6 -6
- package/dist/serve-gib/handlers/api/keystone/sso-link.handler.mjs.map +1 -1
- package/dist/serve-gib/handlers/api/keystone/sso-login.handler.mjs +3 -3
- package/dist/serve-gib/handlers/api/keystone/sso-login.handler.mjs.map +1 -1
- package/dist/serve-gib/identity-index/identity-index-helpers.mjs +1 -1
- package/dist/serve-gib/identity-index/identity-index-helpers.mjs.map +1 -1
- package/dist/serve-gib/identity-index/identity-index-service.mjs +1 -1
- package/dist/serve-gib/identity-index/identity-index-service.mjs.map +1 -1
- package/dist/vcs/workspace-space-helper.d.mts +26 -0
- package/dist/vcs/workspace-space-helper.d.mts.map +1 -0
- package/dist/vcs/workspace-space-helper.mjs +71 -0
- package/dist/vcs/workspace-space-helper.mjs.map +1 -0
- package/dist/witness/space/node-workspace-projection-space/node-workspace-projection-space-constants.d.mts +7 -0
- package/dist/witness/space/node-workspace-projection-space/node-workspace-projection-space-constants.d.mts.map +1 -0
- package/dist/witness/space/node-workspace-projection-space/node-workspace-projection-space-constants.mjs +7 -0
- package/dist/witness/space/node-workspace-projection-space/node-workspace-projection-space-constants.mjs.map +1 -0
- package/dist/witness/space/node-workspace-projection-space/node-workspace-projection-space-types.d.mts +15 -0
- package/dist/witness/space/node-workspace-projection-space/node-workspace-projection-space-types.d.mts.map +1 -0
- package/dist/witness/space/node-workspace-projection-space/node-workspace-projection-space-types.mjs +23 -0
- package/dist/witness/space/node-workspace-projection-space/node-workspace-projection-space-types.mjs.map +1 -0
- package/dist/witness/space/node-workspace-projection-space/node-workspace-projection-space-v1.d.mts +66 -0
- package/dist/witness/space/node-workspace-projection-space/node-workspace-projection-space-v1.d.mts.map +1 -0
- package/dist/witness/space/node-workspace-projection-space/node-workspace-projection-space-v1.mjs +326 -0
- package/dist/witness/space/node-workspace-projection-space/node-workspace-projection-space-v1.mjs.map +1 -0
- package/package.json +5 -5
- package/src/email/aws/email-receiver-aws.mts +3 -3
- package/src/email/aws/email-sender-aws.mts +1 -1
- package/src/email/email-sender.mts +3 -3
- package/src/email/verify/email-verify-helpers.mts +5 -5
- package/src/identity/sso/custodian-auth-helpers.mts +1 -1
- package/src/identity/sso/sso-custodian-service.mts +4 -4
- package/src/serve-gib/handlers/api/email/email-inbound.handler.mts +2 -2
- package/src/serve-gib/handlers/api/email/email-outbound.handler.mts +3 -3
- package/src/serve-gib/handlers/api/email/email-verification-code.handler.mts +1 -1
- package/src/serve-gib/handlers/api/email/email-verify-code-onetime.handler.mts +1 -1
- package/src/serve-gib/handlers/api/email/email-verify.respec.mts +4 -4
- package/src/serve-gib/handlers/api/identity/keystone-custodian-add-master-password.handler.mts +15 -15
- package/src/serve-gib/handlers/api/identity/keystone-custodian-genesis.handler.mts +2 -2
- package/src/serve-gib/handlers/api/identity/keystone-custodian-register-delegate.handler.mts +1 -1
- package/src/serve-gib/handlers/api/keystone/keystone-genesis.handler.mts +2 -2
- package/src/serve-gib/handlers/api/keystone/keystone-lookup.handler.mts +1 -1
- package/src/serve-gib/handlers/api/keystone/sso-link.handler.mts +6 -6
- package/src/serve-gib/handlers/api/keystone/sso-login.handler.mts +3 -3
- package/src/serve-gib/identity-index/identity-index-helpers.mts +1 -1
- package/src/serve-gib/identity-index/identity-index-service.mts +1 -1
- package/src/vcs/workspace-space-helper.mts +104 -0
- package/src/witness/space/node-workspace-projection-space/node-workspace-projection-space-constants.mts +8 -0
- package/src/witness/space/node-workspace-projection-space/node-workspace-projection-space-types.mts +43 -0
- package/src/witness/space/node-workspace-projection-space/node-workspace-projection-space-v1.mts +416 -0
- package/src/witness/space/node-workspace-projection-space/node-workspace-projection-space-v1.respec.mts +212 -0
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module workspace-space-helper
|
|
3
|
+
*
|
|
4
|
+
* Helper for managing NodeWorkspaceProjectionSpace_V1 in metaspace.
|
|
5
|
+
*/
|
|
6
|
+
import { extractErrorMsg, getUUID } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
7
|
+
import { NodeWorkspaceProjectionSpace_V1 } from '../witness/space/node-workspace-projection-space/node-workspace-projection-space-v1.mjs';
|
|
8
|
+
import { GLOBAL_LOG_A_LOT } from '@ibgib/core-gib/dist/core-constants.mjs';
|
|
9
|
+
const lcFile = `[workspace-space-helper]`;
|
|
10
|
+
const logalot = GLOBAL_LOG_A_LOT;
|
|
11
|
+
/**
|
|
12
|
+
* Gets an existing projection space for a workspace root or instantiates and returns a NodeWorkspaceProjectionSpace_V1.
|
|
13
|
+
*/
|
|
14
|
+
export async function getOrCreateWorkspaceProjectionSpace({ metaspace, workspaceRoot, vcsFolderName = '.vcsgib', backingSpace, branchAddr, name, }) {
|
|
15
|
+
const lc = `${lcFile}[${getOrCreateWorkspaceProjectionSpace.name}]`;
|
|
16
|
+
try {
|
|
17
|
+
if (logalot) {
|
|
18
|
+
console.log(`${lc} starting... (I: genuuid)`);
|
|
19
|
+
}
|
|
20
|
+
if (!metaspace || !workspaceRoot || !backingSpace) {
|
|
21
|
+
throw new Error(`metaspace, workspaceRoot, and backingSpace are required (E: genuuid)`);
|
|
22
|
+
}
|
|
23
|
+
const spaceName = name || `ws_${workspaceRoot.replace(/[^a-zA-Z0-9_]/g, '_')}`;
|
|
24
|
+
const localSpaces = (await metaspace.getLocalUserSpaces({ lock: false })) || [];
|
|
25
|
+
const existingSpace = localSpaces.find(s => (s.data?.name === spaceName || s.ib === spaceName) ||
|
|
26
|
+
(s.data?.classname?.includes('WorkspaceProjectionSpace') && s.data?.workspaceRoot === workspaceRoot));
|
|
27
|
+
if (existingSpace) {
|
|
28
|
+
const spaceId = existingSpace.data?.uuid || existingSpace.data?.spaceId || spaceName;
|
|
29
|
+
if (logalot) {
|
|
30
|
+
console.log(`${lc} Found existing workspace projection space ${spaceName} (spaceId: ${spaceId})`);
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
space: existingSpace,
|
|
34
|
+
spaceId,
|
|
35
|
+
spaceName,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
const spaceUuid = await getUUID();
|
|
39
|
+
const space = new NodeWorkspaceProjectionSpace_V1({
|
|
40
|
+
initialData: {
|
|
41
|
+
workspaceRoot,
|
|
42
|
+
vcsFolderName,
|
|
43
|
+
classname: 'NodeWorkspaceProjectionSpace_V1',
|
|
44
|
+
name: spaceName,
|
|
45
|
+
uuid: spaceUuid,
|
|
46
|
+
version: '1',
|
|
47
|
+
branchAddr,
|
|
48
|
+
},
|
|
49
|
+
backingSpace,
|
|
50
|
+
});
|
|
51
|
+
await space.initialized;
|
|
52
|
+
if (logalot) {
|
|
53
|
+
console.log(`${lc} Created new workspace projection space ${spaceName} (spaceId: ${spaceUuid})`);
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
space,
|
|
57
|
+
spaceId: spaceUuid,
|
|
58
|
+
spaceName,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
console.error(`${lc} ${extractErrorMsg(error)} (E: genuuid)`);
|
|
63
|
+
throw error;
|
|
64
|
+
}
|
|
65
|
+
finally {
|
|
66
|
+
if (logalot) {
|
|
67
|
+
console.log(`${lc} complete.`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=workspace-space-helper.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-space-helper.mjs","sourceRoot":"","sources":["../../src/vcs/workspace-space-helper.mts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module node-workspace-projection-space-constants
|
|
3
|
+
*
|
|
4
|
+
* Constants for Node.js workspace projection spaces.
|
|
5
|
+
*/
|
|
6
|
+
export declare const DEFAULT_NODE_WORKSPACE_PROJECTION_SPACE_DESCRIPTION = "Node.js space witness for projecting and observing workspace hierarchies on physical disk.";
|
|
7
|
+
//# sourceMappingURL=node-workspace-projection-space-constants.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-workspace-projection-space-constants.d.mts","sourceRoot":"","sources":["../../../../src/witness/space/node-workspace-projection-space/node-workspace-projection-space-constants.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,mDAAmD,+FACgC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module node-workspace-projection-space-constants
|
|
3
|
+
*
|
|
4
|
+
* Constants for Node.js workspace projection spaces.
|
|
5
|
+
*/
|
|
6
|
+
export const DEFAULT_NODE_WORKSPACE_PROJECTION_SPACE_DESCRIPTION = 'Node.js space witness for projecting and observing workspace hierarchies on physical disk.';
|
|
7
|
+
//# sourceMappingURL=node-workspace-projection-space-constants.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-workspace-projection-space-constants.mjs","sourceRoot":"","sources":["../../../../src/witness/space/node-workspace-projection-space/node-workspace-projection-space-constants.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,mDAAmD,GAC5D,4FAA4F,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module node-workspace-projection-space-types
|
|
3
|
+
*
|
|
4
|
+
* Types for Node.js workspace projection spaces.
|
|
5
|
+
*/
|
|
6
|
+
import { WorkspaceProjectionSpaceData_V1, WorkspaceProjectionSpaceRel8ns_V1 } from '@ibgib/core-gib/dist/witness/space/workspace-projection-space/workspace-projection-space-types.mjs';
|
|
7
|
+
/**
|
|
8
|
+
* Data payload for NodeWorkspaceProjectionSpace_V1.
|
|
9
|
+
*/
|
|
10
|
+
export interface NodeWorkspaceProjectionSpaceData_V1 extends WorkspaceProjectionSpaceData_V1 {
|
|
11
|
+
}
|
|
12
|
+
export declare const DEFAULT_NODE_WORKSPACE_PROJECTION_SPACE_DATA_V1: NodeWorkspaceProjectionSpaceData_V1;
|
|
13
|
+
export interface NodeWorkspaceProjectionSpaceRel8ns_V1 extends WorkspaceProjectionSpaceRel8ns_V1 {
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=node-workspace-projection-space-types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-workspace-projection-space-types.d.mts","sourceRoot":"","sources":["../../../../src/witness/space/node-workspace-projection-space/node-workspace-projection-space-types.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACH,+BAA+B,EAC/B,iCAAiC,EACpC,MAAM,oGAAoG,CAAC;AAU5G;;GAEG;AACH,MAAM,WAAW,mCAAoC,SAAQ,+BAA+B;CAC3F;AAED,eAAO,MAAM,+CAA+C,EAAE,mCAc7D,CAAC;AAEF,MAAM,WAAW,qCAAsC,SAAQ,iCAAiC;CAC/F"}
|
package/dist/witness/space/node-workspace-projection-space/node-workspace-projection-space-types.mjs
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module node-workspace-projection-space-types
|
|
3
|
+
*
|
|
4
|
+
* Types for Node.js workspace projection spaces.
|
|
5
|
+
*/
|
|
6
|
+
import { DEFAULT_LOCAL_SPACE_POLLING_INTERVAL_MS, IBGIB_SPACE_NAME_DEFAULT, ZERO_SPACE_ID } from '@ibgib/core-gib/dist/witness/space/space-constants.mjs';
|
|
7
|
+
import { DEFAULT_NODE_WORKSPACE_PROJECTION_SPACE_DESCRIPTION } from './node-workspace-projection-space-constants.mjs';
|
|
8
|
+
export const DEFAULT_NODE_WORKSPACE_PROJECTION_SPACE_DATA_V1 = {
|
|
9
|
+
version: '1',
|
|
10
|
+
uuid: ZERO_SPACE_ID,
|
|
11
|
+
name: IBGIB_SPACE_NAME_DEFAULT,
|
|
12
|
+
classname: 'NodeWorkspaceProjectionSpace_V1',
|
|
13
|
+
workspaceRoot: '',
|
|
14
|
+
vcsFolderName: '.vcsgib',
|
|
15
|
+
persistOptsAndResultIbGibs: false,
|
|
16
|
+
validateIbGibAddrsMatchIbGibs: false,
|
|
17
|
+
longPollingIntervalMs: DEFAULT_LOCAL_SPACE_POLLING_INTERVAL_MS,
|
|
18
|
+
allowPrimitiveArgs: false,
|
|
19
|
+
catchAllErrors: true,
|
|
20
|
+
description: DEFAULT_NODE_WORKSPACE_PROJECTION_SPACE_DESCRIPTION,
|
|
21
|
+
trace: false,
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=node-workspace-projection-space-types.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-workspace-projection-space-types.mjs","sourceRoot":"","sources":["../../../../src/witness/space/node-workspace-projection-space/node-workspace-projection-space-types.mts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EACH,uCAAuC,EACvC,wBAAwB,EACxB,aAAa,EAChB,MAAM,wDAAwD,CAAC;AAChE,OAAO,EACH,mDAAmD,EACtD,MAAM,iDAAiD,CAAC;AAQzD,MAAM,CAAC,MAAM,+CAA+C,GAAwC;IAChG,OAAO,EAAE,GAAG;IACZ,IAAI,EAAE,aAAa;IACnB,IAAI,EAAE,wBAAwB;IAC9B,SAAS,EAAE,iCAAiC;IAC5C,aAAa,EAAE,EAAE;IACjB,aAAa,EAAE,SAAS;IACxB,0BAA0B,EAAE,KAAK;IACjC,6BAA6B,EAAE,KAAK;IACpC,qBAAqB,EAAE,uCAAuC;IAC9D,kBAAkB,EAAE,KAAK;IACzB,cAAc,EAAE,IAAI;IACpB,WAAW,EAAE,mDAAmD;IAChE,KAAK,EAAE,KAAK;CACf,CAAC"}
|
package/dist/witness/space/node-workspace-projection-space/node-workspace-projection-space-v1.d.mts
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module node-workspace-projection-space-v1
|
|
3
|
+
*
|
|
4
|
+
* Concrete Node.js workspace projection space implementation.
|
|
5
|
+
* Projects B2tFS items to physical OS disk and scans physical directories.
|
|
6
|
+
*/
|
|
7
|
+
import { IbGib_V1 } from '@ibgib/ts-gib/dist/V1/types.mjs';
|
|
8
|
+
import { IbGibSpaceAny } from '@ibgib/core-gib/dist/witness/space/space-base-v1.mjs';
|
|
9
|
+
import { WorkspaceProjectionSpaceBase_V1 } from '@ibgib/core-gib/dist/witness/space/workspace-projection-space/workspace-projection-space-base-v1.mjs';
|
|
10
|
+
import { WorkspaceScanResultData } from '@ibgib/core-gib/dist/witness/space/workspace-projection-space/workspace-projection-space-types.mjs';
|
|
11
|
+
import { B2tFSItemIbGib_V1 } from '@ibgib/core-gib/dist/vcs/item/item-types.mjs';
|
|
12
|
+
import { NodeWorkspaceProjectionSpaceData_V1, NodeWorkspaceProjectionSpaceRel8ns_V1 } from './node-workspace-projection-space-types.mjs';
|
|
13
|
+
export interface NodeWorkspaceProjectionSpaceOpts {
|
|
14
|
+
initialData?: NodeWorkspaceProjectionSpaceData_V1;
|
|
15
|
+
initialRel8ns?: NodeWorkspaceProjectionSpaceRel8ns_V1;
|
|
16
|
+
backingSpace?: IbGibSpaceAny;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Node.js Workspace Projection Space that projects B2tFS item DAGs directly onto
|
|
20
|
+
* the local filesystem and scans physical directories to report workspace state.
|
|
21
|
+
*/
|
|
22
|
+
export declare class NodeWorkspaceProjectionSpace_V1 extends WorkspaceProjectionSpaceBase_V1<NodeWorkspaceProjectionSpaceData_V1, NodeWorkspaceProjectionSpaceRel8ns_V1> {
|
|
23
|
+
protected lc: string;
|
|
24
|
+
/** Backing CAS space where source BinIbGibs and child items reside */
|
|
25
|
+
backingSpace?: IbGibSpaceAny;
|
|
26
|
+
constructor(initialDataOrOpts?: NodeWorkspaceProjectionSpaceData_V1 | NodeWorkspaceProjectionSpaceOpts, initialRel8ns?: NodeWorkspaceProjectionSpaceRel8ns_V1);
|
|
27
|
+
/**
|
|
28
|
+
* Projects an item (and its recursive child hierarchy or binary payload) onto the physical workspace.
|
|
29
|
+
*/
|
|
30
|
+
protected putItemToWorkspaceImpl({ item, subPath, }: {
|
|
31
|
+
item: B2tFSItemIbGib_V1;
|
|
32
|
+
subPath?: string;
|
|
33
|
+
}): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Scans the physical workspace directory and returns file observations and pending companion notes.
|
|
36
|
+
*/
|
|
37
|
+
protected scanWorkspaceImpl({ subPath, filterPatterns, }: {
|
|
38
|
+
subPath?: string;
|
|
39
|
+
filterPatterns?: string[];
|
|
40
|
+
}): Promise<WorkspaceScanResultData>;
|
|
41
|
+
/**
|
|
42
|
+
* Unlinks a file, folder, or comment file from disk.
|
|
43
|
+
*/
|
|
44
|
+
protected deleteFromWorkspaceImpl({ relPath, ibGib, }: {
|
|
45
|
+
relPath?: string;
|
|
46
|
+
ibGib?: IbGib_V1;
|
|
47
|
+
}): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Reads raw bytes of a physical workspace file from disk.
|
|
50
|
+
*/
|
|
51
|
+
protected getFileBytesImpl({ relPath, }: {
|
|
52
|
+
relPath: string;
|
|
53
|
+
}): Promise<Uint8Array | undefined>;
|
|
54
|
+
/**
|
|
55
|
+
* Recursively scans physical directories on disk.
|
|
56
|
+
*/
|
|
57
|
+
private scanDirRecursive;
|
|
58
|
+
private isCommentMetadataFilename;
|
|
59
|
+
private extractCommentTopicName;
|
|
60
|
+
private isFiltered;
|
|
61
|
+
/**
|
|
62
|
+
* Helper to fetch an IbGib strictly from backingSpace with fail-fast validation.
|
|
63
|
+
*/
|
|
64
|
+
private fetchIbGib;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=node-workspace-projection-space-v1.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-workspace-projection-space-v1.d.mts","sourceRoot":"","sources":["../../../../src/witness/space/node-workspace-projection-space/node-workspace-projection-space-v1.mts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAG3D,OAAO,EAAE,aAAa,EAAE,MAAM,sDAAsD,CAAC;AAErF,OAAO,EAAE,+BAA+B,EAAE,MAAM,sGAAsG,CAAC;AACvJ,OAAO,EACH,uBAAuB,EAG1B,MAAM,oGAAoG,CAAC;AAC5G,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AAGjF,OAAO,EACH,mCAAmC,EACnC,qCAAqC,EAExC,MAAM,6CAA6C,CAAC;AAIrD,MAAM,WAAW,gCAAgC;IAC7C,WAAW,CAAC,EAAE,mCAAmC,CAAC;IAClD,aAAa,CAAC,EAAE,qCAAqC,CAAC;IACtD,YAAY,CAAC,EAAE,aAAa,CAAC;CAChC;AAED;;;GAGG;AACH,qBAAa,+BAAgC,SAAQ,+BAA+B,CAChF,mCAAmC,EACnC,qCAAqC,CACxC;IACG,UAAmB,EAAE,EAAE,MAAM,CAA+C;IAE5E,sEAAsE;IACtE,YAAY,CAAC,EAAE,aAAa,CAAC;IAE7B,YACI,iBAAiB,CAAC,EAAE,mCAAmC,GAAG,gCAAgC,EAC1F,aAAa,CAAC,EAAE,qCAAqC,EAiBxD;IAID;;OAEG;IACH,UAAyB,sBAAsB,CAAC,EAC5C,IAAI,EACJ,OAAO,GACV,EAAE;QACC,IAAI,EAAE,iBAAiB,CAAC;QACxB,OAAO,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyEhB;IAED;;OAEG;IACH,UAAyB,iBAAiB,CAAC,EACvC,OAAO,EACP,cAAc,GACjB,EAAE;QACC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;KAC7B,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA4CnC;IAED;;OAEG;IACH,UAAyB,uBAAuB,CAAC,EAC7C,OAAO,EACP,KAAK,GACR,EAAE;QACC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,QAAQ,CAAC;KACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBhB;IAED;;OAEG;IACH,UAAyB,gBAAgB,CAAC,EACtC,OAAO,GACV,EAAE;QACC,OAAO,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAWlC;IAMD;;OAEG;YACW,gBAAgB;IAsG9B,OAAO,CAAC,yBAAyB;IAIjC,OAAO,CAAC,uBAAuB;IAK/B,OAAO,CAAC,UAAU;IAIlB;;OAEG;YACW,UAAU;CAsB3B"}
|
package/dist/witness/space/node-workspace-projection-space/node-workspace-projection-space-v1.mjs
ADDED
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module node-workspace-projection-space-v1
|
|
3
|
+
*
|
|
4
|
+
* Concrete Node.js workspace projection space implementation.
|
|
5
|
+
* Projects B2tFS items to physical OS disk and scans physical directories.
|
|
6
|
+
*/
|
|
7
|
+
import fs from 'node:fs/promises';
|
|
8
|
+
import path from 'node:path';
|
|
9
|
+
import crypto from 'node:crypto';
|
|
10
|
+
import { clone, extractErrorMsg } from '@ibgib/helper-gib/dist/helpers/utils-helper.mjs';
|
|
11
|
+
import { GLOBAL_LOG_A_LOT } from '@ibgib/core-gib/dist/core-constants.mjs';
|
|
12
|
+
import { getFromSpace } from '@ibgib/core-gib/dist/witness/space/space-helper.mjs';
|
|
13
|
+
import { WorkspaceProjectionSpaceBase_V1 } from '@ibgib/core-gib/dist/witness/space/workspace-projection-space/workspace-projection-space-base-v1.mjs';
|
|
14
|
+
import { isPathFiltered, parseFilterFileContent } from '@ibgib/core-gib/dist/vcs/filter/glob-helper.mjs';
|
|
15
|
+
import { DEFAULT_NODE_WORKSPACE_PROJECTION_SPACE_DATA_V1, } from './node-workspace-projection-space-types.mjs';
|
|
16
|
+
const logalot = GLOBAL_LOG_A_LOT;
|
|
17
|
+
/**
|
|
18
|
+
* Node.js Workspace Projection Space that projects B2tFS item DAGs directly onto
|
|
19
|
+
* the local filesystem and scans physical directories to report workspace state.
|
|
20
|
+
*/
|
|
21
|
+
export class NodeWorkspaceProjectionSpace_V1 extends WorkspaceProjectionSpaceBase_V1 {
|
|
22
|
+
lc = `[${NodeWorkspaceProjectionSpace_V1.name}]`;
|
|
23
|
+
/** Backing CAS space where source BinIbGibs and child items reside */
|
|
24
|
+
backingSpace;
|
|
25
|
+
constructor(initialDataOrOpts, initialRel8ns) {
|
|
26
|
+
let data;
|
|
27
|
+
let rel8ns = initialRel8ns;
|
|
28
|
+
let backingSpace;
|
|
29
|
+
if (initialDataOrOpts && ('workspaceRoot' in initialDataOrOpts || 'name' in initialDataOrOpts)) {
|
|
30
|
+
data = initialDataOrOpts;
|
|
31
|
+
}
|
|
32
|
+
else if (initialDataOrOpts && typeof initialDataOrOpts === 'object') {
|
|
33
|
+
const opts = initialDataOrOpts;
|
|
34
|
+
data = opts.initialData;
|
|
35
|
+
rel8ns = opts.initialRel8ns ?? initialRel8ns;
|
|
36
|
+
backingSpace = opts.backingSpace;
|
|
37
|
+
}
|
|
38
|
+
super(data ?? clone(DEFAULT_NODE_WORKSPACE_PROJECTION_SPACE_DATA_V1), rel8ns);
|
|
39
|
+
this.backingSpace = backingSpace;
|
|
40
|
+
}
|
|
41
|
+
// #region Implementation of Abstract Extension Hooks
|
|
42
|
+
/**
|
|
43
|
+
* Projects an item (and its recursive child hierarchy or binary payload) onto the physical workspace.
|
|
44
|
+
*/
|
|
45
|
+
async putItemToWorkspaceImpl({ item, subPath, }) {
|
|
46
|
+
const lc = `${this.lc}[${this.putItemToWorkspaceImpl.name}]`;
|
|
47
|
+
try {
|
|
48
|
+
if (logalot) {
|
|
49
|
+
console.log(`${lc} projecting item to workspace...`);
|
|
50
|
+
}
|
|
51
|
+
const workspaceRoot = this.data?.workspaceRoot;
|
|
52
|
+
if (!workspaceRoot) {
|
|
53
|
+
throw new Error(`${lc} workspaceRoot is required in space data (E: genuuid)`);
|
|
54
|
+
}
|
|
55
|
+
if (!item || !item.data) {
|
|
56
|
+
throw new Error(`${lc} item and item.data are required (E: genuuid)`);
|
|
57
|
+
}
|
|
58
|
+
const { fsType, name } = item.data;
|
|
59
|
+
let itemRelPath;
|
|
60
|
+
if (subPath === undefined) {
|
|
61
|
+
itemRelPath = fsType === 'folder' ? '' : (name || '');
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
itemRelPath = name ? (subPath ? path.join(subPath, name) : name) : subPath;
|
|
65
|
+
}
|
|
66
|
+
const targetPath = itemRelPath ? path.join(workspaceRoot, itemRelPath) : workspaceRoot;
|
|
67
|
+
if (fsType === 'folder') {
|
|
68
|
+
await fs.mkdir(targetPath, { recursive: true });
|
|
69
|
+
const childAddrs = item.rel8ns?.b2tFS_child || item.rel8ns?.b2tfs_child || [];
|
|
70
|
+
for (const childAddr of childAddrs) {
|
|
71
|
+
const childItem = (await this.fetchIbGib(childAddr));
|
|
72
|
+
await this.putItemToWorkspaceImpl({
|
|
73
|
+
item: childItem,
|
|
74
|
+
subPath: itemRelPath,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
else if (fsType === 'file') {
|
|
79
|
+
await fs.mkdir(path.dirname(targetPath), { recursive: true });
|
|
80
|
+
if (!item.rel8ns) {
|
|
81
|
+
throw new Error(`${lc} item.rel8ns required for file item (E: genuuid)`);
|
|
82
|
+
}
|
|
83
|
+
const binAddrs = item.rel8ns.bin;
|
|
84
|
+
if (!binAddrs || binAddrs.length === 0) {
|
|
85
|
+
throw new Error(`${lc} item.rel8ns.bin required for file item ${name} (E: genuuid)`);
|
|
86
|
+
}
|
|
87
|
+
const latestBinAddr = binAddrs.at(-1);
|
|
88
|
+
const binIbGib = await this.fetchIbGib(latestBinAddr);
|
|
89
|
+
if (binIbGib.data === undefined) {
|
|
90
|
+
throw new Error(`${lc} BinIbGib at addr ${latestBinAddr} has undefined data (E: genuuid)`);
|
|
91
|
+
}
|
|
92
|
+
let fileData;
|
|
93
|
+
if (binIbGib.data instanceof Uint8Array || Buffer.isBuffer(binIbGib.data)) {
|
|
94
|
+
fileData = binIbGib.data;
|
|
95
|
+
}
|
|
96
|
+
else if (typeof binIbGib.data === 'string') {
|
|
97
|
+
fileData = binIbGib.data;
|
|
98
|
+
}
|
|
99
|
+
else if (typeof binIbGib.data === 'object') {
|
|
100
|
+
const vals = Object.values(binIbGib.data);
|
|
101
|
+
fileData = new Uint8Array(vals);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
fileData = new Uint8Array(0);
|
|
105
|
+
}
|
|
106
|
+
await fs.writeFile(targetPath, fileData);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
console.error(`${lc} ${extractErrorMsg(error)} (E: genuuid)`);
|
|
111
|
+
throw error;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Scans the physical workspace directory and returns file observations and pending companion notes.
|
|
116
|
+
*/
|
|
117
|
+
async scanWorkspaceImpl({ subPath, filterPatterns, }) {
|
|
118
|
+
const lc = `${this.lc}[${this.scanWorkspaceImpl.name}]`;
|
|
119
|
+
try {
|
|
120
|
+
if (logalot) {
|
|
121
|
+
console.log(`${lc} starting physical scan...`);
|
|
122
|
+
}
|
|
123
|
+
const workspaceRoot = this.data?.workspaceRoot;
|
|
124
|
+
if (!workspaceRoot) {
|
|
125
|
+
throw new Error(`${lc} workspaceRoot is required in space data (E: genuuid)`);
|
|
126
|
+
}
|
|
127
|
+
const scanDir = subPath ? path.join(workspaceRoot, subPath) : workspaceRoot;
|
|
128
|
+
const vcsFolderName = this.data?.vcsFolderName || '.vcsgib';
|
|
129
|
+
let patterns = filterPatterns ?? this.data?.filterPatterns;
|
|
130
|
+
if (!patterns || patterns.length === 0) {
|
|
131
|
+
try {
|
|
132
|
+
const ignorePath = path.join(workspaceRoot, '.ibgibignore');
|
|
133
|
+
const ignoreContent = await fs.readFile(ignorePath, 'utf8');
|
|
134
|
+
patterns = parseFilterFileContent(ignoreContent);
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
patterns = [];
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
const files = new Map();
|
|
141
|
+
const pendingComments = [];
|
|
142
|
+
await this.scanDirRecursive({
|
|
143
|
+
dirPath: scanDir,
|
|
144
|
+
baseDir: workspaceRoot,
|
|
145
|
+
vcsFolderName,
|
|
146
|
+
filterPatterns: patterns,
|
|
147
|
+
outFiles: files,
|
|
148
|
+
outComments: pendingComments,
|
|
149
|
+
});
|
|
150
|
+
return {
|
|
151
|
+
files,
|
|
152
|
+
pendingComments,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
console.error(`${lc} ${extractErrorMsg(error)} (E: genuuid)`);
|
|
157
|
+
throw error;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Unlinks a file, folder, or comment file from disk.
|
|
162
|
+
*/
|
|
163
|
+
async deleteFromWorkspaceImpl({ relPath, ibGib, }) {
|
|
164
|
+
const lc = `${this.lc}[${this.deleteFromWorkspaceImpl.name}]`;
|
|
165
|
+
try {
|
|
166
|
+
if (logalot) {
|
|
167
|
+
console.log(`${lc} deleting from workspace...`);
|
|
168
|
+
}
|
|
169
|
+
const workspaceRoot = this.data?.workspaceRoot;
|
|
170
|
+
if (!workspaceRoot) {
|
|
171
|
+
throw new Error(`${lc} workspaceRoot is required (E: genuuid)`);
|
|
172
|
+
}
|
|
173
|
+
const targetRelPath = relPath || ibGib?.data?.name;
|
|
174
|
+
if (!targetRelPath) {
|
|
175
|
+
throw new Error(`${lc} relPath or item name required for deletion (E: genuuid)`);
|
|
176
|
+
}
|
|
177
|
+
const fullPath = path.join(workspaceRoot, targetRelPath);
|
|
178
|
+
await fs.rm(fullPath, { recursive: true, force: true });
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
console.error(`${lc} ${extractErrorMsg(error)} (E: genuuid)`);
|
|
182
|
+
throw error;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Reads raw bytes of a physical workspace file from disk.
|
|
187
|
+
*/
|
|
188
|
+
async getFileBytesImpl({ relPath, }) {
|
|
189
|
+
const lc = `${this.lc}[${this.getFileBytesImpl.name}]`;
|
|
190
|
+
try {
|
|
191
|
+
const workspaceRoot = this.data?.workspaceRoot;
|
|
192
|
+
if (!workspaceRoot) {
|
|
193
|
+
return undefined;
|
|
194
|
+
}
|
|
195
|
+
const fullPath = path.isAbsolute(relPath) ? relPath : path.join(workspaceRoot, relPath);
|
|
196
|
+
const buf = await fs.readFile(fullPath);
|
|
197
|
+
return new Uint8Array(buf);
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
return undefined;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
// #endregion
|
|
204
|
+
// #region Internal Helpers
|
|
205
|
+
/**
|
|
206
|
+
* Recursively scans physical directories on disk.
|
|
207
|
+
*/
|
|
208
|
+
async scanDirRecursive({ dirPath, baseDir, vcsFolderName, filterPatterns, outFiles, outComments, }) {
|
|
209
|
+
const lc = `${this.lc}[${this.scanDirRecursive.name}]`;
|
|
210
|
+
let entries = [];
|
|
211
|
+
try {
|
|
212
|
+
entries = await fs.readdir(dirPath, { withFileTypes: true });
|
|
213
|
+
}
|
|
214
|
+
catch (error) {
|
|
215
|
+
console.error(`${lc} Failed to read directory ${dirPath}: ${extractErrorMsg(error)} (E: genuuid)`);
|
|
216
|
+
throw error;
|
|
217
|
+
}
|
|
218
|
+
for (const entry of entries) {
|
|
219
|
+
const fullEntryPath = path.join(dirPath, entry.name);
|
|
220
|
+
const relPath = path.relative(baseDir, fullEntryPath).replace(/\\/g, '/');
|
|
221
|
+
// Exclude VCS metadata folders, .git, and worktrees folder 'b'
|
|
222
|
+
if (relPath === vcsFolderName || relPath.startsWith(vcsFolderName + '/') ||
|
|
223
|
+
relPath === '.git' || relPath.startsWith('.git/') ||
|
|
224
|
+
relPath === 'b' || relPath.startsWith('b/')) {
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
if (this.isFiltered(relPath, entry.isDirectory(), filterPatterns)) {
|
|
228
|
+
continue;
|
|
229
|
+
}
|
|
230
|
+
if (entry.isDirectory()) {
|
|
231
|
+
outFiles.set(relPath, {
|
|
232
|
+
relPath,
|
|
233
|
+
fullPath: fullEntryPath,
|
|
234
|
+
isDirectory: true,
|
|
235
|
+
});
|
|
236
|
+
await this.scanDirRecursive({
|
|
237
|
+
dirPath: fullEntryPath,
|
|
238
|
+
baseDir,
|
|
239
|
+
vcsFolderName,
|
|
240
|
+
filterPatterns,
|
|
241
|
+
outFiles,
|
|
242
|
+
outComments,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
else if (entry.isFile()) {
|
|
246
|
+
if (this.isCommentMetadataFilename(entry.name)) {
|
|
247
|
+
const parentRelPath = path.relative(baseDir, dirPath).replace(/\\/g, '/');
|
|
248
|
+
const normalizedParent = parentRelPath === '.' ? '' : parentRelPath;
|
|
249
|
+
let content = '';
|
|
250
|
+
try {
|
|
251
|
+
content = await fs.readFile(fullEntryPath, 'utf8');
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
console.error(`${lc} Failed to read comment file ${fullEntryPath}: ${extractErrorMsg(error)} (E: genuuid)`);
|
|
255
|
+
throw error;
|
|
256
|
+
}
|
|
257
|
+
const topicName = this.extractCommentTopicName(entry.name);
|
|
258
|
+
const targetRelPath = normalizedParent ? `${normalizedParent}/${topicName}` : topicName;
|
|
259
|
+
outComments.push({
|
|
260
|
+
commentRelPath: relPath,
|
|
261
|
+
commentFullPath: fullEntryPath,
|
|
262
|
+
targetRelPath,
|
|
263
|
+
targetType: entry.name.startsWith('.ib.') ? 'file' : 'folder',
|
|
264
|
+
topicName,
|
|
265
|
+
content,
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
let fileHash;
|
|
270
|
+
let size;
|
|
271
|
+
try {
|
|
272
|
+
const fileData = await fs.readFile(fullEntryPath);
|
|
273
|
+
fileHash = crypto.createHash('sha256').update(fileData).digest('hex');
|
|
274
|
+
size = fileData.length;
|
|
275
|
+
}
|
|
276
|
+
catch (error) {
|
|
277
|
+
console.error(`${lc} Failed to read file ${fullEntryPath}: ${extractErrorMsg(error)} (E: genuuid)`);
|
|
278
|
+
throw error;
|
|
279
|
+
}
|
|
280
|
+
outFiles.set(relPath, {
|
|
281
|
+
relPath,
|
|
282
|
+
fullPath: fullEntryPath,
|
|
283
|
+
isDirectory: false,
|
|
284
|
+
fileHash,
|
|
285
|
+
size,
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
isCommentMetadataFilename(filename) {
|
|
292
|
+
return filename.startsWith('.ib.') && filename.endsWith('.md') && filename.length > '.ib..md'.length;
|
|
293
|
+
}
|
|
294
|
+
extractCommentTopicName(filename) {
|
|
295
|
+
if (!this.isCommentMetadataFilename(filename)) {
|
|
296
|
+
return '';
|
|
297
|
+
}
|
|
298
|
+
return filename.slice(4, -3);
|
|
299
|
+
}
|
|
300
|
+
isFiltered(relPath, isDirectory, filterPatterns) {
|
|
301
|
+
return isPathFiltered({ relativePath: relPath, isDirectory, filterPatterns });
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Helper to fetch an IbGib strictly from backingSpace with fail-fast validation.
|
|
305
|
+
*/
|
|
306
|
+
async fetchIbGib(addr) {
|
|
307
|
+
const lc = `${this.lc}[${this.fetchIbGib.name}]`;
|
|
308
|
+
try {
|
|
309
|
+
if (!this.backingSpace) {
|
|
310
|
+
throw new Error(`${lc} backingSpace required to fetch IbGib at ${addr} (E: genuuid)`);
|
|
311
|
+
}
|
|
312
|
+
const resGet = await getFromSpace({ space: this.backingSpace, addrs: [addr] });
|
|
313
|
+
if (!resGet.success || !resGet.ibGibs || resGet.ibGibs.length === 0) {
|
|
314
|
+
const resIbGib = resGet.rawResultIbGib;
|
|
315
|
+
const addrsNotFound = resIbGib?.data?.addrsNotFound ?? 'unknown';
|
|
316
|
+
throw new Error(`${lc} couldn't find addr ${addr} in backingSpace. addrsNotFound: ${addrsNotFound} (E: genuuid)`);
|
|
317
|
+
}
|
|
318
|
+
return resGet.ibGibs[0];
|
|
319
|
+
}
|
|
320
|
+
catch (error) {
|
|
321
|
+
console.error(`${lc} ${extractErrorMsg(error)} (E: genuuid)`);
|
|
322
|
+
throw error;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
//# sourceMappingURL=node-workspace-projection-space-v1.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-workspace-projection-space-v1.mjs","sourceRoot":"","sources":["../../../../src/witness/space/node-workspace-projection-space/node-workspace-projection-space-v1.mts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ibgib/node-gib",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.24",
|
|
4
4
|
"description": "Node and server-specific ibGib code, i.e., things that don't run in the browser.",
|
|
5
5
|
"funding": {
|
|
6
6
|
"type": "individual",
|
|
@@ -24,10 +24,10 @@
|
|
|
24
24
|
"author": "William Raiford",
|
|
25
25
|
"license": "ISC",
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@ibgib/helper-gib": "^0.0.
|
|
28
|
-
"@ibgib/ts-gib": "^0.5.
|
|
29
|
-
"@ibgib/core-gib": "^0.1.
|
|
30
|
-
"@ibgib/encrypt-gib": "^0.3.
|
|
27
|
+
"@ibgib/helper-gib": "^0.0.38",
|
|
28
|
+
"@ibgib/ts-gib": "^0.5.35",
|
|
29
|
+
"@ibgib/core-gib": "^0.1.79",
|
|
30
|
+
"@ibgib/encrypt-gib": "^0.3.2"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@types/node": "^20.2.1"
|
|
@@ -18,7 +18,7 @@ export class EmailReceiverAws extends EmailReceiverBase {
|
|
|
18
18
|
try {
|
|
19
19
|
rawData = JSON.parse(rawData);
|
|
20
20
|
} catch {
|
|
21
|
-
throw new Error('Invalid JSON string in AWS inbound payload. (E:
|
|
21
|
+
throw new Error('Invalid JSON string in AWS inbound payload. (E: genuuid)');
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
|
|
@@ -27,7 +27,7 @@ export class EmailReceiverAws extends EmailReceiverBase {
|
|
|
27
27
|
try {
|
|
28
28
|
const certUrl = new URL(rawData.SigningCertURL);
|
|
29
29
|
if (certUrl.protocol !== 'https:' || !certUrl.hostname.endsWith('.amazonaws.com')) {
|
|
30
|
-
throw new Error(`Invalid SNS SigningCertURL host: ${rawData.SigningCertURL} (E:
|
|
30
|
+
throw new Error(`Invalid SNS SigningCertURL host: ${rawData.SigningCertURL} (E: genuuid)`);
|
|
31
31
|
}
|
|
32
32
|
} catch (err: any) {
|
|
33
33
|
if (err?.message?.includes('(E: ')) { throw err; }
|
|
@@ -45,7 +45,7 @@ export class EmailReceiverAws extends EmailReceiverBase {
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
if (!rawData || typeof rawData !== 'object') {
|
|
48
|
-
throw new Error('Invalid payload structure for AWS SES email parsing. (E:
|
|
48
|
+
throw new Error('Invalid payload structure for AWS SES email parsing. (E: genuuid)');
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
const mail = rawData.mail || {};
|
|
@@ -27,7 +27,7 @@ export class EmailSenderAws extends EmailSenderBase {
|
|
|
27
27
|
constructor(options: EmailSenderAwsOptions) {
|
|
28
28
|
super();
|
|
29
29
|
if (!options.accessKeyId || !options.secretAccessKey) {
|
|
30
|
-
throw new Error('EmailSenderAws requires accessKeyId and secretAccessKey. (E:
|
|
30
|
+
throw new Error('EmailSenderAws requires accessKeyId and secretAccessKey. (E: genuuid)');
|
|
31
31
|
}
|
|
32
32
|
this.accessKeyId = options.accessKeyId;
|
|
33
33
|
this.secretAccessKey = options.secretAccessKey;
|