@viridial/shared 1.0.2 → 1.0.3

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 +1 @@
1
- {"version":3,"file":"http.client.d.ts","sourceRoot":"","sources":["../../api/http.client.ts"],"names":[],"mappings":"AAAA,OAAc,EAAsB,KAAK,kBAAkB,EAAsB,MAAM,OAAO,CAAA;AAC9F,OAAO,KAAK,EAAE,WAAW,EAAY,MAAM,oBAAoB,CAAA;AAG/D;;GAEG;AACH,cAAM,UAAU;IACd,OAAO,CAAC,MAAM,CAAe;gBAEjB,OAAO,GAAE,MAAe;IAYpC,OAAO,CAAC,iBAAiB;IAkCzB,OAAO,CAAC,WAAW;IAcb,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IASzE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAStF,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IASrF,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IASvF,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAQnF;AAED,eAAO,MAAM,UAAU,YAAmB,CAAA"}
1
+ {"version":3,"file":"http.client.d.ts","sourceRoot":"","sources":["../../api/http.client.ts"],"names":[],"mappings":"AAAA,OAAc,EAAsB,KAAK,kBAAkB,EAAsB,MAAM,OAAO,CAAA;AAC9F,OAAO,KAAK,EAAE,WAAW,EAAY,MAAM,oBAAoB,CAAA;AAiB/D;;GAEG;AACH,cAAM,UAAU;IACd,OAAO,CAAC,MAAM,CAAe;gBAEjB,OAAO,CAAC,EAAE,MAAM;IAc5B,OAAO,CAAC,iBAAiB;IAkCzB,OAAO,CAAC,WAAW;IAcb,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IASzE,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAStF,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IASrF,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IASvF,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAQnF;AAED,eAAO,MAAM,UAAU,YAAmB,CAAA"}
@@ -1,12 +1,26 @@
1
1
  import axios from 'axios';
2
2
  import { tokenUtils } from '../utils/token.utils';
3
+ /**
4
+ * Get API base URL from environment or use default
5
+ * Note: In the shared package, we use '/api' as default (proxy path)
6
+ * The actual URL is configured in the frontend application via Vite proxy
7
+ */
8
+ const getApiBaseUrl = () => {
9
+ // Try to get from window (if set by Vite at runtime)
10
+ if (typeof window !== 'undefined' && window.__API_BASE_URL__) {
11
+ return window.__API_BASE_URL__;
12
+ }
13
+ // Default: use proxy path (Vite will proxy /api to the configured backend)
14
+ return '/api';
15
+ };
3
16
  /**
4
17
  * Client HTTP configuré avec intercepteurs pour l'authentification
5
18
  */
