Skip to content

Almin 0.18 CHANGELOGΒ #358

@azu

Description

@azu

πŸ₯‡ Migration

almin-migration-tools support migration from 0.17.x to 0.18.x.

npx @almin/migration-tools

This(0.17.x β†’ 0.18.x) migration also supports TypeScript.

npx @almin/migration-tools "src/**/*.{ts,tsx}"

πŸ”₯ Breaking Change

TypeScript user:

If you use Almin with TypeScript, please upgrade to TypeScript 3.0.
Almin 0.18 require TypeScript 3.0.

If you seen following compile error, you should upgrade to TypeScript 3.0.

Type '{}' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes<{ state: StateMap<{ subscriptionList: any; subscri...'.
  Type '{}' is not assignable to type 'Readonly<Pick<StateMap<{ subscriptionList: any; subscriptionContents: any; appHeader: any; appPre...'.

JavaScript user:

No breaking change.

⭐ Features

Make execute type complete #355 #107

For TypeScript user

UseCaseExecutor#executor has been introduced as a workaround for TypeScript #107.

In Almin 0.18+, UseCaseExecutor#execute work with TypeScript #355

πŸ“ Require TypeScript 3.0+

So, 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");

These are same meaning without syntax.

Deprecate executor() #356

You can migrate from executor to execute by migration tools

npx @almin/migration-tools "src/**/*.{js,ts,tsx}" --script "executor-to-execute"

♻️ Refactoring

Drop to use events module #352

Almin 0.18 drop to use Node.js's events module.

It improves to

  • support React Native compatible
  • reduce file size

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions