@mat3ra/esse 2024.1.25-7 → 2024.1.26-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.
- package/build_schemas.js +34 -4
- package/lib/js/esse/index.js +21 -3
- package/lib/js/esse/settings.js +6 -2
- package/package.json +2 -1
- package/src/js/esse/index.js +15 -5
- package/src/js/esse/settings.js +4 -0
package/build_schemas.js
CHANGED
|
@@ -8,8 +8,10 @@ const path = require("path");
|
|
|
8
8
|
const mergeAllOf = require("json-schema-merge-allof");
|
|
9
9
|
const { ESSE } = require("./lib/js/esse");
|
|
10
10
|
|
|
11
|
+
// JS Modules
|
|
12
|
+
|
|
11
13
|
const esse = new ESSE();
|
|
12
|
-
const { schemas, wrappedExamples } = esse;
|
|
14
|
+
const { schemas, wrappedExamples, propertiesManifest, results } = esse;
|
|
13
15
|
const schema = esse.buildGlobalSchema();
|
|
14
16
|
|
|
15
17
|
fs.writeFileSync(
|
|
@@ -20,19 +22,47 @@ fs.writeFileSync(
|
|
|
20
22
|
|
|
21
23
|
fs.writeFileSync("./schema.js", "module.exports = " + JSON.stringify(schema), "utf8");
|
|
22
24
|
|
|
25
|
+
if (process.env.BUILD_PYTHON_MODULES === "true") {
|
|
26
|
+
// PY Modules
|
|
27
|
+
fs.writeFileSync(
|
|
28
|
+
"./src/py/mat3ra/esse/data/examples.py",
|
|
29
|
+
["import json", `EXAMPLES = json.loads(r'''${JSON.stringify(wrappedExamples)}''')`].join(
|
|
30
|
+
"\n",
|
|
31
|
+
),
|
|
32
|
+
"utf8",
|
|
33
|
+
);
|
|
34
|
+
fs.writeFileSync(
|
|
35
|
+
"./src/py/mat3ra/esse/data/schemas.py",
|
|
36
|
+
["import json", `SCHEMAS = json.loads(r'''${JSON.stringify(schemas)}''')`].join("\n"),
|
|
37
|
+
"utf8",
|
|
38
|
+
);
|
|
39
|
+
fs.writeFileSync(
|
|
40
|
+
"./src/py/mat3ra/esse/data/properties.py",
|
|
41
|
+
[
|
|
42
|
+
"import json",
|
|
43
|
+
`PROPERTIES_MANIFEST = json.loads(r'''${JSON.stringify(propertiesManifest)}''')`,
|
|
44
|
+
`RESULTS = json.loads(r'''${JSON.stringify(results)}''')`,
|
|
45
|
+
].join("\n"),
|
|
46
|
+
"utf8",
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
|
|
23
50
|
if (process.env.BUILD_ASSETS !== "true") {
|
|
24
51
|
process.exit(0);
|
|
25
52
|
}
|
|
26
53
|
|
|
27
54
|
const subfolder = process.env.BUILD_PATH || "./docs/js/";
|
|
28
55
|
schemas.forEach((s) => {
|
|
56
|
+
let mergedSchema = s;
|
|
29
57
|
if (process.env.SKIP_MERGE_ALLOF !== "true") {
|
|
30
|
-
|
|
58
|
+
mergedSchema = mergeAllOf(s, {
|
|
59
|
+
resolvers: { defaultResolver: mergeAllOf.options.resolvers.title },
|
|
60
|
+
});
|
|
31
61
|
}
|
|
32
|
-
const id_as_path =
|
|
62
|
+
const id_as_path = mergedSchema.$id.replace("-", "_");
|
|
33
63
|
const full_path = `${subfolder}/schema/${id_as_path}.json`;
|
|
34
64
|
fs.mkdirSync(path.dirname(full_path), { recursive: true });
|
|
35
|
-
fs.writeFileSync(full_path, JSON.stringify(
|
|
65
|
+
fs.writeFileSync(full_path, JSON.stringify(mergedSchema, null, 4), "utf8");
|
|
36
66
|
});
|
|
37
67
|
wrappedExamples.forEach((e) => {
|
|
38
68
|
const id_as_path = e.path.replace("-", "_");
|
package/lib/js/esse/index.js
CHANGED
|
@@ -7,6 +7,10 @@ exports.ESSE = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _ajv = _interopRequireDefault(require("ajv"));
|
|
9
9
|
|
|
10
|
+
var _fs = _interopRequireDefault(require("fs"));
|
|
11
|
+
|
|
12
|
+
var _jsYaml = _interopRequireDefault(require("js-yaml"));
|
|
13
|
+
|
|
10
14
|
var _schemaUtils = require("./schemaUtils");
|
|
11
15
|
|
|
12
16
|
var _settings = require("./settings");
|
|
@@ -26,8 +30,20 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
26
30
|
var SCHEMAS = (0, _utils.parseIncludeReferenceStatementsByDir)(_settings.SCHEMAS_DIR);
|
|
27
31
|
var EXAMPLES = (0, _utils.parseIncludeReferenceStatementsByDir)(_settings.EXAMPLES_DIR, true);
|
|
28
32
|
|
|
33
|
+
var PROPERTIES_MANIFEST = _jsYaml["default"].load(_fs["default"].readFileSync(_settings.PROPERTIES_MANIFEST_PATH, {
|
|
34
|
+
encoding: "utf-8"
|
|
35
|
+
}));
|
|
36
|
+
|
|
37
|
+
var RESULTS = Object.entries(PROPERTIES_MANIFEST).map(function (k) {
|
|
38
|
+
return k[1].isResult ? k[0] : null;
|
|
39
|
+
}).filter(function (x) {
|
|
40
|
+
return x;
|
|
41
|
+
});
|
|
42
|
+
|
|
29
43
|
var ESSE = /*#__PURE__*/function () {
|
|
30
44
|
function ESSE() {
|
|
45
|
+
var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
46
|
+
|
|
31
47
|
_classCallCheck(this, ESSE);
|
|
32
48
|
|
|
33
49
|
_defineProperty(this, "validate", function (example, schema) {
|
|
@@ -43,11 +59,13 @@ var ESSE = /*#__PURE__*/function () {
|
|
|
43
59
|
return isValid;
|
|
44
60
|
});
|
|
45
61
|
|
|
46
|
-
this.schemas = SCHEMAS;
|
|
47
|
-
this.wrappedExamples = EXAMPLES;
|
|
48
|
-
this.examples =
|
|
62
|
+
this.schemas = config.schemas || SCHEMAS;
|
|
63
|
+
this.wrappedExamples = config.wrappedExamples || EXAMPLES;
|
|
64
|
+
this.examples = this.wrappedExamples.map(function (example) {
|
|
49
65
|
return example.data;
|
|
50
66
|
});
|
|
67
|
+
this.propertiesManifest = config.propertiesManifest || PROPERTIES_MANIFEST;
|
|
68
|
+
this.results = config.results || RESULTS;
|
|
51
69
|
}
|
|
52
70
|
|
|
53
71
|
_createClass(ESSE, [{
|
package/lib/js/esse/settings.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.SCHEMAS_DIR = exports.EXAMPLES_DIR = void 0;
|
|
6
|
+
exports.SCHEMAS_DIR = exports.PROPERTIES_MANIFEST_PATH = exports.EXAMPLES_DIR = void 0;
|
|
7
7
|
|
|
8
8
|
var _path = _interopRequireDefault(require("path"));
|
|
9
9
|
|
|
@@ -15,4 +15,8 @@ exports.SCHEMAS_DIR = SCHEMAS_DIR;
|
|
|
15
15
|
|
|
16
16
|
var EXAMPLES_DIR = _path["default"].resolve(__dirname, "../../../example");
|
|
17
17
|
|
|
18
|
-
exports.EXAMPLES_DIR = EXAMPLES_DIR;
|
|
18
|
+
exports.EXAMPLES_DIR = EXAMPLES_DIR;
|
|
19
|
+
|
|
20
|
+
var PROPERTIES_MANIFEST_PATH = _path["default"].resolve(__dirname, "../../../manifest/properties.yaml");
|
|
21
|
+
|
|
22
|
+
exports.PROPERTIES_MANIFEST_PATH = PROPERTIES_MANIFEST_PATH;
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mat3ra/esse",
|
|
3
|
-
"version": "2024.1.
|
|
3
|
+
"version": "2024.1.26-0",
|
|
4
4
|
"description": "Mat3ra's Excellent Source of Schemas and Examples (ESSE) for Digital Materials R&D",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"prepublishOnly": "rm -rf lib; npm run transpile",
|
|
7
7
|
"transpile": "mkdir -p lib; babel src/js --out-dir lib/js; node build_schemas.js",
|
|
8
8
|
"transpile-and-build-assets": "mkdir -p lib; babel src/js --out-dir lib/js; BUILD_ASSETS=true BUILD_PATH='./lib/js' node build_schemas.js",
|
|
9
9
|
"build:assets": "node build_schemas.js",
|
|
10
|
+
"build:js-and-python-modules": "BUILD_PYTHON_MODULES=true node build_schemas.js",
|
|
10
11
|
"build:assets-with-docs": "BUILD_ASSETS=true node build_schemas.js",
|
|
11
12
|
"test": "nyc --reporter=text mocha --bail --require @babel/register tests/js/",
|
|
12
13
|
"lint": "eslint src/js && prettier --write src/js",
|
package/src/js/esse/index.js
CHANGED
|
@@ -1,17 +1,27 @@
|
|
|
1
1
|
import Ajv from "ajv";
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import yaml from "js-yaml";
|
|
2
4
|
|
|
3
5
|
import { buildSchemaDefinitions } from "./schemaUtils";
|
|
4
|
-
import { EXAMPLES_DIR, SCHEMAS_DIR } from "./settings";
|
|
6
|
+
import { EXAMPLES_DIR, PROPERTIES_MANIFEST_PATH, SCHEMAS_DIR } from "./settings";
|
|
5
7
|
import { parseIncludeReferenceStatementsByDir } from "./utils";
|
|
6
8
|
|
|
7
9
|
const SCHEMAS = parseIncludeReferenceStatementsByDir(SCHEMAS_DIR);
|
|
8
10
|
const EXAMPLES = parseIncludeReferenceStatementsByDir(EXAMPLES_DIR, true);
|
|
11
|
+
const PROPERTIES_MANIFEST = yaml.load(
|
|
12
|
+
fs.readFileSync(PROPERTIES_MANIFEST_PATH, { encoding: "utf-8" }),
|
|
13
|
+
);
|
|
14
|
+
const RESULTS = Object.entries(PROPERTIES_MANIFEST)
|
|
15
|
+
.map((k) => (k[1].isResult ? k[0] : null))
|
|
16
|
+
.filter((x) => x);
|
|
9
17
|
|
|
10
18
|
export class ESSE {
|
|
11
|
-
constructor() {
|
|
12
|
-
this.schemas = SCHEMAS;
|
|
13
|
-
this.wrappedExamples = EXAMPLES;
|
|
14
|
-
this.examples =
|
|
19
|
+
constructor(config = {}) {
|
|
20
|
+
this.schemas = config.schemas || SCHEMAS;
|
|
21
|
+
this.wrappedExamples = config.wrappedExamples || EXAMPLES;
|
|
22
|
+
this.examples = this.wrappedExamples.map((example) => example.data);
|
|
23
|
+
this.propertiesManifest = config.propertiesManifest || PROPERTIES_MANIFEST;
|
|
24
|
+
this.results = config.results || RESULTS;
|
|
15
25
|
}
|
|
16
26
|
|
|
17
27
|
getSchemaById(schemaId) {
|
package/src/js/esse/settings.js
CHANGED
|
@@ -2,3 +2,7 @@ import path from "path";
|
|
|
2
2
|
|
|
3
3
|
export const SCHEMAS_DIR = path.resolve(__dirname, "../../../schema");
|
|
4
4
|
export const EXAMPLES_DIR = path.resolve(__dirname, "../../../example");
|
|
5
|
+
export const PROPERTIES_MANIFEST_PATH = path.resolve(
|
|
6
|
+
__dirname,
|
|
7
|
+
"../../../manifest/properties.yaml",
|
|
8
|
+
);
|