@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.
Files changed (2) hide show
  1. package/README.md +131 -46
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,88 +1,173 @@
1
1
  # @unisource/sdk
2
2
 
3
- Główne, współdzielone biblioteki oraz klient HTTP (SDK) wykorzystywane zarówno przez aplikację `frontend`, jak i `backend` (w ramach repozytorium UniSource).
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
- ## Zawartość pakietu
5
+ ## Instalacja
6
6
 
7
- SDK zapewnia pojedyncze źródło prawdy dla kontraktów API i upraszcza komunikację z backendem. Zawiera m.in.:
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
- - **Zod Schemas & TypeScript Types**: Pełne definicje typów dla wszystkich encji w systemie: Pliki, Foldery, Udostępnienia (Share Links), Upload (w tym Multipart), Magazyn (Main Storage), Usługi (Services), Role Użytkowników oraz Audyty (Audit Logs).
10
- - **UnisourceClient**: Silnie typowany klient HTTP służący do bezpiecznej komunikacji z API z uwzględnieniem identyfikacji usługi (`X-Service-ID`) oraz autoryzacji (JWT/API Key).
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
- ## Użycie (Usage)
28
+ ## Co zawiera pakiet
15
29
 
16
- Przykład konfiguracji i pobrania listy plików przypisanych do użytkownika przy wykorzystaniu instancji klienta:
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 () => 'twoj-token-jwt-lub-api-key', // Zwróć null dla zapytań publicznych
44
+ getToken: async () => 'jwt-or-api-key',
26
45
  });
27
46
 
28
- // 2. Zapytanie API (np. lista plików z paginacją)
29
- const files = await client.myFiles.list({ folder_id: null, limit: 25 });
47
+ const files = await client.myFiles.list({
48
+ folder_id: null,
49
+ limit: 25,
50
+ });
30
51
  ```
31
52
 
32
- ### Obsługa udostępnień publicznych
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
- // Pobranie metadanych udostępnionego pliku na podstawie slug'a
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
- // Odblokowanie dostępu do pliku chronionego hasłem
42
- const unlocked = await unlockPublicFile('https://api.example.com', 'moj-unikalny-slug', 'tajne-haslo123');
60
+ const unlocked = await unlockPublicFile(
61
+ 'https://api.example.com',
62
+ 'share-slug',
63
+ 'password'
64
+ );
43
65
  ```
44
66
 
45
- ## Rozwój lokalny (Development)
67
+ ## API v2 beta
46
68
 
47
- W ramach monorepo (narzędzie pnpm):
69
+ API v2 jest dostępne w wersjach `@unisource/sdk@beta`. Importuj je z osobnego entrypointu:
48
70
 
49
- ```bash
50
- # Instalacja wszystkich zależności (w roocie)
51
- pnpm install
71
+ ```ts
72
+ import { UnisourceV2Client } from '@unisource/sdk/v2';
52
73
 
53
- # Kompilacja SDK
54
- pnpm --filter @unisource/sdk build
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
- # Sprawdzanie typów
57
- pnpm --filter @unisource/sdk typecheck
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
- # Uruchomienie testów
60
- pnpm --filter @unisource/sdk test
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
- Pakiet może być linkowany lokalnie w ramach workspace, wystarczy w innym projekcie monorepo dodać zależność:
64
- `"@unisource/sdk": "workspace:*"`
97
+ ### Typy i schematy v2
65
98
 
66
- ## Wydawanie nowej wersji (Release Workflow)
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
- Pakiet `@unisource/sdk` jest pakietem publicznym na rejestrze NPM i korzysta z narzędzia [Changesets](https://github.com/changesets/changesets) do zarządzania wersjami.
111
+ V2 używa odpowiedzi stronicowanych w formacie:
69
112
 
70
- Aby opublikować nową wersję, wykonaj poniższe kroki z głównego katalogu (root) monorepo:
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
- ```bash
73
- # 1. Dodaj plik z opisem zmian (wybierz paczkę, typ bumpa i napisz komentarz)
74
- pnpm changeset
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
- # 2. Zatwierdź nową wersję na podstawie plików changeset (aktualizacja package.json oraz CHANGELOG.md)
77
- pnpm changeset version
144
+ Repozytorium używa pnpm workspaces.
78
145
 
79
- # 3. Zbuduj SDK by upewnić się, że kod wynikowy jest poprawny
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
- # 4. Sprawdź przed publikacją
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
- # 5. Opublikuj na rejestr NPM
86
- pnpm changeset publish
155
+ ```json
156
+ {
157
+ "dependencies": {
158
+ "@unisource/sdk": "workspace:*"
159
+ }
160
+ }
87
161
  ```
88
- Pamiętaj o dodaniu nowo powstałych tagów i commitów do głównego repozytorium po opublikowaniu paczki.
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
@@ -2,7 +2,7 @@
2
2
  "name": "@unisource/sdk",
3
3
  "private": false,
4
4
  "type": "module",
5
- "version": "1.1.0-beta.0",
5
+ "version": "1.1.0-beta.1",
6
6
  "description": "Wspolne kontrakty danych dla backendu i frontendu UniSource.",
7
7
  "license": "MIT",
8
8
  "publishConfig": {