create-berna-stencil 2.0.15 → 2.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 (193) hide show
  1. package/.eleventy.js +5 -27
  2. package/README.md +1 -1
  3. package/_tools/buildJs.js +28 -0
  4. package/_tools/cleanOutput.js +9 -13
  5. package/_tools/modules/updateOutputPath.js +36 -14
  6. package/_tools/modules/updatePage.js +31 -11
  7. package/_tools/res/templates/template.js +3 -11
  8. package/_tools/res/templates/template.ts +13 -0
  9. package/bin/create.js +161 -111
  10. package/docs/Assistant CLI.md +2 -0
  11. package/docs/Creating pages.md +2 -0
  12. package/docs/Javascript.md +30 -37
  13. package/package.json +64 -63
  14. package/src/backend/_core/index.php +10 -1
  15. package/src/backend/_core/init.php +4 -3
  16. package/src/backend/_core/modules/RateLimiter.php +31 -0
  17. package/src/backend/_core/vendor/composer/autoload_static.php +10 -10
  18. package/src/backend/_core/vendor/composer/installed.json +6 -6
  19. package/src/backend/_core/vendor/composer/installed.php +2 -2
  20. package/src/backend/_core/vendor/graham-campbell/result-type/.gitattributes +9 -0
  21. package/src/backend/_core/vendor/graham-campbell/result-type/.github/CODE_OF_CONDUCT.md +132 -0
  22. package/src/backend/_core/vendor/graham-campbell/result-type/.github/CONTRIBUTING.md +31 -0
  23. package/src/backend/_core/vendor/graham-campbell/result-type/.github/FUNDING.yml +2 -0
  24. package/src/backend/_core/vendor/graham-campbell/result-type/.github/SECURITY.md +14 -0
  25. package/src/backend/_core/vendor/graham-campbell/result-type/.github/workflows/stale.yml +11 -0
  26. package/src/backend/_core/vendor/graham-campbell/result-type/.github/workflows/tests.yml +40 -0
  27. package/src/backend/_core/vendor/graham-campbell/result-type/CHANGELOG.md +53 -0
  28. package/src/backend/_core/vendor/graham-campbell/result-type/LICENSE +21 -21
  29. package/src/backend/_core/vendor/graham-campbell/result-type/README.md +42 -0
  30. package/src/backend/_core/vendor/graham-campbell/result-type/composer.json +33 -33
  31. package/src/backend/_core/vendor/graham-campbell/result-type/phpunit.xml.dist +13 -0
  32. package/src/backend/_core/vendor/graham-campbell/result-type/src/Error.php +121 -121
  33. package/src/backend/_core/vendor/graham-campbell/result-type/src/Result.php +69 -69
  34. package/src/backend/_core/vendor/graham-campbell/result-type/src/Success.php +120 -120
  35. package/src/backend/_core/vendor/graham-campbell/result-type/tests/ResultTest.php +95 -0
  36. package/src/backend/_core/vendor/phpoption/phpoption/.gitattributes +13 -0
  37. package/src/backend/_core/vendor/phpoption/phpoption/.github/CODE_OF_CONDUCT.md +132 -0
  38. package/src/backend/_core/vendor/phpoption/phpoption/.github/CONTRIBUTING.md +30 -0
  39. package/src/backend/_core/vendor/phpoption/phpoption/.github/FUNDING.yml +2 -0
  40. package/src/backend/_core/vendor/phpoption/phpoption/.github/SECURITY.md +14 -0
  41. package/src/backend/_core/vendor/phpoption/phpoption/.github/workflows/static.yml +40 -0
  42. package/src/backend/_core/vendor/phpoption/phpoption/.github/workflows/tests.yml +40 -0
  43. package/src/backend/_core/vendor/phpoption/phpoption/LICENSE +200 -200
  44. package/src/backend/_core/vendor/phpoption/phpoption/Makefile +17 -0
  45. package/src/backend/_core/vendor/phpoption/phpoption/README.md +201 -0
  46. package/src/backend/_core/vendor/phpoption/phpoption/composer.json +50 -50
  47. package/src/backend/_core/vendor/phpoption/phpoption/phpstan-baseline.neon +44 -0
  48. package/src/backend/_core/vendor/phpoption/phpoption/phpstan.neon.dist +7 -0
  49. package/src/backend/_core/vendor/phpoption/phpoption/phpunit.xml.dist +13 -0
  50. package/src/backend/_core/vendor/phpoption/phpoption/src/PhpOption/LazyOption.php +175 -175
  51. package/src/backend/_core/vendor/phpoption/phpoption/src/PhpOption/None.php +136 -136
  52. package/src/backend/_core/vendor/phpoption/phpoption/src/PhpOption/Option.php +434 -434
  53. package/src/backend/_core/vendor/phpoption/phpoption/src/PhpOption/Some.php +169 -169
  54. package/src/backend/_core/vendor/phpoption/phpoption/tests/PhpOption/Tests/EnsureTest.php +72 -0
  55. package/src/backend/_core/vendor/phpoption/phpoption/tests/PhpOption/Tests/LazyOptionTest.php +357 -0
  56. package/src/backend/_core/vendor/phpoption/phpoption/tests/PhpOption/Tests/NoneTest.php +153 -0
  57. package/src/backend/_core/vendor/phpoption/phpoption/tests/PhpOption/Tests/OptionTest.php +166 -0
  58. package/src/backend/_core/vendor/phpoption/phpoption/tests/PhpOption/Tests/SomeTest.php +194 -0
  59. package/src/backend/_core/vendor/phpoption/phpoption/tests/bootstrap.php +8 -0
  60. package/src/backend/_core/vendor/phpoption/phpoption/vendor-bin/phpstan/composer.json +8 -0
  61. package/src/backend/_core/vendor/symfony/polyfill-ctype/Ctype.php +232 -232
  62. package/src/backend/_core/vendor/symfony/polyfill-ctype/LICENSE +19 -19
  63. package/src/backend/_core/vendor/symfony/polyfill-ctype/README.md +12 -12
  64. package/src/backend/_core/vendor/symfony/polyfill-ctype/bootstrap.php +50 -50
  65. package/src/backend/_core/vendor/symfony/polyfill-ctype/bootstrap80.php +46 -46
  66. package/src/backend/_core/vendor/symfony/polyfill-ctype/composer.json +38 -38
  67. package/src/backend/_core/vendor/symfony/polyfill-mbstring/LICENSE +19 -19
  68. package/src/backend/_core/vendor/symfony/polyfill-mbstring/Mbstring.php +1077 -1077
  69. package/src/backend/_core/vendor/symfony/polyfill-mbstring/README.md +13 -13
  70. package/src/backend/_core/vendor/symfony/polyfill-mbstring/Resources/unidata/caseFolding.php +119 -119
  71. package/src/backend/_core/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php +1397 -1397
  72. package/src/backend/_core/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php +5 -5
  73. package/src/backend/_core/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php +1489 -1489
  74. package/src/backend/_core/vendor/symfony/polyfill-mbstring/bootstrap.php +171 -171
  75. package/src/backend/_core/vendor/symfony/polyfill-mbstring/bootstrap80.php +167 -167
  76. package/src/backend/_core/vendor/symfony/polyfill-mbstring/composer.json +39 -39
  77. package/src/backend/_core/vendor/symfony/polyfill-php80/LICENSE +19 -19
  78. package/src/backend/_core/vendor/symfony/polyfill-php80/Php80.php +115 -115
  79. package/src/backend/_core/vendor/symfony/polyfill-php80/PhpToken.php +106 -106
  80. package/src/backend/_core/vendor/symfony/polyfill-php80/README.md +25 -25
  81. package/src/backend/_core/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php +31 -31
  82. package/src/backend/_core/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php +16 -16
  83. package/src/backend/_core/vendor/symfony/polyfill-php80/Resources/stubs/Stringable.php +20 -20
  84. package/src/backend/_core/vendor/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php +16 -16
  85. package/src/backend/_core/vendor/symfony/polyfill-php80/Resources/stubs/ValueError.php +16 -16
  86. package/src/backend/_core/vendor/symfony/polyfill-php80/bootstrap.php +42 -42
  87. package/src/backend/_core/vendor/symfony/polyfill-php80/composer.json +37 -37
  88. package/src/backend/_core/vendor/vlucas/phpdotenv/.editorconfig +15 -0
  89. package/src/backend/_core/vendor/vlucas/phpdotenv/.gitattributes +15 -0
  90. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/CODE_OF_CONDUCT.md +132 -0
  91. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/CONTRIBUTING.md +30 -0
  92. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/FUNDING.yml +2 -0
  93. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/SECURITY.md +14 -0
  94. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/workflows/static.yml +40 -0
  95. package/src/backend/_core/vendor/vlucas/phpdotenv/.github/workflows/tests.yml +70 -0
  96. package/src/backend/_core/vendor/vlucas/phpdotenv/LICENSE +30 -30
  97. package/src/backend/_core/vendor/vlucas/phpdotenv/Makefile +17 -0
  98. package/src/backend/_core/vendor/vlucas/phpdotenv/README.md +370 -0
  99. package/src/backend/_core/vendor/vlucas/phpdotenv/UPGRADING.md +196 -0
  100. package/src/backend/_core/vendor/vlucas/phpdotenv/composer.json +60 -60
  101. package/src/backend/_core/vendor/vlucas/phpdotenv/phpstan-baseline.neon +157 -0
  102. package/src/backend/_core/vendor/vlucas/phpdotenv/phpstan.neon.dist +7 -0
  103. package/src/backend/_core/vendor/vlucas/phpdotenv/phpunit.xml.dist +13 -0
  104. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Dotenv.php +267 -267
  105. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Exception/ExceptionInterface.php +12 -12
  106. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Exception/InvalidEncodingException.php +12 -12
  107. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Exception/InvalidFileException.php +12 -12
  108. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Exception/InvalidPathException.php +12 -12
  109. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Exception/ValidationException.php +12 -12
  110. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Loader/Loader.php +48 -48
  111. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Loader/LoaderInterface.php +20 -20
  112. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Loader/Resolver.php +65 -65
  113. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/Entry.php +59 -59
  114. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/EntryParser.php +299 -299
  115. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/Lexer.php +58 -58
  116. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/Lines.php +127 -127
  117. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/Parser.php +53 -53
  118. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/ParserInterface.php +19 -19
  119. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Parser/Value.php +88 -88
  120. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/AdapterInterface.php +15 -15
  121. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ApacheAdapter.php +89 -89
  122. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ArrayAdapter.php +80 -80
  123. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/EnvConstAdapter.php +88 -88
  124. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/GuardedWriter.php +85 -85
  125. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ImmutableWriter.php +110 -110
  126. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiReader.php +48 -48
  127. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/MultiWriter.php +64 -64
  128. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/PutenvAdapter.php +91 -91
  129. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReaderInterface.php +17 -17
  130. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ReplacingWriter.php +104 -104
  131. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/ServerConstAdapter.php +88 -88
  132. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/Adapter/WriterInterface.php +27 -27
  133. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/AdapterRepository.php +107 -107
  134. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/RepositoryBuilder.php +272 -272
  135. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Repository/RepositoryInterface.php +51 -51
  136. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/File/Paths.php +44 -44
  137. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/File/Reader.php +81 -81
  138. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/FileStore.php +72 -72
  139. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/StoreBuilder.php +141 -141
  140. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/StoreInterface.php +17 -17
  141. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Store/StringStore.php +37 -37
  142. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Util/Regex.php +112 -112
  143. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Util/Str.php +108 -108
  144. package/src/backend/_core/vendor/vlucas/phpdotenv/src/Validator.php +207 -207
  145. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/DotenvTest.php +387 -0
  146. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Loader/LoaderTest.php +86 -0
  147. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/EntryParserTest.php +234 -0
  148. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/LexerTest.php +40 -0
  149. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/LinesTest.php +53 -0
  150. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Parser/ParserTest.php +98 -0
  151. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/ArrayAdapterTest.php +57 -0
  152. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/EnvConstAdapterTest.php +75 -0
  153. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/PutenvAdapterTest.php +52 -0
  154. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/Adapter/ServerConstAdapterTest.php +75 -0
  155. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Repository/RepositoryTest.php +305 -0
  156. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/Store/StoreTest.php +141 -0
  157. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/Dotenv/ValidatorTest.php +479 -0
  158. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/.env +5 -0
  159. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/assertions.env +18 -0
  160. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/booleans.env +33 -0
  161. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/commented.env +15 -0
  162. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/empty.env +1 -0
  163. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/example.env +1 -0
  164. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/exported.env +7 -0
  165. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/immutable.env +1 -0
  166. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/integers.env +17 -0
  167. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/large.env +2 -0
  168. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/multibyte.env +3 -0
  169. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/multiline.env +14 -0
  170. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/multiple.env +4 -0
  171. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/mutable.env +1 -0
  172. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/nested.env +15 -0
  173. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/quoted.env +11 -0
  174. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/specialchars.env +8 -0
  175. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/unicodevarnames.env +2 -0
  176. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/utf8-with-bom-encoding.env +3 -0
  177. package/src/backend/_core/vendor/vlucas/phpdotenv/tests/fixtures/env/windows.env +1 -0
  178. package/src/backend/_core/vendor/vlucas/phpdotenv/vendor-bin/phpstan/composer.json +15 -0
  179. package/src/backend/api/protected/example-protected.php +1 -1
  180. package/src/backend/api/public/example-public.php +1 -1
  181. package/src/backend/config.php +19 -0
  182. package/src/backend/web.config +2 -5
  183. package/src/frontend/.htaccess +4 -1
  184. package/src/frontend/js/modules/exampleModule.js +7 -0
  185. package/src/frontend/js/pages/404.js +3 -11
  186. package/src/frontend/js/pages/homepage.js +3 -11
  187. package/src/frontend/ts/modules/exampleModule.ts +3 -0
  188. package/src/frontend/ts/pages/404.ts +13 -0
  189. package/src/frontend/ts/pages/homepage.ts +13 -0
  190. package/src/frontend/web.config +21 -30
  191. package/src/frontend/js/modules/forms/normalizePhoneNumber.js +0 -42
  192. package/src/frontend/js/modules/forms/textAreaAutoExpand.js +0 -38
  193. package/src/frontend/js/modules/notification.js +0 -39
