Skip to content

Latest commit

 

History

History
3115 lines (2383 loc) · 151 KB

sasjsconfig.md

File metadata and controls

3115 lines (2383 loc) · 151 KB

SASjs Config File

Title: SASjs Config File

Type object
Required No
Additional properties [Any type: allowed]
Default {}
Defined in https://raw.githubusercontent.com/sasjs/utils/main/src/types/sasjsconfig-schema.json

Description: The SASjs Config file provides the settings and structure for your SASjs project.

Example:

{
    "macroFolders": [
        "macros"
    ],
    "programFolders": [
        "programs"
    ],
    "binaryFolders": [
        "binaries"
    ],
    "defaultTarget": "viya",
    "targets": [
        {
            "name": "viya",
            "serverType": "SASVIYA",
            "serverUrl": "https://sas.sasjs.com",
            "appLoc": "/Public/app",
            "contextName": "SAS Job Execution compute context",
            "deployConfig": {
                "deployServicePack": true,
                "deployScripts": [
                    "sasjsbuild/myviyadeploy.sas"
                ]
            },
            "serviceConfig": {
                "serviceFolders": [
                    "targets/viya/services/admin"
                ],
                "initProgram": "build/serviceinit.sas",
                "termProgram": "build/serviceinit.sas",
                "macroVars": {
                    "name": "viyavalue",
                    "extravar": "this too"
                }
            },
            "jobConfig": {
                "jobFolders": [],
                "initProgram": "",
                "termProgram": "",
                "macroVars": {}
            },
            "streamConfig": {
                "assetPaths": [],
                "streamWeb": false,
                "streamWebFolder": "webv",
                "webSourcePath": "dist"
            },
            "testConfig": {
                "initProgram": "sasjs/tests/testinit.sas",
                "termProgram": "sasjs/tests/testterm.sas",
                "macroVars": {
                    "testVar": "testValue"
                },
                "testSetUp": "sasjs/tests/testsetup.sas",
                "testTearDown": "sasjs/tests/testteardown.sas"
            },
            "macroFolders": [
                "targets/viya/macros"
            ],
            "programFolders": [],
            "binaryFolders": [
                "binaries"
            ]
        },
        {
            "name": "sas9",
            "serverType": "SAS9",
            "serverUrl": "https://sas.sasjs.com:7980",
            "appLoc": "/User Folders/&sysuserid/My Folder",
            "serverName": "Foundation",
            "repositoryName": "SASApp",
            "buildConfig": {
                "buildOutputFileName": "mysas9deploy.sas",
                "initProgram": "",
                "termProgram": "",
                "macroVars": {}
            },
            "deployConfig": {
                "deployScripts": [
                    "build/deploysas9.sh"
                ],
                "deployServicePack": false
            },
            "serviceConfig": {
                "serviceFolders": [
                    "targets/sas9/services/admin"
                ],
                "initProgram": "",
                "termProgram": "build/servicetermother.sas",
                "macroVars": {}
            },
            "streamConfig": {
                "assetPaths": [],
                "streamWeb": false,
                "streamWebFolder": "web9",
                "webSourcePath": "dist"
            },
            "testConfig": {
                "initProgram": "sasjs/tests/testinit.sas",
                "termProgram": "sasjs/tests/testterm.sas",
                "macroVars": {
                    "testVar": "testValue"
                },
                "testSetUp": "sasjs/tests/testsetup.sas",
                "testTearDown": "sasjs/tests/testteardown.sas"
            },
            "macroFolders": [
                "targets/sas9/macros"
            ],
            "programFolders": [],
            "binaryFolders": [
                "binaries"
            ]
        }
    ]
}
Property Pattern Type Deprecated Definition Title/Description
- binaryFolders No array No - The binaryFolders array
- buildOutputFolder No string No - buildOutputFolder
- defaultTarget No string No - Default Target
- docConfig No object No - The docConfig schema
- httpsAgentOptions No object No - httpsAgentOptions
- buildConfig No object No - buildConfig
- deployConfig No object No - The deployConfig schema
- serviceConfig No object No - The serviceConfig schema
- jobConfig No object No - The jobConfig schema
- streamConfig No object No - streamConfig
- testConfig No object No - testConfig
- macroFolders No array No - The macroFolders array
- programFolders No array No - The programFolders array
- syncFolder No string No - Sync Folder
- targets No array No - The targets array

1. Property SASjs Config File > binaryFolders

Title: The binaryFolders array

Type array
Required No

Description: These local folders are searched for Binary Files when running sasjs compile. Folders are relative to the sasjs/sasjsconfig.json file.

Example:

[
    "binaries",
    "../../more_binaries"
]
Array restrictions
Min items N/A
Max items N/A
Items unicity False
Additional items False
Tuple validation N/A

2. Property SASjs Config File > buildOutputFolder

Title: buildOutputFolder

Type string
Required No
Default "sasjsbuild"

Description: In a local config, outputs go to the sasjsbuild folder by default. In global, the default is ~/.sasjsbuild.

Examples:

"sasjsbuild"
".sasjsbuild"

3. Property SASjs Config File > defaultTarget

Title: Default Target

Type string
Required No
Default "viya"

Description: If a target is not specified, this target is used by default. The default target must exist in the (local) targets array.

Example:

"viya"

4. Property SASjs Config File > docConfig

Title: The docConfig schema

Type object
Required No
Additional properties [Any type: allowed]
Default {"dataControllerUrl": "https://mysasserver.com/web/datacontroller/#", "enableLineage": true, "doxyContent": {"readMe": "../../README.md"}}

Description: SASjs uses doxygen to auto-generate HTML documentation using the headers in your SAS programs, macros, services & jobs. For more info, see https://cli.sasjs.io/doc. Some properties are taken from package.json (such as the project Name).

Example:

{
    "displayMacroCore": true,
    "outDirectory": "/some/output/directory",
    "dataControllerUrl": "https://mysasserver.com/web/datacontroller/#",
    "enableLineage": true,
    "doxyContent": {
        "readMe": "../../my/custom/homepage.md",
        "path": "my/custom/doxy/folder"
    }
}
Property Pattern Type Deprecated Definition Title/Description
- displayMacroCore No boolean No - The displayMacroCore docConfig option
- outDirectory No string No - The outDirectory docConfig option
- dataControllerUrl No string No - The dataControllerUrl docConfig option
- enableLineage No boolean No - Enable Lineage
- doxyContent No object No - doxyContent

4.1. Property SASjs Config File > docConfig > displayMacroCore

Title: The displayMacroCore docConfig option

Type boolean
Required No
Default true

Description: The CLI will autocompile macro dependencies that exist in the SASjs Macro Core library. These will also show in the documentation under 'node_modules'. If you'd prefer not to show these in the rendered docs, set this value to false.

Example:

true

4.2. Property SASjs Config File > docConfig > outDirectory

Title: The outDirectory docConfig option

Type string
Required No
Default "sasjsbuild/doc"

Description: The location to which the generated HTML SAS documentation is written. If missing, or left blank, the files will be written to the sasjsbuild/doc directory (default behaviour).

Example:

"/my/preferred/docs/directory"

4.3. Property SASjs Config File > docConfig > dataControllerUrl

Title: The dataControllerUrl docConfig option

Type string
Required No
Default ""

Description: Provide the full URL to Data Controller so that sasjs doc can link the lineage diagram directly to the table viewer in Data Controller. If left blank, or undefined, no links will be generated.

Example:

"https://yourserver.co.uk/dcviya/#"

4.4. Property SASjs Config File > docConfig > enableLineage

Title: Enable Lineage

Type boolean
Required No
Default true

Description: If true, sasjs doc will generate and display Data Lineage from Jobs and Services.

4.5. Property SASjs Config File > docConfig > doxyContent

Title: doxyContent

Type object
Required No
Additional properties [Any type: allowed]
Default {}

