Skip to content

Commit 721ac68

Browse files
SDK regeneration
1 parent 2394016 commit 721ac68

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+5104
-1379
lines changed

.fern/metadata.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"cliVersion": "1.9.0",
3+
"generatorName": "fernapi/fern-typescript-node-sdk",
4+
"generatorVersion": "3.31.1",
5+
"generatorConfig": {
6+
"namespaceExport": "Lattice"
7+
}
8+
}

.github/workflows/ci.yml

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
uses: actions/checkout@v4
1212

1313
- name: Set up node
14-
uses: actions/setup-node@v3
14+
uses: actions/setup-node@v4
1515

1616
- name: Install pnpm
1717
uses: pnpm/action-setup@v4
@@ -30,7 +30,7 @@ jobs:
3030
uses: actions/checkout@v4
3131

3232
- name: Set up node
33-
uses: actions/setup-node@v3
33+
uses: actions/setup-node@v4
3434

3535
- name: Install pnpm
3636
uses: pnpm/action-setup@v4
@@ -45,12 +45,14 @@ jobs:
4545
needs: [ compile, test ]
4646
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
4747
runs-on: ubuntu-latest
48+
permissions:
49+
id-token: write # Required for OIDC
4850
steps:
4951
- name: Checkout repo
5052
uses: actions/checkout@v4
5153

5254
- name: Set up node
53-
uses: actions/setup-node@v3
55+
uses: actions/setup-node@v4
5456

5557
- name: Install pnpm
5658
uses: pnpm/action-setup@v4
@@ -63,13 +65,13 @@ jobs:
6365

6466
- name: Publish to npm
6567
run: |
66-
npm config set //registry.npmjs.org/:_authToken ${NPM_TOKEN}
68+
publish() { # use latest npm to ensure OIDC support
69+
npx -y npm@latest publish "$@"
70+
}
6771
if [[ ${GITHUB_REF} == *alpha* ]]; then
68-
npm publish --access public --tag alpha
72+
publish --access public --tag alpha
6973
elif [[ ${GITHUB_REF} == *beta* ]]; then
70-
npm publish --access public --tag beta
74+
publish --access public --tag beta
7175
else
72-
npm publish --access public
73-
fi
74-
env:
75-
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
76+
publish --access public
77+
fi

.npmignore

Lines changed: 0 additions & 10 deletions
This file was deleted.

