@omicronenergy/oscd-shell 0.0.5

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.
Files changed (108) hide show
  1. package/.editorconfig +22 -0
  2. package/.github/actions/setup-node-env/action.yml +49 -0
  3. package/.github/workflows/release-please.yml +84 -0
  4. package/.github/workflows/test.yml +18 -0
  5. package/.github/workflows/update-screenshots.yml +29 -0
  6. package/.husky/commit-msg +1 -0
  7. package/.husky/pre-commit +1 -0
  8. package/.release-please-manifest.json +1 -0
  9. package/CHANGELOG.md +73 -0
  10. package/CONTRIBUTING.md +393 -0
  11. package/LICENSE +201 -0
  12. package/README.md +74 -0
  13. package/commitlint.config.js +1 -0
  14. package/demo/AddPlugins.js +42 -0
  15. package/demo/DemoPluginSrc.js +9 -0
  16. package/demo/embedded.html +17 -0
  17. package/demo/index.html +95 -0
  18. package/foundation/cyrb64.ts +27 -0
  19. package/foundation/edit-event.ts +273 -0
  20. package/foundation/open-event.ts +21 -0
  21. package/foundation.ts +28 -0
  22. package/lit-localize.json +15 -0
  23. package/localization/de.xlf +75 -0
  24. package/oscd-shell.editing.spec.ts +813 -0
  25. package/oscd-shell.plugging.spec.ts +78 -0
  26. package/oscd-shell.spec.ts +431 -0
  27. package/oscd-shell.test.ts +382 -0
  28. package/oscd-shell.ts +906 -0
  29. package/package.json +195 -0
  30. package/release-please-config.json +21 -0
  31. package/rollup.config.js +51 -0
  32. package/screenshots/Chromium/baseline/app-bar-de.png +0 -0
  33. package/screenshots/Chromium/baseline/app-bar-en.png +0 -0
  34. package/screenshots/Chromium/baseline/document-name-de.png +0 -0
  35. package/screenshots/Chromium/baseline/document-name-en.png +0 -0
  36. package/screenshots/Chromium/baseline/editor-plugins-de.png +0 -0
  37. package/screenshots/Chromium/baseline/editor-plugins-en.png +0 -0
  38. package/screenshots/Chromium/baseline/editor-plugins-selected-de.png +0 -0
  39. package/screenshots/Chromium/baseline/editor-plugins-selected-en.png +0 -0
  40. package/screenshots/Chromium/baseline/editor-plugins-with-doc-de.png +0 -0
  41. package/screenshots/Chromium/baseline/editor-plugins-with-doc-en.png +0 -0
  42. package/screenshots/Chromium/baseline/log-entries-de.png +0 -0
  43. package/screenshots/Chromium/baseline/log-entries-en.png +0 -0
  44. package/screenshots/Chromium/baseline/log-entries-redone-de.png +0 -0
  45. package/screenshots/Chromium/baseline/log-entries-redone-en.png +0 -0
  46. package/screenshots/Chromium/baseline/log-entries-undone-de.png +0 -0
  47. package/screenshots/Chromium/baseline/log-entries-undone-en.png +0 -0
  48. package/screenshots/Chromium/baseline/log-screen-de.png +0 -0
  49. package/screenshots/Chromium/baseline/log-screen-en.png +0 -0
  50. package/screenshots/Chromium/baseline/menu-drawer-de.png +0 -0
  51. package/screenshots/Chromium/baseline/menu-drawer-en.png +0 -0
  52. package/screenshots/Chromium/baseline/menu-plugins-de.png +0 -0
  53. package/screenshots/Chromium/baseline/menu-plugins-en.png +0 -0
  54. package/screenshots/Chromium/baseline/menu-plugins-triggered-de.png +0 -0
  55. package/screenshots/Chromium/baseline/menu-plugins-triggered-en.png +0 -0
  56. package/screenshots/Firefox/baseline/app-bar-de.png +0 -0
  57. package/screenshots/Firefox/baseline/app-bar-en.png +0 -0
  58. package/screenshots/Firefox/baseline/document-name-de.png +0 -0
  59. package/screenshots/Firefox/baseline/document-name-en.png +0 -0
  60. package/screenshots/Firefox/baseline/editor-plugins-de.png +0 -0
  61. package/screenshots/Firefox/baseline/editor-plugins-en.png +0 -0
  62. package/screenshots/Firefox/baseline/editor-plugins-selected-de.png +0 -0
  63. package/screenshots/Firefox/baseline/editor-plugins-selected-en.png +0 -0
  64. package/screenshots/Firefox/baseline/editor-plugins-with-doc-de.png +0 -0
  65. package/screenshots/Firefox/baseline/editor-plugins-with-doc-en.png +0 -0
  66. package/screenshots/Firefox/baseline/log-entries-de.png +0 -0
  67. package/screenshots/Firefox/baseline/log-entries-en.png +0 -0
  68. package/screenshots/Firefox/baseline/log-entries-redone-de.png +0 -0
  69. package/screenshots/Firefox/baseline/log-entries-redone-en.png +0 -0
  70. package/screenshots/Firefox/baseline/log-entries-undone-de.png +0 -0
  71. package/screenshots/Firefox/baseline/log-entries-undone-en.png +0 -0
  72. package/screenshots/Firefox/baseline/log-screen-de.png +0 -0
  73. package/screenshots/Firefox/baseline/log-screen-en.png +0 -0
  74. package/screenshots/Firefox/baseline/menu-drawer-de.png +0 -0
  75. package/screenshots/Firefox/baseline/menu-drawer-en.png +0 -0
  76. package/screenshots/Firefox/baseline/menu-plugins-de.png +0 -0
  77. package/screenshots/Firefox/baseline/menu-plugins-en.png +0 -0
  78. package/screenshots/Firefox/baseline/menu-plugins-triggered-de.png +0 -0
  79. package/screenshots/Firefox/baseline/menu-plugins-triggered-en.png +0 -0
  80. package/screenshots/Webkit/baseline/app-bar-de.png +0 -0
  81. package/screenshots/Webkit/baseline/app-bar-en.png +0 -0
  82. package/screenshots/Webkit/baseline/document-name-de.png +0 -0
  83. package/screenshots/Webkit/baseline/document-name-en.png +0 -0
  84. package/screenshots/Webkit/baseline/editor-plugins-de.png +0 -0
  85. package/screenshots/Webkit/baseline/editor-plugins-en.png +0 -0
  86. package/screenshots/Webkit/baseline/editor-plugins-selected-de.png +0 -0
  87. package/screenshots/Webkit/baseline/editor-plugins-selected-en.png +0 -0
  88. package/screenshots/Webkit/baseline/editor-plugins-with-doc-de.png +0 -0
  89. package/screenshots/Webkit/baseline/editor-plugins-with-doc-en.png +0 -0
  90. package/screenshots/Webkit/baseline/log-entries-de.png +0 -0
  91. package/screenshots/Webkit/baseline/log-entries-en.png +0 -0
  92. package/screenshots/Webkit/baseline/log-entries-redone-de.png +0 -0
  93. package/screenshots/Webkit/baseline/log-entries-redone-en.png +0 -0
  94. package/screenshots/Webkit/baseline/log-entries-undone-de.png +0 -0
  95. package/screenshots/Webkit/baseline/log-entries-undone-en.png +0 -0
  96. package/screenshots/Webkit/baseline/log-screen-de.png +0 -0
  97. package/screenshots/Webkit/baseline/log-screen-en.png +0 -0
  98. package/screenshots/Webkit/baseline/menu-drawer-de.png +0 -0
  99. package/screenshots/Webkit/baseline/menu-drawer-en.png +0 -0
  100. package/screenshots/Webkit/baseline/menu-plugins-de.png +0 -0
  101. package/screenshots/Webkit/baseline/menu-plugins-en.png +0 -0
  102. package/screenshots/Webkit/baseline/menu-plugins-triggered-de.png +0 -0
  103. package/screenshots/Webkit/baseline/menu-plugins-triggered-en.png +0 -0
  104. package/tsconfig.json +23 -0
  105. package/utils/testing.spec.ts +210 -0
  106. package/utils/testing.ts +65 -0
  107. package/web-dev-server.config.js +24 -0
  108. package/web-test-runner.config.js +180 -0
