@ng-vagabond-lab/ng-dsv 0.1.92 → 0.1.94

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.
@@ -110,12 +110,12 @@ class ApiService {
110
110
  });
111
111
  }
112
112
  info(url, data) {
113
- if (this.platformService.isPlatformBrowser()) {
113
+ if (this.isPlatformBrowser()) {
114
114
  console.log(url, data);
115
115
  }
116
116
  }
117
117
  error(url, error) {
118
- if (this.platformService.isPlatformBrowser()) {
118
+ if (this.isPlatformBrowser()) {
119
119
  console.error(url, error);
120
120
  }
121
121
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-api.mjs","sources":["../../../projects/ng-dsv/api/service/api.resource.service.ts","../../../projects/ng-dsv/api/service/api.service.ts","../../../projects/ng-dsv/api/service/search/base.search.service.ts","../../../projects/ng-dsv/api/ng-vagabond-lab-ng-dsv-api.ts"],"sourcesContent":["import { httpResource } from '@angular/common/http';\nimport { Injectable, ResourceRef, signal } from '@angular/core';\nimport { OrderState } from '../public-api';\n\nexport interface ApiFindBy {\n endPoint?: string;\n fields?: string;\n values?: string;\n first?: number;\n max?: number;\n order?: OrderState;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiResourceService<T> {\n url = signal<string | undefined>(undefined);\n\n resource: ResourceRef<T | undefined> = httpResource(() => ({\n url: `${this.url()}`,\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n params: {},\n reportProgress: true,\n transferCache: true,\n keepalive: true,\n mode: 'same-origin',\n redirect: 'error',\n priority: 'high',\n cache: 'force-cache',\n credentials: 'include',\n referrer: 'no-referrer',\n integrity: 'sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GhEXAMPLEKEY=',\n }));\n\n constructor() {}\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable, signal } from '@angular/core';\nimport { ToastService } from '@ng-vagabond-lab/ng-dsv/ds/toast';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { Observable } from 'rxjs';\nimport { ApiDto, ID, JSONObject, OrderState } from '../dto/api.dto';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiService {\n readonly httpClient = inject(HttpClient);\n readonly toastService = inject(ToastService);\n readonly platformService = inject(PlatformService);\n\n load = signal<boolean>(false);\n baseUrl: string = '';\n\n setBaseUrl(url: string) {\n this.baseUrl = url;\n }\n\n get<T>(url: string, callback: (data: T) => void) {\n this.doSubscribe(url, this.httpClient.get<T>(this.baseUrl + url), callback);\n }\n\n post<T>(url: string, data: T, callback: (data: T) => void, withCredentials: boolean = false) {\n this.doSubscribe(\n url,\n this.httpClient.post<T>(this.baseUrl + url, data, { withCredentials }),\n callback,\n );\n }\n\n put<T>(url: string, data: T, callback: (data: T) => void) {\n this.doSubscribe(url, this.httpClient.put<T>(this.baseUrl + url, data), callback);\n }\n\n delete<T>(url: string, callback: (data: T) => void) {\n this.doSubscribe(url, this.httpClient.delete<T>(this.baseUrl + url), callback);\n }\n\n findById<T>(endPoint: string, id: ID, callback: (data: T) => void) {\n this.get<T>(endPoint + '/' + id, callback);\n }\n\n findBy<T>(\n endPoint: string,\n fields: string,\n values: string,\n first: number,\n max: number,\n order: OrderState,\n callback: (data: T) => void,\n ) {\n const orderType: string = order.orderAsc ? '' : 'Desc';\n const orderConst: string = order.order ? '>>' + order.order + orderType : '';\n const fieldsComplete = fields + orderConst;\n this.get<T>(\n endPoint +\n '?fields=' +\n encodeURI(fieldsComplete) +\n '&values=' +\n encodeURI(values) +\n '&first=' +\n first +\n '&max=' +\n max,\n (data: T) => {\n callback(data);\n },\n );\n }\n\n countBy(endPoint: string, fields: string, values: string, callback: (data: { count: number }) => void) {\n return this.get<{ count: number }>(\n endPoint + '?fields=' + encodeURI(fields) + '&values=' + values,\n (data: { count: number }) => {\n callback(data);\n },\n );\n }\n\n createOrUpdate<T extends ApiDto>(endPoint: string, data: T, callback: (data: T) => void) {\n if (data.id !== null && data.id !== undefined && data.id !== '' && Number(data.id) > 0) {\n this.put<T>('/' + endPoint + '/', data, (dateReturn: T) => {\n this.toastService.showToast({ text: 'UPDATE_OK', type: 'success' });\n callback(dateReturn);\n });\n } else {\n this.post<T>('/' + endPoint + '/', data, (dateReturn: T) => {\n this.toastService.showToast({ text: 'CREATION_OK', type: 'success' });\n callback(dateReturn);\n });\n }\n }\n\n doSubscribe<T>(url: string, observable: Observable<T>, callback: (data: T) => void) {\n this.load.set(true);\n observable.subscribe({\n next: (res) => {\n this.load.set(false);\n this.info(url, res as JSONObject);\n callback(res);\n },\n error: (error: JSONObject) => {\n this.load.set(false);\n this.error(url, error);\n },\n });\n }\n\n info(url: string, data: JSONObject) {\n if (this.platformService.isPlatformBrowser()) {\n console.log(url, data);\n }\n }\n\n error(url: string, error: JSONObject) {\n if (this.platformService.isPlatformBrowser()) {\n console.error(url, error);\n }\n }\n\n isPlatformBrowser() {\n return this.platformService.isPlatformBrowser();\n }\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { Store } from '@ng-vagabond-lab/ng-dsv/storage';\nimport { PageableDto } from '../../public-api';\nimport { ApiService } from '../api.service';\n\n@Injectable({ providedIn: 'root' })\nexport abstract class BaseSearchService<T> {\n readonly apiService = inject(ApiService);\n readonly platformService = inject(PlatformService);\n\n datas = new Store<T>();\n\n page = signal<number>(1);\n isLoading = signal<boolean>(false);\n stopLoad = signal<boolean>(false);\n search = signal<string>('');\n\n doLoad(\n url: string,\n search: string = '',\n page: number = 1,\n nbPage: number = 20,\n field: string = 'content',\n ) {\n const params = '?page=' + page + '&nbPage=' + nbPage + '&query=' + search;\n\n this.search.set(search);\n if (page === 1) {\n this.stopLoad.set(false);\n }\n if (this.stopLoad()) {\n return;\n }\n this.isLoading.set(true);\n this.apiService.get<PageableDto<T>>(url + params, (data) => {\n this.page.set(page + nbPage);\n this.datas.updateForPage(page, data[field as keyof PageableDto<T>] as T[]);\n if ((data[field as keyof PageableDto<T>] as T[])?.length === 0) {\n this.stopLoad.set(true);\n }\n this.isLoading.set(false);\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-api.mjs","sources":["../../../projects/ng-dsv/api/service/api.resource.service.ts","../../../projects/ng-dsv/api/service/api.service.ts","../../../projects/ng-dsv/api/service/search/base.search.service.ts","../../../projects/ng-dsv/api/ng-vagabond-lab-ng-dsv-api.ts"],"sourcesContent":["import { httpResource } from '@angular/common/http';\nimport { Injectable, ResourceRef, signal } from '@angular/core';\nimport { OrderState } from '../public-api';\n\nexport interface ApiFindBy {\n endPoint?: string;\n fields?: string;\n values?: string;\n first?: number;\n max?: number;\n order?: OrderState;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiResourceService<T> {\n url = signal<string | undefined>(undefined);\n\n resource: ResourceRef<T | undefined> = httpResource(() => ({\n url: `${this.url()}`,\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n params: {},\n reportProgress: true,\n transferCache: true,\n keepalive: true,\n mode: 'same-origin',\n redirect: 'error',\n priority: 'high',\n cache: 'force-cache',\n credentials: 'include',\n referrer: 'no-referrer',\n integrity: 'sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GhEXAMPLEKEY=',\n }));\n\n constructor() {}\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable, signal } from '@angular/core';\nimport { ToastService } from '@ng-vagabond-lab/ng-dsv/ds/toast';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { Observable } from 'rxjs';\nimport { ApiDto, ID, JSONObject, OrderState } from '../dto/api.dto';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ApiService {\n readonly httpClient = inject(HttpClient);\n readonly toastService = inject(ToastService);\n readonly platformService = inject(PlatformService);\n\n load = signal<boolean>(false);\n baseUrl: string = '';\n\n setBaseUrl(url: string) {\n this.baseUrl = url;\n }\n\n get<T>(url: string, callback: (data: T) => void) {\n this.doSubscribe(url, this.httpClient.get<T>(this.baseUrl + url), callback);\n }\n\n post<TBody, TResponse = TBody>(\n url: string,\n data: TBody,\n callback: (data: TResponse) => void,\n withCredentials: boolean = false,\n ) {\n this.doSubscribe(\n url,\n this.httpClient.post<TResponse>(this.baseUrl + url, data, { withCredentials }),\n callback,\n );\n }\n\n put<TBody, TResponse = TBody>(url: string, data: TBody, callback: (data: TResponse) => void) {\n this.doSubscribe(url, this.httpClient.put<TResponse>(this.baseUrl + url, data), callback);\n }\n\n delete<T>(url: string, callback: (data: T) => void) {\n this.doSubscribe(url, this.httpClient.delete<T>(this.baseUrl + url), callback);\n }\n\n findById<T>(endPoint: string, id: ID, callback: (data: T) => void) {\n this.get<T>(endPoint + '/' + id, callback);\n }\n\n findBy<T>(\n endPoint: string,\n fields: string,\n values: string,\n first: number,\n max: number,\n order: OrderState,\n callback: (data: T) => void,\n ) {\n const orderType: string = order.orderAsc ? '' : 'Desc';\n const orderConst: string = order.order ? '>>' + order.order + orderType : '';\n const fieldsComplete = fields + orderConst;\n this.get<T>(\n endPoint +\n '?fields=' +\n encodeURI(fieldsComplete) +\n '&values=' +\n encodeURI(values) +\n '&first=' +\n first +\n '&max=' +\n max,\n (data: T) => {\n callback(data);\n },\n );\n }\n\n countBy(endPoint: string, fields: string, values: string, callback: (data: { count: number }) => void) {\n return this.get<{ count: number }>(\n endPoint + '?fields=' + encodeURI(fields) + '&values=' + values,\n (data: { count: number }) => {\n callback(data);\n },\n );\n }\n\n createOrUpdate<T extends ApiDto>(endPoint: string, data: T, callback: (data: T) => void) {\n if (data.id !== null && data.id !== undefined && data.id !== '' && Number(data.id) > 0) {\n this.put<T>('/' + endPoint + '/', data, (dateReturn: T) => {\n this.toastService.showToast({ text: 'UPDATE_OK', type: 'success' });\n callback(dateReturn);\n });\n } else {\n this.post<T>('/' + endPoint + '/', data, (dateReturn: T) => {\n this.toastService.showToast({ text: 'CREATION_OK', type: 'success' });\n callback(dateReturn);\n });\n }\n }\n\n doSubscribe<T>(url: string, observable: Observable<T>, callback: (data: T) => void) {\n this.load.set(true);\n observable.subscribe({\n next: (res) => {\n this.load.set(false);\n this.info(url, res as JSONObject);\n callback(res);\n },\n error: (error: JSONObject) => {\n this.load.set(false);\n this.error(url, error);\n },\n });\n }\n\n info(url: string, data: JSONObject) {\n if (this.isPlatformBrowser()) {\n console.log(url, data);\n }\n }\n\n error(url: string, error: JSONObject) {\n if (this.isPlatformBrowser()) {\n console.error(url, error);\n }\n }\n\n isPlatformBrowser() {\n return this.platformService.isPlatformBrowser();\n }\n}\n","import { inject, Injectable, signal } from '@angular/core';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { Store } from '@ng-vagabond-lab/ng-dsv/storage';\nimport { PageableDto } from '../../public-api';\nimport { ApiService } from '../api.service';\n\n@Injectable({ providedIn: 'root' })\nexport abstract class BaseSearchService<T> {\n readonly apiService = inject(ApiService);\n readonly platformService = inject(PlatformService);\n\n datas = new Store<T>();\n\n page = signal<number>(1);\n isLoading = signal<boolean>(false);\n stopLoad = signal<boolean>(false);\n search = signal<string>('');\n\n doLoad(\n url: string,\n search: string = '',\n page: number = 1,\n nbPage: number = 20,\n field: string = 'content',\n ) {\n const params = '?page=' + page + '&nbPage=' + nbPage + '&query=' + search;\n\n this.search.set(search);\n if (page === 1) {\n this.stopLoad.set(false);\n }\n if (this.stopLoad()) {\n return;\n }\n this.isLoading.set(true);\n this.apiService.get<PageableDto<T>>(url + params, (data) => {\n this.page.set(page + nbPage);\n this.datas.updateForPage(page, data[field as keyof PageableDto<T>] as T[]);\n if ((data[field as keyof PageableDto<T>] as T[])?.length === 0) {\n this.stopLoad.set(true);\n }\n this.isLoading.set(false);\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;MAgBa,kBAAkB,CAAA;AAC3B,IAAA,GAAG,GAAG,MAAM,CAAqB,SAAS,0EAAC;AAE3C,IAAA,QAAQ,GAA+B,YAAY,CAAC,OAAO;AACvD,QAAA,GAAG,EAAE,CAAA,EAAG,IAAI,CAAC,GAAG,EAAE,CAAA,CAAE;AACpB,QAAA,MAAM,EAAE,KAAK;AACb,QAAA,OAAO,EAAE;AACL,YAAA,cAAc,EAAE,kBAAkB;AACrC,SAAA;AACD,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,cAAc,EAAE,IAAI;AACpB,QAAA,aAAa,EAAE,IAAI;AACnB,QAAA,SAAS,EAAE,IAAI;AACf,QAAA,IAAI,EAAE,aAAa;AACnB,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,WAAW,EAAE,SAAS;AACtB,QAAA,QAAQ,EAAE,aAAa;AACvB,QAAA,SAAS,EAAE,iDAAiD;AAC/D,KAAA,CAAC,+EAAC;AAEH,IAAA,WAAA,GAAA,EAAe;uGAtBN,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFf,MAAM,EAAA,CAAA;;2FAET,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA;;;MCLY,UAAU,CAAA;AACV,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AACnC,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AAElD,IAAA,IAAI,GAAG,MAAM,CAAU,KAAK,2EAAC;IAC7B,OAAO,GAAW,EAAE;AAEpB,IAAA,UAAU,CAAC,GAAW,EAAA;AAClB,QAAA,IAAI,CAAC,OAAO,GAAG,GAAG;IACtB;IAEA,GAAG,CAAI,GAAW,EAAE,QAA2B,EAAA;QAC3C,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAI,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC;IAC/E;IAEA,IAAI,CACA,GAAW,EACX,IAAW,EACX,QAAmC,EACnC,kBAA2B,KAAK,EAAA;QAEhC,IAAI,CAAC,WAAW,CACZ,GAAG,EACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAY,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,CAAC,EAC9E,QAAQ,CACX;IACL;AAEA,IAAA,GAAG,CAA2B,GAAW,EAAE,IAAW,EAAE,QAAmC,EAAA;QACvF,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAY,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC;IAC7F;IAEA,MAAM,CAAI,GAAW,EAAE,QAA2B,EAAA;QAC9C,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAI,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC;IAClF;AAEA,IAAA,QAAQ,CAAI,QAAgB,EAAE,EAAM,EAAE,QAA2B,EAAA;QAC7D,IAAI,CAAC,GAAG,CAAI,QAAQ,GAAG,GAAG,GAAG,EAAE,EAAE,QAAQ,CAAC;IAC9C;AAEA,IAAA,MAAM,CACF,QAAgB,EAChB,MAAc,EACd,MAAc,EACd,KAAa,EACb,GAAW,EACX,KAAiB,EACjB,QAA2B,EAAA;AAE3B,QAAA,MAAM,SAAS,GAAW,KAAK,CAAC,QAAQ,GAAG,EAAE,GAAG,MAAM;AACtD,QAAA,MAAM,UAAU,GAAW,KAAK,CAAC,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE;AAC5E,QAAA,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU;QAC1C,IAAI,CAAC,GAAG,CACJ,QAAQ;YACJ,UAAU;YACV,SAAS,CAAC,cAAc,CAAC;YACzB,UAAU;YACV,SAAS,CAAC,MAAM,CAAC;YACjB,SAAS;YACT,KAAK;YACL,OAAO;AACP,YAAA,GAAG,EACP,CAAC,IAAO,KAAI;YACR,QAAQ,CAAC,IAAI,CAAC;AAClB,QAAA,CAAC,CACJ;IACL;AAEA,IAAA,OAAO,CAAC,QAAgB,EAAE,MAAc,EAAE,MAAc,EAAE,QAA2C,EAAA;QACjG,OAAO,IAAI,CAAC,GAAG,CACX,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,UAAU,GAAG,MAAM,EAC/D,CAAC,IAAuB,KAAI;YACxB,QAAQ,CAAC,IAAI,CAAC;AAClB,QAAA,CAAC,CACJ;IACL;AAEA,IAAA,cAAc,CAAmB,QAAgB,EAAE,IAAO,EAAE,QAA2B,EAAA;QACnF,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AACpF,YAAA,IAAI,CAAC,GAAG,CAAI,GAAG,GAAG,QAAQ,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,UAAa,KAAI;AACtD,gBAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;gBACnE,QAAQ,CAAC,UAAU,CAAC;AACxB,YAAA,CAAC,CAAC;QACN;aAAO;AACH,YAAA,IAAI,CAAC,IAAI,CAAI,GAAG,GAAG,QAAQ,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,UAAa,KAAI;AACvD,gBAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;gBACrE,QAAQ,CAAC,UAAU,CAAC;AACxB,YAAA,CAAC,CAAC;QACN;IACJ;AAEA,IAAA,WAAW,CAAI,GAAW,EAAE,UAAyB,EAAE,QAA2B,EAAA;AAC9E,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QACnB,UAAU,CAAC,SAAS,CAAC;AACjB,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACV,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACpB,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAiB,CAAC;gBACjC,QAAQ,CAAC,GAAG,CAAC;YACjB,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,KAAiB,KAAI;AACzB,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACpB,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;YAC1B,CAAC;AACJ,SAAA,CAAC;IACN;IAEA,IAAI,CAAC,GAAW,EAAE,IAAgB,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC1B,YAAA,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;QAC1B;IACJ;IAEA,KAAK,CAAC,GAAW,EAAE,KAAiB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE;AAC1B,YAAA,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC;QAC7B;IACJ;IAEA,iBAAiB,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE;IACnD;uGAzHS,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAV,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,cAFP,MAAM,EAAA,CAAA;;2FAET,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA;;;MCFqB,iBAAiB,CAAA;AAC1B,IAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,IAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AAElD,IAAA,KAAK,GAAG,IAAI,KAAK,EAAK;AAEtB,IAAA,IAAI,GAAG,MAAM,CAAS,CAAC,2EAAC;AACxB,IAAA,SAAS,GAAG,MAAM,CAAU,KAAK,gFAAC;AAClC,IAAA,QAAQ,GAAG,MAAM,CAAU,KAAK,+EAAC;AACjC,IAAA,MAAM,GAAG,MAAM,CAAS,EAAE,6EAAC;AAE3B,IAAA,MAAM,CACF,GAAW,EACX,MAAA,GAAiB,EAAE,EACnB,IAAA,GAAe,CAAC,EAChB,MAAA,GAAiB,EAAE,EACnB,QAAgB,SAAS,EAAA;AAEzB,QAAA,MAAM,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM;AAEzE,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;AACvB,QAAA,IAAI,IAAI,KAAK,CAAC,EAAE;AACZ,YAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC;QAC5B;AACA,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;YACjB;QACJ;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAiB,GAAG,GAAG,MAAM,EAAE,CAAC,IAAI,KAAI;YACvD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC;AAC5B,YAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,KAA6B,CAAQ,CAAC;YAC1E,IAAK,IAAI,CAAC,KAA6B,CAAS,EAAE,MAAM,KAAK,CAAC,EAAE;AAC5D,gBAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YAC3B;AACA,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AAC7B,QAAA,CAAC,CAAC;IACN;uGApCkB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cADb,MAAM,EAAA,CAAA;;2FACV,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;ACNlC;;AAEG;;;;"}
@@ -1,20 +1,27 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, signal, TransferState, makeStateKey, Directive, Injectable } from '@angular/core';
2
+ import { inject, signal, effect, TransferState, makeStateKey, Directive, Injectable } from '@angular/core';
3
3
  import { Router, Scroll, ActivatedRoute } from '@angular/router';
4
4
  import { ApiService } from '@ng-vagabond-lab/ng-dsv/api';
5
+ import { EnvironmentService } from '@ng-vagabond-lab/ng-dsv/environment';
6
+ import { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';
7
+ import { StorageService } from '@ng-vagabond-lab/ng-dsv/storage';
5
8
  import { filter, map } from 'rxjs';
6
9
  import { toSignal } from '@angular/core/rxjs-interop';
7
10
  import { Title, Meta } from '@angular/platform-browser';
8
11
 
9
- class BaseAppScrollComponent {
12
+ class BaseAppComponent {
13
+ platformService = inject(PlatformService);
14
+ storageService = inject(StorageService);
15
+ environmentService = inject(EnvironmentService);
10
16
  apiService = inject(ApiService);
11
17
  scrollService = inject(ScrollService);
12
18
  scroll = signal(0, ...(ngDevMode ? [{ debugName: "scroll" }] : /* istanbul ignore next */ []));
19
+ load = signal(false, ...(ngDevMode ? [{ debugName: "load" }] : /* istanbul ignore next */ []));
13
20
  constructor() {
14
21
  inject(Router)
15
22
  .events.pipe(filter((event) => event instanceof Scroll), map((event) => event.position))
16
23
  .subscribe(() => {
17
- if (this.apiService.isPlatformBrowser() && this.scrollService.getScroll()) {
24
+ if (this.platformService.isPlatformBrowser() && this.scrollService.getScroll()) {
18
25
  const divScrolls = document.getElementsByClassName('scroll');
19
26
  Array.from(divScrolls).forEach((scroll) => {
20
27
  setTimeout(() => {
@@ -23,6 +30,13 @@ class BaseAppScrollComponent {
23
30
  });
24
31
  }
25
32
  });
33
+ effect(() => {
34
+ if (this.environmentService.env()) {
35
+ const apiUrl = this.environmentService.env()?.API_URL;
36
+ this.apiService.setBaseUrl(apiUrl);
37
+ this.load.set(true);
38
+ }
39
+ });
26
40
  }
27
41
  doScroll() {
28
42
  const divScroll = document.getElementsByClassName('scroll')?.[0];
@@ -117,5 +131,5 @@ const isCallback = (callback) => {
117
131
  * Generated bundle index. Do not edit.
118
132
  */
119
133
 
120
- export { BaseAppScrollComponent, BaseRouteComponent, BaseScrollComponent, BaseSeoContainer, BaseService, ScrollService, isCallback };
134
+ export { BaseAppComponent, BaseRouteComponent, BaseScrollComponent, BaseSeoContainer, BaseService, ScrollService, isCallback };
121
135
  //# sourceMappingURL=ng-vagabond-lab-ng-dsv-base.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-base.mjs","sources":["../../../projects/ng-dsv/base/component/base.app-scroll.component.ts","../../../projects/ng-dsv/base/component/base.seo.container.ts","../../../projects/ng-dsv/base/component/base.route.component.ts","../../../projects/ng-dsv/base/component/base.scroll.component.ts","../../../projects/ng-dsv/base/service/base.service.ts","../../../projects/ng-dsv/base/service/scroll.service.ts","../../../projects/ng-dsv/base/utils/base.utils.ts","../../../projects/ng-dsv/base/ng-vagabond-lab-ng-dsv-base.ts"],"sourcesContent":["import { inject, signal } from '@angular/core';\nimport { Router, Scroll } from '@angular/router';\nimport { ApiService } from '@ng-vagabond-lab/ng-dsv/api';\nimport { filter, map } from 'rxjs';\nimport { ScrollService } from '../public-api';\n\nexport abstract class BaseAppScrollComponent {\n readonly apiService = inject(ApiService);\n readonly scrollService = inject(ScrollService);\n\n scroll = signal<number>(0);\n\n constructor() {\n inject(Router)\n .events.pipe(\n filter((event): event is Scroll => event instanceof Scroll),\n map((event: Scroll) => event.position),\n )\n .subscribe(() => {\n if (this.apiService.isPlatformBrowser() && this.scrollService.getScroll()) {\n const divScrolls = document.getElementsByClassName('scroll');\n Array.from(divScrolls).forEach((scroll) => {\n setTimeout(() => {\n scroll?.scrollTo(0, this.scrollService.getScroll() ?? 0);\n }, 100);\n });\n }\n });\n }\n\n doScroll() {\n const divScroll = document.getElementsByClassName('scroll')?.[0];\n if (document.getElementsByClassName('scroll').length === 1) {\n this.scrollService.saveScroll(divScroll.scrollTop);\n this.scrollService.scroll.set(divScroll.scrollTop);\n }\n }\n}\n","import { inject, makeStateKey, TransferState } from '@angular/core';\nimport { Meta, Title } from '@angular/platform-browser';\n\nexport abstract class BaseSeoContainer {\n public readonly title = inject(Title);\n public readonly transferState = inject(TransferState);\n public readonly meta = inject(Meta);\n\n setMeta(titleApp: string, title: string, description: string, image?: string) {\n const newTitle = titleApp + ' - ' + title;\n this.title.setTitle(newTitle);\n this.transferState.set(makeStateKey<string>('title'), newTitle);\n this.meta.updateTag({ name: 'description', content: description });\n image && this.meta.updateTag({ property: 'og:image', content: image });\n }\n}\n","import { inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { BaseSeoContainer } from './base.seo.container';\n\nexport abstract class BaseRouteComponent extends BaseSeoContainer {\n activatedRoute = inject<ActivatedRoute>(ActivatedRoute);\n\n routeParams = toSignal(this.activatedRoute.params);\n\n routeObservable: Subscription | null = null;\n}\n","import { inject } from '@angular/core';\nimport { BaseSeoContainer, ScrollService } from '../public-api';\n\nexport abstract class BaseScrollComponent extends BaseSeoContainer {\n readonly scrollService = inject(ScrollService);\n\n loadMore() {\n if (!this.scrollService.getlocked()) {\n this.scrollService.doBlocked();\n this.doLoad();\n this.scrollService.doBlockedWithTimeout(false, 500);\n }\n }\n\n abstract doLoad(): void;\n}\n","import { Directive } from '@angular/core';\n\n@Directive()\nexport abstract class BaseService {}\n","import { Injectable, signal } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ScrollService {\n scrolls = signal<Map<string, number>>(new Map());\n blocked = signal<Map<string, boolean>>(new Map());\n scroll = signal<number>(0);\n\n saveScroll(scrollTop: number) {\n this.scrolls.update((value) => {\n if (scrollTop !== 0) {\n value.set(location.href, scrollTop);\n }\n return value;\n });\n }\n\n getScroll() {\n return this.scrolls().get(location.href);\n }\n\n doBlocked(blocked: boolean = true) {\n this.blocked.update((value) => {\n value.set(location.href, blocked);\n return value;\n });\n }\n\n doBlockedWithTimeout(blocked: boolean, timeout: number = 1000) {\n setTimeout(() => {\n this.doBlocked(blocked);\n }, timeout);\n }\n\n getlocked() {\n return this.blocked().get(location.href);\n }\n}\n","import { OutputEmitterRef } from '@angular/core';\n\nexport const isCallback = <T>(callback: OutputEmitterRef<T>) => {\n const listeners = callback['listeners' as keyof OutputEmitterRef<T>];\n return listeners?.length > 0;\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-base.mjs","sources":["../../../projects/ng-dsv/base/component/base.app.component.ts","../../../projects/ng-dsv/base/component/base.seo.container.ts","../../../projects/ng-dsv/base/component/base.route.component.ts","../../../projects/ng-dsv/base/component/base.scroll.component.ts","../../../projects/ng-dsv/base/service/base.service.ts","../../../projects/ng-dsv/base/service/scroll.service.ts","../../../projects/ng-dsv/base/utils/base.utils.ts","../../../projects/ng-dsv/base/ng-vagabond-lab-ng-dsv-base.ts"],"sourcesContent":["import { effect, inject, signal } from '@angular/core';\nimport { Router, Scroll } from '@angular/router';\nimport { ApiService } from '@ng-vagabond-lab/ng-dsv/api';\nimport { EnvironmentService } from '@ng-vagabond-lab/ng-dsv/environment';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { StorageService } from '@ng-vagabond-lab/ng-dsv/storage';\nimport { filter, map } from 'rxjs';\nimport { ScrollService } from '../public-api';\n\nexport abstract class BaseAppComponent {\n readonly platformService = inject(PlatformService);\n readonly storageService: StorageService = inject(StorageService);\n readonly environmentService = inject(EnvironmentService);\n readonly apiService = inject(ApiService);\n readonly scrollService = inject(ScrollService);\n\n scroll = signal<number>(0);\n\n load = signal<boolean>(false);\n\n constructor() {\n inject(Router)\n .events.pipe(\n filter((event): event is Scroll => event instanceof Scroll),\n map((event: Scroll) => event.position),\n )\n .subscribe(() => {\n if (this.platformService.isPlatformBrowser() && this.scrollService.getScroll()) {\n const divScrolls = document.getElementsByClassName('scroll');\n Array.from(divScrolls).forEach((scroll) => {\n setTimeout(() => {\n scroll?.scrollTo(0, this.scrollService.getScroll() ?? 0);\n }, 100);\n });\n }\n });\n\n effect(() => {\n if (this.environmentService.env()) {\n const apiUrl = this.environmentService.env()?.API_URL!;\n this.apiService.setBaseUrl(apiUrl);\n this.load.set(true);\n }\n });\n }\n\n doScroll() {\n const divScroll = document.getElementsByClassName('scroll')?.[0];\n if (document.getElementsByClassName('scroll').length === 1) {\n this.scrollService.saveScroll(divScroll.scrollTop);\n this.scrollService.scroll.set(divScroll.scrollTop);\n }\n }\n}\n","import { inject, makeStateKey, TransferState } from '@angular/core';\nimport { Meta, Title } from '@angular/platform-browser';\n\nexport abstract class BaseSeoContainer {\n public readonly title = inject(Title);\n public readonly transferState = inject(TransferState);\n public readonly meta = inject(Meta);\n\n setMeta(titleApp: string, title: string, description: string, image?: string) {\n const newTitle = titleApp + ' - ' + title;\n this.title.setTitle(newTitle);\n this.transferState.set(makeStateKey<string>('title'), newTitle);\n this.meta.updateTag({ name: 'description', content: description });\n image && this.meta.updateTag({ property: 'og:image', content: image });\n }\n}\n","import { inject } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { BaseSeoContainer } from './base.seo.container';\n\nexport abstract class BaseRouteComponent extends BaseSeoContainer {\n activatedRoute = inject<ActivatedRoute>(ActivatedRoute);\n\n routeParams = toSignal(this.activatedRoute.params);\n\n routeObservable: Subscription | null = null;\n}\n","import { inject } from '@angular/core';\nimport { BaseSeoContainer, ScrollService } from '../public-api';\n\nexport abstract class BaseScrollComponent extends BaseSeoContainer {\n readonly scrollService = inject(ScrollService);\n\n loadMore() {\n if (!this.scrollService.getlocked()) {\n this.scrollService.doBlocked();\n this.doLoad();\n this.scrollService.doBlockedWithTimeout(false, 500);\n }\n }\n\n abstract doLoad(): void;\n}\n","import { Directive } from '@angular/core';\n\n@Directive()\nexport abstract class BaseService {}\n","import { Injectable, signal } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ScrollService {\n scrolls = signal<Map<string, number>>(new Map());\n blocked = signal<Map<string, boolean>>(new Map());\n scroll = signal<number>(0);\n\n saveScroll(scrollTop: number) {\n this.scrolls.update((value) => {\n if (scrollTop !== 0) {\n value.set(location.href, scrollTop);\n }\n return value;\n });\n }\n\n getScroll() {\n return this.scrolls().get(location.href);\n }\n\n doBlocked(blocked: boolean = true) {\n this.blocked.update((value) => {\n value.set(location.href, blocked);\n return value;\n });\n }\n\n doBlockedWithTimeout(blocked: boolean, timeout: number = 1000) {\n setTimeout(() => {\n this.doBlocked(blocked);\n }, timeout);\n }\n\n getlocked() {\n return this.blocked().get(location.href);\n }\n}\n","import { OutputEmitterRef } from '@angular/core';\n\nexport const isCallback = <T>(callback: OutputEmitterRef<T>) => {\n const listeners = callback['listeners' as keyof OutputEmitterRef<T>];\n return listeners?.length > 0;\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -78,10 +78,9 @@ const authInterceptor = (req, next) => {
78
78
  error.status === 401) {
79
79
  return handle401Error(httpClient, authService, req, next);
80
80
  }
81
- console.error(error);
82
81
  const errorMessage = error.error.debugMessage ?? error.error.message ?? error.message;
83
82
  if (errorMessage === 'NO_REFRESH_TOKEN') {
84
- authService.logout();
83
+ authService.logout(false);
85
84
  }
86
85
  else {
87
86
  toastService.showToast({
@@ -133,13 +132,15 @@ class AuthService {
133
132
  refreshToken() {
134
133
  this.apiService.post('auth/refresh-token', {}, (data) => this.initUser(data), true);
135
134
  }
136
- logout() {
135
+ logout(showToast = true) {
137
136
  this.apiService.post('auth/logout', {}, () => {
138
137
  this.initUser();
139
- this.apiService.toastService.showToast({
140
- type: 'success',
141
- text: 'Déconnexion réussie',
142
- });
138
+ if (showToast) {
139
+ this.apiService.toastService.showToast({
140
+ type: 'success',
141
+ text: 'Déconnexion réussie',
142
+ });
143
+ }
143
144
  }, true);
144
145
  }
145
146
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -1 +1 @@
1
- {"version":3,"file":"ng-vagabond-lab-ng-dsv-modules-auth.mjs","sources":["../../../projects/ng-dsv/modules/auth/component/auth.component.ts","../../../projects/ng-dsv/modules/auth/component/auth.component.html","../../../projects/ng-dsv/modules/auth/guard/auth.guard.ts","../../../projects/ng-dsv/modules/auth/interceptor/auth.interceptor.ts","../../../projects/ng-dsv/modules/auth/service/auth.service.ts","../../../projects/ng-dsv/modules/auth/service/auth.google.service.ts","../../../projects/ng-dsv/modules/auth/utils/auth.utils.ts","../../../projects/ng-dsv/modules/auth/ng-vagabond-lab-ng-dsv-modules-auth.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, effect, inject, output, signal } from '@angular/core';\nimport { ID } from '@ng-vagabond-lab/ng-dsv/api';\nimport { ModalAlertComponent, ModalButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/modal';\nimport { AuthGoogleService, AuthService } from '../public-api';\n\n@Component({\n selector: 'dsv-auth',\n imports: [CommonModule, ModalButtonComponent, ModalAlertComponent],\n templateUrl: './auth.component.html',\n styleUrls: ['./auth.component.scss'],\n})\nexport class AuthComponent {\n readonly authService = inject(AuthService);\n readonly authGoogleService = inject(AuthGoogleService);\n\n callbackInitMember = output<ID>();\n callbackLogout = output<void>();\n\n initAuth = signal<boolean>(false);\n\n constructor() {\n effect(() => {\n if (this.authService.apiService.isPlatformBrowser() && !this.initAuth()) {\n this.authGoogleService.initGoogleAuth();\n this.authService.refreshToken();\n this.initAuth.set(true);\n }\n });\n effect(() => {\n if (this.authService.apiService.isPlatformBrowser()) {\n if (this.authService.userConnected() === null) {\n this.authGoogleService.loginWithGoogle();\n } else {\n this.callbackInitMember.emit(this.authService.userConnected()?.user?.id);\n }\n }\n });\n }\n\n logout() {\n this.authService.logout();\n this.callbackLogout.emit();\n }\n}\n","<div class=\"auth-button\">\n <button\n id=\"google-signin-button\"\n [class.hidden]=\"authService.userConnected() !== null\"\n ></button>\n</div>\n\n@if (authService.userConnected()) {\n <div class=\"profile\">\n <img\n [src]=\"authService.userConnected()?.user?.avatar\"\n alt=\"profile\"\n />\n <dsv-modal-button\n id=\"logout\"\n icon=\"ri-logout-box-line\"\n />\n </div>\n <dsv-modal-alert\n id=\"logout\"\n title=\"Déconnexion\"\n text=\"Voulez-vous vraiment vous déconnecter ?\"\n button=\"Oui\"\n buttonClose=\"Non\"\n (callback)=\"logout()\"\n ></dsv-modal-alert>\n}\n","import { inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivateFn, Router } from '@angular/router';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { AuthService, hasRole } from '../public-api';\n\nexport const authGuard: CanActivateFn = (route: ActivatedRouteSnapshot) => {\n const platformService = inject(PlatformService);\n\n if (!platformService.isPlatformBrowser()) {\n return true;\n }\n\n const authService = inject(AuthService);\n const router = inject(Router);\n\n const requiredRole = route.data['role'];\n\n if (!requiredRole) {\n console.warn('No role specified in route data.');\n return false;\n }\n\n const profiles = authService.userConnected()?.user?.profiles;\n if (hasRole(requiredRole, profiles)) {\n return true;\n }\n\n router.navigate(['/']);\n return false;\n};\n","import { HttpClient, HttpErrorResponse, HttpHandlerFn, HttpRequest } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { ToastService } from '@ng-vagabond-lab/ng-dsv/ds/toast';\nimport { catchError, switchMap, throwError } from 'rxjs';\nimport { AuthService } from '../public-api';\n\nexport const authInterceptor = (req: HttpRequest<unknown>, next: HttpHandlerFn) => {\n const httpClient = inject(HttpClient);\n const authService = inject(AuthService);\n const toastService = inject(ToastService);\n\n return next(getToken(req, authService)).pipe(\n catchError((error) => {\n if (\n error instanceof HttpErrorResponse &&\n !req.url.includes('auth/') &&\n req.url.includes(authService.apiService.baseUrl) &&\n error.status === 401\n ) {\n return handle401Error(httpClient, authService, req, next);\n }\n\n console.error(error);\n\n const errorMessage = error.error.debugMessage ?? error.error.message ?? error.message;\n\n if (errorMessage === 'NO_REFRESH_TOKEN') {\n authService.logout();\n } else {\n toastService.showToast({\n type: 'error',\n text: errorMessage,\n });\n }\n\n return throwError(() => error);\n }),\n );\n};\n\nconst getToken = <T>(req: HttpRequest<T>, authService: AuthService) => {\n const jwt = authService.userToken();\n if (!req.url.includes('/auth/') && req.url.includes(authService.apiService.baseUrl) && jwt) {\n const headers = req.headers.set('Authorization', `Bearer ${jwt}`);\n\n return req.clone({\n headers,\n });\n }\n return req;\n};\n\nconst handle401Error = <T>(\n httpClient: HttpClient,\n authService: AuthService,\n request: HttpRequest<T>,\n next: HttpHandlerFn,\n) => {\n return httpClient\n .post(authService.apiService.baseUrl + '/auth/refresh-token', {}, { withCredentials: true })\n .pipe(\n switchMap((response) => {\n authService.initUser(response);\n return next(getToken(request, authService));\n }),\n );\n};\n","import { inject, Injectable, signal } from '@angular/core';\nimport { ApiService, JSONObject } from '@ng-vagabond-lab/ng-dsv/api';\nimport { UserConnectedDto } from '../dto/user.dto';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthService {\n readonly apiService = inject(ApiService);\n\n userConnected = signal<UserConnectedDto | null>(null);\n userToken = signal<string>('');\n\n initUser(user: UserConnectedDto | null = null) {\n this.userConnected.set(user);\n this.userToken.set(user?.['jwt' as keyof JSONObject] ?? '');\n }\n\n googleLogin(credential: string) {\n this.apiService.post<UserConnectedDto>(\n 'auth/google-identity-connect',\n {\n googleToken: credential,\n },\n (data) => {\n this.initUser(data);\n this.apiService.toastService.showToast({\n type: 'success',\n text: 'Connexion réussie',\n });\n },\n true,\n );\n }\n\n refreshToken() {\n this.apiService.post<UserConnectedDto>('auth/refresh-token', {}, (data) => this.initUser(data), true);\n }\n\n logout() {\n this.apiService.post<UserConnectedDto>(\n 'auth/logout',\n {},\n () => {\n this.initUser();\n this.apiService.toastService.showToast({\n type: 'success',\n text: 'Déconnexion réussie',\n });\n },\n true,\n );\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { EnvironmentService } from '@ng-vagabond-lab/ng-dsv/environment';\nimport { AuthService } from './auth.service';\n\ndeclare const google: any;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthGoogleService {\n private readonly authService = inject(AuthService);\n private readonly environmentService = inject(EnvironmentService);\n\n initGoogleAuth(googleButtonid: string = 'google-signin-button') {\n google.accounts.id.initialize({\n client_id: this.environmentService.env()?.GOOGLE_CLIENT_ID,\n callback: this.handleCredentialResponse.bind(this),\n });\n google.accounts.id.renderButton(document.getElementById(googleButtonid)!, {\n theme: 'outline',\n size: 'medium',\n type: 'icon',\n });\n }\n\n handleCredentialResponse(response: { credential: string }) {\n this.authService.googleLogin(response.credential);\n }\n\n loginWithGoogle() {\n google.accounts.id.prompt();\n }\n}\n","import { ApiDto } from '@ng-vagabond-lab/ng-dsv/api';\n\nexport const hasRole = (roles: string, userRoles?: ApiDto[]) => {\n const roleSplit = roles.split(',');\n let find = false;\n roleSplit.forEach((role) => {\n if (\n userRoles?.find(\n (userRole) =>\n userRole['roles' as keyof ApiDto]?.toString().includes(role) ||\n userRole['name' as keyof ApiDto] === role,\n )\n ) {\n find = true;\n }\n });\n return find;\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-vagabond-lab-ng-dsv-modules-auth.mjs","sources":["../../../projects/ng-dsv/modules/auth/component/auth.component.ts","../../../projects/ng-dsv/modules/auth/component/auth.component.html","../../../projects/ng-dsv/modules/auth/guard/auth.guard.ts","../../../projects/ng-dsv/modules/auth/interceptor/auth.interceptor.ts","../../../projects/ng-dsv/modules/auth/service/auth.service.ts","../../../projects/ng-dsv/modules/auth/service/auth.google.service.ts","../../../projects/ng-dsv/modules/auth/utils/auth.utils.ts","../../../projects/ng-dsv/modules/auth/ng-vagabond-lab-ng-dsv-modules-auth.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, effect, inject, output, signal } from '@angular/core';\nimport { ID } from '@ng-vagabond-lab/ng-dsv/api';\nimport { ModalAlertComponent, ModalButtonComponent } from '@ng-vagabond-lab/ng-dsv/ds/modal';\nimport { AuthGoogleService, AuthService } from '../public-api';\n\n@Component({\n selector: 'dsv-auth',\n imports: [CommonModule, ModalButtonComponent, ModalAlertComponent],\n templateUrl: './auth.component.html',\n styleUrls: ['./auth.component.scss'],\n})\nexport class AuthComponent {\n readonly authService = inject(AuthService);\n readonly authGoogleService = inject(AuthGoogleService);\n\n callbackInitMember = output<ID>();\n callbackLogout = output<void>();\n\n initAuth = signal<boolean>(false);\n\n constructor() {\n effect(() => {\n if (this.authService.apiService.isPlatformBrowser() && !this.initAuth()) {\n this.authGoogleService.initGoogleAuth();\n this.authService.refreshToken();\n this.initAuth.set(true);\n }\n });\n effect(() => {\n if (this.authService.apiService.isPlatformBrowser()) {\n if (this.authService.userConnected() === null) {\n this.authGoogleService.loginWithGoogle();\n } else {\n this.callbackInitMember.emit(this.authService.userConnected()?.user?.id);\n }\n }\n });\n }\n\n logout() {\n this.authService.logout();\n this.callbackLogout.emit();\n }\n}\n","<div class=\"auth-button\">\n <button\n id=\"google-signin-button\"\n [class.hidden]=\"authService.userConnected() !== null\"\n ></button>\n</div>\n\n@if (authService.userConnected()) {\n <div class=\"profile\">\n <img\n [src]=\"authService.userConnected()?.user?.avatar\"\n alt=\"profile\"\n />\n <dsv-modal-button\n id=\"logout\"\n icon=\"ri-logout-box-line\"\n />\n </div>\n <dsv-modal-alert\n id=\"logout\"\n title=\"Déconnexion\"\n text=\"Voulez-vous vraiment vous déconnecter ?\"\n button=\"Oui\"\n buttonClose=\"Non\"\n (callback)=\"logout()\"\n ></dsv-modal-alert>\n}\n","import { inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivateFn, Router } from '@angular/router';\nimport { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';\nimport { AuthService, hasRole } from '../public-api';\n\nexport const authGuard: CanActivateFn = (route: ActivatedRouteSnapshot) => {\n const platformService = inject(PlatformService);\n\n if (!platformService.isPlatformBrowser()) {\n return true;\n }\n\n const authService = inject(AuthService);\n const router = inject(Router);\n\n const requiredRole = route.data['role'];\n\n if (!requiredRole) {\n console.warn('No role specified in route data.');\n return false;\n }\n\n const profiles = authService.userConnected()?.user?.profiles;\n if (hasRole(requiredRole, profiles)) {\n return true;\n }\n\n router.navigate(['/']);\n return false;\n};\n","import { HttpClient, HttpErrorResponse, HttpHandlerFn, HttpRequest } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { ToastService } from '@ng-vagabond-lab/ng-dsv/ds/toast';\nimport { catchError, switchMap, throwError } from 'rxjs';\nimport { AuthService } from '../public-api';\n\nexport const authInterceptor = (req: HttpRequest<unknown>, next: HttpHandlerFn) => {\n const httpClient = inject(HttpClient);\n const authService = inject(AuthService);\n const toastService = inject(ToastService);\n\n return next(getToken(req, authService)).pipe(\n catchError((error) => {\n if (\n error instanceof HttpErrorResponse &&\n !req.url.includes('auth/') &&\n req.url.includes(authService.apiService.baseUrl) &&\n error.status === 401\n ) {\n return handle401Error(httpClient, authService, req, next);\n }\n\n const errorMessage = error.error.debugMessage ?? error.error.message ?? error.message;\n\n if (errorMessage === 'NO_REFRESH_TOKEN') {\n authService.logout(false);\n } else {\n toastService.showToast({\n type: 'error',\n text: errorMessage,\n });\n }\n\n return throwError(() => error);\n }),\n );\n};\n\nconst getToken = <T>(req: HttpRequest<T>, authService: AuthService) => {\n const jwt = authService.userToken();\n if (!req.url.includes('/auth/') && req.url.includes(authService.apiService.baseUrl) && jwt) {\n const headers = req.headers.set('Authorization', `Bearer ${jwt}`);\n\n return req.clone({\n headers,\n });\n }\n return req;\n};\n\nconst handle401Error = <T>(\n httpClient: HttpClient,\n authService: AuthService,\n request: HttpRequest<T>,\n next: HttpHandlerFn,\n) => {\n return httpClient\n .post(authService.apiService.baseUrl + '/auth/refresh-token', {}, { withCredentials: true })\n .pipe(\n switchMap((response) => {\n authService.initUser(response);\n return next(getToken(request, authService));\n }),\n );\n};\n","import { inject, Injectable, signal } from '@angular/core';\nimport { ApiService, JSONObject } from '@ng-vagabond-lab/ng-dsv/api';\nimport { UserConnectedDto } from '../dto/user.dto';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthService {\n readonly apiService = inject(ApiService);\n\n userConnected = signal<UserConnectedDto | null>(null);\n userToken = signal<string>('');\n\n initUser(user: UserConnectedDto | null = null) {\n this.userConnected.set(user);\n this.userToken.set(user?.['jwt' as keyof JSONObject] ?? '');\n }\n\n googleLogin(credential: string) {\n this.apiService.post<UserConnectedDto>(\n 'auth/google-identity-connect',\n {\n googleToken: credential,\n },\n (data) => {\n this.initUser(data);\n this.apiService.toastService.showToast({\n type: 'success',\n text: 'Connexion réussie',\n });\n },\n true,\n );\n }\n\n refreshToken() {\n this.apiService.post<UserConnectedDto>('auth/refresh-token', {}, (data) => this.initUser(data), true);\n }\n\n logout(showToast: boolean = true) {\n this.apiService.post<UserConnectedDto>(\n 'auth/logout',\n {},\n () => {\n this.initUser();\n if (showToast) {\n this.apiService.toastService.showToast({\n type: 'success',\n text: 'Déconnexion réussie',\n });\n }\n },\n true,\n );\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { EnvironmentService } from '@ng-vagabond-lab/ng-dsv/environment';\nimport { AuthService } from './auth.service';\n\ndeclare const google: any;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthGoogleService {\n private readonly authService = inject(AuthService);\n private readonly environmentService = inject(EnvironmentService);\n\n initGoogleAuth(googleButtonid: string = 'google-signin-button') {\n google.accounts.id.initialize({\n client_id: this.environmentService.env()?.GOOGLE_CLIENT_ID,\n callback: this.handleCredentialResponse.bind(this),\n });\n google.accounts.id.renderButton(document.getElementById(googleButtonid)!, {\n theme: 'outline',\n size: 'medium',\n type: 'icon',\n });\n }\n\n handleCredentialResponse(response: { credential: string }) {\n this.authService.googleLogin(response.credential);\n }\n\n loginWithGoogle() {\n google.accounts.id.prompt();\n }\n}\n","import { ApiDto } from '@ng-vagabond-lab/ng-dsv/api';\n\nexport const hasRole = (roles: string, userRoles?: ApiDto[]) => {\n const roleSplit = roles.split(',');\n let find = false;\n roleSplit.forEach((role) => {\n if (\n userRoles?.find(\n (userRole) =>\n userRole['roles' as keyof ApiDto]?.toString().includes(role) ||\n userRole['name' as keyof ApiDto] === role,\n )\n ) {\n find = true;\n }\n });\n return find;\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ng-vagabond-lab/ng-dsv",
3
- "version": "0.1.92",
3
+ "version": "0.1.94",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.0.0",
6
6
  "@angular/core": "^20.0.0"
@@ -90,8 +90,8 @@ declare class ApiService {
90
90
  baseUrl: string;
91
91
  setBaseUrl(url: string): void;
92
92
  get<T>(url: string, callback: (data: T) => void): void;
93
- post<T>(url: string, data: T, callback: (data: T) => void, withCredentials?: boolean): void;
94
- put<T>(url: string, data: T, callback: (data: T) => void): void;
93
+ post<TBody, TResponse = TBody>(url: string, data: TBody, callback: (data: TResponse) => void, withCredentials?: boolean): void;
94
+ put<TBody, TResponse = TBody>(url: string, data: TBody, callback: (data: TResponse) => void): void;
95
95
  delete<T>(url: string, callback: (data: T) => void): void;
96
96
  findById<T>(endPoint: string, id: ID, callback: (data: T) => void): void;
97
97
  findBy<T>(endPoint: string, fields: string, values: string, first: number, max: number, order: OrderState, callback: (data: T) => void): void;
@@ -1,15 +1,22 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
  import { TransferState, OutputEmitterRef } from '@angular/core';
3
3
  import { ApiService } from '@ng-vagabond-lab/ng-dsv/api';
4
+ import { EnvironmentService } from '@ng-vagabond-lab/ng-dsv/environment';
5
+ import { PlatformService } from '@ng-vagabond-lab/ng-dsv/platform';
6
+ import { StorageService } from '@ng-vagabond-lab/ng-dsv/storage';
4
7
  import * as _angular_router from '@angular/router';
5
8
  import { ActivatedRoute } from '@angular/router';
6
9
  import { Subscription } from 'rxjs';
7
10
  import { Title, Meta } from '@angular/platform-browser';
8
11
 
9
- declare abstract class BaseAppScrollComponent {
12
+ declare abstract class BaseAppComponent {
13
+ readonly platformService: PlatformService;
14
+ readonly storageService: StorageService;
15
+ readonly environmentService: EnvironmentService;
10
16
  readonly apiService: ApiService;
11
17
  readonly scrollService: ScrollService;
12
18
  scroll: _angular_core.WritableSignal<number>;
19
+ load: _angular_core.WritableSignal<boolean>;
13
20
  constructor();
14
21
  doScroll(): void;
15
22
  }
@@ -53,4 +60,4 @@ declare class ScrollService {
53
60
 
54
61
  declare const isCallback: <T>(callback: OutputEmitterRef<T>) => boolean;
55
62
 
56
- export { BaseAppScrollComponent, BaseRouteComponent, BaseScrollComponent, BaseSeoContainer, BaseService, ScrollService, isCallback };
63
+ export { BaseAppComponent, BaseRouteComponent, BaseScrollComponent, BaseSeoContainer, BaseService, ScrollService, isCallback };
@@ -57,7 +57,7 @@ declare class AuthService {
57
57
  initUser(user?: UserConnectedDto | null): void;
58
58
  googleLogin(credential: string): void;
59
59
  refreshToken(): void;
60
- logout(): void;
60
+ logout(showToast?: boolean): void;
61
61
  static ɵfac: i0.ɵɵFactoryDeclaration<AuthService, never>;
62
62
  static ɵprov: i0.ɵɵInjectableDeclaration<AuthService>;
63
63
  }