Skip to content

Commit

Permalink
letify v1
Browse files Browse the repository at this point in the history
  • Loading branch information
shaharkazaz committed Oct 29, 2024
1 parent cbdbac0 commit 469e2ec
Show file tree
Hide file tree
Showing 33 changed files with 17,528 additions and 9,219 deletions.
12 changes: 2 additions & 10 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,21 +18,13 @@ jobs:
with:
fetch-depth: 0

# This enables task distribution via Nx Cloud
# Run this command as early as possible, before dependencies are installed
# Learn more at https://nx.dev/ci/reference/nx-cloud-cli#npx-nxcloud-startcirun
- run: npx nx-cloud start-ci-run --distribute-on="3 linux-medium-js" --stop-agents-after="build"

# Cache node_modules
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'

- run: npm ci --legacy-peer-deps
- run: npm ci
- uses: nrwl/nx-set-shas@v4

# Prepend any command with "nx-cloud record --" to record its logs to Nx Cloud
# - run: npx nx-cloud record -- echo Hello World
# Nx Affected runs only tasks affected by the changes in this PR/commit. Learn more: https://nx.dev/ci/features/affected
- run: npx nx affected -t lint test build
- run: npx nx affected -t lint build
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,5 @@ Thumbs.db

.nx/cache
.nx/workspace-data

letify-report.html
1 change: 1 addition & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
npx lint-staged
4 changes: 4 additions & 0 deletions .lintstagedrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"*.{ts,js,json,yml}": ["prettier --write"],
"*.{ts,js}": ["eslint --fix"]
}
28 changes: 28 additions & 0 deletions .verdaccio/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# path to a directory with all packages
storage: ../tmp/local-registry/storage

# a list of other known repositories we can talk to
uplinks:
npmjs:
url: https://registry.npmjs.org/
maxage: 60m

packages:
'**':
# give all users (including non-authenticated users) full access
# because it is a local registry
access: $all
publish: $all
unpublish: $all

# if package is not available locally, proxy requests to npm registry
proxy: npmjs

# log settings
log:
type: stdout
format: pretty
level: warn

publish:
allow_offline: true # set offline to true to allow publish offline
12 changes: 12 additions & 0 deletions ASSETS-LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
Assets License

Copyright (c) 2024 Shahar Kazaz

The following assets, including but not limited to the project logo, images, and any other non-code assets, are the
exclusive property of Shahar Kazaz and are not covered under the MIT License applied to the code in this repository.

You are not permitted to copy, modify, distribute or use the assets in any derivative works, including but not limited
to websites, marketing materials, or software projects these assets without prior written permission from Shahar Kazaz.

If you wish to use these assets, you must obtain explicit written consent from Shahar Kazaz. You can contact us at
[email protected] for permission.
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2024 Shahar Kazaz

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
108 changes: 58 additions & 50 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,60 +1,68 @@
# NgLetify

<a alt="Nx logo" href="https://nx.dev" target="_blank" rel="noreferrer"><img src="https://raw.githubusercontent.com/nrwl/nx/master/images/nx-logo.png" width="45"></a>

