@dearourcommunity/client 0.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.
- package/dist/auth.client.d.ts +13 -0
- package/dist/auth.client.d.ts.map +1 -0
- package/dist/auth.client.js +26 -0
- package/dist/auth.client.js.map +1 -0
- package/dist/course.client.d.ts +11 -0
- package/dist/course.client.d.ts.map +1 -0
- package/dist/course.client.js +18 -0
- package/dist/course.client.js.map +1 -0
- package/dist/health.client.d.ts +9 -0
- package/dist/health.client.d.ts.map +1 -0
- package/dist/health.client.js +14 -0
- package/dist/health.client.js.map +1 -0
- package/dist/http-client.d.ts +28 -0
- package/dist/http-client.d.ts.map +1 -0
- package/dist/http-client.js +87 -0
- package/dist/http-client.js.map +1 -0
- package/dist/index.d.ts +42 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +65 -0
- package/dist/index.js.map +1 -0
- package/dist/org.client.d.ts +21 -0
- package/dist/org.client.d.ts.map +1 -0
- package/dist/org.client.js +40 -0
- package/dist/org.client.js.map +1 -0
- package/dist/packages.client.d.ts +13 -0
- package/dist/packages.client.d.ts.map +1 -0
- package/dist/packages.client.js +22 -0
- package/dist/packages.client.js.map +1 -0
- package/dist/purchases.client.d.ts +13 -0
- package/dist/purchases.client.d.ts.map +1 -0
- package/dist/purchases.client.js +22 -0
- package/dist/purchases.client.js.map +1 -0
- package/dist/types.d.ts +145 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +13 -0
- package/dist/types.js.map +1 -0
- package/package.json +25 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { HttpClient } from './http-client';
|
|
2
|
+
import type { UserProfile, LoginResponse, LoginDto, RegisterDto } from './types';
|
|
3
|
+
export declare class AuthClient {
|
|
4
|
+
private http;
|
|
5
|
+
constructor(http: HttpClient);
|
|
6
|
+
/** POST /api/v1/auth/login */
|
|
7
|
+
login(dto: LoginDto): Promise<LoginResponse>;
|
|
8
|
+
/** POST /api/v1/auth/register */
|
|
9
|
+
register(dto: RegisterDto): Promise<LoginResponse>;
|
|
10
|
+
/** GET /api/v1/auth/me */
|
|
11
|
+
me(): Promise<UserProfile>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=auth.client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.client.d.ts","sourceRoot":"","sources":["../src/auth.client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEjF,qBAAa,UAAU;IACP,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEpC,8BAA8B;IACxB,KAAK,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC;IAMlD,iCAAiC;IAC3B,QAAQ,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAMxD,0BAA0B;IACpB,EAAE,IAAI,OAAO,CAAC,WAAW,CAAC;CAGnC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuthClient = void 0;
|
|
4
|
+
class AuthClient {
|
|
5
|
+
constructor(http) {
|
|
6
|
+
this.http = http;
|
|
7
|
+
}
|
|
8
|
+
/** POST /api/v1/auth/login */
|
|
9
|
+
async login(dto) {
|
|
10
|
+
const res = await this.http.post('/auth/login', { body: dto });
|
|
11
|
+
this.http.setToken(res.accessToken);
|
|
12
|
+
return res;
|
|
13
|
+
}
|
|
14
|
+
/** POST /api/v1/auth/register */
|
|
15
|
+
async register(dto) {
|
|
16
|
+
const res = await this.http.post('/auth/register', { body: dto });
|
|
17
|
+
this.http.setToken(res.accessToken);
|
|
18
|
+
return res;
|
|
19
|
+
}
|
|
20
|
+
/** GET /api/v1/auth/me */
|
|
21
|
+
async me() {
|
|
22
|
+
return this.http.get('/auth/me');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.AuthClient = AuthClient;
|
|
26
|
+
//# sourceMappingURL=auth.client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.client.js","sourceRoot":"","sources":["../src/auth.client.ts"],"names":[],"mappings":";;;AAGA,MAAa,UAAU;IACnB,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAExC,8BAA8B;IAC9B,KAAK,CAAC,KAAK,CAAC,GAAa;QACrB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAgB,aAAa,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9E,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACpC,OAAO,GAAG,CAAC;IACf,CAAC;IAED,iCAAiC;IACjC,KAAK,CAAC,QAAQ,CAAC,GAAgB;QAC3B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAgB,gBAAgB,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACpC,OAAO,GAAG,CAAC;IACf,CAAC;IAED,0BAA0B;IAC1B,KAAK,CAAC,EAAE;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAc,UAAU,CAAC,CAAC;IAClD,CAAC;CACJ;AArBD,gCAqBC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { HttpClient } from './http-client';
|
|
2
|
+
import type { Course } from './types';
|
|
3
|
+
export declare class CourseClient {
|
|
4
|
+
private http;
|
|
5
|
+
constructor(http: HttpClient);
|
|
6
|
+
/** GET /api/v1/course?keyword= */
|
|
7
|
+
findAll(keyword?: string): Promise<Course[]>;
|
|
8
|
+
/** GET /api/v1/course/:id */
|
|
9
|
+
findById(id: number): Promise<Course>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=course.client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"course.client.d.ts","sourceRoot":"","sources":["../src/course.client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEtC,qBAAa,YAAY;IACT,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEpC,kCAAkC;IAClC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAI5C,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAGxC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CourseClient = void 0;
|
|
4
|
+
class CourseClient {
|
|
5
|
+
constructor(http) {
|
|
6
|
+
this.http = http;
|
|
7
|
+
}
|
|
8
|
+
/** GET /api/v1/course?keyword= */
|
|
9
|
+
findAll(keyword) {
|
|
10
|
+
return this.http.get('/course', { params: { keyword } });
|
|
11
|
+
}
|
|
12
|
+
/** GET /api/v1/course/:id */
|
|
13
|
+
findById(id) {
|
|
14
|
+
return this.http.get(`/course/${id}`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.CourseClient = CourseClient;
|
|
18
|
+
//# sourceMappingURL=course.client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"course.client.js","sourceRoot":"","sources":["../src/course.client.ts"],"names":[],"mappings":";;;AAGA,MAAa,YAAY;IACrB,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAExC,kCAAkC;IAClC,OAAO,CAAC,OAAgB;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAW,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,6BAA6B;IAC7B,QAAQ,CAAC,EAAU;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,WAAW,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC;CACJ;AAZD,oCAYC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { HttpClient } from './http-client';
|
|
2
|
+
import type { HealthStatus } from './types';
|
|
3
|
+
export declare class HealthClient {
|
|
4
|
+
private http;
|
|
5
|
+
constructor(http: HttpClient);
|
|
6
|
+
/** GET /api/v1/health */
|
|
7
|
+
check(): Promise<HealthStatus>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=health.client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.client.d.ts","sourceRoot":"","sources":["../src/health.client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,qBAAa,YAAY;IACT,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEpC,yBAAyB;IACzB,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC;CAGjC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HealthClient = void 0;
|
|
4
|
+
class HealthClient {
|
|
5
|
+
constructor(http) {
|
|
6
|
+
this.http = http;
|
|
7
|
+
}
|
|
8
|
+
/** GET /api/v1/health */
|
|
9
|
+
check() {
|
|
10
|
+
return this.http.get('/health');
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.HealthClient = HealthClient;
|
|
14
|
+
//# sourceMappingURL=health.client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.client.js","sourceRoot":"","sources":["../src/health.client.ts"],"names":[],"mappings":";;;AAGA,MAAa,YAAY;IACrB,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAExC,yBAAyB;IACzB,KAAK;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAe,SAAS,CAAC,CAAC;IAClD,CAAC;CACJ;AAPD,oCAOC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export declare class ApiError extends Error {
|
|
2
|
+
readonly code: number;
|
|
3
|
+
readonly details?: unknown;
|
|
4
|
+
constructor(message: string, code: number, details?: unknown);
|
|
5
|
+
}
|
|
6
|
+
export interface RequestOptions {
|
|
7
|
+
body?: unknown;
|
|
8
|
+
params?: Record<string, string | undefined>;
|
|
9
|
+
}
|
|
10
|
+
export declare class HttpClient {
|
|
11
|
+
private baseUrl;
|
|
12
|
+
private token;
|
|
13
|
+
/**
|
|
14
|
+
* @param baseUrl - API base URL (origin). Defaults to empty string (same-origin).
|
|
15
|
+
* Example: 'https://api.example.com'
|
|
16
|
+
*/
|
|
17
|
+
constructor(baseUrl?: string);
|
|
18
|
+
/** Set the Bearer token for subsequent requests. */
|
|
19
|
+
setToken(token: string | null): void;
|
|
20
|
+
/** Get the current Bearer token. */
|
|
21
|
+
getToken(): string | null;
|
|
22
|
+
get<T>(path: string, options?: RequestOptions): Promise<T>;
|
|
23
|
+
post<T>(path: string, options?: RequestOptions): Promise<T>;
|
|
24
|
+
patch<T>(path: string, options?: RequestOptions): Promise<T>;
|
|
25
|
+
delete<T>(path: string, options?: RequestOptions): Promise<T>;
|
|
26
|
+
private request;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=http-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"AAKA,qBAAa,QAAS,SAAQ,KAAK;IAC/B,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,OAAO,CAAC,EAAE,OAAO,CAAC;gBAEtB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAM/D;AAKD,MAAM,WAAW,cAAc;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC/C;AAKD,qBAAa,UAAU;IACnB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAuB;IAEpC;;;OAGG;gBACS,OAAO,CAAC,EAAE,MAAM;IAK5B,oDAAoD;IACpD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAIpC,oCAAoC;IACpC,QAAQ,IAAI,MAAM,GAAG,IAAI;IAOnB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAI1D,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAI3D,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAI5D,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;YAOrD,OAAO;CA0CxB"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HttpClient = exports.ApiError = void 0;
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
// Custom error class for API errors
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
class ApiError extends Error {
|
|
8
|
+
constructor(message, code, details) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.name = 'ApiError';
|
|
11
|
+
this.code = code;
|
|
12
|
+
this.details = details;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.ApiError = ApiError;
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
// HTTP Client — thin wrapper around fetch
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
class HttpClient {
|
|
20
|
+
/**
|
|
21
|
+
* @param baseUrl - API base URL (origin). Defaults to empty string (same-origin).
|
|
22
|
+
* Example: 'https://api.example.com'
|
|
23
|
+
*/
|
|
24
|
+
constructor(baseUrl) {
|
|
25
|
+
this.token = null;
|
|
26
|
+
// strip trailing slash
|
|
27
|
+
this.baseUrl = baseUrl ? baseUrl.replace(/\/+$/, '') : '';
|
|
28
|
+
}
|
|
29
|
+
/** Set the Bearer token for subsequent requests. */
|
|
30
|
+
setToken(token) {
|
|
31
|
+
this.token = token;
|
|
32
|
+
}
|
|
33
|
+
/** Get the current Bearer token. */
|
|
34
|
+
getToken() {
|
|
35
|
+
return this.token;
|
|
36
|
+
}
|
|
37
|
+
// -----------------------------------------------------------------------
|
|
38
|
+
// Public helpers
|
|
39
|
+
// -----------------------------------------------------------------------
|
|
40
|
+
async get(path, options) {
|
|
41
|
+
return this.request('GET', path, options);
|
|
42
|
+
}
|
|
43
|
+
async post(path, options) {
|
|
44
|
+
return this.request('POST', path, options);
|
|
45
|
+
}
|
|
46
|
+
async patch(path, options) {
|
|
47
|
+
return this.request('PATCH', path, options);
|
|
48
|
+
}
|
|
49
|
+
async delete(path, options) {
|
|
50
|
+
return this.request('DELETE', path, options);
|
|
51
|
+
}
|
|
52
|
+
// -----------------------------------------------------------------------
|
|
53
|
+
// Core request
|
|
54
|
+
// -----------------------------------------------------------------------
|
|
55
|
+
async request(method, path, options) {
|
|
56
|
+
// Build URL — `/api/v1` is the global prefix + version
|
|
57
|
+
const url = new URL(`${this.baseUrl}/api/v1${path}`, 'http://localhost');
|
|
58
|
+
// Query params
|
|
59
|
+
if (options?.params) {
|
|
60
|
+
for (const [key, value] of Object.entries(options.params)) {
|
|
61
|
+
if (value !== undefined) {
|
|
62
|
+
url.searchParams.set(key, value);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Headers
|
|
67
|
+
const headers = {};
|
|
68
|
+
headers['Accept'] = 'application/json';
|
|
69
|
+
if (this.token) {
|
|
70
|
+
headers['Authorization'] = `Bearer ${this.token}`;
|
|
71
|
+
}
|
|
72
|
+
// Body
|
|
73
|
+
let body;
|
|
74
|
+
if (options?.body !== undefined) {
|
|
75
|
+
headers['Content-Type'] = 'application/json';
|
|
76
|
+
body = JSON.stringify(options.body);
|
|
77
|
+
}
|
|
78
|
+
const res = await fetch(url.toString(), { method, headers, body });
|
|
79
|
+
const json = await res.json();
|
|
80
|
+
if (!json.success) {
|
|
81
|
+
throw new ApiError(json.error?.message ?? 'Unknown API error', json.error?.code ?? res.status, json.error?.details);
|
|
82
|
+
}
|
|
83
|
+
return json.data;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
exports.HttpClient = HttpClient;
|
|
87
|
+
//# sourceMappingURL=http-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":";;;AAEA,8EAA8E;AAC9E,oCAAoC;AACpC,8EAA8E;AAC9E,MAAa,QAAS,SAAQ,KAAK;IAI/B,YAAY,OAAe,EAAE,IAAY,EAAE,OAAiB;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;CACJ;AAVD,4BAUC;AAUD,8EAA8E;AAC9E,0CAA0C;AAC1C,8EAA8E;AAC9E,MAAa,UAAU;IAInB;;;OAGG;IACH,YAAY,OAAgB;QANpB,UAAK,GAAkB,IAAI,CAAC;QAOhC,uBAAuB;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9D,CAAC;IAED,oDAAoD;IACpD,QAAQ,CAAC,KAAoB;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,oCAAoC;IACpC,QAAQ;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,0EAA0E;IAC1E,iBAAiB;IACjB,0EAA0E;IAC1E,KAAK,CAAC,GAAG,CAAI,IAAY,EAAE,OAAwB;QAC/C,OAAO,IAAI,CAAC,OAAO,CAAI,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,IAAI,CAAI,IAAY,EAAE,OAAwB;QAChD,OAAO,IAAI,CAAC,OAAO,CAAI,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,KAAK,CAAI,IAAY,EAAE,OAAwB;QACjD,OAAO,IAAI,CAAC,OAAO,CAAI,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,MAAM,CAAI,IAAY,EAAE,OAAwB;QAClD,OAAO,IAAI,CAAC,OAAO,CAAI,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,0EAA0E;IAC1E,eAAe;IACf,0EAA0E;IAClE,KAAK,CAAC,OAAO,CAAI,MAAc,EAAE,IAAY,EAAE,OAAwB;QAC3E,uDAAuD;QACvD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,UAAU,IAAI,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAEzE,eAAe;QACf,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YAClB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACtB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACrC,CAAC;YACL,CAAC;QACL,CAAC;QAED,UAAU;QACV,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,OAAO,CAAC,QAAQ,CAAC,GAAG,kBAAkB,CAAC;QAEvC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC;QACtD,CAAC;QAED,OAAO;QACP,IAAI,IAAwB,CAAC;QAC7B,IAAI,OAAO,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;YAC7C,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAEnE,MAAM,IAAI,GAAmB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAE9C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,MAAM,IAAI,QAAQ,CACd,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,mBAAmB,EAC1C,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,GAAG,CAAC,MAAM,EAC9B,IAAI,CAAC,KAAK,EAAE,OAAO,CACtB,CAAC;QACN,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;CACJ;AAvFD,gCAuFC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { AuthClient } from './auth.client';
|
|
2
|
+
import { OrgClient } from './org.client';
|
|
3
|
+
import { PackagesClient } from './packages.client';
|
|
4
|
+
import { CourseClient } from './course.client';
|
|
5
|
+
import { PurchasesClient } from './purchases.client';
|
|
6
|
+
import { HealthClient } from './health.client';
|
|
7
|
+
export { ApiError, HttpClient } from './http-client';
|
|
8
|
+
export * from './types';
|
|
9
|
+
export interface DocClientOptions {
|
|
10
|
+
/** API base URL (origin). Defaults to same-origin. */
|
|
11
|
+
baseUrl?: string;
|
|
12
|
+
/** Initial Bearer token. */
|
|
13
|
+
token?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* DearOurCommunity API Client
|
|
17
|
+
*
|
|
18
|
+
* Usage:
|
|
19
|
+
* ```ts
|
|
20
|
+
* const client = new DocClient({ baseUrl: 'https://api.example.com' });
|
|
21
|
+
*
|
|
22
|
+
* // Login
|
|
23
|
+
* const { user } = await client.auth.login({ email, password });
|
|
24
|
+
*
|
|
25
|
+
* // Authenticated requests
|
|
26
|
+
* const orgs = await client.org.getMyOrgs();
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare class DocClient {
|
|
30
|
+
readonly auth: AuthClient;
|
|
31
|
+
readonly org: OrgClient;
|
|
32
|
+
readonly packages: PackagesClient;
|
|
33
|
+
readonly course: CourseClient;
|
|
34
|
+
readonly purchases: PurchasesClient;
|
|
35
|
+
readonly health: HealthClient;
|
|
36
|
+
private readonly http;
|
|
37
|
+
constructor(options?: DocClientOptions);
|
|
38
|
+
/** Get or set the Bearer token. */
|
|
39
|
+
get token(): string | null;
|
|
40
|
+
set token(value: string | null);
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACrD,cAAc,SAAS,CAAC;AAExB,MAAM,WAAW,gBAAgB;IAC7B,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,SAAS;IAClB,SAAgB,IAAI,EAAE,UAAU,CAAC;IACjC,SAAgB,GAAG,EAAE,SAAS,CAAC;IAC/B,SAAgB,QAAQ,EAAE,cAAc,CAAC;IACzC,SAAgB,MAAM,EAAE,YAAY,CAAC;IACrC,SAAgB,SAAS,EAAE,eAAe,CAAC;IAC3C,SAAgB,MAAM,EAAE,YAAY,CAAC;IAErC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;gBAEtB,OAAO,CAAC,EAAE,gBAAgB;IActC,mCAAmC;IACnC,IAAI,KAAK,IAAI,MAAM,GAAG,IAAI,CAEzB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAE7B;CACJ"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.DocClient = exports.HttpClient = exports.ApiError = void 0;
|
|
18
|
+
const http_client_1 = require("./http-client");
|
|
19
|
+
const auth_client_1 = require("./auth.client");
|
|
20
|
+
const org_client_1 = require("./org.client");
|
|
21
|
+
const packages_client_1 = require("./packages.client");
|
|
22
|
+
const course_client_1 = require("./course.client");
|
|
23
|
+
const purchases_client_1 = require("./purchases.client");
|
|
24
|
+
const health_client_1 = require("./health.client");
|
|
25
|
+
var http_client_2 = require("./http-client");
|
|
26
|
+
Object.defineProperty(exports, "ApiError", { enumerable: true, get: function () { return http_client_2.ApiError; } });
|
|
27
|
+
Object.defineProperty(exports, "HttpClient", { enumerable: true, get: function () { return http_client_2.HttpClient; } });
|
|
28
|
+
__exportStar(require("./types"), exports);
|
|
29
|
+
/**
|
|
30
|
+
* DearOurCommunity API Client
|
|
31
|
+
*
|
|
32
|
+
* Usage:
|
|
33
|
+
* ```ts
|
|
34
|
+
* const client = new DocClient({ baseUrl: 'https://api.example.com' });
|
|
35
|
+
*
|
|
36
|
+
* // Login
|
|
37
|
+
* const { user } = await client.auth.login({ email, password });
|
|
38
|
+
*
|
|
39
|
+
* // Authenticated requests
|
|
40
|
+
* const orgs = await client.org.getMyOrgs();
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
class DocClient {
|
|
44
|
+
constructor(options) {
|
|
45
|
+
this.http = new http_client_1.HttpClient(options?.baseUrl);
|
|
46
|
+
if (options?.token) {
|
|
47
|
+
this.http.setToken(options.token);
|
|
48
|
+
}
|
|
49
|
+
this.auth = new auth_client_1.AuthClient(this.http);
|
|
50
|
+
this.org = new org_client_1.OrgClient(this.http);
|
|
51
|
+
this.packages = new packages_client_1.PackagesClient(this.http);
|
|
52
|
+
this.course = new course_client_1.CourseClient(this.http);
|
|
53
|
+
this.purchases = new purchases_client_1.PurchasesClient(this.http);
|
|
54
|
+
this.health = new health_client_1.HealthClient(this.http);
|
|
55
|
+
}
|
|
56
|
+
/** Get or set the Bearer token. */
|
|
57
|
+
get token() {
|
|
58
|
+
return this.http.getToken();
|
|
59
|
+
}
|
|
60
|
+
set token(value) {
|
|
61
|
+
this.http.setToken(value);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.DocClient = DocClient;
|
|
65
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+CAA2C;AAC3C,+CAA2C;AAC3C,6CAAyC;AACzC,uDAAmD;AACnD,mDAA+C;AAC/C,yDAAqD;AACrD,mDAA+C;AAE/C,6CAAqD;AAA5C,uGAAA,QAAQ,OAAA;AAAE,yGAAA,UAAU,OAAA;AAC7B,0CAAwB;AASxB;;;;;;;;;;;;;GAaG;AACH,MAAa,SAAS;IAUlB,YAAY,OAA0B;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,wBAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,wBAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,GAAG,IAAI,sBAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,gCAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,IAAI,4BAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,kCAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,IAAI,4BAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,mCAAmC;IACnC,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,KAAK,CAAC,KAAoB;QAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;CACJ;AAhCD,8BAgCC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { HttpClient } from './http-client';
|
|
2
|
+
import type { Organization, OrganizationMember, OrganizationInvitation, InviteMemberDto, AcceptInvitationDto } from './types';
|
|
3
|
+
export declare class OrgClient {
|
|
4
|
+
private http;
|
|
5
|
+
constructor(http: HttpClient);
|
|
6
|
+
/** GET /api/v1/org/invitations/check?token= — public */
|
|
7
|
+
checkInvitation(token: string): Promise<OrganizationInvitation>;
|
|
8
|
+
/** POST /api/v1/org/invitations/accept */
|
|
9
|
+
acceptInvitation(dto: AcceptInvitationDto): Promise<void>;
|
|
10
|
+
/** GET /api/v1/org/me */
|
|
11
|
+
getMyOrgs(): Promise<Organization[]>;
|
|
12
|
+
/** GET /api/v1/org/:id */
|
|
13
|
+
getDetail(id: string): Promise<Organization>;
|
|
14
|
+
/** GET /api/v1/org/:id/members */
|
|
15
|
+
getMembers(orgId: string): Promise<OrganizationMember[]>;
|
|
16
|
+
/** POST /api/v1/org/:id/invitations — OWNER only */
|
|
17
|
+
inviteMember(orgId: string, dto: InviteMemberDto): Promise<void>;
|
|
18
|
+
/** DELETE /api/v1/org/:id/members/:memberId — OWNER only */
|
|
19
|
+
removeMember(orgId: string, memberId: string): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=org.client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org.client.d.ts","sourceRoot":"","sources":["../src/org.client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EACR,YAAY,EACZ,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,mBAAmB,EACtB,MAAM,SAAS,CAAC;AAEjB,qBAAa,SAAS;IACN,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEpC,wDAAwD;IACxD,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAM/D,0CAA0C;IAC1C,gBAAgB,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD,yBAAyB;IACzB,SAAS,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAIpC,0BAA0B;IAC1B,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI5C,kCAAkC;IAClC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAIxD,oDAAoD;IACpD,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhE,4DAA4D;IAC5D,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG/D"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OrgClient = void 0;
|
|
4
|
+
class OrgClient {
|
|
5
|
+
constructor(http) {
|
|
6
|
+
this.http = http;
|
|
7
|
+
}
|
|
8
|
+
/** GET /api/v1/org/invitations/check?token= — public */
|
|
9
|
+
checkInvitation(token) {
|
|
10
|
+
return this.http.get('/org/invitations/check', {
|
|
11
|
+
params: { token },
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
/** POST /api/v1/org/invitations/accept */
|
|
15
|
+
acceptInvitation(dto) {
|
|
16
|
+
return this.http.post('/org/invitations/accept', { body: dto });
|
|
17
|
+
}
|
|
18
|
+
/** GET /api/v1/org/me */
|
|
19
|
+
getMyOrgs() {
|
|
20
|
+
return this.http.get('/org/me');
|
|
21
|
+
}
|
|
22
|
+
/** GET /api/v1/org/:id */
|
|
23
|
+
getDetail(id) {
|
|
24
|
+
return this.http.get(`/org/${id}`);
|
|
25
|
+
}
|
|
26
|
+
/** GET /api/v1/org/:id/members */
|
|
27
|
+
getMembers(orgId) {
|
|
28
|
+
return this.http.get(`/org/${orgId}/members`);
|
|
29
|
+
}
|
|
30
|
+
/** POST /api/v1/org/:id/invitations — OWNER only */
|
|
31
|
+
inviteMember(orgId, dto) {
|
|
32
|
+
return this.http.post(`/org/${orgId}/invitations`, { body: dto });
|
|
33
|
+
}
|
|
34
|
+
/** DELETE /api/v1/org/:id/members/:memberId — OWNER only */
|
|
35
|
+
removeMember(orgId, memberId) {
|
|
36
|
+
return this.http.delete(`/org/${orgId}/members/${memberId}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.OrgClient = OrgClient;
|
|
40
|
+
//# sourceMappingURL=org.client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org.client.js","sourceRoot":"","sources":["../src/org.client.ts"],"names":[],"mappings":";;;AASA,MAAa,SAAS;IAClB,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAExC,wDAAwD;IACxD,eAAe,CAAC,KAAa;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAyB,wBAAwB,EAAE;YACnE,MAAM,EAAE,EAAE,KAAK,EAAE;SACpB,CAAC,CAAC;IACP,CAAC;IAED,0CAA0C;IAC1C,gBAAgB,CAAC,GAAwB;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAO,yBAAyB,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,yBAAyB;IACzB,SAAS;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiB,SAAS,CAAC,CAAC;IACpD,CAAC;IAED,0BAA0B;IAC1B,SAAS,CAAC,EAAU;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAe,QAAQ,EAAE,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,kCAAkC;IAClC,UAAU,CAAC,KAAa;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAuB,QAAQ,KAAK,UAAU,CAAC,CAAC;IACxE,CAAC;IAED,oDAAoD;IACpD,YAAY,CAAC,KAAa,EAAE,GAAoB;QAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAO,QAAQ,KAAK,cAAc,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,4DAA4D;IAC5D,YAAY,CAAC,KAAa,EAAE,QAAgB;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAO,QAAQ,KAAK,YAAY,QAAQ,EAAE,CAAC,CAAC;IACvE,CAAC;CACJ;AAvCD,8BAuCC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { HttpClient } from './http-client';
|
|
2
|
+
import type { Package, UpdatePackageDto } from './types';
|
|
3
|
+
export declare class PackagesClient {
|
|
4
|
+
private http;
|
|
5
|
+
constructor(http: HttpClient);
|
|
6
|
+
/** GET /api/v1/packages?type= */
|
|
7
|
+
findAll(type?: 'youth' | 'organization'): Promise<Package[]>;
|
|
8
|
+
/** GET /api/v1/packages/:id */
|
|
9
|
+
findById(id: string): Promise<Package>;
|
|
10
|
+
/** PATCH /api/v1/packages/:id — admin only */
|
|
11
|
+
update(id: string, dto: UpdatePackageDto): Promise<Package>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=packages.client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packages.client.d.ts","sourceRoot":"","sources":["../src/packages.client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEzD,qBAAa,cAAc;IACX,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEpC,iCAAiC;IACjC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,cAAc,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAI5D,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAItC,8CAA8C;IAC9C,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;CAG9D"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PackagesClient = void 0;
|
|
4
|
+
class PackagesClient {
|
|
5
|
+
constructor(http) {
|
|
6
|
+
this.http = http;
|
|
7
|
+
}
|
|
8
|
+
/** GET /api/v1/packages?type= */
|
|
9
|
+
findAll(type) {
|
|
10
|
+
return this.http.get('/packages', { params: { type } });
|
|
11
|
+
}
|
|
12
|
+
/** GET /api/v1/packages/:id */
|
|
13
|
+
findById(id) {
|
|
14
|
+
return this.http.get(`/packages/${id}`);
|
|
15
|
+
}
|
|
16
|
+
/** PATCH /api/v1/packages/:id — admin only */
|
|
17
|
+
update(id, dto) {
|
|
18
|
+
return this.http.patch(`/packages/${id}`, { body: dto });
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.PackagesClient = PackagesClient;
|
|
22
|
+
//# sourceMappingURL=packages.client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packages.client.js","sourceRoot":"","sources":["../src/packages.client.ts"],"names":[],"mappings":";;;AAGA,MAAa,cAAc;IACvB,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAExC,iCAAiC;IACjC,OAAO,CAAC,IAA+B;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAY,WAAW,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,+BAA+B;IAC/B,QAAQ,CAAC,EAAU;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAU,aAAa,EAAE,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,8CAA8C;IAC9C,MAAM,CAAC,EAAU,EAAE,GAAqB;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAU,aAAa,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IACtE,CAAC;CACJ;AAjBD,wCAiBC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { HttpClient } from './http-client';
|
|
2
|
+
import type { Purchase, CreatePurchaseDto, PurchaseExtraSlotsDto } from './types';
|
|
3
|
+
export declare class PurchasesClient {
|
|
4
|
+
private http;
|
|
5
|
+
constructor(http: HttpClient);
|
|
6
|
+
/** POST /api/v1/purchases */
|
|
7
|
+
purchase(dto: CreatePurchaseDto): Promise<Purchase>;
|
|
8
|
+
/** POST /api/v1/org/:orgId/purchases/extra-slots */
|
|
9
|
+
purchaseExtraSlots(orgId: string, dto: PurchaseExtraSlotsDto): Promise<Purchase>;
|
|
10
|
+
/** GET /api/v1/org/:orgId/purchases */
|
|
11
|
+
getOrgPurchases(orgId: string): Promise<Purchase[]>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=purchases.client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"purchases.client.d.ts","sourceRoot":"","sources":["../src/purchases.client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAElF,qBAAa,eAAe;IACZ,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEpC,6BAA6B;IAC7B,QAAQ,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAInD,oDAAoD;IACpD,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIhF,uCAAuC;IACvC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CAGtD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PurchasesClient = void 0;
|
|
4
|
+
class PurchasesClient {
|
|
5
|
+
constructor(http) {
|
|
6
|
+
this.http = http;
|
|
7
|
+
}
|
|
8
|
+
/** POST /api/v1/purchases */
|
|
9
|
+
purchase(dto) {
|
|
10
|
+
return this.http.post('/purchases', { body: dto });
|
|
11
|
+
}
|
|
12
|
+
/** POST /api/v1/org/:orgId/purchases/extra-slots */
|
|
13
|
+
purchaseExtraSlots(orgId, dto) {
|
|
14
|
+
return this.http.post(`/org/${orgId}/purchases/extra-slots`, { body: dto });
|
|
15
|
+
}
|
|
16
|
+
/** GET /api/v1/org/:orgId/purchases */
|
|
17
|
+
getOrgPurchases(orgId) {
|
|
18
|
+
return this.http.get(`/org/${orgId}/purchases`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.PurchasesClient = PurchasesClient;
|
|
22
|
+
//# sourceMappingURL=purchases.client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"purchases.client.js","sourceRoot":"","sources":["../src/purchases.client.ts"],"names":[],"mappings":";;;AAGA,MAAa,eAAe;IACxB,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAExC,6BAA6B;IAC7B,QAAQ,CAAC,GAAsB;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAW,YAAY,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,oDAAoD;IACpD,kBAAkB,CAAC,KAAa,EAAE,GAA0B;QACxD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAW,QAAQ,KAAK,wBAAwB,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,uCAAuC;IACvC,eAAe,CAAC,KAAa;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAa,QAAQ,KAAK,YAAY,CAAC,CAAC;IAChE,CAAC;CACJ;AAjBD,0CAiBC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
export interface SuccessResponse<T> {
|
|
2
|
+
success: true;
|
|
3
|
+
data: T;
|
|
4
|
+
timestamp: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ErrorResponse {
|
|
7
|
+
success: false;
|
|
8
|
+
error: {
|
|
9
|
+
code: number;
|
|
10
|
+
message: string;
|
|
11
|
+
details?: unknown;
|
|
12
|
+
};
|
|
13
|
+
timestamp: string;
|
|
14
|
+
}
|
|
15
|
+
export type ApiResponse<T> = SuccessResponse<T> | ErrorResponse;
|
|
16
|
+
export interface UserProfile {
|
|
17
|
+
id: string;
|
|
18
|
+
email: string;
|
|
19
|
+
displayName: string;
|
|
20
|
+
isAdmin: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface LoginResponse {
|
|
23
|
+
accessToken: string;
|
|
24
|
+
user: UserProfile;
|
|
25
|
+
}
|
|
26
|
+
export interface LoginDto {
|
|
27
|
+
email: string;
|
|
28
|
+
password: string;
|
|
29
|
+
}
|
|
30
|
+
export interface RegisterDto {
|
|
31
|
+
firstName: string;
|
|
32
|
+
lastName: string;
|
|
33
|
+
email: string;
|
|
34
|
+
countryCode?: string;
|
|
35
|
+
phone: string;
|
|
36
|
+
password: string;
|
|
37
|
+
repeatPassword: string;
|
|
38
|
+
agreeToTerms: boolean;
|
|
39
|
+
}
|
|
40
|
+
export type PackageType = 'youth' | 'organization' | 'extra_slots';
|
|
41
|
+
export interface PackageCourse {
|
|
42
|
+
id: string;
|
|
43
|
+
wpCourseId: number;
|
|
44
|
+
orderIndex: number;
|
|
45
|
+
}
|
|
46
|
+
export interface Package {
|
|
47
|
+
id: string;
|
|
48
|
+
name: string;
|
|
49
|
+
description: string | null;
|
|
50
|
+
packageType: PackageType;
|
|
51
|
+
price: number;
|
|
52
|
+
slots: number;
|
|
53
|
+
features: Record<string, boolean> | null;
|
|
54
|
+
courses: PackageCourse[];
|
|
55
|
+
createdAt: string;
|
|
56
|
+
}
|
|
57
|
+
export declare const PACKAGE_IDS: {
|
|
58
|
+
readonly YOUTH_BASIC: "youth-basic";
|
|
59
|
+
readonly YOUTH_STANDARD: "youth-standard";
|
|
60
|
+
readonly YOUTH_PREMIUM: "youth-premium";
|
|
61
|
+
readonly ORG_BASIC: "organization-basic";
|
|
62
|
+
readonly ORG_STANDARD: "organization-standard";
|
|
63
|
+
readonly ORG_PREMIUM: "organization-premium";
|
|
64
|
+
readonly EXTRA_SLOT: "extra-slot";
|
|
65
|
+
};
|
|
66
|
+
export type PackageId = (typeof PACKAGE_IDS)[keyof typeof PACKAGE_IDS];
|
|
67
|
+
export interface UpdatePackageDto {
|
|
68
|
+
name?: string;
|
|
69
|
+
description?: string;
|
|
70
|
+
price?: number;
|
|
71
|
+
slots?: number;
|
|
72
|
+
features?: Record<string, boolean>;
|
|
73
|
+
courses?: Array<{
|
|
74
|
+
id: number;
|
|
75
|
+
order?: number;
|
|
76
|
+
}>;
|
|
77
|
+
}
|
|
78
|
+
export interface Course {
|
|
79
|
+
ID: number;
|
|
80
|
+
postTitle: string;
|
|
81
|
+
postStatus: string;
|
|
82
|
+
postType: string;
|
|
83
|
+
}
|
|
84
|
+
export type MemberRole = 'member' | 'owner';
|
|
85
|
+
export type MemberStatus = 'active' | 'inactive';
|
|
86
|
+
export type InvitationStatus = 'pending' | 'accepted' | 'expired';
|
|
87
|
+
export interface Organization {
|
|
88
|
+
id: string;
|
|
89
|
+
ownerId: string;
|
|
90
|
+
name: string;
|
|
91
|
+
createdAt: string;
|
|
92
|
+
}
|
|
93
|
+
export interface OrganizationMember {
|
|
94
|
+
id: string;
|
|
95
|
+
organizationId: string;
|
|
96
|
+
userId: string;
|
|
97
|
+
role: MemberRole;
|
|
98
|
+
status: MemberStatus;
|
|
99
|
+
joinedAt: string;
|
|
100
|
+
}
|
|
101
|
+
export interface OrganizationInvitation {
|
|
102
|
+
id: string;
|
|
103
|
+
organizationId: string;
|
|
104
|
+
invitedBy: string;
|
|
105
|
+
email: string;
|
|
106
|
+
token: string;
|
|
107
|
+
status: InvitationStatus;
|
|
108
|
+
expiresAt: string;
|
|
109
|
+
createdAt: string;
|
|
110
|
+
inviter?: {
|
|
111
|
+
id: string;
|
|
112
|
+
displayName: string;
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
export interface InviteMemberDto {
|
|
116
|
+
email: string;
|
|
117
|
+
}
|
|
118
|
+
export interface AcceptInvitationDto {
|
|
119
|
+
token: string;
|
|
120
|
+
}
|
|
121
|
+
export type PurchaseStatus = 'completed' | 'pending' | 'failed';
|
|
122
|
+
export type PurchaseType = 'package' | 'extra_slots';
|
|
123
|
+
export interface Purchase {
|
|
124
|
+
id: string;
|
|
125
|
+
userId: string;
|
|
126
|
+
packageId: string;
|
|
127
|
+
organizationId: string;
|
|
128
|
+
amountPaid: number;
|
|
129
|
+
status: PurchaseStatus;
|
|
130
|
+
type: PurchaseType;
|
|
131
|
+
slots: number;
|
|
132
|
+
createdAt: string;
|
|
133
|
+
}
|
|
134
|
+
export interface CreatePurchaseDto {
|
|
135
|
+
packageId: PackageId;
|
|
136
|
+
paymentMethod: string;
|
|
137
|
+
}
|
|
138
|
+
export interface PurchaseExtraSlotsDto {
|
|
139
|
+
slots: number;
|
|
140
|
+
paymentMethod: string;
|
|
141
|
+
}
|
|
142
|
+
export interface HealthStatus {
|
|
143
|
+
status: 'ok';
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PACKAGE_IDS = void 0;
|
|
4
|
+
exports.PACKAGE_IDS = {
|
|
5
|
+
YOUTH_BASIC: 'youth-basic',
|
|
6
|
+
YOUTH_STANDARD: 'youth-standard',
|
|
7
|
+
YOUTH_PREMIUM: 'youth-premium',
|
|
8
|
+
ORG_BASIC: 'organization-basic',
|
|
9
|
+
ORG_STANDARD: 'organization-standard',
|
|
10
|
+
ORG_PREMIUM: 'organization-premium',
|
|
11
|
+
EXTRA_SLOT: 'extra-slot',
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAuEa,QAAA,WAAW,GAAG;IACvB,WAAW,EAAE,aAAa;IAC1B,cAAc,EAAE,gBAAgB;IAChC,aAAa,EAAE,eAAe;IAC9B,SAAS,EAAE,oBAAoB;IAC/B,YAAY,EAAE,uBAAuB;IACrC,WAAW,EAAE,sBAAsB;IACnC,UAAU,EAAE,YAAY;CAClB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@dearourcommunity/client",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "DearOurCommunity API Client — typed client for NestJS BFF",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"prepublishOnly": "npm run build",
|
|
13
|
+
"publish": "npm publish --access public"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"dearourcommunity",
|
|
17
|
+
"api-client",
|
|
18
|
+
"nestjs"
|
|
19
|
+
],
|
|
20
|
+
"license": "UNLICENSED",
|
|
21
|
+
"dependencies": {},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"typescript": "^5.7.3"
|
|
24
|
+
}
|
|
25
|
+
}
|