mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-18 10:36:22 +08:00
54 lines
1.4 KiB
TypeScript
54 lines
1.4 KiB
TypeScript
import { createRequire } from 'node:module';
|
|
|
|
import { type DynamicModule, type FactoryProvider } from '@nestjs/common';
|
|
|
|
import { Config } from '../config';
|
|
|
|
export const StorageProvide = Symbol('Storage');
|
|
|
|
let storageModule: typeof import('@affine/storage');
|
|
try {
|
|
storageModule = await import('@affine/storage');
|
|
} catch {
|
|
const require = createRequire(import.meta.url);
|
|
storageModule =
|
|
process.arch === 'arm64'
|
|
? require('../../storage.arm64.node')
|
|
: require('../../storage.node');
|
|
}
|
|
|
|
export class StorageModule {
|
|
static forRoot(): DynamicModule {
|
|
const storageProvider: FactoryProvider = {
|
|
provide: StorageProvide,
|
|
useFactory: async (config: Config) => {
|
|
return storageModule.Storage.connect(config.db.url);
|
|
},
|
|
inject: [Config],
|
|
};
|
|
|
|
return {
|
|
global: true,
|
|
module: StorageModule,
|
|
providers: [storageProvider],
|
|
exports: [storageProvider],
|
|
};
|
|
}
|
|
}
|
|
|
|
export const mergeUpdatesInApplyWay = storageModule.mergeUpdatesInApplyWay;
|
|
|
|
export const verifyChallengeResponse = async (
|
|
response: any,
|
|
bits: number,
|
|
resource: string
|
|
) => {
|
|
if (typeof response !== 'string' || !response || !resource) return false;
|
|
return storageModule.verifyChallengeResponse(response, bits, resource);
|
|
};
|
|
|
|
export const mintChallengeResponse = async (resource: string, bits: number) => {
|
|
if (!resource) return null;
|
|
return storageModule.mintChallengeResponse(resource, bits);
|
|
};
|