@poap-xyz/utils
Advanced tools
Comparing version 0.8.0 to 0.8.1
@@ -0,5 +1,12 @@ | ||
/** | ||
* Deep recursive field with `V` final value. | ||
*/ | ||
type Field<V> = { | ||
[key: string]: Field<V> | V; | ||
}; | ||
/** | ||
* Creates a deep recursive object with dot separated keys and a final value. | ||
* For example, `createField<number>('a.b.c', 42)` will return `{ a: { b: { c: 42 } } }`. | ||
*/ | ||
export declare function createField<V>(keys: string, value: V): Field<V>; | ||
export {}; |
@@ -44,4 +44,7 @@ export type Value = string | number | boolean; | ||
}; | ||
/** | ||
* Filter query variables. | ||
*/ | ||
export interface FilterVariables { | ||
where: Filter; | ||
} |
@@ -0,1 +1,4 @@ | ||
/** | ||
* Sorting order. | ||
*/ | ||
export declare enum Order { | ||
@@ -9,4 +12,7 @@ ASC = "asc", | ||
export type OrderBy = FieldOrderBy | Array<FieldOrderBy>; | ||
/** | ||
* Order by query variables. | ||
*/ | ||
export interface OrderByVariables { | ||
orderBy: OrderBy; | ||
} |
@@ -0,13 +1,56 @@ | ||
/** | ||
* Accepted values to paginate. | ||
*/ | ||
export interface PaginationInput { | ||
/** | ||
* How many items to retrieve. | ||
*/ | ||
limit: number; | ||
/** | ||
* Where to start fetching. | ||
*/ | ||
offset: number; | ||
} | ||
/** | ||
* Represents a paginated result. | ||
* | ||
* @class PaginatedResult | ||
* @template T | ||
*/ | ||
export declare class PaginatedResult<T> { | ||
/** | ||
* An array of items in the current page of the result. | ||
* | ||
* @member {T[]} | ||
* @name PaginatedResult#items | ||
*/ | ||
items: T[]; | ||
/** | ||
* The cursor for the next page of the result, or null if there are no more pages. | ||
* | ||
* @member {string|number|null} | ||
* @name PaginatedResult#nextCursor | ||
*/ | ||
nextCursor: string | number | null; | ||
/** | ||
* Creates a new PaginatedResult object. | ||
* | ||
* @constructor | ||
* @param {T[]} items - The items in the current page of the result. | ||
* @param {string|number|null} nextCursor - The cursor for the next page of the result, or null if there are no more pages. | ||
*/ | ||
constructor(items: T[], nextCursor: string | number | null); | ||
} | ||
/** | ||
* Variables pass to queries that do pagination. | ||
*/ | ||
export interface PaginatedVariables { | ||
/** | ||
* When the page results start. | ||
*/ | ||
offset: number; | ||
/** | ||
* How many results to retrieve. | ||
*/ | ||
limit: number; | ||
} |
@@ -0,1 +1,7 @@ | ||
/** | ||
* Checks if a value given to a query filter is defined. | ||
* | ||
* @param {V} value The value to check. | ||
* @returns {boolean} True if the value is defined, false otherwise. | ||
*/ | ||
export declare function isFilterValueDefined<V>(value?: V): value is NonNullable<V>; |
@@ -0,1 +1,8 @@ | ||
/** | ||
* Checks if a value is numeric. | ||
* | ||
* @param {unknown} value The value to check. | ||
* @param {boolean} allowNegative Whether to allow negative numbers. | ||
* @returns {boolean} True if the value is numeric, false otherwise. | ||
*/ | ||
export declare function isNumeric(value: unknown, allowNegative?: boolean): boolean; |
@@ -0,5 +1,12 @@ | ||
/** | ||
* Deep recursive field with `V` final value. | ||
*/ | ||
type Field<V> = { | ||
[key: string]: Field<V> | V; | ||
}; | ||
/** | ||
* Creates a deep recursive object with dot separated keys and a final value. | ||
* For example, `createField<number>('a.b.c', 42)` will return `{ a: { b: { c: 42 } } }`. | ||
*/ | ||
export declare function createField<V>(keys: string, value: V): Field<V>; | ||
export {}; |
@@ -44,4 +44,7 @@ export type Value = string | number | boolean; | ||
}; | ||
/** | ||
* Filter query variables. | ||
*/ | ||
export interface FilterVariables { | ||
where: Filter; | ||
} |
@@ -0,1 +1,4 @@ | ||
/** | ||
* Sorting order. | ||
*/ | ||
export declare enum Order { | ||
@@ -9,4 +12,7 @@ ASC = "asc", | ||
export type OrderBy = FieldOrderBy | Array<FieldOrderBy>; | ||
/** | ||
* Order by query variables. | ||
*/ | ||
export interface OrderByVariables { | ||
orderBy: OrderBy; | ||
} |
@@ -0,13 +1,56 @@ | ||
/** | ||
* Accepted values to paginate. | ||
*/ | ||
export interface PaginationInput { | ||
/** | ||
* How many items to retrieve. | ||
*/ | ||
limit: number; | ||
/** | ||
* Where to start fetching. | ||
*/ | ||
offset: number; | ||
} | ||
/** | ||
* Represents a paginated result. | ||
* | ||
* @class PaginatedResult | ||
* @template T | ||
*/ | ||
export declare class PaginatedResult<T> { | ||
/** | ||
* An array of items in the current page of the result. | ||
* | ||
* @member {T[]} | ||
* @name PaginatedResult#items | ||
*/ | ||
items: T[]; | ||
/** | ||
* The cursor for the next page of the result, or null if there are no more pages. | ||
* | ||
* @member {string|number|null} | ||
* @name PaginatedResult#nextCursor | ||
*/ | ||
nextCursor: string | number | null; | ||
/** | ||
* Creates a new PaginatedResult object. | ||
* | ||
* @constructor | ||
* @param {T[]} items - The items in the current page of the result. | ||
* @param {string|number|null} nextCursor - The cursor for the next page of the result, or null if there are no more pages. | ||
*/ | ||
constructor(items: T[], nextCursor: string | number | null); | ||
} | ||
/** | ||
* Variables pass to queries that do pagination. | ||
*/ | ||
export interface PaginatedVariables { | ||
/** | ||
* When the page results start. | ||
*/ | ||
offset: number; | ||
/** | ||
* How many results to retrieve. | ||
*/ | ||
limit: number; | ||
} |
@@ -0,1 +1,7 @@ | ||
/** | ||
* Checks if a value given to a query filter is defined. | ||
* | ||
* @param {V} value The value to check. | ||
* @returns {boolean} True if the value is defined, false otherwise. | ||
*/ | ||
export declare function isFilterValueDefined<V>(value?: V): value is NonNullable<V>; |
@@ -0,1 +1,8 @@ | ||
/** | ||
* Checks if a value is numeric. | ||
* | ||
* @param {unknown} value The value to check. | ||
* @param {boolean} allowNegative Whether to allow negative numbers. | ||
* @returns {boolean} True if the value is numeric, false otherwise. | ||
*/ | ||
export declare function isNumeric(value: unknown, allowNegative?: boolean): boolean; |
@@ -1,200 +0,1 @@ | ||
(function (global, factory) { | ||
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : | ||
typeof define === 'function' && define.amd ? define(['exports'], factory) : | ||
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["@poap-xyz/utils"] = {})); | ||
})(this, (function (exports) { 'use strict'; | ||
class PaginatedResult { | ||
constructor(items, nextCursor) { | ||
this.items = items; | ||
this.nextCursor = nextCursor; | ||
} | ||
} | ||
exports.Order = void 0; | ||
(function (Order) { | ||
Order["ASC"] = "asc"; | ||
Order["DESC"] = "desc"; | ||
})(exports.Order || (exports.Order = {})); | ||
exports.Chain = void 0; | ||
(function (Chain) { | ||
Chain["Ethereum"] = "mainnet"; | ||
Chain["Gnosis"] = "xdai"; | ||
})(exports.Chain || (exports.Chain = {})); | ||
exports.TransactionRequestStatus = void 0; | ||
(function (TransactionRequestStatus) { | ||
TransactionRequestStatus["PENDING"] = "PENDING"; | ||
TransactionRequestStatus["IN_PROCESS"] = "IN_PROCESS"; | ||
TransactionRequestStatus["FINISH"] = "FINISH"; | ||
TransactionRequestStatus["FINISH_WITH_ERROR"] = "FINISH_WITH_ERROR"; | ||
})(exports.TransactionRequestStatus || (exports.TransactionRequestStatus = {})); | ||
const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'; | ||
const DEAD_ADDRESS = '0x000000000000000000000000000000000000dead'; | ||
function nextCursor(length, limit, offset) { | ||
const endIndex = offset + length; | ||
return endIndex < offset + limit ? null : endIndex; | ||
} | ||
function createField(keys, value) { | ||
return keys.split('.').reduceRight((prev, key) => ({ | ||
[key]: prev, | ||
}), value); | ||
} | ||
function isFilterValueDefined(value) { | ||
if (value == null) { | ||
return false; | ||
} | ||
switch (typeof value) { | ||
case 'boolean': | ||
return true; | ||
case 'number': | ||
return isNumberDefined(value); | ||
case 'object': | ||
return isObjectDefined(value); | ||
default: | ||
return !!value; | ||
} | ||
} | ||
function isNumberDefined(value) { | ||
return !isNaN(value) && value !== 0; | ||
} | ||
function isObjectDefined(value) { | ||
return Object.keys(value).length > 0; | ||
} | ||
function createLikeFilter(key, value) { | ||
return isFilterValueDefined(value) | ||
? createField(key, { _ilike: `%${value}%` }) | ||
: {}; | ||
} | ||
function createEqFilter(key, value) { | ||
return isFilterValueDefined(value) | ||
? createField(key, { _eq: value }) | ||
: {}; | ||
} | ||
function createNeqFilter(key, value) { | ||
return isFilterValueDefined(value) | ||
? createField(key, { _neq: value }) | ||
: {}; | ||
} | ||
function createAddressFilter(key, value) { | ||
return isFilterValueDefined(value) | ||
? createField(key, { _eq: value.toLowerCase() }) | ||
: {}; | ||
} | ||
function createNotNullAddressFilter(key, filterZeroAddress, filterDeadAddress) { | ||
const filteredAddresses = []; | ||
if (filterZeroAddress !== false) { | ||
filteredAddresses.push(ZERO_ADDRESS); | ||
} | ||
if (filterDeadAddress !== false) { | ||
filteredAddresses.push(DEAD_ADDRESS); | ||
} | ||
if (filteredAddresses.length === 0) { | ||
return {}; | ||
} | ||
if (filteredAddresses.length === 1) { | ||
return createField(key, { _neq: filteredAddresses[0] }); | ||
} | ||
return createField(key, { _nin: filteredAddresses }); | ||
} | ||
function createInFilter(key, values) { | ||
return isFilterValueDefined(values) | ||
? createField(key, { _in: values }) | ||
: {}; | ||
} | ||
function createNinFilter(key, values) { | ||
return isFilterValueDefined(values) | ||
? createField(key, { _nin: values }) | ||
: {}; | ||
} | ||
function createLtFilter(key, value) { | ||
return isFilterValueDefined(value) | ||
? createField(key, { _lt: value }) | ||
: {}; | ||
} | ||
function createLteFilter(key, value) { | ||
return isFilterValueDefined(value) | ||
? createField(key, { _lte: value }) | ||
: {}; | ||
} | ||
function createGtFilter(key, value) { | ||
return isFilterValueDefined(value) | ||
? createField(key, { _gt: value }) | ||
: {}; | ||
} | ||
function createGteFilter(key, value) { | ||
return isFilterValueDefined(value) | ||
? createField(key, { _gte: value }) | ||
: {}; | ||
} | ||
function createBetweenFilter(key, from, to) { | ||
const betweenFilter = {}; | ||
const isFromDefined = isFilterValueDefined(from); | ||
const isToDefined = isFilterValueDefined(to); | ||
if (isFromDefined) { | ||
betweenFilter._gte = from; | ||
} | ||
if (isToDefined) { | ||
betweenFilter._lte = to; | ||
} | ||
return isFromDefined || isToDefined | ||
? createField(key, betweenFilter) | ||
: {}; | ||
} | ||
function createIsNullFilter(key, value) { | ||
return createField(key, { _is_null: value }); | ||
} | ||
function createOrderBy(key, value) { | ||
return key && value ? createField(key, value) : {}; | ||
} | ||
function toPOAPDate(date) { | ||
return date | ||
.toLocaleDateString('en-US', { | ||
month: '2-digit', | ||
day: '2-digit', | ||
year: 'numeric', | ||
}) | ||
.replace(/\//g, '-'); | ||
} | ||
function isNumeric(value, allowNegative = false) { | ||
if (typeof value === 'string') { | ||
return (allowNegative ? /^-?\d+$/ : /^\d+$/).test(value); | ||
} | ||
if (typeof value === 'number') { | ||
return true; | ||
} | ||
return false; | ||
} | ||
exports.DEAD_ADDRESS = DEAD_ADDRESS; | ||
exports.PaginatedResult = PaginatedResult; | ||
exports.ZERO_ADDRESS = ZERO_ADDRESS; | ||
exports.createAddressFilter = createAddressFilter; | ||
exports.createBetweenFilter = createBetweenFilter; | ||
exports.createEqFilter = createEqFilter; | ||
exports.createGtFilter = createGtFilter; | ||
exports.createGteFilter = createGteFilter; | ||
exports.createInFilter = createInFilter; | ||
exports.createIsNullFilter = createIsNullFilter; | ||
exports.createLikeFilter = createLikeFilter; | ||
exports.createLtFilter = createLtFilter; | ||
exports.createLteFilter = createLteFilter; | ||
exports.createNeqFilter = createNeqFilter; | ||
exports.createNinFilter = createNinFilter; | ||
exports.createNotNullAddressFilter = createNotNullAddressFilter; | ||
exports.createOrderBy = createOrderBy; | ||
exports.isNumeric = isNumeric; | ||
exports.nextCursor = nextCursor; | ||
exports.toPOAPDate = toPOAPDate; | ||
})); | ||
//# sourceMappingURL=index.js.map | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@poap-xyz/utils"]={})}(this,(function(e){"use strict";var t,n,r;e.Order=void 0,(t=e.Order||(e.Order={})).ASC="asc",t.DESC="desc",e.Chain=void 0,(n=e.Chain||(e.Chain={})).Ethereum="mainnet",n.Gnosis="xdai",e.TransactionRequestStatus=void 0,(r=e.TransactionRequestStatus||(e.TransactionRequestStatus={})).PENDING="PENDING",r.IN_PROCESS="IN_PROCESS",r.FINISH="FINISH",r.FINISH_WITH_ERROR="FINISH_WITH_ERROR";const i="0x0000000000000000000000000000000000000000",u="0x000000000000000000000000000000000000dead";function o(e,t){return e.split(".").reduceRight(((e,t)=>({[t]:e})),t)}function c(e){if(null==e)return!1;switch(typeof e){case"boolean":return!0;case"number":return function(e){return!isNaN(e)&&0!==e}(e);case"object":return function(e){return Object.keys(e).length>0}(e);default:return!!e}}e.DEAD_ADDRESS=u,e.PaginatedResult=class{constructor(e,t){this.items=e,this.nextCursor=t}},e.ZERO_ADDRESS=i,e.createAddressFilter=function(e,t){return c(t)?o(e,{_eq:t.toLowerCase()}):{}},e.createBetweenFilter=function(e,t,n){const r={},i=c(t),u=c(n);return i&&(r._gte=t),u&&(r._lte=n),i||u?o(e,r):{}},e.createEqFilter=function(e,t){return c(t)?o(e,{_eq:t}):{}},e.createGtFilter=function(e,t){return c(t)?o(e,{_gt:t}):{}},e.createGteFilter=function(e,t){return c(t)?o(e,{_gte:t}):{}},e.createInFilter=function(e,t){return c(t)?o(e,{_in:t}):{}},e.createIsNullFilter=function(e,t){return o(e,{_is_null:t})},e.createLikeFilter=function(e,t){return c(t)?o(e,{_ilike:`%${t}%`}):{}},e.createLtFilter=function(e,t){return c(t)?o(e,{_lt:t}):{}},e.createLteFilter=function(e,t){return c(t)?o(e,{_lte:t}):{}},e.createNeqFilter=function(e,t){return c(t)?o(e,{_neq:t}):{}},e.createNinFilter=function(e,t){return c(t)?o(e,{_nin:t}):{}},e.createNotNullAddressFilter=function(e,t,n){const r=[];return!1!==t&&r.push(i),!1!==n&&r.push(u),0===r.length?{}:1===r.length?o(e,{_neq:r[0]}):o(e,{_nin:r})},e.createOrderBy=function(e,t){return e&&t?o(e,t):{}},e.isNumeric=function(e,t=!1){return"string"==typeof e?(t?/^-?\d+$/:/^\d+$/).test(e):"number"==typeof e},e.nextCursor=function(e,t,n){const r=n+e;return r<n+t?null:r},e.toPOAPDate=function(e){return e.toLocaleDateString("en-US",{month:"2-digit",day:"2-digit",year:"numeric"}).replace(/\//g,"-")}})); |
@@ -0,5 +1,12 @@ | ||
/** | ||
* Deep recursive field with `V` final value. | ||
*/ | ||
type Field<V> = { | ||
[key: string]: Field<V> | V; | ||
}; | ||
/** | ||
* Creates a deep recursive object with dot separated keys and a final value. | ||
* For example, `createField<number>('a.b.c', 42)` will return `{ a: { b: { c: 42 } } }`. | ||
*/ | ||
export declare function createField<V>(keys: string, value: V): Field<V>; | ||
export {}; |
@@ -44,4 +44,7 @@ export type Value = string | number | boolean; | ||
}; | ||
/** | ||
* Filter query variables. | ||
*/ | ||
export interface FilterVariables { | ||
where: Filter; | ||
} |
@@ -0,1 +1,4 @@ | ||
/** | ||
* Sorting order. | ||
*/ | ||
export declare enum Order { | ||
@@ -9,4 +12,7 @@ ASC = "asc", | ||
export type OrderBy = FieldOrderBy | Array<FieldOrderBy>; | ||
/** | ||
* Order by query variables. | ||
*/ | ||
export interface OrderByVariables { | ||
orderBy: OrderBy; | ||
} |
@@ -0,13 +1,56 @@ | ||
/** | ||
* Accepted values to paginate. | ||
*/ | ||
export interface PaginationInput { | ||
/** | ||
* How many items to retrieve. | ||
*/ | ||
limit: number; | ||
/** | ||
* Where to start fetching. | ||
*/ | ||
offset: number; | ||
} | ||
/** | ||
* Represents a paginated result. | ||
* | ||
* @class PaginatedResult | ||
* @template T | ||
*/ | ||
export declare class PaginatedResult<T> { | ||
/** | ||
* An array of items in the current page of the result. | ||
* | ||
* @member {T[]} | ||
* @name PaginatedResult#items | ||
*/ | ||
items: T[]; | ||
/** | ||
* The cursor for the next page of the result, or null if there are no more pages. | ||
* | ||
* @member {string|number|null} | ||
* @name PaginatedResult#nextCursor | ||
*/ | ||
nextCursor: string | number | null; | ||
/** | ||
* Creates a new PaginatedResult object. | ||
* | ||
* @constructor | ||
* @param {T[]} items - The items in the current page of the result. | ||
* @param {string|number|null} nextCursor - The cursor for the next page of the result, or null if there are no more pages. | ||
*/ | ||
constructor(items: T[], nextCursor: string | number | null); | ||
} | ||
/** | ||
* Variables pass to queries that do pagination. | ||
*/ | ||
export interface PaginatedVariables { | ||
/** | ||
* When the page results start. | ||
*/ | ||
offset: number; | ||
/** | ||
* How many results to retrieve. | ||
*/ | ||
limit: number; | ||
} |
@@ -0,1 +1,7 @@ | ||
/** | ||
* Checks if a value given to a query filter is defined. | ||
* | ||
* @param {V} value The value to check. | ||
* @returns {boolean} True if the value is defined, false otherwise. | ||
*/ | ||
export declare function isFilterValueDefined<V>(value?: V): value is NonNullable<V>; |
@@ -0,1 +1,8 @@ | ||
/** | ||
* Checks if a value is numeric. | ||
* | ||
* @param {unknown} value The value to check. | ||
* @param {boolean} allowNegative Whether to allow negative numbers. | ||
* @returns {boolean} True if the value is numeric, false otherwise. | ||
*/ | ||
export declare function isNumeric(value: unknown, allowNegative?: boolean): boolean; |
{ | ||
"name": "@poap-xyz/utils", | ||
"version": "0.8.0", | ||
"version": "0.8.1", | ||
"description": "Utils module for the poap.js library", | ||
@@ -5,0 +5,0 @@ "main": "dist/cjs/index.cjs", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
43026
91
1115