Skip to content
Snippets Groups Projects
Verified Commit 80415d68 authored by Volker Schukai's avatar Volker Schukai :alien:
Browse files

release and publish to npm

Bump version to 2.0.14
fix makefile and publishing
parent c304545c
No related branches found
No related tags found
No related merge requests found
Showing
with 1242 additions and 27 deletions
# Makefile comes from update
Makefile.example
# Vendor
/development/vendor/
/deployment/vendor/
# Created by https://www.toptal.com/developers/gitignore/api/intellij+iml,phpunit,git,vim,visualstudiocode,phpstorm,go,intellij+all,netbeans,dbeaver,node,yarn
# Edit at https://www.toptal.com/developers/gitignore?templates=intellij+iml,phpunit,git,vim,visualstudiocode,phpstorm,go,intellij+all,netbeans,dbeaver,node,yarn
......@@ -7,7 +15,7 @@
### Git ###
# Created by git for backups. To disable backups in Git:
# git config --global mergetool.keepBackup false
# $ git config --global mergetool.keepBackup false
*.orig
# Created by git when using merge tools for conflicts
......@@ -415,7 +423,8 @@ dist
# Cache file creation bug
# See https://youtrack.jetbrains.com/issue/JBR-2257
.idea/ACHE_FILE
.idea/$CACHE_FILE$
# CodeStream plugin
# https://plugins.jetbrains.com/plugin/12206-codestream
.idea/codestream.xml
......@@ -501,4 +510,3 @@ tags
# and uncomment the following lines
# .pnp.*
......@@ -21,12 +21,14 @@ THIS_MAKEFILE_PATH:=$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
PROJECT_ROOT:=$(shell cd $(dir $(THIS_MAKEFILE_PATH));pwd)/
THIS_MAKEFILE:=$(PROJECT_ROOT)$(THIS_MAKEFILE_PATH)
# include project.mk only if it exists
-include $(PROJECT_ROOT)project.mk
## Define the location of Makefiles
# Define the location of Makefiles
MAKEFILE_IMPORT_PATH?=$(PROJECT_ROOT)makefiles/
# include project.mk only if it exists
-include $(MAKEFILE_IMPORT_PATH)project.mk
#############################################################################################
......@@ -41,30 +43,43 @@ include $(MAKEFILE_IMPORT_PATH)directories-standard.mk
include $(MAKEFILE_IMPORT_PATH)jsdoc.mk
include $(MAKEFILE_IMPORT_PATH)output.mk
include $(MAKEFILE_IMPORT_PATH)placeholder.mk
include $(MAKEFILE_IMPORT_PATH)conan.mk
include $(MAKEFILE_IMPORT_PATH)s3.mk
#include $(MAKEFILE_IMPORT_PATH)readme-standard.mk
include $(MAKEFILE_IMPORT_PATH)readme-webcomponents.mk
include $(MAKEFILE_IMPORT_PATH)licenses.mk
include $(MAKEFILE_IMPORT_PATH)license-agpl3.mk
#include $(MAKEFILE_IMPORT_PATH)license-unlicensed.mk
#include $(MAKEFILE_IMPORT_PATH)license-all-rights-reserved.mk
include $(MAKEFILE_IMPORT_PATH)jsdoc-json.mk
#include $(MAKEFILE_IMPORT_PATH)go.mk
include $(MAKEFILE_IMPORT_PATH)go.mk
include $(MAKEFILE_IMPORT_PATH)changelog.mk
#include $(MAKEFILE_IMPORT_PATH)docman.mk
#include $(MAKEFILE_IMPORT_PATH)reqman.mk
include $(MAKEFILE_IMPORT_PATH)git.mk
include $(MAKEFILE_IMPORT_PATH)gitignore.mk
include $(MAKEFILE_IMPORT_PATH)color.mk
include $(MAKEFILE_IMPORT_PATH)version.mk
#include $(MAKEFILE_IMPORT_PATH)docker.mk
include $(MAKEFILE_IMPORT_PATH)node.mk
include $(MAKEFILE_IMPORT_PATH)terminal.mk
#include $(MAKEFILE_IMPORT_PATH)target-go-fetch-licenses.mk
include $(MAKEFILE_IMPORT_PATH)target-deploy-tool.mk
include $(MAKEFILE_IMPORT_PATH)target-go-fetch-licenses.mk
include $(MAKEFILE_IMPORT_PATH)target-add-licenses.mk
#include $(MAKEFILE_IMPORT_PATH)target-deploy-tool.mk
include $(MAKEFILE_IMPORT_PATH)target-jsdoc-build.mk
include $(MAKEFILE_IMPORT_PATH)target-jekyll.mk
include $(MAKEFILE_IMPORT_PATH)target-minerva.mk
#include $(MAKEFILE_IMPORT_PATH)target-docman.mk
include $(MAKEFILE_IMPORT_PATH)target-node-build.mk
#include $(MAKEFILE_IMPORT_PATH)target-caddy.mk
include $(MAKEFILE_IMPORT_PATH)target-conan.mk
include $(MAKEFILE_IMPORT_PATH)target-update-makefiles.mk
include $(MAKEFILE_IMPORT_PATH)target-help.mk
#include $(MAKEFILE_IMPORT_PATH)target-go-build.mk
include $(MAKEFILE_IMPORT_PATH)target-node-build.mk
include $(MAKEFILE_IMPORT_PATH)target-node-test.mk
include $(MAKEFILE_IMPORT_PATH)target-npm-publish.mk
include $(MAKEFILE_IMPORT_PATH)target-git.mk
include $(MAKEFILE_IMPORT_PATH)target-init-standard.mk
#include $(MAKEFILE_IMPORT_PATH)target-init-standard.mk
#include $(MAKEFILE_IMPORT_PATH)target-init-webcomponent.mk
include $(MAKEFILE_IMPORT_PATH)target-version.mk
include $(MAKEFILE_IMPORT_PATH)target-variable.mk
include $(MAKEFILE_IMPORT_PATH)terminal-check.mk
......
{
"name": "@schukai/monster",
"version": "2.0.8",
"version": "2.0.14",
"description": "Monster is a simple library for creating fast, robust and lightweight websites.",
"keywords": [
"framework",
......
......@@ -137,7 +137,7 @@ function getMonsterVersion() {
}
/** don't touch, replaced by make with package.json version */
monsterVersion = new Version('2.0.8')
monsterVersion = new Version('2.0.14')
return monsterVersion;
......
#############################################################################################
#############################################################################################
##
## CHANGELOG
##
#############################################################################################
#############################################################################################
GIT_CHGLOG_BIN := $(shell command -v git-chglog 2> /dev/null)
GIT_CHGLOG_CONFIG_DIR := $(PROJECT_ROOT).chglog
REPOSURL := $(subst .git,,$(subst $(shell git config --get user.name)@,,$(shell git config --get remote.origin.url)))
ifeq ($(GO),)
$(error $(ERRORMARKER) GO is not defined)
endif
ifeq ($(GIT_CHGLOG_BIN),)
$(shell $(GO) install github.com/git-chglog/git-chglog/cmd/git-chglog@latest)
endif
ifneq ($(shell test -d $(GIT_CHGLOG_CONFIG_DIR) && echo -n yes),yes)
$(shell mkdir -p $(GIT_CHGLOG_CONFIG_DIR))
endif
remove-config-files:
$(shell rm -Rf $(GIT_CHGLOG_CONFIG_DIR)/ && mkdir -p $(GIT_CHGLOG_CONFIG_DIR))
.PHONY: update-chglog-files
## update standard git-chglog configuration files
update-chglog-files: remove-config-files $(GIT_CHGLOG_CONFIG_DIR)/config.yml $(GIT_CHGLOG_CONFIG_DIR)/CHANGELOG.tpl.md
$(ECHOMARKER) "update standard git-chglog configuration files"
define GIT_CHGLOG_CONFIG_FILE
style: gitlab
template: CHANGELOG.tpl.md
info:
title: CHANGELOG
repository_url: $(REPOSURL)
options:
commits:
filters:
Type:
- feat
- fix
- doc
- refactor
- perf
- test
- chore
## deprecated types and typos
- docs
- documentation
- feat
- added
- add
- bugfix
- revert
- update
- updates
- change
- changed
commit_groups:
title_maps:
feat: Add Features
fix: Bug Fixes
doc: Documentation
refactor: Code Refactoring
perf: Performance Improvements
test: Tests
## Chore is used for all other changes that don't fit in the other categories
chore: Changes
## deprecated types and typos
docs: Documentation
documentation: Documentation
added: Add Features
add: Add Features
bugfix: Bug Fixes
revert: Reverts
update: Changes
updates: Changes
change: Changes
changed: Changes
header:
pattern: "^(\\w*)(?:\\(([\\w\\$$\\.\\-\\*\\s]*)\\))?\\:\\s(.*)$$"
pattern_maps:
- Type
- Scope
- Subject
notes:
keywords:
- BREAKING CHANGE
endef
export GIT_CHGLOG_CONFIG_FILE
$(GIT_CHGLOG_CONFIG_DIR)/config.yml:
$(QUITE) $(ECHO) "$$GIT_CHGLOG_CONFIG_FILE" >> $@
define GIT_CHGLOG_CONFIG_TEMPLATE
{{ range .Versions }}
<a name="{{ .Tag.Name }}"></a>
## {{ if .Tag.Previous }}[{{ .Tag.Name }}]{{ else }}{{ .Tag.Name }}{{ end }} - {{ datetime "2006-01-02" .Tag.Date }}
{{ range .CommitGroups -}}
### {{ .Title }}
{{ range .Commits -}}
- {{ if .Scope }}**{{ .Scope }}:** {{ end }}{{ .Subject }}
{{ end }}
{{ end -}}
{{- if .NoteGroups -}}
{{ range .NoteGroups -}}
### {{ .Title }}
{{ range .Notes }}
{{ .Body }}
{{ end }}
{{ end -}}
{{ end -}}
{{ end -}}
{{- if .Versions }}
{{ range .Versions -}}
{{ if .Tag.Previous -}}
[{{ .Tag.Name }}]: {{ $$.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}
{{ end -}}
{{ end -}}
{{ end -}}
endef
export GIT_CHGLOG_CONFIG_TEMPLATE
$(GIT_CHGLOG_CONFIG_DIR)/CHANGELOG.tpl.md:
$(QUITE) $(ECHO) "$$GIT_CHGLOG_CONFIG_TEMPLATE" >> $@
## location of CHANGELOG.md file
CHANGELOG_FILE ?= $(PROJECT_ROOT)CHANGELOG.md
EXECUTABLES = $(EXECUTABLES:-) $(GIT_CHGLOG_BIN)
\ No newline at end of file
#############################################################################################
#############################################################################################
##
## DEFINE CONAN
##
#############################################################################################
#############################################################################################
CONAN_BIN ?= $(VENDOR_PATH)conan
CONAN_CONFIG ?= $(VENDOR_PATH)conan.conf
define CONANEXAMPLECONF
Server:
# The hostname or IP address of the server (CONAN_SERVER_HOST)
# Domain, IP or hostname of the server
#Host: localhost:8080
# The port of the server (CONAN_SERVER_ADDRESS)
# Address: localhost
# The port of the server (CONAN_SERVER_PORT)
# Port: 8080
#
Path:
# The path to the server (CONAN_SERVER_WEB_PATH)
Web: web
Watch:
- Path: src
Command: /bin/bash -c "npx esbuild --bundle --outfile={{ .WebPath }}/scripts/bundle.js --sourcemap {{ .Path }}"
Exclude:
- ~$
- ^\.
- Path: web
Exclude:
- ~$
- ^\.
Flags:
FollowSymlinks: true
endef
export CONANEXAMPLECONF
$(CONAN_CONFIG):
$(QUITE) $(ECHO) "$$CONANEXAMPLECONF" >> $@
......@@ -29,6 +29,7 @@ VENDOR_PATH ?= $(DEPLOYMENT_PATH)vendor/
TEST_PATH ?= $(DEVELOPMENT_PATH)test/
DEPLOYMENT_SCRIPTS_PATH ?= $(DEPLOYMENT_PATH)script/
LICENSE_PATH ?= $(PROJECT_ROOT)
PROJECT_DIRECTORIES := $(PROJECT_DIRECTORIES) \
$(APPLICATION_PATH) \
......@@ -43,5 +44,6 @@ PROJECT_DIRECTORIES := $(PROJECT_DIRECTORIES) \
$(DOCUMENTATION_PATH) \
$(REQUIREMENT_PATH) \
$(CREDENTIALS_PATH) \
$(LICENSE_PATH) \
$(BUILD_PATH)
#############################################################################################
#############################################################################################
##
## DOCKER
##
#############################################################################################
#############################################################################################
DOCKER ?= docker
EXECUTABLES = $(EXECUTABLES:-) $(DOCKER);
#############################################################################################
#############################################################################################
##
## DOCMAN
##
#############################################################################################
#############################################################################################
DOCMAN_BIN ?= $(VENDOR_PATH)docman
#############################################################################################
#############################################################################################
##
## GIT
##
#############################################################################################
#############################################################################################
GIT ?= git
UUIDGEN ?= uuidgen
EXECUTABLES = $(EXECUTABLES:-) $(UUIDGEN) $(GIT)
\ No newline at end of file
......@@ -7,6 +7,14 @@
#############################################################################################
define GITIGNOREDS
# Makefile comes from update
Makefile.example
# Vendor
/development/vendor/
/deployment/vendor/
# Created by https://www.toptal.com/developers/gitignore/api/intellij+iml,phpunit,git,vim,visualstudiocode,phpstorm,go,intellij+all,netbeans,dbeaver,node,yarn
# Edit at https://www.toptal.com/developers/gitignore?templates=intellij+iml,phpunit,git,vim,visualstudiocode,phpstorm,go,intellij+all,netbeans,dbeaver,node,yarn
......
......@@ -10,3 +10,7 @@
GO := go
EXECUTABLES = $(EXECUTABLES:-) $(GO);
ifeq ($(shell command -v $(GO) 2> /dev/null),)
$(error "go is not installed. Please install go <https://go.dev/doc/install>")
endif
This diff is collapsed.
#############################################################################################
#############################################################################################
##
## AGPL 3.0 LICENSE
##
#############################################################################################
#############################################################################################
## License used in the project
LICENSE_TEXT ?= All rights reserved
## The spdx license identifier
SPDX_LICENSE_ID ?=
## Copyright holder of the project
COPYRIGHT_TEXT ?= © schukai GmbH, $(LICENSE_TEXT).
## The owner of the project
COPYRIGHT_OWNER ?= schukai GmbH
COPYRIGHT_URL ?= [LICENSE](https://www.schukai.com/)
define LICENSE_FILE_CONTENT
# End User Licence Agreement (EULA)
This End User Licence Agreement ("EULA") is a legal agreement between you and schukai GmbH.
This EULA governs your purchase and use of our software ("Software") directly from schukai GmbH or indirectly through a reseller or distributor authorized by schukai GmbH (a "Reseller").
Please read this EULA carefully before completing the installation process and using the software. It contains a licence to use the software, as well as warranty information and disclaimers.
If you register for a free trial version of the software, this EULA also applies to that trial version. By clicking "Accept" or installing and/or using the software, you acknowledge that you accept the Software and agree to be bound by the terms of this EULA.
If you are entering into this EULA on behalf of a company or other legal entity, you represent that you have the authority to bind that company and its affiliates to these terms. If you do not have such authority or do not agree to the terms of this EULA, you may not install or use the Software and you are not required to accept this EULA.
This EULA applies only to the Software supplied by schukai GmbH herewith, whether other software is referred to or described herein. The Terms also apply to all updates, supplements, internet-based services and support services provided by schukai GmbH for the Software, unless different terms and conditions are attached to those items at the time of delivery. Where this is the case, these Terms shall apply.
## Grant of Licence
schukai GmbH hereby grants you a personal, non-transferable, non-exclusive licence to use the software on your Devices in accordance with the terms of this EULA.
You are authorized to download the software onto a device (e.g. PC, laptop, mobile phone or tablet) that is under your control. You are responsible for ensuring that your device meets the minimum requirements of the software.
**In addition, you are not permitted to:**
* Edit, alter, modify, adapt, translate or otherwise change the Software in whole or in part, nor allow the Software to be combined with or incorporated into other software in whole or in part, nor decompile, disassemble or reverse engineer the Software or attempt to do any such things reproduce, copy, distribute, resell or otherwise use the Software for commercial purposes
* Allow any third party to use the Software on behalf of or for any third party
* Use the Software in a manner that violates any applicable local, national or international law use the Software for any purpose that, in the opinion of schukai GmbH, constitutes a breach of this EULA.
## Intellectual Property and Proprietary Rights
schukai GmbH shall at all times retain ownership of the Software originally downloaded by you and of any subsequent downloads of the Software by you.
The Software (and the copyright and other intellectual property rights of any kind in the Software, including any modifications made thereto) are and shall remain the property of schukai GmbH.
schukai GmbH reserves the right to license the use of the Software to third parties.
## Termination
This EULA is effective from the date you first use the Software and shall remain in effect until terminated. You may terminate it at any time by giving written notice to schukai GmbH.
It will also terminate immediately if you fail to comply with any of the terms of this EULA. Upon such termination, the licences granted by this EULA shall immediately terminate, and you agree to cease all access to and use of the Software. The provisions that by their nature continue and survive shall survive any termination of this EULA.
## Governing Law
This EULA and any dispute arising out of or in connection with this EULA shall be governed by and construed in accordance with the laws of Germany.
endef
#############################################################################################
#############################################################################################
##
## UNLICENSED
##
#############################################################################################
#############################################################################################
## License used in the project
LICENSE_TEXT ?= UNLICENSED
## The spdx license identifier
SPDX_LICENSE_ID ?=
## Copyright holder of the project
COPYRIGHT_TEXT ?= © schukai GmbH, $(LICENSE_TEXT).
COPYRIGHT_URL ?= [LICENSE](https://www.schukai.com/)
## The owner of the project
COPYRIGHT_OWNER ?= schukai GmbH
#############################################################################################
#############################################################################################
##
## LICENSE
##
#############################################################################################
#############################################################################################
ifneq "$(wildcard $(SOURCE_PATH) )" ""
## Files wich should be checked for license headers
LICENSE_FILE_PATTERN ?= $(SOURCE_PATH).*{go,js,php}
endif
# https://spdx.github.io/spdx-spec/v2.3/SPDX-license-list/
ADDLICENSE_BIN ?= addlicense
ifeq ($(shell command -v $(ADDLICENSE_BIN) 2> /dev/null),)
$(shell $(GO) install github.com/google/addlicense@latest)
EXECUTABLES = $(EXECUTABLES:-) $(ADDLICENSE_BIN);
endif
EXECUTABLES = $(EXECUTABLES:-) $(ADDLICENSE_BIN)
......@@ -11,11 +11,12 @@ NODEJS ?= node
NODE ?= node
NPM ?= pnpm
EXECUTABLES = $(EXECUTABLES:-) $(PNPM);
EXECUTABLES = $(EXECUTABLES:-) $(NPM);
NODE_PACKAGES := $(shell find $(PROJECT_ROOT) -type f -name 'package.json' -not -path '*/node_modules/*')
NODE_MODULES := $(shell find $(PROJECT_ROOT) -type d -name 'node_modules' -prune)
NODE_MODULES_MODIFIED := $(shell find $(PROJECT_ROOT) -type d -name 'node_modules' -prune -exec echo {}/.modified \; )
NODE_MODULES_MODIFIED := $(shell find $(PROJECT_ROOT) -type f -name 'package.json' -not -path '*/node_modules/*' -exec sh -c 'F=$$(dirname {}); echo $${F}/node_modules/.modified' \;)
$(NODE_MODULES_MODIFIED): $(NODE_PACKAGES)
$(ECHOMARKER) "Updating node modules..."
......@@ -23,8 +24,10 @@ $(NODE_MODULES_MODIFIED): $(NODE_PACKAGES)
DIR=$$(dirname $$p); \
echo "Updating package: $${DIR}" ;\
$(NPM) install --prefix $${DIR} ;\
done ; \
touch $(NODE_MODULES_MODIFIED)
if [ -d $${DIR}/node_modules/ ]; then \
touch $${DIR}/node_modules/.modified ;\
fi ;\
done
## Main Develpoment Node Repos
NODE_ROOT_DIR ?= $(DEVELOPMENT_PATH)
......@@ -41,11 +44,12 @@ MOCHA ?= $(NODE_MODULES_BIN_DIR)mocha
PACKAGE_JSON ?= $(NODE_ROOT_DIR)package.json
ifneq "$(wildcard $(SOURCE_PATH) )" ""
MJS_SOURCE_FILES := $(shell find $(SOURCE_PATH) -name '*.mjs')
MJS_RELATIVE_SOURCE_FILES := $(shell find $(SOURCE_PATH) -name '*.mjs' -exec realpath --relative-to $(PROJECT_ROOT) {} \; )
JS_SOURCE_FILES := $(shell find $(SOURCE_PATH) -name '*.js')
JS_RELATIVE_SOURCE_FILES := $(shell find $(SOURCE_PATH) -name '*.js' -exec realpath --relative-to $(PROJECT_ROOT) {} \; )
endif
#############################################################################################
#############################################################################################
##
## README
##
#############################################################################################
#############################################################################################
define README_FILE_CONTENT
# $(COMPONENT_NAME)
$(COMPONENT_NAME) is ...
## Documentation
To check out docs and examples, visit ....
## Installation
## Usage
## Questions
For questions and commercial support, please contact [schukai GmbH](https://www.schukai.com/).
The issue list of this repo is exclusively for bug reports and feature requests.
## Issues
Please make sure to read the Issue Reporting Checklist before opening an
issue. Issues not conforming to the guidelines may be closed immediately.
## License
$(COPYRIGHT_TEXT)
$(COPYRIGHT_URL)
You can also purchase a commercial license.
endef
#############################################################################################
#############################################################################################
##
## README
##
#############################################################################################
#############################################################################################
define README_FILE_CONTENT
# $(COMPONENT_NAME)
$(COMPONENT_NAME) is a lightweight, robust and easy-to-use form library with modest ambitions.
The component easily integrates with your existing websites without taking over everything.
One design target is to reach the shiny sun with as little JavaScript as possible.
Monster was built with ES6 modules and uses [import](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/import)
and [export](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export).
For some functions, you need additional [polyfills](#polyfill).
## Documentation
To check out docs and examples, visit [monsterjs.org/en/doc/$(COMPONENT_SLUG)/](https://monsterjs.org/en/doc/$(COMPONENT_SLUG)/).
## Installation
`npm install @schukai/$(COMPONENT_SLUG)`, `yarn install @schukai/$(COMPONENT_SLUG)` or `pnpm install @schukai/$(COMPONENT_SLUG)`
## Usage
A simple example of the use of functionality from Monster. We create a small file `index.mjs`.
The `m` in `.mjs` stands for module. In the example we want to make substitutions in a string.
```js
const button = document.createElement('monster-button');
button.setOption('labels.button', 'click me');
button.setOption('actions.click', (e) => {
document.getElementById('example-result').innerText = "clicked!";
setTimeout(() => {
document.getElementById('example-result').innerText = "";
}, 2000)
})
```
To integrate this function into a website it is recommended to use a bundler like [esbuild](https://esbuild.github.io/).
```sh
esbuild index.mjs --outfile dist.js
```
We can now integrate that into our website.
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Monster</title>
<script src="dist.js"></script>
</head>
<body>
```
Voila!
### Polyfill
We do try to work around some browser bugs, but on the whole we don't use polyfills and feature detection.
However, many functions can be mapped via [polyfill.io](https://polyfill.io/) and thus the compatibility can be increased.
```js
<script id="polyfill" src="https://polyfill.io/v3/polyfill.min.js?..."
crossorigin="anonymous"
referrerpolicy="no-referrer"></script>
```
## Questions
For questions and commercial support, please contact [schukai GmbH](https://www.schukai.com/).
The issue list of this repo is exclusively for bug reports and feature requests.
## Issues
Please make sure to read the Issue Reporting Checklist before opening an
issue. Issues not conforming to the guidelines may be closed immediately.
## License
$(COPYRIGHT_TEXT)
$(COPYRIGHT_URL)
You can also purchase a commercial license.
## Changelog
Detailed changes for each release are documented in
the [CHANGELOG](https://gitlab.schukai.com/oss/libraries/javascript/web-components/$(COMPONENT_SLUG)).
endef
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment