Skip to content

Commit 24915d7

Browse files
feat: initial TypeScript SDK setup (#1)
## Summary - Extracted TypeScript SDK from `layervai/qurl-integrations` (feat/sdk-typescript branch) - `QURLClient` with retry logic, error handling, API key masking - Full type definitions for all QURL API endpoints - Comprehensive test suite (vitest) - CI workflow (Node 22) - Release Please + npm publish with provenance - Claude code review workflow - ESLint + Prettier configuration - Dependabot for Actions + npm ## Test plan - [ ] CI passes - [ ] `npm run build` succeeds - [ ] `npm test` passes - [ ] `npm run format:check` passes 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.6 <[email protected]>
1 parent 7418ad9 commit 24915d7

27 files changed

Lines changed: 5349 additions & 0 deletions
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
name: Bug Report
3+
about: Report a bug in @layerv/qurl
4+
labels: bug
5+
---
6+
7+
## Description
8+
9+
<!-- What happened? -->
10+
11+
## Expected Behavior
12+
13+
<!-- What did you expect? -->
14+
15+
## Steps to Reproduce
16+
17+
1.
18+
2.
19+
3.
20+
21+
## Environment
22+
23+
- Node.js version:
24+
- @layerv/qurl version:
25+
- OS:
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
name: Feature Request
3+
about: Suggest a feature for @layerv/qurl
4+
labels: enhancement
5+
---
6+
7+
## Description
8+
9+
<!-- What would you like? -->
10+
11+
## Use Case
12+
13+
<!-- Why do you need this? -->

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
## Summary
2+
3+
<!-- Brief description of what this PR does -->
4+
5+
## Test plan
6+
7+
<!-- How was this tested? -->
8+
9+
- [ ] `npm run build` passes
10+
- [ ] `npm test` passes
11+
- [ ] `npm run format:check` passes

.github/dependabot.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: github-actions
4+
directory: /
5+
schedule:
6+
interval: weekly
7+
- package-ecosystem: npm
8+
directory: /
9+
schedule:
10+
interval: weekly

.github/workflows/ci.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
jobs:
10+
test:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
14+
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
15+
with:
16+
node-version: "22"
17+
cache: "npm"
18+
- run: npm ci
19+
- run: npm run build
20+
- run: npm run lint
21+
- run: npm run format:check
22+
- run: npm test
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
name: Release Please
2+
3+
on:
4+
push:
5+
branches: [main]
6+
7+
permissions:
8+
contents: write
9+
pull-requests: write
10+
11+
jobs:
12+
release-please:
13+
runs-on: ubuntu-latest
14+
outputs:
15+
release_created: ${{ steps.release.outputs.release_created }}
16+
tag_name: ${{ steps.release.outputs.tag_name }}
17+
steps:
18+
- uses: googleapis/release-please-action@16a9c90856f42705d54a6fda1823352bdc62cf38 # v4
19+
id: release
20+
with:
21+
config-file: release-please-config.json
22+
manifest-file: .release-please-manifest.json
23+
24+
test:
25+
needs: release-please
26+
if: needs.release-please.outputs.release_created
27+
runs-on: ubuntu-latest
28+
steps:
29+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
30+
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
31+
with:
32+
node-version: "22"
33+
cache: "npm"
34+
- run: npm ci
35+
- run: npm run build
36+
- run: npm test
37+
38+
publish:
39+
needs: [release-please, test]
40+
if: needs.release-please.outputs.release_created
41+
runs-on: ubuntu-latest
42+
permissions:
43+
contents: read
44+
id-token: write
45+
steps:
46+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
47+
- uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0
48+
with:
49+
node-version: "22"
50+
cache: "npm"
51+
registry-url: "https://registry.npmjs.org"
52+
- run: npm ci
53+
- run: npm run build
54+
- run: npm publish --provenance --access public
55+
env:
56+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
node_modules/
2+
dist/

.prettierrc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"semi": true,
3+
"trailingComma": "all",
4+
"singleQuote": false,
5+
"printWidth": 100,
6+
"tabWidth": 2
7+
}

.release-please-manifest.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{".": "0.1.0"}

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Changelog

0 commit comments

Comments
 (0)