-
Notifications
You must be signed in to change notification settings - Fork 13
/
CHANGES
413 lines (309 loc) · 14.5 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
ComponentJS -- Component System for JavaScript <http://componentjs.com>
Copyright (c) 2009-2014 Ralf S. Engelschall <http://engelschall.com>
Changes
=======
This is a list of MAJOR changes to ComponentJS. For a
more fine-granular commit-based change information,
have a look at the version control history under
https://github.com/rse/componentjs/commits/master
Major changes between ComponentJS 1.2.2 and 1.2.3
-------------------------------------------------
o BUGFIX:
fix viewing of "Model" components in the debugger where
the model items were not correctly displayed.
o IMPROVEMENT:
provide platform independent alternative to Unix Makefile by
leveraging NPM scripts which have node_modules/.bin/ in PATH
Major changes between ComponentJS 1.2.1 and 1.2.2
-------------------------------------------------
o BUGFIX:
Once again fix edge cases of the class/trait system
and the rather complex resolving of "this.base()" in traits.
o BUGFIX:
Switch embedded Thenable.js from minified to original version to
circumvent JSHint trouble during compilation time.
Major changes between ComponentJS 1.2.0 and 1.2.1
-------------------------------------------------
o IMPROVEMENT:
Update build-time dependencies and remove the use of the now
obsolete Grunt task "grunt-extend-config".
o BUGFIX:
Fixed "wait" parameter of testdrive#poll() for the case of a
passed number instead of a function.
o BUGFIX:
The resolving order of Clazz/Trait was fixed.
o BUGFIX:
The traversal of Clazz/Trait on "this.base()" calls was fixed.
Major changes between ComponentJS 1.1.1 and 1.2.0
-------------------------------------------------
o INCOMPATIBILITY:
Renamed the second argument of state() from "callback" to just
"func" to be aligned with all other callback parameters in the
API. This is just an incompatibility if state() is called with
named parameters, not if state() is called with positional
parameters.
o ADDITION:
Added new parameter "boot" (boolean) to method observe() which
allows one to once execute the callback function (and only the
callback function and no other callback functions of other
observers).
o ADDITION:
Added new "testdrive" plugin which provides a use-case based
suite of tests for test-driving an application through bare state
transitions and model manipulations.
o ADDITION:
Added "noevent" parameter to observe() which (similar to
"noevent" on subscribe()) prevents the event to be passed as
first argument to the callback function.
o ADDITION:
Provide internal hooks "ComponentJS:state-enter" and
"ComponentJS:state-leave" to plugins.
o ADDITION:
Method state() now supports the additional optional parameters
"min" and "max" for conveniently refining the transition request.
o BUGFIX:
On .create() enter the first user-defined state (on top of "dead")
instead of the hard-coded "created" state.
o BUGFIX:
Implement the internally published events "ComponentJS:state:<name>:enter"
and "ComponentJS:state:<name>:leave" the way they were documented.
o BUGFIX:
Prevent errors in debugger in case the subscription is not a
string (but perhaps a RegExp)
o BUGFIX:
Fix debugger's "click on component and show infobox" functionality
under Firefox and similar browers (where an Event has no
.offsetX/Y but .layerX/Y and .clientX/Y properties).
o BUGFIX:
fix description of parameter "touch" of method observe().
Major changes between ComponentJS 1.1.0 and 1.1.1
-------------------------------------------------
o BUGFIX:
Fixed .base() method for inheritance chaining situations
with more than one parent class.
o BUGFIX:
Fixed the build-time substitution for the ComponentJS
version information in the API.
Major changes between ComponentJS 1.0.1 and 1.1.0
-------------------------------------------------
o IMPROVEMENT:
Allow empty "protos" fields in clazz() and trait() methods.
o BUGFIX:
Support "@: type" validation notation also in subsetting cases.
o IMPROVEMENT:
Replaced the HTML API documentation generator component-api.pl
(Perl script) with component-api.js (JavaScript script) to have
even less external dependencies.
o IMPROVEMENT:
Major Build Environment Refactoring: switched from plain Unix
make(1) to Grunt.
o ADDITION:
Added (API exposed) utility select() method for selecting values
from arbitrary structured object graphs.
o ADDITION:
Added support for validating a value against a subset of the type
specification.
o ADDITION:
Added support for manipulating and observing arbitrary structured
model values.
o ADDITION:
Added "def" (default value) option to method property()
to simplify application code.
o INCOMPATIBILITY:
Removed API methods "subscription" and "registration" as they
are effectively useless for application code and only useful
for ComponentJS internals. They should never have been used
in any application, as it is not necessary to remember a
subscription/registration id and to explicitly check whether it is
still active.
o INCOMPATIBILITY:
Renamed the observe() option "operation" to just "op" as the
name "operation" is really too long and we want to also use
the more concise "op" for value(), etc.
o INCOMPATIBILITY:
Rename attribute() option "validate" to "valid" to be more in sync
with similar options of other methods.
o IMPROVEMENT:
For params() use the new validate() functionality (which now also
supports RegExp and functions) only.
o INCOMPATIBILITY:
params() now validates already the default value of a parameter
against its validation specification.
o INCOMPATIBILITY:
renamed the name of the only argument of model() from "model" to
"spec" to be in sync with the documentation. This is harmless, because
one usually always use the argument in positional variant only.
o IMPROVEMENT:
Refactored models created by model() into a read-only specification
and separate data. This allows forthcoming plugins to directly
access the model data more easily.
o INCOMPATIBILITY:
Remove an undocumented feature: the model() method no longer
returns the (old) model and no longer can be called without any
arguments (to just retrieve the model).
Major changes between ComponentJS 1.0.1 and 1.0.2
-------------------------------------------------
o BUGFIX:
Cherry-picked and back-ported all major bugfixes from the
ComponentJS development branch.
Major changes between ComponentJS 1.0.0 and 1.0.1
-------------------------------------------------
o ADDITION:
add an "enabled" state on top of visible for those
situations where we want to show a UI but still keep it disabled.
o BUGFIX:
correctly tear down the component tree in shutdown()
as the root component cannot be directly destroyed.
o BUGFIX:
fix syntax of TypeScript type definition file "component.d.ts".
o IMPROVEMENT:
document "clazz" behavior better in the API documentation.
Major changes between ComponentJS 0.9.9 and 1.0.0
-------------------------------------------------
o INCOMPATIBILITY:
Removed the "async" option on register() as it never worked
and was a wrong design idea anyway.
o INCOMPATIBILITY:
On publishing events the "spreading" option no longer defaults to
"true" in order to improve performance in standard cases.
o IMPROVEMENT:
Improve build process: provide a "stage0" target which does not
need any special tools beside "perl" and "shtool" in order to allow
developers under Windows to participate more easily.
o ADDITION:
Added "targeting" (boolean) option to plug() / unplug() and this
way indirectly fix the semantic of link() in case a target should
link onto itself.
o ADDITION:
Added "scope" (string) option to property() to allow a more
convenient way to scope a property instead of the special
"name@scope" syntax of the "name" option.
o INCOMPATIBILITY:
In the debugger, prepend log messages instead of appending them
as this is a lot more convenient during debugging.
o IMPROVEMENT:
Added necessary hooks for companion project "componentjs-tracing",
to allow easier instrumentation of ComponentJS based applications.
o IMPROVEMENT:
Improved and updated TypeScript definition for newer TypeScript
0.9 world order (where "bool" is not "boolean", etc).
o BUGFIX:
Skip not-enumerable fields and the special fields "constructor"
and "prototype" on object/hash validation.
o BUGFIX:
Fixed internal cloning of Array objects (which is
used for the "dynamics" part of cs.clazz!).
o IMPROVEMENT:
Improve the internal JSON encoder to more correctly detect cycles.
o INCOMPATIBILITY:
Allow also "null" as an identifier to validate against the special
Object null.
o INCOMPATIBILITY:
Allow application to still enforce standard sockets by skipping
the jQuery/ExtJS inference if no 'type' parameter is given.
Major changes between ComponentJS 0.9.8 and 0.9.9
-------------------------------------------------
o IMPROVEMENT:
Switch code-base to latest JSHint.
o IMPROVEMENT:
Improve API documentation.
o IMPROVEMENT:
Reduced the external build-time dependencies.
o BUGFIX:
Bugfix cs.params() function and add additional hook
for plugins to cs.params().
o ADDITION:
Provide "this.result" (the current aggregated result)
and "this.hooks" (the total number of registered hooks)
to the internal hooking mechanism to allow plugins to
leverage from more information.
o IMPROVEMENT:
Reduce the number of redundant internal annotation calls
in the central clazz/trait mechanism.
o BUGFIX:
Cleanup all internal "cs.params()" usages by using either
"req" or "def" but never both in parallel (as it makes no sense).
o ADDITION:
Allow all "spool" parameters to use the syntax
"<comp-path>:<spool-name>" in addition to the standard
"<spool-name>" in order to use the spool of component, addressed
via the relative path "<comp-path>".
o BUGFIX:
Sockets created with socket()/link() can be not destroyed
with unsocket()/unlink()
Major changes between ComponentJS 0.9.7 and 0.9.8
-------------------------------------------------
o IMPROVEMENT:
Improved Debugger plugin: the components in the component tree
view are now clickable. Once clicked details about the component
are displayed in the new infobox view which overlays the console
view. Additionally, the component tree view now provides a zoom
and scroll functionality in order to allow you to display large
component trees in a reasonable way, too.
o IMPROVEMENT:
Modularized the debugger plugin sources.
o INCOMPATIBILITY:
The localStorage persistence functionality of models is now
in a dedicated plugin (component.plugin.localstorage.js) because
the localStorage functionality is not available everywhere
(e.g. not in NodeJS head-less testing situations, etc).
Major changes between ComponentJS 0.9.6 and 0.9.7
-------------------------------------------------
o BUGIX:
Fixed internal "clazz" parameter validation.
Major changes between ComponentJS 0.9.5 and 0.9.6
-------------------------------------------------
o IMPROVEMENT:
Improved Debugger plugin: the status bar is now grabbable
to allow you to more precisely control the size of the component
tree visual display. The background of the visual display, header
and status bar are now gradient based. Active state transition
guards are now indicated by partially-overlayed red light bulps
(rendered only if guards are not at level 0).
o INCOMPATIBILITY:
<component>.subscribe({ origin: true, ... }) functionality was
removed as the Event object on callbacks has the origin via its
<ev>.target() method.
o BUGFIX:
fixed "exclusive" subcription handling.
Major changes between ComponentJS 0.9.4 and 0.9.5
-------------------------------------------------
o INCOMPATIBILITY:
Replaced the object validation mechanism of cs.params() and
cs.model() with a full-blown DSL-based implementation. The most
notably changes are that a "null" value now matches the type
"object". Upgrade your source: "array(foo)" is now "[foo*]"
Major changes between ComponentJS 0.9.3 and 0.9.4
-------------------------------------------------
o INCOMPATIBILITY:
The 4th argument (DOCUMENT) for ComponentJS.plugin() is now gone.
Plugins should not need it anyway.
o ADDITION:
Additional internal hooks are provided for plugins.
o INCOMPATIBILITY:
Model default values are initially validated, too.
o INCOMPATIBILITY:
The <script data-symbol="<name>" [...]> functionality
was removed as it conflicts with the plugin mechanism.
Major changes between ComponentJS 0.9.2 and 0.9.3
-------------------------------------------------
o INCOMPATIBILITY:
Refactored out the debugger into its own plugin.
Major changes between ComponentJS 0.9.1 and 0.9.2
-------------------------------------------------
o BUGFIX:
Added back support for Internet Explorer 8 where a field
cannot be named "constructor". The cs.clazz/cs.trait field
is now named "cons".
o ADDITION:
Added an additional "configured" state which can be used
to configure subscribe/register/observe/latch operations
while "prepare" is still intended for loading data.
Major changes between ComponentJS 0.9.0 and 0.9.1
-------------------------------------------------
o ADDITION:
Implemented an internal hooking and plugin mechanism and
provided two convenient plugins for jQuery and Ext socket support.
Major changes between ComponentJS 0.0.0 and 0.9.0
-------------------------------------------------
o Initial functionality