├── .editorconfig ├── .eslintrc.js ├── .git-ftp-include ├── .github ├── FUNDING.yml ├── dependabot.yml └── workflows │ ├── auto-dependency-updater.yml │ ├── codeql-analysis.yml │ ├── deploy-docs.yml │ ├── node-12-to-14.npm-6.test.yml │ ├── publish-to-npmjs.dry.yml │ ├── publish-to-npmjs.yml │ ├── update-changelog.yml │ └── weekly-releases.yml ├── .gitignore ├── .npmrc ├── .prettierignore ├── .vscode └── settings.json ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── GUIDE.md ├── LICENSE.md ├── README.md ├── SECURITY.md ├── angular-tsconfigs ├── tsconfig.app.json ├── tsconfig.json └── tsconfig.test.json ├── commitlint.config.js ├── docs ├── .vitepress │ ├── config.js │ ├── styles │ │ └── styles.css │ └── theme │ │ └── index.js ├── arc │ └── index.md ├── assets │ ├── demo.sh │ ├── leanup-migrate-1.2-module.png │ ├── logo.inline.svg │ ├── logo.only.svg │ └── logo.svg ├── changelog │ └── index.md ├── config │ └── index.md ├── guide │ ├── index.md │ ├── installation │ │ └── index.md │ ├── migration │ │ └── index.md │ ├── showcase │ │ └── index.md │ └── usage │ │ └── index.md ├── index.md └── motivation │ └── index.md ├── lerna.json ├── package-lock.json ├── package.json ├── packages ├── create-leanup │ ├── .gitignore │ ├── .ts-prunerc.js │ ├── LICENSE │ ├── README.md │ ├── package-lock.json │ ├── package.json │ ├── src │ │ └── cli.ts │ ├── templates │ │ ├── angular │ │ │ ├── .editorconfig │ │ │ ├── .eslintignore │ │ │ ├── .eslintrc.js │ │ │ ├── .mocharc.js │ │ │ ├── .npmrc │ │ │ ├── .prettierignore │ │ │ ├── .ts-prunerc.js │ │ │ ├── .vscode │ │ │ │ └── settings.json │ │ │ ├── README.md │ │ │ ├── angular.json │ │ │ ├── gitignore │ │ │ ├── index.html │ │ │ ├── nightwatch.conf.js │ │ │ ├── nyc.config.js │ │ │ ├── package.json │ │ │ ├── postcss.config.js │ │ │ ├── prettier.config.js │ │ │ ├── public │ │ │ │ └── index.html │ │ │ ├── snowpack.config.js │ │ │ ├── src │ │ │ │ ├── angular.main.ts │ │ │ │ ├── angular.module.ts │ │ │ │ ├── app.run.ts │ │ │ │ ├── assets │ │ │ │ │ ├── logo.angular.png │ │ │ │ │ └── logo.leanupjs.png │ │ │ │ ├── components │ │ │ │ │ ├── app │ │ │ │ │ │ ├── component.angular.ts │ │ │ │ │ │ └── controller.ts │ │ │ │ │ ├── input │ │ │ │ │ │ └── component.angular.ts │ │ │ │ │ └── series │ │ │ │ │ │ ├── create │ │ │ │ │ │ ├── component.angular.ts │ │ │ │ │ │ └── controller.ts │ │ │ │ │ │ ├── edit │ │ │ │ │ │ ├── component.angular.ts │ │ │ │ │ │ └── controller.ts │ │ │ │ │ │ ├── editor │ │ │ │ │ │ ├── component.angular.ts │ │ │ │ │ │ ├── controller.ts │ │ │ │ │ │ └── editor.form.ts │ │ │ │ │ │ └── list │ │ │ │ │ │ ├── component.angular.ts │ │ │ │ │ │ └── controller.ts │ │ │ │ ├── main.ts │ │ │ │ ├── models │ │ │ │ │ ├── framework.interface.ts │ │ │ │ │ ├── measured-item.model.ts │ │ │ │ │ └── measured-series.model.ts │ │ │ │ ├── services │ │ │ │ │ ├── measurements │ │ │ │ │ │ └── service.ts │ │ │ │ │ ├── router │ │ │ │ │ │ └── service.ts │ │ │ │ │ └── storage │ │ │ │ │ │ ├── mock.json │ │ │ │ │ │ └── service.ts │ │ │ │ ├── shares │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── filters.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ ├── routing.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── style.sass │ │ │ │ └── types │ │ │ │ │ └── images.d.ts │ │ │ ├── tests │ │ │ │ ├── e2e.test.js │ │ │ │ ├── e2e │ │ │ │ │ ├── app-test.js │ │ │ │ │ └── ecosia.js │ │ │ │ └── unit │ │ │ │ │ ├── injector.test.ts │ │ │ │ │ └── openapi.test.ts │ │ │ ├── tsconfig.app.json │ │ │ ├── tsconfig.json │ │ │ ├── webpack.config.mjs │ │ │ └── windi.config.js │ │ ├── angularjs │ │ │ ├── .editorconfig │ │ │ ├── .eslintignore │ │ │ ├── .eslintrc.js │ │ │ ├── .mocharc.js │ │ │ ├── .npmrc │ │ │ ├── .prettierignore │ │ │ ├── .ts-prunerc.js │ │ │ ├── .vscode │ │ │ │ └── settings.json │ │ │ ├── README.md │ │ │ ├── babel.config.js │ │ │ ├── gitignore │ │ │ ├── index.html │ │ │ ├── nightwatch.conf.js │ │ │ ├── nyc.config.js │ │ │ ├── package.json │ │ │ ├── postcss.config.js │ │ │ ├── prettier.config.js │ │ │ ├── public │ │ │ │ └── index.html │ │ │ ├── snowpack.config.js │ │ │ ├── src │ │ │ │ ├── angularjs.main.ts │ │ │ │ ├── angularjs.module.ts │ │ │ │ ├── app.run.ts │ │ │ │ ├── assets │ │ │ │ │ ├── logo.angularjs.png │ │ │ │ │ └── logo.leanupjs.png │ │ │ │ ├── components │ │ │ │ │ ├── app │ │ │ │ │ │ ├── component.angularjs.ts │ │ │ │ │ │ └── controller.ts │ │ │ │ │ ├── input │ │ │ │ │ │ └── component.angularjs.ts │ │ │ │ │ └── series │ │ │ │ │ │ ├── create │ │ │ │ │ │ ├── component.angularjs.ts │ │ │ │ │ │ └── controller.ts │ │ │ │ │ │ ├── edit │ │ │ │ │ │ ├── component.angularjs.ts │ │ │ │ │ │ └── controller.ts │ │ │ │ │ │ ├── editor │ │ │ │ │ │ ├── component.angularjs.ts │ │ │ │ │ │ ├── controller.ts │ │ │ │ │ │ └── editor.form.ts │ │ │ │ │ │ └── list │ │ │ │ │ │ ├── component.angularjs.ts │ │ │ │ │ │ └── controller.ts │ │ │ │ ├── main.ts │ │ │ │ ├── models │ │ │ │ │ ├── framework.interface.ts │ │ │ │ │ ├── measured-item.model.ts │ │ │ │ │ └── measured-series.model.ts │ │ │ │ ├── services │ │ │ │ │ ├── measurements │ │ │ │ │ │ └── service.ts │ │ │ │ │ ├── router │ │ │ │ │ │ └── service.ts │ │ │ │ │ └── storage │ │ │ │ │ │ ├── mock.json │ │ │ │ │ │ └── service.ts │ │ │ │ ├── shares │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── filters.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ ├── routing.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── style.sass │ │ │ │ └── types │ │ │ │ │ └── images.d.ts │ │ │ ├── tests │ │ │ │ ├── e2e.test.js │ │ │ │ ├── e2e │ │ │ │ │ ├── app-test.js │ │ │ │ │ └── ecosia.js │ │ │ │ └── unit │ │ │ │ │ ├── injector.test.ts │ │ │ │ │ └── openapi.test.ts │ │ │ ├── tsconfig.json │ │ │ ├── vite.config.js │ │ │ ├── webpack.config.js │ │ │ └── windi.config.js │ │ ├── aurelia │ │ │ ├── .editorconfig │ │ │ ├── .eslintignore │ │ │ ├── .eslintrc.js │ │ │ ├── .mocharc.js │ │ │ ├── .npmrc │ │ │ ├── .prettierignore │ │ │ ├── .ts-prunerc.js │ │ │ ├── .vscode │ │ │ │ └── settings.json │ │ │ ├── README.md │ │ │ ├── gitignore │ │ │ ├── index.html │ │ │ ├── nightwatch.conf.js │ │ │ ├── nyc.config.js │ │ │ ├── package.json │ │ │ ├── postcss.config.js │ │ │ ├── prettier.config.js │ │ │ ├── public │ │ │ │ └── index.html │ │ │ ├── src │ │ │ │ ├── app.run.ts │ │ │ │ ├── assets │ │ │ │ │ ├── logo.aurelia.png │ │ │ │ │ └── logo.leanupjs.png │ │ │ │ ├── aurelia.main.ts │ │ │ │ ├── components │ │ │ │ │ ├── app │ │ │ │ │ │ ├── component.aurelia.html │ │ │ │ │ │ ├── component.aurelia.ts │ │ │ │ │ │ └── controller.ts │ │ │ │ │ ├── input │ │ │ │ │ │ ├── component.aurelia.html │ │ │ │ │ │ └── component.aurelia.ts │ │ │ │ │ └── series │ │ │ │ │ │ ├── create │ │ │ │ │ │ ├── component.aurelia.html │ │ │ │ │ │ ├── component.aurelia.ts │ │ │ │ │ │ └── controller.ts │ │ │ │ │ │ ├── edit │ │ │ │ │ │ ├── component.aurelia.html │ │ │ │ │ │ ├── component.aurelia.ts │ │ │ │ │ │ └── controller.ts │ │ │ │ │ │ ├── editor │ │ │ │ │ │ ├── component.aurelia.html │ │ │ │ │ │ ├── component.aurelia.ts │ │ │ │ │ │ ├── controller.ts │ │ │ │ │ │ └── editor.form.ts │ │ │ │ │ │ └── list │ │ │ │ │ │ ├── component.aurelia.html │ │ │ │ │ │ ├── component.aurelia.ts │ │ │ │ │ │ └── controller.ts │ │ │ │ ├── main.ts │ │ │ │ ├── models │ │ │ │ │ ├── framework.interface.ts │ │ │ │ │ ├── measured-item.model.ts │ │ │ │ │ └── measured-series.model.ts │ │ │ │ ├── services │ │ │ │ │ ├── measurements │ │ │ │ │ │ └── service.ts │ │ │ │ │ ├── router │ │ │ │ │ │ └── service.ts │ │ │ │ │ └── storage │ │ │ │ │ │ ├── mock.json │ │ │ │ │ │ └── service.ts │ │ │ │ ├── shares │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── filters.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ ├── routing.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── style.sass │ │ │ │ └── types │ │ │ │ │ └── images.d.ts │ │ │ ├── tests │ │ │ │ ├── e2e.test.js │ │ │ │ ├── e2e │ │ │ │ │ ├── app-test.js │ │ │ │ │ └── ecosia.js │ │ │ │ └── unit │ │ │ │ │ ├── injector.test.ts │ │ │ │ │ └── openapi.test.ts │ │ │ ├── tsconfig.json │ │ │ ├── webpack.config.js │ │ │ └── windi.config.js │ │ ├── inferno │ │ │ ├── .editorconfig │ │ │ ├── .eslintignore │ │ │ ├── .eslintrc.js │ │ │ ├── .mocharc.js │ │ │ ├── .npmrc │ │ │ ├── .prettierignore │ │ │ ├── .ts-prunerc.js │ │ │ ├── .vscode │ │ │ │ └── settings.json │ │ │ ├── README.md │ │ │ ├── babel.config.js │ │ │ ├── gitignore │ │ │ ├── index.html │ │ │ ├── nightwatch.conf.js │ │ │ ├── nyc.config.js │ │ │ ├── package.json │ │ │ ├── postcss.config.js │ │ │ ├── prettier.config.js │ │ │ ├── public │ │ │ │ └── index.html │ │ │ ├── snowpack.config.js │ │ │ ├── src │ │ │ │ ├── app.run.ts │ │ │ │ ├── assets │ │ │ │ │ ├── logo.inferno.png │ │ │ │ │ └── logo.leanupjs.png │ │ │ │ ├── components │ │ │ │ │ ├── app │ │ │ │ │ │ ├── component.inferno.tsx │ │ │ │ │ │ └── controller.ts │ │ │ │ │ ├── input │ │ │ │ │ │ └── component.inferno.tsx │ │ │ │ │ └── series │ │ │ │ │ │ ├── create │ │ │ │ │ │ ├── component.inferno.tsx │ │ │ │ │ │ └── controller.ts │ │ │ │ │ │ ├── edit │ │ │ │ │ │ ├── component.inferno.tsx │ │ │ │ │ │ └── controller.ts │ │ │ │ │ │ ├── editor │ │ │ │ │ │ ├── component.inferno.tsx │ │ │ │ │ │ ├── controller.ts │ │ │ │ │ │ └── editor.form.ts │ │ │ │ │ │ └── list │ │ │ │ │ │ ├── component.inferno.tsx │ │ │ │ │ │ └── controller.ts │ │ │ │ ├── inferno.main.tsx │ │ │ │ ├── main.ts │ │ │ │ ├── models │ │ │ │ │ ├── framework.interface.ts │ │ │ │ │ ├── measured-item.model.ts │ │ │ │ │ └── measured-series.model.ts │ │ │ │ ├── services │ │ │ │ │ ├── measurements │ │ │ │ │ │ └── service.ts │ │ │ │ │ ├── router │ │ │ │ │ │ └── service.ts │ │ │ │ │ └── storage │ │ │ │ │ │ ├── mock.json │ │ │ │ │ │ └── service.ts │ │ │ │ ├── shares │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── filters.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ ├── routing.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── style.sass │ │ │ │ └── types │ │ │ │ │ └── images.d.ts │ │ │ ├── tests │ │ │ │ ├── e2e.test.js │ │ │ │ ├── e2e │ │ │ │ │ ├── app-test.js │ │ │ │ │ └── ecosia.js │ │ │ │ └── unit │ │ │ │ │ ├── injector.test.ts │ │ │ │ │ └── openapi.test.ts │ │ │ ├── tsconfig.json │ │ │ ├── vite.config.js │ │ │ ├── webpack.config.js │ │ │ └── windi.config.js │ │ ├── lit-element │ │ │ ├── .editorconfig │ │ │ ├── .eslintignore │ │ │ ├── .eslintrc.js │ │ │ ├── .mocharc.js │ │ │ ├── .npmrc │ │ │ ├── .prettierignore │ │ │ ├── .ts-prunerc.js │ │ │ ├── .vscode │ │ │ │ └── settings.json │ │ │ ├── README.md │ │ │ ├── gitignore │ │ │ ├── index.html │ │ │ ├── nightwatch.conf.js │ │ │ ├── nyc.config.js │ │ │ ├── package.json │ │ │ ├── postcss.config.js │ │ │ ├── prettier.config.js │ │ │ ├── public │ │ │ │ └── index.html │ │ │ ├── snowpack.config.js │ │ │ ├── src │ │ │ │ ├── app.run.ts │ │ │ │ ├── assets │ │ │ │ │ ├── logo.leanupjs.png │ │ │ │ │ └── logo.polymer.png │ │ │ │ ├── components │ │ │ │ │ ├── app │ │ │ │ │ │ ├── component.lit-element.ts │ │ │ │ │ │ └── controller.ts │ │ │ │ │ ├── component.lit-element.ts │ │ │ │ │ ├── input │ │ │ │ │ │ └── component.lit-element.ts │ │ │ │ │ └── series │ │ │ │ │ │ ├── create │ │ │ │ │ │ ├── component.lit-element.ts │ │ │ │ │ │ └── controller.ts │ │ │ │ │ │ ├── edit │ │ │ │ │ │ ├── component.lit-element.ts │ │ │ │ │ │ └── controller.ts │ │ │ │ │ │ ├── editor │ │ │ │ │ │ ├── component.lit-element.ts │ │ │ │ │ │ ├── controller.ts │ │ │ │ │ │ └── editor.form.ts │ │ │ │ │ │ └── list │ │ │ │ │ │ ├── component.lit-element.ts │ │ │ │ │ │ └── controller.ts │ │ │ │ ├── lit-element.main.ts │ │ │ │ ├── main.ts │ │ │ │ ├── models │ │ │ │ │ ├── framework.interface.ts │ │ │ │ │ ├── measured-item.model.ts │ │ │ │ │ └── measured-series.model.ts │ │ │ │ ├── services │ │ │ │ │ ├── measurements │ │ │ │ │ │ └── service.ts │ │ │ │ │ ├── router │ │ │ │ │ │ └── service.ts │ │ │ │ │ └── storage │ │ │ │ │ │ ├── mock.json │ │ │ │ │ │ └── service.ts │ │ │ │ ├── shares │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── filters.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ ├── routing.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── style.sass │ │ │ │ └── types │ │ │ │ │ └── images.d.ts │ │ │ ├── tests │ │ │ │ ├── e2e.test.js │ │ │ │ ├── e2e │ │ │ │ │ ├── app-test.js │ │ │ │ │ └── ecosia.js │ │ │ │ └── unit │ │ │ │ │ ├── injector.test.ts │ │ │ │ │ └── openapi.test.ts │ │ │ ├── tsconfig.json │ │ │ ├── vite.config.js │ │ │ ├── webpack.config.js │ │ │ └── windi.config.js │ │ ├── preact │ │ │ ├── .editorconfig │ │ │ ├── .eslintignore │ │ │ ├── .eslintrc.js │ │ │ ├── .mocharc.js │ │ │ ├── .npmrc │ │ │ ├── .prettierignore │ │ │ ├── .ts-prunerc.js │ │ │ ├── .vscode │ │ │ │ └── settings.json │ │ │ ├── README.md │ │ │ ├── gitignore │ │ │ ├── index.html │ │ │ ├── nightwatch.conf.js │ │ │ ├── nyc.config.js │ │ │ ├── package.json │ │ │ ├── postcss.config.js │ │ │ ├── prettier.config.js │ │ │ ├── public │ │ │ │ └── index.html │ │ │ ├── snowpack.config.js │ │ │ ├── src │ │ │ │ ├── app.run.ts │ │ │ │ ├── assets │ │ │ │ │ ├── logo.leanupjs.png │ │ │ │ │ └── logo.preact.png │ │ │ │ ├── components │ │ │ │ │ ├── app │ │ │ │ │ │ ├── component.preact.tsx │ │ │ │ │ │ └── controller.ts │ │ │ │ │ ├── input │ │ │ │ │ │ └── component.preact.tsx │ │ │ │ │ └── series │ │ │ │ │ │ ├── create │ │ │ │ │ │ ├── component.preact.tsx │ │ │ │ │ │ └── controller.ts │ │ │ │ │ │ ├── edit │ │ │ │ │ │ ├── component.preact.tsx │ │ │ │ │ │ └── controller.ts │ │ │ │ │ │ ├── editor │ │ │ │ │ │ ├── component.preact.tsx │ │ │ │ │ │ ├── controller.ts │ │ │ │ │ │ └── editor.form.ts │ │ │ │ │ │ └── list │ │ │ │ │ │ ├── component.preact.tsx │ │ │ │ │ │ └── controller.ts │ │ │ │ ├── main.ts │ │ │ │ ├── models │ │ │ │ │ ├── framework.interface.ts │ │ │ │ │ ├── measured-item.model.ts │ │ │ │ │ └── measured-series.model.ts │ │ │ │ ├── preact.main.tsx │ │ │ │ ├── services │ │ │ │ │ ├── measurements │ │ │ │ │ │ └── service.ts │ │ │ │ │ ├── router │ │ │ │ │ │ └── service.ts │ │ │ │ │ └── storage │ │ │ │ │ │ ├── mock.json │ │ │ │ │ │ └── service.ts │ │ │ │ ├── shares │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── filters.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ ├── routing.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── style.sass │ │ │ │ └── types │ │ │ │ │ └── images.d.ts │ │ │ ├── tests │ │ │ │ ├── e2e.test.js │ │ │ │ ├── e2e │ │ │ │ │ ├── app-test.js │ │ │ │ │ └── ecosia.js │ │ │ │ └── unit │ │ │ │ │ ├── injector.test.ts │ │ │ │ │ └── openapi.test.ts │ │ │ ├── tsconfig.json │ │ │ ├── vite.config.js │ │ │ ├── webpack.config.js │ │ │ └── windi.config.js │ │ ├── react │ │ │ ├── .editorconfig │ │ │ ├── .eslintignore │ │ │ ├── .eslintrc.js │ │ │ ├── .mocharc.js │ │ │ ├── .npmrc │ │ │ ├── .prettierignore │ │ │ ├── .ts-prunerc.js │ │ │ ├── .vscode │ │ │ │ └── settings.json │ │ │ ├── README.md │ │ │ ├── gitignore │ │ │ ├── index.html │ │ │ ├── nightwatch.conf.js │ │ │ ├── nyc.config.js │ │ │ ├── package.json │ │ │ ├── postcss.config.js │ │ │ ├── prettier.config.js │ │ │ ├── public │ │ │ │ └── index.html │ │ │ ├── snowpack.config.js │ │ │ ├── src │ │ │ │ ├── app.run.ts │ │ │ │ ├── assets │ │ │ │ │ ├── logo.leanupjs.png │ │ │ │ │ └── logo.react.png │ │ │ │ ├── components │ │ │ │ │ ├── app │ │ │ │ │ │ ├── component.react.tsx │ │ │ │ │ │ └── controller.ts │ │ │ │ │ ├── input │ │ │ │ │ │ └── component.react.tsx │ │ │ │ │ └── series │ │ │ │ │ │ ├── create │ │ │ │ │ │ ├── component.react.tsx │ │ │ │ │ │ └── controller.ts │ │ │ │ │ │ ├── edit │ │ │ │ │ │ ├── component.react.tsx │ │ │ │ │ │ └── controller.ts │ │ │ │ │ │ ├── editor │ │ │ │ │ │ ├── component.react.tsx │ │ │ │ │ │ ├── controller.ts │ │ │ │ │ │ └── editor.form.ts │ │ │ │ │ │ └── list │ │ │ │ │ │ ├── component.react.tsx │ │ │ │ │ │ └── controller.ts │ │ │ │ ├── main.ts │ │ │ │ ├── models │ │ │ │ │ ├── framework.interface.ts │ │ │ │ │ ├── measured-item.model.ts │ │ │ │ │ └── measured-series.model.ts │ │ │ │ ├── react.main.tsx │ │ │ │ ├── services │ │ │ │ │ ├── measurements │ │ │ │ │ │ └── service.ts │ │ │ │ │ ├── router │ │ │ │ │ │ └── service.ts │ │ │ │ │ └── storage │ │ │ │ │ │ ├── mock.json │ │ │ │ │ │ └── service.ts │ │ │ │ ├── shares │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── filters.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ ├── routing.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── style.sass │ │ │ │ └── types │ │ │ │ │ └── images.d.ts │ │ │ ├── tests │ │ │ │ ├── e2e.test.js │ │ │ │ ├── e2e │ │ │ │ │ ├── app-test.js │ │ │ │ │ └── ecosia.js │ │ │ │ └── unit │ │ │ │ │ ├── injector.test.ts │ │ │ │ │ └── openapi.test.ts │ │ │ ├── tsconfig.json │ │ │ ├── vite.config.js │ │ │ ├── webpack.config.js │ │ │ └── windi.config.js │ │ ├── solid │ │ │ ├── .editorconfig │ │ │ ├── .eslintignore │ │ │ ├── .eslintrc.js │ │ │ ├── .mocharc.js │ │ │ ├── .npmrc │ │ │ ├── .prettierignore │ │ │ ├── .ts-prunerc.js │ │ │ ├── .vscode │ │ │ │ └── settings.json │ │ │ ├── README.md │ │ │ ├── babel.config.js │ │ │ ├── gitignore │ │ │ ├── index.html │ │ │ ├── nightwatch.conf.js │ │ │ ├── nyc.config.js │ │ │ ├── package.json │ │ │ ├── postcss.config.js │ │ │ ├── prettier.config.js │ │ │ ├── public │ │ │ │ └── index.html │ │ │ ├── snowpack.config.js │ │ │ ├── src │ │ │ │ ├── app.run.ts │ │ │ │ ├── assets │ │ │ │ │ ├── logo.leanupjs.png │ │ │ │ │ └── logo.solid.png │ │ │ │ ├── components │ │ │ │ │ ├── app │ │ │ │ │ │ ├── component.solid.tsx │ │ │ │ │ │ └── controller.ts │ │ │ │ │ ├── input │ │ │ │ │ │ └── component.solid.tsx │ │ │ │ │ └── series │ │ │ │ │ │ ├── create │ │ │ │ │ │ ├── component.solid.tsx │ │ │ │ │ │ └── controller.ts │ │ │ │ │ │ ├── edit │ │ │ │ │ │ ├── component.solid.tsx │ │ │ │ │ │ └── controller.ts │ │ │ │ │ │ ├── editor │ │ │ │ │ │ ├── component.solid.tsx │ │ │ │ │ │ ├── controller.ts │ │ │ │ │ │ └── editor.form.ts │ │ │ │ │ │ └── list │ │ │ │ │ │ ├── component.solid.tsx │ │ │ │ │ │ └── controller.ts │ │ │ │ ├── main.ts │ │ │ │ ├── models │ │ │ │ │ ├── framework.interface.ts │ │ │ │ │ ├── measured-item.model.ts │ │ │ │ │ └── measured-series.model.ts │ │ │ │ ├── services │ │ │ │ │ ├── measurements │ │ │ │ │ │ └── service.ts │ │ │ │ │ ├── router │ │ │ │ │ │ └── service.ts │ │ │ │ │ └── storage │ │ │ │ │ │ ├── mock.json │ │ │ │ │ │ └── service.ts │ │ │ │ ├── shares │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── filters.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ ├── routing.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── solid.main.tsx │ │ │ │ ├── style.sass │ │ │ │ └── types │ │ │ │ │ └── images.d.ts │ │ │ ├── tests │ │ │ │ ├── e2e.test.js │ │ │ │ ├── e2e │ │ │ │ │ ├── app-test.js │ │ │ │ │ └── ecosia.js │ │ │ │ └── unit │ │ │ │ │ ├── injector.test.ts │ │ │ │ │ └── openapi.test.ts │ │ │ ├── tsconfig.json │ │ │ ├── vite.config.js │ │ │ ├── webpack.config.js │ │ │ └── windi.config.js │ │ ├── svelte │ │ │ ├── .editorconfig │ │ │ ├── .eslintignore │ │ │ ├── .eslintrc.js │ │ │ ├── .mocharc.js │ │ │ ├── .npmrc │ │ │ ├── .prettierignore │ │ │ ├── .ts-prunerc.js │ │ │ ├── .vscode │ │ │ │ └── settings.json │ │ │ ├── README.md │ │ │ ├── gitignore │ │ │ ├── index.html │ │ │ ├── nightwatch.conf.js │ │ │ ├── nyc.config.js │ │ │ ├── package.json │ │ │ ├── postcss.config.js │ │ │ ├── prettier.config.js │ │ │ ├── public │ │ │ │ └── index.html │ │ │ ├── snowpack.config.js │ │ │ ├── src │ │ │ │ ├── app.run.ts │ │ │ │ ├── assets │ │ │ │ │ ├── logo.leanupjs.png │ │ │ │ │ └── logo.svelte.png │ │ │ │ ├── components │ │ │ │ │ ├── app │ │ │ │ │ │ ├── component.svelte │ │ │ │ │ │ └── controller.ts │ │ │ │ │ ├── input │ │ │ │ │ │ └── component.svelte │ │ │ │ │ └── series │ │ │ │ │ │ ├── create │ │ │ │ │ │ ├── component.svelte │ │ │ │ │ │ └── controller.ts │ │ │ │ │ │ ├── edit │ │ │ │ │ │ ├── component.svelte │ │ │ │ │ │ └── controller.ts │ │ │ │ │ │ ├── editor │ │ │ │ │ │ ├── component.svelte │ │ │ │ │ │ ├── controller.ts │ │ │ │ │ │ └── editor.form.ts │ │ │ │ │ │ └── list │ │ │ │ │ │ ├── component.svelte │ │ │ │ │ │ └── controller.ts │ │ │ │ ├── main.ts │ │ │ │ ├── models │ │ │ │ │ ├── framework.interface.ts │ │ │ │ │ ├── measured-item.model.ts │ │ │ │ │ └── measured-series.model.ts │ │ │ │ ├── services │ │ │ │ │ ├── measurements │ │ │ │ │ │ └── service.ts │ │ │ │ │ ├── router │ │ │ │ │ │ └── service.ts │ │ │ │ │ └── storage │ │ │ │ │ │ ├── mock.json │ │ │ │ │ │ └── service.ts │ │ │ │ ├── shares │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── filters.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ ├── routing.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── style.sass │ │ │ │ ├── svelte.main.ts │ │ │ │ └── types │ │ │ │ │ └── images.d.ts │ │ │ ├── tests │ │ │ │ ├── e2e.test.js │ │ │ │ ├── e2e │ │ │ │ │ ├── app-test.js │ │ │ │ │ └── ecosia.js │ │ │ │ └── unit │ │ │ │ │ ├── injector.test.ts │ │ │ │ │ └── openapi.test.ts │ │ │ ├── tsconfig.json │ │ │ ├── vite.config.js │ │ │ ├── webpack.config.js │ │ │ └── windi.config.js │ │ ├── vanilla │ │ │ ├── .editorconfig │ │ │ ├── .eslintignore │ │ │ ├── .eslintrc.js │ │ │ ├── .mocharc.js │ │ │ ├── .npmrc │ │ │ ├── .prettierignore │ │ │ ├── .ts-prunerc.js │ │ │ ├── .vscode │ │ │ │ └── settings.json │ │ │ ├── README.md │ │ │ ├── gitignore │ │ │ ├── index.html │ │ │ ├── nightwatch.conf.js │ │ │ ├── nyc.config.js │ │ │ ├── package.json │ │ │ ├── postcss.config.js │ │ │ ├── prettier.config.js │ │ │ ├── public │ │ │ │ └── index.html │ │ │ ├── snowpack.config.js │ │ │ ├── src │ │ │ │ ├── app.run.ts │ │ │ │ ├── assets │ │ │ │ │ ├── logo.leanupjs.png │ │ │ │ │ └── logo.vanilla.png │ │ │ │ ├── components │ │ │ │ │ ├── app │ │ │ │ │ │ ├── component.vanilla.ts │ │ │ │ │ │ └── controller.ts │ │ │ │ │ ├── component.vanilla.ts │ │ │ │ │ └── series │ │ │ │ │ │ ├── create │ │ │ │ │ │ ├── component.vanilla.ts │ │ │ │ │ │ └── controller.ts │ │ │ │ │ │ ├── edit │ │ │ │ │ │ └── controller.ts │ │ │ │ │ │ ├── editor │ │ │ │ │ │ ├── controller.ts │ │ │ │ │ │ └── editor.form.ts │ │ │ │ │ │ └── list │ │ │ │ │ │ ├── component.vanilla.ts │ │ │ │ │ │ └── controller.ts │ │ │ │ ├── main.ts │ │ │ │ ├── main.vanilla.ts │ │ │ │ ├── models │ │ │ │ │ ├── framework.interface.ts │ │ │ │ │ ├── measured-item.model.ts │ │ │ │ │ └── measured-series.model.ts │ │ │ │ ├── services │ │ │ │ │ ├── measurements │ │ │ │ │ │ └── service.ts │ │ │ │ │ ├── router │ │ │ │ │ │ └── service.ts │ │ │ │ │ └── storage │ │ │ │ │ │ ├── mock.json │ │ │ │ │ │ └── service.ts │ │ │ │ ├── shares │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── filters.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ ├── routing.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── style.sass │ │ │ │ └── types │ │ │ │ │ └── images.d.ts │ │ │ ├── tests │ │ │ │ ├── e2e.test.js │ │ │ │ ├── e2e │ │ │ │ │ ├── app-test.js │ │ │ │ │ └── ecosia.js │ │ │ │ └── unit │ │ │ │ │ ├── injector.test.ts │ │ │ │ │ └── openapi.test.ts │ │ │ ├── tsconfig.json │ │ │ ├── vite.config.js │ │ │ ├── webpack.config.js │ │ │ └── windi.config.js │ │ ├── vue │ │ │ ├── .editorconfig │ │ │ ├── .eslintignore │ │ │ ├── .eslintrc.js │ │ │ ├── .mocharc.js │ │ │ ├── .npmrc │ │ │ ├── .prettierignore │ │ │ ├── .ts-prunerc.js │ │ │ ├── .vscode │ │ │ │ └── settings.json │ │ │ ├── README.md │ │ │ ├── gitignore │ │ │ ├── index.html │ │ │ ├── nightwatch.conf.js │ │ │ ├── nyc.config.js │ │ │ ├── package.json │ │ │ ├── postcss.config.js │ │ │ ├── prettier.config.js │ │ │ ├── public │ │ │ │ └── index.html │ │ │ ├── src │ │ │ │ ├── app.run.ts │ │ │ │ ├── assets │ │ │ │ │ ├── logo.leanupjs.png │ │ │ │ │ └── logo.vue.png │ │ │ │ ├── components │ │ │ │ │ ├── app │ │ │ │ │ │ ├── component.vue │ │ │ │ │ │ └── controller.ts │ │ │ │ │ ├── input │ │ │ │ │ │ └── component.vue │ │ │ │ │ └── series │ │ │ │ │ │ ├── create │ │ │ │ │ │ ├── component.vue │ │ │ │ │ │ └── controller.ts │ │ │ │ │ │ ├── edit │ │ │ │ │ │ ├── component.vue │ │ │ │ │ │ └── controller.ts │ │ │ │ │ │ ├── editor │ │ │ │ │ │ ├── component.vue │ │ │ │ │ │ ├── controller.ts │ │ │ │ │ │ └── editor.form.ts │ │ │ │ │ │ └── list │ │ │ │ │ │ ├── component.vue │ │ │ │ │ │ └── controller.ts │ │ │ │ ├── main.ts │ │ │ │ ├── models │ │ │ │ │ ├── framework.interface.ts │ │ │ │ │ ├── measured-item.model.ts │ │ │ │ │ └── measured-series.model.ts │ │ │ │ ├── services │ │ │ │ │ ├── measurements │ │ │ │ │ │ └── service.ts │ │ │ │ │ ├── router │ │ │ │ │ │ └── service.ts │ │ │ │ │ └── storage │ │ │ │ │ │ ├── mock.json │ │ │ │ │ │ └── service.ts │ │ │ │ ├── shares │ │ │ │ │ ├── constant.ts │ │ │ │ │ ├── filters.ts │ │ │ │ │ ├── register.ts │ │ │ │ │ ├── routing.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── style.sass │ │ │ │ ├── types │ │ │ │ │ └── images.d.ts │ │ │ │ └── vue.main.ts │ │ │ ├── tests │ │ │ │ ├── e2e.test.js │ │ │ │ ├── e2e │ │ │ │ │ ├── app-test.js │ │ │ │ │ └── ecosia.js │ │ │ │ └── unit │ │ │ │ │ ├── injector.test.ts │ │ │ │ │ └── openapi.test.ts │ │ │ ├── tsconfig.json │ │ │ ├── webpack.config.js │ │ │ └── windi.config.js │ │ └── vue3 │ │ │ ├── .editorconfig │ │ │ ├── .eslintignore │ │ │ ├── .eslintrc.js │ │ │ ├── .mocharc.js │ │ │ ├── .npmrc │ │ │ ├── .prettierignore │ │ │ ├── .ts-prunerc.js │ │ │ ├── .vscode │ │ │ └── settings.json │ │ │ ├── README.md │ │ │ ├── gitignore │ │ │ ├── index.html │ │ │ ├── nightwatch.conf.js │ │ │ ├── nyc.config.js │ │ │ ├── package.json │ │ │ ├── postcss.config.js │ │ │ ├── prettier.config.js │ │ │ ├── public │ │ │ └── index.html │ │ │ ├── snowpack.config.js │ │ │ ├── src │ │ │ ├── app.run.ts │ │ │ ├── assets │ │ │ │ ├── logo.leanupjs.png │ │ │ │ └── logo.vue.png │ │ │ ├── components │ │ │ │ ├── app │ │ │ │ │ ├── component.vue │ │ │ │ │ └── controller.ts │ │ │ │ ├── input │ │ │ │ │ └── component.vue │ │ │ │ └── series │ │ │ │ │ ├── create │ │ │ │ │ ├── component.vue │ │ │ │ │ └── controller.ts │ │ │ │ │ ├── edit │ │ │ │ │ ├── component.vue │ │ │ │ │ └── controller.ts │ │ │ │ │ ├── editor │ │ │ │ │ ├── component.vue │ │ │ │ │ ├── controller.ts │ │ │ │ │ └── editor.form.ts │ │ │ │ │ └── list │ │ │ │ │ ├── component.vue │ │ │ │ │ └── controller.ts │ │ │ ├── main.ts │ │ │ ├── models │ │ │ │ ├── framework.interface.ts │ │ │ │ ├── measured-item.model.ts │ │ │ │ └── measured-series.model.ts │ │ │ ├── services │ │ │ │ ├── measurements │ │ │ │ │ └── service.ts │ │ │ │ ├── router │ │ │ │ │ └── service.ts │ │ │ │ └── storage │ │ │ │ │ ├── mock.json │ │ │ │ │ └── service.ts │ │ │ ├── shares │ │ │ │ ├── constant.ts │ │ │ │ ├── filters.ts │ │ │ │ ├── register.ts │ │ │ │ ├── routing.ts │ │ │ │ └── utils.ts │ │ │ ├── style.sass │ │ │ ├── types │ │ │ │ └── images.d.ts │ │ │ └── vue.main.ts │ │ │ ├── tests │ │ │ ├── e2e.test.js │ │ │ ├── e2e │ │ │ │ ├── app-test.js │ │ │ │ └── ecosia.js │ │ │ └── unit │ │ │ │ ├── injector.test.ts │ │ │ │ └── openapi.test.ts │ │ │ ├── tsconfig.json │ │ │ ├── vite.config.js │ │ │ ├── webpack.config.js │ │ │ └── windi.config.js │ └── tsconfig.json ├── form │ ├── .gitignore │ ├── .mocharc.js │ ├── README.md │ ├── nyc.config.js │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── controls │ │ │ ├── controls-json.test.ts │ │ │ ├── controls.test.ts │ │ │ ├── controls.ts │ │ │ ├── index.ts │ │ │ └── interfaces.ts │ │ ├── handlers │ │ │ ├── format.handler.ts │ │ │ ├── formatters │ │ │ │ ├── abstract.formatter.ts │ │ │ │ ├── iban.formatter.test.ts │ │ │ │ ├── iban.formatter.ts │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ ├── validation.handler.test.ts │ │ │ ├── validation.handler.ts │ │ │ └── validators │ │ │ │ ├── abstract.validator.test.ts │ │ │ │ ├── abstract.validator.ts │ │ │ │ ├── digits.validator.ts │ │ │ │ ├── email.validator.ts │ │ │ │ ├── index.ts │ │ │ │ ├── is-true.validator.ts │ │ │ │ ├── max-length.validator.ts │ │ │ │ ├── min-length.validator.ts │ │ │ │ ├── non-required.validator.ts │ │ │ │ ├── not.validator.ts │ │ │ │ ├── pattern.validator.ts │ │ │ │ └── required.validator.ts │ │ └── index.ts │ ├── tsconfig.build.json │ └── tsconfig.json ├── lib │ ├── .gitignore │ ├── .mocharc.js │ ├── ES6.md │ ├── README.md │ ├── nyc.config.js │ ├── package-lock.json │ ├── package.json │ ├── src │ │ ├── architecture │ │ │ ├── component.ts │ │ │ ├── controller.ts │ │ │ ├── decorators.ts │ │ │ ├── index.ts │ │ │ └── interfaces.ts │ │ ├── components │ │ │ ├── index.ts │ │ │ └── vanilla.ts │ │ ├── helpers │ │ │ ├── index.ts │ │ │ ├── injector.test.ts │ │ │ ├── injector.ts │ │ │ ├── log.ts │ │ │ └── validator.ts │ │ ├── index.ts │ │ ├── pattern │ │ │ ├── index.ts │ │ │ ├── list-of.test.ts │ │ │ └── list-of.ts │ │ └── shares │ │ │ ├── filters.ts │ │ │ └── index.ts │ ├── tsconfig.build.json │ └── tsconfig.json ├── openapi │ ├── .gitignore │ ├── README.md │ ├── openapitools.json │ ├── package-lock.json │ ├── package.json │ ├── scripts │ │ ├── add-bearer-handling.js │ │ └── create-package-json.js │ └── src │ │ ├── models │ │ └── version.yml │ │ ├── openapi.yml │ │ └── paths │ │ └── version.yml └── stack │ ├── bundlers │ ├── vite │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package-lock.json │ │ ├── package.json │ │ └── vite.config.js │ └── webpack │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ ├── cjs │ │ │ └── webpack.config.ts │ │ └── mjs │ │ │ ├── index.d.ts │ │ │ └── webpack.config.ts │ │ ├── tsconfig.cjs.json │ │ ├── tsconfig.json │ │ └── tsconfig.mjs.json │ ├── core │ ├── .eslintrc.js │ ├── .gitignore │ ├── .mocharc.js │ ├── .npmignore │ ├── README.md │ ├── nightwatch.conf.js │ ├── nyc.config.js │ ├── package-lock.json │ ├── package.json │ ├── prettier.config.js │ ├── src │ │ ├── cjs │ │ │ └── index.ts │ │ ├── mjs │ │ │ └── index.ts │ │ ├── proxies.ts │ │ └── replacements.ts │ ├── tsconfig.cjs.json │ ├── tsconfig.json │ └── tsconfig.mjs.json │ ├── frameworks │ ├── angular │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── snowpack.config.js │ │ ├── src │ │ │ ├── cjs │ │ │ │ └── webpack.config.ts │ │ │ └── mjs │ │ │ │ ├── index.d.ts │ │ │ │ └── webpack.config.ts │ │ ├── tsconfig.cjs.json │ │ ├── tsconfig.json │ │ ├── tsconfig.mjs.json │ │ └── webpack.config.js │ ├── angularjs │ │ ├── .gitignore │ │ ├── README.md │ │ ├── babel.config.js │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── snowpack.config.js │ │ ├── src │ │ │ └── webpack.config.ts │ │ ├── tsconfig.json │ │ └── webpack.config.js │ ├── aurelia │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ └── webpack.config.ts │ │ ├── tsconfig.json │ │ └── webpack.config.js │ ├── inferno │ │ ├── .gitignore │ │ ├── README.md │ │ ├── babel.config.js │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── snowpack.config.js │ │ ├── src │ │ │ └── webpack.config.ts │ │ ├── tsconfig.json │ │ ├── vite.config.js │ │ └── webpack.config.js │ ├── lit-element │ │ ├── README.md │ │ ├── package-lock.json │ │ └── package.json │ ├── preact │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── snowpack.config.js │ │ ├── src │ │ │ └── webpack.config.ts │ │ ├── tsconfig.json │ │ ├── vite.config.js │ │ └── webpack.config.js │ ├── react │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ └── webpack.config.ts │ │ ├── tsconfig.json │ │ └── webpack.config.js │ ├── solid │ │ ├── .gitignore │ │ ├── README.md │ │ ├── babel.config.js │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── snowpack.config.js │ │ ├── src │ │ │ └── webpack.config.ts │ │ ├── tsconfig.json │ │ ├── vite.config.js │ │ └── webpack.config.js │ ├── svelte │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── snowpack.config.js │ │ ├── src │ │ │ └── webpack.config.ts │ │ ├── tsconfig.json │ │ ├── vite.config.js │ │ └── webpack.config.js │ ├── vue │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ │ └── webpack.config.ts │ │ ├── tsconfig.json │ │ └── webpack.config.js │ └── vue3 │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── snowpack.config.js │ │ ├── src │ │ └── webpack.config.ts │ │ ├── tsconfig.json │ │ ├── vite.config.js │ │ └── webpack.config.js │ └── plugins │ ├── babel │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package-lock.json │ ├── package.json │ ├── src │ │ └── webpack.config.ts │ └── tsconfig.json │ ├── cucumber │ ├── .gitignore │ ├── README.md │ ├── cucumber.conf.js │ ├── cucumber.js │ ├── index.js │ ├── package-lock.json │ ├── package.json │ ├── src │ │ └── cli.ts │ ├── template │ │ ├── cucumber.conf.js │ │ ├── cucumber.js │ │ └── tests │ │ │ └── cucumber │ │ │ ├── features │ │ │ ├── demo.feature │ │ │ └── google.feature │ │ │ └── step-definitions │ │ │ ├── demo.js │ │ │ └── google.js │ └── tsconfig.json │ ├── git-hooks │ ├── README.md │ ├── commitlint.config.js │ ├── package-lock.json │ ├── package.json │ └── template │ │ └── commitlint.config.js │ └── pwa │ ├── .gitignore │ ├── README.md │ ├── index.js │ ├── package-lock.json │ ├── package.json │ ├── src │ ├── cli.js │ └── cli.ts │ ├── template │ ├── pwa-manifest.config.js │ └── workbox-config.js │ ├── tsconfig.json │ └── webpack.config.js ├── prettier.config.js └── scripts ├── .gitignore ├── access-all.sh ├── access.sh ├── delete-tags.sh ├── deprecate-all.sh ├── deprecate-all.webpack.sh ├── deprecate.sh ├── dist-tag-all.sh ├── dist-tag.sh ├── package.js ├── sh.exe.stackdump ├── unpublish-1.0.sh ├── unpublish-1.1-a.sh ├── unpublish-1.1-b.sh ├── unpublish-1.2.sh ├── unpublish-all.sh ├── unpublish-loop.sh ├── unpublish.all.sh ├── unpublish.set.sh ├── unpublish.sh ├── wake-up-all.sh └── wake-up.sh /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./packages/stack/core/.eslintrc'); 2 | -------------------------------------------------------------------------------- /.git-ftp-include: -------------------------------------------------------------------------------- 1 | !dist/ -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | open_collective: leanupjs 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.husky 2 | /docs/.vitepress/dist 3 | 4 | .DS_Store 5 | .reports/ 6 | dist/ 7 | node_modules/ 8 | # templates/ 9 | *.log 10 | *.tgz 11 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | @leanupjs:registry=https://npm.pkg.github.com 2 | 3 | # - npm 4 | legacy-peer-deps=true 5 | 6 | # - pnpm 7 | # auto-install-peers=false 8 | # shamefully-hoist=true 9 | strict-peer-dependencies=false 10 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | **/assets/** 2 | *.feature 3 | *.sass 4 | *.scss -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | Use this section to tell people about which versions of your project are 6 | currently being supported with security updates. 7 | 8 | | Version | Supported | 9 | | -------- | ------------------ | 10 | | 2.0.x-rc | :white_check_mark: | 11 | | 1.2.x | :white_check_mark: | 12 | | 1.1.x | :white_check_mark: | 13 | | 1.0.x | :x: | 14 | 15 | ## Reporting a Vulnerability 16 | 17 | Use this section to tell people how to report a vulnerability. 18 | 19 | Tell them where to go, how often they can expect to get an update on a 20 | reported vulnerability, what to expect if the vulnerability is accepted or 21 | declined, etc. 22 | -------------------------------------------------------------------------------- /angular-tsconfigs/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.test.json", 3 | "compilerOptions": { 4 | "baseUrl": "./", 5 | "declaration": false, 6 | "downlevelIteration": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "removeComments": false, 9 | "strict": false 10 | }, 11 | "angularCompilerOptions": { 12 | "enableIvy": false, 13 | "fullTemplateTypeCheck": true, 14 | "strictInjectionParameters": true 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /commitlint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: ['@commitlint/config-conventional'], 3 | }; 4 | -------------------------------------------------------------------------------- /docs/.vitepress/styles/styles.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --c-brand: #006335; 3 | --c-brand-light: #006335; 4 | 5 | --bg-colored-light: rgb(255, 255, 255); 6 | } 7 | -------------------------------------------------------------------------------- /docs/.vitepress/theme/index.js: -------------------------------------------------------------------------------- 1 | import Theme from 'vitepress/theme'; 2 | 3 | import '../styles/styles.css'; 4 | 5 | export default { 6 | ...Theme, 7 | }; 8 | -------------------------------------------------------------------------------- /docs/assets/leanup-migrate-1.2-module.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leanupjs/leanup/2603659c93ceab96c643a05a9b8f836d17b60ea9/docs/assets/leanup-migrate-1.2-module.png -------------------------------------------------------------------------------- /docs/guide/index.md: -------------------------------------------------------------------------------- 1 | # Guide 2 | 3 | The `@leanup stack` only contains the selected tools and their default configuration. No specific things are implemented, such as a dedicated CLI. 4 | 5 | This means that all commands for developing, testing or building etc. the app relate to the configuration of the `npm scripts`. 6 | 7 | ## Technical risks 8 | 9 | The technical risks are minimal, because their is no own stuff inside. You can change each individual tool if you want. 10 | 11 | ## Installation 12 | 13 | Read more about the installation [here](installation/). 14 | 15 | ## Migration 16 | 17 | Read more about the migration [here](migration/). 18 | 19 | ## Usage 20 | 21 | Read more about the usage [here](usage/). 22 | -------------------------------------------------------------------------------- /lerna.json: -------------------------------------------------------------------------------- 1 | { 2 | "packages": [ 3 | "packages/create-leanup", 4 | "packages/form", 5 | "packages/lib", 6 | "packages/openapi", 7 | "packages/stack/bundlers/vite", 8 | "packages/stack/bundlers/webpack", 9 | "packages/stack/core", 10 | "packages/stack/frameworks/**", 11 | "packages/stack/plugins" 12 | ], 13 | "useNx": false, 14 | "version": "2.0.0-rc.86" 15 | } -------------------------------------------------------------------------------- /packages/create-leanup/.gitignore: -------------------------------------------------------------------------------- 1 | /my-app*/ 2 | -------------------------------------------------------------------------------- /packages/create-leanup/.ts-prunerc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/nadeesha/ts-prune 2 | https: module.exports = { 3 | ignore: 'defaults|node_modules|templates', 4 | }; 5 | -------------------------------------------------------------------------------- /packages/create-leanup/src/cli.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import { create } from 'create-create-cli'; 4 | import { resolve } from 'path'; 5 | 6 | const templateRoot = resolve(__dirname, '..', 'templates'); 7 | 8 | const caveat = ` 9 | Your app on leanup stack has been created successfully! 10 | `; 11 | 12 | // See https://github.com/uetchy/create-create-app/blob/master/README.md for other options. 13 | 14 | create('create-leanup', { 15 | templateRoot, 16 | defaultTemplate: 'react', 17 | defaultPackageManager: 'pnpm', 18 | promptForPackageManager: true, 19 | promptForTemplate: true, 20 | caveat, 21 | }); 22 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/.eslintignore: -------------------------------------------------------------------------------- 1 | **/assets/** -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/.eslintrc'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/.mocharc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/.mocharc'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/.npmrc: -------------------------------------------------------------------------------- 1 | auto-install-peers=true 2 | shamefully-hoist=true 3 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/.prettierignore: -------------------------------------------------------------------------------- 1 | **/assets/** 2 | *.feature 3 | *.sass 4 | *.scss -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/.ts-prunerc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/nadeesha/ts-prune 2 | https: module.exports = { 3 | // ignore: '(arg-types|form/form|mermaid|src/index|stories).tsx?', 4 | // skip: 'autogen', 5 | }; 6 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/gitignore: -------------------------------------------------------------------------------- 1 | /.husky 2 | /.reports 3 | /dist 4 | /hint-report 5 | /node_modules 6 | *.log 7 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/nightwatch.conf.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/nightwatch.conf'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/nyc.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/nyc.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/postcss.config.js: -------------------------------------------------------------------------------- 1 | // ## Migrate from 1.1 to 1.2 2 | 3 | // ### Changes 4 | 5 | // 1. ⛔ `autoprefixer` was removed from stack, it is to handle in project scope 6 | // 2. ⛔ `cssnano` was removed from default template, it is to handle in project scope 7 | // 3. ⛔ `postcss.config.js` was removed from stack, it is to handle in project scope 8 | 9 | module.exports = { 10 | plugins: [ 11 | require('postcss-windicss')({ 12 | touchMode: 'insert-comment', 13 | }), 14 | ], 15 | }; 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/prettier.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/snowpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-angular/snowpack.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/src/assets/logo.angular.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leanupjs/leanup/2603659c93ceab96c643a05a9b8f836d17b60ea9/packages/create-leanup/templates/angular/src/assets/logo.angular.png -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/src/assets/logo.leanupjs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leanupjs/leanup/2603659c93ceab96c643a05a9b8f836d17b60ea9/packages/create-leanup/templates/angular/src/assets/logo.leanupjs.png -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/src/components/input/component.angular.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { InputControl } from '@leanup/form'; 3 | 4 | @Component({ 5 | selector: 'app-input', 6 | template: ` 7 |
8 | 9 | 10 |
11 | `, 12 | }) 13 | export class InputComponent { 14 | @Input() public control!: InputControl; 15 | } 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/src/components/series/editor/controller.ts: -------------------------------------------------------------------------------- 1 | import { AbstractController } from '@leanup/lib'; 2 | 3 | export class EditorSerieController extends AbstractController {} 4 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/src/components/series/editor/editor.form.ts: -------------------------------------------------------------------------------- 1 | import { FormControl, InputControl } from '@leanup/form'; 2 | 3 | export class EditorForm extends FormControl { 4 | public constructor(name: string) { 5 | super(name); 6 | this.addControl( 7 | new InputControl('title', { 8 | label: 'Title', 9 | value: '', 10 | }) 11 | ); 12 | this.addControl( 13 | new InputControl('unit', { 14 | label: 'Unit', 15 | value: '', 16 | }) 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/src/main.ts: -------------------------------------------------------------------------------- 1 | import './angular.main'; 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/src/models/framework.interface.ts: -------------------------------------------------------------------------------- 1 | export interface Framework { 2 | name: string; 3 | version: string; 4 | } 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/src/models/measured-item.model.ts: -------------------------------------------------------------------------------- 1 | export class MeasuredItemModel { 2 | private date: Date; 3 | private value: number; 4 | 5 | public constructor(date: Date, value: number) { 6 | this.date = date; 7 | this.value = value; 8 | } 9 | 10 | public getDate(): Date { 11 | return this.date; 12 | } 13 | public getValue(): number { 14 | return this.value; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/src/services/storage/mock.json: -------------------------------------------------------------------------------- 1 | { 2 | "measuredSeries": [ 3 | { "id": 5, "title": "Gas", "unit": "m³" }, 4 | { "id": 4, "title": "Strom", "unit": "kWh" }, 5 | { "id": 3, "title": "Wasser", "unit": "m³" }, 6 | { "id": 2, "title": "Außentemparatur", "unit": "°C" }, 7 | { "id": 1, "title": "Sonnenstunden", "unit": "h" } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/src/shares/register.ts: -------------------------------------------------------------------------------- 1 | import { DI } from '@leanup/lib'; 2 | import { VersionApi } from '@leanup/openapi-demo'; 3 | 4 | import { MeasurementService } from '../services/measurements/service'; 5 | import { RouterService } from '../services/router/service'; 6 | import { StorageService } from '../services/storage/service'; 7 | 8 | // RouterService is an example as static class. 9 | DI.register('RouterService', RouterService); 10 | 11 | DI.register('StorageService', new StorageService()); 12 | DI.register('MeasurementService', new MeasurementService()); 13 | DI.register('VersionApi', new VersionApi()); 14 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/src/shares/routing.ts: -------------------------------------------------------------------------------- 1 | import { RouterService } from '../services/router/service'; 2 | 3 | RouterService.register([ 4 | { 5 | url: 'series', 6 | }, 7 | { 8 | url: 'series/create', 9 | }, 10 | { 11 | url: 'series/:id/edit', 12 | }, 13 | ]); 14 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/src/shares/utils.ts: -------------------------------------------------------------------------------- 1 | export function typeIt(json: Object): T { 2 | const typed = JSON.parse(JSON.stringify(json)) as { default: T }; 3 | return typed.default; 4 | } 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/src/types/images.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.jpeg'; 2 | declare module '*.jpg'; 3 | declare module '*.png'; 4 | declare module '*.gif'; 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/tests/e2e/ecosia.js: -------------------------------------------------------------------------------- 1 | describe(`Demo's`, () => { 2 | it('ecosia.org', (browser) => { 3 | browser 4 | .url('https://www.ecosia.org/') 5 | .waitForElementVisible('body') 6 | .assert.titleContains('Ecosia') 7 | .assert.visible('input[type=search]') 8 | .setValue('input[type=search]', 'nightwatch') 9 | .assert.visible('button[type=submit]') 10 | .click('button[type=submit]') 11 | .assert.containsText('.mainline-results', 'Nightwatch.js') 12 | .end(); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/tests/unit/openapi.test.ts: -------------------------------------------------------------------------------- 1 | import { expect } from 'chai'; 2 | 3 | import { IVersion, IVersionLabelEnum } from '@leanup/openapi-demo'; 4 | 5 | describe(`Test: OpenAPI`, () => { 6 | const label: IVersionLabelEnum = IVersionLabelEnum.Latest; 7 | const version: IVersion = { 8 | major: 1, 9 | minor: 2, 10 | patch: 3, 11 | text: '1.2.3', 12 | label: label, 13 | }; 14 | 15 | it('Test Version', () => { 16 | expect(version.text).be.equal('1.2.3'); 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/webpack.config.mjs: -------------------------------------------------------------------------------- 1 | import webpackConfig from '@leanup/stack-angular'; 2 | 3 | export default (env, argv) => { 4 | return webpackConfig(env, argv) 5 | } 6 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angular/windi.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'windicss/helpers'; 2 | 3 | export default defineConfig({ 4 | darkMode: 'media', 5 | extract: { 6 | include: ['src/**/*.{html,svelte,ts,tsx,vue}'], 7 | }, 8 | plugins: [require('windicss/plugin/filters')], 9 | }); 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/.eslintignore: -------------------------------------------------------------------------------- 1 | **/assets/** -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/.eslintrc'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/.mocharc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/.mocharc'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/.npmrc: -------------------------------------------------------------------------------- 1 | auto-install-peers=true 2 | shamefully-hoist=true 3 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/.prettierignore: -------------------------------------------------------------------------------- 1 | **/assets/** 2 | *.feature 3 | *.sass 4 | *.scss -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/.ts-prunerc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/nadeesha/ts-prune 2 | https: module.exports = { 3 | // ignore: '(arg-types|form/form|mermaid|src/index|stories).tsx?', 4 | // skip: 'autogen', 5 | }; 6 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-angularjs/babel.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/gitignore: -------------------------------------------------------------------------------- 1 | /.husky 2 | /.reports 3 | /dist 4 | /hint-report 5 | /node_modules 6 | *.log 7 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/nightwatch.conf.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/nightwatch.conf'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/nyc.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/nyc.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/postcss.config.js: -------------------------------------------------------------------------------- 1 | // ## Migrate from 1.1 to 1.2 2 | 3 | // ### Changes 4 | 5 | // 1. ⛔ `autoprefixer` was removed from stack, it is to handle in project scope 6 | // 2. ⛔ `cssnano` was removed from default template, it is to handle in project scope 7 | // 3. ⛔ `postcss.config.js` was removed from stack, it is to handle in project scope 8 | 9 | module.exports = { 10 | plugins: [ 11 | require('postcss-windicss')({ 12 | touchMode: 'insert-comment', 13 | }), 14 | ], 15 | }; 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/prettier.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/snowpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-angularjs/snowpack.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/src/angularjs.module.ts: -------------------------------------------------------------------------------- 1 | import * as angular from 'angular'; 2 | 3 | export const ANGULARJS_MODULE: angular.IModule = angular.module('app', []); 4 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/src/assets/logo.angularjs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leanupjs/leanup/2603659c93ceab96c643a05a9b8f836d17b60ea9/packages/create-leanup/templates/angularjs/src/assets/logo.angularjs.png -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/src/assets/logo.leanupjs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leanupjs/leanup/2603659c93ceab96c643a05a9b8f836d17b60ea9/packages/create-leanup/templates/angularjs/src/assets/logo.leanupjs.png -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/src/components/series/create/component.angularjs.ts: -------------------------------------------------------------------------------- 1 | import { ANGULARJS_MODULE } from '../../../angularjs.module'; 2 | import { CreateSerieController } from './controller'; 3 | 4 | ANGULARJS_MODULE.component('createSerie', { 5 | controller: ['$scope', CreateSerieController], 6 | template: ` 7 |
8 |

