refactor: new project struct (#8199)

packages/frontend/web -> packages/frontend/apps/web
packages/frontend/mobile -> packages/frontend/apps/mobile
packages/frontend/electron -> packages/frontend/apps/electron
This commit is contained in:
EYHN
2024-09-12 07:42:57 +00:00
parent 7c4eab6cd3
commit cc5a6e6d40
291 changed files with 139 additions and 134 deletions
@@ -0,0 +1,34 @@
import type { AppAdapter } from 'electron-updater/out/AppAdapter';
/**
* For testing and same as:
* https://github.com/electron-userland/electron-builder/blob/master/packages/electron-updater/src/ElectronAppAdapter.ts
*/
export class MockedAppAdapter implements AppAdapter {
version: string;
name = 'AFFiNE-testing';
isPackaged = true;
appUpdateConfigPath = '';
userDataPath = '';
baseCachePath = '';
constructor(version: string) {
this.version = version;
}
whenReady() {
return Promise.resolve();
}
relaunch() {
return;
}
quit() {
return;
}
onQuit(_handler: (exitCode: number) => void) {
return;
}
}
@@ -0,0 +1,26 @@
import http from 'node:https';
import { HttpExecutor } from 'builder-util-runtime';
import type { ClientRequest } from 'electron';
/**
* For testing and same as:
* https://github.com/electron-userland/electron-builder/blob/master/packages/electron-updater/src/electronHttpExecutor.ts
*/
export class MockedHttpExecutor extends HttpExecutor<ClientRequest> {
createRequest(
options: any,
callback: (response: any) => void
): ClientRequest {
if (options.headers && options.headers.Host) {
// set host value from headers.Host
options.host = options.headers.Host;
// remove header property 'Host', if not removed causes net::ERR_INVALID_ARGUMENT exception
delete options.headers.Host;
}
const request = http.request(options);
request.on('response', callback);
return request as unknown as ClientRequest;
}
}
@@ -0,0 +1,3 @@
export * from './app-adapter';
export * from './http-executor';
export * from './updater';
@@ -0,0 +1,39 @@
import 'electron-updater'; // Prevent BaseUpdater is undefined.
import { randomBytes } from 'node:crypto';
import type { AllPublishOptions } from 'builder-util-runtime';
import { UUID } from 'builder-util-runtime';
import type { AppAdapter } from 'electron-updater/out/AppAdapter';
import type { DownloadUpdateOptions } from 'electron-updater/out/AppUpdater';
import type { InstallOptions } from 'electron-updater/out/BaseUpdater';
import { BaseUpdater } from 'electron-updater/out/BaseUpdater';
import { MockedHttpExecutor } from './http-executor';
/**
* For testing, like:
* https://github.com/electron-userland/electron-builder/blob/master/packages/electron-updater/src/MacUpdater.ts
*/
export class MockedUpdater extends BaseUpdater {
httpExecutor: MockedHttpExecutor;
constructor(options?: AllPublishOptions | null, app?: AppAdapter) {
super(options, app);
this.httpExecutor = new MockedHttpExecutor();
Object.assign(this, {
getOrCreateStagingUserId: () => {
const id = UUID.v5(randomBytes(4096), UUID.OID);
return id;
},
});
}
doInstall(_options: InstallOptions) {
return true;
}
doDownloadUpdate(_options: DownloadUpdateOptions): Promise<string[]> {
return Promise.resolve([]);
}
}