CONTRIBUTING.md

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
# Contributing
2+
3+
Thanks for your interest in contributing to this SDK! This document provides guidelines for contributing to the project.
4+
5+
## Getting Started
6+
7+
### Prerequisites
8+
9+
- Node.js 20 or higher
10+
- pnpm package manager
11+
12+
### Installation
13+
14+
Install the project dependencies:
15+
16+
```bash
17+
pnpm install
18+
```
19+
20+
### Building
21+
22+
Build the project:
23+
24+
```bash
25+
pnpm build
26+
```
27+
28+
### Testing
29+
30+
Run the test suite:
31+
32+
```bash
33+
pnpm test
34+
```
35+
36+
Run specific test types:
37+
- `pnpm test:unit` - Run unit tests
38+
- `pnpm test:wire` - Run wire/integration tests
39+
40+
### Linting and Formatting
41+
42+
Check code style:
43+
44+
```bash
45+
pnpm run lint
46+
pnpm run format:check
47+
```
48+
49+
Fix code style issues:
50+
51+
```bash
52+
pnpm run lint:fix
53+
pnpm run format:fix
54+
```
55+
56+
Or use the combined check command:
57+
58+
```bash
59+
pnpm run check:fix
60+
```
61+
62+
## About Generated Code
63+
64+
**Important**: Most files in this SDK are automatically generated by [Fern](https://buildwithfern.com) from the API definition. Direct modifications to generated files will be overwritten the next time the SDK is generated.
65+
66+
### Generated Files
67+
68+
The following directories contain generated code:
69+
- `src/api/` - API client classes and types
70+
- `src/serialization/` - Serialization/deserialization logic
71+
- Most TypeScript files in `src/`
72+
73+
### How to Customize
74+
75+
If you need to customize the SDK, you have two options:
76+
77+
#### Option 1: Use `.fernignore`
78+
79+
For custom code that should persist across SDK regenerations:
80+
81+
1. Create a `.fernignore` file in the project root
82+
2. Add file patterns for files you want to preserve (similar to `.gitignore` syntax)
83+
3. Add your custom code to those files
84+
85+
Files listed in `.fernignore` will not be overwritten when the SDK is regenerated.
86+
87+
For more information, see the [Fern documentation on custom code](https://buildwithfern.com/learn/sdks/overview/custom-code).
88+
89+
#### Option 2: Contribute to the Generator
90+
91+
If you want to change how code is generated for all users of this SDK:
92+
93+
1. The TypeScript SDK generator lives in the [Fern repository](https://github.com/fern-api/fern)
94+
2. Generator code is located at `generators/typescript/sdk/`
95+
3. Follow the [Fern contributing guidelines](https://github.com/fern-api/fern/blob/main/CONTRIBUTING.md)
96+
4. Submit a pull request with your changes to the generator
97+
98+
This approach is best for:
99+
- Bug fixes in generated code
100+
- New features that would benefit all users
101+
- Improvements to code generation patterns
102+
103+
## Making Changes
104+
105+
### Workflow
106+
107+
1. Create a new branch for your changes
108+
2. Make your modifications
109+
3. Run tests to ensure nothing breaks: `pnpm test`
110+
4. Run linting and formatting: `pnpm run check:fix`
111+
5. Build the project: `pnpm build`
112+
6. Commit your changes with a clear commit message
113+
7. Push your branch and create a pull request
114+
115+
### Commit Messages
116+
117+
Write clear, descriptive commit messages that explain what changed and why.
118+
119+
### Code Style
120+
121+
This project uses automated code formatting and linting. Run `pnpm run check:fix` before committing to ensure your code meets the project's style guidelines.
122+
123+
## Questions or Issues?
124+
125+
If you have questions or run into issues:
126+
127+
1. Check the [Fern documentation](https://buildwithfern.com)
128+
2. Search existing [GitHub issues](https://github.com/fern-api/fern/issues)
129+
3. Open a new issue if your question hasn't been addressed
130+
131+
## License
132+
133+
By contributing to this project, you agree that your contributions will be licensed under the same license as the project.

README.md

Lines changed: 85 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ following namespace:
5151
```typescript
5252
import { Lattice } from "@anduril-industries/lattice-sdk";
5353

54-
const request: Lattice.EntityOverride = {
54+
const request: Lattice.GetEntityRequest = {
5555
...
5656
};
5757
```
@@ -76,6 +76,21 @@ try {
7676
}
7777
```
7878

79+
## Streaming Response
80+
81+
Some endpoints return streaming responses instead of returning the full response at once.
82+
The SDK uses async iterators, so you can consume the responses using a `for await...of` loop.
83+
84+
```typescript
85+
import { LatticeClient } from "@anduril-industries/lattice-sdk";
86+
87+
const client = new LatticeClient({ token: "YOUR_TOKEN" });
88+
const response = await client.entities.streamEntities();
89+
for await (const item of response) {
90+
console.log(item);
91+
}
92+
```
93+
7994
## File Uploads
8095

8196
You can upload files using the client:
@@ -518,26 +533,19 @@ List endpoints are paginated. The SDK provides an iterator so that you can simpl
518533
import { LatticeClient } from "@anduril-industries/lattice-sdk";
519534

520535
const client = new LatticeClient({ token: "YOUR_TOKEN" });
521-
const response = await client.objects.listObjects({
522-
prefix: "prefix",
523-
sinceTimestamp: "2024-01-15T09:30:00Z",
524-
pageToken: "pageToken",
525-
allObjectsInMesh: true
526-
});
527-
for await (const item of response) {
536+
const pageableResponse = await client.objects.listObjects();
537+
for await (const item of pageableResponse) {
528538
console.log(item);
529539
}
530540

531541
// Or you can manually iterate page-by-page
532-
let page = await client.objects.listObjects({
533-
prefix: "prefix",
534-
sinceTimestamp: "2024-01-15T09:30:00Z",
535-
pageToken: "pageToken",
536-
allObjectsInMesh: true
537-
});
542+
let page = await client.objects.listObjects();
538543
while (page.hasNextPage()) {
539544
page = page.getNextPage();
540545
}
546+
547+
// You can also access the underlying response
548+
const response = page.response;
541549
```
542550

543551
## Advanced
@@ -620,6 +628,69 @@ console.log(data);
620628
console.log(rawResponse.headers['X-My-Header']);
621629
```
622630

631+
### Logging
632+
633+
The SDK supports logging. You can configure the logger by passing in a `logging` object to the client options.
634+
635+
```typescript
636+
import { LatticeClient, logging } from "@anduril-industries/lattice-sdk";
637+
638+
const client = new LatticeClient({
639+
...
640+
logging: {
641+
level: logging.LogLevel.Debug, // defaults to logging.LogLevel.Info
642+
logger: new logging.ConsoleLogger(), // defaults to ConsoleLogger
643+
silent: false, // defaults to true, set to false to enable logging
644+
}
645+
});
646+
```
647+
The `logging` object can have the following properties:
648+
- `level`: The log level to use. Defaults to `logging.LogLevel.Info`.
649+
- `logger`: The logger to use. Defaults to a `logging.ConsoleLogger`.
650+
- `silent`: Whether to silence the logger. Defaults to `true`.
651+
652+
The `level` property can be one of the following values:
653+
- `logging.LogLevel.Debug`
654+
- `logging.LogLevel.Info`
655+
- `logging.LogLevel.Warn`
656+
- `logging.LogLevel.Error`
657+
658+
To provide a custom logger, you can pass in an object that implements the `logging.ILogger` interface.
659+
660+
<details>
661+
<summary>Custom logger examples</summary>
662+
663+
Here's an example using the popular `winston` logging library.
664+
```ts
665+
import winston from 'winston';
666+
667+
const winstonLogger = winston.createLogger({...});
668+
669+
const logger: logging.ILogger = {
670+
debug: (msg, ...args) => winstonLogger.debug(msg, ...args),
671+
info: (msg, ...args) => winstonLogger.info(msg, ...args),
672+
warn: (msg, ...args) => winstonLogger.warn(msg, ...args),
673+
error: (msg, ...args) => winstonLogger.error(msg, ...args),
674+
};
675+
```
676+
677+
Here's an example using the popular `pino` logging library.
678+
679+
```ts
680+
import pino from 'pino';
681+
682+
const pinoLogger = pino({...});
683+
684+
const logger: logging.ILogger = {
685+
debug: (msg, ...args) => pinoLogger.debug(args, msg),
686+
info: (msg, ...args) => pinoLogger.info(args, msg),
687+
warn: (msg, ...args) => pinoLogger.warn(args, msg),
688+
error: (msg, ...args) => pinoLogger.error(args, msg),
689+
};
690+
```
691+
</details>
692+
693+
623694
### Runtime Compatibility
624695

625696

biome.json

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,27 @@
11
{
2-
"$schema": "https://biomejs.dev/schemas/2.2.5/schema.json",
2+
"$schema": "https://biomejs.dev/schemas/2.3.1/schema.json",
33
"root": true,
44
"vcs": {
55
"enabled": false
66
},
77
"files": {
88
"ignoreUnknown": true,
99
"includes": [
10-
"./**",
11-
"!dist",
12-
"!lib",
13-
"!*.tsbuildinfo",
14-
"!_tmp_*",
15-
"!*.tmp",
16-
"!.tmp/",
17-
"!*.log",
18-
"!.DS_Store",
19-
"!Thumbs.db"
10+
"**",
11+
"!!dist",
12+
"!!**/dist",
13+
"!!lib",
14+
"!!**/lib",
15+
"!!_tmp_*",
16+
"!!**/_tmp_*",
17+
"!!*.tmp",
18+
"!!**/*.tmp",
19+
"!!.tmp/",
20+
"!!**/.tmp/",
21+
"!!*.log",
22+
"!!**/*.log",
23+
"!!**/.DS_Store",
24+
"!!**/Thumbs.db"
2025
]
2126
},
2227
"formatter": {

0 commit comments

Comments
 (0)