✨ Your new, shiny [Nx workspace](https://nx.dev) is almost ready ✨.

[Learn more about this workspace setup and its capabilities](https://nx.dev/nx-api/js?utm_source=nx_project&amp;utm_medium=readme&amp;utm_campaign=nx_projects) or run `npx nx graph` to visually explore what was created. Now, let's get you up to speed!

## Finish your CI setup

[Click here to finish setting up your workspace!](https://cloud.nx.app/connect/GJLsPizHFR)


## Run tasks

To build the library use:

```sh
npx nx build
<div align="center">
<img width="300px" src="./logo-gradient.svg" alt="Letify Logo">
</div>

<h3 align="center">It sounds like a spell and works like a charm ✨</h3>

<div align="center">
<a href="https://www.npmjs.com/package/@jsverse/letify">
<img src="https://img.shields.io/npm/v/@jsverse/letify.svg?style=flat-square" alt="npm version">
</a>
<a href="https://github.com/jsverse/letify/actions/workflows/ci.yml">
<img src="https://github.com/jsverse/letify/workflows/CI/badge.svg" alt="build status">
</a>
<a href="https://www.npmjs.com/package/@jsverse/letify">
<img src="https://img.shields.io/npm/dt/@jsverse/letify.svg?style=flat-square" alt="npm downloads">
</a>
<a href="https://github.com/jsverse/letify/blob/main/LICENSE">
<img src="https://img.shields.io/github/license/jsverse/letify.svg?style=flat-square" alt="license">
</a>
</div>

--------------------

Letify CLI helps Angular developers optimize their templates by scanning your files and detecting multiple async subscriptions to the same stream.

### Usage
To get started, install Letify CLI:

```bash
npm i -D @jsverse/letify
```
These targets are either [inferred automatically](https://nx.dev/concepts/inferred-tasks?utm_source=nx_project&utm_medium=readme&utm_campaign=nx_projects) or defined in the `project.json` or `package.json` files.

[More about running tasks in the docs &raquo;](https://nx.dev/features/run-tasks?utm_source=nx_project&utm_medium=readme&utm_campaign=nx_projects)

## Versioning and releasing

To version and release the library use

Then, run the command:
```bash
npx letify [analyze|fix] 'a/b.html' 'c/**/*.html' ...
```
npx nx release
```

Pass `--dry-run` to see what would happen without actually releasing the library.

[Learn more about Nx release &raquo;](hhttps://nx.dev/features/manage-releases?utm_source=nx_project&utm_medium=readme&utm_campaign=nx_projects)
* `analyze`: Identifies duplicate subscriptions in the specified files and generates a report.
* `fix`: Identifies duplicate subscriptions and replace duplications with a single `@let` declaration at the beginning of the template.

#### CI / Lint-
Letify will return an error exit code if any duplicate subscriptions are detected in the specified files.
It can be seamlessly integrated into your [lint-staged](https://github.com/lint-staged/lint-staged) or CI workflows to
prevent duplicate subscriptions from being committed.

[Learn more about Nx on CI](https://nx.dev/ci/intro/ci-with-nx#ready-get-started-with-your-provider?utm_source=nx_project&utm_medium=readme&utm_campaign=nx_projects)
#### Usage notes
* Letify ignores commented code and does not analyze it.
* Keyed reads (`data[prop] | async`) and function calls with arguments (`myMethod(value, ...) | async`) are currently not supported.
* You'll need Angular `>=18.1` to use the `@let` syntax, if you are using an older version, run the `analyze` command and
use alternatives to reuse your subscriptions.

## Install Nx Console
### Options

Nx Console is an editor extension that enriches your developer experience. It lets you run tasks, generate code, and improves code autocompletion in your IDE. It is available for VSCode and IntelliJ.
* `-r, --reporter <type>`: Specifies the report format:
* `html` (default): Generates an HTML report.
* `list`: Outputs a simple list of suggestions.
* `json`: Provides a JSON report for programmatic use.
* `-o, --open`: Automatically opens the HTML report once generated (default `true`.
* `--verify-convention` (default: `false`): Checks that stream names (observables) in the templates follow the convention of ending with a `$` sign.
* `--variable-suffix` (default: `value`): Adds a suffix to the declared variable in `fix` mode, mainly to avoid collisions.

[Install Nx Console &raquo;](https://nx.dev/getting-started/editor-setup?utm_source=nx_project&utm_medium=readme&utm_campaign=nx_projects)
### Debugging

## Useful links

Learn more:

- [Learn more about this workspace setup](https://nx.dev/nx-api/js?utm_source=nx_project&amp;utm_medium=readme&amp;utm_campaign=nx_projects)
- [Learn about Nx on CI](https://nx.dev/ci/intro/ci-with-nx?utm_source=nx_project&utm_medium=readme&utm_campaign=nx_projects)
- [Releasing Packages with Nx release](https://nx.dev/features/manage-releases?utm_source=nx_project&utm_medium=readme&utm_campaign=nx_projects)
- [What are Nx plugins?](https://nx.dev/concepts/nx-plugins?utm_source=nx_project&utm_medium=readme&utm_campaign=nx_projects)

And join the Nx community:
- [Discord](https://go.nx.dev/community)
- [Follow us on X](https://twitter.com/nxdevtools) or [LinkedIn](https://www.linkedin.com/company/nrwl)
- [Our Youtube channel](https://www.youtube.com/@nxdevtools)
- [Our blog](https://nx.dev/blog?utm_source=nx_project&utm_medium=readme&utm_campaign=nx_projects)
You can extend the default logs by setting the `DEBUG` environment variable:
```bash
DEBUG=letify:* npx letify ...
```
Supported namespaces: `letify:*|letify:fix`.
42 changes: 42 additions & 0 deletions favicon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 469e2ec

Please sign in to comment.