fervid_transform 0.2.0

Transformations for the fervid crate
Documentation
# fervid_transform

Part of the `fervid` project, an all-in-one Vue compiler.
This crate is responsible for the transformations in the template, such as optimizing the AST or transforming the JS/TS expressions in the AST nodes.

In the future this crate may accommodate the `<style>` transformations as well, which are currently in its own crate.

## `script`
A set of Rust APIs for processing Vue's `<script>` and `<script setup>`.

## Roadmap
- [x] `<script>` support
    - [x] Top-level declarations and imports;
    - [x] `data` bindings;
    - [x] `props`;
    - [x] `computed`;
    - [x] `setup`;
    - [x] `inject`;
    - [x] `emits`;
    - [x] `components`;
    - [x] `methods`;
    - [x] `expose`;
    - [x] `name`;
    - [x] `directives`;

- [ ] `<script setup>` support
    - [x] Top-level declarations and imports;
    - [x] Binding types (using bit-flags instead of enum);
    - [ ] Compiler macros:
        - [x] `defineProps(...)`;
        - [ ] `defineProps<...>()`;
        - [x] `defineEmits(...)`;
        - [ ] `defineEmits<...>()`;
        - [x] `defineExpose`;
        - [x] `defineOptions`;
        - [x] `defineSlots`;

- [ ] TypeScript support
    - [x] `enum` bindings;
    - [ ] [Type-only props/emit declarations](https://vuejs.org/api/sfc-script-setup.html#type-only-props-emit-declarations);
    - [ ] DEV-mode [import usage checks]https://github.com/vuejs/core/blob/b36addd3bde07467e9ff5641bd1c2bdc3085944c/packages/compiler-sfc/__tests__/compileScript.spec.ts#L378;

- [ ] Additional features
    - [ ] `useCssVars`;
    - [ ] Top-level `await`;

- [ ] Compilation order
    - [x] Analysis of scripts;
    - [x] Merging scripts into an Options API object
        - [x] Trivial field-by-field merging;
        - [x] Non-trivial merging using `{ ...legacy, ...setup }`;
    - [x] Attaching compiled template
        - [x] Adding bindings `return` in `DEV` mode, then attaching a render function to the `_sfc_` object;
        - [x] Inlining template in `PROD` mode;
    - [x] Attaching additional information: `name`, `scope`, etc.