@twogate/migrason
TypeScript icon, indicating that this package has built-in type declarations

0.1.5 • Public • Published

migrason

migrason (/maigréisɒn/) is a migration tool for JSON.

Run

# Run migration script
# $ node <migrate script> <old input json> <output filename>
node 001_add_properties.js 001.json ./out.json

Example

Adding properties

Assume 001.json as input json. When you want to migrate it to 002.json, you can write a migrate file like 001_add_properties.js.

  change(prev) {
    // The previous JSON can be accessed via `prev`
    console.log(prev)

    // Apply the default values
    // Properties with default values that are not in the previous JSON will be added
    // If the previous JSON already has a property same as the default property, the value of the previous JSON is used.
    return this.applyDefaults(prev)
  }

Removing properties

To remove properties, use the delete operator of JavaScript. An example is 002_delete_and_rename_props.js.

  change(prev) {
    // assign object which is applied default values
    const next = this.applyDefaults(prev)

    // copying property
    next.tabs.layout = prev.tabs.tabs

    // removing property
    delete next.theme.appTheme.accent
    delete next.tabs.tabs

    return next
  }

Customizing (de)serializer

To customize (de)serializer, you can override (de)serializer methods. 001_add_properties_yaml.js is an example that overrides (de)serializer to read/write yaml files.

  deserialize(input) {
    return yaml.safeLoad(input)
  }

  serialize(next) {
    return yaml.safeDump(next)
  }

Hint

  • If you write a default value which is not existing on old JSON, the default value is used for output.
  • Properties that are not in the default value are not removed from the old JSON and must be removed explicitly.

Readme

Keywords

none

Package Sidebar

Install

npm i @twogate/migrason

Weekly Downloads

10

Version

0.1.5

License

ISC

Unpacked Size

17.2 kB

Total Files

15

Last publish

Collaborators

  • honma
  • komi3912
  • keiya
  • imnskh
  • falcon8823
  • kashz