Update NPM packaging, linting, and a bunch of types (#275)

Preparation for
https://github.com/webrecorder/archiveweb.page/issues/198 /
https://github.com/webrecorder/archiveweb.page/pull/199.

## Changes

- Organizes published files more cleanly, using `dist/types` folder as
the target for type declarations and sourcemaps
- Configures type field in `package.json`
- Updates ESLint & its config
  - Sets up type-informed linting rules mirroring browsertrix
- Adds a bunch of other useful eslint and eslint-typescript rules, and
applies auto-fixes to the codebase
- Cleans up a bunch of types throughout the codebase, particularly parts
of the code used by ArchiveWebPage
- Changes `ItemIndex#_deleting` from `private` to `protected` so that a
part of AWP that extends it can do so properly
- Makes a bunch of previously-implied [non-null
assertions](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#non-null-assertion-operator-postfix-)
explicit
- Updates `URLResource` and `ItemType` types (and renames `Item` →
`ItemType` to disambiguate from the `Item` class)
- Removes `node-sass` and replaces it with `sass-embedded` for much
quicker installs and compilation
This commit is contained in:
Emma Segal-Grossman
2024-02-06 18:50:12 -08:00
committed by GitHub
parent a40471128f
commit a63390f10c
32 changed files with 898 additions and 1550 deletions
+46
View File
@@ -0,0 +1,46 @@
import { ReplayWebApp } from "./appmain";
import { Chooser } from "./chooser";
import { ItemIndex } from "./item-index";
import { ItemInfo } from "./item-info";
import { Item } from "./item";
import { Story } from "./story";
import { GDrive } from "./gdrive";
import { Loader } from "./loader";
import { Pages } from "./pages";
import { PageEntry } from "./pageentry";
import { Replay } from "./replay";
import { Sorter } from "./sorter";
import { URLResources } from "./url-resources";
import { Embed } from "./embed";
import "./shoelace";
export {
ReplayWebApp,
Chooser,
ItemIndex,
ItemInfo,
Item,
/**
* @deprecated use {@linkcode ItemIndex}
*/
ItemIndex as CollIndex,
/**
* @deprecated use {@linkcode ItemInfo}
*/
ItemInfo as CollInfo,
/**
* @deprecated use {@linkcode Item}
*/
Item as Coll,
Story,
GDrive,
Loader,
Pages,
PageEntry,
Replay,
Sorter,
URLResources,
Embed,
};
export type { ItemType, URLResource } from "./types";