@m481/mp-sdk-ng 0.1.2-alpha.16 → 0.1.2-alpha.18

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.
@@ -306,16 +306,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
306
306
  }] });
307
307
 
308
308
  class BasePocket extends BaseSdk {
309
- connection;
309
+ client;
310
+ filterData;
310
311
  connect() {
311
- if (!this.connection) {
312
- this.connection = new PocketBase(this.config.baseUrl);
312
+ if (!this.client) {
313
+ this.client = new PocketBase(this.config.baseUrl);
313
314
  }
314
315
  }
315
316
  getList(entity, options) {
316
317
  this.connect();
317
318
  this.log.d("getList --- entity", entity, this.authStore.getToken());
318
- return from(this.connection.collection(entity).getList(1, 20, this.buildOptions(options))).pipe(catchError$1(err => this.handleError(err)), map(d => (d ? {
319
+ const listOpts = options || {};
320
+ if (this.filterData) {
321
+ listOpts.filter = this.client.filter(this.filterData.criteria, this.filterData.params);
322
+ }
323
+ return from(this.client.collection(entity).getList(1, 20, this.buildOptions(listOpts))).pipe(catchError$1(err => this.handleError(err)), map(d => (d ? {
319
324
  page: d.page,
320
325
  pageSize: d.perPage,
321
326
  pagesTotal: d.totalPages,
@@ -326,12 +331,12 @@ class BasePocket extends BaseSdk {
326
331
  getOne(entity, id, options) {
327
332
  this.connect();
328
333
  this.log.d("fetchOne", entity, this.authStore.getToken());
329
- return from(this.connection.collection(entity).getOne(id, this.buildOptions(options))).pipe(catchError$1(err => this.handleError(err)));
334
+ return from(this.client.collection(entity).getOne(id, this.buildOptions(options))).pipe(catchError$1(err => this.handleError(err)));
330
335
  }
331
336
  save(entity, data) {
332
337
  this.connect();
333
338
  this.log.d("save", entity, data?.id, this.authStore.getToken());
334
- const target = this.connection.collection(entity);
339
+ const target = this.client.collection(entity);
335
340
  let promise;
336
341
  if (data.id) {
337
342
  promise = target.update(data.id, data, this.getAuthHeader());
@@ -344,7 +349,7 @@ class BasePocket extends BaseSdk {
344
349
  remove(entity, id) {
345
350
  this.connect();
346
351
  this.log.d("remove", entity, this.authStore.getToken());
347
- return from(this.connection.collection(entity).delete(id, this.getAuthHeader())).pipe(catchError$1(err => this.handleError(err)));
352
+ return from(this.client.collection(entity).delete(id, this.getAuthHeader())).pipe(catchError$1(err => this.handleError(err)));
348
353
  }
349
354
  handleError(error) {
350
355
  if (error instanceof ClientResponseError) {
@@ -397,7 +402,7 @@ class AuthService extends BasePocket {
397
402
  }
398
403
  login(user, pass) {
399
404
  this.connect();
400
- return from(this.connection.collection(SdkConfig.Entities.AUTH).authWithPassword(user, pass)).pipe(catchError$1(err => this.handleError(err)), map(data => {
405
+ return from(this.client.collection(SdkConfig.Entities.AUTH).authWithPassword(user, pass)).pipe(catchError$1(err => this.handleError(err)), map(data => {
401
406
  this.log.d("login ok", data);
402
407
  this.authStore.setToken(data.token);
403
408
  return data.record;
@@ -414,8 +419,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
414
419
  }], ctorParameters: () => [] });
415
420
 
416
421
  class BaseResource extends BasePocket {
422
+ FilterMeta = "isEnabled = {:isEnabled}";
423
+ FilterMetaParams = {
424
+ isEnabled: true
425
+ };
426
+ listOptions;
417
427
  fetchList() {
418
- return this.getList(this.Entity, this.Options);
428
+ return this.getList(this.Entity, this.listOptions);
419
429
  }
420
430
  fetchOne(id) {
421
431
  return this.getOne(this.Entity, id);
@@ -429,6 +439,9 @@ class BaseResource extends BasePocket {
429
439
  delete(id) {
430
440
  return this.remove(this.Entity, id);
431
441
  }
442
+ setFilterDefaults() {
443
+ this.filterData = { criteria: this.FilterMeta, params: this.FilterMetaParams };
444
+ }
432
445
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BaseResource, deps: null, target: i0.ɵɵFactoryTarget.Directive });
433
446
  static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.14", type: BaseResource, isStandalone: true, usesInheritance: true, ngImport: i0 });
434
447
  }
@@ -437,16 +450,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
437
450
  }] });
438
451
 
439
452
  class MissionsService extends BaseResource {
440
- Options = {
441
- filter: "isEnabled = true"
442
- };
443
453
  Entity = SdkConfig.Entities.MISSIONS;
444
454
  constructor() {
445
455
  super();
446
456
  }
457
+ fetchList() {
458
+ this.setFilterDefaults();
459
+ return super.fetchList();
460
+ }
447
461
  getArchived() {
448
462
  return this.getList(SdkConfig.Entities.MISSIONS, {
449
- filter: "isEnabled = false"
463
+ filter: this.client.filter(this.FilterMeta, { isEnabled: false })
450
464
  });
451
465
  }
452
466
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: MissionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -457,13 +471,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
457
471
  }], ctorParameters: () => [] });
458
472
 
459
473
  class ShiftsService extends BaseResource {
460
- Options = {
461
- filter: "isEnabled = true"
462
- };
463
474
  Entity = SdkConfig.Entities.SHIFTS;
464
475
  constructor() {
465
476
  super();
466
477
  }
478
+ fetch(startDate) {
479
+ this.listOptions = { perPage: 100 };
480
+ this.setFilterDefaults();
481
+ if (startDate) {
482
+ this.filterData.criteria += " && startAt >= {:startAt}";
483
+ this.filterData.params["startAt"] = new Date(startDate);
484
+ }
485
+ return this.fetchList();
486
+ }
487
+ searchByMissionAndHour(missionId, missionHourIndex) {
488
+ this.listOptions = { perPage: 100 };
489
+ this.setFilterDefaults();
490
+ this.filterData.criteria += ` && missionId = "${missionId}" && missionHourIndex = ${missionHourIndex}`;
491
+ return this.fetchList();
492
+ }
467
493
  create(data) {
468
494
  if (data.timespan) {
469
495
  data.timespan.daysOfWeek = (data.timespan.daysOfWeek || []).map(d => d > 6 ? 0 : d);
@@ -497,22 +523,39 @@ class ShiftsService extends BaseResource {
497
523
  }
498
524
  assignUsersToCalendarShift(calendarShiftId, userIds) {
499
525
  this.log.d('Assigning users to calendar shift', calendarShiftId, userIds);
500
- return from(this.connection.collection(SdkConfig.Entities.CALENDAR_SHIFTS)
526
+ return from(this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)
501
527
  .update(calendarShiftId, { assignedUsersIds: userIds }, this.getAuthHeader())).pipe(tap(record => this.log.d('Assigned users to calendar shift', record)), map(record => !!record));
502
528
  }
503
- getCalendarShifts(year) {
504
- this.log.d('Fetching calendar shifts');
529
+ getCalendarShifts(dates, pageSize = 1000) {
530
+ this.log.d('Fetching calendar shifts', dates);
531
+ this.setFilterDefaults();
532
+ if (dates?.length > 0) {
533
+ this.filterData.criteria += " && startAt >= {:startAt}";
534
+ this.filterData.params["startAt"] = new Date(dates[0]);
535
+ if (dates.length > 1) {
536
+ this.filterData.criteria += " && endAt >= {:endAt}";
537
+ this.filterData.params["endAt"] = new Date(dates[1]);
538
+ }
539
+ }
540
+ const listOpts = {};
541
+ if (this.filterData) {
542
+ listOpts.filter = this.client.filter(this.filterData.criteria, this.filterData.params);
543
+ }
544
+ return from(this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)
545
+ .getList(1, pageSize, this.buildOptions(listOpts))).pipe(catchError$1(err => this.handleError(err)));
546
+ }
547
+ getCalendarShiftsByYear(year) {
548
+ this.log.d('Fetching calendar shifts per year');
505
549
  const y = year || new Date().getFullYear();
506
- const startDate = new Date(y, 0, 1);
507
- const endDate = new Date(y, 11, 31);
508
- this.log.d(`Fetching calendar shifts for year ${y}`, `Start date: ${startDate.toISOString()}`, `End date: ${endDate.toISOString()}`);
509
- const filter = `startAt >= "${startDate.toISOString()}" && endAt <= "${endDate.toISOString()}"`;
510
- return from(this.connection.collection(SdkConfig.Entities.CALENDAR_SHIFTS)
511
- .getList(1, 1000, { filter, ...this.getAuthHeader() })).pipe(catchError$1(err => this.handleError(err)));
550
+ const dates = [
551
+ (new Date(y, 0, 1)).getTime(),
552
+ (new Date(y, 11, 31)).getTime()
553
+ ];
554
+ return this.getCalendarShifts(dates);
512
555
  }
513
556
  deleteCalendarShiftById(id) {
514
557
  this.log.d('Deleting calendar shift', id);
515
- return from(this.connection.collection(SdkConfig.Entities.CALENDAR_SHIFTS)
558
+ return from(this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)
516
559
  .delete(id, this.getAuthHeader()));
517
560
  }
518
561
  /**
@@ -521,7 +564,7 @@ class ShiftsService extends BaseResource {
521
564
  getCalendarShiftsByShiftId(shiftId) {
522
565
  this.log.d('Fetching calendar shifts for shift', shiftId);
523
566
  const filter = `shiftId = "${shiftId}"`;
524
- return from(this.connection.collection(SdkConfig.Entities.CALENDAR_SHIFTS)
567
+ return from(this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)
525
568
  .getFullList({ filter, ...this.getAuthHeader() })).pipe(catchError$1(err => this.handleError(err)));
526
569
  }
527
570
  /**
@@ -534,7 +577,7 @@ class ShiftsService extends BaseResource {
534
577
  this.log.d('Deleting calendar shifts batch', calendarShiftIds.length);
535
578
  // PocketBase batch ops could be disabled,
536
579
  // so we create a manual transaction using Promise.all
537
- const promises = calendarShiftIds.map(id => this.connection.collection(SdkConfig.Entities.CALENDAR_SHIFTS)
580
+ const promises = calendarShiftIds.map(id => this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)
538
581
  .delete(id, this.getAuthHeader()));
539
582
  return from(Promise.all(promises)).pipe(switchMap(() => from([true])), catchError$1(err => this.handleError(err)));
540
583
  }
@@ -547,7 +590,7 @@ class ShiftsService extends BaseResource {
547
590
  }
548
591
  this.log.d('Restoring calendar shifts', calendarShifts.length);
549
592
  // Recreate the CalendarShifts with their original data
550
- const promises = calendarShifts.map(cs => this.connection.collection(SdkConfig.Entities.CALENDAR_SHIFTS)
593
+ const promises = calendarShifts.map(cs => this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)
551
594
  .create({
552
595
  shiftId: cs.shiftId,
553
596
  startAt: cs.startAt,
@@ -566,13 +609,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
566
609
  }], ctorParameters: () => [] });
567
610
 
568
611
  class UsersService extends BaseResource {
569
- Options = {
570
- filter: "isEnabled = true"
571
- };
572
612
  Entity = SdkConfig.Entities.USERS;
573
613
  constructor() {
574
614
  super();
575
615
  }
616
+ fetchList() {
617
+ this.setFilterDefaults();
618
+ return super.fetchList();
619
+ }
620
+ // Unsupported
576
621
  create(data) {
577
622
  throw new Error("Method not supported.");
578
623
  }
@@ -593,14 +638,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
593
638
  }], ctorParameters: () => [] });
594
639
 
595
640
  class TeamsService extends BaseResource {
596
- Options = {
597
- filter: "isEnabled = true",
598
- fields: "id,name,isEnabled"
599
- };
600
641
  Entity = SdkConfig.Entities.TEAMS;
601
642
  constructor() {
602
643
  super();
603
644
  }
645
+ fetchList() {
646
+ this.listOptions = { fields: "id,name,isEnabled" };
647
+ this.setFilterDefaults();
648
+ return super.fetchList();
649
+ }
604
650
  // Unsupported methods
605
651
  /**
606
652
  * @
@@ -620,13 +666,13 @@ class TeamsService extends BaseResource {
620
666
  // Alternative methods using Angular Http
621
667
  getTeams() {
622
668
  const params = new HttpParams({
623
- fromObject: this.Options
669
+ fromObject: this.listOptions
624
670
  });
625
671
  return this.doGetList(SdkConfig.Endpoints.TEAMS, params)
626
672
  .pipe(tap(d => this.log.d("teams!!", d)));
627
673
  }
628
674
  fetchTeams() {
629
- return this.getList(SdkConfig.Entities.TEAMS, this.Options);
675
+ return this.getList(SdkConfig.Entities.TEAMS, this.listOptions);
630
676
  }
631
677
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TeamsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
632
678
  static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TeamsService });
@@ -678,14 +724,20 @@ class MpSdkService extends BasePlain {
678
724
  return this.missionsSrv.delete(id);
679
725
  }
680
726
  // Shifts
681
- getShifts() {
682
- return this.shiftsSrv.fetchList();
727
+ getShifts(startDate) {
728
+ return this.shiftsSrv.fetch(startDate);
729
+ }
730
+ getShiftsByMissionHour(id, hourIndex) {
731
+ return this.shiftsSrv.searchByMissionAndHour(id, hourIndex).pipe(map(d => d.items));
683
732
  }
684
733
  getShiftById(id) {
685
734
  return this.shiftsSrv.fetchOne(id);
686
735
  }
687
- getCalendarShifts(year) {
688
- return this.shiftsSrv.getCalendarShifts(year);
736
+ getCalendarShifts(d) {
737
+ return this.shiftsSrv.getCalendarShifts(d);
738
+ }
739
+ getCalendarShiftsPerYear(year) {
740
+ return this.shiftsSrv.getCalendarShiftsByYear(year);
689
741
  }
690
742
  saveShift(m) {
691
743
  return !m.id
@@ -1 +1 @@
1
- {"version":3,"file":"m481-mp-sdk-ng.mjs","sources":["../../../../projects/mp/sdk-ngx/src/lib/models/base.model.ts","../../../../projects/mp/sdk-ngx/src/lib/models/calendar-shift.model.ts","../../../../projects/mp/sdk-ngx/src/lib/models/event.model.ts","../../../../projects/mp/sdk-ngx/src/lib/models/mission.model.ts","../../../../projects/mp/sdk-ngx/src/lib/models/shift.model.ts","../../../../projects/mp/sdk-ngx/src/lib/models/user.model.ts","../../../../projects/mp/sdk-ngx/src/lib/models/team.model.ts","../../../../projects/mp/sdk-ngx/src/lib/services/logger.service.ts","../../../../projects/mp/sdk-ngx/src/lib/base/configuration.type.ts","../../../../projects/mp/sdk-ngx/src/lib/base/base-plain.directive.ts","../../../../projects/mp/sdk-ngx/src/lib/services/utils.service.ts","../../../../projects/mp/sdk-ngx/src/lib/services/auth-store.service.ts","../../../../projects/mp/sdk-ngx/src/lib/services/auth.interceptor.ts","../../../../projects/mp/sdk-ngx/src/lib/base/base-main.directive.ts","../../../../projects/mp/sdk-ngx/src/lib/base/base-pocket.directive.ts","../../../../projects/mp/sdk-ngx/src/lib/mp-sdk.constants.ts","../../../../projects/mp/sdk-ngx/src/lib/resources/auth.service.ts","../../../../projects/mp/sdk-ngx/src/lib/base/base-resource.directive.ts","../../../../projects/mp/sdk-ngx/src/lib/resources/missions.service.ts","../../../../projects/mp/sdk-ngx/src/lib/resources/shifts.service.ts","../../../../projects/mp/sdk-ngx/src/lib/resources/users.service.ts","../../../../projects/mp/sdk-ngx/src/lib/resources/teams.service.ts","../../../../projects/mp/sdk-ngx/src/lib/mp-sdk.service.ts","../../../../projects/mp/sdk-ngx/src/lib/mp-sdk.module.ts","../../../../projects/mp/sdk-ngx/src/public-api.ts","../../../../projects/mp/sdk-ngx/src/m481-mp-sdk-ng.ts"],"sourcesContent":["\nexport abstract class BaseModel\n{\n public id: string;\n public created?: Date;\n public updated?: Date;\n}\n","import { BaseModel } from './base.model';\n\nexport class CalendarShiftModel extends BaseModel\n{\n\tpublic shiftId: string;\n public startAt: Date;\n public endAt: Date;\n public assignedUsersIds: Array<string>;\n}\n","import { BaseModel } from './base.model';\n\nexport type EventScope = \"mission\" | \"shift\" | \"user\";\n\nexport class EventModel extends BaseModel\n{\n\tpublic message: string;\n\tpublic scope: EventScope;\n\tpublic objectId: string;\n\tpublic userId: string;\n}\n","import { BaseModel } from './base.model';\nimport { TeamModel } from './team.model';\n\nexport class MissionModel extends BaseModel\n{\n\tpublic name: string;\n\tpublic isRegular: boolean;\n\tpublic color: string;\n\tpublic hours: Array<Array<number>>; // [ [11, 13], [17, 19] ] -\n \tpublic teamId: string;\n\tpublic team?: TeamModel;\n\tpublic isEnabled?: boolean;\n}\n","import { BaseModel } from './base.model';\nimport { MissionModel } from './mission.model';\n\nexport enum RecurrenceType {\n DAILY,\n WEEKLY,\n MONTHLY\n}\n\nexport interface ShiftSpan {\n initialAt: number;\n maxSlots: number;\n type?: RecurrenceType;\n interval?: number;\n daysOfWeek?: Array<number>;\n dayOfMonth?: number;\n finalizeAt?: number;\n}\n\nexport class ShiftModel extends BaseModel\n{\n\tpublic missionId: string;\n public missionHourIndex: number;\n\tpublic teamId: string;\n\tpublic assignedUsersIds: Array<string>;\n\tpublic mission?: MissionModel;\n public timespan: ShiftSpan;\n public startAt?: Date;\n public isEnabled?: boolean;\n}\n","import { BaseModel } from './base.model';\nimport { RecordModel } from 'pocketbase';\n\nexport class UserModel extends BaseModel\n{\n\tpublic email: string;\n public username: string;\n\tpublic verified: boolean;\n\tpublic name: string;\n public teamsAdmin: Array<string>;\n public teamsMember: Array<string>;\n public password?: string;\n\tpublic avatar?: any;\n public avatarUrl?: string;\n public isEnabled?: boolean;\n}\n","import { BaseModel } from './base.model';\n\nexport class TeamModel extends BaseModel\n{\n\tpublic name: string;\n public slug: string;\n public isEnabled?: boolean;\n}\n","import { Injectable } from \"@angular/core\";\n\nexport interface ILogService {\n get(name: string, level: LogLevel): ILogger;\n}\n\nexport interface ILogger {\n d(...args: Array<unknown>): void;\n w(...args: Array<unknown>): void;\n e(...args: Array<unknown>): void;\n}\n\nexport enum LogLevel {\n ERROR = 0,\n WARN = 1,\n INFO = 2,\n DEBUG = 3,\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class LoggerService implements ILogService {\n public log = window.console;\n public LOG_FNS = [this.log.log, this.log.warn, this.log.error];\n public MSG_PREFIXES = [ [\"[\", \"]\"], [\"[\", \"] WARN: \"], [\"[\", \"] ERROR: \"] ];\n\n public get(prefix: string, level: LogLevel): ILogger {\n const logLevel = level || LogLevel.INFO;\n if (logLevel >= LogLevel.INFO) {\n this.LOG_FNS[0].call(this.log, \"[\" + prefix + \"] Logger created\");\n }\n const loggerFns = this.LOG_FNS.map((logTemplFn, i) => {\n return logTemplFn.bind(this.log, this.MSG_PREFIXES[i][0] + prefix + this.MSG_PREFIXES[i][1]);\n });\n return {\n d: (...args: Array<unknown>): void => {\n if (logLevel === LogLevel.DEBUG) {\n loggerFns[0].apply(this.log, [...args]);\n }\n },\n w: (...args: Array<unknown>): void => {\n if (logLevel >= LogLevel.WARN) {\n loggerFns[1].apply(this.log, [...args]);\n }\n },\n e: (...args: Array<unknown>): void => {\n if (logLevel >= LogLevel.ERROR) {\n loggerFns[2].apply(this.log, [...args]);\n }\n }\n };\n }\n\n}\n","export interface IConfigParams {\n baseUrl?: string;\n secret?: string;\n isProduction?: boolean;\n}\n\nexport class Configuration implements IConfigParams {\n public baseUrl: string;\n public secret?: string;\n public isProduction: boolean;\n\n public constructor(params: IConfigParams) {\n this.baseUrl = params.baseUrl || \"\";\n this.secret = params.secret;\n this.isProduction = params.isProduction || false;\n }\n}\n","import { Directive, inject } from \"@angular/core\";\n\nimport { LoggerService, ILogger, LogLevel } from \"../services/logger.service\";\nimport { Configuration } from './configuration.type';\n\n@Directive()\nexport abstract class BasePlain {\n\n protected log: ILogger;\n protected config = inject(Configuration);\n\n protected constructor(logLevel?: LogLevel) {\n const logger = inject(LoggerService);\n this.log = logger.get(\n this.constructor.name,\n logLevel || this.config.isProduction ? LogLevel.ERROR : LogLevel.DEBUG\n );\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { AES, enc } from \"crypto-js\";\nimport { Configuration } from \"../base/configuration.type\";\nimport { BasePlain } from '../base/base-plain.directive';\n\n@Injectable()\nexport class UtilsService extends BasePlain {\n constructor(private cfg: Configuration) {\n super();\n }\n\n public encryptText(text: string): string {\n let data = text;\n if (this.cfg.secret) {\n data = AES.encrypt(text, this.cfg.secret).toString();\n }\n\n return data;\n }\n\n public decryptText(data: string): string {\n let text = data;\n if (text) {\n if (this.cfg.secret) {\n const bytes = AES.decrypt(data.toString(), this.cfg.secret);\n const decrypted = bytes.toString(enc.Utf8);\n if (decrypted) {\n text = decrypted;\n } else {\n this.log.d(\"error decrypting\", data);\n }\n }\n }\n\n return text;\n }\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { UtilsService } from \"./utils.service\";\n\n@Injectable()\nexport class AuthStoreService {\n private readonly KEY_TOKEN = \"mp_sdk:token\";\n private token = \"\";\n\n public constructor(private utilsSrv: UtilsService) {\n }\n\n public setToken(token: string): void {\n this.token = this.utilsSrv.encryptText(token);\n sessionStorage.setItem(this.KEY_TOKEN, this.token);\n }\n\n public getToken(): string {\n const data = sessionStorage.getItem(this.KEY_TOKEN);\n return !!data ? this.utilsSrv.decryptText(data) : null;\n }\n\n public clearToken(): void {\n this.token = null;\n sessionStorage.removeItem(this.KEY_TOKEN);\n }\n\n public isStoredToken(): boolean {\n return this.getToken() !== null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { Router } from '@angular/router';\n\nimport { AuthStoreService } from './auth-store.service';\nimport { BasePlain } from '../base/base-plain.directive';\nimport { LogLevel } from './logger.service';\n\n@Injectable()\nexport class AuthInterceptor extends BasePlain implements HttpInterceptor {\n\n // URLs that don't require authentication\n private readonly excludedUrls = [\n '/auth/login',\n '/auth/register',\n '/public',\n '/health'\n ];\n\n constructor(private authStore: AuthStoreService,\n private router: Router) {\n super(LogLevel.DEBUG);\n }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n // Check if the URL should be excluded\n if (this.shouldExcludeUrl(req.url)) {\n return next.handle(req);\n }\n\n // Get token from AuthStore service\n const authToken = this.authStore.getToken();\n\n this.log.d(\"intercepting\", req.url, authToken);\n let ret: Observable<HttpEvent<any>>;\n if (authToken) {\n // Clone the request and add authorization header\n const authReq = req.clone({\n setHeaders: {\n Authorization: authToken\n }\n });\n // Continue with modified request and handle errors\n\n ret = next.handle(authReq).pipe(\n catchError((error: HttpErrorResponse) => this.handleAuthError(error))\n );\n } else {\n // If no token, continue with original request\n ret = next.handle(req);\n }\n\n return ret\n }\n\n private shouldExcludeUrl(url: string): boolean {\n return this.excludedUrls.some(excludedUrl => url.includes(excludedUrl));\n }\n\n private handleAuthError(error: HttpErrorResponse): Observable<never> {\n if (error.status === 401) {\n // Invalid or expired token\n this.log.w('Invalid or expired authentication token');\n this.authStore.clearToken();\n\n // Redirect to login\n this.router.navigate(['/login']);\n } else if (error.status === 403) {\n // Insufficient permissions\n this.log.w('Insufficient permissions to access the resource');\n }\n\n // Propagate error for component handling\n return throwError(() => error);\n }\n}\n","import { Directive, inject } from \"@angular/core\";;\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { catchError, from, map, Observable } from 'rxjs';\n\nimport { BasePlain } from \"./base-plain.directive\";\nimport { AuthStoreService } from \"../services/auth-store.service\";\nimport { Configuration } from './configuration.type';\nimport { LogLevel } from '../services/logger.service';\nimport { IListDataResponse } from '../models/reponses/list-data.response';\nimport { BaseModel } from '../models/base.model';\n\n@Directive()\nexport abstract class BaseSdk extends BasePlain {\n\n protected authStore = inject(AuthStoreService);\n protected http = inject(HttpClient);\n\n protected doGet<T extends BaseModel>(endpoint: string, params?: HttpParams): Observable<T> {\n return this.http.get<T>(this.config.baseUrl + endpoint, {\n params,\n });\n }\n\n protected doGetList<T extends BaseModel>(endpoint: string, params?: HttpParams): Observable<IListDataResponse<T>> {\n return this.http.get<IListDataResponse<T>>(this.config.baseUrl + endpoint, {\n params,\n });\n }\n\n protected getAuthHeader(): { headers: { [key: string]: string; } } {\n return {\n headers: {\n \"Authorization\": this.authStore.getToken(),\n }\n }\n }\n\n protected handleError(error: any): void {\n this.log.e(\"Error\", error);\n }\n}\n","import { Directive } from \"@angular/core\";\nimport { HttpErrorResponse } from '@angular/common/http';\nimport PocketBase, { ClientResponseError, RecordListOptions, RecordOptions } from \"pocketbase\";\nimport Client from \"pocketbase\";\nimport 'cross-fetch/polyfill';\nimport { catchError, from, map, Observable, ObservableInput } from 'rxjs';\n\nimport { IListDataResponse } from '../models/reponses/list-data.response';\nimport { BaseModel } from '../models/base.model';\nimport { BaseSdk } from './base-main.directive';\n\n@Directive()\nexport class BasePocket extends BaseSdk {\n\n protected connection: Client;\n\n protected connect(): void {\n if (!this.connection) {\n this.connection = new PocketBase(this.config.baseUrl);\n\n }\n }\n\n protected getList<T extends BaseModel>(entity: string, options?: RecordListOptions): Observable<IListDataResponse<T>> {\n this.connect();\n this.log.d(\"getList --- entity\", entity, this.authStore.getToken());\n\n return from(\n this.connection.collection(entity).getList<T>(1, 20, this.buildOptions(options))\n ).pipe(\n catchError(err => this.handleError(err)),\n map(d => (d ? {\n page: d.page,\n pageSize: d.perPage,\n pagesTotal: d.totalPages,\n items: d.items,\n total: d.totalItems\n } : null))\n );\n }\n\n protected getOne<T extends BaseModel>(entity: string, id: string, options?: RecordOptions): Observable<T> {\n this.connect();\n this.log.d(\"fetchOne\", entity, this.authStore.getToken());\n return from(\n this.connection.collection(entity).getOne<T>(id, this.buildOptions(options))\n ).pipe(\n catchError(err => this.handleError(err))\n );\n }\n\n protected save<T extends BaseModel>(entity: string, data: Partial<T>): Observable<T> {\n this.connect();\n this.log.d(\"save\", entity, data?.id, this.authStore.getToken());\n const target = this.connection.collection(entity);\n let promise: Promise<T>;\n if (data.id) {\n promise = target.update<T>(data.id, data, this.getAuthHeader());\n } else {\n promise = target.create<T>(data, this.getAuthHeader());\n }\n\n return from(promise).pipe(\n catchError(err => this.handleError(err))\n );\n }\n\n protected remove(entity: string, id: string): Observable<boolean> {\n this.connect();\n this.log.d(\"remove\", entity, this.authStore.getToken());\n return from(\n this.connection.collection(entity).delete(id, this.getAuthHeader())\n ).pipe(\n catchError(err => this.handleError(err)),\n );\n }\n\n protected override handleError(error: any): ObservableInput<any> {\n if (error instanceof ClientResponseError) {\n this.log.w(\"Http error\", error.status);\n throw new HttpErrorResponse({\n error: error.originalError,\n status: error.status,\n url: error.url\n });\n } else {\n this.log.w(\"Error response unknown\", error);\n throw error;\n }\n }\n\n private buildOptions(options?: RecordListOptions | RecordOptions): RecordListOptions | RecordOptions {\n return options\n ? {...options, ...this.getAuthHeader()}\n : this.getAuthHeader();\n }\n}\n","\nexport class SdkConfig {\n public static readonly Entities = {\n AUTH: \"users\",\n USERS: \"users\",\n EVENTS: \"events\",\n MISSIONS: \"missions\",\n SHIFTS: \"shifts\",\n CALENDAR_SHIFTS: \"calendar_shifts\",\n TEAMS: \"teams\"\n }\n\n public static readonly Endpoints = {\n TEAMS: \"/api/collections/teams/records\"\n }\n\n public static readonly ModelKeys = {\n CREATE_AT: \"created\",\n UPDATE_AT: \"updated\"\n }\n}\n","import { Injectable } from '@angular/core';\nimport { catchError, from, map, Observable } from 'rxjs';\nimport 'cross-fetch/polyfill';\n\nimport { UserModel } from '../models/user.model';\nimport { BasePocket } from '../base/base-pocket.directive';\nimport { SdkConfig } from '../mp-sdk.constants';\n\n@Injectable()\nexport class AuthService extends BasePocket {\n\n constructor() {\n super();\n }\n\n public login(user: string, pass: string): Observable<UserModel> {\n this.connect();\n return from(\n this.connection.collection(SdkConfig.Entities.AUTH).authWithPassword<UserModel>(user, pass)\n ).pipe(\n catchError(err => this.handleError(err)),\n map(data => {\n this.log.d(\"login ok\", data);\n this.authStore.setToken(data.token);\n return data.record;\n })\n )\n }\n\n public logout(): void {\n this.authStore.clearToken();\n }\n}\n","import { Directive } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { BasePocket } from './base-pocket.directive';\nimport { IListDataResponse } from '../models/reponses/list-data.response';\nimport { BaseModel } from '../models/base.model';\nimport { SendOptions } from 'pocketbase';\n\n@Directive()\nexport abstract class BaseResource<T extends BaseModel> extends BasePocket {\n\n protected abstract readonly Options: SendOptions;\n protected abstract readonly Entity: string;\n\n public fetchList(): Observable<IListDataResponse<T>> {\n return this.getList<T>(this.Entity, this.Options);\n }\n\n public fetchOne(id: string): Observable<T> {\n return this.getOne<T>(this.Entity, id)\n }\n\n public create(data: Partial<T>): Observable<T> {\n return this.save<T>(this.Entity, data);\n }\n\n public update(id: string, data: Partial<T>): Observable<T> {\n return this.save<T>(this.Entity, {id, ...data});\n }\n\n public delete(id: string): Observable<boolean> {\n return this.remove(this.Entity, id);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport 'cross-fetch/polyfill';\n\nimport { SdkConfig } from '../mp-sdk.constants';\nimport { BaseResource } from '../base/base-resource.directive';\nimport { MissionModel } from '../models/mission.model';\nimport { IListDataResponse } from '../models/reponses/list-data.response';\n\n@Injectable()\nexport class MissionsService extends BaseResource<MissionModel> {\n\n protected readonly Options = {\n filter: \"isEnabled = true\"\n };\n protected readonly Entity = SdkConfig.Entities.MISSIONS;\n\n constructor() {\n super();\n }\n\n public getArchived(): Observable<IListDataResponse<MissionModel>> {\n return this.getList<MissionModel>(SdkConfig.Entities.MISSIONS, {\n filter: \"isEnabled = false\"\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport 'cross-fetch/polyfill';\n\nimport { SdkConfig } from '../mp-sdk.constants';\nimport { BaseResource } from '../base/base-resource.directive';\nimport { ShiftModel, RecurrenceType, ShiftSpan } from '../models/shift.model';\nimport { CalendarShiftModel } from '../models/calendar-shift.model';\nimport { Observable, from, throwError, catchError, switchMap, map, tap } from 'rxjs';\nimport { IListDataResponse } from \"../models/reponses/list-data.response\";\n\n@Injectable()\nexport class ShiftsService extends BaseResource<ShiftModel> {\n\n protected readonly Options = {\n filter: \"isEnabled = true\"\n };\n\n protected readonly Entity = SdkConfig.Entities.SHIFTS;\n\n constructor() {\n super();\n }\n\n public override create(data: Partial<ShiftModel>): Observable<ShiftModel> {\n if (data.timespan) {\n data.timespan.daysOfWeek = (data.timespan.daysOfWeek || []).map(d => d > 6 ? 0 : d);\n data.startAt = !!data.timespan.initialAt ? new Date(data.timespan?.initialAt) : null;\n }\n return super.create(data);\n }\n\n public override delete(id: string): Observable<boolean> {\n this.connect();\n\n // First, fetch all CalendarShifts associated with this Shift\n return this.getCalendarShiftsByShiftId(id).pipe(\n switchMap(calendarShifts => {\n // Store the IDs for potential rollback\n const calendarShiftIds = calendarShifts.map(cs => cs.id);\n\n // Delete all CalendarShifts first\n return this.deleteCalendarShiftsBatch(calendarShiftIds).pipe(\n switchMap(() => {\n // After successful CalendarShift deletion, delete the main Shift\n return super.delete(id).pipe(\n catchError(error => {\n // If Shift deletion fails, try to restore CalendarShifts\n this.log.e('Error deleting shift, attempting rollback...', error);\n return this.restoreCalendarShifts(calendarShifts).pipe(\n switchMap(() => throwError(() => new Error('Failed to delete shift. CalendarShifts have been restored.')))\n );\n })\n );\n }),\n catchError(error => {\n // If CalendarShift deletion fails, propagate the error\n this.log.e('Error deleting calendar shifts', error);\n return throwError(() => new Error('Failed to delete calendar shifts.'));\n })\n );\n }),\n catchError(error => {\n this.log.e('Error fetching calendar shifts for deletion', error);\n return throwError(() => error);\n })\n );\n }\n\n public assignUsersToCalendarShift(calendarShiftId: string, userIds: Array<string>): Observable<boolean> {\n this.log.d('Assigning users to calendar shift', calendarShiftId, userIds);\n return from(\n this.connection.collection(SdkConfig.Entities.CALENDAR_SHIFTS)\n .update(calendarShiftId, { assignedUsersIds: userIds }, this.getAuthHeader())\n ).pipe(\n tap(record => this.log.d('Assigned users to calendar shift', record)),\n map(record => !!record)\n );\n }\n\n public getCalendarShifts(year?: number): Observable<IListDataResponse<CalendarShiftModel>> {\n this.log.d('Fetching calendar shifts');\n const y = year || new Date().getFullYear();\n const startDate = new Date(y, 0, 1);\n const endDate = new Date(y, 11, 31);\n this.log.d(\n `Fetching calendar shifts for year ${y}`,\n `Start date: ${startDate.toISOString()}`,\n `End date: ${endDate.toISOString()}`\n )\n const filter = `startAt >= \"${startDate.toISOString()}\" && endAt <= \"${endDate.toISOString()}\"`;\n\n return from(\n this.connection.collection(SdkConfig.Entities.CALENDAR_SHIFTS)\n .getList<CalendarShiftModel>(1, 1000, { filter, ...this.getAuthHeader() })\n ).pipe(\n catchError(err => this.handleError(err))\n );\n }\n\n public deleteCalendarShiftById(id: string): Observable<boolean> {\n this.log.d('Deleting calendar shift', id);\n return from(\n this.connection.collection(SdkConfig.Entities.CALENDAR_SHIFTS)\n .delete(id, this.getAuthHeader())\n );\n }\n\n /**\n * Fetches all CalendarShifts associated with a specific Shift ID\n */\n private getCalendarShiftsByShiftId(shiftId: string): Observable<CalendarShiftModel[]> {\n this.log.d('Fetching calendar shifts for shift', shiftId);\n\n const filter = `shiftId = \"${shiftId}\"`;\n\n return from(\n this.connection.collection(SdkConfig.Entities.CALENDAR_SHIFTS)\n .getFullList<CalendarShiftModel>({ filter, ...this.getAuthHeader() })\n ).pipe(\n catchError(err => this.handleError(err))\n );\n }\n\n /**\n * Deletes multiple CalendarShifts in batch\n */\n private deleteCalendarShiftsBatch(calendarShiftIds: string[]): Observable<boolean> {\n if (calendarShiftIds.length === 0) {\n return from([true]);\n }\n\n this.log.d('Deleting calendar shifts batch', calendarShiftIds.length);\n\n // PocketBase batch ops could be disabled,\n // so we create a manual transaction using Promise.all\n const promises = calendarShiftIds.map(id =>\n this.connection.collection(SdkConfig.Entities.CALENDAR_SHIFTS)\n .delete(id, this.getAuthHeader())\n );\n\n return from(Promise.all(promises)).pipe(\n switchMap(() => from([true])),\n catchError(err => this.handleError(err))\n );\n }\n\n /**\n * Restores CalendarShifts in case of rollback\n */\n private restoreCalendarShifts(calendarShifts: CalendarShiftModel[]): Observable<boolean> {\n if (calendarShifts.length === 0) {\n return from([true]);\n }\n\n this.log.d('Restoring calendar shifts', calendarShifts.length);\n\n // Recreate the CalendarShifts with their original data\n const promises = calendarShifts.map(cs =>\n this.connection.collection(SdkConfig.Entities.CALENDAR_SHIFTS)\n .create({\n shiftId: cs.shiftId,\n startAt: cs.startAt,\n endAt: cs.endAt\n }, this.getAuthHeader())\n );\n\n return from(Promise.all(promises)).pipe(\n switchMap(() => from([true])),\n catchError(err => {\n this.log.e('Failed to restore calendar shifts during rollback', err);\n return this.handleError(err);\n })\n );\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport 'cross-fetch/polyfill';\nimport { Observable } from 'rxjs';\n\nimport { SdkConfig } from '../mp-sdk.constants';\nimport { BaseResource } from '../base/base-resource.directive';\nimport { UserModel } from '../models/user.model';\n\n@Injectable()\nexport class UsersService extends BaseResource<UserModel> {\n\n protected readonly Options = {\n filter: \"isEnabled = true\"\n };\n protected readonly Entity = SdkConfig.Entities.USERS;\n\n constructor() {\n super();\n }\n\n public override create(data: Partial<UserModel>): Observable<UserModel> {\n throw new Error(\"Method not supported.\");\n }\n\n public override update(id: string, data: Partial<UserModel>): Observable<UserModel> {\n throw new Error(\"Method not supported.\");\n }\n\n public override delete(id: string): Observable<boolean> {\n throw new Error(\"Method not supported.\");\n }\n\n public findNotAvailable(): Observable<Array<string>> {\n throw new Error();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable, tap } from 'rxjs';\n\nimport { SdkConfig } from '../mp-sdk.constants';\nimport { TeamModel } from '../models/team.model';\nimport { IListDataResponse } from '../models/reponses/list-data.response';\nimport { HttpParams } from '@angular/common/http';\nimport { BaseResource } from '../base/base-resource.directive';\n\n@Injectable()\nexport class TeamsService extends BaseResource<TeamModel> {\n\n protected readonly Options = {\n filter: \"isEnabled = true\",\n fields: \"id,name,isEnabled\"\n };\n protected readonly Entity = SdkConfig.Entities.TEAMS;\n\n constructor() {\n super()\n }\n\n // Unsupported methods\n /**\n * @\n */\n public override fetchOne(id: string): Observable<TeamModel> {\n throw new Error(\"Method not supported.\");\n }\n\n public override create(data: Partial<TeamModel>): Observable<TeamModel> {\n throw new Error(\"Method not supported.\");\n }\n\n public override update(id: string, data: Partial<TeamModel>): Observable<TeamModel> {\n throw new Error(\"Method not supported.\");\n }\n\n public override delete(id: string): Observable<boolean> {\n throw new Error(\"Method not supported.\");\n }\n\n // Alternative methods using Angular Http\n\n public getTeams(): Observable<IListDataResponse<TeamModel>> {\n const params = new HttpParams({\n fromObject: this.Options\n });\n return this.doGetList<TeamModel>(SdkConfig.Endpoints.TEAMS, params)\n .pipe(\n tap(d => this.log.d(\"teams!!\", d))\n );\n }\n\n public fetchTeams(): Observable<IListDataResponse<TeamModel>> {\n return this.getList<TeamModel>(SdkConfig.Entities.TEAMS, this.Options);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { BasePlain } from './base/base-plain.directive';\nimport { AuthService } from './resources/auth.service';\nimport { UserModel } from './models/user.model';\nimport { IListDataResponse } from './models/reponses/list-data.response';\nimport { AuthStoreService } from './services/auth-store.service';\nimport { MissionsService } from './resources/missions.service';\nimport { MissionModel } from './models/mission.model';\nimport { ShiftsService } from './resources/shifts.service';\nimport { ShiftModel } from './models/shift.model';\nimport { UsersService } from './resources/users.service';\nimport { TeamsService } from './resources/teams.service';\nimport { TeamModel } from './models/team.model';\nimport { CalendarShiftModel } from \"./models/calendar-shift.model\";\n\n@Injectable()\nexport class MpSdkService extends BasePlain {\n\n private readonly authSrv = inject(AuthService);\n private readonly authStoreSrv = inject(AuthStoreService);\n\n constructor(private readonly missionsSrv: MissionsService,\n private readonly shiftsSrv: ShiftsService,\n private readonly usersSrv: UsersService,\n private readonly teamsSrv: TeamsService) {\n super();\n }\n\n // Auth\n public login(user: string, pass: string): Observable<UserModel> {\n return this.authSrv.login(user, pass);\n }\n\n public logout(): void {\n this.authSrv.logout();\n }\n\n public isLoggedIn(): boolean {\n return this.authStoreSrv.isStoredToken();\n }\n\n // Missions\n public getMissions(): Observable<IListDataResponse<MissionModel>> {\n return this.missionsSrv.fetchList();\n }\n\n public getArchivedMissions(): Observable<IListDataResponse<MissionModel>> {\n return this.missionsSrv.getArchived();\n }\n\n public getMissionById(id: string): Observable<MissionModel> {\n return this.missionsSrv.fetchOne(id);\n }\n\n public saveMission(m: Partial<MissionModel>): Observable<MissionModel> {\n return !m.id\n ? this.missionsSrv.create(m)\n : this.missionsSrv.update(m.id, m);\n }\n\n public deleteMission(id): Observable<boolean> {\n return this.missionsSrv.delete(id);\n }\n\n // Shifts\n public getShifts(): Observable<IListDataResponse<ShiftModel>> {\n return this.shiftsSrv.fetchList();\n }\n\n public getShiftById(id: string): Observable<ShiftModel> {\n return this.shiftsSrv.fetchOne(id);\n }\n\n public getCalendarShifts(year?: number): Observable<IListDataResponse<CalendarShiftModel>> {\n return this.shiftsSrv.getCalendarShifts(year)\n }\n\n public saveShift(m: Partial<ShiftModel>): Observable<ShiftModel> {\n return !m.id\n ? this.shiftsSrv.create(m)\n : this.shiftsSrv.update(m.id, m);\n }\n\n public deleteShift(id): Observable<boolean> {\n return this.shiftsSrv.delete(id);\n }\n\n public deleteCalendarShift(id): Observable<boolean> {\n return this.shiftsSrv.deleteCalendarShiftById(id);\n }\n\n public assignUsersToCalendarShift(id: string, users: Array<string>): Observable<boolean> {\n return this.shiftsSrv.assignUsersToCalendarShift(id, users);\n }\n\n // Users\n public getUsers(): Observable<IListDataResponse<UserModel>> {\n return this.usersSrv.fetchList();\n }\n\n public getUserById(id: string): Observable<UserModel> {\n return this.usersSrv.fetchOne(id);\n }\n\n public getNotAvailableUsers(startAt: number, endAt: number): Observable<Array<string>> {\n return this.usersSrv.findNotAvailable();\n }\n\n // Teams\n\n public getTeams(): Observable<IListDataResponse<TeamModel>> {\n return this.teamsSrv.fetchList();\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport {\n HTTP_INTERCEPTORS,\n provideHttpClient,\n withInterceptorsFromDi\n} from '@angular/common/http';\n\n\nimport { AuthInterceptor } from './services/auth.interceptor';\nimport { Configuration } from './base/configuration.type';\nimport { AuthService } from './resources/auth.service';\nimport { AuthStoreService } from './services/auth-store.service';\nimport { MpSdkService } from './mp-sdk.service';\nimport { LoggerService } from './services/logger.service';\nimport { UtilsService } from './services/utils.service';\nimport { TeamsService } from './resources/teams.service';\nimport { MissionsService } from './resources/missions.service';\nimport { ShiftsService } from './resources/shifts.service';\nimport { UsersService } from './resources/users.service';\n\nconst defaultConfig = (): Configuration => {\n return new Configuration({\n baseUrl: \"http://localhost:3000/api/\",\n secret: \"lwjhvkjdfhglk\",\n isProduction: false\n });\n};\n\n@NgModule({\n providers: [\n provideHttpClient(withInterceptorsFromDi()),\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthInterceptor,\n multi: true\n },\n LoggerService,\n UtilsService,\n AuthStoreService,\n AuthService,\n MissionsService,\n ShiftsService,\n TeamsService,\n UsersService,\n MpSdkService\n ]\n})\nexport class MpSdkModule\n{\n public static forRoot(\n configurationFactory: () => Configuration,\n ): ModuleWithProviders<MpSdkModule> {\n return {\n ngModule: MpSdkModule,\n providers: [{\n provide: Configuration,\n useFactory: configurationFactory || defaultConfig\n }],\n };\n }\n}\n","/*\n * Public API Surface of lib\n */\n\nexport * from \"./lib/models/calendar-shift.model\";\nexport * from \"./lib/models/event.model\";\nexport * from \"./lib/models/mission.model\";\nexport * from \"./lib/models/shift.model\";\nexport * from \"./lib/models/user.model\";\nexport * from \"./lib/models/team.model\";\n\nexport * from \"./lib/mp-sdk.module\";\nexport * from \"./lib/mp-sdk.service\";\nexport * from \"./lib/base/configuration.type\";\nexport * from \"./lib/services/auth-store.service\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LogLevel","i1.Configuration","i1.UtilsService","i1.AuthStoreService","catchError","i1.MissionsService","i2.ShiftsService","i3.UsersService","i4.TeamsService"],"mappings":"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"}
1
+ {"version":3,"file":"m481-mp-sdk-ng.mjs","sources":["../../../../projects/mp/sdk-ngx/src/lib/models/base.model.ts","../../../../projects/mp/sdk-ngx/src/lib/models/calendar-shift.model.ts","../../../../projects/mp/sdk-ngx/src/lib/models/event.model.ts","../../../../projects/mp/sdk-ngx/src/lib/models/mission.model.ts","../../../../projects/mp/sdk-ngx/src/lib/models/shift.model.ts","../../../../projects/mp/sdk-ngx/src/lib/models/user.model.ts","../../../../projects/mp/sdk-ngx/src/lib/models/team.model.ts","../../../../projects/mp/sdk-ngx/src/lib/services/logger.service.ts","../../../../projects/mp/sdk-ngx/src/lib/base/configuration.type.ts","../../../../projects/mp/sdk-ngx/src/lib/base/base-plain.directive.ts","../../../../projects/mp/sdk-ngx/src/lib/services/utils.service.ts","../../../../projects/mp/sdk-ngx/src/lib/services/auth-store.service.ts","../../../../projects/mp/sdk-ngx/src/lib/services/auth.interceptor.ts","../../../../projects/mp/sdk-ngx/src/lib/base/base-main.directive.ts","../../../../projects/mp/sdk-ngx/src/lib/base/base-pocket.directive.ts","../../../../projects/mp/sdk-ngx/src/lib/mp-sdk.constants.ts","../../../../projects/mp/sdk-ngx/src/lib/resources/auth.service.ts","../../../../projects/mp/sdk-ngx/src/lib/base/base-resource.directive.ts","../../../../projects/mp/sdk-ngx/src/lib/resources/missions.service.ts","../../../../projects/mp/sdk-ngx/src/lib/resources/shifts.service.ts","../../../../projects/mp/sdk-ngx/src/lib/resources/users.service.ts","../../../../projects/mp/sdk-ngx/src/lib/resources/teams.service.ts","../../../../projects/mp/sdk-ngx/src/lib/mp-sdk.service.ts","../../../../projects/mp/sdk-ngx/src/lib/mp-sdk.module.ts","../../../../projects/mp/sdk-ngx/src/public-api.ts","../../../../projects/mp/sdk-ngx/src/m481-mp-sdk-ng.ts"],"sourcesContent":["\nexport abstract class BaseModel\n{\n public id: string;\n public created?: Date;\n public updated?: Date;\n}\n","import { BaseModel } from './base.model';\n\nexport class CalendarShiftModel extends BaseModel\n{\n\tpublic shiftId: string;\n public startAt: Date;\n public endAt: Date;\n public assignedUsersIds: Array<string>;\n}\n","import { BaseModel } from './base.model';\n\nexport type EventScope = \"mission\" | \"shift\" | \"user\";\n\nexport class EventModel extends BaseModel\n{\n\tpublic message: string;\n\tpublic scope: EventScope;\n\tpublic objectId: string;\n\tpublic userId: string;\n}\n","import { BaseModel } from './base.model';\nimport { TeamModel } from './team.model';\n\nexport class MissionModel extends BaseModel\n{\n\tpublic name: string;\n\tpublic isRegular: boolean;\n\tpublic color: string;\n\tpublic hours: Array<Array<number>>; // [ [11, 13], [17, 19] ] -\n \tpublic teamId: string;\n\tpublic team?: TeamModel;\n\tpublic isEnabled?: boolean;\n}\n","import { BaseModel } from './base.model';\nimport { MissionModel } from './mission.model';\n\nexport enum RecurrenceType {\n DAILY,\n WEEKLY,\n MONTHLY\n}\n\nexport interface ShiftSpan {\n initialAt: number;\n maxSlots: number;\n type?: RecurrenceType;\n interval?: number;\n daysOfWeek?: Array<number>;\n dayOfMonth?: number;\n finalizeAt?: number;\n}\n\nexport class ShiftModel extends BaseModel\n{\n\tpublic missionId: string;\n public missionHourIndex: number;\n\tpublic teamId: string;\n\tpublic assignedUsersIds: Array<string>;\n\tpublic mission?: MissionModel;\n public timespan: ShiftSpan;\n public startAt?: Date;\n public isEnabled?: boolean;\n}\n","import { BaseModel } from './base.model';\nimport { RecordModel } from 'pocketbase';\n\nexport class UserModel extends BaseModel\n{\n\tpublic email: string;\n public username: string;\n\tpublic verified: boolean;\n\tpublic name: string;\n public teamsAdmin: Array<string>;\n public teamsMember: Array<string>;\n public password?: string;\n\tpublic avatar?: any;\n public avatarUrl?: string;\n public isEnabled?: boolean;\n}\n","import { BaseModel } from './base.model';\n\nexport class TeamModel extends BaseModel\n{\n\tpublic name: string;\n public slug: string;\n public isEnabled?: boolean;\n}\n","import { Injectable } from \"@angular/core\";\n\nexport interface ILogService {\n get(name: string, level: LogLevel): ILogger;\n}\n\nexport interface ILogger {\n d(...args: Array<unknown>): void;\n w(...args: Array<unknown>): void;\n e(...args: Array<unknown>): void;\n}\n\nexport enum LogLevel {\n ERROR = 0,\n WARN = 1,\n INFO = 2,\n DEBUG = 3,\n}\n\n@Injectable({ providedIn: \"root\" })\nexport class LoggerService implements ILogService {\n public log = window.console;\n public LOG_FNS = [this.log.log, this.log.warn, this.log.error];\n public MSG_PREFIXES = [ [\"[\", \"]\"], [\"[\", \"] WARN: \"], [\"[\", \"] ERROR: \"] ];\n\n public get(prefix: string, level: LogLevel): ILogger {\n const logLevel = level || LogLevel.INFO;\n if (logLevel >= LogLevel.INFO) {\n this.LOG_FNS[0].call(this.log, \"[\" + prefix + \"] Logger created\");\n }\n const loggerFns = this.LOG_FNS.map((logTemplFn, i) => {\n return logTemplFn.bind(this.log, this.MSG_PREFIXES[i][0] + prefix + this.MSG_PREFIXES[i][1]);\n });\n return {\n d: (...args: Array<unknown>): void => {\n if (logLevel === LogLevel.DEBUG) {\n loggerFns[0].apply(this.log, [...args]);\n }\n },\n w: (...args: Array<unknown>): void => {\n if (logLevel >= LogLevel.WARN) {\n loggerFns[1].apply(this.log, [...args]);\n }\n },\n e: (...args: Array<unknown>): void => {\n if (logLevel >= LogLevel.ERROR) {\n loggerFns[2].apply(this.log, [...args]);\n }\n }\n };\n }\n\n}\n","export interface IConfigParams {\n baseUrl?: string;\n secret?: string;\n isProduction?: boolean;\n}\n\nexport class Configuration implements IConfigParams {\n public baseUrl: string;\n public secret?: string;\n public isProduction: boolean;\n\n public constructor(params: IConfigParams) {\n this.baseUrl = params.baseUrl || \"\";\n this.secret = params.secret;\n this.isProduction = params.isProduction || false;\n }\n}\n","import { Directive, inject } from \"@angular/core\";\n\nimport { LoggerService, ILogger, LogLevel } from \"../services/logger.service\";\nimport { Configuration } from './configuration.type';\n\n@Directive()\nexport abstract class BasePlain {\n\n protected log: ILogger;\n protected config = inject(Configuration);\n\n protected constructor(logLevel?: LogLevel) {\n const logger = inject(LoggerService);\n this.log = logger.get(\n this.constructor.name,\n logLevel || this.config.isProduction ? LogLevel.ERROR : LogLevel.DEBUG\n );\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { AES, enc } from \"crypto-js\";\nimport { Configuration } from \"../base/configuration.type\";\nimport { BasePlain } from '../base/base-plain.directive';\n\n@Injectable()\nexport class UtilsService extends BasePlain {\n constructor(private cfg: Configuration) {\n super();\n }\n\n public encryptText(text: string): string {\n let data = text;\n if (this.cfg.secret) {\n data = AES.encrypt(text, this.cfg.secret).toString();\n }\n\n return data;\n }\n\n public decryptText(data: string): string {\n let text = data;\n if (text) {\n if (this.cfg.secret) {\n const bytes = AES.decrypt(data.toString(), this.cfg.secret);\n const decrypted = bytes.toString(enc.Utf8);\n if (decrypted) {\n text = decrypted;\n } else {\n this.log.d(\"error decrypting\", data);\n }\n }\n }\n\n return text;\n }\n}\n","import { Injectable } from \"@angular/core\";\n\nimport { UtilsService } from \"./utils.service\";\n\n@Injectable()\nexport class AuthStoreService {\n private readonly KEY_TOKEN = \"mp_sdk:token\";\n private token = \"\";\n\n public constructor(private utilsSrv: UtilsService) {\n }\n\n public setToken(token: string): void {\n this.token = this.utilsSrv.encryptText(token);\n sessionStorage.setItem(this.KEY_TOKEN, this.token);\n }\n\n public getToken(): string {\n const data = sessionStorage.getItem(this.KEY_TOKEN);\n return !!data ? this.utilsSrv.decryptText(data) : null;\n }\n\n public clearToken(): void {\n this.token = null;\n sessionStorage.removeItem(this.KEY_TOKEN);\n }\n\n public isStoredToken(): boolean {\n return this.getToken() !== null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { Router } from '@angular/router';\n\nimport { AuthStoreService } from './auth-store.service';\nimport { BasePlain } from '../base/base-plain.directive';\nimport { LogLevel } from './logger.service';\n\n@Injectable()\nexport class AuthInterceptor extends BasePlain implements HttpInterceptor {\n\n // URLs that don't require authentication\n private readonly excludedUrls = [\n '/auth/login',\n '/auth/register',\n '/public',\n '/health'\n ];\n\n constructor(private authStore: AuthStoreService,\n private router: Router) {\n super(LogLevel.DEBUG);\n }\n\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n // Check if the URL should be excluded\n if (this.shouldExcludeUrl(req.url)) {\n return next.handle(req);\n }\n\n // Get token from AuthStore service\n const authToken = this.authStore.getToken();\n\n this.log.d(\"intercepting\", req.url, authToken);\n let ret: Observable<HttpEvent<any>>;\n if (authToken) {\n // Clone the request and add authorization header\n const authReq = req.clone({\n setHeaders: {\n Authorization: authToken\n }\n });\n // Continue with modified request and handle errors\n\n ret = next.handle(authReq).pipe(\n catchError((error: HttpErrorResponse) => this.handleAuthError(error))\n );\n } else {\n // If no token, continue with original request\n ret = next.handle(req);\n }\n\n return ret\n }\n\n private shouldExcludeUrl(url: string): boolean {\n return this.excludedUrls.some(excludedUrl => url.includes(excludedUrl));\n }\n\n private handleAuthError(error: HttpErrorResponse): Observable<never> {\n if (error.status === 401) {\n // Invalid or expired token\n this.log.w('Invalid or expired authentication token');\n this.authStore.clearToken();\n\n // Redirect to login\n this.router.navigate(['/login']);\n } else if (error.status === 403) {\n // Insufficient permissions\n this.log.w('Insufficient permissions to access the resource');\n }\n\n // Propagate error for component handling\n return throwError(() => error);\n }\n}\n","import { Directive, inject } from \"@angular/core\";;\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { catchError, from, map, Observable } from 'rxjs';\n\nimport { BasePlain } from \"./base-plain.directive\";\nimport { AuthStoreService } from \"../services/auth-store.service\";\nimport { Configuration } from './configuration.type';\nimport { LogLevel } from '../services/logger.service';\nimport { IListDataResponse } from '../models/reponses/list-data.response';\nimport { BaseModel } from '../models/base.model';\n\n@Directive()\nexport abstract class BaseSdk extends BasePlain {\n\n protected authStore = inject(AuthStoreService);\n protected http = inject(HttpClient);\n\n protected doGet<T extends BaseModel>(endpoint: string, params?: HttpParams): Observable<T> {\n return this.http.get<T>(this.config.baseUrl + endpoint, {\n params,\n });\n }\n\n protected doGetList<T extends BaseModel>(endpoint: string, params?: HttpParams): Observable<IListDataResponse<T>> {\n return this.http.get<IListDataResponse<T>>(this.config.baseUrl + endpoint, {\n params,\n });\n }\n\n protected getAuthHeader(): { headers: { [key: string]: string; } } {\n return {\n headers: {\n \"Authorization\": this.authStore.getToken(),\n }\n }\n }\n\n protected handleError(error: any): void {\n this.log.e(\"Error\", error);\n }\n}\n","import { Directive } from \"@angular/core\";\nimport { HttpErrorResponse } from '@angular/common/http';\nimport PocketBase, { ClientResponseError, RecordListOptions, RecordOptions } from \"pocketbase\";\nimport Client from \"pocketbase\";\nimport 'cross-fetch/polyfill';\nimport { catchError, from, map, Observable, ObservableInput } from 'rxjs';\n\nimport { IListDataResponse } from '../models/reponses/list-data.response';\nimport { BaseModel } from '../models/base.model';\nimport { BaseSdk } from './base-main.directive';\n\n@Directive()\nexport class BasePocket extends BaseSdk {\n\n protected client: Client;\n protected filterData: { criteria: string; params: { [key: string]: any; }; };\n\n protected connect(): void {\n if (!this.client) {\n this.client = new PocketBase(this.config.baseUrl);\n }\n }\n\n protected getList<T extends BaseModel>(entity: string, options?: RecordListOptions): Observable<IListDataResponse<T>> {\n this.connect();\n this.log.d(\"getList --- entity\", entity, this.authStore.getToken());\n\n const listOpts = options || {} as RecordListOptions;\n if (this.filterData) {\n listOpts.filter = this.client.filter(this.filterData.criteria, this.filterData.params);\n }\n\n return from(\n this.client.collection(entity).getList<T>(1, 20, this.buildOptions(listOpts))\n ).pipe(\n catchError(err => this.handleError(err)),\n map(d => (d ? {\n page: d.page,\n pageSize: d.perPage,\n pagesTotal: d.totalPages,\n items: d.items,\n total: d.totalItems\n } : null))\n );\n }\n\n protected getOne<T extends BaseModel>(entity: string, id: string, options?: RecordOptions): Observable<T> {\n this.connect();\n this.log.d(\"fetchOne\", entity, this.authStore.getToken());\n return from(\n this.client.collection(entity).getOne<T>(id, this.buildOptions(options))\n ).pipe(\n catchError(err => this.handleError(err))\n );\n }\n\n protected save<T extends BaseModel>(entity: string, data: Partial<T>): Observable<T> {\n this.connect();\n this.log.d(\"save\", entity, data?.id, this.authStore.getToken());\n const target = this.client.collection(entity);\n let promise: Promise<T>;\n if (data.id) {\n promise = target.update<T>(data.id, data, this.getAuthHeader());\n } else {\n promise = target.create<T>(data, this.getAuthHeader());\n }\n\n return from(promise).pipe(\n catchError(err => this.handleError(err))\n );\n }\n\n protected remove(entity: string, id: string): Observable<boolean> {\n this.connect();\n this.log.d(\"remove\", entity, this.authStore.getToken());\n return from(\n this.client.collection(entity).delete(id, this.getAuthHeader())\n ).pipe(\n catchError(err => this.handleError(err)),\n );\n }\n\n protected override handleError(error: any): ObservableInput<any> {\n if (error instanceof ClientResponseError) {\n this.log.w(\"Http error\", error.status);\n throw new HttpErrorResponse({\n error: error.originalError,\n status: error.status,\n url: error.url\n });\n } else {\n this.log.w(\"Error response unknown\", error);\n throw error;\n }\n }\n\n protected buildOptions(options?: RecordListOptions | RecordOptions): RecordListOptions | RecordOptions {\n return options\n ? {...options, ...this.getAuthHeader()}\n : this.getAuthHeader();\n }\n}\n","\nexport class SdkConfig {\n public static readonly Entities = {\n AUTH: \"users\",\n USERS: \"users\",\n EVENTS: \"events\",\n MISSIONS: \"missions\",\n SHIFTS: \"shifts\",\n CALENDAR_SHIFTS: \"calendar_shifts\",\n TEAMS: \"teams\"\n }\n\n public static readonly Endpoints = {\n TEAMS: \"/api/collections/teams/records\"\n }\n\n public static readonly ModelKeys = {\n CREATE_AT: \"created\",\n UPDATE_AT: \"updated\"\n }\n}\n","import { Injectable } from '@angular/core';\nimport { catchError, from, map, Observable } from 'rxjs';\nimport 'cross-fetch/polyfill';\n\nimport { UserModel } from '../models/user.model';\nimport { BasePocket } from '../base/base-pocket.directive';\nimport { SdkConfig } from '../mp-sdk.constants';\n\n@Injectable()\nexport class AuthService extends BasePocket {\n\n constructor() {\n super();\n }\n\n public login(user: string, pass: string): Observable<UserModel> {\n this.connect();\n return from(\n this.client.collection(SdkConfig.Entities.AUTH).authWithPassword<UserModel>(user, pass)\n ).pipe(\n catchError(err => this.handleError(err)),\n map(data => {\n this.log.d(\"login ok\", data);\n this.authStore.setToken(data.token);\n return data.record;\n })\n )\n }\n\n public logout(): void {\n this.authStore.clearToken();\n }\n}\n","import { Directive } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { RecordListOptions } from 'pocketbase';\n\nimport { BasePocket } from './base-pocket.directive';\nimport { IListDataResponse } from '../models/reponses/list-data.response';\nimport { BaseModel } from '../models/base.model';\n\n@Directive()\nexport abstract class BaseResource<T extends BaseModel> extends BasePocket {\n\n protected abstract readonly Entity: string;\n protected readonly FilterMeta = \"isEnabled = {:isEnabled}\"\n protected readonly FilterMetaParams = {\n isEnabled: true\n };\n protected listOptions: RecordListOptions;\n\n public fetchList(): Observable<IListDataResponse<T>> {\n return this.getList<T>(this.Entity, this.listOptions);\n }\n\n public fetchOne(id: string): Observable<T> {\n return this.getOne<T>(this.Entity, id)\n }\n\n public create(data: Partial<T>): Observable<T> {\n return this.save<T>(this.Entity, data);\n }\n\n public update(id: string, data: Partial<T>): Observable<T> {\n return this.save<T>(this.Entity, {id, ...data});\n }\n\n public delete(id: string): Observable<boolean> {\n return this.remove(this.Entity, id);\n }\n\n protected setFilterDefaults(): void {\n this.filterData = { criteria: this.FilterMeta, params: this.FilterMetaParams };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport 'cross-fetch/polyfill';\n\nimport { SdkConfig } from '../mp-sdk.constants';\nimport { BaseResource } from '../base/base-resource.directive';\nimport { MissionModel } from '../models/mission.model';\nimport { IListDataResponse } from '../models/reponses/list-data.response';\n\n@Injectable()\nexport class MissionsService extends BaseResource<MissionModel> {\n\n protected readonly Entity = SdkConfig.Entities.MISSIONS;\n\n constructor() {\n super();\n }\n\n public override fetchList(): Observable<IListDataResponse<MissionModel>> {\n this.setFilterDefaults();\n return super.fetchList();\n }\n\n public getArchived(): Observable<IListDataResponse<MissionModel>> {\n return this.getList<MissionModel>(SdkConfig.Entities.MISSIONS, {\n filter: this.client.filter(this.FilterMeta, { isEnabled: false })\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport 'cross-fetch/polyfill';\n\nimport { SdkConfig } from '../mp-sdk.constants';\nimport { BaseResource } from '../base/base-resource.directive';\nimport { ShiftModel, RecurrenceType, ShiftSpan } from '../models/shift.model';\nimport { CalendarShiftModel } from '../models/calendar-shift.model';\nimport { Observable, from, throwError, catchError, switchMap, map, tap } from 'rxjs';\nimport { IListDataResponse } from \"../models/reponses/list-data.response\";\nimport { RecordListOptions } from 'pocketbase';\n\n@Injectable()\nexport class ShiftsService extends BaseResource<ShiftModel> {\n\n protected readonly Entity = SdkConfig.Entities.SHIFTS;\n\n constructor() {\n super();\n }\n\n public fetch(startDate?: number): Observable<IListDataResponse<ShiftModel>> {\n this.listOptions = { perPage: 100 } as RecordListOptions;\n this.setFilterDefaults();\n if (startDate) {\n this.filterData.criteria += \" && startAt >= {:startAt}\";\n this.filterData.params[\"startAt\"] = new Date(startDate);\n }\n return this.fetchList();\n }\n\n public searchByMissionAndHour(missionId: string, missionHourIndex: number): Observable<IListDataResponse<ShiftModel>> {\n this.listOptions = { perPage: 100 } as RecordListOptions;\n this.setFilterDefaults();\n this.filterData.criteria += ` && missionId = \"${missionId}\" && missionHourIndex = ${missionHourIndex}`;\n return this.fetchList();\n }\n\n public override create(data: Partial<ShiftModel>): Observable<ShiftModel> {\n if (data.timespan) {\n data.timespan.daysOfWeek = (data.timespan.daysOfWeek || []).map(d => d > 6 ? 0 : d);\n data.startAt = !!data.timespan.initialAt ? new Date(data.timespan?.initialAt) : null;\n }\n return super.create(data);\n }\n\n public override delete(id: string): Observable<boolean> {\n this.connect();\n\n // First, fetch all CalendarShifts associated with this Shift\n return this.getCalendarShiftsByShiftId(id).pipe(\n switchMap(calendarShifts => {\n // Store the IDs for potential rollback\n const calendarShiftIds = calendarShifts.map(cs => cs.id);\n\n // Delete all CalendarShifts first\n return this.deleteCalendarShiftsBatch(calendarShiftIds).pipe(\n switchMap(() => {\n // After successful CalendarShift deletion, delete the main Shift\n return super.delete(id).pipe(\n catchError(error => {\n // If Shift deletion fails, try to restore CalendarShifts\n this.log.e('Error deleting shift, attempting rollback...', error);\n return this.restoreCalendarShifts(calendarShifts).pipe(\n switchMap(() => throwError(() => new Error('Failed to delete shift. CalendarShifts have been restored.')))\n );\n })\n );\n }),\n catchError(error => {\n // If CalendarShift deletion fails, propagate the error\n this.log.e('Error deleting calendar shifts', error);\n return throwError(() => new Error('Failed to delete calendar shifts.'));\n })\n );\n }),\n catchError(error => {\n this.log.e('Error fetching calendar shifts for deletion', error);\n return throwError(() => error);\n })\n );\n }\n\n public assignUsersToCalendarShift(calendarShiftId: string, userIds: Array<string>): Observable<boolean> {\n this.log.d('Assigning users to calendar shift', calendarShiftId, userIds);\n return from(\n this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)\n .update(calendarShiftId, { assignedUsersIds: userIds }, this.getAuthHeader())\n ).pipe(\n tap(record => this.log.d('Assigned users to calendar shift', record)),\n map(record => !!record)\n );\n }\n\n public getCalendarShifts(dates: Array<number>, pageSize = 1000): Observable<IListDataResponse<CalendarShiftModel>> {\n this.log.d('Fetching calendar shifts', dates);\n this.setFilterDefaults();\n if (dates?.length > 0) {\n this.filterData.criteria += \" && startAt >= {:startAt}\";\n this.filterData.params[\"startAt\"] = new Date(dates[0]);\n\n if (dates.length > 1) {\n this.filterData.criteria += \" && endAt >= {:endAt}\";\n this.filterData.params[\"endAt\"] = new Date(dates[1]);\n }\n }\n\n const listOpts = {} as RecordListOptions;\n if (this.filterData) {\n listOpts.filter = this.client.filter(this.filterData.criteria, this.filterData.params);\n }\n\n return from(\n this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)\n .getList<CalendarShiftModel>(1, pageSize, this.buildOptions(listOpts))\n ).pipe(\n catchError(err => this.handleError(err))\n );\n }\n\n public getCalendarShiftsByYear(year?: number): Observable<IListDataResponse<CalendarShiftModel>> {\n this.log.d('Fetching calendar shifts per year');\n const y = year || new Date().getFullYear();\n const dates = [\n (new Date(y, 0, 1)).getTime(),\n (new Date(y, 11, 31)).getTime()\n ];\n\n return this.getCalendarShifts(dates);\n }\n\n public deleteCalendarShiftById(id: string): Observable<boolean> {\n this.log.d('Deleting calendar shift', id);\n return from(\n this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)\n .delete(id, this.getAuthHeader())\n );\n }\n\n /**\n * Fetches all CalendarShifts associated with a specific Shift ID\n */\n private getCalendarShiftsByShiftId(shiftId: string): Observable<CalendarShiftModel[]> {\n this.log.d('Fetching calendar shifts for shift', shiftId);\n\n const filter = `shiftId = \"${shiftId}\"`;\n\n return from(\n this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)\n .getFullList<CalendarShiftModel>({ filter, ...this.getAuthHeader() })\n ).pipe(\n catchError(err => this.handleError(err))\n );\n }\n\n /**\n * Deletes multiple CalendarShifts in batch\n */\n private deleteCalendarShiftsBatch(calendarShiftIds: string[]): Observable<boolean> {\n if (calendarShiftIds.length === 0) {\n return from([true]);\n }\n\n this.log.d('Deleting calendar shifts batch', calendarShiftIds.length);\n\n // PocketBase batch ops could be disabled,\n // so we create a manual transaction using Promise.all\n const promises = calendarShiftIds.map(id =>\n this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)\n .delete(id, this.getAuthHeader())\n );\n\n return from(Promise.all(promises)).pipe(\n switchMap(() => from([true])),\n catchError(err => this.handleError(err))\n );\n }\n\n /**\n * Restores CalendarShifts in case of rollback\n */\n private restoreCalendarShifts(calendarShifts: CalendarShiftModel[]): Observable<boolean> {\n if (calendarShifts.length === 0) {\n return from([true]);\n }\n\n this.log.d('Restoring calendar shifts', calendarShifts.length);\n\n // Recreate the CalendarShifts with their original data\n const promises = calendarShifts.map(cs =>\n this.client.collection(SdkConfig.Entities.CALENDAR_SHIFTS)\n .create({\n shiftId: cs.shiftId,\n startAt: cs.startAt,\n endAt: cs.endAt\n }, this.getAuthHeader())\n );\n\n return from(Promise.all(promises)).pipe(\n switchMap(() => from([true])),\n catchError(err => {\n this.log.e('Failed to restore calendar shifts during rollback', err);\n return this.handleError(err);\n })\n );\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport 'cross-fetch/polyfill';\nimport { Observable } from 'rxjs';\n\nimport { SdkConfig } from '../mp-sdk.constants';\nimport { BaseResource } from '../base/base-resource.directive';\nimport { UserModel } from '../models/user.model';\nimport { IListDataResponse } from '../models/reponses/list-data.response';\n\n@Injectable()\nexport class UsersService extends BaseResource<UserModel> {\n\n protected readonly Entity = SdkConfig.Entities.USERS;\n\n constructor() {\n super();\n }\n\n public override fetchList(): Observable<IListDataResponse<UserModel>> {\n this.setFilterDefaults();\n return super.fetchList();\n }\n\n // Unsupported\n\n public override create(data: Partial<UserModel>): Observable<UserModel> {\n throw new Error(\"Method not supported.\");\n }\n\n public override update(id: string, data: Partial<UserModel>): Observable<UserModel> {\n throw new Error(\"Method not supported.\");\n }\n\n public override delete(id: string): Observable<boolean> {\n throw new Error(\"Method not supported.\");\n }\n\n public findNotAvailable(): Observable<Array<string>> {\n throw new Error();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpParams } from '@angular/common/http';\nimport { Observable, tap } from 'rxjs';\nimport { RecordListOptions } from 'pocketbase';\n\nimport { SdkConfig } from '../mp-sdk.constants';\nimport { TeamModel } from '../models/team.model';\nimport { IListDataResponse } from '../models/reponses/list-data.response';\nimport { BaseResource } from '../base/base-resource.directive';\n\n@Injectable()\nexport class TeamsService extends BaseResource<TeamModel> {\n\n protected readonly Entity = SdkConfig.Entities.TEAMS;\n\n constructor() {\n super()\n }\n\n public override fetchList(): Observable<IListDataResponse<TeamModel>> {\n this.listOptions = { fields: \"id,name,isEnabled\" };\n this.setFilterDefaults();\n return super.fetchList();\n }\n\n // Unsupported methods\n /**\n * @\n */\n public override fetchOne(id: string): Observable<TeamModel> {\n throw new Error(\"Method not supported.\");\n }\n\n public override create(data: Partial<TeamModel>): Observable<TeamModel> {\n throw new Error(\"Method not supported.\");\n }\n\n public override update(id: string, data: Partial<TeamModel>): Observable<TeamModel> {\n throw new Error(\"Method not supported.\");\n }\n\n public override delete(id: string): Observable<boolean> {\n throw new Error(\"Method not supported.\");\n }\n\n // Alternative methods using Angular Http\n\n public getTeams(): Observable<IListDataResponse<TeamModel>> {\n const params = new HttpParams({\n fromObject: this.listOptions\n });\n return this.doGetList<TeamModel>(SdkConfig.Endpoints.TEAMS, params)\n .pipe(\n tap(d => this.log.d(\"teams!!\", d))\n );\n }\n\n public fetchTeams(): Observable<IListDataResponse<TeamModel>> {\n return this.getList<TeamModel>(SdkConfig.Entities.TEAMS, this.listOptions);\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { map, Observable } from 'rxjs';\n\nimport { BasePlain } from './base/base-plain.directive';\nimport { AuthService } from './resources/auth.service';\nimport { UserModel } from './models/user.model';\nimport { IListDataResponse } from './models/reponses/list-data.response';\nimport { AuthStoreService } from './services/auth-store.service';\nimport { MissionsService } from './resources/missions.service';\nimport { MissionModel } from './models/mission.model';\nimport { ShiftsService } from './resources/shifts.service';\nimport { ShiftModel } from './models/shift.model';\nimport { UsersService } from './resources/users.service';\nimport { TeamsService } from './resources/teams.service';\nimport { TeamModel } from './models/team.model';\nimport { CalendarShiftModel } from \"./models/calendar-shift.model\";\n\n@Injectable()\nexport class MpSdkService extends BasePlain {\n\n private readonly authSrv = inject(AuthService);\n private readonly authStoreSrv = inject(AuthStoreService);\n\n constructor(private readonly missionsSrv: MissionsService,\n private readonly shiftsSrv: ShiftsService,\n private readonly usersSrv: UsersService,\n private readonly teamsSrv: TeamsService) {\n super();\n }\n\n // Auth\n public login(user: string, pass: string): Observable<UserModel> {\n return this.authSrv.login(user, pass);\n }\n\n public logout(): void {\n this.authSrv.logout();\n }\n\n public isLoggedIn(): boolean {\n return this.authStoreSrv.isStoredToken();\n }\n\n // Missions\n public getMissions(): Observable<IListDataResponse<MissionModel>> {\n return this.missionsSrv.fetchList();\n }\n\n public getArchivedMissions(): Observable<IListDataResponse<MissionModel>> {\n return this.missionsSrv.getArchived();\n }\n\n public getMissionById(id: string): Observable<MissionModel> {\n return this.missionsSrv.fetchOne(id);\n }\n\n public saveMission(m: Partial<MissionModel>): Observable<MissionModel> {\n return !m.id\n ? this.missionsSrv.create(m)\n : this.missionsSrv.update(m.id, m);\n }\n\n public deleteMission(id): Observable<boolean> {\n return this.missionsSrv.delete(id);\n }\n\n // Shifts\n public getShifts(startDate?: number): Observable<IListDataResponse<ShiftModel>> {\n return this.shiftsSrv.fetch(startDate);\n }\n\n public getShiftsByMissionHour(id: string, hourIndex: number): Observable<Array<ShiftModel>> {\n return this.shiftsSrv.searchByMissionAndHour(id, hourIndex).pipe(\n map(d => d.items)\n );\n }\n\n public getShiftById(id: string): Observable<ShiftModel> {\n return this.shiftsSrv.fetchOne(id);\n }\n\n public getCalendarShifts(d: Array<number>): Observable<IListDataResponse<CalendarShiftModel>> {\n return this.shiftsSrv.getCalendarShifts(d)\n }\n\n public getCalendarShiftsPerYear(year?: number): Observable<IListDataResponse<CalendarShiftModel>> {\n return this.shiftsSrv.getCalendarShiftsByYear(year)\n }\n\n public saveShift(m: Partial<ShiftModel>): Observable<ShiftModel> {\n return !m.id\n ? this.shiftsSrv.create(m)\n : this.shiftsSrv.update(m.id, m);\n }\n\n public deleteShift(id): Observable<boolean> {\n return this.shiftsSrv.delete(id);\n }\n\n public deleteCalendarShift(id): Observable<boolean> {\n return this.shiftsSrv.deleteCalendarShiftById(id);\n }\n\n public assignUsersToCalendarShift(id: string, users: Array<string>): Observable<boolean> {\n return this.shiftsSrv.assignUsersToCalendarShift(id, users);\n }\n\n // Users\n public getUsers(): Observable<IListDataResponse<UserModel>> {\n return this.usersSrv.fetchList();\n }\n\n public getUserById(id: string): Observable<UserModel> {\n return this.usersSrv.fetchOne(id);\n }\n\n public getNotAvailableUsers(startAt: number, endAt: number): Observable<Array<string>> {\n return this.usersSrv.findNotAvailable();\n }\n\n // Teams\n\n public getTeams(): Observable<IListDataResponse<TeamModel>> {\n return this.teamsSrv.fetchList();\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport {\n HTTP_INTERCEPTORS,\n provideHttpClient,\n withInterceptorsFromDi\n} from '@angular/common/http';\n\n\nimport { AuthInterceptor } from './services/auth.interceptor';\nimport { Configuration } from './base/configuration.type';\nimport { AuthService } from './resources/auth.service';\nimport { AuthStoreService } from './services/auth-store.service';\nimport { MpSdkService } from './mp-sdk.service';\nimport { LoggerService } from './services/logger.service';\nimport { UtilsService } from './services/utils.service';\nimport { TeamsService } from './resources/teams.service';\nimport { MissionsService } from './resources/missions.service';\nimport { ShiftsService } from './resources/shifts.service';\nimport { UsersService } from './resources/users.service';\n\nconst defaultConfig = (): Configuration => {\n return new Configuration({\n baseUrl: \"http://localhost:3000/api/\",\n secret: \"lwjhvkjdfhglk\",\n isProduction: false\n });\n};\n\n@NgModule({\n providers: [\n provideHttpClient(withInterceptorsFromDi()),\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthInterceptor,\n multi: true\n },\n LoggerService,\n UtilsService,\n AuthStoreService,\n AuthService,\n MissionsService,\n ShiftsService,\n TeamsService,\n UsersService,\n MpSdkService\n ]\n})\nexport class MpSdkModule\n{\n public static forRoot(\n configurationFactory: () => Configuration,\n ): ModuleWithProviders<MpSdkModule> {\n return {\n ngModule: MpSdkModule,\n providers: [{\n provide: Configuration,\n useFactory: configurationFactory || defaultConfig\n }],\n };\n }\n}\n","/*\n * Public API Surface of lib\n */\n\nexport * from \"./lib/models/calendar-shift.model\";\nexport * from \"./lib/models/event.model\";\nexport * from \"./lib/models/mission.model\";\nexport * from \"./lib/models/shift.model\";\nexport * from \"./lib/models/user.model\";\nexport * from \"./lib/models/team.model\";\n\nexport * from \"./lib/mp-sdk.module\";\nexport * from \"./lib/mp-sdk.service\";\nexport * from \"./lib/base/configuration.type\";\nexport * from \"./lib/services/auth-store.service\";\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.LogLevel","i1.Configuration","i1.UtilsService","i1.AuthStoreService","catchError","i1.MissionsService","i2.ShiftsService","i3.UsersService","i4.TeamsService"],"mappings":";;;;;;;;;;MACsB,SAAS,CAAA;AAEpB,IAAA,EAAE;AACF,IAAA,OAAO;AACP,IAAA,OAAO;AACjB;;ACJK,MAAO,kBAAmB,SAAQ,SAAS,CAAA;AAEzC,IAAA,OAAO;AACJ,IAAA,OAAO;AACP,IAAA,KAAK;AACL,IAAA,gBAAgB;AAC1B;;ACJK,MAAO,UAAW,SAAQ,SAAS,CAAA;AAEjC,IAAA,OAAO;AACP,IAAA,KAAK;AACL,IAAA,QAAQ;AACR,IAAA,MAAM;AACb;;ACPK,MAAO,YAAa,SAAQ,SAAS,CAAA;AAEnC,IAAA,IAAI;AACJ,IAAA,SAAS;AACT,IAAA,KAAK;IACL,KAAK,CAAuB;AAC3B,IAAA,MAAM;AACP,IAAA,IAAI;AACJ,IAAA,SAAS;AAChB;;ICTW;AAAZ,CAAA,UAAY,cAAc,EAAA;AACtB,IAAA,cAAA,CAAA,cAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK;AACL,IAAA,cAAA,CAAA,cAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM;AACN,IAAA,cAAA,CAAA,cAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO;AACX,CAAC,EAJW,cAAc,KAAd,cAAc,GAIzB,EAAA,CAAA,CAAA;AAYK,MAAO,UAAW,SAAQ,SAAS,CAAA;AAEjC,IAAA,SAAS;AACN,IAAA,gBAAgB;AACnB,IAAA,MAAM;AACN,IAAA,gBAAgB;AAChB,IAAA,OAAO;AACJ,IAAA,QAAQ;AACR,IAAA,OAAO;AACP,IAAA,SAAS;AACnB;;AC1BK,MAAO,SAAU,SAAQ,SAAS,CAAA;AAEhC,IAAA,KAAK;AACF,IAAA,QAAQ;AACX,IAAA,QAAQ;AACR,IAAA,IAAI;AACD,IAAA,UAAU;AACV,IAAA,WAAW;AACX,IAAA,QAAQ;AACX,IAAA,MAAM;AACH,IAAA,SAAS;AACT,IAAA,SAAS;AACnB;;ACbK,MAAO,SAAU,SAAQ,SAAS,CAAA;AAEhC,IAAA,IAAI;AACD,IAAA,IAAI;AACJ,IAAA,SAAS;AACnB;;ACKD,IAAY,QAKX;AALD,CAAA,UAAY,QAAQ,EAAA;AAChB,IAAA,QAAA,CAAA,QAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS;AACT,IAAA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ;AACR,IAAA,QAAA,CAAA,QAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ;AACR,IAAA,QAAA,CAAA,QAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS;AACb,CAAC,EALW,QAAQ,KAAR,QAAQ,GAKnB,EAAA,CAAA,CAAA;MAGY,aAAa,CAAA;AACf,IAAA,GAAG,GAAG,MAAM,CAAC,OAAO;IACpB,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;IACvD,YAAY,GAAG,CAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,CAAE;IAEpE,GAAG,CAAC,MAAc,EAAE,KAAe,EAAA;AACtC,QAAA,MAAM,QAAQ,GAAG,KAAK,IAAI,QAAQ,CAAC,IAAI;AACvC,QAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;AAC3B,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,kBAAkB,CAAC;;AAErE,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,KAAI;AACjD,YAAA,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChG,SAAC,CAAC;QACF,OAAO;AACH,YAAA,CAAC,EAAE,CAAC,GAAG,IAAoB,KAAU;AACjC,gBAAA,IAAI,QAAQ,KAAK,QAAQ,CAAC,KAAK,EAAE;AAC7B,oBAAA,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;;aAE9C;AACD,YAAA,CAAC,EAAE,CAAC,GAAG,IAAoB,KAAU;AACjC,gBAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;AAC3B,oBAAA,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;;aAE9C;AACD,YAAA,CAAC,EAAE,CAAC,GAAG,IAAoB,KAAU;AACjC,gBAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,EAAE;AAC5B,oBAAA,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;;;SAGlD;;wGA7BI,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAb,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cADA,MAAM,EAAA,CAAA;;4FACnB,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCbrB,aAAa,CAAA;AACjB,IAAA,OAAO;AACP,IAAA,MAAM;AACN,IAAA,YAAY;AAEnB,IAAA,WAAA,CAAmB,MAAqB,EAAA;QACtC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE;AACnC,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM;QAC3B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,KAAK;;AAEnD;;MCVqB,SAAS,CAAA;AAEjB,IAAA,GAAG;AACH,IAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AAExC,IAAA,WAAA,CAAsB,QAAmB,EAAA;AACrC,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AACpC,QAAA,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CACjB,IAAI,CAAC,WAAW,CAAC,IAAI,EACrB,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CACzE;;wGAVa,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAD9B;;;ACCK,MAAO,YAAa,SAAQ,SAAS,CAAA;AACnB,IAAA,GAAA;AAApB,IAAA,WAAA,CAAoB,GAAkB,EAAA;AACpC,QAAA,KAAK,EAAE;QADW,IAAG,CAAA,GAAA,GAAH,GAAG;;AAIhB,IAAA,WAAW,CAAC,IAAY,EAAA;QAC3B,IAAI,IAAI,GAAG,IAAI;AACf,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;AACjB,YAAA,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE;;AAGxD,QAAA,OAAO,IAAI;;AAGR,IAAA,WAAW,CAAC,IAAY,EAAA;QAC3B,IAAI,IAAI,GAAG,IAAI;QACf,IAAI,IAAI,EAAE;AACN,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;AACjB,gBAAA,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC3D,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC1C,IAAI,SAAS,EAAE;oBACX,IAAI,GAAG,SAAS;;qBACb;oBACL,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,IAAI,CAAC;;;;AAK9C,QAAA,OAAO,IAAI;;wGA5BN,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAZ,YAAY,EAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB;;;MCAY,gBAAgB,CAAA;AAIE,IAAA,QAAA;IAHV,SAAS,GAAG,cAAc;IACnC,KAAK,GAAG,EAAE;AAElB,IAAA,WAAA,CAA2B,QAAsB,EAAA;QAAtB,IAAQ,CAAA,QAAA,GAAR,QAAQ;;AAG5B,IAAA,QAAQ,CAAC,KAAa,EAAA;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC;QAC7C,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC;;IAG/C,QAAQ,GAAA;QACX,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;AACnD,QAAA,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI;;IAGnD,UAAU,GAAA;AACb,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;;IAGtC,aAAa,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI;;wGAvB1B,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAhB,gBAAgB,EAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;ACOK,MAAO,eAAgB,SAAQ,SAAS,CAAA;AAUxB,IAAA,SAAA;AACA,IAAA,MAAA;;AARH,IAAA,YAAY,GAAG;QAC9B,aAAa;QACb,gBAAgB;QAChB,SAAS;QACT;KACD;IAED,WAAoB,CAAA,SAA2B,EAC3B,MAAc,EAAA;AAC9B,QAAA,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAFL,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAM,CAAA,MAAA,GAAN,MAAM;;IAI1B,SAAS,CAAC,GAAqB,EAAE,IAAiB,EAAA;;QAEhD,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;AAClC,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;;;QAIzB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AAE3C,QAAA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC;AAC9C,QAAA,IAAI,GAA+B;QACnC,IAAI,SAAS,EAAE;;AAEX,YAAA,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC;AACtB,gBAAA,UAAU,EAAE;AACR,oBAAA,aAAa,EAAE;AAClB;AACJ,aAAA,CAAC;;YAGF,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAC3B,UAAU,CAAC,CAAC,KAAwB,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CACxE;;aACE;;AAEH,YAAA,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;;AAG1B,QAAA,OAAO,GAAG;;AAGJ,IAAA,gBAAgB,CAAC,GAAW,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;;AAGjE,IAAA,eAAe,CAAC,KAAwB,EAAA;AAC9C,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;;AAExB,YAAA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,yCAAyC,CAAC;AACrD,YAAA,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;;YAG3B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC;;AAC3B,aAAA,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;;AAE/B,YAAA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,iDAAiD,CAAC;;;AAI/D,QAAA,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC;;wGAhErB,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAf,eAAe,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;;ACViD;AAY5C,MAAgB,OAAQ,SAAQ,SAAS,CAAA;AAEjC,IAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACpC,IAAA,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC;IAEzB,KAAK,CAAsB,QAAgB,EAAE,MAAmB,EAAA;AACtE,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAI,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,QAAQ,EAAE;YACpD,MAAM;AACT,SAAA,CAAC;;IAGI,SAAS,CAAsB,QAAgB,EAAE,MAAmB,EAAA;AAC1E,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAuB,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,QAAQ,EAAE;YACvE,MAAM;AACT,SAAA,CAAC;;IAGI,aAAa,GAAA;QACnB,OAAO;AACH,YAAA,OAAO,EAAE;AACL,gBAAA,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AAC7C;SACJ;;AAGK,IAAA,WAAW,CAAC,KAAU,EAAA;QAC5B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC;;wGA1BZ,OAAO,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;ACCK,MAAO,UAAW,SAAQ,OAAO,CAAA;AAEzB,IAAA,MAAM;AACN,IAAA,UAAU;IAEV,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACd,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;;;IAI/C,OAAO,CAAsB,MAAc,EAAE,OAA2B,EAAA;QAC9E,IAAI,CAAC,OAAO,EAAE;AACd,QAAA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,oBAAoB,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AAEnE,QAAA,MAAM,QAAQ,GAAG,OAAO,IAAI,EAAuB;AACnD,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;;QAG1F,OAAO,IAAI,CACP,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,OAAO,CAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAChF,CAAC,IAAI,CACFC,YAAU,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EACxC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG;YACV,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,CAAC,CAAC,OAAO;YACnB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,KAAK,EAAE,CAAC,CAAC;AACZ,SAAA,GAAG,IAAI,CAAC,CAAC,CACb;;AAGK,IAAA,MAAM,CAAsB,MAAc,EAAE,EAAU,EAAE,OAAuB,EAAA;QACrF,IAAI,CAAC,OAAO,EAAE;AACd,QAAA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AACzD,QAAA,OAAO,IAAI,CACP,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAI,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAC3E,CAAC,IAAI,CACFA,YAAU,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAC3C;;IAGK,IAAI,CAAsB,MAAc,EAAE,IAAgB,EAAA;QAChE,IAAI,CAAC,OAAO,EAAE;QACd,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;AAC7C,QAAA,IAAI,OAAmB;AACvB,QAAA,IAAI,IAAI,CAAC,EAAE,EAAE;AACT,YAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAI,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;;aAC5D;AACH,YAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAI,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;;QAG1D,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CACrBA,YAAU,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAC3C;;IAGK,MAAM,CAAC,MAAc,EAAE,EAAU,EAAA;QACvC,IAAI,CAAC,OAAO,EAAE;AACd,QAAA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;AACvD,QAAA,OAAO,IAAI,CACP,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAClE,CAAC,IAAI,CACFA,YAAU,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAC3C;;AAGc,IAAA,WAAW,CAAC,KAAU,EAAA;AACrC,QAAA,IAAI,KAAK,YAAY,mBAAmB,EAAE;YACtC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC;YACtC,MAAM,IAAI,iBAAiB,CAAC;gBACxB,KAAK,EAAE,KAAK,CAAC,aAAa;gBAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,GAAG,EAAE,KAAK,CAAC;AACd,aAAA,CAAC;;aACC;YACH,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAwB,EAAE,KAAK,CAAC;AAC3C,YAAA,MAAM,KAAK;;;AAIT,IAAA,YAAY,CAAC,OAA2C,EAAA;AAC9D,QAAA,OAAO;cACD,EAAC,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE;AACtC,cAAE,IAAI,CAAC,aAAa,EAAE;;wGAvFrB,UAAU,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB;;;MCVY,SAAS,CAAA;IACX,OAAgB,QAAQ,GAAG;AAC9B,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,QAAQ,EAAE,UAAU;AACpB,QAAA,MAAM,EAAE,QAAQ;AAChB,QAAA,eAAe,EAAE,iBAAiB;AAClC,QAAA,KAAK,EAAE;KACV;IAEM,OAAgB,SAAS,GAAG;AAC/B,QAAA,KAAK,EAAE;KACV;IAEM,OAAgB,SAAS,GAAG;AAC/B,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,SAAS,EAAE;KACd;;;ACVC,MAAO,WAAY,SAAQ,UAAU,CAAA;AAEvC,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;;IAGJ,KAAK,CAAC,IAAY,EAAE,IAAY,EAAA;QACnC,IAAI,CAAC,OAAO,EAAE;AACd,QAAA,OAAO,IAAI,CACP,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAY,IAAI,EAAE,IAAI,CAAC,CAC1F,CAAC,IAAI,CACFA,YAAU,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EACxC,GAAG,CAAC,IAAI,IAAG;YACP,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC;YAC5B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YACnC,OAAO,IAAI,CAAC,MAAM;SACrB,CAAC,CACL;;IAGE,MAAM,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;;wGArBtB,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAX,WAAW,EAAA,CAAA;;4FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;;ACCK,MAAgB,YAAkC,SAAQ,UAAU,CAAA;IAGnD,UAAU,GAAG,0BAA0B;AACvC,IAAA,gBAAgB,GAAG;AAClC,QAAA,SAAS,EAAE;KACd;AACS,IAAA,WAAW;IAEd,SAAS,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,OAAO,CAAI,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC;;AAGlD,IAAA,QAAQ,CAAC,EAAU,EAAA;QACtB,OAAO,IAAI,CAAC,MAAM,CAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;;AAGnC,IAAA,MAAM,CAAC,IAAgB,EAAA;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAI,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;;IAGnC,MAAM,CAAC,EAAU,EAAE,IAAgB,EAAA;AACtC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAI,IAAI,CAAC,MAAM,EAAE,EAAC,EAAE,EAAE,GAAG,IAAI,EAAC,CAAC;;AAG5C,IAAA,MAAM,CAAC,EAAU,EAAA;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;;IAG7B,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE;;wGA9BhE,YAAY,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADjC;;;ACEK,MAAO,eAAgB,SAAQ,YAA0B,CAAA;AAExC,IAAA,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ;AAEvD,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;;IAGK,SAAS,GAAA;QACrB,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,OAAO,KAAK,CAAC,SAAS,EAAE;;IAGrB,WAAW,GAAA;QACd,OAAO,IAAI,CAAC,OAAO,CAAe,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE;AAC3D,YAAA,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;AACnE,SAAA,CAAC;;wGAhBG,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAf,eAAe,EAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;;ACGK,MAAO,aAAc,SAAQ,YAAwB,CAAA;AAEpC,IAAA,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM;AAErD,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;;AAGJ,IAAA,KAAK,CAAC,SAAkB,EAAA;QAC3B,IAAI,CAAC,WAAW,GAAG,EAAE,OAAO,EAAE,GAAG,EAAuB;QACxD,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,SAAS,EAAE;AACX,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,2BAA2B;AACvD,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC;;AAE3D,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE;;IAGpB,sBAAsB,CAAC,SAAiB,EAAE,gBAAwB,EAAA;QACrE,IAAI,CAAC,WAAW,GAAG,EAAE,OAAO,EAAE,GAAG,EAAuB;QACxD,IAAI,CAAC,iBAAiB,EAAE;QACxB,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,oBAAoB,SAAS,CAAA,wBAAA,EAA2B,gBAAgB,CAAA,CAAE;AACtG,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE;;AAGX,IAAA,MAAM,CAAC,IAAyB,EAAA;AAC5C,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnF,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,IAAI;;AAExF,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;;AAGb,IAAA,MAAM,CAAC,EAAU,EAAA;QAC7B,IAAI,CAAC,OAAO,EAAE;;AAGd,QAAA,OAAO,IAAI,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC,IAAI,CAC3C,SAAS,CAAC,cAAc,IAAG;;AAEvB,YAAA,MAAM,gBAAgB,GAAG,cAAc,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;;AAGxD,YAAA,OAAO,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,CAAC,IAAI,CACxD,SAAS,CAAC,MAAK;;AAEX,gBAAA,OAAO,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CACxBA,YAAU,CAAC,KAAK,IAAG;;oBAEf,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,8CAA8C,EAAE,KAAK,CAAC;oBACjE,OAAO,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,IAAI,CAClD,SAAS,CAAC,MAAM,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC,CAAC,CAC7G;iBACJ,CAAC,CACL;AACL,aAAC,CAAC,EACFA,YAAU,CAAC,KAAK,IAAG;;gBAEf,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,gCAAgC,EAAE,KAAK,CAAC;gBACnD,OAAO,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;aAC1E,CAAC,CACL;AACL,SAAC,CAAC,EACFA,YAAU,CAAC,KAAK,IAAG;YACf,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,6CAA6C,EAAE,KAAK,CAAC;AAChE,YAAA,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC;SACjC,CAAC,CACL;;IAGE,0BAA0B,CAAC,eAAuB,EAAE,OAAsB,EAAA;QAC7E,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,mCAAmC,EAAE,eAAe,EAAE,OAAO,CAAC;AACzE,QAAA,OAAO,IAAI,CACP,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe;aACpD,MAAM,CAAC,eAAe,EAAE,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CACpF,CAAC,IAAI,CACF,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,kCAAkC,EAAE,MAAM,CAAC,CAAC,EACrE,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAC1B;;AAGE,IAAA,iBAAiB,CAAC,KAAoB,EAAE,QAAQ,GAAG,IAAI,EAAA;QAC1D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,0BAA0B,EAAE,KAAK,CAAC;QAC7C,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,IAAI,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,2BAA2B;AACvD,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEtD,YAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAClB,gBAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,IAAI,uBAAuB;AACnD,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;;QAI5D,MAAM,QAAQ,GAAG,EAAuB;AACxC,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;;AAG1F,QAAA,OAAO,IAAI,CACP,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe;AACpD,aAAA,OAAO,CAAqB,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAC7E,CAAC,IAAI,CACFA,YAAU,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAC3C;;AAGE,IAAA,uBAAuB,CAAC,IAAa,EAAA;AACxC,QAAA,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,mCAAmC,CAAC;QAC/C,MAAM,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;AAC1C,QAAA,MAAM,KAAK,GAAG;AACV,YAAA,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE;AAC7B,YAAA,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO;SAChC;AAED,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;;AAGjC,IAAA,uBAAuB,CAAC,EAAU,EAAA;QACrC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,yBAAyB,EAAE,EAAE,CAAC;AACzC,QAAA,OAAO,IAAI,CACP,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe;aACpD,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CACxC;;AAGL;;AAEG;AACK,IAAA,0BAA0B,CAAC,OAAe,EAAA;QAC9C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,oCAAoC,EAAE,OAAO,CAAC;AAEzD,QAAA,MAAM,MAAM,GAAG,CAAc,WAAA,EAAA,OAAO,GAAG;AAEvC,QAAA,OAAO,IAAI,CACP,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe;AACpD,aAAA,WAAW,CAAqB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAC5E,CAAC,IAAI,CACFA,YAAU,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAC3C;;AAGL;;AAEG;AACK,IAAA,yBAAyB,CAAC,gBAA0B,EAAA;AACxD,QAAA,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/B,YAAA,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;;QAGvB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,gCAAgC,EAAE,gBAAgB,CAAC,MAAM,CAAC;;;QAIrE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,EAAE,IACpC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe;aACpD,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CACxC;AAED,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CACnC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAC7BA,YAAU,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAC3C;;AAGL;;AAEG;AACK,IAAA,qBAAqB,CAAC,cAAoC,EAAA;AAC9D,QAAA,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;AAC7B,YAAA,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;;QAGvB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,2BAA2B,EAAE,cAAc,CAAC,MAAM,CAAC;;QAG9D,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,EAAE,IAClC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe;AACpD,aAAA,MAAM,CAAC;YACJ,OAAO,EAAE,EAAE,CAAC,OAAO;YACnB,OAAO,EAAE,EAAE,CAAC,OAAO;YACnB,KAAK,EAAE,EAAE,CAAC;AACb,SAAA,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAC/B;AAED,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CACnC,SAAS,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAC7BA,YAAU,CAAC,GAAG,IAAG;YACb,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,mDAAmD,EAAE,GAAG,CAAC;AACpE,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;SAC/B,CAAC,CACL;;wGA/LI,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAb,aAAa,EAAA,CAAA;;4FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;;ACDK,MAAO,YAAa,SAAQ,YAAuB,CAAA;AAElC,IAAA,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK;AAEpD,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;;IAGK,SAAS,GAAA;QACrB,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,OAAO,KAAK,CAAC,SAAS,EAAE;;;AAKZ,IAAA,MAAM,CAAC,IAAwB,EAAA;AAC3C,QAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;;IAG5B,MAAM,CAAC,EAAU,EAAE,IAAwB,EAAA;AACvD,QAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;;AAG5B,IAAA,MAAM,CAAC,EAAU,EAAA;AAC7B,QAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;;IAGrC,gBAAgB,GAAA;QACnB,MAAM,IAAI,KAAK,EAAE;;wGA5BZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAZ,YAAY,EAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB;;;ACEK,MAAO,YAAa,SAAQ,YAAuB,CAAA;AAElC,IAAA,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK;AAEpD,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE;;IAGK,SAAS,GAAA;QACrB,IAAI,CAAC,WAAW,GAAG,EAAE,MAAM,EAAE,mBAAmB,EAAE;QAClD,IAAI,CAAC,iBAAiB,EAAE;AACxB,QAAA,OAAO,KAAK,CAAC,SAAS,EAAE;;;AAI5B;;AAEG;AACa,IAAA,QAAQ,CAAC,EAAU,EAAA;AAC/B,QAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;;AAG5B,IAAA,MAAM,CAAC,IAAwB,EAAA;AAC3C,QAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;;IAG5B,MAAM,CAAC,EAAU,EAAE,IAAwB,EAAA;AACvD,QAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;;AAG5B,IAAA,MAAM,CAAC,EAAU,EAAA;AAC7B,QAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;;;IAKrC,QAAQ,GAAA;AACX,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC;YAC1B,UAAU,EAAE,IAAI,CAAC;AACpB,SAAA,CAAC;QACF,OAAO,IAAI,CAAC,SAAS,CAAY,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM;AAC7D,aAAA,IAAI,CACD,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CACrC;;IAGF,UAAU,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,OAAO,CAAY,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC;;wGA/CrE,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAZ,YAAY,EAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB;;;ACQK,MAAO,YAAa,SAAQ,SAAS,CAAA;AAKV,IAAA,WAAA;AACA,IAAA,SAAA;AACA,IAAA,QAAA;AACA,IAAA,QAAA;AANZ,IAAA,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC;AAC7B,IAAA,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAExD,IAAA,WAAA,CAA6B,WAA4B,EAC5B,SAAwB,EACxB,QAAsB,EACtB,QAAsB,EAAA;AAC/C,QAAA,KAAK,EAAE;QAJkB,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAQ,CAAA,QAAA,GAAR,QAAQ;;;IAK9B,KAAK,CAAC,IAAY,EAAE,IAAY,EAAA;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;;IAGlC,MAAM,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;;IAGlB,UAAU,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;;;IAIrC,WAAW,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;;IAGhC,mBAAmB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;;AAGlC,IAAA,cAAc,CAAC,EAAU,EAAA;QAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;;AAGjC,IAAA,WAAW,CAAC,CAAwB,EAAA;QACvC,OAAO,CAAC,CAAC,CAAC;cACJ,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC3B,cAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;;AAGnC,IAAA,aAAa,CAAC,EAAE,EAAA;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;;;AAI/B,IAAA,SAAS,CAAC,SAAkB,EAAA;QAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC;;IAGnC,sBAAsB,CAAC,EAAU,EAAE,SAAiB,EAAA;QACvD,OAAO,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,IAAI,CAC5D,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CACpB;;AAGE,IAAA,YAAY,CAAC,EAAU,EAAA;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;;AAG/B,IAAA,iBAAiB,CAAC,CAAgB,EAAA;QACrC,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC;;AAGvC,IAAA,wBAAwB,CAAC,IAAa,EAAA;QACzC,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC;;AAGhD,IAAA,SAAS,CAAC,CAAsB,EAAA;QACnC,OAAO,CAAC,CAAC,CAAC;cACJ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACzB,cAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;;AAGjC,IAAA,WAAW,CAAC,EAAE,EAAA;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;;AAG7B,IAAA,mBAAmB,CAAC,EAAE,EAAA;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,EAAE,CAAC;;IAG9C,0BAA0B,CAAC,EAAU,EAAE,KAAoB,EAAA;QAC9D,OAAO,IAAI,CAAC,SAAS,CAAC,0BAA0B,CAAC,EAAE,EAAE,KAAK,CAAC;;;IAIxD,QAAQ,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;;AAG7B,IAAA,WAAW,CAAC,EAAU,EAAA;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;;IAG9B,oBAAoB,CAAC,OAAe,EAAE,KAAa,EAAA;AACtD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE;;;IAKpC,QAAQ,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;;wGAzG3B,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;4GAAZ,YAAY,EAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB;;;ACGD,MAAM,aAAa,GAAG,MAAoB;IACtC,OAAO,IAAI,aAAa,CAAC;AACrB,QAAA,OAAO,EAAE,4BAA4B;AACrC,QAAA,MAAM,EAAE,eAAe;AACvB,QAAA,YAAY,EAAE;AACjB,KAAA,CAAC;AACN,CAAC;MAqBY,WAAW,CAAA;IAEb,OAAO,OAAO,CACjB,oBAAyC,EAAA;QAEzC,OAAO;AACH,YAAA,QAAQ,EAAE,WAAW;AACrB,YAAA,SAAS,EAAE,CAAC;AACR,oBAAA,OAAO,EAAE,aAAa;oBACtB,UAAU,EAAE,oBAAoB,IAAI;iBACvC,CAAC;SACL;;wGAXI,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;yGAAX,WAAW,EAAA,CAAA;AAAX,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,EAlBT,SAAA,EAAA;YACP,iBAAiB,CAAC,sBAAsB,EAAE,CAAC;AAC3C,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,QAAQ,EAAE,eAAe;AACzB,gBAAA,KAAK,EAAE;AACV,aAAA;YACD,aAAa;YACb,YAAY;YACZ,gBAAgB;YAChB,WAAW;YACX,eAAe;YACf,aAAa;YACb,YAAY;YACZ,YAAY;YACZ;AACH,SAAA,EAAA,CAAA;;4FAEQ,WAAW,EAAA,UAAA,EAAA,CAAA;kBAnBvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,SAAS,EAAE;wBACP,iBAAiB,CAAC,sBAAsB,EAAE,CAAC;AAC3C,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,QAAQ,EAAE,eAAe;AACzB,4BAAA,KAAK,EAAE;AACV,yBAAA;wBACD,aAAa;wBACb,YAAY;wBACZ,gBAAgB;wBAChB,WAAW;wBACX,eAAe;wBACf,aAAa;wBACb,YAAY;wBACZ,YAAY;wBACZ;AACH;AACJ,iBAAA;;;AC9CD;;AAEG;;ACFH;;AAEG;;;;"}
@@ -7,14 +7,20 @@ import { BaseModel } from '../models/base.model';
7
7
  import { BaseSdk } from './base-main.directive';
8
8
  import * as i0 from "@angular/core";
9
9
  export declare class BasePocket extends BaseSdk {
10
- protected connection: Client;
10
+ protected client: Client;
11
+ protected filterData: {
12
+ criteria: string;
13
+ params: {
14
+ [key: string]: any;
15
+ };
16
+ };
11
17
  protected connect(): void;
12
18
  protected getList<T extends BaseModel>(entity: string, options?: RecordListOptions): Observable<IListDataResponse<T>>;
13
19
  protected getOne<T extends BaseModel>(entity: string, id: string, options?: RecordOptions): Observable<T>;
14
20
  protected save<T extends BaseModel>(entity: string, data: Partial<T>): Observable<T>;
15
21
  protected remove(entity: string, id: string): Observable<boolean>;
16
22
  protected handleError(error: any): ObservableInput<any>;
17
- private buildOptions;
23
+ protected buildOptions(options?: RecordListOptions | RecordOptions): RecordListOptions | RecordOptions;
18
24
  static ɵfac: i0.ɵɵFactoryDeclaration<BasePocket, never>;
19
25
  static ɵdir: i0.ɵɵDirectiveDeclaration<BasePocket, never, never, {}, {}, never, never, true, never>;
20
26
  }
@@ -1,17 +1,22 @@
1
1
  import { Observable } from 'rxjs';
2
+ import { RecordListOptions } from 'pocketbase';
2
3
  import { BasePocket } from './base-pocket.directive';
3
4
  import { IListDataResponse } from '../models/reponses/list-data.response';
4
5
  import { BaseModel } from '../models/base.model';
5
- import { SendOptions } from 'pocketbase';
6
6
  import * as i0 from "@angular/core";
7
7
  export declare abstract class BaseResource<T extends BaseModel> extends BasePocket {
8
- protected abstract readonly Options: SendOptions;
9
8
  protected abstract readonly Entity: string;
9
+ protected readonly FilterMeta = "isEnabled = {:isEnabled}";
10
+ protected readonly FilterMetaParams: {
11
+ isEnabled: boolean;
12
+ };
13
+ protected listOptions: RecordListOptions;
10
14
  fetchList(): Observable<IListDataResponse<T>>;
11
15
  fetchOne(id: string): Observable<T>;
12
16
  create(data: Partial<T>): Observable<T>;
13
17
  update(id: string, data: Partial<T>): Observable<T>;
14
18
  delete(id: string): Observable<boolean>;
19
+ protected setFilterDefaults(): void;
15
20
  static ɵfac: i0.ɵɵFactoryDeclaration<BaseResource<any>, never>;
16
21
  static ɵdir: i0.ɵɵDirectiveDeclaration<BaseResource<any>, never, never, {}, {}, never, never, true, never>;
17
22
  }
@@ -27,9 +27,11 @@ export declare class MpSdkService extends BasePlain {
27
27
  getMissionById(id: string): Observable<MissionModel>;
28
28
  saveMission(m: Partial<MissionModel>): Observable<MissionModel>;
29
29
  deleteMission(id: any): Observable<boolean>;
30
- getShifts(): Observable<IListDataResponse<ShiftModel>>;
30
+ getShifts(startDate?: number): Observable<IListDataResponse<ShiftModel>>;
31
+ getShiftsByMissionHour(id: string, hourIndex: number): Observable<Array<ShiftModel>>;
31
32
  getShiftById(id: string): Observable<ShiftModel>;
32
- getCalendarShifts(year?: number): Observable<IListDataResponse<CalendarShiftModel>>;
33
+ getCalendarShifts(d: Array<number>): Observable<IListDataResponse<CalendarShiftModel>>;
34
+ getCalendarShiftsPerYear(year?: number): Observable<IListDataResponse<CalendarShiftModel>>;
33
35
  saveShift(m: Partial<ShiftModel>): Observable<ShiftModel>;
34
36
  deleteShift(id: any): Observable<boolean>;
35
37
  deleteCalendarShift(id: any): Observable<boolean>;
@@ -5,11 +5,9 @@ import { MissionModel } from '../models/mission.model';
5
5
  import { IListDataResponse } from '../models/reponses/list-data.response';
6
6
  import * as i0 from "@angular/core";
7
7
  export declare class MissionsService extends BaseResource<MissionModel> {
8
- protected readonly Options: {
9
- filter: string;
10
- };
11
8
  protected readonly Entity: string;
12
9
  constructor();
10
+ fetchList(): Observable<IListDataResponse<MissionModel>>;
13
11
  getArchived(): Observable<IListDataResponse<MissionModel>>;
14
12
  static ɵfac: i0.ɵɵFactoryDeclaration<MissionsService, never>;
15
13
  static ɵprov: i0.ɵɵInjectableDeclaration<MissionsService>;
@@ -6,15 +6,15 @@ import { Observable } from 'rxjs';
6
6
  import { IListDataResponse } from "../models/reponses/list-data.response";
7
7
  import * as i0 from "@angular/core";
8
8
  export declare class ShiftsService extends BaseResource<ShiftModel> {
9
- protected readonly Options: {
10
- filter: string;
11
- };
12
9
  protected readonly Entity: string;
13
10
  constructor();
11
+ fetch(startDate?: number): Observable<IListDataResponse<ShiftModel>>;
12
+ searchByMissionAndHour(missionId: string, missionHourIndex: number): Observable<IListDataResponse<ShiftModel>>;
14
13
  create(data: Partial<ShiftModel>): Observable<ShiftModel>;
15
14
  delete(id: string): Observable<boolean>;
16
15
  assignUsersToCalendarShift(calendarShiftId: string, userIds: Array<string>): Observable<boolean>;
17
- getCalendarShifts(year?: number): Observable<IListDataResponse<CalendarShiftModel>>;
16
+ getCalendarShifts(dates: Array<number>, pageSize?: number): Observable<IListDataResponse<CalendarShiftModel>>;
17
+ getCalendarShiftsByYear(year?: number): Observable<IListDataResponse<CalendarShiftModel>>;
18
18
  deleteCalendarShiftById(id: string): Observable<boolean>;
19
19
  /**
20
20
  * Fetches all CalendarShifts associated with a specific Shift ID
@@ -4,12 +4,9 @@ import { IListDataResponse } from '../models/reponses/list-data.response';
4
4
  import { BaseResource } from '../base/base-resource.directive';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class TeamsService extends BaseResource<TeamModel> {
7
- protected readonly Options: {
8
- filter: string;
9
- fields: string;
10
- };
11
7
  protected readonly Entity: string;
12
8
  constructor();
9
+ fetchList(): Observable<IListDataResponse<TeamModel>>;
13
10
  /**
14
11
  * @
15
12
  */
@@ -2,13 +2,12 @@ import 'cross-fetch/polyfill';
2
2
  import { Observable } from 'rxjs';
3
3
  import { BaseResource } from '../base/base-resource.directive';
4
4
  import { UserModel } from '../models/user.model';
5
+ import { IListDataResponse } from '../models/reponses/list-data.response';
5
6
  import * as i0 from "@angular/core";
6
7
  export declare class UsersService extends BaseResource<UserModel> {
7
- protected readonly Options: {
8
- filter: string;
9
- };
10
8
  protected readonly Entity: string;
11
9
  constructor();
10
+ fetchList(): Observable<IListDataResponse<UserModel>>;
12
11
  create(data: Partial<UserModel>): Observable<UserModel>;
13
12
  update(id: string, data: Partial<UserModel>): Observable<UserModel>;
14
13
  delete(id: string): Observable<boolean>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@m481/mp-sdk-ng",
3
- "version": "0.1.2-alpha.16",
3
+ "version": "0.1.2-alpha.18",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^19.2.0",
6
6
  "@angular/core": "^19.2.0"