@libs-ui/interfaces-types 0.2.306-5 → 0.2.306-7

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/date.type.d.ts ADDED
@@ -0,0 +1,18 @@
1
+ import * as dayjs from 'dayjs';
2
+ type NullableDate = Extract<dayjs.ConfigType, undefined | null>;
3
+ export type NonNullableDate = Exclude<dayjs.ConfigType, undefined | null>;
4
+ export type GetDayjsConfig = {
5
+ date?: dayjs.ConfigType;
6
+ utc?: boolean;
7
+ formatOfDate?: string;
8
+ returnDayjsIfConfigDateNotExist?: boolean;
9
+ localeZone?: string;
10
+ };
11
+ export type GetDayjsReturn<C> = C extends undefined ? dayjs.Dayjs : C extends {
12
+ returnDayjsIfConfigDateNotExist: true;
13
+ } ? dayjs.Dayjs : C extends {
14
+ date: NonNullableDate;
15
+ } ? dayjs.Dayjs : C extends {
16
+ date: NullableDate;
17
+ } ? undefined : dayjs.Dayjs | undefined;
18
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy11aS9pbnRlcmZhY2VzLXR5cGVzL3NyYy9kYXRlLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGRheWpzIGZyb20gJ2RheWpzJztcblxudHlwZSBOdWxsYWJsZURhdGUgPSBFeHRyYWN0PGRheWpzLkNvbmZpZ1R5cGUsIHVuZGVmaW5lZCB8IG51bGw+O1xuZXhwb3J0IHR5cGUgTm9uTnVsbGFibGVEYXRlID0gRXhjbHVkZTxkYXlqcy5Db25maWdUeXBlLCB1bmRlZmluZWQgfCBudWxsPjtcblxuZXhwb3J0IHR5cGUgR2V0RGF5anNDb25maWcgPSB7XG4gIGRhdGU/OiBkYXlqcy5Db25maWdUeXBlO1xuICB1dGM/OiBib29sZWFuO1xuICBmb3JtYXRPZkRhdGU/OiBzdHJpbmc7XG4gIHJldHVybkRheWpzSWZDb25maWdEYXRlTm90RXhpc3Q/OiBib29sZWFuO1xuICBsb2NhbGVab25lPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgR2V0RGF5anNSZXR1cm48Qz4gPSBDIGV4dGVuZHMgdW5kZWZpbmVkXG4gID8gZGF5anMuRGF5anNcbiAgOiBDIGV4dGVuZHMgeyByZXR1cm5EYXlqc0lmQ29uZmlnRGF0ZU5vdEV4aXN0OiB0cnVlIH1cbiAgICA/IGRheWpzLkRheWpzXG4gICAgOiBDIGV4dGVuZHMgeyBkYXRlOiBOb25OdWxsYWJsZURhdGUgfVxuICAgICAgPyBkYXlqcy5EYXlqc1xuICAgICAgOiBDIGV4dGVuZHMgeyBkYXRlOiBOdWxsYWJsZURhdGUgfVxuICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICA6IGRheWpzLkRheWpzIHwgdW5kZWZpbmVkO1xuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdC1pbnB1dHMudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMtdWkvaW50ZXJmYWNlcy10eXBlcy9zcmMvZXh0cmFjdC1pbnB1dHMudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5wdXRTaWduYWwsIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vLyBVdGlsaXR5IHR5cGUgxJHhu4MgdW53cmFwIElucHV0U2lnbmFsIHR5cGVcbnR5cGUgVW53cmFwSW5wdXRTaWduYWw8VCwgSyBleHRlbmRzIGtleW9mIFQ+ID0gVFtLXSBleHRlbmRzIElucHV0U2lnbmFsPGluZmVyIFU+ID8gVSA6IG5ldmVyO1xuXG4vLyBVdGlsaXR5IHR5cGUgxJHhu4MgdOG6oW8gbWFwcGVkIHR5cGUgduG7m2kgU2lnbmFsIHVud3JhcHBpbmdcbnR5cGUgVW53cmFwU2lnbmFsczxUPiA9IHtcbiAgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBTaWduYWw8aW5mZXIgVT4gPyBVIDogVFtLXTtcbn07XG5cbi8vIFV0aWxpdHkgdHlwZSDEkeG7gyBmaWx0ZXIgdsOgIHThuqFvIHJlcXVpcmVkIHByb3BlcnRpZXNcbnR5cGUgUmVxdWlyZWRJbnB1dFByb3BlcnRpZXM8VD4gPSB7XG4gIFtLIGluIGtleW9mIFQgYXMgVFtLXSBleHRlbmRzIElucHV0U2lnbmFsPGluZmVyIFU+ID8gKHVuZGVmaW5lZCBleHRlbmRzIFUgPyBuZXZlciA6IEspIDogbmV2ZXJdOiBVbndyYXBJbnB1dFNpZ25hbDxULCBLPjtcbn07XG5cbi8vIFV0aWxpdHkgdHlwZSDEkeG7gyBmaWx0ZXIgdsOgIHThuqFvIG9wdGlvbmFsIHByb3BlcnRpZXNcbnR5cGUgT3B0aW9uYWxJbnB1dFByb3BlcnRpZXM8VD4gPSB7XG4gIFtLIGluIGtleW9mIFQgYXMgVFtLXSBleHRlbmRzIElucHV0U2lnbmFsPGluZmVyIFU+ID8gKHVuZGVmaW5lZCBleHRlbmRzIFUgPyBLIDogbmV2ZXIpIDogbmV2ZXJdPzogVW53cmFwSW5wdXRTaWduYWw8VCwgSz47XG59O1xuXG4vLyBNYWluIHR5cGUgxJHhu4MgZXh0cmFjdCB04bqldCBj4bqjIGlucHV0cyB04burIGNvbXBvbmVudFxuZXhwb3J0IHR5cGUgRXh0cmFjdElucHV0czxUPiA9IFJlcXVpcmVkSW5wdXRQcm9wZXJ0aWVzPFQ+ICYgT3B0aW9uYWxJbnB1dFByb3BlcnRpZXM8VD47XG5leHBvcnQgdHlwZSBJbnB1dHM8VD4gPSBQYXJ0aWFsPFVud3JhcFNpZ25hbHM8VD4+ICYgRXh0cmFjdElucHV0czxUPjtcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdC1pbnB1dHMudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMtdWkvaW50ZXJmYWNlcy10eXBlcy9zcmMvZXh0cmFjdC1pbnB1dHMudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgSW5wdXRTaWduYWwsIElucHV0U2lnbmFsV2l0aFRyYW5zZm9ybSwgTW9kZWxTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLy8gVXRpbGl0eSB0eXBlIMSR4buDIHVud3JhcCBJbnB1dFNpZ25hbCB0eXBlXG50eXBlIFVud3JhcElucHV0U2lnbmFsPFQsIEsgZXh0ZW5kcyBrZXlvZiBUPiA9IFRbS10gZXh0ZW5kcyBJbnB1dFNpZ25hbDxpbmZlciBVPiB8IE1vZGVsU2lnbmFsPGluZmVyIFU+IHwgSW5wdXRTaWduYWxXaXRoVHJhbnNmb3JtPGFueSwgaW5mZXIgVT4gPyBVIDogbmV2ZXI7XG5cbi8vIFV0aWxpdHkgdHlwZSDEkeG7gyBmaWx0ZXIgdsOgIHThuqFvIHJlcXVpcmVkIHByb3BlcnRpZXNcbnR5cGUgUmVxdWlyZWRJbnB1dFByb3BlcnRpZXM8VD4gPSB7XG4gIFtLIGluIGtleW9mIFQgYXMgVFtLXSBleHRlbmRzIElucHV0U2lnbmFsPGluZmVyIFU+IHwgTW9kZWxTaWduYWw8aW5mZXIgVT4gfCBJbnB1dFNpZ25hbFdpdGhUcmFuc2Zvcm08YW55LCBpbmZlciBVPiA/ICh1bmRlZmluZWQgZXh0ZW5kcyBVID8gbmV2ZXIgOiBLKSA6IG5ldmVyXTogVW53cmFwSW5wdXRTaWduYWw8VCwgSz47XG59O1xuXG4vLyBVdGlsaXR5IHR5cGUgxJHhu4MgZmlsdGVyIHbDoCB04bqhbyBvcHRpb25hbCBwcm9wZXJ0aWVzXG50eXBlIE9wdGlvbmFsSW5wdXRQcm9wZXJ0aWVzPFQ+ID0ge1xuICBbSyBpbiBrZXlvZiBUIGFzIFRbS10gZXh0ZW5kcyBJbnB1dFNpZ25hbDxpbmZlciBVPiB8IE1vZGVsU2lnbmFsPGluZmVyIFU+IHwgSW5wdXRTaWduYWxXaXRoVHJhbnNmb3JtPGFueSwgaW5mZXIgVT4gPyAodW5kZWZpbmVkIGV4dGVuZHMgVSA/IEsgOiBuZXZlcikgOiBuZXZlcl0/OiBVbndyYXBJbnB1dFNpZ25hbDxULCBLPjtcbn07XG5cbi8vIE1haW4gdHlwZSDEkeG7gyBleHRyYWN0IHThuqV0IGPhuqMgaW5wdXRzIHThu6sgY29tcG9uZW50XG5leHBvcnQgdHlwZSBFeHRyYWN0SW5wdXRzPFQsIFIgZXh0ZW5kcyBib29sZWFuID0gdHJ1ZT4gPSAoUiBleHRlbmRzIHRydWUgPyBSZXF1aXJlZElucHV0UHJvcGVydGllczxUPiA6IFBhcnRpYWw8UmVxdWlyZWRJbnB1dFByb3BlcnRpZXM8VD4+KSAmIE9wdGlvbmFsSW5wdXRQcm9wZXJ0aWVzPFQ+O1xuIl19
@@ -1,2 +1,172 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy11dGlsaXRpZXMtZm9yLXBhdGgtdmFsdWUudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMtdWkvaW50ZXJmYWNlcy10eXBlcy9zcmMvZ2VuZXJpYy11dGlsaXRpZXMtZm9yLXBhdGgtdmFsdWUudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8vIC0tLS0tLS0tLS0gR2VuZXJpYyB1dGlsaXRpZXMgZm9yIHBhdGggYW5kIHZhbHVlIHJlc29sdXRpb24gLS0tLS0tLS0tLVxuXG4vLyBVbndyYXAgYSBzaW5nbGUgbGV2ZWwgb2YgU2lnbmFsXG50eXBlIFVud3JhcFNpZ25hbDxUPiA9IFQgZXh0ZW5kcyBTaWduYWw8aW5mZXIgVT4gPyBVIDogVDtcblxuLy8gVW53cmFwIGFsbCBsZXZlbHMgb2YgU2lnbmFsXG50eXBlIFVud3JhcEFsbFNpZ25hbHM8VD4gPSBUIGV4dGVuZHMgU2lnbmFsPGluZmVyIFU+ID8gVW53cmFwQWxsU2lnbmFsczxVPiA6IFQ7XG5cbi8vIFJlbW92ZSB1bmRlZmluZWQvbnVsbCBhZnRlciBvbmUtbGV2ZWwgdW53cmFwIHRvIGluc3BlY3Qgc2hhcGVcbnR5cGUgQ2xlYW48VD4gPSBFeGNsdWRlPFVud3JhcFNpZ25hbDxUPiwgdW5kZWZpbmVkIHwgbnVsbD47XG50eXBlIFN0cktleXM8VD4gPSBFeHRyYWN0PGtleW9mIFQsIHN0cmluZz47XG5cbi8vIEdldCByYXcgYXJyYXkgZWxlbWVudCB0eXBlLCBldmVuIGlmIHRoZSBhcnJheSBpdHNlbGYgaXMgd3JhcHBlZCBpbiBhIHNpZ25hbFxudHlwZSBBcnJheUVsZW1lbnRSYXc8VD4gPSBUIGV4dGVuZHMgKGluZmVyIEEpW10gPyBBIDogVCBleHRlbmRzIFJlYWRvbmx5QXJyYXk8aW5mZXIgQj4gPyBCIDogVCBleHRlbmRzIFNpZ25hbDxpbmZlciBVPiA/IChVIGV4dGVuZHMgKGluZmVyIEMpW10gPyBDIDogVSBleHRlbmRzIFJlYWRvbmx5QXJyYXk8aW5mZXIgRD4gPyBEIDogYW55KSA6IGFueTtcblxuLy8gQ2hlY2sgaWYgYSB0eXBlIChhZnRlciB1bndyYXBwaW5nIHNpZ25hbCBhbmQgY2xlYW5pbmcpIGlzIGFycmF5LWxpa2VcbnR5cGUgSXNBcnJheUxpa2U8VD4gPSBDbGVhbjxUPiBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXSA/IHRydWUgOiBmYWxzZTtcblxuLy8gRGV0ZXJtaW5lIGlmIGEgdHlwZSAoYWZ0ZXIgdW53cmFwcGluZyBzaWduYWwgYW5kIGNsZWFuaW5nKSBpcyBhIG5vbi1hcnJheSBvYmplY3RcbnR5cGUgSXNOb25BcnJheU9iamVjdDxUPiA9IENsZWFuPFQ+IGV4dGVuZHMgb2JqZWN0ID8gKENsZWFuPFQ+IGV4dGVuZHMgcmVhZG9ubHkgdW5rbm93bltdID8gZmFsc2UgOiB0cnVlKSA6IGZhbHNlO1xuXG4vLyBGaW5hbGl6ZSB0aGUgcmV0dXJuZWQgdHlwZSBkZXBlbmRpbmcgb24gUlxudHlwZSBGaW5hbGl6ZTxULCBSIGV4dGVuZHMgYm9vbGVhbj4gPSBSIGV4dGVuZHMgdHJ1ZSA/IFQgOiBVbndyYXBBbGxTaWduYWxzPFQ+O1xuXG50eXBlIFBhdGhGb3JQcm9wPFByb3BSYXcsIEsgZXh0ZW5kcyBzdHJpbmc+ID1cbiAgSXNBcnJheUxpa2U8UHJvcFJhdz4gZXh0ZW5kcyB0cnVlXG4gICAgPyBgJHtLfWAgfCBgJHtLfVske251bWJlcn1dYCB8IChQYXRoT2Y8QXJyYXlFbGVtZW50UmF3PFByb3BSYXc+PiBleHRlbmRzIGFueSA/IGFueSA6IGAke0t9WyR7bnVtYmVyfV0uJHtQYXRoT2Y8QXJyYXlFbGVtZW50UmF3PFByb3BSYXc+Pn1gKVxuICAgIDogSXNOb25BcnJheU9iamVjdDxQcm9wUmF3PiBleHRlbmRzIHRydWVcbiAgICAgID8gYCR7S31gIHwgKFBhdGhPZjxDbGVhbjxQcm9wUmF3Pj4gZXh0ZW5kcyBhbnkgPyBhbnkgOiBgJHtLfS4ke1BhdGhPZjxDbGVhbjxQcm9wUmF3Pj59YClcbiAgICAgIDogYCR7S31gO1xuXG50eXBlIEdldEludGVybmFsPFRSYXcsIFAgZXh0ZW5kcyBzdHJpbmcsIFIgZXh0ZW5kcyBib29sZWFuPiA9XG4gIC8vIENhc2U6IGtleSB3aXRoIGV4cGxpY2l0IGluZGV4IHRoZW4gcmVzdCAtPiBLW3hdLlJlc3RcbiAgUCBleHRlbmRzIGAke2luZmVyIEt9WyR7aW5mZXIgSX1dLiR7aW5mZXIgUmVzdH1gXG4gICAgPyBLIGV4dGVuZHMgU3RyS2V5czxDbGVhbjxUUmF3Pj5cbiAgICAgID8gSSBleHRlbmRzIGAke251bWJlcn1gXG4gICAgICAgID8gR2V0SW50ZXJuYWw8QXJyYXlFbGVtZW50UmF3PENsZWFuPFRSYXc+W0tdPiwgUmVzdCwgUj5cbiAgICAgICAgOiBhbnlcbiAgICAgIDogYW55XG4gICAgOiAvLyBDYXNlOiBrZXkgd2l0aCBkb3QgdGhlbiByZXN0IC0+IEsuUmVzdCAoc3VwcG9ydHMgYXJyYXkgZG90IGFjY2VzcyBpbnRvIGVsZW1lbnQpXG4gICAgICBQIGV4dGVuZHMgYCR7aW5mZXIgS30uJHtpbmZlciBSZXN0fWBcbiAgICAgID8gSyBleHRlbmRzIFN0cktleXM8Q2xlYW48VFJhdz4+XG4gICAgICAgID8gSXNBcnJheUxpa2U8Q2xlYW48VFJhdz5bS10+IGV4dGVuZHMgdHJ1ZVxuICAgICAgICAgID8gYW55XG4gICAgICAgICAgOiBHZXRJbnRlcm5hbDxDbGVhbjxUUmF3PltLXSwgUmVzdCwgUj5cbiAgICAgICAgOiBhbnlcbiAgICAgIDogLy8gQ2FzZToga2V5IHdpdGggZXhwbGljaXQgbnVtZXJpYyBpbmRleCBlbmQgLT4gS1s8bnVtYmVyPl1cbiAgICAgICAgUCBleHRlbmRzIGAke2luZmVyIEt9WyR7aW5mZXIgSX1dYFxuICAgICAgICA/IEsgZXh0ZW5kcyBTdHJLZXlzPENsZWFuPFRSYXc+PlxuICAgICAgICAgID8gSSBleHRlbmRzIGAke251bWJlcn1gXG4gICAgICAgICAgICA/IEZpbmFsaXplPEFycmF5RWxlbWVudFJhdzxDbGVhbjxUUmF3PltLXT4sIFI+XG4gICAgICAgICAgICA6IGFueVxuICAgICAgICAgIDogYW55XG4gICAgICAgIDogLy8gQ2FzZTogdGVybWluYWwga2V5IC0+IEtcbiAgICAgICAgICBQIGV4dGVuZHMgYCR7aW5mZXIgS31gXG4gICAgICAgICAgPyBLIGV4dGVuZHMgU3RyS2V5czxDbGVhbjxUUmF3Pj5cbiAgICAgICAgICAgID8gRmluYWxpemU8Q2xlYW48VFJhdz5bS10sIFI+XG4gICAgICAgICAgICA6IGFueVxuICAgICAgICAgIDogYW55O1xuXG4vLyBVdGlsaXR5IHR5cGUgdG8gZGV0ZWN0IERPTS9FdmVudCB0eXBlcyB0aGF0IGNhdXNlIGNpcmN1bGFyIHJlZmVyZW5jZXNcbnR5cGUgSXNET01UeXBlPFQ+ID0gVCBleHRlbmRzIEV2ZW50IHwgTm9kZSB8IERvY3VtZW50IHwgRWxlbWVudCB8IFdpbmRvdyB8IENTU1N0eWxlRGVjbGFyYXRpb24gfCBDU1NSdWxlIHwgQ1NTU3R5bGVTaGVldCA/IHRydWUgOiBmYWxzZTtcblxuLy8gQnVpbGQgcGF0aCBzdHJpbmdzIGZvciBhIGdpdmVuIHJhdyB0eXBlIFRSYXdcbmV4cG9ydCB0eXBlIFBhdGhPZjxUUmF3PiA9IElzRE9NVHlwZTxUUmF3PiBleHRlbmRzIHRydWUgPyBhbnkgOiBUUmF3IGV4dGVuZHMgdW5rbm93biA/IHN0cmluZyA6IENsZWFuPFRSYXc+IGV4dGVuZHMgb2JqZWN0ID8geyBbSyBpbiBTdHJLZXlzPENsZWFuPFRSYXc+Pl06IFBhdGhGb3JQcm9wPENsZWFuPFRSYXc+W0tdLCBLPiB9W1N0cktleXM8Q2xlYW48VFJhdz4+XSA6IGFueTtcblxuLy8gUmVzb2x2ZSB0aGUgdmFsdWUgdHlwZSBhdCBhIGdpdmVuIHBhdGggUC4gSWYgUj10cnVlLCBrZWVwIGZpbmFsIFNpZ25hbDsgZWxzZSB1bndyYXAgc2lnbmFscy5cbmV4cG9ydCB0eXBlIEdldFZhbHVlQXRQYXRoPFRSYXcsIFAgZXh0ZW5kcyBQYXRoT2Y8VFJhdz4sIFIgZXh0ZW5kcyBib29sZWFuID0gZmFsc2U+ID0gR2V0SW50ZXJuYWw8VFJhdywgUCwgUj47XG5cbi8vIEhlbHBlciB0eXBlIGNobyBraeG7g3UgdHLhuqMgduG7gSBj4bunYSBnZXQoKSBk4buxYSB0csOqbiBkZWZhdWx0VmFsdWVcbmV4cG9ydCB0eXBlIEdldFJldHVyblR5cGU8TywgUCBleHRlbmRzIFBhdGhPZjxPPiwgS1MgZXh0ZW5kcyBib29sZWFuLCBEPiA9IEQgZXh0ZW5kcyB1bmRlZmluZWQgPyBHZXRWYWx1ZUF0UGF0aDxPLCBQLCBLUz4gOiBEO1xuIl19
2
+ /** ====================== (Tuỳ chọn) Ví dụ nhanh ====================== **/
3
+ // import { WritableSignal } from '@angular/core';
4
+ // export interface IComment {
5
+ // comments?: WritableSignal<ISubComment>;
6
+ // }
7
+ // export interface ISubComment {
8
+ // store?: WritableSignal<Array<WritableSignal<IComment>>>;
9
+ // data?: WritableSignal<Array<WritableSignal<IComment>>>;
10
+ // specific_temp_data?: WritableSignal<Array<WritableSignal<IComment>>>;
11
+ // paging?: WritableSignal<{
12
+ // cursors?: WritableSignal<{
13
+ // after?: WritableSignal<string>;
14
+ // before?: WritableSignal<string>;
15
+ // }>;
16
+ // before?: WritableSignal<string>;
17
+ // after?: WritableSignal<string>;
18
+ // next?: WritableSignal<string>;
19
+ // previous?: WritableSignal<string>;
20
+ // }>;
21
+ // summary?: WritableSignal<{
22
+ // can_comment?: WritableSignal<boolean>;
23
+ // canorder_comment?: WritableSignal<string>;
24
+ // total_count?: WritableSignal<number>;
25
+ // }>;
26
+ // }
27
+ // type V_comments_F = GetValueAtPath<IComment, 'comments', false>; // ISubComment
28
+ // type V_comments_T = GetValueAtPath<IComment, 'comments', true>; // WritableSignal<ISubComment>
29
+ // type V_comments_store_F = GetValueAtPath<IComment, 'comments.data', false>; // Array<WritableSignal<IComment>>
30
+ // type V_comments_store_T = GetValueAtPath<IComment, 'comments.data', true>; // WritableSignal<Array<WritableSignal<IComment>>>
31
+ // export interface Test {
32
+ // specific_query?: WritableSignal<IAssignmentItemQuery>;
33
+ // data: WritableSignal<Array<WritableSignal<IAssignmentItem>>>;
34
+ // index: number;
35
+ // info: {
36
+ // name: string;
37
+ // age: number;
38
+ // };
39
+ // city: WritableSignal<{
40
+ // name: string;
41
+ // country: string;
42
+ // }>;
43
+ // address: WritableSignal<{
44
+ // ip: WritableSignal<string>;
45
+ // port: WritableSignal<number>;
46
+ // }>;
47
+ // owner: Array<string>;
48
+ // support: Array<WritableSignal<string>>;
49
+ // host: Array<{
50
+ // ip: WritableSignal<string>;
51
+ // port: number;
52
+ // }>;
53
+ // country: WritableSignal<
54
+ // Array<
55
+ // WritableSignal<{
56
+ // name: WritableSignal<{
57
+ // vi: string;
58
+ // en: string;
59
+ // }>;
60
+ // code: WritableSignal<{
61
+ // vi: WritableSignal<string>;
62
+ // en: WritableSignal<string>;
63
+ // }>;
64
+ // flag: WritableSignal<string>;
65
+ // phone_code: string;
66
+ // currency: {
67
+ // name: string;
68
+ // code: WritableSignal<string>;
69
+ // symbol: WritableSignal<{
70
+ // vi: string;
71
+ // en: string;
72
+ // cn: WritableSignal<Array<string>>;
73
+ // jp: WritableSignal<
74
+ // Array<
75
+ // WritableSignal<{
76
+ // vi: string;
77
+ // en: string;
78
+ // }>
79
+ // >
80
+ // >;
81
+ // }>;
82
+ // };
83
+ // }>
84
+ // >
85
+ // >;
86
+ // }
87
+ // interface IAssignmentItem {
88
+ // id: WritableSignal<string>;
89
+ // name: WritableSignal<string>;
90
+ // description: WritableSignal<string>;
91
+ // created_at: WritableSignal<string>;
92
+ // updated_at: WritableSignal<string>;
93
+ // }
94
+ // export interface IAssignmentItemQuery {
95
+ // per_page: WritableSignal<number>;
96
+ // after_token?: WritableSignal<string>;
97
+ // before_token?: WritableSignal<string>;
98
+ // search?: WritableSignal<string>;
99
+ // search_index?: WritableSignal<number>;
100
+ // }
101
+ // type V_index_F = GetValueAtPath<Test, 'index', false>; // number
102
+ // type V_index_T = GetValueAtPath<Test, 'index', true>; // number
103
+ // type V_info_F = GetValueAtPath<Test, 'info', false>; // { name: string; age: number }
104
+ // type V_info_T = GetValueAtPath<Test, 'info', true>; // { name: string; age: number }
105
+ // type V_info_name_F = GetValueAtPath<Test, 'info.name', false>; // string
106
+ // type V_info_name_T = GetValueAtPath<Test, 'info.name', true>; // string
107
+ // type V_info_age_F = GetValueAtPath<Test, 'info.age', false>; // number
108
+ // type V_info_age_T = GetValueAtPath<Test, 'info.age', true>; // number
109
+ // // City (signal-wrapped object with plain fields)
110
+ // type V_city_F = GetValueAtPath<Test, 'city', false>; // { name: string; country: string }
111
+ // type V_city_T = GetValueAtPath<Test, 'city', true>; // WritableSignal<{ name: string; country: string }>
112
+ // type V_city_name_F = GetValueAtPath<Test, 'city.name', false>; // string
113
+ // type V_city_name_T = GetValueAtPath<Test, 'city.name', true>; // string
114
+ // type V_city_country_F = GetValueAtPath<Test, 'city.country', false>; // string
115
+ // type V_city_country_T = GetValueAtPath<Test, 'city.country', true>; // string
116
+ // // Address (signal-wrapped object with signal leaves)
117
+ // type V_address_F = GetValueAtPath<Test, 'address', false>; // { ip: string; port: number }
118
+ // type V_address_T = GetValueAtPath<Test, 'address', true>; // WritableSignal<{ ip: WritableSignal<string>; port: WritableSignal<number> }>
119
+ // type V_address_ip_F = GetValueAtPath<Test, 'address.ip', false>; // string
120
+ // type V_address_ip_T = GetValueAtPath<Test, 'address.ip', true>; // WritableSignal<string>
121
+ // type V_address_port_F = GetValueAtPath<Test, 'address.port', false>; // number
122
+ // type V_address_port_T = GetValueAtPath<Test, 'address.port', true>; // WritableSignal<number>
123
+ // // Owner (array of primitives)
124
+ // type V_owner_F = GetValueAtPath<Test, 'owner', false>; // string[]
125
+ // type V_owner_T = GetValueAtPath<Test, 'owner', true>; // string[]
126
+ // type V_owner_idx_F = GetValueAtPath<Test, 'owner[0]', false>; // string
127
+ // type V_owner_idx_T = GetValueAtPath<Test, 'owner[0]', true>; // string
128
+ // // Support (array of signals)
129
+ // type V_support_F = GetValueAtPath<Test, 'support', false>; // string[]
130
+ // type V_support_T = GetValueAtPath<Test, 'support', true>; // WritableSignal<string>[]
131
+ // type V_support_idx_F = GetValueAtPath<Test, 'support[0]', false>; // string
132
+ // type V_support_idx_T = GetValueAtPath<Test, 'support[0]', true>; // WritableSignal<string>
133
+ // // Host (array of objects with mixed leaves)
134
+ // type V_host_F = GetValueAtPath<Test, 'host', false>; // { ip: string; port: number }[]
135
+ // type V_host_T = GetValueAtPath<Test, 'host', true>; // { ip: WritableSignal<string>; port: number }[]
136
+ // type V_host_idx_F = GetValueAtPath<Test, 'host[0]', false>; // { ip: string; port: number }
137
+ // type V_host_idx_T = GetValueAtPath<Test, 'host[0]', true>; // { ip: WritableSignal<string>; port: number }
138
+ // type V_host_ip_F = GetValueAtPath<Test, 'host[0].ip', false>; // string
139
+ // type V_host_ip_T = GetValueAtPath<Test, 'host[0].ip', true>; // WritableSignal<string>
140
+ // type V_host_port_F = GetValueAtPath<Test, 'host[0].port', false>; // number
141
+ // type V_host_port_T = GetValueAtPath<Test, 'host[0].port', true>; // number
142
+ // // currency
143
+ // type V_currency_F = GetValueAtPath<Test, 'country[0].currency', false>; // { name: string; code: string; symbol: { ... } }
144
+ // type V_currency_T = GetValueAtPath<Test, 'country[0].currency', true>; // { name: string; code: WritableSignal<string>; symbol: WritableSignal<{ ... }> }
145
+ // type V_currency_name_F = GetValueAtPath<Test, 'country[0].currency.name', false>; // string
146
+ // type V_currency_name_T = GetValueAtPath<Test, 'country[0].currency.name', true>; // string
147
+ // type V_currency_code_F = GetValueAtPath<Test, 'country[0].currency.code', false>; // string
148
+ // type V_currency_code_T = GetValueAtPath<Test, 'country[0].currency.code', true>; // WritableSignal<string>
149
+ // // currency.symbol
150
+ // type V_symbol_F = GetValueAtPath<Test, 'country[0].currency.symbol', false>; // { vi: string; en: string; cn: string[]; jp: { vi: string; en: string }[] }
151
+ // type V_symbol_T = GetValueAtPath<Test, 'country[0].currency.symbol', true>; // WritableSignal<{ vi: string; en: string; cn: WritableSignal<string[]>; jp: WritableSignal<{ vi: string; en: string }[]> }>
152
+ // type V_symbol_vi_F = GetValueAtPath<Test, 'country[0].currency.symbol.vi', false>; // string
153
+ // type V_symbol_vi_T = GetValueAtPath<Test, 'country[0].currency.symbol.vi', true>; // string
154
+ // type V_symbol_en_F = GetValueAtPath<Test, 'country[0].currency.symbol.en', false>; // string
155
+ // type V_symbol_en_T = GetValueAtPath<Test, 'country[0].currency.symbol.en', true>; // string
156
+ // type V_symbol_cn_F = GetValueAtPath<Test, 'country[0].currency.symbol.cn', false>; // string[]
157
+ // type V_symbol_cn_T = GetValueAtPath<Test, 'country[0].currency.symbol.cn', true>; // WritableSignal<string[]>
158
+ // type V_symbol_cn_idx_F = GetValueAtPath<Test, 'country[0].currency.symbol.cn[0]', false>; // string
159
+ // type V_symbol_cn_idx_T = GetValueAtPath<Test, 'country[0].currency.symbol.cn[0]', true>; // string
160
+ // type V_symbol_jp_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp', false>; // { vi: string; en: string }[]
161
+ // type V_symbol_jp_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp', true>; // WritableSignal<{ vi: string; en: string }[]>
162
+ // type V_symbol_jp_idx_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0]', false>; // { vi: string; en: string }
163
+ // type V_symbol_jp_idx_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0]', true>; // WritableSignal<{ vi: string; en: string }>
164
+ // type V_symbol_jp_vi_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].vi', false>; // string
165
+ // type V_symbol_jp_vi_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].vi', true>; // string
166
+ // type V_symbol_jp_en_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].en', false>; // string
167
+ // type V_symbol_jp_en_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].en', true>; // string
168
+ // type V_Array_symbol_cn_F = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn', false>; // string[]
169
+ // type V_Array_symbol_cn_T = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn', true>; // WritableSignal<string[]>
170
+ // type V_Array_symbol_cn_idx_F = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn[0]', false>; // string
171
+ // type V_Array_symbol_cn_idx_T = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn[0]', true>; // string
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy11dGlsaXRpZXMtZm9yLXBhdGgtdmFsdWUudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMtdWkvaW50ZXJmYWNlcy10eXBlcy9zcmMvZ2VuZXJpYy11dGlsaXRpZXMtZm9yLXBhdGgtdmFsdWUudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBK0hBLDRFQUE0RTtBQUU1RSxrREFBa0Q7QUFFbEQsOEJBQThCO0FBQzlCLDRDQUE0QztBQUM1QyxJQUFJO0FBRUosaUNBQWlDO0FBQ2pDLDZEQUE2RDtBQUM3RCw0REFBNEQ7QUFDNUQsMEVBQTBFO0FBQzFFLDhCQUE4QjtBQUM5QixpQ0FBaUM7QUFDakMsd0NBQXdDO0FBQ3hDLHlDQUF5QztBQUN6QyxVQUFVO0FBQ1YsdUNBQXVDO0FBQ3ZDLHNDQUFzQztBQUN0QyxxQ0FBcUM7QUFDckMseUNBQXlDO0FBQ3pDLFFBQVE7QUFDUiwrQkFBK0I7QUFDL0IsNkNBQTZDO0FBQzdDLGlEQUFpRDtBQUNqRCw0Q0FBNEM7QUFDNUMsUUFBUTtBQUNSLElBQUk7QUFFSixrRkFBa0Y7QUFDbEYsaUdBQWlHO0FBRWpHLGlIQUFpSDtBQUNqSCxnSUFBZ0k7QUFFaEksMEJBQTBCO0FBQzFCLDJEQUEyRDtBQUUzRCxrRUFBa0U7QUFFbEUsbUJBQW1CO0FBQ25CLFlBQVk7QUFDWixvQkFBb0I7QUFDcEIsbUJBQW1CO0FBQ25CLE9BQU87QUFDUCwyQkFBMkI7QUFDM0Isb0JBQW9CO0FBQ3BCLHVCQUF1QjtBQUN2QixRQUFRO0FBQ1IsOEJBQThCO0FBQzlCLGtDQUFrQztBQUNsQyxvQ0FBb0M7QUFDcEMsUUFBUTtBQUNSLDBCQUEwQjtBQUMxQiw0Q0FBNEM7QUFDNUMsa0JBQWtCO0FBQ2xCLGtDQUFrQztBQUNsQyxvQkFBb0I7QUFDcEIsUUFBUTtBQUVSLDZCQUE2QjtBQUM3QixhQUFhO0FBQ2IseUJBQXlCO0FBQ3pCLGlDQUFpQztBQUNqQyx3QkFBd0I7QUFDeEIsd0JBQXdCO0FBQ3hCLGNBQWM7QUFDZCxpQ0FBaUM7QUFDakMsd0NBQXdDO0FBQ3hDLHdDQUF3QztBQUN4QyxjQUFjO0FBQ2Qsd0NBQXdDO0FBQ3hDLDhCQUE4QjtBQUM5QixzQkFBc0I7QUFDdEIsMEJBQTBCO0FBQzFCLDBDQUEwQztBQUMxQyxxQ0FBcUM7QUFDckMsMEJBQTBCO0FBQzFCLDBCQUEwQjtBQUMxQixpREFBaUQ7QUFDakQsa0NBQWtDO0FBQ2xDLHVCQUF1QjtBQUN2QixtQ0FBbUM7QUFDbkMsZ0NBQWdDO0FBQ2hDLGdDQUFnQztBQUNoQyxxQkFBcUI7QUFDckIsa0JBQWtCO0FBQ2xCLGlCQUFpQjtBQUNqQixnQkFBZ0I7QUFDaEIsYUFBYTtBQUNiLFdBQVc7QUFDWCxRQUFRO0FBQ1IsT0FBTztBQUNQLElBQUk7QUFFSiw4QkFBOEI7QUFDOUIsZ0NBQWdDO0FBQ2hDLGtDQUFrQztBQUNsQyx5Q0FBeUM7QUFDekMsd0NBQXdDO0FBQ3hDLHdDQUF3QztBQUN4QyxJQUFJO0FBRUosMENBQTBDO0FBQzFDLHNDQUFzQztBQUN0QywwQ0FBMEM7QUFDMUMsMkNBQTJDO0FBQzNDLHFDQUFxQztBQUNyQywyQ0FBMkM7QUFDM0MsSUFBSTtBQUVKLG1FQUFtRTtBQUNuRSxrRUFBa0U7QUFFbEUsd0ZBQXdGO0FBQ3hGLHVGQUF1RjtBQUN2RiwyRUFBMkU7QUFDM0UsMEVBQTBFO0FBQzFFLHlFQUF5RTtBQUN6RSx3RUFBd0U7QUFFeEUsb0RBQW9EO0FBQ3BELDRGQUE0RjtBQUM1RiwyR0FBMkc7QUFDM0csMkVBQTJFO0FBQzNFLDBFQUEwRTtBQUMxRSxpRkFBaUY7QUFDakYsZ0ZBQWdGO0FBRWhGLHdEQUF3RDtBQUN4RCw2RkFBNkY7QUFDN0YsNElBQTRJO0FBQzVJLDZFQUE2RTtBQUM3RSw0RkFBNEY7QUFDNUYsaUZBQWlGO0FBQ2pGLGdHQUFnRztBQUVoRyxpQ0FBaUM7QUFDakMscUVBQXFFO0FBQ3JFLG9FQUFvRTtBQUNwRSwwRUFBMEU7QUFDMUUseUVBQXlFO0FBRXpFLGdDQUFnQztBQUNoQyx5RUFBeUU7QUFDekUsd0ZBQXdGO0FBQ3hGLDhFQUE4RTtBQUM5RSw2RkFBNkY7QUFFN0YsK0NBQStDO0FBQy9DLHlGQUF5RjtBQUN6Rix3R0FBd0c7QUFDeEcsOEZBQThGO0FBQzlGLDZHQUE2RztBQUM3RywwRUFBMEU7QUFDMUUseUZBQXlGO0FBQ3pGLDhFQUE4RTtBQUM5RSw2RUFBNkU7QUFFN0UsY0FBYztBQUNkLDZIQUE2SDtBQUM3SCw0SkFBNEo7QUFDNUosOEZBQThGO0FBQzlGLDZGQUE2RjtBQUM3Riw4RkFBOEY7QUFDOUYsNkdBQTZHO0FBRTdHLHFCQUFxQjtBQUNyQiw2SkFBNko7QUFDN0osNE1BQTRNO0FBQzVNLCtGQUErRjtBQUMvRiw4RkFBOEY7QUFDOUYsK0ZBQStGO0FBQy9GLDhGQUE4RjtBQUM5RixpR0FBaUc7QUFDakcsZ0hBQWdIO0FBQ2hILHNHQUFzRztBQUN0RyxxR0FBcUc7QUFDckcscUhBQXFIO0FBQ3JILG9JQUFvSTtBQUNwSSwwSEFBMEg7QUFDMUgseUlBQXlJO0FBQ3pJLHdHQUF3RztBQUN4Ryx1R0FBdUc7QUFDdkcsd0dBQXdHO0FBQ3hHLHVHQUF1RztBQUV2RyxrSEFBa0g7QUFDbEgsaUlBQWlJO0FBQ2pJLHVIQUF1SDtBQUN2SCxzSEFBc0giLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqID09PT09PT09PT09PT09PT09PT09PT0gSGVscGVyczogdW53cmFwICYgc2hhcGUgPT09PT09PT09PT09PT09PT09PT09PSAqKi9cblxuLy8gVW53cmFwIG3hu5l0IGzhu5twIFNpZ25hbFxudHlwZSBVbndyYXBTaWduYWw8VD4gPSBUIGV4dGVuZHMgU2lnbmFsPGluZmVyIFU+ID8gVSA6IFQ7XG5cbi8vIFVud3JhcCB0b8OgbiBi4buZIFNpZ25hbFxudHlwZSBVbndyYXBBbGxTaWduYWxzPFQ+ID0gVCBleHRlbmRzIFNpZ25hbDxpbmZlciBVPiA/IFVud3JhcEFsbFNpZ25hbHM8VT4gOiBUO1xuXG4vLyBMb+G6oWkgYuG7jyB1bmRlZmluZWQgfCBudWxsIHNhdSBraGkgdW53cmFwIDEgbOG7m3AgU2lnbmFsIMSR4buDIHNvaSBzaGFwZVxudHlwZSBDbGVhbjxUPiA9IEV4Y2x1ZGU8VW53cmFwU2lnbmFsPFQ+LCB1bmRlZmluZWQgfCBudWxsPjtcblxuLy8gS2V5IGThuqFuZyBzdHJpbmdcbnR5cGUgU3RyS2V5czxUPiA9IEV4dHJhY3Q8a2V5b2YgVCwgc3RyaW5nPjtcblxuLy8gQmFzZSB0eXBlIHNhdSBraGkgdW53cmFwIHRvw6BuIGLhu5kgU2lnbmFsICh0aeG7h24gZMO5bmcgbmhp4buBdSBuxqFpKVxudHlwZSBCYXNlPFQ+ID0gVW53cmFwQWxsU2lnbmFsczxUPjtcblxuLyoqID09PT09PT09PT09PT09PT09PT09PT0gQXJyYXkgaGVscGVycyA9PT09PT09PT09PT09PT09PT09PT09ICoqL1xuXG4vLyBM4bqleSBlbGVtZW50IHR5cGUgY+G7p2EgbeG6o25nIHNhdSBraGkgdW53cmFwIHRvw6BuIGLhu5kgU2lnbmFsXG50eXBlIEFycmF5RWxlbWVudFJhdzxUPiA9IEJhc2U8VD4gZXh0ZW5kcyBSZWFkb25seUFycmF5PGluZmVyIFU+ID8gVSA6IEJhc2U8VD4gZXh0ZW5kcyAoaW5mZXIgVSlbXSA/IFUgOiBuZXZlcjtcblxuLy8gS2nhu4NtIHRyYSBhcnJheS1saWtlIHNhdSBraGkgdW53cmFwIHRvw6BuIGLhu5kgU2lnbmFsXG50eXBlIElzQXJyYXlMaWtlPFQ+ID0gQmFzZTxUPiBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXSA/IHRydWUgOiBCYXNlPFQ+IGV4dGVuZHMgdW5rbm93bltdID8gdHJ1ZSA6IGZhbHNlO1xuXG4vLyBLaeG7g20gdHJhIG9iamVjdCBraMO0bmcgcGjhuqNpIGFycmF5IHNhdSBraGkgdW53cmFwIHRvw6BuIGLhu5kgU2lnbmFsXG50eXBlIElzTm9uQXJyYXlPYmplY3Q8VD4gPSBCYXNlPFQ+IGV4dGVuZHMgb2JqZWN0ID8gKEJhc2U8VD4gZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10gPyBmYWxzZSA6IEJhc2U8VD4gZXh0ZW5kcyB1bmtub3duW10gPyBmYWxzZSA6IHRydWUpIDogZmFsc2U7XG5cbi8qKiA9PT09PT09PT09PT09PT09PT09PT09IERPTS9FdnQgZ3VhcmQgPT09PT09PT09PT09PT09PT09PT09PSAqKi9cblxudHlwZSBJc0RPTVR5cGU8VD4gPSBCYXNlPFQ+IGV4dGVuZHMgRXZlbnQgfCBOb2RlIHwgRG9jdW1lbnQgfCBFbGVtZW50IHwgV2luZG93IHwgQ1NTU3R5bGVEZWNsYXJhdGlvbiB8IENTU1J1bGUgfCBDU1NTdHlsZVNoZWV0ID8gdHJ1ZSA6IGZhbHNlO1xuXG4vKiogPT09PT09PT09PT09PT09PT09PT09PSBGaW5hbGl6ZSAoZ2nhu68gU2lnbmFsIG7hur91IGPhuqduKSA9PT09PT09PT09PT09PT09PT09PT09ICoqL1xuXG50eXBlIEZpbmFsaXplPFQsIFIgZXh0ZW5kcyBib29sZWFuPiA9IFIgZXh0ZW5kcyB0cnVlID8gVCA6IFVud3JhcEFsbFNpZ25hbHM8VD47XG5cbi8qKiA9PT09PT09PT09PT09PT09PT09PT09IERlcHRoIGxpbWl0ZXIgKGh5YnJpZCwgbeG6t2MgxJHhu4tuaCA2KSA9PT09PT09PT09PT09PT09PT09PT09ICoqL1xuXG50eXBlIERlYzxOIGV4dGVuZHMgbnVtYmVyPiA9IE4gZXh0ZW5kcyA2ID8gNSA6IE4gZXh0ZW5kcyA1ID8gNCA6IE4gZXh0ZW5kcyA0ID8gMyA6IE4gZXh0ZW5kcyAzID8gMiA6IE4gZXh0ZW5kcyAyID8gMSA6IE4gZXh0ZW5kcyAxID8gMCA6IDA7XG5cbi8qKiA9PT09PT09PT09PT09PT09PT09PT09IFBhdGggYnVpbGRlcnMgKERlcHRoLWxpbWl0ZWQpID09PT09PT09PT09PT09PT09PT09PT0gKiovXG5cbi8vIFBhdGggY2hvIGFycmF5IOG7nyByb290L2ZpZWxkXG50eXBlIFBhdGhGb3JBcnJheTxULCBEZXB0aCBleHRlbmRzIG51bWJlcj4gPSBbRGVwdGhdIGV4dGVuZHMgWzBdID8gbmV2ZXIgOiBgWyR7bnVtYmVyfV1gIHwgKFBhdGhPZjxBcnJheUVsZW1lbnRSYXc8VD4sIERlYzxEZXB0aD4+IGV4dGVuZHMgbmV2ZXIgPyBuZXZlciA6IGBbJHtudW1iZXJ9XS4ke1BhdGhPZjxBcnJheUVsZW1lbnRSYXc8VD4sIERlYzxEZXB0aD4+fWApO1xuXG4vLyBQYXRoIGNobyB04burbmcgcHJvcCBLIHTDuXkga2nhu4N1IGdpw6EgdHLhu4tcbnR5cGUgUGF0aEZvclByb3A8VFByb3AsIEsgZXh0ZW5kcyBzdHJpbmcsIERlcHRoIGV4dGVuZHMgbnVtYmVyPiA9IFtEZXB0aF0gZXh0ZW5kcyBbMF1cbiAgPyBLXG4gIDogSXNBcnJheUxpa2U8VFByb3A+IGV4dGVuZHMgdHJ1ZVxuICAgID8gYCR7S31gIHwgYCR7S31bJHtudW1iZXJ9XWAgfCAoUGF0aE9mPEFycmF5RWxlbWVudFJhdzxUUHJvcD4sIERlYzxEZXB0aD4+IGV4dGVuZHMgbmV2ZXIgPyBuZXZlciA6IGAke0t9WyR7bnVtYmVyfV0uJHtQYXRoT2Y8QXJyYXlFbGVtZW50UmF3PFRQcm9wPiwgRGVjPERlcHRoPj59YClcbiAgICA6IElzTm9uQXJyYXlPYmplY3Q8VFByb3A+IGV4dGVuZHMgdHJ1ZVxuICAgICAgPyBgJHtLfWAgfCAoUGF0aE9mPENsZWFuPFRQcm9wPiwgRGVjPERlcHRoPj4gZXh0ZW5kcyBuZXZlciA/IG5ldmVyIDogYCR7S30uJHtQYXRoT2Y8Q2xlYW48VFByb3A+LCBEZWM8RGVwdGg+Pn1gKVxuICAgICAgOiBgJHtLfWA7XG5cbi8vIFBhdGggY2hvIG9iamVjdCAobWFwIHThu6tuZyBrZXkpXG50eXBlIFBhdGhGb3JPYmplY3Q8VCwgRGVwdGggZXh0ZW5kcyBudW1iZXI+ID0ge1xuICBbSyBpbiBTdHJLZXlzPFQ+XTogUGF0aEZvclByb3A8VFtLXSwgSywgRGVwdGg+O1xufVtTdHJLZXlzPFQ+XTtcblxuLyoqID09PT09PT09PT09PT09PT09PT09PT0gUHVibGljOiBQYXRoT2YgKGh5YnJpZCwgRGVwdGggbeG6t2MgxJHhu4tuaCA2KSA9PT09PT09PT09PT09PT09PT09PT09ICoqL1xuXG5leHBvcnQgdHlwZSBQYXRoT2Y8VFJhdywgRGVwdGggZXh0ZW5kcyBudW1iZXIgPSA2PiA9XG4gIElzRE9NVHlwZTxUUmF3PiBleHRlbmRzIHRydWVcbiAgICA/IGFueVxuICAgIDogVFJhdyBleHRlbmRzIHVua25vd25cbiAgICAgID8gc3RyaW5nXG4gICAgICA6IFtEZXB0aF0gZXh0ZW5kcyBbMF1cbiAgICAgICAgPyBuZXZlclxuICAgICAgICA6IEJhc2U8VFJhdz4gZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10gfCB1bmtub3duW11cbiAgICAgICAgICA/IFBhdGhGb3JBcnJheTxUUmF3LCBEZXB0aD5cbiAgICAgICAgICA6IEJhc2U8VFJhdz4gZXh0ZW5kcyBvYmplY3RcbiAgICAgICAgICAgID8gUGF0aEZvck9iamVjdDxCYXNlPFRSYXc+LCBEZXB0aD5cbiAgICAgICAgICAgIDogc3RyaW5nO1xuXG4vKiogPT09PT09PT09PT09PT09PT09PT09PSBSZXNvbHZlIGdpw6EgdHLhu4sgdGhlbyBwYXRoID09PT09PT09PT09PT09PT09PT09PT0gKiovXG5cbi8vIEdldEludGVybmFsOiDEkWkgdGhlbyBzdHJpbmcgcGF0aCDEkeG7gyByZXNvbHZlIHR5cGUgZ2nDoSB0cuG7iyBjdeG7kWkgY8O5bmdcbnR5cGUgR2V0SW50ZXJuYWw8VFJhdywgUCBleHRlbmRzIHN0cmluZywgUiBleHRlbmRzIGJvb2xlYW4+ID1cbiAgLy8gW3hdLlJlc3QgKMSRw6FuaCBpbmRleCB2w6BvIHJvb3QgYXJyYXkpXG4gIFAgZXh0ZW5kcyBgWyR7aW5mZXIgSX1dLiR7aW5mZXIgUmVzdH1gXG4gICAgPyBJIGV4dGVuZHMgYCR7bnVtYmVyfWBcbiAgICAgID8gR2V0SW50ZXJuYWw8QXJyYXlFbGVtZW50UmF3PENsZWFuPFRSYXc+PiwgUmVzdCwgUj5cbiAgICAgIDogYW55XG4gICAgOiAvLyBbeF0gKGNo4buJIGluZGV4KVxuICAgICAgUCBleHRlbmRzIGBbJHtpbmZlciBJfV1gXG4gICAgICA/IEkgZXh0ZW5kcyBgJHtudW1iZXJ9YFxuICAgICAgICA/IEZpbmFsaXplPEFycmF5RWxlbWVudFJhdzxDbGVhbjxUUmF3Pj4sIFI+XG4gICAgICAgIDogYW55XG4gICAgICA6IC8vIEtbeF0uUmVzdCAoxJHDoW5oIGluZGV4IHbDoG8gZmllbGQgbeG6o25nKVxuICAgICAgICBQIGV4dGVuZHMgYCR7aW5mZXIgS31bJHtpbmZlciBJfV0uJHtpbmZlciBSZXN0fWBcbiAgICAgICAgPyBLIGV4dGVuZHMgU3RyS2V5czxDbGVhbjxCYXNlPFRSYXc+Pj5cbiAgICAgICAgICA/IEkgZXh0ZW5kcyBgJHtudW1iZXJ9YFxuICAgICAgICAgICAgPyBHZXRJbnRlcm5hbDxBcnJheUVsZW1lbnRSYXc8Q2xlYW48QmFzZTxUUmF3Pj5bS10+LCBSZXN0LCBSPlxuICAgICAgICAgICAgOiBhbnlcbiAgICAgICAgICA6IGFueVxuICAgICAgICA6IC8vIEsuUmVzdCAoxJFpIHPDonUgdsOgbyBvYmplY3QpXG4gICAgICAgICAgUCBleHRlbmRzIGAke2luZmVyIEt9LiR7aW5mZXIgUmVzdH1gXG4gICAgICAgICAgPyBLIGV4dGVuZHMgU3RyS2V5czxDbGVhbjxCYXNlPFRSYXc+Pj5cbiAgICAgICAgICAgID8gSXNBcnJheUxpa2U8Q2xlYW48QmFzZTxUUmF3Pj5bS10+IGV4dGVuZHMgdHJ1ZVxuICAgICAgICAgICAgICA/IGFueSAvLyBraMO0bmcgaOG7lyB0cuG7oyBkb3QgdsOgbyBwaOG6p24gdOG7rSBt4bqjbmcga2hpIHRoaeG6v3UgaW5kZXhcbiAgICAgICAgICAgICAgOiBHZXRJbnRlcm5hbDxDbGVhbjxCYXNlPFRSYXc+PltLXSwgUmVzdCwgUj5cbiAgICAgICAgICAgIDogYW55XG4gICAgICAgICAgOiAvLyBLWzxudW1iZXI+XSAoa+G6v3QgdGjDumMg4bufIGluZGV4KVxuICAgICAgICAgICAgUCBleHRlbmRzIGAke2luZmVyIEt9WyR7aW5mZXIgSX1dYFxuICAgICAgICAgICAgPyBLIGV4dGVuZHMgU3RyS2V5czxDbGVhbjxCYXNlPFRSYXc+Pj5cbiAgICAgICAgICAgICAgPyBJIGV4dGVuZHMgYCR7bnVtYmVyfWBcbiAgICAgICAgICAgICAgICA/IEZpbmFsaXplPEFycmF5RWxlbWVudFJhdzxDbGVhbjxCYXNlPFRSYXc+PltLXT4sIFI+XG4gICAgICAgICAgICAgICAgOiBhbnlcbiAgICAgICAgICAgICAgOiBhbnlcbiAgICAgICAgICAgIDogLy8gSyAoa+G6v3QgdGjDumMg4bufIGtleSlcbiAgICAgICAgICAgICAgUCBleHRlbmRzIGAke2luZmVyIEt9YFxuICAgICAgICAgICAgICA/IEsgZXh0ZW5kcyBTdHJLZXlzPENsZWFuPEJhc2U8VFJhdz4+PlxuICAgICAgICAgICAgICAgID8gRmluYWxpemU8Q2xlYW48QmFzZTxUUmF3Pj5bS10sIFI+XG4gICAgICAgICAgICAgICAgOiBhbnlcbiAgICAgICAgICAgICAgOiBhbnk7XG5cbi8qKiA9PT09PT09PT09PT09PT09PT09PT09IFB1YmxpYzogR2V0VmFsdWVBdFBhdGggJiBHZXRSZXR1cm5UeXBlID09PT09PT09PT09PT09PT09PT09PT0gKiovXG5cbi8vIFJlc29sdmUga2nhu4N1IGdpw6EgdHLhu4sgdOG6oWkgcGF0aCBQLiBO4bq/dSBSPXRydWUsIGdp4buvIG5ndXnDqm4gU2lnbmFsOyBt4bq3YyDEkeG7i25oIFI9ZmFsc2Ugc+G6vSB1bndyYXAgdG/DoG4gYuG7mSBTaWduYWwuXG5leHBvcnQgdHlwZSBHZXRWYWx1ZUF0UGF0aDxUUmF3LCBQIGV4dGVuZHMgUGF0aE9mPFRSYXc+LCBSIGV4dGVuZHMgYm9vbGVhbiA9IGZhbHNlPiA9IEdldEludGVybmFsPFRSYXcsIFAsIFI+O1xuXG4vLyBLaeG7g3UgdHLhuqMgduG7gSBj4bunYSBnZXQoKSBk4buxYSB0csOqbiBkZWZhdWx0VmFsdWUgRFxuZXhwb3J0IHR5cGUgR2V0UmV0dXJuVHlwZTxPLCBQIGV4dGVuZHMgUGF0aE9mPE8+LCBLUyBleHRlbmRzIGJvb2xlYW4sIEQ+ID0gRCBleHRlbmRzIHVuZGVmaW5lZCA/IEdldFZhbHVlQXRQYXRoPE8sIFAsIEtTPiA6IEQ7XG5cbi8qKiA9PT09PT09PT09PT09PT09PT09PT09IChUdeG7syBjaOG7jW4pIFbDrSBk4bulIG5oYW5oID09PT09PT09PT09PT09PT09PT09PT0gKiovXG5cbi8vIGltcG9ydCB7IFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgSUNvbW1lbnQge1xuLy8gICBjb21tZW50cz86IFdyaXRhYmxlU2lnbmFsPElTdWJDb21tZW50Pjtcbi8vIH1cblxuLy8gZXhwb3J0IGludGVyZmFjZSBJU3ViQ29tbWVudCB7XG4vLyAgIHN0b3JlPzogV3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SUNvbW1lbnQ+Pj47XG4vLyAgIGRhdGE/OiBXcml0YWJsZVNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxJQ29tbWVudD4+Pjtcbi8vICAgc3BlY2lmaWNfdGVtcF9kYXRhPzogV3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SUNvbW1lbnQ+Pj47XG4vLyAgIHBhZ2luZz86IFdyaXRhYmxlU2lnbmFsPHtcbi8vICAgICBjdXJzb3JzPzogV3JpdGFibGVTaWduYWw8e1xuLy8gICAgICAgYWZ0ZXI/OiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICAgICAgYmVmb3JlPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgICB9Pjtcbi8vICAgICBiZWZvcmU/OiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICAgIGFmdGVyPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgICBuZXh0PzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgICBwcmV2aW91cz86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgIH0+O1xuLy8gICBzdW1tYXJ5PzogV3JpdGFibGVTaWduYWw8e1xuLy8gICAgIGNhbl9jb21tZW50PzogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj47XG4vLyAgICAgY2Fub3JkZXJfY29tbWVudD86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgICAgdG90YWxfY291bnQ/OiBXcml0YWJsZVNpZ25hbDxudW1iZXI+O1xuLy8gICB9Pjtcbi8vIH1cblxuLy8gdHlwZSBWX2NvbW1lbnRzX0YgPSBHZXRWYWx1ZUF0UGF0aDxJQ29tbWVudCwgJ2NvbW1lbnRzJywgZmFsc2U+OyAvLyBJU3ViQ29tbWVudFxuLy8gdHlwZSBWX2NvbW1lbnRzX1QgPSBHZXRWYWx1ZUF0UGF0aDxJQ29tbWVudCwgJ2NvbW1lbnRzJywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPElTdWJDb21tZW50PlxuXG4vLyB0eXBlIFZfY29tbWVudHNfc3RvcmVfRiA9IEdldFZhbHVlQXRQYXRoPElDb21tZW50LCAnY29tbWVudHMuZGF0YScsIGZhbHNlPjsgLy8gQXJyYXk8V3JpdGFibGVTaWduYWw8SUNvbW1lbnQ+PlxuLy8gdHlwZSBWX2NvbW1lbnRzX3N0b3JlX1QgPSBHZXRWYWx1ZUF0UGF0aDxJQ29tbWVudCwgJ2NvbW1lbnRzLmRhdGEnLCB0cnVlPjsgLy8gV3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SUNvbW1lbnQ+Pj5cblxuLy8gZXhwb3J0IGludGVyZmFjZSBUZXN0IHtcbi8vICAgc3BlY2lmaWNfcXVlcnk/OiBXcml0YWJsZVNpZ25hbDxJQXNzaWdubWVudEl0ZW1RdWVyeT47XG5cbi8vICAgZGF0YTogV3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SUFzc2lnbm1lbnRJdGVtPj4+O1xuXG4vLyAgIGluZGV4OiBudW1iZXI7XG4vLyAgIGluZm86IHtcbi8vICAgICBuYW1lOiBzdHJpbmc7XG4vLyAgICAgYWdlOiBudW1iZXI7XG4vLyAgIH07XG4vLyAgIGNpdHk6IFdyaXRhYmxlU2lnbmFsPHtcbi8vICAgICBuYW1lOiBzdHJpbmc7XG4vLyAgICAgY291bnRyeTogc3RyaW5nO1xuLy8gICB9Pjtcbi8vICAgYWRkcmVzczogV3JpdGFibGVTaWduYWw8e1xuLy8gICAgIGlwOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICAgIHBvcnQ6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj47XG4vLyAgIH0+O1xuLy8gICBvd25lcjogQXJyYXk8c3RyaW5nPjtcbi8vICAgc3VwcG9ydDogQXJyYXk8V3JpdGFibGVTaWduYWw8c3RyaW5nPj47XG4vLyAgIGhvc3Q6IEFycmF5PHtcbi8vICAgICBpcDogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgICBwb3J0OiBudW1iZXI7XG4vLyAgIH0+O1xuXG4vLyAgIGNvdW50cnk6IFdyaXRhYmxlU2lnbmFsPFxuLy8gICAgIEFycmF5PFxuLy8gICAgICAgV3JpdGFibGVTaWduYWw8e1xuLy8gICAgICAgICBuYW1lOiBXcml0YWJsZVNpZ25hbDx7XG4vLyAgICAgICAgICAgdmk6IHN0cmluZztcbi8vICAgICAgICAgICBlbjogc3RyaW5nO1xuLy8gICAgICAgICB9Pjtcbi8vICAgICAgICAgY29kZTogV3JpdGFibGVTaWduYWw8e1xuLy8gICAgICAgICAgIHZpOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICAgICAgICAgIGVuOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICAgICAgICB9Pjtcbi8vICAgICAgICAgZmxhZzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgICAgICAgcGhvbmVfY29kZTogc3RyaW5nO1xuLy8gICAgICAgICBjdXJyZW5jeToge1xuLy8gICAgICAgICAgIG5hbWU6IHN0cmluZztcbi8vICAgICAgICAgICBjb2RlOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICAgICAgICAgIHN5bWJvbDogV3JpdGFibGVTaWduYWw8e1xuLy8gICAgICAgICAgICAgdmk6IHN0cmluZztcbi8vICAgICAgICAgICAgIGVuOiBzdHJpbmc7XG4vLyAgICAgICAgICAgICBjbjogV3JpdGFibGVTaWduYWw8QXJyYXk8c3RyaW5nPj47XG4vLyAgICAgICAgICAgICBqcDogV3JpdGFibGVTaWduYWw8XG4vLyAgICAgICAgICAgICAgIEFycmF5PFxuLy8gICAgICAgICAgICAgICAgIFdyaXRhYmxlU2lnbmFsPHtcbi8vICAgICAgICAgICAgICAgICAgIHZpOiBzdHJpbmc7XG4vLyAgICAgICAgICAgICAgICAgICBlbjogc3RyaW5nO1xuLy8gICAgICAgICAgICAgICAgIH0+XG4vLyAgICAgICAgICAgICAgID5cbi8vICAgICAgICAgICAgID47XG4vLyAgICAgICAgICAgfT47XG4vLyAgICAgICAgIH07XG4vLyAgICAgICB9PlxuLy8gICAgID5cbi8vICAgPjtcbi8vIH1cblxuLy8gaW50ZXJmYWNlIElBc3NpZ25tZW50SXRlbSB7XG4vLyAgIGlkOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICBuYW1lOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICBkZXNjcmlwdGlvbjogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgY3JlYXRlZF9hdDogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgdXBkYXRlZF9hdDogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vIH1cblxuLy8gZXhwb3J0IGludGVyZmFjZSBJQXNzaWdubWVudEl0ZW1RdWVyeSB7XG4vLyAgIHBlcl9wYWdlOiBXcml0YWJsZVNpZ25hbDxudW1iZXI+O1xuLy8gICBhZnRlcl90b2tlbj86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgIGJlZm9yZV90b2tlbj86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgIHNlYXJjaD86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgIHNlYXJjaF9pbmRleD86IFdyaXRhYmxlU2lnbmFsPG51bWJlcj47XG4vLyB9XG5cbi8vIHR5cGUgVl9pbmRleF9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2luZGV4JywgZmFsc2U+OyAvLyBudW1iZXJcbi8vIHR5cGUgVl9pbmRleF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2luZGV4JywgdHJ1ZT47IC8vIG51bWJlclxuXG4vLyB0eXBlIFZfaW5mb19GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2luZm8nLCBmYWxzZT47IC8vIHsgbmFtZTogc3RyaW5nOyBhZ2U6IG51bWJlciB9XG4vLyB0eXBlIFZfaW5mb19UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2luZm8nLCB0cnVlPjsgLy8geyBuYW1lOiBzdHJpbmc7IGFnZTogbnVtYmVyIH1cbi8vIHR5cGUgVl9pbmZvX25hbWVfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdpbmZvLm5hbWUnLCBmYWxzZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX2luZm9fbmFtZV9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2luZm8ubmFtZScsIHRydWU+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9pbmZvX2FnZV9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2luZm8uYWdlJywgZmFsc2U+OyAvLyBudW1iZXJcbi8vIHR5cGUgVl9pbmZvX2FnZV9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2luZm8uYWdlJywgdHJ1ZT47IC8vIG51bWJlclxuXG4vLyAvLyBDaXR5IChzaWduYWwtd3JhcHBlZCBvYmplY3Qgd2l0aCBwbGFpbiBmaWVsZHMpXG4vLyB0eXBlIFZfY2l0eV9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NpdHknLCBmYWxzZT47IC8vIHsgbmFtZTogc3RyaW5nOyBjb3VudHJ5OiBzdHJpbmcgfVxuLy8gdHlwZSBWX2NpdHlfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjaXR5JywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHsgbmFtZTogc3RyaW5nOyBjb3VudHJ5OiBzdHJpbmcgfT5cbi8vIHR5cGUgVl9jaXR5X25hbWVfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjaXR5Lm5hbWUnLCBmYWxzZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX2NpdHlfbmFtZV9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NpdHkubmFtZScsIHRydWU+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9jaXR5X2NvdW50cnlfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjaXR5LmNvdW50cnknLCBmYWxzZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX2NpdHlfY291bnRyeV9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NpdHkuY291bnRyeScsIHRydWU+OyAvLyBzdHJpbmdcblxuLy8gLy8gQWRkcmVzcyAoc2lnbmFsLXdyYXBwZWQgb2JqZWN0IHdpdGggc2lnbmFsIGxlYXZlcylcbi8vIHR5cGUgVl9hZGRyZXNzX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnYWRkcmVzcycsIGZhbHNlPjsgLy8geyBpcDogc3RyaW5nOyBwb3J0OiBudW1iZXIgfVxuLy8gdHlwZSBWX2FkZHJlc3NfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdhZGRyZXNzJywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHsgaXA6IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47IHBvcnQ6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj4gfT5cbi8vIHR5cGUgVl9hZGRyZXNzX2lwX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnYWRkcmVzcy5pcCcsIGZhbHNlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfYWRkcmVzc19pcF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2FkZHJlc3MuaXAnLCB0cnVlPjsgLy8gV3JpdGFibGVTaWduYWw8c3RyaW5nPlxuLy8gdHlwZSBWX2FkZHJlc3NfcG9ydF9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2FkZHJlc3MucG9ydCcsIGZhbHNlPjsgLy8gbnVtYmVyXG4vLyB0eXBlIFZfYWRkcmVzc19wb3J0X1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnYWRkcmVzcy5wb3J0JywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPG51bWJlcj5cblxuLy8gLy8gT3duZXIgKGFycmF5IG9mIHByaW1pdGl2ZXMpXG4vLyB0eXBlIFZfb3duZXJfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdvd25lcicsIGZhbHNlPjsgLy8gc3RyaW5nW11cbi8vIHR5cGUgVl9vd25lcl9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ293bmVyJywgdHJ1ZT47IC8vIHN0cmluZ1tdXG4vLyB0eXBlIFZfb3duZXJfaWR4X0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnb3duZXJbMF0nLCBmYWxzZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX293bmVyX2lkeF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ293bmVyWzBdJywgdHJ1ZT47IC8vIHN0cmluZ1xuXG4vLyAvLyBTdXBwb3J0IChhcnJheSBvZiBzaWduYWxzKVxuLy8gdHlwZSBWX3N1cHBvcnRfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdzdXBwb3J0JywgZmFsc2U+OyAvLyBzdHJpbmdbXVxuLy8gdHlwZSBWX3N1cHBvcnRfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdzdXBwb3J0JywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHN0cmluZz5bXVxuLy8gdHlwZSBWX3N1cHBvcnRfaWR4X0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnc3VwcG9ydFswXScsIGZhbHNlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfc3VwcG9ydF9pZHhfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdzdXBwb3J0WzBdJywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHN0cmluZz5cblxuLy8gLy8gSG9zdCAoYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIG1peGVkIGxlYXZlcylcbi8vIHR5cGUgVl9ob3N0X0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaG9zdCcsIGZhbHNlPjsgLy8geyBpcDogc3RyaW5nOyBwb3J0OiBudW1iZXIgfVtdXG4vLyB0eXBlIFZfaG9zdF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2hvc3QnLCB0cnVlPjsgLy8geyBpcDogV3JpdGFibGVTaWduYWw8c3RyaW5nPjsgcG9ydDogbnVtYmVyIH1bXVxuLy8gdHlwZSBWX2hvc3RfaWR4X0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaG9zdFswXScsIGZhbHNlPjsgLy8geyBpcDogc3RyaW5nOyBwb3J0OiBudW1iZXIgfVxuLy8gdHlwZSBWX2hvc3RfaWR4X1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaG9zdFswXScsIHRydWU+OyAvLyB7IGlwOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+OyBwb3J0OiBudW1iZXIgfVxuLy8gdHlwZSBWX2hvc3RfaXBfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdob3N0WzBdLmlwJywgZmFsc2U+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9ob3N0X2lwX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaG9zdFswXS5pcCcsIHRydWU+OyAvLyBXcml0YWJsZVNpZ25hbDxzdHJpbmc+XG4vLyB0eXBlIFZfaG9zdF9wb3J0X0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaG9zdFswXS5wb3J0JywgZmFsc2U+OyAvLyBudW1iZXJcbi8vIHR5cGUgVl9ob3N0X3BvcnRfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdob3N0WzBdLnBvcnQnLCB0cnVlPjsgLy8gbnVtYmVyXG5cbi8vIC8vIGN1cnJlbmN5XG4vLyB0eXBlIFZfY3VycmVuY3lfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5JywgZmFsc2U+OyAvLyB7IG5hbWU6IHN0cmluZzsgY29kZTogc3RyaW5nOyBzeW1ib2w6IHsgLi4uIH0gfVxuLy8gdHlwZSBWX2N1cnJlbmN5X1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeScsIHRydWU+OyAvLyB7IG5hbWU6IHN0cmluZzsgY29kZTogV3JpdGFibGVTaWduYWw8c3RyaW5nPjsgc3ltYm9sOiBXcml0YWJsZVNpZ25hbDx7IC4uLiB9PiB9XG4vLyB0eXBlIFZfY3VycmVuY3lfbmFtZV9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kubmFtZScsIGZhbHNlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfY3VycmVuY3lfbmFtZV9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kubmFtZScsIHRydWU+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9jdXJyZW5jeV9jb2RlX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5jb2RlJywgZmFsc2U+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9jdXJyZW5jeV9jb2RlX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5jb2RlJywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHN0cmluZz5cblxuLy8gLy8gY3VycmVuY3kuc3ltYm9sXG4vLyB0eXBlIFZfc3ltYm9sX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wnLCBmYWxzZT47IC8vIHsgdmk6IHN0cmluZzsgZW46IHN0cmluZzsgY246IHN0cmluZ1tdOyBqcDogeyB2aTogc3RyaW5nOyBlbjogc3RyaW5nIH1bXSB9XG4vLyB0eXBlIFZfc3ltYm9sX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wnLCB0cnVlPjsgLy8gV3JpdGFibGVTaWduYWw8eyB2aTogc3RyaW5nOyBlbjogc3RyaW5nOyBjbjogV3JpdGFibGVTaWduYWw8c3RyaW5nW10+OyBqcDogV3JpdGFibGVTaWduYWw8eyB2aTogc3RyaW5nOyBlbjogc3RyaW5nIH1bXT4gfT5cbi8vIHR5cGUgVl9zeW1ib2xfdmlfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC52aScsIGZhbHNlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfc3ltYm9sX3ZpX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wudmknLCB0cnVlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfc3ltYm9sX2VuX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuZW4nLCBmYWxzZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX3N5bWJvbF9lbl9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmVuJywgdHJ1ZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX3N5bWJvbF9jbl9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmNuJywgZmFsc2U+OyAvLyBzdHJpbmdbXVxuLy8gdHlwZSBWX3N5bWJvbF9jbl9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmNuJywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHN0cmluZ1tdPlxuLy8gdHlwZSBWX3N5bWJvbF9jbl9pZHhfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC5jblswXScsIGZhbHNlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfc3ltYm9sX2NuX2lkeF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmNuWzBdJywgdHJ1ZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX3N5bWJvbF9qcF9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmpwJywgZmFsc2U+OyAvLyB7IHZpOiBzdHJpbmc7IGVuOiBzdHJpbmcgfVtdXG4vLyB0eXBlIFZfc3ltYm9sX2pwX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuanAnLCB0cnVlPjsgLy8gV3JpdGFibGVTaWduYWw8eyB2aTogc3RyaW5nOyBlbjogc3RyaW5nIH1bXT5cbi8vIHR5cGUgVl9zeW1ib2xfanBfaWR4X0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuanBbMF0nLCBmYWxzZT47IC8vIHsgdmk6IHN0cmluZzsgZW46IHN0cmluZyB9XG4vLyB0eXBlIFZfc3ltYm9sX2pwX2lkeF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmpwWzBdJywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHsgdmk6IHN0cmluZzsgZW46IHN0cmluZyB9PlxuLy8gdHlwZSBWX3N5bWJvbF9qcF92aV9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmpwWzBdLnZpJywgZmFsc2U+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9zeW1ib2xfanBfdmlfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC5qcFswXS52aScsIHRydWU+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9zeW1ib2xfanBfZW5fRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC5qcFswXS5lbicsIGZhbHNlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfc3ltYm9sX2pwX2VuX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuanBbMF0uZW4nLCB0cnVlPjsgLy8gc3RyaW5nXG5cbi8vIHR5cGUgVl9BcnJheV9zeW1ib2xfY25fRiA9IEdldFZhbHVlQXRQYXRoPEFycmF5PFRlc3Q+LCAnWzBdLmNvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmNuJywgZmFsc2U+OyAvLyBzdHJpbmdbXVxuLy8gdHlwZSBWX0FycmF5X3N5bWJvbF9jbl9UID0gR2V0VmFsdWVBdFBhdGg8QXJyYXk8VGVzdD4sICdbMF0uY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuY24nLCB0cnVlPjsgLy8gV3JpdGFibGVTaWduYWw8c3RyaW5nW10+XG4vLyB0eXBlIFZfQXJyYXlfc3ltYm9sX2NuX2lkeF9GID0gR2V0VmFsdWVBdFBhdGg8QXJyYXk8VGVzdD4sICdbMF0uY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuY25bMF0nLCBmYWxzZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX0FycmF5X3N5bWJvbF9jbl9pZHhfVCA9IEdldFZhbHVlQXRQYXRoPEFycmF5PFRlc3Q+LCAnWzBdLmNvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmNuWzBdJywgdHJ1ZT47IC8vIHN0cmluZ1xuIl19
package/esm2022/index.mjs CHANGED
@@ -14,4 +14,5 @@ export * from './paging.interface';
14
14
  export * from './string.interface';