Description: Configuration of the Doxyfile variables

Example:

{
    "favIcon": "favicon.ico",
    "footer": "new_footer.html",
    "header": "new_header.html",
    "layout": "DoxygenLayout.xml",
    "logo": "logo.png",
    "readMe": "../../README.md",
    "stylesheet": "new_stylesheet.css",
    "path": "sasjs/doxy"
}
Property Pattern Type Deprecated Definition Title/Description
- favIcon No string No - Doxygen favicon
- footer No string No - Doxygen footer
- header No string No - Doxygen header
- layout No string No - Doxygen Layout XML File
- logo No string No - Doxygen Logo
- readMe No string No - Doxygen Homepage
- stylesheet No string No - Doxygen CSS
- path No string No - Doxygen Path

4.5.1. Property SASjs Config File > docConfig > doxyContent > favIcon

Title: Doxygen favicon

Type string
Required No
Default "favicon.ico"

Description: The favicon used in the doxygen documentation

4.5.2. Property SASjs Config File > docConfig > doxyContent > footer

Title: Doxygen footer

Type string
Required No
Default "new_footer.html"

Description: The footer HTML file used in the doxygen documentation

4.5.3. Property SASjs Config File > docConfig > doxyContent > header

Title: Doxygen header

Type string
Required No
Default "new_header.html"

Description: The header HTML file used in the doxygen documentation

4.5.4. Property SASjs Config File > docConfig > doxyContent > layout

Title: Doxygen Layout XML File

Type string
Required No
Default "DoxygenLayout.xml"

Description: The layout XML file used to build the doxygen documentation

4.5.5. Property SASjs Config File > docConfig > doxyContent > logo

Title: Doxygen Logo

Type string
Required No
Default "logo.png"

Description: The logo file used by doxygen

4.5.6. Property SASjs Config File > docConfig > doxyContent > readMe

Title: Doxygen Homepage

Type string
Required No
Default "../../README.md"

Description: The file used to generate the doxygen homepage (defaults to the readme.md)

4.5.7. Property SASjs Config File > docConfig > doxyContent > stylesheet

Title: Doxygen CSS

Type string
Required No
Default "new_stylesheet.css"

Description: The CSS file used to extend Doxygen

4.5.8. Property SASjs Config File > docConfig > doxyContent > path

Title: Doxygen Path

Type string
Required No
Default "sasjs/doxy"

Description: The path to the Doxygen configuration files (relative to sasjs/sasjsconfig.json)

5. Property SASjs Config File > httpsAgentOptions

Title: httpsAgentOptions

Type object
Required No
Additional properties [Any type: allowed]

Description: Configure https agent by setting all supported attribute such as key, cert, ca, rejectUnauthorized and requestCert

Example:

{
    "allowInsecureRequests": false,
    "caPath": "path/to/caFile",
    "keyPath": "path/to/keyFile",
    "certPath": "path/to/certFile",
    "requestCert": false,
    "rejectUnauthorized": true
}
Property Pattern Type Deprecated Definition Title/Description
- allowInsecureRequests No boolean No - allowInsecureRequests
- caPath No string No - caPath
- keyFile No string No - keyFile
- certFile No string No - certFile
- requestCert No boolean No - requestCert
- rejectUnauthorized No boolean No - rejectUnauthorized

5.1. Property SASjs Config File > httpsAgentOptions > allowInsecureRequests

Title: allowInsecureRequests

Type boolean
Required No
Default false

Description: If you are having certificate errors connecting to SAS, that cannot be properly resolved, try setting this value to true. This option only has an effect if rejectUnauthorized is not present.

Examples:

true
false

5.2. Property SASjs Config File > httpsAgentOptions > caPath

Title: caPath

Type string
Required No

Description: Optionally override the trusted CA certificates. Default is to trust the well-known CAs curated by Mozilla. Mozilla's CAs are completely replaced when CAs are explicitly specified using this option.

Example:

"path/to/caFile"

5.3. Property SASjs Config File > httpsAgentOptions > keyFile

Title: keyFile

Type string
Required No

Description: Private keys in PEM format. PEM allows the option of private keys being encrypted. Encrypted keys will be decrypted with options.passphrase. Multiple keys using different algorithms can be provided either as an array of unencrypted key strings or buffers, or an array of objects in the form {pem: <string|buffer>[, passphrase: ]}. The object form can only occur in an array. object.passphrase is optional. Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase if it is not.

Example:

"path/to/keyFile"

5.4. Property SASjs Config File > httpsAgentOptions > certFile

Title: certFile

Type string
Required No

Description: Cert chains in PEM format. One cert chain should be provided per private key. Each cert chain should consist of the PEM formatted certificate for a provided private key, followed by the PEM formatted intermediate certificates (if any), in order, and not including the root CA (the root CA must be pre-known to the peer, see ca). When providing multiple cert chains, they do not have to be in the same order as their private keys in key. If the intermediate certificates are not provided, the peer will not be able to validate the certificate, and the handshake will fail.

Example:

"path/to/certFile"

5.5. Property SASjs Config File > httpsAgentOptions > requestCert

Title: requestCert

Type boolean
Required No
Default false

Description: If true the server will request a certificate from clients that connect and attempt to verify that certificate. Defaults to false.

Examples:

true
false

5.6. Property SASjs Config File > httpsAgentOptions > rejectUnauthorized

Title: rejectUnauthorized

Type boolean
Required No
Default true

Description: If true the server will reject any connection which is not authorized with the list of supplied CAs. This option only has an effect if requestCert is true.

Examples:

true
false

6. Property SASjs Config File > buildConfig

Title: buildConfig

Type object
Required No
Additional properties [Any type: allowed]

Description: Dictates which files get compiled into the build program (.sas), used to deploy services into SAS 9 or Viya environments (without a client/secret). You may use this config to include build specific macros, programs or macro variables - which is run a single time, on deployment - for things like database creation, or exporting a SAS 9 SPK after service creation.

Example:

{
    "initProgram": "build/buildinit.sas",
    "termProgram": "build/buildterm.sas",
    "macroVars": {
        "name": "value",
        "numvar": "42"
    },
    "buildOutputFileName": "buildpack.sas",
    "buildOutputFolder": "sasjsbuild",
    "buildResultsFolder": "sasjsresults"
}
Property Pattern Type Deprecated Definition Title/Description
- buildOutputFileName No string No - buildOutputFileName
- buildOutputFolder No string No - buildOutputFolder
- buildResultsFolder No string No - buildResultsFolder
- initProgram No string No - The buildConfig initProgram
- termProgram No string No - The buildConfig termProgram
- macroVars No object No - The buildConfig macro variables

6.1. Property SASjs Config File > buildConfig > buildOutputFileName

Title: buildOutputFileName

Type string
Required No

Description: The name of the generated .sas program, which can be used to deploy the app using only SAS Studio. By default, this will be the name of the target.

Examples:

"viya.sas"
"sas9.sas"

6.2. Property SASjs Config File > buildConfig > buildOutputFolder

Title: buildOutputFolder

Type string
Required No
Default "sasjsbuild"

Description: The name of the folder containing the compiled output. The sasjs build command will take all of the subfolders here as inputs to create the build pack. By default this will be named sasjsbuild.

6.3. Property SASjs Config File > buildConfig > buildResultsFolder

Title: buildResultsFolder

Type string
Required No
Default "sasjsresults"

Description: The name of the folder containing the output (eg logs, ODS output) from sasjs run. By default this will be named sasjsresults.

6.4. Property SASjs Config File > buildConfig > initProgram

Title: The buildConfig initProgram

Type string
Required No
Default "sasjs/buildinit.sas"

Description: The path to a .sas program that will be inserted at the start of the build .sas program (created when running sasjs build).

6.5. Property SASjs Config File > buildConfig > termProgram

Title: The buildConfig termProgram

Type string
Required No
Default "sasjs/buildterm.sas"

Description: The path to a .sas program that will be inserted at the end of the build .sas program (created when running sasjs build).

6.6. Property SASjs Config File > buildConfig > macroVars

Title: The buildConfig macro variables

Type object
Required No
Additional properties [Any type: allowed]
Default {}

Description: A series of name value pairs that will be turned into SAS macro variables in the build .sas program (generated when running sasjs build). The example provided will generate sas code as follows:

%let name=value;
%let numvar=42;

Example:

{
    "name": "value",
    "numvar": "42"
}

7. Property SASjs Config File > deployConfig

Title: The deployConfig schema

Type object
Required No
Additional properties [Any type: allowed]
Default {}

Description: The deployConfig object enables settings that relate to the deployment of a SAS app - be that Viya, or SAS 9, or a pure Base environment.

Examples:

{
    "deployScripts": [
        "build/deployscript.sh"
    ]
}
{
    "deployScripts": [
        "build/deployscript.sh"
    ],
    "deployServicePack": true
}
Property Pattern Type Deprecated Definition Title/Description
- deployScripts No array No - The deployConfig deployScripts array
- deployServicePack No boolean No - The deployConfig deployServicePack flag

7.1. Property SASjs Config File > deployConfig > deployScripts

Title: The deployConfig deployScripts array

Type array
Required No
Default []

Description: These scripts are executed when running sasjs deploy. If the file is a .sas file, it is executed on the SAS server (Viya only). Otherwise it is executed locally. These scripts are run AFTER the deployment of the servicepack, if deployServicePack:true (Viya only).

Example:

[
    "build/deployscript.sh",
    "build/myprogram.sas"
]
Array restrictions
Min items N/A
Max items N/A
Items unicity False
Additional items False
Tuple validation N/A

7.2. Property SASjs Config File > deployConfig > deployServicePack

Title: The deployConfig deployServicePack flag

Type boolean
Required No
Default [false]

Description: If set to true the json pack produced by sasjs build will be auto-deployed to the appLoc of the specified target (creating all jobs and services in the SAS folder tree). Currently only Viya is supported for this flag.

8. Property SASjs Config File > serviceConfig

Title: The serviceConfig schema

Type object
Required No
Additional properties [Any type: allowed]
Default {}

Description: The serviceConfig object defines how SASjs web services are compiled. Web services differ from jobs in that they include some fixed pre-code (eg the macros to stream out the result json).

Example:

{
    "serviceFolders": [
        "services/common",
        "services/admin"
    ],
    "initProgram": "build/serviceinit.sas",
    "termProgram": "build/serviceterm.sas",
    "macroVars": {
        "mac1": "value",
        "mac2": "42"
    }
}
Property Pattern Type Deprecated Definition Title/Description
- serviceFolders No array No - The serviceConfig serviceFolders array
- initProgram No string No - The serviceConfig initProgram
- termProgram No string No - The serviceConfig termProgram
- macroVars No object No - The `serviceConfig` macroVars

8.1. Property SASjs Config File > serviceConfig > serviceFolders

Title: The serviceConfig serviceFolders array

Type array
Required No
Default []

Description: When running sasjs compile, all programs in the folders defined in this array are compiled and placed into same-named folders under sasjsbuild/services. They will be compiled as services (so, with the service pre-code). Folders can be absolute, or relative to the sasjs folder.

Example:

[
    "services/common",
    "services/admin"
]
Array restrictions
Min items N/A
Max items N/A
Items unicity False
Additional items False
Tuple validation N/A

8.2. Property SASjs Config File > serviceConfig > initProgram

Title: The serviceConfig initProgram

Type string
Required No
Default ""

Description: The serviceConfig initProgram is a .sas file that is inserted at the start of every SAS service (after compiled macros and any macroVars, and before the service itself).

Example:

"build/serviceinit.sas"

8.3. Property SASjs Config File > serviceConfig > termProgram

Title: The serviceConfig termProgram

Type string
Required No
Default ""

Description: The serviceConfig termProgram is inserted at the end of every service as part of sasjs compile.

Example:

"build/serviceterm.sas"

8.4. Property SASjs Config File > serviceConfig > macroVars

Title: The serviceConfig macroVars

Type object
Required No
Additional properties [Any type: allowed]
Default {}

Description: This object allows sasjs compile to insert specific macro variables at the start of every service. In this case, the code generated would be:

%let mac1=value;
%let mac2=42;

Example:

{
    "mac1": "value",
    "mac2": "42"
}

9. Property SASjs Config File > jobConfig

Title: The jobConfig schema

Type object
Required No
Additional properties [Any type: allowed]
Default {}

Description: The jobConfig object defines how SASjs Jobs are compiled.

Example:

{
    "jobFolders": [
        "jobs/extract",
        "jobs/load"
    ],
    "initProgram": "jobs/jobinit.sas",
    "termProgram": "jobs/jobterm.sas",
    "macroVars": {
        "mac1": "value",
        "mac2": "42"
    }
}
Property Pattern Type Deprecated Definition Title/Description
- jobFolders No array No - The jobConfig jobFolders array
- initProgram No string No - The jobConfig initProgram
- termProgram No string No - The jobConfig termProgram
- macroVars No object No - The `jobConfig` macroVars

9.1. Property SASjs Config File > jobConfig > jobFolders

Title: The jobConfig jobFolders array

Type array
Required No
Default []

Description: When running sasjs compile, all programs in the local folders defined in this array are compiled and placed into same-named folders under sasjsbuild/jobs. Folders can be absolute, or relative to the local project /sasjs folder.

Example:

[
    "jobs/extract",
    "jobs/transform",
    "jobs/load"
]
Array restrictions
Min items N/A
Max items N/A
Items unicity False
Additional items False
Tuple validation N/A

9.2. Property SASjs Config File > jobConfig > initProgram

Title: The jobConfig initProgram

Type string
Required No
Default ""

Description: The jobConfig initProgram is a local .sas file that is inserted at the start of every SAS Job (after compiled macros and any macroVars, and before the Job itself).

Example:

"jobs/jobinit.sas"

9.3. Property SASjs Config File > jobConfig > termProgram

Title: The jobConfig termProgram

Type string
Required No
Default ""

Description: The jobConfig termProgram is inserted at the end of every Job as part of sasjs compile.

Example:

"jobs/jobterm.sas"

9.4. Property SASjs Config File > jobConfig > macroVars

Title: The jobConfig macroVars

Type object
Required No
Additional properties [Any type: allowed]
Default {}

Description: This object allows sasjs compile to insert specific macro variables at the start of every Job. In this case, the code generated would be:

%let mac1=value;
%let mac2=42;

Example:

{
    "mac1": "value",
    "mac2": "42"
}

10. Property SASjs Config File > streamConfig

Title: streamConfig

Type object
Required No
Additional properties [Any type: allowed]
Default {}

Description: SASjs allows a local web app to be compiled such that all html, css, javascript, and other assets such as png or mp4 are converted into web services and streamed directly from SAS.

This approach is convenient as it bypasses the need to deploy to a web server.

Example:

{
    "assetPaths": [],
    "streamWeb": false,
    "streamWebFolder": "webv",
    "webSourcePath": "dist",
    "streamLogo": "logo.png"
}
Property Pattern Type Deprecated Definition Title/Description
- assetPaths No array No - The streamConfig assetPaths array
- streamLogo No string No - Icon shown in AppStream (sasjs/server)
+ streamWeb No boolean No - The streamConfig streamWeb flag
- streamWebFolder No string No - The streamConfig streamWebFolder
- webSourcePath No string No - The webSourcePath schema
- streamServiceName No string No - streamServiceName Schema

10.1. Property SASjs Config File > streamConfig > assetPaths

Title: The streamConfig assetPaths array

Type array
Required No
Default []

