@zohodesk/react-cli 0.0.1-exp.160.2 → 0.0.1-exp.160.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. package/.eslintignore +7 -7
  2. package/.eslintrc.js +183 -183
  3. package/README.md +746 -746
  4. package/bin/cli.js +421 -421
  5. package/cert/cert.pem +37 -37
  6. package/cert/key.pem +27 -27
  7. package/files/eslintrc.js +62 -62
  8. package/files/prettierrc.js +3 -3
  9. package/lib/common/index.js +6 -6
  10. package/lib/configs/webpack.css.umd.config.js +4 -4
  11. package/lib/configs/webpack.prod.config.js +3 -4
  12. package/lib/loaderUtils/index.js +4 -4
  13. package/lib/loaders/scriptInstrumentLoader.js +2 -2
  14. package/lib/loaders/workerLoader.js +9 -9
  15. package/lib/pluginUtils/getDevPlugins.js +5 -5
  16. package/lib/pluginUtils/getProdPlugins.js +8 -8
  17. package/lib/pluginUtils/index.js +12 -12
  18. package/lib/plugins/EFCPlugin.md +6 -6
  19. package/lib/plugins/I18NInjectIntoIndexPlugin.js +4 -4
  20. package/lib/plugins/I18nSplitPlugin/I18nDownlodLogic.js +38 -38
  21. package/lib/plugins/I18nSplitPlugin/I18nFilesEmitter.js +30 -30
  22. package/lib/plugins/I18nSplitPlugin/I18nKeysIdentifer.js +8 -8
  23. package/lib/plugins/I18nSplitPlugin/I18nSplit.md +86 -86
  24. package/lib/plugins/I18nSplitPlugin/README.md +25 -25
  25. package/lib/plugins/I18nSplitPlugin/index.js +57 -57
  26. package/lib/plugins/I18nSplitPlugin/utils/hashUtils.js +2 -2
  27. package/lib/plugins/I18nSplitPlugin/utils/propertiesUtils.js +1 -1
  28. package/lib/plugins/ResourceHintsPlugin.js +17 -17
  29. package/lib/plugins/RtlSplitPlugin/RtlCssPlugin.js +6 -6
  30. package/lib/plugins/RtlSplitPlugin/RtrSplit.md +30 -30
  31. package/lib/plugins/ServiceWorkerPlugin.js +9 -9
  32. package/lib/plugins/TPHashMappingPlugin.js +4 -4
  33. package/lib/plugins/index.js +36 -36
  34. package/lib/postcss-plugins/RTLSplitPlugin.js +13 -13
  35. package/lib/sh/pre-commit.sh +34 -34
  36. package/lib/sh/reportPublish.sh +45 -45
  37. package/lib/templates/linterConstant.js +1 -1
  38. package/lib/utils/buildstats.html +148 -148
  39. package/lib/utils/cssURLReplacer.js +1 -1
  40. package/lib/utils/index.js +21 -19
  41. package/lib/utils/jsonHelper.js +6 -9
  42. package/lib/utils/reinstallDependencies.js +1 -1
  43. package/lib/utils/resultSchema.json +73 -73
  44. package/package.json +148 -145
  45. package/templates/app/.eslintrc.js +140 -140
  46. package/templates/app/README.md +12 -12
  47. package/templates/app/app/index.html +24 -24
  48. package/templates/app/app/properties/ApplicationResources_en_US.properties +1 -1
  49. package/templates/app/app/properties/i18nkeys.json +3 -3
  50. package/templates/app/docs/all.html +69 -69
  51. package/templates/app/mockapi/index.js +18 -18
  52. package/templates/app/package.json +37 -37
  53. package/templates/app/src/actions/SampleActions/index.js +37 -37
  54. package/templates/app/src/actions/index.js +65 -65
  55. package/templates/app/src/appUrls.js +19 -19
  56. package/templates/app/src/components/Alert/Alert.js +134 -134
  57. package/templates/app/src/components/Alert/Alert.module.css +79 -79
  58. package/templates/app/src/components/FreezeLayer/FreezeLayer.css +37 -37
  59. package/templates/app/src/components/FreezeLayer/FreezeLayer.js +84 -84
  60. package/templates/app/src/components/Sample/Sample.module.css +11 -11
  61. package/templates/app/src/components/Sample/SampleList.js +61 -61
  62. package/templates/app/src/components/Slider/Slider.css +41 -41
  63. package/templates/app/src/components/Slider/Slider.js +55 -55
  64. package/templates/app/src/containers/AlertContainer/index.js +15 -15
  65. package/templates/app/src/containers/AppContainer/index.js +96 -96
  66. package/templates/app/src/containers/AppContainer/index.module.css +27 -27
  67. package/templates/app/src/containers/CustomMatch/index.js +65 -65
  68. package/templates/app/src/containers/DevTools/index.js +10 -10
  69. package/templates/app/src/containers/Header/index.js +67 -67
  70. package/templates/app/src/containers/Header/index.module.css +43 -43
  71. package/templates/app/src/containers/Redirect/index.js +63 -63
  72. package/templates/app/src/containers/Redirector/index.js +47 -47
  73. package/templates/app/src/containers/SampleListContainer/ListContainer.js +42 -42
  74. package/templates/app/src/containers/SampleListContainer/ListContainer.module.css +3 -3
  75. package/templates/app/src/historyChange.js +5 -5
  76. package/templates/app/src/index.html +10 -10
  77. package/templates/app/src/index.js +24 -24
  78. package/templates/app/src/middleware/PromiseMiddleware.js +59 -59
  79. package/templates/app/src/reducers/alertData.js +11 -11
  80. package/templates/app/src/reducers/index.js +6 -6
  81. package/templates/app/src/reducers/samples.js +19 -19
  82. package/templates/app/src/store/configureStore.dev.js +51 -51
  83. package/templates/app/src/store/configureStore.js +5 -5
  84. package/templates/app/src/store/configureStore.prod.js +26 -26
  85. package/templates/app/src/util/Common.js +5 -5
  86. package/templates/app/src/util/RequestAPI.js +132 -132
  87. package/templates/docs/all.html +249 -249
  88. package/templates/docs/component.html +178 -178
  89. package/templates/docs/components.html +221 -221
  90. package/templates/docs/css/b.min.css +6 -6
  91. package/templates/docs/css/component.css +42 -42
  92. package/templates/docs/css/componentTest.css +6 -6
  93. package/templates/docs/css/hopscotch.css +585 -585
  94. package/templates/docs/css/style.css +1022 -1022
  95. package/templates/docs/impactReportTemplate.html +154 -154
  96. package/templates/docs/index.html +1493 -1493
  97. package/templates/docs/js/active-line.js +72 -72
  98. package/templates/docs/js/b.min.js +7 -7
  99. package/templates/docs/js/codemirror.js +9680 -9680
  100. package/templates/docs/js/designTokens.js +334 -334
  101. package/templates/docs/js/j.min.js +4 -4
  102. package/templates/docs/js/javascript.js +874 -874
  103. package/templates/docs/js/matchbrackets.js +145 -145