package/package.json ADDED
@@ -0,0 +1,195 @@
1
+ {
2
+ "name": "@omicronenergy/oscd-shell",
3
+ "version": "0.0.5",
4
+ "description": "The shell component of OpenSCD, where plugins are loaded and the application is initialized.",
5
+ "displayName": "OpenSCD Shell",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/OMICRONEnergyOSS/oscd-shell.git"
9
+ },
10
+ "keywords": [
11
+ "scl",
12
+ "xml",
13
+ "iec",
14
+ "61850",
15
+ "iec61850",
16
+ "scd",
17
+ "omicronenergy"
18
+ ],
19
+ "author": "OMICRON Electronics GmbH",
20
+ "license": "Apache-2.0",
21
+ "bugs": {
22
+ "url": "https://github.com/OMICRONEnergyOSS/oscd-shell/issues"
23
+ },
24
+ "homepage": "https://github.com/OMICRONEnergyOSS/oscd-shell#readme",
25
+ "packageManager": "npm@11.3.0",
26
+ "type": "module",
27
+ "browser": "./dist/foundation.js",
28
+ "main": "./dist/foundation.js",
29
+ "exports": {
30
+ ".": "./dist/foundation.js",
31
+ "./oscd-shell.js": "./dist/oscd-shell.js"
32
+ },
33
+ "scripts": {
34
+ "start": "npm run build && concurrently -k -r \"tsc -b --watch --preserveWatchOutput\" \"wds\"",
35
+ "start:build": "npm run build && es-dev-server --root-dir dist --app-index index.html --compatibility none --open",
36
+ "start:bundle": "npm run bundle && es-dev-server --root-dir dist --app-index index.html --compatibility none --open",
37
+ "test": "npm run build && playwright install && wtr --coverage",
38
+ "test:unit": "npm run build && playwright install && wtr --coverage --group default",
39
+ "test:visual": "npm run build && playwright install && wtr --group visual",
40
+ "test:watch": "npm run build && concurrently -k -r \"tsc -b --watch --preserveWatchOutput\" \"wtr --watch --coverage\"",
41
+ "test:update": "npm run build && wtr --group visual --update-visual-baseline",
42
+ "analyze": "cem analyze --litelement",
43
+ "deploy": "npm run bundle && npm run doc && gh-pages --dist 'dist'",
44
+ "build": "rimraf dist && rimraf .tsbuildinfo && npm run extract && npm run localize && npm run compile",
45
+ "compile": "tsc -b",
46
+ "bundle": "rimraf dist && npm run localize && rollup -c rollup.config.js",
47
+ "doc": "npm run analyze -- --exclude dist && typedoc --out dist/doc foundation.ts",
48
+ "prepare": "husky",
49
+ "lint": "eslint --ext .ts,.html . --ignore-path .gitignore && prettier \"**/*.ts\" --check --ignore-path .gitignore",
50
+ "format": "eslint --ext .ts,.html . --fix --ignore-path .gitignore && prettier \"**/*.ts\" --write --ignore-path .gitignore",
51
+ "extract": "lit-localize extract",
52
+ "localize": "lit-localize build"
53
+ },
54
+ "dependencies": {
55
+ "@lit/localize": "^0.12.2",
56
+ "@open-wc/scoped-elements": "^3.0.5",
57
+ "@omicronenergy/oscd-ui": "^0.0.4",
58
+ "@webcomponents/scoped-custom-element-registry": "^0.0.10",
59
+ "lit": "^3.3.0"
60
+ },
61
+ "devDependencies": {
62
+ "@commitlint/cli": "^19.8.1",
63
+ "@commitlint/config-conventional": "^19.8.1",
64
+ "@custom-elements-manifest/analyzer": "^0.10.4",
65
+ "@lit/localize-tools": "^0.8.0",
66
+ "@open-wc/building-rollup": "3.0.2",
67
+ "@open-wc/eslint-config": "^12.0.3",
68
+ "@open-wc/testing": "^4.0.0",
69
+ "@rollup/plugin-typescript": "^12.1.2",
70
+ "@types/mocha": "^10.0.7",
71
+ "@types/node": "^22.15.18",
72
+ "@typescript-eslint/eslint-plugin": "^7.16.0",
73
+ "@typescript-eslint/parser": "^7.16.0",
74
+ "@web/dev-server": "^0.4.6",
75
+ "@web/test-runner": "^0.18.2",
76
+ "@web/test-runner-playwright": "^0.11.0",
77
+ "@web/test-runner-visual-regression": "^0.6.6",
78
+ "concurrently": "^9.1.2",
79
+ "es-dev-server": "^2.1.0",
80
+ "eslint": "^8.57.0",
81
+ "eslint-config-prettier": "^9.1.0",
82
+ "eslint-plugin-tsdoc": "^0.4.0",
83
+ "fast-check": "^4.1.1",
84
+ "gh-pages": "^6.3.0",
85
+ "husky": "^9.1.7",
86
+ "lint-staged": "^16.0.0",
87
+ "prettier": "^3.3.2",
88
+ "rollup": "^3.21.0",
89
+ "sinon": "^20.0.0",
90
+ "tsdoc": "^0.0.4",
91
+ "tslib": "^2.6.3",
92
+ "typedoc": "^0.28.4",
93
+ "typescript": "^5.5.3"
94
+ },
95
+ "overrides": {
96
+ "playwright": {
97
+ ".": "1.50.1",
98
+ "@web/test-runner-playwright": "0.11.0"
99
+ }
100
+ },
101
+ "customElements": "custom-elements.json",
102
+ "eslintConfig": {
103
+ "parser": "@typescript-eslint/parser",
104
+ "parserOptions": {
105
+ "lib": [
106
+ "es2018",
107
+ "dom"
108
+ ]
109
+ },
110
+ "extends": [
111
+ "@open-wc",
112
+ "prettier"
113
+ ],
114
+ "plugins": [
115
+ "@typescript-eslint",
116
+ "eslint-plugin-tsdoc"
117
+ ],
118
+ "rules": {
119
+ "no-unused-vars": "off",
120
+ "sort-imports": [
121
+ "error",
122
+ {
123
+ "ignoreCase": true,
124
+ "allowSeparatedGroups": true
125
+ }
126
+ ],
127
+ "class-methods-use-this": [
128
+ "error",
129
+ {
130
+ "exceptMethods": [
131
+ "locale"
132
+ ]
133
+ }
134
+ ],
135
+ "@typescript-eslint/no-explicit-any": [
136
+ "error",
137
+ {
138
+ "ignoreRestArgs": true
139
+ }
140
+ ],
141
+ "import/no-extraneous-dependencies": [
142
+ "error",
143
+ {
144
+ "devDependencies": [
145
+ "**/*.test.ts",
146
+ "**/*.spec.ts"
147
+ ]
148
+ }
149
+ ],
150
+ "curly": [
151
+ "error",
152
+ "all"
153
+ ],
154
+ "@typescript-eslint/no-unused-vars": [
155
+ "error",
156
+ {
157
+ "argsIgnorePattern": "^_",
158
+ "varsIgnorePattern": "^_",
159
+ "destructuredArrayIgnorePattern": "^_"
160
+ }
161
+ ],
162
+ "import/no-unresolved": "off",
163
+ "import/extensions": [
164
+ "error",
165
+ "always",
166
+ {
167
+ "ignorePackages": true
168
+ }
169
+ ]
170
+ },
171
+ "overrides": [
172
+ {
173
+ "files": [
174
+ "**/*.spec.ts",
175
+ "**/*.test.ts"
176
+ ],
177
+ "rules": {
178
+ "no-unused-expressions": "off"
179
+ }
180
+ }
181
+ ]
182
+ },
183
+ "prettier": {
184
+ "singleQuote": true,
185
+ "arrowParens": "avoid"
186
+ },
187
+ "husky": {
188
+ "hooks": {
189
+ "pre-commit": "lint-staged"
190
+ }
191
+ },
192
+ "lint-staged": {
193
+ "*.ts": "npm run format"
194
+ }
195
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
3
+ "release-type": "node",
4
+ "bump-minor-pre-major": true,
5
+ "bump-patch-for-minor-pre-major": true,
6
+ "packages": {
7
+ ".": {}
8
+ },
9
+ "changelog-sections": [
10
+ { "type": "feat", "section": "Features" },
11
+ { "type": "fix", "section": "Bug Fixes" },
12
+ { "type": "perf", "section": "Performance Improvements" },
13
+ { "type": "style", "section": "Styles" },
14
+ { "type": "docs", "section": "Documentation", "hidden": true },
15
+ { "type": "chore", "section": "Miscellaneous Chores", "hidden": true },
16
+ { "type": "refactor", "section": "Code Refactoring", "hidden": true },
17
+ { "type": "test", "section": "Tests", "hidden": true },
18
+ { "type": "build", "section": "Build System", "hidden": true },
19
+ { "type": "ci", "section": "Continuous Integration", "hidden": true }
20
+ ]
21
+ }
@@ -0,0 +1,51 @@
1
+ import nodeResolve from '@rollup/plugin-node-resolve';
2
+ import typescript from '@rollup/plugin-typescript';
3
+
4
+ import { readdirSync } from 'fs';
5
+
6
+ const locales = readdirSync('locales').map(locale => ({
7
+ input: `locales/${locale}`,
8
+ output: {
9
+ sourcemap: true, // Add source map to build output
10
+ format: 'es', // ES module type export
11
+ file: `dist/locales/${locale}`.slice(0, -3) + '.js', // Keep filename
12
+ },
13
+ preserveEntrySignatures: 'strict', // leaves export of the plugin entry point
14
+
15
+ plugins: [nodeResolve(), typescript()],
16
+ }));
17
+
18
+ export default [
19
+ {
20
+ input: 'oscd-shell.ts',
21
+ output: {
22
+ sourcemap: true, // Add source map to build output
23
+ format: 'es', // ES module type export
24
+ dir: 'dist', // The build output folder
25
+ // preserveModules: true, // Keep directory structure and files
26
+ },
27
+ preserveEntrySignatures: 'strict', // leaves export of the plugin entry point
28
+
29
+ plugins: [
30
+ /** Resolve bare module imports */
31
+ nodeResolve(),
32
+ typescript(),
33
+ ],
34
+ },
35
+ {
36
+ input: 'foundation.ts',
37
+ output: {
38
+ sourcemap: true, // Add source map to build output
39
+ format: 'es', // ES module type export
40
+ dir: 'dist', // The build output folder
41
+ preserveModules: true, // Keep directory structure and files
42
+ },
43
+ preserveEntrySignatures: 'strict', // leaves export of the plugin entry point
44
+
45
+ plugins: [
46
+ /** Resolve bare module imports */
47
+ nodeResolve(),
48
+ typescript(),
49
+ ],
50
+ },
51
+ ].concat(locales);
package/tsconfig.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es2018",
4
+ "module": "esnext",
5
+ "moduleResolution": "node",
6
+ "noEmitOnError": true,
7
+ "lib": ["es2018", "dom"],
8
+ "strict": true,
9
+ "esModuleInterop": false,
10
+ "allowSyntheticDefaultImports": true,
11
+ "experimentalDecorators": true,
12
+ "importHelpers": true,
13
+ "outDir": "dist",
14
+ "sourceMap": true,
15
+ "inlineSources": true,
16
+ "rootDir": "./",
17
+ "tsBuildInfoFile": ".tsbuildinfo",
18
+ "declaration": true,
19
+ "incremental": true,
20
+ "skipLibCheck": true
21
+ },
22
+ "include": ["**/*.ts"]
23
+ }