Commit Graph

93 Commits

Author SHA1 Message Date
Tony Garnock-Jones 31ee4cb2cd Broadcast message delivery in Syndicate/js 2016-06-27 14:59:53 -04:00
Tony Garnock-Jones dd28b667e8 Special-case "." selector in uiEvents. 2016-06-05 15:53:28 -04:00
Tony Garnock-Jones 736c93ea94 Fix typo 2016-06-05 13:14:54 -04:00
Tony Garnock-Jones 4aabe422fe Alter prettyTrie to allow customised rendering of success-values 2016-05-19 13:13:28 -04:00
Tony Garnock-Jones e806e91baa Name DemandMatcher and UI actors 2016-05-19 13:13:07 -04:00
Tony Garnock-Jones fba4aaa6b4 Support debug names for actors (any JSON term) 2016-05-18 16:51:51 -04:00
Tony Garnock-Jones 6160012576 Maintain separation between terminate and handleEvent phases; fixes bug. 2016-05-17 20:50:11 -04:00
Tony Garnock-Jones 9312a28226 Only fire asserted/retracted when first/last interest (dis)/appears; same intent as yesterday's commit b1f7816 2016-05-17 20:04:37 -04:00
Tony Garnock-Jones 8256b56607 Generalize matchValue to permit wildcard messages (not yet used) 2016-05-17 18:16:20 -04:00
Tony Garnock-Jones 1f33039e28 Make matchValue's failureResult non-optional 2016-05-17 17:44:14 -04:00
Tony Garnock-Jones 1aead77a72 Do facet terminate() phase before handleEvent() phase 2016-05-15 16:16:36 -04:00
Tony Garnock-Jones 61ca89ce04 Post-insertion configureNode() 2016-05-15 14:58:28 -04:00
Tony Garnock-Jones 152a76af5e uiProperty 2016-05-15 14:58:13 -04:00
Tony Garnock-Jones b92c439f07 Introduce selectorMatch and eventUpdater 2016-05-15 14:57:56 -04:00
Tony Garnock-Jones 6a204a9085 Process many internal cycles per wakeup; avoid reentrancy 2016-05-15 14:56:19 -04:00
Tony Garnock-Jones 51d9d4b64e Track Actors' knowledge to properly initialize new facets 2016-05-15 14:55:48 -04:00
Tony Garnock-Jones 1f8b3eeb3f Attribute and property update/remove protocol 2016-05-15 06:14:31 -04:00
Tony Garnock-Jones 097641ffff Name Structs for compatibility with Racket 2016-05-15 06:13:31 -04:00
Tony Garnock-Jones 0653bdae3c key.instantiate needs an Array, not an Immutable.List 2016-05-15 06:12:37 -04:00
Tony Garnock-Jones a55ed180db Properly handle the first (interesting) patch after a broken connection. 2016-05-15 06:12:09 -04:00
Tony Garnock-Jones e55e19d5e4 Add "on event ID BLOCK" support 2016-05-14 19:06:00 -04:00
Tony Garnock-Jones 0561a02e78 onTaskExit, matching the Racket 2016-05-14 17:12:41 -04:00
Tony Garnock-Jones c7d91ac37f Incorrect loop logic in updateEventListeners meant that nodes right at the end of the anchorNode were skipped. 2016-05-14 10:34:22 -04:00
Tony Garnock-Jones bf532edd28 UIAttribute doesn't have fragmentId. 2016-05-14 02:26:24 -04:00
Tony Garnock-Jones 35f0b75389 UIFragment orderBy, for features and speed 2016-05-14 02:21:43 -04:00
Tony Garnock-Jones 372652c49d Syndicate.UI.uiAttribute 2016-05-13 20:17:16 -04:00
Tony Garnock-Jones f64491c0a7 Better use of console.warn and console.error in dataspace.js 2016-05-13 20:17:16 -04:00
Tony Garnock-Jones 628ba87c54 Rewrite JS DemandMatcher to handle important latency-related corner cases. 2016-05-13 20:14:01 -04:00
Tony Garnock-Jones 68cde5be6c DemandMatcher: overlap not ruled out! Remove it. 2016-05-12 22:18:57 -04:00
Tony Garnock-Jones b51e7f99d9 LocationHashTracker 2016-05-12 20:11:22 -04:00
Tony Garnock-Jones 6d305e6b00 Hoist .refresh out from .handleEvent; makes assertions depend on state that might have been changed in event handlers properly. 2016-05-12 17:37:14 -04:00
Tony Garnock-Jones a433a054b8 Syndicate.UI.windowEvent 2016-05-12 15:56:42 -04:00
Tony Garnock-Jones e0bd8d08c2 Re-register UIFragment event handlers on node replacement 2016-05-12 15:19:37 -04:00
Tony Garnock-Jones 4eb29832df Correct stupid mistake 2016-05-12 14:52:55 -04:00
Tony Garnock-Jones fb89954158 Only try to attach events to things that might emit them 2016-05-12 14:46:39 -04:00
Tony Garnock-Jones 879e2425b9 Make Anchor.prototype.context n-ary 2016-05-11 22:13:35 -04:00
Tony Garnock-Jones 0208ae7a7d A better UI library. Replaces DOM and jQuery support. 2016-05-11 21:03:11 -04:00
Tony Garnock-Jones 6ba9b402ec Only trigger onStateChange with non-empty patch (?) 2016-05-11 10:59:44 -04:00
Tony Garnock-Jones dede7f08a7 Use strings-of-HTML and mustache.js for DOM fragments.
This avoids churn in the dataspace for no-op DOM updates, but at the
cost of losing the identity of multiple pieces of asserted DOM when
they end up being textually identical.

