@accordproject/concerto-core 4.0.3 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * Concerto v4.0.3
2
+ * Concerto v4.1.0
3
3
  * Licensed under the Apache License, Version 2.0 (the "License");
4
4
  * you may not use this file except in compliance with the License.
5
5
  * You may obtain a copy of the License at
@@ -37,6 +37,14 @@ declare class Declaration extends Decorated {
37
37
  * @protected
38
38
  */
39
39
  validate(...args: any[]): void;
40
+ /**
41
+ * Determines whether a type name resolves to a reserved type in the Concerto
42
+ * system namespace.
43
+ * @param {ModelFile} modelFile - the current model file
44
+ * @param {string} typeName - local/imported type name
45
+ * @returns {boolean} true if the resolved import is a reserved system type
46
+ */
47
+ private isReservedSystemTypeImport;
40
48
  /**
41
49
  * Returns the ModelFile that defines this class.
42
50
  *
@@ -72,11 +72,38 @@ class Declaration extends Decorated {
72
72
  */
73
73
  validate(...args) {
74
74
  super.validate(...args);
75
+ const modelFile = this.getModelFile();
75
76
  // #648 - check for clashes against imported types
76
- if (this.getModelFile().isImportedType(this.getName())) {
77
+ if (modelFile.isImportedType(this.getName())) {
78
+ const dangerouslyAllowReservedSystemTypeNamesInUserModels = Boolean(modelFile.getModelManager()?.options?.dangerouslyAllowReservedSystemTypeNamesInUserModels);
79
+ if (dangerouslyAllowReservedSystemTypeNamesInUserModels && this.isReservedSystemTypeImport(modelFile, this.getName())) {
80
+ return;
81
+ }
77
82
  throw new IllegalModelException(`Type '${this.getName()}' clashes with an imported type with the same name.`, this.modelFile, this.ast.location);
78
83
  }
79
84
  }
85
+ /**
86
+ * Determines whether a type name resolves to a reserved type in the Concerto
87
+ * system namespace.
88
+ * @param {ModelFile} modelFile - the current model file
89
+ * @param {string} typeName - local/imported type name
90
+ * @returns {boolean} true if the resolved import is a reserved system type
91
+ */
92
+ isReservedSystemTypeImport(modelFile, typeName) {
93
+ const importedType = modelFile.getType(typeName);
94
+ if (!importedType || typeof importedType === 'string') {
95
+ return false;
96
+ }
97
+ const importedModelFile = importedType.getModelFile();
98
+ if (!importedModelFile || !importedModelFile.isSystemModelFile()) {
99
+ return false;
100
+ }
101
+ return importedType.isConcept()
102
+ || importedType.isAsset()
103
+ || importedType.isTransaction()
104
+ || importedType.isParticipant()
105
+ || importedType.isEvent();
106
+ }
80
107
  /**
81
108
  * Returns the ModelFile that defines this class.
82
109
  *
@@ -1 +1 @@
1
- {"version":3,"file":"declaration.js","sourceRoot":"","sources":["../../src/introspect/declaration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"declaration.js","sourceRoot":"","sources":["../../src/introspect/declaration.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ declare class ModelManager extends BaseModelManager {
19
19
  * @constructor
20
20
  * @param {object} [options] - ModelManager options, also passed to Serializer
21
21
  * @param {Object} [options.regExp] - An alternative regular expression engine.
22
+ * @param {boolean} [options.dangerouslyAllowReservedSystemTypeNamesInUserModels] - Transitional escape hatch; when true, declarations may use reserved system type names
22
23
  */
23
24
  constructor(options?: ModelManagerOptions);
24
25
  /**
@@ -53,6 +53,7 @@ class ModelManager extends BaseModelManager {
53
53
  * @constructor
54
54
  * @param {object} [options] - ModelManager options, also passed to Serializer
55
55
  * @param {Object} [options.regExp] - An alternative regular expression engine.
56
+ * @param {boolean} [options.dangerouslyAllowReservedSystemTypeNamesInUserModels] - Transitional escape hatch; when true, declarations may use reserved system type names
56
57
  */
57
58
  constructor(options = {}) {
58
59
  super(options, ctoProcessFile(options));
@@ -1 +1 @@
1
- {"version":3,"file":"modelmanager.js","sourceRoot":"","sources":["../src/modelmanager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,YAAY,CAAC;AAEb,MAAM,MAAM,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC,MAAM,CAAC;AAE7D,uDAAwD;AAGxD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,2BAA2B,CAAC,CAAC;AAE5D,0CAA0C;AAC1C,mCAAmC;AACnC,0BAA0B;AAC1B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;IACvB,MAAM,SAAS,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;AACxD,CAAC;AACD,kCAAkC;AAElC,4CAA4C;AAC5C,MAAM,cAAc,GAAG,CAAC,UAA+B,EAAE,EAA6D,EAAE,CAAC,CAAC,IAAmB,EAAE,IAAa,EAAE,EAAE;IAC5J,mEAAmE;IACnE,MAAM,aAAa,GAAG,EAAE,iBAAiB,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;IACxE,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,IAAI,IAAI,SAAS,CAAC;IACnC,OAAO;QACH,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC;QACnD,WAAW,EAAE,OAAO;QACpB,QAAQ;KACX,CAAC;AACN,CAAC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,YAAa,SAAQ,gBAAgB;IACvC;;;;;OAKG;IACH,YAAY,UAA+B,EAAE;QACzC,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;;;;OAQG;IACH,WAAW,CAAC,GAAW,EAAE,QAAiB,EAAE,iBAA2B;QACnE,MAAM,IAAI,GAAG,aAAa,CAAC;QAC3B,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QAE1C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAChE,CAAC;CAEJ;AACD,iBAAS,YAAY,CAAC"}
1
+ {"version":3,"file":"modelmanager.js","sourceRoot":"","sources":["../src/modelmanager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,YAAY,CAAC;AAEb,MAAM,MAAM,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC,MAAM,CAAC;AAE7D,uDAAwD;AAGxD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,2BAA2B,CAAC,CAAC;AAE5D,0CAA0C;AAC1C,mCAAmC;AACnC,0BAA0B;AAC1B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;IACvB,MAAM,SAAS,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;AACxD,CAAC;AACD,kCAAkC;AAElC,4CAA4C;AAC5C,MAAM,cAAc,GAAG,CAAC,UAA+B,EAAE,EAA6D,EAAE,CAAC,CAAC,IAAmB,EAAE,IAAa,EAAE,EAAE;IAC5J,mEAAmE;IACnE,MAAM,aAAa,GAAG,EAAE,iBAAiB,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;IACxE,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,IAAI,IAAI,SAAS,CAAC;IACnC,OAAO;QACH,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC;QACnD,WAAW,EAAE,OAAO;QACpB,QAAQ;KACX,CAAC;AACN,CAAC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,YAAa,SAAQ,gBAAgB;IACvC;;;;;;OAMG;IACH,YAAY,UAA+B,EAAE;QACzC,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;;;;OAQG;IACH,WAAW,CAAC,GAAW,EAAE,QAAiB,EAAE,iBAA2B;QACnE,MAAM,IAAI,GAAG,aAAa,CAAC;QAC3B,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QAE1C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;IAChE,CAAC;CAEJ;AACD,iBAAS,YAAY,CAAC"}
package/dist/types.d.ts CHANGED
@@ -2,6 +2,7 @@ export interface ModelManagerOptions {
2
2
  regExp?: RegExp;
3
3
  metamodelValidation?: boolean;
4
4
  addMetamodel?: boolean;
5
+ dangerouslyAllowReservedSystemTypeNamesInUserModels?: boolean;
5
6
  decoratorValidation?: {
6
7
  missingDecorator?: string;
7
8
  invalidDecorator?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@accordproject/concerto-core",
3
- "version": "4.0.3",
3
+ "version": "4.1.0",
4
4
  "description": "Core Implementation for the Concerto Modeling Language",
5
5
  "homepage": "https://github.com/accordproject/concerto",
6
6
  "engines": {
@@ -79,9 +79,9 @@
79
79
  "yargs": "17.3.1"
80
80
  },
81
81
  "dependencies": {
82
- "@accordproject/concerto-cto": "4.0.3",
82
+ "@accordproject/concerto-cto": "4.1.0",
83
83
  "@accordproject/concerto-metamodel": "^3.13.0",
84
- "@accordproject/concerto-util": "4.0.3",
84
+ "@accordproject/concerto-util": "4.1.0",
85
85
  "debug": "4.3.7",
86
86
  "lorem-ipsum": "2.0.8",
87
87
  "randexp": "0.5.3",