Skip to content

Commit 1d30585

Browse files
author
Oleksandr Dzhychko
committed
feat(vue-model-api): add a library to use models from Vue.js
Users can use the exported functions `useModelsFromJson` to read models from exported JSON files. To connect to a server, users must use `useModelClient` and `useRootNode`. The returned objects also work with Vue.js reactivity system and the typed classes generated by `model-api-gen`.
1 parent e14d15f commit 1d30585

39 files changed

+11165
-12
lines changed

.github/CODEOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,4 @@
2727
/mps-model-server/ @slisson
2828
/mps-model-server-plugin/ @slisson
2929
/ts-model-api/ @slisson
30+
/vue-model-api/ @odzhychko

.pre-commit-config.yaml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,21 @@ repos:
3131
# IMPORTANT: keep in sync with the version configured in build.gradle.kts
3232
- --ktlint-version=0.50.0
3333
- --autofix
34+
- repo: https://github.com/pre-commit/mirrors-prettier
35+
# IMPORTANT: keep in sync with the version configured in `vue-model-api/package.json`
36+
rev: v3.0.3
37+
hooks:
38+
- id: prettier
39+
files: ^(vue-model-api)|(model-api-gen-gradle-test/vue-integration)/
40+
- repo: https://github.com/pre-commit/mirrors-eslint
41+
# IMPORTANT: keep versions of hook and additional dependencies in sync with the versions configured in `vue-model-api/package.json`
42+
rev: v8.50.0
43+
hooks:
44+
- id: eslint
45+
additional_dependencies:
46+
47+
48+
- "@typescript-eslint/[email protected]"
49+
- "@typescript-eslint/[email protected]"
50+
files: ^vue-model-api/src/
51+
'types': [ts]

build.gradle.kts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,12 @@ fun computeVersion(): Any {
5959
return if (versionFile.exists()) {
6060
versionFile.readText().trim()
6161
} else {
62-
gitVersion().let { if (it.endsWith("-SNAPSHOT")) it else "$it-SNAPSHOT" }.also { versionFile.writeText(it) }
62+
gitVersion()
63+
// Avoid duplicated "-SNAPSHOT" ending
64+
.let { if (it.endsWith("-SNAPSHOT")) it else "$it-SNAPSHOT" }
65+
// Normalize the version so that is always a valid NPM version.
66+
.let { if (it.matches("""\d+\.\d+.\d+-.*""".toRegex())) it else "0.0.1-$it" }
67+
.also { versionFile.writeText(it) }
6368
}
6469
}
6570

commitlint.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ module.exports = {
2323
"mps-model-server",
2424
"mps-model-server-plugin",
2525
"ts-model-api",
26+
"vue-model-api",
2627
],
2728
],
2829
"subject-case": [0, 'never']

model-api-gen-gradle-test/settings.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,4 @@ rootProject.name = "model-api-gen-gradle-test"
3030
include("metamodel-export")
3131
include("typescript-generation")
3232
include("kotlin-generation")
33+
include("vue-integration")

model-api-gen-gradle-test/typescript-generation/build.gradle.kts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
1-
import org.modelix.metamodel.gradle.GenerateMetaModelSources
1+
import com.github.gradle.node.npm.task.NpmTask
22

33
plugins {
44
base
55
alias(libs.plugins.node)
66
id("org.modelix.model-api-gen") apply false
77
}
88

9-
val codeGenerationTask = project(":metamodel-export").tasks.named<GenerateMetaModelSources>("generateMetaModelSources")
10-
119
tasks.named("npm_run_build") {
12-
inputs.dir(codeGenerationTask.map { it.typescriptOutputDir })
10+
dependsOn(":metamodel-export:generateMetaModelSources")
11+
inputs.dir(layout.buildDirectory.dir("typescript_src"))
1312
inputs.file("package.json")
1413
inputs.file("package-lock.json")
1514

@@ -23,3 +22,8 @@ tasks.assemble {
2322
tasks.clean {
2423
dependsOn("npm_run_clean")
2524
}
25+
26+
tasks.register<NpmTask>("packJsPackage") {
27+
dependsOn("npm_run_build")
28+
args.set(listOf("pack", "--pack-destination", "build"))
29+
}

model-api-gen-gradle-test/typescript-generation/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

model-api-gen-gradle-test/typescript-generation/package.json

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "@modelix/model-api-gen-gradle-test",
2+
"name": "typescript-generation",
33
"version": "0.0.0",
44
"description": "",
55
"keywords": [
@@ -14,10 +14,7 @@
1414
},
1515
"license": "Apache 2.0",
1616
"files": [
17-
"dist/*.*js.map",
18-
"dist/*.*js",
19-
"dist/*.d.ts.map",
20-
"dist/*.d.ts"
17+
"dist/"
2118
],
2219
"type": "commonjs",
2320
"main": "dist/index",
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
.gradle
2+
build

model-api-gen-gradle-test/vue-integration/.prettierrc

Whitespace-only changes.

0 commit comments

Comments
 (0)