mirror of
https://gitlab.com/openstapps/openstapps.git
synced 2026-01-20 08:33:11 +00:00
Compare commits
19 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3a141e6cf4 | ||
|
|
8a20e3e873 | ||
|
|
e196303e64 | ||
|
|
70c1a3eaa3 | ||
|
|
6060113df5 | ||
|
|
39d5becb56 | ||
|
|
f5e88569eb | ||
|
|
67041aa39d | ||
|
|
18943612a8 | ||
|
|
d167947e04 | ||
|
|
2a0dc812d8 | ||
|
|
cdb8a6507d | ||
|
|
5bedb27cad | ||
|
|
0d89b14932 | ||
|
|
5de523a4bf | ||
|
|
f97e199bb9 | ||
|
|
abda5cf0ca | ||
|
|
9658f05d31 | ||
|
|
e92bf6f7c7 |
@@ -11,6 +11,7 @@ before_script:
|
|||||||
stages:
|
stages:
|
||||||
- build
|
- build
|
||||||
- test
|
- test
|
||||||
|
- audit
|
||||||
- deploy
|
- deploy
|
||||||
- publish
|
- publish
|
||||||
|
|
||||||
@@ -26,7 +27,7 @@ build:
|
|||||||
expire_in: 1 week
|
expire_in: 1 week
|
||||||
|
|
||||||
audit:
|
audit:
|
||||||
stage: test
|
stage: audit
|
||||||
script:
|
script:
|
||||||
- npm audit
|
- npm audit
|
||||||
allow_failure: true
|
allow_failure: true
|
||||||
@@ -34,7 +35,7 @@ audit:
|
|||||||
- schedules
|
- schedules
|
||||||
|
|
||||||
scheduled-audit:
|
scheduled-audit:
|
||||||
stage: test
|
stage: audit
|
||||||
script:
|
script:
|
||||||
- npm audit
|
- npm audit
|
||||||
only:
|
only:
|
||||||
|
|||||||
121
CHANGELOG.md
121
CHANGELOG.md
@@ -1,9 +1,42 @@
|
|||||||
|
# [0.33.0](https://gitlab.com/openstapps/core/compare/v0.32.0...v0.33.0) (2020-02-11)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# [0.32.0](https://gitlab.com/openstapps/core/compare/v0.31.0...v0.32.0) (2020-02-04)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* make SCContactPoint extend SCThing ([0d89b14](https://gitlab.com/openstapps/core/commit/0d89b1493293f83e9096615f653a6094519d59f2))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# [0.31.0](https://gitlab.com/openstapps/core/compare/v0.30.0...v0.31.0) (2019-11-14)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* remove categories from custom translations ([9658f05](https://gitlab.com/openstapps/core/commit/9658f05d31366b3735da3aa548ef5ed0255d8054))
|
||||||
|
* translator can now handle enum translations ([abda5cf](https://gitlab.com/openstapps/core/commit/abda5cf0caead37f085431e1e5a9771b79272ec6))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# [0.30.0](https://gitlab.com/openstapps/core/compare/v0.29.0...v0.30.0) (2019-11-08)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* add aggregatable tag for type field ([443cb74](https://gitlab.com/openstapps/core/commit/443cb748fba1575f5f1e16c550fd33eb7fa7901c))
|
||||||
|
* add new field sequenceIndex to message ([01f92ba](https://gitlab.com/openstapps/core/commit/01f92baa985013bfe1c79fad60351fdaf44bd676))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# [0.29.0](https://gitlab.com/openstapps/core/compare/v0.28.0...v0.29.0) (2019-09-17)
|
# [0.29.0](https://gitlab.com/openstapps/core/compare/v0.28.0...v0.29.0) (2019-09-17)
|
||||||
|
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* add mappingIgnoredTags property to SCBackend ([149f3ff](https://gitlab.com/openstapps/core/commit/149f3ff))
|
* add mappingIgnoredTags property to SCBackend ([149f3ff](https://gitlab.com/openstapps/core/commit/149f3ffff15dce27337665abba520d11bc3014dd))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -12,7 +45,7 @@
|
|||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* add onlyOnType field for SCFacet ([fba63db](https://gitlab.com/openstapps/core/commit/fba63db))
|
* add onlyOnType field for SCFacet ([fba63db](https://gitlab.com/openstapps/core/commit/fba63db137c52212113545be1062d760f0c4213f))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -21,7 +54,7 @@
|
|||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* add [@filterable](https://gitlab.com/filterable) tags ([fec3371](https://gitlab.com/openstapps/core/commit/fec3371))
|
* add [@filterable](https://gitlab.com/filterable) tags ([fec3371](https://gitlab.com/openstapps/core/commit/fec33715add996ae0a7125ad00ee043d288c6671))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -30,12 +63,12 @@
|
|||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
* complete german translations ([bad15dc](https://gitlab.com/openstapps/core/commit/bad15dc))
|
* complete german translations ([bad15dc](https://gitlab.com/openstapps/core/commit/bad15dc8728954ee6ee23fa68c471647328830b9))
|
||||||
|
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* add pluginRequestTimeout field to backend config ([88f579e](https://gitlab.com/openstapps/core/commit/88f579e))
|
* add pluginRequestTimeout field to backend config ([88f579e](https://gitlab.com/openstapps/core/commit/88f579e09bc5e7726dbc4fc788737ba49a0801cd))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -44,7 +77,7 @@
|
|||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
* correct package job ([d4a8ef6](https://gitlab.com/openstapps/core/commit/d4a8ef6))
|
* correct package job ([d4a8ef6](https://gitlab.com/openstapps/core/commit/d4a8ef6a9ca69849f8b981804da45e4ba907f37b))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -53,7 +86,7 @@
|
|||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* add new field receivingOrganisations to message ([d781dd6](https://gitlab.com/openstapps/core/commit/d781dd6))
|
* add new field receivingOrganisations to message ([d781dd6](https://gitlab.com/openstapps/core/commit/d781dd6de5cc7572b9218df959247b93cb2db305))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -62,12 +95,12 @@
|
|||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
* use correct generic for the distance filter ([f262a6b](https://gitlab.com/openstapps/core/commit/f262a6b))
|
* use correct generic for the distance filter ([f262a6b](https://gitlab.com/openstapps/core/commit/f262a6b8fa7a9d40234569ec490d5ef8e9437a75))
|
||||||
|
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* add type maps from routes to requests and responses ([e1d4b2b](https://gitlab.com/openstapps/core/commit/e1d4b2b)), closes [#80](https://gitlab.com/openstapps/core/issues/80)
|
* add type maps from routes to requests and responses ([e1d4b2b](https://gitlab.com/openstapps/core/commit/e1d4b2bc9de60a2332788c9a2264760d151c8813)), closes [#80](https://gitlab.com/openstapps/core/issues/80)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -76,8 +109,8 @@
|
|||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* add mapping type from response to request and vice versa ([c18e3c1](https://gitlab.com/openstapps/core/commit/c18e3c1)), closes [#80](https://gitlab.com/openstapps/core/issues/80)
|
* add mapping type from response to request and vice versa ([c18e3c1](https://gitlab.com/openstapps/core/commit/c18e3c15f1940338b6872343f6b20dba6346f84b)), closes [#80](https://gitlab.com/openstapps/core/issues/80)
|
||||||
* support 404 (resource not found) error on plugin register route ([43851d2](https://gitlab.com/openstapps/core/commit/43851d2))
|
* support 404 (resource not found) error on plugin register route ([43851d2](https://gitlab.com/openstapps/core/commit/43851d2d358c4c342a80a863b059a6447c819c04))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -90,8 +123,8 @@
|
|||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* add ES annotations ([9c424b0](https://gitlab.com/openstapps/core/commit/9c424b0))
|
* add ES annotations ([9c424b0](https://gitlab.com/openstapps/core/commit/9c424b0f96da26d3aae9ffaadb2c640e7369ca7e))
|
||||||
* add static typed test for consistency ([ff1f554](https://gitlab.com/openstapps/core/commit/ff1f554)), closes [#71](https://gitlab.com/openstapps/core/issues/71)
|
* add static typed test for consistency ([ff1f554](https://gitlab.com/openstapps/core/commit/ff1f554e0beacb5ce2f3308c8212e2b8e4d8cbb0)), closes [#71](https://gitlab.com/openstapps/core/issues/71)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -100,8 +133,8 @@
|
|||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
* add translations for every SCThing ([f847a2a](https://gitlab.com/openstapps/core/commit/f847a2a))
|
* add translations for every SCThing ([f847a2a](https://gitlab.com/openstapps/core/commit/f847a2aa0cf576e2fd79197cdc7795638d929136))
|
||||||
* rename properties floor and message so that they are not identical to SCThingTypes ([78b64ba](https://gitlab.com/openstapps/core/commit/78b64ba))
|
* rename properties floor and message so that they are not identical to SCThingTypes ([78b64ba](https://gitlab.com/openstapps/core/commit/78b64bae08d9ca12badaedf921a24fa5ffe90552))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -110,9 +143,9 @@
|
|||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
* add thing without references, split thing ([da0507e](https://gitlab.com/openstapps/core/commit/da0507e)), closes [#69](https://gitlab.com/openstapps/core/issues/69)
|
* add thing without references, split thing ([da0507e](https://gitlab.com/openstapps/core/commit/da0507ee341af75cd15dddeeb3f4cbe08899434c)), closes [#69](https://gitlab.com/openstapps/core/issues/69)
|
||||||
* adjust model to remove references from things without references ([ca72c20](https://gitlab.com/openstapps/core/commit/ca72c20)), closes [#69](https://gitlab.com/openstapps/core/issues/69)
|
* adjust model to remove references from things without references ([ca72c20](https://gitlab.com/openstapps/core/commit/ca72c20bd098032745ed0eb6978902b6ff6feac5)), closes [#69](https://gitlab.com/openstapps/core/issues/69)
|
||||||
* remove references from origins ([1d6a2b7](https://gitlab.com/openstapps/core/commit/1d6a2b7)), closes [#69](https://gitlab.com/openstapps/core/issues/69)
|
* remove references from origins ([1d6a2b7](https://gitlab.com/openstapps/core/commit/1d6a2b7841e9c38e68c9e5c718377a9c04fe50d6)), closes [#69](https://gitlab.com/openstapps/core/issues/69)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -121,7 +154,7 @@
|
|||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* add study module interface ([d3790ad](https://gitlab.com/openstapps/core/commit/d3790ad))
|
* add study module interface ([d3790ad](https://gitlab.com/openstapps/core/commit/d3790adbd82417923d79b4a5a35c74fcaab3e050))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -138,13 +171,13 @@
|
|||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
* change SCThingMeta getInstance() return value ([4986042](https://gitlab.com/openstapps/core/commit/4986042))
|
* change SCThingMeta getInstance() return value ([4986042](https://gitlab.com/openstapps/core/commit/4986042428e24a04b73fb03d71c01353588419a7))
|
||||||
* resolve issues with things that can be offered ([623ed61](https://gitlab.com/openstapps/core/commit/623ed61)), closes [#41](https://gitlab.com/openstapps/core/issues/41)
|
* resolve issues with things that can be offered ([623ed61](https://gitlab.com/openstapps/core/commit/623ed613a9405b53a86a33c13d48bc49d48de1ce)), closes [#41](https://gitlab.com/openstapps/core/issues/41)
|
||||||
|
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* provide context based search ([3242411](https://gitlab.com/openstapps/core/commit/3242411))
|
* provide context based search ([3242411](https://gitlab.com/openstapps/core/commit/324241176849b338bee9f5d1dcaf1109f47a8bb9))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -153,7 +186,7 @@
|
|||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* add model for plugin register route ([8188731](https://gitlab.com/openstapps/core/commit/8188731))
|
* add model for plugin register route ([8188731](https://gitlab.com/openstapps/core/commit/81887315f8c3038ec37c2197db8e193da835f6fc))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -162,14 +195,14 @@
|
|||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
* correct isThing guard ([67868e9](https://gitlab.com/openstapps/core/commit/67868e9))
|
* correct isThing guard ([67868e9](https://gitlab.com/openstapps/core/commit/67868e9eb810de94ca0bb6e1298799ee3f550145))
|
||||||
* update tslint dependencies ([bbe4fca](https://gitlab.com/openstapps/core/commit/bbe4fca))
|
* update tslint dependencies ([bbe4fca](https://gitlab.com/openstapps/core/commit/bbe4fcac42c21c68b5c6aa6bcf9bbdecfdf84de7))
|
||||||
|
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* add conditional "maps" for associated types ([c8bda2e](https://gitlab.com/openstapps/core/commit/c8bda2e)), closes [#50](https://gitlab.com/openstapps/core/issues/50)
|
* add conditional "maps" for associated types ([c8bda2e](https://gitlab.com/openstapps/core/commit/c8bda2eae7f44ec4a284cc26fc85051a9a45e192)), closes [#50](https://gitlab.com/openstapps/core/issues/50)
|
||||||
* provide sample JSON files with the package ([5d1e79d](https://gitlab.com/openstapps/core/commit/5d1e79d)), closes [#46](https://gitlab.com/openstapps/core/issues/46)
|
* provide sample JSON files with the package ([5d1e79d](https://gitlab.com/openstapps/core/commit/5d1e79d4879e6ce8f43d4cebb9d8c8500d5d16b7)), closes [#46](https://gitlab.com/openstapps/core/issues/46)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -178,12 +211,12 @@
|
|||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
* add todo to SCThingsWithoutDiff and SCClasses ([9a49442](https://gitlab.com/openstapps/core/commit/9a49442)), closes [#39](https://gitlab.com/openstapps/core/issues/39)
|
* add todo to SCThingsWithoutDiff and SCClasses ([9a49442](https://gitlab.com/openstapps/core/commit/9a49442902a9f49439083a9197bd9f0a231d007d)), closes [#39](https://gitlab.com/openstapps/core/issues/39)
|
||||||
|
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* add SCThingTranslator class. move functionality accordingly ([90e3d22](https://gitlab.com/openstapps/core/commit/90e3d22))
|
* add SCThingTranslator class. move functionality accordingly ([90e3d22](https://gitlab.com/openstapps/core/commit/90e3d2239921bbfcea27b64aef9344ffee270b6d))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -192,8 +225,8 @@
|
|||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* add laboratory and computer as room categories ([a0ab72e](https://gitlab.com/openstapps/core/commit/a0ab72e)), closes [#33](https://gitlab.com/openstapps/core/issues/33)
|
* add laboratory and computer as room categories ([a0ab72e](https://gitlab.com/openstapps/core/commit/a0ab72e597f6a14cfc0bd8935e1ef765b86b90f7)), closes [#33](https://gitlab.com/openstapps/core/issues/33)
|
||||||
* add maxRequestBodySize in backend configuration ([b5bd09e](https://gitlab.com/openstapps/core/commit/b5bd09e))
|
* add maxRequestBodySize in backend configuration ([b5bd09e](https://gitlab.com/openstapps/core/commit/b5bd09e40bfb49463815538ebaa44ff53b5d7b92))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -202,7 +235,7 @@
|
|||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* add model for requestBodyTooLargeError ([bc3a0f6](https://gitlab.com/openstapps/core/commit/bc3a0f6))
|
* add model for requestBodyTooLargeError ([bc3a0f6](https://gitlab.com/openstapps/core/commit/bc3a0f6d11cba836a55cbd5787d68cfe655b68a6))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -215,7 +248,7 @@
|
|||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* add config for maximum queries ([c7ab473](https://gitlab.com/openstapps/core/commit/c7ab473))
|
* add config for maximum queries ([c7ab473](https://gitlab.com/openstapps/core/commit/c7ab47397e2a33b1c460b9038cbf53fec148316d))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -232,7 +265,7 @@
|
|||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* add model for syntax error ([a3f9fcb](https://gitlab.com/openstapps/core/commit/a3f9fcb))
|
* add model for syntax error ([a3f9fcb](https://gitlab.com/openstapps/core/commit/a3f9fcbfb0c35206adabc95792de076518f604f7))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -241,7 +274,7 @@
|
|||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* add draft of todo ([2860a11](https://gitlab.com/openstapps/core/commit/2860a11))
|
* add draft of todo ([2860a11](https://gitlab.com/openstapps/core/commit/2860a11b618081ab88ecb1780a280cab37217a0e))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -250,13 +283,13 @@
|
|||||||
|
|
||||||
### Bug Fixes
|
### Bug Fixes
|
||||||
|
|
||||||
* set larger v8 stack size ([d3d08e7](https://gitlab.com/openstapps/core/commit/d3d08e7))
|
* set larger v8 stack size ([d3d08e7](https://gitlab.com/openstapps/core/commit/d3d08e7735808d4eae5aab4b263e36047c608679))
|
||||||
|
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* add different origin types: remote and user ([13a4965](https://gitlab.com/openstapps/core/commit/13a4965)), closes [#12](https://gitlab.com/openstapps/core/issues/12)
|
* add different origin types: remote and user ([13a4965](https://gitlab.com/openstapps/core/commit/13a49650c4498f6edbe17c9de3598e0180b866da)), closes [#12](https://gitlab.com/openstapps/core/issues/12)
|
||||||
* add saveable thing for saving user/client data ([a4f3fab](https://gitlab.com/openstapps/core/commit/a4f3fab)), closes [#12](https://gitlab.com/openstapps/core/issues/12)
|
* add saveable thing for saving user/client data ([a4f3fab](https://gitlab.com/openstapps/core/commit/a4f3fab033ca18352c0119061f2d0e64252d4bbb)), closes [#12](https://gitlab.com/openstapps/core/issues/12)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -265,7 +298,7 @@
|
|||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* use tag [@validatable](https://gitlab.com/validatable) to mark schema types ([7f248ee](https://gitlab.com/openstapps/core/commit/7f248ee))
|
* use tag [@validatable](https://gitlab.com/validatable) to mark schema types ([7f248ee](https://gitlab.com/openstapps/core/commit/7f248eea13c732a95c4ee8e1bc91afeee52e8c2d))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -274,9 +307,9 @@
|
|||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* add base scheme for academic degrees ([85c8fc4](https://gitlab.com/openstapps/core/commit/85c8fc4))
|
* add base scheme for academic degrees ([85c8fc4](https://gitlab.com/openstapps/core/commit/85c8fc49c14b0ce45cf0cfdaf46c1ebe43b23ec7))
|
||||||
* add schema for course of studies ([2d4a76a](https://gitlab.com/openstapps/core/commit/2d4a76a))
|
* add schema for course of studies ([2d4a76a](https://gitlab.com/openstapps/core/commit/2d4a76a555603a395c81a7a92ce5d95ed04de9de))
|
||||||
* add tool to generate documentation for routes ([1a07df2](https://gitlab.com/openstapps/core/commit/1a07df2))
|
* add tool to generate documentation for routes ([1a07df2](https://gitlab.com/openstapps/core/commit/1a07df2d676895264f43b0138645d7c13f60c9db))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -284,12 +317,12 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
## [0.0.1](https://gitlab.com/openstapps/core/compare/2d770dd...v0.0.1) (2018-11-29)
|
## [0.0.1](https://gitlab.com/openstapps/core/compare/2d770dde4464dc4cf4cdc29927aa4e4382914148...v0.0.1) (2018-11-29)
|
||||||
|
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
* add core ([2d770dd](https://gitlab.com/openstapps/core/commit/2d770dd))
|
* add core ([2d770dd](https://gitlab.com/openstapps/core/commit/2d770dde4464dc4cf4cdc29927aa4e4382914148))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
1813
package-lock.json
generated
1813
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
28
package.json
28
package.json
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@openstapps/core",
|
"name": "@openstapps/core",
|
||||||
"version": "0.30.0",
|
"version": "0.34.0",
|
||||||
"description": "StAppsCore - Generalized model of data",
|
"description": "StAppsCore - Generalized model of data",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"Model",
|
"Model",
|
||||||
@@ -36,7 +36,7 @@
|
|||||||
"Imran Hossain",
|
"Imran Hossain",
|
||||||
"Jovan Krunić <jovan.krunic@gmail.com>",
|
"Jovan Krunić <jovan.krunic@gmail.com>",
|
||||||
"Michel Jonathan Schmitz",
|
"Michel Jonathan Schmitz",
|
||||||
"Rainer Killinger",
|
"Rainer Killinger <mail-openstapps@killinger.co>",
|
||||||
"Sebastian Lange",
|
"Sebastian Lange",
|
||||||
"Wieland Schöbl",
|
"Wieland Schöbl",
|
||||||
"Roman Klopsch"
|
"Roman Klopsch"
|
||||||
@@ -44,30 +44,30 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/geojson": "1.0.6",
|
"@types/geojson": "1.0.6",
|
||||||
"@types/json-patch": "0.0.30",
|
"@types/json-patch": "0.0.30",
|
||||||
"@types/node": "10.14.14",
|
"@types/node": "10.17.14",
|
||||||
"fast-clone": "1.5.13",
|
"fast-clone": "1.5.13",
|
||||||
"http-status-codes": "1.3.2",
|
"http-status-codes": "1.4.0",
|
||||||
"json-patch": "0.7.0",
|
"json-patch": "0.7.0",
|
||||||
"jsonschema": "1.2.4",
|
"jsonschema": "1.2.5",
|
||||||
"ts-optchain": "0.1.3"
|
"ts-optchain": "0.1.3"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@krlwlfrt/async-pool": "0.1.0",
|
"@krlwlfrt/async-pool": "0.1.0",
|
||||||
"@openstapps/configuration": "0.21.1",
|
"@openstapps/configuration": "0.23.0",
|
||||||
"@openstapps/core-tools": "0.8.0",
|
"@openstapps/core-tools": "0.14.0",
|
||||||
"@openstapps/logger": "0.4.0",
|
"@openstapps/logger": "0.4.0",
|
||||||
"@types/chai": "4.1.7",
|
"@types/chai": "4.2.8",
|
||||||
"@types/rimraf": "2.0.2",
|
"@types/rimraf": "2.0.3",
|
||||||
"chai": "4.2.0",
|
"chai": "4.2.0",
|
||||||
"commander": "2.20.0",
|
"commander": "2.20.0",
|
||||||
"conditional-type-checks": "1.0.1",
|
"conditional-type-checks": "1.0.5",
|
||||||
"conventional-changelog-cli": "2.0.23",
|
"conventional-changelog-cli": "2.0.31",
|
||||||
"mocha": "6.2.0",
|
"mocha": "6.2.0",
|
||||||
"mocha-typescript": "1.1.17",
|
"mocha-typescript": "1.1.17",
|
||||||
"nyc": "14.1.1",
|
"nyc": "14.1.1",
|
||||||
"rimraf": "2.6.3",
|
"rimraf": "3.0.2",
|
||||||
"source-map-support": "0.5.13",
|
"source-map-support": "0.5.13",
|
||||||
"ts-node": "8.3.0",
|
"ts-node": "8.6.2",
|
||||||
"tslint": "5.18.0",
|
"tslint": "5.18.0",
|
||||||
"typedoc": "0.14.2",
|
"typedoc": "0.14.2",
|
||||||
"typescript": "3.5.3"
|
"typescript": "3.5.3"
|
||||||
@@ -84,6 +84,8 @@
|
|||||||
"include": [
|
"include": [
|
||||||
"src/protocol/route.ts",
|
"src/protocol/route.ts",
|
||||||
"src/things/abstract/thing.ts",
|
"src/things/abstract/thing.ts",
|
||||||
|
"src/things/abstract/thing-that-can-be-offered.ts",
|
||||||
|
"src/things/abstract/thing-with-categories.ts",
|
||||||
"src/translator.ts",
|
"src/translator.ts",
|
||||||
"src/guards.ts"
|
"src/guards.ts"
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
/**
|
/**
|
||||||
* Universally unique identifier of the thing
|
* Universally unique identifier of the thing
|
||||||
*
|
*
|
||||||
|
* @filterable
|
||||||
* @pattern ^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
* @pattern ^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
||||||
* @see http://stackoverflow.com/questions/7905929/how-to-test-valid-uuid-guid
|
* @see http://stackoverflow.com/questions/7905929/how-to-test-valid-uuid-guid
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ export function isThing(something: unknown): something is SCThing {
|
|||||||
|
|
||||||
return Object
|
return Object
|
||||||
.values(SCThingType)
|
.values(SCThingType)
|
||||||
.indexOf(type) >= 0;
|
.indexOf(type as SCThingType) >= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
85
src/meta.ts
85
src/meta.ts
@@ -18,6 +18,7 @@ import {SCArticle, SCArticleMeta, SCArticleWithoutReferences} from './things/art
|
|||||||
import {SCBook, SCBookMeta, SCBookWithoutReferences} from './things/book';
|
import {SCBook, SCBookMeta, SCBookWithoutReferences} from './things/book';
|
||||||
import {SCBuilding, SCBuildingMeta, SCBuildingWithoutReferences} from './things/building';
|
import {SCBuilding, SCBuildingMeta, SCBuildingWithoutReferences} from './things/building';
|
||||||
import {SCCatalog, SCCatalogMeta, SCCatalogWithoutReferences} from './things/catalog';
|
import {SCCatalog, SCCatalogMeta, SCCatalogWithoutReferences} from './things/catalog';
|
||||||
|
import {SCContactPoint, SCContactPointMeta, SCContactPointWithoutReferences} from './things/contact-point';
|
||||||
import {SCCourseOfStudies, SCCourseOfStudiesMeta, SCCourseOfStudiesWithoutReferences} from './things/course-of-studies';
|
import {SCCourseOfStudies, SCCourseOfStudiesMeta, SCCourseOfStudiesWithoutReferences} from './things/course-of-studies';
|
||||||
import {SCDateSeries, SCDateSeriesMeta, SCDateSeriesWithoutReferences} from './things/date-series';
|
import {SCDateSeries, SCDateSeriesMeta, SCDateSeriesWithoutReferences} from './things/date-series';
|
||||||
import {SCDiff, SCDiffMeta, SCDiffWithoutReferences} from './things/diff';
|
import {SCDiff, SCDiffMeta, SCDiffWithoutReferences} from './things/diff';
|
||||||
@@ -49,6 +50,7 @@ export const SCClasses: { [K in SCThingType]: object } = {
|
|||||||
'book': SCBookMeta,
|
'book': SCBookMeta,
|
||||||
'building': SCBuildingMeta,
|
'building': SCBuildingMeta,
|
||||||
'catalog': SCCatalogMeta,
|
'catalog': SCCatalogMeta,
|
||||||
|
'contact point': SCContactPointMeta,
|
||||||
'course of studies': SCCourseOfStudiesMeta,
|
'course of studies': SCCourseOfStudiesMeta,
|
||||||
'date series': SCDateSeriesMeta,
|
'date series': SCDateSeriesMeta,
|
||||||
'diff': SCDiffMeta,
|
'diff': SCDiffMeta,
|
||||||
@@ -76,6 +78,7 @@ export type SCThingsWithoutDiff =
|
|||||||
| SCBook
|
| SCBook
|
||||||
| SCBuilding
|
| SCBuilding
|
||||||
| SCCatalog
|
| SCCatalog
|
||||||
|
| SCContactPoint
|
||||||
| SCCourseOfStudies
|
| SCCourseOfStudies
|
||||||
| SCDateSeries
|
| SCDateSeries
|
||||||
| SCDish
|
| SCDish
|
||||||
@@ -116,26 +119,27 @@ export type SCAssociatedThingWithoutReferences<THING extends SCThings> =
|
|||||||
THING extends SCBook ? SCBookWithoutReferences :
|
THING extends SCBook ? SCBookWithoutReferences :
|
||||||
THING extends SCBuilding ? SCBuildingWithoutReferences :
|
THING extends SCBuilding ? SCBuildingWithoutReferences :
|
||||||
THING extends SCCatalog ? SCCatalogWithoutReferences :
|
THING extends SCCatalog ? SCCatalogWithoutReferences :
|
||||||
THING extends SCCourseOfStudies ? SCCourseOfStudiesWithoutReferences :
|
THING extends SCContactPoint ? SCContactPointWithoutReferences :
|
||||||
THING extends SCDateSeries ? SCDateSeriesWithoutReferences :
|
THING extends SCCourseOfStudies ? SCCourseOfStudiesWithoutReferences :
|
||||||
THING extends SCDiff ? SCDiffWithoutReferences :
|
THING extends SCDateSeries ? SCDateSeriesWithoutReferences :
|
||||||
THING extends SCDish ? SCDishWithoutReferences :
|
THING extends SCDiff ? SCDiffWithoutReferences :
|
||||||
THING extends SCFavorite ? SCFavoriteWithoutReferences :
|
THING extends SCDish ? SCDishWithoutReferences :
|
||||||
THING extends SCFloor ? SCFloorWithoutReferences :
|
THING extends SCFavorite ? SCFavoriteWithoutReferences :
|
||||||
THING extends SCMessage ? SCMessageWithoutReferences :
|
THING extends SCFloor ? SCFloorWithoutReferences :
|
||||||
THING extends SCOrganization ? SCOrganizationWithoutReferences :
|
THING extends SCMessage ? SCMessageWithoutReferences :
|
||||||
THING extends SCPerson ? SCPersonWithoutReferences :
|
THING extends SCOrganization ? SCOrganizationWithoutReferences :
|
||||||
THING extends SCPointOfInterest ? SCPointOfInterestWithoutReferences :
|
THING extends SCPerson ? SCPersonWithoutReferences :
|
||||||
THING extends SCRoom ? SCRoomWithoutReferences :
|
THING extends SCPointOfInterest ? SCPointOfInterestWithoutReferences :
|
||||||
THING extends SCSemester ? SCSemesterWithoutReferences :
|
THING extends SCRoom ? SCRoomWithoutReferences :
|
||||||
THING extends SCSetting ? SCSettingWithoutReferences :
|
THING extends SCSemester ? SCSemesterWithoutReferences :
|
||||||
THING extends SCSportCourse ? SCSportCourseWithoutReferences :
|
THING extends SCSetting ? SCSettingWithoutReferences :
|
||||||
THING extends SCStudyModule ? SCStudyModuleWithoutReferences :
|
THING extends SCSportCourse ? SCSportCourseWithoutReferences :
|
||||||
THING extends SCTicket ? SCTicketWithoutReferences :
|
THING extends SCStudyModule ? SCStudyModuleWithoutReferences :
|
||||||
THING extends SCToDo ? SCToDoWithoutReferences :
|
THING extends SCTicket ? SCTicketWithoutReferences :
|
||||||
THING extends SCTour ? SCTourWithoutReferences :
|
THING extends SCToDo ? SCToDoWithoutReferences :
|
||||||
THING extends SCVideo ? SCVideoWithoutReferences :
|
THING extends SCTour ? SCTourWithoutReferences :
|
||||||
never;
|
THING extends SCVideo ? SCVideoWithoutReferences :
|
||||||
|
never;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Thing for a thing without references
|
* Thing for a thing without references
|
||||||
@@ -146,23 +150,24 @@ export type SCAssociatedThing<THING extends SCThings> =
|
|||||||
THING extends SCBookWithoutReferences ? SCBook :
|
THING extends SCBookWithoutReferences ? SCBook :
|
||||||
THING extends SCBuildingWithoutReferences ? SCBuilding :
|
THING extends SCBuildingWithoutReferences ? SCBuilding :
|
||||||
THING extends SCCatalogWithoutReferences ? SCCatalog :
|
THING extends SCCatalogWithoutReferences ? SCCatalog :
|
||||||
THING extends SCCourseOfStudiesWithoutReferences ? SCCourseOfStudies :
|
THING extends SCContactPointWithoutReferences ? SCContactPoint :
|
||||||
THING extends SCDateSeriesWithoutReferences ? SCDateSeries :
|
THING extends SCCourseOfStudiesWithoutReferences ? SCCourseOfStudies :
|
||||||
THING extends SCDiffWithoutReferences ? SCDiff :
|
THING extends SCDateSeriesWithoutReferences ? SCDateSeries :
|
||||||
THING extends SCDishWithoutReferences ? SCDish :
|
THING extends SCDiffWithoutReferences ? SCDiff :
|
||||||
THING extends SCFavoriteWithoutReferences ? SCFavorite :
|
THING extends SCDishWithoutReferences ? SCDish :
|
||||||
THING extends SCFloorWithoutReferences ? SCFloor :
|
THING extends SCFavoriteWithoutReferences ? SCFavorite :
|
||||||
THING extends SCMessageWithoutReferences ? SCMessage :
|
THING extends SCFloorWithoutReferences ? SCFloor :
|
||||||
THING extends SCOrganizationWithoutReferences ? SCOrganization :
|
THING extends SCMessageWithoutReferences ? SCMessage :
|
||||||
THING extends SCPersonWithoutReferences ? SCPerson :
|
THING extends SCOrganizationWithoutReferences ? SCOrganization :
|
||||||
THING extends SCPointOfInterestWithoutReferences ? SCPointOfInterest :
|
THING extends SCPersonWithoutReferences ? SCPerson :
|
||||||
THING extends SCRoomWithoutReferences ? SCRoom :
|
THING extends SCPointOfInterestWithoutReferences ? SCPointOfInterest :
|
||||||
THING extends SCSemesterWithoutReferences ? SCSemester :
|
THING extends SCRoomWithoutReferences ? SCRoom :
|
||||||
THING extends SCSettingWithoutReferences ? SCSetting :
|
THING extends SCSemesterWithoutReferences ? SCSemester :
|
||||||
THING extends SCSportCourseWithoutReferences ? SCSportCourse :
|
THING extends SCSettingWithoutReferences ? SCSetting :
|
||||||
THING extends SCStudyModuleWithoutReferences ? SCStudyModule :
|
THING extends SCSportCourseWithoutReferences ? SCSportCourse :
|
||||||
THING extends SCTicketWithoutReferences ? SCTicket :
|
THING extends SCStudyModuleWithoutReferences ? SCStudyModule :
|
||||||
THING extends SCToDoWithoutReferences ? SCToDo :
|
THING extends SCTicketWithoutReferences ? SCTicket :
|
||||||
THING extends SCTourWithoutReferences ? SCTour :
|
THING extends SCToDoWithoutReferences ? SCToDo :
|
||||||
THING extends SCVideoWithoutReferences ? SCVideo :
|
THING extends SCTourWithoutReferences ? SCTour :
|
||||||
never;
|
THING extends SCVideoWithoutReferences ? SCVideo :
|
||||||
|
never;
|
||||||
|
|||||||
@@ -64,6 +64,8 @@ export interface SCThingWithCategoriesTranslatableProperties
|
|||||||
extends SCThingTranslatableProperties {
|
extends SCThingTranslatableProperties {
|
||||||
/**
|
/**
|
||||||
* translations of the categories of a thing with categories
|
* translations of the categories of a thing with categories
|
||||||
|
*
|
||||||
|
* @sortable ducet
|
||||||
*/
|
*/
|
||||||
categories?: string[];
|
categories?: string[];
|
||||||
}
|
}
|
||||||
@@ -98,6 +100,7 @@ export interface SCThingWithCategoriesSpecificValues {
|
|||||||
/**
|
/**
|
||||||
* Category specific name of a thing
|
* Category specific name of a thing
|
||||||
*
|
*
|
||||||
|
* @sortable ducet
|
||||||
* @text
|
* @text
|
||||||
*/
|
*/
|
||||||
name?: string;
|
name?: string;
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ export enum SCThingType {
|
|||||||
Book = 'book',
|
Book = 'book',
|
||||||
Building = 'building',
|
Building = 'building',
|
||||||
Catalog = 'catalog',
|
Catalog = 'catalog',
|
||||||
|
ContactPoint = 'contact point',
|
||||||
CourseOfStudies = 'course of studies',
|
CourseOfStudies = 'course of studies',
|
||||||
DateSeries = 'date series',
|
DateSeries = 'date series',
|
||||||
Diff = 'diff',
|
Diff = 'diff',
|
||||||
@@ -101,6 +102,8 @@ export interface SCThingWithoutReferences {
|
|||||||
uid: SCUuid;
|
uid: SCUuid;
|
||||||
/**
|
/**
|
||||||
* URL of the thing
|
* URL of the thing
|
||||||
|
*
|
||||||
|
* @filterable
|
||||||
*/
|
*/
|
||||||
url?: string;
|
url?: string;
|
||||||
}
|
}
|
||||||
@@ -222,6 +225,7 @@ export interface SCThingTranslatableProperties {
|
|||||||
/**
|
/**
|
||||||
* Translation of the name of the thing
|
* Translation of the name of the thing
|
||||||
*
|
*
|
||||||
|
* @sortable ducet
|
||||||
* @text
|
* @text
|
||||||
*/
|
*/
|
||||||
name?: string;
|
name?: string;
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ export interface SCBookWithoutReferences
|
|||||||
* @filterable
|
* @filterable
|
||||||
* @keyword
|
* @keyword
|
||||||
*/
|
*/
|
||||||
isbn: string;
|
isbn?: string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Number of pages of a book
|
* Number of pages of a book
|
||||||
|
|||||||
136
src/things/contact-point.ts
Normal file
136
src/things/contact-point.ts
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2019 StApps
|
||||||
|
* This program is free software: you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by the Free
|
||||||
|
* Software Foundation, version 3.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||||
|
* more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along with
|
||||||
|
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {SCMetaTranslations} from '../general/i18n';
|
||||||
|
import {
|
||||||
|
SCThing,
|
||||||
|
SCThingMeta,
|
||||||
|
SCThingType,
|
||||||
|
SCThingWithoutReferences,
|
||||||
|
} from './abstract/thing';
|
||||||
|
import {SCRoomWithoutReferences} from './room';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A contact point without references
|
||||||
|
*/
|
||||||
|
export interface SCContactPointWithoutReferences
|
||||||
|
extends SCThingWithoutReferences {
|
||||||
|
/**
|
||||||
|
* E-mail at the work location
|
||||||
|
*
|
||||||
|
* @keyword
|
||||||
|
*/
|
||||||
|
email?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fax number at the work location
|
||||||
|
*
|
||||||
|
* @keyword
|
||||||
|
*/
|
||||||
|
faxNumber?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Office hours for contacting someone at the work location
|
||||||
|
*
|
||||||
|
* @see http://wiki.openstreetmap.org/wiki/Key:opening_hours/specification
|
||||||
|
* @keyword
|
||||||
|
*/
|
||||||
|
officeHours?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contact number at the work location
|
||||||
|
*
|
||||||
|
* @keyword
|
||||||
|
*/
|
||||||
|
telephone?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Type of a contact point
|
||||||
|
*/
|
||||||
|
type: SCThingType.ContactPoint;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* URL at the work location
|
||||||
|
*
|
||||||
|
* @keyword
|
||||||
|
*/
|
||||||
|
url?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A contact point
|
||||||
|
*
|
||||||
|
* @see http://schema.org/ContactPoint
|
||||||
|
*
|
||||||
|
* @validatable
|
||||||
|
* @indexable
|
||||||
|
*/
|
||||||
|
export interface SCContactPoint
|
||||||
|
extends SCContactPointWithoutReferences, SCThing {
|
||||||
|
/**
|
||||||
|
* Exact place where work is performed
|
||||||
|
*/
|
||||||
|
areaServed?: SCRoomWithoutReferences;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Type of a contact point
|
||||||
|
*/
|
||||||
|
type: SCThingType.ContactPoint;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Meta information about a contact point
|
||||||
|
*/
|
||||||
|
export class SCContactPointMeta
|
||||||
|
extends SCThingMeta
|
||||||
|
implements SCMetaTranslations<SCContactPoint> {
|
||||||
|
/**
|
||||||
|
* Translations of fields
|
||||||
|
*/
|
||||||
|
fieldTranslations = {
|
||||||
|
de: {
|
||||||
|
...SCThingMeta.getInstance<SCThingMeta>().fieldTranslations.de,
|
||||||
|
areaServed: 'Arbeitsraum',
|
||||||
|
email: 'E-Mail-Addresse',
|
||||||
|
faxNumber: 'Faxnummer',
|
||||||
|
officeHours: 'Sprechzeiten',
|
||||||
|
telephone: 'Telefonnummer',
|
||||||
|
url: 'Link',
|
||||||
|
},
|
||||||
|
en: {
|
||||||
|
...SCThingMeta.getInstance<SCThingMeta>().fieldTranslations.en,
|
||||||
|
areaServed: 'location',
|
||||||
|
email: 'email address',
|
||||||
|
faxNumber: 'fax number',
|
||||||
|
officeHours: 'office hours',
|
||||||
|
telephone: 'telephone number',
|
||||||
|
url: 'link',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Translations of values of fields
|
||||||
|
*/
|
||||||
|
fieldValueTranslations = {
|
||||||
|
de: {
|
||||||
|
...SCThingMeta.getInstance<SCThingMeta>().fieldValueTranslations.de,
|
||||||
|
type: 'Kontaktinformation',
|
||||||
|
},
|
||||||
|
en: {
|
||||||
|
...SCThingMeta.getInstance<SCThingMeta>().fieldValueTranslations.en,
|
||||||
|
type: SCThingType.ContactPoint,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -15,6 +15,7 @@
|
|||||||
import {SCMetaTranslations} from '../general/i18n';
|
import {SCMetaTranslations} from '../general/i18n';
|
||||||
import {SCThingMeta, SCThingType, SCThingWithoutReferences} from './abstract/thing';
|
import {SCThingMeta, SCThingType, SCThingWithoutReferences} from './abstract/thing';
|
||||||
import {SCThingInPlace, SCThingInPlaceMeta} from './abstract/thing-in-place';
|
import {SCThingInPlace, SCThingInPlaceMeta} from './abstract/thing-in-place';
|
||||||
|
import {SCContactPointWithoutReferences} from './contact-point';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An organization without references
|
* An organization without references
|
||||||
@@ -35,6 +36,11 @@ export interface SCOrganizationWithoutReferences
|
|||||||
*/
|
*/
|
||||||
export interface SCOrganization
|
export interface SCOrganization
|
||||||
extends SCOrganizationWithoutReferences, SCThingInPlace {
|
extends SCOrganizationWithoutReferences, SCThingInPlace {
|
||||||
|
/**
|
||||||
|
* A list of contact points concerning the organization
|
||||||
|
*/
|
||||||
|
contactPoints?: SCContactPointWithoutReferences[];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Type of an organization
|
* Type of an organization
|
||||||
*/
|
*/
|
||||||
@@ -52,9 +58,11 @@ export class SCOrganizationMeta
|
|||||||
fieldTranslations = {
|
fieldTranslations = {
|
||||||
de: {
|
de: {
|
||||||
...SCThingInPlaceMeta.getInstance<SCThingInPlaceMeta>().fieldTranslations.de,
|
...SCThingInPlaceMeta.getInstance<SCThingInPlaceMeta>().fieldTranslations.de,
|
||||||
|
contactPoints: 'Kontaktinformationen',
|
||||||
},
|
},
|
||||||
en: {
|
en: {
|
||||||
...SCThingInPlaceMeta.getInstance<SCThingInPlaceMeta>().fieldTranslations.en,
|
...SCThingInPlaceMeta.getInstance<SCThingInPlaceMeta>().fieldTranslations.en,
|
||||||
|
contactPoints: 'contact details',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import {SCMetaTranslations, SCNationality} from '../general/i18n';
|
|||||||
import {SCISO8601Date} from '../general/time';
|
import {SCISO8601Date} from '../general/time';
|
||||||
import {SCThing, SCThingMeta, SCThingType, SCThingWithoutReferences} from './abstract/thing';
|
import {SCThing, SCThingMeta, SCThingType, SCThingWithoutReferences} from './abstract/thing';
|
||||||
import {SCBuildingWithoutReferences} from './building';
|
import {SCBuildingWithoutReferences} from './building';
|
||||||
|
import {SCContactPointWithoutReferences} from './contact-point';
|
||||||
import {SCOrganizationWithoutReferences} from './organization';
|
import {SCOrganizationWithoutReferences} from './organization';
|
||||||
import {SCPointOfInterestWithoutReferences} from './point-of-interest';
|
import {SCPointOfInterestWithoutReferences} from './point-of-interest';
|
||||||
import {SCRoomWithoutReferences} from './room';
|
import {SCRoomWithoutReferences} from './room';
|
||||||
@@ -159,7 +160,7 @@ export interface SCPerson
|
|||||||
/**
|
/**
|
||||||
* Locations where the person performs her/his work
|
* Locations where the person performs her/his work
|
||||||
*/
|
*/
|
||||||
workLocations?: SCContactPoint[];
|
workLocations?: SCContactPointWithoutReferences[];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -188,13 +189,14 @@ export class SCPersonMeta
|
|||||||
jobTitles: 'Berufsbezeichnungen',
|
jobTitles: 'Berufsbezeichnungen',
|
||||||
nationality: 'Staatsangehörigkeit',
|
nationality: 'Staatsangehörigkeit',
|
||||||
telephone: 'Telefonnummer',
|
telephone: 'Telefonnummer',
|
||||||
workLocations: 'Arbeitsorte',
|
workLocations: 'Arbeitsstandorte',
|
||||||
},
|
},
|
||||||
en: {
|
en: {
|
||||||
...SCThingMeta.getInstance<SCThingMeta>().fieldTranslations.en,
|
...SCThingMeta.getInstance<SCThingMeta>().fieldTranslations.en,
|
||||||
additionalName: 'additional name',
|
additionalName: 'additional name',
|
||||||
affiliations: 'affiliations',
|
affiliations: 'affiliations',
|
||||||
birthDate: 'birth date',
|
birthDate: 'birth date',
|
||||||
|
contactDetails: 'contact details',
|
||||||
email: 'email',
|
email: 'email',
|
||||||
familyName: 'family name',
|
familyName: 'family name',
|
||||||
faxNumber: 'fax',
|
faxNumber: 'fax',
|
||||||
@@ -231,53 +233,6 @@ export class SCPersonMeta
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* A contact point
|
|
||||||
*
|
|
||||||
* @see http://schema.org/ContactPoint
|
|
||||||
*/
|
|
||||||
export interface SCContactPoint {
|
|
||||||
/**
|
|
||||||
* Exact place where work is performed
|
|
||||||
*/
|
|
||||||
areaServed?: SCRoomWithoutReferences;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* E-mail at the work location
|
|
||||||
*
|
|
||||||
* @keyword
|
|
||||||
*/
|
|
||||||
email?: string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fax number at the work location
|
|
||||||
*
|
|
||||||
* @keyword
|
|
||||||
*/
|
|
||||||
faxNumber?: string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Times available for contacting at the work location
|
|
||||||
*
|
|
||||||
* @keyword
|
|
||||||
*/
|
|
||||||
hoursAvailable?: string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Contact number at the work location
|
|
||||||
*
|
|
||||||
* @keyword
|
|
||||||
*/
|
|
||||||
telephone?: string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* URL at the work location
|
|
||||||
*
|
|
||||||
* @keyword
|
|
||||||
*/
|
|
||||||
url?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gender of a person
|
* Gender of a person
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -146,8 +146,8 @@ export class SCThingTranslator {
|
|||||||
* Applies known field value translations of the given SCThings meta class to an instance
|
* Applies known field value translations of the given SCThings meta class to an instance
|
||||||
* Translated values overwrite current values inplace (destructive)
|
* Translated values overwrite current values inplace (destructive)
|
||||||
*
|
*
|
||||||
* @param language The language the thing is translated to
|
* @param instance The thing / object that will be translated
|
||||||
* @param thing The thing that will be translated
|
* @param language The language the thing / object is translated to
|
||||||
* @returns The thing with translated meta field values
|
* @returns The thing with translated meta field values
|
||||||
*/
|
*/
|
||||||
private replaceAvailableMetaFieldValueTranslations(instance: any,
|
private replaceAvailableMetaFieldValueTranslations(instance: any,
|
||||||
@@ -159,13 +159,18 @@ export class SCThingTranslator {
|
|||||||
if (typeof metaClass.fieldValueTranslations[language] !== 'undefined') {
|
if (typeof metaClass.fieldValueTranslations[language] !== 'undefined') {
|
||||||
Object.keys(metaClass.fieldValueTranslations[language])
|
Object.keys(metaClass.fieldValueTranslations[language])
|
||||||
.forEach((key) => {
|
.forEach((key) => {
|
||||||
if (metaClass.fieldValueTranslations[language][key] instanceof Object) {
|
if (metaClass.fieldValueTranslations[language][key] instanceof Object
|
||||||
|
&& (instance as any)[key] instanceof Object) {
|
||||||
// Assigns known translations of subproperties to property in given language (e.g. categories)
|
// Assigns known translations of subproperties to property in given language (e.g. categories)
|
||||||
Object.keys((instance as any)[key])
|
Object.keys((instance as any)[key])
|
||||||
.forEach((subKey) => {
|
.forEach((subKey) => {
|
||||||
(instance as any)[key][subKey] =
|
(instance as any)[key][subKey] =
|
||||||
metaClass.fieldValueTranslations[language][key][(instance as any)[key][subKey]];
|
metaClass.fieldValueTranslations[language][key][(instance as any)[key][subKey]];
|
||||||
});
|
});
|
||||||
|
} else if (metaClass.fieldValueTranslations[language][key] instanceof Object
|
||||||
|
&& typeof (instance as any)[key] === 'string') {
|
||||||
|
// Assigns known translations of enum to property in given language (e.g. SCSettingInputType)
|
||||||
|
(instance as any)[key] = metaClass.fieldValueTranslations[language][key][(instance as any)[key]];
|
||||||
} else {
|
} else {
|
||||||
// Assigns property to known translation of fieldValueTranslations in given language
|
// Assigns property to known translation of fieldValueTranslations in given language
|
||||||
(instance as any)[key] = metaClass.fieldValueTranslations[language][key];
|
(instance as any)[key] = metaClass.fieldValueTranslations[language][key];
|
||||||
@@ -213,8 +218,8 @@ export class SCThingTranslator {
|
|||||||
* All the values will be set to the known translations of the property/key name
|
* All the values will be set to the known translations of the property/key name
|
||||||
* @example
|
* @example
|
||||||
* const translatedMetaDish = translator.translatedPropertyNames<SCCourseOfStudies>(SCThingType.CourseOfStudies);
|
* const translatedMetaDish = translator.translatedPropertyNames<SCCourseOfStudies>(SCThingType.CourseOfStudies);
|
||||||
* @param language The language the object is translated to
|
* @param thing The thing whose property names will be translated
|
||||||
* @param thingType Type of the thing
|
* @param language The language all property names will be translated to
|
||||||
* @returns An object with the properties of the SCThingType where the values are the known property tranlations
|
* @returns An object with the properties of the SCThingType where the values are the known property tranlations
|
||||||
*/
|
*/
|
||||||
public translatedPropertyNames<T extends SCThing>(thing: T,
|
public translatedPropertyNames<T extends SCThing>(thing: T,
|
||||||
@@ -228,8 +233,8 @@ export class SCThingTranslator {
|
|||||||
* Recursively translates the given object in-place
|
* Recursively translates the given object in-place
|
||||||
* Translated values overwrite current values (destructive)
|
* Translated values overwrite current values (destructive)
|
||||||
*
|
*
|
||||||
* @param language The language the thing is translated to
|
* @param instance The thing / object that will be translated
|
||||||
* @param thing The thing that will be translated
|
* @param language The language the thing / object is translated to
|
||||||
* @returns The thing translated
|
* @returns The thing translated
|
||||||
*/
|
*/
|
||||||
public translateWholeThingDestructively(instance: any,
|
public translateWholeThingDestructively(instance: any,
|
||||||
|
|||||||
39
test/resources/ContactPoint.1.json
Normal file
39
test/resources/ContactPoint.1.json
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
{
|
||||||
|
"errorNames": [],
|
||||||
|
"instance": {
|
||||||
|
"type": "contact point",
|
||||||
|
"name": "Dienstadresse",
|
||||||
|
"areaServed": {
|
||||||
|
"type": "room",
|
||||||
|
"categories": [
|
||||||
|
"education"
|
||||||
|
],
|
||||||
|
"uid": "39c1a574-04ef-5157-9c6f-e271d93eb273",
|
||||||
|
"name": "3.G 121",
|
||||||
|
"alternateNames": [
|
||||||
|
"Dienstzimmer"
|
||||||
|
],
|
||||||
|
"geo": {
|
||||||
|
"point": {
|
||||||
|
"coordinates": [
|
||||||
|
8.66919,
|
||||||
|
50.12834
|
||||||
|
],
|
||||||
|
"type": "Point"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"email": "info@example.com",
|
||||||
|
"faxNumber": "069 / 123450",
|
||||||
|
"officeHours": "Mo, Mi 8:00-13:00",
|
||||||
|
"telephone": "069 / 12345",
|
||||||
|
"url": "https://example.com",
|
||||||
|
"uid": "be34a419-e9e8-5de0-b998-dd1b19e7beef",
|
||||||
|
"origin": {
|
||||||
|
"indexed": "2018-09-11T12:30:00Z",
|
||||||
|
"name": "Dummy",
|
||||||
|
"type": "remote"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"schema": "SCContactPoint"
|
||||||
|
}
|
||||||
26
test/resources/Organization.2.json
Normal file
26
test/resources/Organization.2.json
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"errorNames": [],
|
||||||
|
"instance": {
|
||||||
|
"type": "organization",
|
||||||
|
"uid": "20e48393-0d2b-5bdc-9d92-5e0dc1e2860f",
|
||||||
|
"contactPoints": [
|
||||||
|
{
|
||||||
|
"type": "contact point",
|
||||||
|
"name": "Dienstadresse",
|
||||||
|
"email": "info@example.com",
|
||||||
|
"faxNumber": "069 / 123450",
|
||||||
|
"officeHours": "Mo, Mi 8:00-13:00",
|
||||||
|
"telephone": "069 / 12345",
|
||||||
|
"url": "https://example.com",
|
||||||
|
"uid": "be34a419-e9e8-5de0-b998-dd1b19e7beef"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "Technische Universität Berlin",
|
||||||
|
"origin": {
|
||||||
|
"indexed": "2018-09-11T12:30:00Z",
|
||||||
|
"name": "Dummy",
|
||||||
|
"type": "remote"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"schema": "SCOrganization"
|
||||||
|
}
|
||||||
@@ -17,58 +17,14 @@
|
|||||||
"uid": "be34a419-e9e8-5de0-b998-dd1b19e7f451",
|
"uid": "be34a419-e9e8-5de0-b998-dd1b19e7f451",
|
||||||
"workLocations": [
|
"workLocations": [
|
||||||
{
|
{
|
||||||
"url": "http://www.fb03.uni-frankfurt.de/1234567",
|
"type": "contact point",
|
||||||
"email": "mustermann@soz.uni-frankfurt.de",
|
"name": "Dienstadresse",
|
||||||
"faxNumber": "",
|
"email": "info@example.com",
|
||||||
"telephone": "069/123-36232; -1324325",
|
"faxNumber": "069 / 123450",
|
||||||
"hoursAvailable": "siehe Homepage",
|
"officeHours": "Mo, Mi 8:00-13:00",
|
||||||
"areaServed": {
|
"telephone": "069 / 12345",
|
||||||
"type": "room",
|
"url": "https://example.com",
|
||||||
"categories": [
|
"uid": "be34a419-e9e8-5de0-b998-dd1b19e7beef"
|
||||||
"education"
|
|
||||||
],
|
|
||||||
"uid": "39c1a574-04ef-5157-9c6f-e271d93eb273",
|
|
||||||
"name": "3.G 121",
|
|
||||||
"alternateNames": [
|
|
||||||
"Dienstzimmer"
|
|
||||||
],
|
|
||||||
"geo": {
|
|
||||||
"point": {
|
|
||||||
"coordinates": [
|
|
||||||
8.66919,
|
|
||||||
50.12834
|
|
||||||
],
|
|
||||||
"type": "Point"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"url": "http://www2.uni-frankfurt.de/12345/vizepraesidenten",
|
|
||||||
"email": "",
|
|
||||||
"faxNumber": "",
|
|
||||||
"telephone": "069/123-1235",
|
|
||||||
"hoursAvailable": "siehe Homepage",
|
|
||||||
"areaServed": {
|
|
||||||
"type": "room",
|
|
||||||
"categories": [
|
|
||||||
"education"
|
|
||||||
],
|
|
||||||
"uid": "5e54aefd-078b-5007-bca1-53dc60f79d37",
|
|
||||||
"name": "4.P 22",
|
|
||||||
"alternateNames": [
|
|
||||||
"Dienstzimmer"
|
|
||||||
],
|
|
||||||
"geo": {
|
|
||||||
"point": {
|
|
||||||
"coordinates": [
|
|
||||||
8.66898,
|
|
||||||
50.12772
|
|
||||||
],
|
|
||||||
"type": "Point"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"origin": {
|
"origin": {
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
},
|
},
|
||||||
"translations": {
|
"translations": {
|
||||||
"de": {
|
"de": {
|
||||||
"categories": ["Benutzer"],
|
|
||||||
"description": "Die Sprache in der die App angezeigt wird.",
|
"description": "Die Sprache in der die App angezeigt wird.",
|
||||||
"name": "Sprache",
|
"name": "Sprache",
|
||||||
"values": [
|
"values": [
|
||||||
@@ -25,9 +24,6 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"en": {
|
"en": {
|
||||||
"categories": [
|
|
||||||
"User"
|
|
||||||
],
|
|
||||||
"description": "The language this app is going to use.",
|
"description": "The language this app is going to use.",
|
||||||
"name": "Language",
|
"name": "Language",
|
||||||
"values": [
|
"values": [
|
||||||
|
|||||||
@@ -24,8 +24,7 @@ import {DeclarationReflection, ProjectReflection} from 'typedoc';
|
|||||||
import {ArrayType, IntrinsicType, ReferenceType, StringLiteralType, Type, UnionType} from 'typedoc/dist/lib/models';
|
import {ArrayType, IntrinsicType, ReferenceType, StringLiteralType, Type, UnionType} from 'typedoc/dist/lib/models';
|
||||||
|
|
||||||
process.on('unhandledRejection', (err) => {
|
process.on('unhandledRejection', (err) => {
|
||||||
Logger.error('UNHANDLED REJECTION', err.stack);
|
throw err;
|
||||||
process.exit(1);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import {slow, suite, test, timeout} from 'mocha-typescript';
|
|||||||
import {SCThingOriginType, SCThingType} from '../src/things/abstract/thing';
|
import {SCThingOriginType, SCThingType} from '../src/things/abstract/thing';
|
||||||
import {SCBuildingWithoutReferences} from '../src/things/building';
|
import {SCBuildingWithoutReferences} from '../src/things/building';
|
||||||
import {SCDish, SCDishMeta} from '../src/things/dish';
|
import {SCDish, SCDishMeta} from '../src/things/dish';
|
||||||
|
import {SCSetting, SCSettingInputType} from '../src/things/setting';
|
||||||
import {SCThingTranslator} from '../src/translator';
|
import {SCThingTranslator} from '../src/translator';
|
||||||
|
|
||||||
const building: SCBuildingWithoutReferences = {
|
const building: SCBuildingWithoutReferences = {
|
||||||
@@ -86,6 +87,23 @@ const dish: SCDish = {
|
|||||||
uid: '540862f3-ea30-5b8f-8678-56b4dc217140',
|
uid: '540862f3-ea30-5b8f-8678-56b4dc217140',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const setting: SCSetting = {
|
||||||
|
categories: ['profile'],
|
||||||
|
defaultValue: 'student',
|
||||||
|
description: 'base-description',
|
||||||
|
inputType: SCSettingInputType.SingleChoice,
|
||||||
|
name: 'group',
|
||||||
|
order: 1,
|
||||||
|
origin: {
|
||||||
|
indexed: '2018-11-11T14:30:00Z',
|
||||||
|
name: 'Dummy',
|
||||||
|
type: SCThingOriginType.Remote,
|
||||||
|
},
|
||||||
|
type: SCThingType.Setting,
|
||||||
|
uid: '2c97aa36-4aa2-43de-bc5d-a2b2cb3a530e',
|
||||||
|
values: ['student', 'employee', true, 42],
|
||||||
|
};
|
||||||
|
|
||||||
const translator = new SCThingTranslator('de');
|
const translator = new SCThingTranslator('de');
|
||||||
// tslint:disable-next-line:no-eval
|
// tslint:disable-next-line:no-eval
|
||||||
const languageNonExistant = eval("'jp'");
|
const languageNonExistant = eval("'jp'");
|
||||||
@@ -95,6 +113,10 @@ const translatorWithFallback = new SCThingTranslator(languageNonExistant);
|
|||||||
// tslint:disable:member-ordering TranslationSpecInplace
|
// tslint:disable:member-ordering TranslationSpecInplace
|
||||||
@suite(timeout(10000), slow(5000))
|
@suite(timeout(10000), slow(5000))
|
||||||
export class TranslationSpecInplace {
|
export class TranslationSpecInplace {
|
||||||
|
@test
|
||||||
|
public directEnumSingleValue () {
|
||||||
|
expect(translator.translate(setting).inputType()).to.equal('einfache Auswahl');
|
||||||
|
}
|
||||||
|
|
||||||
@test
|
@test
|
||||||
public directStringLiteralType() {
|
public directStringLiteralType() {
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import {SCArticle, SCArticleWithoutReferences} from '../src/things/article';
|
|||||||
import {SCBook, SCBookWithoutReferences} from '../src/things/book';
|
import {SCBook, SCBookWithoutReferences} from '../src/things/book';
|
||||||
import {SCBuilding, SCBuildingWithoutReferences} from '../src/things/building';
|
import {SCBuilding, SCBuildingWithoutReferences} from '../src/things/building';
|
||||||
import {SCCatalog, SCCatalogWithoutReferences} from '../src/things/catalog';
|
import {SCCatalog, SCCatalogWithoutReferences} from '../src/things/catalog';
|
||||||
|
import {SCContactPoint, SCContactPointWithoutReferences} from '../src/things/contact-point';
|
||||||
import {SCCourseOfStudies, SCCourseOfStudiesWithoutReferences} from '../src/things/course-of-studies';
|
import {SCCourseOfStudies, SCCourseOfStudiesWithoutReferences} from '../src/things/course-of-studies';
|
||||||
import {SCDateSeries, SCDateSeriesWithoutReferences} from '../src/things/date-series';
|
import {SCDateSeries, SCDateSeriesWithoutReferences} from '../src/things/date-series';
|
||||||
import {SCDiff, SCDiffWithoutReferences} from '../src/things/diff';
|
import {SCDiff, SCDiffWithoutReferences} from '../src/things/diff';
|
||||||
@@ -126,6 +127,17 @@ assert<Has<SCBuildingPropertyTypes, SCThing>>(false);
|
|||||||
assert<Extends<SCBuildingWithoutReferences, SCThing>>(false);
|
assert<Extends<SCBuildingWithoutReferences, SCThing>>(false);
|
||||||
assert<Extends<SCBuilding, SCThing>>(true);
|
assert<Extends<SCBuilding, SCThing>>(true);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Types of properties of SCContactPoint
|
||||||
|
*/
|
||||||
|
type SCContactPointPropertyTypes = PropertyTypesNested<SCContactPoint>;
|
||||||
|
assert<NotHas<SCContactPointPropertyTypes, SCThingWithoutReferences>>(false);
|
||||||
|
assert<Has<SCContactPointPropertyTypes, SCThingWithoutReferences>>(true);
|
||||||
|
assert<NotHas<SCContactPointPropertyTypes, SCThing>>(true);
|
||||||
|
assert<Has<SCContactPointPropertyTypes, SCThing>>(false);
|
||||||
|
assert<Extends<SCContactPointWithoutReferences, SCThing>>(false);
|
||||||
|
assert<Extends<SCContactPoint, SCThing>>(true);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Types of properties of SCCatalog
|
* Types of properties of SCCatalog
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user