mirror of
https://github.com/sasjs/core.git
synced 2026-01-05 00:20:05 +00:00
Compare commits
2 Commits
v4.56.1
...
SORTSEQ-LI
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5ba3ca2c57 | ||
|
|
cbe83c6d8d |
8
.github/vpn/config.ovpn
vendored
8
.github/vpn/config.ovpn
vendored
@@ -3,12 +3,10 @@ client
|
|||||||
tls-client
|
tls-client
|
||||||
dev tun
|
dev tun
|
||||||
# this will connect with whatever proto DNS tells us (https://community.openvpn.net/openvpn/ticket/934)
|
# this will connect with whatever proto DNS tells us (https://community.openvpn.net/openvpn/ticket/934)
|
||||||
proto udp
|
proto tcp
|
||||||
remote vpn.4gl.io 7194
|
remote vpn.4gl.io 7494
|
||||||
resolv-retry infinite
|
resolv-retry infinite
|
||||||
# this will fallback from udp6 to udp4 as well
|
cipher AES-256-CBC
|
||||||
connect-timeout 5
|
|
||||||
data-ciphers AES-256-CBC:AES-256-GCM
|
|
||||||
auth SHA256
|
auth SHA256
|
||||||
script-security 2
|
script-security 2
|
||||||
keepalive 10 120
|
keepalive 10 120
|
||||||
|
|||||||
11
.github/workflows/run-tests.yml
vendored
11
.github/workflows/run-tests.yml
vendored
@@ -8,7 +8,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
test:
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
@@ -34,10 +34,6 @@ jobs:
|
|||||||
USER_KEY: ${{ secrets.USER_KEY }}
|
USER_KEY: ${{ secrets.USER_KEY }}
|
||||||
TLS_KEY: ${{ secrets.TLS_KEY }}
|
TLS_KEY: ${{ secrets.TLS_KEY }}
|
||||||
|
|
||||||
- name: Chmod VPN files
|
|
||||||
run: |
|
|
||||||
chmod 600 .github/vpn/ca.crt .github/vpn/user.crt .github/vpn/user.key .github/vpn/tls.key
|
|
||||||
|
|
||||||
- name: Install Open VPN
|
- name: Install Open VPN
|
||||||
run: |
|
run: |
|
||||||
sudo apt install apt-transport-https
|
sudo apt install apt-transport-https
|
||||||
@@ -46,13 +42,8 @@ jobs:
|
|||||||
sudo wget -O /etc/apt/sources.list.d/openvpn3.list https://swupdate.openvpn.net/community/openvpn3/repos/openvpn3-jammy.list
|
sudo wget -O /etc/apt/sources.list.d/openvpn3.list https://swupdate.openvpn.net/community/openvpn3/repos/openvpn3-jammy.list
|
||||||
sudo apt update
|
sudo apt update
|
||||||
sudo apt install openvpn3=17~betaUb22042+jammy
|
sudo apt install openvpn3=17~betaUb22042+jammy
|
||||||
|
|
||||||
- name: Start Open VPN 3
|
- name: Start Open VPN 3
|
||||||
run: openvpn3 session-start --config .github/vpn/config.ovpn
|
run: openvpn3 session-start --config .github/vpn/config.ovpn
|
||||||
|
|
||||||
- name: Fetch SASJS server
|
|
||||||
run: curl ${{ secrets.SASJS_SERVER_URL }}/SASjsApi/info
|
|
||||||
|
|
||||||
- name: Install Doxygen
|
- name: Install Doxygen
|
||||||
run: sudo apt-get install doxygen
|
run: sudo apt-get install doxygen
|
||||||
|
|
||||||
|
|||||||
19
all.sas
19
all.sas
@@ -7157,11 +7157,10 @@ data &outds(keep=name type length varnum format label ddtype fmtname);
|
|||||||
else if formatd=0 then format=cats(fmtname,formatl,'.');
|
else if formatd=0 then format=cats(fmtname,formatl,'.');
|
||||||
else format=cats(fmtname,formatl,'.',formatd);
|
else format=cats(fmtname,formatl,'.',formatd);
|
||||||
type='N';
|
type='N';
|
||||||
if format=:'DATETIME' or format=:'E8601DT' or format=:'NLDATM'
|
if format=:'DATETIME' or format=:'E8601DT' then ddtype='DATETIME';
|
||||||
then ddtype='DATETIME';
|
|
||||||
else if format=:'DATE' or format=:'DDMMYY' or format=:'MMDDYY'
|
else if format=:'DATE' or format=:'DDMMYY' or format=:'MMDDYY'
|
||||||
or format=:'YYMMDD' or format=:'E8601DA' or format=:'B8601DA'
|
or format=:'YYMMDD' or format=:'E8601DA' or format=:'B8601DA'
|
||||||
or format=:'MONYY' or format=:'NLDATE'
|
or format=:'MONYY'
|
||||||
then ddtype='DATE';
|
then ddtype='DATE';
|
||||||
else if format=:'TIME' then ddtype='TIME';
|
else if format=:'TIME' then ddtype='TIME';
|
||||||
else ddtype='NUMERIC';
|
else ddtype='NUMERIC';
|
||||||
@@ -9676,7 +9675,6 @@ options
|
|||||||
%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;
|
%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;
|
||||||
noautocorrect /* disallow misspelled procedure names */
|
noautocorrect /* disallow misspelled procedure names */
|
||||||
dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */
|
dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */
|
||||||
/* turn off with dsoptions=nonote2err */
|
|
||||||
%end;
|
%end;
|
||||||
;
|
;
|
||||||
|
|
||||||
@@ -17687,25 +17685,22 @@ run;
|
|||||||
%mend mm_getcols;/**
|
%mend mm_getcols;/**
|
||||||
@file mm_getdetails.sas
|
@file mm_getdetails.sas
|
||||||
@brief extracts metadata attributes and associations for a particular uri
|
@brief extracts metadata attributes and associations for a particular uri
|
||||||
|
|
||||||
@param [in] uri the metadata object for which to return
|
@param [in] uri the metadata object for which to return
|
||||||
attributes / associations
|
attributes / associations
|
||||||
@param [in] sortoptions= Enables sorting of the output datasets, for example,
|
|
||||||
`SORTSEQ=LINGUISTIC`
|
|
||||||
@param [out] outattrs= (work.attributes)
|
@param [out] outattrs= (work.attributes)
|
||||||
The dataset to create that contains the list of attributes
|
The dataset to create that contains the list of attributes
|
||||||
@param [out] outassocs= (work.associations)
|
@param [out] outassocs= (work.associations)
|
||||||
The dataset to contain the list of associations
|
The dataset to contain the list of associations
|
||||||
|
|
||||||
<h4> Related Files </h4>
|
@version 9.2
|
||||||
@li mm_getobjects.sas
|
@author Allan Bowe
|
||||||
@li mm_gettypes.sas
|
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
||||||
%macro mm_getdetails(uri
|
%macro mm_getdetails(uri
|
||||||
,outattrs=work.attributes
|
,outattrs=work.attributes
|
||||||
,outassocs=work.associations
|
,outassocs=work.associations
|
||||||
,sortoptions=
|
|
||||||
)/*/STORE SOURCE*/;
|
)/*/STORE SOURCE*/;
|
||||||
|
|
||||||
data &outassocs;
|
data &outassocs;
|
||||||
@@ -17730,7 +17725,7 @@ data &outassocs;
|
|||||||
n1+1;
|
n1+1;
|
||||||
end;
|
end;
|
||||||
run;
|
run;
|
||||||
proc sort &sortoptions;
|
proc sort SORTSEQ=LINGUISTIC;
|
||||||
by assoc name;
|
by assoc name;
|
||||||
run;
|
run;
|
||||||
|
|
||||||
@@ -17750,7 +17745,7 @@ data &outattrs;
|
|||||||
n1+1;
|
n1+1;
|
||||||
end;
|
end;
|
||||||
run;
|
run;
|
||||||
proc sort &sortoptions;
|
proc sort SORTSEQ=LINGUISTIC;
|
||||||
by type name;
|
by type name;
|
||||||
run;
|
run;
|
||||||
|
|
||||||
|
|||||||
@@ -53,11 +53,10 @@ data &outds(keep=name type length varnum format label ddtype fmtname);
|
|||||||
else if formatd=0 then format=cats(fmtname,formatl,'.');
|
else if formatd=0 then format=cats(fmtname,formatl,'.');
|
||||||
else format=cats(fmtname,formatl,'.',formatd);
|
else format=cats(fmtname,formatl,'.',formatd);
|
||||||
type='N';
|
type='N';
|
||||||
if format=:'DATETIME' or format=:'E8601DT' or format=:'NLDATM'
|
if format=:'DATETIME' or format=:'E8601DT' then ddtype='DATETIME';
|
||||||
then ddtype='DATETIME';
|
|
||||||
else if format=:'DATE' or format=:'DDMMYY' or format=:'MMDDYY'
|
else if format=:'DATE' or format=:'DDMMYY' or format=:'MMDDYY'
|
||||||
or format=:'YYMMDD' or format=:'E8601DA' or format=:'B8601DA'
|
or format=:'YYMMDD' or format=:'E8601DA' or format=:'B8601DA'
|
||||||
or format=:'MONYY' or format=:'NLDATE'
|
or format=:'MONYY'
|
||||||
then ddtype='DATE';
|
then ddtype='DATE';
|
||||||
else if format=:'TIME' then ddtype='TIME';
|
else if format=:'TIME' then ddtype='TIME';
|
||||||
else ddtype='NUMERIC';
|
else ddtype='NUMERIC';
|
||||||
|
|||||||
@@ -70,7 +70,6 @@ options
|
|||||||
%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;
|
%if "%substr(&sysver,1,1)" ne "4" and "%substr(&sysver,1,1)" ne "5" %then %do;
|
||||||
noautocorrect /* disallow misspelled procedure names */
|
noautocorrect /* disallow misspelled procedure names */
|
||||||
dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */
|
dsoptions=note2err /* undocumented - convert bad NOTEs to ERRs */
|
||||||
/* turn off with dsoptions=nonote2err */
|
|
||||||
%end;
|
%end;
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
@@ -80,8 +80,8 @@ function mcf_getfmttype(fmtnm $) $8;
|
|||||||
/* apply lookups */
|
/* apply lookups */
|
||||||
if cats(fmt) in ('DATETIME','B8601DN','B8601DN','B8601DT','B8601DT'
|
if cats(fmt) in ('DATETIME','B8601DN','B8601DN','B8601DT','B8601DT'
|
||||||
,'B8601DZ','B8601DZ','DATEAMPM','DTDATE','DTMONYY','DTWKDATX','DTYEAR'
|
,'B8601DZ','B8601DZ','DATEAMPM','DTDATE','DTMONYY','DTWKDATX','DTYEAR'
|
||||||
,'DTYYQC','E8601DN','E8601DN','E8601DT','E8601DT','E8601DZ','E8601DZ'
|
,'DTYYQC','E8601DN','E8601DN','E8601DT','E8601DT','E8601DZ','E8601DZ')
|
||||||
,'NLDATM') then return('DATETIME');
|
then return('DATETIME');
|
||||||
else if fmt in ('DATE','YYMMDD','B8601DA','B8601DA','DAY','DDMMYY'
|
else if fmt in ('DATE','YYMMDD','B8601DA','B8601DA','DAY','DDMMYY'
|
||||||
,'DDMMYYB','DDMMYYC','DDMMYYD','DDMMYYN','DDMMYYP','DDMMYYS','DDMMYYx'
|
,'DDMMYYB','DDMMYYC','DDMMYYD','DDMMYYN','DDMMYYP','DDMMYYS','DDMMYYx'
|
||||||
,'DOWNAME','E8601DA','E8601DA','JULDAY','JULIAN','MMDDYY','MMDDYYB'
|
,'DOWNAME','E8601DA','E8601DA','JULDAY','JULIAN','MMDDYY','MMDDYYB'
|
||||||
@@ -92,7 +92,7 @@ function mcf_getfmttype(fmtnm $) $8;
|
|||||||
,'YYMMD','YYMMDDB','YYMMDDC','YYMMDDD','YYMMDDN','YYMMDDP','YYMMDDS'
|
,'YYMMD','YYMMDDB','YYMMDDC','YYMMDDD','YYMMDDN','YYMMDDP','YYMMDDS'
|
||||||
,'YYMMDDx','YYMMN','YYMMP','YYMMS','YYMMx','YYMON','YYQ','YYQC','YYQD'
|
,'YYMMDDx','YYMMN','YYMMP','YYMMS','YYMMx','YYMON','YYQ','YYQC','YYQD'
|
||||||
,'YYQN','YYQP','YYQR','YYQRC','YYQRD','YYQRN','YYQRP','YYQRS','YYQRx'
|
,'YYQN','YYQP','YYQR','YYQRC','YYQRD','YYQRN','YYQRP','YYQRS','YYQRx'
|
||||||
,'YYQS','YYQx','YYQZ','NLDATE') then return('DATE');
|
,'YYQS','YYQx','YYQZ') then return('DATE');
|
||||||
else if fmt in ('TIME','B8601LZ','B8601LZ','B8601TM','B8601TM','B8601TZ'
|
else if fmt in ('TIME','B8601LZ','B8601LZ','B8601TM','B8601TM','B8601TZ'
|
||||||
,'B8601TZ','E8601LZ','E8601LZ','E8601TM','E8601TM','E8601TZ','E8601TZ'
|
,'B8601TZ','E8601LZ','E8601LZ','E8601TM','E8601TM','E8601TZ','E8601TZ'
|
||||||
,'HHMM','HOUR','MMSS','TIMEAMPM','TOD') then return('TIME');
|
,'HHMM','HOUR','MMSS','TIMEAMPM','TOD') then return('TIME');
|
||||||
|
|||||||
@@ -1,25 +1,22 @@
|
|||||||
/**
|
/**
|
||||||
@file mm_getdetails.sas
|
@file mm_getdetails.sas
|
||||||
@brief extracts metadata attributes and associations for a particular uri
|
@brief extracts metadata attributes and associations for a particular uri
|
||||||
|
|
||||||
@param [in] uri the metadata object for which to return
|
@param [in] uri the metadata object for which to return
|
||||||
attributes / associations
|
attributes / associations
|
||||||
@param [in] sortoptions= Enables sorting of the output datasets, for example,
|
|
||||||
`SORTSEQ=LINGUISTIC`
|
|
||||||
@param [out] outattrs= (work.attributes)
|
@param [out] outattrs= (work.attributes)
|
||||||
The dataset to create that contains the list of attributes
|
The dataset to create that contains the list of attributes
|
||||||
@param [out] outassocs= (work.associations)
|
@param [out] outassocs= (work.associations)
|
||||||
The dataset to contain the list of associations
|
The dataset to contain the list of associations
|
||||||
|
|
||||||
<h4> Related Files </h4>
|
@version 9.2
|
||||||
@li mm_getobjects.sas
|
@author Allan Bowe
|
||||||
@li mm_gettypes.sas
|
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
||||||
%macro mm_getdetails(uri
|
%macro mm_getdetails(uri
|
||||||
,outattrs=work.attributes
|
,outattrs=work.attributes
|
||||||
,outassocs=work.associations
|
,outassocs=work.associations
|
||||||
,sortoptions=
|
|
||||||
)/*/STORE SOURCE*/;
|
)/*/STORE SOURCE*/;
|
||||||
|
|
||||||
data &outassocs;
|
data &outassocs;
|
||||||
@@ -44,7 +41,7 @@ data &outassocs;
|
|||||||
n1+1;
|
n1+1;
|
||||||
end;
|
end;
|
||||||
run;
|
run;
|
||||||
proc sort &sortoptions;
|
proc sort SORTSEQ=LINGUISTIC;
|
||||||
by assoc name;
|
by assoc name;
|
||||||
run;
|
run;
|
||||||
|
|
||||||
@@ -64,7 +61,7 @@ data &outattrs;
|
|||||||
n1+1;
|
n1+1;
|
||||||
end;
|
end;
|
||||||
run;
|
run;
|
||||||
proc sort &sortoptions;
|
proc sort SORTSEQ=LINGUISTIC;
|
||||||
by type name;
|
by type name;
|
||||||
run;
|
run;
|
||||||
|
|
||||||
|
|||||||
1896
package-lock.json
generated
1896
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
15
package.json
15
package.json
@@ -7,7 +7,7 @@
|
|||||||
"Viya",
|
"Viya",
|
||||||
"SASjs"
|
"SASjs"
|
||||||
],
|
],
|
||||||
"author": "Allan Bowe",
|
"author": "Allan Bowe <support@macropeople.com>",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/sasjs/core.git"
|
"url": "git+https://github.com/sasjs/core.git"
|
||||||
@@ -26,10 +26,13 @@
|
|||||||
"homepage": "https://core.sasjs.io",
|
"homepage": "https://core.sasjs.io",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "npx @sasjs/cli cbd -t server",
|
"build": "sasjs cbd -t server",
|
||||||
"docs": "npx @sasjs/cli doc -t docsonly && ./sasjs/utils/build.sh",
|
"docs": "sasjs doc -t docsonly && ./sasjs/utils/build.sh",
|
||||||
"test": "npx @sasjs/cli test -t server",
|
"test": "sasjs test -t server",
|
||||||
"lint": "npx @sasjs/cli lint",
|
"lint": "sasjs lint",
|
||||||
"prepare": "git rev-parse --git-dir && git config core.hooksPath ./.git-hooks || true"
|
"prepare": "git rev-parse --git-dir && git config core.hooksPath ./.git-hooks || true"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@sasjs/cli": "^4.4.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,27 +1,22 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
####################################################################
|
####################################################################
|
||||||
# PROJECT: SASjs Core Docs Build
|
# PROJECT: Macro Core Docs Build #
|
||||||
# To execute, use the npm command (npm run docs)
|
# To execute, use the npm command (npm run docs) #
|
||||||
# Target repo will have github action to create sitemap
|
|
||||||
# https://github.com/marketplace/actions/generate-sitemap
|
|
||||||
####################################################################
|
####################################################################
|
||||||
|
|
||||||
# refresh github pages site
|
# refresh github pages site
|
||||||
rm -rf sasjsbuild/docsite
|
rm -rf sasjsbuild/docsite
|
||||||
git clone git@github.com:sasjs/core.github.io.git sasjsbuild/docsite
|
git clone git@github.com:sasjs/core.github.io.git sasjsbuild/docsite
|
||||||
rm -rf sasjsbuild/docsite/*.html
|
rm -rf sasjsbuild/docsite/*
|
||||||
rm -rf sasjsbuild/docsite/*.js
|
mv sasjsbuild/docs/* sasjsbuild/docsite/
|
||||||
rm -rf sasjsbuild/docsite/*.png
|
|
||||||
rm -rf sasjsbuild/docsite/*.dot
|
|
||||||
rm -rf sasjsbuild/docsite/*.css
|
|
||||||
rm -rf sasjsbuild/docsite/*.svg
|
|
||||||
rm -rf search
|
|
||||||
cp -R sasjsbuild/docs/* sasjsbuild/docsite/
|
|
||||||
cd sasjsbuild/docsite/
|
cd sasjsbuild/docsite/
|
||||||
git config user.name sasjs
|
|
||||||
echo 'core.sasjs.io' > CNAME
|
echo 'core.sasjs.io' > CNAME
|
||||||
git add .
|
git add .
|
||||||
git commit -m "build.sh build on $(date +%F:%H:%M:%S)"
|
git commit -m "build.sh build on $(date +%F:%H:%M:%S)"
|
||||||
git push
|
git push
|
||||||
|
npx sitemap-generator-cli https://core.sasjs.io
|
||||||
|
git add .
|
||||||
|
git commit -m "adding sitemap"
|
||||||
|
git push
|
||||||
|
|
||||||
echo "check it out: https://sasjs.github.io/core.github.io/files.html"
|
echo "check it out: https://sasjs.github.io/core.github.io/files.html"
|
||||||
|
|||||||
Reference in New Issue
Block a user