@sasjs/utils 3.5.1 → 3.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/file/file.js +4 -2
  2. package/file/file.js.map +1 -1
  3. package/macros/mf_abort.sas +7 -2
  4. package/macros/mf_deletefile.sas +1 -1
  5. package/macros/mf_existds.sas +1 -1
  6. package/macros/mf_existfileref.sas +2 -2
  7. package/macros/mf_existfunction.sas +1 -1
  8. package/macros/mf_existvar.sas +8 -4
  9. package/macros/mf_existvarlist.sas +2 -2
  10. package/macros/mf_getapploc.sas +1 -0
  11. package/macros/mf_getattrc.sas +2 -2
  12. package/macros/mf_getattrn.sas +2 -2
  13. package/macros/mf_getfmtlist.sas +3 -4
  14. package/macros/mf_getgitbranch.sas +37 -0
  15. package/macros/mf_getkeyvalue.sas +3 -2
  16. package/macros/mf_getplatform.sas +1 -1
  17. package/macros/mf_getschema.sas +1 -1
  18. package/macros/mf_getuniquelibref.sas +2 -2
  19. package/macros/mf_getuniquename.sas +1 -1
  20. package/macros/mf_getuser.sas +0 -2
  21. package/macros/mf_getvalue.sas +3 -3
  22. package/macros/mf_getvarformat.sas +2 -1
  23. package/macros/mf_getvarlen.sas +2 -2
  24. package/macros/mf_getvarnum.sas +2 -2
  25. package/macros/mf_getvartype.sas +2 -2
  26. package/macros/mf_getxengine.sas +1 -1
  27. package/macros/mf_increment.sas +2 -2
  28. package/macros/mf_isblank.sas +2 -2
  29. package/macros/mf_isdir.sas +1 -1
  30. package/macros/mf_loc.sas +6 -1
  31. package/macros/mf_mimetype.sas +436 -0
  32. package/macros/mf_mkdir.sas +1 -1
  33. package/macros/mf_mval.sas +2 -0
  34. package/macros/mf_nobs.sas +1 -1
  35. package/macros/mf_readfile.sas +63 -0
  36. package/macros/mf_trimstr.sas +2 -2
  37. package/macros/mf_wordsinstr1andstr2.sas +2 -2
  38. package/macros/mf_wordsinstr1butnotstr2.sas +2 -2
  39. package/macros/mf_writefile.sas +2 -2
  40. package/macros/mp_abort.sas +50 -13
  41. package/macros/mp_aligndecimal.sas +95 -0
  42. package/macros/mp_appendfile.sas +2 -2
  43. package/macros/mp_applyformats.sas +5 -5
  44. package/macros/mp_assert.sas +1 -1
  45. package/macros/mp_assertcols.sas +3 -3
  46. package/macros/mp_assertcolvals.sas +9 -5
  47. package/macros/mp_assertscope.sas +4 -4
  48. package/macros/mp_base64copy.sas +2 -2
  49. package/macros/mp_binarycopy.sas +7 -6
  50. package/macros/mp_chop.sas +4 -3
  51. package/macros/mp_cleancsv.sas +5 -4
  52. package/macros/mp_cntlout.sas +16 -7
  53. package/macros/mp_copyfolder.sas +2 -2
  54. package/macros/mp_createconstraints.sas +3 -3
  55. package/macros/mp_createwebservice.sas +1 -1
  56. package/macros/mp_csv2ds.sas +6 -5
  57. package/macros/mp_deleteconstraints.sas +5 -3
  58. package/macros/mp_deletefolder.sas +1 -1
  59. package/macros/mp_dictionary.sas +1 -1
  60. package/macros/mp_dirlist.sas +1 -1
  61. package/macros/mp_distinctfmtvalues.sas +5 -5
  62. package/macros/mp_ds2csv.sas +10 -1
  63. package/macros/mp_ds2ddl.sas +14 -2
  64. package/macros/mp_ds2md.sas +1 -0
  65. package/macros/mp_dsmeta.sas +2 -2
  66. package/macros/mp_filtercheck.sas +105 -16
  67. package/macros/mp_filtergenerate.sas +2 -2
  68. package/macros/mp_filterstore.sas +4 -3
  69. package/macros/mp_getcols.sas +6 -4
  70. package/macros/mp_getdbml.sas +4 -4
  71. package/macros/mp_getddl.sas +15 -10
  72. package/macros/mp_getformats.sas +13 -3
  73. package/macros/mp_gitlog.sas +104 -0
  74. package/macros/mp_gitstatus.sas +1 -1
  75. package/macros/mp_gsubfile.sas +6 -6
  76. package/macros/mp_guesspk.sas +1 -1
  77. package/macros/mp_hashdataset.sas +1 -1
  78. package/macros/mp_init.sas +1 -0
  79. package/macros/mp_lib2cards.sas +7 -7
  80. package/macros/mp_loadformat.sas +127 -47
  81. package/macros/mp_lockanytable.sas +31 -24
  82. package/macros/mp_md5.sas +3 -4
  83. package/macros/mp_perflog.sas +3 -3
  84. package/macros/mp_prevobs.sas +5 -5
  85. package/macros/mp_recursivejoin.sas +7 -6
  86. package/macros/mp_replace.sas +7 -5
  87. package/macros/mp_runddl.sas +3 -3
  88. package/macros/mp_searchcols.sas +7 -6
  89. package/macros/mp_stackdiffs.sas +1 -0
  90. package/macros/mp_storediffs.sas +8 -8
  91. package/macros/mp_stprequests.sas +4 -3
  92. package/macros/mp_stripdiffs.sas +256 -0
  93. package/macros/mp_testjob.sas +2 -2
  94. package/macros/mp_testwritespeedlibrary.sas +3 -3
  95. package/macros/mp_tree.sas +2 -2
  96. package/macros/mp_unzip.sas +5 -4
  97. package/macros/mp_updatevarlength.sas +3 -3
  98. package/macros/mp_validatecol.sas +3 -3
  99. package/macros/mp_wait4file.sas +1 -1
  100. package/macros/mp_webin.sas +1 -1
  101. package/macros/mp_zip.sas +5 -5
  102. package/package.json +5 -6
