@tanglemedia/svelte-starter-directus-api 2.0.3 → 2.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.
@@ -1,5 +1,5 @@
1
1
  import { type AllCollections, type DirectusClient, type RegularCollections, type RestClient } from '@directus/sdk';
2
- import { ApiAdapterAbstract, type AnyObject, type ApiAdapterRequestConfig, type ApiCreateManyQuery, type ApiDeleteManyQuery, type ApiFindQuery, type ApiId, type ApiResponse, type ApiUpdateManyQuery, type BaseApiMethods } from '@tanglemedia/svelte-starter-core';
2
+ import { ApiAdapterAbstract, type AnyObject, type ApiAdapterRequestConfig, type ApiAggregateQuery, type ApiCreateManyQuery, type ApiDeleteManyQuery, type ApiFindQuery, type ApiId, type ApiResponse, type ApiUpdateManyQuery, type BaseApiMethods } from '@tanglemedia/svelte-starter-core';
3
3
  import type { DirectusConfig, SchemaShape } from '../types/adapter.types';
4
4
  export type AdapterClient<Schema extends SchemaShape = SchemaShape> = DirectusClient<Schema> & RestClient<Schema>;
5
5
  /**
@@ -27,7 +27,7 @@ export declare class DirectusApiAdapter<Schema extends SchemaShape = SchemaShape
27
27
  request<T>(method: BaseApiMethods, url: string, query?: Record<string, unknown>): Promise<T>;
28
28
  find<T, Q = T, R = T>(collection: Path, query: ApiFindQuery<Q>): Promise<ApiResponse<R[]>>;
29
29
  findOne<T>(collection: Path, key?: ApiId, query?: Record<string, unknown>): Promise<ApiResponse<T>>;
30
- aggregate<T>(collection: Path, query?: Record<string, unknown>): Promise<ApiResponse<T>>;
30
+ aggregate<T, Q = T, R = T>(collection: Path, query: ApiAggregateQuery<Q>): Promise<ApiResponse<R>>;
31
31
  patch<T>(collection: Path, key: ApiId, query?: Record<string, unknown>): Promise<ApiResponse<T>>;
32
32
  post<T>(collection: Path, data: AnyObject, query?: Record<string, unknown>): Promise<ApiResponse<T>>;
33
33
  delete<T>(collection: Path, key?: ApiId): Promise<ApiResponse<T>>;
@@ -36,7 +36,10 @@ export class DirectusApiAdapter extends ApiAdapterAbstract {
36
36
  const { filter, search } = query || {};
37
37
  const data = await this.directus.request(aggregate(collection, {
38
38
  aggregate: { count: '*' },
39
- query: { filter, search }
39
+ query: {
40
+ ...(filter ? { filter } : {}),
41
+ ...(search ? { search } : {}),
42
+ }
40
43
  }));
41
44
  if (data && data.length === 1) {
42
45
  return Number(data[0].count);
@@ -91,11 +94,12 @@ export class DirectusApiAdapter extends ApiAdapterAbstract {
91
94
  return this.transformResponse({ data });
92
95
  }
93
96
  async aggregate(collection, query) {
97
+ const { aggregate: aggregate_, ...rest } = (query || {});
94
98
  const data = await this.directus.request(aggregate(collection, {
95
- aggregate: {
99
+ aggregate: aggregate_ ? aggregate_ : {
96
100
  count: 'id'
97
101
  },
98
- query
102
+ query: rest
99
103
  }));
100
104
  return this.transformResponse({ data });
101
105
  }
@@ -1,7 +1,6 @@
1
- import type { AuthenticationClient } from '@directus/sdk';
2
- import type { DirectusClient, RestClient } from '@directus/sdk';
3
- import { ServiceAdapterAbstract } from '@tanglemedia/svelte-starter-core';
4
- declare class DirectusAuthServices extends ServiceAdapterAbstract {
1
+ import type { AuthenticationClient, DirectusClient, RestClient } from '@directus/sdk';
2
+ import { ServiceAbstract } from '@tanglemedia/svelte-starter-core';
3
+ declare class DirectusAuthServices extends ServiceAbstract {
5
4
  getDirectus(): Promise<DirectusClient<object> & RestClient<object> & AuthenticationClient<object>>;
6
5
  refresh(): Promise<import("@directus/sdk").AuthenticationData>;
7
6
  getToken(): Promise<string | null>;
@@ -1,6 +1,6 @@
1
1
  import { readFiles, readMe, updateMe } from '@directus/sdk';
2
- import { ServiceAdapterAbstract } from '@tanglemedia/svelte-starter-core';
3
- class DirectusAuthServices extends ServiceAdapterAbstract {
2
+ import { ServiceAbstract } from '@tanglemedia/svelte-starter-core';
3
+ class DirectusAuthServices extends ServiceAbstract {
4
4
  getDirectus() {
5
5
  return this.getAdapterClient();
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanglemedia/svelte-starter-directus-api",
3
- "version": "2.0.3",
3
+ "version": "2.1.0",
4
4
  "main": "src/index.ts",
5
5
  "types": "src/index.ts",
6
6
  "description": "directus API wrapper for all the directus sdk functionality",
@@ -36,17 +36,17 @@
36
36
  "vite": "^5.4.2",
37
37
  "vitest": "^2.0.5",
38
38
  "@internal/eslint-config": "0.0.0",
39
- "@tanglemedia/svelte-starter-core": "0.2.1"
39
+ "@tanglemedia/svelte-starter-core": "0.2.2"
40
40
  },
41
41
  "dependencies": {
42
- "@directus/sdk": "^17.0.0",
42
+ "@directus/sdk": "^17.0.1",
43
43
  "@types/js-cookie": "^3.0.6",
44
44
  "esm-env": "^1.0.0",
45
45
  "js-cookie": "^3.0.5"
46
46
  },
47
47
  "peerDependencies": {
48
48
  "@sveltejs/kit": ">=2 <3",
49
- "@tanglemedia/svelte-starter-core": ">=0.2.1",
49
+ "@tanglemedia/svelte-starter-core": ">=0.2.2",
50
50
  "svelte": ">=4 <5"
51
51
  },
52
52
  "scripts": {
@@ -18,6 +18,7 @@ import {
18
18
  ApiAdapterAbstract,
19
19
  type AnyObject,
20
20
  type ApiAdapterRequestConfig,
21
+ type ApiAggregateQuery,
21
22
  type ApiCreateManyQuery,
22
23
  type ApiDeleteManyQuery,
23
24
  type ApiFindQuery,
@@ -79,7 +80,10 @@ export class DirectusApiAdapter<
79
80
 
80
81
  const data = await this.directus.request(aggregate(collection, {
81
82
  aggregate: { count: '*' },
82
- query: { filter, search }
83
+ query: {
84
+ ...(filter ? { filter } : {}),
85
+ ...(search ? { search } : {}),
86
+ }
83
87
  }));
84
88
 
85
89
  if (data && data.length === 1) {
@@ -157,18 +161,21 @@ export class DirectusApiAdapter<
157
161
  return this.transformResponse({ data });
158
162
  }
159
163
 
160
- public async aggregate<T>(
164
+ public async aggregate<T, Q = T, R = T>(
161
165
  collection: Path,
162
- query?: Record<string, unknown>
163
- ): Promise<ApiResponse<T>> {
166
+ query: ApiAggregateQuery<Q>
167
+ ): Promise<ApiResponse<R>> {
168
+ const { aggregate: aggregate_, ...rest } = (query || {});
169
+
164
170
  const data = await this.directus.request<T>(
165
171
  aggregate(collection, {
166
- aggregate: {
172
+ aggregate: aggregate_ ? aggregate_ : {
167
173
  count: 'id'
168
174
  },
169
- query
175
+ query: rest
170
176
  })
171
177
  );
178
+
172
179
  return this.transformResponse({ data });
173
180
  }
174
181
 
@@ -1,9 +1,8 @@
1
- import type { AuthenticationClient } from '@directus/sdk';
1
+ import type { AuthenticationClient, DirectusClient, RestClient } from '@directus/sdk';
2
2
  import { readFiles, readMe, updateMe } from '@directus/sdk';
3
- import type { DirectusClient, RestClient } from '@directus/sdk';
4
- import { ServiceAdapterAbstract } from '@tanglemedia/svelte-starter-core';
3
+ import { ServiceAbstract } from '@tanglemedia/svelte-starter-core';
5
4
 
6
- class DirectusAuthServices extends ServiceAdapterAbstract {
5
+ class DirectusAuthServices extends ServiceAbstract {
7
6
  public getDirectus() {
8
7
  return this.getAdapterClient<
9
8
  DirectusClient<object> & RestClient<object> & AuthenticationClient<object>