@deadair/sdk 0.85.3 → 0.86.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.
@@ -3,7 +3,7 @@ import { DateTime } from 'luxon';
3
3
  * Which store, as a stable id the console can key off rather than a name it renders.
4
4
  * generated from [StorageStoreId](../../../../../apps/api/data/contracts/storage/storage.types.ck)
5
5
  */
6
- export type StorageStoreId = 'tracks' | 'art' | 'segments' | 'voices';
6
+ export type StorageStoreId = 'tracks' | 'art' | 'segments' | 'voices' | 'archive';
7
7
  /**
8
8
  * One content store: what is on disk, and what the database says should be.
9
9
  *
@@ -1 +1 @@
1
- {"version":3,"file":"storage.types.d.ts","sourceRoot":"","sources":["../../../src/storage/types/storage.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAUjC;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,KAAK,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEtE;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,cAAc,CAAC;IACnB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2FAA2F;IAC3F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;CAAG;AAErC;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,QAAQ,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IAC/B,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED,gHAAgH;AAChH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa,GAAG,aAAa,CAIrE"}
1
+ {"version":3,"file":"storage.types.d.ts","sourceRoot":"","sources":["../../../src/storage/types/storage.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAUjC;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,KAAK,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAElF;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,cAAc,CAAC;IACnB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2FAA2F;IAC3F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;CAAG;AAErC;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC1B,MAAM,EAAE,QAAQ,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IAC/B,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED,gHAAgH;AAChH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa,GAAG,aAAa,CAIrE"}
@@ -0,0 +1,45 @@
1
+ import type { RecordingList } from './types/stream.archive.types.js';
2
+ import type { SdkFetch } from '../sdk-options.js';
3
+ /**
4
+ * generated from [stream.archive.ck](../../../../apps/api/data/contracts/stream/stream.archive.ck)
5
+ */
6
+ export declare class StreamArchiveClient {
7
+ private fetch;
8
+ constructor(fetch: SdkFetch);
9
+ /**
10
+ * @name List recordings
11
+ * @description Every recording in the archive, newest first
12
+ */
13
+ listRecordings(): Promise<RecordingList>;
14
+ /**
15
+ * @name Delete recording
16
+ * @description Deletes a finished recording. One still being recorded is refused
17
+ */
18
+ deleteRecording(id: string): Promise<void>;
19
+ /**
20
+ * @name Get recording audio
21
+ * @description The audio of one recording. Answers a byte range, so a player can seek through an hour
22
+ */
23
+ getRecordingAudio(id: string, query?: {
24
+ download?: boolean;
25
+ }, customHeaders?: {
26
+ range?: string;
27
+ }): Promise<{
28
+ status: 200;
29
+ contentType: 'audio/mpeg';
30
+ data: Blob;
31
+ headers: {
32
+ acceptRanges?: string;
33
+ contentDisposition?: string;
34
+ };
35
+ } | {
36
+ status: 206;
37
+ contentType: 'audio/mpeg';
38
+ data: Blob;
39
+ headers: {
40
+ acceptRanges?: string;
41
+ contentRange: string;
42
+ };
43
+ }>;
44
+ }
45
+ //# sourceMappingURL=stream.archive.client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.archive.client.d.ts","sourceRoot":"","sources":["../../src/stream/stream.archive.client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAErE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGlD;;GAEG;AACH,qBAAa,mBAAmB;IAChB,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,QAAQ;IAEnC;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC;IAK9C;;;OAGG;IACG,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD;;;OAGG;IACG,iBAAiB,CACnB,EAAE,EAAE,MAAM,EACV,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,EAC9B,aAAa,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACnC,OAAO,CACJ;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,WAAW,EAAE,YAAY,CAAC;QAAC,IAAI,EAAE,IAAI,CAAC;QAAC,OAAO,EAAE;YAAE,YAAY,CAAC,EAAE,MAAM,CAAC;YAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,GACvH;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,WAAW,EAAE,YAAY,CAAC;QAAC,IAAI,EAAE,IAAI,CAAC;QAAC,OAAO,EAAE;YAAE,YAAY,CAAC,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CACrH;CA0BJ"}
@@ -1,7 +1,9 @@
1
1
  import type { SdkFetch } from '../sdk-options.js';
2
2
  import type { FetcherAuthorization, FetcherAuthorizationFinished, FetcherAuthorizationInput, FetcherAuthorizationStart } from './types/stream.types.js';
