@elliemae/pui-cli 9.0.0-next.52 → 9.0.0-next.61

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 (169) hide show
  1. package/app.tsconfig.json +6 -3
  2. package/dist/cjs/babel.config.cjs +1 -1
  3. package/dist/cjs/build/vite.config.js +45 -0
  4. package/dist/cjs/cli.js +3 -1
  5. package/dist/cjs/commands/buildcdn.js +74 -0
  6. package/dist/cjs/commands/lint.js +1 -1
  7. package/dist/cjs/commands/test.js +0 -1
  8. package/dist/cjs/commands/tscheck.js +8 -1
  9. package/dist/cjs/commands/utils.js +8 -8
  10. package/dist/cjs/commands/vitest.js +0 -1
  11. package/dist/cjs/index.js +5 -7
  12. package/dist/cjs/lint-config/eslint.config.js +259 -0
  13. package/dist/cjs/lint-config/stylelint.config.js +1 -1
  14. package/dist/cjs/monorepo/utils.cjs +2 -2
  15. package/dist/cjs/monorepo/utils.js +1 -1
  16. package/dist/cjs/server/cert.js +45 -0
  17. package/dist/cjs/server/certs/cert.crt +25 -0
  18. package/dist/cjs/server/certs/cert.csr +18 -0
  19. package/dist/cjs/server/certs/cert.ext +7 -0
  20. package/dist/cjs/server/certs/cert.key +30 -0
  21. package/dist/cjs/server/certs/cert.pfx +0 -0
  22. package/dist/cjs/server/certs/rootCA.crt +24 -0
  23. package/dist/cjs/server/certs/rootCA.key +30 -0
  24. package/dist/cjs/server/certs/rootCA.srl +1 -0
  25. package/dist/cjs/server/csp.js +40 -29
  26. package/dist/cjs/server/index.js +8 -3
  27. package/dist/cjs/server/logger.js +5 -2
  28. package/dist/cjs/server/middlewares.js +2 -2
  29. package/dist/cjs/server/wsServer.js +7 -4
  30. package/dist/cjs/testing/jest.config.cjs +1 -2
  31. package/dist/cjs/testing/jest.polyfills.cjs +1 -1
  32. package/dist/cjs/testing/mocks/iframe.js +24 -0
  33. package/dist/cjs/testing/mocks/svg.js +0 -11
  34. package/dist/cjs/testing/resolver.cjs +0 -1
  35. package/dist/cjs/testing/vitest.config.js +1 -5
  36. package/dist/cjs/transpile/.swcrc +1 -0
  37. package/dist/cjs/utils.cjs +1 -1
  38. package/dist/cjs/utils.js +3 -1
  39. package/dist/cjs/webpack/csp-plugin.js +79 -0
  40. package/dist/cjs/webpack/csp.js +158 -0
  41. package/dist/cjs/webpack/helpers.js +14 -14
  42. package/dist/cjs/webpack/interceptor-middleware.js +125 -0
  43. package/dist/cjs/webpack/webpack.dev.babel.js +16 -4
  44. package/dist/cjs/webpack/webpack.lib.base.babel.js +0 -2
  45. package/dist/cjs/webpack/webpack.lib.prod.babel.js +3 -1
  46. package/dist/cjs/webpack/webpack.prod.babel.js +12 -5
  47. package/dist/cjs/webpack/webpack.storybook.js +1 -1
  48. package/dist/esm/babel.config.cjs +1 -1
  49. package/dist/esm/build/vite.config.js +25 -0
  50. package/dist/esm/cli.js +3 -1
  51. package/dist/esm/commands/buildcdn.js +43 -0
  52. package/dist/esm/commands/lint.js +1 -1
  53. package/dist/esm/commands/test.js +0 -1
  54. package/dist/esm/commands/tscheck.js +8 -1
  55. package/dist/esm/commands/utils.js +8 -8
  56. package/dist/esm/commands/vitest.js +0 -1
  57. package/dist/esm/index.js +2 -4
  58. package/dist/esm/lint-config/eslint.config.js +228 -0
  59. package/dist/esm/lint-config/stylelint.config.js +1 -1
  60. package/dist/esm/monorepo/utils.cjs +2 -2
  61. package/dist/esm/monorepo/utils.js +1 -1
  62. package/dist/esm/server/cert.js +14 -0
  63. package/dist/esm/server/certs/cert.crt +25 -0
  64. package/dist/esm/server/certs/cert.csr +18 -0
  65. package/dist/esm/server/certs/cert.ext +7 -0
  66. package/dist/esm/server/certs/cert.key +30 -0
  67. package/dist/esm/server/certs/cert.pfx +0 -0
  68. package/dist/esm/server/certs/rootCA.crt +24 -0
  69. package/dist/esm/server/certs/rootCA.key +30 -0
  70. package/dist/esm/server/certs/rootCA.srl +1 -0
  71. package/dist/esm/server/csp.js +40 -29
  72. package/dist/esm/server/index.js +8 -3
  73. package/dist/esm/server/logger.js +5 -2
  74. package/dist/esm/server/middlewares.js +2 -2
  75. package/dist/esm/server/wsServer.js +7 -4
  76. package/dist/esm/testing/jest.config.cjs +1 -2
  77. package/dist/esm/testing/jest.polyfills.cjs +1 -1
  78. package/dist/esm/testing/mocks/iframe.js +4 -0
  79. package/dist/esm/testing/mocks/svg.js +0 -1
  80. package/dist/esm/testing/resolver.cjs +0 -1
  81. package/dist/esm/testing/vitest.config.js +1 -4
  82. package/dist/esm/transpile/.swcrc +1 -0
  83. package/dist/esm/utils.cjs +1 -1
  84. package/dist/esm/utils.js +3 -1
  85. package/dist/esm/webpack/csp-plugin.js +49 -0
  86. package/dist/esm/webpack/csp.js +128 -0
  87. package/dist/esm/webpack/helpers.js +14 -14
  88. package/dist/esm/webpack/interceptor-middleware.js +105 -0
  89. package/dist/esm/webpack/webpack.dev.babel.js +16 -4
  90. package/dist/esm/webpack/webpack.lib.base.babel.js +0 -2
  91. package/dist/esm/webpack/webpack.lib.prod.babel.js +3 -1
  92. package/dist/esm/webpack/webpack.prod.babel.js +12 -5
  93. package/dist/esm/webpack/webpack.storybook.js +1 -1
  94. package/dist/types/eslint.config.d.ts +3 -0
  95. package/dist/types/eslint.config.d.ts.map +1 -0
  96. package/dist/types/lib/build/vite.config.d.ts +3 -0
  97. package/dist/types/lib/build/vite.config.d.ts.map +1 -0
  98. package/dist/types/lib/commands/build.d.ts.map +1 -1
  99. package/dist/types/lib/commands/buildcdn.d.ts +3 -0
  100. package/dist/types/lib/commands/buildcdn.d.ts.map +1 -0
  101. package/dist/types/lib/commands/gendoc.d.ts.map +1 -1
  102. package/dist/types/lib/commands/pack.d.ts.map +1 -1
  103. package/dist/types/lib/commands/start.d.ts.map +1 -1
  104. package/dist/types/lib/commands/test.d.ts.map +1 -1
  105. package/dist/types/lib/commands/tscheck.d.ts.map +1 -1
  106. package/dist/types/lib/commands/utils.d.ts +2 -1
  107. package/dist/types/lib/commands/utils.d.ts.map +1 -1
  108. package/dist/types/lib/commands/vitest.d.ts.map +1 -1
  109. package/dist/types/lib/index.d.ts +1 -2
  110. package/dist/types/lib/index.d.ts.map +1 -1
  111. package/dist/types/lib/lint-config/eslint.config.d.ts +3 -0
  112. package/dist/types/lib/lint-config/eslint.config.d.ts.map +1 -0
  113. package/dist/types/lib/server/cert.d.ts +5 -0
  114. package/dist/types/lib/server/cert.d.ts.map +1 -0
  115. package/dist/types/lib/server/csp.d.ts +0 -1
  116. package/dist/types/lib/server/csp.d.ts.map +1 -1
  117. package/dist/types/lib/server/logger.d.ts.map +1 -1
  118. package/dist/types/lib/server/wsServer.d.ts +2 -2
  119. package/dist/types/lib/server/wsServer.d.ts.map +1 -1
  120. package/dist/types/lib/testing/jest.config.d.cts +2 -1
  121. package/dist/types/lib/testing/jest.node.config.d.cts +2 -1
  122. package/dist/types/lib/testing/mocks/cssModule.d.ts.map +1 -1
  123. package/dist/types/lib/testing/mocks/html.d.ts.map +1 -1
  124. package/dist/types/lib/testing/mocks/iframe.d.ts +3 -0
  125. package/dist/types/lib/testing/mocks/iframe.d.ts.map +1 -0
  126. package/dist/types/lib/testing/mocks/image.d.ts.map +1 -1
  127. package/dist/types/lib/testing/mocks/svg.d.ts.map +1 -1
  128. package/dist/types/lib/testing/resolver.d.cts.map +1 -1
  129. package/dist/types/lib/testing/vitest.config.d.ts +1 -1
  130. package/dist/types/lib/testing/vitest.config.d.ts.map +1 -1
  131. package/dist/types/lib/transpile/esbuild.d.ts.map +1 -1
  132. package/dist/types/lib/utils.d.cts +1 -1
  133. package/dist/types/lib/utils.d.cts.map +1 -1
  134. package/dist/types/lib/utils.d.ts +2 -2
  135. package/dist/types/lib/utils.d.ts.map +1 -1
  136. package/dist/types/lib/webpack/csp-plugin.d.ts +33 -0
  137. package/dist/types/lib/webpack/csp-plugin.d.ts.map +1 -0
  138. package/dist/types/lib/webpack/csp.d.ts +66 -0
  139. package/dist/types/lib/webpack/csp.d.ts.map +1 -0
  140. package/dist/types/lib/webpack/helpers.d.ts +0 -1
  141. package/dist/types/lib/webpack/helpers.d.ts.map +1 -1
  142. package/dist/types/lib/webpack/interceptor-middleware.d.ts +11 -0
  143. package/dist/types/lib/webpack/interceptor-middleware.d.ts.map +1 -0
  144. package/dist/types/lib/webpack/webpack.base.babel.d.ts.map +1 -1
  145. package/dist/types/lib/webpack/webpack.dev.babel.d.ts.map +1 -1
  146. package/dist/types/lib/webpack/webpack.lib.base.babel.d.ts.map +1 -1
  147. package/dist/types/lib/webpack/webpack.lib.prod.babel.d.ts.map +1 -1
  148. package/dist/types/lib/webpack/webpack.prod.babel.d.ts.map +1 -1
  149. package/dist/types/tsconfig.tsbuildinfo +1 -1
  150. package/library.tsconfig.json +8 -5
  151. package/package.json +146 -142
  152. package/dist/cjs/lint-config/eslint/config.js +0 -186
  153. package/dist/cjs/lint-config/eslint/react.js +0 -107
  154. package/dist/cjs/lint-config/eslint/typescript/config.js +0 -97
  155. package/dist/cjs/testing/setup-test-env.js +0 -6
  156. package/dist/esm/lint-config/eslint/config.js +0 -155
  157. package/dist/esm/lint-config/eslint/react.js +0 -76
  158. package/dist/esm/lint-config/eslint/typescript/config.js +0 -67
  159. package/dist/esm/testing/setup-test-env.js +0 -5
  160. package/dist/types/lib/lint-config/eslint/config.d.ts +0 -2
  161. package/dist/types/lib/lint-config/eslint/config.d.ts.map +0 -1
  162. package/dist/types/lib/lint-config/eslint/react.d.ts +0 -2
  163. package/dist/types/lib/lint-config/eslint/react.d.ts.map +0 -1
  164. package/dist/types/lib/lint-config/eslint/typescript/config.d.ts +0 -2
  165. package/dist/types/lib/lint-config/eslint/typescript/config.d.ts.map +0 -1
  166. package/dist/types/lib/testing/setup-test-env.d.ts +0 -2
  167. package/dist/types/lib/testing/setup-test-env.d.ts.map +0 -1
  168. package/dist/types/lib/tests/basic.test.d.ts +0 -1
  169. package/dist/types/lib/tests/basic.test.d.ts.map +0 -1
