turbo_reflex 0.0.18 → 0.0.19
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.lock +1 -1
- data/README.md +1 -1
- data/lib/turbo_reflex/provisional_state.rb +26 -0
- data/lib/turbo_reflex/state.rb +8 -7
- data/lib/turbo_reflex/state_manager.rb +13 -0
- data/lib/turbo_reflex/version.rb +1 -1
- data/package.json +1 -1
- data/tags +12 -3
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b78482199f5511c05dc38df6ca1f83c27d84c716556ec8b2e1483a421036e174
|
4
|
+
data.tar.gz: 455d99d13aa858807fd032c85eb9ac3978298cf9cef5a5304dc0ca1005fbbc3a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 670cda02201904ca047a872668f77f3cb2d37cda11e9b8a6c7fa3e2445cdd1fd8f73f526fdbdb59042659bb2786d0e7085b9e93d7aa947983fb2db1994131019
|
7
|
+
data.tar.gz: b15e05526613bc79feb38f5d7a8c3f7a252db44a673e392d126c02cb6912d9e1e6a23f2baec36c6dbc75c801cef53307dfb31d92c9e13f1de6aad0c9382a2305
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
</h1>
|
9
9
|
<p align="center">
|
10
10
|
<a href="http://blog.codinghorror.com/the-best-code-is-no-code-at-all/">
|
11
|
-
<img alt="Lines of Code" src="https://img.shields.io/badge/loc-
|
11
|
+
<img alt="Lines of Code" src="https://img.shields.io/badge/loc-1176-47d299.svg" />
|
12
12
|
</a>
|
13
13
|
<a href="https://codeclimate.com/github/hopsoft/turbo_reflex/maintainability">
|
14
14
|
<img src="https://api.codeclimate.com/v1/badges/fe1162a742fe83a4fdfd/maintainability" />
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "state"
|
4
|
+
|
5
|
+
class TurboReflex::ProvisionalState
|
6
|
+
def initialize(state_manager)
|
7
|
+
@state_manager = state_manager
|
8
|
+
@keys = Set.new
|
9
|
+
end
|
10
|
+
|
11
|
+
attr_reader :keys
|
12
|
+
|
13
|
+
def [](*keys, default: nil)
|
14
|
+
state_manager[*keys, default: default]
|
15
|
+
end
|
16
|
+
|
17
|
+
def []=(*keys, value)
|
18
|
+
key = TurboReflex::State.key_for(*keys)
|
19
|
+
value.nil? ? self.keys.delete(key) : self.keys.add(key)
|
20
|
+
state_manager[key] = value
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
attr_reader :state_manager
|
26
|
+
end
|
data/lib/turbo_reflex/state.rb
CHANGED
@@ -27,17 +27,22 @@ class TurboReflex::State
|
|
27
27
|
rescue => error
|
28
28
|
raise TurboReflex::StateDeserializationError, "Unable to decode, inflate, and load Base64 string! \"#{string}\" #{error.message}"
|
29
29
|
end
|
30
|
+
|
31
|
+
def key_for(*keys)
|
32
|
+
keys.map { |key| key.try(:cache_key) || key.to_s }.join("/")
|
33
|
+
end
|
30
34
|
end
|
31
35
|
|
32
36
|
def initialize(ordinal_payload = nil)
|
33
37
|
@internal_keys = []
|
34
38
|
@internal_data = {}.with_indifferent_access
|
35
39
|
|
36
|
-
|
40
|
+
deserialize(ordinal_payload).each do |(key, value)|
|
37
41
|
write key, value
|
38
42
|
end
|
39
43
|
end
|
40
44
|
|
45
|
+
delegate :deserialize, :key_for, :serialize, :serialize_base64, to: "self.class"
|
41
46
|
delegate :size, to: :internal_data
|
42
47
|
delegate :include?, :has_key?, :key?, :member?, to: :internal_data
|
43
48
|
|
@@ -60,11 +65,11 @@ class TurboReflex::State
|
|
60
65
|
end
|
61
66
|
|
62
67
|
def payload
|
63
|
-
|
68
|
+
serialize_base64 internal_data
|
64
69
|
end
|
65
70
|
|
66
71
|
def ordinal_payload
|
67
|
-
|
72
|
+
serialize internal_list
|
68
73
|
end
|
69
74
|
|
70
75
|
def shrink!
|
@@ -100,10 +105,6 @@ class TurboReflex::State
|
|
100
105
|
internal_keys.map { |key| [key, internal_data[key]] }
|
101
106
|
end
|
102
107
|
|
103
|
-
def key_for(*keys)
|
104
|
-
keys.map { |key| key.try(:cache_key) || key.to_s }.join("/")
|
105
|
-
end
|
106
|
-
|
107
108
|
def shrink(obj)
|
108
109
|
case obj
|
109
110
|
when Array
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative "state"
|
4
|
+
require_relative "provisional_state"
|
4
5
|
|
5
6
|
# Class used to hold ephemeral state related to the rendered UI.
|
6
7
|
#
|
@@ -109,8 +110,15 @@ class TurboReflex::StateManager
|
|
109
110
|
state.write(*keys, value)
|
110
111
|
end
|
111
112
|
|
113
|
+
def provisional_state
|
114
|
+
@provisional_state ||= TurboReflex::ProvisionalState.new(self)
|
115
|
+
end
|
116
|
+
|
117
|
+
alias_method :now, :provisional_state
|
118
|
+
|
112
119
|
def write_cookie
|
113
120
|
return unless changed?
|
121
|
+
clear_provisional_state!
|
114
122
|
state.shrink!
|
115
123
|
state.prune! max_bytesize: TurboReflex::StateManager.cookie_max_bytesize
|
116
124
|
cookies.signed["turbo_reflex.state"] = {value: state.ordinal_payload, path: "/", expires: 1.day.from_now}
|
@@ -137,4 +145,9 @@ class TurboReflex::StateManager
|
|
137
145
|
def cookie
|
138
146
|
cookies.signed["turbo_reflex.state"]
|
139
147
|
end
|
148
|
+
|
149
|
+
def clear_provisional_state!
|
150
|
+
provisional_state.keys.each { |key| state.write key, nil }
|
151
|
+
@provisional_state = nil
|
152
|
+
end
|
140
153
|
end
|
data/lib/turbo_reflex/version.rb
CHANGED
data/package.json
CHANGED
data/tags
CHANGED
@@ -204570,6 +204570,7 @@ ProviderViewContext node_modules/@angular/compiler/fesm5/compiler.js /^var Provi
|
|
204570
204570
|
ProviderViewContext node_modules/@angular/compiler/src/provider_analyzer.js /^ function ProviderViewContext(reflector, component) {$/;" c class:anonymousFunctionaf1fb6270200.ProviderViewContext
|
204571
204571
|
ProviderViewContext node_modules/@angular/compiler/src/provider_analyzer.js /^ var ProviderViewContext = \/** @class *\/ (function () {$/;" c function:anonymousFunctionaf1fb6270200
|
204572
204572
|
ProvidersFeature node_modules/@angular/compiler/src/render3/r3_identifiers.d.ts /^ static ProvidersFeature: o.ExternalReference;$/;" p class:Identifiers
|
204573
|
+
ProvisionalState lib/turbo_reflex/provisional_state.rb /^class TurboReflex::ProvisionalState$/;" c module:TurboReflex
|
204573
204574
|
Proxy node_modules/globals/globals.json /^ "Proxy": false,$/;" b object:builtin
|
204574
204575
|
Proxy node_modules/globals/globals.json /^ "Proxy": false,$/;" b object:es2015
|
204575
204576
|
Proxy node_modules/globals/globals.json /^ "Proxy": false,$/;" b object:es2017
|
@@ -216619,7 +216620,7 @@ VDash node_modules/parse-srcset/tests/he.js /^ var decodeMap = {'Aacute':'\\xC1'
|
|
216619
216620
|
VDash node_modules/simple-html-tokenizer/dist/es6/index.js /^ Aacute: "Á", aacute: "á", Abreve: "Ă", abreve: "ă", ac: "∾", acd: "∿", acE: "∾̳",/;" p variable:namedCharRefs
|
216620
216621
|
VDash node_modules/simple-html-tokenizer/dist/simple-html-tokenizer.js /^ Aacute: "Á", aacute: "á", Abreve: "Ă", abreve: "ă", ac: "∾", acd: "∿", acE: "∾/;" p variable:anonymousFunction3825d8d70300.namedCharRefs
|
216621
216622
|
VDash node_modules/simple-html-tokenizer/dist/types/generated/html5-named-char-refs.d.ts /^ VDash: string;$/;" C
|
216622
|
-
VERSION lib/turbo_reflex/version.rb /^ VERSION = "0.0.
|
216623
|
+
VERSION lib/turbo_reflex/version.rb /^ VERSION = "0.0.19"$/;" C module:TurboReflex
|
216623
216624
|
VERSION node_modules/@angular/compiler/esm2015/src/output/source_map.js /^const VERSION = 3;$/;" C
|
216624
216625
|
VERSION node_modules/@angular/compiler/esm2015/src/version.js /^export const VERSION = new Version('8.2.14');$/;" C
|
216625
216626
|
VERSION node_modules/@angular/compiler/esm5/src/output/source_map.js /^var VERSION = 3;$/;" v
|
@@ -221140,7 +221141,9 @@ Zu node_modules/prettier-standard/src/vendor/node_modules/lodash/lodash.min.js /
|
|
221140
221141
|
[[Writable]] node_modules/prettier-standard/src/vendor/node_modules/es-abstract/test/tests.js /^ '[[Writable]]': !!data['[[Writable]]']$/;" p variable:anonymousObjectc14549e4bf05
|
221141
221142
|
[[Writable]] node_modules/prettier-standard/src/vendor/node_modules/es-abstract/test/tests.js /^ '[[Writable]]': false$/;" p variable:anonymousObjectc14549e4be05
|
221142
221143
|
[[Writable]] node_modules/prettier-standard/src/vendor/node_modules/es-abstract/test/tests.js /^ ES.ArraySetLength(a, { '[[Writable]]': false });$/;" p variable:anonymousObjectc14549e423b05
|
221144
|
+
[] lib/turbo_reflex/provisional_state.rb /^ def [](*keys, default: nil)$/;" f class:ProvisionalState
|
221143
221145
|
[] lib/turbo_reflex/state_manager.rb /^ def [](*keys, default: nil)$/;" f class:StateManager
|
221146
|
+
[]= lib/turbo_reflex/provisional_state.rb /^ def []=(*keys, value)$/;" f class:ProvisionalState
|
221144
221147
|
[]= lib/turbo_reflex/state_manager.rb /^ def []=(*keys, value)$/;" f class:StateManager
|
221145
221148
|
[_contentType] node_modules/@iarna/toml/lib/toml-parser.js /^ [_contentType]: {value: type}$/;" p variable:anonymousObject9ed27cbe0505
|
221146
221149
|
[_declared] node_modules/@iarna/toml/lib/toml-parser.js /^ [_declared]: {value: false, writable: true}$/;" p variable:anonymousObject9ed27cbe0405
|
@@ -292883,6 +292886,7 @@ clearTimeout node_modules/prettier-standard/src/vendor/node_modules/globals/glob
|
|
292883
292886
|
clearTimeout node_modules/prettier-standard/src/vendor/node_modules/globals/globals.json /^ "clearTimeout": false,$/;" b object:shared-node-browser
|
292884
292887
|
clearTimeout node_modules/prettier-standard/src/vendor/node_modules/globals/globals.json /^ "clearTimeout": false,$/;" b object:worker
|
292885
292888
|
clearValue node_modules/prettier-standard/src/vendor/node_modules/@babel/traverse/lib/scope/binding.js /^ clearValue() {$/;" m class:Binding
|
292889
|
+
clear_provisional_state! lib/turbo_reflex/state_manager.rb /^ def clear_provisional_state!$/;" f class:StateManager
|
292886
292890
|
clear_write_only node_modules/uglify-js/lib/compress.js /^ function clear_write_only(assign) {$/;" f function:collapse
|
292887
292891
|
clear_write_only node_modules/uglify-js/lib/compress.js /^ function clear_write_only(node) {$/;" f function:anonymousFunction8b3d0ad81e500.trim_destructured
|
292888
292892
|
cleartext node_modules/@types/node/tls.d.ts /^ cleartext: TLSSocket;$/;" p interface:SecurePair
|
@@ -352226,6 +352230,7 @@ initialWindowSize node_modules/@types/node/http2.d.ts /^ initialWindowSiz
|
|
352226
352230
|
initialWindowSize node_modules/@types/node/ts4.8/http2.d.ts /^ initialWindowSize?: number | undefined;$/;" p interface:Settings
|
352227
352231
|
initialize lib/turbo_reflex/base.rb /^ def initialize(runner)$/;" f class:Base
|
352228
352232
|
initialize lib/turbo_reflex/controller_pack.rb /^ def initialize(controller)$/;" f class:ControllerPack
|
352233
|
+
initialize lib/turbo_reflex/provisional_state.rb /^ def initialize(state_manager)$/;" f class:ProvisionalState
|
352229
352234
|
initialize lib/turbo_reflex/runner.rb /^ def initialize(controller)$/;" f class:Runner
|
352230
352235
|
initialize lib/turbo_reflex/sanitizer.rb /^ def initialize$/;" f class:Sanitizer
|
352231
352236
|
initialize lib/turbo_reflex/state.rb /^ def initialize(ordinal_payload = nil)$/;" f class:State
|
@@ -363562,12 +363567,13 @@ keyValMap node_modules/graphql/jsutils/keyValMap.js /^function keyValMap(list, k
|
|
363562
363567
|
keyValMap node_modules/graphql/jsutils/keyValMap.mjs /^export default function keyValMap(list, keyFn, valFn) {$/;" f
|
363563
363568
|
key_access node_modules/sprintf-js/dist/sprintf.min.js /^!function(a){function b(){var a=arguments[0],c=b.cache;return c[a]&&c.hasOwnProperty(a)||(c[a]=b/;" p variable:anonymousFunctiona0a600570100.e
|
363564
363569
|
key_access node_modules/sprintf-js/src/sprintf.js /^ key_access: \/^\\.([a-z_][a-z_\\d]*)\/i,$/;" p variable:anonymousFunction4f5f53590100.re
|
363565
|
-
key_for lib/turbo_reflex/state.rb /^
|
363570
|
+
key_for lib/turbo_reflex/state.rb /^ def key_for(*keys)$/;" S class:State
|
363566
363571
|
keyboard node_modules/prettier-standard/src/vendor/node_modules/jsx-ast-utils/lib/eventHandlers.js /^ keyboard: ['onKeyDown', 'onKeyPress', 'onKeyUp'],$/;" p variable:eventHandlersByType
|
363567
363572
|
keyboard node_modules/prettier-standard/src/vendor/node_modules/jsx-ast-utils/src/eventHandlers.js /^ keyboard: [$/;" p variable:eventHandlersByType
|
363568
363573
|
keygen node_modules/prettier-standard/src/vendor/node_modules/eslint-plugin-react/lib/rules/void-dom-elements-no-children.js /^ keygen: true,$/;" p variable:VOID_DOM_ELEMENTS
|
363569
363574
|
keyofStringsOnly node_modules/ansi-escapes/node_modules/type-fest/source/tsconfig-json.d.ts /^ keyofStringsOnly?: boolean;$/;" p interface:TsConfigJson.CompilerOptions
|
363570
363575
|
keyofStringsOnly node_modules/type-fest/source/tsconfig-json.d.ts /^ keyofStringsOnly?: boolean;$/;" p interface:TsConfigJson.CompilerOptions
|
363576
|
+
keys lib/turbo_reflex/provisional_state.rb /^ attr_reader :keys$/;" A class:ProvisionalState
|
363571
363577
|
keys node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js /^ }), exports.keys = function (val) {$/;" f function:exports
|
363572
363578
|
keys node_modules/@babel/runtime/helpers/regeneratorRuntime.js /^ }), exports.keys = function (val) {$/;" f function:exports
|
363573
363579
|
keys node_modules/@glimmer/syntax/dist/types/lib/traversal/visitor.d.ts /^ keys?: KeysVisitor<N>;$/;" p interface:FullNodeTraversal
|
@@ -395564,6 +395570,7 @@ notnivc node_modules/parse-srcset/tests/he.js /^ var decodeMap = {'Aacute':'\\xC
|
|
395564
395570
|
notnivc node_modules/simple-html-tokenizer/dist/es6/index.js /^ Aacute: "Á", aacute: "á", Abreve: "Ă", abreve: "ă", ac: "∾", acd: "∿", acE: "∾̳",/;" p variable:namedCharRefs
|
395565
395571
|
notnivc node_modules/simple-html-tokenizer/dist/simple-html-tokenizer.js /^ Aacute: "Á", aacute: "á", Abreve: "Ă", abreve: "ă", ac: "∾", acd: "∿", acE: "∾/;" p variable:anonymousFunction3825d8d70300.namedCharRefs
|
395566
395572
|
notnivc node_modules/simple-html-tokenizer/dist/types/generated/html5-named-char-refs.d.ts /^ notnivc: string;$/;" C
|
395573
|
+
now lib/turbo_reflex/state_manager.rb /^ alias_method :now, :provisional_state$/;" a class:StateManager
|
395567
395574
|
now node_modules/@types/node/perf_hooks.d.ts /^ now(): number;$/;" m interface:Performance
|
395568
395575
|
now node_modules/@types/node/ts4.8/perf_hooks.d.ts /^ now(): number;$/;" m interface:Performance
|
395569
395576
|
now node_modules/lodash/date.js /^ 'now': require('.\/now')$/;" p property:module.exports
|
@@ -415136,6 +415143,7 @@ providers node_modules/angular-html-parser/lib/compiler/src/core.d.ts /^ prov
|
|
415136
415143
|
provides node_modules/globals/globals.json /^ "provides": false,$/;" b object:couch
|
415137
415144
|
provides node_modules/prettier-standard/node_modules/globals/globals.json /^ "provides": false,$/;" b object:couch
|
415138
415145
|
provides node_modules/prettier-standard/src/vendor/node_modules/globals/globals.json /^ "provides": false,$/;" b object:couch
|
415146
|
+
provisional_state lib/turbo_reflex/state_manager.rb /^ def provisional_state$/;" f class:StateManager
|
415139
415147
|
proxy node_modules/https-proxy-agent/package.json /^ "proxy": "1"$/;" s object:devDependencies
|
415140
415148
|
proxy node_modules/mute-stream/mute.js /^function proxy (fn) { return function () {$/;" f
|
415141
415149
|
proxy node_modules/rustywind/lib/download.js /^ const proxy = proxy_from_env.getProxyForUrl(url.parse(_url));$/;" C
|
@@ -437362,6 +437370,7 @@ stateLoad app/javascript/events.js /^ stateLoad: 'turbo-reflex:state-load',$/;"
|
|
437362
437370
|
stateMap node_modules/eslint/lib/rules/no-dupe-class-members.js /^ stateMap[key] = {$/;" v function:module.exports.create.getState
|
437363
437371
|
stateMap node_modules/prettier-standard/node_modules/eslint/lib/rules/no-dupe-class-members.js /^ stateMap[key] = {$/;" v function:module.exports.create.getState
|
437364
437372
|
stateName node_modules/@iarna/toml/lib/parser-debug.js /^ stateName (state) {$/;" m class:DebugParser
|
437373
|
+
state_manager lib/turbo_reflex/provisional_state.rb /^ attr_reader :state_manager$/;" A class:ProvisionalState
|
437365
437374
|
state_manager lib/turbo_reflex/runner.rb /^ attr_reader :controller, :state_manager$/;" A class:Runner
|
437366
437375
|
state_override_block lib/turbo_reflex/state_manager.rb /^ def state_override_block(controller)$/;" S class:StateManager
|
437367
437376
|
state_override_blocks lib/turbo_reflex/state_manager.rb /^ def state_override_blocks$/;" S class:StateManager
|
@@ -468446,7 +468455,7 @@ version node_modules/yaml/dist/index.js /^ version: '1.2'$/;" p variable:defaul
|
|
468446
468455
|
version node_modules/yaml/dist/test-events.js /^ version: '1.2'$/;" p variable:testEvents.anonymousObjecta2b129440205
|
468447
468456
|
version node_modules/yaml/package.json /^ "version": "1.8.3",$/;" s
|
468448
468457
|
version node_modules/yocto-queue/package.json /^ "version": "0.1.0",$/;" s
|
468449
|
-
version package.json /^ "version": "0.0.
|
468458
|
+
version package.json /^ "version": "0.0.18",$/;" s
|
468450
468459
|
versionIncluded node_modules/prettier-standard/src/vendor/node_modules/resolve/lib/core.js /^function versionIncluded(specifierValue) {$/;" f
|
468451
468460
|
versionIncluded node_modules/resolve/lib/core.js /^function versionIncluded(specifierValue) {$/;" f
|
468452
468461
|
versionInfo node_modules/graphql/version.d.ts /^export const versionInfo: {$/;" C
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: turbo_reflex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.19
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nate Hopkins (hopsoft)
|
@@ -398,6 +398,7 @@ files:
|
|
398
398
|
- lib/turbo_reflex/controller_pack.rb
|
399
399
|
- lib/turbo_reflex/engine.rb
|
400
400
|
- lib/turbo_reflex/errors.rb
|
401
|
+
- lib/turbo_reflex/provisional_state.rb
|
401
402
|
- lib/turbo_reflex/runner.rb
|
402
403
|
- lib/turbo_reflex/sanitizer.rb
|
403
404
|
- lib/turbo_reflex/state.rb
|