6
19
  class HttpClient {
7
- constructor(baseURL = '/api') {
20
+ constructor(baseURL) {
21
+ const apiBaseUrl = baseURL || getApiBaseUrl();
8
22
  this.client = axios.create({
9
- baseURL,
23
+ baseURL: apiBaseUrl,
10
24
  timeout: 30000,
11
25
  headers: {
12
26
  'Content-Type': 'application/json'
@@ -0,0 +1,89 @@
1
+ export interface Organization {
2
+ id: number;
3
+ name: string;
4
+ type: 'AGENCY' | 'FREELANCE' | 'COMPANY';
5
+ email: string;
6
+ phone?: string;
7
+ address?: string;
8
+ siret?: string;
9
+ status: 'ACTIVE' | 'INACTIVE' | 'SUSPENDED' | 'PENDING';
10
+ userCount?: number;
11
+ createdAt: string;
12
+ updatedAt?: string;
13
+ }
14
+ export interface OrganizationCreate {
15
+ name: string;
16
+ type: 'AGENCY' | 'FREELANCE' | 'COMPANY';
17
+ email: string;
18
+ phone?: string;
19
+ address?: string;
20
+ siret?: string;
21
+ status?: 'ACTIVE' | 'INACTIVE' | 'SUSPENDED' | 'PENDING';
22
+ }
23
+ export interface OrganizationUpdate {
24
+ name?: string;
25
+ type?: 'AGENCY' | 'FREELANCE' | 'COMPANY';
26
+ email?: string;
27
+ phone?: string;
28
+ address?: string;
29
+ siret?: string;
30
+ status?: 'ACTIVE' | 'INACTIVE' | 'SUSPENDED' | 'PENDING';
31
+ }
32
+ export interface OrganizationSearchParams {
33
+ status?: string;
34
+ type?: string;
35
+ search?: string;
36
+ page?: number;
37
+ size?: number;
38
+ }
39
+ export interface OrganizationStats {
40
+ total: number;
41
+ active: number;
42
+ inactive: number;
43
+ suspended: number;
44
+ }
45
+ /**
46
+ * Service de gestion des organisations
47
+ */
48
+ export declare const organizationService: {
49
+ /**
50
+ * Récupérer toutes les organisations
51
+ */
52
+ getAll(params?: OrganizationSearchParams): Promise<{
53
+ organizations: Organization[];
54
+ total: number;
55
+ }>;
56
+ /**
57
+ * Récupérer une organisation par ID
58
+ */
59
+ getById(id: number): Promise<Organization>;
60
+ /**
61
+ * Créer une organisation
62
+ */
63
+ create(data: OrganizationCreate): Promise<Organization>;
64
+ /**
65
+ * Mettre à jour une organisation
66
+ */
67
+ update(id: number, data: OrganizationUpdate): Promise<Organization>;
68
+ /**
69
+ * Supprimer une organisation
70
+ */
71
+ delete(id: number): Promise<void>;
72
+ /**
73
+ * Activer une organisation
74
+ */
75
+ activate(id: number): Promise<Organization>;
76
+ /**
77
+ * Suspendre une organisation
78
+ */
79
+ suspend(id: number, reason?: string): Promise<Organization>;
80
+ /**
81
+ * Récupérer les statistiques
82
+ */
83
+ getStats(): Promise<OrganizationStats>;
84
+ /**
85
+ * Rechercher des organisations
86
+ */
87
+ search(query: string, params?: OrganizationSearchParams): Promise<Organization[]>;
88
+ };
89
+ //# sourceMappingURL=organization.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organization.service.d.ts","sourceRoot":"","sources":["../../api/organization.service.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAA;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAA;IACvD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAA;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAA;CACzD;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAA;IACzC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAA;CACzD;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB;IAC9B;;OAEG;oBACmB,wBAAwB,GAAG,OAAO,CAAC;QAAE,aAAa,EAAE,YAAY,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAW1G;;OAEG;gBACe,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAKhD;;OAEG;iBACgB,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAK7D;;OAEG;eACc,MAAM,QAAQ,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAKzE;;OAEG;eACc,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC;;OAEG;iBACgB,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAOjD;;OAEG;gBACe,MAAM,WAAW,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAQjE;;OAEG;gBACe,OAAO,CAAC,iBAAiB,CAAC;IAO5C;;OAEG;kBACiB,MAAM,WAAW,wBAAwB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAOxF,CAAA"}
@@ -0,0 +1,72 @@
1
+ import { httpClient } from './http.client';
2
+ import { API_ENDPOINTS } from '../constants/api.constants';
3
+ /**
4
+ * Service de gestion des organisations
5
+ */
6
+ export const organizationService = {
7
+ /**
8
+ * Récupérer toutes les organisations
9
+ */
10
+ async getAll(params) {
11
+ const response = await httpClient.get(API_ENDPOINTS.ORGANIZATIONS.BASE, { params });
12
+ return {
13
+ organizations: response.data?.content || response.data || [],
14
+ total: response.data?.totalElements || 0
15
+ };
16
+ },
17
+ /**
18
+ * Récupérer une organisation par ID
19
+ */
20
+ async getById(id) {
21
+ const response = await httpClient.get(API_ENDPOINTS.ORGANIZATIONS.BY_ID(id));
22
+ return response.data;
23
+ },
24
+ /**
25
+ * Créer une organisation
26
+ */
27
+ async create(data) {
28
+ const response = await httpClient.post(API_ENDPOINTS.ORGANIZATIONS.BASE, data);
29
+ return response.data;
30
+ },
31
+ /**
32
+ * Mettre à jour une organisation
33
+ */
34
+ async update(id, data) {
35
+ const response = await httpClient.put(API_ENDPOINTS.ORGANIZATIONS.BY_ID(id), data);
36
+ return response.data;
37
+ },
38
+ /**
39
+ * Supprimer une organisation
40
+ */
41
+ async delete(id) {
42
+ await httpClient.delete(API_ENDPOINTS.ORGANIZATIONS.BY_ID(id));
43
+ },
44
+ /**
45
+ * Activer une organisation
46
+ */
47
+ async activate(id) {
48
+ const response = await httpClient.patch(`${API_ENDPOINTS.ORGANIZATIONS.BY_ID(id)}/activate`);
49
+ return response.data;
50
+ },
51
+ /**
52
+ * Suspendre une organisation
53
+ */
54
+ async suspend(id, reason) {
55
+ const response = await httpClient.patch(`${API_ENDPOINTS.ORGANIZATIONS.BY_ID(id)}/suspend`, { reason });
56
+ return response.data;
57
+ },
58
+ /**
59
+ * Récupérer les statistiques
60
+ */
61
+ async getStats() {
62
+ const response = await httpClient.get(`${API_ENDPOINTS.ORGANIZATIONS.BASE}/stats`);
63
+ return response.data;
64
+ },
65
+ /**
66
+ * Rechercher des organisations
67
+ */
68
+ async search(query, params) {
69
+ const response = await httpClient.get(`${API_ENDPOINTS.ORGANIZATIONS.BASE}/search`, { params: { q: query, ...params } });
70
+ return response.data || [];
71
+ }
72
+ };
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Configuration des variables d'environnement pour le package shared
3
+ * Note: Ce fichier doit être utilisé côté client uniquement
4
+ */
5
+ export declare const env: {
6
+ readonly apiBaseUrl: string;
7
+ };
8
+ export default env;
9
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../config/env.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgBH,eAAO,MAAM,GAAG;;CAEN,CAAA;AAEV,eAAe,GAAG,CAAA"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Configuration des variables d'environnement pour le package shared
3
+ * Note: Ce fichier doit être utilisé côté client uniquement
4
+ */
5
+ // Pour le package shared, on utilise les variables d'environnement du projet parent
6
+ // ou des valeurs par défaut pour le développement local
7
+ const getApiBaseUrl = () => {
8
+ // En développement, utiliser la variable d'environnement ou la valeur par défaut
9
+ if (typeof window !== 'undefined') {
10
+ // Côté client, on peut utiliser import.meta.env si disponible
11
+ // Sinon, utiliser la valeur par défaut
12
+ return '/api'; // Proxy vers le gateway
13
+ }
14
+ // Côté serveur ou fallback
15
+ return process.env.VITE_API_BASE_URL || 'http://localhost:8080';
16
+ };
17
+ export const env = {
18
+ apiBaseUrl: getApiBaseUrl()
19
+ };
20
+ export default env;
@@ -28,5 +28,5 @@ export declare const API_ENDPOINTS: {
28
28
  readonly BY_ID: (id: number) => string;
29
29
  };
30
30
  };
31
- export declare const API_BASE_URL = "/api";
31
+ export declare const API_BASE_URL: string;
32
32
  //# sourceMappingURL=api.constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.constants.d.ts","sourceRoot":"","sources":["../../constants/api.constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;6BAcV,MAAM;;;;6BAKN,MAAM;;;;gCAIH,MAAM;;;;6BAKT,MAAM;;CAEZ,CAAA;AAEV,eAAO,MAAM,YAAY,SAAS,CAAA"}
1
+ {"version":3,"file":"api.constants.d.ts","sourceRoot":"","sources":["../../constants/api.constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;6BAcV,MAAM;;;;6BAKN,MAAM;;;;gCAIH,MAAM;;;;6BAKT,MAAM;;CAEZ,CAAA;AAgBV,eAAO,MAAM,YAAY,QAAkB,CAAA"}
@@ -32,4 +32,17 @@ export const API_ENDPOINTS = {
32
32
  BY_ID: (id) => `/organization-service/api/organizations/${id}`
33
33
  }
34
34
  };
35
- export const API_BASE_URL = '/api';
35
+ /**
36
+ * Get API base URL from environment
37
+ * Note: In the shared package, we use '/api' as default (proxy path)
38
+ * The actual URL is configured in the frontend application via Vite proxy
39
+ */
40
+ const getApiBaseUrl = () => {
41
+ // Try to get from window (if set by Vite at runtime)
42
+ if (typeof window !== 'undefined' && window.__API_BASE_URL__) {
43
+ return window.__API_BASE_URL__;
44
+ }
45
+ // Default: use proxy path (Vite will proxy /api to the configured backend)
46
+ return '/api';
47
+ };
48
+ export const API_BASE_URL = getApiBaseUrl();
package/dist/index.d.ts CHANGED
@@ -5,6 +5,8 @@ export { httpClient } from './api/http.client';
5
5
  export { authService } from './api/auth.service';
6
6
  export { propertyService } from './api/property.service';
7
7
  export { userService } from './api/user.service';
8
+ export { organizationService } from './api/organization.service';
9
+ export type { Organization, OrganizationCreate, OrganizationUpdate, OrganizationSearchParams, OrganizationStats } from './api/organization.service';
8
10
  export { useAuthStore } from './stores/auth.store';
9
11
  export { useUserStore } from './stores/user.store';
10
12
  export { useAuth } from './composables/useAuth';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGhD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAGlD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAG/C,mBAAmB,mBAAmB,CAAA;AACtC,mBAAmB,oBAAoB,CAAA;AACvC,mBAAmB,wBAAwB,CAAA;AAC3C,mBAAmB,oBAAoB,CAAA;AAGvC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAGhD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAGvE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EAClB,MAAM,4BAA4B,CAAA;AAGnC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAGlD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAG/C,mBAAmB,mBAAmB,CAAA;AACtC,mBAAmB,oBAAoB,CAAA;AACvC,mBAAmB,wBAAwB,CAAA;AAC3C,mBAAmB,oBAAoB,CAAA;AAGvC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAGhD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAGvE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA"}
package/dist/index.js CHANGED
@@ -6,6 +6,7 @@ export { httpClient } from './api/http.client';
6
6
  export { authService } from './api/auth.service';
7
7
  export { propertyService } from './api/property.service';
8
8
  export { userService } from './api/user.service';
9
+ export { organizationService } from './api/organization.service';
9
10
  // Stores
10
11
  export { useAuthStore } from './stores/auth.store';
11
12
  export { useUserStore } from './stores/user.store';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@viridial/shared",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "type": "module",
5
5
  "description": "Shared modules for Real Estate frontend applications - Vue 3, TypeScript, Pinia, Axios",
6
6
  "main": "./dist/index.js",