@@ -0,0 +1,256 @@
1
+ /**
2
+ @file
3
+ @brief Generates a stage dataset to revert diffs tracked in an audit table
4
+ @details A big benefit of tracking data changes in an audit table is that
5
+ those changes can be subsequently reverted if necessary!
6
+
7
+ This macro prepares a staging dataset containing those differences - eg for:
8
+
9
+ @li deleted rows - these are re-inserted
10
+ @li changed rows - differences are reverted
11
+ @li added rows - marked with `_____DELETE__THIS__RECORD_____="YES"`
12
+
13
+ These changes are NOT applied to the base table - a staging dataset is
14
+ simply prepared for an ETL process to action. In Data Controller, this
15
+ dataset is used directly as an input to the APPROVE process (so that the
16
+ reversion diffs can be reviewed prior to being applied).
17
+
18
+
19
+ @param [in] libds Base library.dataset (will not be modified). The library
20
+ must be assigned.
21
+ @param [in] loadref Unique identifier for the version to be reverted. This
22
+ change, plus ALL SUBSEQUENT CHANGES, will be reverted in the output table.
23
+ @param [in] difftable The dataset containing the diffs. Definition available
24
+ in mddl_dc_difftable.sas
25
+ @param [in] filtervar= (0) If provided, the contents of this macro variable
26
+ will be applied as an additional filter against &libds
27
+ @param [out] outds= (work.mp_stripdiffs) Output table containing the diffs.
28
+ Has the same format as the base datset, plus a
29
+ `_____DELETE__THIS__RECORD_____` variable.
30
+ @param [in] mdebug= set to 1 to enable DEBUG messages and preserve outputs
31
+
32
+ <h4> SAS Macros </h4>
33
+ @li mf_getuniquefileref.sas
34
+ @li mf_getuniquename.sas
35
+ @li mf_getvarlist.sas
36
+ @li mf_islibds.sas
37
+ @li mf_wordsinstr1butnotstr2.sas
38
+ @li mp_abort.sas
39
+ @li mp_ds2squeeze.sas
40
+
41
+ <h4> Related Macros </h4>
42
+ @li mddl_dc_difftable.sas
43
+ @li mp_stackdiffs.sas
44
+ @li mp_storediffs.sas
45
+ @li mp_stripdiffs.test.sas
46
+
47
+ @version 9.2
48
+ @author Allan Bowe
49
+ **/
50
+ /** @cond */
51
+
52
+ %macro mp_stripdiffs(libds
53
+ ,loadref
54
+ ,difftable
55
+ ,filtervar=0
56
+ ,outds=work.mp_stripdiffs
57
+ ,mdebug=0
58
+ )/*/STORE SOURCE*/;
59
+ %local dbg;
60
+ %if &mdebug=1 %then %do;
61
+ %put &sysmacroname entry vars:;
62
+ %put _local_;
63
+ %end;
64
+ %else %let dbg=*;
65
+
66
+ %let libds=%upcase(&libds);
67
+
68
+ /* safety checks */
69
+ %mp_abort(iftrue= (&syscc ne 0)
70
+ ,mac=&sysmacroname
71
+ ,msg=%str(SYSCC=&syscc on entry. Clean session required!)
72
+ )
73
+ %let libds=%upcase(&libds);
74
+ %mp_abort(iftrue= (%mf_islibds(&libds)=0)
75
+ ,mac=&sysmacroname
76
+ ,msg=%str(Invalid library.dataset reference - %superq(libds))
77
+ )
78
+
79
+ /* set up unique and temporary vars */
80
+ %local ds1 ds2 ds3 ds4 ds5 fref1 filterstr;
81
+ %let fref1=%mf_getuniquefileref();
82
+ %if &filtervar ne 0 %then %let filterstr=%superq(&filtervar);
83
+ %else %let filterstr=%str(1=1);
84
+
85
+ /* get timestamp of the diff to be reverted */
86
+ %local ts;
87
+ proc sql noprint;
88
+ select put(processed_dttm,datetime19.6) into: ts
89
+ from &difftable where load_ref="&loadref";
90
+ %mp_abort(iftrue= (&sqlobs=0)
91
+ ,mac=&sysmacroname
92
+ ,msg=%str(Load ref %superq(loadref) not found!)
93
+ )
94
+
95
+ /* extract diffs for this base table from this timestamp onwards */
96
+ %let ds1=%upcase(work.%mf_getuniquename(prefix=mpsd_diffs));
97
+ create table &ds1 (drop=libref dsn) as
98
+ select * from &difftable
99
+ where upcase(cats(libref))="%scan(&libds,1,.)"
100
+ and upcase(cats(dsn))="%scan(&libds,2,.)"
101
+ and processed_dttm ge "&ts"dt
102
+ order by processed_dttm desc, key_hash, is_pk;
103
+
104
+ /* extract key values only */
105
+ %let ds2=%upcase(work.%mf_getuniquename(prefix=mpsd_pks));
106
+ %local keyhash processed;
107
+ %let keyhash=%upcase(%mf_getuniquename(prefix=mpsdvar_keyhash));
108
+ %let processed=%upcase(%mf_getuniquename(prefix=mpsdvar_processed));
109
+ create table &ds2 as
110
+ select key_hash as &keyhash,
111
+ tgtvar_nm,
112
+ tgtvar_type,
113
+ coalescec(oldval_char,newval_char) as charval,
114
+ coalesce(oldval_num, newval_num) as numval,
115
+ processed_dttm as &processed
116
+ from &ds1
117
+ where is_pk=1
118
+ order by &keyhash, &processed;
119
+
120
+ /* grab pk values */
121
+ %local pk;
122
+ select distinct upcase(tgtvar_nm) into: pk separated by ' ' from &ds2;
123
+
124
+ %let ds3=%upcase(work.%mf_getuniquename(prefix=mpsd_keychar));
125
+ proc transpose data=&ds2(where=(tgtvar_type='C'))
126
+ out=&ds3(drop=_name_);
127
+ by &keyhash &processed;
128
+ id TGTVAR_NM;
129
+ var charval;
130
+ run;
131
+
132
+ %let ds4=%upcase(work.%mf_getuniquename(prefix=mpsd_keynum));
133
+ proc transpose data=&ds2(where=(tgtvar_type='N'))
134
+ out=&ds4(drop=_name_);
135
+ by &keyhash &processed;
136
+ id TGTVAR_NM;
137
+ var numval;
138
+ run;
139
+ /* shorten the lengths */
140
+ %mp_ds2squeeze(&ds3,outds=&ds3)
141
+ %mp_ds2squeeze(&ds4,outds=&ds4)
142
+
143
+ /* now merge to get all key values and de-dup */
144
+ %let ds5=%upcase(work.%mf_getuniquename(prefix=mpsd_merged));
145
+ data &ds5;
146
+ length &keyhash $32 &processed 8;
147
+ merge &ds3 &ds4;
148
+ by &keyhash &processed;
149
+ if not missing(&keyhash);
150
+ run;
151
+ proc sort data=&ds5 nodupkey;
152
+ by &pk;
153
+ run;
154
+
155
+ /* join to base table for preliminary stage DS */
156
+ proc sql;
157
+ create table &outds as select "No " as _____DELETE__THIS__RECORD_____
158
+ %do x=1 %to %sysfunc(countw(&pk,%str( )));
159
+ ,a.%scan(&pk,&x,%str( ))
160
+ %end;
161
+ %local notpkcols;
162
+ %let notpkcols=%upcase(%mf_getvarlist(&libds));
163
+ %let notpkcols=%mf_wordsinstr1butnotstr2(str1=&notpkcols,str2=&pk);
164
+ %do x=1 %to %sysfunc(countw(&notpkcols,%str( )));
165
+ ,b.%scan(&notpkcols,&x,%str( ))
166
+ %end;
167
+ from &ds5 a
168
+ left join &libds (where=(&filterstr)) b
169
+ on 1=1
170
+ %do x=1 %to %sysfunc(countw(&pk,%str( )));
171
+ and a.%scan(&pk,&x,%str( ))=b.%scan(&pk,&x,%str( ))
172
+ %end;
173
+ ;
174
+
175
+ /* create SAS code to apply to stage_ds */
176
+ data _null_;
177
+ set &ds1;
178
+ file &fref1 lrecl=33000;
179
+ length charval $32767;
180
+ if _n_=1 then put 'proc sql noprint;';
181
+ by descending processed_dttm key_hash is_pk;
182
+ if move_type='M' then do;
183
+ if first.key_hash then do;
184
+ put "update &outds set " @@;
185
+ end;
186
+ if IS_PK=0 then do;
187
+ put " " tgtvar_nm '=' @@;
188
+ cnt=count(oldval_char,'"');
189
+ charval=quote(trim(substr(oldval_char,1,32765-cnt)));
190
+ if tgtvar_type='C' then put charval @@;
191
+ else put oldval_num @@;
192
+ if not last.is_pk then put ',';
193
+ end;
194
+ else do;
195
+ if first.is_pk then put " where 1=1 " @@;
196
+ put " and " tgtvar_nm '=' @@;
197
+ cnt=count(oldval_char,'"');
198
+ charval=quote(trim(substr(oldval_char,1,32765-cnt)));
199
+ if tgtvar_type='C' then put charval @@;
200
+ else put oldval_num @@;
201
+ end;
202
+ end;
203
+ else if move_type='A' then do;
204
+ if first.key_hash then do;
205
+ put "update &outds set _____DELETE__THIS__RECORD_____='Yes' where 1=1 "@@;
206
+ end;
207
+ /* gating if - as only need PK now */
208
+ if is_pk=1;
209
+ put ' AND ' tgtvar_nm '=' @@;
210
+ cnt=count(newval_char,'"');
211
+ charval=quote(trim(substr(newval_char,1,32765-cnt)));
212
+ if tgtvar_type='C' then put charval @@;
213
+ else put newval_num @@;
214
+ end;
215
+ else if move_type='D' then do;
216
+ if first.key_hash then do;
217
+ put "update &outds set _____DELETE__THIS__RECORD_____='No' " @@;
218
+ end;
219
+ if IS_PK=0 then do;
220
+ put " ," tgtvar_nm '=' @@;
221
+ cnt=count(oldval_char,'"');
222
+ charval=quote(trim(substr(oldval_char,1,32765-cnt)));
223
+ if tgtvar_type='C' then put charval @@;
224
+ else put oldval_num @@;
225
+ end;
226
+ else do;
227
+ if first.is_pk then put " where 1=1 " @@;
228
+ put " and " tgtvar_nm '=' @@;
229
+ cnt=count(oldval_char,'"');
230
+ charval=quote(trim(substr(oldval_char,1,32765-cnt)));
231
+ if tgtvar_type='C' then put charval @@;
232
+ else put oldval_num @@;
233
+ end;
234
+ end;
235
+ if last.key_hash then put ';';
236
+ run;
237
+
238
+ /* apply the modification statements */
239
+ %inc &fref1/source2 lrecl=33000;
240
+
241
+ %if &mdebug=0 %then %do;
242
+ proc sql;
243
+ drop table &ds1, &ds2, &ds3, &ds4, &ds5;
244
+ file &fref1 clear;
245
+ %end;
246
+ %else %do;
247
+ data _null_;
248
+ infile &fref1;
249
+ input;
250
+ if _n_=1 then putlog "Contents of SQL adjustments";
251
+ putlog _infile_;
252
+ run;
253
+ %end;
254
+
255
+ %mend mp_stripdiffs;
256
+ /** @endcond */
@@ -8,8 +8,8 @@
8
8
  duration=60*5