@@ -0,0 +1,25 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIERjCCAy6gAwIBAgIURZDLMeITZ77a7OqWfmuim11w3/0wDQYJKoZIhvcNAQEL
3
+ BQAwgZYxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTETMBEGA1UEBwwKUGxlYXNh
4
+ bnRvbjEMMAoGA1UECgwDSUNFMRQwEgYDVQQLDAtVSSBQbGF0Zm9ybTESMBAGA1UE
5
+ AwwJbG9jYWxob3N0MS0wKwYJKoZIhvcNAQkBFh52aW5vdGgua2FseWFuYXN1bmRh
6
+ cmFtQGljZS5jb20wHhcNMjQxMDMxMTg1ODI1WhcNMjUxMDMxMTg1ODI1WjCBmzEL
7
+ MAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRMwEQYDVQQHDApQbGVhc2FudG9uMQww
8
+ CgYDVQQKDANJQ0UxFDASBgNVBAsMC1VJIFBsYXRmb3JtMRcwFQYDVQQDDA5sb2Nh
9
+ bGhvc3Q6ODA4MDEtMCsGCSqGSIb3DQEJARYedmlub3RoLmthbHlhbmFzdW5kYXJh
10
+ bUBpY2UuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwfAgF1AN
11
+ m/RnbzKzoXS7SU3JkQWTeQ1ndaZRwiD4Xkg5bvdhzWUJORVYQTWIJJrL3KxqZzGM
12
+ gVj4UJt3AaQD73A+bQagS5EgYxLqg1v34HZvhwMfdoZfw9epQt5KCF3JQXyH+lJk
13
+ RyklnjHVZbYE1/eF1pb0KosIWPXY+kCYTi2b0oPifyO90bVOw3QvxLDF4fgk+QqL
14
+ 7HU1EOAak4wj07dNi83xqCOqjtWzmlYokvYELFgCUMzWFEjxuWZMuGu8+28JAMX9
15
+ oXni9K8f4SJX5eZrRrtAHt+LwsxcLQPTmHHeTxvEc/L8//jAVUTohUr+/IfC59z0
16
+ dko7ulPQKjgsFwIDAQABo4GEMIGBMB8GA1UdIwQYMBaAFB/8xooBufI/rf2vXZBh
17
+ sLmQARwoMAkGA1UdEwQCMAAwNAYDVR0RBC0wK4IJbG9jYWxob3N0gg5sb2NhbGhv
18
+ c3Q6ODA4MIIObG9jYWxob3N0OjMwMDAwHQYDVR0OBBYEFLQKGRQF7uuWmv1mYPGF
19
+ lWd8FxjbMA0GCSqGSIb3DQEBCwUAA4IBAQAVqVVBtbkQo1JI7+3oPSgL+CPQC37x
20
+ szF+vXLeswBS6OYrqA4AgW0R3vnhB64t/+oRmUu59vi+PuC1ff4w23g2HMZ+MlY2
21
+ smgJ8XMoxyEn4aVAPLECzBuR67uGzCxJbqtg/avb6EIWTXzBwHI95PWVcWaLav1q
22
+ sf3Mc60LVlAFQb1Ec5MlQHgMHaGJSDE3UwPL+JOOTG1XLnqMt+WFfqG6gN6G3FkY
23
+ dSg3HOR2m2VHaQWvA8Zb34uTUan40K+/hlpbzfgDXF8nvg1Fwivje8+7L3FOcCw0
24
+ k3yHwccxFqhPkXXaByZzaBKIlFXtLA4LiUwVQ7JEwPsJS5U108tuAQ8V
25
+ -----END CERTIFICATE-----
@@ -0,0 +1,18 @@
1
+ -----BEGIN CERTIFICATE REQUEST-----
2
+ MIIC4TCCAckCAQAwgZsxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTETMBEGA1UE
3
+ BwwKUGxlYXNhbnRvbjEMMAoGA1UECgwDSUNFMRQwEgYDVQQLDAtVSSBQbGF0Zm9y
4
+ bTEXMBUGA1UEAwwObG9jYWxob3N0OjgwODAxLTArBgkqhkiG9w0BCQEWHnZpbm90
5
+ aC5rYWx5YW5hc3VuZGFyYW1AaWNlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP
6
+ ADCCAQoCggEBAMHwIBdQDZv0Z28ys6F0u0lNyZEFk3kNZ3WmUcIg+F5IOW73Yc1l
7
+ CTkVWEE1iCSay9ysamcxjIFY+FCbdwGkA+9wPm0GoEuRIGMS6oNb9+B2b4cDH3aG
8
+ X8PXqULeSghdyUF8h/pSZEcpJZ4x1WW2BNf3hdaW9CqLCFj12PpAmE4tm9KD4n8j
9
+ vdG1TsN0L8SwxeH4JPkKi+x1NRDgGpOMI9O3TYvN8agjqo7Vs5pWKJL2BCxYAlDM
10
+ 1hRI8blmTLhrvPtvCQDF/aF54vSvH+EiV+Xma0a7QB7fi8LMXC0D05hx3k8bxHPy
11
+ /P/4wFVE6IVK/vyHwufc9HZKO7pT0Co4LBcCAwEAAaAAMA0GCSqGSIb3DQEBCwUA
12
+ A4IBAQA/ud/JTN+FBGDyQFoGes/CAhKdj8hfZq1F/sivJXiXoC03FYd4NhAan/aY
13
+ 1BFqiYESW1aYrDN4MyXEFhxeB5aOPHaraQ7Ny5eSAiQd6GJMNs5/lpc9W6gddXA/
14
+ rtl0BJ85YUh9NrRNKYdplJDrCUaZh5lFQcHb7eDsQyZJVBgJzjJ1YgpTh3Sz+hcS
15
+ eK6HiPqKIvRBaCgeKzEStEaLlrrsKhCezX7MOJ56JDGO7UgAxe5nRBD6Rg1Eoq+H
16
+ En6Q4im/SwFIFdYt0G2BW60OEmzP+sW16XfPeMTyNZrVYQ5a3r0oMYEPrPnL6FXo
17
+ u4ogdp1aQ2AhdGnsZxbht1uTAmCO
18
+ -----END CERTIFICATE REQUEST-----
@@ -0,0 +1,7 @@
1
+ authorityKeyIdentifier=keyid,issuer
2
+ basicConstraints=CA:FALSE
3
+ subjectAltName = @alt_names
4
+ [alt_names]
5
+ DNS.1 = localhost
6
+ DNS.2 = localhost:8080
7
+ DNS.3 = localhost:3000
@@ -0,0 +1,30 @@
1
+ -----BEGIN ENCRYPTED PRIVATE KEY-----
2
+ MIIFJDBWBgkqhkiG9w0BBQ0wSTAxBgkqhkiG9w0BBQwwJAQQDe26Vas7aUu8EpLs
3
+ 1tLs2wICCAAwDAYIKoZIhvcNAgkFADAUBggqhkiG9w0DBwQIXoZbQE//THYEggTI
4
+ 27d2i58EwLcpAj74FeVRYZs3bwgap2fqjeAV1I0YIpUKSXXBe6cLAlWoU2dP1Ze/
5
+ 37LZyyFhM41VODvJog4DSvR1EwRHswfcz/iUogR9IRgzoALltLSzzv/C60H/7LS+
6
+ Ta1PD1wOtt1vRqRwgfH32OgFNvSl+Mtq6EvSSO/1egQDniyvFHoNdu7xuKhPCHzG
7
+ SriyYj4/ul7uBGihU+dzpTwc/nAKzto6SNT/ONsvr2Gx0LAWTtAzvc45yqMJ8NBR
8
+ O0+9AYxnmkC4dBoZyiQ5bzvxLRYB8jkGTOYBkY3LKOoOQ7F2zjhZHs/m2uFjLXXd
9
+ Z+j4XYVUeGmB97C6jDE1tlbNPR0eea0E64FkHoQZiqgENbX0UgYQujBLpborPhgn
10
+ BOgdftsnms8UYadN4UxB6elgKLpqqVtUepng0ypURZqv3BLTnDVxvNdjGsmTlwSc
11
+ W/7f1ZKlNMIpLsMjxq96pyTPJ379KneBI0B+k1p6hnXKhiGI09UiiHdpkzNovA9H
12
+ TG9HqMDaRdbMe4tQTdPpDCbRawokTmNhEp95PU5/xjveOxCexdRA2ICXlU+pS9ur
13
+ Oz78CuRZLiI7otcAo9ezr7KAh1L484RXnoTOXdvAYJFr4i4+VY2aW1+7yzlxgnVl
14
+ eAvLv5hI7uAradt+xzcLhLoaq1/Srr0qBvu/hfyiY5ZJUs0MYJ/fu6b3QVZsurMK
15
+ OU1RRot29Ckl+NRTVkc+87nanTkFkiAdVTQhBWurEjhKzyiGd/wckBfLL/8Xf5KD
16
+ vd5ZLUBK/KvofxtSYmYHPLCNPszXRMde3buzeQg4VHtdq5cF8bXzgDIZdsl/6R6I
17
+ alfwsJvuaGlBGPpxagntfsWgFsEw+24vYwXNsOJqv9qgrcM2mfVSmzDGxytRQ6i7
18
+ blMg7UeZLRXMVABTIkbgoLiiP795oryqC+gKX3xzHRobFiCW+k0UtUaUM/3rDOdq
19
+ h6HSuvPy9y+eIaFVJPi3py5m75y0UbKJjhITK241CkmO/R8AHL8gofYYfscp7Amj
20
+ Z4zIaG1qJHUvD3Jn9GNhLDUHA6zR7fT+Ckkym49UxidECxktT0B7xUUfRV0rwe7X
21
+ 4mcb+5YDlUJzrV2Nx+0xnAvxyfU2PdTveU5OGZFEK0eb8BYVre5eLRbnw63TP6Km
22
+ OiRzhRt4/MoeTN2IieORs8G6hHnNfCS4VX91vYoAOGQz/tJt2b+aCZ+XC+viWS3/
23
+ JY1a0yLkplBbn2n/+XAo7N6fz+Zf7xa2RduqOX0CkkST9FQwBlt7zPVhLQM9u3SR
24
+ 2Gn/B/ar5ac/gaFZ1unbV1ncyTqj3euLxWTFAohptCaxTqvjHQroZHgXok/e1OzB
25
+ CoSVdjJ+fvmg+Fl29whZ7kN4gXkawRNOzwUNQFaplbcjc1xGWDDw/QMnvfB0RJUF
26
+ ZaOHZhfX+BJhG2LalhoFWhpK50e884KFime/AMqCDHcm8RqH8pcjisK9QfIA1YC7
27
+ Fxh3ewpmwkHJjR0jSKEy/AEM0kXdV1k273DoU7zLPbDtqgHEQSP40MCstCUjX4vy
28
+ pnSeSKuu4VGWHEBzekKmJHrx8BUjGC/dMTevG3lzIKrWXOttiL/Btu21S9fGCukd
29
+ r4eCFaUCCZOC2RMb8/iTn8x1VXqTkOQB
30
+ -----END ENCRYPTED PRIVATE KEY-----
Binary file
@@ -0,0 +1,24 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIEDzCCAvegAwIBAgIUX5nLM97FoZtWQKe+Ez6zVIpf88QwDQYJKoZIhvcNAQEL
3
+ BQAwgZYxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTETMBEGA1UEBwwKUGxlYXNh
4
+ bnRvbjEMMAoGA1UECgwDSUNFMRQwEgYDVQQLDAtVSSBQbGF0Zm9ybTESMBAGA1UE
5
+ AwwJbG9jYWxob3N0MS0wKwYJKoZIhvcNAQkBFh52aW5vdGgua2FseWFuYXN1bmRh
6
+ cmFtQGljZS5jb20wHhcNMjQxMDMxMTg1NjExWhcNMjkxMDMwMTg1NjExWjCBljEL
7
+ MAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRMwEQYDVQQHDApQbGVhc2FudG9uMQww
8
+ CgYDVQQKDANJQ0UxFDASBgNVBAsMC1VJIFBsYXRmb3JtMRIwEAYDVQQDDAlsb2Nh
9
+ bGhvc3QxLTArBgkqhkiG9w0BCQEWHnZpbm90aC5rYWx5YW5hc3VuZGFyYW1AaWNl
10
+ LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAP1YQm5nQotkgTAW
11
+ vuxRAlqLeO8peX0WHcgReIaoNXlMkoYBsiQkkX2pW1WdB1PPmQntE9bhJ2lR8Onq
12
+ //g5tjjfIB05pptbIDd7WCnLCseVHfeCbvOhvFza0qjsKUdoS4xBCWlY9WLR7rfo
13
+ ahv8yi9De+HuSgAmPCf3/IQm1/BvBfG5IDLU2maAruolTQUW+sDj+clQDpucKvS0
14
+ YaJMyfOAFjUj/0FvA2XwzQ9FTQX3Mv4NLXgJzhfNKTpJjgfM5lNEkV4EJmmQPS+5
15
+ BBZbaV1A9yabYEUsAfyYtOJc1tdCjnSCXB3cdnPOx1FBIZCM3CdJXyHnDnvZlzfY
16
+ SSNAR/sCAwEAAaNTMFEwHQYDVR0OBBYEFB/8xooBufI/rf2vXZBhsLmQARwoMB8G
17
+ A1UdIwQYMBaAFB/8xooBufI/rf2vXZBhsLmQARwoMA8GA1UdEwEB/wQFMAMBAf8w
18
+ DQYJKoZIhvcNAQELBQADggEBAEJHfJTGWjrQ3toRb+dbQbWdOeqtHW5uvIZ4Mg3E
19
+ Fb6DIz4xe0AOnWJSTk567nCQjHBYnSvjuCtNIbrREeNkkk2oCWVw5RQKwJjkOKzI
20
+ MiHYsckf5JJKGT2ELRZdHlRWWMZxPKy6pDIQU37R7k+E9Jr8VM62W9A5gZo9WWrG
21
+ Qje98PXE0qXmKKbYP9ZJx3Rsj12+GGJyiNc/pkeY17MX8bfRladueCNkiXbof3Xc
22
+ GwjRWw/OS/Dj4VVgDRsh3T24xh3yHY323t4T/3StzR61ix0/ITh3JUqPGoRiKjHC
23
+ 8YDasQh3yuJfsfZTif0MeGT20bdZPgPgqmUTB2tVYe67aZM=
24
+ -----END CERTIFICATE-----
@@ -0,0 +1,30 @@
1
+ -----BEGIN ENCRYPTED PRIVATE KEY-----
2
+ MIIFJDBWBgkqhkiG9w0BBQ0wSTAxBgkqhkiG9w0BBQwwJAQQRf+eVHsoPx56J/99
3
+ 1cmVewICCAAwDAYIKoZIhvcNAgkFADAUBggqhkiG9w0DBwQIQyQkzwnWuQgEggTI
4
+ 7CvoMlZgiMKLQsZ1+I+ZhKdezUacrMw2vGkCx+Gwuehf/ZdH3VGUAhb8PEV9DPrU
5
+ nAWl8E8opWl/1kjxp9OCNBTxm7Nhg2fF9SriYa0gX+B+9DYMwgu626UC4bBzs6gn
6
+ qDVhPzbYa6WGhK3wOZoAFWw6TFfuztmPc3dZxRX6akVtCL/LA64GQvsYvvLDp+LZ
7
+ jlaceogKyyXiyCLWrNLPQlPsw1OzmXw5FV30zZWjxdqNnB9YfVfWOOYpaxE0Z+yX
8
+ ARrAN8Yg8yRcfAwJmxAwsmDIBJymR97dXEs2yeTYvEcxSjA0ZY5X3n10eIYayfoi
9
+ JBPoeTqmHgkKghR2JrveZkYUIQhCgchHzrGsb+rIqKP1gaXdyaWJvItvEm5Ou7tg
10
+ R2pNMepzlKoyntIyYhMEXJjUwisX5sqzcHa3nKQVfDjWiSViymjxGwOUAUqLhC+j
11
+ DhIlVbf9ZHZm4+jIpJAPrlT3PsfDO9tQ718GliERVLPaHB33BJqB1C0fqM3YCmYH
12
+ 6LaRkgP8dAUKc+VN8roy17NLUxWQKCvNKLRKkLrAXlJ1RYK3EKX0J7RRhUKX35Wj
13
+ llYq39P/nCfw56D4Kh/vHUd0Vn0eoZQAbPnriftpk405C3pQCbbkuDaTnmEJGUj3
14
+ g8h6ctkHDnj4Ord7TeTolMtKlQpt1DbNPKFwEZpR1+E7ojt//DIwaerE6NO1itxG
15
+ xKTMqXUqmcKgQlCmuRzjZKlMmVfQI2cuCiBkWR6O45PXj6JFNipM4qNTVZz3RsH6
16
+ tuLB/JfHhwglP2P/OsCyB39yhfsFhLQXLo5/fUqA9yHUJdd4Nq7V9G36vtQQaUs9
17
+ AQt34ithtWZcmrGxIu/UL6xGYrVSbUZRIlkrWTkRuMw6WGMmv+P5ptG/ZAxsATGp
18
+ A5jSCt4wMGTJMy8s3ksImv0dr8x8NgsEAPKBpxPpktdoj5e0C/ovnsrR0/SJ4SYl
19
+ WB2gFQv9cWwDziQB9SQ+OwvpZ7BwEuHqtsY0vYemvY4m99wSTydHEBL+hCqlbTxo
20
+ 00Rq1BNJrEAYJ0olzc2Uwyw392W9jDFjUSmIcOfYVG6sdbyOaAgTzA4fDNasLfEl
21
+ sEOmNeQfeeaOgVXmXUZpioVeiDxsmaGZMHwwQlmLgdefBsUvh4JxdNxTZFwbttCD
22
+ t1mbH/OaJ8eahCGXREY32qfNb2xwz4oTkwrJxT9lbC82DBSgn+IzZCm3CfjcqZ+j
23
+ kJoXnsAiCRljHSHYE6sTxOr0b5ND8E/x3f9O9rjbR5IcNMO7S6P9q3FwHKGpgKFx
24
+ NTPVBHrnTehkCjEr8uED+VIWkodrk1mLNQt2hGITlkqEiAD209OAl8DuaMtX49FE
25
+ /Op90vfIn7WBxVHLO0Q82NNkHPSDS8N0bhQZFe8IZME3JfIlKn1/6SiZ+0EnYP58
26
+ FdS4EPc3z1ajyI/Q7CEwAt3eMM+w1KA9ypaD33pcpBP3OKP04ps5jSviY2V0UwJY
27
+ iOLvGLoY2cQ4xwAS68ljjoHtSRz76pQlKAG8zHwx+RbtIkkUvtX5lYpSa70YIM1O
28
+ oy3TJwIxvv1ZXyUWn5qm6qLnrmyAj/1/Jknh0+TkjUfsSYLqoOzu1+E0hPGEByJ+
29
+ eG1+pj5536megxAPm8DIZVe208oiwc+e
30
+ -----END ENCRYPTED PRIVATE KEY-----
@@ -0,0 +1 @@
1
+ 4590CB31E21367BEDAECEA967E6BA29B5D70DFFD
@@ -36,20 +36,17 @@ var import_node_fs = __toESM(require("node:fs"));
36
36
  var import_node_path = __toESM(require("node:path"));
