mirror of
https://github.com/tiennm99/is-a-dev.git
synced 2026-10-20 02:17:34 +00:00
Merge branch 'is-a-dev:main' into main
This commit is contained in:
14 files changed
+114
-20
No files matched your search
@@ -4,6 +4,9 @@ To register `my-domain.is-a.dev`, you need to create a `domains/my-domain.json`
|
|||||||
|
|
||||||
### Filename
|
### Filename
|
||||||
The file name must pass the following criteria -
|
The file name must pass the following criteria -
|
||||||
|
|
||||||
|
> NOTE: You can use `.` (dots) in your file name (for registering `blog.mysubdomain.is-a.dev`) but each of the following criteria must be valid for all part of your subdomain
|
||||||
|
|
||||||
* Must be alpha-numeric in lowercase with dashes as seperators
|
* Must be alpha-numeric in lowercase with dashes as seperators
|
||||||
* Must be more than 2 characters long
|
* Must be more than 2 characters long
|
||||||
* Must have a `.json` file extension
|
* Must have a `.json` file extension
|
||||||
@@ -25,7 +28,7 @@ In the owner object, the fields `username` and `email` are required. You can how
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
If you don't wish to share your email address here, please share your twitter or any other social media account.
|
If you don't wish to share your email address here, please share your twitter, discord or any other social media account.
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"owner": {
|
"owner": {
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"description": "Docs for algebraic effects library",
|
||||||
|
"repo": "https://github.com/phenax/algebraic-effects",
|
||||||
|
"owner": {
|
||||||
|
"username": "phenax",
|
||||||
|
"email": "phenax5@gmail.com"
|
||||||
|
},
|
||||||
|
"record": {
|
||||||
|
"CNAME": "phenax.github.io"
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
"description": "Bad Boy's Website",
|
"description": "Bad Boy's Website",
|
||||||
"repo": "https://github.com/Bad-Boy-Codes/bad-boy-codes.github.io",
|
"repo": "https://github.com/Bad-Boy-Codes/bad-boy-codes.github.io",
|
||||||
"owner": {
|
"owner": {
|
||||||
"username": "badboy",
|
"username": "bad-boy-codes",
|
||||||
"email": "badboyplays9999@gmail.com"
|
"email": "badboyplays9999@gmail.com"
|
||||||
},
|
},
|
||||||
"record": {
|
"record": {
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"description": "Catzboy Profilo",
|
||||||
|
"repo": "https://github.com/Maruful007/Maruful007",
|
||||||
|
"owner": {
|
||||||
|
"username": "Maruful007",
|
||||||
|
"email": "marufulislamsami2007@gmail.com"
|
||||||
|
},
|
||||||
|
"record": {
|
||||||
|
"CNAME": "maruful007.github.io"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"description": "My personal Website",
|
||||||
|
"repo": "https://github.com/cens6r/cens6r.github.io",
|
||||||
|
"owner": {
|
||||||
|
"username": "censor",
|
||||||
|
"email": "cens6r.dev@gmail.com",
|
||||||
|
"discord": "cens6r#0001",
|
||||||
|
"note": "It is faster to contact me on Discord."
|
||||||
|
},
|
||||||
|
"record": {
|
||||||
|
"CNAME": "cens6r.github.io"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"owner": {
|
||||||
|
"username": "korauo",
|
||||||
|
"email": "korauo69@gmail.com",
|
||||||
|
"twitter": "korauo",
|
||||||
|
"discord": "korauo#1423"
|
||||||
|
},
|
||||||
|
"record": {
|
||||||
|
"CNAME": "korauo.github.io"
|
||||||
|
}
|
||||||
|
}
|
||||||
+11
-11
@@ -1,13 +1,13 @@
|
|||||||
{
|
{
|
||||||
"description": "Personal portfolio built with ReactJS",
|
"description": "Personal portfolio built with ReactJS",
|
||||||
"repo": "https://github.com/kyuzu/",
|
"repo": "https://github.com/kyuzu/portfolio",
|
||||||
"owner": {
|
"owner": {
|
||||||
"username": "kyuzu",
|
"username": "kyuzu",
|
||||||
"discord": "Kyuzu#9214",
|
"discord": "Kyuzu#9214",
|
||||||
"twitter": "kyuzudev",
|
"twitter": "kyuzudev",
|
||||||
"email": ""
|
"email": ""
|
||||||
},
|
},
|
||||||
"record": {
|
"record": {
|
||||||
"CNAME": "8ec71685ba9c73e0eaeabaa5.cname.deno.dev"
|
"CNAME": "280985daeff00a3fed6006ff.cname.deno.dev"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
"owner": {
|
"owner": {
|
||||||
"username": "hapyllama",
|
"username": "lazylllama",
|
||||||
"email": "kws102522@gmail.com"
|
"email": "kws102522@gmail.com"
|
||||||
},
|
},
|
||||||
"record": {
|
"record": {
|
||||||
"CNAME": "hapyllama.github.io"
|
"CNAME": "lazylllama.github.io"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"description": "website for the Sea Shell project",
|
||||||
|
"repo": "https://github.com/Sea-Shell/site",
|
||||||
|
"owner": {
|
||||||
|
"username": "TheBotlyNoob",
|
||||||
|
"email": "jj@jj.is-a.dev"
|
||||||
|
},
|
||||||
|
"record": {
|
||||||
|
"A": ["35.230.85.45"]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"description": "Suzumi's Dashboard",
|
||||||
|
"repo": "https://github.com/Bad-Boy-Codes/bad-boy-codes.github.io",
|
||||||
|
"owner": {
|
||||||
|
"username": "bad-boy-codes",
|
||||||
|
"email": "badboyplays9999@gmail.com"
|
||||||
|
},
|
||||||
|
"record": {
|
||||||
|
"CNAME": "suzumi.up.railway.app"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"description": "online terminal for the Sea Shell project",
|
||||||
|
"repo": "https://github.com/Sea-Shell/online-terminal",
|
||||||
|
"owner": {
|
||||||
|
"username": "TheBotlyNoob",
|
||||||
|
"email": "jj@jj.is-a.dev"
|
||||||
|
},
|
||||||
|
"record": {
|
||||||
|
"A": ["35.230.85.45"]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -55,6 +55,9 @@ describe('validateDomainData', () => {
|
|||||||
{ ...defaultDomain, record: { CNAME: 'foobar.com', MX: ['ALT4.ASPMX.L.GOOGLE.COM'] } },
|
{ ...defaultDomain, record: { CNAME: 'foobar.com', MX: ['ALT4.ASPMX.L.GOOGLE.COM'] } },
|
||||||
...INVALID_NAMES.map(name => ({ ...defaultDomain, name })).slice(0, 1),
|
...INVALID_NAMES.map(name => ({ ...defaultDomain, name })).slice(0, 1),
|
||||||
{ ...defaultDomain, record: { TXT: ['foobar wow nice!!!'] } },
|
{ ...defaultDomain, record: { TXT: ['foobar wow nice!!!'] } },
|
||||||
|
{ ...defaultDomain, name: 'a.b' },
|
||||||
|
{ ...defaultDomain, name: 'ww2.baa' },
|
||||||
|
{ ...defaultDomain, name: 'help.baa' },
|
||||||
];
|
];
|
||||||
|
|
||||||
const validCases = [
|
const validCases = [
|
||||||
@@ -73,6 +76,8 @@ describe('validateDomainData', () => {
|
|||||||
{ ...defaultDomain, record: { MX: ['ALT4.ASPMX.L.GOOGLE.COM'] } },
|
{ ...defaultDomain, record: { MX: ['ALT4.ASPMX.L.GOOGLE.COM'] } },
|
||||||
{ ...defaultDomain, record: { TXT: 'foobar wow nice!!!' } },
|
{ ...defaultDomain, record: { TXT: 'foobar wow nice!!!' } },
|
||||||
{ ...defaultDomain, record: { A: ['1.1.1.1'], MX: ['mx1.example.com'] } },
|
{ ...defaultDomain, record: { A: ['1.1.1.1'], MX: ['mx1.example.com'] } },
|
||||||
|
{ ...defaultDomain, name: 'gogo.foo.bar' },
|
||||||
|
{ ...defaultDomain, name: 'ww9.baa' },
|
||||||
];
|
];
|
||||||
|
|
||||||
it('should return false for invalid data', () => {
|
it('should return false for invalid data', () => {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
"noreply",
|
"noreply",
|
||||||
"notifications",
|
"notifications",
|
||||||
"notification",
|
"notification",
|
||||||
|
"_acme-challenge",
|
||||||
"ww1",
|
"ww1",
|
||||||
"ww2",
|
"ww2",
|
||||||
"ww3",
|
"ww3",
|
||||||
|
|||||||
+11
-5
@@ -5,7 +5,7 @@ const INVALID_NAMES = require('./invalid-domains.json');
|
|||||||
|
|
||||||
const isValidURL = and([R.is(String), testRegex(/^https?:\/\//ig)]);
|
const isValidURL = and([R.is(String), testRegex(/^https?:\/\//ig)]);
|
||||||
|
|
||||||
const isValidDomain = and([R.is(String), testRegex(/^(([a-z0-9\-]+)\.)+[a-z]+$/ig)]);
|
const isValidDomain = and([R.is(String), testRegex(/^(([a-z0-9-]+)\.)+[a-z]+$/ig)]);
|
||||||
|
|
||||||
const validateCnameRecord = type => and([
|
const validateCnameRecord = type => and([
|
||||||
R.propIs(String, type),
|
R.propIs(String, type),
|
||||||
@@ -27,13 +27,19 @@ const validateMXRecord = type => and([
|
|||||||
|
|
||||||
const validateDomainData = validate({
|
const validateDomainData = validate({
|
||||||
name: {
|
name: {
|
||||||
reason: 'The name of the file is invalid. It must be lowercased, alphanumeric and more than 2 characters long',
|
reason: 'The name of the file is invalid. It must be lowercased, alphanumeric and each component must be more than 2 characters long',
|
||||||
fn: or([
|
fn: or([
|
||||||
R.equals('@'),
|
R.equals('@'),
|
||||||
and([
|
and([
|
||||||
R.compose(between(2, 100), R.length),
|
R.is(String),
|
||||||
testRegex(/^[a-z0-9-]+$/g),
|
R.compose(
|
||||||
R.complement(R.includes(R.__, INVALID_NAMES)),
|
R.all(and([
|
||||||
|
R.compose(between(2, 100), R.length),
|
||||||
|
testRegex(/^[a-z0-9-]+$/g),
|
||||||
|
R.complement(R.includes(R.__, INVALID_NAMES)),
|
||||||
|
])),
|
||||||
|
R.split('.'),
|
||||||
|
),
|
||||||
])
|
])
|
||||||
]),
|
]),
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in new issue
Block a user