feat: add snjs package
This commit is contained in:
34
packages/snjs/lib/Migrations/StorageReaders/Functions.ts
Normal file
34
packages/snjs/lib/Migrations/StorageReaders/Functions.ts
Normal file
@@ -0,0 +1,34 @@
|
||||
import { ApplicationIdentifier } from '@standardnotes/common'
|
||||
import { compareSemVersions, isRightVersionGreaterThanLeft } from '@Lib/Version'
|
||||
import { DeviceInterface, Environment } from '@standardnotes/services'
|
||||
import { StorageReader } from './Reader'
|
||||
import * as ReaderClasses from './Versions'
|
||||
|
||||
function ReaderClassForVersion(
|
||||
version: string,
|
||||
): typeof ReaderClasses.StorageReader2_0_0 | typeof ReaderClasses.StorageReader1_0_0 {
|
||||
/** Sort readers by newest first */
|
||||
const allReaders = Object.values(ReaderClasses).sort((a, b) => {
|
||||
return compareSemVersions(a.version(), b.version()) * -1
|
||||
})
|
||||
for (const reader of allReaders) {
|
||||
if (reader.version() === version) {
|
||||
return reader
|
||||
}
|
||||
if (isRightVersionGreaterThanLeft(reader.version(), version)) {
|
||||
return reader
|
||||
}
|
||||
}
|
||||
|
||||
throw Error(`Cannot find reader for version ${version}`)
|
||||
}
|
||||
|
||||
export function CreateReader(
|
||||
version: string,
|
||||
deviceInterface: DeviceInterface,
|
||||
identifier: ApplicationIdentifier,
|
||||
environment: Environment,
|
||||
): StorageReader {
|
||||
const readerClass = ReaderClassForVersion(version)
|
||||
return new readerClass(deviceInterface, identifier, environment)
|
||||
}
|
||||
Reference in New Issue
Block a user