All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.
v2.2.35 (2024-10-17)
- generate DSL documentation without a colon in the file name
v2.2.34 (2024-10-15)
- more and better typespecs for
Spark.Options.Validator
v2.2.33 (2024-10-13)
- include optional arguments as entity builders in spark.formatter
v2.2.32 (2024-10-07)
- disable introspection section in cheatsheets if target module is not documented (#111)
v2.2.31 (2024-09-27)
- add :impl option type (#110)
v2.2.30 (2024-09-24)
- raise multiple DslErrors at once
v2.2.29 (2024-09-15)
- add
Spark.Igniter.find
for search a DSL and all fragments
v2.2.28 (2024-09-14)
- support latest elixir_ls changes
- support fragments when finding DSL options
v2.2.27 (2024-09-12)
- properly display unknown vs required option for missing keys
v2.2.26 (2024-09-10)
- undo change supporting non keyword lists in spark options
v2.2.25 (2024-09-10)
:spark_behaviour
does not need to require opts be a list
v2.2.24 (2024-09-06)
-
remove experimental module/function docs �
-
don't assume all atoms could be module names
- Don't just all the values when there may be a large number of values. (#106)
v2.2.23 (2024-08-29)
-
add
get_option
igniter tool -
add
take
option toto_options
v2.2.22 (2024-08-20)
-
Macro.escape persisted keys
-
properly handle {:error, error} when validating opts
-
add
fetch_persisted
-
add options type to option validators
v2.2.21 (2024-08-14)
- add
private?
to options spec, and fix incorrect error output
v2.2.20 (2024-08-14)
-
show proper list of known options
-
validate schema at compile time
v2.2.19 (2024-08-13)
- cast default values
v2.2.18 (2024-08-13)
- proper validation error on unknown optiosn
- show
| nil
in struct type when optional
v2.2.17 (2024-08-13)
- handle schemas w/ duplicate keys
- add
docs/1
to options validators
v2.2.16 (2024-08-13)
- properly validate defaults
v2.2.15 (2024-08-13)
-
support getting an options list back out
-
add
to_options/1
to options validators -
store which keys were provided in option validators
v2.2.14 (2024-08-13)
- small fixes/cleanups for optiosn validations
v2.2.13 (2024-08-13)
- support define_deprecated_access? to help migrating to options validators
v2.2.12 (2024-08-13)
-
optimize options validations (some)
-
introduce new
Spark.Options.Validator
v2.2.11 (2024-07-30)
-
(maybe temporarily) disable parallel compilation to resolve compile time issues
-
ensure that sections are a list in
prepend_to_section_order/3
v2.2.10 (2024-07-18)
- add docs & specs, and
Spark.Igniter.has_extension/5
v2.2.9 (2024-07-17)
- hide hidden docs & auto_set_fields in options tables
v2.2.8 (2024-07-15)
- add
Spark.Igniter.prepend_to_section_order
v2.2.7 (2024-07-02)
- leverage latest igniter changes, update igniter tooling
v2.2.6 (2024-06-28)
-
simplify & optimize import conflict resolution
-
optimize and make idiomatic the entity building macros
-
more idiomatic and performant section body & entity option macros
-
optimize and make idiomatic the section option setter
v2.2.5 (2024-06-25)
- allow
%__MODULE__{}
to be used in escaped functions
v2.2.4 (2024-06-20)
- support igniter 0.2.0
v2.2.3 (2024-06-17)
- properly support optional arguments before required ones
v2.2.2 (2024-06-17)
- support optional arguments at the beginning of args list
v2.2.1 (2024-06-14)
- update to latest igniter, sourceror
v2.2.0 (2024-06-13)
mix spark.install
(a.k.amix igniter.install spark
)
-
Spark.Igniter
, utilities for patching Spark DSL files -
handle
nil
module
in dsl error more gracefully
v2.1.24 (2024-06-10)
-
ensure that options modules from sections are unimported
-
ensure that unimports for sections are properly scoped
-
ensure atom before check compiled (#99)
v2.1.23 (2024-06-07)
-
ensure that we infer the proper arity from multi-clause functions with
when
-
make shortdoc for cheat sheats mix task shorter (#95)
-
Use term_to_iovec instead of term_to_binary (#97)
-
Make opts merge silent when values are identical (#96)
-
hide
env
from persisted output in compile time
v2.1.22 (2024-05-14)
- fix
Spark.Options.validate_type
for:fun
(#91)
-
fix elixir-ls plugin to match latest release
-
add more typespec coverage (#89)
-
Add more spark types to
type_to_spec
andschema_to_spec
.
v2.1.21 (2024-05-10)
- properly match on
fetch_opt
in Spark.InfoGenerator (#90)
- better handling around default values for dsl options in info generator (#88)
v2.1.20 (2024-04-21)
- honor the
add_extensions
option for DSL extensions
v2.1.19 (2024-04-21)
- handle more errors in elixir_sense plugin
v2.1.18 (2024-04-12)
- solve for compile time dependency issues
v2.1.17 (2024-04-11)
- don't order sections unless an explicit order is given
v2.1.16 (2024-04-10)
- remove debug code
v2.1.15 (2024-04-10)
- fix builtin function matching
v2.1.14 (2024-04-10)
- properly autocomplete entity argument values
v2.1.13 (2024-04-05)
- still nailing down the opts list shuffling to end behavior
v2.1.12 (2024-04-05)
-
don't put do blocks into option values
-
replace_entity
should not add an entity if none are present (#82)
- allow overriding generated info functions
v2.1.11 (2024-03-29)
- don't count
true
orfalse
asspark_function_behaviour
v2.1.10 (2024-03-29)
- don't shuffle opts to end when filling required arguments
v2.1.9 (2024-03-28)
nil
is not a valid module for spark function behaviour
v2.1.8 (2024-03-27)
- fix warnings
v2.1.7 (2024-03-27)
- properly use
Keyword.put
for section/entity options
v2.1.6 (2024-03-26)
- use the entity key, not the name, for placing entities
v2.1.5 (2024-03-26)
-
ensure offered completions are unique
-
ensure completions are offered to piped in functions
v2.1.4 (2024-03-25)
- Add
{:protocol, module}
as a supported type. (#79)
v2.1.3 (2024-03-20)
-
handle single arg entities as options
-
capture stacktrace in dsl errors, reuse on raising
v2.1.2 (2024-03-18)
- add back in support for
:struct
type
v2.1.1 (2024-03-18)
-
better, more type aware autocompletion
-
less crashing of elixir ls
v2.1.0 (2024-03-15)
-
add defaults to
Verifier
functions -
autocomplete properly when multiple scopes are on one line
-
don't require that using module is compiled
-
autocomplete for macros as well
-
autocomplete options to
use
a DSL -
support autocompleting function opts
v2.0.1 (2024-02-26)
- handle
nil
values inspark_function_behaviour
v2.0.0 (2024-02-23)
- vendor NimbleOptions in
Spark.Options
-
honour an entity's snippet when one is present. (#77)
-
only import recursive entities from other extensions inside entities
-
import entity builders from other extensions inside of entities
v1.1.54 (2024-01-12)
-
properly detect dsl links with ? and ! in them
-
update Spark.Formatter to respect
extensions
list (#73) -
spec & doc type for
:quoted
-
correct typespec/sanitisation for :in and :one_of (#72)
-
proper typespec for keyed nimble types (#70)
-
keep subsection of target merged schema
- working
doc_type
for nested schemas (#71)
v1.1.53 (2023-12-16)
- properly type spec map types
v1.1.52 (2023-12-13)
-
don't use question marks in module names
-
Ensure
\\
for default argument values are rendered correctly in generated guides (#68)
- accept structs in info functions by default
v1.1.51 (2023-11-14)
- ensure struct references are compiled
v1.1.50 (2023-10-25)
- fix alias usage regression
- change
:wrap_list
doc tox | list(x)
(#60)
v1.1.49 (2023-10-25)
-
properly mark all aliases as used
-
only optimize spark dsl config's with list paths
persisters
are unordered transformers always run at the end
v1.1.48 (2023-10-18)
- optimize entity & option fetching
v1.1.47 (2023-10-17)
-
optimize access to persisted data
-
better error message on bad transformer
v1.1.46 (2023-10-11)
-
properly handle fragments after spark_dsl_config is set
-
properly derive dsl state from source of truth in set_state
v1.1.45 (2023-10-11)
- run transformers after handling fragments
v1.1.44 (2023-10-11)
- properly set anchor links in cheat sheets
v1.1.43 (2023-10-09)
- fix spark.formatter plugin not removing all parens
v1.1.42 (2023-10-08)
- markdown -> html for cheat_sheets
v1.1.41 (2023-10-02)
-
trim cheat_sheets before checking
-
support nested types in
:keyword_list
and:map
nimble types. (#62)
v1.1.40 (2023-09-27)
-
add
mix spark.replace_doc_links
-
clean up cheat sheets & various type improvements
v1.1.39 (2023-09-16)
- handle empty string case in cheat_sheets
v1.1.38 (2023-09-16)
- allow empty extensions in spark.cheat_sheets
v1.1.37 (2023-09-16)
-
inspect_if
adds backticks for better docs -
better display for nested DSLs in cheat sheets
v1.1.36 (2023-09-15)
- include section descriptions
v1.1.35 (2023-09-15)
- properly show entity argument examples
v1.1.34 (2023-09-14)
- add
--check
tospark.cheat_sheets
v1.1.33 (2023-09-14)
- don't show examples if there aren't any
v1.1.32 (2023-09-14)
- don't remove DSL directory immediately after generating
v1.1.31 (2023-09-14)
- remove dsl cheat sheets after building
v1.1.30 (2023-09-14)
- more cheat sheet improvements
v1.1.29 (2023-09-14)
- show tags in cheat sheets
v1.1.28 (2023-09-14)
- better cheat sheet formatting & docs
v1.1.27 (2023-09-14)
-
properly unimport other extension top level sections
-
only do top level unimports on second level paths
-
handle more unimports of top level entities
-
recusively sanitize keyword and map types. (#59)
-
OptionsHelpers: Some nimble options types can have nested schemas. (#58)
-
better formatted cheat sheets
-
add initial cheat sheet generators
v1.1.26 (2023-09-11)
-
recusively sanitize keyword and map types. (#59)
-
OptionsHelpers: Some nimble options types can have nested schemas. (#58)
v1.1.25 (2023-09-01)
- support patching top level sections
v1.1.24 (2023-08-30)
-
don't inspect dsl map in info generator errors
-
code highlight error (#56)
- allow
Patch.AddEntity
if a same-target entity exists (#53)
v1.1.23 (2023-08-17)
- handle when clauses on anonymous functions
v1.1.22 (2023-07-27)
- fix lexical import error in DSL macros
v1.1.21 (2023-07-22)
- support
{:spark, _}
in typespec generators
v1.1.20 (2023-07-13)
-
add
verify
callback -
Spark.Dsl.Extension: Add
add_extensions
option which allows an extension to invite its friends. (#49)
v1.1.19 (2023-07-11)
-
unimport other extensions when opening a section
-
reimport all sections after opening one
-
unimport entire extension, reimport only pertinent sections
-
only unimport/reimport necessary sections
-
unimport top level sections
v1.1.18 (2023-06-22)
- handle entity uniqueness properly
defbuilderp
v1.1.17 (2023-06-20)
-
nested entity paths contain their section?
-
handle two-deep recursive as nested entity unimports
-
fix imports around recursive_as entitites
- unimport top level sections from non-top-level sections
v1.1.16 (2023-06-20)
-
handle mixed lists of entities better
-
incorrect identity logic in
Transformer.build_entity/4
. (#44) -
better typespec for keyword lists
-
wrap_list type fix behavior
-
Entity: don't ever use
Map.put/3
to set an entity's__identifier__
. (#43)
v1.1.15 (2023-06-07)
- don't explode for non-tuple argument values. (#42)
v1.1.14 (2023-06-07)
- Spark.Dsl.Entity: Clobbering of optional arguments (#41)
v1.1.13 (2023-05-30)
- add
:fun
options type
v1.1.12 (2023-05-30)
-
swap
Exception.exception?
forKernel.is_exception
(#36) -
don't support args in entity builders
-
don't support builders for args
-
add
singleton_entity_keys
option -
moderately more helpful error message when introspecting a non Spark module. (#35)
-
remove doc index
v1.1.11 (2023-05-10)
- don't document functions generated by Spark.Dls (#34)
v1.1.10 (2023-05-04)
- handle more cases where notifier is not an extension
v1.1.9 (2023-05-04)
- handle extensions with no sections
v1.1.8 (2023-05-03)
- better behavior with latest elixirls release
v1.1.7 (2023-05-03)
- remove hardcoded line number
v1.1.6 (2023-05-03)
- handle more anonymous function types in DSLs
v1.1.5 (2023-05-01)
- better error messages on exceptions in transformers
v1.1.4 (2023-04-27)
- require
__identifier__
field for identifiers
v1.1.3 (2023-04-26)
Transformer.async_compile/2
v1.1.2 (2023-04-24)
- don't wrap wrap_list snippets by default
v1.1.1 (2023-04-24)
- better snippets,
:wrap_list
type
v1.1.0 (2023-04-22)
- top level DSLs!
-
give every dsl entity a unique identifier
-
support top level sections in elixir_sense plugin
v1.0.9 (2023-04-21)
- correct args spec in
Spark.Dsl.Entity.t
. (#31)
-
add identifier-based entity replacement
-
add
imports
to extensions
v1.0.8 (2023-04-11)
- fix keyword_list types and list types
v1.0.7 (2023-04-08)
-
fix nested section module prefix
-
remove merge warning in a single DSL
v1.0.6 (2023-04-06)
- sanitize nested schemas
v1.0.5 (2023-04-06)
- properly merge fragments with base DSL
v1.0.4 (2023-04-05)
- don't rely on new elixir version function
- properly set extension types, and prevent overwriting
v1.0.3 (2023-04-05)
- nested entities not being correctly checked for uniqueness. (#28)
v1.0.2 (2023-04-05)
- fragments & identifiers
v1.0.1 (2023-03-31)
- unimport recursive options everywhere
v1.0.0 (2023-03-31)
- much better recursive DSL ergonomics
- better async compiler task handling
v0.4.12 (2023-03-25)
- Relax nimble_options dependency (#27)
v0.4.11 (2023-03-23)
- make code helpers public
v0.4.10 (2023-03-23)
- update to nimble_options 1.0
v0.4.9 (2023-03-21)
- better typespec generation
v0.4.8 (2023-03-20)
- ad
{:literal_value, value}
type
v0.4.7 (2023-03-02)
- properly match patched entities in formatter
v0.4.6 (2023-03-02)
- properly get all entity/option builders for formatter
v0.4.5 (2023-02-19)
- Make generated using/1 overridable for Dsls. (#26)
v0.4.4 (2023-02-14)
- more fixes for aliases
v0.4.3 (2023-02-13)
- fix unused alias warnings once and for all
v0.4.2 (2023-02-13)
- don't add docs to
@moduledoc false
mods
- evaluate
Transformer.eval
chunks in the order they're added. (#24)
v0.4.1 (2023-02-08)
- Make sections explicitly patchable, improve info generator. (#23)
v0.4.0 (2023-02-06)
- InfoGenerator: extract from AshAuthentication. (#22)
v0.3.12 (2023-02-05)
- spark.formatter properly split modules
v0.3.11 (2023-02-05)
-
all_entity_builders/3
passing extensions as path -
properly use Spark.Dsl behaviour
v0.3.10 (2023-02-05)
- don't use
Keyword.update!
when we don't know the key is there
-
support DSL modules having an explain callback
-
support adding entities via dsl patches
v0.3.9 (2023-01-30)
- CodeHelpers: don't generate duplicate functions. (#20)
v0.3.8 (2023-01-27)
-
Support multiple function clauses in anonymous functions (#18)
-
Entity.t: included
nil
option in typespecs where a field could be left default. (#17)
-
compile modules async for much faster compilation
-
speed up compilation by defining DSL modules in parallel
v0.3.7 (2023-01-19)
- don't suggest do/end blocks for entities
v0.3.6 (2023-01-18)
- remove variable scope when stripping metadata
-
update to new docs patterns
-
centralize anonymous function handling code
-
add
:quoted
type
v0.3.5 (2023-01-12)
- exclude all metadata from code identifier
v0.3.4 (2023-01-09)
-
properly ensure options list is pushed to the end
-
don't remove incorrect opts, broken in last commit
-
properly handle optional keyword list/do blocks with optional args
v0.3.3 (2023-01-06)
- support functions in entity args better
v0.3.2 (2022-12-22)
-
support optional entity args in formatter
-
run verifiers in after_compile hook in old versions
- support
imports
option on entities
v0.3.1 (2022-12-16)
- handle raised error in doc_index link replacements better
- support optional entity arguments (�)
v0.3.0 (2022-12-14)
- add verifiers
-
ensure entities config exists for recursive entities
-
properly traverse tuple subtypes
-
allow regexes in code modules
-
add the file to the persisted state
-
add
module
type
v0.2.18 (2022-12-07)
-
fix modules typespec
-
typespecs: fix incorrect typespec for
Spark.Dsl.Entity.t
(#14)
- update to latest nimble options
v0.2.17 (2022-12-02)
- more anonymous function type support
v0.2.16 (2022-12-02)
-
support partial captures in functions
-
leave unordered code where it is when sorting DSL sections
v0.2.15 (2022-12-01)
- properly avoid unquoting functions out of context
v0.2.14 (2022-12-01)
- various DSL utilities, like
fetch_opt
andsparks/2
v0.2.13 (2022-11-30)
-
support
remove_parens?
option forSpark.Formatter
-
Typespecs: add a
t
type forSpark.Dsl.Extension
. (#12)
v0.2.12 (2022-11-21)
- Incorrect typespecs. (#11)
v0.2.11 (2022-11-19)
-
properly handle
{:or, [{:spark_function_behaviour, ...}]}
types -
support anonymous functions in an
or
type -
don't cause unnecessary export dependency recompilation
- Add typespecs for
Spark.Dsl.Entity
andSpark.Dsl.Section
. (#10)
v0.2.10 (2022-11-15)
- add basename to guide typespec
v0.2.9 (2022-11-15)
- support explicitly ordering guides
v0.2.8 (2022-11-03)
- properly link to libraries, and support
default_guide
v0.2.7 (2022-11-03)
- support generic docs replacements renderer
v0.2.6 (2022-10-31)
- add new
spark_function_behaviour
to elixir_sense plugin
- support
{:or, ...}
option types
v0.2.5 (2022-10-30)
- un-break recursive DSL entities
v0.2.4 (2022-10-29)
-
support anonymous functions in the DSL
-
remove necessity for
{:elixir_sense, ...}
to make the plugin work
v0.2.3 (2022-10-28)
- add
Builder.input()
type
v0.2.2 (2022-10-28)
- add
handle_nested_builders/2
v0.2.1 (2022-10-27)
- handle non tuple return in builder
v0.2.0 (2022-10-24)
- add
Spark.Dsl.Builder
v0.1.29 (2022-10-21)
-
add
{:struct, Struct}
option type -
DslError: Add type for
DslError
struct. (#4)
v0.1.28 (2022-10-08)
- resolve issue w/ Code.eval_quoted
- OptionsHelpers: Add typespecs for options helpers. (#3)
v0.1.27 (2022-10-04)
- go back to fully hiding
no_require
modules
v0.1.26 (2022-09-29)
- add
mix_tasks/0
toDocIndex
v0.1.25 (2022-09-20)
- add
t()
type for DSL
v0.1.24 (2022-09-20)
- properly induce export dependency and still use aliases
v0.1.23 (2022-09-20)
- no dependencies hacked into export dependencies
v0.1.22 (2022-09-20)
v0.1.21 (2022-09-15)
- put back in fetching from module attribute if possible
v0.1.20 (2022-09-15)
-
preliminary support for passing maps to introspection
-
allow extensions to modify the module docs of an extension
v0.1.19 (2022-08-31)
- revert ordering changes that appear to be causing errors
v0.1.18 (2022-08-25)
-
fix base resource pattern
-
using type config in more places
-
use configured type
- add otp_app getter
v0.1.17 (2022-08-23)
- don't create module docs for generated modules
v0.1.16 (2022-08-23)
- remove
default_guide/1
v0.1.15 (2022-08-19)
- work on doc index
v0.1.14 (2022-08-19)
- add docs to hex package
v0.1.13 (2022-08-19)
- try out adding extra package metadata
v0.1.12 (2022-08-18)
-
add default to get_option
-
fix package files
v0.1.11 (2022-08-18)
- more documentation, tools for hex docs
v0.1.10 (2022-08-18)
- WIP on fixing the way we distribute doc files
v0.1.9 (2022-08-17)
- properly ignore built in alias types
- use libgraph to sort transformers
v0.1.8 (2022-08-16)
-
don't provide the module to transformers
-
update sourceror depednency
v0.1.7 (2022-08-15)
- add
spark.formatter.exs
(from ash)
v0.1.6 (2022-08-14)
- add formatter
v0.1.5 (2022-08-14)
- properly use spark dsl error
v0.1.4 (2022-08-14)
- add
Spark.Error.DslError
v0.1.3 (2022-08-14)
- properly handle
spark
types
v0.1.2 (2022-08-14)
- validate spark types properly