# Extensions of the @vulcan-sql/core package

The @vulcan-sql/core provides 10 extension components:

| Extensions                                               | Description                                                                                                                                                                                                                              |
| -------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [DataSource](./vulcan-sql-core/data-source)              | Extend DataSource to support connecting, querying other type data sources, e.g: [postgresql](../connectors/postgresql) or [duckdb](../connectors/duckdb)                                                                                 |
| [FilterBuilder](./vulcan-sql-core/filter/filter-builder) | Beside [Nunjucks filters](https://mozilla.github.io/nunjucks/templating.html#builtin-filters) and current supported VulcanSQL [filters](../api-building/sql-syntax#filters), extend the FilterBuilder to make new filter for recognizing |
| [FilterRunner](./vulcan-sql-core/filter/filter-runner)   | Extend FilterRunner to make the new filter could run. The FilterBuilder and FilterRunner are pair extensions to use for customize new filter                                                                                             |
| [InputValidator](./vulcan-sql-core/input-validator)      | Beside built-in types of [validators](../api-building/api-validation), extend InputValidator to support other validator type                                                                                                             |
| [PersistentStore](./vulcan-sql-core/persistent-store)    | Beside current `LocalFile` type to read artifact, extend PersistentStore to save and load other type artifact, e.g: read artifact from remote location                                                                                   |
| [Serializer](./vulcan-sql-core/serializer)               | Beside current `json` format to read artifact, extend Serializer to serialize and and deserialize other format artifact, extend Serializer to read other format file, e.g: TOML format                                                   |
| [ProfileReader](./vulcan-sql-core/profile-reader)        | Beside current `LocalFile` type to read YAML format [profile](../api-building/configuration/data-source-profile), extend ProfileReader to read other type profile, e.g: read profile from remote location json file                      |
| [TagBuilder](./vulcan-sql-core/tag/tag-builder)          | Beside [Nunjucks tags](https://mozilla.github.io/nunjucks/templating.html#tags) and VulcanSQL supported `req` and `error` tags, extend TagBuilder to customize new tag for recognizing                                                   |
| [TagRunner](./vulcan-sql-core/tag/tag-runner)            | Extend TagRunner to make the new tag could run. The TagBuilder and TagRunner are pair extensions to use for customize new tag                                                                                                            |
| [TemplateProvider](./vulcan-sql-core/template-provider)  | Beside `LocalFile` type to read sql files from local folder, extend TemplateProvider to support reading sqls from other way, e.g: read sql files from remote location                                                                    |