15
15
  export * from './template-ref.interface';
16
16
  export * from './validator.interface';
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL2ludGVyZmFjZXMtdHlwZXMvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hc3BlY3QtcmF0aW8uaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYm91bmRpbmctY2xpZW50LXJlY3QuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbXVuaWNhdGUtbWljcm8udHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2V2ZW50LWJyb3dzZXIuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZXh0cmFjdC1pbnB1dHMudHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZnVuY3Rpb24udHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2dlbmVyaWMtdXRpbGl0aWVzLWZvci1wYXRoLXZhbHVlLnR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9odHRwLXByb2Nlc3MtdXBsb2FkLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2h0dHAtcmVzcG9uc2UuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGFuZ3VhZ2Utc3VwcG9ydC50eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vb2JqZWN0LnR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9wYWdpbmcuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RyaW5nLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL3RlbXBsYXRlLXJlZi5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi92YWxpZGF0b3IuaW50ZXJmYWNlJztcbiJdfQ==
17
+ export * from './date.type';
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzLXVpL2ludGVyZmFjZXMtdHlwZXMvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hc3BlY3QtcmF0aW8uaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYm91bmRpbmctY2xpZW50LXJlY3QuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY29tbXVuaWNhdGUtbWljcm8udHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2V2ZW50LWJyb3dzZXIuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZXh0cmFjdC1pbnB1dHMudHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGUuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZnVuY3Rpb24udHlwZSc7XG5leHBvcnQgKiBmcm9tICcuL2dlbmVyaWMtdXRpbGl0aWVzLWZvci1wYXRoLXZhbHVlLnR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9odHRwLXByb2Nlc3MtdXBsb2FkLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2h0dHAtcmVzcG9uc2UuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGFuZ3VhZ2Utc3VwcG9ydC50eXBlJztcbmV4cG9ydCAqIGZyb20gJy4vb2JqZWN0LnR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9wYWdpbmcuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc3RyaW5nLmludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL3RlbXBsYXRlLXJlZi5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi92YWxpZGF0b3IuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZS50eXBlJztcbiJdfQ==
@@ -1,14 +1,10 @@
1
- import { InputSignal, Signal } from '@angular/core';
2
- type UnwrapInputSignal<T, K extends keyof T> = T[K] extends InputSignal<infer U> ? U : never;
3
- type UnwrapSignals<T> = {
4
- [K in keyof T]: T[K] extends Signal<infer U> ? U : T[K];
5
- };
1
+ import { InputSignal, InputSignalWithTransform, ModelSignal } from '@angular/core';
2
+ type UnwrapInputSignal<T, K extends keyof T> = T[K] extends InputSignal<infer U> | ModelSignal<infer U> | InputSignalWithTransform<any, infer U> ? U : never;
6
3
  type RequiredInputProperties<T> = {
7
- [K in keyof T as T[K] extends InputSignal<infer U> ? (undefined extends U ? never : K) : never]: UnwrapInputSignal<T, K>;
4
+ [K in keyof T as T[K] extends InputSignal<infer U> | ModelSignal<infer U> | InputSignalWithTransform<any, infer U> ? (undefined extends U ? never : K) : never]: UnwrapInputSignal<T, K>;
8
5
  };
9
6
  type OptionalInputProperties<T> = {
10
- [K in keyof T as T[K] extends InputSignal<infer U> ? (undefined extends U ? K : never) : never]?: UnwrapInputSignal<T, K>;
7
+ [K in keyof T as T[K] extends InputSignal<infer U> | ModelSignal<infer U> | InputSignalWithTransform<any, infer U> ? (undefined extends U ? K : never) : never]?: UnwrapInputSignal<T, K>;
11
8
  };
12
- export type ExtractInputs<T> = RequiredInputProperties<T> & OptionalInputProperties<T>;
13
- export type Inputs<T> = Partial<UnwrapSignals<T>> & ExtractInputs<T>;
9
+ export type ExtractInputs<T, R extends boolean = true> = (R extends true ? RequiredInputProperties<T> : Partial<RequiredInputProperties<T>>) & OptionalInputProperties<T>;
14
10
  export {};
@@ -1,5 +1,176 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
 
3
+ /** ====================== (Tuỳ chọn) Ví dụ nhanh ====================== **/
4
+ // import { WritableSignal } from '@angular/core';
5
+ // export interface IComment {
6
+ // comments?: WritableSignal<ISubComment>;
7
+ // }
8
+ // export interface ISubComment {
9
+ // store?: WritableSignal<Array<WritableSignal<IComment>>>;
10
+ // data?: WritableSignal<Array<WritableSignal<IComment>>>;
11
+ // specific_temp_data?: WritableSignal<Array<WritableSignal<IComment>>>;
12
+ // paging?: WritableSignal<{
13
+ // cursors?: WritableSignal<{
14
+ // after?: WritableSignal<string>;
15
+ // before?: WritableSignal<string>;
16
+ // }>;
17
+ // before?: WritableSignal<string>;
18
+ // after?: WritableSignal<string>;
19
+ // next?: WritableSignal<string>;
20
+ // previous?: WritableSignal<string>;
21
+ // }>;
22
+ // summary?: WritableSignal<{
23
+ // can_comment?: WritableSignal<boolean>;
24
+ // canorder_comment?: WritableSignal<string>;
25
+ // total_count?: WritableSignal<number>;
26
+ // }>;
27
+ // }
28
+ // type V_comments_F = GetValueAtPath<IComment, 'comments', false>; // ISubComment
29
+ // type V_comments_T = GetValueAtPath<IComment, 'comments', true>; // WritableSignal<ISubComment>
30
+ // type V_comments_store_F = GetValueAtPath<IComment, 'comments.data', false>; // Array<WritableSignal<IComment>>
31
+ // type V_comments_store_T = GetValueAtPath<IComment, 'comments.data', true>; // WritableSignal<Array<WritableSignal<IComment>>>
32
+ // export interface Test {
33
+ // specific_query?: WritableSignal<IAssignmentItemQuery>;
34
+ // data: WritableSignal<Array<WritableSignal<IAssignmentItem>>>;
35
+ // index: number;
36
+ // info: {
37
+ // name: string;
38
+ // age: number;
39
+ // };
40
+ // city: WritableSignal<{
41
+ // name: string;
42
+ // country: string;
43
+ // }>;
44
+ // address: WritableSignal<{
45
+ // ip: WritableSignal<string>;
46
+ // port: WritableSignal<number>;
47
+ // }>;
48
+ // owner: Array<string>;
49
+ // support: Array<WritableSignal<string>>;
50
+ // host: Array<{
51
+ // ip: WritableSignal<string>;
52
+ // port: number;
53
+ // }>;
54
+ // country: WritableSignal<
55
+ // Array<
56
+ // WritableSignal<{
57
+ // name: WritableSignal<{
58
+ // vi: string;
59
+ // en: string;
60
+ // }>;
61
+ // code: WritableSignal<{
62
+ // vi: WritableSignal<string>;
63
+ // en: WritableSignal<string>;
64
+ // }>;
65
+ // flag: WritableSignal<string>;
66
+ // phone_code: string;
67
+ // currency: {
68
+ // name: string;
69
+ // code: WritableSignal<string>;
70
+ // symbol: WritableSignal<{
71
+ // vi: string;
72
+ // en: string;
73
+ // cn: WritableSignal<Array<string>>;
74
+ // jp: WritableSignal<
75
+ // Array<
76
+ // WritableSignal<{
77
+ // vi: string;
78
+ // en: string;
79
+ // }>
80
+ // >
81
+ // >;
82
+ // }>;
83
+ // };
84
+ // }>
85
+ // >
86
+ // >;
87
+ // }
88
+ // interface IAssignmentItem {
89
+ // id: WritableSignal<string>;
90
+ // name: WritableSignal<string>;
91
+ // description: WritableSignal<string>;
92
+ // created_at: WritableSignal<string>;
93
+ // updated_at: WritableSignal<string>;
94
+ // }
95
+ // export interface IAssignmentItemQuery {
96
+ // per_page: WritableSignal<number>;
97
+ // after_token?: WritableSignal<string>;
98
+ // before_token?: WritableSignal<string>;
99
+ // search?: WritableSignal<string>;
100
+ // search_index?: WritableSignal<number>;
101
+ // }
102
+ // type V_index_F = GetValueAtPath<Test, 'index', false>; // number
103
+ // type V_index_T = GetValueAtPath<Test, 'index', true>; // number
104
+ // type V_info_F = GetValueAtPath<Test, 'info', false>; // { name: string; age: number }
105
+ // type V_info_T = GetValueAtPath<Test, 'info', true>; // { name: string; age: number }
106
+ // type V_info_name_F = GetValueAtPath<Test, 'info.name', false>; // string
107
+ // type V_info_name_T = GetValueAtPath<Test, 'info.name', true>; // string
108
+ // type V_info_age_F = GetValueAtPath<Test, 'info.age', false>; // number
109
+ // type V_info_age_T = GetValueAtPath<Test, 'info.age', true>; // number
110
+ // // City (signal-wrapped object with plain fields)
111
+ // type V_city_F = GetValueAtPath<Test, 'city', false>; // { name: string; country: string }
112
+ // type V_city_T = GetValueAtPath<Test, 'city', true>; // WritableSignal<{ name: string; country: string }>
113
+ // type V_city_name_F = GetValueAtPath<Test, 'city.name', false>; // string
114
+ // type V_city_name_T = GetValueAtPath<Test, 'city.name', true>; // string
115
+ // type V_city_country_F = GetValueAtPath<Test, 'city.country', false>; // string
116
+ // type V_city_country_T = GetValueAtPath<Test, 'city.country', true>; // string
117
+ // // Address (signal-wrapped object with signal leaves)
118
+ // type V_address_F = GetValueAtPath<Test, 'address', false>; // { ip: string; port: number }
119
+ // type V_address_T = GetValueAtPath<Test, 'address', true>; // WritableSignal<{ ip: WritableSignal<string>; port: WritableSignal<number> }>
120
+ // type V_address_ip_F = GetValueAtPath<Test, 'address.ip', false>; // string
121
+ // type V_address_ip_T = GetValueAtPath<Test, 'address.ip', true>; // WritableSignal<string>
122
+ // type V_address_port_F = GetValueAtPath<Test, 'address.port', false>; // number
123
+ // type V_address_port_T = GetValueAtPath<Test, 'address.port', true>; // WritableSignal<number>
124
+ // // Owner (array of primitives)
125
+ // type V_owner_F = GetValueAtPath<Test, 'owner', false>; // string[]
126
+ // type V_owner_T = GetValueAtPath<Test, 'owner', true>; // string[]
127
+ // type V_owner_idx_F = GetValueAtPath<Test, 'owner[0]', false>; // string
128
+ // type V_owner_idx_T = GetValueAtPath<Test, 'owner[0]', true>; // string
129
+ // // Support (array of signals)
130
+ // type V_support_F = GetValueAtPath<Test, 'support', false>; // string[]
131
+ // type V_support_T = GetValueAtPath<Test, 'support', true>; // WritableSignal<string>[]
132
+ // type V_support_idx_F = GetValueAtPath<Test, 'support[0]', false>; // string
133
+ // type V_support_idx_T = GetValueAtPath<Test, 'support[0]', true>; // WritableSignal<string>
134
+ // // Host (array of objects with mixed leaves)
135
+ // type V_host_F = GetValueAtPath<Test, 'host', false>; // { ip: string; port: number }[]
136
+ // type V_host_T = GetValueAtPath<Test, 'host', true>; // { ip: WritableSignal<string>; port: number }[]
137
+ // type V_host_idx_F = GetValueAtPath<Test, 'host[0]', false>; // { ip: string; port: number }
138
+ // type V_host_idx_T = GetValueAtPath<Test, 'host[0]', true>; // { ip: WritableSignal<string>; port: number }
139
+ // type V_host_ip_F = GetValueAtPath<Test, 'host[0].ip', false>; // string
140
+ // type V_host_ip_T = GetValueAtPath<Test, 'host[0].ip', true>; // WritableSignal<string>
141
+ // type V_host_port_F = GetValueAtPath<Test, 'host[0].port', false>; // number
142
+ // type V_host_port_T = GetValueAtPath<Test, 'host[0].port', true>; // number
143
+ // // currency
144
+ // type V_currency_F = GetValueAtPath<Test, 'country[0].currency', false>; // { name: string; code: string; symbol: { ... } }
145
+ // type V_currency_T = GetValueAtPath<Test, 'country[0].currency', true>; // { name: string; code: WritableSignal<string>; symbol: WritableSignal<{ ... }> }
146
+ // type V_currency_name_F = GetValueAtPath<Test, 'country[0].currency.name', false>; // string
147
+ // type V_currency_name_T = GetValueAtPath<Test, 'country[0].currency.name', true>; // string
148
+ // type V_currency_code_F = GetValueAtPath<Test, 'country[0].currency.code', false>; // string
149
+ // type V_currency_code_T = GetValueAtPath<Test, 'country[0].currency.code', true>; // WritableSignal<string>
150
+ // // currency.symbol
151
+ // type V_symbol_F = GetValueAtPath<Test, 'country[0].currency.symbol', false>; // { vi: string; en: string; cn: string[]; jp: { vi: string; en: string }[] }
152
+ // type V_symbol_T = GetValueAtPath<Test, 'country[0].currency.symbol', true>; // WritableSignal<{ vi: string; en: string; cn: WritableSignal<string[]>; jp: WritableSignal<{ vi: string; en: string }[]> }>
153
+ // type V_symbol_vi_F = GetValueAtPath<Test, 'country[0].currency.symbol.vi', false>; // string
154
+ // type V_symbol_vi_T = GetValueAtPath<Test, 'country[0].currency.symbol.vi', true>; // string
155
+ // type V_symbol_en_F = GetValueAtPath<Test, 'country[0].currency.symbol.en', false>; // string
156
+ // type V_symbol_en_T = GetValueAtPath<Test, 'country[0].currency.symbol.en', true>; // string
157
+ // type V_symbol_cn_F = GetValueAtPath<Test, 'country[0].currency.symbol.cn', false>; // string[]
158
+ // type V_symbol_cn_T = GetValueAtPath<Test, 'country[0].currency.symbol.cn', true>; // WritableSignal<string[]>
159
+ // type V_symbol_cn_idx_F = GetValueAtPath<Test, 'country[0].currency.symbol.cn[0]', false>; // string
160
+ // type V_symbol_cn_idx_T = GetValueAtPath<Test, 'country[0].currency.symbol.cn[0]', true>; // string
161
+ // type V_symbol_jp_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp', false>; // { vi: string; en: string }[]
162
+ // type V_symbol_jp_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp', true>; // WritableSignal<{ vi: string; en: string }[]>
163
+ // type V_symbol_jp_idx_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0]', false>; // { vi: string; en: string }
164
+ // type V_symbol_jp_idx_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0]', true>; // WritableSignal<{ vi: string; en: string }>
165
+ // type V_symbol_jp_vi_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].vi', false>; // string
166
+ // type V_symbol_jp_vi_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].vi', true>; // string
167
+ // type V_symbol_jp_en_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].en', false>; // string
168
+ // type V_symbol_jp_en_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].en', true>; // string
169
+ // type V_Array_symbol_cn_F = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn', false>; // string[]
170
+ // type V_Array_symbol_cn_T = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn', true>; // WritableSignal<string[]>
171
+ // type V_Array_symbol_cn_idx_F = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn[0]', false>; // string
172
+ // type V_Array_symbol_cn_idx_T = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn[0]', true>; // string
173
+
3
174
  // | "fr" // Tiếng Pháp