3
+ import { StreamArchiveClient } from './stream.archive.client.js';
3
4
  export declare class StreamClient {
4
5
  private fetch;
6
+ readonly archive: StreamArchiveClient;
5
7
  constructor(fetch: SdkFetch);
6
8
  /**
7
9
  * @name Get HLS playlist
@@ -1 +1 @@
1
- {"version":3,"file":"stream.client.d.ts","sourceRoot":"","sources":["../../src/stream/stream.client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,KAAK,EACR,oBAAoB,EACpB,4BAA4B,EAC5B,yBAAyB,EACzB,yBAAyB,EAC5B,MAAM,yBAAyB,CAAC;AAEjC,qBAAa,YAAY;IACT,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,QAAQ;IAEnC;;;OAGG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,OAAO,EAAE;YAAE,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IAM/F;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC;;;OAGG;IACG,wBAAwB,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAK/D;;;OAGG;IACG,yBAAyB,IAAI,OAAO,CAAC,yBAAyB,CAAC;IAKrE;;;OAGG;IACG,0BAA0B,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,4BAA4B,CAAC;CAQ3G"}
1
+ {"version":3,"file":"stream.client.d.ts","sourceRoot":"","sources":["../../src/stream/stream.client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,KAAK,EACR,oBAAoB,EACpB,4BAA4B,EAC5B,yBAAyB,EACzB,yBAAyB,EAC5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,qBAAa,YAAY;IAGT,OAAO,CAAC,KAAK;IAFzB,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;gBAElB,KAAK,EAAE,QAAQ;IAInC;;;OAGG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,OAAO,EAAE;YAAE,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IAM/F;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC;;;OAGG;IACG,wBAAwB,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAK/D;;;OAGG;IACG,yBAAyB,IAAI,OAAO,CAAC,yBAAyB,CAAC;IAKrE;;;OAGG;IACG,0BAA0B,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,4BAA4B,CAAC;CAQ3G"}
@@ -1,2 +1,3 @@
1
+ export * from './stream.archive.types.js';
1
2
  export * from './stream.types.js';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/stream/types/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/stream/types/index.ts"],"names":[],"mappings":"AACA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { DateTime } from 'luxon';
2
+ /**
3
+ * What a recording holds: a live show, or an hour of the station's own programme.
4
+ * generated from [RecordingKind](../../../../../apps/api/data/contracts/stream/stream.archive.types.ck)
5
+ */
6
+ export type RecordingKind = 'live' | 'hour';
7
+ /**
8
+ * One file in the station's archive of what it aired.
9
+ * generated from [Recording](../../../../../apps/api/data/contracts/stream/stream.archive.types.ck)
10
+ */
11
+ export interface Recording {
12
+ /** Names the recording, e.g. `2026-10-27T21-03-12-live` */
13
+ id: string;
14
+ kind: RecordingKind;
15
+ /** The show's name, for a live show armed with one */
16
+ title?: string;
17
+ startedAt: DateTime;
18
+ /** Absent while it is still being recorded */
19
+ endedAt?: DateTime;
20
+ bytes: number;
21
+ /** Still being written. It cannot be deleted until it ends */
22
+ recording: boolean;
23
+ /** Where a player can stream it from, signed for a while so an audio element needs no token. Relative to the API */
24
+ audioUrl: string;
25
+ }
26
+ export interface RecordingInput {
27
+ }
28
+ /** Rehydrates every wire-encoded scalar in a Recording into its runtime type. Mutates and returns `raw`. */
29
+ export declare function reviveRecording(raw: Recording): Recording;
30
+ /**
31
+ * Every recording, newest first, and whether the station is recording at all.
32
+ * generated from [RecordingList](../../../../../apps/api/data/contracts/stream/stream.archive.types.ck)
33
+ */
34
+ export interface RecordingList {
35
+ /** What the archive is set to keep */
36
+ mode: 'off' | 'live' | 'all';
37
+ /** How long a finished recording is kept. Zero keeps all of them */
38
+ retentionDays: number;
39
+ recordings: Recording[];
40
+ }
41
+ export interface RecordingListInput {
42
+ recordings: RecordingInput[];
43
+ }
44
+ /** Rehydrates every wire-encoded scalar in a RecordingList into its runtime type. Mutates and returns `raw`. */
45
+ export declare function reviveRecordingList(raw: RecordingList): RecordingList;
46
+ //# sourceMappingURL=stream.archive.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.archive.types.d.ts","sourceRoot":"","sources":["../../../src/stream/types/stream.archive.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAUjC;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;AAE5C;;;GAGG;AACH,MAAM,WAAW,SAAS;IACtB,2DAA2D;IAC3D,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,aAAa,CAAC;IACpB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,QAAQ,CAAC;IACpB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,SAAS,EAAE,OAAO,CAAC;IACnB,oHAAoH;IACpH,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;CAAG;AAElC,4GAA4G;AAC5G,wBAAgB,eAAe,CAAC,GAAG,EAAE,SAAS,GAAG,SAAS,CAOzD;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC1B,sCAAsC;IACtC,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;IAC7B,oEAAoE;IACpE,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,SAAS,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IAC/B,UAAU,EAAE,cAAc,EAAE,CAAC;CAChC;AAED,gHAAgH;AAChH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa,GAAG,aAAa,CASrE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deadair/sdk",
3
- "version": "0.85.3",
3
+ "version": "0.86.0",
4
4
  "description": "A typed client for the deadair station's HTTP API, generated from the same contracts the station serves.",
5
5
  "keywords": [
6
6
  "deadair",