openc3 5.8.1 → 5.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. checksums.yaml +4 -4
  2. data/ext/openc3/ext/crc/crc.c +1 -1
  3. data/lib/openc3/api/cmd_api.rb +1 -1
  4. data/lib/openc3/microservices/decom_microservice.rb +10 -2
  5. data/lib/openc3/microservices/reaction_microservice.rb +152 -81
  6. data/lib/openc3/microservices/timeline_microservice.rb +1 -1
  7. data/lib/openc3/microservices/trigger_group_microservice.rb +188 -118
  8. data/lib/openc3/migrations/20230615000000_autonomic.rb +86 -0
  9. data/lib/openc3/models/activity_model.rb +2 -4
  10. data/lib/openc3/models/microservice_model.rb +6 -2
  11. data/lib/openc3/models/model.rb +1 -3
  12. data/lib/openc3/models/reaction_model.rb +124 -119
  13. data/lib/openc3/models/scope_model.rb +15 -3
  14. data/lib/openc3/models/timeline_model.rb +1 -3
  15. data/lib/openc3/models/trigger_group_model.rb +16 -50
  16. data/lib/openc3/models/trigger_model.rb +86 -123
  17. data/lib/openc3/packets/json_packet.rb +2 -3
  18. data/lib/openc3/script/commands.rb +10 -0
  19. data/lib/openc3/script/script.rb +1 -0
  20. data/lib/openc3/top_level.rb +0 -12
  21. data/lib/openc3/utilities/authorization.rb +1 -1
  22. data/lib/openc3/utilities/bucket_require.rb +5 -1
  23. data/lib/openc3/utilities/bucket_utilities.rb +4 -1
  24. data/lib/openc3/utilities/cli_generator.rb +56 -4
  25. data/lib/openc3/utilities/ruby_lex_utils.rb +4 -0
  26. data/lib/openc3/version.rb +6 -6
  27. data/templates/plugin/README.md +54 -4
  28. data/templates/plugin/Rakefile +31 -3
  29. data/templates/tool_angular/.editorconfig +16 -0
  30. data/templates/tool_angular/.gitignore +44 -0
  31. data/templates/tool_angular/.vscode/extensions.json +4 -0
  32. data/templates/tool_angular/.vscode/launch.json +20 -0
  33. data/templates/tool_angular/.vscode/tasks.json +42 -0
  34. data/templates/tool_angular/angular.json +111 -0
  35. data/templates/tool_angular/extra-webpack.config.js +8 -0
  36. data/templates/tool_angular/package.json +47 -0
  37. data/templates/tool_angular/src/app/app-routing.module.ts +15 -0
  38. data/templates/tool_angular/src/app/app.component.html +31 -0
  39. data/templates/tool_angular/src/app/app.component.scss +26 -0
  40. data/templates/tool_angular/src/app/app.component.spec.ts +29 -0
  41. data/templates/tool_angular/src/app/app.component.ts +51 -0
  42. data/templates/tool_angular/src/app/app.module.ts +30 -0
  43. data/templates/tool_angular/src/app/custom-overlay-container.ts +17 -0
  44. data/templates/tool_angular/src/app/empty-route/empty-route.component.ts +7 -0
  45. data/templates/tool_angular/src/app/openc3-api.d.ts +1 -0
  46. data/templates/tool_angular/src/assets/.gitkeep +0 -0
  47. data/templates/tool_angular/src/environments/environment.prod.ts +3 -0
  48. data/templates/tool_angular/src/environments/environment.ts +16 -0
  49. data/templates/tool_angular/src/favicon.ico +0 -0
  50. data/templates/tool_angular/src/index.html +13 -0
  51. data/templates/tool_angular/src/main.single-spa.ts +40 -0
  52. data/templates/tool_angular/src/single-spa/asset-url.ts +12 -0
  53. data/templates/tool_angular/src/single-spa/single-spa-props.ts +8 -0
  54. data/templates/tool_angular/src/styles.scss +1 -0
  55. data/templates/tool_angular/tsconfig.app.json +13 -0
  56. data/templates/tool_angular/tsconfig.json +33 -0
  57. data/templates/tool_angular/tsconfig.spec.json +14 -0
  58. data/templates/tool_angular/yarn.lock +8080 -0
  59. data/templates/tool_react/.eslintrc +7 -0
  60. data/templates/tool_react/.gitignore +72 -0
  61. data/templates/tool_react/.prettierignore +8 -0
  62. data/templates/tool_react/babel.config.json +29 -0
  63. data/templates/tool_react/jest.config.js +12 -0
  64. data/templates/tool_react/package.json +53 -0
  65. data/templates/tool_react/src/openc3-tool_name.js +24 -0
  66. data/templates/tool_react/src/root.component.js +88 -0
  67. data/templates/tool_react/src/root.component.test.js +9 -0
  68. data/templates/tool_react/webpack.config.js +27 -0
  69. data/templates/tool_react/yarn.lock +6854 -0
  70. data/templates/tool_svelte/.gitignore +72 -0
  71. data/templates/tool_svelte/.prettierignore +8 -0
  72. data/templates/tool_svelte/babel.config.js +12 -0
  73. data/templates/tool_svelte/build/smui.css +5 -0
  74. data/templates/tool_svelte/jest.config.js +9 -0
  75. data/templates/tool_svelte/package.json +46 -0
  76. data/templates/tool_svelte/rollup.config.js +72 -0
  77. data/templates/tool_svelte/src/App.svelte +42 -0
  78. data/templates/tool_svelte/src/App.test.js +9 -0
  79. data/templates/tool_svelte/src/services/api.js +92 -0
  80. data/templates/tool_svelte/src/services/axios.js +85 -0
  81. data/templates/tool_svelte/src/services/cable.js +65 -0
  82. data/templates/tool_svelte/src/services/config-parser.js +199 -0
  83. data/templates/tool_svelte/src/services/openc3-api.js +647 -0
  84. data/templates/tool_svelte/src/theme/_smui-theme.scss +25 -0
  85. data/templates/tool_svelte/src/tool_name.js +17 -0
  86. data/templates/tool_svelte/yarn.lock +5052 -0
  87. data/templates/tool_vue/.browserslistrc +16 -0
  88. data/templates/tool_vue/.env.standalone +1 -0
  89. data/templates/tool_vue/.eslintrc.js +43 -0
  90. data/templates/tool_vue/.gitignore +2 -0
  91. data/templates/tool_vue/.nycrc +3 -0
  92. data/templates/tool_vue/.prettierrc.js +5 -0
  93. data/templates/tool_vue/babel.config.json +11 -0
  94. data/templates/tool_vue/jsconfig.json +6 -0
  95. data/templates/tool_vue/package.json +52 -0
  96. data/templates/tool_vue/src/App.vue +15 -0
  97. data/templates/tool_vue/src/main.js +38 -0
  98. data/templates/tool_vue/src/router.js +29 -0
  99. data/templates/tool_vue/src/tools/tool_name/tool_name.vue +63 -0
  100. data/templates/tool_vue/vue.config.js +30 -0
  101. data/templates/tool_vue/yarn.lock +9145 -0
  102. data/templates/widget/package.json +9 -9
  103. data/templates/widget/yarn.lock +77 -73
  104. metadata +76 -2
