@almin/migration-tools v1.4.0
migration-tools 
Migration scripts for Almin.

Install
Install with npm:
npm install -g @almin/migration-toolsUsage
Simply run almin-migration-tools in your terminal and answer a few questions.
You can pass a filename directly to the CLI. If you do not, you will be prompted for one.
Ensure you have a backup of your source code or commit the latest changes before running this.
Usage
  $ almin-migration-tools [<file|glob>]
Options:
  --script  Run with specified migration script
  --dry-run Enable dry run mode
  --force, -f    Bypass safety checks and forcibly run codemods
Examples
  # Interactive mode
  $ almin-migration-tools
  # Interactive mode, but it has default targets
  $ almin-migration-tools  "src/**/*.js"
  # Non interactive mode, specified script name
  $ almin-migration-tools --script "store-group-arguments" "src/**/store/**/*.js"Migrations
0.17.x → 0.18.x
How to migrate?
Run following command and select 0.17.x → 0.18.x
$ almin-migration-toolsWhat is changed?
executor() is deprecated.
You should use UseCaseExecutor#execute instead of UseCaseExecutor#executor.
Before:  executor()
import { UseCase, Context } from "almin";
class MyUseCaseA extends UseCase {
    execute(_a: string) {}
}
const context = new Context({
    store: createStore({ name: "test" })
});
// executor
context.useCase(new MyUseCaseA()).executor(useCase => useCase.execute("A")); After: execute()
import { UseCase, Context } from "almin";
class MyUseCaseA extends UseCase {
    execute(_a: string) {}
}
const context = new Context({
    store: createStore({ name: "test" })
});
//execute
context.useCase(new MyUseCaseA()).execute("A");0.13.x → 0.15.x
How to migrate?
Run following command and select 0.13.x → 0.15.x
$ almin-migration-toolsWhat is changed?
ChangedPayload has been removed.
import { UseCase, ChangedPayload } from "almin";
export class ExampleUseCase extends UseCase {
    execute() {
        this.context.useCase(new ChangedPayload()).execute();
    }
}to
import { UseCase } from "almin";
export class ExampleUseCase extends UseCase {
    execute() {
        this.context.useCase({ type: "ChangedPayload" }).execute();
    }
}0.12.x → 0.13.x
How to migrate?
Run following command and select 0.12.x → 0.13.x
$ almin-migration-toolsWhat is changed?
- Renaming: context.on*tocontext.events.on*withoutcontext.onChange- Context.onChangeis still on- Contextprototype.
- Because, it is not life-cycle events and it is optimized for updating UI.
 
context.onWillExecuteEachUseCase((payload, meta) => {});
context.onDispatch((payload, meta) => {});
context.onDidExecuteEachUseCase((payload, meta) => {});
context.onCompleteEachUseCase((payload, meta) => {});
context.onErrorDispatch((payload, meta) => {});to
context.events.onWillExecuteEachUseCase((payload, meta) => {});
context.events.onDispatch((payload, meta) => {});
context.events.onDidExecuteEachUseCase((payload, meta) => {});
context.events.onCompleteEachUseCase((payload, meta) => {});
context.events.onErrorDispatch((payload, meta) => {});0.11.x → 0.12.x
How to migrate?
Notes: Sadly, this old migration script is not automated...
Please do following steps.
Convert Store#getState scripts
Target: Store files
# Install to global
npm install -g @almin/migration-tools 
# Run migration scripts
## Target: your almin store files
almin-migration-tools --script "store-get-state-return-object-to-flat" "src/**/store/**/*.js"Store#getState return value migration.
This script migrate following adn write stats to almin-store-state-mapping.json.
Found Following pattern and replace
class MyStore extends Store {
    getState() {
       return {
           stateName: state
       }
    }
}to
class MyStore extends Store {
    getState() {
       return state;
    }
}This script output stats as almin-store-state-mapping.json.
The almin-store-state-mapping.json is used with next script(Convert StoreGroup constructor).
Convert StoreGroup constructor
Target: StoreGroup file
# Install to global
npm install -g @almin/migration-tools 
# Run migration scripts
## Target: your almin StoreGroup file
almin-migration-tools --script "store-group-arguments" "src/**/store/**/*.js"Migrate StoreGroup constructor arguments.
This script migrate following using store-state-mapping.json.
new StoreGroup([
  new CartStore(cartRepository),
  new CustomerStore(customerRepository),
  new ProductStore(productRepository)
])with
new StoreGroup({
  "cart": new CartStore(cartRepository),
  "customer": new CustomerStore(customerRepository),
  "product": new ProductStore(productRepository)
});Options
- mapping: path to- almin-store-state-mapping.json.- Default: using almin-store-state-mapping.jsonin current directory.
 
- Default: using 
Changelog
See Releases page.
Running tests
Install devDependencies and Run npm test:
npm i -d && npm testContributing
Pull requests and stars are always welcome.
For bugs and feature requests, please create an issue.
- Fork it!
- Create your feature branch: git checkout -b my-new-feature
- Commit your changes: git commit -am 'Add some feature'
- Push to the branch: git push origin my-new-feature
- Submit a pull request :D
Author
License
MIT © azu