From 0ee506c01ed0997d84cf5cef813818a30e81fb06 Mon Sep 17 00:00:00 2001 From: Meno Abels Date: Tue, 7 Jan 2025 14:55:50 +0100 Subject: [PATCH 1/2] chore: rebuild lint --- .prettierignore | 1 + eslint.config.mjs | 34 +++++++++++- package.json | 1 + pnpm-lock.yaml | 8 +++ publish-package.ts | 7 +-- setup.indexdb.ts | 2 +- src/blockstore/commit-queue.ts | 6 ++- src/blockstore/loader.ts | 8 +-- src/blockstore/store.ts | 28 ++++++---- src/blockstore/transaction.ts | 2 +- src/blockstore/types.ts | 4 +- src/crdt-clock.ts | 12 +++-- src/crdt-helpers.ts | 8 ++- src/crdt.ts | 2 +- src/ledger.ts | 18 ++++--- src/react/useFireproof.ts | 6 +-- src/runtime/files.ts | 2 +- src/runtime/gateways/file/node-filesystem.ts | 2 +- src/runtime/gateways/fp-envelope-serialize.ts | 2 +- src/runtime/gateways/indexdb/gateway.ts | 6 +-- src/runtime/key-bag-indexdb.ts | 4 +- src/runtime/keyed-crypto.ts | 4 +- src/runtime/wait-pr-multiformats/block.ts | 53 ++++++++++--------- src/version.ts | 2 +- tests/fireproof/all-gateway.test.ts | 16 +++--- tests/fireproof/fireproof.test.ts | 8 +-- tests/fireproof/ledger.test.ts | 20 +++---- tests/fireproof/utils.test.ts | 2 +- tests/gateway/file/loader-config.test.ts | 52 +++++++++--------- tests/gateway/indexdb/loader-config.test.ts | 16 +++--- tests/react/useFireproof.test.tsx | 2 +- tsconfig.json | 10 ++-- tsup.config.ts | 38 ++++++------- version-copy-package.ts | 29 ++++++---- vitest.file.config.ts | 4 +- vitest.indexdb.config.ts | 5 +- vitest.memory.config.ts | 4 +- vitest.workspace.ts | 6 +-- 38 files changed, 252 insertions(+), 182 deletions(-) diff --git a/.prettierignore b/.prettierignore index 0b497349b..aaf0f70e2 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,2 +1,3 @@ **/pnpm-lock.yaml scripts/ +**/.esm-cache/* diff --git a/eslint.config.mjs b/eslint.config.mjs index 9a05a055c..402ffd05c 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -4,22 +4,46 @@ import tseslint from "typescript-eslint"; const opts = tseslint.config( eslint.configs.recommended, // ...tseslint.configs.recommended, - ...tseslint.configs.strict, - ...tseslint.configs.stylistic, + // ...tseslint.configs.strict, + // ...tseslint.configs.stylistic, + ...tseslint.configs.strictTypeChecked, + ...tseslint.configs.stylisticTypeChecked, + ...tseslint.configs.recommendedTypeChecked, + { + languageOptions: { + parserOptions: { + sourceType: "module", + project: "./tsconfig.json", + // projectService: true, + tsconfigRootDir: import.meta.dirname, + }, + }, + }, { ignores: [ "babel.config.cjs", + "prettier.config.js", "jest.config.js", + "setup.*.js", + "to-esm.js", + "vitest.*.ts", + "**/.esm-cache/**", "**/dist/", + "dist/**", "**/pubdir/", "**/node_modules/", "**/scripts/", "**/examples/", "scripts/", + "coverage/", "smoke/react/", "src/missingTypes/lib.deno.d.ts", ], }, + { + files: ["**/*.js", "*.mjs"], + extends: [tseslint.configs.disableTypeChecked], + }, { rules: { "no-console": ["warn"], @@ -30,6 +54,12 @@ const opts = tseslint.config( "no-restricted-globals": ["error", "URL", "TextDecoder", "TextEncoder"], }, }, + { + ignores: ["**/*.mjs"], + rules: { + "@typescript-eslint/prefer-readonly": "error", + }, + }, ); export default opts; diff --git a/package.json b/package.json index 62f674ff6..c056b92c0 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,7 @@ "@types/node": "^22.10.5", "@types/randombytes": "^2.0.3", "@types/react": "^18.3.12", + "@types/semver": "^7.5.8", "@typescript-eslint/typescript-estree": "^8.19.0", "@vitest/browser": "^2.1.8", "@vitest/coverage-v8": "^2.1.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 99f502ab7..3282d9c89 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -72,6 +72,9 @@ importers: '@types/react': specifier: ^18.3.12 version: 18.3.12 + '@types/semver': + specifier: ^7.5.8 + version: 7.5.8 '@typescript-eslint/typescript-estree': specifier: ^8.19.0 version: 8.19.0(typescript@5.7.2) @@ -999,6 +1002,9 @@ packages: '@types/retry@0.12.2': resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + '@types/sinonjs__fake-timers@8.1.5': resolution: {integrity: sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==} @@ -3730,6 +3736,8 @@ snapshots: '@types/retry@0.12.2': {} + '@types/semver@7.5.8': {} + '@types/sinonjs__fake-timers@8.1.5': {} '@types/statuses@2.0.5': {} diff --git a/publish-package.ts b/publish-package.ts index 2c7f2633b..830572311 100644 --- a/publish-package.ts +++ b/publish-package.ts @@ -3,6 +3,7 @@ import { $ } from "zx"; import { SemVer } from "semver"; import fs from "fs"; import path from "path"; +import * as process from "process"; async function main() { $.verbose = true; @@ -13,17 +14,17 @@ async function main() { } const tags: string[] = []; let refVersion; - if (process.env.GITHUB_REF && process.env.GITHUB_REF.startsWith("refs/tags/v")) { + if (process.env.GITHUB_REF?.startsWith("refs/tags/v")) { refVersion = process.env.GITHUB_REF; } if (!refVersion) { - console.error(`No version found in GITHUB_REF(${process.env.GITHUB_REF}) we will not publish`); + console.error(`No version found in GITHUB_REF(${process.env.GITHUB_REF ?? ""}) we will not publish`); process.exit(1); } const version = refVersion.replace(/^.*\/v/, ""); console.log(`Version: ${version} ${refVersion}`); const semVer = new SemVer(version); - if (semVer.prerelease.find((i) => i.includes("dev"))) { + if (semVer.prerelease.find((i) => i.toString().includes("dev"))) { tags.push("dev"); } console.log(`Publishing package: ${packageJsonFile} version ${version} with tags ${tags.join(", ")}`); diff --git a/setup.indexdb.ts b/setup.indexdb.ts index 01864783a..ef6291227 100644 --- a/setup.indexdb.ts +++ b/setup.indexdb.ts @@ -1,4 +1,4 @@ -function gthis() { +function gthis(): Record { return globalThis; } diff --git a/src/blockstore/commit-queue.ts b/src/blockstore/commit-queue.ts index 62dfd7c4c..677c774f7 100644 --- a/src/blockstore/commit-queue.ts +++ b/src/blockstore/commit-queue.ts @@ -3,7 +3,7 @@ import { Future } from "@adviser/cement"; type QueueFunction = () => Promise; export class CommitQueue { - readonly queue: QueueFunction[] = []; + readonly queue: QueueFunction[] = []; processing = false; readonly _waitIdleItems: Set> = new Set>(); @@ -48,7 +48,9 @@ export class CommitQueue { if (this.queue.length === 0 && !this.processing) { const toResolve = Array.from(this._waitIdleItems); this._waitIdleItems.clear(); - toResolve.map((fn) => fn.resolve()); + toResolve.map((fn) => { + fn.resolve(); + }); } } } diff --git a/src/blockstore/loader.ts b/src/blockstore/loader.ts index 01da74d30..1ef9baa95 100644 --- a/src/blockstore/loader.ts +++ b/src/blockstore/loader.ts @@ -72,9 +72,9 @@ export class Loader implements Loadable { remoteCarStore?: DataStore; remoteFileStore?: DataStore; - private getBlockCache = new Map(); - private seenMeta = new Set(); - private writeLimit = pLimit(1); + private readonly getBlockCache = new Map(); + private readonly seenMeta = new Set(); + private readonly writeLimit = pLimit(1); private readonly _carStore = new ResolveOnce(); async carStore(): Promise { @@ -214,7 +214,7 @@ export class Loader implements Loadable { carHeader.compact.map((c) => c.toString()).forEach(this.seenCompacted.add, this.seenCompacted); await this.getMoreReaders(carHeader.cars.flat()); this.carLog = [...uniqueCids([meta.cars, ...this.carLog, ...carHeader.cars], this.seenCompacted)]; - await this.ebOpts.applyMeta?.(carHeader.meta); + await this.ebOpts.applyMeta(carHeader.meta); } // protected async ingestKeyFromMeta(meta: DbMeta): Promise { diff --git a/src/blockstore/store.ts b/src/blockstore/store.ts index efbbf0125..556fc048e 100644 --- a/src/blockstore/store.ts +++ b/src/blockstore/store.ts @@ -111,7 +111,7 @@ export abstract class BaseStoreImpl { const res = await this.gateway.start(this._url, this.loader); if (res.isErr()) { this.logger.Error().Result("gw-start", res).Msg("started-gateway"); - return res as Result; + return res; } this._url = res.Ok(); // add storekey to url @@ -126,7 +126,7 @@ export abstract class BaseStoreImpl { return storeKeyName.join(":"); }); if (skRes.isErr()) { - return skRes as Result; + return skRes; } this._url = skRes.Ok(); const version = guardVersion(this._url); @@ -143,7 +143,9 @@ export abstract class BaseStoreImpl { return ready as Result; } } - this._onStarted.forEach((fn) => fn()); + this._onStarted.forEach((fn) => { + fn(); + }); this.logger.Debug().Msg("started"); return version; } @@ -154,7 +156,7 @@ export async function createDbMetaEvent(sthis: SuperThis, dbMeta: DbMeta, parent { dbMeta: sthis.txt.encode(format(dbMeta)), }, - parents as unknown as Link, number, number, 1>[], + parents as unknown as Link>[], ); return { eventCid: event.cid as CarClockLink, @@ -182,7 +184,7 @@ export class MetaStoreImpl extends BaseStoreImpl implements MetaStore { async ({ payload: dbMetas }: FPEnvelopeMeta) => { this.logger.Debug().Msg("Received message from gateway"); await Promise.all( - dbMetas.map((dbMeta) => this.loader.taskManager?.handleEvent(dbMeta.eventCid, dbMeta.parents, dbMeta.dbMeta)), + dbMetas.map((dbMeta) => this.loader.taskManager.handleEvent(dbMeta.eventCid, dbMeta.parents, dbMeta.dbMeta)), ); this.updateParentsFromDbMetas(dbMetas); }, @@ -257,7 +259,9 @@ export class MetaStoreImpl extends BaseStoreImpl implements MetaStore { async close(): Promise> { await this.gateway.close(this.url(), this.loader); - this._onClosed.forEach((fn) => fn()); + this._onClosed.forEach((fn) => { + fn(); + }); return Result.Ok(undefined); } async destroy(): Promise> { @@ -322,7 +326,7 @@ export class DataStoreImpl extends BaseStoreImpl implements DataStore { if (res.isErr()) { throw this.logger.Error().Err(res.Err()).Msg("got error from gateway.put").AsError(); } - return res.Ok(); + res.Ok(); } async remove(cid: AnyLink): Promise> { const url = await this.gateway.buildUrl(this.url(), cid.toString(), this.loader); @@ -333,7 +337,9 @@ export class DataStoreImpl extends BaseStoreImpl implements DataStore { } async close(): Promise> { await this.gateway.close(this.url(), this.loader); - this._onClosed.forEach((fn) => fn()); + this._onClosed.forEach((fn) => { + fn(); + }); return Result.Ok(undefined); } destroy(): Promise> { @@ -352,7 +358,7 @@ export class WALStoreImpl extends BaseStoreImpl implements WALStore { readonly walState: WALState = { operations: [], noLoaderOps: [], fileOperations: [] }; readonly processing: Promise | undefined = undefined; - readonly processQueue: CommitQueue = new CommitQueue(); + readonly processQueue: CommitQueue = new CommitQueue(); constructor(sthis: SuperThis, url: URI, opts: StoreOpts) { // const my = new URL(url.toString()); @@ -574,7 +580,9 @@ export class WALStoreImpl extends BaseStoreImpl implements WALStore { async close() { await this.gateway.close(this.url(), this.loader); - this._onClosed.forEach((fn) => fn()); + this._onClosed.forEach((fn) => { + fn(); + }); return Result.Ok(undefined); } diff --git a/src/blockstore/transaction.ts b/src/blockstore/transaction.ts index b3453e0b5..444a73648 100644 --- a/src/blockstore/transaction.ts +++ b/src/blockstore/transaction.ts @@ -66,7 +66,7 @@ export function defaultedBlockstoreRuntime( }, // eslint-disable-next-line @typescript-eslint/no-unused-vars compact: async (blocks: BlockFetcher) => { - return {} as unknown as TransactionMeta; + return {} as unknown; }, autoCompact: 100, public: false, diff --git a/src/blockstore/types.ts b/src/blockstore/types.ts index 861b00c69..be943b00c 100644 --- a/src/blockstore/types.ts +++ b/src/blockstore/types.ts @@ -24,7 +24,7 @@ export interface AnyBlock { } export interface CIDBlock { - readonly cid: CID; + readonly cid: CID; readonly bytes: Uint8Array; } @@ -357,7 +357,7 @@ export interface WALStore extends BaseStore { readonly storeType: "wal"; ready(): Promise; readonly processing?: Promise | undefined; - readonly processQueue: CommitQueue; + readonly processQueue: CommitQueue; process(): Promise; enqueue(dbMeta: DbMeta, opts: CommitOpts): Promise; diff --git a/src/crdt-clock.ts b/src/crdt-clock.ts index 07b499c0d..7fc1c88b9 100644 --- a/src/crdt-clock.ts +++ b/src/crdt-clock.ts @@ -61,13 +61,19 @@ export class CRDTClock { const changes = await clockChangesSince(throwFalsy(this.blockstore), this.head, prevHead, {}, this.logger); internalUpdates = changes.result; } - this.zoomers.forEach((fn) => fn()); + this.zoomers.forEach((fn) => { + fn(); + }); this.notifyWatchers(internalUpdates || []); } notifyWatchers(updates: DocUpdate[]) { - this.emptyWatchers.forEach((fn) => fn()); - this.watchers.forEach((fn) => fn(updates || [])); + this.emptyWatchers.forEach((fn) => { + fn(); + }); + this.watchers.forEach((fn) => { + fn(updates || []); + }); } onTick(fn: (updates: DocUpdate[]) => void) { diff --git a/src/crdt-helpers.ts b/src/crdt-helpers.ts index 5c66055cf..7ac2e9d11 100644 --- a/src/crdt-helpers.ts +++ b/src/crdt-helpers.ts @@ -128,7 +128,7 @@ async function processFileset( // let totalSize = 0 for (const filename in files) { if (File === files[filename].constructor) { - const file = files[filename] as File; + const file = files[filename]; // totalSize += file.size const { cid, blocks: fileBlocks } = await store.encodeFile(file); @@ -148,7 +148,7 @@ async function processFileset( if (didPut.length) { const car = await dbBlockstore.loader.commitFiles( t, - { files } as unknown as TransactionMeta /* { + { files } as unknown /* { public: publicFiles, } */, ); @@ -241,9 +241,7 @@ export async function clockChangesSince( opts: ChangesOptions, logger: Logger, ): Promise<{ result: DocUpdate[]; head: ClockHead }> { - const eventsFetcher = ( - opts.dirty ? new DirtyEventFetcher(logger, blocks) : new EventFetcher(blocks) - ) as EventFetcher; + const eventsFetcher = opts.dirty ? new DirtyEventFetcher(logger, blocks) : new EventFetcher(blocks); const keys = new Set(); const updates = await gatherUpdates( blocks, diff --git a/src/crdt.ts b/src/crdt.ts index d8843b5b3..289b36702 100644 --- a/src/crdt.ts +++ b/src/crdt.ts @@ -194,6 +194,6 @@ export class CRDT { async compact(): Promise { const blocks = this.blockstore as EncryptedBlockstore; - return await blocks.compact(); + await blocks.compact(); } } diff --git a/src/ledger.ts b/src/ledger.ts index d1a6432b6..8ab846bd7 100644 --- a/src/ledger.ts +++ b/src/ledger.ts @@ -149,7 +149,7 @@ export class LedgerShell
> implements return this.ref.name; } onClosed(fn: () => void): void { - return this.ref.onClosed(fn); + this.ref.onClosed(fn); } close(): Promise { return this.ref.shellClose(this); @@ -234,7 +234,9 @@ class LedgerImpl
> implements Ledger fn()); + this._onClosedFns.forEach((fn) => { + fn(); + }); } // await this.blockstore.close(); } @@ -299,7 +301,7 @@ class LedgerImpl
> implements Ledger(docs: DocSet[]): Promise { @@ -323,7 +325,7 @@ class LedgerImpl
> implements Ledger(since: ClockHead = [], opts: ChangesOptions = {}): Promise> { @@ -406,7 +408,9 @@ class LedgerImpl
> implements Ledger>[] = updates.map(({ id, value }) => ({ ...value, _id: id })); for (const listener of this._listeners) { - await (async () => await listener(docs as DocWithId
[]))().catch((e: Error) => { + await (async () => { + await listener(docs as DocWithId
[]); + })().catch((e: Error) => { this.logger.Error().Err(e).Msg("subscriber error"); }); } @@ -417,7 +421,9 @@ class LedgerImpl
> implements Ledger await listener([]))().catch((e: Error) => { + await (async () => { + await listener([]); + })().catch((e: Error) => { this.logger.Error().Err(e).Msg("subscriber error"); }); } diff --git a/src/react/useFireproof.ts b/src/react/useFireproof.ts index 2de2f8f64..e14e23b25 100644 --- a/src/react/useFireproof.ts +++ b/src/react/useFireproof.ts @@ -256,7 +256,7 @@ export function useFireproof(name: string | Ledger = "useFireproof", config: Con const refreshRows = useCallback(async () => { const res = await ledger.query(mapFn, query); - setResult({ ...res, docs: res.rows.map((r) => r.doc as DocWithId) }); + setResult({ ...res, docs: res.rows.map((r) => r.doc!) }); }, [mapFnString, queryString]); useEffect(() => { @@ -276,7 +276,7 @@ export function useFireproof(name: string | Ledger = "useFireproof", config: Con const refreshRows = useCallback(async () => { const res = await ledger.allDocs(query); - setResult({ ...res, docs: res.rows.map((r) => r.value as DocWithId) }); + setResult({ ...res, docs: res.rows.map((r) => r.value) }); }, [queryString]); useEffect(() => { @@ -296,7 +296,7 @@ export function useFireproof(name: string | Ledger = "useFireproof", config: Con const refreshRows = useCallback(async () => { const res = await ledger.changes(since, opts); - setResult({ ...res, docs: res.rows.map((r) => r.value as DocWithId) }); + setResult({ ...res, docs: res.rows.map((r) => r.value) }); }, [since, queryString]); useEffect(() => { diff --git a/src/runtime/files.ts b/src/runtime/files.ts index 2c23d769b..b52672a15 100644 --- a/src/runtime/files.ts +++ b/src/runtime/files.ts @@ -57,7 +57,7 @@ function createFileEncoderStream(blob: BlobLike) { } class UnixFSFileBuilder { - #file; + readonly #file; readonly name: string; constructor(name: string, file: BlobLike) { this.name = name; diff --git a/src/runtime/gateways/file/node-filesystem.ts b/src/runtime/gateways/file/node-filesystem.ts index b18de5de7..ea28c7fa0 100644 --- a/src/runtime/gateways/file/node-filesystem.ts +++ b/src/runtime/gateways/file/node-filesystem.ts @@ -23,7 +23,7 @@ export class NodeFileSystem implements SysFileSystem { return this.fs?.mkdir(path, options); } async readdir(path: PathLike, options?: ObjectEncodingOptions): Promise { - return this.fs?.readdir(path, options) as Promise; + return this.fs?.readdir(path, options)!; } async rm(path: PathLike, options?: MakeDirectoryOptions & { recursive: boolean }): Promise { return this.fs?.rm(path, options); diff --git a/src/runtime/gateways/fp-envelope-serialize.ts b/src/runtime/gateways/fp-envelope-serialize.ts index 6bc391617..0072d7173 100644 --- a/src/runtime/gateways/fp-envelope-serialize.ts +++ b/src/runtime/gateways/fp-envelope-serialize.ts @@ -34,7 +34,7 @@ async function dbMetaEvent2Serialized(sthis: SuperThis, dbEvents: Omit, number, number, 1>[], + dbEvent.parents as unknown as Link>[], ); return { cid: event.cid.toString(), diff --git a/src/runtime/gateways/indexdb/gateway.ts b/src/runtime/gateways/indexdb/gateway.ts index 497ca6573..e2f5e0a19 100644 --- a/src/runtime/gateways/indexdb/gateway.ts +++ b/src/runtime/gateways/indexdb/gateway.ts @@ -13,7 +13,7 @@ function ensureVersion(url: URI): URI { } interface IDBConn { - readonly db: IDBPDatabase; + readonly db: IDBPDatabase; readonly dbName: DbName; readonly version: string; readonly url: URI; @@ -40,7 +40,7 @@ async function connectIdb(url: URI, sthis: SuperThis): Promise { }, }); const found = await db.get("version", "version"); - const version = ensureVersion(url).getParam(PARAM.VERSION) as string; + const version = ensureVersion(url).getParam(PARAM.VERSION)!; if (!found) { await db.put("version", { version }, "version"); } else if (found.version !== version) { @@ -91,7 +91,7 @@ export class IndexDBGateway implements Gateway { this.logger = ensureLogger(sthis, "IndexDBGateway"); this.sthis = sthis; } - _db: IDBPDatabase = {} as IDBPDatabase; + _db: IDBPDatabase = {} as IDBPDatabase; async start(baseURL: URI): Promise> { return exception2Result(async () => { diff --git a/src/runtime/key-bag-indexdb.ts b/src/runtime/key-bag-indexdb.ts index 709ae9153..a4b4b715a 100644 --- a/src/runtime/key-bag-indexdb.ts +++ b/src/runtime/key-bag-indexdb.ts @@ -5,7 +5,7 @@ import { Logger, ResolveOnce, URI } from "@adviser/cement"; import { SuperThis } from "use-fireproof"; export class KeyBagProviderIndexDB implements KeyBagProvider { - readonly _db: ResolveOnce> = new ResolveOnce>(); + readonly _db: ResolveOnce = new ResolveOnce(); readonly dbName: string; readonly url: URI; @@ -18,7 +18,7 @@ export class KeyBagProviderIndexDB implements KeyBagProvider { this.dbName = getPath(this.url, this.sthis); } - async _prepare(): Promise> { + async _prepare(): Promise { return this._db.once(async () => { return await openDB(this.dbName, 1, { upgrade(db) { diff --git a/src/runtime/keyed-crypto.ts b/src/runtime/keyed-crypto.ts index 80dd34ae0..60f8dc56e 100644 --- a/src/runtime/keyed-crypto.ts +++ b/src/runtime/keyed-crypto.ts @@ -42,7 +42,7 @@ const generateIV: Record = { function getGenerateIVFn(url: URI, opts: Partial): GenerateIVFn { const ivhash = opts.ivCalc || url.getParam(PARAM.IV_HASH) || "hash"; - return generateIV[ivhash] || generateIV["hash"]; + return generateIV[ivhash] || generateIV.hash; } export class BlockIvKeyIdCodec implements BlockCodec<0x300539, Uint8Array> { @@ -85,7 +85,7 @@ export class BlockIvKeyIdCodec implements BlockCodec<0x300539, Uint8Array> { throw this.ko.logger.Error().Str("fp", fprt).Str("keyId", base58btc.encode(keyId)).Msg("keyId mismatch").AsError(); } const result = await this.ko._decrypt({ iv: iv, bytes: data }); - if (!this.opts?.noIVVerify && !(await getGenerateIVFn(this.ko.url, this.opts).verify(this.ko, this.ko.crypto, iv, result))) { + if (!this.opts.noIVVerify && !(await getGenerateIVFn(this.ko.url, this.opts).verify(this.ko, this.ko.crypto, iv, result))) { throw this.ko.logger.Error().Msg("iv missmatch").AsError(); } return result; diff --git a/src/runtime/wait-pr-multiformats/block.ts b/src/runtime/wait-pr-multiformats/block.ts index 222fb84c0..0009f663c 100644 --- a/src/runtime/wait-pr-multiformats/block.ts +++ b/src/runtime/wait-pr-multiformats/block.ts @@ -10,52 +10,55 @@ import { BlockDecoder, BlockEncoder } from "./codec-interface.js"; export const Block = mfBlock; interface DecodeInput { - bytes: ByteView; - codec: BlockDecoder; - hasher: MultihashHasher; + readonly bytes: ByteView; + readonly codec: BlockDecoder; + readonly hasher: MultihashHasher; } -export async function decode({ +export async function decode({ bytes, codec, hasher, -}: DecodeInput): Promise> { - if (bytes == null) throw new Error('Missing required argument "bytes"'); - if (codec == null || hasher == null) throw new Error("Missing required argument: codec or hasher"); +}: DecodeInput): Promise> { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (!bytes) throw new Error('Missing required argument "bytes"'); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (!codec || !hasher) throw new Error("Missing required argument: codec or hasher"); const value = await Promise.resolve(codec.decode(bytes)); const hash = await hasher.digest(bytes); - const cid = CID.create(1, codec.code, hash) as CID; + const cid = CID.create(1 as V, codec.code, hash); - return new mfBlock({ value, bytes, cid }); + return new mfBlock({ value, bytes, cid }); } interface EncodeInput { - value: T; - codec: BlockEncoder; - hasher: MultihashHasher; + readonly value: T; + readonly codec: BlockEncoder; + readonly hasher: MultihashHasher; } -export async function encode({ +export async function encode({ value, codec, hasher, -}: EncodeInput): Promise> { +}: EncodeInput): Promise> { if (typeof value === "undefined") throw new Error('Missing required argument "value"'); - if (codec == null || hasher == null) throw new Error("Missing required argument: codec or hasher"); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (!codec || !hasher) throw new Error("Missing required argument: codec or hasher"); const bytes = await Promise.resolve(codec.encode(value)); const hash = await hasher.digest(bytes); - const cid = CID.create(1, codec.code, hash) as CID; + const cid = CID.create(1 as V, codec.code, hash); - return new mfBlock({ value, bytes, cid }); + return new mfBlock({ value, bytes, cid }); } interface CreateInput { - bytes: ByteView; - cid: Link; - hasher: MultihashHasher; - codec: BlockDecoder; + readonly bytes: ByteView; + readonly cid: Link; + readonly hasher: MultihashHasher; + readonly codec: BlockDecoder; } export async function create({ @@ -64,8 +67,10 @@ export async function create): Promise> { - if (bytes == null) throw new Error('Missing required argument "bytes"'); - if (hasher == null) throw new Error('Missing required argument "hasher"'); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (!bytes) throw new Error('Missing required argument "bytes"'); + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (!hasher) throw new Error('Missing required argument "hasher"'); const value = await Promise.resolve(codec.decode(bytes)); const hash = await hasher.digest(bytes); if (!binary.equals(cid.multihash.bytes, hash.bytes)) { @@ -106,7 +111,7 @@ export async function createUnsafe): Promise> { - const value = await Promise.resolve(maybeValue !== undefined ? maybeValue : codec?.decode(bytes)); + const value = await Promise.resolve(maybeValue ? maybeValue : codec?.decode(bytes)); if (value === undefined) throw new Error('Missing required argument, must either provide "value" or "codec"'); diff --git a/src/version.ts b/src/version.ts index 8932442af..d16d969d0 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1,3 +1,3 @@ export const PACKAGE_VERSION = Object.keys({ __packageVersion__: "xxxx", -})[0] as string; +})[0]; diff --git a/tests/fireproof/all-gateway.test.ts b/tests/fireproof/all-gateway.test.ts index 33e0a1db8..debd2826e 100644 --- a/tests/fireproof/all-gateway.test.ts +++ b/tests/fireproof/all-gateway.test.ts @@ -50,10 +50,10 @@ describe("noop Gateway", function () { }); // Extract stores from the loader - carStore = (await db.crdt.blockstore.loader?.carStore()) as DataStore; - metaStore = (await db.crdt.blockstore.loader?.metaStore()) as MetaStore; - fileStore = (await db.crdt.blockstore.loader?.fileStore()) as DataStore; - walStore = (await db.crdt.blockstore.loader?.WALStore()) as WALStore; + carStore = await db.crdt.blockstore.loader.carStore(); + metaStore = await db.crdt.blockstore.loader.metaStore(); + fileStore = await db.crdt.blockstore.loader.fileStore(); + walStore = await db.crdt.blockstore.loader.WALStore(); // Extract and log gateways carGateway = carStore.realGateway; @@ -377,7 +377,7 @@ describe("noop Gateway subscribe", function () { db = LedgerFactory("test-gateway-" + sthis.nextId().str); // Extract stores from the loader - metaStore = (await db.crdt.blockstore.loader?.metaStore()) as MetaStore; + metaStore = await db.crdt.blockstore.loader.metaStore(); metaGateway = metaStore.realGateway; }); @@ -391,12 +391,12 @@ describe("noop Gateway subscribe", function () { resolve = r; }); if (metaGateway.subscribe) { - const metaSubscribeResult = (await metaGateway.subscribe(metaUrl.Ok(), async (data: FPEnvelopeMeta) => { + const metaSubscribeResult = await metaGateway.subscribe(metaUrl.Ok(), async (data: FPEnvelopeMeta) => { // const decodedData = sthis.txt.decode(data); expect(data.payload).toContain("[]"); didCall = true; resolve(); - })) as bs.UnsubscribeResult; + }); expect(metaSubscribeResult.isOk()).toBeTruthy(); const ok = await db.put({ _id: "key1", hello: "world1" }); expect(ok).toBeTruthy(); @@ -431,7 +431,7 @@ describe("Gateway", function () { // Extract stores from the loader // carStore = (await db.blockstore.loader.carStore()) as unknown as ExtendedStore; - metaStore = (await db.crdt.blockstore.loader?.metaStore()) as MetaStore; + metaStore = await db.crdt.blockstore.loader.metaStore(); // fileStore = (await db.blockstore.loader.fileStore()) as unknown as ExtendedStore; // walStore = (await db.blockstore.loader.WALStore()) as unknown as ExtendedStore; diff --git a/tests/fireproof/fireproof.test.ts b/tests/fireproof/fireproof.test.ts index 15e68f139..b9ea06a81 100644 --- a/tests/fireproof/fireproof.test.ts +++ b/tests/fireproof/fireproof.test.ts @@ -689,12 +689,12 @@ describe("same workload twice, same CID", function () { expect(headA.length).toBeGreaterThan(10); }); it("should have same car log", async function () { - const logA = dbA.crdt.blockstore.loader?.carLog; + const logA = dbA.crdt.blockstore.loader.carLog; expect(logA).toBeTruthy(); assert(logA); expect(logA.length).toBe(docs.length); - const logB = dbB.crdt.blockstore.loader?.carLog; + const logB = dbB.crdt.blockstore.loader.carLog; expect(logB).toBeTruthy(); assert(logB); expect(logB.length).toBe(docs.length); @@ -711,12 +711,12 @@ describe("same workload twice, same CID", function () { await dbA.compact(); await dbB.compact(); - const cmpLogA = dbA.crdt.blockstore.loader?.carLog; + const cmpLogA = dbA.crdt.blockstore.loader.carLog; expect(cmpLogA).toBeTruthy(); assert(cmpLogA); expect(cmpLogA.length).toBe(1); - const cmpLogB = dbB.crdt.blockstore.loader?.carLog; + const cmpLogB = dbB.crdt.blockstore.loader.carLog; expect(cmpLogB).toBeTruthy(); assert(cmpLogB); expect(cmpLogB.length).toBe(1); diff --git a/tests/fireproof/ledger.test.ts b/tests/fireproof/ledger.test.ts index f8b60fd5d..a63ec7ea6 100644 --- a/tests/fireproof/ledger.test.ts +++ b/tests/fireproof/ledger.test.ts @@ -171,8 +171,8 @@ describe("named Ledger with record", function () { const { rows } = await db.changes([]); expect(rows.length).toBe(numDocs + 1); - const ok6 = await db.put({ _id: `id-${6}`, hello: "block" }); - expect(ok6.id).toBe(`id-${6}`); + const ok6 = await db.put({ _id: `id-6`, hello: "block" }); + expect(ok6.id).toBe(`id-6`); for (let i = 0; i < numDocs; i++) { const id = `id-${i}`; @@ -185,12 +185,12 @@ describe("named Ledger with record", function () { const { rows: rows2 } = await db.changes([]); expect(rows2.length).toBe(numDocs + 1); - const ok7 = await db.del(`id-${7}`); - expect(ok7.id).toBe(`id-${7}`); + const ok7 = await db.del(`id-7`); + expect(ok7.id).toBe(`id-7`); const { rows: rows3 } = await db.changes([]); expect(rows3.length).toBe(numDocs + 1); - expect(rows3[numDocs].key).toBe(`id-${7}`); + expect(rows3[numDocs].key).toBe(`id-7`); expect(rows3[numDocs].value._deleted).toBe(true); // test limit @@ -460,7 +460,7 @@ describe("ledger with files input", () => { it("Should fetch the images", async function () { const doc = await db.get(result.id); - const files = doc._files as DocFiles; + const files = doc._files!; expect(files).toBeTruthy(); const keys = Object.keys(files); let fileMeta = files[keys[0]] as DocFileMeta; @@ -471,7 +471,7 @@ describe("ledger with files input", () => { expect(fileMeta.size).toBe(imagefiles[0].file.size); expect(fileMeta.cid.toString()).toBe(imagefiles[0].cid); expect(typeof fileMeta.file).toBe("function"); - let file = (await fileMeta.file?.()) as File; + let file = (await fileMeta.file?.())!; expect(file.type).toBe(imagefiles[0].file.type); expect(file.size).toBe(imagefiles[0].file.size); @@ -482,7 +482,7 @@ describe("ledger with files input", () => { expect(fileMeta.size).toBe(imagefiles[1].file.size); expect(fileMeta.cid.toString()).toBe(imagefiles[1].cid); expect(typeof fileMeta.file).toBe("function"); - file = (await fileMeta.file?.()) as File; + file = (await fileMeta.file?.())!; expect(file.type).toBe(imagefiles[1].file.type); expect(file.size).toBe(imagefiles[1].file.size); @@ -501,7 +501,7 @@ describe("ledger with files input", () => { expect(fileMeta.size).toBe(imagefiles[0].file.size); expect(fileMeta.cid.toString()).toBe(imagefiles[0].cid); expect(typeof fileMeta.file).toBe("function"); - let file = (await fileMeta.file?.()) as File; + let file = (await fileMeta.file?.())!; expect(file.type).toBe(imagefiles[0].file.type); expect(file.size).toBe(imagefiles[0].file.size); @@ -518,7 +518,7 @@ describe("ledger with files input", () => { expect(fileMeta.size).toBe(imagefiles[0].file.size); expect(fileMeta.cid.toString()).toBe(imagefiles[0].cid); expect(typeof fileMeta.file).toBe("function"); - file = (await fileMeta.file?.()) as File; + file = (await fileMeta.file?.())!; expect(file.type).toBe(imagefiles[0].file.type); expect(file.size).toBe(imagefiles[0].file.size); diff --git a/tests/fireproof/utils.test.ts b/tests/fireproof/utils.test.ts index 01f7cc112..f0f4a1740 100644 --- a/tests/fireproof/utils.test.ts +++ b/tests/fireproof/utils.test.ts @@ -113,7 +113,7 @@ describe("utils", () => { describe("runtime", () => { it("runtime", () => { - const isNode = !!(typeof process === "object" && process.versions?.node); + const isNode = !!(typeof process === "object" && process.versions.node); expect(runtimeFn()).toEqual({ isBrowser: !isNode, isCFWorker: false, diff --git a/tests/gateway/file/loader-config.test.ts b/tests/gateway/file/loader-config.test.ts index f896bd323..c59c96306 100644 --- a/tests/gateway/file/loader-config.test.ts +++ b/tests/gateway/file/loader-config.test.ts @@ -37,8 +37,8 @@ describe("config file gateway", () => { await db.put({ name: "my-app" }); expect(db.name).toBe(my_app()); - const fileStore = await db.crdt.blockstore.loader?.fileStore(); - expect(fileStore?.url().asObj()).toEqual({ + const fileStore = await db.crdt.blockstore.loader.fileStore(); + expect(fileStore.url().asObj()).toEqual({ pathname: "./dist/fp-dir-file", protocol: "file:", searchParams: { @@ -52,8 +52,8 @@ describe("config file gateway", () => { style: "path", }); - const dataStore = await db.crdt.blockstore.loader?.carStore(); - expect(dataStore?.url().asObj()).toEqual({ + const dataStore = await db.crdt.blockstore.loader.carStore(); + expect(dataStore.url().asObj()).toEqual({ pathname: "./dist/fp-dir-file", protocol: "file:", searchParams: { @@ -67,8 +67,8 @@ describe("config file gateway", () => { }, style: "path", }); - const metaStore = await db.crdt.blockstore.loader?.metaStore(); - expect(metaStore?.url().asObj()).toEqual({ + const metaStore = await db.crdt.blockstore.loader.metaStore(); + expect(metaStore.url().asObj()).toEqual({ pathname: "./dist/fp-dir-file", protocol: "file:", searchParams: { @@ -81,8 +81,8 @@ describe("config file gateway", () => { }, style: "path", }); - const WALStore = await db.crdt.blockstore.loader?.WALStore(); - expect(WALStore?.url().asObj()).toEqual({ + const WALStore = await db.crdt.blockstore.loader.WALStore(); + expect(WALStore.url().asObj()).toEqual({ pathname: "./dist/fp-dir-file", protocol: "file:", searchParams: { @@ -114,8 +114,8 @@ describe("config file gateway", () => { // console.log(`>>>>>>>>>>>>>>>file-path`) await db.put({ name: "my-app" }); expect(db.name).toBe(my_app()); - const carStore = await db.crdt.blockstore.loader?.carStore(); - expect(carStore?.url().asObj()).toEqual({ + const carStore = await db.crdt.blockstore.loader.carStore(); + expect(carStore.url().asObj()).toEqual({ pathname: "./dist/data", protocol: "file:", searchParams: { @@ -128,8 +128,8 @@ describe("config file gateway", () => { }, style: "path", }); - const fileStore = await db.crdt.blockstore.loader?.fileStore(); - expect(fileStore?.url().asObj()).toEqual({ + const fileStore = await db.crdt.blockstore.loader.fileStore(); + expect(fileStore.url().asObj()).toEqual({ pathname: "./dist/data", protocol: "file:", searchParams: { @@ -142,8 +142,8 @@ describe("config file gateway", () => { style: "path", }); expect((await sysfs.stat(sthis.pathOps.join(baseDir, "data"))).isDirectory()).toBeTruthy(); - const metaStore = await db.crdt.blockstore.loader?.metaStore(); - expect(metaStore?.url().asObj()).toEqual({ + const metaStore = await db.crdt.blockstore.loader.metaStore(); + expect(metaStore.url().asObj()).toEqual({ pathname: "./dist/data", protocol: "file:", searchParams: { @@ -180,9 +180,9 @@ describe("config file gateway", () => { const db = fireproof(my_app()); await db.put({ name: "my-app" }); expect(db.name).toBe(my_app()); - const carStore = await db.crdt.blockstore.loader?.carStore(); + const carStore = await db.crdt.blockstore.loader.carStore(); - expect(carStore?.url().asObj()).toEqual({ + expect(carStore.url().asObj()).toEqual({ pathname: `${sthis.env.get("HOME")}/.fireproof/v0.19`, protocol: "file:", style: "path", @@ -199,8 +199,8 @@ describe("config file gateway", () => { expect((await sysfs.stat(sthis.pathOps.join(baseDir, "data"))).isDirectory()).toBeTruthy(); - const fileStore = await db.crdt.blockstore.loader?.fileStore(); - expect(fileStore?.url().asObj()).toEqual({ + const fileStore = await db.crdt.blockstore.loader.fileStore(); + expect(fileStore.url().asObj()).toEqual({ pathname: `${sthis.env.get("HOME")}/.fireproof/v0.19`, protocol: "file:", style: "path", @@ -213,8 +213,8 @@ describe("config file gateway", () => { version: rt.FILESTORE_VERSION, }, }); - const metaStore = await db.crdt.blockstore.loader?.metaStore(); - expect(metaStore?.url().asObj()).toEqual({ + const metaStore = await db.crdt.blockstore.loader.metaStore(); + expect(metaStore.url().asObj()).toEqual({ pathname: `${sthis.env.get("HOME")}/.fireproof/v0.19`, protocol: "file:", style: "path", @@ -250,8 +250,8 @@ describe("config file gateway", () => { const db = fireproof(my_app()); await db.put({ name: "my-app" }); expect(db.name).toBe(my_app()); - const carStore = await db.crdt.blockstore.loader?.carStore(); - expect(carStore?.url().asObj()).toEqual({ + const carStore = await db.crdt.blockstore.loader.carStore(); + expect(carStore.url().asObj()).toEqual({ pathname: "./dist/fp-dir-file", protocol: "file:", style: "path", @@ -267,8 +267,8 @@ describe("config file gateway", () => { }); expect((await sysfs.stat(sthis.pathOps.join(baseDir, "data"))).isDirectory()).toBeTruthy(); - const fileStore = await db.crdt.blockstore.loader?.fileStore(); - expect(fileStore?.url().asObj()).toEqual({ + const fileStore = await db.crdt.blockstore.loader.fileStore(); + expect(fileStore.url().asObj()).toEqual({ pathname: `./dist/fp-dir-file`, protocol: "file:", style: "path", @@ -282,8 +282,8 @@ describe("config file gateway", () => { }, }); - const metaStore = await db.crdt.blockstore.loader?.metaStore(); - expect(metaStore?.url().asObj()).toEqual({ + const metaStore = await db.crdt.blockstore.loader.metaStore(); + expect(metaStore.url().asObj()).toEqual({ pathname: `./dist/fp-dir-file`, protocol: "file:", style: "path", diff --git a/tests/gateway/indexdb/loader-config.test.ts b/tests/gateway/indexdb/loader-config.test.ts index 93851945d..4cac57cea 100644 --- a/tests/gateway/indexdb/loader-config.test.ts +++ b/tests/gateway/indexdb/loader-config.test.ts @@ -16,8 +16,8 @@ describe("fireproof config indexdb", () => { await db.put({ name: "my-app" }); expect(db.name).toBe(my_app()); - const fileStore = await db.crdt.blockstore.loader?.fileStore(); - expect(fileStore?.url().asObj()).toEqual({ + const fileStore = await db.crdt.blockstore.loader.fileStore(); + expect(fileStore.url().asObj()).toEqual({ pathname: "fp", protocol: "indexdb:", searchParams: { @@ -30,8 +30,8 @@ describe("fireproof config indexdb", () => { style: "path", }); - const dataStore = await db.crdt.blockstore.loader?.carStore(); - expect(dataStore?.url().asObj()).toEqual({ + const dataStore = await db.crdt.blockstore.loader.carStore(); + expect(dataStore.url().asObj()).toEqual({ pathname: "fp", protocol: "indexdb:", searchParams: { @@ -44,8 +44,8 @@ describe("fireproof config indexdb", () => { }, style: "path", }); - const metaStore = await db.crdt.blockstore.loader?.metaStore(); - expect(metaStore?.url().asObj()).toEqual({ + const metaStore = await db.crdt.blockstore.loader.metaStore(); + expect(metaStore.url().asObj()).toEqual({ pathname: "fp", protocol: "indexdb:", searchParams: { @@ -57,8 +57,8 @@ describe("fireproof config indexdb", () => { }, style: "path", }); - const WALStore = await db.crdt.blockstore.loader?.WALStore(); - expect(WALStore?.url().asObj()).toEqual({ + const WALStore = await db.crdt.blockstore.loader.WALStore(); + expect(WALStore.url().asObj()).toEqual({ pathname: "fp", protocol: "indexdb:", searchParams: { diff --git a/tests/react/useFireproof.test.tsx b/tests/react/useFireproof.test.tsx index 3e3ff96cd..56bd88720 100644 --- a/tests/react/useFireproof.test.tsx +++ b/tests/react/useFireproof.test.tsx @@ -13,7 +13,7 @@ describe("HOOK: useFireproof", () => { const { ledger, useLiveQuery, useDocument } = useFireproof("dbname"); expect(typeof useLiveQuery).toBe("function"); expect(typeof useDocument).toBe("function"); - expect(ledger?.constructor.name).toMatch(/^Ledger/); + expect(ledger.constructor.name).toMatch(/^Ledger/); }); }); }); diff --git a/tsconfig.json b/tsconfig.json index 613b7f6c5..f69fece77 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -113,11 +113,7 @@ // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ "skipLibCheck": true /* Skip type checking all .d.ts files. */ }, - "include": ["src/**/*", "tests/**/*"], - "typeRoots": ["ts-types", "node_modules/@types"], - "ts-node": { - "compilerOptions": { - "module": "CommonJS" - } - } + "include": ["src/**/*", "tests/**/*", "*.ts", "*.mjs"], + "exclude": ["**/node_modules/**"], + "typeRoots": ["ts-types", "node_modules/@types"] } diff --git a/tsup.config.ts b/tsup.config.ts index 30b684dcc..8da3c211c 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -1,9 +1,9 @@ import { defineConfig, Options } from "tsup"; -import resolve from "esbuild-plugin-resolve"; +// import resolve from "esbuild-plugin-resolve"; import { replace } from "esbuild-plugin-replace"; -const nodeInternals = []; -const webInternals = []; +const nodeInternals = [] as string[]; +const webInternals = [] as string[]; const external = [ "path", @@ -64,9 +64,9 @@ function skipper(suffix: string[], target: string) { // // "./node-sys-container.js": "../bundle-not-impl.js", // // "./key-bag-file.js": "../bundle-not-impl.js", // }; -const skipEsm = {}; +// const skipEsm = {}; -const ourMultiformat = {}; +// const ourMultiformat = {}; const LIBRARY_BUNDLE_OPTIONS: Options = { format: ["esm"], // , "cjs", "iife"], @@ -82,7 +82,7 @@ const LIBRARY_BUNDLE_OPTIONS: Options = { function packageVersion() { // return JSON.stringify(JSON.parse(fs.readFileSync(file, "utf-8")).version); let version = "refs/tags/v0.0.0-smoke"; - if (process.env.GITHUB_REF && process.env.GITHUB_REF.startsWith("refs/tags/v")) { + if (process.env.GITHUB_REF?.startsWith("refs/tags/v")) { version = process.env.GITHUB_REF; } version = version.split("/").slice(-1)[0].replace(/^v/, ""); @@ -99,7 +99,7 @@ const LIBRARY_BUNDLES: readonly Options[] = [ entry: ["src/index.ts"], platform: "browser", outDir: "dist/fireproof-core", - external: [...(LIBRARY_BUNDLE_OPTIONS.external || []), ...nodeInternals, ...webInternals], + external: [...(LIBRARY_BUNDLE_OPTIONS.external ?? []), ...nodeInternals, ...webInternals], esbuildPlugins: [ replace({ __packageVersion__: packageVersion(), @@ -107,9 +107,9 @@ const LIBRARY_BUNDLES: readonly Options[] = [ }), // skipper([...nodeInternals, ...webInternals], `${__dirname}/src/bundle-not-impl.js`), // skipper(["./get-file-system-static.js"], "./get-file-system-dynamic.js"), - resolve({ - ...ourMultiformat, - }), + // resolve({ + // ...ourMultiformat, + // }), ], dts: { footer: "declare module '@fireproof/core'", @@ -160,7 +160,7 @@ const LIBRARY_BUNDLES: readonly Options[] = [ */ { ...LIBRARY_BUNDLE_OPTIONS, - external: [...(LIBRARY_BUNDLE_OPTIONS.external || []), "@fireproof/core"], + external: [...(LIBRARY_BUNDLE_OPTIONS.external ?? []), "@fireproof/core"], format: ["esm"], // "cjs"], name: "@fireproof/core/react", entry: ["src/react/index.ts"], @@ -172,9 +172,9 @@ const LIBRARY_BUNDLES: readonly Options[] = [ include: /version/, }), // skipper('@skip-iife', `${__dirname}/src/bundle-not-impl.js`), - resolve({ - ...ourMultiformat, - }), + // resolve({ + // ...ourMultiformat, + // }), ], dts: { footer: "declare module '@fireproof/core/web'", @@ -182,7 +182,7 @@ const LIBRARY_BUNDLES: readonly Options[] = [ }, { ...LIBRARY_BUNDLE_OPTIONS, - external: [...(LIBRARY_BUNDLE_OPTIONS.external || []), "@fireproof/core", "@fireproof/core/react"], + external: [...(LIBRARY_BUNDLE_OPTIONS.external ?? []), "@fireproof/core", "@fireproof/core/react"], treeshake: true, format: ["esm"], // "cjs"], // minify: true, @@ -198,10 +198,10 @@ const LIBRARY_BUNDLES: readonly Options[] = [ }), // skipper([...nodeInternals], `${__dirname}/src/bundle-not-impl.js`), // skipper('@skip-iife', `${__dirname}/src/bundle-not-impl.js`), - resolve({ - ...skipEsm, - ...ourMultiformat, - }), + // resolve({ + // ...skipEsm, + // ...ourMultiformat, + // }), ], dts: { footer: "declare module 'use-fireproof'", diff --git a/version-copy-package.ts b/version-copy-package.ts index d787be434..29c4c8259 100644 --- a/version-copy-package.ts +++ b/version-copy-package.ts @@ -12,25 +12,25 @@ async function copyFilesToDist(destDir: string) { function getVersion() { let version = "refs/tags/v0.0.0-smoke"; - if (process.env.GITHUB_REF && process.env.GITHUB_REF.startsWith("refs/tags/v")) { + if (process.env.GITHUB_REF?.startsWith("refs/tags/v")) { version = process.env.GITHUB_REF; } return version.split("/").slice(-1)[0].replace(/^v/, ""); } -async function patchVersion(packageJson: Record) { +function patchVersion(packageJson: PackageJson) { const version = getVersion(); console.log(`Patch version ${version} in package.json`); packageJson.version = version; } -async function createDenoJson(destDir: string, packageJson: Record) { +async function createDenoJson(destDir: string, packageJson: PackageJson) { const denoJson = { imports: { "@fireproof/core": "./index.js", - }, + } as Record, }; - const pdeps = packageJson.dependencies as Record; + const pdeps = packageJson.dependencies; for (const dep of Object.keys(pdeps)) { denoJson.imports[dep] = `npm:${dep}@${pdeps[dep]}`; } @@ -38,7 +38,7 @@ async function createDenoJson(destDir: string, packageJson: Record, destDeps: Record) { +function transferVersionsFromPackageJson(srcDeps: Record, destDeps: Record) { for (const dep of Object.keys(destDeps)) { if (!srcDeps[dep]) { console.error(`Dependency ${dep} not found in main package.json`); @@ -48,6 +48,12 @@ async function transferVersionsFromPackageJson(srcDeps: Record, } } +interface PackageJson { + version: string; + dependencies: Record; + peerDependencies?: Record; +} + async function main() { $.verbose = true; const buildDest = process.argv[process.argv.length - 1]; @@ -56,21 +62,22 @@ async function main() { process.exit(1); } const destDir = path.dirname(buildDest); - if (!(await fs.stat(destDir)).isDirectory) { + const stat = await fs.stat(destDir); + if (!stat.isDirectory()) { console.error(`Directory ${destDir} does not exist`); process.exit(1); } await copyFilesToDist(destDir); - const mainPackageJson = JSON.parse(await fs.readFile("package.json", "utf8")); + const mainPackageJson = JSON.parse(await fs.readFile("package.json", "utf8")) as PackageJson; const templateFile = path.basename(buildDest); - const destPackageJson = JSON.parse(await fs.readFile(templateFile, "utf-8")); + const destPackageJson = JSON.parse(await fs.readFile(templateFile, "utf-8")) as PackageJson; // copy version from package.json const withCoreVersion = { "@fireproof/core": `^${getVersion()}`, ...mainPackageJson.dependencies, - }; + } as Record; transferVersionsFromPackageJson(withCoreVersion, destPackageJson.dependencies); - transferVersionsFromPackageJson(withCoreVersion, destPackageJson.peerDependencies || {}); + transferVersionsFromPackageJson(withCoreVersion, destPackageJson.peerDependencies ?? {}); patchVersion(destPackageJson); diff --git a/vitest.file.config.ts b/vitest.file.config.ts index 6cf8b8c8d..124604ce2 100644 --- a/vitest.file.config.ts +++ b/vitest.file.config.ts @@ -1,9 +1,9 @@ -import { defineConfig } from "vitest/config"; +import { defineConfig, Plugin } from "vitest/config"; import tsconfigPaths from "vite-tsconfig-paths"; export default defineConfig({ - plugins: [tsconfigPaths()], + plugins: [tsconfigPaths() as Plugin], test: { name: "file", exclude: ["tests/react/**", "examples/**", "tests/gateway/indexdb"], diff --git a/vitest.indexdb.config.ts b/vitest.indexdb.config.ts index b7f26a629..dfeb082c3 100644 --- a/vitest.indexdb.config.ts +++ b/vitest.indexdb.config.ts @@ -1,9 +1,10 @@ -import { defineConfig } from "vite"; +// import { defineConfig } from "vite"; +import { defineConfig, Plugin } from "vitest/config"; import tsconfigPaths from "vite-tsconfig-paths"; export default defineConfig({ - plugins: [tsconfigPaths()], + plugins: [tsconfigPaths() as Plugin], test: { name: "indexdb", exclude: ["examples/**", "tests/gateway/file"], diff --git a/vitest.memory.config.ts b/vitest.memory.config.ts index 85737e4a5..01cb6f726 100644 --- a/vitest.memory.config.ts +++ b/vitest.memory.config.ts @@ -1,9 +1,9 @@ -import { defineConfig } from "vitest/config"; +import { defineConfig, Plugin } from "vitest/config"; import tsconfigPaths from "vite-tsconfig-paths"; export default defineConfig({ - plugins: [tsconfigPaths()], + plugins: [tsconfigPaths() as Plugin], test: { name: "memory", exclude: [ diff --git a/vitest.workspace.ts b/vitest.workspace.ts index 6466bda44..47afb2ba2 100644 --- a/vitest.workspace.ts +++ b/vitest.workspace.ts @@ -1,7 +1,7 @@ import { defineWorkspace } from "vitest/config"; -import file from "./vitest.file.config.ts"; -import memory from "./vitest.memory.config.ts"; -import indexdb from "./vitest.indexdb.config.ts"; +import file from "./vitest.file.config.js"; +import memory from "./vitest.memory.config.js"; +import indexdb from "./vitest.indexdb.config.js"; export default defineWorkspace([memory, file, indexdb]); From ed5d19d0f697297a9a81e0ce7e438947feccbd04 Mon Sep 17 00:00:00 2001 From: Meno Abels Date: Tue, 7 Jan 2025 14:59:35 +0100 Subject: [PATCH 2/2] chore: added esm-cache to ignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 96f6c5e79..d59c25bf9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ # Files +**/.esm-cache/** .vscode .idea .DS_Store