Description: An array of local folders. All assets placed in these folders are converted into web services - example file types could be png, svg, mp3, mp4, excel - anything really.

Example:

[
    "/myassets"
]
Array restrictions
Min items N/A
Max items N/A
Items unicity False
Additional items False
Tuple validation N/A

10.2. Property SASjs Config File > streamConfig > streamLogo

Title: Icon shown in AppStream (sasjs/server)

Type string
Required No
Default "logo.png"

Description: Provide the location of a square image, under the webSourcePath. Used as the display icon on the appStream page.

Examples:

"logo.png"
"favicon.ico"

10.3. Property SASjs Config File > streamConfig > streamWeb

Title: The streamConfig streamWeb flag

Type boolean
Required Yes
Default false

Description: When set to true, frontend files saved in the webSourcePath will be converted to streaming services in the streamWebFolder in SAS.

Example:

true

10.4. Property SASjs Config File > streamConfig > streamWebFolder

Title: The streamConfig streamWebFolder

Type string
Required No
Default "webv"

Description: This is the target SAS folder (relative to the appLoc) where the compiled web assets will be created.

10.5. Property SASjs Config File > streamConfig > webSourcePath

Title: The webSourcePath schema

Type string
Required No
Default "dist"

Description: When streamConfig is set to true, all files in this folder will be converted to streaming web services. The index.html will be taken as a baseline, and all relative URLS will be prefixed such that the links still work and the assets still load.

10.6. Property SASjs Config File > streamConfig > streamServiceName

Title: streamServiceName Schema

Type string
Required No
Default "clickme.sas"

Description: The name of the service containing the index.html for a streaming web app. Defaults to clickme and is always deployed under the appLoc/services SAS Folder.

11. Property SASjs Config File > testConfig

Title: testConfig

Type object
Required No
Additional properties [Any type: allowed]
Default {"initProgram": "sasjs/tests/testinit.sas", "termProgram": "sasjs/tests/testterm.sas", "macroVars": {"testVar": "testValue"}, "testSetUp": "sasjs/tests/testsetup.sas", "testTearDown": "sasjs/tests/testteardown.sas"}

Description: Create tests for Macros, Services & Jobs by simply adding a '.test.sas' extension.

Property Pattern Type Deprecated Definition Title/Description
- initProgram No string No - The jobConfig initProgram
- termProgram No string No - The jobConfig termProgram
- macroVars No object No - The `jobConfig` macroVars
- testSetUp No string No - The jobConfig testSetUp
- testTearDown No string No - The jobConfig testTearDown

11.1. Property SASjs Config File > testConfig > initProgram

Title: The jobConfig initProgram

Type string
Required No
Default ""

Description: The testConfig initProgram is a local .sas file that is inserted at the start of every Test (after compiled macros and any macroVars, and before the Test itself).

Example:

"sasjs/tests/testinit.sas"

11.2. Property SASjs Config File > testConfig > termProgram

Title: The jobConfig termProgram

Type string
Required No
Default ""

Description: The testConfig termProgram is inserted at the end of every Test as part of sasjs compile.

Example:

"jobs/jobterm.sas"

11.3. Property SASjs Config File > testConfig > macroVars

Title: The jobConfig macroVars

Type object
Required No
Additional properties [Any type: allowed]
Default {}

Description: This object allows sasjs compile to insert specific macro variables at the start of every Test. In this case, the code generated would be:

%let mac1=value;
%let mac2=42;

Example:

{
    "mac1": "value",
    "mac2": "42"
}

11.4. Property SASjs Config File > testConfig > testSetUp

Title: The jobConfig testSetUp

Type string
Required No
Default "sasjs/tests/testsetup.sas"

Description: This program is the first to execute as part of 'sasjs test'. It does not contain the testInit, testTerm or macroVariables. It IS compiled.

Example:

"sasjs/tests/testsetup.sas"

11.5. Property SASjs Config File > testConfig > testTearDown

Title: The jobConfig testTearDown

Type string
Required No
Default "sasjs/tests/testteardown.sas"

Description: The last program to execute as part of 'sasjs test'.

Example:

"sasjs/tests/testteardown.sas"

12. Property SASjs Config File > macroFolders

Title: The macroFolders array

Type array
Required No
Default []

Description: These local folders are searched for SAS Macros when running sasjs compile. Folders are relative to the sasjs/sasjsconfig.json file.

Example:

[
    "macros",
    "../../more_macros"
]
Array restrictions
Min items N/A
Max items N/A
Items unicity False
Additional items False
Tuple validation N/A

13. Property SASjs Config File > programFolders

Title: The programFolders array

Type array
Required No
Default []

Description: These local folders are searched for SAS Programs when running sasjs compile. Folders are relative to the sasjs/sasjsconfig.json file.

Example:

[
    "programs",
    "../../more_programs"
]
Array restrictions
Min items N/A
Max items N/A
Items unicity False
Additional items False
Tuple validation N/A

14. Property SASjs Config File > syncFolder

Title: Sync Folder

Type string
Required No
Default "sasjs/static_files"

Description: The contents of this folder are simply copied to the sasjsbuild directory AFTER the rest of the project is compiled. Useful for synchronising random / generic content with SAS logical folders.

15. Property SASjs Config File > targets

Title: The targets array

Type array
Required No
Default []

Description: A target is an alias for a deployment location, and includes at a minimum, the serverUrl, serverType and appLoc. This array allows multiple targets to be defined (eg dev / test / prod). Any properties defined here will override same-named properties in the sasjsconfig root.

Examples:

[
    {
        "name": "sas9target",
        "serverType": "SAS9",
        "serverUrl": "https://mysas9server",
        "appLoc": "/Shared Folders/myApp"
    }
]
[
    {
        "name": "viya",
        "serverType": "SASVIYA",
        "serverUrl": "https://sas.sasjs.com",
        "appLoc": "/Public/app",
        "contextName": "SAS Job Execution compute context",
        "buildConfig": {
            "buildOutputFileName": "myviyadeploy.sas",
            "initProgram": "build/buildinitviya.sas",
            "termProgram": "targets/viya/viyabuildterm.sas",
            "macroVars": {
                "name": "viyavalue",
                "extravar": "this too"
            }
        },
        "deployConfig": {
            "deployServicePack": true,
            "deployScripts": [
                "sasjsbuild/myviyadeploy.sas"
            ]
        },
        "serviceConfig": {
            "serviceFolders": [
                "targets/viya/services/admin"
            ],
            "initProgram": "build/serviceinit.sas",
            "termProgram": "build/serviceinit.sas",
            "macroVars": {
                "name": "viyavalue",
                "extravar": "this too"
            }
        },
        "streamConfig": {
            "assetPaths": [],
            "streamWeb": false,
            "streamWebFolder": "webv",
            "webSourcePath": "dist"
        },
        "testConfig": {
            "initProgram": "sasjs/tests/testinit.sas",
            "termProgram": "sasjs/tests/testterm.sas",
            "macroVars": {
                "testVar": "testValue"
            },
            "testSetUp": "sasjs/tests/testsetup.sas",
            "testTearDown": "sasjs/tests/testteardown.sas"
        },
        "macroFolders": [
            "targets/viya/macros"
        ]
    },
    {
        "name": "sas9",
        "serverType": "SAS9",
        "serverUrl": "https://sas.sasjs.com:7980",
        "appLoc": "/User Folders/&sysuserid/My Folder",
        "serverName": "Foundation",
        "repositoryName": "SASApp",
        "buildConfig": {
            "buildOutputFileName": "mysas9deploy.sas",
            "initProgram": "",
            "termProgram": "",
            "macroVars": {}
        },
        "deployConfig": {
            "deployScripts": [
                "build/deploysas9.sh"
            ],
            "deployServicePack": false
        },
        "serviceConfig": {
            "serviceFolders": [
                "targets/sas9/services/admin"
            ],
            "initProgram": "",
            "termProgram": "build/servicetermother.sas",
            "macroVars": {}
        },
        "streamConfig": {
            "assetPaths": [],
            "streamWeb": false,
            "streamWebFolder": "web9",
            "webSourcePath": "dist"
        },
        "testConfig": {
            "initProgram": "sasjs/tests/testinit.sas",
            "termProgram": "sasjs/tests/testterm.sas",
            "macroVars": {
                "testVar": "testValue"
            },
            "testSetUp": "sasjs/tests/testsetup.sas",
            "testTearDown": "sasjs/tests/testteardown.sas"
        },
        "macroFolders": [
            "targets/sas9/macros"
        ],
        "programFolders": []
    }
]
Array restrictions
Min items N/A
Max items N/A
Items unicity False
Additional items False
Tuple validation See below
Each item of this array must be Description
targets items -

