From df20caa01f9089f79dc98d37f14c7bb691140efb Mon Sep 17 00:00:00 2001 From: wdhdev Date: Sun, 25 Feb 2024 09:24:29 +0000 Subject: [PATCH] Deployed 10e69fa with MkDocs version: 1.4.2 --- .nojekyll | 0 404.html | 397 + assets/images/favicon.png | Bin 0 -> 1870 bytes assets/javascripts/bundle.51d95adb.min.js | 29 + assets/javascripts/bundle.51d95adb.min.js.map | 8 + assets/javascripts/lunr/min/lunr.ar.min.js | 1 + assets/javascripts/lunr/min/lunr.da.min.js | 18 + assets/javascripts/lunr/min/lunr.de.min.js | 18 + assets/javascripts/lunr/min/lunr.du.min.js | 18 + assets/javascripts/lunr/min/lunr.es.min.js | 18 + assets/javascripts/lunr/min/lunr.fi.min.js | 18 + assets/javascripts/lunr/min/lunr.fr.min.js | 18 + assets/javascripts/lunr/min/lunr.hi.min.js | 1 + assets/javascripts/lunr/min/lunr.hu.min.js | 18 + assets/javascripts/lunr/min/lunr.it.min.js | 18 + assets/javascripts/lunr/min/lunr.ja.min.js | 1 + assets/javascripts/lunr/min/lunr.jp.min.js | 1 + assets/javascripts/lunr/min/lunr.ko.min.js | 1 + assets/javascripts/lunr/min/lunr.multi.min.js | 1 + assets/javascripts/lunr/min/lunr.nl.min.js | 18 + assets/javascripts/lunr/min/lunr.no.min.js | 18 + assets/javascripts/lunr/min/lunr.pt.min.js | 18 + assets/javascripts/lunr/min/lunr.ro.min.js | 18 + assets/javascripts/lunr/min/lunr.ru.min.js | 18 + .../lunr/min/lunr.stemmer.support.min.js | 1 + assets/javascripts/lunr/min/lunr.sv.min.js | 18 + assets/javascripts/lunr/min/lunr.ta.min.js | 1 + assets/javascripts/lunr/min/lunr.th.min.js | 1 + assets/javascripts/lunr/min/lunr.tr.min.js | 18 + assets/javascripts/lunr/min/lunr.vi.min.js | 1 + assets/javascripts/lunr/min/lunr.zh.min.js | 1 + assets/javascripts/lunr/tinyseg.js | 206 + assets/javascripts/lunr/wordcut.js | 6708 +++++++++++++++++ .../workers/search.e5c33ebb.min.js | 42 + .../workers/search.e5c33ebb.min.js.map | 8 + assets/stylesheets/main.558e4712.min.css | 1 + assets/stylesheets/main.558e4712.min.css.map | 1 + assets/stylesheets/palette.2505c338.min.css | 1 + .../stylesheets/palette.2505c338.min.css.map | 1 + cloudflare_pages/index.html | 538 ++ dashboard/index.html | 492 ++ domain-structure/index.html | 720 ++ github_pages/index.html | 544 ++ hashnode/index.html | 454 ++ img/banner.png | Bin 0 -> 3613 bytes img/favicon.ico | Bin 0 -> 15406 bytes index.html | 498 ++ other/index.html | 492 ++ railway/index.html | 491 ++ replit/index.html | 539 ++ search/search_index.json | 1 + sitemap.xml | 48 + sitemap.xml.gz | Bin 0 -> 203 bytes 53 files changed, 12500 insertions(+) create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 assets/images/favicon.png create mode 100644 assets/javascripts/bundle.51d95adb.min.js create mode 100644 assets/javascripts/bundle.51d95adb.min.js.map create mode 100644 assets/javascripts/lunr/min/lunr.ar.min.js create mode 100644 assets/javascripts/lunr/min/lunr.da.min.js create mode 100644 assets/javascripts/lunr/min/lunr.de.min.js create mode 100644 assets/javascripts/lunr/min/lunr.du.min.js create mode 100644 assets/javascripts/lunr/min/lunr.es.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hu.min.js create mode 100644 assets/javascripts/lunr/min/lunr.it.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ja.min.js create mode 100644 assets/javascripts/lunr/min/lunr.jp.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ko.min.js create mode 100644 assets/javascripts/lunr/min/lunr.multi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.nl.min.js create mode 100644 assets/javascripts/lunr/min/lunr.no.min.js create mode 100644 assets/javascripts/lunr/min/lunr.pt.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ro.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ru.min.js create mode 100644 assets/javascripts/lunr/min/lunr.stemmer.support.min.js create mode 100644 assets/javascripts/lunr/min/lunr.sv.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ta.min.js create mode 100644 assets/javascripts/lunr/min/lunr.th.min.js create mode 100644 assets/javascripts/lunr/min/lunr.tr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.vi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.zh.min.js create mode 100644 assets/javascripts/lunr/tinyseg.js create mode 100644 assets/javascripts/lunr/wordcut.js create mode 100644 assets/javascripts/workers/search.e5c33ebb.min.js create mode 100644 assets/javascripts/workers/search.e5c33ebb.min.js.map create mode 100644 assets/stylesheets/main.558e4712.min.css create mode 100644 assets/stylesheets/main.558e4712.min.css.map create mode 100644 assets/stylesheets/palette.2505c338.min.css create mode 100644 assets/stylesheets/palette.2505c338.min.css.map create mode 100644 cloudflare_pages/index.html create mode 100644 dashboard/index.html create mode 100644 domain-structure/index.html create mode 100644 github_pages/index.html create mode 100644 hashnode/index.html create mode 100644 img/banner.png create mode 100644 img/favicon.ico create mode 100644 index.html create mode 100644 other/index.html create mode 100644 railway/index.html create mode 100644 replit/index.html create mode 100644 search/search_index.json create mode 100644 sitemap.xml create mode 100644 sitemap.xml.gz diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/404.html b/404.html new file mode 100644 index 00000000..fdb8e0c8 --- /dev/null +++ b/404.html @@ -0,0 +1,397 @@ + + + + + + + + + + + + + + + + + + is-a.dev Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ +

404 - Not found