package/cert/cert.pem CHANGED
@@ -1,37 +1,37 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIGXjCCBUagAwIBAgIQAtcYpsFFTaNHj+IMkHFT4TANBgkqhkiG9w0BAQsFADCB
3
- jzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
4
- A1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQD
5
- Ey5TZWN0aWdvIFJTQSBEb21haW4gVmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENB
6
- MB4XDTIxMDUxOTAwMDAwMFoXDTIyMDUxOTIzNTk1OVowHjEcMBoGA1UEAxMTY3Nl
7
- ei56b2hvY29ycGluLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
8
- AKvOzaIzBQ3PDjQoiEUfNzhalfKGftg4R1D79dNV31RSGG6iIwr8LqPopHwzdlVv
9
- LOuJPJ1V3HSZs3GkfsTAp6/RBWvloth3Yd+ucGFzHqe9JObGZLTiRizUfRsZnk4B
10
- f88sSF97WPy7PD4YFXrrgn134UC92+I+Y+5vem4SBGqG4iJNkuJJG861S5XTrW+h
11
- cgUPohjOoLr3LgdqT/uNo6vnXMXI2ifk+18oZZUp9PSiOK8ZOXORCq+3knddvTM9
12
- eezBEyBnSRk4eQGFhpKmOiZziJk0ekhwLS5FkuZuQ2V01pb02kfBqFtF0qRQNcRe
13
- XaQfijnSuWevQvkUNUtv/40CAwEAAaOCAyQwggMgMB8GA1UdIwQYMBaAFI2MXsRU
14
- rYrhd+mb+ZsF4bgBjWHhMB0GA1UdDgQWBBQ9MFzTCV3QUZjBxp4aDzfT7WaG8DAO
15
- BgNVHQ8BAf8EBAMCBaAwDAYDVR0TAQH/BAIwADAdBgNVHSUEFjAUBggrBgEFBQcD
16
- AQYIKwYBBQUHAwIwSQYDVR0gBEIwQDA0BgsrBgEEAbIxAQICBzAlMCMGCCsGAQUF
17
- BwIBFhdodHRwczovL3NlY3RpZ28uY29tL0NQUzAIBgZngQwBAgEwgYQGCCsGAQUF
18
- BwEBBHgwdjBPBggrBgEFBQcwAoZDaHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0
19
- aWdvUlNBRG9tYWluVmFsaWRhdGlvblNlY3VyZVNlcnZlckNBLmNydDAjBggrBgEF
20
- BQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wggGABgorBgEEAdZ5AgQCBIIB
21
- cASCAWwBagB3AEalVet1+pEgMLWiiWn0830RLEF0vv1JuIWr8vxw/m1HAAABeYUn
22
- JT0AAAQDAEgwRgIhAMXPPCrlxxhDUSvGUHKDWsZEv61EmucSyWB+rT1640hRAiEA
23
- 4gqv+yZGOOy81h4tpt4Wz3kaNPR4ahagAkA4jckX9kYAdgBByMqx3yJGShDGoToJ
24
- QodeTjGLGwPr60vHaPCQYpYG9gAAAXmFJyUAAAAEAwBHMEUCIQDMoXy7+8DFKuRV
25
- CkwjsgMvjVH2ycDACFNmMaS8aL7RLgIgb7O9T0LljQ5fEXc4UOAv8XVtcviTUYt+
26
- fQ93gFOk1iwAdwApeb7wnjk5IfBWc59jpXflvld9nGAK+PlNXSZcJV3HhAAAAXmF
27
- JyTsAAAEAwBIMEYCIQDjvBXkfwP1Yjq8+V0rTGXoKkE3HQaIFcoF5XmV6hkFsQIh
28
- AIDPMToawN4F3+7nhu4wNb8P6fxGjCyrNiRwxV6GcbstMEsGA1UdEQREMEKCE2Nz
29
- ZXouem9ob2NvcnBpbi5jb22CFSouY3Nlei56b2hvY29ycGluLmNvbYIUKi50c2ku
30
- em9ob2NvcnBpbi5jb20wDQYJKoZIhvcNAQELBQADggEBAJbJ8CSbGd6Vfiq7QatR
31
- iS58hDOrm3DnfLkbf0HjqMa/S3GQbpu59rb2dsXWAArBTqVSBBCaeshN1JyaosK2
32
- FCwb3ovkt6F5xOj2cRQ/CcUnDDBTZDrSx6FA+EToPuw+Hw+6VgH+WsT5csp6yzgD
33
- 3EjnYSDJ+UhepNhKu1GcbWlzRUK68T1gV+hIVx/SzrsT4f/pHDohjAQamQAWCg3O
34
- cJ2EU6GVwNSpfJkKizLBnmO6ghAeg5PTUqV7u6umrjXKkHoRSWajZm61ug2xOgHa
35
- 7ttiYVGrOhfw4k9byQhwrsGDxTMqJ5CoMs3nLJT9EK+xA9/bkMvKXMUJZkBjpJ1F
36
- XIE=
37
- -----END CERTIFICATE-----
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIGXjCCBUagAwIBAgIQAtcYpsFFTaNHj+IMkHFT4TANBgkqhkiG9w0BAQsFADCB
3
+ jzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G
4
+ A1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQD
5
+ Ey5TZWN0aWdvIFJTQSBEb21haW4gVmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENB
6
+ MB4XDTIxMDUxOTAwMDAwMFoXDTIyMDUxOTIzNTk1OVowHjEcMBoGA1UEAxMTY3Nl
7
+ ei56b2hvY29ycGluLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
8
+ AKvOzaIzBQ3PDjQoiEUfNzhalfKGftg4R1D79dNV31RSGG6iIwr8LqPopHwzdlVv
9
+ LOuJPJ1V3HSZs3GkfsTAp6/RBWvloth3Yd+ucGFzHqe9JObGZLTiRizUfRsZnk4B
10
+ f88sSF97WPy7PD4YFXrrgn134UC92+I+Y+5vem4SBGqG4iJNkuJJG861S5XTrW+h
11
+ cgUPohjOoLr3LgdqT/uNo6vnXMXI2ifk+18oZZUp9PSiOK8ZOXORCq+3knddvTM9
12
+ eezBEyBnSRk4eQGFhpKmOiZziJk0ekhwLS5FkuZuQ2V01pb02kfBqFtF0qRQNcRe
13
+ XaQfijnSuWevQvkUNUtv/40CAwEAAaOCAyQwggMgMB8GA1UdIwQYMBaAFI2MXsRU
14
+ rYrhd+mb+ZsF4bgBjWHhMB0GA1UdDgQWBBQ9MFzTCV3QUZjBxp4aDzfT7WaG8DAO
15
+ BgNVHQ8BAf8EBAMCBaAwDAYDVR0TAQH/BAIwADAdBgNVHSUEFjAUBggrBgEFBQcD
16
+ AQYIKwYBBQUHAwIwSQYDVR0gBEIwQDA0BgsrBgEEAbIxAQICBzAlMCMGCCsGAQUF
17
+ BwIBFhdodHRwczovL3NlY3RpZ28uY29tL0NQUzAIBgZngQwBAgEwgYQGCCsGAQUF
18
+ BwEBBHgwdjBPBggrBgEFBQcwAoZDaHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0
19
+ aWdvUlNBRG9tYWluVmFsaWRhdGlvblNlY3VyZVNlcnZlckNBLmNydDAjBggrBgEF
20
+ BQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wggGABgorBgEEAdZ5AgQCBIIB
21
+ cASCAWwBagB3AEalVet1+pEgMLWiiWn0830RLEF0vv1JuIWr8vxw/m1HAAABeYUn
22
+ JT0AAAQDAEgwRgIhAMXPPCrlxxhDUSvGUHKDWsZEv61EmucSyWB+rT1640hRAiEA
23
+ 4gqv+yZGOOy81h4tpt4Wz3kaNPR4ahagAkA4jckX9kYAdgBByMqx3yJGShDGoToJ
24
+ QodeTjGLGwPr60vHaPCQYpYG9gAAAXmFJyUAAAAEAwBHMEUCIQDMoXy7+8DFKuRV
25
+ CkwjsgMvjVH2ycDACFNmMaS8aL7RLgIgb7O9T0LljQ5fEXc4UOAv8XVtcviTUYt+
26
+ fQ93gFOk1iwAdwApeb7wnjk5IfBWc59jpXflvld9nGAK+PlNXSZcJV3HhAAAAXmF
27
+ JyTsAAAEAwBIMEYCIQDjvBXkfwP1Yjq8+V0rTGXoKkE3HQaIFcoF5XmV6hkFsQIh
28
+ AIDPMToawN4F3+7nhu4wNb8P6fxGjCyrNiRwxV6GcbstMEsGA1UdEQREMEKCE2Nz
29
+ ZXouem9ob2NvcnBpbi5jb22CFSouY3Nlei56b2hvY29ycGluLmNvbYIUKi50c2ku
30
+ em9ob2NvcnBpbi5jb20wDQYJKoZIhvcNAQELBQADggEBAJbJ8CSbGd6Vfiq7QatR
31
+ iS58hDOrm3DnfLkbf0HjqMa/S3GQbpu59rb2dsXWAArBTqVSBBCaeshN1JyaosK2
32
+ FCwb3ovkt6F5xOj2cRQ/CcUnDDBTZDrSx6FA+EToPuw+Hw+6VgH+WsT5csp6yzgD
33
+ 3EjnYSDJ+UhepNhKu1GcbWlzRUK68T1gV+hIVx/SzrsT4f/pHDohjAQamQAWCg3O
34
+ cJ2EU6GVwNSpfJkKizLBnmO6ghAeg5PTUqV7u6umrjXKkHoRSWajZm61ug2xOgHa
35
+ 7ttiYVGrOhfw4k9byQhwrsGDxTMqJ5CoMs3nLJT9EK+xA9/bkMvKXMUJZkBjpJ1F
36
+ XIE=
37
+ -----END CERTIFICATE-----
package/cert/key.pem CHANGED
@@ -1,27 +1,27 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIIEpQIBAAKCAQEAq87NojMFDc8ONCiIRR83OFqV8oZ+2DhHUPv101XfVFIYbqIj
3
- Cvwuo+ikfDN2VW8s64k8nVXcdJmzcaR+xMCnr9EFa+Wi2Hdh365wYXMep70k5sZk
4
- tOJGLNR9GxmeTgF/zyxIX3tY/Ls8PhgVeuuCfXfhQL3b4j5j7m96bhIEaobiIk2S
5
- 4kkbzrVLldOtb6FyBQ+iGM6guvcuB2pP+42jq+dcxcjaJ+T7XyhllSn09KI4rxk5
6
- c5EKr7eSd129Mz157METIGdJGTh5AYWGkqY6JnOImTR6SHAtLkWS5m5DZXTWlvTa
7
- R8GoW0XSpFA1xF5dpB+KOdK5Z69C+RQ1S2//jQIDAQABAoIBAQCdu5d+umiBbP8V
8
- U8EH9Mi1rDTOHDyINeMDrs7Z35TRzS0xJRoXE7+eLBAXFwglF5SeCbjkmdd0FUhx
9
- pRvddyJ8f+ICVSlUowXwXi4+yXnzdetTFAGRL8xNjCfvoW19IFM+2OD5CD2CikOc
10
- nm/aEi4TEuRyk9wzsiP828wDEfeL9Bi9QVLQJqSDRrebkSPsM0IFkGN+SK86a+R9
11
- qptbjA1lfT5i6XmJTooiRz2+0EzJ54/mxjHQCQUyIZJ83WWqgq0tv3yq/Et2Qcuk
12
- pwbzzBFDxhqTqZk7ekxDIa6ROfhtQSsnhTNtOR83tZomPmvN9iLht5YnkQtkLh3M
13
- qUxTWRoBAoGBANPp2UZG2t7LJNUmHS3v2td/aZep3z3vtA74kVp8t1yfehtK3E3p
14
- H2IPLvNt2/NCR3qK9ugHY4GwgwSWdeCXoj2FdrtwtS/Ca7QbUbiDIsc77Qiy66Dc
15
- f9KBXan6wTgn5oXRILhi36rAoc66EL7f3OSItVqSqkS1pmQu0145ynedAoGBAM+M
16
- /vhJ50H5rfYacccGOr+43ZYY1czGcxXlJ53SREjP3KVQI4jLp6oxGJcx94ji6IDh
17
- OTBpyHzvHEyrF5KB5/421Z2ocQZeeFjEW3GipaK0yDM0UOU+yhi4fNGpBvcglTCA
18
- dSddJ2ASkfecZogHdF1mmCNVtVxWBgCuG5B0TLyxAoGAS2K7SobWQb+eoLzoUHkt
19
- LtBCrhNeOVhWg6TlgH0xdZ+9/ouJB6ZQ5b9lAnAoeMcxSmS5JR3Lxk0WrsEfuf/3
20
- VU9vR4r2ycCuM+osDimIa7vjvN55eEY4qpgey+NKbUG0fhJBQ5bY3pOcfEAwyNY2
21
- bI49hbT7IWpFgQovYyvH3PkCgYEAzwtHWqZWtQD+4g+1SqZTOuiO2+nAdjvNmJz1
22
- rUGRbtU0thDAsfj/NA8wCbwFxB8fc1m59CrCnqblIzJWHIfMx1MqO9FJluHsyhhv
23
- ZGetNieDw1jADkBZ2NlJYtlsImD1kuHCfNc3rWY5CLqTqcVN9tKemDkq54bFDC6j
24
- PrJVzrECgYEAw2FfcfxLcsst6wPzGQScFo2c3ryf6QangNC2qg+QRJ7V4Yh3BJmr
25
- NMFEXguehX4gT6iQ0MN5/Yt67IAxlP0vlO9fChPeG6DFiyGH7gNuIY1WngI8hXwK
26
- ezMfJldH/sjKtawm6LyRk2VmUFe+HYiXO4eZxDuj4tRi/kgGnipYwlI=
27
- -----END RSA PRIVATE KEY-----
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpQIBAAKCAQEAq87NojMFDc8ONCiIRR83OFqV8oZ+2DhHUPv101XfVFIYbqIj
3
+ Cvwuo+ikfDN2VW8s64k8nVXcdJmzcaR+xMCnr9EFa+Wi2Hdh365wYXMep70k5sZk
4
+ tOJGLNR9GxmeTgF/zyxIX3tY/Ls8PhgVeuuCfXfhQL3b4j5j7m96bhIEaobiIk2S
5
+ 4kkbzrVLldOtb6FyBQ+iGM6guvcuB2pP+42jq+dcxcjaJ+T7XyhllSn09KI4rxk5
6
+ c5EKr7eSd129Mz157METIGdJGTh5AYWGkqY6JnOImTR6SHAtLkWS5m5DZXTWlvTa
7
+ R8GoW0XSpFA1xF5dpB+KOdK5Z69C+RQ1S2//jQIDAQABAoIBAQCdu5d+umiBbP8V
8
+ U8EH9Mi1rDTOHDyINeMDrs7Z35TRzS0xJRoXE7+eLBAXFwglF5SeCbjkmdd0FUhx
9
+ pRvddyJ8f+ICVSlUowXwXi4+yXnzdetTFAGRL8xNjCfvoW19IFM+2OD5CD2CikOc
10
+ nm/aEi4TEuRyk9wzsiP828wDEfeL9Bi9QVLQJqSDRrebkSPsM0IFkGN+SK86a+R9
11
+ qptbjA1lfT5i6XmJTooiRz2+0EzJ54/mxjHQCQUyIZJ83WWqgq0tv3yq/Et2Qcuk
12
+ pwbzzBFDxhqTqZk7ekxDIa6ROfhtQSsnhTNtOR83tZomPmvN9iLht5YnkQtkLh3M
13
+ qUxTWRoBAoGBANPp2UZG2t7LJNUmHS3v2td/aZep3z3vtA74kVp8t1yfehtK3E3p
14
+ H2IPLvNt2/NCR3qK9ugHY4GwgwSWdeCXoj2FdrtwtS/Ca7QbUbiDIsc77Qiy66Dc
15
+ f9KBXan6wTgn5oXRILhi36rAoc66EL7f3OSItVqSqkS1pmQu0145ynedAoGBAM+M
16
+ /vhJ50H5rfYacccGOr+43ZYY1czGcxXlJ53SREjP3KVQI4jLp6oxGJcx94ji6IDh
17
+ OTBpyHzvHEyrF5KB5/421Z2ocQZeeFjEW3GipaK0yDM0UOU+yhi4fNGpBvcglTCA
18
+ dSddJ2ASkfecZogHdF1mmCNVtVxWBgCuG5B0TLyxAoGAS2K7SobWQb+eoLzoUHkt
19
+ LtBCrhNeOVhWg6TlgH0xdZ+9/ouJB6ZQ5b9lAnAoeMcxSmS5JR3Lxk0WrsEfuf/3
20
+ VU9vR4r2ycCuM+osDimIa7vjvN55eEY4qpgey+NKbUG0fhJBQ5bY3pOcfEAwyNY2
21
+ bI49hbT7IWpFgQovYyvH3PkCgYEAzwtHWqZWtQD+4g+1SqZTOuiO2+nAdjvNmJz1
22
+ rUGRbtU0thDAsfj/NA8wCbwFxB8fc1m59CrCnqblIzJWHIfMx1MqO9FJluHsyhhv
23
+ ZGetNieDw1jADkBZ2NlJYtlsImD1kuHCfNc3rWY5CLqTqcVN9tKemDkq54bFDC6j
24
+ PrJVzrECgYEAw2FfcfxLcsst6wPzGQScFo2c3ryf6QangNC2qg+QRJ7V4Yh3BJmr
25
+ NMFEXguehX4gT6iQ0MN5/Yt67IAxlP0vlO9fChPeG6DFiyGH7gNuIY1WngI8hXwK
26
+ ezMfJldH/sjKtawm6LyRk2VmUFe+HYiXO4eZxDuj4tRi/kgGnipYwlI=
27
+ -----END RSA PRIVATE KEY-----
package/files/eslintrc.js CHANGED
@@ -1,62 +1,62 @@
1
- const [off, , error] = ['off', 'warn', 'error'];
2
-
3
- module.exports = {
4
- env: {
5
- browser: true,
6
- es2021: true,
7
- },
8
- extends: [
9
- 'plugin:react/recommended',
10
- 'plugin:react-hooks/recommended',
11
- 'airbnb',
12
- 'prettier',
13
- ],
14
- parserOptions: {
15
- ecmaFeatures: {
16
- jsx: true,
17
- },
18
- ecmaVersion: 12,
19
- sourceType: 'module',
20
- },
21
- plugins: [
22
- 'react',
23
- 'css-modules',
24
- '@zohodesk/zsecurity',
25
- '@zohodesk/react-performance',
26
- ],
27
- rules: {
28
- // Internal Rules
29
- '@zohodesk/react-performance/no-ref-mapstatetoprops': error,
30
- '@zohodesk/zsecurity/no-unsecure-html': error,
31
- '@zohodesk/zsecurity/no-protocol-check': error,
32
-
33
- // CSS Module Rules
34
- 'css-modules/no-unused-class': [error, { camelCase: true }],
35
- 'css-modules/no-undef-class': [error, { camelCase: 'only' }],
36
-
37
- 'import/no-unresolved': off,
38
- 'import/no-extraneous-dependencies': off,
39
-
40
- // As redux used
41
- 'no-shadow': off, // As we import the action files and use the same name in getting from props built from connect.
42
- 'react/jsx-filename-extension': off,
43
-
44
- // As we don't follow
45
- 'react/require-default-props': off,
46
- 'react/jsx-props-no-spreading': off,
47
-
48
- // As we didn't update
49
- 'react/jsx-fragments': off,
50
-
51
- // Not needed
52
- 'no-plusplus': off,
53
- 'no-unused-expressions': [
54
- error,
55
- {
56
- allowShortCircuit: true,
57
- allowTernary: true,
58
- },
59
- ],
60
- 'react/jsx-no-target-blank': error,
61
- },
62
- };
1
+ const [off, , error] = ['off', 'warn', 'error'];
2
+
3
+ module.exports = {
4
+ env: {
5
+ browser: true,
6
+ es2021: true,
7
+ },
8
+ extends: [
9
+ 'plugin:react/recommended',
10
+ 'plugin:react-hooks/recommended',
11
+ 'airbnb',
12
+ 'prettier',
13
+ ],
14
+ parserOptions: {
15
+ ecmaFeatures: {
16
+ jsx: true,
17
+ },
18
+ ecmaVersion: 12,
19
+ sourceType: 'module',
20
+ },
21
+ plugins: [
22
+ 'react',
23
+ 'css-modules',
24
+ '@zohodesk/zsecurity',
25
+ '@zohodesk/react-performance',
26
+ ],
27
+ rules: {
28
+ // Internal Rules
29
+ '@zohodesk/react-performance/no-ref-mapstatetoprops': error,
30
+ '@zohodesk/zsecurity/no-unsecure-html': error,
31
+ '@zohodesk/zsecurity/no-protocol-check': error,
32
+
33
+ // CSS Module Rules
34
+ 'css-modules/no-unused-class': [error, { camelCase: true }],
35
+ 'css-modules/no-undef-class': [error, { camelCase: 'only' }],
36
+
37
+ 'import/no-unresolved': off,
38
+ 'import/no-extraneous-dependencies': off,
39
+
40
+ // As redux used
41
+ 'no-shadow': off, // As we import the action files and use the same name in getting from props built from connect.
42
+ 'react/jsx-filename-extension': off,
43
+
44
+ // As we don't follow
45
+ 'react/require-default-props': off,
46
+ 'react/jsx-props-no-spreading': off,
47
+
48
+ // As we didn't update
49
+ 'react/jsx-fragments': off,
50
+
51
+ // Not needed
52
+ 'no-plusplus': off,
53
+ 'no-unused-expressions': [
54
+ error,
55
+ {
56
+ allowShortCircuit: true,
57
+ allowTernary: true,
58
+ },
59
+ ],
60
+ 'react/jsx-no-target-blank': error,
61
+ },
62
+ };
@@ -1,3 +1,3 @@
1
- module.exports = {
2
- trailingComma: 'none',
3
- };
1
+ module.exports = {
2
+ trailingComma: 'none',
3
+ };
@@ -3,12 +3,6 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "splitChunks", {
7
- enumerable: true,
8
- get: function () {
9
- return _splitChunks.default;
10
- }
11
- });
12
6
  Object.defineProperty(exports, "getEntries", {
13
7
  enumerable: true,
14
8
  get: function () {
@@ -21,6 +15,12 @@ Object.defineProperty(exports, "getPublicPathConfig", {
21
15
  return _getPublicPathConfig.default;
22
16
  }
23
17
  });
18
+ Object.defineProperty(exports, "splitChunks", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _splitChunks.default;
22
+ }
23
+ });
24
24
  Object.defineProperty(exports, "templateParameters", {
25
25
  enumerable: true,
26
26
  get: function () {
@@ -67,10 +67,10 @@ module.exports = {
67
67
  }],
68
68
  include: _path.default.join(appPath, 'src')
69
69
  }
70
- /*,
71
- {
72
- test: /\.css$/,
73
- use: [MiniCssExtractPlugin.loader, 'css-loader']
70
+ /*,
71
+ {
72
+ test: /\.css$/,
73
+ use: [MiniCssExtractPlugin.loader, 'css-loader']
74
74
  }*/
75
75
  , {
76
76
  test: /(\.module)?\.css$/,
@@ -67,7 +67,7 @@ if (isDevelopment) {
67
67
  }
68
68
 
69
69
  let shouldRemovePropTypes = !isDevelopment && removePropTypes;
70
- const WebpackConfig = {
70
+ module.exports = smp.wrap({
71
71
  entry: (0, _common.getEntries)(options, 'production'),
72
72
  devtool: isDevelopment ? 'cheap-module-source-map' : enableSMap ? 'hidden-source-map' : 'none',
73
73
  mode: 'production',
@@ -84,7 +84,7 @@ const WebpackConfig = {
84
84
  stats: {
85
85
  children: false,
86
86
  colors: true,
87
- // excludeAssets: /i18n/,
87
+ excludeAssets: /i18n|\.map$/,
88
88
  warningsFilter: /\[mini-css-extract-plugin\]/
89
89
  },
90
90
  plugins: (0, _pluginUtils.getProdPlugins)(options, output.publicPath),
@@ -220,5 +220,4 @@ const WebpackConfig = {
220
220
  resolveLoader: {
221
221
  modules: [_path.default.resolve(__dirname, '..', '..', 'node_modules'), 'node_modules']
222
222
  }
223
- };
224
- module.exports = smp.wrap(WebpackConfig);
223
+ });
@@ -3,16 +3,16 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "getDevJsLoaders", {
6
+ Object.defineProperty(exports, "getCSSLoaders", {
7
7
  enumerable: true,
8
8
  get: function () {
9
- return _getDevJsLoaders.default;
9
+ return _getCSSLoaders.default;
10
10
  }
11
11
  });
12
- Object.defineProperty(exports, "getCSSLoaders", {
12
+ Object.defineProperty(exports, "getDevJsLoaders", {
13
13
  enumerable: true,
14
14
  get: function () {
15
- return _getCSSLoaders.default;
15
+ return _getDevJsLoaders.default;
16
16
  }
17
17
  });
18
18
 
@@ -6,9 +6,9 @@ var _escodegen = _interopRequireDefault(require("escodegen"));
6
6
 
7
7
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
8
 
9
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
9
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
10
10
 
11
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
11
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
12
12
 
13
13
  let start = {
14
14
  type: 'ExpressionStatement',
@@ -16,7 +16,7 @@ var _SingleEntryPlugin = _interopRequireDefault(require("webpack/lib/SingleEntry
16
16
 
17
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
18
 
19
- /* import WebWorkerTemplatePlugin from 'webpack/lib/webworker/WebWorkerTemplatePlugin';
19
+ /* import WebWorkerTemplatePlugin from 'webpack/lib/webworker/WebWorkerTemplatePlugin';
20
20
  import ExternalsPlugin from 'webpack/lib/ExternalsPlugin'; */
21
21
  const schema = {
22
22
  'type': 'object',
@@ -80,14 +80,14 @@ function pitch(request) {
80
80
  globalObject: 'self'
81
81
  };
82
82
  workerContext.compiler = this._compilation.createChildCompiler(`worker-loader ${request}`, workerContext.options);
83
- /*
84
- new WebWorkerTemplatePlugin().apply(workerContext.compiler);
85
-
86
- if (compilerOptions.externals) {
87
- new ExternalsPlugin(
88
- getExternalsType(compilerOptions),
89
- compilerOptions.externals
90
- ).apply(workerContext.compiler);
83
+ /*
84
+ new WebWorkerTemplatePlugin().apply(workerContext.compiler);
85
+
86
+ if (compilerOptions.externals) {
87
+ new ExternalsPlugin(
88
+ getExternalsType(compilerOptions),
89
+ compilerOptions.externals
90
+ ).apply(workerContext.compiler);
91
91
  } */
92
92
 
93
93
  new _SingleEntryPlugin.default(this.context, `!!${request}`, _path.default.parse(this.resourcePath).name).apply(workerContext.compiler);
@@ -102,11 +102,11 @@ let getDevPlugins = (options, publicPath) => {
102
102
  }
103
103
 
104
104
  const i18nManifestFileName = 'i18n-manifest.json';
105
- /**
106
- * NOTE:
107
- * this file name ext .i18n.js added
108
- * Because, in service worker they maintain cache as file name based
109
- * So, to make differce we added .i18n.js ext.
105
+ /**
106
+ * NOTE:
107
+ * this file name ext .i18n.js added
108
+ * Because, in service worker they maintain cache as file name based
109
+ * So, to make differce we added .i18n.js ext.
110
110
  */
111
111
 
112
112
  const i18nFileNameTemplate = 'i18n-chunk/[locale]/[name].i18n.js';
@@ -11,8 +11,6 @@ var _fs = _interopRequireDefault(require("fs"));
11
11
 
12
12
  var _webpack = _interopRequireDefault(require("webpack"));
13
13
 
14
- var _caseSensitivePathsWebpackPlugin = _interopRequireDefault(require("case-sensitive-paths-webpack-plugin"));
15
-
16
14
  var _webpackBundleAnalyzer = require("webpack-bundle-analyzer");
17
15
 
18
16
  var _lodashWebpackPlugin = _interopRequireDefault(require("lodash-webpack-plugin"));
@@ -35,6 +33,7 @@ var _RtlCssPlugin = require("../plugins/RtlSplitPlugin/RtlCssPlugin");
35
33
 
36
34
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
35
 
36
+ // import CaseSensitivePathsPlugin from 'case-sensitive-paths-webpack-plugin';
38
37
  // eslint-disable-next-line no-unused-vars
39
38
  let getProdPlugins = (options, publicPath = '') => {
40
39
  let {
@@ -80,7 +79,8 @@ let getProdPlugins = (options, publicPath = '') => {
80
79
  const cssRTLFileNameTempalte = `css/[name]${hashTempalate}.rtl.css`;
81
80
  let isDevelopment = mode === 'prod' || mode === 'dev' || mode === 'dev-no-warn';
82
81
  enableChunkHash = !isDevelopment && enableChunkHash;
83
- let plugins = [new _caseSensitivePathsWebpackPlugin.default(), new _webpack.default.IgnorePlugin(/^\.\/locale$/, /moment$/), new _webpack.default.DefinePlugin({
82
+ let plugins = [// new CaseSensitivePathsPlugin(),
83
+ new _webpack.default.IgnorePlugin(/^\.\/locale$/, /moment$/), new _webpack.default.DefinePlugin({
84
84
  __TEST__: false,
85
85
  __DEVELOPMENT__: false,
86
86
  __LOCAL_PRODUCTION__: isDevelopment,
@@ -107,11 +107,11 @@ let getProdPlugins = (options, publicPath = '') => {
107
107
  }
108
108
 
109
109
  const i18nManifestFileName = 'i18n-manifest.json';
110
- /**
111
- * NOTE:
112
- * this file name ext .i18n.js added
113
- * Because, in service worker they maintain cache as file name based
114
- * So, to make differce we added .i18n.js ext.
110
+ /**
111
+ * NOTE:
112
+ * this file name ext .i18n.js added
113
+ * Because, in service worker they maintain cache as file name based
114
+ * So, to make differce we added .i18n.js ext.
115
115
  */
116
116
 
117
117
  const i18nFileNameTemplate = 'i18n-chunk/[locale]/[name].[chunkhash].i18n.js';
@@ -9,34 +9,28 @@ Object.defineProperty(exports, "getDevPlugins", {
9
9
  return _getDevPlugins.default;
10
10
  }
11
11
  });
12
- Object.defineProperty(exports, "getProdPlugins", {
13
- enumerable: true,
14
- get: function () {
15
- return _getProdPlugins.default;
16
- }
17
- });
18
12
  Object.defineProperty(exports, "getDocsPlugins", {
19
13
  enumerable: true,
20
14
  get: function () {
21
15
  return _getDocsPlugins.default;
22
16
  }
23
17
  });
24
- Object.defineProperty(exports, "getServerPlugins", {
18
+ Object.defineProperty(exports, "getLibraryPlugins", {
25
19
  enumerable: true,
26
20
  get: function () {
27
- return _getServerPlugins.default;
21
+ return _getLibraryPlugins.default;
28
22
  }
29
23
  });
30
- Object.defineProperty(exports, "getLibraryPlugins", {
24
+ Object.defineProperty(exports, "getProdPlugins", {
31
25
  enumerable: true,
32
26
  get: function () {
33
- return _getLibraryPlugins.default;
27
+ return _getProdPlugins.default;
34
28
  }
35
29
  });
36
- Object.defineProperty(exports, "getUMDComponentPlugins", {
30
+ Object.defineProperty(exports, "getServerPlugins", {
37
31
  enumerable: true,
38
32
  get: function () {
39
- return _getUMDComponentPlugins.default;
33
+ return _getServerPlugins.default;
40
34
  }
41
35
  });
42
36
  Object.defineProperty(exports, "getUMDCSSPlugins", {
@@ -45,6 +39,12 @@ Object.defineProperty(exports, "getUMDCSSPlugins", {
45
39
  return _getUMDCSSPlugins.default;
46
40
  }
47
41
  });
42
+ Object.defineProperty(exports, "getUMDComponentPlugins", {
43
+ enumerable: true,
44
+ get: function () {
45
+ return _getUMDComponentPlugins.default;
46
+ }
47
+ });
48
48
 
49
49
  var _getDevPlugins = _interopRequireDefault(require("./getDevPlugins"));
50
50
 
@@ -1,6 +1,6 @@
1
- # EFC Plugin
2
-
3
- In EFC plugin we are create sdk file for efc related purpose
4
-
5
-
6
- # document will be soon
1
+ # EFC Plugin
2
+
3
+ In EFC plugin we are create sdk file for efc related purpose
4
+
5
+
6
+ # document will be soon
@@ -116,10 +116,10 @@ class I18NInjectIntoIndexPlugin {
116
116
  i18nObj = i18nFiles.reduce((res, next) => {
117
117
  let fileName = next.replace(`i18n${_path.default.sep}`, '');
118
118
  let splittedFileName = fileName.split('.');
119
- /* if (this.isDevelopment) {
120
- res[splittedFileName[0]] = `${this.publicPath}/i18n/${fileName}`;
121
- } else {
122
- res[splittedFileName[0]] = fileName;
119
+ /* if (this.isDevelopment) {
120
+ res[splittedFileName[0]] = `${this.publicPath}/i18n/${fileName}`;
121
+ } else {
122
+ res[splittedFileName[0]] = fileName;
123
123
  } */
124
124
 
125
125
  res[splittedFileName[0]] = `${this.publicPath}/i18n/${fileName}`;
@@ -13,23 +13,23 @@ var _hashUtils = require("./utils/hashUtils");
13
13
 
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
15
 
16
- /**
17
- * this plugin for the download i18n files
18
- * So, if need to downoad i18n in browser this plugin handle that
19
- *
20
- *
21
- * this plugin works
22
- * how it works?
23
- * this plugin hook the requireEnsure method and we write logic for current compiled file download logic
24
- *
25
- * hinds:-
26
- * requireEnsure method was loader for all js chunk's ,
27
- * which means if we use dynamic import then this function will create script tag for that dynamic resource
28
- * so every dynamic js chunk will load by this function,
29
- * So we update this function with when dynamic jschunk call the nour code also execute
30
- *
31
- * some thing missing in this definetion
32
- *
16
+ /**
17
+ * this plugin for the download i18n files
18
+ * So, if need to downoad i18n in browser this plugin handle that
19
+ *
20
+ *
21
+ * this plugin works
22
+ * how it works?
23
+ * this plugin hook the requireEnsure method and we write logic for current compiled file download logic
24
+ *
25
+ * hinds:-
26
+ * requireEnsure method was loader for all js chunk's ,
27
+ * which means if we use dynamic import then this function will create script tag for that dynamic resource
28
+ * so every dynamic js chunk will load by this function,
29
+ * So we update this function with when dynamic jschunk call the nour code also execute
30
+ *
31
+ * some thing missing in this definetion
32
+ *
33
33
  */
34
34
  // import { REGEXP_HASH, REGEXP_CHUNKHASH } from './utils/hashUtils';
35
35
  const pluginName = 'DownloadLogicOfI18n'; // const pluginName = 'i18n-plugin';
@@ -126,20 +126,20 @@ class I18nDownlodLogic {
126
126
  return _webpack.Template.asString([source, '', '// object to store loaded I18N chunks', 'var installedI18nChunks = {', _webpack.Template.indent(mainChunk.ids.map(id => `${JSON.stringify(id)}: 0`).join(',\n')), '};']);
127
127
  });
128
128
  mainTemplate.hooks.requireEnsure.tap(pluginName, (source, mainChunk, hash) => {
129
- /**
130
- * for Information this is tapped in mainTemplate ,
131
- * So this hooks argument chunk is main chunk means entry chunk mostly.
132
- * if any chunk has i18n then we must write our download i18n logic,
129
+ /**
130
+ * for Information this is tapped in mainTemplate ,
131
+ * So this hooks argument chunk is main chunk means entry chunk mostly.
132
+ * if any chunk has i18n then we must write our download i18n logic,
133
133
  */
134
134
  const chunkMap = this.getI18nChunkObject(mainChunk);
135
135
 
136
136
  if (!Object.keys(chunkMap).length) {
137
137
  return source;
138
138
  }
139
- /**
140
- * chunkMaps has
141
- * @property {Object} hash [it has key as chunk id and value as chunkHash ]
142
- * @property {Object} name [it has key as chunk id and value as chunk name ]
139
+ /**
140
+ * chunkMaps has
141
+ * @property {Object} hash [it has key as chunk id and value as chunkHash ]
142
+ * @property {Object} name [it has key as chunk id and value as chunk name ]
143
143
  */
144
144
 
145
145
 
@@ -176,22 +176,22 @@ class I18nDownlodLogic {
176
176
  },
177
177
  contentHashType: MODULE_TYPE
178
178
  });
179
- /** IDEA:
180
- * as my suggestion ignore this `jsop` approch,
181
- * Because json parse is faster then js parse.
182
- * my suggestion is make ajax or fetch request
179
+ /** IDEA:
180
+ * as my suggestion ignore this `jsop` approch,
181
+ * Because json parse is faster then js parse.
182
+ * my suggestion is make ajax or fetch request
183
183
  */
184
184
 
185
185
  const buf = [];
186
- /*
187
- if (REGEXP_HASH.test(filenameTemplate)) {
188
- buf.push(
189
- `var hash = ${mainTemplate.renderCurrentHashCode(hash)};`
190
- );
191
- }
192
- if (REGEXP_CHUNKHASH.test(filenameTemplate)) {
193
- buf.push(`var chunkHashes = ${JSON.stringify(chunkMaps.hash)};`);
194
- }
186
+ /*
187
+ if (REGEXP_HASH.test(filenameTemplate)) {
188
+ buf.push(
189
+ `var hash = ${mainTemplate.renderCurrentHashCode(hash)};`
190
+ );
191
+ }
192
+ if (REGEXP_CHUNKHASH.test(filenameTemplate)) {
193
+ buf.push(`var chunkHashes = ${JSON.stringify(chunkMaps.hash)};`);
194
+ }
195
195
  */
196
196
 
197
197
  if ((0, _hashUtils.hasContentHash)(filenameTemplate)) {