Commit Graph

40 Commits

Author SHA1 Message Date
David Glasser
6528f9eef7 Avoid calling _.each on numbers (Underscore 1.5.2 doesn't like it).
Simplify NaN detection.
2013-10-03 15:52:20 -07:00
Naomi Seyfer
c3fb7741f6 Infinity and NaN in EJSON 2013-10-02 12:01:24 -07:00
Naomi Seyfer
0d8bfbae8a fix tests, rename option, more style fixes 2013-10-02 12:01:21 -07:00
Andrew Wilcox
da6bc1d835 EJSON.stringify objects in sorted key order.
Thus if two objects are EJSON.equals, their serialization strings will
be equal also.

(This should mean that reactive-dict could now allow objects to be
used as the key for `equal`).

Note this change does not affect livedata because livedata uses the
EJSON adjust functions to convert between JSON and EJSON (not
stringify).

Adds a couple options to EJSON.stringify:

* keyOrderSensitive: in parallel with EJSON.equals, outputs objects in
  native key order (the old behavior).

* indent: pretty-prints the output.

The serialization code is based json2, which makes it easy to preserve
the indentation functionality provided by JSON.stringify.  Only enough
code is included to serialize arrays and objects; serializing
primitive values such as strings is delegated to the native
JSON.stringify to reduce code and in case the native implementation is
more efficient.

Include underscore as an explicit dependency in package.js.

Document options to EJSON.equals and EJSON.stringify.
2013-10-02 11:43:44 -07:00
Andrew Wilcox
4714f892f5 Check that the argument to EJSON.parse is a string.
Some Android browser versions of JSON.parse can crash when passed null
(https://code.google.com/p/android/issues/detail?id=11973), so it's
better not to pass on a non-string argument to JSON.parse.

Thanks to @raix for raising the issue in #1401.
2013-09-12 12:13:15 -07:00
David Glasser
4b3cb9d305 Rename api.exportSymbol -> api.export. 2013-07-25 18:54:43 -07:00
David Glasser
d387e043ea Rename _FooTest symbols to FooTest. They are already test-only. 2013-07-25 18:54:42 -07:00
David Glasser
3a7eac6dca Declare _FooTest symbols as testOnly; they are only visible to tests.
They are visible to *all* tests, not just the package's own tests.
2013-07-25 18:54:42 -07:00
David Glasser
9f38258b54 Drop all @export lines. Add api.exportSymbol instead. 2013-07-25 18:54:40 -07:00
Geoff Schmidt
3d1c09794f Comprehensive namespace cleanup. 2013-07-25 18:54:40 -07:00
David Glasser
8a7b1ddf35 Merge branch 'devel' into linker.
Conflicts:
	meteor
	packages/absolute-url/.gitignore
	packages/accounts-base/package.js
	packages/accounts-oauth/package.js
	packages/audit-argument-checks/.gitignore
	packages/coffeescript/.gitignore
	packages/coffeescript/package.js
	packages/localstorage-polyfill/.gitignore
	packages/oauth1/package.js
	packages/oauth2/package.js
	packages/random/random.js
	scripts/generate-dev-bundle.sh
	tools/packages.js
	tools/run.js
	tools/server/server.js
2013-05-28 15:10:48 -07:00
Andrew Wilcox
d53799d7a5 return true/false from EJSON.isBinary 2013-05-22 21:42:51 -07:00
David Glasser
afe5867f68 Oops, you can't use slice on arguments. This time tests actually pass. 2013-05-14 12:32:55 -07:00
David Glasser
1fc2dabf6d Oops, didn't mean to revert test! 2013-05-14 11:44:22 -07:00
David Glasser
4c2e1ef1b6 Fix Opera test failures by reverting unnecessary part of 583508e.
Opera seems to have some consistent but difficult to diagnose bugs related to
using _.map in this context. (As in, minifying the test was difficult because
there seemed to be some odd action at a distance, but a given test failure was
fully reproducible.) This appears to work while still preserving the feature
added in 583508e.

Also fix a missing var (which does not appear to be the original problem).
2013-05-14 11:32:53 -07:00
Geoff Schmidt
ed18c6ffb5 Comprehensive build-time error reporting system. In particular: if an error occurs, the build will try to continue to identify any other potential problems so that they can be flagged too. Syntax errors are captured and dealt with programmatically, rather than just being echoed to stderr by node. Stack traces are parsed to pull out file and line information, and a distinction is made between the 'user' and 'internal' portions of the stack. All of this is at build time only -- it has not been extended to (run-time) server or browser yet. Also, no source maps yet, though line numbers are computed correctly for units within the linker. 2013-05-13 11:52:43 -07:00
David Glasser
6b48e8bd8a stuff that doesn't have conflicts 2013-05-13 11:51:50 -07:00
David Glasser
8dbee56e77 Add .gitignore to package directories to match linker branch.
This way switching between linker and devel doesn't leave you with lots of junk
in git status.
2013-05-13 10:57:37 -07:00
David Glasser
3952be8183 Fix EJSON base64 decoding when 'A' is 3rd or 4th char in a block.
Fixes #1001.
2013-05-06 15:38:20 -07:00
David Glasser
583508e10d Support EJSON.clone(arguments).
This enables (eg) Meteor.apply('foo', arguments). Fixes #946.
2013-04-15 17:49:12 -07:00
David Glasser
5a5204e3a4 Remove closures around package files. (hint: git blame -w)
The bundler now adds closures around client files and the server adds closures
around server files.
2013-03-19 15:13:53 -07:00
Naomi Seyfer
0da938955c Fix EJSON.equals and EJSON.clone to use better loops; be more correct 2013-03-06 20:04:45 -08:00
Naomi Seyfer
e5a0734fa4 Fix for EJSON equality and falsiness 2013-03-01 08:42:57 -08:00
Naomi Seyfer
bf81b0a1de test for EJSON equality of falsy things 2013-03-01 08:42:57 -08:00
Naomi Seyfer
88f2969fa2 Fix for returning a scalar EJSON type from a method #731
Tests for returning a scalar EJSON type from a method
2013-02-28 11:02:25 -08:00
Naomi Seyfer
cc5ef1b90d Removed all restrictions on EJSON types in MongoDB 2013-02-22 16:14:41 -08:00
Naomi Seyfer
a0c3ff709a Fixed {$type: 5} selectors on old browsers 2013-02-22 14:28:05 -08:00
Naomi Seyfer
c911cd9ef4 Greenspan comments on ddp-pre1 diff 2013-02-20 14:52:28 -08:00
Naomi Seyfer
f11271dd4b IE8 Compatibility fixes 2013-02-14 17:05:51 -08:00
David Glasser
77ac416374 Some ddp-pre1 cleanup
- Delete dead EJSON._each2.

- Make OrderedDict.remove throw if the key isn't in it.

- Make changed callbacks in two places throw if the document isn't in the
  dictionary. (Other callbacks implicitly throw via OrderedDict.)

- Remove OrderedDict.pop (which didn't return the key) and push.
2013-02-12 17:18:09 -08:00
Naomi Seyfer
18d4a6ea4b Remove undefined from EJSON 2013-02-05 16:57:26 -08:00
David Glasser
4c2bc76c7e EJSON: Remove serializeForEval method, no longer needed with new selector
compiler.
2013-02-04 17:47:06 -08:00
Naomi Seyfer
a866689c6a Escaping in EJSON only goes one level 2013-02-04 16:12:49 -08:00
David Glasser
322e65bbe6 Revert "Binary support in BSON (dev bundle wise) and in Mongo"
This reverts commit c10c7f7c91.

Only revert the non-test portions, leaving failing tests. Will implement
binary-in-Mongo in a different way on this branch before merging back to
ddp-pre1. (Assuming that works, will also delete the 0.2.15 dev bundles from s3
and production.)
2013-01-29 22:43:53 -08:00
Naomi Seyfer
19849adbe4 Function for iteration over pairs of adjacent items 2013-01-28 15:26:04 -08:00
Naomi Seyfer
c10c7f7c91 Binary support in BSON (dev bundle wise) and in Mongo
Unfortunately, the Node Mongo driver wants to use its own proprietary
Binary type for binary data.  We want to use Uint8Array, instead, so
we're going to be using a patched version of the BSON library that
allows this.

It allows us to install a handler for USER_DEFINED binary types, which
in our case we set up to recognize, accept, and provide Uint8Array
2013-01-24 14:47:37 -08:00
David Glasser
86e4f9b00f EJSON: fix error in recursive EJSON.equals with keyOrderSensitive. 2013-01-17 15:56:14 -05:00
Naomi Seyfer
24c4b0615d Mostly switching over to using EJSON.equals 2013-01-17 15:56:12 -05:00
Naomi Seyfer
be8c94c899 Switch from LocalCollection._deepcopy to EJSON.clone 2013-01-17 15:55:41 -05:00
Naomi Seyfer
9fe782ab15 Move EJSON stuff to new ejson package. 2013-01-17 15:51:58 -05:00