File tree Expand file tree Collapse file tree 3 files changed +44
-0
lines changed
Expand file tree Collapse file tree 3 files changed +44
-0
lines changed Original file line number Diff line number Diff line change 1+ import type { PackageApi } from "@jsdocs-io/extractor" ;
2+
3+ export interface PackageApiDb {
4+ dbName : string ;
5+ getPackageApi : ( pkgId : string ) => Promise < PackageApi > ;
6+ setPackageApi : ( pkgId : string , pkgApi : PackageApi ) => Promise < void > ;
7+ }
Original file line number Diff line number Diff line change 1+ import { fromAny } from "@total-typescript/shoehorn" ;
2+ import { goTry } from "go-go-try" ;
3+ import { expect , test } from "vitest" ;
4+ import { PackageApiMemDb } from "./package-api-mem-db" ;
5+
6+ test ( "PackageApiMemDb" , async ( ) => {
7+ const db = new PackageApiMemDb ( ) ;
8+ expect ( db . dbName ) . toBe ( "PackageApiMemDb" ) ;
9+ const [ err1 ] = await goTry ( db . getPackageApi ( "foo" ) ) ;
10+ const [ err2 ] = await goTry ( db . setPackageApi ( "foo" , fromAny ( { name : "foo" } ) ) ) ;
11+ const [ err3 , pkgApi ] = await goTry ( db . getPackageApi ( "foo" ) ) ;
12+ expect ( err1 ) . toBeDefined ( ) ;
13+ expect ( err2 ) . toBeUndefined ( ) ;
14+ expect ( err3 ) . toBeUndefined ( ) ;
15+ expect ( pkgApi ) . toMatchInlineSnapshot ( `
16+ {
17+ "name": "foo",
18+ }
19+ ` ) ;
20+ } ) ;
Original file line number Diff line number Diff line change 1+ import type { PackageApi } from "@jsdocs-io/extractor" ;
2+ import type { PackageApiDb } from "./package-api-db" ;
3+
4+ export class PackageApiMemDb implements PackageApiDb {
5+ dbName = "PackageApiMemDb" ;
6+ #db = new Map < string , PackageApi > ( ) ;
7+
8+ async getPackageApi ( pkgId : string ) : Promise < PackageApi > {
9+ const pkgApi = this . #db. get ( pkgId ) ;
10+ if ( ! pkgApi ) throw new Error ( "package api not found in mem db" ) ;
11+ return pkgApi ;
12+ }
13+
14+ async setPackageApi ( pkgId : string , pkgApi : PackageApi ) {
15+ this . #db. set ( pkgId , pkgApi ) ;
16+ }
17+ }
You can’t perform that action at this time.
0 commit comments