9
9
  )
10
10
 
11
- @param [in] duration= the time in seconds which the job should run for. Actual
12
- time may vary, as the check is done in between steps. Default = 30 (seconds).
11
+ @param [in] duration= (30) The time in seconds which the job should run for.
12
+ Actual time may vary, as the check is done in between steps.
13
13
 
14
14
  <h4> SAS Macros </h4>
15
15
  @li mf_getuniquelibref.sas
@@ -11,9 +11,9 @@
11
11
  ,outds=work.results
12
12
  )
13
13
 
14
- @param lib= (WORK) The library in which to create the table
15
- @param size= (0.1) The size in GB of the table to create
16
- @param outds= (WORK.RESULTS) The output dataset to be created.
14
+ @param [in] lib= (WORK) The library in which to create the table
15
+ @param [in] size= (0.1) The size in GB of the table to create
16
+ @param [out] outds= (WORK.RESULTS) The output dataset to be created.
17
17
 
18
18
  <h4> SAS Macros </h4>
19
19
  @li mf_getuniquename.sas
@@ -15,8 +15,8 @@ https://communities.sas.com/t5/SAS-Programming/listing-all-files-within-a-direct
15
15
  https://communities.sas.com/t5/SAS-Programming/listing-all-files-of-all-types-from-all-subdirectories/m-p/334113/highlight/true#M75419