15.1. SASjs Config File > targets > targets items

Type combining
Required No
Additional properties [Any type: allowed]
Any of(Option)
SASjs Targets

15.1.1. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets

Title: SASjs Targets

Type object
Required No
Additional properties [Any type: allowed]
Default {}

Description: A target provides the configuration specific to a particular deployment, eg DEV / TEST, or SAS9 / SASVIYA.

Example:

{
    "name": "viya",
    "serverType": "SASVIYA",
    "serverUrl": "https://sas.sasjs.com",
    "appLoc": "/Public/app",
    "contextName": "SAS Job Execution compute context",
    "buildConfig": {
        "buildOutputFileName": "myviyadeploy.sas",
        "initProgram": "build/buildinitviya.sas",
        "termProgram": "targets/viya/viyabuildterm.sas",
        "macroVars": {
            "name": "viyavalue",
            "extravar": "this too"
        }
    },
    "deployConfig": {
        "deployServicePack": true,
        "deployScripts": [
            "sasjsbuild/myviyadeploy.sas"
        ]
    },
    "serviceConfig": {
        "serviceFolders": [
            "targets/viya/services/admin"
        ],
        "initProgram": "build/serviceinit.sas",
        "termProgram": "build/serviceinit.sas",
        "macroVars": {
            "name": "viyavalue",
            "extravar": "this too"
        }
    },
    "jobConfig": {
        "jobFolders": [],
        "initProgram": "",
        "termProgram": "",
        "macroVars": {}
    },
    "streamConfig": {
        "assetPaths": [],
        "streamWeb": false,
        "streamWebFolder": "webv",
        "webSourcePath": "dist"
    },
    "testConfig": {
        "initProgram": "sasjs/tests/testinit.sas",
        "termProgram": "sasjs/tests/testterm.sas",
        "macroVars": {
            "testVar": "testValue"
        },
        "testSetUp": "sasjs/tests/testsetup.sas",
        "testTearDown": "sasjs/tests/testteardown.sas"
    },
    "macroFolders": [
        "targets/viya/macros"
    ],
    "programFolders": []
}
Property Pattern Type Deprecated Definition Title/Description
+ name No string No - Target name property
+ serverType No string No - The Target serverType
+ appLoc No string No - The Target appLoc
- binaryFolders No array No In #/properties/binaryFolders These local folders are searched for Binary Files when running sasjs compile. Folders are relative to the sasjs/sasjsconfig.json file.
- buildConfig No object No In #/properties/buildConfig Dictates which files get compiled into the build program (.sas), used to deploy services into SAS 9 or Viya environments (without a client/secret). You may use this config to include build specific macros, programs or macro variables - which is run a single time, on deployment - for things like database creation, or exporting a SAS 9 SPK after service creation.
- contextName No string No - The Target contextName
- deployConfig No object No In #/properties/deployConfig The deployConfig object enables settings that relate to the deployment of a SAS app - be that Viya, or SAS 9, or a pure Base environment.
- httpsAgentOptions No object No In #/properties/httpsAgentOptions Configure https agent by setting all supported attribute such as `key`, `cert`, `ca`, `rejectUnauthorized` and `requestCert`
- serverUrl No string No - The Target serverUrl
- serviceConfig No object No In #/properties/serviceConfig The serviceConfig object defines how SASjs web services are compiled. Web services differ from jobs in that they include some fixed pre-code (eg the macros to stream out the result json).
- jobConfig No object No In #/properties/jobConfig The jobConfig object defines how SASjs Jobs are compiled.
- docConfig No object No In #/properties/docConfig SASjs uses doxygen to auto-generate HTML documentation using the headers in your SAS programs, macros, services & jobs. For more info, see https://cli.sasjs.io/doc. Some properties are taken from package.json (such as the project Name).
- streamConfig No object No In #/properties/streamConfig SASjs allows a local web app to be compiled such that all html, css, javascript, and other assets such as png or mp4 are converted into web services and streamed directly from SAS.

This approach is convenient as it bypasses the need to deploy to a web server.
- syncDirectories No array No - syncDirectories
- syncFolder No string No In #/properties/syncFolder The contents of this folder are simply copied to the sasjsbuild directory AFTER the rest of the project is compiled. Useful for synchronising random / generic content with SAS logical folders.
- testConfig No object No In #/properties/testConfig Create tests for Macros, Services & Jobs by simply adding a '.test.sas' extension.
- macroFolders No array No In #/properties/macroFolders These local folders are searched for SAS Macros when running `sasjs compile`. Folders are relative to the `sasjs/sasjsconfig.json` file.
- programFolders No array No In #/properties/programFolders These local folders are searched for SAS Programs when running `sasjs compile`. Folders are relative to the `sasjs/sasjsconfig.json` file.
15.1.1.1. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > name

Title: Target name property

Type string
Required Yes
Default ""

Description: A target name can only contain alphanumeric characters and dashes. It cannot contain spaces. It is used as the alias when referencing the target using the -t attribute in many of the SASjs commands.

Example:

"viya"
15.1.1.2. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > serverType

Title: The Target serverType

Type string
Required Yes
Default ""

Description: The serverType can be either SAS9, SASVIYA or SASJS.

Example:

"SASVIYA"
15.1.1.3. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > appLoc

Title: The Target appLoc

Type string
Required Yes
Default ""

Description: The appLoc provides the root SAS folder location under which all jobs and services are deployed and executed. The SAS folder could be metadata in SAS 9, or SAS Drive in Viya.

Example:

"/Public/app"
15.1.1.4. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > binaryFolders
Type array
Required No
Defined in #/properties/binaryFolders

Description: These local folders are searched for Binary Files when running sasjs compile. Folders are relative to the sasjs/sasjsconfig.json file.

Example:

[
    "binaries",
    "../../more_binaries"
]
Array restrictions
Min items N/A
Max items N/A
Items unicity False
Additional items False
Tuple validation N/A
15.1.1.5. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > buildConfig
Type object
Required No
Additional properties [Any type: allowed]
Defined in #/properties/buildConfig

Description: Dictates which files get compiled into the build program (.sas), used to deploy services into SAS 9 or Viya environments (without a client/secret). You may use this config to include build specific macros, programs or macro variables - which is run a single time, on deployment - for things like database creation, or exporting a SAS 9 SPK after service creation.

Example:

{
    "initProgram": "build/buildinit.sas",
    "termProgram": "build/buildterm.sas",
    "macroVars": {
        "name": "value",
        "numvar": "42"
    },
    "buildOutputFileName": "buildpack.sas",
    "buildOutputFolder": "sasjsbuild",
    "buildResultsFolder": "sasjsresults"
}
Property Pattern Type Deprecated Definition Title/Description
- buildOutputFileName No string No - buildOutputFileName
- buildOutputFolder No string No - buildOutputFolder
- buildResultsFolder No string No - buildResultsFolder
- initProgram No string No - The buildConfig initProgram
- termProgram No string No - The buildConfig termProgram
- macroVars No object No - The buildConfig macro variables
15.1.1.5.1. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > buildConfig > buildOutputFileName