@@ -0,0 +1,2 @@
1
+ AlbertÅberg=Skybert
2
+ ДатаЗакрытияРасчетногоПериода='2022-04-01T00:00'
@@ -0,0 +1,3 @@
1
+ FOO=bar
2
+ BAR=baz
3
+ SPACED="with spaces"
@@ -0,0 +1,15 @@
1
+ {
2
+ "require": {
3
+ "php": "^8.5",
4
+ "phpstan/phpstan": "2.1.33",
5
+ "phpstan/extension-installer": "1.4.3",
6
+ "phpstan/phpstan-deprecation-rules": "2.0.3",
7
+ "phpstan/phpstan-strict-rules": "2.0.7"
8
+ },
9
+ "config": {
10
+ "preferred-install": "dist",
11
+ "allow-plugins": {
12
+ "phpstan/extension-installer": true
13
+ }
14
+ }
15
+ }
@@ -8,7 +8,7 @@ if ($method !== 'GET') {
8
8
  }
9
9
 
10
10
  //
11
- // Your protected endpoint logic here. You can access route parameters in $requestParams array
11
+ // Your endpoint logic here. You can access route parameters in $requestParams array
12
12
  //
13
13
 
14
14
  Response::success([
@@ -8,7 +8,7 @@ if ($method !== 'GET') {
8
8
  }
9
9
 
10
10
  //
11
- // Your protected endpoint logic here. You can access route parameters in $requestParams array
11
+ // Your endpoint logic here. You can access route parameters in $requestParams array
12
12
  //
13
13
 
14
14
  Response::success([
@@ -0,0 +1,19 @@
1
+ <?php
2
+ declare(strict_types=1);
3
+
4
+ return [
5
+ // Default key for protected endpoints that don't have a specific key in ENDPOINT_KEYS
6
+ 'API_KEY' => 'DEFAULT_KEY',
7
+
8
+ // If you want restrict access to protected endpoints to specific clients, you can define custom keys for each endpoint
9
+ // For subfolder endpoints, use the relative path ('subfolder/endpoint')
10
+ 'ENDPOINT_KEYS' => [
11
+ 'subfolder/example-protected' => 'example-key',
12
+ ],
13
+
14
+ // Database configuration
15
+ 'DB_HOST' => '127.0.0.1',
16
+ 'DB_NAME' => 'example_db',
17
+ 'DB_USER' => 'root',
18
+ 'DB_PASS' => '',
19
+ ];
@@ -3,17 +3,14 @@
3
3
  <system.webServer>
4
4
  <rewrite>
5
5
  <rules>
6
-
7
- <rule name="Allow API index.php" stopProcessing="true">
6
+ <rule name="PassThroughCoreIndex" stopProcessing="true">
8
7
  <match url="^_core/index\.php$" ignoreCase="true" />
9
8
  <action type="None" />
10
9
  </rule>
11
-
12
- <rule name="API Endpoints Front Controller Catch-All" stopProcessing="true">
10
+ <rule name="RewriteToFrontController" stopProcessing="true">
13
11
  <match url="^(.*)$" ignoreCase="true" />
14
12
  <action type="Rewrite" url="_core/index.php" appendQueryString="true" />
15
13
  </rule>
16
-
17
14
  </rules>
18
15
  </rewrite>
19
16
  </system.webServer>
@@ -1,13 +1,16 @@
1
+ Options -Indexes
1
2
  ErrorDocument 404 /404.html
3
+ ErrorDocument 403 /404.html
2
4
 
3
5
  <IfModule mod_rewrite.c>
4
6
  RewriteEngine On
5
7
  RewriteBase /
6
8
 
9
+ RewriteRule ^(web\.config|llms\.txt|robots\.txt|sitemap\.xml|\..*)$ /404.html [L,NC]
10
+
7
11
  RewriteRule ^api/(.*)$ backend/_core/index.php [QSA,L]
8
12
 
9
13
  RewriteCond %{REQUEST_FILENAME} -f [OR]
10
14
  RewriteCond %{REQUEST_FILENAME} -d
11
15
  RewriteRule ^ - [L]
12
-
13
16
  </IfModule>
@@ -0,0 +1,7 @@
1
+ //==========================
2
+ // EXAMPLE MODULE
3
+ //==========================
4
+
5
+ export function initExampleModule() {
6
+ // Example module logic
7
+ }
@@ -2,20 +2,12 @@
2
2
  // JAVASCRIPT MODULES IMPORTS
3
3
  //===========================
4
4
 
5
- // Call anywhere
6
- import { showNotification } from '../modules/notification.js';
7
-
8
- // Uncomment of pre-existing modules
9
- // import { initTextAreaAutoExpand } from '../modules/forms/textAreaAutoExpand.js';
10
- // import { initNormalizePhoneNumber } from '../modules/forms/normalizePhoneNumber.js';
5
+ // import { initExampleModule } from '../modules/exampleModule.js';
11
6
 
12
7
  //==========================
13
8
  // PAGE CUSTOM JAVASCRIPT
14
9
  //==========================
15
10
 
16
11
  document.addEventListener("DOMContentLoaded", () => {
17
- // initTextAreaAutoExpand();
18
- // initNormalizePhoneNumber();
19
- });
20
-
21
- showNotification("Example notification", "success", 3000);
12
+ // initExampleModule();
13
+ });
@@ -2,20 +2,12 @@
2
2
  // JAVASCRIPT MODULES IMPORTS
3
3
  //===========================
4
4
 
5
- // Call anywhere
6
- import { showNotification } from '../modules/notification.js';
7
-
8
- // Uncomment of pre-existing modules
9
- // import { initTextAreaAutoExpand } from '../modules/forms/textAreaAutoExpand.js';
10
- // import { initNormalizePhoneNumber } from '../modules/forms/normalizePhoneNumber.js';
5
+ // import { initExampleModule } from '../modules/exampleModule.js';
11
6
 
12
7
  //==========================
13
8
  // PAGE CUSTOM JAVASCRIPT
14
9
  //==========================
15
10
 
16
11
  document.addEventListener("DOMContentLoaded", () => {
17
- // initTextAreaAutoExpand();
18
- // initNormalizePhoneNumber();
19
- });
20
-
21
- showNotification("Example notification", "success", 3000);
12
+ // initExampleModule();
13
+ });
@@ -0,0 +1,3 @@
1
+ export function initExampleModule(): void {
2
+ // Example module logic
3
+ }
@@ -0,0 +1,13 @@
1
+ // ===========================
2
+ // TYPESCRIPT MODULES IMPORTS
3
+ // ===========================
4
+
5
+ // import { initExampleModule } from '../modules/exampleModule';
6
+
7
+ // ==========================
8
+ // PAGE CUSTOM TYPESCRIPT
9
+ // ==========================
10
+
11
+ document.addEventListener("DOMContentLoaded", (): void => {
12
+ // initExampleModule();
13
+ });
@@ -0,0 +1,13 @@
1
+ // ===========================
2
+ // TYPESCRIPT MODULES IMPORTS
3
+ // ===========================
4
+
5
+ // import { initExampleModule } from '../modules/exampleModule';
6
+
7
+ // ==========================
8
+ // PAGE CUSTOM TYPESCRIPT
9
+ // ==========================
10
+
11
+ document.addEventListener("DOMContentLoaded", (): void => {
12
+ // initExampleModule();
13
+ });
@@ -1,36 +1,27 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <configuration>
3
- <system.webServer>
4
-
5
- <defaultDocument>
6
- <files>
7
- <clear />
8
- <add value="index.html" />
9
- </files>
10
- </defaultDocument>
3
+ <system.webServer>
4
+ <directoryBrowse enabled="false" />
11
5
 
