Starting linq.js ver.3.0.0(currently beta)

Coordinator
Jul 19, 2012 at 11:35 AM
Edited Jul 19, 2012 at 11:41 AM

Thank you for many opinions.

In addition, I'm sorry that an answer was late and that work was late.

There was the dissenting opinion, too, but was changed to lowerCamelCase.
This update will put all of you under a pain.
However, I think that I was able to offer more value at the same time.

Please enjoy new linq.js and give feedback.

//

all methods rename UpperCamelCase to lowerCamelCase

following methods are changed name
Return -> make
CascadeBreadthFirst -> traverseBreadthFirst
CascadeDepthFirst -> traverseDepthFirst
BufferWithCount -> buffer
ToString -> toJoinedString
Do -> doAction
Let -> letBind
MemoizeAll -> memoize
Catch -> catchError
Finally -> finallyAction
ToJSON -> toJSONString

following methods are changed behavior
writeLine : document.write(value + "<br />") -> document.writeln(value), overload changed
zip, concat allow multiple arguments

add utility methods
Enumerable.Utils.createLambda
Enumerable.Utils.createEnumerable
Enumerable.Utils.createEnumerator
Enumerable.Utils.extendTo

add enumerable methods
Enumerable.merge
Enumerable.defer
asEnumerable
choose
isEmpty
distinctUntilChanged
weightedSample
log

performance optimization
where->select and where->where,... and select->select,...
range, rangeDown, rangeTo

add new extension
linq.qunit.js

fix extensions to latest library version
linq.jquery.js
linq.rx.js

removed jQuery plugin version

//

I will work on improvement IntelliSense for Visual Studio 2012 and reference.
If it is over, ship ver.3 stable release.

JSDoc, the Closure Compiler are after it.
In addition, if there is what request and I forget, please teach it.

//

// new feature, extendTo

Enumerable.Utils.extendTo(Array);

[1, 2, 3].where("$%2==0").select("$*$");


// extreme improvement IntelliSense for VS2012
http://act.neue.cc/linq.js_3.0_intellisense.jpg


// QUnit extension

Math.pow(10, 2).is(100); // strictEqual(Math.pow(10, 2), 100)

Enumerable.rangeTo(10, 15, 2).is(10, 12, 14); // deepEqual(Enumerable.rangeTo(10, 15, 2).toArray(), [10, 12, 14])

[1, 5, 10].all("$<12").isTrue(); // collection assertion with linq.js!
Coordinator
Jul 26, 2012 at 3:35 PM

Hi.

today I released v3.0.1-Beta2.
--

fix bug indexOf
writeLine overload back to v2
fixed bug, extendTo(Array) isn't optimized for Array
fixed bug, defer define "enumerator" to global
indexOf, lastIndexOf allow predicate
changed Enumerable.from(object) enumerate only own property
improvement all code snippets
add isExpr to linq.qunit.js

--

thank you for suggestion, BogdanMart and erikkallen.

Sep 11, 2012 at 5:22 AM

Wow!! Now it is an elegant Javascript Library!! I really liked the lowercase change!

JS is JS! C# is C#!!

Coordinator
Sep 16, 2012 at 1:11 PM
Edited Sep 16, 2012 at 1:11 PM

Hi,

today I release v3.0.2-RC.
Next will be stable version.

--

fix orderByDescending to stable sort
remove scan resultSelector overload
rename tojQueryRaw to tojQueryAsArray
flip argument of firstOrDefault,lastOrDefault,singleOrDefault. first is predicate, second is defaultValue.
defaultValue of orDefault changed to null
Enumerable.choice and Enumerable.cycle allow Enumerable
Enumerable.from supports IIterable<T>(WinMD)
argument of alternate allows Enumerable
add AMD support("linqjs")
improved fit to latest RxJS(on GitHub Sep 10, 2012 version)
repositry convert to git

--
thank you for suggestion, smogami, robertob and adimkov.

Coordinator
Oct 9, 2012 at 1:47 PM

Hi,

today I release v3.0.3-Beta4.
This change is mainly add TypeScript support. 

TypeScript support is experimental.
Please give me a feedback. 

and sorry, I returned version from RC to Beta. 

Jan 29, 2013 at 7:34 PM

Hi I have just discovered this library and I think using this with typescript is real power for modern HTML based applications. we plan to use it in production environment, but those bugs u fix from beta version to beta version scares us a little bit. can u confirm using this beta with typescript support is ok? and what are some serious bugs u think might prevent us from using this library in enterprise level application?

Coordinator
Jan 30, 2013 at 7:08 AM

Thank you.

at first, TypeScript support is only definition.
Therefore, there have no critical problem.
# But TypeScript ver.0.8.3 will provide generics(current is 0.8.2).
# Of course linq.js supports generics then.
# It maybe brings a big change.

Core (linq.js) is still beta.
However, a half year passes the considerable bug is removed and has high stability.
The some changes may be given yet, but the big breaking change is not.

My message is all right.
I want you to use linq.js with TypeScript for products.

Mar 8, 2013 at 7:12 AM
Thanks for your AMAZING JOB create this library. I agree to change function names to lowercase. But I'm not gonna using 3.0 in my project cause lot of codes are using UpperCase. So will you consider to make a back compability adapter library like jQuery-Migrate.js? I thinks those are just a little alias-name work.

What do you think?
Coordinator
Jun 19, 2013 at 7:55 PM
Edited Jun 19, 2013 at 7:56 PM
Hi,

today I release v3.0.4-Beta5.

add TypeScript Generic definition and some definition fixes.

sorry for all, I'm so busy, and I lost many changes in an accident on my pc.
I received disappointment and I lose a motivation.
However, Generics of TypeScript led to the revival.
I make ver.3 by all means.
I am sorry, but, please wait a little more.
Jul 10, 2013 at 9:30 PM
Edited Jul 10, 2013 at 9:31 PM
Hi neuecc - I came across an issue using ForEach function today with IE8 browser or lower. This function adds an extra index to the array object & cause the null exception. It worked great on IE9 or above. I am wondering if this is a known issue & if so is there a fixed for this issue or workaround solution?

Thanks!
Aug 26, 2013 at 10:19 PM
Edited Aug 26, 2013 at 10:22 PM
Thanks for your great work. I've found a small typo in the beta 5 reference page in the examples on groupBy and partitionBy:
Enumerable.from([{d:new Date(2000,1,1),i:0},{d:new Date(2000,1,1),i:1}])
.groupBy("$.d","","key,e=>key+':'+e.Select('$.i').toArray()","$.toString()")
Enumerable.from([{d:new Date(2000,1,1),i:0},{d:new Date(2000,1,1),i:1}])
.partitionBy("$.d","","key,e=>key+':'+e.Select('$.i').toArray()","$.toString()")
e.Select should be e.select.
Aug 27, 2013 at 8:35 PM
One of the overloads for the groupBy function is the defined in the type file as:
groupBy<TKey, TElement, TResult, TCompare>(keySelector: (element: T) => TKey, elementSelector: (element: T) => TElement, resultSelector: (key: TKey, element: IEnumerable<TElement>) => TResult, compareSelector: (element: T) => TCompare): IEnumerable<TResult>;
But the compareSelector gets the key as the parameter i.e. it should be defined as compareSelector: (key: TKey) => TCompare
Sep 27, 2013 at 2:38 PM
Sorry to beat a dead horse, but what's the status of these betas and do you have any timeline for a v3 release?
Feb 26 at 5:50 PM
I hope someone decides to fork this project and continues developing it. It's really a shame that @neuecc seems to have abandoned it.