Title: buildOutputFileName

Type string
Required No

Description: The name of the generated .sas program, which can be used to deploy the app using only SAS Studio. By default, this will be the name of the target.

Examples:

"viya.sas"
"sas9.sas"
15.1.1.5.2. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > buildConfig > buildOutputFolder

Title: buildOutputFolder

Type string
Required No
Default "sasjsbuild"

Description: The name of the folder containing the compiled output. The sasjs build command will take all of the subfolders here as inputs to create the build pack. By default this will be named sasjsbuild.

15.1.1.5.3. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > buildConfig > buildResultsFolder

Title: buildResultsFolder

Type string
Required No
Default "sasjsresults"

Description: The name of the folder containing the output (eg logs, ODS output) from sasjs run. By default this will be named sasjsresults.

15.1.1.5.4. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > buildConfig > initProgram

Title: The buildConfig initProgram

Type string
Required No
Default "sasjs/buildinit.sas"

Description: The path to a .sas program that will be inserted at the start of the build .sas program (created when running sasjs build).

15.1.1.5.5. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > buildConfig > termProgram

Title: The buildConfig termProgram

Type string
Required No
Default "sasjs/buildterm.sas"

Description: The path to a .sas program that will be inserted at the end of the build .sas program (created when running sasjs build).

15.1.1.5.6. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > buildConfig > macroVars

Title: The buildConfig macro variables

Type object
Required No
Additional properties [Any type: allowed]
Default {}

Description: A series of name value pairs that will be turned into SAS macro variables in the build .sas program (generated when running sasjs build). The example provided will generate sas code as follows:

%let name=value;
%let numvar=42;

Example:

{
    "name": "value",
    "numvar": "42"
}
15.1.1.6. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > contextName

Title: The Target contextName

Type string
Required No
Default "SAS Job Execution compute context"

Description: The name of the compute context used to execute SAS code. The context determines the way in which the SAS session is spawned (eg user credentials, autoexec code, system options etc). Contexts can be created / modified / deleted using the sasjs context command.

Example:

"SAS Job Execution compute context"
15.1.1.7. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > deployConfig
Type object
Required No
Additional properties [Any type: allowed]
Default {}
Defined in #/properties/deployConfig

Description: The deployConfig object enables settings that relate to the deployment of a SAS app - be that Viya, or SAS 9, or a pure Base environment.

Examples:

{
    "deployScripts": [
        "build/deployscript.sh"
    ]
}
{
    "deployScripts": [
        "build/deployscript.sh"
    ],
    "deployServicePack": true
}
Property Pattern Type Deprecated Definition Title/Description
- deployScripts No array No - The deployConfig deployScripts array
- deployServicePack No boolean No - The deployConfig deployServicePack flag
15.1.1.7.1. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > deployConfig > deployScripts

Title: The deployConfig deployScripts array

Type array
Required No
Default []

Description: These scripts are executed when running sasjs deploy. If the file is a .sas file, it is executed on the SAS server (Viya only). Otherwise it is executed locally. These scripts are run AFTER the deployment of the servicepack, if deployServicePack:true (Viya only).

Example:

[
    "build/deployscript.sh",
    "build/myprogram.sas"
]
Array restrictions
Min items N/A
Max items N/A
Items unicity False
Additional items False
Tuple validation N/A
15.1.1.7.2. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > deployConfig > deployServicePack

Title: The deployConfig deployServicePack flag

Type boolean
Required No
Default [false]

Description: If set to true the json pack produced by sasjs build will be auto-deployed to the appLoc of the specified target (creating all jobs and services in the SAS folder tree). Currently only Viya is supported for this flag.

15.1.1.8. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > httpsAgentOptions
Type object
Required No
Additional properties [Any type: allowed]
Defined in #/properties/httpsAgentOptions

Description: Configure https agent by setting all supported attribute such as key, cert, ca, rejectUnauthorized and requestCert

Example:

{
    "allowInsecureRequests": false,
    "caPath": "path/to/caFile",
    "keyPath": "path/to/keyFile",
    "certPath": "path/to/certFile",
    "requestCert": false,
    "rejectUnauthorized": true
}
Property Pattern Type Deprecated Definition Title/Description
- allowInsecureRequests No boolean No - allowInsecureRequests
- caPath No string No - caPath
- keyFile No string No - keyFile
- certFile No string No - certFile
- requestCert No boolean No - requestCert
- rejectUnauthorized No boolean No - rejectUnauthorized
15.1.1.8.1. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > httpsAgentOptions > allowInsecureRequests

Title: allowInsecureRequests

Type boolean
Required No
Default false

Description: If you are having certificate errors connecting to SAS, that cannot be properly resolved, try setting this value to true. This option only has an effect if rejectUnauthorized is not present.

Examples:

true
false
15.1.1.8.2. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > httpsAgentOptions > caPath

Title: caPath

Type string
Required No

Description: Optionally override the trusted CA certificates. Default is to trust the well-known CAs curated by Mozilla. Mozilla's CAs are completely replaced when CAs are explicitly specified using this option.

Example:

"path/to/caFile"
15.1.1.8.3. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > httpsAgentOptions > keyFile

Title: keyFile

Type string
Required No

Description: Private keys in PEM format. PEM allows the option of private keys being encrypted. Encrypted keys will be decrypted with options.passphrase. Multiple keys using different algorithms can be provided either as an array of unencrypted key strings or buffers, or an array of objects in the form {pem: <string|buffer>[, passphrase: ]}. The object form can only occur in an array. object.passphrase is optional. Encrypted keys will be decrypted with object.passphrase if provided, or options.passphrase if it is not.

Example:

"path/to/keyFile"
15.1.1.8.4. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > httpsAgentOptions > certFile

Title: certFile

Type string
Required No

Description: Cert chains in PEM format. One cert chain should be provided per private key. Each cert chain should consist of the PEM formatted certificate for a provided private key, followed by the PEM formatted intermediate certificates (if any), in order, and not including the root CA (the root CA must be pre-known to the peer, see ca). When providing multiple cert chains, they do not have to be in the same order as their private keys in key. If the intermediate certificates are not provided, the peer will not be able to validate the certificate, and the handshake will fail.

Example:

"path/to/certFile"
15.1.1.8.5. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > httpsAgentOptions > requestCert

Title: requestCert

Type boolean
Required No
Default false

Description: If true the server will request a certificate from clients that connect and attempt to verify that certificate. Defaults to false.

Examples:

true
false
15.1.1.8.6. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > httpsAgentOptions > rejectUnauthorized

Title: rejectUnauthorized

Type boolean
Required No
Default true

Description: If true the server will reject any connection which is not authorized with the list of supplied CAs. This option only has an effect if requestCert is true.

Examples:

true
false
15.1.1.9. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > serverUrl

Title: The Target serverUrl

Type string
Required No
Default ""

Description: The serverUrl is the location to which the app is deployed, and against which any server based operations are performed. If SAS is served from a particular port, that port should also be included here.

Examples:

"https://sas.sasjs.com"
"https://sas.sasjs.com:8080"
15.1.1.10. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > serviceConfig
Type object
Required No
Additional properties [Any type: allowed]
Default {}
Defined in #/properties/serviceConfig

Description: The serviceConfig object defines how SASjs web services are compiled. Web services differ from jobs in that they include some fixed pre-code (eg the macros to stream out the result json).

Example:

{
    "serviceFolders": [
        "services/common",
        "services/admin"
    ],
    "initProgram": "build/serviceinit.sas",
    "termProgram": "build/serviceterm.sas",
    "macroVars": {
        "mac1": "value",
        "mac2": "42"
    }
}
Property Pattern Type Deprecated Definition Title/Description
- serviceFolders No array No - The serviceConfig serviceFolders array
- initProgram No string No - The serviceConfig initProgram
- termProgram No string No - The serviceConfig termProgram
- macroVars No object No - The `serviceConfig` macroVars
15.1.1.10.1. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > serviceConfig > serviceFolders