37
37
  var import_crypto = __toESM(require("crypto"));
38
38
  var import_express = __toESM(require("express"));
39
- var import_helmet_csp = __toESM(require("helmet-csp"));
39
+ var import_helmet = __toESM(require("helmet"));
40
40
  const CSP_REPORT_URI = "/diagnostics/v1/csp";
41
41
  const sources = [
42
- "'self'",
43
42
  "http://localhost:*",
43
+ "https://localhost:*",
44
44
  "ws://localhost:*",
45
+ "*.ice.com",
45
46
  "*.elliemae.io",
46
47
  "*.elliemae.com",
47
- "*.elliservices.com",
48
- "*.ellielabs.com",
49
- "http://pdx-col.eum-appdynamics.com",
50
- "https://pdx-col.eum-appdynamics.com/",
51
- "https://www.google-analytics.com",
52
- "https://www.googletagmanager.com"
48
+ "*.ellieservices.com",
49
+ "*.ellielabs.com"
53
50
  ];
54
51
  const sendFileWithCSPNonce = ({
55
52
  buildPath,
@@ -63,41 +60,55 @@ const sendFileWithCSPNonce = ({
63
60
  res.sendStatus(404);
64
61
  } else {
65
62
  res.set("Content-Type", "text/html");
63
+ res.set("Reporting-Endpoints", `csp-report-uri="${CSP_REPORT_URI}"`);
64
+ res.set(
65
+ "Permissions-Policy",
66
+ "geolocation=(), camera=(), microphone=(), interest-cohort=()"
67
+ );
66
68
  res.send(html.replace(nonceRegex, res.locals.cspNonce));
67
69
  }
68
70
  });
69
71
  };