+ +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/assets/images/favicon.png b/assets/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf13b9f9d978896599290a74f77d5dbe7d1655c GIT binary patch literal 1870 zcmV-U2eJ5xP)Gc)JR9QMau)O=X#!i9;T z37kk-upj^(fsR36MHs_+1RCI)NNu9}lD0S{B^g8PN?Ww(5|~L#Ng*g{WsqleV}|#l zz8@ri&cTzw_h33bHI+12+kK6WN$h#n5cD8OQt`5kw6p~9H3()bUQ8OS4Q4HTQ=1Ol z_JAocz`fLbT2^{`8n~UAo=#AUOf=SOq4pYkt;XbC&f#7lb$*7=$na!mWCQ`dBQsO0 zLFBSPj*N?#u5&pf2t4XjEGH|=pPQ8xh7tpx;US5Cx_Ju;!O`ya-yF`)b%TEt5>eP1ZX~}sjjA%FJF?h7cX8=b!DZl<6%Cv z*G0uvvU+vmnpLZ2paivG-(cd*y3$hCIcsZcYOGh{$&)A6*XX&kXZd3G8m)G$Zz-LV z^GF3VAW^Mdv!)4OM8EgqRiz~*Cji;uzl2uC9^=8I84vNp;ltJ|q-*uQwGp2ma6cY7 z;`%`!9UXO@fr&Ebapfs34OmS9^u6$)bJxrucutf>`dKPKT%%*d3XlFVKunp9 zasduxjrjs>f8V=D|J=XNZp;_Zy^WgQ$9WDjgY=z@stwiEBm9u5*|34&1Na8BMjjgf3+SHcr`5~>oz1Y?SW^=K z^bTyO6>Gar#P_W2gEMwq)ot3; zREHn~U&Dp0l6YT0&k-wLwYjb?5zGK`W6S2v+K>AM(95m2C20L|3m~rN8dprPr@t)5lsk9Hu*W z?pS990s;Ez=+Rj{x7p``4>+c0G5^pYnB1^!TL=(?HLHZ+HicG{~4F1d^5Awl_2!1jICM-!9eoLhbbT^;yHcefyTAaqRcY zmuctDopPT!%k+}x%lZRKnzykr2}}XfG_ne?nRQO~?%hkzo;@RN{P6o`&mMUWBYMTe z6i8ChtjX&gXl`nvrU>jah)2iNM%JdjqoaeaU%yVn!^70x-flljp6Q5tK}5}&X8&&G zX3fpb3E(!rH=zVI_9Gjl45w@{(ITqngWFe7@9{mX;tO25Z_8 zQHEpI+FkTU#4xu>RkN>b3Tnc3UpWzPXWm#o55GKF09j^Mh~)K7{QqbO_~(@CVq! zS<8954|P8mXN2MRs86xZ&Q4EfM@JB94b=(YGuk)s&^jiSF=t3*oNK3`rD{H`yQ?d; ztE=laAUoZx5?RC8*WKOj`%LXEkgDd>&^Q4M^z`%u0rg-It=hLCVsq!Z%^6eB-OvOT zFZ28TN&cRmgU}Elrnk43)!>Z1FCPL2K$7}gwzIc48NX}#!A1BpJP?#v5wkNprhV** z?Cpalt1oH&{r!o3eSKc&ap)iz2BTn_VV`4>9M^b3;(YY}4>#ML6{~(4mH+?%07*qo IM6N<$f(jP3KmY&$ literal 0 HcmV?d00001 diff --git a/assets/javascripts/bundle.51d95adb.min.js b/assets/javascripts/bundle.51d95adb.min.js new file mode 100644 index 00000000..b20ec683 --- /dev/null +++ b/assets/javascripts/bundle.51d95adb.min.js @@ -0,0 +1,29 @@ +"use strict";(()=>{var Hi=Object.create;var xr=Object.defineProperty;var Pi=Object.getOwnPropertyDescriptor;var $i=Object.getOwnPropertyNames,kt=Object.getOwnPropertySymbols,Ii=Object.getPrototypeOf,Er=Object.prototype.hasOwnProperty,an=Object.prototype.propertyIsEnumerable;var on=(e,t,r)=>t in e?xr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,P=(e,t)=>{for(var r in t||(t={}))Er.call(t,r)&&on(e,r,t[r]);if(kt)for(var r of kt(t))an.call(t,r)&&on(e,r,t[r]);return e};var sn=(e,t)=>{var r={};for(var n in e)Er.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&kt)for(var n of kt(e))t.indexOf(n)<0&&an.call(e,n)&&(r[n]=e[n]);return r};var Ht=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Fi=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of $i(t))!Er.call(e,o)&&o!==r&&xr(e,o,{get:()=>t[o],enumerable:!(n=Pi(t,o))||n.enumerable});return e};var yt=(e,t,r)=>(r=e!=null?Hi(Ii(e)):{},Fi(t||!e||!e.__esModule?xr(r,"default",{value:e,enumerable:!0}):r,e));var fn=Ht((wr,cn)=>{(function(e,t){typeof wr=="object"&&typeof cn!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(wr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,a={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function s(T){return!!(T&&T!==document&&T.nodeName!=="HTML"&&T.nodeName!=="BODY"&&"classList"in T&&"contains"in T.classList)}function f(T){var Ke=T.type,We=T.tagName;return!!(We==="INPUT"&&a[Ke]&&!T.readOnly||We==="TEXTAREA"&&!T.readOnly||T.isContentEditable)}function c(T){T.classList.contains("focus-visible")||(T.classList.add("focus-visible"),T.setAttribute("data-focus-visible-added",""))}function u(T){T.hasAttribute("data-focus-visible-added")&&(T.classList.remove("focus-visible"),T.removeAttribute("data-focus-visible-added"))}function p(T){T.metaKey||T.altKey||T.ctrlKey||(s(r.activeElement)&&c(r.activeElement),n=!0)}function m(T){n=!1}function d(T){s(T.target)&&(n||f(T.target))&&c(T.target)}function h(T){s(T.target)&&(T.target.classList.contains("focus-visible")||T.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),u(T.target))}function v(T){document.visibilityState==="hidden"&&(o&&(n=!0),B())}function B(){document.addEventListener("mousemove",z),document.addEventListener("mousedown",z),document.addEventListener("mouseup",z),document.addEventListener("pointermove",z),document.addEventListener("pointerdown",z),document.addEventListener("pointerup",z),document.addEventListener("touchmove",z),document.addEventListener("touchstart",z),document.addEventListener("touchend",z)}function re(){document.removeEventListener("mousemove",z),document.removeEventListener("mousedown",z),document.removeEventListener("mouseup",z),document.removeEventListener("pointermove",z),document.removeEventListener("pointerdown",z),document.removeEventListener("pointerup",z),document.removeEventListener("touchmove",z),document.removeEventListener("touchstart",z),document.removeEventListener("touchend",z)}function z(T){T.target.nodeName&&T.target.nodeName.toLowerCase()==="html"||(n=!1,re())}document.addEventListener("keydown",p,!0),document.addEventListener("mousedown",m,!0),document.addEventListener("pointerdown",m,!0),document.addEventListener("touchstart",m,!0),document.addEventListener("visibilitychange",v,!0),B(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var un=Ht(Sr=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(c){return!1}},r=t(),n=function(c){var u={next:function(){var p=c.shift();return{done:p===void 0,value:p}}};return r&&(u[Symbol.iterator]=function(){return u}),u},o=function(c){return encodeURIComponent(c).replace(/%20/g,"+")},i=function(c){return decodeURIComponent(String(c).replace(/\+/g," "))},a=function(){var c=function(p){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var m=typeof p;if(m!=="undefined")if(m==="string")p!==""&&this._fromString(p);else if(p instanceof c){var d=this;p.forEach(function(re,z){d.append(z,re)})}else if(p!==null&&m==="object")if(Object.prototype.toString.call(p)==="[object Array]")for(var h=0;hd[0]?1:0}),c._entries&&(c._entries={});for(var p=0;p1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Sr);(function(e){var t=function(){try{var o=new e.URL("b","http://a");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(f,c){typeof f!="string"&&(f=String(f)),c&&typeof c!="string"&&(c=String(c));var u=document,p;if(c&&(e.location===void 0||c!==e.location.href)){c=c.toLowerCase(),u=document.implementation.createHTMLDocument(""),p=u.createElement("base"),p.href=c,u.head.appendChild(p);try{if(p.href.indexOf(c)!==0)throw new Error(p.href)}catch(T){throw new Error("URL unable to set base "+c+" due to "+T)}}var m=u.createElement("a");m.href=f,p&&(u.body.appendChild(m),m.href=m.href);var d=u.createElement("input");if(d.type="url",d.value=f,m.protocol===":"||!/:/.test(m.href)||!d.checkValidity()&&!c)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:m});var h=new e.URLSearchParams(this.search),v=!0,B=!0,re=this;["append","delete","set"].forEach(function(T){var Ke=h[T];h[T]=function(){Ke.apply(h,arguments),v&&(B=!1,re.search=h.toString(),B=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var z=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==z&&(z=this.search,B&&(v=!1,this.searchParams._fromString(this.search),v=!0))}})},a=i.prototype,s=function(f){Object.defineProperty(a,f,{get:function(){return this._anchorElement[f]},set:function(c){this._anchorElement[f]=c},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(f){s(f)}),Object.defineProperty(a,"search",{get:function(){return this._anchorElement.search},set:function(f){this._anchorElement.search=f,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(a,{toString:{get:function(){var f=this;return function(){return f.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(f){this._anchorElement.href=f,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(f){this._anchorElement.pathname=f},enumerable:!0},origin:{get:function(){var f={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],c=this._anchorElement.port!=f&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(c?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(f){},enumerable:!0},username:{get:function(){return""},set:function(f){},enumerable:!0}}),i.createObjectURL=function(f){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(f){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Sr)});var Qr=Ht((Lt,Kr)=>{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof Lt=="object"&&typeof Kr=="object"?Kr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Lt=="object"?Lt.ClipboardJS=r():t.ClipboardJS=r()})(Lt,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return ki}});var a=i(279),s=i.n(a),f=i(370),c=i.n(f),u=i(817),p=i.n(u);function m(j){try{return document.execCommand(j)}catch(O){return!1}}var d=function(O){var w=p()(O);return m("cut"),w},h=d;function v(j){var O=document.documentElement.getAttribute("dir")==="rtl",w=document.createElement("textarea");w.style.fontSize="12pt",w.style.border="0",w.style.padding="0",w.style.margin="0",w.style.position="absolute",w.style[O?"right":"left"]="-9999px";var k=window.pageYOffset||document.documentElement.scrollTop;return w.style.top="".concat(k,"px"),w.setAttribute("readonly",""),w.value=j,w}var B=function(O,w){var k=v(O);w.container.appendChild(k);var F=p()(k);return m("copy"),k.remove(),F},re=function(O){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},k="";return typeof O=="string"?k=B(O,w):O instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(O==null?void 0:O.type)?k=B(O.value,w):(k=p()(O),m("copy")),k},z=re;function T(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?T=function(w){return typeof w}:T=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},T(j)}var Ke=function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},w=O.action,k=w===void 0?"copy":w,F=O.container,q=O.target,Le=O.text;if(k!=="copy"&&k!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(q!==void 0)if(q&&T(q)==="object"&&q.nodeType===1){if(k==="copy"&&q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(k==="cut"&&(q.hasAttribute("readonly")||q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Le)return z(Le,{container:F});if(q)return k==="cut"?h(q):z(q,{container:F})},We=Ke;function Ie(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Ie=function(w){return typeof w}:Ie=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},Ie(j)}function Ti(j,O){if(!(j instanceof O))throw new TypeError("Cannot call a class as a function")}function nn(j,O){for(var w=0;w0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof F.action=="function"?F.action:this.defaultAction,this.target=typeof F.target=="function"?F.target:this.defaultTarget,this.text=typeof F.text=="function"?F.text:this.defaultText,this.container=Ie(F.container)==="object"?F.container:document.body}},{key:"listenClick",value:function(F){var q=this;this.listener=c()(F,"click",function(Le){return q.onClick(Le)})}},{key:"onClick",value:function(F){var q=F.delegateTarget||F.currentTarget,Le=this.action(q)||"copy",Rt=We({action:Le,container:this.container,target:this.target(q),text:this.text(q)});this.emit(Rt?"success":"error",{action:Le,text:Rt,trigger:q,clearSelection:function(){q&&q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(F){return yr("action",F)}},{key:"defaultTarget",value:function(F){var q=yr("target",F);if(q)return document.querySelector(q)}},{key:"defaultText",value:function(F){return yr("text",F)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(F){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return z(F,q)}},{key:"cut",value:function(F){return h(F)}},{key:"isSupported",value:function(){var F=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],q=typeof F=="string"?[F]:F,Le=!!document.queryCommandSupported;return q.forEach(function(Rt){Le=Le&&!!document.queryCommandSupported(Rt)}),Le}}]),w}(s()),ki=Ri},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function a(s,f){for(;s&&s.nodeType!==o;){if(typeof s.matches=="function"&&s.matches(f))return s;s=s.parentNode}}n.exports=a},438:function(n,o,i){var a=i(828);function s(u,p,m,d,h){var v=c.apply(this,arguments);return u.addEventListener(m,v,h),{destroy:function(){u.removeEventListener(m,v,h)}}}function f(u,p,m,d,h){return typeof u.addEventListener=="function"?s.apply(null,arguments):typeof m=="function"?s.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(v){return s(v,p,m,d,h)}))}function c(u,p,m,d){return function(h){h.delegateTarget=a(h.target,p),h.delegateTarget&&d.call(u,h)}}n.exports=f},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var a=Object.prototype.toString.call(i);return i!==void 0&&(a==="[object NodeList]"||a==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var a=Object.prototype.toString.call(i);return a==="[object Function]"}},370:function(n,o,i){var a=i(879),s=i(438);function f(m,d,h){if(!m&&!d&&!h)throw new Error("Missing required arguments");if(!a.string(d))throw new TypeError("Second argument must be a String");if(!a.fn(h))throw new TypeError("Third argument must be a Function");if(a.node(m))return c(m,d,h);if(a.nodeList(m))return u(m,d,h);if(a.string(m))return p(m,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function c(m,d,h){return m.addEventListener(d,h),{destroy:function(){m.removeEventListener(d,h)}}}function u(m,d,h){return Array.prototype.forEach.call(m,function(v){v.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(m,function(v){v.removeEventListener(d,h)})}}}function p(m,d,h){return s(document.body,m,d,h)}n.exports=f},817:function(n){function o(i){var a;if(i.nodeName==="SELECT")i.focus(),a=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var s=i.hasAttribute("readonly");s||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),s||i.removeAttribute("readonly"),a=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var f=window.getSelection(),c=document.createRange();c.selectNodeContents(i),f.removeAllRanges(),f.addRange(c),a=f.toString()}return a}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,a,s){var f=this.e||(this.e={});return(f[i]||(f[i]=[])).push({fn:a,ctx:s}),this},once:function(i,a,s){var f=this;function c(){f.off(i,c),a.apply(s,arguments)}return c._=a,this.on(i,c,s)},emit:function(i){var a=[].slice.call(arguments,1),s=((this.e||(this.e={}))[i]||[]).slice(),f=0,c=s.length;for(f;f{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var is=/["'&<>]/;Jo.exports=as;function as(e){var t=""+e,r=is.exec(t);if(!r)return t;var n,o="",i=0,a=0;for(i=r.index;i0&&i[i.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function W(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),o,i=[],a;try{for(;(t===void 0||t-- >0)&&!(o=n.next()).done;)i.push(o.value)}catch(s){a={error:s}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(a)throw a.error}}return i}function D(e,t,r){if(r||arguments.length===2)for(var n=0,o=t.length,i;n1||s(m,d)})})}function s(m,d){try{f(n[m](d))}catch(h){p(i[0][3],h)}}function f(m){m.value instanceof Xe?Promise.resolve(m.value.v).then(c,u):p(i[0][2],m)}function c(m){s("next",m)}function u(m){s("throw",m)}function p(m,d){m(d),i.shift(),i.length&&s(i[0][0],i[0][1])}}function mn(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof xe=="function"?xe(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=e[i]&&function(a){return new Promise(function(s,f){a=e[i](a),o(s,f,a.done,a.value)})}}function o(i,a,s,f){Promise.resolve(f).then(function(c){i({value:c,done:s})},a)}}function A(e){return typeof e=="function"}function at(e){var t=function(n){Error.call(n),n.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var $t=at(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: +`+r.map(function(n,o){return o+1+") "+n.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=r}});function De(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Fe=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,n,o,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a)if(this._parentage=null,Array.isArray(a))try{for(var s=xe(a),f=s.next();!f.done;f=s.next()){var c=f.value;c.remove(this)}}catch(v){t={error:v}}finally{try{f&&!f.done&&(r=s.return)&&r.call(s)}finally{if(t)throw t.error}}else a.remove(this);var u=this.initialTeardown;if(A(u))try{u()}catch(v){i=v instanceof $t?v.errors:[v]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var m=xe(p),d=m.next();!d.done;d=m.next()){var h=d.value;try{dn(h)}catch(v){i=i!=null?i:[],v instanceof $t?i=D(D([],W(i)),W(v.errors)):i.push(v)}}}catch(v){n={error:v}}finally{try{d&&!d.done&&(o=m.return)&&o.call(m)}finally{if(n)throw n.error}}}if(i)throw new $t(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)dn(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&De(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&De(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Or=Fe.EMPTY;function It(e){return e instanceof Fe||e&&"closed"in e&&A(e.remove)&&A(e.add)&&A(e.unsubscribe)}function dn(e){A(e)?e():e.unsubscribe()}var Ae={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var st={setTimeout:function(e,t){for(var r=[],n=2;n0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,a=o.isStopped,s=o.observers;return i||a?Or:(this.currentObservers=null,s.push(r),new Fe(function(){n.currentObservers=null,De(s,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,a=n.isStopped;o?r.error(i):a&&r.complete()},t.prototype.asObservable=function(){var r=new U;return r.source=this,r},t.create=function(r,n){return new wn(r,n)},t}(U);var wn=function(e){ne(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:Or},t}(E);var Et={now:function(){return(Et.delegate||Date).now()},delegate:void 0};var wt=function(e){ne(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=Et);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,a=n._infiniteTimeWindow,s=n._timestampProvider,f=n._windowTime;o||(i.push(r),!a&&i.push(s.now()+f)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,a=o._buffer,s=a.slice(),f=0;f0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=ut.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);var a=r.actions;n!=null&&((i=a[a.length-1])===null||i===void 0?void 0:i.id)!==n&&(ut.cancelAnimationFrame(n),r._scheduled=void 0)},t}(Ut);var On=function(e){ne(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(Wt);var we=new On(Tn);var R=new U(function(e){return e.complete()});function Dt(e){return e&&A(e.schedule)}function kr(e){return e[e.length-1]}function Qe(e){return A(kr(e))?e.pop():void 0}function Se(e){return Dt(kr(e))?e.pop():void 0}function Vt(e,t){return typeof kr(e)=="number"?e.pop():t}var pt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function zt(e){return A(e==null?void 0:e.then)}function Nt(e){return A(e[ft])}function qt(e){return Symbol.asyncIterator&&A(e==null?void 0:e[Symbol.asyncIterator])}function Kt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function Ki(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Qt=Ki();function Yt(e){return A(e==null?void 0:e[Qt])}function Gt(e){return ln(this,arguments,function(){var r,n,o,i;return Pt(this,function(a){switch(a.label){case 0:r=e.getReader(),a.label=1;case 1:a.trys.push([1,,9,10]),a.label=2;case 2:return[4,Xe(r.read())];case 3:return n=a.sent(),o=n.value,i=n.done,i?[4,Xe(void 0)]:[3,5];case 4:return[2,a.sent()];case 5:return[4,Xe(o)];case 6:return[4,a.sent()];case 7:return a.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function Bt(e){return A(e==null?void 0:e.getReader)}function $(e){if(e instanceof U)return e;if(e!=null){if(Nt(e))return Qi(e);if(pt(e))return Yi(e);if(zt(e))return Gi(e);if(qt(e))return _n(e);if(Yt(e))return Bi(e);if(Bt(e))return Ji(e)}throw Kt(e)}function Qi(e){return new U(function(t){var r=e[ft]();if(A(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function Yi(e){return new U(function(t){for(var r=0;r=2;return function(n){return n.pipe(e?_(function(o,i){return e(o,i,n)}):me,Oe(1),r?He(t):zn(function(){return new Xt}))}}function Nn(){for(var e=[],t=0;t=2,!0))}function fe(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new E}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,a=i===void 0?!0:i,s=e.resetOnRefCountZero,f=s===void 0?!0:s;return function(c){var u,p,m,d=0,h=!1,v=!1,B=function(){p==null||p.unsubscribe(),p=void 0},re=function(){B(),u=m=void 0,h=v=!1},z=function(){var T=u;re(),T==null||T.unsubscribe()};return g(function(T,Ke){d++,!v&&!h&&B();var We=m=m!=null?m:r();Ke.add(function(){d--,d===0&&!v&&!h&&(p=jr(z,f))}),We.subscribe(Ke),!u&&d>0&&(u=new et({next:function(Ie){return We.next(Ie)},error:function(Ie){v=!0,B(),p=jr(re,o,Ie),We.error(Ie)},complete:function(){h=!0,B(),p=jr(re,a),We.complete()}}),$(T).subscribe(u))})(c)}}function jr(e,t){for(var r=[],n=2;ne.next(document)),e}function K(e,t=document){return Array.from(t.querySelectorAll(e))}function V(e,t=document){let r=se(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function se(e,t=document){return t.querySelector(e)||void 0}function _e(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function tr(e){return L(b(document.body,"focusin"),b(document.body,"focusout")).pipe(ke(1),l(()=>{let t=_e();return typeof t!="undefined"?e.contains(t):!1}),N(e===_e()),Y())}function Be(e){return{x:e.offsetLeft,y:e.offsetTop}}function Yn(e){return L(b(window,"load"),b(window,"resize")).pipe(Ce(0,we),l(()=>Be(e)),N(Be(e)))}function rr(e){return{x:e.scrollLeft,y:e.scrollTop}}function dt(e){return L(b(e,"scroll"),b(window,"resize")).pipe(Ce(0,we),l(()=>rr(e)),N(rr(e)))}var Bn=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!zr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),xa?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!zr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=ya.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Jn=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),Zn=typeof WeakMap!="undefined"?new WeakMap:new Bn,eo=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=Ea.getInstance(),n=new Ra(t,r,this);Zn.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){eo.prototype[e]=function(){var t;return(t=Zn.get(this))[e].apply(t,arguments)}});var ka=function(){return typeof nr.ResizeObserver!="undefined"?nr.ResizeObserver:eo}(),to=ka;var ro=new E,Ha=I(()=>H(new to(e=>{for(let t of e)ro.next(t)}))).pipe(x(e=>L(Te,H(e)).pipe(C(()=>e.disconnect()))),J(1));function de(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ge(e){return Ha.pipe(S(t=>t.observe(e)),x(t=>ro.pipe(_(({target:r})=>r===e),C(()=>t.unobserve(e)),l(()=>de(e)))),N(de(e)))}function bt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function ar(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var no=new E,Pa=I(()=>H(new IntersectionObserver(e=>{for(let t of e)no.next(t)},{threshold:0}))).pipe(x(e=>L(Te,H(e)).pipe(C(()=>e.disconnect()))),J(1));function sr(e){return Pa.pipe(S(t=>t.observe(e)),x(t=>no.pipe(_(({target:r})=>r===e),C(()=>t.unobserve(e)),l(({isIntersecting:r})=>r))))}function oo(e,t=16){return dt(e).pipe(l(({y:r})=>{let n=de(e),o=bt(e);return r>=o.height-n.height-t}),Y())}var cr={drawer:V("[data-md-toggle=drawer]"),search:V("[data-md-toggle=search]")};function io(e){return cr[e].checked}function qe(e,t){cr[e].checked!==t&&cr[e].click()}function je(e){let t=cr[e];return b(t,"change").pipe(l(()=>t.checked),N(t.checked))}function $a(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ia(){return L(b(window,"compositionstart").pipe(l(()=>!0)),b(window,"compositionend").pipe(l(()=>!1))).pipe(N(!1))}function ao(){let e=b(window,"keydown").pipe(_(t=>!(t.metaKey||t.ctrlKey)),l(t=>({mode:io("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),_(({mode:t,type:r})=>{if(t==="global"){let n=_e();if(typeof n!="undefined")return!$a(n,r)}return!0}),fe());return Ia().pipe(x(t=>t?R:e))}function Me(){return new URL(location.href)}function ot(e){location.href=e.href}function so(){return new E}function co(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)co(e,r)}function M(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)co(n,o);return n}function fr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function fo(){return location.hash.substring(1)}function uo(e){let t=M("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function Fa(){return b(window,"hashchange").pipe(l(fo),N(fo()),_(e=>e.length>0),J(1))}function po(){return Fa().pipe(l(e=>se(`[id="${e}"]`)),_(e=>typeof e!="undefined"))}function Nr(e){let t=matchMedia(e);return Zt(r=>t.addListener(()=>r(t.matches))).pipe(N(t.matches))}function lo(){let e=matchMedia("print");return L(b(window,"beforeprint").pipe(l(()=>!0)),b(window,"afterprint").pipe(l(()=>!1))).pipe(N(e.matches))}function qr(e,t){return e.pipe(x(r=>r?t():R))}function ur(e,t={credentials:"same-origin"}){return ve(fetch(`${e}`,t)).pipe(ce(()=>R),x(r=>r.status!==200?Tt(()=>new Error(r.statusText)):H(r)))}function Ue(e,t){return ur(e,t).pipe(x(r=>r.json()),J(1))}function mo(e,t){let r=new DOMParser;return ur(e,t).pipe(x(n=>n.text()),l(n=>r.parseFromString(n,"text/xml")),J(1))}function pr(e){let t=M("script",{src:e});return I(()=>(document.head.appendChild(t),L(b(t,"load"),b(t,"error").pipe(x(()=>Tt(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(l(()=>{}),C(()=>document.head.removeChild(t)),Oe(1))))}function ho(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function bo(){return L(b(window,"scroll",{passive:!0}),b(window,"resize",{passive:!0})).pipe(l(ho),N(ho()))}function vo(){return{width:innerWidth,height:innerHeight}}function go(){return b(window,"resize",{passive:!0}).pipe(l(vo),N(vo()))}function yo(){return Q([bo(),go()]).pipe(l(([e,t])=>({offset:e,size:t})),J(1))}function lr(e,{viewport$:t,header$:r}){let n=t.pipe(X("size")),o=Q([n,r]).pipe(l(()=>Be(e)));return Q([r,t,o]).pipe(l(([{height:i},{offset:a,size:s},{x:f,y:c}])=>({offset:{x:a.x-f,y:a.y-c+i},size:s})))}(()=>{function e(n,o){parent.postMessage(n,o||"*")}function t(...n){return n.reduce((o,i)=>o.then(()=>new Promise(a=>{let s=document.createElement("script");s.src=i,s.onload=a,document.body.appendChild(s)})),Promise.resolve())}var r=class{constructor(n){this.url=n,this.onerror=null,this.onmessage=null,this.onmessageerror=null,this.m=a=>{a.source===this.w&&(a.stopImmediatePropagation(),this.dispatchEvent(new MessageEvent("message",{data:a.data})),this.onmessage&&this.onmessage(a))},this.e=(a,s,f,c,u)=>{if(s===this.url.toString()){let p=new ErrorEvent("error",{message:a,filename:s,lineno:f,colno:c,error:u});this.dispatchEvent(p),this.onerror&&this.onerror(p)}};let o=new EventTarget;this.addEventListener=o.addEventListener.bind(o),this.removeEventListener=o.removeEventListener.bind(o),this.dispatchEvent=o.dispatchEvent.bind(o);let i=document.createElement("iframe");i.width=i.height=i.frameBorder="0",document.body.appendChild(this.iframe=i),this.w.document.open(),this.w.document.write(` + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + +

Setting up Cloudflare pages with your is-a.dev subdomain

+

Creating a pages.dev site

+

Follow their guide on how to set it up.

+

Point your pages.dev site to your is-a.dev subdomain

+

Follow their guide on how to do it. +Only follow the "Add a custom domain" section and then follow the rest of the steps here.

+

Creating the domain file

+

Create a JSON file inside domains directory (domains/<subdomain>.json) with the following content:

+
{
+    "owner": {
+        "username": "<github-username>",
+        "email": "email@address",
+        "twitter": "<twitter-username>"
+    },
+    "record": {
+        "CNAME": "<sitename>.pages.dev"
+    }
+} 
+
+

Configuring

+
    +
  • After your pull request has been merged with the main repository you should be able to visit your new is-a.dev domain and it should show you your pages.dev site +if it doesn't then you have configured your domain wrong.
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/dashboard/index.html b/dashboard/index.html new file mode 100644 index 00000000..e232196d --- /dev/null +++ b/dashboard/index.html @@ -0,0 +1,492 @@ + + + + + + + + + + + + + + + + + + + + Dashboard - is-a.dev Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + +

Register your is-a.dev subdomain using the is-a-dev Dashboard

+

Login to the dashboard

+

First login to the dashboard using your GitHub account.

+

Registering your subdomain