16
16
 
17
17
 
18
- @param dir= Directory to be scanned (default=/tmp)
19
- @param outds= Dataset to create (default=work.mp_tree)
18
+ @param [in] dir= (/tmp) Directory to be scanned
19
+ @param [out] outds= (work.mp_tree) Dataset to create
20
20
 
21
21
  @returns outds contains the following variables:
22
22
 
@@ -13,11 +13,12 @@
13
13
 
14
14
  %mp_unzip(ziploc="/some/file.zip",outdir=/some/folder)
15
15
 
16
- More info: https://blogs.sas.com/content/sasdummy/2015/05/11/using-filename-zip-to-unzip-and-read-data-files-in-sas/
16
+ More info:
17
+ https://blogs.sas.com/content/sasdummy/2015/05/11/using-filename-zip-to-unzip-and-read-data-files-in-sas/
17
18
 
18
- @param ziploc= Fileref or quoted full path to zip file ("/path/to/file.zip")
19
- @param outdir= (%sysfunc(pathname(work))) Directory in which to write the
20
- outputs (created if non existant)
19
+ @param [in] ziploc= Fileref or quoted full path, eg: "/path/to/file.zip"
20
+ @param [out] outdir= (%sysfunc(pathname(work))) Directory in which to write
21
+ the outputs (created if needed)
21
22
 
22
23
  <h4> SAS Macros </h4>
23
24
  @li mf_mkdir.sas
@@ -14,9 +14,9 @@
14
14
  proc sql;
15
15
  describe table example;
16
16
 
17
- @param libds the library.dataset to be modified
18
- @param var The variable to modify
19
- @param len The new length to apply
17
+ @param [in] libds the library.dataset to be modified
18
+ @param [in] var The variable to modify
19
+ @param [in] len The new length to apply
20
20
 
21
21
  <h4> SAS Macros </h4>
22
22
  @li mf_existds.sas
@@ -57,7 +57,7 @@
57
57
  %end;
58
58
  %else %if &rule=ISNUM %then %do;
59
59
  /*
60
- credit SØREN LASSEN
60
+ credit SOREN LASSEN
61
61
  https://sasmacro.blogspot.com/2009/06/welcome-isnum-macro.html
62
62
  */
63
63
  &tempcol=input(&incol,?? best32.);
@@ -71,7 +71,7 @@
71
71
  retain &tempcol;
72
72
  &tempcol=prxparse('/^[_a-z]\w{0,7}\.[_a-z]\w{0,31}$/i');
73
73
  if missing(&tempcol) then do;
74
- putlog "%str(ERR)OR: Invalid expression for LIBDS";
74
+ putlog 'ERR' +(-1) "OR: Invalid expression for LIBDS";
75
75
  stop;
76
76
  end;
77
77
  drop &tempcol;
@@ -85,7 +85,7 @@
85
85
  retain &tempcol;
