@managemint-solutions/sdk 0.45.0 → 0.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -419,10 +419,10 @@ a snapshot taken when it was filed, so a holiday added later does not rewrite ap
419
419
  The calendar arithmetic is plain exported functions, shared with the api:
420
420
 
421
421
  ```ts
422
- import { countWorkingDays, leavePeriodFor, todayInJohannesburg } from '@managemint-solutions/sdk';
422
+ import { countWorkingDays, cyclePeriodFor, todayInJohannesburg } from '@managemint-solutions/sdk';
423
423
 
424
424
  const org = await supabase.organizations.get();
425
- const period = leavePeriodFor('2026-09-21', org.leave_calendar_start_month); // { period_start, period_end }
425
+ const { cycle, period } = cyclePeriodFor(type, user.start_date, '2026-09-21', org.leave_calendar_start_month); // cycle_years leave years from the leave-year month; period clipped to the start date
426
426
  const holidays = await supabase.publicHolidays.datesBetween('2026-09-21', '2026-09-25'); // see Public holidays
427
427
  const days = countWorkingDays('2026-09-21', '2026-09-25', holidays); // Mon–Fri less holidays; 0.5 for a half day
428
428
  const today = todayInJohannesburg(); // "today" for the entitlements' as-of lookup
@@ -454,16 +454,17 @@ a caller need not fetch the type. The reporting line is two deep on the user: `m
454
454
  `active` ignored.
455
455
 
456
456
  An entitlement carries `max_carry_over_days` (HR-set, default 0): on the leave-year boundary the
457
- api's nightly rollover creates next period's entitlement for each person and type as
458
- `default_days + min(unused, cap)`. What it runs on:
457
+ api's monthly rollover creates next period's entitlement for each person and type as
458
+ `default_days + min(unused, cap)`. An entitlement's period is computed, never typed: `update`
459
+ takes the days, carry and notes only. What the rollover runs on:
459
460
 
460
461
  ```ts
461
- import { leavePeriodFor, shiftDays } from '@managemint-solutions/sdk';
462
+ import { cyclePeriodFor, shiftDays } from '@managemint-solutions/sdk';
462
463
 
463
464
  const scope = service.forOrganization(organizationId); // system actor: created_by stays null
464
- const ended = leavePeriodFor(shiftDays(today, -1), startMonth); // the period that closed yesterday
465
- const rows = await scope.leaveEntitlements.endingOn(ended.period_end); // every entitlement ending that day, balances included, paged
466
- const active = new Set(await scope.users.activeIds()); // who still gets a new period
465
+ const rows = await scope.leaveEntitlements.endedWithoutSuccessor(today); // ended before today, no later period of that user and type yet; balances included, paged
466
+ const employees = await scope.users.employment(); // who still gets a new period
467
+ const { cycle } = cyclePeriodFor(type, employee.start_date, shiftDays(row.period_end, 1), startMonth); // the next period runs from the day after to the cycle's end
467
468
  await scope.leaveEntitlements.create({ ...next, user_id, leave_type_id, days_entitled, max_carry_over_days, notes });
468
469
  ```
469
470
 
package/dist/client.d.ts CHANGED
@@ -10,7 +10,7 @@ import { BillingReadsResource } from './billing';
10
10
  import { InvoicesReadsResource } from './billing/invoices';
11
11
  import { LabelsResource } from './labels';
12
12
  import { LeadsResource } from './leads';
13
- import { LeaveEntitlementsResource, LeaveRequestsResource, LeaveTypesResource } from './leave';
13
+ import { LeaveAdjustmentsResource, LeaveEntitlementsResource, LeaveRequestsResource, LeaveTypesResource } from './leave';
14
14
  import { OrganizationsResource } from './organizations';
15
15
  import { PermissionsResource } from './permissions';
16
16
  import { ProjectsResource } from './projects';
