@liforma/publisher 0.1.2 → 0.4.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/dist/http.js CHANGED
@@ -1,27 +1,10 @@
1
1
  import { isRetryableError, LiformaPublisherError, publisherErrorFromResponse } from './errors.js';
2
- async function sleep(ms, signal) {
3
- if (ms <= 0)
4
- return;
5
- await new Promise((resolve, reject) => {
6
- const timer = setTimeout(() => {
7
- signal?.removeEventListener('abort', onAbort);
8
- resolve();
9
- }, ms);
10
- const onAbort = () => {
11
- clearTimeout(timer);
12
- reject(signal?.reason ?? new DOMException('Aborted', 'AbortError'));
13
- };
14
- if (signal?.aborted) {
15
- onAbort();
16
- return;
17
- }
18
- signal?.addEventListener('abort', onAbort, { once: true });
19
- });
20
- }
2
+ import { exponentialDelayMs, retryAfterMs, sleep } from './retry.js';
3
+ import { PUBLISHER_SDK_VERSION } from './version.js';
21
4
  export async function publisherRequest(http, path, schema, options = {}) {
22
5
  const method = options.method ?? (options.body === undefined ? 'GET' : 'POST');
23
6
  const url = `${http.baseUrl}${path.startsWith('/') ? path : `/${path}`}`;
24
- const maxAttempts = options.retry ? 3 : 1;
7
+ const maxAttempts = options.retry ? http.retryPolicy.maxAttempts : 1;
25
8
  let lastError;
26
9
  for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
27
10
  options.signal?.throwIfAborted();
@@ -32,6 +15,7 @@ export async function publisherRequest(http, path, schema, options = {}) {
32
15
  headers: {
33
16
  authorization: `Bearer ${http.apiKey}`,
34
17
  accept: 'application/json',
18
+ 'liforma-publisher-version': PUBLISHER_SDK_VERSION,
35
19
  ...(options.body === undefined ? {} : { 'content-type': 'application/json' })
36
20
  },
37
21
  body: options.body === undefined ? undefined : JSON.stringify(options.body),
@@ -39,13 +23,14 @@ export async function publisherRequest(http, path, schema, options = {}) {
39
23
  });
40
24
  }
41
25
  catch (error) {
26
+ options.signal?.throwIfAborted();
42
27
  lastError = new LiformaPublisherError(error instanceof Error ? error.message : 'Network request failed.', {
43
28
  code: 'NETWORK_ERROR',
44
29
  retryable: true,
45
30
  cause: error
46
31
  });
47
32
  if (attempt < maxAttempts) {
48
- await sleep(100 * 2 ** (attempt - 1), options.signal);
33
+ await sleep(exponentialDelayMs(attempt, http.retryPolicy), options.signal);
49
34
  continue;
50
35
  }
51
36
  throw lastError;
@@ -54,8 +39,8 @@ export async function publisherRequest(http, path, schema, options = {}) {
54
39
  if (!response.ok) {
55
40
  lastError = publisherErrorFromResponse(response.status, text, response.headers);
56
41
  if (options.retry && isRetryableError(lastError) && attempt < maxAttempts) {
57
- const retryAfter = Number(response.headers.get('retry-after'));
58
- const delayMs = Number.isFinite(retryAfter) && retryAfter > 0 ? retryAfter * 1000 : 100 * 2 ** (attempt - 1);
42
+ const delayMs = retryAfterMs(response.headers.get('retry-after')) ??
43
+ exponentialDelayMs(attempt, http.retryPolicy);
59
44
  await sleep(delayMs, options.signal);
60
45
  continue;
61
46
  }
package/dist/http.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,11 @@
1
1
  export { createPublisher } from './createPublisher.js';
2
- export type { BackgroundMode, CreateCharacterInput, CreateClothesInput, CreateExperienceInput, CreateHairInput, CreateLocationInput, CreatePlaceInput, CreatePublisherOptions, Publisher, UpdateExperienceInput } from './createPublisher.js';
2
+ export type { BackgroundMode, CreateCharacterInput, CreateClothesInput, CreateExperienceInput, CreateHairInput, CreateLocationInput, CreatePlaceInput, CreatePublisherOptions, PollableCreateOptions, Publisher, UpdateCharacterInput, UpdateClothesInput, UpdateExperienceInput, UpdateHairInput, UpdatePlaceInput } from './createPublisher.js';
3
3
  export type { WaitOptions } from './jobs.js';
4
+ export type { RetryPolicy } from './retry.js';
4
5
  export type { ImageBytes } from './hash.js';
6
+ export { MAX_UPLOAD_BYTES } from './upload.js';
5
7
  export type { UploadedImage } from './upload.js';
6
8
  export { LiformaPublisherError, isRetryableError } from './errors.js';
7
- export type { AuthoringAvatar, AuthoringJob, CharacterResource, ClothesResource, CreatePublishResponse, ExperienceResource, HairResource, LocationResource, PlaceResource } from './schemas.js';
9
+ export { PERSONA_ETHNICITY_VALUES, PERSONA_GENDER_VALUES } from './schemas.js';
10
+ export type { Avatar, PersonaEthnicity, PersonaGender, AppearanceResourceStatus, PublishJob, PublishJobStatus, PublishResourceStatus, CharacterResource, ClothesResource, CreateClothesPublishResponse, CreateHairPublishResponse, CreateLocationPublishResponse, CreatePublishResponse, DeletedResource, ExperienceResource, ExperienceStatus, HairResource, LocationResource, LocationResourceStatus, PlaceResource } from './schemas.js';
8
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EACX,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,SAAS,EACT,qBAAqB,EACrB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACtE,YAAY,EACX,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EACX,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,EACrB,SAAS,EACT,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC/E,YAAY,EACX,MAAM,EACN,gBAAgB,EAChB,aAAa,EACb,wBAAwB,EACxB,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,4BAA4B,EAC5B,yBAAyB,EACzB,6BAA6B,EAC7B,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,EACb,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,5 @@
1
1
  export { createPublisher } from './createPublisher.js';
2
+ export { MAX_UPLOAD_BYTES } from './upload.js';
2
3
  export { LiformaPublisherError, isRetryableError } from './errors.js';
4
+ export { PERSONA_ETHNICITY_VALUES, PERSONA_GENDER_VALUES } from './schemas.js';
3
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAgBvD,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAqBvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC"}
package/dist/jobs.d.ts CHANGED
@@ -1,15 +1,17 @@
1
1
  import { type PublisherHttp } from './http.js';
2
- import { type AuthoringJob, type ClothesResource, type CreatePublishResponse, type HairResource, type LocationResource } from './schemas.js';
2
+ import { type PublishJob, type CharacterResource, type ClothesResource, type CreatePublishResponse, type HairResource, type LocationResource, type PlaceResource } from './schemas.js';
3
3
  export type WaitOptions = {
4
4
  readonly signal?: AbortSignal;
5
5
  readonly timeoutMs?: number;
6
- readonly onProgress?: (job: AuthoringJob) => void;
6
+ readonly onProgress?: (job: PublishJob) => void;
7
7
  };
8
- export declare function getJob(http: PublisherHttp, jobId: string, signal?: AbortSignal): Promise<AuthoringJob>;
8
+ export declare function getJob(http: PublisherHttp, jobId: string, signal?: AbortSignal): Promise<PublishJob>;
9
9
  export declare function retryJob(http: PublisherHttp, jobId: string, signal?: AbortSignal): Promise<CreatePublishResponse>;
10
- export declare function waitForJob(http: PublisherHttp, jobId: string, options?: WaitOptions): Promise<AuthoringJob>;
11
- export declare function watchJob(http: PublisherHttp, jobId: string, options?: WaitOptions): AsyncGenerator<AuthoringJob, AuthoringJob, void>;
10
+ export declare function waitForJob(http: PublisherHttp, jobId: string, options?: WaitOptions): Promise<PublishJob>;
11
+ export declare function watchJob(http: PublisherHttp, jobId: string, options?: WaitOptions): AsyncGenerator<PublishJob, PublishJob, void>;
12
12
  export declare function getClothes(http: PublisherHttp, clothesId: string, signal?: AbortSignal): Promise<ClothesResource>;
13
13
  export declare function getHair(http: PublisherHttp, hairId: string, signal?: AbortSignal): Promise<HairResource>;
14
14
  export declare function getLocation(http: PublisherHttp, locationId: string, signal?: AbortSignal): Promise<LocationResource>;
15
+ export declare function getCharacter(http: PublisherHttp, characterId: string, signal?: AbortSignal): Promise<CharacterResource>;
16
+ export declare function getPlace(http: PublisherHttp, placeId: string, signal?: AbortSignal): Promise<PlaceResource>;
15
17
  //# sourceMappingURL=jobs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jobs.d.ts","sourceRoot":"","sources":["../src/jobs.ts"],"names":[],"mappings":"AACA,OAAO,EAAiC,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EAMN,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,WAAW,GAAG;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;CAClD,CAAC;AA0CF,wBAAsB,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,CAO5G;AAED,wBAAsB,QAAQ,CAC7B,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,qBAAqB,CAAC,CAQhC;AAED,wBAAsB,UAAU,CAC/B,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,WAAgB,GACvB,OAAO,CAAC,YAAY,CAAC,CAkCvB;AAED,wBAAuB,QAAQ,CAC9B,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,WAAgB,GACvB,cAAc,CAAC,YAAY,EAAE,YAAY,EAAE,IAAI,CAAC,CAkClD;AAED,wBAAsB,UAAU,CAC/B,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,eAAe,CAAC,CAQ1B;AAED,wBAAsB,OAAO,CAC5B,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,YAAY,CAAC,CAQvB;AAED,wBAAsB,WAAW,CAChC,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,gBAAgB,CAAC,CAQ3B"}
1
+ {"version":3,"file":"jobs.d.ts","sourceRoot":"","sources":["../src/jobs.ts"],"names":[],"mappings":"AACA,OAAO,EAAiC,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAE9E,OAAO,EAQN,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,WAAW,GAAG;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;CAChD,CAAC;AAkCF,wBAAsB,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAO1G;AAED,wBAAsB,QAAQ,CAC7B,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,qBAAqB,CAAC,CAQhC;AAED,wBAAsB,UAAU,CAC/B,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,WAAgB,GACvB,OAAO,CAAC,UAAU,CAAC,CAgCrB;AAED,wBAAuB,QAAQ,CAC9B,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,WAAgB,GACvB,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,CAgC9C;AAED,wBAAsB,UAAU,CAC/B,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,eAAe,CAAC,CAQ1B;AAED,wBAAsB,OAAO,CAC5B,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,YAAY,CAAC,CAQvB;AAED,wBAAsB,WAAW,CAChC,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,gBAAgB,CAAC,CAQ3B;AAED,wBAAsB,YAAY,CACjC,IAAI,EAAE,aAAa,EACnB,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,iBAAiB,CAAC,CAQ5B;AAED,wBAAsB,QAAQ,CAC7B,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,aAAa,CAAC,CAQxB"}
package/dist/jobs.js CHANGED
@@ -1,43 +1,34 @@
1
1
  import { LiformaPublisherError } from './errors.js';
2
2
  import { projectPath, publisherRequest } from './http.js';
3
- import { createPublishResponseSchema, getClothesResponseSchema, getHairResponseSchema, getJobResponseSchema, getLocationResponseSchema } from './schemas.js';
3
+ import { sleep } from './retry.js';
4
+ import { createCharacterResponseSchema, createPlaceResponseSchema, createPublishResponseSchema, getClothesResponseSchema, getHairResponseSchema, getJobResponseSchema, getLocationResponseSchema } from './schemas.js';
4
5
  const DEFAULT_TIMEOUT_MS = 10 * 60 * 1000;
5
6
  const MIN_POLL_MS = 500;
6
7
  const MAX_POLL_MS = 5_000;
7
8
  function clampPollDelay(ms) {
8
9
  return Math.min(MAX_POLL_MS, Math.max(MIN_POLL_MS, ms));
9
10
  }
10
- function delayUntilNextRun(job, attempt) {
11
- if (job.nextRunAt) {
12
- const target = Date.parse(job.nextRunAt);
13
- if (Number.isFinite(target)) {
14
- const delta = target - Date.now();
15
- if (delta > 0)
16
- return clampPollDelay(delta);
17
- }
18
- }
11
+ function delayUntilNextRun(attempt) {
19
12
  const base = Math.min(MAX_POLL_MS, MIN_POLL_MS * 2 ** Math.min(attempt, 4));
20
13
  const jitter = Math.floor(Math.random() * 250);
21
14
  return clampPollDelay(base + jitter);
22
15
  }
23
- async function sleep(ms, signal) {
24
- if (ms <= 0)
25
- return;
26
- await new Promise((resolve, reject) => {
27
- const timer = setTimeout(() => {
28
- signal?.removeEventListener('abort', onAbort);
29
- resolve();
30
- }, ms);
31
- const onAbort = () => {
32
- clearTimeout(timer);
33
- reject(signal?.reason ?? new DOMException('Aborted', 'AbortError'));
34
- };
35
- if (signal?.aborted) {
36
- onAbort();
37
- return;
38
- }
39
- signal?.addEventListener('abort', onAbort, { once: true });
40
- });
16
+ function terminalJobError(job) {
17
+ if (job.status === 'failed') {
18
+ return new LiformaPublisherError(job.error?.message ?? `Job ${job.id} failed.`, {
19
+ code: job.error?.code ?? 'JOB_FAILED',
20
+ retryable: false,
21
+ job
22
+ });
23
+ }
24
+ if (job.status === 'succeeded' && !job.requiredOk) {
25
+ return new LiformaPublisherError(`Job ${job.id} completed without all required artifacts.`, {
26
+ code: 'JOB_INCOMPLETE',
27
+ retryable: false,
28
+ job
29
+ });
30
+ }
31
+ return null;
41
32
  }
42
33
  export async function getJob(http, jobId, signal) {
43
34
  const { data } = await publisherRequest(http, projectPath(http, `/jobs/${encodeURIComponent(jobId)}`), getJobResponseSchema, {
@@ -48,35 +39,34 @@ export async function getJob(http, jobId, signal) {
48
39
  return data.job;
49
40
  }
50
41
  export async function retryJob(http, jobId, signal) {
51
- const { data } = await publisherRequest(http, projectPath(http, `/jobs/${encodeURIComponent(jobId)}/retry`), createPublishResponseSchema, { method: 'POST', signal });
42
+ const { data } = await publisherRequest(http, projectPath(http, `/jobs/${encodeURIComponent(jobId)}/retry`), createPublishResponseSchema, { method: 'POST', signal, retry: true });
52
43
  return data;
53
44
  }
54
45
  export async function waitForJob(http, jobId, options = {}) {
55
46
  const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
56
47
  const deadline = Date.now() + timeoutMs;
57
48
  let attempt = 0;
49
+ let lastJob;
58
50
  while (true) {
59
51
  options.signal?.throwIfAborted();
60
52
  if (Date.now() > deadline) {
61
53
  throw new LiformaPublisherError(`Timed out waiting for job ${jobId} after ${timeoutMs}ms.`, {
62
- code: 'JOB_TIMEOUT',
63
- retryable: true
54
+ code: 'JOB_WAIT_TIMEOUT',
55
+ retryable: false,
56
+ job: lastJob
64
57
  });
65
58
  }
66
59
  const job = await getJob(http, jobId, options.signal);
60
+ lastJob = job;
67
61
  options.onProgress?.(job);
68
62
  if (job.status === 'succeeded' && job.requiredOk) {
69
63
  return job;
70
64
  }
71
- if (job.status === 'failed') {
72
- throw new LiformaPublisherError(job.error?.message ?? `Job ${jobId} failed.`, {
73
- code: job.error?.code ?? 'JOB_FAILED',
74
- retryable: false,
75
- job: job
76
- });
77
- }
65
+ const terminalError = terminalJobError(job);
66
+ if (terminalError)
67
+ throw terminalError;
78
68
  const remaining = deadline - Date.now();
79
- const waitMs = Math.min(delayUntilNextRun(job, attempt), Math.max(0, remaining));
69
+ const waitMs = Math.min(delayUntilNextRun(attempt), Math.max(0, remaining));
80
70
  attempt += 1;
81
71
  await sleep(waitMs, options.signal);
82
72
  }
@@ -85,43 +75,50 @@ export async function* watchJob(http, jobId, options = {}) {
85
75
  const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
86
76
  const deadline = Date.now() + timeoutMs;
87
77
  let attempt = 0;
78
+ let lastJob;
88
79
  while (true) {
89
80
  options.signal?.throwIfAborted();
90
81
  if (Date.now() > deadline) {
91
82
  throw new LiformaPublisherError(`Timed out waiting for job ${jobId} after ${timeoutMs}ms.`, {
92
- code: 'JOB_TIMEOUT',
93
- retryable: true
83
+ code: 'JOB_WAIT_TIMEOUT',
84
+ retryable: false,
85
+ job: lastJob
94
86
  });
95
87
  }
96
88
  const job = await getJob(http, jobId, options.signal);
89
+ lastJob = job;
97
90
  options.onProgress?.(job);
98
91
  yield job;
99
92
  if (job.status === 'succeeded' && job.requiredOk) {
100
93
  return job;
101
94
  }
102
- if (job.status === 'failed') {
103
- throw new LiformaPublisherError(job.error?.message ?? `Job ${jobId} failed.`, {
104
- code: job.error?.code ?? 'JOB_FAILED',
105
- retryable: false,
106
- job: job
107
- });
108
- }
95
+ const terminalError = terminalJobError(job);
96
+ if (terminalError)
97
+ throw terminalError;
109
98
  const remaining = deadline - Date.now();
110
- const waitMs = Math.min(delayUntilNextRun(job, attempt), Math.max(0, remaining));
99
+ const waitMs = Math.min(delayUntilNextRun(attempt), Math.max(0, remaining));
111
100
  attempt += 1;
112
101
  await sleep(waitMs, options.signal);
113
102
  }
114
103
  }
115
104
  export async function getClothes(http, clothesId, signal) {
116
105
  const { data } = await publisherRequest(http, projectPath(http, `/clothes/${encodeURIComponent(clothesId)}`), getClothesResponseSchema, { method: 'GET', signal, retry: true });
117
- return data.resource;
106
+ return data.clothes;
118
107
  }
119
108
  export async function getHair(http, hairId, signal) {
120
109
  const { data } = await publisherRequest(http, projectPath(http, `/hair/${encodeURIComponent(hairId)}`), getHairResponseSchema, { method: 'GET', signal, retry: true });
121
- return data.resource;
110
+ return data.hair;
122
111
  }
123
112
  export async function getLocation(http, locationId, signal) {
124
113
  const { data } = await publisherRequest(http, projectPath(http, `/locations/${encodeURIComponent(locationId)}`), getLocationResponseSchema, { method: 'GET', signal, retry: true });
125
- return data.resource;
114
+ return data.location;
115
+ }
116
+ export async function getCharacter(http, characterId, signal) {
117
+ const { data } = await publisherRequest(http, projectPath(http, `/characters/${encodeURIComponent(characterId)}`), createCharacterResponseSchema, { method: 'GET', signal, retry: true });
118
+ return data.character;
119
+ }
120
+ export async function getPlace(http, placeId, signal) {
121
+ const { data } = await publisherRequest(http, projectPath(http, `/places/${encodeURIComponent(placeId)}`), createPlaceResponseSchema, { method: 'GET', signal, retry: true });
122
+ return data.place;
126
123
  }
127
124
  //# sourceMappingURL=jobs.js.map
package/dist/jobs.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"jobs.js","sourceRoot":"","sources":["../src/jobs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jobs.js","sourceRoot":"","sources":["../src/jobs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export type RetryPolicy = {
2
+ readonly maxAttempts?: number;
3
+ readonly baseDelayMs?: number;
4
+ readonly maxDelayMs?: number;
5
+ };
6
+ export type ResolvedRetryPolicy = {
7
+ readonly maxAttempts: number;
8
+ readonly baseDelayMs: number;
9
+ readonly maxDelayMs: number;
10
+ };
11
+ export declare const DEFAULT_RETRY_POLICY: ResolvedRetryPolicy;
12
+ export declare function resolveRetryPolicy(policy?: RetryPolicy): ResolvedRetryPolicy;
13
+ export declare function exponentialDelayMs(attempt: number, policy: Pick<ResolvedRetryPolicy, 'baseDelayMs' | 'maxDelayMs'>): number;
14
+ export declare function retryAfterMs(value: string | null, now?: number): number | undefined;
15
+ export declare function sleep(ms: number, signal?: AbortSignal): Promise<void>;
16
+ //# sourceMappingURL=retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,mBAIlC,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,mBAAmB,CAM5E;AAED,wBAAgB,kBAAkB,CACjC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,IAAI,CAAC,mBAAmB,EAAE,aAAa,GAAG,YAAY,CAAC,GAC7D,MAAM,CAER;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,SAAa,GAAG,MAAM,GAAG,SAAS,CAOvF;AAED,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB3E"}
package/dist/retry.js ADDED
@@ -0,0 +1,52 @@
1
+ export const DEFAULT_RETRY_POLICY = {
2
+ maxAttempts: 3,
3
+ baseDelayMs: 100,
4
+ maxDelayMs: 5_000
5
+ };
6
+ export function resolveRetryPolicy(policy) {
7
+ return {
8
+ maxAttempts: positiveInteger(policy?.maxAttempts, DEFAULT_RETRY_POLICY.maxAttempts),
9
+ baseDelayMs: nonNegativeInteger(policy?.baseDelayMs, DEFAULT_RETRY_POLICY.baseDelayMs),
10
+ maxDelayMs: nonNegativeInteger(policy?.maxDelayMs, DEFAULT_RETRY_POLICY.maxDelayMs)
11
+ };
12
+ }
13
+ export function exponentialDelayMs(attempt, policy) {
14
+ return Math.min(policy.maxDelayMs, policy.baseDelayMs * 2 ** Math.max(0, attempt - 1));
15
+ }
16
+ export function retryAfterMs(value, now = Date.now()) {
17
+ if (!value)
18
+ return undefined;
19
+ const seconds = Number(value);
20
+ if (Number.isFinite(seconds) && seconds >= 0)
21
+ return Math.round(seconds * 1_000);
22
+ const date = Date.parse(value);
23
+ if (!Number.isFinite(date))
24
+ return undefined;
25
+ return Math.max(0, date - now);
26
+ }
27
+ export async function sleep(ms, signal) {
28
+ if (ms <= 0)
29
+ return;
30
+ await new Promise((resolve, reject) => {
31
+ const timer = setTimeout(() => {
32
+ signal?.removeEventListener('abort', onAbort);
33
+ resolve();
34
+ }, ms);
35
+ const onAbort = () => {
36
+ clearTimeout(timer);
37
+ reject(signal?.reason ?? new DOMException('Aborted', 'AbortError'));
38
+ };
39
+ if (signal?.aborted) {
40
+ onAbort();
41
+ return;
42
+ }
43
+ signal?.addEventListener('abort', onAbort, { once: true });
44
+ });
45
+ }
46
+ function positiveInteger(value, fallback) {
47
+ return Number.isInteger(value) && value !== undefined && value > 0 ? value : fallback;
48
+ }
49
+ function nonNegativeInteger(value, fallback) {
50
+ return Number.isInteger(value) && value !== undefined && value >= 0 ? value : fallback;
51
+ }
52
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"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"}