@@ -0,0 +1,16 @@
1
+ > 0.2%
2
+ # Chome 80 is circa Feb 2020
3
+ # See https://en.wikipedia.org/wiki/Google_Chrome_version_history
4
+ chrome >= 80
5
+ # Edge 80 is circa Jan 2020
6
+ # See https://docs.microsoft.com/en-us/deployedge/microsoft-edge-relnote-archive-stable-channel
7
+ edge >= 80
8
+ # Firefox ESR is extended support release
9
+ firefox ESR
10
+ # Safari 13.1 released Mar 24, 2020
11
+ # See https://en.wikipedia.org/wiki/Safari_version_history
12
+ safari >= 13.1
13
+ not dead
14
+ not ie 11
15
+ # Opera mini doesn't have built-in support for ES6
16
+ not op_mini all
@@ -0,0 +1 @@
1
+ STANDALONE_SINGLE_SPA=true
@@ -0,0 +1,43 @@
1
+ module.exports = {
2
+ root: true,
3
+ env: {
4
+ node: true,
5
+ },
6
+ extends: [
7
+ 'plugin:vue/essential',
8
+ 'plugin:prettier/recommended',
9
+ '@vue/prettier',
10
+ ],
11
+ plugins: ['prettier'],
12
+ rules: {
13
+ 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
14
+ 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
15
+ 'prettier/prettier': [
16
+ 'warn',
17
+ {
18
+ endOfLine: 'auto',
19
+ },
20
+ ],
21
+ 'vue/multi-word-component-names': 'off',
22
+ 'vue/valid-v-slot': [
23
+ 'error',
24
+ {
25
+ allowModifiers: true,
26
+ },
27
+ ],
28
+ },
29
+ parserOptions: {
30
+ parser: '@babel/eslint-parser',
31
+ },
32
+ overrides: [
33
+ {
34
+ files: [
35
+ '**/__tests__/*.{j,t}s?(x)',
36
+ '**/tests/unit/**/*.spec.{j,t}s?(x)',
37
+ ],
38
+ env: {
39
+ jest: true,
40
+ },
41
+ },
42
+ ],
43
+ }
@@ -0,0 +1,2 @@
1
+ tools/*
2
+ node_modules
@@ -0,0 +1,3 @@
1
+ {
2
+ "extension": [".js", ".vue"]
3
+ }
@@ -0,0 +1,5 @@
1
+ module.exports = {
2
+ singleQuote: true,
3
+ semi: false,
4
+ bracketSpacing: true,
5
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "presets": ["@vue/cli-plugin-babel/preset"],
3
+ "plugins": [
4
+ [
5
+ "babel-plugin-istanbul",
6
+ {
7
+ "extension": [".js", ".vue"]
8
+ }
9
+ ]
10
+ ]
11
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "exclude": ["node_modules"],
3
+ "vueCompilerOptions": {
4
+ "target": 2.7
5
+ }
6
+ }
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "<%= tool_name %>",
3
+ "version": "5.9.0",
4
+ "private": true,
5
+ "scripts": {
6
+ "serve": "vue-cli-service serve",
7
+ "build": "vue-cli-service build --no-module",
8
+ "test:unit": "vue-cli-service test:unit",
9
+ "lint": "vue-cli-service lint",
10
+ "serve:standalone": "vue-cli-service serve --mode standalone",
11
+ "test:components": "vue-cli-service test:components"
12
+ },
13
+ "dependencies": {
14
+ "@openc3/tool-common": "5.9.0",
15
+ "axios": "0.27.2",
16
+ "date-fns": "2.30.0",
17
+ "portal-vue": "2.1.7",
18
+ "single-spa-vue": "2.5.1",
19
+ "sprintf-js": "1.1.2",
20
+ "systemjs-webpack-interop": "2.3.7",
21
+ "vue": "2.7.14",
22
+ "vue-router": "3.5.3",
23
+ "vuetify": "2.6.14",
24
+ "vuex": "3.6.2"
25
+ },
26
+ "devDependencies": {
27
+ "@babel/eslint-parser": "7.22.5",
28
+ "@vue/babel-preset-app": "5.0.8",
29
+ "@vue/cli": "5.0.8",
30
+ "@vue/cli-plugin-babel": "5.0.8",
31
+ "@vue/cli-plugin-eslint": "5.0.8",
32
+ "@vue/cli-plugin-router": "5.0.8",
33
+ "@vue/cli-plugin-vuex": "5.0.8",
34
+ "@vue/cli-service": "5.0.8",
35
+ "@vue/eslint-config-prettier": "7.1.0",
36
+ "@vue/test-utils": "1.3.0",
37
+ "babel-loader": "9.1.2",
38
+ "babel-plugin-istanbul": "6.1.1",
39
+ "eslint": "8.44.0",
40
+ "eslint-config-prettier": "8.8.0",
41
+ "eslint-plugin-prettier": "4.2.1",
42
+ "eslint-plugin-vue": "9.15.1",
43
+ "html-webpack-plugin": "^5.5.3",
44
+ "prettier": "2.8.8",
45
+ "sass": "1.63.6",
46
+ "sass-loader": "13.3.2",
47
+ "vue-cli-plugin-single-spa": "3.3.0",
48
+ "vue-cli-plugin-vuetify": "2.5.8",
49
+ "vue-template-compiler": "2.7.14",
50
+ "webpack": "5.88.1"
51
+ }
52
+ }
@@ -0,0 +1,15 @@
1
+ <!--
2
+ # Copyright 2023 OpenC3, Inc.
3
+ # All Rights Reserved.
4
+ #
5
+ # This file may also be used under the terms of a commercial license
6
+ # if purchased from OpenC3, Inc.
7
+ -->
8
+
9
+ <template>
10
+ <div>
11
+ <v-app id="innerapp">
12
+ <router-view></router-view>
13
+ </v-app>
14
+ </div>
15
+ </template>
@@ -0,0 +1,38 @@
1
+ import 'systemjs-webpack-interop/auto-public-path/2'
2
+ import Vue from 'vue'
3
+ import singleSpaVue from 'single-spa-vue'
4
+
5
+ import App from './App.vue'
6
+ import router from './router'
7
+ import store from '@openc3/tool-common/src/plugins/store'
8
+
9
+ Vue.config.productionTip = false
10
+
11
+ import '@openc3/tool-common/src/assets/stylesheets/layout/layout.scss'
12
+ import vuetify from '@openc3/tool-common/src/plugins/vuetify'
13
+ import Dialog from '@openc3/tool-common/src/plugins/dialog'
14
+ import PortalVue from 'portal-vue'
15
+ import Notify from '@openc3/tool-common/src/plugins/notify'
16
+
17
+ Vue.use(PortalVue)
18
+ Vue.use(Dialog)
19
+ Vue.use(Notify, { store })
20
+
21
+ const vueLifecycles = singleSpaVue({
22
+ Vue,
23
+ appOptions: {
24
+ router,
25
+ store,
26
+ vuetify,
27
+ render(h) {
28
+ return h(App, {
29
+ props: {},
30
+ })
31
+ },
32
+ el: '#openc3-tool',
33
+ },
34
+ })
35
+
36
+ export const bootstrap = vueLifecycles.bootstrap
37
+ export const mount = vueLifecycles.mount
38
+ export const unmount = vueLifecycles.unmount
@@ -0,0 +1,29 @@
1
+ /*
2
+ # Copyright 2023 OpenC3, Inc.
3
+ # All Rights Reserved.
4
+ #
5
+ # This file may also be used under the terms of a commercial license
6
+ # if purchased from OpenC3, Inc.
7
+ */
8
+
9
+ import Vue from 'vue'
10
+ import Router from 'vue-router'
11
+
12
+ Vue.use(Router)
13
+
14
+ export default new Router({
15
+ mode: 'history',
16
+ base: process.env.BASE_URL,
17
+ routes: [
18
+ {
19
+ path: '/',
20
+ name: '<%= tool_name %>',
21
+ component: () => import('./tools/<%= tool_name %>/<%= tool_name %>.vue'),
22
+ },
23
+ {
24
+ path: '*',
25
+ name: 'NotFound',
26
+ component: () => import('@openc3/tool-common/src/components/NotFound'),
27
+ },
28
+ ],
29
+ })
@@ -0,0 +1,63 @@
1
+ <!--
2
+ # Copyright 2023 OpenC3, Inc.
3
+ # All Rights Reserved.
4
+ #
5
+ # This file may also be used under the terms of a commercial license
6
+ # if purchased from OpenC3, Inc.
7
+ -->
8
+
9
+ <template>
10
+ <div>
11
+ <top-bar :menus="menus" :title="title" />
12
+ <v-card>
13
+ <v-card-title> Example Card </v-card-title>
14
+ <v-card-text>
15
+ <v-btn block @click="buttonPress"> Send Command </v-btn>
16
+ </v-card-text>
17
+ </v-card>
18
+ </div>
19
+ </template>
20
+
21
+ <script>
22
+ import { OpenC3Api } from '@openc3/tool-common/src/services/openc3-api'
23
+ import TopBar from '@openc3/tool-common/src/components/TopBar'
24
+
25
+ export default {
26
+ components: {
27
+ TopBar,
28
+ },
29
+ data() {
30
+ return {
31
+ title: '<%= tool_name_display %>',
32
+ api: null,
33
+ menus: [
34
+ {
35
+ label: 'File',
36
+ items: [
37
+ {
38
+ label: 'Send Command',
39
+ command: () => {
40
+ this.api
41
+ .cmd('INST', 'COLLECT', { TYPE: 'NORMAL' })
42
+ .then((response) => {
43
+ alert('Command Sent!')
44
+ })
45
+ },
46
+ },
47
+ ],
48
+ },
49
+ ],
50
+ }
51
+ },
52
+ created() {
53
+ this.api = new OpenC3Api()
54
+ },
55
+ methods: {
56
+ buttonPress() {
57
+ this.api.cmd('INST', 'COLLECT', { TYPE: 'NORMAL' }).then((response) => {
58
+ alert('Command Sent!')
59
+ })
60
+ },
61
+ },
62
+ }
63
+ </script>
@@ -0,0 +1,30 @@
1
+ const path = require("path");
2
+
3
+ module.exports = {
4
+ publicPath: '/tools/<%= tool_name %>',
5
+ outputDir: 'tools/<%= tool_name %>',
6
+ filenameHashing: false,
7
+ transpileDependencies: ['vuetify'],
8
+ devServer: {
9
+ port: 2999,
10
+ headers: {
11
+ 'Access-Control-Allow-Origin': '*',
12
+ },
13
+ client: {
14
+ webSocketURL: {
15
+ hostname: 'localhost',
16
+ pathname: '/tools/<%= tool_name %>',
17
+ port: 2999,
18
+ },
19
+ },
20
+ },
21
+ configureWebpack: {
22
+ output: {
23
+ libraryTarget: 'system'
24
+ },
25
+ },
26
+ chainWebpack: (config) => {
27
+ config.module.rule('js').use('babel-loader')
28
+ config.externals(['vue', 'vuetify', 'vuex', 'vue-router'])
29
+ },
30
+ }