+

On the left hand side, click on the button that says Register with a keyboard icon.

+

Then follow the steps to register your subdomain.

+

It will fork the is-a-dev/register repository, assuming you haven't done that already and it will create a pull request for you.

+

Finally, you'll have to wait for a maintainer to merge it, which should not take too long.

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/domain-structure/index.html b/domain-structure/index.html new file mode 100644 index 00000000..34729435 --- /dev/null +++ b/domain-structure/index.html @@ -0,0 +1,720 @@ + + + + + + + + + + + + + + + + + + + + + + Domain Structure - is-a.dev Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + +

Domains JSON file

+

To register a subdomain, you need to create a new JSON file in the domains directory through a pull request. For example, to register example.is-a.dev, you would create a file named example.json in the domains directory. The full path would be domains/example.json.

+

Filename

+

Note: You can include . (dots) in your filename to register a sub-subdomain (e.g., blog.example.is-a.dev). However, each segment of your subdomain must meet the following criteria:

+

The filename:

+
    +
  • Must be alphanumeric, in lowercase, with dashes as separators. Using underscores as separators is also valid, but it's recommended to use dashes.
  • +
  • Must be at least 2 characters.
  • +
  • Must have a .json file extension.
  • +
+

Examples of Invalid Filenames

+
    +
  • a.json (filename is less than 2 characters)
  • +
  • A.json (filename contains uppercase letters)
  • +
  • a..json (filename contains consecutive dots)
  • +
  • .a.json (filename starts with a dot)
  • +
  • a .json (filename contains a space)
  • +
  • a$.json (filename contains a non-alphanumeric character)
  • +
  • a.json.json (filename contains more than one .json extension)
  • +