86
86
  &tempcol=prxparse('/^[_a-z\$]\w{0,31}\.[0-9]*$/i');
87
87
  if missing(&tempcol) then do;
88
- putlog "%str(ERR)OR: Invalid expression for FORMAT";
88
+ putlog 'ERR' +(-1) "OR: Invalid expression for FORMAT";
89
89
  stop;
90
90
  end;
91
91
  drop &tempcol;
@@ -11,7 +11,7 @@
11
11
  @param [in] file The file to wait for. Must be provided.
12
12
  @param [in] maxwait= (0) Number of seconds to wait. If set to zero, will
13
13
  loop indefinitely (to a maximum of 46 days, per SAS [documentation](
14
- https://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a001418809.htm
14
+ https://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a001418809.htm
15
15
  )). Otherwise, execution will proceed upon sleep expiry.
16
16
  @param [in] interval= (1) The wait period between sleeps, in seconds
17
17
 
@@ -18,7 +18,7 @@
18
18
 
19
19
  Usage:
20
20
 
21
- %mp_webin()
21
+ %mp_webin()
22
22
 
23
23
  This was created as a macro procedure (over a macro function) as it will also
24
24
  use the filename statement in Viya environments (where `_webin_fileuri` is
package/macros/mp_zip.sas CHANGED
@@ -15,14 +15,14 @@
15
15
  <h4> SAS Macros </h4>
16
16
  @li mp_dirlist.sas
17
17
 
18
- @param in= unquoted filepath, dataset of files or directory to zip
19
- @param type= (FILE) Valid values:
18
+ @param [in] in= unquoted filepath, dataset of files or directory to zip
19
+ @param [in] type= (FILE) Valid values:
20
20
  @li FILE - /full/path/and/filename.extension to a particular file
21
21
  @li DATASET - a dataset containing a list of files to zip (see `incol`)
22
22
  @li DIRECTORY - a directory to zip
23
- @param outname= (FILE) Output file to create, _without_ .zip extension
24
- @param outpath= (%sysfunc(pathname(WORK))) Parent folder for output zip file
25
- @param incol= if DATASET input, say which column contains the filepath
23
+ @param [out] outname= (FILE) Output file to create, _without_ .zip extension
24
+ @param [out] outpath= (%sysfunc(pathname(WORK))) Parent folder for zip file
25
+ @param [in] incol= () If DATASET input, say which column contains the filepath
26
26
 
27
27
  <h4> Related Macros </h4>
28
28
  @li mp_unzip.sas
package/package.json CHANGED
@@ -14,7 +14,7 @@
14
14
  "nodeVersionMessage": "echo \u001b[33m make sure you are running node lts version \u001b[0m",
15
15
  "preinstall": "npm run nodeVersionMessage",
16
16
  "prebuild": "npm run nodeVersionMessage",
17
- "build": "rimraf build && tsc",
17
+ "build": "npx rimraf build && tsc",
18
18
  "postbuild": "npm run copy:macros",
19
19
  "copy:macros": "ts-node ./scripts/copySASjsCore.ts",
20
20
  "prepublishOnly": "cp -r ./build/* . && rm -rf ./build && rm -rf ./src && rm jest.config.js && rm tsconfig.json",
@@ -36,7 +36,7 @@
36
36
  },
37
37
  "homepage": "https://github.com/sasjs/utils#readme",
38
38
  "devDependencies": {
39
- "@sasjs/core": "^4.43.1",
39
+ "@sasjs/core": "4.59.9",
40
40
  "@types/cli-table": "0.3.0",
41
41
  "@types/find": "0.2.1",
42
42
  "@types/jest": "29.4.0",
@@ -51,17 +51,16 @@
51
51
  },
52
52
  "dependencies": {
53
53
  "@fast-csv/format": "4.3.5",
54
- "@types/fs-extra": "9.0.13",
54
+ "@types/fs-extra": "11.0.4",
55
55
  "@types/prompts": "2.0.13",
56
56
  "chalk": "4.1.1",
57
57
  "cli-table": "0.3.6",
58
58
  "consola": "2.15.0",
59
59
  "find": "0.3.0",
60
- "fs-extra": "10.0.0",
60
+ "fs-extra": "11.3.0",
61
61
  "jwt-decode": "3.1.2",
62
62
  "prompts": "2.4.1",
63
- "rimraf": "4.1.4",
64
63
  "valid-url": "1.0.9"
65
64
  },
66
- "version": "3.5.1"
65
+ "version": "3.5.3"
67
66
  }