4
175
  // | "de" // Tiếng Đức
5
176
  // | "es" // Tiếng Tây Ban Nha
@@ -1 +1 @@
1
- {"version":3,"file":"libs-ui-interfaces-types.mjs","sources":["../../../../libs-ui/interfaces-types/src/event-browser.interface.ts","../../../../libs-ui/interfaces-types/src/language-support.type.ts","../../../../libs-ui/interfaces-types/src/libs-ui-interfaces-types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport interface IEvent extends Event, MouseEvent, IEventCustom, KeyboardEvent, ErrorEvent {\n target: IEventTarget;\n keyCode: number;\n dataTransfer?: DataTransfer;\n clipboardData?: DataTransfer;\n which: number;\n}\n\nexport interface IEventTarget extends EventTarget {\n value: any;\n selectionStart: number;\n scrollHeight: number;\n scrollTop: number;\n offsetHeight: number;\n style: any;\n files?: any;\n src?: string;\n innerHTML: any;\n textContent: string;\n parentElement: any;\n getAttribute: (key: string) => any;\n setAttribute: (key: string, value: any) => void;\n className: string;\n}\nexport interface IEventCustom {\n target: IEventTarget;\n data: any;\n keyCode?: number;\n fakeEvent?: boolean;\n which?: number;\n inputType?: 'deleteContentBackward' | 'insertText' | 'insertFromPaste' | 'insertCompositionText';\n preventDefault: () => void;\n}\n","export type TYPE_LANGUAGE_SUPPORT =\n | 'vi' // Tiếng Việt\n | 'en'; // Tiếng Anh\n// | \"fr\" // Tiếng Pháp\n// | \"de\" // Tiếng Đức\n// | \"es\" // Tiếng Tây Ban Nha\n// | \"zh\" // Tiếng Trung (Giản thể)\n// | \"zh-TW\" // Tiếng Trung (Phồn thể)\n// | \"ja\" // Tiếng Nhật\n// | \"ko\" // Tiếng Hàn\n// | \"ru\" // Tiếng Nga\n// | \"it\" // Tiếng Ý\n// | \"pt\" // Tiếng Bồ Đào Nha\n// | \"th\" // Tiếng Thái\n// | \"id\" // Tiếng Indonesia\n// | \"ms\" // Tiếng Malaysia\n// | \"ar\" // Tiếng Ả Rập\n// | \"hi\" // Tiếng Hindi\n// | \"bn\" // Tiếng Bengal\n// | \"tr\" // Tiếng Thổ Nhĩ Kỳ\n// | \"nl\" // Tiếng Hà Lan\n// | \"km\" // Tiếng Khmer (Campuchia)\n// | \"lo\" // Tiếng Lào\n// | \"my\" // Tiếng Miến Điện (Myanmar)\n// | \"tl\" // Tiếng Tagalog (Philippines)\n// | \"ceb\" // Tiếng Cebuano (Philippines)\n// | \"jv\" // Tiếng Java (Indonesia)\n// | \"su\"; // Tiếng Sundanese (Indonesia)\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;;ACGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;;AAEG"}
1
+ {"version":3,"file":"libs-ui-interfaces-types.mjs","sources":["../../../../libs-ui/interfaces-types/src/event-browser.interface.ts","../../../../libs-ui/interfaces-types/src/generic-utilities-for-path-value.type.ts","../../../../libs-ui/interfaces-types/src/language-support.type.ts","../../../../libs-ui/interfaces-types/src/libs-ui-interfaces-types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport interface IEvent extends Event, MouseEvent, IEventCustom, KeyboardEvent, ErrorEvent {\n target: IEventTarget;\n keyCode: number;\n dataTransfer?: DataTransfer;\n clipboardData?: DataTransfer;\n which: number;\n}\n\nexport interface IEventTarget extends EventTarget {\n value: any;\n selectionStart: number;\n scrollHeight: number;\n scrollTop: number;\n offsetHeight: number;\n style: any;\n files?: any;\n src?: string;\n innerHTML: any;\n textContent: string;\n parentElement: any;\n getAttribute: (key: string) => any;\n setAttribute: (key: string, value: any) => void;\n className: string;\n}\nexport interface IEventCustom {\n target: IEventTarget;\n data: any;\n keyCode?: number;\n fakeEvent?: boolean;\n which?: number;\n inputType?: 'deleteContentBackward' | 'insertText' | 'insertFromPaste' | 'insertCompositionText';\n preventDefault: () => void;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Signal } from '@angular/core';\n\n/** ====================== Helpers: unwrap & shape ====================== **/\n\n// Unwrap một lớp Signal\ntype UnwrapSignal<T> = T extends Signal<infer U> ? U : T;\n\n// Unwrap toàn bộ Signal\ntype UnwrapAllSignals<T> = T extends Signal<infer U> ? UnwrapAllSignals<U> : T;\n\n// Loại bỏ undefined | null sau khi unwrap 1 lớp Signal để soi shape\ntype Clean<T> = Exclude<UnwrapSignal<T>, undefined | null>;\n\n// Key dạng string\ntype StrKeys<T> = Extract<keyof T, string>;\n\n// Base type sau khi unwrap toàn bộ Signal (tiện dùng nhiều nơi)\ntype Base<T> = UnwrapAllSignals<T>;\n\n/** ====================== Array helpers ====================== **/\n\n// Lấy element type của mảng sau khi unwrap toàn bộ Signal\ntype ArrayElementRaw<T> = Base<T> extends ReadonlyArray<infer U> ? U : Base<T> extends (infer U)[] ? U : never;\n\n// Kiểm tra array-like sau khi unwrap toàn bộ Signal\ntype IsArrayLike<T> = Base<T> extends readonly unknown[] ? true : Base<T> extends unknown[] ? true : false;\n\n// Kiểm tra object không phải array sau khi unwrap toàn bộ Signal\ntype IsNonArrayObject<T> = Base<T> extends object ? (Base<T> extends readonly unknown[] ? false : Base<T> extends unknown[] ? false : true) : false;\n\n/** ====================== DOM/Evt guard ====================== **/\n\ntype IsDOMType<T> = Base<T> extends Event | Node | Document | Element | Window | CSSStyleDeclaration | CSSRule | CSSStyleSheet ? true : false;\n\n/** ====================== Finalize (giữ Signal nếu cần) ====================== **/\n\ntype Finalize<T, R extends boolean> = R extends true ? T : UnwrapAllSignals<T>;\n\n/** ====================== Depth limiter (hybrid, mặc định 6) ====================== **/\n\ntype Dec<N extends number> = N extends 6 ? 5 : N extends 5 ? 4 : N extends 4 ? 3 : N extends 3 ? 2 : N extends 2 ? 1 : N extends 1 ? 0 : 0;\n\n/** ====================== Path builders (Depth-limited) ====================== **/\n\n// Path cho array ở root/field\ntype PathForArray<T, Depth extends number> = [Depth] extends [0] ? never : `[${number}]` | (PathOf<ArrayElementRaw<T>, Dec<Depth>> extends never ? never : `[${number}].${PathOf<ArrayElementRaw<T>, Dec<Depth>>}`);\n\n// Path cho từng prop K tùy kiểu giá trị\ntype PathForProp<TProp, K extends string, Depth extends number> = [Depth] extends [0]\n ? K\n : IsArrayLike<TProp> extends true\n ? `${K}` | `${K}[${number}]` | (PathOf<ArrayElementRaw<TProp>, Dec<Depth>> extends never ? never : `${K}[${number}].${PathOf<ArrayElementRaw<TProp>, Dec<Depth>>}`)\n : IsNonArrayObject<TProp> extends true\n ? `${K}` | (PathOf<Clean<TProp>, Dec<Depth>> extends never ? never : `${K}.${PathOf<Clean<TProp>, Dec<Depth>>}`)\n : `${K}`;\n\n// Path cho object (map từng key)\ntype PathForObject<T, Depth extends number> = {\n [K in StrKeys<T>]: PathForProp<T[K], K, Depth>;\n}[StrKeys<T>];\n\n/** ====================== Public: PathOf (hybrid, Depth mặc định 6) ====================== **/\n\nexport type PathOf<TRaw, Depth extends number = 6> =\n IsDOMType<TRaw> extends true\n ? any\n : TRaw extends unknown\n ? string\n : [Depth] extends [0]\n ? never\n : Base<TRaw> extends readonly unknown[] | unknown[]\n ? PathForArray<TRaw, Depth>\n : Base<TRaw> extends object\n ? PathForObject<Base<TRaw>, Depth>\n : string;\n\n/** ====================== Resolve giá trị theo path ====================== **/\n\n// GetInternal: đi theo string path để resolve type giá trị cuối cùng\ntype GetInternal<TRaw, P extends string, R extends boolean> =\n // [x].Rest (đánh index vào root array)\n P extends `[${infer I}].${infer Rest}`\n ? I extends `${number}`\n ? GetInternal<ArrayElementRaw<Clean<TRaw>>, Rest, R>\n : any\n : // [x] (chỉ index)\n P extends `[${infer I}]`\n ? I extends `${number}`\n ? Finalize<ArrayElementRaw<Clean<TRaw>>, R>\n : any\n : // K[x].Rest (đánh index vào field mảng)\n P extends `${infer K}[${infer I}].${infer Rest}`\n ? K extends StrKeys<Clean<Base<TRaw>>>\n ? I extends `${number}`\n ? GetInternal<ArrayElementRaw<Clean<Base<TRaw>>[K]>, Rest, R>\n : any\n : any\n : // K.Rest (đi sâu vào object)\n P extends `${infer K}.${infer Rest}`\n ? K extends StrKeys<Clean<Base<TRaw>>>\n ? IsArrayLike<Clean<Base<TRaw>>[K]> extends true\n ? any // không hỗ trợ dot vào phần tử mảng khi thiếu index\n : GetInternal<Clean<Base<TRaw>>[K], Rest, R>\n : any\n : // K[<number>] (kết thúc ở index)\n P extends `${infer K}[${infer I}]`\n ? K extends StrKeys<Clean<Base<TRaw>>>\n ? I extends `${number}`\n ? Finalize<ArrayElementRaw<Clean<Base<TRaw>>[K]>, R>\n : any\n : any\n : // K (kết thúc ở key)\n P extends `${infer K}`\n ? K extends StrKeys<Clean<Base<TRaw>>>\n ? Finalize<Clean<Base<TRaw>>[K], R>\n : any\n : any;\n\n/** ====================== Public: GetValueAtPath & GetReturnType ====================== **/\n\n// Resolve kiểu giá trị tại path P. Nếu R=true, giữ nguyên Signal; mặc định R=false sẽ unwrap toàn bộ Signal.\nexport type GetValueAtPath<TRaw, P extends PathOf<TRaw>, R extends boolean = false> = GetInternal<TRaw, P, R>;\n\n// Kiểu trả về của get() dựa trên defaultValue D\nexport type GetReturnType<O, P extends PathOf<O>, KS extends boolean, D> = D extends undefined ? GetValueAtPath<O, P, KS> : D;\n\n/** ====================== (Tuỳ chọn) Ví dụ nhanh ====================== **/\n\n// import { WritableSignal } from '@angular/core';\n\n// export interface IComment {\n// comments?: WritableSignal<ISubComment>;\n// }\n\n// export interface ISubComment {\n// store?: WritableSignal<Array<WritableSignal<IComment>>>;\n// data?: WritableSignal<Array<WritableSignal<IComment>>>;\n// specific_temp_data?: WritableSignal<Array<WritableSignal<IComment>>>;\n// paging?: WritableSignal<{\n// cursors?: WritableSignal<{\n// after?: WritableSignal<string>;\n// before?: WritableSignal<string>;\n// }>;\n// before?: WritableSignal<string>;\n// after?: WritableSignal<string>;\n// next?: WritableSignal<string>;\n// previous?: WritableSignal<string>;\n// }>;\n// summary?: WritableSignal<{\n// can_comment?: WritableSignal<boolean>;\n// canorder_comment?: WritableSignal<string>;\n// total_count?: WritableSignal<number>;\n// }>;\n// }\n\n// type V_comments_F = GetValueAtPath<IComment, 'comments', false>; // ISubComment\n// type V_comments_T = GetValueAtPath<IComment, 'comments', true>; // WritableSignal<ISubComment>\n\n// type V_comments_store_F = GetValueAtPath<IComment, 'comments.data', false>; // Array<WritableSignal<IComment>>\n// type V_comments_store_T = GetValueAtPath<IComment, 'comments.data', true>; // WritableSignal<Array<WritableSignal<IComment>>>\n\n// export interface Test {\n// specific_query?: WritableSignal<IAssignmentItemQuery>;\n\n// data: WritableSignal<Array<WritableSignal<IAssignmentItem>>>;\n\n// index: number;\n// info: {\n// name: string;\n// age: number;\n// };\n// city: WritableSignal<{\n// name: string;\n// country: string;\n// }>;\n// address: WritableSignal<{\n// ip: WritableSignal<string>;\n// port: WritableSignal<number>;\n// }>;\n// owner: Array<string>;\n// support: Array<WritableSignal<string>>;\n// host: Array<{\n// ip: WritableSignal<string>;\n// port: number;\n// }>;\n\n// country: WritableSignal<\n// Array<\n// WritableSignal<{\n// name: WritableSignal<{\n// vi: string;\n// en: string;\n// }>;\n// code: WritableSignal<{\n// vi: WritableSignal<string>;\n// en: WritableSignal<string>;\n// }>;\n// flag: WritableSignal<string>;\n// phone_code: string;\n// currency: {\n// name: string;\n// code: WritableSignal<string>;\n// symbol: WritableSignal<{\n// vi: string;\n// en: string;\n// cn: WritableSignal<Array<string>>;\n// jp: WritableSignal<\n// Array<\n// WritableSignal<{\n// vi: string;\n// en: string;\n// }>\n// >\n// >;\n// }>;\n// };\n// }>\n// >\n// >;\n// }\n\n// interface IAssignmentItem {\n// id: WritableSignal<string>;\n// name: WritableSignal<string>;\n// description: WritableSignal<string>;\n// created_at: WritableSignal<string>;\n// updated_at: WritableSignal<string>;\n// }\n\n// export interface IAssignmentItemQuery {\n// per_page: WritableSignal<number>;\n// after_token?: WritableSignal<string>;\n// before_token?: WritableSignal<string>;\n// search?: WritableSignal<string>;\n// search_index?: WritableSignal<number>;\n// }\n\n// type V_index_F = GetValueAtPath<Test, 'index', false>; // number\n// type V_index_T = GetValueAtPath<Test, 'index', true>; // number\n\n// type V_info_F = GetValueAtPath<Test, 'info', false>; // { name: string; age: number }\n// type V_info_T = GetValueAtPath<Test, 'info', true>; // { name: string; age: number }\n// type V_info_name_F = GetValueAtPath<Test, 'info.name', false>; // string\n// type V_info_name_T = GetValueAtPath<Test, 'info.name', true>; // string\n// type V_info_age_F = GetValueAtPath<Test, 'info.age', false>; // number\n// type V_info_age_T = GetValueAtPath<Test, 'info.age', true>; // number\n\n// // City (signal-wrapped object with plain fields)\n// type V_city_F = GetValueAtPath<Test, 'city', false>; // { name: string; country: string }\n// type V_city_T = GetValueAtPath<Test, 'city', true>; // WritableSignal<{ name: string; country: string }>\n// type V_city_name_F = GetValueAtPath<Test, 'city.name', false>; // string\n// type V_city_name_T = GetValueAtPath<Test, 'city.name', true>; // string\n// type V_city_country_F = GetValueAtPath<Test, 'city.country', false>; // string\n// type V_city_country_T = GetValueAtPath<Test, 'city.country', true>; // string\n\n// // Address (signal-wrapped object with signal leaves)\n// type V_address_F = GetValueAtPath<Test, 'address', false>; // { ip: string; port: number }\n// type V_address_T = GetValueAtPath<Test, 'address', true>; // WritableSignal<{ ip: WritableSignal<string>; port: WritableSignal<number> }>\n// type V_address_ip_F = GetValueAtPath<Test, 'address.ip', false>; // string\n// type V_address_ip_T = GetValueAtPath<Test, 'address.ip', true>; // WritableSignal<string>\n// type V_address_port_F = GetValueAtPath<Test, 'address.port', false>; // number\n// type V_address_port_T = GetValueAtPath<Test, 'address.port', true>; // WritableSignal<number>\n\n// // Owner (array of primitives)\n// type V_owner_F = GetValueAtPath<Test, 'owner', false>; // string[]\n// type V_owner_T = GetValueAtPath<Test, 'owner', true>; // string[]\n// type V_owner_idx_F = GetValueAtPath<Test, 'owner[0]', false>; // string\n// type V_owner_idx_T = GetValueAtPath<Test, 'owner[0]', true>; // string\n\n// // Support (array of signals)\n// type V_support_F = GetValueAtPath<Test, 'support', false>; // string[]\n// type V_support_T = GetValueAtPath<Test, 'support', true>; // WritableSignal<string>[]\n// type V_support_idx_F = GetValueAtPath<Test, 'support[0]', false>; // string\n// type V_support_idx_T = GetValueAtPath<Test, 'support[0]', true>; // WritableSignal<string>\n\n// // Host (array of objects with mixed leaves)\n// type V_host_F = GetValueAtPath<Test, 'host', false>; // { ip: string; port: number }[]\n// type V_host_T = GetValueAtPath<Test, 'host', true>; // { ip: WritableSignal<string>; port: number }[]\n// type V_host_idx_F = GetValueAtPath<Test, 'host[0]', false>; // { ip: string; port: number }\n// type V_host_idx_T = GetValueAtPath<Test, 'host[0]', true>; // { ip: WritableSignal<string>; port: number }\n// type V_host_ip_F = GetValueAtPath<Test, 'host[0].ip', false>; // string\n// type V_host_ip_T = GetValueAtPath<Test, 'host[0].ip', true>; // WritableSignal<string>\n// type V_host_port_F = GetValueAtPath<Test, 'host[0].port', false>; // number\n// type V_host_port_T = GetValueAtPath<Test, 'host[0].port', true>; // number\n\n// // currency\n// type V_currency_F = GetValueAtPath<Test, 'country[0].currency', false>; // { name: string; code: string; symbol: { ... } }\n// type V_currency_T = GetValueAtPath<Test, 'country[0].currency', true>; // { name: string; code: WritableSignal<string>; symbol: WritableSignal<{ ... }> }\n// type V_currency_name_F = GetValueAtPath<Test, 'country[0].currency.name', false>; // string\n// type V_currency_name_T = GetValueAtPath<Test, 'country[0].currency.name', true>; // string\n// type V_currency_code_F = GetValueAtPath<Test, 'country[0].currency.code', false>; // string\n// type V_currency_code_T = GetValueAtPath<Test, 'country[0].currency.code', true>; // WritableSignal<string>\n\n// // currency.symbol\n// type V_symbol_F = GetValueAtPath<Test, 'country[0].currency.symbol', false>; // { vi: string; en: string; cn: string[]; jp: { vi: string; en: string }[] }\n// type V_symbol_T = GetValueAtPath<Test, 'country[0].currency.symbol', true>; // WritableSignal<{ vi: string; en: string; cn: WritableSignal<string[]>; jp: WritableSignal<{ vi: string; en: string }[]> }>\n// type V_symbol_vi_F = GetValueAtPath<Test, 'country[0].currency.symbol.vi', false>; // string\n// type V_symbol_vi_T = GetValueAtPath<Test, 'country[0].currency.symbol.vi', true>; // string\n// type V_symbol_en_F = GetValueAtPath<Test, 'country[0].currency.symbol.en', false>; // string\n// type V_symbol_en_T = GetValueAtPath<Test, 'country[0].currency.symbol.en', true>; // string\n// type V_symbol_cn_F = GetValueAtPath<Test, 'country[0].currency.symbol.cn', false>; // string[]\n// type V_symbol_cn_T = GetValueAtPath<Test, 'country[0].currency.symbol.cn', true>; // WritableSignal<string[]>\n// type V_symbol_cn_idx_F = GetValueAtPath<Test, 'country[0].currency.symbol.cn[0]', false>; // string\n// type V_symbol_cn_idx_T = GetValueAtPath<Test, 'country[0].currency.symbol.cn[0]', true>; // string\n// type V_symbol_jp_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp', false>; // { vi: string; en: string }[]\n// type V_symbol_jp_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp', true>; // WritableSignal<{ vi: string; en: string }[]>\n// type V_symbol_jp_idx_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0]', false>; // { vi: string; en: string }\n// type V_symbol_jp_idx_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0]', true>; // WritableSignal<{ vi: string; en: string }>\n// type V_symbol_jp_vi_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].vi', false>; // string\n// type V_symbol_jp_vi_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].vi', true>; // string\n// type V_symbol_jp_en_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].en', false>; // string\n// type V_symbol_jp_en_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].en', true>; // string\n\n// type V_Array_symbol_cn_F = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn', false>; // string[]\n// type V_Array_symbol_cn_T = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn', true>; // WritableSignal<string[]>\n// type V_Array_symbol_cn_idx_F = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn[0]', false>; // string\n// type V_Array_symbol_cn_idx_T = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn[0]', true>; // string\n","export type TYPE_LANGUAGE_SUPPORT =\n | 'vi' // Tiếng Việt\n | 'en'; // Tiếng Anh\n// | \"fr\" // Tiếng Pháp\n// | \"de\" // Tiếng Đức\n// | \"es\" // Tiếng Tây Ban Nha\n// | \"zh\" // Tiếng Trung (Giản thể)\n// | \"zh-TW\" // Tiếng Trung (Phồn thể)\n// | \"ja\" // Tiếng Nhật\n// | \"ko\" // Tiếng Hàn\n// | \"ru\" // Tiếng Nga\n// | \"it\" // Tiếng Ý\n// | \"pt\" // Tiếng Bồ Đào Nha\n// | \"th\" // Tiếng Thái\n// | \"id\" // Tiếng Indonesia\n// | \"ms\" // Tiếng Malaysia\n// | \"ar\" // Tiếng Ả Rập\n// | \"hi\" // Tiếng Hindi\n// | \"bn\" // Tiếng Bengal\n// | \"tr\" // Tiếng Thổ Nhĩ Kỳ\n// | \"nl\" // Tiếng Hà Lan\n// | \"km\" // Tiếng Khmer (Campuchia)\n// | \"lo\" // Tiếng Lào\n// | \"my\" // Tiếng Miến Điện (Myanmar)\n// | \"tl\" // Tiếng Tagalog (Philippines)\n// | \"ceb\" // Tiếng Cebuano (Philippines)\n// | \"jv\" // Tiếng Java (Indonesia)\n// | \"su\"; // Tiếng Sundanese (Indonesia)\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;;AC+HA;AAEA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;AC1TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;;AAEG"}
@@ -1,18 +1,32 @@
1
1
  import { Signal } from '@angular/core';
2
+ /** ====================== Helpers: unwrap & shape ====================== **/
2
3
  type UnwrapSignal<T> = T extends Signal<infer U> ? U : T;
3
4
  type UnwrapAllSignals<T> = T extends Signal<infer U> ? UnwrapAllSignals<U> : T;
4
5
  type Clean<T> = Exclude<UnwrapSignal<T>, undefined | null>;
5
6
  type StrKeys<T> = Extract<keyof T, string>;
6
- type ArrayElementRaw<T> = T extends (infer A)[] ? A : T extends ReadonlyArray<infer B> ? B : T extends Signal<infer U> ? (U extends (infer C)[] ? C : U extends ReadonlyArray<infer D> ? D : any) : any;
7
- type IsArrayLike<T> = Clean<T> extends readonly unknown[] ? true : false;
8
- type IsNonArrayObject<T> = Clean<T> extends object ? (Clean<T> extends readonly unknown[] ? false : true) : false;
7
+ type Base<T> = UnwrapAllSignals<T>;
8
+ /** ====================== Array helpers ====================== **/
9
+ type ArrayElementRaw<T> = Base<T> extends ReadonlyArray<infer U> ? U : Base<T> extends (infer U)[] ? U : never;
10
+ type IsArrayLike<T> = Base<T> extends readonly unknown[] ? true : Base<T> extends unknown[] ? true : false;
11
+ type IsNonArrayObject<T> = Base<T> extends object ? (Base<T> extends readonly unknown[] ? false : Base<T> extends unknown[] ? false : true) : false;
12
+ /** ====================== DOM/Evt guard ====================== **/
13
+ type IsDOMType<T> = Base<T> extends Event | Node | Document | Element | Window | CSSStyleDeclaration | CSSRule | CSSStyleSheet ? true : false;
14
+ /** ====================== Finalize (giữ Signal nếu cần) ====================== **/
9
15
  type Finalize<T, R extends boolean> = R extends true ? T : UnwrapAllSignals<T>;
10
- type PathForProp<PropRaw, K extends string> = IsArrayLike<PropRaw> extends true ? `${K}` | `${K}[${number}]` | (PathOf<ArrayElementRaw<PropRaw>> extends any ? any : `${K}[${number}].${PathOf<ArrayElementRaw<PropRaw>>}`) : IsNonArrayObject<PropRaw> extends true ? `${K}` | (PathOf<Clean<PropRaw>> extends any ? any : `${K}.${PathOf<Clean<PropRaw>>}`) : `${K}`;
11
- type GetInternal<TRaw, P extends string, R extends boolean> = P extends `${infer K}[${infer I}].${infer Rest}` ? K extends StrKeys<Clean<TRaw>> ? I extends `${number}` ? GetInternal<ArrayElementRaw<Clean<TRaw>[K]>, Rest, R> : any : any : P extends `${infer K}.${infer Rest}` ? K extends StrKeys<Clean<TRaw>> ? IsArrayLike<Clean<TRaw>[K]> extends true ? any : GetInternal<Clean<TRaw>[K], Rest, R> : any : P extends `${infer K}[${infer I}]` ? K extends StrKeys<Clean<TRaw>> ? I extends `${number}` ? Finalize<ArrayElementRaw<Clean<TRaw>[K]>, R> : any : any : P extends `${infer K}` ? K extends StrKeys<Clean<TRaw>> ? Finalize<Clean<TRaw>[K], R> : any : any;
12
- type IsDOMType<T> = T extends Event | Node | Document | Element | Window | CSSStyleDeclaration | CSSRule | CSSStyleSheet ? true : false;
13
- export type PathOf<TRaw> = IsDOMType<TRaw> extends true ? any : TRaw extends unknown ? string : Clean<TRaw> extends object ? {
14
- [K in StrKeys<Clean<TRaw>>]: PathForProp<Clean<TRaw>[K], K>;
15
- }[StrKeys<Clean<TRaw>>] : any;
16
+ /** ====================== Depth limiter (hybrid, mặc định 6) ====================== **/
17
+ type Dec<N extends number> = N extends 6 ? 5 : N extends 5 ? 4 : N extends 4 ? 3 : N extends 3 ? 2 : N extends 2 ? 1 : N extends 1 ? 0 : 0;
18
+ /** ====================== Path builders (Depth-limited) ====================== **/
19
+ type PathForArray<T, Depth extends number> = [Depth] extends [0] ? never : `[${number}]` | (PathOf<ArrayElementRaw<T>, Dec<Depth>> extends never ? never : `[${number}].${PathOf<ArrayElementRaw<T>, Dec<Depth>>}`);
20
+ type PathForProp<TProp, K extends string, Depth extends number> = [Depth] extends [0] ? K : IsArrayLike<TProp> extends true ? `${K}` | `${K}[${number}]` | (PathOf<ArrayElementRaw<TProp>, Dec<Depth>> extends never ? never : `${K}[${number}].${PathOf<ArrayElementRaw<TProp>, Dec<Depth>>}`) : IsNonArrayObject<TProp> extends true ? `${K}` | (PathOf<Clean<TProp>, Dec<Depth>> extends never ? never : `${K}.${PathOf<Clean<TProp>, Dec<Depth>>}`) : `${K}`;
21
+ type PathForObject<T, Depth extends number> = {
22
+ [K in StrKeys<T>]: PathForProp<T[K], K, Depth>;
23
+ }[StrKeys<T>];
24
+ /** ====================== Public: PathOf (hybrid, Depth mặc định 6) ====================== **/
25
+ export type PathOf<TRaw, Depth extends number = 6> = IsDOMType<TRaw> extends true ? any : TRaw extends unknown ? string : [Depth] extends [0] ? never : Base<TRaw> extends readonly unknown[] | unknown[] ? PathForArray<TRaw, Depth> : Base<TRaw> extends object ? PathForObject<Base<TRaw>, Depth> : string;
26
+ /** ====================== Resolve giá trị theo path ====================== **/
27
+ type GetInternal<TRaw, P extends string, R extends boolean> = P extends `[${infer I}].${infer Rest}` ? I extends `${number}` ? GetInternal<ArrayElementRaw<Clean<TRaw>>, Rest, R> : any : P extends `[${infer I}]` ? I extends `${number}` ? Finalize<ArrayElementRaw<Clean<TRaw>>, R> : any : P extends `${infer K}[${infer I}].${infer Rest}` ? K extends StrKeys<Clean<Base<TRaw>>> ? I extends `${number}` ? GetInternal<ArrayElementRaw<Clean<Base<TRaw>>[K]>, Rest, R> : any : any : P extends `${infer K}.${infer Rest}` ? K extends StrKeys<Clean<Base<TRaw>>> ? IsArrayLike<Clean<Base<TRaw>>[K]> extends true ? any : GetInternal<Clean<Base<TRaw>>[K], Rest, R> : any : P extends `${infer K}[${infer I}]` ? K extends StrKeys<Clean<Base<TRaw>>> ? I extends `${number}` ? Finalize<ArrayElementRaw<Clean<Base<TRaw>>[K]>, R> : any : any : P extends `${infer K}` ? K extends StrKeys<Clean<Base<TRaw>>> ? Finalize<Clean<Base<TRaw>>[K], R> : any : any;
28
+ /** ====================== Public: GetValueAtPath & GetReturnType ====================== **/
16
29
  export type GetValueAtPath<TRaw, P extends PathOf<TRaw>, R extends boolean = false> = GetInternal<TRaw, P, R>;
17
30
  export type GetReturnType<O, P extends PathOf<O>, KS extends boolean, D> = D extends undefined ? GetValueAtPath<O, P, KS> : D;
18
31
  export {};
32
+ /** ====================== (Tuỳ chọn) Ví dụ nhanh ====================== **/
package/index.d.ts CHANGED
@@ -14,3 +14,4 @@ export * from './paging.interface';
14
14
  export * from './string.interface';
15
15
  export * from './template-ref.interface';
16
16
  export * from './validator.interface';
17
+ export * from './date.type';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libs-ui/interfaces-types",
3
- "version": "0.2.306-5",
3
+ "version": "0.2.306-7",
4
4
  "peerDependencies": {
5
5
  "rxjs": "~7.8.0"
6
6
  },