A tool for defining design systems and using them to generate cross-platform UI code, Sketch files, and other artifacts.

Related tags

Tools Lona
Overview

Lona (Developer Preview)


This project is in an early stage and lacks documentation – however, with some effort, it can be used very effectively. If you're interested in contributing or using it at your company, feel free to open a GitHub issue or get in touch with me on Twitter @dvnabbott. I'm currently supporting a few early adopters.

Airbnb doesn't provide support for this project. The code and automated tests are not at the same degree of technical rigor as other Airbnb projects.

Overview

Build Status

Lona is a collection of tools for building design systems and using them to generate cross-platform UI code, Sketch files, and other artifacts.

Lona consists primarily of 3 parts:

  • Lona Components - A data format, .component, for cross-platform components
  • Lona Studio - A GUI tool for designing .component files
  • Lona Compiler - A CLI tool & API for generating UI code from .component files

Why Lona? Read more about challenges with cross-platform design systems at scale, and how Lona solves them here.

Lona Components

A design system is defined in JSON as a collection of:

  • Components (can be nested)
  • Colors, Text Styles, Gradients, and Shadows
  • Data Types

The specification for these files can be found in the docs.

Lona Studio

Lona Studio provides a graphical interface for working with .component files.

Lona Studio is primarily for building component systems, but can also be used for:

  • Quickly mocking up new screens from existing components
  • Viewing designs with real data from JSON files or APIs
  • Experimenting with designs across multiple screen sizes
  • Automating design tasks - e.g. localizing screenshots for different languages and exporting hundreds of images
  • Working with animations (Lottie) and rendering videos from them
  • and more!

If you have Xcode installed, you can try it out by following the installation instructions.

Wondering if this replaces Sketch? Why a native Mac App? I answer some common questions here in the FAQ.

Lona Compiler

The Lona Compiler converts .component files to UI code for various targets.

Currently, these targets are supported:

  • iOS / macOS (Swift)
  • React DOM / React Native / React Sketchapp (JavaScript)

Support is planned for:

  • Android (Kotlin)

The target with the most features currently is Swift. However, it's still fairly rough. If you want to try it out, check out the installation instructions.

If you're looking for a sample of the generated code, check out the test cases

Core Team

Contributors

