Commit Graph

47 Commits

Author SHA1 Message Date
Mitar
046de405da Also expose converters. 2015-05-26 14:16:15 -07:00
Mitar
c380bb3e21 Allow access to registered custom types. 2015-05-26 14:16:15 -07:00
Emily Stark
ccfee68145 Merge branch 'master' into devel
Conflicts:
	docs/client/api.html
	docs/client/data.js
	docs/client/names.json
	meteor
	packages/autoupdate/package.js
	packages/base64/.gitignore
	packages/constraint-solver/package.js
	packages/device-orientation/.gitignore
	packages/less/package.js
	packages/meteor-tool/package.js
	packages/meteor/package.js
	packages/package-version-parser/package.js
	packages/webapp/webapp_server.js
	scripts/admin/meteor-release-experimental.json
	tools/commands.js
	tools/help.txt
	tools/package-version-parser.js
	tools/run-all.js
	tools/tests/apps/build-errors/packages/with-colon-plugin/.gitignore
2014-09-15 14:48:57 -07:00
Emily Stark
1307d4b015 Add comment to 'EJSON.newBinary' 2014-09-09 11:08:02 -07:00
Emily Stark
1971765628 Fix 'EJSON.newBinary' -- it's just 'Base64.newBinary' 2014-09-09 10:41:37 -07:00
Emily Stark
8a8df1f89d Factor out 'base64' into its own package and use from 'oauth'.
'oauth' was using 'btoa', but it's not supported in IE8-9. We already
had a base64 implementation in 'ejson', so I factored it out into its
own package used by 'ejson' and 'oauth'.
2014-09-09 10:37:07 -07:00
Sashko Stubailo
2c969270ea Add docs for EJSON interface, attempt to remove data.js from diffs
Only Match.test, check, and UI.dynamic left. I can see the light!
2014-09-05 14:37:28 -07:00
Sashko Stubailo
d057ec4a3a Fix issues identified by the diff 2014-08-27 12:51:59 -07:00
Sashko Stubailo
538468f42b Automate EJSON and HTTP 2014-08-25 21:30:33 -07:00
David Glasser
4fd4383bc0 EJSON custom type conversion functions can't yield
Code ought to be able to parse and stringify EJSON values without having
to worry about concurrency issues.

Related to #2136.
2014-05-21 14:12:58 -07:00
Eric Dobbertin
0a6e398b2e better error for unknown custom EJSON types
Fixes #2017
2014-04-17 16:44:42 -07:00
David Glasser
29cfa27ef3 support regexps in sort key filter
also in EJSON.clone
2014-03-17 02:17:06 -07:00
Marc-Andre Lafortune
de294ddb19 EJSON: Provide default implementation of equals for custom types 2014-02-12 15:26:50 -08:00
Marc-Andre Lafortune
0be15bdf3f EJSON: Provide default implementation of clone for custom types 2014-02-12 15:26:50 -08:00
Marc-Andre Lafortune
f8886744a1 EJSON: Fix asymmetry in equals 2014-02-12 15:26:50 -08:00
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
d387e043ea Rename _FooTest symbols to FooTest. They are already test-only. 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
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
David Glasser
6b48e8bd8a stuff that doesn't have conflicts 2013-05-13 11:51:50 -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
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
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