From 07b6a3cddeefe7c071693df371a3cc4a3411d101 Mon Sep 17 00:00:00 2001 From: Tom J Date: Mon, 12 Oct 2020 10:17:41 +0000 Subject: [PATCH 01/13] issue 2689 reorganize api classes --- .../compose-modules/compose-draft-module.ts | 2 +- extension/chrome/settings/index.ts | 3 +- extension/chrome/settings/modules/help.ts | 4 +- extension/chrome/settings/setup.ts | 2 +- extension/js/common/api/backend.ts | 26 --------- extension/js/common/api/flowcrypt-website.ts | 57 +++++++++++++++++++ extension/js/common/api/google-auth.ts | 2 +- .../common/api/{ => key-server}/attester.ts | 12 ++-- .../api/{ => key-server}/key-manager.ts | 4 +- .../js/common/api/{ => key-server}/sks.ts | 8 +-- .../js/common/api/{ => key-server}/wkd.ts | 14 ++--- extension/js/common/api/pub-lookup.ts | 8 +-- .../js/common/{api => browser}/chrome.ts | 6 +- .../js/common/platform/store/acct-store.ts | 2 +- .../js/common/platform/store/global-store.ts | 2 +- extension/js/common/settings.ts | 2 +- 16 files changed, 93 insertions(+), 61 deletions(-) create mode 100644 extension/js/common/api/flowcrypt-website.ts rename extension/js/common/api/{ => key-server}/attester.ts (93%) rename extension/js/common/api/{ => key-server}/key-manager.ts (93%) rename extension/js/common/api/{ => key-server}/sks.ts (93%) rename extension/js/common/api/{ => key-server}/wkd.ts (86%) rename extension/js/common/{api => browser}/chrome.ts (95%) diff --git a/extension/chrome/elements/compose-modules/compose-draft-module.ts b/extension/chrome/elements/compose-modules/compose-draft-module.ts index ca6f782cfb2..e2923e3efa9 100644 --- a/extension/chrome/elements/compose-modules/compose-draft-module.ts +++ b/extension/chrome/elements/compose-modules/compose-draft-module.ts @@ -15,7 +15,7 @@ import { GmailRes } from '../../../js/common/api/email-provider/gmail/gmail-pars import { MsgBlockParser } from '../../../js/common/core/msg-block-parser.js'; import { NewMsgData } from './compose-types.js'; import { MsgUtil } from '../../../js/common/core/crypto/pgp/msg-util.js'; -import { storageLocalGet, storageLocalSet, storageLocalRemove } from '../../../js/common/api/chrome.js'; +import { storageLocalGet, storageLocalSet, storageLocalRemove } from '../../../js/common/browser/chrome.js'; import { Ui } from '../../../js/common/browser/ui.js'; import { Url } from '../../../js/common/core/common.js'; import { Xss } from '../../../js/common/platform/xss.js'; diff --git a/extension/chrome/settings/index.ts b/extension/chrome/settings/index.ts index 26432760f77..e52a55f61dd 100644 --- a/extension/chrome/settings/index.ts +++ b/extension/chrome/settings/index.ts @@ -26,6 +26,7 @@ import { GlobalStore } from '../../js/common/platform/store/global-store.js'; import { PassphraseStore } from '../../js/common/platform/store/passphrase-store.js'; import Swal from 'sweetalert2'; import { Subscription } from '../../js/common/subscription.js'; +import { FlowCryptWebsite } from '../../js/common/api/flowcrypt-website.js'; View.run(class SettingsView extends View { @@ -270,7 +271,7 @@ View.run(class SettingsView extends View { $('.hide_if_setup_not_done').css('display', 'none'); } } - Backend.retrieveBlogPosts().then(posts => { // do not await because may take a while + FlowCryptWebsite.retrieveBlogPosts().then(posts => { // do not await because may take a while for (const post of posts) { const html = `
${Xss.escape(post.title.trim())} ${Xss.escape(post.date.trim())}
`; Xss.sanitizeAppend('.blog_post_list', html); diff --git a/extension/chrome/settings/modules/help.ts b/extension/chrome/settings/modules/help.ts index 146ad0494e8..7abb047e50f 100644 --- a/extension/chrome/settings/modules/help.ts +++ b/extension/chrome/settings/modules/help.ts @@ -6,13 +6,13 @@ import { Str, Url } from '../../../js/common/core/common.js'; import { ApiErr } from '../../../js/common/api/error/api-error.js'; import { Assert } from '../../../js/common/assert.js'; -import { Backend } from '../../../js/common/api/backend.js'; import { BrowserMsg } from '../../../js/common/browser/browser-msg.js'; import { Catch } from '../../../js/common/platform/catch.js'; import { Ui } from '../../../js/common/browser/ui.js'; import { VERSION } from '../../../js/common/core/const.js'; import { View } from '../../../js/common/view.js'; import { Xss } from '../../../js/common/platform/xss.js'; +import { FlowCryptWebsite } from '../../../js/common/api/flowcrypt-website.js'; View.run(class HelpView extends View { @@ -62,7 +62,7 @@ View.run(class HelpView extends View { Xss.sanitizeRender(target, Ui.spinner('white')); await Ui.delay(50); // give spinner time to load try { - const { sent } = await Backend.helpFeedback(emailVal, `${textVal}\n\n\nFlowCrypt ${Catch.browser().name} ${VERSION}`); + const { sent } = await FlowCryptWebsite.helpFeedback(emailVal, `${textVal}\n\n\nFlowCrypt ${Catch.browser().name} ${VERSION}`); if (sent) { $(target).text('sent!'); await Ui.modal.info(`Message sent! You will find your response in ${emailVal}, check your email later.`); diff --git a/extension/chrome/settings/setup.ts b/extension/chrome/settings/setup.ts index 18e9ebbd766..25d980ff089 100644 --- a/extension/chrome/settings/setup.ts +++ b/extension/chrome/settings/setup.ts @@ -27,7 +27,7 @@ import { Scopes, AcctStoreDict, AcctStore } from '../../js/common/platform/store import { KeyStore } from '../../js/common/platform/store/key-store.js'; import { PassphraseStore } from '../../js/common/platform/store/passphrase-store.js'; import { ContactStore } from '../../js/common/platform/store/contact-store.js'; -import { KeyManager } from '../../js/common/api/key-manager.js'; +import { KeyManager } from '../../js/common/api/key-server/key-manager.js'; import { SetupKeyManagerAutogenModule } from './setup/setup-key-manager-autogen.js'; import Swal from 'sweetalert2'; diff --git a/extension/js/common/api/backend.ts b/extension/js/common/api/backend.ts index b22fba39b37..173b4caee33 100644 --- a/extension/js/common/api/backend.ts +++ b/extension/js/common/api/backend.ts @@ -10,10 +10,8 @@ import { Dict } from '../core/common.js'; import { Att } from '../core/att.js'; import { BACKEND_API_HOST } from '../core/const.js'; import { BackendAuthErr } from './error/api-error.js'; -import { Catch } from '../platform/catch.js'; import { DomainRulesJson } from '../org-rules.js'; import { AcctStore } from '../platform/store/acct-store.js'; -import { Browser } from '../browser/browser.js'; type ProfileUpdate = { alias?: string, name?: string, photo?: string, intro?: string, web?: string, phone?: string, default_message_expire?: number }; @@ -24,14 +22,12 @@ export type SubscriptionInfo = { active?: boolean | null; method?: PaymentMethod export type AwsS3UploadItem = { baseUrl: string, fields: { key: string; file?: Att }, att: Att }; export namespace BackendRes { - export type FcHelpFeedback = { sent: boolean }; export type FcAccountLogin = { registered: boolean, verified: boolean }; export type FcAccount$info = { alias: string, email: string, intro: string, name: string, photo: string, default_message_expire: number }; export type FcAccountGet = { account: FcAccount$info, subscription: SubscriptionInfo, domain_org_rules: DomainRulesJson }; export type FcAccountUpdate = { result: FcAccount$info, updated: boolean }; export type FcAccountSubscribe = { subscription: SubscriptionInfo }; export type FcAccountCheck = { email: string | null, subscription: SubscriptionInfo | null }; - export type FcBlogPost = { title: string, date: string, url: string }; export type FcMsgToken = { token: string }; export type FcMsgUpload = { short: string, admin_code: string }; export type FcLinkMsg = { expire: string, deleted: boolean, url: string, expired: boolean }; @@ -54,13 +50,6 @@ export class Backend extends Api { } as Dict)[type]; } - public static helpFeedback = async (acctEmail: string, message: string): Promise => { - return await Backend.request('help/feedback', { - email: acctEmail, - message, - }); - } - // public static loginWithVerificationEmail = async (account: string, uuid: string, token: string): Promise<{ verified: boolean, subscription: SubscriptionInfo }> => { // const response = await Backend.request('account/login', { // account, @@ -138,21 +127,6 @@ export class Backend extends Api { }); } - public static retrieveBlogPosts = async (): Promise => { - const xml = await Api.ajax({ url: 'https://flowcrypt.com/blog/feed.xml', dataType: 'xml' }, Catch.stackTrace()) as XMLDocument; // tslint:disable-line:no-direct-ajax - const posts: BackendRes.FcBlogPost[] = []; - for (const post of Browser.arrFromDomNodeList(xml.querySelectorAll('entry'))) { - const children = Browser.arrFromDomNodeList(post.childNodes); - const title = children.find(n => n.nodeName.toLowerCase() === 'title')?.textContent; - const date = children.find(n => n.nodeName.toLowerCase() === 'published')?.textContent?.substr(0, 10); - const url = (children.find(n => n.nodeName.toLowerCase() === 'link') as HTMLAnchorElement).getAttribute('href'); - if (title && date && url) { - posts.push({ title, date, url }); - } - } - return posts.slice(0, 5); - } - private static request = async (path: string, vals: Dict, fmt: ReqFmt = 'JSON', addHeaders: Dict = {}, progressCbs?: ProgressCbs): Promise => { return await Backend.apiCall(Backend.url('api'), path, vals, fmt, progressCbs, { 'api-version': '3', ...addHeaders }); } diff --git a/extension/js/common/api/flowcrypt-website.ts b/extension/js/common/api/flowcrypt-website.ts new file mode 100644 index 00000000000..042730b70f9 --- /dev/null +++ b/extension/js/common/api/flowcrypt-website.ts @@ -0,0 +1,57 @@ +/* ©️ 2016 - present FlowCrypt a.s. Limitations apply. Contact human@flowcrypt.com */ + +// tslint:disable:oneliner-object-literal +// tslint:disable:no-null-keyword + +'use strict'; + +import { Api, ProgressCbs, ReqFmt } from './api.js'; +import { Dict } from '../core/common.js'; +import { BACKEND_API_HOST } from '../core/const.js'; +import { Catch } from '../platform/catch.js'; +import { Browser } from '../browser/browser.js'; + +export namespace FlowCryptWebsiteRes { + export type FcHelpFeedback = { sent: boolean }; + export type FcBlogPost = { title: string, date: string, url: string }; +} + +export class FlowCryptWebsite extends Api { + + public static url = (type: 'api' | 'me' | 'pubkey' | 'decrypt' | 'web', resource = '') => { + return ({ + api: BACKEND_API_HOST, + me: `https://flowcrypt.com/me/${resource}`, + pubkey: `https://flowcrypt.com/pub/${resource}`, + decrypt: `https://flowcrypt.com/${resource}`, + web: 'https://flowcrypt.com/', + } as Dict)[type]; + } + + public static helpFeedback = async (acctEmail: string, message: string): Promise => { + return await FlowCryptWebsite.request('help/feedback', { + email: acctEmail, + message, + }); + } + + public static retrieveBlogPosts = async (): Promise => { + const xml = await Api.ajax({ url: 'https://flowcrypt.com/blog/feed.xml', dataType: 'xml' }, Catch.stackTrace()) as XMLDocument; // tslint:disable-line:no-direct-ajax + const posts: FlowCryptWebsiteRes.FcBlogPost[] = []; + for (const post of Browser.arrFromDomNodeList(xml.querySelectorAll('entry'))) { + const children = Browser.arrFromDomNodeList(post.childNodes); + const title = children.find(n => n.nodeName.toLowerCase() === 'title')?.textContent; + const date = children.find(n => n.nodeName.toLowerCase() === 'published')?.textContent?.substr(0, 10); + const url = (children.find(n => n.nodeName.toLowerCase() === 'link') as HTMLAnchorElement).getAttribute('href'); + if (title && date && url) { + posts.push({ title, date, url }); + } + } + return posts.slice(0, 5); + } + + private static request = async (path: string, vals: Dict, fmt: ReqFmt = 'JSON', addHeaders: Dict = {}, progressCbs?: ProgressCbs): Promise => { + return await FlowCryptWebsite.apiCall(FlowCryptWebsite.url('api'), path, vals, fmt, progressCbs, { 'api-version': '3', ...addHeaders }); + } + +} diff --git a/extension/js/common/api/google-auth.ts b/extension/js/common/api/google-auth.ts index f2c077cc219..6aabd280cd8 100644 --- a/extension/js/common/api/google-auth.ts +++ b/extension/js/common/api/google-auth.ts @@ -7,7 +7,7 @@ import { GOOGLE_API_HOST, GOOGLE_OAUTH_SCREEN_HOST, FLAVOR } from '../core/const.js'; import { Url, Value } from '../core/common.js'; -import { tabsQuery, windowsCreate } from './chrome.js'; +import { tabsQuery, windowsCreate } from '../browser/chrome.js'; import { Api } from './api.js'; import { ApiErr } from './error/api-error.js'; import { Backend } from './backend.js'; diff --git a/extension/js/common/api/attester.ts b/extension/js/common/api/key-server/attester.ts similarity index 93% rename from extension/js/common/api/attester.ts rename to extension/js/common/api/key-server/attester.ts index bd1d9d5b08a..5e7b95a58cd 100644 --- a/extension/js/common/api/attester.ts +++ b/extension/js/common/api/key-server/attester.ts @@ -2,12 +2,12 @@ 'use strict'; -import { Api, ReqMethod } from './api.js'; -import { Dict, Str } from '../core/common.js'; -import { PgpClient, PubkeySearchResult } from './pub-lookup.js'; -import { ApiErr } from './error/api-error.js'; -import { OrgRules } from '../org-rules.js'; -import { ATTESTER_API_HOST } from '../core/const.js'; +import { Api, ReqMethod } from './../api.js'; +import { Dict, Str } from '../../core/common.js'; +import { PgpClient, PubkeySearchResult } from './../pub-lookup.js'; +import { ApiErr } from './../error/api-error.js'; +import { OrgRules } from '../../org-rules.js'; +import { ATTESTER_API_HOST } from '../../core/const.js'; type PubCallRes = { responseText: string, getResponseHeader: (n: string) => string | null }; diff --git a/extension/js/common/api/key-manager.ts b/extension/js/common/api/key-server/key-manager.ts similarity index 93% rename from extension/js/common/api/key-manager.ts rename to extension/js/common/api/key-server/key-manager.ts index 4f3e941a2f1..a3f25302380 100644 --- a/extension/js/common/api/key-manager.ts +++ b/extension/js/common/api/key-server/key-manager.ts @@ -5,8 +5,8 @@ 'use strict'; -import { Api, ReqMethod } from './api.js'; -import { Dict } from '../core/common.js'; +import { Api, ReqMethod } from './../api.js'; +import { Dict } from '../../core/common.js'; type LoadPrvRes = { privateKeys: { decryptedPrivateKey: string }[] }; type LoadPubRes = { publicKeys: { publicKey: string }[] }; diff --git a/extension/js/common/api/sks.ts b/extension/js/common/api/key-server/sks.ts similarity index 93% rename from extension/js/common/api/sks.ts rename to extension/js/common/api/key-server/sks.ts index 39975824b34..3b2b0cb27db 100644 --- a/extension/js/common/api/sks.ts +++ b/extension/js/common/api/key-server/sks.ts @@ -2,10 +2,10 @@ 'use strict'; -import { Api } from './api.js'; -import { ApiErr } from './error/api-error.js'; -import { PgpArmor } from '../core/crypto/pgp/pgp-armor.js'; -import { PubkeySearchResult } from './pub-lookup.js'; +import { Api } from './../api.js'; +import { ApiErr } from './../error/api-error.js'; +import { PgpArmor } from '../../core/crypto/pgp/pgp-armor.js'; +import { PubkeySearchResult } from './../pub-lookup.js'; export class Sks extends Api { diff --git a/extension/js/common/api/wkd.ts b/extension/js/common/api/key-server/wkd.ts similarity index 86% rename from extension/js/common/api/wkd.ts rename to extension/js/common/api/key-server/wkd.ts index 143878355c1..38e903f155c 100644 --- a/extension/js/common/api/wkd.ts +++ b/extension/js/common/api/key-server/wkd.ts @@ -2,13 +2,13 @@ 'use strict'; -import { Api } from './api.js'; -import { ApiErr } from './error/api-error.js'; -import { opgp } from '../core/crypto/pgp/openpgpjs-custom.js'; -import { Buf } from '../core/buf.js'; -import { Catch } from '../platform/catch.js'; -import { PubkeySearchResult } from './pub-lookup.js'; -import { KeyUtil } from '../core/crypto/key.js'; +import { Api } from './../api.js'; +import { ApiErr } from './../error/api-error.js'; +import { opgp } from '../../core/crypto/pgp/openpgpjs-custom.js'; +import { Buf } from '../../core/buf.js'; +import { Catch } from '../../platform/catch.js'; +import { PubkeySearchResult } from './../pub-lookup.js'; +import { KeyUtil } from '../../core/crypto/key.js'; // tslint:disable:no-null-keyword // tslint:disable:no-direct-ajax diff --git a/extension/js/common/api/pub-lookup.ts b/extension/js/common/api/pub-lookup.ts index 8065e8ff06c..ab207a42b9e 100644 --- a/extension/js/common/api/pub-lookup.ts +++ b/extension/js/common/api/pub-lookup.ts @@ -2,11 +2,11 @@ 'use strict'; -import { Attester } from './attester.js'; +import { Attester } from './key-server/attester.js'; +import { KeyManager } from './key-server/key-manager.js'; +import { Sks } from './key-server/sks.js'; +import { Wkd } from './key-server/wkd.js'; import { OrgRules } from '../org-rules.js'; -import { Sks } from './sks.js'; -import { KeyManager } from './key-manager.js'; -import { Wkd } from './wkd.js'; export type PgpClient = 'flowcrypt' | 'pgp-other' | null; export type PubkeySearchResult = { pubkey: string | null; pgpClient: PgpClient }; diff --git a/extension/js/common/api/chrome.ts b/extension/js/common/browser/chrome.ts similarity index 95% rename from extension/js/common/api/chrome.ts rename to extension/js/common/browser/chrome.ts index 02f15cbbab1..6cfbd1b4982 100644 --- a/extension/js/common/api/chrome.ts +++ b/extension/js/common/browser/chrome.ts @@ -3,9 +3,9 @@ 'use strict'; import { Catch } from '../platform/catch.js'; -import { ContentScriptWindow } from '../browser/browser-window.js'; -import { Env } from '../browser/env.js'; -import { Ui } from '../browser/ui.js'; +import { ContentScriptWindow } from './browser-window.js'; +import { Env } from './env.js'; +import { Ui } from './ui.js'; import { Url, Dict } from '../core/common.js'; import { AbstractStore } from '../platform/store/abstract-store.js'; diff --git a/extension/js/common/platform/store/acct-store.ts b/extension/js/common/platform/store/acct-store.ts index 7ecbbfb752a..87129f6f4a1 100644 --- a/extension/js/common/platform/store/acct-store.ts +++ b/extension/js/common/platform/store/acct-store.ts @@ -9,7 +9,7 @@ import { SubscriptionInfo, FcUuidAuth } from '../../api/backend.js'; import { DomainRulesJson } from '../../org-rules.js'; import { BrowserMsg, BgNotReadyErr } from '../../browser/browser-msg.js'; import { Ui } from '../../browser/ui.js'; -import { storageLocalGet, storageLocalSet, storageLocalRemove } from '../../api/chrome.js'; +import { storageLocalGet, storageLocalSet, storageLocalRemove } from '../../browser/chrome.js'; import { AbstractStore } from './abstract-store.js'; import { RawStore } from './abstract-store.js'; import { Subscription } from '../../subscription.js'; diff --git a/extension/js/common/platform/store/global-store.ts b/extension/js/common/platform/store/global-store.ts index 669d31a8e00..839e72a7513 100644 --- a/extension/js/common/platform/store/global-store.ts +++ b/extension/js/common/platform/store/global-store.ts @@ -4,7 +4,7 @@ import { BrowserMsg } from '../../browser/browser-msg.js'; import { Env } from '../../browser/env.js'; import { RawStore, AbstractStore } from './abstract-store.js'; import { Dict, Value } from '../../core/common.js'; -import { storageLocalSet, storageLocalGet, storageLocalRemove } from '../../api/chrome.js'; +import { storageLocalSet, storageLocalGet, storageLocalRemove } from '../../browser/chrome.js'; import { Catch } from '../catch.js'; export type StoredAdminCode = { date: number, codes: string[] }; diff --git a/extension/js/common/settings.ts b/extension/js/common/settings.ts index 3c1121d8dba..58ce9aff9cf 100644 --- a/extension/js/common/settings.ts +++ b/extension/js/common/settings.ts @@ -16,7 +16,7 @@ import { Key, KeyUtil } from './core/crypto/key.js'; import { PgpPwd } from './core/crypto/pgp/pgp-password.js'; import { OrgRules } from './org-rules.js'; import { Xss } from './platform/xss.js'; -import { storageLocalGetAll } from './api/chrome.js'; +import { storageLocalGetAll } from './browser/chrome.js'; import { AccountIndex, AcctStore, SendAsAlias } from './platform/store/acct-store.js'; import { GlobalStore } from './platform/store/global-store.js'; import { AbstractStore } from './platform/store/abstract-store.js'; From 772f4f2d2d1c38cc0d1109f98e26972ca8ca1e31 Mon Sep 17 00:00:00 2001 From: Tom J Date: Mon, 12 Oct 2020 10:22:24 +0000 Subject: [PATCH 02/13] moved google apis into email-provider --- .../compose-recipients-module.ts | 4 +-- .../inbox/inbox-modules/inbox-menu-module.ts | 2 +- .../inbox-notification-module.ts | 2 +- .../modules/backup-automatic-module.ts | 2 +- .../chrome/settings/modules/experimental.ts | 2 +- extension/chrome/settings/setup.ts | 2 +- .../js/background_page/background_page.ts | 2 +- .../common/api/email-provider/gmail/gmail.ts | 4 +-- .../{ => email-provider/gmail}/google-auth.ts | 26 +++++++++---------- .../api/{ => email-provider/gmail}/google.ts | 10 +++---- extension/js/common/browser/browser-msg.ts | 2 +- .../js/common/platform/store/acct-store.ts | 2 +- extension/js/common/settings.ts | 2 +- 13 files changed, 31 insertions(+), 31 deletions(-) rename extension/js/common/api/{ => email-provider/gmail}/google-auth.ts (95%) rename extension/js/common/api/{ => email-provider/gmail}/google.ts (91%) diff --git a/extension/chrome/elements/compose-modules/compose-recipients-module.ts b/extension/chrome/elements/compose-modules/compose-recipients-module.ts index ca2a676353c..cc67ee0de99 100644 --- a/extension/chrome/elements/compose-modules/compose-recipients-module.ts +++ b/extension/chrome/elements/compose-modules/compose-recipients-module.ts @@ -11,8 +11,8 @@ import { Str, Value } from '../../../js/common/core/common.js'; import { ApiErr } from '../../../js/common/api/error/api-error.js'; import { Bm, BrowserMsg } from '../../../js/common/browser/browser-msg.js'; import { Catch } from '../../../js/common/platform/catch.js'; -import { Google } from '../../../js/common/api/google.js'; -import { GoogleAuth } from '../../../js/common/api/google-auth.js'; +import { Google } from '../../../js/common/api/email-provider/gmail/google.js'; +import { GoogleAuth } from '../../../js/common/api/email-provider/gmail/google-auth.js'; import { Lang } from '../../../js/common/lang.js'; import { Ui } from '../../../js/common/browser/ui.js'; import { Xss } from '../../../js/common/platform/xss.js'; diff --git a/extension/chrome/settings/inbox/inbox-modules/inbox-menu-module.ts b/extension/chrome/settings/inbox/inbox-modules/inbox-menu-module.ts index 319af495d3e..a93b9fdf4de 100644 --- a/extension/chrome/settings/inbox/inbox-modules/inbox-menu-module.ts +++ b/extension/chrome/settings/inbox/inbox-modules/inbox-menu-module.ts @@ -5,7 +5,7 @@ import { Catch } from '../../../../js/common/platform/catch.js'; import { Dict } from '../../../../js/common/core/common.js'; import { GmailRes } from '../../../../js/common/api/email-provider/gmail/gmail-parser.js'; -import { Google } from '../../../../js/common/api/google.js'; +import { Google } from '../../../../js/common/api/email-provider/gmail/google.js'; import { InboxView } from '../inbox.js'; import { ViewModule } from '../../../../js/common/view-module.js'; import { Xss } from '../../../../js/common/platform/xss.js'; diff --git a/extension/chrome/settings/inbox/inbox-modules/inbox-notification-module.ts b/extension/chrome/settings/inbox/inbox-modules/inbox-notification-module.ts index 00289245385..cc7269d60e7 100644 --- a/extension/chrome/settings/inbox/inbox-modules/inbox-notification-module.ts +++ b/extension/chrome/settings/inbox/inbox-modules/inbox-notification-module.ts @@ -5,7 +5,7 @@ import { Bm, BrowserMsg } from '../../../../js/common/browser/browser-msg.js'; import { Dict } from '../../../../js/common/core/common.js'; -import { GoogleAuth } from '../../../../js/common/api/google-auth.js'; +import { GoogleAuth } from '../../../../js/common/api/email-provider/gmail/google-auth.js'; import { InboxView } from '../inbox.js'; import { Notifications } from '../../../../js/common/notifications.js'; import { ViewModule } from '../../../../js/common/view-module.js'; diff --git a/extension/chrome/settings/modules/backup-automatic-module.ts b/extension/chrome/settings/modules/backup-automatic-module.ts index 2396c4101ae..058955cef84 100644 --- a/extension/chrome/settings/modules/backup-automatic-module.ts +++ b/extension/chrome/settings/modules/backup-automatic-module.ts @@ -10,7 +10,7 @@ import { UnreportableError } from '../../../js/common/platform/catch.js'; import { Ui } from '../../../js/common/browser/ui.js'; import { ApiErr } from '../../../js/common/api/error/api-error.js'; import { Assert } from '../../../js/common/assert.js'; -import { GoogleAuth } from '../../../js/common/api/google-auth.js'; +import { GoogleAuth } from '../../../js/common/api/email-provider/gmail/google-auth.js'; import { KeyStore } from '../../../js/common/platform/store/key-store.js'; import { KeyUtil } from '../../../js/common/core/crypto/key.js'; diff --git a/extension/chrome/settings/modules/experimental.ts b/extension/chrome/settings/modules/experimental.ts index 1ef045b99d1..ac3b7cbc110 100644 --- a/extension/chrome/settings/modules/experimental.ts +++ b/extension/chrome/settings/modules/experimental.ts @@ -8,7 +8,7 @@ import { Browser } from '../../../js/common/browser/browser.js'; import { BrowserMsg } from '../../../js/common/browser/browser-msg.js'; import { Buf } from '../../../js/common/core/buf.js'; import { Catch } from '../../../js/common/platform/catch.js'; -import { GoogleAuth } from '../../../js/common/api/google-auth.js'; +import { GoogleAuth } from '../../../js/common/api/email-provider/gmail/google-auth.js'; import { Lang } from '../../../js/common/lang.js'; import { Settings } from '../../../js/common/settings.js'; import { Ui } from '../../../js/common/browser/ui.js'; diff --git a/extension/chrome/settings/setup.ts b/extension/chrome/settings/setup.ts index 25d980ff089..7c5d5fae0f4 100644 --- a/extension/chrome/settings/setup.ts +++ b/extension/chrome/settings/setup.ts @@ -9,7 +9,7 @@ import { Assert } from '../../js/common/assert.js'; import { Catch } from '../../js/common/platform/catch.js'; import { Contact, KeyInfo, Key, KeyUtil } from '../../js/common/core/crypto/key.js'; import { Gmail } from '../../js/common/api/email-provider/gmail/gmail.js'; -import { Google } from '../../js/common/api/google.js'; +import { Google } from '../../js/common/api/email-provider/gmail/google.js'; import { KeyImportUi } from '../../js/common/ui/key-import-ui.js'; import { Lang } from '../../js/common/lang.js'; import { OrgRules } from '../../js/common/org-rules.js'; diff --git a/extension/js/background_page/background_page.ts b/extension/js/background_page/background_page.ts index c76c0e5699f..e7ca8a2812c 100644 --- a/extension/js/background_page/background_page.ts +++ b/extension/js/background_page/background_page.ts @@ -6,7 +6,7 @@ import { Bm, BrowserMsg } from '../common/browser/browser-msg.js'; import { BgHandlers } from './bg-handlers.js'; import { BgUtils } from './bgutils.js'; import { Catch } from '../common/platform/catch.js'; -import { GoogleAuth } from '../common/api/google-auth.js'; +import { GoogleAuth } from '../common/api/email-provider/gmail/google-auth.js'; import { VERSION } from '../common/core/const.js'; import { injectFcIntoWebmail } from './inject.js'; import { migrateGlobal } from './migrations.js'; diff --git a/extension/js/common/api/email-provider/gmail/gmail.ts b/extension/js/common/api/email-provider/gmail/gmail.ts index d386f1122cc..316c2d0b1ef 100644 --- a/extension/js/common/api/email-provider/gmail/gmail.ts +++ b/extension/js/common/api/email-provider/gmail/gmail.ts @@ -16,8 +16,8 @@ import { Catch } from '../../../platform/catch.js'; import { Contact, KeyUtil } from '../../../core/crypto/key.js'; import { Env } from '../../../browser/env.js'; import { FormatError } from '../../../core/crypto/pgp/msg-util.js'; -import { Google } from '../../google.js'; -import { GoogleAuth } from '../../google-auth.js'; +import { Google } from './google.js'; +import { GoogleAuth } from './google-auth.js'; import { Mime } from '../../../core/mime.js'; import { PgpArmor } from '../../../core/crypto/pgp/pgp-armor.js'; import { SendableMsg } from '../sendable-msg.js'; diff --git a/extension/js/common/api/google-auth.ts b/extension/js/common/api/email-provider/gmail/google-auth.ts similarity index 95% rename from extension/js/common/api/google-auth.ts rename to extension/js/common/api/email-provider/gmail/google-auth.ts index 6aabd280cd8..7c40d637617 100644 --- a/extension/js/common/api/google-auth.ts +++ b/extension/js/common/api/email-provider/gmail/google-auth.ts @@ -5,19 +5,19 @@ // tslint:disable:no-direct-ajax // tslint:disable:oneliner-object-literal -import { GOOGLE_API_HOST, GOOGLE_OAUTH_SCREEN_HOST, FLAVOR } from '../core/const.js'; -import { Url, Value } from '../core/common.js'; -import { tabsQuery, windowsCreate } from '../browser/chrome.js'; -import { Api } from './api.js'; -import { ApiErr } from './error/api-error.js'; -import { Backend } from './backend.js'; -import { Buf } from '../core/buf.js'; -import { Catch } from '../platform/catch.js'; -import { GmailRes } from './email-provider/gmail/gmail-parser'; -import { GoogleAuthErr } from './error/api-error.js'; -import { GoogleAuthWindowResult$result } from '../browser/browser-msg.js'; -import { Ui } from '../browser/ui.js'; -import { AcctStore, AcctStoreDict } from '../platform/store/acct-store.js'; +import { GOOGLE_API_HOST, GOOGLE_OAUTH_SCREEN_HOST, FLAVOR } from '../../../core/const.js'; +import { Url, Value } from '../../../core/common.js'; +import { tabsQuery, windowsCreate } from '../../../browser/chrome.js'; +import { Api } from './../../api.js'; +import { ApiErr } from './../../error/api-error.js'; +import { Backend } from './../../backend.js'; +import { Buf } from '../../../core/buf.js'; +import { Catch } from '../../../platform/catch.js'; +import { GmailRes } from './gmail-parser'; +import { GoogleAuthErr } from './../../error/api-error.js'; +import { GoogleAuthWindowResult$result } from '../../../browser/browser-msg.js'; +import { Ui } from '../../../browser/ui.js'; +import { AcctStore, AcctStoreDict } from '../../../platform/store/acct-store.js'; type GoogleAuthTokenInfo = { issued_to: string, audience: string, scope: string, expires_in: number, access_type: 'offline' }; type GoogleAuthTokensResponse = { access_token: string, expires_in: number, refresh_token?: string, id_token: string, token_type: 'Bearer' }; diff --git a/extension/js/common/api/google.ts b/extension/js/common/api/email-provider/gmail/google.ts similarity index 91% rename from extension/js/common/api/google.ts rename to extension/js/common/api/email-provider/gmail/google.ts index 657f16d9fe4..bb162c72ad2 100644 --- a/extension/js/common/api/google.ts +++ b/extension/js/common/api/email-provider/gmail/google.ts @@ -4,13 +4,13 @@ // tslint:disable:no-direct-ajax -import { Api, ProgressCbs, ReqMethod } from './api.js'; -import { Dict, Str } from '../core/common.js'; +import { Api, ProgressCbs, ReqMethod } from '../../api.js'; +import { Dict, Str } from '../../../core/common.js'; -import { GOOGLE_API_HOST } from '../core/const.js'; -import { GmailRes } from './email-provider/gmail/gmail-parser.js'; +import { GOOGLE_API_HOST } from '../../../core/const.js'; +import { GmailRes } from './gmail-parser.js'; import { GoogleAuth } from './google-auth.js'; -import { Serializable } from '../platform/store/abstract-store.js'; +import { Serializable } from '../../../platform/store/abstract-store.js'; export class Google { diff --git a/extension/js/common/browser/browser-msg.ts b/extension/js/common/browser/browser-msg.ts index 90902bdcb15..5302301d50e 100644 --- a/extension/js/common/browser/browser-msg.ts +++ b/extension/js/common/browser/browser-msg.ts @@ -5,7 +5,7 @@ import { DecryptResult, DiagnoseMsgPubkeysResult, PgpMsgMethod, VerifyRes, PgpMsgTypeResult } from '../core/crypto/pgp/msg-util.js'; import { Dict, Str, UrlParams } from '../core/common.js'; import { AjaxErr } from '../api/error/api-error.js'; -import { AuthRes } from '../api/google-auth.js'; +import { AuthRes } from '../api/email-provider/gmail/google-auth.js'; import { Browser } from './browser.js'; import { BrowserMsgCommonHandlers } from './browser-msg-common-handlers.js'; import { Buf } from '../core/buf.js'; diff --git a/extension/js/common/platform/store/acct-store.ts b/extension/js/common/platform/store/acct-store.ts index 87129f6f4a1..2c36e9d7537 100644 --- a/extension/js/common/platform/store/acct-store.ts +++ b/extension/js/common/platform/store/acct-store.ts @@ -1,7 +1,7 @@ /* ©️ 2016 - present FlowCrypt a.s. Limitations apply. Contact human@flowcrypt.com */ import { Env } from '../../browser/env.js'; -import { GoogleAuth } from '../../api/google-auth.js'; +import { GoogleAuth } from '../../api/email-provider/gmail/google-auth.js'; import { KeyInfo } from '../../core/crypto/key.js'; import { Dict } from '../../core/common.js'; import { GmailRes } from '../../api/email-provider/gmail/gmail-parser.js'; diff --git a/extension/js/common/settings.ts b/extension/js/common/settings.ts index 58ce9aff9cf..6fba12805af 100644 --- a/extension/js/common/settings.ts +++ b/extension/js/common/settings.ts @@ -10,7 +10,7 @@ import { Backend } from './api/backend.js'; import { Catch } from './platform/catch.js'; import { Env } from './browser/env.js'; import { Gmail } from './api/email-provider/gmail/gmail.js'; -import { GoogleAuth } from './api/google-auth.js'; +import { GoogleAuth } from './api/email-provider/gmail/google-auth.js'; import { Lang } from './lang.js'; import { Key, KeyUtil } from './core/crypto/key.js'; import { PgpPwd } from './core/crypto/pgp/pgp-password.js'; From a1ad3f1e0121fff0309e41f5427dd8f441dc3be2 Mon Sep 17 00:00:00 2001 From: Tom J Date: Mon, 12 Oct 2020 10:28:20 +0000 Subject: [PATCH 03/13] moved api and api-error to shared/ --- extension/chrome/dev/ci_unit_test.ts | 2 +- extension/chrome/dev/export.ts | 2 +- extension/chrome/elements/attachment.ts | 4 ++-- .../compose-modules/compose-draft-module.ts | 4 ++-- .../compose-modules/compose-err-module.ts | 4 ++-- .../compose-my-pubkey-module.ts | 2 +- .../compose-pwd-or-pubkey-container-module.ts | 2 +- .../compose-modules/compose-quote-module.ts | 2 +- .../compose-recipients-module.ts | 4 ++-- .../compose-modules/compose-render-module.ts | 4 ++-- .../compose-modules/compose-send-btn-module.ts | 2 +- .../compose-modules/compose-sender-module.ts | 2 +- .../compose-modules/compose-storage-module.ts | 2 +- .../elements/compose-modules/compose-types.ts | 2 +- .../formatters/encrypted-mail-msg-formatter.ts | 2 +- extension/chrome/elements/compose.ts | 2 +- .../pgp-block-attachmens-module.ts | 2 +- .../pgp-block-error-module.ts | 2 +- .../pgp-block-signature-module.ts | 2 +- extension/chrome/elements/subscribe.ts | 2 +- .../inbox-active-thread-module.ts | 2 +- .../inbox-modules/inbox-list-threads-module.ts | 2 +- extension/chrome/settings/inbox/inbox.ts | 2 +- extension/chrome/settings/index.ts | 2 +- extension/chrome/settings/modules/account.ts | 2 +- extension/chrome/settings/modules/add_key.ts | 2 +- .../modules/backup-automatic-module.ts | 2 +- .../settings/modules/backup-manual-module.ts | 2 +- .../settings/modules/backup-status-module.ts | 2 +- extension/chrome/settings/modules/contacts.ts | 2 +- .../chrome/settings/modules/experimental.ts | 2 +- extension/chrome/settings/modules/help.ts | 2 +- extension/chrome/settings/modules/keyserver.ts | 2 +- extension/chrome/settings/modules/my_key.ts | 2 +- .../chrome/settings/modules/my_key_update.ts | 2 +- extension/chrome/settings/modules/security.ts | 2 +- extension/chrome/settings/setup.ts | 2 +- .../setup/setup-key-manager-autogen.ts | 4 ++-- .../chrome/settings/setup/setup-recover-key.ts | 2 +- extension/js/background_page/bg-handlers.ts | 2 +- extension/js/common/api/backend.ts | 4 ++-- .../api/email-provider/email-provider-api.ts | 2 +- .../api/email-provider/gmail/gmail-parser.ts | 2 +- .../common/api/email-provider/gmail/gmail.ts | 4 ++-- .../api/email-provider/gmail/google-auth.ts | 6 +++--- .../common/api/email-provider/gmail/google.ts | 2 +- .../common/api/email-provider/sendable-msg.ts | 2 +- extension/js/common/api/flowcrypt-website.ts | 2 +- extension/js/common/api/key-server/attester.ts | 4 ++-- .../js/common/api/key-server/key-manager.ts | 2 +- extension/js/common/api/key-server/sks.ts | 4 ++-- extension/js/common/api/key-server/wkd.ts | 4 ++-- .../common/api/{error => shared}/api-error.ts | 0 extension/js/common/api/{ => shared}/api.ts | 18 +++++++++--------- .../js/common/api/well-known-host-meta.ts | 4 ++-- extension/js/common/browser/browser-msg.ts | 2 +- extension/js/common/browser/browser.ts | 2 +- extension/js/common/browser/ui.ts | 2 +- extension/js/common/settings.ts | 4 ++-- extension/js/common/view.ts | 2 +- .../webmail/gmail-element-replacer.ts | 4 ++-- tooling/bundle-content-scripts.ts | 2 +- 62 files changed, 85 insertions(+), 85 deletions(-) rename extension/js/common/api/{error => shared}/api-error.ts (100%) rename extension/js/common/api/{ => shared}/api.ts (94%) diff --git a/extension/chrome/dev/ci_unit_test.ts b/extension/chrome/dev/ci_unit_test.ts index fc65a96c995..8c9cfd72e4b 100644 --- a/extension/chrome/dev/ci_unit_test.ts +++ b/extension/chrome/dev/ci_unit_test.ts @@ -2,7 +2,7 @@ 'use strict'; -import { ApiErr } from '../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../js/common/api/shared/api-error.js'; import { WellKnownHostMeta } from '../../js/common/api/well-known-host-meta.js'; /** diff --git a/extension/chrome/dev/export.ts b/extension/chrome/dev/export.ts index 049bc03139f..f14902b57e3 100644 --- a/extension/chrome/dev/export.ts +++ b/extension/chrome/dev/export.ts @@ -4,7 +4,7 @@ import { GmailParser, GmailRes } from '../../js/common/api/email-provider/gmail/gmail-parser.js'; -import { ApiErr } from '../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../js/common/api/shared/api-error.js'; import { Assert } from '../../js/common/assert.js'; import { Att } from '../../js/common/core/att.js'; import { Browser } from '../../js/common/browser/browser.js'; diff --git a/extension/chrome/elements/attachment.ts b/extension/chrome/elements/attachment.ts index fd3cda4418a..baf91fb5a8c 100644 --- a/extension/chrome/elements/attachment.ts +++ b/extension/chrome/elements/attachment.ts @@ -5,8 +5,8 @@ import { Bm, BrowserMsg } from '../../js/common/browser/browser-msg.js'; import { DecryptErrTypes, MsgUtil } from '../../js/common/core/crypto/pgp/msg-util.js'; import { PromiseCancellation, Url } from '../../js/common/core/common.js'; -import { Api } from '../../js/common/api/api.js'; -import { ApiErr } from '../../js/common/api/error/api-error.js'; +import { Api } from '../../js/common/api/shared/api.js'; +import { ApiErr } from '../../js/common/api/shared/api-error.js'; import { Assert } from '../../js/common/assert.js'; import { Att } from '../../js/common/core/att.js'; import { Browser } from '../../js/common/browser/browser.js'; diff --git a/extension/chrome/elements/compose-modules/compose-draft-module.ts b/extension/chrome/elements/compose-modules/compose-draft-module.ts index e2923e3efa9..c160b9daaa7 100644 --- a/extension/chrome/elements/compose-modules/compose-draft-module.ts +++ b/extension/chrome/elements/compose-modules/compose-draft-module.ts @@ -4,8 +4,8 @@ import { Mime, MimeContent, MimeProccesedMsg } from '../../../js/common/core/mime.js'; import { AcctStore } from '../../../js/common/platform/store/acct-store.js'; -import { AjaxErr } from '../../../js/common/api/error/api-error.js'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; +import { AjaxErr } from '../../../js/common/api/shared/api-error.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { BrowserMsg } from '../../../js/common/browser/browser-msg.js'; import { Buf } from '../../../js/common/core/buf.js'; import { Catch } from '../../../js/common/platform/catch.js'; diff --git a/extension/chrome/elements/compose-modules/compose-err-module.ts b/extension/chrome/elements/compose-modules/compose-err-module.ts index 30f5ea4be2c..8a735c7f4d1 100644 --- a/extension/chrome/elements/compose-modules/compose-err-module.ts +++ b/extension/chrome/elements/compose-modules/compose-err-module.ts @@ -6,7 +6,7 @@ import { Browser } from '../../../js/common/browser/browser.js'; import { BrowserEventErrHandler, Ui } from '../../../js/common/browser/ui.js'; import { Catch } from '../../../js/common/platform/catch.js'; import { NewMsgData, SendBtnTexts } from './compose-types.js'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { BrowserExtension } from '../../../js/common/browser/browser-extension.js'; import { BrowserMsg } from '../../../js/common/browser/browser-msg.js'; import { KeyInfo } from '../../../js/common/core/crypto/key.js'; @@ -15,7 +15,7 @@ import { Str } from '../../../js/common/core/common.js'; import { Xss } from '../../../js/common/platform/xss.js'; import { ViewModule } from '../../../js/common/view-module.js'; import { ComposeView } from '../compose.js'; -import { AjaxErrMsgs } from '../../../js/common/api/error/api-error.js'; +import { AjaxErrMsgs } from '../../../js/common/api/shared/api-error.js'; export class ComposerUserError extends Error { } export class ComposerNotReadyError extends ComposerUserError { } diff --git a/extension/chrome/elements/compose-modules/compose-my-pubkey-module.ts b/extension/chrome/elements/compose-modules/compose-my-pubkey-module.ts index 2d118ef8b70..a7b2cf3b0e4 100644 --- a/extension/chrome/elements/compose-modules/compose-my-pubkey-module.ts +++ b/extension/chrome/elements/compose-modules/compose-my-pubkey-module.ts @@ -2,7 +2,7 @@ 'use strict'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { Catch } from '../../../js/common/platform/catch.js'; import { KeyInfo, KeyUtil } from '../../../js/common/core/crypto/key.js'; import { Lang } from '../../../js/common/lang.js'; diff --git a/extension/chrome/elements/compose-modules/compose-pwd-or-pubkey-container-module.ts b/extension/chrome/elements/compose-modules/compose-pwd-or-pubkey-container-module.ts index 16c6fea5291..63c51474ce6 100644 --- a/extension/chrome/elements/compose-modules/compose-pwd-or-pubkey-container-module.ts +++ b/extension/chrome/elements/compose-modules/compose-pwd-or-pubkey-container-module.ts @@ -7,7 +7,7 @@ import { RecipientStatuses, SendBtnTexts } from './compose-types.js'; import { KeyImportUi } from '../../../js/common/ui/key-import-ui.js'; import { Catch } from '../../../js/common/platform/catch.js'; import { Str } from '../../../js/common/core/common.js'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { ViewModule } from '../../../js/common/view-module.js'; import { ComposeView } from '../compose.js'; import { AcctStore } from '../../../js/common/platform/store/acct-store.js'; diff --git a/extension/chrome/elements/compose-modules/compose-quote-module.ts b/extension/chrome/elements/compose-modules/compose-quote-module.ts index 53862cc5084..5adde72b83b 100644 --- a/extension/chrome/elements/compose-modules/compose-quote-module.ts +++ b/extension/chrome/elements/compose-modules/compose-quote-module.ts @@ -4,7 +4,7 @@ import { Bm, BrowserMsg } from '../../../js/common/browser/browser-msg.js'; import { FormatError, MsgUtil, DecryptErrTypes } from '../../../js/common/core/crypto/pgp/msg-util.js'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { Buf } from '../../../js/common/core/buf.js'; import { Catch } from '../../../js/common/platform/catch.js'; import { Mime } from '../../../js/common/core/mime.js'; diff --git a/extension/chrome/elements/compose-modules/compose-recipients-module.ts b/extension/chrome/elements/compose-modules/compose-recipients-module.ts index cc67ee0de99..558f4d29741 100644 --- a/extension/chrome/elements/compose-modules/compose-recipients-module.ts +++ b/extension/chrome/elements/compose-modules/compose-recipients-module.ts @@ -2,13 +2,13 @@ 'use strict'; -import { ChunkedCb, RecipientType } from '../../../js/common/api/api.js'; +import { ChunkedCb, RecipientType } from '../../../js/common/api/shared/api.js'; import { Contact } from '../../../js/common/core/crypto/key.js'; import { PUBKEY_LOOKUP_RESULT_FAIL, PUBKEY_LOOKUP_RESULT_WRONG } from './compose-err-module.js'; import { ProviderContactsQuery, Recipients } from '../../../js/common/api/email-provider/email-provider-api.js'; import { RecipientElement, RecipientStatus, RecipientStatuses } from './compose-types.js'; import { Str, Value } from '../../../js/common/core/common.js'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { Bm, BrowserMsg } from '../../../js/common/browser/browser-msg.js'; import { Catch } from '../../../js/common/platform/catch.js'; import { Google } from '../../../js/common/api/email-provider/gmail/google.js'; diff --git a/extension/chrome/elements/compose-modules/compose-render-module.ts b/extension/chrome/elements/compose-modules/compose-render-module.ts index f8a35f50643..2d81fd00622 100644 --- a/extension/chrome/elements/compose-modules/compose-render-module.ts +++ b/extension/chrome/elements/compose-modules/compose-render-module.ts @@ -8,7 +8,7 @@ import { BrowserMsg } from '../../../js/common/browser/browser-msg.js'; import { Catch } from '../../../js/common/platform/catch.js'; import { KeyImportUi } from '../../../js/common/ui/key-import-ui.js'; import { Lang } from '../../../js/common/lang.js'; -import { RecipientType } from '../../../js/common/api/api.js'; +import { RecipientType } from '../../../js/common/api/shared/api.js'; import { Recipients } from '../../../js/common/api/email-provider/email-provider-api.js'; import { SendableMsg } from '../../../js/common/api/email-provider/sendable-msg.js'; import { Str } from '../../../js/common/core/common.js'; @@ -16,7 +16,7 @@ import { Ui } from '../../../js/common/browser/ui.js'; import { Xss } from '../../../js/common/platform/xss.js'; import { ViewModule } from '../../../js/common/view-module.js'; import { ComposeView } from '../compose.js'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { GmailParser } from '../../../js/common/api/email-provider/gmail/gmail-parser.js'; import { KeyStore } from '../../../js/common/platform/store/key-store.js'; import { ContactStore } from '../../../js/common/platform/store/contact-store.js'; diff --git a/extension/chrome/elements/compose-modules/compose-send-btn-module.ts b/extension/chrome/elements/compose-modules/compose-send-btn-module.ts index 8c1c249ca64..a0279d1d00d 100644 --- a/extension/chrome/elements/compose-modules/compose-send-btn-module.ts +++ b/extension/chrome/elements/compose-modules/compose-send-btn-module.ts @@ -2,7 +2,7 @@ 'use strict'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { Att } from '../../../js/common/core/att.js'; import { BrowserMsg } from '../../../js/common/browser/browser-msg.js'; import { Catch } from '../../../js/common/platform/catch.js'; diff --git a/extension/chrome/elements/compose-modules/compose-sender-module.ts b/extension/chrome/elements/compose-modules/compose-sender-module.ts index 3d411ef115e..7fe4e8c0aa4 100644 --- a/extension/chrome/elements/compose-modules/compose-sender-module.ts +++ b/extension/chrome/elements/compose-modules/compose-sender-module.ts @@ -2,7 +2,7 @@ 'use strict'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { BrowserMsg } from '../../../js/common/browser/browser-msg.js'; import { Settings } from '../../../js/common/settings.js'; import { Xss } from '../../../js/common/platform/xss.js'; diff --git a/extension/chrome/elements/compose-modules/compose-storage-module.ts b/extension/chrome/elements/compose-modules/compose-storage-module.ts index 021205daeb2..867ee1b5835 100644 --- a/extension/chrome/elements/compose-modules/compose-storage-module.ts +++ b/extension/chrome/elements/compose-modules/compose-storage-module.ts @@ -4,7 +4,7 @@ import { Bm, BrowserMsg } from '../../../js/common/browser/browser-msg.js'; import { Contact, KeyInfo, KeyUtil, Key } from '../../../js/common/core/crypto/key.js'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { Assert } from '../../../js/common/assert.js'; import { Catch } from '../../../js/common/platform/catch.js'; import { CollectPubkeysResult } from './compose-types.js'; diff --git a/extension/chrome/elements/compose-modules/compose-types.ts b/extension/chrome/elements/compose-modules/compose-types.ts index b445fd0c190..451e42daa5d 100644 --- a/extension/chrome/elements/compose-modules/compose-types.ts +++ b/extension/chrome/elements/compose-modules/compose-types.ts @@ -2,7 +2,7 @@ 'use strict'; -import { RecipientType } from '../../../js/common/api/api.js'; +import { RecipientType } from '../../../js/common/api/shared/api.js'; import { Recipients } from '../../../js/common/api/email-provider/email-provider-api.js'; import { PubkeyResult } from '../../../js/common/core/crypto/key.js'; diff --git a/extension/chrome/elements/compose-modules/formatters/encrypted-mail-msg-formatter.ts b/extension/chrome/elements/compose-modules/formatters/encrypted-mail-msg-formatter.ts index 02d5293b69e..9b85fc3a8bc 100644 --- a/extension/chrome/elements/compose-modules/formatters/encrypted-mail-msg-formatter.ts +++ b/extension/chrome/elements/compose-modules/formatters/encrypted-mail-msg-formatter.ts @@ -8,7 +8,7 @@ import { ComposerResetBtnTrigger } from '../compose-err-module.js'; import { Mime, SendableMsgBody } from '../../../../js/common/core/mime.js'; import { NewMsgData } from '../compose-types.js'; import { Str, Value } from '../../../../js/common/core/common.js'; -import { ApiErr } from '../../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../../js/common/api/shared/api-error.js'; import { Att } from '../../../../js/common/core/att.js'; import { Buf } from '../../../../js/common/core/buf.js'; import { Catch } from '../../../../js/common/platform/catch.js'; diff --git a/extension/chrome/elements/compose.ts b/extension/chrome/elements/compose.ts index 23669120c11..339391c7ceb 100644 --- a/extension/chrome/elements/compose.ts +++ b/extension/chrome/elements/compose.ts @@ -3,7 +3,7 @@ 'use strict'; import { EmailProviderInterface, ReplyParams } from '../../js/common/api/email-provider/email-provider-api.js'; -import { ApiErr } from '../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../js/common/api/shared/api-error.js'; import { Assert } from '../../js/common/assert.js'; import { BrowserMsg } from '../../js/common/browser/browser-msg.js'; import { Gmail } from '../../js/common/api/email-provider/gmail/gmail.js'; diff --git a/extension/chrome/elements/pgp_block_modules/pgp-block-attachmens-module.ts b/extension/chrome/elements/pgp_block_modules/pgp-block-attachmens-module.ts index c65b9209a85..70f0c079f26 100644 --- a/extension/chrome/elements/pgp_block_modules/pgp-block-attachmens-module.ts +++ b/extension/chrome/elements/pgp_block_modules/pgp-block-attachmens-module.ts @@ -2,7 +2,7 @@ 'use strict'; -import { Api } from '../../../js/common/api/api.js'; +import { Api } from '../../../js/common/api/shared/api.js'; import { Att } from '../../../js/common/core/att.js'; import { Browser } from '../../../js/common/browser/browser.js'; import { BrowserMsg } from '../../../js/common/browser/browser-msg.js'; diff --git a/extension/chrome/elements/pgp_block_modules/pgp-block-error-module.ts b/extension/chrome/elements/pgp_block_modules/pgp-block-error-module.ts index f3443a71108..dc8faebeb94 100644 --- a/extension/chrome/elements/pgp_block_modules/pgp-block-error-module.ts +++ b/extension/chrome/elements/pgp_block_modules/pgp-block-error-module.ts @@ -2,7 +2,7 @@ 'use strict'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { Browser } from '../../../js/common/browser/browser.js'; import { BrowserMsg } from '../../../js/common/browser/browser-msg.js'; import { Catch } from '../../../js/common/platform/catch.js'; diff --git a/extension/chrome/elements/pgp_block_modules/pgp-block-signature-module.ts b/extension/chrome/elements/pgp_block_modules/pgp-block-signature-module.ts index 50d3c6f72a8..9a8ab5897a2 100644 --- a/extension/chrome/elements/pgp_block_modules/pgp-block-signature-module.ts +++ b/extension/chrome/elements/pgp_block_modules/pgp-block-signature-module.ts @@ -2,7 +2,7 @@ 'use strict'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { BrowserMsg } from '../../../js/common/browser/browser-msg.js'; import { Catch } from '../../../js/common/platform/catch.js'; import { PgpBlockView } from '../pgp_block'; diff --git a/extension/chrome/elements/subscribe.ts b/extension/chrome/elements/subscribe.ts index 801d2869bd2..dbd46251e54 100644 --- a/extension/chrome/elements/subscribe.ts +++ b/extension/chrome/elements/subscribe.ts @@ -5,7 +5,7 @@ import { Backend, FcUuidAuth, PaymentMethod, SubscriptionLevel } from '../../js/common/api/backend.js'; import { Bm, BrowserMsg } from '../../js/common/browser/browser-msg.js'; import { Str, Url } from '../../js/common/core/common.js'; -import { ApiErr } from '../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../js/common/api/shared/api-error.js'; import { Assert } from '../../js/common/assert.js'; import { Catch } from '../../js/common/platform/catch.js'; import { Lang } from '../../js/common/lang.js'; diff --git a/extension/chrome/settings/inbox/inbox-modules/inbox-active-thread-module.ts b/extension/chrome/settings/inbox/inbox-modules/inbox-active-thread-module.ts index 528d307fe98..5c00068d35f 100644 --- a/extension/chrome/settings/inbox/inbox-modules/inbox-active-thread-module.ts +++ b/extension/chrome/settings/inbox/inbox-modules/inbox-active-thread-module.ts @@ -7,7 +7,7 @@ import { FactoryReplyParams, XssSafeFactory } from '../../../../js/common/xss-sa import { GmailParser, GmailRes } from '../../../../js/common/api/email-provider/gmail/gmail-parser.js'; import { Url, UrlParams } from '../../../../js/common/core/common.js'; -import { ApiErr } from '../../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../../js/common/api/shared/api-error.js'; import { BrowserMsgCommonHandlers } from '../../../../js/common/browser/browser-msg-common-handlers.js'; import { Buf } from '../../../../js/common/core/buf.js'; import { Catch } from '../../../../js/common/platform/catch.js'; diff --git a/extension/chrome/settings/inbox/inbox-modules/inbox-list-threads-module.ts b/extension/chrome/settings/inbox/inbox-modules/inbox-list-threads-module.ts index 1ba9c4c8091..e9a09aae3ba 100644 --- a/extension/chrome/settings/inbox/inbox-modules/inbox-list-threads-module.ts +++ b/extension/chrome/settings/inbox/inbox-modules/inbox-list-threads-module.ts @@ -2,7 +2,7 @@ 'use strict'; -import { ApiErr } from '../../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../../js/common/api/shared/api-error.js'; import { Catch } from '../../../../js/common/platform/catch.js'; import { GmailParser } from '../../../../js/common/api/email-provider/gmail/gmail-parser.js'; import { InboxView } from '../inbox.js'; diff --git a/extension/chrome/settings/inbox/inbox.ts b/extension/chrome/settings/inbox/inbox.ts index f69bf84977f..0fc9bd1923c 100644 --- a/extension/chrome/settings/inbox/inbox.ts +++ b/extension/chrome/settings/inbox/inbox.ts @@ -4,7 +4,7 @@ import { SelCache, Ui } from '../../../js/common/browser/ui.js'; import { Url, UrlParams } from '../../../js/common/core/common.js'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { Assert } from '../../../js/common/assert.js'; import { Browser } from '../../../js/common/browser/browser.js'; import { BrowserMsg, Bm } from '../../../js/common/browser/browser-msg.js'; diff --git a/extension/chrome/settings/index.ts b/extension/chrome/settings/index.ts index e52a55f61dd..755611f53ba 100644 --- a/extension/chrome/settings/index.ts +++ b/extension/chrome/settings/index.ts @@ -6,7 +6,7 @@ import { Bm, BrowserMsg } from '../../js/common/browser/browser-msg.js'; import { Ui } from '../../js/common/browser/ui.js'; import { KeyInfo, KeyUtil } from '../../js/common/core/crypto/key.js'; import { Str, Url, UrlParams } from '../../js/common/core/common.js'; -import { ApiErr } from '../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../js/common/api/shared/api-error.js'; import { Assert } from '../../js/common/assert.js'; import { Backend } from '../../js/common/api/backend.js'; import { Catch } from '../../js/common/platform/catch.js'; diff --git a/extension/chrome/settings/modules/account.ts b/extension/chrome/settings/modules/account.ts index 9e7bdd13544..9df83769a1e 100644 --- a/extension/chrome/settings/modules/account.ts +++ b/extension/chrome/settings/modules/account.ts @@ -2,7 +2,7 @@ 'use strict'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { Assert } from '../../../js/common/assert.js'; import { Backend } from '../../../js/common/api/backend.js'; import { Settings } from '../../../js/common/settings.js'; diff --git a/extension/chrome/settings/modules/add_key.ts b/extension/chrome/settings/modules/add_key.ts index a0a13de11c8..e2f50e894dd 100644 --- a/extension/chrome/settings/modules/add_key.ts +++ b/extension/chrome/settings/modules/add_key.ts @@ -4,7 +4,7 @@ import { KeyCanBeFixed, KeyImportUi, UserAlert } from '../../../js/common/ui/key-import-ui.js'; import { Url } from '../../../js/common/core/common.js'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { Assert } from '../../../js/common/assert.js'; import { BrowserMsg } from '../../../js/common/browser/browser-msg.js'; import { Catch } from '../../../js/common/platform/catch.js'; diff --git a/extension/chrome/settings/modules/backup-automatic-module.ts b/extension/chrome/settings/modules/backup-automatic-module.ts index 058955cef84..742e14ffd19 100644 --- a/extension/chrome/settings/modules/backup-automatic-module.ts +++ b/extension/chrome/settings/modules/backup-automatic-module.ts @@ -8,7 +8,7 @@ import { BackupView } from './backup.js'; import { Settings } from '../../../js/common/settings.js'; import { UnreportableError } from '../../../js/common/platform/catch.js'; import { Ui } from '../../../js/common/browser/ui.js'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { Assert } from '../../../js/common/assert.js'; import { GoogleAuth } from '../../../js/common/api/email-provider/gmail/google-auth.js'; import { KeyStore } from '../../../js/common/platform/store/key-store.js'; diff --git a/extension/chrome/settings/modules/backup-manual-module.ts b/extension/chrome/settings/modules/backup-manual-module.ts index 3be54f16d25..e09b1199c16 100644 --- a/extension/chrome/settings/modules/backup-manual-module.ts +++ b/extension/chrome/settings/modules/backup-manual-module.ts @@ -11,7 +11,7 @@ import { SendableMsg } from '../../../js/common/api/email-provider/sendable-msg. import { GMAIL_RECOVERY_EMAIL_SUBJECTS } from '../../../js/common/core/const.js'; import { KeyInfo, KeyUtil } from '../../../js/common/core/crypto/key.js'; import { Ui } from '../../../js/common/browser/ui.js'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { BrowserMsg, Bm } from '../../../js/common/browser/browser-msg.js'; import { Catch } from '../../../js/common/platform/catch.js'; import { Browser } from '../../../js/common/browser/browser.js'; diff --git a/extension/chrome/settings/modules/backup-status-module.ts b/extension/chrome/settings/modules/backup-status-module.ts index ede7544e103..994ff43fa45 100644 --- a/extension/chrome/settings/modules/backup-status-module.ts +++ b/extension/chrome/settings/modules/backup-status-module.ts @@ -6,7 +6,7 @@ import { ViewModule } from '../../../js/common/view-module.js'; import { Xss } from '../../../js/common/platform/xss.js'; import { BackupView } from './backup.js'; import { Ui } from '../../../js/common/browser/ui.js'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { Browser } from '../../../js/common/browser/browser.js'; import { BrowserMsg } from '../../../js/common/browser/browser-msg.js'; import { Backups } from '../../../js/common/api/email-provider/email-provider-api.js'; diff --git a/extension/chrome/settings/modules/contacts.ts b/extension/chrome/settings/modules/contacts.ts index 6d209237466..d3878823179 100644 --- a/extension/chrome/settings/modules/contacts.ts +++ b/extension/chrome/settings/modules/contacts.ts @@ -4,7 +4,7 @@ import { Contact, Key, KeyUtil } from '../../../js/common/core/crypto/key.js'; import { Str, Url } from '../../../js/common/core/common.js'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { Assert } from '../../../js/common/assert.js'; import { Att } from '../../../js/common/core/att.js'; import { AttUI } from '../../../js/common/ui/att-ui.js'; diff --git a/extension/chrome/settings/modules/experimental.ts b/extension/chrome/settings/modules/experimental.ts index ac3b7cbc110..24f6fff2673 100644 --- a/extension/chrome/settings/modules/experimental.ts +++ b/extension/chrome/settings/modules/experimental.ts @@ -17,7 +17,7 @@ import { View } from '../../../js/common/view.js'; import { KeyStore } from '../../../js/common/platform/store/key-store.js'; import { AcctStore } from '../../../js/common/platform/store/acct-store.js'; import { GlobalStore } from '../../../js/common/platform/store/global-store.js'; -import { Api } from '../../../js/common/api/api.js'; +import { Api } from '../../../js/common/api/shared/api.js'; View.run(class ExperimentalView extends View { diff --git a/extension/chrome/settings/modules/help.ts b/extension/chrome/settings/modules/help.ts index 7abb047e50f..482e51a7911 100644 --- a/extension/chrome/settings/modules/help.ts +++ b/extension/chrome/settings/modules/help.ts @@ -4,7 +4,7 @@ import { Str, Url } from '../../../js/common/core/common.js'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { Assert } from '../../../js/common/assert.js'; import { BrowserMsg } from '../../../js/common/browser/browser-msg.js'; import { Catch } from '../../../js/common/platform/catch.js'; diff --git a/extension/chrome/settings/modules/keyserver.ts b/extension/chrome/settings/modules/keyserver.ts index 9d70aadb7df..59d1611c7dd 100644 --- a/extension/chrome/settings/modules/keyserver.ts +++ b/extension/chrome/settings/modules/keyserver.ts @@ -4,7 +4,7 @@ import { Dict, Url } from '../../../js/common/core/common.js'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { Assert } from '../../../js/common/assert.js'; import { BrowserMsg } from '../../../js/common/browser/browser-msg.js'; import { Lang } from '../../../js/common/lang.js'; diff --git a/extension/chrome/settings/modules/my_key.ts b/extension/chrome/settings/modules/my_key.ts index 02d262dbc9a..d4e849d7382 100644 --- a/extension/chrome/settings/modules/my_key.ts +++ b/extension/chrome/settings/modules/my_key.ts @@ -2,7 +2,7 @@ 'use strict'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { Assert } from '../../../js/common/assert.js'; import { Att } from '../../../js/common/core/att.js'; import { Backend } from '../../../js/common/api/backend.js'; diff --git a/extension/chrome/settings/modules/my_key_update.ts b/extension/chrome/settings/modules/my_key_update.ts index 5b28bef0e83..7c79e963adc 100644 --- a/extension/chrome/settings/modules/my_key_update.ts +++ b/extension/chrome/settings/modules/my_key_update.ts @@ -2,7 +2,7 @@ 'use strict'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { Assert } from '../../../js/common/assert.js'; import { KeyInfo, Key, KeyUtil } from '../../../js/common/core/crypto/key.js'; import { Lang } from '../../../js/common/lang.js'; diff --git a/extension/chrome/settings/modules/security.ts b/extension/chrome/settings/modules/security.ts index 418ca09d80f..6b13c15bae6 100644 --- a/extension/chrome/settings/modules/security.ts +++ b/extension/chrome/settings/modules/security.ts @@ -3,7 +3,7 @@ 'use strict'; import { Backend, FcUuidAuth } from '../../../js/common/api/backend.js'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { Assert } from '../../../js/common/assert.js'; import { Catch } from '../../../js/common/platform/catch.js'; import { KeyInfo } from '../../../js/common/core/crypto/key.js'; diff --git a/extension/chrome/settings/setup.ts b/extension/chrome/settings/setup.ts index 7c5d5fae0f4..0942511b829 100644 --- a/extension/chrome/settings/setup.ts +++ b/extension/chrome/settings/setup.ts @@ -4,7 +4,7 @@ import { Bm, BrowserMsg } from '../../js/common/browser/browser-msg.js'; import { Url } from '../../js/common/core/common.js'; -import { ApiErr } from '../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../js/common/api/shared/api-error.js'; import { Assert } from '../../js/common/assert.js'; import { Catch } from '../../js/common/platform/catch.js'; import { Contact, KeyInfo, Key, KeyUtil } from '../../js/common/core/crypto/key.js'; diff --git a/extension/chrome/settings/setup/setup-key-manager-autogen.ts b/extension/chrome/settings/setup/setup-key-manager-autogen.ts index 5478ff9722c..879a62f7dc9 100644 --- a/extension/chrome/settings/setup/setup-key-manager-autogen.ts +++ b/extension/chrome/settings/setup/setup-key-manager-autogen.ts @@ -8,8 +8,8 @@ import { Url } from '../../../js/common/core/common.js'; import { AcctStore } from '../../../js/common/platform/store/acct-store.js'; import { Buf } from '../../../js/common/core/buf.js'; import { PgpPwd } from '../../../js/common/core/crypto/pgp/pgp-password.js'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; -import { Api } from '../../../js/common/api/api.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; +import { Api } from '../../../js/common/api/shared/api.js'; import { Settings } from '../../../js/common/settings.js'; import { KeyUtil } from '../../../js/common/core/crypto/key.js'; import { OpenPGPKey } from '../../../js/common/core/crypto/pgp/openpgp-key.js'; diff --git a/extension/chrome/settings/setup/setup-recover-key.ts b/extension/chrome/settings/setup/setup-recover-key.ts index c5127489a4a..4ef9f4d3e2c 100644 --- a/extension/chrome/settings/setup/setup-recover-key.ts +++ b/extension/chrome/settings/setup/setup-recover-key.ts @@ -4,7 +4,7 @@ import { SetupOptions, SetupView } from '../setup.js'; -import { ApiErr } from '../../../js/common/api/error/api-error.js'; +import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { Lang } from '../../../js/common/lang.js'; import { Key, KeyUtil } from '../../../js/common/core/crypto/key.js'; import { Ui } from '../../../js/common/browser/ui.js'; diff --git a/extension/js/background_page/bg-handlers.ts b/extension/js/background_page/bg-handlers.ts index 4b84cc0a66f..3d0f7d87ecf 100644 --- a/extension/js/background_page/bg-handlers.ts +++ b/extension/js/background_page/bg-handlers.ts @@ -2,7 +2,7 @@ 'use strict'; -import { Api } from '../common/api/api.js'; +import { Api } from '../common/api/shared/api.js'; import { BgUtils } from './bgutils.js'; import { Bm } from '../common/browser/browser-msg.js'; import { Gmail } from '../common/api/email-provider/gmail/gmail.js'; diff --git a/extension/js/common/api/backend.ts b/extension/js/common/api/backend.ts index 173b4caee33..617c65336f9 100644 --- a/extension/js/common/api/backend.ts +++ b/extension/js/common/api/backend.ts @@ -5,11 +5,11 @@ 'use strict'; -import { Api, ProgressCb, ProgressCbs, ReqFmt } from './api.js'; +import { Api, ProgressCb, ProgressCbs, ReqFmt } from './shared/api.js'; import { Dict } from '../core/common.js'; import { Att } from '../core/att.js'; import { BACKEND_API_HOST } from '../core/const.js'; -import { BackendAuthErr } from './error/api-error.js'; +import { BackendAuthErr } from './shared/api-error.js'; import { DomainRulesJson } from '../org-rules.js'; import { AcctStore } from '../platform/store/acct-store.js'; diff --git a/extension/js/common/api/email-provider/email-provider-api.ts b/extension/js/common/api/email-provider/email-provider-api.ts index c2fe19894bc..b48a9b3b5e4 100644 --- a/extension/js/common/api/email-provider/email-provider-api.ts +++ b/extension/js/common/api/email-provider/email-provider-api.ts @@ -4,7 +4,7 @@ 'use strict'; -import { Api, ChunkedCb, ProgressCb } from '../api.js'; +import { Api, ChunkedCb, ProgressCb } from '../shared/api.js'; import { Contact, KeyInfo } from '../../core/crypto/key.js'; import { GmailRes } from './gmail/gmail-parser.js'; diff --git a/extension/js/common/api/email-provider/gmail/gmail-parser.ts b/extension/js/common/api/email-provider/gmail/gmail-parser.ts index c6ff2202d19..e43385873cc 100644 --- a/extension/js/common/api/email-provider/gmail/gmail-parser.ts +++ b/extension/js/common/api/email-provider/gmail/gmail-parser.ts @@ -7,7 +7,7 @@ import { Str, Value } from '../../../core/common.js'; import { Att } from '../../../core/att.js'; import { Buf } from '../../../core/buf.js'; -import { RecipientType } from '../../api.js'; +import { RecipientType } from '../../shared/api.js'; import { ReplyParams } from '../email-provider-api.js'; export namespace GmailRes { // responses diff --git a/extension/js/common/api/email-provider/gmail/gmail.ts b/extension/js/common/api/email-provider/gmail/gmail.ts index 316c2d0b1ef..56fc015d7eb 100644 --- a/extension/js/common/api/email-provider/gmail/gmail.ts +++ b/extension/js/common/api/email-provider/gmail/gmail.ts @@ -3,12 +3,12 @@ 'use strict'; import { AddrParserResult, BrowserWindow } from '../../../browser/browser-window.js'; -import { ChunkedCb, ProgressCb } from '../../api.js'; +import { ChunkedCb, ProgressCb } from '../../shared/api.js'; import { Dict, Str, Value } from '../../../core/common.js'; import { EmailProviderApi, EmailProviderInterface, Backups } from '../email-provider-api.js'; import { GOOGLE_API_HOST, gmailBackupSearchQuery } from '../../../core/const.js'; import { GmailParser, GmailRes } from './gmail-parser.js'; -import { AjaxErr } from '../../error/api-error.js'; +import { AjaxErr } from '../../shared/api-error.js'; import { Att } from '../../../core/att.js'; import { BrowserMsg } from '../../../browser/browser-msg.js'; import { Buf } from '../../../core/buf.js'; diff --git a/extension/js/common/api/email-provider/gmail/google-auth.ts b/extension/js/common/api/email-provider/gmail/google-auth.ts index 7c40d637617..85597e67f0b 100644 --- a/extension/js/common/api/email-provider/gmail/google-auth.ts +++ b/extension/js/common/api/email-provider/gmail/google-auth.ts @@ -8,13 +8,13 @@ import { GOOGLE_API_HOST, GOOGLE_OAUTH_SCREEN_HOST, FLAVOR } from '../../../core/const.js'; import { Url, Value } from '../../../core/common.js'; import { tabsQuery, windowsCreate } from '../../../browser/chrome.js'; -import { Api } from './../../api.js'; -import { ApiErr } from './../../error/api-error.js'; +import { Api } from './../../shared/api.js'; +import { ApiErr } from '../../shared/api-error.js'; import { Backend } from './../../backend.js'; import { Buf } from '../../../core/buf.js'; import { Catch } from '../../../platform/catch.js'; import { GmailRes } from './gmail-parser'; -import { GoogleAuthErr } from './../../error/api-error.js'; +import { GoogleAuthErr } from '../../shared/api-error.js'; import { GoogleAuthWindowResult$result } from '../../../browser/browser-msg.js'; import { Ui } from '../../../browser/ui.js'; import { AcctStore, AcctStoreDict } from '../../../platform/store/acct-store.js'; diff --git a/extension/js/common/api/email-provider/gmail/google.ts b/extension/js/common/api/email-provider/gmail/google.ts index bb162c72ad2..46d5970c974 100644 --- a/extension/js/common/api/email-provider/gmail/google.ts +++ b/extension/js/common/api/email-provider/gmail/google.ts @@ -4,7 +4,7 @@ // tslint:disable:no-direct-ajax -import { Api, ProgressCbs, ReqMethod } from '../../api.js'; +import { Api, ProgressCbs, ReqMethod } from '../../shared/api.js'; import { Dict, Str } from '../../../core/common.js'; import { GOOGLE_API_HOST } from '../../../core/const.js'; diff --git a/extension/js/common/api/email-provider/sendable-msg.ts b/extension/js/common/api/email-provider/sendable-msg.ts index 09317f8b421..7f89e8a3652 100644 --- a/extension/js/common/api/email-provider/sendable-msg.ts +++ b/extension/js/common/api/email-provider/sendable-msg.ts @@ -5,7 +5,7 @@ import { Dict, Str } from '../../core/common.js'; import { Mime, MimeEncodeType, SendableMsgBody } from '../../core/mime.js'; import { Att } from '../../core/att.js'; -import { RecipientType } from '../api.js'; +import { RecipientType } from '../shared/api.js'; import { KeyStore } from '../../platform/store/key-store.js'; export type Recipients = { to?: string[], cc?: string[], bcc?: string[] }; diff --git a/extension/js/common/api/flowcrypt-website.ts b/extension/js/common/api/flowcrypt-website.ts index 042730b70f9..3b1fd4974cd 100644 --- a/extension/js/common/api/flowcrypt-website.ts +++ b/extension/js/common/api/flowcrypt-website.ts @@ -5,7 +5,7 @@ 'use strict'; -import { Api, ProgressCbs, ReqFmt } from './api.js'; +import { Api, ProgressCbs, ReqFmt } from './shared/api.js'; import { Dict } from '../core/common.js'; import { BACKEND_API_HOST } from '../core/const.js'; import { Catch } from '../platform/catch.js'; diff --git a/extension/js/common/api/key-server/attester.ts b/extension/js/common/api/key-server/attester.ts index 5e7b95a58cd..2042446461d 100644 --- a/extension/js/common/api/key-server/attester.ts +++ b/extension/js/common/api/key-server/attester.ts @@ -2,10 +2,10 @@ 'use strict'; -import { Api, ReqMethod } from './../api.js'; +import { Api, ReqMethod } from './../shared/api.js'; import { Dict, Str } from '../../core/common.js'; import { PgpClient, PubkeySearchResult } from './../pub-lookup.js'; -import { ApiErr } from './../error/api-error.js'; +import { ApiErr } from '../shared/api-error.js'; import { OrgRules } from '../../org-rules.js'; import { ATTESTER_API_HOST } from '../../core/const.js'; diff --git a/extension/js/common/api/key-server/key-manager.ts b/extension/js/common/api/key-server/key-manager.ts index a3f25302380..f4ee58399c9 100644 --- a/extension/js/common/api/key-server/key-manager.ts +++ b/extension/js/common/api/key-server/key-manager.ts @@ -5,7 +5,7 @@ 'use strict'; -import { Api, ReqMethod } from './../api.js'; +import { Api, ReqMethod } from './../shared/api.js'; import { Dict } from '../../core/common.js'; type LoadPrvRes = { privateKeys: { decryptedPrivateKey: string }[] }; diff --git a/extension/js/common/api/key-server/sks.ts b/extension/js/common/api/key-server/sks.ts index 3b2b0cb27db..bb5859c9666 100644 --- a/extension/js/common/api/key-server/sks.ts +++ b/extension/js/common/api/key-server/sks.ts @@ -2,8 +2,8 @@ 'use strict'; -import { Api } from './../api.js'; -import { ApiErr } from './../error/api-error.js'; +import { Api } from './../shared/api.js'; +import { ApiErr } from '../shared/api-error.js'; import { PgpArmor } from '../../core/crypto/pgp/pgp-armor.js'; import { PubkeySearchResult } from './../pub-lookup.js'; diff --git a/extension/js/common/api/key-server/wkd.ts b/extension/js/common/api/key-server/wkd.ts index 38e903f155c..bffa9916e73 100644 --- a/extension/js/common/api/key-server/wkd.ts +++ b/extension/js/common/api/key-server/wkd.ts @@ -2,8 +2,8 @@ 'use strict'; -import { Api } from './../api.js'; -import { ApiErr } from './../error/api-error.js'; +import { Api } from './../shared/api.js'; +import { ApiErr } from '../shared/api-error.js'; import { opgp } from '../../core/crypto/pgp/openpgpjs-custom.js'; import { Buf } from '../../core/buf.js'; import { Catch } from '../../platform/catch.js'; diff --git a/extension/js/common/api/error/api-error.ts b/extension/js/common/api/shared/api-error.ts similarity index 100% rename from extension/js/common/api/error/api-error.ts rename to extension/js/common/api/shared/api-error.ts diff --git a/extension/js/common/api/api.ts b/extension/js/common/api/shared/api.ts similarity index 94% rename from extension/js/common/api/api.ts rename to extension/js/common/api/shared/api.ts index da866af9fc8..9eb967066a8 100644 --- a/extension/js/common/api/api.ts +++ b/extension/js/common/api/shared/api.ts @@ -4,15 +4,15 @@ // tslint:disable:no-direct-ajax -import { Att } from '../core/att.js'; -import { BrowserMsg } from '../browser/browser-msg.js'; -import { Buf } from '../core/buf.js'; -import { Catch } from '../platform/catch.js'; -import { Contact } from '../core/crypto/key.js'; -import { Dict } from '../core/common.js'; -import { Env } from '../browser/env.js'; -import { secureRandomBytes } from '../platform/util.js'; -import { ApiErr, AjaxErr } from './error/api-error.js'; +import { Att } from '../../core/att.js'; +import { BrowserMsg } from '../../browser/browser-msg.js'; +import { Buf } from '../../core/buf.js'; +import { Catch } from '../../platform/catch.js'; +import { Contact } from '../../core/crypto/key.js'; +import { Dict } from '../../core/common.js'; +import { Env } from '../../browser/env.js'; +import { secureRandomBytes } from '../../platform/util.js'; +import { ApiErr, AjaxErr } from './api-error.js'; export type ReqFmt = 'JSON' | 'FORM' | 'TEXT'; export type RecipientType = 'to' | 'cc' | 'bcc'; diff --git a/extension/js/common/api/well-known-host-meta.ts b/extension/js/common/api/well-known-host-meta.ts index 823474e2d11..f04a6ba5f61 100644 --- a/extension/js/common/api/well-known-host-meta.ts +++ b/extension/js/common/api/well-known-host-meta.ts @@ -7,8 +7,8 @@ import { FLAVOR } from '../core/const.js'; import { OrgRules } from '../org-rules.js'; import { Catch } from '../platform/catch.js'; import { AcctStore } from '../platform/store/acct-store.js'; -import { Api } from './api.js'; -import { ApiErr } from './error/api-error.js'; +import { Api } from './shared/api.js'; +import { ApiErr } from './shared/api-error.js'; type HostMetaResponse = { links?: { rel?: string, href?: string }[] } diff --git a/extension/js/common/browser/browser-msg.ts b/extension/js/common/browser/browser-msg.ts index 5302301d50e..bfebdc5714c 100644 --- a/extension/js/common/browser/browser-msg.ts +++ b/extension/js/common/browser/browser-msg.ts @@ -4,7 +4,7 @@ import { DecryptResult, DiagnoseMsgPubkeysResult, PgpMsgMethod, VerifyRes, PgpMsgTypeResult } from '../core/crypto/pgp/msg-util.js'; import { Dict, Str, UrlParams } from '../core/common.js'; -import { AjaxErr } from '../api/error/api-error.js'; +import { AjaxErr } from '../api/shared/api-error.js'; import { AuthRes } from '../api/email-provider/gmail/google-auth.js'; import { Browser } from './browser.js'; import { BrowserMsgCommonHandlers } from './browser-msg-common-handlers.js'; diff --git a/extension/js/common/browser/browser.ts b/extension/js/common/browser/browser.ts index 44b617fe2c7..9dc4368955c 100644 --- a/extension/js/common/browser/browser.ts +++ b/extension/js/common/browser/browser.ts @@ -4,7 +4,7 @@ 'use strict'; -import { Api } from '../api/api.js'; +import { Api } from '../api/shared/api.js'; import { Att } from '../core/att.js'; import { Catch } from '../platform/catch.js'; import { Dict, Url, UrlParam } from '../core/common.js'; diff --git a/extension/js/common/browser/ui.ts b/extension/js/common/browser/ui.ts index e02352a0cf7..ce82ab5045c 100644 --- a/extension/js/common/browser/ui.ts +++ b/extension/js/common/browser/ui.ts @@ -2,7 +2,7 @@ 'use strict'; -import { ApiErr } from '../api/error/api-error.js'; +import { ApiErr } from '../api/shared/api-error.js'; import { Catch } from '../platform/catch.js'; import { Dict, Url } from '../core/common.js'; import Swal from 'sweetalert2'; diff --git a/extension/js/common/settings.ts b/extension/js/common/settings.ts index 6fba12805af..7151d1cf739 100644 --- a/extension/js/common/settings.ts +++ b/extension/js/common/settings.ts @@ -4,8 +4,8 @@ import { Dict, Str, Url, UrlParams } from './core/common.js'; import { Ui } from './browser/ui.js'; -import { Api } from './api/api.js'; -import { ApiErr, AjaxErr } from './api/error/api-error.js'; +import { Api } from './api/shared/api.js'; +import { ApiErr, AjaxErr } from './api/shared/api-error.js'; import { Backend } from './api/backend.js'; import { Catch } from './platform/catch.js'; import { Env } from './browser/env.js'; diff --git a/extension/js/common/view.ts b/extension/js/common/view.ts index 5fc7aba085c..44ad7227e9e 100644 --- a/extension/js/common/view.ts +++ b/extension/js/common/view.ts @@ -4,7 +4,7 @@ import { BrowserEventErrHandler, PreventableEventName, Ui } from './browser/ui.js'; -import { ApiErr } from './api/error/api-error.js'; +import { ApiErr } from './api/shared/api-error.js'; import { Xss } from './platform/xss.js'; export abstract class View { diff --git a/extension/js/content_scripts/webmail/gmail-element-replacer.ts b/extension/js/content_scripts/webmail/gmail-element-replacer.ts index df6b2bac95c..907bf3e569c 100644 --- a/extension/js/content_scripts/webmail/gmail-element-replacer.ts +++ b/extension/js/content_scripts/webmail/gmail-element-replacer.ts @@ -6,8 +6,8 @@ import { Dict, Str } from '../../common/core/common.js'; import { FactoryReplyParams, WebmailVariantString, XssSafeFactory } from '../../common/xss-safe-factory.js'; import { GmailParser, GmailRes } from '../../common/api/email-provider/gmail/gmail-parser.js'; import { IntervalFunction, WebmailElementReplacer } from './setup-webmail-content-script.js'; -import { AjaxErr } from '../../common/api/error/api-error.js'; -import { ApiErr } from '../../common/api/error/api-error.js'; +import { AjaxErr } from '../../common/api/shared/api-error.js'; +import { ApiErr } from '../../common/api/shared/api-error.js'; import { Att } from '../../common/core/att.js'; import { Browser } from '../../common/browser/browser.js'; import { BrowserMsg } from '../../common/browser/browser-msg.js'; diff --git a/tooling/bundle-content-scripts.ts b/tooling/bundle-content-scripts.ts index 7d078887f54..795ad0f3200 100644 --- a/tooling/bundle-content-scripts.ts +++ b/tooling/bundle-content-scripts.ts @@ -38,8 +38,8 @@ buildContentScript(([] as string[]).concat( getFilesInDir(`${sourceDir}/common/core/crypto`, /\.js$/, false), getFilesInDir(`${sourceDir}/common/core/crypto/pgp`, /\.js$/, false), getFilesInDir(`${sourceDir}/common/core/crypto/smime`, /\.js$/, false), + getFilesInDir(`${sourceDir}/common/api/shared`, /\.js$/, false), getFilesInDir(`${sourceDir}/common/api`, /\.js$/, false), - getFilesInDir(`${sourceDir}/common/api/error`, /\.js$/, false), getFilesInDir(`${sourceDir}/common/api/email-provider`, /\.js$/, false), getFilesInDir(`${sourceDir}/common/api/email-provider/gmail`, /\.js$/, false), getFilesInDir(`${sourceDir}/common/browser`, /\.js$/, false), From 0471d827050bc741cac0868b84bcf11da6b51ebd Mon Sep 17 00:00:00 2001 From: Tom J Date: Mon, 12 Oct 2020 10:32:23 +0000 Subject: [PATCH 04/13] created account-server folder --- extension/chrome/dev/ci_unit_test.ts | 2 +- .../{ => account-server}/well-known-host-meta.ts | 14 +++++++------- tooling/bundle-content-scripts.ts | 4 +++- 3 files changed, 11 insertions(+), 9 deletions(-) rename extension/js/common/api/{ => account-server}/well-known-host-meta.ts (92%) diff --git a/extension/chrome/dev/ci_unit_test.ts b/extension/chrome/dev/ci_unit_test.ts index 8c9cfd72e4b..bdf5ecfe679 100644 --- a/extension/chrome/dev/ci_unit_test.ts +++ b/extension/chrome/dev/ci_unit_test.ts @@ -3,7 +3,7 @@ 'use strict'; import { ApiErr } from '../../js/common/api/shared/api-error.js'; -import { WellKnownHostMeta } from '../../js/common/api/well-known-host-meta.js'; +import { WellKnownHostMeta } from '../../js/common/api/account-server/well-known-host-meta.js'; /** * importing all libs that are tested in ci tests diff --git a/extension/js/common/api/well-known-host-meta.ts b/extension/js/common/api/account-server/well-known-host-meta.ts similarity index 92% rename from extension/js/common/api/well-known-host-meta.ts rename to extension/js/common/api/account-server/well-known-host-meta.ts index f04a6ba5f61..be4f3cfe118 100644 --- a/extension/js/common/api/well-known-host-meta.ts +++ b/extension/js/common/api/account-server/well-known-host-meta.ts @@ -2,13 +2,13 @@ 'use strict'; -import { Buf } from '../core/buf.js'; -import { FLAVOR } from '../core/const.js'; -import { OrgRules } from '../org-rules.js'; -import { Catch } from '../platform/catch.js'; -import { AcctStore } from '../platform/store/acct-store.js'; -import { Api } from './shared/api.js'; -import { ApiErr } from './shared/api-error.js'; +import { Buf } from '../../core/buf.js'; +import { FLAVOR } from '../../core/const.js'; +import { OrgRules } from '../../org-rules.js'; +import { Catch } from '../../platform/catch.js'; +import { AcctStore } from '../../platform/store/acct-store.js'; +import { Api } from '../shared/api.js'; +import { ApiErr } from '../shared/api-error.js'; type HostMetaResponse = { links?: { rel?: string, href?: string }[] } diff --git a/tooling/bundle-content-scripts.ts b/tooling/bundle-content-scripts.ts index 795ad0f3200..782b0488654 100644 --- a/tooling/bundle-content-scripts.ts +++ b/tooling/bundle-content-scripts.ts @@ -39,9 +39,11 @@ buildContentScript(([] as string[]).concat( getFilesInDir(`${sourceDir}/common/core/crypto/pgp`, /\.js$/, false), getFilesInDir(`${sourceDir}/common/core/crypto/smime`, /\.js$/, false), getFilesInDir(`${sourceDir}/common/api/shared`, /\.js$/, false), - getFilesInDir(`${sourceDir}/common/api`, /\.js$/, false), + getFilesInDir(`${sourceDir}/common/api/key-server`, /\.js$/, false), + getFilesInDir(`${sourceDir}/common/api/account-server`, /\.js$/, false), getFilesInDir(`${sourceDir}/common/api/email-provider`, /\.js$/, false), getFilesInDir(`${sourceDir}/common/api/email-provider/gmail`, /\.js$/, false), + getFilesInDir(`${sourceDir}/common/api`, /\.js$/, false), getFilesInDir(`${sourceDir}/common/browser`, /\.js$/, false), getFilesInDir(`${sourceDir}/common`, /\.js$/, false), getFilesInDir(`${sourceDir}/content_scripts/webmail`, /\.js$/), From ca1352183820260ca8ac4179c57f1966721a9326 Mon Sep 17 00:00:00 2001 From: Tom J Date: Mon, 12 Oct 2020 10:34:18 +0000 Subject: [PATCH 05/13] removed unused method --- extension/js/common/api/backend.ts | 27 ++------------------------- extension/js/common/api/pub-lookup.ts | 3 ++- 2 files changed, 4 insertions(+), 26 deletions(-) diff --git a/extension/js/common/api/backend.ts b/extension/js/common/api/backend.ts index 617c65336f9..db03df68c89 100644 --- a/extension/js/common/api/backend.ts +++ b/extension/js/common/api/backend.ts @@ -8,10 +8,10 @@ import { Api, ProgressCb, ProgressCbs, ReqFmt } from './shared/api.js'; import { Dict } from '../core/common.js'; import { Att } from '../core/att.js'; -import { BACKEND_API_HOST } from '../core/const.js'; import { BackendAuthErr } from './shared/api-error.js'; import { DomainRulesJson } from '../org-rules.js'; import { AcctStore } from '../platform/store/acct-store.js'; +import { FlowCryptWebsite } from './flowcrypt-website.js'; type ProfileUpdate = { alias?: string, name?: string, photo?: string, intro?: string, web?: string, phone?: string, default_message_expire?: number }; @@ -40,29 +40,6 @@ export namespace BackendRes { export class Backend extends Api { - public static url = (type: 'api' | 'me' | 'pubkey' | 'decrypt' | 'web', resource = '') => { - return ({ - api: BACKEND_API_HOST, - me: `https://flowcrypt.com/me/${resource}`, - pubkey: `https://flowcrypt.com/pub/${resource}`, - decrypt: `https://flowcrypt.com/${resource}`, - web: 'https://flowcrypt.com/', - } as Dict)[type]; - } - - // public static loginWithVerificationEmail = async (account: string, uuid: string, token: string): Promise<{ verified: boolean, subscription: SubscriptionInfo }> => { - // const response = await Backend.request('account/login', { - // account, - // uuid, - // token: token || null, // tslint:disable-line:no-null-keyword - // }, undefined) as BackendRes.FcAccountLogin; - // if (response.registered !== true) { - // throw new Error('account_login did not result in successful registration'); - // } - // await AcctStore.set(account, { uuid, subscription: response.subscription }); - // return { verified: response.verified === true, subscription: response.subscription }; - // } - public static loginWithOpenid = async (acctEmail: string, uuid: string, idToken: string): Promise => { const response = await Backend.request('account/login', { account: acctEmail, @@ -128,7 +105,7 @@ export class Backend extends Api { } private static request = async (path: string, vals: Dict, fmt: ReqFmt = 'JSON', addHeaders: Dict = {}, progressCbs?: ProgressCbs): Promise => { - return await Backend.apiCall(Backend.url('api'), path, vals, fmt, progressCbs, { 'api-version': '3', ...addHeaders }); + return await Backend.apiCall(FlowCryptWebsite.url('api'), path, vals, fmt, progressCbs, { 'api-version': '3', ...addHeaders }); } private static throwIfMissingUuid = (fcAuth: FcUuidAuth) => { diff --git a/extension/js/common/api/pub-lookup.ts b/extension/js/common/api/pub-lookup.ts index ab207a42b9e..9ae4a83dafb 100644 --- a/extension/js/common/api/pub-lookup.ts +++ b/extension/js/common/api/pub-lookup.ts @@ -14,7 +14,8 @@ export type PubkeySearchResult = { pubkey: string | null; pgpClient: PgpClient } /** * Look up public keys. * - * Some orgs may have a preference to use their own keyserver. In such cases, results from their own keyserver will be preferred. + * Some orgs may have a preference to use their own keyserver. + * In such cases, results from their own keyserver will be preferred. */ export class PubLookup { From d24883f09742d091a5a0b0f2367f6b2b1c86d065 Mon Sep 17 00:00:00 2001 From: Tom J Date: Mon, 12 Oct 2020 10:39:45 +0000 Subject: [PATCH 06/13] rename Backend -> FlowCryptComApi --- .../compose-pwd-or-pubkey-container-module.ts | 4 +-- .../compose-modules/compose-storage-module.ts | 4 +-- .../encrypted-mail-msg-formatter.ts | 9 +++--- extension/chrome/elements/subscribe.ts | 6 ++-- extension/chrome/settings/index.ts | 4 +-- extension/chrome/settings/modules/account.ts | 4 +-- extension/chrome/settings/modules/my_key.ts | 4 +-- extension/chrome/settings/modules/security.ts | 6 ++-- extension/js/common/api/backend.ts | 30 +++++++++---------- .../api/email-provider/gmail/google-auth.ts | 6 ++-- extension/js/common/settings.ts | 6 ++-- tooling/bundle-content-scripts.ts | 2 +- 12 files changed, 43 insertions(+), 42 deletions(-) diff --git a/extension/chrome/elements/compose-modules/compose-pwd-or-pubkey-container-module.ts b/extension/chrome/elements/compose-modules/compose-pwd-or-pubkey-container-module.ts index 63c51474ce6..686541d7d84 100644 --- a/extension/chrome/elements/compose-modules/compose-pwd-or-pubkey-container-module.ts +++ b/extension/chrome/elements/compose-modules/compose-pwd-or-pubkey-container-module.ts @@ -2,7 +2,7 @@ 'use strict'; -import { Backend } from '../../../js/common/api/backend.js'; +import { FlowCryptComApi } from '../../../js/common/api/backend.js'; import { RecipientStatuses, SendBtnTexts } from './compose-types.js'; import { KeyImportUi } from '../../../js/common/ui/key-import-ui.js'; import { Catch } from '../../../js/common/platform/catch.js'; @@ -90,7 +90,7 @@ export class ComposePwdOrPubkeyContainerModule extends ViewModule { expirationTextEl.text(Str.pluralize(this.MSG_EXPIRE_DAYS_DEFAULT, 'day')); } else { try { - const response = await Backend.accountGetAndUpdateLocalStore(authInfo); + const response = await FlowCryptComApi.accountGetAndUpdateLocalStore(authInfo); expirationTextEl.text(Str.pluralize(response.account.default_message_expire, 'day')); } catch (e) { ApiErr.reportIfSignificant(e); diff --git a/extension/chrome/elements/compose-modules/compose-storage-module.ts b/extension/chrome/elements/compose-modules/compose-storage-module.ts index 867ee1b5835..153dccb062a 100644 --- a/extension/chrome/elements/compose-modules/compose-storage-module.ts +++ b/extension/chrome/elements/compose-modules/compose-storage-module.ts @@ -16,7 +16,7 @@ import { AcctStore } from '../../../js/common/platform/store/acct-store.js'; import { GlobalStore } from '../../../js/common/platform/store/global-store.js'; import { ContactStore } from '../../../js/common/platform/store/contact-store.js'; import { PassphraseStore } from '../../../js/common/platform/store/passphrase-store.js'; -import { Backend } from '../../../js/common/api/backend.js'; +import { FlowCryptComApi } from '../../../js/common/api/backend.js'; import { Settings } from '../../../js/common/settings.js'; export class ComposeStorageModule extends ViewModule { @@ -211,7 +211,7 @@ export class ComposeStorageModule extends ViewModule { const auth = await AcctStore.authInfo(this.view.acctEmail); if (auth.uuid) { try { - await Backend.accountGetAndUpdateLocalStore(auth); // updates storage + await FlowCryptComApi.accountGetAndUpdateLocalStore(auth); // updates storage } catch (e) { if (ApiErr.isAuthErr(e)) { Settings.offerToLoginWithPopupShowModalOnErr( diff --git a/extension/chrome/elements/compose-modules/formatters/encrypted-mail-msg-formatter.ts b/extension/chrome/elements/compose-modules/formatters/encrypted-mail-msg-formatter.ts index 9b85fc3a8bc..7e45ea2cea5 100644 --- a/extension/chrome/elements/compose-modules/formatters/encrypted-mail-msg-formatter.ts +++ b/extension/chrome/elements/compose-modules/formatters/encrypted-mail-msg-formatter.ts @@ -2,7 +2,7 @@ 'use strict'; -import { Backend, FcUuidAuth } from '../../../../js/common/api/backend.js'; +import { FlowCryptComApi, FcUuidAuth } from '../../../../js/common/api/backend.js'; import { BaseMailFormatter } from './base-mail-formatter.js'; import { ComposerResetBtnTrigger } from '../compose-err-module.js'; import { Mime, SendableMsgBody } from '../../../../js/common/core/mime.js'; @@ -21,6 +21,7 @@ import { Ui } from '../../../../js/common/browser/ui.js'; import { Xss } from '../../../../js/common/platform/xss.js'; import { ContactStore } from '../../../../js/common/platform/store/contact-store.js'; import { AcctStore } from '../../../../js/common/platform/store/acct-store.js'; +import { FlowCryptWebsite } from '../../../../js/common/api/flowcrypt-website.js'; export class EncryptedMsgMailFormatter extends BaseMailFormatter { @@ -43,7 +44,7 @@ export class EncryptedMsgMailFormatter extends BaseMailFormatter { const msgBodyWithReplyToken = await this.getPwdMsgSendableBodyWithOnlineReplyMsgToken(authInfo, newMsg); const pgpMimeWithAtts = await Mime.encode(msgBodyWithReplyToken, { Subject: newMsg.subject }, await this.view.attsModule.attach.collectAtts()); const { data: pwdEncryptedWithAtts } = await this.encryptDataArmor(Buf.fromUtfStr(pgpMimeWithAtts), newMsg.pwd, []); // encrypted only for pwd, not signed - const { short, admin_code } = await Backend.messageUpload( + const { short, admin_code } = await FlowCryptComApi.messageUpload( authInfo.uuid ? authInfo : undefined, pwdEncryptedWithAtts, (p) => this.view.sendBtnModule.renderUploadProgress(p, 'FIRST-HALF'), // still need to upload to Gmail later, this request represents first half of progress @@ -97,7 +98,7 @@ export class EncryptedMsgMailFormatter extends BaseMailFormatter { } const recipients = Array.prototype.concat.apply([], Object.values(newMsgData.recipients)); try { - const response = await Backend.messageToken(authInfo); + const response = await FlowCryptComApi.messageToken(authInfo); const infoDiv = Ui.e('div', { 'style': 'display: none;', 'class': 'cryptup_reply', @@ -165,7 +166,7 @@ export class EncryptedMsgMailFormatter extends BaseMailFormatter { private formatPwdEncryptedMsgBodyLink = async (short: string): Promise => { const storage = await AcctStore.get(this.acctEmail, ['outgoing_language']); const lang = storage.outgoing_language || 'EN'; - const msgUrl = Backend.url('decrypt', short); + const msgUrl = FlowCryptWebsite.url('decrypt', short); const aStyle = `padding: 2px 6px; background: #2199e8; color: #fff; display: inline-block; text-decoration: none;`; const a = `${Lang.compose.openMsg[lang]}`; const intro = this.view.S.cached('input_intro').length ? this.view.inputModule.extract('text', 'input_intro') : undefined; diff --git a/extension/chrome/elements/subscribe.ts b/extension/chrome/elements/subscribe.ts index dbd46251e54..33d076fb95b 100644 --- a/extension/chrome/elements/subscribe.ts +++ b/extension/chrome/elements/subscribe.ts @@ -2,7 +2,7 @@ 'use strict'; -import { Backend, FcUuidAuth, PaymentMethod, SubscriptionLevel } from '../../js/common/api/backend.js'; +import { FlowCryptComApi, FcUuidAuth, PaymentMethod, SubscriptionLevel } from '../../js/common/api/backend.js'; import { Bm, BrowserMsg } from '../../js/common/browser/browser-msg.js'; import { Str, Url } from '../../js/common/core/common.js'; import { ApiErr } from '../../js/common/api/shared/api-error.js'; @@ -73,7 +73,7 @@ View.run(class SubscribeView extends View { private renderSubscriptionDetails = async () => { this.authInfo = await AcctStore.authInfo(this.acctEmail); try { - await Backend.accountGetAndUpdateLocalStore(this.authInfo); + await FlowCryptComApi.accountGetAndUpdateLocalStore(this.authInfo); } catch (e) { if (ApiErr.isAuthErr(e)) { Xss.sanitizeRender('#content', `Not logged in. ${Ui.retryLink()}`); @@ -124,7 +124,7 @@ View.run(class SubscribeView extends View { private subscribeAndHandleResult = async (chosenProduct: Product, source: string | undefined) => { try { - const response = await Backend.accountSubscribe(this.authInfo!, chosenProduct.id!, chosenProduct.method!, source); + const response = await FlowCryptComApi.accountSubscribe(this.authInfo!, chosenProduct.id!, chosenProduct.method!, source); if (response.subscription.level === chosenProduct.level && response.subscription.method === chosenProduct.method) { await Ui.modal.info('Successfully upgraded to FlowCrypt Advanced.'); this.closeDialog(); diff --git a/extension/chrome/settings/index.ts b/extension/chrome/settings/index.ts index 755611f53ba..83e83f6e550 100644 --- a/extension/chrome/settings/index.ts +++ b/extension/chrome/settings/index.ts @@ -8,7 +8,7 @@ import { KeyInfo, KeyUtil } from '../../js/common/core/crypto/key.js'; import { Str, Url, UrlParams } from '../../js/common/core/common.js'; import { ApiErr } from '../../js/common/api/shared/api-error.js'; import { Assert } from '../../js/common/assert.js'; -import { Backend } from '../../js/common/api/backend.js'; +import { FlowCryptComApi } from '../../js/common/api/backend.js'; import { Catch } from '../../js/common/platform/catch.js'; import { Env } from '../../js/common/browser/env.js'; import { Gmail } from '../../js/common/api/email-provider/gmail/gmail.js'; @@ -306,7 +306,7 @@ View.run(class SettingsView extends View { const authInfo = await AcctStore.authInfo(this.acctEmail!); if (authInfo.uuid) { // have auth email set try { - const response = await Backend.accountGetAndUpdateLocalStore(authInfo); + const response = await FlowCryptComApi.accountGetAndUpdateLocalStore(authInfo); $('#status-row #status_flowcrypt').text(`fc:ok`); if (response?.account?.alias) { statusContainer.find('.status-indicator-text').css('display', 'none'); diff --git a/extension/chrome/settings/modules/account.ts b/extension/chrome/settings/modules/account.ts index 9df83769a1e..16235ebbf39 100644 --- a/extension/chrome/settings/modules/account.ts +++ b/extension/chrome/settings/modules/account.ts @@ -4,7 +4,7 @@ import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { Assert } from '../../../js/common/assert.js'; -import { Backend } from '../../../js/common/api/backend.js'; +import { FlowCryptComApi } from '../../../js/common/api/backend.js'; import { Settings } from '../../../js/common/settings.js'; import { Ui } from '../../../js/common/browser/ui.js'; import { Url } from '../../../js/common/core/common.js'; @@ -32,7 +32,7 @@ View.run(class AccountView extends View { const authInfo = await AcctStore.authInfo(this.acctEmail); let subscription = await AcctStore.getSubscription(this.acctEmail); try { - const r = await Backend.accountGetAndUpdateLocalStore(authInfo); + const r = await FlowCryptComApi.accountGetAndUpdateLocalStore(authInfo); subscription = new Subscription(r.subscription); } catch (e) { if (ApiErr.isAuthErr(e) && subscription.level) { diff --git a/extension/chrome/settings/modules/my_key.ts b/extension/chrome/settings/modules/my_key.ts index d4e849d7382..665e49158e6 100644 --- a/extension/chrome/settings/modules/my_key.ts +++ b/extension/chrome/settings/modules/my_key.ts @@ -5,7 +5,6 @@ import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { Assert } from '../../../js/common/assert.js'; import { Att } from '../../../js/common/core/att.js'; -import { Backend } from '../../../js/common/api/backend.js'; import { Browser } from '../../../js/common/browser/browser.js'; import { Buf } from '../../../js/common/core/buf.js'; import { KeyInfo, Key, KeyUtil } from '../../../js/common/core/crypto/key.js'; @@ -18,6 +17,7 @@ import { OrgRules } from '../../../js/common/org-rules.js'; import { PassphraseStore } from '../../../js/common/platform/store/passphrase-store.js'; import { KeyStore } from '../../../js/common/platform/store/key-store.js'; import { Xss } from '../../../js/common/platform/xss.js'; +import { FlowCryptWebsite } from '../../../js/common/api/flowcrypt-website.js'; declare const ClipboardJS: any; @@ -71,7 +71,7 @@ View.run(class MyKeyView extends View { private renderPubkeyShareableLink = async () => { try { const result = await this.pubLookup.attester.lookupEmail(this.acctEmail); - const url = Backend.url('pubkey', this.acctEmail); + const url = FlowCryptWebsite.url('pubkey', this.acctEmail); if (result.pubkey && (await KeyUtil.parse(result.pubkey)).id === this.keyInfo.fingerprint) { $('.pubkey_link_container a').text(url.replace('https://', '')).attr('href', url).parent().css('display', ''); } else { diff --git a/extension/chrome/settings/modules/security.ts b/extension/chrome/settings/modules/security.ts index 6b13c15bae6..48458a1a079 100644 --- a/extension/chrome/settings/modules/security.ts +++ b/extension/chrome/settings/modules/security.ts @@ -2,7 +2,7 @@ 'use strict'; -import { Backend, FcUuidAuth } from '../../../js/common/api/backend.js'; +import { FlowCryptComApi, FcUuidAuth } from '../../../js/common/api/backend.js'; import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { Assert } from '../../../js/common/assert.js'; import { Catch } from '../../../js/common/platform/catch.js'; @@ -87,7 +87,7 @@ View.run(class SecurityView extends View { if (subscription.active) { Xss.sanitizeRender('.select_loader_container', Ui.spinner('green')); try { - const response = await Backend.accountGetAndUpdateLocalStore(this.authInfo!); + const response = await FlowCryptComApi.accountGetAndUpdateLocalStore(this.authInfo!); $('.select_loader_container').text(''); $('.default_message_expire').val(Number(response.account.default_message_expire).toString()).prop('disabled', false).css('display', 'inline-block'); $('.default_message_expire').change(this.setHandler(() => this.onDefaultExpireUserChange())); @@ -111,7 +111,7 @@ View.run(class SecurityView extends View { private onDefaultExpireUserChange = async () => { Xss.sanitizeRender('.select_loader_container', Ui.spinner('green')); $('.default_message_expire').css('display', 'none'); - await Backend.accountUpdate(this.authInfo!, { default_message_expire: Number($('.default_message_expire').val()) }); + await FlowCryptComApi.accountUpdate(this.authInfo!, { default_message_expire: Number($('.default_message_expire').val()) }); window.location.reload(); } diff --git a/extension/js/common/api/backend.ts b/extension/js/common/api/backend.ts index db03df68c89..7dcf24e284f 100644 --- a/extension/js/common/api/backend.ts +++ b/extension/js/common/api/backend.ts @@ -38,10 +38,10 @@ export namespace BackendRes { export type ApirFcMsgExpiration = { updated: boolean }; } -export class Backend extends Api { +export class FlowCryptComApi extends Api { public static loginWithOpenid = async (acctEmail: string, uuid: string, idToken: string): Promise => { - const response = await Backend.request('account/login', { + const response = await FlowCryptComApi.request('account/login', { account: acctEmail, uuid, token: null, // tslint:disable-line:no-null-keyword @@ -53,23 +53,23 @@ export class Backend extends Api { } public static accountUpdate = async (fcAuth: FcUuidAuth, profileUpdate: ProfileUpdate): Promise => { - Backend.throwIfMissingUuid(fcAuth); - return await Backend.request('account/update', { + FlowCryptComApi.throwIfMissingUuid(fcAuth); + return await FlowCryptComApi.request('account/update', { ...fcAuth, ...profileUpdate }); } public static accountGetAndUpdateLocalStore = async (fcAuth: FcUuidAuth): Promise => { - Backend.throwIfMissingUuid(fcAuth); - const r = await Backend.request('account/get', fcAuth); + FlowCryptComApi.throwIfMissingUuid(fcAuth); + const r = await FlowCryptComApi.request('account/get', fcAuth); await AcctStore.set(fcAuth.account, { rules: r.domain_org_rules, subscription: r.subscription }); return r; } public static accountSubscribe = async (fcAuth: FcUuidAuth, product: string, method: string, paymentSourceToken?: string): Promise => { - Backend.throwIfMissingUuid(fcAuth); - const response = await Backend.request('account/subscribe', { + FlowCryptComApi.throwIfMissingUuid(fcAuth); + const response = await FlowCryptComApi.request('account/subscribe', { ...fcAuth, method, source: paymentSourceToken || null, // tslint:disable-line:no-null-keyword @@ -81,17 +81,17 @@ export class Backend extends Api { public static messageUpload = async (fcAuth: FcUuidAuth | undefined, encryptedDataBinary: Uint8Array, progressCb: ProgressCb): Promise => { const content = new Att({ name: 'cryptup_encrypted_message.asc', type: 'text/plain', data: encryptedDataBinary }); - return await Backend.request('message/upload', { content, ...(fcAuth || {}) }, 'FORM', undefined, { upload: progressCb }); + return await FlowCryptComApi.request('message/upload', { content, ...(fcAuth || {}) }, 'FORM', undefined, { upload: progressCb }); } public static messageToken = async (fcAuth: FcUuidAuth): Promise => { - Backend.throwIfMissingUuid(fcAuth); - return await Backend.request('message/token', { ...fcAuth }); + FlowCryptComApi.throwIfMissingUuid(fcAuth); + return await FlowCryptComApi.request('message/token', { ...fcAuth }); } public static messageExpiration = async (fcAuth: FcUuidAuth, adminCodes: string[], addDays?: number): Promise => { - Backend.throwIfMissingUuid(fcAuth); - return await Backend.request('message/expiration', { + FlowCryptComApi.throwIfMissingUuid(fcAuth); + return await FlowCryptComApi.request('message/expiration', { ...fcAuth, admin_codes: adminCodes, add_days: addDays || null, // tslint:disable-line:no-null-keyword @@ -99,13 +99,13 @@ export class Backend extends Api { } public static linkMessage = async (short: string): Promise => { - return await Backend.request('link/message', { + return await FlowCryptComApi.request('link/message', { short, }); } private static request = async (path: string, vals: Dict, fmt: ReqFmt = 'JSON', addHeaders: Dict = {}, progressCbs?: ProgressCbs): Promise => { - return await Backend.apiCall(FlowCryptWebsite.url('api'), path, vals, fmt, progressCbs, { 'api-version': '3', ...addHeaders }); + return await FlowCryptComApi.apiCall(FlowCryptWebsite.url('api'), path, vals, fmt, progressCbs, { 'api-version': '3', ...addHeaders }); } private static throwIfMissingUuid = (fcAuth: FcUuidAuth) => { diff --git a/extension/js/common/api/email-provider/gmail/google-auth.ts b/extension/js/common/api/email-provider/gmail/google-auth.ts index 85597e67f0b..9071f95582e 100644 --- a/extension/js/common/api/email-provider/gmail/google-auth.ts +++ b/extension/js/common/api/email-provider/gmail/google-auth.ts @@ -10,7 +10,7 @@ import { Url, Value } from '../../../core/common.js'; import { tabsQuery, windowsCreate } from '../../../browser/chrome.js'; import { Api } from './../../shared/api.js'; import { ApiErr } from '../../shared/api-error.js'; -import { Backend } from './../../backend.js'; +import { FlowCryptComApi } from './../../backend.js'; import { Buf } from '../../../core/buf.js'; import { Catch } from '../../../platform/catch.js'; import { GmailRes } from './gmail-parser'; @@ -143,8 +143,8 @@ export class GoogleAuth { } try { const uuid = Api.randomFortyHexChars(); - await Backend.loginWithOpenid(authRes.acctEmail, uuid, authRes.id_token); - await Backend.accountGetAndUpdateLocalStore({ account: authRes.acctEmail, uuid }); // will store org rules and subscription + await FlowCryptComApi.loginWithOpenid(authRes.acctEmail, uuid, authRes.id_token); + await FlowCryptComApi.accountGetAndUpdateLocalStore({ account: authRes.acctEmail, uuid }); // will store org rules and subscription } catch (e) { return { result: 'Error', error: `Grant successful but error accessing fc account: ${String(e)}`, acctEmail: authRes.acctEmail, id_token: undefined }; } diff --git a/extension/js/common/settings.ts b/extension/js/common/settings.ts index 7151d1cf739..f9fed2e269c 100644 --- a/extension/js/common/settings.ts +++ b/extension/js/common/settings.ts @@ -6,7 +6,7 @@ import { Dict, Str, Url, UrlParams } from './core/common.js'; import { Ui } from './browser/ui.js'; import { Api } from './api/shared/api.js'; import { ApiErr, AjaxErr } from './api/shared/api-error.js'; -import { Backend } from './api/backend.js'; +import { FlowCryptComApi } from './api/backend.js'; import { Catch } from './platform/catch.js'; import { Env } from './browser/env.js'; import { Gmail } from './api/email-provider/gmail/gmail.js'; @@ -336,8 +336,8 @@ export class Settings { if (authRes.result === 'Success' && authRes.acctEmail && authRes.id_token) { const uuid = Api.randomFortyHexChars(); try { - await Backend.loginWithOpenid(authRes.acctEmail, uuid, authRes.id_token); - await Backend.accountGetAndUpdateLocalStore({ account: authRes.acctEmail, uuid }); + await FlowCryptComApi.loginWithOpenid(authRes.acctEmail, uuid, authRes.id_token); + await FlowCryptComApi.accountGetAndUpdateLocalStore({ account: authRes.acctEmail, uuid }); then(); } catch (e) { await Ui.modal.error(`Could not log in with FlowCrypt:\n\n${ApiErr.eli5(e)}\n\n${String(e)}`); diff --git a/tooling/bundle-content-scripts.ts b/tooling/bundle-content-scripts.ts index 782b0488654..e0ca2a1257a 100644 --- a/tooling/bundle-content-scripts.ts +++ b/tooling/bundle-content-scripts.ts @@ -40,7 +40,7 @@ buildContentScript(([] as string[]).concat( getFilesInDir(`${sourceDir}/common/core/crypto/smime`, /\.js$/, false), getFilesInDir(`${sourceDir}/common/api/shared`, /\.js$/, false), getFilesInDir(`${sourceDir}/common/api/key-server`, /\.js$/, false), - getFilesInDir(`${sourceDir}/common/api/account-server`, /\.js$/, false), + // getFilesInDir(`${sourceDir}/common/api/account-server`, /\.js$/, false), // not used by content scripts yet getFilesInDir(`${sourceDir}/common/api/email-provider`, /\.js$/, false), getFilesInDir(`${sourceDir}/common/api/email-provider/gmail`, /\.js$/, false), getFilesInDir(`${sourceDir}/common/api`, /\.js$/, false), From e1bf2a7fd1ea2c33002feb0d6f4f4c8ad996bd9f Mon Sep 17 00:00:00 2001 From: Tom J Date: Mon, 12 Oct 2020 10:40:59 +0000 Subject: [PATCH 07/13] account-server -> account-servers --- extension/chrome/dev/ci_unit_test.ts | 2 +- .../{account-server => account-servers}/well-known-host-meta.ts | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename extension/js/common/api/{account-server => account-servers}/well-known-host-meta.ts (100%) diff --git a/extension/chrome/dev/ci_unit_test.ts b/extension/chrome/dev/ci_unit_test.ts index bdf5ecfe679..5af0ca66846 100644 --- a/extension/chrome/dev/ci_unit_test.ts +++ b/extension/chrome/dev/ci_unit_test.ts @@ -3,7 +3,7 @@ 'use strict'; import { ApiErr } from '../../js/common/api/shared/api-error.js'; -import { WellKnownHostMeta } from '../../js/common/api/account-server/well-known-host-meta.js'; +import { WellKnownHostMeta } from '../../js/common/api/account-servers/well-known-host-meta.js'; /** * importing all libs that are tested in ci tests diff --git a/extension/js/common/api/account-server/well-known-host-meta.ts b/extension/js/common/api/account-servers/well-known-host-meta.ts similarity index 100% rename from extension/js/common/api/account-server/well-known-host-meta.ts rename to extension/js/common/api/account-servers/well-known-host-meta.ts From 2ebb51204c250eb71e0f72116fcecaffc978d8cb Mon Sep 17 00:00:00 2001 From: Tom J Date: Mon, 12 Oct 2020 10:42:06 +0000 Subject: [PATCH 08/13] renamed file --- .../compose-modules/compose-pwd-or-pubkey-container-module.ts | 2 +- .../chrome/elements/compose-modules/compose-storage-module.ts | 2 +- .../compose-modules/formatters/encrypted-mail-msg-formatter.ts | 2 +- extension/chrome/elements/subscribe.ts | 2 +- extension/chrome/settings/index.ts | 2 +- extension/chrome/settings/modules/account.ts | 2 +- extension/chrome/settings/modules/security.ts | 2 +- extension/js/common/api/email-provider/gmail/google-auth.ts | 2 +- extension/js/common/api/{backend.ts => flowcrypt-com-api.ts} | 0 extension/js/common/platform/store/abstract-store.ts | 2 +- extension/js/common/platform/store/acct-store.ts | 2 +- extension/js/common/settings.ts | 2 +- extension/js/common/subscription.ts | 2 +- 13 files changed, 12 insertions(+), 12 deletions(-) rename extension/js/common/api/{backend.ts => flowcrypt-com-api.ts} (100%) diff --git a/extension/chrome/elements/compose-modules/compose-pwd-or-pubkey-container-module.ts b/extension/chrome/elements/compose-modules/compose-pwd-or-pubkey-container-module.ts index 686541d7d84..263a13590a2 100644 --- a/extension/chrome/elements/compose-modules/compose-pwd-or-pubkey-container-module.ts +++ b/extension/chrome/elements/compose-modules/compose-pwd-or-pubkey-container-module.ts @@ -2,7 +2,7 @@ 'use strict'; -import { FlowCryptComApi } from '../../../js/common/api/backend.js'; +import { FlowCryptComApi } from '../../../js/common/api/flowcrypt-com-api.js'; import { RecipientStatuses, SendBtnTexts } from './compose-types.js'; import { KeyImportUi } from '../../../js/common/ui/key-import-ui.js'; import { Catch } from '../../../js/common/platform/catch.js'; diff --git a/extension/chrome/elements/compose-modules/compose-storage-module.ts b/extension/chrome/elements/compose-modules/compose-storage-module.ts index 153dccb062a..654baf78cd8 100644 --- a/extension/chrome/elements/compose-modules/compose-storage-module.ts +++ b/extension/chrome/elements/compose-modules/compose-storage-module.ts @@ -16,7 +16,7 @@ import { AcctStore } from '../../../js/common/platform/store/acct-store.js'; import { GlobalStore } from '../../../js/common/platform/store/global-store.js'; import { ContactStore } from '../../../js/common/platform/store/contact-store.js'; import { PassphraseStore } from '../../../js/common/platform/store/passphrase-store.js'; -import { FlowCryptComApi } from '../../../js/common/api/backend.js'; +import { FlowCryptComApi } from '../../../js/common/api/flowcrypt-com-api.js'; import { Settings } from '../../../js/common/settings.js'; export class ComposeStorageModule extends ViewModule { diff --git a/extension/chrome/elements/compose-modules/formatters/encrypted-mail-msg-formatter.ts b/extension/chrome/elements/compose-modules/formatters/encrypted-mail-msg-formatter.ts index 7e45ea2cea5..955f28c9ee0 100644 --- a/extension/chrome/elements/compose-modules/formatters/encrypted-mail-msg-formatter.ts +++ b/extension/chrome/elements/compose-modules/formatters/encrypted-mail-msg-formatter.ts @@ -2,7 +2,7 @@ 'use strict'; -import { FlowCryptComApi, FcUuidAuth } from '../../../../js/common/api/backend.js'; +import { FlowCryptComApi, FcUuidAuth } from '../../../../js/common/api/flowcrypt-com-api.js'; import { BaseMailFormatter } from './base-mail-formatter.js'; import { ComposerResetBtnTrigger } from '../compose-err-module.js'; import { Mime, SendableMsgBody } from '../../../../js/common/core/mime.js'; diff --git a/extension/chrome/elements/subscribe.ts b/extension/chrome/elements/subscribe.ts index 33d076fb95b..240c28d60fc 100644 --- a/extension/chrome/elements/subscribe.ts +++ b/extension/chrome/elements/subscribe.ts @@ -2,7 +2,7 @@ 'use strict'; -import { FlowCryptComApi, FcUuidAuth, PaymentMethod, SubscriptionLevel } from '../../js/common/api/backend.js'; +import { FlowCryptComApi, FcUuidAuth, PaymentMethod, SubscriptionLevel } from '../../js/common/api/flowcrypt-com-api.js'; import { Bm, BrowserMsg } from '../../js/common/browser/browser-msg.js'; import { Str, Url } from '../../js/common/core/common.js'; import { ApiErr } from '../../js/common/api/shared/api-error.js'; diff --git a/extension/chrome/settings/index.ts b/extension/chrome/settings/index.ts index 83e83f6e550..707c64040f3 100644 --- a/extension/chrome/settings/index.ts +++ b/extension/chrome/settings/index.ts @@ -8,7 +8,7 @@ import { KeyInfo, KeyUtil } from '../../js/common/core/crypto/key.js'; import { Str, Url, UrlParams } from '../../js/common/core/common.js'; import { ApiErr } from '../../js/common/api/shared/api-error.js'; import { Assert } from '../../js/common/assert.js'; -import { FlowCryptComApi } from '../../js/common/api/backend.js'; +import { FlowCryptComApi } from '../../js/common/api/flowcrypt-com-api.js'; import { Catch } from '../../js/common/platform/catch.js'; import { Env } from '../../js/common/browser/env.js'; import { Gmail } from '../../js/common/api/email-provider/gmail/gmail.js'; diff --git a/extension/chrome/settings/modules/account.ts b/extension/chrome/settings/modules/account.ts index 16235ebbf39..93f2a533930 100644 --- a/extension/chrome/settings/modules/account.ts +++ b/extension/chrome/settings/modules/account.ts @@ -4,7 +4,7 @@ import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { Assert } from '../../../js/common/assert.js'; -import { FlowCryptComApi } from '../../../js/common/api/backend.js'; +import { FlowCryptComApi } from '../../../js/common/api/flowcrypt-com-api.js'; import { Settings } from '../../../js/common/settings.js'; import { Ui } from '../../../js/common/browser/ui.js'; import { Url } from '../../../js/common/core/common.js'; diff --git a/extension/chrome/settings/modules/security.ts b/extension/chrome/settings/modules/security.ts index 48458a1a079..73ac6c4ef45 100644 --- a/extension/chrome/settings/modules/security.ts +++ b/extension/chrome/settings/modules/security.ts @@ -2,7 +2,7 @@ 'use strict'; -import { FlowCryptComApi, FcUuidAuth } from '../../../js/common/api/backend.js'; +import { FlowCryptComApi, FcUuidAuth } from '../../../js/common/api/flowcrypt-com-api.js'; import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { Assert } from '../../../js/common/assert.js'; import { Catch } from '../../../js/common/platform/catch.js'; diff --git a/extension/js/common/api/email-provider/gmail/google-auth.ts b/extension/js/common/api/email-provider/gmail/google-auth.ts index 9071f95582e..72b0369abb3 100644 --- a/extension/js/common/api/email-provider/gmail/google-auth.ts +++ b/extension/js/common/api/email-provider/gmail/google-auth.ts @@ -10,7 +10,7 @@ import { Url, Value } from '../../../core/common.js'; import { tabsQuery, windowsCreate } from '../../../browser/chrome.js'; import { Api } from './../../shared/api.js'; import { ApiErr } from '../../shared/api-error.js'; -import { FlowCryptComApi } from './../../backend.js'; +import { FlowCryptComApi } from '../../flowcrypt-com-api.js'; import { Buf } from '../../../core/buf.js'; import { Catch } from '../../../platform/catch.js'; import { GmailRes } from './gmail-parser'; diff --git a/extension/js/common/api/backend.ts b/extension/js/common/api/flowcrypt-com-api.ts similarity index 100% rename from extension/js/common/api/backend.ts rename to extension/js/common/api/flowcrypt-com-api.ts diff --git a/extension/js/common/platform/store/abstract-store.ts b/extension/js/common/platform/store/abstract-store.ts index 13a0691a509..a5a997ca121 100644 --- a/extension/js/common/platform/store/abstract-store.ts +++ b/extension/js/common/platform/store/abstract-store.ts @@ -4,7 +4,7 @@ import { KeyInfo } from '../../core/crypto/key.js'; import { Dict } from '../../core/common.js'; -import { SubscriptionInfo } from '../../api/backend.js'; +import { SubscriptionInfo } from '../../api/flowcrypt-com-api.js'; import { DomainRulesJson } from '../../org-rules.js'; import { GmailRes } from '../../api/email-provider/gmail/gmail-parser.js'; import { AcctStoreDict, AccountIndex, StoredReplyDraftMeta, StoredComposeDraftMeta } from './acct-store.js'; diff --git a/extension/js/common/platform/store/acct-store.ts b/extension/js/common/platform/store/acct-store.ts index 2c36e9d7537..4d9b72b4a8e 100644 --- a/extension/js/common/platform/store/acct-store.ts +++ b/extension/js/common/platform/store/acct-store.ts @@ -5,7 +5,7 @@ import { GoogleAuth } from '../../api/email-provider/gmail/google-auth.js'; import { KeyInfo } from '../../core/crypto/key.js'; import { Dict } from '../../core/common.js'; import { GmailRes } from '../../api/email-provider/gmail/gmail-parser.js'; -import { SubscriptionInfo, FcUuidAuth } from '../../api/backend.js'; +import { SubscriptionInfo, FcUuidAuth } from '../../api/flowcrypt-com-api.js'; import { DomainRulesJson } from '../../org-rules.js'; import { BrowserMsg, BgNotReadyErr } from '../../browser/browser-msg.js'; import { Ui } from '../../browser/ui.js'; diff --git a/extension/js/common/settings.ts b/extension/js/common/settings.ts index f9fed2e269c..e55afe4e85c 100644 --- a/extension/js/common/settings.ts +++ b/extension/js/common/settings.ts @@ -6,7 +6,7 @@ import { Dict, Str, Url, UrlParams } from './core/common.js'; import { Ui } from './browser/ui.js'; import { Api } from './api/shared/api.js'; import { ApiErr, AjaxErr } from './api/shared/api-error.js'; -import { FlowCryptComApi } from './api/backend.js'; +import { FlowCryptComApi } from './api/flowcrypt-com-api.js'; import { Catch } from './platform/catch.js'; import { Env } from './browser/env.js'; import { Gmail } from './api/email-provider/gmail/gmail.js'; diff --git a/extension/js/common/subscription.ts b/extension/js/common/subscription.ts index 9ddce4db404..be5b14f3e96 100644 --- a/extension/js/common/subscription.ts +++ b/extension/js/common/subscription.ts @@ -1,6 +1,6 @@ /* ©️ 2016 - present FlowCrypt a.s. Limitations apply. Contact human@flowcrypt.com */ -import { SubscriptionInfo, PaymentMethod, SubscriptionLevel } from './api/backend.js'; +import { SubscriptionInfo, PaymentMethod, SubscriptionLevel } from './api/flowcrypt-com-api.js'; export class Subscription implements SubscriptionInfo { From 9b7ad097c0ad3105b9a5ca58af9e5b4e34603945 Mon Sep 17 00:00:00 2001 From: Tom J Date: Mon, 12 Oct 2020 11:05:19 +0000 Subject: [PATCH 09/13] make calls through AccountServer class --- .../compose-pwd-or-pubkey-container-module.ts | 5 ++- .../compose-modules/compose-storage-module.ts | 5 ++- .../encrypted-mail-msg-formatter.ts | 8 ++-- extension/chrome/elements/subscribe.ts | 5 ++- extension/chrome/settings/index.ts | 5 ++- extension/chrome/settings/modules/account.ts | 5 ++- extension/chrome/settings/modules/security.ts | 8 ++-- extension/js/common/api/account-server.ts | 45 +++++++++++++++++++ .../flowcrypt-com-api.ts | 19 ++++---- .../api/email-provider/gmail/google-auth.ts | 7 +-- .../common/platform/store/abstract-store.ts | 2 +- .../js/common/platform/store/acct-store.ts | 2 +- extension/js/common/settings.ts | 7 +-- extension/js/common/subscription.ts | 2 +- 14 files changed, 90 insertions(+), 35 deletions(-) create mode 100644 extension/js/common/api/account-server.ts rename extension/js/common/api/{ => account-servers}/flowcrypt-com-api.ts (90%) diff --git a/extension/chrome/elements/compose-modules/compose-pwd-or-pubkey-container-module.ts b/extension/chrome/elements/compose-modules/compose-pwd-or-pubkey-container-module.ts index 263a13590a2..3e867927d45 100644 --- a/extension/chrome/elements/compose-modules/compose-pwd-or-pubkey-container-module.ts +++ b/extension/chrome/elements/compose-modules/compose-pwd-or-pubkey-container-module.ts @@ -2,7 +2,7 @@ 'use strict'; -import { FlowCryptComApi } from '../../../js/common/api/flowcrypt-com-api.js'; + import { RecipientStatuses, SendBtnTexts } from './compose-types.js'; import { KeyImportUi } from '../../../js/common/ui/key-import-ui.js'; import { Catch } from '../../../js/common/platform/catch.js'; @@ -11,6 +11,7 @@ import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { ViewModule } from '../../../js/common/view-module.js'; import { ComposeView } from '../compose.js'; import { AcctStore } from '../../../js/common/platform/store/acct-store.js'; +import { AccountServer } from '../../../js/common/api/account-server.js'; export class ComposePwdOrPubkeyContainerModule extends ViewModule { @@ -90,7 +91,7 @@ export class ComposePwdOrPubkeyContainerModule extends ViewModule { expirationTextEl.text(Str.pluralize(this.MSG_EXPIRE_DAYS_DEFAULT, 'day')); } else { try { - const response = await FlowCryptComApi.accountGetAndUpdateLocalStore(authInfo); + const response = await AccountServer.accountGetAndUpdateLocalStore(authInfo); expirationTextEl.text(Str.pluralize(response.account.default_message_expire, 'day')); } catch (e) { ApiErr.reportIfSignificant(e); diff --git a/extension/chrome/elements/compose-modules/compose-storage-module.ts b/extension/chrome/elements/compose-modules/compose-storage-module.ts index 654baf78cd8..1b712f78710 100644 --- a/extension/chrome/elements/compose-modules/compose-storage-module.ts +++ b/extension/chrome/elements/compose-modules/compose-storage-module.ts @@ -16,8 +16,9 @@ import { AcctStore } from '../../../js/common/platform/store/acct-store.js'; import { GlobalStore } from '../../../js/common/platform/store/global-store.js'; import { ContactStore } from '../../../js/common/platform/store/contact-store.js'; import { PassphraseStore } from '../../../js/common/platform/store/passphrase-store.js'; -import { FlowCryptComApi } from '../../../js/common/api/flowcrypt-com-api.js'; + import { Settings } from '../../../js/common/settings.js'; +import { AccountServer } from '../../../js/common/api/account-server.js'; export class ComposeStorageModule extends ViewModule { @@ -211,7 +212,7 @@ export class ComposeStorageModule extends ViewModule { const auth = await AcctStore.authInfo(this.view.acctEmail); if (auth.uuid) { try { - await FlowCryptComApi.accountGetAndUpdateLocalStore(auth); // updates storage + await AccountServer.accountGetAndUpdateLocalStore(auth); // updates storage } catch (e) { if (ApiErr.isAuthErr(e)) { Settings.offerToLoginWithPopupShowModalOnErr( diff --git a/extension/chrome/elements/compose-modules/formatters/encrypted-mail-msg-formatter.ts b/extension/chrome/elements/compose-modules/formatters/encrypted-mail-msg-formatter.ts index 955f28c9ee0..0b858ff0169 100644 --- a/extension/chrome/elements/compose-modules/formatters/encrypted-mail-msg-formatter.ts +++ b/extension/chrome/elements/compose-modules/formatters/encrypted-mail-msg-formatter.ts @@ -2,7 +2,7 @@ 'use strict'; -import { FlowCryptComApi, FcUuidAuth } from '../../../../js/common/api/flowcrypt-com-api.js'; + import { BaseMailFormatter } from './base-mail-formatter.js'; import { ComposerResetBtnTrigger } from '../compose-err-module.js'; import { Mime, SendableMsgBody } from '../../../../js/common/core/mime.js'; @@ -22,6 +22,8 @@ import { Xss } from '../../../../js/common/platform/xss.js'; import { ContactStore } from '../../../../js/common/platform/store/contact-store.js'; import { AcctStore } from '../../../../js/common/platform/store/acct-store.js'; import { FlowCryptWebsite } from '../../../../js/common/api/flowcrypt-website.js'; +import { AccountServer } from '../../../../js/common/api/account-server.js'; +import { FcUuidAuth } from '../../../../js/common/api/account-servers/flowcrypt-com-api.js'; export class EncryptedMsgMailFormatter extends BaseMailFormatter { @@ -44,7 +46,7 @@ export class EncryptedMsgMailFormatter extends BaseMailFormatter { const msgBodyWithReplyToken = await this.getPwdMsgSendableBodyWithOnlineReplyMsgToken(authInfo, newMsg); const pgpMimeWithAtts = await Mime.encode(msgBodyWithReplyToken, { Subject: newMsg.subject }, await this.view.attsModule.attach.collectAtts()); const { data: pwdEncryptedWithAtts } = await this.encryptDataArmor(Buf.fromUtfStr(pgpMimeWithAtts), newMsg.pwd, []); // encrypted only for pwd, not signed - const { short, admin_code } = await FlowCryptComApi.messageUpload( + const { short, admin_code } = await AccountServer.messageUpload( authInfo.uuid ? authInfo : undefined, pwdEncryptedWithAtts, (p) => this.view.sendBtnModule.renderUploadProgress(p, 'FIRST-HALF'), // still need to upload to Gmail later, this request represents first half of progress @@ -98,7 +100,7 @@ export class EncryptedMsgMailFormatter extends BaseMailFormatter { } const recipients = Array.prototype.concat.apply([], Object.values(newMsgData.recipients)); try { - const response = await FlowCryptComApi.messageToken(authInfo); + const response = await AccountServer.messageToken(authInfo); const infoDiv = Ui.e('div', { 'style': 'display: none;', 'class': 'cryptup_reply', diff --git a/extension/chrome/elements/subscribe.ts b/extension/chrome/elements/subscribe.ts index 240c28d60fc..4d5d9af7126 100644 --- a/extension/chrome/elements/subscribe.ts +++ b/extension/chrome/elements/subscribe.ts @@ -2,7 +2,6 @@ 'use strict'; -import { FlowCryptComApi, FcUuidAuth, PaymentMethod, SubscriptionLevel } from '../../js/common/api/flowcrypt-com-api.js'; import { Bm, BrowserMsg } from '../../js/common/browser/browser-msg.js'; import { Str, Url } from '../../js/common/core/common.js'; import { ApiErr } from '../../js/common/api/shared/api-error.js'; @@ -15,6 +14,8 @@ import { View } from '../../js/common/view.js'; import { Xss } from '../../js/common/platform/xss.js'; import { XssSafeFactory } from '../../js/common/xss-safe-factory.js'; import { AcctStore } from '../../js/common/platform/store/acct-store.js'; +import { FcUuidAuth, FlowCryptComApi, PaymentMethod, SubscriptionLevel } from '../../js/common/api/account-servers/flowcrypt-com-api.js'; +import { AccountServer } from '../../js/common/api/account-server.js'; // todo - this page should be removed, link from settings should point to flowcrypt.com/account once available @@ -73,7 +74,7 @@ View.run(class SubscribeView extends View { private renderSubscriptionDetails = async () => { this.authInfo = await AcctStore.authInfo(this.acctEmail); try { - await FlowCryptComApi.accountGetAndUpdateLocalStore(this.authInfo); + await AccountServer.accountGetAndUpdateLocalStore(this.authInfo); } catch (e) { if (ApiErr.isAuthErr(e)) { Xss.sanitizeRender('#content', `Not logged in. ${Ui.retryLink()}`); diff --git a/extension/chrome/settings/index.ts b/extension/chrome/settings/index.ts index 707c64040f3..e72d48c59ab 100644 --- a/extension/chrome/settings/index.ts +++ b/extension/chrome/settings/index.ts @@ -8,7 +8,7 @@ import { KeyInfo, KeyUtil } from '../../js/common/core/crypto/key.js'; import { Str, Url, UrlParams } from '../../js/common/core/common.js'; import { ApiErr } from '../../js/common/api/shared/api-error.js'; import { Assert } from '../../js/common/assert.js'; -import { FlowCryptComApi } from '../../js/common/api/flowcrypt-com-api.js'; + import { Catch } from '../../js/common/platform/catch.js'; import { Env } from '../../js/common/browser/env.js'; import { Gmail } from '../../js/common/api/email-provider/gmail/gmail.js'; @@ -27,6 +27,7 @@ import { PassphraseStore } from '../../js/common/platform/store/passphrase-store import Swal from 'sweetalert2'; import { Subscription } from '../../js/common/subscription.js'; import { FlowCryptWebsite } from '../../js/common/api/flowcrypt-website.js'; +import { AccountServer } from '../../js/common/api/account-server.js'; View.run(class SettingsView extends View { @@ -306,7 +307,7 @@ View.run(class SettingsView extends View { const authInfo = await AcctStore.authInfo(this.acctEmail!); if (authInfo.uuid) { // have auth email set try { - const response = await FlowCryptComApi.accountGetAndUpdateLocalStore(authInfo); + const response = await AccountServer.accountGetAndUpdateLocalStore(authInfo); $('#status-row #status_flowcrypt').text(`fc:ok`); if (response?.account?.alias) { statusContainer.find('.status-indicator-text').css('display', 'none'); diff --git a/extension/chrome/settings/modules/account.ts b/extension/chrome/settings/modules/account.ts index 93f2a533930..5dc9ce22278 100644 --- a/extension/chrome/settings/modules/account.ts +++ b/extension/chrome/settings/modules/account.ts @@ -4,7 +4,7 @@ import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { Assert } from '../../../js/common/assert.js'; -import { FlowCryptComApi } from '../../../js/common/api/flowcrypt-com-api.js'; + import { Settings } from '../../../js/common/settings.js'; import { Ui } from '../../../js/common/browser/ui.js'; import { Url } from '../../../js/common/core/common.js'; @@ -12,6 +12,7 @@ import { View } from '../../../js/common/view.js'; import { Xss } from '../../../js/common/platform/xss.js'; import { AcctStore } from '../../../js/common/platform/store/acct-store.js'; import { Subscription } from '../../../js/common/subscription.js'; +import { AccountServer } from '../../../js/common/api/account-server.js'; // todo - this this page should be removed, link from settings should point to flowcrypt.com/account once available @@ -32,7 +33,7 @@ View.run(class AccountView extends View { const authInfo = await AcctStore.authInfo(this.acctEmail); let subscription = await AcctStore.getSubscription(this.acctEmail); try { - const r = await FlowCryptComApi.accountGetAndUpdateLocalStore(authInfo); + const r = await AccountServer.accountGetAndUpdateLocalStore(authInfo); subscription = new Subscription(r.subscription); } catch (e) { if (ApiErr.isAuthErr(e) && subscription.level) { diff --git a/extension/chrome/settings/modules/security.ts b/extension/chrome/settings/modules/security.ts index 73ac6c4ef45..1f4780b5937 100644 --- a/extension/chrome/settings/modules/security.ts +++ b/extension/chrome/settings/modules/security.ts @@ -2,7 +2,7 @@ 'use strict'; -import { FlowCryptComApi, FcUuidAuth } from '../../../js/common/api/flowcrypt-com-api.js'; + import { ApiErr } from '../../../js/common/api/shared/api-error.js'; import { Assert } from '../../../js/common/assert.js'; import { Catch } from '../../../js/common/platform/catch.js'; @@ -17,6 +17,8 @@ import { AcctStore } from '../../../js/common/platform/store/acct-store.js'; import { KeyStore } from '../../../js/common/platform/store/key-store.js'; import { PassphraseStore } from '../../../js/common/platform/store/passphrase-store.js'; import { OrgRules } from '../../../js/common/org-rules.js'; +import { AccountServer } from '../../../js/common/api/account-server.js'; +import { FcUuidAuth } from '../../../js/common/api/account-servers/flowcrypt-com-api.js'; View.run(class SecurityView extends View { @@ -87,7 +89,7 @@ View.run(class SecurityView extends View { if (subscription.active) { Xss.sanitizeRender('.select_loader_container', Ui.spinner('green')); try { - const response = await FlowCryptComApi.accountGetAndUpdateLocalStore(this.authInfo!); + const response = await AccountServer.accountGetAndUpdateLocalStore(this.authInfo!); $('.select_loader_container').text(''); $('.default_message_expire').val(Number(response.account.default_message_expire).toString()).prop('disabled', false).css('display', 'inline-block'); $('.default_message_expire').change(this.setHandler(() => this.onDefaultExpireUserChange())); @@ -111,7 +113,7 @@ View.run(class SecurityView extends View { private onDefaultExpireUserChange = async () => { Xss.sanitizeRender('.select_loader_container', Ui.spinner('green')); $('.default_message_expire').css('display', 'none'); - await FlowCryptComApi.accountUpdate(this.authInfo!, { default_message_expire: Number($('.default_message_expire').val()) }); + await AccountServer.accountUpdate(this.authInfo!, { default_message_expire: Number($('.default_message_expire').val()) }); window.location.reload(); } diff --git a/extension/js/common/api/account-server.ts b/extension/js/common/api/account-server.ts new file mode 100644 index 00000000000..fb6ced15d8d --- /dev/null +++ b/extension/js/common/api/account-server.ts @@ -0,0 +1,45 @@ +/* ©️ 2016 - present FlowCrypt a.s. Limitations apply. Contact human@flowcrypt.com */ + +'use strict'; + +import { BackendRes, FcUuidAuth, FlowCryptComApi, ProfileUpdate } from './account-servers/flowcrypt-com-api.js'; +import { Api, ProgressCb } from './shared/api.js'; + + +/** + * This may be calling to FlowCryptComApi or Enterprise Server (FES, customer on-prem) depending on + * domain configuration fetched using WellKnownHostMeta. + * + * Current implementation only calls FlowCryptComApi, FES integration is planned + */ +export class AccountServer extends Api { + + public static loginWithOpenid = async (acctEmail: string, uuid: string, idToken: string): Promise => { + return await FlowCryptComApi.loginWithOpenid(acctEmail, uuid, idToken); + } + + public static accountUpdate = async (fcAuth: FcUuidAuth, profileUpdate: ProfileUpdate): Promise => { + return await FlowCryptComApi.accountUpdate(fcAuth, profileUpdate); + } + + public static accountGetAndUpdateLocalStore = async (fcAuth: FcUuidAuth): Promise => { + return await FlowCryptComApi.accountGetAndUpdateLocalStore(fcAuth); + } + + public static messageUpload = async (fcAuth: FcUuidAuth | undefined, encryptedDataBinary: Uint8Array, progressCb: ProgressCb): Promise => { + return await FlowCryptComApi.messageUpload(fcAuth, encryptedDataBinary, progressCb); + } + + public static messageToken = async (fcAuth: FcUuidAuth): Promise => { + return await FlowCryptComApi.messageToken(fcAuth); + } + + public static messageExpiration = async (fcAuth: FcUuidAuth, adminCodes: string[], addDays?: number): Promise => { + return await FlowCryptComApi.messageExpiration(fcAuth, adminCodes, addDays); + } + + public static linkMessage = async (short: string): Promise => { + return await FlowCryptComApi.linkMessage(short); + } + +} diff --git a/extension/js/common/api/flowcrypt-com-api.ts b/extension/js/common/api/account-servers/flowcrypt-com-api.ts similarity index 90% rename from extension/js/common/api/flowcrypt-com-api.ts rename to extension/js/common/api/account-servers/flowcrypt-com-api.ts index 7dcf24e284f..7ccd415cd71 100644 --- a/extension/js/common/api/flowcrypt-com-api.ts +++ b/extension/js/common/api/account-servers/flowcrypt-com-api.ts @@ -5,16 +5,15 @@ 'use strict'; -import { Api, ProgressCb, ProgressCbs, ReqFmt } from './shared/api.js'; -import { Dict } from '../core/common.js'; -import { Att } from '../core/att.js'; -import { BackendAuthErr } from './shared/api-error.js'; -import { DomainRulesJson } from '../org-rules.js'; -import { AcctStore } from '../platform/store/acct-store.js'; -import { FlowCryptWebsite } from './flowcrypt-website.js'; - -type ProfileUpdate = { alias?: string, name?: string, photo?: string, intro?: string, web?: string, phone?: string, default_message_expire?: number }; - +import { Api, ProgressCb, ProgressCbs, ReqFmt } from '../shared/api.js'; +import { Dict } from '../../core/common.js'; +import { Att } from '../../core/att.js'; +import { BackendAuthErr } from '../shared/api-error.js'; +import { DomainRulesJson } from '../../org-rules.js'; +import { AcctStore } from '../../platform/store/acct-store.js'; +import { FlowCryptWebsite } from '../flowcrypt-website.js'; + +export type ProfileUpdate = { alias?: string, name?: string, photo?: string, intro?: string, web?: string, phone?: string, default_message_expire?: number }; export type SubscriptionLevel = 'pro' | null; export type FcUuidAuth = { account: string, uuid: string | undefined }; export type PaymentMethod = 'stripe' | 'group' | 'trial'; diff --git a/extension/js/common/api/email-provider/gmail/google-auth.ts b/extension/js/common/api/email-provider/gmail/google-auth.ts index 72b0369abb3..2e31c4a88e0 100644 --- a/extension/js/common/api/email-provider/gmail/google-auth.ts +++ b/extension/js/common/api/email-provider/gmail/google-auth.ts @@ -10,7 +10,7 @@ import { Url, Value } from '../../../core/common.js'; import { tabsQuery, windowsCreate } from '../../../browser/chrome.js'; import { Api } from './../../shared/api.js'; import { ApiErr } from '../../shared/api-error.js'; -import { FlowCryptComApi } from '../../flowcrypt-com-api.js'; + import { Buf } from '../../../core/buf.js'; import { Catch } from '../../../platform/catch.js'; import { GmailRes } from './gmail-parser'; @@ -18,6 +18,7 @@ import { GoogleAuthErr } from '../../shared/api-error.js'; import { GoogleAuthWindowResult$result } from '../../../browser/browser-msg.js'; import { Ui } from '../../../browser/ui.js'; import { AcctStore, AcctStoreDict } from '../../../platform/store/acct-store.js'; +import { AccountServer } from '../../account-server.js'; type GoogleAuthTokenInfo = { issued_to: string, audience: string, scope: string, expires_in: number, access_type: 'offline' }; type GoogleAuthTokensResponse = { access_token: string, expires_in: number, refresh_token?: string, id_token: string, token_type: 'Bearer' }; @@ -143,8 +144,8 @@ export class GoogleAuth { } try { const uuid = Api.randomFortyHexChars(); - await FlowCryptComApi.loginWithOpenid(authRes.acctEmail, uuid, authRes.id_token); - await FlowCryptComApi.accountGetAndUpdateLocalStore({ account: authRes.acctEmail, uuid }); // will store org rules and subscription + await AccountServer.loginWithOpenid(authRes.acctEmail, uuid, authRes.id_token); + await AccountServer.accountGetAndUpdateLocalStore({ account: authRes.acctEmail, uuid }); // will store org rules and subscription } catch (e) { return { result: 'Error', error: `Grant successful but error accessing fc account: ${String(e)}`, acctEmail: authRes.acctEmail, id_token: undefined }; } diff --git a/extension/js/common/platform/store/abstract-store.ts b/extension/js/common/platform/store/abstract-store.ts index a5a997ca121..f796768882f 100644 --- a/extension/js/common/platform/store/abstract-store.ts +++ b/extension/js/common/platform/store/abstract-store.ts @@ -4,12 +4,12 @@ import { KeyInfo } from '../../core/crypto/key.js'; import { Dict } from '../../core/common.js'; -import { SubscriptionInfo } from '../../api/flowcrypt-com-api.js'; import { DomainRulesJson } from '../../org-rules.js'; import { GmailRes } from '../../api/email-provider/gmail/gmail-parser.js'; import { AcctStoreDict, AccountIndex, StoredReplyDraftMeta, StoredComposeDraftMeta } from './acct-store.js'; import { UnreportableError, Catch } from '../catch.js'; import { StoredAdminCode } from './global-store.js'; +import { SubscriptionInfo } from '../../api/account-servers/flowcrypt-com-api.js'; type SerializableTypes = FlatTypes | string[] | number[] | boolean[] | SubscriptionInfo | DomainRulesJson; export type StorageType = 'session' | 'local'; diff --git a/extension/js/common/platform/store/acct-store.ts b/extension/js/common/platform/store/acct-store.ts index 4d9b72b4a8e..44468888f98 100644 --- a/extension/js/common/platform/store/acct-store.ts +++ b/extension/js/common/platform/store/acct-store.ts @@ -5,7 +5,6 @@ import { GoogleAuth } from '../../api/email-provider/gmail/google-auth.js'; import { KeyInfo } from '../../core/crypto/key.js'; import { Dict } from '../../core/common.js'; import { GmailRes } from '../../api/email-provider/gmail/gmail-parser.js'; -import { SubscriptionInfo, FcUuidAuth } from '../../api/flowcrypt-com-api.js'; import { DomainRulesJson } from '../../org-rules.js'; import { BrowserMsg, BgNotReadyErr } from '../../browser/browser-msg.js'; import { Ui } from '../../browser/ui.js'; @@ -13,6 +12,7 @@ import { storageLocalGet, storageLocalSet, storageLocalRemove } from '../../brow import { AbstractStore } from './abstract-store.js'; import { RawStore } from './abstract-store.js'; import { Subscription } from '../../subscription.js'; +import { FcUuidAuth, SubscriptionInfo } from '../../api/account-servers/flowcrypt-com-api.js'; export type StoredReplyDraftMeta = string; // draftId export type StoredComposeDraftMeta = { recipients: string[], subject: string, date: number }; diff --git a/extension/js/common/settings.ts b/extension/js/common/settings.ts index e55afe4e85c..dd3a8d15f14 100644 --- a/extension/js/common/settings.ts +++ b/extension/js/common/settings.ts @@ -6,7 +6,7 @@ import { Dict, Str, Url, UrlParams } from './core/common.js'; import { Ui } from './browser/ui.js'; import { Api } from './api/shared/api.js'; import { ApiErr, AjaxErr } from './api/shared/api-error.js'; -import { FlowCryptComApi } from './api/flowcrypt-com-api.js'; + import { Catch } from './platform/catch.js'; import { Env } from './browser/env.js'; import { Gmail } from './api/email-provider/gmail/gmail.js'; @@ -22,6 +22,7 @@ import { GlobalStore } from './platform/store/global-store.js'; import { AbstractStore } from './platform/store/abstract-store.js'; import { KeyStore } from './platform/store/key-store.js'; import { PassphraseStore } from './platform/store/passphrase-store.js'; +import { AccountServer } from './api/account-server.js'; declare const zxcvbn: Function; // tslint:disable-line:ban-types @@ -336,8 +337,8 @@ export class Settings { if (authRes.result === 'Success' && authRes.acctEmail && authRes.id_token) { const uuid = Api.randomFortyHexChars(); try { - await FlowCryptComApi.loginWithOpenid(authRes.acctEmail, uuid, authRes.id_token); - await FlowCryptComApi.accountGetAndUpdateLocalStore({ account: authRes.acctEmail, uuid }); + await AccountServer.loginWithOpenid(authRes.acctEmail, uuid, authRes.id_token); + await AccountServer.accountGetAndUpdateLocalStore({ account: authRes.acctEmail, uuid }); then(); } catch (e) { await Ui.modal.error(`Could not log in with FlowCrypt:\n\n${ApiErr.eli5(e)}\n\n${String(e)}`); diff --git a/extension/js/common/subscription.ts b/extension/js/common/subscription.ts index be5b14f3e96..bb5f5b67b94 100644 --- a/extension/js/common/subscription.ts +++ b/extension/js/common/subscription.ts @@ -1,6 +1,6 @@ /* ©️ 2016 - present FlowCrypt a.s. Limitations apply. Contact human@flowcrypt.com */ -import { SubscriptionInfo, PaymentMethod, SubscriptionLevel } from './api/flowcrypt-com-api.js'; +import { PaymentMethod, SubscriptionInfo, SubscriptionLevel } from './api/account-servers/flowcrypt-com-api'; export class Subscription implements SubscriptionInfo { From 8cbcd22d1683c38c676ac64e3deb1766f7b72db9 Mon Sep 17 00:00:00 2001 From: Tom J Date: Mon, 12 Oct 2020 11:50:38 +0000 Subject: [PATCH 10/13] added EnterpriseServer class - unused --- .../api/account-servers/enterprise-server.ts | 71 +++++++++++++++++++ extension/js/common/api/shared/api.ts | 9 ++- .../js/common/platform/store/acct-store.ts | 3 +- 3 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 extension/js/common/api/account-servers/enterprise-server.ts diff --git a/extension/js/common/api/account-servers/enterprise-server.ts b/extension/js/common/api/account-servers/enterprise-server.ts new file mode 100644 index 00000000000..d4b48d46244 --- /dev/null +++ b/extension/js/common/api/account-servers/enterprise-server.ts @@ -0,0 +1,71 @@ +/* ©️ 2016 - present FlowCrypt a.s. Limitations apply. Contact human@flowcrypt.com */ + +// tslint:disable:oneliner-object-literal +// tslint:disable:no-null-keyword + +'use strict'; + +import { Api, ReqMethod } from '../shared/api.js'; +import { AcctStore } from '../../platform/store/acct-store.js'; +import { FlowCryptComApi } from './flowcrypt-com-api.js'; +import { Dict } from '../../core/common.js'; + +// todo - decide which tags to use +export type EventTag = 'compose' | 'decrypt' | 'setup' | 'settings' | 'import-pub' | 'import-prv'; + +export namespace FesRes { + export type AccessToken = { accessToken: string }; +} + +/** + * FlowCrypt Enterprise Server (FES) may be deployed on-prem by enterprise customers. + * This gives them more control. All OrgRules, log collectors, etc (as implemented) would then be handled by the FES. + * Once fully integrated, this will allow customers to be fully independent of flowcrypt.com/api + * + * WIP + */ +export class EnterpriseServer extends Api { + + private fesUrl: string + + constructor(fesUrl: string, private acctEmail: string) { + super(); + this.fesUrl = fesUrl.replace(/\/$/, ''); + } + + public loginWithOpenid = async (idToken: string): Promise => { + const response = await this.request('GET', '/api/account/access-token', { Authorization: `Bearer ${idToken}` }); + await AcctStore.set(this.acctEmail, { fesAccessToken: response.accessToken }); + } + + public reportException = async (e: any): Promise => { + throw Error('EnterpriseServer.reportException not implemented'); + // const formattedException = Catch.formatExceptionForReport(...) + // await this.request('POST', '/api/log-collector/exception', await this.authHdr()); + } + + public reportEvent = async (tags: EventTag[], message: string, details?: string): Promise => { + await this.request('POST', '/api/log-collector/exception', await this.authHdr(), { tags, message, details }); + } + + // public accountUpdate = async (fcAuth: FcUuidAuth, profileUpdate: ProfileUpdate): Promise => { + // // noop + // } + + // public accountGetAndUpdateLocalStore = async (fcAuth: FcUuidAuth): Promise => { + // FlowCryptComApi.throwIfMissingUuid(fcAuth); + // const r = await FlowCryptComApi.request('account/get', fcAuth); + // await AcctStore.set(fcAuth.account, { rules: r.domain_org_rules, subscription: r.subscription }); + // return r; + // } + + private authHdr = async (): Promise> => { + const { fesAccessToken } = await AcctStore.get(this.acctEmail, ['fesAccessToken']); + return { Authorization: `Bearer ${fesAccessToken}` }; + } + + private request = async (method: ReqMethod, path: string, headers: Dict = {}, vals?: Dict): Promise => { + return await FlowCryptComApi.apiCall(this.fesUrl, path, vals, 'JSON', undefined, headers, 'json', method); + } + +} diff --git a/extension/js/common/api/shared/api.ts b/extension/js/common/api/shared/api.ts index 9eb967066a8..d1bf9875af0 100644 --- a/extension/js/common/api/shared/api.ts +++ b/extension/js/common/api/shared/api.ts @@ -144,7 +144,14 @@ export class Api { } protected static apiCall = async ( - url: string, path: string, fields?: Dict | string, fmt?: ReqFmt, progress?: ProgressCbs, headers?: Dict, resFmt: ResFmt = 'json', method: ReqMethod = 'POST' + url: string, + path: string, + fields?: Dict | string, + fmt?: ReqFmt, + progress?: ProgressCbs, + headers?: Dict, + resFmt: ResFmt = 'json', + method: ReqMethod = 'POST' ): Promise => { progress = progress || {} as ProgressCbs; let formattedData: FormData | string | undefined; diff --git a/extension/js/common/platform/store/acct-store.ts b/extension/js/common/platform/store/acct-store.ts index 44468888f98..508d6c8583a 100644 --- a/extension/js/common/platform/store/acct-store.ts +++ b/extension/js/common/platform/store/acct-store.ts @@ -35,7 +35,7 @@ export type AccountIndex = 'keys' | 'notification_setup_needed_dismissed' | 'ema 'pubkey_sent_to' | 'full_name' | 'cryptup_enabled' | 'setup_done' | 'successfully_received_at_leat_one_message' | 'notification_setup_done_seen' | 'picture' | 'outgoing_language' | 'setup_date' | 'openid' | 'tmp_submit_main' | 'tmp_submit_all' | 'subscription' | 'uuid' | 'use_rich_text' | 'rules' | - 'fesUrl'; + 'fesUrl' | 'fesAccessToken'; export type SendAsAlias = { isPrimary: boolean; @@ -72,6 +72,7 @@ export type AcctStoreDict = { uuid?: string; rules?: DomainRulesJson; fesUrl?: string; // url where FlowCrypt Enterprise Server is deployed + fesAccessToken?: string; // temporary tmp_submit_main?: boolean; tmp_submit_all?: boolean; From 77e5062300e51c51897652132bd995780237c412 Mon Sep 17 00:00:00 2001 From: Tom J Date: Mon, 12 Oct 2020 12:02:44 +0000 Subject: [PATCH 11/13] add WellKnownHostMeta test call into oidc login --- .../common/api/account-servers/enterprise-server.ts | 4 ++-- .../js/common/api/email-provider/gmail/google-auth.ts | 8 ++++++++ extension/js/common/settings.ts | 11 +---------- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/extension/js/common/api/account-servers/enterprise-server.ts b/extension/js/common/api/account-servers/enterprise-server.ts index d4b48d46244..adf9bdda0d5 100644 --- a/extension/js/common/api/account-servers/enterprise-server.ts +++ b/extension/js/common/api/account-servers/enterprise-server.ts @@ -22,7 +22,7 @@ export namespace FesRes { * This gives them more control. All OrgRules, log collectors, etc (as implemented) would then be handled by the FES. * Once fully integrated, this will allow customers to be fully independent of flowcrypt.com/api * - * WIP + * WIP - currently unused, unfinished */ export class EnterpriseServer extends Api { @@ -38,7 +38,7 @@ export class EnterpriseServer extends Api { await AcctStore.set(this.acctEmail, { fesAccessToken: response.accessToken }); } - public reportException = async (e: any): Promise => { + public reportException = async (/* e: any */): Promise => { throw Error('EnterpriseServer.reportException not implemented'); // const formattedException = Catch.formatExceptionForReport(...) // await this.request('POST', '/api/log-collector/exception', await this.authHdr()); diff --git a/extension/js/common/api/email-provider/gmail/google-auth.ts b/extension/js/common/api/email-provider/gmail/google-auth.ts index 2e31c4a88e0..e10a7965d6e 100644 --- a/extension/js/common/api/email-provider/gmail/google-auth.ts +++ b/extension/js/common/api/email-provider/gmail/google-auth.ts @@ -19,6 +19,7 @@ import { GoogleAuthWindowResult$result } from '../../../browser/browser-msg.js'; import { Ui } from '../../../browser/ui.js'; import { AcctStore, AcctStoreDict } from '../../../platform/store/acct-store.js'; import { AccountServer } from '../../account-server.js'; +import { WellKnownHostMeta } from '../../account-servers/well-known-host-meta.js'; type GoogleAuthTokenInfo = { issued_to: string, audience: string, scope: string, expires_in: number, access_type: 'offline' }; type GoogleAuthTokensResponse = { access_token: string, expires_in: number, refresh_token?: string, id_token: string, token_type: 'Bearer' }; @@ -146,6 +147,13 @@ export class GoogleAuth { const uuid = Api.randomFortyHexChars(); await AccountServer.loginWithOpenid(authRes.acctEmail, uuid, authRes.id_token); await AccountServer.accountGetAndUpdateLocalStore({ account: authRes.acctEmail, uuid }); // will store org rules and subscription + try { + // this is here currently for debugging only, to test effect of this new mechanism on customer installations + const wellKnownHostMeta = new WellKnownHostMeta(authRes.acctEmail); + await wellKnownHostMeta.fetchAndCacheFesUrl(); + } catch (e) { + Catch.reportErr(Catch.rewrapErr(`WellKnownHostMeta on ${FLAVOR}`, e)); + } } catch (e) { return { result: 'Error', error: `Grant successful but error accessing fc account: ${String(e)}`, acctEmail: authRes.acctEmail, id_token: undefined }; } diff --git a/extension/js/common/settings.ts b/extension/js/common/settings.ts index dd3a8d15f14..ac242ef227e 100644 --- a/extension/js/common/settings.ts +++ b/extension/js/common/settings.ts @@ -4,7 +4,6 @@ import { Dict, Str, Url, UrlParams } from './core/common.js'; import { Ui } from './browser/ui.js'; -import { Api } from './api/shared/api.js'; import { ApiErr, AjaxErr } from './api/shared/api-error.js'; import { Catch } from './platform/catch.js'; @@ -22,7 +21,6 @@ import { GlobalStore } from './platform/store/global-store.js'; import { AbstractStore } from './platform/store/abstract-store.js'; import { KeyStore } from './platform/store/key-store.js'; import { PassphraseStore } from './platform/store/passphrase-store.js'; -import { AccountServer } from './api/account-server.js'; declare const zxcvbn: Function; // tslint:disable-line:ban-types @@ -335,14 +333,7 @@ export class Settings { if (await Ui.modal.confirm(`${prepend}Please log in with FlowCrypt to continue.`)) { const authRes = await GoogleAuth.newOpenidAuthPopup({ acctEmail }); if (authRes.result === 'Success' && authRes.acctEmail && authRes.id_token) { - const uuid = Api.randomFortyHexChars(); - try { - await AccountServer.loginWithOpenid(authRes.acctEmail, uuid, authRes.id_token); - await AccountServer.accountGetAndUpdateLocalStore({ account: authRes.acctEmail, uuid }); - then(); - } catch (e) { - await Ui.modal.error(`Could not log in with FlowCrypt:\n\n${ApiErr.eli5(e)}\n\n${String(e)}`); - } + then(); } else { await Ui.modal.warning(`Could not log in:\n\n${authRes.error || authRes.result}`); } From 9168da36873bb527702ec323a7b54eba773f1f75 Mon Sep 17 00:00:00 2001 From: Tom J Date: Mon, 12 Oct 2020 12:46:49 +0000 Subject: [PATCH 12/13] fix rewrap --- extension/js/common/api/email-provider/gmail/google-auth.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extension/js/common/api/email-provider/gmail/google-auth.ts b/extension/js/common/api/email-provider/gmail/google-auth.ts index e10a7965d6e..901a60cfe20 100644 --- a/extension/js/common/api/email-provider/gmail/google-auth.ts +++ b/extension/js/common/api/email-provider/gmail/google-auth.ts @@ -152,7 +152,7 @@ export class GoogleAuth { const wellKnownHostMeta = new WellKnownHostMeta(authRes.acctEmail); await wellKnownHostMeta.fetchAndCacheFesUrl(); } catch (e) { - Catch.reportErr(Catch.rewrapErr(`WellKnownHostMeta on ${FLAVOR}`, e)); + Catch.reportErr(Catch.rewrapErr(e, `WellKnownHostMeta on ${FLAVOR}`)); } } catch (e) { return { result: 'Error', error: `Grant successful but error accessing fc account: ${String(e)}`, acctEmail: authRes.acctEmail, id_token: undefined }; From daa9f2612611a7459c87f4375bf603232e378376 Mon Sep 17 00:00:00 2001 From: Tom J Date: Mon, 12 Oct 2020 16:13:51 +0000 Subject: [PATCH 13/13] ignore expected errs --- test/source/test.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/source/test.ts b/test/source/test.ts index 948509d43a1..4b1d55f51ac 100644 --- a/test/source/test.ts +++ b/test/source/test.ts @@ -93,7 +93,9 @@ ava.after.always('evaluate Catch.reportErr errors', async t => { // todo - here we filter out an error that would otherwise be useful // in one test we are testing an error scenario // our S/MIME implementation is still early so it throws "reportable" errors like this during tests - const usefulErrors = mockBackendData.reportedErrors.filter(e => e.message !== 'Too few bytes to read ASN.1 value.'); + const usefulErrors = mockBackendData.reportedErrors + .filter(e => e.message !== 'Too few bytes to read ASN.1 value.') + .filter(e => !(testVariant === 'ENTERPRISE-MOCK' && e.message.includes('.well-known/host-meta.json'))); // on enterprise, these report errs // end of todo const foundExpectedErr = usefulErrors.find(re => re.message === `intentional error for debugging`); const foundUnwantedErrs = usefulErrors.filter(re => re.message !== `intentional error for debugging` && !re.message.includes('traversal forbidden'));