openc3 6.2.0 → 6.3.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.
- checksums.yaml +4 -4
- data/Gemfile +2 -3
- data/bin/openc3cli +12 -3
- data/data/config/widgets.yaml +3 -0
- data/lib/openc3/api/cmd_api.rb +5 -8
- data/lib/openc3/api/interface_api.rb +8 -4
- data/lib/openc3/api/tlm_api.rb +23 -8
- data/lib/openc3/io/json_api_object.rb +1 -1
- data/lib/openc3/io/json_drb_object.rb +1 -1
- data/lib/openc3/microservices/interface_decom_common.rb +4 -1
- data/lib/openc3/microservices/interface_microservice.rb +68 -5
- data/lib/openc3/microservices/microservice.rb +1 -0
- data/lib/openc3/microservices/multi_microservice.rb +1 -1
- data/lib/openc3/migrations/20250402000000_periodic_only_default.rb +24 -0
- data/lib/openc3/models/offline_access_model.rb +7 -6
- data/lib/openc3/models/scope_model.rb +5 -2
- data/lib/openc3/models/target_model.rb +150 -15
- data/lib/openc3/packets/commands.rb +10 -3
- data/lib/openc3/script/commands.rb +1 -1
- data/lib/openc3/script/script.rb +14 -0
- data/lib/openc3/utilities/authentication.rb +5 -5
- data/lib/openc3/utilities/local_mode.rb +5 -2
- data/lib/openc3/utilities/ruby_lex_utils.rb +114 -279
- data/lib/openc3/utilities/target_file.rb +6 -2
- data/lib/openc3/version.rb +5 -5
- data/templates/tool_angular/package.json +2 -2
- data/templates/tool_react/package.json +1 -1
- data/templates/tool_svelte/package.json +1 -1
- data/templates/tool_vue/package.json +3 -3
- data/templates/widget/package.json +2 -2
- metadata +20 -23
- data/ext/mkrf_conf.rb +0 -52
@@ -14,202 +14,26 @@
|
|
14
14
|
# GNU Affero General Public License for more details.
|
15
15
|
|
16
16
|
# Modified by OpenC3, Inc.
|
17
|
-
# All changes Copyright
|
17
|
+
# All changes Copyright 2025, OpenC3, Inc.
|
18
18
|
# All Rights Reserved
|
19
19
|
#
|
20
20
|
# This file may also be used under the terms of a commercial license
|
21
21
|
# if purchased from OpenC3, Inc.
|
22
22
|
|
23
|
-
require 'irb'
|
24
23
|
require 'irb/ruby-lex'
|
25
|
-
require '
|
26
|
-
|
27
|
-
# Clear the $VERBOSE global since we're overriding methods
|
28
|
-
old_verbose = $VERBOSE; $VERBOSE = nil
|
29
|
-
class RubyLex
|
30
|
-
attr_accessor :indent
|
31
|
-
attr_accessor :line_no
|
32
|
-
attr_accessor :exp_line_no
|
33
|
-
attr_accessor :tokens
|
34
|
-
attr_accessor :code_block_open
|
35
|
-
attr_accessor :ltype
|
36
|
-
attr_accessor :line
|
37
|
-
attr_accessor :continue
|
38
|
-
|
39
|
-
def reinitialize
|
40
|
-
@line_no = 1
|
41
|
-
@prompt = nil
|
42
|
-
initialize_input()
|
43
|
-
end
|
44
|
-
end
|
45
|
-
$VERBOSE = old_verbose
|
24
|
+
require 'prism'
|
46
25
|
|
47
26
|
class RubyLexUtils
|
48
|
-
|
49
|
-
|
50
|
-
# Regular expression to detect lines containing only 'else'
|
51
|
-
LONELY_ELSE_REGEX = /^\s*else\s*$/
|
52
|
-
|
53
|
-
KEY_KEYWORDS = [
|
54
|
-
'class'.freeze,
|
55
|
-
'module'.freeze,
|
56
|
-
'def'.freeze,
|
57
|
-
'undef'.freeze,
|
58
|
-
'begin'.freeze,
|
59
|
-
'rescue'.freeze,
|
60
|
-
'ensure'.freeze,
|
61
|
-
'end'.freeze,
|
62
|
-
'if'.freeze,
|
63
|
-
'unless'.freeze,
|
64
|
-
'then'.freeze,
|
65
|
-
'elsif'.freeze,
|
66
|
-
'else'.freeze,
|
67
|
-
'case'.freeze,
|
68
|
-
'when'.freeze,
|
69
|
-
'while'.freeze,
|
70
|
-
'until'.freeze,
|
71
|
-
'for'.freeze,
|
72
|
-
'break'.freeze,
|
73
|
-
'next'.freeze,
|
74
|
-
'redo'.freeze,
|
75
|
-
'retry'.freeze,
|
76
|
-
'in'.freeze,
|
77
|
-
'do'.freeze,
|
78
|
-
'return'.freeze,
|
79
|
-
'alias'.freeze
|
80
|
-
]
|
81
|
-
|
82
|
-
# Create a new RubyLex and StringIO to hold the text to operate on
|
83
|
-
def initialize
|
84
|
-
# Taken from https://github.com/ruby/ruby/blob/master/test/irb/test_ruby_lex.rb#L827
|
85
|
-
IRB.init_config(nil)
|
86
|
-
IRB.conf[:VERBOSE] = false
|
87
|
-
# IRB.setup doesn't work because the command line options are passed
|
88
|
-
# and it doesn't recognize --warnings when we run rspec (see spec.rake)
|
89
|
-
# IRB.setup(__FILE__)
|
90
|
-
workspace = IRB::WorkSpace.new(binding)
|
91
|
-
@context = IRB::Context.new(nil, workspace)
|
92
|
-
|
93
|
-
@lex = RubyLex.new
|
94
|
-
@lex_io = StringIO.new('')
|
95
|
-
end
|
96
|
-
|
97
|
-
def ripper_lex_without_warning(code)
|
98
|
-
RubyLex.ripper_lex_without_warning(code)
|
99
|
-
end
|
100
|
-
|
101
|
-
# @param text [String]
|
102
|
-
# @return [Boolean] Whether the text contains the 'begin' keyword
|
103
|
-
def contains_begin?(text)
|
104
|
-
@lex.reinitialize
|
105
|
-
@lex_io.string = text
|
106
|
-
@lex.set_input(@lex_io, context: @context)
|
107
|
-
tokens = ripper_lex_without_warning(text)
|
108
|
-
tokens.each do |token|
|
109
|
-
if token[1] == :on_kw and token[2] == 'begin'
|
110
|
-
return true
|
111
|
-
end
|
112
|
-
end
|
113
|
-
return false
|
114
|
-
end
|
115
|
-
|
116
|
-
# @param text [String]
|
117
|
-
# @return [Boolean] Whether the text contains the 'end' keyword
|
118
|
-
def contains_end?(text)
|
119
|
-
@lex.reinitialize
|
120
|
-
@lex_io.string = text
|
121
|
-
@lex.set_input(@lex_io, context: @context)
|
122
|
-
tokens = ripper_lex_without_warning(text)
|
123
|
-
tokens.each do |token|
|
124
|
-
if token[1] == :on_kw and token[2] == 'end'
|
125
|
-
return true
|
126
|
-
end
|
127
|
-
end
|
128
|
-
return false
|
129
|
-
end
|
130
|
-
|
131
|
-
# @param text [String]
|
132
|
-
# @return [Boolean] Whether the text contains a Ruby keyword
|
133
|
-
def contains_keyword?(text)
|
134
|
-
@lex.reinitialize
|
135
|
-
@lex_io.string = text
|
136
|
-
@lex.set_input(@lex_io, context: @context)
|
137
|
-
tokens = ripper_lex_without_warning(text)
|
138
|
-
tokens.each do |token|
|
139
|
-
if token[1] == :on_kw
|
140
|
-
if KEY_KEYWORDS.include?(token[2])
|
141
|
-
return true
|
142
|
-
end
|
143
|
-
elsif token[1] == :on_lbrace and !token[3].allbits?(Ripper::EXPR_BEG | Ripper::EXPR_LABEL)
|
144
|
-
return true
|
145
|
-
end
|
146
|
-
end
|
147
|
-
return false
|
148
|
-
end
|
149
|
-
|
150
|
-
# @param text [String]
|
151
|
-
# @return [Boolean] Whether the text contains a keyword which starts a block.
|
152
|
-
# i.e. 'do', '{', or 'begin'
|
153
|
-
def contains_block_beginning?(text)
|
154
|
-
@lex.reinitialize
|
155
|
-
@lex_io.string = text
|
156
|
-
@lex.set_input(@lex_io, context: @context)
|
157
|
-
tokens = ripper_lex_without_warning(text)
|
158
|
-
tokens.each do |token|
|
159
|
-
if token[1] == :on_kw
|
160
|
-
if token[2] == 'begin' || token[2] == 'do'
|
161
|
-
return true
|
162
|
-
end
|
163
|
-
elsif token[1] == :on_lbrace
|
164
|
-
return true
|
165
|
-
end
|
166
|
-
end
|
167
|
-
return false
|
168
|
-
end
|
27
|
+
OPENING_DELIMITER_TYPES = %i(PARENTHESIS_LEFT BRACKET_LEFT BRACE_LEFT BRACKET_LEFT_ARRAY)
|
28
|
+
CLOSING_DELIMITER_TYPES = %i(PARENTHESIS_RIGHT BRACKET_RIGHT BRACE_RIGHT BRACKET_RIGHT_ARRAY)
|
169
29
|
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
token = tokens[index]
|
178
|
-
return true if token[1] == :on_kw and token[2] == "do"
|
179
|
-
index -= 1
|
180
|
-
end
|
181
|
-
return false
|
182
|
-
end
|
183
|
-
|
184
|
-
# @param text [String]
|
185
|
-
# @param progress_dialog [OpenC3::ProgressDialog] If this is set, the overall
|
186
|
-
# progress will be set as the processing progresses
|
187
|
-
# @return [String] The text with all comments removed
|
188
|
-
def remove_comments(text, progress_dialog = nil)
|
189
|
-
@lex.reinitialize
|
190
|
-
@lex_io.string = text
|
191
|
-
@lex.set_input(@lex_io, context: @context)
|
192
|
-
comments_removed = ""
|
193
|
-
token_count = 0
|
194
|
-
progress = 0.0
|
195
|
-
tokens = ripper_lex_without_warning(text)
|
196
|
-
tokens.each do |token|
|
197
|
-
token_count += 1
|
198
|
-
if token[1] != :on_comment
|
199
|
-
comments_removed << token[2]
|
200
|
-
else
|
201
|
-
newline_count = token[2].count("\n")
|
202
|
-
comments_removed << ("\n" * newline_count)
|
203
|
-
end
|
204
|
-
if progress_dialog and token_count % 10000 == 0
|
205
|
-
progress += 0.01
|
206
|
-
progress = 0.0 if progress >= 0.99
|
207
|
-
progress_dialog.set_overall_progress(progress)
|
208
|
-
end
|
209
|
-
end
|
210
|
-
|
211
|
-
return comments_removed
|
212
|
-
end
|
30
|
+
UNINSTRUMENTABLE_KEYWORDS = %i(
|
31
|
+
KEYWORD_CLASS KEYWORD_MODULE KEYWORD_DEF KEYWORD_UNDEF KEYWORD_BEGIN KEYWORD_RESCUE
|
32
|
+
KEYWORD_ENSURE KEYWORD_END KEYWORD_IF KEYWORD_UNLESS
|
33
|
+
KEYWORD_THEN KEYWORD_ELSIF KEYWORD_ELSE KEYWORD_CASE KEYWORD_WHEN
|
34
|
+
KEYWORD_WHILE KEYWORD_UNTIL KEYWORD_FOR KEYWORD_BREAK KEYWORD_NEXT
|
35
|
+
KEYWORD_REDO KEYWORD_RETRY KEYWORD_IN KEYWORD_DO KEYWORD_RETURN KEYWORD_ALIAS
|
36
|
+
)
|
213
37
|
|
214
38
|
# Yields each lexed segment and if the segment is instrumentable
|
215
39
|
#
|
@@ -219,113 +43,124 @@ class RubyLexUtils
|
|
219
43
|
# @yieldparam inside_begin [Integer] The level of indentation
|
220
44
|
# @yieldparam line_no [Integer] The current line number
|
221
45
|
def each_lexed_segment(text)
|
222
|
-
inside_begin = false
|
223
|
-
lex = RubyLex.new
|
224
|
-
lex_io = StringIO.new(text)
|
225
|
-
lex.set_input(lex_io, context: @context)
|
226
|
-
lex.line = ''
|
227
46
|
line = ''
|
228
|
-
indent = 0
|
229
|
-
continue_indent = nil
|
230
47
|
begin_indent = nil
|
231
|
-
|
48
|
+
inside_begin = false
|
49
|
+
string_begin = false
|
50
|
+
orig_line_no = nil
|
51
|
+
line_no = nil
|
52
|
+
rescue_line_no = nil
|
53
|
+
waiting_on_newline = false
|
54
|
+
waiting_on_close = 0
|
55
|
+
prev_token = nil
|
56
|
+
instrumentable = true
|
57
|
+
tokens = Prism.lex(text).value
|
58
|
+
# See: https://github.com/ruby/prism/blob/main/lib/prism/parse_result.rb
|
59
|
+
# for what is returned by Prism.lex
|
60
|
+
# We process the tokens in pairs to recreate spacing and handle string assignments
|
61
|
+
tokens.each_cons(2) do |(token, lex_state), (next_token, _next_lex_state)|
|
62
|
+
# pp token # Uncomment for debugging
|
63
|
+
# Ignore embedded documentation must be at column 0 and looks like:
|
64
|
+
=begin
|
65
|
+
This is a comment
|
66
|
+
And so is this
|
67
|
+
=end
|
68
|
+
if token.type == :EMBDOC_BEGIN or token.type == :EMBDOC_LINE or token.type == :EMBDOC_END
|
69
|
+
prev_token = token
|
70
|
+
next
|
71
|
+
end
|
232
72
|
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
73
|
+
# Recreate the spaces at the beginning of a line
|
74
|
+
# This has to come before we add the token.value to the line
|
75
|
+
if prev_token.nil?
|
76
|
+
line += ' ' * token.location.start_column
|
77
|
+
# If the previous token is STRING_CONTENT it is probably string interpolation so ignore it
|
78
|
+
# Otherwise if the previous token has changed lines we're on a newline so add space
|
79
|
+
elsif prev_token.type != :STRING_CONTENT and prev_token.location.end_line - prev_token.location.start_line > 0
|
80
|
+
line += ' ' * token.location.start_column
|
81
|
+
end
|
82
|
+
prev_token = token
|
237
83
|
|
238
|
-
|
239
|
-
|
84
|
+
# Comments require tacking on a newline but are otherwise ignored
|
85
|
+
if token.type == :COMMENT
|
86
|
+
line += "\n"
|
87
|
+
waiting_on_newline = false
|
240
88
|
else
|
241
|
-
|
242
|
-
lex.indent = 0
|
89
|
+
line += token.value
|
243
90
|
end
|
244
91
|
|
245
|
-
if
|
246
|
-
|
247
|
-
inside_begin = false
|
92
|
+
if UNINSTRUMENTABLE_KEYWORDS.include?(token.type)
|
93
|
+
instrumentable = false
|
248
94
|
end
|
249
95
|
|
250
|
-
#
|
251
|
-
#
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
# These lines put multiple lines together that are really one line
|
257
|
-
if lex.continue or lex.ltype
|
258
|
-
if not continue_block?(lexed)
|
259
|
-
# Set the indent we should stop at
|
260
|
-
unless continue_indent
|
261
|
-
if (indent - previous_line_indent) > 1
|
262
|
-
continue_indent = indent - 1
|
263
|
-
else
|
264
|
-
continue_indent = previous_line_indent
|
265
|
-
end
|
266
|
-
end
|
267
|
-
next
|
268
|
-
end
|
269
|
-
elsif continue_indent
|
270
|
-
if indent > continue_indent
|
271
|
-
# Still have more content
|
272
|
-
next
|
273
|
-
else
|
274
|
-
# Ready to yield this combined line
|
275
|
-
yield line, !contains_keyword?(line), inside_begin, lex.exp_line_no
|
276
|
-
line = ''
|
277
|
-
lex.exp_line_no = lex.line_no
|
278
|
-
# puts "clear line 1"
|
279
|
-
lex.line = ''
|
280
|
-
previous_line_indent = indent
|
281
|
-
continue_indent = nil
|
282
|
-
next
|
96
|
+
# We're processing tokens in pairs so we need to check if we're at the end
|
97
|
+
# of the file and process the last line
|
98
|
+
if next_token.type == :EOF
|
99
|
+
if !line.empty?
|
100
|
+
yield line, instrumentable, inside_begin, orig_line_no
|
283
101
|
end
|
102
|
+
break
|
284
103
|
end
|
285
|
-
previous_line_indent = indent
|
286
|
-
continue_indent = nil
|
287
104
|
|
288
|
-
#
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
105
|
+
# Recreate spaces between tokens rather than trying to figure out
|
106
|
+
# which tokens require spacing before and after
|
107
|
+
if token.location.start_line == next_token.location.start_line
|
108
|
+
spaces = next_token.location.start_column - token.location.end_column
|
109
|
+
line += ' ' * spaces
|
110
|
+
end
|
111
|
+
line_no ||= token.location.start_line
|
112
|
+
# Keep track of the original line number because the line number can change
|
113
|
+
# when we're putting together multiline structures like strings, arrays, hashes, etc.
|
114
|
+
orig_line_no ||= line_no
|
115
|
+
|
116
|
+
case token.type
|
117
|
+
when :BRACE_LEFT
|
118
|
+
# BRACE is a special case because it can be used for hashes and blocks
|
119
|
+
if lex_state != (Ripper::EXPR_BEG | Ripper::EXPR_LABEL)
|
120
|
+
instrumentable = false
|
121
|
+
end
|
122
|
+
waiting_on_close += 1
|
123
|
+
when :STRING_BEGIN
|
124
|
+
# Mark when a string begins to allow for processing string interpolation tokens
|
125
|
+
string_begin = true
|
126
|
+
line_no = token.location.start_line
|
127
|
+
when :STRING_END
|
128
|
+
string_begin = false
|
129
|
+
next
|
130
|
+
when :KEYWORD_BEGIN
|
131
|
+
inside_begin = true
|
132
|
+
begin_indent = token.location.start_column unless begin_indent # Don't restart for nested begins
|
133
|
+
when :KEYWORD_RESCUE
|
134
|
+
rescue_line_no = token.location.start_line
|
135
|
+
when :KEYWORD_END
|
136
|
+
# Assume the begin and end are aligned
|
137
|
+
# Otherwise we have to count any keywords that can close with END
|
138
|
+
if token.location.start_line == rescue_line_no || token.location.start_column == begin_indent
|
139
|
+
inside_begin = false
|
296
140
|
end
|
141
|
+
when *OPENING_DELIMITER_TYPES
|
142
|
+
waiting_on_close += 1
|
143
|
+
when *CLOSING_DELIMITER_TYPES
|
144
|
+
waiting_on_close -= 1
|
145
|
+
waiting_on_newline = true
|
146
|
+
when :NEWLINE, :IGNORED_NEWLINE
|
147
|
+
waiting_on_newline = false
|
148
|
+
# If the next token is a STRING_BEGIN then hold off processing the newline
|
149
|
+
# because it's going to be a string assignment
|
150
|
+
next if next_token.type == :STRING_BEGIN
|
297
151
|
end
|
298
152
|
|
299
|
-
#
|
153
|
+
# Don't process the line yet if we're waiting for additional tokens
|
154
|
+
next if string_begin or waiting_on_newline or waiting_on_close > 0
|
300
155
|
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
one_line = line[0..index]
|
305
|
-
if BLANK_LINE_REGEX.match?(one_line)
|
306
|
-
yield one_line, true, inside_begin, lex.exp_line_no
|
307
|
-
lex.exp_line_no += 1
|
308
|
-
line = line[(index + 1)..-1]
|
309
|
-
elsif LONELY_ELSE_REGEX.match?(one_line)
|
310
|
-
yield one_line, false, inside_begin, lex.exp_line_no
|
311
|
-
lex.exp_line_no += 1
|
312
|
-
line = line[(index + 1)..-1]
|
313
|
-
else
|
314
|
-
break
|
315
|
-
end
|
316
|
-
end
|
317
|
-
|
318
|
-
if contains_keyword?(line)
|
319
|
-
yield line, false, inside_begin, lex.exp_line_no
|
320
|
-
elsif !line.empty?
|
321
|
-
yield line, true, inside_begin, lex.exp_line_no
|
322
|
-
end
|
156
|
+
# This is where we process the line and yield it
|
157
|
+
if line_no != token.location.start_line or line_no != token.location.end_line
|
158
|
+
yield line, instrumentable, inside_begin, orig_line_no
|
323
159
|
line = ''
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
end # def each_lexed_segment
|
160
|
+
instrumentable = true
|
161
|
+
orig_line_no = nil
|
162
|
+
line_no = nil
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
331
166
|
end
|
@@ -26,13 +26,17 @@ module OpenC3
|
|
26
26
|
# Matches ScriptRunner.vue const TEMP_FOLDER
|
27
27
|
TEMP_FOLDER = '__TEMP__'
|
28
28
|
|
29
|
-
def self.all(scope, path_matchers, target: nil
|
29
|
+
def self.all(scope, path_matchers, target: nil)
|
30
30
|
target = target.upcase if target
|
31
31
|
|
32
|
+
include_temp = true
|
32
33
|
bucket = Bucket.getClient()
|
33
34
|
if target
|
34
35
|
prefix = "#{scope}/targets/#{target}/"
|
35
36
|
modified_prefix = "#{scope}/targets_modified/#{target}/"
|
37
|
+
if target != TEMP_FOLDER
|
38
|
+
include_temp = false
|
39
|
+
end
|
36
40
|
else
|
37
41
|
prefix = "#{scope}/targets/"
|
38
42
|
modified_prefix = "#{scope}/targets_modified/"
|
@@ -42,7 +46,7 @@ module OpenC3
|
|
42
46
|
|
43
47
|
# Add in local targets_modified if present
|
44
48
|
if ENV['OPENC3_LOCAL_MODE']
|
45
|
-
local_modified = OpenC3::LocalMode.local_target_files(scope: scope, path_matchers: path_matchers, include_temp: include_temp)
|
49
|
+
local_modified = OpenC3::LocalMode.local_target_files(scope: scope, target: target, path_matchers: path_matchers, include_temp: include_temp)
|
46
50
|
local_modified.each do |filename|
|
47
51
|
if include_temp and filename.include?(TEMP_FOLDER)
|
48
52
|
temp << filename
|
data/lib/openc3/version.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# encoding: ascii-8bit
|
2
2
|
|
3
|
-
OPENC3_VERSION = '6.
|
3
|
+
OPENC3_VERSION = '6.3.0'
|
4
4
|
module OpenC3
|
5
5
|
module Version
|
6
6
|
MAJOR = '6'
|
7
|
-
MINOR = '
|
7
|
+
MINOR = '3'
|
8
8
|
PATCH = '0'
|
9
9
|
OTHER = ''
|
10
|
-
BUILD = '
|
10
|
+
BUILD = '52f29bf512b463d226b93d18f31aa71936d472b2'
|
11
11
|
end
|
12
|
-
VERSION = '6.
|
13
|
-
GEM_VERSION = '6.
|
12
|
+
VERSION = '6.3.0'
|
13
|
+
GEM_VERSION = '6.3.0'
|
14
14
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "<%= tool_name %>",
|
3
|
-
"version": "6.
|
3
|
+
"version": "6.3.0",
|
4
4
|
"scripts": {
|
5
5
|
"ng": "ng",
|
6
6
|
"start": "ng serve",
|
@@ -23,7 +23,7 @@
|
|
23
23
|
"@angular/platform-browser-dynamic": "^18.2.6",
|
24
24
|
"@angular/router": "^18.2.6",
|
25
25
|
"@astrouxds/astro-web-components": "^7.24.0",
|
26
|
-
"@openc3/js-common": "6.
|
26
|
+
"@openc3/js-common": "6.3.0",
|
27
27
|
"rxjs": "~7.8.0",
|
28
28
|
"single-spa": "^5.9.5",
|
29
29
|
"single-spa-angular": "^9.2.0",
|
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "<%= tool_name %>",
|
3
|
-
"version": "6.
|
3
|
+
"version": "6.3.0",
|
4
4
|
"private": true,
|
5
5
|
"type": "module",
|
6
6
|
"scripts": {
|
@@ -11,8 +11,8 @@
|
|
11
11
|
},
|
12
12
|
"dependencies": {
|
13
13
|
"@astrouxds/astro-web-components": "^7.24.0",
|
14
|
-
"@openc3/js-common": "6.
|
15
|
-
"@openc3/vue-common": "6.
|
14
|
+
"@openc3/js-common": "6.3.0",
|
15
|
+
"@openc3/vue-common": "6.3.0",
|
16
16
|
"axios": "^1.7.7",
|
17
17
|
"date-fns": "^4.1.0",
|
18
18
|
"lodash": "^4.17.21",
|
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "<%= widget_name %>",
|
3
|
-
"version": "6.
|
3
|
+
"version": "6.3.0",
|
4
4
|
"private": true,
|
5
5
|
"type": "module",
|
6
6
|
"scripts": {
|
@@ -8,7 +8,7 @@
|
|
8
8
|
},
|
9
9
|
"dependencies": {
|
10
10
|
"@astrouxds/astro-web-components": "^7.24.0",
|
11
|
-
"@openc3/vue-common": "6.
|
11
|
+
"@openc3/vue-common": "6.3.0",
|
12
12
|
"vuetify": "^3.7.1"
|
13
13
|
},
|
14
14
|
"devDependencies": {
|
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openc3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Melton
|
8
8
|
- Jason Thomas
|
9
|
-
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
@@ -39,20 +38,6 @@ dependencies:
|
|
39
38
|
- - "~>"
|
40
39
|
- !ruby/object:Gem::Version
|
41
40
|
version: '0.22'
|
42
|
-
- !ruby/object:Gem::Dependency
|
43
|
-
name: irb
|
44
|
-
requirement: !ruby/object:Gem::Requirement
|
45
|
-
requirements:
|
46
|
-
- - '='
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
version: 1.6.2
|
49
|
-
type: :runtime
|
50
|
-
prerelease: false
|
51
|
-
version_requirements: !ruby/object:Gem::Requirement
|
52
|
-
requirements:
|
53
|
-
- - '='
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
version: 1.6.2
|
56
41
|
- !ruby/object:Gem::Dependency
|
57
42
|
name: json
|
58
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,6 +80,20 @@ dependencies:
|
|
95
80
|
- - "~>"
|
96
81
|
- !ruby/object:Gem::Version
|
97
82
|
version: '1.14'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: prism
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 1.3.0
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 1.3.0
|
98
97
|
- !ruby/object:Gem::Dependency
|
99
98
|
name: psych
|
100
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -777,16 +776,16 @@ email:
|
|
777
776
|
- ryan@openc3.com
|
778
777
|
- jason@openc3.com
|
779
778
|
executables:
|
779
|
+
- cstol_converter
|
780
780
|
- openc3cli
|
781
781
|
- rubysloc
|
782
|
-
- cstol_converter
|
783
782
|
extensions:
|
784
783
|
- ext/openc3/ext/array/extconf.rb
|
785
784
|
- ext/openc3/ext/buffered_file/extconf.rb
|
786
785
|
- ext/openc3/ext/burst_protocol/extconf.rb
|
787
786
|
- ext/openc3/ext/config_parser/extconf.rb
|
788
|
-
- ext/openc3/ext/openc3_io/extconf.rb
|
789
787
|
- ext/openc3/ext/crc/extconf.rb
|
788
|
+
- ext/openc3/ext/openc3_io/extconf.rb
|
790
789
|
- ext/openc3/ext/packet/extconf.rb
|
791
790
|
- ext/openc3/ext/platform/extconf.rb
|
792
791
|
- ext/openc3/ext/polynomial_conversion/extconf.rb
|
@@ -794,7 +793,6 @@ extensions:
|
|
794
793
|
- ext/openc3/ext/string/extconf.rb
|
795
794
|
- ext/openc3/ext/tabbed_plots_config/extconf.rb
|
796
795
|
- ext/openc3/ext/telemetry/extconf.rb
|
797
|
-
- ext/mkrf_conf.rb
|
798
796
|
extra_rdoc_files: []
|
799
797
|
files:
|
800
798
|
- Gemfile
|
@@ -837,7 +835,6 @@ files:
|
|
837
835
|
- data/config/tool.yaml
|
838
836
|
- data/config/unknown.yaml
|
839
837
|
- data/config/widgets.yaml
|
840
|
-
- ext/mkrf_conf.rb
|
841
838
|
- ext/openc3/ext/array/array.c
|
842
839
|
- ext/openc3/ext/array/extconf.rb
|
843
840
|
- ext/openc3/ext/buffered_file/buffered_file.c
|
@@ -1009,6 +1006,7 @@ files:
|
|
1009
1006
|
- lib/openc3/migrations/20241208080000_no_critical_cmd.rb
|
1010
1007
|
- lib/openc3/migrations/20241208080001_no_trigger_group.rb
|
1011
1008
|
- lib/openc3/migrations/20250108060000_news_feed.rb
|
1009
|
+
- lib/openc3/migrations/20250402000000_periodic_only_default.rb
|
1012
1010
|
- lib/openc3/models/activity_model.rb
|
1013
1011
|
- lib/openc3/models/auth_model.rb
|
1014
1012
|
- lib/openc3/models/cvt_model.rb
|
@@ -1286,8 +1284,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1286
1284
|
- !ruby/object:Gem::Version
|
1287
1285
|
version: '0'
|
1288
1286
|
requirements: []
|
1289
|
-
rubygems_version: 3.
|
1290
|
-
signing_key:
|
1287
|
+
rubygems_version: 3.6.7
|
1291
1288
|
specification_version: 4
|
1292
1289
|
summary: OpenC3
|
1293
1290
|
test_files: []
|