From 2c9d4d4701b836f85dc6ee2d64c5b2ccc4bd6b29 Mon Sep 17 00:00:00 2001 From: MGrgr Date: Fri, 10 Nov 2023 01:05:21 +0300 Subject: [PATCH 1/5] fix: add policy rules formatter --- .../albus-sdk/src/utils/policy-formatter.ts | 125 ++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 packages/albus-sdk/src/utils/policy-formatter.ts diff --git a/packages/albus-sdk/src/utils/policy-formatter.ts b/packages/albus-sdk/src/utils/policy-formatter.ts new file mode 100644 index 00000000..a3d1ebfb --- /dev/null +++ b/packages/albus-sdk/src/utils/policy-formatter.ts @@ -0,0 +1,125 @@ +import type { PublicKey } from '@solana/web3.js' +import * as COUNTRIES_LIST from '@albus-finance/core/tests/countries' +import { PolicyRule } from '../generated' + +const EVENTS = { + cacf: 'Crypto assets conference, Frankfurt', + sb2023a: 'Solana breakpoint 2023, Amsterdam', + ws2023l: 'Web summit 2023, Lisbon', + cbbd: 'Chains beyond borders, Dubai', +} + +const KEYS = { + selectionMode: 'mode', + countryLookup: 'country(ies)', + expectedEvent: 'event', + expectedDateFrom: 'date from', + expectedDateTo: 'date to', + expectedType: 'verifying issuer', +} + +const LABELS = { + selectionMode_true: 'includes', + selectionMode_false: 'excludes', + ...Object.keys(EVENTS).reduce((acc, cur) => ({ ...acc, [`expectedEvent_${cur}`]: EVENTS[cur] }), {}), +} + +function formateDate(time: number, options?: { [key: string]: string }) { + if (Number.isNaN(time)) { + return '0' + } + const formatter = new Intl.DateTimeFormat('uk-Uk', options ?? { + day: 'numeric', + month: 'numeric', + year: 'numeric', + }) + return formatter.format(time) +} + +function secondsToMilliseconds(sec: number): number { + return sec * 1000 +} + +function formatCamelCase(str: string) { + return str.split(/(?=[A-Z])/).join(' ').toLowerCase() +} + +function normalizeRule({ key, label, value }: { key: string; label: string; value: number[] }): PolicyRuleNormalized { + const keyFormatted = KEYS[key] ?? formatCamelCase(key) + let valueFormatted = '' + if (key === 'countryLookup') { + valueFormatted = value + .filter(v => v > 0) + .reduce((acc, cur, idx) => `${acc}${idx > 0 ? ', ' : ''}${COUNTRIES_LIST[cur - 1]?.name}`, '') + } else { + valueFormatted = LABELS[`${key}_${label}`] ?? label + } + return { + key: keyFormatted, + value: valueFormatted, + } +} + +function groupRules(props: PolicyRule[]): PolicyRule[] { + const list: Record = {} + props.forEach((r, idx) => { + const name = r.key.split('.')[0] ?? '' + if (!list[name]) { + list[name] = [] + } + list[name]?.push(idx) + }) + const rules: PolicyRule[] = [] + for (const key in list) { + rules.push({ + key, + label: props[list[key]?.[0] ?? '']?.label, + value: list[key]?.reduce((acc: number[], cur: number) => [...acc, ...(props[cur]?.value ?? [])], []) ?? [], + }) + } + return rules +} + +export function normalizePolicyRules(props: PolicyRule[]): PolicyRuleNormalized[] { + const groups = groupRules(props) + return groups.map(g => normalizeRule(g)) +} + +export function formatPolicyRules(data: { circuit: PublicKey; rules: PolicyRule[] }): string { + const rules = normalizePolicyRules(data.rules) + switch (data.circuit.toBase58()) { + case '3xSYq61eaeUEnQex5iwh5Q4m9tBvwXygbudTnYqoQTNR': { + // age + const to = rules[1]?.value !== '100' ? `to ${rules[1]?.value}` : '' + return `Age: from ${data.rules[0]?.label} ${to}` + } + case '8gRMb2ZVuZiubDTix68KF1X9Cj7yvkGJbCwza8MB8XeX': { + // attendance + const expectedDateFrom = Number(rules[1]?.value) + const expectedDateTo = Number(rules[2]?.value) + + let to = '∞' + if (!Number.isNaN(expectedDateTo) && expectedDateTo !== 0) { + to = String(formateDate(secondsToMilliseconds(expectedDateTo))) + } + const from = formateDate(secondsToMilliseconds(expectedDateFrom)) + const event = rules[0]?.value + return `Event: ${event}, Date: ${from} - ${to}` + } + case '3ro9Jqy7o6DPGR982KfNWaQ1zVUeu4jLep2NtVxvhwtW': { + // liveness + return `Verifying issuer: ${rules[0]?.value}` + } + case '8mRixW28XEPajVxCKy8zZ2bxmQecBvhTg4gw7AfocRHu': { + // country + return `Mode: ${rules[0]?.value}. Countries: ${rules[1]?.value}` + } + default: + return '' + } +} + +export interface PolicyRuleNormalized { + key: string + value: string +} From b664ae6754d92d50c1a7759a614e87b16c5dcc2c Mon Sep 17 00:00:00 2001 From: MGrgr Date: Fri, 10 Nov 2023 09:58:16 +0300 Subject: [PATCH 2/5] fix: export policy formatter --- packages/albus-sdk/src/utils/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/albus-sdk/src/utils/index.ts b/packages/albus-sdk/src/utils/index.ts index c51fbaf1..babd9e70 100644 --- a/packages/albus-sdk/src/utils/index.ts +++ b/packages/albus-sdk/src/utils/index.ts @@ -29,3 +29,4 @@ export * from './circuit' export * from './wallet' export * from './web3' +export * from './policy-formatter' From 1f11ffa5b66dba6104ed64a09439498b7f70bbd6 Mon Sep 17 00:00:00 2001 From: MGrgr Date: Fri, 10 Nov 2023 18:05:46 +0300 Subject: [PATCH 3/5] fix: update policy formatter --- packages/albus-sdk/src/countries.ts | 1002 +++++++++++++++++ .../albus-sdk/src/utils/policy-formatter.ts | 52 +- 2 files changed, 1044 insertions(+), 10 deletions(-) create mode 100644 packages/albus-sdk/src/countries.ts diff --git a/packages/albus-sdk/src/countries.ts b/packages/albus-sdk/src/countries.ts new file mode 100644 index 00000000..6157f898 --- /dev/null +++ b/packages/albus-sdk/src/countries.ts @@ -0,0 +1,1002 @@ +export const COUNTRIES_LIST = [ + { + name: 'Afghanistan', + code3: 'AFG', + }, + { + name: 'South Africa', + code3: 'ZAF', + }, + { + name: 'Albania', + code3: 'ALB', + }, + { + name: 'Germany', + code3: 'DEU', + }, + { + name: 'Andorra', + code3: 'AND', + }, + { + name: 'Angola', + code3: 'AGO', + }, + { + name: 'Anguilla', + code3: 'AIA', + }, + { + name: 'Antarctica', + code3: 'ATA', + }, + { + name: 'Antigua and Barbuda', + code3: 'ATG', + }, + { + name: 'Saudi Arabia', + code3: 'SAU', + }, + { + name: 'Algeria', + code3: 'DZA', + }, + { + name: 'Argentina', + code3: 'ARG', + }, + { + name: 'Armenia', + code3: 'ARM', + }, + { + name: 'Aruba', + code3: 'ABW', + }, + { + name: 'Australia', + code3: 'AUS', + }, + { + name: 'Austria', + code3: 'AUT', + }, + { + name: 'Azerbaijan', + code3: 'AZE', + }, + { + name: 'Bahamas, The', + code3: 'BHS', + }, + { + name: 'Bahrain', + code3: 'BHR', + }, + { + name: 'Bangladesh', + code3: 'BGD', + }, + { + name: 'Barbados', + code3: 'BRB', + }, + { + name: 'Belgium', + code3: 'BEL', + }, + { + name: 'Belize', + code3: 'BLZ', + }, + { + name: 'Benin', + code3: 'BEN', + }, + { + name: 'Bermuda', + code3: 'BMU', + }, + { + name: 'Belarus', + code3: 'BLR', + }, + { + name: 'Bolivia', + code3: 'BOL', + }, + { + name: 'Bosnia and Herzegovina', + code3: 'BIH', + }, + { + name: 'Botswana', + code3: 'BWA', + }, + { + name: 'Brazil', + code3: 'BRA', + }, + { + name: 'Brunei', + code3: 'BRN', + }, + { + name: 'Bulgaria', + code3: 'BGR', + }, + { + name: 'Burkina Faso', + code3: 'BFA', + }, + { + name: 'Burundi', + code3: 'BDI', + }, + { + name: 'Bhutan', + code3: 'BTN', + }, + { + name: 'Cabo Verde', + code3: 'CPV', + }, + { + name: 'Cameroon', + code3: 'CMR', + }, + { + name: 'Cambodia', + code3: 'KHM', + }, + { + name: 'Canada', + code3: 'CAN', + }, + { + name: 'Qatar', + code3: 'QAT', + }, + { + name: 'Kazakhstan', + code3: 'KAZ', + }, + { + name: 'Chad', + code3: 'TCD', + }, + { + name: 'Chile', + code3: 'CHL', + }, + { + name: 'China', + code3: 'CHN', + }, + { + name: 'Cyprus', + code3: 'CYP', + }, + { + name: 'Singapore', + code3: 'SGP', + }, + { + name: 'Colombia', + code3: 'COL', + }, + { + name: 'Comoros', + code3: 'COM', + }, + { + name: 'Congo', + code3: 'COG', + }, + { + name: 'North Korea', + code3: 'PRK', + }, + { + name: 'Korea', + code3: 'KOR', + }, + { + name: 'Côte d\'Ivoire', + code3: 'CIV', + }, + { + name: 'Costa Rica', + code3: 'CRI', + }, + { + name: 'Croatia', + code3: 'HRV', + }, + { + name: 'Cuba', + code3: 'CUB', + }, + { + name: 'Curaçao', + code3: 'CUW', + }, + { + name: 'Denmark', + code3: 'DNK', + }, + { + name: 'Djibouti', + code3: 'DJI', + }, + { + name: 'Dominica', + code3: 'DMA', + }, + { + name: 'Egypt', + code3: 'EGY', + }, + { + name: 'El Salvador', + code3: 'SLV', + }, + { + name: 'United Arab Emirates', + code3: 'ARE', + }, + { + name: 'Ecuador', + code3: 'ECU', + }, + { + name: 'Eritrea', + code3: 'ERI', + }, + { + name: 'Slovakia', + code3: 'SVK', + }, + { + name: 'Slovenia', + code3: 'SVN', + }, + { + name: 'Spain', + code3: 'ESP', + }, + { + name: 'United States', + code3: 'USA', + }, + { + name: 'Estonia', + code3: 'EST', + }, + { + name: 'Ethiopia', + code3: 'ETH', + }, + { + name: 'Fiji Islands', + code3: 'FJI', + }, + { + name: 'Philippines', + code3: 'PHL', + }, + { + name: 'Finland', + code3: 'FIN', + }, + { + name: 'France', + code3: 'FRA', + }, + { + name: 'Gabon', + code3: 'GAB', + }, + { + name: 'Gambia, The', + code3: 'GMB', + }, + { + name: 'Ghana', + code3: 'GHA', + }, + { + name: 'Georgia', + code3: 'GEO', + }, + { + name: 'Gibraltar', + code3: 'GIB', + }, + { + name: 'Grenada', + code3: 'GRD', + }, + { + name: 'Greece', + code3: 'GRC', + }, + { + name: 'Greenland', + code3: 'GRL', + }, + { + name: 'Guadeloupe', + code3: 'GLP', + }, + { + name: 'Guam', + code3: 'GUM', + }, + { + name: 'Guatemala', + code3: 'GTM', + }, + { + name: 'Guernsey', + code3: 'GGY', + }, + { + name: 'Guyana', + code3: 'GUY', + }, + { + name: 'French Guiana', + code3: 'GUF', + }, + { + name: 'Guinea', + code3: 'GIN', + }, + { + name: 'Equatorial Guinea', + code3: 'GNQ', + }, + { + name: 'Guinea-Bissau', + code3: 'GNB', + }, + { + name: 'Haiti', + code3: 'HTI', + }, + { + name: 'Netherlands', + code3: 'NLD', + }, + { + name: 'Honduras', + code3: 'HND', + }, + { + name: 'Hong Kong SAR', + code3: 'HKG', + }, + { + name: 'Hungary', + code3: 'HUN', + }, + { + name: 'Yemen', + code3: 'YEM', + }, + { + name: 'Bouvet Island', + code3: 'BVT', + }, + { + name: 'Reunion', + code3: 'REU', + }, + { + name: 'Man, Isle of', + code3: 'IMN', + }, + { + name: 'Saint Martin (French part)', + code3: 'MAF', + }, + { + name: 'Heard Island and McDonald Islands', + code3: 'HMD', + }, + { + name: 'Christmas Island', + code3: 'CXR', + }, + { + name: 'Norfolk Island', + code3: 'NFK', + }, + { + name: 'Åland Islands', + code3: 'ALA', + }, + { + name: 'Cayman Islands', + code3: 'CYM', + }, + { + name: 'Cocos (Keeling) Islands', + code3: 'CCK', + }, + { + name: 'Cook Islands', + code3: 'COK', + }, + { + name: 'Falkland Islands (Islas Malvinas)', + code3: 'FLK', + }, + { + name: 'Faroe Islands', + code3: 'FRO', + }, + { + name: 'South Georgia and the South Sandwich Islands', + code3: 'SGS', + }, + { + name: 'Northern Mariana Islands', + code3: 'MNP', + }, + { + name: 'Marshall Islands', + code3: 'MHL', + }, + { + name: 'U.S. Minor Outlying Islands', + code3: 'UMI', + }, + { + name: 'Pitcairn Islands', + code3: 'PCN', + }, + { + name: 'Solomon Islands', + code3: 'SLB', + }, + { + name: 'Turks and Caicos Islands', + code3: 'TCA', + }, + { + name: 'Virgin Islands, U.S.', + code3: 'VIR', + }, + { + name: 'Virgin Islands, British', + code3: 'VGB', + }, + { + name: 'India', + code3: 'IND', + }, + { + name: 'Indonesia', + code3: 'IDN', + }, + { + name: 'Iran', + code3: 'IRN', + }, + { + name: 'Iraq', + code3: 'IRQ', + }, + { + name: 'Ireland', + code3: 'IRL', + }, + { + name: 'Iceland', + code3: 'ISL', + }, + { + name: 'Israel', + code3: 'ISR', + }, + { + name: 'Italy', + code3: 'ITA', + }, + { + name: 'Jamaica', + code3: 'JAM', + }, + { + name: 'Japan', + code3: 'JPN', + }, + { + name: 'Jersey', + code3: 'JEY', + }, + { + name: 'Jordan', + code3: 'JOR', + }, + { + name: 'Kiribati', + code3: 'KIR', + }, + { + name: 'Kosovo', + code3: 'XKX', + }, + { + name: 'Kuwait', + code3: 'KWT', + }, + { + name: 'Laos', + code3: 'LAO', + }, + { + name: 'Lesotho', + code3: 'LSO', + }, + { + name: 'Latvia', + code3: 'LVA', + }, + { + name: 'Lebanon', + code3: 'LBN', + }, + { + name: 'Liberia', + code3: 'LBR', + }, + { + name: 'Libya', + code3: 'LBY', + }, + { + name: 'Liechtenstein', + code3: 'LIE', + }, + { + name: 'Lithuania', + code3: 'LTU', + }, + { + name: 'Luxembourg', + code3: 'LUX', + }, + { + name: 'Macao SAR', + code3: 'MAC', + }, + { + name: 'Macedonia, Former Yugoslav Republic of', + code3: 'MKD', + }, + { + name: 'Madagascar', + code3: 'MDG', + }, + { + name: 'Malaysia', + code3: 'MYS', + }, + { + name: 'Malawi', + code3: 'MWI', + }, + { + name: 'Maldives', + code3: 'MDV', + }, + { + name: 'Mali', + code3: 'MLI', + }, + { + name: 'Malta', + code3: 'MLT', + }, + { + name: 'Morocco', + code3: 'MAR', + }, + { + name: 'Martinique', + code3: 'MTQ', + }, + { + name: 'Mauritius', + code3: 'MUS', + }, + { + name: 'Mauritania', + code3: 'MRT', + }, + { + name: 'Mayotte', + code3: 'MYT', + }, + { + name: 'Mexico', + code3: 'MEX', + }, + { + name: 'Micronesia', + code3: 'FSM', + }, + { + name: 'Mozambique', + code3: 'MOZ', + }, + { + name: 'Moldova', + code3: 'MDA', + }, + { + name: 'Monaco', + code3: 'MCO', + }, + { + name: 'Mongolia', + code3: 'MNG', + }, + { + name: 'Montenegro', + code3: 'MNE', + }, + { + name: 'Montserrat', + code3: 'MSR', + }, + { + name: 'Myanmar', + code3: 'MMR', + }, + { + name: 'Namibia', + code3: 'NAM', + }, + { + name: 'Nauru', + code3: 'NRU', + }, + { + name: 'Nepal', + code3: 'NPL', + }, + { + name: 'Nicaragua', + code3: 'NIC', + }, + { + name: 'Niger', + code3: 'NER', + }, + { + name: 'Nigeria', + code3: 'NGA', + }, + { + name: 'Niue', + code3: 'NIU', + }, + { + name: 'Norway', + code3: 'NOR', + }, + { + name: 'New Caledonia', + code3: 'NCL', + }, + { + name: 'New Zealand', + code3: 'NZL', + }, + { + name: 'Oman', + code3: 'OMN', + }, + { + name: 'Palau', + code3: 'PLW', + }, + { + name: 'Panama', + code3: 'PAN', + }, + { + name: 'Papua New Guinea', + code3: 'PNG', + }, + { + name: 'Pakistan', + code3: 'PAK', + }, + { + name: 'Paraguay', + code3: 'PRY', + }, + { + name: 'Peru', + code3: 'PER', + }, + { + name: 'French Polynesia', + code3: 'PYF', + }, + { + name: 'Poland', + code3: 'POL', + }, + { + name: 'Puerto Rico', + code3: 'PRI', + }, + { + name: 'Portugal', + code3: 'PRT', + }, + { + name: 'Kenya', + code3: 'KEN', + }, + { + name: 'Kyrgyzstan', + code3: 'KGZ', + }, + { + name: 'United Kingdom', + code3: 'GBR', + }, + { + name: 'Central African Republic', + code3: 'CAF', + }, + { + name: 'Congo (DRC)', + code3: 'COD', + }, + { + name: 'Dominican Republic', + code3: 'DOM', + }, + { + name: 'Czech Republic', + code3: 'CZE', + }, + { + name: 'Romania', + code3: 'ROM', + }, + { + name: 'Rwanda', + code3: 'RWA', + }, + { + name: 'Russia', + code3: 'RUS', + }, + { + name: '', + code3: 'ESH', + }, + { + name: 'Bonaire, Sint Eustatius and Saba', + code3: 'BES', + }, + { + name: 'Samoa', + code3: 'WSM', + }, + { + name: 'American Samoa', + code3: 'ASM', + }, + { + name: 'San Marino', + code3: 'SMR', + }, + { + name: 'Saint Helena, Ascension and Tristan da Cunha', + code3: 'SHN', + }, + { + name: 'Saint Lucia', + code3: 'LCA', + }, + { + name: 'Saint Barthélemy', + code3: 'BLM', + }, + { + name: 'Saint Kitts and Nevis', + code3: 'KNA', + }, + { + name: 'Sint Maarten (Dutch part)', + code3: 'SXM', + }, + { + name: 'Saint Pierre and Miquelon', + code3: 'SPM', + }, + { + name: 'São Tomé and Príncipe', + code3: 'STP', + }, + { + name: 'Saint Vincent and the Grenadines', + code3: 'VCT', + }, + { + name: 'Senegal', + code3: 'SEN', + }, + { + name: 'Sierra Leone', + code3: 'SLE', + }, + { + name: 'Serbia', + code3: 'SRB', + }, + { + name: 'Seychelles', + code3: 'SYC', + }, + { + name: 'Syria', + code3: 'SYR', + }, + { + name: 'Somalia', + code3: 'SOM', + }, + { + name: 'Sri Lanka', + code3: 'LKA', + }, + { + name: 'Swaziland', + code3: 'SWZ', + }, + { + name: 'Sudan', + code3: 'SDN', + }, + { + name: 'South Sudan', + code3: 'SSD', + }, + { + name: 'Sweden', + code3: 'SWE', + }, + { + name: 'Switzerland', + code3: 'CHE', + }, + { + name: 'Suriname', + code3: 'SUR', + }, + { + name: 'Jan Mayen', + code3: 'SJM', + }, + { + name: 'Thailand', + code3: 'THA', + }, + { + name: 'Taiwan', + code3: 'TWN', + }, + { + name: 'Tajikistan', + code3: 'TJK', + }, + { + name: 'Tanzania', + code3: 'TZA', + }, + { + name: 'French Southern and Antarctic Lands', + code3: 'ATF', + }, + { + name: 'British Indian Ocean Territory', + code3: 'IOT', + }, + { + name: 'Palestinian Authority', + code3: 'PSE', + }, + { + name: 'Democratic Republic of Timor-Leste', + code3: 'TLS', + }, + { + name: 'Togo', + code3: 'TGO', + }, + { + name: 'Tonga', + code3: 'TON', + }, + { + name: 'Tokelau', + code3: 'TKL', + }, + { + name: 'Trinidad and Tobago', + code3: 'TTO', + }, + { + name: 'Tunisia', + code3: 'TUN', + }, + { + name: 'Turkmenistan', + code3: 'TKM', + }, + { + name: 'Turkey', + code3: 'TUR', + }, + { + name: 'Tuvalu', + code3: 'TUV', + }, + { + name: 'Ukraine', + code3: 'UKR', + }, + { + name: 'Uganda', + code3: 'UGA', + }, + { + name: 'Uruguay', + code3: 'URY', + }, + { + name: 'Uzbekistan', + code3: 'UZB', + }, + { + name: 'Vanuatu', + code3: 'VUT', + }, + { + name: 'Vatican City', + code3: 'VAT', + }, + { + name: 'Bolivarian Republic of Venezuela', + code3: 'VEN', + }, + { + name: 'Vietnam', + code3: 'VNM', + }, + { + name: 'Wallis and Futuna', + code3: 'WLF', + }, + { + name: 'Zambia', + code3: 'ZMB', + }, + { + name: 'Zimbabwe', + code3: 'ZWE', + }, +] diff --git a/packages/albus-sdk/src/utils/policy-formatter.ts b/packages/albus-sdk/src/utils/policy-formatter.ts index a3d1ebfb..c53d7354 100644 --- a/packages/albus-sdk/src/utils/policy-formatter.ts +++ b/packages/albus-sdk/src/utils/policy-formatter.ts @@ -1,5 +1,5 @@ import type { PublicKey } from '@solana/web3.js' -import * as COUNTRIES_LIST from '@albus-finance/core/tests/countries' +import { COUNTRIES_LIST } from '../countries' import { PolicyRule } from '../generated' const EVENTS = { @@ -44,6 +44,42 @@ function formatCamelCase(str: string) { return str.split(/(?=[A-Z])/).join(' ').toLowerCase() } +function hasKey(rules: PolicyRule[], key: string) { + return !!rules.find(r => r.key === key) +} + +function getCircuitByRules(rules: PolicyRule[]) { + if ( + hasKey(rules, 'minAge') + && ( + rules.length === 1 + || (rules.length === 2 && hasKey(rules, 'maxAge')) + ) + ) { + return 'age' + } else if ( + rules.length === 3 + && hasKey(rules, 'expectedEvent') + && hasKey(rules, 'expectedDateFrom') + && hasKey(rules, 'expectedDateTo') + ) { + return 'attendance' + } else if ( + rules.length === 3 + && hasKey(rules, 'selectionMode') + && hasKey(rules, 'countryLookup.0') + && hasKey(rules, 'countryLookup.1') + ) { + return 'liveness' + } else if ( + rules.length === 1 + && hasKey(rules, 'expectedType') + ) { + return 'country' + } + return '' +} + function normalizeRule({ key, label, value }: { key: string; label: string; value: number[] }): PolicyRuleNormalized { const keyFormatted = KEYS[key] ?? formatCamelCase(key) let valueFormatted = '' @@ -87,14 +123,12 @@ export function normalizePolicyRules(props: PolicyRule[]): PolicyRuleNormalized[ export function formatPolicyRules(data: { circuit: PublicKey; rules: PolicyRule[] }): string { const rules = normalizePolicyRules(data.rules) - switch (data.circuit.toBase58()) { - case '3xSYq61eaeUEnQex5iwh5Q4m9tBvwXygbudTnYqoQTNR': { - // age + switch (getCircuitByRules(data.rules)) { + case 'age': { const to = rules[1]?.value !== '100' ? `to ${rules[1]?.value}` : '' return `Age: from ${data.rules[0]?.label} ${to}` } - case '8gRMb2ZVuZiubDTix68KF1X9Cj7yvkGJbCwza8MB8XeX': { - // attendance + case 'attendance': { const expectedDateFrom = Number(rules[1]?.value) const expectedDateTo = Number(rules[2]?.value) @@ -106,12 +140,10 @@ export function formatPolicyRules(data: { circuit: PublicKey; rules: PolicyRule[ const event = rules[0]?.value return `Event: ${event}, Date: ${from} - ${to}` } - case '3ro9Jqy7o6DPGR982KfNWaQ1zVUeu4jLep2NtVxvhwtW': { - // liveness + case 'liveness': { return `Verifying issuer: ${rules[0]?.value}` } - case '8mRixW28XEPajVxCKy8zZ2bxmQecBvhTg4gw7AfocRHu': { - // country + case 'country': { return `Mode: ${rules[0]?.value}. Countries: ${rules[1]?.value}` } default: From a903db1e76c257eb278be7d0f47ddae7f7287509 Mon Sep 17 00:00:00 2001 From: MGrgr Date: Tue, 14 Nov 2023 12:32:03 +0300 Subject: [PATCH 4/5] fix(sdk): update country list --- packages/albus-sdk/src/countries.ts | 1502 ++++++++++++++++++--------- 1 file changed, 1001 insertions(+), 501 deletions(-) diff --git a/packages/albus-sdk/src/countries.ts b/packages/albus-sdk/src/countries.ts index 6157f898..13b00c1f 100644 --- a/packages/albus-sdk/src/countries.ts +++ b/packages/albus-sdk/src/countries.ts @@ -1,1002 +1,1502 @@ export const COUNTRIES_LIST = [ { - name: 'Afghanistan', - code3: 'AFG', + id: 1, + name: 'Afghanistan', + code2: 'AF', + code3: 'AFG' }, { - name: 'South Africa', - code3: 'ZAF', + id: 2, + name: 'Albania', + code2: 'AL', + code3: 'ALB' }, { - name: 'Albania', - code3: 'ALB', + id: 3, + name: 'Algeria', + code2: 'DZ', + code3: 'DZA' }, { - name: 'Germany', - code3: 'DEU', + id: 4, + name: 'American Samoa', + code2: 'AS', + code3: 'ASM' }, { - name: 'Andorra', - code3: 'AND', + id: 5, + name: 'Andorra', + code2: 'AD', + code3: 'AND' }, { - name: 'Angola', - code3: 'AGO', + id: 6, + name: 'Angola', + code2: 'AO', + code3: 'AGO' }, { - name: 'Anguilla', - code3: 'AIA', + id: 7, + name: 'Anguilla', + code2: 'AI', + code3: 'AIA' }, { - name: 'Antarctica', - code3: 'ATA', + id: 8, + name: 'Antarctica', + code2: 'AQ', + code3: 'ATA' }, { - name: 'Antigua and Barbuda', - code3: 'ATG', + id: 9, + name: 'Antigua and Barbuda', + code2: 'AG', + code3: 'ATG' }, { - name: 'Saudi Arabia', - code3: 'SAU', + id: 10, + name: 'Argentina', + code2: 'AR', + code3: 'ARG' }, { - name: 'Algeria', - code3: 'DZA', + id: 11, + name: 'Armenia', + code2: 'AM', + code3: 'ARM' }, { - name: 'Argentina', - code3: 'ARG', + id: 12, + name: 'Aruba', + code2: 'AW', + code3: 'ABW' }, { - name: 'Armenia', - code3: 'ARM', + id: 13, + name: 'Australia', + code2: 'AU', + code3: 'AUS' }, { - name: 'Aruba', - code3: 'ABW', + id: 14, + name: 'Austria', + code2: 'AT', + code3: 'AUT' }, { - name: 'Australia', - code3: 'AUS', + id: 15, + name: 'Azerbaijan', + code2: 'AZ', + code3: 'AZE' }, { - name: 'Austria', - code3: 'AUT', + id: 16, + name: 'Bahamas, The', + code2: 'BS', + code3: 'BHS' }, { - name: 'Azerbaijan', - code3: 'AZE', + id: 17, + name: 'Bahrain', + code2: 'BH', + code3: 'BHR' }, { - name: 'Bahamas, The', - code3: 'BHS', + id: 18, + name: 'Bangladesh', + code2: 'BD', + code3: 'BGD' }, { - name: 'Bahrain', - code3: 'BHR', + id: 19, + name: 'Barbados', + code2: 'BB', + code3: 'BRB' }, { - name: 'Bangladesh', - code3: 'BGD', + id: 20, + name: 'Belarus', + code2: 'BY', + code3: 'BLR' }, { - name: 'Barbados', - code3: 'BRB', + id: 21, + name: 'Belgium', + code2: 'BE', + code3: 'BEL' }, { - name: 'Belgium', - code3: 'BEL', + id: 22, + name: 'Belize', + code2: 'BZ', + code3: 'BLZ' }, { - name: 'Belize', - code3: 'BLZ', + id: 23, + name: 'Benin', + code2: 'BJ', + code3: 'BEN' }, { - name: 'Benin', - code3: 'BEN', + id: 24, + name: 'Bermuda', + code2: 'BM', + code3: 'BMU' }, { - name: 'Bermuda', - code3: 'BMU', + id: 25, + name: 'Bhutan', + code2: 'BT', + code3: 'BTN' }, { - name: 'Belarus', - code3: 'BLR', + id: 26, + name: 'Bolivia', + code2: 'BO', + code3: 'BOL' }, { - name: 'Bolivia', - code3: 'BOL', + id: 27, + name: 'Bonaire, Sint Eustatius and Saba', + code2: 'BQ', + code3: 'BES' }, { - name: 'Bosnia and Herzegovina', - code3: 'BIH', + id: 28, + name: 'Bosnia and Herzegovina', + code2: 'BA', + code3: 'BIH' }, { - name: 'Botswana', - code3: 'BWA', + id: 29, + name: 'Botswana', + code2: 'BW', + code3: 'BWA' }, { - name: 'Brazil', - code3: 'BRA', + id: 30, + name: 'Bouvet Island', + code2: 'BV', + code3: 'BVT' }, { - name: 'Brunei', - code3: 'BRN', + id: 31, + name: 'Brazil', + code2: 'BR', + code3: 'BRA' }, { - name: 'Bulgaria', - code3: 'BGR', + id: 32, + name: 'British Indian Ocean Territory', + code2: 'IO', + code3: 'IOT' }, { - name: 'Burkina Faso', - code3: 'BFA', + id: 33, + name: 'Brunei', + code2: 'BN', + code3: 'BRN' }, { - name: 'Burundi', - code3: 'BDI', + id: 34, + name: 'Bulgaria', + code2: 'BG', + code3: 'BGR' }, { - name: 'Bhutan', - code3: 'BTN', + id: 35, + name: 'Burkina Faso', + code2: 'BF', + code3: 'BFA' }, { - name: 'Cabo Verde', - code3: 'CPV', + id: 36, + name: 'Burundi', + code2: 'BI', + code3: 'BDI' }, { - name: 'Cameroon', - code3: 'CMR', + id: 37, + name: 'Cabo Verde', + code2: 'CV', + code3: 'CPV' }, { - name: 'Cambodia', - code3: 'KHM', + id: 38, + name: 'Cambodia', + code2: 'KH', + code3: 'KHM' }, { - name: 'Canada', - code3: 'CAN', + id: 39, + name: 'Cameroon', + code2: 'CM', + code3: 'CMR' }, { - name: 'Qatar', - code3: 'QAT', + id: 40, + name: 'Canada', + code2: 'CA', + code3: 'CAN' }, { - name: 'Kazakhstan', - code3: 'KAZ', + id: 41, + name: 'Cayman Islands', + code2: 'KY', + code3: 'CYM' }, { - name: 'Chad', - code3: 'TCD', + id: 42, + name: 'Central African Republic', + code2: 'CF', + code3: 'CAF' }, { - name: 'Chile', - code3: 'CHL', + id: 43, + name: 'Chad', + code2: 'TD', + code3: 'TCD' }, { - name: 'China', - code3: 'CHN', + id: 44, + name: 'Chile', + code2: 'CL', + code3: 'CHL' }, { - name: 'Cyprus', - code3: 'CYP', + id: 45, + name: 'China', + code2: 'CN', + code3: 'CHN' }, { - name: 'Singapore', - code3: 'SGP', + id: 46, + name: 'Christmas Island', + code2: 'CX', + code3: 'CXR' }, { - name: 'Colombia', - code3: 'COL', + id: 47, + name: 'Cocos (Keeling) Islands', + code2: 'CC', + code3: 'CCK' }, { - name: 'Comoros', - code3: 'COM', + id: 48, + name: 'Colombia', + code2: 'CO', + code3: 'COL' }, { - name: 'Congo', - code3: 'COG', + id: 49, + name: 'Comoros', + code2: 'KM', + code3: 'COM' }, { - name: 'North Korea', - code3: 'PRK', + id: 50, + name: 'Congo', + code2: 'CG', + code3: 'COG' }, { - name: 'Korea', - code3: 'KOR', + id: 51, + name: 'Congo (DRC)', + code2: 'CD', + code3: 'COD' }, { - name: 'Côte d\'Ivoire', - code3: 'CIV', + id: 52, + name: 'Cook Islands', + code2: 'CK', + code3: 'COK' }, { - name: 'Costa Rica', - code3: 'CRI', + id: 53, + name: 'Costa Rica', + code2: 'CR', + code3: 'CRI' }, { - name: 'Croatia', - code3: 'HRV', + id: 54, + name: 'Croatia', + code2: 'HR', + code3: 'HRV' }, { - name: 'Cuba', - code3: 'CUB', + id: 55, + name: 'Cuba', + code2: 'CU', + code3: 'CUB' }, { - name: 'Curaçao', - code3: 'CUW', + id: 56, + name: 'Curaçao', + code2: 'CW', + code3: 'CUW' }, { - name: 'Denmark', - code3: 'DNK', + id: 57, + name: 'Cyprus', + code2: 'CY', + code3: 'CYP' }, { - name: 'Djibouti', - code3: 'DJI', + id: 58, + name: 'Czech Republic', + code2: 'CZ', + code3: 'CZE' }, { - name: 'Dominica', - code3: 'DMA', + id: 59, + name: 'Côte d\'Ivoire', + code2: 'CI', + code3: 'CIV' }, { - name: 'Egypt', - code3: 'EGY', + id: 60, + name: 'Democratic Republic of Timor-Leste', + code2: 'TL', + code3: 'TLS' }, { - name: 'El Salvador', - code3: 'SLV', + id: 61, + name: 'Denmark', + code2: 'DK', + code3: 'DNK' }, { - name: 'United Arab Emirates', - code3: 'ARE', + id: 62, + name: 'Djibouti', + code2: 'DJ', + code3: 'DJI' }, { - name: 'Ecuador', - code3: 'ECU', + id: 63, + name: 'Dominica', + code2: 'DM', + code3: 'DMA' }, { - name: 'Eritrea', - code3: 'ERI', + id: 64, + name: 'Dominican Republic', + code2: 'DO', + code3: 'DOM' }, { - name: 'Slovakia', - code3: 'SVK', + id: 65, + name: 'Ecuador', + code2: 'EC', + code3: 'ECU' }, { - name: 'Slovenia', - code3: 'SVN', + id: 66, + name: 'Egypt', + code2: 'EG', + code3: 'EGY' }, { - name: 'Spain', - code3: 'ESP', + id: 67, + name: 'El Salvador', + code2: 'SV', + code3: 'SLV' }, { - name: 'United States', - code3: 'USA', + id: 68, + name: 'Equatorial Guinea', + code2: 'GQ', + code3: 'GNQ' }, { - name: 'Estonia', - code3: 'EST', + id: 69, + name: 'Eritrea', + code2: 'ER', + code3: 'ERI' }, { - name: 'Ethiopia', - code3: 'ETH', + id: 70, + name: 'Estonia', + code2: 'EE', + code3: 'EST' }, { - name: 'Fiji Islands', - code3: 'FJI', + id: 71, + name: 'Ethiopia', + code2: 'ET', + code3: 'ETH' }, { - name: 'Philippines', - code3: 'PHL', + id: 72, + name: 'Falkland Islands (Islas Malvinas)', + code2: 'FK', + code3: 'FLK' }, { - name: 'Finland', - code3: 'FIN', + id: 73, + name: 'Faroe Islands', + code2: 'FO', + code3: 'FRO' }, { - name: 'France', - code3: 'FRA', + id: 74, + name: 'Fiji Islands', + code2: 'FJ', + code3: 'FJI' }, { - name: 'Gabon', - code3: 'GAB', + id: 75, + name: 'Finland', + code2: 'FI', + code3: 'FIN' }, { - name: 'Gambia, The', - code3: 'GMB', + id: 76, + name: 'France', + code2: 'FR', + code3: 'FRA' }, { - name: 'Ghana', - code3: 'GHA', + id: 77, + name: 'French Guiana', + code2: 'GF', + code3: 'GUF' }, { - name: 'Georgia', - code3: 'GEO', + id: 78, + name: 'French Polynesia', + code2: 'PF', + code3: 'PYF' }, { - name: 'Gibraltar', - code3: 'GIB', + id: 79, + name: 'French Southern and Antarctic Lands', + code2: 'TF', + code3: 'ATF' }, { - name: 'Grenada', - code3: 'GRD', + id: 80, + name: 'Gabon', + code2: 'GA', + code3: 'GAB' }, { - name: 'Greece', - code3: 'GRC', + id: 81, + name: 'Gambia, The', + code2: 'GM', + code3: 'GMB' }, { - name: 'Greenland', - code3: 'GRL', + id: 82, + name: 'Georgia', + code2: 'GE', + code3: 'GEO' }, { - name: 'Guadeloupe', - code3: 'GLP', + id: 83, + name: 'Germany', + code2: 'DE', + code3: 'DEU' }, { - name: 'Guam', - code3: 'GUM', + id: 84, + name: 'Ghana', + code2: 'GH', + code3: 'GHA' }, { - name: 'Guatemala', - code3: 'GTM', + id: 85, + name: 'Gibraltar', + code2: 'GI', + code3: 'GIB' }, { - name: 'Guernsey', - code3: 'GGY', + id: 86, + name: 'Greece', + code2: 'GR', + code3: 'GRC' }, { - name: 'Guyana', - code3: 'GUY', + id: 87, + name: 'Greenland', + code2: 'GL', + code3: 'GRL' }, { - name: 'French Guiana', - code3: 'GUF', + id: 88, + name: 'Grenada', + code2: 'GD', + code3: 'GRD' }, { - name: 'Guinea', - code3: 'GIN', + id: 89, + name: 'Guadeloupe', + code2: 'GP', + code3: 'GLP' }, { - name: 'Equatorial Guinea', - code3: 'GNQ', + id: 90, + name: 'Guam', + code2: 'GU', + code3: 'GUM' }, { - name: 'Guinea-Bissau', - code3: 'GNB', + id: 91, + name: 'Guatemala', + code2: 'GT', + code3: 'GTM' }, { - name: 'Haiti', - code3: 'HTI', + id: 92, + name: 'Guernsey', + code2: 'GG', + code3: 'GGY' }, { - name: 'Netherlands', - code3: 'NLD', + id: 93, + name: 'Guinea', + code2: 'GN', + code3: 'GIN' }, { - name: 'Honduras', - code3: 'HND', + id: 94, + name: 'Guinea-Bissau', + code2: 'GW', + code3: 'GNB' }, { - name: 'Hong Kong SAR', - code3: 'HKG', + id: 95, + name: 'Guyana', + code2: 'GY', + code3: 'GUY' }, { - name: 'Hungary', - code3: 'HUN', + id: 96, + name: 'Haiti', + code2: 'HT', + code3: 'HTI' }, { - name: 'Yemen', - code3: 'YEM', + id: 97, + name: 'Heard Island and McDonald Islands', + code2: 'HM', + code3: 'HMD' }, { - name: 'Bouvet Island', - code3: 'BVT', + id: 98, + name: 'Honduras', + code2: 'HN', + code3: 'HND' }, { - name: 'Reunion', - code3: 'REU', + id: 99, + name: 'Hong Kong SAR', + code2: 'HK', + code3: 'HKG' }, { - name: 'Man, Isle of', - code3: 'IMN', + id: 100, + name: 'Hungary', + code2: 'HU', + code3: 'HUN' }, { - name: 'Saint Martin (French part)', - code3: 'MAF', + id: 101, + name: 'Iceland', + code2: 'IS', + code3: 'ISL' }, { - name: 'Heard Island and McDonald Islands', - code3: 'HMD', + id: 102, + name: 'India', + code2: 'IN', + code3: 'IND' }, { - name: 'Christmas Island', - code3: 'CXR', + id: 103, + name: 'Indonesia', + code2: 'ID', + code3: 'IDN' }, { - name: 'Norfolk Island', - code3: 'NFK', + id: 104, + name: 'Iran', + code2: 'IR', + code3: 'IRN' }, { - name: 'Åland Islands', - code3: 'ALA', + id: 105, + name: 'Iraq', + code2: 'IQ', + code3: 'IRQ' }, { - name: 'Cayman Islands', - code3: 'CYM', + id: 106, + name: 'Ireland', + code2: 'IE', + code3: 'IRL' }, { - name: 'Cocos (Keeling) Islands', - code3: 'CCK', + id: 107, + name: 'Israel', + code2: 'IL', + code3: 'ISR' }, { - name: 'Cook Islands', - code3: 'COK', + id: 108, + name: 'Italy', + code2: 'IT', + code3: 'ITA' }, { - name: 'Falkland Islands (Islas Malvinas)', - code3: 'FLK', + id: 109, + name: 'Jamaica', + code2: 'JM', + code3: 'JAM' }, { - name: 'Faroe Islands', - code3: 'FRO', + id: 110, + name: 'Jan Mayen', + code2: 'SJ', + code3: 'SJM' }, { - name: 'South Georgia and the South Sandwich Islands', - code3: 'SGS', + id: 111, + name: 'Japan', + code2: 'JP', + code3: 'JPN' }, { - name: 'Northern Mariana Islands', - code3: 'MNP', + id: 112, + name: 'Jersey', + code2: 'JE', + code3: 'JEY' }, { - name: 'Marshall Islands', - code3: 'MHL', + id: 113, + name: 'Jordan', + code2: 'JO', + code3: 'JOR' }, { - name: 'U.S. Minor Outlying Islands', - code3: 'UMI', + id: 114, + name: 'Kazakhstan', + code2: 'KZ', + code3: 'KAZ' }, { - name: 'Pitcairn Islands', - code3: 'PCN', + id: 115, + name: 'Kenya', + code2: 'KE', + code3: 'KEN' }, { - name: 'Solomon Islands', - code3: 'SLB', + id: 116, + name: 'Kiribati', + code2: 'KI', + code3: 'KIR' }, { - name: 'Turks and Caicos Islands', - code3: 'TCA', + id: 117, + name: 'Korea', + code2: 'KR', + code3: 'KOR' }, { - name: 'Virgin Islands, U.S.', - code3: 'VIR', + id: 118, + name: 'Kosovo', + code2: 'XK', + code3: 'XKX' }, { - name: 'Virgin Islands, British', - code3: 'VGB', + id: 119, + name: 'Kuwait', + code2: 'KW', + code3: 'KWT' }, { - name: 'India', - code3: 'IND', + id: 120, + name: 'Kyrgyzstan', + code2: 'KG', + code3: 'KGZ' }, { - name: 'Indonesia', - code3: 'IDN', + id: 121, + name: 'Laos', + code2: 'LA', + code3: 'LAO' }, { - name: 'Iran', - code3: 'IRN', + id: 122, + name: 'Latvia', + code2: 'LV', + code3: 'LVA' }, { - name: 'Iraq', - code3: 'IRQ', + id: 123, + name: 'Lebanon', + code2: 'LB', + code3: 'LBN' }, { - name: 'Ireland', - code3: 'IRL', + id: 124, + name: 'Lesotho', + code2: 'LS', + code3: 'LSO' }, { - name: 'Iceland', - code3: 'ISL', + id: 125, + name: 'Liberia', + code2: 'LR', + code3: 'LBR' }, { - name: 'Israel', - code3: 'ISR', + id: 126, + name: 'Libya', + code2: 'LY', + code3: 'LBY' }, { - name: 'Italy', - code3: 'ITA', + id: 127, + name: 'Liechtenstein', + code2: 'LI', + code3: 'LIE' }, { - name: 'Jamaica', - code3: 'JAM', + id: 128, + name: 'Lithuania', + code2: 'LT', + code3: 'LTU' }, { - name: 'Japan', - code3: 'JPN', + id: 129, + name: 'Luxembourg', + code2: 'LU', + code3: 'LUX' }, { - name: 'Jersey', - code3: 'JEY', + id: 130, + name: 'Macao SAR', + code2: 'MO', + code3: 'MAC' }, { - name: 'Jordan', - code3: 'JOR', + id: 131, + name: 'Macedonia, Former Yugoslav Republic of', + code2: 'MK', + code3: 'MKD' }, { - name: 'Kiribati', - code3: 'KIR', + id: 132, + name: 'Madagascar', + code2: 'MG', + code3: 'MDG' }, { - name: 'Kosovo', - code3: 'XKX', + id: 133, + name: 'Malawi', + code2: 'MW', + code3: 'MWI' }, { - name: 'Kuwait', - code3: 'KWT', + id: 134, + name: 'Malaysia', + code2: 'MY', + code3: 'MYS' }, { - name: 'Laos', - code3: 'LAO', + id: 135, + name: 'Maldives', + code2: 'MV', + code3: 'MDV' }, { - name: 'Lesotho', - code3: 'LSO', + id: 136, + name: 'Mali', + code2: 'ML', + code3: 'MLI' }, { - name: 'Latvia', - code3: 'LVA', + id: 137, + name: 'Malta', + code2: 'MT', + code3: 'MLT' }, { - name: 'Lebanon', - code3: 'LBN', + id: 138, + name: 'Man, Isle of', + code2: 'IM', + code3: 'IMN' }, { - name: 'Liberia', - code3: 'LBR', + id: 139, + name: 'Marshall Islands', + code2: 'MH', + code3: 'MHL' }, { - name: 'Libya', - code3: 'LBY', + id: 140, + name: 'Martinique', + code2: 'MQ', + code3: 'MTQ' }, { - name: 'Liechtenstein', - code3: 'LIE', + id: 141, + name: 'Mauritania', + code2: 'MR', + code3: 'MRT' }, { - name: 'Lithuania', - code3: 'LTU', + id: 142, + name: 'Mauritius', + code2: 'MU', + code3: 'MUS' }, { - name: 'Luxembourg', - code3: 'LUX', + id: 143, + name: 'Mayotte', + code2: 'YT', + code3: 'MYT' }, { - name: 'Macao SAR', - code3: 'MAC', + id: 144, + name: 'Mexico', + code2: 'MX', + code3: 'MEX' }, { - name: 'Macedonia, Former Yugoslav Republic of', - code3: 'MKD', + id: 145, + name: 'Micronesia', + code2: 'FM', + code3: 'FSM' }, { - name: 'Madagascar', - code3: 'MDG', + id: 146, + name: 'Moldova', + code2: 'MD', + code3: 'MDA' }, { - name: 'Malaysia', - code3: 'MYS', + id: 147, + name: 'Monaco', + code2: 'MC', + code3: 'MCO' }, { - name: 'Malawi', - code3: 'MWI', + id: 148, + name: 'Mongolia', + code2: 'MN', + code3: 'MNG' }, { - name: 'Maldives', - code3: 'MDV', + id: 149, + name: 'Montenegro', + code2: 'ME', + code3: 'MNE' }, { - name: 'Mali', - code3: 'MLI', + id: 150, + name: 'Montserrat', + code2: 'MS', + code3: 'MSR' }, { - name: 'Malta', - code3: 'MLT', + id: 151, + name: 'Morocco', + code2: 'MA', + code3: 'MAR' }, { - name: 'Morocco', - code3: 'MAR', + id: 152, + name: 'Mozambique', + code2: 'MZ', + code3: 'MOZ' }, { - name: 'Martinique', - code3: 'MTQ', + id: 153, + name: 'Myanmar', + code2: 'MM', + code3: 'MMR' }, { - name: 'Mauritius', - code3: 'MUS', + id: 154, + name: 'Namibia', + code2: 'NA', + code3: 'NAM' }, { - name: 'Mauritania', - code3: 'MRT', + id: 155, + name: 'Nauru', + code2: 'NR', + code3: 'NRU' }, { - name: 'Mayotte', - code3: 'MYT', + id: 156, + name: 'Nepal', + code2: 'NP', + code3: 'NPL' }, { - name: 'Mexico', - code3: 'MEX', + id: 157, + name: 'Netherlands', + code2: 'NL', + code3: 'NLD' }, { - name: 'Micronesia', - code3: 'FSM', + id: 158, + name: 'New Caledonia', + code2: 'NC', + code3: 'NCL' }, { - name: 'Mozambique', - code3: 'MOZ', + id: 159, + name: 'New Zealand', + code2: 'NZ', + code3: 'NZL' }, { - name: 'Moldova', - code3: 'MDA', + id: 160, + name: 'Nicaragua', + code2: 'NI', + code3: 'NIC' }, { - name: 'Monaco', - code3: 'MCO', + id: 161, + name: 'Niger', + code2: 'NE', + code3: 'NER' }, { - name: 'Mongolia', - code3: 'MNG', + id: 162, + name: 'Nigeria', + code2: 'NG', + code3: 'NGA' }, { - name: 'Montenegro', - code3: 'MNE', + id: 163, + name: 'Niue', + code2: 'NU', + code3: 'NIU' }, { - name: 'Montserrat', - code3: 'MSR', + id: 164, + name: 'Norfolk Island', + code2: 'NF', + code3: 'NFK' }, { - name: 'Myanmar', - code3: 'MMR', + id: 165, + name: 'North Korea', + code2: 'KP', + code3: 'PRK' }, { - name: 'Namibia', - code3: 'NAM', + id: 166, + name: 'Northern Mariana Islands', + code2: 'MP', + code3: 'MNP' }, { - name: 'Nauru', - code3: 'NRU', + id: 167, + name: 'Norway', + code2: 'NO', + code3: 'NOR' }, { - name: 'Nepal', - code3: 'NPL', + id: 168, + name: 'Oman', + code2: 'OM', + code3: 'OMN' }, { - name: 'Nicaragua', - code3: 'NIC', + id: 169, + name: 'Pakistan', + code2: 'PK', + code3: 'PAK' }, { - name: 'Niger', - code3: 'NER', + id: 170, + name: 'Palau', + code2: 'PW', + code3: 'PLW' }, { - name: 'Nigeria', - code3: 'NGA', + id: 171, + name: 'Palestinian Authority', + code2: 'PS', + code3: 'PSE' }, { - name: 'Niue', - code3: 'NIU', + id: 172, + name: 'Panama', + code2: 'PA', + code3: 'PAN' }, { - name: 'Norway', - code3: 'NOR', + id: 173, + name: 'Papua New Guinea', + code2: 'PG', + code3: 'PNG' }, { - name: 'New Caledonia', - code3: 'NCL', + id: 174, + name: 'Paraguay', + code2: 'PY', + code3: 'PRY' }, { - name: 'New Zealand', - code3: 'NZL', + id: 175, + name: 'Peru', + code2: 'PE', + code3: 'PER' }, { - name: 'Oman', - code3: 'OMN', + id: 176, + name: 'Philippines', + code2: 'PH', + code3: 'PHL' }, { - name: 'Palau', - code3: 'PLW', + id: 177, + name: 'Pitcairn Islands', + code2: 'PN', + code3: 'PCN' }, { - name: 'Panama', - code3: 'PAN', + id: 178, + name: 'Poland', + code2: 'PL', + code3: 'POL' }, { - name: 'Papua New Guinea', - code3: 'PNG', + id: 179, + name: 'Portugal', + code2: 'PT', + code3: 'PRT' }, { - name: 'Pakistan', - code3: 'PAK', + id: 180, + name: 'Puerto Rico', + code2: 'PR', + code3: 'PRI' }, { - name: 'Paraguay', - code3: 'PRY', + id: 181, + name: 'Qatar', + code2: 'QA', + code3: 'QAT' }, { - name: 'Peru', - code3: 'PER', + id: 182, + name: 'Reunion', + code2: 'RE', + code3: 'REU' }, { - name: 'French Polynesia', - code3: 'PYF', + id: 183, + name: 'Romania', + code2: 'RO', + code3: 'ROM' }, { - name: 'Poland', - code3: 'POL', + id: 184, + name: 'Russia', + code2: 'RU', + code3: 'RUS' }, { - name: 'Puerto Rico', - code3: 'PRI', + id: 185, + name: 'Rwanda', + code2: 'RW', + code3: 'RWA' }, { - name: 'Portugal', - code3: 'PRT', + id: 186, + name: 'Saint Martin (French part)', + code2: 'MF', + code3: 'MAF' }, { - name: 'Kenya', - code3: 'KEN', + id: 187, + name: 'Saudi Arabia', + code2: 'SA', + code3: 'SAU' }, { - name: 'Kyrgyzstan', - code3: 'KGZ', + id: 188, + name: 'Singapore', + code2: 'SG', + code3: 'SGP' }, { - name: 'United Kingdom', - code3: 'GBR', + id: 189, + name: 'Slovakia', + code2: 'SK', + code3: 'SVK' }, { - name: 'Central African Republic', - code3: 'CAF', + id: 190, + name: 'Slovenia', + code2: 'SI', + code3: 'SVN' }, { - name: 'Congo (DRC)', - code3: 'COD', + id: 191, + name: 'Solomon Islands', + code2: 'SB', + code3: 'SLB' }, { - name: 'Dominican Republic', - code3: 'DOM', + id: 192, + name: 'South Africa', + code2: 'ZA', + code3: 'ZAF' }, { - name: 'Czech Republic', - code3: 'CZE', + id: 193, + name: 'South Georgia and the South Sandwich Islands', + code2: 'GS', + code3: 'SGS' }, { - name: 'Romania', - code3: 'ROM', + id: 194, + name: 'Spain', + code2: 'ES', + code3: 'ESP' }, { - name: 'Rwanda', - code3: 'RWA', + id: 195, + name: 'Turks and Caicos Islands', + code2: 'TC', + code3: 'TCA' }, { - name: 'Russia', - code3: 'RUS', + id: 196, + name: 'U.S. Minor Outlying Islands', + code2: 'UM', + code3: 'UMI' }, { - name: '', - code3: 'ESH', + id: 197, + name: 'United Arab Emirates', + code2: 'AE', + code3: 'ARE' }, { - name: 'Bonaire, Sint Eustatius and Saba', - code3: 'BES', + id: 198, + name: 'United States', + code2: 'US', + code3: 'USA' }, { - name: 'Samoa', - code3: 'WSM', + id: 199, + name: 'Virgin Islands, British', + code2: 'VG', + code3: 'VGB' }, { - name: 'American Samoa', - code3: 'ASM', + id: 200, + name: 'Virgin Islands, U.S.', + code2: 'VI', + code3: 'VIR' }, { - name: 'San Marino', - code3: 'SMR', + id: 201, + name: 'Yemen', + code2: 'YE', + code3: 'YEM' }, { - name: 'Saint Helena, Ascension and Tristan da Cunha', - code3: 'SHN', + id: 202, + name: 'Åland Islands', + code2: 'AX', + code3: 'ALA' }, { - name: 'Saint Lucia', - code3: 'LCA', + id: 203, + name: '', + code2: 'EH', + code3: 'ESH' }, { - name: 'Saint Barthélemy', - code3: 'BLM', + id: 204, + name: 'Bolivarian Republic of Venezuela', + code2: 'VE', + code3: 'VEN' }, { - name: 'Saint Kitts and Nevis', - code3: 'KNA', + id: 205, + name: 'Saint Barthélemy', + code2: 'BL', + code3: 'BLM' }, { - name: 'Sint Maarten (Dutch part)', - code3: 'SXM', + id: 206, + name: 'Saint Helena, Ascension and Tristan da Cunha', + code2: 'SH', + code3: 'SHN' }, { - name: 'Saint Pierre and Miquelon', - code3: 'SPM', + id: 207, + name: 'Saint Kitts and Nevis', + code2: 'KN', + code3: 'KNA' }, { - name: 'São Tomé and Príncipe', - code3: 'STP', + id: 208, + name: 'Saint Lucia', + code2: 'LC', + code3: 'LCA' }, { - name: 'Saint Vincent and the Grenadines', - code3: 'VCT', + id: 209, + name: 'Saint Pierre and Miquelon', + code2: 'PM', + code3: 'SPM' }, { - name: 'Senegal', - code3: 'SEN', + id: 210, + name: 'Saint Vincent and the Grenadines', + code2: 'VC', + code3: 'VCT' }, { - name: 'Sierra Leone', - code3: 'SLE', + id: 211, + name: 'Samoa', + code2: 'WS', + code3: 'WSM' }, { - name: 'Serbia', - code3: 'SRB', + id: 212, + name: 'San Marino', + code2: 'SM', + code3: 'SMR' }, { - name: 'Seychelles', - code3: 'SYC', + id: 213, + name: 'Senegal', + code2: 'SN', + code3: 'SEN' }, { - name: 'Syria', - code3: 'SYR', + id: 214, + name: 'Serbia', + code2: 'RS', + code3: 'SRB' }, { - name: 'Somalia', - code3: 'SOM', + id: 215, + name: 'Seychelles', + code2: 'SC', + code3: 'SYC' }, { - name: 'Sri Lanka', - code3: 'LKA', + id: 216, + name: 'Sierra Leone', + code2: 'SL', + code3: 'SLE' }, { - name: 'Swaziland', - code3: 'SWZ', + id: 217, + name: 'Sint Maarten (Dutch part)', + code2: 'SX', + code3: 'SXM' }, { - name: 'Sudan', - code3: 'SDN', + id: 218, + name: 'Somalia', + code2: 'SO', + code3: 'SOM' }, { - name: 'South Sudan', - code3: 'SSD', + id: 219, + name: 'South Sudan', + code2: 'SS', + code3: 'SSD' }, { - name: 'Sweden', - code3: 'SWE', + id: 220, + name: 'Sri Lanka', + code2: 'LK', + code3: 'LKA' }, { - name: 'Switzerland', - code3: 'CHE', + id: 221, + name: 'Sudan', + code2: 'SD', + code3: 'SDN' }, { - name: 'Suriname', - code3: 'SUR', + id: 222, + name: 'Suriname', + code2: 'SR', + code3: 'SUR' }, { - name: 'Jan Mayen', - code3: 'SJM', + id: 223, + name: 'Swaziland', + code2: 'SZ', + code3: 'SWZ' }, { - name: 'Thailand', - code3: 'THA', + id: 224, + name: 'Sweden', + code2: 'SE', + code3: 'SWE' }, { - name: 'Taiwan', - code3: 'TWN', + id: 225, + name: 'Switzerland', + code2: 'CH', + code3: 'CHE' }, { - name: 'Tajikistan', - code3: 'TJK', + id: 226, + name: 'Syria', + code2: 'SY', + code3: 'SYR' }, { - name: 'Tanzania', - code3: 'TZA', + id: 227, + name: 'São Tomé and Príncipe', + code2: 'ST', + code3: 'STP' }, { - name: 'French Southern and Antarctic Lands', - code3: 'ATF', + id: 228, + name: 'Taiwan', + code2: 'TW', + code3: 'TWN' }, { - name: 'British Indian Ocean Territory', - code3: 'IOT', + id: 229, + name: 'Tajikistan', + code2: 'TJ', + code3: 'TJK' }, { - name: 'Palestinian Authority', - code3: 'PSE', + id: 230, + name: 'Tanzania', + code2: 'TZ', + code3: 'TZA' }, { - name: 'Democratic Republic of Timor-Leste', - code3: 'TLS', + id: 231, + name: 'Thailand', + code2: 'TH', + code3: 'THA' }, { - name: 'Togo', - code3: 'TGO', + id: 232, + name: 'Togo', + code2: 'TG', + code3: 'TGO' }, { - name: 'Tonga', - code3: 'TON', + id: 233, + name: 'Tokelau', + code2: 'TK', + code3: 'TKL' }, { - name: 'Tokelau', - code3: 'TKL', + id: 234, + name: 'Tonga', + code2: 'TO', + code3: 'TON' }, { - name: 'Trinidad and Tobago', - code3: 'TTO', + id: 235, + name: 'Trinidad and Tobago', + code2: 'TT', + code3: 'TTO' }, { - name: 'Tunisia', - code3: 'TUN', + id: 236, + name: 'Tunisia', + code2: 'TN', + code3: 'TUN' }, { - name: 'Turkmenistan', - code3: 'TKM', + id: 237, + name: 'Turkey', + code2: 'TR', + code3: 'TUR' }, { - name: 'Turkey', - code3: 'TUR', + id: 238, + name: 'Turkmenistan', + code2: 'TM', + code3: 'TKM' }, { - name: 'Tuvalu', - code3: 'TUV', + id: 239, + name: 'Tuvalu', + code2: 'TV', + code3: 'TUV' }, { - name: 'Ukraine', - code3: 'UKR', + id: 240, + name: 'Uganda', + code2: 'UG', + code3: 'UGA' }, { - name: 'Uganda', - code3: 'UGA', + id: 241, + name: 'Ukraine', + code2: 'UA', + code3: 'UKR' }, { - name: 'Uruguay', - code3: 'URY', + id: 242, + name: 'United Kingdom', + code2: 'GB', + code3: 'GBR' }, { - name: 'Uzbekistan', - code3: 'UZB', + id: 243, + name: 'Uruguay', + code2: 'UY', + code3: 'URY' }, { - name: 'Vanuatu', - code3: 'VUT', + id: 244, + name: 'Uzbekistan', + code2: 'UZ', + code3: 'UZB' }, { - name: 'Vatican City', - code3: 'VAT', + id: 245, + name: 'Vanuatu', + code2: 'VU', + code3: 'VUT' }, { - name: 'Bolivarian Republic of Venezuela', - code3: 'VEN', + id: 246, + name: 'Vatican City', + code2: 'VA', + code3: 'VAT' }, { - name: 'Vietnam', - code3: 'VNM', + id: 247, + name: 'Vietnam', + code2: 'VN', + code3: 'VNM' }, { - name: 'Wallis and Futuna', - code3: 'WLF', + id: 248, + name: 'Wallis and Futuna', + code2: 'WF', + code3: 'WLF' }, { - name: 'Zambia', - code3: 'ZMB', + id: 249, + name: 'Zambia', + code2: 'ZM', + code3: 'ZMB' }, { - name: 'Zimbabwe', - code3: 'ZWE', - }, + id: 250, + name: 'Zimbabwe', + code2: 'ZW', + code3: 'ZWE' + } ] From 49ff3b30358690065ad4d1758321381fd2016a2f Mon Sep 17 00:00:00 2001 From: MGrgr Date: Tue, 14 Nov 2023 12:36:55 +0300 Subject: [PATCH 5/5] fix: policy-formatter: ciruit enum --- .../albus-sdk/src/utils/policy-formatter.ts | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/packages/albus-sdk/src/utils/policy-formatter.ts b/packages/albus-sdk/src/utils/policy-formatter.ts index c53d7354..4241e350 100644 --- a/packages/albus-sdk/src/utils/policy-formatter.ts +++ b/packages/albus-sdk/src/utils/policy-formatter.ts @@ -2,6 +2,13 @@ import type { PublicKey } from '@solana/web3.js' import { COUNTRIES_LIST } from '../countries' import { PolicyRule } from '../generated' +export enum Circuit { + Age = 'age', + Attendance = 'attendance', + Liveness = 'liveness', + Country = 'country', +} + const EVENTS = { cacf: 'Crypto assets conference, Frankfurt', sb2023a: 'Solana breakpoint 2023, Amsterdam', @@ -48,7 +55,7 @@ function hasKey(rules: PolicyRule[], key: string) { return !!rules.find(r => r.key === key) } -function getCircuitByRules(rules: PolicyRule[]) { +function getCircuitByRules(rules: PolicyRule[]): Circuit | null { if ( hasKey(rules, 'minAge') && ( @@ -56,28 +63,28 @@ function getCircuitByRules(rules: PolicyRule[]) { || (rules.length === 2 && hasKey(rules, 'maxAge')) ) ) { - return 'age' + return Circuit.Age } else if ( rules.length === 3 && hasKey(rules, 'expectedEvent') && hasKey(rules, 'expectedDateFrom') && hasKey(rules, 'expectedDateTo') ) { - return 'attendance' + return Circuit.Attendance } else if ( rules.length === 3 && hasKey(rules, 'selectionMode') && hasKey(rules, 'countryLookup.0') && hasKey(rules, 'countryLookup.1') ) { - return 'liveness' + return Circuit.Liveness } else if ( rules.length === 1 && hasKey(rules, 'expectedType') ) { - return 'country' + return Circuit.Country } - return '' + return null } function normalizeRule({ key, label, value }: { key: string; label: string; value: number[] }): PolicyRuleNormalized { @@ -124,11 +131,11 @@ export function normalizePolicyRules(props: PolicyRule[]): PolicyRuleNormalized[ export function formatPolicyRules(data: { circuit: PublicKey; rules: PolicyRule[] }): string { const rules = normalizePolicyRules(data.rules) switch (getCircuitByRules(data.rules)) { - case 'age': { + case Circuit.Age: { const to = rules[1]?.value !== '100' ? `to ${rules[1]?.value}` : '' return `Age: from ${data.rules[0]?.label} ${to}` } - case 'attendance': { + case Circuit.Attendance: { const expectedDateFrom = Number(rules[1]?.value) const expectedDateTo = Number(rules[2]?.value) @@ -140,10 +147,10 @@ export function formatPolicyRules(data: { circuit: PublicKey; rules: PolicyRule[ const event = rules[0]?.value return `Event: ${event}, Date: ${from} - ${to}` } - case 'liveness': { + case Circuit.Liveness: { return `Verifying issuer: ${rules[0]?.value}` } - case 'country': { + case Circuit.Country: { return `Mode: ${rules[0]?.value}. Countries: ${rules[1]?.value}` } default: