@sassoftware/viya-serverjs 0.1.1 → 0.2.0

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 (405) hide show
  1. package/.babelrc +6 -0
  2. package/.dockerignore +2 -0
  3. package/.env +29 -0
  4. package/.env.proxy +31 -0
  5. package/.env.server +29 -0
  6. package/.eslintignore +4 -0
  7. package/.eslintrc.json +42 -0
  8. package/Dockerfile +44 -0
  9. package/README.md +6 -4
  10. package/cli.js +9 -0
  11. package/images/viya-apiserverjs.png +0 -0
  12. package/lib/{core/config.js → config.js} +5 -24
  13. package/lib/handlers/appCallback.js +62 -0
  14. package/lib/handlers/codeAuth.js +61 -0
  15. package/lib/{core/handlers → handlers}/decodeJwt.js +2 -2
  16. package/lib/handlers/favicon.js +45 -0
  17. package/lib/handlers/getApp.js +77 -0
  18. package/lib/handlers/getApp2.js +48 -0
  19. package/lib/handlers/getUser.js +49 -0
  20. package/lib/{core/handlers → handlers}/index.js +2 -2
  21. package/lib/handlers/keepAlive.js +99 -0
  22. package/lib/handlers/keepAlive2.js +33 -0
  23. package/lib/handlers/logon.js +44 -0
  24. package/lib/handlers/logout.js +88 -0
  25. package/lib/handlers/proxyMapUri.js +78 -0
  26. package/lib/handlers/proxyOnResponse.js +26 -0
  27. package/lib/handlers/reactDev.js +52 -0
  28. package/lib/handlers/setCookies.js +110 -0
  29. package/lib/{core/iService.js → iService.js} +45 -30
  30. package/lib/index.js +177 -10
  31. package/lib/{core/parseDocker.js → parseDocker.js} +1 -1
  32. package/lib/plugins/SASauth.js +101 -0
  33. package/lib/plugins/appCookie.js +99 -0
  34. package/lib/plugins/setContext.js +56 -0
  35. package/lib/{core/plugins → plugins}/setDefaultRoutes.js +67 -58
  36. package/lib/plugins/setupAuth.js +87 -0
  37. package/lib/{core/plugins → plugins}/setupUserRoutes.js +21 -12
  38. package/lib/plugins/token.js +31 -0
  39. package/lib/schemes/SASTokenScheme.js +71 -0
  40. package/package.json +54 -10
  41. package/packages/core/config.js +86 -0
  42. package/packages/core/handlers/appCallback.js +40 -0
  43. package/packages/core/handlers/codeAuth.js +31 -0
  44. package/packages/core/handlers/decodeJwt.js +11 -0
  45. package/packages/core/handlers/favicon.js +24 -0
  46. package/packages/core/handlers/getApp.js +41 -0
  47. package/packages/core/handlers/getApp2.js +26 -0
  48. package/packages/core/handlers/getUser.js +20 -0
  49. package/packages/core/handlers/index.js +36 -0
  50. package/packages/core/handlers/keepAlive.js +54 -0
  51. package/packages/core/handlers/keepAlive2.js +13 -0
  52. package/packages/core/handlers/logon.js +24 -0
  53. package/packages/core/handlers/logout.js +43 -0
  54. package/{lib → packages}/core/handlers/proxyMapUri.js +25 -36
  55. package/packages/core/handlers/proxyOnResponse.js +12 -0
  56. package/packages/core/handlers/reactDev.js +30 -0
  57. package/packages/core/handlers/setCookies.js +78 -0
  58. package/packages/core/iService.js +369 -0
  59. package/packages/core/index.js +249 -0
  60. package/packages/core/parseDocker.js +33 -0
  61. package/packages/core/plugins/SASauth.js +79 -0
  62. package/packages/core/plugins/appCookie.js +49 -0
  63. package/packages/core/plugins/setContext.js +34 -0
  64. package/packages/core/plugins/setDefaultRoutes.js +262 -0
  65. package/packages/core/plugins/setupAuth.js +48 -0
  66. package/packages/core/plugins/setupUserRoutes.js +48 -0
  67. package/packages/core/plugins/token.js +10 -0
  68. package/packages/core/schemes/SASTokenScheme.js +43 -0
  69. package/packages/core/visionIndex.html +24 -0
  70. package/packages/examples/apitest/.env +11 -0
  71. package/packages/examples/apitest/.eslintrc.json +42 -0
  72. package/packages/examples/apitest/Dockerfile +41 -0
  73. package/packages/examples/apitest/api.js +88 -0
  74. package/packages/examples/apitest/appenv.js +6 -0
  75. package/packages/examples/apitest/docker-compose.yml +10 -0
  76. package/packages/examples/apitest/package.json +19 -0
  77. package/packages/examples/apitest/public/data/Cluster_SDOH1.sas +182 -0
  78. package/packages/examples/apitest/public/data/Cluster_SDOH6.sas +180 -0
  79. package/packages/examples/apitest/public/data/LeNet_snzrle.astore +0 -0
  80. package/packages/examples/apitest/public/data/NeuralNetwork_High_med.sas +2409 -0
  81. package/packages/examples/apitest/public/data/NeuralNetwork_high_med1.sas +2409 -0
  82. package/packages/examples/apitest/public/data/ast/GBlocalcopy.sasast +0 -0
  83. package/packages/examples/apitest/public/data/ast/LeNet_snzrle.astore +0 -0
  84. package/packages/examples/apitest/public/data/ast/gb_IrisGB.sasast +0 -0
  85. package/packages/examples/apitest/public/data/ast/paysimsvdd.sasast +0 -0
  86. package/packages/examples/apitest/public/data/ast/svmlocalcopy.sasast +0 -0
  87. package/packages/examples/apitest/public/data/cars.csv +429 -0
  88. package/packages/examples/apitest/public/data/cluster_test2.sas7bdat +0 -0
  89. package/packages/examples/apitest/public/data/cmdList.txt +15 -0
  90. package/packages/examples/apitest/public/data/gradBoost.sashdat +0 -0
  91. package/packages/examples/apitest/public/data/iris.csv +151 -0
  92. package/packages/examples/apitest/public/data/model1.sas7bdat +0 -0
  93. package/packages/examples/apitest/public/favicon.ico +0 -0
  94. package/packages/examples/apitest/public/index.html +316 -0
  95. package/packages/examples/apitest/public/index2.html +102 -0
  96. package/packages/examples/apitest/public/logon.html +42 -0
  97. package/packages/examples/apitest/public/myapp/secondary.html +1 -0
  98. package/packages/examples/apitest/public/myapp/test.js +2 -0
  99. package/packages/examples/apitest/public/onlogoff.html +53 -0
  100. package/packages/examples/apitest/start.sh +15 -0
  101. package/packages/examples/app/.env +32 -0
  102. package/packages/examples/app/.envProxy +19 -0
  103. package/packages/examples/app/.envimpl +12 -0
  104. package/packages/examples/app/.eslintrc.json +42 -0
  105. package/packages/examples/app/Dockerfile +42 -0
  106. package/packages/examples/app/appenv.js +6 -0
  107. package/packages/examples/app/certs/ca.crt +19 -0
  108. package/packages/examples/app/certs/tls.crt +25 -0
  109. package/packages/examples/app/certs/tls.key +28 -0
  110. package/packages/examples/app/certs/tls.sh +5 -0
  111. package/packages/examples/app/docker-compose.yml +12 -0
  112. package/packages/examples/app/index.js +15 -0
  113. package/packages/examples/app/package.json +20 -0
  114. package/packages/examples/app/public/casread.html +324 -0
  115. package/packages/examples/app/public/data/Cluster_SDOH1.sas +182 -0
  116. package/packages/examples/app/public/data/Cluster_SDOH6.sas +180 -0
  117. package/packages/examples/app/public/data/LeNet_snzrle.astore +0 -0
  118. package/packages/examples/app/public/data/NeuralNetwork_High_med.sas +2409 -0
  119. package/packages/examples/app/public/data/NeuralNetwork_high_med1.sas +2409 -0
  120. package/packages/examples/app/public/data/ast/GBlocalcopy.sasast +0 -0
  121. package/packages/examples/app/public/data/ast/LeNet_snzrle.astore +0 -0
  122. package/packages/examples/app/public/data/ast/gb_IrisGB.sasast +0 -0
  123. package/packages/examples/app/public/data/ast/paysimsvdd.sasast +0 -0
  124. package/packages/examples/app/public/data/ast/svmlocalcopy.sasast +0 -0
  125. package/packages/examples/app/public/data/cars.csv +429 -0
  126. package/packages/examples/app/public/data/cluster_test2.sas7bdat +0 -0
  127. package/packages/examples/app/public/data/cmdList.txt +15 -0
  128. package/packages/examples/app/public/data/gradBoost.sashdat +0 -0
  129. package/packages/examples/app/public/data/iris.csv +151 -0
  130. package/packages/examples/app/public/data/model1.sas7bdat +0 -0
  131. package/packages/examples/app/public/favicon.ico +0 -0
  132. package/packages/examples/app/public/index.html +332 -0
  133. package/packages/examples/app/public/indexProxy.html +346 -0
  134. package/packages/examples/app/public/indextest.html +316 -0
  135. package/packages/examples/app/public/logon.html +44 -0
  136. package/packages/examples/app/public/micburger.html +345 -0
  137. package/packages/examples/app/public/micburger.txt.html +311 -0
  138. package/packages/examples/app/public/myapp/secondary.html +1 -0
  139. package/packages/examples/app/public/myapp/test.js +2 -0
  140. package/packages/examples/app/public/sara.txt +345 -0
  141. package/packages/examples/app/public/testva2.html +311 -0
  142. package/packages/examples/app/startup.sh +15 -0
  143. package/packages/examples/appdocker/.env +21 -0
  144. package/packages/examples/appdocker/.envProxy +22 -0
  145. package/packages/examples/appdocker/.envimpl +12 -0
  146. package/packages/examples/appdocker/.eslintrc.json +42 -0
  147. package/packages/examples/appdocker/Dockerfile +43 -0
  148. package/packages/examples/appdocker/appenv.js +6 -0
  149. package/packages/examples/appdocker/certs/ca.crt +19 -0
  150. package/packages/examples/appdocker/certs/tls.crt +25 -0
  151. package/packages/examples/appdocker/certs/tls.key +28 -0
  152. package/packages/examples/appdocker/certs/tls.sh +5 -0
  153. package/packages/examples/appdocker/docker-compose.yml +12 -0
  154. package/packages/examples/appdocker/index.js +15 -0
  155. package/packages/examples/appdocker/package.json +20 -0
  156. package/packages/examples/appdocker/public/data/Cluster_SDOH1.sas +182 -0
  157. package/packages/examples/appdocker/public/data/Cluster_SDOH6.sas +180 -0
  158. package/packages/examples/appdocker/public/data/LeNet_snzrle.astore +0 -0
  159. package/packages/examples/appdocker/public/data/NeuralNetwork_High_med.sas +2409 -0
  160. package/packages/examples/appdocker/public/data/NeuralNetwork_high_med1.sas +2409 -0
  161. package/packages/examples/appdocker/public/data/ast/GBlocalcopy.sasast +0 -0
  162. package/packages/examples/appdocker/public/data/ast/LeNet_snzrle.astore +0 -0
  163. package/packages/examples/appdocker/public/data/ast/gb_IrisGB.sasast +0 -0
  164. package/packages/examples/appdocker/public/data/ast/paysimsvdd.sasast +0 -0
  165. package/packages/examples/appdocker/public/data/ast/svmlocalcopy.sasast +0 -0
  166. package/packages/examples/appdocker/public/data/cars.csv +429 -0
  167. package/packages/examples/appdocker/public/data/cluster_test2.sas7bdat +0 -0
  168. package/packages/examples/appdocker/public/data/cmdList.txt +15 -0
  169. package/packages/examples/appdocker/public/data/gradBoost.sashdat +0 -0
  170. package/packages/examples/appdocker/public/data/iris.csv +151 -0
  171. package/packages/examples/appdocker/public/data/model1.sas7bdat +0 -0
  172. package/packages/examples/appdocker/public/favicon.ico +0 -0
  173. package/packages/examples/appdocker/public/index.html +346 -0
  174. package/packages/examples/appdocker/public/indexProxy.html +346 -0
  175. package/packages/examples/appdocker/public/indextest.html +316 -0
  176. package/packages/examples/appdocker/public/logon.html +44 -0
  177. package/packages/examples/appdocker/public/myapp/secondary.html +1 -0
  178. package/packages/examples/appdocker/public/myapp/test.js +2 -0
  179. package/packages/examples/appdocker/startup.sh +15 -0
  180. package/packages/examples/apptest/.env +28 -0
  181. package/packages/examples/apptest/.envProxy +22 -0
  182. package/packages/examples/apptest/.envimpl +12 -0
  183. package/packages/examples/apptest/.eslintrc.json +42 -0
  184. package/packages/examples/apptest/Dockerfile +44 -0
  185. package/packages/examples/apptest/appDir/app1/design.html +350 -0
  186. package/packages/examples/apptest/appDir/app1/index.html +353 -0
  187. package/packages/examples/apptest/appDir/index.html +350 -0
  188. package/packages/examples/apptest/appenv.js +6 -0
  189. package/packages/examples/apptest/docker-compose.yml +12 -0
  190. package/packages/examples/apptest/index.js +444 -0
  191. package/packages/examples/apptest/package.json +24 -0
  192. package/packages/examples/apptest/public/casread2.html +321 -0
  193. package/packages/examples/apptest/public/data/Cluster_SDOH1.sas +182 -0
  194. package/packages/examples/apptest/public/data/Cluster_SDOH6.sas +180 -0
  195. package/packages/examples/apptest/public/data/LeNet_snzrle.astore +0 -0
  196. package/packages/examples/apptest/public/data/NeuralNetwork_High_med.sas +2409 -0
  197. package/packages/examples/apptest/public/data/NeuralNetwork_high_med1.sas +2409 -0
  198. package/packages/examples/apptest/public/data/ast/GBlocalcopy.sasast +0 -0
  199. package/packages/examples/apptest/public/data/ast/LeNet_snzrle.astore +0 -0
  200. package/packages/examples/apptest/public/data/ast/gb_IrisGB.sasast +0 -0
  201. package/packages/examples/apptest/public/data/ast/paysimsvdd.sasast +0 -0
  202. package/packages/examples/apptest/public/data/ast/svmlocalcopy.sasast +0 -0
  203. package/packages/examples/apptest/public/data/cars.csv +429 -0
  204. package/packages/examples/apptest/public/data/cluster_test2.sas7bdat +0 -0
  205. package/packages/examples/apptest/public/data/cmdList.txt +15 -0
  206. package/packages/examples/apptest/public/data/gradBoost.sashdat +0 -0
  207. package/packages/examples/apptest/public/data/iris.csv +151 -0
  208. package/packages/examples/apptest/public/data/model1.sas7bdat +0 -0
  209. package/packages/examples/apptest/public/design.html +349 -0
  210. package/packages/examples/apptest/public/favicon.ico +0 -0
  211. package/packages/examples/apptest/public/help.html +1 -0
  212. package/packages/examples/apptest/public/index.html +353 -0
  213. package/packages/examples/apptest/public/index2.html +353 -0
  214. package/packages/examples/apptest/public/indexProxy.html +346 -0
  215. package/packages/examples/apptest/public/indextest.html +316 -0
  216. package/packages/examples/apptest/public/logon.html +44 -0
  217. package/packages/examples/apptest/public/myapp/q.html +349 -0
  218. package/packages/examples/apptest/public/myapp/secondary.html +1 -0
  219. package/packages/examples/apptest/public/myapp/test.js +2 -0
  220. package/packages/examples/apptest/public/push1.html +187 -0
  221. package/packages/examples/apptest/startup.sh +15 -0
  222. package/packages/examples/apptesti/.env +13 -0
  223. package/packages/examples/apptesti/.eslintrc.json +42 -0
  224. package/packages/examples/apptesti/Dockerfile +42 -0
  225. package/packages/examples/apptesti/appenv.js +6 -0
  226. package/packages/examples/apptesti/certs/ca.crt +19 -0
  227. package/packages/examples/apptesti/certs/tls.crt +25 -0
  228. package/packages/examples/apptesti/certs/tls.key +28 -0
  229. package/packages/examples/apptesti/certs/tls.sh +5 -0
  230. package/packages/examples/apptesti/docker-compose.yml +12 -0
  231. package/{lib/cli.js → packages/examples/apptesti/index.js} +4 -5
  232. package/packages/examples/apptesti/package.json +20 -0
  233. package/packages/examples/apptesti/public/data/Cluster_SDOH1.sas +182 -0
  234. package/packages/examples/apptesti/public/data/Cluster_SDOH6.sas +180 -0
  235. package/packages/examples/apptesti/public/data/LeNet_snzrle.astore +0 -0
  236. package/packages/examples/apptesti/public/data/NeuralNetwork_High_med.sas +2409 -0
  237. package/packages/examples/apptesti/public/data/NeuralNetwork_high_med1.sas +2409 -0
  238. package/packages/examples/apptesti/public/data/ast/GBlocalcopy.sasast +0 -0
  239. package/packages/examples/apptesti/public/data/ast/LeNet_snzrle.astore +0 -0
  240. package/packages/examples/apptesti/public/data/ast/gb_IrisGB.sasast +0 -0
  241. package/packages/examples/apptesti/public/data/ast/paysimsvdd.sasast +0 -0
  242. package/packages/examples/apptesti/public/data/ast/svmlocalcopy.sasast +0 -0
  243. package/packages/examples/apptesti/public/data/cars.csv +429 -0
  244. package/packages/examples/apptesti/public/data/cluster_test2.sas7bdat +0 -0
  245. package/packages/examples/apptesti/public/data/cmdList.txt +15 -0
  246. package/packages/examples/apptesti/public/data/gradBoost.sashdat +0 -0
  247. package/packages/examples/apptesti/public/data/iris.csv +151 -0
  248. package/packages/examples/apptesti/public/data/model1.sas7bdat +0 -0
  249. package/packages/examples/apptesti/public/favicon.ico +0 -0
  250. package/packages/examples/apptesti/public/index.html +346 -0
  251. package/packages/examples/apptesti/public/indexProxy.html +346 -0
  252. package/packages/examples/apptesti/public/indextest.html +316 -0
  253. package/packages/examples/apptesti/public/logon.html +44 -0
  254. package/packages/examples/apptesti/public/main.html +346 -0
  255. package/packages/examples/apptesti/public/myapp/secondary.html +1 -0
  256. package/packages/examples/apptesti/public/myapp/test.js +2 -0
  257. package/packages/examples/apptesti/startup.sh +15 -0
  258. package/packages/examples/basic/.env +10 -0
  259. package/packages/examples/basic/.eslintrc.json +42 -0
  260. package/packages/examples/basic/Dockerfile +41 -0
  261. package/packages/examples/basic/api.js +88 -0
  262. package/packages/examples/basic/appenv.js +6 -0
  263. package/packages/examples/basic/docker-compose.yml +10 -0
  264. package/packages/examples/basic/package.json +19 -0
  265. package/packages/examples/basic/public/data/Cluster_SDOH1.sas +182 -0
  266. package/packages/examples/basic/public/data/Cluster_SDOH6.sas +180 -0
  267. package/packages/examples/basic/public/data/LeNet_snzrle.astore +0 -0
  268. package/packages/examples/basic/public/data/NeuralNetwork_High_med.sas +2409 -0
  269. package/packages/examples/basic/public/data/NeuralNetwork_high_med1.sas +2409 -0
  270. package/packages/examples/basic/public/data/ast/GBlocalcopy.sasast +0 -0
  271. package/packages/examples/basic/public/data/ast/LeNet_snzrle.astore +0 -0
  272. package/packages/examples/basic/public/data/ast/gb_IrisGB.sasast +0 -0
  273. package/packages/examples/basic/public/data/ast/paysimsvdd.sasast +0 -0
  274. package/packages/examples/basic/public/data/ast/svmlocalcopy.sasast +0 -0
  275. package/packages/examples/basic/public/data/cars.csv +429 -0
  276. package/packages/examples/basic/public/data/cluster_test2.sas7bdat +0 -0
  277. package/packages/examples/basic/public/data/cmdList.txt +15 -0
  278. package/packages/examples/basic/public/data/gradBoost.sashdat +0 -0
  279. package/packages/examples/basic/public/data/iris.csv +151 -0
  280. package/packages/examples/basic/public/data/model1.sas7bdat +0 -0
  281. package/packages/examples/basic/public/favicon.ico +0 -0
  282. package/packages/examples/basic/public/index.html +29 -0
  283. package/packages/examples/basic/public/index2.html +102 -0
  284. package/packages/examples/basic/public/logon.html +42 -0
  285. package/packages/examples/basic/public/myapp/secondary.html +1 -0
  286. package/packages/examples/basic/public/myapp/test.js +2 -0
  287. package/packages/examples/basic/public/onlogoff.html +53 -0
  288. package/packages/examples/basic/start.sh +15 -0
  289. package/packages/examples/proxytest/.env +23 -0
  290. package/packages/examples/proxytest/.envimpl +11 -0
  291. package/packages/examples/proxytest/.eslintrc.json +42 -0
  292. package/packages/examples/proxytest/Dockerfile +42 -0
  293. package/packages/examples/proxytest/appenv.js +6 -0
  294. package/packages/examples/proxytest/docker-compose.yml +12 -0
  295. package/packages/examples/proxytest/index.js +57 -0
  296. package/packages/examples/proxytest/package.json +18 -0
  297. package/packages/examples/proxytest/public/data/Cluster_SDOH1.sas +182 -0
  298. package/packages/examples/proxytest/public/data/Cluster_SDOH6.sas +180 -0
  299. package/packages/examples/proxytest/public/data/LeNet_snzrle.astore +0 -0
  300. package/packages/examples/proxytest/public/data/NeuralNetwork_High_med.sas +2409 -0
  301. package/packages/examples/proxytest/public/data/NeuralNetwork_high_med1.sas +2409 -0
  302. package/packages/examples/proxytest/public/data/ast/GBlocalcopy.sasast +0 -0
  303. package/packages/examples/proxytest/public/data/ast/LeNet_snzrle.astore +0 -0
  304. package/packages/examples/proxytest/public/data/ast/gb_IrisGB.sasast +0 -0
  305. package/packages/examples/proxytest/public/data/ast/paysimsvdd.sasast +0 -0
  306. package/packages/examples/proxytest/public/data/ast/svmlocalcopy.sasast +0 -0
  307. package/packages/examples/proxytest/public/data/cars.csv +429 -0
  308. package/packages/examples/proxytest/public/data/cluster_test2.sas7bdat +0 -0
  309. package/packages/examples/proxytest/public/data/cmdList.txt +15 -0
  310. package/packages/examples/proxytest/public/data/gradBoost.sashdat +0 -0
  311. package/packages/examples/proxytest/public/data/iris.csv +151 -0
  312. package/packages/examples/proxytest/public/data/model1.sas7bdat +0 -0
  313. package/packages/examples/proxytest/public/favicon.ico +0 -0
  314. package/packages/examples/proxytest/public/index.html +357 -0
  315. package/packages/examples/proxytest/public/index.js +57 -0
  316. package/packages/examples/proxytest/public/indextest.html +316 -0
  317. package/packages/examples/proxytest/public/logon.html +44 -0
  318. package/packages/examples/proxytest/public/main.html +357 -0
  319. package/packages/examples/proxytest/public/myapp/secondary.html +1 -0
  320. package/packages/examples/proxytest/public/myapp/test.js +2 -0
  321. package/packages/examples/proxytest/public/restaf.js +2461 -0
  322. package/packages/examples/proxytest/public/restaf.min.js +11 -0
  323. package/packages/examples/proxytest/public/sas/iris.txt +10 -0
  324. package/packages/examples/proxytest/startup.sh +15 -0
  325. package/public/casread2.html +321 -0
  326. package/public/data/Cluster_SDOH1.sas +182 -0
  327. package/public/data/Cluster_SDOH6.sas +180 -0
  328. package/public/data/LeNet_snzrle.astore +0 -0
  329. package/public/data/NeuralNetwork_High_med.sas +2409 -0
  330. package/public/data/NeuralNetwork_high_med1.sas +2409 -0
  331. package/public/data/ast/GBlocalcopy.sasast +0 -0
  332. package/public/data/ast/LeNet_snzrle.astore +0 -0
  333. package/public/data/ast/gb_IrisGB.sasast +0 -0
  334. package/public/data/ast/paysimsvdd.sasast +0 -0
  335. package/public/data/ast/svmlocalcopy.sasast +0 -0
  336. package/public/data/cars.csv +429 -0
  337. package/public/data/cluster_test2.sas7bdat +0 -0
  338. package/public/data/cmdList.txt +15 -0
  339. package/public/data/gradBoost.sashdat +0 -0
  340. package/public/data/iris.csv +151 -0
  341. package/public/data/model1.sas7bdat +0 -0
  342. package/public/design.html +350 -0
  343. package/public/display.html +354 -0
  344. package/public/favicon.ico +0 -0
  345. package/public/help.html +1 -0
  346. package/public/index.html +354 -0
  347. package/public/index2.html +353 -0
  348. package/public/indexProxy.html +350 -0
  349. package/public/indextest.html +316 -0
  350. package/public/logon.html +44 -0
  351. package/public/myapp/q.html +349 -0
  352. package/public/myapp/secondary.html +1 -0
  353. package/public/myapp/test.js +2 -0
  354. package/public/push1.html +187 -0
  355. package/server.js +444 -0
  356. package/src/config.js +90 -0
  357. package/src/handlers/appCallback.js +40 -0
  358. package/src/handlers/codeAuth.js +31 -0
  359. package/src/handlers/decodeJwt.js +11 -0
  360. package/src/handlers/favicon.js +24 -0
  361. package/src/handlers/getApp.js +52 -0
  362. package/src/handlers/getApp2.js +26 -0
  363. package/src/handlers/getUser.js +20 -0
  364. package/src/handlers/index.js +36 -0
  365. package/src/handlers/keepAlive.js +54 -0
  366. package/src/handlers/keepAlive2.js +13 -0
  367. package/src/handlers/logon.js +24 -0
  368. package/src/handlers/logout.js +43 -0
  369. package/src/handlers/proxyMapUri.js +56 -0
  370. package/src/handlers/proxyOnResponse.js +12 -0
  371. package/src/handlers/reactDev.js +30 -0
  372. package/src/handlers/setCookies.js +76 -0
  373. package/src/iService.js +369 -0
  374. package/src/index.js +243 -0
  375. package/src/parseDocker.js +32 -0
  376. package/src/plugins/SASauth.js +79 -0
  377. package/src/plugins/appCookie.js +49 -0
  378. package/src/plugins/setContext.js +34 -0
  379. package/src/plugins/setDefaultRoutes.js +262 -0
  380. package/src/plugins/setupAuth.js +48 -0
  381. package/src/plugins/setupUserRoutes.js +48 -0
  382. package/src/plugins/token.js +10 -0
  383. package/src/schemes/SASTokenScheme.js +43 -0
  384. package/src/visionIndex.html +24 -0
  385. package/start.sh +15 -0
  386. package/lib/core/handlers/appCallback.js +0 -51
  387. package/lib/core/handlers/codeAuth.js +0 -61
  388. package/lib/core/handlers/favicon.js +0 -45
  389. package/lib/core/handlers/getApp.js +0 -67
  390. package/lib/core/handlers/getApp2.js +0 -48
  391. package/lib/core/handlers/getUser.js +0 -49
  392. package/lib/core/handlers/keepAlive.js +0 -96
  393. package/lib/core/handlers/keepAlive2.js +0 -33
  394. package/lib/core/handlers/logon.js +0 -44
  395. package/lib/core/handlers/logout.js +0 -88
  396. package/lib/core/handlers/proxyOnResponse.js +0 -26
  397. package/lib/core/handlers/reactDev.js +0 -52
  398. package/lib/core/handlers/setCookies.js +0 -116
  399. package/lib/core/index.js +0 -195
  400. package/lib/core/plugins/SASauth.js +0 -100
  401. package/lib/core/plugins/appCookie.js +0 -98
  402. package/lib/core/plugins/setContext.js +0 -55
  403. package/lib/core/plugins/setupAuth.js +0 -86
  404. package/lib/core/plugins/token.js +0 -31
  405. package/lib/core/schemes/SASTokenScheme.js +0 -71
