1- let is_searching = false ;
2- let pattern_domain = '^[a-zA-Z0-9_][a-zA-Z0-9.-]*' ;
3- let timer_search = undefined ;
4- let reserved_domain = undefined ;
5- const search_domain = document . getElementById ( 'search-domain' ) ;
6- // result containers
7- const result_card = document . getElementById ( 'result-card' ) ;
8- const result_none = document . getElementById ( 'result-none' ) ;
9- const result_error = document . getElementById ( 'result-error' ) ;
10- const result_reserved = document . getElementById ( 'result-reserved' ) ;
11- // user propagate
12- const user_avatar = document . getElementById ( 'user-avatar' ) ;
13- const user_gh_link = document . getElementById ( 'user-gh-link' ) ;
14- const user_name = document . getElementById ( 'user-name' ) ;
15- const user_website_link = document . getElementById ( 'user-website-link' ) ;
16- const user_info = document . getElementById ( 'user-info' ) ;
1+ let is_searching = false ;
2+ let pattern_domain = "^[a-zA-Z0-9_][a-zA-Z0-9.-]*" ;
3+ let timer_search = undefined ;
4+ let reserved_domain = undefined ;
5+ const search_domain = document . getElementById ( "search-domain" ) ;
6+ const result_card = document . getElementById ( "result-card" ) ;
7+ const result_none = document . getElementById ( "result-none" ) ;
8+ const result_error = document . getElementById ( "result-error" ) ;
9+ const result_reserved = document . getElementById ( "result-reserved" ) ;
10+ const user_avatar = document . getElementById ( "user-avatar" ) ;
11+ const user_gh_link = document . getElementById ( "user-gh" ) ;
12+ const user_gh_name = document . getElementById ( "user-gh-name" ) ;
1713
18- function check ( ) {
19- const search = search_domain . value . trim ( ) . replace ( / \s / g, '-' ) . toLowerCase ( ) ;
20- if ( isReserved ( search ) ) {
14+ function check ( ) {
15+ const search = search_domain . value . trim ( ) . replace ( / \s / g, "-" ) . toLowerCase ( ) ;
16+ if ( isReserved ( search ) ) {
2117 hideResults ( ) ;
22- result_reserved . classList . toggle ( ' hidden' ) ;
18+ result_reserved . classList . toggle ( " hidden" ) ;
2319 return ;
2420 }
25- if ( ! search || is_searching ) return ;
26- is_searching = true ;
21+ if ( ! search || is_searching ) return ;
22+ is_searching = true ;
2723 fetch ( `https://raw.githubusercontent.com/is-a-dev/register/main/domains/${ search } .json` )
28- . then ( response => {
29- hideResults ( ) ;
30- if ( ! response . ok && response . status !== 404 )
31- throw new Error ( 'Something went wrong' ) ;
32- return ! response . ok ? null :
33- response . json ( ) ;
34- } )
35- . then ( json => {
36- if ( json )
37- {
38- json . search = search ;
39- propagateResult ( json ) ;
40- }
41- else if ( result_none . classList . contains ( 'hidden' ) )
42- result_none . classList . toggle ( 'hidden' ) ;
43- } )
44- . catch ( ( reason ) => {
45- console . log ( reason ) ;
46- if ( result_error . classList . contains ( 'hidden' ) ) result_error . classList . toggle ( 'hidden' ) ;
47- } ) . finally ( ( ) => {
48- is_searching = false ;
49- } ) ;
24+ . then ( ( response ) => {
25+ hideResults ( ) ;
26+ if ( ! response . ok && response . status !== 404 ) throw new Error ( "Something went wrong" ) ;
27+ return ! response . ok ? null : response . json ( ) ;
28+ } )
29+ . then ( ( json ) => {
30+ if ( json ) {
31+ json . search = search ;
32+ propagateResult ( json ) ;
33+ } else if ( result_none . classList . contains ( "hidden" ) ) result_none . classList . toggle ( "hidden" ) ;
34+ } )
35+ . catch ( ( reason ) => {
36+ console . log ( reason ) ;
37+ if ( result_error . classList . contains ( "hidden" ) ) result_error . classList . toggle ( "hidden" ) ;
38+ } )
39+ . finally ( ( ) => {
40+ is_searching = false ;
41+ } ) ;
5042}
5143
52- function propagateResult ( data ) {
53- if ( result_card . classList . contains ( 'hidden' ) ) result_card . classList . remove ( 'hidden' ) ;
54- var gh_link = `https://github.com/${ data . owner . username } ` ;
55- var website_link = `${ data . search } .is-a.dev` ;
56- user_avatar . src = `${ gh_link } .png?size=120` ;
57- user_gh_link . href = gh_link ;
58- user_name . innerHTML = data . owner . username ;
59- user_website_link . href = `https://${ website_link } ` ;
60- user_website_link . innerHTML = website_link ;
61- user_info . textContent = data . description || '' ;
44+ function propagateResult ( data ) {
45+ if ( result_card . classList . contains ( "hidden" ) ) result_card . classList . remove ( "hidden" ) ;
46+ var gh_link = `https://github.com/${ data . owner . username } ` ;
47+ user_avatar . src = `${ gh_link } .png?size=64` ;
48+ user_gh_link . href = gh_link ;
49+ user_gh_name . innerHTML = data . owner . username ;
6250}
6351
64- function hideResults ( ) {
65- if ( ! result_card . classList . contains ( ' hidden' ) ) result_card . classList . toggle ( ' hidden' ) ;
66- if ( ! result_none . classList . contains ( ' hidden' ) ) result_none . classList . toggle ( ' hidden' ) ;
67- if ( ! result_error . classList . contains ( ' hidden' ) ) result_error . classList . toggle ( ' hidden' ) ;
68- if ( ! result_reserved . classList . contains ( ' hidden' ) ) result_reserved . classList . toggle ( ' hidden' ) ;
52+ function hideResults ( ) {
53+ if ( ! result_card . classList . contains ( " hidden" ) ) result_card . classList . toggle ( " hidden" ) ;
54+ if ( ! result_none . classList . contains ( " hidden" ) ) result_none . classList . toggle ( " hidden" ) ;
55+ if ( ! result_error . classList . contains ( " hidden" ) ) result_error . classList . toggle ( " hidden" ) ;
56+ if ( ! result_reserved . classList . contains ( " hidden" ) ) result_reserved . classList . toggle ( " hidden" ) ;
6957}
7058
71- function isReserved ( domain ) {
59+ function isReserved ( domain ) {
7260 const reserved_domains = new Set ( reserved_domain ) ;
73- return reserved_domains . has ( domain ) || reserved_domain . some ( pattern => pattern . includes ( '[' ) && new RegExp ( pattern ) . test ( domain ) ) ;
61+ return (
62+ reserved_domains . has ( domain ) ||
63+ reserved_domain . some ( ( pattern ) => pattern . includes ( "[" ) && new RegExp ( pattern ) . test ( domain ) )
64+ ) ;
7465}
7566
7667async function fetchReservedDomains ( ) {
7768 try {
78- if ( typeof reserved_domain === 'undefined' ) {
79- if ( typeof timer_search !== 'undefined' ) {
80- clearInterval ( timer_search ) ;
81- }
82-
83- const response = await fetch ( 'https://raw.githubusercontent.com/is-a-dev/register/main/util/reserved.json' ) ;
84- if ( ! response . ok ) {
85- throw new Error ( 'Something went wrong' ) ;
69+ if ( typeof reserved_domain === "undefined" ) {
70+ if ( typeof timer_search !== "undefined" ) {
71+ clearInterval ( timer_search ) ;
72+ }
73+
74+ const response = await fetch ( "https://raw.githubusercontent.com/is-a-dev/register/main/util/reserved.json" ) ;
75+ if ( ! response . ok ) {
76+ throw new Error ( "Something went wrong" ) ;
77+ }
78+
79+ reserved_domain = await response . json ( ) ;
80+ search_domain . disabled = false ;
81+ search_domain . placeholder = "e.g. william" ;
8682 }
87-
88- reserved_domain = await response . json ( ) ;
89- search_domain . disabled = false ;
90- search_domain . placeholder = 'e.g. william' ;
91- document . getElementById ( 'search-keyword' ) . innerHTML = '*Start typing to check the subdomain availability, <a alt="filname-convention" target="_blank" href="https://docs.is-a.dev/domain-structure/#filename">check here</a> to learn how to create a proper domain name.' ;
92- }
9383 } catch ( error ) {
94- console . error ( ' Error fetching reserved domains:' , error ) ;
84+ console . error ( " Error fetching reserved domains:" , error ) ;
9585 }
96- }
86+ }
9787
98- search_domain . addEventListener ( ' input' , function ( evt ) {
88+ search_domain . addEventListener ( " input" , function ( evt ) {
9989 const input_value = this . value . trim ( ) ;
10090
101- if ( input_value === '' ) {
102- clearTimer ( ) ;
103- hideResults ( ) ;
104- return ;
91+ if ( input_value === "" ) {
92+ clearTimer ( ) ;
93+ hideResults ( ) ;
94+ return ;
10595 }
106-
96+
10797 const matched_value = input_value . match ( new RegExp ( pattern_domain ) ) ;
10898 if ( matched_value ) {
109- search_domain . value = matched_value [ 0 ] ;
99+ search_domain . value = matched_value [ 0 ] ;
110100 }
111-
101+
112102 clearTimer ( ) ;
113103 timer_search = setTimeout ( ( ) => check ( ) , 1000 ) ;
114- } ) ;
115-
116- function clearTimer ( ) {
104+ } ) ;
105+
106+ function clearTimer ( ) {
117107 if ( timer_search !== undefined ) {
118- clearInterval ( timer_search ) ;
108+ clearInterval ( timer_search ) ;
119109 }
120- }
110+ }
121111
122- fetchReservedDomains ( ) ;
112+ fetchReservedDomains ( ) ;
0 commit comments