+

Examples of Valid Filenames

+

All the filenames below meet all the criteria. The reason in parentheses is just an example of one of the criteria they meet.

+
    +
  • ab.json (at least 2 characters long)
  • +
  • example.json (alphanumeric and in lowercase)
  • +
  • blog.example.json (includes dots to register a sub-subdomain)
  • +
  • my-blog.json (uses dashes as separators, which is recommended)
  • +
  • my_blog.json (valid, but it's recommended to use dashes instead of underscores as separators)
  • +
+

Structure

+

owner (required)

+

You need to specify some information about yourself here. This is so that you can be contacted if required. +In the owner object, the fields username and email are required. You can add more information in this object if you want. +

{
+  "owner": {
+    "username": "<github-username>",
+    "email": "<email@address>"
+  }
+}
+
+If you don't wish to share your email address here, please share your twitter or discord or any other social media account. +
{
+  "owner": {
+    "username": "<github-username>",
+    "email": "",
+    "twitter": "twitter-handle",
+    "discord": "discord-user-id"
+  }
+}
+

+

description

+

Describe your domain name and your usage. This is purely for documentation purpose and is optional.

+

repo

+

This is a link to your website repository or your github account. This is purely for documentation purpose and is optional.

+

record (required)

+

This section is where you specify the DNS records. The supported types are:

+
    +
  • CNAME
  • +
  • A
  • +
  • AAAA
  • +
  • URL
  • +
  • MX
  • +
  • TXT
  • +
+

Below are some examples for the given record types:

+
    +
  • CNAME record: This must be a hostname (something.tld). It cannot be used in conjunction with any other record types. This is typically used to map your domain to a specific server. +
    {
    +  "record": {
    +    "CNAME": "<github-username>.github.io"
    +  }
    +}
    +
  • +
  • A record: This must be a list of IPv4 addresses. These addresses point your domain to a specific server. +
    {
    +  "record": {
    +    "A": [
    +      "192.0.2.1",
    +      "198.51.100.1",
    +      "203.0.113.1"
    +    ]
    +  }
    +}
    +
  • +
  • AAAA record: This must be a list of IPv6 addresses. Like the A record, these addresses point your domain to a specific server. +
    {
    +  "record": {
    +    "AAAA": [
    +      "2001:0db8:85a3:0000:0000:8a2e:0370:7334",
    +      "2001:0db8:85a3:0000:0000:8a2e:0370:7335",
    +      "2001:0db8:85a3:0000:0000:8a2e:0370:7336"
    +    ]
    +  }
    +}
    +
  • +
  • URL record: This redirects your domain to another URL. +
    {
    +  "record": {
    +    "URL": "https://my-other-website.com"
    +  }
    +}
    +
  • +
  • MX record: This must be a list of hostnames. These hostnames specify the mail servers that handle emails for your domain. +
    {
    +  "record": {
    +    "MX": [
    +      "mx1.improvmx.com",
    +      "mx2.improvmx.com"
    +    ]
    +  }
    +}
    +
  • +
  • TXT record: This can be either a single string or a list of strings. TXT records are often used for various purposes, such as verifying domain ownership and ensuring email security. +
    {
    +  "record": {
    +    "TXT": "Hello World!"
    +  }
    +}
    +
    +
    {
    +  "record": {
    +    "TXT": ["Hello", "World!"]
    +  }
    +}
    +
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/github_pages/index.html b/github_pages/index.html new file mode 100644 index 00000000..de5822a7 --- /dev/null +++ b/github_pages/index.html @@ -0,0 +1,544 @@ + + + + + + + + + + + + + + + + + + + + + + GitHub Pages - is-a.dev Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+ +
+ + + +
+
+ + + + + +

Setting up GitHub pages with is-a.dev subdomain

+

Creating a GitHub pages repository

+

You can create a GitHub pages website by creating a repository with the name <github-username>.github.io. For more information about GitHub pages, please read through their guide.

+

Creating the domain file

+

Create a JSON file inside domains directory (domains/<subdomain>.json) with the following content +

{
+    "description": "Describe the use of this subdomain",
+    "repo": "https://github.com/<github-username>/<github-username>.github.io",
+    "owner": {
+        "username": "<github-username>",
+        "email": "email@address",
+        "twitter": "<twitter-username>"
+    },
+    "record": {
+        "CNAME": "<username>.github.io"
+    }
+} 
+

+

Configuring

+
    +
  • After the pull request is merged, you will see a 404 error on <your-subdomain>.is-a.dev. To fix this, go to your GitHub pages repository's Settings > GitHub pages > Custom domain and add <your-subdomain>.is-a.dev in the given field. Only do this after your pull request is merged.
  • +
  • Check the Enforce HTTPS checkbox below the custom domain input.
  • +
+

Using is-a.dev for all GitHub Pages sites in your account

+

It is possible to have a unique subdomain on your is-a.dev domain for each repository which has Pages enabled.

+

In order to utilise this, you must ensure the following conditions are met: +1) The website which hosts the "root" (<subdomain>.is-a.dev) must be named <username>.github.io +2) That repo must have <subdomain>.is-a.dev as the custom domain within the Pages settings. +3) Every other repo must not have a custom domain set in the Pages settings. +4) Links to these hosted repos must end with / (e.g https://<subdomain>.is-a.dev/<project>/)

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/hashnode/index.html b/hashnode/index.html new file mode 100644 index 00000000..c1c179a4 --- /dev/null +++ b/hashnode/index.html @@ -0,0 +1,454 @@ + + + + + + + + + + + + + + + + + + + + + + Hashnode Blog - is-a.dev Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + +

Hashnode Blog

+

When you create your hashnode blog, hashnode provides a free hashnode.dev subdomain for you. However, you can set up your own is-a.dev subdomain.

+

In this guide, you will learn how to accomplish this.

+
+
    +
  1. +

    Log in to your Hashnode account.

    +
  2. +
  3. +

    Click on your avatar at the bottom-left corner of the page on desktop or top-right corner on mobile.

    +
  4. +
+

Hashnode's Feed

+
    +
  1. Click on the Blog Dashboard option from the popup modal to access your blog's dashboard.
  2. +
+

Hashnode's Feed

+
    +
  1. Navigate to the Domain tab and enter your domain without the www or https:// prefix in the text field provided. Then click on the Update button to proceed.
  2. +
+

Hashnode's Blog Domain Tab

+
    +
  1. Go to your fork of the is-a-dev/register repository, edit your subdomain's JSON file, make sure you remove any old records, then add this: +
    "CNAME": "hashnode.network"
    +
  2. +
+

Once done, your hashnode blog is setup to use your subdomain, all you have to do is wait sometime for the DNS to propogate. These changes could take from 1 hour to around 48 hours, so please be patient, It'll most likely be ready within a hour. +Enjoy your hashnode Blog, With Your Sweet .is-a.dev Subdomain! If your need more help: please read this support article on hashnode support: https://support.hashnode.com/docs/mapping-domain/, this should help you more, if you need more help related to Hashnode, then please visit the Hashnode Support Center. Remeber, is-a.dev has no links with hashnode, so please do not create issues on our github, saying that your hashnode blog is having issues, we simply will not respond to them.

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/img/banner.png b/img/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..bfa9b8132a3342ffe55dfa92a396f123b9bddb4d GIT binary patch literal 3613 zcmeH~ZBSEJ8pki7;%Wg|Mn&F2g;{E=pu0-I7~)zK5tjFWs06KsG+>Fmm;fQU(rrbn zCd+_gfS?pp5DHNcLEaLv#R?jbm&7E5U@Ig`Oi~DhgqxSWZNKc!?v8%j*%?3Fb7r1r z=FD^c_y0TRITvH1!W`DPtpNbQA^c!y901rU0l;SK>Q!(gWDJ=j{3G z+b7;%_xr!C$u8Qwx88Q8Z~f{m*a(%c@8aDMX@)jG3ey~ey(kZ2i&;irs6a+vq*nXY z%1Y$==zO<`wRH`)aFLN?W4D~(8CabQ4;Q?LZ2-Xg++KSCI0x8z!XevV6RY1P-bwQR zXNH}AG}y@Inpn3h%b@%12HX~on>-7+-~-#de@gk|m-BspN^M|+R-ycABgI0z>}TtJ zC28Vq7-&wmTfGBRCa^-bC!tcMdE5@4O~BNnh?{m_1W{&_2Iu=8NQ}HfXz37lmN6F! z0GCVOe&H<894F31*Rzu}Fp7p47bWn1vz$g72?K!RpLhT02!m;}VmCalSO*_Qz`DIR z?EqjeQ1nlUGtb=k*F8|CeZlt^`uIbX`eCwEUviQcv%!h&^+eJ-S{&A*u?8=Vaj(u4ee9DA zX=+JVAtn#`vuQp$j4#9=h9F)$4E$5lsB8PTU;RWN<%Cz>urGT zNOL$InK=Q8vZ0riZMwAtdh6C_Xmr1ed01Q;P(D6gp03bN7B+RCHFF>5eT_(`1pc8# zTkm@Nbxhk?yxx>1i|ydL0Ae@PhB zA@vM@((ZNEK=@)iuoI5WCC?+5em+K^@&lumUk3o)r?~TR7XW&El56n^RP|- ztx=gjJJXD)Zp2Y9*BN6+pBb~y%p6pA!*Ns-baK!0;?&ybN{H2tI$CRf+Ne0 z5UcKpJw)7jKu77sVy})6w0^|016!{2PkMgpgvF9Z!j5C$te$%0ylH)715T|aVzIO# z^DFIz1H=Whqta>)e7fYs$H8tcqhxj;nS3ypt~S+Go3rz?UJm+*A-x1S$Y}(3z=j&K zMzK&GoyC3<6sg-BhR;#V++scqnbTp6P-)1%CJ`?MEMBf*)lSDFtbdgl)y1T;2odf! z8v`!ure6&VjR~wO8OEO(D5rwQ@@>I4glY&%2OT@~I4N zb9X|>+(Z&=pozRT)0BlbE`Vgr_n;?Ws$~@Z5z))8zF3m>%{C`T2##n`&`f*%GfScvrlC zm8Flb!brN~G-ykv+Qb?!AAG$q!dHPYvScVxJkb-6O07V}GdwLX4(h%1y54Ms3SUrg zmrU2cA`B#)+zH;3646RX*V#j*{0fV$r}uY{7TY1g5cnzw-;j0u&iC%|G&}Rp6Reib z`6myBUL)!@(zT_`-oTO`zuQS?2i5kZF~LSfRC!J`jXbreO)<7+YoAln6$A#Yp^WCL zbeAFr`t`6(ck6hE8QcCcV=?&U-?1dhjjetl=jl$B9o<#VTU?@nIGY#lZ=&_Lrfui7 z4N=(AkQIDr*REYDX_dwHbb7n4W1&C|UjPP=s^HyI+mxJKY8Pi*T+fb1Dk5@br_MDx zDZ&X-?l<2!mWgNP`9s?Kq6lvKxPVYsp00h`+<+4kF&=r^nX#Hb%BtKAMz;PDe5DlK zK=eoE-1WF#0fV5{r2RdYvWiY8r*R^$DCM~GXz6yx$Ym3E>XZ8;}#V)AtCX>2Yk{e;)6fJpX1*; zo^RS~3h8pCwGlW?CbQ2u_slm-&o@e4QCF4QtvEK-!8N58lv1YI%v&C%esWp4+^Wwg z^~_&`pALl>DM;;;V^6A)e`*l6;Ij7J1LG-y3P16kDdA1@cdX<_X6L*b40pYkc>#UCCGo%-#@Gt^+2Z&I`Rn;T)1UNauhb|ajmkJA-8%vANA6!+3jV+>M;@9x## zwneWtgVb5P_ImaI*YbPGMxE3DA^paYdO5!Y1A+m;z{STvH^0DTDTkkgU9{>g2l10! ze7wt^CUYzp5DW+g1OtKr!GK^uFd!J{j)9Ul^oMV#upb`zHTJt3ZSN*fUSxlNaWY6* z<{-d5tgxRN?-dsPF|ynNGMT4HxtzUI80LJyCk>u4{eggc(_i}^3BdmS7cnk7@ z%i+g<+2S_9qa2qSn%g)kENPBm-XG;}8NN@w-?#2hl?WUIeBa<-!1chUwyzoX-r{#8 zpR)7xB3Yzc%)=~jJvf>@Bd<9c@FaES2Wl;@qMyuR*25j(Y-I0CM~=RoIYMuBQ21paPYzz%&i9Lf6Pz3U+Ks9n zwyQGsoyz;)^mnSa-7dpe!&t_q(vzMr + + + + + + + + + + + + + + + + + + is-a.dev Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+ +
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/other/index.html b/other/index.html new file mode 100644 index 00000000..51a05da8 --- /dev/null +++ b/other/index.html @@ -0,0 +1,492 @@ + + + + + + + + + + + + + + + + + + + + + + Other Services - is-a.dev Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + +

Setting up other services with is-a.dev

+

Setting up records

+

Read the domain file structure and setup the records accordingly.

+

Configuring your server

+

After the pull request is merged, configure your server (apache, nginx, etc.) to work with <subdomain>.is-a.dev. If you are unsure how to configure your server, you can create an issue for support.

+

You should also, include <subdomain>.is-a.dev in your ssl certificate to get rid of certificate errors.

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/railway/index.html b/railway/index.html new file mode 100644 index 00000000..9eeb5888 --- /dev/null +++ b/railway/index.html @@ -0,0 +1,491 @@ + + + + + + + + + + + + + + + + + + + + + + Railway - is-a.dev Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + +

Setting up is-a.dev with Railway

+

Getting the CNAME Record

+
    +
  1. Navigate to the dashboard
  2. +
  3. Navigate to the project.
  4. +
  5. Navigate to the service.
  6. +
  7. Switch to the Settings tab.
  8. +
  9. Click on + Custom Domain button.
  10. +
  11. Enter the is-a.dev subdomain you want to use.
  12. +
  13. Copy the Value field.
  14. +
  15. Go to the register site.
  16. +
  17. Choose CNAME record type from the dropdown menu.
  18. +
  19. Choose your desired subdomain.
  20. +
  21. Enter the value from clipboard in the Record Value field.
  22. +
  23. Click on the Submit Query button.
  24. +
  25. Wait for your pull request to be merged and the DNS records to update.
  26. +
+

If the PR has been merged, the DNS records will be updated in a few minutes. +If the PR has been merged but the DNS records haven't updated and you have waited 48 hours, open a GitHub issue or a help thread in the is-a.dev discord server.

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/replit/index.html b/replit/index.html new file mode 100644 index 00000000..557b7ab3 --- /dev/null +++ b/replit/index.html @@ -0,0 +1,539 @@ + + + + + + + + + + + + + + + + + + + + + + Replit - is-a.dev Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + +

Setting up Replit with your is-a.dev subdomain

+

Creating a project

+

Follow their guide on how to set it up.

+

Point your Replit to your is-a.dev subdomain

+

Follow their guide on how to do it.

+

Only follow the "Connecting your domain to your repl" section and then follow the rest of the steps here.

+

Creating the domain file

+

Create a JSON file inside domains directory (domains/<subdomain>.json) with the following content:

+

Please do not add any TXT records even if Replit tells you to do so.

+
{
+    "owner": {
+        "username": "<github-username>",
+        "email": "email@address",
+        "twitter": "<twitter-username>"
+    },
+    "record": {
+        "CNAME": "<siteid>.id.repl.co"
+    }
+} 
+
+

Configuring

+
    +
  • After your pull request has been merged with the main repository you should be able to visit your new is-a.dev domain and it should show you your replit site +if it doesn't then you have configured your domain wrong.
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/search/search_index.json b/search/search_index.json new file mode 100644 index 00000000..00591da7 --- /dev/null +++ b/search/search_index.json @@ -0,0 +1 @@ +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"How to Register","text":"

You can read more about the domains JSON file structure here.

"},{"location":"#guides","title":"Guides","text":"
  • GitHub Pages
  • Hashnode Blogs
  • Cloudflare Pages
  • Replit
  • Railway
  • Other Services
  • Dashboard
"},{"location":"#vercel-and-netlify","title":"Vercel and Netlify","text":"

You will encounter an SSL certificate issue when using Vercel and Netlify. Neither service will work with our domains. It is recommended to use GitHub Pages, Railway or Cloudflare Pages instead.

"},{"location":"cloudflare_pages/","title":"Setting up Cloudflare pages with your is-a.dev subdomain","text":""},{"location":"cloudflare_pages/#creating-a-pagesdev-site","title":"Creating a pages.dev site","text":"

Follow their guide on how to set it up.

"},{"location":"cloudflare_pages/#point-your-pagesdev-site-to-your-is-adev-subdomain","title":"Point your pages.dev site to your is-a.dev subdomain","text":"

Follow their guide on how to do it. Only follow the \"Add a custom domain\" section and then follow the rest of the steps here.

"},{"location":"cloudflare_pages/#creating-the-domain-file","title":"Creating the domain file","text":"

Create a JSON file inside domains directory (domains/<subdomain>.json) with the following content:

{\n\"owner\": {\n\"username\": \"<github-username>\",\n\"email\": \"email@address\",\n\"twitter\": \"<twitter-username>\"\n},\n\"record\": {\n\"CNAME\": \"<sitename>.pages.dev\"\n}\n} 
"},{"location":"cloudflare_pages/#configuring","title":"Configuring","text":"
  • After your pull request has been merged with the main repository you should be able to visit your new is-a.dev domain and it should show you your pages.dev site if it doesn't then you have configured your domain wrong.
"},{"location":"dashboard/","title":"Register your is-a.dev subdomain using the is-a-dev Dashboard","text":""},{"location":"dashboard/#login-to-the-dashboard","title":"Login to the dashboard","text":"

First login to the dashboard using your GitHub account.

"},{"location":"dashboard/#registering-your-subdomain","title":"Registering your subdomain","text":"

On the left hand side, click on the button that says Register with a keyboard icon.

Then follow the steps to register your subdomain.

It will fork the is-a-dev/register repository, assuming you haven't done that already and it will create a pull request for you.

Finally, you'll have to wait for a maintainer to merge it, which should not take too long.

"},{"location":"domain-structure/","title":"Domains JSON file","text":"

To register a subdomain, you need to create a new JSON file in the domains directory through a pull request. For example, to register example.is-a.dev, you would create a file named example.json in the domains directory. The full path would be domains/example.json.

"},{"location":"domain-structure/#filename","title":"Filename","text":"

Note: You can include . (dots) in your filename to register a sub-subdomain (e.g., blog.example.is-a.dev). However, each segment of your subdomain must meet the following criteria:

The filename:

  • Must be alphanumeric, in lowercase, with dashes as separators. Using underscores as separators is also valid, but it's recommended to use dashes.
  • Must be at least 2 characters.
  • Must have a .json file extension.
"},{"location":"domain-structure/#examples-of-invalid-filenames","title":"Examples of Invalid Filenames","text":"
  • a.json (filename is less than 2 characters)
  • A.json (filename contains uppercase letters)
  • a..json (filename contains consecutive dots)
  • .a.json (filename starts with a dot)
  • a .json (filename contains a space)
  • a$.json (filename contains a non-alphanumeric character)
  • a.json.json (filename contains more than one .json extension)
"},{"location":"domain-structure/#examples-of-valid-filenames","title":"Examples of Valid Filenames","text":"

All the filenames below meet all the criteria. The reason in parentheses is just an example of one of the criteria they meet.

  • ab.json (at least 2 characters long)
  • example.json (alphanumeric and in lowercase)
  • blog.example.json (includes dots to register a sub-subdomain)
  • my-blog.json (uses dashes as separators, which is recommended)
  • my_blog.json (valid, but it's recommended to use dashes instead of underscores as separators)
"},{"location":"domain-structure/#structure","title":"Structure","text":""},{"location":"domain-structure/#owner-required","title":"owner (required)","text":"

You need to specify some information about yourself here. This is so that you can be contacted if required. In the owner object, the fields username and email are required. You can add more information in this object if you want.

{\n\"owner\": {\n\"username\": \"<github-username>\",\n\"email\": \"<email@address>\"\n}\n}\n
If you don't wish to share your email address here, please share your twitter or discord or any other social media account.
{\n\"owner\": {\n\"username\": \"<github-username>\",\n\"email\": \"\",\n\"twitter\": \"twitter-handle\",\n\"discord\": \"discord-user-id\"\n}\n}\n

"},{"location":"domain-structure/#description","title":"description","text":"

Describe your domain name and your usage. This is purely for documentation purpose and is optional.

"},{"location":"domain-structure/#repo","title":"repo","text":"

This is a link to your website repository or your github account. This is purely for documentation purpose and is optional.

"},{"location":"domain-structure/#record-required","title":"record (required)","text":"

This section is where you specify the DNS records. The supported types are:

  • CNAME
  • A
  • AAAA
  • URL
  • MX
  • TXT

Below are some examples for the given record types:

  • CNAME record: This must be a hostname (something.tld). It cannot be used in conjunction with any other record types. This is typically used to map your domain to a specific server.
    {\n\"record\": {\n\"CNAME\": \"<github-username>.github.io\"\n}\n}\n
  • A record: This must be a list of IPv4 addresses. These addresses point your domain to a specific server.
    {\n\"record\": {\n\"A\": [\n\"192.0.2.1\",\n\"198.51.100.1\",\n\"203.0.113.1\"\n]\n}\n}\n
  • AAAA record: This must be a list of IPv6 addresses. Like the A record, these addresses point your domain to a specific server.
    {\n\"record\": {\n\"AAAA\": [\n\"2001:0db8:85a3:0000:0000:8a2e:0370:7334\",\n\"2001:0db8:85a3:0000:0000:8a2e:0370:7335\",\n\"2001:0db8:85a3:0000:0000:8a2e:0370:7336\"\n]\n}\n}\n
  • URL record: This redirects your domain to another URL.
    {\n\"record\": {\n\"URL\": \"https://my-other-website.com\"\n}\n}\n
  • MX record: This must be a list of hostnames. These hostnames specify the mail servers that handle emails for your domain.
    {\n\"record\": {\n\"MX\": [\n\"mx1.improvmx.com\",\n\"mx2.improvmx.com\"\n]\n}\n}\n
  • TXT record: This can be either a single string or a list of strings. TXT records are often used for various purposes, such as verifying domain ownership and ensuring email security.
    {\n\"record\": {\n\"TXT\": \"Hello World!\"\n}\n}\n
    {\n\"record\": {\n\"TXT\": [\"Hello\", \"World!\"]\n}\n}\n
"},{"location":"github_pages/","title":"Setting up GitHub pages with is-a.dev subdomain","text":""},{"location":"github_pages/#creating-a-github-pages-repository","title":"Creating a GitHub pages repository","text":"

You can create a GitHub pages website by creating a repository with the name <github-username>.github.io. For more information about GitHub pages, please read through their guide.

"},{"location":"github_pages/#creating-the-domain-file","title":"Creating the domain file","text":"

Create a JSON file inside domains directory (domains/<subdomain>.json) with the following content

{\n\"description\": \"Describe the use of this subdomain\",\n\"repo\": \"https://github.com/<github-username>/<github-username>.github.io\",\n\"owner\": {\n\"username\": \"<github-username>\",\n\"email\": \"email@address\",\n\"twitter\": \"<twitter-username>\"\n},\n\"record\": {\n\"CNAME\": \"<username>.github.io\"\n}\n} 

"},{"location":"github_pages/#configuring","title":"Configuring","text":"
  • After the pull request is merged, you will see a 404 error on <your-subdomain>.is-a.dev. To fix this, go to your GitHub pages repository's Settings > GitHub pages > Custom domain and add <your-subdomain>.is-a.dev in the given field. Only do this after your pull request is merged.
  • Check the Enforce HTTPS checkbox below the custom domain input.
"},{"location":"github_pages/#using-is-adev-for-all-github-pages-sites-in-your-account","title":"Using is-a.dev for all GitHub Pages sites in your account","text":"

It is possible to have a unique subdomain on your is-a.dev domain for each repository which has Pages enabled.

In order to utilise this, you must ensure the following conditions are met: 1) The website which hosts the \"root\" (<subdomain>.is-a.dev) must be named <username>.github.io 2) That repo must have <subdomain>.is-a.dev as the custom domain within the Pages settings. 3) Every other repo must not have a custom domain set in the Pages settings. 4) Links to these hosted repos must end with / (e.g https://<subdomain>.is-a.dev/<project>/)

"},{"location":"hashnode/","title":"Hashnode Blog","text":"

When you create your hashnode blog, hashnode provides a free hashnode.dev subdomain for you. However, you can set up your own is-a.dev subdomain.

In this guide, you will learn how to accomplish this.

  1. Log in to your Hashnode account.

  2. Click on your avatar at the bottom-left corner of the page on desktop or top-right corner on mobile.

  1. Click on the Blog Dashboard option from the popup modal to access your blog's dashboard.

  1. Navigate to the Domain tab and enter your domain without the www or https:// prefix in the text field provided. Then click on the Update button to proceed.

  1. Go to your fork of the is-a-dev/register repository, edit your subdomain's JSON file, make sure you remove any old records, then add this:
    \"CNAME\": \"hashnode.network\"\n

Once done, your hashnode blog is setup to use your subdomain, all you have to do is wait sometime for the DNS to propogate. These changes could take from 1 hour to around 48 hours, so please be patient, It'll most likely be ready within a hour. Enjoy your hashnode Blog, With Your Sweet .is-a.dev Subdomain! If your need more help: please read this support article on hashnode support: https://support.hashnode.com/docs/mapping-domain/, this should help you more, if you need more help related to Hashnode, then please visit the Hashnode Support Center. Remeber, is-a.dev has no links with hashnode, so please do not create issues on our github, saying that your hashnode blog is having issues, we simply will not respond to them.

"},{"location":"other/","title":"Setting up other services with is-a.dev","text":""},{"location":"other/#setting-up-records","title":"Setting up records","text":"

Read the domain file structure and setup the records accordingly.

"},{"location":"other/#configuring-your-server","title":"Configuring your server","text":"

After the pull request is merged, configure your server (apache, nginx, etc.) to work with <subdomain>.is-a.dev. If you are unsure how to configure your server, you can create an issue for support.

You should also, include <subdomain>.is-a.dev in your ssl certificate to get rid of certificate errors.

"},{"location":"railway/","title":"Setting up is-a.dev with Railway","text":""},{"location":"railway/#getting-the-cname-record","title":"Getting the CNAME Record","text":"
  1. Navigate to the dashboard
  2. Navigate to the project.
  3. Navigate to the service.
  4. Switch to the Settings tab.
  5. Click on + Custom Domain button.
  6. Enter the is-a.dev subdomain you want to use.
  7. Copy the Value field.
  8. Go to the register site.
  9. Choose CNAME record type from the dropdown menu.
  10. Choose your desired subdomain.
  11. Enter the value from clipboard in the Record Value field.
  12. Click on the Submit Query button.
  13. Wait for your pull request to be merged and the DNS records to update.

If the PR has been merged, the DNS records will be updated in a few minutes. If the PR has been merged but the DNS records haven't updated and you have waited 48 hours, open a GitHub issue or a help thread in the is-a.dev discord server.

"},{"location":"replit/","title":"Setting up Replit with your is-a.dev subdomain","text":""},{"location":"replit/#creating-a-project","title":"Creating a project","text":"

Follow their guide on how to set it up.

"},{"location":"replit/#point-your-replit-to-your-is-adev-subdomain","title":"Point your Replit to your is-a.dev subdomain","text":"

Follow their guide on how to do it.

Only follow the \"Connecting your domain to your repl\" section and then follow the rest of the steps here.

"},{"location":"replit/#creating-the-domain-file","title":"Creating the domain file","text":"

Create a JSON file inside domains directory (domains/<subdomain>.json) with the following content:

Please do not add any TXT records even if Replit tells you to do so.

{\n\"owner\": {\n\"username\": \"<github-username>\",\n\"email\": \"email@address\",\n\"twitter\": \"<twitter-username>\"\n},\n\"record\": {\n\"CNAME\": \"<siteid>.id.repl.co\"\n}\n} 
"},{"location":"replit/#configuring","title":"Configuring","text":"
  • After your pull request has been merged with the main repository you should be able to visit your new is-a.dev domain and it should show you your replit site if it doesn't then you have configured your domain wrong.
"}]} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 00000000..3e0eb236 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,48 @@ + + + + None + 2024-02-25 + daily + + + None + 2024-02-25 + daily + + + None + 2024-02-25 + daily + + + None + 2024-02-25 + daily + + + None + 2024-02-25 + daily + + + None + 2024-02-25 + daily + + + None + 2024-02-25 + daily + + + None + 2024-02-25 + daily + + + None + 2024-02-25 + daily + + \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..0d9f9cec5d0d4c2a4c04351dd373d0a65d57edef GIT binary patch literal 203 zcmV;+05ty}iwFo!2is)=|8r?{Wo=<_E_iKh0PU1b4#FT1h4-Fn1?KtZ9al7oQX(($Q8cASNMO!$Ch4{`~o@5FqzT> F002WjWMlvU literal 0 HcmV?d00001