@liforma/publisher 0.1.2 → 0.3.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/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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"}