@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.
@@ -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":"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"}
@@ -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"}
@@ -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
+ }