home.social

#closurecompiler — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #closurecompiler, aggregated by home.social.

  1. While working on porting the Small Technology Foundation web site¹ to Kitten², I took the opportunity to pull out base Model and Collection classes that I’ll likely end up including in Kitten proper:

    • Model: codeberg.org/small-tech/site/s
    • Collection: codeberg.org/small-tech/site/s

    To see them in use, here’s the base Posts class (with RSS generation) that extends Collection:
    codeberg.org/small-tech/site/s

    And here’s the concrete EventPosts collection class that extends Posts:
    codeberg.org/small-tech/site/s

    And the EventPost (showing an implementation of a calculated property):
    codeberg.org/small-tech/site/s

    So all this is possible (persisting and reading back typed model collections, etc.) thanks to JSDB¹ (JavaScript database), a zero-dependency, transparent, in-memory, streaming write-on-update JavaScript database I wrote for the Small Web that persists to a JavaScript transaction log and is included as as first-class citizen in Kitten.

    codeberg.org/small-tech/jsdb

    And if you want to know how the magic mapping of classes happens, see the Database App Module:

    codeberg.org/small-tech/site/s

    PS. For a much gentler introduction to persistence in Kitten, see the Kitten Persistence tutorial:
    kitten.small-web.org/tutorials

    Enjoy! :kitten:💕

    ¹ small-tech.org
    ² kitten.small-web.org

    #Kitten #SmallWeb #SmallTech #JavaScript #database #JSDB #typeSafety #JSDoc #closureCompiler #TypeScript #workInProgress

  2. While working on porting the Small Technology Foundation web site¹ to Kitten², I took the opportunity to pull out base Model and Collection classes that I’ll likely end up including in Kitten proper:

    • Model: codeberg.org/small-tech/site/s
    • Collection: codeberg.org/small-tech/site/s

    To see them in use, here’s the base Posts class (with RSS generation) that extends Collection:
    codeberg.org/small-tech/site/s

    And here’s the concrete EventPosts collection class that extends Posts:
    codeberg.org/small-tech/site/s

    And the EventPost (showing an implementation of a calculated property):
    codeberg.org/small-tech/site/s

    So all this is possible (persisting and reading back typed model collections, etc.) thanks to JSDB¹ (JavaScript database), a zero-dependency, transparent, in-memory, streaming write-on-update JavaScript database I wrote for the Small Web that persists to a JavaScript transaction log and is included as as first-class citizen in Kitten.

    codeberg.org/small-tech/jsdb

    And if you want to know how the magic mapping of classes happens, see the Database App Module:

    codeberg.org/small-tech/site/s

    PS. For a much gentler introduction to persistence in Kitten, see the Kitten Persistence tutorial:
    kitten.small-web.org/tutorials

    Enjoy! :kitten:💕

    ¹ small-tech.org
    ² kitten.small-web.org

    #Kitten #SmallWeb #SmallTech #JavaScript #database #JSDB #typeSafety #JSDoc #closureCompiler #TypeScript #workInProgress

  3. While working on porting the Small Technology Foundation web site¹ to Kitten², I took the opportunity to pull out base Model and Collection classes that I’ll likely end up including in Kitten proper:

    • Model: codeberg.org/small-tech/site/s
    • Collection: codeberg.org/small-tech/site/s

    To see them in use, here’s the base Posts class (with RSS generation) that extends Collection:
    codeberg.org/small-tech/site/s

    And here’s the concrete EventPosts collection class that extends Posts:
    codeberg.org/small-tech/site/s

    And the EventPost (showing an implementation of a calculated property):
    codeberg.org/small-tech/site/s

    So all this is possible (persisting and reading back typed model collections, etc.) thanks to JSDB¹ (JavaScript database), a zero-dependency, transparent, in-memory, streaming write-on-update JavaScript database I wrote for the Small Web that persists to a JavaScript transaction log and is included as as first-class citizen in Kitten.

    codeberg.org/small-tech/jsdb

    And if you want to know how the magic mapping of classes happens, see the Database App Module:

    codeberg.org/small-tech/site/s

    PS. For a much gentler introduction to persistence in Kitten, see the Kitten Persistence tutorial:
    kitten.small-web.org/tutorials

    Enjoy! :kitten:💕

    ¹ small-tech.org
    ² kitten.small-web.org

    #Kitten #SmallWeb #SmallTech #JavaScript #database #JSDB #typeSafety #JSDoc #closureCompiler #TypeScript #workInProgress

  4. While working on porting the Small Technology Foundation web site¹ to Kitten², I took the opportunity to pull out base Model and Collection classes that I’ll likely end up including in Kitten proper:

    • Model: codeberg.org/small-tech/site/s
    • Collection: codeberg.org/small-tech/site/s

    To see them in use, here’s the base Posts class (with RSS generation) that extends Collection:
    codeberg.org/small-tech/site/s

    And here’s the concrete EventPosts collection class that extends Posts:
    codeberg.org/small-tech/site/s

    And the EventPost (showing an implementation of a calculated property):
    codeberg.org/small-tech/site/s

    So all this is possible (persisting and reading back typed model collections, etc.) thanks to JSDB¹ (JavaScript database), a zero-dependency, transparent, in-memory, streaming write-on-update JavaScript database I wrote for the Small Web that persists to a JavaScript transaction log and is included as as first-class citizen in Kitten.

    codeberg.org/small-tech/jsdb

    And if you want to know how the magic mapping of classes happens, see the Database App Module:

    codeberg.org/small-tech/site/s

    PS. For a much gentler introduction to persistence in Kitten, see the Kitten Persistence tutorial:
    kitten.small-web.org/tutorials

    Enjoy! :kitten:💕

    ¹ small-tech.org
    ² kitten.small-web.org

    #Kitten #SmallWeb #SmallTech #JavaScript #database #JSDB #typeSafety #JSDoc #closureCompiler #TypeScript #workInProgress

  5. While working on porting the Small Technology Foundation web site¹ to Kitten², I took the opportunity to pull out base Model and Collection classes that I’ll likely end up including in Kitten proper:

    • Model: codeberg.org/small-tech/site/s
    • Collection: codeberg.org/small-tech/site/s

    To see them in use, here’s the base Posts class (with RSS generation) that extends Collection:
    codeberg.org/small-tech/site/s

    And here’s the concrete EventPosts collection class that extends Posts:
    codeberg.org/small-tech/site/s

    And the EventPost (showing an implementation of a calculated property):
    codeberg.org/small-tech/site/s

    So all this is possible (persisting and reading back typed model collections, etc.) thanks to JSDB¹ (JavaScript database), a zero-dependency, transparent, in-memory, streaming write-on-update JavaScript database I wrote for the Small Web that persists to a JavaScript transaction log and is included as as first-class citizen in Kitten.

    codeberg.org/small-tech/jsdb

    And if you want to know how the magic mapping of classes happens, see the Database App Module:

    codeberg.org/small-tech/site/s

    PS. For a much gentler introduction to persistence in Kitten, see the Kitten Persistence tutorial:
    kitten.small-web.org/tutorials

    Enjoy! :kitten:💕

    ¹ small-tech.org
    ² kitten.small-web.org

    #Kitten #SmallWeb #SmallTech #JavaScript #database #JSDB #typeSafety #JSDoc #closureCompiler #TypeScript #workInProgress

  6. Great post on #ClosureCompiler, it's history at #Google and how it evolved compared to #TypeScript.

    effectivetypescript.com/2023/0

    I can help with one of the last points:

    > True to form, this tool [tsickle] is open source but pretty inscrutable to an outsider. It may be used by Angular but I couldn't tell.

    I can confirm that Angular does *not* run `tsickle` or Closure in user projects with `ng build`. There was an experiment some years ago where we tried this to see if we could improve bundle sizes, but found that asking users to write Closure-optimizable code was too difficult and hard to justify outside Google. As a result, we never ran this in prod.

    I believe we do technically run `tsickle` in Angular GitHub repositories, as we have a unique build system setup with #Bazel and #rules_nodejs. If you've ever contributed to Angular, you probably ran `tsickle`. We've been trying to remove this dependency, but I don't think it's happened yet.