@unisource/sdk 1.1.0-beta.0 → 1.1.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +131 -46
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,88 +1,173 @@
|
|
|
1
1
|
# @unisource/sdk
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Publiczny pakiet TypeScript dla UniSource. Zawiera kontrakty API, schematy Zod oraz klienty HTTP używane przez frontend, backend i integracje zewnętrzne.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Instalacja
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
```bash
|
|
8
|
+
pnpm add @unisource/sdk
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Wersja stabilna jest publikowana pod tagiem `latest`:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
pnpm add @unisource/sdk@latest
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Wersje testowe API v2 są publikowane pod tagiem `beta`:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
pnpm add @unisource/sdk@beta
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Aktualne tagi npm:
|
|
8
24
|
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
- **Publiczne Helpery**: Samodzielne metody do obsługi udostępnionych, publicznych linków (bez wymagania logowania) takie jak `getPublicFileInfo()` czy `unlockPublicFile()`.
|
|
12
|
-
- **Obsługa Błędów**: Precyzyjne klasy błędów `UnisourceError` oraz `UnisourceNetworkError`.
|
|
25
|
+
- `latest` - stabilne API v1
|
|
26
|
+
- `beta` - API v2 w fazie beta, z możliwymi zmianami breaking przed stabilizacją
|
|
13
27
|
|
|
14
|
-
##
|
|
28
|
+
## Co zawiera pakiet
|
|
15
29
|
|
|
16
|
-
|
|
30
|
+
- Typy TypeScript i schematy Zod dla plików, folderów, uploadów, share linków, storage, usług, użytkowników i audytów.
|
|
31
|
+
- `UnisourceClient` dla stabilnego API v1.
|
|
32
|
+
- `UnisourceV2Client` oraz kontrakty v2 dostępne z `@unisource/sdk/v2`.
|
|
33
|
+
- Helpery publicznych linków: `getPublicFileInfo()` i `unlockPublicFile()`.
|
|
34
|
+
- Klasy błędów dla v1 oraz v2.
|
|
35
|
+
|
|
36
|
+
## Stabilne API v1
|
|
17
37
|
|
|
18
38
|
```ts
|
|
19
39
|
import { UnisourceClient } from '@unisource/sdk';
|
|
20
40
|
|
|
21
|
-
// 1. Konfiguracja klienta
|
|
22
41
|
const client = new UnisourceClient({
|
|
23
42
|
baseUrl: 'https://api.example.com',
|
|
24
43
|
serviceId: 'default',
|
|
25
|
-
getToken: async () => '
|
|
44
|
+
getToken: async () => 'jwt-or-api-key',
|
|
26
45
|
});
|
|
27
46
|
|
|
28
|
-
|
|
29
|
-
|
|
47
|
+
const files = await client.myFiles.list({
|
|
48
|
+
folder_id: null,
|
|
49
|
+
limit: 25,
|
|
50
|
+
});
|
|
30
51
|
```
|
|
31
52
|
|
|
32
|
-
###
|
|
33
|
-
Zapytania o zasoby publiczne nie wymagają pełnej inicjalizacji klienta i posiadają dedykowane, lekkie metody:
|
|
53
|
+
### Publiczne linki
|
|
34
54
|
|
|
35
55
|
```ts
|
|
36
56
|
import { getPublicFileInfo, unlockPublicFile } from '@unisource/sdk';
|
|
37
57
|
|
|
38
|
-
|
|
39
|
-
const info = await getPublicFileInfo('https://api.example.com', 'moj-unikalny-slug');
|
|
58
|
+
const info = await getPublicFileInfo('https://api.example.com', 'share-slug');
|
|
40
59
|
|
|
41
|
-
|
|
42
|
-
|
|
60
|
+
const unlocked = await unlockPublicFile(
|
|
61
|
+
'https://api.example.com',
|
|
62
|
+
'share-slug',
|
|
63
|
+
'password'
|
|
64
|
+
);
|
|
43
65
|
```
|
|
44
66
|
|
|
45
|
-
##
|
|
67
|
+
## API v2 beta
|
|
46
68
|
|
|
47
|
-
|
|
69
|
+
API v2 jest dostępne w wersjach `@unisource/sdk@beta`. Importuj je z osobnego entrypointu:
|
|
48
70
|
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
pnpm install
|
|
71
|
+
```ts
|
|
72
|
+
import { UnisourceV2Client } from '@unisource/sdk/v2';
|
|
52
73
|
|
|
53
|
-
|
|
54
|
-
|
|
74
|
+
const client = new UnisourceV2Client({
|
|
75
|
+
baseUrl: 'https://api.example.com',
|
|
76
|
+
serviceId: 'default',
|
|
77
|
+
getToken: async () => 'jwt-or-api-key',
|
|
78
|
+
silentBeta: true,
|
|
79
|
+
});
|
|
55
80
|
|
|
56
|
-
|
|
57
|
-
|
|
81
|
+
const files = await client.files.list({
|
|
82
|
+
folder_id: null,
|
|
83
|
+
trash: 'active',
|
|
84
|
+
sort_by: 'updated_at',
|
|
85
|
+
sort_dir: 'desc',
|
|
86
|
+
limit: 50,
|
|
87
|
+
});
|
|
58
88
|
|
|
59
|
-
|
|
60
|
-
|
|
89
|
+
const folders = await client.folders.list({
|
|
90
|
+
parent_id: undefined,
|
|
91
|
+
trash: 'active',
|
|
92
|
+
sort_by: 'name',
|
|
93
|
+
sort_dir: 'asc',
|
|
94
|
+
});
|
|
61
95
|
```
|
|
62
96
|
|
|
63
|
-
|
|
64
|
-
`"@unisource/sdk": "workspace:*"`
|
|
97
|
+
### Typy i schematy v2
|
|
65
98
|
|
|
66
|
-
|
|
99
|
+
```ts
|
|
100
|
+
import {
|
|
101
|
+
UnisourceV2Error,
|
|
102
|
+
v2FileSchema,
|
|
103
|
+
v2FolderSchema,
|
|
104
|
+
v2ListResponseSchema,
|
|
105
|
+
type V2File,
|
|
106
|
+
type V2Folder,
|
|
107
|
+
type V2ListResponse,
|
|
108
|
+
} from '@unisource/sdk/v2';
|
|
109
|
+
```
|
|
67
110
|
|
|
68
|
-
|
|
111
|
+
V2 używa odpowiedzi stronicowanych w formacie:
|
|
69
112
|
|
|
70
|
-
|
|
113
|
+
```ts
|
|
114
|
+
interface V2ListResponse<T> {
|
|
115
|
+
items: T[];
|
|
116
|
+
page: {
|
|
117
|
+
limit: number;
|
|
118
|
+
next_cursor: string | null;
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
```
|
|
71
122
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
123
|
+
## Błędy
|
|
124
|
+
|
|
125
|
+
```ts
|
|
126
|
+
import { UnisourceError, UnisourceNetworkError } from '@unisource/sdk';
|
|
127
|
+
import { UnisourceV2Error } from '@unisource/sdk/v2';
|
|
128
|
+
|
|
129
|
+
try {
|
|
130
|
+
await client.myFiles.list();
|
|
131
|
+
} catch (error) {
|
|
132
|
+
if (error instanceof UnisourceError) {
|
|
133
|
+
console.error(error.status, error.message);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if (error instanceof UnisourceNetworkError) {
|
|
137
|
+
console.error('Network error', error.cause);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Rozwój lokalny
|
|
75
143
|
|
|
76
|
-
|
|
77
|
-
pnpm changeset version
|
|
144
|
+
Repozytorium używa pnpm workspaces.
|
|
78
145
|
|
|
79
|
-
|
|
146
|
+
```bash
|
|
147
|
+
pnpm install
|
|
148
|
+
pnpm --filter @unisource/sdk typecheck
|
|
149
|
+
pnpm --filter @unisource/sdk test
|
|
80
150
|
pnpm --filter @unisource/sdk build
|
|
151
|
+
```
|
|
81
152
|
|
|
82
|
-
|
|
83
|
-
pnpm --filter @unisource/sdk publish --dry-run --access public --no-git-checks
|
|
153
|
+
W aplikacjach z tego samego monorepo używaj zależności workspace:
|
|
84
154
|
|
|
85
|
-
|
|
86
|
-
|
|
155
|
+
```json
|
|
156
|
+
{
|
|
157
|
+
"dependencies": {
|
|
158
|
+
"@unisource/sdk": "workspace:*"
|
|
159
|
+
}
|
|
160
|
+
}
|
|
87
161
|
```
|
|
88
|
-
|
|
162
|
+
|
|
163
|
+
## Release
|
|
164
|
+
|
|
165
|
+
Stable release jest publikowany przez Changesets i workflow `Release SDK` z brancha `main`.
|
|
166
|
+
|
|
167
|
+
Beta release jest uruchamiany ręcznie z tego samego workflowu:
|
|
168
|
+
|
|
169
|
+
- branch workflowu: `main`
|
|
170
|
+
- `channel`: `beta`
|
|
171
|
+
- `bump`: `patch`, `minor`, `major` albo `next`
|
|
172
|
+
|
|
173
|
+
Pierwsza beta dla nowej linii wersji wymaga `patch`, `minor` albo `major`. Kolejne bety tej samej linii publikuj przez `next`.
|
package/package.json
CHANGED