<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rudy Alula</title>
    <description>The latest articles on DEV Community by Rudy Alula (@srnv).</description>
    <link>https://dev.to/srnv</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F231091%2Fb56ac047-fbb1-48a1-8fc2-519450378581.jpeg</url>
      <title>DEV Community: Rudy Alula</title>
      <link>https://dev.to/srnv</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/srnv"/>
    <language>en</language>
    <item>
      <title>Ogone 0.22.0 - Obvious: new CSS pre-processor</title>
      <dc:creator>Rudy Alula</dc:creator>
      <pubDate>Wed, 26 Aug 2020 16:20:43 +0000</pubDate>
      <link>https://dev.to/srnv/ogone-0-22-0-css3-style-network-between-web-components-17ek</link>
      <guid>https://dev.to/srnv/ogone-0-22-0-css3-style-network-between-web-components-17ek</guid>
      <description>&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;Hey! I'm Rudy Alula, working as Front-End Developer for Stanley Robotics.&lt;br&gt;
now that the presentations are made, let me introduce a new feature from Ogone that you should explore: &lt;strong&gt;Style Network&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://dev.to/srnv/deno-learn-how-to-use-ogone-486c"&gt;start learning Ogone here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  History
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjl7qi4cvmywxm7wyop78.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjl7qi4cvmywxm7wyop78.png" alt="Ogone and Deno"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;you got to know that in earlier versions, Ogone has supported modules like deno-sass and denolus to transform scss/sass/stylus like text.&lt;br&gt;
these weren't maintained and generated many issues inside Ogone so following the advices in &lt;a href="https://dev.to/srnv/deno-1-2-0-url-argument-type-solutions-37m0"&gt;this article&lt;/a&gt;. &lt;strong&gt;I erased them&lt;/strong&gt;..&lt;br&gt;
being a Sass/Stylus user, I couldn't bare Ogone will only supports native-CSS without the tricks I'm used to.&lt;br&gt;
So I decided to create an internal css-preprocessor that could deal with all the tricks I want.&lt;/p&gt;
&lt;h2&gt;
  
  
  &amp;amp; Obvious came out
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Obvious&lt;/strong&gt; is the name of this pre-processor, I don't know why but that just sounds cool so &lt;strong&gt;Obvious&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;more seriously &lt;strong&gt;Obvious&lt;/strong&gt; has big potential as it is one of the steps of the compilation. it has access to the components and knows what components are imported in which component.&lt;/p&gt;

&lt;p&gt;in the past you would naturally give a language to the style tag like &lt;code&gt;&amp;lt;style lang="obvious"&amp;gt;&lt;/code&gt;, it is no more required, Obvious is now by default.&lt;/p&gt;
&lt;h4&gt;
  
  
  ok that's cool but what are the features ?
&lt;/h4&gt;

&lt;p&gt;let me give you an overview:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;nested rules&lt;/li&gt;
&lt;li&gt;parent referencing with &lt;code&gt;&amp;amp;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;import component's rules and vars &lt;code&gt;@use 'component-tagname' as Component;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;export rules, vars &lt;code&gt;@export const myVar = red;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;save rules inside vars &lt;code&gt;@const t = div { /* ... */}&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;spread rules &lt;code&gt;@const rule = div {...}; div { ...$rule; }&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;vars &lt;code&gt;@const t = value;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;eval the value of one variable &lt;code&gt;@const* var = true;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;css minification&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Nested rules
&lt;/h2&gt;

&lt;p&gt;I think this was obvious. this feature was required.&lt;br&gt;
for example, inside your style element you would write:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ff20n8jtu9270qkkf4bdm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ff20n8jtu9270qkkf4bdm.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;all paragraph element should display a text in grey, excepted for the paragraph that is a child of a div element.&lt;/p&gt;
&lt;h2&gt;
  
  
  Parent Referencing
&lt;/h2&gt;

&lt;p&gt;use the &lt;code&gt;&amp;amp;&lt;/code&gt; character to make a reference to the parent selector.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fc8v43ntx9yzdmu99l3h9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fc8v43ntx9yzdmu99l3h9.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;is like&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="nc"&gt;.container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="nc"&gt;.container&lt;/span&gt;&lt;span class="nd"&gt;:hover&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Variables
&lt;/h2&gt;

&lt;p&gt;getting varaible declarations from js. this will let you filter what rules/variables are available for external uses.&lt;/p&gt;

&lt;p&gt;to declare a variable use &lt;code&gt;@const&lt;/code&gt; like following:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnjw262yapjxmjv2ind98.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnjw262yapjxmjv2ind98.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;now let say we want to be able to use those vars outside the component but through a rule&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3ewzxdy0jw0r1qharifq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3ewzxdy0jw0r1qharifq.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Import/Export things from Components
&lt;/h2&gt;

&lt;p&gt;this is like namespaces from &lt;strong&gt;Less&lt;/strong&gt; but doing it through a component.&lt;/p&gt;

&lt;p&gt;let's write two rules. one exported and another private one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ft8s55rkppqv35n35y49v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ft8s55rkppqv35n35y49v.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;start using &lt;code&gt;$spanRule&lt;/code&gt; inside another component.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1fwjnzpgit2sgco8ursy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F1fwjnzpgit2sgco8ursy.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Sass and Less inspired but I took some liberties on few syntaxes.&lt;br&gt;
this article only exposes the new CSS parser of Ogone called Obvious. Now that I can parse properties of CSS Rules, I'm planning to use CSS rules for shaders definitions. please check this, if you're interested in &lt;a href="https://github.com/SRNV/Ogone/issues/26" rel="noopener noreferrer"&gt;webGL1/2 API&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Ressources
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/SRNV/Otone" rel="noopener noreferrer"&gt;Otone ^0.1.3&lt;/a&gt; on VS Code&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/SRNV/Ogone" rel="noopener noreferrer"&gt;Ogone 0.22.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Deno ^1.3.0&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;available on Deno: &lt;a href="https://deno.land/x/ogone@0.22.0" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ogone</category>
      <category>deno</category>
      <category>typescript</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Deno: Front-end diagnostics.</title>
      <dc:creator>Rudy Alula</dc:creator>
      <pubDate>Fri, 17 Jul 2020 12:00:28 +0000</pubDate>
      <link>https://dev.to/srnv/deno-front-end-diagnostics-3jl2</link>
      <guid>https://dev.to/srnv/deno-front-end-diagnostics-3jl2</guid>
      <description>&lt;h1&gt;
  
  
  Intro
