@cloudcannon/sdk 0.0.2 → 0.0.4

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/index.d.ts CHANGED
@@ -1,15 +1,18 @@
1
1
  import type { components, operations, paths } from './schema.ts';
2
+ import { BackupClient } from './src/backup.ts';
2
3
  import { BuildClient } from './src/build.ts';
3
- import { type CommitEditingSessionOptions, type CommitEditingSessionResponse, EditingSessionClient } from './src/editing-session.ts';
4
- import { EditingSessionFileClient } from './src/editing-session-file.ts';
5
- import { InboxClient } from './src/inbox.ts';
6
- import { OrgClient } from './src/org.ts';
7
- import { type BuildConfiguration, SiteClient } from './src/site.ts';
8
- import { SiteInboxClient } from './src/site-inbox.ts';
4
+ import { type CommitEditingSessionOptions, type CommitEditingSessionResponse, type CreateEditingSessionFileOptions, EditingSessionClient } from './src/editing-session.ts';
5
+ import { type CreateContributionOptions, EditingSessionFileClient, type UnlockOptions } from './src/editing-session-file.ts';
6
+ import { type FilterOptions, type PaginatedResponse, type PaginationOptions, type SortingOptions } from './src/helpers/query.ts';
7
+ import { InboxClient, type ListInboxSubmissionsOptions } from './src/inbox.ts';
8
+ import { type ConnectSiteOptions, type CreateDamOptions, type CreateInboxOptions, type ListOrgDamsOptions, type ListOrgInboxesOptions, type ListOrgSitesOptions, OrgClient } from './src/org.ts';
9
+ import { type BuildConfiguration, type ConnectDamOptions, type ConnectInboxOptions, type CopySiteOptions, type CreateBackupOptions, type ListSiteBackupsOptions, type ListSiteBuildsOptions, type ListSiteSyncsOptions, SiteClient, type UpdateSiteOptions, type UploadFileOptions } from './src/site.ts';
10
+ import { SiteInboxClient, type UpdateInboxOptions } from './src/site-inbox.ts';
9
11
  import { SyncClient } from './src/sync.ts';
10
- export type { BuildConfiguration, CommitEditingSessionOptions, CommitEditingSessionResponse };
12
+ export type { BuildConfiguration, CommitEditingSessionOptions, CommitEditingSessionResponse, ConnectDamOptions, ConnectInboxOptions, ConnectSiteOptions, CopySiteOptions, CreateBackupOptions, CreateContributionOptions, CreateDamOptions, CreateEditingSessionFileOptions, CreateInboxOptions, FilterOptions, ListInboxSubmissionsOptions, ListOrgDamsOptions, ListOrgInboxesOptions, ListOrgSitesOptions, ListOrgsOptions, ListSiteBackupsOptions, ListSiteBuildsOptions, ListSiteSyncsOptions, PaginatedResponse, PaginationOptions, SortingOptions, UnlockOptions, UpdateInboxOptions, UpdateSiteOptions, UploadFileOptions, };
11
13
  export type Provider = operations['Providers_Repositories']['parameters']['path']['provider'];
12
14
  export type Site = components['schemas']['SiteBlueprint'];
15
+ export type Backup = components['schemas']['SiteArchiveBlueprint'];
13
16
  export type Org = components['schemas']['OrgBlueprintFull'];
14
17
  export type Build = components['schemas']['BuildBlueprint'];
15
18
  export type Sync = components['schemas']['SyncBlueprint'];
@@ -28,8 +31,10 @@ export type ProviderDetails = {
28
31
  repository: string;
29
32
  branch: string;
30
33
  };
34
+ type ListOrgsOptions = PaginationOptions & SortingOptions<operations['Organizations_Index']> & FilterOptions<operations['Organizations_Index']>;
31
35
  type ParamToString<S extends string> = S extends `${infer A}/{${string}}/${infer B}` ? `${A}/${string}/${ParamToString<B>}` : S extends `${infer A}/{${string}}` ? `${A}/${string}` : S;