@@ -0,0 +1,316 @@
1
+ <html lang="en">
2
+ <head>
3
+ <meta charset="UTF-8" />
4
+ <script src="https://unpkg.com/@sassoftware/restaf@4.9.3/dist/restaf.js">
5
+ window.addEventListener('error', function(e) {
6
+ console.log(e.target);
7
+ }, true);
8
+ </script>
9
+ <script src="https://unpkg.com/@sassoftware/restaflib@4.9.3/dist/restaflib.js">
10
+ window.addEventListener('error', function(e) {
11
+ console.log(e.target);
12
+ }, true);
13
+
14
+ </script>
15
+
16
+ <script>
17
+ let store = restaf.initStore({ casProxy: true });
18
+ console.log("store config: ", JSON.stringify(store.config, null, 4));
19
+ let LOGONPAYLOAD = {
20
+ host: window.location.ancestorOrigins[0],
21
+ authType: 'server',
22
+ };
23
+ function checkLinks(name, r, rel) {
24
+ debugger;
25
+ let linkl = r.links().size;
26
+ console.log(`Service name: ${name} LinkCount: ${linkl}`);
27
+ if (linkl === 0) {
28
+ debugger;
29
+ console.log(r.status);
30
+ console.log(JSON.stringify(r.items(), null, 4));
31
+ document.getElementById(
32
+ "output0"
33
+ ).innerHTML = `Service name: ${name} LinkCount: ${linkl}\n
34
+ ${JSON.stringify(r.items(), null,4)}`;
35
+ ;
36
+ throw `Service name: ${name} LinkCount: ${linkl}. Processing stopped`;
37
+ }
38
+ if (r.links(rel) == null) {
39
+ debugger;
40
+ document.getElementById(
41
+ "output0"
42
+ ).innerHTML = `Service name: ${name} rel: ${rel} is null.\n
43
+ Processing stopped`;
44
+ throw `Service name: ${name} rel: ${rel} is null. Processing stopped`;
45
+ }
46
+ return linkl;
47
+ }
48
+
49
+ async function initSession() {
50
+ console.log(LOGONPAYLOAD);
51
+ debugger;
52
+ let msg = await store.logon(LOGONPAYLOAD);
53
+ console.log("logon status", msg);
54
+ /*
55
+ let { identities } = await store.addServices("identities");
56
+ let name = "user";
57
+ if (identities.links("currentUser") != null) {
58
+ let c = await store.apiCall(identities.links("currentUser"));
59
+ name = c.items("id");
60
+ } else {
61
+ console.log("NOTE: Call to identities service returned no links");
62
+ }
63
+ console.log(name);
64
+ */
65
+ }
66
+ function setup() {
67
+ document.getElementById("output").innerHTML = "...initializing";
68
+ initSession()
69
+ .then((r) => {
70
+ document.getElementById("output").innerHTML = "ready";
71
+ })
72
+ .catch((e) => {
73
+ console.log(e);
74
+ console.log(JSON.stringify(e.detail, null, 4));
75
+ });
76
+ }
77
+ </script>
78
+ <script>
79
+ function runit(type) {
80
+ document.getElementById("output").innerHTML = "...running";
81
+ document.getElementById("output0").innerHTML = " ";
82
+ let testcase;
83
+ switch (type) {
84
+ case "native": {
85
+ testcase = SASfileService2;
86
+ break;
87
+ }
88
+ case "files": {
89
+ testcase = SASfileService;
90
+ break;
91
+ }
92
+ case "compute": {
93
+ testcase = dsCompute;
94
+ break;
95
+ }
96
+ case "cas": {
97
+ debugger;
98
+ testcase = runCas;
99
+ break;
100
+ }
101
+ case "casnative": {
102
+ debugger;
103
+ testcase = runCas2;
104
+ break;
105
+ }
106
+ default: {
107
+ testcase = SASfileService2;
108
+ break;
109
+ }
110
+ }
111
+
112
+ testcase(store)
113
+ .then((r) => {
114
+ document.getElementById("output").innerHTML = JSON.stringify(
115
+ r,
116
+ null,
117
+ 4
118
+ );
119
+ })
120
+ .catch((err) => {
121
+ document.getElementById("output").innerHTML = JSON.stringify(
122
+ err,
123
+ null,
124
+ 4
125
+ );
126
+ });
127
+ }
128
+
129
+ async function runCas(store) {
130
+ debugger;
131
+ try {
132
+ let { casManagement } = await store.addServices("casManagement");
133
+ debugger;
134
+ checkLinks("casManagement", casManagement, "servers");
135
+ debugger;
136
+ let servers = await store.apiCall(casManagement.links("servers"));
137
+ let serverName = servers.itemsList(0);
138
+ console.log(`server name: `, serverName);
139
+ let rafLink = servers.itemsCmd(serverName, "createSession");
140
+ if (rafLink == null) {
141
+ console.log("no createSession link");
142
+ console.log(JSON.stringify(rafLink.items(), null, 4));
143
+ throw "no createSession link";
144
+ }
145
+ console.log(JSON.stringify(rafLink));
146
+
147
+ let session = await store.apiCall(
148
+ servers.itemsCmd(serverName, "createSession")
149
+ );
150
+ checkLinks("session", session, "execute");
151
+ let payload = {
152
+ action: "builtins.echo",
153
+ data: { code: { x: 1 } },
154
+ };
155
+ console.log(JSON.stringify(session.links("execute"), null, 4));
156
+ let r = await store.runAction(session, payload);
157
+ console.log("echo completed");
158
+ await store.apiCall(session.links("delete"));
159
+ return r.items();
160
+ }
161
+ catch(err) {
162
+ debugger;
163
+ console.log(JSON.stringify(err, null,4));
164
+ document.getElementById("output0").innerHTML = `${JSON.stringify(err, null,4)}`;
165
+ }
166
+ }
167
+ async function runCas2(store) {
168
+ debugger;
169
+ let result;
170
+ try {
171
+ debugger;
172
+ let config = {
173
+ method: 'GET',
174
+ url: LOGONPAYLOAD.host+ '/casManagement/',
175
+ withCredentials: true,
176
+ headers: {
177
+ 'Content-Type': 'application/vnd.sas.api+json',
178
+ 'Accept' : 'application/json, application/vnd.sas.api+json',
179
+
180
+ }
181
+ }
182
+ debugger;
183
+ let r = await store.request(config);
184
+ console.log(r.data);
185
+ result = r.data;
186
+ debugger;
187
+ }
188
+ catch (err) {
189
+ debugger;
190
+ console.log(err);
191
+ result = err;
192
+ debugger;
193
+ }
194
+ return result;
195
+ return ;
196
+ }
197
+ async function SASfileService2(store) {
198
+ debugger;
199
+ let result;
200
+ try {
201
+ debugger;
202
+ let config = {
203
+ method: 'GET',
204
+ url: LOGONPAYLOAD.host+ '/files/',
205
+ withCredentials: true,
206
+ headers: {
207
+ 'Content-Type': 'application/vnd.sas.api+json',
208
+ 'Accept' : 'application/json, application/vnd.sas.api+json',
209
+
210
+ }
211
+ }
212
+ debugger;
213
+ let r = await store.request(config);
214
+ console.log(r.data);
215
+ result = r.data;
216
+ debugger;
217
+ }
218
+ catch (err) {
219
+ console.log(err);
220
+ result = err;
221
+ debugger;
222
+ }
223
+ return result;
224
+ return ;
225
+ }
226
+ async function SASfileService(store) {
227
+ debugger;
228
+ let result;
229
+ try {
230
+ debugger;
231
+ let { files } = await store.addServices("files");
232
+ debugger;
233
+ result = files.links();
234
+ }
235
+ catch (err) {
236
+ console.log(err);
237
+ result = err;
238
+ // throw 'ERROR: Call to file service failed';
239
+ debugger;
240
+ }
241
+ return result;
242
+ }
243
+ async function dsCompute(store) {
244
+ let log = null;
245
+ let { compute } = await store.addServices("compute");
246
+
247
+ let contexts = await store.apiCall(compute.links("contexts"));
248
+
249
+ // lookup the name of the first context and then use it to get the associated createSession restafLink
250
+ let createSession = contexts.itemsCmd(
251
+ contexts.itemsList(0),
252
+ "createSession"
253
+ );
254
+ let session = await store.apiCall(createSession);
255
+
256
+ // Now run a simple data step in that session
257
+ let payload = {
258
+ data: {
259
+ code: [`data _null_; do i = 1 to 100; x=1; end; run; `],
260
+ },
261
+ };
262
+
263
+ // Now execute the data step and wait for completion
264
+ let job = await store.apiCall(session.links("execute"), payload);
265
+ let status = await store.jobState(job, null, 5, 2);
266
+
267
+ if (status.data === "running") {
268
+ throw `ERROR: Job did not complete in allotted time`;
269
+ } else {
270
+ switch (status.data) {
271
+ case "warning":
272
+ console.log(`Warning: check your log for warnings`);
273
+ break;
274
+ case "error":
275
+ throw `Please correct errors and rerun program`;
276
+ default:
277
+ log = await store.apiCall(status.job.links("log"));
278
+ break;
279
+ }
280
+ }
281
+ return log === null ? status : log.items();
282
+ }
283
+ </script>
284
+ </head>
285
+ <body onload="setup()">
286
+ <h1 id="head">Hi</h1>
287
+ <div>
288
+ <button onclick="runit('files')">
289
+ Press to make a call to file service
290
+ </button>
291
+ <br />
292
+ <br />
293
+ <button onclick="runit('native')">
294
+ Press to make a call to file service native
295
+ </button>
296
+ <br />
297
+ <br />
298
+ <button onclick="runit('compute')">
299
+ Press to make a call compute service
300
+ </button>
301
+ <br />
302
+ <br />
303
+ <button onclick="runit('cas')">Press to make a call to cas echo</button>
304
+ <br />
305
+ <br />
306
+ <button onclick="runit('casnative')">Press to call casmanagement native</button>
307
+ <br />
308
+ </div>
309
+ <div>
310
+ <pre id="output"></pre>
311
+ </div>
312
+ <div>
313
+ <pre id="output0"></pre>
314
+ </div>
315
+ </body>
316
+ </html>
@@ -0,0 +1,44 @@
1
+ <!DOCTYPE html>
2
+ <!--
3
+ ~ /* ------------------------------------------------------------------------------------
4
+ ~ * Copyright (c) SAS Institute Inc.
5
+ ~ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ ~ * you may not use this file except in compliance with the License.
7
+ ~ * You may obtain a copy of the License at
8
+ ~ *
9
+ ~ * http://www.apache.org/licenses/LICENSE-2.0
10
+ ~ *
11
+ ~ * Unless required by applicable law or agreed to in writing, software
12
+ ~ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ ~ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ ~ * See the License for the specific language governing permissions and
15
+ ~ * limitations under the License.
16
+ ~ ----------------------------------------------------------------------------------------*/
17
+ ~
18
+ -->
19
+
20
+ <html lang="en">
21
+
22
+ <head>
23
+ <meta charset="UTF-8">
24
+ <script src="https://unpkg.com/@sassoftware/restaf@next"></script>
25
+ <script type="text/javascript" src="/appenv"></script>
26
+
27
+ <script>
28
+ function logonButton() {
29
+ debuggger;
30
+ let store = restaf.initStore();
31
+ store.logon(LOGONPAYLOAD)
32
+ .then ( r => {
33
+ console.log(r);
34
+ })
35
+ .catch( err => alert(JSON.stringify(err, null, 4)))
36
+ }
37
+ </script>
38
+ </head>
39
+
40
+ <body onload="logonButton()">
41
+ <p> In logon.html</p>
42
+ </script>
43
+ </body>
44
+ </html>
@@ -0,0 +1 @@
1
+ <h1> Alternate entry point </h1>
@@ -0,0 +1,2 @@
1
+ let hello ='hello';
2
+ console.log(hello);
@@ -0,0 +1,15 @@
1
+ #
2
+ # Azure wants to prefix the app env
3
+ # Use this to set the env that this server expects
4
+
5
+ # https://docs.microsoft.com/en-us/azure/app-service/reference-app-settings?tabs=kudu%2Cdotnet
6
+ env | grep APPSETTING_
7
+
8
+ if [[ ! -z "$APPSETTING_VIYA_SERVER" ]];
9
+ then
10
+ export VIYA_SERVER=$APPSETTING_VIYA_SERVER
11
+ echo VIYA SERVER= $VIYA_SERVER
12
+ else
13
+ echo "No custom application overrides"
14
+ fi
15
+ node index.js
@@ -0,0 +1,28 @@
1
+ APPHOST=localhost
2
+ APPENTRY=index.html
3
+ APPLOC=./public
4
+ VIYA_SERVER=none
5
+ APPPORT=8080
6
+ APPNAME=viyaapp
7
+ AUTHFLOW=
8
+ CLIENTID=appBuilder
9
+ CLIENTSECRET=jellico
10
+ REDIRECT=/new
11
+ APPDIR=./appDir
12
+ # HTTPS=true
13
+ USELOGON=YES
14
+
15
+ USETOKEN=NO
16
+ # SHOWENV=YES
17
+ # APPENV=
18
+ APPENV_XYZ=AA
19
+ APPENV_BAD=
20
+
21
+ # APPENV_PUPID=NSHOST=https://sas-logon-app.viya.svc.cluster.local
22
+
23
+ # NAMESPACE=viya
24
+ # TLS_CERT=./certs/tls.crt
25
+ # TLS_KEY=./certs/tls.key
26
+
27
+
28
+
@@ -0,0 +1,22 @@
1
+ APPHOST=localhost
2
+ APPENTRY=indexProxy.html
3
+ VIYA_SERVER=
4
+ APPPORT=8080
5
+ APPNAME=viyaapp
6
+ AUTHFLOW=
7
+ CLIENTID=clientapp
8
+ CLIENTSECRET=secret
9
+ REDIRECT=
10
+ USETOKEN=YES
11
+ # SHOWENV=YES
12
+ APPENV=
13
+ APPENV_XYZ=AA
14
+ APPENV_PROXYSERVER=https://localhost:8080
15
+ # APPENV_PUPID=NSHOST=https://sas-logon-app.viya.svc.cluster.local
16
+
17
+ # NAMESPACE=viya
18
+ # TLS_CERT=./certs/tls.crt
19
+ # TLS_KEY=./certs/tls.key
20
+
21
+
22
+
@@ -0,0 +1,12 @@
1
+ VIYA_SERVER=
2
+
3
+ APPHOST=localhost
4
+ APPPORT=8080
5
+ AUTHFLOW=implicit
6
+ APPNAME=viyaapp
7
+ CLIENTID=clientappi
8
+ APPENTRY=index.html
9
+ CLIENTSECRET=
10
+ # USETOKEN=NO
11
+ # NAMESPACE=viya
12
+
@@ -0,0 +1,42 @@
1
+ {
2
+ "root": true,
3
+ "env": {
4
+ "browser": true,
5
+ "node": true,
6
+ "es6": true
7
+ },
8
+ "parser": "@babel/eslint-parser",
9
+ "extends": ["eslint:recommended", "prettier"],
10
+ "parserOptions": {
11
+ "requireConfigFile": false,
12
+ "babelOptions": {"configFile": "./.babelrc"},
13
+ "ecmaVersion": 6,
14
+ "sourceType": "module",
15
+ "ecmaFeatures": {
16
+ "jsx": true
17
+ }
18
+ },
19
+ "rules": {
20
+ "key-spacing": [
21
+ 2,
22
+ {
23
+ "align": "colon"
24
+ }
25
+ ],
26
+ "jsx-quotes": [2, "prefer-double"],
27
+ "no-console": 0,
28
+ "no-unused-vars": [
29
+ 1,
30
+ {
31
+ "args": "none"
32
+ }
33
+ ],
34
+ "no-debugger": 0,
35
+ "react/prop-types": 0,
36
+ "array-bracket-spacing": [2, "never"],
37
+ "space-in-parens": [2, "never"],
38
+ "space-before-function-paren": [2, "always"],
39
+ "semi": [2, "always"],
40
+ "no-prototype-builtins": 0
41
+ }
42
+ }
@@ -0,0 +1,44 @@
1
+ FROM node:12.16.1-alpine
2
+ LABEL maintainer="deva.kumar@sas.com"
3
+ WORKDIR /usr/src/app
4
+ COPY . .
5
+ # COPY package*.json ./
6
+ RUN npm install
7
+ # RUN npm run build
8
+
9
+ # will auto change to localhost in non-docker environments
10
+ ENV APPHOST=0.0.0.0
11
+ ENV PORT=8080
12
+ EXPOSE $PORT
13
+ ENV HTTPS=true
14
+ # ENV APPSERVERLEVEL=v2
15
+ #######################################################################
16
+ # You can override these(but in container leave APPHOST as shown below)
17
+ ########################################################################
18
+
19
+ # set this the same as EXPOSE here and override in env or as -p option in dockerrun
20
+ # ENV APPPORT=8080
21
+
22
+ ENV APPNAME=viyaapp
23
+ # ENV AUTHFLOW=code
24
+ # ENV CLIENTID=clientapp
25
+ # ENV CLIENTSECRET=secret
26
+ # ENV HAPIDEBUG=YES
27
+ # ENV LOGLEVEL=info
28
+ # ENV USETOKEN=YES
29
+
30
+ #sample setup for creating a temporary cert and key
31
+ ENV TLS_CREATE="C:US,ST:NC,L:Cary,O:SAS Institute,OU:STO,CN:localhost"
32
+
33
+ # You can specify your own cet and key
34
+ # ENV TLS_CERT=../../../certs/cert64.cer
35
+ # ENV TLS_KEY=../../../certs/pubkey64.pem
36
+
37
+ # Samesite specification
38
+ ENV SAMESITE=None,secure
39
+
40
+ # If your Viya instance still has a unsigned certificate set this value prior to invoking the server
41
+ ENV NODE_TLS_REJECT_UNAUTHORIZED=0
42
+
43
+ #####################################################################
44
+ CMD ["npm", "run", "indocker"]