efanXtraRelease Notes

v2.0

Core parts re-written to allow standard classes and const classes to be used as components (they're no longer just for mixins!). This allows a much more natural style of Fantom programming with efan components. The rendering process has also been significanly simplified for a speedier result.

v2.0.6

  • Chg: Optimised the common Template finders.
  • Bug: Pods could not be contributed as EfanLibraries more than once.
  • Bug: Nested components, each with a body fn, could cause a StackOverflowErr.

v2.0.4

  • Chg: Renamed the, now unused, render method variable ctx to _ctx_ to prevent clashes with component field names.

v2.0.2

  • Chg: efanXtra now references EfanCompiler by ID so other non-efanXtra IoC instances may be created.

v2.0.0

  • New: Re-written for efan 2.0.
  • Chg: Updated all pods to latest versions.

v1.0

v1.2.0

  • New: Fandoc Type comments may also be used as templates.
  • Chg: Updated to work with IoC v3. (Breaking Change.)
  • Chg: TemplateConverters now takes contributions of |Str->Str|. (Breaking Change.)
  • Chg: Baseclass names are also used to find templates.
  • Chg: Each component renders into it's own StrBuf. This allows us to render arbitrary, non-nested, components and embed the result in template Strs.

v1.1.20

  • Chg: Better handling of threaded services / dependency provided objects injected into components.

v1.1.18

  • Chg: Advanced API change to accomodate @Inject'ed threaded services.
  • Bug: efanXtra now honours the @Autobuild facet.

v1.1.16

  • Chg: Renamed @EfanLocation -> @TemplateLocation. (Oops!)

v1.1.14

  • New: Added a couple of library methods to EfanXtra.
  • Chg: Updated to IoC 2.0.0.
  • Chg: Renamed @EfanTemplate -> @EfanLocation. (Breaking change.)
  • Chg: Internal work to lazily compile EfanLibraries.

v1.1.12

v1.1.10

v1.1.8

v1.1.6

  • Chg: Updated to use IoC 1.6.4, added dependency on IoC Env 1.0.6
  • Chg: EfanXtraConfigIds.templateTimeout now defaults to 2min in production environments, and 2sec otherwise.
  • Chg: Removed EfanXtraConfigIds.supressStartupLogging. To suppress the startup log, remove the RegistryStartup contribution afEfanXtra.logLibraries.

v1.1.4

  • Chg: Updated to use Concurrent 1.0.4.
  • Chg: (Internal) Created ComponentRenderer.
  • Bug: Could not re-compile components.

v1.1.2

v1.1.0

  • New: Template files are optional! Small components may just override renderTemplate() instead.
  • Chg: Overhauled and tidied up the public API and documentation. (Breaking change.)
  • Chg: Type checks involving Lists and Maps are more lenient when calling lifecycle methods.

v1.0.14

v1.0.12

  • Chg: Components may now have threaded services injected into them!

v1.0.10

  • New: Added EfanLibraries.callMethod() hook for Pillow.
  • Chg: Components automatically use the pod that the component mixin was defined in.
  • Chg: ComponentCompiler callbacks now take the component type.
  • Chg: FindEfanByFacetValue is public for use by Pillow.
  • Chg: Render methods are searched for on the component instance, not just the mixin. This is so it may still be called if it's added dynamically.

v1.0.8

  • New: fandoc files may be used as efan templates!

v1.0.6

v1.0.4

  • Chg: @InitMethods may now only return Void or Bool. Throw BedSheet's ReProcessErr if you wish to perform a different action.
  • Chg: Multiple components may now share the same template file.

v1.0.2

  • Chg: Overhauled API documentation.
  • Chg: Tweaked some method signatures with correct nullable types.

v1.0.0

  • New: Introduced component lifecycle methods: @InitRender, @BeforeRender & AfterRender.
  • New: Added @Abstract facet to mark base components.
  • Chg: Template rendering is held in a single mutable StrBuf so it may be manipulated by lifecycle methods.
  • Chg: Components are now defined by extending EfanComponent, not by annotating with a @Component facet.
  • Chg: Renamed to efanXtra (from efanExtra).

v0.0.8

  • New: Added EfanTemplateDirectories service which scans external directories for efan templates.
  • New: Compilation err msgs are updated with code hints should a simple component rendering typo be spotted. (ALIEN-AID)

v0.0.6

  • New: Fields may be annotated with any facet, not just @Inject. Think @Config!!!
  • Chg: Updated to efan-1.3.2
  • Chg: Better Err msgs if component template not found.

v0.0.4

  • New: Component templates can be specified via the @Component.template field.
  • New: Added a contributable EfanTemplateFinders service.
  • New: Ability to suppress startup log messages.
  • New: Added compiler hooks (mainly for Pillow).
  • New: efanXtra.component() returns component instances.
  • Chg: @Component facet is inherited.

v0.0.2

  • New: Preview Release