12
- <httpErrors errorMode="Custom" existingResponse="Auto">
13
- <remove statusCode="404" />
14
- <error statusCode="404" path="/404.html" responseMode="ExecuteURL" />
15
- </httpErrors>
6
+ <httpErrors errorMode="Custom" existingResponse="Replace">
7
+ <remove statusCode="403" />
8
+ <remove statusCode="404" />
9
+ <error statusCode="403" path="/404.html" responseMode="ExecuteURL" />
10
+ <error statusCode="404" path="/404.html" responseMode="ExecuteURL" />
11
+ </httpErrors>
16
12
 
17
- <rewrite>
18
- <rules>
19
- <rule name="Pass API to Backend" stopProcessing="true">
20
- <match url="^api/(.*)$" ignoreCase="true" />
21
- <action type="Rewrite" url="backend/{R:1}" />
22
- </rule>
23
- </rules>
24
- </rewrite>
13
+ <rewrite>
14
+ <rules>
15
+ <rule name="BlockFiles" stopProcessing="true">
16
+ <match url="^(web\.config|llms\.txt|robots\.txt|sitemap\.xml|\.htaccess|\..*)$" ignoreCase="true" />
17
+ <action type="Rewrite" url="/404.html" />
18
+ </rule>
25
19
 
26
- <staticContent>
27
- <remove fileExtension=".webp" />
28
- <mimeMap fileExtension=".webp" mimeType="image/webp" />
29
- </staticContent>
30
-
31
- </system.webServer>
32
-
33
- <system.web>
34
- <compilation tempDirectory="D:\AspNetTemp\site\webfixer.it" />
35
- </system.web>
20
+ <rule name="ApiRoute" stopProcessing="true">
21
+ <match url="^api/(.*)$" ignoreCase="true" />
22
+ <action type="Rewrite" url="backend/_core/index.php" appendQueryString="true" />
23
+ </rule>
24
+ </rules>
25
+ </rewrite>
26
+ </system.webServer>
36
27
  </configuration>
