@profplum700/etsy-v3-api-client 3.0.1 → 4.1.0
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/CHANGELOG.md +20 -0
- package/README.md +43 -11
- package/dist/browser.esm.js +508 -124
- package/dist/browser.esm.js.map +1 -1
- package/dist/browser.umd.js +1 -1
- package/dist/browser.umd.js.map +1 -1
- package/dist/index.cjs +508 -124
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +54 -18
- package/dist/index.esm.js +508 -124
- package/dist/index.esm.js.map +1 -1
- package/dist/node.cjs +508 -124
- package/dist/node.cjs.map +1 -1
- package/dist/node.esm.js +508 -124
- package/dist/node.esm.js.map +1 -1
- package/package.json +52 -46
- package/dist/.tsbuildinfo +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,9 @@ interface EtsyClientConfig {
|
|
|
4
4
|
accessToken: string;
|
|
5
5
|
refreshToken: string;
|
|
6
6
|
expiresAt: Date;
|
|
7
|
-
refreshSave?:
|
|
7
|
+
refreshSave?: TokenRefreshCallback;
|
|
8
|
+
refreshSaveAsync?: TokenRefreshCallbackAsync;
|
|
9
|
+
refreshClearAsync?: TokenRefreshClearCallbackAsync;
|
|
8
10
|
baseUrl?: string;
|
|
9
11
|
rateLimiting?: {
|
|
10
12
|
enabled: boolean;
|
|
@@ -46,6 +48,8 @@ interface EtsyTokenResponse {
|
|
|
46
48
|
scope: string;
|
|
47
49
|
}
|
|
48
50
|
type TokenRefreshCallback = (_accessToken: string, _refreshToken: string, _expiresAt: Date) => void;
|
|
51
|
+
type TokenRefreshCallbackAsync = (_accessToken: string, _refreshToken: string, _expiresAt: Date) => void | Promise<void>;
|
|
52
|
+
type TokenRefreshClearCallbackAsync = () => void | Promise<void>;
|
|
49
53
|
type TokenRotationCallback = (oldTokens: EtsyTokens, newTokens: EtsyTokens) => void | Promise<void>;
|
|
50
54
|
interface TokenStorage {
|
|
51
55
|
save(_tokens: EtsyTokens): Promise<void>;
|
|
@@ -906,27 +910,25 @@ interface UpdateListingParams {
|
|
|
906
910
|
}
|
|
907
911
|
interface UpdateListingInventoryParams {
|
|
908
912
|
products: Array<{
|
|
909
|
-
sku?: string;
|
|
910
|
-
property_values
|
|
913
|
+
sku?: string | null;
|
|
914
|
+
property_values: Array<{
|
|
911
915
|
property_id: number;
|
|
912
916
|
property_name?: string;
|
|
913
|
-
scale_id?: number;
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
values?: string[];
|
|
917
|
+
scale_id?: number | null;
|
|
918
|
+
value_ids: number[];
|
|
919
|
+
values: string[];
|
|
917
920
|
}>;
|
|
918
921
|
offerings: Array<{
|
|
919
|
-
offering_id?: number;
|
|
920
922
|
price: number;
|
|
921
923
|
quantity: number;
|
|
922
924
|
is_enabled: boolean;
|
|
923
|
-
readiness_state_id
|
|
925
|
+
readiness_state_id: number | null;
|
|
924
926
|
}>;
|
|
925
927
|
}>;
|
|
926
928
|
price_on_property?: number[];
|
|
927
929
|
quantity_on_property?: number[];
|
|
928
930
|
sku_on_property?: number[];
|
|
929
|
-
readiness_state_on_property?: number[];
|
|
931
|
+
readiness_state_on_property?: number[] | null;
|
|
930
932
|
}
|
|
931
933
|
interface EtsyListingProperty {
|
|
932
934
|
property_id: number;
|
|
@@ -1333,10 +1335,13 @@ declare class EtsyClient {
|
|
|
1333
1335
|
private logger;
|
|
1334
1336
|
private cache?;
|
|
1335
1337
|
private cacheTtl;
|
|
1338
|
+
private rateLimitingEnabled;
|
|
1336
1339
|
private keystring;
|
|
1337
1340
|
private sharedSecret;
|
|
1338
1341
|
private bulkOperationManager;
|
|
1339
1342
|
constructor(config: EtsyClientConfig);
|
|
1343
|
+
private acquireRateLimitSlot;
|
|
1344
|
+
private fetchOnceWithRateLimit;
|
|
1340
1345
|
private makeRequest;
|
|
1341
1346
|
private executeWithRetry;
|
|
1342
1347
|
private sleep;
|
|
@@ -1369,6 +1374,7 @@ declare class EtsyClient {
|
|
|
1369
1374
|
deleteListing(listingId: string): Promise<void>;
|
|
1370
1375
|
updateListingInventory(listingId: string, params: UpdateListingInventoryParams, options?: {
|
|
1371
1376
|
legacy?: boolean;
|
|
1377
|
+
enableScaleValidation?: boolean;
|
|
1372
1378
|
}): Promise<EtsyListingInventory>;
|
|
1373
1379
|
uploadListingImage(shopId: string, listingId: string, imageData: Blob | Buffer, params?: {
|
|
1374
1380
|
rank?: number;
|
|
@@ -1546,14 +1552,22 @@ declare class MemoryTokenStorage implements TokenStorage {
|
|
|
1546
1552
|
declare class TokenManager {
|
|
1547
1553
|
private keystring;
|
|
1548
1554
|
private currentTokens;
|
|
1555
|
+
private pendingTokens?;
|
|
1549
1556
|
private refreshCallback?;
|
|
1557
|
+
private refreshClearRequired;
|
|
1550
1558
|
private storage?;
|
|
1559
|
+
private clearCallback?;
|
|
1560
|
+
private tokenMutationGeneration;
|
|
1551
1561
|
private refreshPromise?;
|
|
1552
1562
|
private rotationConfig?;
|
|
1553
1563
|
private rotationTimer?;
|
|
1554
1564
|
constructor(config: EtsyClientConfig, storage?: TokenStorage, rotationConfig?: TokenRotationConfig);
|
|
1555
1565
|
getAccessToken(): Promise<string>;
|
|
1556
1566
|
refreshToken(): Promise<EtsyTokens>;
|
|
1567
|
+
private throwIfSuperseded;
|
|
1568
|
+
private repairPersistenceToCurrentTokens;
|
|
1569
|
+
private persistRefreshedTokens;
|
|
1570
|
+
private retryPendingTokenPersistence;
|
|
1557
1571
|
private performTokenRefresh;
|
|
1558
1572
|
getCurrentTokens(): EtsyTokens | null;
|
|
1559
1573
|
updateTokens(tokens: EtsyTokens): void;
|
|
@@ -1606,8 +1620,8 @@ declare const ETSY_RATE_LIMITS: {
|
|
|
1606
1620
|
readonly MIN_REQUEST_INTERVAL: 200;
|
|
1607
1621
|
};
|
|
1608
1622
|
declare class EtsyRateLimiter {
|
|
1609
|
-
private
|
|
1610
|
-
private
|
|
1623
|
+
private requestTimestamps;
|
|
1624
|
+
private uncertainRequestTimestamps;
|
|
1611
1625
|
private lastRequestTime;
|
|
1612
1626
|
private readonly config;
|
|
1613
1627
|
private headerLimitPerSecond?;
|
|
@@ -1615,13 +1629,33 @@ declare class EtsyRateLimiter {
|
|
|
1615
1629
|
private headerLimitPerDay?;
|
|
1616
1630
|
private headerRemainingToday?;
|
|
1617
1631
|
private isHeaderBasedLimiting;
|
|
1632
|
+
private headerQuotaAvailableAt;
|
|
1633
|
+
private retryNotBefore;
|
|
1634
|
+
private quotaProbeBackoffMs;
|
|
1635
|
+
private nextReservationId;
|
|
1636
|
+
private latestHeaderReservationId;
|
|
1637
|
+
private inFlightReservations;
|
|
1638
|
+
private quotaProbeInFlight;
|
|
1639
|
+
private readonly stateWaiters;
|
|
1618
1640
|
private currentRetryCount;
|
|
1641
|
+
private reservationQueue;
|
|
1619
1642
|
constructor(config?: Partial<RateLimitConfig>);
|
|
1620
|
-
private
|
|
1621
|
-
|
|
1643
|
+
private pruneRequestTimestamps;
|
|
1644
|
+
private getLocalResetTime;
|
|
1645
|
+
private getLocalRemainingRequests;
|
|
1646
|
+
private getEffectiveRemainingRequests;
|
|
1647
|
+
private isQuotaProbeReady;
|
|
1648
|
+
private refreshExpiredHeaderQuota;
|
|
1649
|
+
private notifyStateWaiters;
|
|
1650
|
+
private scheduleQuotaProbe;
|
|
1651
|
+
private waitForStateChange;
|
|
1652
|
+
private finishReservation;
|
|
1653
|
+
acquireRequestSlot(): Promise<number>;
|
|
1654
|
+
releaseRequestSlot(reservationId: number): void;
|
|
1655
|
+
updateFromHeaders(headers: Headers | Record<string, string> | undefined | null, reservationId?: number): void;
|
|
1622
1656
|
private parseRateLimitHeaders;
|
|
1623
1657
|
private checkApproachingLimit;
|
|
1624
|
-
handleRateLimitResponse(headers: Headers | Record<string, string> | undefined | null): Promise<{
|
|
1658
|
+
handleRateLimitResponse(headers: Headers | Record<string, string> | undefined | null, reservationId?: number, retryAttempt?: number): Promise<{
|
|
1625
1659
|
shouldRetry: boolean;
|
|
1626
1660
|
delayMs: number;
|
|
1627
1661
|
}>;
|
|
@@ -1631,6 +1665,7 @@ declare class EtsyRateLimiter {
|
|
|
1631
1665
|
setWarningThreshold(threshold: number): void;
|
|
1632
1666
|
private getEffectiveMinInterval;
|
|
1633
1667
|
waitForRateLimit(): Promise<void>;
|
|
1668
|
+
waitForRateLimitWithReservation(): Promise<number>;
|
|
1634
1669
|
getRateLimitStatus(): RateLimitStatus;
|
|
1635
1670
|
getRemainingRequests(): number;
|
|
1636
1671
|
reset(): void;
|
|
@@ -1651,8 +1686,7 @@ declare class GlobalRequestQueue {
|
|
|
1651
1686
|
private queue;
|
|
1652
1687
|
private processing;
|
|
1653
1688
|
private rateLimits;
|
|
1654
|
-
private
|
|
1655
|
-
private dailyReset;
|
|
1689
|
+
private requestTimestamps;
|
|
1656
1690
|
private lastRequestTime;
|
|
1657
1691
|
private readonly maxRequestsPerDay;
|
|
1658
1692
|
private readonly maxRequestsPerSecond;
|
|
@@ -1671,7 +1705,9 @@ declare class GlobalRequestQueue {
|
|
|
1671
1705
|
private processQueue;
|
|
1672
1706
|
private waitForRateLimit;
|
|
1673
1707
|
private updateRateLimitInfo;
|
|
1674
|
-
private
|
|
1708
|
+
private pruneRequestTimestamps;
|
|
1709
|
+
private getNextRequestExpiry;
|
|
1710
|
+
private startRequest;
|
|
1675
1711
|
private generateId;
|
|
1676
1712
|
private delay;
|
|
1677
1713
|
}
|