@nomalism-com/types 0.45.55 → 0.45.57
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/dist/index.cjs
CHANGED
|
@@ -227,6 +227,8 @@ __export(main_exports, {
|
|
|
227
227
|
TicketsLanguage: () => interfaces_exports38,
|
|
228
228
|
TicketsLanguageRoutes: () => route_schema_exports73,
|
|
229
229
|
TicketsRoutes: () => route_schema_exports71,
|
|
230
|
+
TimeSheet: () => interfaces_exports61,
|
|
231
|
+
TimeSheetRoutes: () => route_schema_exports118,
|
|
230
232
|
Transformado: () => interfaces_exports45,
|
|
231
233
|
TransformadoRoutes: () => route_schema_exports82,
|
|
232
234
|
TypeOfLocation: () => interface_exports29,
|
|
@@ -5800,6 +5802,74 @@ var printLocationsQuery = joi118.object({
|
|
|
5800
5802
|
locations_ids: joi118.string().required()
|
|
5801
5803
|
}).messages(messages);
|
|
5802
5804
|
|
|
5805
|
+
// src/modules/user/timeSheet/interfaces.ts
|
|
5806
|
+
var interfaces_exports61 = {};
|
|
5807
|
+
__export(interfaces_exports61, {
|
|
5808
|
+
ClockRoute: () => ClockRoute,
|
|
5809
|
+
DayRoute: () => DayRoute,
|
|
5810
|
+
IClockTypeEnum: () => IClockTypeEnum,
|
|
5811
|
+
IRegistryTypeEnum: () => IRegistryTypeEnum,
|
|
5812
|
+
ITimesheetStateEnum: () => ITimesheetStateEnum,
|
|
5813
|
+
clockTypes: () => clockTypes,
|
|
5814
|
+
registryTypes: () => registryTypes,
|
|
5815
|
+
timesheetStates: () => timesheetStates
|
|
5816
|
+
});
|
|
5817
|
+
var IClockTypeEnum = {
|
|
5818
|
+
ENTRY: "ENTRY",
|
|
5819
|
+
EXIT: "EXIT"
|
|
5820
|
+
};
|
|
5821
|
+
var clockTypes = Object.keys(IClockTypeEnum);
|
|
5822
|
+
var IRegistryTypeEnum = {
|
|
5823
|
+
AUTOMATIC: "AUTOMATIC",
|
|
5824
|
+
MANUAL: "MANUAL"
|
|
5825
|
+
};
|
|
5826
|
+
var registryTypes = Object.keys(IRegistryTypeEnum);
|
|
5827
|
+
var ITimesheetStateEnum = {
|
|
5828
|
+
CONFIRMED: "CONFIRMED",
|
|
5829
|
+
PENDING: "PENDING",
|
|
5830
|
+
ERROR: "ERROR"
|
|
5831
|
+
};
|
|
5832
|
+
var timesheetStates = Object.keys(ITimesheetStateEnum);
|
|
5833
|
+
var DayRoute = "timesheet-days";
|
|
5834
|
+
var ClockRoute = "timesheet-clocks";
|
|
5835
|
+
|
|
5836
|
+
// src/modules/user/timeSheet/route.schema.ts
|
|
5837
|
+
var route_schema_exports118 = {};
|
|
5838
|
+
__export(route_schema_exports118, {
|
|
5839
|
+
createClockBody: () => createClockBody,
|
|
5840
|
+
createDayBody: () => createDayBody,
|
|
5841
|
+
updateClockBody: () => updateClockBody,
|
|
5842
|
+
updateDayBody: () => updateDayBody
|
|
5843
|
+
});
|
|
5844
|
+
import joi119 from "joi";
|
|
5845
|
+
var createDayBodyKeys = {
|
|
5846
|
+
date: joi119.date().required(),
|
|
5847
|
+
persona_id: joi119.string().uuid().required(),
|
|
5848
|
+
total_worked: joi119.number().integer().min(0),
|
|
5849
|
+
balance: joi119.number().integer(),
|
|
5850
|
+
state: joi119.string().valid(...Object.values(ITimesheetStateEnum))
|
|
5851
|
+
};
|
|
5852
|
+
var createDayBody = joi119.object().keys(createDayBodyKeys).messages(messages);
|
|
5853
|
+
var updateDayBodyKeys = {
|
|
5854
|
+
total_worked: joi119.number().integer().min(0),
|
|
5855
|
+
balance: joi119.number().integer(),
|
|
5856
|
+
state: joi119.string().valid(...Object.values(ITimesheetStateEnum))
|
|
5857
|
+
};
|
|
5858
|
+
var updateDayBody = joi119.object().keys(updateDayBodyKeys).messages(messages);
|
|
5859
|
+
var createClockBodyKeys = {
|
|
5860
|
+
timesheet_day_id: joi119.string().uuid().required(),
|
|
5861
|
+
time: joi119.date(),
|
|
5862
|
+
type: joi119.string().valid(...Object.values(IClockTypeEnum)).required(),
|
|
5863
|
+
registry_type: joi119.string().valid(...Object.values(IRegistryTypeEnum)).required()
|
|
5864
|
+
};
|
|
5865
|
+
var createClockBody = joi119.object().keys(createClockBodyKeys).messages(messages);
|
|
5866
|
+
var updateClockBodyKeys = {
|
|
5867
|
+
time: joi119.date(),
|
|
5868
|
+
type: joi119.string().valid(...Object.values(IClockTypeEnum)),
|
|
5869
|
+
registry_type: joi119.string().valid(...Object.values(IRegistryTypeEnum))
|
|
5870
|
+
};
|
|
5871
|
+
var updateClockBody = joi119.object().keys(updateClockBodyKeys).messages(messages);
|
|
5872
|
+
|
|
5803
5873
|
// src/index.ts
|
|
5804
5874
|
var index_default = main_exports;
|
|
5805
5875
|
export {
|
package/dist/index.js
CHANGED
|
@@ -227,6 +227,8 @@ __export(main_exports, {
|
|
|
227
227
|
TicketsLanguage: () => interfaces_exports38,
|
|
228
228
|
TicketsLanguageRoutes: () => route_schema_exports73,
|
|
229
229
|
TicketsRoutes: () => route_schema_exports71,
|
|
230
|
+
TimeSheet: () => interfaces_exports61,
|
|
231
|
+
TimeSheetRoutes: () => route_schema_exports118,
|
|
230
232
|
Transformado: () => interfaces_exports45,
|
|
231
233
|
TransformadoRoutes: () => route_schema_exports82,
|
|
232
234
|
TypeOfLocation: () => interface_exports29,
|
|
@@ -5800,6 +5802,74 @@ var printLocationsQuery = joi118.object({
|
|
|
5800
5802
|
locations_ids: joi118.string().required()
|
|
5801
5803
|
}).messages(messages);
|
|
5802
5804
|
|
|
5805
|
+
// src/modules/user/timeSheet/interfaces.ts
|
|
5806
|
+
var interfaces_exports61 = {};
|
|
5807
|
+
__export(interfaces_exports61, {
|
|
5808
|
+
ClockRoute: () => ClockRoute,
|
|
5809
|
+
DayRoute: () => DayRoute,
|
|
5810
|
+
IClockTypeEnum: () => IClockTypeEnum,
|
|
5811
|
+
IRegistryTypeEnum: () => IRegistryTypeEnum,
|
|
5812
|
+
ITimesheetStateEnum: () => ITimesheetStateEnum,
|
|
5813
|
+
clockTypes: () => clockTypes,
|
|
5814
|
+
registryTypes: () => registryTypes,
|
|
5815
|
+
timesheetStates: () => timesheetStates
|
|
5816
|
+
});
|
|
5817
|
+
var IClockTypeEnum = {
|
|
5818
|
+
ENTRY: "ENTRY",
|
|
5819
|
+
EXIT: "EXIT"
|
|
5820
|
+
};
|
|
5821
|
+
var clockTypes = Object.keys(IClockTypeEnum);
|
|
5822
|
+
var IRegistryTypeEnum = {
|
|
5823
|
+
AUTOMATIC: "AUTOMATIC",
|
|
5824
|
+
MANUAL: "MANUAL"
|
|
5825
|
+
};
|
|
5826
|
+
var registryTypes = Object.keys(IRegistryTypeEnum);
|
|
5827
|
+
var ITimesheetStateEnum = {
|
|
5828
|
+
CONFIRMED: "CONFIRMED",
|
|
5829
|
+
PENDING: "PENDING",
|
|
5830
|
+
ERROR: "ERROR"
|
|
5831
|
+
};
|
|
5832
|
+
var timesheetStates = Object.keys(ITimesheetStateEnum);
|
|
5833
|
+
var DayRoute = "timesheet-days";
|
|
5834
|
+
var ClockRoute = "timesheet-clocks";
|
|
5835
|
+
|
|
5836
|
+
// src/modules/user/timeSheet/route.schema.ts
|
|
5837
|
+
var route_schema_exports118 = {};
|
|
5838
|
+
__export(route_schema_exports118, {
|
|
5839
|
+
createClockBody: () => createClockBody,
|
|
5840
|
+
createDayBody: () => createDayBody,
|
|
5841
|
+
updateClockBody: () => updateClockBody,
|
|
5842
|
+
updateDayBody: () => updateDayBody
|
|
5843
|
+
});
|
|
5844
|
+
import joi119 from "joi";
|
|
5845
|
+
var createDayBodyKeys = {
|
|
5846
|
+
date: joi119.date().required(),
|
|
5847
|
+
persona_id: joi119.string().uuid().required(),
|
|
5848
|
+
total_worked: joi119.number().integer().min(0),
|
|
5849
|
+
balance: joi119.number().integer(),
|
|
5850
|
+
state: joi119.string().valid(...Object.values(ITimesheetStateEnum))
|
|
5851
|
+
};
|
|
5852
|
+
var createDayBody = joi119.object().keys(createDayBodyKeys).messages(messages);
|
|
5853
|
+
var updateDayBodyKeys = {
|
|
5854
|
+
total_worked: joi119.number().integer().min(0),
|
|
5855
|
+
balance: joi119.number().integer(),
|
|
5856
|
+
state: joi119.string().valid(...Object.values(ITimesheetStateEnum))
|
|
5857
|
+
};
|
|
5858
|
+
var updateDayBody = joi119.object().keys(updateDayBodyKeys).messages(messages);
|
|
5859
|
+
var createClockBodyKeys = {
|
|
5860
|
+
timesheet_day_id: joi119.string().uuid().required(),
|
|
5861
|
+
time: joi119.date(),
|
|
5862
|
+
type: joi119.string().valid(...Object.values(IClockTypeEnum)).required(),
|
|
5863
|
+
registry_type: joi119.string().valid(...Object.values(IRegistryTypeEnum)).required()
|
|
5864
|
+
};
|
|
5865
|
+
var createClockBody = joi119.object().keys(createClockBodyKeys).messages(messages);
|
|
5866
|
+
var updateClockBodyKeys = {
|
|
5867
|
+
time: joi119.date(),
|
|
5868
|
+
type: joi119.string().valid(...Object.values(IClockTypeEnum)),
|
|
5869
|
+
registry_type: joi119.string().valid(...Object.values(IRegistryTypeEnum))
|
|
5870
|
+
};
|
|
5871
|
+
var updateClockBody = joi119.object().keys(updateClockBodyKeys).messages(messages);
|
|
5872
|
+
|
|
5803
5873
|
// src/index.ts
|
|
5804
5874
|
var index_default = main_exports;
|
|
5805
5875
|
export {
|
package/dist/main.d.ts
CHANGED
|
@@ -251,4 +251,6 @@ import * as WebSocket from './modules/view/webSocket/interfaces';
|
|
|
251
251
|
import * as ProductLocation from './modules/stock/productLocation/interface';
|
|
252
252
|
import * as MobilePrint from './modules/stock/mobilePrint/interface';
|
|
253
253
|
import * as MobilePrintRoutes from './modules/stock/mobilePrint/route.schema';
|
|
254
|
-
|
|
254
|
+
import * as TimeSheet from './modules/user/timeSheet/interfaces';
|
|
255
|
+
import * as TimeSheetRoutes from './modules/user/timeSheet/route.schema';
|
|
256
|
+
export { shared, viewErrors, stockErrors, userErrors, documentManagementErrors, integrationErrors, ZipCode, ZipCodeRoutes, BankData, BankDataRoutes, Client, ClientRoutes, ClientType, ClientTypeRoutes, Chat, ChatRoutes, Commissioner, CommissionerRoutes, Country, CountryRoutes, DeliveryMethods, DeliveryMethodsRoutes, DocumentHeader, DocumentHeaderRoutes, DocumentHeaderHistory, BillOfLading, BillOfLadingRoutes, ProductionOrder, ProductionOrderRoutes, Proforma, ProformaRoutes, PropostaFornecedor, PropostaFornecedorRoutes, ProviderCreditNoteFromReturn, ProviderCreditNoteFromReturnRoutes, ProviderFinancialCreditNote, ProviderFinancialCreditNoteRoutes, ProviderServiceInvoice, ProviderServiceInvoiceRoutes, DocumentLine, DocumentLineRoutes, DocumentLineAssoc, DocumentSet, DocumentSetRoutes, DocumentType, DocumentTypeRoutes, ExternalDocumentType, ExternalDocumentHeader, ExternalDocumentHeaderRoutes, Favorites, FavoritesRoutes, File, FileRoutes, GoogleSheets, GoogleSheetsRoutes, Language, LanguageRoutes, Location, LocationRoutes, MaturityDates, MaturityDatesRoutes, Multimedia, MultimediaRoutes, OrderManagement, Observation, ObservationRoutes, ObservationType, ObservationTypeRoutes, Password, PasswordRoutes, Payment, PaymentRoutes, PaymentMethods, PaymentMethodsRoutes, ProductImage, ProductImageRoutes, Promotion, PromotionRoutes, PromotionAssoc, PromotionAssocRoutes, Providers, ProvidersRoutes, ProviderType, ProviderTypeRoutes, PurchaseConditions, PurchaseConditionsRoutes, ReasonForExemption, ReasonForExemptionRoutes, RefreshToken, RefreshTokenRoutes, SegmentsArea, SegmentsAreaRoutes, Sessions, SessionsRoutes, Shippings, ShippingsRoutes, StoreOperator, StoreOperatorRoutes, SystemModule, SystemModuleRoutes, Swift, SwiftRoutes, TypeOfLocation, TypeOfLocationRoutes, UnitOfMeasure, UnitOfMeasureRoutes, UserPositions, UserPositionsRoutes, Users, UsersRoutes, UserTokens, UserTokensRoutes, VatValidation, VatValidationRoutes, VatTax, VatTaxRoutes, VatTaxZone, VatTaxZoneRoutes, Vehicles, VehiclesRoutes, Workflow, WorkflowRoutes, StockMovement, StockMovementRoutes, Tenant, TenantRoutes, PreSale, PreSaleRoutes, PreSaleProduct, PreSaleProductRoutes, Npc, NpcRoutes, Printer, PrinterRoutes, SchedulePrintJob, SchedulePrintJobRoutes, QueryList, QueryListRoutes, QueryParameter, QueryParameterRoutes, ReturnReason, ReturnReasonRoutes, PropostaSheets, PropostaSheetsRoutes, Schedule, ScheduleRoutes, GoogleFilePermission, GoogleFilePermissionRoutes, Settings, SettingsRoutes, Tickets, TicketsRoutes, Channel, ChannelRoutes, TicketsLanguage, TicketsLanguageRoutes, CLT, CLTRoutes, StartDocumentHeaderLastUpdate, Persona, PersonaRoutes, ProjectInfo, ProjectInfoRoutes, EmailVerification, EmailVerificationRoutes, EmailLog, EmailLogRoutes, Purchase, PurchaseRoutes, Order, OrderRoutes, MaterialEntrance, MaterialEntranceRoutes, Transformado, TransformadoRoutes, Quebra, QuebraRoutes, UpfrontReturn, UpfrontReturnRoutes, SavedEmPicking, SavedEmPickingRoutes, EmailTemplate, EmailTemplateRoutes, EmailTemplateAttachment, EmailTemplateAttachmentRoutes, Inventario, InventarioRoutes, ReturnToProvider, ReturnToProviderRoutes, Prison, PrisonRoutes, DocumentLineNote, DocumentLineNoteRoutes, SavedProviderProposal, SavedProviderProposalRoutes, ProductGoogleSheets, ProductGoogleSheetsRoutes, Task, TaskRoutes, TaskMessage, TaskMessageRoutes, RecurrentTasks, TaskRead, TaskReadRoutes, Theme, ThemeRoutes, Dashboard, DashboardRoutes, ChatRapidMessage, ChatRapidMessageRoutes, SideMenu, SideMenuRoutes, SidemenuHighlight, SidemenuHighlightRoutes, AdminPanel, ErrorLog, ErrorLogRoutes, DocumentLineRm, DocumentLineRmRoutes, DocumentLineMt, DocumentLineMtRoutes, ChatSubscriber, ChatSubscriberRoutes, Tag, TagRoutes, Gmails, NPF, NPFRoutes, NRCL, NRCLRoutes, CurrentAccount, CurrentAccountRoutes, PaymentBatch, PaymentBatchRoutes, Portal, PortalRoutes, GoogleSheetPool, AccountCode, AccountCodeRoutes, LLM, LLMRoutes, PatchNotes, ConferirEncomenda, DocumentHeaderSurvey, DocumentHeaderSurveyRoutes, DocumentHeaderSubscriber, DocumentHeaderSubscriberRoutes, GoogleCalendar, GoogleCalendarRoutes, WebSocket, ProductLocation, MobilePrint, MobilePrintRoutes, TimeSheet, TimeSheetRoutes, };
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import * as IShared from '../../../shared/interface';
|
|
2
|
+
import { TimeSheetDay, TimeSheetClock } from '../../../shared/entities/user';
|
|
3
|
+
export declare const IClockTypeEnum: {
|
|
4
|
+
ENTRY: 'ENTRY';
|
|
5
|
+
EXIT: 'EXIT';
|
|
6
|
+
};
|
|
7
|
+
export type IClockType = (typeof IClockTypeEnum)[keyof typeof IClockTypeEnum];
|
|
8
|
+
export declare const clockTypes: string[];
|
|
9
|
+
export declare const IRegistryTypeEnum: {
|
|
10
|
+
AUTOMATIC: 'AUTOMATIC';
|
|
11
|
+
MANUAL: 'MANUAL';
|
|
12
|
+
};
|
|
13
|
+
export type IRegistryType = (typeof IRegistryTypeEnum)[keyof typeof IRegistryTypeEnum];
|
|
14
|
+
export declare const registryTypes: string[];
|
|
15
|
+
export declare const ITimesheetStateEnum: {
|
|
16
|
+
CONFIRMED: 'CONFIRMED';
|
|
17
|
+
PENDING: 'PENDING';
|
|
18
|
+
ERROR: 'ERROR';
|
|
19
|
+
};
|
|
20
|
+
export type ITimesheetState = (typeof ITimesheetStateEnum)[keyof typeof ITimesheetStateEnum];
|
|
21
|
+
export declare const timesheetStates: string[];
|
|
22
|
+
export type DayEntity = TimeSheetDay;
|
|
23
|
+
export type ClockEntity = TimeSheetClock;
|
|
24
|
+
export declare const DayRoute = "timesheet-days";
|
|
25
|
+
export declare const ClockRoute = "timesheet-clocks";
|
|
26
|
+
export interface IDayFilterRequest {
|
|
27
|
+
persona_id?: string;
|
|
28
|
+
start_date?: string;
|
|
29
|
+
end_date?: string;
|
|
30
|
+
state?: ITimesheetState;
|
|
31
|
+
}
|
|
32
|
+
export interface IDayCreateRequest {
|
|
33
|
+
date: Date;
|
|
34
|
+
persona_id: string;
|
|
35
|
+
total_worked?: number;
|
|
36
|
+
balance?: number;
|
|
37
|
+
state?: ITimesheetState;
|
|
38
|
+
}
|
|
39
|
+
export interface IDayUpdateRequest {
|
|
40
|
+
total_worked?: number;
|
|
41
|
+
balance?: number;
|
|
42
|
+
state?: ITimesheetState;
|
|
43
|
+
}
|
|
44
|
+
export interface IClockCreateRequest {
|
|
45
|
+
timesheet_day_id: string;
|
|
46
|
+
time?: Date;
|
|
47
|
+
type: IClockType;
|
|
48
|
+
registry_type: IRegistryType;
|
|
49
|
+
}
|
|
50
|
+
export interface IClockUpdateRequest {
|
|
51
|
+
time?: Date;
|
|
52
|
+
type?: IClockType;
|
|
53
|
+
registry_type?: IRegistryType;
|
|
54
|
+
}
|
|
55
|
+
export interface IDayRepository {
|
|
56
|
+
find(filters?: IDayFilterRequest): Promise<DayEntity[]>;
|
|
57
|
+
findById(id: string): Promise<DayEntity | null>;
|
|
58
|
+
create(data: IDayCreateRequest): Promise<DayEntity>;
|
|
59
|
+
update(selector: IShared.IFindByIdRequest, data: IDayUpdateRequest): Promise<DayEntity | null>;
|
|
60
|
+
deleteOne(selector: IShared.IFindByIdRequest): Promise<DayEntity | null>;
|
|
61
|
+
}
|
|
62
|
+
export interface IClockRepository {
|
|
63
|
+
find(filters?: {
|
|
64
|
+
timesheet_day_id: string;
|
|
65
|
+
}): Promise<ClockEntity[]>;
|
|
66
|
+
findById(id: string): Promise<ClockEntity | null>;
|
|
67
|
+
create(data: IClockCreateRequest): Promise<ClockEntity>;
|
|
68
|
+
update(selector: IShared.IFindByIdRequest, data: IClockUpdateRequest): Promise<ClockEntity | null>;
|
|
69
|
+
deleteOne(selector: IShared.IFindByIdRequest): Promise<ClockEntity | null>;
|
|
70
|
+
}
|
|
71
|
+
export type IDayController = IShared.IEntityWithUserToken<IDayRepository>;
|
|
72
|
+
export type IDayApi = Omit<IDayRepository, 'findById'>;
|
|
73
|
+
export type IClockController = IShared.IEntityWithUserToken<IClockRepository>;
|
|
74
|
+
export type IClockApi = Omit<IClockRepository, 'findById'>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IPaymentMethodsSaftCodeEnum } from '../../modules/user/paymentMethods/interfaces';
|
|
2
2
|
import type { SystemModuleEnum } from '../../modules/user/systemModule/interface';
|
|
3
|
+
import { IClockType, IRegistryType, ITimesheetState } from '../../modules/user/timeSheet/interfaces';
|
|
3
4
|
/**
|
|
4
5
|
* Model Users
|
|
5
6
|
*
|
|
@@ -520,3 +521,29 @@ export type SystemModule = {
|
|
|
520
521
|
created_by: string;
|
|
521
522
|
updated_by: string;
|
|
522
523
|
};
|
|
524
|
+
/**
|
|
525
|
+
* Model TimeSheet
|
|
526
|
+
*
|
|
527
|
+
*/
|
|
528
|
+
export interface TimeSheetDay {
|
|
529
|
+
id: string;
|
|
530
|
+
date: Date;
|
|
531
|
+
total_worked: number;
|
|
532
|
+
balance: number;
|
|
533
|
+
state: ITimesheetState;
|
|
534
|
+
created_at: Date;
|
|
535
|
+
updated_at: Date;
|
|
536
|
+
created_by: string;
|
|
537
|
+
updated_by: string;
|
|
538
|
+
}
|
|
539
|
+
export interface TimeSheetClock {
|
|
540
|
+
id: string;
|
|
541
|
+
timesheet_day_id: string;
|
|
542
|
+
time: Date;
|
|
543
|
+
type: IClockType;
|
|
544
|
+
registry_type: IRegistryType;
|
|
545
|
+
created_at: Date;
|
|
546
|
+
updated_at: Date;
|
|
547
|
+
created_by: string;
|
|
548
|
+
updated_by: string;
|
|
549
|
+
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nomalism-com/types",
|
|
3
3
|
"description": "A nomalism package with all necessary types and validations for developing APIs",
|
|
4
|
-
"version": "0.45.
|
|
4
|
+
"version": "0.45.57",
|
|
5
5
|
"author": "Nomalism <it.nomalism@gmail.com> (https://nomalism.com/)",
|
|
6
6
|
"license": "UNLICENSED",
|
|
7
7
|
"type": "module",
|