diff --git a/.github/workflows/publish-npm.yml b/.github/workflows/publish-npm.yml new file mode 100644 index 0000000..e8e4e82 --- /dev/null +++ b/.github/workflows/publish-npm.yml @@ -0,0 +1,35 @@ +# This workflow is triggered when a GitHub release is created. +# It can also be run manually to re-publish to NPM in case it failed for some reason. +# You can run this workflow by navigating to https://www.github.com/onkernel/hypeman-ts/actions/workflows/publish-npm.yml +name: Publish NPM +on: + workflow_dispatch: + + release: + types: [published] + +jobs: + publish: + name: publish + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Set up Node + uses: actions/setup-node@v3 + with: + node-version: '20' + + - name: Set up pnpm + uses: pnpm/action-setup@v4 + + - name: Install dependencies + run: | + pnpm install + + - name: Publish to NPM + run: | + bash ./bin/publish-npm + env: + NPM_TOKEN: ${{ secrets.HYPEMAN_NPM_TOKEN || secrets.NPM_TOKEN }} diff --git a/.github/workflows/release-doctor.yml b/.github/workflows/release-doctor.yml new file mode 100644 index 0000000..71cd2e2 --- /dev/null +++ b/.github/workflows/release-doctor.yml @@ -0,0 +1,22 @@ +name: Release Doctor +on: + pull_request: + branches: + - main + workflow_dispatch: + +jobs: + release_doctor: + name: release doctor + runs-on: ubuntu-latest + if: github.repository == 'onkernel/hypeman-ts' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch' || startsWith(github.head_ref, 'release-please') || github.head_ref == 'next') + + steps: + - uses: actions/checkout@v4 + + - name: Check release environment + run: | + bash ./bin/check-release-environment + env: + NPM_TOKEN: ${{ secrets.HYPEMAN_NPM_TOKEN || secrets.NPM_TOKEN }} + diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 0000000..40ff6fe --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "0.0.2" +} diff --git a/.stats.yml b/.stats.yml index 1d10fd2..8c80d5f 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 29 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/kernel%2Fhypeman-95df8b193133def744aa61dc372f286663ffc20d833488d242fa288af65adc39.yml openapi_spec_hash: 833120a235ecb298688c2fb1122b3574 -config_hash: 934c902d7a6d54ba8deccc794b3e9284 +config_hash: 48d3be2bdbf56b770c9695a338382558 diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..9322ccd --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,11 @@ +# Changelog + +## 0.0.2 (2025-12-22) + +Full Changelog: [v0.0.1...v0.0.2](https://github.com/onkernel/hypeman-ts/compare/v0.0.1...v0.0.2) + +### Chores + +* configure new SDK language ([9eba465](https://github.com/onkernel/hypeman-ts/commit/9eba465b84418dc70994a43eb6b28e498841d8a6)) +* update SDK settings ([8a8e921](https://github.com/onkernel/hypeman-ts/commit/8a8e92120eea2a6cd22182555ec2caa2d159fca0)) +* update SDK settings ([523dcfd](https://github.com/onkernel/hypeman-ts/commit/523dcfdff90593e47211b52a05f8d3bed1433780)) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 20c1a66..740b422 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -42,25 +42,25 @@ If you’d like to use the repository from source, you can either install from g To install via git: ```sh -$ npm install git+ssh://git@github.com:stainless-sdks/hypeman-typescript.git +$ npm install git+ssh://git@github.com:onkernel/hypeman-ts.git ``` Alternatively, to link a local copy of the repo: ```sh # Clone -$ git clone https://www.github.com/stainless-sdks/hypeman-typescript -$ cd hypeman-typescript +$ git clone https://www.github.com/onkernel/hypeman-ts +$ cd hypeman-ts # With yarn $ yarn link $ cd ../my-package -$ yarn link hypeman +$ yarn link @onkernel/hypeman # With pnpm $ pnpm link --global $ cd ../my-package -$ pnpm link -—global hypeman +$ pnpm link -—global @onkernel/hypeman ``` ## Running tests @@ -91,3 +91,17 @@ To format and fix all lint issues automatically: ```sh $ pnpm fix ``` + +## Publishing and releases + +Changes made to this repository via the automated release PR pipeline should publish to npm automatically. If +the changes aren't made through the automated pipeline, you may want to make releases manually. + +### Publish with a GitHub workflow + +You can release to package managers by using [the `Publish NPM` GitHub action](https://www.github.com/onkernel/hypeman-ts/actions/workflows/publish-npm.yml). This requires a setup organization or repository secret to be set up. + +### Publish manually + +If you need to manually release a package, you can run the `bin/publish-npm` script with an `NPM_TOKEN` set on +the environment. diff --git a/README.md b/README.md index 169a177..9a52166 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Hypeman TypeScript API Library -[![NPM version]()](https://npmjs.org/package/hypeman) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/hypeman) +[![NPM version]()](https://npmjs.org/package/@onkernel/hypeman) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/@onkernel/hypeman) This library provides convenient access to the Hypeman REST API from server-side TypeScript or JavaScript. @@ -11,19 +11,16 @@ It is generated with [Stainless](https://www.stainless.com/). ## Installation ```sh -npm install git+ssh://git@github.com:stainless-sdks/hypeman-typescript.git +npm install @onkernel/hypeman ``` -> [!NOTE] -> Once this package is [published to npm](https://www.stainless.com/docs/guides/publish), this will become: `npm install hypeman` - ## Usage The full API of this library can be found in [api.md](api.md). ```js -import Hypeman from 'hypeman'; +import Hypeman from '@onkernel/hypeman'; const client = new Hypeman({ apiKey: process.env['HYPEMAN_API_KEY'], // This is the default and can be omitted @@ -40,7 +37,7 @@ This library includes TypeScript definitions for all request params and response ```ts -import Hypeman from 'hypeman'; +import Hypeman from '@onkernel/hypeman'; const client = new Hypeman({ apiKey: process.env['HYPEMAN_API_KEY'], // This is the default and can be omitted @@ -162,7 +159,7 @@ The log level can be configured in two ways: 2. Using the `logLevel` client option (overrides the environment variable if set) ```ts -import Hypeman from 'hypeman'; +import Hypeman from '@onkernel/hypeman'; const client = new Hypeman({ logLevel: 'debug', // Show all log messages @@ -190,7 +187,7 @@ When providing a custom logger, the `logLevel` option still controls which messa below the configured level will not be sent to your logger. ```ts -import Hypeman from 'hypeman'; +import Hypeman from '@onkernel/hypeman'; import pino from 'pino'; const logger = pino(); @@ -259,7 +256,7 @@ globalThis.fetch = fetch; Or pass it to the client: ```ts -import Hypeman from 'hypeman'; +import Hypeman from '@onkernel/hypeman'; import fetch from 'my-fetch'; const client = new Hypeman({ fetch }); @@ -270,7 +267,7 @@ const client = new Hypeman({ fetch }); If you want to set custom `fetch` options without overriding the `fetch` function, you can provide a `fetchOptions` object when instantiating the client or making a request. (Request-specific options override client options.) ```ts -import Hypeman from 'hypeman'; +import Hypeman from '@onkernel/hypeman'; const client = new Hypeman({ fetchOptions: { @@ -287,7 +284,7 @@ options to requests: **Node** [[docs](https://github.com/nodejs/undici/blob/main/docs/docs/api/ProxyAgent.md#example---proxyagent-with-fetch)] ```ts -import Hypeman from 'hypeman'; +import Hypeman from '@onkernel/hypeman'; import * as undici from 'undici'; const proxyAgent = new undici.ProxyAgent('http://localhost:8888'); @@ -301,7 +298,7 @@ const client = new Hypeman({ **Bun** [[docs](https://bun.sh/guides/http/proxy)] ```ts -import Hypeman from 'hypeman'; +import Hypeman from '@onkernel/hypeman'; const client = new Hypeman({ fetchOptions: { @@ -313,7 +310,7 @@ const client = new Hypeman({ **Deno** [[docs](https://docs.deno.com/api/deno/~/Deno.createHttpClient)] ```ts -import Hypeman from 'npm:hypeman'; +import Hypeman from 'npm:@onkernel/hypeman'; const httpClient = Deno.createHttpClient({ proxy: { url: 'http://localhost:8888' } }); const client = new Hypeman({ @@ -335,7 +332,7 @@ This package generally follows [SemVer](https://semver.org/spec/v2.0.0.html) con We take backwards-compatibility seriously and work hard to ensure you can rely on a smooth upgrade experience. -We are keen for your feedback; please open an [issue](https://www.github.com/stainless-sdks/hypeman-typescript/issues) with questions, bugs, or suggestions. +We are keen for your feedback; please open an [issue](https://www.github.com/onkernel/hypeman-ts/issues) with questions, bugs, or suggestions. ## Requirements diff --git a/bin/check-release-environment b/bin/check-release-environment new file mode 100644 index 0000000..e4b6d58 --- /dev/null +++ b/bin/check-release-environment @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +errors=() + +if [ -z "${NPM_TOKEN}" ]; then + errors+=("The NPM_TOKEN secret has not been set. Please set it in either this repository's secrets or your organization secrets") +fi + +lenErrors=${#errors[@]} + +if [[ lenErrors -gt 0 ]]; then + echo -e "Found the following errors in the release environment:\n" + + for error in "${errors[@]}"; do + echo -e "- $error\n" + done + + exit 1 +fi + +echo "The environment is ready to push releases!" + diff --git a/eslint.config.mjs b/eslint.config.mjs index 6d62c2c..fc2d233 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -25,7 +25,7 @@ export default tseslint.config( { patterns: [ { - regex: '^hypeman(/.*)?', + regex: '^@onkernel/hypeman(/.*)?', message: 'Use a relative import, not a package import.', }, ], diff --git a/jest.config.ts b/jest.config.ts index 14dc8c4..ecf32ce 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -7,8 +7,8 @@ const config: JestConfigWithTsJest = { '^.+\\.(t|j)sx?$': ['@swc/jest', { sourceMaps: 'inline' }], }, moduleNameMapper: { - '^hypeman$': '/src/index.ts', - '^hypeman/(.*)$': '/src/$1', + '^@onkernel/hypeman$': '/src/index.ts', + '^@onkernel/hypeman/(.*)$': '/src/$1', }, modulePathIgnorePatterns: [ '/ecosystem-tests/', diff --git a/package.json b/package.json index 750fcee..4bf1777 100644 --- a/package.json +++ b/package.json @@ -1,12 +1,12 @@ { - "name": "hypeman", - "version": "0.0.1", + "name": "@onkernel/hypeman", + "version": "0.0.2", "description": "The official TypeScript library for the Hypeman API", "author": "Hypeman <>", "types": "dist/index.d.ts", "main": "dist/index.js", "type": "commonjs", - "repository": "github:stainless-sdks/hypeman-typescript", + "repository": "github:onkernel/hypeman-ts", "license": "Apache-2.0", "packageManager": "pnpm@10.24.0", "files": [ diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 8edd6bc..ef58d28 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,4 +2,4 @@ onlyBuiltDependencies: - '@swc/core' minimumReleaseAge: 1440 minimumReleaseAgeExclude: - - hypeman + - '@onkernel/hypeman' diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 0000000..1ebd0bd --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,64 @@ +{ + "packages": { + ".": {} + }, + "$schema": "https://raw.githubusercontent.com/stainless-api/release-please/main/schemas/config.json", + "include-v-in-tag": true, + "include-component-in-tag": false, + "versioning": "prerelease", + "prerelease": true, + "bump-minor-pre-major": true, + "bump-patch-for-minor-pre-major": false, + "pull-request-header": "Automated Release PR", + "pull-request-title-pattern": "release: ${version}", + "changelog-sections": [ + { + "type": "feat", + "section": "Features" + }, + { + "type": "fix", + "section": "Bug Fixes" + }, + { + "type": "perf", + "section": "Performance Improvements" + }, + { + "type": "revert", + "section": "Reverts" + }, + { + "type": "chore", + "section": "Chores" + }, + { + "type": "docs", + "section": "Documentation" + }, + { + "type": "style", + "section": "Styles" + }, + { + "type": "refactor", + "section": "Refactors" + }, + { + "type": "test", + "section": "Tests", + "hidden": true + }, + { + "type": "build", + "section": "Build System" + }, + { + "type": "ci", + "section": "Continuous Integration", + "hidden": true + } + ], + "release-type": "node", + "extra-files": ["src/version.ts", "README.md"] +} diff --git a/scripts/build b/scripts/build index 41c3680..eeb39b3 100755 --- a/scripts/build +++ b/scripts/build @@ -8,7 +8,7 @@ node scripts/utils/check-version.cjs # Build into dist and will publish the package from there, # so that src/resources/foo.ts becomes /resources/foo.js -# This way importing from `"hypeman/resources/foo"` works +# This way importing from `"@onkernel/hypeman/resources/foo"` works # even with `"moduleResolution": "node"` rm -rf dist; mkdir dist @@ -42,8 +42,8 @@ node scripts/utils/postprocess-files.cjs # make sure that nothing crashes when we require the output CJS or # import the output ESM -(cd dist && node -e 'require("hypeman")') -(cd dist && node -e 'import("hypeman")' --input-type=module) +(cd dist && node -e 'require("@onkernel/hypeman")') +(cd dist && node -e 'import("@onkernel/hypeman")' --input-type=module) if [ -e ./scripts/build-deno ] then diff --git a/src/version.ts b/src/version.ts index ecebcdd..b04c289 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const VERSION = '0.0.1'; +export const VERSION = '0.0.2'; // x-release-please-version diff --git a/tests/api-resources/devices.test.ts b/tests/api-resources/devices.test.ts index 63a4384..502e188 100644 --- a/tests/api-resources/devices.test.ts +++ b/tests/api-resources/devices.test.ts @@ -1,6 +1,6 @@ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -import Hypeman from 'hypeman'; +import Hypeman from '@onkernel/hypeman'; const client = new Hypeman({ apiKey: 'My API Key', diff --git a/tests/api-resources/health.test.ts b/tests/api-resources/health.test.ts index 9da5041..64472e4 100644 --- a/tests/api-resources/health.test.ts +++ b/tests/api-resources/health.test.ts @@ -1,6 +1,6 @@ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -import Hypeman from 'hypeman'; +import Hypeman from '@onkernel/hypeman'; const client = new Hypeman({ apiKey: 'My API Key', diff --git a/tests/api-resources/images.test.ts b/tests/api-resources/images.test.ts index 8eec4ab..9a9cfba 100644 --- a/tests/api-resources/images.test.ts +++ b/tests/api-resources/images.test.ts @@ -1,6 +1,6 @@ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -import Hypeman from 'hypeman'; +import Hypeman from '@onkernel/hypeman'; const client = new Hypeman({ apiKey: 'My API Key', diff --git a/tests/api-resources/ingresses.test.ts b/tests/api-resources/ingresses.test.ts index c89b09f..677139c 100644 --- a/tests/api-resources/ingresses.test.ts +++ b/tests/api-resources/ingresses.test.ts @@ -1,6 +1,6 @@ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -import Hypeman from 'hypeman'; +import Hypeman from '@onkernel/hypeman'; const client = new Hypeman({ apiKey: 'My API Key', diff --git a/tests/api-resources/instances/instances.test.ts b/tests/api-resources/instances/instances.test.ts index 8044872..1450b00 100644 --- a/tests/api-resources/instances/instances.test.ts +++ b/tests/api-resources/instances/instances.test.ts @@ -1,6 +1,6 @@ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -import Hypeman from 'hypeman'; +import Hypeman from '@onkernel/hypeman'; const client = new Hypeman({ apiKey: 'My API Key', diff --git a/tests/api-resources/instances/volumes.test.ts b/tests/api-resources/instances/volumes.test.ts index f8671e2..4a4ced0 100644 --- a/tests/api-resources/instances/volumes.test.ts +++ b/tests/api-resources/instances/volumes.test.ts @@ -1,6 +1,6 @@ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -import Hypeman from 'hypeman'; +import Hypeman from '@onkernel/hypeman'; const client = new Hypeman({ apiKey: 'My API Key', diff --git a/tests/api-resources/volumes.test.ts b/tests/api-resources/volumes.test.ts index 165f261..8f4d87d 100644 --- a/tests/api-resources/volumes.test.ts +++ b/tests/api-resources/volumes.test.ts @@ -1,6 +1,6 @@ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -import Hypeman from 'hypeman'; +import Hypeman from '@onkernel/hypeman'; const client = new Hypeman({ apiKey: 'My API Key', diff --git a/tests/base64.test.ts b/tests/base64.test.ts index a216c19..53063e6 100644 --- a/tests/base64.test.ts +++ b/tests/base64.test.ts @@ -1,4 +1,4 @@ -import { fromBase64, toBase64 } from 'hypeman/internal/utils/base64'; +import { fromBase64, toBase64 } from '@onkernel/hypeman/internal/utils/base64'; describe.each(['Buffer', 'atob'])('with %s', (mode) => { let originalBuffer: BufferConstructor; diff --git a/tests/buildHeaders.test.ts b/tests/buildHeaders.test.ts index 8867786..fadf51e 100644 --- a/tests/buildHeaders.test.ts +++ b/tests/buildHeaders.test.ts @@ -1,5 +1,5 @@ import { inspect } from 'node:util'; -import { buildHeaders, type HeadersLike, type NullableHeaders } from 'hypeman/internal/headers'; +import { buildHeaders, type HeadersLike, type NullableHeaders } from '@onkernel/hypeman/internal/headers'; function inspectNullableHeaders(headers: NullableHeaders) { return `NullableHeaders {${[ diff --git a/tests/form.test.ts b/tests/form.test.ts index 2d31cbb..ba6f382 100644 --- a/tests/form.test.ts +++ b/tests/form.test.ts @@ -1,5 +1,5 @@ -import { multipartFormRequestOptions, createForm } from 'hypeman/internal/uploads'; -import { toFile } from 'hypeman/core/uploads'; +import { multipartFormRequestOptions, createForm } from '@onkernel/hypeman/internal/uploads'; +import { toFile } from '@onkernel/hypeman/core/uploads'; describe('form data validation', () => { test('valid values do not error', async () => { diff --git a/tests/index.test.ts b/tests/index.test.ts index be426ed..eec16d1 100644 --- a/tests/index.test.ts +++ b/tests/index.test.ts @@ -1,10 +1,10 @@ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -import { APIPromise } from 'hypeman/core/api-promise'; +import { APIPromise } from '@onkernel/hypeman/core/api-promise'; import util from 'node:util'; -import Hypeman from 'hypeman'; -import { APIUserAbortError } from 'hypeman'; +import Hypeman from '@onkernel/hypeman'; +import { APIUserAbortError } from '@onkernel/hypeman'; const defaultFetch = fetch; describe('instantiate client', () => { diff --git a/tests/internal/decoders/line.test.ts b/tests/internal/decoders/line.test.ts index 94aa2a4..a4750d3 100644 --- a/tests/internal/decoders/line.test.ts +++ b/tests/internal/decoders/line.test.ts @@ -1,4 +1,4 @@ -import { findDoubleNewlineIndex, LineDecoder } from 'hypeman/internal/decoders/line'; +import { findDoubleNewlineIndex, LineDecoder } from '@onkernel/hypeman/internal/decoders/line'; function decodeChunks(chunks: string[], { flush }: { flush: boolean } = { flush: false }): string[] { const decoder = new LineDecoder(); diff --git a/tests/path.test.ts b/tests/path.test.ts index a0ca344..dc7c6a4 100644 --- a/tests/path.test.ts +++ b/tests/path.test.ts @@ -1,4 +1,4 @@ -import { createPathTagFunction, encodeURIPath } from 'hypeman/internal/utils/path'; +import { createPathTagFunction, encodeURIPath } from '@onkernel/hypeman/internal/utils/path'; import { inspect } from 'node:util'; import { runInNewContext } from 'node:vm'; diff --git a/tests/streaming.test.ts b/tests/streaming.test.ts index b34f74e..e0da3e9 100644 --- a/tests/streaming.test.ts +++ b/tests/streaming.test.ts @@ -1,6 +1,6 @@ import assert from 'assert'; -import { _iterSSEMessages } from 'hypeman/core/streaming'; -import { ReadableStreamFrom } from 'hypeman/internal/shims'; +import { _iterSSEMessages } from '@onkernel/hypeman/core/streaming'; +import { ReadableStreamFrom } from '@onkernel/hypeman/internal/shims'; describe('streaming decoding', () => { test('basic', async () => { diff --git a/tests/stringifyQuery.test.ts b/tests/stringifyQuery.test.ts index 7c2e91a..b74ddb0 100644 --- a/tests/stringifyQuery.test.ts +++ b/tests/stringifyQuery.test.ts @@ -1,6 +1,6 @@ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -import { Hypeman } from 'hypeman'; +import { Hypeman } from '@onkernel/hypeman'; const { stringifyQuery } = Hypeman.prototype as any; diff --git a/tests/uploads.test.ts b/tests/uploads.test.ts index bec04fd..b403e02 100644 --- a/tests/uploads.test.ts +++ b/tests/uploads.test.ts @@ -1,6 +1,6 @@ import fs from 'fs'; -import type { ResponseLike } from 'hypeman/internal/to-file'; -import { toFile } from 'hypeman/core/uploads'; +import type { ResponseLike } from '@onkernel/hypeman/internal/to-file'; +import { toFile } from '@onkernel/hypeman/core/uploads'; import { File } from 'node:buffer'; class MyClass { @@ -97,7 +97,7 @@ describe('missing File error message', () => { }); test('is thrown', async () => { - const uploads = await import('hypeman/core/uploads'); + const uploads = await import('@onkernel/hypeman/core/uploads'); await expect( uploads.toFile(mockResponse({ url: 'https://example.com/my/audio.mp3' })), ).rejects.toMatchInlineSnapshot( diff --git a/tsconfig.build.json b/tsconfig.build.json index c7aa5ce..fc23730 100644 --- a/tsconfig.build.json +++ b/tsconfig.build.json @@ -5,8 +5,8 @@ "compilerOptions": { "rootDir": "./dist/src", "paths": { - "hypeman/*": ["./dist/src/*"], - "hypeman": ["./dist/src/index.ts"] + "@onkernel/hypeman/*": ["./dist/src/*"], + "@onkernel/hypeman": ["./dist/src/index.ts"] }, "noEmit": false, "declaration": true, diff --git a/tsconfig.json b/tsconfig.json index 9c416b4..49d5816 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,8 +8,8 @@ "moduleResolution": "node", "esModuleInterop": true, "paths": { - "hypeman/*": ["./src/*"], - "hypeman": ["./src/index.ts"] + "@onkernel/hypeman/*": ["./src/*"], + "@onkernel/hypeman": ["./src/index.ts"] }, "noEmit": true,