&lt;/h1&gt;

&lt;p&gt;Hey! I'm Rudy Alula, and I work as Front-end Developer for &lt;a href="https://www.youtube.com/watch?v=Wo1OmfoufmQ"&gt;Stanley Robotics&lt;/a&gt;, which is solding the first outdoor robot parking vallet in automobile industry.&lt;br&gt;
In this article you're gonna see what are the modules that you can use to build front applications and at the end I'm going to talk more about &lt;strong&gt;Ogone 0.17.0-rc.1&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Quick words
&lt;/h3&gt;

&lt;p&gt;this article is made to help people searching for front-end tools compatible with deno and also to improve your knowledges.&lt;br&gt;
&lt;strong&gt;all modules are sorted by number of stars on github and the style of rendering&lt;/strong&gt;&lt;br&gt;
these are repertoried in deno.x and x.nest.land.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why ?
&lt;/h3&gt;

&lt;p&gt;with deno Front-end creators are free from Webpack, RollUp, Parcel, Browserify and other bundlers.&lt;br&gt;
it also allows some features like downloading remote components with url.&lt;/p&gt;

&lt;h1&gt;
  
  
  Diagnostics
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Creator&lt;/strong&gt;: author of the module&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;version&lt;/strong&gt;: actual version&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;stars&lt;/strong&gt;: number of stars on github&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;style&lt;/strong&gt;: CSR | SSR | SPA | PWA | MVC | GUI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;examples&lt;/strong&gt;: repos has examples&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Component oriented&lt;/strong&gt;: is the module using components ?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;React dependent&lt;/strong&gt;: is the module using &lt;strong&gt;React&lt;/strong&gt; to render ?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sass Support&lt;/strong&gt;: is the module supporting &lt;strong&gt;Sass&lt;/strong&gt; css pre-processor ?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ejs support&lt;/strong&gt;: is the module using Ejs (or handlebars) ?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;deno.x&lt;/strong&gt;: can get it on deno.land/x&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;x.nest.land&lt;/strong&gt;: can get it on nest.land's gallery&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;repository&lt;/strong&gt;: the repos.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Server Side Rendering
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Most of these tools are using &lt;strong&gt;React&lt;/strong&gt; to render the html. if you're good with JSX on server side you can check these.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Creator&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;version&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;stars&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;style&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;examples&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Component oriented&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;React dependent&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Sass Support&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Ejs support&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;deno.x&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;x.nest.land&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;repository&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/sholladay/pogo/tree/master"&gt;pogo&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;sholladay&lt;/td&gt;
&lt;td&gt;0.4.0&lt;/td&gt;
&lt;td&gt;255&lt;/td&gt;
&lt;td&gt;SSR&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/sholladay/pogo"&gt;https://github.com/sholladay/pogo&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/denjucks/denjucks"&gt;denjucks&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;denjucks&lt;/td&gt;
&lt;td&gt;v1.1.1&lt;/td&gt;
&lt;td&gt;23&lt;/td&gt;
&lt;td&gt;SSR&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;/&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/denjucks/denjucks"&gt;https://github.com/denjucks/denjucks&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/alosaur/angular_deno"&gt;angular_deno&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;alausor&lt;/td&gt;
&lt;td&gt;v0.1.1&lt;/td&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;SSR&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/alosaur/angular_deno"&gt;https://github.com/alosaur/angular_deno&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/deligenius/view-engine"&gt;view_engine&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;deligenius&lt;/td&gt;
&lt;td&gt;v1.3.0&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;SSR&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/deligenius/view-engine"&gt;https://github.com/deligenius/view-engine&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/apiel/adka"&gt;adka&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;apiel&lt;/td&gt;
&lt;td&gt;0.1.5&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;SSR&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/apiel/adka"&gt;https://github.com/apiel/adka&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/AkifumiSato/dexr"&gt;Dexr&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;AkifumiSato&lt;/td&gt;
&lt;td&gt;v0.2.2&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;SSR&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/AkifumiSato/dexr"&gt;https://github.com/AkifumiSato/dexr&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/mtwzim/next"&gt;next&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;mtwzim&lt;/td&gt;
&lt;td&gt;/&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;SSR&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/mtwzim/next"&gt;https://github.com/mtwzim/next&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/apiel/jsx-html"&gt;jsx-html&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;apiel&lt;/td&gt;
&lt;td&gt;1.2.1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;SSR&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/apiel/jsx-html"&gt;https://github.com/apiel/jsx-html&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/postui/postjs"&gt;postJs&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;postui&lt;/td&gt;
&lt;td&gt;0.0.15&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;SSR&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/postui/postjs"&gt;https://github.com/postui/postjs&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/eirikb/domdom-deno"&gt;domdom&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;eirikb&lt;/td&gt;
&lt;td&gt;v4.12.0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;SSR&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/eirikb/domdom-deno"&gt;https://github.com/eirikb/domdom-deno&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/maheshkareeya/ssr"&gt;Qcom&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;maheshkareeya&lt;/td&gt;
&lt;td&gt;/&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;SSR&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/maheshkareeya/ssr"&gt;https://github.com/maheshkareeya/ssr&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;11 SSR are available for deno.&lt;/li&gt;
&lt;li&gt;7 of them are using React.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Client Side Rendering
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Client Side Rendering is the way to bundle HTML, JS, CSS and static files for Server-less applications. &lt;a href="https://github.com/SRNV/Ogone"&gt;&lt;strong&gt;Ogone&lt;/strong&gt;&lt;/a&gt; is one of the deno's available front-end build tools.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Creator&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;version&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;stars&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;style&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;examples&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Component oriented&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;React dependent&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Sass Support&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Ejs support&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;deno.x&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;x.nest.land&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;repository&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/SRNV/Ogone"&gt;&lt;strong&gt;Ogone&lt;/strong&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;SRNV (Rudy Alula)&lt;/td&gt;
&lt;td&gt;0.17.0-rc.0&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;CSR/SPA/PWA&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/SRNV/Ogone"&gt;https://github.com/SRNV/Ogone&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/DenoBRComunitty/webcomponent"&gt;webcomponent&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Matheus Vinícius&lt;/td&gt;
&lt;td&gt;/&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;CSR&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/DenoBRComunitty/webcomponent"&gt;https://github.com/DenoBRComunitty/webcomponent&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Desktop
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Creator&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;version&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;stars&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;style&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;examples&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Component oriented&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;React dependent&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Sass Support&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Ejs support&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;deno.x&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;x.nest.land&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;repository&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/webview/webview_deno"&gt;webview_deno&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;webview&lt;/td&gt;
&lt;td&gt;0.4.3&lt;/td&gt;
&lt;td&gt;430&lt;/td&gt;
&lt;td&gt;GUI&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/webview/webview_deno"&gt;https://github.com/webview/webview_deno&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/uki00a/carol"&gt;carol&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;uki00a&lt;/td&gt;
&lt;td&gt;v0.0.6&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;GUI&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/uki00a/carol"&gt;https://github.com/uki00a/carol&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  MVC
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;these tools are not made for front-end works but can be used to render a static site.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Creator&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;version&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;stars&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;style&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;examples&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Component oriented&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;React dependent&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Sass Support&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Ejs support&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;deno.x&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;x.nest.land&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;repository&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/drashland/deno-drash"&gt;deno-drash&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Drash.land&lt;/td&gt;
&lt;td&gt;v1.0.8&lt;/td&gt;
&lt;td&gt;526&lt;/td&gt;
&lt;td&gt;MVC&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;custom&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/drashland/deno-drash"&gt;https://github.com/drashland/deno-drash&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/mandarineorg/mandarinets"&gt;Mandarine.ts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Andres Pirela&lt;/td&gt;
&lt;td&gt;v1.2.1&lt;/td&gt;
&lt;td&gt;52&lt;/td&gt;
&lt;td&gt;MVC&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/mandarineorg/mandarinets"&gt;https://github.com/mandarineorg/mandarinets&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h1&gt;
  
  
  Ogone 0.17.0-rc.1