Title: The serviceConfig serviceFolders array

Type array
Required No
Default []

Description: When running sasjs compile, all programs in the folders defined in this array are compiled and placed into same-named folders under sasjsbuild/services. They will be compiled as services (so, with the service pre-code). Folders can be absolute, or relative to the sasjs folder.

Example:

[
    "services/common",
    "services/admin"
]
Array restrictions
Min items N/A
Max items N/A
Items unicity False
Additional items False
Tuple validation N/A
15.1.1.10.2. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > serviceConfig > initProgram

Title: The serviceConfig initProgram

Type string
Required No
Default ""

Description: The serviceConfig initProgram is a .sas file that is inserted at the start of every SAS service (after compiled macros and any macroVars, and before the service itself).

Example:

"build/serviceinit.sas"
15.1.1.10.3. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > serviceConfig > termProgram

Title: The serviceConfig termProgram

Type string
Required No
Default ""

Description: The serviceConfig termProgram is inserted at the end of every service as part of sasjs compile.

Example:

"build/serviceterm.sas"
15.1.1.10.4. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > serviceConfig > macroVars

Title: The serviceConfig macroVars

Type object
Required No
Additional properties [Any type: allowed]
Default {}

Description: This object allows sasjs compile to insert specific macro variables at the start of every service. In this case, the code generated would be:

%let mac1=value;
%let mac2=42;

Example:

{
    "mac1": "value",
    "mac2": "42"
}
15.1.1.11. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > jobConfig
Type object
Required No
Additional properties [Any type: allowed]
Default {}
Defined in #/properties/jobConfig

Description: The jobConfig object defines how SASjs Jobs are compiled.

Example:

{
    "jobFolders": [
        "jobs/extract",
        "jobs/load"
    ],
    "initProgram": "jobs/jobinit.sas",
    "termProgram": "jobs/jobterm.sas",
    "macroVars": {
        "mac1": "value",
        "mac2": "42"
    }
}
Property Pattern Type Deprecated Definition Title/Description
- jobFolders No array No - The jobConfig jobFolders array
- initProgram No string No - The jobConfig initProgram
- termProgram No string No - The jobConfig termProgram
- macroVars No object No - The `jobConfig` macroVars
15.1.1.11.1. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > jobConfig > jobFolders

Title: The jobConfig jobFolders array

Type array
Required No
Default []

Description: When running sasjs compile, all programs in the local folders defined in this array are compiled and placed into same-named folders under sasjsbuild/jobs. Folders can be absolute, or relative to the local project /sasjs folder.

Example:

[
    "jobs/extract",
    "jobs/transform",
    "jobs/load"
]
Array restrictions
Min items N/A
Max items N/A
Items unicity False
Additional items False
Tuple validation N/A
15.1.1.11.2. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > jobConfig > initProgram

Title: The jobConfig initProgram

Type string
Required No
Default ""

Description: The jobConfig initProgram is a local .sas file that is inserted at the start of every SAS Job (after compiled macros and any macroVars, and before the Job itself).

Example:

"jobs/jobinit.sas"
15.1.1.11.3. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > jobConfig > termProgram

Title: The jobConfig termProgram

Type string
Required No
Default ""

Description: The jobConfig termProgram is inserted at the end of every Job as part of sasjs compile.

Example:

"jobs/jobterm.sas"
15.1.1.11.4. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > jobConfig > macroVars

Title: The jobConfig macroVars

Type object
Required No
Additional properties [Any type: allowed]
Default {}

Description: This object allows sasjs compile to insert specific macro variables at the start of every Job. In this case, the code generated would be:

%let mac1=value;
%let mac2=42;

Example:

{
    "mac1": "value",
    "mac2": "42"
}
15.1.1.12. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > docConfig
Type object
Required No
Additional properties [Any type: allowed]
Default {"dataControllerUrl": "https://mysasserver.com/web/datacontroller/#", "enableLineage": true, "doxyContent": {"readMe": "../../README.md"}}
Defined in #/properties/docConfig

Description: SASjs uses doxygen to auto-generate HTML documentation using the headers in your SAS programs, macros, services & jobs. For more info, see https://cli.sasjs.io/doc. Some properties are taken from package.json (such as the project Name).

Example:

{
    "displayMacroCore": true,
    "outDirectory": "/some/output/directory",
    "dataControllerUrl": "https://mysasserver.com/web/datacontroller/#",
    "enableLineage": true,
    "doxyContent": {
        "readMe": "../../my/custom/homepage.md",
        "path": "my/custom/doxy/folder"
    }
}
Property Pattern Type Deprecated Definition Title/Description
- displayMacroCore No boolean No - The displayMacroCore docConfig option
- outDirectory No string No - The outDirectory docConfig option
- dataControllerUrl No string No - The dataControllerUrl docConfig option
- enableLineage No boolean No - Enable Lineage
- doxyContent No object No - doxyContent
15.1.1.12.1. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > docConfig > displayMacroCore

Title: The displayMacroCore docConfig option

Type boolean
Required No
Default true

Description: The CLI will autocompile macro dependencies that exist in the SASjs Macro Core library. These will also show in the documentation under 'node_modules'. If you'd prefer not to show these in the rendered docs, set this value to false.

Example:

true
15.1.1.12.2. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > docConfig > outDirectory

Title: The outDirectory docConfig option

Type string
Required No
Default "sasjsbuild/doc"

Description: The location to which the generated HTML SAS documentation is written. If missing, or left blank, the files will be written to the sasjsbuild/doc directory (default behaviour).

Example:

"/my/preferred/docs/directory"
15.1.1.12.3. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > docConfig > dataControllerUrl

Title: The dataControllerUrl docConfig option

Type string
Required No
Default ""

Description: Provide the full URL to Data Controller so that sasjs doc can link the lineage diagram directly to the table viewer in Data Controller. If left blank, or undefined, no links will be generated.

Example:

"https://yourserver.co.uk/dcviya/#"
15.1.1.12.4. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > docConfig > enableLineage

Title: Enable Lineage

Type boolean
Required No
Default true

Description: If true, sasjs doc will generate and display Data Lineage from Jobs and Services.

15.1.1.12.5. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > docConfig > doxyContent

Title: doxyContent

Type object
Required No
Additional properties [Any type: allowed]
Default {}

Description: Configuration of the Doxyfile variables

Example:

{
    "favIcon": "favicon.ico",
    "footer": "new_footer.html",
    "header": "new_header.html",
    "layout": "DoxygenLayout.xml",
    "logo": "logo.png",
    "readMe": "../../README.md",
    "stylesheet": "new_stylesheet.css",
    "path": "sasjs/doxy"
}
Property Pattern Type Deprecated Definition Title/Description
- favIcon No string No - Doxygen favicon
- footer No string No - Doxygen footer
- header No string No - Doxygen header
- layout No string No - Doxygen Layout XML File
- logo No string No - Doxygen Logo
- readMe No string No - Doxygen Homepage
- stylesheet No string No - Doxygen CSS
- path No string No - Doxygen Path
15.1.1.12.5.1. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > docConfig > doxyContent > favIcon

Title: Doxygen favicon

Type string
Required No
Default "favicon.ico"

Description: The favicon used in the doxygen documentation

15.1.1.12.5.2. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > docConfig > doxyContent > footer

Title: Doxygen footer

Type string
Required No
Default "new_footer.html"

Description: The footer HTML file used in the doxygen documentation

15.1.1.12.5.3. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > docConfig > doxyContent > header

Title: Doxygen header

Type string
Required No
Default "new_header.html"

Description: The header HTML file used in the doxygen documentation

15.1.1.12.5.4. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > docConfig > doxyContent > layout

Title: Doxygen Layout XML File

