Components¶
SASjs is "batteries included": six pieces that cover building, running and delivering a SAS application. Each one stands on its own - you can adopt the lint rules without the CLI, or the CLI without the adapter - and they are designed to work together.
At a glance¶
| Component | Package | Runs | Does |
|---|---|---|---|
| CLI | @sasjs/cli |
Node, terminal or CI | Compiles, builds, deploys, tests, lints, documents |
| Macro Core | @sasjs/core |
Inside SAS | The macros services are written with |
| Adapter | @sasjs/adapter |
Browser or Node | Talks to SAS from JavaScript |
| Server | @sasjs/server |
Node + a SAS binary | A REST API, drive and app portal on Foundation SAS |
| Lint | @sasjs/lint |
Node, editor | SAS code-quality rules |
| VS Code | extension | Editor | Highlighting, lint, execution, build and deploy |
-
create,compile,build,deploy,test,lint,doc- the project, from the terminal or a pipeline. -
About 200 SAS macros: JSON output, table transfer, metadata, file operations, error handling.
-
One JavaScript API for Viya, SAS 9 and server: auth, service calls, tables, files, streamed apps.
-
An open-source web server on the SAS binary - a REST API, a drive, and an app portal.
-
Configurable code-quality rules, in the editor and in CI, from one
.sasjslint. -
Highlighting, lint diagnostics, execution and the build commands, in the editor.
How they fit together¶
your service (.sas) + macro core -> sasjs compile -> compiled program
|
sasjs build -> artefact per target <----+
|
sasjs deploy -> Viya jobs | SAS 9 stored processes | SASjs Server drive
|
browser / Node app -- adapter --> the deployed service <------+
The compiler embeds the macros a service uses, so the program that runs in production carries its own dependencies at the version that was reviewed - there is no SASAUTOS on the server to disagree with the repository.
The next step depends on what you are building: services for a backend called from a browser, React or Angular for a full application, or Backend SAS for a delivery pipeline.