&lt;/h1&gt;

&lt;p&gt;Searching for collabs, Ogone is still under development and aim to reach the &lt;a href="https://github.com/SRNV/Ogone/projects/1"&gt;1.0.0&lt;/a&gt; version.&lt;br&gt;
The last version implements a new way to declare the properties of the component with typescript.&lt;br&gt;
if you don't know Ogone, Single File Components based, it uses a protocol to code the component.&lt;br&gt;
protocol is a custom concept, it accepts 5 labels:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;def&lt;/li&gt;
&lt;li&gt;before-each&lt;/li&gt;
&lt;li&gt;declare&lt;/li&gt;
&lt;li&gt;case ...&lt;/li&gt;
&lt;li&gt;default&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Ogone 0.17.0-rc.1 performances
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--enVlQaSa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mvjodjpwhy4c2n5vly1i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--enVlQaSa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mvjodjpwhy4c2n5vly1i.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;rendering the example/app from Ogone repository.&lt;br&gt;
rendering with &lt;code&gt;187 ms scripting&lt;/code&gt; and 6000+ nodes used.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Examples
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Otone 0.0.8 (Syntax HighLighter for VS Code) is available and supports Ogone 0.17.0-rc.1&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rXciiou3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/q7tunpy9w6g4rtwib0rg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rXciiou3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/q7tunpy9w6g4rtwib0rg.png" alt="Async Component"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FVaxD8lK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wllqtv3bhtxrgmtdr2ro.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FVaxD8lK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wllqtv3bhtxrgmtdr2ro.png" alt="Store Component"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Want to learn more about &lt;strong&gt;Ogone&lt;/strong&gt; ? &lt;a href="https://dev.to/srnv/deno-learn-how-to-use-ogone-486c"&gt;check it!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Any module is missing or wanna see more diagnostics ? don't hesitate to comment!&lt;/p&gt;

&lt;p&gt;Peace.&lt;/p&gt;

</description>
      <category>deno</category>
      <category>typescript</category>
      <category>javascript</category>
      <category>ogone</category>
    </item>
    <item>
      <title>Deno 1.2.0: Url Argument Type Solutions</title>
      <dc:creator>Rudy Alula</dc:creator>
      <pubDate>Tue, 14 Jul 2020 13:32:07 +0000</pubDate>
      <link>https://dev.to/srnv/deno-1-2-0-url-argument-type-solutions-37m0</link>
      <guid>https://dev.to/srnv/deno-1-2-0-url-argument-type-solutions-37m0</guid>
      <description>&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;hmm, yesterday, some of us, Deno Devs (or Denosaurs or...) had a really rude experience with &lt;code&gt;deno upgrade&lt;/code&gt;.&lt;br&gt;
Like each time there's a new version we naturally decided to switch and upgrade to the new version.&lt;br&gt;
I think this is a really good lesson for me and perhaps others. you're gonna see why.&lt;br&gt;
&lt;strong&gt;Deno 1.2.0&lt;/strong&gt; came with a "breaking" change or I don't know how to call it, that slowed down many modules development, like Mandarine.ts from Andres Pirela or Ogone for myself.&lt;br&gt;
this version implements a new &lt;strong&gt;Argument type&lt;/strong&gt; for &lt;strong&gt;URL&lt;/strong&gt;, it says:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qzi6fXTj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/x8rgr7jdbd0thw9xxqa3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qzi6fXTj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/x8rgr7jdbd0thw9xxqa3.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;TS2345 [ERROR]: Argument of type 'string | URL' is not assignable to parameter of type 'string'.&lt;br&gt;
  Type 'URL' is not assignable to type 'string'.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The main problem is ... this is not my code... so something were broken but I didn't know where.&lt;br&gt;