Type string
Required No
Default "DoxygenLayout.xml"

Description: The layout XML file used to build the doxygen documentation

15.1.1.12.5.5. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > docConfig > doxyContent > logo

Title: Doxygen Logo

Type string
Required No
Default "logo.png"

Description: The logo file used by doxygen

15.1.1.12.5.6. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > docConfig > doxyContent > readMe

Title: Doxygen Homepage

Type string
Required No
Default "../../README.md"

Description: The file used to generate the doxygen homepage (defaults to the readme.md)

15.1.1.12.5.7. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > docConfig > doxyContent > stylesheet

Title: Doxygen CSS

Type string
Required No
Default "new_stylesheet.css"

Description: The CSS file used to extend Doxygen

15.1.1.12.5.8. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > docConfig > doxyContent > path

Title: Doxygen Path

Type string
Required No
Default "sasjs/doxy"

Description: The path to the Doxygen configuration files (relative to sasjs/sasjsconfig.json)

15.1.1.13. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > streamConfig
Type object
Required No
Additional properties [Any type: allowed]
Default {}
Defined in #/properties/streamConfig

Description: SASjs allows a local web app to be compiled such that all html, css, javascript, and other assets such as png or mp4 are converted into web services and streamed directly from SAS.

This approach is convenient as it bypasses the need to deploy to a web server.

Example:

{
    "assetPaths": [],
    "streamWeb": false,
    "streamWebFolder": "webv",
    "webSourcePath": "dist",
    "streamLogo": "logo.png"
}
Property Pattern Type Deprecated Definition Title/Description
- assetPaths No array No - The streamConfig assetPaths array
- streamLogo No string No - Icon shown in AppStream (sasjs/server)
+ streamWeb No boolean No - The streamConfig streamWeb flag
- streamWebFolder No string No - The streamConfig streamWebFolder
- webSourcePath No string No - The webSourcePath schema
- streamServiceName No string No - streamServiceName Schema
15.1.1.13.1. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > streamConfig > assetPaths

Title: The streamConfig assetPaths array

Type array
Required No
Default []

Description: An array of local folders. All assets placed in these folders are converted into web services - example file types could be png, svg, mp3, mp4, excel - anything really.

Example:

[
    "/myassets"
]
Array restrictions
Min items N/A
Max items N/A
Items unicity False
Additional items False
Tuple validation N/A
15.1.1.13.2. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > streamConfig > streamLogo

Title: Icon shown in AppStream (sasjs/server)

Type string
Required No
Default "logo.png"

Description: Provide the location of a square image, under the webSourcePath. Used as the display icon on the appStream page.

Examples:

"logo.png"
"favicon.ico"
15.1.1.13.3. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > streamConfig > streamWeb

Title: The streamConfig streamWeb flag

Type boolean
Required Yes
Default false

Description: When set to true, frontend files saved in the webSourcePath will be converted to streaming services in the streamWebFolder in SAS.

Example:

true
15.1.1.13.4. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > streamConfig > streamWebFolder

Title: The streamConfig streamWebFolder

Type string
Required No
Default "webv"

Description: This is the target SAS folder (relative to the appLoc) where the compiled web assets will be created.

15.1.1.13.5. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > streamConfig > webSourcePath

Title: The webSourcePath schema

Type string
Required No
Default "dist"

Description: When streamConfig is set to true, all files in this folder will be converted to streaming web services. The index.html will be taken as a baseline, and all relative URLS will be prefixed such that the links still work and the assets still load.

15.1.1.13.6. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > streamConfig > streamServiceName

Title: streamServiceName Schema

Type string
Required No
Default "clickme.sas"

Description: The name of the service containing the index.html for a streaming web app. Defaults to clickme and is always deployed under the appLoc/services SAS Folder.

15.1.1.14. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > syncDirectories

Title: syncDirectories

Type array
Required No

Description: Maps the local filesystem to remote (SAS) physical directories.

Example:

[
    {
        "local": "C:\\temp\\local\\fs1",
        "remote": "/opt/data/fs1"
    },
    {
        "local": "C:\\temp\\elsewhere",
        "remote": "/opt/somewhere"
    }
]
Array restrictions
Min items N/A
Max items N/A
Items unicity False
Additional items False
Tuple validation N/A
15.1.1.15. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > syncFolder
Type string
Required No
Default "sasjs/static_files"
Defined in #/properties/syncFolder

Description: The contents of this folder are simply copied to the sasjsbuild directory AFTER the rest of the project is compiled. Useful for synchronising random / generic content with SAS logical folders.

15.1.1.16. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > testConfig
Type object
Required No
Additional properties [Any type: allowed]
Default {"initProgram": "sasjs/tests/testinit.sas", "termProgram": "sasjs/tests/testterm.sas", "macroVars": {"testVar": "testValue"}, "testSetUp": "sasjs/tests/testsetup.sas", "testTearDown": "sasjs/tests/testteardown.sas"}
Defined in #/properties/testConfig

Description: Create tests for Macros, Services & Jobs by simply adding a '.test.sas' extension.

Property Pattern Type Deprecated Definition Title/Description
- initProgram No string No - The jobConfig initProgram
- termProgram No string No - The jobConfig termProgram
- macroVars No object No - The `jobConfig` macroVars
- testSetUp No string No - The jobConfig testSetUp
- testTearDown No string No - The jobConfig testTearDown
15.1.1.16.1. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > testConfig > initProgram

Title: The jobConfig initProgram

Type string
Required No
Default ""

Description: The testConfig initProgram is a local .sas file that is inserted at the start of every Test (after compiled macros and any macroVars, and before the Test itself).

Example:

"sasjs/tests/testinit.sas"
15.1.1.16.2. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > testConfig > termProgram

Title: The jobConfig termProgram

Type string
Required No
Default ""

Description: The testConfig termProgram is inserted at the end of every Test as part of sasjs compile.

Example:

"jobs/jobterm.sas"
15.1.1.16.3. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > testConfig > macroVars

Title: The jobConfig macroVars

Type object
Required No
Additional properties [Any type: allowed]
Default {}

Description: This object allows sasjs compile to insert specific macro variables at the start of every Test. In this case, the code generated would be:

%let mac1=value;
%let mac2=42;

Example:

{
    "mac1": "value",
    "mac2": "42"
}
15.1.1.16.4. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > testConfig > testSetUp

Title: The jobConfig testSetUp

Type string
Required No
Default "sasjs/tests/testsetup.sas"

Description: This program is the first to execute as part of 'sasjs test'. It does not contain the testInit, testTerm or macroVariables. It IS compiled.

Example:

"sasjs/tests/testsetup.sas"
15.1.1.16.5. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > testConfig > testTearDown

Title: The jobConfig testTearDown

Type string
Required No
Default "sasjs/tests/testteardown.sas"

Description: The last program to execute as part of 'sasjs test'.

Example:

"sasjs/tests/testteardown.sas"
15.1.1.17. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > macroFolders
Type array
Required No
Default []
Defined in #/properties/macroFolders

Description: These local folders are searched for SAS Macros when running sasjs compile. Folders are relative to the sasjs/sasjsconfig.json file.

Example:

[
    "macros",
    "../../more_macros"
]
Array restrictions
Min items N/A
Max items N/A
Items unicity False
Additional items False
Tuple validation N/A
15.1.1.18. Property SASjs Config File > targets > targets items > anyOf > SASjs Targets > programFolders
Type array
Required No
Default []
Defined in #/properties/programFolders

Description: These local folders are searched for SAS Programs when running sasjs compile. Folders are relative to the sasjs/sasjsconfig.json file.

Example:

[
    "programs",
    "../../more_programs"
]
Array restrictions
Min items N/A
Max items N/A
Items unicity False
Additional items False
Tuple validation N/A

Generated using json-schema-for-humans on 2022-10-26 at 14:11:24 +0000