Comments
  • Sync directory structure with markdown page links

    Sync directory structure with markdown page links

    What

    Here are the operations we'll attempt to sync:

    • Creating a child page (Child.md) block within a page (Page.md)
      • [X] Convert Page.md to a directory containing a README.md, insert child page block in README.md, create Child.md page
      • [x] Update the parent's URL to point to Page instead of Page.md
    • Deleting a child page block
      • [X] Delete Child.md, remove the child page block from README.md
      • [x] If Page/README.md contains no children: If it's safe to delete Page (a directory containing only a README.md and/or .DS_Store), convert Page/README.md to Page.md
    • [x] Update selection state in file navigator when opening files
    • [x] Use page icon for a directory with a README.md
    opened by dabbott 12
  • Canvas heights not set by default

    Canvas heights not set by default

    Hi,

    When I open a new project, The canvas width is set by default to the correct 375px, but the height doesn't. The height is set to 100px. Is there a reason for that?

    image

    Otherwise I will change it and send a pull request :P

    Grtz Dennis

    opened by dennislaupman 12
  • Add shadow support

    Add shadow support

    Motivation

    The shadow is the must-have feature in all of design tools, such as Sketch, Photoshop, etc. So, there is no reason Lona doesn't support it. Let do it πŸ˜‰

    Design

    Inspired how Sketch does. screen shot 2017-12-05 at 10 07 21 pm

    Acceptance Criteria

    • Able to add/delete one or more shadow layers
    • Support Color, Blur, X, Y, Spread parameters.
    • Allow to save/load Shadow configuration to TextStyles
    • Reflex intermediately when adjusting the parameters
    • Acceptable performance.

    TextStyle.json

    I suggest the Shadow format in TextStyle.json

    {
        "id": "display4",
        "name": "Display 4",
        "fontFamily": "Roboto",
        "fontWeight": "300",
        "fontSize": 112,
        "lineHeight": 120,
        "color": "black",
        "shadow": {
          "color": "black"
          "x": 0,
          "y": 1,
          "blur": 1,
          "spread": 1
        }
    },
    

    Implementation

    NSShadow is potential candidate for rendering Shadow and fully support with NSAttributeText as well. For clearly, NSShadow take configuration from TextStyle with correspond parameter then initializing appropriately.

    Performance

    In order to improve the performance when drawing the shadow, I suggest we rasterize the layer and rasterizationScale, which match with the screen scale.


    @dabbott Looking forward to hearing your thought πŸ”₯ If it's good, I'm happy for contributing ⭐️

    feature 
    opened by NghiaTranUIT 10
  • Update README.md

    Update README.md

    What

    Updated documentation

    Why

    Sketch would work without this installation

    Major Changes

    • I added the modules for this change…
    • And this other thing too!

    Requirements for Merging

    • [ ] It should do this
    • [ ] It should edit this file
    • [ ] It should look like this

    Testing Plan

    • [ ] Tested this change locally
    • [ ] Checked that existing features work

    Feedback

    I'm looking for feedback on:

    cc: @dabbott, @ryngonzalez

    opened by dennislaupman 9
  • Improve new workspace UX

    Improve new workspace UX

    What

    • Updated ComponentPreviewCard design to match new colors/text styles design
    • Updated margins and sizing of ComponentPreviewCollection
    • Added a README to the new project template
    • Links in markdown open in external browser

    This new overview screen is πŸ”₯πŸ”₯πŸ”₯. Great job @mathieudutour!

    The default new project template:

    screen shot 2019-01-09 at 1 28 13 pm

    My SourceNote workspace:

    screen shot 2019-01-09 at 1 09 15 pm

    opened by dabbott 8
  • text styles inspector

    text styles inspector

    What

    • [x] refactor a bit some files to make space for the following
    • [x] text styles now work with the file and not CSTypography directly
    • [x] clicking on a text style shows an inspector for it
    • [x] add a sheet to add a new text style

    Feedback

    • right now it's not possible not to select a color. That's also the reason why I didn't add the extends field
    • same for number inputs, not possible to have nil so I chose -1 to represent it...

    cc: @dabbott

    opened by mathieudutour 8
  • Undo Redo Mechanism

    Undo Redo Mechanism

    Why

    Refer to #56

    Major Changes

    • Introduce a lightweight UndoGlobalManager, which is the high level of NSUndoManager.
    • Support undo logic in CSLayer, LayerList
    • Observe Undo/Redo notification and do reload appropriately.

    Testing Plan

    • [x] Able to undo/redo in all variable of CSLayer
    • [x] Able to undo/redo after adding/removing components in LayerList
    • [x] Able to undo/redo after hiding/showing components
    • [x] Global Undo/redo for each Document.
    • [x] Undo/redo arrange action
    • [x] Undo/redo canvas properties
    • [ ] Other stuffs.

    Feedback

    I'm looking for feedback on the implementation and how I did Undo/redo on many properties πŸ˜„

    cc: @dabbott, @ryngonzalez

    opened by NghiaTranUIT 8
  • Compiler status & tasks

    Compiler status & tasks

    Hello friends! I just merged in what I have so far for Swift code generation. Here's a status update on code generation overall:

    Status

    The new ReasonML compiler is significantly easier to work with than the original JavaScript one (and the small proof-of-concept TypeScript one I made), so I'm very happy with ReasonML and plan to continue in this direction.

    I've made pretty good progress toward correct, performant Swift component code. There's still a lot left to do though. JS code is also close to working, but definitely needs a lot of tweaks. You can browse the current generated output for a test workspace I made here: https://github.com/airbnb/Lona/tree/master/examples/generated/test

    I'll categorize what's left into a few categories below. The tasks vary a lot in size, but I think some will be pretty easy for others to pick up and can be done in parallel. Let me know if you see something you want to try!

    Language-agnostic

    • [x] The code is pretty messy. Most Swift generation code is in one 1000 line file. I couldn't decide what would work better: organizing code by target (e.g. js, swift) or by purpose (e.g. outputting colors) so there's a mix of both right now. I think now that there's a decent amount of code, it might make sense to figure out what's working and what isn't and decide on the best organization. [Update: I organized code by target and started using subdirectories. I think future refactoring can be more incremental]
    • [x] Test cases. One day I think we'll want automated screenshots per target to catch visual regressions. I think for now we can just commit the generated code for the test workspace, and compare the diff when we change the compiler. It would be good to figure out a set of test cases that cover most of the core flexbox use cases. The code to generate constraints is complicated and I suspect it'll be easy to cause regressions without a comprehensive set of test cases.
    • [ ] The Logic language is designed around the current UI of Lona Studio, which I think will be limiting going forward. We should use a more standard AST format that the compiler and future tools can read and write more easily. Lona Studio will translate from the internal data structure to the new Logic AST we define.
    • [ ] Logic AST optimizations. After we've improved the Logic AST, there are some optimizations that can be performed on the Logic AST instead of being duplicated in the Swift/JS AST.
    • [x] There will probably eventually be multiple targets per language. E.g. JS => React, React Native, Vue, Angular. Swift => UIKit, ComponentKit. Might make sense to update the code to use the framework names instead.
    • [ ] Configurability. There are lots of ways people will want to customize the generated code. I have a few ideas here.
      1. [x] I think we should have CLI options for extremely most common stuff.
      2. [x] I think we should allow a config file (likely using cosmiconfig) akin to webpack/babel/eslint where more details options can be specified. If this config file can run JS code (e.g. config.js) then we can also support hooks for more detailed customization.
      3. [ ] Eventually, separate the various targets of the compiler into different repos. Allow easy forking of individual targets. Code generation will likely need to be customized in an infinite number of ways that we can't support through a config-based approach.

    Swift

    • [x] [@dabbott] Flexbox. I've handled some of the core layout properties, but there are many more to cover. E.g. alignment. Also, the current implementation has some issues even in the test files I've committed.
    • [x] Style properties. Properties like background color, border, etc, all need to be generated.
    • [x] [@dabbott] TextStyles. I think we should start by including something similar to the AttributedFont class in Lona Studio (this is similar to what we do in the Airbnb app), and then generating an instance of AttributedFont for each text style.
    • [x] Images. People will likely want to use their own image fetching/caches classes, so at some point we'll want to make this configurable. We'll also need to figure out how to bundle image assets from desk. I think to start, we can do something pretty simple to fetch remote images via URL, and not think about images on disk (Lona Studio doesn't handle these very well yet -- absolute file paths aren't very useful).
    • [x] [@dabbott] Custom components. I think the main challenge here will be that we need to figure out how to constrain the custom component to its parent. So far I've "solved" this in JS by assuming all custom components are within a parent with flexDirection: 'column'. This makes components entirely self-contained, which I think is an acceptable tradeoff. I'm not sure if the same technique will work in Swift though.
    • [x] Optional parameters. Lona Studio will likely need to make nullability more clear in a lot of places before this makes sense.
    • [x] View visibility. Currently the visible style is correctly applied to the isHidden property of views, but when a view is hidden, we need to update constraints so that other children within the same parent rearrange themselves. Otherwise, there may be a gap between components when a view is hidden.

    JS

    I haven't touched the JS code generation in a bit. The original compiler still works better than this new one. But it's mainly a matter of adding more features and fixing bugs.

    • [ ] Refactoring. This was the first code I wrote in ReasonML and some of it isn't very good. I'd probably have to look through the code more to find all the specifics, but e.g. the Swift AST uses objects which works very well, so the JS AST should do this too. The idea of converting all ASTs to a generic tree structure (tree.re) probably isn't a very good idea, since each AST node likely needs custom rules.
    • [x] Fixing bugs. There are lots of buggy things currently - e.g. we need to normalize layer names before using them as keys in the styles object.
    • [x] Imports. We don't import anything at the top of the file yet. We need this before the generated code is functional.
    • [x] Color generation - the format for this already exists in the original compiler -- we just need to regenerate it using the JS AST in Reason
    • [x] Text style generation - like colors, the format for this already exists

    Kotlin/Java

    • [ ] Find somebody with Kotlin/Java knowledge?

    FYI @ryngonzalez @NghiaTranUIT @GuillaumeSalles @jasonzurita

    opened by dabbott 8
  • Support Shadow Picker

    Support Shadow Picker

    I branded off from your shadows branch and continue my work Thank for your shadow model logic 🀣

    Change logs

    • Support ShadowList and ShadowPicker (reused from ColorPickerView)
    • Reflect shadow attribute
    • Only support for UIView

    Screenshots screen shot 2017-12-09 at 3 29 01 pm screen shot 2017-12-09 at 3 28 54 pm

    Looking forward to hearing your thought πŸ‘

    feature 
    opened by NghiaTranUIT 8
  • Workspaces -> `.lona` project

    Workspaces -> `.lona` project "files"

    Proposal

    To make it easier to share, think about, and work with design system workspaces, we should consider converting the concept of these workspace folders to .lona project "files".

    A Single Unit

    One of the more confusing aspects of Lona currently is the lack of transparency around "workspaces". While #11 should make it easier to work with workspaces, indicating that you need to create a workspace to get started and making it easy to pick a workspace for a session. Talking about these as self-contained projects/files will make it more clear what the mental-model is. Rather than some random folder, you're working with a project "file", which happens to have other files in it.

    Searchable

    Will make it easier to search for these projects. find *.lona is easy peasy.

    Accessibility to editing

    We still want to maintain clear, open access to editing the contents of a workspace in other tools. We can make it clear that a Lona project is just a set of text-editable documents by leaving them as visible folders in the file system browser.

    One inspiration for the .lona format is how Framer creates .framer "files" for their projects, which demonstrates this behavior:

    screenshot 2017-11-24 19 23 35

    This is also similar to working with Xcode projects/workspaces.

    discussion needed 
    opened by ryngonzalez 8
  • Export Lona/examples/material-design/*.component  to  React Native Code  error.

    Export Lona/examples/material-design/*.component to React Native Code error.

    When I use node , try export component that in "Lona/examples/material-design". Error accur. It's say " Cannot destructure property children of 'undefined' or 'null"

    ➜ Lona git:(master) βœ— node compiler/react/index.js /Users/Dong/Documents/gitHubFork/Lona output /Users/Dong/Documents/gitHubFork/Lona/examples/material-design/components/Card.component => output/examples/material-design/components/Card.js /Users/Dong/Documents/gitHubFork/Lona/examples/material-design/components/ListItem.component => output/examples/material-design/components/ListItem.js (node:40256) UnhandledPromiseRejectionWarning: TypeError: Cannot destructure property children of 'undefined' or 'null'. at getLayers (/Users/Dong/Documents/gitHubFork/Lona/compiler/react/utils/layer.js:5:26) at getAllLayers (/Users/Dong/Documents/gitHubFork/Lona/compiler/react/utils/layer.js:14:3) at getAllComponentLayers (/Users/Dong/Documents/gitHubFork/Lona/compiler/react/utils/layer.js:20:10) at readComponent (/Users/Dong/Documents/gitHubFork/Lona/compiler/react/utils/component.js:33:31) at convertComponent (/Users/Dong/Documents/gitHubFork/Lona/compiler/react/convert.js:487:21) at files.filter.forEach (/Users/Dong/Documents/gitHubFork/Lona/compiler/react/index.js:89:22) at Array.forEach () at glob (/Users/Dong/Documents/gitHubFork/Lona/compiler/react/index.js:73:8) at f (/Users/Dong/Documents/gitHubFork/Lona/compiler/react/node_modules/once/once.js:25:25) at Glob. (/Users/Dong/Documents/gitHubFork/Lona/compiler/react/node_modules/glob/glob.js:151:7) at emitOne (events.js:116:13) at Glob.emit (events.js:211:7) at Glob._finish (/Users/Dong/Documents/gitHubFork/Lona/compiler/react/node_modules/glob/glob.js:197:8) at done (/Users/Dong/Documents/gitHubFork/Lona/compiler/react/node_modules/glob/glob.js:182:14) at Glob._processGlobStar2 (/Users/Dong/Documents/gitHubFork/Lona/compiler/react/node_modules/glob/glob.js:637:12) at /Users/Dong/Documents/gitHubFork/Lona/compiler/react/node_modules/glob/glob.js:626:10

    opened by michaeldong 7
  • Bump json5 from 1.0.1 to 1.0.2 in /compiler/webpack-loader

    Bump json5 from 1.0.1 to 1.0.2 in /compiler/webpack-loader

    Bumps json5 from 1.0.1 to 1.0.2.

    Release notes

    Sourced from json5's releases.

    v1.0.2

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295). This has been backported to v1. (#298)
    Changelog

    Sourced from json5's changelog.

    Unreleased [code, diff]

    v2.2.3 [code, diff]

    v2.2.2 [code, diff]

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1 [code, diff]

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)

    v2.2.0 [code, diff]

    • New: Accurate and documented TypeScript declarations are now included. There is no need to install @types/json5. (#236, #244)

    v2.1.3 [code, diff]

    • Fix: An out of memory bug when parsing numbers has been fixed. (#228, #229)

    v2.1.2 [code, diff]

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump json5 from 2.1.0 to 2.2.3 in /compiler/sketch-library

    Bump json5 from 2.1.0 to 2.2.3 in /compiler/sketch-library

    Bumps json5 from 2.1.0 to 2.2.3.

    Release notes

    Sourced from json5's releases.

    v2.2.3

    v2.2.2

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)

    v2.2.0

    • New: Accurate and documented TypeScript declarations are now included. There is no need to install @types/json5. (#236, #244)

    v2.1.3 [code, diff]

    • Fix: An out of memory bug when parsing numbers has been fixed. (#228, #229)

    v2.1.2

    • Fix: Bump minimist to v1.2.5. (#222)

    v2.1.1

    • New: package.json and package.json5 include a module property so bundlers like webpack, rollup and parcel can take advantage of the ES Module build. (#208)
    • Fix: stringify outputs \0 as \\x00 when followed by a digit. (#210)
    • Fix: Spelling mistakes have been fixed. (#196)
    Changelog

    Sourced from json5's changelog.

    v2.2.3 [code, diff]

    v2.2.2 [code, diff]

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1 [code, diff]

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)

    v2.2.0 [code, diff]

    • New: Accurate and documented TypeScript declarations are now included. There is no need to install @types/json5. (#236, #244)

    v2.1.3 [code, diff]

    • Fix: An out of memory bug when parsing numbers has been fixed. (#228, #229)

    v2.1.2 [code, diff]

    • Fix: Bump minimist to v1.2.5. (#222)

    v2.1.1 [code, [diff][d2.1.1]]

    ... (truncated)

    Commits
    • c3a7524 2.2.3
    • 94fd06d docs: update CHANGELOG for v2.2.3
    • 3b8cebf docs(security): use GitHub security advisories
    • f0fd9e1 docs: publish a security policy
    • 6a91a05 docs(template): bug -> bug report
    • 14f8cb1 2.2.2
    • 10cc7ca docs: update CHANGELOG for v2.2.2
    • 7774c10 fix: add proto to objects and arrays
    • edde30a Readme: slight tweak to intro
    • 97286f8 Improve example in readme
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump json5 from 2.1.0 to 2.2.3 in /studio/plugins/sketch

    Bump json5 from 2.1.0 to 2.2.3 in /studio/plugins/sketch

    Bumps json5 from 2.1.0 to 2.2.3.

    Release notes

    Sourced from json5's releases.

    v2.2.3

    v2.2.2

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)

    v2.2.0

    • New: Accurate and documented TypeScript declarations are now included. There is no need to install @types/json5. (#236, #244)

    v2.1.3 [code, diff]

    • Fix: An out of memory bug when parsing numbers has been fixed. (#228, #229)

    v2.1.2

    • Fix: Bump minimist to v1.2.5. (#222)

    v2.1.1

    • New: package.json and package.json5 include a module property so bundlers like webpack, rollup and parcel can take advantage of the ES Module build. (#208)
    • Fix: stringify outputs \0 as \\x00 when followed by a digit. (#210)
    • Fix: Spelling mistakes have been fixed. (#196)
    Changelog

    Sourced from json5's changelog.

    v2.2.3 [code, diff]

    v2.2.2 [code, diff]

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1 [code, diff]

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)

    v2.2.0 [code, diff]

    • New: Accurate and documented TypeScript declarations are now included. There is no need to install @types/json5. (#236, #244)

    v2.1.3 [code, diff]

    • Fix: An out of memory bug when parsing numbers has been fixed. (#228, #229)

    v2.1.2 [code, diff]

    • Fix: Bump minimist to v1.2.5. (#222)

    v2.1.1 [code, [diff][d2.1.1]]

    ... (truncated)

    Commits
    • c3a7524 2.2.3
    • 94fd06d docs: update CHANGELOG for v2.2.3
    • 3b8cebf docs(security): use GitHub security advisories
    • f0fd9e1 docs: publish a security policy
    • 6a91a05 docs(template): bug -> bug report
    • 14f8cb1 2.2.2
    • 10cc7ca docs: update CHANGELOG for v2.2.2
    • 7774c10 fix: add proto to objects and arrays
    • edde30a Readme: slight tweak to intro
    • 97286f8 Improve example in readme
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 1
  • Bump qs from 6.5.2 to 6.5.3 in /compiler/core

    Bump qs from 6.5.2 to 6.5.3 in /compiler/core

    Bumps qs from 6.5.2 to 6.5.3.

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump express from 4.16.4 to 4.18.2 in /examples/LonaViewer/web

    Bump express from 4.16.4 to 4.18.2 in /examples/LonaViewer/web

    Bumps express from 4.16.4 to 4.18.2.

    Release notes

    Sourced from express's releases.

    4.18.2

    4.18.1

    • Fix hanging on large stack of sync routes

    4.18.0

    ... (truncated)

    Changelog

    Sourced from express's changelog.

    4.18.2 / 2022-10-08

    4.18.1 / 2022-04-29

    • Fix hanging on large stack of sync routes

    4.18.0 / 2022-04-25

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump qs from 6.5.2 to 6.5.3 in /compiler/webpack-loader

    Bump qs from 6.5.2 to 6.5.3 in /compiler/webpack-loader

    Bumps qs from 6.5.2 to 6.5.3.

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
Owner
Lona
A tool for defining design systems and using them to generate cross-platform UI code, Sketch files, and other artifacts.
Lona
This repository contains rules for Bazel that can be used to generate Xcode projects

rules_xcodeproj This repository contains rules for Bazel that can be used to generate Xcode projects. If you run into any problems with these rules, p

BuildBuddy 233 Dec 28, 2022
An executable that can be called from a Run Script Build Phase that makes comments such as // TODO: or // SERIOUS: appear in Xcode's Issue Navigator giving them project-wide visibility.

XcodeIssueGenerator An executable that can be called from a Run Script Build Phase that makes comments such as // TODO: or // SERIOUS: appear in Xcode

Wunderman Thompson Apps 143 Oct 11, 2022
All new design. Inspect your iOS application at runtime.

Peek: All new design Peek 5 with an all new design and all new features. Whether you're a developer, designer or QA/tester, Peek can help you at all s

Shaps 2.6k Dec 17, 2022
An Xcode plug-in to format your code using SwiftLint.

SwiftLintXcode An Xcode plug-in to format your code using SwiftLint. Runs swiftlint autocorrect --path CURRENT_FILE before *.swift file is saved. IMPO

Yuya Tanaka 348 Sep 18, 2022
Xcode storyboards diff and merge tool.

StoryboardMerge Storyboard diff and merge tool which: compares and merges two storyboard files, provides an automatic merge-facility, The storyboardin

null 238 Sep 12, 2022
An adorable little framework and command line tool for interacting with SourceKit.

SourceKitten An adorable little framework and command line tool for interacting with SourceKit. SourceKitten links and communicates with sourcekitd.fr

JP Simard 2.1k Jan 5, 2023
Xcode-compatible build tool.

xcbuild xcbuild is an Xcode-compatible build tool with the goal of providing faster builds, better documentation of the build process and running on m

Meta Archive 2k Dec 11, 2022
Objective-c code Apple style documentation set generator.

About appledoc IMPORTANT NOTICE: collaborators needed appledoc is command line tool that helps Objective-C developers generate Apple-like source code

tomaz 4.2k Dec 20, 2022
Laurine - Localization code generator written in Swift. Sweet!

Author's note: Thanks everyone for making Laurine the TOP trending Swift repository in the world - this is amazing and very heart-warming! But this is

Jiri Trecak 1.3k Dec 28, 2022
Script to support easily using Xcode Asset Catalog in Swift.

Misen Misen is a script to support using Xcode Asset Catalog in Swift. Features Misen scans sub-directories in the specified Asset Catalog and creates

Kazunobu Tasaka 123 Jun 29, 2022
An iOS app decrypter, full static using fouldecrypt.

Iridium An iOS app decrypter, full static using fouldecrypt. Supporting iOS 13+ Note We have built everything into the package, you can install and fl

Lakr Aream 234 Jan 9, 2023
An iOS app decrypter, full static using fouldecrypt.

Iridium An iOS app decrypter, full static using fouldecrypt. Supporting iOS 13+ Note We have built everything into the package, you can install and fl

Lakr Aream 226 Dec 24, 2022
Automatically build and rebuild Xcode image catalogs for app icons, universal images, and more

Better asset workflow for iOS developers. Generate Xcode image catalogs for iOS / OSX app icons, universal images, and more.

Dotan J. Nahum 822 Dec 21, 2022
AVXCAssets Generator takes path for your assets images and creates appiconset and imageset for you in just one click

AVXCAssets Generator Often while developing an app, We ran into a condition when we need to scale images to each and every aspect ratios for icons and

Angel Vasa 339 Dec 6, 2022
Build native iOS, Android, and Web apps with Capacitor and Remix.run πŸ’Ώ

This repository holds production ready Capacitor templates for building native mobile applications using Remix. Using Capacitor, you can quickly build out a native mobile application for iOS and Android using web technology, such as Remix.

Ionic 70 Dec 30, 2022
Swift CLI for strong-typing images, colors, storyboards, fonts and localizations

Shark Shark is a Swift command line tool that generates type safe enums for your images, colors, storyboards, fonts and localizations. Because Shark r

Kaan Dedeoglu 377 Dec 1, 2022
Strong typed, autocompleted resources like images, fonts and segues in Swift projects

R.swift Get strong typed, autocompleted resources like images, fonts and segues in Swift projects Why use this? It makes your code that uses resources

Mathijs Kadijk 8.9k Jan 6, 2023
swiftenv allows you to easily install, and switch between multiple versions of Swift.

Swift Version Manager swiftenv allows you to easily install, and switch between multiple versions of Swift. This project was heavily inspired by pyenv

Kyle Fuller 1.9k Dec 27, 2022
Easily generate cross platform Swift framework projects from the command line

SwiftPlate Easily generate cross platform Swift framework projects from the command line. SwiftPlate will generate Xcode projects for you in seconds,

John Sundell 1.8k Dec 27, 2022
Log messages to text files and share them by email or other way.

LogToFiles How to log messages to text files and share them by email or share center. 1 - Add the Log.swift file to your App 2 - Just log the messages

Miguel Chaves 0 Jan 9, 2022