after a discussion in discord, we saw that &lt;strong&gt;std/path&lt;/strong&gt; version &lt;strong&gt;under 0.61.0 is broken&lt;/strong&gt; (in my case) on &lt;strong&gt;Deno 1.2.0&lt;/strong&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Fix
&lt;/h2&gt;

&lt;p&gt;So, the first thing I did: &lt;strong&gt;upgrade the std/path&lt;/strong&gt; in &lt;code&gt;deps.ts&lt;/code&gt; to 0.61.0 (if you got one in your module, or in &lt;code&gt;mod.ts&lt;/code&gt;). after this, the same issue came out: new Url(bruh) is not assignable .. that was not enough and I had to learn how to inspect the dependency tree by using: &lt;code&gt;deno info --unstable --no-check deps.ts&lt;/code&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;--no-check&lt;/code&gt; will say to the &lt;strong&gt;typescript compiler&lt;/strong&gt; to omit the errors. and &lt;code&gt;--unstable&lt;/code&gt; is to allow the unstable features of &lt;strong&gt;Deno&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;this should print a large list like following:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NyZ5I71z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/e5mmib9o1wjxlpttdvoc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NyZ5I71z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/e5mmib9o1wjxlpttdvoc.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;for me that was &lt;a href="https://github.com/manyuanrong/deno-plugin-prepare/pull/17"&gt;plugin_prepare&lt;/a&gt;, used by &lt;strong&gt;Deno Sass&lt;/strong&gt; that were using an old version of &lt;strong&gt;std/path&lt;/strong&gt; (0.51.0). after a Pull Request this were fixed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solutions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Avoid using master branch&lt;/strong&gt;: you guys need to put the version on the imports, especially for the deno.x modules. master's branch is by definition unstable. do &lt;code&gt;deno.land/std@[version]/[module]/...&lt;/code&gt;. do it now for all your dependencies&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Deno info&lt;/strong&gt;: use &lt;code&gt;deno info --unstable --no-check deps.ts&lt;/code&gt; like explained above to inspect which module is using an old deno.std version.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pull Request&lt;/strong&gt;: if you're in the same case with a dependent sub-module, you need to make a PR or ping the maintainers and tell them to use supported version of deno.std in &lt;strong&gt;Deno 1.2.0&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Downgrade&lt;/strong&gt;: &lt;code&gt;deno upgrade --version 1.1.3&lt;/code&gt; and wait for all the sub-modules to change the versions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;the sub-module is no more maintained&lt;/strong&gt;: erase it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;also&lt;/strong&gt;: keep in  mind deno.std are still unstable.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Acknowledgements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a class="comment-mentioned-user" href="https://dev.to/yamboy"&gt;@yamboy&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;@lucasonato&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  related sources:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/denoland/deno/issues/5365#issuecomment-658087635"&gt;The issue&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  See also:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://nest.land/"&gt;Nest.land&lt;/a&gt; package registry for Deno with immutable packages using Blockchain&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/divy-work/deno-sass"&gt;Deno Sass&lt;/a&gt; module binding Sass CSS Pre-Processor for Deno&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/SRNV/Ogone"&gt;Ogone&lt;/a&gt; Web Components-Compiler, Client Side Rendering for Deno.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/mandarineorg/mandarinets"&gt;Mandarine.ts&lt;/a&gt; is a framework that allows you to create applications.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>deno</category>
      <category>typescript</category>
      <category>javascript</category>
      <category>ogone</category>
    </item>
    <item>
      <title>Deno: Ogone's JSX output</title>
      <dc:creator>Rudy Alula</dc:creator>
      <pubDate>Fri, 10 Jul 2020 11:04:14 +0000</pubDate>
      <link>https://dev.to/srnv/deno-ogone-s-jsx-output-1k8l</link>
      <guid>https://dev.to/srnv/deno-ogone-s-jsx-output-1k8l</guid>
      <description>&lt;h1&gt;
  
  
  Intro
&lt;/h1&gt;

&lt;p&gt;Hey! I'm Rudy Alula, and I work as Front-end Developer for &lt;a href="https://www.youtube.com/watch?v=Wo1OmfoufmQ"&gt;Stanley Robotics&lt;/a&gt;, which is solding the first outdoor robot parking vallet in automobile industry.&lt;/p&gt;

&lt;p&gt;with this article, you're about to understand how &lt;code&gt;&amp;lt;div&amp;gt;&amp;lt;img src="..."/&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt; is rendered by Ogone on your browser.&lt;/p&gt;

&lt;p&gt;Actually Deno don't have a native DOMParser or std one, so Ogone implements a custom DOMParser, this allows some custom stuffs and let Ogone out of React's JSX supremacy.&lt;/p&gt;