The fix is, generally, to make sure your DOM fragments are different
in some (perhaps invisible when rendered) way. Next commit updates the
IoT demo to avoid duplicate fragments.
2016-05-10 22:38:40 -04:00
Tony Garnock-Jones 43e94b83b4 Timer driver 2016-05-10 17:04:16 -04:00
Tony Garnock-Jones b8e076188c Protect init and done blocks with withCurrentFacet. 2016-05-10 17:02:31 -04:00
Tony Garnock-Jones 1adb8110b6 Support xmlns in dom-driver. 2016-05-10 15:31:47 -04:00
Tony Garnock-Jones 8f1d27c584 Move Codec and Broker into src/. 2016-05-10 00:57:05 -04:00
Tony Garnock-Jones 8546e93e5d Implement Syndicate/js broker-client and chat app.
Support capturing with a pattern in the Syndicate/js DSL: ($foo = bar())

Struct has been cleaned up, and now offers proper Javascript objects
for its prefab-like structures. These can serialize and deserialize
themselves to/from JSON. They behave like prefabs in that two
StructureTypes created with the same label and arity behave
identically wrt Dataspaces and Tries. Sadly, prefab field names had to
go in order to support this.

Facets now track and terminate their children upon termination. This
is experimental; I suspect it is required for nested durings.

DemandMatcher can now support multiple specs, but this is less useful
than you might think since it tracks supply and demand quite naively.
It would have to have (surprise, surprise!) a mux-like structure to do
the job properly!

Added WakeDetector to main.js; adding the broker client will have to
wait until it is turned into a proper module in the src/ directory.
2016-05-10 00:40:53 -04:00
Tony Garnock-Jones abc844c964 Dataspace.setOnStateChange, to correctly call it at least once 2016-05-09 13:18:19 -04:00
Tony Garnock-Jones 1dfaf537f5 Add Struct _get method. 2016-05-08 18:57:35 -04:00
Tony Garnock-Jones 9c5f427366 Split and rename route.js into trie.js, struct.js and special.js 2016-05-08 11:33:39 -04:00
Tony Garnock-Jones 062e4603af Convert Syndicate/js to use prefix-style trie 2016-05-08 11:11:29 -04:00
Tony Garnock-Jones 7fcfa9586b Rename "network" to "dataspace" throughout 2016-04-07 09:42:54 +02:00
Tony Garnock-Jones da978aad39 Allow published DOM fragments to be just plain text. 2016-03-22 12:11:47 -04:00