@@ -1,42 +0,0 @@
1
- //==========================
2
- // PHONE NUMBER NORMALIZATION MODULE
3
- //==========================
4
-
5
- // Normalizes and attaches normalization to all existing and future tel inputs
6
- // Must be called inside DOMContentLoaded in the page's JS file
7
- export function initNormalizePhoneNumber() {
8
-
9
- // Formats digits in groups of 3, 3 and 4 (e.g. 333 123 4567)
10
- function formatDigits(digits) {
11
- let formatted = "";
12
- if (digits.length > 0) formatted += digits.slice(0, 3);
13
- if (digits.length > 3) formatted += " " + digits.slice(3, 6);
14
- if (digits.length > 6) formatted += " " + digits.slice(6, 10);
15
- return formatted;
16
- }
17
-
18
- function normalize(input) {
19
- if (!input) return;
20
-
21
- let value = input.value.replace(/[^0-9+]/g, "");
22
-
23
- if (value.startsWith("+")) {
24
- value = "+" + value.slice(1).replace(/\+/g, "");
25
- const prefix = value.slice(0, 3);
26
- const digits = value.slice(3);
27
-
28
- value = prefix + (digits ? " " + formatDigits(digits) : "");
29
- } else {
30
- value = value.replace(/\+/g, "");
31
- value = formatDigits(value);
32
- }
33
-
34
- input.value = value;
35
- }
36
-
37
- document.querySelectorAll('input[type="tel"]').forEach(normalize);
38
-
39
- document.addEventListener("input", ({ target }) => {
40
- if (target.matches('input[type="tel"]')) normalize(target);
41
- });
42
- }
@@ -1,38 +0,0 @@
1
- //==========================
2
- // AUTO-EXPAND TEXTAREA MODULE
3
- //==========================
4
-
5
- export function initTextAreaAutoExpand() {
6
- const MAX_ROWS = 10;
7
-
8
- function setup(element) {
9
- if (element.dataset.autoExpand) return;
10
- element.dataset.autoExpand = "true";
11
- element.style.resize = "none";
12
- element.style.overflow = "hidden";
13
- element.dataset.minRows = element.rows || 1;
14
- element.addEventListener("input", () => expand(element));
15
- if (element.value) expand(element);
16
- }
17
-
18
- function expand(element) {
19
- element.rows = element.dataset.minRows;
20
- while (element.scrollHeight > element.clientHeight && element.rows < MAX_ROWS) {
21
- element.rows += 1;
22
- }
23
- }
24
-
25
- document.querySelectorAll("textarea").forEach(setup);
26
-
27
- const observer = new MutationObserver((mutations) => {
28
- for (const mutation of mutations) {
29
- for (const node of mutation.addedNodes) {
30
- if (node.nodeType !== 1) continue;
31
- if (node.matches("textarea")) setup(node);
32
- node.querySelectorAll?.("textarea").forEach(setup);
33
- }
34
- }
35
- });
36
-
37
- observer.observe(document.body, { childList: true, subtree: true });
38
- }
@@ -1,39 +0,0 @@
1
- //==========================
2
- // NOTIFICATION MODULE
3
- //==========================
4
-
5
- let currentNotification = null;
6
-
7
- export function showNotification(text, type = "info", duration = 5000) {
8
- if (currentNotification) {
9
- currentNotification.remove();
10
- currentNotification = null;
11
- }
12
-
13
- const notificationBox = document.createElement("div");
14
- notificationBox.classList.add("notificationBox", type);
15
-
16
- const notificationText = document.createElement("span");
17
- notificationText.textContent = text;
18
- notificationBox.appendChild(notificationText);
19
-
20
- if (duration === -1) {
21
- const spinner = document.createElement("div");
22
- spinner.classList.add("spinner");
23
- notificationBox.appendChild(spinner);
24
- }
25
-
26
- document.body.appendChild(notificationBox);
27
- currentNotification = notificationBox;
28
-
29
- if (duration !== -1) {
30
- setTimeout(() => {
31
- if (!notificationBox.parentElement) return;
32
- notificationBox.classList.add("fade-out");
33
- notificationBox.addEventListener("transitionend", () => {
34
- notificationBox.remove();
35
- if (currentNotification === notificationBox) currentNotification = null;
36
- }, { once: true });
37
- }, duration);
38
- }
39
- }