@secrecy/lib 1.6.1 → 1.7.0-integration-hybrid-feats.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/{BaseClient-ca94a07f.d.ts → BaseClient-2af8a400.d.ts} +7 -7
- package/dist/BaseClient.cjs +1 -1
- package/dist/BaseClient.cjs.map +1 -1
- package/dist/BaseClient.d.ts +1 -1
- package/dist/BaseClient.js +1 -1
- package/dist/BaseClient.js.map +1 -1
- package/dist/cache.d.ts +1 -1
- package/dist/client/SecrecyAppClient.d.ts +1 -1
- package/dist/client/SecrecyCloudClient.cjs +1 -1
- package/dist/client/SecrecyCloudClient.cjs.map +1 -1
- package/dist/client/SecrecyCloudClient.d.ts +1 -1
- package/dist/client/SecrecyCloudClient.js +1 -1
- package/dist/client/SecrecyCloudClient.js.map +1 -1
- package/dist/client/SecrecyDbClient.d.ts +1 -1
- package/dist/client/SecrecyMailClient.d.ts +1 -1
- package/dist/client/SecrecyPayClient.d.ts +1 -1
- package/dist/client/SecrecyWalletClient.d.ts +1 -1
- package/dist/client/helpers.d.ts +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/error.d.ts +6 -3
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/zeus/const.cjs +1 -1
- package/dist/zeus/const.cjs.map +1 -1
- package/dist/zeus/const.js +1 -1
- package/dist/zeus/const.js.map +1 -1
- package/dist/zeus/index.cjs +3 -3
- package/dist/zeus/index.cjs.map +1 -1
- package/dist/zeus/index.d.ts +752 -86
- package/dist/zeus/index.js +3 -3
- package/dist/zeus/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DownloadProgress as DownloadProgress$1 } from 'ky';
|
|
2
2
|
import { Thunder, NodeType, Rights, MailType, MongoDbEnv, InfuraNetwork, UserRole, Lang, GraphQLTypes } from './zeus/index.js';
|
|
3
|
-
import { ErrorAccessDenied, ErrorNotExist,
|
|
3
|
+
import { ErrorAccessDenied, ErrorNotExist, ErrorBadRequest, ErrorNotFound, ErrorLimit, ErrorBasic } from './error.js';
|
|
4
4
|
import { Progress } from './crypto/file.js';
|
|
5
5
|
import { KeyPair } from './crypto/index.js';
|
|
6
6
|
import { FileMetadata } from './client/types/File.js';
|
|
@@ -23,7 +23,7 @@ declare class SecrecyCloudClient {
|
|
|
23
23
|
encryptProgress?: ProgressCallback;
|
|
24
24
|
uploadProgress?: ProgressCallback;
|
|
25
25
|
signal?: AbortSignal;
|
|
26
|
-
}): Promise<SuccessResponse<string> | ErrorAccessDenied |
|
|
26
|
+
}): Promise<SuccessResponse<string> | ErrorAccessDenied | ErrorBadRequest | ErrorNotFound | null>;
|
|
27
27
|
uploadFileInCloud({ file, name, nodeId, encryptProgress, uploadProgress, signal }: {
|
|
28
28
|
file: globalThis.File | Uint8Array;
|
|
29
29
|
name: string;
|
|
@@ -31,7 +31,7 @@ declare class SecrecyCloudClient {
|
|
|
31
31
|
encryptProgress?: ProgressCallback;
|
|
32
32
|
uploadProgress?: ProgressCallback;
|
|
33
33
|
signal?: AbortSignal;
|
|
34
|
-
}): Promise<SuccessResponse<NodeFull> | ErrorAccessDenied |
|
|
34
|
+
}): Promise<SuccessResponse<NodeFull> | ErrorAccessDenied | ErrorBadRequest | ErrorNotFound | ErrorNotExist | ErrorLimit | ErrorBasic | null>;
|
|
35
35
|
deletedNodes(): Promise<SuccessResponse<Node[]> | ErrorAccessDenied | null>;
|
|
36
36
|
sharedNodes(): Promise<SuccessResponse<Node[]> | ErrorAccessDenied | null>;
|
|
37
37
|
nodesSharedWithMe(type?: NodeType | null | undefined): Promise<SuccessResponse<Node[]> | ErrorAccessDenied | null>;
|
|
@@ -74,11 +74,11 @@ declare class SecrecyCloudClient {
|
|
|
74
74
|
onDownloadProgress?: (progress: DownloadProgress) => void;
|
|
75
75
|
progressDecrypt?: ProgressCallback;
|
|
76
76
|
signal?: AbortSignal;
|
|
77
|
-
}): Promise<SuccessResponse<Uint8Array> | ErrorAccessDenied | ErrorBasic | null>;
|
|
77
|
+
}): Promise<SuccessResponse<Uint8Array> | ErrorAccessDenied | ErrorBasic | ErrorBadRequest | ErrorNotFound | null>;
|
|
78
78
|
deleteFile({ fileId, nodeId }: {
|
|
79
79
|
fileId: string;
|
|
80
80
|
nodeId: string;
|
|
81
|
-
}): Promise<SuccessResponse<boolean> | ErrorAccessDenied |
|
|
81
|
+
}): Promise<SuccessResponse<boolean> | ErrorAccessDenied | ErrorNotFound | null>;
|
|
82
82
|
deleteNode({ nodeId }: {
|
|
83
83
|
nodeId: string;
|
|
84
84
|
}): Promise<SuccessResponse<boolean> | ErrorAccessDenied | null>;
|
|
@@ -92,7 +92,7 @@ declare class SecrecyCloudClient {
|
|
|
92
92
|
fileId: string;
|
|
93
93
|
name: string;
|
|
94
94
|
nodeId?: string;
|
|
95
|
-
}): Promise<SuccessResponse<NodeFull> | ErrorAccessDenied | ErrorBasic | ErrorLimit | ErrorNotFound |
|
|
95
|
+
}): Promise<SuccessResponse<NodeFull> | ErrorAccessDenied | ErrorBasic | ErrorLimit | ErrorNotFound | null>;
|
|
96
96
|
private perNode;
|
|
97
97
|
}
|
|
98
98
|
|
|
@@ -388,7 +388,7 @@ declare class BaseClient {
|
|
|
388
388
|
idOrHash: string;
|
|
389
389
|
network?: InfuraNetwork;
|
|
390
390
|
}): Promise<boolean>;
|
|
391
|
-
limits(): Promise<SuccessResponse<QueryLimits> |
|
|
391
|
+
limits(): Promise<SuccessResponse<QueryLimits> | ErrorNotExist | ErrorLimit | ErrorNotFound | null>;
|
|
392
392
|
reportUser(reportedUserId: string, customMessage?: string): Promise<SuccessResponse<SendReport> | ErrorAccessDenied | ErrorNotFound | null>;
|
|
393
393
|
getSponsorshipLink({ backUrl }: {
|
|
394
394
|
backUrl: string;
|
package/dist/BaseClient.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _libutils = require('@secrecy/lib-utils');var _cachejs = require('./cache.js');var _storagejs = require('./client/storage.js');var _indexjs = require('./zeus/index.js');var _ZeusThunderjs = require('./ZeusThunder.js');const g=(o,t)=>{const{user:e}=_indexjs.Selector.call(void 0, "Query")({user:[{userId:o},{"...on ErrorNotFound":{__typename:!0,message:!0,field:!0},"...on UserResponse":{__typename:!0,user:{id:!0,firstname:!0,lastname:!0,lang:!0,publicKey:t?!0:void 0,email:!0,phone:!0,role:!0,deletedAt:!0,lastLogin:!0}}}]});return e};async function l(o){const t=g(_nullishCoalesce(o.userId, () => (o.userEmail)),o.withPublicKey),{user:e}=await o.client("query",{scalars:{Json:{encode:r=>JSON.stringify(r),decode:r=>JSON.parse(r)},DateTime:{decode:r=>new Date(r),encode:r=>r.toISOString()},BigInt:{decode:r=>BigInt(r),encode:r=>r.toString()}}})({user:t});return e?e.__typename==="ErrorNotFound"?e:e.user?{__typename:"SuccessResponse",data:e.user}:null:null}class u{static __initStatic() {this.getBaseUrl=(t="prod",e=!0)=>{const r=process.env.NEXT_PUBLIC_SECRECY_API_URL;if(r)return r;switch(t){case"prod":return e?"https://secrecy.graphcdn.app":"https://api.secrecy.me/graphql";case"dev":default:return"https://api.dev.secrecy.me/graphql"}}}static __initStatic2() {this.getBaseClient=(t,e)=>_ZeusThunderjs.createThunder.call(void 0, u.getBaseUrl(t),e)}constructor(t,e){this.sessionId=t,this.thunder=u.getBaseClient(e,t)}async logout(t){if(!t){const e=_storagejs.getStorage.call(void 0, !1),r=_storagejs.getStorage.call(void 0, !0);e.jwt.clear(),e.userAppKeys.clear(),e.userAppSession.clear(),r.jwt.clear(),r.userAppKeys.clear(),r.userAppSession.clear(),_cachejs.usersCache.clear()}try{await this.thunder("mutation")({logout:[{sessionId:t},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on LogoutResponse":{__typename:!0,logout:!0}}]})}catch (e2){}}async me(t){return this.user(t||{withPublicKey:!0})}static async user(t,e){const r=await l({client:this.getBaseClient(t.env,e),userId:_nullishCoalesce(t.userId, () => (t.userEmail)),withPublicKey:t.withPublicKey});return r?(r.__typename==="ErrorNotFound"||r&&_cachejs.usersCache.set(r.data.id,r.data),r):null}async user(t){const e=await l({client:this.thunder,userId:_nullishCoalesce(t.userId, () => (t.userEmail)),withPublicKey:t.withPublicKey});return e?(e.__typename==="ErrorNotFound"||e&&_cachejs.usersCache.set(e.data.id,e.data),e):null}async updateProfile({firstname:t,lastname:e,lang:r}){const{updateProfile:n}=await this.thunder("mutation",{scalars:{Json:{encode:s=>JSON.stringify(s),decode:s=>JSON.parse(s)},DateTime:{decode:s=>new Date(s),encode:s=>s.toISOString()},BigInt:{decode:s=>BigInt(s),encode:s=>s.toString()}}})({updateProfile:[{firstname:t,lastname:e,lang:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on UpdateProfileResponse":{__typename:!0,updateProfile:{id:!0,firstname:!0,lastname:!0,lang:!0,email:!0,phone:!0,role:!0,deletedAt:!0,lastLogin:!0}}}]});return n?n.__typename==="ErrorAccessDenied"||n.__typename==="ErrorNotFound"?n:n.updateProfile?{__typename:"SuccessResponse",data:n.updateProfile}:null:null}static async isCryptoTransactionDone({env:t,idOrHash:e,network:r=_indexjs.InfuraNetwork.mainnet}){const{isCryptoTransactionDone:n}=await u.getBaseClient(t)("query")({isCryptoTransactionDone:[{idOrHash:e,network:r},{__typename:!0,"...on IsCryptoTransactionDoneResponse":{done:!0},"...on ErrorNotExist":{message:!0}}]});return n&&n.__typename==="IsCryptoTransactionDoneResponse"?n.done:!1}async limits(){const{limits:t}=await this.thunder("query",{scalars:{Json:{encode:e=>JSON.stringify(e),decode:e=>JSON.parse(e)},DateTime:{decode:e=>new Date(e),encode:e=>e.toISOString()},BigInt:{decode:e=>BigInt(e),encode:e=>e.toString()}}})({limits:{"...on
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _libutils = require('@secrecy/lib-utils');var _cachejs = require('./cache.js');var _storagejs = require('./client/storage.js');var _indexjs = require('./zeus/index.js');var _ZeusThunderjs = require('./ZeusThunder.js');const g=(o,t)=>{const{user:e}=_indexjs.Selector.call(void 0, "Query")({user:[{userId:o},{"...on ErrorNotFound":{__typename:!0,message:!0,field:!0},"...on UserResponse":{__typename:!0,user:{id:!0,firstname:!0,lastname:!0,lang:!0,publicKey:t?!0:void 0,email:!0,phone:!0,role:!0,deletedAt:!0,lastLogin:!0}}}]});return e};async function l(o){const t=g(_nullishCoalesce(o.userId, () => (o.userEmail)),o.withPublicKey),{user:e}=await o.client("query",{scalars:{Json:{encode:r=>JSON.stringify(r),decode:r=>JSON.parse(r)},DateTime:{decode:r=>new Date(r),encode:r=>r.toISOString()},BigInt:{decode:r=>BigInt(r),encode:r=>r.toString()}}})({user:t});return e?e.__typename==="ErrorNotFound"?e:e.user?{__typename:"SuccessResponse",data:e.user}:null:null}class u{static __initStatic() {this.getBaseUrl=(t="prod",e=!0)=>{const r=process.env.NEXT_PUBLIC_SECRECY_API_URL;if(r)return r;switch(t){case"prod":return e?"https://secrecy.graphcdn.app":"https://api.secrecy.me/graphql";case"dev":default:return"https://api.dev.secrecy.me/graphql"}}}static __initStatic2() {this.getBaseClient=(t,e)=>_ZeusThunderjs.createThunder.call(void 0, u.getBaseUrl(t),e)}constructor(t,e){this.sessionId=t,this.thunder=u.getBaseClient(e,t)}async logout(t){if(!t){const e=_storagejs.getStorage.call(void 0, !1),r=_storagejs.getStorage.call(void 0, !0);e.jwt.clear(),e.userAppKeys.clear(),e.userAppSession.clear(),r.jwt.clear(),r.userAppKeys.clear(),r.userAppSession.clear(),_cachejs.usersCache.clear()}try{await this.thunder("mutation")({logout:[{sessionId:t},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on LogoutResponse":{__typename:!0,logout:!0}}]})}catch (e2){}}async me(t){return this.user(t||{withPublicKey:!0})}static async user(t,e){const r=await l({client:this.getBaseClient(t.env,e),userId:_nullishCoalesce(t.userId, () => (t.userEmail)),withPublicKey:t.withPublicKey});return r?(r.__typename==="ErrorNotFound"||r&&_cachejs.usersCache.set(r.data.id,r.data),r):null}async user(t){const e=await l({client:this.thunder,userId:_nullishCoalesce(t.userId, () => (t.userEmail)),withPublicKey:t.withPublicKey});return e?(e.__typename==="ErrorNotFound"||e&&_cachejs.usersCache.set(e.data.id,e.data),e):null}async updateProfile({firstname:t,lastname:e,lang:r}){const{updateProfile:n}=await this.thunder("mutation",{scalars:{Json:{encode:s=>JSON.stringify(s),decode:s=>JSON.parse(s)},DateTime:{decode:s=>new Date(s),encode:s=>s.toISOString()},BigInt:{decode:s=>BigInt(s),encode:s=>s.toString()}}})({updateProfile:[{firstname:t,lastname:e,lang:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on UpdateProfileResponse":{__typename:!0,updateProfile:{id:!0,firstname:!0,lastname:!0,lang:!0,email:!0,phone:!0,role:!0,deletedAt:!0,lastLogin:!0}}}]});return n?n.__typename==="ErrorAccessDenied"||n.__typename==="ErrorNotFound"?n:n.updateProfile?{__typename:"SuccessResponse",data:n.updateProfile}:null:null}static async isCryptoTransactionDone({env:t,idOrHash:e,network:r=_indexjs.InfuraNetwork.mainnet}){const{isCryptoTransactionDone:n}=await u.getBaseClient(t)("query")({isCryptoTransactionDone:[{idOrHash:e,network:r},{__typename:!0,"...on IsCryptoTransactionDoneResponse":{done:!0},"...on ErrorNotExist":{message:!0}}]});return n&&n.__typename==="IsCryptoTransactionDoneResponse"?n.done:!1}async limits(){const{limits:t}=await this.thunder("query",{scalars:{Json:{encode:e=>JSON.stringify(e),decode:e=>JSON.parse(e)},DateTime:{decode:e=>new Date(e),encode:e=>e.toISOString()},BigInt:{decode:e=>BigInt(e),encode:e=>e.toString()}}})({limits:{"...on ErrorLimit":{__typename:!0,message:!0},"...on ErrorNotExist":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on QueryLimits":{__typename:!0,cloud:{size:!0,maxSize:!0,count:!0,maxCount:!0},mail:{received:{count:!0,maxCount:!0,fileCount:!0,maxFileCount:!0,fileSize:!0,maxFileSize:!0},sent:{count:!0,maxCount:!0,fileCount:!0,maxFileCount:!0,fileSize:!0,maxFileSize:!0}}}}});return t?t.__typename==="ErrorNotExist"||t.__typename==="ErrorLimit"||t.__typename==="ErrorNotFound"?t:{__typename:"SuccessResponse",data:t}:null}async reportUser(t,e){const{sendReport:r}=await this.thunder("mutation")({sendReport:[{reportedUserId:t,customMessage:e},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on SendReportResponse":{__typename:!0,sendReport:{id:!0,customMessage:!0,user:{id:!0,firstname:!0,lastname:!0,email:!0},reportedUser:{id:!0,firstname:!0,lastname:!0,email:!0}}}}]});return r?r.__typename==="ErrorAccessDenied"||r.__typename==="ErrorNotFound"?r:r.sendReport?{__typename:"SuccessResponse",data:r.sendReport}:null:null}async getSponsorshipLink({backUrl:t}){const e=await this.me({withPublicKey:!1});return!e||e.__typename==="ErrorNotFound"?null:_libutils.getLink.call(void 0, {app:"auth",path:`/sign-up?gf=${btoa(e.data.email)}&au=${btoa(t)}`})}static __initStatic3() {this.getPaymentRequest=async({env:t,paymentRequestId:e,secrecyIdSeller:r,secrecyId:n,appCode:s})=>{const{getPaymentRequestToPay:i}=await u.getBaseClient(t)("query")({getPaymentRequestToPay:[{paymentRequestId:e,secrecyIdSeller:r,secrecyId:n,appCode:s},{__typename:!0,"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,field:!0,message:!0},"...on GetPaymentRequestToPayResponse":{__typename:!0,paymentRequestToPay:{__typename:!0,accountId:!0,id:!0,amount:!0,amount_capturable:!0,amount_received:!0,application_id:!0,application_name:!0,application_fee_amount:!0,canceled_at:!0,cancellation_reason:!0,capture_method:!0,client_secret:!0,confirmation_method:!0,created:!0,currency:!0,customer:!0,description:!0,invoice:!0,livemode:!0,payment_method:!0,status:!0}}}]});return i?i.__typename==="ErrorAccessDenied"||i.__typename==="ErrorNotFound"?i:i.paymentRequestToPay?{__typename:"SuccessResponse",data:i.paymentRequestToPay}:{__typename:"ErrorNotFound",message:"No payment request found"}:{__typename:"ErrorNotFound",message:"No payment request found"}}}} u.__initStatic(); u.__initStatic2(); u.__initStatic3();exports.BaseClient = u;
|
|
2
2
|
//# sourceMappingURL=BaseClient.cjs.map
|
package/dist/BaseClient.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/BaseClient.ts"],"names":["getLink","usersCache","getStorage","InfuraNetwork","Selector","createThunder","getUserSelector","userId","withPublicKey","user","getUser","params","selector","userResponse","e","BaseClient","env","graphcdn","apiUrl","session","sessionId","local","firstname","lastname","lang","updateProfile","idOrHash","network","isCryptoTransactionDone","limits","reportedUserId","customMessage","sendReport","backUrl","me","paymentRequestId","secrecyIdSeller","secrecyId","appCode","getPaymentRequestToPay"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport type { DownloadProgress as DLProgress } from \"ky\";\nimport { getLink } from \"@secrecy/lib-utils\";\nimport { usersCache } from \"./cache.js\";\nimport type { SecrecyEnv } from \"./client/helpers.js\";\nimport { getStorage } from \"./client/storage.js\";\nimport type { GraphQLTypes, Lang, Thunder, UserRole } from \"./zeus/index.js\";\nimport { InfuraNetwork } from \"./zeus/index.js\";\nimport { Selector } from \"./zeus/index.js\";\nimport { createThunder } from \"./ZeusThunder.js\";\nimport type {\n ErrorAccessDenied,\n ErrorLimit,\n ErrorNotFound,\n ErrorNotExist\n} from \"./error.js\";\n\nexport type SuccessResponse<T> = {\n __typename: \"SuccessResponse\";\n data: T;\n};\n\nexport type DownloadProgress = DLProgress;\n\nexport type SendReport = {\n id: string;\n user: {\n id: string;\n firstname: string;\n lastname: string;\n email: string;\n };\n reportedUser: {\n id: string;\n firstname: string;\n lastname: string;\n email: string;\n };\n customMessage?: string | undefined;\n};\n\nexport type UserData<\n T extends Record<string, unknown> = Record<string, unknown>\n> = {\n isSuperuser: boolean;\n isSearchable: boolean;\n} & T;\n\nconst getUserSelector = (\n userId: string | null | undefined,\n withPublicKey: boolean | undefined\n) => {\n const { user } = Selector(\"Query\")({\n user: [\n { userId },\n {\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true,\n field: true\n },\n \"...on UserResponse\": {\n __typename: true,\n user: {\n id: true,\n firstname: true,\n lastname: true,\n lang: true,\n publicKey: withPublicKey ? true : undefined,\n email: true,\n phone: true,\n role: true,\n deletedAt: true,\n lastLogin: true\n }\n }\n }\n ]\n });\n return user;\n};\n\nexport type UserBase = {\n email: string;\n phone: string;\n lastname: string;\n role: UserRole;\n firstname: string;\n id: string;\n deletedAt?: Date;\n lastLogin: Date;\n lang: Lang;\n};\n\ntype WithPublicKey = { withPublicKey?: boolean };\n\nexport type User<T extends WithPublicKey = WithPublicKey> = T extends {\n withPublicKey: true;\n}\n ? UserBase & { publicKey: string }\n : UserBase;\n\ntype ClassGetUserParams = WithPublicKey & {\n userId?: string;\n userEmail?: string;\n};\ntype GetUserParams = ClassGetUserParams & {\n client: ReturnType<typeof Thunder>;\n};\n\ntype StaticGetUserParams = ClassGetUserParams & {\n env: SecrecyEnv;\n};\n\nasync function getUser<U extends WithPublicKey>(\n params: GetUserParams\n): Promise<SuccessResponse<User<U>> | ErrorNotFound | null> {\n const selector = getUserSelector(\n params.userId ?? params.userEmail,\n params.withPublicKey\n );\n const { user: userResponse } = await params.client(\"query\", {\n scalars: {\n Json: {\n encode: (e: unknown) => JSON.stringify(e),\n decode: (e: unknown) => JSON.parse(e as string)\n },\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n },\n BigInt: {\n decode: (e: unknown) => BigInt(e as string),\n encode: (e: unknown) => (e as bigint).toString()\n }\n }\n })({\n user: selector\n });\n\n if (!userResponse) {\n return null;\n }\n\n if (userResponse.__typename === \"ErrorNotFound\") {\n return userResponse;\n }\n\n if (!userResponse.user) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: userResponse.user\n };\n}\n\nexport type CloudLimits = {\n count: bigint;\n maxCount?: bigint | undefined;\n size: bigint;\n maxSize?: bigint | undefined;\n};\n\nexport type MailLimitsValues = {\n count: bigint;\n maxCount?: bigint | undefined;\n fileSize: bigint;\n maxFileSize?: bigint | undefined;\n fileCount: bigint;\n maxFileCount?: bigint | undefined;\n};\n\nexport type QueryLimits = {\n cloud: CloudLimits;\n mail: {\n sent: MailLimitsValues;\n received: MailLimitsValues;\n };\n};\n\nexport class BaseClient {\n public static readonly getBaseUrl = (\n env: SecrecyEnv = \"prod\",\n graphcdn = true\n ): string => {\n const apiUrl = process.env.NEXT_PUBLIC_SECRECY_API_URL;\n if (apiUrl) {\n return apiUrl;\n }\n\n switch (env) {\n case \"prod\":\n return graphcdn\n ? \"https://secrecy.graphcdn.app\"\n : \"https://api.secrecy.me/graphql\";\n case \"dev\":\n default:\n return \"https://api.dev.secrecy.me/graphql\";\n }\n };\n\n static readonly getBaseClient = (\n env: SecrecyEnv,\n session?: string | null | undefined\n ): ReturnType<typeof Thunder> =>\n createThunder(BaseClient.getBaseUrl(env), session);\n\n protected thunder: ReturnType<typeof Thunder>;\n\n public sessionId: string;\n\n constructor(session: string, env: SecrecyEnv) {\n this.sessionId = session;\n this.thunder = BaseClient.getBaseClient(env, session);\n }\n\n async logout(sessionId?: string | null | undefined): Promise<void> {\n if (!sessionId) {\n const local = getStorage(false);\n const session = getStorage(true);\n local.jwt.clear();\n local.userAppKeys.clear();\n local.userAppSession.clear();\n session.jwt.clear();\n session.userAppKeys.clear();\n session.userAppSession.clear();\n usersCache.clear();\n }\n try {\n await this.thunder(\"mutation\")({\n logout: [\n {\n sessionId: sessionId\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorBasic\": {\n __typename: true,\n message: true\n },\n \"...on LogoutResponse\": {\n __typename: true,\n logout: true\n }\n }\n ]\n });\n } catch {\n //\n }\n }\n\n async me<T extends WithPublicKey = WithPublicKey>(\n params?: T\n ): Promise<SuccessResponse<User<T>> | ErrorNotFound | null> {\n return this.user(params || ({ withPublicKey: true } as T));\n }\n\n static async user<T extends StaticGetUserParams>(\n params: T,\n sessionId?: string | null | undefined\n ): Promise<SuccessResponse<User<T>> | ErrorNotFound | null> {\n const user = await getUser<T>({\n client: this.getBaseClient(params.env, sessionId),\n userId: params.userId ?? params.userEmail,\n withPublicKey: params.withPublicKey\n });\n\n if (!user) {\n return null;\n }\n\n if (user.__typename === \"ErrorNotFound\") {\n return user;\n }\n\n if (user) {\n usersCache.set(user.data.id, user.data);\n }\n\n return user;\n }\n\n async user<T extends ClassGetUserParams>(\n params: T\n ): Promise<SuccessResponse<User<T>> | ErrorNotFound | null> {\n const user = await getUser<T>({\n client: this.thunder,\n userId: params.userId ?? params.userEmail,\n withPublicKey: params.withPublicKey\n });\n\n if (!user) {\n return null;\n }\n\n if (user.__typename === \"ErrorNotFound\") {\n return user;\n }\n\n if (user) {\n usersCache.set(user.data.id, user.data);\n }\n\n return user;\n }\n\n async updateProfile({\n firstname,\n lastname,\n lang\n }: {\n firstname: string | null;\n lastname: string | null;\n lang: Lang | null;\n }): Promise<\n SuccessResponse<User> | ErrorNotFound | ErrorAccessDenied | null\n > {\n const { updateProfile } = await this.thunder(\"mutation\", {\n scalars: {\n Json: {\n encode: (e: unknown) => JSON.stringify(e),\n decode: (e: unknown) => JSON.parse(e as string)\n },\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n },\n BigInt: {\n decode: (e: unknown) => BigInt(e as string),\n encode: (e: unknown) => (e as bigint).toString()\n }\n }\n })({\n updateProfile: [\n {\n firstname,\n lastname,\n lang\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true\n },\n \"...on UpdateProfileResponse\": {\n __typename: true,\n updateProfile: {\n id: true,\n firstname: true,\n lastname: true,\n lang: true,\n email: true,\n phone: true,\n role: true,\n deletedAt: true,\n lastLogin: true\n }\n }\n }\n ]\n });\n\n if (!updateProfile) {\n return null;\n }\n\n if (updateProfile.__typename === \"ErrorAccessDenied\") {\n return updateProfile;\n }\n\n if (updateProfile.__typename === \"ErrorNotFound\") {\n return updateProfile;\n }\n\n if (!updateProfile.updateProfile) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: updateProfile.updateProfile\n };\n }\n\n static async isCryptoTransactionDone({\n env,\n idOrHash,\n network = InfuraNetwork.mainnet\n }: {\n env: SecrecyEnv;\n idOrHash: string;\n network?: InfuraNetwork;\n }): Promise<boolean> {\n const { isCryptoTransactionDone } = await BaseClient.getBaseClient(env)(\n \"query\"\n )({\n isCryptoTransactionDone: [\n {\n idOrHash,\n network\n },\n {\n __typename: true,\n \"...on IsCryptoTransactionDoneResponse\": {\n done: true\n },\n \"...on ErrorNotExist\": {\n message: true\n }\n }\n ]\n });\n\n if (!isCryptoTransactionDone) {\n return false;\n }\n\n return isCryptoTransactionDone.__typename ===\n \"IsCryptoTransactionDoneResponse\"\n ? isCryptoTransactionDone.done\n : false;\n }\n\n async limits(): Promise<\n | SuccessResponse<QueryLimits>\n | ErrorAccessDenied\n | ErrorNotExist\n | ErrorLimit\n | ErrorNotFound\n | null\n > {\n const { limits } = await this.thunder(\"query\", {\n scalars: {\n Json: {\n encode: (e: unknown) => JSON.stringify(e),\n decode: (e: unknown) => JSON.parse(e as string)\n },\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n },\n BigInt: {\n decode: (e: unknown) => BigInt(e as string),\n encode: (e: unknown) => (e as bigint).toString()\n }\n }\n })({\n limits: {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorLimit\": {\n __typename: true,\n message: true\n },\n \"...on ErrorNotExist\": {\n __typename: true,\n message: true\n },\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true\n },\n \"...on QueryLimits\": {\n __typename: true,\n cloud: {\n size: true,\n maxSize: true,\n count: true,\n maxCount: true\n },\n mail: {\n received: {\n count: true,\n maxCount: true,\n fileCount: true,\n maxFileCount: true,\n fileSize: true,\n maxFileSize: true\n },\n sent: {\n count: true,\n maxCount: true,\n fileCount: true,\n maxFileCount: true,\n fileSize: true,\n maxFileSize: true\n }\n }\n }\n }\n });\n\n if (!limits) {\n return null;\n }\n\n if (limits.__typename === \"ErrorAccessDenied\") {\n return limits;\n }\n if (limits.__typename === \"ErrorNotExist\") {\n return limits;\n }\n if (limits.__typename === \"ErrorLimit\") {\n return limits;\n }\n if (limits.__typename === \"ErrorNotFound\") {\n return limits;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: limits\n };\n }\n\n async reportUser(\n reportedUserId: string,\n customMessage?: string\n ): Promise<\n SuccessResponse<SendReport> | ErrorAccessDenied | ErrorNotFound | null\n > {\n const { sendReport } = await this.thunder(\"mutation\")({\n sendReport: [\n {\n reportedUserId,\n customMessage\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true\n },\n \"...on SendReportResponse\": {\n __typename: true,\n sendReport: {\n id: true,\n customMessage: true,\n user: {\n id: true,\n firstname: true,\n lastname: true,\n email: true\n },\n reportedUser: {\n id: true,\n firstname: true,\n lastname: true,\n email: true\n }\n }\n }\n }\n ]\n });\n\n if (!sendReport) {\n return null;\n }\n\n if (sendReport.__typename === \"ErrorAccessDenied\") {\n return sendReport;\n }\n\n if (sendReport.__typename === \"ErrorNotFound\") {\n return sendReport;\n }\n\n if (!sendReport.sendReport) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: sendReport.sendReport\n };\n }\n\n async getSponsorshipLink({\n backUrl\n }: {\n backUrl: string;\n }): Promise<string | null> {\n const me = await this.me({ withPublicKey: false });\n\n if (!me) {\n return null;\n }\n\n if (me.__typename === \"ErrorNotFound\") {\n return null;\n }\n\n return getLink({\n app: \"auth\",\n path: `/sign-up?gf=${btoa(me.data.email)}&au=${btoa(backUrl)}`\n });\n }\n\n public static getPaymentRequest = async ({\n env,\n paymentRequestId,\n secrecyIdSeller,\n secrecyId,\n appCode\n }: {\n env: SecrecyEnv;\n paymentRequestId: string;\n secrecyIdSeller: string;\n secrecyId?: string;\n appCode?: string;\n }): Promise<\n | SuccessResponse<GraphQLTypes[\"GetPaymentRequestToPay\"]>\n | ErrorAccessDenied\n | ErrorNotFound\n > => {\n const { getPaymentRequestToPay } = await BaseClient.getBaseClient(env)(\n \"query\"\n )({\n getPaymentRequestToPay: [\n {\n paymentRequestId,\n secrecyIdSeller,\n secrecyId,\n appCode\n },\n {\n __typename: true,\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorNotFound\": {\n __typename: true,\n field: true,\n message: true\n },\n \"...on GetPaymentRequestToPayResponse\": {\n __typename: true,\n paymentRequestToPay: {\n __typename: true,\n accountId: true,\n id: true,\n amount: true,\n amount_capturable: true,\n amount_received: true,\n application_id: true,\n application_name: true,\n application_fee_amount: true,\n canceled_at: true,\n cancellation_reason: true,\n capture_method: true,\n client_secret: true,\n confirmation_method: true,\n created: true,\n currency: true,\n customer: true,\n description: true,\n invoice: true,\n livemode: true,\n payment_method: true,\n status: true\n }\n }\n }\n ]\n });\n\n if (!getPaymentRequestToPay) {\n return {\n __typename: \"ErrorNotFound\",\n message: \"No payment request found\"\n };\n }\n\n if (\n getPaymentRequestToPay.__typename === \"ErrorAccessDenied\" ||\n getPaymentRequestToPay.__typename === \"ErrorNotFound\"\n ) {\n return getPaymentRequestToPay;\n }\n\n if (!getPaymentRequestToPay.paymentRequestToPay) {\n return {\n __typename: \"ErrorNotFound\",\n message: \"No payment request found\"\n };\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: getPaymentRequestToPay.paymentRequestToPay\n };\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/BaseClient.ts"],"names":["getLink","usersCache","getStorage","InfuraNetwork","Selector","createThunder","getUserSelector","userId","withPublicKey","user","getUser","params","selector","userResponse","e","BaseClient","env","graphcdn","apiUrl","session","sessionId","local","firstname","lastname","lang","updateProfile","idOrHash","network","isCryptoTransactionDone","limits","reportedUserId","customMessage","sendReport","backUrl","me","paymentRequestId","secrecyIdSeller","secrecyId","appCode","getPaymentRequestToPay"],"mappings":"AAEA,OAAS,WAAAA,MAAe,qBACxB,OAAS,cAAAC,MAAkB,aAE3B,OAAS,cAAAC,MAAkB,sBAE3B,OAAS,iBAAAC,MAAqB,kBAC9B,OAAS,YAAAC,MAAgB,kBACzB,OAAS,iBAAAC,MAAqB,mBAuC9B,MAAMC,EAAkB,CACtBC,EACAC,IACG,CACH,KAAM,CAAE,KAAAC,CAAK,EAAIL,EAAS,OAAO,EAAE,CACjC,KAAM,CACJ,CAAE,OAAAG,CAAO,EACT,CACE,sBAAuB,CACrB,WAAY,GACZ,QAAS,GACT,MAAO,EACT,EACA,qBAAsB,CACpB,WAAY,GACZ,KAAM,CACJ,GAAI,GACJ,UAAW,GACX,SAAU,GACV,KAAM,GACN,UAAWC,EAAgB,GAAO,OAClC,MAAO,GACP,MAAO,GACP,KAAM,GACN,UAAW,GACX,UAAW,EACb,CACF,CACF,CACF,CACF,CAAC,EACD,OAAOC,CACT,EAkCA,eAAeC,EACbC,EAC0D,CAC1D,MAAMC,EAAWN,EACfK,EAAO,QAAUA,EAAO,UACxBA,EAAO,aACT,EACM,CAAE,KAAME,CAAa,EAAI,MAAMF,EAAO,OAAO,QAAS,CAC1D,QAAS,CACP,KAAM,CACJ,OAASG,GAAe,KAAK,UAAUA,CAAC,EACxC,OAASA,GAAe,KAAK,MAAMA,CAAW,CAChD,EACA,SAAU,CACR,OAASA,GAAe,IAAI,KAAKA,CAAW,EAC5C,OAASA,GAAgBA,EAAW,YAAY,CAClD,EACA,OAAQ,CACN,OAASA,GAAe,OAAOA,CAAW,EAC1C,OAASA,GAAgBA,EAAa,SAAS,CACjD,CACF,CACF,CAAC,EAAE,CACD,KAAMF,CACR,CAAC,EAED,OAAKC,EAIDA,EAAa,aAAe,gBACvBA,EAGJA,EAAa,KAIX,CACL,WAAY,kBACZ,KAAMA,EAAa,IACrB,EANS,KARA,IAeX,CA0BO,MAAME,CAAW,CACtB,OAAuB,WAAa,CAClCC,EAAkB,OAClBC,EAAW,KACA,CACX,MAAMC,EAAS,QAAQ,IAAI,4BAC3B,GAAIA,EACF,OAAOA,EAGT,OAAQF,EAAK,CACX,IAAK,OACH,OAAOC,EACH,+BACA,iCACN,IAAK,MACL,QACE,MAAO,oCACX,CACF,EAEA,OAAgB,cAAgB,CAC9BD,EACAG,IAEAd,EAAcU,EAAW,WAAWC,CAAG,EAAGG,CAAO,EAEzC,QAEH,UAEP,YAAYA,EAAiBH,EAAiB,CAC5C,KAAK,UAAYG,EACjB,KAAK,QAAUJ,EAAW,cAAcC,EAAKG,CAAO,CACtD,CAEA,MAAM,OAAOC,EAAsD,CACjE,GAAI,CAACA,EAAW,CACd,MAAMC,EAAQnB,EAAW,EAAK,EACxBiB,EAAUjB,EAAW,EAAI,EAC/BmB,EAAM,IAAI,MAAM,EAChBA,EAAM,YAAY,MAAM,EACxBA,EAAM,eAAe,MAAM,EAC3BF,EAAQ,IAAI,MAAM,EAClBA,EAAQ,YAAY,MAAM,EAC1BA,EAAQ,eAAe,MAAM,EAC7BlB,EAAW,MAAM,CACnB,CACA,GAAI,CACF,MAAM,KAAK,QAAQ,UAAU,EAAE,CAC7B,OAAQ,CACN,CACE,UAAWmB,CACb,EACA,CACE,0BAA2B,CACzB,WAAY,GACZ,QAAS,EACX,EACA,mBAAoB,CAClB,WAAY,GACZ,QAAS,EACX,EACA,uBAAwB,CACtB,WAAY,GACZ,OAAQ,EACV,CACF,CACF,CACF,CAAC,CACH,MAAE,CAEF,CACF,CAEA,MAAM,GACJT,EAC0D,CAC1D,OAAO,KAAK,KAAKA,GAAW,CAAE,cAAe,EAAK,CAAO,CAC3D,CAEA,aAAa,KACXA,EACAS,EAC0D,CAC1D,MAAMX,EAAO,MAAMC,EAAW,CAC5B,OAAQ,KAAK,cAAcC,EAAO,IAAKS,CAAS,EAChD,OAAQT,EAAO,QAAUA,EAAO,UAChC,cAAeA,EAAO,aACxB,CAAC,EAED,OAAKF,GAIDA,EAAK,aAAe,iBAIpBA,GACFR,EAAW,IAAIQ,EAAK,KAAK,GAAIA,EAAK,IAAI,EAGjCA,GAXE,IAYX,CAEA,MAAM,KACJE,EAC0D,CAC1D,MAAMF,EAAO,MAAMC,EAAW,CAC5B,OAAQ,KAAK,QACb,OAAQC,EAAO,QAAUA,EAAO,UAChC,cAAeA,EAAO,aACxB,CAAC,EAED,OAAKF,GAIDA,EAAK,aAAe,iBAIpBA,GACFR,EAAW,IAAIQ,EAAK,KAAK,GAAIA,EAAK,IAAI,EAGjCA,GAXE,IAYX,CAEA,MAAM,cAAc,CAClB,UAAAa,EACA,SAAAC,EACA,KAAAC,CACF,EAME,CACA,KAAM,CAAE,cAAAC,CAAc,EAAI,MAAM,KAAK,QAAQ,WAAY,CACvD,QAAS,CACP,KAAM,CACJ,OAASX,GAAe,KAAK,UAAUA,CAAC,EACxC,OAASA,GAAe,KAAK,MAAMA,CAAW,CAChD,EACA,SAAU,CACR,OAASA,GAAe,IAAI,KAAKA,CAAW,EAC5C,OAASA,GAAgBA,EAAW,YAAY,CAClD,EACA,OAAQ,CACN,OAASA,GAAe,OAAOA,CAAW,EAC1C,OAASA,GAAgBA,EAAa,SAAS,CACjD,CACF,CACF,CAAC,EAAE,CACD,cAAe,CACb,CACE,UAAAQ,EACA,SAAAC,EACA,KAAAC,CACF,EACA,CACE,0BAA2B,CACzB,WAAY,GACZ,QAAS,EACX,EACA,sBAAuB,CACrB,WAAY,GACZ,QAAS,EACX,EACA,8BAA+B,CAC7B,WAAY,GACZ,cAAe,CACb,GAAI,GACJ,UAAW,GACX,SAAU,GACV,KAAM,GACN,MAAO,GACP,MAAO,GACP,KAAM,GACN,UAAW,GACX,UAAW,EACb,CACF,CACF,CACF,CACF,CAAC,EAED,OAAKC,EAIDA,EAAc,aAAe,qBAI7BA,EAAc,aAAe,gBACxBA,EAGJA,EAAc,cAIZ,CACL,WAAY,kBACZ,KAAMA,EAAc,aACtB,EANS,KAZA,IAmBX,CAEA,aAAa,wBAAwB,CACnC,IAAAT,EACA,SAAAU,EACA,QAAAC,EAAUxB,EAAc,OAC1B,EAIqB,CACnB,KAAM,CAAE,wBAAAyB,CAAwB,EAAI,MAAMb,EAAW,cAAcC,CAAG,EACpE,OACF,EAAE,CACA,wBAAyB,CACvB,CACE,SAAAU,EACA,QAAAC,CACF,EACA,CACE,WAAY,GACZ,wCAAyC,CACvC,KAAM,EACR,EACA,sBAAuB,CACrB,QAAS,EACX,CACF,CACF,CACF,CAAC,EAED,OAAKC,GAIEA,EAAwB,aAC7B,kCACEA,EAAwB,KALnB,EAOX,CAEA,MAAM,QAMJ,CACA,KAAM,CAAE,OAAAC,CAAO,EAAI,MAAM,KAAK,QAAQ,QAAS,CAC7C,QAAS,CACP,KAAM,CACJ,OAAS,GAAe,KAAK,UAAU,CAAC,EACxC,OAAS,GAAe,KAAK,MAAM,CAAW,CAChD,EACA,SAAU,CACR,OAAS,GAAe,IAAI,KAAK,CAAW,EAC5C,OAAS,GAAgB,EAAW,YAAY,CAClD,EACA,OAAQ,CACN,OAAS,GAAe,OAAO,CAAW,EAC1C,OAAS,GAAgB,EAAa,SAAS,CACjD,CACF,CACF,CAAC,EAAE,CACD,OAAQ,CACN,mBAAoB,CAClB,WAAY,GACZ,QAAS,EACX,EACA,sBAAuB,CACrB,WAAY,GACZ,QAAS,EACX,EACA,sBAAuB,CACrB,WAAY,GACZ,QAAS,EACX,EACA,oBAAqB,CACnB,WAAY,GACZ,MAAO,CACL,KAAM,GACN,QAAS,GACT,MAAO,GACP,SAAU,EACZ,EACA,KAAM,CACJ,SAAU,CACR,MAAO,GACP,SAAU,GACV,UAAW,GACX,aAAc,GACd,SAAU,GACV,YAAa,EACf,EACA,KAAM,CACJ,MAAO,GACP,SAAU,GACV,UAAW,GACX,aAAc,GACd,SAAU,GACV,YAAa,EACf,CACF,CACF,CACF,CACF,CAAC,EAED,OAAKA,EAIDA,EAAO,aAAe,iBAGtBA,EAAO,aAAe,cAGtBA,EAAO,aAAe,gBACjBA,EAGF,CACL,WAAY,kBACZ,KAAMA,CACR,EAhBS,IAiBX,CAEA,MAAM,WACJC,EACAC,EAGA,CACA,KAAM,CAAE,WAAAC,CAAW,EAAI,MAAM,KAAK,QAAQ,UAAU,EAAE,CACpD,WAAY,CACV,CACE,eAAAF,EACA,cAAAC,CACF,EACA,CACE,0BAA2B,CACzB,WAAY,GACZ,QAAS,EACX,EACA,sBAAuB,CACrB,WAAY,GACZ,QAAS,EACX,EACA,2BAA4B,CAC1B,WAAY,GACZ,WAAY,CACV,GAAI,GACJ,cAAe,GACf,KAAM,CACJ,GAAI,GACJ,UAAW,GACX,SAAU,GACV,MAAO,EACT,EACA,aAAc,CACZ,GAAI,GACJ,UAAW,GACX,SAAU,GACV,MAAO,EACT,CACF,CACF,CACF,CACF,CACF,CAAC,EAED,OAAKC,EAIDA,EAAW,aAAe,qBAI1BA,EAAW,aAAe,gBACrBA,EAGJA,EAAW,WAIT,CACL,WAAY,kBACZ,KAAMA,EAAW,UACnB,EANS,KAZA,IAmBX,CAEA,MAAM,mBAAmB,CACvB,QAAAC,CACF,EAE2B,CACzB,MAAMC,EAAK,MAAM,KAAK,GAAG,CAAE,cAAe,EAAM,CAAC,EAMjD,MAJI,CAACA,GAIDA,EAAG,aAAe,gBACb,KAGFlC,EAAQ,CACb,IAAK,OACL,KAAM,eAAe,KAAKkC,EAAG,KAAK,KAAK,QAAQ,KAAKD,CAAO,GAC7D,CAAC,CACH,CAEA,OAAc,kBAAoB,MAAO,CACvC,IAAAjB,EACA,iBAAAmB,EACA,gBAAAC,EACA,UAAAC,EACA,QAAAC,CACF,IAUK,CACH,KAAM,CAAE,uBAAAC,CAAuB,EAAI,MAAMxB,EAAW,cAAcC,CAAG,EACnE,OACF,EAAE,CACA,uBAAwB,CACtB,CACE,iBAAAmB,EACA,gBAAAC,EACA,UAAAC,EACA,QAAAC,CACF,EACA,CACE,WAAY,GACZ,0BAA2B,CACzB,WAAY,GACZ,QAAS,EACX,EACA,sBAAuB,CACrB,WAAY,GACZ,MAAO,GACP,QAAS,EACX,EACA,uCAAwC,CACtC,WAAY,GACZ,oBAAqB,CACnB,WAAY,GACZ,UAAW,GACX,GAAI,GACJ,OAAQ,GACR,kBAAmB,GACnB,gBAAiB,GACjB,eAAgB,GAChB,iBAAkB,GAClB,uBAAwB,GACxB,YAAa,GACb,oBAAqB,GACrB,eAAgB,GAChB,cAAe,GACf,oBAAqB,GACrB,QAAS,GACT,SAAU,GACV,SAAU,GACV,YAAa,GACb,QAAS,GACT,SAAU,GACV,eAAgB,GAChB,OAAQ,EACV,CACF,CACF,CACF,CACF,CAAC,EAED,OAAKC,EAQHA,EAAuB,aAAe,qBACtCA,EAAuB,aAAe,gBAE/BA,EAGJA,EAAuB,oBAOrB,CACL,WAAY,kBACZ,KAAMA,EAAuB,mBAC/B,EATS,CACL,WAAY,gBACZ,QAAS,0BACX,EAjBO,CACL,WAAY,gBACZ,QAAS,0BACX,CAqBJ,CACF","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport type { DownloadProgress as DLProgress } from \"ky\";\nimport { getLink } from \"@secrecy/lib-utils\";\nimport { usersCache } from \"./cache.js\";\nimport type { SecrecyEnv } from \"./client/helpers.js\";\nimport { getStorage } from \"./client/storage.js\";\nimport type { GraphQLTypes, Lang, Thunder, UserRole } from \"./zeus/index.js\";\nimport { InfuraNetwork } from \"./zeus/index.js\";\nimport { Selector } from \"./zeus/index.js\";\nimport { createThunder } from \"./ZeusThunder.js\";\nimport type {\n ErrorAccessDenied,\n ErrorLimit,\n ErrorNotFound,\n ErrorNotExist\n} from \"./error.js\";\n\nexport type SuccessResponse<T> = {\n __typename: \"SuccessResponse\";\n data: T;\n};\n\nexport type DownloadProgress = DLProgress;\n\nexport type SendReport = {\n id: string;\n user: {\n id: string;\n firstname: string;\n lastname: string;\n email: string;\n };\n reportedUser: {\n id: string;\n firstname: string;\n lastname: string;\n email: string;\n };\n customMessage?: string | undefined;\n};\n\nexport type UserData<\n T extends Record<string, unknown> = Record<string, unknown>\n> = {\n isSuperuser: boolean;\n isSearchable: boolean;\n} & T;\n\nconst getUserSelector = (\n userId: string | null | undefined,\n withPublicKey: boolean | undefined\n) => {\n const { user } = Selector(\"Query\")({\n user: [\n { userId },\n {\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true,\n field: true\n },\n \"...on UserResponse\": {\n __typename: true,\n user: {\n id: true,\n firstname: true,\n lastname: true,\n lang: true,\n publicKey: withPublicKey ? true : undefined,\n email: true,\n phone: true,\n role: true,\n deletedAt: true,\n lastLogin: true\n }\n }\n }\n ]\n });\n return user;\n};\n\nexport type UserBase = {\n email: string;\n phone: string;\n lastname: string;\n role: UserRole;\n firstname: string;\n id: string;\n deletedAt?: Date;\n lastLogin: Date;\n lang: Lang;\n};\n\ntype WithPublicKey = { withPublicKey?: boolean };\n\nexport type User<T extends WithPublicKey = WithPublicKey> = T extends {\n withPublicKey: true;\n}\n ? UserBase & { publicKey: string }\n : UserBase;\n\ntype ClassGetUserParams = WithPublicKey & {\n userId?: string;\n userEmail?: string;\n};\ntype GetUserParams = ClassGetUserParams & {\n client: ReturnType<typeof Thunder>;\n};\n\ntype StaticGetUserParams = ClassGetUserParams & {\n env: SecrecyEnv;\n};\n\nasync function getUser<U extends WithPublicKey>(\n params: GetUserParams\n): Promise<SuccessResponse<User<U>> | ErrorNotFound | null> {\n const selector = getUserSelector(\n params.userId ?? params.userEmail,\n params.withPublicKey\n );\n const { user: userResponse } = await params.client(\"query\", {\n scalars: {\n Json: {\n encode: (e: unknown) => JSON.stringify(e),\n decode: (e: unknown) => JSON.parse(e as string)\n },\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n },\n BigInt: {\n decode: (e: unknown) => BigInt(e as string),\n encode: (e: unknown) => (e as bigint).toString()\n }\n }\n })({\n user: selector\n });\n\n if (!userResponse) {\n return null;\n }\n\n if (userResponse.__typename === \"ErrorNotFound\") {\n return userResponse;\n }\n\n if (!userResponse.user) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: userResponse.user\n };\n}\n\nexport type CloudLimits = {\n count: bigint;\n maxCount?: bigint | undefined;\n size: bigint;\n maxSize?: bigint | undefined;\n};\n\nexport type MailLimitsValues = {\n count: bigint;\n maxCount?: bigint | undefined;\n fileSize: bigint;\n maxFileSize?: bigint | undefined;\n fileCount: bigint;\n maxFileCount?: bigint | undefined;\n};\n\nexport type QueryLimits = {\n cloud: CloudLimits;\n mail: {\n sent: MailLimitsValues;\n received: MailLimitsValues;\n };\n};\n\nexport class BaseClient {\n public static readonly getBaseUrl = (\n env: SecrecyEnv = \"prod\",\n graphcdn = true\n ): string => {\n const apiUrl = process.env.NEXT_PUBLIC_SECRECY_API_URL;\n if (apiUrl) {\n return apiUrl;\n }\n\n switch (env) {\n case \"prod\":\n return graphcdn\n ? \"https://secrecy.graphcdn.app\"\n : \"https://api.secrecy.me/graphql\";\n case \"dev\":\n default:\n return \"https://api.dev.secrecy.me/graphql\";\n }\n };\n\n static readonly getBaseClient = (\n env: SecrecyEnv,\n session?: string | null | undefined\n ): ReturnType<typeof Thunder> =>\n createThunder(BaseClient.getBaseUrl(env), session);\n\n protected thunder: ReturnType<typeof Thunder>;\n\n public sessionId: string;\n\n constructor(session: string, env: SecrecyEnv) {\n this.sessionId = session;\n this.thunder = BaseClient.getBaseClient(env, session);\n }\n\n async logout(sessionId?: string | null | undefined): Promise<void> {\n if (!sessionId) {\n const local = getStorage(false);\n const session = getStorage(true);\n local.jwt.clear();\n local.userAppKeys.clear();\n local.userAppSession.clear();\n session.jwt.clear();\n session.userAppKeys.clear();\n session.userAppSession.clear();\n usersCache.clear();\n }\n try {\n await this.thunder(\"mutation\")({\n logout: [\n {\n sessionId: sessionId\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorBasic\": {\n __typename: true,\n message: true\n },\n \"...on LogoutResponse\": {\n __typename: true,\n logout: true\n }\n }\n ]\n });\n } catch {\n //\n }\n }\n\n async me<T extends WithPublicKey = WithPublicKey>(\n params?: T\n ): Promise<SuccessResponse<User<T>> | ErrorNotFound | null> {\n return this.user(params || ({ withPublicKey: true } as T));\n }\n\n static async user<T extends StaticGetUserParams>(\n params: T,\n sessionId?: string | null | undefined\n ): Promise<SuccessResponse<User<T>> | ErrorNotFound | null> {\n const user = await getUser<T>({\n client: this.getBaseClient(params.env, sessionId),\n userId: params.userId ?? params.userEmail,\n withPublicKey: params.withPublicKey\n });\n\n if (!user) {\n return null;\n }\n\n if (user.__typename === \"ErrorNotFound\") {\n return user;\n }\n\n if (user) {\n usersCache.set(user.data.id, user.data);\n }\n\n return user;\n }\n\n async user<T extends ClassGetUserParams>(\n params: T\n ): Promise<SuccessResponse<User<T>> | ErrorNotFound | null> {\n const user = await getUser<T>({\n client: this.thunder,\n userId: params.userId ?? params.userEmail,\n withPublicKey: params.withPublicKey\n });\n\n if (!user) {\n return null;\n }\n\n if (user.__typename === \"ErrorNotFound\") {\n return user;\n }\n\n if (user) {\n usersCache.set(user.data.id, user.data);\n }\n\n return user;\n }\n\n async updateProfile({\n firstname,\n lastname,\n lang\n }: {\n firstname: string | null;\n lastname: string | null;\n lang: Lang | null;\n }): Promise<\n SuccessResponse<User> | ErrorNotFound | ErrorAccessDenied | null\n > {\n const { updateProfile } = await this.thunder(\"mutation\", {\n scalars: {\n Json: {\n encode: (e: unknown) => JSON.stringify(e),\n decode: (e: unknown) => JSON.parse(e as string)\n },\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n },\n BigInt: {\n decode: (e: unknown) => BigInt(e as string),\n encode: (e: unknown) => (e as bigint).toString()\n }\n }\n })({\n updateProfile: [\n {\n firstname,\n lastname,\n lang\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true\n },\n \"...on UpdateProfileResponse\": {\n __typename: true,\n updateProfile: {\n id: true,\n firstname: true,\n lastname: true,\n lang: true,\n email: true,\n phone: true,\n role: true,\n deletedAt: true,\n lastLogin: true\n }\n }\n }\n ]\n });\n\n if (!updateProfile) {\n return null;\n }\n\n if (updateProfile.__typename === \"ErrorAccessDenied\") {\n return updateProfile;\n }\n\n if (updateProfile.__typename === \"ErrorNotFound\") {\n return updateProfile;\n }\n\n if (!updateProfile.updateProfile) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: updateProfile.updateProfile\n };\n }\n\n static async isCryptoTransactionDone({\n env,\n idOrHash,\n network = InfuraNetwork.mainnet\n }: {\n env: SecrecyEnv;\n idOrHash: string;\n network?: InfuraNetwork;\n }): Promise<boolean> {\n const { isCryptoTransactionDone } = await BaseClient.getBaseClient(env)(\n \"query\"\n )({\n isCryptoTransactionDone: [\n {\n idOrHash,\n network\n },\n {\n __typename: true,\n \"...on IsCryptoTransactionDoneResponse\": {\n done: true\n },\n \"...on ErrorNotExist\": {\n message: true\n }\n }\n ]\n });\n\n if (!isCryptoTransactionDone) {\n return false;\n }\n\n return isCryptoTransactionDone.__typename ===\n \"IsCryptoTransactionDoneResponse\"\n ? isCryptoTransactionDone.done\n : false;\n }\n\n async limits(): Promise<\n | SuccessResponse<QueryLimits>\n | ErrorNotExist\n | ErrorLimit\n | ErrorNotFound\n | null\n > {\n const { limits } = await this.thunder(\"query\", {\n scalars: {\n Json: {\n encode: (e: unknown) => JSON.stringify(e),\n decode: (e: unknown) => JSON.parse(e as string)\n },\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n },\n BigInt: {\n decode: (e: unknown) => BigInt(e as string),\n encode: (e: unknown) => (e as bigint).toString()\n }\n }\n })({\n limits: {\n \"...on ErrorLimit\": {\n __typename: true,\n message: true\n },\n \"...on ErrorNotExist\": {\n __typename: true,\n message: true\n },\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true\n },\n \"...on QueryLimits\": {\n __typename: true,\n cloud: {\n size: true,\n maxSize: true,\n count: true,\n maxCount: true\n },\n mail: {\n received: {\n count: true,\n maxCount: true,\n fileCount: true,\n maxFileCount: true,\n fileSize: true,\n maxFileSize: true\n },\n sent: {\n count: true,\n maxCount: true,\n fileCount: true,\n maxFileCount: true,\n fileSize: true,\n maxFileSize: true\n }\n }\n }\n }\n });\n\n if (!limits) {\n return null;\n }\n\n if (limits.__typename === \"ErrorNotExist\") {\n return limits;\n }\n if (limits.__typename === \"ErrorLimit\") {\n return limits;\n }\n if (limits.__typename === \"ErrorNotFound\") {\n return limits;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: limits\n };\n }\n\n async reportUser(\n reportedUserId: string,\n customMessage?: string\n ): Promise<\n SuccessResponse<SendReport> | ErrorAccessDenied | ErrorNotFound | null\n > {\n const { sendReport } = await this.thunder(\"mutation\")({\n sendReport: [\n {\n reportedUserId,\n customMessage\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true\n },\n \"...on SendReportResponse\": {\n __typename: true,\n sendReport: {\n id: true,\n customMessage: true,\n user: {\n id: true,\n firstname: true,\n lastname: true,\n email: true\n },\n reportedUser: {\n id: true,\n firstname: true,\n lastname: true,\n email: true\n }\n }\n }\n }\n ]\n });\n\n if (!sendReport) {\n return null;\n }\n\n if (sendReport.__typename === \"ErrorAccessDenied\") {\n return sendReport;\n }\n\n if (sendReport.__typename === \"ErrorNotFound\") {\n return sendReport;\n }\n\n if (!sendReport.sendReport) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: sendReport.sendReport\n };\n }\n\n async getSponsorshipLink({\n backUrl\n }: {\n backUrl: string;\n }): Promise<string | null> {\n const me = await this.me({ withPublicKey: false });\n\n if (!me) {\n return null;\n }\n\n if (me.__typename === \"ErrorNotFound\") {\n return null;\n }\n\n return getLink({\n app: \"auth\",\n path: `/sign-up?gf=${btoa(me.data.email)}&au=${btoa(backUrl)}`\n });\n }\n\n public static getPaymentRequest = async ({\n env,\n paymentRequestId,\n secrecyIdSeller,\n secrecyId,\n appCode\n }: {\n env: SecrecyEnv;\n paymentRequestId: string;\n secrecyIdSeller: string;\n secrecyId?: string;\n appCode?: string;\n }): Promise<\n | SuccessResponse<GraphQLTypes[\"GetPaymentRequestToPay\"]>\n | ErrorAccessDenied\n | ErrorNotFound\n > => {\n const { getPaymentRequestToPay } = await BaseClient.getBaseClient(env)(\n \"query\"\n )({\n getPaymentRequestToPay: [\n {\n paymentRequestId,\n secrecyIdSeller,\n secrecyId,\n appCode\n },\n {\n __typename: true,\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorNotFound\": {\n __typename: true,\n field: true,\n message: true\n },\n \"...on GetPaymentRequestToPayResponse\": {\n __typename: true,\n paymentRequestToPay: {\n __typename: true,\n accountId: true,\n id: true,\n amount: true,\n amount_capturable: true,\n amount_received: true,\n application_id: true,\n application_name: true,\n application_fee_amount: true,\n canceled_at: true,\n cancellation_reason: true,\n capture_method: true,\n client_secret: true,\n confirmation_method: true,\n created: true,\n currency: true,\n customer: true,\n description: true,\n invoice: true,\n livemode: true,\n payment_method: true,\n status: true\n }\n }\n }\n ]\n });\n\n if (!getPaymentRequestToPay) {\n return {\n __typename: \"ErrorNotFound\",\n message: \"No payment request found\"\n };\n }\n\n if (\n getPaymentRequestToPay.__typename === \"ErrorAccessDenied\" ||\n getPaymentRequestToPay.__typename === \"ErrorNotFound\"\n ) {\n return getPaymentRequestToPay;\n }\n\n if (!getPaymentRequestToPay.paymentRequestToPay) {\n return {\n __typename: \"ErrorNotFound\",\n message: \"No payment request found\"\n };\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: getPaymentRequestToPay.paymentRequestToPay\n };\n };\n}\n"]}
|
package/dist/BaseClient.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import 'ky';
|
|
2
|
-
export { B as BaseClient, C as CloudLimits, D as DownloadProgress, M as MailLimitsValues, Q as QueryLimits, S as SendReport, c as SuccessResponse, a as User, U as UserBase, b as UserData } from './BaseClient-
|
|
2
|
+
export { B as BaseClient, C as CloudLimits, D as DownloadProgress, M as MailLimitsValues, Q as QueryLimits, S as SendReport, c as SuccessResponse, a as User, U as UserBase, b as UserData } from './BaseClient-2af8a400.js';
|
|
3
3
|
import './zeus/index.js';
|
|
4
4
|
import './error.js';
|
|
5
5
|
import './crypto/file.js';
|
package/dist/BaseClient.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{getLink as d}from"@secrecy/lib-utils";import{usersCache as a}from"./cache.js";import{getStorage as c}from"./client/storage.js";import{InfuraNetwork as p}from"./zeus/index.js";import{Selector as m}from"./zeus/index.js";import{createThunder as y}from"./ZeusThunder.js";const g=(o,t)=>{const{user:e}=m("Query")({user:[{userId:o},{"...on ErrorNotFound":{__typename:!0,message:!0,field:!0},"...on UserResponse":{__typename:!0,user:{id:!0,firstname:!0,lastname:!0,lang:!0,publicKey:t?!0:void 0,email:!0,phone:!0,role:!0,deletedAt:!0,lastLogin:!0}}}]});return e};async function l(o){const t=g(o.userId??o.userEmail,o.withPublicKey),{user:e}=await o.client("query",{scalars:{Json:{encode:r=>JSON.stringify(r),decode:r=>JSON.parse(r)},DateTime:{decode:r=>new Date(r),encode:r=>r.toISOString()},BigInt:{decode:r=>BigInt(r),encode:r=>r.toString()}}})({user:t});return e?e.__typename==="ErrorNotFound"?e:e.user?{__typename:"SuccessResponse",data:e.user}:null:null}class u{static getBaseUrl=(t="prod",e=!0)=>{const r=process.env.NEXT_PUBLIC_SECRECY_API_URL;if(r)return r;switch(t){case"prod":return e?"https://secrecy.graphcdn.app":"https://api.secrecy.me/graphql";case"dev":default:return"https://api.dev.secrecy.me/graphql"}};static getBaseClient=(t,e)=>y(u.getBaseUrl(t),e);thunder;sessionId;constructor(t,e){this.sessionId=t,this.thunder=u.getBaseClient(e,t)}async logout(t){if(!t){const e=c(!1),r=c(!0);e.jwt.clear(),e.userAppKeys.clear(),e.userAppSession.clear(),r.jwt.clear(),r.userAppKeys.clear(),r.userAppSession.clear(),a.clear()}try{await this.thunder("mutation")({logout:[{sessionId:t},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on LogoutResponse":{__typename:!0,logout:!0}}]})}catch{}}async me(t){return this.user(t||{withPublicKey:!0})}static async user(t,e){const r=await l({client:this.getBaseClient(t.env,e),userId:t.userId??t.userEmail,withPublicKey:t.withPublicKey});return r?(r.__typename==="ErrorNotFound"||r&&a.set(r.data.id,r.data),r):null}async user(t){const e=await l({client:this.thunder,userId:t.userId??t.userEmail,withPublicKey:t.withPublicKey});return e?(e.__typename==="ErrorNotFound"||e&&a.set(e.data.id,e.data),e):null}async updateProfile({firstname:t,lastname:e,lang:r}){const{updateProfile:n}=await this.thunder("mutation",{scalars:{Json:{encode:s=>JSON.stringify(s),decode:s=>JSON.parse(s)},DateTime:{decode:s=>new Date(s),encode:s=>s.toISOString()},BigInt:{decode:s=>BigInt(s),encode:s=>s.toString()}}})({updateProfile:[{firstname:t,lastname:e,lang:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on UpdateProfileResponse":{__typename:!0,updateProfile:{id:!0,firstname:!0,lastname:!0,lang:!0,email:!0,phone:!0,role:!0,deletedAt:!0,lastLogin:!0}}}]});return n?n.__typename==="ErrorAccessDenied"||n.__typename==="ErrorNotFound"?n:n.updateProfile?{__typename:"SuccessResponse",data:n.updateProfile}:null:null}static async isCryptoTransactionDone({env:t,idOrHash:e,network:r=p.mainnet}){const{isCryptoTransactionDone:n}=await u.getBaseClient(t)("query")({isCryptoTransactionDone:[{idOrHash:e,network:r},{__typename:!0,"...on IsCryptoTransactionDoneResponse":{done:!0},"...on ErrorNotExist":{message:!0}}]});return n&&n.__typename==="IsCryptoTransactionDoneResponse"?n.done:!1}async limits(){const{limits:t}=await this.thunder("query",{scalars:{Json:{encode:e=>JSON.stringify(e),decode:e=>JSON.parse(e)},DateTime:{decode:e=>new Date(e),encode:e=>e.toISOString()},BigInt:{decode:e=>BigInt(e),encode:e=>e.toString()}}})({limits:{"...on
|
|
1
|
+
import{getLink as d}from"@secrecy/lib-utils";import{usersCache as a}from"./cache.js";import{getStorage as c}from"./client/storage.js";import{InfuraNetwork as p}from"./zeus/index.js";import{Selector as m}from"./zeus/index.js";import{createThunder as y}from"./ZeusThunder.js";const g=(o,t)=>{const{user:e}=m("Query")({user:[{userId:o},{"...on ErrorNotFound":{__typename:!0,message:!0,field:!0},"...on UserResponse":{__typename:!0,user:{id:!0,firstname:!0,lastname:!0,lang:!0,publicKey:t?!0:void 0,email:!0,phone:!0,role:!0,deletedAt:!0,lastLogin:!0}}}]});return e};async function l(o){const t=g(o.userId??o.userEmail,o.withPublicKey),{user:e}=await o.client("query",{scalars:{Json:{encode:r=>JSON.stringify(r),decode:r=>JSON.parse(r)},DateTime:{decode:r=>new Date(r),encode:r=>r.toISOString()},BigInt:{decode:r=>BigInt(r),encode:r=>r.toString()}}})({user:t});return e?e.__typename==="ErrorNotFound"?e:e.user?{__typename:"SuccessResponse",data:e.user}:null:null}class u{static getBaseUrl=(t="prod",e=!0)=>{const r=process.env.NEXT_PUBLIC_SECRECY_API_URL;if(r)return r;switch(t){case"prod":return e?"https://secrecy.graphcdn.app":"https://api.secrecy.me/graphql";case"dev":default:return"https://api.dev.secrecy.me/graphql"}};static getBaseClient=(t,e)=>y(u.getBaseUrl(t),e);thunder;sessionId;constructor(t,e){this.sessionId=t,this.thunder=u.getBaseClient(e,t)}async logout(t){if(!t){const e=c(!1),r=c(!0);e.jwt.clear(),e.userAppKeys.clear(),e.userAppSession.clear(),r.jwt.clear(),r.userAppKeys.clear(),r.userAppSession.clear(),a.clear()}try{await this.thunder("mutation")({logout:[{sessionId:t},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on LogoutResponse":{__typename:!0,logout:!0}}]})}catch{}}async me(t){return this.user(t||{withPublicKey:!0})}static async user(t,e){const r=await l({client:this.getBaseClient(t.env,e),userId:t.userId??t.userEmail,withPublicKey:t.withPublicKey});return r?(r.__typename==="ErrorNotFound"||r&&a.set(r.data.id,r.data),r):null}async user(t){const e=await l({client:this.thunder,userId:t.userId??t.userEmail,withPublicKey:t.withPublicKey});return e?(e.__typename==="ErrorNotFound"||e&&a.set(e.data.id,e.data),e):null}async updateProfile({firstname:t,lastname:e,lang:r}){const{updateProfile:n}=await this.thunder("mutation",{scalars:{Json:{encode:s=>JSON.stringify(s),decode:s=>JSON.parse(s)},DateTime:{decode:s=>new Date(s),encode:s=>s.toISOString()},BigInt:{decode:s=>BigInt(s),encode:s=>s.toString()}}})({updateProfile:[{firstname:t,lastname:e,lang:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on UpdateProfileResponse":{__typename:!0,updateProfile:{id:!0,firstname:!0,lastname:!0,lang:!0,email:!0,phone:!0,role:!0,deletedAt:!0,lastLogin:!0}}}]});return n?n.__typename==="ErrorAccessDenied"||n.__typename==="ErrorNotFound"?n:n.updateProfile?{__typename:"SuccessResponse",data:n.updateProfile}:null:null}static async isCryptoTransactionDone({env:t,idOrHash:e,network:r=p.mainnet}){const{isCryptoTransactionDone:n}=await u.getBaseClient(t)("query")({isCryptoTransactionDone:[{idOrHash:e,network:r},{__typename:!0,"...on IsCryptoTransactionDoneResponse":{done:!0},"...on ErrorNotExist":{message:!0}}]});return n&&n.__typename==="IsCryptoTransactionDoneResponse"?n.done:!1}async limits(){const{limits:t}=await this.thunder("query",{scalars:{Json:{encode:e=>JSON.stringify(e),decode:e=>JSON.parse(e)},DateTime:{decode:e=>new Date(e),encode:e=>e.toISOString()},BigInt:{decode:e=>BigInt(e),encode:e=>e.toString()}}})({limits:{"...on ErrorLimit":{__typename:!0,message:!0},"...on ErrorNotExist":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on QueryLimits":{__typename:!0,cloud:{size:!0,maxSize:!0,count:!0,maxCount:!0},mail:{received:{count:!0,maxCount:!0,fileCount:!0,maxFileCount:!0,fileSize:!0,maxFileSize:!0},sent:{count:!0,maxCount:!0,fileCount:!0,maxFileCount:!0,fileSize:!0,maxFileSize:!0}}}}});return t?t.__typename==="ErrorNotExist"||t.__typename==="ErrorLimit"||t.__typename==="ErrorNotFound"?t:{__typename:"SuccessResponse",data:t}:null}async reportUser(t,e){const{sendReport:r}=await this.thunder("mutation")({sendReport:[{reportedUserId:t,customMessage:e},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on SendReportResponse":{__typename:!0,sendReport:{id:!0,customMessage:!0,user:{id:!0,firstname:!0,lastname:!0,email:!0},reportedUser:{id:!0,firstname:!0,lastname:!0,email:!0}}}}]});return r?r.__typename==="ErrorAccessDenied"||r.__typename==="ErrorNotFound"?r:r.sendReport?{__typename:"SuccessResponse",data:r.sendReport}:null:null}async getSponsorshipLink({backUrl:t}){const e=await this.me({withPublicKey:!1});return!e||e.__typename==="ErrorNotFound"?null:d({app:"auth",path:`/sign-up?gf=${btoa(e.data.email)}&au=${btoa(t)}`})}static getPaymentRequest=async({env:t,paymentRequestId:e,secrecyIdSeller:r,secrecyId:n,appCode:s})=>{const{getPaymentRequestToPay:i}=await u.getBaseClient(t)("query")({getPaymentRequestToPay:[{paymentRequestId:e,secrecyIdSeller:r,secrecyId:n,appCode:s},{__typename:!0,"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,field:!0,message:!0},"...on GetPaymentRequestToPayResponse":{__typename:!0,paymentRequestToPay:{__typename:!0,accountId:!0,id:!0,amount:!0,amount_capturable:!0,amount_received:!0,application_id:!0,application_name:!0,application_fee_amount:!0,canceled_at:!0,cancellation_reason:!0,capture_method:!0,client_secret:!0,confirmation_method:!0,created:!0,currency:!0,customer:!0,description:!0,invoice:!0,livemode:!0,payment_method:!0,status:!0}}}]});return i?i.__typename==="ErrorAccessDenied"||i.__typename==="ErrorNotFound"?i:i.paymentRequestToPay?{__typename:"SuccessResponse",data:i.paymentRequestToPay}:{__typename:"ErrorNotFound",message:"No payment request found"}:{__typename:"ErrorNotFound",message:"No payment request found"}}}export{u as BaseClient};
|
|
2
2
|
//# sourceMappingURL=BaseClient.js.map
|
package/dist/BaseClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/BaseClient.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport type { DownloadProgress as DLProgress } from \"ky\";\nimport { getLink } from \"@secrecy/lib-utils\";\nimport { usersCache } from \"./cache.js\";\nimport type { SecrecyEnv } from \"./client/helpers.js\";\nimport { getStorage } from \"./client/storage.js\";\nimport type { GraphQLTypes, Lang, Thunder, UserRole } from \"./zeus/index.js\";\nimport { InfuraNetwork } from \"./zeus/index.js\";\nimport { Selector } from \"./zeus/index.js\";\nimport { createThunder } from \"./ZeusThunder.js\";\nimport type {\n ErrorAccessDenied,\n ErrorLimit,\n ErrorNotFound,\n ErrorNotExist\n} from \"./error.js\";\n\nexport type SuccessResponse<T> = {\n __typename: \"SuccessResponse\";\n data: T;\n};\n\nexport type DownloadProgress = DLProgress;\n\nexport type SendReport = {\n id: string;\n user: {\n id: string;\n firstname: string;\n lastname: string;\n email: string;\n };\n reportedUser: {\n id: string;\n firstname: string;\n lastname: string;\n email: string;\n };\n customMessage?: string | undefined;\n};\n\nexport type UserData<\n T extends Record<string, unknown> = Record<string, unknown>\n> = {\n isSuperuser: boolean;\n isSearchable: boolean;\n} & T;\n\nconst getUserSelector = (\n userId: string | null | undefined,\n withPublicKey: boolean | undefined\n) => {\n const { user } = Selector(\"Query\")({\n user: [\n { userId },\n {\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true,\n field: true\n },\n \"...on UserResponse\": {\n __typename: true,\n user: {\n id: true,\n firstname: true,\n lastname: true,\n lang: true,\n publicKey: withPublicKey ? true : undefined,\n email: true,\n phone: true,\n role: true,\n deletedAt: true,\n lastLogin: true\n }\n }\n }\n ]\n });\n return user;\n};\n\nexport type UserBase = {\n email: string;\n phone: string;\n lastname: string;\n role: UserRole;\n firstname: string;\n id: string;\n deletedAt?: Date;\n lastLogin: Date;\n lang: Lang;\n};\n\ntype WithPublicKey = { withPublicKey?: boolean };\n\nexport type User<T extends WithPublicKey = WithPublicKey> = T extends {\n withPublicKey: true;\n}\n ? UserBase & { publicKey: string }\n : UserBase;\n\ntype ClassGetUserParams = WithPublicKey & {\n userId?: string;\n userEmail?: string;\n};\ntype GetUserParams = ClassGetUserParams & {\n client: ReturnType<typeof Thunder>;\n};\n\ntype StaticGetUserParams = ClassGetUserParams & {\n env: SecrecyEnv;\n};\n\nasync function getUser<U extends WithPublicKey>(\n params: GetUserParams\n): Promise<SuccessResponse<User<U>> | ErrorNotFound | null> {\n const selector = getUserSelector(\n params.userId ?? params.userEmail,\n params.withPublicKey\n );\n const { user: userResponse } = await params.client(\"query\", {\n scalars: {\n Json: {\n encode: (e: unknown) => JSON.stringify(e),\n decode: (e: unknown) => JSON.parse(e as string)\n },\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n },\n BigInt: {\n decode: (e: unknown) => BigInt(e as string),\n encode: (e: unknown) => (e as bigint).toString()\n }\n }\n })({\n user: selector\n });\n\n if (!userResponse) {\n return null;\n }\n\n if (userResponse.__typename === \"ErrorNotFound\") {\n return userResponse;\n }\n\n if (!userResponse.user) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: userResponse.user\n };\n}\n\nexport type CloudLimits = {\n count: bigint;\n maxCount?: bigint | undefined;\n size: bigint;\n maxSize?: bigint | undefined;\n};\n\nexport type MailLimitsValues = {\n count: bigint;\n maxCount?: bigint | undefined;\n fileSize: bigint;\n maxFileSize?: bigint | undefined;\n fileCount: bigint;\n maxFileCount?: bigint | undefined;\n};\n\nexport type QueryLimits = {\n cloud: CloudLimits;\n mail: {\n sent: MailLimitsValues;\n received: MailLimitsValues;\n };\n};\n\nexport class BaseClient {\n public static readonly getBaseUrl = (\n env: SecrecyEnv = \"prod\",\n graphcdn = true\n ): string => {\n const apiUrl = process.env.NEXT_PUBLIC_SECRECY_API_URL;\n if (apiUrl) {\n return apiUrl;\n }\n\n switch (env) {\n case \"prod\":\n return graphcdn\n ? \"https://secrecy.graphcdn.app\"\n : \"https://api.secrecy.me/graphql\";\n case \"dev\":\n default:\n return \"https://api.dev.secrecy.me/graphql\";\n }\n };\n\n static readonly getBaseClient = (\n env: SecrecyEnv,\n session?: string | null | undefined\n ): ReturnType<typeof Thunder> =>\n createThunder(BaseClient.getBaseUrl(env), session);\n\n protected thunder: ReturnType<typeof Thunder>;\n\n public sessionId: string;\n\n constructor(session: string, env: SecrecyEnv) {\n this.sessionId = session;\n this.thunder = BaseClient.getBaseClient(env, session);\n }\n\n async logout(sessionId?: string | null | undefined): Promise<void> {\n if (!sessionId) {\n const local = getStorage(false);\n const session = getStorage(true);\n local.jwt.clear();\n local.userAppKeys.clear();\n local.userAppSession.clear();\n session.jwt.clear();\n session.userAppKeys.clear();\n session.userAppSession.clear();\n usersCache.clear();\n }\n try {\n await this.thunder(\"mutation\")({\n logout: [\n {\n sessionId: sessionId\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorBasic\": {\n __typename: true,\n message: true\n },\n \"...on LogoutResponse\": {\n __typename: true,\n logout: true\n }\n }\n ]\n });\n } catch {\n //\n }\n }\n\n async me<T extends WithPublicKey = WithPublicKey>(\n params?: T\n ): Promise<SuccessResponse<User<T>> | ErrorNotFound | null> {\n return this.user(params || ({ withPublicKey: true } as T));\n }\n\n static async user<T extends StaticGetUserParams>(\n params: T,\n sessionId?: string | null | undefined\n ): Promise<SuccessResponse<User<T>> | ErrorNotFound | null> {\n const user = await getUser<T>({\n client: this.getBaseClient(params.env, sessionId),\n userId: params.userId ?? params.userEmail,\n withPublicKey: params.withPublicKey\n });\n\n if (!user) {\n return null;\n }\n\n if (user.__typename === \"ErrorNotFound\") {\n return user;\n }\n\n if (user) {\n usersCache.set(user.data.id, user.data);\n }\n\n return user;\n }\n\n async user<T extends ClassGetUserParams>(\n params: T\n ): Promise<SuccessResponse<User<T>> | ErrorNotFound | null> {\n const user = await getUser<T>({\n client: this.thunder,\n userId: params.userId ?? params.userEmail,\n withPublicKey: params.withPublicKey\n });\n\n if (!user) {\n return null;\n }\n\n if (user.__typename === \"ErrorNotFound\") {\n return user;\n }\n\n if (user) {\n usersCache.set(user.data.id, user.data);\n }\n\n return user;\n }\n\n async updateProfile({\n firstname,\n lastname,\n lang\n }: {\n firstname: string | null;\n lastname: string | null;\n lang: Lang | null;\n }): Promise<\n SuccessResponse<User> | ErrorNotFound | ErrorAccessDenied | null\n > {\n const { updateProfile } = await this.thunder(\"mutation\", {\n scalars: {\n Json: {\n encode: (e: unknown) => JSON.stringify(e),\n decode: (e: unknown) => JSON.parse(e as string)\n },\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n },\n BigInt: {\n decode: (e: unknown) => BigInt(e as string),\n encode: (e: unknown) => (e as bigint).toString()\n }\n }\n })({\n updateProfile: [\n {\n firstname,\n lastname,\n lang\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true\n },\n \"...on UpdateProfileResponse\": {\n __typename: true,\n updateProfile: {\n id: true,\n firstname: true,\n lastname: true,\n lang: true,\n email: true,\n phone: true,\n role: true,\n deletedAt: true,\n lastLogin: true\n }\n }\n }\n ]\n });\n\n if (!updateProfile) {\n return null;\n }\n\n if (updateProfile.__typename === \"ErrorAccessDenied\") {\n return updateProfile;\n }\n\n if (updateProfile.__typename === \"ErrorNotFound\") {\n return updateProfile;\n }\n\n if (!updateProfile.updateProfile) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: updateProfile.updateProfile\n };\n }\n\n static async isCryptoTransactionDone({\n env,\n idOrHash,\n network = InfuraNetwork.mainnet\n }: {\n env: SecrecyEnv;\n idOrHash: string;\n network?: InfuraNetwork;\n }): Promise<boolean> {\n const { isCryptoTransactionDone } = await BaseClient.getBaseClient(env)(\n \"query\"\n )({\n isCryptoTransactionDone: [\n {\n idOrHash,\n network\n },\n {\n __typename: true,\n \"...on IsCryptoTransactionDoneResponse\": {\n done: true\n },\n \"...on ErrorNotExist\": {\n message: true\n }\n }\n ]\n });\n\n if (!isCryptoTransactionDone) {\n return false;\n }\n\n return isCryptoTransactionDone.__typename ===\n \"IsCryptoTransactionDoneResponse\"\n ? isCryptoTransactionDone.done\n : false;\n }\n\n async limits(): Promise<\n | SuccessResponse<QueryLimits>\n | ErrorAccessDenied\n | ErrorNotExist\n | ErrorLimit\n | ErrorNotFound\n | null\n > {\n const { limits } = await this.thunder(\"query\", {\n scalars: {\n Json: {\n encode: (e: unknown) => JSON.stringify(e),\n decode: (e: unknown) => JSON.parse(e as string)\n },\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n },\n BigInt: {\n decode: (e: unknown) => BigInt(e as string),\n encode: (e: unknown) => (e as bigint).toString()\n }\n }\n })({\n limits: {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorLimit\": {\n __typename: true,\n message: true\n },\n \"...on ErrorNotExist\": {\n __typename: true,\n message: true\n },\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true\n },\n \"...on QueryLimits\": {\n __typename: true,\n cloud: {\n size: true,\n maxSize: true,\n count: true,\n maxCount: true\n },\n mail: {\n received: {\n count: true,\n maxCount: true,\n fileCount: true,\n maxFileCount: true,\n fileSize: true,\n maxFileSize: true\n },\n sent: {\n count: true,\n maxCount: true,\n fileCount: true,\n maxFileCount: true,\n fileSize: true,\n maxFileSize: true\n }\n }\n }\n }\n });\n\n if (!limits) {\n return null;\n }\n\n if (limits.__typename === \"ErrorAccessDenied\") {\n return limits;\n }\n if (limits.__typename === \"ErrorNotExist\") {\n return limits;\n }\n if (limits.__typename === \"ErrorLimit\") {\n return limits;\n }\n if (limits.__typename === \"ErrorNotFound\") {\n return limits;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: limits\n };\n }\n\n async reportUser(\n reportedUserId: string,\n customMessage?: string\n ): Promise<\n SuccessResponse<SendReport> | ErrorAccessDenied | ErrorNotFound | null\n > {\n const { sendReport } = await this.thunder(\"mutation\")({\n sendReport: [\n {\n reportedUserId,\n customMessage\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true\n },\n \"...on SendReportResponse\": {\n __typename: true,\n sendReport: {\n id: true,\n customMessage: true,\n user: {\n id: true,\n firstname: true,\n lastname: true,\n email: true\n },\n reportedUser: {\n id: true,\n firstname: true,\n lastname: true,\n email: true\n }\n }\n }\n }\n ]\n });\n\n if (!sendReport) {\n return null;\n }\n\n if (sendReport.__typename === \"ErrorAccessDenied\") {\n return sendReport;\n }\n\n if (sendReport.__typename === \"ErrorNotFound\") {\n return sendReport;\n }\n\n if (!sendReport.sendReport) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: sendReport.sendReport\n };\n }\n\n async getSponsorshipLink({\n backUrl\n }: {\n backUrl: string;\n }): Promise<string | null> {\n const me = await this.me({ withPublicKey: false });\n\n if (!me) {\n return null;\n }\n\n if (me.__typename === \"ErrorNotFound\") {\n return null;\n }\n\n return getLink({\n app: \"auth\",\n path: `/sign-up?gf=${btoa(me.data.email)}&au=${btoa(backUrl)}`\n });\n }\n\n public static getPaymentRequest = async ({\n env,\n paymentRequestId,\n secrecyIdSeller,\n secrecyId,\n appCode\n }: {\n env: SecrecyEnv;\n paymentRequestId: string;\n secrecyIdSeller: string;\n secrecyId?: string;\n appCode?: string;\n }): Promise<\n | SuccessResponse<GraphQLTypes[\"GetPaymentRequestToPay\"]>\n | ErrorAccessDenied\n | ErrorNotFound\n > => {\n const { getPaymentRequestToPay } = await BaseClient.getBaseClient(env)(\n \"query\"\n )({\n getPaymentRequestToPay: [\n {\n paymentRequestId,\n secrecyIdSeller,\n secrecyId,\n appCode\n },\n {\n __typename: true,\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorNotFound\": {\n __typename: true,\n field: true,\n message: true\n },\n \"...on GetPaymentRequestToPayResponse\": {\n __typename: true,\n paymentRequestToPay: {\n __typename: true,\n accountId: true,\n id: true,\n amount: true,\n amount_capturable: true,\n amount_received: true,\n application_id: true,\n application_name: true,\n application_fee_amount: true,\n canceled_at: true,\n cancellation_reason: true,\n capture_method: true,\n client_secret: true,\n confirmation_method: true,\n created: true,\n currency: true,\n customer: true,\n description: true,\n invoice: true,\n livemode: true,\n payment_method: true,\n status: true\n }\n }\n }\n ]\n });\n\n if (!getPaymentRequestToPay) {\n return {\n __typename: \"ErrorNotFound\",\n message: \"No payment request found\"\n };\n }\n\n if (\n getPaymentRequestToPay.__typename === \"ErrorAccessDenied\" ||\n getPaymentRequestToPay.__typename === \"ErrorNotFound\"\n ) {\n return getPaymentRequestToPay;\n }\n\n if (!getPaymentRequestToPay.paymentRequestToPay) {\n return {\n __typename: \"ErrorNotFound\",\n message: \"No payment request found\"\n };\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: getPaymentRequestToPay.paymentRequestToPay\n };\n };\n}\n"],"mappings":"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","names":["getLink","usersCache","getStorage","InfuraNetwork","Selector","createThunder","getUserSelector","userId","withPublicKey","user","getUser","params","selector","userResponse","e","BaseClient","env","graphcdn","apiUrl","session","sessionId","local","firstname","lastname","lang","updateProfile","idOrHash","network","isCryptoTransactionDone","limits","reportedUserId","customMessage","sendReport","backUrl","me","paymentRequestId","secrecyIdSeller","secrecyId","appCode","getPaymentRequestToPay"]}
|
|
1
|
+
{"version":3,"sources":["../src/BaseClient.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport type { DownloadProgress as DLProgress } from \"ky\";\nimport { getLink } from \"@secrecy/lib-utils\";\nimport { usersCache } from \"./cache.js\";\nimport type { SecrecyEnv } from \"./client/helpers.js\";\nimport { getStorage } from \"./client/storage.js\";\nimport type { GraphQLTypes, Lang, Thunder, UserRole } from \"./zeus/index.js\";\nimport { InfuraNetwork } from \"./zeus/index.js\";\nimport { Selector } from \"./zeus/index.js\";\nimport { createThunder } from \"./ZeusThunder.js\";\nimport type {\n ErrorAccessDenied,\n ErrorLimit,\n ErrorNotFound,\n ErrorNotExist\n} from \"./error.js\";\n\nexport type SuccessResponse<T> = {\n __typename: \"SuccessResponse\";\n data: T;\n};\n\nexport type DownloadProgress = DLProgress;\n\nexport type SendReport = {\n id: string;\n user: {\n id: string;\n firstname: string;\n lastname: string;\n email: string;\n };\n reportedUser: {\n id: string;\n firstname: string;\n lastname: string;\n email: string;\n };\n customMessage?: string | undefined;\n};\n\nexport type UserData<\n T extends Record<string, unknown> = Record<string, unknown>\n> = {\n isSuperuser: boolean;\n isSearchable: boolean;\n} & T;\n\nconst getUserSelector = (\n userId: string | null | undefined,\n withPublicKey: boolean | undefined\n) => {\n const { user } = Selector(\"Query\")({\n user: [\n { userId },\n {\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true,\n field: true\n },\n \"...on UserResponse\": {\n __typename: true,\n user: {\n id: true,\n firstname: true,\n lastname: true,\n lang: true,\n publicKey: withPublicKey ? true : undefined,\n email: true,\n phone: true,\n role: true,\n deletedAt: true,\n lastLogin: true\n }\n }\n }\n ]\n });\n return user;\n};\n\nexport type UserBase = {\n email: string;\n phone: string;\n lastname: string;\n role: UserRole;\n firstname: string;\n id: string;\n deletedAt?: Date;\n lastLogin: Date;\n lang: Lang;\n};\n\ntype WithPublicKey = { withPublicKey?: boolean };\n\nexport type User<T extends WithPublicKey = WithPublicKey> = T extends {\n withPublicKey: true;\n}\n ? UserBase & { publicKey: string }\n : UserBase;\n\ntype ClassGetUserParams = WithPublicKey & {\n userId?: string;\n userEmail?: string;\n};\ntype GetUserParams = ClassGetUserParams & {\n client: ReturnType<typeof Thunder>;\n};\n\ntype StaticGetUserParams = ClassGetUserParams & {\n env: SecrecyEnv;\n};\n\nasync function getUser<U extends WithPublicKey>(\n params: GetUserParams\n): Promise<SuccessResponse<User<U>> | ErrorNotFound | null> {\n const selector = getUserSelector(\n params.userId ?? params.userEmail,\n params.withPublicKey\n );\n const { user: userResponse } = await params.client(\"query\", {\n scalars: {\n Json: {\n encode: (e: unknown) => JSON.stringify(e),\n decode: (e: unknown) => JSON.parse(e as string)\n },\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n },\n BigInt: {\n decode: (e: unknown) => BigInt(e as string),\n encode: (e: unknown) => (e as bigint).toString()\n }\n }\n })({\n user: selector\n });\n\n if (!userResponse) {\n return null;\n }\n\n if (userResponse.__typename === \"ErrorNotFound\") {\n return userResponse;\n }\n\n if (!userResponse.user) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: userResponse.user\n };\n}\n\nexport type CloudLimits = {\n count: bigint;\n maxCount?: bigint | undefined;\n size: bigint;\n maxSize?: bigint | undefined;\n};\n\nexport type MailLimitsValues = {\n count: bigint;\n maxCount?: bigint | undefined;\n fileSize: bigint;\n maxFileSize?: bigint | undefined;\n fileCount: bigint;\n maxFileCount?: bigint | undefined;\n};\n\nexport type QueryLimits = {\n cloud: CloudLimits;\n mail: {\n sent: MailLimitsValues;\n received: MailLimitsValues;\n };\n};\n\nexport class BaseClient {\n public static readonly getBaseUrl = (\n env: SecrecyEnv = \"prod\",\n graphcdn = true\n ): string => {\n const apiUrl = process.env.NEXT_PUBLIC_SECRECY_API_URL;\n if (apiUrl) {\n return apiUrl;\n }\n\n switch (env) {\n case \"prod\":\n return graphcdn\n ? \"https://secrecy.graphcdn.app\"\n : \"https://api.secrecy.me/graphql\";\n case \"dev\":\n default:\n return \"https://api.dev.secrecy.me/graphql\";\n }\n };\n\n static readonly getBaseClient = (\n env: SecrecyEnv,\n session?: string | null | undefined\n ): ReturnType<typeof Thunder> =>\n createThunder(BaseClient.getBaseUrl(env), session);\n\n protected thunder: ReturnType<typeof Thunder>;\n\n public sessionId: string;\n\n constructor(session: string, env: SecrecyEnv) {\n this.sessionId = session;\n this.thunder = BaseClient.getBaseClient(env, session);\n }\n\n async logout(sessionId?: string | null | undefined): Promise<void> {\n if (!sessionId) {\n const local = getStorage(false);\n const session = getStorage(true);\n local.jwt.clear();\n local.userAppKeys.clear();\n local.userAppSession.clear();\n session.jwt.clear();\n session.userAppKeys.clear();\n session.userAppSession.clear();\n usersCache.clear();\n }\n try {\n await this.thunder(\"mutation\")({\n logout: [\n {\n sessionId: sessionId\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorBasic\": {\n __typename: true,\n message: true\n },\n \"...on LogoutResponse\": {\n __typename: true,\n logout: true\n }\n }\n ]\n });\n } catch {\n //\n }\n }\n\n async me<T extends WithPublicKey = WithPublicKey>(\n params?: T\n ): Promise<SuccessResponse<User<T>> | ErrorNotFound | null> {\n return this.user(params || ({ withPublicKey: true } as T));\n }\n\n static async user<T extends StaticGetUserParams>(\n params: T,\n sessionId?: string | null | undefined\n ): Promise<SuccessResponse<User<T>> | ErrorNotFound | null> {\n const user = await getUser<T>({\n client: this.getBaseClient(params.env, sessionId),\n userId: params.userId ?? params.userEmail,\n withPublicKey: params.withPublicKey\n });\n\n if (!user) {\n return null;\n }\n\n if (user.__typename === \"ErrorNotFound\") {\n return user;\n }\n\n if (user) {\n usersCache.set(user.data.id, user.data);\n }\n\n return user;\n }\n\n async user<T extends ClassGetUserParams>(\n params: T\n ): Promise<SuccessResponse<User<T>> | ErrorNotFound | null> {\n const user = await getUser<T>({\n client: this.thunder,\n userId: params.userId ?? params.userEmail,\n withPublicKey: params.withPublicKey\n });\n\n if (!user) {\n return null;\n }\n\n if (user.__typename === \"ErrorNotFound\") {\n return user;\n }\n\n if (user) {\n usersCache.set(user.data.id, user.data);\n }\n\n return user;\n }\n\n async updateProfile({\n firstname,\n lastname,\n lang\n }: {\n firstname: string | null;\n lastname: string | null;\n lang: Lang | null;\n }): Promise<\n SuccessResponse<User> | ErrorNotFound | ErrorAccessDenied | null\n > {\n const { updateProfile } = await this.thunder(\"mutation\", {\n scalars: {\n Json: {\n encode: (e: unknown) => JSON.stringify(e),\n decode: (e: unknown) => JSON.parse(e as string)\n },\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n },\n BigInt: {\n decode: (e: unknown) => BigInt(e as string),\n encode: (e: unknown) => (e as bigint).toString()\n }\n }\n })({\n updateProfile: [\n {\n firstname,\n lastname,\n lang\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true\n },\n \"...on UpdateProfileResponse\": {\n __typename: true,\n updateProfile: {\n id: true,\n firstname: true,\n lastname: true,\n lang: true,\n email: true,\n phone: true,\n role: true,\n deletedAt: true,\n lastLogin: true\n }\n }\n }\n ]\n });\n\n if (!updateProfile) {\n return null;\n }\n\n if (updateProfile.__typename === \"ErrorAccessDenied\") {\n return updateProfile;\n }\n\n if (updateProfile.__typename === \"ErrorNotFound\") {\n return updateProfile;\n }\n\n if (!updateProfile.updateProfile) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: updateProfile.updateProfile\n };\n }\n\n static async isCryptoTransactionDone({\n env,\n idOrHash,\n network = InfuraNetwork.mainnet\n }: {\n env: SecrecyEnv;\n idOrHash: string;\n network?: InfuraNetwork;\n }): Promise<boolean> {\n const { isCryptoTransactionDone } = await BaseClient.getBaseClient(env)(\n \"query\"\n )({\n isCryptoTransactionDone: [\n {\n idOrHash,\n network\n },\n {\n __typename: true,\n \"...on IsCryptoTransactionDoneResponse\": {\n done: true\n },\n \"...on ErrorNotExist\": {\n message: true\n }\n }\n ]\n });\n\n if (!isCryptoTransactionDone) {\n return false;\n }\n\n return isCryptoTransactionDone.__typename ===\n \"IsCryptoTransactionDoneResponse\"\n ? isCryptoTransactionDone.done\n : false;\n }\n\n async limits(): Promise<\n | SuccessResponse<QueryLimits>\n | ErrorNotExist\n | ErrorLimit\n | ErrorNotFound\n | null\n > {\n const { limits } = await this.thunder(\"query\", {\n scalars: {\n Json: {\n encode: (e: unknown) => JSON.stringify(e),\n decode: (e: unknown) => JSON.parse(e as string)\n },\n DateTime: {\n decode: (e: unknown) => new Date(e as string),\n encode: (e: unknown) => (e as Date).toISOString()\n },\n BigInt: {\n decode: (e: unknown) => BigInt(e as string),\n encode: (e: unknown) => (e as bigint).toString()\n }\n }\n })({\n limits: {\n \"...on ErrorLimit\": {\n __typename: true,\n message: true\n },\n \"...on ErrorNotExist\": {\n __typename: true,\n message: true\n },\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true\n },\n \"...on QueryLimits\": {\n __typename: true,\n cloud: {\n size: true,\n maxSize: true,\n count: true,\n maxCount: true\n },\n mail: {\n received: {\n count: true,\n maxCount: true,\n fileCount: true,\n maxFileCount: true,\n fileSize: true,\n maxFileSize: true\n },\n sent: {\n count: true,\n maxCount: true,\n fileCount: true,\n maxFileCount: true,\n fileSize: true,\n maxFileSize: true\n }\n }\n }\n }\n });\n\n if (!limits) {\n return null;\n }\n\n if (limits.__typename === \"ErrorNotExist\") {\n return limits;\n }\n if (limits.__typename === \"ErrorLimit\") {\n return limits;\n }\n if (limits.__typename === \"ErrorNotFound\") {\n return limits;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: limits\n };\n }\n\n async reportUser(\n reportedUserId: string,\n customMessage?: string\n ): Promise<\n SuccessResponse<SendReport> | ErrorAccessDenied | ErrorNotFound | null\n > {\n const { sendReport } = await this.thunder(\"mutation\")({\n sendReport: [\n {\n reportedUserId,\n customMessage\n },\n {\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorNotFound\": {\n __typename: true,\n message: true\n },\n \"...on SendReportResponse\": {\n __typename: true,\n sendReport: {\n id: true,\n customMessage: true,\n user: {\n id: true,\n firstname: true,\n lastname: true,\n email: true\n },\n reportedUser: {\n id: true,\n firstname: true,\n lastname: true,\n email: true\n }\n }\n }\n }\n ]\n });\n\n if (!sendReport) {\n return null;\n }\n\n if (sendReport.__typename === \"ErrorAccessDenied\") {\n return sendReport;\n }\n\n if (sendReport.__typename === \"ErrorNotFound\") {\n return sendReport;\n }\n\n if (!sendReport.sendReport) {\n return null;\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: sendReport.sendReport\n };\n }\n\n async getSponsorshipLink({\n backUrl\n }: {\n backUrl: string;\n }): Promise<string | null> {\n const me = await this.me({ withPublicKey: false });\n\n if (!me) {\n return null;\n }\n\n if (me.__typename === \"ErrorNotFound\") {\n return null;\n }\n\n return getLink({\n app: \"auth\",\n path: `/sign-up?gf=${btoa(me.data.email)}&au=${btoa(backUrl)}`\n });\n }\n\n public static getPaymentRequest = async ({\n env,\n paymentRequestId,\n secrecyIdSeller,\n secrecyId,\n appCode\n }: {\n env: SecrecyEnv;\n paymentRequestId: string;\n secrecyIdSeller: string;\n secrecyId?: string;\n appCode?: string;\n }): Promise<\n | SuccessResponse<GraphQLTypes[\"GetPaymentRequestToPay\"]>\n | ErrorAccessDenied\n | ErrorNotFound\n > => {\n const { getPaymentRequestToPay } = await BaseClient.getBaseClient(env)(\n \"query\"\n )({\n getPaymentRequestToPay: [\n {\n paymentRequestId,\n secrecyIdSeller,\n secrecyId,\n appCode\n },\n {\n __typename: true,\n \"...on ErrorAccessDenied\": {\n __typename: true,\n message: true\n },\n \"...on ErrorNotFound\": {\n __typename: true,\n field: true,\n message: true\n },\n \"...on GetPaymentRequestToPayResponse\": {\n __typename: true,\n paymentRequestToPay: {\n __typename: true,\n accountId: true,\n id: true,\n amount: true,\n amount_capturable: true,\n amount_received: true,\n application_id: true,\n application_name: true,\n application_fee_amount: true,\n canceled_at: true,\n cancellation_reason: true,\n capture_method: true,\n client_secret: true,\n confirmation_method: true,\n created: true,\n currency: true,\n customer: true,\n description: true,\n invoice: true,\n livemode: true,\n payment_method: true,\n status: true\n }\n }\n }\n ]\n });\n\n if (!getPaymentRequestToPay) {\n return {\n __typename: \"ErrorNotFound\",\n message: \"No payment request found\"\n };\n }\n\n if (\n getPaymentRequestToPay.__typename === \"ErrorAccessDenied\" ||\n getPaymentRequestToPay.__typename === \"ErrorNotFound\"\n ) {\n return getPaymentRequestToPay;\n }\n\n if (!getPaymentRequestToPay.paymentRequestToPay) {\n return {\n __typename: \"ErrorNotFound\",\n message: \"No payment request found\"\n };\n }\n\n return {\n __typename: \"SuccessResponse\",\n data: getPaymentRequestToPay.paymentRequestToPay\n };\n };\n}\n"],"mappings":"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","names":["getLink","usersCache","getStorage","InfuraNetwork","Selector","createThunder","getUserSelector","userId","withPublicKey","user","getUser","params","selector","userResponse","e","BaseClient","env","graphcdn","apiUrl","session","sessionId","local","firstname","lastname","lang","updateProfile","idOrHash","network","isCryptoTransactionDone","limits","reportedUserId","customMessage","sendReport","backUrl","me","paymentRequestId","secrecyIdSeller","secrecyId","appCode","getPaymentRequestToPay"]}
|
package/dist/cache.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios);var _ky = require('ky'); var _ky2 = _interopRequireDefault(_ky);var _indexjs = require('../index.js');var _cachejs = require('../cache.js');var _filejs = require('../crypto/file.js');var _indexjs3 = require('../crypto/index.js');var _indexjs5 = require('../minify/index.js');var _sodiumjs = require('../sodium.js');var _utilsjs = require('../utils/utils.js');var _md5js = require('../worker/md5.js');var _sodiumjs3 = require('../worker/sodium.js');var _filejs3 = require('./convert/file.js');var _nodejs = require('./convert/node.js');var _selectorsjs = require('./types/selectors.js');class pe{#t;#e;#r;constructor(e,t,r){;pe.prototype.__init.call(this);this.#t=e,this.#e=t,this.#r=r}async addFileToHistory({fileId:e,nodeId:t}){const{addFileToHistory:r}=await this.#r("mutation")({addFileToHistory:[{fileId:e,nodeId:t},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotExist":{__typename:!0,message:!0},"...on AddFileToHistoryResponse":{__typename:!0,addFileToHistory:_selectorsjs.nodeFullSelector}}]});if(!r)return null;if(r.__typename==="ErrorAccessDenied"||r.__typename==="ErrorNotExist")return r;const o=await _nodejs.gqlNodeFullToInternalFull.call(void 0, r.addFileToHistory,this.#e),s=o.history.find(u=>u.id===e);if(s){const u=o.users.filter(([l])=>l.publicKey!==this.#e.publicKey),d={fileId:s.id,users:u.map(([l])=>({id:l.id,key:_sodiumjs.sodium.to_hex(_indexjs3.encryptCryptoBox.call(void 0, _sodiumjs.sodium.from_hex(s.key),this.#e.publicKey,this.#e.privateKey))}))};await this.#r("mutation")({shareFileInHistory:[{input:d,nodeId:t},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on ShareFileInHistoryResponse":{__typename:!0,shareFileInHistory:!0}}]})}return{__typename:"SuccessResponse",data:_nodejs.internalNodeToNode.call(void 0, o)}}async uploadFile({file:e,encryptProgress:t,uploadProgress:r,signal:o}){const s=_filejs.secretstreamKeygen.call(void 0, ),n=e instanceof File?new Uint8Array(await e.arrayBuffer()):e,u=_indexjs5.compress.call(void 0, n),{data:d,md5:l,md5Encrypted:E}=await _sodiumjs3.encrypt.call(void 0, s,u,t,o),F=_indexjs3.encryptCryptoBox.call(void 0, s,this.#e.publicKey,this.#e.privateKey),{uploadFile:i}=await this.#r("mutation",{scalars:{Json:{encode:a=>JSON.stringify(a),decode:a=>JSON.parse(a)},DateTime:{decode:a=>new Date(a),encode:a=>a.toISOString()},BigInt:{decode:a=>BigInt(a),encode:a=>a.toString()}}})({uploadFile:[{fileSize:d.byteLength,fileSizeBefore:n.byteLength,fileKey:_sodiumjs.sodium.to_hex(F),md5Encrypted:E,md5:l},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorLimit":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on UploadFileResponse":{__typename:!0,uploadFile:{fileId:!0,filePartSize:!0,parts:{fields:!0,order:!0,url:!0}}}}]});if(!i)return null;if(i.__typename==="ErrorAccessDenied"||i.__typename==="ErrorLimit"||i.__typename==="ErrorNotFound")return i;if(!i.uploadFile)return null;if(_optionalChain([r, 'optionalCall', _4 => _4({total:d.byteLength,current:0,percent:0})]),i.uploadFile.parts.length===0)return _optionalChain([r, 'optionalCall', _5 => _5({total:d.byteLength,current:d.byteLength,percent:1})]),{__typename:"SuccessResponse",data:i.uploadFile.fileId};const m=async(a,h)=>{if(!i.uploadFile)return null;const{uploadFilePartEnd:_}=await this.#r("mutation")({uploadFilePartEnd:[{fileId:i.uploadFile.fileId,md5:a,order:h},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on UploadFilePartEndResponse":{__typename:!0,uploadFilePartEnd:!0}}]});return _?_.__typename==="ErrorAccessDenied"?_:{__typename:"SuccessResponse",data:_.uploadFilePartEnd}:null},y=async()=>{if(!i.uploadFile)return null;const{uploadFileEnd:a}=await this.#r("mutation")({uploadFileEnd:[{fileId:i.uploadFile.fileId},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on UploadFileEndResponse":{__typename:!0,uploadFileEnd:!0}}]});return a?a.__typename==="ErrorAccessDenied"||a.__typename==="ErrorNotFound"?a:a.uploadFileEnd?{__typename:"SuccessResponse",data:a.uploadFileEnd}:null:null},c=new Array;for(const[a,h]of _utilsjs.enumerate.call(void 0, _utilsjs.chunks.call(void 0, d,Number(i.uploadFile.filePartSize))))c.push({order:a+1,data:h,md5:await _md5js.md5.call(void 0, h)});const f={},g=(a,h)=>{f[a]=h;const _=Object.values(f).reduce((w,x)=>w+x.loaded,0);_optionalChain([r, 'optionalCall', _6 => _6({percent:_/d.byteLength,total:d.byteLength,current:_})])},D=async a=>{if(!i.uploadFile)return;const h=new FormData,_=c.find(w=>w.order===a.order);if(!!_){for(const[w,x]of Object.entries(a.fields))h.append(w,x);h.append("file",new Blob([_.data]),`${i.uploadFile.fileId}-${_.order}`),await _axios2.default.post(a.url,h,{onUploadProgress:w=>g(a.order,w),signal:o}),await m(_.md5,_.order)}};if(!i.uploadFile)return null;await _utilsjs.promiseAllLimit.call(void 0, 3,i.uploadFile.parts.map(a=>()=>D(a)));const S=await y();return S?S.__typename==="ErrorAccessDenied"||S.__typename==="ErrorNotFound"?S:{__typename:"SuccessResponse",data:S.data}:null}async uploadFileInCloud({file:e,name:t,nodeId:r,encryptProgress:o,uploadProgress:s,signal:n}){const u=await this.uploadFile({file:e,encryptProgress:o,uploadProgress:s,signal:n});if(!u)return null;if(u.__typename==="ErrorAccessDenied"||u.__typename==="ErrorLimit"||u.__typename==="ErrorNotFound")return u;const d=await this.saveInCloud({fileId:u.data,name:t,nodeId:r});return d?d.__typename==="ErrorAccessDenied"||d.__typename==="ErrorBasic"||d.__typename==="ErrorLimit"||d.__typename==="ErrorNotFound"||d.__typename==="ErrorNotExist"?d:{__typename:"SuccessResponse",data:d.data}:null}async deletedNodes(){const{deletedNodes:e}=await this.#r("query")({deletedNodes:{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on DeletedNodesResponse":{__typename:!0,deletedNodes:_selectorsjs.nodeSelector}}});if(!e)return null;if(e.__typename==="ErrorAccessDenied")return e;const t=new Array;for(const r of e.deletedNodes)t.push(await _nodejs.gqlNodeToExternal.call(void 0, r,this.#e));return{__typename:"SuccessResponse",data:t}}async sharedNodes(){const{sharedNodes:e}=await this.#r("query")({sharedNodes:{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on SharedNodesResponse":{__typename:!0,sharedNodes:_selectorsjs.nodeSelector}}});if(!e)return null;if(e.__typename==="ErrorAccessDenied")return e;const t=new Array;for(const r of e.sharedNodes)t.push(await _nodejs.gqlNodeToExternal.call(void 0, r,this.#e));return{__typename:"SuccessResponse",data:t}}async nodesSharedWithMe(e){const{nodesSharedWithMe:t}=await this.#r("query")({nodesSharedWithMe:[{type:e},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on NodesSharedWithMeResponse":{__typename:!0,nodesSharedWithMe:_selectorsjs.nodeSelector}}]});if(!t)return null;if(t.__typename==="ErrorAccessDenied")return t;const r=new Array;for(const o of t.nodesSharedWithMe)r.push(await _nodejs.gqlNodeToExternal.call(void 0, o,this.#e));return{__typename:"SuccessResponse",data:r}}async deleteNodeSharing({nodeId:e,userId:t}){const{deleteNodeSharing:r}=await this.#r("mutation")({deleteNodeSharing:[{nodeId:e,userId:t},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on DeleteNodeSharingResponse":{__typename:!0,deleteNodeSharing:!0}}]});return r?r.__typename==="ErrorAccessDenied"?r:{__typename:"SuccessResponse",data:r.deleteNodeSharing}:null}async duplicateNode({nodeId:e,folderId:t,customName:r}){let o=_cachejs.nodesCache.get(e);if(!o&&(await this.node({id:e}),o=_cachejs.nodesCache.get(e),!o))throw new Error(`Node (${e}) does not exists`);if(!_optionalChain([o, 'access', _7 => _7.access, 'optionalAccess', _8 => _8.nameKey]))throw new Error(`Can't have access to node ${e}`);r=r?await _indexjs.encryptName.call(void 0, r,o.access.nameKey):null;const{duplicateNode:s}=await this.#r("mutation")({duplicateNode:[{nodeId:e,folderId:t,customName:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on DuplicateNodeResponse":{__typename:!0,duplicateNode:!0}}]});return s?s.__typename==="ErrorAccessDenied"||s.__typename==="ErrorNotFound"?s:{__typename:"SuccessResponse",data:s.duplicateNode}:null}async deleteNodeCloudTrash({ids:e}){const{deleteNodeCloudTrash:t}=await this.#r("mutation")({deleteNodeCloudTrash:[{ids:e},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on DeleteNodeCloudTrashResponse":{__typename:!0,deleteNodeCloudTrash:!0}}]});return t?t.__typename==="ErrorAccessDenied"?t:{__typename:"SuccessResponse",data:_nullishCoalesce(t.deleteNodeCloudTrash, () => (!1))}:null}async createFolder({name:e,parentFolderId:t}){const r=_filejs.secretstreamKeygen.call(void 0, ),o=await _indexjs.encryptName.call(void 0, e,_sodiumjs.sodium.to_hex(r)),s=_indexjs3.encryptCryptoBox.call(void 0, r,this.#e.publicKey,this.#e.privateKey),{createFolder:n}=await this.#r("mutation")({createFolder:[{name:o,parentFolderId:t,key:_sodiumjs.sodium.to_hex(s)},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotExist":{__typename:!0,message:!0},"...on CreateFolderResponse":{__typename:!0,createFolder:_selectorsjs.nodeFullSelector}}]});if(!n)return null;if(n.__typename==="ErrorAccessDenied"||n.__typename==="ErrorNotExist")return n;if(!n.createFolder)return null;const u=await _nodejs.gqlNodeToExternalNodeFull.call(void 0, n.createFolder,this.#e),d=_nullishCoalesce(_optionalChain([u, 'access', _9 => _9.parent, 'optionalAccess', _10 => _10.users, 'optionalAccess', _11 => _11.filter, 'call', _12 => _12(([l])=>l.publicKey!==this.#e.publicKey)]), () => ([]));return d.length&&await Promise.all(d.map(([l,E])=>this.shareNode({nodeId:u.id,rights:E,userId:l.id}))),{__typename:"SuccessResponse",data:u}}async node({id:e,deleted:t}={}){const{node:r}=await this.#r("query")({node:[{deleted:t,id:e},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on NodeResponse":{__typename:!0,node:_selectorsjs.nodeFullSelector}}]});return r?r.__typename==="ErrorAccessDenied"?r:r.node?{__typename:"SuccessResponse",data:await _nodejs.gqlNodeToExternalNodeFull.call(void 0, r.node,this.#e)}:null:null}async fileMetadata({id:e}){const{file:t}=await this.#r("query")({file:[{id:e},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on FileQueryResponse":{__typename:!0,file:_selectorsjs.fileSelector}}]});return t?t.__typename==="ErrorAccessDenied"?t:t.file?{__typename:"SuccessResponse",data:_filejs3.gqlFileToExternal.call(void 0, t.file,this.#e)}:null:null}async shareNode({nodeId:e,userId:t,rights:r}){const o=await this.#t.user({userId:t,withPublicKey:!0});if(!o||o.__typename==="ErrorNotFound")return o;const{shareNode:s}=await this.#r("mutation")({shareNode:[{nodeId:e,userId:t},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on ShareNodeResponse":{__typename:!0,nodes:!0}}]});if(!s)return null;if(s.__typename==="ErrorAccessDenied"||s.__typename==="ErrorNotFound")return s;const n={nodes:[]};for(const d of s.nodes){const l=await this.perNode(d,o.data.publicKey);l&&n.nodes.push(l)}const{shareNodeFinish:u}=await this.#r("mutation")({shareNodeFinish:[{rights:r,userId:t,shareNodes:n},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on ShareNodeFinishResponse":{__typename:!0,shareNodeFinish:!0}}]});return u?u.__typename==="ErrorAccessDenied"||u.__typename==="ErrorNotFound"?u:{__typename:"SuccessResponse",data:_nullishCoalesce(u.shareNodeFinish, () => (!1))}:null}async updateNode({nodeId:e,name:t,isFavorite:r,deletedAt:o}){let s=_cachejs.nodesCache.get(e);if(!s&&(await this.node({id:e}),s=_cachejs.nodesCache.get(e),!s))throw`Can't find Node ${e}`;if(!_optionalChain([s, 'access', _13 => _13.access, 'optionalAccess', _14 => _14.nameKey]))throw new Error(`Can't have access to node ${e}`);t=t?_optionalChain([s, 'access', _15 => _15.access, 'optionalAccess', _16 => _16.nameKey])?await _indexjs.encryptName.call(void 0, t,s.access.nameKey):t:null;const{updateNode:n}=await this.#r("mutation")({updateNode:[{nodeId:e,name:t,isFavorite:r,deletedAt:o},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotExist":{__typename:!0,message:!0},"...on UpdateNodeResponse":{__typename:!0,updateNode:_selectorsjs.nodeFullSelector}}]});return n?n.__typename==="ErrorAccessDenied"||n.__typename==="ErrorNotExist"?n:n.updateNode?{__typename:"SuccessResponse",data:await _nodejs.gqlNodeToExternalNodeFull.call(void 0, n.updateNode,this.#e)}:null:null}async fileContent({fileId:e,onDownloadProgress:t,progressDecrypt:r,signal:o}){const{fileContent:s}=await this.#r("query",{scalars:{Bytes:{decode:i=>(console.log(i,typeof i),Uint8Array.from([1,2,3])),encode:i=>i.toString()}}})({fileContent:[{fileId:e},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on FileContentResponse":{__typename:!0,file:{"...on FileContentCloud":{__typename:!0,parts:{contentUrl:!0,order:!0,md5:!0},key:!0,publicKey:!0,totalSize:!0,md5:!0,md5Encrypted:!0},"...on FileContentLite":{__typename:!0,content:!0,id:!0,key:!0,publicKey:!0,md5:!0,md5Encrypted:!0,totalSize:!0},"...on FileContentReceivedMail":{__typename:!0,maybeParts:{contentUrl:!0,order:!0,md5:!0},maybeContent:!0,key:!0,senderPublicKey:!0,totalSize:!0,md5:!0,md5Encrypted:!0},"...on FileContentSentMail":{__typename:!0,maybeParts:{contentUrl:!0,order:!0,md5:!0},maybeContent:!0,key:!0,totalSize:!0,md5:!0,md5Encrypted:!0}}}}]});if(!s)return null;if(s.__typename==="ErrorAccessDenied"||s.__typename==="ErrorBasic")return s;const n=s.file;if(!n)return null;const u={},d=(i,m)=>{u[i]=m;const y=Object.values(u).reduce((f,g)=>f+g.transferredBytes,0),c=Number(n.totalSize);_optionalChain([t, 'optionalCall', _17 => _17({percent:y/c,totalBytes:c,transferredBytes:y})])},l=async i=>{const m=new Array,y=async c=>{const f=new Uint8Array(await _ky2.default.get(c.contentUrl,{timeout:!1,onDownloadProgress:D=>d(c.order,D),signal:o}).arrayBuffer());if(await _md5js.md5.call(void 0, f)!==c.md5)throw new Error(`Invalid md5 for part ${c.order} of file ${e}`);m.push({data:f,order:c.order})};return await _utilsjs.promiseAllLimit.call(void 0, 3,i.map(c=>()=>y(c))),_utilsjs.concatenate.call(void 0, ...m.sort((c,f)=>c.order-f.order).map(c=>c.data))},E=async i=>{if(await _md5js.md5.call(void 0, i)!==n.md5Encrypted)throw new Error("Encrypted content does not match");const y=_indexjs3.decryptCryptoBox.call(void 0, _sodiumjs.sodium.from_hex(n.key),n.__typename==="FileContentReceivedMail"?n.senderPublicKey:n.__typename==="FileContentCloud"?n.publicKey:this.#e.publicKey,this.#e.privateKey),c=await _sodiumjs3.decrypt.call(void 0, y,i,r,o);if(await _md5js.md5.call(void 0, c)!==n.md5)throw new Error("Content does not match");return _indexjs5.uncompress.call(void 0, c)},F=n.__typename==="FileContentLite"?n.content:n.__typename==="FileContentCloud"?await l(n.parts):n.maybeContent?n.maybeContent:n.maybeParts?await l(n.maybeParts):null;return F?{__typename:"SuccessResponse",data:await E(F)}:null}async deleteFile({fileId:e,nodeId:t}){const{deleteFile:r}=await this.#r("mutation")({deleteFile:[{fileId:e,nodeId:t},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotExist":{__typename:!0,message:!0},"...on DeleteFileResponse":{__typename:!0,deleteFile:!0}}]});return r?r.__typename==="ErrorAccessDenied"||r.__typename==="ErrorNotExist"?r:{__typename:"SuccessResponse",data:r.deleteFile}:null}async deleteNode({nodeId:e}){const{deleteNode:t}=await this.#r("mutation")({deleteNode:[{id:e},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on DeleteNodeResponse":{__typename:!0,deleteNode:!0}}]});return t?t.__typename==="ErrorAccessDenied"?t:{__typename:"SuccessResponse",data:t.deleteNode}:null}async emptyTrash(){const{emptyCloudTrash:e}=await this.#r("mutation")({emptyCloudTrash:{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on EmptyCloudTrashResponse":{__typename:!0,emptyCloudTrash:!0}}});return e?e.__typename==="ErrorAccessDenied"?e:e.emptyCloudTrash?{__typename:"SuccessResponse",data:e.emptyCloudTrash}:null:null}async recoverNode(e){const{recoverNode:t}=await this.#r("mutation")({recoverNode:[{id:e},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotExist":{__typename:!0,message:!0},"...on RecoverNodeResponse":{__typename:!0,recoverNode:!0}}]});return t?t.__typename==="ErrorAccessDenied"||t.__typename==="ErrorNotExist"?t:{__typename:"SuccessResponse",data:_nullishCoalesce(t.recoverNode, () => (!1))}:null}async moveNodes({nodeIds:e,parentNodeId:t}){const{moveNodes:r}=await this.#r("mutation")({moveNodes:[{nodeIds:e,parentNodeId:t},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on MoveNodesResponse":{__typename:!0,moveNodes:!0}}]});return r?r.__typename==="ErrorAccessDenied"?r:{__typename:"SuccessResponse",data:_nullishCoalesce(r.moveNodes, () => (!1))}:null}async saveInCloud({fileId:e,name:t,nodeId:r}){if(r&&!_cachejs.nodesCache.has(r)&&(await this.node({id:r}),!_cachejs.nodesCache.has(r)))return{__typename:"ErrorBasic",message:`The node ${r} does not exists`};let o="";const s=_cachejs.filesCache.get(e);if(s)o=s.key;else{await this.fileMetadata({id:e});const i=_nullishCoalesce(_cachejs.filesCache.get(e), () => (null));if(i)o=i.key;else{const m=await this.#t.mail.receivedMails();if(!m||m.__typename!=="SuccessResponse")return null;const y=m.data.find(g=>g.files.some(D=>D.id===e));if(!y)return{__typename:"ErrorBasic",message:`Can't find mail with the file ${e}`};const c=y.files.find(g=>g.id===e);if(!c)return{__typename:"ErrorBasic",message:`Can't find mail with the file ${e}`};const f=_indexjs3.decryptCryptoBox.call(void 0, _sodiumjs.sodium.from_hex(c.key),y.sender.publicKey,this.#e.privateKey);o=_sodiumjs.sodium.to_hex(f)}}if(o==="")return{__typename:"ErrorBasic",message:"Unexpected error 3"};o=_sodiumjs.sodium.to_hex(_indexjs3.encryptCryptoBox.call(void 0, _sodiumjs.sodium.from_hex(o),this.#e.publicKey,this.#e.privateKey));const n=_filejs.secretstreamKeygen.call(void 0, ),u=await _indexjs.encryptName.call(void 0, t,_sodiumjs.sodium.to_hex(n)),d=_sodiumjs.sodium.to_hex(_indexjs3.encryptCryptoBox.call(void 0, n,this.#e.publicKey,this.#e.privateKey)),{saveInCloud:l}=await this.#r("mutation")({saveInCloud:[{fileId:e,key:o,nodeId:r,filename:u,nameKey:d},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on ErrorLimit":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on ErrorNotExist":{__typename:!0,message:!0},"...on SaveInCloudResponse":{__typename:!0,saveInCloud:_selectorsjs.nodeFullSelector}}]});if(!l)return null;if(l.__typename==="ErrorAccessDenied"||l.__typename==="ErrorNotFound"||l.__typename==="ErrorLimit"||l.__typename==="ErrorBasic"||l.__typename==="ErrorNotExist")return l;if(!l.saveInCloud)return null;const E=await _nodejs.gqlNodeToExternalNodeFull.call(void 0, l.saveInCloud,this.#e),F=_optionalChain([E, 'access', _18 => _18.parent, 'optionalAccess', _19 => _19.users, 'access', _20 => _20.find, 'call', _21 => _21(([i])=>i.publicKey===this.#e.publicKey)]);if(F&&["admin","write"].includes(F[1])){const i=_nullishCoalesce(_optionalChain([E, 'access', _22 => _22.parent, 'optionalAccess', _23 => _23.users, 'access', _24 => _24.filter, 'call', _25 => _25(([m])=>m.publicKey!==this.#e.publicKey)]), () => ([]));await Promise.all(i.map(([m,y])=>this.shareNode({nodeId:E.id,rights:y,userId:m.id})))}return{__typename:"SuccessResponse",data:E}}__init() {this.perNode=async(e,t)=>{let r=_cachejs.nodesCache.get(e);if(!r&&(await this.node({id:e}),r=_cachejs.nodesCache.get(e),!r))return null;const o=_optionalChain([r, 'access', _26 => _26.access, 'optionalAccess', _27 => _27.nameKey]);return o?{id:r.id,nameKey:_sodiumjs.sodium.to_hex(_indexjs3.encryptCryptoBox.call(void 0, _sodiumjs.sodium.from_hex(o),t,this.#e.privateKey)),files:"history"in r?r.history.map(s=>({id:s.id,key:_sodiumjs.sodium.to_hex(_indexjs3.encryptCryptoBox.call(void 0, _sodiumjs.sodium.from_hex(s.key),t,this.#e.privateKey))})):[]}:null}}}exports.SecrecyCloudClient = pe;
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios);var _ky = require('ky'); var _ky2 = _interopRequireDefault(_ky);var _indexjs = require('../index.js');var _cachejs = require('../cache.js');var _filejs = require('../crypto/file.js');var _indexjs3 = require('../crypto/index.js');var _indexjs5 = require('../minify/index.js');var _sodiumjs = require('../sodium.js');var _utilsjs = require('../utils/utils.js');var _md5js = require('../worker/md5.js');var _sodiumjs3 = require('../worker/sodium.js');var _filejs3 = require('./convert/file.js');var _nodejs = require('./convert/node.js');var _selectorsjs = require('./types/selectors.js');class pe{#t;#e;#r;constructor(e,t,r){;pe.prototype.__init.call(this);this.#t=e,this.#e=t,this.#r=r}async addFileToHistory({fileId:e,nodeId:t}){const{addFileToHistory:r}=await this.#r("mutation")({addFileToHistory:[{fileId:e,nodeId:t},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotExist":{__typename:!0,message:!0},"...on AddFileToHistoryResponse":{__typename:!0,addFileToHistory:_selectorsjs.nodeFullSelector}}]});if(!r)return null;if(r.__typename==="ErrorAccessDenied"||r.__typename==="ErrorNotExist")return r;const o=await _nodejs.gqlNodeFullToInternalFull.call(void 0, r.addFileToHistory,this.#e),n=o.history.find(i=>i.id===e);if(n){const i=o.users.filter(([l])=>l.publicKey!==this.#e.publicKey),d={fileId:n.id,users:i.map(([l])=>({id:l.id,key:_sodiumjs.sodium.to_hex(_indexjs3.encryptCryptoBox.call(void 0, _sodiumjs.sodium.from_hex(n.key),this.#e.publicKey,this.#e.privateKey))}))};await this.#r("mutation")({shareFileInHistory:[{input:d,nodeId:t},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on ShareFileInHistoryResponse":{__typename:!0,shareFileInHistory:!0}}]})}return{__typename:"SuccessResponse",data:_nodejs.internalNodeToNode.call(void 0, o)}}async uploadFile({file:e,encryptProgress:t,uploadProgress:r,signal:o}){const n=_filejs.secretstreamKeygen.call(void 0, ),s=e instanceof File?new Uint8Array(await e.arrayBuffer()):e,i=_indexjs5.compress.call(void 0, s),{data:d,md5:l,md5Encrypted:h}=await _sodiumjs3.encrypt.call(void 0, n,i,t,o),F=_indexjs3.encryptCryptoBox.call(void 0, n,this.#e.publicKey,this.#e.privateKey),{uploadFile:a}=await this.#r("mutation",{scalars:{Json:{encode:u=>JSON.stringify(u),decode:u=>JSON.parse(u)},DateTime:{decode:u=>new Date(u),encode:u=>u.toISOString()},BigInt:{decode:u=>BigInt(u),encode:u=>u.toString()}}})({uploadFile:[{fileSize:d.byteLength,fileSizeBefore:s.byteLength,fileKey:_sodiumjs.sodium.to_hex(F),md5Encrypted:h,md5:l},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBadRequest":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on UploadFileResponse":{__typename:!0,uploadFile:{fileId:!0,filePartSize:!0,parts:{fields:!0,order:!0,url:!0}}}}]});if(!a)return null;if(a.__typename==="ErrorAccessDenied"||a.__typename==="ErrorBadRequest"||a.__typename==="ErrorNotFound")return a;if(!a.uploadFile)return null;if(_optionalChain([r, 'optionalCall', _4 => _4({total:d.byteLength,current:0,percent:0})]),a.uploadFile.parts.length===0)return _optionalChain([r, 'optionalCall', _5 => _5({total:d.byteLength,current:d.byteLength,percent:1})]),{__typename:"SuccessResponse",data:a.uploadFile.fileId};const m=async(u,E)=>{if(!a.uploadFile)return null;const{uploadFilePartEnd:_}=await this.#r("mutation")({uploadFilePartEnd:[{fileId:a.uploadFile.fileId,md5:u,order:E},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on UploadFilePartEndResponse":{__typename:!0,uploadFilePartEnd:!0}}]});return _?_.__typename==="ErrorAccessDenied"?_:{__typename:"SuccessResponse",data:_.uploadFilePartEnd}:null},y=async()=>{if(!a.uploadFile)return null;const{uploadFileEnd:u}=await this.#r("mutation")({uploadFileEnd:[{fileId:a.uploadFile.fileId},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on UploadFileEndResponse":{__typename:!0,uploadFileEnd:!0}}]});return u?u.__typename==="ErrorAccessDenied"?u:u.uploadFileEnd?{__typename:"SuccessResponse",data:u.uploadFileEnd}:null:null},c=new Array;for(const[u,E]of _utilsjs.enumerate.call(void 0, _utilsjs.chunks.call(void 0, d,Number(a.uploadFile.filePartSize))))c.push({order:u+1,data:E,md5:await _md5js.md5.call(void 0, E)});const f={},g=(u,E)=>{f[u]=E;const _=Object.values(f).reduce((w,K)=>w+K.loaded,0);_optionalChain([r, 'optionalCall', _6 => _6({percent:_/d.byteLength,total:d.byteLength,current:_})])},S=async u=>{if(!a.uploadFile)return;const E=new FormData,_=c.find(w=>w.order===u.order);if(!!_){for(const[w,K]of Object.entries(u.fields))E.append(w,K);E.append("file",new Blob([_.data]),`${a.uploadFile.fileId}-${_.order}`),await _axios2.default.post(u.url,E,{onUploadProgress:w=>g(u.order,w),signal:o}),await m(_.md5,_.order)}};if(!a.uploadFile)return null;await _utilsjs.promiseAllLimit.call(void 0, 3,a.uploadFile.parts.map(u=>()=>S(u)));const R=await y();return R?R.__typename==="ErrorAccessDenied"?R:{__typename:"SuccessResponse",data:R.data}:null}async uploadFileInCloud({file:e,name:t,nodeId:r,encryptProgress:o,uploadProgress:n,signal:s}){const i=await this.uploadFile({file:e,encryptProgress:o,uploadProgress:n,signal:s});if(!i)return null;if(i.__typename==="ErrorAccessDenied"||i.__typename==="ErrorBadRequest"||i.__typename==="ErrorNotFound")return i;const d=await this.saveInCloud({fileId:i.data,name:t,nodeId:r});return d?d.__typename==="ErrorAccessDenied"||d.__typename==="ErrorBasic"||d.__typename==="ErrorLimit"||d.__typename==="ErrorNotFound"?d:{__typename:"SuccessResponse",data:d.data}:null}async deletedNodes(){const{deletedNodes:e}=await this.#r("query")({deletedNodes:{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on DeletedNodesResponse":{__typename:!0,deletedNodes:_selectorsjs.nodeSelector}}});if(!e)return null;if(e.__typename==="ErrorAccessDenied")return e;const t=new Array;for(const r of e.deletedNodes)t.push(await _nodejs.gqlNodeToExternal.call(void 0, r,this.#e));return{__typename:"SuccessResponse",data:t}}async sharedNodes(){const{sharedNodes:e}=await this.#r("query")({sharedNodes:{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on SharedNodesResponse":{__typename:!0,sharedNodes:_selectorsjs.nodeSelector}}});if(!e)return null;if(e.__typename==="ErrorAccessDenied")return e;const t=new Array;for(const r of e.sharedNodes)t.push(await _nodejs.gqlNodeToExternal.call(void 0, r,this.#e));return{__typename:"SuccessResponse",data:t}}async nodesSharedWithMe(e){const{nodesSharedWithMe:t}=await this.#r("query")({nodesSharedWithMe:[{type:e},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on NodesSharedWithMeResponse":{__typename:!0,nodesSharedWithMe:_selectorsjs.nodeSelector}}]});if(!t)return null;if(t.__typename==="ErrorAccessDenied")return t;const r=new Array;for(const o of t.nodesSharedWithMe)r.push(await _nodejs.gqlNodeToExternal.call(void 0, o,this.#e));return{__typename:"SuccessResponse",data:r}}async deleteNodeSharing({nodeId:e,userId:t}){const{deleteNodeSharing:r}=await this.#r("mutation")({deleteNodeSharing:[{nodeId:e,userId:t},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on DeleteNodeSharingResponse":{__typename:!0,deleteNodeSharing:!0}}]});return r?r.__typename==="ErrorAccessDenied"?r:{__typename:"SuccessResponse",data:r.deleteNodeSharing}:null}async duplicateNode({nodeId:e,folderId:t,customName:r}){let o=_cachejs.nodesCache.get(e);if(!o&&(await this.node({id:e}),o=_cachejs.nodesCache.get(e),!o))throw new Error(`Node (${e}) does not exists`);if(!_optionalChain([o, 'access', _7 => _7.access, 'optionalAccess', _8 => _8.nameKey]))throw new Error(`Can't have access to node ${e}`);r=r?await _indexjs.encryptName.call(void 0, r,o.access.nameKey):null;const{duplicateNode:n}=await this.#r("mutation")({duplicateNode:[{nodeId:e,folderId:t,customName:r},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on DuplicateNodeResponse":{__typename:!0,duplicateNode:!0}}]});return n?n.__typename==="ErrorAccessDenied"||n.__typename==="ErrorNotFound"?n:{__typename:"SuccessResponse",data:n.duplicateNode}:null}async deleteNodeCloudTrash({ids:e}){const{deleteNodeCloudTrash:t}=await this.#r("mutation")({deleteNodeCloudTrash:[{ids:e},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on DeleteNodeCloudTrashResponse":{__typename:!0,deleteNodeCloudTrash:!0}}]});return t?t.__typename==="ErrorAccessDenied"?t:{__typename:"SuccessResponse",data:_nullishCoalesce(t.deleteNodeCloudTrash, () => (!1))}:null}async createFolder({name:e,parentFolderId:t}){const r=_filejs.secretstreamKeygen.call(void 0, ),o=await _indexjs.encryptName.call(void 0, e,_sodiumjs.sodium.to_hex(r)),n=_indexjs3.encryptCryptoBox.call(void 0, r,this.#e.publicKey,this.#e.privateKey),{createFolder:s}=await this.#r("mutation")({createFolder:[{name:o,parentFolderId:t,key:_sodiumjs.sodium.to_hex(n)},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotExist":{__typename:!0,message:!0},"...on CreateFolderResponse":{__typename:!0,createFolder:_selectorsjs.nodeFullSelector}}]});if(!s)return null;if(s.__typename==="ErrorAccessDenied"||s.__typename==="ErrorNotExist")return s;if(!s.createFolder)return null;const i=await _nodejs.gqlNodeToExternalNodeFull.call(void 0, s.createFolder,this.#e),d=_nullishCoalesce(_optionalChain([i, 'access', _9 => _9.parent, 'optionalAccess', _10 => _10.users, 'optionalAccess', _11 => _11.filter, 'call', _12 => _12(([l])=>l.publicKey!==this.#e.publicKey)]), () => ([]));return d.length&&await Promise.all(d.map(([l,h])=>this.shareNode({nodeId:i.id,rights:h,userId:l.id}))),{__typename:"SuccessResponse",data:i}}async node({id:e,deleted:t}={}){const{node:r}=await this.#r("query")({node:[{deleted:t,id:e},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on NodeResponse":{__typename:!0,node:_selectorsjs.nodeFullSelector}}]});return r?r.__typename==="ErrorAccessDenied"?r:r.node?{__typename:"SuccessResponse",data:await _nodejs.gqlNodeToExternalNodeFull.call(void 0, r.node,this.#e)}:null:null}async fileMetadata({id:e}){const{file:t}=await this.#r("query")({file:[{id:e},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on FileQueryResponse":{__typename:!0,file:_selectorsjs.fileSelector}}]});return t?t.__typename==="ErrorAccessDenied"?t:t.file?{__typename:"SuccessResponse",data:_filejs3.gqlFileToExternal.call(void 0, t.file,this.#e)}:null:null}async shareNode({nodeId:e,userId:t,rights:r}){const o=await this.#t.user({userId:t,withPublicKey:!0});if(!o||o.__typename==="ErrorNotFound")return o;const{shareNode:n}=await this.#r("mutation")({shareNode:[{nodeId:e,userId:t},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on ShareNodeResponse":{__typename:!0,nodes:!0}}]});if(!n)return null;if(n.__typename==="ErrorAccessDenied"||n.__typename==="ErrorNotFound")return n;const s={nodes:[]};for(const d of n.nodes){const l=await this.perNode(d,o.data.publicKey);l&&s.nodes.push(l)}const{shareNodeFinish:i}=await this.#r("mutation")({shareNodeFinish:[{rights:r,userId:t,shareNodes:s},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on ShareNodeFinishResponse":{__typename:!0,shareNodeFinish:!0}}]});return i?i.__typename==="ErrorAccessDenied"||i.__typename==="ErrorNotFound"?i:{__typename:"SuccessResponse",data:_nullishCoalesce(i.shareNodeFinish, () => (!1))}:null}async updateNode({nodeId:e,name:t,isFavorite:r,deletedAt:o}){let n=_cachejs.nodesCache.get(e);if(!n&&(await this.node({id:e}),n=_cachejs.nodesCache.get(e),!n))throw`Can't find Node ${e}`;if(!_optionalChain([n, 'access', _13 => _13.access, 'optionalAccess', _14 => _14.nameKey]))throw new Error(`Can't have access to node ${e}`);t=t?_optionalChain([n, 'access', _15 => _15.access, 'optionalAccess', _16 => _16.nameKey])?await _indexjs.encryptName.call(void 0, t,n.access.nameKey):t:null;const{updateNode:s}=await this.#r("mutation")({updateNode:[{nodeId:e,name:t,isFavorite:r,deletedAt:o},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotExist":{__typename:!0,message:!0},"...on UpdateNodeResponse":{__typename:!0,updateNode:_selectorsjs.nodeFullSelector}}]});return s?s.__typename==="ErrorAccessDenied"||s.__typename==="ErrorNotExist"?s:s.updateNode?{__typename:"SuccessResponse",data:await _nodejs.gqlNodeToExternalNodeFull.call(void 0, s.updateNode,this.#e)}:null:null}async fileContent({fileId:e,onDownloadProgress:t,progressDecrypt:r,signal:o}){const{fileContent:n}=await this.#r("query",{scalars:{Bytes:{decode:a=>(console.log(a,typeof a),Uint8Array.from([1,2,3])),encode:a=>a.toString()}}})({fileContent:[{fileId:e},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on ErrorBadRequest":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on FileContentResponse":{__typename:!0,file:{"...on FileContentCloud":{__typename:!0,parts:{contentUrl:!0,order:!0,md5:!0},key:!0,publicKey:!0,totalSize:!0,md5:!0,md5Encrypted:!0},"...on FileContentLite":{__typename:!0,content:!0,id:!0,key:!0,publicKey:!0,md5:!0,md5Encrypted:!0,totalSize:!0},"...on FileContentReceivedMail":{__typename:!0,maybeParts:{contentUrl:!0,order:!0,md5:!0},maybeContent:!0,key:!0,senderPublicKey:!0,totalSize:!0,md5:!0,md5Encrypted:!0},"...on FileContentSentMail":{__typename:!0,maybeParts:{contentUrl:!0,order:!0,md5:!0},maybeContent:!0,key:!0,totalSize:!0,md5:!0,md5Encrypted:!0}}}}]});if(!n)return null;if(n.__typename==="ErrorAccessDenied"||n.__typename==="ErrorBadRequest"||n.__typename==="ErrorNotFound"||n.__typename==="ErrorBasic")return n;const s=n.file;if(!s)return null;const i={},d=(a,m)=>{i[a]=m;const y=Object.values(i).reduce((f,g)=>f+g.transferredBytes,0),c=Number(s.totalSize);_optionalChain([t, 'optionalCall', _17 => _17({percent:y/c,totalBytes:c,transferredBytes:y})])},l=async a=>{const m=new Array,y=async c=>{const f=new Uint8Array(await _ky2.default.get(c.contentUrl,{timeout:!1,onDownloadProgress:S=>d(c.order,S),signal:o}).arrayBuffer());if(await _md5js.md5.call(void 0, f)!==c.md5)throw new Error(`Invalid md5 for part ${c.order} of file ${e}`);m.push({data:f,order:c.order})};return await _utilsjs.promiseAllLimit.call(void 0, 3,a.map(c=>()=>y(c))),_utilsjs.concatenate.call(void 0, ...m.sort((c,f)=>c.order-f.order).map(c=>c.data))},h=async a=>{if(await _md5js.md5.call(void 0, a)!==s.md5Encrypted)throw new Error("Encrypted content does not match");const y=_indexjs3.decryptCryptoBox.call(void 0, _sodiumjs.sodium.from_hex(s.key),s.__typename==="FileContentReceivedMail"?s.senderPublicKey:s.__typename==="FileContentCloud"?s.publicKey:this.#e.publicKey,this.#e.privateKey),c=await _sodiumjs3.decrypt.call(void 0, y,a,r,o);if(await _md5js.md5.call(void 0, c)!==s.md5)throw new Error("Content does not match");return _indexjs5.uncompress.call(void 0, c)},F=s.__typename==="FileContentLite"?s.content:s.__typename==="FileContentCloud"?await l(s.parts):s.maybeContent?s.maybeContent:s.maybeParts?await l(s.maybeParts):null;return F?{__typename:"SuccessResponse",data:await h(F)}:null}async deleteFile({fileId:e,nodeId:t}){const{deleteFile:r}=await this.#r("mutation")({deleteFile:[{fileId:e,nodeId:t},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on DeleteFileResponse":{__typename:!0,deleteFile:!0}}]});return r?r.__typename==="ErrorAccessDenied"||r.__typename==="ErrorNotFound"?r:{__typename:"SuccessResponse",data:r.deleteFile}:null}async deleteNode({nodeId:e}){const{deleteNode:t}=await this.#r("mutation")({deleteNode:[{id:e},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on DeleteNodeResponse":{__typename:!0,deleteNode:!0}}]});return t?t.__typename==="ErrorAccessDenied"?t:{__typename:"SuccessResponse",data:t.deleteNode}:null}async emptyTrash(){const{emptyCloudTrash:e}=await this.#r("mutation")({emptyCloudTrash:{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on EmptyCloudTrashResponse":{__typename:!0,emptyCloudTrash:!0}}});return e?e.__typename==="ErrorAccessDenied"?e:e.emptyCloudTrash?{__typename:"SuccessResponse",data:e.emptyCloudTrash}:null:null}async recoverNode(e){const{recoverNode:t}=await this.#r("mutation")({recoverNode:[{id:e},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotExist":{__typename:!0,message:!0},"...on RecoverNodeResponse":{__typename:!0,recoverNode:!0}}]});return t?t.__typename==="ErrorAccessDenied"||t.__typename==="ErrorNotExist"?t:{__typename:"SuccessResponse",data:_nullishCoalesce(t.recoverNode, () => (!1))}:null}async moveNodes({nodeIds:e,parentNodeId:t}){const{moveNodes:r}=await this.#r("mutation")({moveNodes:[{nodeIds:e,parentNodeId:t},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on MoveNodesResponse":{__typename:!0,moveNodes:!0}}]});return r?r.__typename==="ErrorAccessDenied"?r:{__typename:"SuccessResponse",data:_nullishCoalesce(r.moveNodes, () => (!1))}:null}async saveInCloud({fileId:e,name:t,nodeId:r}){if(r&&!_cachejs.nodesCache.has(r)&&(await this.node({id:r}),!_cachejs.nodesCache.has(r)))return{__typename:"ErrorBasic",message:`The node ${r} does not exists`};let o="";const n=_cachejs.filesCache.get(e);if(n)o=n.key;else{await this.fileMetadata({id:e});const a=_nullishCoalesce(_cachejs.filesCache.get(e), () => (null));if(a)o=a.key;else{const m=await this.#t.mail.receivedMails();if(!m||m.__typename!=="SuccessResponse")return null;const y=m.data.find(g=>g.files.some(S=>S.id===e));if(!y)return{__typename:"ErrorBasic",message:`Can't find mail with the file ${e}`};const c=y.files.find(g=>g.id===e);if(!c)return{__typename:"ErrorBasic",message:`Can't find mail with the file ${e}`};const f=_indexjs3.decryptCryptoBox.call(void 0, _sodiumjs.sodium.from_hex(c.key),y.sender.publicKey,this.#e.privateKey);o=_sodiumjs.sodium.to_hex(f)}}if(o==="")return{__typename:"ErrorBasic",message:"Unexpected error 3"};o=_sodiumjs.sodium.to_hex(_indexjs3.encryptCryptoBox.call(void 0, _sodiumjs.sodium.from_hex(o),this.#e.publicKey,this.#e.privateKey));const s=_filejs.secretstreamKeygen.call(void 0, ),i=await _indexjs.encryptName.call(void 0, t,_sodiumjs.sodium.to_hex(s)),d=_sodiumjs.sodium.to_hex(_indexjs3.encryptCryptoBox.call(void 0, s,this.#e.publicKey,this.#e.privateKey)),{saveInCloud:l}=await this.#r("mutation")({saveInCloud:[{fileId:e,key:o,nodeId:r,filename:i,nameKey:d},{"...on ErrorAccessDenied":{__typename:!0,message:!0},"...on ErrorNotFound":{__typename:!0,message:!0},"...on ErrorLimit":{__typename:!0,message:!0},"...on ErrorBasic":{__typename:!0,message:!0},"...on ErrorNotExist":{__typename:!0,message:!0},"...on SaveInCloudResponse":{__typename:!0,saveInCloud:_selectorsjs.nodeFullSelector}}]});if(!l)return null;if(l.__typename==="ErrorAccessDenied"||l.__typename==="ErrorNotFound"||l.__typename==="ErrorLimit"||l.__typename==="ErrorBasic")return l;if(!l.saveInCloud)return null;const h=await _nodejs.gqlNodeToExternalNodeFull.call(void 0, l.saveInCloud,this.#e),F=_optionalChain([h, 'access', _18 => _18.parent, 'optionalAccess', _19 => _19.users, 'access', _20 => _20.find, 'call', _21 => _21(([a])=>a.publicKey===this.#e.publicKey)]);if(F&&["admin","write"].includes(F[1])){const a=_nullishCoalesce(_optionalChain([h, 'access', _22 => _22.parent, 'optionalAccess', _23 => _23.users, 'access', _24 => _24.filter, 'call', _25 => _25(([m])=>m.publicKey!==this.#e.publicKey)]), () => ([]));await Promise.all(a.map(([m,y])=>this.shareNode({nodeId:h.id,rights:y,userId:m.id})))}return{__typename:"SuccessResponse",data:h}}__init() {this.perNode=async(e,t)=>{let r=_cachejs.nodesCache.get(e);if(!r&&(await this.node({id:e}),r=_cachejs.nodesCache.get(e),!r))return null;const o=_optionalChain([r, 'access', _26 => _26.access, 'optionalAccess', _27 => _27.nameKey]);return o?{id:r.id,nameKey:_sodiumjs.sodium.to_hex(_indexjs3.encryptCryptoBox.call(void 0, _sodiumjs.sodium.from_hex(o),t,this.#e.privateKey)),files:"history"in r?r.history.map(n=>({id:n.id,key:_sodiumjs.sodium.to_hex(_indexjs3.encryptCryptoBox.call(void 0, _sodiumjs.sodium.from_hex(n.key),t,this.#e.privateKey))})):[]}:null}}}exports.SecrecyCloudClient = pe;
|
|
2
2
|
//# sourceMappingURL=SecrecyCloudClient.cjs.map
|