Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@proscom/ui-utils

Package Overview
Dependencies
Maintainers
1
Versions
22
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@proscom/ui-utils - npm Package Compare versions

Comparing version 0.1.0 to 0.1.1

86

lib/es/helpers/EnumHelpers.d.ts

@@ -13,1 +13,87 @@ export declare type EnumValueInfo = {

};
/**
* Набор утилит для работы с энумами (перечислениями).
* Решает частые задачи, такие как формирование массивов опций для селектов,
* поиск ключа по имени.
*
* @example
* enum RoomType {
* Corridor = 'corridor';
* Class = 'class';
* Restroom = 'restroom';
* }
*
* // Надо явно указать аргументы дженерика, потому что TS (v4.1) недостаточно умён
* const roomType = new EnumHelpers<typeof RoomType, { name: string, order: number }>(
* RoomType,
* {
* [RoomType.Corridor]: { name: 'Коридор', order: 1 },
* [RoomType.Class]: { name: 'Аудитория', order: 2 },
* [RoomType.Restroom]: { name: 'Комната отдыха', order: 3 }
* }
* );
*
* const roomTypes = roomType.getOptions().sort((a,b) => a.order - b.order);
*/
export declare class EnumHelpers<ValueType extends StringEnum, ValueInfo extends EnumValueInfo> {
values: ValueType;
info: {
[key in EnumKey<ValueType>]: ValueInfo;
};
/**
* Конструктор
* @param values - энум (enum), содержащее только ключи
* @param info - дополнительные данные, на каждый ключ энума
* содержит объект, в том числе содержащий имя в поле name
*/
constructor(values: ValueType, info: {
[key in EnumKey<ValueType>]: ValueInfo;
});
/**
* Возвращает массив ключей энума
*/
keys(): EnumKey<ValueType>[];
/**
* Возвращает массив опций энума.
* Подходит для селектов, табов и т.п.
*/
getOptions(): Array<{
label: string;
value: EnumKey<ValueType>;
}>;
/**
* Возвращает массив опций энума.
* Подходит для селектов, табов и т.п.
*
* @field - поле, которое возвращается в качестве label
*/
getOptions<Field extends keyof ValueInfo>(field: Field): Array<{
label: ValueInfo[Field];
value: EnumKey<ValueType>;
}>;
/**
* Возвращает массив опций энума.
* Подходит для селектов, табов и т.п.
*
* @field - поле, которое возвращается в качестве label
* @labelKey - ключ, в который записывается label
* @valueKey - ключ, в который записывается ключ энума
*/
getOptions<Field extends keyof ValueInfo, Label extends string, Value extends string>(field: Field, labelKey: Label, valueKey: Value): Array<Option<ValueInfo[Field], EnumKey<ValueType>, Label, Value>>;
/**
* Возвращает имя по ключу
* @param value - ключ энума
*/
getName(value: EnumKey<ValueType>): string | undefined;
/**
* Возвращает ключ по имени
* @param name - имя
*/
getByName(name: string): EnumKey<ValueType> | undefined;
/**
* Возвращает ключ по произвольному значению
* @param value - имя
* @param field - поле, с которым сравнивается значение
*/
getBy<Field extends keyof ValueInfo>(value: string, field: Field): EnumKey<ValueType> | undefined;
}

21

lib/es/helpers/EnumHelpers.js

@@ -5,2 +5,21 @@ /**

* поиск ключа по имени.
*
* @example
* enum RoomType {
* Corridor = 'corridor';
* Class = 'class';
* Restroom = 'restroom';
* }
*
* // Надо явно указать аргументы дженерика, потому что TS (v4.1) недостаточно умён
* const roomType = new EnumHelpers<typeof RoomType, { name: string, order: number }>(
* RoomType,
* {
* [RoomType.Corridor]: { name: 'Коридор', order: 1 },
* [RoomType.Class]: { name: 'Аудитория', order: 2 },
* [RoomType.Restroom]: { name: 'Комната отдыха', order: 3 }
* }
* );
*
* const roomTypes = roomType.getOptions().sort((a,b) => a.order - b.order);
*/

@@ -82,3 +101,3 @@ var EnumHelpers = /** @class */ (function () {

}());
export {};
export { EnumHelpers };
//# sourceMappingURL=EnumHelpers.js.map

@@ -10,2 +10,12 @@ /**

/**
* Парсит значение из адресной строки
* @param query - значение из адресной строки
*/
export declare function parseQuerySimple<T>(query: T): T | undefined;
/**
* Преобразует значение в строку для записи в адресную строку
* @param data - преобразуемое значение
*/
export declare function stringifyQuerySimple<T>(data: T): string | undefined;
/**
* Парсит массив, сохраненный в адресной строке через запятую

@@ -12,0 +22,0 @@ * @param query - значение из адресной строки

@@ -26,2 +26,16 @@ /**

}
/**
* Парсит значение из адресной строки
* @param query - значение из адресной строки
*/
export function parseQuerySimple(query) {
return query || undefined;
}
/**
* Преобразует значение в строку для записи в адресную строку
* @param data - преобразуемое значение
*/
export function stringifyQuerySimple(data) {
return data ? String(data) : undefined;
}
export function parseQueryArray(query) {

@@ -28,0 +42,0 @@ return query ? query.split(',') : null;

@@ -13,1 +13,87 @@ export declare type EnumValueInfo = {

};
/**
* Набор утилит для работы с энумами (перечислениями).
* Решает частые задачи, такие как формирование массивов опций для селектов,
* поиск ключа по имени.
*
* @example
* enum RoomType {
* Corridor = 'corridor';
* Class = 'class';
* Restroom = 'restroom';
* }
*
* // Надо явно указать аргументы дженерика, потому что TS (v4.1) недостаточно умён
* const roomType = new EnumHelpers<typeof RoomType, { name: string, order: number }>(
* RoomType,
* {
* [RoomType.Corridor]: { name: 'Коридор', order: 1 },
* [RoomType.Class]: { name: 'Аудитория', order: 2 },
* [RoomType.Restroom]: { name: 'Комната отдыха', order: 3 }
* }
* );
*
* const roomTypes = roomType.getOptions().sort((a,b) => a.order - b.order);
*/
export declare class EnumHelpers<ValueType extends StringEnum, ValueInfo extends EnumValueInfo> {
values: ValueType;
info: {
[key in EnumKey<ValueType>]: ValueInfo;
};
/**
* Конструктор
* @param values - энум (enum), содержащее только ключи
* @param info - дополнительные данные, на каждый ключ энума
* содержит объект, в том числе содержащий имя в поле name
*/
constructor(values: ValueType, info: {
[key in EnumKey<ValueType>]: ValueInfo;
});
/**
* Возвращает массив ключей энума
*/
keys(): EnumKey<ValueType>[];
/**
* Возвращает массив опций энума.
* Подходит для селектов, табов и т.п.
*/
getOptions(): Array<{
label: string;
value: EnumKey<ValueType>;
}>;
/**
* Возвращает массив опций энума.
* Подходит для селектов, табов и т.п.
*
* @field - поле, которое возвращается в качестве label
*/
getOptions<Field extends keyof ValueInfo>(field: Field): Array<{
label: ValueInfo[Field];
value: EnumKey<ValueType>;
}>;
/**
* Возвращает массив опций энума.
* Подходит для селектов, табов и т.п.
*
* @field - поле, которое возвращается в качестве label
* @labelKey - ключ, в который записывается label
* @valueKey - ключ, в который записывается ключ энума
*/
getOptions<Field extends keyof ValueInfo, Label extends string, Value extends string>(field: Field, labelKey: Label, valueKey: Value): Array<Option<ValueInfo[Field], EnumKey<ValueType>, Label, Value>>;
/**
* Возвращает имя по ключу
* @param value - ключ энума
*/
getName(value: EnumKey<ValueType>): string | undefined;
/**
* Возвращает ключ по имени
* @param name - имя
*/
getByName(name: string): EnumKey<ValueType> | undefined;
/**
* Возвращает ключ по произвольному значению
* @param value - имя
* @param field - поле, с которым сравнивается значение
*/
getBy<Field extends keyof ValueInfo>(value: string, field: Field): EnumKey<ValueType> | undefined;
}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.EnumHelpers = void 0;
/**

@@ -7,2 +8,21 @@ * Набор утилит для работы с энумами (перечислениями).

* поиск ключа по имени.
*
* @example
* enum RoomType {
* Corridor = 'corridor';
* Class = 'class';
* Restroom = 'restroom';
* }
*
* // Надо явно указать аргументы дженерика, потому что TS (v4.1) недостаточно умён
* const roomType = new EnumHelpers<typeof RoomType, { name: string, order: number }>(
* RoomType,
* {
* [RoomType.Corridor]: { name: 'Коридор', order: 1 },
* [RoomType.Class]: { name: 'Аудитория', order: 2 },
* [RoomType.Restroom]: { name: 'Комната отдыха', order: 3 }
* }
* );
*
* const roomTypes = roomType.getOptions().sort((a,b) => a.order - b.order);
*/

@@ -84,2 +104,3 @@ var EnumHelpers = /** @class */ (function () {

}());
exports.EnumHelpers = EnumHelpers;
//# sourceMappingURL=EnumHelpers.js.map

@@ -10,2 +10,12 @@ /**

/**
* Парсит значение из адресной строки
* @param query - значение из адресной строки
*/
export declare function parseQuerySimple<T>(query: T): T | undefined;
/**
* Преобразует значение в строку для записи в адресную строку
* @param data - преобразуемое значение
*/
export declare function stringifyQuerySimple<T>(data: T): string | undefined;
/**
* Парсит массив, сохраненный в адресной строке через запятую

@@ -12,0 +22,0 @@ * @param query - значение из адресной строки

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.encodeQueryArray = exports.parseQueryArray = exports.getParentUrl = void 0;
exports.encodeQueryArray = exports.parseQueryArray = exports.stringifyQuerySimple = exports.parseQuerySimple = exports.getParentUrl = void 0;
/**

@@ -30,2 +30,18 @@ * Рассчитывает родительский адрес, убирая нужное число элементов справа

exports.getParentUrl = getParentUrl;
/**
* Парсит значение из адресной строки
* @param query - значение из адресной строки
*/
function parseQuerySimple(query) {
return query || undefined;
}
exports.parseQuerySimple = parseQuerySimple;
/**
* Преобразует значение в строку для записи в адресную строку
* @param data - преобразуемое значение
*/
function stringifyQuerySimple(data) {
return data ? String(data) : undefined;
}
exports.stringifyQuerySimple = stringifyQuerySimple;
function parseQueryArray(query) {

@@ -32,0 +48,0 @@ return query ? query.split(',') : null;

4

package.json
{
"name": "@proscom/ui-utils",
"version": "0.1.0",
"version": "0.1.1",
"description": "Proscom UI utilities",

@@ -35,3 +35,3 @@ "author": "Andrew Starostin <a.starostin@proscom.ru>",

},
"gitHead": "7074c048ebb57b3a756bd8577bb270eb73998a66"
"gitHead": "47d95ea14365f12657f3625a55fbd22d81c76d7e"
}

@@ -27,4 +27,23 @@ export type EnumValueInfo = {

* поиск ключа по имени.
*
* @example
* enum RoomType {
* Corridor = 'corridor';
* Class = 'class';
* Restroom = 'restroom';
* }
*
* // Надо явно указать аргументы дженерика, потому что TS (v4.1) недостаточно умён
* const roomType = new EnumHelpers<typeof RoomType, { name: string, order: number }>(
* RoomType,
* {
* [RoomType.Corridor]: { name: 'Коридор', order: 1 },
* [RoomType.Class]: { name: 'Аудитория', order: 2 },
* [RoomType.Restroom]: { name: 'Комната отдыха', order: 3 }
* }
* );
*
* const roomTypes = roomType.getOptions().sort((a,b) => a.order - b.order);
*/
class EnumHelpers<
export class EnumHelpers<
ValueType extends StringEnum,

@@ -31,0 +50,0 @@ ValueInfo extends EnumValueInfo

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc