@tanglemedia/svelte-starter-directus-api 0.1.2 → 0.1.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/adapter/api-adapter.d.ts +4 -1
- package/dist/adapter/api-adapter.js +16 -1
- package/dist/provider/api-adapter.provider.d.ts +1 -1
- package/dist/provider/directus.factory.d.ts +1 -1
- package/dist/services/auth.d.ts +2 -2
- package/dist/services/auth.js +2 -2
- package/package.json +8 -8
- package/src/adapter/api-adapter.ts +24 -1
- package/src/services/auth.ts +2 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type DirectusClient, type RestClient } from '@directus/sdk';
|
|
2
|
-
import { ApiAdapterAbstract, type AnyObject, type ApiAdapterRequestConfig, type ApiId, type ApiResponse, type BaseApiMethods } from '@tanglemedia/svelte-starter-core';
|
|
2
|
+
import { ApiAdapterAbstract, type AnyObject, type ApiAdapterRequestConfig, type ApiCreateManyQuery, type ApiDeleteManyQuery, 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
|
export declare class DirectusApiAdapter<Schema extends SchemaShape = SchemaShape, Path extends string = keyof SchemaShape> extends ApiAdapterAbstract<DirectusConfig, ApiAdapterRequestConfig, Path, AdapterClient> {
|
|
@@ -19,4 +19,7 @@ export declare class DirectusApiAdapter<Schema extends SchemaShape = SchemaShape
|
|
|
19
19
|
delete<T>(collection: Path, key?: ApiId): Promise<ApiResponse<T>>;
|
|
20
20
|
put<T>(collection: Path, key?: ApiId, payload?: AnyObject): Promise<ApiResponse<T>>;
|
|
21
21
|
upload<T>(path: string | undefined, data: FormData): Promise<ApiResponse<T>>;
|
|
22
|
+
createMany<T, R = T>(path: Path, body: ApiCreateManyQuery<T>): Promise<ApiResponse<R[], Response, AnyObject>>;
|
|
23
|
+
updateMany<T, R = T>(path: Path, body: ApiUpdateManyQuery<T>): Promise<ApiResponse<R[], Response, AnyObject>>;
|
|
24
|
+
deleteMany<R = null>(path: Path, body: ApiDeleteManyQuery<ApiId>): Promise<ApiResponse<R, Response, AnyObject>>;
|
|
22
25
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { aggregate, createItem, deleteItem,
|
|
1
|
+
import { aggregate, createItem, createItems, deleteItem, deleteItems, readItem, readItems, updateItem, updateItems, uploadFiles } from '@directus/sdk';
|
|
2
2
|
import { ApiAdapterAbstract } from '@tanglemedia/svelte-starter-core';
|
|
3
3
|
export class DirectusApiAdapter extends ApiAdapterAbstract {
|
|
4
4
|
config;
|
|
@@ -97,4 +97,19 @@ export class DirectusApiAdapter extends ApiAdapterAbstract {
|
|
|
97
97
|
const response = await this.directus.request(uploadFiles(data));
|
|
98
98
|
return this.transformResponse(response, 201);
|
|
99
99
|
}
|
|
100
|
+
async createMany(path, body) {
|
|
101
|
+
const response = await this.directus.request(createItems(path, body.data));
|
|
102
|
+
return this.transformResponse(response, 200);
|
|
103
|
+
}
|
|
104
|
+
async updateMany(path, body) {
|
|
105
|
+
if (!body.ids) {
|
|
106
|
+
throw Error('You must provide an array of keys to update');
|
|
107
|
+
}
|
|
108
|
+
const response = await this.directus.request(updateItems(path, body.ids || [], body.data));
|
|
109
|
+
return this.transformResponse(response, 200);
|
|
110
|
+
}
|
|
111
|
+
async deleteMany(path, body) {
|
|
112
|
+
const response = await this.directus.request(deleteItems(path, body.ids));
|
|
113
|
+
return this.transformResponse(response, 201);
|
|
114
|
+
}
|
|
100
115
|
}
|
|
@@ -2,6 +2,6 @@ import type { AdapterProviderRegister, ApiAdapterInterface, ApiAdapterProviderIn
|
|
|
2
2
|
import type { DirectusConfig } from '../types/adapter.types';
|
|
3
3
|
export declare class DirectusApiProvider implements ApiAdapterProviderInterface<DirectusConfig> {
|
|
4
4
|
loadAdapter(key?: string, config?: DirectusConfig): Promise<ApiAdapterInterface<DirectusConfig>>;
|
|
5
|
-
createDirectusClient<T extends object>(config: DirectusConfig): import("@directus/sdk
|
|
5
|
+
createDirectusClient<T extends object>(config: DirectusConfig): import("@directus/sdk").DirectusClient<T> & import("@directus/sdk").RestClient<T>;
|
|
6
6
|
}
|
|
7
7
|
export declare const registerDirectusProvider: () => AdapterProviderRegister;
|
|
@@ -3,4 +3,4 @@ import type { DirectusConfig } from '../types/adapter.types';
|
|
|
3
3
|
/**
|
|
4
4
|
* Creates a directus client based on the application configuration
|
|
5
5
|
*/
|
|
6
|
-
export declare const createDirectusClientFactory: <T extends object>({ baseUrl, configuration: { protocol, host, auth, staticToken: token, graphql: gql, rest: rs } }: DirectusConfig, options?: ClientOptions) => import("@directus/sdk
|
|
6
|
+
export declare const createDirectusClientFactory: <T extends object>({ baseUrl, configuration: { protocol, host, auth, staticToken: token, graphql: gql, rest: rs } }: DirectusConfig, options?: ClientOptions) => import("@directus/sdk").DirectusClient<T> & import("@directus/sdk").RestClient<T>;
|
package/dist/services/auth.d.ts
CHANGED
|
@@ -3,9 +3,9 @@ import type { DirectusClient, RestClient } from '@directus/sdk';
|
|
|
3
3
|
import { ServiceAdapterAbstract } from '@tanglemedia/svelte-starter-core';
|
|
4
4
|
declare class DirectusAuthServices extends ServiceAdapterAbstract {
|
|
5
5
|
getDirectus(): Promise<DirectusClient<object> & RestClient<object> & AuthenticationClient<object>>;
|
|
6
|
-
refresh(): Promise<import("@directus/sdk
|
|
6
|
+
refresh(): Promise<import("@directus/sdk").AuthenticationData>;
|
|
7
7
|
getToken(): Promise<string | null>;
|
|
8
|
-
login(email: string, password: string): Promise<import("@directus/sdk
|
|
8
|
+
login(email: string, password: string): Promise<import("@directus/sdk").AuthenticationData>;
|
|
9
9
|
logout(): Promise<void>;
|
|
10
10
|
getCurrentUser<T>(fields?: string[] | null): Promise<T>;
|
|
11
11
|
updateCurrentUser<T>(data: object): Promise<T>;
|
package/dist/services/auth.js
CHANGED
|
@@ -49,7 +49,7 @@ class DirectusAuthServices extends ServiceAdapterAbstract {
|
|
|
49
49
|
}
|
|
50
50
|
async getCurrentUser(fields = null) {
|
|
51
51
|
try {
|
|
52
|
-
if (!await this.getToken())
|
|
52
|
+
if (!(await this.getToken()))
|
|
53
53
|
await this.refresh();
|
|
54
54
|
const response = await (await this.getDirectus()).request(readMe({ fields: fields ? fields : ['*', 'roles.*'] }));
|
|
55
55
|
return response;
|
|
@@ -61,7 +61,7 @@ class DirectusAuthServices extends ServiceAdapterAbstract {
|
|
|
61
61
|
}
|
|
62
62
|
async updateCurrentUser(data) {
|
|
63
63
|
try {
|
|
64
|
-
if (!await this.getToken())
|
|
64
|
+
if (!(await this.getToken()))
|
|
65
65
|
await this.refresh();
|
|
66
66
|
const response = await (await this.getDirectus()).request(updateMe(data));
|
|
67
67
|
return response;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanglemedia/svelte-starter-directus-api",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"main": "src/index.ts",
|
|
5
5
|
"types": "src/index.ts",
|
|
6
6
|
"description": "directus API wrapper for all the directus sdk functionality",
|
|
@@ -25,23 +25,23 @@
|
|
|
25
25
|
"@sveltejs/adapter-auto": "^3.1.1",
|
|
26
26
|
"@sveltejs/package": "^2.2.6",
|
|
27
27
|
"@sveltejs/vite-plugin-svelte": "^3.0.2",
|
|
28
|
-
"@testing-library/jest-dom": "^6.4.
|
|
28
|
+
"@testing-library/jest-dom": "^6.4.2",
|
|
29
29
|
"@testing-library/svelte": "^4.1.0",
|
|
30
30
|
"@vitest/coverage-v8": "^1.2.2",
|
|
31
31
|
"jsdom": "^24.0.0",
|
|
32
|
-
"msw": "^2.
|
|
33
|
-
"svelte": "^4.2.
|
|
34
|
-
"svelte-check": "^3.6.
|
|
35
|
-
"vite": "^5.
|
|
32
|
+
"msw": "^2.2.0",
|
|
33
|
+
"svelte": "^4.2.11",
|
|
34
|
+
"svelte-check": "^3.6.4",
|
|
35
|
+
"vite": "^5.1.3",
|
|
36
36
|
"vitest": "^1.2.2",
|
|
37
37
|
"eslint-config-custom": "0.0.0"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@directus/sdk": "^
|
|
40
|
+
"@directus/sdk": "^15.0.1",
|
|
41
41
|
"@types/js-cookie": "^3.0.6",
|
|
42
42
|
"esm-env": "^1.0.0",
|
|
43
43
|
"js-cookie": "^3.0.5",
|
|
44
|
-
"@tanglemedia/svelte-starter-core": "0.0
|
|
44
|
+
"@tanglemedia/svelte-starter-core": "0.1.0"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
47
|
"@sveltejs/kit": ">=2 <3",
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
aggregate,
|
|
3
3
|
createItem,
|
|
4
|
+
createItems,
|
|
4
5
|
deleteItem,
|
|
5
|
-
|
|
6
|
+
deleteItems,
|
|
6
7
|
readItem,
|
|
7
8
|
readItems,
|
|
8
9
|
updateItem,
|
|
10
|
+
updateItems,
|
|
9
11
|
uploadFiles,
|
|
10
12
|
type DirectusClient,
|
|
11
13
|
type RestClient
|
|
@@ -14,8 +16,11 @@ import {
|
|
|
14
16
|
ApiAdapterAbstract,
|
|
15
17
|
type AnyObject,
|
|
16
18
|
type ApiAdapterRequestConfig,
|
|
19
|
+
type ApiCreateManyQuery,
|
|
20
|
+
type ApiDeleteManyQuery,
|
|
17
21
|
type ApiId,
|
|
18
22
|
type ApiResponse,
|
|
23
|
+
type ApiUpdateManyQuery,
|
|
19
24
|
type BaseApiMethods
|
|
20
25
|
} from '@tanglemedia/svelte-starter-core';
|
|
21
26
|
import type { DirectusConfig, SchemaShape } from '../types/adapter.types';
|
|
@@ -161,4 +166,22 @@ export class DirectusApiAdapter<
|
|
|
161
166
|
const response = await this.directus.request<T>(uploadFiles(data));
|
|
162
167
|
return this.transformResponse(response, 201);
|
|
163
168
|
}
|
|
169
|
+
|
|
170
|
+
async createMany<T, R = T>(path: Path, body: ApiCreateManyQuery<T>) {
|
|
171
|
+
const response = await this.directus.request<T>(createItems(path, body.data));
|
|
172
|
+
return this.transformResponse<R[]>(response, 200);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
async updateMany<T, R = T>(path: Path, body: ApiUpdateManyQuery<T>) {
|
|
176
|
+
if (!body.ids) {
|
|
177
|
+
throw Error('You must provide an array of keys to update');
|
|
178
|
+
}
|
|
179
|
+
const response = await this.directus.request<T>(updateItems(path, body.ids || [], body.data));
|
|
180
|
+
return this.transformResponse<R[]>(response, 200);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
async deleteMany<R = null>(path: Path, body: ApiDeleteManyQuery<ApiId>) {
|
|
184
|
+
const response = await this.directus.request(deleteItems(path, body.ids));
|
|
185
|
+
return this.transformResponse<R>(response as R, 201);
|
|
186
|
+
}
|
|
164
187
|
}
|
package/src/services/auth.ts
CHANGED
|
@@ -56,7 +56,7 @@ class DirectusAuthServices extends ServiceAdapterAbstract {
|
|
|
56
56
|
|
|
57
57
|
public async getCurrentUser<T>(fields: string[] | null = null): Promise<T> {
|
|
58
58
|
try {
|
|
59
|
-
if (!await this.getToken()) await this.refresh();
|
|
59
|
+
if (!(await this.getToken())) await this.refresh();
|
|
60
60
|
const response = await (
|
|
61
61
|
await this.getDirectus()
|
|
62
62
|
).request<T>(readMe({ fields: fields ? fields : ['*', 'roles.*'] }));
|
|
@@ -69,7 +69,7 @@ class DirectusAuthServices extends ServiceAdapterAbstract {
|
|
|
69
69
|
|
|
70
70
|
public async updateCurrentUser<T>(data: object): Promise<T> {
|
|
71
71
|
try {
|
|
72
|
-
if (!await this.getToken()) await this.refresh();
|
|
72
|
+
if (!(await this.getToken())) await this.refresh();
|
|
73
73
|
const response = await (await this.getDirectus()).request<T>(updateMe(data));
|
|
74
74
|
return response;
|
|
75
75
|
} catch (error) {
|