Skip to content

Latest commit

Β 

History

History
630 lines (350 loc) Β· 18.7 KB

CHANGELOG.md

File metadata and controls

630 lines (350 loc) Β· 18.7 KB

v0.15.0 (Fri Jun 02 2023)

πŸŽ‰ This release contains work from a new contributor! πŸŽ‰

Thank you, null@brocollie08, for all your work!

Release Notes

BailHook default handler (#33)

Allows for SyncBailHook to call with a default handler for when the taps do not bail and return nothing


πŸš€ Enhancement

Authors: 1


v0.14.1 (Tue Dec 06 2022)

⚠️ Pushed to main

Authors: 1


v0.14.0 (Mon Dec 05 2022)

Release Notes

make tap info mutable (#31)

Add data class APIs to TapInfo such that it can be mutated.

scope version properties to avoid conflicts (#30)

Scope metadata b/c it was conflicting w/ another Gradle plugin


πŸš€ Enhancement

πŸ› Bug Fix

Authors: 1


v0.13.0 (Sat Jul 09 2022)

Release Notes

New Hooks DSL (#29)

πŸ’₯ Breaking Change πŸ’₯

Relax typing specification when using the DSL. Hooks should always use the Hook superclass as the specified type and rely solely on the annotation to specify the actual constraints of the hook:

abstract class CarHooks : Hooks() {
    @Sync<() -> Unit>
    abstract val brake: Hook
    
    @Sync<(newSpeed: Int) -> Unit>
    abstract val accelerate: Hook
}

πŸš€ Enhancement

Authors: 1


v0.12.1 (Sat Jul 09 2022)

πŸ› Bug Fix

Authors: 2


v0.12.0 (Thu Jun 23 2022)

Release Notes

Migrate from Arrow Meta to Kotlin Symbol Processor (#24)

πŸ’₯ This is a breaking change πŸ’₯

Migration to KSP from Arrow Meta because they dropped support for source generation. This does improve the overall maturity of the codegen module (compiler-plugin -> processor). However, the KSP framework doesn't support the code typing introspection that we were doing in Arrow Meta. Instead, we have to rely strictly on typings and annotations, which changes the DSL we originally had.

internal abstract class GenericHooks : Hooks() {
    @Sync<(newSpeed: Int) -> Unit> abstract val sync: SyncHook<*>
    @SyncBail<(Boolean) -> BailResult<Int>> abstract val syncBail: SyncBailHook<*, *>
    @SyncLoop<(foo: Boolean) -> LoopResult> abstract val syncLoop: SyncLoopHook<*, *>
    @SyncWaterfall<(name: String) -> String> abstract val syncWaterfall: SyncWaterfallHook<*, *>
    @AsyncParallelBail<suspend (String) -> BailResult<String>> abstract val asyncParallelBail: AsyncParallelBailHook<*, *>
    @AsyncParallel<suspend (String) -> Int> abstract val asyncParallel: AsyncParallelHook<*>
    @AsyncSeries<suspend (String) -> Int> abstract val asyncSeries: AsyncSeriesHook<*>
    @AsyncSeriesBail<suspend (String) -> BailResult<String>> abstract val asyncSeriesBail: AsyncSeriesBailHook<*, *>
    @AsyncSeriesLoop<suspend (String) -> LoopResult> abstract val asyncSeriesLoop: AsyncSeriesLoopHook<*, *>
    @AsyncSeriesWaterfall<suspend (String) -> String> abstract val asyncSeriesWaterfall: AsyncSeriesWaterfallHook<*, *>
}

πŸš€ Enhancement

  • Migrate from Arrow Meta to Kotlin Symbol Processor #24 (@sugarmanz)

⚠️ Pushed to main

Authors: 1


v0.11.1 (Wed Nov 03 2021)

Release Notes

Add explicit visibility to satisfy Kotlin explicit API check (#20)

Generated source code will adhere to Kotlin explicit API check if hooks are public.


πŸ› Bug Fix

  • Add explicit visibility to satisfy Kotlin explicit API check #20 (@sugarmanz)

Authors: 1


v0.11.0 (Wed Oct 27 2021)

Release Notes

Untap support & various fixes (#19)

Small fixes

  • Fix Gradle generation params
  • Modify async hook strategy to not take a scope, as this is already required to call the suspend method
  • Fix AsyncParallelHook to actually suspend properly until all callbacks complete
  • Replace mutable list containing TapInfo with a mutable var containing an immutable list (this fixes an issue when tapping a hook that is currently being called: ConcurrentModificationException)

Untapping

In order to allow calling sites to unregister stale callbacks and prevent memory leaks, the tap API now returns a String representing the ID of the specific "tap". The ID can then be passed into the new untap API to remove the callback from the hook. This ID can be randomly generated or manually passed when tapping a hook. Manually passing an ID is useful for when the tapper wants to replace a stale callback without calling needing to untap explicitly.


πŸš€ Enhancement

Authors: 1


v0.10.2 (Thu Oct 07 2021)

Release Notes

Format generated source with KtLint (#18)

What Changed

Format generated source with KtLint

Why

To make generated source more readable for consumers


πŸ› Bug Fix

Authors: 1


v0.10.1 (Thu Oct 07 2021)

Release Notes

manually bump version snapshot (#17)


πŸ› Bug Fix

Authors: 1


v0.10.0 (Wed Oct 06 2021)

Release Notes

upgrade to arrow 1.0.0 and fix generated sources root (#15)

  • Upgrade to Arrow 1.0.0
  • Fixed issue where JAR bundling was somehow causing the plugin options to be dropped

πŸš€ Enhancement

  • upgrade to arrow 1.0.0 and fix generated sources root #15 (@sugarmanz)

Authors: 1


v0.9.1 (Mon May 10 2021)

πŸ› Bug Fix

⚠️ Pushed to main

🏠 Internal

Authors: 2


v0.9.0 (Wed Mar 17 2021)

πŸŽ‰ This release contains work from a new contributor! πŸŽ‰

Thank you, David Stone (@stabbylambda), for all your work!

Release Notes

Hooks with type parameters (#8)

Enhance DSL to adds the ability to generate Hooks with type parameters. The use case for this is when some piece of data is known only to the consumer of a library and the consumers of the taps, but not necessarily the library itself. As an example:

class FooHooks<T> : Hooks() {
    open val beforeCalc = syncHook<(T) -> Unit>()
}

data class Foo<T>(val t: T)  {
    public val hooks = FooHooksImpl<T>()

    fun calc() {
        hooks.beforeCalc.call(t)
        // ...
    }
}

fun runCalcsWithLog() {
    val f = Foo<String>("hi")
    f.hooks.beforeCalc.tap("hi") { x -> println(x) }
}

πŸš€ Enhancement

πŸ› Bug Fix

πŸ“ Documentation

Authors: 2


v0.8.2 (Tue Mar 02 2021)

πŸ› Bug Fix

Authors: 1


v0.8.1 (Tue Mar 02 2021)

⚠️ Pushed to master

Authors: 1


v0.8.0 (Tue Mar 02 2021)

πŸš€ Enhancement

Authors: 1


v0.7.4 (Tue Mar 02 2021)

πŸŽ‰ This release contains work from new contributors! πŸŽ‰

Thanks for all your work!

❀️ Jeremiah Zucker (@sugarmanz)

❀️ Andrew Lisowski (@hipstersmoothie)

πŸ› Bug Fix

⚠️ Pushed to master

Authors: 2


v0.7.0 (Sat Jan 23 2021)

Release Notes

From #38


πŸš€ Enhancement

Authors: 1


v0.6.0 (Tue Jan 12 2021)

Release Notes

From #36

Implement Kotlin Maven Plugin Extension


πŸš€ Enhancement

  • [PLAYA-7426] Implement Kotlin Maven Plugin Extension #36 (@JZUCKER)

Authors: 1


v0.5.0 (Wed Jan 06 2021)

πŸš€ Enhancement

Authors: 1


v0.4.0 (Wed Jan 06 2021)

Release Notes

From #31

Gradle Plugin

Implement Gradle plugin for the compiler plugin. When added to a project, it will automatically include the correct dependencies.

Renaming

Remove all tapable references from the package name.


πŸš€ Enhancement

Authors: 2


v0.3.0 (Tue Jan 05 2021)

Release Notes

From #33


πŸš€ Enhancement

πŸ› Bug Fix

πŸ“ Documentation

Authors: 2


v0.2.0 (Fri Nov 13 2020)

πŸš€ Enhancement

Authors: 1


v0.1.4 (Fri Nov 13 2020)

πŸ› Bug Fix

Authors: 1


v0.1.3 (Tue Nov 10 2020)

πŸ› Bug Fix

Authors: 1


v0.1.2 (Tue Nov 10 2020)

πŸ› Bug Fix

Authors: 1


v0.1.1 (Mon Nov 09 2020)

πŸ› Bug Fix

Authors: 1


v0.1.0 (Mon Nov 09 2020)

πŸš€ Enhancement

Authors: 1


v0.0.2 (Fri Nov 06 2020)

Release Notes

From #7

First published alpha release of Intuit Tapable for the JVM. This includes the complete set of working hooks, as well as a compiler plugin to help generate specific hook implementations. This project as a whole is based on Webpack's Tapable for JS.


πŸ› Bug Fix

⚠️ Pushed to master

Authors: 2