@mojaksebastian/allegro-client 1.1.0 → 1.2.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 CHANGED
@@ -31,7 +31,12 @@ const config = {
31
31
  clientId: process.env.ALLEGRO_CLIENT_ID,
32
32
  clientSecret: process.env.ALLEGRO_CLIENT_SECRET,
33
33
  },
34
- strategy: "DeviceFlow",
34
+ userAgent: { // NAGŁÓWEK USER AGENT WYMAGANY PRZEZ ALLEGRO DO KOŃCA CZERWCA 2026 !!!
35
+ name: "AllegroClient", // nazwa aplikacji
36
+ version: "1.0.0", // wersja (w formie x.x.x / x.x / x)
37
+ url: "https://github.com/mojaksebastian/allegro-client", // należy podać URL do strony projektu
38
+ }
39
+ strategy: "DeviceFlow", // Na razie tylko DeviceFlow
35
40
  env: "sandbox", // Opcje: "production" | "sandbox"
36
41
  };
37
42
 
@@ -95,24 +100,26 @@ const allegro = new AllegroClient({
95
100
  ### Interfejs konfiguracji (IAllegroClientConfig)
96
101
 
97
102
  | Właściwość | Typ | Wymagane | Opis |
98
- | :------------ | :-------------------------- | :------: | :--------------------------------------------------------------------- |
99
- | `credentials` | `IAuthCredentials` | Tak | Obiekt zawierający `clientId` oraz `clientSecret`. |
100
- | `strategy` | `TStrategy` | Tak | Wybrana strategia autoryzacji (np. `"DeviceFlow"`). |
101
- | `env` | `"production" \| "sandbox"` | Nie | Środowisko Allegro (Domyślnie: `"production"`). |
102
- | `storage` | `ITokenStorage` | Nie | Instancja klasy zarządzającej zapisem (Domyślnie: `FileTokenStorage`). |
103
+ | :------------ | :-------------------------- | :------- | :--------------------------------------------------------------------- |
104
+ | `credentials` | `IAuthCredentials` | Tak | Obiekt zawierający `clientId` oraz `clientSecret`. |
105
+ | `userAgent` | `IUserAgent` | Tak | Obiekt z metadanymi aplikacji (wymagany nagłówek User-Agent). |
106
+ | `strategy` | `TStrategy` | Tak | Wybrana strategia autoryzacji (np. `"DeviceFlow"`). |
107
+ | `env` | `"production" \| "sandbox"` | Nie | Środowisko Allegro (Domyślnie: `"production"`). |
108
+ | `storage` | `ITokenStorage` | Nie | Instancja klasy zarządzającej zapisem (Domyślnie: `FileTokenStorage`). |
103
109
 
104
110
  ### Metody klasy AllegroClient
105
111
 
106
- * **getAccessToken(): Promise<string>** – Zwraca aktywny token dostępowy. Jeśli token wygasł lub nie istnieje, inicjuje proces odświeżania lub autoryzacji.
112
+ - **getAccessToken(): Promise<string>** – Zwraca aktywny token dostępowy. Jeśli token wygasł lub nie istnieje, inicjuje proces odświeżania lub autoryzacji.
113
+
114
+ - **clearTokens(): Promise<void>** – Usuwa token zapisany w pamięci klienta.
107
115
 
108
- * **clearSession(): Promise<void>** – Usuwa dane sesyjne z przypisanego magazynu.
116
+ - **send(path: string, options: RequestInit): Promise<void>** – Metoda pomocnicza do wysyłania żądań HTTP do API Allegro. Automatycznie uwzględnia nagłówki Authorization oraz User-Agent.
109
117
 
110
118
  ## Rozwój projektu
111
119
 
112
120
  Biblioteka wymaga Node.js w wersji 20.x lub wyższej.
113
121
 
114
122
  ```bash
115
-
116
123
  # Kompilacja kodu źródłowego (TypeScript -> JavaScript)
117
124
  npm run build
118
125
 
@@ -1,10 +1,8 @@
1
1
  import type { ITokenStorage, IAllegroTokens } from "../types.js";
2
2
  import { TEnv } from "../../client/types.js";
3
3
  export declare class FileTokenStorage implements ITokenStorage {
4
- private readonly fileName;
5
- private readonly devFileName;
6
4
  private readonly filePath;
7
- constructor(env: TEnv, customPath?: string);
5
+ constructor(env: TEnv, clientId: string);
8
6
  save(tokens: IAllegroTokens): Promise<void>;
9
7
  read(): Promise<IAllegroTokens | null>;
10
8
  clear(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"TokenStorage.d.ts","sourceRoot":"","sources":["../../../src/auth/helpers/TokenStorage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAE7C,qBAAa,gBAAiB,YAAW,aAAa;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACjD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4B;IACxD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,MAAM;IAWpC,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3C,IAAI,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAUtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7B"}
1
+ {"version":3,"file":"TokenStorage.d.ts","sourceRoot":"","sources":["../../../src/auth/helpers/TokenStorage.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAE7C,qBAAa,gBAAiB,YAAW,aAAa;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAEtB,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM;IAmBjC,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3C,IAAI,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAUtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7B"}
@@ -1,20 +1,27 @@
1
1
  import { writeFile, readFile, unlink } from "node:fs/promises";
2
+ import { existsSync, mkdirSync } from "node:fs";
2
3
  import { join } from "node:path";
4
+ import { homedir } from "node:os";
5
+ import { createHash } from "node:crypto";
3
6
  export class FileTokenStorage {
4
- fileName = ".allegro_sessionon";
5
- devFileName = ".allegro_sessionon_dev";
6
7
  filePath;
7
- constructor(env, customPath) {
8
- // Domyślnie zapisujemy w folderze głównym projektu
9
- this.filePath = customPath
10
- ? join(customPath, env === "sandbox" ? this.devFileName : this.fileName)
11
- : join(process.cwd(), env === "sandbox" ? this.devFileName : this.fileName);
12
- console.log(`env: ${env}, filepath: ${this.filePath}`);
8
+ constructor(env, clientId) {
9
+ // Generowanie hasha dla każdej instancji oraz production/sandbox
10
+ const clientHash = createHash("sha256")
11
+ .update(`${clientId}-${env}`)
12
+ .digest("hex")
13
+ .substring(0, 8);
14
+ const fileName = `session-${env}-${clientHash}.json`;
15
+ // Domyślnie używanie ukrytego folderu w /home użytkownika systemu
16
+ const homeConfigDir = join(homedir(), ".allegro-client");
17
+ this.filePath = join(homeConfigDir, fileName);
18
+ if (!existsSync(homeConfigDir)) {
19
+ mkdirSync(homeConfigDir, { recursive: true });
20
+ }
13
21
  }
14
22
  async save(tokens) {
15
23
  try {
16
24
  const data = JSON.stringify(tokens, null, 2);
17
- console.log(data);
18
25
  await writeFile(this.filePath, data, "utf-8");
19
26
  }
20
27
  catch (error) {
@@ -27,7 +34,7 @@ export class FileTokenStorage {
27
34
  return JSON.parse(data);
28
35
  }
29
36
  catch (error) {
30
- // Jeśli plik nie istnieje, po prostu zwracamy null
37
+ // Jeśli plik nie istnieje, zwrócenie null
31
38
  return null;
32
39
  }
33
40
  }
@@ -36,7 +43,7 @@ export class FileTokenStorage {
36
43
  await unlink(this.filePath);
37
44
  }
38
45
  catch (error) {
39
- // Ignorujemy błąd, jeśli plik już nie istnieje
46
+ // Ignorowanie błędu, jeśli plik już nie istnieje
40
47
  }
41
48
  }
42
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TokenStorage.js","sourceRoot":"","sources":["../../../src/auth/helpers/TokenStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,OAAO,gBAAgB;IACV,QAAQ,GAAG,oBAAoB,CAAC;IAChC,WAAW,GAAG,wBAAwB,CAAC;IACvC,QAAQ,CAAS;IAElC,YAAY,GAAS,EAAE,UAAmB;QACxC,mDAAmD;QACnD,IAAI,CAAC,QAAQ,GAAG,UAAU;YACxB,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;YACxE,CAAC,CAAC,IAAI,CACF,OAAO,CAAC,GAAG,EAAE,EACb,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CACrD,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,eAAe,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAsB;QAC/B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,kCAAkC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAC7F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAmB,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,mDAAmD;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,+CAA+C;QACjD,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"TokenStorage.js","sourceRoot":"","sources":["../../../src/auth/helpers/TokenStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,MAAM,OAAO,gBAAgB;IACV,QAAQ,CAAS;IAElC,YAAY,GAAS,EAAE,QAAgB;QACrC,iEAAiE;QACjE,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC;aACpC,MAAM,CAAC,GAAG,QAAQ,IAAI,GAAG,EAAE,CAAC;aAC5B,MAAM,CAAC,KAAK,CAAC;aACb,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEnB,MAAM,QAAQ,GAAG,WAAW,GAAG,IAAI,UAAU,OAAO,CAAC;QAErD,kEAAkE;QAClE,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,iBAAiB,CAAC,CAAC;QAEzD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAE9C,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC/B,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAsB;QAC/B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC7C,MAAM,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,kCAAkC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAC7F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAmB,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,0CAA0C;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iDAAiD;QACnD,CAAC;IACH,CAAC;CACF"}
@@ -4,10 +4,12 @@ export declare class AllegroAuth implements IAuthConfig {
4
4
  private strategy;
5
5
  private storage;
6
6
  private credentials;
7
+ private userAgent;
7
8
  private readonly tokenUrl;
8
9
  private readonly authUrl;
9
- constructor(baseUrl: URL, strategy: IAuthStrategy, storage: ITokenStorage, credentials: IAuthCredentials);
10
+ constructor(baseUrl: URL, strategy: IAuthStrategy, storage: ITokenStorage, credentials: IAuthCredentials, userAgent: string);
11
+ authorize(): Promise<string>;
10
12
  getToken(): Promise<string>;
11
- clearToken(): Promise<void>;
13
+ clearTokens(): Promise<void>;
12
14
  }
13
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,WAAW,EACZ,MAAM,YAAY,CAAC;AAGpB,qBAAa,WAAY,YAAW,WAAW;IAK3C,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,WAAW;IAPrB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAM;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAM;gBAGpB,OAAO,EAAE,GAAG,EACZ,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,gBAAgB;IAMjC,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IA0C3B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAGlC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,WAAW,EACZ,MAAM,YAAY,CAAC;AAIpB,qBAAa,WAAY,YAAW,WAAW;IAK3C,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,SAAS;IARnB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAM;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAM;gBAGpB,OAAO,EAAE,GAAG,EACZ,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,gBAAgB,EAC7B,SAAS,EAAE,MAAM;IAMrB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAU5B,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAiC3B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CAGnC"}
@@ -4,47 +4,49 @@ export class AllegroAuth {
4
4
  strategy;
5
5
  storage;
6
6
  credentials;
7
+ userAgent;
7
8
  tokenUrl;
8
9
  authUrl;
9
- constructor(baseUrl, strategy, storage, credentials) {
10
+ constructor(baseUrl, strategy, storage, credentials, userAgent) {
10
11
  this.baseUrl = baseUrl;
11
12
  this.strategy = strategy;
12
13
  this.storage = storage;
13
14
  this.credentials = credentials;
14
- this.authUrl = new URL(`${this.baseUrl}auth/oauth`);
15
- this.tokenUrl = new URL(`${this.baseUrl}auth/oauth/token`);
15
+ this.userAgent = userAgent;
16
+ this.authUrl = new URL("auth/oauth/device", this.baseUrl);
17
+ this.tokenUrl = new URL("auth/oauth/token", this.baseUrl);
18
+ }
19
+ async authorize() {
20
+ const tokens = await this.strategy.authorize(this.authUrl, this.credentials, this.userAgent);
21
+ await this.storage.save(tokens);
22
+ return tokens.accessToken;
16
23
  }
17
24
  async getToken() {
18
25
  let tokens = await this.storage.read();
19
26
  // Brak jakichkolwiek tokenów
20
27
  if (!tokens) {
21
- console.log("[Auth] Brak tokenów w magazynie. Inicjuję pełną autoryzację...");
22
- tokens = await this.strategy.authorize(this.authUrl, this.credentials);
23
- await this.storage.save(tokens);
24
- return tokens.accessToken;
28
+ const accessToken = await this.authorize();
29
+ return accessToken;
25
30
  }
26
31
  // Sprawdzenie ważności
27
32
  // Jeśli obecny czas + 5 min jest większy niż czas wygaśnięcia, odświeżanie
28
33
  const safetyMargin = 5 * 60 * 1000;
29
34
  const isExpired = Date.now() + safetyMargin >= tokens.expiresAt;
30
35
  if (isExpired) {
31
- console.log("[Auth] Token wygasł lub zaraz wygaśnie. Odświeżam...");
32
36
  try {
33
37
  const newTokens = await refresh(this.tokenUrl, this.credentials, tokens.refreshToken);
34
38
  await this.storage.save(newTokens);
35
39
  return newTokens.accessToken;
36
40
  }
37
41
  catch (error) {
38
- console.error("[Auth] Odświeżanie nieudane:", error);
39
- // Jeśli refresh token wygasł (np. po 3 miesiącach), ponowna autoryzacja
40
- await this.clearToken();
41
- throw new Error("Sesja wygasła. Wymagana ponowna autoryzacja użytkownika.");
42
+ await this.storage.clear();
43
+ return this.authorize();
42
44
  }
43
45
  }
44
46
  // Token jest nadal ważny
45
47
  return tokens.accessToken;
46
48
  }
47
- async clearToken() {
49
+ async clearTokens() {
48
50
  await this.storage.clear();
49
51
  }
50
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAErD,MAAM,OAAO,WAAW;IAKZ;IACA;IACA;IACA;IAPO,QAAQ,CAAM;IACd,OAAO,CAAM;IAE9B,YACU,OAAY,EACZ,QAAuB,EACvB,OAAsB,EACtB,WAA6B;QAH7B,YAAO,GAAP,OAAO,CAAK;QACZ,aAAQ,GAAR,QAAQ,CAAe;QACvB,YAAO,GAAP,OAAO,CAAe;QACtB,gBAAW,GAAX,WAAW,CAAkB;QAErC,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,YAAY,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,kBAAkB,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAEvC,6BAA6B;QAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CACT,gEAAgE,CACjE,CAAC;YACF,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACvE,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChC,OAAO,MAAM,CAAC,WAAW,CAAC;QAC5B,CAAC;QAED,uBAAuB;QACvB,2EAA2E;QAC3E,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,IAAI,MAAM,CAAC,SAAS,CAAC;QAEhE,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;YACpE,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,OAAO,CAC7B,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,WAAW,EAChB,MAAM,CAAC,YAAY,CACpB,CAAC;gBACF,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACnC,OAAO,SAAS,CAAC,WAAW,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;gBACrD,wEAAwE;gBACxE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D,CAAC;YACJ,CAAC;QACH,CAAC;QAED,yBAAyB;QACzB,OAAO,MAAM,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAGrD,MAAM,OAAO,WAAW;IAKZ;IACA;IACA;IACA;IACA;IARO,QAAQ,CAAM;IACd,OAAO,CAAM;IAE9B,YACU,OAAY,EACZ,QAAuB,EACvB,OAAsB,EACtB,WAA6B,EAC7B,SAAiB;QAJjB,YAAO,GAAP,OAAO,CAAK;QACZ,aAAQ,GAAR,QAAQ,CAAe;QACvB,YAAO,GAAP,OAAO,CAAe;QACtB,gBAAW,GAAX,WAAW,CAAkB;QAC7B,cAAS,GAAT,SAAS,CAAQ;QAEzB,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAC1C,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,SAAS,CACf,CAAC;QACF,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChC,OAAO,MAAM,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAEvC,6BAA6B;QAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3C,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,uBAAuB;QACvB,2EAA2E;QAC3E,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,IAAI,MAAM,CAAC,SAAS,CAAC;QAEhE,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,OAAO,CAC7B,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,WAAW,EAChB,MAAM,CAAC,YAAY,CACpB,CAAC;gBACF,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACnC,OAAO,SAAS,CAAC,WAAW,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC3B,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,yBAAyB;QACzB,OAAO,MAAM,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;CACF"}
@@ -1,5 +1,5 @@
1
1
  import type { IAuthStrategy, IAllegroTokens, IAuthCredentials } from "../types.js";
2
2
  export declare class DeviceFlow implements IAuthStrategy {
3
- authorize(authUrl: URL, credentials: IAuthCredentials): Promise<IAllegroTokens>;
3
+ authorize(authUrl: URL, credentials: IAuthCredentials, userAgent: string): Promise<IAllegroTokens>;
4
4
  }
5
5
  //# sourceMappingURL=DeviceFlow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceFlow.d.ts","sourceRoot":"","sources":["../../../src/auth/strategies/DeviceFlow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,gBAAgB,EAGjB,MAAM,aAAa,CAAC;AAErB,qBAAa,UAAW,YAAW,aAAa;IACxC,SAAS,CACb,OAAO,EAAE,GAAG,EACZ,WAAW,EAAE,gBAAgB,GAC5B,OAAO,CAAC,cAAc,CAAC;CAyF3B"}
1
+ {"version":3,"file":"DeviceFlow.d.ts","sourceRoot":"","sources":["../../../src/auth/strategies/DeviceFlow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,gBAAgB,EAGjB,MAAM,aAAa,CAAC;AAErB,qBAAa,UAAW,YAAW,aAAa;IACxC,SAAS,CACb,OAAO,EAAE,GAAG,EACZ,WAAW,EAAE,gBAAgB,EAC7B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,CAAC;CAoF3B"}
@@ -1,14 +1,14 @@
1
1
  export class DeviceFlow {
2
- async authorize(authUrl, credentials) {
2
+ async authorize(authUrl, credentials, userAgent) {
3
3
  const { clientId, clientSecret } = credentials;
4
4
  const basicAuth = Buffer.from(`${clientId}:${clientSecret}`).toString("base64");
5
- // KROK 1: Pobranie device_code
6
- console.log(`[DeviceFlow] Requesting device code from ${authUrl}/device`);
5
+ // Pobieranie deviceCode
7
6
  const deviceResponse = await fetch(`${authUrl}/device?client_id=${clientId}`, {
8
7
  method: "POST",
9
8
  headers: {
10
9
  Authorization: `Basic ${basicAuth}`,
11
10
  "Content-Type": "application/x-www-form-urlencoded",
11
+ "User-Agent": userAgent,
12
12
  },
13
13
  });
14
14
  if (!deviceResponse.ok) {
@@ -23,7 +23,6 @@ export class DeviceFlow {
23
23
  // KROK 2: Polling (odpytywanie o token)
24
24
  return new Promise((resolve, reject) => {
25
25
  const intervalMs = deviceData.interval * 1000;
26
- console.log(`[DeviceFlow] Starting polling for token every ${deviceData.interval}s...`);
27
26
  const poll = setInterval(async () => {
28
27
  try {
29
28
  const tokenResponse = await fetch(`${authUrl}/token`, {
@@ -31,6 +30,7 @@ export class DeviceFlow {
31
30
  headers: {
32
31
  Authorization: `Basic ${basicAuth}`,
33
32
  "Content-Type": "application/x-www-form-urlencoded",
33
+ "User-Agent": userAgent,
34
34
  },
35
35
  body: new URLSearchParams({
36
36
  grant_type: "urn:ietf:params:oauth:grant-type:device_code",
@@ -39,7 +39,6 @@ export class DeviceFlow {
39
39
  });
40
40
  const data = (await tokenResponse.json());
41
41
  if (tokenResponse.ok) {
42
- console.log(`[DeviceFlow] Access token successfully acquired!`);
43
42
  clearInterval(poll);
44
43
  resolve({
45
44
  accessToken: data.access_token,
@@ -57,7 +56,7 @@ export class DeviceFlow {
57
56
  clearInterval(poll);
58
57
  reject(new Error("Niepoprawny, wygasły lub zużyty device_code."));
59
58
  }
60
- // Inne błędy (np. authorization_pending) ignorujemy i czekamy dalej
59
+ // Inne błędy (np. authorization_pending) ignorować i czekać dalej
61
60
  }
62
61
  }
63
62
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceFlow.js","sourceRoot":"","sources":["../../../src/auth/strategies/DeviceFlow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DeviceFlow.js","sourceRoot":"","sources":["../../../src/auth/strategies/DeviceFlow.ts"],"names":[],"mappings":"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"}
@@ -43,11 +43,11 @@ export interface ITokenStorage {
43
43
  clear(): Promise<void>;
44
44
  }
45
45
  export interface IAuthStrategy {
46
- authorize(authUrl: URL, credentials: IAuthCredentials): Promise<IAllegroTokens>;
46
+ authorize(authUrl: URL, credentials: IAuthCredentials, userAgent: string): Promise<IAllegroTokens>;
47
47
  }
48
48
  export interface IAuthConfig {
49
49
  getToken(): Promise<string>;
50
- clearToken(): Promise<void>;
50
+ clearTokens(): Promise<void>;
51
51
  }
52
52
  export interface IRefreshTokensParameters {
53
53
  refresh(refreshUrl: URL, credentials: IAuthCredentials, refreshToken: string): Promise<IAllegroTokens>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,YAAY,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,yBAAyB,EAAE,MAAM,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,CACP,OAAO,EAAE,GAAG,EACZ,WAAW,EAAE,gBAAgB,GAC5B,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,CACL,UAAU,EAAE,GAAG,EACf,WAAW,EAAE,gBAAgB,EAC7B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,YAAY,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,yBAAyB,EAAE,MAAM,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,CACP,OAAO,EAAE,GAAG,EACZ,WAAW,EAAE,gBAAgB,EAC7B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,CACL,UAAU,EAAE,GAAG,EACf,WAAW,EAAE,gBAAgB,EAC7B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5B"}
@@ -1,11 +1,26 @@
1
- import { IAllegroClientConfig } from "./types.js";
2
- export declare class AllegroClient {
1
+ import { IAllegroClient, IAllegroClientConfig } from "./types.js";
2
+ export declare class AllegroClient implements IAllegroClient {
3
3
  private auth;
4
+ private baseUrl;
5
+ private userAgent;
4
6
  constructor(config: IAllegroClientConfig);
5
7
  /**
6
8
  * Metoda pomocnicza do ręcznego wywołania autoryzacji
7
9
  * lub po prostu pobrania aktualnego tokena.
8
10
  */
9
11
  getAccessToken(): Promise<string>;
12
+ /**
13
+ * Usuwa zapisane tokeny z magazynu (wylogowanie).
14
+ */
15
+ clearTokens(): Promise<void>;
16
+ /**
17
+ * Wykonuje autoryzowane zapytanie do API Allegro.
18
+ * Automatycznie dołącza token Bearer oraz User-Agent.
19
+ *
20
+ * @param path Ścieżka endpointu (np. '/sale/offers')
21
+ * @param options Opcje fetch (metoda, body, dodatkowe nagłówki)
22
+ * @returns Sparsowany wynik typu T
23
+ */
24
+ send<T>(path: string, options?: RequestInit): Promise<T>;
10
25
  }
11
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAKlD,qBAAa,aAAa;IACxB,OAAO,CAAC,IAAI,CAAc;gBAEd,MAAM,EAAE,oBAAoB;IAgCxC;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;CAGxC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAKlE,qBAAa,aAAc,YAAW,cAAc;IAClD,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,oBAAoB;IAqCxC;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIvC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlC;;;;;;;OAOG;IACG,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,CAAC,CAAC;CAmBnE"}
@@ -5,13 +5,16 @@ const baseUrl = new URL("https://allegro.pl");
5
5
  const devBaseUrl = new URL("https://allegro.pl.allegrosandbox.pl");
6
6
  export class AllegroClient {
7
7
  auth;
8
+ baseUrl;
9
+ userAgent;
8
10
  constructor(config) {
9
11
  console.log("Inicjalizacja AllegroClient...");
10
12
  const { env = "production", // Domyślnie production, jeśli nie podano
11
- credentials, strategy, storage, } = config;
12
- const authBaseUrl = env === "sandbox" ? devBaseUrl : baseUrl;
13
+ credentials, strategy, storage, userAgent, } = config;
14
+ this.baseUrl = env === "sandbox" ? devBaseUrl : baseUrl;
15
+ this.userAgent = `${userAgent.name}/${userAgent.version} (+${userAgent.url})`;
13
16
  // Inicjalizacja Storage (wbudowany/użytkownika)
14
- const tokenStorage = storage ?? new FileTokenStorage(env);
17
+ const tokenStorage = storage ?? new FileTokenStorage(env, credentials.clientId);
15
18
  // Wybór strategii
16
19
  console.log("Strategia autoryzacji: " + strategy);
17
20
  let strategyInstance;
@@ -21,7 +24,7 @@ export class AllegroClient {
21
24
  strategyInstance = new DeviceFlow();
22
25
  }
23
26
  // Zarządca autoryzacji
24
- this.auth = new AllegroAuth(authBaseUrl, strategyInstance, tokenStorage, credentials);
27
+ this.auth = new AllegroAuth(this.baseUrl, strategyInstance, tokenStorage, credentials, this.userAgent);
25
28
  }
26
29
  /**
27
30
  * Metoda pomocnicza do ręcznego wywołania autoryzacji
@@ -30,5 +33,35 @@ export class AllegroClient {
30
33
  async getAccessToken() {
31
34
  return await this.auth.getToken();
32
35
  }
36
+ /**
37
+ * Usuwa zapisane tokeny z magazynu (wylogowanie).
38
+ */
39
+ async clearTokens() {
40
+ await this.auth.clearTokens();
41
+ }
42
+ /**
43
+ * Wykonuje autoryzowane zapytanie do API Allegro.
44
+ * Automatycznie dołącza token Bearer oraz User-Agent.
45
+ *
46
+ * @param path Ścieżka endpointu (np. '/sale/offers')
47
+ * @param options Opcje fetch (metoda, body, dodatkowe nagłówki)
48
+ * @returns Sparsowany wynik typu T
49
+ */
50
+ async send(path, options = {}) {
51
+ const token = await this.getAccessToken();
52
+ const url = new URL(path, this.baseUrl);
53
+ const response = await fetch(url.toString(), {
54
+ ...options,
55
+ headers: {
56
+ ...options.headers,
57
+ Authorization: `Bearer ${token}`,
58
+ "User-Agent": this.userAgent,
59
+ },
60
+ });
61
+ if (!response.ok) {
62
+ throw new Error(`Allegro API error: ${response.statusText}`);
63
+ }
64
+ return (await response.json());
65
+ }
33
66
  }
34
67
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAGnE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAC9C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,sCAAsC,CAAC,CAAC;AAEnE,MAAM,OAAO,aAAa;IAChB,IAAI,CAAc;IAE1B,YAAY,MAA4B;QACtC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,MAAM,EACJ,GAAG,GAAG,YAAY,EAAE,yCAAyC;QAC7D,WAAW,EACX,QAAQ,EACR,OAAO,GACR,GAAG,MAAM,CAAC;QACX,MAAM,WAAW,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;QAE7D,gDAAgD;QAChD,MAAM,YAAY,GAAG,OAAO,IAAI,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAE1D,kBAAkB;QAClB,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,QAAQ,CAAC,CAAC;QAElD,IAAI,gBAAgB,CAAC;QACrB,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,YAAY;gBACf,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;gBAC5C,gBAAgB,GAAG,IAAI,UAAU,EAAE,CAAC;QACxC,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,WAAW,CACzB,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,WAAW,CACZ,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc;QAClB,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAGnE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAC9C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,sCAAsC,CAAC,CAAC;AAEnE,MAAM,OAAO,aAAa;IAChB,IAAI,CAAc;IAClB,OAAO,CAAM;IACb,SAAS,CAAS;IAE1B,YAAY,MAA4B;QACtC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,MAAM,EACJ,GAAG,GAAG,YAAY,EAAE,yCAAyC;QAC7D,WAAW,EACX,QAAQ,EACR,OAAO,EACP,SAAS,GACV,GAAG,MAA8B,CAAC;QAEnC,IAAI,CAAC,OAAO,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;QACxD,IAAI,CAAC,SAAS,GAAG,GAAG,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,OAAO,MAAM,SAAS,CAAC,GAAG,GAAG,CAAC;QAE9E,gDAAgD;QAChD,MAAM,YAAY,GAChB,OAAO,IAAI,IAAI,gBAAgB,CAAC,GAAG,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;QAE7D,kBAAkB;QAClB,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,QAAQ,CAAC,CAAC;QAElD,IAAI,gBAAgB,CAAC;QACrB,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,YAAY;gBACf,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;gBAC5C,gBAAgB,GAAG,IAAI,UAAU,EAAE,CAAC;QACxC,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,WAAW,CACzB,IAAI,CAAC,OAAO,EACZ,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc;QAClB,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAChC,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,IAAI,CAAI,IAAY,EAAE,UAAuB,EAAE;QACnD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAExC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;YAC3C,GAAG,OAAO;YACV,OAAO,EAAE;gBACP,GAAG,OAAO,CAAC,OAAO;gBAClB,aAAa,EAAE,UAAU,KAAK,EAAE;gBAChC,YAAY,EAAE,IAAI,CAAC,SAAS;aAC7B;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;IACtC,CAAC;CACF"}
@@ -3,10 +3,22 @@ import type { IAuthCredentials, ITokenStorage, Tstrategy } from "../auth/types.j
3
3
  * Client Configuration Types
4
4
  */
5
5
  export type TEnv = "production" | "sandbox";
6
+ export type TVersion = `${number}.${number}.${number}` | `${number}.${number}` | number;
7
+ export interface IUserAgent {
8
+ name: string;
9
+ version: TVersion;
10
+ url: `http://${string}` | `https://${string}` | URL;
11
+ }
12
+ export interface IAllegroClient {
13
+ getAccessToken(): Promise<string>;
14
+ clearTokens(): Promise<void>;
15
+ send<T>(path: string, options?: RequestInit): Promise<T>;
16
+ }
6
17
  export interface IAllegroClientConfig {
7
- credentials: IAuthCredentials;
8
18
  env?: TEnv;
9
- storage?: ITokenStorage;
19
+ credentials: IAuthCredentials;
10
20
  strategy: Tstrategy;
21
+ storage?: ITokenStorage;
22
+ userAgent: IUserAgent;
11
23
  }
12
24
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,SAAS,EACV,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,MAAM,IAAI,GAAG,YAAY,GAAG,SAAS,CAAC;AAE5C,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,SAAS,CAAC;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,SAAS,EACV,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,MAAM,IAAI,GAAG,YAAY,GAAG,SAAS,CAAC;AAE5C,MAAM,MAAM,QAAQ,GAChB,GAAG,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE,GAC/B,GAAG,MAAM,IAAI,MAAM,EAAE,GACrB,MAAM,CAAC;AAEX,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,QAAQ,CAAC;IAClB,GAAG,EAAE,UAAU,MAAM,EAAE,GAAG,WAAW,MAAM,EAAE,GAAG,GAAG,CAAC;CACrD;AAED,MAAM,WAAW,cAAc;IAC7B,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,WAAW,EAAE,gBAAgB,CAAC;IAC9B,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,SAAS,EAAE,UAAU,CAAC;CACvB"}
package/package.json CHANGED
@@ -1,9 +1,13 @@
1
1
  {
2
2
  "name": "@mojaksebastian/allegro-client",
3
- "version": "1.1.0",
3
+ "version": "1.2.1",
4
4
  "description": "Klient Allegro REST API z automatycznym odświeżaniem tokenów. Pobiera tokeny z Allegro i udostępnia je użytkownikowi. Obsługuje zarówno środowisko produkcyjne, jak i sandbox.",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/mojaksebastian/allegro-client"
10
+ },
7
11
  "exports": {
8
12
  ".": {
9
13
  "types": "./dist/index.d.ts",
@@ -16,9 +20,6 @@
16
20
  ],
17
21
  "scripts": {
18
22
  "build": "rm -rf dist && tsc",
19
- "test": "node dist/test.js",
20
- "start": "node dist/server.js",
21
- "dev": "node --loader ts-node/esm src/server.ts",
22
23
  "prepublishOnly": "npm run build"
23
24
  },
24
25
  "keywords": [
@@ -30,7 +31,6 @@
30
31
  "license": "MIT",
31
32
  "devDependencies": {
32
33
  "@types/node": "^20.11.0",
33
- "ts-node": "^10.9.2",
34
34
  "typescript": "^5.4.0"
35
35
  }
36
36
  }