{"id":41824754,"url":"https://github.com/sasjs/core","last_synced_at":"2026-01-25T08:07:36.980Z","repository":{"id":37078734,"uuid":"277913295","full_name":"sasjs/core","owner":"sasjs","description":"Macros for SAS® App Developers","archived":false,"fork":false,"pushed_at":"2025-12-16T15:04:18.000Z","size":4064,"stargazers_count":130,"open_issues_count":3,"forks_count":17,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-12-20T06:05:13.304Z","etag":null,"topics":["sas","sasjs","viya"],"latest_commit_sha":null,"homepage":"https://core.sasjs.io","language":"SAS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sasjs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"custom":"https://getalby.com/p/sasjs"}},"created_at":"2020-07-07T20:16:43.000Z","updated_at":"2025-12-16T15:03:46.000Z","dependencies_parsed_at":"2022-07-07T21:03:44.007Z","dependency_job_id":"4a49b8b6-aed4-4f53-ba4e-7b261e939443","html_url":"https://github.com/sasjs/core","commit_stats":{"total_commits":813,"total_committers":22,"mean_commits":36.95454545454545,"dds":0.2607626076260763,"last_synced_commit":"c58b5c7a5249e9eb1ee579c3bbfb1f0764d30e31"},"previous_names":[],"tags_count":447,"template":false,"template_full_name":null,"purl":"pkg:github/sasjs/core","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sasjs%2Fcore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sasjs%2Fcore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sasjs%2Fcore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sasjs%2Fcore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sasjs","download_url":"https://codeload.github.com/sasjs/core/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sasjs%2Fcore/sbom","scorecard":{"id":801219,"data":{"date":"2025-08-11","repo":{"name":"github.com/sasjs/core","commit":"cdd2b88b09fad9ce8470592bd5887d1b7bf6cdaf"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.7,"checks":[{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: .github/SECURITY.md:1","Info: Found linked content: .github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: .github/SECURITY.md:1","Info: Found text in security policy: .github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 0/9 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/main.yml:1","Warn: no topLevel permission defined: .github/workflows/notmain.yml:1","Warn: no topLevel permission defined: .github/workflows/run-tests.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Pinned-Dependencies","score":3,"reason":"dependency not pinned by hash detected -- score normalized to 3","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/main.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/sasjs/core/main.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/main.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/sasjs/core/main.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/notmain.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/sasjs/core/notmain.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run-tests.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/sasjs/core/run-tests.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/run-tests.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/sasjs/core/run-tests.yml/main?enable=pin","Warn: containerImage not pinned by hash: .devcontainer/Dockerfile:5","Warn: containerImage not pinned by hash: .gitpod.dockerfile:1: pin your Docker image by updating gitpod/workspace-full to gitpod/workspace-full@sha256:b1195dfae7ee9a12a89d195247c3e1357cc6a18360a41473dbec67525ef434e2","Warn: npmCommand not pinned by hash: .github/workflows/notmain.yml:21","Info:   0 out of   4 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   2 containerImage dependencies pinned","Info:   3 out of   4 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 29 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-23T10:32:34.268Z","repository_id":37078734,"created_at":"2025-08-23T10:32:34.268Z","updated_at":"2025-08-23T10:32:34.268Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28748573,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T07:58:02.558Z","status":"ssl_error","status_checked_at":"2026-01-25T07:57:57.153Z","response_time":113,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["sas","sasjs","viya"],"created_at":"2026-01-25T08:07:36.085Z","updated_at":"2026-01-25T08:07:36.970Z","avatar_url":"https://github.com/sasjs.png","language":"SAS","funding_links":["https://getalby.com/p/sasjs"],"categories":[],"sub_categories":[],"readme":"# Macro Core\n\n[![npm package](https://img.shields.io/npm/v/@sasjs/core.svg)](http://npmjs.org/package/@sasjs/core)\n[![Github Workflow](https://github.com/sasjs/core/actions/workflows/main.yml/badge.svg)](https://github.com/sasjs/core/blob/main/.github/workflows/main.yml)\n![npm](https://img.shields.io/npm/dt/@sasjs/core)\n![GitHub top language](https://img.shields.io/github/languages/top/sasjs/core)\n[![GitHub closed issues](https://img.shields.io/github/issues-closed-raw/sasjs/core)](https://github.com/sasjs/core/issues?q=is%3Aissue+is%3Aclosed)\n[![GitHub issues](https://img.shields.io/github/issues-raw/sasjs/core)](https://github.com/sasjs/core/issues)\n![total lines](https://tokei.rs/b1/github/sasjs/core)\n\n\nMuch quality. Many standards. The **Macro Core** library exists to save time and development effort! Herein ye shall find a veritable host of MIT-licenced, production quality SAS macros. These are a mix of tools, utilities, functions and code generators that are useful in the context of [Application Development](https://sasapps.io) on the SAS platform (eg https://datacontroller.io). [Contributions](https://github.com/sasjs/core/blob/main/.github/CONTRIBUTING.md) are welcome.\n\nYou can download and compile them all in just two lines of SAS code:\n\n```sas\nfilename mc url \"https://raw.githubusercontent.com/sasjs/core/main/all.sas\";\n%inc mc;\n```\n\nDocumentation: https://core.sasjs.io\n\n## Components\n\n### BASE folder (All Platforms)\n\n- OS independent\n- Works on all SAS Platforms\n- No X command\n- Prefixes: `mf_`, `mp_`\n\n### DDL folder (All Platforms)\n\n- OS independent\n- Works on all SAS Platforms\n- No X command\n- Prefixes: `mddl_(lib)_` -\u003e where lib can be \"SAS\" (in relation to a SAS component) or \"DC\" (in relation to a Data Controller component)\n\nThis library will not be used for storing data entries (such as formats or datalines).  Where this becomes necessary in the future, a new repo will be created, in order to keep the NPM bundle size down (for the benefit of those looking to embed purely macros in their applications).\n\n### FCMP folder (All Platforms)\n\n- Function and macro names are identical, except for special cases\n- Prefixes: `mcf_`\n\nThe fcmp macros are used to generate fcmp functions, and can be used with or without the `proc fcmp` wrapper.\n\n### LUA folder\n\nWait - this is a macro library - what is LUA doing here?  Well, it is a little known fact that you CAN run LUA within a SAS Macro.  It has to be written to a text file with a `.lua` extension, from where you can `%include` it.  So, without using the `proc lua` wrapper.\n\nTo contribute, simply write your freeform LUA in the LUA folder.  Then run the `build.py`, which will convert all files with a \".lua\" extension into a macro wrapper with an `ml_` prefix (embedding the necessary data step put statements).  You can then use your module in any program by running:\n\n```sas\n/* compile the lua module */\n%ml_yourmodule()\n\n/* Execute.  Do not use the restart keyword! */\nproc lua;\nsubmit;\n  print(yourStuff);\nendsubmit;\nrun;\n```\n\n- Prefixes: `ml_`\n\n### META folder (SAS9 only)\n\nMacros used in SAS EBI, which connect to the metadata server.\n\n- OS independent\n- Metadata aware\n- No X command\n- Prefixes: `mm_`\n\n### METAX folder (SAS9 only)\n\n- OS specific\n- Metadata aware\n- X command enabled\n- Prefixes: `mmx_`\n\n### SERVER folder (@sasjs/server only)\nThese macros are used for building applications using [@sasjs/server](https://server.sasjs.io) - an open source REST API for Desktop SAS.\n\n- OS independent\n- @sasjs/server aware\n- No X command\n- Prefixes: `ms_`\n\n### VIYA folder (Viya only)\n\nMacros used for interfacing with SAS Viya.\n\n- OS independent\n- No X command\n- Prefixes: `mv_`, `mvf_`\n\n### XPLATFORM folder (Viya, Meta, and Server)\n\nSometimes it is helpful to use a macro that can be used interchangeably regardless of the server type on which is is running (SASVIYA, SAS9, SASJS).\n\n- OS independent\n- No X command\n- Prefixes: `mx_`\n\n## Installation\n\nFirst, download the repo to a location your SAS system can access. Then update your sasautos path to include the components you wish to have available, eg:\n\n```sas\n%let repoloc=/your/path/core;\noptions insert=(sasautos=\"\u0026repoloc/base\");\noptions insert=(sasautos=\"\u0026repoloc/ddl\");\noptions insert=(sasautos=\"\u0026repoloc/fcmp\");\noptions insert=(sasautos=\"\u0026repoloc/lua\");\noptions insert=(sasautos=\"\u0026repoloc/meta\");\noptions insert=(sasautos=\"\u0026repoloc/metax\");\noptions insert=(sasautos=\"\u0026repoloc/server\");\noptions insert=(sasautos=\"\u0026repoloc/viya\");\noptions insert=(sasautos=\"\u0026repoloc/xplatform\");\n```\n\nThe above can be done directly in your sas program, via an autoexec, or an initialisation program.\n\nAlternatively - for quick access - simply run the following! This file contains all the macros.\n\n```sas\nfilename mc url \"https://raw.githubusercontent.com/sasjs/core/main/all.sas\";\n%inc mc;\n```\n\n## Standards\n\n### File Properties\n\n- filenames much match macro names\n- filenames must be lowercase, without spaces\n- macro names must be lowercase\n- one macro per file\n- prefixes:\n  - _mcf__: macro compiled functions (proc fcmp)\n  - _mddl__: macros containing DDL (Data Definition Language)\n  - _mf__: macro functions (can be used in open code).\n  - _mfv__: macro functions that work only in Viya\n  - _ml__: macros that are used to compile LUA modules\n  - _mm__: metadata macros (interface with the metadata server).\n  - _mmx__: macros that use metadata and are XCMD enabled (working on both windows and unix)\n  - _mp__: macro procedures (which generate sas code)\n  - _ms__: macro procedures that will only work with [@sasjs/server](https://github.com/sasjs/server)\n  - _mv__: macro procedures that will only work in Viya\n  - _mx__: macros that work on Viya, SAS 9 EBI and SASjs Server\n- follow verb-noun convention\n- unix style line endings (lf)\n- individual lines should be no more than 80 characters long\n- UTF-8\n\n\n### Header Properties\n\nThe **Macro Core** documentation is created using [doxygen](http://www.doxygen.nl). A full list of attributes can be found [here](http://www.doxygen.nl/manual/commands.html) but the following are most relevant:\n\n- file. This needs to be present in order to be recognised by doxygen.\n- brief. This is a short (one sentence) description of the macro.\n- details. A longer description, which can contain doxygen [markdown](http://www.stack.nl/~dimitri/doxygen/manual/markdown.html).\n- param. Name of each input param followed by a description.\n- return. Explanation of what is returned by the macro.\n- version. The EARLIEST SAS version in which this macro is known to work.\n- author. Author name, contact details optional\n\nAll macros must be commented in the doxygen format, to enable the [online documentation](https://core.sasjs.io).\n\n#### Dependencies\nSAS code can contain one of two types of dependency - SAS Macros, and SAS Includes.  When compiling projects using the [SASjs CLI](https://cli.sasjs.io) the doxygen header is scanned for `  @li` items under the following headers:\n\n```sas\n  \u003ch4\u003e SAS Macros \u003c/h4\u003e\n  @li mf_nobs.sas\n  @li mm_assignlib.sas\n\n  \u003ch4\u003e SAS Includes \u003c/h4\u003e\n  @li somefile.ddl SOMEFREF\n  @li someprogram.sas FREFTWO\n```\n\nThe CLI can then extract all the dependencies and insert as precode (SAS Macros) or in a temp engine fileref (SAS Includes) when creating SAS Jobs and Services (and Tests).\n\nWhen contributing to this library, it is therefore important to ensure that all dependencies are listed in the header in this format.\n\n\n### Coding Standards\n\n- Indentation = 2 spaces. No tabs!\n- no trailing white space\n- no invisible characters, other than spaces. If invisibles are needed, use hex literals.\n- Macro variables should not have the trailing dot (`\u0026var` not `\u0026var.`) unless necessary to prevent incorrect resolution\n- The closing `%mend;` should **not** contain the macro name.\n- All macros should be defined with brackets, even if no variables are needed - ie `%macro x();` not `%macro x;`\n- Mandatory parameters should be positional, all optional parameters should be keyword (var=) style.\n- All dataset references must be 2 level (eg `work.blah`, not `blah`). This is to avoid contention when options [DATASTMTCHK](https://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000279064.htm)=ALLKEYWORDS is in effect, or the [USER](https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/lrcon/n18m1vkqmeo4esn1moikt23zhp8s.htm) library is active.\n- Avoid naming collisions! All macro variables should be local scope. Use system generated work tables where possible - eg `data ; set sashelp.class; run; data \u0026output; set \u0026syslast; run;`\n- Where global macro variables are absolutely necessary, they should make use of `\u0026sasjs_prefix` - see mp_init.sas\n- The use of `quit;` for `proc sql` is optional unless you are looking to benefit from the timing statistics.\n- Use [sasjs lint](https://github.com/sasjs/lint)!\n\n## General Notes\n\n- All macros should be compatible with SAS versions from support level B and above (so currently 9.3 and later). If an earlier version is not supported, then the macro should say as such in the header documentation, and exit gracefully.\n- It's [best to avoid](https://git.datacontroller.io/dc/dc/issues/50) special / non-ASCII characters for compatibility with the widest variety of SAS installations.\n\n## Breaking Changes\n\nWe are currently on major release v4.  Breaking changes should be marked with the [deprecated](https://www.doxygen.nl/manual/commands.html#cmddeprecated) doxygen tag.  The following changes are planned when the next major/breaking release (v5) becomes necessary:\n\n* mcf_xxx macros to have `insert_cmplib` option deprecated (the option is now checked automatically with value inserted only if needed)\n* mcf_xxx macros to have `wrap=` option defaulted to YES for convenience.  Set this option explicitly to avoid issues.\n* mf_getuniquelibref.sas to have the deprecated maxtries parameter removed (no longer needed)\n* mp_abort.sas will have the redundant type= parameter removed.\n* mp_coretable.sas will be replaced by the standalone macros in the `ddl` folder (which are already available)\n* mp_getddl.sas to be renamed to mp_ds2ddl.sas (consistent with other ds2xxx macros).  A wrapper macro is already in place, and you are able to use this immediately.  The default for SHOWLOG will also be YES instead of NO.\n* mp_testservice.sas to be renamed as mp_execute.sas (as it doesn't actually test anything)\n\n## Star Gazing\n\nIf you find this library useful, please leave a [star](https://github.com/sasjs/core/stargazers) and help us grow our star graph!\n\n![](https://starchart.cc/sasjs/core.svg)\n\n## Other SAS Repositories\n\nThe following repositories are also worth checking out:\n\n* [chris-swenson/sasmacros](https://github.com/chris-swenson/sasmacros)\n* [Criptic/sas_snippets](https://github.com/Criptic/sas_snippets)\n* [greg-wotton/sas-programs](https://github.com/greg-wootton/sas-programs)\n* [KatjaGlassConsulting/SMILE-SmartSASMacros](https://github.com/KatjaGlassConsulting/SMILE-SmartSASMacros)\n* [paul-canals/toolbox](https://github.com/paul-canals/toolbox)\n* [rogerjdeangelis](https://github.com/rogerjdeangelis)\n* [SASJedi/sas-macros](https://github.com/SASJedi/sas-macros)\n* [scottbass/sas](https://github.com/scottbass/SAS)\n* [xieliaing/SAS](https://github.com/xieliaing/SAS)\n* [yabwon/sas_packages](https://github.com/yabwon/SAS_PACKAGES)\n\n## Contributors ✨\n\u003c!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --\u003e\n[![All Contributors](https://img.shields.io/badge/all_contributors-15-orange.svg?style=flat-square)](#contributors-)\n\u003c!-- ALL-CONTRIBUTORS-BADGE:END --\u003e\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/allanbowe\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/4420615?v=4?s=100\" width=\"100px;\" alt=\"Allan Bowe\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAllan Bowe\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#business-allanbowe\" title=\"Business development\"\u003e💼\u003c/a\u003e \u003ca href=\"https://github.com/sasjs/core/commits?author=allanbowe\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#content-allanbowe\" title=\"Content\"\u003e🖋\u003c/a\u003e \u003ca href=\"https://github.com/sasjs/core/commits?author=allanbowe\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"#infra-allanbowe\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e \u003ca href=\"#maintenance-allanbowe\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e \u003ca href=\"#mentoring-allanbowe\" title=\"Mentoring\"\u003e🧑‍🏫\u003c/a\u003e \u003ca href=\"#question-allanbowe\" title=\"Answering Questions\"\u003e💬\u003c/a\u003e \u003ca href=\"https://github.com/sasjs/core/pulls?q=is%3Apr+reviewed-by%3Aallanbowe\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e \u003ca href=\"https://github.com/sasjs/core/commits?author=allanbowe\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/rafgag\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/69139928?v=4?s=100\" width=\"100px;\" alt=\"rafgag\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003erafgag\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sasjs/core/commits?author=rafgag\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/tmoody\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/79837106?v=4?s=100\" width=\"100px;\" alt=\"Trevor Moody\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTrevor Moody\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sasjs/core/commits?author=tmoody\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://krishna-acondy.io/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/2980428?v=4?s=100\" width=\"100px;\" alt=\"Krishna Acondy\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eKrishna Acondy\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sasjs/core/commits?author=krishna-acondy\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#infra-krishna-acondy\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e \u003ca href=\"#blog-krishna-acondy\" title=\"Blogposts\"\u003e📝\u003c/a\u003e \u003ca href=\"#content-krishna-acondy\" title=\"Content\"\u003e🖋\u003c/a\u003e \u003ca href=\"#ideas-krishna-acondy\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#video-krishna-acondy\" title=\"Videos\"\u003e📹\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/saadjutt01\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/8914650?v=4?s=100\" width=\"100px;\" alt=\"Muhammad Saad \"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMuhammad Saad \u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sasjs/core/commits?author=saadjutt01\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#ideas-saadjutt01\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://www.erudicat.com/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/25773492?v=4?s=100\" width=\"100px;\" alt=\"Yury Shkoda\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eYury Shkoda\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sasjs/core/commits?author=YuryShkoda\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#infra-YuryShkoda\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e \u003ca href=\"#video-YuryShkoda\" title=\"Videos\"\u003e📹\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/medjedovicm\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/18329105?v=4?s=100\" width=\"100px;\" alt=\"Mihajlo Medjedovic\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMihajlo Medjedovic\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#infra-medjedovicm\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/kkchandok\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/46090627?v=4?s=100\" width=\"100px;\" alt=\"kkchandok\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ekkchandok\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#ideas-kkchandok\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/VladislavParhomchik\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/83717836?v=4?s=100\" width=\"100px;\" alt=\"Vladislav Parhomchik\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eVladislav Parhomchik\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sasjs/core/commits?author=VladislavParhomchik\" title=\"Tests\"\u003e⚠️\u003c/a\u003e \u003ca href=\"https://github.com/sasjs/core/pulls?q=is%3Apr+reviewed-by%3AVladislavParhomchik\" title=\"Reviewed Pull Requests\"\u003e👀\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/vznesh\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/28916792?v=4?s=100\" width=\"100px;\" alt=\"Vignesh T.\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eVignesh T.\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sasjs/core/issues?q=author%3Avznesh\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/yabwon\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/9314894?v=4?s=100\" width=\"100px;\" alt=\"Bart Jablonski\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eBart Jablonski\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sasjs/core/commits?author=yabwon\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://bandism.net/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/22633385?v=4?s=100\" width=\"100px;\" alt=\"Ikko Ashimine\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eIkko Ashimine\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sasjs/core/commits?author=eltociear\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/henrik-forsell\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/109935936?v=4?s=100\" width=\"100px;\" alt=\"Henrik Forsell\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eHenrik Forsell\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sasjs/core/commits?author=henrik-forsell\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://rudvfaden.github.io/\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/2445577?v=4?s=100\" width=\"100px;\" alt=\"Rud Faden\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRud Faden\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sasjs/core/commits?author=rudvfaden\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/andyjessen\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/62343929?v=4?s=100\" width=\"100px;\" alt=\"andyjessen\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eandyjessen\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/sasjs/core/commits?author=andyjessen\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsasjs%2Fcore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsasjs%2Fcore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsasjs%2Fcore/lists"}