70
72
  const getScriptSrc = () => {
71
- const source = (req, res) => `'nonce-${res.locals.cspNonce}'`;
72
- const scriptSrc = sources.concat([source]);
73
+ const source = (_req, res) => `'nonce-${res.locals.cspNonce}'`;
74
+ const scriptSrc = [source, "'strict-dynamic'"];
73
75
  return true ? scriptSrc.concat(["'unsafe-eval'"]) : scriptSrc;
74
76
  };
75
77
  const csp = (app) => {
76
- app.use((req, res, next) => {
77
- res.locals.cspNonce = import_crypto.default.randomBytes(16).toString("hex");
78
+ app.use((_req, res, next) => {
79
+ res.locals.cspNonce = import_crypto.default.randomBytes(32).toString("base64");
78
80
  next();
79
81
  });
80
82
  app.use(
81
- (0, import_helmet_csp.default)({
82
- directives: {
83
- defaultSrc: ["'self'"],
84
- baseUri: ["'self'"],
85
- blockAllMixedContent: [],
86
- connectSrc: sources,
87
- fontSrc: sources.concat(["data:"]),
88
- frameAncestors: sources,
89
- imgSrc: sources.concat(["data:"]),
90
- objectSrc: ["'none'"],
91
- scriptSrc: getScriptSrc(),
92
- scriptSrcAttr: ["'none'"],
93
- styleSrc: sources.concat(["'unsafe-inline'"]),
94
- upgradeInsecureRequests: [],
95
- reportUri: CSP_REPORT_URI
83
+ (0, import_helmet.default)({
84
+ crossOriginOpenerPolicy: { policy: "same-origin-allow-popups" },
85
+ crossOriginResourcePolicy: false,
86
+ contentSecurityPolicy: {
87
+ useDefaults: false,
88
+ directives: {
89
+ defaultSrc: import_helmet.default.contentSecurityPolicy.dangerouslyDisableDefaultSrc,
90
+ baseUri: ["'self'"],
91
+ frameAncestors: sources,
92
+ objectSrc: ["'none'"],
93
+ scriptSrc: getScriptSrc(),
94
+ upgradeInsecureRequests: [],
95
+ reportUri: CSP_REPORT_URI,
96
+ reportTo: "csp-report-uri"
97
+ },
98
+ reportOnly: process.env.CSP_REPORT_ONLY !== "false"
96
99
  },
97
- reportOnly: true
100
+ xFrameOptions: false,
101
+ xPermittedCrossDomainPolicies: false,
102
+ xDownloadOptions: false,
103
+ xXssProtection: false
104
+ })
105
+ );
106
+ app.use(
107
+ CSP_REPORT_URI,
108
+ import_express.default.json({
109
+ type: ["application/csp-report", "application/reports+json"]
98
110
  })
99
111
  );
100
- app.use(CSP_REPORT_URI, import_express.default.json({ type: "application/csp-report" }));
101
112
  app.use(CSP_REPORT_URI, (req, res) => {
102
113
  console.log("CSP Violation: ", req.body);
103
114
  res.status(204).end();
@@ -21,18 +21,23 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
21
21
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
22
22
  mod
23
23
  ));
24
+ var import_node_https = __toESM(require("node:https"));
25
+ var import_node_http = __toESM(require("node:http"));
24
26
  var import_express = __toESM(require("express"));
27
+ var import_cert = require("./cert.js");
25
28
  var import_logger = require("./logger.js");
26
29
  var import_middlewares = require("./middlewares.js");
27
30
  var import_utils = require("./utils.js");
31
+ var import_utils2 = require("../utils.js");
28
32
  var import_appRoutes = require("./appRoutes.js");
29
33
  var import_wsServer = require("./wsServer.js");
30
- (async function startServer() {
34
+ void async function startServer() {
31
35
  const app = (0, import_express.default)();
32
36
  (0, import_middlewares.setupDefaultMiddlewares)(app);
33
37
  await (0, import_appRoutes.loadRoutes)(app);
34
38
  (0, import_middlewares.setupAdditionalMiddlewars)(app);
35
- app.listen(import_utils.port, import_utils.host, () => {
39
+ const server = (0, import_utils2.isHttps)() ? import_node_https.default.createServer((0, import_cert.getCertOptions)(), app) : import_node_http.default.createServer(app);
40
+ server.listen(import_utils.port, import_utils.host, () => {
36
41
  import_logger.logger.appStarted(import_utils.port.toString(), import_utils.host || "localhost");
37
42
  }).on("error", (err) => {
38
43
  import_logger.logger.error(err);
@@ -42,4 +47,4 @@ var import_wsServer = require("./wsServer.js");
42
47
  port: import_utils.wsPort
43
48
  });
44
49
  app.locals.wsServer = wsServer;
45
- })();
50
+ }();
@@ -33,6 +33,7 @@ __export(logger_exports, {
33
33
  module.exports = __toCommonJS(logger_exports);
34
34
  var import_chalk = __toESM(require("chalk"));
35
35
  var import_ip = __toESM(require("ip"));
36
+ var import_utils = require("../utils.js");
36
37
  const divider = import_chalk.default.gray("\n-----------------------------------");
37
38
  const logger = {
38
39
  // Called whenever there's an error on the server we want to print
@@ -48,10 +49,12 @@ const logger = {
48
49
  const accessUrls = `${import_chalk.default.bold("Access URLs:")}${divider}
49
50
  `;
50
51
  const localHostUrl = `Localhost: ${import_chalk.default.magenta(
51
- `http://${host}:${port}`
52
+ `${(0, import_utils.isHttps)() ? "https" : "http"}://${host}:${port}`
52
53
  )}
53
54
  `;
54
- const lanUrl = `LAN: ${import_chalk.default.magenta(`http://${import_ip.default.address()}:${port}`)}
55
+ const lanUrl = `LAN: ${import_chalk.default.magenta(
56
+ `${(0, import_utils.isHttps)() ? "https" : "http"}://${import_ip.default.address()}:${port}`
57
+ )}
55
58
  `;
56
59
  const proxy = tunnelStarted ? `
57
60
  Proxy: ${import_chalk.default.magenta(tunnelStarted)}` : "";
@@ -61,7 +61,7 @@ const setupDefaultMiddlewares = (app) => {
61
61
  const setupAdditionalMiddlewars = (app, options = {}) => {
62
62
  const { buildPath = paths.buildPath, basePath = paths.basePath } = options;
63
63
  app.use((0, import_compression.default)());
64
- app.get(basePath, (req, res) => {
64
+ app.get(basePath, (_req, res) => {
65
65
  (0, import_csp.sendFileWithCSPNonce)({ buildPath, res });
66
66
  });
67
67
  app.use(
@@ -75,7 +75,7 @@ const setupAdditionalMiddlewars = (app, options = {}) => {
75
75
  app.use((0, import_express_static_gzip.default)("cdn", {}));
76
76
  app.get(
77
77
  "*",
78
- (req, res) => (0, import_csp.sendFileWithCSPNonce)({ buildPath, res })
78
+ (_req, res) => (0, import_csp.sendFileWithCSPNonce)({ buildPath, res })
79
79
  );
80
80
  return app;
81
81
  };
@@ -31,8 +31,11 @@ __export(wsServer_exports, {
31
31
  createWSServer: () => createWSServer
32
32
  });
33
33
  module.exports = __toCommonJS(wsServer_exports);
34
+ var import_node_https = __toESM(require("node:https"));
34
35
  var import_node_http = __toESM(require("node:http"));
35
36
  var wsLib = __toESM(require("ws"));
37
+ var import_cert = require("./cert.js");
38
+ var import_utils = require("../utils.js");
36
39
  const PING_INTERVAL = 3e4;
37
40
  const DEFAULT_PORT = 5001;
38
41
  const onSocketError = (err) => {
@@ -58,9 +61,9 @@ const createWSServer = ({
58
61
  const heartbeat = () => {
59
62
  isAlive = true;
60
63
  };
61
- const httpServer = import_node_http.default.createServer();
64
+ const server = (0, import_utils.isHttps)() ? import_node_https.default.createServer((0, import_cert.getCertOptions)()) : import_node_http.default.createServer();
62
65
  const wsServer = new wsLib.WebSocketServer({ noServer: true });
63
- httpServer.on("upgrade", (req, socket, head) => {
66
+ server.on("upgrade", (req, socket, head) => {
64
67
  socket.on("error", onSocketError);
65
68
  wsServer.handleUpgrade(req, socket, head, (ws) => {
66
69
  const protocols = req.headers["sec-websocket-protocol"]?.split(",");
@@ -117,9 +120,9 @@ const createWSServer = ({
117
120
  clearInterval(interval);
118
121
  });
119
122
  return new Promise((resolve) => {
120
- httpServer.listen(port, () => {
123
+ server.listen(port, () => {
121
124
  console.log(`Websocket server listening on port ${port}`);
122
- return resolve({ httpServer, wsServer });
125
+ return resolve({ server, wsServer });
123
126
  });
124
127
  });
125
128
  };
@@ -6,10 +6,8 @@ const { findMonoRepoRoot } = require('../monorepo/utils.cjs');
6
6
 
7
7
  let isReactModule = true;
8
8
  try {
9
- /* eslint-disable global-require, import/no-unresolved */
10
9
  require('react');
11
10
  require('styled-components');
12
- /* eslint-enable global-require, import/no-unresolved */
13
11
  } catch (err) {
14
12
  isReactModule = false;
15
13
  }
@@ -64,6 +62,7 @@ const jestConfig = {
64
62
  '.*\\.(jpg|jpeg|png|gif|eot|otf|webp|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga|ico)$':
65
63
  getMockFilePath('image.js'),
66
64
  '.*\\.svg(?:\\?[a-zA-Z]+)?$': getMockFilePath('svg.js'),
65
+ '.*iframe\\.html(?:\\?[a-zA-Z]+)?$': getMockFilePath('iframe.js'),
67
66
  '.*\\.html(?:\\?[a-zA-Z]+)?$': getMockFilePath('html.js'),
68
67
  '@elliemae/pui-user-monitoring': getMockFilePath('pui-user-monitoring.js'),
69
68
  '@elliemae/pui-app-loader': getMockFilePath('pui-app-loader.js'),
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @note The block below contains polyfills for Node.js globals
2
+ * The block below contains polyfills for Node.js globals
3
3
  * required for Jest to function when running JSDOM tests.
4
4
  * These HAVE to be require's and HAVE to be in this exact
5
5
  * order, since "undici" depends on the "TextEncoder" global API.
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var iframe_exports = {};
20
+ __export(iframe_exports, {
21
+ default: () => iframe_default
22
+ });
23
+ module.exports = __toCommonJS(iframe_exports);
24
+ var iframe_default = "./iframe.html";
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __export = (target, all) => {
9
7
  for (var name in all)
@@ -17,14 +15,6 @@ var __copyProps = (to, from, except, desc) => {
17
15
  }
18
16
  return to;
19
17
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
19
  var svg_exports = {};
30
20
  __export(svg_exports, {
@@ -32,6 +22,5 @@ __export(svg_exports, {
32
22
  default: () => svg_default
33
23
  });
34
24
  module.exports = __toCommonJS(svg_exports);
35
- var React = __toESM(require("react"));
36
25
  var svg_default = "SvgrURL";
37
26
  const ReactComponent = "div";
@@ -32,7 +32,6 @@ module.exports = (request, options) => {
32
32
  }
33
33
  const resolution = resolutions.find(({ matcher }) => matcher.test(request));
34
34
  if (resolution) {
35
- // eslint-disable-next-line no-restricted-syntax
36
35
  for (const extension of resolution.extensions) {
37
36
  try {
38
37
  return resolver(
@@ -31,20 +31,16 @@ __export(vitest_config_exports, {
31
31
  vitestConfig: () => vitestConfig
32
32
  });
33
33
  module.exports = __toCommonJS(vitest_config_exports);
34
- var import_node_path = __toESM(require("node:path"));
35
- var import_node_url = require("node:url");
36
34
  var import_config = require("vitest/config");
37
35
  var import_plugin_react = __toESM(require("@vitejs/plugin-react"));
38
36
  var import_vite_tsconfig_paths = __toESM(require("vite-tsconfig-paths"));
39
- const import_meta = {};
40
- const __dirname = import_node_path.default.dirname((0, import_node_url.fileURLToPath)(import_meta.url));
41
37
  const vitestConfig = (0, import_config.defineConfig)({
38
+ // @ts-expect-error - `react` and `tsconfigPaths` are not part of the default config
42
39
  plugins: [(0, import_plugin_react.default)(), (0, import_vite_tsconfig_paths.default)()],
43
40
  test: {
44
41
  globals: true,
45
42
  root: process.cwd(),
46
43
  environment: "happy-dom",
47
- setupFiles: [import_node_path.default.resolve(__dirname, "./setup-test-env.js")],
48
44
  include: ["./{app,lib}/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}"],
49
45
  exclude: [...import_config.configDefaults.exclude, ".idea", ".git", ".cache", "e2e"],
50
46
  coverage: {
@@ -4,6 +4,7 @@
4
4
  "syntax": "typescript",
5
5
  "jsx": true,
6
6
  "tsx": true,
7
+ "decorators": true,
7
8
  "dynamicImport": true
8
9
  },
9
10
  "target": "es2022"
@@ -14,7 +14,7 @@ exports.getAppConfig = () => {
14
14
 
15
15
  if (!fs.existsSync(appConfigPath)) return '{}';
16
16
  const appConfig = fs.readFileSync(appConfigPath);
17
- return appConfig || '{}';
17
+ return appConfig ?? '{}';
18
18
  };
19
19
 
20
20
  exports.isApp = isApp;
package/dist/cjs/utils.js CHANGED
@@ -30,13 +30,15 @@ var utils_exports = {};
30
30
  __export(utils_exports, {
31
31
  basePath: () => basePath,
32
32
  getAppConfig: () => getAppConfig,
33
- isApp: () => isApp
33
+ isApp: () => isApp,
34
+ isHttps: () => isHttps
34
35
  });
35
36
  module.exports = __toCommonJS(utils_exports);
36
37
  var import_node_fs = __toESM(require("node:fs"));
37
38
  var import_node_path = __toESM(require("node:path"));
38
39
  const basePath = (process.env.BASE_PATH ?? "/").replace(/\/?$/, "/");
39
40
  const isApp = () => import_node_fs.default.existsSync(import_node_path.default.join(process.cwd(), "app"));
41
+ const isHttps = () => process.env.HTTPS === "true";
40
42
  const getAppConfig = () => {
41
43
  const appConfigPath = import_node_path.default.join(
42
44
  process.cwd(),
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var csp_plugin_exports = {};
30
+ __export(csp_plugin_exports, {
31
+ CspPlugin: () => CspPlugin
32
+ });
33
+ module.exports = __toCommonJS(csp_plugin_exports);
34
+ var import_html_webpack_plugin = __toESM(require("html-webpack-plugin"));
35
+ var import_csp = require("./csp.js");
36
+ const defaultOptions = {
37
+ enableUnsafeEval: false
38
+ };
39
+ class CspPlugin {
40
+ #options = defaultOptions;
41
+ /**
42
+ * @param {object} options Additional options for this module.
43
+ */
44
+ constructor(options) {
45
+ this.#options = { ...this.#options, ...options ?? {} };
46
+ }
47
+ /**
48
+ * Processes HtmlWebpackPlugin's html data by adding the CSP
49
+ * @param _compilation
50
+ * @param htmlPluginData
51
+ * @param htmlPluginData.html
52
+ * @param compileCb
53
+ * @returns {*}
54
+ */
55
+ processCsp(_compilation, htmlPluginData, compileCb) {
56
+ const cspModule = new import_csp.CSP(htmlPluginData.html);
57
+ cspModule.refactorSourcedScriptsForHashBasedCsp();
58
+ const scriptHashes = cspModule.hashAllInlineScripts();
59
+ const { enableUnsafeEval } = this.#options;
60
+ const strictCsp = import_csp.CSP.getStrictCsp(scriptHashes, {
61
+ enableUnsafeEval
62
+ });
63
+ cspModule.addMetaTag(strictCsp);
64
+ htmlPluginData.html = cspModule.serializeDom();
65
+ return compileCb(null, htmlPluginData);
66
+ }
67
+ /**
68
+ * Hooks into webpack to collect assets and hash them, build the policy, and add it into our HTML template
69
+ * @param compiler
70
+ */
71
+ apply(compiler) {
72
+ compiler.hooks.compilation.tap("CspPlugin", (compilation) => {
73
+ import_html_webpack_plugin.default.getCompilationHooks(compilation).beforeEmit.tapAsync(
74
+ "CspPlugin",
75
+ this.processCsp.bind(this, compilation)
76
+ );
77
+ });
78
+ }
79
+ }