Skip to content

Commit

Permalink
Merge pull request #8 from OneBusAway/release-please--branches--main-…
Browse files Browse the repository at this point in the history
…-changes--next--components--onebusaway-sdk

release: 0.1.0-alpha.2
  • Loading branch information
Ahmedhossamdev authored Jun 22, 2024
2 parents 2b01357 + 4096ac6 commit b14cf96
Show file tree
Hide file tree
Showing 29 changed files with 84 additions and 79 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@ Full Changelog: [v0.1.0-alpha.1...v0.1.0-alpha.2](https://github.com/OneBusAway/

* **api:** update via SDK Studio ([#5](https://github.com/OneBusAway/onebusaway-js-sdk/issues/5)) ([35e898e](https://github.com/OneBusAway/onebusaway-js-sdk/commit/35e898e624904947f711dcfa0de18093ca572321))


### Chores

* update SDK settings ([#7](https://github.com/OneBusAway/onebusaway-js-sdk/issues/7)) ([478c9b4](https://github.com/OneBusAway/onebusaway-js-sdk/commit/478c9b4a122a9d1f7d59c0078a6986d23083e8b2))

## 0.1.0-alpha.1 (2024-06-22)

Full Changelog: [v0.0.1-alpha.0...v0.1.0-alpha.1](https://github.com/OneBusAway/onebusaway-js-sdk/compare/v0.0.1-alpha.0...v0.1.0-alpha.1)
Expand Down
4 changes: 2 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,12 @@ cd onebusaway-js-sdk
# With yarn
yarn link
cd ../my-package
yarn link onebusaway
yarn link onebusaway-sdk

# With pnpm
pnpm link --global
cd ../my-package
pnpm link -—global onebusaway
pnpm link -—global onebusaway-sdk
```

## Running tests
Expand Down
18 changes: 9 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Onebusaway SDK Node API Library

[![NPM version](https://img.shields.io/npm/v/onebusaway.svg)](https://npmjs.org/package/onebusaway) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/onebusaway)
[![NPM version](https://img.shields.io/npm/v/onebusaway-sdk.svg)](https://npmjs.org/package/onebusaway-sdk) ![npm bundle size](https://img.shields.io/bundlephobia/minzip/onebusaway-sdk)

This library provides convenient access to the Onebusaway SDK REST API from server-side TypeScript or JavaScript.

Expand All @@ -11,7 +11,7 @@ It is generated with [Stainless](https://www.stainlessapi.com/).
## Installation

```sh
npm install onebusaway
npm install onebusaway-sdk
```

## Usage
Expand All @@ -20,7 +20,7 @@ The full API of this library can be found in [api.md](api.md).

<!-- prettier-ignore -->
```js
import OnebusawaySDK from 'onebusaway';
import OnebusawaySDK from 'onebusaway-sdk';

const onebusawaySDK = new OnebusawaySDK({
apiKey: process.env['ONEBUSAWAY_API_KEY'], // This is the default and can be omitted
Expand All @@ -39,7 +39,7 @@ This library includes TypeScript definitions for all request params and response

<!-- prettier-ignore -->
```ts
import OnebusawaySDK from 'onebusaway';
import OnebusawaySDK from 'onebusaway-sdk';

const onebusawaySDK = new OnebusawaySDK({
apiKey: process.env['ONEBUSAWAY_API_KEY'], // This is the default and can be omitted
Expand Down Expand Up @@ -211,11 +211,11 @@ add the following import before your first import `from "OnebusawaySDK"`:
```ts
// Tell TypeScript and the package to use the global web fetch instead of node-fetch.
// Note, despite the name, this does not add any polyfills, but expects them to be provided if needed.
import 'onebusaway/shims/web';
import OnebusawaySDK from 'onebusaway';
import 'onebusaway-sdk/shims/web';
import OnebusawaySDK from 'onebusaway-sdk';
```

To do the inverse, add `import "onebusaway/shims/node"` (which does import polyfills).
To do the inverse, add `import "onebusaway-sdk/shims/node"` (which does import polyfills).
This can also be useful if you are getting the wrong TypeScript types for `Response` ([more details](https://github.com/OneBusAway/onebusaway-js-sdk/tree/main/src/_shims#readme)).

### Logging and middleware
Expand All @@ -225,7 +225,7 @@ which can be used to inspect or alter the `Request` or `Response` before/after e

```ts
import { fetch } from 'undici'; // as one example
import OnebusawaySDK from 'onebusaway';
import OnebusawaySDK from 'onebusaway-sdk';

const client = new OnebusawaySDK({
fetch: async (url: RequestInfo, init?: RequestInit): Promise<Response> => {
Expand Down Expand Up @@ -281,7 +281,7 @@ TypeScript >= 4.5 is supported.
The following runtimes are supported:

- Node.js 18 LTS or later ([non-EOL](https://endoflife.date/nodejs)) versions.
- Deno v1.28.0 or higher, using `import OnebusawaySDK from "npm:onebusaway"`.
- Deno v1.28.0 or higher, using `import OnebusawaySDK from "npm:onebusaway-sdk"`.
- Bun 1.0 or later.
- Cloudflare Workers.
- Vercel Edge Runtime.
Expand Down
6 changes: 3 additions & 3 deletions jest.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ const config: JestConfigWithTsJest = {
'^.+\\.(t|j)sx?$': ['@swc/jest', { sourceMaps: 'inline' }],
},
moduleNameMapper: {
'^onebusaway$': '<rootDir>/src/index.ts',
'^onebusaway/_shims/auto/(.*)$': '<rootDir>/src/_shims/auto/$1-node',
'^onebusaway/(.*)$': '<rootDir>/src/$1',
'^onebusaway-sdk$': '<rootDir>/src/index.ts',
'^onebusaway-sdk/_shims/auto/(.*)$': '<rootDir>/src/_shims/auto/$1-node',
'^onebusaway-sdk/(.*)$': '<rootDir>/src/$1',
},
modulePathIgnorePatterns: [
'<rootDir>/ecosystem-tests/',
Expand Down
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "onebusaway",
"name": "onebusaway-sdk",
"version": "0.1.0-alpha.2",
"description": "The official TypeScript library for the Onebusaway SDK API",
"author": "Onebusaway SDK <[email protected]>",
Expand Down Expand Up @@ -60,8 +60,8 @@
"./shims/web.mjs"
],
"imports": {
"onebusaway": ".",
"onebusaway/*": "./src/*"
"onebusaway-sdk": ".",
"onebusaway-sdk/*": "./src/*"
},
"exports": {
"./_shims/auto/*": {
Expand Down
6 changes: 3 additions & 3 deletions scripts/build
Original file line number Diff line number Diff line change
Expand Up @@ -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 <package root>/resources/foo.js
# This way importing from `"onebusaway/resources/foo"` works
# This way importing from `"onebusaway-sdk/resources/foo"` works
# even with `"moduleResolution": "node"`

rm -rf dist; mkdir dist
Expand Down Expand Up @@ -47,8 +47,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("onebusaway")')
(cd dist && node -e 'import("onebusaway")' --input-type=module)
(cd dist && node -e 'require("onebusaway-sdk")')
(cd dist && node -e 'import("onebusaway-sdk")' --input-type=module)

if command -v deno &> /dev/null && [ -e ./scripts/build-deno ]
then
Expand Down
4 changes: 2 additions & 2 deletions scripts/utils/postprocess-files.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ const fs = require('fs');
const path = require('path');
const { parse } = require('@typescript-eslint/parser');

const pkgImportPath = process.env['PKG_IMPORT_PATH'] ?? 'onebusaway/';
const pkgImportPath = process.env['PKG_IMPORT_PATH'] ?? 'onebusaway-sdk/';

const distDir =
process.env['DIST_PATH'] ?
Expand Down Expand Up @@ -142,7 +142,7 @@ async function postprocess() {

if (file.endsWith('.d.ts')) {
// work around bad tsc behavior
// if we have `import { type Readable } from 'onebusaway/_shims/index'`,
// if we have `import { type Readable } from 'onebusaway-sdk/_shims/index'`,
// tsc sometimes replaces `Readable` with `import("stream").Readable` inline
// in the output .d.ts
transformed = transformed.replace(/import\("stream"\).Readable/g, 'Readable');
Expand Down
32 changes: 16 additions & 16 deletions src/_shims/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# 👋 Wondering what everything in here does?

`onebusaway` supports a wide variety of runtime environments like Node.js, Deno, Bun, browsers, and various
`onebusaway-sdk` supports a wide variety of runtime environments like Node.js, Deno, Bun, browsers, and various
edge runtimes, as well as both CommonJS (CJS) and EcmaScript Modules (ESM).

To do this, `onebusaway` provides shims for either using `node-fetch` when in Node (because `fetch` is still experimental there) or the global `fetch` API built into the environment when not in Node.
To do this, `onebusaway-sdk` provides shims for either using `node-fetch` when in Node (because `fetch` is still experimental there) or the global `fetch` API built into the environment when not in Node.

It uses [conditional exports](https://nodejs.org/api/packages.html#conditional-exports) to
automatically select the correct shims for each environment. However, conditional exports are a fairly new
Expand All @@ -15,32 +15,32 @@ getting the wrong raw `Response` type from `.asResponse()`, for example.

The user can work around these issues by manually importing one of:

- `import 'onebusaway/shims/node'`
- `import 'onebusaway/shims/web'`
- `import 'onebusaway-sdk/shims/node'`
- `import 'onebusaway-sdk/shims/web'`

All of the code here in `_shims` handles selecting the automatic default shims or manual overrides.

### How it works - Runtime

Runtime shims get installed by calling `setShims` exported by `onebusaway/_shims/registry`.
Runtime shims get installed by calling `setShims` exported by `onebusaway-sdk/_shims/registry`.

Manually importing `onebusaway/shims/node` or `onebusaway/shims/web`, calls `setShims` with the respective runtime shims.
Manually importing `onebusaway-sdk/shims/node` or `onebusaway-sdk/shims/web`, calls `setShims` with the respective runtime shims.

All client code imports shims from `onebusaway/_shims/index`, which:
All client code imports shims from `onebusaway-sdk/_shims/index`, which:

- checks if shims have been set manually
- if not, calls `setShims` with the shims from `onebusaway/_shims/auto/runtime`
- re-exports the installed shims from `onebusaway/_shims/registry`.
- if not, calls `setShims` with the shims from `onebusaway-sdk/_shims/auto/runtime`
- re-exports the installed shims from `onebusaway-sdk/_shims/registry`.

`onebusaway/_shims/auto/runtime` exports web runtime shims.
If the `node` export condition is set, the export map replaces it with `onebusaway/_shims/auto/runtime-node`.
`onebusaway-sdk/_shims/auto/runtime` exports web runtime shims.
If the `node` export condition is set, the export map replaces it with `onebusaway-sdk/_shims/auto/runtime-node`.

### How it works - Type time

All client code imports shim types from `onebusaway/_shims/index`, which selects the manual types from `onebusaway/_shims/manual-types` if they have been declared, otherwise it exports the auto types from `onebusaway/_shims/auto/types`.
All client code imports shim types from `onebusaway-sdk/_shims/index`, which selects the manual types from `onebusaway-sdk/_shims/manual-types` if they have been declared, otherwise it exports the auto types from `onebusaway-sdk/_shims/auto/types`.

`onebusaway/_shims/manual-types` exports an empty namespace.
Manually importing `onebusaway/shims/node` or `onebusaway/shims/web` merges declarations into this empty namespace, so they get picked up by `onebusaway/_shims/index`.
`onebusaway-sdk/_shims/manual-types` exports an empty namespace.
Manually importing `onebusaway-sdk/shims/node` or `onebusaway-sdk/shims/web` merges declarations into this empty namespace, so they get picked up by `onebusaway-sdk/_shims/index`.

`onebusaway/_shims/auto/types` exports web type definitions.
If the `node` export condition is set, the export map replaces it with `onebusaway/_shims/auto/types-node`, though TS only picks this up if `"moduleResolution": "nodenext"` or `"moduleResolution": "bundler"`.
`onebusaway-sdk/_shims/auto/types` exports web type definitions.
If the `node` export condition is set, the export map replaces it with `onebusaway-sdk/_shims/auto/types-node`, though TS only picks this up if `"moduleResolution": "nodenext"` or `"moduleResolution": "bundler"`.
2 changes: 1 addition & 1 deletion src/_shims/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* Disclaimer: modules in _shims aren't intended to be imported by SDK users.
*/
import { manual } from './manual-types';
import * as auto from 'onebusaway/_shims/auto/types';
import * as auto from 'onebusaway-sdk/_shims/auto/types';
import { type RequestOptions } from '../core';

type SelectType<Manual, Auto> = unknown extends Manual ? Auto : Manual;
Expand Down
2 changes: 1 addition & 1 deletion src/_shims/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* Disclaimer: modules in _shims aren't intended to be imported by SDK users.
*/
const shims = require('./registry');
const auto = require('onebusaway/_shims/auto/runtime');
const auto = require('onebusaway-sdk/_shims/auto/runtime');
if (!shims.kind) shims.setShims(auto.getRuntime(), { auto: true });
for (const property of Object.keys(shims)) {
Object.defineProperty(exports, property, {
Expand Down
2 changes: 1 addition & 1 deletion src/_shims/index.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
* Disclaimer: modules in _shims aren't intended to be imported by SDK users.
*/
import * as shims from './registry.mjs';
import * as auto from 'onebusaway/_shims/auto/runtime';
import * as auto from 'onebusaway-sdk/_shims/auto/runtime';
if (!shims.kind) shims.setShims(auto.getRuntime(), { auto: true });
export * from './registry.mjs';
4 changes: 2 additions & 2 deletions src/_shims/manual-types.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
/**
* Types will get added to this namespace when you import one of the following:
*
* import 'onebusaway/shims/node'
* import 'onebusaway/shims/web'
* import 'onebusaway-sdk/shims/node'
* import 'onebusaway-sdk/shims/web'
*
* Importing more than one will cause type and runtime errors.
*/
Expand Down
4 changes: 2 additions & 2 deletions src/_shims/registry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,12 @@ export let isFsReadStream: Shims['isFsReadStream'] | undefined = undefined;
export function setShims(shims: Shims, options: { auto: boolean } = { auto: false }) {
if (auto) {
throw new Error(
`you must \`import 'onebusaway/shims/${shims.kind}'\` before importing anything else from onebusaway`,
`you must \`import 'onebusaway-sdk/shims/${shims.kind}'\` before importing anything else from onebusaway-sdk`,
);
}
if (kind) {
throw new Error(
`can't \`import 'onebusaway/shims/${shims.kind}'\` after \`import 'onebusaway/shims/${kind}'\``,
`can't \`import 'onebusaway-sdk/shims/${shims.kind}'\` after \`import 'onebusaway-sdk/shims/${kind}'\``,
);
}
auto = options.auto;
Expand Down
6 changes: 3 additions & 3 deletions src/_shims/web-runtime.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ export function getRuntime({ manuallyImported }: { manuallyImported?: boolean }
const recommendation =
manuallyImported ?
`You may need to use polyfills`
: `Add one of these imports before your first \`import … from 'onebusaway'\`:
- \`import 'onebusaway/shims/node'\` (if you're running on Node)
- \`import 'onebusaway/shims/web'\` (otherwise)
: `Add one of these imports before your first \`import … from 'onebusaway-sdk'\`:
- \`import 'onebusaway-sdk/shims/node'\` (if you're running on Node)
- \`import 'onebusaway-sdk/shims/web'\` (otherwise)
`;

let _fetch, _Request, _Response, _Headers;
Expand Down
12 changes: 6 additions & 6 deletions src/core.ts
Original file line number Diff line number Diff line change
Expand Up @@ -97,9 +97,9 @@ export class APIPromise<T> extends Promise<T> {
*
* 👋 Getting the wrong TypeScript type for `Response`?
* Try setting `"moduleResolution": "NodeNext"` if you can,
* or add one of these imports before your first `import … from 'onebusaway'`:
* - `import 'onebusaway/shims/node'` (if you're running on Node)
* - `import 'onebusaway/shims/web'` (otherwise)
* or add one of these imports before your first `import … from 'onebusaway-sdk'`:
* - `import 'onebusaway-sdk/shims/node'` (if you're running on Node)
* - `import 'onebusaway-sdk/shims/web'` (otherwise)
*/
asResponse(): Promise<Response> {
return this.responsePromise.then((p) => p.response);
Expand All @@ -113,9 +113,9 @@ export class APIPromise<T> extends Promise<T> {
*
* 👋 Getting the wrong TypeScript type for `Response`?
* Try setting `"moduleResolution": "NodeNext"` if you can,
* or add one of these imports before your first `import … from 'onebusaway'`:
* - `import 'onebusaway/shims/node'` (if you're running on Node)
* - `import 'onebusaway/shims/web'` (otherwise)
* or add one of these imports before your first `import … from 'onebusaway-sdk'`:
* - `import 'onebusaway-sdk/shims/node'` (if you're running on Node)
* - `import 'onebusaway-sdk/shims/web'` (otherwise)
*/
async withResponse(): Promise<{ data: T; response: Response }> {
const [data, response] = await Promise.all([this.parse(), this.asResponse()]);
Expand Down
2 changes: 1 addition & 1 deletion tests/api-resources/agencies-with-coverage.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

import OnebusawaySDK from 'onebusaway';
import OnebusawaySDK from 'onebusaway-sdk';
import { Response } from 'node-fetch';

const onebusawaySDK = new OnebusawaySDK({
Expand Down
2 changes: 1 addition & 1 deletion tests/api-resources/arrival-and-departure-for-stop.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

import OnebusawaySDK from 'onebusaway';
import OnebusawaySDK from 'onebusaway-sdk';
import { Response } from 'node-fetch';

const onebusawaySDK = new OnebusawaySDK({
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

import OnebusawaySDK from 'onebusaway';
import OnebusawaySDK from 'onebusaway-sdk';
import { Response } from 'node-fetch';

const onebusawaySDK = new OnebusawaySDK({
Expand Down
2 changes: 1 addition & 1 deletion tests/api-resources/config.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

import OnebusawaySDK from 'onebusaway';
import OnebusawaySDK from 'onebusaway-sdk';
import { Response } from 'node-fetch';

const onebusawaySDK = new OnebusawaySDK({
Expand Down
2 changes: 1 addition & 1 deletion tests/api-resources/current-time.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

import OnebusawaySDK from 'onebusaway';
import OnebusawaySDK from 'onebusaway-sdk';
import { Response } from 'node-fetch';

const onebusawaySDK = new OnebusawaySDK({
Expand Down
2 changes: 1 addition & 1 deletion tests/api-resources/stops-for-location.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

import OnebusawaySDK from 'onebusaway';
import OnebusawaySDK from 'onebusaway-sdk';
import { Response } from 'node-fetch';

const onebusawaySDK = new OnebusawaySDK({
Expand Down
6 changes: 3 additions & 3 deletions tests/form.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { multipartFormRequestOptions, createForm } from 'onebusaway/core';
import { Blob } from 'onebusaway/_shims/index';
import { toFile } from 'onebusaway';
import { multipartFormRequestOptions, createForm } from 'onebusaway-sdk/core';
import { Blob } from 'onebusaway-sdk/_shims/index';
import { toFile } from 'onebusaway-sdk';

describe('form data validation', () => {
test('valid values do not error', async () => {
Expand Down
6 changes: 3 additions & 3 deletions tests/index.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

import OnebusawaySDK from 'onebusaway';
import { APIUserAbortError } from 'onebusaway';
import { Headers } from 'onebusaway/core';
import OnebusawaySDK from 'onebusaway-sdk';
import { APIUserAbortError } from 'onebusaway-sdk';
import { Headers } from 'onebusaway-sdk/core';
import defaultFetch, { Response, type RequestInit, type RequestInfo } from 'node-fetch';

describe('instantiate client', () => {
Expand Down
4 changes: 2 additions & 2 deletions tests/responses.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { createResponseHeaders } from 'onebusaway/core';
import { Headers } from 'onebusaway/_shims/index';
import { createResponseHeaders } from 'onebusaway-sdk/core';
import { Headers } from 'onebusaway-sdk/_shims/index';

describe('response parsing', () => {
// TODO: test unicode characters
Expand Down
2 changes: 1 addition & 1 deletion tests/stringifyQuery.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { APIClient } from 'onebusaway/core';
import { APIClient } from 'onebusaway-sdk/core';

const { stringifyQuery } = APIClient.prototype as any;

Expand Down
Loading

0 comments on commit b14cf96

Please sign in to comment.