&lt;p&gt;this &lt;code&gt;&amp;lt;div&amp;gt;&amp;lt;img src="..."/&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt; will simply output like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;pos&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[],&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;l&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ap&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;);},&lt;/span&gt; &lt;span class="nx"&gt;h&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(...&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;createElement&lt;/span&gt;&lt;span class="p"&gt;(...&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nx"&gt;at&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;setAttribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)){&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;pos&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;nt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;template&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nx"&gt;n1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;div&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nx"&gt;n2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;img&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;at&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;src&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;...&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;ap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;nt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;n1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="nx"&gt;ap&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;n2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;nt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Deno: Learn how to use Ogone</title>
      <dc:creator>Rudy Alula</dc:creator>
      <pubDate>Fri, 10 Jul 2020 09:01:55 +0000</pubDate>
      <link>https://dev.to/srnv/deno-learn-how-to-use-ogone-486c</link>
      <guid>https://dev.to/srnv/deno-learn-how-to-use-ogone-486c</guid>
      <description>&lt;h1&gt;
  
  
  Intro
&lt;/h1&gt;

&lt;p&gt;Hey! I'm Rudy Alula, and I work as Front-end Developer for &lt;a href="https://www.youtube.com/watch?v=Wo1OmfoufmQ"&gt;Stanley Robotics&lt;/a&gt;, which is solding the first outdoor robot parking vallet in automobile industry.&lt;/p&gt;

&lt;p&gt;with this article, you're about to learn more on &lt;strong&gt;Ogone&lt;/strong&gt; but first you need to understand what's happening and to &lt;a href="https://github.com/SRNV/Ogone"&gt;README&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Those who are familiar with Front-End tools will recognize some of the next features.&lt;/p&gt;

&lt;h1&gt;
  
  
  Installation
&lt;/h1&gt;

&lt;p&gt;First you need to download &lt;a href="https://deno.land/#installation"&gt;Deno&lt;/a&gt;. And then run: &lt;code&gt;deno --version&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;at this moment Ogone is built under &lt;code&gt;deno 1.1.3&lt;/code&gt;&lt;br&gt;
so please &lt;code&gt;deno upgrade&lt;/code&gt; if your version is under.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;for this tutorial we will follow this architecture:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- components
  |__root-component.o3
  |__greeting-component.o3
- deps.ts
- mod.ts
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;this is the moment to load Ogone. in your &lt;code&gt;deps.ts&lt;/code&gt; start by importing Ogone:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// ./deps.ts&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;o3&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://x.nest.land/Ogone@0.18.0-rc.0-4/mod.ts&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// ./mod.ts&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;o3&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./deps.ts&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;o3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;run&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;entrypoint&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/root-component.o3&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;modules&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/modules&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;8080&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// dev port&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;this file will configure the compilation of your application. &lt;/p&gt;




&lt;h1&gt;
  
  
  Getting Started
&lt;/h1&gt;

&lt;p&gt;In the &lt;code&gt;root-component&lt;/code&gt;, import another component like this with the &lt;code&gt;use ... as&lt;/code&gt; statement.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight haml"&gt;&lt;code&gt;&lt;span class="c"&gt;// ./components/root-component.o3
&lt;/span&gt;use ./greeting-component.o3 as 'greeting-component';
&lt;span class="nt"&gt;&amp;lt;greeting-component&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;let's see what we can do in the &lt;strong&gt;greeting-component&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight haml"&gt;&lt;code&gt;&lt;span class="c"&gt;// ./components/greeting-component.o3
&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Hello World&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;write the hello world inside an element&lt;br&gt;
unwrapped textnodes throw an error&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;yup ok, not so cool but this is like every tools has to present a &lt;em&gt;Hello world&lt;/em&gt; example.&lt;/p&gt;

&lt;h2&gt;
  
  
  Require data from the parent component
&lt;/h2&gt;

&lt;p&gt;hmm, let's say Hello Deno instead but through the root-component. open your &lt;code&gt;greeting-component.o3&lt;/code&gt; and start using the &lt;code&gt;require ... as&lt;/code&gt; statement.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight haml"&gt;&lt;code&gt;&lt;span class="c"&gt;// ./components/greeting-component.o3
&lt;/span&gt;require name as String;
&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Hello ${name}!&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;As you can see the first part of the component is the configuration of the component. you can see the first statement &lt;code&gt;require &amp;lt;property&amp;gt; as &amp;lt;constructors&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;if empty, name will throw an error. so you need to provide  the &lt;em&gt;Deno&lt;/em&gt; to the greeting-component.&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight haml"&gt;&lt;code&gt;&lt;span class="c"&gt;// ./components/root-component.o3
&lt;/span&gt;use ./greeting-component.o3 as 'greeting-component';
&lt;span class="nt"&gt;&amp;lt;greeting-component&lt;/span&gt; &lt;span class="na"&gt;:name=&lt;/span&gt;&lt;span class="s"&gt;"'Deno'"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  List of name
&lt;/h2&gt;

&lt;p&gt;now you have seen two statements &lt;code&gt;use ... as&lt;/code&gt; and &lt;code&gt;require ... as&lt;/code&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  what if our component has to present a list of random names ?
&lt;/h4&gt;

&lt;p&gt;First, define the names, by using protocol element and &lt;code&gt;def&lt;/code&gt; statement, follow this example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight haml"&gt;&lt;code&gt;&lt;span class="c"&gt;// ./components/greeting-component.o3
&lt;/span&gt;require name as String;
&lt;span class="nt"&gt;&amp;lt;proto&amp;gt;&lt;/span&gt;
  def:
    people:
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Mary&lt;/span&gt; &lt;span class="no"&gt;Grey&lt;/span&gt;
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Sam&lt;/span&gt; &lt;span class="no"&gt;Lee&lt;/span&gt;
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Christopher&lt;/span&gt; &lt;span class="no"&gt;Van&lt;/span&gt; &lt;span class="no"&gt;Sperso&lt;/span&gt;
   index: 0
&lt;span class="nt"&gt;&amp;lt;/proto&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Hello ${name}!&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;here to understand the &lt;a href="https://github.com/SRNV/Ogone"&gt;protocol&lt;/a&gt; element.&lt;br&gt;
So we got now an index and a list, but nothing change. hmm let's use the &lt;em&gt;mounted/onMounted&lt;/em&gt; feature of Ogone, we will use setInterval to see all the list. &lt;br&gt;
inside the protocol element, use &lt;code&gt;default&lt;/code&gt; statement like following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight haml"&gt;&lt;code&gt;&lt;span class="c"&gt;// ./components/greeting-component.o3
&lt;/span&gt;require name as String;
&lt;span class="nt"&gt;&amp;lt;proto&amp;gt;&lt;/span&gt;
  def:
    people:
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Mary&lt;/span&gt; &lt;span class="no"&gt;Grey&lt;/span&gt;
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Sam&lt;/span&gt; &lt;span class="no"&gt;Lee&lt;/span&gt;
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Christopher&lt;/span&gt; &lt;span class="no"&gt;Van&lt;/span&gt; &lt;span class="no"&gt;Sperso&lt;/span&gt;
    index: 0
    actual: null
  default:
    setInterval(() =&amp;gt; {
      this.actual = this.people[this.index];
      this.index++;
      if (this.index &amp;gt; this.people.length) this.index = 0;
    }, 1000);
&lt;span class="nt"&gt;&amp;lt;/proto&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Hello ${actual || name}!&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;code&gt;default&lt;/code&gt; comes from the switch statement. It's the initialization case used by Ogone. this &lt;code&gt;default&lt;/code&gt; statement is used when the component is mounted.&lt;br&gt;&lt;br&gt;
Now that the presentations are made, we have one problem. one loop is running until the user exit the window.&lt;/p&gt;

&lt;p&gt;let's save this interval.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight haml"&gt;&lt;code&gt;&lt;span class="c"&gt;// ./components/greeting-component.o3
&lt;/span&gt;require name as String;
&lt;span class="nt"&gt;&amp;lt;proto&amp;gt;&lt;/span&gt;
  def:
    people:
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Mary&lt;/span&gt; &lt;span class="no"&gt;Grey&lt;/span&gt;
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Sam&lt;/span&gt; &lt;span class="no"&gt;Lee&lt;/span&gt;
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Christopher&lt;/span&gt; &lt;span class="no"&gt;Van&lt;/span&gt; &lt;span class="no"&gt;Sperso&lt;/span&gt;
    index: 0
    actual: null
    interval: null
  case 'destroy':
    clearInterval(this.interval);
  break;
  default:
    this.interval = setInterval(() =&amp;gt; {
      this.actual = this.people[this.index];
      this.index++;
      if (this.index &amp;gt; this.people.length) this.index = 0;
    }, 1000);
&lt;span class="nt"&gt;&amp;lt;/proto&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Hello ${actual || name}!&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;as you can see all properties has to be defined in &lt;code&gt;def&lt;/code&gt;&lt;br&gt;
setting an property during the runtime will throw an error&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;ok that's better like this. you can spot the case &lt;code&gt;case 'destroy'&lt;/code&gt;. this case is selected when the component is removed.&lt;/p&gt;

&lt;h4&gt;
  
  
  what if I want to use user events instead of an interval ?
&lt;/h4&gt;

&lt;p&gt;You can use the flag &lt;code&gt;--click&lt;/code&gt;. to test it, write a button element, set the flag attribute &lt;strong&gt;'--click:caseName'&lt;/strong&gt;, this will say to Ogone, select this case when there is a click.&lt;br&gt;
example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight haml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;proto&amp;gt;&lt;/span&gt;
case 'click:caseName':
  &lt;span class="c"&gt;// do things
&lt;/span&gt;break;
&lt;span class="nt"&gt;&amp;lt;/proto&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;--click:caseName&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;apply this inside the greeting-component. btw you can also use &lt;code&gt;before-each&lt;/code&gt; statement:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight haml"&gt;&lt;code&gt;&lt;span class="c"&gt;// ./components/greeting-component.o3
&lt;/span&gt;require name as String;
&lt;span class="nt"&gt;&amp;lt;proto&amp;gt;&lt;/span&gt;
  def:
    people:
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Mary&lt;/span&gt; &lt;span class="no"&gt;Grey&lt;/span&gt;
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Sam&lt;/span&gt; &lt;span class="no"&gt;Lee&lt;/span&gt;
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Christopher&lt;/span&gt; &lt;span class="no"&gt;Van&lt;/span&gt; &lt;span class="no"&gt;Sperso&lt;/span&gt;
    index: 0
    actual: null
  before-each:
     const update = () =&amp;gt; {
       this.actual = this.people[this.index];
      if (this.index &amp;gt; this.people.length) this.index = 0;
     };
  case 'click:prev':
    this.index--;
    update();
  break;
  case 'click:next':
    this.index++;
    update(); 
  break;
&lt;span class="nt"&gt;&amp;lt;/proto&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Hello ${actual || name}!&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;--click:prev&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;-&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;--click:next&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;+&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;code&gt;before-each&lt;/code&gt; is selected before all cases, including the default case. this allows you to define vars that you can use in every cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  use Reflections
&lt;/h2&gt;

&lt;p&gt;Ogone comes out with few new features. one of those is the &lt;strong&gt;reflection&lt;/strong&gt;. this act like a &lt;code&gt;computed: {...}&lt;/code&gt; in Vue or the &lt;code&gt;$:&lt;/code&gt; in Svelte, for those who knows.&lt;br&gt;
the syntax &lt;code&gt;this.reflect =&amp;gt; value;&lt;/code&gt; or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;reflect&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// do things&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  how can I use it inside the greeting-component ?
&lt;/h4&gt;

&lt;p&gt;good question. you can write it under the &lt;code&gt;before-each&lt;/code&gt; statement like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight haml"&gt;&lt;code&gt;&lt;span class="c"&gt;// ./components/greeting-component.o3
&lt;/span&gt;require name as String;
&lt;span class="nt"&gt;&amp;lt;proto&amp;gt;&lt;/span&gt;
  def:
    people:
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Mary&lt;/span&gt; &lt;span class="no"&gt;Grey&lt;/span&gt;
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Sam&lt;/span&gt; &lt;span class="no"&gt;Lee&lt;/span&gt;
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Christopher&lt;/span&gt; &lt;span class="no"&gt;Van&lt;/span&gt; &lt;span class="no"&gt;Sperso&lt;/span&gt;
    index: 0
    actual: null
  before-each:
     this.actual =&amp;gt; {
        if (this.index &amp;gt; this.people.length) this.index = 0;
        return this.people[this.index];
     };
  case 'click:prev': this.index--; break;
  case 'click:next': this.index++; break;
&lt;span class="nt"&gt;&amp;lt;/proto&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Hello ${actual || name}!&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;--click:prev&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;-&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;--click:next&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;+&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;reflections outside the &lt;code&gt;before-each&lt;/code&gt; statement are not parsed&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  For and If flags
&lt;/h2&gt;

&lt;h4&gt;
  
  
  what if I want to see all the names ?
&lt;/h4&gt;

&lt;p&gt;there is the flag &lt;code&gt;--for="array as (value, key)"&lt;/code&gt; where array is a property or a new array.&lt;br&gt;
erase the useless statements. and insert the paragraph element with the flag.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight haml"&gt;&lt;code&gt;&lt;span class="c"&gt;// ./components/greeting-component.o3
&lt;/span&gt;require name as String;
&lt;span class="nt"&gt;&amp;lt;proto&amp;gt;&lt;/span&gt;
  def:
    people:
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Mary&lt;/span&gt; &lt;span class="no"&gt;Grey&lt;/span&gt;
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Sam&lt;/span&gt; &lt;span class="no"&gt;Lee&lt;/span&gt;
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Christopher&lt;/span&gt; &lt;span class="no"&gt;Van&lt;/span&gt; &lt;span class="no"&gt;Sperso&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/proto&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;--for=&lt;/span&gt;&lt;span class="s"&gt;"people as (person)"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Hello ${person || name}!&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  I don't want to see Mary Grey in the list, what can I do ?
&lt;/h4&gt;

&lt;p&gt;there is two solutions. using &lt;code&gt;.filter()&lt;/code&gt; inside the flag &lt;code&gt;--for&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight haml"&gt;&lt;code&gt;&lt;span class="c"&gt;// ./components/greeting-component.o3
&lt;/span&gt;require name as String;
&lt;span class="nt"&gt;&amp;lt;proto&amp;gt;&lt;/span&gt;
  def:
    people:
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Mary&lt;/span&gt; &lt;span class="no"&gt;Grey&lt;/span&gt;
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Sam&lt;/span&gt; &lt;span class="no"&gt;Lee&lt;/span&gt;
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Christopher&lt;/span&gt; &lt;span class="no"&gt;Van&lt;/span&gt; &lt;span class="no"&gt;Sperso&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/proto&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;--for=&lt;/span&gt;&lt;span class="s"&gt;"people.filter(n =&amp;gt; n!== 'Mary Grey') as (person)"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Hello ${person || name}!&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;or using the &lt;code&gt;--if&lt;/code&gt; flag:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight haml"&gt;&lt;code&gt;&lt;span class="c"&gt;// ./components/greeting-component.o3
&lt;/span&gt;require name as String;
&lt;span class="nt"&gt;&amp;lt;proto&amp;gt;&lt;/span&gt;
  def:
    people:
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Mary&lt;/span&gt; &lt;span class="no"&gt;Grey&lt;/span&gt;
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Sam&lt;/span&gt; &lt;span class="no"&gt;Lee&lt;/span&gt;
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Christopher&lt;/span&gt; &lt;span class="no"&gt;Van&lt;/span&gt; &lt;span class="no"&gt;Sperso&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/proto&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;--for=&lt;/span&gt;&lt;span class="s"&gt;"people as (person)"&lt;/span&gt; &lt;span class="na"&gt;--if=&lt;/span&gt;&lt;span class="s"&gt;"person !== 'Mary Grey'"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Hello ${person || name}!&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;sometimes you will have a long list of name to write, this is annoying inside a component that we want to keep small. Ogone lets you download ressources inside the protocol. assuming that we have a file &lt;code&gt;names.yaml&lt;/code&gt; inside a folder &lt;code&gt;sources&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight haml"&gt;&lt;code&gt;&lt;span class="c"&gt;// ./components/greeting-component.o3
&lt;/span&gt;require name as String;
&lt;span class="nt"&gt;&amp;lt;proto&lt;/span&gt; &lt;span class="na"&gt;def=&lt;/span&gt;&lt;span class="s"&gt;"./sources/names.yaml"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;--for=&lt;/span&gt;&lt;span class="s"&gt;"people as (person)"&lt;/span&gt; &lt;span class="na"&gt;--if=&lt;/span&gt;&lt;span class="s"&gt;"person !== 'Mary Grey'"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Hello ${person || name}!&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;inside &lt;code&gt;./sources/names.yaml&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight yaml"&gt;&lt;code&gt;  &lt;span class="na"&gt;people&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Mary Grey&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Sam Lee&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;Christopher Van Sperso&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;






&lt;h1&gt;
  
  
  Store
&lt;/h1&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- components
  |__stores
     |__names.stores.o3
  |__root-component.o3
  |__greeting-component.o3
- deps.ts
- mod.ts
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;in Ogone, everything is a component. To create a store, start by creating a &lt;code&gt;names.store.o3&lt;/code&gt; file. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;names is for our example and '.store' is not required.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;this component will looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight haml"&gt;&lt;code&gt;&lt;span class="c"&gt;// ./components/stores/names.store.o3
&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;proto&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"store"&lt;/span&gt; &lt;span class="na"&gt;namespace=&lt;/span&gt;&lt;span class="s"&gt;"names"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  def:
    people:
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Mary&lt;/span&gt; &lt;span class="no"&gt;Grey&lt;/span&gt;
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Sam&lt;/span&gt; &lt;span class="no"&gt;Lee&lt;/span&gt;
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Christopher&lt;/span&gt; &lt;span class="no"&gt;Van&lt;/span&gt; &lt;span class="no"&gt;Sperso&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/proto&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;inject this store component inside your greeting-component&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight haml"&gt;&lt;code&gt;&lt;span class="c"&gt;// ./components/greeting-component.o3
&lt;/span&gt;use ./stores/names.store.o3 as 'store-names';
require name as String;
&lt;span class="nt"&gt;&amp;lt;store-names&lt;/span&gt; &lt;span class="na"&gt;namespace=&lt;/span&gt;&lt;span class="s"&gt;"names"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;proto&amp;gt;&lt;/span&gt;
  def:
     people: []
&lt;span class="nt"&gt;&amp;lt;/proto&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;--for=&lt;/span&gt;&lt;span class="s"&gt;"people as (person)"&lt;/span&gt; &lt;span class="na"&gt;--if=&lt;/span&gt;&lt;span class="s"&gt;"person !== 'Mary Grey'"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Hello ${person || name}!&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;the type of the component has to start the name of the component, if it's not starting you will get an error&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  how can I add one name to the store
&lt;/h4&gt;

&lt;p&gt;you can use the object &lt;code&gt;Store&lt;/code&gt;, that you can only access if the component uses a store component.&lt;br&gt;
First create an action inside your store component:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight haml"&gt;&lt;code&gt;&lt;span class="c"&gt;// ./components/stores/names.store.o3
&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;proto&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"store"&lt;/span&gt; &lt;span class="na"&gt;namespace=&lt;/span&gt;&lt;span class="s"&gt;"names"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  def:
    people:
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Mary&lt;/span&gt; &lt;span class="no"&gt;Grey&lt;/span&gt;
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Sam&lt;/span&gt; &lt;span class="no"&gt;Lee&lt;/span&gt;
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Christopher&lt;/span&gt; &lt;span class="no"&gt;Van&lt;/span&gt; &lt;span class="no"&gt;Sperso&lt;/span&gt;
  case 'action:setName':
    this.people.push(ctx.name);
  break;
&lt;span class="nt"&gt;&amp;lt;/proto&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;all actions case have to start with 'action:'&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;now inside the component use the &lt;code&gt;Store&lt;/code&gt; object. like following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight haml"&gt;&lt;code&gt;&lt;span class="c"&gt;// ./components/greeting-component.o3
&lt;/span&gt;use ./stores/names.store.o3 as 'store-names';
require name as String;
&lt;span class="nt"&gt;&amp;lt;store-names&lt;/span&gt; &lt;span class="na"&gt;namespace=&lt;/span&gt;&lt;span class="s"&gt;"names"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;proto&amp;gt;&lt;/span&gt;
  def:
     people: []
  default:
    Store.dispatch('names/setName', {name: 'Ogone is Cool'});
&lt;span class="nt"&gt;&amp;lt;/proto&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;--for=&lt;/span&gt;&lt;span class="s"&gt;"people as (person)"&lt;/span&gt; &lt;span class="na"&gt;--if=&lt;/span&gt;&lt;span class="s"&gt;"person !== 'Mary Grey'"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Hello ${person || name}!&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;now if you want to update this name, start writing a mutation inside the store:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight haml"&gt;&lt;code&gt;&lt;span class="c"&gt;// ./components/stores/names.store.o3
&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;proto&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"store"&lt;/span&gt; &lt;span class="na"&gt;namespace=&lt;/span&gt;&lt;span class="s"&gt;"names"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  def:
    people:
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Mary&lt;/span&gt; &lt;span class="no"&gt;Grey&lt;/span&gt;
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Sam&lt;/span&gt; &lt;span class="no"&gt;Lee&lt;/span&gt;
      &lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="no"&gt;Christopher&lt;/span&gt; &lt;span class="no"&gt;Van&lt;/span&gt; &lt;span class="no"&gt;Sperso&lt;/span&gt;
  case 'action:setName':
    this.people.push(ctx.name);
  break;
  case 'mutation:UPDATE_NAME':
    this.people[ctx.id] = ctx.name;
  break;
&lt;span class="nt"&gt;&amp;lt;/proto&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;as the actions, the mutations have to start with 'mutation:'&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now, use it inside the component. For this, you need to use the flag &lt;code&gt;--bind&lt;/code&gt; on an input. like &lt;code&gt;&amp;lt;input --bind="property" /&amp;gt;&lt;/code&gt; but in our greeting-component we are going to use the property name.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight haml"&gt;&lt;code&gt;&lt;span class="c"&gt;// ./components/greeting-component.o3
&lt;/span&gt;use ./stores/names.store.o3 as 'store-names';
require name as String;
&lt;span class="nt"&gt;&amp;lt;store-names&lt;/span&gt; &lt;span class="na"&gt;namespace=&lt;/span&gt;&lt;span class="s"&gt;"names"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;proto&amp;gt;&lt;/span&gt;
  def:
     people: []
     name: Ogone
  case 'update:name':
    Store.commit('names/UPDATE_NAME', {
      id: this.people.length -1,
      name: this.name,
    });
  break;
  default:
    Store.dispatch('names/setName', {name: 'Ogone is Cool'});
&lt;span class="nt"&gt;&amp;lt;/proto&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;--for=&lt;/span&gt;&lt;span class="s"&gt;"people as (person)"&lt;/span&gt; &lt;span class="na"&gt;--if=&lt;/span&gt;&lt;span class="s"&gt;"person !== 'Mary Grey'"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Hello ${person || name}!&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;--bind=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;with this article you learnt few features from Ogone:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;use ... as 'component-name'&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;require &amp;lt;props&amp;gt; as &amp;lt;constructors&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;proto [type="store"[ &amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;def: &amp;lt;yaml&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;default:&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;before-each:&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;case 'destroy'&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;case 'update:property'&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--click:...&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--for="array as (item, key)"&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--if&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--bind="property"&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Store.dispatch('namespace/action')&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Store.commit('namespace/mutation')&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;that's a good list for a start. &lt;br&gt;
keep playing with it and mind that Ogone is still open for &lt;a href="https://github.com/SRNV/Ogone/pulls"&gt;Pull requests&lt;/a&gt; or &lt;a href="https://github.com/SRNV/Ogone/issues"&gt;issues&lt;/a&gt;, and it still under development.&lt;/p&gt;

</description>
      <category>ogone</category>
      <category>deno</category>
      <category>javascript</category>
      <category>typescript</category>
    </item>
  </channel>
</rss>
