@decaf-ts/for-angular 0.1.1 → 0.1.4
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.
- package/.editorconfig +31 -0
- package/.gitlab-ci.yml +197 -0
- package/.hintrc +19 -0
- package/.prettierrc +49 -0
- package/.snyk +13 -0
- package/LICENSE.md +260 -0
- package/angular.json +274 -0
- package/bs-config.json +5 -0
- package/cli-module.js.map +1 -0
- package/dist/for-angular/cli/cli-module.d.ts +22 -0
- package/dist/for-angular/cli/cli-module.d.ts.map +1 -0
- package/dist/for-angular/cli/cli-module.js +131 -0
- package/dist/for-angular/cli/cli-module.js.map +1 -0
- package/dist/lib/README.md +117 -0
- package/{fesm2022 → dist/lib/fesm2022}/decaf-ts-for-angular.mjs +93 -109
- package/dist/lib/fesm2022/decaf-ts-for-angular.mjs.map +1 -0
- package/{index.d.ts → dist/lib/index.d.ts} +6 -5
- package/eslint.config.mjs +101 -0
- package/ionic.config.json +14 -0
- package/jest.config.ts +52 -0
- package/jest.setup.ts +50 -0
- package/karma.conf.js +50 -0
- package/ng-package.json +16 -0
- package/ngsw-config.json +30 -0
- package/package.json +86 -17
- package/playwright.config.ts +80 -0
- package/resources/favicon.png +0 -0
- package/resources/favicon.svg +29 -0
- package/resources/icon-background.png +0 -0
- package/resources/icon-foreground.png +0 -0
- package/resources/icon-only.png +0 -0
- package/resources/icon-only.svg +29 -0
- package/resources/splash-dark.png +0 -0
- package/resources/splash-dark2.png +0 -0
- package/resources/splash.png +0 -0
- package/resources/splash2.png +0 -0
- package/resources/touch-icon.svg +29 -0
- package/schematics/README.md +28 -0
- package/schematics/collection.json +20 -0
- package/schematics/package-lock.json +1501 -0
- package/schematics/package.json +37 -0
- package/schematics/src/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.__style__.template +0 -0
- package/schematics/src/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.html.template +3 -0
- package/schematics/src/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.spec.ts.template +40 -0
- package/schematics/src/component/files/__name@dasherize@if-flat__/__name@dasherize__.__type@dasherize__.ts.template +37 -0
- package/schematics/src/component/files/__name@dasherize@if-flat__/__name@dasherize__.module.ts.template +14 -0
- package/schematics/src/component/index.js +146 -0
- package/schematics/src/component/schema.js +2 -0
- package/schematics/src/component/schema.json +101 -0
- package/schematics/src/page/files/__name@dasherize__.page.html.template +15 -0
- package/schematics/src/page/files/__name@dasherize__.page.scss.template +0 -0
- package/schematics/src/page/files/__name@dasherize__.page.ts.template +19 -0
- package/schematics/src/page/index.js +71 -0
- package/schematics/src/page/schema.json +87 -0
- package/schematics/src/schematics/index.js +11 -0
- package/schematics/src/schematics/index_spec.js +13 -0
- package/schematics/src/util/ast-util.js +517 -0
- package/schematics/src/util/change.js +96 -0
- package/schematics/src/util/index.js +14 -0
- package/settings.json +112 -0
- package/tsconfig.app.json +22 -0
- package/tsconfig.cli.json +82 -0
- package/tsconfig.lib.json +14 -0
- package/tsconfig.lib.prod.json +10 -0
- package/tsconfig.spec.json +22 -0
- package/webpack.config.js +10 -0
- package/workdocs/1-Header.md +5 -0
- package/workdocs/2-Badges.md +30 -0
- package/workdocs/4-Description.md +4 -0
- package/workdocs/5-HowToUse.md +27 -0
- package/workdocs/6-Related.md +7 -0
- package/workdocs/7-Social.md +5 -0
- package/workdocs/99-Footer.md +28 -0
- package/workdocs/Readme.md +12 -0
- package/workdocs/assets/apple-touch-icon.png +0 -0
- package/workdocs/assets/decaf-logo.svg +54 -0
- package/workdocs/assets/favicon.png +0 -0
- package/workdocs/assets/slogans.json +182 -0
- package/workdocs/confluence/.markdown-confluence.template.json +6 -0
- package/workdocs/confluence/Angular Module.md +5 -0
- package/workdocs/drawings/diagram.drawio +24 -0
- package/workdocs/prompts/bulk.md +122 -0
- package/workdocs/prompts/code.md +47 -0
- package/workdocs/prompts/documentation.md +146 -0
- package/workdocs/prompts/uml.md +11 -0
- package/workdocs/readme-md.json +6 -0
- package/workdocs/reports/CHANGELOG.md +12 -0
- package/workdocs/reports/DEPENDENCIES.md +213 -0
- package/workdocs/reports/RELEASE_NOTES.md +24 -0
- package/workdocs/reports/coverage/.gitkeep +0 -0
- package/workdocs/reports/coverage/clover.xml +4110 -0
- package/workdocs/reports/coverage/coverage-final.json +76 -0
- package/workdocs/reports/coverage/lcov-report/base.css +224 -0
- package/workdocs/reports/coverage/lcov-report/block-navigation.js +87 -0
- package/workdocs/reports/coverage/lcov-report/favicon.png +0 -0
- package/workdocs/reports/coverage/lcov-report/index.html +551 -0
- package/workdocs/reports/coverage/lcov-report/prettify.css +1 -0
- package/workdocs/reports/coverage/lcov-report/prettify.js +2 -0
- package/workdocs/reports/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/workdocs/reports/coverage/lcov-report/sorter.js +210 -0
- package/workdocs/reports/coverage/lcov-report/src/app/models/CategoryModel.ts.html +277 -0
- package/workdocs/reports/coverage/lcov-report/src/app/models/DemoModel.ts.html +427 -0
- package/workdocs/reports/coverage/lcov-report/src/app/models/UserModel.ts.html +226 -0
- package/workdocs/reports/coverage/lcov-report/src/app/models/index.html +146 -0
- package/workdocs/reports/coverage/lcov-report/src/cli-module.ts.html +502 -0
- package/workdocs/reports/coverage/lcov-report/src/environments/environment.ts.html +166 -0
- package/workdocs/reports/coverage/lcov-report/src/environments/index.html +116 -0
- package/workdocs/reports/coverage/lcov-report/src/index.html +191 -0
- package/workdocs/reports/coverage/lcov-report/src/karma-test.ts.html +121 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/card/card.component.ts.html +625 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/card/index.html +116 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/component-renderer/component-renderer.component.ts.html +772 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/component-renderer/index.html +116 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/crud-field/crud-field.component.ts.html +2698 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/crud-field/index.html +116 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/crud-form/constants.ts.html +133 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/crud-form/crud-form.component.ts.html +346 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/crud-form/index.html +116 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/empty-state/empty-state.component.ts.html +1264 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/empty-state/index.html +116 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/fieldset/fieldset.component.ts.html +2965 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/fieldset/index.html +116 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/file-upload/file-upload.component.ts.html +2263 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/file-upload/index.html +116 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/filter/filter.component.ts.html +2485 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/filter/index.html +116 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/for-angular-components.module.ts.html +259 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/icon/icon.component.ts.html +358 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/icon/index.html +116 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/index.html +131 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/index.ts.html +181 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/layout/index.html +116 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/layout/layout.component.ts.html +943 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/list/index.html +116 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/list/list.component.ts.html +4261 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/list-item/index.html +116 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/list-item/list-item.component.ts.html +1741 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/modal/index.html +116 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/modal/modal.component.ts.html +1984 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/model-renderer/index.html +116 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/model-renderer/model-renderer.component.ts.html +373 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/pagination/index.html +116 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/pagination/pagination.component.ts.html +1165 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/searchbar/index.html +116 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/searchbar/searchbar.component.ts.html +1774 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/stepped-form/index.html +116 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/stepped-form/stepped-form.component.ts.html +1219 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/table/index.html +116 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/components/table/table.component.ts.html +988 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/directives/NgxSvgDirective.ts.html +163 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/directives/collapsable.directive.ts.html +268 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/directives/index.html +131 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/directives/index.ts.html +91 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/engine/DynamicModule.ts.html +133 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/engine/MediaService.ts.html +142 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxBaseComponent.ts.html +2194 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxComponentDirective.ts.html +3430 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxCrudFormField.ts.html +721 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxDecafComponentDirective.ts.html +1864 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxDecafFormFieldDirective.ts.html +952 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxDecafFormService.ts.html +3211 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxEventHandler.ts.html +307 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxFormDirective.ts.html +1366 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxFormFieldDirective.ts.html +1960 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxFormService.ts.html +3004 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxModelPageDirective.ts.html +1672 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxPageDirective.ts.html +748 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxParentComponentDirective.ts.html +775 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxRenderableComponentDirective.ts.html +727 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxRenderingEngine.ts.html +2005 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/engine/NgxRepositoryDirective.ts.html +1561 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/engine/ValidatorFactory.ts.html +817 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/engine/constants.ts.html +1120 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/engine/decorators.ts.html +376 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/engine/helpers.ts.html +676 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/engine/index.html +356 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/engine/index.ts.html +160 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/engine/overrides.ts.html +499 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/for-angular-common.module.ts.html +298 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/helpers/index.html +131 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/helpers/index.ts.html +121 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/helpers/utils.ts.html +1603 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/i18n/FakeLoader.ts.html +157 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/i18n/Loader.ts.html +826 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/i18n/index.html +146 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/i18n/index.ts.html +91 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/index.html +131 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/public-apis.ts.html +157 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/services/NgxFormService.ts.html +3460 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/services/NgxMediaService.ts.html +1420 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/services/NgxRouterService.ts.html +1231 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/services/NgxTranslateService.ts.html +214 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/services/index.html +176 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/services/index.ts.html +91 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/utils/DecafFakerRepository.ts.html +571 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/utils/helpers.ts.html +1663 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/utils/index.html +146 -0
- package/workdocs/reports/coverage/lcov-report/src/lib/utils/index.ts.html +124 -0
- package/workdocs/reports/coverage/lcov-report/src/main.ts.html +100 -0
- package/workdocs/reports/coverage/lcov-report/src/polyfills.ts.html +271 -0
- package/workdocs/reports/coverage/lcov-report/src/stories/Configure.stories.ts.html +1156 -0
- package/workdocs/reports/coverage/lcov-report/src/stories/button.component.ts.html +229 -0
- package/workdocs/reports/coverage/lcov-report/src/stories/button.stories.ts.html +235 -0
- package/workdocs/reports/coverage/lcov-report/src/stories/crud-field.stories.ts.html +325 -0
- package/workdocs/reports/coverage/lcov-report/src/stories/header.stories.ts.html +181 -0
- package/workdocs/reports/coverage/lcov-report/src/stories/index.html +281 -0
- package/workdocs/reports/coverage/lcov-report/src/stories/list.stories.ts.html +289 -0
- package/workdocs/reports/coverage/lcov-report/src/stories/login.page.stories.ts.html +175 -0
- package/workdocs/reports/coverage/lcov-report/src/stories/model-renderer.stories.ts.html +259 -0
- package/workdocs/reports/coverage/lcov-report/src/stories/page.component.ts.html +331 -0
- package/workdocs/reports/coverage/lcov-report/src/stories/page.stories.ts.html +193 -0
- package/workdocs/reports/coverage/lcov-report/src/stories/setup.ts.html +127 -0
- package/workdocs/reports/coverage/lcov-report/src/stories/utils.ts.html +247 -0
- package/workdocs/reports/coverage/lcov-report/src/tests/index.html +116 -0
- package/workdocs/reports/coverage/lcov-report/src/tests/karmaErrorParser.ts.html +190 -0
- package/workdocs/reports/coverage/lcov-report/src/typings.d.ts.html +88 -0
- package/workdocs/reports/coverage/lcov-report/src/zone-flags.ts.html +103 -0
- package/workdocs/reports/coverage/lcov.info +7917 -0
- package/workdocs/reports/data/.gitkeep +1 -0
- package/workdocs/reports/html/.gitkeep +0 -0
- package/workdocs/reports/html/jest-html-reporters-attach/test-report/index.js +3 -0
- package/workdocs/reports/html/jest-html-reporters-attach/test-report/result.js +1 -0
- package/workdocs/reports/html/test-report.html +1 -0
- package/workdocs/reports/images/.gitkeep +1 -0
- package/workdocs/reports/jest.coverage.config.ts +43 -0
- package/workdocs/reports/junit/junit-report.xml +91 -0
- package/workdocs/resources/.gitlock +0 -0
- package/workdocs/resources/diagram-Actor.png +0 -0
- package/workdocs/resources/diagram-banner.png +0 -0
- package/workdocs/resources/diagram.png +0 -0
- package/workdocs/tutorials/Contributing.md +64 -0
- package/workdocs/tutorials/Documentation.md +340 -0
- package/workdocs/tutorials/For Developers.md +337 -0
- package/workdocs/uml/diagram.puml +11 -0
- package/www/1049.10b030f0de36543b.js +1 -0
- package/www/1102.67cedfb3e29f0a05.js +1 -0
- package/www/1107.6454396befef800d.js +1 -0
- package/www/1459.cabc18e941afa5d7.js +1 -0
- package/www/1577.5221deebe3501e43.js +1 -0
- package/www/2075.b6dc4fbb89dd6afc.js +1 -0
- package/www/2348.c4cc27dadbec70ec.js +1 -0
- package/www/2375.318d0b24ab346271.js +1 -0
- package/www/2415.618d6968ffda319c.js +1 -0
- package/www/2460.1d97c6f48b898ee2.js +1 -0
- package/www/2560.2e7000dcf80b6b2c.js +1 -0
- package/www/2585.dffa5649fffafb44.js +1 -0
- package/www/2885.d99b86afd1ff7aa8.js +1 -0
- package/www/3162.bbc401f4a5f82460.js +1 -0
- package/www/323.f64c512be5c8d797.js +1 -0
- package/www/3238.a3e7e8004c6b6667.js +1 -0
- package/www/3506.8c03f5589b33a4a6.js +1 -0
- package/www/3511.56b7e49bb6c2c936.js +1 -0
- package/www/3519.84fbb67dc803f702.js +1 -0
- package/www/3675.7ebfdcf145052232.js +1 -0
- package/www/3814.765c1794e1be63de.js +1 -0
- package/www/3rdpartylicenses.txt +1344 -0
- package/www/4171.a974bdbf9c97e4e1.js +1 -0
- package/www/4183.41ef1def450a2cc0.js +1 -0
- package/www/4406.0b2dd3839b8c1417.js +1 -0
- package/www/441.e1031657c7e5f0ff.js +1 -0
- package/www/4463.6ad7b857e5f34009.js +1 -0
- package/www/4591.42f34534d38b9b31.js +1 -0
- package/www/4699.8df8ea9806163d4c.js +1 -0
- package/www/5100.ed6483c55a157d67.js +1 -0
- package/www/5193.15ea6938534eceb1.js +1 -0
- package/www/5197.6733853529768a45.js +1 -0
- package/www/5222.8439a641c2c4b1c1.js +1 -0
- package/www/5373.d7878f708309f038.js +1 -0
- package/www/5467.53f5cce977c2e28b.js +1 -0
- package/www/5712.b08cf436ee8145ce.js +1 -0
- package/www/5887.3d038f564e925abb.js +1 -0
- package/www/5949.37330f20e95dee79.js +1 -0
- package/www/6024.c10cc3d1b341c748.js +1 -0
- package/www/6433.360fcff952bde822.js +1 -0
- package/www/6499.60169da9869db697.js +1 -0
- package/www/6521.fab1f34bfe6b8200.js +1 -0
- package/www/6631.eaa711da6e0aeed9.js +1 -0
- package/www/6717.b4731255038304cd.js +1 -0
- package/www/6840.7317cd962ab23932.js +1 -0
- package/www/7030.d115d82ca7468a4e.js +1 -0
- package/www/7076.cce20ed5c79ff305.js +1 -0
- package/www/7179.c0545989ce869b3d.js +1 -0
- package/www/7240.69aeb484d78eb24d.js +1 -0
- package/www/7372.94c62459e34f7303.js +1 -0
- package/www/7402.983a5ecff61e9a5d.js +1 -0
- package/www/7428.527ac48035a2f915.js +1 -0
- package/www/7676.d7db23d350e4b096.js +1 -0
- package/www/770.80af87d5eb0075d3.js +1 -0
- package/www/7720.0701576cb9966779.js +1 -0
- package/www/7927.ee869d0dc478250a.js +1 -0
- package/www/8066.894688fbb2e5c832.js +1 -0
- package/www/8193.7f09ecd40b6d42c2.js +1 -0
- package/www/8255.158098a6302c91c2.js +1 -0
- package/www/8314.596c1ccf26b9c93a.js +1 -0
- package/www/8357.c5406b92e6933d7a.js +1 -0
- package/www/8477.a3ccc11c25a642d3.js +1 -0
- package/www/8487.93b6f7465ae1b7ac.js +1 -0
- package/www/8584.b77ad478a5a7ac2a.js +1 -0
- package/www/8805.a87413652185ff8f.js +1 -0
- package/www/8814.b489a78ae8e926c4.js +1 -0
- package/www/8970.234b3db1f97528fe.js +1 -0
- package/www/9013.c2e6ba17a915bdd6.js +1 -0
- package/www/9073.16c4e42482d55a3c.js +1 -0
- package/www/9344.7d2d24b194b794e2.js +1 -0
- package/www/9364.9a028036dd89e3e7.js +1 -0
- package/www/944.7e4317348c48d4f4.js +1 -0
- package/www/964.9a979e1c1aad0f5b.js +1 -0
- package/www/9657.8c3589a0aff521c0.js +1 -0
- package/www/9956.2d00a2153e9a7799.js +1 -0
- package/www/9977.068cd5561462bc99.js +1 -0
- package/www/assets/i18n/en.json +210 -0
- package/www/assets/i18n/ew/en.json +346 -0
- package/www/assets/i18n/pt.json +186 -0
- package/www/assets/icons/icon-128.webp +0 -0
- package/www/assets/icons/icon-192.webp +0 -0
- package/www/assets/icons/icon-256.webp +0 -0
- package/www/assets/icons/icon-48.webp +0 -0
- package/www/assets/icons/icon-512.webp +0 -0
- package/www/assets/icons/icon-72.webp +0 -0
- package/www/assets/icons/icon-96.webp +0 -0
- package/www/assets/images/angular-logo.svg +45 -0
- package/www/assets/images/apple-touch-icon.png +0 -0
- package/www/assets/images/decaf-logo-black.svg +22 -0
- package/www/assets/images/decaf-logo-contrast.svg +54 -0
- package/www/assets/images/decaf-logo-white.svg +22 -0
- package/www/assets/images/decaf-logo.svg +54 -0
- package/www/assets/images/ew/product.txt +1 -0
- package/www/assets/images/favicon-contrast.svg +7 -0
- package/www/assets/images/favicon.png +0 -0
- package/www/assets/images/favicon.svg +29 -0
- package/www/assets/images/icons/document.svg +7 -0
- package/www/assets/images/icons/edit.svg +1 -0
- package/www/assets/images/icons/logout.svg +4 -0
- package/www/assets/images/icons/menu-collapse.svg +5 -0
- package/www/assets/images/icons/menu.svg +3 -0
- package/www/assets/images/icons/moon-stars.svg +5 -0
- package/www/assets/images/icons/trash.svg +1 -0
- package/www/cli-module.ts +139 -0
- package/www/common.e50b5f8708aca9a5.js +1 -0
- package/www/index.html +29 -0
- package/www/main.6144bf417dec1977.js +1 -0
- package/www/polyfills.4c1e087fffe784e8.js +1 -0
- package/www/runtime.d8dcb0932f88fe3c.js +1 -0
- package/www/styles.5a3cd83eba16afc9.css +4 -0
- package/www/tabler-icons.bfabe54eef86ae62.woff +0 -0
- package/www/tabler-icons.d9f65ab9439b4ffc.ttf +0 -0
- package/www/tabler-icons.f17d2c3b34a5deaa.woff2 +0 -0
- package/fesm2022/decaf-ts-for-angular.mjs.map +0 -1
- /package/{assets → dist/lib/assets}/i18n/en.json +0 -0
- /package/{assets → dist/lib/assets}/i18n/ew/en.json +0 -0
- /package/{assets → dist/lib/assets}/i18n/pt.json +0 -0
- /package/{assets → dist/lib/assets}/icons/icon-128.webp +0 -0
- /package/{assets → dist/lib/assets}/icons/icon-192.webp +0 -0
- /package/{assets → dist/lib/assets}/icons/icon-256.webp +0 -0
- /package/{assets → dist/lib/assets}/icons/icon-48.webp +0 -0
- /package/{assets → dist/lib/assets}/icons/icon-512.webp +0 -0
- /package/{assets → dist/lib/assets}/icons/icon-72.webp +0 -0
- /package/{assets → dist/lib/assets}/icons/icon-96.webp +0 -0
- /package/{assets → dist/lib/assets}/images/angular-logo.svg +0 -0
- /package/{assets → dist/lib/assets}/images/apple-touch-icon.png +0 -0
- /package/{assets → dist/lib/assets}/images/decaf-logo-black.svg +0 -0
- /package/{assets → dist/lib/assets}/images/decaf-logo-contrast.svg +0 -0
- /package/{assets → dist/lib/assets}/images/decaf-logo-white.svg +0 -0
- /package/{assets → dist/lib/assets}/images/decaf-logo.svg +0 -0
- /package/{assets → dist/lib/assets}/images/ew/product.txt +0 -0
- /package/{assets → dist/lib/assets}/images/favicon-contrast.svg +0 -0
- /package/{assets → dist/lib/assets}/images/favicon.png +0 -0
- /package/{assets → dist/lib/assets}/images/favicon.svg +0 -0
- /package/{assets → dist/lib/assets}/images/icons/document.svg +0 -0
- /package/{assets → dist/lib/assets}/images/icons/edit.svg +0 -0
- /package/{assets → dist/lib/assets}/images/icons/logout.svg +0 -0
- /package/{assets → dist/lib/assets}/images/icons/menu-collapse.svg +0 -0
- /package/{assets → dist/lib/assets}/images/icons/menu.svg +0 -0
- /package/{assets → dist/lib/assets}/images/icons/moon-stars.svg +0 -0
- /package/{assets → dist/lib/assets}/images/icons/trash.svg +0 -0
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
## **_Initial Setup_**
|
|
2
|
+
|
|
3
|
+
#### if you use GitHub
|
|
4
|
+
|
|
5
|
+
create a new project using this one as a template.
|
|
6
|
+
|
|
7
|
+
clone it `git clone <project>` and navigate to the root folder `cd <project>`
|
|
8
|
+
|
|
9
|
+
add a `.token` file containing your access token to the git repository (allows for git opts to work seamlessly).
|
|
10
|
+
|
|
11
|
+
run `npm run set-git-auth` to update your repo's git config to include the token
|
|
12
|
+
|
|
13
|
+
#### If your project has private dependencies or publishes to private npm registries, create an `.npmrc` containing:
|
|
14
|
+
|
|
15
|
+
```text
|
|
16
|
+
@<scope1>:registry=https://<ADDRESS>.com/api/v4/packages/npm/
|
|
17
|
+
@<scope2>:registry=https://<ADDRESS>.<DOMAIN>.com/api/v4/packages/npm/
|
|
18
|
+
//<ADDRESS>.<DOMAIN>.com/:_authToken=${TOKEN}
|
|
19
|
+
//<ADDRESS>.<DOMAIN>.com/api/v4/groups/<GROUP_ID>/packages/npm/:_authToken=${TOKEN}
|
|
20
|
+
//<ADDRESS>.<DOMAIN>.com/api/v4/projects/<PROJECT_ID>/packages/npm/:_authToken=${TOKEN}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Changing:
|
|
24
|
+
|
|
25
|
+
- <ADDRESS> to `gitlab` or `github` (or other);
|
|
26
|
+
- <DOMAIN> to your domain if any (if you are using plain gitlab or GitHub, remove "<DOMAIN>" and the extra dot);
|
|
27
|
+
- <GROUP_ID> to your project's group id (if any). otherwise remove this line
|
|
28
|
+
- <PROJECT_ID> to your project's id
|
|
29
|
+
|
|
30
|
+
### Installation
|
|
31
|
+
|
|
32
|
+
Run `npm install` (or `npm run do-install` if you have private dependencies and a `.token` file) to install the dependencies:
|
|
33
|
+
|
|
34
|
+
If this is the first time you are running this command, it will also (according to your choices:
|
|
35
|
+
|
|
36
|
+
- update this repository's dependencies to their latest version;
|
|
37
|
+
- creates the various token files which you can leave empty unless you have private dependencies or publish to private registries
|
|
38
|
+
- delete the `postinstall` script from `package.json`;
|
|
39
|
+
- try to commit the updated `package.json` and deleted files (having ssh access helps here);
|
|
40
|
+
|
|
41
|
+
### Scripts
|
|
42
|
+
|
|
43
|
+
The following npm scripts are available for development:
|
|
44
|
+
|
|
45
|
+
- `do-install` - sets a `TOKEN` environment variable to the contents of `.token` and runs npm install (useful when you
|
|
46
|
+
have private dependencies);
|
|
47
|
+
- `update-scripts`: will pull the GitHub actions, templates, and style configs from the [for-angular](https://github.com/decaf-ts/for-angular) repository, overwriting the existing.
|
|
48
|
+
- `on-first-run`: will run the initial setup script,
|
|
49
|
+
- `set-git-auth` - change git config to include the token (no longer requires manual auth);
|
|
50
|
+
- `postinstall` - will run only on the first installation to trigger the dep update. Will self-delete;
|
|
51
|
+
- `flash-forward` - updates all dependencies. Take care, This may not be desirable is some cases;
|
|
52
|
+
- `reset` - updates all dependencies. Take care, This may not be desirable is some cases;
|
|
53
|
+
- `build` - builds the code (via gulp `gulpfile.js`) in development mode (generates `lib` and `dist` folder);
|
|
54
|
+
- `build:prod` - builds the code (via gulp `gulpfile.js`) in production mode (generates `lib` and `dist` folder);
|
|
55
|
+
- `test` - default project test script, defaults to `test:unit`;
|
|
56
|
+
- `test:unit` - runs unit tests;
|
|
57
|
+
- `test:integration` - runs it tests;
|
|
58
|
+
- `test:all` - runs all tests;
|
|
59
|
+
- `test:circular` - tests for circular dependencies;
|
|
60
|
+
- `coverage` - runs all tests, calculates coverage (html/csv), generates a test report (HTML and junit) and generates badges for readme;
|
|
61
|
+
- `prepare-pr`: same as prepare-release,
|
|
62
|
+
- `lint` - runs es lint on the code folder;
|
|
63
|
+
- `lint-fix` - tries to auto-fix the code folder;
|
|
64
|
+
- `prepare-release` - defines the commands to run prior to a new tag (defaults to linting, building production code,
|
|
65
|
+
running tests and documentation generation);
|
|
66
|
+
- `release` - triggers a new tag being pushed to master (via `./bin/tag_release.sh`);
|
|
67
|
+
- `clean-publish` - cleans the package.json for publishing;
|
|
68
|
+
- `drawings` - compiles all DrawIO `*.drawio` files in the `workdocs/drawings` folder to png and moves them to
|
|
69
|
+
the `workdocs/resources` folder;
|
|
70
|
+
- `uml` - compiles all PlantUML `*.puml` files in the `workdocs/uml` folder to png and moves them to
|
|
71
|
+
the `workdocs/resources` folder;
|
|
72
|
+
- `docs` - compiles all the coverage, drawings, uml, jsdocs, and md docs into a readable web page under `./docs`. Will be made available at [GitHub Pages](https://decaf-ts.github.io/for-angular);
|
|
73
|
+
- `publish-docs` - publishes the content of `./workdocs/confluence` to confluence according to the config at `./workdocs/confluence/.markdown-confluence.json`.
|
|
74
|
+
Uses [markdown-confluence](https://markdown-confluence.com/introduction.html). Check their documentation for configuration details;
|
|
75
|
+
|
|
76
|
+
## Linting
|
|
77
|
+
|
|
78
|
+
This repo comes with eslint + prettier preconfigured to the default standards.
|
|
79
|
+
|
|
80
|
+
Please configure your IDE to recognize these files and perform automatic validation and fixes on save:
|
|
81
|
+
- Webstorm:
|
|
82
|
+
- eslint recommended setup [here](../assets/ws-eslint-setup.png)
|
|
83
|
+
- prettier recommended setup [here](../assets/ws-prettier-setup.png)
|
|
84
|
+
- VSCode(ium):
|
|
85
|
+
- eslint recommended setup preconfigured under `.vscode/settings.json`
|
|
86
|
+
- prettier recommended setup preconfigured under `.vscode/settings.json`
|
|
87
|
+
|
|
88
|
+
## Testing
|
|
89
|
+
|
|
90
|
+
Preconfigured Jest based testing:
|
|
91
|
+
|
|
92
|
+
- `npm run test` - default repository test script. defaults to `test:unit`;
|
|
93
|
+
- `npm run test:unit` - unit tests under the `tests/unit` folder without coverage;
|
|
94
|
+
- `npm run test:all` - include a dist/bundle test under `tests/bundling` (helps with circular dependencies dist test);
|
|
95
|
+
- `npm run test:bundling` - integration tests under the `tests/integration` folder;
|
|
96
|
+
- `npm run test:circular` - stores coverage results under `workdocs/coverage`;
|
|
97
|
+
- `npm run coverage` - stores coverage & test reports under `workdocs/reports`;
|
|
98
|
+
- Coverage and test results will become part of exported docs;
|
|
99
|
+
- ignores `cli.ts` from coverage since that is an executable file;
|
|
100
|
+
- uses `jest.config.ts` as its base config;
|
|
101
|
+
- uses `workdocs/reports/jest.coverage.config.ts` as its base config;
|
|
102
|
+
- defines the coverage threshold in `workdocs/reports/jest.coverage.config.ts`;
|
|
103
|
+
|
|
104
|
+
## Documentation
|
|
105
|
+
|
|
106
|
+
The repository proposes a [way to generate documentation](./Documentation.md) that while still not ideal, produces very consistent results.
|
|
107
|
+
|
|
108
|
+
There are 3 steps in generating the documentation (automated in CI):
|
|
109
|
+
|
|
110
|
+
- `npm run drawings` - generates png files from each drawing in the `workdocs/drawings` folder and moves them to the `workdocs/resources` folder (requires Docker);
|
|
111
|
+
- `npm run uml` - generates png files from each PlantUML diagram in the `workdocs/uml` folder and moves them to the `workdocs/resources` folder (requires Docker);
|
|
112
|
+
- `npm run docs` - this has several stages, defined under the `gulp docs` (gulpfile.js):
|
|
113
|
+
- compiles the Readme file via md compile:
|
|
114
|
+
- enables keeping separate files for sections that are then joined into a single file;
|
|
115
|
+
- Allows keeping specific files in the jsdoc tutorial folder so they show up on their own menu;
|
|
116
|
+
- compiles the documentation from the source code using jsdoc:
|
|
117
|
+
- uses the better docs template with the category and component plugins
|
|
118
|
+
- uses the mermaid jsdoc plugin to imbue uml diagrams in the docs
|
|
119
|
+
- includes a nav link to the test coverage results;
|
|
120
|
+
- copies the jsdoc and mds to `/docs`;
|
|
121
|
+
- copies the `./workdocs/{drawings, uml, assets, resources}` to `./docs`;
|
|
122
|
+
|
|
123
|
+
The produced `docs` folder contains the resulting documentation;
|
|
124
|
+
|
|
125
|
+
## Continuous Integration/Deployment
|
|
126
|
+
|
|
127
|
+
While the implementation for gitlab and GitHub are not perfectly matched, they are perfectly usable.
|
|
128
|
+
|
|
129
|
+
The template comes with ci/cd for :
|
|
130
|
+
|
|
131
|
+
- gitlab (with caching for performance):
|
|
132
|
+
- stages:
|
|
133
|
+
- dependencies: Installs dependencies (on `package-lock.json` changes, caches node modules);
|
|
134
|
+
- build: builds the code (on `src/*` changes, caches `lib` and `dist`);
|
|
135
|
+
- test: tests the code (on `src/*`, `test/*` changes, caches `workdocs/{resources, badges, coverage}`);
|
|
136
|
+
- deploy:
|
|
137
|
+
- deploys to package registry on a tag (public|private);
|
|
138
|
+
- deploys docker image to docker registry (private);
|
|
139
|
+
- Deploys the documentation to the repository pages;
|
|
140
|
+
- github:
|
|
141
|
+
- jest-test: standard `install -> build -> test` loop;
|
|
142
|
+
- jest-coverage: extracts coverage from the tests;
|
|
143
|
+
- codeql-analysis: Code quality analysis;
|
|
144
|
+
- snyk-scan: Vulnerability scanning
|
|
145
|
+
- pages: builds the documentation and deploys to GitHub pages
|
|
146
|
+
- release-on-tag: issues a release when the tag does not contain `-no-ci` string
|
|
147
|
+
- publish-on-release: publishes to package registry (following the release) when the tag does not contain the `-no-ci` string
|
|
148
|
+
- Requires Variables:
|
|
149
|
+
- CONSECUTIVE_ACTION_TRIGGER: secret to enable actions to trigger other actions;
|
|
150
|
+
- NPM_TOKEN: npm registry token
|
|
151
|
+
- CI Pages Setup:
|
|
152
|
+
- Enable Pages via a GitHub action: 
|
|
153
|
+
- Secure Workflows via GitHub action: 
|
|
154
|
+
- Allow GitHub pages via GitHub action for tags: 
|
|
155
|
+
|
|
156
|
+
### Releases
|
|
157
|
+
|
|
158
|
+
This repository automates releases in the following manner:
|
|
159
|
+
|
|
160
|
+
- run `npm run release -- <major|minor|patch|version> <message>`:
|
|
161
|
+
- if arguments are missing, you will be prompted for them;
|
|
162
|
+
- it will run `npm run prepare-release` npm script;
|
|
163
|
+
- it will commit all changes;
|
|
164
|
+
- it will push the new tag;
|
|
165
|
+
|
|
166
|
+
If publishing to a private repo's npm registry, make sure you add to your `package.json`:
|
|
167
|
+
|
|
168
|
+
```json
|
|
169
|
+
{
|
|
170
|
+
"publishConfig": {
|
|
171
|
+
"<SCOPE>:registry": " https://<REGISTRY>/api/v4/projects/<PROJECT_ID>/packages/npm/"
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Where:
|
|
177
|
+
|
|
178
|
+
- `<SCOPE>` - Is the scope of your package;
|
|
179
|
+
- `<REGISTRY>` - your registry host;
|
|
180
|
+
- `<PROJECT_ID>` - you project ID number (easy to grab via UI in gitlab or by
|
|
181
|
+
running `$("meta[name=octolytics-dimension-repository_id]").getAttribute('content')` in the repository page in github);
|
|
182
|
+
|
|
183
|
+
### Publishing
|
|
184
|
+
|
|
185
|
+
Unless the `-no-ci` flag is passed in the commit message to the `npm run release` command, publishing will be handled
|
|
186
|
+
automatically by github/gitlab (triggered by the tag).
|
|
187
|
+
|
|
188
|
+
When the `-no-ci` flag is passed then you can:
|
|
189
|
+
|
|
190
|
+
- run `npm run publish`. This command assumes :
|
|
191
|
+
- you have previously run the `npm run release`;
|
|
192
|
+
- you have you publishing properly configured in `npmrc` and `package.json`;
|
|
193
|
+
- The token for any special access required is stored in the `.token` file;
|
|
194
|
+
|
|
195
|
+
### Repository Structure
|
|
196
|
+
|
|
197
|
+
```
|
|
198
|
+
for-angular
|
|
199
|
+
│
|
|
200
|
+
│ .confluence-token <-- stores confluence access token
|
|
201
|
+
│ .dockerignore <-- Defines files by docker in the build image
|
|
202
|
+
│ .dockeruser <-- stores docker registry user
|
|
203
|
+
│ .dockertoken <-- stores docker registry access token
|
|
204
|
+
│ .gitignore <-- Defines files ignored to git
|
|
205
|
+
│ .gitlab-ci.yml <-- CI behaviour for gitlab
|
|
206
|
+
│ .npmignore <-- Defines files ignored by npm
|
|
207
|
+
│ .nmprc <-- Defines the Npm registry for this package
|
|
208
|
+
│ .nmptoken <-- Defines access token for the Npm registry for this package
|
|
209
|
+
│ .prettierrc <-- style definitions for the project
|
|
210
|
+
│ .snyk <-- vulnerability scan (via snyk) config
|
|
211
|
+
│ .token <-- token for dependencies in private registries
|
|
212
|
+
│ .eslint.config.js <-- linting for the project
|
|
213
|
+
│ gulpfile.js <-- Gulp build scripts. used for building na other features (eg docs)
|
|
214
|
+
│ jest.config.ts <-- Tests Configuration file
|
|
215
|
+
│ LICENCE.md <-- Licence disclamer
|
|
216
|
+
│ package.json
|
|
217
|
+
│ package-lock.json
|
|
218
|
+
│ README.md <-- Readme File dynamically compiled from 'workdocs' via the 'docs' npm script
|
|
219
|
+
│ tsconfig.json <-- Typescript config file. Is overriden in 'gulpfile.js'
|
|
220
|
+
│
|
|
221
|
+
└───.github
|
|
222
|
+
│ │ ... <-- github workflows and templates
|
|
223
|
+
│
|
|
224
|
+
└───.run
|
|
225
|
+
│ │ ... <-- IDE run scripts for WebStorm
|
|
226
|
+
│
|
|
227
|
+
│└───.vscode
|
|
228
|
+
│ │ ... <-- IDE run scripts and configs for VSCode(ium)
|
|
229
|
+
│
|
|
230
|
+
└───bin
|
|
231
|
+
│ │───tag_release.cjs <-- Script to help with releases
|
|
232
|
+
│ │───template-setup.cjs <-- Script that runs on first npm install and configures the repo
|
|
233
|
+
│ └───update-scripts.cjs <-- Retrieves the most updated configuration files from the original repository
|
|
234
|
+
└───dist
|
|
235
|
+
│ │ ... <-- Dinamically generated folder containing the bundles for distribution
|
|
236
|
+
│
|
|
237
|
+
└───docs
|
|
238
|
+
│ │ ... <-- Dinamically generated folder, containing the compiled documentation for this repository. generated via the 'docs' npm script
|
|
239
|
+
│
|
|
240
|
+
└───lib
|
|
241
|
+
│ | ... <-- Dinamically generated folder containing the compiled code
|
|
242
|
+
│
|
|
243
|
+
└───src
|
|
244
|
+
│ │ ... <-- Source code for this repository
|
|
245
|
+
│
|
|
246
|
+
└───tests
|
|
247
|
+
│ │───bundling <-- Tests the result of the produced bundle
|
|
248
|
+
│ │───unit <-- Unit tests
|
|
249
|
+
│ └───integration <-- Integration tests
|
|
250
|
+
│
|
|
251
|
+
└───workdocs <-- Folder with all pre-compiled documentation
|
|
252
|
+
│───assets <-- Documentation asset folder
|
|
253
|
+
│───confluence <-- folder containing specific documentation to be synced with a confluence page
|
|
254
|
+
│───drawings <-- Drawio drawings that are converted to the resources folder dynamically
|
|
255
|
+
│───prompts <-- Used AI prompts (great for documentation and testing)
|
|
256
|
+
│───reports <-- Folder storing generated content (compiled uml, drawio, test reports, etc)
|
|
257
|
+
│ └───coverage <-- Auto generated coverage results (report ready html)
|
|
258
|
+
│ └───data <-- folder used as temp while genrating reports wiht attachements
|
|
259
|
+
│ └───html <-- test results (jest-html-reporters) complete test report with attachements
|
|
260
|
+
│ └───junit <-- test results (junit xml)
|
|
261
|
+
│ └───jest.coverage.config.ts <-- jest config collecting coverage and exporting test results (extends base config)
|
|
262
|
+
│───resources <-- Folder storing generated content (compiled uml, drawio, etc)
|
|
263
|
+
│───tutorials <-- Tutorial folder (will show up on tutorial section in generated documentation)
|
|
264
|
+
│───uml <-- folder containing puml files to be compiled along with the documentation
|
|
265
|
+
│ ... <-- Categorized *.md files that are merged to generate the final readme (via md compile)
|
|
266
|
+
│ jsdocs.json <-- jsdoc Documentation generation configuration file
|
|
267
|
+
│ Readme.md <-- Entry point to the README.md (will import other referenced md files)
|
|
268
|
+
│ readme-md.json <-- md Documentation generation configuration file for the README.md file
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
## IDE Integrations
|
|
272
|
+
|
|
273
|
+
### Visual Studio Code (VSCode)
|
|
274
|
+
|
|
275
|
+
For an optimal development experience in **VSCode**, we recommend installing the following extensions:
|
|
276
|
+
|
|
277
|
+
- [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) – Linting made easy and integrated.
|
|
278
|
+
- [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) – Code formatting with style.
|
|
279
|
+
- [Jest](https://marketplace.visualstudio.com/items?itemName=Orta.vscode-jest) – Smooth integration for running and debugging tests.
|
|
280
|
+
|
|
281
|
+
We've included a pre-configured `settings.json` that ensures:
|
|
282
|
+
|
|
283
|
+
- **Linting and formatting** are automatically applied on file save.
|
|
284
|
+
- **Jest** works seamlessly with your test suite out of the box.
|
|
285
|
+
|
|
286
|
+
#### Tasks & Launchers
|
|
287
|
+
|
|
288
|
+
Common tasks like `build`, `test`, and others are pre-configured as **VSCode Tasks** and **Launch Configurations**.
|
|
289
|
+
|
|
290
|
+
To access and run them:
|
|
291
|
+
|
|
292
|
+
- Open the Command Palette (`Cmd/Ctrl + Shift + P`) and select `Tasks: Run Task`.
|
|
293
|
+
- Or go to the **Run and Debug** panel, choose a configuration from the dropdown, and press ▶️.
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
### WebStorm
|
|
298
|
+
|
|
299
|
+
For **WebStorm** users, everything comes integrated right out of the box 🎉
|
|
300
|
+
Common commands for builds, tests, and documentation generation are available in the **Run/Debug configurations** dropdown for quick access and execution via:
|
|
301
|
+
|
|
302
|
+
- Jest integration:
|
|
303
|
+
- `tests/Unit Tests` - Runs all unit tests (analog to `test:unit`)
|
|
304
|
+
- `tests/Integration Tests` - Runs all integration tests (analog to `test:integration`)
|
|
305
|
+
- `tests/Bundling Tests` - Runs the dist and bundling tests (analog to `test:bundling`)
|
|
306
|
+
- `All Tests` - Runs all tests (analog to `test:all`)
|
|
307
|
+
|
|
308
|
+
- Node integration:
|
|
309
|
+
- `repo/docs` - Builds documentation (analog to `docs`)
|
|
310
|
+
- `repo/coverage` - runs `test:all`, collects coverage (csv, HTML), generates test reports (junit, HTML) (analog to `coverage`)
|
|
311
|
+
- `repo/uml` - builds uml into png files (analog to `uml`)
|
|
312
|
+
- `repo/test:circular` - test code for circular dependencies (analog to `test:circular`)
|
|
313
|
+
- `repo/lint-fix` - tries to fix linting issues (analog to `lint-fix`)
|
|
314
|
+
- `repo/drawings` - compiles draw.io files to png (one per page) (analog to `drawings`)
|
|
315
|
+
- `repo/flash-forward` - updates all dependencies to latest versions (analog to `flash-forward`)
|
|
316
|
+
- `repo/update-scripts` - runs cli to update repo's configs (CI, Doc boilerplate, Linting, Style, etc) via it's template repository (analog to `drawings`)
|
|
317
|
+
- `build:prod` - `build`s code in production mode (minify, uglify, doc extraction, and no source-map for bundled production)
|
|
318
|
+
- `build` - `build`s code in development mode
|
|
319
|
+
|
|
320
|
+
## Considerations
|
|
321
|
+
|
|
322
|
+
- Setup for node 20, but will work at least with 16;
|
|
323
|
+
- Requires docker to build documentation (drawings and PlantUML)
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
## Coding Principles
|
|
328
|
+
|
|
329
|
+
- group similar functionality in folders (analog to namespaces but without any namespace declaration)
|
|
330
|
+
- one class per file;
|
|
331
|
+
- one interface per file (unless interface is just used as a type);
|
|
332
|
+
- group types as other interfaces in a types.ts file per folder;
|
|
333
|
+
- group constants or enums in a constants.ts file per folder;
|
|
334
|
+
- group decorators in a decorators.ts file per folder;
|
|
335
|
+
- group pure/utilitarian functions in a utils.ts file per folder, or create a dedicated file per related functionality. Try to limit the export of these outside the package.
|
|
336
|
+
- always import from the specific file, never from a folder or index file (exceptions for dependencies on other packages)
|
|
337
|
+
- All classes, interfaces, constants and types should always be exported
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunkfor_angular_app=self.webpackChunkfor_angular_app||[]).push([[1049],{1049(u,s,i){i.r(s),i.d(s,{ion_avatar:()=>b,ion_badge:()=>o,ion_thumbnail:()=>c});var r=i(5705),d=i(6855),l=i(4576);const b=(()=>{let n=class{constructor(e){(0,r.r)(this,e)}render(){return(0,r.h)(r.d,{key:"998217066084f966bf5d356fed85bcbd451f675a",class:(0,d.b)(this)},(0,r.h)("slot",{key:"1a6f7c9d4dc6a875f86b5b3cda6d59cb39587f22"}))}};return n.style={ios:":host{border-radius:var(--border-radius);display:block}::slotted(ion-img),::slotted(img){border-radius:var(--border-radius);width:100%;height:100%;-o-object-fit:cover;object-fit:cover;overflow:hidden}:host{--border-radius:50%;width:48px;height:48px}",md:":host{border-radius:var(--border-radius);display:block}::slotted(ion-img),::slotted(img){border-radius:var(--border-radius);width:100%;height:100%;-o-object-fit:cover;object-fit:cover;overflow:hidden}:host{--border-radius:50%;width:64px;height:64px}"},n})(),o=(()=>{let n=class{constructor(e){(0,r.r)(this,e)}render(){const e=(0,d.b)(this);return(0,r.h)(r.d,{key:"1a2d39c5deec771a2f2196447627b62a7d4c8389",class:(0,l.c)(this.color,{[e]:!0})},(0,r.h)("slot",{key:"fc1b6587f1ed24715748eb6785e7fb7a57cdd5cd"}))}};return n.style={ios:":host{--background:var(--ion-color-primary, #0054e9);--color:var(--ion-color-primary-contrast, #fff);--padding-top:3px;--padding-end:8px;--padding-bottom:3px;--padding-start:8px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:inline-block;min-width:10px;background:var(--background);color:var(--color);font-family:var(--ion-font-family, inherit);font-size:0.8125rem;font-weight:bold;line-height:1;text-align:center;white-space:nowrap;contain:content;vertical-align:baseline}:host(.ion-color){background:var(--ion-color-base);color:var(--ion-color-contrast)}:host(:empty){display:none}:host{border-radius:10px;font-size:max(13px, 0.8125rem)}",md:":host{--background:var(--ion-color-primary, #0054e9);--color:var(--ion-color-primary-contrast, #fff);--padding-top:3px;--padding-end:8px;--padding-bottom:3px;--padding-start:8px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);display:inline-block;min-width:10px;background:var(--background);color:var(--color);font-family:var(--ion-font-family, inherit);font-size:0.8125rem;font-weight:bold;line-height:1;text-align:center;white-space:nowrap;contain:content;vertical-align:baseline}:host(.ion-color){background:var(--ion-color-base);color:var(--ion-color-contrast)}:host(:empty){display:none}:host{--padding-top:3px;--padding-end:4px;--padding-bottom:4px;--padding-start:4px;border-radius:4px}"},n})(),c=(()=>{let n=class{constructor(e){(0,r.r)(this,e)}render(){return(0,r.h)(r.d,{key:"70ada828e8cf541ab3b47f94b7e56ce34114ef88",class:(0,d.b)(this)},(0,r.h)("slot",{key:"c43e105669d2bae123619b616f3af8ca2f722d61"}))}};return n.style=":host{--size:48px;--border-radius:0;border-radius:var(--border-radius);display:block;width:var(--size);height:var(--size)}::slotted(ion-img),::slotted(img){border-radius:var(--border-radius);width:100%;height:100%;-o-object-fit:cover;object-fit:cover;overflow:hidden}",n})()},4576(u,s,i){i.d(s,{c:()=>l,g:()=>g,h:()=>d,o:()=>h});var r=i(467);const d=(t,o)=>null!==o.closest(t),l=(t,o)=>"string"==typeof t&&t.length>0?Object.assign({"ion-color":!0,[`ion-color-${t}`]:!0},o):o,g=t=>{const o={};return(t=>void 0!==t?(Array.isArray(t)?t:t.split(" ")).filter(a=>null!=a).map(a=>a.trim()).filter(a=>""!==a):[])(t).forEach(a=>o[a]=!0),o},b=/^[a-z][a-z0-9+\-.]*:/,h=function(){var t=(0,r.A)(function*(o,a,c,n){if(null!=o&&"#"!==o[0]&&!b.test(o)){const e=document.querySelector("ion-router");if(e)return a?.preventDefault(),e.push(o,c,n)}return!1});return function(a,c,n,e){return t.apply(this,arguments)}}()}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunkfor_angular_app=self.webpackChunkfor_angular_app||[]).push([[1102],{1102(g,l,s){s.r(l),s.d(l,{ion_tab:()=>f,ion_tabs:()=>d});var n=s(467),i=s(5705),u=s(6118);s(4674);const f=(()=>{let t=class{constructor(e){(0,i.r)(this,e),this.loaded=!1,this.active=!1}componentWillLoad(){var e=this;return(0,n.A)(function*(){e.active&&(yield e.setActive())})()}setActive(){var e=this;return(0,n.A)(function*(){yield e.prepareLazyLoaded(),e.active=!0})()}changeActive(e){e&&this.prepareLazyLoaded()}prepareLazyLoaded(){if(!this.loaded&&null!=this.component){this.loaded=!0;try{return(0,u.a)(this.delegate,this.el,this.component,["ion-page"])}catch(e){(0,i.j)("[ion-tab] - Exception in prepareLazyLoaded:",e)}}return Promise.resolve(void 0)}render(){const{tab:e,active:a,component:r}=this;return(0,i.h)(i.d,{key:"dbad8fe9f1566277d14647626308eaf1601ab01f",role:"tabpanel","aria-hidden":a?null:"true","aria-labelledby":`tab-button-${e}`,class:{"ion-page":void 0===r,"tab-hidden":!a}},(0,i.h)("slot",{key:"3be64f4e7161f6769aaf8e4dcb5293fcaa09af45"}))}get el(){return(0,i.g)(this)}static get watchers(){return{active:["changeActive"]}}};return t.style=":host(.tab-hidden){display:none !important}",t})(),d=class{constructor(t){(0,i.r)(this,t),this.ionNavWillLoad=(0,i.c)(this,"ionNavWillLoad",7),this.ionTabsWillChange=(0,i.c)(this,"ionTabsWillChange",3),this.ionTabsDidChange=(0,i.c)(this,"ionTabsDidChange",3),this.transitioning=!1,this.useRouter=!1,this.onTabClicked=e=>{const{href:a,tab:r}=e.detail;if(this.useRouter&&void 0!==a){const c=document.querySelector("ion-router");c&&c.push(a)}else this.select(r)}}componentWillLoad(){var t=this;return(0,n.A)(function*(){if(t.useRouter||(t.useRouter=!(!t.el.querySelector("ion-router-outlet")&&!document.querySelector("ion-router")||t.el.closest("[no-router]"))),!t.useRouter){const e=t.tabs;e.length>0&&(yield t.select(e[0]))}t.ionNavWillLoad.emit()})()}componentDidLoad(){this.updateTabBar()}componentDidUpdate(){this.updateTabBar()}updateTabBar(){const t=this.el.querySelector("ion-tab-bar");if(!t)return;const e=this.selectedTab?this.selectedTab.tab:void 0;void 0!==e&&t.selectedTab!==e&&(t.selectedTab=e)}select(t){var e=this;return(0,n.A)(function*(){const a=o(e.tabs,t);return!!e.shouldSwitch(a)&&(yield e.setActive(a),yield e.notifyRouter(),e.tabSwitch(),!0)})()}getTab(t){var e=this;return(0,n.A)(function*(){return o(e.tabs,t)})()}getSelected(){return Promise.resolve(this.selectedTab?this.selectedTab.tab:void 0)}setRouteId(t){var e=this;return(0,n.A)(function*(){const a=o(e.tabs,t);return e.shouldSwitch(a)?(yield e.setActive(a),{changed:!0,element:e.selectedTab,markVisible:()=>e.tabSwitch()}):{changed:!1,element:e.selectedTab}})()}getRouteId(){var t=this;return(0,n.A)(function*(){var e;const a=null===(e=t.selectedTab)||void 0===e?void 0:e.tab;return void 0!==a?{id:a,element:t.selectedTab}:void 0})()}setActive(t){return this.transitioning?Promise.reject("transitioning already happening"):(this.transitioning=!0,this.leavingTab=this.selectedTab,this.selectedTab=t,this.ionTabsWillChange.emit({tab:t.tab}),t.active=!0,this.updateTabBar(),Promise.resolve())}tabSwitch(){const t=this.selectedTab,e=this.leavingTab;this.leavingTab=void 0,this.transitioning=!1,t&&e!==t&&(e&&(e.active=!1),this.ionTabsDidChange.emit({tab:t.tab}))}notifyRouter(){if(this.useRouter){const t=document.querySelector("ion-router");if(t)return t.navChanged("forward")}return Promise.resolve(!1)}shouldSwitch(t){return void 0!==t&&t!==this.selectedTab&&!this.transitioning}get tabs(){return Array.from(this.el.querySelectorAll("ion-tab"))}render(){return(0,i.h)(i.d,{key:"7b4b302f2942d8d131f6fc24e817989a8be08867",onIonTabButtonClick:this.onTabClicked},(0,i.h)("slot",{key:"2c51cf14c0f17a8ddf2d879858c984cdf8fd3147",name:"top"}),(0,i.h)("div",{key:"7e9d6055092d41bd9bc80ae15965f77e216feb84",class:"tabs-inner"},(0,i.h)("slot",{key:"c308a787e37ff7f6653531d70deca597a7602d26"})),(0,i.h)("slot",{key:"d5f5e693710c853570811602f859cf3e88272684",name:"bottom"}))}get el(){return(0,i.g)(this)}},o=(t,e)=>{const a="string"==typeof e?t.find(r=>r.tab===e):e;return a||(0,i.j)(`[ion-tabs] - Tab with id: "${a}" does not exist`),a};d.style=":host{left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:100%;height:100%;contain:layout size style;z-index:0}.tabs-inner{position:relative;-ms-flex:1;flex:1;contain:layout size style}"}}]);
|