32
36
  type StripPrefix<S extends string> = S extends `/api/v0${infer Rest}` ? Rest : never;
37
+ type StripParams<S extends string> = S extends `${infer Path}?${string}` ? Path : S;
33
38
  type RequestBody<T> = T extends {
34
39
  requestBody: {
35
40
  content: {
@@ -61,7 +66,7 @@ type Split<S extends string> = S extends `${infer Head}/${infer Tail}` ? [Head,
61
66
  type SegmentMatch<A extends string[], B extends string[]> = A['length'] extends B['length'] ? A extends [infer AH extends string, ...infer AT extends string[]] ? B extends [infer BH extends string, ...infer BT extends string[]] ? AH extends BH ? SegmentMatch<AT, BT> : never : never : true : never;
62
67
  type MatchURL<M extends keyof paths[keyof paths], U extends string> = {
63
68
  [K in keyof paths]: [
64
- SegmentMatch<Split<U>, Split<ParamToString<StripPrefix<K & string>>>>
69
+ SegmentMatch<Split<StripParams<U>>, Split<ParamToString<StripPrefix<K & string>>>>
65
70
  ] extends [never] ? never : RequestParams<paths[K][M]> extends never ? never : paths[K];
66
71
  }[keyof paths];
67
72
  type ValidURL<M extends keyof paths[keyof paths], U extends string> = MatchURL<M, U> extends never ? {
@@ -84,7 +89,8 @@ export default class CloudCannonClient {
84
89
  editingSession(uuid: string): EditingSessionClient;
85
90
  editingSessionFile(uuid: string): EditingSessionFileClient;
86
91
  build(uuid: string): BuildClient;
92
+ backup(uuid: string): BackupClient;
87
93
  sync(uuid: string): SyncClient;
88
- orgs(): Promise<Org[]>;
94
+ orgs(options?: ListOrgsOptions): Promise<PaginatedResponse<Org>>;
89
95
  getUploadData(): Promise<UploadData>;
90
96
  }
package/dist/index.js CHANGED
@@ -1,9 +1,11 @@
1
+ import { BackupClient } from "./src/backup.js";
1
2
  import { BuildClient } from "./src/build.js";
2
3
  import { EditingSessionClient, } from "./src/editing-session.js";
3
- import { EditingSessionFileClient } from "./src/editing-session-file.js";
4
+ import { EditingSessionFileClient, } from "./src/editing-session-file.js";
5
+ import { buildQuery, paginatedResponse, } from "./src/helpers/query.js";
4
6
  import { InboxClient } from "./src/inbox.js";
5
- import { OrgClient } from "./src/org.js";
6
- import { SiteClient } from "./src/site.js";
7
+ import { OrgClient, } from "./src/org.js";
8
+ import { SiteClient, } from "./src/site.js";
7
9
  import { SiteInboxClient } from "./src/site-inbox.js";
8
10
  import { SyncClient } from "./src/sync.js";
9
11
  export default class CloudCannonClient {
@@ -65,13 +67,20 @@ export default class CloudCannonClient {
65
67
  build(uuid) {
66
68
  return new BuildClient(uuid, this);
67
69
  }
70
+ backup(uuid) {
71
+ return new BackupClient(uuid, this);
72
+ }
68
73
  sync(uuid) {
69
74
  return new SyncClient(uuid, this);
70
75
  }
71
- async orgs() {
72
- const resp = await this.fetch('/orgs');
76
+ async orgs(options = {}) {
77
+ const query = buildQuery(options);
78
+ const resp = await this.fetch(`/orgs?${query}`);
79
+ if (resp.status === 403) {
80
+ throw new Error('Error fetching orgs. Permission denied');
81
+ }
73
82
  const orgs = await resp.json();
74
- return orgs;
83
+ return paginatedResponse(orgs, resp.headers);
75
84
  }
76
85
  async getUploadData() {
77
86
  const resp = await this.fetch('/upload-data');