@@ -66,6 +66,7 @@ export declare class SupabaseClient {
66
66
  readonly leaveTypes: LeaveTypesResource;
67
67
  readonly publicHolidays: PublicHolidaysResource;
68
68
  readonly leaveEntitlements: LeaveEntitlementsResource;
69
+ readonly leaveAdjustments: LeaveAdjustmentsResource;
69
70
  readonly leaveRequests: LeaveRequestsResource;
70
71
  readonly timesheets: TimesheetsResource;
71
72
  readonly timesheetEntries: TimesheetEntriesResource;
package/dist/client.js CHANGED
@@ -51,6 +51,7 @@ class SupabaseClient {
51
51
  leaveTypes;
52
52
  publicHolidays;
53
53
  leaveEntitlements;
54
+ leaveAdjustments;
54
55
  leaveRequests;
55
56
  timesheets;
56
57
  timesheetEntries;
@@ -81,6 +82,7 @@ class SupabaseClient {
81
82
  // Global like configs: every signed-in caller reads the same calendar, nobody writes it here.
82
83
  this.publicHolidays = new public_holidays_1.PublicHolidaysResource(this.supabase);
83
84
  this.leaveEntitlements = new leave_1.LeaveEntitlementsResource(this.supabase, this.auth, this.audit);
85
+ this.leaveAdjustments = new leave_1.LeaveAdjustmentsResource(this.supabase, this.auth, this.audit);
84
86
  this.leaveRequests = new leave_1.LeaveRequestsResource(this.supabase, this.auth, this.audit);
85
87
  this.timesheets = new timesheets_1.TimesheetsResource(this.supabase, this.auth, this.audit);
86
88
  this.timesheetEntries = new timesheets_1.TimesheetEntriesResource(this.supabase, this.auth, this.audit);
package/dist/index.d.ts CHANGED
@@ -30,7 +30,7 @@ export { CreateOrganizationDto, UpdateOrganizationDto } from './organizations';
30
30
  export { PermissionsResource } from './permissions';
31
31
  export type { PermissionFlags } from './permissions';
32
32
  export { UpdatePermissionsDto } from './permissions';
33
- export type { UserRow } from './users';
33
+ export type { UserEmploymentRow, UserRow } from './users';
34
34
  export { AddUserDto, GetUsersQueryDto, UpdateMyProfileDto, UpdateUserDto, UserIdDto, } from './users';
35
35
  export type { ClaimOutcome, WebhookEventRow, WebhookEventsTable } from './webhook-events';
36
36
  export { GetSupportingFilesDto, SupportingFileIdDto } from './supporting-files';
@@ -38,10 +38,11 @@ export { ClientIdDto, CreateClientDto, GetClientsDto, UpdateClientDto } from './
38
38
  export { ConvertLeadDto, CreateLeadDto, GetLeadsDto, LeadIdDto, UpdateLeadDto } from './leads';
39
39
  export { CreateProjectDto, GetProjectsDto, ProjectIdDto, UpdateProjectDto } from './projects';
40
40
  export { AddTaskLinkDto, CreateTaskDto, GetTasksDto, TaskIdDto, TaskLinkIdDto, UpdateTaskDto } from './tasks';
41
- export type { CreateLeaveEntitlementInput, CreateLeaveRequestRow, LeaveEntitlementCover, ReviewLeaveRequestRow, UpdateLeaveRequestRow, } from './leave';
42
- export { CreateLeaveEntitlementDto, CreateLeaveRequestDto, CreateLeaveTypeDto, GetLeaveEntitlementsDto, GetLeaveRequestsDto, GetLeaveTypesDto, LeaveEntitlementIdDto, LeaveRequestIdDto, LeaveTypeIdDto, ReviewLeaveRequestDto, UpdateLeaveEntitlementDto, UpdateLeaveRequestDto, UpdateLeaveTypeDto, } from './leave';
41
+ export type { CreateLeaveEntitlementInput, CreateLeaveRequestRow, ReviewLeaveRequestRow, UpdateLeaveRequestRow, } from './leave';
42
+ export type { BalanceEntitlement, BalanceRequest, LeaveCycle } from './leave';
43
+ export { BulkCreateLeaveEntitlementsDto, CreateLeaveAdjustmentDto, CreateLeaveEntitlementDto, CreateLeaveRequestDto, CreateLeaveTypeDto, GetLeaveCalendarDto, GetLeaveEntitlementsDto, GetLeaveRequestsDto, GetLeaveTypesDto, LeaveEntitlementIdDto, LeaveRequestIdDto, LeaveTypeIdDto, ReviewLeaveRequestDto, UpdateLeaveEntitlementDto, UpdateLeaveRequestDto, UpdateLeaveTypeDto, } from './leave';
43
44
  export { GetPublicHolidaysDto } from './public-holidays';
44
- export { addOneYearMinusDay, countWorkingDays, isWithinPeriod, leavePeriodFor, shiftDays, todayInJohannesburg, } from './leave';
45
+ export { addMonths, completedMonths, countWorkingDays, cyclePeriodFor, initialUntil, isWithinPeriod, proRataDays, shiftDays, todayInJohannesburg, } from './leave';
45
46
  export type { CreateTimesheetEntryRow, CreateTimesheetRow, ReviewTimesheetRow, TimesheetCover, TimesheetReportRow, UpdateTimesheetEntryRow, } from './timesheets';
46
47
  export { CreateTimesheetEntryDto, GetTimesheetReportDto, GetTimesheetsDto, ReviewTimesheetDto, TimesheetEntryIdDto, TimesheetIdDto, UpdateTimesheetEntryDto, } from './timesheets';
47
48
  export { minutesBetween, weekStartOf } from './timesheets';
package/dist/index.js CHANGED
@@ -8,8 +8,8 @@
8
8
  // to keep. The row and input types they produce and accept are exported for annotations.
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.AddUserDto = exports.UpdatePermissionsDto = exports.PermissionsResource = exports.UpdateOrganizationDto = exports.CreateOrganizationDto = exports.NotificationIdDto = exports.GetNotificationsDto = exports.NoteIdDto = exports.GetNotesDto = exports.AddNoteDto = exports.UpdateAdditionalDetailsDto = exports.IsAdditionalDetailsValueByType = exports.GetAdditionalDetailsDto = exports.AdditionalDetailsIdDto = exports.AddAdditionalDetailsDto = exports.UpdateLabelDto = exports.LabelIdDto = exports.GetLabelsDto = exports.AddLabelDto = exports.UpdateStatusDto = exports.StatusIdDto = exports.GetStatusesDto = exports.AddStatusDto = exports.CreateSupportRequestDto = exports.UpdateConfigDto = exports.CreateConfigDto = exports.CreateFeatureRequestDto = exports.InvoiceIdDto = exports.GetInvoicesQueryDto = exports.ReinstateSubscriptionDto = exports.PurchaseModuleDto = exports.PaymentIdDto = exports.InitialPaymentDto = exports.GetPaymentsQueryDto = exports.CancelSubscriptionDto = exports.GetAuditTrailDto = exports.IsNullable = exports.EmptyToNull = exports.SupabaseClientError = exports.createSupabaseServiceClient = exports.SupabaseServiceClient = exports.SignInDto = exports.SendPasswordResetEmailDto = exports.ResetPasswordDto = exports.ExchangeTokenHashDto = exports.ExchangeRefreshTokenDto = exports.createSupabaseAuthClient = exports.SupabaseAuthClient = exports.createSupabaseClient = exports.SupabaseClient = void 0;
11
- exports.TimesheetEntryIdDto = exports.ReviewTimesheetDto = exports.GetTimesheetsDto = exports.GetTimesheetReportDto = exports.CreateTimesheetEntryDto = exports.todayInJohannesburg = exports.shiftDays = exports.leavePeriodFor = exports.isWithinPeriod = exports.countWorkingDays = exports.addOneYearMinusDay = exports.GetPublicHolidaysDto = exports.UpdateLeaveTypeDto = exports.UpdateLeaveRequestDto = exports.UpdateLeaveEntitlementDto = exports.ReviewLeaveRequestDto = exports.LeaveTypeIdDto = exports.LeaveRequestIdDto = exports.LeaveEntitlementIdDto = exports.GetLeaveTypesDto = exports.GetLeaveRequestsDto = exports.GetLeaveEntitlementsDto = exports.CreateLeaveTypeDto = exports.CreateLeaveRequestDto = exports.CreateLeaveEntitlementDto = exports.UpdateTaskDto = exports.TaskLinkIdDto = exports.TaskIdDto = exports.GetTasksDto = exports.CreateTaskDto = exports.AddTaskLinkDto = exports.UpdateProjectDto = exports.ProjectIdDto = exports.GetProjectsDto = exports.CreateProjectDto = exports.UpdateLeadDto = exports.LeadIdDto = exports.GetLeadsDto = exports.CreateLeadDto = exports.ConvertLeadDto = exports.UpdateClientDto = exports.GetClientsDto = exports.CreateClientDto = exports.ClientIdDto = exports.SupportingFileIdDto = exports.GetSupportingFilesDto = exports.UserIdDto = exports.UpdateUserDto = exports.UpdateMyProfileDto = exports.GetUsersQueryDto = void 0;
12
- exports.monthlyTotalMinor = exports.weekStartOf = exports.minutesBetween = exports.UpdateTimesheetEntryDto = exports.TimesheetIdDto = void 0;
11
+ exports.shiftDays = exports.proRataDays = exports.isWithinPeriod = exports.initialUntil = exports.cyclePeriodFor = exports.countWorkingDays = exports.completedMonths = exports.addMonths = exports.GetPublicHolidaysDto = exports.UpdateLeaveTypeDto = exports.UpdateLeaveRequestDto = exports.UpdateLeaveEntitlementDto = exports.ReviewLeaveRequestDto = exports.LeaveTypeIdDto = exports.LeaveRequestIdDto = exports.LeaveEntitlementIdDto = exports.GetLeaveTypesDto = exports.GetLeaveRequestsDto = exports.GetLeaveEntitlementsDto = exports.GetLeaveCalendarDto = exports.CreateLeaveTypeDto = exports.CreateLeaveRequestDto = exports.CreateLeaveEntitlementDto = exports.CreateLeaveAdjustmentDto = exports.BulkCreateLeaveEntitlementsDto = exports.UpdateTaskDto = exports.TaskLinkIdDto = exports.TaskIdDto = exports.GetTasksDto = exports.CreateTaskDto = exports.AddTaskLinkDto = exports.UpdateProjectDto = exports.ProjectIdDto = exports.GetProjectsDto = exports.CreateProjectDto = exports.UpdateLeadDto = exports.LeadIdDto = exports.GetLeadsDto = exports.CreateLeadDto = exports.ConvertLeadDto = exports.UpdateClientDto = exports.GetClientsDto = exports.CreateClientDto = exports.ClientIdDto = exports.SupportingFileIdDto = exports.GetSupportingFilesDto = exports.UserIdDto = exports.UpdateUserDto = exports.UpdateMyProfileDto = exports.GetUsersQueryDto = void 0;
12
+ exports.monthlyTotalMinor = exports.weekStartOf = exports.minutesBetween = exports.UpdateTimesheetEntryDto = exports.TimesheetIdDto = exports.TimesheetEntryIdDto = exports.ReviewTimesheetDto = exports.GetTimesheetsDto = exports.GetTimesheetReportDto = exports.CreateTimesheetEntryDto = exports.todayInJohannesburg = void 0;
13
13
  var client_1 = require("./client");
14
14
  Object.defineProperty(exports, "SupabaseClient", { enumerable: true, get: function () { return client_1.SupabaseClient; } });
15
15
  Object.defineProperty(exports, "createSupabaseClient", { enumerable: true, get: function () { return client_1.createSupabaseClient; } });
@@ -114,9 +114,12 @@ Object.defineProperty(exports, "TaskIdDto", { enumerable: true, get: function ()
114
114
  Object.defineProperty(exports, "TaskLinkIdDto", { enumerable: true, get: function () { return tasks_1.TaskLinkIdDto; } });
115
115
  Object.defineProperty(exports, "UpdateTaskDto", { enumerable: true, get: function () { return tasks_1.UpdateTaskDto; } });
116
116
  var leave_1 = require("./leave");
117
+ Object.defineProperty(exports, "BulkCreateLeaveEntitlementsDto", { enumerable: true, get: function () { return leave_1.BulkCreateLeaveEntitlementsDto; } });
118
+ Object.defineProperty(exports, "CreateLeaveAdjustmentDto", { enumerable: true, get: function () { return leave_1.CreateLeaveAdjustmentDto; } });
117
119
  Object.defineProperty(exports, "CreateLeaveEntitlementDto", { enumerable: true, get: function () { return leave_1.CreateLeaveEntitlementDto; } });
118
120
  Object.defineProperty(exports, "CreateLeaveRequestDto", { enumerable: true, get: function () { return leave_1.CreateLeaveRequestDto; } });
119
121
  Object.defineProperty(exports, "CreateLeaveTypeDto", { enumerable: true, get: function () { return leave_1.CreateLeaveTypeDto; } });
122
+ Object.defineProperty(exports, "GetLeaveCalendarDto", { enumerable: true, get: function () { return leave_1.GetLeaveCalendarDto; } });
120
123
  Object.defineProperty(exports, "GetLeaveEntitlementsDto", { enumerable: true, get: function () { return leave_1.GetLeaveEntitlementsDto; } });
121
124
  Object.defineProperty(exports, "GetLeaveRequestsDto", { enumerable: true, get: function () { return leave_1.GetLeaveRequestsDto; } });
122
125
  Object.defineProperty(exports, "GetLeaveTypesDto", { enumerable: true, get: function () { return leave_1.GetLeaveTypesDto; } });
@@ -129,13 +132,16 @@ Object.defineProperty(exports, "UpdateLeaveRequestDto", { enumerable: true, get:
129
132
  Object.defineProperty(exports, "UpdateLeaveTypeDto", { enumerable: true, get: function () { return leave_1.UpdateLeaveTypeDto; } });
130
133
  var public_holidays_1 = require("./public-holidays");
131
134
  Object.defineProperty(exports, "GetPublicHolidaysDto", { enumerable: true, get: function () { return public_holidays_1.GetPublicHolidaysDto; } });
132
- // The calendar arithmetic is plain functions, not a resource, so the api counts days with the
133
- // same code the SDK's tests pin down.
135
+ // The calendar and policy arithmetic is plain functions, not a resource, so the api counts days
136
+ // and balances with the same code the SDK's tests pin down.
134
137
  var leave_2 = require("./leave");
135
- Object.defineProperty(exports, "addOneYearMinusDay", { enumerable: true, get: function () { return leave_2.addOneYearMinusDay; } });
138
+ Object.defineProperty(exports, "addMonths", { enumerable: true, get: function () { return leave_2.addMonths; } });
139
+ Object.defineProperty(exports, "completedMonths", { enumerable: true, get: function () { return leave_2.completedMonths; } });
136
140
  Object.defineProperty(exports, "countWorkingDays", { enumerable: true, get: function () { return leave_2.countWorkingDays; } });
141
+ Object.defineProperty(exports, "cyclePeriodFor", { enumerable: true, get: function () { return leave_2.cyclePeriodFor; } });
142
+ Object.defineProperty(exports, "initialUntil", { enumerable: true, get: function () { return leave_2.initialUntil; } });
137
143
  Object.defineProperty(exports, "isWithinPeriod", { enumerable: true, get: function () { return leave_2.isWithinPeriod; } });
138
- Object.defineProperty(exports, "leavePeriodFor", { enumerable: true, get: function () { return leave_2.leavePeriodFor; } });
144
+ Object.defineProperty(exports, "proRataDays", { enumerable: true, get: function () { return leave_2.proRataDays; } });
139
145
  Object.defineProperty(exports, "shiftDays", { enumerable: true, get: function () { return leave_2.shiftDays; } });
140
146
  Object.defineProperty(exports, "todayInJohannesburg", { enumerable: true, get: function () { return leave_2.todayInJohannesburg; } });
141
147
  var timesheets_1 = require("./timesheets");
@@ -1,26 +1,34 @@
1
- import type { CreateLeaveEntitlementDto as CreateLeaveEntitlementDtoType, CreateLeaveRequestDto as CreateLeaveRequestDtoType, CreateLeaveTypeDto as CreateLeaveTypeDtoType, GetLeaveEntitlementsDto as GetLeaveEntitlementsDtoType, GetLeaveRequestsDto as GetLeaveRequestsDtoType, GetLeaveTypesDto as GetLeaveTypesDtoType, LeaveEntitlementIdDto as LeaveEntitlementIdDtoType, LeaveRequestIdDto as LeaveRequestIdDtoType, LeaveTypeIdDto as LeaveTypeIdDtoType, ReviewLeaveRequestDto as ReviewLeaveRequestDtoType, UpdateLeaveEntitlementDto as UpdateLeaveEntitlementDtoType, UpdateLeaveRequestDto as UpdateLeaveRequestDtoType, UpdateLeaveTypeDto as UpdateLeaveTypeDtoType } from '@managemint-solutions/entities/leave/dto';
2
- import { LeaveRequestStatus, LeaveReviewDecision } from '@managemint-solutions/entities/leave/enum';
1
+ import type { BulkCreateLeaveEntitlementsDto as BulkCreateLeaveEntitlementsDtoType, CreateLeaveAdjustmentDto as CreateLeaveAdjustmentDtoType, CreateLeaveEntitlementDto as CreateLeaveEntitlementDtoType, CreateLeaveRequestDto as CreateLeaveRequestDtoType, CreateLeaveTypeDto as CreateLeaveTypeDtoType, GetLeaveCalendarDto as GetLeaveCalendarDtoType, GetLeaveEntitlementsDto as GetLeaveEntitlementsDtoType, GetLeaveRequestsDto as GetLeaveRequestsDtoType, GetLeaveTypesDto as GetLeaveTypesDtoType, LeaveEntitlementIdDto as LeaveEntitlementIdDtoType, LeaveRequestIdDto as LeaveRequestIdDtoType, LeaveTypeIdDto as LeaveTypeIdDtoType, ReviewLeaveRequestDto as ReviewLeaveRequestDtoType, UpdateLeaveEntitlementDto as UpdateLeaveEntitlementDtoType, UpdateLeaveRequestDto as UpdateLeaveRequestDtoType, UpdateLeaveTypeDto as UpdateLeaveTypeDtoType } from '@managemint-solutions/entities/leave/dto';
2
+ import { LeaveGrantMethod, LeaveRequestStatus, LeaveReviewDecision } from '@managemint-solutions/entities/leave/enum';
3
3
  export declare class LeaveTypeIdDto implements LeaveTypeIdDtoType {
4
4
  readonly leaveTypeId: string;
5
5
  }
6
6
  export declare class GetLeaveTypesDto implements GetLeaveTypesDtoType {
7
7
  readonly active?: boolean | null;
8
8
  }
9
- export declare class CreateLeaveTypeDto implements CreateLeaveTypeDtoType {
10
- readonly name: string;
11
- readonly description: string | null;
9
+ /** The policy half of a leave type, shared by create and update. */
10
+ declare class LeaveTypePolicy {
12
11
  readonly default_days: number;
13
12
  readonly is_paid: boolean;
14
13
  readonly requires_approval: boolean;
15
- readonly requires_document: boolean;
14
+ readonly document_after_days: number | null;
15
+ readonly cycle_years: number;
16
+ readonly grant_method: LeaveGrantMethod;
17
+ readonly max_carry_over_days: number;
18
+ readonly carry_over_expiry_months: number | null;
19
+ readonly min_service_months: number;
20
+ readonly min_days_per_week: number;
21
+ readonly initial_months: number;
22
+ readonly initial_days_per_month: number | null;
23
+ readonly paid_on_exit: boolean;
16
24
  }
17
- export declare class UpdateLeaveTypeDto implements UpdateLeaveTypeDtoType {
25
+ export declare class CreateLeaveTypeDto extends LeaveTypePolicy implements CreateLeaveTypeDtoType {
26
+ readonly name: string;
27
+ readonly description: string | null;
28
+ }
29
+ export declare class UpdateLeaveTypeDto extends LeaveTypePolicy implements UpdateLeaveTypeDtoType {
18
30
  readonly name: string;
19
31
  readonly description: string | null;
20
- readonly default_days: number;
21
- readonly is_paid: boolean;
22
- readonly requires_approval: boolean;
23
- readonly requires_document: boolean;
24
32
  readonly active: boolean;
25
33
  }
26
34
  export declare class LeaveEntitlementIdDto implements LeaveEntitlementIdDtoType {
@@ -33,21 +41,33 @@ export declare class GetLeaveEntitlementsDto implements GetLeaveEntitlementsDtoT
33
41
  readonly leave_type_id?: string | null;
34
42
  readonly as_of?: string | null;
35
43
  }
36
- export declare class CreateLeaveEntitlementDto implements CreateLeaveEntitlementDtoType {
44
+ /** The opening balance an entitlement brings in, shared by create and update. */
45
+ declare class CarriedDays {
46
+ readonly days_carried: number;
47
+ readonly carried_expires_on: string | null;
48
+ }
49
+ export declare class CreateLeaveEntitlementDto extends CarriedDays implements CreateLeaveEntitlementDtoType {
37
50
  readonly user_id: string;
38
51
  readonly leave_type_id: string;
39
- readonly days_entitled: number;
40
- readonly max_carry_over_days: number;
52
+ readonly days_entitled: number | null;
53
+ readonly max_carry_over_days: number | null;
41
54
  readonly period_start: string | null;
42
55
  readonly period_end: string | null;
43
56
  readonly notes: string | null;
44
57
  }
45
- export declare class UpdateLeaveEntitlementDto implements UpdateLeaveEntitlementDtoType {
58
+ export declare class UpdateLeaveEntitlementDto extends CarriedDays implements UpdateLeaveEntitlementDtoType {
46
59
  readonly days_entitled: number;
47
60
  readonly max_carry_over_days: number;
48
- readonly period_end: string;
49
61
  readonly notes: string | null;
50
62
  }
63
+ export declare class BulkCreateLeaveEntitlementsDto implements BulkCreateLeaveEntitlementsDtoType {
64
+ readonly leave_type_id: string;
65
+ readonly user_ids: string[] | null;
66
+ }
67
+ export declare class CreateLeaveAdjustmentDto implements CreateLeaveAdjustmentDtoType {
68
+ readonly days: number;
69
+ readonly reason: string;
70
+ }
51
71
  export declare class LeaveRequestIdDto implements LeaveRequestIdDtoType {
52
72
  readonly leaveRequestId: string;
53
73
  }
@@ -61,6 +81,7 @@ export declare class GetLeaveRequestsDto implements GetLeaveRequestsDtoType {
61
81
  readonly start_date_before?: string | null;
62
82
  }
63
83
  export declare class CreateLeaveRequestDto implements CreateLeaveRequestDtoType {
84
+ readonly user_id: string | null;
64
85
  readonly leave_type_id: string;
65
86
  readonly start_date: string;
66
87
  readonly end_date: string;
@@ -78,3 +99,10 @@ export declare class ReviewLeaveRequestDto implements ReviewLeaveRequestDtoType
78
99
  readonly status: LeaveReviewDecision;
79
100
  readonly review_note: string | null;
80
101
  }
102
+ export declare class GetLeaveCalendarDto implements GetLeaveCalendarDtoType {
103
+ readonly date_from: string;
104
+ readonly date_to: string;
105
+ readonly user_id?: string | null;
106
+ readonly leave_type_id?: string | null;
107
+ }
108
+ export {};
package/dist/leave/dto.js CHANGED
@@ -9,7 +9,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.ReviewLeaveRequestDto = exports.UpdateLeaveRequestDto = exports.CreateLeaveRequestDto = exports.GetLeaveRequestsDto = exports.LeaveRequestIdDto = exports.UpdateLeaveEntitlementDto = exports.CreateLeaveEntitlementDto = exports.GetLeaveEntitlementsDto = exports.LeaveEntitlementIdDto = exports.UpdateLeaveTypeDto = exports.CreateLeaveTypeDto = exports.GetLeaveTypesDto = exports.LeaveTypeIdDto = void 0;
12
+ exports.GetLeaveCalendarDto = exports.ReviewLeaveRequestDto = exports.UpdateLeaveRequestDto = exports.CreateLeaveRequestDto = exports.GetLeaveRequestsDto = exports.LeaveRequestIdDto = exports.CreateLeaveAdjustmentDto = exports.BulkCreateLeaveEntitlementsDto = exports.UpdateLeaveEntitlementDto = exports.CreateLeaveEntitlementDto = exports.GetLeaveEntitlementsDto = exports.LeaveEntitlementIdDto = exports.UpdateLeaveTypeDto = exports.CreateLeaveTypeDto = exports.GetLeaveTypesDto = exports.LeaveTypeIdDto = void 0;
13
13
  const class_validator_1 = require("class-validator");
14
14
  const class_transformer_1 = require("class-transformer");
15
15
  const enum_1 = require("@managemint-solutions/entities/leave/enum");
@@ -46,13 +46,98 @@ __decorate([
46
46
  (0, class_validator_1.IsBoolean)({ message: 'Active must be true or false' }),
47
47
  __metadata("design:type", Object)
48
48
  ], GetLeaveTypesDto.prototype, "active", void 0);
49
- class CreateLeaveTypeDto {
50
- name;
51
- description;
49
+ /** The policy half of a leave type, shared by create and update. */
50
+ class LeaveTypePolicy {
52
51
  default_days;
53
52
  is_paid;
54
53
  requires_approval;
55
- requires_document;
54
+ document_after_days;
55
+ cycle_years;
56
+ grant_method;
57
+ max_carry_over_days;
58
+ carry_over_expiry_months;
59
+ min_service_months;
60
+ min_days_per_week;
61
+ initial_months;
62
+ initial_days_per_month;
63
+ paid_on_exit;
64
+ }
65
+ __decorate([
66
+ (0, class_validator_1.IsNumber)({ maxDecimalPlaces: 1 }, { message: 'Default days must be a number with at most one decimal' }),
67
+ (0, class_validator_1.Min)(0, { message: 'Default days cannot be negative' }),
68
+ (0, class_validator_1.Max)(999.9, { message: 'Default days cannot exceed 999.9' }),
69
+ __metadata("design:type", Number)
70
+ ], LeaveTypePolicy.prototype, "default_days", void 0);
71
+ __decorate([
72
+ (0, class_validator_1.IsBoolean)({ message: 'Is paid must be true or false' }),
73
+ __metadata("design:type", Boolean)
74
+ ], LeaveTypePolicy.prototype, "is_paid", void 0);
75
+ __decorate([
76
+ (0, class_validator_1.IsBoolean)({ message: 'Requires approval must be true or false' }),
77
+ __metadata("design:type", Boolean)
78
+ ], LeaveTypePolicy.prototype, "requires_approval", void 0);
79
+ __decorate([
80
+ (0, validators_1.IsNullable)(),
81
+ (0, class_validator_1.IsNumber)({ maxDecimalPlaces: 1 }, { message: 'Document after days must be a number with at most one decimal' }),
82
+ (0, class_validator_1.Min)(0, { message: 'Document after days cannot be negative' }),
83
+ (0, class_validator_1.Max)(999.9, { message: 'Document after days cannot exceed 999.9' }),
84
+ __metadata("design:type", Object)
85
+ ], LeaveTypePolicy.prototype, "document_after_days", void 0);
86
+ __decorate([
87
+ (0, class_validator_1.IsInt)({ message: 'Cycle years must be a whole number' }),
88
+ (0, class_validator_1.Min)(1, { message: 'Cycle years must be at least 1' }),
89
+ (0, class_validator_1.Max)(5, { message: 'Cycle years cannot exceed 5' }),
90
+ __metadata("design:type", Number)
91
+ ], LeaveTypePolicy.prototype, "cycle_years", void 0);
92
+ __decorate([
93
+ (0, class_validator_1.IsEnum)(enum_1.LeaveGrantMethod, { message: 'Grant method must be upfront or monthly' }),
94
+ __metadata("design:type", String)
95
+ ], LeaveTypePolicy.prototype, "grant_method", void 0);
96
+ __decorate([
97
+ (0, class_validator_1.IsNumber)({ maxDecimalPlaces: 1 }, { message: 'Max carry over days must be a number with at most one decimal' }),
98
+ (0, class_validator_1.Min)(0, { message: 'Max carry over days cannot be negative' }),
99
+ (0, class_validator_1.Max)(999.9, { message: 'Max carry over days cannot exceed 999.9' }),
100
+ __metadata("design:type", Number)
101
+ ], LeaveTypePolicy.prototype, "max_carry_over_days", void 0);
102
+ __decorate([
103
+ (0, validators_1.IsNullable)(),
104
+ (0, class_validator_1.IsInt)({ message: 'Carry over expiry months must be a whole number' }),
105
+ (0, class_validator_1.Min)(1, { message: 'Carry over expiry months must be at least 1' }),
106
+ (0, class_validator_1.Max)(60, { message: 'Carry over expiry months cannot exceed 60' }),
107
+ __metadata("design:type", Object)
108
+ ], LeaveTypePolicy.prototype, "carry_over_expiry_months", void 0);
109
+ __decorate([
110
+ (0, class_validator_1.IsInt)({ message: 'Minimum service months must be a whole number' }),
111
+ (0, class_validator_1.Min)(0, { message: 'Minimum service months cannot be negative' }),
112
+ (0, class_validator_1.Max)(120, { message: 'Minimum service months cannot exceed 120' }),
113
+ __metadata("design:type", Number)
114
+ ], LeaveTypePolicy.prototype, "min_service_months", void 0);
115
+ __decorate([
116
+ (0, class_validator_1.IsInt)({ message: 'Minimum days per week must be a whole number' }),
117
+ (0, class_validator_1.Min)(0, { message: 'Minimum days per week cannot be negative' }),
118
+ (0, class_validator_1.Max)(7, { message: 'Minimum days per week cannot exceed 7' }),
119
+ __metadata("design:type", Number)
120
+ ], LeaveTypePolicy.prototype, "min_days_per_week", void 0);
121
+ __decorate([
122
+ (0, class_validator_1.IsInt)({ message: 'Initial months must be a whole number' }),
123
+ (0, class_validator_1.Min)(0, { message: 'Initial months cannot be negative' }),
124
+ (0, class_validator_1.Max)(60, { message: 'Initial months cannot exceed 60' }),
125
+ __metadata("design:type", Number)
126
+ ], LeaveTypePolicy.prototype, "initial_months", void 0);
127
+ __decorate([
128
+ (0, validators_1.IsNullable)(),
129
+ (0, class_validator_1.IsNumber)({ maxDecimalPlaces: 2 }, { message: 'Initial days per month must be a number with at most two decimals' }),
130
+ (0, class_validator_1.Min)(0, { message: 'Initial days per month cannot be negative' }),
131
+ (0, class_validator_1.Max)(99.99, { message: 'Initial days per month cannot exceed 99.99' }),
132
+ __metadata("design:type", Object)
133
+ ], LeaveTypePolicy.prototype, "initial_days_per_month", void 0);
134
+ __decorate([
135
+ (0, class_validator_1.IsBoolean)({ message: 'Paid on exit must be true or false' }),
136
+ __metadata("design:type", Boolean)
137
+ ], LeaveTypePolicy.prototype, "paid_on_exit", void 0);
138
+ class CreateLeaveTypeDto extends LeaveTypePolicy {
139
+ name;
140
+ description;
56
141
  }
57
142
  exports.CreateLeaveTypeDto = CreateLeaveTypeDto;
58
143
  __decorate([
@@ -69,31 +154,9 @@ __decorate([
69
154
  (0, class_validator_1.MaxLength)(2000, { message: 'Description cannot exceed 2000 characters' }),
70
155
  __metadata("design:type", Object)
71
156
  ], CreateLeaveTypeDto.prototype, "description", void 0);
72
- __decorate([
73
- (0, class_validator_1.IsNumber)({ maxDecimalPlaces: 1 }, { message: 'Default days must be a number with at most one decimal' }),
74
- (0, class_validator_1.Min)(0, { message: 'Default days cannot be negative' }),
75
- (0, class_validator_1.Max)(999.9, { message: 'Default days cannot exceed 999.9' }),
76
- __metadata("design:type", Number)
77
- ], CreateLeaveTypeDto.prototype, "default_days", void 0);
78
- __decorate([
79
- (0, class_validator_1.IsBoolean)({ message: 'Is paid must be true or false' }),
80
- __metadata("design:type", Boolean)
81
- ], CreateLeaveTypeDto.prototype, "is_paid", void 0);
82
- __decorate([
83
- (0, class_validator_1.IsBoolean)({ message: 'Requires approval must be true or false' }),
84
- __metadata("design:type", Boolean)
85
- ], CreateLeaveTypeDto.prototype, "requires_approval", void 0);
86
- __decorate([
87
- (0, class_validator_1.IsBoolean)({ message: 'Requires document must be true or false' }),
88
- __metadata("design:type", Boolean)
89
- ], CreateLeaveTypeDto.prototype, "requires_document", void 0);
90
- class UpdateLeaveTypeDto {
157
+ class UpdateLeaveTypeDto extends LeaveTypePolicy {
91
158
  name;
92
159
  description;
93
- default_days;
94
- is_paid;
95
- requires_approval;
96
- requires_document;
97
160
  active;
98
161
  }
99
162
  exports.UpdateLeaveTypeDto = UpdateLeaveTypeDto;
@@ -111,24 +174,6 @@ __decorate([
111
174
  (0, class_validator_1.MaxLength)(2000, { message: 'Description cannot exceed 2000 characters' }),
112
175
  __metadata("design:type", Object)
113
176
  ], UpdateLeaveTypeDto.prototype, "description", void 0);
114
- __decorate([
115
- (0, class_validator_1.IsNumber)({ maxDecimalPlaces: 1 }, { message: 'Default days must be a number with at most one decimal' }),
116
- (0, class_validator_1.Min)(0, { message: 'Default days cannot be negative' }),
117
- (0, class_validator_1.Max)(999.9, { message: 'Default days cannot exceed 999.9' }),
118
- __metadata("design:type", Number)
119
- ], UpdateLeaveTypeDto.prototype, "default_days", void 0);
120
- __decorate([
121
- (0, class_validator_1.IsBoolean)({ message: 'Is paid must be true or false' }),
122
- __metadata("design:type", Boolean)
123
- ], UpdateLeaveTypeDto.prototype, "is_paid", void 0);
124
- __decorate([
125
- (0, class_validator_1.IsBoolean)({ message: 'Requires approval must be true or false' }),
126
- __metadata("design:type", Boolean)
127
- ], UpdateLeaveTypeDto.prototype, "requires_approval", void 0);
128
- __decorate([
129
- (0, class_validator_1.IsBoolean)({ message: 'Requires document must be true or false' }),
130
- __metadata("design:type", Boolean)
131
- ], UpdateLeaveTypeDto.prototype, "requires_document", void 0);
132
177
  __decorate([
133
178
  (0, class_validator_1.IsBoolean)({ message: 'Active must be true or false' }),
134
179
  __metadata("design:type", Boolean)
@@ -183,7 +228,23 @@ __decorate([
183
228
  (0, validators_1.IsCalendarDate)({ message: 'As of must be a calendar date (YYYY-MM-DD)' }),
184
229
  __metadata("design:type", Object)
185
230
  ], GetLeaveEntitlementsDto.prototype, "as_of", void 0);
186
- class CreateLeaveEntitlementDto {
231
+ /** The opening balance an entitlement brings in, shared by create and update. */
232
+ class CarriedDays {
233
+ days_carried;
234
+ carried_expires_on;
235
+ }
236
+ __decorate([
237
+ (0, class_validator_1.IsNumber)({ maxDecimalPlaces: 1 }, { message: 'Days carried must be a number with at most one decimal' }),
238
+ (0, class_validator_1.Min)(0, { message: 'Days carried cannot be negative' }),
239
+ (0, class_validator_1.Max)(999.9, { message: 'Days carried cannot exceed 999.9' }),
240
+ __metadata("design:type", Number)
241
+ ], CarriedDays.prototype, "days_carried", void 0);
242
+ __decorate([
243
+ (0, validators_1.IsNullable)(),
244
+ (0, validators_1.IsCalendarDate)({ message: 'Carried expires on must be a calendar date (YYYY-MM-DD)' }),
245
+ __metadata("design:type", Object)
246
+ ], CarriedDays.prototype, "carried_expires_on", void 0);
247
+ class CreateLeaveEntitlementDto extends CarriedDays {
187
248
  user_id;
188
249
  leave_type_id;
189
250
  days_entitled;
@@ -202,16 +263,18 @@ __decorate([
202
263
  __metadata("design:type", String)
203
264
  ], CreateLeaveEntitlementDto.prototype, "leave_type_id", void 0);
204
265
  __decorate([
266
+ (0, validators_1.IsNullable)(),
205
267
  (0, class_validator_1.IsNumber)({ maxDecimalPlaces: 1 }, { message: 'Days entitled must be a number with at most one decimal' }),
206
268
  (0, class_validator_1.Min)(0, { message: 'Days entitled cannot be negative' }),
207
269
  (0, class_validator_1.Max)(999.9, { message: 'Days entitled cannot exceed 999.9' }),
208
- __metadata("design:type", Number)
270
+ __metadata("design:type", Object)
209
271
  ], CreateLeaveEntitlementDto.prototype, "days_entitled", void 0);
210
272
  __decorate([
273
+ (0, validators_1.IsNullable)(),
211
274
  (0, class_validator_1.IsNumber)({ maxDecimalPlaces: 1 }, { message: 'Max carry over days must be a number with at most one decimal' }),
212
275
  (0, class_validator_1.Min)(0, { message: 'Max carry over days cannot be negative' }),
213
276
  (0, class_validator_1.Max)(999.9, { message: 'Max carry over days cannot exceed 999.9' }),
214
- __metadata("design:type", Number)
277
+ __metadata("design:type", Object)
215
278
  ], CreateLeaveEntitlementDto.prototype, "max_carry_over_days", void 0);
216
279
  __decorate([
217
280
  (0, validators_1.IsNullable)(),
@@ -230,10 +293,9 @@ __decorate([
230
293
  (0, class_validator_1.MaxLength)(2000, { message: 'Notes cannot exceed 2000 characters' }),
231
294
  __metadata("design:type", Object)
232
295
  ], CreateLeaveEntitlementDto.prototype, "notes", void 0);
233
- class UpdateLeaveEntitlementDto {
296
+ class UpdateLeaveEntitlementDto extends CarriedDays {
234
297
  days_entitled;
235
298
  max_carry_over_days;
236
- period_end;
237
299
  notes;
238
300
  }
239
301
  exports.UpdateLeaveEntitlementDto = UpdateLeaveEntitlementDto;
@@ -249,10 +311,6 @@ __decorate([
249
311
  (0, class_validator_1.Max)(999.9, { message: 'Max carry over days cannot exceed 999.9' }),
250
312
  __metadata("design:type", Number)
251
313
  ], UpdateLeaveEntitlementDto.prototype, "max_carry_over_days", void 0);
252
- __decorate([
253
- (0, validators_1.IsCalendarDate)({ message: 'Period end must be a calendar date (YYYY-MM-DD)' }),
254
- __metadata("design:type", String)
255
- ], UpdateLeaveEntitlementDto.prototype, "period_end", void 0);
256
314
  __decorate([
257
315
  (0, validators_1.EmptyToNull)(),
258
316
  (0, validators_1.IsNullable)(),
@@ -260,6 +318,42 @@ __decorate([
260
318
  (0, class_validator_1.MaxLength)(2000, { message: 'Notes cannot exceed 2000 characters' }),
261
319
  __metadata("design:type", Object)
262
320
  ], UpdateLeaveEntitlementDto.prototype, "notes", void 0);
321
+ class BulkCreateLeaveEntitlementsDto {
322
+ leave_type_id;
323
+ user_ids;
324
+ }
325
+ exports.BulkCreateLeaveEntitlementsDto = BulkCreateLeaveEntitlementsDto;
326
+ __decorate([
327
+ (0, class_validator_1.IsUUID)('7', { message: 'Invalid leave type ID format' }),
328
+ __metadata("design:type", String)
329
+ ], BulkCreateLeaveEntitlementsDto.prototype, "leave_type_id", void 0);
330
+ __decorate([
331
+ (0, validators_1.IsNullable)(),
332
+ (0, class_validator_1.IsArray)({ message: 'User IDs must be a list' }),
333
+ (0, class_validator_1.ArrayMinSize)(1, { message: 'Choose at least one person, or send null for everyone' }),
334
+ (0, class_validator_1.ArrayMaxSize)(500, { message: 'At most 500 people at once' }),
335
+ (0, class_validator_1.IsUUID)('4', { each: true, message: 'Invalid user ID format' }),
336
+ __metadata("design:type", Object)
337
+ ], BulkCreateLeaveEntitlementsDto.prototype, "user_ids", void 0);
338
+ class CreateLeaveAdjustmentDto {
339
+ days;
340
+ reason;
341
+ }
342
+ exports.CreateLeaveAdjustmentDto = CreateLeaveAdjustmentDto;
343
+ __decorate([
344
+ (0, class_validator_1.IsNumber)({ maxDecimalPlaces: 1 }, { message: 'Days must be a number with at most one decimal' }),
345
+ (0, class_validator_1.NotEquals)(0, { message: 'An adjustment cannot be zero days' }),
346
+ (0, class_validator_1.Min)(-999.9, { message: 'Days cannot be below -999.9' }),
347
+ (0, class_validator_1.Max)(999.9, { message: 'Days cannot exceed 999.9' }),
348
+ __metadata("design:type", Number)
349
+ ], CreateLeaveAdjustmentDto.prototype, "days", void 0);
350
+ __decorate([
351
+ Trim(),
352
+ (0, class_validator_1.IsString)({ message: 'Invalid reason' }),
353
+ (0, class_validator_1.MinLength)(1, { message: 'Give a reason for the adjustment' }),
354
+ (0, class_validator_1.MaxLength)(500, { message: 'Reason cannot exceed 500 characters' }),
355
+ __metadata("design:type", String)
356
+ ], CreateLeaveAdjustmentDto.prototype, "reason", void 0);
263
357
  // ---- Leave requests ----
264
358
  class LeaveRequestIdDto {
265
359
  leaveRequestId;
@@ -324,9 +418,8 @@ __decorate([
324
418
  (0, validators_1.IsCalendarDate)({ message: 'Start date before must be a calendar date (YYYY-MM-DD)' }),
325
419
  __metadata("design:type", Object)
326
420
  ], GetLeaveRequestsDto.prototype, "start_date_before", void 0);
327
- // No `user_id`: a request is always the caller's own. Filing on someone's behalf is a later
328
- // feature, and leaving the field out is what keeps a forged one from validating.
329
421
  class CreateLeaveRequestDto {
422
+ user_id;
330
423
  leave_type_id;
331
424
  start_date;
332
425
  end_date;
@@ -334,6 +427,11 @@ class CreateLeaveRequestDto {
334
427
  reason;
335
428
  }
336
429
  exports.CreateLeaveRequestDto = CreateLeaveRequestDto;
430
+ __decorate([
431
+ (0, validators_1.IsNullable)(),
432
+ (0, class_validator_1.IsUUID)('4', { message: 'Invalid user ID format' }),
433
+ __metadata("design:type", Object)
434
+ ], CreateLeaveRequestDto.prototype, "user_id", void 0);
337
435
  __decorate([
338
436
  (0, class_validator_1.IsUUID)('7', { message: 'Invalid leave type ID format' }),
339
437
  __metadata("design:type", String)
@@ -404,3 +502,31 @@ __decorate([
404
502
  (0, class_validator_1.MaxLength)(2000, { message: 'Review note cannot exceed 2000 characters' }),
405
503
  __metadata("design:type", Object)
406
504
  ], ReviewLeaveRequestDto.prototype, "review_note", void 0);
505
+ // ---- Calendar ----
506
+ class GetLeaveCalendarDto {
507
+ date_from;
508
+ date_to;
509
+ user_id;
510
+ leave_type_id;
511
+ }
512
+ exports.GetLeaveCalendarDto = GetLeaveCalendarDto;
513
+ __decorate([
514
+ (0, validators_1.IsCalendarDate)({ message: 'Date from must be a calendar date (YYYY-MM-DD)' }),
515
+ __metadata("design:type", String)
516
+ ], GetLeaveCalendarDto.prototype, "date_from", void 0);
517
+ __decorate([
518
+ (0, validators_1.IsCalendarDate)({ message: 'Date to must be a calendar date (YYYY-MM-DD)' }),
519
+ __metadata("design:type", String)
520
+ ], GetLeaveCalendarDto.prototype, "date_to", void 0);
521
+ __decorate([
522
+ (0, class_validator_1.IsOptional)(),
523
+ (0, validators_1.IsNullable)(),
524
+ (0, class_validator_1.IsUUID)('4', { message: 'Invalid user ID format' }),
525
+ __metadata("design:type", Object)
526
+ ], GetLeaveCalendarDto.prototype, "user_id", void 0);
527
+ __decorate([
528
+ (0, class_validator_1.IsOptional)(),
529
+ (0, validators_1.IsNullable)(),
530
+ (0, class_validator_1.IsUUID)('7', { message: 'Invalid leave type ID format' }),
531
+ __metadata("design:type", Object)
532
+ ], GetLeaveCalendarDto.prototype, "leave_type_id", void 0);
@@ -1,5 +1,7 @@
1
1
  export * from './dto';
2
2
  export * from './working-days';
3
+ export * from './leave-policy';
4
+ export { LeaveAdjustmentsResource } from './leave-adjustments';
3
5
  export { LeaveTypesResource } from './leave-types';
4
- export { LeaveEntitlementsResource, type CreateLeaveEntitlementInput, type LeaveEntitlementCover, } from './leave-entitlements';
6
+ export { LeaveEntitlementsResource, type CreateLeaveEntitlementInput, } from './leave-entitlements';
5
7
  export { LeaveRequestsResource, type CreateLeaveRequestRow, type ReviewLeaveRequestRow, type UpdateLeaveRequestRow, } from './leave-requests';
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  // Leave, the first slice of the HR module: one resource per table, the DTOs the api validates
3
- // with, and the calendar arithmetic the api counts days with. The resources hang off
4
- // `SupabaseClient` as `leaveTypes`, `leaveEntitlements` and `leaveRequests`; the holiday
3
+ // with, and the calendar and policy arithmetic the api counts days and balances with. The
4
+ // resources hang off `SupabaseClient` as `leaveTypes`, `leaveEntitlements`, `leaveAdjustments`
5
+ // and `leaveRequests`; the holiday
5
6
  // calendar the day count reads is its own resource, `publicHolidays` (src/public-holidays).
6
7
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
8
  if (k2 === undefined) k2 = k;
@@ -18,9 +19,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
19
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
20
  };
20
21
  Object.defineProperty(exports, "__esModule", { value: true });
21
- exports.LeaveRequestsResource = exports.LeaveEntitlementsResource = exports.LeaveTypesResource = void 0;
22
+ exports.LeaveRequestsResource = exports.LeaveEntitlementsResource = exports.LeaveTypesResource = exports.LeaveAdjustmentsResource = void 0;
22
23
  __exportStar(require("./dto"), exports);
23
24
  __exportStar(require("./working-days"), exports);
25
+ __exportStar(require("./leave-policy"), exports);
26
+ var leave_adjustments_1 = require("./leave-adjustments");
27
+ Object.defineProperty(exports, "LeaveAdjustmentsResource", { enumerable: true, get: function () { return leave_adjustments_1.LeaveAdjustmentsResource; } });
24
28
  var leave_types_1 = require("./leave-types");
25
29
  Object.defineProperty(exports, "LeaveTypesResource", { enumerable: true, get: function () { return leave_types_1.LeaveTypesResource; } });
26
30
  var leave_entitlements_1 = require("./leave-entitlements");