Commit Graph

59 Commits

Author SHA1 Message Date
Gabriel Grubba
1f134d7da8 docs: Add ejson 2024-01-17 15:58:41 -03:00
Jan Küster
d63a93875f fix(ejson): fix equals check with Arrays 2022-01-21 17:12:41 +01:00
Lam Hieu
ef1b40b284 Make util to make the friendly error and wrap it for EJSON.stringify function 2019-12-13 09:02:02 +07:00
Lam Hieu
54911d5dbb Move helpers fn to utils file 2019-12-13 09:02:02 +07:00
Lam Hieu
48776afe59 Add keysOf and lengthOf based native function 2019-12-13 09:02:02 +07:00
Lam Hieu
9ca45c9dc3 Add and use isObject helper 2019-12-13 09:02:02 +07:00
Lam Hieu
a0a9e5f3ae Use map instead of object for list custom type and add isFunction helper 2019-12-13 09:02:02 +07:00
Hugh Willson
5b39d4b2da Remove merged in underscore usage and update to ES5/ES6. 2017-08-02 15:33:16 -04:00
Hugh Willson
c6bddb331a Remove underscore dependency. 2017-08-02 15:33:15 -04:00
Hugh Willson
82a6feeaf4 Adjust EJSON API to handle objects with properties named "length" 2017-08-02 15:33:14 -04:00
seke
7232b39fa4 Cut of flags to avoid abuse of CPU-intensive regexes 2017-07-27 10:25:42 +02:00
Seba Kerckhof
b52c6587d7 Handle regular expressions in EJSON (#8821)
* Handle regular expressions in EJSON

* Adjust "checkout" self-test wait time to fix failing self-test's.

* Adjusting self-test "checkout" timeout further.

* Self-test exit timeout adjustments for the CLI "argument parsing" tests.
2017-07-21 13:45:38 -04:00
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