add duckdb-ui-client & other ts pkgs (#10)

* add duckdb-ui-client & other ts pkgs

* workflow fixes

* fix working dir

* no sparse checkout; specify package.json path

* path to pnpm-lock.yaml

* add check & build test

* workflow step descriptions

* use comments & names

* one more naming tweak
This commit is contained in:
Jeff Raymakers
2025-06-13 09:06:55 -07:00
parent d6cc9eeea4
commit 0edb52054a
133 changed files with 11112 additions and 4 deletions

View File

@@ -1 +1,55 @@
# TypeScript Workspace
## Structure
This directory is a [pnpm workspace](https://pnpm.io/workspaces). Use the [pnpm](https://pnpm.io/) package manager, not npm or yarn.
One (recommended) way to install pnpm is using [corepack](https://pnpm.io/installation#using-corepack).
## Build
Run `pnpm install` (or just `pnpm i`) in a package directory to install dependencies and build. Note that this will also build dependent packages in this workspace. This builds src files, but not test files.
Run `pnpm build` to just run the build. This will not build dependencies. It will build both src and test files. To build just src or just test, use `pnpm build:src` or `pnpm build:test`.
Run `pnpm build:watch` in a package to rebuild (both src and test files) when source files are changed.
Run `pnpm check` in a package to check formatting and linting rules. To just check formatting, run `pnpm format:check`. To correct formatting, run `pnpm format:write`. To just check linting rules, run `pnpm lint`.
Run `pnpm clean` in that package to remove built output files for that package.
Run `pnpm build` at the root of the workspace to build all packages (both src and test files).
Run `pnpm build:watch` at the root can be used to rebuild (only) relevant packages when source files are changed.
Run `pnpm check` at the root of the workspace to check formatting and linting rules all packages.
## Test
Run `pnpm test` in a package directory to run its tests.
Run `pnpm test:watch` in a package directory to run its tests and rerun when source files change.
Tests use [vitest](https://vitest.dev/), either in Node or in [Browser Mode](https://vitest.dev/guide/browser.html) (using Chrome), depending on the package.
Run `pnpm test` at the root of the workspace to test all packages.
## Create
To create a new package, add a directory under `packages`.
Add a `package.json` file following the conventions of other packages.
The `package.json` should have `preinstall`, `build`, `clean`, and `test` scripts, as well as 'check', 'format', and 'lint' scripts. See existing packages for details.
It should have a `name`, `version`, and `description`, set `"type": "module"`, and set `main`, `module`, and `types` appropriately.
Production source code should go in a `src` subdirectory.
Put a `tsconfig.json` in this directory that extends `tsconfig.library.json` and sets the `outDir` to `../out`.
Test source code should got in a `test` subdirectory.
Put a `tsconfig.json` in this directory that extends `tsconfig.test.json` and references `../src`.
For browser-based tests, create a `vite.config.js` file, and enable `browser` mode, set the `headless` option to `true`, and set the `type` to `chrome`.
Note that `crossOriginIsolated` can be enabled by setting server headers. See example in `wasm-extension`.
Add references to both the `src` and `test` directories of your new package to the root `tsconfig.json` of the workspace.