Create a new measuring serie

9 | 10 | 11 | 14 |
15 | `, 16 | }); 17 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/src/components/series/editor/component.angularjs.ts: -------------------------------------------------------------------------------- 1 | import { ANGULARJS_MODULE } from '../../../angularjs.module'; 2 | import { EditorSerieController } from './controller'; 3 | 4 | ANGULARJS_MODULE.component('editorSerie', { 5 | bindings: { 6 | editorForm: '<', 7 | }, 8 | controller: ['$scope', EditorSerieController], 9 | template: ` 10 |
11 | 12 | 13 |
14 | `, 15 | }); 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/src/components/series/editor/controller.ts: -------------------------------------------------------------------------------- 1 | import { AbstractController } from '@leanup/lib'; 2 | 3 | export class EditorSerieController extends AbstractController {} 4 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/src/components/series/editor/editor.form.ts: -------------------------------------------------------------------------------- 1 | import { FormControl, InputControl } from '@leanup/form'; 2 | 3 | export class EditorForm extends FormControl { 4 | public constructor(name: string) { 5 | super(name); 6 | this.addControl( 7 | new InputControl('title', { 8 | label: 'Title', 9 | value: '', 10 | }) 11 | ); 12 | this.addControl( 13 | new InputControl('unit', { 14 | label: 'Unit', 15 | value: '', 16 | }) 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/src/main.ts: -------------------------------------------------------------------------------- 1 | import './angularjs.main'; 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/src/models/framework.interface.ts: -------------------------------------------------------------------------------- 1 | export interface Framework { 2 | name: string; 3 | version: string; 4 | } 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/src/models/measured-item.model.ts: -------------------------------------------------------------------------------- 1 | export class MeasuredItemModel { 2 | private date: Date; 3 | private value: number; 4 | 5 | public constructor(date: Date, value: number) { 6 | this.date = date; 7 | this.value = value; 8 | } 9 | 10 | public getDate(): Date { 11 | return this.date; 12 | } 13 | public getValue(): number { 14 | return this.value; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/src/services/storage/mock.json: -------------------------------------------------------------------------------- 1 | { 2 | "measuredSeries": [ 3 | { "id": 5, "title": "Gas", "unit": "m³" }, 4 | { "id": 4, "title": "Strom", "unit": "kWh" }, 5 | { "id": 3, "title": "Wasser", "unit": "m³" }, 6 | { "id": 2, "title": "Außentemparatur", "unit": "°C" }, 7 | { "id": 1, "title": "Sonnenstunden", "unit": "h" } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/src/shares/register.ts: -------------------------------------------------------------------------------- 1 | import { DI } from '@leanup/lib'; 2 | import { VersionApi } from '@leanup/openapi-demo'; 3 | 4 | import { MeasurementService } from '../services/measurements/service'; 5 | import { RouterService } from '../services/router/service'; 6 | import { StorageService } from '../services/storage/service'; 7 | 8 | // RouterService is an example as static class. 9 | DI.register('RouterService', RouterService); 10 | 11 | DI.register('StorageService', new StorageService()); 12 | DI.register('MeasurementService', new MeasurementService()); 13 | DI.register('VersionApi', new VersionApi()); 14 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/src/shares/routing.ts: -------------------------------------------------------------------------------- 1 | import { RouterService } from '../services/router/service'; 2 | 3 | RouterService.register([ 4 | { 5 | url: 'series', 6 | }, 7 | { 8 | url: 'series/create', 9 | }, 10 | { 11 | url: 'series/:id/edit', 12 | }, 13 | ]); 14 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/src/shares/utils.ts: -------------------------------------------------------------------------------- 1 | export function typeIt(json: Object): T { 2 | const typed = JSON.parse(JSON.stringify(json)) as { default: T }; 3 | return typed.default; 4 | } 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/src/types/images.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.jpeg'; 2 | declare module '*.jpg'; 3 | declare module '*.png'; 4 | declare module '*.gif'; 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/tests/e2e/ecosia.js: -------------------------------------------------------------------------------- 1 | describe(`Demo's`, () => { 2 | it('ecosia.org', (browser) => { 3 | browser 4 | .url('https://www.ecosia.org/') 5 | .waitForElementVisible('body') 6 | .assert.titleContains('Ecosia') 7 | .assert.visible('input[type=search]') 8 | .setValue('input[type=search]', 'nightwatch') 9 | .assert.visible('button[type=submit]') 10 | .click('button[type=submit]') 11 | .assert.containsText('.mainline-results', 'Nightwatch.js') 12 | .end(); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/tests/unit/openapi.test.ts: -------------------------------------------------------------------------------- 1 | import { expect } from 'chai'; 2 | 3 | import { IVersion, IVersionLabelEnum } from '@leanup/openapi-demo'; 4 | 5 | describe(`Test: OpenAPI`, () => { 6 | const label: IVersionLabelEnum = IVersionLabelEnum.Latest; 7 | const version: IVersion = { 8 | major: 1, 9 | minor: 2, 10 | patch: 3, 11 | text: '1.2.3', 12 | label: label, 13 | }; 14 | 15 | it('Test Version', () => { 16 | expect(version.text).be.equal('1.2.3'); 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/vite.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-vite/vite.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-angularjs/webpack.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/angularjs/windi.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'windicss/helpers'; 2 | 3 | export default defineConfig({ 4 | darkMode: 'media', 5 | extract: { 6 | include: ['src/**/*.{html,svelte,ts,tsx,vue}'], 7 | }, 8 | plugins: [require('windicss/plugin/filters')], 9 | }); 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/.eslintignore: -------------------------------------------------------------------------------- 1 | **/assets/** -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/.eslintrc'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/.mocharc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/.mocharc'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/.npmrc: -------------------------------------------------------------------------------- 1 | auto-install-peers=true 2 | shamefully-hoist=true 3 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/.prettierignore: -------------------------------------------------------------------------------- 1 | **/assets/** 2 | *.feature 3 | *.sass 4 | *.scss -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/.ts-prunerc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/nadeesha/ts-prune 2 | https: module.exports = { 3 | // ignore: '(arg-types|form/form|mermaid|src/index|stories).tsx?', 4 | // skip: 'autogen', 5 | }; 6 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/gitignore: -------------------------------------------------------------------------------- 1 | /.husky 2 | /.reports 3 | /dist 4 | /hint-report 5 | /node_modules 6 | *.log 7 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/nightwatch.conf.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/nightwatch.conf'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/nyc.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/nyc.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/postcss.config.js: -------------------------------------------------------------------------------- 1 | // ## Migrate from 1.1 to 1.2 2 | 3 | // ### Changes 4 | 5 | // 1. ⛔ `autoprefixer` was removed from stack, it is to handle in project scope 6 | // 2. ⛔ `cssnano` was removed from default template, it is to handle in project scope 7 | // 3. ⛔ `postcss.config.js` was removed from stack, it is to handle in project scope 8 | 9 | module.exports = { 10 | plugins: [ 11 | require('postcss-windicss')({ 12 | touchMode: 'insert-comment', 13 | }), 14 | ], 15 | }; 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/prettier.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/src/assets/logo.aurelia.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leanupjs/leanup/2603659c93ceab96c643a05a9b8f836d17b60ea9/packages/create-leanup/templates/aurelia/src/assets/logo.aurelia.png -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/src/assets/logo.leanupjs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leanupjs/leanup/2603659c93ceab96c643a05a9b8f836d17b60ea9/packages/create-leanup/templates/aurelia/src/assets/logo.leanupjs.png -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/src/components/input/component.aurelia.html: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/src/components/input/component.aurelia.ts: -------------------------------------------------------------------------------- 1 | import { bindable, bindingMode } from 'aurelia-framework'; 2 | 3 | import { InputControl } from '@leanup/form'; 4 | 5 | export class AppInput { 6 | @bindable({ defaultBindingMode: bindingMode.twoWay }) 7 | public control!: InputControl; 8 | } 9 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/src/components/series/create/component.aurelia.html: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/src/components/series/create/component.aurelia.ts: -------------------------------------------------------------------------------- 1 | import { CreateSerieController } from './controller'; 2 | 3 | export class CreateSerie extends CreateSerieController {} 4 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/src/components/series/edit/component.aurelia.html: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/src/components/series/edit/component.aurelia.ts: -------------------------------------------------------------------------------- 1 | import { bindable, bindingMode } from 'aurelia-framework'; 2 | 3 | import { ResolvedRoute } from '../../app/controller'; 4 | import { EditSerieController } from '../edit/controller'; 5 | 6 | export class EditSerie extends EditSerieController { 7 | @bindable({ defaultBindingMode: bindingMode.twoWay }) 8 | public resolvedRoute!: ResolvedRoute; 9 | 10 | public bind(): void { 11 | this.changeMeasuredSerie(parseInt(this.resolvedRoute.data?.id || '0')); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/src/components/series/editor/component.aurelia.html: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/src/components/series/editor/component.aurelia.ts: -------------------------------------------------------------------------------- 1 | import { bindable, bindingMode } from 'aurelia-framework'; 2 | 3 | import { EditorSerieController } from './controller'; 4 | import { EditorForm } from './editor.form'; 5 | 6 | export class EditorSerie extends EditorSerieController { 7 | @bindable({ defaultBindingMode: bindingMode.twoWay }) 8 | public editorForm!: EditorForm; 9 | } 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/src/components/series/editor/controller.ts: -------------------------------------------------------------------------------- 1 | import { AbstractController } from '@leanup/lib'; 2 | 3 | export class EditorSerieController extends AbstractController {} 4 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/src/components/series/editor/editor.form.ts: -------------------------------------------------------------------------------- 1 | import { FormControl, InputControl } from '@leanup/form'; 2 | 3 | export class EditorForm extends FormControl { 4 | public constructor(name: string) { 5 | super(name); 6 | this.addControl( 7 | new InputControl('title', { 8 | label: 'Title', 9 | value: '', 10 | }) 11 | ); 12 | this.addControl( 13 | new InputControl('unit', { 14 | label: 'Unit', 15 | value: '', 16 | }) 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/src/components/series/list/component.aurelia.ts: -------------------------------------------------------------------------------- 1 | import { ListSerieController } from './controller'; 2 | 3 | export class ListSerie extends ListSerieController {} 4 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/src/main.ts: -------------------------------------------------------------------------------- 1 | import './aurelia.main'; 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/src/models/framework.interface.ts: -------------------------------------------------------------------------------- 1 | export interface Framework { 2 | name: string; 3 | version: string; 4 | } 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/src/models/measured-item.model.ts: -------------------------------------------------------------------------------- 1 | export class MeasuredItemModel { 2 | private date: Date; 3 | private value: number; 4 | 5 | public constructor(date: Date, value: number) { 6 | this.date = date; 7 | this.value = value; 8 | } 9 | 10 | public getDate(): Date { 11 | return this.date; 12 | } 13 | public getValue(): number { 14 | return this.value; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/src/services/storage/mock.json: -------------------------------------------------------------------------------- 1 | { 2 | "measuredSeries": [ 3 | { "id": 5, "title": "Gas", "unit": "m³" }, 4 | { "id": 4, "title": "Strom", "unit": "kWh" }, 5 | { "id": 3, "title": "Wasser", "unit": "m³" }, 6 | { "id": 2, "title": "Außentemparatur", "unit": "°C" }, 7 | { "id": 1, "title": "Sonnenstunden", "unit": "h" } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/src/shares/register.ts: -------------------------------------------------------------------------------- 1 | import { DI } from '@leanup/lib'; 2 | import { VersionApi } from '@leanup/openapi-demo'; 3 | 4 | import { MeasurementService } from '../services/measurements/service'; 5 | import { RouterService } from '../services/router/service'; 6 | import { StorageService } from '../services/storage/service'; 7 | 8 | // RouterService is an example as static class. 9 | DI.register('RouterService', RouterService); 10 | 11 | DI.register('StorageService', new StorageService()); 12 | DI.register('MeasurementService', new MeasurementService()); 13 | DI.register('VersionApi', new VersionApi()); 14 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/src/shares/routing.ts: -------------------------------------------------------------------------------- 1 | import { RouterService } from '../services/router/service'; 2 | 3 | RouterService.register([ 4 | { 5 | url: 'series', 6 | }, 7 | { 8 | url: 'series/create', 9 | }, 10 | { 11 | url: 'series/:id/edit', 12 | }, 13 | ]); 14 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/src/shares/utils.ts: -------------------------------------------------------------------------------- 1 | export function typeIt(json: Object): T { 2 | const typed = JSON.parse(JSON.stringify(json)) as { default: T }; 3 | return typed.default; 4 | } 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/src/types/images.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.jpeg'; 2 | declare module '*.jpg'; 3 | declare module '*.png'; 4 | declare module '*.gif'; 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/tests/e2e/ecosia.js: -------------------------------------------------------------------------------- 1 | describe(`Demo's`, () => { 2 | it('ecosia.org', (browser) => { 3 | browser 4 | .url('https://www.ecosia.org/') 5 | .waitForElementVisible('body') 6 | .assert.titleContains('Ecosia') 7 | .assert.visible('input[type=search]') 8 | .setValue('input[type=search]', 'nightwatch') 9 | .assert.visible('button[type=submit]') 10 | .click('button[type=submit]') 11 | .assert.containsText('.mainline-results', 'Nightwatch.js') 12 | .end(); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/tests/unit/openapi.test.ts: -------------------------------------------------------------------------------- 1 | import { expect } from 'chai'; 2 | 3 | import { IVersion, IVersionLabelEnum } from '@leanup/openapi-demo'; 4 | 5 | describe(`Test: OpenAPI`, () => { 6 | const label: IVersionLabelEnum = IVersionLabelEnum.Latest; 7 | const version: IVersion = { 8 | major: 1, 9 | minor: 2, 10 | patch: 3, 11 | text: '1.2.3', 12 | label: label, 13 | }; 14 | 15 | it('Test Version', () => { 16 | expect(version.text).be.equal('1.2.3'); 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-aurelia/webpack.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/aurelia/windi.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'windicss/helpers'; 2 | 3 | export default defineConfig({ 4 | darkMode: 'media', 5 | extract: { 6 | include: ['src/**/*.{html,svelte,ts,tsx,vue}'], 7 | }, 8 | plugins: [require('windicss/plugin/filters')], 9 | }); 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/.eslintignore: -------------------------------------------------------------------------------- 1 | **/assets/** -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/.eslintrc'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/.mocharc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/.mocharc'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/.npmrc: -------------------------------------------------------------------------------- 1 | auto-install-peers=true 2 | shamefully-hoist=true 3 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/.prettierignore: -------------------------------------------------------------------------------- 1 | **/assets/** 2 | *.feature 3 | *.sass 4 | *.scss -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/.ts-prunerc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/nadeesha/ts-prune 2 | https: module.exports = { 3 | // ignore: '(arg-types|form/form|mermaid|src/index|stories).tsx?', 4 | // skip: 'autogen', 5 | }; 6 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-inferno/babel.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/gitignore: -------------------------------------------------------------------------------- 1 | /.husky 2 | /.reports 3 | /dist 4 | /hint-report 5 | /node_modules 6 | *.log 7 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/nightwatch.conf.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/nightwatch.conf'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/nyc.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/nyc.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/postcss.config.js: -------------------------------------------------------------------------------- 1 | // ## Migrate from 1.1 to 1.2 2 | 3 | // ### Changes 4 | 5 | // 1. ⛔ `autoprefixer` was removed from stack, it is to handle in project scope 6 | // 2. ⛔ `cssnano` was removed from default template, it is to handle in project scope 7 | // 3. ⛔ `postcss.config.js` was removed from stack, it is to handle in project scope 8 | 9 | module.exports = { 10 | plugins: [ 11 | require('postcss-windicss')({ 12 | touchMode: 'insert-comment', 13 | }), 14 | ], 15 | }; 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/prettier.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/snowpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-inferno/snowpack.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/src/assets/logo.inferno.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leanupjs/leanup/2603659c93ceab96c643a05a9b8f836d17b60ea9/packages/create-leanup/templates/inferno/src/assets/logo.inferno.png -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/src/assets/logo.leanupjs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leanupjs/leanup/2603659c93ceab96c643a05a9b8f836d17b60ea9/packages/create-leanup/templates/inferno/src/assets/logo.leanupjs.png -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/src/components/series/editor/controller.ts: -------------------------------------------------------------------------------- 1 | import { AbstractController } from '@leanup/lib'; 2 | 3 | export class EditorSerieController extends AbstractController {} 4 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/src/components/series/editor/editor.form.ts: -------------------------------------------------------------------------------- 1 | import { FormControl, InputControl } from '@leanup/form'; 2 | 3 | export class EditorForm extends FormControl { 4 | public constructor(name: string) { 5 | super(name); 6 | this.addControl( 7 | new InputControl('title', { 8 | label: 'Title', 9 | value: '', 10 | }) 11 | ); 12 | this.addControl( 13 | new InputControl('unit', { 14 | label: 'Unit', 15 | value: '', 16 | }) 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/src/inferno.main.tsx: -------------------------------------------------------------------------------- 1 | import { render } from 'inferno'; 2 | import * as PACKAGE_JSON from '../node_modules/inferno/package.json'; 3 | 4 | import { run } from './app.run'; 5 | import { AppComponent } from './components/app/component.inferno'; 6 | import { typeIt } from './shares/utils'; 7 | 8 | const TYPED_PACKAGE_JSON = typeIt<{ version: string }>(PACKAGE_JSON); 9 | 10 | run('Inferno', TYPED_PACKAGE_JSON.version, () => { 11 | const htmlDivElement: HTMLDivElement | null = document.querySelector('div#inferno'); 12 | if (htmlDivElement instanceof HTMLDivElement) { 13 | render(, htmlDivElement); 14 | } 15 | }); 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/src/main.ts: -------------------------------------------------------------------------------- 1 | import './inferno.main'; 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/src/models/framework.interface.ts: -------------------------------------------------------------------------------- 1 | export interface Framework { 2 | name: string; 3 | version: string; 4 | } 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/src/models/measured-item.model.ts: -------------------------------------------------------------------------------- 1 | export class MeasuredItemModel { 2 | private date: Date; 3 | private value: number; 4 | 5 | public constructor(date: Date, value: number) { 6 | this.date = date; 7 | this.value = value; 8 | } 9 | 10 | public getDate(): Date { 11 | return this.date; 12 | } 13 | public getValue(): number { 14 | return this.value; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/src/services/storage/mock.json: -------------------------------------------------------------------------------- 1 | { 2 | "measuredSeries": [ 3 | { "id": 5, "title": "Gas", "unit": "m³" }, 4 | { "id": 4, "title": "Strom", "unit": "kWh" }, 5 | { "id": 3, "title": "Wasser", "unit": "m³" }, 6 | { "id": 2, "title": "Außentemparatur", "unit": "°C" }, 7 | { "id": 1, "title": "Sonnenstunden", "unit": "h" } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/src/shares/register.ts: -------------------------------------------------------------------------------- 1 | import { DI } from '@leanup/lib'; 2 | import { VersionApi } from '@leanup/openapi-demo'; 3 | 4 | import { MeasurementService } from '../services/measurements/service'; 5 | import { RouterService } from '../services/router/service'; 6 | import { StorageService } from '../services/storage/service'; 7 | 8 | // RouterService is an example as static class. 9 | DI.register('RouterService', RouterService); 10 | 11 | DI.register('StorageService', new StorageService()); 12 | DI.register('MeasurementService', new MeasurementService()); 13 | DI.register('VersionApi', new VersionApi()); 14 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/src/shares/routing.ts: -------------------------------------------------------------------------------- 1 | import { RouterService } from '../services/router/service'; 2 | 3 | RouterService.register([ 4 | { 5 | url: 'series', 6 | }, 7 | { 8 | url: 'series/create', 9 | }, 10 | { 11 | url: 'series/:id/edit', 12 | }, 13 | ]); 14 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/src/shares/utils.ts: -------------------------------------------------------------------------------- 1 | export function typeIt(json: Object): T { 2 | const typed = JSON.parse(JSON.stringify(json)) as { default: T }; 3 | return typed.default; 4 | } 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/src/types/images.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.jpeg'; 2 | declare module '*.jpg'; 3 | declare module '*.png'; 4 | declare module '*.gif'; 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/tests/e2e/ecosia.js: -------------------------------------------------------------------------------- 1 | describe(`Demo's`, () => { 2 | it('ecosia.org', (browser) => { 3 | browser 4 | .url('https://www.ecosia.org/') 5 | .waitForElementVisible('body') 6 | .assert.titleContains('Ecosia') 7 | .assert.visible('input[type=search]') 8 | .setValue('input[type=search]', 'nightwatch') 9 | .assert.visible('button[type=submit]') 10 | .click('button[type=submit]') 11 | .assert.containsText('.mainline-results', 'Nightwatch.js') 12 | .end(); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/tests/unit/openapi.test.ts: -------------------------------------------------------------------------------- 1 | import { expect } from 'chai'; 2 | 3 | import { IVersion, IVersionLabelEnum } from '@leanup/openapi-demo'; 4 | 5 | describe(`Test: OpenAPI`, () => { 6 | const label: IVersionLabelEnum = IVersionLabelEnum.Latest; 7 | const version: IVersion = { 8 | major: 1, 9 | minor: 2, 10 | patch: 3, 11 | text: '1.2.3', 12 | label: label, 13 | }; 14 | 15 | it('Test Version', () => { 16 | expect(version.text).be.equal('1.2.3'); 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/vite.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-vite/vite.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-inferno/webpack.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/inferno/windi.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'windicss/helpers'; 2 | 3 | export default defineConfig({ 4 | darkMode: 'media', 5 | extract: { 6 | include: ['src/**/*.{html,svelte,ts,tsx,vue}'], 7 | }, 8 | plugins: [require('windicss/plugin/filters')], 9 | }); 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/.eslintignore: -------------------------------------------------------------------------------- 1 | **/assets/** -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/.eslintrc'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/.mocharc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/.mocharc'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/.npmrc: -------------------------------------------------------------------------------- 1 | auto-install-peers=true 2 | shamefully-hoist=true 3 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/.prettierignore: -------------------------------------------------------------------------------- 1 | **/assets/** 2 | *.feature 3 | *.sass 4 | *.scss -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/.ts-prunerc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/nadeesha/ts-prune 2 | https: module.exports = { 3 | // ignore: '(arg-types|form/form|mermaid|src/index|stories).tsx?', 4 | // skip: 'autogen', 5 | }; 6 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/gitignore: -------------------------------------------------------------------------------- 1 | /.husky 2 | /.reports 3 | /dist 4 | /hint-report 5 | /node_modules 6 | *.log 7 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/nightwatch.conf.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/nightwatch.conf'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/nyc.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/nyc.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/postcss.config.js: -------------------------------------------------------------------------------- 1 | // ## Migrate from 1.1 to 1.2 2 | 3 | // ### Changes 4 | 5 | // 1. ⛔ `autoprefixer` was removed from stack, it is to handle in project scope 6 | // 2. ⛔ `cssnano` was removed from default template, it is to handle in project scope 7 | // 3. ⛔ `postcss.config.js` was removed from stack, it is to handle in project scope 8 | 9 | module.exports = { 10 | plugins: [ 11 | require('postcss-windicss')({ 12 | touchMode: 'insert-comment', 13 | }), 14 | ], 15 | }; 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/prettier.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/snowpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-snowpack/snowpack.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/src/assets/logo.leanupjs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leanupjs/leanup/2603659c93ceab96c643a05a9b8f836d17b60ea9/packages/create-leanup/templates/lit-element/src/assets/logo.leanupjs.png -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/src/assets/logo.polymer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leanupjs/leanup/2603659c93ceab96c643a05a9b8f836d17b60ea9/packages/create-leanup/templates/lit-element/src/assets/logo.polymer.png -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/src/components/component.lit-element.ts: -------------------------------------------------------------------------------- 1 | import { LitElement } from 'lit-element'; 2 | 3 | export class LitElementComponent extends LitElement { 4 | public createRenderRoot(): LitElementComponent { 5 | return this; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/src/components/series/editor/controller.ts: -------------------------------------------------------------------------------- 1 | import { AbstractController } from '@leanup/lib'; 2 | 3 | export class EditorSerieController extends AbstractController {} 4 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/src/components/series/editor/editor.form.ts: -------------------------------------------------------------------------------- 1 | import { FormControl, InputControl } from '@leanup/form'; 2 | 3 | export class EditorForm extends FormControl { 4 | public constructor(name: string) { 5 | super(name); 6 | this.addControl( 7 | new InputControl('title', { 8 | label: 'Title', 9 | value: '', 10 | }) 11 | ); 12 | this.addControl( 13 | new InputControl('unit', { 14 | label: 'Unit', 15 | value: '', 16 | }) 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/src/lit-element.main.ts: -------------------------------------------------------------------------------- 1 | import './components/app/component.lit-element'; 2 | 3 | import * as PACKAGE_JSON from '../node_modules/lit-element/package.json'; 4 | 5 | import { run } from './app.run'; 6 | import { typeIt } from './shares/utils'; 7 | 8 | const TYPED_PACKAGE_JSON = typeIt<{ version: string }>(PACKAGE_JSON); 9 | 10 | run('lit-element', TYPED_PACKAGE_JSON.version, () => { 11 | // Render the template to the document 12 | const htmlDivElement: HTMLDivElement | null = document.querySelector('div#lit-element'); 13 | if (htmlDivElement instanceof HTMLDivElement) { 14 | htmlDivElement.innerHTML = ''; 15 | } 16 | }); 17 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/src/main.ts: -------------------------------------------------------------------------------- 1 | import './lit-element.main'; 2 | 3 | // import './preact.main'; 4 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/src/models/framework.interface.ts: -------------------------------------------------------------------------------- 1 | export interface Framework { 2 | name: string; 3 | version: string; 4 | } 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/src/models/measured-item.model.ts: -------------------------------------------------------------------------------- 1 | export class MeasuredItemModel { 2 | private date: Date; 3 | private value: number; 4 | 5 | public constructor(date: Date, value: number) { 6 | this.date = date; 7 | this.value = value; 8 | } 9 | 10 | public getDate(): Date { 11 | return this.date; 12 | } 13 | public getValue(): number { 14 | return this.value; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/src/services/storage/mock.json: -------------------------------------------------------------------------------- 1 | { 2 | "measuredSeries": [ 3 | { "id": 5, "title": "Gas", "unit": "m³" }, 4 | { "id": 4, "title": "Strom", "unit": "kWh" }, 5 | { "id": 3, "title": "Wasser", "unit": "m³" }, 6 | { "id": 2, "title": "Außentemparatur", "unit": "°C" }, 7 | { "id": 1, "title": "Sonnenstunden", "unit": "h" } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/src/shares/register.ts: -------------------------------------------------------------------------------- 1 | import { DI } from '@leanup/lib'; 2 | import { VersionApi } from '@leanup/openapi-demo'; 3 | 4 | import { MeasurementService } from '../services/measurements/service'; 5 | import { RouterService } from '../services/router/service'; 6 | import { StorageService } from '../services/storage/service'; 7 | 8 | // RouterService is an example as static class. 9 | DI.register('RouterService', RouterService); 10 | 11 | DI.register('StorageService', new StorageService()); 12 | DI.register('MeasurementService', new MeasurementService()); 13 | DI.register('VersionApi', new VersionApi()); 14 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/src/shares/routing.ts: -------------------------------------------------------------------------------- 1 | import { RouterService } from '../services/router/service'; 2 | 3 | RouterService.register([ 4 | { 5 | url: 'series', 6 | }, 7 | { 8 | url: 'series/create', 9 | }, 10 | { 11 | url: 'series/:id/edit', 12 | }, 13 | ]); 14 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/src/shares/utils.ts: -------------------------------------------------------------------------------- 1 | export function typeIt(json: Object): T { 2 | const typed = JSON.parse(JSON.stringify(json)) as { default: T }; 3 | return typed.default; 4 | } 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/src/types/images.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.jpeg'; 2 | declare module '*.jpg'; 3 | declare module '*.png'; 4 | declare module '*.gif'; 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/tests/e2e/ecosia.js: -------------------------------------------------------------------------------- 1 | describe(`Demo's`, () => { 2 | it('ecosia.org', (browser) => { 3 | browser 4 | .url('https://www.ecosia.org/') 5 | .waitForElementVisible('body') 6 | .assert.titleContains('Ecosia') 7 | .assert.visible('input[type=search]') 8 | .setValue('input[type=search]', 'nightwatch') 9 | .assert.visible('button[type=submit]') 10 | .click('button[type=submit]') 11 | .assert.containsText('.mainline-results', 'Nightwatch.js') 12 | .end(); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/tests/unit/openapi.test.ts: -------------------------------------------------------------------------------- 1 | import { expect } from 'chai'; 2 | 3 | import { IVersion, IVersionLabelEnum } from '@leanup/openapi-demo'; 4 | 5 | describe(`Test: OpenAPI`, () => { 6 | const label: IVersionLabelEnum = IVersionLabelEnum.Latest; 7 | const version: IVersion = { 8 | major: 1, 9 | minor: 2, 10 | patch: 3, 11 | text: '1.2.3', 12 | label: label, 13 | }; 14 | 15 | it('Test Version', () => { 16 | expect(version.text).be.equal('1.2.3'); 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/vite.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-vite/vite.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-webpack'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/lit-element/windi.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'windicss/helpers'; 2 | 3 | export default defineConfig({ 4 | darkMode: 'media', 5 | extract: { 6 | include: ['src/**/*.{html,svelte,ts,tsx,vue}'], 7 | }, 8 | plugins: [require('windicss/plugin/filters')], 9 | }); 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/.eslintignore: -------------------------------------------------------------------------------- 1 | **/assets/** -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/.eslintrc'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/.mocharc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/.mocharc'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/.npmrc: -------------------------------------------------------------------------------- 1 | auto-install-peers=true 2 | shamefully-hoist=true 3 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/.prettierignore: -------------------------------------------------------------------------------- 1 | **/assets/** 2 | *.feature 3 | *.sass 4 | *.scss -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/.ts-prunerc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/nadeesha/ts-prune 2 | https: module.exports = { 3 | // ignore: '(arg-types|form/form|mermaid|src/index|stories).tsx?', 4 | // skip: 'autogen', 5 | }; 6 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/gitignore: -------------------------------------------------------------------------------- 1 | /.husky 2 | /.reports 3 | /dist 4 | /hint-report 5 | /node_modules 6 | *.log 7 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/nightwatch.conf.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/nightwatch.conf'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/nyc.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/nyc.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/postcss.config.js: -------------------------------------------------------------------------------- 1 | // ## Migrate from 1.1 to 1.2 2 | 3 | // ### Changes 4 | 5 | // 1. ⛔ `autoprefixer` was removed from stack, it is to handle in project scope 6 | // 2. ⛔ `cssnano` was removed from default template, it is to handle in project scope 7 | // 3. ⛔ `postcss.config.js` was removed from stack, it is to handle in project scope 8 | 9 | module.exports = { 10 | plugins: [ 11 | require('postcss-windicss')({ 12 | touchMode: 'insert-comment', 13 | }), 14 | ], 15 | }; 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/prettier.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/snowpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-preact/snowpack.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/src/assets/logo.leanupjs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leanupjs/leanup/2603659c93ceab96c643a05a9b8f836d17b60ea9/packages/create-leanup/templates/preact/src/assets/logo.leanupjs.png -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/src/assets/logo.preact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leanupjs/leanup/2603659c93ceab96c643a05a9b8f836d17b60ea9/packages/create-leanup/templates/preact/src/assets/logo.preact.png -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/src/components/series/editor/controller.ts: -------------------------------------------------------------------------------- 1 | import { AbstractController } from '@leanup/lib'; 2 | 3 | export class EditorSerieController extends AbstractController {} 4 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/src/components/series/editor/editor.form.ts: -------------------------------------------------------------------------------- 1 | import { FormControl, InputControl } from '@leanup/form'; 2 | 3 | export class EditorForm extends FormControl { 4 | public constructor(name: string) { 5 | super(name); 6 | this.addControl( 7 | new InputControl('title', { 8 | label: 'Title', 9 | value: '', 10 | }) 11 | ); 12 | this.addControl( 13 | new InputControl('unit', { 14 | label: 'Unit', 15 | value: '', 16 | }) 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/src/main.ts: -------------------------------------------------------------------------------- 1 | import './preact.main'; 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/src/models/framework.interface.ts: -------------------------------------------------------------------------------- 1 | export interface Framework { 2 | name: string; 3 | version: string; 4 | } 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/src/models/measured-item.model.ts: -------------------------------------------------------------------------------- 1 | export class MeasuredItemModel { 2 | private date: Date; 3 | private value: number; 4 | 5 | public constructor(date: Date, value: number) { 6 | this.date = date; 7 | this.value = value; 8 | } 9 | 10 | public getDate(): Date { 11 | return this.date; 12 | } 13 | public getValue(): number { 14 | return this.value; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/src/preact.main.tsx: -------------------------------------------------------------------------------- 1 | import 'preact/debug'; 2 | 3 | import { render } from 'preact'; 4 | import * as PACKAGE_JSON from 'preact/package.json'; 5 | 6 | import { run } from './app.run'; 7 | import { AppComponent } from './components/app/component.preact'; 8 | import { typeIt } from './shares/utils'; 9 | 10 | const TYPED_PACKAGE_JSON = typeIt<{ version: string }>(PACKAGE_JSON); 11 | 12 | run('Preact', TYPED_PACKAGE_JSON.version, () => { 13 | const htmlDivElement: HTMLDivElement | null = document.querySelector('div#preact'); 14 | if (htmlDivElement instanceof HTMLDivElement) { 15 | render(, htmlDivElement); 16 | } 17 | }); 18 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/src/services/storage/mock.json: -------------------------------------------------------------------------------- 1 | { 2 | "measuredSeries": [ 3 | { "id": 5, "title": "Gas", "unit": "m³" }, 4 | { "id": 4, "title": "Strom", "unit": "kWh" }, 5 | { "id": 3, "title": "Wasser", "unit": "m³" }, 6 | { "id": 2, "title": "Außentemparatur", "unit": "°C" }, 7 | { "id": 1, "title": "Sonnenstunden", "unit": "h" } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/src/shares/register.ts: -------------------------------------------------------------------------------- 1 | import { DI } from '@leanup/lib'; 2 | import { VersionApi } from '@leanup/openapi-demo'; 3 | 4 | import { MeasurementService } from '../services/measurements/service'; 5 | import { RouterService } from '../services/router/service'; 6 | import { StorageService } from '../services/storage/service'; 7 | 8 | // RouterService is an example as static class. 9 | DI.register('RouterService', RouterService); 10 | 11 | DI.register('StorageService', new StorageService()); 12 | DI.register('MeasurementService', new MeasurementService()); 13 | DI.register('VersionApi', new VersionApi()); 14 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/src/shares/routing.ts: -------------------------------------------------------------------------------- 1 | import { RouterService } from '../services/router/service'; 2 | 3 | RouterService.register([ 4 | { 5 | url: 'series', 6 | }, 7 | { 8 | url: 'series/create', 9 | }, 10 | { 11 | url: 'series/:id/edit', 12 | }, 13 | ]); 14 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/src/shares/utils.ts: -------------------------------------------------------------------------------- 1 | export function typeIt(json: Object): T { 2 | const typed = JSON.parse(JSON.stringify(json)) as { default: T }; 3 | return typed.default; 4 | } 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/src/types/images.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.jpeg'; 2 | declare module '*.jpg'; 3 | declare module '*.png'; 4 | declare module '*.gif'; 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/tests/e2e/ecosia.js: -------------------------------------------------------------------------------- 1 | describe(`Demo's`, () => { 2 | it('ecosia.org', (browser) => { 3 | browser 4 | .url('https://www.ecosia.org/') 5 | .waitForElementVisible('body') 6 | .assert.titleContains('Ecosia') 7 | .assert.visible('input[type=search]') 8 | .setValue('input[type=search]', 'nightwatch') 9 | .assert.visible('button[type=submit]') 10 | .click('button[type=submit]') 11 | .assert.containsText('.mainline-results', 'Nightwatch.js') 12 | .end(); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/tests/unit/openapi.test.ts: -------------------------------------------------------------------------------- 1 | import { expect } from 'chai'; 2 | 3 | import { IVersion, IVersionLabelEnum } from '@leanup/openapi-demo'; 4 | 5 | describe(`Test: OpenAPI`, () => { 6 | const label: IVersionLabelEnum = IVersionLabelEnum.Latest; 7 | const version: IVersion = { 8 | major: 1, 9 | minor: 2, 10 | patch: 3, 11 | text: '1.2.3', 12 | label: label, 13 | }; 14 | 15 | it('Test Version', () => { 16 | expect(version.text).be.equal('1.2.3'); 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/vite.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-preact/vite.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-preact/webpack.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/preact/windi.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'windicss/helpers'; 2 | 3 | export default defineConfig({ 4 | darkMode: 'media', 5 | extract: { 6 | include: ['src/**/*.{html,svelte,ts,tsx,vue}'], 7 | }, 8 | plugins: [require('windicss/plugin/filters')], 9 | }); 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/.eslintignore: -------------------------------------------------------------------------------- 1 | **/assets/** -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/.eslintrc'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/.mocharc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/.mocharc'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/.npmrc: -------------------------------------------------------------------------------- 1 | auto-install-peers=true 2 | shamefully-hoist=true 3 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/.prettierignore: -------------------------------------------------------------------------------- 1 | **/assets/** 2 | *.feature 3 | *.sass 4 | *.scss -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/.ts-prunerc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/nadeesha/ts-prune 2 | https: module.exports = { 3 | // ignore: '(arg-types|form/form|mermaid|src/index|stories).tsx?', 4 | // skip: 'autogen', 5 | }; 6 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/gitignore: -------------------------------------------------------------------------------- 1 | /.husky 2 | /.reports 3 | /dist 4 | /hint-report 5 | /node_modules 6 | *.log 7 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/nightwatch.conf.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/nightwatch.conf'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/nyc.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/nyc.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/postcss.config.js: -------------------------------------------------------------------------------- 1 | // ## Migrate from 1.1 to 1.2 2 | 3 | // ### Changes 4 | 5 | // 1. ⛔ `autoprefixer` was removed from stack, it is to handle in project scope 6 | // 2. ⛔ `cssnano` was removed from default template, it is to handle in project scope 7 | // 3. ⛔ `postcss.config.js` was removed from stack, it is to handle in project scope 8 | 9 | module.exports = { 10 | plugins: [ 11 | require('postcss-windicss')({ 12 | touchMode: 'insert-comment', 13 | }), 14 | ], 15 | }; 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/prettier.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/snowpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-snowpack/snowpack.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/src/assets/logo.leanupjs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leanupjs/leanup/2603659c93ceab96c643a05a9b8f836d17b60ea9/packages/create-leanup/templates/react/src/assets/logo.leanupjs.png -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/src/assets/logo.react.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leanupjs/leanup/2603659c93ceab96c643a05a9b8f836d17b60ea9/packages/create-leanup/templates/react/src/assets/logo.react.png -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/src/components/series/editor/controller.ts: -------------------------------------------------------------------------------- 1 | import { AbstractController } from '@leanup/lib'; 2 | 3 | export class EditorSerieController extends AbstractController {} 4 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/src/components/series/editor/editor.form.ts: -------------------------------------------------------------------------------- 1 | import { FormControl, InputControl } from '@leanup/form'; 2 | 3 | export class EditorForm extends FormControl { 4 | public constructor(name: string) { 5 | super(name); 6 | this.addControl( 7 | new InputControl('title', { 8 | label: 'Title', 9 | value: '', 10 | }) 11 | ); 12 | this.addControl( 13 | new InputControl('unit', { 14 | label: 'Unit', 15 | value: '', 16 | }) 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/src/main.ts: -------------------------------------------------------------------------------- 1 | import './react.main'; 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/src/models/framework.interface.ts: -------------------------------------------------------------------------------- 1 | export interface Framework { 2 | name: string; 3 | version: string; 4 | } 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/src/models/measured-item.model.ts: -------------------------------------------------------------------------------- 1 | export class MeasuredItemModel { 2 | private date: Date; 3 | private value: number; 4 | 5 | public constructor(date: Date, value: number) { 6 | this.date = date; 7 | this.value = value; 8 | } 9 | 10 | public getDate(): Date { 11 | return this.date; 12 | } 13 | public getValue(): number { 14 | return this.value; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/src/react.main.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { createRoot } from 'react-dom/client'; 3 | import * as PACKAGE_JSON from 'react/package.json'; 4 | 5 | import { run } from './app.run'; 6 | import { AppComponent } from './components/app/component.react'; 7 | import { typeIt } from './shares/utils'; 8 | 9 | const TYPED_PACKAGE_JSON = typeIt<{ version: string }>(PACKAGE_JSON); 10 | 11 | run('React', TYPED_PACKAGE_JSON.version, () => { 12 | const htmlDivElement: HTMLDivElement | null = document.querySelector('div#react'); 13 | if (htmlDivElement instanceof HTMLDivElement) { 14 | const root = createRoot(htmlDivElement); 15 | root.render(); 16 | } 17 | }); 18 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/src/services/storage/mock.json: -------------------------------------------------------------------------------- 1 | { 2 | "measuredSeries": [ 3 | { "id": 5, "title": "Gas", "unit": "m³" }, 4 | { "id": 4, "title": "Strom", "unit": "kWh" }, 5 | { "id": 3, "title": "Wasser", "unit": "m³" }, 6 | { "id": 2, "title": "Außentemparatur", "unit": "°C" }, 7 | { "id": 1, "title": "Sonnenstunden", "unit": "h" } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/src/shares/register.ts: -------------------------------------------------------------------------------- 1 | import { DI } from '@leanup/lib'; 2 | import { VersionApi } from '@leanup/openapi-demo'; 3 | 4 | import { MeasurementService } from '../services/measurements/service'; 5 | import { RouterService } from '../services/router/service'; 6 | import { StorageService } from '../services/storage/service'; 7 | 8 | // RouterService is an example as static class. 9 | DI.register('RouterService', RouterService); 10 | 11 | DI.register('StorageService', new StorageService()); 12 | DI.register('MeasurementService', new MeasurementService()); 13 | DI.register('VersionApi', new VersionApi()); 14 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/src/shares/routing.ts: -------------------------------------------------------------------------------- 1 | import { RouterService } from '../services/router/service'; 2 | 3 | RouterService.register([ 4 | { 5 | url: 'series', 6 | }, 7 | { 8 | url: 'series/create', 9 | }, 10 | { 11 | url: 'series/:id/edit', 12 | }, 13 | ]); 14 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/src/shares/utils.ts: -------------------------------------------------------------------------------- 1 | export function typeIt(json: Object): T { 2 | const typed = JSON.parse(JSON.stringify(json)) as { default: T }; 3 | return typed.default; 4 | } 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/src/types/images.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.jpeg'; 2 | declare module '*.jpg'; 3 | declare module '*.png'; 4 | declare module '*.gif'; 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/tests/e2e/ecosia.js: -------------------------------------------------------------------------------- 1 | describe(`Demo's`, () => { 2 | it('ecosia.org', (browser) => { 3 | browser 4 | .url('https://www.ecosia.org/') 5 | .waitForElementVisible('body') 6 | .assert.titleContains('Ecosia') 7 | .assert.visible('input[type=search]') 8 | .setValue('input[type=search]', 'nightwatch') 9 | .assert.visible('button[type=submit]') 10 | .click('button[type=submit]') 11 | .assert.containsText('.mainline-results', 'Nightwatch.js') 12 | .end(); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/tests/unit/openapi.test.ts: -------------------------------------------------------------------------------- 1 | import { expect } from 'chai'; 2 | 3 | import { IVersion, IVersionLabelEnum } from '@leanup/openapi-demo'; 4 | 5 | describe(`Test: OpenAPI`, () => { 6 | const label: IVersionLabelEnum = IVersionLabelEnum.Latest; 7 | const version: IVersion = { 8 | major: 1, 9 | minor: 2, 10 | patch: 3, 11 | text: '1.2.3', 12 | label: label, 13 | }; 14 | 15 | it('Test Version', () => { 16 | expect(version.text).be.equal('1.2.3'); 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/vite.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-vite/vite.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-react/webpack.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/react/windi.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'windicss/helpers'; 2 | 3 | export default defineConfig({ 4 | darkMode: 'media', 5 | extract: { 6 | include: ['src/**/*.{html,svelte,ts,tsx,vue}'], 7 | }, 8 | plugins: [require('windicss/plugin/filters')], 9 | }); 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/.eslintignore: -------------------------------------------------------------------------------- 1 | **/assets/** -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/.eslintrc'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/.mocharc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/.mocharc'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/.npmrc: -------------------------------------------------------------------------------- 1 | auto-install-peers=true 2 | shamefully-hoist=true 3 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/.prettierignore: -------------------------------------------------------------------------------- 1 | **/assets/** 2 | *.feature 3 | *.sass 4 | *.scss -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/.ts-prunerc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/nadeesha/ts-prune 2 | https: module.exports = { 3 | // ignore: '(arg-types|form/form|mermaid|src/index|stories).tsx?', 4 | // skip: 'autogen', 5 | }; 6 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-solid/babel.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/gitignore: -------------------------------------------------------------------------------- 1 | /.husky 2 | /.reports 3 | /dist 4 | /hint-report 5 | /node_modules 6 | *.log 7 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/nightwatch.conf.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/nightwatch.conf'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/nyc.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/nyc.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/postcss.config.js: -------------------------------------------------------------------------------- 1 | // ## Migrate from 1.1 to 1.2 2 | 3 | // ### Changes 4 | 5 | // 1. ⛔ `autoprefixer` was removed from stack, it is to handle in project scope 6 | // 2. ⛔ `cssnano` was removed from default template, it is to handle in project scope 7 | // 3. ⛔ `postcss.config.js` was removed from stack, it is to handle in project scope 8 | 9 | module.exports = { 10 | plugins: [ 11 | require('postcss-windicss')({ 12 | touchMode: 'insert-comment', 13 | }), 14 | ], 15 | }; 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/prettier.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/snowpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-solid/snowpack.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/src/assets/logo.leanupjs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leanupjs/leanup/2603659c93ceab96c643a05a9b8f836d17b60ea9/packages/create-leanup/templates/solid/src/assets/logo.leanupjs.png -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/src/assets/logo.solid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leanupjs/leanup/2603659c93ceab96c643a05a9b8f836d17b60ea9/packages/create-leanup/templates/solid/src/assets/logo.solid.png -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/src/components/series/editor/component.solid.tsx: -------------------------------------------------------------------------------- 1 | import { Component } from 'solid-js'; 2 | 3 | import { InputControl } from '@leanup/form'; 4 | 5 | import { InputComponent } from '../../input/component.solid'; 6 | import { EditorForm } from './editor.form'; 7 | 8 | interface Props { 9 | editorForm: EditorForm; 10 | } 11 | 12 | export const EditorSerieComponent: Component = (props: Props) => { 13 | return ( 14 |
15 | 16 | 17 |
18 | ); 19 | }; 20 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/src/components/series/editor/controller.ts: -------------------------------------------------------------------------------- 1 | import { AbstractController } from '@leanup/lib'; 2 | 3 | export class EditorSerieController extends AbstractController {} 4 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/src/components/series/editor/editor.form.ts: -------------------------------------------------------------------------------- 1 | import { FormControl, InputControl } from '@leanup/form'; 2 | 3 | export class EditorForm extends FormControl { 4 | public constructor(name: string) { 5 | super(name); 6 | this.addControl( 7 | new InputControl('title', { 8 | label: 'Title', 9 | value: '', 10 | }) 11 | ); 12 | this.addControl( 13 | new InputControl('unit', { 14 | label: 'Unit', 15 | value: '', 16 | }) 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/src/main.ts: -------------------------------------------------------------------------------- 1 | import './solid.main'; 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/src/models/framework.interface.ts: -------------------------------------------------------------------------------- 1 | export interface Framework { 2 | name: string; 3 | version: string; 4 | } 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/src/models/measured-item.model.ts: -------------------------------------------------------------------------------- 1 | export class MeasuredItemModel { 2 | private date: Date; 3 | private value: number; 4 | 5 | public constructor(date: Date, value: number) { 6 | this.date = date; 7 | this.value = value; 8 | } 9 | 10 | public getDate(): Date { 11 | return this.date; 12 | } 13 | public getValue(): number { 14 | return this.value; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/src/services/storage/mock.json: -------------------------------------------------------------------------------- 1 | { 2 | "measuredSeries": [ 3 | { "id": 5, "title": "Gas", "unit": "m³" }, 4 | { "id": 4, "title": "Strom", "unit": "kWh" }, 5 | { "id": 3, "title": "Wasser", "unit": "m³" }, 6 | { "id": 2, "title": "Außentemparatur", "unit": "°C" }, 7 | { "id": 1, "title": "Sonnenstunden", "unit": "h" } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/src/shares/register.ts: -------------------------------------------------------------------------------- 1 | import { DI } from '@leanup/lib'; 2 | import { VersionApi } from '@leanup/openapi-demo'; 3 | 4 | import { MeasurementService } from '../services/measurements/service'; 5 | import { RouterService } from '../services/router/service'; 6 | import { StorageService } from '../services/storage/service'; 7 | 8 | // RouterService is an example as static class. 9 | DI.register('RouterService', RouterService); 10 | 11 | DI.register('StorageService', new StorageService()); 12 | DI.register('MeasurementService', new MeasurementService()); 13 | DI.register('VersionApi', new VersionApi()); 14 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/src/shares/routing.ts: -------------------------------------------------------------------------------- 1 | import { RouterService } from '../services/router/service'; 2 | 3 | RouterService.register([ 4 | { 5 | url: 'series', 6 | }, 7 | { 8 | url: 'series/create', 9 | }, 10 | { 11 | url: 'series/:id/edit', 12 | }, 13 | ]); 14 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/src/shares/utils.ts: -------------------------------------------------------------------------------- 1 | export function typeIt(json: Object): T { 2 | const typed = JSON.parse(JSON.stringify(json)) as { default: T }; 3 | return typed.default; 4 | } 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/src/solid.main.tsx: -------------------------------------------------------------------------------- 1 | import { render } from 'solid-js/web'; 2 | 3 | import * as PACKAGE_JSON from '../node_modules/solid-js/package.json'; 4 | import { run } from './app.run'; 5 | import { AppComponent } from './components/app/component.solid'; 6 | import { typeIt } from './shares/utils'; 7 | 8 | const TYPED_PACKAGE_JSON = typeIt<{ version: string }>(PACKAGE_JSON); 9 | 10 | run('Solid', TYPED_PACKAGE_JSON.version, () => { 11 | const htmlDivElement: HTMLDivElement | null = document.querySelector('div#solid'); 12 | if (htmlDivElement instanceof HTMLDivElement) { 13 | render(() => , htmlDivElement); 14 | } 15 | }); 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/src/types/images.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.jpeg'; 2 | declare module '*.jpg'; 3 | declare module '*.png'; 4 | declare module '*.gif'; 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/tests/e2e/ecosia.js: -------------------------------------------------------------------------------- 1 | describe(`Demo's`, () => { 2 | it('ecosia.org', (browser) => { 3 | browser 4 | .url('https://www.ecosia.org/') 5 | .waitForElementVisible('body') 6 | .assert.titleContains('Ecosia') 7 | .assert.visible('input[type=search]') 8 | .setValue('input[type=search]', 'nightwatch') 9 | .assert.visible('button[type=submit]') 10 | .click('button[type=submit]') 11 | .assert.containsText('.mainline-results', 'Nightwatch.js') 12 | .end(); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/tests/unit/openapi.test.ts: -------------------------------------------------------------------------------- 1 | import { expect } from 'chai'; 2 | 3 | import { IVersion, IVersionLabelEnum } from '@leanup/openapi-demo'; 4 | 5 | describe(`Test: OpenAPI`, () => { 6 | const label: IVersionLabelEnum = IVersionLabelEnum.Latest; 7 | const version: IVersion = { 8 | major: 1, 9 | minor: 2, 10 | patch: 3, 11 | text: '1.2.3', 12 | label: label, 13 | }; 14 | 15 | it('Test Version', () => { 16 | expect(version.text).be.equal('1.2.3'); 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/vite.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-solid/vite.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-solid/webpack.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/solid/windi.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'windicss/helpers'; 2 | 3 | export default defineConfig({ 4 | darkMode: 'media', 5 | extract: { 6 | include: ['src/**/*.{html,svelte,ts,tsx,vue}'], 7 | }, 8 | plugins: [require('windicss/plugin/filters')], 9 | }); 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/.eslintignore: -------------------------------------------------------------------------------- 1 | **/assets/** -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/.eslintrc'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/.mocharc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/.mocharc'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/.npmrc: -------------------------------------------------------------------------------- 1 | auto-install-peers=true 2 | shamefully-hoist=true 3 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/.prettierignore: -------------------------------------------------------------------------------- 1 | **/assets/** 2 | *.feature 3 | *.sass 4 | *.scss -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/.ts-prunerc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/nadeesha/ts-prune 2 | https: module.exports = { 3 | // ignore: '(arg-types|form/form|mermaid|src/index|stories).tsx?', 4 | // skip: 'autogen', 5 | }; 6 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/gitignore: -------------------------------------------------------------------------------- 1 | /.husky 2 | /.reports 3 | /dist 4 | /hint-report 5 | /node_modules 6 | *.log 7 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/nightwatch.conf.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/nightwatch.conf'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/nyc.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/nyc.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/postcss.config.js: -------------------------------------------------------------------------------- 1 | // ## Migrate from 1.1 to 1.2 2 | 3 | // ### Changes 4 | 5 | // 1. ⛔ `autoprefixer` was removed from stack, it is to handle in project scope 6 | // 2. ⛔ `cssnano` was removed from default template, it is to handle in project scope 7 | // 3. ⛔ `postcss.config.js` was removed from stack, it is to handle in project scope 8 | 9 | module.exports = { 10 | plugins: [ 11 | require('postcss-windicss')({ 12 | touchMode: 'insert-comment', 13 | }), 14 | ], 15 | }; 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/prettier.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/snowpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-svelte/snowpack.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/src/assets/logo.leanupjs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leanupjs/leanup/2603659c93ceab96c643a05a9b8f836d17b60ea9/packages/create-leanup/templates/svelte/src/assets/logo.leanupjs.png -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/src/assets/logo.svelte.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leanupjs/leanup/2603659c93ceab96c643a05a9b8f836d17b60ea9/packages/create-leanup/templates/svelte/src/assets/logo.svelte.png -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/src/components/input/component.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 | 8 |
9 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/src/components/series/editor/component.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 |
10 | 11 | 12 |
13 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/src/components/series/editor/controller.ts: -------------------------------------------------------------------------------- 1 | import { AbstractController } from '@leanup/lib'; 2 | 3 | export class EditorSerieController extends AbstractController {} 4 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/src/components/series/editor/editor.form.ts: -------------------------------------------------------------------------------- 1 | import { FormControl, InputControl } from '@leanup/form'; 2 | 3 | export class EditorForm extends FormControl { 4 | public constructor(name: string) { 5 | super(name); 6 | this.addControl( 7 | new InputControl('title', { 8 | label: 'Title', 9 | value: '', 10 | }) 11 | ); 12 | this.addControl( 13 | new InputControl('unit', { 14 | label: 'Unit', 15 | value: '', 16 | }) 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/src/main.ts: -------------------------------------------------------------------------------- 1 | import './svelte.main'; 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/src/models/framework.interface.ts: -------------------------------------------------------------------------------- 1 | export interface Framework { 2 | name: string; 3 | version: string; 4 | } 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/src/models/measured-item.model.ts: -------------------------------------------------------------------------------- 1 | export class MeasuredItemModel { 2 | private date: Date; 3 | private value: number; 4 | 5 | public constructor(date: Date, value: number) { 6 | this.date = date; 7 | this.value = value; 8 | } 9 | 10 | public getDate(): Date { 11 | return this.date; 12 | } 13 | public getValue(): number { 14 | return this.value; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/src/services/storage/mock.json: -------------------------------------------------------------------------------- 1 | { 2 | "measuredSeries": [ 3 | { "id": 5, "title": "Gas", "unit": "m³" }, 4 | { "id": 4, "title": "Strom", "unit": "kWh" }, 5 | { "id": 3, "title": "Wasser", "unit": "m³" }, 6 | { "id": 2, "title": "Außentemparatur", "unit": "°C" }, 7 | { "id": 1, "title": "Sonnenstunden", "unit": "h" } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/src/shares/register.ts: -------------------------------------------------------------------------------- 1 | import { DI } from '@leanup/lib'; 2 | import { VersionApi } from '@leanup/openapi-demo'; 3 | 4 | import { MeasurementService } from '../services/measurements/service'; 5 | import { RouterService } from '../services/router/service'; 6 | import { StorageService } from '../services/storage/service'; 7 | 8 | // RouterService is an example as static class. 9 | DI.register('RouterService', RouterService); 10 | 11 | DI.register('StorageService', new StorageService()); 12 | DI.register('MeasurementService', new MeasurementService()); 13 | DI.register('VersionApi', new VersionApi()); 14 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/src/shares/routing.ts: -------------------------------------------------------------------------------- 1 | import { RouterService } from '../services/router/service'; 2 | 3 | RouterService.register([ 4 | { 5 | url: 'series', 6 | }, 7 | { 8 | url: 'series/create', 9 | }, 10 | { 11 | url: 'series/:id/edit', 12 | }, 13 | ]); 14 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/src/shares/utils.ts: -------------------------------------------------------------------------------- 1 | export function typeIt(json: Object): T { 2 | const typed = JSON.parse(JSON.stringify(json)) as { default: T }; 3 | return typed.default; 4 | } 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/src/types/images.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.jpeg'; 2 | declare module '*.jpg'; 3 | declare module '*.png'; 4 | declare module '*.gif'; 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/tests/e2e/ecosia.js: -------------------------------------------------------------------------------- 1 | describe(`Demo's`, () => { 2 | it('ecosia.org', (browser) => { 3 | browser 4 | .url('https://www.ecosia.org/') 5 | .waitForElementVisible('body') 6 | .assert.titleContains('Ecosia') 7 | .assert.visible('input[type=search]') 8 | .setValue('input[type=search]', 'nightwatch') 9 | .assert.visible('button[type=submit]') 10 | .click('button[type=submit]') 11 | .assert.containsText('.mainline-results', 'Nightwatch.js') 12 | .end(); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/tests/unit/openapi.test.ts: -------------------------------------------------------------------------------- 1 | import { expect } from 'chai'; 2 | 3 | import { IVersion, IVersionLabelEnum } from '@leanup/openapi-demo'; 4 | 5 | describe(`Test: OpenAPI`, () => { 6 | const label: IVersionLabelEnum = IVersionLabelEnum.Latest; 7 | const version: IVersion = { 8 | major: 1, 9 | minor: 2, 10 | patch: 3, 11 | text: '1.2.3', 12 | label: label, 13 | }; 14 | 15 | it('Test Version', () => { 16 | expect(version.text).be.equal('1.2.3'); 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/vite.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-svelte/vite.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-svelte/webpack.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/svelte/windi.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'windicss/helpers'; 2 | 3 | export default defineConfig({ 4 | darkMode: 'media', 5 | extract: { 6 | include: ['src/**/*.{html,svelte,ts,tsx,vue}'], 7 | }, 8 | plugins: [require('windicss/plugin/filters')], 9 | }); 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/.eslintignore: -------------------------------------------------------------------------------- 1 | **/assets/** -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/.eslintrc'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/.mocharc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/.mocharc'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/.npmrc: -------------------------------------------------------------------------------- 1 | auto-install-peers=true 2 | shamefully-hoist=true 3 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/.prettierignore: -------------------------------------------------------------------------------- 1 | **/assets/** 2 | *.feature 3 | *.sass 4 | *.scss -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/.ts-prunerc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/nadeesha/ts-prune 2 | https: module.exports = { 3 | // ignore: '(arg-types|form/form|mermaid|src/index|stories).tsx?', 4 | // skip: 'autogen', 5 | }; 6 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/gitignore: -------------------------------------------------------------------------------- 1 | /.husky 2 | /.reports 3 | /dist 4 | /hint-report 5 | /node_modules 6 | *.log 7 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/nightwatch.conf.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/nightwatch.conf'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/nyc.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/nyc.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/postcss.config.js: -------------------------------------------------------------------------------- 1 | // ## Migrate from 1.1 to 1.2 2 | 3 | // ### Changes 4 | 5 | // 1. ⛔ `autoprefixer` was removed from stack, it is to handle in project scope 6 | // 2. ⛔ `cssnano` was removed from default template, it is to handle in project scope 7 | // 3. ⛔ `postcss.config.js` was removed from stack, it is to handle in project scope 8 | 9 | module.exports = { 10 | plugins: [ 11 | require('postcss-windicss')({ 12 | touchMode: 'insert-comment', 13 | }), 14 | ], 15 | }; 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/prettier.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/snowpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-snowpack/snowpack.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/src/assets/logo.leanupjs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leanupjs/leanup/2603659c93ceab96c643a05a9b8f836d17b60ea9/packages/create-leanup/templates/vanilla/src/assets/logo.leanupjs.png -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/src/assets/logo.vanilla.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leanupjs/leanup/2603659c93ceab96c643a05a9b8f836d17b60ea9/packages/create-leanup/templates/vanilla/src/assets/logo.vanilla.png -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/src/components/component.vanilla.ts: -------------------------------------------------------------------------------- 1 | export class VanillaComponent extends HTMLElement { 2 | protected readonly dom: HTMLElement | ShadowRoot; 3 | 4 | public constructor() { 5 | super(); 6 | this.dom = this; 7 | // this.attachShadow({ delegatesFocus: true, mode: 'open' }); 8 | // this.dom = this.shadowRoot; 9 | } 10 | 11 | // tslint:disable-next-line: no-empty 12 | protected render(): void {} 13 | 14 | public connectedCallback(): void { 15 | this.render(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/src/components/series/editor/controller.ts: -------------------------------------------------------------------------------- 1 | import { AbstractController } from '@leanup/lib'; 2 | 3 | export class EditorSerieController extends AbstractController {} 4 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/src/components/series/editor/editor.form.ts: -------------------------------------------------------------------------------- 1 | import { FormControl, InputControl } from '@leanup/form'; 2 | 3 | export class EditorForm extends FormControl { 4 | public constructor(name: string) { 5 | super(name); 6 | this.addControl( 7 | new InputControl('title', { 8 | label: 'Title', 9 | value: '', 10 | }) 11 | ); 12 | this.addControl( 13 | new InputControl('unit', { 14 | label: 'Unit', 15 | value: '', 16 | }) 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/src/main.ts: -------------------------------------------------------------------------------- 1 | import './main.vanilla'; 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/src/main.vanilla.ts: -------------------------------------------------------------------------------- 1 | import './components/app/component.vanilla'; 2 | 3 | import { run } from './app.run'; 4 | 5 | run('Vanilla', null, () => { 6 | const htmlDivElement: HTMLDivElement | null = document.querySelector('div#vanilla'); 7 | const appElement: HTMLElement = document.createElement('wc-app'); 8 | htmlDivElement.appendChild(appElement); 9 | }); 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/src/models/framework.interface.ts: -------------------------------------------------------------------------------- 1 | export interface Framework { 2 | name: string; 3 | version: string; 4 | } 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/src/models/measured-item.model.ts: -------------------------------------------------------------------------------- 1 | export class MeasuredItemModel { 2 | private date: Date; 3 | private value: number; 4 | 5 | public constructor(date: Date, value: number) { 6 | this.date = date; 7 | this.value = value; 8 | } 9 | 10 | public getDate(): Date { 11 | return this.date; 12 | } 13 | public getValue(): number { 14 | return this.value; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/src/services/storage/mock.json: -------------------------------------------------------------------------------- 1 | { 2 | "measuredSeries": [ 3 | { "id": 5, "title": "Gas", "unit": "m³" }, 4 | { "id": 4, "title": "Strom", "unit": "kWh" }, 5 | { "id": 3, "title": "Wasser", "unit": "m³" }, 6 | { "id": 2, "title": "Außentemparatur", "unit": "°C" }, 7 | { "id": 1, "title": "Sonnenstunden", "unit": "h" } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/src/shares/register.ts: -------------------------------------------------------------------------------- 1 | import { DI } from '@leanup/lib'; 2 | import { VersionApi } from '@leanup/openapi-demo'; 3 | 4 | import { MeasurementService } from '../services/measurements/service'; 5 | import { RouterService } from '../services/router/service'; 6 | import { StorageService } from '../services/storage/service'; 7 | 8 | // RouterService is an example as static class. 9 | DI.register('RouterService', RouterService); 10 | 11 | DI.register('StorageService', new StorageService()); 12 | DI.register('MeasurementService', new MeasurementService()); 13 | DI.register('VersionApi', new VersionApi()); 14 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/src/shares/routing.ts: -------------------------------------------------------------------------------- 1 | import { RouterService } from '../services/router/service'; 2 | 3 | RouterService.register([ 4 | { 5 | url: 'series', 6 | }, 7 | { 8 | url: 'series/create', 9 | }, 10 | { 11 | url: 'series/:id/edit', 12 | }, 13 | ]); 14 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/src/shares/utils.ts: -------------------------------------------------------------------------------- 1 | export function typeIt(json: Object): T { 2 | const typed = JSON.parse(JSON.stringify(json)) as { default: T }; 3 | return typed.default; 4 | } 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/src/types/images.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.jpeg'; 2 | declare module '*.jpg'; 3 | declare module '*.png'; 4 | declare module '*.gif'; 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/tests/e2e/ecosia.js: -------------------------------------------------------------------------------- 1 | describe(`Demo's`, () => { 2 | it('ecosia.org', (browser) => { 3 | browser 4 | .url('https://www.ecosia.org/') 5 | .waitForElementVisible('body') 6 | .assert.titleContains('Ecosia') 7 | .assert.visible('input[type=search]') 8 | .setValue('input[type=search]', 'nightwatch') 9 | .assert.visible('button[type=submit]') 10 | .click('button[type=submit]') 11 | .assert.containsText('.mainline-results', 'Nightwatch.js') 12 | .end(); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/tests/unit/openapi.test.ts: -------------------------------------------------------------------------------- 1 | import { expect } from 'chai'; 2 | 3 | import { IVersion, IVersionLabelEnum } from '@leanup/openapi-demo'; 4 | 5 | describe(`Test: OpenAPI`, () => { 6 | const label: IVersionLabelEnum = IVersionLabelEnum.Latest; 7 | const version: IVersion = { 8 | major: 1, 9 | minor: 2, 10 | patch: 3, 11 | text: '1.2.3', 12 | label: label, 13 | }; 14 | 15 | it('Test Version', () => { 16 | expect(version.text).be.equal('1.2.3'); 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/vite.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-vite/vite.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-webpack'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vanilla/windi.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'windicss/helpers'; 2 | 3 | export default defineConfig({ 4 | darkMode: 'media', 5 | extract: { 6 | include: ['src/**/*.{html,svelte,ts,tsx,vue}'], 7 | }, 8 | plugins: [require('windicss/plugin/filters')], 9 | }); 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/.eslintignore: -------------------------------------------------------------------------------- 1 | **/assets/** -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/.eslintrc'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/.mocharc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/.mocharc'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/.npmrc: -------------------------------------------------------------------------------- 1 | auto-install-peers=true 2 | shamefully-hoist=true 3 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/.prettierignore: -------------------------------------------------------------------------------- 1 | **/assets/** 2 | *.feature 3 | *.sass 4 | *.scss -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/.ts-prunerc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/nadeesha/ts-prune 2 | https: module.exports = { 3 | // ignore: '(arg-types|form/form|mermaid|src/index|stories).tsx?', 4 | // skip: 'autogen', 5 | }; 6 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/gitignore: -------------------------------------------------------------------------------- 1 | /.husky 2 | /.reports 3 | /dist 4 | /hint-report 5 | /node_modules 6 | *.log 7 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/nightwatch.conf.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/nightwatch.conf'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/nyc.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/nyc.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/postcss.config.js: -------------------------------------------------------------------------------- 1 | // ## Migrate from 1.1 to 1.2 2 | 3 | // ### Changes 4 | 5 | // 1. ⛔ `autoprefixer` was removed from stack, it is to handle in project scope 6 | // 2. ⛔ `cssnano` was removed from default template, it is to handle in project scope 7 | // 3. ⛔ `postcss.config.js` was removed from stack, it is to handle in project scope 8 | 9 | module.exports = { 10 | plugins: [ 11 | require('postcss-windicss')({ 12 | touchMode: 'insert-comment', 13 | }), 14 | ], 15 | }; 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/prettier.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/src/assets/logo.leanupjs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leanupjs/leanup/2603659c93ceab96c643a05a9b8f836d17b60ea9/packages/create-leanup/templates/vue/src/assets/logo.leanupjs.png -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/src/assets/logo.vue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leanupjs/leanup/2603659c93ceab96c643a05a9b8f836d17b60ea9/packages/create-leanup/templates/vue/src/assets/logo.vue.png -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/src/components/input/component.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 20 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/src/components/series/editor/component.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 24 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/src/components/series/editor/controller.ts: -------------------------------------------------------------------------------- 1 | import { AbstractController } from '@leanup/lib'; 2 | 3 | export class EditorSerieController extends AbstractController {} 4 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/src/components/series/editor/editor.form.ts: -------------------------------------------------------------------------------- 1 | import { FormControl, InputControl } from '@leanup/form'; 2 | 3 | export class EditorForm extends FormControl { 4 | public constructor(name: string) { 5 | super(name); 6 | this.addControl( 7 | new InputControl('title', { 8 | label: 'Title', 9 | value: '', 10 | }) 11 | ); 12 | this.addControl( 13 | new InputControl('unit', { 14 | label: 'Unit', 15 | value: '', 16 | }) 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/src/main.ts: -------------------------------------------------------------------------------- 1 | import './vue.main'; 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/src/models/framework.interface.ts: -------------------------------------------------------------------------------- 1 | export interface Framework { 2 | name: string; 3 | version: string; 4 | } 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/src/models/measured-item.model.ts: -------------------------------------------------------------------------------- 1 | export class MeasuredItemModel { 2 | private date: Date; 3 | private value: number; 4 | 5 | public constructor(date: Date, value: number) { 6 | this.date = date; 7 | this.value = value; 8 | } 9 | 10 | public getDate(): Date { 11 | return this.date; 12 | } 13 | public getValue(): number { 14 | return this.value; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/src/services/storage/mock.json: -------------------------------------------------------------------------------- 1 | { 2 | "measuredSeries": [ 3 | { "id": 5, "title": "Gas", "unit": "m³" }, 4 | { "id": 4, "title": "Strom", "unit": "kWh" }, 5 | { "id": 3, "title": "Wasser", "unit": "m³" }, 6 | { "id": 2, "title": "Außentemparatur", "unit": "°C" }, 7 | { "id": 1, "title": "Sonnenstunden", "unit": "h" } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/src/shares/register.ts: -------------------------------------------------------------------------------- 1 | import { DI } from '@leanup/lib'; 2 | import { VersionApi } from '@leanup/openapi-demo'; 3 | 4 | import { MeasurementService } from '../services/measurements/service'; 5 | import { RouterService } from '../services/router/service'; 6 | import { StorageService } from '../services/storage/service'; 7 | 8 | // RouterService is an example as static class. 9 | DI.register('RouterService', RouterService); 10 | 11 | DI.register('StorageService', new StorageService()); 12 | DI.register('MeasurementService', new MeasurementService()); 13 | DI.register('VersionApi', new VersionApi()); 14 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/src/shares/routing.ts: -------------------------------------------------------------------------------- 1 | import { RouterService } from '../services/router/service'; 2 | 3 | RouterService.register([ 4 | { 5 | url: 'series', 6 | }, 7 | { 8 | url: 'series/create', 9 | }, 10 | { 11 | url: 'series/:id/edit', 12 | }, 13 | ]); 14 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/src/shares/utils.ts: -------------------------------------------------------------------------------- 1 | export function typeIt(json: Object): T { 2 | const typed = JSON.parse(JSON.stringify(json)) as { default: T }; 3 | return typed.default; 4 | } 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/src/types/images.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.jpeg'; 2 | declare module '*.jpg'; 3 | declare module '*.png'; 4 | declare module '*.gif'; 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/tests/e2e/ecosia.js: -------------------------------------------------------------------------------- 1 | describe(`Demo's`, () => { 2 | it('ecosia.org', (browser) => { 3 | browser 4 | .url('https://www.ecosia.org/') 5 | .waitForElementVisible('body') 6 | .assert.titleContains('Ecosia') 7 | .assert.visible('input[type=search]') 8 | .setValue('input[type=search]', 'nightwatch') 9 | .assert.visible('button[type=submit]') 10 | .click('button[type=submit]') 11 | .assert.containsText('.mainline-results', 'Nightwatch.js') 12 | .end(); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/tests/unit/openapi.test.ts: -------------------------------------------------------------------------------- 1 | import { expect } from 'chai'; 2 | 3 | import { IVersion, IVersionLabelEnum } from '@leanup/openapi-demo'; 4 | 5 | describe(`Test: OpenAPI`, () => { 6 | const label: IVersionLabelEnum = IVersionLabelEnum.Latest; 7 | const version: IVersion = { 8 | major: 1, 9 | minor: 2, 10 | patch: 3, 11 | text: '1.2.3', 12 | label: label, 13 | }; 14 | 15 | it('Test Version', () => { 16 | expect(version.text).be.equal('1.2.3'); 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-vue/webpack.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue/windi.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'windicss/helpers'; 2 | 3 | export default defineConfig({ 4 | darkMode: 'media', 5 | extract: { 6 | include: ['src/**/*.{html,svelte,ts,tsx,vue}'], 7 | }, 8 | plugins: [require('windicss/plugin/filters')], 9 | }); 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | indent_style = space 8 | indent_size = 2 9 | end_of_line = lf 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | insert_final_newline = false 15 | trim_trailing_whitespace = false 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/.eslintignore: -------------------------------------------------------------------------------- 1 | **/assets/** -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/.eslintrc'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/.mocharc.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/.mocharc'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/.npmrc: -------------------------------------------------------------------------------- 1 | auto-install-peers=true 2 | shamefully-hoist=true 3 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/.prettierignore: -------------------------------------------------------------------------------- 1 | **/assets/** 2 | *.feature 3 | *.sass 4 | *.scss -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/.ts-prunerc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/nadeesha/ts-prune 2 | https: module.exports = { 3 | // ignore: '(arg-types|form/form|mermaid|src/index|stories).tsx?', 4 | // skip: 'autogen', 5 | }; 6 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/gitignore: -------------------------------------------------------------------------------- 1 | /.husky 2 | /.reports 3 | /dist 4 | /hint-report 5 | /node_modules 6 | *.log 7 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/nightwatch.conf.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/nightwatch.conf'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/nyc.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/nyc.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/postcss.config.js: -------------------------------------------------------------------------------- 1 | // ## Migrate from 1.1 to 1.2 2 | 3 | // ### Changes 4 | 5 | // 1. ⛔ `autoprefixer` was removed from stack, it is to handle in project scope 6 | // 2. ⛔ `cssnano` was removed from default template, it is to handle in project scope 7 | // 3. ⛔ `postcss.config.js` was removed from stack, it is to handle in project scope 8 | 9 | module.exports = { 10 | plugins: [ 11 | require('postcss-windicss')({ 12 | touchMode: 'insert-comment', 13 | }), 14 | ], 15 | }; 16 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack/prettier.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/snowpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-vue3/snowpack.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/src/assets/logo.leanupjs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leanupjs/leanup/2603659c93ceab96c643a05a9b8f836d17b60ea9/packages/create-leanup/templates/vue3/src/assets/logo.leanupjs.png -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/src/assets/logo.vue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leanupjs/leanup/2603659c93ceab96c643a05a9b8f836d17b60ea9/packages/create-leanup/templates/vue3/src/assets/logo.vue.png -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/src/components/input/component.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 18 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/src/components/series/editor/component.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 24 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/src/components/series/editor/controller.ts: -------------------------------------------------------------------------------- 1 | import { AbstractController } from '@leanup/lib'; 2 | 3 | export class EditorSerieController extends AbstractController {} 4 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/src/components/series/editor/editor.form.ts: -------------------------------------------------------------------------------- 1 | import { FormControl, InputControl } from '@leanup/form'; 2 | 3 | export class EditorForm extends FormControl { 4 | public constructor(name: string) { 5 | super(name); 6 | this.addControl( 7 | new InputControl('title', { 8 | label: 'Title', 9 | value: '', 10 | }) 11 | ); 12 | this.addControl( 13 | new InputControl('unit', { 14 | label: 'Unit', 15 | value: '', 16 | }) 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/src/main.ts: -------------------------------------------------------------------------------- 1 | import './vue.main'; 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/src/models/framework.interface.ts: -------------------------------------------------------------------------------- 1 | export interface Framework { 2 | name: string; 3 | version: string; 4 | } 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/src/models/measured-item.model.ts: -------------------------------------------------------------------------------- 1 | export class MeasuredItemModel { 2 | private date: Date; 3 | private value: number; 4 | 5 | public constructor(date: Date, value: number) { 6 | this.date = date; 7 | this.value = value; 8 | } 9 | 10 | public getDate(): Date { 11 | return this.date; 12 | } 13 | public getValue(): number { 14 | return this.value; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/src/services/storage/mock.json: -------------------------------------------------------------------------------- 1 | { 2 | "measuredSeries": [ 3 | { "id": 5, "title": "Gas", "unit": "m³" }, 4 | { "id": 4, "title": "Strom", "unit": "kWh" }, 5 | { "id": 3, "title": "Wasser", "unit": "m³" }, 6 | { "id": 2, "title": "Außentemparatur", "unit": "°C" }, 7 | { "id": 1, "title": "Sonnenstunden", "unit": "h" } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/src/shares/register.ts: -------------------------------------------------------------------------------- 1 | import { DI } from '@leanup/lib'; 2 | import { VersionApi } from '@leanup/openapi-demo'; 3 | 4 | import { MeasurementService } from '../services/measurements/service'; 5 | import { RouterService } from '../services/router/service'; 6 | import { StorageService } from '../services/storage/service'; 7 | 8 | // RouterService is an example as static class. 9 | DI.register('RouterService', RouterService); 10 | 11 | DI.register('StorageService', new StorageService()); 12 | DI.register('MeasurementService', new MeasurementService()); 13 | DI.register('VersionApi', new VersionApi()); 14 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/src/shares/routing.ts: -------------------------------------------------------------------------------- 1 | import { RouterService } from '../services/router/service'; 2 | 3 | RouterService.register([ 4 | { 5 | url: 'series', 6 | }, 7 | { 8 | url: 'series/create', 9 | }, 10 | { 11 | url: 'series/:id/edit', 12 | }, 13 | ]); 14 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/src/shares/utils.ts: -------------------------------------------------------------------------------- 1 | export function typeIt(json: Object): T { 2 | const typed = JSON.parse(JSON.stringify(json)) as { default: T }; 3 | return typed.default; 4 | } 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/src/types/images.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.jpeg'; 2 | declare module '*.jpg'; 3 | declare module '*.png'; 4 | declare module '*.gif'; 5 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/tests/e2e/ecosia.js: -------------------------------------------------------------------------------- 1 | describe(`Demo's`, () => { 2 | it('ecosia.org', (browser) => { 3 | browser 4 | .url('https://www.ecosia.org/') 5 | .waitForElementVisible('body') 6 | .assert.titleContains('Ecosia') 7 | .assert.visible('input[type=search]') 8 | .setValue('input[type=search]', 'nightwatch') 9 | .assert.visible('button[type=submit]') 10 | .click('button[type=submit]') 11 | .assert.containsText('.mainline-results', 'Nightwatch.js') 12 | .end(); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/tests/unit/openapi.test.ts: -------------------------------------------------------------------------------- 1 | import { expect } from 'chai'; 2 | 3 | import { IVersion, IVersionLabelEnum } from '@leanup/openapi-demo'; 4 | 5 | describe(`Test: OpenAPI`, () => { 6 | const label: IVersionLabelEnum = IVersionLabelEnum.Latest; 7 | const version: IVersion = { 8 | major: 1, 9 | minor: 2, 10 | patch: 3, 11 | text: '1.2.3', 12 | label: label, 13 | }; 14 | 15 | it('Test Version', () => { 16 | expect(version.text).be.equal('1.2.3'); 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/vite.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-vue3/vite.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/stack-vue3/webpack.config'); 2 | -------------------------------------------------------------------------------- /packages/create-leanup/templates/vue3/windi.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'windicss/helpers'; 2 | 3 | export default defineConfig({ 4 | darkMode: 'media', 5 | extract: { 6 | include: ['src/**/*.{html,svelte,ts,tsx,vue}'], 7 | }, 8 | plugins: [require('windicss/plugin/filters')], 9 | }); 10 | -------------------------------------------------------------------------------- /packages/form/.gitignore: -------------------------------------------------------------------------------- 1 | /cjs 2 | /esm 3 | /umd 4 | /types -------------------------------------------------------------------------------- /packages/form/.mocharc.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | // Here's a JavaScript-based config file. 4 | // If you need conditional logic, you might want to use this type of config. 5 | // Otherwise, JSON or YAML is recommended. 6 | 7 | module.exports = { 8 | extension: ['js', 'jsx', 'ts', 'tsx'], 9 | reporter: 'spec', 10 | require: ['esbuild-register', 'jsdom-global/register', 'mock-local-storage'], 11 | spec: ['src/**/*.spec.*s*', 'src/**/*.test.*s*', 'tests/unit/**/*.spec.*s*', 'tests/unit/**/*.test.*s*'], 12 | }; 13 | 14 | // Source: https://github.com/mochajs/mocha/tree/master/example/config 15 | -------------------------------------------------------------------------------- /packages/form/src/controls/index.ts: -------------------------------------------------------------------------------- 1 | export * from './controls'; 2 | -------------------------------------------------------------------------------- /packages/form/src/handlers/formatters/abstract.formatter.ts: -------------------------------------------------------------------------------- 1 | export abstract class AbstractFormatter { 2 | abstract format(value: unknown): unknown; 3 | abstract parse(value: unknown): unknown; 4 | } 5 | -------------------------------------------------------------------------------- /packages/form/src/handlers/formatters/index.ts: -------------------------------------------------------------------------------- 1 | export * from './abstract.formatter'; 2 | export * from './iban.formatter'; 3 | -------------------------------------------------------------------------------- /packages/form/src/handlers/index.ts: -------------------------------------------------------------------------------- 1 | export * from './formatters'; 2 | export * from './validators'; 3 | export * from './format.handler'; 4 | export * from './validation.handler'; 5 | -------------------------------------------------------------------------------- /packages/form/src/handlers/validators/abstract.validator.test.ts: -------------------------------------------------------------------------------- 1 | import { expect } from 'chai'; 2 | import sonon, { spy } from 'sinon'; 3 | 4 | import { Log } from '@leanup/lib'; 5 | 6 | import { AbstractValidator } from './abstract.validator'; 7 | 8 | describe('AbstractValidator', () => { 9 | const validator: AbstractValidator = new AbstractValidator(undefined); 10 | let spyElement; 11 | 12 | beforeEach(() => { 13 | spyElement = spy(Log, 'debug'); 14 | }); 15 | 16 | afterEach(() => { 17 | sonon.restore(); 18 | }); 19 | 20 | it('Standard-Meldung ist', () => { 21 | expect(validator.message).to.equal(`An unknown validation error occurred.`); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /packages/form/src/handlers/validators/digits.validator.ts: -------------------------------------------------------------------------------- 1 | import { PatternValidator } from './pattern.validator'; 2 | 3 | export const DIGITS_VALIDATION_REGEXP: RegExp = /^\d+$/; 4 | 5 | export class DigitsValidator extends PatternValidator { 6 | constructor(message: string = 'Please enter a number.') { 7 | super(DIGITS_VALIDATION_REGEXP, message); 8 | } 9 | } 10 | 11 | export const DEFAULT_DIGITS_VALIDATOR = new DigitsValidator(); 12 | -------------------------------------------------------------------------------- /packages/form/src/handlers/validators/email.validator.ts: -------------------------------------------------------------------------------- 1 | import { PatternValidator } from './pattern.validator'; 2 | 3 | // https://stackoverflow.com/questions/201323/how-can-i-validate-an-email-address-using-a-regular-expression 4 | export const EMAIL_VALIDATION_REGEXP: RegExp = 5 | /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 6 | 7 | export class EmailValidator extends PatternValidator { 8 | constructor(message: string = 'The email address has not the correct format.') { 9 | super(EMAIL_VALIDATION_REGEXP, message); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/form/src/handlers/validators/index.ts: -------------------------------------------------------------------------------- 1 | export * from './abstract.validator'; 2 | export * from './digits.validator'; 3 | export * from './email.validator'; 4 | export * from './is-true.validator'; 5 | export * from './max-length.validator'; 6 | export * from './min-length.validator'; 7 | export * from './non-required.validator'; 8 | export * from './not.validator'; 9 | export * from './pattern.validator'; 10 | export * from './required.validator'; 11 | -------------------------------------------------------------------------------- /packages/form/src/handlers/validators/is-true.validator.ts: -------------------------------------------------------------------------------- 1 | import { NonRequiredValidator } from './non-required.validator'; 2 | 3 | export class IsTrueValidator extends NonRequiredValidator { 4 | constructor(message: string = 'Please confirm the note.') { 5 | super(message); 6 | } 7 | 8 | public validate(value: any): boolean { 9 | return value === true; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/form/src/handlers/validators/max-length.validator.ts: -------------------------------------------------------------------------------- 1 | import { NonRequiredValidator } from './non-required.validator'; 2 | 3 | export class MaxLengthValidator extends NonRequiredValidator { 4 | // --- Properties --- 5 | public maxLength: number; 6 | 7 | constructor(maxLength: number, message: string = `The entry must not be longer than ${maxLength} characters.`) { 8 | super(message); 9 | this.maxLength = maxLength; 10 | } 11 | 12 | public validate(value: any): boolean { 13 | return typeof value === 'string' && value.length <= this.maxLength; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/form/src/handlers/validators/min-length.validator.ts: -------------------------------------------------------------------------------- 1 | import { NonRequiredValidator } from './non-required.validator'; 2 | 3 | export class MinLengthValidator extends NonRequiredValidator { 4 | // --- Properties --- 5 | public minLength: number; 6 | 7 | constructor(minLength: number, message: string = `The entry must not be shorter than ${minLength} characters.`) { 8 | super(message); 9 | this.minLength = minLength; 10 | } 11 | 12 | public validate(value: any): boolean { 13 | return typeof value === 'string' && value.length >= this.minLength; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/form/src/handlers/validators/non-required.validator.ts: -------------------------------------------------------------------------------- 1 | import { AbstractValidator } from './abstract.validator'; 2 | import { DEFAULT_REQUIRED_VALIDATOR } from './required.validator'; 3 | 4 | export abstract class NonRequiredValidator extends AbstractValidator { 5 | public valid(value: any): boolean { 6 | return DEFAULT_REQUIRED_VALIDATOR.valid(value) === false || this.validate(value); 7 | } 8 | 9 | abstract validate(value: any): boolean; 10 | } 11 | -------------------------------------------------------------------------------- /packages/form/src/handlers/validators/not.validator.ts: -------------------------------------------------------------------------------- 1 | import { AbstractValidator } from './abstract.validator'; 2 | import { NonRequiredValidator } from './non-required.validator'; 3 | 4 | export class NotValidator extends NonRequiredValidator { 5 | // --- Properties --- 6 | public validator: AbstractValidator; 7 | 8 | constructor(validator: AbstractValidator, message: string) { 9 | super(message); 10 | this.validator = validator; 11 | } 12 | 13 | public validate(value: any): boolean { 14 | return this.validator.valid(value) === false; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/form/src/handlers/validators/required.validator.ts: -------------------------------------------------------------------------------- 1 | import { AbstractValidator } from './abstract.validator'; 2 | 3 | export class RequiredValidator extends AbstractValidator { 4 | constructor(message: string = 'Please enter a value.') { 5 | super(message); 6 | } 7 | 8 | public valid(value: any): boolean { 9 | return value !== undefined && value !== null && value.toString().length > 0; 10 | } 11 | } 12 | 13 | export const DEFAULT_REQUIRED_VALIDATOR: RequiredValidator = new RequiredValidator(); 14 | -------------------------------------------------------------------------------- /packages/form/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './controls'; 2 | export * from './handlers'; 3 | -------------------------------------------------------------------------------- /packages/form/tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "exclude": ["src/**/*.test.ts"] 4 | } 5 | -------------------------------------------------------------------------------- /packages/form/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "moduleResolution": "node", 4 | "forceConsistentCasingInFileNames": true, 5 | "importHelpers": true, 6 | "sourceMap": true, 7 | "strict": true, 8 | "skipLibCheck": true, 9 | "removeComments": true, 10 | "target": "ES2015", 11 | "types": ["chai", "mocha", "node"], 12 | "typeRoots": ["node_modules/@types"] 13 | }, 14 | "include": ["src"] 15 | } 16 | -------------------------------------------------------------------------------- /packages/lib/.gitignore: -------------------------------------------------------------------------------- 1 | /cjs 2 | /esm 3 | /umd 4 | /types -------------------------------------------------------------------------------- /packages/lib/.mocharc.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | // Here's a JavaScript-based config file. 4 | // If you need conditional logic, you might want to use this type of config. 5 | // Otherwise, JSON or YAML is recommended. 6 | 7 | module.exports = { 8 | extension: ['js', 'jsx', 'ts', 'tsx'], 9 | reporter: 'spec', 10 | require: ['esbuild-register', 'jsdom-global/register', 'mock-local-storage'], 11 | spec: ['src/**/*.spec.*s*', 'src/**/*.test.*s*', 'tests/unit/**/*.spec.*s*', 'tests/unit/**/*.test.*s*'], 12 | }; 13 | 14 | // Source: https://github.com/mochajs/mocha/tree/master/example/config 15 | -------------------------------------------------------------------------------- /packages/lib/ES6.md: -------------------------------------------------------------------------------- 1 | https://hackernoon.com/es6-modules-today-with-typescript-22969cd360f0 2 | https://dev.to/remshams/rolling-up-a-multi-module-system-esm-cjs-compatible-npm-library-with-typescript-and-babel-3gjg -------------------------------------------------------------------------------- /packages/lib/src/architecture/component.ts: -------------------------------------------------------------------------------- 1 | import { AbstractController } from './controller'; 2 | 3 | export interface GenericComponent { 4 | ctrl: AbstractController; 5 | } 6 | -------------------------------------------------------------------------------- /packages/lib/src/architecture/decorators.ts: -------------------------------------------------------------------------------- 1 | export const ArchController = () => { 2 | return () => {}; 3 | }; 4 | export const ArchModel = () => { 5 | return () => {}; 6 | }; 7 | export const ArchService = () => { 8 | return () => {}; 9 | }; 10 | export const ArchView = () => { 11 | return () => {}; 12 | }; 13 | -------------------------------------------------------------------------------- /packages/lib/src/architecture/index.ts: -------------------------------------------------------------------------------- 1 | export * from './component'; 2 | export * from './controller'; 3 | export * from './decorators'; 4 | export * from './interfaces'; 5 | -------------------------------------------------------------------------------- /packages/lib/src/architecture/interfaces.ts: -------------------------------------------------------------------------------- 1 | export interface ViewControllerCouple { 2 | hooks?: { 3 | doDistroy?: Function; 4 | doRender?: Function; 5 | }; 6 | } 7 | -------------------------------------------------------------------------------- /packages/lib/src/components/index.ts: -------------------------------------------------------------------------------- 1 | export * from './vanilla'; 2 | -------------------------------------------------------------------------------- /packages/lib/src/components/vanilla.ts: -------------------------------------------------------------------------------- 1 | export class VanillaComponent extends HTMLElement { 2 | protected readonly dom: HTMLElement | ShadowRoot; 3 | 4 | constructor() { 5 | super(); 6 | this.dom = this; 7 | // this.attachShadow({ delegatesFocus: true, mode: 'open' }); 8 | // this.dom = this.shadowRoot; 9 | } 10 | 11 | // tslint:disable-next-line: no-empty 12 | protected render() {} 13 | 14 | public connectedCallback() { 15 | this.render(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages/lib/src/helpers/index.ts: -------------------------------------------------------------------------------- 1 | export * from './injector'; 2 | export * from './log'; 3 | -------------------------------------------------------------------------------- /packages/lib/src/helpers/validator.ts: -------------------------------------------------------------------------------- 1 | export class Validator { 2 | private constructor() {} 3 | 4 | public static isNumber(any: any): boolean { 5 | return isNaN(any) === false && typeof any === 'number'; 6 | } 7 | 8 | public static isArray(any: any, minLength = 0): boolean { 9 | return Array.isArray(any) && any.length >= minLength; 10 | } 11 | 12 | public static isObject(any: any): boolean { 13 | return typeof any === 'object' && any !== null && this.isArray(any) === false; 14 | } 15 | 16 | public static isString(any: any, minLength = 0): boolean { 17 | return typeof any === 'string' && any.length >= minLength; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/lib/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './architecture'; 2 | export * from './components'; 3 | export * from './helpers'; 4 | export * from './pattern'; 5 | export * from './shares'; 6 | -------------------------------------------------------------------------------- /packages/lib/src/pattern/index.ts: -------------------------------------------------------------------------------- 1 | export * from './list-of'; 2 | -------------------------------------------------------------------------------- /packages/lib/src/pattern/list-of.test.ts: -------------------------------------------------------------------------------- 1 | import { assert } from 'chai'; 2 | 3 | import { SetOf } from './list-of'; 4 | 5 | describe('Test: SetOf', () => { 6 | const setOf = new SetOf(Function); 7 | 8 | function test(value: any) { 9 | it(`Validator accept only Functions (${value})`, () => { 10 | assert.equal(setOf.length, 0); 11 | setOf.add(value); 12 | assert.equal(setOf.length, 0); 13 | }); 14 | } 15 | 16 | test(''); 17 | test(1); 18 | test(null); 19 | test({}); 20 | test([1, 1]); 21 | 22 | it(`Validator accept a AbstractValidator`, () => { 23 | assert.equal(setOf.length, 0); 24 | setOf.add(new Function()); 25 | assert.equal(setOf.length, 1); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /packages/lib/src/shares/index.ts: -------------------------------------------------------------------------------- 1 | export * from './filters'; 2 | -------------------------------------------------------------------------------- /packages/lib/tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "exclude": ["src/**/*.test.ts"] 4 | } 5 | -------------------------------------------------------------------------------- /packages/lib/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "moduleResolution": "node", 4 | "forceConsistentCasingInFileNames": true, 5 | "importHelpers": true, 6 | "sourceMap": true, 7 | "strict": false, 8 | "skipLibCheck": true, 9 | "removeComments": true, 10 | "target": "ES2015", 11 | "types": ["chai", "loglevel", "mocha", "node", "sinon"], 12 | "typeRoots": ["node_modules/@types"] 13 | }, 14 | "include": ["src"] 15 | } 16 | -------------------------------------------------------------------------------- /packages/openapi/.gitignore: -------------------------------------------------------------------------------- 1 | /dist 2 | /node_modules 3 | /typescript-rxjs 4 | -------------------------------------------------------------------------------- /packages/openapi/openapitools.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "node_modules/@openapitools/openapi-generator-cli/config.schema.json", 3 | "spaces": 2, 4 | "generator-cli": { 5 | "version": "5.2.1" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/openapi/src/models/version.yml: -------------------------------------------------------------------------------- 1 | IVersion: 2 | type: object 3 | properties: 4 | major: 5 | type: integer 6 | format: int64 7 | example: 1 8 | minor: 9 | type: integer 10 | format: int64 11 | example: 0 12 | patch: 13 | type: integer 14 | format: int64 15 | example: 0 16 | text: 17 | type: string 18 | example: 1.0.0 19 | label: 20 | type: string 21 | enum: 22 | - latest 23 | - next 24 | - rc 25 | - beta 26 | - alpha 27 | -------------------------------------------------------------------------------- /packages/openapi/src/openapi.yml: -------------------------------------------------------------------------------- 1 | openapi: 3.0.3 2 | info: 3 | title: Leanup Stack API 4 | version: 1.2.0 5 | servers: 6 | - url: http://localhost:9080/api/v1 7 | description: Development 8 | paths: 9 | /version: 10 | $ref: 'paths/version.yml' 11 | -------------------------------------------------------------------------------- /packages/openapi/src/paths/version.yml: -------------------------------------------------------------------------------- 1 | get: 2 | tags: 3 | - Version 4 | summery: Version 5 | responses: 6 | 200: 7 | description: OK 8 | content: 9 | application/json: 10 | schema: 11 | $ref: '../models/version.yml#/IVersion' 12 | -------------------------------------------------------------------------------- /packages/stack/bundlers/vite/.gitignore: -------------------------------------------------------------------------------- 1 | lib 2 | -------------------------------------------------------------------------------- /packages/stack/bundlers/webpack/.gitignore: -------------------------------------------------------------------------------- 1 | /dist 2 | -------------------------------------------------------------------------------- /packages/stack/bundlers/webpack/src/mjs/index.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'copy-modules-webpack-plugin'; 2 | declare module 'copy-webpack-plugin'; 3 | declare module 'mini-css-extract-plugin'; 4 | declare module 'sass'; 5 | -------------------------------------------------------------------------------- /packages/stack/bundlers/webpack/tsconfig.cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "module": "CommonJS", 5 | "target": "ES2015" 6 | }, 7 | "include": ["src/cjs/**/*.ts"] 8 | } 9 | -------------------------------------------------------------------------------- /packages/stack/bundlers/webpack/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "esModuleInterop": true, 4 | "moduleResolution": "node", 5 | "forceConsistentCasingInFileNames": true, 6 | "importHelpers": true, 7 | "sourceMap": true, 8 | "strict": true, 9 | "outDir": "./", 10 | "skipLibCheck": true, 11 | "removeComments": true, 12 | "types": ["node"], 13 | "pretty": true, 14 | "typeRoots": ["node_modules/@types"] 15 | }, 16 | "include": ["src/**/*.ts"], 17 | "exclude": ["node_modules"] 18 | } 19 | -------------------------------------------------------------------------------- /packages/stack/bundlers/webpack/tsconfig.mjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "module": "ESNext", 5 | "target": "ESNext" 6 | }, 7 | "include": ["src/mjs/**/*.ts"] 8 | } 9 | -------------------------------------------------------------------------------- /packages/stack/core/.gitignore: -------------------------------------------------------------------------------- 1 | /dist 2 | -------------------------------------------------------------------------------- /packages/stack/core/.mocharc.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | // Here's a JavaScript-based config file. 4 | // If you need conditional logic, you might want to use this type of config. 5 | // Otherwise, JSON or YAML is recommended. 6 | 7 | module.exports = { 8 | extension: ['js', 'jsx', 'ts', 'tsx'], 9 | reporter: 'spec', 10 | require: ['esbuild-register', 'jsdom-global/register', 'mock-local-storage'], 11 | spec: ['src/**/*.spec.*s*', 'src/**/*.test.*s*', 'tests/unit/**/*.spec.*s*', 'tests/unit/**/*.test.*s*'], 12 | }; 13 | 14 | // Source: https://github.com/mochajs/mocha/tree/master/example/config 15 | -------------------------------------------------------------------------------- /packages/stack/core/.npmignore: -------------------------------------------------------------------------------- 1 | tsconfig.json -------------------------------------------------------------------------------- /packages/stack/core/prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | printWidth: 120, 3 | singleQuote: true, 4 | }; 5 | -------------------------------------------------------------------------------- /packages/stack/core/src/proxies.ts: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | 3 | export let PROXIES: Object = {}; 4 | try { 5 | PROXIES = require(path.join(process.cwd(), `proxy.conf.json`)); 6 | } catch (error) { 7 | PROXIES = {}; 8 | } 9 | -------------------------------------------------------------------------------- /packages/stack/core/tsconfig.cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "module": "CommonJS", 5 | "target": "ES2015" 6 | }, 7 | "include": ["src/cjs/**/*.ts"] 8 | } 9 | -------------------------------------------------------------------------------- /packages/stack/core/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "esModuleInterop": true, 4 | "moduleResolution": "node", 5 | "forceConsistentCasingInFileNames": true, 6 | "importHelpers": true, 7 | "sourceMap": true, 8 | "strict": true, 9 | "outDir": "./", 10 | "skipLibCheck": true, 11 | "module": "ESNext", 12 | "removeComments": true, 13 | "types": ["node"], 14 | "pretty": true, 15 | "typeRoots": ["node_modules/@types"] 16 | }, 17 | "include": ["src/**/*.ts"], 18 | "exclude": ["node_modules"] 19 | } 20 | -------------------------------------------------------------------------------- /packages/stack/core/tsconfig.mjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "module": "ESNext", 5 | "target": "ESNext" 6 | }, 7 | "include": ["src/mjs/**/*.ts"] 8 | } 9 | -------------------------------------------------------------------------------- /packages/stack/frameworks/angular/.gitignore: -------------------------------------------------------------------------------- 1 | /dist 2 | -------------------------------------------------------------------------------- /packages/stack/frameworks/angular/snowpack.config.js: -------------------------------------------------------------------------------- 1 | // https://www.npmjs.com/package/snowpack-plugin-angular (deprecated) 2 | // https://www.npmjs.com/package/angular-snowpack-plugin (not maintained) 3 | 4 | const config = require('@leanup/stack-snowpack/snowpack.config'); 5 | 6 | // config.plugins.push([ 7 | // 'angular-snowpack-plugin', 8 | // { 9 | // angularJson: './angular.json', 10 | // }, 11 | // ]); 12 | config.plugins.push([ 13 | 'snowpack-plugin-angular', 14 | { 15 | args: '--project ./tsconfig.app.json', 16 | }, 17 | ]); 18 | 19 | module.exports = config; 20 | -------------------------------------------------------------------------------- /packages/stack/frameworks/angular/src/mjs/index.d.ts: -------------------------------------------------------------------------------- 1 | declare module '@leanup/stack-webpack'; 2 | declare module '@ngtools/webpack'; 3 | -------------------------------------------------------------------------------- /packages/stack/frameworks/angular/tsconfig.cjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "module": "CommonJS", 5 | "target": "ES2015" 6 | }, 7 | "include": ["src/cjs/**/*.ts"] 8 | } 9 | -------------------------------------------------------------------------------- /packages/stack/frameworks/angular/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "esModuleInterop": true, 4 | "moduleResolution": "node", 5 | "forceConsistentCasingInFileNames": true, 6 | "importHelpers": true, 7 | "sourceMap": true, 8 | "strict": true, 9 | "outDir": "./", 10 | "skipLibCheck": true, 11 | "module": "ESNext", 12 | "removeComments": true, 13 | "types": ["node"], 14 | "pretty": true, 15 | "typeRoots": ["node_modules/@types"] 16 | }, 17 | "include": ["src/**/*.ts"], 18 | "exclude": ["node_modules"] 19 | } 20 | -------------------------------------------------------------------------------- /packages/stack/frameworks/angular/tsconfig.mjs.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "module": "ESNext", 5 | "target": "ESNext" 6 | }, 7 | "include": ["src/mjs/**/*.ts"] 8 | } 9 | -------------------------------------------------------------------------------- /packages/stack/frameworks/angular/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib/webpack.config').default; 2 | -------------------------------------------------------------------------------- /packages/stack/frameworks/angularjs/.gitignore: -------------------------------------------------------------------------------- 1 | lib -------------------------------------------------------------------------------- /packages/stack/frameworks/angularjs/babel.config.js: -------------------------------------------------------------------------------- 1 | const config = require('@leanup/stack-plugin-babel/babel.config'); 2 | 3 | config.plugins.push('angularjs-annotate'); 4 | 5 | module.exports = config; 6 | -------------------------------------------------------------------------------- /packages/stack/frameworks/angularjs/snowpack.config.js: -------------------------------------------------------------------------------- 1 | const config = require('@leanup/stack-snowpack/snowpack.config'); 2 | 3 | config.plugins.push('@snowpack/plugin-babel'); 4 | 5 | module.exports = config; 6 | -------------------------------------------------------------------------------- /packages/stack/frameworks/angularjs/src/webpack.config.ts: -------------------------------------------------------------------------------- 1 | import { BABEL_LOADER } from '@leanup/stack-plugin-babel/lib/webpack.config'; 2 | import webpackConfig from '@leanup/stack-webpack'; 3 | 4 | export default function webpackAngularJSConfig(env: any, argv: any): Object { 5 | return webpackConfig(env, argv, [BABEL_LOADER]); 6 | } 7 | -------------------------------------------------------------------------------- /packages/stack/frameworks/angularjs/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "moduleResolution": "node", 4 | "forceConsistentCasingInFileNames": true, 5 | "importHelpers": true, 6 | "declaration": true, 7 | "sourceMap": true, 8 | "strict": true, 9 | "outDir": "./lib", 10 | "skipLibCheck": true, 11 | "module": "UMD", 12 | "removeComments": true, 13 | "target": "ES2015", 14 | "types": ["node"], 15 | "typeRoots": ["node_modules/@types"] 16 | }, 17 | "include": ["src/**/*.ts"], 18 | "exclude": ["node_modules/**/*", "src/**/*.test.ts"] 19 | } 20 | -------------------------------------------------------------------------------- /packages/stack/frameworks/angularjs/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib/webpack.config').default; 2 | -------------------------------------------------------------------------------- /packages/stack/frameworks/aurelia/.gitignore: -------------------------------------------------------------------------------- 1 | lib -------------------------------------------------------------------------------- /packages/stack/frameworks/aurelia/src/webpack.config.ts: -------------------------------------------------------------------------------- 1 | import webpackConfig from '@leanup/stack-webpack'; 2 | 3 | export default function webpackAureliaConfig(env: any, argv: any): Object { 4 | const config: any = webpackConfig(env, argv); 5 | const path = require('path'); 6 | 7 | const { AureliaPlugin } = require('aurelia-webpack-plugin'); 8 | config.plugins.push(new AureliaPlugin()); 9 | 10 | config.module.rules.push({ 11 | test: /\.html$/, 12 | loader: 'html-loader', 13 | }); 14 | 15 | config.resolve.modules.push(path.resolve(process.cwd(), 'src')); 16 | config.resolve.modules.push(path.resolve(process.cwd(), 'node_modules')); 17 | 18 | return config; 19 | } 20 | -------------------------------------------------------------------------------- /packages/stack/frameworks/aurelia/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "moduleResolution": "node", 4 | "forceConsistentCasingInFileNames": true, 5 | "importHelpers": true, 6 | "declaration": true, 7 | "sourceMap": true, 8 | "strict": true, 9 | "outDir": "./lib", 10 | "skipLibCheck": true, 11 | "module": "UMD", 12 | "removeComments": true, 13 | "target": "ES2015", 14 | "types": ["node"], 15 | "typeRoots": ["node_modules/@types"] 16 | }, 17 | "include": ["src/**/*.ts"], 18 | "exclude": ["node_modules/**/*", "src/**/*.test.ts"] 19 | } 20 | -------------------------------------------------------------------------------- /packages/stack/frameworks/aurelia/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib/webpack.config').default; 2 | -------------------------------------------------------------------------------- /packages/stack/frameworks/inferno/.gitignore: -------------------------------------------------------------------------------- 1 | lib -------------------------------------------------------------------------------- /packages/stack/frameworks/inferno/babel.config.js: -------------------------------------------------------------------------------- 1 | const config = require('@leanup/stack-plugin-babel/babel.config'); 2 | 3 | config.plugins.push([ 4 | 'babel-plugin-inferno', 5 | { 6 | imports: true, 7 | }, 8 | ]); 9 | 10 | module.exports = config; 11 | -------------------------------------------------------------------------------- /packages/stack/frameworks/inferno/snowpack.config.js: -------------------------------------------------------------------------------- 1 | const config = require('@leanup/stack-snowpack/snowpack.config'); 2 | 3 | config.plugins.push('@snowpack/plugin-babel'); 4 | 5 | module.exports = config; 6 | -------------------------------------------------------------------------------- /packages/stack/frameworks/inferno/src/webpack.config.ts: -------------------------------------------------------------------------------- 1 | import { BABEL_LOADER } from '@leanup/stack-plugin-babel/lib/webpack.config'; 2 | import webpackConfig from '@leanup/stack-webpack'; 3 | 4 | export default function webpackInfernoConfig(env: any, argv: any): Object { 5 | const config: any = webpackConfig(env, argv, [BABEL_LOADER]); 6 | 7 | config.resolve.alias['inferno'] = 8 | process.env.NODE_ENV === 'production' ? 'inferno/dist/index.esm.js' : 'inferno/dist/index.dev.esm.js'; 9 | 10 | return config; 11 | } 12 | -------------------------------------------------------------------------------- /packages/stack/frameworks/inferno/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "moduleResolution": "node", 4 | "forceConsistentCasingInFileNames": true, 5 | "importHelpers": true, 6 | "declaration": true, 7 | "sourceMap": true, 8 | "strict": true, 9 | "outDir": "./lib", 10 | "skipLibCheck": true, 11 | "module": "UMD", 12 | "removeComments": true, 13 | "target": "ES2015", 14 | "types": ["node"], 15 | "typeRoots": ["node_modules/@types"] 16 | }, 17 | "include": ["src/**/*.ts"], 18 | "exclude": ["node_modules/**/*", "src/**/*.test.ts"] 19 | } 20 | -------------------------------------------------------------------------------- /packages/stack/frameworks/inferno/vite.config.js: -------------------------------------------------------------------------------- 1 | const config = require('@leanup/stack-vite/vite.config'); 2 | 3 | config.resolve = config.resolve || {}; 4 | config.resolve.alias = config.resolve.alias || {}; 5 | config.resolve.alias['inferno'] = 6 | process.env.NODE_ENV === 'production' ? 'inferno/dist/index.esm.js' : 'inferno/dist/index.dev.esm.js'; 7 | 8 | module.exports = config; 9 | -------------------------------------------------------------------------------- /packages/stack/frameworks/inferno/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib/webpack.config').default; 2 | -------------------------------------------------------------------------------- /packages/stack/frameworks/lit-element/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@leanup/stack-lit-element", 3 | "version": "2.0.0-rc.80", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "regenerator-runtime": { 8 | "version": "0.13.11", 9 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", 10 | "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/stack/frameworks/preact/.gitignore: -------------------------------------------------------------------------------- 1 | lib -------------------------------------------------------------------------------- /packages/stack/frameworks/preact/snowpack.config.js: -------------------------------------------------------------------------------- 1 | const config = require('@leanup/stack-snowpack/snowpack.config'); 2 | 3 | config.alias = config.alias || {}; 4 | config.alias['react'] = 'preact/compat'; 5 | config.alias['react-dom'] = 'preact/compat'; 6 | 7 | module.exports = config; 8 | -------------------------------------------------------------------------------- /packages/stack/frameworks/preact/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "moduleResolution": "node", 4 | "forceConsistentCasingInFileNames": true, 5 | "importHelpers": true, 6 | "declaration": true, 7 | "sourceMap": true, 8 | "strict": true, 9 | "outDir": "./lib", 10 | "skipLibCheck": true, 11 | "module": "UMD", 12 | "removeComments": true, 13 | "target": "ES2015", 14 | "types": ["node"], 15 | "typeRoots": ["node_modules/@types"] 16 | }, 17 | "include": ["src/**/*.ts"], 18 | "exclude": ["node_modules/**/*", "src/**/*.test.ts"] 19 | } 20 | -------------------------------------------------------------------------------- /packages/stack/frameworks/preact/vite.config.js: -------------------------------------------------------------------------------- 1 | const { mergeConfig } = require('vite'); 2 | const preact = require('@preact/preset-vite'); 3 | const { unsetConfigPlugin } = require('vite-plugin-unset'); 4 | 5 | module.exports = mergeConfig(require('@leanup/stack-vite/vite.config'), { 6 | plugins: [ 7 | preact.default(), 8 | unsetConfigPlugin({ 9 | esbuild: { 10 | jsxInject: undefined, 11 | }, 12 | }), 13 | ], 14 | }); 15 | -------------------------------------------------------------------------------- /packages/stack/frameworks/preact/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib/webpack.config').default; 2 | -------------------------------------------------------------------------------- /packages/stack/frameworks/react/.gitignore: -------------------------------------------------------------------------------- 1 | lib -------------------------------------------------------------------------------- /packages/stack/frameworks/react/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "moduleResolution": "node", 4 | "forceConsistentCasingInFileNames": true, 5 | "importHelpers": true, 6 | "declaration": true, 7 | "sourceMap": true, 8 | "strict": true, 9 | "outDir": "./lib", 10 | "skipLibCheck": true, 11 | "module": "UMD", 12 | "removeComments": true, 13 | "target": "ES2015", 14 | "types": ["node"], 15 | "typeRoots": ["node_modules/@types"] 16 | }, 17 | "include": ["src/**/*.ts"], 18 | "exclude": ["node_modules/**/*", "src/**/*.test.ts"] 19 | } 20 | -------------------------------------------------------------------------------- /packages/stack/frameworks/react/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib/webpack.config').default; 2 | -------------------------------------------------------------------------------- /packages/stack/frameworks/solid/.gitignore: -------------------------------------------------------------------------------- 1 | lib -------------------------------------------------------------------------------- /packages/stack/frameworks/solid/babel.config.js: -------------------------------------------------------------------------------- 1 | const config = require('@leanup/stack-plugin-babel/babel.config'); 2 | 3 | config.presets = Array.isArray(config.presets) ? config.presets : []; 4 | config.presets.push('solid'); 5 | 6 | module.exports = config; 7 | -------------------------------------------------------------------------------- /packages/stack/frameworks/solid/snowpack.config.js: -------------------------------------------------------------------------------- 1 | const config = require('@leanup/stack-snowpack/snowpack.config'); 2 | 3 | config.plugins.push('@snowpack/plugin-babel'); 4 | 5 | module.exports = config; 6 | -------------------------------------------------------------------------------- /packages/stack/frameworks/solid/src/webpack.config.ts: -------------------------------------------------------------------------------- 1 | import { BABEL_LOADER } from '@leanup/stack-plugin-babel/lib/webpack.config'; 2 | import webpackConfig from '@leanup/stack-webpack'; 3 | 4 | export default function webpackSolidConfig(env: any, argv: any): Object { 5 | const config: any = webpackConfig(env, argv, [BABEL_LOADER]); 6 | return config; 7 | } 8 | -------------------------------------------------------------------------------- /packages/stack/frameworks/solid/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "moduleResolution": "node", 4 | "forceConsistentCasingInFileNames": true, 5 | "importHelpers": true, 6 | "declaration": true, 7 | "sourceMap": true, 8 | "strict": true, 9 | "outDir": "./lib", 10 | "skipLibCheck": true, 11 | "module": "UMD", 12 | "removeComments": true, 13 | "target": "ES2015", 14 | "types": ["node"], 15 | "typeRoots": ["node_modules/@types"] 16 | }, 17 | "include": ["src/**/*.ts"], 18 | "exclude": ["node_modules/**/*", "src/**/*.test.ts"] 19 | } 20 | -------------------------------------------------------------------------------- /packages/stack/frameworks/solid/vite.config.js: -------------------------------------------------------------------------------- 1 | const config = require('@leanup/stack-vite/vite.config'); 2 | // https://www.npmjs.com/package/vite-plugin-solid 3 | module.exports = config; 4 | -------------------------------------------------------------------------------- /packages/stack/frameworks/solid/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib/webpack.config').default; 2 | -------------------------------------------------------------------------------- /packages/stack/frameworks/svelte/.gitignore: -------------------------------------------------------------------------------- 1 | lib -------------------------------------------------------------------------------- /packages/stack/frameworks/svelte/snowpack.config.js: -------------------------------------------------------------------------------- 1 | const config = require('@leanup/stack-snowpack/snowpack.config'); 2 | 3 | config.plugins.push('@snowpack/plugin-svelte'); 4 | 5 | module.exports = config; 6 | -------------------------------------------------------------------------------- /packages/stack/frameworks/svelte/src/webpack.config.ts: -------------------------------------------------------------------------------- 1 | import webpackConfig from '@leanup/stack-webpack'; 2 | 3 | export default function webpackSvelteConfig(env: any, argv: any): Object { 4 | const config: any = webpackConfig(env, argv); 5 | 6 | config.module.rules.push({ 7 | test: /\.svelte$/, 8 | use: 'svelte-loader', 9 | }); 10 | 11 | return config; 12 | } 13 | -------------------------------------------------------------------------------- /packages/stack/frameworks/svelte/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "moduleResolution": "node", 4 | "forceConsistentCasingInFileNames": true, 5 | "importHelpers": true, 6 | "declaration": true, 7 | "sourceMap": true, 8 | "strict": true, 9 | "outDir": "./lib", 10 | "skipLibCheck": true, 11 | "module": "UMD", 12 | "removeComments": true, 13 | "target": "ES2015", 14 | "types": ["node"], 15 | "typeRoots": ["node_modules/@types"] 16 | }, 17 | "include": ["src/**/*.ts"], 18 | "exclude": ["node_modules/**/*", "src/**/*.test.ts"] 19 | } 20 | -------------------------------------------------------------------------------- /packages/stack/frameworks/svelte/vite.config.js: -------------------------------------------------------------------------------- 1 | const config = require('@leanup/stack/vite.config'); 2 | const svelte = require('vite-plugin-svelte'); 3 | 4 | config.plugins = config.plugins || []; 5 | config.plugins.push(svelte()); 6 | 7 | module.exports = config; 8 | -------------------------------------------------------------------------------- /packages/stack/frameworks/svelte/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib/webpack.config').default; 2 | -------------------------------------------------------------------------------- /packages/stack/frameworks/vue/.gitignore: -------------------------------------------------------------------------------- 1 | lib -------------------------------------------------------------------------------- /packages/stack/frameworks/vue/src/webpack.config.ts: -------------------------------------------------------------------------------- 1 | import webpackConfig from '@leanup/stack-webpack'; 2 | 3 | export default function webpackVueConfig(env: any, argv: any): Object { 4 | const config: any = webpackConfig(env, argv); 5 | 6 | const VueLoaderPlugin = require('vue-loader/lib/plugin'); 7 | config.plugins.push(new VueLoaderPlugin()); 8 | 9 | config.module.rules.push({ 10 | test: /\.vue$/, 11 | loader: 'vue-loader', 12 | }); 13 | 14 | return config; 15 | } 16 | -------------------------------------------------------------------------------- /packages/stack/frameworks/vue/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "moduleResolution": "node", 4 | "forceConsistentCasingInFileNames": true, 5 | "importHelpers": true, 6 | "declaration": true, 7 | "sourceMap": true, 8 | "strict": true, 9 | "outDir": "./lib", 10 | "skipLibCheck": true, 11 | "module": "UMD", 12 | "removeComments": true, 13 | "target": "ES2015", 14 | "types": ["node"], 15 | "typeRoots": ["node_modules/@types"] 16 | }, 17 | "include": ["src/**/*.ts"], 18 | "exclude": ["node_modules/**/*", "src/**/*.test.ts"] 19 | } 20 | -------------------------------------------------------------------------------- /packages/stack/frameworks/vue/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib/webpack.config').default; 2 | -------------------------------------------------------------------------------- /packages/stack/frameworks/vue3/.gitignore: -------------------------------------------------------------------------------- 1 | lib -------------------------------------------------------------------------------- /packages/stack/frameworks/vue3/snowpack.config.js: -------------------------------------------------------------------------------- 1 | const config = require('@leanup/stack-snowpack/snowpack.config'); 2 | 3 | config.plugins.push('@snowpack/plugin-vue'); 4 | 5 | module.exports = config; 6 | -------------------------------------------------------------------------------- /packages/stack/frameworks/vue3/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "moduleResolution": "node", 4 | "forceConsistentCasingInFileNames": true, 5 | "importHelpers": true, 6 | "declaration": true, 7 | "sourceMap": true, 8 | "strict": true, 9 | "outDir": "./lib", 10 | "skipLibCheck": true, 11 | "module": "UMD", 12 | "removeComments": true, 13 | "target": "ES2015", 14 | "types": ["node"], 15 | "typeRoots": ["node_modules/@types"] 16 | }, 17 | "include": ["src/**/*.ts"], 18 | "exclude": ["node_modules/**/*", "src/**/*.test.ts"] 19 | } 20 | -------------------------------------------------------------------------------- /packages/stack/frameworks/vue3/vite.config.js: -------------------------------------------------------------------------------- 1 | const config = require('@leanup/stack/vite.config'); 2 | const vue = require('@vitejs/plugin-vue'); 3 | 4 | config.plugins = config.plugins || []; 5 | config.plugins.push(vue()); 6 | 7 | module.exports = config; 8 | -------------------------------------------------------------------------------- /packages/stack/frameworks/vue3/webpack.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib/webpack.config').default; 2 | -------------------------------------------------------------------------------- /packages/stack/plugins/babel/.gitignore: -------------------------------------------------------------------------------- 1 | lib -------------------------------------------------------------------------------- /packages/stack/plugins/babel/src/webpack.config.ts: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | 3 | export const BABEL_LOADER = { 4 | test: /\.(j|t)sx$/, 5 | use: { 6 | loader: 'babel-loader', 7 | options: Object.assign( 8 | { 9 | cacheCompression: false, 10 | cacheDirectory: true, 11 | }, 12 | require(path.join(process.cwd(), './babel.config')) 13 | ), 14 | }, 15 | }; 16 | -------------------------------------------------------------------------------- /packages/stack/plugins/babel/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "moduleResolution": "node", 4 | "forceConsistentCasingInFileNames": true, 5 | "importHelpers": true, 6 | "declaration": true, 7 | "sourceMap": true, 8 | "strict": true, 9 | "outDir": "./lib", 10 | "skipLibCheck": true, 11 | "module": "UMD", 12 | "removeComments": true, 13 | "target": "ES2015", 14 | "types": ["node"], 15 | "typeRoots": ["node_modules/@types"] 16 | }, 17 | "include": ["src/**/*.ts"], 18 | "exclude": ["node_modules/**/*", "src/**/*.test.ts"] 19 | } 20 | -------------------------------------------------------------------------------- /packages/stack/plugins/cucumber/.gitignore: -------------------------------------------------------------------------------- 1 | lib -------------------------------------------------------------------------------- /packages/stack/plugins/cucumber/cucumber.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | default: '--publish-quiet', 3 | }; 4 | -------------------------------------------------------------------------------- /packages/stack/plugins/cucumber/index.js: -------------------------------------------------------------------------------- 1 | module.exports = __dirname; 2 | -------------------------------------------------------------------------------- /packages/stack/plugins/cucumber/template/cucumber.conf.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/cli-cucumber/cucumber.conf'); 2 | -------------------------------------------------------------------------------- /packages/stack/plugins/cucumber/template/cucumber.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/cli-cucumber/cucumber'); 2 | -------------------------------------------------------------------------------- /packages/stack/plugins/cucumber/template/tests/cucumber/features/google.feature: -------------------------------------------------------------------------------- 1 | Feature: Google Search 2 | 3 | Scenario: Searching Google 4 | 5 | Given I open Google's search page 6 | Then the title is "Google" 7 | And the Google search form exists -------------------------------------------------------------------------------- /packages/stack/plugins/cucumber/template/tests/cucumber/step-definitions/google.js: -------------------------------------------------------------------------------- 1 | const { client } = require('nightwatch-api'); 2 | const { Given, Then } = require('@cucumber/cucumber'); 3 | 4 | Given(/^I open Google's search page$/, () => { 5 | return client.url('http://google.com').waitForElementVisible('body', 1000); 6 | }); 7 | 8 | Then(/^the title is "([^"]*)"$/, (title) => { 9 | return client.assert.title(title); 10 | }); 11 | 12 | Then(/^the Google search form exists$/, () => { 13 | return client.assert.visible('input[name="q"]'); 14 | }); 15 | -------------------------------------------------------------------------------- /packages/stack/plugins/cucumber/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "moduleResolution": "node", 4 | "forceConsistentCasingInFileNames": true, 5 | "importHelpers": true, 6 | "declaration": true, 7 | "sourceMap": true, 8 | "strict": true, 9 | "outDir": "./lib", 10 | "skipLibCheck": true, 11 | "module": "UMD", 12 | "removeComments": true, 13 | "target": "ES2015", 14 | "types": ["node"], 15 | "typeRoots": ["node_modules/@types"] 16 | }, 17 | "include": ["src/**/*.ts"], 18 | "exclude": ["node_modules/**/*", "src/**/*.test.ts"] 19 | } 20 | -------------------------------------------------------------------------------- /packages/stack/plugins/git-hooks/commitlint.config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Documentation 3 | * - https://commitlint.js.org/ 4 | * - https://commitlint.js.org/#/concepts-commit-conventions 5 | * - https://commitlint.js.org/#/reference-configuration 6 | */ 7 | module.exports = { 8 | extends: ['@commitlint/config-conventional'], 9 | formatter: '@commitlint/format', 10 | }; 11 | -------------------------------------------------------------------------------- /packages/stack/plugins/git-hooks/template/commitlint.config.js: -------------------------------------------------------------------------------- 1 | module.exports = require('@leanup/git-hooks/commitlint.config'); 2 | -------------------------------------------------------------------------------- /packages/stack/plugins/pwa/.gitignore: -------------------------------------------------------------------------------- 1 | lib -------------------------------------------------------------------------------- /packages/stack/plugins/pwa/index.js: -------------------------------------------------------------------------------- 1 | module.exports = __dirname; 2 | -------------------------------------------------------------------------------- /packages/stack/plugins/pwa/src/cli.js: -------------------------------------------------------------------------------- 1 | module.exports = (CLI) => { 2 | CLI.addOptionToCommand(['build', 'serve'], [ 3 | { flags: '--pwa [generateSW|injectManifest]', description: 'gernerate pwa manifest and service worker' }, 4 | ]); 5 | CLI.addActionToCommand(['build', 'serve'], (options) => { 6 | const spawnArgs = []; 7 | if (options.pwa) { 8 | spawnArgs.push(`--pwa=${options.pwa}`); 9 | } 10 | return spawnArgs; 11 | }); 12 | }; 13 | export {}; 14 | -------------------------------------------------------------------------------- /packages/stack/plugins/pwa/src/cli.ts: -------------------------------------------------------------------------------- 1 | import { AbstractCLI } from '@leanup/cli/lib/abstract-cli'; 2 | import { BuildOps } from '@leanup/cli/lib/interfaces'; 3 | 4 | interface PwaOps extends BuildOps { 5 | pwa: string; 6 | } 7 | 8 | module.exports = (CLI: AbstractCLI) => { 9 | CLI.addOptionToCommand( 10 | ['build', 'serve'], 11 | [{ flags: '--pwa [generateSW|injectManifest]', description: 'gernerate pwa manifest and service worker' }] 12 | ); 13 | CLI.addActionToCommand(['build', 'serve'], (options: PwaOps) => { 14 | const spawnArgs = []; 15 | if (options.pwa) { 16 | spawnArgs.push(`--pwa=${options.pwa}`); 17 | } 18 | return spawnArgs; 19 | }); 20 | }; 21 | -------------------------------------------------------------------------------- /packages/stack/plugins/pwa/template/pwa-manifest.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | module.exports = { 3 | name: '@template/pwa - SPA/PWA', 4 | short_name: '@template/pwa', 5 | description: '...', 6 | lang: 'de-DE', 7 | start_url: 'https://', 8 | display: 'standalone', 9 | orientation: 'any', 10 | theme_color: '#C8A2C8', 11 | background_color: '#DCD0FF', 12 | filename: 'manifest.json', 13 | icons: [ 14 | { 15 | src: path.resolve('public/assets/pwa.icon.png'), 16 | sizes: [96, 128, 192, 256, 384, 512], 17 | }, 18 | ], 19 | crossorigin: null, 20 | inject: true, 21 | fingerprints: false, 22 | ios: false, 23 | publicPath: null, 24 | includeDirectory: true, 25 | }; 26 | -------------------------------------------------------------------------------- /packages/stack/plugins/pwa/template/workbox-config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | swDest: 'dist/sw.js', 3 | runtimeCaching: [ 4 | { 5 | urlPattern: /\.(css|gif|gz|jpg|js|png|html|json)$/, 6 | handler: 'CacheFirst' 7 | } 8 | ], 9 | skipWaiting: true, 10 | clientsClaim: true 11 | }; 12 | -------------------------------------------------------------------------------- /packages/stack/plugins/pwa/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "moduleResolution": "node", 4 | "forceConsistentCasingInFileNames": true, 5 | "importHelpers": true, 6 | "declaration": true, 7 | "sourceMap": true, 8 | "strict": true, 9 | "outDir": "./lib", 10 | "skipLibCheck": true, 11 | "module": "UMD", 12 | "removeComments": true, 13 | "target": "ES2015", 14 | "types": ["node"], 15 | "typeRoots": ["node_modules/@types"] 16 | }, 17 | "include": ["src/**/*.ts"], 18 | "exclude": ["node_modules/**/*", "src/**/*.test.ts"] 19 | } 20 | -------------------------------------------------------------------------------- /prettier.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | ...require('./packages/stack/core/prettier.config'), 3 | svelteSortOrder: 'options-styles-scripts-markup', 4 | svelteStrictMode: true, 5 | svelteBracketNewLine: true, 6 | svelteAllowShorthand: false, 7 | svelteIndentScriptAndStyle: false, 8 | }; 9 | -------------------------------------------------------------------------------- /scripts/.gitignore: -------------------------------------------------------------------------------- 1 | workspace -------------------------------------------------------------------------------- /scripts/access.sh: -------------------------------------------------------------------------------- 1 | echo 2 | echo npm access "$1" "@leanup/$2" 3 | npm access "$1" "@leanup/$2" -------------------------------------------------------------------------------- /scripts/deprecate.sh: -------------------------------------------------------------------------------- 1 | echo 2 | echo npm deprecate "@leanup/$1@$2" "$3" 3 | npm deprecate "@leanup/$1@$2" "$3" -------------------------------------------------------------------------------- /scripts/dist-tag.sh: -------------------------------------------------------------------------------- 1 | echo 2 | echo npm dist-tag $1 @leanup/$2@$3 "$4" 3 | npm dist-tag $1 @leanup/$2@$3 "$4" 4 | 5 | echo npm dist-tag ls @leanup/$2 6 | npm dist-tag ls @leanup/$2 7 | -------------------------------------------------------------------------------- /scripts/package.js: -------------------------------------------------------------------------------- 1 | require("fs").writeFileSync( 2 | require('path').resolve(process.cwd(), process.argv[2], 'package.json'), 3 | `{ 4 | "type": "${process.argv[3]}" 5 | } 6 | `, 7 | { 8 | encoding: "utf8", 9 | } 10 | ); 11 | -------------------------------------------------------------------------------- /scripts/unpublish-1.0.sh: -------------------------------------------------------------------------------- 1 | for i in {0..4} 2 | do 3 | sh unpublish-all.sh "1.0.0-beta.$i" 4 | done 5 | 6 | bash ./unpublish-all.sh "1.0.0-rc.0" 7 | 8 | for i in {500..527} 9 | do 10 | sh unpublish-all.sh "1.0.0-rc.$i" 11 | done 12 | 13 | for i in {0..3} 14 | do 15 | sh unpublish-all.sh "1.0.22-webpack.$i" 16 | done 17 | 18 | for i in {0..15} 19 | do 20 | sh unpublish-all.sh "1.1.0-webpack.$i" 21 | done -------------------------------------------------------------------------------- /scripts/unpublish-1.1-a.sh: -------------------------------------------------------------------------------- 1 | for i in {0..100} 2 | do 3 | sh unpublish-all.sh "1.1.0-rc.$i" 4 | done -------------------------------------------------------------------------------- /scripts/unpublish-1.1-b.sh: -------------------------------------------------------------------------------- 1 | for i in {100..230} 2 | do 3 | sh unpublish-all.sh "1.1.0-rc.$i" 4 | done -------------------------------------------------------------------------------- /scripts/unpublish-1.2.sh: -------------------------------------------------------------------------------- 1 | for i in {0..2} 2 | do 3 | bash ./unpublish-all.sh "1.2.0-beta.$i" 4 | done 5 | 6 | for i in {0..31} 7 | do 8 | bash ./unpublish-all.sh "1.2.0-rc.$i" 9 | done -------------------------------------------------------------------------------- /scripts/unpublish-loop.sh: -------------------------------------------------------------------------------- 1 | for (( i=$(($2)); i<=$(($3)); i++ )) 2 | do 3 | sh unpublish-all.sh $1.$i 4 | done -------------------------------------------------------------------------------- /scripts/unpublish.set.sh: -------------------------------------------------------------------------------- 1 | # sh unpublish.all.sh 1.1.0-rc.200 2 | # sh unpublish.all.sh 1.1.0-rc.201 3 | # sh unpublish.all.sh 1.1.0-rc.202 4 | # sh unpublish.all.sh 1.1.0-rc.203 5 | # sh unpublish.all.sh 1.1.0-rc.204 6 | # sh unpublish.all.sh 1.1.0-rc.205 7 | # sh unpublish.all.sh 1.1.0-rc.206 8 | sh unpublish.all.sh 1.1.0-rc.207 -------------------------------------------------------------------------------- /scripts/unpublish.sh: -------------------------------------------------------------------------------- 1 | bash ./access.sh restricted $1 2 | 3 | bash ./deprecate.sh "$1" "$2" "The version $2 of the package @leanup/$1 is no longer maintained and will be removed from the registry shortly. Instead, please switch to a newer, well-maintained version." 4 | # bash ./deprecate.sh "$1" "$2" "This version $2 of the package @leanup/$1 contains a bug and is marked as deprecated. Instead, please switch to a newer, well-maintained version." 5 | 6 | echo 7 | echo npm unpublish --force "@leanup/$1@$2" 8 | npm unpublish --force "@leanup/$1@$2" 9 | 10 | bash ./access.sh public $1 -------------------------------------------------------------------------------- /scripts/wake-up-all.sh: -------------------------------------------------------------------------------- 1 | sh wake-up.sh angular "$1" "$2" 2 | sh wake-up.sh angularjs "$1" "$2" 3 | sh wake-up.sh aurelia "$1" "$2" 4 | sh wake-up.sh inferno "$1" "$2" 5 | sh wake-up.sh lit-element "$1" "$2" 6 | sh wake-up.sh preact "$1" "$2" 7 | sh wake-up.sh react "$1" "$2" 8 | sh wake-up.sh solid "$1" "$2" 9 | sh wake-up.sh svelte "$1" "$2" 10 | sh wake-up.sh vanilla "$1" "$2" 11 | sh wake-up.sh vue "$1" "$2" 12 | sh wake-up.sh vue3 "$1" "$2" 13 | --------------------------------------------------------------------------------